diff --git a/.gitattributes b/.gitattributes index a6344aac8c09253b3b630fb776ae94478aa0275b..4c84878d4c0bfee2dc4961ed08709584e29cc0d8 100644 --- a/.gitattributes +++ b/.gitattributes @@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text *.zip filter=lfs diff=lfs merge=lfs -text *.zst filter=lfs diff=lfs merge=lfs -text *tfevents* filter=lfs diff=lfs merge=lfs -text +laser/laser2.spm filter=lfs diff=lfs merge=lfs -text diff --git a/app.py b/app.py index 1b89a03233722dc33868f867c58a8ab300cc9f18..fed31a6c7c29f31c5f86c6732d21db47967f949d 100644 --- a/app.py +++ b/app.py @@ -16,9 +16,7 @@ import pkg_resources import sys login(token=os.environ.get("LA_NAME")) -laser_token = os.environ.get("ENC") -laser_path = snapshot_download(repo_id="KuangDW/laser", use_auth_token=laser_token) -os.environ["LASER"] = laser_path +os.environ["LASER"] = "laser" def check_and_install(package, required_version): try: @@ -326,7 +324,7 @@ with gr.Blocks(title="Test-Time Machine Translation with Plan2Align") as demo: gr.Examples( examples=[ - ["台灣夜市文化豐富多彩...", "Chinese", "English", 2, 0.7, 1, ["Original", "Plan2Align"]], + ["台灣夜市文化豐富多彩,從士林夜市到饒河街夜市,提供各種美食、遊戲和購物體驗,吸引了無數遊客。", "Chinese", "English", 2, 0.7, 1, ["Original", "Plan2Align"]], ["台北101曾經是世界最高的建築物,它不僅是台灣的地標,也象徵著經濟成就和創新精神。", "Chinese", "Russian", 2, 0.7, 1, ["Original", "Plan2Align"]], ["阿里山日出和森林鐵路是台灣最著名的自然景觀之一,每年吸引數十萬遊客前來欣賞雲海和壯麗的日出。", "Chinese", "German", 2, 0.7, 1, ["Original", "Plan2Align"]], ["珍珠奶茶,這款源自台灣的獨特飲品,不僅在台灣本地深受喜愛,更以其獨特的風味和口感,在全球掀起了一股熱潮,成為了一種跨越文化、風靡全球的時尚飲品。", "Chinese", "Japanese", 3, 0.7, 3, ["Original", "Plan2Align"]], diff --git a/laser/.github/workflows/lint_and_tests.yml b/laser/.github/workflows/lint_and_tests.yml new file mode 100644 index 0000000000000000000000000000000000000000..2f43b65214a513a42141140bdb378e34d440c039 --- /dev/null +++ b/laser/.github/workflows/lint_and_tests.yml @@ -0,0 +1,32 @@ +name: lint_and_tests + +on: [push, pull_request] + +jobs: + build: + strategy: + max-parallel: 1 + matrix: + platform: [ubuntu-latest] + python-version: [3.8] + + runs-on: ${{ matrix.platform }} + + steps: + - uses: actions/checkout@v2 + + - name: Install dependencies + run: | + python --version + python -m pip install --upgrade 'pip>=23.2.1' + python -m pip show pip + python -m pip install -e '.[dev]' + + - name: isort + run: cd laser_encoders && isort --check --diff . + + - name: black + run: cd laser_encoders && black --check --diff . + + - name: pytest + run: pytest laser_encoders diff --git a/laser/.gitignore b/laser/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..9509882708ea8545a3555efbb5fd0c54c3f98535 --- /dev/null +++ b/laser/.gitignore @@ -0,0 +1,15 @@ +source/__pycache__ +source/lib/__pycache__ +models +tools-external +tasks/mldoc/MLDoc +embed +tasks/bucc/downloaded +tasks/similarity/dev/ +tasks/xnli/XNLI-1.0* +tasks/xnli/multinli_1.0* +.??*swp +.idea +__pycache__ +nllb +dist diff --git a/laser/CODE_OF_CONDUCT.md b/laser/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000000000000000000000000000000000..7e85843c8629d777d8b89b3c5eff032a7d25a72a --- /dev/null +++ b/laser/CODE_OF_CONDUCT.md @@ -0,0 +1,5 @@ +# Code of Conduct + +Facebook has adopted a Code of Conduct that we expect project participants to adhere to. +Please read the [full text](https://code.fb.com/codeofconduct) +so that you can understand what actions will and will not be tolerated. diff --git a/laser/CONTRIBUTING.md b/laser/CONTRIBUTING.md new file mode 100644 index 0000000000000000000000000000000000000000..7986e20bcde30606acefed97f341c806c2163975 --- /dev/null +++ b/laser/CONTRIBUTING.md @@ -0,0 +1,37 @@ +# Contributing to LASER +We want to make contributing to this project as easy and transparent as +possible. + +## Our Development Process +Minor changes and improvements will be released on an ongoing basis. + +## Pull Requests +We actively welcome your pull requests. + +1. Fork the repo and create your branch from `master`. +2. If you've added code that should be tested, add tests. +3. If you've changed APIs, update the documentation. +4. Ensure the test suite passes. +5. Make sure your code lints. +6. If you haven't already, complete the Contributor License Agreement ("CLA"). + +## Contributor License Agreement ("CLA") +In order to accept your pull request, we need you to submit a CLA. You only need +to do this once to work on any of Facebook's open source projects. + +Complete your CLA here: + +## Issues +We use GitHub issues to track public bugs. Please ensure your description is +clear and has sufficient instructions to be able to reproduce the issue. + +## Coding Style +* 4 spaces for indentation rather than tabs +* 80 character line length +* PEP8 formatting + +## License +By contributing to LASER, you agree that your contributions will be licensed +under the LICENSE file in the root directory of this source tree. + + diff --git a/laser/LICENSE b/laser/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..8eb13323ba4a8d68f2fd725bec857dca55014b8f --- /dev/null +++ b/laser/LICENSE @@ -0,0 +1,30 @@ +BSD License + +For Language-Agnostic SEntence Representations (LASER) software + +Copyright (c) Facebook, Inc. and its affiliates. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name Facebook nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/laser/README.md b/laser/README.md new file mode 100644 index 0000000000000000000000000000000000000000..07c4954b796baadbad0dbef42d36090270c51ef4 --- /dev/null +++ b/laser/README.md @@ -0,0 +1,159 @@ +# LASER Language-Agnostic SEntence Representations + +LASER is a library to calculate and use multilingual sentence embeddings. + +**NEWS** +* 2023/11/30 Released [**P-xSIM**](tasks/pxsim), a dual approach extension to multilingual similarity search (xSIM) +* 2023/11/16 Released [**laser_encoders**](laser_encoders), a pip-installable package supporting LASER-2 and LASER-3 models +* 2023/06/26 [**xSIM++**](https://arxiv.org/abs/2306.12907) evaluation pipeline and data [**released**](tasks/xsimplusplus/README.md) +* 2022/07/06 Updated LASER models with support for over 200 languages are [**now available**](nllb/README.md) +* 2022/07/06 Multilingual similarity search (**xSIM**) evaluation pipeline [**released**](tasks/xsim/README.md) +* 2022/05/03 [**Librivox S2S is available**](tasks/librivox-s2s): Speech-to-Speech translations automatically mined in Librivox [9] +* 2019/11/08 [**CCMatrix is available**](tasks/CCMatrix): Mining billions of high-quality parallel sentences on the WEB [8] +* 2019/07/31 Gilles Bodard and Jérémy Rapin provided a [**Docker environment**](docker) to use LASER +* 2019/07/11 [**WikiMatrix is available**](tasks/WikiMatrix): bitext extraction for 1620 language pairs in WikiPedia [7] +* 2019/03/18 switch to BSD license +* 2019/02/13 The code to perform bitext mining is [**now available**](tasks/bucc) + +**CURRENT VERSION:** +* We now provide updated LASER models which support over 200 languages. Please see [here](nllb/README.md) for more details including how to download the models and perform inference. + +According to our experience, the sentence encoder also supports code-switching, i.e. +the same sentences can contain words in several different languages. + +We have also some evidence that the encoder can generalize to other +languages which have not been seen during training, but which are in +a language family which is covered by other languages. + +A detailed description of how the multilingual sentence embeddings are trained can +be found [here](https://arxiv.org/abs/2205.12654), together with an experimental evaluation. + +## The core sentence embedding package: `laser_encoders` +We provide a package `laser_encoders` with minimal dependencies. +It supports LASER-2 (a single encoder for the languages listed [below](#supported-languages)) +and LASER-3 (147 language-specific encoders described [here](nllb/README.md)). + +The package can be installed simply with `pip install laser_encoders` and used as below: + +```python +from laser_encoders import LaserEncoderPipeline +encoder = LaserEncoderPipeline(lang="eng_Latn") +embeddings = encoder.encode_sentences(["Hi!", "This is a sentence encoder."]) +print(embeddings.shape) # (2, 1024) +``` + +The laser_encoders [readme file](laser_encoders) provides more examples of its installation and usage. + +## The full LASER kit +Apart from the `laser_encoders`, we provide support for LASER-1 (the original multilingual encoder) +and for various LASER applications listed below. + +### Dependencies +* Python >= 3.7 +* [PyTorch 1.0](http://pytorch.org/) +* [NumPy](http://www.numpy.org/), tested with 1.15.4 +* [Cython](https://pypi.org/project/Cython/), needed by Python wrapper of FastBPE, tested with 0.29.6 +* [Faiss](https://github.com/facebookresearch/faiss), for fast similarity search and bitext mining +* [transliterate 1.10.2](https://pypi.org/project/transliterate) (`pip install transliterate`) +* [jieba 0.39](https://pypi.org/project/jieba/), Chinese segmenter (`pip install jieba`) +* [mecab 0.996](https://pypi.org/project/JapaneseTokenizer/), Japanese segmenter +* tokenization from the Moses encoder (installed automatically) +* [FastBPE](https://github.com/glample/fastBPE), fast C++ implementation of byte-pair encoding (installed automatically) +* [Fairseq](https://github.com/pytorch/fairseq), sequence modeling toolkit (`pip install fairseq==0.12.1`) +* [tabulate](https://pypi.org/project/tabulate), pretty-print tabular data (`pip install tabulate`) +* [pandas](https://pypi.org/project/pandas), data analysis toolkit (`pip install pandas`) +* [Sentencepiece](https://github.com/google/sentencepiece), subword tokenization (installed automatically) + +### Installation +* install the `laser_encoders` package by e.g. `pip install -e .` for installing it in the editable mode +* set the environment variable 'LASER' to the root of the installation, e.g. + `export LASER="${HOME}/projects/laser"` +* download encoders from Amazon s3 by e.g. `bash ./nllb/download_models.sh` +* download third party software by `bash ./install_external_tools.sh` +* download the data used in the example tasks (see description for each task) + +## Applications + +We showcase several applications of multilingual sentence embeddings +with code to reproduce our results (in the directory "tasks"). + +* [**Cross-lingual document classification**](tasks/mldoc) using the + [*MLDoc*](https://github.com/facebookresearch/MLDoc) corpus [2,6] +* [**WikiMatrix**](tasks/WikiMatrix) + Mining 135M Parallel Sentences in 1620 Language Pairs from Wikipedia [7] +* [**Bitext mining**](tasks/bucc) using the + [*BUCC*](https://comparable.limsi.fr/bucc2018/bucc2018-task.html) corpus [3,5] +* [**Cross-lingual NLI**](tasks/xnli) + using the [*XNLI*](https://www.nyu.edu/projects/bowman/xnli/) corpus [4,5,6] +* [**Multilingual similarity search**](tasks/similarity) [1,6] +* [**Sentence embedding of text files**](tasks/embed) + example how to calculate sentence embeddings for arbitrary text files in any of the supported language. + +**For all tasks, we use exactly the same multilingual encoder, without any task specific optimization or fine-tuning.** + +## License + +LASER is BSD-licensed, as found in the [`LICENSE`](LICENSE) file in the root directory of this source tree. + +## Supported languages + +The original LASER model was trained on the following languages: + +Afrikaans, Albanian, Amharic, Arabic, Armenian, Aymara, Azerbaijani, Basque, Belarusian, Bengali, +Berber languages, Bosnian, Breton, Bulgarian, Burmese, Catalan, Central/Kadazan Dusun, Central Khmer, +Chavacano, Chinese, Coastal Kadazan, Cornish, Croatian, Czech, Danish, Dutch, Eastern Mari, English, +Esperanto, Estonian, Finnish, French, Galician, Georgian, German, Greek, Hausa, Hebrew, Hindi, +Hungarian, Icelandic, Ido, Indonesian, Interlingua, Interlingue, Irish, Italian, Japanese, Kabyle, +Kazakh, Korean, Kurdish, Latvian, Latin, Lingua Franca Nova, Lithuanian, Low German/Saxon, +Macedonian, Malagasy, Malay, Malayalam, Maldivian (Divehi), Marathi, Norwegian (Bokmål), Occitan, +Persian (Farsi), Polish, Portuguese, Romanian, Russian, Serbian, Sindhi, Sinhala, Slovak, Slovenian, +Somali, Spanish, Swahili, Swedish, Tagalog, Tajik, Tamil, Tatar, Telugu, Thai, Turkish, Uighur, +Ukrainian, Urdu, Uzbek, Vietnamese, Wu Chinese and Yue Chinese. + +We have also observed that the model seems to generalize well to other (minority) languages or dialects, e.g. + +Asturian, Egyptian Arabic, Faroese, Kashubian, North Moluccan Malay, Nynorsk Norwegian, Piedmontese, Sorbian, Swabian, +Swiss German or Western Frisian. + +### LASER3 + +Updated LASER models referred to as *[LASER3](nllb/README.md)* supplement the above list with support for 147 languages. The full list of supported languages can be seen [here](nllb/README.md#list-of-available-laser3-encoders). + +## References + +[1] Holger Schwenk and Matthijs Douze, + [*Learning Joint Multilingual Sentence Representations with Neural Machine Translation*](https://aclanthology.info/papers/W17-2619/w17-2619), + ACL workshop on Representation Learning for NLP, 2017 + +[2] Holger Schwenk and Xian Li, + [*A Corpus for Multilingual Document Classification in Eight Languages*](http://www.lrec-conf.org/proceedings/lrec2018/pdf/658.pdf), + LREC, pages 3548-3551, 2018. + +[3] Holger Schwenk, + [*Filtering and Mining Parallel Data in a Joint Multilingual Space*](http://aclweb.org/anthology/P18-2037) + ACL, July 2018 + +[4] Alexis Conneau, Guillaume Lample, Ruty Rinott, Adina Williams, Samuel R. Bowman, Holger Schwenk and Veselin Stoyanov, + [*XNLI: Cross-lingual Sentence Understanding through Inference*](https://aclweb.org/anthology/D18-1269), + EMNLP, 2018. + +[5] Mikel Artetxe and Holger Schwenk, + [*Margin-based Parallel Corpus Mining with Multilingual Sentence Embeddings*](https://arxiv.org/abs/1811.01136) + arXiv, Nov 3 2018. + +[6] Mikel Artetxe and Holger Schwenk, + [*Massively Multilingual Sentence Embeddings for Zero-Shot Cross-Lingual Transfer and Beyond*](https://arxiv.org/abs/1812.10464) + arXiv, Dec 26 2018. + +[7] Holger Schwenk, Vishrav Chaudhary, Shuo Sun, Hongyu Gong and Paco Guzman, + [*WikiMatrix: Mining 135M Parallel Sentences in 1620 Language Pairs from Wikipedia*](https://arxiv.org/abs/1907.05791) + arXiv, July 11 2019. + +[8] Holger Schwenk, Guillaume Wenzek, Sergey Edunov, Edouard Grave and Armand Joulin + [*CCMatrix: Mining Billions of High-Quality Parallel Sentences on the WEB*](https://arxiv.org/abs/1911.04944) + +[9] Paul-Ambroise Duquenne, Hongyu Gong, Holger Schwenk, + [*Multimodal and Multilingual Embeddings for Large-Scale Speech Mining,*](https://papers.nips.cc/paper/2021/hash/8466f9ace6a9acbe71f75762ffc890f1-Abstract.html), NeurIPS 2021, pages 15748-15761. + +[10] Kevin Heffernan, Onur Celebi, and Holger Schwenk, + [*Bitext Mining Using Distilled Sentence Representations for Low-Resource Languages*](https://arxiv.org/abs/2205.12654) diff --git a/laser/docker/Dockerfile b/laser/docker/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..bf23e5f90c165a2c3ad3ccef6116beeae1eaaed4 --- /dev/null +++ b/laser/docker/Dockerfile @@ -0,0 +1,38 @@ +FROM continuumio/miniconda3 + +MAINTAINER Gilles Bodart + +# Install build-essential (compiler and development tools) +RUN apt-get update && \ + apt-get install -y build-essential && \ + rm -rf /var/lib/apt/lists/* + +RUN conda create -n env python=3.8 +RUN echo "source activate env" > ~/.bashrc +ENV PATH /opt/conda/envs/env/bin:$PATH + +# Set the working directory to /app +WORKDIR /app + +# Copy the local laser-encoders repository +COPY laser_encoders /app/laser_encoders +COPY pyproject.toml /app/pyproject.toml + +RUN pip install --upgrade pip +RUN pip install -e . +RUN pip install Flask==2.3.3 Requests==2.31.0 + +# Define the argument for language +ARG langs="eng_Latn" + +# Download language models for each specified language +RUN for lang in $langs; do \ + python -m laser_encoders.download_models --lang=$lang; \ + done + +# Open the port 80 +EXPOSE 80 + +COPY docker/app.py /app/app.py + +CMD ["/bin/bash"] diff --git a/laser/docker/README.md b/laser/docker/README.md new file mode 100644 index 0000000000000000000000000000000000000000..1c67e49f4a8ecd0a6c8080a75e2f513b8d3ec37b --- /dev/null +++ b/laser/docker/README.md @@ -0,0 +1,82 @@ +## LASER Docker Image + +This image provides a convenient way to run LASER in a Docker container. + +### Building the image +To build the image, run the following command from the root of the LASER directory: + +``` +docker build --tag laser -f docker/Dockerfile . +``` +### Specifying Languages with `langs` Argument + +You can pre-download the encoders and tokenizers for specific languages by using the `langs` build argument. This argument accepts a space-separated list of language codes. For example, to build an image with models for English and French, use the following command: +``` +docker build --build-arg langs="eng_Latn fra_Latn" -t laser -f docker/Dockerfile . +``` +If the `langs` argument is not specified during the build process, the image will default to building with English (`eng_Latn`). It's important to note that in this default case where English is selected, the LASER2 model, which supports 92 languages, is used. For a comprehensive list of LASER2 supported languages, refer to `LASER2_LANGUAGES_LIST` in [`language_list.py`](https://github.com/facebookresearch/LASER/blob/main/laser_encoders/language_list.py). + + +### Running the Image +Once the image is built, you can run it with the following command: + +``` +docker run -it laser +``` +**Note:** If you want to expose a local port to the REST server on top of the embed task, you can do so by executing the following command instead of the last command: + +``` +docker run -it -p [CHANGEME_LOCAL_PORT]:80 laser python app.py +``` +This will override the command line entrypoint of the Docker container. + +Example: + +``` +docker run -it -p 8081:80 laser python app.py +``` + +This Flask server will serve a REST Api that can be use by calling your server with this URL : + +``` +http://127.0.0.1:[CHANGEME_LOCAL_PORT]/vectorize?q=[YOUR_SENTENCE_URL_ENCODED]&lang=[LANGUAGE] +``` + +Example: + +``` +http://127.0.0.1:8081/vectorize?q=ki%20lo%20'orukọ%20ẹ&lang=yor +``` + +Sample response: +``` +{ + "content": "ki lo 'orukọ ẹ", + "embedding": [ + [ + -0.10241681337356567, + 0.11120740324258804, + -0.26641348004341125, + -0.055699944496154785, + .... + .... + .... + -0.034048307687044144, + 0.11005636304616928, + -0.3238321840763092, + -0.060631975531578064, + -0.19269055128097534, + ] +} +``` + +Here is an example of how you can send requests to it with python: + +```python +import requests +import numpy as np +url = "http://127.0.0.1:[CHANGEME_LOCAL_PORT]/vectorize" +params = {"q": "Hey, how are you?\nI'm OK and you?", "lang": "en"} +resp = requests.get(url=url, params=params).json() +print(resp["embedding"]) +``` \ No newline at end of file diff --git a/laser/docker/app.py b/laser/docker/app.py new file mode 100644 index 0000000000000000000000000000000000000000..ac318c30e66069278eb1e2910a0a39da1467b742 --- /dev/null +++ b/laser/docker/app.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +import os +import socket + +from flask import Flask, jsonify, request + +from laser_encoders import LaserEncoderPipeline +from laser_encoders.language_list import LASER2_LANGUAGE, LASER3_LANGUAGE + +app = Flask(__name__) + +# Global cache for encoders +encoder_cache = {} + +laser2_encoder = None + + +@app.route("/") +def root(): + print("/") + html = "

Hello {name}!

" "Hostname: {hostname}
" + return html.format(name=os.getenv("LASER", "world"), hostname=socket.gethostname()) + + +@app.route("/vectorize", methods=["GET"]) +def vectorize(): + content = request.args.get("q") + lang = request.args.get( + "lang", "eng" + ) # Default to English if 'lang' is not provided + + if content is None: + return jsonify({"error": "Missing input content"}), 400 + + try: + global laser2_encoder + if lang in LASER2_LANGUAGE: # Checks for both 3-letter code or 8-letter code + if not laser2_encoder: + laser2_encoder = LaserEncoderPipeline(lang=lang) + encoder = laser2_encoder + else: + lang_code = LASER3_LANGUAGE.get( + lang, lang + ) # Use language code as key to prevent multiple entries for same language + if lang_code not in encoder_cache: + encoder_cache[lang_code] = LaserEncoderPipeline(lang=lang_code) + encoder = encoder_cache[lang_code] + + embeddings = encoder.encode_sentences([content]) + embeddings_list = embeddings.tolist() + body = {"content": content, "embedding": embeddings_list} + return jsonify(body), 200 + + except ValueError as e: + # Check if the exception is due to an unsupported language + if "unsupported language" in str(e).lower(): + return jsonify({"error": f"Language '{lang}' is not supported."}), 400 + else: + return jsonify({"error": str(e)}), 400 + + +if __name__ == "__main__": + app.run(debug=True, port=80, host="0.0.0.0") diff --git a/laser/docker/decode.py b/laser/docker/decode.py new file mode 100644 index 0000000000000000000000000000000000000000..74d49332929e69148ef7dbcea2a55ee70c7a27b1 --- /dev/null +++ b/laser/docker/decode.py @@ -0,0 +1,7 @@ +import numpy as np +import sys + +dim = 1024 +X = np.fromfile(sys.argv[1], dtype=np.float32, count=-1) +X.resize(X.shape[0] // dim, dim) +print(X) diff --git a/laser/install_external_tools.sh b/laser/install_external_tools.sh new file mode 100755 index 0000000000000000000000000000000000000000..6aee045f13854a6e40dae2a3c00de36be03e33be --- /dev/null +++ b/laser/install_external_tools.sh @@ -0,0 +1,200 @@ +#!/bin/bash +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +#------------------------------------------------------- +# +# This bash script installs third party software +# + +if [ -z ${LASER} ] ; then + echo "Please set the environment variable 'LASER'" + exit +fi + +################################################################### +# +# Generic helper functions +# +################################################################### + +MKDIR () { + dname=$1 + if [ ! -d ${dname} ] ; then + echo " - creating directory ${dname}" + mkdir -p ${dname} + fi +} + + +bdir="${LASER}" +tools_ext="${bdir}/tools-external" +MKDIR $tools_ext + +################################################################### +# +# Tokenization tools from Moses +# It is important to use the official release V4 and not the current one +# to obtain the same results than the published ones. +# (the behavior of the tokenizer for end-of-sentence abbreviations has changed) +# +################################################################### + +InstallMosesTools () { + moses_git="https://raw.githubusercontent.com/moses-smt/mosesdecoder/RELEASE-4.0/scripts" + moses_files=("tokenizer/tokenizer.perl" "tokenizer/detokenizer.perl" \ + "tokenizer/normalize-punctuation.perl" \ + "tokenizer/remove-non-printing-char.perl" \ + "tokenizer/deescape-special-chars.perl" \ + "tokenizer/lowercase.perl" \ + "tokenizer/basic-protected-patterns" \ + ) + + wdir="${tools_ext}/moses-tokenizer/tokenizer" + MKDIR ${wdir} + cd ${wdir} + + for f in ${moses_files[@]} ; do + if [ ! -f `basename ${f}` ] ; then + echo " - download ${f}" + wget -q ${moses_git}/${f} + fi + done + chmod 755 *perl + + # download non-breaking prefixes per language + moses_non_breakings="share/nonbreaking_prefixes/nonbreaking_prefix" + moses_non_breaking_langs=( \ + "ca" "cs" "de" "el" "en" "es" "fi" "fr" "ga" "hu" "is" \ + "it" "lt" "lv" "nl" "pl" "pt" "ro" "ru" "sk" "sl" "sv" \ + "ta" "yue" "zh" ) + wdir="${tools_ext}/moses-tokenizer/share/nonbreaking_prefixes" + MKDIR ${wdir} + cd ${wdir} + + for l in ${moses_non_breaking_langs[@]} ; do + f="${moses_non_breakings}.${l}" + if [ ! -f `basename ${f}` ] ; then + echo " - download ${f}" + wget -q ${moses_git}/${f} + fi + done +} + + +################################################################### +# +# FAST BPE +# +################################################################### + +InstallFastBPE () { + cd ${tools_ext} + if [ ! -x fastBPE/fast ] ; then + echo " - download fastBPE software from github" + wget https://github.com/glample/fastBPE/archive/master.zip + unzip master.zip + /bin/rm master.zip + mv fastBPE-master fastBPE + cd fastBPE + echo " - compiling" + g++ -std=c++11 -pthread -O3 fastBPE/main.cc -IfastBPE -o fast + if [ $? -eq 1 ] ; then + echo "ERROR: compilation failed, please install manually"; exit + fi + python setup.py install + fi +} + +################################################################### +# +# SENTENCEPIECE +# +################################################################### + +InstallSentencePiece () { + cd ${tools_ext} + if [ ! -d sentencepiece-master ] ; then + echo " - download sentencepiece from github" + wget https://github.com/google/sentencepiece/archive/master.zip + unzip master.zip + /bin/rm master.zip + if [ ! -s /usr/local/bin/spm_encode ] ; then + echo " - building code " + cd sentencepiece-master + mkdir build + cd build + cmake .. + make -j 10 + fi + fi +} + + +################################################################### +# +# Install Japanese tokenizer Mecab +# We do not use automatic installation with "pip" but directly add the soruce directory +# +################################################################### + +InstallMecab () { + cd ${tools_ext} + if [ ! -x mecab/mecab/bin/mecab ] ; then + echo " - download mecab from github" + wget https://github.com/taku910/mecab/archive/master.zip + unzip master.zip + #/bin/rm master.zip + if [ ! -s mecab/bin/mecab ] ; then + mkdir mecab + cd mecab-master/mecab + echo " - installing code" + ./configure --prefix ${tools_ext}/mecab && make && make install + if [ $? -q 1 ] ; then + echo "ERROR: installation failed, please install manually"; exit + fi + fi + if [ ! -d mecab/lib/mecab/dic/ipadic ] ; then + cd ${tools_ext}/mecab-master/mecab-ipadic + echo " - installing dictionaries" + ./configure --prefix ${tools_ext}/mecab --with-mecab-config=${tools_ext}/mecab/bin/mecab-config \ + && make && make install + if [ $? -eq 1 ] ; then + echo "ERROR: compilation failed, please install manually"; exit + fi + fi + fi +} + + +################################################################### +# +# main +# +################################################################### + +echo "Installing the laser_encoders package in editable mode" + +pip install -e . + +echo "Installing external tools" + +InstallMosesTools +InstallFastBPE +InstallSentencePiece + +#InstallMecab +echo "" +echo "automatic installation of the Japanese tokenizer mecab may be tricky" +echo "Please install it manually from https://github.com/taku910/mecab" +echo "" +echo "The installation directory should be ${LASER}/tools-external/mecab" +echo "" diff --git a/laser/install_models.sh b/laser/install_models.sh new file mode 100755 index 0000000000000000000000000000000000000000..32e25317705880ea7aa643abf74d19e3b53276a4 --- /dev/null +++ b/laser/install_models.sh @@ -0,0 +1,48 @@ +#!/bin/bash +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +#------------------------------------------------------- +# +# This bash script installs sentence encoders from Amazon s3 +# + +if [ -z ${LASER} ] ; then + echo "Please set the environment variable 'LASER'" + exit +fi + +mdir="${LASER}/models" + +# available encoders +s3="https://dl.fbaipublicfiles.com/laser/models" +networks=("bilstm.eparl21.2018-11-19.pt" \ + "eparl21.fcodes" "eparl21.fvocab" \ + "bilstm.93langs.2018-12-26.pt" \ + "93langs.fcodes" "93langs.fvocab") + + +echo "Downloading networks" + +if [ ! -d ${mdir} ] ; then + echo " - creating directory ${mdir}" + mkdir -p ${mdir} +fi + +cd ${mdir} +for f in ${networks[@]} ; do + if [ -f ${f} ] ; then + echo " - ${mdir}/${f} already downloaded" + else + echo " - ${f}" + wget -q ${s3}/${f} + fi +done diff --git a/laser/laser2.cvocab b/laser/laser2.cvocab new file mode 100644 index 0000000000000000000000000000000000000000..061591b89ad49956c8706165b0cfd8483eb5c23b --- /dev/null +++ b/laser/laser2.cvocab @@ -0,0 +1,50000 @@ + 1 #fairseq:overwrite + 1 #fairseq:overwrite + 1 #fairseq:overwrite +▁ 1 +, 1 +. 1 +s 1 +a 1 +i 1 +e 1 +▁de 1 +- 1 +t 1 +▁a 1 +: 1 +o 1 +n 1 +u 1 +▁( 1 +) 1 +en 1 +▁i 1 +m 1 +y 1 +▁la 1 +r 1 +▁na 1 +▁in 1 +▁e 1 +▁- 1 +▁en 1 +▁на 1 +d 1 +' 1 +的 1 +... 1 +er 1 +’ 1 +。 1 +te 1 +an 1 +▁o 1 +k 1 +? 1 +▁se 1 +▁di 1 +na 1 +а 1 +▁и 1 +ta 1 +! 1 +、 1 +in 1 +ne 1 +▁A 1 +h 1 +▁do 1 +▁que 1 +da 1 +▁da 1 +z 1 +le 1 +re 1 +▁to 1 +de 1 +▁sa 1 +es 1 +ni 1 +l 1 +▁в 1 +▁за 1 +g 1 +ti 1 +▁– 1 +la 1 +c 1 +▁" 1 +ar 1 +to 1 +и 1 +▁s 1 +j 1 +у 1 +▁je 1 +li 1 +▁un 1 +▁S 1 +، 1 +is 1 +/ 1 +е 1 +ka 1 +p 1 +▁v 1 +▁za 1 +▁“ 1 +ma 1 +si 1 +et 1 +▁si 1 +ی 1 +▁u 1 +no 1 +" 1 +▁d 1 +▁و 1 +▁og 1 +ja 1 +b 1 +▁I 1 +” 1 +▁у 1 +▁po 1 +st 1 +▁z 1 +▁ne 1 +se 1 +al 1 +▁le 1 +▁не 1 +▁er 1 +▁по 1 +▁да 1 +as 1 +ga 1 +▁die 1 +ra 1 +▁te 1 +▁ja 1 +на 1 +▁for 1 +▁per 1 +м 1 +v 1 +▁l 1 +; 1 +it 1 +os 1 +т 1 +▁the 1 +▁et 1 +ch 1 +▁el 1 +▁be 1 +at 1 +ce 1 +▁с 1 +me 1 +ه 1 +f 1 +▁no 1 +▁al 1 +us 1 +の 1 +▁is 1 +▁ka 1 +sa 1 +▁at 1 +je 1 +va 1 +do 1 +▁me 1 +▁du 1 +▁1 1 +ve 1 +mi 1 +ge 1 +ي 1 +lo 1 +▁su 1 +▁on 1 +di 1 +▁con 1 +▁O 1 +ko 1 +ci 1 +ng 1 +ki 1 +on 1 +▁се 1 +▁y 1 +w 1 +▁pa 1 +▁M 1 +tu 1 +▁« 1 +ku 1 +ba 1 +ul 1 +ing 1 +ed 1 +▁2 1 +о 1 +▁of 1 +▁re 1 +▁_ 1 +▁w 1 +ke 1 +▁ma 1 +▁m 1 +▁ve 1 +▁E 1 +но 1 +▁B 1 +▁K 1 +с 1 +ri 1 +та 1 +▁på 1 +em 1 +( 1 +▁an 1 +ا 1 +я 1 +ten 1 +▁C 1 +ة 1 +▁med 1 +ca 1 +kan 1 +am 1 +um 1 +ir 1 +▁ku 1 +ha 1 +▁para 1 +▁so 1 +▁ki 1 +▁T 1 +▁yang 1 +在 1 +н 1 +▁pe 1 +х 1 +। 1 +▁dan 1 +ка 1 +▁der 1 +ни 1 +▁3 1 +ak 1 +▁van 1 +▁ar 1 +▁ha 1 +▁ke 1 +й 1 +▁som 1 +ن 1 +un 1 +▁til 1 +mo 1 +be 1 +▁ya 1 +S 1 +م 1 +д 1 +ur 1 +ro 1 +ter 1 +wa 1 +л 1 +ya 1 +▁La 1 +▁del 1 +ы 1 +не 1 +▁V 1 +▁and 1 +▁ver 1 +▁P 1 +il 1 +▁от 1 +▁të 1 +▁D 1 +を 1 +zi 1 +▁до 1 +lar 1 +▁av 1 +▁م 1 +▁د 1 +ny 1 +و 1 +▁„ 1 +“ 1 +A 1 +▁з 1 +▁ge 1 +▁L 1 +に 1 +» 1 +▁ko 1 +í 1 +vi 1 +go 1 +▁De 1 +▁om 1 +▁vi 1 +▁H 1 +▁op 1 +▁det 1 +ho 1 +▁Na 1 +nya 1 +▁در 1 +ek 1 +те 1 +і 1 +el 1 +ت 1 +▁den 1 +gi 1 +が 1 +za 1 +▁es 1 +▁а 1 +了 1 +▁F 1 +▁und 1 +bi 1 +▁od 1 +š 1 +▁ta 1 +в 1 +du 1 +▁har 1 +▁bo 1 +то 1 +▁به 1 +x 1 +▁as 1 +▁des 1 +der 1 +pa 1 +id 1 +ж 1 +ات 1 +ш 1 +▁och 1 +是 1 +р 1 +lu 1 +▁19 1 +). 1 +ва 1 +▁ال 1 +▁U 1 +▁va 1 +▁10 1 +▁... 1 +▁при 1 +▁5 1 +▁4 1 +ла 1 +人 1 +om 1 +▁li 1 +▁pro 1 +▁і 1 +г 1 +▁ca 1 +ad 1 +▁ng 1 +▁il 1 +é 1 +▁por 1 +man 1 +▁mi 1 +▁wa 1 +▁pre 1 +▁ni 1 +▁kan 1 +sta 1 +▁من 1 +मा 1 +ти 1 +D 1 +▁е 1 +да 1 +ver 1 +▁о 1 +ia 1 +po 1 +den 1 +▁bi 1 +к 1 +▁tu 1 +▁ir 1 +im 1 +ل 1 +ли 1 +ju 1 +▁: 1 +ly 1 +▁k 1 +] 1 +有 1 +ን 1 +▁var 1 +▁pri 1 +▁G 1 +ž 1 +or 1 +▁les 1 +न 1 +▁Se 1 +2 1 +▁cu 1 +▁af 1 +ê 1 +ie 1 +ς 1 +▁ra 1 +▁С 1 +ч 1 +), 1 +▁। 1 +he 1 +▁‘ 1 +▁из 1 +이 1 +ut 1 +▁b 1 +▁bu 1 +▁ber 1 +▁N 1 +ल 1 +不 1 +ste 1 +bo 1 +ի 1 +ს 1 +▁att 1 +▁και 1 +1 1 +को 1 +は 1 +mu 1 +▁کے 1 +क 1 +ма 1 +▁про 1 +ty 1 +▁het 1 +▁par 1 +▁ה 1 +B 1 +▁man 1 +nu 1 +▁nie 1 +co 1 +ru 1 +▁iz 1 +▁co 1 +▁bir 1 +ش 1 +ok 1 +▁una 1 +一 1 +ler 1 +­ 1 +ہ 1 +▁In 1 +和 1 +jo 1 +▁في 1 +▁R 1 +ji 1 +س 1 +의 1 +3 1 +lik 1 +vo 1 +C 1 +com 1 +P 1 +nie 1 +▁და 1 +▁Vi 1 +▁com 1 +▁ob 1 +ر 1 +q 1 +▁che 1 +▁nu 1 +▁az 1 +▁6 1 +га 1 +ку 1 +▁à 1 +▁ba 1 +ом 1 +п 1 +so 1 +▁men 1 +ले 1 +▁од 1 +त 1 +▁g 1 +▁um 1 +▁کی 1 +ні 1 +上 1 +▁2018 1 +ze 1 +▁са 1 +ки 1 +▁के 1 +▁та 1 +pe 1 +을 1 +▁c 1 +▁Re 1 +ot 1 +gen 1 +men 1 +▁fa 1 +र 1 +▁А 1 +大 1 +з 1 +K 1 +N 1 +lan 1 +▁ho 1 +ol 1 +َ 1 +▁Sa 1 +▁h 1 +▁во 1 +ов 1 +ю 1 +▁No 1 +▁é 1 +▁از 1 +ment 1 +we 1 +ning 1 +M 1 +▁В 1 +▁/ 1 +fa 1 +▁ت 1 +T 1 +▁Le 1 +ig 1 +▁Ma 1 +hi 1 +ية 1 +▁می 1 +▁со 1 +▁és 1 +▁een 1 +▁ter 1 +▁En 1 +ó 1 +▁7 1 +▁á 1 +▁је 1 +dan 1 +▁Po 1 +中 1 +á 1 +tion 1 +年 1 +G 1 +от 1 +▁— 1 +▁Be 1 +▁din 1 +▁în 1 +▁' 1 +est 1 +▁pas 1 +H 1 +ं 1 +ко 1 +▁ב 1 +que 1 +ck 1 +ita 1 +▁mo 1 +ה 1 +▁tak 1 +▁ب 1 +▁الم 1 +▁ce 1 +gu 1 +ts 1 +tur 1 +▁në 1 +ven 1 +F 1 +ло 1 +▁em 1 +ov 1 +▁mu 1 +bu 1 +ik 1 +O 1 +ş 1 +▁To 1 +▁för 1 +▁lo 1 +▁با 1 +د 1 +▁fi 1 +E 1 +▁ang 1 +▁میں 1 +我 1 +▁У 1 +де 1 +ع 1 +▁W 1 +▁Li 1 +sz 1 +ran 1 +ն 1 +ll 1 +स 1 +▁Ka 1 +▁os 1 +5 1 +▁by 1 +ú 1 +▁jo 1 +ም 1 +ai 1 +▁ut 1 +▁የ 1 +का 1 +▁t 1 +pi 1 +ი 1 +▁Ha 1 +▁8 1 +tar 1 +ben 1 +▁ju 1 +ان 1 +I 1 +né 1 +ну 1 +日 1 +▁Z 1 +▁ad 1 +ken 1 +▁met 1 +▁18 1 +▁Bu 1 +ă 1 +▁zu 1 +▁20 1 +ት 1 +▁է 1 +▁[ 1 +th 1 +ina 1 +ում 1 +ം 1 +म 1 +ම 1 +ky 1 +ी 1 +▁Si 1 +▁را 1 +▁am 1 +で 1 +ა 1 +と 1 +fi 1 +ada 1 +го 1 +sti 1 +▁he 1 +V 1 +▁Di 1 +nt 1 +ର 1 +▁12 1 +W 1 +iz 1 +น 1 +▁non 1 +tor 1 +▁tra 1 +▁15 1 +su 1 +에 1 +kin 1 +ය 1 +▁об 1 +ب 1 +ud 1 +▁к 1 +ní 1 +tra 1 +▁å 1 +ine 1 +ą 1 +▁О 1 +ban 1 +▁að 1 +▁är 1 +ме 1 +▁Ne 1 +ль 1 +▁Pa 1 +ها 1 +가 1 +nd 1 +‘ 1 +▁Al 1 +cu 1 +▁Ba 1 +▁» 1 +▁па 1 +▁מ 1 +▁est 1 +▁sem 1 +ен 1 +▁mai 1 +▁das 1 +▁ri 1 +ach 1 +ите 1 +는 1 +▁το 1 +ը 1 +б 1 +▁f 1 +ที่ 1 +▁ن 1 +î 1 +ны 1 +ang 1 +▁του 1 +▁Ja 1 +▁im 1 +ska 1 +▁Da 1 +व 1 +zo 1 +▁ga 1 +▁An 1 +▁Ta 1 +▁9 1 +ción 1 +▁ist 1 +خ 1 +ь 1 +ส 1 +▁qui 1 +▁you 1 +dy 1 +ม 1 +▁los 1 +ry 1 +▁να 1 +▁अ 1 +ರ 1 +min 1 +ия 1 +▁ви 1 +ле 1 +4 1 +▁Ko 1 +ри 1 +▁ser 1 +▁است 1 +▁أ 1 +ung 1 +▁El 1 +lle 1 +hu 1 +ದ 1 +ين 1 +ට 1 +ला 1 +▁n 1 +ç 1 +ת 1 +▁p 1 +ز 1 +出 1 +▁kon 1 +sen 1 +▁که 1 +ndo 1 +▁то 1 +ker 1 +ks 1 +▁për 1 +▁Do 1 +zu 1 +▁pod 1 +ren 1 +ים 1 +▁Mo 1 +lla 1 +▁we 1 +ం 1 +▁się 1 +▁hi 1 +ä 1 +▁что 1 +▁pi 1 +ने 1 +▁вы 1 +ger 1 +L 1 +ν 1 +ک 1 +も 1 +ра 1 +▁ci 1 +▁پر 1 +▁yn 1 +▁में 1 +ть 1 +▁На 1 +ви 1 +い 1 +han 1 +ля 1 +▁her 1 +▁mar 1 +ন 1 +ini 1 +ის 1 +י 1 +ere 1 +ele 1 +ق 1 +лі 1 +án 1 +▁pu 1 +by 1 +▁Mi 1 +che 1 +▁س 1 +▁it 1 +▁आ 1 +ح 1 +▁ay 1 +tas 1 +ня 1 +ів 1 +▁Y 1 +_ 1 +▁ei 1 +ite 1 +sk 1 +▁au 1 +let 1 +ба 1 +▁vy 1 +▁í 1 +▁go 1 +rá 1 +ile 1 +ې 1 +ę 1 +▁11 1 +tes 1 +ال 1 +▁dhe 1 +▁کا 1 +▁meg 1 +ਰ 1 +▁# 1 +ana 1 +▁ا 1 +▁mit 1 +au 1 +ව 1 +▁så 1 +are 1 +per 1 +▁ل 1 +dir 1 +за 1 +ou 1 +▁Me 1 +到 1 +ye 1 +▁Bo 1 +io 1 +」 1 +▁Ra 1 +nia 1 +ك 1 +▁30 1 +▁су 1 +▁ch 1 +ту 1 +ser 1 +▁под 1 +ц 1 +à 1 +ć 1 +mos 1 +▁that 1 +▁جي 1 +ди 1 +sh 1 +▁2017 1 +ย 1 +▁है 1 +len 1 +▁ny 1 +▁کو 1 +▁Ke 1 +▁vo 1 +▁J 1 +ber 1 +▁dengan 1 +▁Du 1 +प 1 +ون 1 +র 1 +mas 1 +▁ל 1 +▁ini 1 +gar 1 +ј 1 +▁este 1 +▁της 1 +▁lu 1 +▁की 1 +ali 1 +▁The 1 +че 1 +kon 1 +aj 1 +▁በ 1 +ट 1 +des 1 +ል 1 +ι 1 +ना 1 +ми 1 +▁این 1 +▁was 1 +▁ي 1 +les 1 +res 1 +vu 1 +အ 1 +ë 1 +kar 1 +▁Per 1 +▁or 1 +ِ 1 +▁Ar 1 +ம் 1 +▁په 1 +ด 1 +▁раз 1 +▁untuk 1 +ant 1 +▁او 1 +nes 1 +▁Co 1 +▁ro 1 +月 1 +▁So 1 +tan 1 +ర్ 1 +ف 1 +R 1 +▁اور 1 +な 1 +oj 1 +С 1 +고 1 +ды 1 +iti 1 +▁ein 1 +े 1 +6 1 +ру 1 +ке 1 +ર 1 +▁Je 1 +를 1 +▁eta 1 +ක 1 +نا 1 +پ 1 +ज 1 +tt 1 +▁že 1 +▁ex 1 +▁voor 1 +ा 1 +▁Za 1 +▁سے 1 +ता 1 +地 1 +ча 1 +ı 1 +▁1. 1 +▁x 1 +▁có 1 +下 1 +ist 1 +「 1 +▁την 1 +▁ў 1 +▁fra 1 +▁ti 1 +▁16 1 +▁По 1 +▁care 1 +▁К 1 +就 1 +ista 1 +യ 1 +▁14 1 +ų 1 +▁till 1 +tal 1 +▁və 1 +▁cho 1 +▁И 1 +▁स 1 +▁sur 1 +30 1 +▁для 1 +▁và 1 +▁အ 1 +▁అ 1 +č 1 +▁με 1 +▁Pro 1 +▁13 1 +▁von 1 +▁over 1 +ରେ 1 +ron 1 +▁का 1 +ем 1 +也 1 +fe 1 +ше 1 +las 1 +ก 1 +7 1 +න 1 +ے 1 +ske 1 +lig 1 +▁tr 1 +▁min 1 +ih 1 +ет 1 +ale 1 +var 1 +▁ru 1 +ड 1 +ā 1 +은 1 +ala 1 +会 1 +ր 1 +ft 1 +cha 1 +ند 1 +多 1 +▁За 1 +jen 1 +Y 1 +ний 1 +ah 1 +era 1 +▁pour 1 +gan 1 +▁25 1 +ර 1 +▁como 1 +ên 1 +▁17 1 +ות 1 +▁Su 1 +▁pra 1 +ύ 1 +ى 1 +8 1 +▁አ 1 +การ 1 +▁Т 1 +ล 1 +tro 1 +са 1 +▁Ho 1 +ور 1 +ά 1 +▁can 1 +▁fe 1 +ari 1 +▁ji 1 +▁ان 1 +bar 1 +기 1 +ного 1 +▁las 1 +ත් 1 +γ 1 +თ 1 +ስ 1 +▁ikke 1 +ria 1 +▁0 1 +▁dat 1 +他 1 +用 1 +ው 1 +▁я 1 +▁sam 1 +val 1 +ُ 1 +▁اس 1 +도 1 +▁ou 1 +▁де 1 +ты 1 +chi 1 +▁Det 1 +▁của 1 +ag 1 +ата 1 +च 1 +vis 1 +▁آ 1 +ක් 1 +ers 1 +▁си 1 +▁على 1 +▁Б 1 +ج 1 +好 1 +▁là 1 +か 1 +ల 1 +ın 1 +▁X 1 +▁Con 1 +य 1 +▁Ni 1 +J 1 +ન 1 +▁Ge 1 +▁Die 1 +ре 1 +▁ze 1 +ша 1 +▁ма 1 +▁wy 1 +▁ש 1 +▁gi 1 +U 1 +లు 1 +▁של 1 +က 1 +▁को 1 +行 1 +χ 1 +nda 1 +ida 1 +ent 1 +ção 1 +▁ac 1 +ේ 1 +▁all 1 +▁Ver 1 +že 1 +ez 1 +мо 1 +ό 1 +van 1 +ید 1 +ap 1 +▁dos 1 +▁è 1 +න් 1 +եր 1 +ima 1 +ğ 1 +▁Er 1 +ej 1 +мен 1 +кі 1 +uje 1 +ili 1 +ң 1 +ları 1 +지 1 +10 1 +ල 1 +▁Ti 1 +▁Ki 1 +▁nem 1 +▁से 1 +чи 1 +san 1 +▁Te 1 +К 1 +▁sy 1 +▁את 1 +▁پ 1 +ና 1 +ál 1 +▁های 1 +ns 1 +лу 1 +ся 1 +▁അ 1 +nin 1 +ー 1 +ին 1 +υ 1 +द 1 +し 1 +9 1 +وں 1 +ര 1 +è 1 +ši 1 +ná 1 +▁र 1 +▁Pe 1 +生 1 +mar 1 +▁א 1 +ду 1 +lı 1 +리 1 +sto 1 +ام 1 +wi 1 +tel 1 +uri 1 +kt 1 +mente 1 +nde 1 +你 1 +한 1 +ে 1 +ных 1 +▁auf 1 +nak 1 +▁sta 1 +▁aan 1 +ata 1 +”, 1 +ð 1 +dar 1 +▁uz 1 +tin 1 +ै 1 +му 1 +sel 1 +บ 1 +ง 1 +家 1 +小 1 +▁Д 1 +▁24 1 +cie 1 +▁Ro 1 +ster 1 +ന് 1 +ር 1 +θ 1 +mer 1 +ಯ 1 +▁για 1 +▁pentru 1 +ras 1 +isi 1 +▁بر 1 +▁sin 1 +ат 1 +ire 1 +ท 1 +ab 1 +rat 1 +▁Mu 1 +ő 1 +로 1 +▁ali 1 +ست 1 +ado 1 +要 1 +del 1 +Z 1 +▁ع 1 +od 1 +ল 1 +▁han 1 +ł 1 +во 1 +asi 1 +▁& 1 +▁my 1 +▁пре 1 +них 1 +都 1 +▁kar 1 +▁ale 1 +വ 1 +ski 1 +net 1 +ში 1 +▁mal 1 +း 1 +ു 1 +本 1 +对 1 +▁dalam 1 +tik 1 +▁ما 1 +ول 1 +eg 1 +ын 1 +▁are 1 +ně 1 +ել 1 +▁alle 1 +ן 1 +op 1 +my 1 +▁dar 1 +新 1 +▁für 1 +сти 1 +α 1 +▁* 1 +▁mga 1 +▁प 1 +ական 1 +▁fel 1 +▁г 1 +ting 1 +по 1 +▁ہے 1 +ati 1 +▁tre 1 +ാ 1 +▁Jo 1 +高 1 +ī 1 +dos 1 +ما 1 +ή 1 +▁ap 1 +ص 1 +gy 1 +▁или 1 +for 1 +▁with 1 +ene 1 +kom 1 +land 1 +▁από 1 +nik 1 +▁που 1 +ului 1 +се 1 +ของ 1 +ic 1 +▁Ju 1 +▁son 1 +▁2. 1 +న 1 +ক 1 +து 1 +▁мо 1 +子 1 +vel 1 +▁Tu 1 +▁છે 1 +met 1 +yo 1 +ў 1 +心 1 +▁jeg 1 +ב 1 +ர் 1 +ят 1 +▁ಅ 1 +▁th 1 +▁dem 1 +▁Fa 1 +▁அ 1 +▁eller 1 +zione 1 +ర 1 +▁Ku 1 +ל 1 +▁kwa 1 +▁न 1 +▁ich 1 +ද 1 +▁جو 1 +▁как 1 +ton 1 +ə 1 +▁egy 1 +▁qu 1 +ве 1 +ար 1 +▁şi 1 +ο 1 +ów 1 +▁He 1 +▁2016 1 +pu 1 +lah 1 +sko 1 +М 1 +▁від 1 +ین 1 +nek 1 +ami 1 +▁wat 1 +چ 1 +tte 1 +bra 1 +ila 1 +ira 1 +事 1 +り 1 +▁छ 1 +cz 1 +nh 1 +▁што 1 +це 1 +等 1 +А 1 +▁mais 1 +▁mas 1 +ա 1 +ий 1 +▁pie 1 +ens 1 +▁Е 1 +ib 1 +▁М 1 +ах 1 +con 1 +[ 1 +das 1 +▁không 1 +æ 1 +ната 1 +▁სა 1 +ക 1 +േ 1 +ਲ 1 +bat 1 +". 1 +:// 1 +▁но 1 +▁ब 1 +▁să 1 +ര് 1 +də 1 +▁nicht 1 +▁че 1 +ह 1 +ם 1 +ના 1 +ί 1 +ว 1 +▁Un 1 +来 1 +ona 1 +ല 1 +ന 1 +ン 1 +▁Ga 1 +వ 1 +ו 1 +▁ف 1 +以 1 +ді 1 +▁amb 1 +▁पर 1 +pro 1 +▁وال 1 +X 1 +ст 1 +nih 1 +く 1 +ži 1 +0 1 +ത 1 +ин 1 +▁ten 1 +ً 1 +sin 1 +lin 1 +ја 1 +面 1 +▁تو 1 +▁hogy 1 +▁Sie 1 +▁have 1 +▁이 1 +át 1 +र् 1 +▁Mar 1 +يا 1 +ป 1 +tis 1 +ła 1 +ner 1 +▁пра 1 +▁kaj 1 +nos 1 +ийн 1 +tre 1 +yan 1 +ска 1 +് 1 +qui 1 +ů 1 +ion 1 +▁car 1 +ան 1 +cia 1 +ü 1 +자 1 +▁म 1 +▁Lu 1 +π 1 +cer 1 +▁not 1 +క 1 +▁inte 1 +▁کر 1 +hat 1 +ò 1 +▁Lo 1 +rum 1 +ör 1 +▁අ 1 +اء 1 +ling 1 +έ 1 +▁û 1 +fer 1 +▁क 1 +မ 1 +る 1 +分 1 +mat 1 +手 1 +či 1 +ક 1 +لا 1 +▁For 1 +og 1 +ನ 1 +ร 1 +lat 1 +ais 1 +▁kun 1 +ो 1 +ца 1 +인 1 +lt 1 +ните 1 +▁itu 1 +tos 1 +▁kor 1 +为 1 +▁đ 1 +té 1 +ได้ 1 +લ 1 +ली 1 +ys 1 +▁Es 1 +▁vor 1 +ito 1 +ض 1 +ਨ 1 +▁dari 1 +leri 1 +20 1 +nis 1 +ам 1 +ئ 1 +xi 1 +મ 1 +وا 1 +ż 1 +▁Г 1 +”. 1 +Д 1 +ல் 1 +▁η 1 +天 1 +же 1 +▁Il 1 +ू 1 +ವ 1 +бо 1 +▁أن 1 +▁sen 1 +00 1 +ци 1 +tta 1 +▁tidak 1 +ે 1 +▁100 1 +力 1 +前 1 +▁ته 1 +▁ش 1 +रा 1 +up 1 +▁r 1 +ค 1 +би 1 +▁raz 1 +會 1 +▁als 1 +ब 1 +ને 1 +ר 1 +▁dia 1 +ation 1 +다 1 +ד 1 +ici 1 +het 1 +▁• 1 +ရ 1 +사 1 +ова 1 +ለ 1 +ей 1 +而 1 +rea 1 +50 1 +▁го 1 +ан 1 +റ 1 +成 1 +▁21 1 +сь 1 +ný 1 +მა 1 +▁une 1 +sch 1 +▁vol 1 +▁sau 1 +rt 1 +時 1 +ใน 1 +▁Gu 1 +ต 1 +ग 1 +▁oo 1 +ની 1 +mes 1 +ល 1 +▁pos 1 +დ 1 +", 1 +ակ 1 +▁kom 1 +ika 1 +מ 1 +▁uma 1 +ေ 1 +മ 1 +▁jest 1 +▁हो 1 +ara 1 +до 1 +▁ре 1 +▁50 1 +tie 1 +az 1 +ül 1 +▁եւ 1 +య 1 +red 1 +▁inter 1 +19 1 +ன் 1 +▁Man 1 +▁kas 1 +▁نے 1 +dor 1 +▁dans 1 +ate 1 +им 1 +ски 1 +▁film 1 +ని 1 +stra 1 +സ് 1 +უ 1 +▁бол 1 +mis 1 +af 1 +▁Не 1 +ник 1 +је 1 +▁që 1 +nte 1 +τα 1 +ନ 1 +▁vir 1 +માં 1 +ге 1 +▁ба 1 +రి 1 +son 1 +▁Ca 1 +kat 1 +ण 1 +ω 1 +스 1 +ý 1 +მ 1 +uta 1 +ło 1 +▁(1) 1 +ø 1 +če 1 +اد 1 +П 1 +nom 1 +ama 1 +시 1 +့ 1 +▁۾ 1 +ció 1 +є 1 +ць 1 +ket 1 +ვ 1 +ብ 1 +▁dit 1 +▁nga 1 +▁एक 1 +си 1 +дан 1 +pen 1 +▁ab 1 +nar 1 +法 1 +▁jag 1 +ac 1 +▁2015 1 +és 1 +õ 1 +▁수 1 +rin 1 +mal 1 +▁sex 1 +▁pada 1 +▁plan 1 +▁naj 1 +▁τα 1 +री 1 +して 1 +▁mer 1 +ô 1 +▁ആ 1 +ের 1 +12 1 +ende 1 +▁З 1 +▁על 1 +vin 1 +uk 1 +▁ת 1 +elle 1 +nen 1 +ി 1 +па 1 +▁sal 1 +ম 1 +tem 1 +▁mis 1 +ો 1 +க 1 +ния 1 +▁کہ 1 +▁val 1 +ram 1 +▁Wa 1 +▁الت 1 +ত 1 +▁hal 1 +inn 1 +▁gu 1 +тар 1 +▁mag 1 +tter 1 +ста 1 +▁так 1 +▁į 1 +ස 1 +cy 1 +▁Ri 1 +О 1 +ರ್ 1 +વા 1 +▁We 1 +▁sich 1 +tek 1 +▁și 1 +ራ 1 +▁ми 1 +ນ 1 +ide 1 +tat 1 +▁Men 1 +性 1 +▁della 1 +ei 1 +▁መ 1 +ג 1 +▁П 1 +▁მ 1 +▁fan 1 +har 1 +▁Nu 1 +▁ر 1 +▁би 1 +ດ 1 +гі 1 +▁الأ 1 +어 1 +者 1 +යි 1 +Б 1 +sten 1 +ən 1 +ድ 1 +न् 1 +ਿ 1 +lá 1 +▁nos 1 +мі 1 +nje 1 +▁مع 1 +▁Ch 1 +kas 1 +nej 1 +tet 1 +ቀ 1 +ros 1 +及 1 +▁22 1 +▁post 1 +ய 1 +เป็น 1 +Т 1 +과 1 +ē 1 +ал 1 +▁ska 1 +nder 1 +▁pag 1 +ស 1 +ға 1 +ያ 1 +տ 1 +zen 1 +eri 1 +ე 1 +их 1 +ura 1 +て 1 +din 1 +ോ 1 +▁një 1 +wy 1 +ୁ 1 +看 1 +श 1 +▁vel 1 +▁Bi 1 +аў 1 +ల్ 1 +▁vil 1 +มา 1 +nim 1 +▁3. 1 +ნა 1 +から 1 +வ 1 +▁მო 1 +▁agus 1 +nas 1 +μ 1 +市 1 +▁pot 1 +▁що 1 +ո 1 +ط 1 +ха 1 +▁tur 1 +ಲ 1 +iya 1 +asa 1 +tus 1 +ša 1 +сы 1 +000 1 +▁और 1 +ар 1 +ure 1 +▁આ 1 +▁ο 1 +वा 1 +來 1 +ff 1 +ח 1 +В 1 +▁ste 1 +Г 1 +ري 1 +ಕ 1 +ris 1 +ие 1 +▁же 1 +త 1 +স 1 +▁ها 1 +▁ക 1 +κ 1 +化 1 +ս 1 +ス 1 +స్ 1 +▁vai 1 +ast 1 +▁chi 1 +▁hu 1 +ið 1 +ties 1 +▁המ 1 +▁sz 1 +▁۽ 1 +۔ 1 +▁một 1 +ход 1 +ок 1 +ረ 1 +ор 1 +▁wie 1 +名 1 +ով 1 +▁As 1 +kor 1 +Р 1 +зи 1 +说 1 +▁، 1 +▁your 1 +得 1 +ק 1 +ón 1 +▁kur 1 +lər 1 +▁kr 1 +ого 1 +pun 1 +11 1 +ise 1 +ente 1 +ві 1 +mp 1 +par 1 +ස් 1 +ъ 1 +って 1 +tak 1 +ão 1 +ры 1 +ਮ 1 +▁ح 1 +ρ 1 +▁те 1 +တ 1 +▁Đ 1 +▁Pre 1 +主 1 +bre 1 +ства 1 +▁ق 1 +▁д 1 +▁this 1 +▁נ 1 +@ 1 +rit 1 +ម 1 +η 1 +ገ 1 +定 1 +fo 1 +bor 1 +▁pen 1 +ों 1 +nosti 1 +部 1 +دا 1 +ју 1 +ત 1 +外 1 +▁м 1 +▁eine 1 +က် 1 +為 1 +▁được 1 +▁कर 1 +ți 1 +.” 1 +ती 1 +▁Go 1 +▁2013 1 +bil 1 +▁tro 1 +ס 1 +σ 1 +▁comp 1 +ec 1 +រ 1 +です 1 +可 1 +ذ 1 +లో 1 +સ 1 +▁hat 1 +lari 1 +mba 1 +物 1 +▁ai 1 +最 1 +ova 1 +და 1 +▁oli 1 +una 1 +▁או 1 +të 1 +▁auch 1 +▁ako 1 +ि 1 +所 1 +能 1 +▁tri 1 +自 1 +ደ 1 +▁خ 1 +▁pred 1 +ong 1 +mak 1 +ש 1 +ട 1 +▁هم 1 +ਕ 1 +vá 1 +▁2014 1 +▁các 1 +▁bar 1 +ላ 1 +▁ו 1 +ard 1 +▁ко 1 +én 1 +ប 1 +ân 1 +▁dé 1 +ਸ 1 +tri 1 +▁има 1 +之 1 +сто 1 +ታ 1 +న్ 1 +▁forma 1 +غ 1 +dig 1 +▁لا 1 +ः 1 +お 1 +▁tar 1 +ห 1 +ர 1 +▁ez 1 +▁Az 1 +tă 1 +xe 1 +vé 1 +ś 1 +▁वि 1 +ги 1 +mit 1 +া 1 +ille 1 +▁más 1 +▁23 1 +ње 1 +▁jak 1 +ön 1 +▁σε 1 +ö 1 +▁tot 1 +ці 1 +cht 1 += 1 +▁fu 1 +dag 1 +▁կ 1 +inen 1 +ե 1 +ér 1 +ring 1 +▁ná 1 +ကို 1 +vat 1 +ρα 1 +▁இ 1 +ության 1 +▁© 1 +▁Ve 1 +▁لل 1 +▁ад 1 +ét 1 +▁tan 1 +▁+ 1 +wan 1 +ной 1 +▁uit 1 +дар 1 +▁प्र 1 +။ 1 +ಮ 1 +▁tai 1 +ами 1 +▁ප 1 +ត 1 +су 1 +ves 1 +可以 1 +ár 1 +▁пере 1 +▁ag 1 +use 1 +▁roz 1 +pas 1 +bri 1 +ते 1 +ית 1 +സ 1 +▁як 1 +▁пред 1 +nych 1 +▁без 1 +tul 1 +▁לא 1 +ega 1 +ња 1 +ob 1 +这 1 +ք 1 +▁bet 1 +რ 1 +هم 1 +या 1 +于 1 +很 1 +sse 1 +入 1 +▁alla 1 +▁come 1 +ува 1 +İ 1 +ז 1 +اب 1 +nja 1 +še 1 +や 1 +ef 1 +着 1 +▁dag 1 +▁up 1 +ਤ 1 +▁akan 1 +▁! 1 +▁pla 1 +▁bez 1 +ित 1 +тер 1 +bel 1 +▁ఆ 1 +去 1 +වා 1 +ظ 1 +жа 1 +ret 1 +▁മ 1 +dra 1 +ં 1 +gel 1 +zy 1 +ّ 1 +▁tam 1 +▁Х 1 +但 1 +ति 1 +ار 1 +ಸ್ 1 +▁zo 1 +ให้ 1 +kur 1 +일 1 +ා 1 +ил 1 +ном 1 +合 1 +▁> 1 +方 1 +▁ج 1 ++ 1 +▁far 1 +लाई 1 +▁Par 1 +回 1 +ip 1 +ой 1 +ጠ 1 +tir 1 +▁στο 1 +У 1 +вер 1 +wo 1 +明 1 +hen 1 +leg 1 +პ 1 +▁των 1 +▁все 1 +ী 1 +全 1 +▁sig 1 +one 1 +▁Ка 1 +▁sie 1 +ու 1 +ssa 1 +▁sobre 1 +▁ao 1 +▁بال 1 +18 1 +گ 1 +する 1 +▁Her 1 +mento 1 +▁parte 1 +ሳ 1 +▁Pri 1 +▁ak 1 +sam 1 +ੰ 1 +▁? 1 +▁ਦੇ 1 +ህ 1 +ero 1 +▁program 1 +lí 1 +更 1 +прав 1 +에서 1 +▁pat 1 +ino 1 +ँ 1 +▁Kon 1 +ക്ക 1 +▁2012 1 +▁trong 1 +▁war 1 +fu 1 +▁मा 1 +port 1 +lə 1 +▁plus 1 +▁کې 1 +ർ 1 +▁Ма 1 +同 1 +後 1 +– 1 +ვი 1 +ু 1 +▁sub 1 +ይ 1 +▁người 1 +kal 1 +կ 1 +▁برای 1 +▁gan 1 +шы 1 +ţi 1 +▁Va 1 +▁iš 1 +sia 1 +ო 1 +▁ተ 1 +期 1 +ça 1 +美 1 +▁само 1 +ті 1 +lé 1 +stu 1 +金 1 +ነ 1 +▁On 1 +▁க 1 +▁Ci 1 +▁Pu 1 +▁Ya 1 +ად 1 +▁ada 1 +▁ከ 1 +бу 1 +▁ज 1 +▁გა 1 +▁kad 1 +▁už 1 +▁Ber 1 +ත 1 +ė 1 +ση 1 +rah 1 +vol 1 +tä 1 +▁ка 1 +ela 1 +ೇ 1 +정 1 +une 1 +▁:) 1 +▁26 1 +▁bat 1 +ث 1 +ব 1 +ii 1 +▁Š 1 +nika 1 +ା 1 +ಸ 1 +▁vous 1 +ກ 1 +гу 1 +car 1 +лар 1 +ksi 1 +▁ය 1 +ori 1 +ુ 1 +▁não 1 +▁آن 1 +▁28 1 +ū 1 +ub 1 +▁לה 1 +ຍ 1 +െ 1 +mme 1 +▁entre 1 +!! 1 +ante 1 +▁video 1 +▁bei 1 +ним 1 +dem 1 +▁gra 1 +yn 1 +▁eu 1 +လ 1 +ges 1 +ф 1 +当 1 +▁ud 1 +▁Is 1 +▁Gi 1 +jem 1 +որ 1 +గా 1 +▁کي 1 +dır 1 +သ 1 +▁די 1 +ಿ 1 +یم 1 +▁ett 1 +ই 1 +▁Ab 1 +被 1 +رو 1 +գ 1 +ני 1 +dre 1 +ไป 1 +▁ben 1 +pan 1 +대 1 +▁fer 1 +▁είναι 1 +▁ப 1 +▁przy 1 +▁27 1 +▁cha 1 +▁prze 1 +▁Α 1 +lang 1 +▁40 1 +▁ol 1 +sar 1 +ني 1 +▁ای 1 +ica 1 +ሰ 1 +ство 1 +` 1 +▁он 1 +▁lang 1 +ები 1 +û 1 +▁سر 1 +▁zijn 1 +▁Па 1 +ների 1 +ير 1 +▁له 1 +ить 1 +想 1 +aren 1 +▁má 1 +▁може 1 +ds 1 +ْ 1 +art 1 +క్ 1 +▁Bar 1 +ണ 1 +▁या 1 +ង 1 +ು 1 +ua 1 +公 1 +лен 1 +ία 1 +ବ 1 +ମ 1 +国 1 +א 1 +lich 1 +shi 1 +మ 1 +्य 1 +dd 1 +ani 1 +ความ 1 +ସ 1 +ии 1 +▁Ru 1 +▁seu 1 +ld 1 +และ 1 +vet 1 +kov 1 +rak 1 +ер 1 +▁कि 1 +ør 1 +ώ 1 +vor 1 +ზე 1 +mus 1 +lim 1 +▁blog 1 +▁որ 1 +▁2011 1 +我们 1 +tum 1 +נו 1 +mon 1 +los 1 +म् 1 +த 1 +▁skal 1 +uar 1 +▁کار 1 +ु 1 +▁تا 1 +int 1 +imi 1 +ře 1 +▁Ter 1 +▁că 1 +కు 1 +时 1 +из 1 +jer 1 +rik 1 +թ 1 +▁تر 1 +度 1 +τε 1 +▁under 1 +▁جا 1 +или 1 +▁рас 1 +▁nas 1 +▁это 1 +lor 1 +三 1 +▁bra 1 +ola 1 +ట్ 1 +pri 1 +kel 1 +▁web 1 +ટ 1 +▁kal 1 +ების 1 +40 1 +bb 1 +25 1 +zar 1 +rod 1 +▁will 1 +▁els 1 +▁fin 1 +พ 1 +sku 1 +▁upp 1 +▁ved 1 +lis 1 +lay 1 +жи 1 +▁dis 1 +ava 1 +iga 1 +pl 1 +▁için 1 +▁juga 1 +้า 1 +اس 1 +▁atau 1 +▁عن 1 +▁رو 1 +与 1 +▁نه 1 +μα 1 +cho 1 +لی 1 +▁Да 1 +▁vý 1 +▁Ce 1 +த்த 1 +ባ 1 +get 1 +კ 1 +▁Th 1 +sha 1 +ía 1 +ڻ 1 +▁że 1 +▁4. 1 +nost 1 +▁Я 1 +▁sp 1 +與 1 +mm 1 +են 1 +من 1 +ным 1 +서 1 +▁ré 1 +ರಿ 1 +िक 1 +▁п 1 +cul 1 +ნ 1 +ட 1 +▁ще 1 +▁ph 1 +24 1 +pie 1 +▁online 1 +մ 1 +tti 1 +▁với 1 +ков 1 +రు 1 +sion 1 +bal 1 +ian 1 +จะ 1 +▁До 1 +▁mat 1 +▁cum 1 +ща 1 +ix 1 +؟ 1 +ੇ 1 +tó 1 +לי 1 +ప 1 +▁અ 1 +jan 1 +lä 1 +ity 1 +▁Der 1 +ግ 1 +▁sind 1 +tam 1 +lje 1 +org 1 +▁Σ 1 +ୀ 1 +学 1 +tia 1 +det 1 +्या 1 +hod 1 +ces 1 +▁Hi 1 +▁سو 1 +ատ 1 +Л 1 +位 1 +pis 1 +▁pr 1 +." 1 +▁б 1 +Н 1 +后 1 +▁aus 1 +isa 1 +dia 1 +▁ने 1 +ತ 1 +▁mil 1 +τ 1 +▁إ 1 +ல 1 +ത് 1 +▁Ad 1 +нь 1 +▁us 1 +水 1 +cio 1 +▁دی 1 +», 1 +نى 1 +ando 1 +illa 1 +ც 1 +Q 1 +▁aj 1 +щи 1 +▁opp 1 +里 1 +▁më 1 +ມ 1 +▁ah 1 +tura 1 +▁съ 1 +ಗೆ 1 +ڪ 1 +ư 1 +тай 1 +▁роз 1 +▁Ф 1 +ро 1 +道 1 +▁الع 1 +gal 1 +fin 1 +କ 1 +▁kita 1 +zer 1 +▁just 1 +cs 1 +▁era 1 +意 1 +pp 1 +ün 1 +▁hy 1 +imo 1 +વ 1 +ell 1 +ato 1 +ట 1 +į 1 +vas 1 +ክ 1 +▁دو 1 +ಾ 1 +▁nä 1 +▁Car 1 +해 1 +ige 1 +ť 1 +아 1 +ון 1 +▁Har 1 +க் 1 +▁ഇ 1 +til 1 +ms 1 +iste 1 +». 1 +▁ಮ 1 +ు 1 +கள் 1 +▁seg 1 +ख 1 +το 1 +қ 1 +iden 1 +isti 1 +장 1 +:00 1 +تی 1 +aya 1 +将 1 +▁bal 1 +ación 1 +zin 1 +gra 1 +▁ме 1 +ない 1 +一个 1 +▁2010 1 +tori 1 +يد 1 +ט 1 +зна 1 +▁but 1 +dal 1 +தி 1 +ться 1 +▁ven 1 +য় 1 +uh 1 +ish 1 +ει 1 +ری 1 +ella 1 +ቅ 1 +▁his 1 +പ 1 +नी 1 +▁qo 1 +end 1 +ער 1 +▁Ш 1 +ம 1 +주 1 +ные 1 +ീ 1 +ତ 1 +▁sunt 1 +▁Sch 1 +க்க 1 +▁آهي 1 +რი 1 +ว่า 1 +ká 1 +ి 1 +ま 1 +▁esta 1 +જ 1 +ví 1 +ран 1 +▁kat 1 +· 1 +▁θα 1 +▁են 1 +ε 1 +▁ग 1 +▁Tra 1 +чы 1 +▁هو 1 +ły 1 +▁सा 1 +יה 1 +amente 1 +рт 1 +▁saya 1 +▁Ε 1 +▁dal 1 +å 1 +än 1 +ರು 1 +یت 1 +stan 1 +gin 1 +day 1 +ะ 1 +作 1 +lja 1 +ər 1 +ာ 1 +dik 1 +φ 1 +& 1 +▁আ 1 +15 1 +tha 1 +tions 1 +▁San 1 +▁Fi 1 +身 1 +ën 1 +ction 1 +مان 1 +ული 1 +き 1 +բ 1 +iko 1 +ade 1 +ող 1 +rà 1 +ін 1 +▁lä 1 +ев 1 +▁ச 1 +dur 1 +▁це 1 +sy 1 +lama 1 +ement 1 +ღ 1 +else 1 +▁Den 1 +ndi 1 +▁кон 1 +원 1 +中国 1 +ೆ 1 +line 1 +ല് 1 +▁그 1 +▁ik 1 +vy 1 +ງ 1 +ich 1 +요 1 +ный 1 +▁հ 1 +tzen 1 +▁नि 1 +ช 1 +13 1 +▁Pi 1 +▁бо 1 +her 1 +▁ли 1 +《 1 +ված 1 +tele 1 +ල් 1 +စ 1 +ٽ 1 +ি 1 +፣ 1 +▁στην 1 +▁Pra 1 +ను 1 +ន 1 +ፍ 1 +▁შე 1 +》 1 +▁ර 1 +▁29 1 +он 1 +hr 1 +ته 1 +دى 1 +یر 1 +文 1 +ex 1 +▁Val 1 +ု 1 +▁ama 1 +▁hai 1 +▁нас 1 +eb 1 +▁” 1 +▁vis 1 +hy 1 +상 1 +▁ook 1 +▁τον 1 +▁जा 1 +▁Dan 1 +▁چې 1 +드 1 +issa 1 +▁ಕ 1 +ամ 1 +特 1 +▁iyo 1 +గ 1 +ే 1 +از 1 +OS 1 +อ 1 +▁Ко 1 +በ 1 +那 1 +ген 1 +▁auto 1 +ност 1 +ਾਂ 1 +ման 1 +工 1 +▁pres 1 +으로 1 +හ 1 +▁internet 1 +נה 1 +ပါ 1 +▁år 1 +rí 1 +▁ни 1 +ние 1 +iri 1 +and 1 +公司 1 +▁כ 1 +* 1 +wie 1 +▁зна 1 +ών 1 +▁му 1 +ো 1 +β 1 +ден 1 +ep 1 +성 1 +لو 1 +ού 1 +▁sol 1 +ده 1 +ማ 1 +▁dig 1 +▁sus 1 +תי 1 +理 1 +вод 1 +▁ed 1 +▁cre 1 +able 1 +ido 1 +▁ਸ 1 +▁via 1 +ano 1 +▁چ 1 +▁ይ 1 +este 1 +jar 1 +做 1 +ман 1 +gas 1 +利 1 +▁more 1 +က္ 1 +ル 1 +▁Os 1 +▁bil 1 +mb 1 +ps 1 +lum 1 +2018 1 +ನ್ 1 +دار 1 +დი 1 +ፈ 1 +gre 1 +▁ons 1 +ரி 1 +▁हैं 1 +ego 1 +له 1 +▁Hu 1 +лық 1 +▁from 1 +▁Tr 1 +jas 1 +▁ह 1 +rar 1 +對 1 +сан 1 +▁ز 1 +▁St 1 +ლი 1 +นี้ 1 +▁· 1 +mek 1 +ප 1 +encia 1 +ore 1 +▁പ 1 +ത്ത 1 +ların 1 +17 1 +ür 1 +▁niet 1 +num 1 +തി 1 +br 1 +▁Π 1 +▁spo 1 +▁mü 1 +ଲ 1 +tto 1 +▁व 1 +体 1 +czy 1 +ses 1 +ій 1 +▁tem 1 +gt 1 +λα 1 +vad 1 +dom 1 +ائ 1 +▁j 1 +▁भ 1 +oni 1 +▁під 1 +▁zá 1 +λ 1 +ија 1 +ay 1 +inin 1 +dat 1 +xa 1 +ច 1 +์ 1 +تا 1 +ır 1 +重 1 +ити 1 +ጥ 1 +▁π 1 +iv 1 +nem 1 +king 1 +▁stra 1 +▁Ж 1 +个 1 +pre 1 +ら 1 +起 1 +ൂ 1 +16 1 +▁Et 1 +ира 1 +ган 1 +▁Ak 1 +ora 1 +وم 1 +จ 1 +τη 1 +adh 1 +▁ස 1 +▁super 1 +اف 1 +▁has 1 +言 1 +adi 1 +pad 1 +▁werden 1 +AR 1 +ള 1 +▁Dr 1 +ция 1 +nica 1 +jet 1 +▁إلى 1 +эн 1 +ٹ 1 +▁ker 1 +▁τους 1 +ही 1 +nti 1 +感 1 +ice 1 +ови 1 +ló 1 +ord 1 +ვე 1 +▁რომ 1 +▁Ph 1 +vä 1 +ком 1 +▁ಆ 1 +่ 1 +ert 1 +рі 1 +ват 1 +rij 1 +情 1 +aka 1 +ON 1 +тан 1 +▁sto 1 +▁सं 1 +ா 1 +uma 1 +▁κ 1 +▁ক 1 +▁ம 1 +▁Та 1 +Х 1 +ھ 1 +ود 1 +ạ 1 +vr 1 +ble 1 +▁خود 1 +▁60 1 +ौ 1 +民 1 +apa 1 +▁wir 1 +แ 1 +бы 1 +പ്പ 1 +▁mem 1 +ೀ 1 +ご 1 +▁reg 1 +ી 1 +ვა 1 +ਪ 1 +▁những 1 +ň 1 +21 1 +▁may 1 +ё 1 +רי 1 +ക് 1 +▁нь 1 +▁bij 1 +ู 1 +set 1 +た 1 +ena 1 +გ 1 +▁þ 1 +ခ 1 +لي 1 +ក 1 +▁fo 1 +anta 1 +次 1 +ré 1 +sor 1 +бе 1 +rd 1 +▁Am 1 +14 1 +▁ek 1 +ներ 1 +ß 1 +於 1 +ວ 1 +▁ח 1 +दा 1 +라 1 +ף 1 +▁पा 1 +ุ 1 +▁При 1 +▁Но 1 +▁Kar 1 +ั 1 +ғы 1 +▁pun 1 +ా 1 +มี 1 +▁Com 1 +した 1 +ก็ 1 +▁At 1 +ෙ 1 +▁tek 1 +▁ಸ 1 +▁жа 1 +保 1 +দ 1 +하는 1 +ная 1 +iza 1 +▁olan 1 +▁Por 1 +▁த 1 +ham 1 +▁qua 1 +wer 1 +ì 1 +수 1 +点 1 +መ 1 +ime 1 +qa 1 +भ 1 +▁त 1 +რე 1 +av 1 +▁ს 1 +▁ਦੀ 1 +▁Facebook 1 +ности 1 +ಲ್ 1 +ją 1 +▁sono 1 +lak 1 +కి 1 +▁við 1 +工作 1 +اق 1 +eta 1 +口 1 +▁koji 1 +kk 1 +ಗ 1 +她 1 +▁oder 1 +▁31 1 +hal 1 +▁Ми 1 +ች 1 +ě 1 +ел 1 +▁ind 1 +ਟ 1 +▁Про 1 +წ 1 +▁आहे 1 +ულ 1 +▁ਹੈ 1 +▁adalah 1 +را 1 +加 1 +ዳ 1 +၊ 1 +IS 1 +▁interes 1 +相 1 +向 1 +för 1 +▁ty 1 +ره 1 +从 1 +iki 1 +▁ur 1 +бра 1 +▁പ്ര 1 +▁had 1 +회 1 +lon 1 +டி 1 +▁Н 1 +lie 1 +▁dy 1 +لى 1 +if 1 +તા 1 +▁če 1 +ás 1 +▁Fe 1 +ተ 1 +idade 1 +▁එ 1 +信 1 +nut 1 +▁الح 1 +ux 1 +med 1 +bh 1 +▁ham 1 +▁kepada 1 +전 1 +ပ 1 +ಟ 1 +udi 1 +▁tə 1 +▁بعد 1 +чу 1 +▁është 1 +eren 1 +▁전 1 +กับ 1 +▁الله 1 +pat 1 +▁maar 1 +ад 1 +lam 1 +सा 1 +sal 1 +war 1 +։ 1 +раз 1 +tö 1 +▁DE 1 +iva 1 +ので 1 +sis 1 +▁trans 1 +ande 1 +put 1 +▁سال 1 +▁най 1 +dro 1 +▁nav 1 +▁estas 1 +ୋ 1 +qu 1 +gun 1 +ර් 1 +▁tal 1 +▁અને 1 +fen 1 +▁@ 1 +▁Kan 1 +▁res 1 +ές 1 +▁über 1 +yar 1 +ਚ 1 +пер 1 +▁parti 1 +со 1 +ପ 1 +aan 1 +或 1 +▁Or 1 +▁Q 1 +▁đã 1 +▁مو 1 +▁وي 1 +ще 1 +ქ 1 +US 1 +lli 1 +ี 1 +log 1 +▁τη 1 +機 1 +▁Ob 1 +▁х 1 +ಂ 1 +via 1 +â 1 +ол 1 +▁ఇ 1 +lit 1 +长 1 +▁Э 1 +тор 1 +gang 1 +▁voi 1 +oli 1 +prav 1 +tive 1 +▁It 1 +▁hem 1 +ট 1 +డ 1 +제 1 +▁ye 1 +ன 1 +esti 1 +▁pan 1 +वि 1 +idad 1 +▁જ 1 +▁ك 1 +▁และ 1 +▁2009 1 +יר 1 +ča 1 +内 1 +▁dass 1 +▁მი 1 +▁få 1 +▁бар 1 +▁tä 1 +ði 1 +mmer 1 +teri 1 +!!! 1 +▁out 1 +არ 1 +▁ק 1 +ija 1 +nta 1 +▁వి 1 +▁Ви 1 +▁samo 1 +ການ 1 +트 1 +Е 1 +चा 1 +վ 1 +يل 1 +▁Kom 1 +ът 1 +nic 1 +ted 1 +ద 1 +ña 1 +င္ 1 +▁Mas 1 +ется 1 +動 1 +▁nach 1 +gna 1 +▁også 1 +▁ал 1 +比 1 +ence 1 +ात 1 +▁stor 1 +ség 1 +▁time 1 +iem 1 +▁기 1 +କୁ 1 +ου 1 +▁sk 1 +szt 1 +usi 1 +лю 1 +▁उ 1 +nan 1 +ү 1 +շ 1 +რო 1 +▁[...] 1 +tá 1 +み 1 +▁hier 1 +▁unha 1 +nud 1 +▁thể 1 +구 1 +ità 1 +یں 1 +ဆ 1 +bit 1 +自己 1 +ლა 1 +▁www 1 +ott 1 +ву 1 +und 1 +▁xa 1 +lia 1 +▁vin 1 +▁mor 1 +▁ہو 1 +▁wo 1 +女 1 +vit 1 +▁sua 1 +nji 1 +dis 1 +▁نا 1 +প 1 +▁Հ 1 +ნი 1 +can 1 +pet 1 +つ 1 +ጋ 1 +▁э 1 +.000 1 +▁කර 1 +աս 1 +ít 1 +nge 1 +ග 1 +▁san 1 +န 1 +ப் 1 +▁Ба 1 +▁ban 1 +sed 1 +ike 1 +▁ile 1 +▁zna 1 +イ 1 +raz 1 +▁yer 1 +▁Ein 1 +ും 1 +стан 1 +rov 1 +▁Sam 1 +▁problem 1 +▁jou 1 +מי 1 +क्ष 1 +60 1 +ੱ 1 +▁orang 1 +发 1 +க்கு 1 +▁క 1 +form 1 +uti 1 +▁არ 1 +inta 1 +nın 1 +να 1 +yd 1 +став 1 +▁Um 1 +各 1 +चे 1 +▁cap 1 +تر 1 +თა 1 +▁İ 1 +▁വി 1 +ника 1 +ans 1 +stro 1 +22 1 +量 1 +安 1 +า 1 +▁beste 1 +▁está 1 +ดี 1 +ier 1 +یه 1 +▁qa 1 +yi 1 +▁foto 1 +ె 1 +▁Η 1 +ligt 1 +▁5. 1 +ಕ್ 1 +้ 1 +▁ਪ 1 +रे 1 +сі 1 +ਬ 1 +ਦ 1 +ит 1 +И 1 +▁ایک 1 +dz 1 +І 1 +▁mes 1 +▁để 1 +▁bisa 1 +▁ris 1 +正 1 +Ma 1 +mail 1 +▁және 1 +▁الا 1 +् 1 +▁gre 1 +age 1 +ши 1 +র্ 1 +▁بھی 1 +ос 1 +▁nuk 1 +Ա 1 +дер 1 +mä 1 +▁teh 1 +▁hor 1 +kla 1 +vid 1 +▁ö 1 +▁ص 1 +כ 1 +પ 1 +▁الن 1 +ies 1 +ää 1 +ੀ 1 +动 1 +بر 1 +δ 1 +kke 1 +की 1 +లి 1 +▁То 1 +▁የሚ 1 +商 1 +▁І 1 +ከ 1 +▁sve 1 +80 1 +mor 1 +jal 1 +пи 1 +▁સ 1 +▁että 1 +ந்த 1 +ડ 1 +▁bli 1 +▁مر 1 +ಹ 1 +▁ди 1 +▁ס 1 +ак 1 +rk 1 +ア 1 +rie 1 +▁kann 1 +▁වි 1 +見 1 +▁sit 1 +σε 1 +ଳ 1 +나 1 +তে 1 +ved 1 +AN 1 +ləri 1 +▁cor 1 +ийг 1 +ës 1 +色 1 +ას 1 +វ 1 +ovi 1 +တာ 1 +mpa 1 +اه 1 +રી 1 +▁bis 1 +▁mereka 1 +zioni 1 +ээ 1 +ុ 1 +▁più 1 +ீ 1 +কে 1 +kus 1 +ெ 1 +är 1 +lega 1 +▁ж 1 +▁ამ 1 +pt 1 +ados 1 +www 1 +2017 1 +▁Во 1 +▁Ա 1 +▁یک 1 +με 1 +▁waar 1 +▁nel 1 +ια 1 +▁வ 1 +יק 1 +ną 1 +uni 1 +τι 1 +З 1 +ઓ 1 +eti 1 +ສ 1 +ම් 1 +▁jy 1 +▁Op 1 +sä 1 +мет 1 +gos 1 +ság 1 +های 1 +▁cal 1 +▁nh 1 +▁nam 1 +ым 1 +> 1 +дин 1 +՝ 1 +ไม่ 1 +▁mig 1 +щ 1 +نی 1 +ๆ 1 +ró 1 +リ 1 +ບ 1 +▁informa 1 +ထ 1 +▁mot 1 +▁sú 1 +▁ම 1 +િ 1 +ою 1 +च्या 1 +▁anda 1 +ク 1 +จาก 1 +ця 1 +再 1 +ებს 1 +▁ක 1 +ete 1 +bir 1 +▁ಬ 1 +ım 1 +nto 1 +ცი 1 +▁мен 1 +▁بی 1 +angan 1 +99 1 +१ 1 +通 1 +▁she 1 +при 1 +就是 1 +ৰ 1 +් 1 +▁final 1 +▁گ 1 +tā 1 +نے 1 +ხ 1 +all 1 +▁ili 1 +▁ਨੂੰ 1 +路 1 +▁ଅ 1 +長 1 +와 1 +tr 1 +▁ہیں 1 +▁dr 1 +ध 1 +पा 1 +cji 1 +្ 1 +▁Para 1 +રા 1 +nä 1 +放 1 +hir 1 +开 1 +ných 1 +這 1 +ρε 1 +أ 1 +ിയ 1 +其 1 +ín 1 +▁च 1 +平 1 +نىڭ 1 +мер 1 +tiva 1 +▁sed 1 +נ 1 +ія 1 +IN 1 +23 1 +ץ 1 +vod 1 +▁gal 1 +nden 1 +తి 1 +යේ 1 +▁ги 1 +▁(19 1 +▁don 1 +ance 1 +▁jau 1 +▁meng 1 +▁ilə 1 +ई 1 +▁Со 1 +ሉ 1 +▁ע 1 +ศ 1 +llo 1 +▁pol 1 +▁Tur 1 +▁ја 1 +國 1 +동 1 +▁വ 1 +▁2008 1 +jí 1 +ப 1 +▁δεν 1 +lov 1 +▁air 1 +▁ද 1 +▁қа 1 +نگ 1 +立 1 +▁gr 1 +AL 1 +त् 1 +नि 1 +zna 1 +▁uu 1 +bet 1 +ρά 1 +ტი 1 +打 1 +▁avec 1 +▁st 1 +海 1 +% 1 +об 1 +нд 1 +▁т 1 +▁mà 1 +▁ஆ 1 +▁بن 1 +ங்க 1 +lus 1 +вы 1 +・ 1 +يو 1 +▁ප් 1 +▁Մ 1 +ří 1 +開 1 +▁katika 1 +یا 1 +▁پی 1 +▁này 1 +rom 1 +▁poz 1 +▁fre 1 +با 1 +નો 1 +قا 1 +ء 1 +nce 1 +unk 1 +usta 1 +hin 1 +▁projekt 1 +tua 1 +▁pak 1 +lom 1 +OR 1 +▁یا 1 +ної 1 +vil 1 +▁tik 1 +ơ 1 +十 1 +vě 1 +ologi 1 +cat 1 +ży 1 +зу 1 +う 1 +bli 1 +▁ક 1 +▁επι 1 +ություն 1 +▁ça 1 +▁oleh 1 +sze 1 +▁എ 1 +▁ہے۔ 1 +▁http 1 +่า 1 +nal 1 +эл 1 +stru 1 +▁bor 1 +ર્ 1 +лан 1 +▁test 1 +부 1 +ico 1 +ени 1 +ך 1 +ഹ 1 +▁anti 1 +▁سی 1 +най 1 +ای 1 +dam 1 +სა 1 +elt 1 +▁như 1 +▁nur 1 +န္ 1 +斯 1 +▁cri 1 +ої 1 +şi 1 +ලා 1 +TI 1 +ń 1 +eli 1 +ദ 1 +▁ε 1 +far 1 +▁contra 1 +▁ole 1 +ű 1 +lige 1 +▁alt 1 +▁Pen 1 +▁сам 1 +▁Κ 1 +ър 1 +▁Wi 1 +пе 1 +ಡ 1 +тра 1 +▁ఎ 1 +ເ 1 +রা 1 +화 1 +por 1 +▁kes 1 +jú 1 +▁með 1 +▁yo 1 +把 1 +నే 1 +ወ 1 +ு 1 +▁gel 1 +lem 1 +▁സ 1 +فت 1 +ട്ട 1 +品 1 +вен 1 +ют 1 +▁social 1 +ச 1 +ien 1 +olo 1 +стра 1 +▁% 1 +▁भी 1 +▁ਅ 1 +ун 1 +01 1 +▁Qu 1 +κα 1 +ਾ 1 +▁real 1 +nk 1 +▁vend 1 +게 1 +nne 1 +▁προ 1 +还 1 +▁dell 1 +กัน 1 +▁inn 1 +ії 1 +▁opera 1 +▁след 1 +▁ഒരു 1 +▁Ny 1 +ष 1 +▁like 1 +原 1 +tif 1 +sjon 1 +лер 1 +▁ଆ 1 +▁ପ 1 +使用 1 +ther 1 +انی 1 +▁nad 1 +▁מה 1 +ካ 1 +ـ 1 +ೋ 1 +▁உ 1 +▁about 1 +ଙ୍କ 1 +цы 1 +ೂ 1 +tten 1 +▁ќе 1 +▁ann 1 +...... 1 +▁мы 1 +mise 1 +ral 1 +▁kā 1 +öl 1 +ór 1 +ssen 1 +▁Jeg 1 +nner 1 +▁noch 1 +rem 1 +▁mod 1 +fici 1 +sie 1 +▁लिए 1 +bas 1 +▁ok 1 +ջ 1 +ા 1 +rä 1 +▁hay 1 +間 1 +ից 1 +ала 1 +▁Od 1 +ур 1 +▁spa 1 +ног 1 +ute 1 +ек 1 +▁će 1 +llen 1 +area 1 +机 1 +cre 1 +వా 1 +chen 1 +αρ 1 +ավ 1 +▁News 1 +্য 1 +gon 1 +▁ор 1 +zor 1 +ผู้ 1 +하 1 +ា 1 +個 1 +يم 1 +ciones 1 +cí 1 +ã 1 +▁Ο 1 +ର୍ 1 +▁kri 1 +dı 1 +દ 1 +ෝ 1 +▁ለ 1 +▁ඒ 1 +▁வி 1 +▁være 1 +▁οι 1 +യും 1 +▁سا 1 +实 1 +▁الس 1 +ತಿ 1 +zio 1 +▁ве 1 +先 1 +ый 1 +ది 1 +▁მე 1 +وی 1 +▁స 1 +ības 1 +ಣ 1 +ိ 1 +▁gün 1 +28 1 +山 1 +enie 1 +այ 1 +டு 1 +▁који 1 +ете 1 +лік 1 +▁iş 1 +ஸ் 1 +sim 1 +ação 1 +▁ani 1 +▁Des 1 +▁hel 1 +ති 1 +▁شده 1 +қа 1 +cion 1 +නා 1 +▁غ 1 +▁või 1 +ຫ 1 +▁.. 1 +үү 1 +ому 1 +▁amin 1 +uch 1 +▁τις 1 +▁ത 1 +ções 1 +шу 1 +ική 1 +▁شد 1 +star 1 +▁пры 1 +thi 1 +▁Tak 1 +▁Les 1 +ො 1 +אָ 1 +dio 1 +▁one 1 +हा 1 +cher 1 +ht 1 +▁top 1 +gor 1 +ება 1 +▁Sp 1 +രി 1 +Ш 1 +면 1 +ug 1 +▁הא 1 +เ 1 +▁sé 1 +lık 1 +▁פ 1 +▁એ 1 +說 1 +λε 1 +▁rep 1 +ੋ 1 +▁sch 1 +ப்ப 1 +స 1 +▁bien 1 +▁보 1 +ց 1 +▁sou 1 +▁kre 1 +又 1 +ış 1 +ую 1 +tim 1 +ય 1 +▁dating 1 +ese 1 +▁مس 1 +ée 1 +▁ప 1 +▁hun 1 +▁(2) 1 +wr 1 +ლ 1 +of 1 +▁bin 1 +▁его 1 +▁foi 1 +使 1 +▁가 1 +▁kui 1 +sp 1 +▁še 1 +දු 1 +ље 1 +▁Anda 1 +光 1 +▁fost 1 +▁edi 1 +dere 1 +▁над 1 +▁dei 1 +про 1 +▁200 1 +▁kot 1 +った 1 +▁ந 1 +ரு 1 +dən 1 +という 1 +ungen 1 +ូ 1 +▁ఈ 1 +▁see 1 +the 1 +南 1 +▁הש 1 +▁ee 1 +▁dapat 1 +ອ 1 +mé 1 +ल् 1 +bie 1 +că 1 +▁ڪ 1 +▁komp 1 +ct 1 +▁पु 1 +▁telefon 1 +RA 1 +نه 1 +▁km 1 +▁δια 1 +元 1 +ých 1 +ight 1 +▁š 1 +▁Cu 1 +格 1 +డి 1 +국 1 +著 1 +pä 1 +ין 1 +▁التي 1 +▁god 1 +ә 1 +▁sama 1 +хи 1 +ില് 1 +hl 1 +ρο 1 +▁दि 1 +▁като 1 +će 1 +რა 1 +▁ಇ 1 +ලි 1 +sty 1 +▁ра 1 +ké 1 +hon 1 +▁أو 1 +▁έ 1 +ಗಳು 1 +老 1 +ering 1 +fan 1 +ší 1 +提供 1 +▁इस 1 +▁મ 1 +mě 1 +▁tin 1 +▁site 1 +08 1 +▁grup 1 +ային 1 +εί 1 +▁vid 1 +没有 1 +ွ 1 +▁Ре 1 +थ 1 +ან 1 +▁mé 1 +ី 1 +ाय 1 +▁bạn 1 +skap 1 +້ 1 +zia 1 +▁کرد 1 +▁Мо 1 +▁prin 1 +amo 1 +రా 1 +cija 1 +із 1 +wal 1 +教 1 +ове 1 +erne 1 +stav 1 +ско 1 +ರೆ 1 +យ 1 +سی 1 +▁මේ 1 +▁וה 1 +學 1 +ып 1 +▁απο 1 +▁zi 1 +▁put 1 +▁person 1 +pak 1 +нов 1 +▁Ek 1 +stre 1 +در 1 +rang 1 +ив 1 +से 1 +▁Ц 1 +inde 1 +▁Nam 1 +në 1 +▁Са 1 +mun 1 +lag 1 +▁Те 1 +tica 1 +кс 1 +적 1 +્ 1 +אַ 1 +▁hand 1 +คน 1 +ding 1 +gue 1 +دن 1 +فر 1 +▁час 1 +تي 1 +یل 1 +70 1 +iť 1 +09 1 +ann 1 +▁α 1 +vir 1 +esta 1 +▁gratis 1 +lü 1 +▁બ 1 +ї 1 +▁nog 1 +▁Sta 1 +▁kommer 1 +iye 1 +sso 1 +tom 1 +▁아 1 +..... 1 +▁dla 1 +▁part 1 +دی 1 +siya 1 +jä 1 +ները 1 +▁их 1 +▁də 1 +表 1 +無 1 +ळ 1 +▁Can 1 +تى 1 +▁یہ 1 +պ 1 +dha 1 +वर 1 +▁බ 1 +▁श 1 +▁kap 1 +ασ 1 +mbi 1 +nov 1 +년 1 +▁lebih 1 +mə 1 +▁ос 1 +台 1 +orum 1 +aga 1 +ನೆ 1 +可能 1 +▁Ç 1 +sı 1 +rs 1 +▁mon 1 +▁efter 1 +վել 1 +pr 1 +ستان 1 +өн 1 +▁khi 1 +▁pero 1 +બ 1 +ළ 1 +uf 1 +場 1 +▁quan 1 +▁wi 1 +▁бы 1 +ката 1 +гийн 1 +රි 1 +ടി 1 +▁sti 1 +西 1 +mine 1 +tí 1 +ζ 1 +ικό 1 +клад 1 +▁बा 1 +▁Aus 1 +▁մ 1 +umi 1 +▁કે 1 +asta 1 +ուն 1 +▁saat 1 +▁ста 1 +ons 1 +▁dra 1 +▁net 1 +ù 1 +каз 1 +αν 1 +▁kuwa 1 +房 1 +▁telah 1 +▁Google 1 +將 1 +ων 1 +uka 1 +โ 1 +▁bes 1 +ær 1 +ەت 1 +zel 1 +▁spe 1 +ey 1 +▁jä 1 +▁Das 1 +車 1 +▁نہیں 1 +?” 1 +▁sm 1 +90 1 +ド 1 +ಪ 1 +わ 1 +소 1 +ගේ 1 +让 1 +▁làm 1 +▁ਕ 1 +dit 1 +লে 1 +26 1 +лы 1 +бор 1 +idh 1 +▁Cha 1 +ॉ 1 +rzy 1 +эр 1 +යක් 1 +▁ó 1 +▁čas 1 +ੂ 1 +רו 1 +kö 1 +▁הת 1 +कर 1 +▁како 1 +τά 1 +▁хо 1 +තු 1 +業 1 +ill 1 +के 1 +▁ג 1 +enia 1 +▁нај 1 +▁Ze 1 +▁Ö 1 +には 1 +ରା 1 +その 1 +流 1 +టి 1 +▁Á 1 +▁Em 1 +tic 1 +ून 1 +iku 1 +ых 1 +። 1 +▁کیا 1 +্ 1 +过 1 +▁Sy 1 +וי 1 +али 1 +ட் 1 +ელ 1 +▁Č 1 +▁they 1 +mbo 1 +ே 1 +数 1 +pon 1 +▁الإ 1 +දා 1 +▁Ste 1 +▁mun 1 +ије 1 +ында 1 +▁чи 1 +▁Af 1 +යා 1 +্যা 1 +▁မ 1 +ທ 1 +▁apa 1 +led 1 +يت 1 +ით 1 +pla 1 +▁ger 1 +లా 1 +▁aku 1 +▁są 1 +ydd 1 +нес 1 +▁सु 1 +“, 1 +स्त 1 +בי 1 +▁cm 1 +▁lui 1 +গ 1 +ξ 1 +▁från 1 +▁එක 1 +lek 1 +): 1 +cije 1 +în 1 +近 1 +代 1 +▁ele 1 +େ 1 +ort 1 +টি 1 +▁best 1 +▁ও 1 +▁say 1 +ರಾ 1 +▁công 1 +▁გამო 1 +ڑ 1 +oi 1 +▁daha 1 +ト 1 +եց 1 +▁много 1 +▁får 1 +ture 1 +col 1 +치 1 +ako 1 +▁ч 1 +pra 1 +pul 1 +දි 1 +收 1 +سم 1 +EN 1 +uda 1 +аль 1 +ả 1 +▁må 1 +하고 1 +ए 1 +ដ 1 +▁tempo 1 +tung 1 +▁nuo 1 +ування 1 +▁Ji 1 +▁wird 1 +▁đến 1 +만 1 +ენ 1 +sent 1 +▁É 1 +▁xwe 1 +AT 1 +さ 1 +27 1 +此 1 +▁dha 1 +こと 1 +▁უ 1 +▁এ 1 +вар 1 +amento 1 +點 1 +太 1 +աց 1 +▁hvor 1 +29 1 +igen 1 +voj 1 +tje 1 +rri 1 +bol 1 +yen 1 +▁door 1 +▁ప్ర 1 +▁delle 1 +ัน 1 +ି 1 +▁boleh 1 +ਗ 1 +වි 1 +▁време 1 +тен 1 +世界 1 +jel 1 +▁Ex 1 +ém 1 +▁మ 1 +▁مح 1 +▁ಹ 1 +ਣ 1 +▁về 1 +▁tie 1 +gli 1 +▁які 1 +berg 1 +cra 1 +▁بود 1 +▁Dar 1 +лог 1 +rg 1 +ဲ 1 +ins 1 +tud 1 +▁kul 1 +▁vä 1 +פי 1 +ነት 1 +ூ 1 +ղ 1 +၀ 1 +år 1 +לו 1 +▁tun 1 +▁ד 1 +▁ту 1 +aja 1 +▁Ме 1 +nog 1 +nici 1 +▁TV 1 +ิ 1 +▁උ 1 +pur 1 +▁či 1 +alt 1 +至 1 +iu 1 +▁१ 1 +▁ማ 1 +ius 1 +ാണ് 1 +▁Ang 1 +ции 1 +मान 1 +▁lại 1 +▁bak 1 +▁més 1 +▁fyrir 1 +▁6. 1 +θε 1 +λι 1 +▁ima 1 +ím 1 +dus 1 +ಗಳ 1 +ić 1 +▁app 1 +▁ಪ್ರ 1 +tz 1 +tika 1 +ע 1 +ગ 1 +kun 1 +ட்ட 1 +ệ 1 +ძ 1 +▁الف 1 +don 1 +書 1 +ਹ 1 +▁Gra 1 +kup 1 +انه 1 +лас 1 +▁einen 1 +nou 1 +nun 1 +ლო 1 +▁= 1 +tés 1 +ismo 1 +ຄ 1 +kul 1 +ណ 1 +itat 1 +dzie 1 +RI 1 +ings 1 +▁tudi 1 +می 1 +sco 1 +dien 1 +▁Mer 1 +ئي 1 +▁bel 1 +ley 1 +▁им 1 +rán 1 +dri 1 +▁prí 1 +▁ак 1 +▁lei 1 +ข 1 +▁cel 1 +stup 1 +▁vez 1 +管理 1 +ақ 1 +رب 1 +ET 1 +▁ανα 1 +maan 1 +цион 1 +▁Де 1 +ред 1 +▁sport 1 +ulu 1 +▁sha 1 +гүй 1 +taj 1 +त्र 1 +▁fram 1 +bí 1 +▁എന്ന 1 +essa 1 +Ы 1 +cen 1 +ër 1 +▁주 1 +രാ 1 +ük 1 +▁cũng 1 +ging 1 +pit 1 +ole 1 +առ 1 +▁Ч 1 +▁► 1 +som 1 +ക്ഷ 1 +球 1 +集 1 +ਿਆ 1 +▁તે 1 +င္း 1 +ске 1 +ина 1 +▁ਮ 1 +ula 1 +dá 1 +ған 1 +▁سي 1 +Ε 1 +rer 1 +aba 1 +▁Home 1 +ede 1 +▁mir 1 +unt 1 +ның 1 +ฟ 1 +ං 1 +jes 1 +טי 1 +ահ 1 +▁तो 1 +02 1 +eva 1 +لار 1 +ີ 1 +▁euro 1 +ტ 1 +▁ont 1 +juk 1 +07 1 +ລ 1 +kä 1 +▁start 1 +▁dom 1 +แล้ว 1 +uz 1 +▁ک 1 +▁My 1 +▁እ 1 +▁thu 1 +isten 1 +할 1 +ав 1 +▁କ 1 +▁Sz 1 +റ്റ 1 +▁Pas 1 +யா 1 +rë 1 +▁ev 1 +κο 1 +শ 1 +NA 1 +▁ха 1 +פו 1 +▁ඇ 1 +▁All 1 +ंग 1 +क् 1 +bul 1 +vers 1 +▁aber 1 +▁anche 1 +heid 1 +सी 1 +स् 1 +過 1 +ൻ 1 +常 1 +▁star 1 +ਸ਼ 1 +ες 1 +▁Μ 1 +খ 1 +غا 1 +ቱ 1 +rad 1 +stä 1 +▁haben 1 +ką 1 +RO 1 +ət 1 +▁:: 1 +▁వ 1 +ဝ 1 +пад 1 +მე 1 +фе 1 +inte 1 +▁fun 1 +ρι 1 +▁col 1 +bes 1 +tare 1 +ında 1 +eiro 1 +▁Chi 1 +▁الج 1 +▁ए 1 +接 1 +nice 1 +▁satu 1 +ће 1 +फ 1 +▁đó 1 +35 1 +ER 1 +vez 1 +LE 1 +bin 1 +▁Om 1 +rī 1 +▁fri 1 +qi 1 +▁todo 1 +第 1 +ls 1 +▁ئا 1 +եւ 1 +ян 1 +▁ಪ 1 +ไ 1 +ương 1 +▁पनि 1 +▁συν 1 +լ 1 +lad 1 +今 1 +受 1 +取 1 +▁gw 1 +▁ඉ 1 +stitu 1 +▁Bir 1 +▁لم 1 +보 1 +° 1 +▁Het 1 +店 1 +ੁ 1 +▁ه 1 +ラ 1 +ría 1 +ную 1 +少 1 +ive 1 +टी 1 +制 1 +▁وت 1 +নে 1 +না 1 +tok 1 +▁شود 1 +ણ 1 +▁form 1 +▁moment 1 +▁எ 1 +▁כל 1 +ās 1 +bla 1 +▁loc 1 +sul 1 +走 1 +▁get 1 +like 1 +dí 1 +ES 1 +ជ 1 +nc 1 +ରି 1 +▁Се 1 +Э 1 +ám 1 +ြ 1 +stal 1 +▁него 1 +үн 1 +қы 1 +говор 1 +▁vagy 1 +▁ly 1 +二 1 +▁ਦਾ 1 +stri 1 +▁орган 1 +ono 1 +ซ 1 +េ 1 +▁Ur 1 +▁Mal 1 +▁Mat 1 +型 1 +▁ແລະ 1 +▁Min 1 +ոն 1 +ಳ 1 +ное 1 +उ 1 +νο 1 +hor 1 +وي 1 +▁bol 1 +▁Azərbaycan 1 +▁selv 1 +ୟ 1 +▁lan 1 +2. 1 +▁Ben 1 +▁вид 1 +▁baş 1 +指 1 +▁data 1 +▁ख 1 +် 1 +▁Allah 1 +▁public 1 +讓 1 +▁Fo 1 +роб 1 +mia 1 +wn 1 +ža 1 +▁tid 1 +▁ide 1 +ಡಿ 1 +zem 1 +▁الق 1 +并 1 +给 1 +cze 1 +▁وا 1 +▁soo 1 +45 1 +▁kako 1 +ော 1 +יי 1 +bl 1 +▁model 1 +▁Sal 1 +▁nak 1 +▁дека 1 +nju 1 +▁czy 1 +然 1 +▁sebagai 1 +stat 1 +pil 1 +▁při 1 +▁wel 1 +▁نو 1 +sem 1 +gat 1 +ák 1 +▁hon 1 +▁ತ 1 +客 1 +ог 1 +gia 1 +우 1 +▁peng 1 +▁това 1 +▁500 1 +▁ти 1 +▁Ս 1 +▁dire 1 +נת 1 +imin 1 +вед 1 +ഷ 1 +خت 1 +ዋ 1 +문 1 +件 1 +知 1 +▁70 1 +▁gli 1 +rim 1 +▁የተ 1 +මු 1 +త్ 1 +▁ବ 1 +▁спо 1 +spe 1 +λη 1 +rra 1 +اع 1 +פ 1 +▁ٿي 1 +ev 1 +명 1 +它 1 +ें 1 +▁pare 1 +อร์ 1 +▁પ્ર 1 +ръ 1 +ssi 1 +▁80 1 +▁दे 1 +▁lí 1 +▁жана 1 +▁II 1 +ыл 1 +يات 1 +ես 1 +▁kami 1 +تے 1 +▁pin 1 +▁tuo 1 +တ္ 1 +▁इ 1 +▁Nie 1 +▁sil 1 +יד 1 +luk 1 +tina 1 +mand 1 +aal 1 +जा 1 +mana 1 +ლე 1 +ံ 1 +abil 1 +మా 1 +ui 1 +mpi 1 +hol 1 +▁ი 1 +▁Hel 1 +▁ін 1 +зі 1 +ದಲ್ಲಿ 1 +ún 1 +▁अस 1 +ум 1 +▁gran 1 +我們 1 +ët 1 +ctor 1 +دان 1 +▁Cor 1 +▁br 1 +יים 1 +zat 1 +▁ф 1 +ிய 1 +▁година 1 +ۇ 1 +▁هر 1 +० 1 +dzi 1 +جي 1 +င် 1 +▁आणि 1 +▁Ali 1 +▁sont 1 +çi 1 +ουν 1 +ут 1 +▁mie 1 +мат 1 +pol 1 +ār 1 +ਜ 1 +局 1 +▁tá 1 +пре 1 +▁bun 1 +快 1 +ude 1 +▁red 1 +বে 1 +▁ਬ 1 +லை 1 +▁daar 1 +scri 1 +მი 1 +す 1 +ikan 1 +ныя 1 +ඩ 1 +rze 1 +▁let 1 +ίας 1 +ధ 1 +▁ආ 1 +▁تي 1 +ؤ 1 +▁gar 1 +nega 1 +真 1 +▁ara 1 +▁kung 1 +ové 1 +▁köz 1 +ité 1 +▁menjadi 1 +▁Im 1 +▁sí 1 +▁شما 1 +~ 1 +▁local 1 +кон 1 +وت 1 +งาน 1 +▁י 1 +▁স 1 +ቃ 1 +進 1 +mini 1 +္ 1 +bud 1 +▁тра 1 +eur 1 +lara 1 +شت 1 +رى 1 +lio 1 +ško 1 +ερ 1 +▁β 1 +ள 1 +▁الد 1 +יו 1 +▁менен 1 +▁olarak 1 +rica 1 +த்து 1 +bro 1 +él 1 +oto 1 +由 1 +▁help 1 +ља 1 +ព 1 +ила 1 +▁nous 1 +▁ở 1 +▁nje 1 +eve 1 +É 1 +IT 1 +05 1 +▁ú 1 +ां 1 +▁minut 1 +日本 1 +קר 1 +▁vida 1 +્યા 1 +▁hotel 1 +کی 1 +হ 1 +yê 1 +▁অ 1 +ొ 1 +▁leg 1 +▁घ 1 +its 1 +▁Τ 1 +ೈ 1 +▁Ü 1 +يس 1 +ဖ 1 +рэ 1 +▁Ал 1 +▁(2 1 +fel 1 +ibus 1 +▁ئى 1 +已 1 +ற 1 +cle 1 +ագ 1 +▁ა 1 +ojn 1 +▁Sen 1 +nga 1 +▁uns 1 +nego 1 +ശ 1 +sky 1 +目 1 +ος 1 +社 1 +▁Kur 1 +уч 1 +ร์ 1 +ција 1 +azione 1 +ზ 1 +થી 1 +sing 1 +ių 1 +รา 1 +kker 1 +59 1 +▁بل 1 +▁gro 1 +5% 1 +ване 1 +ამ 1 +▁ବି 1 +kka 1 +ើ 1 +നി 1 +rio 1 +▁kro 1 +▁2007 1 +ዝ 1 +nn 1 +یک 1 +цу 1 +▁было 1 +▁bude 1 +rta 1 +pal 1 +atan 1 +▁대 1 +لم 1 +體 1 +ದು 1 +ತ್ 1 +ಟ್ 1 +▁Tar 1 +▁دا 1 +зе 1 +வு 1 +endo 1 +▁pela 1 +ści 1 +тел 1 +▁gen 1 +xo 1 +▁sẽ 1 +▁cada 1 +ეს 1 +aran 1 +▁الب 1 +өө 1 +تو 1 +▁аб 1 +▁bre 1 +ço 1 +▁organiz 1 +வி 1 +58 1 +식 1 +▁Zo 1 +▁کان 1 +▁روز 1 +发展 1 +ු 1 +▁ότι 1 +бі 1 +ారు 1 +白 1 +花 1 +▁ያ 1 +▁прав 1 +ഗ 1 +▁Sin 1 +▁인 1 +nat 1 +总 1 +אר 1 +▁ку 1 +四 1 +نت 1 +▁الص 1 +▁Bal 1 +dim 1 +род 1 +mir 1 +ικά 1 +ור 1 +ப்பு 1 +ិ 1 +stand 1 +▁prote 1 +rada 1 +▁사 1 +31 1 +jų 1 +سا 1 +需要 1 +ැ 1 +ائی 1 +▁למ 1 +您 1 +▁Nor 1 +▁ವಿ 1 +ая 1 +ด้วย 1 +▁90 1 +cam 1 +▁casa 1 +▁pār 1 +▁প্র 1 +άν 1 +त्य 1 +Я 1 +ници 1 +▁sko 1 +▁Fra 1 +▁mana 1 +▁Gar 1 +ทํา 1 +▁Zu 1 +▁فر 1 +区 1 +taan 1 +▁बि 1 +ហ 1 +像 1 +och 1 +ตัว 1 +ência 1 +ania 1 +slu 1 +آ 1 +▁vien 1 +▁شا 1 +drž 1 +周 1 +▁çok 1 +ූ 1 +-1 1 +მო 1 +חו 1 +miz 1 +ਵ 1 +ον 1 +▁rad 1 +וק 1 +נות 1 +каза 1 +ૂ 1 +yw 1 +७ 1 +कार 1 +▁॥ 1 +వి 1 +▁байна 1 +Ж 1 +pel 1 +dol 1 +ទ 1 +▁New 1 +eza 1 +▁face 1 +ван 1 +だ 1 +oz 1 +관 1 +▁mest 1 +tivo 1 +▁what 1 +zon 1 +▁나 1 +ண 1 +ust 1 +kai 1 +▁ис 1 +▁War 1 +gr 1 +▁ط 1 +ची 1 +▁ora 1 +ლის 1 +▁ple 1 +प्र 1 +ост 1 +▁Ser 1 +دو 1 +▁नहीं 1 +డు 1 +▁الك 1 +sus 1 +57 1 +eh 1 +şa 1 +▁any 1 +▁Ac 1 +▁ό 1 +▁sistem 1 +ningen 1 +▁soci 1 +дзе 1 +▁پاکستان 1 +LI 1 +▁און 1 +vien 1 +igi 1 +යට 1 +▁út 1 +່ 1 +owych 1 +▁todos 1 +▁نظر 1 +▁ही 1 +ното 1 +unda 1 +気 1 +▁मु 1 +אי 1 +如 1 +ਰੀ 1 +တဲ့ 1 +如果 1 +δο 1 +In 1 +▁אין 1 +▁ام 1 +kre 1 +रु 1 +ért 1 +發 1 +اج 1 +▁By 1 +ਡ 1 +bus 1 +lap 1 +gir 1 +bur 1 +ሩ 1 +ného 1 +σα 1 +▁суд 1 +เรา 1 +AD 1 +▁35 1 +▁ano 1 +pin 1 +ూ 1 +▁sonra 1 +эг 1 +ստ 1 +duk 1 +kra 1 +kim 1 +▁wil 1 +AM 1 +gri 1 +िया 1 +▁բ 1 +▁עם 1 +▁sor 1 +nad 1 +awa 1 +▁who 1 +وز 1 +ming 1 +ങ്ങള് 1 +ਰਾ 1 +용 1 +▁NA 1 +▁bila 1 +▁word 1 +建 1 +▁meer 1 +fra 1 +ario 1 +▁Post 1 +ਲਾ 1 +▁ئە 1 +ай 1 +▁condi 1 +▁φ 1 +▁Pod 1 +▁einer 1 +▁tor 1 +āk 1 +▁Vo 1 +รับ 1 +קו 1 +他们 1 +▁lagi 1 +« 1 +taa 1 +სი 1 +zie 1 +04 1 +னை 1 +▁Mon 1 +▁نام 1 +owe 1 +miş 1 +గు 1 +gus 1 +▁oraz 1 +liga 1 +▁سن 1 +住 1 +بي 1 +ալ 1 +SI 1 +企业 1 +ување 1 +▁өз 1 +יות 1 +nio 1 +nger 1 +gg 1 +▁제 1 +▁së 1 +▁Hotel 1 +የ 1 +▁diri 1 +ması 1 +rez 1 +tag 1 +▁loo 1 +演 1 +១ 1 +▁등 1 +▁مت 1 +ünk 1 +ੈ 1 +▁bro 1 +▁if 1 +மை 1 +▁Так 1 +න්න 1 +▁personal 1 +▁produ 1 +टा 1 +ilor 1 +ん 1 +▁tema 1 +ена 1 +ości 1 +yon 1 +▁mult 1 +ارت 1 +сын 1 +2016 1 +ଟ 1 +▁mere 1 +ow 1 +ಲಿ 1 +▁Fu 1 +▁वा 1 +ধ 1 +▁све 1 +▁onder 1 +▁oma 1 +ορ 1 +ោ 1 +ено 1 +מה 1 +vent 1 +▁pl 1 +מת 1 +器 1 +▁tại 1 +үр 1 +kli 1 +рын 1 +ವಿ 1 +ତା 1 +▁nó 1 +▁צו 1 +▁Sha 1 +nú 1 +▁Var 1 +kum 1 +itu 1 +▁tôi 1 +▁mata 1 +रि 1 +জ 1 +န္း 1 +ေတြ 1 +▁pää 1 +▁ай 1 +mina 1 +▁бу 1 +▁vào 1 +체 1 +▁üçün 1 +式 1 +▁kau 1 +▁tele 1 +หน้า 1 +ș 1 +ath 1 +قى 1 +학 1 +▁Med 1 +▁autor 1 +ೊ 1 +▁وی 1 +nym 1 +win 1 +כו 1 +ଦ 1 +▁iki 1 +▁Han 1 +▁போ 1 +ď 1 +▁And 1 +ave 1 +ការ 1 +生活 1 +ume 1 +TA 1 +▁när 1 +车 1 +ove 1 +▁αν 1 +ір 1 +AS 1 +NI 1 +များ 1 +時間 1 +ző 1 +▁osob 1 +inti 1 +▁ר 1 +▁μας 1 +rú 1 +յան 1 +ণ 1 +▁len 1 +ونه 1 +▁እና 1 +יט 1 +EL 1 +▁ನ 1 +esi 1 +zan 1 +▁long 1 +оч 1 +TE 1 +Á 1 +తో 1 +plat 1 +ара 1 +▁وہ 1 +▁gör 1 +▁här 1 +06 1 +▁stre 1 +μο 1 +ći 1 +▁yra 1 +пис 1 +JE 1 +▁Av 1 +ყ 1 +siz 1 +ото 1 +ador 1 +ژ 1 +▁বি 1 +ंड 1 +▁aby 1 +交 1 +ക്ക് 1 +▁Mit 1 +өр 1 +ലി 1 +れ 1 +산 1 +λέ 1 +kle 1 +वे 1 +共 1 +▁MA 1 +اط 1 +▁ላይ 1 +ule 1 +▁מו 1 +oda 1 +важ 1 +മാ 1 +ტა 1 +႔ 1 +▁kir 1 +ਦਾ 1 +▁prima 1 +од 1 +رس 1 +ыя 1 +▁You 1 +جا 1 +▁pris 1 +▁Wo 1 +▁זה 1 +लो 1 +acht 1 +▁sc 1 +stvo 1 +oc 1 +್ಯಾ 1 +▁kuri 1 +దా 1 +▁оста 1 +عد 1 +ທີ່ 1 +进 1 +科 1 +ໂ 1 +გი 1 +stad 1 +▁chỉ 1 +tera 1 +کو 1 +미 1 +▁Tre 1 +ائي 1 +but 1 +има 1 +▁zum 1 +ym 1 +uan 1 +▁كل 1 +▁свет 1 +▁7. 1 +▁total 1 +▁Mag 1 +كى 1 +คุณ 1 +▁२ 1 +では 1 +▁공 1 +sche 1 +▁న 1 +▁hin 1 +▁kontakt 1 +lab 1 +mai 1 +ერ 1 +▁במ 1 +ଗ 1 +▁ග 1 +צי 1 +ڈ 1 +▁ges 1 +克 1 +AK 1 +ult 1 +ാന് 1 +▁suo 1 +▁Video 1 +เท 1 +實 1 +▁olma 1 +стро 1 +▁pasi 1 +MA 1 +bah 1 +66 1 +▁volt 1 +77 1 +ыр 1 +cin 1 +▁einem 1 +▁Би 1 +ଣ 1 +▁đi 1 +▁przez 1 +。” 1 +ול 1 +ჩ 1 +air 1 +▁కా 1 +▁mobil 1 +▁които 1 +▁फ 1 +kie 1 +ยา 1 +▁tas 1 +▁pal 1 +dh 1 +55 1 +ကြ 1 +مر 1 +MI 1 +▁pode 1 +କା 1 +kommen 1 +cı 1 +دي 1 +▁phải 1 +isk 1 +రం 1 +▁€ 1 +TO 1 +▁cui 1 +താ 1 +▁դ 1 +εται 1 +▁bara 1 +छ 1 +德 1 +▁što 1 +え 1 +니 1 +وف 1 +▁maka 1 +gle 1 +ир 1 +並 1 +▁sempre 1 +sled 1 +кт 1 +▁основ 1 +್ 1 +bia 1 +istä 1 +mul 1 +간 1 +ନ୍ 1 +יל 1 +జ 1 +ຊ 1 +▁Jag 1 +Ч 1 +▁nap 1 +។ 1 +str 1 +ազ 1 +રે 1 +▁Dis 1 +ია 1 +▁Mil 1 +iyor 1 +▁blir 1 +Re 1 +▁gy 1 +mış 1 +නි 1 +ました 1 +▁Jan 1 +яз 1 +anda 1 +mma 1 +UR 1 +iert 1 +▁pré 1 +▁nhà 1 +سى 1 +NG 1 +▁tako 1 +তি 1 +▁ব 1 +së 1 +וח 1 +▁neu 1 +مل 1 +aria 1 +ጣ 1 +rā 1 +无 1 +ൊ 1 +100 1 +osta 1 +jon 1 +niu 1 +▁caso 1 +డ్ 1 +ða 1 +кой 1 +ām 1 +ます 1 +▁vara 1 +▁Το 1 +صر 1 +sak 1 +61 1 +▁dels 1 +解 1 +▁kh 1 +▁từ 1 +cé 1 +enda 1 +▁ପ୍ର 1 +tı 1 +ул 1 +يون 1 +!” 1 +ეთ 1 +nings 1 +▁ე 1 +反 1 +ذا 1 +ହ 1 +രു 1 +gua 1 +▁their 1 +rei 1 +▁jako 1 +▁lie 1 +▁кө 1 +▁svar 1 +وب 1 +▁mund 1 +vie 1 +кан 1 +▁Hy 1 +ତି 1 +신 1 +aus 1 +вър 1 +گاه 1 +cep 1 +сты 1 +▁និង 1 +mbe 1 +sza 1 +сно 1 +▁Из 1 +▁bur 1 +GA 1 +ıl 1 +ുന്ന 1 +▁Pan 1 +ած 1 +ใช้ 1 +CE 1 +ალ 1 +ator 1 +행 1 +▁inform 1 +kol 1 +▁popul 1 +▁бай 1 +čne 1 +çe 1 +ас 1 +തു 1 +▁end 1 +niz 1 +▁naar 1 +ার 1 +这个 1 +വി 1 +റി 1 +ார் 1 +▁plat 1 +cal 1 +ös 1 +हि 1 +▁sh 1 +▁sel 1 +hé 1 +kou 1 +nnen 1 +اح 1 +ران 1 +表示 1 +any 1 +kah 1 +ktor 1 +itate 1 +ී 1 +▁kä 1 +▁бе 1 +场 1 +дын 1 +ಲ್ಲ 1 +▁place 1 +▁жыл 1 +eld 1 +യുടെ 1 +▁גע 1 +— 1 +ép 1 +▁자 1 +මා 1 +▁lain 1 +лт 1 +▁ମ 1 +πο 1 +ĝ 1 +▁xu 1 +▁lahko 1 +హ 1 +▁pří 1 +ingen 1 +larda 1 +▁خبر 1 +ዎች 1 +ño 1 +ific 1 +▁Tan 1 +▁ଓ 1 +▁գ 1 +院 1 +▁кра 1 +үл 1 +▁વ 1 +కా 1 +▁nes 1 +ına 1 +▁Son 1 +▁Ol 1 +▁our 1 +▁мі 1 +อย่าง 1 +μη 1 +cions 1 +▁arī 1 +ி 1 +ním 1 +lep 1 +ਧ 1 +▁indi 1 +ଧ 1 +▁Ut 1 +▁جن 1 +lash 1 +▁план 1 +▁mak 1 +лад 1 +isen 1 +ane 1 +▁vers 1 +itet 1 +88 1 +عا 1 +fri 1 +ଛି 1 +शा 1 +展 1 +२ 1 +ળ 1 +Ц 1 +算 1 +νη 1 +神 1 +کار 1 +ետ 1 +ပ္ 1 +案 1 +何 1 +▁vie 1 +▁Ye 1 +gro 1 +ments 1 +osi 1 +lož 1 +sión 1 +拉 1 +▁bon 1 +▁minu 1 +网 1 +▁народ 1 +ана 1 +ေန 1 +當 1 +▁roku 1 +مت 1 +ası 1 +قل 1 +ppe 1 +ació 1 +Ф 1 +ሪ 1 +cel 1 +首 1 +লা 1 +省 1 +▁هذا 1 +愛 1 +▁વિ 1 +▁smo 1 +ost 1 +cas 1 +▁barn 1 +▁bank 1 +68 1 +شر 1 +▁cara 1 +才 1 +alis 1 +મે 1 +▁Sh 1 +tą 1 +▁کم 1 +▁nag 1 +せ 1 +▁ව 1 +▁ז 1 +▁(1 1 +ľ 1 +፤ 1 +sit 1 +शी 1 +▁ένα 1 +tig 1 +▁Van 1 +ės 1 +早 1 +کن 1 +нии 1 +gó 1 +ায় 1 +마 1 +වේ 1 +SA 1 +▁ന 1 +კა 1 +▁ન 1 +ल्या 1 +ава 1 +ठ 1 +▁cas 1 +ské 1 +▁sein 1 +▁رس 1 +ern 1 +ēt 1 +рат 1 +iş 1 +वी 1 +spec 1 +不是 1 +▁ble 1 +ప్ 1 +話 1 +esc 1 +ශ 1 +▁град 1 +▁esse 1 +EM 1 +els 1 +78 1 +lijk 1 +رة 1 +mili 1 +▁bagi 1 +බ 1 +▁Zi 1 +isse 1 +rb 1 +њи 1 +eni 1 +νε 1 +ሮ 1 +hel 1 +▁kö 1 +▁сто 1 +ivo 1 +研究 1 +፡፡ 1 +应 1 +ሚ 1 +vik 1 +▁Mari 1 +물 1 +தா 1 +мы 1 +39 1 +▁mehr 1 +ทาง 1 +គ 1 +▁xe 1 +▁refer 1 +ступ 1 +anna 1 +▁masa 1 +▁hver 1 +▁koje 1 +ობ 1 +ыг 1 +士 1 +్యా 1 +▁کل 1 +▁आप 1 +ję 1 +33 1 +ో 1 +த் 1 +มาก 1 +▁$ 1 +▁кор 1 +內 1 +вал 1 +ష 1 +▁εκ 1 +gur 1 +gens 1 +▁tym 1 +ett 1 +रो 1 +ाइ 1 +▁ning 1 +▁سان 1 +▁зем 1 +▁ayaa 1 +فا 1 +▁trên 1 +ິ 1 +සි 1 +▁شهر 1 +مه 1 +配 1 +▁tersebut 1 +meni 1 +эд 1 +▁ਨੇ 1 +ші 1 +לה 1 +▁ایران 1 +యా 1 +ല്ല 1 +čí 1 +▁sudah 1 +▁đầu 1 +▁fy 1 +itä 1 +ис 1 +▁máis 1 +tai 1 +▁ಈ 1 +град 1 +diği 1 +▁Бо 1 +▁sim 1 +진 1 +дел 1 +▁ekki 1 +യാ 1 +でも 1 +ổ 1 +yên 1 +▁kao 1 +▁base 1 +ple 1 +▁وأ 1 +лет 1 +ଟି 1 +ीय 1 +кра 1 +ઈ 1 +▁bị 1 +▁Ich 1 +увати 1 +▁حال 1 +-2 1 +▁නි 1 +▁था 1 +現 1 +dığı 1 +あ 1 +▁disp 1 +▁45 1 +ати 1 +▁seperti 1 +yu 1 +žu 1 +▁hàng 1 +ড 1 +embre 1 +DA 1 +▁hos 1 +▁yr 1 +شن 1 +▁України 1 +яр 1 +▁normal 1 +개 1 +▁അവ 1 +цен 1 +所以 1 +jos 1 +сэн 1 +ધ 1 +ରୁ 1 +▁پا 1 +ନା 1 +75 1 +32 1 +vali 1 +▁ସ 1 +ಧ 1 +kir 1 +نس 1 +▁menga 1 +两 1 +հ 1 +▁عمل 1 +tų 1 +▁py 1 +▁только 1 +▁ਆ 1 +▁Ə 1 +పు 1 +カ 1 +▁الش 1 +нима 1 +ivi 1 +ایی 1 +▁spre 1 +44 1 +▁jedno 1 +ving 1 +▁кол 1 +▁בא 1 +dul 1 +KO 1 +दी 1 +▁الر 1 +▁sul 1 +็ 1 +द्ध 1 +▁том 1 +La 1 +nus 1 +ận 1 +▁있다 1 +▁שה 1 +▁तर 1 +tio 1 +enza 1 +▁Þ 1 +▁conta 1 +өл 1 +šie 1 +▁które 1 +▁cer 1 +ට් 1 +▁Vor 1 +▁stran 1 +▁பா 1 +▁ഉ 1 +계 1 +has 1 +▁Met 1 +má 1 +48 1 +▁mə 1 +rek 1 +lau 1 +▁media 1 +ਖ 1 +▁yeni 1 +mie 1 +▁học 1 +▁tā 1 +نو 1 +zet 1 +▁andre 1 +▁sự 1 +吃 1 +▁können 1 +▁nhiều 1 +die 1 +ách 1 +万 1 +▁اي 1 +ень 1 +▁ম 1 +мов 1 +▁situa 1 +சி 1 +ään 1 +رد 1 +kit 1 +▁tout 1 +▁300 1 +▁Δ 1 +▁Mor 1 +▁Bre 1 +ður 1 +▁verk 1 +лага 1 +ຈ 1 +લા 1 +cción 1 +וס 1 +lib 1 +දී 1 +ृ 1 +36 1 +▁നി 1 +тэй 1 +▁दिन 1 +jak 1 +▁helt 1 +ဂ 1 +০ 1 +yak 1 +▁బ 1 +मि 1 +hed 1 +æl 1 +▁Inter 1 +▁Og 1 +szer 1 +▁most 1 +▁Au 1 +ավոր 1 +ებ 1 +▁تع 1 +йн 1 +▁ເ 1 +ische 1 +оп 1 +▁права 1 +ನಿ 1 +ema 1 +▁tahun 1 +▁qe 1 +ဒ 1 +▁नेपाल 1 +들 1 +mati 1 +సి 1 +ယ္ 1 +▁того 1 +▁2006 1 +jö 1 +▁acest 1 +▁32 1 +əm 1 +üh 1 +いて 1 +▁lá 1 +ाई 1 +нда 1 +▁ар 1 +oma 1 +э 1 +صل 1 +şti 1 +pli 1 +ரா 1 +વી 1 +ння 1 +ంగా 1 +ખ 1 +dt 1 +▁Ан 1 +五 1 +▁പോ 1 +▁thì 1 +એ 1 +ual 1 +▁ການ 1 +cka 1 +▁hele 1 +▁ये 1 +atu 1 +▁Internet 1 +69 1 +tiv 1 +ჭ 1 +իկ 1 +▁પ 1 +ax 1 +umu 1 +င်း 1 +▁hari 1 +ntes 1 +оз 1 +▁vra 1 +ությունը 1 +ө 1 +นา 1 +jam 1 +మి 1 +ιά 1 +ై 1 +▁Ten 1 +เข้า 1 +ବା 1 +इ 1 +▁súa 1 +▁Kor 1 +LO 1 +igt 1 +рав 1 +▁8. 1 +ful 1 +款 1 +電 1 +▁sun 1 +▁passa 1 +▁ស 1 +▁element 1 +rna 1 +pos 1 +▁Ev 1 +AB 1 +ញ 1 +▁లో 1 +gil 1 +sil 1 +ณ 1 +67 1 +37 1 +ист 1 +▁would 1 +؛ 1 +zik 1 +tī 1 +ību 1 +▁право 1 +▁str 1 +▁مش 1 +tii 1 +▁link 1 +▁ប 1 +▁က 1 +▁մի 1 +非常 1 +▁кар 1 +tzeko 1 +று 1 +▁મા 1 +▁ਜ 1 +▁vad 1 +▁לי 1 +▁chu 1 +rup 1 +երի 1 +tà 1 +nig 1 +▁deze 1 +▁nei 1 +מו 1 +ურ 1 +nye 1 +שי 1 +▁there 1 +जी 1 +▁than 1 +▁Γ 1 +чка 1 +▁edhe 1 +วิ 1 +ques 1 +▁worden 1 +▁động 1 +▁č 1 +бар 1 +▁خان 1 +बा 1 +що 1 +▁kai 1 +LA 1 +76 1 +“. 1 +kri 1 +mani 1 +월 1 +▁сме 1 +▁پو 1 +ሙ 1 +daj 1 +მის 1 +▁Ap 1 +세 1 +▁kol 1 +пу 1 +ച്ച 1 +ിക്ക 1 +Po 1 +יע 1 +深 1 +nă 1 +fre 1 +ffe 1 +▁Р 1 +மா 1 +ีย 1 +▁ses 1 +비 1 +há 1 +ું 1 +मी 1 +נים 1 +▁Uni 1 +цца 1 +▁га 1 +iran 1 +cola 1 +▁Об 1 +පු 1 +kam 1 +▁maj 1 +ome 1 +ախ 1 +▁promo 1 +區 1 +tea 1 +ும் 1 +chu 1 +uku 1 +▁Euro 1 +زا 1 +▁some 1 +وار 1 +fla 1 +dó 1 +kut 1 +ంచ 1 +ښ 1 +▁pel 1 +் 1 +▁bas 1 +ਜ਼ 1 +στ 1 +34 1 +▁tip 1 +提 1 +ټ 1 +ID 1 +▁Β 1 +ını 1 +nna 1 +强 1 +▁Iz 1 +ient 1 +▁있는 1 +員 1 +անց 1 +ီ 1 +රු 1 +▁make 1 +ary 1 +λο 1 +iek 1 +精 1 +ത്ര 1 +▁histori 1 +▁-- 1 +ose 1 +spo 1 +ous 1 +▁форм 1 +Ä 1 +ەر 1 +▁banyak 1 +די 1 +▁한 1 +dores 1 +ppen 1 +▁produkt 1 +רים 1 +▁ఉ 1 +vere 1 +bis 1 +▁skr 1 +】 1 +▁হ 1 +호 1 +▁év 1 +▁они 1 +ഴ 1 +▁ਕਿ 1 +گر 1 +مى 1 +▁бир 1 +bon 1 +న్న 1 +▁sä 1 +graf 1 +hra 1 +ණ 1 +eks 1 +git 1 +ộ 1 +▁име 1 +സി 1 +ள் 1 +ดู 1 +लि 1 +ਵਾ 1 +▁000 1 +ใจ 1 +一個 1 +ແ 1 +▁shk 1 +иш 1 +లే 1 +▁भएको 1 +▁2000 1 +ਨਾ 1 +▁일 1 +тери 1 +▁מת 1 +চ 1 +anti 1 +god 1 +▁dette 1 +ელი 1 +von 1 +空 1 +▁kultur 1 +大家 1 +国家 1 +iš 1 +▁два 1 +mil 1 +وق 1 +ання 1 +њу 1 +σης 1 +mark 1 +יש 1 +para 1 +38 1 +금 1 +管 1 +nci 1 +به 1 +▁य 1 +▁cla 1 +送 1 +▁вер 1 +▁Ban 1 +ias 1 +ču 1 +▁сайт 1 +▁ваш 1 +ová 1 +ծ 1 +▁απ 1 +တ် 1 +zés 1 +選 1 +▁nhất 1 +落 1 +лов 1 +▁после 1 +▁ఏ 1 +್ಯ 1 +▁हा 1 +▁solo 1 +मे 1 +ith 1 +sol 1 +▁бір 1 +▁можно 1 +ios 1 +كا 1 +▁دست 1 +ιο 1 +аны 1 +2015 1 +ация 1 +▁pret 1 +もの 1 +రీ 1 +על 1 +çı 1 +修 1 +▁land 1 +zza 1 +ంద 1 +500 1 +03 1 +片 1 +▁már 1 +ന്ന 1 +▁når 1 +▁molt 1 +fica 1 +▁تم 1 +▁त्या 1 +マ 1 +ბა 1 +tec 1 +▁если 1 +ră 1 +ଲା 1 +▁හ 1 +بار 1 +▁roman 1 +ame 1 +ნე 1 +жда 1 +لىق 1 +▁ry 1 +lei 1 +lö 1 +跟 1 +vanje 1 +▁moet 1 +▁amet 1 +清 1 +lement 1 +▁fru 1 +ි 1 +шта 1 +دة 1 +공 1 +▁denne 1 +ಕ್ಕೆ 1 +ям 1 +דר 1 +hur 1 +63 1 +ವಾ 1 +في 1 +▁года 1 +น้ํา 1 +ère 1 +▁اب 1 +سي 1 +網 1 +mbu 1 +८ 1 +▁ord 1 +miento 1 +భ 1 +ില്ല 1 +യില് 1 +ຕ 1 +tate 1 +79 1 +ంది 1 +een 1 +▁она 1 +▁syn 1 +႕ 1 +Al 1 +▁시 1 +ษ 1 +čno 1 +▁nou 1 +inter 1 +▁aux 1 +▁הוא 1 +ీ 1 +ament 1 +խ 1 +aq 1 +ect 1 +▁Ն 1 +▁blo 1 +▁pus 1 +alla 1 +fat 1 +তা 1 +▁деп 1 +يب 1 +qua 1 +ρί 1 +的人 1 +oje 1 +лся 1 +▁nor 1 +▁सो 1 +ök 1 +▁need 1 +▁shu 1 +шти 1 +ιστ 1 +▁gaan 1 +引 1 +main 1 +▁지 1 +▁წ 1 +عة 1 +服务 1 +тал 1 +ਹਿ 1 +фи 1 +ುವ 1 +▁isang 1 +utu 1 +बाट 1 +osa 1 +ուր 1 +ประ 1 +sas 1 +▁việc 1 +▁مج 1 +rå 1 +ness 1 +▁gir 1 +▁אל 1 +▁aki 1 +mula 1 +味 1 +▁blev 1 +શ 1 +аш 1 +შ 1 +igh 1 +inu 1 +nit 1 +ռ 1 +чен 1 +اص 1 +▁मे 1 +ଜ 1 +गा 1 +тя 1 +py 1 +নি 1 +▁Pol 1 +вя 1 +▁부 1 +▁প 1 +▁بار 1 +▁fond 1 +રો 1 +vos 1 +sur 1 +szy 1 +سر 1 +ဆို 1 +မ်ား 1 +▁або 1 +ضا 1 +رم 1 +려 1 +ać 1 +▁karena 1 +гер 1 +▁giá 1 +lai 1 +達 1 +dé 1 +bang 1 +私 1 +kti 1 +▁Eu 1 +zó 1 +▁પણ 1 +डी 1 +ім 1 +▁ро 1 +员 1 +▁habe 1 +аг 1 +▁Ik 1 +▁закон 1 +▁թ 1 +āt 1 +▁سره 1 +رات 1 +ries 1 +dob 1 +סי 1 +مال 1 +מר 1 +ځ 1 +ური 1 +什么 1 +▁Fer 1 +وع 1 +從 1 +ኝ 1 +▁ነው 1 +音 1 +▁kali 1 +▁prop 1 +ının 1 +▁համար 1 +чин 1 +但是 1 +▁prie 1 +ავ 1 +▁deg 1 +強 1 +▁као 1 +De 1 +▁bit 1 +▁want 1 +исти 1 +assa 1 +שת 1 +▁votre 1 +經 1 +llis 1 +่น 1 +եղ 1 +▁sistema 1 +운 1 +slag 1 +ric 1 +sé 1 +▁وقت 1 +way 1 +በት 1 +ключ 1 +▁δ 1 +▁دي 1 +▁thành 1 +arna 1 +ската 1 +lut 1 +▁ön 1 +ຸ 1 +▁dá 1 +失 1 +lip 1 +▁Pr 1 +mad 1 +▁kli 1 +▁ու 1 +했다 1 +▁dụng 1 +▁vz 1 +يه 1 +KI 1 +yə 1 +▁ком 1 +ets 1 +ue 1 +▁три 1 +رض 1 +▁(3) 1 +ός 1 +▁werk 1 +进行 1 +ቤ 1 +ယ 1 +ppa 1 +üm 1 +シ 1 +alo 1 +▁oss 1 +▁Vol 1 +▁ስ 1 +AI 1 +erte 1 +ρη 1 +北 1 +▁já 1 +▁మా 1 +gina 1 +ller 1 +pus 1 +SE 1 +▁got 1 +▁нови 1 +▁nova 1 +▁sə 1 +▁mala 1 +SS 1 +يف 1 +▁liber 1 +▁జ 1 +lå 1 +教育 1 +mur 1 +▁пи 1 +▁ත 1 +کر 1 +▁Bra 1 +▁kup 1 +πε 1 +▁сва 1 +andi 1 +▁lub 1 +▁ಸಂ 1 +▁Ни 1 +この 1 +elo 1 +▁شر 1 +βα 1 +bung 1 +стр 1 +▁중 1 +▁hiện 1 +ถ 1 +wel 1 +▁pok 1 +վում 1 +▁pul 1 +დება 1 +▁politik 1 +লি 1 +्ने 1 +kem 1 +▁mange 1 +96 1 +ရာ 1 +▁slo 1 +צ 1 +▁kont 1 +2) 1 +社会 1 +야 1 +▁Online 1 +▁vse 1 +בל 1 +kia 1 +ও 1 +oko 1 +ئی 1 +病 1 +▁ગ 1 +مي 1 +▁مي 1 +▁them 1 +isto 1 +Ι 1 +werk 1 +▁mid 1 +زي 1 +burg 1 +▁στα 1 +▁log 1 +▁mus 1 +防 1 +▁zur 1 +まで 1 +め 1 +ሽ 1 +ont 1 +ום 1 +电 1 +рен 1 +નું 1 +tere 1 +dek 1 +74 1 +▁گفت 1 +ας 1 +ribu 1 +▁said 1 +РА 1 +▁kell 1 +part 1 +安全 1 +ಾಗ 1 +ρό 1 +▁чу 1 +imit 1 +ನ್ನು 1 +ାଇ 1 +▁గ 1 +▁кел 1 +▁jam 1 +49 1 +▁nói 1 +tore 1 +ecek 1 +▁нов 1 +lg 1 +▁Hal 1 +slov 1 +στε 1 +тка 1 +▁ਅਤੇ 1 +-19 1 +stva 1 +▁þess 1 +率 1 +gs 1 +▁hen 1 +▁ned 1 +ዊ 1 +▁द 1 +ನ್ನ 1 +אות 1 +lás 1 +▁imp 1 +▁art 1 +▁pala 1 +larını 1 +وه 1 +▁dokument 1 +러 1 +hold 1 +▁Tal 1 +▁ده 1 +ində 1 +しい 1 +цій 1 +▁оп 1 +زی 1 +터 1 +jin 1 +σι 1 +сон 1 +олог 1 +건 1 +81 1 +יס 1 +71 1 +ahan 1 +घ 1 +▁ڪري 1 +rop 1 +bile 1 +▁quo 1 +αί 1 +lığı 1 +▁бас 1 +زم 1 +isha 1 +λά 1 +tara 1 +tari 1 +३ 1 +している 1 +▁other 1 +رت 1 +▁01 1 +рес 1 +▁also 1 +いた 1 +ىنى 1 +▁té 1 +▁సం 1 +وان 1 +▁Če 1 +IL 1 +lv 1 +kuu 1 +▁politi 1 +app 1 +amos 1 +56 1 +нага 1 +సు 1 +że 1 +▁هي 1 +▁myös 1 +▁خو 1 +ME 1 +рам 1 +▁Art 1 +тин 1 +eket 1 +ế 1 +▁fait 1 +йте 1 +тары 1 +▁know 1 +크 1 +▁product 1 +▁ці 1 +lerin 1 +以及 1 +run 1 +jung 1 +▁cam 1 +▁جس 1 +ये 1 +FA 1 +dica 1 +తు 1 +▁→ 1 +▁μια 1 +▁איז 1 +▁بد 1 +▁वर्ष 1 +வை 1 +hte 1 +업 1 +▁која 1 +ddi 1 +▁motor 1 +ږ 1 +ota 1 +▁тре 1 +▁dolor 1 +ბი 1 +წყ 1 +▁کند 1 +શે 1 +CA 1 +▁sva 1 +ორ 1 +▁kop 1 +▁õ 1 +政府 1 +?" 1 +raj 1 +vē 1 +ilo 1 +限 1 +▁هن 1 +▁gam 1 +▁тем 1 +당 1 +ოს 1 +▁정 1 +▁vas 1 +klar 1 +َّ 1 +tay 1 +öt 1 +时间 1 +▁sme 1 +ங்கள் 1 +▁læ 1 +▁پیش 1 +▁sü 1 +zni 1 +fn 1 +▁pelo 1 +▁Í 1 +כן 1 +out 1 +chod 1 +▁От 1 +ції 1 +▁محمد 1 +মি 1 +kki 1 +ать 1 +vre 1 +▁só 1 +້າ 1 +sat 1 +áz 1 +▁Га 1 +Ba 1 +Se 1 +▁បាន 1 +τέ 1 +າ 1 +ൽ 1 +rej 1 +▁සහ 1 +entes 1 +▁себе 1 +Ο 1 +业 1 +قي 1 +וע 1 +ಂದ 1 +ieren 1 +သူ 1 +ສະ 1 +▁över 1 +友 1 +нем 1 +線 1 +etan 1 +бер 1 +ຂ 1 +ફ 1 +ique 1 +▁বা 1 +포 1 +ød 1 +Í 1 +או 1 +ධ 1 +อยู่ 1 +media 1 +anga 1 +imiz 1 +cent 1 +▁been 1 +hil 1 +▁മു 1 +47 1 +▁pur 1 +ებული 1 +▁ras 1 +зы 1 +基 1 +test 1 +▁tha 1 +▁тур 1 +▁sar 1 +eu 1 +します 1 +▁hur 1 +الي 1 +每 1 +▁durch 1 +▁maga 1 +fir 1 +▁định 1 +▁hanya 1 +▁Ag 1 +▁Л 1 +メ 1 +▁Ez 1 +▁स्व 1 +ဘ 1 +▁năm 1 +tid 1 +約 1 +超 1 +ř 1 +ക്കാ 1 +ood 1 +▁موضوع 1 +▁camp 1 +οι 1 +akan 1 +үүл 1 +hari 1 +▁بي 1 +ವೆ 1 +▁мал 1 +zh 1 +▁რა 1 +▁ಎ 1 +ونو 1 +▁lle 1 +នា 1 +百 1 +ിച്ച 1 +▁στη 1 +▁пер 1 +▁kl 1 +▁आज 1 +ız 1 +lən 1 +조 1 +73 1 +ttu 1 +mā 1 +▁Qa 1 +ണ് 1 +▁мас 1 +低 1 +▁Mae 1 +lk 1 +ริ 1 +dė 1 +öv 1 +னி 1 +দের 1 +▁Ú 1 +කි 1 +بی 1 +▁مل 1 +); 1 +VI 1 +▁svoj 1 +▁där 1 +മ്മ 1 +три 1 +ög 1 +cess 1 +▁Web 1 +▁polo 1 +hti 1 +dje 1 +尔 1 +▁život 1 +мін 1 +uko 1 +іл 1 +안 1 +ኛ 1 +ску 1 +▁सि 1 +ნო 1 +민 1 +▁rela 1 +lec 1 +▁spi 1 +▁toe 1 +mény 1 +ец 1 +չ 1 +▁소 1 +46 1 +▁সা 1 +uden 1 +▁काम 1 +ෑ 1 +лось 1 +▁ս 1 +hit 1 +▁сте 1 +sini 1 +▁пад 1 +llä 1 +лення 1 +kho 1 +ቡ 1 +يء 1 +▁jul 1 +선 1 +▁goed 1 +▁arri 1 +ово 1 +▁even 1 +kr 1 +▁bilan 1 +mber 1 +▁faire 1 +ಲು 1 +iq 1 +IR 1 +▁ഈ 1 +98 1 +已经 1 +dne 1 +سو 1 +кен 1 +ਤੇ 1 +ray 1 +▁wenn 1 +▁пос 1 +▁उप 1 +▁מי 1 +▁kamp 1 +▁lokal 1 +నా 1 +sca 1 +▁Dia 1 +hus 1 +▁Far 1 +▁saa 1 +เพื่อ 1 +جو 1 +▁გან 1 +OL 1 +cker 1 +ności 1 +記 1 +97 1 +▁Tag 1 +ск 1 +RE 1 +πα 1 +▁você 1 +дно 1 +디 1 +ağı 1 +جل 1 +ندو 1 +ನಾ 1 +ായ 1 +▁цел 1 +ajn 1 +லி 1 +сте 1 +▁लागि 1 +▁מש 1 +▁uno 1 +след 1 +林 1 +лик 1 +یب 1 +▁אי 1 +只 1 +ában 1 +▁кој 1 +čni 1 +위 1 +▁Spa 1 +ид 1 +дық 1 +ච 1 +▁medic 1 +食 1 +단 1 +▁ని 1 +▁मि 1 +▁ami 1 +▁Kas 1 +itas 1 +ät 1 +▁fil 1 +▁VI 1 +▁गर्न 1 +گی 1 +▁שי 1 +ovat 1 +▁tom 1 +▁modern 1 +zz 1 +など 1 +思 1 +ible 1 +cur 1 +▁ਕਰ 1 +▁ә 1 +▁temp 1 +туу 1 +▁قرار 1 +▁bare 1 +tě 1 +▁muito 1 +post 1 +头 1 +▁jsem 1 +▁mutta 1 +▁ते 1 +skih 1 +切 1 +▁ski 1 +اری 1 +వు 1 +▁bud 1 +klu 1 +ਤਾ 1 +ٿ 1 +êm 1 +गे 1 +ať 1 +ós 1 +TU 1 +▁anak 1 +tör 1 +▁γ 1 +нен 1 +liv 1 +HA 1 +ному 1 +▁cat 1 +▁vill 1 +rii 1 +imas 1 +▁ஒரு 1 +▁kra 1 +▁comme 1 +ків 1 +פּ 1 +▁ky 1 +rus 1 +കള് 1 +্র 1 +▁Má 1 +ադ 1 +▁kay 1 +▁há 1 +▁tru 1 +tage 1 +avi 1 +▁IN 1 +風 1 +ັດ 1 +ચ 1 +λή 1 +uu 1 +णा 1 +助 1 +▁Pla 1 +isme 1 +▁bio 1 +בו 1 +▁seus 1 +ઇ 1 +stel 1 +рон 1 +чна 1 +άρ 1 +olog 1 +жен 1 +ინ 1 +▁Կ 1 +เก 1 +هي 1 +станов 1 +▁Che 1 +non 1 +▁հետ 1 +▁direct 1 +さん 1 +enti 1 +▁info 1 +dhi 1 +▁Sex 1 +▁kü 1 +ής 1 +▁တ 1 +ებით 1 +गी 1 +▁ты 1 +▁други 1 +▁daripada 1 +▁ori 1 +▁работа 1 +▁primer 1 +▁số 1 +告 1 +хо 1 +rke 1 +नु 1 +▁유 1 +▁questo 1 +프 1 +▁ή 1 +▁bru 1 +▁nước 1 +▁oor 1 +үй 1 +▁వా 1 +τή 1 +ൈ 1 +ность 1 +अ 1 +يق 1 +تم 1 +ស្ 1 +DE 1 +ំ 1 +NE 1 +▁það 1 +▁Wir 1 +હ 1 +83 1 +▁рад 1 +yin 1 +▁vet 1 +lic 1 +▁meny 1 +半 1 +erna 1 +ница 1 +ნის 1 +州 1 +॥ 1 +▁ଏ 1 +ować 1 +▁regi 1 +ڙ 1 +▁προσ 1 +лын 1 +ጉ 1 +▁obra 1 +nza 1 +▁semua 1 +่ง 1 +ຂອງ 1 +cións 1 +▁tut 1 +▁Poli 1 +▁mm 1 +還 1 +cə 1 +αι 1 +ผ 1 +owy 1 +▁мне 1 +▁מא 1 +נד 1 +মা 1 +IM 1 +▁tradi 1 +▁biz 1 +لىك 1 +▁siis 1 +anza 1 +中心 1 +пра 1 +▁يا 1 +▁ngày 1 +▁thế 1 +自己的 1 +▁오 1 +▁sana 1 +▁9. 1 +ři 1 +▁سب 1 +dak 1 +▁2005 1 +itus 1 +eko 1 +▁هذه 1 +▁momento 1 +owa 1 +ோ 1 +רת 1 +বি 1 +५ 1 +▁pon 1 +▁YA 1 +yor 1 +▁및 1 +تل 1 +▁etc 1 +colo 1 +ۈ 1 +▁pis 1 +เล 1 +лин 1 +▁чтобы 1 +ís 1 +足 1 +▁साथ 1 +▁там 1 +oon 1 +OM 1 +ۍ 1 +เด 1 +۱ 1 +ัง 1 +▁Пре 1 +▁Auto 1 +▁Fin 1 +▁சி 1 +୍ୟ 1 +wat 1 +▁ə 1 +▁csak 1 +▁She 1 +զ 1 +很多 1 +▁будет 1 +ovo 1 +▁ус 1 +▁Som 1 +▁проект 1 +▁នៅ 1 +▁ће 1 +▁gali 1 +▁jî 1 +නු 1 +lev 1 +▁partner 1 +▁mình 1 +മായ 1 +ća 1 +rdi 1 +плат 1 +▁nhân 1 +▁bl 1 +sje 1 +それ 1 +ио 1 +▁Ар 1 +४ 1 +▁etter 1 +ров 1 +сен 1 +コ 1 +▁kë 1 +ој 1 +cina 1 +持 1 +вој 1 +ční 1 +▁Dit 1 +▁પર 1 +▁Foto 1 +▁hau 1 +ሁ 1 +▁ча 1 +ус 1 +▁باشد 1 +▁ша 1 +▁contact 1 +μά 1 +yr 1 +▁alebo 1 +42 1 +▁eks 1 +wala 1 +zd 1 +กระ 1 +თი 1 +нат 1 +▁kam 1 +ໄ 1 +תה 1 +▁comun 1 +anja 1 +แบบ 1 +▁kla 1 +ļa 1 +▁छन् 1 +tico 1 +ຮ 1 +UN 1 +데 1 +णी 1 +市场 1 +cara 1 +വര് 1 +curs 1 +кор 1 +дат 1 +Ի 1 +け 1 +▁פון 1 +▁நி 1 +오 1 +uto 1 +اک 1 +sid 1 +▁ana 1 +כל 1 +Ö 1 +şı 1 +▁शा 1 +रण 1 +▁rec 1 +рос 1 +يك 1 +▁չ 1 +▁šo 1 +ို 1 +уда 1 +nam 1 +ttä 1 +▁Que 1 +မွာ 1 +ုိ 1 +ถึง 1 +дзі 1 +▁सरकार 1 +ッ 1 +cept 1 +▁בת 1 +tab 1 +લી 1 +▁2019 1 +யில் 1 +▁how 1 +pta 1 +▁which 1 +ñ 1 +▁frem 1 +лык 1 +▁Bru 1 +اپ 1 +▁بين 1 +DI 1 +▁בש 1 +mel 1 +інің 1 +mək 1 +▁sangat 1 +kl 1 +ага 1 +ែ 1 +▁150 1 +▁transport 1 +রি 1 +直 1 +য়ে 1 +ଇ 1 +王 1 +▁10. 1 +▁એક 1 +분 1 +▁ල 1 +▁potreb 1 +▁పా 1 +rê 1 +АН 1 +ind 1 +▁Hol 1 +▁kraj 1 +बार 1 +▁🙂 1 +▁main 1 +ลง 1 +▁비 1 +▁kv 1 +iska 1 +jav 1 +ວ່າ 1 +都是 1 +▁mang 1 +CI 1 +שה 1 +jär 1 +气 1 +▁гэта 1 +▁jos 1 +▁work 1 +lma 1 +šu 1 +چى 1 +ээр 1 +▁εν 1 +դ 1 +▁слу 1 +▁lai 1 +▁пов 1 +wen 1 +kaan 1 +▁ना 1 +▁может 1 +gne 1 +చి 1 +▁Ν 1 +uit 1 +▁veel 1 +gj 1 +▁vår 1 +PR 1 +▁when 1 +▁кои 1 +год 1 +արկ 1 +ച 1 +ĉ 1 +▁ეს 1 +стер 1 +▁kullan 1 +дал 1 +▁aut 1 +ბ 1 +ტო 1 +്യ 1 +ând 1 +▁yap 1 +▁qual 1 +bide 1 +▁prav 1 +▁presenta 1 +કા 1 +▁Cho 1 +무 1 +κά 1 +fon 1 +▁waxaa 1 +▁poder 1 +эт 1 +▁num 1 +Ka 1 +tuur 1 +ndan 1 +▁ច 1 +گه 1 +ින් 1 +▁दो 1 +aire 1 +อน 1 +數 1 +ձ 1 +lərin 1 +ации 1 +▁हे 1 +mesi 1 +urile 1 +жы 1 +ฮ 1 +్ 1 +മ്പ 1 +Ü 1 +gol 1 +pot 1 +tima 1 +ുക 1 +▁posta 1 +▁יש 1 +чки 1 +cja 1 +▁chính 1 +습니다 1 +ფ 1 +▁nev 1 +▁design 1 +ђе 1 +ழ 1 +ዕ 1 +kaz 1 +▁much 1 +▁produk 1 +Α 1 +sson 1 +작 1 +▁heeft 1 +יב 1 +▁hindi 1 +頭 1 +hd 1 +▁ہم 1 +ευ 1 +▁material 1 +43 1 +adas 1 +mod 1 +šti 1 +αλ 1 +改 1 +turi 1 +oso 1 +▁পা 1 +эм 1 +실 1 +▁Mark 1 +▁రా 1 +ligi 1 +門 1 +▁anos 1 +▁tag 1 +▁może 1 +▁ing 1 +▁ár 1 +ිය 1 +▁ան 1 +非 1 +kı 1 +hem 1 +maa 1 +유 1 +endi 1 +▁እንደ 1 +ంలో 1 +程 1 +▁gibi 1 +▁grande 1 +plan 1 +▁юм 1 +AP 1 +▁full 1 +іс 1 +▁آپ 1 +ēr 1 +▁Gre 1 +▁rok 1 +кол 1 +ต้อง 1 +タ 1 +UM 1 +ત્ 1 +▁Ir 1 +▁aktiv 1 +▁Вы 1 +rif 1 +▁کرنے 1 +вр 1 +▁عام 1 +sında 1 +▁Գ 1 +bild 1 +▁ଦ 1 +▁går 1 +▁För 1 +cak 1 +leh 1 +टे 1 +▁є 1 +ขึ้น 1 +初 1 +tual 1 +▁документ 1 +ị 1 +▁لو 1 +ിൽ 1 +xu 1 +▁klas 1 +izi 1 +▁độ 1 +ား 1 +一些 1 +aste 1 +ပ် 1 +วัน 1 +▁ומ 1 +▁proces 1 +▁уже 1 +▁भने 1 +مة 1 +పి 1 +Me 1 +เม 1 +▁ט 1 +▁люб 1 +ír 1 +BO 1 +נט 1 +▁God 1 +▁ši 1 +質 1 +ګ 1 +ジ 1 +▁kadar 1 +ണം 1 +▁सर्व 1 +yang 1 +యం 1 +查 1 +▁ден 1 +lav 1 +▁Cy 1 +મા 1 +연 1 +▁الذي 1 +lj 1 +▁jaar 1 +నీ 1 +依 1 +৩ 1 +▁zaman 1 +лись 1 +dah 1 +▁svoje 1 +īt 1 +ына 1 +kken 1 +hla 1 +եք 1 +lej 1 +▁Ker 1 +89 1 +९ 1 +▁valor 1 +بة 1 +hez 1 +▁În 1 +▁اگر 1 +igu 1 +▁پي 1 +▁ш 1 +kül 1 +φορ 1 +整 1 +▁gut 1 +▁Bro 1 +▁LA 1 +غان 1 +trag 1 +▁త 1 +▁Мар 1 +▁გ 1 +мент 1 +▁reco 1 +რის 1 +ತೆ 1 +▁ví 1 +▁ସେ 1 +▁إن 1 +▁andere 1 +▁ನಿ 1 +owej 1 +čka 1 +uja 1 +ہر 1 +ию 1 +شه 1 +ως 1 +▁huo 1 +▁ल 1 +ଶ 1 +▁princip 1 +▁porno 1 +nā 1 +ലാ 1 +וו 1 +ean 1 +調 1 +素 1 +美国 1 +eira 1 +کا 1 +▁még 1 +ovať 1 +▁novo 1 +ncia 1 +तो 1 +ణ 1 +▁jar 1 +nel 1 +လို 1 +झ 1 +forma 1 +бай 1 +uli 1 +aca 1 +رہ 1 +▁kel 1 +дни 1 +技术 1 +▁Bur 1 +ಶ 1 +▁Lä 1 +実 1 +сть 1 +▁programa 1 +dî 1 +▁sing 1 +▁જે 1 +利用 1 +▁adres 1 +▁fog 1 +▁May 1 +▁Ger 1 +▁Så 1 +▁ym 1 +▁Mü 1 +▁така 1 +▁gang 1 +▁Bil 1 +▁DI 1 +оў 1 +vjet 1 +ಕ್ಷ 1 +问题 1 +留 1 +BI 1 +▁против 1 +▁09 1 +▁multi 1 +mada 1 +พระ 1 +▁skulle 1 +cus 1 +▁মা 1 +कि 1 +▁list 1 +ANG 1 +▁kommun 1 +▁bag 1 +▁না 1 +▁ಮತ್ತು 1 +imu 1 +لب 1 +አ 1 +▁svi 1 +בר 1 +画 1 +よ 1 +▁Gal 1 +סט 1 +רה 1 +▁shi 1 +קט 1 +▁банк 1 +idi 1 +▁ທີ່ 1 +bə 1 +▁માટે 1 +টা 1 +uste 1 +▁Ty 1 +öd 1 +▁Alle 1 +ћа 1 +▁radi 1 +▁있습니다 1 +▁minden 1 +mist 1 +ék 1 +▁utiliza 1 +ég 1 +رن 1 +▁בה 1 +▁tras 1 +▁importante 1 +ਕਾ 1 +CH 1 +UL 1 +вор 1 +▁כי 1 +raf 1 +ړ 1 +▁osta 1 +▁mint 1 +▁Ng 1 +ளி 1 +ופ 1 +▁chat 1 +koa 1 +▁biti 1 +प् 1 +جد 1 +dr 1 +▁natural 1 +فق 1 +▁porta 1 +86 1 +▁email 1 +▁selle 1 +jó 1 +▁q 1 +AC 1 +క్ష 1 +▁prac 1 +кер 1 +発 1 +▁Air 1 +▁saj 1 +▁Este 1 +▁This 1 +ствен 1 +▁08 1 +▁mundo 1 +ಂತ 1 +уул 1 +ዘ 1 +BA 1 +sun 1 +▁persona 1 +▁Sur 1 +▁control 1 +▁دې 1 +կա 1 +眼 1 +▁gia 1 +dde 1 +וב 1 +▁Sun 1 +▁Vis 1 +ٹر 1 +▁poli 1 +ობის 1 +టు 1 +▁Ed 1 +2014 1 +langan 1 +১ 1 +步 1 +▁mó 1 +uv 1 +ový 1 +ward 1 +▁desde 1 +▁cả 1 +bili 1 +६ 1 +▁pay 1 +▁бер 1 +▁noi 1 +iad 1 +54 1 +MP 1 +점 1 +ग् 1 +▁یو 1 +guna 1 +력 1 +ള് 1 +ষ 1 +स्ट 1 +န် 1 +нос 1 +▁system 1 +თან 1 +▁tv 1 +▁있 1 +역 1 +anje 1 +▁Բ 1 +nor 1 +hli 1 +ими 1 +ऊ 1 +אה 1 +tit 1 +جر 1 +▁Naj 1 +доб 1 +▁mõ 1 +gere 1 +edi 1 +▁Auf 1 +▁rem 1 +press 1 +▁බව 1 +NO 1 +▁Jak 1 +čko 1 +had 1 +因为 1 +▁rin 1 +anka 1 +శ 1 +▁klub 1 +▁Esta 1 +liği 1 +카 1 +▁تک 1 +ፋ 1 +ෙන් 1 +▁quod 1 +象 1 +صف 1 +Ν 1 +สําหรับ 1 +▁use 1 +▁သ 1 +▁др 1 +▁Film 1 +▁SA 1 +▁lite 1 +ľa 1 +بل 1 +Κ 1 +ବେ 1 +কা 1 +rav 1 +置 1 +ປ 1 +▁sens 1 +▁ਵ 1 +買 1 +▁tekst 1 +▁මා 1 +shme 1 +тур 1 +staan 1 +ók 1 +▁gri 1 +Σ 1 +ciu 1 +ható 1 +▁dh 1 +ಸಿ 1 +ະ 1 +ಭ 1 +ட்டு 1 +oja 1 +▁new 1 +▁organiza 1 +Ө 1 +uks 1 +▁sala 1 +92 1 +nova 1 +ұ 1 +▁́ 1 +▁Sol 1 +▁قبل 1 +ቢ 1 +‬ 1 +▁nun 1 +кай 1 +ندي 1 +-3 1 +вали 1 +▁вас 1 +▁hom 1 +▁قا 1 +тро 1 +65 1 +▁уче 1 +運 1 +dade 1 +isin 1 +▁stro 1 +级 1 +chten 1 +▁लि 1 +▁sup 1 +▁ေ 1 +▁nebo 1 +дың 1 +ăm 1 +ére 1 +чно 1 +глас 1 +▁κα 1 +▁просто 1 +cut 1 +▁hak 1 +zko 1 +ļ 1 +▁этом 1 +ium 1 +ения 1 +▁tim 1 +▁svo 1 +良 1 +兩 1 +้น 1 +希望 1 +дук 1 +یی 1 +lika 1 +syon 1 +▁κατα 1 +▁people 1 +radi 1 +taja 1 +ật 1 +▁durante 1 +นัก 1 +▁heb 1 +ធ 1 +▁свој 1 +куп 1 +▁მა 1 +ယ် 1 +ሬ 1 +▁bere 1 +0% 1 +▁ഗ 1 +▁cette 1 +elor 1 +▁قو 1 +rse 1 +ически 1 +mpe 1 +JA 1 +खा 1 +stant 1 +ธ 1 +▁wana 1 +▁home 1 +▁شو 1 +▁now 1 +rou 1 +лек 1 +▁niin 1 +文化 1 +ాలు 1 +слов 1 +ток 1 +spr 1 +▁več 1 +▁principal 1 +▁живот 1 +ሃ 1 +HO 1 +ijo 1 +▁الخ 1 +計 1 +▁quando 1 +▁ការ 1 +▁سم 1 +▁Medi 1 +δι 1 +▁gener 1 +ниот 1 +形 1 +▁čo 1 +aw 1 +No 1 +▁ഒ 1 +害 1 +UT 1 +дава 1 +▁kuin 1 +۵ 1 +▁samt 1 +рів 1 +▁extra 1 +sök 1 +报 1 +▁ወ 1 +ối 1 +▁osa 1 +time 1 +▁því 1 +τρ 1 +ాయి 1 +ண்டு 1 +▁33 1 +tő 1 +نج 1 +صح 1 +ισ 1 +▁fund 1 +פר 1 +ugu 1 +لام 1 +ուս 1 +ず 1 +▁apar 1 +▁ç 1 +klad 1 +▁개 1 +ží 1 +Ş 1 +রে 1 +sted 1 +hand 1 +▁нам 1 +нын 1 +?? 1 +út 1 +իր 1 +MO 1 +ladi 1 +кла 1 +▁fr 1 +PA 1 +▁Vil 1 +▁(3 1 +alan 1 +▁Dom 1 +ক্ষ 1 +വും 1 +▁arti 1 +▁Mai 1 +ခဲ့ 1 +liche 1 +▁Од 1 +บ้าน 1 +方面 1 +িক 1 +▁Tor 1 +ജ 1 +▁seo 1 +ടെ 1 +任 1 +תו 1 +াই 1 +ihin 1 +vær 1 +▁больш 1 +menti 1 +ED 1 +وس 1 +ποι 1 +也是 1 +▁глав 1 +ню 1 +యి 1 +▁him 1 +ුව 1 +maq 1 +ത്തില് 1 +зь 1 +ান 1 +▁وم 1 +▁nett 1 +OK 1 +iện 1 +ball 1 +▁uw 1 +▁הע 1 +हरु 1 +星 1 +ిన 1 +▁plo 1 +▁EU 1 +ï 1 +▁mei 1 +عت 1 +čia 1 +▁mara 1 +▁ફ 1 +活 1 +طر 1 +భా 1 +▁Eesti 1 +бли 1 +영 1 +rp 1 +巴 1 +▁ಮಾಡ 1 +дж 1 +▁але 1 +经济 1 +▁cur 1 +gl 1 +κε 1 +سل 1 +们 1 +▁וא 1 +未 1 +list 1 +▁गर्ने 1 +▁ប្រ 1 +tain 1 +ម្ 1 +▁연 1 +▁HD 1 +ந்து 1 +мож 1 +▁Twitter 1 +▁document 1 +▁ہیں۔ 1 +▁fakt 1 +考 1 +בן 1 +城 1 +95 1 +rü 1 +ಜ 1 +ase 1 +▁Stra 1 +▁наш 1 +2013 1 +ගෙන 1 +ମି 1 +тельно 1 +▁ہی 1 +▁human 1 +ობა 1 +▁Ei 1 +تون 1 +▁domin 1 +ելու 1 +ように 1 +фа 1 +ningar 1 +▁Ра 1 +レ 1 +оо 1 +▁unter 1 +ड़ 1 +▁constru 1 +rø 1 +▁dur 1 +▁fue 1 +▁Islam 1 +▁hit 1 +▁Mes 1 +孩子 1 +▁быть 1 +타 1 +ení 1 +▁kata 1 +▁joka 1 +▁kama 1 +šte 1 +ίες 1 +▁sho 1 +便 1 +ዛ 1 +▁байгаа 1 +▁तथा 1 +站 1 +tern 1 +▁گو 1 +כה 1 +ление 1 +toj 1 +▁իր 1 +ταν 1 +▁दु 1 +▁ovat 1 +šanas 1 +эх 1 +▁മാ 1 +אל 1 +ljen 1 +cla 1 +фі 1 +▁안 1 +୍ 1 +推 1 +▁ле 1 +ација 1 +інде 1 +马 1 +▁הה 1 +పై 1 +κό 1 +וש 1 +▁olun 1 +த்தி 1 +▁vos 1 +vus 1 +டை 1 +▁fal 1 +тно 1 +ются 1 +دم 1 +ès 1 +ение 1 +▁tay 1 +лд 1 +94 1 +வா 1 +▁còn 1 +▁edil 1 +раб 1 +۳ 1 +▁fort 1 +lerini 1 +မ္း 1 +ezi 1 +ác 1 +53 1 +тель 1 +TER 1 +▁տ 1 +▁گیا 1 +51 1 +▁πο 1 +▁cy 1 +ହା 1 +▁servi 1 +爱 1 +ონ 1 +▁Tá 1 +луу 1 +▁kis 1 +ഭ 1 +fs 1 +▁univers 1 +гы 1 +▁rece 1 +ሌ 1 +ਾਈ 1 +▁id 1 +Š 1 +▁naš 1 +▁Tri 1 +▁pop 1 +▁जो 1 +eten 1 +ിച്ചു 1 +▁plu 1 +即 1 +吧 1 +▁před 1 +▁100% 1 +ကျ 1 +1) 1 +▁есть 1 +гор 1 +ακ 1 +šta 1 +▁బా 1 +▁mesmo 1 +нова 1 +טר 1 +▁bla 1 +gad 1 +52 1 +ków 1 +۰ 1 +dni 1 +əl 1 +മി 1 +jat 1 +84 1 +ņ 1 +▁essere 1 +▁भारत 1 +שו 1 +ੜ 1 +дна 1 +▁Wy 1 +包 1 +米 1 +ുന്നു 1 +ява 1 +RU 1 +sione 1 +校 1 +▁maa 1 +TV 1 +▁väl 1 +▁години 1 +ಯಲ್ಲಿ 1 +피 1 +▁تمام 1 +GO 1 +▁בע 1 +▁הח 1 +▁друг 1 +äl 1 +▁Kat 1 +ភ 1 +НИ 1 +請 1 +حد 1 +sio 1 +usa 1 +▁secara 1 +▁σ 1 +▁egin 1 +डा 1 +кры 1 +นิ 1 +กา 1 +ụ 1 +reg 1 +▁περι 1 +▁ئۇ 1 +Sa 1 +ዱ 1 +ól 1 +KE 1 +笑 1 +ตาม 1 +▁Comp 1 +дам 1 +ству 1 +▁Sk 1 +okat 1 +ρω 1 +ể 1 +аз 1 +ಳಿ 1 +णे 1 +män 1 +▁hulle 1 +▁игра 1 +人的 1 +cis 1 +▁baru 1 +▁Cam 1 +teen 1 +▁gew 1 +▁hän 1 +▁fac 1 +лич 1 +නය 1 +▁Как 1 +ष्ट 1 +VA 1 +ungs 1 +lī 1 +▁were 1 +▁bed 1 +재 1 +▁лі 1 +low 1 +因 1 +▁aug 1 +▁immer 1 +▁nella 1 +ለው 1 +ряд 1 +▁ü 1 +르 1 +▁student 1 +over 1 +82 1 +▁تن 1 +ён 1 +EC 1 +▁fem 1 +ಷ 1 +ских 1 +▁കു 1 +創 1 +လာ 1 +ິດ 1 +ності 1 +يع 1 +のは 1 +▁Malaysia 1 +ox 1 +لف 1 +氣 1 +лась 1 +င 1 +▁problema 1 +▁구 1 +eer 1 +▁ipsum 1 +sos 1 +yti 1 +rul 1 +σο 1 +▁36 1 +ಡ್ 1 +广 1 +▁신 1 +▁mah 1 +▁Vy 1 +▁Rus 1 +пар 1 +ಲೆ 1 +вање 1 +lun 1 +ент 1 +▁нема 1 +▁зах 1 +▁చ 1 +▁රී 1 +сов 1 +ink 1 +pse 1 +âm 1 +וכ 1 +itatea 1 +stå 1 +лож 1 +වත් 1 +தை 1 +čių 1 +여 1 +ально 1 +▁Hor 1 +aji 1 +▁אַ 1 +▁કર 1 +ében 1 +▁tab 1 +fec 1 +▁Fri 1 +男 1 +ử 1 +▁pm 1 +▁пот 1 +东 1 +っ 1 +▁bod 1 +ളി 1 +▁vind 1 +ସ୍ 1 +cem 1 +vs 1 +室 1 +▁mới 1 +яс 1 +kh 1 +liko 1 +▁lugar 1 +▁gå 1 +▁jobb 1 +▁free 1 +NS 1 +▁back 1 +▁sehr 1 +σεις 1 +▁ass 1 +▁frá 1 +▁nå 1 +เลย 1 +ελ 1 +ື 1 +▁கா 1 +내 1 +▁nye 1 +▁Kal 1 +▁pov 1 +▁esp 1 +▁nok 1 +▁ส 1 +▁Ку 1 +▁general 1 +▁сред 1 +nyi 1 +▁част 1 +양 1 +tru 1 +ister 1 +▁Til 1 +▁dann 1 +ान 1 +רט 1 +▁상 1 +▁май 1 +رق 1 +▁Din 1 +äh 1 +▁czas 1 +gem 1 +ého 1 +▁muy 1 +▁Nem 1 +කට 1 +▁hoe 1 +ský 1 +ենք 1 +▁tij 1 +▁μέ 1 +▁조 1 +larının 1 +▁તો 1 +EK 1 +ама 1 +▁كان 1 +Na 1 +ത്തെ 1 +cil 1 +▁leur 1 +ism 1 +▁জ 1 +مار 1 +жу 1 +zes 1 +ữ 1 +ალი 1 +▁prim 1 +87 1 +▁کنید 1 +▁Sed 1 +ัก 1 +ними 1 +▁ໃນ 1 +▁Ale 1 +كم 1 +ijos 1 +▁Ant 1 +بط 1 +llu 1 +say 1 +▁לש 1 +版 1 +▁ሲ 1 +udo 1 +93 1 +▁Ι 1 +іп 1 +▁район 1 +වු 1 +გა 1 +کس 1 +ね 1 +ukan 1 +▁finns 1 +▁শ 1 +▁સા 1 +ψ 1 +▁Ве 1 +ိုး 1 +▁ສ 1 +▁រ 1 +ează 1 +ális 1 +نده 1 +▁ст 1 +ื 1 +σαν 1 +activ 1 +약 1 +ич 1 +volu 1 +prend 1 +▁izan 1 +卡 1 +ជា 1 +▁към 1 +▁tren 1 +▁ווי 1 +nul 1 +сті 1 +वार 1 +師 1 +teko 1 +▁ਵਿੱਚ 1 +91 1 +▁यह 1 +▁website 1 +▁пла 1 +grad 1 +lot 1 +▁cơ 1 +adda 1 +ません 1 +ട്ടി 1 +▁â 1 +▁खा 1 +▁nije 1 +kes 1 +现 1 +▁hə 1 +▁والم 1 +▁କରି 1 +нски 1 +The 1 +▁cele 1 +▁stat 1 +其他 1 +စာ 1 +tine 1 +产品 1 +▁thi 1 +▁நா 1 +没 1 +த்தில் 1 +▁anh 1 +ška 1 +cza 1 +ժ 1 +▁cost 1 +Pa 1 +лө 1 +heit 1 +ông 1 +λογ 1 +▁صورت 1 +long 1 +nka 1 +انت 1 +▁Ah 1 +ണി 1 +▁2004 1 +▁dob 1 +41 1 +لىرى 1 +ģi 1 +▁การ 1 +▁corre 1 +▁रहे 1 +cm 1 +pita 1 +▁έχει 1 +اري 1 +▁tipo 1 +▁నా 1 +▁set 1 +线 1 +▁11. 1 +лег 1 +دە 1 +▁hä 1 +▁фа 1 +ቶ 1 +▁내 1 +að 1 +▁සි 1 +▁institu 1 +▁way 1 +ffi 1 +ξη 1 +目前 1 +▁שא 1 +oga 1 +▁εξ 1 +ມາ 1 +ව් 1 +▁время 1 +▁دار 1 +රා 1 +বা 1 +ാം 1 +בד 1 +▁dira 1 +vice 1 +致 1 +জা 1 +ติ 1 +▁beg 1 +vant 1 +hana 1 +ໃຫ້ 1 +jā 1 +tás 1 +▁speci 1 +▁යා 1 +▁Ihre 1 +tada 1 +토 1 +ох 1 +৪ 1 +နေ 1 +unta 1 +tko 1 +кар 1 +eke 1 +▁eigen 1 +好的 1 +ತು 1 +▁koh 1 +als 1 +▁۔ 1 +II 1 +mmel 1 +יא 1 +▁hơn 1 +▁bang 1 +યા 1 +мал 1 +ವು 1 +权 1 +hay 1 +▁SE 1 +pag 1 +▁Bor 1 +▁metod 1 +▁1- 1 +vije 1 +▁하 1 +▁pasa 1 +▁< 1 +zek 1 +として 1 +uer 1 +lish 1 +zir 1 +▁shumë 1 +wang 1 +▁Wie 1 +vý 1 +▁Sport 1 +nung 1 +หา 1 +▁tej 1 +ճ 1 +ਮਾ 1 +방 1 +கை 1 +မွ 1 +עצ 1 +▁çox 1 +អ 1 +火 1 +▁cit 1 +සා 1 +sili 1 +▁கு 1 +σω 1 +▁Mac 1 +jek 1 +кре 1 +▁الل 1 +▁것 1 +問題 1 +ち 1 +▁Ө 1 +ල්ල 1 +vra 1 +布 1 +lė 1 +▁تق 1 +▁دیگر 1 +字 1 +▁klar 1 +ಗಳನ್ನು 1 +toria 1 +▁وب 1 +▁information 1 +具 1 +iyyət 1 +ndra 1 +յ 1 +یان 1 +kiem 1 +RT 1 +ക്കു 1 +▁eru 1 +呢 1 +yl 1 +例 1 +tun 1 +ając 1 +▁elit 1 +ıyor 1 +веде 1 +িত 1 +▁mich 1 +▁Ի 1 +pper 1 +ായി 1 +▁WA 1 +gla 1 +ଖ 1 +اخ 1 +cca 1 +ന്റെ 1 +ał 1 +ጅ 1 +pai 1 +yk 1 +టీ 1 +▁Europa 1 +තා 1 +дет 1 +▁Việt 1 +ตา 1 +▁reci 1 +▁savo 1 +▁pic 1 +▁ඇති 1 +▁porque 1 +된 1 +64 1 +▁godt 1 +SK 1 +▁செ 1 +قی 1 +том 1 +ቆ 1 +^ 1 +ລະ 1 +现在 1 +▁grad 1 +党 1 +▁גם 1 +thu 1 +▁ұ 1 +ئے 1 +धि 1 +▁Christ 1 +▁مخ 1 +rə 1 +sum 1 +▁schon 1 +給 1 +▁ktoré 1 +队 1 +▁არა 1 +▁vasta 1 +▁pil 1 +асы 1 +▁ако 1 +Ne 1 +▁ਲਈ 1 +kil 1 +jus 1 +ڌ 1 +ными 1 +ifi 1 +▁Star 1 +▁देख 1 +▁مق 1 +นั้น 1 +▁නො 1 +▁Windows 1 +час 1 +除 1 +능 1 +ڊ 1 +▁wordt 1 +oedd 1 +ੌ 1 +▁тер 1 +बी 1 +オ 1 +шка 1 +ról 1 +▁tit 1 +пози 1 +▁Cre 1 +# 1 +ంత 1 +sert 1 +▁työ 1 +നെ 1 +▁aika 1 +ದಾ 1 +▁Indonesia 1 +阿 1 +▁ਖ 1 +▁произ 1 +wis 1 +ଥିବା 1 +▁Europe 1 +▁чем 1 +கு 1 +فی 1 +▁vre 1 +▁Fran 1 +▁بم 1 +try 1 +fil 1 +▁ذ 1 +tisk 1 +ıb 1 +ଷ 1 +ском 1 +ູ 1 +▁Land 1 +!" 1 +▁nên 1 +rata 1 +ത്തി 1 +▁Pal 1 +rig 1 +連 1 +▁Ros 1 +▁लाग 1 +▁fol 1 +اي 1 +ము 1 +景 1 +tiga 1 +ಮಾ 1 +lıq 1 +경 1 +▁cô 1 +roč 1 +itza 1 +▁realiza 1 +áil 1 +▁weer 1 +тов 1 +▁både 1 +▁2018. 1 +▁пар 1 +bru 1 +▁zona 1 +▁allt 1 +▁gla 1 +ssä 1 +лася 1 +tent 1 +ខ 1 +גע 1 +▁premi 1 +▁hợp 1 +▁moi 1 +داد 1 +▁elő 1 +▁saja 1 +ພ 1 +äng 1 +cos 1 +kos 1 +bot 1 +ထား 1 +难 1 +Մ 1 +ய் 1 +hui 1 +شی 1 +▁रा 1 +anie 1 +▁πα 1 +lán 1 +▁চ 1 +▁өт 1 +ever 1 +ché 1 +段 1 +战 1 +▁않 1 +▁hö 1 +AG 1 +$ 1 +cou 1 +▁siya 1 +اش 1 +▁треба 1 +sik 1 +▁fest 1 +▁kah 1 +য 1 +▁into 1 +бек 1 +▁mel 1 +ాల 1 +▁Gr 1 +ጀ 1 +英 1 +jev 1 +第一 1 +mbra 1 +▁labor 1 +્ય 1 +ไทย 1 +атив 1 +▁которые 1 +▁Bel 1 +hle 1 +KA 1 +▁sinh 1 +▁меня 1 +▁ime 1 +cje 1 +▁આપ 1 +▁here 1 +zim 1 +▁puede 1 +hai 1 +дары 1 +▁thực 1 +ích 1 +ење 1 +خر 1 +▁hab 1 +fun 1 +▁zen 1 +ሱ 1 +тын 1 +部分 1 +越 1 +తా 1 +ប្រ 1 +מד 1 +▁године 1 +▁bus 1 +જા 1 +▁pirm 1 +▁lé 1 +▁modo 1 +իս 1 +▁ઉ 1 +IA 1 +ẻ 1 +ቶች 1 +ങ്ങ 1 +tý 1 +ອນ 1 +▁በመ 1 +▁Он 1 +kala 1 +▁milli 1 +▁pola 1 +rai 1 +▁Krist 1 +Vi 1 +ikka 1 +▁trata 1 +kirin 1 +▁చే 1 +方法 1 +▁theo 1 +信息 1 +php 1 +▁Mad 1 +▁Non 1 +ської 1 +▁ਗ 1 +▁lý 1 +עה 1 +▁بول 1 +▁వె 1 +րի 1 +OP 1 +gine 1 +▁Plan 1 +▁despre 1 +FI 1 +▁På 1 +rma 1 +пан 1 +aks 1 +▁merupakan 1 +▁Tai 1 +▁यस 1 +▁Ay 1 +lē 1 +ые 1 +alta 1 +สามารถ 1 +ίου 1 +تها 1 +wia 1 +▁кара 1 +لەر 1 +▁देश 1 +72 1 +음 1 +▁kort 1 +ской 1 +법 1 +idades 1 +ਬਾ 1 +são 1 +anı 1 +▁افغانستان 1 +处 1 +بو 1 +ING 1 +ināt 1 +▁fly 1 +lere 1 +以上 1 +uro 1 +पी 1 +पुर 1 +еб 1 +нт 1 +usu 1 +▁לב 1 +rish 1 +fung 1 +▁anno 1 +▁کشور 1 +ួ 1 +▁yaşa 1 +kku 1 +히 1 +▁علی 1 +▁día 1 +ðu 1 +料 1 +ούν 1 +▁exp 1 +▁यो 1 +ಯಾ 1 +atur 1 +▁tant 1 +▁kart 1 +verk 1 +▁bad 1 +▁400 1 +▁แต่ 1 +▁रो 1 +сці 1 +▁интерес 1 +kê 1 +ARA 1 +▁tir 1 +▁महा 1 +▁Ле 1 +▁hebben 1 +▁dre 1 +▁בר 1 +mica 1 +▁John 1 +▁Қ 1 +ết 1 +▁mind 1 +▁PO 1 +▁registr 1 +委 1 +dda 1 +drag 1 +博 1 +-10 1 +▁mare 1 +よう 1 +สี 1 +止 1 +ઝ 1 +▁yıl 1 +▁bay 1 +já 1 +▁34 1 +கா 1 +сна 1 +▁стар 1 +eau 1 +veni 1 +เรื่อง 1 +дав 1 +▁cr 1 +▁գործ 1 +osti 1 +▁μου 1 +бира 1 +मध्ये 1 +۴ 1 +wydd 1 +ору 1 +යන් 1 +입니다 1 +mission 1 +טע 1 +یس 1 +lni 1 +mata 1 +▁baik 1 +▁tanto 1 +합니다 1 +世 1 +ŝ 1 +▁Zeit 1 +청 1 +તિ 1 +rian 1 +沒有 1 +ሞ 1 +oval 1 +ଲି 1 +område 1 +▁especial 1 +kład 1 +キ 1 +gno 1 +▁خا 1 +దు 1 +ує 1 +服務 1 +өг 1 +▁sai 1 +lles 1 +影 1 +ຫຼ 1 +вет 1 +رام 1 +നോ 1 +rne 1 +▁επ 1 +даг 1 +teľ 1 +▁nào 1 +انو 1 +VE 1 +ST 1 +别 1 +?! 1 +τες 1 +ged 1 +кро 1 +נע 1 +▁თუ 1 +微 1 +▁ан 1 +▁эле 1 +uj 1 +▁Хо 1 +所有 1 +מל 1 +LU 1 +န်း 1 +▁12. 1 +▁¿ 1 +▁dhi 1 +▁Ing 1 +An 1 +达 1 +oč 1 +lf 1 +oor 1 +關 1 +▁Vá 1 +diri 1 +ors 1 +▁jej 1 +jim 1 +▁eh 1 +ουμε 1 +▁сло 1 +经 1 +▁ശ 1 +ked 1 +▁flo 1 +ഡ് 1 +вой 1 +ils 1 +βά 1 +▁кан 1 +hå 1 +២ 1 +нето 1 +▁rất 1 +ერი 1 +▁kry 1 +gge 1 +▁tego 1 +sho 1 +▁Los 1 +▁janë 1 +▁той 1 +▁باید 1 +▁Android 1 +▁Kr 1 +Li 1 +іць 1 +承 1 +▁07 1 +ischen 1 +▁(4) 1 +ומ 1 +न्त 1 +ቁ 1 +keta 1 +▁हि 1 +வர் 1 +▁off 1 +▁cách 1 +▁말 1 +nggu 1 +消 1 +ଫ 1 +▁عليه 1 +ອງ 1 +ях 1 +▁vei 1 +vne 1 +ତ୍ର 1 +lung 1 +blo 1 +ສາ 1 +▁sản 1 +▁comunica 1 +fr 1 +jih 1 +gé 1 +пла 1 +spekt 1 +▁lin 1 +medi 1 +رف 1 +ografi 1 +▁الط 1 +ngu 1 +רות 1 +isia 1 +ロ 1 +▁Қазақстан 1 +▁kunne 1 +▁disse 1 +عر 1 +шен 1 +မ်း 1 +▁ਚ 1 +▁direkt 1 +ധ 1 +▁RE 1 +ٽي 1 +▁compar 1 +▁Us 1 +▁Жа 1 +号 1 +▁menu 1 +거 1 +▁ihr 1 +▁harus 1 +ött 1 +øy 1 +▁pli 1 +▁تح 1 +rol 1 +▁ਨਾਲ 1 +ಚ 1 +▁воз 1 +設 1 +ফ 1 +AZ 1 +nke 1 +เอ 1 +เบ 1 +▁chúng 1 +inə 1 +ทุก 1 +造 1 +æk 1 +schen 1 +vio 1 +ಿಸಿ 1 +हरू 1 +ിന്റെ 1 +▁liv 1 +▁школ 1 +▁હ 1 +▁last 1 +UK 1 +▁poate 1 +pti 1 +▁வே 1 +dele 1 +▁Sel 1 +▁godine 1 +▁pad 1 +▁করে 1 +िका 1 +▁Bas 1 +работ 1 +Mo 1 +节 1 +▁yet 1 +כת 1 +▁kontrol 1 +ภ 1 +കള 1 +ခု 1 +IE 1 +▁biết 1 +▁склад 1 +inės 1 +rink 1 +شان 1 +▁ditu 1 +ingu 1 +ип 1 +▁იმ 1 +side 1 +▁vita 1 +▁किया 1 +▁fast 1 +iner 1 +աշ 1 +ڏ 1 +▁сер 1 +හි 1 +ന്നു 1 +▁vide 1 +▁يو 1 +न्द 1 +ىسى 1 +▁zem 1 +alam 1 +яв 1 +ಪ್ 1 +جه 1 +▁aga 1 +sť 1 +ғ 1 +▁gerek 1 +집 1 +чет 1 +rás 1 +朋友 1 +stin 1 +ndar 1 +fall 1 +hoz 1 +ről 1 +tuk 1 +ଲେ 1 +▁kind 1 +직 1 +mann 1 +ppi 1 +eel 1 +ского 1 +▁اما 1 +ključ 1 +▁ച 1 +심 1 +ford 1 +råd 1 +ιν 1 +où 1 +порт 1 +▁são 1 +▁Это 1 +bab 1 +μι 1 +▁बे 1 +▁interna 1 +▁करने 1 +යෙන් 1 +▁Yo 1 +ส่วน 1 +'' 1 +מים 1 +▁Ки 1 +bio 1 +▁две 1 +▁text 1 +HI 1 +ದಿ 1 +୍ୟା 1 +▁دارد 1 +ojnë 1 +ського 1 +▁pap 1 +htu 1 +▁cs 1 +كل 1 +рет 1 +必要 1 +vät 1 +今年 1 +ڳ 1 +ತಾ 1 +帶 1 +▁tao 1 +љ 1 +▁тө 1 +minen 1 +▁ۋە 1 +▁gì 1 +ตร 1 +▁badan 1 +නේ 1 +धा 1 +соб 1 +اني 1 +▁Ха 1 +ଦି 1 +▁една 1 +ሆነ 1 +üz 1 +▁điều 1 +▁xo 1 +▁αυτό 1 +кы 1 +▁കാ 1 +▁atas 1 +MU 1 +iam 1 +▁няма 1 +▁بت 1 +۹ 1 +קי 1 +слав 1 +ây 1 +價 1 +▁ادا 1 +▁गरेको 1 +▁స్ 1 +▁예 1 +твор 1 +▁wieder 1 +kata 1 +dov 1 +▁Read 1 +ych 1 +уп 1 +lta 1 +ТА 1 +borg 1 +ינ 1 +▁energi 1 +vara 1 +aha 1 +ต่อ 1 +àn 1 +▁ကို 1 +بت 1 +▁fotografi 1 +▁през 1 +▁https 1 +ská 1 +▁рэ 1 +kę 1 +▁kaip 1 +▁crea 1 +▁2- 1 +▁period 1 +ember 1 +▁bé 1 +kta 1 +мин 1 +ਹਾ 1 +▁ہ 1 +▁kale 1 +ній 1 +კო 1 +город 1 +▁ნა 1 +命 1 +zí 1 +▁très 1 +▁দ 1 +மி 1 +ік 1 +vita 1 +▁sammen 1 +ዲ 1 +đen 1 +teur 1 +كي 1 +נס 1 +▁Kir 1 +зо 1 +ັກ 1 +▁Super 1 +\\ 1 +▁между 1 +▁вам 1 +mez 1 +▁mora 1 +ote 1 +kė 1 +▁ভ 1 +öm 1 +גל 1 +TT 1 +вши 1 +සේ 1 +тап 1 +kami 1 +▁Λ 1 +ять 1 +RS 1 +能力 1 +եմ 1 +χα 1 +▁siden 1 +▁զ 1 +ंद 1 +ඳ 1 +▁important 1 +kara 1 +vno 1 +gio 1 +tza 1 +▁05 1 +装 1 +▁dje 1 +▁הס 1 +ките 1 +សា 1 +▁nec 1 +▁pana 1 +▁මෙ 1 +▁הנ 1 +maya 1 +ôn 1 +ە 1 +▁good 1 +ря 1 +פת 1 +ढ 1 +▁един 1 +观 1 +ทั้ง 1 +▁Apple 1 +രം 1 +▁Res 1 +別 1 +▁mam 1 +▁nada 1 +IC 1 +пло 1 +▁bri 1 +ଡ 1 +설 1 +lardan 1 +pati 1 +inių 1 +ผล 1 +股 1 +sə 1 +στη 1 +jum 1 +▁lát 1 +▁mene 1 +▁नाही 1 +юць 1 +index 1 +▁Bank 1 +ech 1 +▁oc 1 +▁unsere 1 +▁Κα 1 +▁ಸಾ 1 +▁görə 1 +pedi 1 +▁tud 1 +ିତ 1 +ოდ 1 +ration 1 +kje 1 +▁Vel 1 +▁গ 1 +200 1 +▁tú 1 +čas 1 +၏ 1 +▁ری 1 +गर 1 +owanie 1 +zeit 1 +▁Vä 1 +▁ਤੇ 1 +ība 1 +ítás 1 +▁show 1 +▁സ് 1 +▁temps 1 +▁What 1 +▁ಉ 1 +ėjo 1 +ସି 1 +၁ 1 +이다 1 +tani 1 +lichen 1 +▁cookies 1 +itte 1 +▁simple 1 +plo 1 +дов 1 +华 1 +▁بین 1 +亚 1 +ندا 1 +看到 1 +▁može 1 +alka 1 +irt 1 +▁pow 1 +Ó 1 +いる 1 +付 1 +▁fl 1 +▁sử 1 +aux 1 +▁mee 1 +ders 1 +uoja 1 +mah 1 +门 1 +속 1 +iche 1 +care 1 +▁due 1 +▁여 1 +stí 1 +ลิ 1 +ţii 1 +हु 1 +▁uchun 1 +mara 1 +▁mur 1 +▁qar 1 +ZI 1 +uga 1 +děl 1 +ain 1 +owania 1 +cchi 1 +ראש 1 +ลา 1 +▁gol 1 +τική 1 +ირ 1 +份 1 +yı 1 +▁قد 1 +▁דער 1 +▁ekonomi 1 +▁Kol 1 +证 1 +iset 1 +▁mol 1 +▁marca 1 +կան 1 +Ե 1 +shop 1 +имо 1 +носи 1 +מן 1 +Ո 1 +ந 1 +ette 1 +တွေ 1 +求 1 +ட்டி 1 +tır 1 +ウ 1 +വാ 1 +lly 1 +▁कु 1 +mmen 1 +▁İn 1 +▁wurde 1 +要求 1 +သိ 1 +▁Program 1 +▁गु 1 +▁ખ 1 +мон 1 +sional 1 +ಟಿ 1 +віт 1 +תר 1 +කා 1 +got 1 +कै 1 +ishi 1 +▁administra 1 +▁гр 1 +MB 1 +▁ជា 1 +▁тех 1 +مو 1 +stig 1 +она 1 +lič 1 +pozi 1 +▁گا 1 +یز 1 +▁ਤ 1 +照 1 +gai 1 +kap 1 +gram 1 +rok 1 +aeth 1 +ದೆ 1 +▁Copyright 1 +так 1 +zien 1 +рин 1 +▁olla 1 +▁pia 1 +▁३ 1 +ант 1 +уваат 1 +主要 1 +yer 1 +▁love 1 +களை 1 +sins 1 +କ୍ 1 +▁hasta 1 +minister 1 +ată 1 +▁thời 1 +arte 1 +▁ქ 1 +▁хар 1 +йт 1 +mą 1 +jár 1 +бал 1 +▁meu 1 +▁weiter 1 +▁estis 1 +ڭ 1 +ром 1 +fte 1 +hid 1 +cum 1 +tv 1 +完 1 +وري 1 +▁لیے 1 +druž 1 +ச்ச 1 +▁mens 1 +што 1 +▁لاء 1 +▁pře 1 +lā 1 +lø 1 +▁ट 1 +рек 1 +сни 1 +▁см 1 +▁nr 1 +بع 1 +raš 1 +ଭ 1 +ৃ 1 +ვის 1 +▁மு 1 +нал 1 +▁szer 1 +▁Ли 1 +▁лет 1 +▁ху 1 +дей 1 +ència 1 +▁typ 1 +ợ 1 +АР 1 +▁სი 1 +▁alles 1 +פל 1 +▁когда 1 +كر 1 +▁Top 1 +▁stop 1 +▁კი 1 +▁mejor 1 +▁same 1 +odi 1 +▁oko 1 +▁발 1 +▁rész 1 +▁Ү 1 +നാ 1 +▁wedi 1 +▁thông 1 +▁работ 1 +▁παρ 1 +▁sum 1 +luar 1 +ิน 1 +通过 1 +▁bili 1 +▁educa 1 +▁permet 1 +ेल 1 +ঁ 1 +ик 1 +rau 1 +्न 1 +▁gebruik 1 +:“ 1 +ሎ 1 +لان 1 +ney 1 +iamo 1 +▁déc 1 +ọ 1 +ቻ 1 +ỗ 1 +▁diese 1 +▁aplica 1 +▁živ 1 +ους 1 +SO 1 +▁κατά 1 +▁ሰ 1 +rî 1 +pir 1 +▁αλλά 1 +▁qil 1 +▁ရ 1 +임 1 +▁bahwa 1 +ikat 1 +lica 1 +85 1 +дык 1 +GE 1 +më 1 +▁Song 1 +பா 1 +skog 1 +▁tư 1 +uhan 1 +古 1 +▁ٻ 1 +合作 1 +пен 1 +声 1 +owego 1 +شا 1 +อง 1 +සු 1 +لك 1 +▁कम 1 +ਲੀ 1 +ления 1 +ným 1 +▁ور 1 +▁ഓ 1 +▁port 1 +сла 1 +teil 1 +油 1 +버 1 +చ 1 +▁Վ 1 +▁Sloven 1 +punkt 1 +ொ 1 +Le 1 +▁pang 1 +▁حق 1 +▁több 1 +tant 1 +▁актив 1 +هن 1 +ονται 1 +▁kos 1 +▁dzie 1 +राम 1 +▁inclu 1 +▁comment 1 +ký 1 +▁ที่ 1 +psi 1 +рус 1 +▁gibt 1 +▁nhưng 1 +▁visa 1 +▁škol 1 +ఖ 1 +గి 1 +him 1 +▁anni 1 +} 1 +▁ಕಾ 1 +رش 1 +скі 1 +▁پار 1 +▁automat 1 +见 1 +kini 1 +服 1 +▁né 1 +еж 1 +служб 1 +▁மா 1 +▁uku 1 +▁kategori 1 +skom 1 +dens 1 +▁exist 1 +ੀਆਂ 1 +▁merk 1 +ність 1 +ының 1 +▁idea 1 +▁hij 1 +нэ 1 +ées 1 +დო 1 +др 1 +▁бор 1 +ез 1 +施 1 +manda 1 +arı 1 +▁propos 1 +▁ډ 1 +eix 1 +GI 1 +WA 1 +▁līdz 1 +ðar 1 +▁kost 1 +条 1 +▁ھ 1 +▁Egy 1 +рд 1 +▁sv 1 +また 1 +▁آهن 1 +كون 1 +ពី 1 +▁fur 1 +▁edir 1 +מש 1 +▁מע 1 +▁Norge 1 +داری 1 +рма 1 +▁cin 1 +▁gor 1 +ಥ 1 +ంట 1 +ини 1 +пі 1 +DU 1 +kro 1 +知道 1 +ично 1 +ћи 1 +https 1 +▁ഫ 1 +▁σας 1 +にも 1 +▁שמ 1 +ats 1 +▁Of 1 +▁பு 1 +▁folk 1 +ັບ 1 +ical 1 +eng 1 +ٹی 1 +▁38 1 +לע 1 +▁اند 1 +rap 1 +▁funk 1 +▁tap 1 +▁очень 1 +▁Cal 1 +▁cen 1 +ጽ 1 +▁sia 1 +学生 1 +▁If 1 +ॅ 1 +▁استفاده 1 +▁ఒక 1 +2012 1 +그 1 +▁gera 1 +ein 1 +▁Ва 1 +హా 1 +rana 1 +▁다 1 +テ 1 +▁Су 1 +▁iPhone 1 +usia 1 +▁prv 1 +▁çe 1 +▁lehet 1 +▁Hai 1 +noj 1 +لن 1 +石 1 +peri 1 +▁masih 1 +▁pik 1 +пас 1 +▁сум 1 +тър 1 +ଏ 1 +सं 1 +▁هڪ 1 +duc 1 +▁Në 1 +ദ് 1 +▁szám 1 +▁petit 1 +▁apo 1 +▁1000 1 +▁trá 1 +報 1 +क्त 1 +લે 1 +טו 1 +我的 1 +▁कहा 1 +arbeid 1 +▁fá 1 +試 1 +▁شي 1 +حم 1 +▁Tim 1 +dina 1 +üt 1 +imus 1 +स्य 1 +וצ 1 +ండి 1 +lă 1 +න්නේ 1 +▁svet 1 +જી 1 +ภาพ 1 +ጎ 1 +Fi 1 +ић 1 +apan 1 +▁който 1 +שר 1 +той 1 +▁ଭ 1 +▁même 1 +節 1 +福 1 +▁Una 1 +▁пера 1 +дің 1 +找 1 +rado 1 +گو 1 +مین 1 +τό 1 +IV 1 +생 1 +organisa 1 +त्त 1 +▁кри 1 +ນາ 1 +▁игр 1 +▁ਤੋਂ 1 +▁Cer 1 +தான் 1 +ៀ 1 +▁Че 1 +張 1 +▁look 1 +▁quae 1 +Հ 1 +yah 1 +ຄວາມ 1 +▁його 1 +治 1 +出来 1 +बर 1 +▁Wat 1 +IK 1 +rib 1 +మ్ 1 +종 1 +ยัง 1 +니다 1 +▁Ро 1 +ësh 1 +ราคา 1 +▁cro 1 +дзя 1 +ецца 1 +んで 1 +्व 1 +achta 1 +▁සං 1 +еле 1 +▁παρα 1 +cken 1 +לא 1 +▁fie 1 +變 1 +izm 1 +差 1 +▁प्रति 1 +Η 1 +tzt 1 +▁හා 1 +ဘာ 1 +iyê 1 +almente 1 +▁Tam 1 +▁Դ 1 +ような 1 +▁invest 1 +▁НА 1 +▁sla 1 +тив 1 +▁пол 1 +問 1 +ונ 1 +ping 1 +opp 1 +▁ჩა 1 +▁trường 1 +▁02 1 +▁sna 1 +ვარ 1 +pass 1 +▁ME 1 +▁ହୋଇ 1 +мя 1 +▁olduğu 1 +▁مان 1 +▁tart 1 +ней 1 +▁Blog 1 +▁anal 1 +▁Sil 1 +▁어 1 +▁terra 1 +czne 1 +annya 1 +活動 1 +ୂ 1 +▁સ્ 1 +▁rend 1 +ज़ 1 +kte 1 +ען 1 +omi 1 +وال 1 +dala 1 +▁prof 1 +▁ਪ੍ਰ 1 +СТ 1 +▁مۇ 1 +▁kendi 1 +組 1 +wch 1 +ження 1 +ars 1 +▁אז 1 +ಕಾ 1 +▁был 1 +ದ್ 1 +▁bilo 1 +▁digital 1 +▁áll 1 +▁마 1 +▁defini 1 +▁със 1 +ાય 1 +มัน 1 +▁vég 1 +urs 1 +▁second 1 +ვრ 1 +▁termin 1 +▁बु 1 +▁הק 1 +▁「 1 +▁жо 1 +ຣ 1 +બા 1 +▁دور 1 +ned 1 +▁veik 1 +itos 1 +لې 1 +richt 1 +ዩ 1 +▁પા 1 +ulla 1 +▁ante 1 +▁Cel 1 +▁пр 1 +▁Sto 1 +▁беше 1 +รถ 1 +mic 1 +Č 1 +▁ਹ 1 +ครับ 1 +ჯ 1 +శా 1 +▁peut 1 +kama 1 +Й 1 +itse 1 +▁mari 1 +▁iar 1 +cial 1 +-5 1 +▁publik 1 +وش 1 +Ү 1 +kite 1 +▁37 1 +קל 1 +डे 1 +▁וב 1 +大学 1 +▁yg 1 +світ 1 +▁haar 1 +ണ്ട 1 +ലെ 1 +▁मो 1 +lima 1 +▁color 1 +သား 1 +▁pravi 1 +ুল 1 +▁ಜ 1 +דה 1 +▁før 1 +▁στον 1 +▁Ai 1 +դր 1 +▁കൊ 1 +pes 1 +ಂಡ 1 +дү 1 +▁új 1 +▁bukan 1 +ออก 1 +idas 1 +▁töö 1 +ಕ್ಕ 1 +▁bera 1 +форм 1 +▁dib 1 +ód 1 +ญ 1 +▁ilk 1 +▁dol 1 +ifa 1 +중 1 +ਦੇ 1 +gend 1 +▁Tro 1 +▁India 1 +reich 1 +** 1 +сад 1 +iyat 1 +排 1 +▁зо 1 +mbang 1 +നം 1 +zī 1 +ಗ್ 1 +▁store 1 +▁rest 1 +称 1 +सर 1 +▁think 1 +▁Kri 1 +▁गो 1 +ाव 1 +рах 1 +ager 1 +▁ingen 1 +тыр 1 +aŭ 1 +ива 1 +変 1 +ето 1 +ኮ 1 +▁priv 1 +دىن 1 +VO 1 +▁करें 1 +בור 1 +udu 1 +חת 1 +මි 1 +座 1 +▁scri 1 +▁υπο 1 +ικού 1 +ေး 1 +uze 1 +▁Real 1 +▁être 1 +rje 1 +▁කරන්න 1 +иг 1 +▁کہا 1 +may 1 +▁48 1 +▁જો 1 +▁ef 1 +džia 1 +qué 1 +▁ता 1 +ਦੀ 1 +رك 1 +東 1 +دل 1 +▁ktorý 1 +itar 1 +έρ 1 +▁2003 1 +ικής 1 +▁article 1 +cido 1 +ください 1 +iske 1 +band 1 +ед 1 +ຈະ 1 +gü 1 +▁spel 1 +ਰੇ 1 +導 1 +आ 1 +ект 1 +▁cosa 1 +рок 1 +لد 1 +ျ 1 +▁solu 1 +เป 1 +եկ 1 +kazi 1 +๊ 1 +ውን 1 +▁કરી 1 +▁tau 1 +tali 1 +ുള്ള 1 +▁στις 1 +ahkan 1 +рад 1 +cor 1 +▁musi 1 +▁sebe 1 +ums 1 +▁gara 1 +lice 1 +mbar 1 +▁যা 1 +▁הפ 1 +ĝo 1 +▁lagu 1 +▁اپنے 1 +▁نہ 1 +▁вр 1 +密 1 +▁também 1 +-12 1 +▁App 1 +▁Kra 1 +ндай 1 +არი 1 +úc 1 +Ta 1 +Ն 1 +玩 1 +vā 1 +▁داد 1 +amh 1 +руж 1 +▁buvo 1 +dk 1 +vert 1 +▁flere 1 +rz 1 +łu 1 +cti 1 +Ə 1 +ზი 1 +バ 1 +्र 1 +▁ਸਿੰਘ 1 +▁lên 1 +▁гар 1 +სტ 1 +iel 1 +rab 1 +▁Mus 1 +хан 1 +ီး 1 +слу 1 +ഡി 1 +čki 1 +▁koja 1 +ချ 1 +bod 1 +▁ਇਸ 1 +పా 1 +▁Pred 1 +ambi 1 +sker 1 +▁Ul 1 +мор 1 +▁ద 1 +там 1 +▁මම 1 +约 1 +▁bardzo 1 +▁vii 1 +▁grand 1 +tais 1 +ෂ 1 +ոս 1 +▁түр 1 +▁року 1 +ální 1 +▁কা 1 +тори 1 +ời 1 +ayı 1 +▁aquest 1 +€ 1 +യി 1 +ျမ 1 +▁شخص 1 +▁cli 1 +と思います 1 +ič 1 +wij 1 +ٺ 1 +nosť 1 +self 1 +래 1 +▁tylko 1 +▁پس 1 +НА 1 +▁ጥ 1 +കര 1 +▁طرح 1 +ordina 1 +ace 1 +မာ 1 +▁동 1 +лам 1 +▁էր 1 +存 1 +投 1 +्स 1 +ரை 1 +표 1 +wyr 1 +מות 1 +ског 1 +がある 1 +znam 1 +▁Col 1 +難 1 +록 1 +▁mini 1 +cc 1 +mag 1 +orna 1 +दि 1 +unun 1 +▁bul 1 +коп 1 +ანი 1 +rés 1 +样 1 +ук 1 +clo 1 +КА 1 +tää 1 +▁Biz 1 +ика 1 +▁55 1 +▁ئې 1 +title 1 +หล 1 +ฝ 1 +▁Del 1 +вай 1 +ាយ 1 +▁izv 1 +dě 1 +чо 1 +▁khác 1 +დე 1 +IO 1 +wor 1 +jums 1 +γε 1 +▁जि 1 +▁بو 1 +veg 1 +gá 1 +DO 1 +▁घर 1 +ໃນ 1 +съ 1 +вести 1 +सि 1 +▁ат 1 +4) 1 +▁۱ 1 +asan 1 +▁න 1 +łą 1 +hib 1 +▁USA 1 +▁él 1 +вол 1 +ంటే 1 +▁ফ 1 +håll 1 +maz 1 +支 1 +▁потреб 1 +tér 1 +tuar 1 +нию 1 +▁propi 1 +hara 1 +dő 1 +▁service 1 +목 1 +րդ 1 +rama 1 +▁центр 1 +▁ideal 1 +bbi 1 +▁Kre 1 +ങ്ങള 1 +ವಾಗಿ 1 +......... 1 +▁Bet 1 +เช 1 +lada 1 +▁nej 1 +▁đồng 1 +▁detal 1 +RM 1 +▁год 1 +▁tê 1 +▁considera 1 +▁öz 1 +לט 1 +▁قال 1 +▁Kung 1 +▁// 1 +tys 1 +וג 1 +▁ಗ 1 +▁ihre 1 +wak 1 +▁무 1 +▁Gy 1 +държа 1 +۲ 1 +رح 1 +▁aur 1 +رج 1 +该 1 +legg 1 +inden 1 +aksi 1 +62 1 +▁nivel 1 +▁ብ 1 +មាន 1 +gă 1 +ಲಾ 1 +不能 1 +▁kép 1 +▁jsou 1 +Ј 1 +þ 1 +lise 1 +टर 1 +모 1 +▁تھا 1 +的是 1 +▁beliau 1 +elser 1 +SC 1 +▁خط 1 +idos 1 +רג 1 +ระ 1 +▁bë 1 +υρ 1 +eksi 1 +▁ڏ 1 +▁సినిమా 1 +▁đây 1 +קס 1 +lini 1 +cznie 1 +шко 1 +▁mí 1 +▁Tek 1 +▁које 1 +▁проблем 1 +ং 1 +▁genera 1 +▁ml 1 +▁NO 1 +▁hình 1 +▁geen 1 +这些 1 +ony 1 +лады 1 +võ 1 +▁maak 1 +צו 1 +務 1 +صور 1 +▁აღ 1 +ത്ത് 1 +▁viên 1 +ಕಿ 1 +▁duke 1 +政 1 +δα 1 +კი 1 +فة 1 +▁publi 1 +ូល 1 +שע 1 +▁kiel 1 +▁Ky 1 +▁고 1 +γκ 1 +ဖြစ် 1 +視 1 +▁Yang 1 +vå 1 +দা 1 +Ch 1 +рап 1 +ങ്ക 1 +▁کن 1 +▁posi 1 +MS 1 +种 1 +▁материал 1 +דו 1 +sek 1 +▁dünya 1 +ujú 1 +lais 1 +▁deve 1 +larni 1 +▁نمی 1 +人民 1 +季 1 +▁Ini 1 +▁طرف 1 +пор 1 +▁რე 1 +▁toimi 1 +نفس 1 +っている 1 +кова 1 +▁വാ 1 +ונה 1 +ário 1 +วง 1 +ન્ 1 +lou 1 +チ 1 +onder 1 +▁än 1 +▁ва 1 +лат 1 +▁рук 1 +robi 1 +cit 1 +▁point 1 +PE 1 +▁meget 1 +rend 1 +GB 1 +▁வா 1 +▁membuat 1 +▁financi 1 +▁centro 1 +▁cá 1 +ions 1 +▁finde 1 +▁rá 1 +กร 1 +▁profil 1 +▁quam 1 +▁Jos 1 +▁dí 1 +▁הב 1 +À 1 +fas 1 +▁सम 1 +▁össze 1 +▁ata 1 +عب 1 +▁გადა 1 +▁już 1 +รี 1 +▁dro 1 +нг 1 +žo 1 +▁mycket 1 +村 1 +▁ап 1 +ДА 1 +▁sent 1 +Қ 1 +▁treba 1 +gent 1 +દા 1 +▁sett 1 +ových 1 +site 1 +മായി 1 +▁będzie 1 +يان 1 +▁qi 1 +▁tiene 1 +вле 1 +श् 1 +ání 1 +▁което 1 +હા 1 +୨ 1 +▁sang 1 +▁sér 1 +indi 1 +વે 1 +zə 1 +だけ 1 +ậ 1 +▁لی 1 +спе 1 +▁rast 1 +/1 1 +ulo 1 +▁tapi 1 +ház 1 +кам 1 +זה 1 +▁ее 1 +වල 1 +vesti 1 +ត្រ 1 +ങ്ങൾ 1 +▁sõ 1 +ára 1 +▁run 1 +サ 1 +▁ജ 1 +בע 1 +▁начал 1 +ভ 1 +čen 1 +यो 1 +ομ 1 +hang 1 +tale 1 +▁pem 1 +應 1 +ales 1 +▁studi 1 +କ୍ଷ 1 +待 1 +▁ministr 1 +▁sli 1 +emp 1 +코 1 +▁справ 1 +য়া 1 +ጭ 1 +▁علي 1 +skriv 1 +ью 1 +ijn 1 +анс 1 +ಿದ್ದಾರೆ 1 +▁apie 1 +军 1 +▁해 1 +৫ 1 +▁sigur 1 +▁Mak 1 +▁special 1 +glio 1 +kiwa 1 +▁Spe 1 +健康 1 +ىل 1 +복 1 +kea 1 +▁Tha 1 +▁cao 1 +▁partir 1 +▁సా 1 +tür 1 +▁ነ 1 +▁Си 1 +lju 1 +▁այն 1 +arra 1 +niki 1 +ભ 1 +oti 1 +ھا 1 +▁Nord 1 +▁දෙ 1 +▁систем 1 +rent 1 +іль 1 +▁Und 1 +สา 1 +▁muut 1 +اغ 1 +ții 1 +▁жұмыс 1 +书 1 +puol 1 +PO 1 +uc 1 +inė 1 +තර 1 +୦ 1 +▁վեր 1 +▁ই 1 +▁posto 1 +AH 1 +▁suur 1 +dora 1 +▁буду 1 +형 1 +ەن 1 +▁vam 1 +▁тоа 1 +Ja 1 +▁inf 1 +▁ਸਾ 1 +ன்ற 1 +▁doen 1 +▁besar 1 +▁й 1 +▁koko 1 +▁well 1 +▁ren 1 +stęp 1 +ayo 1 +rati 1 +kaj 1 +予 1 +추 1 +親 1 +မိ 1 +달 1 +▁arasında 1 +▁zdrav 1 +ams 1 +פע 1 +ටි 1 +▁debe 1 +▁jih 1 +ၾက 1 +▁ég 1 +▁03 1 +▁fall 1 +외 1 +▁Ž 1 +熱 1 +iec 1 +▁nov 1 +ム 1 +ሕ 1 +ტე 1 +ZA 1 +▁ભ 1 +gui 1 +нні 1 +▁모 1 +屋 1 +شار 1 +▁Gen 1 +▁перед 1 +tään 1 +▁لي 1 +AV 1 +▁Nh 1 +mena 1 +▁аз 1 +cco 1 +ส่ง 1 +▁week 1 +ছে 1 +▁ଗ 1 +row 1 +vej 1 +▁geç 1 +▁Hindi 1 +ısı 1 +вез 1 +Co 1 +аж 1 +ಮಿ 1 +▁בי 1 +гр 1 +▁Պ 1 +ból 1 +▁kak 1 +eno 1 +ķ 1 +▁Mel 1 +ხე 1 +ndum 1 +▁እንዲ 1 +▁držav 1 +▁litt 1 +cun 1 +mê 1 +hou 1 +იან 1 +これ 1 +iy 1 +ኑ 1 +inda 1 +▁із 1 +▁nove 1 +▁Qui 1 +ىيە 1 +▁Free 1 +ဗ 1 +чер 1 +يح 1 +න්ද 1 +▁हम 1 +ችን 1 +▁प्रदेश 1 +উ 1 +▁буде 1 +▁mö 1 +▁así 1 +гледа 1 +▁गा 1 +dru 1 +пак 1 +▁very 1 +უმ 1 +ടു 1 +eret 1 +▁плат 1 +▁Gro 1 +▁ໄດ້ 1 +ອາ 1 +لة 1 +▁દ 1 +▁đang 1 +zam 1 +▁լ 1 +эк 1 +▁ដែល 1 +▁až 1 +裝 1 +▁उस 1 +江 1 +奇 1 +▁процес 1 +▁yön 1 +▁dil 1 +ಿದ್ದ 1 +▁Xa 1 +▁тр 1 +eux 1 +ഞ്ഞ 1 +▁иде 1 +iro 1 +ování 1 +անք 1 +▁baz 1 +▁Kam 1 +fal 1 +inis 1 +лай 1 +▁question 1 +▁Bei 1 +роз 1 +idu 1 +вно 1 +To 1 +íocht 1 +рь 1 +运 1 +▁Ana 1 +專 1 +几 1 +曾 1 +govor 1 +cro 1 +selt 1 +ण्ड 1 +gh 1 +▁þar 1 +▁Ven 1 +▁Reg 1 +▁då 1 +ട് 1 +▁ś 1 +單 1 +▁mark 1 +▁Las 1 +gled 1 +dział 1 +▁vụ 1 +ild 1 +▁اسلام 1 +▁Це 1 +שט 1 +rgan 1 +▁הד 1 +asti 1 +కే 1 +handel 1 +́ 1 +લો 1 +▁DO 1 +ונים 1 +▁only 1 +▁μ 1 +uran 1 +ოთ 1 +▁Tele 1 +ček 1 +τικά 1 +ations 1 +rel 1 +▁menye 1 +rge 1 +▁06 1 +▁مه 1 +гэ 1 +▁utili 1 +< 1 +ické 1 +▁cùng 1 +بان 1 +▁ас 1 +▁еще 1 +ants 1 +▁gele 1 +table 1 +▁3- 1 +ମ୍ 1 +zá 1 +质 1 +chy 1 +rob 1 +▁firma 1 +ъл 1 +▁최 1 +발 1 +▁선 1 +▁Maria 1 +nir 1 +dow 1 +▁ere 1 +台灣 1 +变 1 +uru 1 +▁ਵਿ 1 +eze 1 +▁rol 1 +▁לע 1 +▁khu 1 +▁sav 1 +ット 1 +『 1 +гля 1 +քի 1 +δε 1 +▁13. 1 +▁tiu 1 +▁договор 1 +zett 1 +రో 1 +PI 1 +abb 1 +票 1 +arbeit 1 +ที 1 +▁Го 1 +▁айт 1 +ည 1 +acha 1 +ţie 1 +▁فى 1 +vom 1 +增 1 +▁दा 1 +нка 1 +ờ 1 +цэ 1 +▁участ 1 +▁Бу 1 +σία 1 +▁Sant 1 +IP 1 +▁doma 1 +▁dua 1 +▁каб 1 +ভা 1 +uji 1 +類 1 +וד 1 +▁થ 1 +▁kara 1 +차 1 +▁fle 1 +▁حکومت 1 +ادر 1 +חי 1 +și 1 +因為 1 +▁75 1 +อก 1 +▁Ис 1 +▁ਲ 1 +fund 1 +▁көр 1 +▁კა 1 +riz 1 +注 1 +资 1 +tama 1 +ခံ 1 +▁এক 1 +▁jog 1 +ък 1 +▁beh 1 +กว่า 1 +萬 1 +ph 1 +ús 1 +ል። 1 +▁ایس 1 +ವನ್ನು 1 +baar 1 +iyo 1 +还是 1 +wod 1 +▁ئو 1 +ূ 1 +ക്കും 1 +確 1 +ары 1 +▁Если 1 +देश 1 +▁tutti 1 +▁será 1 +▁disa 1 +▁Türkiye 1 +Π 1 +ປະ 1 +үүд 1 +eaza 1 +▁sø 1 +▁bai 1 +vė 1 +エ 1 +레 1 +κτ 1 +гра 1 +reng 1 +enta 1 +▁Red 1 +▁multe 1 +stellen 1 +▁enim 1 +pia 1 +▁give 1 +ינו 1 +张 1 +ۋا 1 +▁jadi 1 +ండ 1 +樂 1 +▁کریں 1 +設計 1 +▁empresa 1 +gni 1 +ítés 1 +▁naše 1 +』 1 +ওয়া 1 +टि 1 +link 1 +спо 1 +eller 1 +вала 1 +jt 1 +▁ਭ 1 +pha 1 +meri 1 +üü 1 +▁коли 1 +စား 1 +ঠ 1 +▁BBC 1 +ை 1 +▁ant 1 +οί 1 +▁सह 1 +▁Як 1 +НО 1 +▁гэж 1 +તી 1 +▁ذلك 1 +জন 1 +▁ක් 1 +▁Pour 1 +ற்ற 1 +▁forum 1 +លើ 1 +Ho 1 +sser 1 +▁Nach 1 +ης 1 +▁2002 1 +ડી 1 +ష్ 1 +▁පා 1 +▁පැ 1 +▁කරන 1 +sida 1 +▁dah 1 +ニ 1 +▁انسان 1 +ğu 1 +▁şa 1 +▁Park 1 +▁אני 1 +태 1 +гла 1 +Be 1 +صول 1 +スト 1 +ските 1 +escu 1 +ധി 1 +▁Log 1 +గ్ 1 +▁prej 1 +▁viel 1 +優 1 +يار 1 +▁խ 1 +kuwa 1 +liku 1 +▁Hier 1 +nap 1 +▁Informa 1 +▁Amerika 1 +सू 1 +യെ 1 +cord 1 +გან 1 +ሊ 1 +рож 1 +kų 1 +▁اع 1 +천 1 +ματα 1 +던 1 +тың 1 +sider 1 +▁ਮੁ 1 +liz 1 +hend 1 +▁نش 1 +▁këtë 1 +ũ 1 +ผม 1 +moni 1 +儿 1 +ಿನ 1 +转 1 +ffer 1 +▁Download 1 +sége 1 +mentos 1 +▁Tä 1 +arak 1 +სახ 1 +TS 1 +itev 1 +▁مست 1 +彩 1 +▁قىل 1 +Υ 1 +итель 1 +او 1 +▁നാ 1 +▁võ 1 +ænd 1 +krat 1 +▁где 1 +pte 1 +ક્ષ 1 +▁Peng 1 +▁250 1 +▁pom 1 +pod 1 +▁кал 1 +ху 1 +hör 1 +ią 1 +hető 1 +▁спорт 1 +angkan 1 +▁ساتھ 1 +ица 1 +▁Με 1 +öö 1 +▁Br 1 +ỏ 1 +sının 1 +ක්ෂ 1 +כר 1 +لق 1 +bak 1 +▁blogg 1 +▁mali 1 +▁آر 1 +▁42 1 +▁भा 1 +arbejde 1 +▁cop 1 +ине 1 +▁លោក 1 +▁الو 1 +▁নি 1 +laki 1 +▁علم 1 +图 1 +▁деген 1 +ົດ 1 +▁പാ 1 +ildi 1 +こ 1 +jumu 1 +tzea 1 +ਜਾ 1 +ផ្ 1 +▁uni 1 +mate 1 +ລາວ 1 +trä 1 +fy 1 +ával 1 +पछि 1 +ята 1 +▁अब 1 +▁մասին 1 +τικό 1 +▁ପାଇଁ 1 +▁צ 1 +Ç 1 +▁privat 1 +▁можна 1 +isch 1 +τερ 1 +▁vari 1 +▁Wer 1 +▁KU 1 +▁yol 1 +יין 1 +сил 1 +лган 1 +тық 1 +▁tad 1 +ňa 1 +▁стран 1 +ေရး 1 +▁Vir 1 +▁upang 1 +▁kunnen 1 +▁нэг 1 +▁hành 1 +PS 1 +▁더 1 +อีก 1 +▁cont 1 +▁ست 1 +kot 1 +زل 1 +▁συ 1 +ଂ 1 +▁lever 1 +▁клас 1 +נא 1 +ック 1 +ક્ 1 +ót 1 +рак 1 +eerd 1 +▁առ 1 +▁raha 1 +▁ក 1 +▁הר 1 +ари 1 +cü 1 +▁mae 1 +되 1 +了一 1 +▁куп 1 +ះ 1 +▁ø 1 +▁finans 1 +▁කො 1 +ವರ 1 +▁acc 1 +шки 1 +▁Media 1 +▁park 1 +gyven 1 +νι 1 +ാവ 1 +атор 1 +лах 1 +inni 1 +[1] 1 +▁Parti 1 +▁ወደ 1 +maal 1 +meter 1 +сут 1 +▁dva 1 +एका 1 +▁paano 1 +vanja 1 +▁იყო 1 +▁strani 1 +сли 1 +рал 1 +▁Pie 1 +▁चि 1 +ियों 1 +▁1: 1 +▁kör 1 +▁thấy 1 +zak 1 +ыс 1 +pada 1 +▁yok 1 +üs 1 +▁гу 1 +پر 1 +▁פאר 1 +▁stabil 1 +ojë 1 +kā 1 +aci 1 +望 1 +パ 1 +▁Bay 1 +▁राज 1 +ення 1 +Te 1 +▁කළ 1 +mang 1 +ໄດ້ 1 +யி 1 +ști 1 +拍 1 +▁مورد 1 +▁prae 1 +ዶ 1 +死 1 +ường 1 +ათ 1 +▁przed 1 +▁ഭ 1 +čio 1 +ünü 1 +ವೇ 1 +мар 1 +必 1 +▁គ 1 +kš 1 +▁sev 1 +takse 1 +▁day 1 +പ് 1 +▁wan 1 +▁hvis 1 +uoti 1 +tka 1 +illä 1 +▁ფ 1 +▁confi 1 +หม 1 +ჟ 1 +she 1 +▁välja 1 +▁уз 1 +lici 1 +ព្រ 1 +▁psi 1 +▁mengu 1 +▁مد 1 +們 1 +▁aasta 1 +ança 1 +aith 1 +▁persone 1 +jte 1 +jm 1 +▁ඔබ 1 +2010 1 +界 1 +▁cần 1 +▁성 1 +千 1 +որդ 1 +anan 1 +!) 1 +द् 1 +است 1 +graph 1 +ادة 1 +sah 1 +▁ĝi 1 +▁ಬೆ 1 +vn 1 +▁pá 1 +tique 1 +▁causa 1 +▁akt 1 +而且 1 +మే 1 +▁jó 1 +▁ци 1 +▁fara 1 +vend 1 +spon 1 +უნ 1 +ພາ 1 +حت 1 +▁beberapa 1 +▁Jen 1 +▁пост 1 +oš 1 +כות 1 +ละ 1 +CC 1 +ቸው 1 +سط 1 +班 1 +▁però 1 +▁Spo 1 +果 1 +pres 1 +▁२० 1 +mais 1 +移 1 +▁play 1 +▁Camp 1 +▁δι 1 +▁ਫ 1 +ಾಗಿ 1 +▁üle 1 +ੱਖ 1 +▁гра 1 +▁Als 1 +▁સં 1 +▁PRO 1 +คือ 1 +від 1 +5) 1 +ులు 1 +▁кр 1 +▁mô 1 +cional 1 +▁III 1 +▁Was 1 +ുന്നത് 1 +▁uso 1 +▁DA 1 +tæ 1 +ミ 1 +▁timbang 1 +ភាព 1 +▁14. 1 +จัด 1 +जन 1 +▁වෙ 1 +เมื่อ 1 +▁Kun 1 +ining 1 +▁úr 1 +ikke 1 +▁тү 1 +ква 1 +▁Eng 1 +▁Ok 1 +▁hra 1 +recht 1 +▁ან 1 +▁degli 1 +▁kimi 1 +ხარ 1 +▁શ 1 +రే 1 +даа 1 +ષ 1 +imento 1 +▁niya 1 +держ 1 +อา 1 +▁Ş 1 +ź 1 +amp 1 +▁ვი 1 +வே 1 +干 1 +항 1 +less 1 +▁Next 1 +toare 1 +包括 1 +kaa 1 +▁could 1 +вата 1 +обще 1 +▁också 1 +▁bem 1 +рим 1 +toja 1 +▁была 1 +صد 1 +▁garanti 1 +觀 1 +▁وجود 1 +şə 1 +кого 1 +قول 1 +حي 1 +▁indica 1 +하여 1 +總 1 +تان 1 +вин 1 +며 1 +оло 1 +▁historia 1 +inci 1 +▁hr 1 +▁ಎಂದು 1 +▁분 1 +歌 1 +ents 1 +风 1 +▁aussi 1 +vier 1 +开始 1 +产 1 +3) 1 +▁باش 1 +▁But 1 +খা 1 +റ്റ് 1 +▁2017. 1 +▁too 1 +▁volta 1 +точ 1 +▁trình 1 +ungan 1 +▁NE 1 +▁χ 1 +नो 1 +ште 1 +益 1 +▁impre 1 +▁serie 1 +▁seç 1 +utus 1 +ците 1 +yle 1 +דע 1 +上的 1 +නවා 1 +cell 1 +اض 1 +▁អ 1 +▁није 1 +љу 1 +mien 1 +enzi 1 +ଠ 1 +▁Dy 1 +ມີ 1 +、「 1 +ិត 1 +▁ຂອງ 1 +場合 1 +शि 1 +dür 1 +लं 1 +▁2001 1 +روس 1 +▁сан 1 +▁pole 1 +▁deur 1 +▁바 1 +КО 1 +gam 1 +フ 1 +span 1 +roz 1 +赛 1 +द्र 1 +▁опера 1 +ബി 1 +NY 1 +soci 1 +▁Baş 1 +جن 1 +▁favor 1 +▁хий 1 +ນີ້ 1 +▁Cum 1 +▁aos 1 +izza 1 +ški 1 +▁prakti 1 +ുവ 1 +▁game 1 +▁ಹಾ 1 +ým 1 +▁Φ 1 +now 1 +оро 1 +tle 1 +▁можете 1 +tü 1 +▁пут 1 +زى 1 +ლებ 1 +ለም 1 +▁nhận 1 +▁até 1 +▁noen 1 +▁chce 1 +ሻ 1 +▁igen 1 +erer 1 +▁iste 1 +久 1 +질 1 +istas 1 +బ 1 +லா 1 +▁இந்த 1 +ขอ 1 +▁rek 1 +wyd 1 +മോ 1 +却 1 +box 1 +2011 1 +華 1 +OT 1 +▁စ 1 +bě 1 +问 1 +▁consum 1 +sper 1 +▁Кон 1 +▁कार्य 1 +▁algo 1 +▁มี 1 +PP 1 +top 1 +▁informacij 1 +▁scen 1 +▁kok 1 +種 1 +▁menos 1 +▁эм 1 +▁Studi 1 +▁Ста 1 +lands 1 +றை 1 +你的 1 +▁թե 1 +คล 1 +ዚ 1 +▁также 1 +▁radio 1 +نې 1 +▁libro 1 +curi 1 +▁insan 1 +若 1 +Ha 1 +黑 1 +居 1 +▁bản 1 +۸ 1 +▁dosta 1 +rę 1 +ደር 1 +ುತ್ತ 1 +▁ול 1 +tsa 1 +ifik 1 +ັນ 1 +▁دل 1 +품 1 +▁يې 1 +▁معا 1 +▁mā 1 +편 1 +valt 1 +nze 1 +务 1 +gie 1 +▁nagy 1 +lur 1 +dagi 1 +▁тэ 1 +▁maks 1 +▁był 1 +▁Pat 1 +rais 1 +וט 1 +▁Для 1 +ють 1 +一直 1 +ている 1 +▁pir 1 +စ္ 1 +▁ਨ 1 +▁তা 1 +▁ken 1 +▁ĉi 1 +香港 1 +▁actual 1 +loc 1 +▁sak 1 +▁estar 1 +ril 1 +uza 1 +ىتى 1 +▁fare 1 +ମା 1 +ഡ 1 +话 1 +חות 1 +тся 1 +▁പി 1 +▁перш 1 +עי 1 +▁mula 1 +▁CO 1 +யை 1 +dhë 1 +фер 1 +kter 1 +ald 1 +▁şey 1 +niem 1 +▁Kh 1 +▁popular 1 +tang 1 +ứ 1 +▁도 1 +▁הי 1 +երը 1 +▁мог 1 +гаар 1 +బ్ 1 +▁байгуул 1 +ျပ 1 +▁› 1 +وك 1 +ក្រ 1 +▁nahi 1 +ঘ 1 +▁शि 1 +ኩ 1 +▁first 1 +▁Mir 1 +▁ganz 1 +مين 1 +тері 1 +ligen 1 +ኔ 1 +▁Ди 1 +▁ڀ 1 +他的 1 +▁Jed 1 +ส์ 1 +añ 1 +ัย 1 +צר 1 +▁пока 1 +rien 1 +▁pois 1 +зова 1 +หรือ 1 +רא 1 +յանը 1 +▁coa 1 +owane 1 +▁franc 1 +▁años 1 +▁jeho 1 +νά 1 +ije 1 +??? 1 +▁مختلف 1 +▁Nä 1 +▁fit 1 +登 1 +ość 1 +▁हुने 1 +▁kurs 1 +ਤੀ 1 +зда 1 +▁jika 1 +▁Ada 1 +▁उन 1 +лив 1 +如何 1 +nės 1 +يش 1 +NU 1 +ապ 1 +医 1 +wit 1 +▁खु 1 +νό 1 +▁cos 1 +dü 1 +▁люди 1 +▁более 1 +▁کنند 1 +关 1 +цю 1 +ေလး 1 +▁dir 1 +▁ked 1 +qo 1 +▁ES 1 +▁njegov 1 +culo 1 +PU 1 +▁والت 1 +▁실 1 +ớ 1 +了解 1 +lid 1 +აც 1 +cri 1 +▁Hà 1 +īgi 1 +▁fine 1 +phone 1 +ках 1 +中的 1 +▁bland 1 +▁інш 1 +료 1 +▁quis 1 +abili 1 +▁ବା 1 +▁apr 1 +лей 1 +▁Ide 1 +ಗಾ 1 +iet 1 +▁phát 1 +taka 1 +▁slik 1 +ithe 1 +गत 1 +မှာ 1 +▁Ama 1 +rö 1 +▁Andre 1 +▁maxim 1 +带 1 +šo 1 +▁ర 1 +▁היא 1 +▁todas 1 +类 1 +нік 1 +底 1 +ۆ 1 +porta 1 +icos 1 +商品 1 +▁vär 1 +ány 1 +gum 1 +▁AS 1 +što 1 +ाउन 1 +志 1 +▁miejsc 1 +char 1 +גו 1 +▁trước 1 +▁سایت 1 +Bo 1 +ेको 1 +▁করা 1 +▁realiz 1 +▁prije 1 +ията 1 +▁جر 1 +ඩි 1 +▁capac 1 +دون 1 +▁ගැන 1 +र्म 1 +▁вопрос 1 +▁લ 1 +▁nyt 1 +들이 1 +şe 1 +jah 1 +▁mont 1 +권 1 +▁път 1 +publik 1 +ප් 1 +▁ਸ਼ 1 +結 1 +▁طور 1 +njo 1 +念 1 +tionen 1 +▁dun 1 +▁بىر 1 +国际 1 +ਲੇ 1 +gul 1 +сім 1 +▁nya 1 +▁sezon 1 +▁hati 1 +▁twee 1 +▁Ši 1 +ಗಿ 1 +ји 1 +▁novi 1 +▁کړ 1 +nə 1 +ικές 1 +▁Nov 1 +లను 1 +እ 1 +emos 1 +▁two 1 +▁1) 1 +▁(18 1 +ष् 1 +▁контрол 1 +容 1 +▁зв 1 +▁tự 1 +▁oku 1 +▁ول 1 +列 1 +▁жаз 1 +dhe 1 +▁کرده 1 +antes 1 +▁16. 1 +łem 1 +вест 1 +▁try 1 +▁ମା 1 +లకు 1 +語 1 +nai 1 +ಿದೆ 1 +終 1 +که 1 +▁tuli 1 +ย์ 1 +群 1 +ád 1 +▁(5) 1 +ため 1 +▁käy 1 +▁روی 1 +imą 1 +▁вз 1 +ање 1 +▁ସା 1 +инг 1 +▁קו 1 +▁ರ 1 +חדש 1 +νομ 1 +▁asia 1 +руш 1 +▁خپل 1 +李 1 +იდან 1 +官 1 +۶ 1 +ಕೆ 1 +ांना 1 +iä 1 +ार 1 +ställ 1 +tse 1 +▁โดย 1 +тэ 1 +▁civil 1 +нц 1 +▁maior 1 +gaan 1 +▁трябва 1 +▁жи 1 +мени 1 +▁keine 1 +של 1 +▁glas 1 +larına 1 +ရှိ 1 +unu 1 +bles 1 +▁pé 1 +▁один 1 +احت 1 +нер 1 +່າ 1 +▁бъде 1 +пада 1 +▁ም 1 +стор 1 +▁nás 1 +▁04 1 +▁disc 1 +▁char 1 +▁ville 1 +യാണ് 1 +▁'' 1 +มือ 1 +▁स् 1 +▁واقع 1 +چھ 1 +κη 1 +อย 1 +ške 1 +εν 1 +lyn 1 +tə 1 +ким 1 +▁باز 1 +▁ચ 1 +യം 1 +▁arte 1 +ಜಿ 1 +▁కూడా 1 +一般 1 +ళ 1 +▁bağlı 1 +▁ня 1 +~ 1 +ník 1 +സ്റ്റ 1 +▁призна 1 +▁prepara 1 +▁تە 1 +▁উ 1 +πό 1 +▁نی 1 +ಶ್ 1 +łam 1 +ेश 1 +▁stu 1 +বার 1 +פה 1 +▁gru 1 +▁første 1 +ემ 1 +血 1 +▁ٹی 1 +▁tho 1 +jur 1 +ပြ 1 +になる 1 +ούμε 1 +▁visi 1 +тели 1 +▁sitten 1 +▁hər 1 +▁karşı 1 +bij 1 +णार 1 +бри 1 +lls 1 +研 1 +ALI 1 +▁hang 1 +ପା 1 +ics 1 +▁vom 1 +ング 1 +mobil 1 +ml 1 +▁عل 1 +▁लग 1 +▁කා 1 +شى 1 +նում 1 +готов 1 +алі 1 +PL 1 +▁dzi 1 +▁Lei 1 +ndung 1 +тон 1 +▁저 1 +▁toda 1 +▁hans 1 +▁Bri 1 +tige 1 +▁їх 1 +unan 1 +▁15. 1 +▁visita 1 +kii 1 +▁tiek 1 +ији 1 +rije 1 +▁ബ 1 +▁cái 1 +▁עו 1 +يز 1 +复 1 +▁ži 1 +▁අප 1 +▁strategi 1 +pē 1 +▁stav 1 +▁član 1 +▁گی 1 +▁artist 1 +ഷ് 1 +กล 1 +sport 1 +▁sendiri 1 +计 1 +▁ଏହି 1 +▁kha 1 +▁Sub 1 +вся 1 +▁2) 1 +യ് 1 +shëm 1 +еді 1 +lif 1 +▁gəl 1 +mı 1 +据 1 +六 1 +▁Een 1 +றி 1 +▁120 1 +板 1 +ская 1 +示 1 +čin 1 +▁seorang 1 +▁mut 1 +▁Port 1 +uč 1 +▁қызмет 1 +▁glo 1 +▁Fel 1 +کت 1 +▁tentang 1 +struk 1 +합 1 +▁Lie 1 +▁Πα 1 +-4 1 +▁anima 1 +▁Տ 1 +▁ఫ 1 +圖 1 +τί 1 +ოვ 1 +нення 1 +▁memiliki 1 +▁Раз 1 +hun 1 +ууд 1 +حة 1 +हे 1 +います 1 +▁Fil 1 +▁été 1 +уы 1 +êr 1 +kana 1 +一起 1 +ත්ත 1 +رز 1 +lgan 1 +лары 1 +▁buhok 1 +▁Bon 1 +▁qay 1 +々 1 +РЕ 1 +აში 1 +▁زمان 1 +▁bygg 1 +▁waa 1 +лез 1 +cks 1 +issä 1 +박 1 +ళ్ల 1 +▁naman 1 +قات 1 +▁সে 1 +▁начин 1 +▁cấp 1 +لت 1 +▁kamu 1 +ปี 1 +▁ಒ 1 +▁hacer 1 +ിക 1 +http 1 +▁tres 1 +▁cyf 1 +dai 1 +ଭା 1 +เว 1 +ának 1 +▁కు 1 +နဲ႔ 1 +bai 1 +tech 1 +▁iba 1 +▁emo 1 +ּ 1 +▁सी 1 +▁Kontakt 1 +ใหม่ 1 +联 1 +schaft 1 +cere 1 +往 1 +▁kus 1 +tamente 1 +▁ഹ 1 +▁muu 1 +acji 1 +۷ 1 +なり 1 +ает 1 +nyt 1 +moc 1 +▁17. 1 +▁suis 1 +▁industri 1 +▁lig 1 +ျဖစ္ 1 +wing 1 +ūs 1 +▁live 1 +šā 1 +▁rezultat 1 +▁गया 1 +ווי 1 +bara 1 +▁دیا 1 +▁ក្នុង 1 +נית 1 +▁hann 1 +因此 1 +▁participa 1 +▁behar 1 +ଚ 1 +裡 1 +દી 1 +▁توان 1 +▁Ken 1 +▁സാ 1 +bari 1 +гот 1 +hre 1 +ndus 1 +▁क्षेत्र 1 +▁خلال 1 +уу 1 +гын 1 +교 1 +▁organ 1 +▁deci 1 +▁Wal 1 +▁મો 1 +▁bộ 1 +▁serta 1 +▁país 1 +▁andra 1 +증 1 +材 1 +ספר 1 +EX 1 +▁Mem 1 +▁region 1 +▁kil 1 +ಟ್ಟ 1 +ولو 1 +SZ 1 +▁BA 1 +گە 1 +内容 1 +▁адам 1 +ี่ 1 +티 1 +▁تش 1 +▁ਕੇ 1 +▁publica 1 +▁years 1 +できる 1 +ရေး 1 +任何 1 +وری 1 +▁نیز 1 +▁क्या 1 +૧ 1 +▁کسی 1 +δί 1 +▁které 1 +▁begin 1 +сер 1 +▁§ 1 +lina 1 +bun 1 +cip 1 +قب 1 +zda 1 +light 1 +िंग 1 +dige 1 +論 1 +▁Ад 1 +قة 1 +пол 1 +اں 1 +ദി 1 +▁නම් 1 +gha 1 +평 1 +▁Mis 1 +ಖ 1 +▁ಸಿ 1 +tov 1 +▁azt 1 +▁Kö 1 +的时候 1 +▁take 1 +▁vit 1 +кий 1 +ജി 1 +čan 1 +ત્ર 1 +હે 1 +边 1 +corre 1 +▁KO 1 +真的 1 +▁65 1 +Mi 1 +短 1 +▁ბ 1 +दार 1 +▁Spi 1 +▁ხ 1 +ție 1 +غل 1 +ebb 1 +▁vál 1 +кою 1 +වර 1 +ellä 1 +ори 1 +ኖ 1 +▁Kau 1 +יז 1 +дагы 1 +gres 1 +ବି 1 +ന്ന് 1 +CO 1 +سف 1 +mene 1 +ош 1 +قدم 1 +கி 1 +▁бр 1 +нее 1 +kend 1 +ällä 1 +不同 1 +ਫ਼ 1 +▁vuo 1 +lki 1 +▁nghiệp 1 +יך 1 +▁ውስጥ 1 +ţe 1 +餐 1 +skim 1 +žia 1 +科技 1 +اده 1 +▁vì 1 +lərdə 1 +ilgan 1 +到了 1 +θη 1 +夜 1 +кат 1 +heim 1 +жат 1 +ppu 1 +िन 1 +ując 1 +▁Prof 1 +ttää 1 +quer 1 +ктор 1 +ικών 1 +ues 1 +今天 1 +▁circ 1 +▁kim 1 +▁nii 1 +жі 1 +▁sud 1 +каў 1 +तु 1 +sdag 1 +▁_-- 1 +ခ် 1 +Bu 1 +not 1 +иться 1 +술 1 +sını 1 +▁investi 1 +▁right 1 +▁سک 1 +gift 1 +tė 1 +ają 1 +▁sci 1 +▁этого 1 +SP 1 +資 1 +лон 1 +šanu 1 +▁بۇ 1 +əcək 1 +озна 1 +▁firm 1 +城市 1 +▁Οι 1 +bei 1 +KU 1 +▁бала 1 +benar 1 +tív 1 +เครื่อง 1 +-20 1 +議 1 +▁perlu 1 +രോ 1 +▁göz 1 +ある 1 +eceği 1 +▁яв 1 +▁font 1 +крат 1 +kry 1 +іне 1 +niej 1 +স্থ 1 +ера 1 +充 1 +sinin 1 +اشت 1 +▁때 1 +까지 1 +کل 1 +kari 1 +▁onde 1 +▁ใน 1 +停 1 +سلام 1 +ének 1 +یو 1 +ologia 1 +onta 1 +യോ 1 +പി 1 +jom 1 +elen 1 +σμ 1 +▁వే 1 +act 1 +iin 1 +пред 1 +వీ 1 +▁ihan 1 +▁Fre 1 +దే 1 +ủ 1 +ับ 1 +▁project 1 +▁ଜ 1 +עות 1 +ash 1 +▁band 1 +անգ 1 +值 1 +inā 1 +▁kg 1 +▁jour 1 +handling 1 +zas 1 +▁არის 1 +jor 1 +语 1 +より 1 +▁mul 1 +છ 1 +إ 1 +λου 1 +▁جدید 1 +▁ки 1 +سته 1 +▁Rad 1 +्यू 1 +▁sekä 1 +▁dalla 1 +▁հայ 1 +ltä 1 +uki 1 +▁aja 1 +ପ୍ 1 +न्न 1 +▁vár 1 +▁(4 1 +▁കോ 1 +ARI 1 +เวลา 1 +וך 1 +-0 1 +ానికి 1 +ugh 1 +odo 1 +▁intens 1 +ани 1 +▁Mə 1 +დის 1 +mēr 1 +则 1 +wah 1 +мын 1 +▁Ду 1 +ndu 1 +tation 1 +уз 1 +owym 1 +เต 1 +شد 1 +▁39 1 +ווע 1 +īga 1 +義 1 +▁efekt 1 +tava 1 +рк 1 +▁mặt 1 +ബ് 1 +▁rus 1 +▁للم 1 +▁slu 1 +ctus 1 +ował 1 +▁cert 1 +bé 1 +тки 1 +▁страна 1 +ети 1 +▁Sara 1 +view 1 +िर 1 +セ 1 +ици 1 +ТИ 1 +▁dobro 1 +ulis 1 +aug 1 +ngga 1 +▁Пе 1 +職 1 +سب 1 +ями 1 +▁дел 1 +nay 1 +ટી 1 +▁δε 1 +ware 1 +▁did 1 +dress 1 +เงิน 1 +نک 1 +nça 1 +規 1 +EA 1 +▁Пред 1 +साठी 1 +praw 1 +λλ 1 +oare 1 +▁hum 1 +тите 1 +ხვ 1 +▁individu 1 +rut 1 +ృ 1 +ió 1 +सार 1 +▁Мы 1 +نة 1 +мина 1 +ူ 1 +ає 1 +▁ပ 1 +bahan 1 +ố 1 +假 1 +ింది 1 +尼 1 +▁יו 1 +▁ք 1 +ກັບ 1 +nsa 1 +▁komme 1 +▁یې 1 +Λ 1 +ىي 1 +▁Македонија 1 +ként 1 +普 1 +▁பி 1 +bare 1 +рас 1 +▁familie 1 +▁standard 1 +ión 1 +▁oyun 1 +струк 1 +▁Don 1 +चार 1 +▁lot 1 +уд 1 +▁onze 1 +项目 1 +pek 1 +massa 1 +▁đá 1 +▁ret 1 +▁Afrika 1 +▁방 1 +▁만 1 +▁ស្ 1 +确 1 +▁nám 1 +šči 1 +▁klo 1 +▁__ 1 +▁kwenye 1 +ணி 1 +യു 1 +▁करा 1 +▁Hand 1 +▁ఉన్న 1 +▁شرکت 1 +になって 1 +elsen 1 +北京 1 +λυ 1 +മാണ് 1 +מען 1 +▁လ 1 +etti 1 +休 1 +▁كۆ 1 +ద్ద 1 +waż 1 +ජ 1 +jski 1 +いい 1 +▁результат 1 +سان 1 +▁họ 1 +▁என்று 1 +gov 1 +출 1 +▁hafa 1 +vati 1 +كت 1 +ident 1 +互 1 +▁לח 1 +夫 1 +源 1 +▁revi 1 +ኢ 1 +▁već 1 +ових 1 +▁кам 1 +wl 1 +▁Ό 1 +čky 1 +▁Untuk 1 +avo 1 +பி 1 +婚 1 +Ë 1 +▁უნდა 1 +▁rumah 1 +▁Ele 1 +භා 1 +▁अपने 1 +酒 1 +woord 1 +dici 1 +基本 1 +▁పో 1 +Δ 1 +▁наук 1 +▁wij 1 +▁មាន 1 +초 1 +▁sebuah 1 +▁قانون 1 +▁kanë 1 +త్ర 1 +▁bola 1 +▁politic 1 +၃ 1 +▁بعض 1 +ਥ 1 +నం 1 +STA 1 +porte 1 +ဟ 1 +▁україн 1 +▁حل 1 +តែ 1 +aar 1 +▁stil 1 +голем 1 +▁lalu 1 +▁корист 1 +uw 1 +ель 1 +chte 1 +-6 1 +ntar 1 +៖ 1 +▁khách 1 +び 1 +▁sok 1 +▁năng 1 +▁സ്വ 1 +িয়া 1 +nding 1 +slav 1 +▁미 1 +▁Thi 1 +larında 1 +shir 1 +ството 1 +▁oldu 1 +▁пат 1 +իմ 1 +xan 1 +▁passe 1 +იც 1 +කර 1 +гов 1 +▁eða 1 +▁nang 1 +chter 1 +гар 1 +μπ 1 +▁۲ 1 +gis 1 +වෙ 1 +ଦେ 1 +様 1 +▁hul 1 +فع 1 +вања 1 +▁ഏ 1 +సీ 1 +▁комп 1 +▁ሊ 1 +як 1 +ண் 1 +ures 1 +-2018 1 +ונות 1 +ших 1 +sht 1 +▁रि 1 +ggi 1 +ण्या 1 +▁sehingga 1 +IG 1 +▁bá 1 +ач 1 +skar 1 +▁වන 1 +ద్ 1 +sema 1 +▁komun 1 +iniai 1 +િક 1 +თვის 1 +EG 1 +▁should 1 +ière 1 +ക്കി 1 +▁។ 1 +▁biri 1 +▁Just 1 +▁20. 1 +ידי 1 +ણી 1 +vision 1 +▁හැ 1 +्रा 1 +АЛ 1 +馬 1 +ването 1 +kong 1 +زه 1 +μό 1 +syn 1 +▁vě 1 +əsi 1 +▁සු 1 +▁ум 1 +▁original 1 +▁بس 1 +▁нав 1 +дээ 1 +메 1 +λί 1 +▁fé 1 +▁ஏ 1 +чі 1 +▁viol 1 +▁Все 1 +ാന 1 +▁reklam 1 +ixo 1 +כם 1 +wana 1 +ներին 1 +▁süre 1 +vän 1 +ート 1 +▁milion 1 +ặ 1 +▁мир 1 +кви 1 +▁बस 1 +▁även 1 +▁buat 1 +дай 1 +ttaa 1 +ոլ 1 +▁client 1 +נק 1 +ở 1 +ρέ 1 +▁nə 1 +kop 1 +▁drejt 1 +▁ନ 1 +ົນ 1 +грам 1 +▁үшін 1 +▁Ä 1 +prac 1 +জি 1 +under 1 +▁Kap 1 +աբ 1 +▁44 1 +▁More 1 +rita 1 +▁such 1 +לות 1 +했 1 +மே 1 +▁tempat 1 +бро 1 +▁ਵਿਚ 1 +ٰ 1 +гур 1 +▁راه 1 +ість 1 +НЕ 1 +▁rende 1 +ಬ 1 +ઠ 1 +થ 1 +▁lähe 1 +▁söz 1 +kort 1 +八 1 +▁Cara 1 +▁بخش 1 +记 1 +ئن 1 +▁අපි 1 +▁üz 1 +▁kut 1 +ፊ 1 +▁bran 1 +▁þá 1 +▁알 1 +алы 1 +建设 1 +chá 1 +석 1 +ํา 1 +▁viet 1 +▁Dal 1 +▁туралы 1 +цыя 1 +კე 1 +项 1 +inga 1 +дор 1 +යු 1 +루 1 +▁ግን 1 +▁presente 1 +τρα 1 +▁گر 1 +үп 1 +▁lep 1 +▁leis 1 +其中 1 +వే 1 +▁date 1 +▁câ 1 +▁dute 1 +יג 1 +nico 1 +lú 1 +▁dunia 1 +▁acce 1 +▁لئے 1 +▁హ 1 +nı 1 +▁sek 1 +▁photo 1 +ىرى 1 +▁خاص 1 +klaus 1 +xt 1 +vje 1 +视 1 +ский 1 +सक 1 +▁ც 1 +▁>> 1 +▁ପା 1 +վա 1 +नगर 1 +▁kn 1 +▁καλ 1 +เจ 1 +ల్ల 1 +২০ 1 +pho 1 +▁Social 1 +halt 1 +▁menge 1 +하게 1 +▁ise 1 +ρια 1 +عي 1 +▁puh 1 +evi 1 +▁пу 1 +▁hanno 1 +▁గా 1 +▁Max 1 +▁Sau 1 +▁jer 1 +現在 1 +▁держав 1 +▁بازی 1 +Da 1 +▁objekt 1 +km 1 +▁прави 1 +▁Ваш 1 +급 1 +рг 1 +ਵੇ 1 +ائر 1 +นํา 1 +ρώ 1 +▁salah 1 +▁utan 1 +ffen 1 +руч 1 +ære 1 +▁agen 1 +යෝ 1 +ेर 1 +▁phẩm 1 +▁zapo 1 +▁respect 1 +▁dike 1 +মান 1 +BU 1 +وض 1 +办 1 +quam 1 +ახ 1 +TM 1 +คร 1 +▁Tom 1 +svar 1 +ڄ 1 +زار 1 +▁find 1 +▁Sar 1 +▁great 1 +▁Bakı 1 +ματ 1 +▁всички 1 +เซ 1 +▁පො 1 +▁big 1 +ões 1 +mysl 1 +seb 1 +▁أي 1 +▁күн 1 +यर 1 +nts 1 +▁quá 1 +வர 1 +lain 1 +ült 1 +kko 1 +ଁ 1 +▁Edi 1 +▁amely 1 +্ব 1 +mentar 1 +▁хүн 1 +▁import 1 +serva 1 +毛 1 +▁front 1 +▁hadde 1 +film 1 +ості 1 +aro 1 +व्य 1 +uter 1 +▁stan 1 +▁đối 1 +SH 1 +▁lõ 1 +lka 1 +శ్ 1 +▁Dat 1 +▁вели 1 +적인 1 +tila 1 +担 1 +▁wê 1 +ський 1 +▁timp 1 +▁която 1 +tës 1 +ева 1 +預 1 +မြ 1 +▁Alt 1 +pic 1 +мена 1 +▁hefur 1 +ည္ 1 +▁ծ 1 +ajo 1 +كن 1 +▁ይህ 1 +▁Αν 1 +မှု 1 +▁даже 1 +kjø 1 +成为 1 +▁idő 1 +刻 1 +ዓ 1 +ଙ୍କୁ 1 +▁ish 1 +对于 1 +र्ज 1 +ಂಗ 1 +ыш 1 +▁დე 1 +ular 1 +▁របស់ 1 +ches 1 +ბო 1 +ใหญ่ 1 +YA 1 +▁vec 1 +dav 1 +▁చేయ 1 +▁cru 1 +▁كما 1 +▁قر 1 +lərinin 1 +▁ერთ 1 +▁اين 1 +▁eftir 1 +▁Barcelona 1 +xx 1 +անդ 1 +▁York 1 +▁ді 1 +▁hiyo 1 +投资 1 +▁၂ 1 +▁sco 1 +bed 1 +すること 1 +▁grupo 1 +ச் 1 +▁អ្នក 1 +pool 1 +ongo 1 +▁فا 1 +ம்ப 1 +jë 1 +лес 1 +▁ति 1 +лаг 1 +voir 1 +▁വെ 1 +lő 1 +utta 1 +입 1 +твер 1 +ктер 1 +ész 1 +企業 1 +▁eng 1 +த்தை 1 +ංග 1 +tyy 1 +▁било 1 +▁причин 1 +▁ત 1 +▁ՀՀ 1 +ność 1 +hind 1 +syk 1 +ስት 1 +mė 1 +edd 1 +רך 1 +代表 1 +Ko 1 +▁समय 1 +▁lor 1 +▁സി 1 +▁способ 1 +▁Ent 1 +▁מח 1 +則 1 +Pro 1 +ush 1 +▁nær 1 +▁وس 1 +zbekiston 1 +ılı 1 +▁ہوئے 1 +isht 1 +そう 1 +▁ting 1 +pende 1 +▁зав 1 +▁مە 1 +miseks 1 +▁ار 1 +▁период 1 +▁mok 1 +bay 1 +▁जन 1 +koj 1 +▁Mais 1 +ത്തിന്റെ 1 +한다 1 +▁через 1 +▁гор 1 +▁semana 1 +一次 1 +liza 1 +▁מיט 1 +tory 1 +▁Kul 1 +님 1 +▁Paul 1 +▁اله 1 +bert 1 +▁Ла 1 +ề 1 +▁ndër 1 +άλ 1 +జీ 1 +πι 1 +еш 1 +Ar 1 +▁Hun 1 +വ് 1 +▁loro 1 +ksa 1 +▁ces 1 +▁rob 1 +ья 1 +ขาย 1 +▁bata 1 +بد 1 +גי 1 +ое 1 +▁مص 1 +heter 1 +ною 1 +▁ለመ 1 +פס 1 +▁බැ 1 +room 1 +▁керек 1 +▁وع 1 +ក្ 1 +אמ 1 +^^ 1 +반 1 +rząd 1 +lägg 1 +သာ 1 +ədə 1 +▁Але 1 +▁ਹਨ 1 +▁impo 1 +ால் 1 +્યો 1 +အား 1 +mál 1 +▁sido 1 +▁چو 1 +άζ 1 +▁خل 1 +ада 1 +ること 1 +باب 1 +ʻ 1 +▁Ó 1 +▁Rah 1 +300 1 +級 1 +эв 1 +▁Ná 1 +ëve 1 +▁பே 1 +▁այդ 1 +▁Martin 1 +▁negara 1 +▁vēl 1 +▁Chu 1 +dara 1 +▁жаса 1 +▁mine 1 +▁Kü 1 +▁luo 1 +▁ສະ 1 +▁kvalit 1 +▁thai 1 +imet 1 +▁marka 1 +▁дела 1 +ації 1 +▁presta 1 +▁edib 1 +▁tím 1 +šen 1 +cré 1 +▁kilo 1 +▁член 1 +мисл 1 +ል፡፡ 1 +▁영 1 +mpu 1 +▁ก 1 +▁podob 1 +▁kala 1 +▁اف 1 +▁ame 1 +▁здрав 1 +认 1 +▁Sverige 1 +Do 1 +▁quali 1 +▁ولا 1 +▁داخل 1 +乐 1 +▁molto 1 +ିଆ 1 +▁Pag 1 +atori 1 +vic 1 +土 1 +ınız 1 +øg 1 +empat 1 +▁Ե 1 +ολ 1 +ஹ 1 +▁teen 1 +▁대한 1 +▁چه 1 +▁परि 1 +▁Прав 1 +μερ 1 +نامه 1 +ıcı 1 +▁term 1 +एस 1 +▁spr 1 +ûr 1 +vyk 1 +第二 1 +inio 1 +eme 1 +კვ 1 +活动 1 +▁rö 1 +▁yapı 1 +▁หรือ 1 +▁ново 1 +זי 1 +िल 1 +▁turn 1 +jun 1 +nál 1 +kning 1 +▁kole 1 +▁jā 1 +題 1 +ໍ 1 +ვს 1 +पर् 1 +ļu 1 +غو 1 +لات 1 +▁iyi 1 +лаа 1 +bran 1 +▁فی 1 +hja 1 +jne 1 +stop 1 +▁тому 1 +nė 1 +でした 1 +▁integra 1 +▁dodat 1 +уди 1 +ovanie 1 +▁יותר 1 +ಹಿ 1 +▁vores 1 +▁klik 1 +isë 1 +zij 1 +lije 1 +▁Pir 1 +tty 1 +زو 1 +▁kod 1 +调 1 +▁escort 1 +viz 1 +ител 1 +▁Ara 1 +▁kişi 1 +▁Natur 1 +肉 1 +ních 1 +عرض 1 +ками 1 +tē 1 +후 1 +၂ 1 +ଡି 1 +통 1 +aidh 1 +▁jeden 1 +poli 1 +▁avant 1 +naj 1 +ује 1 +▁hội 1 +费 1 +▁leh 1 +▁بح 1 +вання 1 +kë 1 +Μ 1 +rank 1 +ႏ 1 +पि 1 +▁Trump 1 +▁ନି 1 +▁hus 1 +last 1 +▁çalış 1 +▁ਹੋ 1 +▁Ար 1 +душ 1 +Տ 1 +▁жол 1 +▁kiu 1 +▁голов 1 +bora 1 +AY 1 +▁dân 1 +قت 1 +ється 1 +овић 1 +▁въз 1 +ارة 1 +▁Рус 1 +▁આવ 1 +只是 1 +ில் 1 +▁වෙන 1 +同时 1 +తే 1 +重要 1 +▁cent 1 +mik 1 +▁اول 1 +elő 1 +вид 1 +esse 1 +▁ملک 1 +rir 1 +全球 1 +మె 1 +▁sei 1 +ቋ 1 +wią 1 +υν 1 +▁prefer 1 +థ 1 +kad 1 +▁uy 1 +гээ 1 +リー 1 +▁pomoc 1 +óc 1 +siden 1 +▁Petr 1 +طل 1 +anto 1 +phi 1 +木 1 +కో 1 +▁nama 1 +▁quả 1 +HE 1 +▁peu 1 +дө 1 +rius 1 +ಚಿ 1 +පා 1 +▁Ако 1 +hä 1 +гал 1 +rait 1 +нут 1 +जे 1 +יח 1 +方式 1 +▁kinh 1 +传 1 +buka 1 +▁համ 1 +▁seda 1 +Կ 1 +gada 1 +zzo 1 +คํา 1 +▁diff 1 +▁առաջ 1 +cula 1 +▁mille 1 +키 1 +▁hvordan 1 +υς 1 +δυ 1 +бір 1 +ντ 1 +ТО 1 +▁אר 1 +▁asi 1 +▁Έ 1 +▁नेपाली 1 +ဇ 1 +CM 1 +师 1 +tott 1 +▁बन 1 +▁bine 1 +▁tế 1 +व्ह 1 +ago 1 +▁אם 1 +▁ஒ 1 +▁Galicia 1 +rite 1 +▁چند 1 +ajā 1 +រា 1 +▁pet 1 +▁Լ 1 +áin 1 +效 1 +ście 1 +ዮ 1 +merk 1 +波 1 +hm 1 +▁Shi 1 +കാര 1 +▁PS 1 +лем 1 +▁ше 1 +ări 1 +र्ष 1 +ಡು 1 +▁دوست 1 +արդ 1 +สม 1 +ап 1 +▁kasuta 1 +▁مثل 1 +▁massage 1 +дра 1 +▁Out 1 +▁43 1 +试 1 +▁جمع 1 +oro 1 +▁لت 1 +▁again 1 +ਨੀ 1 +▁Produkt 1 +clu 1 +▁עד 1 +یوں 1 +kali 1 +▁tel 1 +hag 1 +▁kesk 1 +ters 1 +▁భ 1 +▁факт 1 +▁dise 1 +भाव 1 +dil 1 +shin 1 +▁muss 1 +ブ 1 +ข้อ 1 +▁הג 1 +ាក់ 1 +စ် 1 +front 1 +處 1 +個人 1 +ally 1 +▁stri 1 +bau 1 +▁szerint 1 +SD 1 +સા 1 +ილ 1 +erto 1 +▁افراد 1 +▁وزیر 1 +▁Tie 1 +kārt 1 +עס 1 +יצ 1 +预 1 +▁могу 1 +▁Монгол 1 +▁polici 1 +▁festival 1 +中國 1 +tav 1 +▁many 1 +DS 1 +▁Trans 1 +情况 1 +ዉ 1 +ಬೇ 1 +▁ਦ 1 +组 1 +στο 1 +رے 1 +uose 1 +kola 1 +▁लगा 1 +▁मह 1 +▁efect 1 +▁ref 1 +ൃ 1 +▁pier 1 +際 1 +▁segui 1 +սկ 1 +▁atra 1 +пъл 1 +ولة 1 +centr 1 +適 1 +čke 1 +ımı 1 +ЛА 1 +▁foarte 1 +▁medio 1 +මින් 1 +▁leng 1 +的一 1 +情報 1 +▁Lietuvos 1 +cky 1 +ောင် 1 +▁oh 1 +一定 1 +υσ 1 +▁memper 1 +▁aquel 1 +▁tâm 1 +▁смо 1 +PD 1 +▁ugu 1 +▁تج 1 +▁слова 1 +auf 1 +れて 1 +▁এই 1 +▁Ako 1 +青 1 +voz 1 +▁başla 1 +ruh 1 +లీ 1 +▁esa 1 +▁буд 1 +nev 1 +▁Χ 1 +ווא 1 +▁Ram 1 +чар 1 +gji 1 +sive 1 +▁собствен 1 +售 1 +える 1 +אב 1 +▁trebuie 1 +▁integr 1 +บน 1 +▁دانلود 1 +▁Bos 1 +▁tous 1 +ljiv 1 +וני 1 +▁Мі 1 +ến 1 +تۇر 1 +模 1 +følge 1 +▁punto 1 +ික 1 +▁genom 1 +ലീ 1 +▁ул 1 +▁የአ 1 +▁رد 1 +більш 1 +▁toho 1 +聯 1 +광 1 +بى 1 +тру 1 +бой 1 +▁ім 1 +που 1 +دہ 1 +▁ಮಾ 1 +▁Mah 1 +੍ਰ 1 +▁Meg 1 +stell 1 +రె 1 +्रे 1 +álne 1 +离 1 +ៃ 1 +ема 1 +สุด 1 +▁২ 1 +ść 1 +▁ä 1 +طب 1 +▁produc 1 +jde 1 +LAN 1 +▁שב 1 +▁Հայ 1 +拿 1 +čné 1 +▁keli 1 +амі 1 +▁enn 1 +vai 1 +ranno 1 +▁세 1 +▁bə 1 +单 1 +▁Рос 1 +äär 1 +జ్ 1 +完成 1 +▁mål 1 +▁Person 1 +▁perfect 1 +ೌ 1 +▁nepo 1 +ڙي 1 +থ 1 +สินค้า 1 +▁авто 1 +▁mér 1 +ایت 1 +ੰਦ 1 +laş 1 +mple 1 +▁Yu 1 +ত্র 1 +▁antara 1 +leid 1 +▁կարող 1 +شق 1 +▁emp 1 +аць 1 +▁clar 1 +піс 1 +عمل 1 +▁úč 1 +ნებ 1 +▁тут 1 +▁pensa 1 +▁този 1 +▁práv 1 +nimi 1 +พร้อม 1 +פור 1 +▁predstav 1 +ば 1 +märk 1 +▁پور 1 +▁proses 1 +▁fh 1 +▁mask 1 +vă 1 +חה 1 +ải 1 +▁life 1 +თე 1 +▁дэ 1 +မှ 1 +rende 1 +畫 1 +мир 1 +mål 1 +ັງ 1 +zal 1 +▁강 1 +▁sans 1 +▁созда 1 +ilu 1 +▁tình 1 +▁경 1 +ούς 1 +mble 1 +όν 1 +دد 1 +rant 1 +uyor 1 +▁ર 1 +▁zap 1 +РИ 1 +oba 1 +▁തന്നെ 1 +▁حقوق 1 +աք 1 +▁intr 1 +▁мене 1 +ense 1 +трым 1 +اند 1 +őr 1 +បាន 1 +ely 1 +滿 1 +૦ 1 +riya 1 +ാൻ 1 +նչ 1 +egy 1 +зор 1 +২ 1 +▁September 1 +▁previ 1 +▁mau 1 +аа 1 +legi 1 +изм 1 +▁सम् 1 +ನೇ 1 +այն 1 +▁סי 1 +става 1 +হা 1 +▁odpo 1 +▁ông 1 +łe 1 +▁५ 1 +批 1 +▁miss 1 +סו 1 +теля 1 +rid 1 +▁거 1 +ब् 1 +нің 1 +▁ځ 1 +ємо 1 +ttet 1 +egu 1 +egi 1 +BS 1 +▁IT 1 +▁мест 1 +▁klient 1 +bă 1 +essä 1 +સ્ 1 +ghi 1 +מע 1 +జా 1 +▁بچ 1 +升 1 +mh 1 +費 1 +mum 1 +്യാ 1 +▁हुन 1 +ాడు 1 +▁Stat 1 +▁момент 1 +▁ans 1 +ťa 1 +选 1 +שים 1 +なく 1 +▁hlav 1 +▁ყველა 1 +▁【 1 +▁side 1 +▁дома 1 +Θ 1 +▁შ 1 +skab 1 +ଛନ୍ତି 1 +ற் 1 +тик 1 +koz 1 +स्थित 1 +ники 1 +▁cyn 1 +えて 1 +ذر 1 +्रो 1 +руу 1 +▁موجود 1 +▁сил 1 +▁Cymru 1 +▁maz 1 +нар 1 +▁One 1 +tien 1 +یف 1 +cup 1 +息 1 +...” 1 +▁ओ 1 +▁bulun 1 +▁bảo 1 +രണ 1 +香 1 +野 1 +arka 1 +дум 1 +▁τ 1 +▁flu 1 +▁anu 1 +▁пода 1 +▁melhor 1 +▁usta 1 +▁spor 1 +ඟ 1 +AND 1 +lade 1 +▁proti 1 +వర్ 1 +singaw 1 +▁поч 1 +▁still 1 +Ro 1 +▁ٿو 1 +▁aiz 1 +▁үз 1 +啊 1 +ール 1 +শা 1 +mbro 1 +ଡ଼ି 1 +პო 1 +▁komen 1 +▁vaja 1 +lassen 1 +ржав 1 +اث 1 +▁szó 1 +▁cred 1 +ەك 1 +▁kang 1 +buat 1 +oldid 1 +tych 1 +▁made 1 +▁अनु 1 +бү 1 +▁سه 1 +んだ 1 +▁ர 1 +käyt 1 +▁pove 1 +طلب 1 +▁tõ 1 +buk 1 +hul 1 +▁mijn 1 +▁eget 1 +▁seks 1 +▁день 1 +ຢູ່ 1 +ohet 1 +▁april 1 +ىن 1 +▁культур 1 +មួយ 1 +ώς 1 +▁waxa 1 +റു 1 +jut 1 +▁ér 1 +▁Dette 1 +ោះ 1 +วา 1 +学校 1 +င့္ 1 +یہ 1 +UP 1 +៣ 1 +prem 1 +参加 1 +自分 1 +▁news 1 +aigh 1 +itelj 1 +дік 1 +chung 1 +▁baba 1 +sad 1 +▁nacional 1 +他們 1 +支持 1 +sies 1 +▁homo 1 +▁ທ່ານ 1 +▁spot 1 +▁really 1 +жно 1 +▁malo 1 +▁CH 1 +▁Och 1 +pí 1 +▁present 1 +▁kuch 1 +▁сви 1 +قر 1 +inne 1 +▁사용 1 +पूर्ण 1 +▁ڪي 1 +▁sina 1 +▁2016. 1 +女性 1 +sama 1 +▁these 1 +▁chy 1 +▁நீ 1 +bou 1 +▁ఇం 1 +▁нет 1 +ళ్ళ 1 +SM 1 +անի 1 +ۇل 1 +▁wys 1 +▁Cap 1 +▁эр 1 +erek 1 +▁ماه 1 +▁mia 1 +▁też 1 +▁օր 1 +યો 1 +▁Net 1 +ຖ 1 +▁Cur 1 +▁kwe 1 +▁memba 1 +▁Ham 1 +чат 1 +րա 1 +じ 1 +▁اللہ 1 +..! 1 +palvelu 1 +ลูก 1 +▁پرو 1 +FE 1 +bund 1 +▁नै 1 +▁Meng 1 +lös 1 +▁العام 1 +評 1 +▁Sem 1 +sign 1 +▁menggunakan 1 +▁najbolj 1 +▁ito 1 +lga 1 +ရွိ 1 +▁máy 1 +▁sedan 1 +6) 1 +ช่วย 1 +ਫ 1 +ഫ് 1 +hora 1 +▁الشر 1 +▁కొ 1 +▁շ 1 +fle 1 +▁пита 1 +ovanje 1 +▁name 1 +вам 1 +▁ແ 1 +חבר 1 +▁suka 1 +્યું 1 +▁spraw 1 +▁зас 1 +áció 1 +▁във 1 +ತ್ರ 1 +nije 1 +▁яго 1 +ケ 1 +供 1 +母 1 +▁سپ 1 +▁məlumat 1 +laga 1 +▁तक 1 +nah 1 +▁PC 1 +глед 1 +շտ 1 +ענ 1 +МА 1 +▁मन 1 +kula 1 +ხა 1 +DP 1 +غر 1 +▁aina 1 +▁ಶ 1 +larga 1 +借 1 +プ 1 +▁4- 1 +▁đề 1 +▁България 1 +ēja 1 +▁ګ 1 +▁کتاب 1 +▁pou 1 +αμ 1 +න්ත 1 +ктив 1 +▁melakukan 1 +▁vậy 1 +▁AL 1 +റ്റി 1 +ౌ 1 +▁można 1 +▁mua 1 +▁איך 1 +åt 1 +▁gau 1 +So 1 +០ 1 +▁없 1 +傳 1 +weit 1 +ົ 1 +trum 1 +▁situ 1 +træ 1 +هل 1 +▁මට 1 +▁doar 1 +▁пе 1 +▁1999 1 +şan 1 +營 1 +▁toàn 1 +ради 1 +оф 1 +▁İl 1 +▁faci 1 +▁Mobil 1 +也不 1 +τρο 1 +▁Est 1 +фици 1 +fru 1 +▁rezerv 1 +▁41 1 +▁seja 1 +ikki 1 +▁wax 1 +ового 1 +قان 1 +▁kanssa 1 +▁positiv 1 +اك 1 +ады 1 +▁hard 1 +▁kalau 1 +▁case 1 +ତ୍ 1 +päeva 1 +▁kto 1 +ατ 1 +rate 1 +▁vier 1 +ቲ 1 +փ 1 +verti 1 +각 1 +larini 1 +cznych 1 +ង់ 1 +аар 1 +אים 1 +▁alternativ 1 +ట్ట 1 +dura 1 +▁SU 1 +▁Свет 1 +热 1 +гч 1 +▁relativ 1 +▁장 1 +ରୀ 1 +▁usu 1 +jad 1 +อาหาร 1 +▁çık 1 +క్క 1 +▁global 1 +ráð 1 +tett 1 +кот 1 +▁Dalam 1 +▁זו 1 +▁कारण 1 +DR 1 +cke 1 +▁profesional 1 +▁우리 1 +dela 1 +▁శ 1 +▁دولت 1 +▁motiv 1 +აქ 1 +ევ 1 +▁เป็น 1 +qe 1 +▁අතර 1 +▁కో 1 +လွ 1 +▁više 1 +ują 1 +കു 1 +ņu 1 +ദ്ധ 1 +nó 1 +▁21. 1 +▁থেকে 1 +पर 1 +▁lista 1 +glia 1 +mí 1 +▁PER 1 +▁Maa 1 +aires 1 +▁али 1 +iai 1 +bly 1 +▁team 1 +liyi 1 +ാര് 1 +▁fill 1 +پور 1 +▁себя 1 +▁Projekt 1 +速 1 +▁offer 1 +יום 1 +られ 1 +tów 1 +टो 1 +ซื้อ 1 +を見 1 +注意 1 +▁Amb 1 +љи 1 +九 1 +ଦା 1 +▁jää 1 +lub 1 +▁grund 1 +▁kết 1 +▁muda 1 +【 1 +ନି 1 +存在 1 +▁tend 1 +▁600 1 +עם 1 +බි 1 +▁representa 1 +рија 1 +▁பட 1 +▁спа 1 +▁elektron 1 +lės 1 +▁Wan 1 +čaj 1 +zás 1 +團 1 +某 1 +▁пі 1 +otta 1 +iyle 1 +▁डा 1 +бр 1 +▁phòng 1 +mpion 1 +tyr 1 +▁өөр 1 +Τ 1 +ಳೆ 1 +ћ 1 +▁бүр 1 +iteit 1 +вра 1 +▁төр 1 +ገር 1 +เขา 1 +ship 1 +▁후 1 +▁detta 1 +ダ 1 +Ս 1 +uksen 1 +趣 1 +▁ചെയ്യ 1 +號 1 +▁muka 1 +▁چا 1 +lief 1 +▁alte 1 +▁خلاف 1 +ాన్ని 1 +警 1 +▁گرد 1 +รู้ 1 +ээс 1 +នេះ 1 +▁топ 1 +▁contribu 1 +loj 1 +에는 1 +ttava 1 +▁noe 1 +ഖ 1 +번 1 +自然 1 +En 1 +ઘ 1 +▁मिल 1 +▁propri 1 +▁Italia 1 +ډ 1 +ják 1 +▁ЗА 1 +दान 1 +ores 1 +ಯನ್ನು 1 +▁rồi 1 +▁தி 1 +ээд 1 +▁mein 1 +▁Radio 1 +▁הצ 1 +ові 1 +▁այս 1 +轉 1 +▁significa 1 +त्या 1 +හෙ 1 +BC 1 +arkan 1 +▁prostor 1 +▁być 1 +▁usa 1 +ದೇಶ 1 +▁appar 1 +NH 1 +ဟာ 1 +▁ради 1 +тым 1 +▁18. 1 +▁pár 1 +డం 1 +ություններ 1 +ሄ 1 +▁nostra 1 +க்கி 1 +нието 1 +大的 1 +▁үчүн 1 +સ્ટ 1 +GU 1 +▁Пра 1 +iana 1 +मु 1 +▁هست 1 +播 1 +▁ainda 1 +▁support 1 +ится 1 +▁Лу 1 +▁lượng 1 +boj 1 +▁laik 1 +▁parlament 1 +স্ট 1 +देखि 1 +િયા 1 +▁sebelum 1 +▁önce 1 +Ω 1 +bril 1 +ûn 1 +meld 1 +рай 1 +直接 1 +学习 1 +τω 1 +린 1 +rade 1 +▁метод 1 +변 1 +ಬ್ 1 +▁Pin 1 +▁Қа 1 +tioner 1 +edad 1 +▁تس 1 +▁პრო 1 +以下 1 +സ്ഥ 1 +ỡ 1 +inho 1 +▁Brasil 1 +cję 1 +mog 1 +ôi 1 +▁tác 1 +▁නිසා 1 +fur 1 +мей 1 +▁अं 1 +或者 1 +▁2: 1 +فار 1 +wed 1 +▁tips 1 +כש 1 +कल 1 +▁busca 1 +▁бойынша 1 +stic 1 +ถูก 1 +▁جان 1 +ในการ 1 +usan 1 +መስ 1 +ನು 1 +▁City 1 +イン 1 +间 1 +צע 1 +▁bolj 1 +▁පි 1 +dzī 1 +уға 1 +▁род 1 +ጫ 1 +אפשר 1 +llinen 1 +▁الز 1 +▁Sti 1 +▁MO 1 +▁твор 1 +▁bha 1 +stilling 1 +టా 1 +▁einfach 1 +eń 1 +ກາ 1 +ಪ್ಪ 1 +▁también 1 +χο 1 +іст 1 +听 1 +▁പറയ 1 +▁يت 1 +дете 1 +представ 1 +script 1 +▁Previous 1 +▁gest 1 +дон 1 +රිය 1 +강 1 +▁tapa 1 +íte 1 +Ra 1 +ични 1 +▁mostra 1 +▁sekali 1 +影响 1 +▁ήταν 1 +▁жар 1 +ků 1 +▁tutto 1 +▁බල 1 +▁prev 1 +old 1 +iadau 1 +teli 1 +ىلى 1 +friend 1 +▁hava 1 +▁جب 1 +tuko 1 +ines 1 +▁حمل 1 +ОН 1 +▁JA 1 +acak 1 +နာ 1 +ồng 1 +▁hva 1 +▁familia 1 +บา 1 +ison 1 +լի 1 +ଶା 1 +▁ଉ 1 +च्छ 1 +โดย 1 +▁ой 1 +▁היה 1 +пле 1 +uten 1 +▁vlast 1 +μή 1 +▁bek 1 +▁كه 1 +cket 1 +parti 1 +በር 1 +▁исто 1 +▁නෑ 1 +elles 1 +ंट 1 +На 1 +▁ព 1 +mite 1 +sip 1 +▁አን 1 +▁غیر 1 +க்கும் 1 +त्व 1 +پا 1 +جی 1 +▁சு 1 +RK 1 +کي 1 +▁elektri 1 +▁الى 1 +هه 1 +▁KA 1 +▁прет 1 +▁Pada 1 +醫 1 +▁który 1 +rige 1 +cade 1 +ல்ல 1 +▁gian 1 +τος 1 +▁World 1 +telu 1 +钱 1 +▁olduğunu 1 +▁volgende 1 +ಿಕೆ 1 +별 1 +عاد 1 +▁high 1 +▁човек 1 +언 1 +▁αντι 1 +▁trop 1 +▁አይ 1 +▁toate 1 +▁дзе 1 +人员 1 +▁Arbeit 1 +▁Bol 1 +eil 1 +rako 1 +जि 1 +▁ketika 1 +IST 1 +▁آب 1 +చ్చ 1 +▁Stor 1 +▁album 1 +রো 1 +品牌 1 +▁celebra 1 +▁April 1 +開始 1 +ෙන 1 +▁hotell 1 +▁nombre 1 +▁vje 1 +വര 1 +ଙ୍ଗ 1 +പ്പെട്ട 1 +тика 1 +▁став 1 +酒店 1 +kó 1 +৮ 1 +גר 1 +▁tempor 1 +اتی 1 +▁mano 1 +▁dön 1 +هر 1 +pé 1 +▁gab 1 +▁ಅವರ 1 +▁stand 1 +▁yan 1 +كە 1 +amba 1 +ුණ 1 +мест 1 +▁Premi 1 +날 1 +▁gh 1 +чил 1 +dana 1 +▁ಸು 1 +▁በተ 1 +ello 1 +▁divi 1 +ერთი 1 +ભા 1 +uzi 1 +tól 1 +igo 1 +▁open 1 +▁Gor 1 +bok 1 +▁ക്ക് 1 +しています 1 +inan 1 +▁vur 1 +rni 1 +ước 1 +ခြ 1 +vede 1 +▁خدا 1 +чко 1 +ating 1 +▁ער 1 +▁χρ 1 +ძი 1 +aggio 1 +νες 1 +▁divers 1 +▁chất 1 +મી 1 +тата 1 +gabe 1 +ādā 1 +გრ 1 +▁ዓ 1 +ှ 1 +гад 1 +▁fik 1 +▁доби 1 +▁tua 1 +▁mij 1 +▁continua 1 +ലോ 1 +дийн 1 +zki 1 +▁Apa 1 +ović 1 +▁կար 1 +ിരിക്ക 1 +kha 1 +▁dieser 1 +▁ڈ 1 +արան 1 +▁સાથે 1 +▁подоб 1 +ạch 1 +▁August 1 +tatud 1 +▁спр 1 +вре 1 +ാമ 1 +▁Play 1 +館 1 +▁Бог 1 +® 1 +izar 1 +这种 1 +ješ 1 +▁ž 1 +opera 1 +ег 1 +wię 1 +ਕੀ 1 +сия 1 +source 1 +слід 1 +нды 1 +้ว 1 +ikas 1 +וז 1 +ply 1 +الی 1 +אג 1 +՞ 1 +▁तु 1 +būt 1 +▁nuestro 1 +ուց 1 +реш 1 +esen 1 +HU 1 +ધા 1 +köz 1 +▁organi 1 +лэл 1 +sinde 1 +ഗ്ര 1 +גן 1 +▁بات 1 +▁жүр 1 +hver 1 +▁تب 1 +ρες 1 +▁át 1 +afi 1 +алт 1 +▁través 1 +▁المن 1 +▁sob 1 +ことが 1 +سه 1 +-11 1 +ண்ண 1 +▁Ор 1 +क्षण 1 +ંગ 1 +مۇ 1 +၅ 1 +ály 1 +▁داشت 1 +rė 1 +▁කෙ 1 +▁analiz 1 +οπ 1 +sına 1 +▁teng 1 +▁meine 1 +▁muốn 1 +dung 1 +▁കാണ 1 +лыг 1 +▁Ю 1 +кая 1 +▁සිටි 1 +തിര 1 +europe 1 +кү 1 +▁ო 1 +▁laga 1 +فضل 1 +价 1 +▁المت 1 +گان 1 +▁PA 1 +のか 1 +一下 1 +시간 1 +श्च 1 +కె 1 +▁kuru 1 +▁Sab 1 +▁;) 1 +▁nema 1 +▁mp 1 +產 1 +buru 1 +زد 1 +▁jan 1 +▁इं 1 +▁Estado 1 +طة 1 +LT 1 +▁mempunyai 1 +れる 1 +▁Ry 1 +▁खेल 1 +▁చెప్ప 1 +ಿಗೆ 1 +spre 1 +▁فرم 1 +ēs 1 +-18 1 +담 1 +อม 1 +φά 1 +ڪر 1 +▁stato 1 +țe 1 +▁Му 1 +योग 1 +▁bằng 1 +▁št 1 +ເປັນ 1 +▁yana 1 +قص 1 +▁mucho 1 +είο 1 +哈 1 +▁اخت 1 +▁tü 1 +ሰው 1 +նդ 1 +▁פר 1 +ثر 1 +gleich 1 +talo 1 +య్య 1 +ሆን 1 +▁बाद 1 +▁ປະ 1 +▁гол 1 +ಧಿ 1 +▁пара 1 +▁sera 1 +چه 1 +▁ав 1 +▁صد 1 +غرب 1 +▁ទ 1 +ेट 1 +ությամբ 1 +▁Peter 1 +▁kombin 1 +▁वे 1 +ģ 1 +ilen 1 +ველ 1 +ولي 1 +եզ 1 +▁year 1 +園 1 +▁hud 1 +▁kvalitet 1 +ບໍ່ 1 +aggi 1 +արտ 1 +ادي 1 +▁druh 1 +▁aŭ 1 +прос 1 +ades 1 +▁части 1 +kár 1 +tting 1 +▁after 1 +gga 1 +సా 1 +ომ 1 +ებულ 1 +▁մեկ 1 +ပို 1 +erar 1 +洲 1 +▁který 1 +▁nich 1 +bá 1 +ños 1 +ierung 1 +ոց 1 +యూ 1 +сю 1 +ydi 1 +čiau 1 +▁Kui 1 +သည် 1 +▁ସହ 1 +▁yil 1 +▁झ 1 +副 1 +▁ซึ่ง 1 +ப்பி 1 +түү 1 +եռ 1 +▁akkor 1 +북 1 +▁cuando 1 +▁ഷ 1 +精神 1 +述 1 +աժ 1 +▁وح 1 +nach 1 +▁፡ 1 +▁थियो 1 +▁hol 1 +▁change 1 +▁veril 1 +নের 1 +준 1 +▁தே 1 +▁غير 1 +作为 1 +ایا 1 +sö 1 +について 1 +▁रह 1 +rme 1 +▁האט 1 +isesti 1 +AF 1 +فه 1 +пя 1 +▁qab 1 +▁(0) 1 +▁See 1 +ۇش 1 +▁програм 1 +▁igra 1 +ಷ್ಟ 1 +▁seine 1 +ائد 1 +ائل 1 +▁още 1 +▁because 1 +ikus 1 +▁اعت 1 +eda 1 +苦 1 +ўся 1 +hrá 1 +▁distribu 1 +▁esi 1 +▁Jahr 1 +መን 1 +▁sku 1 +भि 1 +мил 1 +▁සැ 1 +cima 1 +lih 1 +dä 1 +▁Roman 1 +ලේ 1 +ाने 1 +vare 1 +▁audi 1 +疑 1 +▁questa 1 +▁njihov 1 +ossa 1 +▁Ly 1 +▁үй 1 +系 1 +▁qə 1 +rétt 1 +zę 1 +מט 1 +▁tiempo 1 +▁ಮು 1 +ුණු 1 +▁sign 1 +▁chủ 1 +ürü 1 +իտ 1 +▁Wil 1 +anse 1 +dii 1 +저 1 +joj 1 +▁dai 1 +▁Grup 1 +▁წლის 1 +富 1 +▁Juli 1 +đ 1 +çə 1 +▁düş 1 +דים 1 +ឡ 1 +צל 1 +казва 1 +باد 1 +▁اش 1 +田 1 +حسن 1 +ਏ 1 +për 1 +pok 1 +▁المس 1 +▁случае 1 +ंच 1 +▁mă 1 +▁спи 1 +▁ialah 1 +леп 1 +ေတာ္ 1 +▁Kad 1 +έλ 1 +套 1 +▁TO 1 +▁halamang 1 +áci 1 +数据 1 +arre 1 +▁ажил 1 +▁comentari 1 +作品 1 +দে 1 +▁Pos 1 +చూ 1 +ringer 1 +▁porn 1 +tail 1 +▁مهم 1 +εία 1 +▁Hei 1 +评 1 +▁completa 1 +▁ăn 1 +ەپ 1 +▁deste 1 +▁información 1 +▁Mun 1 +লো 1 +▁proc 1 +ರೂ 1 +ivat 1 +పో 1 +zare 1 +oria 1 +ူး 1 +▁rég 1 +▁ის 1 +▁chiar 1 +▁საქართველოს 1 +position 1 +фик 1 +▁ث 1 +▁quy 1 +metro 1 +āju 1 +▁महिला 1 +困 1 +ηση 1 +▁스 1 +亲 1 +幾 1 +.1. 1 +ଜା 1 +קור 1 +痛 1 +ਜੀ 1 +▁uten 1 +▁४ 1 +ણે 1 +çu 1 +iger 1 +▁хи 1 +ću 1 +育 1 +क्स 1 +▁автор 1 +сыз 1 +▁प्रा 1 +▁тя 1 +▁ټ 1 +ცე 1 +▁manera 1 +druk 1 +▁חי 1 +toa 1 +ният 1 +특 1 +מער 1 +▁ndi 1 +ทําให้ 1 +αγ 1 +▁book 1 +▁ý 1 +మో 1 +▁текст 1 +▁Å 1 +▁nome 1 +เค 1 +фо 1 +朝 1 +▁Հայաստանի 1 +sob 1 +▁değil 1 +ips 1 +ាប់ 1 +▁tốt 1 +▁ಮಾಡಿ 1 +远 1 +ຫາ 1 +न्छ 1 +là 1 +यी 1 +jedni 1 +▁୧ 1 +ழு 1 +▁antes 1 +▁فل 1 +וא 1 +▁Ин 1 +▁waktu 1 +▁tính 1 +▁постав 1 +כים 1 +▁Prezident 1 +▁նաեւ 1 +▁רב 1 +▁lige 1 +atra 1 +аты 1 +sız 1 +tora 1 +सँग 1 +тися 1 +ək 1 +ङ 1 +φα 1 +ხი 1 +產品 1 +వర 1 +▁David 1 +▁także 1 +geme 1 +▁သူ 1 +Ռ 1 +гөн 1 +uju 1 +▁також 1 +نان 1 +▁значи 1 +デ 1 +▁иска 1 +急 1 +tol 1 +kret 1 +▁aceste 1 +Ca 1 +▁хран 1 +serve 1 +middel 1 +▁लेख 1 +▁אחר 1 +ують 1 +▁پای 1 +▁menja 1 +那么 1 +ggio 1 +▁altre 1 +▁ਵੀ 1 +▁дума 1 +▁Como 1 +cident 1 +▁добро 1 +र्ड 1 +▁էլ 1 +ALA 1 +עת 1 +ből 1 +වට 1 +▁അതി 1 +hän 1 +בים 1 +▁Uz 1 +▁bax 1 +▁consectetur 1 +지만 1 +ından 1 +lés 1 +▁شک 1 +▁бөл 1 +▁नाम 1 +▁EN 1 +▁enda 1 +▁leo 1 +ене 1 +▁کرتے 1 +atkan 1 +▁bö 1 +載 1 +▁central 1 +мага 1 +անձ 1 +▁PDF 1 +ило 1 +▁మీ 1 +وات 1 +▁වූ 1 +典 1 +▁Maar 1 +หน 1 +▁sat 1 +ည် 1 +▁انجام 1 +क्रम 1 +▁అని 1 +राज 1 +бан 1 +なら 1 +צה 1 +のが 1 +dla 1 +▁ră 1 +▁pháp 1 +▁massa 1 +▁Mont 1 +שם 1 +ාව 1 +kler 1 +لے 1 +ləş 1 +пон 1 +▁خوش 1 +▁(6) 1 +teik 1 +റിയ 1 +noma 1 +ราย 1 +ART 1 +原因 1 +▁dintre 1 +▁ဆ 1 +があります 1 +▁tyre 1 +mista 1 +▁otro 1 +ଣ୍ଡ 1 +bec 1 +▁แ 1 +▁hil 1 +vam 1 +spill 1 +weg 1 +შე 1 +posto 1 +行业 1 +្ល 1 +гн 1 +töl 1 +▁varia 1 +▁людей 1 +▁pati 1 +чні 1 +▁type 1 +▁tě 1 +את 1 +▁visit 1 +▁kerana 1 +论 1 +fäl 1 +பு 1 +iau 1 +лук 1 +hov 1 +▁zie 1 +fik 1 +tiği 1 +AU 1 +▁thường 1 +▁pēc 1 +しました 1 +ിക്കുന്ന 1 +▁sine 1 +▁hiệu 1 +含 1 +▁zich 1 +▁masuk 1 +请 1 +▁Ә 1 +สร้าง 1 +่อ 1 +▁ago 1 +ឲ្យ 1 +▁գր 1 +这样 1 +辦 1 +協 1 +áž 1 +沒 1 +нак 1 +▁ກ 1 +▁uprav 1 +2% 1 +廣 1 +파 1 +ално 1 +▁dog 1 +▁zwei 1 +сок 1 +ଯାଇ 1 +mens 1 +端 1 +στα 1 +成功 1 +▁bile 1 +чай 1 +하기 1 +▁Institut 1 +કાર 1 +ると 1 +kej 1 +obra 1 +مس 1 +▁già 1 +▁할 1 +▁hade 1 +ета 1 +▁تت 1 +етін 1 +▁Ø 1 +jelen 1 +স্ত 1 +▁Tin 1 +▁위 1 +ügy 1 +خواه 1 +зя 1 +off 1 +öz 1 +连 1 +▁deux 1 +TAN 1 +▁남 1 +язан 1 +ंत 1 +njem 1 +ឺ 1 +▁isə 1 +nö 1 +മു 1 +වීම 1 +פט 1 +楽 1 +blog 1 +auto 1 +▁koment 1 +ása 1 +▁እን 1 +적으로 1 +▁iza 1 +▁sampai 1 +▁destina 1 +▁Kla 1 +ışı 1 +tional 1 +남 1 +කු 1 +مبر 1 +šana 1 +甚至 1 +▁esti 1 +ဦး 1 +téri 1 +▁praw 1 +nol 1 +իչ 1 +ରୋ 1 +னர் 1 +ologie 1 +▁xuất 1 +вать 1 +哪 1 +▁ڪرڻ 1 +धी 1 +▁ला 1 +ынан 1 +hab 1 +▁استان 1 +▁están 1 +টে 1 +▁പു 1 +ларды 1 +れば 1 +▁Закон 1 +▁больше 1 +gini 1 +▁Türk 1 +▁наше 1 +ୃ 1 +бед 1 +viet 1 +dej 1 +▁پل 1 +കൾ 1 +▁Latvijas 1 +nske 1 +▁муз 1 +SL 1 +сп 1 +воз 1 +раг 1 +beri 1 +▁মু 1 +▁මො 1 +▁прес 1 +▁yksi 1 +角 1 +▁Voi 1 +idagi 1 +這個 1 +▁numero 1 +చా 1 +เมือง 1 +ക്കുന്ന 1 +▁viz 1 +▁קי 1 +▁тал 1 +▁ew 1 +тү 1 +▁מב 1 +▁egen 1 +▁gas 1 +▁яка 1 +▁absolut 1 +ùng 1 +ھن 1 +▁место 1 +erat 1 +▁tí 1 +tati 1 +okra 1 +平台 1 +▁può 1 +▁мис 1 +ಂತೆ 1 +eurs 1 +ପି 1 +zone 1 +ديد 1 +ົມ 1 +terapi 1 +▁ligger 1 +▁điểm 1 +ଣି 1 +зни 1 +ғын 1 +jali 1 +book 1 +ਘ 1 +gama 1 +धन 1 +মে 1 +ഞ്ച 1 +2009 1 +▁rasa 1 +आई 1 +ılması 1 +▁них 1 +ël 1 +▁Mä 1 +გო 1 +▁በአ 1 +вых 1 +innen 1 +مز 1 +▁agar 1 +▁нужно 1 +vest 1 +czą 1 +▁itse 1 +▁chế 1 +▁जु 1 +úl 1 +▁Vin 1 +ദേശ 1 +น่า 1 +ਮੀ 1 +ખા 1 +ズ 1 +வும் 1 +▁problém 1 +tër 1 +ιών 1 +▁энэ 1 +▁keçir 1 +▁slut 1 +▁آزاد 1 +▁поли 1 +хүү 1 +ေရ 1 +▁aktivit 1 +בה 1 +不要 1 +▁nego 1 +شي 1 +▁isso 1 +▁جه 1 +ប់ 1 +នៅ 1 +▁Бе 1 +▁jūs 1 +春 1 +▁თავ 1 +ror 1 +മെ 1 +มิ 1 +kaza 1 +ttiin 1 +▁რომელიც 1 +jeti 1 +owo 1 +news 1 +leme 1 +ຟ 1 +▁সং 1 +ldi 1 +ест 1 +▁cảm 1 +▁לו 1 +.12. 1 +οντας 1 +زن 1 +▁mən 1 +▁laat 1 +▁distin 1 +เล่น 1 +降 1 +mē 1 +tyk 1 +维 1 +คา 1 +бит 1 +▁Kä 1 +ေတာ့ 1 +υγ 1 +である 1 +▁vê 1 +Mar 1 +ήσεις 1 +▁едно 1 +töö 1 +▁불 1 +港 1 +EP 1 +▁μπ 1 +▁Dru 1 +ье 1 +▁نور 1 +▁ինչ 1 +دھ 1 +rebbe 1 +ිත 1 +▁hoặc 1 +▁aller 1 +cijos 1 +▁pê 1 +▁він 1 +▁направи 1 +ண்ட 1 +NC 1 +ються 1 +▁друго 1 +טער 1 +TP 1 +xin 1 +ıyla 1 +▁qal 1 +יון 1 +▁trí 1 +ţia 1 +кли 1 +▁SO 1 +fic 1 +▁mema 1 +nimo 1 +▁prá 1 +▁memang 1 +ေသာ 1 +▁מס 1 +▁nhiên 1 +▁dagen 1 +ljub 1 +政策 1 +▁download 1 +▁አስ 1 +▁ठ 1 +▁restaurant 1 +▁tiếp 1 +▁коле 1 +▁unui 1 +ვით 1 +віч 1 +▁identi 1 +▁የመ 1 +acağı 1 +леж 1 +ลด 1 +▁Aber 1 +รูป 1 +戰 1 +िय 1 +ိဳ 1 +ுள்ள 1 +▁General 1 +ضي 1 +pare 1 +ครั้ง 1 +▁medlem 1 +▁байх 1 +തെ 1 +ಂಬ 1 +▁यु 1 +▁Gaz 1 +łow 1 +▁sao 1 +▁olur 1 +νει 1 +▁አለ 1 +▁ହ 1 +änder 1 +tár 1 +▁فقط 1 +wys 1 +עוד 1 +uð 1 +▁skol 1 +ڪار 1 +▁Τα 1 +esa 1 +hlas 1 +dyn 1 +ђа 1 +▁personas 1 +▁сөз 1 +▁major 1 +ությունների 1 +▁ingin 1 +льні 1 +3% 1 +▁ús 1 +стри 1 +▁Dé 1 +▁juni 1 +▁машин 1 +дағы 1 +투 1 +▁Mini 1 +▁حيث 1 +▁setiap 1 +gger 1 +▁kde 1 +èn 1 +-15 1 +̣ 1 +meli 1 +сво 1 +bú 1 +info 1 +θέ 1 +▁бес 1 +zul 1 +hľad 1 +▁Bang 1 +▁ჰ 1 +чих 1 +stava 1 +▁ette 1 +▁система 1 +лиш 1 +hall 1 +▁매 1 +वन 1 +won 1 +presa 1 +sett 1 +플 1 +功能 1 +▁paar 1 +എ 1 +▁služb 1 +était 1 +▁चा 1 +dev 1 +কার 1 +▁groot 1 +නෙ 1 +▁चु 1 +▁حا 1 +fær 1 +рийн 1 +īs 1 +▁مار 1 +▁آخر 1 +‘‘ 1 +лігі 1 +bad 1 +▁قوم 1 +sió 1 +ENT 1 +owi 1 +τών 1 +ก่อน 1 +cita 1 +था 1 +କେ 1 +▁Hva 1 +лим 1 +angka 1 +怎么 1 +дол 1 +анд 1 +চি 1 +▁Ren 1 +▁još 1 +▁ڪيو 1 +▁thiết 1 +र्ग 1 +▁ellen 1 +▁quanto 1 +BER 1 +▁through 1 +รั 1 +delig 1 +▁Lorem 1 +▁moja 1 +▁студ 1 +▁tới 1 +cient 1 +▁болгон 1 +landi 1 +olla 1 +印 1 +▁ਸੀ 1 +uva 1 +ন্ত 1 +PT 1 +menn 1 +▁proced 1 +чення 1 +▁lag 1 +这是 1 +prim 1 +독 1 +▁తె 1 +mond 1 +เห 1 +▁tetapi 1 +koń 1 +▁bû 1 +୧ 1 +ડા 1 +▁رہے 1 +ງານ 1 +▁business 1 +▁aps 1 +წე 1 +odd 1 +adó 1 +ոտ 1 +▁esper 1 +▁ред 1 +ሜ 1 +▁اليوم 1 +மான 1 +▁김 1 +▁чы 1 +تك 1 +koh 1 +송 1 +သော 1 +众 1 +▁nghĩ 1 +ਸਾ 1 +چە 1 +بحث 1 +ора 1 +▁appro 1 +etta 1 +▁Pun 1 +▁mela 1 +▁Əliyev 1 +ಣೆ 1 +това 1 +دت 1 +▁زن 1 +▁ایم 1 +වන 1 +ולה 1 +لح 1 +usaha 1 +▁ል 1 +▁mode 1 +ták 1 +▁студент 1 +ಿಸಿದ 1 +▁primi 1 +င့် 1 +िए 1 +γά 1 +ຫນ 1 +lke 1 +▁مردم 1 +..." 1 +ที่มี 1 +▁ترین 1 +▁கி 1 +▁вос 1 +▁минут 1 +▁වැ 1 +ADA 1 +▁kutoka 1 +▁همه 1 +katu 1 +▁TE 1 +▁मात्र 1 +7) 1 +лоо 1 +▁배 1 +游 1 +ナ 1 +MAN 1 +브 1 +▁خارج 1 +▁ну 1 +емо 1 +▁hệ 1 +ბე 1 +ុំ 1 +▁телефон 1 +đa 1 +תם 1 +ırı 1 +वर् 1 +▁vain 1 +▁பிர 1 +تنا 1 +标 1 +▁ពី 1 +्यो 1 +gmail 1 +▁público 1 +只有 1 +▁Shu 1 +name 1 +cens 1 +qar 1 +jedna 1 +რთ 1 +対 1 +və 1 +▁کوئی 1 +стар 1 +▁زیر 1 +興 1 +▁read 1 +gung 1 +সি 1 +דם 1 +ගෙ 1 +▁technolog 1 +▁хэл 1 +lick 1 +стве 1 +ിലെ 1 +一种 1 +▁BE 1 +▁52 1 +ജ് 1 +теп 1 +tze 1 +退 1 +sana 1 +부터 1 +▁재 1 +▁жер 1 +рез 1 +ήσει 1 +lių 1 +▁hyvä 1 +народ 1 +inä 1 +테 1 +▁سل 1 +養 1 +italia 1 +▁~ 1 +工程 1 +▁боюнча 1 +▁બે 1 +ক্ত 1 +▁certain 1 +ירה 1 +ජා 1 +▁şe 1 +▁रहा 1 +ijas 1 +rika 1 +感じ 1 +▁Plat 1 +يى 1 +▁taas 1 +lərində 1 +арх 1 +▁исп 1 +▁בח 1 +ఫ్ 1 +kak 1 +аас 1 +能够 1 +▁رکھ 1 +ന്ത 1 +ಿಲ್ಲ 1 +isko 1 +▁również 1 +طا 1 +▁mø 1 +▁rapport 1 +▁pob 1 +▁tudo 1 +▁mnie 1 +▁folos 1 +▁kunt 1 +пат 1 +▁büyük 1 +ică 1 +wikipedia 1 +sehen 1 +скай 1 +證 1 +▁امام 1 +▁İs 1 +রণ 1 +मो 1 +ತ್ತ 1 +▁อ 1 +:1 1 +նի 1 +▁ਉ 1 +▁trị 1 +ರಿಯ 1 +เกิด 1 +▁который 1 +에게 1 +كو 1 +túr 1 +kira 1 +годи 1 +ნდ 1 +џ 1 +дик 1 +skip 1 +فل 1 +ндар 1 +heden 1 +pont 1 +Ž 1 +▁46 1 +▁Ud 1 +▁пом 1 +иот 1 +▁explica 1 +ಕೊ 1 +depend 1 +жива 1 +▁Ska 1 +▁Sve 1 +ξε 1 +▁ನೀಡ 1 +ติด 1 +स्थ 1 +კუ 1 +ālā 1 +除了 1 +选择 1 +rów 1 +ფი 1 +▁mail 1 +破 1 +/10 1 +▁حر 1 +-8 1 +▁свят 1 +sində 1 +__ 1 +ento 1 +काल 1 +tish 1 +▁49 1 +JI 1 +стал 1 +だった 1 +tad 1 +▁oslo 1 +▁:-) 1 +niku 1 +▁əsas 1 +▁magyar 1 +절 1 +מא 1 +kään 1 +лё 1 +▁Gl 1 +atge 1 +tî 1 +etlen 1 +▁زندگی 1 +且 1 +판 1 +पाल 1 +▁شی 1 +ելի 1 +900 1 +▁жил 1 +▁its 1 +ψη 1 +▁кто 1 +fika 1 +▁tạo 1 +▁ඔ 1 +▁chức 1 +කොට 1 +meye 1 +▁പരി 1 +”。 1 +مات 1 +ját 1 +▁тұр 1 +▁bene 1 +▁review 1 +дя 1 +▁ደ 1 +▁esto 1 +буд 1 +▁организаци 1 +▁Microsoft 1 +alda 1 +яг 1 +▁તેમ 1 +وند 1 +మైన 1 +رفت 1 +▁бизнес 1 +bera 1 +phe 1 +ൾ 1 +скиот 1 +▁जी 1 +ร้าน 1 +▁paš 1 +▁gaz 1 +▁эрх 1 +kamer 1 +CT 1 +▁נישט 1 +፡ 1 +▁Kinder 1 +▁notre 1 +ต์ 1 +ംഗ 1 +1% 1 +كار 1 +مند 1 +▁penge 1 +▁କି 1 +gā 1 +▁UN 1 +▁thị 1 +דבר 1 +ਛ 1 +▁liter 1 +▁тако 1 +▁тіл 1 +▁poco 1 +idan 1 +इन 1 +▁optim 1 +୫ 1 +즈 1 +▁பொ 1 +ừng 1 +▁أس 1 +▁faz 1 +lekt 1 +▁AM 1 +kwa 1 +▁Kata 1 +农 1 +දැ 1 +ZE 1 +需求 1 +venir 1 +▁objav 1 +szko 1 +μένο 1 +сында 1 +相关 1 +론 1 +▁노 1 +▁بنا 1 +▁зам 1 +▁وإ 1 +▁هل 1 +يط 1 +▁информ 1 +COM 1 +үш 1 +▁sada 1 +維 1 +晚 1 +tamise 1 +▁fazer 1 +ği 1 +лған 1 +ရွ 1 +ڪي 1 +UD 1 +▁használ 1 +▁shp 1 +▁viktig 1 +lage 1 +▁ach 1 +▁Win 1 +ილი 1 +درس 1 +lian 1 +▁bán 1 +хов 1 +llum 1 +▁бил 1 +▁dövlət 1 +▁श्री 1 +ਆ 1 +▁نیست 1 +ගි 1 +▁කිරීම 1 +Qu 1 +wort 1 +▁വേ 1 +▁Milli 1 +▁Kara 1 +▁ጋር 1 +től 1 +ԱՆ 1 +گەن 1 +▁soll 1 +éri 1 +▁sống 1 +ായിരുന്നു 1 +іх 1 +bila 1 +▁कार्यक्रम 1 +fit 1 +▁عرب 1 +່ງ 1 +▁stud 1 +νω 1 +انس 1 +ஷ 1 +▁Saya 1 +Յ 1 +ធ្វើ 1 +▁(5 1 +▁человек 1 +ők 1 +лъ 1 +招 1 +▁സമ 1 +▁kõ 1 +モ 1 +▁કરો 1 +جميع 1 +פֿ 1 +宝 1 +▁bija 1 +▁ბა 1 +▁5- 1 +▁دنیا 1 +lust 1 +▁бере 1 +▁conce 1 +▁savu 1 +▁fet 1 +▁tablet 1 +သည်။ 1 +▁prezident 1 +KK 1 +▁ата 1 +▁ඇත 1 +▁maken 1 +▁prom 1 +యు 1 +tato 1 +sub 1 +shtë 1 +lal 1 +ська 1 +▁необходимо 1 +▁მარ 1 +loh 1 +nü 1 +ТЕ 1 +▁Test 1 +环境 1 +erea 1 +កា 1 +cing 1 +▁gjøre 1 +вая 1 +ќ 1 +▁celu 1 +spira 1 +▁نظام 1 +▁هغه 1 +▁ಕೆ 1 +▁آم 1 +ového 1 +▁vị 1 +ົບ 1 +▁yazı 1 +▁труд 1 +▁meno 1 +jana 1 +▁функц 1 +ھە 1 +ափ 1 +▁عنوان 1 +ठा 1 +స్థ 1 +рп 1 +▁kaup 1 +ቴ 1 +zol 1 +ดา 1 +▁Anna 1 +▁πά 1 +ston 1 +िम 1 +▁kuma 1 +提高 1 +▁Jun 1 +ပြီး 1 +лды 1 +▁Ind 1 +ույ 1 +▁compro 1 +▁Paris 1 +▁פי 1 +▁loại 1 +▁jednak 1 +▁Cla 1 +lerde 1 +▁والے 1 +remos 1 +maha 1 +▁edo 1 +▁taip 1 +ร่วม 1 +▁بسیار 1 +ಜಾ 1 +riad 1 +▁Аз 1 +冷 1 +▁ਕਰਨ 1 +▁يمكن 1 +▁көп 1 +▁instala 1 +पूर 1 +muz 1 +ellen 1 +дне 1 +eria 1 +бол 1 +系统 1 +టర్ 1 +лері 1 +తీ 1 +FO 1 +현 1 +хай 1 +▁Съ 1 +RAN 1 +▁құ 1 +לת 1 +いました 1 +sept 1 +适 1 +رين 1 +iški 1 +▁alta 1 +აზე 1 +واز 1 +街 1 +rát 1 +kép 1 +グ 1 +▁Jūs 1 +lez 1 +ନ୍ତ 1 +તો 1 +skola 1 +ЕР 1 +કો 1 +мес 1 +▁dove 1 +Ր 1 +▁jen 1 +▁política 1 +পি 1 +▁nakon 1 +ओं 1 +▁שנ 1 +တစ္ 1 +▁избор 1 +▁then 1 +ств 1 +▁ket 1 +דות 1 +orang 1 +ნება 1 +▁ogni 1 +▁konkur 1 +రణ 1 +alue 1 +дуу 1 +▁tum 1 +ਕਾਰ 1 +EST 1 +чан 1 +▁rapid 1 +▁hely 1 +▁SP 1 +▁அவ 1 +▁ember 1 +ുകള് 1 +▁tussen 1 +ограф 1 +▁legal 1 +▁alan 1 +▁kasi 1 +ທາງ 1 +៥ 1 +haya 1 +▁ဖ 1 +▁habita 1 +lý 1 +hely 1 +શા 1 +▁показа 1 +VER 1 +▁ჯ 1 +▁іс 1 +හො 1 +▁موقع 1 +فض 1 +▁tài 1 +▁වගේ 1 +▁Link 1 +▁būti 1 +၄ 1 +▁σου 1 +tui 1 +▁giới 1 +▁report 1 +▁નથી 1 +▁rou 1 +વિ 1 +्वा 1 +▁↑ 1 +xit 1 +ኒ 1 +▁повече 1 +uel 1 +כנ 1 +rede 1 +▁sá 1 +daki 1 +ự 1 +▁چار 1 +근 1 +న్ని 1 +сына 1 +czę 1 +ضم 1 +មក 1 +żo 1 +ဏ 1 +ště 1 +▁Ef 1 +▁ຕ 1 +muse 1 +ပါ။ 1 +河 1 +corso 1 +▁לת 1 +满 1 +зер 1 +▁оны 1 +atie 1 +ตก 1 +매 1 +▁اپنی 1 +▁visu 1 +▁Inn 1 +dīt 1 +दू 1 +шли 1 +ሥ 1 +plaats 1 +▁record 1 +▁bliver 1 +▁ξε 1 +সা 1 +▁moc 1 +ตั้ง 1 +ости 1 +vista 1 +▁bệnh 1 +ທີ 1 +bûn 1 +▁sitt 1 +វិ 1 +▁ਜਾ 1 +ЕН 1 +▁اسلامی 1 +▁után 1 +▁حد 1 +▁Oslo 1 +літ 1 +바 1 +timo 1 +gjør 1 +▁paling 1 +нок 1 +▁आहेत 1 +▁شب 1 +▁where 1 +▁υπ 1 +kunde 1 +âr 1 +รัก 1 +▁بیشتر 1 +▁mondo 1 +สาร 1 +গা 1 +▁кре 1 +彼 1 +▁!! 1 +▁pernah 1 +vim 1 +▁կամ 1 +γρά 1 +▁болон 1 +ющих 1 +▁Кра 1 +ۇن 1 +яване 1 +▁logo 1 +dhu 1 +enden 1 +▁Gratis 1 +สาว 1 +▁команд 1 +▁minim 1 +सभा 1 +護 1 +▁Î 1 +▁bruk 1 +▁ευ 1 +守 1 +▁ዘ 1 +ρία 1 +ësi 1 +▁marketing 1 +เปิด 1 +▁prezent 1 +բեր 1 +▁Rom 1 +温 1 +тып 1 +лите 1 +անում 1 +▁पि 1 +더 1 +▁47 1 +fort 1 +ệt 1 +▁Bak 1 +hala 1 +▁monta 1 +▁Santa 1 +सम्म 1 +tatás 1 +たい 1 +▁αυτή 1 +బి 1 +метр 1 +remo 1 +▁ለማ 1 +▁кур 1 +家庭 1 +শি 1 +дэг 1 +▁baie 1 +كوم 1 +菜 1 +▁बना 1 +▁acum 1 +ပဲ 1 +▁phí 1 +▁Беларусі 1 +ことを 1 +▁tah 1 +here 1 +cī 1 +ორი 1 +▁Tel 1 +▁own 1 +▁recent 1 +曲 1 +เด็ก 1 +tja 1 +მართ 1 +system 1 +ப்பட 1 +рш 1 +μον 1 +分析 1 +▁IP 1 +निक 1 +abad 1 +격 1 +vár 1 +▁ishte 1 +▁process 1 +▁pari 1 +็ด 1 +пал 1 +▁ት 1 +▁skil 1 +易 1 +vern 1 +▁samme 1 +▁கோ 1 +ಭಾ 1 +▁בין 1 +à 1 +▁הז 1 +ເຊ 1 +เจ้า 1 +rett 1 +▁hồ 1 +▁कुछ 1 +▁بالا 1 +เห็น 1 +លា 1 +æð 1 +▁ឆ្នាំ 1 +સી 1 +nehmen 1 +▁water 1 +ayaan 1 +▁hyn 1 +цыі 1 +▁sagt 1 +▁کش 1 +▁recon 1 +ject 1 +ραφ 1 +ビ 1 +▁vastu 1 +▁Nav 1 +▁drog 1 +എസ് 1 +bele 1 +opa 1 +نب 1 +ትን 1 +职 1 +wart 1 +▁Bla 1 +▁Ту 1 +▁Ihr 1 +лау 1 +▁मैं 1 +પા 1 +兴 1 +mię 1 +살 1 +posit 1 +dā 1 +ял 1 +શ્ 1 +▁් 1 +læg 1 +ಸೆ 1 +sime 1 +ынын 1 +▁पी 1 +▁हजार 1 +ድር 1 +ਭ 1 +▁nom 1 +σχ 1 +bentuk 1 +▁proje 1 +قار 1 +fek 1 +探 1 +▁ඔහු 1 +喜 1 +Ρ 1 +▁funciona 1 +ქალ 1 +▁način 1 +▁الآ 1 +ලු 1 +ización 1 +▁down 1 +▁दी 1 +专业 1 +ძე 1 +▁qarşı 1 +eniu 1 +ạc 1 +দেশ 1 +รวม 1 +▁punkt 1 +மாக 1 +▁آباد 1 +▁olyan 1 +▁sollte 1 +▁lett 1 +owany 1 +ībā 1 +▁pote 1 +▁ത്ത 1 +rice 1 +ង្ 1 +коро 1 +▁الأم 1 +ค่า 1 +વું 1 +තේ 1 +بن 1 +▁artikel 1 +ərə 1 +▁mill 1 +dami 1 +íl 1 +pá 1 +तं 1 +▁seva 1 +kraft 1 +ỉ 1 +tık 1 +▁дело 1 +ුරු 1 +▁Kha 1 +வது 1 +▁Maj 1 +▁의 1 +พา 1 +सु 1 +▁West 1 +发现 1 +pression 1 +ارا 1 +激 1 +क्र 1 +ūk 1 +коль 1 +δια 1 +ાં 1 +kse 1 +のです 1 +▁Els 1 +▁ಇದ 1 +专 1 +ഥ 1 +▁accept 1 +добре 1 +ሐ 1 +▁page 1 +永 1 +መል 1 +ጡ 1 +RD 1 +态 1 +гро 1 +▁шта 1 +▁Johan 1 +▁continu 1 +▁šal 1 +判 1 +৬ 1 +يين 1 +▁intre 1 +▁ساخت 1 +题 1 +400 1 +ರಿಗೆ 1 +▁event 1 +▁horas 1 +▁Leben 1 +▁styr 1 +▁ਸੁ 1 +▁tamén 1 +▁skj 1 +▁Vai 1 +gado 1 +▁1990 1 +最近 1 +▁November 1 +▁diper 1 +lərə 1 +δη 1 +тук 1 +认为 1 +לים 1 +▁واحد 1 +▁aange 1 +tør 1 +rac 1 +▁برنامه 1 +łów 1 +pā 1 +▁съм 1 +voor 1 +▁всі 1 +▁két 1 +త్త 1 +ಬ್ಬ 1 +▁свое 1 +lji 1 +ថ 1 +呼 1 +ημα 1 +需 1 +▁đường 1 +とは 1 +mány 1 +mız 1 +देव 1 +ട്ട് 1 +▁sosial 1 +▁enkelt 1 +출장 1 +სტი 1 +▁fot 1 +▁werd 1 +ാല് 1 +ಘ 1 +vreme 1 +▁خوب 1 +▁президент 1 +പ്ര 1 +gress 1 +ាត់ 1 +sine 1 +ន្ 1 +ciju 1 +▁ಹೇಳ 1 +▁Chan 1 +▁ስለ 1 +▁آنها 1 +▁cerca 1 +רש 1 +▁dok 1 +▁Zá 1 +▁רו 1 +▁sector 1 +λει 1 +▁מצ 1 +Su 1 +ték 1 +▁bütün 1 +వం 1 +▁colle 1 +威 1 +8) 1 +▁मै 1 +导 1 +పీ 1 +دې 1 +▁ott 1 +▁праз 1 +▁dahil 1 +▁ton 1 +▁भए 1 +▁већ 1 +บริการ 1 +Խ 1 +▁skup 1 +▁outros 1 +اور 1 +▁സം 1 +cate 1 +协 1 +▁якія 1 +▁உள்ள 1 +皮 1 +▁Region 1 +.10. 1 +σκ 1 +नं 1 +ійськ 1 +▁Prze 1 +وح 1 +▁však 1 +▁00 1 +▁duy 1 +នាក់ 1 +▁göra 1 +ejo 1 +▁Ві 1 +ضر 1 +めて 1 +生产 1 +quant 1 +узе 1 +тара 1 +▁sab 1 +▁göre 1 +чита 1 +faq 1 +โร 1 +park 1 +jām 1 +▁cei 1 +yje 1 +▁ea 1 +лығы 1 +▁2015. 1 +-7 1 +grade 1 +▁тази 1 +โอ 1 +全国 1 +elli 1 +bü 1 +tral 1 +კითხ 1 +ห้อง 1 +SU 1 +ілі 1 +▁tsy 1 +ۈر 1 +tivos 1 +▁buru 1 +▁ध 1 +вания 1 +prak 1 +どう 1 +autres 1 +▁yake 1 +▁thức 1 +▁investiga 1 +▁என்ன 1 +▁были 1 +▁Angel 1 +volg 1 +гд 1 +▁800 1 +ែក 1 +نم 1 +采 1 +▁Ай 1 +omis 1 +ėti 1 +▁polis 1 +▁själv 1 +▁الان 1 +▁Фран 1 +▁sort 1 +▁access 1 +▁kada 1 +▁ZA 1 +ುತ್ತದೆ 1 +▁brez 1 +▁ଖ 1 +fang 1 +▁бі 1 +認 1 +▁Roz 1 +ēju 1 +vrh 1 +fum 1 +dau 1 +新的 1 +▁состав 1 +▁cik 1 +▁Club 1 +ingar 1 +dades 1 +▁ምን 1 +▁punt 1 +▁කල 1 +▁There 1 +▁add 1 +▁අද 1 +նել 1 +▁deres 1 +eiros 1 +▁install 1 +▁Hon 1 +▁zelf 1 +จน 1 +leb 1 +श्र 1 +ថា 1 +ですが 1 +▁այլ 1 +ਭਾ 1 +▁neden 1 +▁обу 1 +yla 1 +гло 1 +讲 1 +額 1 +▁ڪو 1 +具有 1 +ОР 1 +ország 1 +័យ 1 +▁Roma 1 +ಹಾ 1 +▁facili 1 +▁terhadap 1 +▁tale 1 +бре 1 +▁Ras 1 +▁Char 1 +feri 1 +▁interven 1 +tores 1 +▁verden 1 +▁حتى 1 +▁hela 1 +html 1 +按 1 +haf 1 +▁pozna 1 +óg 1 +beli 1 +gende 1 +▁diye 1 +mend 1 +▁nici 1 +шин 1 +FC 1 +חל 1 +טן 1 +ۋ 1 +ßen 1 +▁курс 1 +▁bên 1 +पत्र 1 +linna 1 +▁કો 1 +cció 1 +ñe 1 +▁projet 1 +ога 1 +▁אבל 1 +inë 1 +гін 1 +هدف 1 +▁talál 1 +▁бюджет 1 +produk 1 +▁tour 1 +৭ 1 +▁tahu 1 +ありません 1 +လဲ 1 +гон 1 +▁원 1 +▁עס 1 +考え 1 +▁Pero 1 +▁possible 1 +ଟ୍ 1 +完全 1 +▁call 1 +мж 1 +tán 1 +njang 1 +яў 1 +ຈາກ 1 +▁Plus 1 +▁karakter 1 +▁св 1 +는데 1 +ද්ධ 1 +så 1 +税 1 +дэ 1 +نٹ 1 +wiki 1 +зов 1 +▁PM 1 +▁Thai 1 +legt 1 +лэг 1 +▁Deze 1 +maga 1 +▁nimi 1 +ជាតិ 1 +▁22. 1 +▁jsme 1 +▁זיך 1 +▁64 1 +▁hold 1 +▁vya 1 +▁փ 1 +acija 1 +મિ 1 +▁cầu 1 +▁proto 1 +▁cand 1 +ług 1 +▁Temp 1 +▁Dre 1 +▁گئی 1 +ура 1 +ucht 1 +▁சா 1 +isce 1 +▁senza 1 +的に 1 +Lo 1 +▁essa 1 +▁koos 1 +Com 1 +дели 1 +▁million 1 +▁going 1 +wier 1 +нк 1 +▁כמו 1 +▁bom 1 +gawa 1 +▁dopo 1 +იდ 1 +علوم 1 +हार 1 +үүр 1 +▁នេះ 1 +лга 1 +▁उत् 1 +ത്തിന് 1 +θεί 1 +▁राज्य 1 +▁erre 1 +heten 1 +tré 1 +▁effet 1 +▁stvar 1 +isation 1 +▁сите 1 +lè 1 +ሸ 1 +▁19. 1 +ıldı 1 +pio 1 +كة 1 +▁vám 1 +▁сказал 1 +čný 1 +▁donc 1 +▁чита 1 +される 1 +سبب 1 +▁huy 1 +▁έχουν 1 +йл 1 +ေပး 1 +స్తా 1 +tiba 1 +▁duhet 1 +▁stol 1 +ורה 1 +ких 1 +▁win 1 +夏 1 +▁μπορεί 1 +▁جی 1 +金融 1 +▁හිත 1 +▁ڪا 1 +▁लोक 1 +是一 1 +▁kirja 1 +▁działa 1 +نف 1 +▁Các 1 +bahagi 1 +ācijas 1 +ද් 1 +▁Grand 1 +▁მას 1 +▁poh 1 +stāv 1 +▁Nederland 1 +sien 1 +മേ 1 +▁ము 1 +きた 1 +▁آئی 1 +▁Кыргыз 1 +▁yêu 1 +▁sele 1 +▁جائے 1 +▁בו 1 +konna 1 +▁учи 1 +raya 1 +▁primeiro 1 +으 1 +ुन 1 +limi 1 +szé 1 +頂 1 +▁SI 1 +tahan 1 +யும் 1 +▁мора 1 +teurs 1 +၇ 1 +neet 1 +▁ಬಾ 1 +קע 1 +▁selama 1 +▁chú 1 +▁пен 1 +/3 1 +ብር 1 +ців 1 +같 1 +ப்பா 1 +้ง 1 +ກັນ 1 +▁aff 1 +خانه 1 +▁पद 1 +▁cest 1 +sulta 1 +▁мә 1 +▁Aku 1 +tú 1 +lista 1 +▁cea 1 +▁Sor 1 +വേ 1 +洗 1 +jene 1 +yun 1 +환 1 +▁парти 1 +nę 1 +▁taka 1 +iyyə 1 +▁ljudi 1 +▁تف 1 +тора 1 +IZ 1 +бет 1 +ію 1 +เส 1 +▁troch 1 +raq 1 +▁රට 1 +▁viele 1 +ਿਆਂ 1 +▁ಬಿ 1 +жит 1 +ције 1 +rile 1 +телей 1 +▁સુ 1 +tävä 1 +▁group 1 +▁sağla 1 +▁Bha 1 +אַר 1 +▁chun 1 +برد 1 +El 1 +▁hace 1 +čil 1 +▁ဒီ 1 +努力 1 +تن 1 +▁डि 1 +▁cliente 1 +ピ 1 +▁تاریخ 1 +▁ਸੰ 1 +िएको 1 +▁სამ 1 +▁չի 1 +zwa 1 +posta 1 +නම් 1 +▁ölkə 1 +罗 1 +కూ 1 +▁správ 1 +eľ 1 +▁Khan 1 +ვალ 1 +čo 1 +▁العالم 1 +감 1 +▁سنڌ 1 +ského 1 +▁πολύ 1 +ിച്ച് 1 +▁majd 1 +пус 1 +▁isto 1 +▁হা 1 +ଥ 1 +▁gerne 1 +▁однос 1 +פים 1 +!!!! 1 +结 1 +ത്തു 1 +还有 1 +credit 1 +▁daw 1 +▁pru 1 +▁politika 1 +▁Kami 1 +وجه 1 +dze 1 +ណា 1 +▁alın 1 +▁arra 1 +七 1 +▁సి 1 +tah 1 +처 1 +เรียน 1 +▁био 1 +води 1 +kod 1 +▁než 1 +▁drugi 1 +▁doanh 1 +▁gje 1 +vê 1 +▁වී 1 +▁მათ 1 +▁Hen 1 +tsiooni 1 +ANA 1 +▁Já 1 +▁उत्तर 1 +tuan 1 +rza 1 +▁تأ 1 +yal 1 +нные 1 +▁effect 1 +▁број 1 +▁mye 1 +րո 1 +▁הו 1 +▁vielä 1 +र्य 1 +索 1 +的な 1 +▁ના 1 +▁Ке 1 +▁Кар 1 +uses 1 +▁mikro 1 +நா 1 +फ् 1 +▁Wenn 1 +วั 1 +тъ 1 +▁Band 1 +▁Blo 1 +▁sui 1 +▁αυτο 1 +군 1 +▁keď 1 +erade 1 +▁לק 1 +JU 1 +▁đại 1 +ənə 1 +▁någon 1 +valg 1 +ბრ 1 +کے 1 +▁भर 1 +更多 1 +ėja 1 +▁Menschen 1 +בות 1 +▁Qua 1 +2008 1 +▁Gri 1 +▁gratuit 1 +▁resultat 1 +▁zakon 1 +fér 1 +skiego 1 +จํา 1 +▁seri 1 +▁ange 1 +▁ነው። 1 +▁senti 1 +භ 1 +nike 1 +迷 1 +▁CON 1 +▁лица 1 +ชา 1 +什麼 1 +olu 1 +larning 1 +ац 1 +kým 1 +▁desta 1 +▁Prin 1 +ຜູ້ 1 +ගත 1 +▁Под 1 +īgā 1 +▁পরি 1 +писан 1 +ập 1 +тни 1 +技術 1 +8% 1 +технолог 1 +▁деца 1 +▁sulla 1 +▁old 1 +▁Lang 1 +▁filo 1 +▁bilder 1 +▁1998 1 +dovolj 1 +janje 1 +▁한국 1 +▁favorit 1 +III 1 +INA 1 +▁xəbər 1 +▁මහ 1 +策 1 +▁viac 1 +财 1 +▁regul 1 +權 1 +▁mooi 1 +▁unu 1 +bygg 1 +كس 1 +izado 1 +עמ 1 +▁Това 1 +ろ 1 +▁bê 1 +eras 1 +ฉ 1 +кри 1 +сту 1 +賽 1 +▁Hay 1 +sicht 1 +▁ese 1 +▁кредит 1 +▁економ 1 +▁พ 1 +жил 1 +▁många 1 +ають 1 +—— 1 +ovali 1 +cari 1 +బు 1 +ếu 1 +้ม 1 +▁επί 1 +▁recept 1 +▁kontra 1 +ဓ 1 +gian 1 +▁päivä 1 +▁полі 1 +บาง 1 +mín 1 +ಲ್ಲಿ 1 +achd 1 +▁тэр 1 +▁Universit 1 +▁بیان 1 +控 1 +▁пример 1 +▁Voor 1 +▁élet 1 +▁ገ 1 +ಡೆ 1 +ဒါ 1 +▁turi 1 +वाद 1 +kirja 1 +اقتصاد 1 +▁Sø 1 +▁култур 1 +네 1 +換 1 +▁ጊዜ 1 +▁último 1 +▁üzrə 1 +▁сур 1 +gers 1 +▁între 1 +▁tule 1 +jd 1 +ائے 1 +னா 1 +ग्र 1 +▁51 1 +▁पो 1 +▁cena 1 +▁həm 1 +▁၁ 1 +แต่ 1 +פות 1 +▁Kim 1 +вір 1 +▁geni 1 +届 1 +▁عوام 1 +ਅ 1 +lique 1 +وط 1 +dër 1 +▁жы 1 +ิก 1 +ае 1 +워 1 +▁tháng 1 +▁경우 1 +▁Seg 1 +ѓ 1 +▁lớn 1 +▁каза 1 +یست 1 +న్నారు 1 +▁pena 1 +ૃ 1 +tice 1 +▁szak 1 +▁veliko 1 +ാര 1 +стре 1 +znám 1 +tę 1 +▁fins 1 +oq 1 +ლად 1 +▁musik 1 +्ता 1 +gut 1 +ಾಯಿ 1 +▁සිදු 1 +انے 1 +▁запо 1 +危 1 +ือ 1 +ativ 1 +нан 1 +pă 1 +ਮੇ 1 +ورة 1 +▁bodo 1 +▁neste 1 +ുമ 1 +▁điện 1 +▁explo 1 +▁ilma 1 +ừ 1 +▁benefici 1 +wid 1 +տար 1 +пов 1 +טל 1 +świad 1 +rą 1 +lagen 1 +察 1 +უს 1 +▁quel 1 +▁mewn 1 +▁تحت 1 +▁yi 1 +बल 1 +रू 1 +نية 1 +亞 1 +batan 1 +▁gai 1 +ția 1 +武 1 +ального 1 +мак 1 +▁ಚ 1 +▁alam 1 +▁مون 1 +หลัง 1 +▁coup 1 +ária 1 +инде 1 +merci 1 +ಕೋ 1 +សំ 1 +▁Bat 1 +▁होता 1 +कृत 1 +けど 1 +細 1 +▁установ 1 +▁Black 1 +▁Soomaaliya 1 +ВА 1 +ቂ 1 +За 1 +▁ვერ 1 +āli 1 +pren 1 +තිය 1 +σει 1 +शु 1 +lî 1 +▁ومن 1 +▁Robert 1 +нят 1 +進行 1 +нува 1 +邊 1 +cap 1 +пита 1 +▁obraz 1 +發展 1 +▁iç 1 +▁kaikki 1 +јте 1 +组织 1 +▁maha 1 +تاب 1 +▁نشان 1 +feito 1 +▁hall 1 +ekî 1 +▁Lan 1 +TC 1 +ຍາ 1 +▁месец 1 +ené 1 +ybės 1 +▁गए 1 +▁komentar 1 +ท่าน 1 +▁IV 1 +нев 1 +พร 1 +▁модел 1 +វា 1 +창 1 +ါ 1 +pora 1 +▁doch 1 +▁vede 1 +ык 1 +ели 1 +▁ხელ 1 +▁Diese 1 +ція 1 +MM 1 +иране 1 +▁मी 1 +▁feel 1 +▁pula 1 +▁constitu 1 +▁العمل 1 +▁Ти 1 +▁való 1 +▁екс 1 +ωρ 1 +skrift 1 +▁чувств 1 +▁bhfuil 1 +▁لیکن 1 +ाच्या 1 +spor 1 +▁Flor 1 +▁autori 1 +▁каже 1 +講 1 +▁Ran 1 +רק 1 +▁vak 1 +ВО 1 +eign 1 +▁perfekt 1 +બી 1 +кін 1 +ţ 1 +▁қара 1 +ाउने 1 +▁کام 1 +diyi 1 +態 1 +▁vše 1 +写 1 +▁איר 1 +▁ट्र 1 +▁дом 1 +ssimo 1 +այի 1 +നു 1 +ácia 1 +ഗ് 1 +сел 1 +▁Quest 1 +ሆኑ 1 +tex 1 +▁France 1 +രുടെ 1 +▁giúp 1 +ิง 1 +▁TA 1 +յու 1 +data 1 +uksia 1 +▁මි 1 +▁sitä 1 +▁nú 1 +境 1 +尽 1 +▁diverse 1 +ເລ 1 +▁Mei 1 +halten 1 +ијата 1 +▁شروع 1 +χει 1 +ഞ 1 +▁alu 1 +ツ 1 +▁khó 1 +▁파 1 +叫 1 +▁sedang 1 +름 1 +UA 1 +▁ويو 1 +անկ 1 +टक 1 +▁όπως 1 +▁Tanzania 1 +ář 1 +רע 1 +▁spille 1 +కీ 1 +▁krye 1 +▁який 1 +راف 1 +ások 1 +бат 1 +む 1 +環境 1 +▁بند 1 +▁Ihnen 1 +▁ਇਹ 1 +bó 1 +▁cultura 1 +▁ଚ 1 +ГА 1 +нас 1 +ယူ 1 +▁realit 1 +▁използва 1 +▁بىلەن 1 +▁поль 1 +▁Maha 1 +▁Тур 1 +▁Ша 1 +追 1 +▁Daar 1 +▁үйл 1 +▁funkci 1 +lerine 1 +haj 1 +▁ഡ 1 +πί 1 +فو 1 +୩ 1 +▁এবং 1 +▁Cab 1 +▁бити 1 +σεων 1 +kili 1 +▁ਨਹੀਂ 1 +чне 1 +પ્ 1 +gruppe 1 +ଥା 1 +属 1 +露 1 +▁ලෙස 1 +ডি 1 +కొ 1 +하지 1 +ibili 1 +føre 1 +จริง 1 +dzē 1 +▁before 1 +arios 1 +▁bok 1 +κου 1 +▁lider 1 +λες 1 +▁20- 1 +ಪಿ 1 +чэ 1 +▁tanpa 1 +▁sobie 1 +▁ಫ 1 +ումը 1 +旅 1 +▁Commons 1 +лата 1 +▁zgod 1 +igkeit 1 +▁директор 1 +▁всего 1 +▁Festival 1 +الت 1 +▁kế 1 +קים 1 +гээр 1 +▁idé 1 +▁സു 1 +γα 1 +▁vẫn 1 +▁kaya 1 +▁natur 1 +kulu 1 +▁mort 1 +ampi 1 +није 1 +VIDEO 1 +▁በማ 1 +çar 1 +elés 1 +െന്ന് 1 +ίων 1 +อั 1 +川 1 +▁assist 1 +▁ค 1 +ლია 1 +▁sociale 1 +etik 1 +▁precis 1 +ống 1 +項 1 +תק 1 +тре 1 +rug 1 +образ 1 +▁cidade 1 +ถ้า 1 +▁eerste 1 +ninger 1 +▁szo 1 +▁گزارش 1 +▁teatr 1 +▁اک 1 +條 1 +liye 1 +حف 1 +ုံ 1 +▁CD 1 +положен 1 +▁الأس 1 +лото 1 +شناس 1 +بال 1 +mjer 1 +עבר 1 +AA 1 +शन 1 +២០ 1 +дъл 1 +▁fod 1 +னு 1 +бен 1 +▁Bis 1 +iendo 1 +vanju 1 +▁mond 1 +향 1 +▁Esperanto 1 +たち 1 +യോഗ 1 +▁παρά 1 +larla 1 +чим 1 +▁одно 1 +▁различ 1 +ที่จะ 1 +▁Për 1 +thy 1 +▁више 1 +ሪያ 1 +▁त्यस 1 +▁fact 1 +▁durum 1 +▁Wikipedia 1 +▁casino 1 +ပါတယ်။ 1 +ండ్ 1 +▁биде 1 +▁így 1 +лично 1 +чке 1 +rych 1 +▁žmo 1 +▁году 1 +рот 1 +лийн 1 +ราช 1 +ліз 1 +▁Agen 1 +▁Hə 1 +▁liên 1 +▁byl 1 +polit 1 +▁små 1 +gues 1 +吗 1 +▁melalui 1 +INI 1 +▁konu 1 +ိုင် 1 +လုပ္ 1 +ֆ 1 +յանի 1 +▁ශ් 1 +ਕੇ 1 +iksi 1 +▁dedi 1 +▁감 1 +▁Daten 1 +▁yaz 1 +tiques 1 +のですが 1 +▁180 1 +tino 1 +▁{ 1 +uur 1 +▁aqui 1 +▁dự 1 +KT 1 +दे 1 +▁hora 1 +legen 1 +ática 1 +ગા 1 +ിട 1 +▁determina 1 +▁urma 1 +された 1 +рб 1 +▁نق 1 +▁প্রতি 1 +ministra 1 +▁конкурс 1 +▁juu 1 +▁стан 1 +▁ජ 1 +ন্দ 1 +erunt 1 +קה 1 +▁ceva 1 +▁días 1 +อุ 1 +▁Kwa 1 +ستر 1 +istik 1 +ថ្ងៃ 1 +▁2014. 1 +▁svensk 1 +σημ 1 +提出 1 +kais 1 +ург 1 +▁phần 1 +▁जान 1 +▁خواهد 1 +▁ჩვენ 1 +ែង 1 +▁области 1 +твар 1 +ಕಾರ 1 +گیری 1 +▁Же 1 +▁nisi 1 +laj 1 +▁hæ 1 +acaq 1 +▁పె 1 +▁nepa 1 +เลือก 1 +▁بې 1 +▁lê 1 +මක් 1 +▁კო 1 +tivi 1 +zzi 1 +തര 1 +ซี 1 +ansa 1 +▁چی 1 +ബ 1 +哥 1 +ළු 1 +▁diesem 1 +▁μετα 1 +▁கொ 1 +ਈ 1 +պան 1 +യിൽ 1 +▁ответ 1 +▁bry 1 +рис 1 +▁أع 1 +мп 1 +设计 1 +ጨ 1 +gah 1 +בט 1 +▁Att 1 +šli 1 +▁ĉe 1 +czenie 1 +▁شامل 1 +قد 1 +▁Oh 1 +lük 1 +▁ټول 1 +misel 1 +ธรรม 1 +▁її 1 +តាម 1 +ীয় 1 +пит 1 +▁Ру 1 +ਬੀ 1 +▁Công 1 +ຽ 1 +▁रे 1 +▁sky 1 +ரம் 1 +iera 1 +▁trova 1 +zil 1 +▁mert 1 +▁dum 1 +itti 1 +holder 1 +చు 1 +ଆ 1 +▁αγ 1 +起来 1 +ਠ 1 +애 1 +ଷ୍ଟ 1 +▁año 1 +▁being 1 +ಂದು 1 +kova 1 +▁हर 1 +ៈ 1 +tulo 1 +航 1 +anak 1 +上海 1 +ŭ 1 +فس 1 +卻 1 +ុង 1 +▁Israel 1 +iat 1 +ברי 1 +▁finne 1 +ksen 1 +▁Casa 1 +ከተ 1 +▁нар 1 +▁suas 1 +laka 1 +ڻي 1 +不会 1 +得到 1 +сам 1 +parte 1 +สิ 1 +▁Mart 1 +oğlu 1 +bank 1 +ָ 1 +ბერ 1 +ρή 1 +ໄປ 1 +іі 1 +tely 1 +skej 1 +▁poč 1 +▁sap 1 +▁prek 1 +▁αρχ 1 +ној 1 +救 1 +核 1 +▁susi 1 +▁افغان 1 +▁může 1 +▁Pak 1 +mų 1 +kän 1 +Ма 1 +ţă 1 +ዴ 1 +בית 1 +▁täy 1 +פא 1 +KS 1 +▁parë 1 +▁stron 1 +▁Komp 1 +▁دانش 1 +▁Ś 1 +પી 1 +▁göstər 1 +нение 1 +▁تخ 1 +▁mulig 1 +ंगे 1 +tende 1 +▁!!! 1 +δρ 1 +▁Luc 1 +되는 1 +កម្ម 1 +szą 1 +sikt 1 +▁Bad 1 +ஜ 1 +▁mitt 1 +▁TH 1 +결 1 +▁tarih 1 +▁جهان 1 +▁Vý 1 +▁آموزش 1 +είς 1 +ด้าน 1 +▁skupin 1 +جب 1 +▁szem 1 +πει 1 +▁Србије 1 +ття 1 +▁단 1 +出现 1 +Å 1 +lako 1 +жан 1 +මන් 1 +▁ചെ 1 +nite 1 +хал 1 +▁valg 1 +ნს 1 +גיע 1 +ชาติ 1 +▁kum 1 +▁હોય 1 +لال 1 +▁saber 1 +岁 1 +▁Ну 1 +▁key 1 +▁çek 1 +▁Minister 1 +▁דו 1 +▁гэты 1 +▁individual 1 +▁बात 1 +該 1 +▁тим 1 +घा 1 +pata 1 +vky 1 +ító 1 +лом 1 +▁газ 1 +▁교 1 +▁የሚያ 1 +ິນ 1 +жение 1 +TRA 1 +/4 1 +kseen 1 +▁мер 1 +राष्ट्र 1 +ورد 1 +keun 1 +jū 1 +είτε 1 +૨ 1 +決 1 +▁අව 1 +▁inne 1 +рада 1 +▁σκ 1 +llow 1 +stof 1 +▁ගන්න 1 +▁اسان 1 +ュ 1 +▁kredit 1 +▁anderen 1 +▁dėl 1 +▁አንድ 1 +ГО 1 +▁Hvis 1 +កម្ពុជា 1 +حب 1 +▁godina 1 +▁International 1 +营 1 +félag 1 +plas 1 +派 1 +satt 1 +▁kerja 1 +▁manier 1 +令 1 +ується 1 +otto 1 +▁Dengan 1 +рог 1 +ల్లో 1 +▁adipiscing 1 +▁kit 1 +ਗਾ 1 +▁mismo 1 +优 1 +▁адрес 1 +тко 1 +maat 1 +רן 1 +▁pedig 1 +▁ତ 1 +трима 1 +ష్ట 1 +▁سور 1 +▁जे 1 +grafi 1 +▁raj 1 +ሶ 1 +▁ମଧ୍ୟ 1 +▁Service 1 +▁empre 1 +▁lesz 1 +▁oz 1 +ація 1 +▁होते 1 +ഴി 1 +▁també 1 +▁ఓ 1 +▁предо 1 +իվ 1 +▁код 1 +pdf 1 +στά 1 +兰 1 +้อ 1 +책 1 +lát 1 +▁haber 1 +▁dall 1 +પો 1 +▁گل 1 +यं 1 +返 1 +▁vera 1 +▁mungkin 1 +ისა 1 +▁Sho 1 +▁אינ 1 +▁ไม่ 1 +▁було 1 +ছ 1 +京 1 +▁donde 1 +▁लाख 1 +▁Prim 1 +▁etwas 1 +▁dibdib 1 +อด 1 +fə 1 +▁vive 1 +эй 1 +▁کلی 1 +czenia 1 +▁EUR 1 +▁글 1 +▁chị 1 +эж 1 +ЛИ 1 +érték 1 +ଥିଲା 1 +ាន 1 +▁nega 1 +▁mense 1 +ácie 1 +duğu 1 +र्क 1 +▁those 1 +യ്ക്ക 1 +▁ધ 1 +lacak 1 +▁කු 1 +ປີ 1 +▁Tru 1 +بات 1 +ћу 1 +▁جنگ 1 +sala 1 +bina 1 +▁කියලා 1 +วน 1 +ହୁ 1 +▁tämä 1 +▁urte 1 +▁çi 1 +▁ως 1 +▁mera 1 +▁Exp 1 +▁aansoek 1 +▁Off 1 +inha 1 +зан 1 +▁Tamil 1 +gare 1 +ائين 1 +کھ 1 +▁క్ 1 +▁capital 1 +ża 1 +телно 1 +ข่าว 1 +ារ 1 +▁пам 1 +▁tax 1 +▁berri 1 +▁Pala 1 +date 1 +atura 1 +司 1 +▁fina 1 +▁nime 1 +▁august 1 +▁never 1 +tifica 1 +ester 1 +▁kleine 1 +ghe 1 +▁image 1 +nummer 1 +یار 1 +czny 1 +جم 1 +▁metal 1 +roma 1 +缺 1 +несе 1 +Ը 1 +segu 1 +▁daug 1 +გე 1 +▁norma 1 +▁PAS 1 +▁atá 1 +▁област 1 +हाँ 1 +หนึ่ง 1 +ሠ 1 +▁lung 1 +▁heel 1 +జి 1 +▁must 1 +でしょう 1 +▁bū 1 +indu 1 +പ്പ് 1 +บุ 1 +▁número 1 +▁عم 1 +Con 1 +ۈش 1 +关系 1 +৯ 1 +mayı 1 +யம் 1 +mă 1 +/2 1 +неш 1 +ीत 1 +▁Indi 1 +tku 1 +jai 1 +ហើយ 1 +▁veya 1 +ಮೆ 1 +ሲ 1 +mpan 1 +ფე 1 +сфер 1 +▁შემდეგ 1 +ড়া 1 +вите 1 +بور 1 +დან 1 +온 1 +ilir 1 +▁Up 1 +য়ার 1 +ശ് 1 +▁juli 1 +မႈ 1 +▁программ 1 +тна 1 +czyn 1 +ئا 1 +▁فرا 1 +ৈ 1 +▁world 1 +▁dùng 1 +▁hierdie 1 +▁ander 1 +cular 1 +KAN 1 +亮 1 +rena 1 +▁ដោយ 1 +adás 1 +цію 1 +▁Vous 1 +מח 1 +חשב 1 +▁Jy 1 +ىدۇ 1 +АТ 1 +▁ана 1 +च्च 1 +▁لك 1 +ــ 1 +уулах 1 +▁fire 1 +▁vul 1 +▁یاد 1 +களுக்கு 1 +ောင်း 1 +訂 1 +បា 1 +ешь 1 +▁massasje 1 +kî 1 +▁yng 1 +RES 1 +▁bersama 1 +▁반 1 +ଥିଲେ 1 +lling 1 +▁verdi 1 +கே 1 +ດີ 1 +fí 1 +▁menn 1 +fyr 1 +ələ 1 +▁nhìn 1 +مد 1 +ované 1 +ទាំង 1 +paka 1 +▁acu 1 +▁komment 1 +▁тро 1 +жээ 1 +ளை 1 +سک 1 +एम 1 +▁مشر 1 +▁ол 1 +这一 1 +▁Say 1 +вих 1 +▁готов 1 +лів 1 +▁vairāk 1 +ေမ 1 +▁declara 1 +जर 1 +▁trang 1 +击 1 +ंचा 1 +▁zł 1 +▁aici 1 +یشن 1 +▁format 1 +▁शे 1 +uara 1 +แห่ง 1 +โด 1 +layan 1 +까 1 +emel 1 +▁mama 1 +▁club 1 +вяр 1 +▁товар 1 +ត្រូវ 1 +øn 1 +▁kuna 1 +ирање 1 +▁Problem 1 +ських 1 +▁условия 1 +በረ 1 +▁պ 1 +കൊണ്ട 1 +hús 1 +▁основа 1 +▁miest 1 +CS 1 +style 1 +▁صاحب 1 +▁hoc 1 +Վ 1 +なかった 1 +He 1 +▁vitamin 1 +itan 1 +бата 1 +▁något 1 +כי 1 +▁Tab 1 +▁resultado 1 +▁gyda 1 +▁vấn 1 +уча 1 +щен 1 +daan 1 +iques 1 +▁Movie 1 +▁după 1 +▁banda 1 +σκε 1 +▁کھ 1 +▁бул 1 +▁চা 1 +ნდა 1 +▁hitta 1 +ított 1 +▁చె 1 +▁என்ற 1 +دید 1 +tanda 1 +ଶ୍ 1 +మ్మ 1 +▁pam 1 +lse 1 +▁काय 1 +़ 1 +▁dilakukan 1 +ални 1 +ыз 1 +над 1 +ಯು 1 +▁világ 1 +מוד 1 +قۇ 1 +บั 1 +▁autem 1 +زر 1 +▁bilər 1 +▁cael 1 +▁kõik 1 +▁მაგრამ 1 +გუ 1 +maksu 1 +дання 1 +▁যে 1 +▁diam 1 +јед 1 +енд 1 +▁liet 1 +cela 1 +▁futur 1 +▁입 1 +▁bà 1 +▁ነው፡፡ 1 +കുറ 1 +▁waren 1 +یٹ 1 +лого 1 +păr 1 +▁России 1 +ики 1 +vek 1 +saka 1 +▁Inc 1 +vou 1 +ંદ 1 +staty 1 +▁state 1 +7% 1 +ുകള 1 +▁mengha 1 +▁эх 1 +▁தமிழ் 1 +ത്യ 1 +▁یکی 1 +▁Энэ 1 +▁curso 1 +▁المح 1 +▁quart 1 +ために 1 +մա 1 +▁Jahre 1 +ετε 1 +انا 1 +الم 1 +ਝ 1 +្រ 1 +унун 1 +ဖြ 1 +▁class 1 +վի 1 +ຄົນ 1 +▁portal 1 +hap 1 +▁Haus 1 +▁Kita 1 +負 1 +▁első 1 +▁места 1 +ezés 1 +sual 1 +സം 1 +pje 1 +▁ਐ 1 +play 1 +วด 1 +uvchi 1 +trze 1 +иста 1 +▁istifadə 1 +ស្រ 1 +ନେ 1 +່ນ 1 +တွင် 1 +▁pihak 1 +သည္ 1 +测 1 +▁Live 1 +ड़ी 1 +▁mayor 1 +▁také 1 +▁govern 1 +ced 1 +torul 1 +▁створ 1 +ität 1 +เน 1 +timi 1 +▁tarafından 1 +▁коментар 1 +muş 1 +рж 1 +▁berkata 1 +දෙන 1 +▁sıra 1 +ഹി 1 +gara 1 +një 1 +▁Ord 1 +▁alkohol 1 +▁verið 1 +▁Kako 1 +▁අය 1 +tuu 1 +▁dentro 1 +▁podat 1 +τελ 1 +▁Şi 1 +▁faoi 1 +EE 1 +тік 1 +АЙ 1 +▁luft 1 +▁Über 1 +elect 1 +บาท 1 +▁vite 1 +ცია 1 +▁olen 1 +ラン 1 +веч 1 +▁abi 1 +бач 1 +▁કા 1 +▁জন্য 1 +ავს 1 +CU 1 +vna 1 +占 1 +▁வரு 1 +landa 1 +▁lok 1 +රණය 1 +▁عمر 1 +▁mynd 1 +vig 1 +▁orta 1 +▁Arti 1 +ılan 1 +▁success 1 +▁esco 1 +rilor 1 +난 1 +▁थी 1 +По 1 +kni 1 +▁kuko 1 +шла 1 +沙 1 +шат 1 +เร 1 +ണ്ട് 1 +ହି 1 +الات 1 +ಗಳಲ್ಲಿ 1 +▁эл 1 +▁Թ 1 +video 1 +▁National 1 +▁Yn 1 +ዜ 1 +ฯ 1 +▁geht 1 +ετ 1 +ової 1 +▁vært 1 +ighed 1 +▁dollar 1 +عو 1 +▁የማ 1 +หัว 1 +▁seura 1 +pang 1 +▁असे 1 +▁ມີ 1 +▁Dzi 1 +πη 1 +مە 1 +ไว้ 1 +nggal 1 +▁никак 1 +yam 1 +▁version 1 +లేదు 1 +հան 1 +ирован 1 +ඹ 1 +Γ 1 +▁ditt 1 +▁قابل 1 +▁23. 1 +лива 1 +न्य 1 +ატ 1 +▁premier 1 +▁আর 1 +fond 1 +ເຂົ້າ 1 +agem 1 +▁provide 1 +▁drept 1 +рым 1 +balik 1 +holde 1 +▁Για 1 +зар 1 +盟 1 +▁ոչ 1 +డా 1 +esh 1 +jących 1 +सन 1 +tën 1 +೦ 1 +ಮ್ 1 +▁என 1 +tegi 1 +▁mirë 1 +▁Game 1 +▁ubi 1 +穿 1 +▁профес 1 +ဘူး 1 +▁Mur 1 +εσ 1 +hri 1 +ต้น 1 +laget 1 +පෙ 1 +▁Leg 1 +▁hoàn 1 +▁चल 1 +சா 1 +创 1 +ۇر 1 +▁ישראל 1 +▁interessant 1 +lê 1 +▁tener 1 +ається 1 +▁giải 1 +▁интернет 1 +▁նախ 1 +ново 1 +ရင္ 1 +ନ୍ଦ 1 +ড় 1 +▁vähe 1 +▁پنهنجي 1 +badi 1 +र्ट 1 +堂 1 +▁పరి 1 +▁أنه 1 +▁İş 1 +▁Qo 1 +går 1 +ன்று 1 +▁tieto 1 +бя 1 +εις 1 +▁Imp 1 +රය 1 +كثير 1 +ራት 1 +вого 1 +▁53 1 +tvr 1 +目的 1 +▁Có 1 +较 1 +ирани 1 +▁tror 1 +ND 1 +יפ 1 +申 1 +▁граждан 1 +etek 1 +পুর 1 +▁hey 1 +વો 1 +粉 1 +▁(7) 1 +Ú 1 +скага 1 +▁sida 1 +▁יכול 1 +ಕರ 1 +лося 1 +▁Anti 1 +▁бра 1 +kay 1 +ικ 1 +лып 1 +ív 1 +離 1 +хра 1 +年的 1 +错 1 +કી 1 +▁tiền 1 +elijk 1 +व्या 1 +sses 1 +▁cour 1 +▁segundo 1 +▁vaše 1 +भा 1 +ಲೇ 1 +隨 1 +▁ত 1 +mið 1 +▁sano 1 +AJ 1 +BE 1 +▁file 1 +לב 1 +▁magna 1 +▁står 1 +ikko 1 +▁norske 1 +óir 1 +▁olisi 1 +势 1 +▁Samsung 1 +ուտ 1 +▁Nik 1 +▁materi 1 +▁अव 1 +zing 1 +▁mű 1 +تحر 1 +แก 1 +זר 1 +遊 1 +▁Quốc 1 +▁көрсет 1 +جلس 1 +ț 1 +അ 1 +май 1 +▁həyat 1 +▁फा 1 +▁ши 1 +teria 1 +▁hingga 1 +οδ 1 +ေသ 1 +בת 1 +었 1 +▁noget 1 +တစ် 1 +▁კარ 1 +styr 1 +кло 1 +iskā 1 +ကာ 1 +길 1 +▁sini 1 +600 1 +▁Under 1 +ටු 1 +▁gur 1 +▁gode 1 +▁преди 1 +стей 1 +▁صرف 1 +ички 1 +▁moral 1 +աստան 1 +време 1 +▁Mr 1 +يج 1 +▁ore 1 +▁inspir 1 +▁ខែ 1 +▁وسلم 1 +ვთ 1 +owie 1 +illi 1 +dú 1 +▁terjadi 1 +之一 1 +▁национал 1 +تە 1 +▁giờ 1 +▁daca 1 +▁היי 1 +▁эс 1 +透 1 +▁वै 1 +▁Une 1 +▁Бр 1 +にお 1 +▁оку 1 +▁եմ 1 +▁کال 1 +刚 1 +▁మన 1 +terna 1 +▁rang 1 +▁получи 1 +▁щоб 1 +ਸੀ 1 +▁rayon 1 +stö 1 +▁mener 1 +竟 1 +▁futbol 1 +▁memberikan 1 +ustu 1 +sex 1 +គេ 1 +▁Unter 1 +サイト 1 +▁র 1 +чета 1 +តា 1 +гли 1 +руп 1 +თავ 1 +خصوص 1 +▁Marc 1 +▁ہونے 1 +幕 1 +▁दिया 1 +JO 1 +ючи 1 +၆ 1 +οδο 1 +增加 1 +கொண்ட 1 +▁мед 1 +▁Sko 1 +▁sir 1 +▁hatte 1 +aine 1 +▁negativ 1 +▁Бул 1 +смо 1 +法律 1 +អា 1 +▁nota 1 +▁sier 1 +▁както 1 +▁карт 1 +축 1 +▁glu 1 +▁वह 1 +temp 1 +ଳି 1 +均 1 +ісі 1 +ddy 1 +▁काठमाडौं 1 +▁centra 1 +прем 1 +참 1 +▁байсан 1 +▁finden 1 +దీ 1 +▁vista 1 +హి 1 +▁Pil 1 +υμ 1 +دع 1 +ល់ 1 +▁prove 1 +▁én 1 +▁sektor 1 +▁всех 1 +▁अधिक 1 +LG 1 +▁nord 1 +800 1 +χρον 1 +▁विकास 1 +ολογ 1 +être 1 +στή 1 +▁داشته 1 +dium 1 +vala 1 +گار 1 +▁börja 1 +عرف 1 +▁هستند 1 +езд 1 +iền 1 +▁Bara 1 +istan 1 +答 1 +▁ଘ 1 +ാത്ത 1 +▁أم 1 +யாக 1 +θηκε 1 +wert 1 +نګ 1 +6% 1 +倒 1 +risti 1 +▁жив 1 +共同 1 +▁moje 1 +作用 1 +hrad 1 +vní 1 +▁Ved 1 +ације 1 +▁Mc 1 +週 1 +▁категор 1 +инин 1 +რჩ 1 +ळी 1 +▁Від 1 +רח 1 +▁მისი 1 +▁पे 1 +ILI 1 +Ge 1 +▁tikai 1 +tinu 1 +кана 1 +▁וואס 1 +▁सबै 1 +分享 1 +▁54 1 +haha 1 +之后 1 +تال 1 +▁بزرگ 1 +жив 1 +pala 1 +džio 1 +▁अन्य 1 +ledning 1 +▁обра 1 +▁медици 1 +rsi 1 +ysty 1 +▁Berlin 1 +्म 1 +▁Opera 1 +▁teljes 1 +டா 1 +▁leva 1 +▁посе 1 +▁candidat 1 +ड़े 1 +▁inicia 1 +▁ønsker 1 +准 1 +rət 1 +cev 1 +usto 1 +գր 1 +қан 1 +तात 1 +06. 1 +עד 1 +čna 1 +▁encore 1 +买 1 +션 1 +fred 1 +ટે 1 +▁πιο 1 +াম 1 +▁tarix 1 +पन 1 +лектр 1 +זו 1 +只要 1 +▁Sri 1 +स्ता 1 +▁okaz 1 +▁led 1 +ਦਰ 1 +▁Jika 1 +规 1 +▁sklad 1 +▁Что 1 +ობს 1 +▁1997 1 +▁Madrid 1 +関 1 +nių 1 +IKA 1 +สุ 1 +াহ 1 +OV 1 +پی 1 +▁Mp 1 +▁TR 1 +▁basi 1 +ില 1 +ির 1 +▁respond 1 +lock 1 +nz 1 +tikan 1 +ুন 1 +聞 1 +мене 1 +grund 1 +ذكر 1 +house 1 +记者 1 +▁செய்ய 1 +▁onun 1 +▁रही 1 +午 1 +ուլ 1 +▁într 1 +រដ្ឋ 1 +୪ 1 +▁Hall 1 +▁Ја 1 +▁arma 1 +▁Μα 1 +▁आम 1 +ขา 1 +▁Fall 1 +▁dus 1 +▁instrument 1 +ussa 1 +▁бара 1 +▁նոր 1 +насці 1 +▁sisä 1 +雨 1 +nų 1 +」, 1 +энд 1 +ຫລ 1 +▁свою 1 +▁када 1 +▁වැඩ 1 +ところ 1 +美國 1 +iano 1 +ակի 1 +იტ 1 +▁geri 1 +▁fler 1 +▁dugu 1 +rū 1 +坐 1 +צור 1 +▁extrem 1 +▁Gj 1 +jala 1 +læ 1 +เอา 1 +減 1 +keskus 1 +ರೋ 1 +▁želi 1 +ალური 1 +▁neue 1 +үм 1 +дні 1 +▁bord 1 +▁ஜ 1 +ẹ 1 +füg 1 +നേ 1 +▁болуп 1 +ベ 1 +اقت 1 +▁थिए 1 +ाला 1 +▁primera 1 +▁Rama 1 +▁اح 1 +▁καθ 1 +▁сол 1 +▁watu 1 +ఆర్ 1 +ແມ່ນ 1 +वास 1 +نڈ 1 +湖 1 +ukset 1 +▁이용 1 +ன்ன 1 +шке 1 +▁yaş 1 +пуска 1 +ിലും 1 +▁определен 1 +▁Kategori 1 +▁обе 1 +4% 1 +飲 1 +▁Ελλάδα 1 +bû 1 +ティ 1 +adores 1 +FF 1 +▁Grund 1 +jük 1 +许 1 +▁अभि 1 +▁hvad 1 +itati 1 +▁Maka 1 +▁হয় 1 +▁ๆ 1 +争 1 +రూ 1 +▁Kultur 1 +▁brand 1 +▁área 1 +▁machen 1 +rich 1 +ான 1 +▁jego 1 +▁เ 1 +应该 1 +تد 1 +खे 1 +dian 1 +▁Cas 1 +hak 1 +▁साल 1 +ایش 1 +Օ 1 +rico 1 +stil 1 +реди 1 +ാതെ 1 +قط 1 +ಾದ 1 +SR 1 +▁страх 1 +▁rac 1 +▁مصر 1 +▁पार्टी 1 +RL 1 +សារ 1 +▁mukaan 1 +offici 1 +யே 1 +бере 1 +bek 1 +ుల 1 +▁Registr 1 +поряд 1 +▁چي 1 +ינג 1 +▁îm 1 +▁redu 1 +中央 1 +ლების 1 +▁Mod 1 +უფ 1 +ίζει 1 +haus 1 +του 1 +▁things 1 +▁Cat 1 +▁ಒಂದು 1 +▁cél 1 +▁현 1 +uke 1 +▁hidup 1 +chang 1 +හු 1 +más 1 +▁anterior 1 +▁consider 1 +▁3) 1 +▁gjennom 1 +▁56 1 +jawab 1 +ओ 1 +მს 1 +승 1 +ວັນ 1 +specta 1 +мір 1 +▁garant 1 +хід 1 +部门 1 +▁पै 1 +▁работы 1 +Ê 1 +zionale 1 +▁Jahren 1 +▁сре 1 +▁nastav 1 +රණ 1 +kere 1 +是否 1 +ық 1 +میر 1 +ჩე 1 +▁titul 1 +▁prema 1 +دۇ 1 +比較 1 +▁vah 1 +الية 1 +ရှ 1 +▁LED 1 +▁Thu 1 +▁հա 1 +تقد 1 +LD 1 +▁mlad 1 +δή 1 +شم 1 +цията 1 +▁ಪಾ 1 +▁кога 1 +▁Nacional 1 +స్తు 1 +▁പൊ 1 +▁ανά 1 +▁Oli 1 +▁සඳහා 1 +ஞ்ச 1 +▁kabi 1 +▁결 1 +wend 1 +տեղ 1 +▁hög 1 +▁차 1 +▁oprav 1 +ৌ 1 +có 1 +▁hot 1 +lp 1 +ಜ್ 1 +اية 1 +▁gay 1 +▁يوم 1 +▁professional 1 +цию 1 +arki 1 +ంగ 1 +▁fatto 1 +स्था 1 +▁Franc 1 +▁primeira 1 +▁alap 1 +▁тип 1 +าน 1 +▁Чи 1 +אן 1 +▁Пр 1 +นาย 1 +不断 1 +ቸ 1 +solu 1 +ários 1 +市場 1 +კლ 1 +▁nostre 1 +▁kapa 1 +kg 1 +ಕೊಳ್ಳ 1 +▁צי 1 +pełni 1 +▁London 1 +实现 1 +ುವುದ 1 +ριο 1 +先生 1 +▁vaš 1 +▁sot 1 +▁50% 1 +▁argument 1 +මේ 1 +▁gegen 1 +▁доста 1 +▁बो 1 +▁bhi 1 +ึก 1 +▁रूप 1 +紅 1 +▁çalışma 1 +▁vitae 1 +พล 1 +័ 1 +▁ಆಗ 1 +নী 1 +mär 1 +ಿಯ 1 +始 1 +▁Tour 1 +ຊາ 1 +▁havde 1 +ffa 1 +▁الث 1 +靠 1 +ANI 1 +▁acaba 1 +баев 1 +rina 1 +نز 1 +ষ্ট 1 +යක 1 +▁спро 1 +▁pagal 1 +ਂ 1 +აკ 1 +рил 1 +▁fő 1 +▁spra 1 +ērt 1 +dım 1 +▁hizmet 1 +▁Abdul 1 +ದ್ದ 1 +▁mira 1 +ទី 1 +ምር 1 +ଯୋଗ 1 +▁Creative 1 +bona 1 +为了 1 +▁zuen 1 +jnë 1 +dığını 1 +ຜ 1 +[2] 1 +bilita 1 +▁എന്ത 1 +кога 1 +▁został 1 +▁bài 1 +▁song 1 +▁رهي 1 +ພະ 1 +два 1 +▁EL 1 +нки 1 +esha 1 +တို့ 1 +طف 1 +iausi 1 +jø 1 +▁ਇ 1 +alne 1 +▁свої 1 +ală 1 +▁компани 1 +▁văn 1 +▁rätt 1 +▁ezt 1 +ורים 1 +▁uči 1 +▁terus 1 +▁animal 1 +서비스 1 +▁Day 1 +ედ 1 +▁могут 1 +結果 1 +TY 1 +▁disposi 1 +seks 1 +发生 1 +▁регион 1 +iny 1 +余 1 +▁hori 1 +ගන්න 1 +▁মে 1 +▁bulan 1 +્સ 1 +ボ 1 +之前 1 +ọc 1 +ั่ง 1 +ahay 1 +comp 1 +ङ् 1 +。( 1 +ഐ 1 +ค่ะ 1 +ിന് 1 +▁நட 1 +ρος 1 +nnan 1 +▁prob 1 +▁위해 1 +erie 1 +▁madh 1 +తం 1 +系列 1 +кім 1 +▁cad 1 +ovala 1 +備 1 +▁사람 1 +▁исти 1 +ьных 1 +quo 1 +▁Gw 1 +▁conclu 1 +valu 1 +cov 1 +PC 1 +▁המו 1 +▁Neu 1 +رې 1 +ttävä 1 +かった 1 +▁qeyd 1 +سام 1 +▁vô 1 +لس 1 +▁kohta 1 +rupa 1 +stellung 1 +ଷ୍ 1 +مپ 1 +technik 1 +▁corpo 1 +▁реал 1 +ುವುದು 1 +itz 1 +▁China 1 +ගා 1 +ፕ 1 +▁вода 1 +झा 1 +産 1 +ліся 1 +ણા 1 +lerinin 1 +熟 1 +حق 1 +droš 1 +▁کور 1 +nymi 1 +交通 1 +board 1 +▁Educa 1 +שא 1 +сць 1 +▁кыл 1 +ských 1 +▁६ 1 +▁eius 1 +ಿಂಗ್ 1 +▁competi 1 +ებში 1 +СП 1 +▁Gan 1 +▁His 1 +島 1 +▁հարց 1 +imai 1 +▁Shar 1 +bere 1 +нім 1 +ข้อมูล 1 +▁оно 1 +тира 1 +挑 1 +▁school 1 +▁လူ 1 +▁ollut 1 +ेन 1 +예 1 +▁සිය 1 +▁заяв 1 +რება 1 +हर 1 +load 1 +▁अध्यक्ष 1 +добри 1 +سن 1 +▁servizi 1 +▁جز 1 +стат 1 +▁Xo 1 +စု 1 +続 1 +teikt 1 +ੰਗ 1 +▁melihat 1 +▁moz 1 +कु 1 +πέ 1 +▁مطابق 1 +▁ảnh 1 +▁exerci 1 +网站 1 +חלק 1 +sika 1 +bha 1 +▁glad 1 +აღ 1 +▁출 1 +▁2020 1 +ਡਾ 1 +▁měl 1 +▁κι 1 +र्त 1 +▁خوا 1 +ील 1 +▁göster 1 +rës 1 +▁ವ 1 +▁След 1 +▁saam 1 +▁wees 1 +iyet 1 +▁Pentru 1 +▁foar 1 +▁róż 1 +▁mercado 1 +ライ 1 +بيع 1 +ganda 1 +NT 1 +back 1 +▁кет 1 +နဲ့ 1 +▁Пер 1 +дарды 1 +ække 1 +▁chan 1 +▁centre 1 +▁Ак 1 +kuva 1 +قدر 1 +▁हुए 1 +▁eines 1 +▁აქ 1 +▁kru 1 +▁yên 1 +utan 1 +אמר 1 +cznej 1 +gust 1 +valo 1 +skr 1 +▁eile 1 +▁ទៅ 1 +ମେ 1 +▁निर्माण 1 +тарды 1 +ڪن 1 +▁infra 1 +▁آل 1 +αλλ 1 +ించిన 1 +▁Dha 1 +▁job 1 +pró 1 +▁жет 1 +တြင္ 1 +ហា 1 +▁калі 1 +▁ചിത്ര 1 +▁tố 1 +▁తన 1 +வில் 1 +▁संघ 1 +ሮች 1 +▁جانب 1 +yttä 1 +ална 1 +▁rozhod 1 +OG 1 +舞 1 +었다 1 +ያስ 1 +背 1 +茶 1 +län 1 +▁olması 1 +层 1 +පි 1 +▁tog 1 +▁ເປັນ 1 +皆 1 +প্ 1 +▁жаш 1 +нин 1 +▁ਸਿ 1 +សម្ 1 +▁pessoas 1 +cana 1 +げ 1 +ുണ്ട് 1 +▁milit 1 +교육 1 +შა 1 +▁harga 1 +▁úgy 1 +▁ajo 1 +വരെ 1 +▁үе 1 +ຫນ້າ 1 +▁damit 1 +▁ಭ 1 +лін 1 +доо 1 +▁nulla 1 +ାୟ 1 +▁wada 1 +ၿပီး 1 +ಣಿ 1 +ложи 1 +czu 1 +▁זיי 1 +ְ 1 +▁lần 1 +▁zile 1 +▁Ort 1 +▁ST 1 +▁doktor 1 +▁było 1 +maktadır 1 +▁пор 1 +▁pouco 1 +იო 1 +blad 1 +▁spē 1 +樣 1 +more 1 +ием 1 +เสีย 1 +ОД 1 +▁spl 1 +▁οποίο 1 +irea 1 +чем 1 +▁रहेको 1 +등 1 +ოლ 1 +ტის 1 +▁thương 1 +ሴ 1 +▁енерг 1 +▁odnos 1 +cía 1 +▁server 1 +▁reis 1 +ију 1 +ţa 1 +door 1 +▁ഉണ്ട 1 +▁Hotels 1 +▁masyarakat 1 +▁Hil 1 +lighet 1 +યુ 1 +trac 1 +uren 1 +稱 1 +úr 1 +ustus 1 +▁báo 1 +▁mogelijk 1 +▁große 1 +cej 1 +▁två 1 +▁لپاره 1 +ຮັບ 1 +▁भारतीय 1 +бел 1 +ਰੋ 1 +▁travail 1 +ního 1 +stoj 1 +▁AN 1 +스트 1 +▁работи 1 +▁masalah 1 +▁හි 1 +▁torna 1 +▁tijd 1 +▁gjitha 1 +▁правил 1 +▁बढ 1 +▁алып 1 +▁जब 1 +略 1 +▁Xe 1 +▁алу 1 +שות 1 +▁Administra 1 +▁жан 1 +raba 1 +спект 1 +опа 1 +▁galego 1 +şte 1 +biga 1 +รุ่น 1 +▁ahaa 1 +▁Berg 1 +NN 1 +työ 1 +હિ 1 +▁Ά 1 +似 1 +¡ 1 +▁ժամանակ 1 +▁heim 1 +ότητα 1 +ਣਾ 1 +hehe 1 +▁výrob 1 +ætt 1 +▁тухай 1 +▁клуб 1 +estä 1 +▁international 1 +рв 1 +אָר 1 +▁Full 1 +▁inde 1 +▁85 1 +▁terve 1 +skie 1 +▁ausge 1 +istic 1 +ڇ 1 +▁본 1 +▁oso 1 +හා 1 +▁отыр 1 +▁ثم 1 +▁trở 1 +▁influ 1 +ຕໍ່ 1 +▁grandes 1 +れた 1 +▁đẹp 1 +ową 1 +▁Mol 1 +ילד 1 +קד 1 +راض 1 +▁Miss 1 +ற்று 1 +▁mann 1 +мб 1 +▁plast 1 +ということ 1 +▁fokus 1 +όρ 1 +▁bao 1 +。」 1 +▁것이 1 +հար 1 +良い 1 +न्स 1 +▁cookie 1 +▁পর 1 +mper 1 +▁ଏକ 1 +တယ္ 1 +mó 1 +너 1 +جامع 1 +既 1 +▁Է 1 +▁Seri 1 +elek 1 +▁suure 1 +WE 1 +▁ტ 1 +▁생각 1 +bada 1 +▁دیکھ 1 +ಮಾನ 1 +▁pacient 1 +▁μα 1 +หลาย 1 +ствие 1 +▁dana 1 +зв 1 +ೃ 1 +قام 1 +ترك 1 +usti 1 +პირ 1 +▁Gü 1 +▁swoje 1 +fod 1 +гаа 1 +▁μόνο 1 +mektedir 1 +▁aad 1 +▁alimenta 1 +▁Pop 1 +提升 1 +עולם 1 +▁baada 1 +▁разви 1 +istes 1 +▁ارز 1 +▁terror 1 +ским 1 +нете 1 +EI 1 +▁few 1 +あり 1 +róp 1 +▁koncert 1 +ễ 1 +oir 1 +▁pasti 1 +ሰብ 1 +дун 1 +▁резултат 1 +▁Villa 1 +्यु 1 +▁Рад 1 +صو 1 +▁đều 1 +وک 1 +႐ 1 +▁mwaka 1 +用户 1 +▁erat 1 +▁Rais 1 +▁توجه 1 +մի 1 +சு 1 +▁ihn 1 +▁shar 1 +▁pär 1 +innova 1 +▁잘 1 +融 1 +▁gente 1 +spel 1 +2000 1 +▁ଶ 1 +ழ் 1 +▁són 1 +▁ئال 1 +▁95 1 +пут 1 +ದೇ 1 +▁bawah 1 +vana 1 +▁поз 1 +▁ней 1 +▁Forum 1 +▁impe 1 +律 1 +лээ 1 +监 1 +صبح 1 +愿 1 +勢 1 +▁කැ 1 +▁jetë 1 +製 1 +科学 1 +స్ట్ 1 +▁Model 1 +ണ്ണ 1 +wali 1 +labora 1 +ást 1 +▁algum 1 +▁ვა 1 +tuksen 1 +▁πρω 1 +жения 1 +▁шо 1 +▁तीन 1 +انگ 1 +▁іх 1 +배 1 +itve 1 +▁eins 1 +ାର 1 +▁tava 1 +▁Catalunya 1 +etako 1 +ated 1 +bezpeč 1 +EB 1 +ष्ठ 1 +ിനെ 1 +-17 1 +▁bonus 1 +име 1 +▁изда 1 +ાઇ 1 +သြား 1 +▁является 1 +▁تهران 1 +▁nell 1 +عی 1 +៍ 1 +▁sätt 1 +ەل 1 +kú 1 +▁mú 1 +▁apoi 1 +▁РФ 1 +いく 1 +ppel 1 +ハ 1 +▁tập 1 +დეს 1 +ixa 1 +IF 1 +ūd 1 +▁Spiel 1 +▁մեր 1 +ස්ස 1 +ชิ 1 +кси 1 +容易 1 +ём 1 +▁ባለ 1 +▁dobi 1 +创新 1 +ชม 1 +جار 1 +▁hev 1 +xes 1 +Đ 1 +▁permit 1 +▁seguir 1 +▁talent 1 +ିକ 1 +న్నా 1 +▁גר 1 +▁හරි 1 +ڈی 1 +▁staat 1 +▁konse 1 +ٍ 1 +սի 1 +▁hóa 1 +▁izmanto 1 +വർ 1 +▁ego 1 +▁Mul 1 +▁Danmark 1 +ರುವ 1 +▁Frank 1 +σουν 1 +▁celo 1 +草 1 +兒 1 +▁ക്ക 1 +yada 1 +της 1 +ស៊ី 1 +ujemy 1 +▁Parlament 1 +قه 1 +▁nagyon 1 +▁Nội 1 +უბ 1 +க்கா 1 +▁kena 1 +▁(15 1 +MT 1 +زان 1 +count 1 +قبل 1 +ाल 1 +راس 1 +健 1 +커 1 +ATA 1 +▁triển 1 +▁gada 1 +▁bú 1 +ได้รับ 1 +σκο 1 +üş 1 +еро 1 +▁valmis 1 +ична 1 +▁mele 1 +sjoner 1 +▁ζ 1 +遠 1 +▁dobre 1 +▁አል 1 +цтва 1 +เพ 1 +LC 1 +▁Мен 1 +未来 1 +числе 1 +ჯა 1 +BN 1 +▁mindre 1 +▁الغ 1 +▁отдел 1 +▁көз 1 +lingen 1 +領 1 +▁rê 1 +▁söyle 1 +দ্ধ 1 +uuden 1 +▁Sala 1 +हो 1 +ekin 1 +εμ 1 +efni 1 +wers 1 +tīv 1 +▁daudz 1 +альна 1 +ึ 1 +পা 1 +এ 1 +▁tiếng 1 +үгү 1 +נג 1 +▁კონ 1 +▁bou 1 +▁ලැබ 1 +国内 1 +▁când 1 +▁Audi 1 +▁били 1 +সহ 1 +▁mắt 1 +▁উপ 1 +அ 1 +▁rom 1 +▁kupi 1 +▁ildə 1 +▁Soci 1 +▁kamera 1 +▁mã 1 +▁можа 1 +ندڙ 1 +▁orden 1 +тэр 1 +▁status 1 +atzen 1 +יקה 1 +▁pac 1 +ระบบ 1 +▁dine 1 +▁cuenta 1 +ສໍາລັບ 1 +▁ಚಿತ್ರ 1 +▁poslov 1 +▁saab 1 +▁ግ 1 +▁ֆ 1 +攻 1 +▁fran 1 +▁neces 1 +rium 1 +▁applica 1 +zeti 1 +ধা 1 +μένη 1 +liśmy 1 +▁ਹੀ 1 +▁teori 1 +▁manten 1 +ניה 1 +▁ring 1 +aithe 1 +lent 1 +حدث 1 +trauk 1 +▁entend 1 +▁المع 1 +▁every 1 +δει 1 +ଶି 1 +cce 1 +▁dina 1 +▁elle 1 +▁получа 1 +รอง 1 +▁güzel 1 +беларус 1 +imh 1 +garri 1 +vul 1 +▁سازمان 1 +▁● 1 +čer 1 +▁ପରି 1 +怕 1 +үүлэх 1 +üb 1 +օ 1 +ऐ 1 +▁обо 1 +ктар 1 +▁тях 1 +ேன் 1 +dzenia 1 +▁follow 1 +▁wenig 1 +▁nytt 1 +bry 1 +搭 1 +BR 1 +▁diferentes 1 +Mu 1 +мери 1 +▁транспорт 1 +регул 1 +Th 1 +▁مواد 1 +aquest 1 +भन्दा 1 +블 1 +▁xalq 1 +울 1 +যোগ 1 +▁confe 1 +ао 1 +▁интер 1 +lius 1 +▁tinggi 1 +kü 1 +机构 1 +հատ 1 +▁dvo 1 +කින් 1 +奖 1 +struct 1 +gų 1 +▁expres 1 +ՈՒ 1 +▁aspect 1 +gry 1 +хват 1 +យក 1 +藏 1 +▁nuestra 1 +험 1 +▁අපේ 1 +zos 1 +ساب 1 +▁Kurd 1 +ಣ್ಣ 1 +▁kuva 1 +▁makan 1 +κιν 1 +▁Federa 1 +▁Elle 1 +ливо 1 +▁bahawa 1 +шай 1 +▁agent 1 +个人 1 +dring 1 +pred 1 +แม่ 1 +▁била 1 +িয়ে 1 +шту 1 +ján 1 +▁ဘ 1 +pozn 1 +luş 1 +дөр 1 +ĩ 1 +▁מכ 1 +чү 1 +ภา 1 +ימ 1 +▁meri 1 +ปรสิต 1 +ေျပာ 1 +ющие 1 +▁басқа 1 +sjonen 1 +yî 1 +нови 1 +інші 1 +ЫН 1 +ٹھ 1 +ज्ञान 1 +▁беру 1 +▁ڏي 1 +ୀୟ 1 +▁(13 1 +▁دانشگاه 1 +▁говорит 1 +▁Univers 1 +▁पूर्व 1 +über 1 +▁مجلس 1 +BB 1 +▁mód 1 +▁аж 1 +寶 1 +▁حاصل 1 +تۈر 1 +deling 1 +صب 1 +ljeni 1 +▁henne 1 +▁کردن 1 +▁тек 1 +▁συμ 1 +改革 1 +领 1 +▁cuộc 1 +حافظ 1 +▁recht 1 +▁72 1 +διο 1 +รักษา 1 +▁automobil 1 +的大 1 +▁giả 1 +▁proceso 1 +راب 1 +-9 1 +▁ih 1 +loka 1 +един 1 +▁oficial 1 +▁puis 1 +▁priprav 1 +▁další 1 +ៅ 1 +▁многу 1 +នៃ 1 +▁1,5 1 +▁ancora 1 +לח 1 +▁عالم 1 +рка 1 +້ອງ 1 +网络 1 +ប៉ 1 +▁eso 1 +▁قیمت 1 +▁primo 1 +ለት 1 +▁amor 1 +szcze 1 +ਸੇ 1 +▁posible 1 +▁verir 1 +έκ 1 +▁जना 1 +▁μετά 1 +▁дво 1 +mówi 1 +kär 1 +szerű 1 +▁música 1 +▁kura 1 +▁protest 1 +▁Kel 1 +▁გე 1 +ология 1 +ഘ 1 +▁здоров 1 +▁huis 1 +▁belum 1 +▁hii 1 +word 1 +▁` 1 +jās 1 +▁Ministr 1 +ଯ 1 +ىنىڭ 1 +ରଣ 1 +▁गरि 1 +ွန် 1 +▁jalan 1 +▁올 1 +qiq 1 +κοινων 1 +▁мэд 1 +่อน 1 +شعر 1 +▁Mala 1 +lette 1 +▁jis 1 +ाएको 1 +▁அவர் 1 +spiel 1 +▁হবে 1 +चित 1 +▁lực 1 +glav 1 +▁හැකි 1 +▁කිය 1 +▁regel 1 +已經 1 +接受 1 +डि 1 +▁által 1 +▁Dag 1 +▁मत 1 +▁პირ 1 +▁gjen 1 +युक्त 1 +▁bele 1 +▁dio 1 +equip 1 +ския 1 +дже 1 +wyn 1 +ど 1 +kende 1 +тің 1 +ème 1 +▁đô 1 +கம் 1 +× 1 +ելով 1 +حال 1 +ယာ 1 +‪ 1 +▁ปี 1 +▁この 1 +разум 1 +-16 1 +▁فیلم 1 +ိုင္ 1 +дь 1 +▁ствар 1 +▁Nous 1 +▁Sco 1 +Porn 1 +ЕС 1 +ଛ 1 +ています 1 +ター 1 +▁uli 1 +ચા 1 +▁видео 1 +▁бел 1 +EZ 1 +▁consulta 1 +arekin 1 +өк 1 +▁ថា 1 +느 1 +тим 1 +ਡੀ 1 +ಎಸ್ 1 +лена 1 +ಟೆ 1 +▁काही 1 +▁obo 1 +▁vsak 1 +abilir 1 +lərinə 1 +▁كانت 1 +สูง 1 +ጸ 1 +▁giữ 1 +▁prova 1 +pris 1 +第三 1 +koli 1 +▁pertama 1 +▁alltid 1 +▁онлайн 1 +сөн 1 +меж 1 +viden 1 +لوم 1 +▁тога 1 +ుకు 1 +shq 1 +ზა 1 +▁দু 1 +そ 1 +نهن 1 +yek 1 +နိုင် 1 +עט 1 +ഫ 1 +▁hund 1 +▁అను 1 +ıq 1 +的小 1 +ସ୍ତ 1 +eč 1 +ுடன் 1 +ائم 1 +ຸດ 1 +kumu 1 +란 1 +립 1 +କି 1 +地区 1 +▁uitge 1 +▁fått 1 +έα 1 +ത്തിൽ 1 +ىم 1 +▁regula 1 +▁Thank 1 +▁निर् 1 +紧 1 +جان 1 +лардың 1 +▁procent 1 +дение 1 +▁Norsk 1 +ذه 1 +▁unde 1 +▁عبدال 1 +apkan 1 +▁sper 1 +▁этот 1 +wol 1 +свет 1 +▁echt 1 +▁Προ 1 +▁Bio 1 +▁lange 1 +мысл 1 +▁гал 1 +▁miglior 1 +▁πως 1 +▁тези 1 +ధా 1 +構 1 +គ្រ 1 +Atom 1 +альні 1 +ników 1 +lagt 1 +▁wyda 1 +ējo 1 +베 1 +भे 1 +ന്ദ 1 +חים 1 +ตอน 1 +▁fili 1 +隊 1 +許 1 +▁nay 1 +ประเทศ 1 +▁foc 1 +ব্য 1 +▁Jesus 1 +yev 1 +본 1 +ables 1 +ர்கள் 1 +▁energia 1 +duo 1 +▁Publi 1 +ице 1 +ธิ 1 +▁servicio 1 +logo 1 +▁ປ 1 +▁ملي 1 +箱 1 +fanya 1 +suz 1 +IB 1 +▁진 1 +都有 1 +лова 1 +chádza 1 +чын 1 +אט 1 +▁Цр 1 +اسي 1 +▁maailma 1 +siniz 1 +טה 1 +▁शक 1 +▁وکړ 1 +ării 1 +建立 1 +οκ 1 +ાવ 1 +ಾಗಿದೆ 1 +▁арга 1 +▁sabe 1 +▁reik 1 +szám 1 +gula 1 +▁الأول 1 +ējā 1 +धार 1 +vî 1 +йд 1 +▁viena 1 +എം 1 +▁presidente 1 +▁כדי 1 +▁حضرت 1 +ดัง 1 +дово 1 +▁මෙම 1 +章 1 +▁khá 1 +▁Vas 1 +щу 1 +ಪಾ 1 +▁escrit 1 +ातील 1 +▁לר 1 +▁bort 1 +▁hát 1 +houd 1 +▁ему 1 +▁valo 1 +▁Може 1 +▁eksp 1 +▁Republik 1 +อิ 1 +tín 1 +▁кос 1 +跑 1 +▁carte 1 +▁دغه 1 +пул 1 +cida 1 +म्ब 1 +ាន់ 1 +▁ബാ 1 +φο 1 +ガ 1 +▁නැ 1 +žno 1 +▁sahip 1 +▁Wiki 1 +▁என் 1 +deki 1 +▁avea 1 +AMA 1 +.3. 1 +ರೇ 1 +íme 1 +伊 1 +▁line 1 +爾 1 +ණි 1 +▁Bez 1 +▁രണ്ട 1 +eerde 1 +спа 1 +▁друга 1 +▁Ρ 1 +9% 1 +քը 1 +ଜି 1 +quí 1 +pię 1 +úil 1 +▁какво 1 +▁kvar 1 +▁Най 1 +▁januar 1 +▁pó 1 +来说 1 +кул 1 +៤ 1 +▁Այս 1 +▁dub 1 +umā 1 +ப்பட்ட 1 +候 1 +ں 1 +▁devam 1 +ают 1 +▁مقابل 1 +▁trabajo 1 +牌 1 +सो 1 +ੋਂ 1 +щата 1 +▁dago 1 +लु 1 +▁proprio 1 +તર 1 +ფრ 1 +▁1995 1 +▁विश्व 1 +ені 1 +مع 1 +▁bilgi 1 +▁אחד 1 +▁نواز 1 +▁ಜನ 1 +▁жал 1 +▁faut 1 +▁kontroll 1 +▁forhold 1 +ilməsi 1 +肌 1 +▁স্ব 1 +▁цаг 1 +▁nieuwe 1 +▁proprie 1 +ोर 1 +▁Nr 1 +吸 1 +fico 1 +▁Ži 1 +iere 1 +復 1 +dari 1 +▁ਪਰ 1 +▁oto 1 +▁кому 1 +影響 1 +▁ಎಲ್ಲ 1 +▁1996 1 +вес 1 +шчы 1 +▁통 1 +торы 1 +MENT 1 +चं 1 +▁близ 1 +▁انداز 1 +▁თა 1 +虽然 1 +▁Xu 1 +ίζ 1 +سازی 1 +▁서 1 +▁tento 1 +ვლე 1 +▁দি 1 +것 1 +▁Servi 1 +▁maja 1 +ară 1 +fär 1 +▁gaat 1 +ံု 1 +▁Come 1 +▁Over 1 +રણ 1 +▁olika 1 +▁dịch 1 +▁lume 1 +▁labai 1 +ujem 1 +▁fino 1 +ഹാ 1 +ответ 1 +▁Trung 1 +▁تھی 1 +▁ଚା 1 +抗 1 +▁نما 1 +▁বাংলাদেশ 1 +തോ 1 +vand 1 +▁když 1 +森 1 +▁страни 1 +▁gång 1 +▁neki 1 +ாய் 1 +ట్టు 1 +▁ئۆ 1 +聚 1 +▁форма 1 +полни 1 +थि 1 +▁dni 1 +మీ 1 +洋 1 +ům 1 +sund 1 +▁писа 1 +▁sure 1 +随 1 +ขนาด 1 +▁something 1 +▁아이 1 +ndang 1 +orient 1 +▁Februar 1 +asse 1 +▁boli 1 +خص 1 +觉得 1 +यु 1 +ებას 1 +wał 1 +ঙ্গ 1 +▁kanyang 1 +გვ 1 +plin 1 +▁بازار 1 +แท 1 +ስተ 1 +ruar 1 +▁aquí 1 +▁etmək 1 +▁принцип 1 +stein 1 +▁System 1 +▁mida 1 +სო 1 +▁қор 1 +ацыя 1 +נוס 1 +解决 1 +nię 1 +▁anys 1 +▁tega 1 +guru 1 +貨 1 +▁иш 1 +ിരുന്നു 1 +inger 1 +เพิ่ม 1 +▁Public 1 +▁görüş 1 +tzaile 1 +තී 1 +krát 1 +術 1 +▁nez 1 +ເພື່ອ 1 +tjes 1 +دين 1 +ുമായി 1 +පත් 1 +▁ସୁ 1 +figur 1 +iseen 1 +▁möchte 1 +▁metų 1 +ໍາ 1 +▁bana 1 +有些 1 +cado 1 +▁mh 1 +확 1 +▁Хар 1 +eringen 1 +ရန် 1 +架 1 +upp 1 +ziv 1 +UE 1 +取り 1 +Je 1 +▁бути 1 +فات 1 +▁trọng 1 +ழி 1 +maak 1 +พิ 1 +၈ 1 +ដល់ 1 +ņa 1 +гө 1 +ట్లు 1 +lever 1 +▁unge 1 +กําลัง 1 +▁Dra 1 +▁администр 1 +审 1 +ִ 1 +▁systém 1 +同時 1 +эс 1 +▁មិន 1 +დებ 1 +2007 1 +নো 1 +▁بھ 1 +cente 1 +▁Hin 1 +▁getir 1 +▁ühe 1 +▁ayrı 1 +تار 1 +აზ 1 +qq 1 +松 1 +父 1 +▁റെ 1 +נש 1 +终 1 +lainen 1 +▁Instagram 1 +ยุ 1 +ادی 1 +ASA 1 +▁bedre 1 +▁egész 1 +▁ava 1 +ují 1 +دىكى 1 +ుతున్న 1 +▁побед 1 +곳 1 +▁Кри 1 +▁бро 1 +客户 1 +ਵਰ 1 +▁sowie 1 +ঃ 1 +▁single 1 +ОЛ 1 +kurs 1 +▁risk 1 +ග් 1 +cili 1 +▁national 1 +▁mely 1 +iant 1 +περ 1 +କାର 1 +▁දින 1 +▁mám 1 +根据 1 +žiūr 1 +మూ 1 +▁falta 1 +▁около 1 + 1 +▁présent 1 +▁krist 1 +▁akci 1 +وضع 1 +銷 1 +taria 1 +▁цього 1 +ēm 1 +들은 1 +גור 1 +▁Pem 1 +ovaný 1 +liai 1 +▁רק 1 +▁uur 1 +▁Tə 1 +▁käsi 1 +▁инвест 1 +▁Tech 1 +lyg 1 +▁jetzt 1 +▁chưa 1 +ಶಿ 1 +▁продукт 1 +iņš 1 +դի 1 +▁Form 1 +ञ्च 1 +tanto 1 +▁entra 1 +▁تې 1 +oth 1 +▁raken 1 +▁Patri 1 +коло 1 +dida 1 +▁заб 1 +▁ಸುದ್ದಿ 1 +▁હતી 1 +政治 1 +شنبه 1 +▁chama 1 +▁трен 1 +免 1 +▁зі 1 +▁persoa 1 +しまう 1 +▁bağ 1 +▁رہا 1 +▁düşün 1 +agra 1 +hà 1 +jske 1 +ðum 1 +стати 1 +īgu 1 +▁олон 1 +될 1 +▁ინ 1 +▁Best 1 +валі 1 +šet 1 +سك 1 +▁tiden 1 +▁bildir 1 +▁hoạt 1 +част 1 +ခြင်း 1 +▁stað 1 +ქმ 1 +▁ہوا 1 +лош 1 +▁других 1 +prost 1 +▁prvi 1 +▁କରିବା 1 +āla 1 +▁monitor 1 +wani 1 +யின் 1 +ajat 1 +▁probleme 1 +족 1 +▁bất 1 +▁इन 1 +不过 1 +▁formul 1 +фр 1 +ต่าง 1 +ंस 1 +zania 1 +▁That 1 +▁şekilde 1 +się 1 +▁ար 1 +katan 1 +кал 1 +▁ás 1 +java 1 +БА 1 +لغ 1 +urilor 1 +جہ 1 +园 1 +جھ 1 +▁गरेका 1 +pina 1 +▁chọn 1 +ชื่อ 1 +▁السي 1 +▁Klik 1 +▁jeszcze 1 +reiz 1 +ciąg 1 +ధి 1 +▁문 1 +MEN 1 +▁բան 1 +▁lidt 1 +▁фонд 1 +▁Mam 1 +▁høj 1 +▁(8) 1 +ներում 1 +лак 1 +нформац 1 +▁manu 1 +▁живе 1 +ረት 1 +造成 1 +erende 1 +▁gyf 1 +േണ്ട 1 +▁meni 1 +▁регистр 1 +wag 1 +osan 1 +คิด 1 +▁בית 1 +malla 1 +รอ 1 +▁hou 1 +ισμού 1 +▁tiêu 1 +ਾਇ 1 +自由 1 +เกม 1 +hö 1 +▁kezd 1 +▁tìm 1 +▁Є 1 +▁cât 1 +шир 1 +▁asta 1 +organ 1 +▁wake 1 +資料 1 +ATI 1 +ampak 1 +飞 1 +▁terre 1 +▁Eco 1 +liwa 1 +tettu 1 +лити 1 +vezet 1 +ळा 1 +কি 1 +▁पण 1 +▁selbst 1 +▁waxay 1 +▁esca 1 +▁ଏହା 1 +▁مطالب 1 +zka 1 +tering 1 +▁ireo 1 +κλ 1 +▁Београд 1 +▁hyvin 1 +▁ನಿಮ್ಮ 1 +ົງ 1 +δέ 1 +▁secret 1 +▁atsi 1 +▁πλ 1 +ගම 1 +▁lumi 1 +imų 1 +ză 1 +▁گئے 1 +▁የም 1 +▁маг 1 +ಶಾ 1 +▁neka 1 +كتب 1 +红 1 +根 1 +▁दर 1 +нди 1 +اره 1 +▁दिए 1 +spir 1 +ంతో 1 +ēji 1 +备 1 +▁používa 1 +▁month 1 +ទេ 1 +zî 1 +▁хүр 1 +▁арт 1 +▁ගිය 1 +ுவ 1 +▁hår 1 +▁programma 1 +▁پیدا 1 +▁помог 1 +ास 1 +тура 1 +रुप 1 +▁zor 1 +өнгө 1 +▁استعمال 1 +▁articol 1 +vate 1 +tana 1 +▁girl 1 +▁700 1 +▁неко 1 +▁Gran 1 +かな 1 +ລາ 1 +ਬਰ 1 +ovej 1 +▁छैन 1 +▁62 1 +▁سنگ 1 +▁؟ 1 +Ка 1 +▁hér 1 +jazd 1 +րամ 1 +페 1 +▁oseb 1 +▁жизни 1 +▁oameni 1 +ongan 1 +▁молод 1 +▁जाने 1 +kach 1 +៉ 1 +พัก 1 +牛 1 +άς 1 +რუ 1 +กรรม 1 +也有 1 +డే 1 +▁Že 1 +סע 1 +▁Пол 1 +तः 1 +ဳ 1 +öld 1 +▁igual 1 +чува 1 +juma 1 +地方 1 +▁viso 1 +сү 1 +▁conduc 1 +▁ታ 1 +▁चाह 1 +介 1 +▁государств 1 +▁повеќе 1 +Ă 1 +▁Mé 1 +รร 1 +▁būs 1 +▁euros 1 +/2018 1 +ників 1 +▁पहले 1 +стој 1 +▁شدن 1 +ապետ 1 +гай 1 +ନ୍ତି 1 +▁match 1 +▁yfir 1 +рту 1 +▁welche 1 +▁цар 1 +▁Кор 1 +မယ္ 1 +▁баш 1 +lərini 1 +лк 1 +▁жай 1 +ပါတယ္။ 1 +▁kø 1 +ੈਂ 1 +▁dela 1 +Par 1 +▁disponibil 1 +דל 1 +කම් 1 +ੱਲ 1 +кле 1 +νουν 1 +▁ekip 1 +ниците 1 +্রি 1 +▁두 1 +▁manusia 1 +▁kedua 1 +▁iespēja 1 +▁داده 1 +trzyma 1 +avimo 1 +▁adat 1 +truk 1 +云 1 +▁Нови 1 +lando 1 +▁сал 1 +▁යන 1 +▁😉 1 +ndal 1 +系統 1 +ぐ 1 +▁млн 1 +vite 1 +nieuw 1 +毒 1 +▁нив 1 +erings 1 +▁දැන 1 +▁norsk 1 +rô 1 +▁મળ 1 +ță 1 +▁hjälp 1 +bilidade 1 +▁จาก 1 +ИН 1 +▁izango 1 +노 1 +▁recu 1 +▁કરવા 1 +▁önemli 1 +▁tovább 1 +ప్పుడు 1 +əmə 1 +▁superior 1 +ვინ 1 +류 1 +нку 1 +зір 1 +ēšana 1 +▁Jam 1 +ფერ 1 +জান 1 +itaj 1 +ický 1 +આ 1 +▁Anh 1 +▁MP 1 +lær 1 +床 1 +▁little 1 +glas 1 +ਸ਼ਾ 1 +mö 1 +ضع 1 +फा 1 +▁हुन्छ 1 +▁oldal 1 +guard 1 +xer 1 +▁Сан 1 +▁cím 1 +לך 1 +▁доступ 1 +▁Espa 1 +ρου 1 +sluit 1 +ерге 1 +▁unei 1 +liya 1 +▁acord 1 +▁тус 1 +tű 1 +पु 1 +▁(6 1 +▁Sir 1 +★ 1 +▁생 1 +▁дня 1 +▁վար 1 +▁اهو 1 +atus 1 +昨 1 +▁tüm 1 +דער 1 +▁надо 1 +tub 1 +▁कोई 1 +▁ہوں 1 +ಕೊಂಡ 1 +▁← 1 +паз 1 +ville 1 +▁కార్ 1 +вели 1 +句 1 +ங்கி 1 +▁hozzá 1 +異 1 +ፉ 1 +ုပ် 1 +νή 1 +▁USB 1 +▁Arab 1 +▁nhau 1 +ANT 1 +▁conform 1 +▁տես 1 +ນັ້ນ 1 +fog 1 +zwy 1 +▁څخه 1 +▁estat 1 +▁energ 1 +▁terug 1 +▁Jawa 1 +לל 1 +▁1991 1 +▁счита 1 +viš 1 +▁soit 1 +LAR 1 +عار 1 +ເສ 1 +▁februar 1 +čius 1 +▁profit 1 +▁Kaj 1 +слаб 1 +▁1992 1 +▁zaidi 1 +▁vás 1 +šanās 1 +ෆ 1 +▁pí 1 +▁Það 1 +φων 1 +વાર 1 +▁brug 1 +бин 1 +▁lavoro 1 +bav 1 +▁guzti 1 +kost 1 +ಿರುವ 1 +ങ്ങളുടെ 1 +▁gdy 1 +ച്ചു 1 +▁स्ट 1 +▁열 1 +стаў 1 +▁കെ 1 +నె 1 +ično 1 +න්ට 1 +غير 1 +程度 1 +▁head 1 +isiin 1 +тас 1 +溫 1 +▁opis 1 +өд 1 +가지 1 +щения 1 +▁Cro 1 +▁дээр 1 +फ़ 1 +▁rett 1 +กิ 1 +RC 1 +是在 1 +▁води 1 +ჯერ 1 +ımız 1 +لمان 1 +▁Nel 1 +药 1 +ኪ 1 +▁wakati 1 +▁պատ 1 +交易 1 +▁ਦਿ 1 +▁එය 1 +udah 1 +▁Jó 1 +▁qilish 1 +▁takie 1 +▁بش 1 +gehen 1 +▁свобод 1 +▁kuulu 1 +▁Colo 1 +λευ 1 +▁Autor 1 +jeća 1 +▁dẫn 1 +▁dolgo 1 +▁Design 1 +भव 1 +のお 1 +▁እንዳ 1 +▁має 1 +▁ලබා 1 +еше 1 +стап 1 +torio 1 +წარმო 1 +vies 1 +ცხო 1 +weise 1 +keit 1 +сының 1 +▁Brit 1 +krij 1 +ଲ୍ 1 +อบ 1 +▁ඒක 1 +त्रा 1 +睡 1 +პი 1 +herë 1 +养 1 +▁jenter 1 +సే 1 +▁ఉండ 1 +▁bhe 1 +▁modifica 1 +៦ 1 +▁ਉਹ 1 +▁lúc 1 +選擇 1 +ንም 1 +▁бод 1 +ျဖ 1 +trakt 1 +OC 1 +▁vetëm 1 +সে 1 +ეთის 1 +▁boy 1 +▁ülke 1 +erede 1 +feira 1 +west 1 +▁хотел 1 +▁parece 1 +▁xem 1 +සී 1 +ДИ 1 +אור 1 +ლები 1 +▁yaitu 1 +▁memberi 1 +▁cine 1 +ਟਰ 1 +ھو 1 +▁nosa 1 +▁Tapi 1 +▁ସମ 1 +▁gul 1 +▁tomu 1 +▁огр 1 +ධි 1 +kait 1 +▁löy 1 +mpia 1 +▁instru 1 +一样 1 +கிறது 1 +ബന്ധ 1 +▁SH 1 +ાઈ 1 +▁vald 1 +▁כך 1 +▁Itali 1 +聲 1 +▁Asia 1 +▁депутат 1 +▁Für 1 +▁quello 1 +โลก 1 +▁цр 1 +YE 1 +▁deyil 1 +τηση 1 +▁evento 1 +παν 1 +ෙක් 1 +үнө 1 +▁මත 1 +ጻ 1 +▁langsung 1 +дения 1 +習 1 +▁свой 1 +▁пет 1 +▁tổ 1 +▁wali 1 +▁болып 1 +位置 1 +▁ئي 1 +▁põ 1 +äll 1 +▁ПО 1 +▁eo 1 +ექტ 1 +▁tegen 1 +▁hukum 1 +▁ഉപ 1 +iĝis 1 +ಿಕ 1 +▁rằng 1 +▁trabalho 1 +လုပ် 1 +ុក 1 +kelijk 1 +交流 1 +▁Nga 1 +▁պետք 1 +dą 1 +▁Cent 1 +lę 1 +遇 1 +жна 1 +衣 1 +માન 1 +landı 1 +▁weg 1 +▁διά 1 +ιλ 1 +▁gö 1 +▁ਇੱਕ 1 +是一个 1 +ائع 1 +schap 1 +▁rede 1 +ваме 1 +劇 1 +▁Bud 1 +gjë 1 +▁doğru 1 +▁Ön 1 +tės 1 +лым 1 +سلسل 1 +▁Pel 1 +ገባ 1 +vano 1 +တိ 1 +卫 1 +пуб 1 +忘 1 +րան 1 +ává 1 +чек 1 +射 1 +症 1 +tūra 1 +ела 1 +有限公司 1 +▁dve 1 +АК 1 +▁යුතු 1 +δω 1 +▁nagu 1 +endur 1 +kių 1 +طار 1 +最後 1 +ajte 1 +ighet 1 +標 1 +ець 1 +▁nesta 1 +nilai 1 +▁plen 1 +րել 1 +故事 1 +чных 1 +▁thủ 1 +▁eder 1 +▁ಹೆ 1 +▁πρέπει 1 +▁بج 1 +▁пес 1 +îne 1 +▁proizvod 1 +stjórn 1 +ګر 1 +ಷ್ 1 +ICA 1 +тера 1 +vida 1 +▁ජන 1 +▁орта 1 +▁musí 1 +ტურ 1 +λόγ 1 +сыл 1 +▁Ano 1 +୍ୱ 1 +ੱਤ 1 +žin 1 +IND 1 +sain 1 +që 1 +▁آف 1 +ուկ 1 +▁þú 1 +仍 1 +▁cultural 1 +순 1 +▁drag 1 +бут 1 +▁fois 1 +▁ସଂ 1 +▁estos 1 +อาจ 1 +τές 1 +ΟΥ 1 +ρκ 1 +skil 1 +▁inay 1 +▁obchod 1 +▁مف 1 +атын 1 +▁जानकारी 1 +രീ 1 +▁хто 1 +きました 1 +▁ኢትዮጵያ 1 +▁ibu 1 +▁Bild 1 +मंत्र 1 +זור 1 +▁Hur 1 +▁стол 1 +▁své 1 +▁muzik 1 +▁diferen 1 +▁thật 1 +дени 1 +史 1 +▁XX 1 +▁بہت 1 +▁saada 1 +तर 1 +▁అవ 1 +РО 1 +STI 1 +ਟੀ 1 +አዲስ 1 +malt 1 +Գ 1 +öð 1 +▁زبان 1 +मै 1 +څ 1 +нения 1 +▁انتخاب 1 +▁kolo 1 +fest 1 +▁empresas 1 +▁בס 1 +▁вече 1 +губ 1 +▁putea 1 +▁ولكن 1 +وقف 1 +▁content 1 +國際 1 +▁структур 1 +skiej 1 +տի 1 +ുന്നത 1 +Զ 1 +АС 1 +િત 1 +Ł 1 +pida 1 +▁وفي 1 +chodzi 1 +தே 1 +▁අර 1 +ుడు 1 +dagen 1 +▁এর 1 +▁Ін 1 +▁акт 1 +▁virtu 1 +ைய 1 +▁നട 1 +קא 1 +чина 1 +▁다른 1 +כט 1 +tím 1 +▁وهو 1 +▁norm 1 +τυχ 1 +logi 1 +lande 1 +vyo 1 +▁اینکه 1 +重要的 1 +▁között 1 +dă 1 +这里 1 +ບາ 1 +▁Sistem 1 +sætte 1 +▁տեղ 1 +ייט 1 +极 1 +ポ 1 +▁treball 1 +▁tanı 1 +▁اطلاعات 1 +ക്കാര 1 +▁libre 1 +制度 1 +ที่สุด 1 +धे 1 +백 1 +취 1 +▁result 1 +ატი 1 +íonn 1 +▁ٿا 1 +STE 1 +ੁੱ 1 +dź 1 +கள 1 +pää 1 +ናቸው 1 +▁شوي 1 +وٹ 1 +ässä 1 +▁platform 1 +▁Kamp 1 +▁физи 1 +最新 1 +▁altri 1 +▁così 1 +▁болох 1 +zung 1 +环 1 +▁Бар 1 +جز 1 +nur 1 +▁odgovor 1 +▁Ком 1 +onte 1 +ಐ 1 +▁Crist 1 +▁üks 1 +ද්ද 1 +изира 1 +▁tyd 1 +▁Eh 1 +ënë 1 +▁dzieci 1 +▁(14 1 +ировать 1 +▁предлага 1 +▁નિ 1 +minu 1 +കാല 1 +▁தொ 1 +▁בכל 1 +▁кызмат 1 +▁جنهن 1 +দিন 1 +ชาย 1 +▁aquesta 1 +▁lịch 1 +gång 1 +▁ነገር 1 +ন্ড 1 +ât 1 +▁okoli 1 +▁profesor 1 +діл 1 +bart 1 +▁hayat 1 +▁kwi 1 +▁gjort 1 +▁ממ 1 +▁Não 1 +▁ilgili 1 +пусти 1 +עים 1 +▁micro 1 +xar 1 +▁ਉਸ 1 +▁मिळ 1 +person 1 +▁setelah 1 +▁stort 1 +ležit 1 +▁เพราะ 1 +▁môže 1 +▁wanita 1 +εφ 1 +یده 1 +шим 1 +▁espera 1 +▁membe 1 +県 1 +▁haqqında 1 +▁बहुत 1 +▁supra 1 +▁sê 1 +vina 1 +олго 1 +▁thought 1 +מקום 1 +▁bring 1 +activitat 1 +才能 1 +لوب 1 +برا 1 +▁ਪਾ 1 +▁transfer 1 +ীর 1 +▁self 1 +ពេល 1 +▁scho 1 +▁Inform 1 +שק 1 +міст 1 +▁טוב 1 +되어 1 +مكان 1 +כול 1 +పడ 1 +atı 1 +אס 1 +▁gjithë 1 +овых 1 +▁خرید 1 +▁eri 1 +▁väga 1 +plica 1 +خوان 1 +skega 1 +▁Cultura 1 +▁sabab 1 +̀ 1 +▁sekolah 1 +▁mudah 1 +▁Рас 1 +▁Fy 1 +▁Rec 1 +雙 1 +เดียว 1 +▁реши 1 +▁dessa 1 +▁kunst 1 +人の 1 +▁leta 1 +▁Muhammad 1 +▁בני 1 +▁president 1 +รุ 1 +LL 1 +omba 1 +▁different 1 +▁november 1 +μένα 1 +iņas 1 +ଚି 1 +席 1 +λοι 1 +聽 1 +گل 1 +걸 1 +laha 1 +Tu 1 +daş 1 +▁한다 1 +แรง 1 +▁hvilke 1 +ητ 1 +▁запа 1 +ONE 1 +▁elke 1 +ttle 1 +▁существ 1 +kita 1 +ۋە 1 +盛 1 +▁Sky 1 +▁الرئيس 1 +อะไร 1 +▁høy 1 +ρού 1 +▁پن 1 +▁امریکا 1 +чны 1 +▁његов 1 +viv 1 +▁вул 1 +avat 1 +▁تولید 1 +př 1 +▁legge 1 +ڪا 1 +▁míst 1 +손 1 +ларын 1 +▁ngoài 1 +▁İstanbul 1 +▁komplet 1 +فريق 1 +▁இது 1 +രിക്ക 1 +ఐ 1 +HAN 1 +ગ્ 1 +раст 1 +HT 1 +比较 1 +▁Start 1 +▁hesab 1 +canta 1 +CP 1 +▁मुख्य 1 +гэл 1 +дах 1 +▁max 1 +頁 1 +▁10% 1 +▁норм 1 +കളുടെ 1 +แป 1 +▁серед 1 +shta 1 +ropa 1 +▁(17 1 +▁kembali 1 +рун 1 +▁particular 1 +ფას 1 +määrä 1 +പോ 1 +ىڭ 1 +▁вот 1 +编 1 +▁шаар 1 +▁sense 1 +測 1 +biet 1 +ferð 1 +▁specific 1 +▁aplika 1 +▁nostro 1 +өх 1 +▁Лі 1 +ისთვის 1 +▁р 1 +决 1 +riko 1 +quen 1 +elem 1 +▁kjo 1 +ndro 1 +urg 1 +avad 1 +の方 1 +림 1 +▁iets 1 +чист 1 +ार्थ 1 +ziona 1 +των 1 +游戏 1 +軍 1 +▁fazla 1 +λύ 1 +▁จ 1 +ทีม 1 +yum 1 +curr 1 +▁फिर 1 +▁څ 1 +▁kerül 1 +▁thống 1 +▁помощ 1 +ស់ 1 +▁बोल 1 +کې 1 +dapat 1 +മാന 1 +ેલ 1 +▁мало 1 +иште 1 +▁aurre 1 +ието 1 +▁juri 1 +बीच 1 +ucu 1 +会社 1 +Jo 1 +▁dacă 1 +ลี 1 +理解 1 +ລັດ 1 +үүн 1 +ITA 1 +களின் 1 +דור 1 +beeld 1 +fahren 1 +ටම 1 +КИ 1 +versa 1 +▁хан 1 +仕事 1 +କୋ 1 +▁דעם 1 +▁હો 1 +بية 1 +▁сама 1 +bben 1 +qat 1 +Փ 1 +▁đổi 1 +tjeneste 1 +▁стать 1 +병 1 +Ұ 1 +▁arba 1 +▁Į 1 +♥ 1 +▁estado 1 +▁tarjo 1 +kész 1 +▁Nova 1 +ssima 1 +کہ 1 +الة 1 +▁vissza 1 +ਜੇ 1 +▁ព័ត៌មាន 1 +함 1 +▁информация 1 +đu 1 +▁quyền 1 +▁progres 1 +ყვა 1 +▁tinh 1 +▁cura 1 +▁ամեն 1 +ટા 1 +läng 1 +▁Δημ 1 +하다 1 +вати 1 +flu 1 +šča 1 +▁resp 1 +ខ្ 1 +тарын 1 +percaya 1 +▁മലയാള 1 +ваше 1 +▁manifesta 1 +▁copii 1 +▁produto 1 +нице 1 +zze 1 +▁წა 1 +▁մեջ 1 +▁sheegay 1 +▁hasil 1 +komst 1 +ուղ 1 +bati 1 +చే 1 +▁preto 1 +▁кас 1 +▁respons 1 +ผ่าน 1 +取得 1 +▁крај 1 +▁jelent 1 +▁ڈی 1 +▁Tidak 1 +ൊരു 1 +想要 1 +っと 1 +Ā 1 +设 1 +▁поче 1 +▁És 1 +dhur 1 +▁когато 1 +IDA 1 +幅 1 +▁הם 1 +klus 1 +▁អា 1 +▁perché 1 +▁Office 1 +වක් 1 +▁דא 1 +ទៅ 1 +▁Fle 1 +တို 1 +▁Dol 1 +▁mogu 1 +▁tým 1 +قال 1 +ながら 1 +поль 1 +▁کړي 1 +тельств 1 +▁предмет 1 +ხს 1 +▁ဦး 1 +दर 1 +дүн 1 +▁Group 1 +▁تور 1 +▁ನಿರ್ 1 +Mail 1 +录 1 +satz 1 +▁біл 1 +谈 1 +▁реч 1 +රෝ 1 +▁avut 1 +धान 1 +өм 1 +▁والأ 1 +▁Cra 1 +qə 1 +dli 1 +▁సె 1 +▁Vaš 1 +▁වෙලා 1 +▁næst 1 +ኤ 1 +▁peste 1 +▁sayı 1 +▁ملا 1 +▁tên 1 +ള്ള 1 +▁chia 1 +شارك 1 +▁сега 1 +RAM 1 +▁Tun 1 +mato 1 +全面 1 +有效 1 +▁പെ 1 +▁patri 1 +يران 1 +奥 1 +▁этой 1 +▁जिस 1 +ícia 1 +▁apart 1 +єм 1 +▁رئيس 1 +▁להת 1 +▁Сто 1 +מוש 1 +▁відпові 1 +규 1 +rette 1 +стой 1 +iyorum 1 +termin 1 +бө 1 +terior 1 +▁elektro 1 +gren 1 +ሆ 1 +▁schön 1 +பெ 1 +▁Vad 1 +▁spirit 1 +▁роди 1 +ebilir 1 +▁ресурс 1 +▁пункт 1 +น์ 1 +سې 1 +▁WordPress 1 +▁nchini 1 +▁bunu 1 +ức 1 +luğu 1 +baya 1 +▁അത് 1 +කාර 1 +خوا 1 +වලට 1 +ருக்கு 1 +ନ୍ତୁ 1 +▁druge 1 +▁zal 1 +zina 1 +soft 1 +့် 1 +▁compte 1 +UB 1 +αντ 1 +мис 1 +▁inspira 1 +▁oni 1 +▁kwamba 1 +ไม่ได้ 1 +▁digunakan 1 +▁डॉ 1 +▁thân 1 +poru 1 +▁metu 1 +▁ڪم 1 +pide 1 +лал 1 +бран 1 +щите 1 +▁1994 1 +ेका 1 +▁ادامه 1 +ory 1 +нул 1 +▁teknik 1 +伤 1 +ској 1 +ရဲ႕ 1 +▁анти 1 +শ্ 1 +▁στους 1 +ński 1 +▁정보 1 +▁mg 1 +ผิว 1 +ologic 1 +siga 1 +残 1 +▁Jä 1 +ນໍາ 1 +▁temat 1 +▁ඉන්න 1 +▁movie 1 +סר 1 +▁lahat 1 +cyjne 1 +▁Ք 1 +əş 1 +верс 1 +elijke 1 +▁Ча 1 +▁Sü 1 +ڼ 1 +кру 1 +不知道 1 +▁share 1 +团 1 +▁pont 1 +売 1 +▁nữa 1 +▁pă 1 +cké 1 +tuz 1 +স্ক 1 +▁nuevo 1 +▁resol 1 +mont 1 +▁ಹಾಗೂ 1 +אַנ 1 +ijk 1 +صوب 1 +პერ 1 +▁Book 1 +とき 1 +尚 1 +折 1 +wek 1 +▁rent 1 +▁לפ 1 +▁Hot 1 +રિ 1 +пы 1 +voll 1 +▁aceasta 1 +fekt 1 +yib 1 +ौं 1 +▁благо 1 +бей 1 +larından 1 +▁munka 1 +▁सुन 1 +▁They 1 +▁Power 1 +▁keç 1 +▁gospodar 1 +▁എല്ലാ 1 +nant 1 +▁2-3 1 +գա 1 +unter 1 +▁රා 1 +▁κάθε 1 +iems 1 +ገል 1 +ראה 1 +▁mahu 1 +-14 1 +▁cukup 1 +ించారు 1 +হি 1 +▁وزير 1 +nahme 1 +สวย 1 +編 1 +голям 1 +MIN 1 +ቅር 1 +▁ساعت 1 +▁variant 1 +▁svijet 1 +vő 1 +▁суу 1 +▁quốc 1 +▁ሀ 1 +interes 1 +▁přes 1 +джа 1 +▁ljud 1 +▁vă 1 +▁সি 1 +▁zosta 1 +نظم 1 +▁mọi 1 +cimiento 1 +▁कह 1 +▁priorit 1 +▁نوع 1 +ឈ 1 +▁mitä 1 +▁मोदी 1 +ανε 1 +▁ina 1 +▁कुरा 1 +ارات 1 +МИ 1 +▁Fryslân 1 +ността 1 +ындағы 1 +lind 1 +ירות 1 +տն 1 +κρι 1 +▁толькі 1 +ීම 1 +あった 1 +▁väli 1 +▁kuni 1 +ជន 1 +тис 1 +▁Ло 1 +▁حضور 1 +思い 1 +▁فروش 1 +▁сами 1 +發現 1 +▁základ 1 +▁అంద 1 +▁provo 1 +ແຕ່ 1 +iranje 1 +▁aktual 1 +▁როგორც 1 +ðir 1 +əsində 1 +φέρ 1 +شو 1 +опис 1 +space 1 +▁ža 1 +ಫ್ 1 +▁baza 1 +▁ئىش 1 +ccia 1 +وية 1 +фор 1 +▁interesse 1 +▁všech 1 +不過 1 +两个 1 +தில் 1 +▁ohne 1 +անակ 1 +▁теле 1 +ța 1 +ഴ് 1 +YO 1 +ប្រទេស 1 +▁software 1 +▁around 1 +DC 1 +يرة 1 +ಯೂ 1 +▁profession 1 +▁reag 1 +▁która 1 +▁уби 1 +▁سفر 1 +puesto 1 +▁temu 1 +▁Poz 1 +شكل 1 +途 1 +▁Når 1 +▁keer 1 +լին 1 +сек 1 +▁combina 1 +mbah 1 +โต 1 +тів 1 +bouw 1 +▁shqiptar 1 +▁थे 1 +▁κατ 1 +▁Пи 1 +larımız 1 +ското 1 +ኦ 1 +▁vozi 1 +▁बता 1 +▁lainnya 1 +nnar 1 +不少 1 +▁хот 1 +▁होती 1 +ніка 1 +kkel 1 +▁Пере 1 +্ম 1 +還是 1 +ኃ 1 +त्ता 1 +▁quyết 1 +▁phố 1 +▁Main 1 +డీ 1 +▁rundt 1 +ଗା 1 +Про 1 +END 1 +നും 1 +阳 1 +գի 1 +▁olub 1 +▁igaz 1 +ぶ 1 +DEN 1 +dende 1 +▁faktisk 1 +මට 1 +plic 1 +tūr 1 +▁دوران 1 +▁(10 1 +仅 1 +▁хэрэг 1 +либо 1 +▁Укра 1 +vale 1 +պես 1 +▁gyn 1 +иров 1 +ரிய 1 +veik 1 +▁cami 1 +特別 1 +cours 1 +bija 1 +▁inom 1 +친 1 +блі 1 +▁власти 1 +▁ର 1 +▁nemo 1 +▁milyon 1 +▁जीवन 1 +▁enga 1 +MD 1 +കളും 1 +▁Је 1 +itud 1 +▁facebook 1 +▁domu 1 +ුම් 1 +▁Mkuu 1 +เอง 1 +mät 1 +වී 1 +▁(16 1 +▁spri 1 +нього 1 +ילה 1 +ваць 1 +свя 1 +べ 1 +ವರು 1 +ഷ്ട 1 +▁اخبار 1 +ტუ 1 +▁quản 1 +iển 1 +▁повер 1 +لاش 1 +ਸ਼ਨ 1 +сіз 1 +anî 1 +▁وو 1 +▁সু 1 +лаж 1 +▁Ри 1 +▁muita 1 +აბ 1 +тык 1 +▁በሚ 1 +apport 1 +نظر 1 +錢 1 +нија 1 +基础 1 +лися 1 +▁Juni 1 +▁зар 1 +▁Ski 1 +dziel 1 +▁එකක් 1 +▁phương 1 +▁සම 1 +▁विषय 1 +▁अपनी 1 +өт 1 +▁gusta 1 +াল 1 +確認 1 +ნიშ 1 +▁اړه 1 +▁obsah 1 +▁käyttä 1 +Беларус 1 +▁guru 1 +woh 1 +▁maal 1 +▁змін 1 +/5 1 +archi 1 +իլ 1 +пові 1 +延 1 +▁Ví 1 +▁евро 1 +ضاف 1 +ັ 1 +แพ 1 +▁cela 1 +তো 1 +дері 1 +んです 1 +kush 1 +щение 1 +▁Jack 1 +参 1 +خير 1 +▁جديد 1 +ион 1 +fej 1 +▁എന്ന് 1 +▁Hari 1 +жо 1 +▁orienta 1 +▁하나 1 +▁কি 1 +رون 1 +▁നീ 1 +漫 1 +▁materia 1 +▁zou 1 +▁дали 1 +▁hazır 1 +ங் 1 +▁வீ 1 +▁stress 1 +▁första 1 +öp 1 +▁лице 1 +▁robot 1 +ět 1 +禮 1 +ໆ 1 +იკ 1 +ອບ 1 +ไม่มี 1 +ται 1 +▁music 1 +▁Επι 1 +спі 1 +▁अन 1 +美元 1 +喜欢 1 +រី 1 +گز 1 +▁nếu 1 +▁ضرور 1 +ທະ 1 +ניות 1 +▁Gold 1 +▁फिल्म 1 +▁darba 1 +▁How 1 +▁çıx 1 +ovanja 1 +plant 1 +ထဲ 1 +nil 1 +▁måste 1 +▁سوال 1 +▁Energi 1 +飛 1 +▁történ 1 +▁كې 1 +▁penga 1 +▁drive 1 +▁riktig 1 +კურ 1 +▁Raz 1 +▁नेता 1 +▁tarp 1 +ध्या 1 +könyv 1 +ρυ 1 +▁назва 1 +íða 1 +▁érdek 1 +▁средства 1 +ましょう 1 +▁позна 1 +▁ទី 1 +▁ond 1 +▁Ami 1 +▁equipo 1 +tál 1 +гле 1 +оли 1 +▁hadi 1 +ङ्ग 1 +▁penye 1 +dict 1 +▁වැඩි 1 +ଡ଼ 1 +紹介 1 +æg 1 +购 1 +屬 1 +baik 1 +▁realizar 1 +▁psych 1 +лав 1 +▁सेवा 1 +▁tăng 1 +独 1 +▁виде 1 +▁сарын 1 +控制 1 +ఫ 1 +məsi 1 +違 1 +вим 1 +▁German 1 +▁زیادہ 1 +▁вже 1 +baba 1 +ນະ 1 +BL 1 +лиза 1 +Ő 1 +တော် 1 +협 1 +▁Må 1 +core 1 +▁بدون 1 +這樣 1 +ట్టి 1 +нис 1 +▁услови 1 +▁moins 1 +վող 1 +▁boek 1 +▁epi 1 +我们的 1 +CHA 1 +ออนไลน์ 1 +▁SMS 1 +▁знае 1 +CIA 1 +固 1 +▁cambia 1 +활 1 +đe 1 +▁Histori 1 +▁لأ 1 +▁natura 1 +არს 1 +▁احمد 1 +સ્ત 1 +▁liệu 1 +▁לג 1 +▁үнэ 1 +ística 1 +され 1 +პე 1 +போ 1 +ιτ 1 +τού 1 +ÉS 1 +▁痞客邦 1 +▁ela 1 +纳 1 +hlás 1 +accord 1 +▁člen 1 +گذار 1 +▁گروه 1 +▁struktur 1 +▁Info 1 +▁करते 1 +aldi 1 +▁mensen 1 +غۇ 1 +▁возможно 1 +▁भएका 1 +들의 1 +گى 1 +цо 1 +вић 1 +▁поста 1 +क्षा 1 +apos 1 +▁јер 1 +▁Hö 1 +▁Czy 1 +HR 1 +чения 1 +▁ਕੁ 1 +ச்சி 1 +▁nekaj 1 +▁дода 1 +ωτ 1 +其实 1 +ट्ट 1 +ंगा 1 +эз 1 +მატ 1 +torial 1 +ería 1 +atud 1 +ferenc 1 +▁obliga 1 +▁lời 1 +ibh 1 +▁ولی 1 +▁ավելի 1 +лица 1 +▁يكون 1 +mpel 1 +ходит 1 +錯 1 +▁sabi 1 +átor 1 +مير 1 +▁değiş 1 +სრულ 1 +लेल्या 1 +bantu 1 +▁wol 1 +▁Dil 1 +сход 1 +▁جدا 1 +ԱՐ 1 +حظ 1 +χι 1 +▁විය 1 +▁pose 1 +lerinde 1 +▁malam 1 +ိမ္ 1 +▁Kro 1 +uutta 1 +ालय 1 +ével 1 +▁چیز 1 +ជំ 1 +मन्त्री 1 +zahl 1 +وث 1 +▁keep 1 +▁günü 1 +▁თავის 1 +رع 1 +tawa 1 +狀 1 +íð 1 +хэн 1 +និ 1 +▁tulee 1 +رە 1 +အရ 1 +ბუ 1 +ترین 1 +▁keres 1 +▁minha 1 +▁viss 1 +علم 1 +पू 1 +visning 1 +зем 1 +▁ପୁ 1 +黃 1 +PG 1 +▁ikus 1 +യൂ 1 +▁ഇന്ത്യ 1 +▁düzen 1 +▁restaur 1 +▁kiri 1 +▁স্ 1 +plik 1 +▁함께 1 +▁islam 1 +bord 1 +吉 1 +kunta 1 +ლება 1 +ائية 1 +▁Մի 1 +లై 1 +▁Aquest 1 +čiai 1 +▁São 1 +ቦ 1 +▁wichtig 1 +כתב 1 +kwe 1 +kura 1 +szych 1 +▁outras 1 +▁chuyện 1 +▁toujours 1 +▁numer 1 +▁келе 1 +ئة 1 +▁دهد 1 +увањето 1 +▁Merc 1 +یون 1 +篇 1 +▁వై 1 +▁zbog 1 +ின் 1 +▁precisa 1 +▁konf 1 +्दै 1 +▁möglich 1 +らない 1 +▁صدر 1 +▁திரு 1 +تری 1 +▁fapt 1 +▁nedo 1 +▁existe 1 +zár 1 +أس 1 +بین 1 +ھى 1 +产业 1 +መር 1 +▁1993 1 +▁urban 1 +▁pasta 1 +▁pł 1 +货 1 +▁овој 1 +▁люд 1 +истов 1 +▁१० 1 +атты 1 +秘 1 +پى 1 +▁beim 1 +きます 1 +CR 1 +ដែល 1 +▁именно 1 +不到 1 +ಬೇಕು 1 +ավար 1 +▁наступ 1 +▁توسط 1 +▁אנ 1 +▁đơn 1 +▁Music 1 +дро 1 +▁පත් 1 +▁αφ 1 +▁Data 1 +▁byť 1 +ექს 1 +वाह 1 +ກະ 1 +icamente 1 +фон 1 +රී 1 +มุ 1 +นะ 1 +ବାର 1 +diagnos 1 +بود 1 +riga 1 +輕 1 +posa 1 +▁worm 1 +യിലെ 1 +អ្នក 1 +ことは 1 +▁dedica 1 +▁kecil 1 +▁pasar 1 +പാ 1 +ینی 1 +ښت 1 +مون 1 +दर्श 1 +▁таксама 1 +თო 1 +ລາຍ 1 +סק 1 +▁автомат 1 +▁gud 1 +fry 1 +绝 1 +▁שלי 1 +▁Len 1 +▁ಗು 1 +स्क 1 +▁processo 1 +雷 1 +▁würde 1 +แอ 1 +Պ 1 +▁monde 1 +ಿದ 1 +紀 1 +ventur 1 +▁možnost 1 +▁pracy 1 +▁amma 1 +▁Seite 1 +ไฟ 1 +ніх 1 +δρο 1 +sinə 1 +▁number 1 +▁şəhər 1 +▁nội 1 +ڊي 1 +gelijk 1 +öf 1 +ნახ 1 +獨 1 +▁Президент 1 +▁Има 1 +ທ່ານ 1 +ộc 1 +ድን 1 +▁प्रहरी 1 +ajiem 1 +ຽງ 1 +liyin 1 +တယ် 1 +▁always 1 +との 1 +▁sebab 1 +gati 1 +最高 1 +▁Ça 1 +增长 1 +छा 1 +თქ 1 +σσ 1 +▁Minu 1 +ַ 1 +▁പ്രതി 1 +▁større 1 +గే 1 +ື່ອ 1 +▁عند 1 +qan 1 +▁Deus 1 +零 1 +чак 1 +ций 1 +ково 1 +▁ಕನ್ನಡ 1 +▁ಪರಿ 1 +▁nunc 1 +访 1 +્ર 1 +▁professor 1 +ќа 1 +iêu 1 +tzak 1 +▁klassi 1 +ալի 1 +elämä 1 +▁Politik 1 +žas 1 +DD 1 +租 1 +ៗ 1 +ДЕ 1 +▁taga 1 +▁непо 1 +▁والا 1 +реж 1 +へ 1 +統 1 +धु 1 +అ 1 +ଗୁ 1 +υλ 1 +လား 1 +SV 1 +善 1 +▁cili 1 +lą 1 +▁services 1 +jedno 1 +මෙන් 1 +តិ 1 +ybos 1 +▁решение 1 +нска 1 +ଦ୍ 1 +效果 1 +ļi 1 +▁بلا 1 +рач 1 +מפ 1 +လို႔ 1 +▁palju 1 +ылған 1 +▁Aur 1 +▁since 1 +额 1 +▁різ 1 +▁месяц 1 +āja 1 +▁enorm 1 +▁apenas 1 +▁(9) 1 +▁vou 1 +loga 1 +功 1 +▁hạ 1 +dés 1 +▁رنگ 1 +▁pembe 1 +成為 1 +▁varie 1 +▁რაც 1 +统 1 +補 1 +ፅ 1 +▁gusto 1 +ឃ 1 +οσ 1 +▁lisa 1 +▁bæ 1 +▁эмес 1 +सहित 1 +학교 1 +▁edən 1 +ကုိ 1 +▁мере 1 +İN 1 +▁voit 1 +▁hüquq 1 +▁scop 1 +сор 1 +▁persoon 1 +اذ 1 +▁paljon 1 +ável 1 +ייַ 1 +▁sotto 1 +▁relaciona 1 +▁Comments 1 +ший 1 +末 1 +قاد 1 +▁igjen 1 +▁Welt 1 +领域 1 +▁ದಿನ 1 +сун 1 +▁teraz 1 +glie 1 +แรก 1 +íomh 1 +▁وزارت 1 +▁dupa 1 +▁Gel 1 +▁gé 1 +托 1 +▁hắn 1 +▁innan 1 +ப்போ 1 +טים 1 +ړي 1 +ंब 1 +iunea 1 +새 1 +▁Wel 1 +质量 1 +正在 1 +្យ 1 +ႀကီး 1 +pů 1 +ikh 1 +▁Team 1 +▁broj 1 +▁образ 1 +▁fick 1 +ります 1 +▁huu 1 +ٽر 1 +▁mín 1 +ខ្លួន 1 +▁alternat 1 +▁aktu 1 +ందుకు 1 +▁idi 1 +▁ඕන 1 +▁nawet 1 +জে 1 +арна 1 +▁نورو 1 +របស់ 1 +學生 1 +逐 1 +▁millor 1 +獎 1 +જુ 1 +šla 1 +vlja 1 +른 1 +不同的 1 +▁კვ 1 +asto 1 +oloji 1 +ვებ 1 +▁gaze 1 +▁комплекс 1 +▁sekarang 1 +เล็ก 1 +获得 1 +ständig 1 +▁oleva 1 +ტყ 1 +NK 1 +▁المست 1 +ଯା 1 +ētā 1 +▁religio 1 +▁FOR 1 +▁Сер 1 +liau 1 +人生 1 +▁Shqipëri 1 +▁đất 1 +สะ 1 +prze 1 +tress 1 +人が 1 +▁भाग 1 +▁kemi 1 +▁ഇത 1 +更加 1 +ቹ 1 +訪 1 +ಿತ 1 +▁Mga 1 +▁evolu 1 +ሀ 1 +▁tử 1 +▁රැ 1 +ण्यासाठी 1 +▁задач 1 +հայտն 1 +lysning 1 +صاب 1 +▁אויף 1 +lighed 1 +▁Teil 1 +indən 1 +zicht 1 +▁Här 1 +▁hef 1 +šť 1 +ថ្ 1 +▁једно 1 +full 1 +销 1 +▁detail 1 +อยาก 1 +▁nosso 1 +▁матеріал 1 +face 1 +▁биз 1 +씨 1 +йды 1 +نیو 1 +torii 1 +ুর 1 +▁Daniel 1 +▁මගේ 1 +ELE 1 +▁blive 1 +ତେ 1 +▁vrst 1 +šlo 1 +க்கை 1 +▁Շ 1 +رأ 1 +დნენ 1 +kord 1 +▁tratta 1 +čku 1 +成立 1 +▁ترک 1 +據 1 +▁ചെയ്ത 1 +PV 1 +צים 1 +▁Mara 1 +▁sách 1 +▁PRE 1 +ņi 1 +▁మరియు 1 +))) 1 +▁នឹង 1 +ସା 1 +▁مناسب 1 +▁110 1 +▁спас 1 +ұл 1 +一年 1 +▁liste 1 +▁campo 1 +IX 1 +Լ 1 +ခါ 1 +今日 1 +▁қала 1 +패 1 +เย 1 +相關 1 +いない 1 +▁очи 1 +OU 1 +راح 1 +寫 1 +▁بها 1 +▁kiuj 1 +▁podľa 1 +▁тільки 1 +▁lòng 1 +שירות 1 +▁После 1 +ონი 1 +බ් 1 +ылды 1 +rime 1 +▁حص 1 +▁مقام 1 +▁vedere 1 +▁viết 1 +parent 1 +▁бага 1 +▁ഒന്ന 1 +र्स 1 +历史 1 +▁হয়েছে 1 +▁жел 1 +ozás 1 +▁کچھ 1 +▁conserva 1 +▁regional 1 +ئى 1 +▁պար 1 +▁meses 1 +jeli 1 +ক্স 1 +▁ekstra 1 +врши 1 +▁режим 1 +идент 1 +ốc 1 +▁Şe 1 +▁ملی 1 +勝 1 +тина 1 +▁siitä 1 +чини 1 +आर 1 +DER 1 +▁mwa 1 +သည္။ 1 +έντ 1 +cijo 1 +▁Haz 1 +ବୁ 1 +▁ಎಂಬ 1 +▁soos 1 +▁polic 1 +أن 1 +▁mendapatkan 1 +søk 1 +▁Україні 1 +▁grote 1 +▁egun 1 +ົກ 1 +计划 1 +ใคร 1 +πολιτ 1 +▁сезон 1 +FR 1 +фін 1 +一切 1 +▁bikin 1 +mės 1 +tong 1 +▁Center 1 +πά 1 +দি 1 +▁நான் 1 +層 1 +овий 1 +▁Michael 1 +čení 1 +хгүй 1 +ضاء 1 +▁بالم 1 +▁eden 1 +дем 1 +વામાં 1 +ஓ 1 +▁తెలుగు 1 +황 1 +চে 1 +▁idee 1 +ۇق 1 +pół 1 +▁kemudian 1 +▁veľmi 1 +▁passar 1 +▁fizi 1 +zony 1 +Ծ 1 +▁bomb 1 +▁viene 1 +စီ 1 +▁miał 1 +present 1 +ዎ 1 +▁wêreld 1 +▁роботи 1 +ERE 1 +édi 1 +コン 1 +tjie 1 +jumi 1 +▁better 1 +న్స్ 1 +ברים 1 +weyn 1 +▁كبير 1 +▁rozp 1 +ljivo 1 +相信 1 +kannya 1 +▁fro 1 +дій 1 +▁bendr 1 +DV 1 +▁کمی 1 +ήματα 1 +ョ 1 +網站 1 +նական 1 +▁130 1 +երկր 1 +UI 1 +Ю 1 +眾 1 +掉 1 +蛋 1 +嗎 1 +▁эти 1 +▁etiam 1 +▁هایی 1 +λλη 1 +ವಾದ 1 +▁हुआ 1 +ລິ 1 +khe 1 +ców 1 +▁министр 1 +CK 1 +▁ਨਿ 1 +▁Друг 1 +მეტ 1 +▁ਜਾਂ 1 +▁білім 1 +▁moto 1 +ەي 1 +▁dalka 1 +אַל 1 +ترا 1 +سٹ 1 +грес 1 +▁versi 1 +▁rico 1 +▁tərəfindən 1 +▁робот 1 +רס 1 +领导 1 +머 1 +ẽ 1 +▁pale 1 +▁лист 1 +programm 1 +ønn 1 +▁통해 1 +bind 1 +▁Δι 1 +ગી 1 +▁филм 1 +▁jälkeen 1 +▁ні 1 +ላቸው 1 +▁۲۰ 1 +▁социал 1 +nuti 1 +gangen 1 +▁তার 1 +▁Franci 1 +▁Христ 1 +فعل 1 +▁trend 1 +ələr 1 +bą 1 +▁september 1 +▁tham 1 +רד 1 +ização 1 +พอ 1 +錄 1 +▁стандарт 1 +▁بارے 1 +gård 1 +delen 1 +tató 1 +▁לצ 1 +ndri 1 +壓 1 +▁ажиллагаа 1 +ღა 1 +▁суб 1 +ຢ 1 +वाल 1 +▁dolore 1 +तील 1 +ವರ್ 1 +▁passer 1 +▁сака 1 +κυ 1 +されて 1 +marked 1 +▁baina 1 +▁ಕು 1 +غي 1 +▁alguna 1 +▁check 1 +▁içinde 1 +▁Pá 1 +▁rakst 1 +▁damer 1 +▁agora 1 +račun 1 +есі 1 +▁बैंक 1 +EV 1 +▁lege 1 +බා 1 +電話 1 +议 1 +自分の 1 +▁Kay 1 +vī 1 +▁yarat 1 +SER 1 +▁afge 1 +▁तुम 1 +▁kolej 1 +ველი 1 +ећи 1 +▁plac 1 +▁շատ 1 +kuasa 1 +මත් 1 +▁140 1 +▁ജന 1 +ünde 1 +爆 1 +ტან 1 +▁ಇಂ 1 +ച്ച് 1 +▁biệt 1 +▁چون 1 +εια 1 +сін 1 +ίδα 1 +▁Unternehmen 1 +▁toki 1 +▁denna 1 +▁اجرا 1 +▁spolu 1 +▁next 1 +▁запис 1 +ქი 1 +kutan 1 +▁නැති 1 +▁ಅವರು 1 +▁pilot 1 +быз 1 +disk 1 +vány 1 +▁члан 1 +ಮ್ಮ 1 +▁характер 1 +▁રહે 1 +ວນ 1 +јући 1 +▁məsələ 1 +▁Υπ 1 +▁quelques 1 +▁kön 1 +幸 1 +▁penting 1 +▁adult 1 +资源 1 +▁Kop 1 +ेस 1 +ײַ 1 +▁Hus 1 +▁võib 1 +▁لكن 1 +散 1 +색 1 +我国 1 +▁மூ 1 +▁როგორ 1 +γη 1 +▁địa 1 +▁secund 1 +▁disco 1 +▁Denne 1 +▁նա 1 +laya 1 +▁հաս 1 +▁многи 1 +▁tém 1 +▁उनले 1 +юцца 1 +పోయ 1 +əyə 1 +রী 1 +пом 1 +▁خدمات 1 +ൗ 1 +siyasi 1 +▁pasado 1 +▁£ 1 +▁Sep 1 +▁vodi 1 +▁nhập 1 +हन 1 +czego 1 +กลับ 1 +▁reprezenta 1 +ပေး 1 +財 1 +▁cole 1 +族 1 +▁книг 1 +▁reuni 1 +▁збор 1 +רוב 1 +▁Кол 1 +hogy 1 +yim 1 +фарм 1 +▁några 1 +不可 1 +éra 1 +▁trẻ 1 +цијата 1 +ップ 1 +шей 1 +ников 1 +▁Gö 1 +tief 1 +лэх 1 +دير 1 +роп 1 +ထိ 1 +razi 1 +▁കണ്ട 1 +ciji 1 +▁thứ 1 +ఎస్ 1 +雪 1 +▁Euskal 1 +دگی 1 +မ် 1 +iaeth 1 +്യം 1 +된다 1 +▁President 1 +ರೀ 1 +ועד 1 +▁used 1 +klop 1 +граф 1 +▁året 1 +చ్చి 1 +▁Bij 1 +▁Zagreb 1 +ിലേക്ക് 1 +▁നല് 1 +нути 1 +▁expert 1 +▁zim 1 +▁وارد 1 +▁Бұл 1 +ОВ 1 +▁kunna 1 +program 1 +เช่น 1 +▁بأ 1 +:15 1 +ုတ္ 1 +▁दिवस 1 +망 1 +▁experience 1 +ročil 1 +ਸਤ 1 +経 1 +િય 1 +રૂ 1 +▁башка 1 +方案 1 +▁автомобил 1 +▁آمریکا 1 +▁vừa 1 +tök 1 +ВЕ 1 +▁Köz 1 +▁bhí 1 +urus 1 +▁गर्दै 1 +rody 1 +дите 1 +▁също 1 +რს 1 +shë 1 +ంటి 1 +chat 1 +▁nostri 1 +▁responsabil 1 +පාල 1 +▁grunn 1 +දේශ 1 +жела 1 +द्या 1 +▁राख 1 +zenie 1 +▁última 1 +▁bydd 1 +▁мол 1 +طور 1 +▁പറഞ്ഞു 1 +zë 1 +大學 1 +▁Anal 1 +impi 1 +规定 1 +kær 1 +▁neque 1 +פני 1 +▁alleen 1 +▁දැන් 1 +ába 1 +পার 1 +ược 1 +gré 1 +тек 1 +▁бүх 1 +極 1 +عظم 1 +වැනි 1 +ተኛ 1 +จึง 1 +▁جواب 1 +▁binnen 1 +▁chose 1 +పూ 1 +โรคสะเก็ดเงิน 1 +▁ثبت 1 +▁fór 1 +Դ 1 +▁Пу 1 +▁चुनाव 1 +▁जिल्ला 1 +▁gum 1 +▁selalu 1 +فون 1 +▁siempre 1 +▁පහ 1 +รอบ 1 +තුරු 1 +▁හෝ 1 +▁sorti 1 +ਸਟ 1 +ьного 1 +▁fotos 1 +पाद 1 +▁fordi 1 +ಿಸುವ 1 +▁እንደሚ 1 +▁pública 1 +▁nunca 1 +療 1 +τικής 1 +ище 1 +▁السلام 1 +kool 1 +رها 1 +▁срок 1 +并不 1 +▁ihmis 1 +வ் 1 +▁گے 1 +શો 1 +▁Гор 1 +abile 1 +▁Fond 1 +▁avoir 1 +▁görün 1 +vind 1 +▁tubuh 1 +ظاهر 1 +水平 1 +ຫມ 1 +ກໍາ 1 +bida 1 +▁experi 1 +म्प 1 +جال 1 +нду 1 +▁found 1 +▁maand 1 +▁එම 1 +▁1980 1 +▁жок 1 +▁Dövlət 1 +▁სხვა 1 +2006 1 +▁Вас 1 +▁namun 1 +▁شریک 1 +hof 1 +villa 1 +ჰ 1 +▁temperatur 1 +عيد 1 +សេ 1 +▁privi 1 +osť 1 +нав 1 +occasion 1 +ෙකු 1 +보다 1 +채 1 +skyld 1 +erii 1 +▁ktorá 1 +든 1 +▁qədər 1 +vok 1 +anyag 1 +حكم 1 +اؤ 1 +▁چین 1 +مەن 1 +бак 1 +▁गई 1 +▁näh 1 +ांनी 1 +kasta 1 +▁Posted 1 +▁lat 1 +حمد 1 +sidan 1 +生命 1 +Per 1 +恩 1 +jući 1 +ບັນ 1 +एन 1 +這些 1 +침 1 +วันที่ 1 +▁Öz 1 +เดือน 1 +כס 1 +െങ്കിലും 1 +▁rõ 1 +关于 1 +▁vesel 1 +▁kartu 1 +საც 1 +台北 1 +▁реализ 1 +开发 1 +दु 1 +trop 1 +የት 1 +สอบ 1 +性的 1 +уур 1 +▁podpor 1 +קבל 1 +▁نن 1 +ங்கு 1 +ਆਂ 1 +ছেন 1 +▁कांग्रेस 1 +സാ 1 +ithi 1 +தன் 1 +צד 1 +けて 1 +ಜೆ 1 +▁panta 1 +γή 1 +十分 1 +行政 1 +歲 1 +ิต 1 +▁പറഞ്ഞ 1 +▁lah 1 +▁pobl 1 +бил 1 +▁будут 1 +▁Tā 1 +ቱን 1 +亿 1 +▁गर् 1 +vec 1 +сар 1 +For 1 +▁فرهنگ 1 +▁അറിയ 1 +▁private 1 +▁Nur 1 +roda 1 +TAR 1 +āti 1 +కం 1 +оце 1 +▁Uhr 1 +ගැනීම 1 +▁weet 1 +lanan 1 +ΠΑ 1 +کرد 1 +mund 1 +ცა 1 +▁razvoj 1 +дз 1 +צב 1 +lha 1 +ере 1 +వ్వ 1 +mester 1 +ुक 1 +▁цели 1 +୮ 1 +專業 1 +ත්වය 1 +▁Fan 1 +wedd 1 +▁bada 1 +▁шүү 1 +▁производи 1 +аваць 1 +▁situation 1 +raad 1 +▁zorg 1 +▁Vene 1 +▁۱۳ 1 +▁kogu 1 +stran 1 +▁narod 1 +烈 1 +减 1 +条件 1 +▁chur 1 +▁прв 1 +클 1 +بە 1 +▁Pä 1 +▁power 1 +▁podem 1 +▁ගැ 1 +▁للت 1 +ăng 1 +знай 1 +▁mening 1 +γο 1 +▁দেখ 1 +hlut 1 +ችሁ 1 +▁Aug 1 +▁Аб 1 +▁datang 1 +▁нова 1 +έπ 1 +รัฐ 1 +kru 1 +▁هزار 1 +▁pain 1 +əli 1 +▁exact 1 +▁neza 1 +kuntza 1 +▁Hans 1 +ጃ 1 +ಠ 1 +ਰਾਂ 1 +▁citi 1 +▁sáng 1 +▁nelle 1 +бави 1 +ვან 1 +▁жылы 1 +אלי 1 +▁Како 1 +技 1 +σμα 1 +▁videre 1 +мян 1 +購 1 +రై 1 +бле 1 +▁‫ 1 +▁rug 1 +%) 1 +▁tetap 1 +ените 1 +必须 1 +▁Liber 1 +ឹង 1 +cada 1 +มีความ 1 +▁povez 1 +cimento 1 +illo 1 +ନୀ 1 +▁modul 1 +สถาน 1 +▁откри 1 +▁شہر 1 +找到 1 +▁Herr 1 +・・・ 1 +skem 1 +▁උප 1 +▁қай 1 +ਿਕ 1 +▁Deutschland 1 +עש 1 +OO 1 +▁familiar 1 +▁старо 1 +ujeme 1 +▁வந்த 1 +ាំង 1 +▁ihm 1 +atlan 1 +▁estable 1 +▁ഞാന് 1 +▁پول 1 +MAT 1 +త్య 1 +ڃ 1 +κι 1 +ukku 1 +▁विचार 1 ++1 1 +ឹក 1 +▁Love 1 +ڍ 1 +▁böyük 1 +ႊ 1 +ισμό 1 +恐 1 +遊戲 1 +ített 1 +▁করতে 1 +ರಿಂದ 1 +QUE 1 +▁flor 1 +▁ansvar 1 +▁gæ 1 +ฤ 1 +ေလ 1 +▁پہ 1 +▁недо 1 +ūr 1 +cking 1 +でき 1 +ሳይ 1 +▁ले 1 +गु 1 +▁szín 1 +▁thích 1 +희 1 +ाचे 1 +βλ 1 +μάτων 1 +کان 1 +ներից 1 +फु 1 +ცხა 1 +文章 1 +ليل 1 +会议 1 +भु 1 +Ø 1 +▁οποία 1 +▁ასე 1 +▁око 1 +▁otvor 1 +выя 1 +estre 1 +▁cita 1 +読 1 +ຢ່າງ 1 +▁fantastisk 1 +▁ayuda 1 +szak 1 +▁futuro 1 +TH 1 +ໂດຍ 1 +лор 1 +▁transforma 1 +୬ 1 +▁വീ 1 +真正 1 +ન્ટ 1 +▁annet 1 +▁Bibli 1 +tiem 1 +▁postav 1 +печат 1 +รม 1 +мұ 1 +نڊ 1 +рош 1 +▁darbu 1 +▁Gha 1 +▁özel 1 +▁край 1 +σουμε 1 +ትና 1 +▁brit 1 +▁చాలా 1 +▁गरी 1 +atio 1 +▁DVD 1 +TOR 1 +▁uga 1 +▁Stre 1 +▁director 1 +્યુ 1 +ڪل 1 +ught 1 +しかし 1 +බු 1 +模式 1 +बि 1 +▁କରା 1 +တီ 1 +られる 1 +▁Gud 1 +όμενο 1 +▁egiten 1 +▁vidi 1 +წი 1 +οφ 1 +gå 1 +▁못 1 +ším 1 +▁място 1 +▁Quan 1 +▁hoved 1 +▁মো 1 +▁rund 1 +ท์ 1 +ječ 1 +stelling 1 +essen 1 +▁opge 1 +zelf 1 +קוד 1 +― 1 +▁Saint 1 +ינה 1 +place 1 +फी 1 +स्प 1 +πω 1 +▁написа 1 +SAN 1 +ektor 1 +特别 1 +▁වෙන්න 1 +tavat 1 +▁Rusi 1 +▁cualquier 1 +▁expo 1 +黄 1 +ματος 1 +▁לפני 1 +해서 1 +▁lingua 1 +mittel 1 +նա 1 +▁abu 1 +หนัง 1 +▁isku 1 +тип 1 +▁osób 1 +γμα 1 +ಷ್ಟು 1 +regi 1 +▁års 1 +hub 1 +▁практик 1 +▁Герман 1 +▁þegar 1 +▁प्रकाश 1 +spek 1 +ěk 1 +gori 1 +ডে 1 +发布 1 +ਨਾਂ 1 +ଥି 1 +▁فن 1 +okkal 1 +iones 1 +▁הכ 1 +▁услуг 1 +▁Ré 1 +▁কো 1 +と思って 1 +▁مرد 1 +▁реклам 1 +MC 1 +▁ನಲ್ಲಿ 1 +▁tell 1 +▁միջ 1 +▁बारे 1 +▁Gün 1 +могу 1 +אפ 1 +▁yapma 1 +шел 1 +누 1 +പ്പോള് 1 +▁مسلمان 1 +bido 1 +農 1 +▁develop 1 +▁років 1 +ացի 1 +▁നില 1 +▁Mid 1 +र्थ 1 +▁सदस्य 1 +▁problemas 1 +▁Стра 1 +▁fase 1 +ታቸው 1 +ilib 1 +عود 1 +▁faktor 1 +իայի 1 +▁бери 1 +▁ismer 1 +▁ورځ 1 +ými 1 +ψει 1 +unuz 1 +▁pokaz 1 +চার 1 +▁мэдээ 1 +ууга 1 +ʼ 1 +▁Jest 1 +ღი 1 +HD 1 +сне 1 +ിരുന്ന 1 +▁келген 1 +ଧା 1 +▁pagbaba 1 +▁uusi 1 +▁முடி 1 +时候 1 +▁kritik 1 +وغ 1 +由于 1 +抱 1 +গে 1 +▁Σε 1 +изма 1 +ాలి 1 +▁Direct 1 +▁unserer 1 +▁размер 1 +▁Entre 1 +▁آج 1 +కర్ 1 +ılır 1 +▁suatu 1 +▁одговор 1 +▁contrat 1 +راء 1 +იზ 1 +ميل 1 +▁دارند 1 +esség 1 +фект 1 +▁observa 1 +ướng 1 +▁lille 1 +krit 1 +▁Jer 1 +▁Sand 1 +▁बदल 1 +▁спец 1 +ネ 1 +▁limita 1 +rež 1 +▁പുതിയ 1 +▁DEL 1 +లె 1 +▁belle 1 +▁רע 1 +▁കേരള 1 +▁dunha 1 +ノ 1 +▁toute 1 +▁vaan 1 +▁forme 1 +▁Už 1 +악 1 +▁Dünya 1 +双 1 +▁hodin 1 +这么 1 +alaman 1 +ວາ 1 +▁health 1 +▁Ní 1 +TEN 1 +▁Smart 1 +▁spune 1 +汽车 1 +wir 1 +āji 1 +יף 1 +になります 1 +▁konkret 1 +แสดง 1 +▁thêm 1 +дів 1 +stol 1 +▁samen 1 +kolo 1 +ላይ 1 +▁βρ 1 +▁Eine 1 +▁نیاز 1 +▁jotka 1 +ilah 1 +▁colabora 1 +▁interpreta 1 +ույթ 1 +ლობა 1 +人们 1 +▁imper 1 +▁enkel 1 +否 1 +ulat 1 +推出 1 +▁حج 1 +aktiv 1 +LER 1 +ходящ 1 +忙 1 +▁بخ 1 +цкі 1 +▁Namun 1 +▁Tags 1 +strán 1 +▁अर्थ 1 +▁använda 1 +хим 1 +▁tarif 1 +▁నిర్ 1 +▁процесс 1 +有关 1 +▁свои 1 +▁फे 1 +▁अप 1 +რები 1 +كەن 1 +και 1 +даў 1 +шкан 1 +▁each 1 +asyon 1 +▁ਗਿਆ 1 +ందు 1 +▁laikā 1 +査 1 +▁வெளி 1 +▁potrzeb 1 +▁növ 1 +▁ona 1 +ন্ট 1 +▁نقل 1 +▁món 1 +tengah 1 +іў 1 +СЕ 1 +▁away 1 +완 1 +тъп 1 +ವಾಗ 1 +保持 1 +▁Και 1 +▁Kurdistanê 1 +▁നടത്ത 1 +▁gyfer 1 +▁Fol 1 +يي 1 +DN 1 +▁convert 1 +▁سخت 1 +▁relation 1 +另一 1 +▁quasi 1 +▁daugiau 1 +കൂ 1 +жин 1 +▁जाए 1 +iyay 1 +APA 1 +ывает 1 +▁Will 1 +ෙන්න 1 +受到 1 +βε 1 +▁რუს 1 +بك 1 +▁bolo 1 +的话 1 +दै 1 +廠 1 +▁insanlar 1 +突 1 +▁print 1 +τικές 1 +▁газар 1 +λος 1 +▁быў 1 +AYA 1 +крити 1 +شاه 1 +▁letter 1 +web 1 +▁وقد 1 +▁paket 1 +náš 1 +▁କହି 1 +шил 1 +▁objetivo 1 +اڻي 1 +бър 1 +▁Sup 1 +bær 1 +▁ngay 1 +nější 1 +▁શક 1 +vija 1 +десет 1 +▁Motor 1 +ගත් 1 +โค 1 +เข 1 +боле 1 +▁තමයි 1 +ระดับ 1 +▁չէ 1 +▁Telefon 1 +自身 1 +पक 1 +▁nostru 1 +▁მომ 1 +▁hjá 1 +▁direktor 1 +▁такой 1 +רצ 1 +რად 1 +ଳା 1 +acja 1 +ටත් 1 +▁muuta 1 +▁Yeni 1 +姐 1 +ぎ 1 +▁сейчас 1 +▁resto 1 +▁Photo 1 +▁umum 1 +ומי 1 +县 1 +▁деле 1 +▁ürün 1 +ਗੀ 1 +▁nærheten 1 +▁trả 1 +انية 1 +даж 1 +▁relat 1 +▁więcej 1 +ווה 1 +ىمىز 1 +нять 1 +断 1 +▁उनी 1 +tinen 1 +累 1 +ኣ 1 +ená 1 +▁होने 1 +▁الأمر 1 +ესი 1 +▁tidligere 1 +▁բոլոր 1 +ıp 1 +▁तयार 1 +▁assim 1 +වැ 1 +्रि 1 +▁March 1 +▁necessari 1 +▁Mein 1 +ඩා 1 +하면 1 +▁специал 1 +skú 1 +ળી 1 +▁raport 1 +พบ 1 +▁২০১৮ 1 +▁Бел 1 +▁King 1 +segur 1 +λων 1 +▁gall 1 +韓 1 +▁alat 1 +▁सकते 1 +ювання 1 +Ь 1 +另外 1 +▁кап 1 +▁точно 1 +ത്തിയ 1 +ائن 1 +▁препо 1 +лардын 1 +▁بوده 1 +▁lập 1 +以前 1 +▁කියන 1 +▁(20 1 +國家 1 +されている 1 +▁جای 1 +▁University 1 +▁بق 1 +bā 1 +ASI 1 +مدينة 1 +▁Blogger 1 +produc 1 +▁rond 1 +▁занима 1 +▁호텔 1 +ดิ 1 +▁объект 1 +▁آیا 1 +▁þetta 1 +▁أكثر 1 +▁제공 1 +clusi 1 +лыс 1 +佛 1 +achadh 1 +▁Haf 1 +▁Funda 1 +▁هی 1 +戶 1 +▁متعلق 1 +skoj 1 +事件 1 +UNG 1 +ặc 1 +▁sveta 1 +亦 1 +xel 1 +хме 1 +▁fəaliyyət 1 +▁kitab 1 +loop 1 +tip 1 +ðið 1 +ಗಳಿಗೆ 1 +έρα 1 +▁هیچ 1 +▁seria 1 +▁studio 1 +քան 1 +▁olaraq 1 +▁руб 1 +vog 1 +▁бұ 1 +▁YouTube 1 +▁عدد 1 +▁تھے 1 +त्री 1 +บริษัท 1 +▁Nå 1 +سە 1 +{ 1 +▁militar 1 +වන්න 1 +▁കാര്യ 1 +▁sola 1 +▁март 1 +arbete 1 +vado 1 +▁состоя 1 +াপ 1 +конференц 1 +▁üzerinde 1 +ství 1 +iņu 1 +▁вони 1 +正式 1 +▁sites 1 +▁모든 1 +ונג 1 +▁πρό 1 +▁Pia 1 +▁Ова 1 +▁není 1 +谢 1 +గో 1 +▁щодо 1 +▁בג 1 +▁salon 1 +▁gast 1 +▁продаж 1 +檢 1 +ريب 1 +人才 1 +▁plej 1 +енных 1 +айын 1 +존 1 +▁Δεν 1 +فصل 1 +▁Të 1 +指出 1 +PORT 1 +▁20% 1 +每天 1 +สาย 1 +▁tes 1 +▁Pap 1 +▁solid 1 +돌 1 +मत 1 +profe 1 +▁транс 1 +▁lingvo 1 +tasuna 1 +▁эта 1 +ชีวิต 1 +ఘ 1 +▁Χρ 1 +▁Here 1 +레이 1 +▁Ան 1 +▁member 1 +ബു 1 +ვენ 1 +pping 1 +▁mellom 1 +ικός 1 +帮助 1 +▁sức 1 +žā 1 +▁roj 1 +▁ještě 1 +dáva 1 +方が 1 +▁eich 1 +▁halv 1 +▁oro 1 +▁سیاسی 1 +▁ενώ 1 +▁mengi 1 +▁být 1 +итет 1 +▁keluar 1 +िता 1 +▁kulit 1 +▁snel 1 +▁ಬಗ್ಗೆ 1 +움 1 +ուժ 1 +▁कार्यालय 1 +पे 1 +▁экен 1 +▁դա 1 +▁කතා 1 +▁boshqa 1 +▁кош 1 +▁four 1 +验 1 +rätt 1 +▁buku 1 +vido 1 +ራዊ 1 +പക്ഷ 1 +È 1 +▁बाल 1 +▁parla 1 +ERA 1 +зван 1 +зив 1 +▁saman 1 +傷 1 +페이지 1 +▁lelaki 1 +уучу 1 +рост 1 +▁часа 1 +※ 1 +▁которых 1 +projekt 1 +unum 1 +▁چيو 1 +iều 1 +有人 1 +ācija 1 +たり 1 +社會 1 +ाचा 1 +▁bästa 1 +સર 1 +ต้องการ 1 +ដើម្បី 1 +ஐ 1 +▁форум 1 +чого 1 +φε 1 +ရိ 1 +検 1 +▁oblik 1 +▁company 1 +nél 1 +ража 1 +GH 1 +▁Гу 1 +▁Fla 1 +▁permite 1 +க்கம் 1 +ويل 1 +rück 1 +ục 1 +yong 1 +▁cual 1 +ട്ടു 1 +mbol 1 +уге 1 +ถือ 1 +်ာ 1 +▁اصل 1 +▁nature 1 +מור 1 +▁lleva 1 +ंप 1 +liste 1 +▁Pass 1 +ையில் 1 +▁suun 1 +▁کوي 1 +▁produse 1 +▁طريق 1 +われ 1 +▁Ngh 1 +ෘ 1 +LS 1 +▁знач 1 +▁termasuk 1 +▁possi 1 +▁група 1 +▁کرنا 1 +▁novel 1 +лев 1 +ວິ 1 +▁România 1 +▁రోజు 1 +带来 1 +▁universitet 1 +▁வாழ் 1 +ወጣ 1 +▁Зна 1 +▁Schul 1 +▁компания 1 +越来越 1 +맞 1 +mű 1 +▁կատար 1 +▁Şa 1 +лија 1 +▁పే 1 +▁tash 1 +ಸರ 1 +äck 1 +ън 1 +▁پھر 1 +▁sakit 1 +▁gestion 1 +▁sở 1 +标准 1 +▁ඇත්ත 1 +כנס 1 +網路 1 +misen 1 +▁tutte 1 +▁Dor 1 +署 1 +▁клиент 1 +نډ 1 +losti 1 +▁ऑ 1 +บุรี 1 +skóla 1 +ഠ 1 +umiem 1 +ႏွ 1 +▁invit 1 +UU 1 +▁lewe 1 +▁болады 1 +koop 1 +▁nerv 1 +posición 1 +杯 1 +▁Auch 1 +▁лише 1 +▁ofrece 1 +▁будзе 1 +宗 1 +▁किसी 1 +1.1 1 +▁περί 1 +▁Kali 1 +طو 1 +▁Lietuv 1 +kset 1 +泰 1 +▁koska 1 +とも 1 +▁einge 1 +▁माग 1 +▁несколько 1 +▁Беларусь 1 +价格 1 +▁Она 1 +▁Trong 1 +tänk 1 +ιμ 1 +вля 1 +tį 1 +估 1 +▁මැ 1 +▁वाले 1 +année 1 +gegeven 1 +хир 1 +▁organism 1 +▁өс 1 +ляет 1 +▁איי 1 +▁quand 1 +ମାନଙ୍କ 1 +جمع 1 +нө 1 +▁αυ 1 +طالب 1 +▁केन्द्र 1 +இ 1 +▁گرفت 1 +▁mitte 1 +लै 1 +▁постој 1 +▁још 1 +▁zelo 1 +▁Кыргызстан 1 +▁уста 1 +▁सन् 1 +▁kle 1 +пс 1 +▁penyakit 1 +▁защото 1 +▁ਕੀਤਾ 1 +ტრა 1 +▁સે 1 +▁μέσα 1 +喜歡 1 +▁був 1 +▁bizi 1 +▁membantu 1 +▁hạn 1 +▁prvo 1 +材料 1 +賣 1 +نە 1 +스타 1 +▁всегда 1 +pust 1 +▁kér 1 +owanych 1 +▁vật 1 +▁दुई 1 +ლობ 1 +valla 1 +huset 1 +ებელი 1 +▁vrijeme 1 +work 1 +▁pô 1 +Pre 1 +▁करता 1 +▁vizit 1 +▁kanal 1 +ుకున్న 1 +▁ajuda 1 +▁sendo 1 +植 1 +▁otros 1 +▁Telugu 1 +කෝ 1 +▁රම 1 +▁bilde 1 +場合は 1 +kuba 1 +likuwa 1 +▁შესახებ 1 +ाची 1 +ांच्या 1 +▁प्रमुख 1 +ξι 1 +Ба 1 +▁niż 1 +▁norge 1 +ছিল 1 +چر 1 +脑 1 +zeug 1 +▁hayo 1 +ນັກ 1 +шкі 1 +▁toutes 1 +▁cambio 1 +▁наши 1 +▁ያለ 1 +僅 1 +▁қазақ 1 +▁unik 1 +kå 1 +▁šir 1 +ъз 1 +KR 1 +лять 1 +▁भन्ने 1 +▁నుంచి 1 +▁Shah 1 +▁sahə 1 +រូប 1 +▁proper 1 +ljenje 1 +qin 1 +୭ 1 +▁Big 1 +гин 1 +▁sondern 1 +ここ 1 +▁mẹ 1 +▁رسول 1 +▁uče 1 +▁makanan 1 +seid 1 +ลอง 1 +▁уу 1 +▁Invest 1 +ມະ 1 +لل 1 +ਜ਼ਾ 1 +▁स्वा 1 +▁پاس 1 +рије 1 +▁leik 1 +ცემ 1 +▁interior 1 +▁svojim 1 +▁ପରେ 1 +ಗೂ 1 +pung 1 +苏 1 +sioni 1 +τσ 1 +തുടങ്ങ 1 +▁måned 1 +▁compete 1 +ฟรี 1 +▁عبد 1 +縣 1 +ႏွစ္ 1 +iyyat 1 +▁atë 1 +voer 1 +ប្ 1 +ථ 1 +▁еден 1 +▁nodig 1 +นอน 1 +កំ 1 +▁նախագահ 1 +▁while 1 +ყა 1 +▁ഇത് 1 +▁derfor 1 +рке 1 +获 1 +欧 1 +▁όμως 1 +мө 1 +اگ 1 +ावर 1 +▁jakie 1 +▁bosh 1 +віль 1 +冰 1 +▁tamin 1 +cznego 1 +ছা 1 +▁compra 1 +▁гре 1 +▁آمد 1 +шэ 1 +▁کنیم 1 +耳 1 +TUR 1 +കളെ 1 +户 1 +МО 1 +▁қол 1 +▁Tämä 1 +லாம் 1 +▁pagina 1 +कृ 1 +ובה 1 +TAL 1 +▁ciudad 1 +ász 1 +प्त 1 +น้อย 1 +ಏ 1 +سال 1 +▁እያ 1 +മാര് 1 +▁course 1 +▁عمران 1 +▁लक्ष 1 +ૈ 1 +lebih 1 +▁berke 1 +தோ 1 +伴 1 +מצא 1 +▁bình 1 +▁iştirak 1 +дела 1 +▁kalb 1 +შვ 1 +▁bina 1 +ങ്ങി 1 +ថ្មី 1 +▁नयाँ 1 +▁religi 1 +ತ್ತು 1 +เตอร์ 1 +fah 1 +ほど 1 +▁gain 1 +▁Gru 1 +▁доба 1 +▁begitu 1 +▁yük 1 +перед 1 +翻 1 +ساعد 1 +▁Porno 1 +ങ്ങളും 1 +▁баз 1 +bhar 1 +.01. 1 +▁När 1 +▁गरिएको 1 +فاع 1 +▁समाज 1 +▁concern 1 +▁چاہ 1 +ayotgan 1 +▁Ху 1 +گرد 1 +penda 1 +▁Cast 1 +ัต 1 +▁High 1 +సం 1 +陽 1 +▁próximo 1 +▁caracter 1 +▁mennesker 1 +hami 1 +хож 1 +▁sarà 1 +ലും 1 +คอ 1 +μπο 1 +െന്ന 1 +▁Emp 1 +龙 1 +细 1 +ျပည္ 1 +σταση 1 +▁улсын 1 +▁House 1 +业务 1 +վեց 1 +▁ისე 1 +လိုက္ 1 +ויות 1 +likult 1 +โรงแรม 1 +▁ընտր 1 +消息 1 +صار 1 +▁160 1 +ΙΑ 1 +പ്പോ 1 +▁akademi 1 +▁sinu 1 +iño 1 +▁State 1 +▁Concello 1 +▁economic 1 +▁meel 1 +夢 1 +balan 1 +ნია 1 +▁شوی 1 +nými 1 +▁تعداد 1 +எ 1 +スタ 1 +хар 1 +▁vaikka 1 +▁Бер 1 +овете 1 +ابت 1 +▁امروز 1 +▁qəbul 1 +▁estão 1 +▁حکم 1 +▁velit 1 +▁хамт 1 +▁Karl 1 +禁 1 +▁Tho 1 +▁فيها 1 +rën 1 +гран 1 +换 1 +вым 1 +▁хувь 1 +აა 1 +φι 1 +wasan 1 +▁børn 1 +▁spar 1 +▁bloc 1 +rust 1 +exp 1 +▁level 1 +āciju 1 +▁jossa 1 +արար 1 +mizi 1 +での 1 +▁општи 1 +кин 1 +matik 1 +entia 1 +inį 1 +▁փոխ 1 +량 1 +ඩ් 1 +бег 1 +abilirsiniz 1 +您的 1 +▁bereits 1 +▁दल 1 +▁средств 1 +рэс 1 +ەۋ 1 +▁turist 1 +▁диск 1 +▁تھا۔ 1 +fólk 1 +▁gravid 1 +▁particip 1 +環 1 +იმ 1 +▁Frei 1 +▁Fest 1 +▁عکس 1 +▁december 1 +▁depuis 1 +lerimiz 1 +কু 1 +▁Rio 1 +▁hỏi 1 +▁informasi 1 +ಸೂ 1 +პოლი 1 +bruk 1 +ඳු 1 +▁إذا 1 +▁federa 1 +積 1 +▁ביותר 1 +акты 1 +▁حساب 1 +▁formula 1 +▁sydd 1 +ਵਾਰ 1 +Ex 1 +aĵo 1 +wania 1 +斷 1 +спіль 1 +▁posebn 1 +чение 1 +手机 1 +Њ 1 +चि 1 +▁Stockholm 1 +▁மற்றும் 1 +▁mohl 1 +ацыі 1 +▁phụ 1 +▁lors 1 +▁mwy 1 +อะ 1 +▁après 1 +▁Há 1 +▁implement 1 +рып 1 +શિ 1 +coñece 1 +нове 1 +▁նշ 1 +једи 1 +vää 1 +ൂര് 1 +▁postup 1 +▁collect 1 +حديث 1 +ေန႔ 1 +▁filtr 1 +▁ଏବଂ 1 +들을 1 +▁შენ 1 +ိတ် 1 +ေါ 1 +▁Фе 1 +▁våra 1 +▁Петр 1 +цима 1 +ਸਰ 1 +جى 1 +操作 1 +▁hoy 1 +ىغا 1 +▁nueva 1 +უდ 1 +▁Hann 1 +நிலை 1 +šení 1 +총 1 +签 1 +▁පරි 1 +▁fiecare 1 +ሥራ 1 +▁bakal 1 +ኛው 1 +▁mampu 1 +ível 1 +ạt 1 +▁Bau 1 +▁ešte 1 +▁زیاد 1 +▁الاست 1 +▁sommer 1 +နှင့် 1 +▁ligne 1 +واقع 1 +mbuh 1 +овой 1 +జు 1 +müş 1 +лази 1 +~~ 1 +იანი 1 +vous 1 +лг 1 +▁organizacij 1 +حن 1 +LV 1 +▁kurie 1 +θούν 1 +▁непри 1 +▁refu 1 +▁км 1 +▁Mata 1 +▁været 1 +▁сайта 1 +Дж 1 +สมาชิก 1 +▁datos 1 +ಬಿ 1 +โม 1 +▁biasa 1 +簡 1 +雅 1 +▁بأن 1 +▁pueden 1 +ಚ್ಚ 1 +▁тема 1 +▁Nagy 1 +▁శ్రీ 1 +יני 1 +▁बताए 1 +▁cứ 1 +▁վրա 1 +entre 1 +▁ներկայաց 1 +那些 1 +ույց 1 +▁konuş 1 +վան 1 +▁mulai 1 +▁comercial 1 +▁osnov 1 +▁jenis 1 +▁نفر 1 +จังหวัด 1 +▁විසින් 1 +ಫ 1 +დარ 1 +stvu 1 +▁šp 1 +ские 1 +映 1 +дыр 1 +▁Sə 1 +ေစ 1 +ETA 1 +▁chuyên 1 +▁speciali 1 +ذهب 1 +▁yardım 1 +▁चौ 1 +충 1 +▁kapcsolat 1 +ଅ 1 +وٽ 1 +좋 1 +▁aldrig 1 +▁diplom 1 +liselt 1 +ବ୍ 1 +θεση 1 +ystä 1 +▁rakyat 1 +WI 1 +न्ति 1 +ىشى 1 +вч 1 +妹 1 +▁atunci 1 +365 1 +▁escola 1 +βολ 1 +▁registra 1 +ович 1 +▁країн 1 +▁නොව 1 +বাস 1 +如此 1 +▁Stadt 1 +▁stati 1 +をお 1 +▁ମୋ 1 +▁wykona 1 +▁size 1 +מרכז 1 +▁Efter 1 +▁мү 1 +▁سندس 1 +▁болно 1 +▁persoane 1 +పెట్ట 1 +倍 1 +▁Schw 1 +ապես 1 +▁Hrvat 1 +▁respekt 1 +最后 1 +▁Anders 1 +ຕະ 1 +▁veci 1 +▁தலை 1 +ಿರ 1 +▁लेकिन 1 +σια 1 +▁Comuni 1 +▁ضد 1 +▁müssen 1 +▁Ora 1 +▁sāk 1 +κλη 1 +rieš 1 +▁ఆయన 1 +ସ୍ଥ 1 +▁anders 1 +還有 1 +▁ನಮ್ಮ 1 +▁dựng 1 +▁dnia 1 +▁ಪ್ರತಿ 1 +vač 1 +▁čak 1 +▁Авто 1 +bg 1 +▁komunik 1 +▁mellan 1 +ගී 1 +middag 1 +▁hug 1 +ናት 1 +ಾಯ 1 +▁’’ 1 +ສໍາ 1 +तम 1 +лап 1 +örö 1 +trieb 1 +▁beaucoup 1 +酸 1 +ಎ 1 +اړ 1 +旅行 1 +ചി 1 +▁külön 1 +▁కోసం 1 +▁فوج 1 +üyü 1 +▁कॉ 1 +▁ahol 1 +انہ 1 +ARE 1 +▁order 1 +▁Galaxy 1 +ΕΙ 1 +пля 1 +lín 1 +▁групп 1 +ชุด 1 +검 1 +▁ಭಾರತ 1 +ючы 1 +▁metus 1 +▁prijav 1 +▁பல 1 +▁රති 1 +სთან 1 +politik 1 +тврд 1 +ਤਰ 1 +▁таких 1 +▁успе 1 +PER 1 +▁सबसे 1 +▁εγ 1 +▁card 1 +ડે 1 +▁пыта 1 +लाइ 1 +៨ 1 +▁bắt 1 +▁χρόνια 1 +▁پہلے 1 +СА 1 +▁आपल्या 1 +تۇ 1 +▁থাক 1 +故 1 +▁غذا 1 +ၿ 1 +dienst 1 +▁მან 1 +▁tank 1 +▁जग 1 +▁Open 1 +lerden 1 +क्क 1 +ბილ 1 +യില 1 +▁modelo 1 +▁մարդ 1 +мақ 1 +▁outro 1 +▁klein 1 +សង្ 1 +▁barədə 1 +تھ 1 +ింగ్ 1 +▁juba 1 +prop 1 +▁парламент 1 +▁따라 1 +▁информации 1 +دام 1 +ではない 1 +▁Adam 1 +ንግ 1 +▁жағдай 1 +해야 1 +▁gambar 1 +▁utama 1 +參 1 +▁ახალი 1 +▁fiind 1 +আ 1 +vič 1 +顧 1 +舒 1 +▁která 1 +talan 1 +næ 1 +볼 1 +ශ් 1 +KL 1 +յալ 1 +▁Familie 1 +ോട് 1 +zék 1 +stille 1 +ほ 1 +Ъ 1 +▁olema 1 +شل 1 +▁යන්න 1 +라이 1 +▁kilometr 1 +▁leto 1 +글 1 +▁वो 1 +วี 1 +фт 1 +muk 1 +foto 1 +rzę 1 +▁բաց 1 +▁Global 1 +▁learn 1 +▁እየ 1 +फि 1 +зия 1 +થા 1 +λω 1 +▁libero 1 +▁nơi 1 +ଟା 1 +轻 1 +▁лек 1 +Æ 1 +ന്റ 1 +▁kyllä 1 +▁dabei 1 +▁компании 1 +▁fari 1 +继续 1 +▁creati 1 +▁після 1 +ุ่ม 1 +stwo 1 +▁hét 1 +▁בק 1 +раў 1 +▁مؤ 1 +ወቅ 1 +gė 1 +▁styl 1 +▁vaca 1 +habi 1 +▁trung 1 +▁Ново 1 +må 1 +лян 1 +▁кез 1 +▁sesuai 1 +કે 1 +ਹੀ 1 +運動 1 +魔 1 +▁1989 1 +▁William 1 +laşma 1 +ьной 1 +ізації 1 +ፖ 1 +ಯೋ 1 +mico 1 +විය 1 +ື້ 1 +igung 1 +妻 1 +▁chuyển 1 +لاب 1 +▁hwn 1 +▁Centro 1 +▁texto 1 +时代 1 +Ver 1 +唱 1 +기업 1 +▁oči 1 +மு 1 +▁giao 1 +ଖା 1 +▁grave 1 +▁român 1 +ických 1 +הן 1 +field 1 +700 1 +ували 1 +ใบ 1 +▁simbol 1 +然后 1 +▁rendszer 1 +ลาย 1 +ிக்க 1 +▁varit 1 +▁materiale 1 +设备 1 +去年 1 +ingiz 1 +กลาง 1 +ឡើង 1 +məyə 1 +▁byla 1 +东西 1 +kové 1 +entra 1 +▁இர 1 +ОС 1 +ェ 1 +▁кандидат 1 +EU 1 +▁улс 1 +๋ 1 +▁mengenai 1 +ड़ा 1 +▁povas 1 +▁bruke 1 +ኘ 1 +这样的 1 +▁ساز 1 +masını 1 +▁parce 1 +▁trabaja 1 +▁вечер 1 +▁prieš 1 +报道 1 +▁అనే 1 +▁সম 1 +保障 1 +ፃ 1 +녀 1 +▁visto 1 +полит 1 +lân 1 +▁հիմն 1 +▁nchi 1 +▁nogle 1 +tığı 1 +看看 1 +નાં 1 +普通 1 +▁kazan 1 +▁keluarga 1 +េង 1 +ಟ್ಟಿ 1 +Ζ 1 +נער 1 +ভি 1 +▁Japan 1 +වෙන් 1 +▁säger 1 +临 1 +▁δύο 1 +▁days 1 +▁والد 1 +LY 1 +ផ 1 +▁Андр 1 +▁गरे 1 +▁move 1 +ზო 1 +ывать 1 +Բ 1 +▁хора 1 +▁bagian 1 +▁oktober 1 +полн 1 +كۈ 1 +saky 1 +гиз 1 +rzą 1 +bola 1 +▁είχε 1 +ଡା 1 +අ 1 +▁koulu 1 +ग्रह 1 +dék 1 +▁нещо 1 +تجرب 1 +▁اساس 1 +ჩი 1 +દેશ 1 +lár 1 +▁einige 1 +telli 1 +0.00 1 +ける 1 +នោះ 1 +▁ప్రా 1 +▁осы 1 +单位 1 +▁Qual 1 +.11. 1 +лок 1 +സ്റ്റ് 1 +дија 1 +▁intra 1 +== 1 +roka 1 +▁हामी 1 +իք 1 +▁možno 1 +▁sous 1 +ලෙ 1 +ମାନ 1 +tasun 1 +▁BiH 1 +▁програма 1 +▁estava 1 +وطن 1 +ကြောင်း 1 +▁thing 1 +мек 1 +▁projektu 1 +śnie 1 +▁giáo 1 +ዙ 1 +Ժ 1 +▁nhanh 1 +▁darbo 1 +ദാ 1 +▁besch 1 +▁ಬಂದ 1 +txa 1 +▁pjesë 1 +stīt 1 +फो 1 +ביל 1 +චාර 1 +▁počet 1 +स्त्र 1 +บท 1 +▁фото 1 +rique 1 +▁hafi 1 +▁vue 1 +弟 1 +旅游 1 +кти 1 +படி 1 +▁viime 1 +▁Rela 1 +▁שלא 1 +шча 1 +ЦИ 1 +喝 1 +щих 1 +भर 1 +▁рух 1 +▁bedste 1 +▁зүйл 1 +▁همراه 1 +ብረ 1 +▁محل 1 +▁આવી 1 +责任 1 +ювати 1 +▁amerikan 1 +▁لأن 1 +▁karo 1 +szint 1 +вари 1 +▁متن 1 +مثل 1 +▁μην 1 +EF 1 +ద్య 1 +▁совет 1 +▁féidir 1 +▁viņa 1 +▁blok 1 +▁tangan 1 +ഞ്ഞു 1 +▁тоже 1 +랑 1 +▁ಮೇಲೆ 1 +hej 1 +▁Tips 1 +tunk 1 +ਓ 1 +rād 1 +▁helye 1 +عام 1 +▁رسید 1 +▁ankaŭ 1 +liber 1 +▁alguns 1 +▁жү 1 +center 1 +লের 1 +▁പിന് 1 +ম্প 1 +▁व्यवस्था 1 +▁ڇڏي 1 +lago 1 +▁trei 1 +▁apabila 1 +ஜி 1 +▁hướng 1 +ėtų 1 +करी 1 +یاں 1 +▁Bundes 1 +ۋى 1 +▁сторон 1 +насць 1 +ৱ 1 +▁Teh 1 +ЛО 1 +▁света 1 +較 1 +▁might 1 +▁large 1 +schä 1 +ాను 1 +摩 1 +震 1 +▁Budapest 1 +ရီ 1 +ဆုံး 1 +завис 1 +ेशन 1 +▁egyik 1 +▁سابق 1 +▁всеки 1 +ಚಾರ 1 +dık 1 +ଣା 1 +▁Wij 1 +▁izay 1 +ເມືອງ 1 +▁nəticə 1 +roga 1 +▁mobile 1 +ಎಂ 1 +▁आफ्नो 1 +lıyor 1 +्छ 1 +רון 1 +ЕТ 1 +船 1 +硬 1 +▁schimb 1 +▁поступ 1 +▁времени 1 +MER 1 +軟 1 +रं 1 +▁firmy 1 +ryk 1 +ланд 1 +বু 1 +গু 1 +2019 1 +读 1 +गण 1 +ांचे 1 +▁Bill 1 +ဟု 1 +▁gennem 1 +▁дуже 1 +▁moderne 1 +tinka 1 +िन् 1 +▁ಸ್ವ 1 +ง่าย 1 +▁Now 1 +▁инс 1 +blik 1 +вялі 1 +▁exam 1 +▁està 1 +бележ 1 +ваў 1 +גב 1 +▁memor 1 +▁지난 1 +एं 1 +യുള്ള 1 +▁важно 1 +▁miele 1 +▁άλλο 1 +ළි 1 +тө 1 +▁literatur 1 +透過 1 +מית 1 +ದ್ಯ 1 +ဝင် 1 +ျခင္း 1 +▁Bila 1 +समेत 1 +▁എന്റെ 1 +њем 1 +වර් 1 +▁concept 1 +простран 1 +ൺ 1 +▁فکر 1 +▁compre 1 +▁قىلىش 1 +anggap 1 +ړه 1 +matu 1 +▁гара 1 +사업 1 +▁Restaurant 1 +sigt 1 +ոմ 1 +すると 1 +коў 1 +Не 1 +▁seksi 1 +bing 1 +ovým 1 +држи 1 +ترجم 1 +ప్పు 1 +▁circa 1 +koak 1 +• 1 +UNI 1 +円 1 +යෙ 1 +verse 1 +קשר 1 +▁የኢትዮጵያ 1 +结果 1 +בא 1 +gestellt 1 +▁encontrar 1 +▁350 1 +▁البر 1 +▁Dari 1 +▁kasva 1 +最大 1 +▁mois 1 +▁필요 1 +▁мемлекеттік 1 +▁belirt 1 +альных 1 +ической 1 +▁więc 1 +▁امنیت 1 +әрі 1 +▁Nulla 1 +ятся 1 +▁esim 1 +圈 1 +czyć 1 +▁Những 1 +־ 1 +εκ 1 +▁chứng 1 +▁Không 1 +▁cà 1 +јан 1 +जु 1 +ඩු 1 +▁હતો 1 +ΚΑ 1 +▁dejting 1 +tegn 1 +▁gondol 1 +▁قتل 1 +овски 1 +▁había 1 +ந்தி 1 +▁केले 1 +役 1 +মন 1 +ខ្មែរ 1 +izada 1 +ồ 1 +ෂ් 1 +кыр 1 +▁необхідн 1 +▁ceea 1 +კის 1 +▁ambiente 1 +▁kỳ 1 +סת 1 +ීය 1 +▁tuổi 1 +▁ವರ್ಷ 1 +▁świat 1 +▁કોઈ 1 +væ 1 +nikov 1 +▁şər 1 +wajib 1 +▁bør 1 +順 1 +戦 1 +მდე 1 +▁lång 1 +ൊക്കെ 1 +iston 1 +కుండా 1 +▁დაა 1 +▁δημ 1 +brauc 1 +▁Πολ 1 +意味 1 +▁leven 1 +ພາບ 1 +ディ 1 +保护 1 +เหตุ 1 +▁прекра 1 +▁Şu 1 +▁جاری 1 +▁Omrop 1 +▁Bộ 1 +▁computer 1 +▁đánh 1 +▁toegang 1 +லு 1 +ağa 1 +▁biznes 1 +以来 1 +によって 1 +▁berbagai 1 +▁személy 1 +▁प्राप्त 1 +知识 1 +کٹ 1 +▁Szer 1 +▁hilo 1 +ทั่ว 1 +▁thuật 1 +роч 1 +ชั้น 1 +خدم 1 +עובד 1 +zaji 1 +σή 1 +▁같은 1 +▁ନେଇ 1 +ீர் 1 +şî 1 +ాలని 1 +▁Press 1 +ఎ 1 +▁Основ 1 +▁dont 1 +ປະເທດ 1 +▁магазин 1 +▁coisa 1 +▁խոս 1 +▁Grad 1 +そして 1 +▁विशेष 1 +беж 1 +охо 1 +కర 1 +cykl 1 +▁modal 1 +不會 1 +.05. 1 +possibili 1 +▁smart 1 +רכב 1 +ნების 1 +▁elimina 1 +▁story 1 +៩ 1 +ጦ 1 +▁nghệ 1 +ALL 1 +իզ 1 +kvæ 1 +റെ 1 +អាច 1 +роў 1 +sedia 1 +麻 1 +术 1 +▁життя 1 +ریز 1 +▁contract 1 +പാട 1 +▁თქვენ 1 +ലം 1 +▁oyna 1 +▁Recht 1 +föld 1 +▁поле 1 +▁kurang 1 +▁heç 1 +▁açıl 1 +લિ 1 +ٹس 1 +▁Drag 1 +▁तत् 1 +யான 1 +▁همین 1 +ոյ 1 +ость 1 +είται 1 +ម៉ 1 +誰 1 +منطقة 1 +▁ứng 1 +ādī 1 +RIA 1 +ජන 1 +▁khả 1 +介绍 1 +▁traballo 1 +▁mają 1 +బా 1 +சை 1 +ശി 1 +▁nouveau 1 +альних 1 +▁Pont 1 +▁jira 1 +▁preko 1 +ですね 1 +▁ersten 1 +▁إلا 1 +だと 1 +რების 1 +сій 1 +νου 1 +▁тест 1 +▁تنها 1 +ਾਨ 1 +▁volunt 1 +▁decidi 1 +하며 1 +したい 1 +താണ് 1 +נצ 1 +▁იქ 1 +券 1 +द्वारा 1 +بين 1 +ЛЕ 1 +клуч 1 +▁கட 1 +ը՝ 1 +యో 1 +▁가장 1 +שוב 1 +不仅 1 +▁įsi 1 +▁olmak 1 +toiminta 1 +▁mateix 1 +ላት 1 +lmaz 1 +ក្នុង 1 +▁sahaja 1 +ච්ච 1 +ಟಾ 1 +ழை 1 +▁čist 1 +ół 1 +▁кори 1 +▁ничего 1 +▁identifica 1 +Չ 1 +เพียง 1 +לן 1 +▁לאחר 1 +▁должны 1 +hält 1 +▁ਜੋ 1 +▁Giá 1 +▁cư 1 +øst 1 +▁wî 1 +جعل 1 +▁weekend 1 +▁انتخابات 1 +ხმ 1 +άμε 1 +▁gjorde 1 +կին 1 +ชอบ 1 +▁novin 1 +ыў 1 +melding 1 +วัด 1 +▁provincia 1 +▁iOS 1 +!!!!! 1 +ático 1 +Euro 1 +ėje 1 +▁පසු 1 +麗 1 +▁bruker 1 +▁lloc 1 +ด์ 1 +▁ಬರ 1 +ロー 1 +▁Well 1 +tividade 1 +番 1 +ходить 1 +▁म्हण 1 +፥ 1 +▁внимание 1 +▁صفح 1 +اسة 1 +▁lauk 1 +▁permanent 1 +แม 1 +形成 1 +▁teknologi 1 +▁nữ 1 +▁termina 1 +雖然 1 +ਨੇ 1 +▁समाचार 1 +▁internacional 1 +હી 1 +▁livet 1 +▁организации 1 +тивно 1 +bė 1 +▁пора 1 +サービス 1 +▁discuss 1 +▁schnell 1 +கொள்ள 1 +iškai 1 +zwi 1 +▁rzecz 1 +樓 1 +ረው 1 +▁tamam 1 +都不 1 +ਪਾ 1 +ยก 1 +▁meie 1 +▁προς 1 +▁virkelig 1 +▁روش 1 +▁низ 1 +▁sterk 1 +ជាមួយ 1 +▁Fir 1 +随着 1 +▁potenti 1 +חוק 1 +стори 1 +脱 1 +ጊ 1 +arbeta 1 +ಿದ್ದು 1 +MK 1 +▁bár 1 +▁United 1 +ለን 1 +▁relevant 1 +▁Most 1 +▁nutri 1 +ഴു 1 +ثار 1 +▁તમે 1 +விட்ட 1 +▁sistemi 1 +ไม้ 1 +▁проблеми 1 +СР 1 +▁valid 1 +ცნობ 1 +严 1 +▁механ 1 +โก 1 +简 1 +ພວກ 1 +▁svět 1 +剧 1 +伝 1 +▁والی 1 +▁انقلاب 1 +앞 1 +되었 1 +مكن 1 +ወን 1 +▁sand 1 +شاهد 1 +蘭 1 +▁ನೀ 1 +▁pamoja 1 +▁contre 1 +schein 1 +شهد 1 +▁Без 1 +障 1 +▁شوند 1 +▁Gall 1 +ቸውን 1 +▁құра 1 +▁çıkar 1 +▁анализ 1 +▁यू 1 +விட 1 +▁ነበር 1 +▁Kā 1 +內容 1 +▁Fred 1 +ическа 1 +дії 1 +▁verður 1 +زيد 1 +▁hospital 1 +投資 1 +נח 1 +▁меди 1 +▁stund 1 +Тө 1 +だろう 1 +ərək 1 +рова 1 +houden 1 +ฉัน 1 +▁şu 1 +tionem 1 +▁complete 1 +ноў 1 +▁nouvelle 1 +▁Life 1 +▁rock 1 +▁annat 1 +▁सुरु 1 +เหมือน 1 +▁많은 1 +▁Nje 1 +biera 1 +▁لها 1 +▁tark 1 +▁definitiv 1 +込 1 +快速 1 +▁Är 1 +▁движе 1 +ljeno 1 +овать 1 +ੋਰ 1 +当然 1 +▁segunda 1 +改善 1 +억 1 +しか 1 +▁gaar 1 +فور 1 +▁Stro 1 +శి 1 +▁ജോ 1 +นอก 1 +▁bylo 1 +2005 1 +ظهر 1 +宣 1 +ΤΟ 1 +▁Кан 1 +තන 1 +▁richtig 1 +▁hü 1 +රුව 1 +▁فرد 1 +▁Văn 1 +▁mumkin 1 +▁Vår 1 +▁nhỏ 1 +▁ugyan 1 +▁selepas 1 +▁3.0 1 +▁დიდი 1 +▁Ég 1 +▁عدم 1 +▁šport 1 +龍 1 +▁koll 1 +▁koha 1 +mhair 1 +adresse 1 +ፈል 1 +্রা 1 +她的 1 +▁Rock 1 +ເຈົ້າ 1 +▁Mann 1 +jón 1 +้อน 1 +дать 1 +ုိင္ 1 +ايت 1 +ობით 1 +▁fikk 1 +กุ 1 +▁konkurs 1 +▁chance 1 +▁ਸਮ 1 +нце 1 +агч 1 +է 1 +्ती 1 +▁alatt 1 +ТУ 1 +ວງ 1 +▁Anne 1 +ίνη 1 +▁suso 1 +▁ainsi 1 +வரை 1 +▁funktion 1 +βου 1 +จา 1 +ಚ್ 1 +ųjų 1 +征 1 +封 1 +▁peso 1 +áló 1 +▁Acest 1 +үз 1 +дог 1 +cích 1 +▁uzun 1 +ումներ 1 +യ്ക്ക് 1 +▁Casino 1 +දිය 1 +այում 1 +σίας 1 +กัด 1 +▁mono 1 +▁demande 1 +▁açık 1 +▁birlikte 1 +iller 1 +გზა 1 +라고 1 +▁हाल 1 +קש 1 +SEN 1 +TB 1 +▁uporablja 1 +សម្រាប់ 1 +目标 1 +基金 1 +GY 1 +▁Saat 1 +▁perquè 1 +▁Business 1 +miesz 1 +låt 1 +▁органи 1 +ML 1 +▁mesa 1 +▁Cri 1 +පති 1 +லும் 1 +ፎ 1 +нуть 1 +▁luôn 1 +▁پوء 1 +ception 1 +▁конце 1 +弱 1 +▁그리고 1 +song 1 +llisen 1 +▁झाले 1 +▁minimal 1 +▁práce 1 +ccio 1 +▁pili 1 +ർത്ത 1 +trans 1 +ಿದರು 1 +▁kelle 1 +пуск 1 +ülés 1 +欲 1 +▁потому 1 +▁vídeo 1 +▁kjer 1 +▁رئیس 1 +חור 1 +ധാ 1 +▁وقال 1 +১৭ 1 +▁бий 1 +иялық 1 +▁Jadi 1 +kkaa 1 +ponent 1 +▁бұл 1 +ZO 1 +ணம் 1 +หมาย 1 +▁innlegg 1 +▁Donec 1 +ведения 1 +▁ئاي 1 +許多 1 +▁wonder 1 +कुमार 1 +▁پنج 1 +ערי 1 +▁modu 1 +▁donne 1 +Õ 1 +▁строи 1 +▁recupera 1 +▁sekitar 1 +تىن 1 +バー 1 +▁انهن 1 +PEN 1 +▁contro 1 +ecta 1 +තාව 1 +▁Tôi 1 +њето 1 +යින් 1 +▁omdat 1 +暴 1 +絕 1 +▁оқу 1 +пай 1 +רכי 1 +şehir 1 +▁করুন 1 +▁الحر 1 +ሉት 1 +身体 1 +▁Европа 1 +ներով 1 +ంగ్ 1 +ខេត្ត 1 +▁افزایش 1 +конкрет 1 +▁odbor 1 +ичних 1 +שהו 1 +▁participar 1 +的工作 1 +▁komisi 1 +יבה 1 +cast 1 +▁заяви 1 +▁جون 1 +łuż 1 +▁dieses 1 +める 1 +▁iaitu 1 +▁promet 1 +эргэ 1 +فاق 1 +▁trợ 1 +▁лучше 1 +▁ئۇيغۇر 1 +▁좋은 1 +лаш 1 +▁Green 1 +PK 1 +ēta 1 +▁leuk 1 +兵 1 +▁bron 1 +▁sedikit 1 +िस 1 +だけで 1 +σθ 1 +முறை 1 +หลัก 1 +▁സെ 1 +▁문제 1 +หาก 1 +פק 1 +ميز 1 +おり 1 +garan 1 +▁tục 1 +▁heute 1 +baha 1 +moguć 1 +▁Paulo 1 +ξει 1 +بير 1 +▁zaradi 1 +ВИ 1 +▁Иван 1 +ование 1 +γει 1 +▁genau 1 +▁Prav 1 +▁mentre 1 +納 1 +လည္း 1 +औ 1 +▁spus 1 +ტერ 1 +ਗੇ 1 +▁DAN 1 +▁heil 1 +进入 1 +▁అన్న 1 +▁ደግሞ 1 +седа 1 +更新 1 +▁anul 1 +一樣 1 +▁આવે 1 +▁xã 1 +▁qof 1 +િંગ 1 +▁Kosovës 1 +ਣੀ 1 +▁فيه 1 +لە 1 +▁گهر 1 +铁 1 +ಸು 1 +ነገ 1 +▁хө 1 +▁Gaeilge 1 +▁Orang 1 +▁رہی 1 +ИС 1 +ದಿಂದ 1 +▁tích 1 +هما 1 +halb 1 +▁vaid 1 +▁осуществ 1 +კავშირ 1 +களில் 1 +▁بھارت 1 +▁programme 1 +▁descri 1 +▁صفحه 1 +цев 1 +▁आता 1 +▁හොඳ 1 +▁Bạn 1 +▁समस्या 1 +▁одржа 1 +▁läbi 1 +▁σύ 1 +▁mellor 1 +訊 1 +idio 1 +▁Başkanı 1 +▁existen 1 +▁Ανα 1 +▁ולא 1 +σί 1 +▁macam 1 +方便 1 +▁modell 1 +షి 1 +ช่วง 1 +wur 1 +עור 1 +藥 1 +тари 1 +बे 1 +举 1 +зви 1 +ৎ 1 +▁американ 1 +▁უფრო 1 +▁concert 1 +ឆ្នាំ 1 +RP 1 +なので 1 +ريد 1 +▁veldig 1 +ntang 1 +宿 1 +▁කියල 1 +▁personer 1 +สมัคร 1 +సూ 1 +▁گھر 1 +άζει 1 +▁кампа 1 +▁दिल्ली 1 +နှစ် 1 +患者 1 +yicha 1 +▁quindi 1 +▁מג 1 +▁Finn 1 +ργα 1 +▁વર્ષ 1 +▁impact 1 +▁family 1 +▁ਇਕ 1 +银行 1 +▁ofert 1 +ерлер 1 +ONG 1 +▁dnes 1 +一点 1 +អំ 1 +▁Esto 1 +羅 1 +▁امر 1 +dzīvo 1 +χε 1 +▁විට 1 +kū 1 +scription 1 +lasan 1 +ించి 1 +迎 1 +▁FOTO 1 +▁છો 1 +▁диплом 1 +▁energet 1 +dakı 1 +▁Sama 1 +ώσεις 1 +▁başka 1 +strict 1 +దేశ 1 +ozott 1 +奶 1 +telji 1 +資訊 1 +[3] 1 +Profes 1 +▁hết 1 +gląd 1 +▁hộ 1 +▁associa 1 +শে 1 +▁Pé 1 +▁номер 1 +پرس 1 +▁diğer 1 +breyt 1 +ვლი 1 +秀 1 +՛ 1 +▁mạnh 1 +への 1 +DB 1 +▁merasa 1 +▁yhteis 1 +▁ilmu 1 +ான் 1 +集团 1 +واجه 1 +μορφ 1 +tiszt 1 +▁१९ 1 +出了 1 +▁turisti 1 +▁makin 1 +شور 1 +▁seluruh 1 +▁lagun 1 +▁kiến 1 +REN 1 +סה 1 +ମାନେ 1 +ERI 1 +たら 1 +▁буй 1 +lengkap 1 +▁xidmət 1 +▁فإن 1 +學習 1 +ылган 1 +▁проводи 1 +ിക്കുന്നു 1 +检 1 +▁correct 1 +▁December 1 +应用 1 +בח 1 +▁correspond 1 +▁જાણ 1 +tirish 1 +▁gjatë 1 +▁ਤਾਂ 1 +גיש 1 +ಯೇ 1 +jící 1 +pian 1 +▁իսկ 1 +డానికి 1 +▁krav 1 +ເມ 1 +ព្រះ 1 +ချက် 1 +▁დამ 1 +ጌ 1 +▁അനു 1 +▁requi 1 +▁Nếu 1 +пыт 1 +期待 1 +▁continue 1 +▁якщо 1 +臺 1 +▁കുട്ടി 1 +ılmış 1 +žino 1 +▁একটি 1 +▁berada 1 +թի 1 +практ 1 +χη 1 +▁nettsted 1 +▁услуги 1 +рыс 1 +▁կողմից 1 +വ്യ 1 +▁гэр 1 +ซิ 1 +чите 1 +义 1 +ğin 1 +涉 1 +▁Escort 1 +īgs 1 +▁නැත 1 +ຕິ 1 +些 1 +ωση 1 +ណ្ឌ 1 +mään 1 +▁kerajaan 1 +▁proiect 1 +▁fisk 1 +ובר 1 +▁تیم 1 +ଞ୍ଚ 1 +ಸ್ಟ್ 1 +▁будь 1 +▁инте 1 +ყოფ 1 +徒 1 +▁kuitenkin 1 +▁mūsų 1 +▁США 1 +접 1 +друже 1 +وسی 1 +řad 1 +▁rodin 1 +▁zwischen 1 +▁hope 1 +кажу 1 +▁festa 1 +▁perform 1 +▁possibile 1 +▁පෙර 1 +▁kishte 1 +כא 1 +しても 1 +▁gør 1 +▁повідом 1 +pendi 1 +▁ditë 1 +▁prøve 1 +plex 1 +▁nepri 1 +▁Dank 1 +でしょうか 1 +▁personlig 1 +▁gerçek 1 +▁امکان 1 +▁España 1 +्नु 1 +▁bala 1 +大量 1 +შვილ 1 +▁حول 1 +▁بشكل 1 +ຮ່ວມ 1 +ាស់ 1 +▁Master 1 +বন্ধ 1 +वारी 1 +▁minutes 1 +▁nové 1 +ഭാ 1 +媒体 1 +ଶୁ 1 +▁einmal 1 +ٹو 1 +واد 1 +▁পে 1 +▁финансов 1 +РУ 1 +vance 1 +▁belə 1 +GT 1 +▁demokrati 1 +לון 1 +ທິ 1 +▁இருந்த 1 +ក្រុម 1 +▁Ook 1 +▁μία 1 +лэн 1 +▁tradition 1 +▁کړئ 1 +station 1 +▁настав 1 +▁власт 1 +▁ሁሉ 1 +▁asocia 1 +▁такі 1 +▁Universitet 1 +▁кир 1 +кључ 1 +িং 1 +ණය 1 +päivä 1 +▁түш 1 +„ 1 +▁segue 1 +1000 1 +▁prese 1 +▁вэ 1 +▁çocuk 1 +▁Elektro 1 +▁مرکز 1 +▁қатыс 1 +▁napis 1 +▁इन् 1 +▁üret 1 +▁Long 1 +▁företag 1 +▁shtet 1 +ెంట్ 1 +ኢትዮጵያ 1 +ខាង 1 +ຊີ 1 +同じ 1 +bong 1 +▁potenc 1 +▁නැහැ 1 +▁hecho 1 +ವಾರ 1 +▁gure 1 +▁አስተ 1 +वत 1 +▁Minh 1 +▁हाम्रो 1 +一天 1 +መድ 1 +▁bonne 1 +บอก 1 +ፀ 1 +ಕು 1 +dangan 1 +ուշ 1 +▁সম্ 1 +▁હતા 1 +▁James 1 +▁sklep 1 +ধান 1 +ρχ 1 +द्व 1 +ควร 1 +池 1 +वेद 1 +vétel 1 +pisan 1 +▁Opp 1 +▁کیلئے 1 +នី 1 +يلي 1 +▁Από 1 +▁kolor 1 +▁fini 1 +▁להיות 1 +あなた 1 +တော့ 1 +▁људи 1 +рев 1 +▁utilizza 1 +kirina 1 +▁đặc 1 +▁berikut 1 +entreprise 1 +áról 1 +▁должно 1 +iyada 1 +начал 1 +広 1 +▁प्रधानमन्त्री 1 +Ğ 1 +▁развој 1 +ਪੀ 1 +ೀಯ 1 +먹 1 +▁باعث 1 +▁števil 1 +ीन 1 +▁кезде 1 +▁evitar 1 +ప్ప 1 +ٌ 1 +▁thay 1 +▁വന്ന 1 +▁կապ 1 +▁температур 1 +мыз 1 +▁issue 1 +▁გაი 1 +jąc 1 +อ่าน 1 +сны 1 +სურ 1 +поч 1 +实际 1 +的发展 1 +పం 1 +▁оваа 1 +▁भो 1 +▁sering 1 +▁различни 1 +▁1970 1 +▁sicher 1 +▁Pic 1 +ግባ 1 +▁fél 1 +▁אשר 1 +▁Lind 1 +ԱԿ 1 +▁partie 1 +食品 1 +▁profesion 1 +▁درباره 1 +▁Waziri 1 +τικού 1 +▁Website 1 +电影 1 +▁skriver 1 +▁వారి 1 +trin 1 +▁человека 1 +관리 1 +ፓ 1 +vaju 1 +▁위한 1 +जय 1 +▁actividades 1 +之间 1 +▁persoas 1 +▁rigtig 1 +▁էին 1 +▁тебе 1 +mping 1 +▁මහතා 1 +தம் 1 +▁տարի 1 +▁лиц 1 +▁plante 1 +ರಲ್ಲಿ 1 +▁cause 1 +感觉 1 +▁mandat 1 +▁Alam 1 +▁roll 1 +ическо 1 +Str 1 +ለሁ 1 +คง 1 +ёт 1 +▁Συν 1 +▁քաղաք 1 +্ট 1 +▁Page 1 +▁Email 1 +舉 1 +потреб 1 +▁patient 1 +▁konstru 1 +jóð 1 +στό 1 +▁सिंह 1 +үк 1 +ರಾಜ 1 +باح 1 +овите 1 +▁mukha 1 +浪 1 +推薦 1 +▁legisla 1 +▁پاسخ 1 +▁frum 1 +tuju 1 +▁gdzie 1 +▁hoog 1 +დენ 1 +ENG 1 +▁хэмжээ 1 +▁skirt 1 +கார 1 +▁одного 1 +怪 1 +얼 1 +▁recursos 1 +▁idag 1 +▁നിന്നും 1 +νων 1 +distan 1 +ishwa 1 +ლს 1 +▁elabora 1 +മില്ല 1 +币 1 +▁farklı 1 +▁Kunden 1 +こう 1 +▁որը 1 +▁2,5 1 +ଓ 1 +ۇپ 1 +တို႔ 1 +ైన 1 +▁մասն 1 +ក់ 1 +сак 1 +ουλ 1 +ităţi 1 +▁đạo 1 +▁Digital 1 +irati 1 +▁figura 1 +▁அந்த 1 +ಳು 1 +▁биле 1 +ាំ 1 +ște 1 +ိုက္ 1 +дължи 1 +ფო 1 +▁lapse 1 +▁municipal 1 +▁będą 1 +ګړ 1 +टन 1 +▁اعلام 1 +▁bruge 1 +▁शिव 1 +▁When 1 +▁billig 1 +課 1 +楼 1 +▁서울 1 +చర్ 1 +▁स्थान 1 +▁потом 1 +▁қо 1 +၉ 1 +მენტ 1 +康 1 +kosten 1 +▁اعلان 1 +▁basa 1 +ြန္ 1 +▁audio 1 +▁hazırla 1 +増 1 +թեր 1 +▁energie 1 +कल्प 1 +▁destaca 1 +ိုက် 1 +▁गर्नु 1 +课 1 +▁include 1 +▁አባ 1 +lið 1 +▁часто 1 +方向 1 +പ്പെടുത്ത 1 +үнүн 1 +יפה 1 +▁počas 1 +ಗು 1 +积极 1 +ਵਾਂ 1 +เริ่ม 1 +يلة 1 +▁aynı 1 +▁बढ़ 1 +▁Mỹ 1 +▁രൂപ 1 +▁സഹ 1 +သံ 1 +чө 1 +▁fæ 1 +گران 1 +▁Hvor 1 +ത്തില 1 +▁English 1 +Χ 1 +ტიკ 1 +TION 1 +ทํางาน 1 +▁lekker 1 +gerð 1 +▁своей 1 +៊ 1 +schließ 1 +တူ 1 +ຄໍາ 1 +லம் 1 +顾 1 +▁bố 1 +▁pensi 1 +άκι 1 +▁Christian 1 +untu 1 +문화 1 +았 1 +▁proba 1 +聖 1 +▁hore 1 +▁أحد 1 +▁रख 1 +▁Your 1 +▁Vest 1 +▁धेरै 1 +医院 1 +▁ocupa 1 +关注 1 +▁potom 1 +द्य 1 +▁également 1 +▁Một 1 +όλ 1 +tref 1 +VR 1 +可是 1 +りました 1 +澳 1 +▁которая 1 +վար 1 +▁vårt 1 +ળા 1 +δύ 1 +▁encontra 1 +▁مہ 1 +▁Beste 1 +τρι 1 +▁outra 1 +願 1 +よく 1 +케 1 +ניים 1 +кө 1 +▁নিয়ে 1 +▁შემ 1 +▁Rusiya 1 +▁əlaqə 1 +▁դատ 1 +TEL 1 +γεν 1 +drift 1 +ເຮັດ 1 +▁xây 1 +▁गते 1 +▁Thomas 1 +tyä 1 +ئو 1 +▁הזה 1 +▁drei 1 +telen 1 +▁խաղ 1 +ద్ధ 1 +▁اجتماعی 1 +ודי 1 +ੱਸ 1 +็ก 1 +heng 1 +▁warto 1 +▁George 1 +▁আস 1 +meklē 1 +เปลี่ยน 1 +▁ಆದರೆ 1 +报告 1 +▁блок 1 +▁alors 1 +一家 1 +瑞 1 +▁personale 1 +iệu 1 +▁Pakistan 1 +แต่ง 1 +ాం 1 +ዳን 1 +রাজ 1 +nţa 1 +▁kandidat 1 +▁اقدام 1 +ירים 1 +പ്പി 1 +▁ilgi 1 +▁expect 1 +тични 1 +waarde 1 +ധ്യ 1 +▁කිරීමට 1 +▁kateri 1 +▁გამ 1 +ических 1 +▁стане 1 +銀行 1 +▁εμπ 1 +▁penis 1 +ም። 1 +▁astfel 1 +voja 1 +▁zoals 1 +拥有 1 +פן 1 +▁facer 1 +▁comprend 1 +▁стране 1 +裁 1 +▁контакт 1 +कारी 1 +智能 1 +▁smak 1 +▁Amazon 1 +DM 1 +▁biến 1 +▁suite 1 +рых 1 +▁പര 1 +▁ನನ್ನ 1 +▁orice 1 +▁всё 1 +▁niveau 1 +其實 1 +ंची 1 +照片 1 +ஷ் 1 +▁With 1 +ലു 1 +ัม 1 +▁اثر 1 +▁Ağ 1 +צות 1 +RG 1 +擊 1 +สอง 1 +ર્ટ 1 +▁servis 1 +▁संस्था 1 +▁Stan 1 +▁terme 1 +▁պահ 1 +нско 1 +▁herri 1 +▁меѓу 1 +▁ঢাকা 1 +▁ବର୍ଷ 1 +werp 1 +▁jogo 1 +रम 1 +▁مهر 1 +▁अनुसार 1 +达到 1 +150 1 +▁concret 1 +▁العربية 1 +▁Türkiyə 1 +ូរ 1 +的问题 1 +▁जाता 1 +နိုင်ငံ 1 +कट 1 +▁पोस्ट 1 +▁procedur 1 +覺得 1 +κρατ 1 +▁дур 1 +と思う 1 +▁въпрос 1 +ಟ್ಟು 1 +▁Waxaa 1 +عهد 1 +قدس 1 +wę 1 +▁Fahr 1 +▁معلومات 1 +▁هناك 1 +▁gelen 1 +లతో 1 +게임 1 +少し 1 +▁शेयर 1 +праў 1 +的地方 1 +塔 1 +▁barang 1 +เกี่ยวกับ 1 +دخل 1 +hør 1 +▁бэ 1 +▁lét 1 +လို့ 1 +▁قرآن 1 +져 1 +OW 1 +ଦ୍ଧ 1 +▁покуп 1 +DK 1 +▁yek 1 +▁सब 1 +סל 1 +染 1 +▁virus 1 +ಓ 1 +ទៀត 1 +▁oportunidad 1 +ଜନ 1 +▁komanda 1 +▁nuovo 1 +▁servei 1 +ത്തിനു 1 +ндер 1 +rovna 1 +加入 1 +▁Situ 1 +潮 1 +จุด 1 +▁lisää 1 +▁1-2 1 +▁đồ 1 +▁held 1 +ਉ 1 +štvo 1 +TES 1 +▁सांग 1 +补 1 +治療 1 +▁చేస 1 +▁wurden 1 +లం 1 +▁dulu 1 +▁personnes 1 +▁तरह 1 +NET 1 +▁υπό 1 +▁schi 1 +σετε 1 +чку 1 +そんな 1 +כלל 1 +տան 1 +▁Роз 1 +wsze 1 +▁Сам 1 +قرار 1 +▁एवं 1 +игра 1 +azioa 1 +ുകൾ 1 +견 1 +ફો 1 +▁সব 1 +ရဲ့ 1 +აცია 1 +期間 1 +ಳ್ಳ 1 +▁Street 1 +▁Industri 1 +▁աշխատանք 1 +mendu 1 +▁mums 1 +လက္ 1 +▁όλα 1 +ລົງ 1 +▁buah 1 +▁gym 1 +▁Archi 1 +вищ 1 +ồn 1 +ንስ 1 +▁dalle 1 +丁 1 +▁déjà 1 +ล่า 1 +▁שלו 1 +till 1 +▁pense 1 +▁calidad 1 +▁experiment 1 +treb 1 +బో 1 +状 1 +муш 1 +▁kdy 1 +មា 1 +ực 1 +▁svoju 1 +ថ្ងៃទី 1 +▁Tahun 1 +▁жара 1 +▁PRI 1 +▁Upp 1 +替 1 +jedná 1 +▁جهت 1 +නායක 1 +ijoje 1 +负责 1 +ביט 1 +▁360 1 +ські 1 +▁glede 1 +老师 1 +ував 1 +▁тој 1 +wood 1 +▁κάνει 1 +клон 1 +▁mellem 1 +▁електро 1 +▁giảm 1 +izzazione 1 +▁pakai 1 +պետ 1 +▁нико 1 +▁Եր 1 +ilmiş 1 +▁چهار 1 +▁phục 1 +TRO 1 +માર 1 +▁žá 1 +▁ελλην 1 +▁intent 1 +דעת 1 +აგ 1 +ჯი 1 +ಂಪ 1 +▁چرا 1 +▁protiv 1 +事情 1 +▁अहिले 1 +अघि 1 +ത്തിലെ 1 +▁série 1 +▁đủ 1 +одо 1 +వ్య 1 +▁produkter 1 +గ్ర 1 +攝 1 +აშვილი 1 +▁ایجاد 1 +ância 1 +ัญ 1 +inizi 1 +थे 1 +馆 1 +▁маалымат 1 +▁пайдалан 1 +▁përdor 1 +ໃຊ້ 1 +▁phá 1 +تهم 1 +demokrat 1 +నో 1 +▁تلاش 1 +లోని 1 +வன் 1 +销售 1 +vezető 1 +vill 1 +ਇ 1 +▁ପ୍ରତି 1 +ัล 1 +нікі 1 +скор 1 +▁galima 1 +▁महाराष्ट्र 1 +ંક 1 +▁gard 1 +▁þeir 1 +▁mahal 1 +▁երկ 1 +厚 1 +▁Suomen 1 +▁food 1 +▁Euroopa 1 +stoff 1 +免費 1 +▁actua 1 +▁Azərbaycanda 1 +▁направлен 1 +▁mong 1 +ေအာင္ 1 +▁wiele 1 +▁цял 1 +ЕК 1 +▁bërë 1 +▁प्रयोग 1 +▁zákon 1 +▁apresenta 1 +▁precio 1 +遭 1 +牙 1 +ຕັ້ງ 1 +▁سطح 1 +▁planta 1 +▁(...) 1 +▁sådan 1 +▁वाट 1 +緊 1 +▁здесь 1 +อิน 1 +PM 1 +roep 1 +▁පමණ 1 +▁ئۆز 1 +▁વાત 1 +▁skład 1 +▁դեպք 1 +▁Господ 1 +врат 1 +ууда 1 +▁jangan 1 +▁قطع 1 +▁پاڻ 1 +ارو 1 +混 1 +描 1 +▁hiểu 1 +broj 1 +▁altijd 1 +▁SEO 1 +▁व्यक्ति 1 +巧 1 +▁Store 1 +▁davlat 1 +▁यांनी 1 +તે 1 +年度 1 +maskin 1 +حزب 1 +իա 1 +τικών 1 +ियो 1 +▁մեծ 1 +heure 1 +▁لڳ 1 +▁фотограф 1 +▁estaba 1 +▁صنعت 1 +▁כמה 1 +块 1 +▁aumenta 1 +უქ 1 +▁नव 1 +טא 1 +▁nisu 1 +▁முதல் 1 +ስር 1 +่อง 1 +▁Terra 1 +альний 1 +เธอ 1 +▁macht 1 +冬 1 +▁սահման 1 +لائ 1 +ybė 1 +▁сала 1 +DAR 1 +▁ذات 1 +मुख 1 +เคย 1 +ಯಿಂದ 1 +險 1 +చ్ 1 +▁lehen 1 +โล 1 +▁तरी 1 +▁પડ 1 +成本 1 +而是 1 +▁албан 1 +▁reserva 1 +tavad 1 +左右 1 +គ្នា 1 +▁انہوں 1 +ფორმ 1 +ื้อ 1 +▁Эр 1 +液 1 +▁samtidig 1 +تخصص 1 +▁גדול 1 +▁deixa 1 +társ 1 +шение 1 +▁האי 1 +ۈپ 1 +tjänst 1 +ukka 1 +2004 1 +ieť 1 +▁informatie 1 +▁உட 1 +čuje 1 +rygg 1 +▁Artikel 1 +ΑΣ 1 +თხო 1 +స్త 1 +ಸಾ 1 +滑 1 +▁തീ 1 +▁اسم 1 +ització 1 +чив 1 +вое 1 +▁ಪು 1 +ությունները 1 +▁pêş 1 +▁motivo 1 +ଗ୍ 1 +▁dialog 1 +ສ້າງ 1 +▁θέλ 1 +ეთი 1 +▁osoba 1 +ັ້ນ 1 +▁vaxt 1 +եպ 1 +▁account 1 +▁paper 1 +▁אותו 1 +കൂട 1 +▁piedāvā 1 +maður 1 +▁güven 1 +▁이상 1 +▁tahay 1 +ਨੂੰ 1 +ધી 1 +▁സര് 1 +行为 1 +nutí 1 +▁만들 1 +زور 1 +ladı 1 +technic 1 +▁fonction 1 +mpre 1 +דת 1 +▁nič 1 +▁बैठक 1 +▁đặt 1 +mynd 1 +▁đăng 1 +kən 1 +быт 1 +筆 1 +▁possono 1 +▁novembre 1 +ڙو 1 +▁why 1 +▁құр 1 +స్తే 1 +ரே 1 +สด 1 +כע 1 +▁гарга 1 +▁الحق 1 +▁കഴിഞ്ഞ 1 +▁върху 1 +మని 1 +為了 1 +retning 1 +甲 1 +ے۔ 1 +ёр 1 +▁बै 1 +▁thanh 1 +ຊາດ 1 +رغ 1 +▁bych 1 +▁Що 1 +わけ 1 +▁शब्द 1 +▁অভি 1 +▁നിന്ന് 1 +णि 1 +▁behov 1 +ੀਆ 1 +ická 1 +ፌ 1 +እስ 1 +moqda 1 +проб 1 +▁minimum 1 +▁ചേ 1 +ALE 1 +တင္ 1 +鮮 1 +▁اڳ 1 +hotel 1 +很好 1 +▁semakin 1 +男性 1 +▁Кара 1 +▁Там 1 +▁מז 1 +▁þeim 1 +sókn 1 +▁landet 1 +імді 1 +思想 1 +ຕ່າງ 1 +▁certifica 1 +▁tvar 1 +▁kommt 1 +▁стру 1 +▁Pier 1 +۰۰ 1 +▁عدالت 1 +▁جنوب 1 +ทอง 1 +▁droit 1 +▁Informationen 1 +▁qytet 1 +▁without 1 +▁היו 1 +ήρ 1 +шення 1 +ока 1 +vention 1 +ไร 1 +džiu 1 +ចំណ 1 +▁bhf 1 +▁zoek 1 +รณ์ 1 +fundi 1 +享 1 +▁հր 1 +harap 1 +就可以 1 +▁tarde 1 +ၾကာ 1 +▁facile 1 +יהם 1 +▁digər 1 +ዋል። 1 +▁both 1 +تابع 1 +决定 1 +Die 1 +▁szeret 1 +▁krás 1 +纪 1 +▁മൂ 1 +żą 1 +▁കഥ 1 +এস 1 +▁Αγ 1 +▁camera 1 +zón 1 +▁baby 1 +ಮೀ 1 +▁experiencia 1 +لۇق 1 +▁RSS 1 +▁због 1 +▁цвет 1 +shing 1 +BT 1 +სას 1 +습 1 +静 1 +јќи 1 +▁pessoa 1 +▁mimo 1 +ძალ 1 +marin 1 +▁ediyor 1 +แบ 1 +Ձ 1 +▁regard 1 +各种 1 +▁המש 1 +▁obten 1 +歐 1 +▁vanlig 1 +▁ብቻ 1 +▁error 1 +løsning 1 +ज्ञ 1 +urinn 1 +číta 1 +ылып 1 +▁giorno 1 +▁halua 1 +过去 1 +راد 1 +▁versch 1 +只能 1 +antoj 1 +之後 1 +斗 1 +▁bỏ 1 +▁Chatroulette 1 +▁henkilö 1 +▁Portugal 1 +ங்களை 1 +აუ 1 +▁elegant 1 +والي 1 +НУ 1 +▁мүмкін 1 +блю 1 +ற்ப 1 +ワ 1 +時代 1 +ovou 1 +sats 1 +▁vivi 1 +BM 1 +▁afla 1 +élé 1 +▁خیلی 1 +უხ 1 +▁своје 1 +▁znan 1 +▁מאוד 1 +ştî 1 +購入 1 +istus 1 +ැයි 1 +suhte 1 +▁հետո 1 +智 1 +▁واري 1 +▁sposób 1 +▁ძალიან 1 +▁هاي 1 +KY 1 +darbi 1 +INE 1 +▁лекар 1 +▁زمین 1 +处理 1 +陳 1 +▁sekund 1 +೧ 1 +▁Intel 1 +とても 1 +▁jól 1 +чески 1 +▁поради 1 +▁dhéanamh 1 +wą 1 +իստ 1 +▁Улсын 1 +▁happen 1 +▁plek 1 +▁bruger 1 +dzenie 1 +іння 1 +▁केही 1 +▁Вер 1 +▁ብዙ 1 +CL 1 +ክር 1 +שור 1 +ковић 1 +▁yolu 1 +▁wirklich 1 +ଘ 1 +▁bizim 1 +▁durant 1 +飯店 1 +ಡಿಯ 1 +пей 1 +▁olmuş 1 +свід 1 +▁груп 1 +▁لري 1 +をして 1 +▁шығар 1 +▁позволя 1 +migrant 1 +fræði 1 +อล 1 +ვად 1 +▁академ 1 +▁Akademi 1 +єдн 1 +▁ļoti 1 +▁Sof 1 +▁могат 1 +培训 1 +▁ያለው 1 +多年 1 +gū 1 +र्न 1 +bour 1 +тично 1 +əstə 1 +▁baga 1 +▁області 1 +سلط 1 +▁another 1 +बु 1 +▁ඔවුන් 1 +▁125 1 +▁kiedy 1 +▁adapta 1 +állítás 1 +ግል 1 +▁faj 1 +Ż 1 +▁оказа 1 +igheter 1 +ření 1 +▁fundit 1 +▁lucru 1 +▁것이다 1 +▁American 1 +▁இட 1 +głos 1 +▁kehit 1 +▁hende 1 +shën 1 +ठी 1 +skich 1 +ശ്ര 1 +迪 1 +▁Bö 1 +▁Przy 1 +▁ինչպես 1 +nieku 1 +▁oferta 1 +▁khí 1 +▁लोगों 1 +▁бүт 1 +ച്ചി 1 +يقة 1 +▁تواند 1 +ющим 1 +▁invent 1 +▁Гра 1 +▁خون 1 +割 1 +骨 1 +삼 1 +μαν 1 +LM 1 +▁ملت 1 +▁tehdä 1 +▁eskorte 1 +▁luna 1 +▁gdje 1 +РС 1 +▁ultra 1 +▁první 1 +къс 1 +Ց 1 +극 1 +️ 1 +▁absol 1 +を受け 1 +▁Гру 1 +▁fantast 1 +에서는 1 +▁dyr 1 +έμ 1 +営 1 +▁köt 1 +வர்கள் 1 +скую 1 +▁đình 1 +▁smartphone 1 +▁xil 1 +სის 1 +PN 1 +masing 1 +ából 1 +▁Ivan 1 +▁деятельности 1 +▁आरोप 1 +ែន 1 +તાં 1 +▁धर्म 1 +▁danske 1 +робіт 1 +▁שני 1 +보고 1 +▁præ 1 +▁Вар 1 +▁половин 1 +▁kohë 1 +▁Central 1 +chine 1 +sýn 1 +▁لگ 1 +▁fals 1 +ОТ 1 +plads 1 +▁աշխատ 1 +ศาสตร์ 1 +▁mash 1 +క్స్ 1 +▁hivyo 1 +▁Belgi 1 +گیر 1 +▁Job 1 +▁Selain 1 +悪 1 +▁кыргыз 1 +ốt 1 +实施 1 +▁Hän 1 +▁večer 1 +▁sĩ 1 +ኞች 1 +▁Срби 1 +ແລະ 1 +ственно 1 +积 1 +raži 1 +码 1 +ဴ 1 +ئون 1 +দ্ 1 +▁spal 1 +祝 1 +ទ្ធ 1 +మం 1 +верх 1 +just 1 +ماي 1 +脸 1 +큰 1 +▁critic 1 +▁մտ 1 +вог 1 +презент 1 +秋 1 +▁mendapat 1 +▁یوه 1 +▁Tut 1 +овые 1 +▁ටික 1 +▁maggior 1 +ଉ 1 +šanai 1 +▁Till 1 +▁complex 1 +ڏا 1 +▁ممکن 1 +▁હતું 1 +前に 1 +▁szyb 1 +أت 1 +ημ 1 +▁arbets 1 +▁Tema 1 +ková 1 +ρύ 1 +อัน 1 +лыш 1 +lerinden 1 +▁должен 1 +下来 1 +▁nende 1 +ратура 1 +araq 1 +이나 1 +خط 1 +педи 1 +電子 1 +لون 1 +အတွက် 1 +比赛 1 +超过 1 +građ 1 +▁гарант 1 +ਾਉਣ 1 +КУ 1 +▁giorni 1 +פרס 1 +ഇ 1 +▁motiva 1 +عق 1 +لر 1 +▁kvinner 1 +▁ഇട 1 +ชน 1 +кара 1 +pír 1 +▁گرفته 1 +▁yüz 1 +หญิง 1 +▁μικρ 1 +ներն 1 +਼ 1 +fyll 1 +你们 1 +もう 1 +▁هئي 1 +▁تحقیق 1 +▁kompleks 1 +ใส่ 1 +ដា 1 +▁kopi 1 +乳 1 +ród 1 +ஸ 1 +ДУ 1 +zbek 1 +▁Teatr 1 +oase 1 +▁panel 1 +▁എഴുത 1 +хам 1 +応 1 +▁чалавек 1 +ফি 1 +▁usar 1 +ايي 1 +▁tiết 1 +续 1 +นาน 1 +審 1 +人は 1 +▁నేను 1 +्री 1 +مثال 1 +▁парк 1 +เนื้อ 1 +▁շրջան 1 +ગુજરાત 1 +дегі 1 +ضح 1 +▁druga 1 +ények 1 +لارنىڭ 1 +នឹង 1 +▁കൈ 1 +▁طریق 1 +▁cứu 1 +রের 1 +តី 1 +▁시작 1 +▁آگ 1 +ΤΑ 1 +まだ 1 +ន្ត 1 +સ્થ 1 +МЕ 1 +▁доход 1 +فرنس 1 +firma 1 +▁exemplo 1 +▁humor 1 +▁повод 1 +▁ڪئي 1 +▁Secret 1 +▁nhiệm 1 +▁szükség 1 +leiding 1 +שמו 1 +யோ 1 +糖 1 +▁gần 1 +▁жаңа 1 +▁مطلب 1 +▁weil 1 +▁Якщо 1 +▁Prima 1 +具体 1 +ுள்ளது 1 +冠 1 +谁 1 +ေရာ 1 +▁yung 1 +ડો 1 +▁koju 1 +▁sorun 1 +▁didn 1 +ตุ 1 +แก่ 1 +τής 1 +全部 1 +▁Né 1 +▁decide 1 +岸 1 +ペ 1 +▁کامل 1 +▁decora 1 +▁piir 1 +▁zurück 1 +▁Ју 1 +▁salut 1 +виж 1 +กํา 1 +มอง 1 +чать 1 +▁đưa 1 +▁offentlig 1 +χή 1 +пълни 1 +▁pisa 1 +▁хорош 1 +നീ 1 +▁گھ 1 +▁azal 1 +暖 1 +▁natürlich 1 +▁cổ 1 +חיל 1 +▁negeri 1 +▁आपको 1 +▁гэсэн 1 +क्टर 1 +▁nguyên 1 +▁regn 1 +▁nossa 1 +efter 1 +철 1 +▁між 1 +ţional 1 +شهر 1 +▁diversi 1 +ផល 1 +▁среди 1 +▁extern 1 +▁slab 1 +▁koke 1 +▁Cup 1 +пря 1 +▁provin 1 +ચાર 1 +DIA 1 +▁εκεί 1 +ጠቅ 1 +ただ 1 +▁bayan 1 +▁ефекти 1 +ਕੋ 1 +▁خاطر 1 +▁Obama 1 +宜 1 +▁până 1 +írás 1 +显示 1 +▁Melayu 1 +▁menarik 1 +Щ 1 +mızı 1 +НС 1 +త్రి 1 +价值 1 +食べ 1 +▁ଲୋକ 1 +▁ہوئی 1 +чество 1 +▁játék 1 +qish 1 +▁Lê 1 +▁GR 1 +xwe 1 +лөр 1 +抓 1 +퍼 1 +وسي 1 +多少 1 +▁từng 1 +воль 1 +岛 1 +▁QU 1 +谷 1 +▁برگزار 1 +▁mulighed 1 +▁καθώς 1 +յի 1 +योजन 1 +ilishi 1 +daftar 1 +▁Raja 1 +▁käi 1 +▁योजना 1 +குறி 1 +▁tentu 1 +▁ocen 1 +ilmesi 1 +បណ្ 1 +▁verder 1 +▁Вам 1 +ተር 1 +▁kiện 1 +▁Rod 1 +ِّ 1 +يمة 1 +▁visual 1 +ודה 1 +ਵਾਲ 1 +▁statu 1 +▁आवश्यक 1 +载 1 +싶 1 +0,00 1 +▁വൈ 1 +FU 1 +▁לנו 1 +istoj 1 +▁fli 1 +نویس 1 +▁gradu 1 +ေလာ 1 +▁afecta 1 +▁있어 1 +ႈ 1 +ອກ 1 +lendir 1 +षण 1 +▁فعال 1 +എന് 1 +人士 1 +ટો 1 +گۈ 1 +一位 1 +БИ 1 +▁kanske 1 +ľov 1 +ומה 1 +LOG 1 +альным 1 +▁2.0 1 +ஊ 1 +▁dönem 1 +മുഖ 1 +▁కొత్త 1 +rangan 1 +▁serio 1 +ਹੁ 1 +ngkap 1 +ခ်င္ 1 +μέν 1 +梦 1 +صلاح 1 +γου 1 +ಂಚ 1 +ကြီး 1 +▁уг 1 +ឆ្ 1 +tamine 1 +យ៉ាង 1 +▁rajon 1 +скр 1 +▁diskut 1 +▁Juma 1 +လိ 1 +▁vuosi 1 +させて 1 +▁grado 1 +▁heller 1 +對於 1 +▁ആദ്യ 1 +feld 1 +ющий 1 +▁Şə 1 +Lİ 1 +ขน 1 +▁steht 1 +▁ўз 1 +▁всичко 1 +▁сделать 1 +▁kurz 1 +कडे 1 +▁الذ 1 +▁tenta 1 +▁gøre 1 +▁każdy 1 +nicy 1 +Tra 1 +cznym 1 +gtig 1 +▁tiên 1 +▁javno 1 +▁NATO 1 +τια 1 +जू 1 +▁finner 1 +▁30% 1 +▁fug 1 +Ֆ 1 +▁gadu 1 +νης 1 +▁പേ 1 +▁edilməsi 1 +▁concentra 1 +▁Belediye 1 +とか 1 +ებზე 1 +▁require 1 +ांत 1 +設定 1 +▁يتم 1 +▁których 1 +ווער 1 +根本 1 +私は 1 +entzia 1 +▁neuen 1 +▁ავტო 1 +▁დღეს 1 +প্র 1 +▁அதி 1 +▁байр 1 +παιδ 1 +▁joten 1 +▁روان 1 +ప్ర 1 +რმა 1 +חשוב 1 +రెడ్డి 1 +▁Një 1 +▁fiscal 1 +Google 1 +ատար 1 +▁bekend 1 +▁behöver 1 +▁लोग 1 +цё 1 +可能性 1 +google 1 +▁ਲੋਕ 1 +ϊκ 1 +ပုံ 1 +ソ 1 +然而 1 +▁شریف 1 +actie 1 +աբան 1 +レー 1 +▁kapital 1 +සක් 1 +▁проведен 1 +▁більше 1 +алтын 1 +두 1 +жава 1 +理由 1 +▁custo 1 +ගෙන් 1 +▁podemos 1 +ੰਡ 1 +▁София 1 +▁desenvolve 1 +▁lợi 1 +▁tashkil 1 +▁nő 1 +rash 1 +шылық 1 +▁јавно 1 +▁kilka 1 +起來 1 +▁اندر 1 +收入 1 +▁आर्थिक 1 +▁tələb 1 +дэн 1 +iausiai 1 +▁живота 1 +▁کسان 1 +jön 1 +▁нийт 1 +▁предложен 1 +स्तो 1 +tutako 1 +▁succes 1 +rød 1 +▁Ukrain 1 +ească 1 +зија 1 +न्या 1 +擔 1 +ỹ 1 +ຽນ 1 +थो 1 +▁цьому 1 +▁Федерации 1 +စဥ္ 1 +▁опит 1 +ೂರು 1 +Shop 1 +ších 1 +▁kamar 1 +ဥ 1 +šče 1 +անալ 1 +▁ζωή 1 +town 1 +RY 1 +魚 1 +▁එක් 1 +минал 1 +niž 1 +schreib 1 +ผ้า 1 +▁trud 1 +клик 1 +лиги 1 +inę 1 +αζ 1 +благодар 1 +ակից 1 +dych 1 +範 1 +▁گوش 1 +gner 1 +.4. 1 +▁Нај 1 +▁eshte 1 +▁муж 1 +▁چل 1 +patu 1 +▁Comment 1 +ไล 1 +▁provoca 1 +állás 1 +促 1 +▁odio 1 +乘 1 +라는 1 +▁సమ 1 +▁verdade 1 +яць 1 +▁Musik 1 +കം 1 +▁kawasan 1 +▁Они 1 +▁دوم 1 +▁повтор 1 +▁cửa 1 +Ĉ 1 +టం 1 +▁получен 1 +wili 1 +نگر 1 +經濟 1 +ثلاث 1 +▁обществен 1 +▁kodu 1 +GEN 1 +▁фактор 1 +域 1 +ອີ 1 +キャ 1 +tijd 1 +შო 1 +tomat 1 +▁була 1 +经营 1 +ілді 1 +开展 1 +ւ 1 +ωμα 1 +ទឹក 1 +▁ಹಿಂ 1 +▁водо 1 +ხმარ 1 +kļu 1 +ပြော 1 +effekt 1 +▁процедур 1 +▁ඉදිරි 1 +▁mieszka 1 +▁ଆଜି 1 +ရဲ 1 +▁Při 1 +ื่อ 1 +ичен 1 +andro 1 +ይል 1 +ැති 1 +▁تاريخ 1 +▁eğitim 1 +▁Partner 1 +▁صلى 1 +ອອກ 1 +ELA 1 +▁ଅନୁ 1 +▁uzņēm 1 +▁hormon 1 +▁kompani 1 +SN 1 +მინ 1 +ພິ 1 +謝 1 +קול 1 +▁ашиг 1 +▁നല്ല 1 +▁ہوتا 1 +راجع 1 +▁ниво 1 +▁aliaj 1 +фил 1 +fadh 1 +▁viser 1 +▁Anton 1 +ξαν 1 +▁системи 1 +cî 1 +юсь 1 +▁costa 1 +▁ତାଙ୍କ 1 +陈 1 +▁doua 1 +வரும் 1 +▁байдаг 1 +▁остана 1 +▁हुन् 1 +▁Kalau 1 +▁қолдан 1 +▁نقش 1 +▁öğren 1 +梅 1 +▁cáo 1 +▁gây 1 +▁الثاني 1 +पति 1 +▁studie 1 +学院 1 +▁നേര 1 +sättning 1 +▁निर्वाचन 1 +▁पार 1 +▁participant 1 +ຕາ 1 +వ్ 1 +▁geldi 1 +▁fără 1 +▁турган 1 +աջ 1 +гуул 1 +▁adopt 1 +TR 1 +μου 1 +алга 1 +そこ 1 +ിപ്പിക്ക 1 +გარ 1 +▁хор 1 +▁mogą 1 +输 1 +▁reading 1 +▁әр 1 +▁graag 1 +續 1 +▁resulta 1 +tempor 1 +▁чрез 1 +階 1 +▁qualquer 1 +▁دلیل 1 +ေပ 1 +TK 1 +▁veces 1 +ੱਧ 1 +幼 1 +▁small 1 +▁laŭ 1 +ဆောင် 1 +???? 1 +कुल 1 +fatta 1 +ισμός 1 +▁Dating 1 +玉 1 +▁футбол 1 +▁convoca 1 +fyn 1 +▁होगा 1 +କ୍ତ 1 +▁looking 1 +▁miljon 1 +▁Amma 1 +▁према 1 +繁 1 +▁Hä 1 +▁konnte 1 +不得 1 +وجود 1 +証 1 +▁оның 1 +ตอบ 1 +▁Bag 1 +زاد 1 +▁Romania 1 +STO 1 +дія 1 +তার 1 +tøj 1 +ുകയും 1 +▁consequat 1 +▁resist 1 +ሚያ 1 +▁использован 1 +사이트 1 +▁նախարար 1 +▁daxil 1 +ctic 1 +መሰ 1 +ຄາ 1 +ۇرۇ 1 +taget 1 +▁ਬਣ 1 +方は 1 +angkat 1 +▁краін 1 +▁Albert 1 +▁oltre 1 +اڭ 1 +또 1 +▁steeds 1 +▁ٻي 1 +బ్బ 1 +RAT 1 +▁Azərbaycanın 1 +▁komma 1 +தாக 1 +▁tvrd 1 +বো 1 +▁thư 1 +▁Simon 1 +икалық 1 +▁आधार 1 +ანა 1 +tumia 1 +年前 1 +▁talde 1 +ämä 1 +ობას 1 +▁ընդ 1 +▁بررسی 1 +▁solicita 1 +▁багато 1 +ศึกษา 1 +▁Θε 1 +鼓 1 +▁hjemme 1 +ករ 1 +▁কোন 1 +KP 1 +шће 1 +▁آغاز 1 +ражда 1 +的重要 1 +▁pamat 1 +解決 1 +▁ಅಂತ 1 +▁hinna 1 +▁sorte 1 +▁Dunia 1 +▁конечно 1 +▁نمایش 1 +iyoruz 1 +्दा 1 +بلغ 1 +▁bahasa 1 +련 1 +വു 1 +▁získa 1 +▁اصلی 1 +▁בכ 1 +▁राह 1 +▁piano 1 +かもしれません 1 +Љ 1 +поред 1 +ไหน 1 +▁short 1 +▁lug 1 +латын 1 +▁Preis 1 +▁piac 1 +▁ଉପ 1 +ੋਲ 1 +▁አብ 1 +▁දේ 1 +ující 1 +▁classe 1 +tório 1 +▁obec 1 +မျိုး 1 +▁Organiza 1 +ോള 1 +ימה 1 +賞 1 +.5. 1 +▁abge 1 +grind 1 +▁svojo 1 +υπουργ 1 +▁кое 1 +▁духов 1 +▁bởi 1 +▁хэр 1 +▁מנ 1 +thair 1 +▁ôl 1 +ळे 1 +▁hjem 1 +▁лишь 1 +▁wengi 1 +ලී 1 +முக 1 +▁guide 1 +Ք 1 +техник 1 +효 1 +▁њихов 1 +▁layihə 1 +బంధ 1 +최 1 +監 1 +ባቸው 1 +▁ravi 1 +▁solution 1 +ரோ 1 +▁емес 1 +▁उद् 1 +▁mục 1 +▁Donald 1 +ត់ 1 +▁segít 1 +厂 1 +겨 1 +▁cult 1 +▁oferi 1 +▁সময় 1 +▁луѓе 1 +▁järjest 1 +▁часов 1 +刷 1 +丽 1 +rrera 1 +август 1 +altra 1 +MAS 1 +▁livre 1 +振 1 +▁nàng 1 +träg 1 +ført 1 +▁бъдат 1 +ojmë 1 +kanak 1 +▁daerah 1 +ەم 1 +φέρει 1 +▁όσο 1 +ffet 1 +的事情 1 +ליי 1 +洛 1 +▁ruim 1 +ټر 1 +XXX 1 +▁සිට 1 +▁každý 1 +▁tất 1 +▁педагог 1 +つけ 1 +想到 1 +cë 1 +寄 1 +줄 1 +ರಣ 1 +ेगा 1 +▁சொல்ல 1 +▁página 1 +▁muslim 1 +▁खो 1 +ยอด 1 +▁kapit 1 +ലൈ 1 +യര് 1 +పర్ 1 +ръч 1 +享受 1 +ציע 1 +▁উদ্ 1 +దో 1 +▁necesar 1 +▁kultūr 1 +ቷ 1 +▁afirma 1 +▁pravo 1 +▁kasu 1 +andin 1 +▁Multi 1 +▁розвитку 1 +წო 1 +ാണെന്ന 1 +▁אך 1 +▁qanun 1 +▁Российской 1 +▁ارتباط 1 +ಬಹುದು 1 +▁skrev 1 +▁ಮುಂದ 1 +佳 1 +ąż 1 +พัฒนา 1 +▁ремонт 1 +吸引 1 +▁geld 1 +▁nincs 1 +▁канал 1 +ଭି 1 +НД 1 +Ղ 1 +▁vždy 1 +मुळे 1 +راق 1 +▁പേര 1 +કેટ 1 +loq 1 +▁kirjoit 1 +ቀር 1 +▁punya 1 +▁această 1 +▁همچنین 1 +▁రాష్ట్ర 1 +камі 1 +进一步 1 +брани 1 +▁đời 1 +You 1 +ително 1 +ψε 1 +▁thuộc 1 +▁celor 1 +▁жаткан 1 +▁పార్టీ 1 +ימים 1 +▁Δια 1 +▁elev 1 +▁šī 1 +▁største 1 +▁office 1 +ବାକୁ 1 +▁chí 1 +иск 1 +▁chiến 1 +வின் 1 +ໃຈ 1 +دفع 1 +વાની 1 +kedés 1 +ולי 1 +ሎች 1 +▁चाल 1 +čić 1 +czeń 1 +▁views 1 +τρέ 1 +tunut 1 +▁residen 1 +рушен 1 +▁ekspert 1 +▁morgen 1 +ສຸດ 1 +صالح 1 +▁түсі 1 +kazuje 1 +▁musta 1 +ไอ 1 +▁فلم 1 +れている 1 +દુ 1 +億 1 +▁Στο 1 +▁túl 1 +ವ್ 1 +▁Suid 1 +▁Portal 1 +ກໍ 1 +核心 1 +dėti 1 +րթ 1 +▁drugo 1 +න්ගේ 1 +▁Santiago 1 +ിക്കുക 1 +រក 1 +▁особи 1 +▁proposta 1 +מנו 1 +▁värld 1 +დია 1 +ద్ర 1 +▁પછી 1 +дати 1 +верш 1 +ัส 1 +മുള്ള 1 +▁በእ 1 +培 1 +▁misli 1 +▁чад 1 +θηκαν 1 +▁관련 1 +ரும் 1 +ண்டி 1 +▁seminar 1 +▁İlham 1 +ítő 1 +▁vieta 1 +▁حالت 1 +▁почти 1 +▁shaq 1 +દિ 1 +▁करना 1 +ਲੋ 1 +▁آهنگ 1 +力量 1 +นี 1 +▁ilyen 1 +悉 1 +▁Human 1 +▁newydd 1 +▁dəfə 1 +▁سیاست 1 +סמ 1 +லே 1 +▁велики 1 +١ 1 +ចំនួន 1 +لىقى 1 +चो 1 +▁sadece 1 +▁dituzte 1 +▁kyn 1 +tamaan 1 +โปร 1 +▁ඉන් 1 +▁build 1 +▁tuleb 1 +峰 1 +ਰੂ 1 +▁això 1 +မူ 1 +▁ulko 1 +ญา 1 +Ђ 1 +▁ወይም 1 +▁punct 1 +▁ਕਰੋ 1 +▁jezik 1 +rsat 1 +籍 1 +လည်း 1 +ілген 1 +їв 1 +▁לכל 1 +▁Class 1 +▁giver 1 +▁pracovn 1 +▁vui 1 +▁đâu 1 +▁Mill 1 +▁според 1 +電影 1 +▁طبق 1 +通知 1 +ujejo 1 +kohta 1 +▁realizza 1 +衛 1 +FT 1 +▁بے 1 +▁brz 1 +▁спів 1 +ുത 1 +ज् 1 +经验 1 +Ư 1 +Ξ 1 +▁tincidunt 1 +मौ 1 +▁szerep 1 +▁izany 1 +λία 1 +▁ارسال 1 +›› 1 +päev 1 +มีการ 1 +▁sulle 1 +▁termék 1 +oksen 1 +▁معامل 1 +▁Ling 1 +敢 1 +rūp 1 +kúp 1 +▁правила 1 +▁начина 1 +▁stare 1 +mağa 1 +▁Tirk 1 +ଦେଶ 1 +usega 1 +海外 1 +ίσει 1 +ତୁ 1 +กล่าว 1 +▁వార్తలు 1 +😃 1 +ບັນດາ 1 +▁tjetër 1 +▁Få 1 +대로 1 +▁والع 1 +պի 1 +▁جوان 1 +▁шинэ 1 +▁адамдар 1 +人員 1 +▁ಇಲ್ಲ 1 +▁proyecto 1 +▁σήμερα 1 +▁женщин 1 +▁സിനിമ 1 +▁කිසි 1 +▁olvas 1 +▁பெண் 1 +▁عليها 1 +АМ 1 +టో 1 +পর 1 +יית 1 +▁अग 1 +▁Εκ 1 +คุ 1 +尊 1 +なければ 1 +▁대해 1 +iseksi 1 +▁Hij 1 +ដី 1 +▁Haber 1 +▁relax 1 +▁όχι 1 +љив 1 +වරයා 1 +ენი 1 +γνωσ 1 +▁छु 1 +竞争 1 +▁локал 1 +▁партнер 1 +▁نرم 1 +▁പൂ 1 +▁قائم 1 +ျပန္ 1 +▁anlam 1 +จํานวน 1 +აციის 1 +селен 1 +▁deixar 1 +▁avait 1 +▁trebui 1 +πλη 1 +greg 1 +▁დასა 1 +श्व 1 +▁بهتر 1 +召 1 +卖 1 +▁Bagi 1 +▁Ты 1 +かけ 1 +▁ludzi 1 +▁xác 1 +বর্ 1 +روز 1 +לוג 1 +▁नस 1 +になった 1 +ဒီ 1 +主义 1 +▁volume 1 +很大 1 +kjent 1 +▁optimal 1 +▁стил 1 +▁සම්බන්ධ 1 +▁tradicional 1 +▁ఉంది 1 +▁profund 1 +መራ 1 +фік 1 +imeve 1 +▁televisi 1 +▁हुई 1 +▁Вели 1 +▁posiada 1 +▁yaptı 1 +קת 1 +▁любов 1 +쓰 1 +락 1 +▁nghiệm 1 +ต่างๆ 1 +▁Monte 1 +undang 1 +ванні 1 +▁aprob 1 +▁інших 1 +▁имеет 1 +ေဆာင္ 1 +၍ 1 +▁ניתן 1 +▁هنر 1 +ებოდა 1 +▁Text 1 +কের 1 +▁χωρίς 1 +ਿਤ 1 +▁dlh 1 +יסט 1 +▁rezult 1 +▁хотя 1 +紙 1 +필 1 +คู่ 1 +▁मराठी 1 +▁követ 1 +ਗਰ 1 +ією 1 +уються 1 +гийг 1 +ቢያ 1 +rozum 1 +த்துக் 1 +▁թվականի 1 +▁որպես 1 +通常 1 +ურად 1 +▁Somaliland 1 +▁bastante 1 +ഷി 1 +ۇم 1 +▁előtt 1 +附 1 +നായ 1 +▁respectiv 1 +▁nuwe 1 +▁ڪنهن 1 +▁situaci 1 +▁први 1 +▁beslut 1 +▁similar 1 +ստի 1 +צא 1 +▁Gör 1 +莫 1 +▁møte 1 +אנחנו 1 +▁घटना 1 +ภาค 1 +▁execut 1 +▁lavora 1 +暗 1 +▁współ 1 +కాల 1 +үрө 1 +سئل 1 +▁cú 1 +чыць 1 +▁ಮನೆ 1 +▁جائیں 1 +▁Điều 1 +лүк 1 +пры 1 +観 1 +ถาม 1 +INT 1 +▁پولیس 1 +▁khiến 1 +▁responsable 1 +▁मृत्यु 1 +اقة 1 +ಕರ್ 1 +靈 1 +ിട്ട 1 +Qarabağ 1 +VEN 1 +ekkel 1 +▁naturlig 1 +▁pogled 1 +▁خطر 1 +τυπ 1 +qon 1 +▁miatt 1 +▁ISO 1 +▁түз 1 +पट 1 +▁sillä 1 +ค้า 1 +եյ 1 +▁vedno 1 +ηθεί 1 +ஞ 1 +טור 1 +劳 1 +每一 1 +▁حرف 1 +стоян 1 +ગે 1 +▁Khi 1 +vých 1 +தமிழ 1 +ባል 1 +▁болот 1 +áciu 1 +▁مخالف 1 +miljø 1 +ыми 1 +▁mengikut 1 +▁José 1 +ተው 1 +なくて 1 +啦 1 +▁njerëz 1 +karan 1 +▁tuntu 1 +റോ 1 +▁سلامت 1 +ITE 1 +स्म 1 +▁энерг 1 +▁rhai 1 +▁aparat 1 +▁tačiau 1 +▁કરે 1 +šnje 1 +▁നിര് 1 +ందని 1 +чына 1 +▁strate 1 +▁זאת 1 +mıştır 1 +▁ŝi 1 +▁පිරි 1 +뉴스 1 +ตรง 1 +ічних 1 +▁cómo 1 +schau 1 +勇 1 +應該 1 +ujte 1 +▁blowjob 1 +▁bagaimana 1 +▁ସମ୍ 1 +▁propon 1 +დაც 1 +roll 1 +زوج 1 +▁câu 1 +дөө 1 +▁Beliau 1 +▁раздел 1 +работка 1 +圍 1 +東京 1 +கர் 1 +дүү 1 +قە 1 +▁Road 1 +лични 1 +ИЗ 1 +vatel 1 +▁wuxuu 1 +▁хүч 1 +▁fisi 1 +îya 1 +▁मला 1 +▁εξα 1 +▁Или 1 +▁مدیر 1 +택 1 +▁χώρα 1 +申请 1 +按照 1 +▁미국 1 +▁urmă 1 +дър 1 +ęcia 1 +▁Македон 1 +▁νέο 1 +ន្ទ 1 +▁three 1 +лета 1 +ством 1 +Ô 1 +ዬ 1 +నూ 1 +សុខ 1 +▁iyong 1 +▁fácil 1 +▁وهي 1 +සර 1 +空間 1 +АЗ 1 +▁ചില 1 +عتبر 1 +trekk 1 +▁þeirra 1 +ālu 1 +▁besoin 1 +үндө 1 +▁زیبا 1 +оор 1 +▁money 1 +ցի 1 +kundi 1 +▁entrada 1 +▁निर्णय 1 +АВ 1 +llisesti 1 +LAS 1 +お願い 1 +▁اسے 1 +стрі 1 +lariga 1 +hív 1 +્રા 1 +▁реформ 1 +▁update 1 +▁hír 1 +youtube 1 +abban 1 +皇 1 +▁шлях 1 +wazi 1 +adigan 1 +ทา 1 +▁കട 1 +▁dù 1 +تحقيق 1 +▁XVI 1 +лген 1 +ინგ 1 +▁akik 1 +▁случај 1 +▁Visa 1 +▁nasıl 1 +lopen 1 +KAR 1 +ਅਰ 1 +▁ସରକାର 1 +φερ 1 +▁اردو 1 +▁marrë 1 +显 1 +Î 1 +▁уште 1 +▁тууралуу 1 +▁تغییر 1 +▁मुंबई 1 +▁cando 1 +▁prób 1 +крас 1 +курс 1 +መረ 1 +▁lég 1 +▁разговор 1 +’ 1 +▁vivo 1 +ທໍາ 1 +већ 1 +▁wäre 1 +▁ليس 1 +▁produktu 1 +▁яких 1 +▁fabrica 1 +μί 1 +сьці 1 +फर 1 +▁турист 1 +onym 1 +▁mulle 1 +▁Жо 1 +一步 1 +胜 1 +▁وڃي 1 +▁mỗi 1 +保護 1 +▁портал 1 +OST 1 +γων 1 +▁zusammen 1 +جنس 1 +্রে 1 +ത്ഥ 1 +сынын 1 +thro 1 +ește 1 +▁ابن 1 +▁1500 1 +战略 1 +▁অনু 1 +OTO 1 +▁mix 1 +▁висок 1 +משחק 1 +▁produce 1 +▁dostęp 1 +ζε 1 +机会 1 +讀 1 +乾 1 +▁Show 1 +▁САД 1 +▁қос 1 +खर 1 +ড়ি 1 +▁close 1 +▁reform 1 +pět 1 +▁tjera 1 +▁ignor 1 +▁дарга 1 +၀၀ 1 +ମ୍ବ 1 +ტორი 1 +korra 1 +革 1 +▁livro 1 +▁gjith 1 +▁කියන්න 1 +▁երբ 1 +▁жеке 1 +▁serviço 1 +गो 1 +▁политик 1 +▁forskellige 1 +▁manifest 1 +തേ 1 +ungguh 1 +▁Той 1 +▁combat 1 +▁inizia 1 +த்தின் 1 +dať 1 +ပြင် 1 +▁सभी 1 +응 1 +▁mencari 1 +▁нэр 1 +prä 1 +ώσει 1 +ក៏ 1 +ിനു 1 +wegen 1 +▁පිට 1 +的生活 1 +οποίηση 1 +ว่าจะ 1 +মার 1 +fram 1 +지는 1 +нички 1 +öffentlich 1 +엔 1 +▁असा 1 +ڈر 1 +▁koristi 1 +▁санал 1 +▁ಸೇ 1 +ପୁର 1 +▁내용 1 +▁ክፍ 1 +▁دے 1 +▁yılında 1 +시장 1 +▁تبدیل 1 +▁немесе 1 +▁مزید 1 +▁valsts 1 +אש 1 +▁Gew 1 +Бат 1 +сив 1 +小時 1 +▁газет 1 +▁exclusiv 1 +▁coloca 1 +▁orde 1 +မို 1 +▁necesidad 1 +▁tienen 1 +貼 1 +▁ദിവസ 1 +▁berlaku 1 +▁කාලය 1 +▁jord 1 +▁талаар 1 +▁ndaj 1 +▁зөв 1 +▁sapien 1 +تعل 1 +▁kokku 1 +хад 1 +ātu 1 +မည် 1 +▁అంత 1 +վիր 1 +▁простор 1 +▁підприємств 1 +▁minst 1 +▁වඩා 1 +▁विभाग 1 +持续 1 +נם 1 +▁Work 1 +RR 1 +お客様 1 +▁tỉnh 1 +▁ہمارے 1 +답 1 +あります 1 +▁using 1 +▁ರಾಜ್ಯ 1 +жува 1 +▁агент 1 +άσει 1 +▁đàn 1 +өз 1 +▁dəyiş 1 +▁برابر 1 +면서 1 +▁limite 1 +▁istinad 1 +ಟರ್ 1 +加强 1 +▁მხოლოდ 1 +อยู่ใน 1 +válasz 1 +നായി 1 +범 1 +عقد 1 +voľ 1 +>> 1 +خام 1 +▁През 1 +▁habari 1 +untur 1 +เสริม 1 +גה 1 +기를 1 +సర్ 1 +λεί 1 +正常 1 +ària 1 +▁komfort 1 +జన 1 +していた 1 +በሩ 1 +▁appel 1 +▁घेत 1 +などの 1 +▁Република 1 +▁facut 1 +▁اتفاق 1 +رار 1 +ാൽ 1 +pack 1 +੍ 1 +гөө 1 +ដូច 1 +▁sólo 1 +นม 1 +▁कप 1 +ગર 1 +えば 1 +tòria 1 +xona 1 +▁ricerca 1 +πολ 1 +ىپ 1 +▁συμβ 1 +▁terdapat 1 +▁Blue 1 +毎 1 +▁obdob 1 +▁자신 1 +▁yapılan 1 +豪 1 +▁ቀን 1 +▁tranquil 1 +▁кір 1 +gén 1 +▁مدیریت 1 +ంటూ 1 +▁хр 1 +ਮਾਰ 1 +ٺي 1 +ዋል 1 +▁algún 1 +vārd 1 +▁eivät 1 +malıdır 1 +Ý 1 +▁ingkang 1 +▁hafta 1 +▁Labels 1 +ATE 1 +▁autó 1 +▁nevy 1 +ရွင္ 1 +تىپ 1 +горе 1 +▁mengatakan 1 +▁тысяч 1 +▁بیا 1 +τοπ 1 +schied 1 +fühl 1 +▁κόσμο 1 +▁લોકો 1 +▁знаю 1 +lugu 1 +▁şəxs 1 +værk 1 +इट 1 +邀 1 +ଣ୍ଟ 1 +▁स्थानीय 1 +മീ 1 +▁שכ 1 +▁դրա 1 +▁temperatura 1 +▁vilket 1 +抵 1 +▁μέχρι 1 +ण्यात 1 +▁الذين 1 +duš 1 +遇到 1 +▁push 1 +ေဒ 1 +▁Chính 1 +▁ଦେଇ 1 +ेन्द्र 1 +▁specialist 1 +▁nějak 1 +ļo 1 +աճ 1 +每个 1 +地區 1 +ического 1 +▁установлен 1 +▁ରାଜ୍ୟ 1 +SIA 1 +▁täna 1 +ფარ 1 +▁phân 1 +▁пише 1 +準 1 +▁പല 1 +▁happy 1 +▁съд 1 +▁Seks 1 +▁rokov 1 +轮 1 +▁проблема 1 +แนะนํา 1 +▁disponible 1 +▁proxecto 1 +huone 1 +GS 1 +▁Комп 1 +ـــــ 1 +ទទួល 1 +LES 1 +▁കൂടി 1 +провод 1 +ทิ 1 +ddin 1 +ABA 1 +跳 1 +更多的 1 +▁מדי 1 +য়ের 1 +▁Глав 1 +讨 1 +▁ulaş 1 +▁शहर 1 +▁admin 1 +स्व 1 +▁pilihan 1 +ராஜ 1 +▁кең 1 +ടക്ക 1 +▁বলে 1 +▁දෙන්න 1 +▁vriend 1 +▁factor 1 +文件 1 +ңыз 1 +▁ಸಹ 1 +▁olsun 1 +မည္ 1 +輸 1 +ευση 1 +электрон 1 +▁between 1 +符合 1 +▁نسبت 1 +▁राष्ट्रिय 1 +▁εισ 1 +грађ 1 +▁Við 1 +陆 1 +効果 1 +ปัญหา 1 +参与 1 +▁Final 1 +▁crear 1 +▁Câ 1 +ולם 1 +ভাবে 1 +aṃ 1 +▁matka 1 +▁들어 1 +ଛା 1 +غز 1 +خلاق 1 +помага 1 +БО 1 +▁depois 1 +▁kerto 1 +flex 1 +韩 1 +▁wszystko 1 +▁acontece 1 +決定 1 +ssimi 1 +เฟ 1 +ουσι 1 +心理 1 +跨 1 +上げ 1 +▁सकता 1 +ушылар 1 +პორტ 1 +▁maji 1 +rzenia 1 +▁vực 1 +▁Кі 1 +ឆ 1 +pü 1 +▁гана 1 +ದ್ದು 1 +▁ridic 1 +▁đúng 1 +▁implica 1 +τσι 1 +ම්බ 1 +っています 1 +бес 1 +ەسى 1 +▁Govern 1 +कू 1 +▁ایرانی 1 +MG 1 +աբեր 1 +▁обез 1 +ページ 1 +▁søker 1 +▁இல்லை 1 +▁տեղեկ 1 +නී 1 +óż 1 +▁dễ 1 +ించే 1 +nța 1 +▁konsum 1 +収 1 +Ć 1 +▁gael 1 +స్తుంది 1 +▁Федер 1 +围 1 +നില് 1 +လက် 1 +嚴 1 +ằ 1 +ૌ 1 +กลุ่ม 1 +▁ورزش 1 +▁पढ़ 1 +๊ก 1 +ຸກ 1 +▁készül 1 +տակ 1 +▁Само 1 +▁moito 1 +មេ 1 +shte 1 +janja 1 +遍 1 +▁또는 1 +kraj 1 +许多 1 +фу 1 +ਗੁਰ 1 +▁Скопје 1 +безпеч 1 +▁αντί 1 +▁spil 1 +өрү 1 +യന് 1 +▁cảnh 1 +долж 1 +速度 1 +tetaan 1 +மோ 1 +▁(10) 1 +▁sentido 1 +iņa 1 +സൂ 1 +▁geniş 1 +밀 1 +▁prijatelj 1 +ことができます 1 +▁meio 1 +▁helst 1 +▁звер 1 +▁dưới 1 +▁წელს 1 +ประจํา 1 +▁Bü 1 +▁కథ 1 +2003 1 +ታዊ 1 +φη 1 +verð 1 +価 1 +爭 1 +भिडियो 1 +▁представител 1 +телни 1 +▁זיין 1 +▁ځان 1 +▁confort 1 +▁აქვს 1 +▁случай 1 +SY 1 +වූ 1 +▁продукти 1 +▁bölge 1 +іздің 1 +లలో 1 +▁confirma 1 +▁психолог 1 +แน่ 1 +▁ərazi 1 +nță 1 +ायला 1 +ிருந்த 1 +▁були 1 +▁mūsu 1 +各種 1 +▁образом 1 +▁Möglichkeit 1 +▁իրենց 1 +ႏွင့္ 1 +▁miesto 1 +จิ 1 +ائب 1 +传统 1 +▁fó 1 +▁minder 1 +ምና 1 +▁prendre 1 +▁لیگ 1 +▁тә 1 +▁Dansk 1 +▁skrive 1 +løp 1 +ціон 1 +▁JavaScript 1 +τεί 1 +ளா 1 +懂 1 +RIS 1 +▁θέμα 1 +▁iPad 1 +▁zamanda 1 +เรีย 1 +빠 1 +▁مسئول 1 +schutz 1 +▁մոտ 1 +વ્ય 1 +ganti 1 +▁Ziel 1 +护 1 +▁Washington 1 +fråga 1 +дэл 1 +▁offre 1 +راه 1 +λιο 1 +▁slap 1 +こちら 1 +க்கப்பட்ட 1 +हरुको 1 +▁1960 1 +▁regular 1 +▁راست 1 +ન્ડ 1 +طلاق 1 +▁mümkün 1 +знаком 1 +▁føle 1 +偏 1 +▁situación 1 +臨 1 +▁reason 1 +cciones 1 +▁určit 1 +ತನ 1 +▁taon 1 +▁gero 1 +ક્ર 1 +벌 1 +équipe 1 +ადგილ 1 +كبر 1 +▁Ball 1 +▁pomaga 1 +抽 1 +▁evit 1 +▁մարզ 1 +▁Xunta 1 +這是 1 +▁saját 1 +讯 1 +▁университет 1 +无法 1 +▁പുറത്ത 1 +cultura 1 +▁عز 1 +▁nélkül 1 +▁ଅଭି 1 +불 1 +ឹ 1 +▁usług 1 +▁የእ 1 +令人 1 +▁вариант 1 +ອດ 1 +လုံး 1 +▁pelajar 1 +▁offen 1 +సై 1 +関係 1 +ांची 1 +▁тие 1 +▁Կար 1 +ואר 1 +миш 1 +ตะ 1 +Ș 1 +▁първи 1 +▁аудан 1 +уреди 1 +▁приход 1 +தற்கு 1 +惠 1 +庆 1 +値 1 +▁Respublikasi 1 +▁арм 1 +احة 1 +▁città 1 +▁தெரி 1 +roon 1 +ከት 1 +ෂණ 1 +▁وأن 1 +wój 1 +ησε 1 +▁وكان 1 +▁دوره 1 +ЕЛ 1 +▁linn 1 +حسب 1 +▁Центр 1 +เพลง 1 +▁informasjon 1 +ώντας 1 +nızı 1 +వారు 1 +влия 1 +nyol 1 +▁gặp 1 +▁дітей 1 +cją 1 +ിക്കാന് 1 +ىق 1 +ಪ್ರ 1 +▁bheith 1 +крит 1 +▁алды 1 +▁bekle 1 +غذ 1 +▁Image 1 +▁którym 1 +▁развитие 1 +▁calor 1 +▁منذ 1 +yuk 1 +ුණා 1 +▁እነ 1 +▁நேர 1 +▁Personal 1 +▁Να 1 +▁fasci 1 +▁jamais 1 +رحل 1 +інен 1 +艺术 1 +▁инф 1 +ֶ 1 +строй 1 +mpah 1 +ړی 1 +דן 1 +概 1 +▁महत्व 1 +▁host 1 +出現 1 +▁rhan 1 +ຄື 1 +▁numai 1 +▁truyền 1 +▁хув 1 +علي 1 +말 1 +英国 1 +驚 1 +制造 1 +ສົ່ງ 1 +▁арқылы 1 +ቦች 1 +ינים 1 +▁Respublikasının 1 +বেন 1 +▁مگر 1 +▁pensar 1 +▁prezenta 1 +雄 1 +พิเศษ 1 +▁Nazirliyi 1 +▁իրականաց 1 +▁ունեն 1 +▁acquis 1 +▁piln 1 +▁році 1 +▁talaga 1 +▁necesita 1 +ବେଳେ 1 +▁København 1 +өргө 1 +▁cilj 1 +的方式 1 +▁δικ 1 +▁rəhbər 1 +▁Oktober 1 +▁lấy 1 +غى 1 +ดํา 1 +写真 1 +▁spin 1 +最大的 1 +▁брат 1 +▁هئا 1 +өң 1 +▁своите 1 +nehm 1 +ireadh 1 +▁človek 1 +داء 1 +▁sentir 1 +nění 1 +▁החל 1 +ション 1 +ল্ল 1 +▁punë 1 +ठे 1 +塞 1 +▁ગુજરાતી 1 +▁لوگوں 1 +▁эконом 1 +मृत 1 +עסק 1 +▁pomoć 1 +ارد 1 +▁tượng 1 +転 1 +▁luật 1 +▁марк 1 +ຮຽນ 1 +▁единствен 1 +▁què 1 +▁certo 1 +ত্ত 1 +▁tilbake 1 +ટ્ર 1 +ყო 1 +φόρ 1 +▁silah 1 +γιο 1 +▁Jakarta 1 +▁nəfər 1 +временно 1 +▁egentlig 1 +யு 1 +ຫຼາຍ 1 +▁vegeta 1 +uksessa 1 +תן 1 +をする 1 +پە 1 +盡 1 +▁vệ 1 +nţă 1 +ዋል፡፡ 1 +ワー 1 +▁click 1 +вољ 1 +互联网 1 +▁należy 1 +比如 1 +▁invita 1 +bý 1 +獲得 1 +ടുക്ക 1 +▁বিশ্ব 1 +ਵੀ 1 +ități 1 +▁kommentar 1 +▁Kumar 1 +▁تصویر 1 +▁વધુ 1 +▁illetve 1 +▁papel 1 +føl 1 +ຍັງ 1 +הוד 1 +▁страница 1 +▁раён 1 +▁soovi 1 +▁اے 1 +ファ 1 +▁कुनै 1 +▁প্রকাশ 1 +▁قدرت 1 +▁გაა 1 +увач 1 +▁կազմակերպ 1 +▁طراحی 1 +▁ਆਪਣੇ 1 +ของคุณ 1 +▁پایان 1 +新聞 1 +גיל 1 +ىدا 1 +gyű 1 +▁پہنچ 1 +▁marzo 1 +ಿನಲ್ಲಿ 1 +klasse 1 +狗 1 +▁message 1 +▁şer 1 +▁accident 1 +▁könnte 1 +ړو 1 +宁 1 +သင် 1 +▁GPS 1 +▁praktik 1 +▁Centre 1 +คลิป 1 +▁təhsil 1 +▁ලංකා 1 +חודש 1 +▁yaxşı 1 +▁грани 1 +▁ಹೊಸ 1 +▁figyel 1 +άδες 1 +ሰማ 1 +工具 1 +ຂຶ້ນ 1 +▁Municipal 1 +갈 1 +пира 1 +▁לכ 1 +▁තව 1 +▁talk 1 +礼 1 +▁समिति 1 +▁korral 1 +Φ 1 +▁ambayo 1 +▁zamanı 1 +▁Lond 1 +▁Modern 1 +调查 1 +▁Consul 1 +▁публ 1 +▁الوطني 1 +▁estamos 1 +경제 1 +▁reforma 1 +tlač 1 +क्ति 1 +▁walk 1 +▁आइ 1 +zional 1 +på 1 +अर 1 +десят 1 +▁νέα 1 +ستخدم 1 +▁मध्य 1 +伯 1 +▁coś 1 +▁vieš 1 +▁таким 1 +▁acordo 1 +центр 1 +▁mesma 1 +išče 1 +ķi 1 +葉 1 +ങ്ങളെ 1 +肯定 1 +▁చేసిన 1 +અ 1 +ītā 1 +▁талап 1 +ائڻ 1 +貴 1 +默 1 +棒 1 +▁October 1 +▁פֿאַר 1 +eşte 1 +гласи 1 +▁singur 1 +ნათ 1 +▁junto 1 +وصل 1 +virksomhed 1 +▁мектеп 1 +پار 1 +▁elektronik 1 +▁нешто 1 +ပု 1 +▁చేసి 1 +▁Өз 1 +▁agosto 1 +right 1 +ÁN 1 +ground 1 +▁zelen 1 +▁capit 1 +andra 1 +agrada 1 +HAR 1 +づ 1 +เหลือ 1 +▁نحو 1 +pira 1 +▁países 1 +вън 1 +shiriki 1 +▁ଭାରତ 1 +擁有 1 +▁થઈ 1 +▁ሰዎች 1 +▁haqida 1 +pili 1 +▁rasp 1 +قرب 1 +öyü 1 +库 1 +مول 1 +থা 1 +rwydd 1 +▁conversa 1 +▁suport 1 +▁второ 1 +جاب 1 +ชาว 1 +දෙ 1 +▁الدولي 1 +centi 1 +▁industrial 1 +ప్పటి 1 +▁salva 1 +▁ჩემი 1 +▁उपलब्ध 1 +ندس 1 +▁Ні 1 +▁érte 1 +▁càng 1 +▁отговор 1 +lawan 1 +endelea 1 +operativ 1 +▁ପୂର୍ବ 1 +▁توهان 1 +에도 1 +▁псих 1 +ခ်က္ 1 +▁കണ്ണ 1 +дзей 1 +▁இருக்க 1 +▁ప్రతి 1 +▁пари 1 +督 1 +顺 1 +नंतर 1 +fiki 1 +▁کابل 1 +▁ერთად 1 +▁davam 1 +ਯ 1 +▁алдын 1 +ქარ 1 +▁yahay 1 +श्य 1 +pirk 1 +▁выда 1 +нтаж 1 +▁قۇر 1 +▁semper 1 +ოდა 1 +▁którzy 1 +▁prodotti 1 +▁strá 1 +მუშა 1 +cký 1 +▁Май 1 +แนว 1 +▁දෙක 1 +ollywood 1 +лици 1 +▁minutos 1 +▁Fakt 1 +mysł 1 +▁Serikali 1 +juht 1 +องค์ 1 +ىگە 1 +▁можуть 1 +IVE 1 +▁δημιουργ 1 +ിലൂടെ 1 +spēj 1 +liyo 1 +▁کودک 1 +موس 1 +▁რამ 1 +ясь 1 +راج 1 +▁kyl 1 +भार 1 +૫ 1 +▁кийин 1 +▁بإ 1 +मेल 1 +▁పని 1 +▁stimul 1 +▁1988 1 +dimension 1 +突然 1 +၀င္ 1 +能夠 1 +▁mất 1 +▁няколко 1 +▁ciutat 1 +▁mellett 1 +资金 1 +▁danış 1 +▁כבר 1 +▁kundër 1 +授 1 +▁жизнь 1 +▁zmian 1 +зон 1 +▁1945 1 +▁соң 1 +▁אחרי 1 +詢 1 +สําคัญ 1 +▁प्रश्न 1 +ளு 1 +▁извор 1 +▁acceso 1 +ైనా 1 +▁artigo 1 +▁touch 1 +▁Rich 1 +مؤسس 1 +ဇာ 1 +▁Civil 1 +ერთ 1 +▁રીતે 1 +▁Island 1 +खी 1 +كثر 1 +▁diện 1 +▁Што 1 +тэн 1 +UND 1 +ສີ 1 +范 1 +ವೀ 1 +▁kesä 1 +▁spoj 1 +▁മാത്രമ 1 +▁vähän 1 +▁jonka 1 +മാര 1 +▁passo 1 +▁выбор 1 +▁Good 1 +▁oblasti 1 +▁केली 1 +▁језик 1 +▁കൂട്ട 1 +▁مشکل 1 +▁Filip 1 +មុខ 1 +▁fjöl 1 +▁것은 1 +▁ഏറ്റവും 1 +▁exemple 1 +pedagog 1 +indre 1 +▁ժամ 1 +▁కానీ 1 +▁valamint 1 +▁ಅನು 1 +تاج 1 +▁minor 1 +▁በዚህ 1 +이라 1 +راز 1 +смер 1 +▁podstaw 1 +▁مالی 1 +▁fikir 1 +▁лидер 1 +▁ਦੋ 1 +▁برس 1 +▁यहाँ 1 +▁আজ 1 +▁musical 1 +安排 1 +ਾਇਆ 1 +▁теж 1 +ሔ 1 +άρι 1 +ELL 1 +γραμμ 1 +▁Thông 1 +▁जनता 1 +触 1 +혼 1 +лікті 1 +ధ్య 1 +音樂 1 +ителни 1 +▁вироб 1 +▁partido 1 +▁ഇനി 1 +▁ਹਰ 1 +▁valami 1 +▁ndodh 1 +手機 1 +따 1 +ಆರ್ 1 +ปา 1 +▁synes 1 +民族 1 +客戶 1 +ОП 1 +▁હું 1 +▁ئۈ 1 +LAH 1 +▁materiál 1 +▁facilita 1 +จะมี 1 +▁trực 1 +ยาว 1 +▁Бай 1 +▁Jeśli 1 +▁አሁን 1 +▁oleks 1 +νος 1 +▁biblio 1 +場所 1 +▁Hồ 1 +▁cố 1 +दश 1 +▁Quando 1 +▁gamle 1 +▁Kesk 1 +▁parasito 1 +▁okres 1 +▁високо 1 +来自 1 +වද 1 +ເກມ 1 +▁două 1 +ndrysh 1 +လူ 1 +▁fundamental 1 +▁Mungu 1 +▁البي 1 +▁pregunta 1 +▁ממש 1 +värd 1 +気が 1 +▁بدن 1 +▁amikor 1 +naweza 1 +▁kolme 1 +ಿಸುತ್ತ 1 +യേ 1 +▁გახ 1 +▁չեն 1 +犯 1 +IMA 1 +▁År 1 +গত 1 +шев 1 +▁جاتا 1 +сель 1 +följ 1 +くる 1 +ტექ 1 +嘉 1 +មិន 1 +ლუ 1 +▁ժողով 1 +běh 1 +▁потребител 1 +充分 1 +реже 1 +СУ 1 +▁जन्म 1 +osios 1 +▁jejich 1 +▁medij 1 +歩 1 +▁paggamot 1 +▁yaradı 1 +▁گذشته 1 +▁हेर 1 +צרי 1 +▁enjoy 1 +▁dadka 1 +▁klin 1 +▁terbaik 1 +رئ 1 +▁Евро 1 +鐵 1 +甜 1 +מקצוע 1 +▁яшчэ 1 +▁ਕੀਤੀ 1 +就会 1 +ـــ 1 +▁buena 1 +rantz 1 +▁млад 1 +▁vraiment 1 +▁πρόσ 1 +▁konsult 1 +เชื่อ 1 +פתח 1 +▁عبر 1 +▁ඔය 1 +▁хөг 1 +▁govori 1 +ىدىن 1 +люб 1 +▁яны 1 +▁акту 1 +▁капитал 1 +ىدىغان 1 +▁있었 1 +▁дух 1 +였 1 +ষ্ঠ 1 +▁család 1 +ирования 1 +▁तह 1 +▁Associa 1 +ඊ 1 +Afrika 1 +▁Іван 1 +▁Regi 1 +執 1 +小时 1 +▁gleda 1 +ாளர் 1 +נדער 1 +tänyt 1 +坚持 1 +Ћ 1 +▁அதிக 1 +▁болған 1 +സ്ഥാന 1 +或是 1 +რული 1 +▁fejl 1 +敏 1 +▁sprzeda 1 +▁izbor 1 +▁tức 1 +▁pouvez 1 +▁tutta 1 +обща 1 +▁இத 1 +风险 1 +訴 1 +介紹 1 +▁taha 1 +▁mineral 1 +▁գիտ 1 +▁legend 1 +▁Gali 1 +殺 1 +တရား 1 +▁lehetőség 1 +下さい 1 +isiä 1 +щення 1 +čiti 1 +▁Кур 1 +ដោយ 1 +▁полно 1 +ਿੰਗ 1 +тинг 1 +複 1 +▁الجديد 1 +▁walio 1 +▁khoản 1 +AKA 1 +கொடு 1 +miştir 1 +▁खबर 1 +ਜਨ 1 +▁aşağı 1 +▁ଆପଣ 1 +կաց 1 +▁believe 1 +▁стоит 1 +▁morte 1 +▁ലോക 1 +▁દિવસ 1 +▁ქუ 1 +▁الإسلام 1 +нной 1 +▁hún 1 +ამდე 1 +▁Час 1 +▁taşı 1 +Art 1 +بول 1 +冲 1 +ខ្ញុំ 1 +▁сегодня 1 +▁Đại 1 +▁nổi 1 +ियन 1 +ನೋ 1 +ገና 1 +▁institucion 1 +czki 1 +加上 1 +▁bulate 1 +ઢ 1 +чить 1 +▁Papa 1 +▁Mereka 1 +▁uygulama 1 +▁centrum 1 +如果你 1 +藝術 1 +▁կառավար 1 +ტები 1 +liegen 1 +twitter 1 +▁орында 1 +ļā 1 +стройств 1 +stavlja 1 +օր 1 +ਹੇ 1 +いただき 1 +▁ყოველ 1 +araha 1 +홍 1 +▁իրավունք 1 +▁पहिलो 1 +▁ਵੱਲੋਂ 1 +▁części 1 +▁lupa 1 +▁هند 1 +▁analys 1 +▁trecut 1 +സോ 1 +文字 1 +贵 1 +▁təqdim 1 +schrift 1 +▁지역 1 +στεί 1 +ফা 1 +左 1 +VAL 1 +▁کہنا 1 +ัว 1 +▁రాజ 1 +കെ 1 +▁мај 1 +▁dài 1 +過去 1 +▁درصد 1 +▁ауто 1 +▁чыгар 1 +▁USD 1 +ມື 1 +▁ହେବ 1 +mbangan 1 +▁cepat 1 +▁පිළිබඳ 1 +uttaa 1 +ιακή 1 +हित 1 +ÁS 1 +گن 1 +▁wannan 1 +สั่ง 1 +ຈໍາ 1 +τώ 1 +▁эки 1 +terem 1 +▁همان 1 +▁ramai 1 +ျပီး 1 +形式 1 +▁context 1 +▁занят 1 +▁Shir 1 +אנשים 1 +BY 1 +▁зелен 1 +并且 1 +▁priekš 1 +แค่ 1 +▁sifat 1 +ністю 1 +โรค 1 +დები 1 +זא 1 +▁өмнө 1 +betaling 1 +▁اشاره 1 +▁aunque 1 +больш 1 +▁altid 1 +மெ 1 +▁القو 1 +しまい 1 +异 1 +剛 1 +▁arrange 1 +trice 1 +▁bàn 1 +გვა 1 +▁தீ 1 +働 1 +سىز 1 +▁ಸರ್ಕಾರ 1 +▁idej 1 +જન 1 +▁своих 1 +下午 1 +ställning 1 +్రా 1 +▁abbiamo 1 +▁commodo 1 +จอ 1 +▁godzin 1 +News 1 +了一个 1 +ซา 1 +තුර 1 +做好 1 +损 1 +競 1 +ማት 1 +▁सय 1 +▁بندی 1 +▁እየተ 1 +kontrol 1 +▁arriva 1 +igheid 1 +▁muž 1 +▁নির্বাচন 1 +មនុស្ស 1 +▁உலக 1 +▁nėra 1 +▁pill 1 +čně 1 +▁chân 1 +பர 1 +▁měst 1 +▁única 1 +ゴ 1 +▁HTML 1 +▁सहयोग 1 +▁دفاع 1 +▁January 1 +▁precum 1 +െടുത്ത 1 +последни 1 +▁Metro 1 +App 1 +值得 1 +გებ 1 +▁comprar 1 +▁kérdés 1 +▁سڀ 1 +▁големи 1 +▁बजे 1 +▁választ 1 +▁වසර 1 +опште 1 +▁Federal 1 +▁Beach 1 +ībām 1 +بناء 1 +▁લાગ 1 +▁նրա 1 +bericht 1 +▁количество 1 +▁drie 1 +▁הכל 1 +ွေ 1 +▁ട്ര 1 +▁जारी 1 +▁vuoden 1 +yanın 1 +▁لاس 1 +▁Health 1 +추천 1 +無法 1 +▁ھەر 1 +였다 1 +▁fydd 1 +নার 1 +गम 1 +ข้าง 1 +▁చిత్ర 1 +▁بانک 1 +▁stesso 1 +▁ਦੁ 1 +فيد 1 +▁možné 1 +▁raibh 1 +ливи 1 +학생 1 +ရင် 1 +žení 1 +ņē 1 +잡 1 +▁შორის 1 +120 1 +▁شمال 1 +▁ਦੀਆਂ 1 +▁select 1 +▁bildirib 1 +өрө 1 +▁nomina 1 +▁wollen 1 +▁Karena 1 +▁درمان 1 +▁асуу 1 +▁nemá 1 +▁Nguyễn 1 +▁föl 1 +▁kanggo 1 +စီး 1 +▁Stand 1 +▁dục 1 +ncang 1 +▁biologi 1 +شاء 1 +練 1 +▁счет 1 +δου 1 +єкт 1 +ရက္ 1 +▁venit 1 +ማር 1 +▁introduc 1 +مجموع 1 +ոդ 1 +لىپ 1 +▁TripAdvisor 1 +▁datingside 1 +▁שלנו 1 +▁تیر 1 +ୟା 1 +▁Wohn 1 +service 1 +▁որոնք 1 +新闻 1 +wiel 1 +วันนี้ 1 +이라고 1 +▁drugim 1 +▁секој 1 +стік 1 +▁Người 1 +▁difícil 1 +волю 1 +tājs 1 +▁նրան 1 +▁ziren 1 +ουργ 1 +פעיל 1 +ั้น 1 +▁League 1 +hiya 1 +біль 1 +▁première 1 +ਰਮ 1 +כך 1 +▁ABŞ 1 +▁شبکه 1 +ਉਂ 1 +▁Поль 1 +क्रि 1 +ічного 1 +▁Menteri 1 +AMI 1 +လျ 1 +▁хүмүүс 1 +눈 1 +meyi 1 +เสียง 1 +līdz 1 +公共 1 +ેલા 1 +告诉 1 +▁לפי 1 +▁срещу 1 +▁Gener 1 +זע 1 +▁lazım 1 +▁School 1 +▁Polis 1 +▁Народ 1 +۔۔۔ 1 +▁usuario 1 +στι 1 +นคร 1 +ොත් 1 +▁نوجوان 1 +▁አበባ 1 +φαν 1 +▁Khu 1 +▁малко 1 +▁auctor 1 +▁තිබෙන 1 +▁evident 1 +耐 1 +▁Geld 1 +▁برخی 1 +利益 1 +ຂະ 1 +價格 1 +صدر 1 +▁پڑھ 1 +మాన 1 +ದ್ಧ 1 +กิน 1 +▁ekonomik 1 +▁podczas 1 +▁진행 1 +았다 1 +▁стара 1 +køb 1 +每年 1 +▁பய 1 +験 1 +▁τρόπο 1 +මිනි 1 +▁એમ 1 +▁drugih 1 +过程中 1 +▁aastal 1 +▁ادب 1 +titude 1 +距 1 +DES 1 +aĵoj 1 +▁Гол 1 +乡 1 +▁chuẩn 1 +▁ජනාධිපති 1 +▁другим 1 +ოც 1 +эц 1 +حقق 1 +一名 1 +▁стала 1 +▁მაგ 1 +ಲೋ 1 +ಚೆ 1 +此外 1 +▁perempuan 1 +▁სახელ 1 +▁jusqu 1 +▁legat 1 +реєстр 1 +APP 1 +浮 1 +Џ 1 +ערב 1 +▁خبریں 1 +ត្ត 1 +▁Respublikası 1 +▁decir 1 +▁Ekonomi 1 +女人 1 +거나 1 +▁chaque 1 +araka 1 +ल्ला 1 +▁недоста 1 +▁black 1 +▁اوس 1 +væg 1 +خان 1 +▁eikä 1 +▁voca 1 +познат 1 +פג 1 +简单 1 +▁mengambil 1 +දර 1 +▁назад 1 +▁copil 1 +હુ 1 +ästä 1 +ிடம் 1 +▁Европе 1 +နှင့် 1 +သို့ 1 +익 1 +▁استخدام 1 +чове 1 +ზღვ 1 +wind 1 +▁siguiente 1 +ളം 1 +তু 1 +ግብ 1 +▁پیام 1 +өнө 1 +သွား 1 +ঝ 1 +ပညာ 1 +▁hodnot 1 +▁bulunan 1 +万元 1 +מין 1 +ацију 1 +父母 1 +▁თბილისი 1 +▁возможность 1 +▁menang 1 +츠 1 +팀 1 +▁break 1 +▁քանի 1 +рады 1 +▁قسمت 1 +▁Januar 1 +interno 1 +стрем 1 +▁tuaj 1 +▁بدل 1 +▁dinami 1 +▁Muqdisho 1 +▁सूचना 1 +액 1 +likum 1 +▁печ 1 +▁havia 1 +вайте 1 +دعم 1 +స్తున్నా 1 +▁tanah 1 +misión 1 +ענט 1 +准备 1 +ทั้งหมด 1 +ዞ 1 +相談 1 +▁لوگ 1 +ықты 1 +▁odloč 1 +できます 1 +പ്പെട 1 +ihii 1 +▁zwar 1 +▁Genel 1 +வில்லை 1 +▁pension 1 +▁Catal 1 +▁Consell 1 +▁territorio 1 +ظل 1 +隔 1 +▁সংবাদ 1 +▁naviga 1 +▁данас 1 +▁միայն 1 +▁արտա 1 +▁Μπ 1 +धर 1 +镇 1 +▁участие 1 +లాంటి 1 +ვლა 1 +final 1 +lieb 1 +大会 1 +ၾကည္ 1 +▁tarkoit 1 +▁South 1 +▁riječ 1 +وژ 1 +czony 1 +acaktır 1 +▁ਅੰ 1 +▁ostatni 1 +પ્ર 1 +▁պայման 1 +▁ලිපි 1 +▁අයි 1 +▁xuống 1 +▁Америк 1 +.04.20 1 +▁మొద 1 +▁Никола 1 +▁प्रकार 1 +ացել 1 +തും 1 +kultur 1 +เพื่อน 1 +▁decision 1 +κάν 1 +ትር 1 +▁posibil 1 +▁කටයුතු 1 +▁besser 1 +ბლ 1 +δρα 1 +داخل 1 +▁rád 1 +▁işlər 1 +罪 1 +하시 1 +partner 1 +အတြက္ 1 +ᄏ 1 +pub 1 +▁लड़ 1 +▁පිළි 1 +اجتماع 1 +▁دهند 1 +▁stanov 1 +henti 1 +▁یعنی 1 +▁Putin 1 +histori 1 +▁blitt 1 +იერ 1 +▁इति 1 +▁create 1 +▁nevoie 1 +▁vrt 1 +▁Він 1 +KAT 1 +ંચ 1 +▁پھ 1 +▁stehen 1 +坚 1 +▁Pang 1 +៧ 1 +дума 1 +rót 1 +▁iliyo 1 +▁Monat 1 +▁называ 1 +以外 1 +▁having 1 +庫 1 +PAN 1 +ผิด 1 +▁WhatsApp 1 +▁កម្មវិធី 1 +▁nekoliko 1 +▁થાય 1 +ettel 1 +ುತ್ತಿದ್ದ 1 +▁هوا 1 +สู่ 1 +ኳ 1 +▁attività 1 +▁Word 1 +▁stále 1 +stöðu 1 +2020 1 +▁çdo 1 +▁görül 1 +آور 1 +ināšana 1 +▁болж 1 +▁сақта 1 +קן 1 +ляется 1 +БУ 1 +▁først 1 +▁Glas 1 +ແຂວງ 1 +μένων 1 +もある 1 +þjóð 1 +วิธี 1 +blick 1 +▁către 1 +ೃತ 1 +ગો 1 +▁‹‹ 1 +▁please 1 +▁féin 1 +▁verifica 1 +▁Стар 1 +▁Nhà 1 +袋 1 +しない 1 +▁použit 1 +▁כאן 1 +▁کمک 1 +ยู 1 +щего 1 +scribe 1 +paikka 1 +▁राजनीति 1 +သီ 1 +▁taraf 1 +▁בעל 1 +lēm 1 +▁blant 1 +ability 1 +▁கூற 1 +automat 1 +▁cụ 1 +針 1 +▁다음 1 +▁годзе 1 +▁शिक्षा 1 +llista 1 +特色 1 +▁станови 1 +▁کنم 1 +的時候 1 +▁BMW 1 +▁посети 1 +ใด 1 +推动 1 +▁edilmiş 1 +amerika 1 +▁своя 1 +避 1 +פול 1 +əcə 1 +もあります 1 +чката 1 +▁खान 1 +▁ఇది 1 +▁kiểm 1 +▁Negeri 1 +▁белги 1 +▁تلك 1 +黨 1 +▁gọi 1 +▁радио 1 +▁Brand 1 +▁Kuala 1 +genera 1 +▁අහ 1 +ξεις 1 +能源 1 +▁apud 1 +措施 1 +幸福 1 +▁фестивал 1 +▁αυτά 1 +bereit 1 +ђу 1 +ச்சு 1 +▁thuốc 1 +▁아니 1 +▁knih 1 +▁nächste 1 +MBA 1 +▁amigos 1 +03.20 1 +▁Manuel 1 +ھر 1 +▁hakim 1 +▁verschillende 1 +鄉 1 +▁какой 1 +▁없는 1 +ஆ 1 +规模 1 +วาง 1 +▁γιατί 1 +มหา 1 +butikk 1 +қыр 1 +▁እር 1 +▁શું 1 +購物 1 +မွတ္ 1 +public 1 +▁такое 1 +اۋ 1 +LLE 1 +▁altında 1 +கின்ற 1 +▁único 1 +▁dormi 1 +ിട്ടു 1 +談 1 +▁କାର୍ଯ୍ୟ 1 +ႏိုင္ 1 +▁प्रेम 1 +▁faha 1 +▁것을 1 +▁सम्बन्ध 1 +களும் 1 +▁ବୋଲି 1 +▁мақсат 1 +▁указан 1 +▁savoir 1 +程序 1 +▁entrega 1 +تطبيق 1 +▁लेकर 1 +ణ్ 1 +រួម 1 +ន៍ 1 +АД 1 +ენტ 1 +▁квартир 1 +დგე 1 +▁chơi 1 +▁klimat 1 +홈 1 +휴 1 +ြဲ 1 +▁хүс 1 +▁tilbage 1 +banding 1 +▁scor 1 +▁thả 1 +▁સમય 1 +เดินทาง 1 +ூர் 1 +ರೆಯ 1 +ification 1 +rawat 1 +ndlich 1 +援 1 +нији 1 +वाई 1 +▁autobus 1 +▁האחר 1 +▁ගත්ත 1 +▁خودرو 1 +ыңыз 1 +▁tiến 1 +▁aproxima 1 +▁verschiedene 1 +▁பற்றி 1 +专家 1 +ربع 1 +बू 1 +▁sikre 1 +▁víz 1 +津 1 +ดิน 1 +▁Nhưng 1 +▁شرایط 1 +▁Setelah 1 +▁Avropa 1 +▁consiste 1 +ORA 1 +▁predstavlja 1 +▁מיר 1 +ถ่าย 1 +▁सार्वजनिक 1 +착 1 +▁Під 1 +▁процент 1 +▁drug 1 +▁kval 1 +嫌 1 +▁чейин 1 +▁Đà 1 +自動 1 +▁грн 1 +▁файл 1 +owski 1 +ьные 1 +የው 1 +▁handle 1 +▁հնարավոր 1 +飾 1 +▁Marketing 1 +اقل 1 +อื่น 1 +灵 1 +intza 1 +▁sesuatu 1 +▁комисс 1 +▁आपण 1 +▁môžete 1 +▁hizo 1 +scheid 1 +▁لإ 1 +宇 1 +▁aantal 1 +▁එහෙම 1 +ေကာင္း 1 +ΝΑ 1 +▁Србија 1 +一定要 1 +lichkeit 1 +глав 1 +▁conveni 1 +તું 1 +▁moviment 1 +▁которой 1 +▁magaalada 1 +ຸນ 1 +ovima 1 +▁решения 1 +ላል 1 +နား 1 +▁ନିଜ 1 +níci 1 +લ્લ 1 +ජි 1 +ಲೈ 1 +贸易 1 +怀 1 +▁שיש 1 +▁Калі 1 +▁Así 1 +刘 1 +姆 1 +င့္ 1 +▁గురించి 1 +▁jumlah 1 +նելու 1 +שום 1 +corp 1 +መጣ 1 +▁кино 1 +▁supaya 1 +▁papild 1 +üsü 1 +ଥାଏ 1 +主席 1 +jõu 1 +▁sürü 1 +▁Совет 1 +န္႔ 1 +▁Presiden 1 +настоящ 1 +క్రమ 1 +ຝ 1 +行動 1 +iĝas 1 +ેશન 1 +ทาน 1 +獲 1 +▁कई 1 +曼 1 +▁Київ 1 +દ્ર 1 +ೊಂದು 1 +▁tomto 1 +▁сигурно 1 +▁затвор 1 +llisuus 1 +右 1 +▁क्यों 1 +▁gehiago 1 +▁ਸਰਕਾਰ 1 +financ 1 +ിയത് 1 +▁детей 1 +▁privind 1 +▁કહે 1 +▁Kunst 1 +▁Aktiv 1 +ባት 1 +清楚 1 +▁šio 1 +▁available 1 +blogspot 1 +認為 1 +▁etdiyi 1 +▁palīdz 1 +ដឹង 1 +BAR 1 +▁kreativ 1 +▁نیوز 1 +цији 1 +ставка 1 +чная 1 +▁један 1 +▁finance 1 +▁kijk 1 +cē 1 +ίζεται 1 +NL 1 +▁წინა 1 +▁често 1 +▁nuova 1 +있 1 +एल 1 +▁питання 1 +වලින් 1 +▁ilalim 1 +ल्ड 1 +也可以 1 +▁yarı 1 +ଜ୍ 1 +▁ప్రభుత్వ 1 +▁совершен 1 +ইন 1 +▁reduce 1 +▁budú 1 +▁mihi 1 +ÁL 1 +많 1 +▁făcut 1 +▁história 1 +▁විද් 1 +பை 1 +▁모두 1 +▁golf 1 +▁پسند 1 +ирует 1 +gericht 1 +▁walang 1 +▁भेट 1 +頻 1 +▁bardziej 1 +▁احساس 1 +▁rendelkez 1 +▁pozitiv 1 +ుతుంది 1 +▁բնակ 1 +værelse 1 +tario 1 +建筑 1 +▁պաշտոն 1 +െങ്കില് 1 +بیر 1 +ກ່ຽວກັບ 1 +▁ریاست 1 +▁conjunt 1 +▁առաջին 1 +▁paylaş 1 +▁그런 1 +żenie 1 +▁εργ 1 +▁dvoj 1 +ණ්ඩ 1 +კური 1 +絲 1 +▁বিভাগ 1 +▁ලෝක 1 +▁Excel 1 +သုံး 1 +리는 1 +ຕາມ 1 +हरुले 1 +▁galega 1 +гуль 1 +▁görev 1 +▁لازم 1 +રમ 1 +▁children 1 +ျပဳ 1 +▁Bereich 1 +▁gemaakt 1 +通過 1 +samling 1 +▁момента 1 +▁विभिन्न 1 +▁Íslands 1 +သက္ 1 +▁पुरा 1 +▁للأ 1 +▁ევრო 1 +హ్ 1 +▁Event 1 +▁sorg 1 +တင် 1 +ียง 1 +ႀက 1 +▁Буд 1 +▁guerra 1 +▁делать 1 +▁sposob 1 +▁האם 1 +▁지원 1 +EMA 1 +søge 1 +▁después 1 +▁belajar 1 +▁iniciativa 1 +▁තමන් 1 +πλα 1 +ંડ 1 +▁cadrul 1 +入れ 1 +▁femei 1 +▁bättre 1 +▁مرتب 1 +顯 1 +▁understand 1 +済 1 +ђењ 1 +▁بھر 1 +UC 1 +▁carrer 1 +HER 1 +▁ക്ര 1 +违 1 +νοι 1 +避免 1 +▁جڏهن 1 +▁View 1 +▁seguinte 1 +▁pitää 1 +▁сила 1 +خبار 1 +ovaní 1 +準備 1 +▁számára 1 +▁қажет 1 +বাদ 1 +▁възможност 1 +lykke 1 +▁Komisi 1 +▁konflikt 1 +LINE 1 +▁XIX 1 +▁yüzde 1 +▁представлен 1 +ПА 1 +▁skór 1 +ությանը 1 +▁хоёр 1 +▁komputer 1 +▁yaxın 1 +syllt 1 +▁Ĉi 1 +ชี 1 +▁رقم 1 +▁ekran 1 +іміз 1 +hrung 1 +感受 1 +▁שלך 1 +▁oikea 1 +ላለ 1 +บอล 1 +िङ 1 +▁técnica 1 +▁تعلق 1 +孩 1 +으면 1 +изации 1 +цэн 1 +乎 1 +▁liegt 1 +▁அறிவ 1 +▁سیستم 1 +▁کاهش 1 +▁bashkë 1 +▁ჩემ 1 +▁Cette 1 +▁ведь 1 +▁Scr 1 +▁включа 1 +▁دستگاه 1 +വാദ 1 +▁міста 1 +▁menerima 1 +▁stadig 1 +נען 1 +▁ಕೈ 1 +▁کړې 1 +▁rekord 1 +▁1985 1 +▁школа 1 +ывают 1 +τέρ 1 +旦 1 +▁ընկեր 1 +ጤ 1 +▁Dumnezeu 1 +▁enough 1 +ਿੰਦਰ 1 +ьный 1 +NES 1 +▁qualche 1 +▁határ 1 +ገለ 1 +▁edilib 1 +ಂಕ 1 +ন্স 1 +▁değer 1 +աչ 1 +▁स्वास्थ्य 1 +פיל 1 +▁mở 1 +▁σύν 1 +▁طالبانو 1 +▁wrth 1 +▁связан 1 +använd 1 +▁пазар 1 +លេខ 1 +▁alisema 1 +▁הפר 1 +னம் 1 +ใกล้ 1 +쟁 1 +▁Deutsche 1 +▁licenc 1 +▁ilişki 1 +くなって 1 +▁katanya 1 +▁ചാ 1 +lərlə 1 +▁tô 1 +▁3-4 1 +▁ақпарат 1 +😀 1 +▁مدت 1 +▁connect 1 +ίζουν 1 +感到 1 +▁začal 1 +▁הבית 1 +ฐ 1 +βο 1 +▁Quo 1 +焦 1 +設備 1 +▁família 1 +▁wszystkie 1 +▁wanneer 1 +电子 1 +▁држава 1 +▁жары 1 +首先 1 +พี่ 1 +ಮುಖ 1 +ంటున్న 1 +vrat 1 +ektiv 1 +▁Firma 1 +жиг 1 +링 1 +▁meilleur 1 +ნები 1 +▁දවස 1 +企 1 +▁atmosfer 1 +鏡 1 +દો 1 +▁많이 1 +ással 1 +▁этих 1 +▁tiež 1 +未來 1 +▁කතාව 1 +оўна 1 +ក្រោយ 1 +▁български 1 +▁рекао 1 +xwaz 1 +స్తూ 1 +ännö 1 +▁башта 1 +▁frente 1 +第一次 1 +压 1 +▁Bilder 1 +ඛ 1 +علاج 1 +▁செய்திகள் 1 +ిస్తున్న 1 +▁पढ 1 +ਚਾਰ 1 +ագործ 1 +宅 1 +ર્મ 1 +▁ifade 1 +משך 1 +くらい 1 +▁đầy 1 +ümü 1 +ತೀ 1 +▁luận 1 +ຂໍ້ 1 +▁plusieurs 1 +▁أيضا 1 +▁ultima 1 +▁kommentarer 1 +▁ਮੈ 1 +πιστ 1 +▁Dacă 1 +▁ჩვენი 1 +पासून 1 +▁avtomobil 1 +▁diễn 1 +▁šv 1 +▁роман 1 +αίνει 1 +▁dikkat 1 +▁budget 1 +▁चीन 1 +▁بیش 1 +дає 1 +▁münasibət 1 +▁wszystkich 1 +▁телевиз 1 +▁НАТО 1 +חס 1 +▁облысы 1 +▁prů 1 +府 1 +坦 1 +▁данни 1 +ବ୍ୟ 1 +UNT 1 +▁болсон 1 +▁څو 1 +▁बनाउन 1 +่ํา 1 +ຈັດ 1 +▁təmin 1 +▁hurtig 1 +▁hjemmeside 1 +ออ 1 +▁conseil 1 +รู 1 +dīju 1 +▁spiller 1 +▁गुरु 1 +巨 1 +ĺ 1 +▁chiếc 1 +▁وايي 1 +ложени 1 +mpang 1 +▁sentiment 1 +друг 1 +▁Hå 1 +貸 1 +taminen 1 +رغم 1 +捷 1 +▁அது 1 +▁المتحدة 1 +▁አቶ 1 +▁omkring 1 +ન્સ 1 +▁obav 1 +一段 1 +ούνται 1 +▁honor 1 +▁pontos 1 +▁tatt 1 +▁ovog 1 +▁богат 1 +▁aceea 1 +▁qenë 1 +ЈЕ 1 +▁جانے 1 +▁խորհրդ 1 +▁əvvəl 1 +▁Selv 1 +οικ 1 +צט 1 +ເອ 1 +▁breve 1 +евски 1 +؟؟ 1 +▁метал 1 +▁авах 1 +▁Watch 1 +▁kysy 1 +▁Material 1 +▁प्रो 1 +avimas 1 +ଟେ 1 +▁barri 1 +▁kufanya 1 +▁ضرورت 1 +숙 1 +▁ಇದು 1 +løb 1 +▁bajar 1 +▁ямар 1 +स्तर 1 +ását 1 +雲 1 +▁tagasi 1 +LIK 1 +▁köl 1 +மணி 1 +ണ്ടി 1 +▁база 1 +氏 1 +ຕ້ອງ 1 +▁relación 1 +▁tvor 1 +等等 1 +▁impuls 1 +▁Weiter 1 +[4] 1 +▁rreth 1 +▁statistik 1 +▁খু 1 +▁Domini 1 +▁quibus 1 +धारण 1 +논 1 +▁փորձ 1 +ចេញ 1 +▁промени 1 +▁nguy 1 +▁සමාජ 1 +▁více 1 +سرا 1 +ጓ 1 +▁actividad 1 +נז 1 +▁былі 1 +لىشى 1 +▁uygun 1 +ryhmä 1 +АП 1 +૩ 1 +旅遊 1 +▁منظور 1 +▁ιδι 1 +▁тарих 1 +▁symbol 1 +лежа 1 +募 1 +▁അമ്മ 1 +▁म्हणून 1 +isering 1 +ಿಸಲು 1 +▁Magyar 1 +▁trú 1 +ICI 1 +ظيف 1 +넷 1 +ਥਾ 1 +▁язык 1 +重大 1 +豆 1 +▁blond 1 +▁pubblica 1 +▁रुपमा 1 +▁clic 1 +ակալ 1 +▁gewoon 1 +▁televizi 1 +▁ապա 1 +▁dispozi 1 +▁болсо 1 +蒙 1 +▁Bình 1 +▁aínda 1 +တယ္။ 1 +▁kinni 1 +▁තුළ 1 +▁80% 1 +▁ապր 1 +Inter 1 +▁hữu 1 +▁నుండి 1 +▁ਸਿੱਖ 1 +▁দিয়ে 1 +▁tellus 1 +▁papier 1 +▁κοιν 1 +▁kadın 1 +▁шар 1 +▁timpul 1 +童 1 +▁дейін 1 +скер 1 +▁equipa 1 +цыю 1 +▁Latvijā 1 +허 1 +▁jeśli 1 +▁Республикасынын 1 +因素 1 +▁bogat 1 +แห 1 +があり 1 +სტრ 1 +成長 1 +ພັນ 1 +கர 1 +עבוד 1 +পো 1 +odpowiedni 1 +sChat 1 +▁কথা 1 +техническ 1 +▁사람들 1 +▁bahkan 1 +०० 1 +▁पुलिस 1 +লী 1 +द्द 1 +▁ختم 1 +농 1 +診 1 +▁reikia 1 +▁menyebabkan 1 +▁jurnal 1 +▁କରୁ 1 +▁lux 1 +▁कोण 1 +identifi 1 +▁salud 1 +娘 1 +▁Korea 1 +▁corri 1 +̉ 1 +▁확인 1 +▁افزار 1 +▁letzten 1 +ใช้งาน 1 +▁mladi 1 +变化 1 +▁Novo 1 +▁сайд 1 +öjlig 1 +聊 1 +为什么 1 +▁North 1 +Ғ 1 +▁español 1 +골 1 +▁kvinder 1 +▁боломж 1 +▁chứ 1 +▁څه 1 +nąć 1 +ፍት 1 +▁alkalmaz 1 +▁uvijek 1 +ចាប់ 1 +▁разбира 1 +完善 1 +▁ଯେ 1 +UZ 1 +▁celebr 1 +Երեւան 1 +راع 1 +ования 1 +ాలను 1 +旗 1 +▁lån 1 +▁يجب 1 +▁pitkä 1 +▁Transport 1 +ಕುಮಾರ 1 +ადამიან 1 +帝 1 +宮 1 +▁ਭਾਰਤ 1 +啟 1 +কাল 1 +svæði 1 +▁شیر 1 +ฐาน 1 +ਥੇ 1 +▁موت 1 +▁چشم 1 +salah 1 +▁Coruña 1 +▁charakter 1 +メール 1 +▁नियम 1 +cionais 1 +▁estilo 1 +▁actually 1 +▁working 1 +杀 1 +团队 1 +▁билдир 1 +inėje 1 +▁yakın 1 +機會 1 +ियां 1 +▁მიერ 1 +經驗 1 +Β 1 +▁теперь 1 +状態 1 +ಂಟ 1 +ึง 1 +μένου 1 +▁Standard 1 +▁nekā 1 +міністра 1 +▁putem 1 +展示 1 +탄 1 +▁hlad 1 +▁allerede 1 +患 1 +▁Negara 1 +ແຫ່ງ 1 +▁ଅଧିକ 1 +▁dedicat 1 +▁Qara 1 +▁Hrvatske 1 +▁사진 1 +男人 1 +土地 1 +ยิ่ง 1 +▁ಮೊದಲ 1 +רום 1 +어요 1 +▁поглед 1 +ວດ 1 +െന്നും 1 +产生 1 +fett 1 +▁класс 1 +ヤ 1 +ವ್ಯ 1 +▁ചു 1 +യായി 1 +ვალი 1 +▁पहल 1 +konferenc 1 +厅 1 +▁особенно 1 +▁qiymət 1 +▁связи 1 +▁اقتصادی 1 +2001 1 +▁Latin 1 +事業 1 +▁territori 1 +રુ 1 +▁શકે 1 +▁двух 1 +▁gyermek 1 +▁yaptığı 1 +▁employ 1 +álló 1 +最佳 1 +ხუ 1 +քնն 1 +φρ 1 +▁Kind 1 +ంతా 1 +▁היום 1 +添 1 +▁բայց 1 +▁ბოლო 1 +vásár 1 +▁روشن 1 +▁شاہ 1 +special 1 +▁тэм 1 +▁administrativ 1 +ታት 1 +▁черв 1 +▁nibh 1 +телите 1 +呈 1 +▁տարբեր 1 +ვლის 1 +LET 1 +ဝါ 1 +▁fiyat 1 +▁आए 1 +▁seguridad 1 +מצ 1 +玩家 1 +▁nejak 1 +▁оролц 1 +യ്യ 1 +ΠΟ 1 +序 1 +พื้นที่ 1 +ීමට 1 +▁amplia 1 +▁asemenea 1 +▁хууль 1 +▁толкова 1 +▁mutat 1 +▁mindig 1 +rëve 1 +▁municipi 1 +прост 1 +▁Lietuvoje 1 +груз 1 +تعاون 1 +▁cinema 1 +ΗΣ 1 +ใ 1 +▁fizik 1 +珍 1 +ához 1 +▁ਉੱ 1 +側 1 +我想 1 +▁বিষয় 1 +建议 1 +那个 1 +▁virtual 1 +LIN 1 +▁entrar 1 +▁لیا 1 +เขต 1 +ائیں 1 +▁modifi 1 +▁trafik 1 +नाथ 1 +acağını 1 +تىش 1 +▁készít 1 +powiedz 1 +বী 1 +▁ritm 1 +▁besed 1 +▁ўсё 1 +▁वाच 1 +BAN 1 +▁partecipa 1 +மும் 1 +▁passion 1 +▁maupun 1 +勤 1 +塑 1 +対応 1 +령 1 +إسرائيل 1 +▁тогда 1 +▁жалпы 1 +յա 1 +ครีม 1 +दौ 1 +▁கூட 1 +▁ಮತ್ತ 1 +▁Srbi 1 +▁λειτουργ 1 +▁książ 1 +▁təşkil 1 +▁فعالیت 1 +▁collabora 1 +▁세계 1 +▁екен 1 +▁حتی 1 +负 1 +▁وجہ 1 +ਪੂ 1 +▁though 1 +ลํา 1 +▁Зем 1 +બંધ 1 +▁1984 1 +ನಗರ 1 +▁وذلك 1 +קרא 1 +▁Ради 1 +▁90% 1 +tiedot 1 +קשה 1 +▁финанси 1 +▁Alex 1 +حاول 1 +▁બનાવ 1 +稿 1 +জ্ঞ 1 +▁Είναι 1 +▁cazul 1 +ಬಾ 1 +▁работе 1 +יחס 1 +ശ്വ 1 +එ 1 +▁Harry 1 +▁chwil 1 +ագույն 1 +ುತ್ತಾರೆ 1 +▁හැම 1 +輪 1 +ILL 1 +▁Гэта 1 +▁aukera 1 +▁আমি 1 +▁Ще 1 +沉 1 +װ 1 +▁діяльності 1 +▁fenomen 1 +ੱਟ 1 +ছি 1 +አንድ 1 +ښه 1 +δά 1 +▁başarı 1 +▁соответствии 1 +▁effektiv 1 +▁обрати 1 +▁равно 1 +▁сыр 1 +షన్ 1 +損 1 +센터 1 +تقدم 1 +▁getting 1 +旁 1 +ведение 1 +Ajuntament 1 +▁때문에 1 +■ 1 +▁ඔයා 1 +▁circula 1 +▁действия 1 +▁మరి 1 +فته 1 +ေတာင္ 1 +プロ 1 +▁przypadku 1 +▁господар 1 +wnętrz 1 +NYA 1 +زال 1 +整个 1 +HL 1 +ICE 1 +حسين 1 +ští 1 +汉 1 +淡 1 +▁pemerintah 1 +чным 1 +▁skapa 1 +▁vazhd 1 +▁послуг 1 +lanması 1 +▁resurs 1 +▁opinion 1 +▁tycker 1 +крива 1 +▁avons 1 +▁طول 1 +▁պատմ 1 +▁հայտարար 1 +▁შესა 1 +▁անգամ 1 +▁erhalten 1 +▁جوړ 1 +▁conosce 1 +▁buon 1 +必須 1 +治疗 1 +ometri 1 +町 1 +工业 1 +brug 1 +高い 1 +▁Typ 1 +開催 1 +альные 1 +▁Special 1 +▁memoria 1 +▁مصرف 1 +möglich 1 +▁sukses 1 +MH 1 +لیس 1 +▁كيف 1 +▁ഇവിടെ 1 +bringen 1 +▁հետեւ 1 +▁trouver 1 +▁доллар 1 +ಂತ್ರ 1 +موز 1 +สุข 1 +ആ 1 +▁mạng 1 +gående 1 +▁conseguir 1 +aldia 1 +ান্ত 1 +▁рече 1 +秒 1 +▁ficar 1 +▁करून 1 +ILA 1 +▁રાખ 1 +▁stanowi 1 +મૂ 1 +満 1 +▁நன்றி 1 +▁probleem 1 +▁quru 1 +▁Forma 1 +▁ھەم 1 +▁aparece 1 +Tube 1 +ספק 1 +▁પે 1 +▁function 1 +ΜΕ 1 +窗 1 +▁Click 1 +சம் 1 +藝 1 +ADI 1 +▁велико 1 +▁ստեղծ 1 +zep 1 +▁betale 1 +体系 1 +迫 1 +ภายใน 1 +▁dafür 1 +▁српски 1 +▁svært 1 +पोर्ट 1 +১২ 1 +طلق 1 +point 1 +▁হয়ে 1 +ոք 1 +▁enfants 1 +▁شركة 1 +▁Bunun 1 +▁شکل 1 +ပါး 1 +ставки 1 +▁тих 1 +契 1 +▁wszystkim 1 +▁თუმცა 1 +▁Termin 1 +▁тебя 1 +NING 1 +▁defend 1 +oldal 1 +ورس 1 +亿元 1 +▁hakkında 1 +ឬ 1 +▁өдөр 1 +▁نمایند 1 +▁баға 1 +軽 1 +ḥ 1 +▁categoria 1 +นี่ 1 +ሪዎች 1 +ちゃん 1 +হে 1 +ຫມາຍ 1 +▁максимал 1 +▁eventual 1 +тыў 1 +ಯಾಗ 1 +ίνα 1 +▁burada 1 +▁Activ 1 +dding 1 +兼 1 +šnja 1 +ኅ 1 +귀 1 +▁všetky 1 +없이 1 +ေကာ 1 +ülő 1 +▁сказать 1 +申請 1 +▁ಮೂಲಕ 1 +wiązk 1 +▁kleur 1 +▁باشند 1 +ήσουν 1 +രും 1 +▁उन्होंने 1 +▁Однако 1 +ৰা 1 +▁qualité 1 +仕 1 +辛 1 +สนใจ 1 +分鐘 1 +ങ്ങളില് 1 +▁xüsusi 1 +記事 1 +青年 1 +▁(11) 1 +歡迎 1 +▁Hvordan 1 +▁ferie 1 +▁corpora 1 +▁пайда 1 +ច្រើន 1 +ផ្លូវ 1 +▁блог 1 +▁cinco 1 +סדר 1 +▁ಈಗ 1 +▁गीत 1 +առն 1 +şü 1 +▁Mich 1 +▁مدد 1 +▁арналған 1 +▁୨୦ 1 +▁açıq 1 +VAN 1 +▁fleste 1 +твърд 1 +ではなく 1 +فهم 1 +аваны 1 +▁ಎಂದ 1 +▁Мінск 1 +▁լավ 1 +导致 1 +综合 1 +例如 1 +ም፡፡ 1 +API 1 +慢 1 +▁ගො 1 +ையும் 1 +▁menor 1 +▁Според 1 +▁बढी 1 +▁მთავარი 1 +▁বছর 1 +ຖານ 1 +▁mitään 1 +▁ദു 1 +▁myśl 1 +▁sık 1 +娱乐 1 +ຫວຽດນາມ 1 +ולים 1 +ነው 1 +ỷ 1 +▁മുന്ന 1 +зима 1 +▁ազատ 1 +により 1 +በው 1 +AHA 1 +ขาว 1 +▁plač 1 +ქონ 1 +▁månad 1 +リア 1 +覽 1 +막 1 +엄 1 +▁کردند 1 +++ 1 +▁khusus 1 +▁इसके 1 +крет 1 +ireann 1 +束 1 +械 1 +▁procura 1 +เดิน 1 +ському 1 +▁ബോ 1 +▁специалист 1 +ம்பி 1 +venue 1 +▁рассказ 1 +ကား 1 +過程 1 +荷 1 +เนื่อง 1 +팅 1 +랜 1 +▁ಶ್ರೀ 1 +▁елемент 1 +▁būtų 1 +▁सरकारले 1 +ឹម 1 +觉 1 +▁न्याय 1 +▁پاک 1 +Ả 1 +لەش 1 +▁बंद 1 +▁לכם 1 +▁груд 1 +draug 1 +▁ಪ್ರಾ 1 +изация 1 +និង 1 +୯ 1 +發生 1 +レン 1 +▁koordin 1 +▁پنجاب 1 +あって 1 +▁1/2 1 +गृह 1 +▁такого 1 +杂 1 +チャ 1 +ឧ 1 +▁snart 1 +▁নির্ 1 +ണമെന്ന 1 +▁மக்கள 1 +▁каде 1 +▁жолу 1 +▁realmente 1 +ত্ব 1 +▁Wochen 1 +맛 1 +Ї 1 +▁মধ্যে 1 +▁mjesec 1 +▁separat 1 +بدأ 1 +ődés 1 +▁mettre 1 +▁Information 1 +▁личност 1 +当时 1 +niejsze 1 +▁Amsterdam 1 +niejszy 1 +▁Folk 1 +မှတ် 1 +▁گڏ 1 +ಜು 1 +ყოფილ 1 +▁veliki 1 +ደረገ 1 +▁gracias 1 +ज्ञा 1 +KER 1 +▁cirk 1 +ଧାନ 1 +历 1 +▁χαρ 1 +▁Hill 1 +▁다시 1 +ხო 1 +ධාන 1 +重新 1 +しまった 1 +▁באַ 1 +▁Ці 1 +▁část 1 +▁America 1 +▁bilang 1 +▁szabad 1 +śmie 1 +ோம் 1 +ክት 1 +刑 1 +2002 1 +ปลา 1 +โรงเรียน 1 +▁trabalha 1 +▁여행 1 +งค์ 1 +▁સિ 1 +▁Svet 1 +▁Amerik 1 +▁бур 1 +伦 1 +教授 1 +អង្គ 1 +▁다양한 1 +▁kuidas 1 +▁нэм 1 +▁Hotell 1 +activité 1 +сион 1 +यः 1 +▁ابتدا 1 +▁хорошо 1 +乱 1 +늘 1 +▁სუ 1 +disciplin 1 +asema 1 +отворен 1 +▁Student 1 +▁mmoja 1 +▁ЕУ 1 +šķir 1 +▁Olimp 1 +ტური 1 +שלום 1 +ığı 1 +▁возник 1 +hesh 1 +联系 1 +ുമെന്ന 1 +krep 1 +ఒ 1 +▁دریافت 1 +▁ਸਾਹਿਬ 1 +ចិត្ត 1 +ກ່າວ 1 +▁szép 1 +ფუ 1 +listen 1 +โครงการ 1 +智慧 1 +▁үйлдвэр 1 +▁لع 1 +▁ಹೋ 1 +помни 1 +碼 1 +TAT 1 +콘 1 +▁भाषा 1 +žiť 1 +führen 1 +በል 1 +▁jednoduch 1 +ေရာက္ 1 +▁καρ 1 +сред 1 +▁السل 1 +▁долго 1 +ที่นี่ 1 +▁എന്നിവ 1 +▁этим 1 +▁koliko 1 +都会 1 +▁Simp 1 +ற்றி 1 +▁қой 1 +ਮਾਨ 1 +▁случи 1 +家族 1 +诺 1 +ត្តិ 1 +▁laboratori 1 +AIS 1 +▁žal 1 +敬 1 +ATU 1 +جاه 1 +βάλ 1 +▁Læs 1 +▁ყველაზე 1 +▁gyerek 1 +▁Йо 1 +▁کننده 1 +▁reduc 1 +▁ευρώ 1 +เอก 1 +▁করেছে 1 +开放 1 +▁വില 1 +▁Evropsk 1 +パー 1 +สิ่ง 1 +لعب 1 +バイ 1 +▁dzięki 1 +▁დროს 1 +▁yanı 1 +▁Communi 1 +一種 1 +လှ 1 +▁<3 1 +वादी 1 +ėmis 1 +▁sjálf 1 +▁ortaya 1 +鞋 1 +ホ 1 +posizione 1 +▁செய்த 1 +▁chuid 1 +▁blanc 1 +▁එක්ක 1 +▁мобил 1 +கோ 1 +ხან 1 +إدارة 1 +ічні 1 +成果 1 +平均 1 +ಬಂಧ 1 +рыз 1 +麼 1 +启 1 +▁তথ্য 1 +▁સુધી 1 +▁міжнародн 1 +▁výkon 1 +▁фіз 1 +▁والإ 1 +דף 1 +กิจกรรม 1 +▁spôsob 1 +▁жүргіз 1 +▁zawsze 1 +بيت 1 +← 1 +▁mesec 1 +▁არც 1 +附近 1 +▁propor 1 +▁trưởng 1 +▁stark 1 +▁mikä 1 +домашн 1 +ಬು 1 +อายุ 1 +LP 1 +▁навчальн 1 +Azərbaycan 1 +▁qualità 1 +▁semaine 1 +▁özü 1 +电话 1 +▁ٻڌ 1 +mood 1 +▁membro 1 +截 1 +凡 1 +Ջ 1 +økonomi 1 +▁embargo 1 +▁Град 1 +▁žensk 1 +ாமல் 1 +侵 1 +桌 1 +gazdaság 1 +▁четири 1 +ώνει 1 +ფილ 1 +AWA 1 +▁سمجھ 1 +▁slučaj 1 +ությունն 1 +ANO 1 +▁rodzin 1 +information 1 +▁1986 1 +盤 1 +▁хүлээ 1 +ohjelma 1 +▁jedoch 1 +▁риск 1 +UNA 1 +▁появи 1 +τζ 1 +▁Vuo 1 +課程 1 +▁अवस्था 1 +之外 1 +▁نشر 1 +▁љуб 1 +法院 1 +几个 1 +งาม 1 +▁또한 1 +貸款 1 +θυμ 1 +▁emocion 1 +が多い 1 +▁ngayon 1 +▁trup 1 +โพ 1 +▁സംഘ 1 +шық 1 +▁consigli 1 +▁necesario 1 +▁Κο 1 +осмотр 1 +дэх 1 +菲 1 +▁grazie 1 +▁제품 1 +OLA 1 +▁ПРО 1 +ындагы 1 +ទា 1 +γνώ 1 +▁తీస 1 +אַט 1 +பட்ட 1 +▁gerçekleştir 1 +▁hopp 1 +▁Србији 1 +▁гости 1 +пати 1 +▁ଜଣ 1 +▁Бол 1 +ተና 1 +綠 1 +▁Ու 1 +▁আপনার 1 +ències 1 +▁pengar 1 +ИЙН 1 +联合 1 +▁успех 1 +▁başladı 1 +▁människor 1 +▁తెలంగాణ 1 +վեր 1 +נגד 1 +してくれ 1 +fald 1 +竹 1 +решен 1 +▁müəyyən 1 +▁arkadaş 1 +▁mengalami 1 +▁באתר 1 +ებენ 1 +▁অ্যা 1 +lecti 1 +▁υπάρχει 1 +▁already 1 +طال 1 +১৯ 1 +скіх 1 +VM 1 +▁continuar 1 +優惠 1 +เย็ด 1 +▁ਮੋ 1 +▁சில 1 +▁penal 1 +СИ 1 +▁منطقه 1 +गाव 1 +ច្ 1 +▁triệu 1 +▁шест 1 +لارنى 1 +顿 1 +▁العلم 1 +▁மிக 1 +ÁR 1 +▁अपना 1 +ର୍ଥ 1 +医疗 1 +惊 1 +ÃO 1 +▁Angebot 1 +폰 1 +▁შემო 1 +很多人 1 +▁signal 1 +▁이번 1 +ética 1 +▁kỹ 1 +bibliotek 1 +찾 1 +▁ਉਨ੍ਹਾਂ 1 +▁ندارد 1 +УС 1 +ਸੂ 1 +İR 1 +szolgáltatás 1 +လ် 1 +▁Henri 1 +▁ξέ 1 +▁tưởng 1 +▁Direkt 1 +ТВ 1 +œ 1 +▁pierwszy 1 +▁legger 1 +альная 1 +▁ਮੈਂ 1 +鲜 1 +భాగ 1 +▁өмір 1 +LED 1 +▁Spec 1 +▁Louis 1 +▁персонал 1 +處理 1 +以后 1 +▁pewno 1 +▁Қазақ 1 +▁δημοσ 1 +▁өлкө 1 +ونکي 1 +▁العراق 1 +▁harmoni 1 +ცენტრ 1 +办法 1 +ఫి 1 +▁нису 1 +▁fosse 1 +▁әкім 1 +おります 1 +ညီ 1 +ിച്ചത് 1 +ohje 1 +▁edición 1 +▁doesn 1 +▁Freund 1 +eeyay 1 +ბრძ 1 +קרה 1 +▁webcam 1 +▁yayın 1 +▁అయితే 1 +မြို့ 1 +▁hours 1 +▁tranh 1 +брать 1 +обича 1 +▁ڇا 1 +ificación 1 +დით 1 +▁မြန်မာ 1 +▁זענען 1 +னால் 1 +ဆရာ 1 +ようです 1 +▁کپ 1 +▁מספר 1 +เก็บ 1 +oxid 1 +fabrik 1 +品質 1 +▁پرداخت 1 +ၤ 1 +▁yüksek 1 +▁länge 1 +▁उठ 1 +▁කී 1 +راك 1 +▁níos 1 +ічний 1 +▁góð 1 +▁അതു 1 +討 1 +業者 1 +▁سنڌي 1 +qual 1 +みたい 1 +▁지금 1 +żyć 1 +だから 1 +▁tuleva 1 +ΟΣ 1 +▁холбоо 1 +▁сұра 1 +итися 1 +▁mediante 1 +▁1987 1 +▁informazioni 1 +泉 1 +▁wohl 1 +搜 1 +▁потрібно 1 +▁Pradesh 1 +▁miliard 1 +▁പോക 1 +▁הרב 1 +လေး 1 +ग्राम 1 +tette 1 +脚 1 +▁Владимир 1 +結婚 1 +ക്കെ 1 +закон 1 +できない 1 +▁gjy 1 +માંથી 1 +ινή 1 +料理 1 +ゃ 1 +ម្នាក់ 1 +▁სიმ 1 +▁grow 1 +▁ktorí 1 +ന്റ് 1 +▁someone 1 +람 1 +ിട്ടുണ്ട് 1 +咖啡 1 +▁зохион 1 +▁բարձր 1 +فكر 1 +भित्र 1 +skelb 1 +▁Εν 1 +אָל 1 +▁წარ 1 +▁vietā 1 +これは 1 +соци 1 +多くの 1 +▁mēs 1 +УР 1 +▁zasad 1 +到底 1 +ებმა 1 +▁probabil 1 +ньня 1 +▁അല്ല 1 +núť 1 +ひ 1 +▁ತಮ್ಮ 1 +▁Ankara 1 +బీ 1 +▁customer 1 +চা 1 +深入 1 +дігі 1 +▁Qə 1 +▁néz 1 +ભાવ 1 +▁Thành 1 +− 1 +▁всяка 1 +TRI 1 +ყი 1 +สิ่งที่ 1 +▁оруул 1 +ፖለቲካ 1 +▁diversos 1 +▁culture 1 +▁Τι 1 +ణా 1 +బర్ 1 +▁mesiac 1 +өөр 1 +希 1 +▁político 1 +▁Hierdie 1 +sniedz 1 +▁لکھ 1 +详细 1 +▁Бишкек 1 +▁상품 1 +정보 1 +TÜ 1 +航空 1 +▁Michel 1 +▁Απο 1 +럽 1 +▁ജീവിത 1 +հեռ 1 +னே 1 +▁litr 1 +▁közel 1 +▁స్ట 1 +▁прошло 1 +▁télé 1 +ുമ്പോള് 1 +▁адзін 1 +.11.20 1 +கிறார் 1 +▁Oyun 1 +▁образова 1 +▁것으로 1 +▁Reise 1 +טבע 1 +üzü 1 +రికి 1 +▁między 1 +▁ජීවිත 1 +❤ 1 +vizsgál 1 +เส้น 1 +▁שהוא 1 +▁კომ 1 +▁මේක 1 +ικότητα 1 +▁තවත් 1 +▁ሁኔታ 1 +▁besøk 1 +▁antaŭ 1 +▁pjes 1 +ଠି 1 +▁membawa 1 +धो 1 +▁cerita 1 +误 1 +▁Bratislav 1 +▁πριν 1 +▁οικο 1 +bhair 1 +ண்டா 1 +▁مرکزی 1 +ギ 1 +ດ້ວຍ 1 +▁među 1 +▁ғылым 1 +▁кошт 1 +▁үг 1 +▁mulher 1 +▁pueda 1 +▁ასევე 1 +▁Programm 1 +စိတ္ 1 +جيل 1 +▁μαζί 1 +▁ጉዳይ 1 +भूत 1 +trykk 1 +感覺 1 +▁természet 1 +ნაწილ 1 +▁kuhusu 1 +▁حاضر 1 +საქართველო 1 +▁priča 1 +komand 1 +▁حدود 1 +▁परिवार 1 +აძე 1 +▁communi 1 +员工 1 +ութ 1 +ılıb 1 +▁muhim 1 +▁юу 1 +▁együtt 1 +情況 1 +▁riigi 1 +ପାରି 1 +▁එහි 1 +▁mamma 1 +ىدە 1 +▁Emil 1 +SKA 1 +▁χρόνο 1 +▁стороны 1 +▁høre 1 +▁Unidos 1 +▁fuck 1 +ສາມາດ 1 +▁White 1 +▁lätt 1 +หนอน 1 +ક્સ 1 +▁авч 1 +教学 1 +сети 1 +幫 1 +▁otrok 1 +ნილი 1 +衡 1 +▁රහ 1 +▁дизайн 1 +▁በኋላ 1 +▁жакшы 1 +▁després 1 +▁இணை 1 +▁peuvent 1 +김 1 +▁temporada 1 +น้อง 1 +យើង 1 +เสื้อ 1 +▁gemeente 1 +▁episod 1 +ხის 1 +ಗೋ 1 +▁Privat 1 +▁ከመ 1 +ザ 1 +▁మంచి 1 +ేషన్ 1 +此次 1 +▁vuotta 1 +ਟਾ 1 +▁генерал 1 +▁अधिकार 1 +姿 1 +▁seseorang 1 +уючи 1 +▁పెద్ద 1 +ијски 1 +บิน 1 +▁dobrze 1 +▁پڑ 1 +▁дараа 1 +▁Vlad 1 +▁என்ப 1 +頃 1 +Ī 1 +▁Več 1 +▁título 1 +▁جامعه 1 +▁బ్ర 1 +▁१५ 1 +▁îl 1 +▁buiten 1 +พูด 1 +રૂપ 1 +ИТ 1 +浴 1 +૯ 1 +▁Durch 1 +ຖືກ 1 +▁вирі 1 +▁നിയമ 1 +▁ਮਿਲ 1 +▁شوې 1 +▁Велико 1 +▁derecho 1 +▁tvoj 1 +▁işlem 1 +iešu 1 +veilig 1 +▁kjæreste 1 +▁माहिती 1 +▁እስከ 1 +зема 1 +▁أخرى 1 +▁সরকার 1 +ಿತ್ತು 1 +▁تھے۔ 1 +各地 1 +理念 1 +రూప 1 +ມັນ 1 +にある 1 +▁следует 1 +প্রযুক্তি 1 +eysa 1 +ىدىكى 1 +ทุน 1 +▁Hội 1 +δηλ 1 +acqua 1 +▁вообще 1 +ढे 1 +autor 1 +periode 1 +究 1 +্ৰ 1 +ឱ្យ 1 +▁reflex 1 +крив 1 +네요 1 +ΤΕ 1 +▁nebude 1 +▁زمینه 1 +▁համակարգ 1 +▁Regula 1 +stæð 1 +▁Republic 1 +▁edildi 1 +▁żeby 1 +▁försök 1 +搞 1 +拜 1 +▁khẩu 1 +ပံု 1 +ించు 1 +خبر 1 +繼續 1 +▁seguro 1 +▁протест 1 +ክል 1 +▁বল 1 +▁chomh 1 +▁kvinne 1 +ស្រី 1 +事故 1 +励 1 +覆 1 +▁истраж 1 +ແລ້ວ 1 +▁ਖ਼ 1 +вежда 1 +▁Wall 1 +GRA 1 +იშვილი 1 +臉 1 +▁χρησιμοποι 1 +▁уақыт 1 +▁budou 1 +▁kvinnor 1 +▁fyrst 1 +高度 1 +就能 1 +▁købe 1 +▁σχολ 1 +حادث 1 +▁Пры 1 +▁renk 1 +▁ထို 1 +นาง 1 +▁Muslim 1 +յուն 1 +▁кај 1 +ധന 1 +▁принят 1 +ੱਕ 1 +▁ambao 1 +ෙහි 1 +桃 1 +폭 1 +▁preocupa 1 +▁kepala 1 +lığını 1 +▁nooit 1 +tēm 1 +ಪೂ 1 +▁Georg 1 +बंध 1 +▁பின் 1 +▁სახელმწიფო 1 +▁cười 1 +ใต้ 1 +▁ਹੋਰ 1 +▁없다 1 +▁влада 1 +▁الدين 1 +▁такие 1 +kadang 1 +되고 1 +▁عورت 1 +▁хур 1 +авља 1 +安心 1 +▁phong 1 +珠 1 +毫 1 +▁bırak 1 +保险 1 +▁koncentr 1 +טיפול 1 +▁estudia 1 +ტრი 1 +ல்லா 1 +āls 1 +▁იგი 1 +▁гэх 1 +▁Mutta 1 +逃 1 +─ 1 +skrib 1 +▁მიმართ 1 +执行 1 +▁अधिकारी 1 +asztal 1 +▁অব 1 +▁lielā 1 +▁الطب 1 +▁جمهور 1 +ब्ल 1 +項目 1 +▁Ahmad 1 +ኖር 1 +▁traballa 1 +▁vuonna 1 +▁groep 1 +▁فال 1 +▁ukuba 1 +พัน 1 +बह 1 +▁нормал 1 +වීමට 1 +શી 1 +▁საქმე 1 +ଯିବ 1 +▁independent 1 +hahaha 1 +▁Програм 1 +▁només 1 +ภูมิ 1 +重点 1 +▁ارائه 1 +▁सुरक्षा 1 +ຂ່າວ 1 +▁यांच्या 1 +▁khoảng 1 +▁Francisco 1 +▁جمهوری 1 +/12/ 1 +봉 1 +ຫານ 1 +▁હવે 1 +▁trouve 1 +နှ 1 +▁فقد 1 +▁autonom 1 +கிற 1 +生產 1 +覚 1 +ေၾကာင္း 1 +พ่อ 1 +ປາ 1 +ствия 1 +▁влади 1 +▁Республикасы 1 +▁یافت 1 +ській 1 +คืน 1 +▁ngươi 1 +▁рішення 1 +▁நல்ல 1 +▁məktəb 1 +▁ජාතික 1 +례 1 +▁Magyarország 1 +▁politisk 1 +▁ადამიანი 1 +TAS 1 +▁собой 1 +▁ungdom 1 +▁võimalik 1 +evole 1 +រឿង 1 +▁стратеги 1 +પૂ 1 +kväll 1 +▁기자 1 +żenia 1 +▁figure 1 +**** 1 +分钟 1 +מאַ 1 +▁сектор 1 +▁imagina 1 +▁институц 1 +▁väldigt 1 +▁millones 1 +▁निर्देश 1 +ประมาณ 1 +▁вельмі 1 +▁terlalu 1 +▁гадоў 1 +▁információ 1 +eoirí 1 +цоў 1 +ார்கள் 1 +ซ์ 1 +ELI 1 +▁felhasznál 1 +먼 1 +▁اہم 1 +▁potřeb 1 +▁Server 1 +▁असल्या 1 +Quran 1 +▁eduka 1 +▁component 1 +fejlesztés 1 +▁recherche 1 +一番 1 +▁celle 1 +▁qərar 1 +▁Legg 1 +▁групи 1 +▁دارای 1 +▁यस्तो 1 +▁व्यक्त 1 +▁পারে 1 +komunika 1 +打造 1 +▁mức 1 +▁complica 1 +▁خەلق 1 +чког 1 +▁ఆమె 1 +▁خصوصی 1 +▁thotë 1 +▁мәселе 1 +▁remont 1 +订 1 +율 1 +▁మీరు 1 +stående 1 +▁другой 1 +關係 1 +CHI 1 +겠 1 +知識 1 +หมู่ 1 +▁Demokrat 1 +駅 1 +▁Περι 1 +▁güç 1 +szcza 1 +Energ 1 +ებულია 1 +▁මං 1 +driv 1 +沿 1 +倫 1 +▁Result 1 +▁Richard 1 +▁Atlant 1 +ታው 1 +▁открыт 1 +便利 1 +▁Путин 1 +ընթաց 1 +ຜົນ 1 +▁Massage 1 +▁ଆସି 1 +ражен 1 +organiz 1 +▁владе 1 +easca 1 +ढ़ 1 +▁हत्या 1 +炎 1 +‐ 1 +▁कैसे 1 +够 1 +vård 1 +▁Girl 1 +▁разреш 1 +▁определя 1 +▁συνεχ 1 +SHA 1 +作者 1 +ശാ 1 +▁अनि 1 +▁पाठ 1 +ହେ 1 +▁φιλ 1 +辆 1 +▁ગુ 1 +▁కాదు 1 +▁þó 1 +▁خدمت 1 +▁İç 1 +▁хората 1 +▁شعب 1 +უშ 1 +▁contenu 1 +▁შეიძლება 1 +ήθηκε 1 +csoport 1 +▁acestui 1 +ěř 1 +ικο 1 +帮 1 +▁κάποιο 1 +▁весь 1 +▁отношения 1 +▁प्रतिशत 1 +▁मुझे 1 +▁көрсө 1 +▁rëndë 1 +▁grafik 1 +▁thú 1 +oloxía 1 +maksā 1 +▁segala 1 +▁круг 1 +ହିଁ 1 +industri 1 +伸 1 +▁ομάδα 1 +▁Републике 1 +▁ללא 1 +▁आत्म 1 +cionado 1 +ೇಶ್ 1 +▁hvað 1 +லில் 1 +疾病 1 +▁১০ 1 +▁мэдээлэл 1 +్ర 1 +即使 1 +▁місце 1 +▁ngoku 1 +ตลาด 1 +వచ్చు 1 +▁lưu 1 +▁პირველი 1 +আই 1 +اخر 1 +កាន់ 1 +ทรง 1 +レス 1 +ブログ 1 +▁πραγματ 1 +ικαν 1 +уудын 1 +етті 1 +ifikasi 1 +付け 1 +înê 1 +▁pénz 1 +學校 1 +▁தொடர 1 +▁explic 1 +▁senior 1 +▁қыз 1 +隆 1 +偶 1 +▁ରହି 1 +ਵੇਂ 1 +经过 1 +無料 1 +▁ቤተ 1 +خرج 1 +ദ്ദ 1 +ülü 1 +ڀ 1 +ञ्ज 1 +ਢ 1 +ૉ 1 +▁développe 1 +▁хамгаал 1 +▁이야기 1 +เชีย 1 +▁moyen 1 +▁professionnel 1 +යෙක් 1 +ড়ে 1 +▁системы 1 +ള്ളി 1 +▁ծրագր 1 +ణి 1 +បំ 1 +▁آدم 1 +最终 1 +▁διε 1 +やって 1 +▁cursus 1 +ථා 1 +▁बने 1 +រប 1 +ланды 1 +រាជ 1 +朗 1 +ရွာ 1 +▁thoại 1 +▁alapján 1 +▁gemacht 1 +▁Svensk 1 +▁İran 1 +となって 1 +▁আল 1 +Սարգսյան 1 +▁rispetto 1 +▁Menurut 1 +▁sábado 1 +▁بولۇپ 1 +ымыз 1 +ხედ 1 +▁ಕಾರ್ಯ 1 +ේදී 1 +▁აი 1 +േറ്റ 1 +ゆ 1 +▁поэтому 1 +ण्याची 1 +生物 1 +телство 1 +▁dernier 1 +▁imam 1 +▁informações 1 +握 1 +▁ویژه 1 +ナー 1 +▁일본 1 +▁चै 1 +▁Salaam 1 +られた 1 +seadus 1 +▁decât 1 +大型 1 +▁часть 1 +ORE 1 +忍 1 +▁training 1 +▁ڈال 1 +▁disebut 1 +რდა 1 +▁daoine 1 +▁අනුව 1 +દ્ 1 +飯 1 +體驗 1 +เว็บ 1 +ṣ 1 +▁عراق 1 +▁loppu 1 +表现 1 +ਕਲ 1 +→ 1 +▁ಹೆಚ್ಚ 1 +αγγελ 1 +表現 1 +မ်ိဳး 1 +▁ചെയ്യുന്ന 1 +שבת 1 +ಸರ್ 1 +είου 1 +CIÓ 1 +▁məqsəd 1 +ဉ 1 +flug 1 +▁لگا 1 +▁Polski 1 +ବାଦ 1 +▁դիմ 1 +▁έναν 1 +扩 1 +汇 1 +เส้นเลือดขอด 1 +득 1 +▁kõige 1 +ပြဲ 1 +əsinin 1 +▁baixo 1 +▁1,2 1 +gegeben 1 +フィ 1 +▁മാത്രം 1 +▁рамках 1 +▁dövr 1 +▁familje 1 +菌 1 +似乎 1 +尾 1 +เรือ 1 +官方 1 +▁भयो 1 +▁хабар 1 +▁եթե 1 +▁كرد 1 +▁ajili 1 +โน 1 +genommen 1 +แผน 1 +▁Всички 1 +▁мъж 1 +▁staff 1 +/11/ 1 +▁प्रभाव 1 +▁कमी 1 +CHE 1 +▁සමග 1 +勒 1 +ុន 1 +Интер 1 +眠 1 +▁Gesch 1 +▁commercial 1 +不足 1 +ріб 1 +空间 1 +פרו 1 +▁выступ 1 +▁zgjedh 1 +▁informació 1 +▁Pinterest 1 +▁atención 1 +▁necessita 1 +道路 1 +▁ακόμα 1 +штво 1 +▁방법 1 +პარა 1 +ਪੁਰ 1 +တု 1 +▁nyingi 1 +▁Ermənistan 1 +▁තිබුණ 1 +ັ່ງ 1 +फल 1 +▁zmieni 1 +▁mieux 1 +▁сајт 1 +▁אַז 1 +▁además 1 +▁громадян 1 +▁بيان 1 +ინტერ 1 +रूप 1 +سائل 1 +▁بهترین 1 +▁деньги 1 +▁Дра 1 +▁қоғам 1 +公開 1 +หลวง 1 +▁सफल 1 +WAN 1 +ичної 1 +បទ 1 +▁geliş 1 +ליך 1 +▁развития 1 +▁genel 1 +ძის 1 +ိတ္ 1 +Україн 1 +▁obriga 1 +▁attraverso 1 +▁అమ్మ 1 +ወር 1 +晚上 1 +戴 1 +▁достаточно 1 +▁ikinci 1 +▁لینک 1 +вешт 1 +现代 1 +▁ønske 1 +▁стана 1 +нибудь 1 +不管 1 +▁bekerja 1 +印象 1 +раща 1 +OLI 1 +▁በላይ 1 +ಸ್ಥ 1 +แค 1 +ാഴ്ച 1 +ზის 1 +▁কাজ 1 +ऽ 1 +▁estudo 1 +ntium 1 +คณะ 1 +▁աշխարհ 1 +▁امریکی 1 +▁котором 1 +▁доктор 1 +▁tỷ 1 +劃 1 +▁country 1 +▁கால 1 +▁Παρ 1 +▁ಹೊ 1 +驗 1 +跌 1 +合わせ 1 +▁সঙ্গে 1 +뷰 1 +гроз 1 +нсульт 1 +▁Orient 1 +ציה 1 +▁политика 1 +σφαλ 1 +แดง 1 +▁Você 1 +ακού 1 +õõ 1 +ଆଇ 1 +▁serikali 1 +▁дерев 1 +ИЛ 1 +狂 1 +▁അഭിപ്രായ 1 +მინისტრ 1 +▁говорил 1 +▁nāk 1 +▁உங்கள் 1 +▁Golf 1 +▁eksempel 1 +૪ 1 +▁կենտրոն 1 +▁حمایت 1 +▁Ελλην 1 +layıb 1 +પુર 1 +信用 1 +▁речи 1 +griff 1 +年代 1 +▁tutki 1 +lýsing 1 +เพิ่มเติม 1 +နည္း 1 +▁atât 1 +视频 1 +▁عندما 1 +nivîs 1 +მედი 1 +▁Klub 1 +推进 1 +czną 1 +▁ನಡೆಸ 1 +▁støtte 1 +ėjus 1 +▁рік 1 +最初 1 +マン 1 +▁THE 1 +脂 1 +▁llibre 1 +ಲೂ 1 +এম 1 +▁thần 1 +ίκη 1 +▁temelj 1 +משרד 1 +erfolg 1 +拒 1 +تنظيم 1 +▁بیماری 1 +▁الناس 1 +▁domov 1 +▁nazaj 1 +ΕΣ 1 +บรร 1 +▁ցանկ 1 +単 1 +二十 1 +ובע 1 +▁ontvang 1 +▁শু 1 +▁הכי 1 +ოლოგი 1 +▁амь 1 +چار 1 +▁Gå 1 +עקב 1 +▁kinderen 1 +▁රේ 1 +渡 1 +▁kehidupan 1 +▁আমাদের 1 +ことができる 1 +▁दूर 1 +နီ 1 +azienda 1 +▁چىق 1 +▁достиг 1 +ऱ्या 1 +▁управління 1 +▁azonban 1 +▁ډېر 1 +创业 1 +▁easy 1 +▁geçir 1 +▁ورود 1 +刊 1 +첫 1 +ກໍ່ 1 +消费者 1 +ხელ 1 +itudine 1 +čenje 1 +どの 1 +▁irány 1 +公里 1 +▁smrt 1 +ംബ 1 +▁açıklama 1 +ജാ 1 +φυσ 1 +寒 1 +lægge 1 +▁κάτι 1 +▁alcuni 1 +tartás 1 +▁тұ 1 +▁аял 1 +альный 1 +▁mogli 1 +▁ਜਾਣ 1 +摄 1 +▁gái 1 +▁üzere 1 +셔 1 +ümüz 1 +▁curios 1 +ගොඩ 1 +ющего 1 +考虑 1 +肥 1 +▁있을 1 +▁ጥያቄ 1 +▁Roll 1 +ទិ 1 +trouw 1 +ባይ 1 +ธุรกิจ 1 +▁Zusammen 1 +▁pendidikan 1 +▁właśnie 1 +▁ନାହିଁ 1 +▁wananchi 1 +▁ίδιο 1 +▁ползва 1 +▁uživa 1 +▁해당 1 +aldea 1 +വിധ 1 +▁चाहिए 1 +σχε 1 +krip 1 +阶段 1 +▁պաշտպան 1 +▁ընթացքում 1 +▁aktuelle 1 +そうです 1 +ዚያ 1 +▁кандай 1 +▁starost 1 +цыйны 1 +ชั่น 1 +▁درخواست 1 +▁ମିଳି 1 +▁פרטי 1 +乗 1 +כתוב 1 +भाग 1 +▁профил 1 +投入 1 +ивает 1 +ပြု 1 +eficient 1 +▁бағдарлама 1 +▁කිව්ව 1 +▁төлөө 1 +ิ้ง 1 +▁газрын 1 +▁ndani 1 +▁Antonio 1 +▁plass 1 +▁ముందు 1 +कर्ता 1 +▁ثابت 1 +רחב 1 +▁igény 1 +ጠር 1 +关键 1 +round 1 +ประกาศ 1 +▁enemmän 1 +▁אביב 1 +ākā 1 +▁여러 1 +▁manual 1 +旧 1 +ராக 1 +▁اختیار 1 +▁возраст 1 +▁опыт 1 +quadra 1 +ွယ် 1 +힘 1 +▁ಏನ 1 +まず 1 +▁Bản 1 +▁olunub 1 +應用 1 +▁markii 1 +ตลอด 1 +ဖွဲ့ 1 +▁kegiatan 1 +▁त्यो 1 +▁تماس 1 +▁quý 1 +ဆီ 1 +ətə 1 +▁گرم 1 +ເຖິງ 1 +▁اچي 1 +▁weiß 1 +स्तु 1 +▁арасында 1 +▁उच्च 1 +這裡 1 +▁आठ 1 +БЕ 1 +കൃത 1 +▁Wasser 1 +▁madax 1 +संग 1 +▁Software 1 +▁ସ୍ୱ 1 +▁phép 1 +▁mesaj 1 +ສ່ວນ 1 +▁තිබේ 1 +▁όπου 1 +ធា 1 +ಯಾಗಿ 1 +▁Sign 1 +祖 1 +▁توسعه 1 +▁performance 1 +czone 1 +နယ္ 1 +▁ഇല്ല 1 +▁εδώ 1 +▁عمومی 1 +▁नागरिक 1 +▁უკვე 1 +▁através 1 +skatīt 1 +йтын 1 +ശു 1 +就像 1 +促进 1 +ศูนย์ 1 +▁khỏe 1 +▁محفوظ 1 +▁səbəb 1 +ግር 1 +ચી 1 +union 1 +▁ఎలా 1 +▁സംഭവ 1 +▁këtij 1 +รี่ 1 +▁slobod 1 +näkö 1 +▁वृ 1 +▁inclusiv 1 +▁எழுத 1 +фирм 1 +たくさん 1 +විශේෂ 1 +쪽 1 +ၾကီး 1 +▁දෙයක් 1 +登録 1 +支援 1 +▁Dienst 1 +khulu 1 +tsioon 1 +▁કામ 1 +▁baixa 1 +フォ 1 +측 1 +▁χώρο 1 +▁Daily 1 +μοι 1 +▁reserve 1 +ಿದ್ದರು 1 +ੜੀ 1 +頼 1 +johtaja 1 +▁அரு 1 +កាត់ 1 +fortuna 1 +运动 1 +▁മാറ്റ 1 +▁tässä 1 +▁consegui 1 +▁guarda 1 +บู 1 +ượt 1 +になりました 1 +▁שנים 1 +▁ಕ್ರ 1 +▁ніж 1 +လ္ 1 +災 1 +เต็ม 1 +▁बातम्या 1 +▁संविधान 1 +▁rehetra 1 +▁gebeur 1 +▁פרי 1 +סוף 1 +期间 1 +▁bucur 1 +▁ජය 1 +▁okkar 1 +כב 1 +▁նույն 1 +▁വഴി 1 +▁računa 1 +њ 1 +踏 1 +▁ұйым 1 +Ř 1 +оцін 1 +▁français 1 +처럼 1 +いたします 1 +▁Құ 1 +▁بولغان 1 +AVA 1 +▁айыл 1 +육 1 +柔 1 +による 1 +መው 1 +ológia 1 +▁egz 1 +规划 1 +丝 1 +▁período 1 +▁pierwsze 1 +▁qadın 1 +סטר 1 +ခင္ 1 +ເບິ່ງ 1 +▁biểu 1 +▁perioada 1 +▁elkaar 1 +▁ਲੈ 1 +▁40% 1 +▁özellikle 1 +▁ingredient 1 +▁problème 1 +▁ইসলাম 1 +ୈ 1 +▁есеп 1 +▁සිංහල 1 +xistin 1 +▁중국 1 +▁First 1 +▁dowlad 1 +министр 1 +▁vrlo 1 +▁ജീവ 1 +任务 1 +ינט 1 +▁супер 1 +胡 1 +仔 1 +目標 1 +▁anything 1 +▁دقیق 1 +েন্ট 1 +íveis 1 +▁vznik 1 +លោក 1 +әсіп 1 +意思 1 +គ្រោះ 1 +參加 1 +▁הרבה 1 +▁образование 1 +▁քաղաքական 1 +مىسى 1 +▁permainan 1 +▁земель 1 +▁беларускі 1 +▁inimese 1 +२० 1 +丹 1 +▁अनेक 1 +簡單 1 +သို႔ 1 +▁webbplats 1 +▁бөгөөд 1 +▁kənd 1 +ပြည် 1 +▁niekto 1 +▁ማለት 1 +ിപ്പിച്ച 1 +▁සෙ 1 +▁Review 1 +ჭირ 1 +▁දන්න 1 +ପେ 1 +hinta 1 +▁Local 1 +瓦 1 +▁biasanya 1 +▁beszél 1 +▁siyasət 1 +ശേഷം 1 +▁තියෙන 1 +▁عشر 1 +英文 1 +樹 1 +▁केंद्र 1 +เที่ยว 1 +角色 1 +děj 1 +▁مشکلات 1 +相手 1 +做出 1 +▁flash 1 +▁තැන 1 +wikkel 1 +稳定 1 +▁навіть 1 +▁म्हणजे 1 +▁mechan 1 +ഫി 1 +▁విజయ 1 +الرياض 1 +setzung 1 +▁būtu 1 +▁eleva 1 +ອຍ 1 +telefon 1 +اعتبار 1 +孕 1 +ಖಾ 1 +▁hardcore 1 +きて 1 +▁ചെയ്തു 1 +▁млади 1 +ΕΛ 1 +къде 1 +▁yihiin 1 +▁ഡോ 1 +եկտ 1 +▁төв 1 +▁shqiptarë 1 +詳細 1 +▁изјави 1 +▁bizony 1 +▁magistr 1 +▁आपके 1 +tynyt 1 +▁darauf 1 +druck 1 +ότητας 1 +▁හිමි 1 +객 1 +▁algunos 1 +▁Sigur 1 +ാലും 1 +▁feladat 1 +アル 1 +えた 1 +ensemble 1 +▁місцев 1 +ணை 1 +ზარ 1 +▁ব্যা 1 +食物 1 +▁wymaga 1 +▁نوشته 1 +▁ଖବର 1 +▁පුළුවන් 1 +▁میلیون 1 +▁dictum 1 +ଜେ 1 +薄 1 +▁નહીં 1 +탈 1 +▁বলেন 1 +▁αξι 1 +▁अगर 1 +▁стало 1 +事业 1 +ираат 1 +ੀਂ 1 +▁keadaan 1 +▁innehåll 1 +▁постоянно 1 +▁Bài 1 +ადგენ 1 +Українськ 1 +ពិ 1 +വിദ്യ 1 +వీడియో 1 +電腦 1 +▁spesial 1 +isuus 1 +▁നിര 1 +特殊 1 +▁करोड 1 +▁especialmente 1 +▁ശ്രീ 1 +▁všetko 1 +действие 1 +▁публика 1 +意见 1 +檔 1 +▁രാജ്യ 1 +ನ್ನೂ 1 +▁pomoč 1 +เดิม 1 +ыкты 1 +▁Срп 1 +▁tijdens 1 +ন্ন 1 +forening 1 +เว็บไซต์ 1 +▁पानी 1 +θει 1 +范围 1 +▁دختر 1 +энэ 1 +หาย 1 +▁заедно 1 +▁തിരിച്ച 1 +▁گا۔ 1 +▁comfort 1 +้ํา 1 +▁ľud 1 +▁гэдэг 1 +ຖະ 1 +▁seksual 1 +▁տեղի 1 +▁üld 1 +▁direito 1 +▁посебн 1 +treffen 1 +▁Beispiel 1 +▁міндет 1 +▁siihen 1 +ებები 1 +▁विदेश 1 +▁become 1 +ढा 1 +బడ 1 +ध्य 1 +▁ХХ 1 +▁лікар 1 +skrif 1 +純 1 +电视 1 +вэр 1 +▁بشر 1 +IJA 1 +▁ուղղ 1 +▁അഭി 1 +▁युवा 1 +▁ملڪ 1 +▁Article 1 +ırdı 1 +▁euskara 1 +子供 1 +ിക്കുന്നത് 1 +▁wereld 1 +וסט 1 +▁ورک 1 +树 1 +▁mbalimbali 1 +▁oluştur 1 +▁rohkem 1 +▁Durante 1 +सकेको 1 +▁centru 1 +▁return 1 +ಅಂ 1 +terapeut 1 +▁गरेर 1 +▁מסו 1 +ադարձ 1 +dienā 1 +▁tinggal 1 +▁Αρχ 1 +յուր 1 +masuk 1 +IDE 1 +տնտես 1 +Ệ 1 +癌 1 +▁jednu 1 +▁សុ 1 +▁አድር 1 +▁ਬਿ 1 +▁کرتا 1 +▁მსოფლიო 1 +▁պետական 1 +▁λόγο 1 +▁статус 1 +▁зазнач 1 +▁مانند 1 +mærke 1 +ුවා 1 +קאָ 1 +考えて 1 +TRE 1 +▁natuurlijk 1 +▁τόσο 1 +ebilirsiniz 1 +histoire 1 +▁pendant 1 +▁الماضي 1 +▁आयोजना 1 +▁정도 1 +▁театр 1 +▁Font 1 +▁კიდევ 1 +프로그램 1 +気持ち 1 +TIL 1 +の中で 1 +វិញ 1 +▁మరో 1 +ставлен 1 +現場 1 +▁economi 1 +构 1 +▁каждый 1 +▁gäller 1 +▁Departament 1 +▁අවශ් 1 +struttura 1 +registre 1 +ုံး 1 +NIE 1 +▁комитет 1 +▁විතර 1 +▁1982 1 +▁engelsk 1 +▁ହେଉ 1 +▁انہیں 1 +▁पूरा 1 +məyi 1 +тельных 1 +سعودي 1 +▁ओली 1 +仁 1 +意识 1 +מון 1 +registra 1 +עק 1 +▁küll 1 +ນຶ່ງ 1 +▁xizmat 1 +製作 1 +క్షణ 1 +▁අනු 1 +دۇر 1 +ศรี 1 +▁ქართული 1 +ਐ 1 +▁informācija 1 +影片 1 +으며 1 +▁કરવામાં 1 +ბურ 1 +σιο 1 +шілік 1 +วิทยา 1 +evalua 1 +▁రెండు 1 +찰 1 +ฎ 1 +▁infatti 1 +ங்களுக்கு 1 +作為 1 +১৫ 1 +▁diplomat 1 +▁вкус 1 +▁ನೀವು 1 +▁τιμ 1 +▁هفته 1 +సె 1 +aethau 1 +fold 1 +zähl 1 +▁zapewni 1 +▁কিছু 1 +ေပၚ 1 +▁Mercedes 1 +düğü 1 +行动 1 +本当に 1 +恋 1 +▁ભારત 1 +印度 1 +▁Chủ 1 +nefnd 1 +ђи 1 +▁prevede 1 +▁Jangan 1 +▁ընդուն 1 +改变 1 +ตัวเอง 1 +▁међу 1 +▁करण्यात 1 +явление 1 +산업 1 +▁monument 1 +▁પરિ 1 +歷 1 +▁మంది 1 +▁פֿון 1 +▁встреч 1 +Video 1 +人类 1 +נוע 1 +遺 1 +▁Αυτό 1 +▁професионал 1 +▁Республикасының 1 +▁iemand 1 +▁έν 1 +▁мають 1 +දීම 1 +携 1 +▁хугацаа 1 +▁торгов 1 +бру 1 +ΡΑ 1 +ឯក 1 +▁كەل 1 +▁Θα 1 +መንግሥት 1 +▁پاڪستان 1 +ಗಾಗಿ 1 +▁hefyd 1 +機能 1 +ไซ 1 +▁കിട്ട 1 +くなる 1 +ندگان 1 +ጆ 1 +▁содержа 1 +வாக 1 +▁തല 1 +ԵՐ 1 +ിലുള്ള 1 +▁председник 1 +▁Հանրապետության 1 +ଝ 1 +▁phạm 1 +▁ଜିଲ୍ଲା 1 +▁பதிவு 1 +▁życia 1 +支付 1 +▁samband 1 +▁forskning 1 +▁المصري 1 +▁1941 1 +കൊണ്ടു 1 +ဆက္ 1 +▁údajov 1 +▁nguồn 1 +▁Hrvatskoj 1 +怎麼 1 +▁شیئر 1 +▁perusahaan 1 +▁нашата 1 +vaiht 1 +▁결과 1 +เธ 1 +▁մասնակց 1 +łego 1 +▁Universidade 1 +笔 1 +ประกอบ 1 +▁förstå 1 +РТ 1 +▁대표 1 +mişdir 1 +▁بہتر 1 +▁Nunc 1 +පී 1 +جمل 1 +လံုး 1 +▁rappresenta 1 +ચિ 1 +業務 1 +覺 1 +っていた 1 +іңіз 1 +ượng 1 +बहादुर 1 +▁Internacional 1 +▁megfelelő 1 +▁எதிர் 1 +▁ਗੁਰੂ 1 +ולד 1 +▁шанс 1 +قطاع 1 +配合 1 +▁مسائل 1 +သတင္း 1 +▁encuentra 1 +▁افزود 1 +▁særlig 1 +ЛЬ 1 +▁आएको 1 +ДЫ 1 +▁زنان 1 +知名 1 +ոռ 1 +出版 1 +▁turpis 1 +▁почему 1 +zdrav 1 +ระหว่าง 1 +컴 1 +▁todella 1 +вероятно 1 +ۇڭ 1 +ຄ້າ 1 +▁తప్ప 1 +чень 1 +渐 1 +▁soprattutto 1 +▁अमेरिका 1 +죠 1 +ยนต์ 1 +ล่าสุด 1 +ອມ 1 +▁diventa 1 +ացած 1 +▁eveniment 1 +▁lietuvi 1 +▁tracta 1 +▁Datuk 1 +杨 1 +▁Саве 1 +链 1 +▁하지만 1 +▁камер 1 +ੜੇ 1 +▁speel 1 +▁точки 1 +เฉพาะ 1 +▁každé 1 +书记 1 +▁įvair 1 +ਦੇਸ਼ 1 +γον 1 +係 1 +▁organización 1 +▁années 1 +▁തോന്ന 1 +▁күні 1 +▁шмат 1 +hẳng 1 +▁ajánl 1 +巨大 1 +▁خانواده 1 +ышты 1 +білі 1 +▁فوق 1 +歳 1 +ဆံုး 1 +▁нашите 1 +تمام 1 +姓 1 +մար 1 +▁խնդիր 1 +졌 1 +▁saņem 1 +കാശ 1 +ತ್ತಿ 1 +▁Carlos 1 +කුත් 1 +รายการ 1 +▁Суд 1 +诚 1 +▁మీద 1 +ሺ 1 +▁ограничен 1 +▁kteří 1 +▁kanskje 1 +▁Люб 1 +▁estudio 1 +▁прояв 1 +▁poziom 1 +ڪري 1 +ზია 1 +▁باشید 1 +▁УИХ 1 +넘 1 +▁üzerine 1 +▁хамгийн 1 +▁선택 1 +▁Continue 1 +▁hưởng 1 +▁VOA 1 +▁clear 1 +▁ದೇವ 1 +顔 1 +កំពុង 1 +▁खोज 1 +▁آھي 1 +štva 1 +▁نمود 1 +αξ 1 +▁കഴിയ 1 +▁σημαντικ 1 +▁современ 1 +ელე 1 +ילים 1 +▁protože 1 +▁своим 1 +▁своего 1 +诉 1 +専 1 +荣 1 +▁implant 1 +▁पत्रकार 1 +▁bahay 1 +▁דאס 1 +▁após 1 +লীগ 1 +▁англи 1 +▁hadisə 1 +▁chống 1 +释 1 +▁tecnologia 1 +▁forbindelse 1 +▁امور 1 +ជាង 1 +ಂಡ್ 1 +စည်း 1 +긴 1 +降低 1 +責 1 +盖 1 +ാനുള്ള 1 +▁مقاله 1 +▁hãy 1 +软件 1 +▁plán 1 +▁esperant 1 +▁قبول 1 +▁tổng 1 +▁ಉಪ 1 +尤其是 1 +▁Đăng 1 +እኛ 1 +▁прво 1 +▁général 1 +▁Александр 1 +教师 1 +نتج 1 +ख्या 1 +Qué 1 +▁представи 1 +মূল 1 +λλα 1 +ალურ 1 +怎 1 +▁الخط 1 +▁Ltd 1 +scherm 1 +тардың 1 +▁Bashk 1 +▁Біл 1 +贷 1 +ตัด 1 +▁اظهار 1 +▁đảm 1 +▁إليه 1 +严重 1 +ካል 1 +tryck 1 +စစ္ 1 +ሰራ 1 +обходим 1 +▁використання 1 +▁اتحاد 1 +▁జిల్లా 1 +▁tidigare 1 +▁ನಾನು 1 +▁niečo 1 +▁उनके 1 +▁ağır 1 +▁വലിയ 1 +ोऽ 1 +Shqip 1 +රාජ 1 +▁spokoj 1 +险 1 +▁mauris 1 +婦 1 +▁Journal 1 +▁belangrijk 1 +▁asupra 1 +▁ورکړ 1 +▁saúde 1 +kunnan 1 +्ह 1 +եդ 1 +ட்டை 1 +▁lucruri 1 +îyê 1 +4,5 1 +รายละเอียด 1 +▁ત્યારે 1 +cyjnych 1 +▁bzw 1 +valent 1 +სამართ 1 +ረጋ 1 +ИЈА 1 +քին 1 +▁demikian 1 +根據 1 +జె 1 +▁жөнүндө 1 +▁אויס 1 +ीकरण 1 +▁technique 1 +▁ABD 1 +▁كتاب 1 +BRE 1 +▁технология 1 +skolen 1 +帰 1 +▁(18+) 1 +텐 1 +▁restoran 1 +ผลิต 1 +▁विरोध 1 +ຂາ 1 +▁něco 1 +▁үс 1 +▁البته 1 +▁hombre 1 +裏 1 +▁época 1 +ພັກ 1 +アップ 1 +▁ciddi 1 +堅 1 +ちょっと 1 +즐 1 +▁резерв 1 +▁마음 1 +▁प्ल 1 +▁проведення 1 +撮 1 +պատրաստ 1 +▁жоқ 1 +プラ 1 +▁vigtig 1 +▁celý 1 +▁ਹੋਣ 1 +ヒ 1 +▁խմբ 1 +ാനും 1 +▁پوست 1 +▁progetto 1 +ออกมา 1 +▁କଲେ 1 +laştı 1 +▁üç 1 +▁Üniversitesi 1 +▁качестве 1 +ಭಿ 1 +prosjekt 1 +ίωση 1 +▁ਪੈ 1 +▁ከአ 1 +സീ 1 +整理 1 +▁deutsche 1 +ੜ੍ਹ 1 +▁তিনি 1 +▁ଉତ୍ 1 +▁шарт 1 +举行 1 +वृत्त 1 +ቀጥ 1 +▁lanjut 1 +▁період 1 +▁gadā 1 +▁böyle 1 +អូ 1 +ี้ย 1 +▁honetan 1 +๒ 1 +▁společnost 1 +▁مجھے 1 +▁pojawi 1 +▁machine 1 +▁thôi 1 +RED 1 +▁אחת 1 +ņiem 1 +喔 1 +cyjny 1 +▁research 1 +▁ዓመት 1 +មុន 1 +ాల్లో 1 +spør 1 +హో 1 +▁diferents 1 +▁храм 1 +敗 1 +兄 1 +Азаттык 1 +▁Когда 1 +▁Gabriel 1 +нню 1 +ۇنداق 1 +बाद 1 +ўскі 1 +▁ആവശ്യ 1 +▁Qeyd 1 +विद्य 1 +▁обаче 1 +ۋې 1 +қтар 1 +▁departament 1 +నాలు 1 +ỳ 1 +▁hjælpe 1 +▁मेरे 1 +ικοί 1 +▁않는 1 +▁кодекс 1 +▁مشخص 1 +ಕೊಂಡು 1 +理想 1 +▁правильно 1 +▁kobiet 1 +▁شورای 1 +▁pratica 1 +▁current 1 +ැහැ 1 +深圳 1 +▁başqa 1 +styrelsen 1 +Национал 1 +▁өзү 1 +னும் 1 +▁చూడ 1 +▁sensibil 1 +▁хочу 1 +שטע 1 +詳 1 +▁πρώτη 1 +▁związan 1 +▁ਰਹੇ 1 +合理 1 +ढी 1 +プレ 1 +▁సో 1 +▁वेळ 1 +どこ 1 +סוג 1 +▁sebenarnya 1 +▁així 1 +▁Polsce 1 +עניין 1 +▁жөн 1 +▁olacaq 1 +보험 1 +НІ 1 +száll 1 +ិន 1 +欣 1 +▁ղեկավար 1 +▁cậu 1 +▁محدود 1 +▁зависи 1 +▁εργασ 1 +▁Васил 1 +超過 1 +ístico 1 +▁лв 1 +روب 1 +▁ovaj 1 +súly 1 +огляд 1 +誠 1 +▁dekora 1 +▁meningkatkan 1 +▁sağlık 1 +▁کراچی 1 +▁చేశారు 1 +▁препарат 1 +TAK 1 +▁chương 1 +▁გულ 1 +▁három 1 +ಅ 1 +況 1 +嘴 1 +▁akhirnya 1 +▁Поэтому 1 +▁trygg 1 +ічної 1 +жылы 1 +ახლო 1 +页 1 +▁منتشر 1 +▁לעשות 1 +▁మధ్య 1 +▁Express 1 +▁vlastní 1 +▁съвет 1 +▁Castell 1 +ช่อง 1 +▁ڏس 1 +ฟัง 1 +败 1 +▁हमारे 1 +سٹر 1 +▁ಹೋಗ 1 +때 1 +เพราะ 1 +▁kolekt 1 +မင္း 1 +死亡 1 +▁بگیر 1 +▁ٿيڻ 1 +▁فایل 1 +▁ਪੁ 1 +article 1 +▁często 1 +▁trzeba 1 +▁snaž 1 +니까 1 +ffordd 1 +年轻 1 +▁csapat 1 +▁patrimoni 1 +建議 1 +▁ମହା 1 +УН 1 +▁mėn 1 +懷 1 +掛 1 +▁մրց 1 +▁Tổng 1 +▁현재 1 +▁ವೈ 1 +▁वाली 1 +ρους 1 +职业 1 +▁normativ 1 +▁يىل 1 +〜 1 +암 1 +▁ਵਾਲੇ 1 +▁kanilang 1 +▁լինել 1 +▁течение 1 +▁sidste 1 +▁жилийн 1 +再次 1 +績 1 +сіб 1 +▁ziyaret 1 +してください 1 +▁invece 1 +ฟิ 1 +▁نماز 1 +▁nyelv 1 +▁təşkilat 1 +▁penuh 1 +▁bölüm 1 +▁мотив 1 +▁societat 1 +▁Москва 1 +บ้าง 1 +▁Здрав 1 +▁fortsatt 1 +ブル 1 +ဘယ္ 1 +повед 1 +๑ 1 +▁arbejds 1 +▁운영 1 +▁бяха 1 +គ្រប់ 1 +▁وروسته 1 +▁музика 1 +慮 1 +▁mënyrë 1 +しております 1 +នាំ 1 +स्ट्र 1 +▁کوشش 1 +ολογία 1 +▁siebie 1 +▁помоћ 1 +▁ಕಾಲ 1 +▁abandon 1 +▁;-) 1 +▁легко 1 +払 1 +▁Erfahrung 1 +▁સમાચાર 1 +▁мүмкүн 1 +▁تحریک 1 +▁රශ්න 1 +▁bakteri 1 +ရန္ 1 +โซ 1 +▁Geschäft 1 +▁популярн 1 +▁erineva 1 +▁3,5 1 +▁معمول 1 +▁വിവര 1 +ക്രമ 1 +▁zahtev 1 +▁hỗ 1 +ေနာက္ 1 +ၿမိဳ႕ 1 +▁particolare 1 +▁πάνω 1 +▁жител 1 +▁Product 1 +సారి 1 +台湾 1 +逆 1 +거리 1 +ֵ 1 +״ 1 +▁производство 1 +▁واضح 1 +▁започна 1 +▁කියා 1 +▁Royal 1 +這種 1 +હો 1 +೨ 1 +▁екип 1 +▁ڏينهن 1 +jpg 1 +▁ಯಾವ 1 +▁خواب 1 +ưởng 1 +如今 1 +▁menunjukkan 1 +▁الخميس 1 +১৬ 1 +ϊ 1 +▁זמן 1 +จับ 1 +產業 1 +妈妈 1 +尋 1 +▁تائين 1 +▁Vilniaus 1 +▁cilvēki 1 +▁ಕರ್ನಾಟಕ 1 +ပါတယ္ 1 +▁konferenci 1 +▁לקבל 1 +قيم 1 +▁દ્વારા 1 +อย่างไร 1 +▁дейност 1 +ΤΙ 1 +▁लिख 1 +陪 1 +归 1 +య్ 1 +▁ඉතා 1 +唯一 1 +▁ਸੋ 1 +▁ligula 1 +▁qeveri 1 +ँदै 1 +install 1 +marknad 1 +▁बारेमा 1 +ຶ 1 +▁Mərkəzi 1 +▁сразу 1 +▁ସବୁ 1 +▁Европск 1 +▁verkligen 1 +ရှင် 1 +▁பார்த்த 1 +▁ქვეყნ 1 +▁الإنسان 1 +▁memilih 1 +ลูกค้า 1 +▁трудно 1 +▁जिल्ह 1 +▁recomenda 1 +▁kūr 1 +▁جماعت 1 +ставить 1 +svēt 1 +ातून 1 +ისათვის 1 +ەڭ 1 +ଢ 1 +▁semplice 1 +▁together 1 +▁వ్యక్త 1 +▁kubwa 1 +老師 1 +ybę 1 +▁regering 1 +▁aucun 1 +सकाळ 1 +9.00 1 +商业 1 +练 1 +覧 1 +▁අධ් 1 +▁Eğitim 1 +▁საქართველოში 1 +▁गर्नुहोस् 1 +▁واپس 1 +▁դեմ 1 +这次 1 +ዘጋ 1 +మై 1 +▁mesure 1 +ภาษา 1 +▁persönlich 1 +▁обеспечен 1 +▁lâu 1 +▁आदि 1 +適合 1 +▁توانید 1 +ŵ 1 +лэгч 1 +▁хороо 1 +ことができ 1 +רשת 1 +ësisë 1 +ΜΑ 1 +웨 1 +තරම් 1 +▁වෙත 1 +žnj 1 +▁satisf 1 +伟 1 +饭 1 +▁måtte 1 +▁Management 1 +▁পড় 1 +▁olnud 1 +ирование 1 +▁મને 1 +▁stránka 1 +ијом 1 +▁Борис 1 +٠ 1 +▁институт 1 +सचिव 1 +몰 1 +▁Youtube 1 +ല്ലോ 1 +▁bietet 1 +▁sprawdz 1 +▁آورد 1 +井 1 +▁beynəlxalq 1 +▁Museum 1 +▁hjelpe 1 +▁אלא 1 +絡 1 +ṇ 1 +▁Slovenije 1 +▁Singh 1 +誤 1 +尺 1 +৷ 1 +▁třeba 1 +▁Kannada 1 +▁كنت 1 +ዘመ 1 +▁овог 1 +šķi 1 +เลือด 1 +▁शर्मा 1 +▁Britani 1 +▁السياسي 1 +그래 1 +пион 1 +▁turizm 1 +ពេញ 1 +▁ഭാഗ 1 +▁statisti 1 +▁кыз 1 +▁социјал 1 +▁hätte 1 +▁आयोग 1 +מאל 1 +▁knapp 1 +층 1 +▁Общи 1 +▁చేస్తున్న 1 +schloss 1 +▁práctica 1 +▁fjalë 1 +▁kwanza 1 +▁koffie 1 +▁сторін 1 +ម៉ា 1 +ထူး 1 +▁ځای 1 +אנג 1 +ສານ 1 +採 1 +εντ 1 +▁어떤 1 +▁ہوتی 1 +▁القر 1 +背景 1 +▁книга 1 +▁Алекс 1 +▁companie 1 +သမီး 1 +fanyika 1 +▁Büyük 1 +owaniu 1 +▁తెలుస 1 +▁концерт 1 +▁اپنا 1 +Leistung 1 +消费 1 +▁voluptate 1 +▁Rück 1 +▁erfaring 1 +blement 1 +尤 1 +认识 1 +릴 1 +▁hubungan 1 +▁hôm 1 +▁බවට 1 +อาการ 1 +เขียน 1 +▁nghị 1 +▁експерт 1 +ଗତ 1 +▁ज्यादा 1 +ပြန် 1 +wujud 1 +彻 1 +▁legjobb 1 +▁прямо 1 +▁artıq 1 +▁зээл 1 +▁Kosovë 1 +հաշվ 1 +โป 1 +▁බොහෝ 1 +执 1 +▁configura 1 +▁внесен 1 +ฑ 1 +▁муниципал 1 +ජීව 1 +▁hissə 1 +▁اہل 1 +▁الوقت 1 +▁کھیل 1 +&# 1 +คุณภาพ 1 +▁Мұ 1 +俄 1 +께 1 +▁انصاف 1 +▁کیفیت 1 +▁szervezet 1 +▁pouvoir 1 +ገኙ 1 +▁cực 1 +這次 1 +▁ਕੋਈ 1 +▁చిత్రం 1 +ந்திர 1 +ബൈ 1 +▁Бор 1 +arinnar 1 +艾 1 +▁വാര് 1 +▁leader 1 +snitt 1 +憶 1 +藍 1 +ότερα 1 +RET 1 +களா 1 +▁حوزه 1 +ස්ථාන 1 +▁café 1 +參與 1 +▁kirjuta 1 +▁اطلاع 1 +თქვა 1 +▁exempel 1 +▁ضلع 1 +γραφή 1 +kezelés 1 +▁Dokument 1 +▁ऑफ 1 +▁یہاں 1 +ësisht 1 +扣 1 +屏 1 +▁xHamster 1 +▁शुरू 1 +▁رهبر 1 +▁bilmə 1 +込み 1 +▁Majlis 1 +创造 1 +ราว 1 +主任 1 +▁বড় 1 +思考 1 +▁предизвик 1 +მზად 1 +注册 1 +▁Etiket 1 +▁вияв 1 +ざ 1 +じゃない 1 +▁میڈیا 1 +▁هغو 1 +ියාව 1 +iņā 1 +ÖR 1 +▁Pokud 1 +▁кадр 1 +▁ଉପରେ 1 +▁starfs 1 +另 1 +klubb 1 +泡 1 +▁порядке 1 +参考 1 +schluss 1 +▁خیال 1 +▁картин 1 +ുണ്ടായ 1 +▁красив 1 +hjælp 1 +膠 1 +▁ਮੰਤਰੀ 1 +▁ଟଙ୍କା 1 +▁اروپا 1 +制作 1 +▁ainult 1 +▁ĉiuj 1 +▁nisl 1 +จัดการ 1 +奈 1 +슬 1 +▁ಕೂಡ 1 +▁Черн 1 +▁ჩამო 1 +θεωρ 1 +▁մենք 1 +świę 1 +▁Монголын 1 +艺 1 +ฏ 1 +▁између 1 +▁دہشت 1 +▁laptop 1 +material 1 +▁история 1 +ਵਿ 1 +▁Головн 1 +▁байланысты 1 +寻 1 +▁berkenaan 1 +prowadzi 1 +▁agree 1 +ාවක් 1 +▁կայ 1 +ЕНИ 1 +意义 1 +환경 1 +બો 1 +▁trenger 1 +記者 1 +▁solidari 1 +ාත්මක 1 +▁verdad 1 +uddannelse 1 +▁беларускай 1 +▁पहुंच 1 +引起 1 +開發 1 +Особ 1 +作業 1 +奏 1 +俄罗斯 1 +壁 1 +▁თამაში 1 +tanggung 1 +flokk 1 +რით 1 +▁सेक्स 1 +▁przedstawi 1 +▁تازه 1 +▁zbyt 1 +▁சூ 1 +傳統 1 +แจ้ง 1 +▁исследова 1 +▁아니라 1 +كشف 1 +▁పొంద 1 +▁kroner 1 +kläd 1 +▁ध्यान 1 +シャ 1 +[5] 1 +▁erotisk 1 +λάβ 1 +ვიდეო 1 +潜 1 +妇 1 +૮ 1 +gyógy 1 +จิต 1 +▁resposta 1 +ίτη 1 +5,000 1 +풍 1 +▁κυβέρνηση 1 +▁مقرر 1 +▁оптим 1 +ICO 1 +▁picture 1 +▁ಹೊರ 1 +ίνει 1 +押 1 +ເຂດ 1 +▁tillsammans 1 +▁الخل 1 +ացնել 1 +▁jarrai 1 +▁فرانس 1 +▁servicii 1 +▁Fantas 1 +▁경기 1 +ΤΗ 1 +圣 1 +赤 1 +♪ 1 +▁მეორე 1 +▁গো 1 +sanız 1 +▁جيڪي 1 +べき 1 +▁kereta 1 +▁নতুন 1 +▁දේශපාලන 1 +▁ngành 1 +ფიქრ 1 +កាល 1 +▁Μέ 1 +▁اصلاح 1 +ബാ 1 +費用 1 +▁ľudí 1 +▁никогда 1 +▁рецепт 1 +grün 1 +▁عزیز 1 +୍ଵ 1 +ශි 1 +▁συγκ 1 +あまり 1 +ດ້ານ 1 +ୌ 1 +▁क्ल 1 +▁três 1 +▁салбар 1 +ત્રી 1 +ാക്കി 1 +▁bazı 1 +建築 1 +▁trạng 1 +▁खर्च 1 +无论 1 +ភ្ល 1 +至少 1 +생활 1 +词 1 +▁ماڻهو 1 +▁lựa 1 +බී 1 +ົ່າ 1 +▁норматив 1 +▁network 1 +▁شيء 1 +報告 1 +責任 1 +მც 1 +финанс 1 +strøm 1 +纷 1 +ውያን 1 +ដាក់ 1 +▁Sultan 1 +▁including 1 +▁dakika 1 +▁मनो 1 +違い 1 +▁foydalan 1 +▁szabály 1 +▁አይደለም 1 +▁हुँदै 1 +▁символ 1 +▁રહી 1 +▁suggest 1 +▁जोड 1 +МЕН 1 +▁mondial 1 +詞 1 +핑 1 +▁parasites 1 +ρωση 1 +▁قلب 1 +▁иргэд 1 +ဖို့ 1 +ሣ 1 +▁برنامج 1 +▁здійс 1 +▁Mitglied 1 +東西 1 +▁standart 1 +▁Europos 1 +▁آخرین 1 +▁மன 1 +▁Verein 1 +ຕົວ 1 +혜 1 +▁şirkət 1 +▁Алматы 1 +▁وژل 1 +▁الحال 1 +习近平 1 +贫 1 +雜 1 +▁جيڪو 1 +ネット 1 +▁редакц 1 +▁thái 1 +▁ٻار 1 +▁verander 1 +ട്ടെ 1 +စစ် 1 +ଣୀ 1 +культ 1 +כיר 1 +▁گرفتار 1 +Nkulunkulu 1 +▁walaupun 1 +octubre 1 +цією 1 +▁gagn 1 +▁దేవ 1 +▁gegn 1 +▁वाढ 1 +らず 1 +prezent 1 +วิธีการ 1 +优势 1 +歷史 1 +สิทธิ 1 +쳐 1 +▁миллион 1 +▁تقریب 1 +▁ከተማ 1 +説明 1 +ตั้งแต่ 1 +ธา 1 +പതി 1 +gebracht 1 +仲 1 +álás 1 +洞 1 +幫助 1 +▁everything 1 +▁නමුත් 1 +▁anggota 1 +▁କିଛି 1 +▁ಹೆಚ್ಚು 1 +› 1 +ដែរ 1 +続け 1 +▁katalog 1 +កិច្ច 1 +▁सामाजिक 1 +▁Bütün 1 +▁жоспар 1 +購買 1 +▁православ 1 +▁ચાલ 1 +▁Банк 1 +ເຫັນ 1 +▁yüksək 1 +ოლი 1 +здрав 1 +▁নাম 1 +доў 1 +แฟน 1 +▁укук 1 +▁community 1 +▁observ 1 +ติดต่อ 1 +əcəyi 1 +▁دکتر 1 +▁اعظم 1 +▁szeretné 1 +દ્ધ 1 +እግዚአብሔር 1 +ovací 1 +▁бидат 1 +૬ 1 +ၼ 1 +▁ciekaw 1 +▁валют 1 +մարտ 1 +ుతూ 1 +▁відповідно 1 +▁kiếm 1 +由於 1 +ेश्वर 1 +ництво 1 +针对 1 +▁arrest 1 +婆 1 +ម៉ោង 1 +▁predsjednik 1 +▁Mitarbeiter 1 +▁difficult 1 +完整 1 +▁Юр 1 +▁ಸೇರಿ 1 +輯 1 +▁σχετικ 1 +άνθρωπο 1 +▁répond 1 +▁ekzist 1 +▁осіб 1 +▁берүү 1 +僕 1 +รีวิว 1 +▁cạnh 1 +▁conocer 1 +▁жерде 1 +▁мэт 1 +បន្ត 1 +▁xog 1 +澳门 1 +▁Bitcoin 1 +▁kjærlighet 1 +▁अस्पताल 1 +▁använder 1 +▁이런 1 +▁اولین 1 +持續 1 +ఫీ 1 +▁नगरपालिका 1 +▁कविता 1 +▁Интернет 1 +شرف 1 +▁Control 1 +średni 1 +▁pasauli 1 +▁diferencia 1 +коммун 1 +览 1 +幣 1 +▁राष्ट्रपति 1 +▁جبکہ 1 +▁무료 1 +▁ervaring 1 +ULU 1 +組織 1 +▁నాకు 1 +вршен 1 +łość 1 +টো 1 +กรุง 1 +▁íslensk 1 +▁उत्पादन 1 +▁너무 1 +▁Además 1 +ЧИ 1 +现场 1 +▁αδ 1 +▁представник 1 +ស៊ 1 +ニュー 1 +▁vətəndaş 1 +▁फेसबुक 1 +▁đoàn 1 +▁освіти 1 +▁egiteko 1 +▁tertentu 1 +▁двор 1 +▁дней 1 +冒 1 +▁yalnız 1 +▁प्रतिक्रिया 1 +▁konusunda 1 +ИЙ 1 +弹 1 +▁врати 1 +이라는 1 +▁eftersom 1 +следстви 1 +ฒ 1 +utveckling 1 +রাষ্ট্র 1 +▁ڪجهه 1 +地域 1 +▁giriş 1 +แทน 1 +తంగా 1 +▁fjern 1 +ર્થ 1 +เฉ 1 +տալ 1 +▁síðu 1 +▁studij 1 +▁infrastruktur 1 +▁أمر 1 +корисни 1 +توقع 1 +萨 1 +ເອົາ 1 +▁געווען 1 +▁ऐसे 1 +▁posibilidad 1 +मूल 1 +▁ज्या 1 +▁кес 1 +▁teisės 1 +▁acuerdo 1 +▁župan 1 +ജെ 1 +▁බලන්න 1 +▁ብሎ 1 +▁szív 1 +▁Project 1 +发挥 1 +จุ 1 +甘 1 +▁مربوط 1 +顯示 1 +▁dizajn 1 +▁प्रमाण 1 +麵 1 +ရောက် 1 +អត្ថបទ 1 +▁użytkow 1 +▁vəzifə 1 +▁кейін 1 +▁మాట్లాడ 1 +▁gärna 1 +宣布 1 +ର୍ତ୍ତ 1 +ประเทศไทย 1 +päť 1 +▁तपाईं 1 +▁spørsmål 1 +▁жауап 1 +▁млрд 1 +▁وڌيڪ 1 +▁müddət 1 +▁თქვენი 1 +▁ਗੁ 1 +ហ្ 1 +拓 1 +耶 1 +▁دشمن 1 +▁comunidade 1 +െടുക്ക 1 +▁اصول 1 +열 1 +▁сцена 1 +▁bashk 1 +▁τώρα 1 +গুলো 1 +▁사랑 1 +▁ولایت 1 +▁Thanh 1 +▁забав 1 +刀 1 +髮 1 +▁teknoloji 1 +▁ఒక్క 1 +▁кызы 1 +▁գն 1 +▁ёс 1 +ΑΝ 1 +direkt 1 +▁difficile 1 +řízení 1 +▁famille 1 +▁ذکر 1 +కోవ 1 +识 1 +▁Klein 1 +▁põhi 1 +▁совсем 1 +▁przeciw 1 +▁سياسي 1 +stärk 1 +▁журналист 1 +委员会 1 +▁শুরু 1 +▁නිදහස 1 +การศึกษา 1 +▁véd 1 +▁erős 1 +恶 1 +αγωγή 1 +▁которое 1 +▁tərəf 1 +▁χρήση 1 +▁उपयोग 1 +ագիր 1 +רוח 1 +ვილი 1 +▁Strategi 1 +▁يېڭى 1 +▁katawan 1 +▁۱۰ 1 +▁බො 1 +▁toteut 1 +ี่ยว 1 +▁stránky 1 +อี 1 +▁шалга 1 +毕业 1 +কারী 1 +▁περιοχή 1 +إضافة 1 +▁kësaj 1 +▁ਗਈ 1 +公園 1 +▁ඉල්ල 1 +ാണു 1 +君 1 +uppgifter 1 +▁سکتا 1 +Adresse 1 +▁spesso 1 +▁kërko 1 +▁Prozent 1 +▁նրանց 1 +ล้าน 1 +ໄຊ 1 +▁околу 1 +нчев 1 +▁ਇੰ 1 +▁Hrvatska 1 +稅 1 +処 1 +▁سعودی 1 +ေမာင္ 1 +ುತ್ತಿದೆ 1 +▁Засгийн 1 +ஈ 1 +▁diberikan 1 +▁بېرى 1 +aldeko 1 +邦 1 +▁incorpora 1 +▁ಕಾರಣ 1 +▁Archives 1 +വരും 1 +▁приложен 1 +▁круп 1 +▁хүний 1 +끝 1 +▁Contact 1 +φυλ 1 +ಂಟ್ 1 +橋 1 +▁ಕೆಲಸ 1 +▁بنیاد 1 +▁folyamat 1 +前往 1 +▁então 1 +ರೂಪ 1 +▁Kontrol 1 +ehdot 1 +ไม่ต้อง 1 +▁바로 1 +แม้ 1 +▁වාර්තා 1 +ΡΙ 1 +▁bilgiler 1 +เลข 1 +▁एउटा 1 +▁Српске 1 +એસ 1 +▁Свят 1 +uomo 1 +▁क्रिकेट 1 +▁ڪتاب 1 +▁රියා 1 +▁ഉള്ള 1 +▁آلمان 1 +▁najbardziej 1 +▁próxima 1 +▁әлеуметтік 1 +▁באופן 1 +탁 1 +▁sadržaj 1 +▁belakang 1 +კლა 1 +▁altså 1 +ដំ 1 +šanā 1 +插 1 +▁aproape 1 +▁வழி 1 +eggia 1 +▁македонски 1 +▁cogn 1 +▁செய்து 1 +▁Ĝi 1 +1.0 1 +▁общин 1 +▁כאשר 1 +▁rodzaj 1 +▁سخن 1 +▁зэрэг 1 +▁घोषणा 1 +▁должна 1 +صدق 1 +ชัย 1 +▁Avrupa 1 +ტრო 1 +▁receive 1 +磨 1 +瓶 1 +тельные 1 +ବର୍ତ୍ତୀ 1 +ఛ 1 +▁possível 1 +▁labāk 1 +▁पार् 1 +▁плод 1 +ጠቃ 1 +មន្ត្រី 1 +▁ещё 1 +▁ඉතින් 1 +▁uşaq 1 +▁بڑھ 1 +▁berbeda 1 +ющей 1 +回答 1 +▁төрийн 1 +▁חדר 1 +▁ახლა 1 +▁چاپ 1 +▁dårlig 1 +▁սկս 1 +▁જાય 1 +▁tujuan 1 +▁टीम 1 +▲ 1 +▁nosotros 1 +▁ولسمشر 1 +ooyinka 1 +▁Geschichte 1 +▁example 1 +Univers 1 +▁Valentin 1 +▁kəs 1 +▁ହେବା 1 +▁أمام 1 +▁government 1 +▁ठेव 1 +ຈີນ 1 +▁особено 1 +ζήτησ 1 +ધાર 1 +▁kısa 1 +พื้น 1 +即可 1 +▁určen 1 +พวก 1 +ଞ୍ଜ 1 +▁spørgsmål 1 +▁spletni 1 +阻 1 +経験 1 +ขณะ 1 +▁тогтоо 1 +تنفيذ 1 +▁고객 1 +▁позитив 1 +▁euskal 1 +▁খবর 1 +дељ 1 +美食 1 +▁വരുന്ന 1 +連絡 1 +▁imagine 1 +▁გარდა 1 +▁பெற்ற 1 +▁zdravotn 1 +▁നിന്ന 1 +▁sikkert 1 +जीव 1 +▁хочет 1 +ន់ 1 +▁következő 1 +过程 1 +올 1 +▁മനസ്സ 1 +▁анықта 1 +▁ऐसा 1 +晶 1 +▁жаңы 1 +▁където 1 +▁ملاقات 1 +▁També 1 +skryf 1 +▁වෙනස් 1 +▁երկու 1 +дневно 1 +ására 1 +နဲ႕ 1 +▁Attribution 1 +▁espacio 1 +▁Україна 1 +เสนอ 1 +겠다 1 +▁feature 1 +始め 1 +▁personnel 1 +▁Semua 1 +▁beteken 1 +ակարգ 1 +▁según 1 +▁తమ 1 +こんな 1 +বাংলা 1 +▁törvény 1 +结合 1 +▁април 1 +ಿಸಿದ್ದ 1 +幻 1 +ઃ 1 +ေက်ာ္ 1 +ាច់ 1 +สวน 1 +пеціальн 1 +▁ಇಲ್ಲಿ 1 +▁πληρ 1 +▁sredi 1 +胎 1 +▁بسبب 1 +盘 1 +ڦ 1 +ඨ 1 +▁Mustafa 1 +▁batean 1 +zīmē 1 +ಧಾರ 1 +▁الجمعة 1 +kształ 1 +▁وهذا 1 +ुभयो 1 +▁жұ 1 +公布 1 +▁author 1 +▁uveden 1 +▁කළේ 1 +ାଉ 1 +概念 1 +ວຽກ 1 +▁mengetahui 1 +▁əlavə 1 +▁väčš 1 +▁volutpat 1 +▁الثلاثاء 1 +▁हूँ 1 +ถนน 1 +されています 1 +▁potrebuje 1 +▁sozial 1 +▁sanitar 1 +体验 1 +▁vlád 1 +süsteem 1 +друк 1 +認識 1 +偷 1 +갖 1 +▁πρώτο 1 +检查 1 +▁жатат 1 +▁debate 1 +▁դաս 1 +▁ukuthi 1 +εθν 1 +▁वापर 1 +materiaal 1 +▁suscipit 1 +▁novembro 1 +▁പങ്ക 1 +▁fotbal 1 +▁элемент 1 +▁приятел 1 +▁pequeno 1 +▁ஆண்டு 1 +▁kondisi 1 +analyse 1 +있는 1 +▁chẳng 1 +▁ბავშვ 1 +▁एमाले 1 +▁ցուց 1 +燈 1 +ปาก 1 +▁skuld 1 +▁rejse 1 +ИТЕ 1 +дзяржаў 1 +▁материјал 1 +▁साहित्य 1 +널 1 +ुपर्छ 1 +შედეგ 1 +▁फोटो 1 +▁دنبال 1 +▁kennis 1 +▁خواست 1 +▁fuld 1 +▁калган 1 +▁ઘર 1 +▁আইন 1 +▁Charles 1 +绿 1 +جمال 1 +▁ሲሆን 1 +▁функцион 1 +▁کسب 1 +▁ipsa 1 +▁என்பது 1 +ভিডিও 1 +▁هېواد 1 +köszön 1 +▁precedent 1 +▁աղ 1 +런 1 +▁Alexandr 1 +ແບບ 1 +▁ինքն 1 +▁براي 1 +ဗ်ာ 1 +▁proporciona 1 +▁ආදර 1 +สื่อ 1 +syarat 1 +뉴 1 +妙 1 +▁трэба 1 +▁السعودية 1 +ราคาถูก 1 +限制 1 +ર્ડ 1 +▁புதிய 1 +▁Nhật 1 +цыйна 1 +相當 1 +Cloud 1 +utbildning 1 +▁disciplina 1 +▁گذاری 1 +星期 1 +▁получить 1 +▁uporabo 1 +▁سامنے 1 +▁mjesto 1 +чење 1 +效率 1 +▁ಸ್ಪ 1 +権 1 +▁plastik 1 +૭ 1 +▁تنظیم 1 +彈 1 +▁навук 1 +നിന്നു 1 +▁పొ 1 +kázal 1 +עמוד 1 +掲 1 +▁forskjell 1 +▁پروژه 1 +▁ಬಿಜೆಪಿ 1 +ஃ 1 +بصر 1 +▁الشعب 1 +▁ehkä 1 +▁štát 1 +忽 1 +▁تعلیم 1 +▁глаза 1 +▁нужда 1 +▁appear 1 +▁tingkat 1 +▁posterior 1 +კავ 1 +培养 1 +▁içerisinde 1 +▁വളരെ 1 +ադիր 1 +▁window 1 +▁subject 1 +широк 1 +▁வைத்த 1 +捕 1 +▁తర్వాత 1 +▁qrup 1 +▁පැමිණ 1 +▁округ 1 +▁Quản 1 +▁Итали 1 +ാക്കിയ 1 +▁ලංකාවේ 1 +▁جلد 1 +XVIII 1 +▁නීති 1 +旨 1 +湯 1 +አካባቢ 1 +▁рублей 1 +ıyoruz 1 +数字 1 +▁između 1 +▁መንገድ 1 +▁неколку 1 +▁ଆଉ 1 +▁அரசு 1 +1.4 1 +▁சொல் 1 +英語 1 +▁எல்லா 1 +▁Stefan 1 +▁Soomaaliyeed 1 +▁पाकिस्तान 1 +▁Lumpur 1 +▁ዜና 1 +రావు 1 +▁сабақ 1 +ທັງ 1 +▁folgende 1 +▁పేరు 1 +顶 1 +럼 1 +▁artículo 1 +勞 1 +▁կյանք 1 +▁helyzet 1 +▁artikolo 1 +庭 1 +▁vállal 1 +▁συγ 1 +ఠ 1 +▁ફિલ્મ 1 +▁esempio 1 +▁અન્ય 1 +ມູນ 1 +▁இருந்து 1 +চ্ছে 1 +▁Update 1 +ඕ 1 +▁бүл 1 +▁podatkov 1 +ร้อน 1 +எஸ் 1 +လိုက် 1 +၌ 1 +놀 1 +▁ઉપર 1 +感謝 1 +▁پارٹی 1 +▁تھی۔ 1 +▁Interesse 1 +燃 1 +▁ഞാൻ 1 +▁férfi 1 +▁culpa 1 +ራቸው 1 +▁todėl 1 +สุขภาพ 1 +胞 1 +კომპ 1 +當然 1 +言葉 1 +▁کد 1 +ኤል 1 +▁ನೋಡಿ 1 +ເພ 1 +▁desarrollo 1 +념 1 +▁Science 1 +ត្ថ 1 +▁იქნება 1 +▁саясат 1 +ailleurs 1 +เพศ 1 +ታችን 1 +jącym 1 +▁yanında 1 +Ң 1 +▁infantil 1 +▁nhớ 1 +大陸 1 +▁слово 1 +▁sahibi 1 +▁индивидуал 1 +▁Eiropas 1 +▁ejemplo 1 +▁которым 1 +▁негатив 1 +ിട്ട് 1 +యోగ 1 +സമയ 1 +▁कभी 1 +하세요 1 +追求 1 +▁действительно 1 +▁вигляд 1 +▁வேலை 1 +presión 1 +确定 1 +▁обязательн 1 +¤ 1 +▁vrouw 1 +దర్శ 1 +▁ishlab 1 +穩 1 +ค้นหา 1 +zungumza 1 +▁کنار 1 +▁protagonista 1 +willig 1 +▁රකාශ 1 +便宜 1 +▁στρατ 1 +▁կայք 1 +ුවේ 1 +▁φορά 1 +ympäristö 1 +▁تصاویر 1 +▁möjlighet 1 +▁мамлекеттик 1 +住宿 1 +醒 1 +▁জাতীয় 1 +▁жур 1 +▁փաստ 1 +increment 1 +唐 1 +▁бөлім 1 +▁faucibus 1 +कृष्ण 1 +▁plataforma 1 +തൃ 1 +▁ஆனால் 1 +▁בישראל 1 +▁workshop 1 +体育 1 +▁വിജയ 1 +▁חברת 1 +ntibus 1 +্লা 1 +ሕዝ 1 +角度 1 +ضرب 1 +▁කියන්නේ 1 +alcalde 1 +казывает 1 +ಶು 1 +▁alarm 1 +▁পু 1 +民眾 1 +ారని 1 +▁થઇ 1 +neuvo 1 +történet 1 +ຜ່ານ 1 +▁পুলিশ 1 +眼睛 1 +▁practica 1 +▁potencial 1 +បញ្ច 1 +结构 1 +▁XXI 1 +adolescent 1 +חוש 1 +▁ಒಂದ 1 +▁olabilir 1 +耗 1 +▁સરકાર 1 +▁رشته 1 +▁İslam 1 +▁വെള്ള 1 +惑 1 +▁අමාත් 1 +מנהל 1 +tworzy 1 +jegyzés 1 +Ė 1 +▁pagkatapos 1 +▁সাথে 1 +すれば 1 +▁Русија 1 +▁ўжо 1 +调整 1 +▁povedal 1 +▁osobných 1 +콜걸 1 +ឈ្មោះ 1 +▁PIXNET 1 +▁инструмент 1 +▁ಮಾಹಿತಿ 1 +ಲಿದೆ 1 +▁médico 1 +עיצוב 1 +▁Þetta 1 +▁ਦਿਨ 1 +시설 1 +ሂ 1 +▁նպատակ 1 +▁فیصلہ 1 +▁ਵੀਡੀਓ 1 +▁exterior 1 +▁कधी 1 +спеш 1 +▁প্ৰ 1 +▁fëmijë 1 +▁Network 1 +▁профессионал 1 +▁tästä 1 +▁लाभ 1 +ትምህርት 1 +▁đứng 1 +▁Omegle 1 +保证 1 +▁קיין 1 +їзд 1 +▁naudoja 1 +ຮູ້ 1 +ဖြင့် 1 +רגע 1 +▁Đức 1 +▁තමා 1 +uksesta 1 +သစ္ 1 +ļauj 1 +▁permane 1 +阅读 1 +宣传 1 +悲 1 +▁اینترنت 1 +▁эксперт 1 +▁थप 1 +▁concello 1 +责 1 +▁answer 1 +腳 1 +໌ 1 +▁сьогодні 1 +▁داعش 1 +▁തുടര 1 +ស្រុក 1 +▁මෙහෙ 1 +▁ունի 1 +hæng 1 +afrika 1 +状況 1 +▁eigentlich 1 +▁pályá 1 +▁අඩු 1 +ότερο 1 +晨 1 +▁қабылда 1 +አማራ 1 +όνι 1 +▁totiž 1 +▁naziri 1 +▁முன்ன 1 +ดาว 1 +▁snakke 1 +▁இன்று 1 +▁nødvendig 1 +▁técnico 1 +▁महिना 1 +▁ሆኖ 1 +▁ငါ 1 +▁tindakan 1 +ግድ 1 +▁bidang 1 +▁verseny 1 +▁संख्या 1 +薪 1 +购买 1 +왕 1 +“ 1 +▁새로운 1 +仍然 1 +했습니다 1 +▁bekannt 1 +扶 1 +แข็ง 1 +ការណ៍ 1 +ဖို႔ 1 +▁septembri 1 +▁ακόμη 1 +▁possibilità 1 +▁פשוט 1 +▁працівник 1 +учасник 1 +ΡΟ 1 +▁Япон 1 +徵 1 +캐 1 +▁دفتر 1 +▁بیرون 1 +▁հանր 1 +▁секунд 1 +မယ် 1 +聘 1 +结束 1 +▁dezvolta 1 +▁producent 1 +ιστική 1 +▁сохран 1 +▁bugün 1 +▁Kommentar 1 +▁Andhra 1 +ଚାର 1 +ต่อไป 1 +▁عباس 1 +標準 1 +ร่างกาย 1 +▁באמצעות 1 +ជូន 1 +ዎቹ 1 +policy 1 +地址 1 +▁झाला 1 +อุปกรณ์ 1 +Ế 1 +▁ئۈچۈن 1 +▁انواع 1 +த்திற்கு 1 +เกิน 1 +ήματος 1 +▁souvent 1 +遗 1 +ऋ 1 +▁կազմ 1 +搜尋 1 +满足 1 +בוד 1 +▁billeder 1 +১১ 1 +製造 1 +جماع 1 +▁उन्हें 1 +▁මහා 1 +▁আছে 1 +ജീ 1 +▁ενός 1 +ുകയാണ് 1 +▁gyors 1 +ลับ 1 +▁škod 1 +▁negocia 1 +პრეზიდენტ 1 +쿠 1 +▁צריך 1 +▁задржа 1 +▁denuncia 1 +ნერ 1 +ОВА 1 +▁영화 1 +▁өв 1 +坏 1 +▁رمضان 1 +▁व्यवसाय 1 +ႏိုင္ငံ 1 +▁ਰਾਜ 1 +ไหม 1 +▁Klass 1 +работен 1 +정책 1 +▁चर्चा 1 +ЭЭ 1 +居民 1 +агдсан 1 +赢 1 +▁પહેલા 1 +ေနာ္ 1 +▁Maxamed 1 +▁انتشار 1 +▁विजय 1 +▁площад 1 +ؤں 1 +ູ້ 1 +ໃຫມ່ 1 +찬 1 +▁있으며 1 +ភាគ 1 +▁আমার 1 +▁ועוד 1 +ចុះ 1 +惜 1 +▁दुनिया 1 +ាញ់ 1 +esperienza 1 +▁उक्त 1 +▁μέσω 1 +ძლებ 1 +▁livello 1 +изован 1 +юють 1 +เผย 1 +▁Հայաստանում 1 +▁някои 1 +▁şirket 1 +▁Politic 1 +▁çıxış 1 +▁ڇو 1 +तन्त्र 1 +ครู 1 +▁Cookies 1 +védelmi 1 +သည့် 1 +▁kesehatan 1 +▁કહ્યું 1 +▁ద్వారా 1 +▁హీరో 1 +▁bambini 1 +▁समझ 1 +▁కొన్ని 1 +▁yarış 1 +ഭാവ 1 +يارات 1 +と言われ 1 +うち 1 +女孩 1 +▁الفلسطيني 1 +▁검색 1 +▁gətir 1 +▁Với 1 +▁frequent 1 +▁đọc 1 +problem 1 +明显 1 +เรียก 1 +릭 1 +ίδη 1 +ジャ 1 +▁Entwicklung 1 +▁үйлчилгээ 1 +▁କରିଛନ୍ତି 1 +▁אישי 1 +委員 1 +▁хэв 1 +หลังจาก 1 +ებთან 1 +▁rekening 1 +താവ 1 +▁სადაც 1 +חייב 1 +▁நோ 1 +▁rộng 1 +▁भन्दै 1 +▁প্রধানমন্ত্রী 1 +▁настоя 1 +▁ауыл 1 +▁තියෙනවා 1 +айым 1 +трудни 1 +ਜੀਤ 1 +ಪಟ್ಟ 1 +▁мемлекет 1 +▁însă 1 +▁предвид 1 +▁involve 1 +▁inkişaf 1 +▁materiał 1 +奋 1 +掌握 1 +誕 1 +▁tillbaka 1 +âld 1 +▁inferior 1 +设施 1 +▁đạt 1 +هيئة 1 +▁модерн 1 +ဂ် 1 +▁السابق 1 +▁എന്നാല് 1 +効 1 +ଢ଼ 1 +သတင်း 1 +වර්ධන 1 +▁অন্য 1 +▁física 1 +järjestelmä 1 +▁ሌላ 1 +▁século 1 +▁ಚಾ 1 +双方 1 +▁hedef 1 +ávajú 1 +혁 1 +▁لاہور 1 +▁dernière 1 +▁చిన్న 1 +▁ajuns 1 +▁संबंध 1 +▁apartament 1 +จ่าย 1 +▁საკუთარ 1 +▁ភ្នំពេញ 1 +▁ژوند 1 +▁දැක් 1 +▁College 1 +▁مسجد 1 +▁ქართველ 1 +▁오늘 1 +▁любим 1 +▁بلکہ 1 +sprechen 1 +ಪಡಿಸ 1 +▁사실 1 +▁thënë 1 +▁giống 1 +ОВИ 1 +einander 1 +鬼 1 +炸 1 +รู้สึก 1 +▁množstv 1 +▁которого 1 +ifrån 1 +onnement 1 +схем 1 +▁ruoka 1 +ਊ 1 +អាមេរិក 1 +ଚ୍ଚ 1 +▁पुस्तक 1 +▁ձեր 1 +حصل 1 +群众 1 +乏 1 +慶 1 +ฆ 1 +▁шийдвэр 1 +▁Linux 1 +包含 1 +үүгө 1 +ológico 1 +союз 1 +Българ 1 +ෞ 1 +ပွဲ 1 +▁احتمال 1 +▁πολιτική 1 +▁دنيا 1 +র্থ 1 +ствовать 1 +▁ilmoit 1 +▁zdroj 1 +▁මාධ් 1 +뒤 1 +▁докато 1 +μένες 1 +▁obiect 1 +习 1 +▁phủ 1 +গঞ্জ 1 +эрэ 1 +▁μεταξύ 1 +▁परीक्षा 1 +prostřed 1 +▁वर्ग 1 +▁இருக்கும் 1 +採用 1 +▁намира 1 +▁எனக்கு 1 +▁značk 1 +鱼 1 +▁Heydər 1 +潔 1 +▁terutama 1 +▁teritorij 1 +▁odpowiedzi 1 +▁Circ 1 +убав 1 +▁генер 1 +▁گے۔ 1 +ଫଳ 1 +lateral 1 +一緒に 1 +Ạ 1 +▁określ 1 +▁yaxshi 1 +▁როცა 1 +▁দুর্ 1 +ኖች 1 +ပေါ် 1 +資源 1 +ाइएको 1 +▁ಡಾ 1 +ෛ 1 +ၱ 1 +▁olunmuş 1 +▁қаласы 1 +▁участник 1 +तंत्र 1 +▁անդամ 1 +▁вплив 1 +วิชา 1 +▁qualidade 1 +ពួក 1 +▁माझ्या 1 +▁எப்படி 1 +▁آقای 1 +▁ରହିଛି 1 +▁организира 1 +往往 1 +▁Thủ 1 +▁Rhannu 1 +Ә 1 +邮 1 +▁ambaye 1 +▁इतर 1 +علن 1 +▁fayda 1 +ໃຫຍ່ 1 +▁fakultet 1 +ாட்சி 1 +▁υπερ 1 +▁febrer 1 +▁мужчин 1 +ėjimo 1 +▁Ibrahim 1 +▁artikkel 1 +तर्फ 1 +▁benytte 1 +ించింది 1 +ର୍ଣ୍ଣ 1 +▁παιδιά 1 +▁θέση 1 +▁качество 1 +▁ĉar 1 +حركة 1 +ström 1 +▁εγκ 1 +စကား 1 +ዐ 1 +អនុ 1 +▁محمود 1 +utvikling 1 +▁ғана 1 +▁çəki 1 +○ 1 +▁Zanzibar 1 +▁vəziyyət 1 +▁gioca 1 +▁menurut 1 +▁बड़ा 1 +אנט 1 +mânt 1 +▁Kongres 1 +▁επιχειρ 1 +▁Brazil 1 +寺 1 +іледі 1 +▁měsíc 1 +욕 1 +▁hónap 1 +▁wygląda 1 +ნელი 1 +filia 1 +టింగ్ 1 +▁nüüd 1 +▁mjög 1 +[6] 1 +▁داسې 1 +ਿਊ 1 +▁axuda 1 +Информ 1 +▁उपचार 1 +ญี่ปุ่น 1 +ධාර 1 +▁oziroma 1 +ພວກເຮົາ 1 +▁färg 1 +▁активности 1 +▁yhtä 1 +บริหาร 1 +▁આજે 1 +▁surtout 1 +▁spend 1 +理论 1 +เนีย 1 +意識 1 +▁Etiam 1 +虎 1 +សិទ្ធិ 1 +ເຕີ 1 +▁korzysta 1 +लगायत 1 +を持って 1 +ခ်စ္ 1 +▁løbe 1 +高雄 1 +ちゃ 1 +នៅក្នុង 1 +▁особливо 1 +▁electrònic 1 +αφή 1 +▁γίνει 1 +▁ਹੋਏ 1 +明确 1 +欧洲 1 +勉 1 +‹ 1 +▁использовать 1 +▁মানুষ 1 +မျှ 1 +▁ambiental 1 +▁lectura 1 +▁자료 1 +▁उसके 1 +薬 1 +렌 1 +▁ክርስቲያ 1 +윤 1 +▁అధికార 1 +▁bestimmt 1 +▁spletne 1 +▁gönder 1 +ଡ଼ା 1 +ေဆး 1 +▁симптом 1 +▁prodotto 1 +▁Трамп 1 +▁රජය 1 +▁έτσι 1 +▁රධාන 1 +들에게 1 +যুক্ত 1 +갑 1 +▁krijgen 1 +▁بازدید 1 +▁kommentaar 1 +▁everyone 1 +▁χωρ 1 +▁subjekt 1 +▁некој 1 +▁davvero 1 +▁gửi 1 +จีน 1 +址 1 +▁Wilaya 1 +胸 1 +ចិន 1 +▁negocio 1 +ปิด 1 +▁pamamagitan 1 +▁besonders 1 +▁preciz 1 +縮 1 +▁pelbagai 1 +▁सम्पन्न 1 +▁বিএনপি 1 +▁ಜೊತೆ 1 +▁фильм 1 +▁dikenal 1 +ໃນການ 1 +англ 1 +▁thiếu 1 +▁আগে 1 +▁नीति 1 +陷 1 +▁Verfügung 1 +▁محیط 1 +▁किंवा 1 +▁गर्छ 1 +១៧ 1 +ยังไม่ 1 +▁Бирок 1 +geführt 1 +▁několik 1 +▁noastre 1 +ĵ 1 +ញ្ញ 1 +▁funziona 1 +閱讀 1 +နောက် 1 +▁회원 1 +zobraz 1 +▁गर्दा 1 +▁Jacob 1 +▁introdu 1 +▁vsebin 1 +▁támogatás 1 +▁احتجاج 1 +▁varētu 1 +▁օրենք 1 +אופ 1 +передач 1 +戲 1 +ဥ္ 1 +džių 1 +เร็ว 1 +▁ಕಾಂಗ್ರೆಸ್ 1 +▁świet 1 +▁արդեն 1 +계획 1 +▁retour 1 +▁mundial 1 +▁Please 1 +▁автобус 1 +▁संसद 1 +დგომ 1 +▁овај 1 +ભાઈ 1 +၁၀ 1 +ամյա 1 +▁aujourd 1 +▁ہوگا 1 +▁برخه 1 +▁хэрэгтэй 1 +实践 1 +estructura 1 +▁דרך 1 +▁biztosít 1 +▁айтып 1 +▁faoliyat 1 +▁keputusan 1 +컨 1 +▁riêng 1 +▁trgovin 1 +▁götür 1 +▁parametr 1 +շրջ 1 +смотреть 1 +▁социально 1 +蒂 1 +▁യാത്ര 1 +▁berjalan 1 +▁וועט 1 +מדינה 1 +腹 1 +▁नेतृत्व 1 +压力 1 +▁tədbirlər 1 +െല്ലാം 1 +tämään 1 +സൗ 1 +ดําเนิน 1 +อันดับ 1 +៌ 1 +▁хуулийн 1 +▁এখন 1 +突破 1 +▁جذب 1 +▁Besuch 1 +▁ਕਿਹਾ 1 +▁செய்தி 1 +横 1 +▁gemeinsam 1 +▁कर्मचारी 1 +▁ನಂತರ 1 +곡 1 +▁Балкан 1 +▁tūkst 1 +▁δικαι 1 +▁мяне 1 +▁מידע 1 +丰富 1 +पर्यंत 1 +▁පුවත් 1 +▁voidaan 1 +aktiviteter 1 +▁त्रि 1 +விட்டு 1 +ក្រុមហ៊ុន 1 +▁территории 1 +▁الأربعاء 1 +▁यदि 1 +▁setmana 1 +販売 1 +▁Manchester 1 +▁काठमाडौँ 1 +▁হচ্ছে 1 +▁બોલ 1 +▁lämna 1 +▁తీసుకు 1 +hhh 1 +ชนะ 1 +鲁 1 +▁компьютер 1 +▁نړۍ 1 +▁ειδικ 1 +董事 1 +成绩 1 +▁موارد 1 +ஆர் 1 +ωθεί 1 +にとって 1 +▁satış 1 +刺 1 +▁чоловік 1 +좀 1 +하면서 1 +▁ಹೊಂದ 1 +判断 1 +▁ensimmäis 1 +▁වෙනුවෙන් 1 +魅力 1 +โทร 1 +▁Aenean 1 +▁۱۹ 1 +áveis 1 +伍 1 +▁झाली 1 +▁dotyczą 1 +ாலும் 1 +atmosf 1 +ਆਈ 1 +способ 1 +லோ 1 +▁pagkawala 1 +ขับ 1 +oittaa 1 +ຫົວ 1 +▁khỏi 1 +▁بڑی 1 +▁ώστε 1 +電視 1 +▁shtëpi 1 +עזר 1 +▁Сайт 1 +况 1 +avond 1 +٢ 1 +▁ವಿಶ್ವ 1 +▁ਲੱਗ 1 +▁üstün 1 +ក្ខ 1 +ాల్సి 1 +经常 1 +▁tercih 1 +звон 1 +叶 1 +جنب 1 +▁desarrolla 1 +▁પરંતુ 1 +▁ហ៊ុន 1 +▁выгляд 1 +نعم 1 +御 1 +▁बनाए 1 +▁फोन 1 +▁пациент 1 +▁സ്ത്രീ 1 +ຄັ້ງ 1 +ร้อง 1 +▁Перш 1 +▁അടുത്ത 1 +▁enerji 1 +▁dijî 1 +沟 1 +靜 1 +ಗೊಂಡ 1 +▁rencontre 1 +▁während 1 +▁انتقال 1 +▁ତେବେ 1 +▁pretium 1 +▁iawn 1 +ψηφ 1 +କ୍ରମ 1 +卷 1 +郵 1 +яўляецца 1 +▁дүйнө 1 +▁управление 1 +▁можливо 1 +持ち 1 +▁Apakah 1 +調整 1 +▁besøg 1 +▁انتظار 1 +▁포함 1 +▁mercato 1 +▁kapacit 1 +身份 1 +▁ট্র 1 +ーション 1 +▁poslední 1 +ẳ 1 +ទំព័រ 1 +▁انتظام 1 +▁இருக்கிற 1 +▁প্রথম 1 +▁ਅੱਜ 1 +▁ଶ୍ରୀ 1 +▁dapibus 1 +ซึ่ง 1 +postavlj 1 +postadress 1 +▁tuyệt 1 +▁hrvatski 1 +▁ಕೇಳ 1 +▁osigura 1 +ធិ 1 +▁Disney 1 +ဌာန 1 +▁प्रदर्शन 1 +▁egyéb 1 +▁Работ 1 +▁చేసే 1 +سأل 1 +▁организм 1 +წერა 1 +▁ଆରମ୍ଭ 1 +ங்களில் 1 +ազդ 1 +▁இந்திய 1 +▁નામ 1 +незалежн 1 +સ્પ 1 +חול 1 +今回は 1 +▁جستجو 1 +▁نتیجه 1 +佈 1 +णाऱ्या 1 +▁comportament 1 +▁தின 1 +▁Philipp 1 +ນະຄອນ 1 +▁système 1 +▁ಅಥವಾ 1 +됐다 1 +weithio 1 +படுத்த 1 +▁Ένα 1 +íodh 1 +挺 1 +榮 1 +▁Bagaimana 1 +▁υπάρχουν 1 +▁ከዚህ 1 +▁benefit 1 +▁šiuo 1 +▁यहां 1 +▁Skriv 1 +бија 1 +אחר 1 +敦 1 +០០ 1 +▁республик 1 +▁istiqamət 1 +듯 1 +▁bóng 1 +▁загально 1 +όπουλο 1 +ポイント 1 +ଠାରୁ 1 +▁inaugura 1 +▁uğur 1 +▁продолжа 1 +တိုင်း 1 +▁Фонд 1 +阵 1 +漂 1 +փոփոխ 1 +▁Política 1 +▁წერ 1 +剩 1 +基礎 1 +පුද්ගල 1 +▁lớp 1 +▁chạy 1 +▁естествен 1 +▁sponsor 1 +指导 1 +▁aborda 1 +মন্ত্রী 1 +▁مشاهده 1 +▁கருத்து 1 +▁vælge 1 +ดูแล 1 +Хрват 1 +යේදී 1 +氛 1 +▁перспектив 1 +▁бесплатно 1 +▁sukces 1 +▁entrevista 1 +▁tikrai 1 +ાઉ 1 +౦ 1 +▁матэрыял 1 +▁οδηγ 1 +▁इतिहास 1 +搬 1 +พนักงาน 1 +ታሪክ 1 +훈 1 +▁უფლება 1 +▁අවස්ථාව 1 +▁дахь 1 +▁revoluci 1 +렸 1 +หนังสือ 1 +▁sosyal 1 +▁եղել 1 +▁ਹੋਈ 1 +▁divulga 1 +▁நாள் 1 +▁Resort 1 +ékony 1 +圓 1 +▁páxina 1 +▁Segundo 1 +▁matematik 1 +▁tungkol 1 +▁muzej 1 +сексуал 1 +弃 1 +贝 1 +釋 1 +▁cavab 1 +פורט 1 +تعامل 1 +▁иштер 1 +汽車 1 +▁Reykjavík 1 +▁pagpapalaki 1 +▁връзка 1 +▁зависимост 1 +▁येथे 1 +▁Aliquam 1 +▁വീട്ട 1 +▁कम्पनी 1 +संस्कृत 1 +▁mencapai 1 +▁Victoria 1 +▁Texas 1 +גוד 1 +פח 1 +▁комиси 1 +▁Index 1 +大きな 1 +▁spécial 1 +▁СССР 1 +ភូមិ 1 +▁այսօր 1 +عارض 1 +भाष 1 +▁suivant 1 +般 1 +▁жүзеге 1 +▁դարձ 1 +▁جمله 1 +จักร 1 +屆 1 +IKE 1 +カード 1 +▁защита 1 +OVE 1 +▁ಹೀಗ 1 +饮 1 +▁Στην 1 +▁публикува 1 +▁τεχν 1 +▁ਗਏ 1 +▁ಎನ್ನ 1 +▁meydan 1 +吹 1 +aître 1 +균 1 +facebook 1 +▁tohto 1 +贴 1 +隐 1 +▁ቦታ 1 +▁መንግስት 1 +▁hægt 1 +ର୍ଯ୍ୟ 1 +▁ԱՄՆ 1 +▁պատճառ 1 +▁معرفی 1 +▁hótel 1 +▁ජනතාව 1 +▁huvud 1 +▁inkişafı 1 +ológica 1 +წევრ 1 +▁pesquisa 1 +▁birçok 1 +▁सडक 1 +явления 1 +▁ගැනීමට 1 +కృష్ణ 1 +▁претседател 1 +ರಾಷ್ಟ್ರ 1 +▁प्रत्येक 1 +▁ہلاک 1 +▁породи 1 +கொள் 1 +ເຂົາ 1 +징 1 +▁мыйзам 1 +시스템 1 +▁እንጂ 1 +▁besondere 1 +▁erityis 1 +经历 1 +▁Olymp 1 +председател 1 +odpoved 1 +腐 1 +ाएर 1 +▁پښتو 1 +Թ 1 +▁موجب 1 +▁가격 1 +klád 1 +▁तपाई 1 +やすい 1 +储 1 +消費者 1 +▁cynnwys 1 +▁browser 1 +▁Услови 1 +ふ 1 +▁μεγάλη 1 +염 1 +▁tomonidan 1 +▁Јо 1 +eeritud 1 +പ്പെടുന്ന 1 +▁бізнес 1 +▁ਜਿਸ 1 +媒體 1 +vjeçar 1 +▁ዋና 1 +▁zabaw 1 +גול 1 +驾 1 +▁виконання 1 +▁هزینه 1 +▁ହେଲେ 1 +ကုန် 1 +▁విషయం 1 +犯罪 1 +መንግስ 1 +אינטרנט 1 +쉽 1 +ເວລາ 1 +▁dispositivo 1 +പ്പോൾ 1 +নিউজ 1 +▁търг 1 +▁ученици 1 +▁cuidado 1 +区域 1 +疫 1 +▁excelente 1 +▁ਰਿਹਾ 1 +▁өткіз 1 +▁ડિ 1 +jącego 1 +๕ 1 +▁Európa 1 +▁μεγάλο 1 +▁probably 1 +▁życie 1 +▁korrekt 1 +▁addition 1 +▁научи 1 +Ē 1 +▁təhlükə 1 +▁Британ 1 +▁છું 1 +▁образования 1 +▁محبت 1 +▁език 1 +เท่านั้น 1 +▁diqqət 1 +OVA 1 +▁informácie 1 +▁jaoks 1 +ಇ 1 +稳 1 +społeczn 1 +สนาม 1 +มากมาย 1 +▁تعالى 1 +资料 1 +▁ekstrem 1 +▁құқық 1 +划 1 +▁váš 1 +သံုး 1 +▁навчання 1 +▁زموږ 1 +▁విడుదల 1 +▁शरीर 1 +capaci 1 +▁обласн 1 +▁პირველ 1 +さらに 1 +▁учрежден 1 +▁نزدیک 1 +ร้อย 1 +▁швидк 1 +kizun 1 +▁законодав 1 +摘 1 +▁despois 1 +▁aukšt 1 +၁၉ 1 +▁ලංකාව 1 +徐 1 +▁nümayəndə 1 +▁laoreet 1 +▁žmonių 1 +杰 1 +စဉ် 1 +▁język 1 +▁dúas 1 +Philip 1 +▁journalist 1 +儿童 1 +▁πάντα 1 +▁ব্যবহার 1 +ដើម 1 +▁위치 1 +▁السبت 1 +экономи 1 +技能 1 +эгдсэн 1 +もちろん 1 +敵 1 +ຶກ 1 +▁त्यांच्या 1 +▁សែន 1 +Afrikaanse 1 +ျမင္ 1 +▁Rīgas 1 +▁Chrome 1 +▁କରିଥିଲେ 1 +▁ଜଣେ 1 +▁Wolf 1 +▁ərzində 1 +▁ఎక్కువ 1 +▁გიორგი 1 +뿐 1 +▁Bhí 1 +▁сигнал 1 +巡 1 +▁Министар 1 +죽 1 +▁значај 1 +黎 1 +▁최근 1 +▁echipa 1 +▁δυνατό 1 +独立 1 +▁american 1 +▁սիր 1 +ქართულად 1 +塊 1 +▁ఫోన్ 1 +ାଇବା 1 +зображ 1 +▁თვალ 1 +େଇ 1 +▁yleis 1 +资产 1 +ביע 1 +▁பெயர 1 +欢 1 +▁consegue 1 +▁پوسٹ 1 +▁ከፍተኛ 1 +▁wneud 1 +住宅 1 +▁bezoek 1 +Italia 1 +▁yoxdur 1 +▁সম্পাদক 1 +ിംഗ് 1 +▁Happy 1 +▁prachtig 1 +▁مجموعه 1 +▁ബ്ര 1 +咨询 1 +誌 1 +▁lisäksi 1 +¥ 1 +▁ভারত 1 +▁വേണ്ടി 1 +▁अंतर 1 +しっかり 1 +▁պատասխան 1 +နည်း 1 +▁müxtəlif 1 +▁مکمل 1 +▁تعالی 1 +鎮 1 +舊 1 +▁writing 1 +▁Xalq 1 +▁hráč 1 +▁ёсць 1 +▁մեզ 1 +▁długo 1 +▁ಭಾಗ 1 +▁કરતા 1 +净 1 +☆ 1 +짜 1 +▁засаг 1 +יבות 1 +ισμένο 1 +迅速 1 +ᄒ 1 +បន្ទាប់ 1 +▁շարունակ 1 +▁dejtingsajt 1 +▁webwerf 1 +▁граѓани 1 +▁început 1 +▁ಕೇಂದ್ರ 1 +▁пласт 1 +▁електронн 1 +陸 1 +▁Capital 1 +填 1 +▁մինչեւ 1 +▁espaço 1 +▁вместе 1 +結構 1 +▁अनुभव 1 +Centr 1 +accueil 1 +වාදය 1 +▁টাকা 1 +識 1 +କର୍ମ 1 +▁vėl 1 +汗 1 +Ą 1 +दृष्ट 1 +▁прогноз 1 +▁شىنجاڭ 1 +▁euismod 1 +▁onderzoek 1 +▁бағыт 1 +▁začet 1 +▁విషయ 1 +espera 1 +监督 1 +ափոխ 1 +▁ආණ්ඩුව 1 +відомо 1 +עשי 1 +Շ 1 +每個 1 +▁ölkələr 1 +▁gənc 1 +▁പിന്നെ 1 +▁cantidad 1 +ფეხ 1 +▁ljubav 1 +ហ្វ 1 +▁priestor 1 +būv 1 +ปฏิบัติ 1 +▁rrugë 1 +ређен 1 +▁Sicherheit 1 +▁മനുഷ്യ 1 +▁قوانین 1 +▁kriminal 1 +▁жүйесі 1 +畢 1 +▁квалитет 1 +▁ਵਲੋਂ 1 +▁당신 1 +▁posuere 1 +▁회사 1 +ໃດ 1 +▁Princip 1 +▁பெரு 1 +▁హైదరాబాద్ 1 +▁Lyrics 1 +▁نخست 1 +▁Wasiir 1 +১৮ 1 +aaaa 1 +漸 1 +흥 1 +▁журнал 1 +▁mərkəz 1 +▁egestas 1 +▁ardından 1 +▁journée 1 +▁façon 1 +ທຸກ 1 +lépés 1 +ပိုင္း 1 +▁значение 1 +銀 1 +▁כולל 1 +盒 1 +▁perjalanan 1 +▁ଜାଣନ୍ତୁ 1 +▁tarvitse 1 +vēl 1 +▁electric 1 +▁anuncia 1 +▁стабил 1 +▁napravi 1 +▁Vestibulum 1 +▁իշխան 1 +▁आफू 1 +닌 1 +▁رفتار 1 +▁pertsona 1 +▁സംസ്ഥാന 1 +▁пасля 1 +予約 1 +chází 1 +Respons 1 +疲 1 +▁Foundation 1 +▁ಗೊತ್ತ 1 +ၿပ 1 +aichean 1 +ۇلۇ 1 +▁Рэ 1 +丈夫 1 +▁malesuada 1 +ระยะ 1 +ຍິງ 1 +▁выполнен 1 +ೊಂದಿಗೆ 1 +▁děti 1 +▁pohyb 1 +ější 1 +몸 1 +▁vielleicht 1 +▁ደረጃ 1 +▁თვით 1 +舉辦 1 +▁шум 1 +▁экономика 1 +几乎 1 +▁үндэс 1 +▁gestió 1 +株 1 +रोध 1 +กําหนด 1 +โอกาส 1 +▁मुख्यमंत्री 1 +октябр 1 +▁ماشوم 1 +યોગ 1 +▁יודע 1 +▁şəxslər 1 +▁pořád 1 +▁στιγμή 1 +どんな 1 +觸 1 +▁जरूर 1 +▁кеткен 1 +olesterol 1 +ակցություն 1 +ຄະນະ 1 +▁insieme 1 +▁കേന്ദ്ര 1 +▁geliştir 1 +ширен 1 +媒 1 +▁yaşında 1 +▁жоғары 1 +▁තරග 1 +▁يونيو 1 +▁tjerë 1 +▁Люд 1 +പുര 1 +▁esimerkiksi 1 +▁удирд 1 +▁Search 1 +弄 1 +▁शुरु 1 +▁néhány 1 +▁ప్రత్యేక 1 +혹 1 +▁Конститу 1 +▁άλλα 1 +อื่นๆ 1 +biljež 1 +俗 1 +ఆ 1 +▁vulputate 1 +▁արդյունք 1 +▁događa 1 +▁երեխա 1 +тримання 1 +▁одлуч 1 +ඒ 1 +▁milioane 1 +▁außer 1 +▁włos 1 +献 1 +図 1 +距離 1 +ቪ 1 +▁रुपये 1 +▁దీని 1 +▁месца 1 +צבע 1 +▁Hamburg 1 +▁നടന്ന 1 +Ð 1 +▁ситуации 1 +არსებობ 1 +▁rambut 1 +▁मूल्य 1 +▁ప్రజల 1 +濃 1 +မျက်နှာ 1 +▁máximo 1 +▁سگهي 1 +▁страда 1 +▁emerge 1 +哪些 1 +ไฟฟ้า 1 +ခ်ဳပ္ 1 +▁гишүүн 1 +▁ڈاکٹر 1 +揮 1 +状态 1 +ท่องเที่ยว 1 +웹 1 +Ռուսաստան 1 +▁Tovább 1 +▁Ông 1 +▁پزشکی 1 +တိုင္း 1 +ುತ್ತಿರುವ 1 +បើក 1 +კეთე 1 +▁माध्यम 1 +イベント 1 +▁ನಡೆದ 1 +▁ultimi 1 +כניס 1 +▁stručn 1 +统计 1 +忠 1 +führung 1 +▁հրապարակ 1 +▁freuen 1 +ապահ 1 +ุ่น 1 +▁jõud 1 +优秀 1 +ጂ 1 +▁gồm 1 +▁ఎన్నికల 1 +▁metabol 1 +哲 1 +▁ਦਿੱਤਾ 1 +ที่ดีที่สุด 1 +▁phản 1 +▁وویل 1 +▁iestā 1 +循 1 +շնորհ 1 +▁نداشت 1 +▁However 1 +▁ζητ 1 +বাজার 1 +▁públic 1 +▁веќе 1 +▁отношение 1 +▁וגם 1 +ચ્છ 1 +▁ඊට 1 +▁maksimal 1 +▁ইউ 1 +▁क्लिक 1 +▁ilustra 1 +herbergi 1 +▁satisfac 1 +▁ଭୁବନେଶ୍ୱର 1 +떠 1 +ඥ 1 +▁człowiek 1 +▁ಮಕ್ಕಳ 1 +▁lakukan 1 +贯 1 +▁सुरू 1 +ເງິນ 1 +▁Την 1 +쇼 1 +であれば 1 +▁esetén 1 +團隊 1 +▁pengalaman 1 +جميل 1 +בחר 1 +積極 1 +▁Önkormányzat 1 +▁Tribunal 1 +ដ៏ 1 +埃 1 +▁increase 1 +▁حرکت 1 +▁циљ 1 +▁разуме 1 +▁زیات 1 +▁Kurdistan 1 +ayeen 1 +-03- 1 +ጁ 1 +▁కాంగ్రెస్ 1 +▁Izrael 1 +հասարակ 1 +њо 1 +▁работник 1 +ぼ 1 +▁conflict 1 +billede 1 +føring 1 +▁മറ്റു 1 +考试 1 +மொழி 1 +▁първо 1 +▁അദ്ദേഹം 1 +реакци 1 +▁הבא 1 +▁دوسرے 1 +好きな 1 +▁অর্থ 1 +مناسب 1 +▁امریکہ 1 +▁עבודה 1 +価格 1 +▁używa 1 +報導 1 +▁oferece 1 +龄 1 +▁všetkých 1 +▁කොහොම 1 +▁société 1 +▁Joseph 1 +▁الشخص 1 +▁далеко 1 +స్తోంది 1 +▁matrimoni 1 +▁unrhyw 1 +▁ఉంటుంది 1 +델 1 +▁त्यामुळे 1 +ुभएको 1 +надзор 1 +▁තැ 1 +采取 1 +▁കേസ 1 +▁συγκεκριμέν 1 +▁दक्षिण 1 +▁Chúng 1 +osztály 1 +▁இந்தியா 1 +▁shopping 1 +▁նման 1 +衣服 1 +▁dereito 1 +జ్ఞ 1 +▁ਬਾਰੇ 1 +▁খেল 1 +▁ձեւ 1 +▁betyder 1 +▁dhacay 1 +▁nebyl 1 +齐 1 +协议 1 +ኬ 1 +▁տարածք 1 +▁መሆኑን 1 +wspóln 1 +▁viszont 1 +ត្រូវបាន 1 +▁სოფ 1 +▁الاجتماعي 1 +ఇ 1 +ਯਾ 1 +操 1 +следовател 1 +刺激 1 +ឥ 1 +▁ngồi 1 +▁аймаг 1 +▁səhifə 1 +▁پژوهش 1 +▁ఇక్కడ 1 +▁asigura 1 +لۈك 1 +्नुहोस् 1 +腿 1 +烟 1 +ေယာက္ 1 +▁berdasarkan 1 +▁lạnh 1 +▁nâng 1 +▁غلط 1 +▁effort 1 +▁colectiv 1 +▁savait 1 +▁ప్రధాన 1 +▁jesteś 1 +缓 1 +▁інформації 1 +▁పవన్ 1 +フェ 1 +▁करोड़ 1 +▁ਰਹੀ 1 +▁nalazi 1 +ລາຍການວິທະຍຸ 1 +▁uporabnik 1 +ສູງ 1 +▁Sloveniji 1 +▁vanskelig 1 +▁tehnologij 1 +▁teşekkür 1 +▁swoim 1 +েশন 1 +様々な 1 +帳 1 +ศิลป 1 +웃 1 +▁dành 1 +课程 1 +เหล่า 1 +lumotlar 1 +▁известно 1 +ບ້ານ 1 +▁nằm 1 +▁секретар 1 +▁volledig 1 +▁Zdrav 1 +ҮҮ 1 +kontakt 1 +0.0 1 +▁தெரிய 1 +ブラ 1 +▁menneske 1 +▁Argentina 1 +▁հաստատ 1 +▁konserv 1 +ଯାଉ 1 +▁gjerne 1 +త్తు 1 +欢迎 1 +ಯೋಗ 1 +阪 1 +끼 1 +▁тұлға 1 +wiktionary 1 +▁ближ 1 +▁родители 1 +▁मौत 1 +▁season 1 +ୱ 1 +▁terlihat 1 +▁злочин 1 +▁համաձայն 1 +အစိုးရ 1 +▁وضعیت 1 +▁국내 1 +▁kjøpe 1 +▁Јован 1 +拼 1 +涨 1 +ទស្ស 1 +▁വീണ്ടും 1 +써 1 +▁iDNES 1 +حتاج 1 +怖 1 +▁Gymraeg 1 +▁rámci 1 +▁potrivit 1 +▁sonuç 1 +▁mnogo 1 +▁фирма 1 +▁ಕೊಡ 1 +▁शक्ति 1 +堡 1 +أطفال 1 +พระราช 1 +пројект 1 +慢慢 1 +冊 1 +” 1 +▁ፓርቲ 1 +▁अवसर 1 +▁тисяч 1 +ໃ 1 +となります 1 +▁নিহত 1 +▁التعليم 1 +▁રહ્યા 1 +▁منابع 1 +ׁ 1 +ঞ্চ 1 +▁समूह 1 +▁людзей 1 +▁उद्योग 1 +▁jednej 1 +実際に 1 +墨 1 +ሏ 1 +เซีย 1 +▁ψυχ 1 +▁جنرل 1 +▁xarici 1 +дөгү 1 +世纪 1 +▁چنین 1 +▁Integra 1 +▁keçirilib 1 +Facebook 1 +されます 1 +▁ажлын 1 +▁żadn 1 +gesteld 1 +赶 1 +▁đoạn 1 +▁սակայն 1 +▁مناطق 1 +▁аппарат 1 +▁ovdje 1 +્રિ 1 +▁সর্ব 1 +▁nikdy 1 +▁ახალ 1 +חזק 1 +ኙ 1 +污染 1 +ඡ 1 +▁сәйкес 1 +▁چگونه 1 +▁ფოტო 1 +▁mobiele 1 +wirtschaft 1 +▁ücret 1 +lashtirish 1 +літератур 1 +▁ನಡೆಯ 1 +鍋 1 +▁ہاتھ 1 +▁కేంద్ర 1 +ນ້ອຍ 1 +▁특히 1 +▁λεπτ 1 +▁genoeg 1 +腰 1 +॒ 1 +▁මහින්ද 1 +қатынас 1 +▁مراسم 1 +▁Academi 1 +kampanj 1 +▁Original 1 +▁букв 1 +漏 1 +▁উপজেলা 1 +▁તમારા 1 +▁শেষ 1 +ခ်ိန္ 1 +▁release 1 +▁Fakult 1 +Ủ 1 +बद्दल 1 +▁osallistu 1 +▁дамыту 1 +▁shpreh 1 +ಸಭೆ 1 +▁πόλη 1 +▁يعني 1 +schnitt 1 +▁ώρα 1 +▁wollte 1 +欠 1 +▁spoločnosti 1 +صنع 1 +ວັນທີ 1 +▁müzakirə 1 +▁ultricies 1 +▁fungera 1 +▁площ 1 +पेक्षा 1 +▁сэтгэл 1 +▁दुर्घटना 1 +▁anbefale 1 +▁proqram 1 +▁القانون 1 +▁лечение 1 +θέσεις 1 +種類 1 +▁જણાવ 1 +データ 1 +▁університет 1 +▁آینده 1 +▁רוצה 1 +chodzą 1 +瞬 1 +豐富 1 +ಾಲಯ 1 +▁ონლაინ 1 +▁վերջին 1 +▁administr 1 +▁помощью 1 +▁ነበር። 1 +▁Museo 1 +ായിരുന്ന 1 +บุคคล 1 +มหาวิทยาลัย 1 +▁ішінде 1 +▁mại 1 +▁தமிழக 1 +▁vaqt 1 +▁fantasi 1 +晴 1 +熊 1 +▁मन्त्रालय 1 +▁جہاں 1 +▁정말 1 +▁اکثر 1 +systeem 1 +นะครับ 1 +▁অনেক 1 +దేశం 1 +▁Dzięki 1 +▁требования 1 +▁தகவல் 1 +▁Selangor 1 +▁geworden 1 +τροπή 1 +▁ambapo 1 +▁ఉంటా 1 +▁вредност 1 +藉 1 +ઊ 1 +တဲ႔ 1 +▁económica 1 +▁դպրոց 1 +万円 1 +▁וואָס 1 +▁سرمایه 1 +ستطيع 1 +▁əldə 1 +ിട്ടില്ല 1 +▁ստաց 1 +▁એટલે 1 +▁взаимо 1 +▁सक्छ 1 +▁Moldova 1 +なんて 1 +▁zêde 1 +▁употреба 1 +สูตร 1 +▁október 1 +▁اسرائیل 1 +폐 1 +▁Министерство 1 +▁študent 1 +▁заключен 1 +▁bepaal 1 +▁white 1 +▁feugiat 1 +▁وړاندې 1 +▁مجموعة 1 +▁manfaat 1 +儀 1 +▁خواتین 1 +▁ಬೆಂಗಳೂರು 1 +▁taarifa 1 +▁சென்னை 1 +▁wysoki 1 +▁യുവ 1 +▁ಇದ್ದ 1 +説 1 +仪 1 +衝 1 +เยี่ยม 1 +▁החברה 1 +▁그러나 1 +▁données 1 +▁प्रवेश 1 +▁безопасности 1 +▁belirle 1 +ących 1 +posledn 1 +▁beautiful 1 +▁हिंदी 1 +▁character 1 +▁nghiên 1 +▁сотрудник 1 +ഭാഷ 1 +扎 1 +ఊ 1 +▁keçirilən 1 +▁предприятия 1 +▁અહીં 1 +▁plaisir 1 +▁ասել 1 +▁كۈن 1 +எழு 1 +▁громадськ 1 +▁berhasil 1 +▁ছবি 1 +▁maaaring 1 +αυτό 1 +労 1 +biztonság 1 +iqtisadi 1 +▁ଦୁଇ 1 +▁outubro 1 +▁mērķ 1 +▁цифр 1 +爸爸 1 +提醒 1 +Արցախ 1 +▁المللی 1 +▁նշանակ 1 +▁नवीन 1 +▁επίσης 1 +iPhone 1 +ზოგ 1 +警察 1 +koľvek 1 +▁məhsul 1 +▁vprašanj 1 +▁πολλά 1 +▁азамат 1 +规范 1 +פרט 1 +猫 1 +▁еңбек 1 +▁어떻게 1 +▁манастир 1 +举办 1 +莱 1 +▁холбогд 1 +▁ngoại 1 +▁uyğun 1 +▁حوالے 1 +▁nagyobb 1 +ល្អ 1 +免费 1 +么 1 +▁oldukça 1 +▁հոդված 1 +▁جۇڭگو 1 +▁Sekolah 1 +▁kandid 1 +ീകരിക്ക 1 +哦 1 +▁وزیراعظم 1 +▁좋아 1 +កើត 1 +筋 1 +ВИДЕО 1 +▁۱۳۹۷ 1 +▁දේවල් 1 +▁взгляд 1 +运营 1 +ដ្ឋាន 1 +▁spēlē 1 +▁факултет 1 +▁օգտագործ 1 +▁menemukan 1 +▁jednotliv 1 +▁ёстой 1 +ຢາ 1 +▁ndryshme 1 +schaffen 1 +встановлен 1 +อําเภอ 1 +ၵ 1 +▁Oneindia 1 +▁terakhir 1 +ಸ್ಥಾನ 1 +▁практически 1 +▁vaikutta 1 +▁dejlig 1 +▁aprender 1 +▁ತಿಳಿಸ 1 +虚 1 +ფონ 1 +Ų 1 +▁zarówno 1 +▁کامیاب 1 +勵 1 +สังคม 1 +Міжнародн 1 +▁características 1 +▁المجتمع 1 +▁شناخت 1 +▁غوښت 1 +▁관계 1 +τήριο 1 +әрекет 1 +ርሱ 1 +ประเภท 1 +▁famiglia 1 +▁περισσότερο 1 +▁министер 1 +▁இயக்க 1 +двиг 1 +Ադրբեջան 1 +▁глобал 1 +seksuel 1 +▁cresce 1 +▁גבוה 1 +▁댓글 1 +▁encontro 1 +▁ന്യൂ 1 +▁හිටිය 1 +▁سینما 1 +պիսի 1 +▁Haupt 1 +grunn 1 +▁Seminar 1 +laşdırıl 1 +▁объяс 1 +▁ಸಿನಿಮಾ 1 +▁ресторан 1 +▁قىلىپ 1 +▁действи 1 +▁центар 1 +продовж 1 +▁руководи 1 +▁దర్శక 1 +▁ljós 1 +שינוי 1 +討論 1 +膜 1 +មើល 1 +▁کشمیر 1 +▁নিজ 1 +趋 1 +纸 1 +▁ձեռք 1 +▁omnibus 1 +反映 1 +▁Tiranë 1 +▁univerz 1 +▁změn 1 +▁býva 1 +▁Toshkent 1 +▁defensa 1 +ไม่ใช่ 1 +▁kenyataan 1 +kilpailu 1 +ตรวจสอบ 1 +▁geeft 1 +نتظر 1 +舍 1 +抑 1 +▁właściw 1 +▁روابط 1 +▁բարե 1 +▁архі 1 +እውነ 1 +罚 1 +นิยม 1 +ਅਮਰੀਕ 1 +▁Chúa 1 +▁hoofd 1 +ឌ 1 +▁այց 1 +▁அரச 1 +expérience 1 +изъм 1 +məlidir 1 +ぜひ 1 +▁व्यापार 1 +▁আমরা 1 +▁પાસે 1 +▁କରନ୍ତୁ 1 +iếm 1 +ហេតុ 1 +▁kwaliteit 1 +▁допомогою 1 +▁тәрбие 1 +▁تشکیل 1 +▁συμπ 1 +արձակ 1 +▁idarə 1 +▁saavut 1 +▁управления 1 +ក្រសួង 1 +▁kļū 1 +▁քննարկ 1 +▁inteligent 1 +ಪುರ 1 +กลาก 1 +▁istəyir 1 +▁ମହିଳା 1 +▁Αθήνα 1 +▁పూర్తి 1 +▁රාජ් 1 +▁dạng 1 +וֹ 1 +▁kontraŭ 1 +돈 1 +▁успешно 1 +cookies 1 +▁prochain 1 +სიტყვ 1 +履 1 +餐廳 1 +▁προϊόν 1 +▁hiểm 1 +▁нејзин 1 +▁यादव 1 +▁журналіст 1 +▁najveć 1 +▁hjerte 1 +ახურ 1 +στροφ 1 +おすすめ 1 +พิมพ์ 1 +สํานักงาน 1 +valitsus 1 +▁ಮಾತ್ರ 1 +▁ماڻهن 1 +▁پروگرام 1 +▁सकती 1 +▁fiatal 1 +eeuw 1 +顏 1 +▁кезең 1 +▁බ්ලොග් 1 +▁պարզ 1 +ಾಯ್ 1 +▁asegura 1 +▁rodič 1 +润 1 +蓋 1 +▁sicurezza 1 +Ŝ 1 +▁اهڙي 1 +▁ಯಾರ 1 +這麼 1 +Κοιν 1 +▁környezet 1 +▁ullamcorper 1 +▁venenatis 1 +▁Холбоо 1 +▁teñen 1 +gräns 1 +▁berätta 1 +bygning 1 +கிறேன் 1 +▁százalék 1 +▁texnologiya 1 +▁هنگام 1 +▁직접 1 +▁ndonjë 1 +▁разлика 1 +▁අම්ම 1 +ՆԵՐ 1 +恢 1 +เตรียม 1 +▁حڪومت 1 +▁በጣም 1 +▁Vladimir 1 +ឃើញ 1 +ிருக்கிற 1 +規劃 1 +주세요 1 +▁condimentum 1 +▁inkább 1 +▁ਤੱਕ 1 +ሁሉም 1 +▁كۈچ 1 +▁müraciət 1 +▁اجلاس 1 +▁löytyy 1 +stjerne 1 +خلاص 1 +▁ქვეყანა 1 +▁ամբողջ 1 +▁setembro 1 +sław 1 +καταστ 1 +▁միջազգային 1 +▁adquiri 1 +淨 1 +▁mwenye 1 +▁società 1 +▁Rakyat 1 +▁følgende 1 +▁ինձ 1 +▁červen 1 +Ё 1 +遵 1 +雞 1 +▁ಸಾಧ್ಯ 1 +▁dlatego 1 +▁perspektiv 1 +▁berjaya 1 +სწორ 1 +の中に 1 +commerce 1 +▁చంద్రబాబు 1 +▁મેળવ 1 +▁Champions 1 +ၿပီ 1 +▁ਵਿਖੇ 1 +▁communication 1 +▁пошук 1 +▁pubblico 1 +▁suomalais 1 +▁पाँच 1 +▁njohur 1 +▁protagon 1 +▁хэрэглэ 1 +探索 1 +▁ерекше 1 +▁գյուղ 1 +▁گذاشت 1 +냐 1 +▁nyújt 1 +ချိန် 1 +▁λίγο 1 +stück 1 +드립니다 1 +읽 1 +▁הגדול 1 +▁سائٹ 1 +lığa 1 +▁모습 1 +▁хэлэлц 1 +▁නිර්මාණ 1 +▁درمیان 1 +▁книж 1 +频 1 +жылдын 1 +扬 1 +尿 1 +መጀመሪያ 1 +▁możliwość 1 +▁գլխավոր 1 +▁ബ്ലോഗ 1 +▁intervju 1 +▁Tetapi 1 +▁Ён 1 +វិទ្យា 1 +꾸 1 +พวกเขา 1 +▁uffici 1 +▁öğrenciler 1 +杜 1 +灯 1 +▁swoich 1 +▁визначен 1 +▁masturb 1 +▁devlet 1 +▁пуст 1 +肩 1 +▁Ethiopia 1 +▁कंपनी 1 +▁프로 1 +▁طالبان 1 +▁brīv 1 +잠 1 +쉬 1 +슈 1 +왜 1 +祭 1 +寧 1 +暑 1 +蜜 1 +鼻 1 +奧 1 +ඬ 1 +략 1 +餘 1 +怒 1 +尖 1 +셨 1 +羊 1 +燒 1 +¬ 1 +ฺ 1 +宏 1 +钢 1 +谓 1 +桥 1 +犬 1 +蘇 1 +¿ 1 +앙 1 +債 1 +宫 1 +碰 1 +债 1 +‭ 1 +십 1 +貓 1 +岡 1 +夠 1 +孔 1 +掌 1 +엇 1 +蓝 1 +덕 1 +哭 1 +絶 1 +ឿ 1 +摸 1 +隻 1 +愈 1 +赚 1 +ぜ 1 +撞 1 +│ 1 +涵 1 +註 1 +ょ 1 +몇 1 +틀 1 +ឋ 1 +鋼 1 +텔 1 +沈 1 +団 1 +풀 1 +ቼ 1 +± 1 +驶 1 +貌 1 +紫 1 +帯 1 +ĥ 1 +Ή 1 +枚 1 +氧 1 +ဤ 1 +딩 1 +梁 1 +歯 1 +률 1 +톡 1 +滋 1 +ඔ 1 +陣 1 +ሯ 1 +毕 1 +紛 1 +ጪ 1 +漢 1 +굴 1 +팔 1 +ײ 1 +ヶ 1 +閉 1 +Ñ 1 +躍 1 +貿 1 +ဧ 1 +仙 1 +ሓ 1 +ፒ 1 +誉 1 +亡 1 +瓜 1 +糕 1 +돼 1 +ぁ 1 +ൌ 1 +ഒ 1 +膚 1 +凝 1 +벽 1 +档 1 +ቨ 1 +Ľ 1 +宾 1 +酷 1 +榜 1 +妝 1 +뜻 1 +컬 1 +苗 1 +訳 1 +寸 1 +Û 1 +莉 1 +爷 1 +ゲ 1 +惡 1 +삭 1 +响 1 +允 1 +娜 1 +滴 1 +拟 1 +椅 1 +Ū 1 +忆 1 +ၥ 1 +큼 1 +闭 1 +凌 1 +隱 1 +両 1 +総 1 +账 1 +ṭ 1 +핵 1 +软 1 +ዥ 1 +魂 1 +宽 1 +朱 1 +궁 1 +밖 1 +银 1 +伙 1 +夕 1 +烤 1 +赞 1 +拔 1 +▼ 1 +ґ 1 +蔡 1 +ኞ 1 +ֹ 1 +辑 1 +抜 1 +缩 1 +욱 1 +沖 1 +\ 1 +呀 1 +̃ 1 +稍 1 +좌 1 +অ 1 +脫 1 +棄 1 +齢 1 +纯 1 +頑 1 +Є 1 +詩 1 +浙 1 +腦 1 +ቄ 1 +ঙ 1 +岗 1 +๐ 1 +泳 1 +緩 1 +削 1 +픽 1 +鳥 1 +玻 1 +麦 1 +ጳ 1 +솔 1 +孤 1 +ٻ 1 +盾 1 +辞 1 +ᅲ 1 +싸 1 +죄 1 +៕ 1 +販 1 +ઉ 1 +Ψ 1 +Ў 1 +헤 1 +융 1 +肝 1 +싱 1 +壞 1 +饰 1 +佩 1 +턴 1 +陰 1 +戻 1 +맨 1 +荒 1 +압 1 +즉 1 +抢 1 +泊 1 +卓 1 +캠 1 +ሟ 1 +廉 1 +灾 1 +径 1 +贈 1 +奉 1 +ၚ 1 +駐 1 +暂 1 +諾 1 +ሾ 1 +உ 1 +拖 1 +碎 1 +仰 1 +혀 1 +閒 1 +琴 1 +Ò 1 +洪 1 +亂 1 +捐 1 +킹 1 +털 1 +ۀ 1 +뮤 1 +竞 1 +拆 1 +洁 1 +曜 1 +疼 1 +汁 1 +ጹ 1 +빈 1 +堆 1 +貝 1 +歴 1 +빌 1 +Ś 1 +姻 1 +梯 1 +灰 1 +昌 1 +擴 1 +ṃ 1 +盈 1 +甚 1 +乃 1 +삶 1 +彰 1 +凯 1 +煤 1 +깨 1 +烦 1 +仿 1 +歸 1 +綜 1 +臭 1 +廚 1 +妳 1 +耀 1 +ΐ 1 +둘 1 +戒 1 +赵 1 +泥 1 +났 1 +庄 1 +乌 1 +腾 1 +鎖 1 +央 1 +泽 1 +획 1 +邪 1 +鼠 1 +٣ 1 +晓 1 +ၢ 1 +肯 1 +孙 1 +ඝ 1 +扮 1 +慰 1 +嬉 1 +幹 1 +框 1 +Ę 1 +賓 1 +꽃 1 +镜 1 +鸡 1 +吴 1 +递 1 +荐 1 +爽 1 +ヘ 1 +呵 1 +煙 1 +ڱ 1 +吐 1 +ឯ 1 +響 1 +旋 1 +擦 1 +慈 1 +ঢ 1 +므 1 +꼭 1 +傾 1 +Ճ 1 +豐 1 +郎 1 +伏 1 +璃 1 +– 1 +废 1 +慎 1 +恒 1 +垃 1 +潤 1 +裂 1 +迹 1 +헌 1 +揭 1 +沃 1 +ॐ 1 +偿 1 +섹 1 +Ố 1 +戀 1 +푸 1 +儲 1 +寬 1 +弗 1 +丰 1 +ۃ 1 +挂 1 +॑ 1 +룹 1 +얻 1 +湿 1 +猛 1 +롯 1 +濕 1 +逛 1 +訓 1 +煮 1 +尝 1 +劉 1 +筹 1 +继 1 +塗 1 +诊 1 +昔 1 +辺 1 +辣 1 +贸 1 +裕 1 +岩 1 +麥 1 +Ở 1 +랙 1 +胃 1 +鬆 1 +ђ 1 +埋 1 +牧 1 +匯 1 +奔 1 +ユ 1 +扱 1 +▪ 1 +殖 1 +ሹ 1 +揚 1 +퓨 1 +ಛ 1 +碳 1 +骗 1 +簽 1 +鹿 1 +逼 1 +驻 1 +赌 1 +掃 1 +떨 1 +泛 1 +渠 1 +Ќ 1 +ঈ 1 +寝 1 +ヨ 1 +赫 1 +맥 1 +绩 1 +串 1 +칼 1 +霸 1 +俺 1 +頓 1 +꿈 1 +׳ 1 +趕 1 +슨 1 +杭 1 +喊 1 +阴 1 +٩ 1 +ϋ 1 +锋 1 +羽 1 +餅 1 +ŕ 1 +藤 1 +輔 1 +顆 1 +켜 1 +催 1 +壇 1 +悠 1 +披 1 +ሦ 1 +೩ 1 +벤 1 +燥 1 +肪 1 +寿 1 +陶 1 +継 1 +吳 1 +摇 1 +봐 1 +ױ 1 +溪 1 +粒 1 +纽 1 +緒 1 +録 1 +赖 1 +摆 1 +ఏ 1 +挖 1 +篮 1 +獻 1 +溝 1 +俊 1 +ፁ 1 +郭 1 +蓮 1 +須 1 +팬 1 +宴 1 +Ậ 1 +냥 1 +赴 1 +符 1 +齡 1 +Ķ 1 +廳 1 +೯ 1 +炒 1 +绪 1 +劑 1 +聴 1 +፦ 1 +擬 1 +齊 1 +粗 1 +坊 1 +矿 1 +绕 1 +Þ 1 +옥 1 +센 1 +豊 1 +疆 1 +戸 1 +춘 1 +✔ 1 +엘 1 +즘 1 +霍 1 +ఈ 1 +붙 1 +壮 1 +佐 1 +腸 1 +凭 1 +잔 1 +俱 1 +悔 1 +旺 1 +ぞ 1 +叔 1 +炼 1 +郑 1 +戏 1 +搶 1 +퇴 1 +夺 1 +秦 1 +ၡ 1 +锁 1 +′ 1 +寓 1 +従 1 +紋 1 +ぱ 1 +ѕ 1 +弊 1 +밤 1 +宋 1 +圆 1 +跡 1 +浦 1 +੧ 1 +ィ 1 +ጮ 1 +찍 1 +崎 1 +ѳ 1 +ଃ 1 +询 1 +೫ 1 +矛 1 +脆 1 +• 1 +Ţ 1 +밝 1 +汽 1 +迈 1 +涼 1 +튼 1 +暫 1 +遅 1 +갔 1 +빛 1 +徴 1 +淘 1 +ૅ 1 +帕 1 +롭 1 +掘 1 +Ơ 1 +Ț 1 +瞭 1 +▶ 1 +♦ 1 +桑 1 +즌 1 +柏 1 +ঐ 1 +Ề 1 +슴 1 +宙 1 +飽 1 +託 1 +셀 1 +芝 1 +悟 1 +沢 1 +胖 1 +櫃 1 +繪 1 +趨 1 +偉 1 +謂 1 +폴 1 +朵 1 +乙 1 +恰 1 +ಆ 1 +೪ 1 +칠 1 +虛 1 +唔 1 +| 1 +肤 1 +첨 1 +鍵 1 +ጢ 1 +없 1 +豬 1 +措 1 +雑 1 +콜 1 +芬 1 +柯 1 +¶ 1 +ኗ 1 +愉 1 +丸 1 +償 1 +駕 1 +紐 1 +ၽ 1 +빨 1 +枪 1 +弁 1 +ጄ 1 +针 1 +译 1 +牢 1 +涯 1 +慕 1 +誘 1 +妈 1 +緣 1 +莎 1 +홀 1 +ᆞ 1 +ѝ 1 +堪 1 +Ě 1 +혈 1 +娃 1 +째 1 +讚 1 +◆ 1 +澤 1 +輩 1 +鑑 1 +遣 1 +潛 1 +缘 1 +킨 1 +匹 1 +幽 1 +ၶ 1 +娛 1 +斤 1 +낸 1 +徹 1 +칭 1 +壽 1 +姑 1 +媽 1 +浩 1 +§ 1 +알 1 +嘛 1 +滅 1 +Ì 1 +ٔ 1 +ಊ 1 +築 1 +雕 1 +污 1 +児 1 +♡ 1 +칙 1 +磁 1 +끌 1 +雇 1 +鬥 1 +ஏ 1 +崩 1 +舗 1 +剂 1 +赔 1 +袖 1 +芳 1 +挙 1 +⁄ 1 +怨 1 +什 1 +薩 1 +乔 1 +벨 1 +撃 1 +셜 1 +际 1 +闻 1 +妥 1 +莊 1 +蔬 1 +昆 1 +墙 1 +嫁 1 +併 1 +苹 1 +晰 1 +Ị 1 +煩 1 +魯 1 +礙 1 +疾 1 +켓 1 +扰 1 +歡 1 +瘦 1 +忧 1 +淋 1 +眉 1 +납 1 +탕 1 +谋 1 +賴 1 +糊 1 +爬 1 +↳ 1 +烧 1 +诗 1 +暮 1 +侧 1 +ങ 1 +欺 1 +敌 1 +倡 1 +爸 1 +픈 1 +鉴 1 +һ 1 +诸 1 +嘅 1 +撑 1 +妨 1 +钟 1 +辈 1 +焼 1 +灣 1 +爲 1 +ヴ 1 +ሷ 1 +‚ 1 +ආ 1 +ඉ 1 +Ớ 1 +ゼ 1 +穴 1 +衰 1 +闲 1 +ឱ 1 +😂 1 +廷 1 +撤 1 +箭 1 +ၻ 1 +擺 1 +‧ 1 +舰 1 +척 1 +‟ 1 +猜 1 +緻 1 +崇 1 +ṛ 1 +唯 1 +卒 1 +脈 1 +킬 1 +넣 1 +阶 1 +숨 1 +ኋ 1 +祥 1 +柱 1 +織 1 +勃 1 +呆 1 +赏 1 +详 1 +낮 1 +颜 1 +碑 1 +앤 1 +奮 1 +뜨 1 +램 1 +٥ 1 +諸 1 +倉 1 +棉 1 +ӊ 1 +秉 1 +겁 1 +섬 1 +倾 1 +酬 1 +Ť 1 +楊 1 +玛 1 +ဋ 1 +ŷ 1 +騎 1 +馨 1 +碍 1 +翼 1 +ඈ 1 +鄭 1 +逢 1 +肚 1 +欄 1 +撒 1 +剪 1 +鹽 1 +暨 1 +唇 1 +— 1 +๓ 1 +芸 1 +穆 1 +拠 1 +ኸ 1 +貢 1 +ō 1 +瀏 1 +囉 1 +擎 1 +ႆ 1 +٤ 1 +攜 1 +妮 1 +驱 1 +妊 1 +‡ 1 +곤 1 +灭 1 +棋 1 +輛 1 +昭 1 +郁 1 +剤 1 +琳 1 +ඵ 1 +跃 1 +挥 1 +蒸 1 +曝 1 +桶 1 +陌 1 +帽 1 +蓄 1 +虫 1 +圧 1 +狠 1 +앱 1 +씩 1 +盗 1 +稀 1 +廢 1 +嘗 1 +训 1 +렴 1 +ඇ 1 +狼 1 +厳 1 +© 1 +贏 1 +촉 1 +恨 1 +辅 1 +醬 1 +屈 1 +賀 1 +녕 1 +렉 1 +扫 1 +譯 1 +殿 1 +녹 1 +蜂 1 +吨 1 +奪 1 +닝 1 +寵 1 +徽 1 +ၠ 1 +函 1 +佔 1 +劲 1 +傻 1 +闹 1 +巷 1 +骑 1 +듣 1 +漲 1 +袭 1 +旬 1 +ၸ 1 +٫ 1 +絵 1 +济 1 +斑 1 +栄 1 +纠 1 +抬 1 +暢 1 +₪ 1 +艰 1 +๔ 1 +浸 1 +胁 1 +礦 1 +铺 1 +ഊ 1 +迁 1 +閱 1 +럭 1 +轨 1 +逾 1 +蘋 1 +냈 1 +黒 1 +滞 1 +己 1 +ಃ 1 +脏 1 +咪 1 +ဌ 1 +昂 1 +髪 1 +辉 1 +碟 1 +拳 1 +凱 1 +颗 1 +멀 1 +촌 1 +碗 1 +짓 1 +萊 1 +烏 1 +〉 1 +諮 1 +೬ 1 +鄰 1 +扭 1 +劣 1 +締 1 +臣 1 +腕 1 +됐 1 +醉 1 +郡 1 +傑 1 +뭐 1 +೮ 1 +翰 1 +賃 1 +燕 1 +祈 1 +牆 1 +섭 1 +闪 1 +抹 1 +Ļ 1 +ಞ 1 +๖ 1 +漆 1 +廊 1 +砂 1 +杉 1 +析 1 +٧ 1 +값 1 +傲 1 +咬 1 +帅 1 +Ѓ 1 +೭ 1 +닫 1 +➖ 1 +ఢ 1 +† 1 +坪 1 +昇 1 +ಢ 1 +仮 1 +浓 1 +Ụ 1 +밥 1 +螢 1 +傅 1 +閃 1 +🏻 1 +孫 1 +壹 1 +瑪 1 +ೕ 1 +捨 1 +擾 1 +歉 1 +흐 1 +٨ 1 +鏈 1 +枝 1 +勧 1 +틴 1 +徑 1 +坡 1 +夾 1 +Է 1 +繼 1 +剑 1 +ኾ 1 +逊 1 +肺 1 +辨 1 +厉 1 +՜ 1 +옵 1 +輝 1 +ѣ 1 +壯 1 +躺 1 +玄 1 +뛰 1 +못 1 +兹 1 +犹 1 +偵 1 +炭 1 +ሑ 1 +ႇ 1 +猪 1 +儘 1 +憑 1 +ฬ 1 +罰 1 +踪 1 +兆 1 +ጾ 1 +缴 1 +搖 1 +ቧ 1 +肖 1 +癫 1 +雖 1 +硕 1 +몬 1 +😊 1 +渴 1 +吊 1 +÷ 1 +Ί 1 +롤 1 +ၾ 1 +湾 1 +褲 1 +႑ 1 +탐 1 +胆 1 +짐 1 +ֿ 1 +柳 1 +駛 1 +闆 1 +큐 1 +Ņ 1 +柴 1 +😍 1 +楚 1 +₹ 1 +샤 1 +宪 1 +멋 1 +毅 1 +彭 1 +捉 1 +洽 1 +졸 1 +폼 1 +垂 1 +鉄 1 +腔 1 +咱 1 +닷 1 +蛇 1 +痕 1 +迟 1 +盆 1 +괴 1 +탑 1 +賺 1 +샵 1 +毁 1 +敷 1 +腺 1 +ቾ 1 +봄 1 +컵 1 +畅 1 +勿 1 +텍 1 +갤 1 +孝 1 +凍 1 +軸 1 +Ể 1 +랫 1 +쁜 1 +٦ 1 +桂 1 +埔 1 +橫 1 +肃 1 +疯 1 +梨 1 +丢 1 +휘 1 +须 1 +Į 1 +Ọ 1 +嫩 1 +芯 1 +踢 1 +襲 1 +摂 1 +瓷 1 +◄ 1 +肢 1 +痫 1 +貫 1 +啥 1 +弘 1 +딸 1 +蟲 1 +浜 1 +Ờ 1 +卢 1 +炮 1 +騙 1 +럴 1 +ഉ 1 +姨 1 +玲 1 +囊 1 +흔 1 +茨 1 +萌 1 +坑 1 +✓ 1 +疏 1 +瘤 1 +朴 1 +孟 1 +涂 1 +厦 1 +憂 1 +웠 1 +閣 1 +慣 1 +札 1 +윈 1 +鐘 1 +敲 1 +糟 1 +翔 1 +脳 1 +릿 1 +튜 1 +〈 1 +鳳 1 +仇 1 +Ģ 1 +盼 1 +뇌 1 +奴 1 +飼 1 +噴 1 +墓 1 +繫 1 +伐 1 +兔 1 +夥 1 +籤 1 +巻 1 +繰 1 +爐 1 +렵 1 +繳 1 +멘 1 +힐 1 +鬧 1 +泪 1 +穷 1 +낙 1 +옷 1 +짝 1 +绘 1 +戈 1 +叹 1 +槽 1 +닥 1 +鸟 1 +逸 1 +ぬ 1 +懸 1 +鑽 1 +艇 1 +̈ 1 +譽 1 +卵 1 +灘 1 +땅 1 +ቺ 1 +寂 1 +柜 1 +憾 1 +譜 1 +ֲ 1 +伺 1 +呂 1 +Ầ 1 +躲 1 +牲 1 +냉 1 +템 1 +ஒ 1 +溢 1 +厨 1 +Ű 1 +룸 1 +汤 1 +詹 1 +貧 1 +壊 1 +锦 1 +Έ 1 +屁 1 +吻 1 +遞 1 +耕 1 +ׂ 1 +ዌ 1 +얘 1 +憲 1 +仓 1 +践 1 +勾 1 +衷 1 +滾 1 +秩 1 +拘 1 +漠 1 +昼 1 +吵 1 +亏 1 +悄 1 +斜 1 +葬 1 +稼 1 +趁 1 +ぽ 1 +杆 1 +舌 1 +톤 1 +핀 1 +펴 1 +찌 1 +溶 1 +錶 1 +උ 1 +嬰 1 +姊 1 +董 1 +谐 1 +艦 1 +ኽ 1 +癒 1 +潘 1 +酵 1 +慧 1 +ጩ 1 +瑰 1 +括 1 +丘 1 +軌 1 +Ợ 1 +△ 1 +殘 1 +迴 1 +뢰 1 +… 1 +닐 1 +ѐ 1 +拥 1 +盲 1 +鳴 1 +籌 1 +拾 1 +蹤 1 +흡 1 +吓 1 +忌 1 +墊 1 +泄 1 +颁 1 +腫 1 +콩 1 +帖 1 +Ổ 1 +妆 1 +遮 1 +ഓ 1 +쁘 1 +ዑ 1 +빗 1 +柄 1 +虑 1 +胶 1 +蕾 1 +讼 1 +奢 1 +凤 1 +춤 1 +妖 1 +↓ 1 +玫 1 +ௌ 1 +‮ 1 +😞 1 +蝦 1 +〔 1 +맹 1 +빙 1 +栽 1 +綺 1 +ഔ 1 +〕 1 +遥 1 +젊 1 +叙 1 +扇 1 +팩 1 +籃 1 +殼 1 +辽 1 +怡 1 +浅 1 +̧ 1 +☺ 1 +巾 1 +ゾ 1 +裙 1 +ኡ 1 +젠 1 +邁 1 +끔 1 +滨 1 +瘋 1 +逝 1 +霧 1 +쓴 1 +赋 1 +栏 1 +阔 1 +啤 1 +塵 1 +邓 1 +臟 1 +晋 1 +兽 1 +灌 1 +纖 1 +慌 1 +泣 1 +卸 1 +臂 1 +賢 1 +£ 1 +惨 1 +펜 1 +努 1 +豫 1 +ォ 1 +ۂ 1 +裸 1 +◎ 1 +蠻 1 +틱 1 +꼬 1 +Ď 1 +빅 1 +ဍ 1 +脉 1 +႒ 1 +掩 1 +虹 1 +粧 1 +੨ 1 +ჲ 1 +牵 1 +霜 1 +阅 1 +邻 1 +茂 1 +蓬 1 +娠 1 +婴 1 +깔 1 +碌 1 +漁 1 +傢 1 +쓸 1 +艘 1 +擅 1 +曹 1 +趟 1 +춰 1 +젤 1 +頒 1 +泌 1 +膽 1 +딱 1 +쇄 1 +● 1 +挫 1 +羞 1 +涌 1 +凉 1 +鼎 1 +碧 1 +槍 1 +暇 1 +ඌ 1 +歧 1 +騰 1 +勘 1 +٬ 1 +膨 1 +惹 1 +谨 1 +陵 1 +ಒ 1 +曉 1 +陕 1 +滚 1 +撥 1 +溜 1 +荡 1 +釣 1 +芽 1 +낼 1 +膩 1 +逻 1 +罩 1 +앨 1 +谱 1 +爺 1 +⠀ 1 +葛 1 +逮 1 +哀 1 +賠 1 +猶 1 +攀 1 +尸 1 +帆 1 +넓 1 +堵 1 +誓 1 +둔 1 +罐 1 +盜 1 +ଋ 1 +碩 1 +蝶 1 +螺 1 +挣 1 +吞 1 +¦ 1 +辖 1 +廟 1 +곧 1 +꺼 1 +舟 1 +丧 1 +읍 1 +浏 1 +찮 1 +叉 1 +捧 1 +🙏 1 +▷ 1 +遷 1 +듀 1 +゚ 1 +匙 1 +虐 1 +฿ 1 +锻 1 +昏 1 +狱 1 +乖 1 +悅 1 +빼 1 +쳤 1 +櫻 1 +繞 1 +爵 1 +瑟 1 +辰 1 +懶 1 +웅 1 +尘 1 +缸 1 +닉 1 +ઑ 1 +Ĝ 1 +潭 1 +鈴 1 +밍 1 +밴 1 +齒 1 +迅 1 +ṅ 1 +롱 1 +煌 1 +隠 1 +ቫ 1 +隣 1 +녁 1 +窓 1 +粮 1 +寨 1 +祉 1 +ഈ 1 +椒 1 +膀 1 +疗 1 +遲 1 +攤 1 +韦 1 +黏 1 +힌 1 +竭 1 +罕 1 +勁 1 +๙ 1 +醇 1 +ఉ 1 +凶 1 +誇 1 +👍 1 +栗 1 +淺 1 +Ό 1 +錦 1 +撰 1 +饱 1 +庞 1 +옆 1 +흑 1 +匠 1 +嗯 1 +莓 1 +晒 1 +踐 1 +膝 1 +앉 1 +唷 1 +惧 1 +๘ 1 +ዷ 1 +俩 1 +ಔ 1 +헬 1 +👉 1 +淫 1 +裔 1 +熬 1 +릉 1 +肿 1 +鋪 1 +嘿 1 +Ồ 1 +虽 1 +拨 1 +盯 1 +劍 1 +筒 1 +ಈ 1 +舖 1 +紗 1 +坂 1 +蟹 1 +辩 1 +辱 1 +汰 1 +똑 1 +澡 1 +엠 1 +銅 1 +█ 1 +⇒ 1 +劫 1 +獸 1 +澎 1 +훼 1 +岳 1 +抖 1 +씬 1 +賭 1 +踩 1 +ጐ 1 +遂 1 +ഃ 1 +诱 1 +汚 1 +聪 1 +끄 1 +麽 1 +骂 1 +侯 1 +悦 1 +纵 1 +挤 1 +吋 1 +芒 1 +॰ 1 +겼 1 +膏 1 +喻 1 +甸 1 +詰 1 +걱 1 +맘 1 +峡 1 +粹 1 +묘 1 +棟 1 +⚫ 1 +벗 1 +„ 1 +汪 1 +薇 1 +贺 1 +挡 1 +簿 1 +詐 1 +亭 1 +恵 1 +赁 1 +摔 1 +໋ 1 +ဃ 1 +斥 1 +廃 1 +畏 1 +宠 1 +狭 1 +噸 1 +濟 1 +窮 1 +묵 1 +😛 1 +엑 1 +棚 1 +濾 1 +弾 1 +몽 1 +喉 1 +縁 1 +﴿ 1 +稚 1 +ቬ 1 +ጧ 1 +駄 1 +饋 1 +毀 1 +Ù 1 +ઞ 1 +፻ 1 +颇 1 +粘 1 +魏 1 +茫 1 +ؓ 1 +๗ 1 +獄 1 +馈 1 +핸 1 +ଐ 1 +婷 1 +☞ 1 +钻 1 +謀 1 +曆 1 +晃 1 +壤 1 +卑 1 +挨 1 +蔵 1 +喷 1 +縄 1 +랍 1 +抛 1 +翌 1 +ఓ 1 +喂 1 +獅 1 +衍 1 +坎 1 +尬 1 +ṉ 1 +﴾ 1 +叛 1 +쾌 1 +捲 1 +诈 1 +姜 1 +謹 1 +廈 1 +撐 1 +驅 1 +艳 1 +Ń 1 +ః 1 +烯 1 +弥 1 +奠 1 +淚 1 +嚇 1 +扑 1 +扯 1 +珊 1 +줘 1 +짧 1 +纹 1 +琪 1 +덩 1 +칸 1 +瑜 1 +ဿ 1 +룩 1 +凸 1 +祂 1 +ऑ 1 +赠 1 +郊 1 +挽 1 +셋 1 +煎 1 +炉 1 +鸣 1 +잉 1 +懈 1 +侶 1 +狐 1 +雾 1 +ํ 1 +凰 1 +绑 1 +훌 1 +□ 1 +菊 1 +佢 1 +闊 1 +ഢ 1 +뤄 1 +묻 1 +엉 1 +抚 1 +裤 1 +梳 1 +穌 1 +濱 1 +酥 1 +脅 1 +ਔ 1 +콤 1 +厲 1 +驟 1 +巢 1 +쿨 1 +衫 1 +歪 1 +锅 1 +桿 1 +靴 1 +٪ 1 +烂 1 +锐 1 +贾 1 +덜 1 +ὶ 1 +흘 1 +键 1 +遙 1 +ඤ 1 +匆 1 +軒 1 +鴨 1 +扔 1 +둥 1 +뿌 1 +滩 1 +咁 1 +낭 1 +谊 1 +涛 1 +烘 1 +恆 1 +ኹ 1 +룡 1 +嚐 1 +拌 1 +牽 1 +ႉ 1 +旭 1 +恭 1 +ၲ 1 +牠 1 +୤ 1 +悬 1 +銘 1 +喬 1 +翠 1 +綿 1 +넥 1 +腊 1 +册 1 +搏 1 +戚 1 +━ 1 +ಉ 1 +舆 1 +颖 1 +贊 1 +撼 1 +陀 1 +捏 1 +邱 1 +✅ 1 +蔥 1 +嘆 1 +敞 1 +ァ 1 +ቭ 1 +屯 1 +愤 1 +桜 1 +ٴ 1 +ဈ 1 +喘 1 +惩 1 +잇 1 +盧 1 +ଙ 1 +吁 1 +冯 1 +袁 1 +僵 1 +腎 1 +斌 1 +厘 1 +፲ 1 +👇 1 +掀 1 +ἐ 1 +帥 1 +橡 1 +縫 1 +ၳ 1 +ዢ 1 +쯤 1 +崛 1 +挪 1 +፪ 1 +껴 1 +렬 1 +哩 1 +ャ 1 +縱 1 +矩 1 +Ẩ 1 +় 1 +凄 1 +稻 1 +恥 1 +沾 1 +橘 1 +胀 1 +Ĺ 1 +亨 1 +驰 1 +咖 1 +织 1 +煉 1 +肠 1 +刮 1 +厌 1 +丑 1 +貯 1 +翁 1 +ፔ 1 +痴 1 +崔 1 +偽 1 +综 1 +弯 1 +駆 1 +彌 1 +枕 1 +眺 1 +曬 1 +喪 1 +痘 1 +夸 1 +卜 1 +擠 1 +芭 1 +봇 1 +፳ 1 +喚 1 +齿 1 +ऍ 1 +删 1 +鹏 1 +頸 1 +‒ 1 +栋 1 +猴 1 +趙 1 +鋒 1 +੩ 1 +吾 1 +훨 1 +펀 1 +莞 1 +겸 1 +纲 1 +侦 1 +蚊 1 +杏 1 +爛 1 +ሒ 1 +渔 1 +逗 1 +鍊 1 +愚 1 +刪 1 +ぷ 1 +鴻 1 +歇 1 +潢 1 +ḷ 1 + 1 +颈 1 +朋 1 +闷 1 +墅 1 +砖 1 +雀 1 +蘿 1 +徳 1 +殊 1 +丟 1 + 1 +罢 1 +頗 1 +盐 1 +聰 1 +ഛ 1 +륭 1 +섯 1 +辭 1 +淑 1 +轰 1 +恼 1 +帐 1 +鈕 1 +葡 1 +庸 1 +贪 1 +撲 1 +랄 1 +ؒ 1 +랩 1 +擁 1 +亩 1 +塘 1 +😘 1 +鋁 1 +茄 1 +薯 1 +脾 1 +‘ 1 +耍 1 +咳 1 +懒 1 +骤 1 +賜 1 + 1 +ፏ 1 +Ữ 1 +쌍 1 +惱 1 +੪ 1 +誼 1 +苑 1 +夷 1 +澄 1 +茅 1 +ሖ 1 + 1 +厭 1 +砸 1 +锡 1 +裹 1 +缅 1 +茲 1 +躁 1 +싫 1 +敘 1 +姚 1 +눔 1 +弦 1 +卧 1 +ዔ 1 +잊 1 +趴 1 +愁 1 +慨 1 +蕉 1 +憩 1 +겐 1 +溯 1 +磚 1 +铜 1 +枯 1 +猎 1 +ቿ 1 +뷔 1 +菓 1 +撕 1 +坛 1 +ञ 1 +伪 1 +烹 1 +ଈ 1 +磅 1 +湧 1 +冻 1 +沐 1 +僚 1 +噪 1 +窩 1 +獵 1 +Ử 1 +낚 1 +ˈ 1 +隧 1 +砍 1 +잃 1 +혐 1 +Ź 1 +ῦ 1 +霊 1 +繩 1 +稽 1 +랭 1 +😎 1 +籲 1 +됨 1 +싼 1 +瞧 1 +妄 1 +侨 1 +夹 1 +盃 1 +豹 1 +ሼ 1 +ỵ 1 +屠 1 +옛 1 +ឪ 1 +糧 1 +拯 1 +፩ 1 +菩 1 +畜 1 +抄 1 +哼 1 +淇 1 +梭 1 +糾 1 +Ά 1 +沫 1 +菇 1 +ಝ 1 +∙ 1 +끗 1 +惟 1 +络 1 +剣 1 +멜 1 +줍 1 +ഏ 1 +厕 1 +뒷 1 +∀ 1 +峻 1 +綁 1 +鍛 1 +骄 1 +謎 1 +ဠ 1 +♫ 1 +隙 1 +淀 1 +脊 1 +蹟 1 +炫 1 +臓 1 +빵 1 +狙 1 +∼ 1 +鬱 1 +唤 1 +揉 1 +彷 1 +宛 1 +◇ 1 +뱅 1 +캡 1 +̄ 1 +宰 1 +沸 1 +ぴ 1 +덴 1 +믹 1 +쌓 1 +迄 1 +擋 1 +飘 1 +✨ 1 +ᅮ 1 +阁 1 +哇 1 +貰 1 +賦 1 +矢 1 +숲 1 +湛 1 +皱 1 +ඞ 1 +熙 1 +岐 1 +ዣ 1 +Ừ 1 +仗 1 +멸 1 +ჳ 1 +햇 1 +慘 1 +霞 1 +愧 1 +疊 1 +咒 1 +굉 1 +卿 1 +脖 1 +ՙ 1 +ፆ 1 +ፐ 1 +멍 1 +멤 1 +喫 1 +蒜 1 +窝 1 +龜 1 +롬 1 +ॊ 1 +뭔 1 +峽 1 +劝 1 +侠 1 +蒐 1 +睹 1 +꿀 1 +悶 1 +镑 1 +ఔ 1 +晤 1 +끈 1 +ɛ 1 +않 1 +慾 1 +喇 1 +闘 1 +鸿 1 +爹 1 +긍 1 +톱 1 +湘 1 +睁 1 +絞 1 +傘 1 +塩 1 +爪 1 +轄 1 +蒋 1 +缝 1 +扁 1 +萧 1 +禱 1 +笨 1 +屍 1 +纤 1 +昧 1 +핫 1 +吕 1 +塌 1 +尴 1 +綱 1 +傍 1 +ଵ 1 +厄 1 +襯 1 +팁 1 +窃 1 +垫 1 +姉 1 +閲 1 +疹 1 +Ů 1 +兌 1 +嘲 1 +柬 1 +鍾 1 +튀 1 +떡 1 +崗 1 +穎 1 +幌 1 +팝 1 +蠢 1 +漿 1 +筑 1 +潑 1 +틸 1 +딜 1 +벼 1 +虧 1 +奸 1 +貞 1 +▽ 1 +睇 1 +檸 1 +扛 1 +坤 1 +讶 1 +阐 1 +彎 1 +橙 1 +諒 1 +밑 1 +샘 1 +💕 1 +貪 1 +聆 1 +蔓 1 +椎 1 +辐 1 +٭ 1 +酪 1 +龐 1 +鹰 1 +잖 1 +罵 1 +灑 1 +洩 1 +毯 1 +ሡ 1 +엽 1 +渣 1 +拋 1 +掏 1 +巫 1 +倦 1 +剖 1 +洒 1 +泵 1 +🙁 1 +瑕 1 +៏ 1 +〖 1 +肆 1 +俠 1 +兑 1 +怜 1 +賛 1 +덧 1 +〗 1 +샌 1 +礁 1 +丙 1 +밸 1 +닭 1 +豚 1 +籠 1 +喀 1 +庁 1 +쇠 1 +ۉ 1 +晉 1 +仏 1 +菸 1 +Ễ 1 +ヌ 1 +渋 1 +飄 1 +剥 1 +嘘 1 +臘 1 +ኀ 1 +緑 1 +潰 1 +氨 1 +듬 1 +왼 1 +颠 1 +棵 1 +饿 1 +咲 1 +ɔ 1 +맺 1 +캔 1 +铭 1 +媳 1 +汙 1 +硫 1 +贤 1 +渉 1 +諧 1 +訟 1 +伽 1 +嵌 1 +쌀 1 +ဵ 1 +禍 1 +妃 1 +膳 1 +睫 1 +侣 1 +莲 1 +諦 1 +ɨ 1 +ぇ 1 +붕 1 +ឫ 1 +瞻 1 +窄 1 +ฌ 1 +骚 1 +匪 1 +巩 1 +襪 1 +嫂 1 +黛 1 +۽ 1 +釀 1 +〇 1 +彙 1 +祸 1 +撫 1 +拭 1 +蕭 1 +枠 1 +꼼 1 +룰 1 +佑 1 +ᄋ 1 +꼽 1 +덤 1 +셉 1 +胺 1 +♀ 1 +钮 1 +彿 1 +閑 1 +宵 1 +衆 1 +箇 1 +ઍ 1 +钥 1 +韻 1 +摊 1 +甩 1 +彦 1 + 1 +ᅳ 1 +銳 1 +矯 1 +辟 1 +蛮 1 +Ѕ 1 +駁 1 +冥 1 +꽤 1 +렛 1 +醋 1 +冤 1 +€ 1 +냄 1 +罹 1 +拝 1 +뇨 1 +臥 1 +惯 1 +♣ 1 +凑 1 +눌 1 +돕 1 +챔 1 +皂 1 +喧 1 +杠 1 +😆 1 +ႂ 1 +娇 1 +髓 1 +钓 1 +岭 1 +蝴 1 +愣 1 +冶 1 +൦ 1 +霉 1 +闯 1 +硅 1 +铝 1 +苍 1 +艷 1 +寡 1 +咽 1 +蔽 1 +ḍ 1 +੫ 1 +갱 1 +꾼 1 +컷 1 +퀴 1 +衔 1 +肾 1 +踊 1 +匿 1 +晩 1 +√ 1 +奨 1 +丫 1 +豔 1 +鑫 1 +饼 1 +铃 1 +잎 1 +滤 1 +ጿ 1 +ၺ 1 +叮 1 +桐 1 +渗 1 +儒 1 +✿ 1 +ዖ 1 +탠 1 +辯 1 +僧 1 +訣 1 +萃 1 +੦ 1 +椰 1 +靖 1 +拦 1 +纺 1 +塾 1 +浑 1 +ጴ 1 +댄 1 +숫 1 +辜 1 +屡 1 +芙 1 +娶 1 +鵝 1 +ἀ 1 +婉 1 +纜 1 +埼 1 +嘻 1 +줬 1 +廖 1 +夯 1 +놈 1 +遜 1 +狮 1 +屑 1 +酯 1 +瑶 1 +拐 1 +薑 1 +蹲 1 +翅 1 +坠 1 +晕 1 +ጲ 1 +鹹 1 +哎 1 +舶 1 +缠 1 +甄 1 +菱 1 +汀 1 +걷 1 +챙 1 +姬 1 +择 1 +☎ 1 +禽 1 +혔 1 +굳 1 +憧 1 +筛 1 +ऱ 1 +摧 1 +鷹 1 +懼 1 +萍 1 +磊 1 +侈 1 +兜 1 +癮 1 +霾 1 +棕 1 +轟 1 +餓 1 +紡 1 +ፄ 1 +줌 1 +ۅ 1 +‫ 1 +跪 1 +霆 1 +쩌 1 +瀑 1 +佣 1 +蓉 1 +颱 1 +媚 1 +粵 1 +셈 1 +踴 1 +嬌 1 +蛛 1 +ዟ 1 +😁 1 +吼 1 +麟 1 +粤 1 +勻 1 +蘆 1 +ṟ 1 +芋 1 +彬 1 +梗 1 +羡 1 +媛 1 +樸 1 +潟 1 +ɓ 1 +ඖ 1 +吟 1 +薛 1 +绵 1 +纱 1 +遏 1 +尹 1 +叠 1 +릅 1 +瞪 1 +蒲 1 +釈 1 +棍 1 +맙 1 +؍ 1 +恤 1 +惕 1 +샷 1 +ॆ 1 +絨 1 +咸 1 +匈 1 +壳 1 +譲 1 +맑 1 +燙 1 +잘 1 +騒 1 +ႃ 1 +뻐 1 +핏 1 +👌 1 +🙂 1 +唉 1 +閥 1 +魄 1 +뚜 1 +摯 1 +첩 1 +🌹 1 +迭 1 +笼 1 +沪 1 +侍 1 +ኚ 1 +嶼 1 +鈣 1 +闖 1 +웰 1 +肇 1 +罷 1 +脹 1 +阱 1 +š 1 +ؐ 1 +ጵ 1 +븐 1 +떼 1 +뚱 1 +郷 1 +牡 1 +憤 1 +睿 1 +穫 1 +଼ 1 +凹 1 +歓 1 +萎 1 +셰 1 +Ґ 1 +ઋ 1 +搵 1 +沛 1 +咨 1 +轩 1 +ṁ 1 +ኼ 1 +寮 1 +矮 1 +圏 1 +쥐 1 +蕩 1 +圭 1 +祕 1 +굿 1 +깐 1 +랬 1 +瓣 1 +涙 1 +燦 1 +斐 1 +맵 1 +՚ 1 +삽 1 +ž 1 +冀 1 +蒼 1 +錫 1 +卦 1 +괄 1 +刃 1 +Ĩ 1 +Ĵ 1 +淮 1 +滥 1 +绳 1 +绸 1 +僱 1 +焚 1 +😦 1 +乒 1 +禪 1 +畔 1 +溃 1 +菁 1 +剔 1 +瞄 1 +緯 1 +轴 1 +艱 1 +띠 1 +륙 1 +嶺 1 +丈 1 +⋯ 1 +곰 1 +፱ 1 +騷 1 +ؔ 1 +廁 1 +耽 1 +ႁ 1 +꼴 1 +੬ 1 +곱 1 +褒 1 +謙 1 +焰 1 +壘 1 +撿 1 +໊ 1 +Ύ 1 +Ặ 1 +멈 1 +옹 1 +舅 1 +怠 1 +颤 1 +焙 1 +霄 1 +堤 1 +賊 1 +癖 1 +ঋ 1 +ῶ 1 +앵 1 +캘 1 +弓 1 +琉 1 +▫ 1 +౧ 1 +ὰ 1 +ゥ 1 +磯 1 +粥 1 +唸 1 +沼 1 +殷 1 +酌 1 +➡ 1 +숭 1 +깜 1 +轿 1 +贩 1 +贿 1 +驳 1 +滲 1 +蠟 1 +쿄 1 +쉐 1 +攪 1 +迦 1 +崖 1 +淹 1 +馳 1 +펌 1 +瀬 1 +谎 1 +俯 1 +僑 1 +雯 1 +츄 1 +狩 1 +ɵ 1 +짱 1 +፫ 1 +臀 1 +↑ 1 +萝 1 +谦 1 +塚 1 +恕 1 +鞭 1 +磷 1 +懐 1 +룬 1 +髒 1 +詮 1 +銭 1 +浄 1 +⁣ 1 +尻 1 +磋 1 +舎 1 +Ň 1 +잭 1 +煞 1 +屿 1 +楠 1 +苛 1 +楓 1 +ઐ 1 +篩 1 +秤 1 +魅 1 +奕 1 +呎 1 +厢 1 +ؑ 1 +ۓ 1 +둑 1 +瞎 1 +珀 1 +嚼 1 +懲 1 +墾 1 +☛ 1 +啪 1 +阜 1 +稣 1 +蔚 1 +ኻ 1 +ឍ 1 +숍 1 +咀 1 +璧 1 +늄 1 +좁 1 +♠ 1 +靚 1 +涅 1 +羨 1 +檯 1 +暈 1 +訝 1 +蔔 1 +Ỉ 1 +狄 1 +垄 1 +灿 1 +냅 1 +ƒ 1 +젖 1 +丛 1 +俏 1 +醜 1 +嗅 1 +皺 1 +≥ 1 +▬ 1 +藻 1 +旱 1 +棲 1 +蜘 1 +윗 1 +帷 1 +耻 1 +◊ 1 +ဩ 1 +돋 1 +苯 1 +닛 1 +槛 1 +톨 1 +🔥 1 +孵 1 +捡 1 +蕴 1 +蝕 1 +餵 1 +◈ 1 +悍 1 +腥 1 +姫 1 +韋 1 +ˇ 1 +곽 1 +벅 1 +哄 1 +縛 1 +渊 1 +娟 1 +繊 1 +倩 1 +繽 1 +蛙 1 +֊ 1 +叢 1 +葵 1 +咕 1 +疵 1 +犀 1 +睛 1 +叭 1 +剝 1 +蔣 1 +濯 1 +¢ 1 +ಋ 1 +窟 1 +泼 1 +澈 1 +鲍 1 +氯 1 +兇 1 +ઔ 1 +囚 1 +痒 1 +紮 1 +哺 1 +銹 1 +툰 1 +펙 1 +ቕ 1 +邵 1 +捍 1 +瘾 1 +勸 1 +릇 1 +팡 1 +鶴 1 +蟻 1 +倆 1 +刹 1 +陥 1 +湊 1 +앗 1 +ጺ 1 +祷 1 +矽 1 +谣 1 +妞 1 +樱 1 +砲 1 +੭ 1 +濫 1 +賈 1 +顽 1 +ຼ 1 +庙 1 +竊 1 +౩ 1 +밭 1 +噂 1 +垢 1 +餃 1 +昊 1 +姦 1 +琦 1 +贬 1 +藩 1 +፬ 1 +₩ 1 +픔 1 +燉 1 +妍 1 +纏 1 +넌 1 +祀 1 +汲 1 +郝 1 +Ώ 1 +ቐ 1 +턱 1 +툴 1 +缔 1 +韵 1 +霖 1 +坞 1 +欖 1 +♂ 1 +闇 1 +쏘 1 +哨 1 +娥 1 +鸭 1 +淳 1 +琼 1 +킴 1 +벳 1 +퀘 1 +甫 1 +鄧 1 +咗 1 +癢 1 +墜 1 +笛 1 +穀 1 +捜 1 +멕 1 +੮ 1 +흉 1 +肅 1 +眨 1 +ඓ 1 +赦 1 +蘊 1 +楷 1 +豁 1 +殆 1 +醛 1 +梵 1 +껏 1 +탱 1 +靡 1 +繹 1 +舔 1 +😄 1 +猿 1 +ዒ 1 +憐 1 +渝 1 +叩 1 +倘 1 +Ẻ 1 +▒ 1 +冈 1 +谭 1 +簾 1 +薰 1 +卉 1 +撇 1 +黙 1 +嵐 1 +땐 1 +ᄃ 1 +ῖ 1 +쿼 1 +奎 1 +梓 1 +糙 1 +隶 1 +☀ 1 +冇 1 +흰 1 +伞 1 +眷 1 +掠 1 +☈ 1 +헨 1 +糸 1 +蚀 1 +ŋ 1 +鉛 1 +讽 1 +灸 1 +茎 1 +綴 1 +袜 1 +顛 1 +쥬 1 +😭 1 +鑒 1 +嘱 1 +戳 1 +佬 1 +칩 1 +ႅ 1 +✌ 1 +酿 1 +垒 1 +庇 1 +◦ 1 +栓 1 +禦 1 +釜 1 +澜 1 +륨 1 +ː 1 +漬 1 +弧 1 +鑰 1 +篷 1 +穏 1 +ฃ 1 +딘 1 +윌 1 +瞒 1 +蹦 1 +賬 1 +嘟 1 +皓 1 +摺 1 +澀 1 +雌 1 +ጼ 1 +겹 1 +묶 1 +喵 1 +拱 1 +酱 1 +嗓 1 +彥 1 +畴 1 +邸 1 +魁 1 +Ϊ 1 +Ỗ 1 +ῆ 1 +얀 1 +팟 1 +ǎ 1 +擇 1 +垣 1 +ဢ 1 +虾 1 +殴 1 +및 1 +枫 1 +捞 1 +陋 1 +棠 1 +榻 1 +酔 1 +ֱ 1 +൪ 1 +፮ 1 +Ỏ 1 +壺 1 +咯 1 +汕 1 +枢 1 +扉 1 +娩 1 +瑩 1 +❗ 1 +阮 1 +ဣ 1 +ੲ 1 +ὴ 1 +₮ 1 +굽 1 +텀 1 +› 1 +俞 1 +俳 1 +贼 1 +肛 1 +鹤 1 +馴 1 +猩 1 +靶 1 +Ւ 1 +竣 1 +腻 1 +ჴ 1 +렁 1 +煽 1 +绍 1 +綻 1 +娅 1 +倪 1 +౨ 1 +⬅ 1 +넉 1 +썬 1 +킷 1 +໑ 1 +芦 1 +壢 1 +啲 1 +扳 1 +喺 1 +깃 1 +틈 1 +≤ 1 +乓 1 +溺 1 +皿 1 +睦 1 +餡 1 +詠 1 +埠 1 +鹅 1 +嬤 1 +ȩ 1 +ἰ 1 +젝 1 +팽 1 +狸 1 +► 1 +凈 1 +勋 1 +፭ 1 +曰 1 +柚 1 +撈 1 +驕 1 +斩 1 +筍 1 +舱 1 +盪 1 +힙 1 +⭐ 1 +兮 1 +釘 1 +謠 1 +嫉 1 +掙 1 +੯ 1 +💪 1 +炳 1 +袍 1 +鯨 1 +♬ 1 +탓 1 +🚩 1 +‚ 1 +飆 1 +汶 1 +傭 1 +疇 1 +悼 1 +隅 1 +鮑 1 +ፑ 1 +Ẫ 1 +갓 1 +🏼 1 +😅 1 +濡 1 +饶 1 +粽 1 +屢 1 +Ĥ 1 +ꞌ 1 +휠 1 +✪ 1 +矫 1 +鵬 1 +缆 1 +滯 1 +頌 1 +繡 1 +莹 1 +揣 1 +뭘 1 +뼈 1 +😢 1 +畑 1 +揽 1 +钉 1 +棘 1 +咋 1 +廓 1 +焊 1 +襄 1 +铸 1 +凳 1 +銜 1 +̊ 1 +닿 1 +ֻ 1 +栖 1 +氢 1 +朽 1 +涩 1 +倚 1 +鑼 1 +乞 1 +禅 1 +൧ 1 +孜 1 +垮 1 +鏽 1 +緬 1 +鞍 1 +饲 1 +侮 1 +盎 1 +锂 1 +ኵ 1 +懇 1 +眯 1 +飢 1 +侃 1 +槿 1 +棧 1 +馮 1 +옴 1 +氷 1 +Ÿ 1 +׃ 1 +湃 1 +丼 1 +硝 1 +噩 1 +巅 1 +叨 1 +灶 1 +疤 1 +ٱ 1 +飙 1 +漓 1 +肋 1 +籽 1 +胚 1 +桩 1 +矚 1 +恍 1 +贅 1 +茹 1 +⃣ 1 +钦 1 +ֽ 1 +ᅵ 1 +낀 1 + 1 +啓 1 +😉 1 +捆 1 +帘 1 +ੳ 1 +ઁ 1 +ၫ 1 +灼 1 +禾 1 +仑 1 +渾 1 +〝 1 +莖 1 +🌸 1 +噛 1 +燭 1 +翡 1 +Ẹ 1 +뻔 1 +澱 1 +惰 1 +苔 1 +淪 1 +哑 1 +茵 1 +땀 1 +፯ 1 +🤣 1 +寢 1 +់ 1 +隸 1 +眸 1 +剃 1 +阀 1 +嗜 1 +뚝 1 +햄 1 + 1 +毋 1 +哉 1 +抒 1 +誦 1 +斬 1 +嗨 1 +瓊 1 +嶄 1 +弈 1 +稲 1 +펠 1 +푼 1 +™ 1 +👏 1 +滷 1 +枉 1 +竿 1 +榴 1 +俐 1 +弛 1 +禧 1 +憋 1 +긋 1 +👈 1 +탭 1 +🌟 1 +杖 1 +ヵ 1 +ㄧ 1 +墻 1 +拚 1 +寥 1 +廿 1 +琢 1 +瞳 1 +ఱ 1 +揪 1 +찜 1 +膊 1 +龟 1 +沧 1 +耘 1 +鄂 1 +蚁 1 +榨 1 +遼 1 +芥 1 +牟 1 +醃 1 +밟 1 +빚 1 +賑 1 +乍 1 +淵 1 +粋 1 +⁠ 1 +冕 1 +堀 1 +뽀 1 +烫 1 +坝 1 +檳 1 +贖 1 +佼 1 +熄 1 +駭 1 +ኜ 1 +◀ 1 +茜 1 +樑 1 +狹 1 +諷 1 +廂 1 +庚 1 +谍 1 +絮 1 +咧 1 +엿 1 +덱 1 +彤 1 +胳 1 +脇 1 +咐 1 +譚 1 +蕃 1 +釐 1 +↩ 1 +ഋ 1 +흙 1 + 1 +瀚 1 +毗 1 +륜 1 +콕 1 +💖 1 +瘫 1 +鑄 1 +嚷 1 +虞 1 +艙 1 +윙 1 +풋 1 +횡 1 +퀸 1 +輻 1 +赐 1 +呜 1 +筷 1 +氮 1 +忱 1 +鍍 1 +縦 1 +↔ 1 +妒 1 +嘩 1 +漾 1 +렘 1 +ɪ 1 +፴ 1 +🤗 1 +饥 1 +紹 1 +亟 1 +咩 1 +肘 1 +흠 1 +똥 1 +韌 1 +熔 1 +抉 1 +曙 1 +憬 1 +鈉 1 +徘 1 +徊 1 +穗 1 +沮 1 +樞 1 +ۚ 1 +፧ 1 +曖 1 +谜 1 +썸 1 +😕 1 +鸽 1 +憎 1 +喋 1 +✍ 1 +౫ 1 +😋 1 +綫 1 +浆 1 +懵 1 +瞰 1 +撸 1 +獣 1 +雁 1 +댓 1 +뉘 1 +仆 1 +耿 1 +왠 1 +菠 1 +넬 1 +珈 1 +饒 1 +覓 1 +墳 1 +柑 1 +檻 1 +苟 1 +駿 1 +钙 1 +麺 1 +纬 1 +໐ 1 +🔹 1 +璨 1 +氫 1 +酮 1 +骸 1 +瘍 1 +嘎 1 +謊 1 +涡 1 +渦 1 +炙 1 +褐 1 +呦 1 +炊 1 +퀄 1 +볍 1 +솜 1 +ఋ 1 +໒ 1 +ఁ 1 +亜 1 +沦 1 +巣 1 +熏 1 +诠 1 +哆 1 +冗 1 +拇 1 +뭉 1 +ѫ 1 +ଊ 1 +겉 1 +돔 1 +ఝ 1 +樟 1 +锈 1 +镀 1 +貶 1 +喃 1 +搅 1 +荔 1 +濠 1 +柿 1 +፰ 1 +噹 1 +̲ 1 +蹄 1 +嘯 1 +塢 1 +蔭 1 +掴 1 +鄙 1 +眩 1 +斧 1 +鹼 1 +鴉 1 +茉 1 +ۖ 1 +눅 1 +薦 1 +릎 1 +🤔 1 +繕 1 +裴 1 +稠 1 +屎 1 +欽 1 +挠 1 +寅 1 +͡ 1 +붓 1 +헥 1 +钩 1 +姥 1 +墟 1 +窘 1 +💥 1 +噌 1 +哟 1 +惚 1 +뮬 1 +쩍 1 +胰 1 +濤 1 +焕 1 +櫥 1 +嘔 1 +̇ 1 +淩 1 +ឮ 1 +쭉 1 +싹 1 +팜 1 +౪ 1 +̅ 1 +鎌 1 +竖 1 +挿 1 +扒 1 +劈 1 +褪 1 +嚣 1 +鸦 1 +〞 1 +堕 1 +呃 1 +汐 1 +庶 1 +琅 1 +捂 1 +滕 1 +缚 1 +啸 1 +噢 1 +嚮 1 +韧 1 +盔 1 +睜 1 +渺 1 +蹭 1 +饗 1 +ၦ 1 +鈔 1 +煲 1 +歹 1 +壶 1 +衬 1 +啃 1 +撩 1 +麒 1 +😱 1 +亀 1 +ὁ 1 +켈 1 +펫 1 +璀 1 +窒 1 +僻 1 +幢 1 +搓 1 +俘 1 +拢 1 +慷 1 +臻 1 +鴿 1 +鉅 1 +낫 1 +뱃 1 +ዪ 1 +늬 1 +칫 1 +렐 1 +閘 1 +轎 1 +拙 1 +紓 1 +怯 1 +挟 1 +銃 1 +覗 1 +✖ 1 +绣 1 +絆 1 +蝠 1 +ॲ 1 +닦 1 +🎉 1 +蚂 1 +锤 1 +翹 1 +酶 1 +芹 1 +샴 1 +癥 1 +勳 1 +襟 1 +赎 1 +畸 1 +糞 1 +‰ 1 +蒞 1 +齋 1 +呕 1 +궤 1 +뜬 1 +ٓ 1 +뀐 1 +뱀 1 +咚 1 +吱 1 +葱 1 +詭 1 +錠 1 +囂 1 +畝 1 +竜 1 +ኰ 1 +♰ 1 +쏠 1 +遴 1 +萱 1 +謬 1 +朔 1 +噬 1 +煥 1 +⊙ 1 +▣ 1 +丞 1 +诵 1 +ঞ 1 +෴ 1 +ঊ 1 +펄 1 +唾 1 +噗 1 +搁 1 +窯 1 +陡 1 +翘 1 +嚟 1 +拎 1 +濁 1 +◑ 1 +蝙 1 +짚 1 +ቮ 1 +💙 1 +賄 1 +瘡 1 +荆 1 +攬 1 +慑 1 +闡 1 +Ï 1 +깅 1 +엣 1 +톰 1 +൨ 1 +朦 1 +泻 1 +棺 1 +韶 1 +嗚 1 +曦 1 +羹 1 +躯 1 +亢 1 +惶 1 +岂 1 +烷 1 +哮 1 +♚ 1 +喱 1 +蔗 1 +ዦ 1 +넨 1 +렷 1 +빔 1 +썰 1 +ॄ 1 +瑋 1 +潇 1 +铅 1 +趾 1 +蝎 1 +砺 1 +蕎 1 +ٗ 1 +앰 1 +땡 1 +😜 1 +攒 1 +頰 1 +翩 1 +墮 1 +攔 1 +颂 1 +顕 1 +彪 1 +躬 1 +甦 1 +逅 1 +晏 1 +൩ 1 +ඍ 1 +ʹ 1 +ὲ 1 +窺 1 +겟 1 +뒀 1 +럿 1 +켄 1 + 1 +Ƙ 1 +绒 1 +祐 1 +亥 1 +滔 1 +沂 1 +鉤 1 +宸 1 +葩 1 +伶 1 +驴 1 +晦 1 +寛 1 +œ 1 +헐 1 +벡 1 +哋 1 +匣 1 +拽 1 +簧 1 +虔 1 +煜 1 +磕 1 +呐 1 +紳 1 +笠 1 +葫 1 +菅 1 +幡 1 +썩 1 +킥 1 +횟 1 +֣ 1 +‛ 1 +샐 1 +깁 1 +屌 1 +诡 1 +巍 1 +晖 1 +鲸 1 +衅 1 +肴 1 +诀 1 +叱 1 +疚 1 +餌 1 +⋅ 1 +ɑ 1 +샀 1 +첼 1 +偕 1 +焉 1 +伎 1 +闸 1 +哗 1 +駒 1 +웍 1 +🙄 1 +璐 1 +鶯 1 +邢 1 +芜 1 +餚 1 +蕙 1 +綾 1 +羯 1 +氟 1 +汛 1 +屹 1 +≫ 1 +剎 1 +놨 1 +ፂ 1 +❌ 1 +둠 1 +펑 1 +︎ 1 +赣 1 +榄 1 +鞠 1 +磐 1 +ㄟ 1 +曠 1 +Œ 1 +ၟ 1 +៎ 1 +ἡ 1 +▤ 1 +❄ 1 +蹴 1 + 1 +镖 1 +瘟 1 +咎 1 +擷 1 +鑲 1 +痢 1 +蜀 1 +鈞 1 +歼 1 + 1 +웬 1 +짤 1 +俾 1 +妓 1 +堰 1 +掐 1 +栃 1 +晟 1 +ኧ 1 +▸ 1 +찔 1 +뜰 1 + 1 +蜡 1 +珂 1 +酚 1 +飪 1 +湄 1 +逍 1 +氓 1 +蕊 1 +瑣 1 +掰 1 +鯊 1 +ヽ 1 +☑ 1 +뜯 1 +ၧ 1 +隋 1 +眶 1 +彫 1 +═ 1 +榕 1 +얄 1 +팍 1 +ḻ 1 +삐 1 +😇 1 +毬 1 +坷 1 +雛 1 +戮 1 +☜ 1 +ŗ 1 +֥ 1 +ᄀ 1 +ቈ 1 +滬 1 +딴 1 +쉴 1 +잼 1 +≈ 1 +炬 1 +禹 1 +痞 1 +拷 1 +橱 1 +谬 1 +汝 1 +贡 1 +瞞 1 +琶 1 +腮 1 +岚 1 +☝ 1 +ĕ 1 +֖ 1 +ቍ 1 +螂 1 +꽁 1 +쑥 1 +쪼 1 +캄 1 +ጕ 1 +💓 1 +💚 1 +鎊 1 +闢 1 +骏 1 +瑤 1 +砥 1 +鳌 1 +樺 1 +檀 1 +癡 1 +篤 1 +⇛ 1 +夭 1 +嘀 1 +贱 1 +⬇ 1 +涮 1 +💗 1 +Ũ 1 +൫ 1 +ÿ 1 +즙 1 +悸 1 +枣 1 +扼 1 +芮 1 +憊 1 +豈 1 +宕 1 +淆 1 +樁 1 +ঔ 1 +ᄂ 1 +➤ 1 +맷 1 +ǔ 1 +詫 1 +俭 1 +💐 1 +鈍 1 +曇 1 +挝 1 +榆 1 +糯 1 +✈ 1 +曳 1 +嘶 1 +斎 1 +췌 1 +௦ 1 +ฅ 1 +ዽ 1 +☬ 1 +뭇 1 +🌷 1 +ဦ 1 +聋 1 +荘 1 +떤 1 +瀉 1 +棗 1 +鍼 1 +⇠ 1 +🎁 1 +઼ 1 +ᄉ 1 +💜 1 +紊 1 +緝 1 +邹 1 +輿 1 +渥 1 +痊 1 +峭 1 +吩 1 +諜 1 +杞 1 +捅 1 +漱 1 +峨 1 +뽐 1 +∆ 1 +ۡ 1 +囤 1 +焗 1 +峇 1 +吝 1 +歎 1 +绷 1 +寇 1 +柵 1 +鮭 1 +茸 1 +栩 1 +噁 1 +荼 1 +顷 1 +蔑 1 +愕 1 +玖 1 +桓 1 +麓 1 +穂 1 + 1 +ෲ 1 +갯 1 +붐 1 +헛 1 +蟑 1 +嗦 1 +溼 1 +ႀ 1 +浇 1 +繃 1 +鱷 1 +烙 1 +Ŭ 1 +딕 1 +🔸 1 +ぺ 1 +覇 1 +钞 1 +匀 1 +晾 1 +濒 1 +贞 1 +尉 1 +渤 1 +婿 1 +拂 1 +搂 1 +↘ 1 +╱ 1 +嬢 1 +떻 1 +👨 1 +勺 1 +顫 1 +狡 1 +坟 1 +骆 1 +靓 1 +凛 1 +绊 1 +♛ 1 +砌 1 +ʿ 1 +딥 1 +〰 1 +揍 1 +啞 1 +龚 1 +沁 1 +吠 1 +皙 1 +ຯ 1 +ዠ 1 +∞ 1 +갚 1 + 1 +ĭ 1 + 1 +슘 1 +鶏 1 +揀 1 +碾 1 +絢 1 +祛 1 +嚎 1 +窍 1 +黯 1 +熠 1 +🎀 1 +ఙ 1 +씽 1 +🔴 1 +ἱ 1 +瑯 1 +栈 1 +̥ 1 +巖 1 +鋰 1 +闽 1 +峙 1 +琵 1 +桔 1 +锌 1 +밋 1 +∣ 1 +늑 1 +📲 1 +౬ 1 +젯 1 +聂 1 +昕 1 +鬍 1 +氰 1 +踝 1 +窥 1 +唆 1 +齣 1 +醣 1 +埕 1 +軀 1 +岔 1 +愜 1 +◐ 1 +蟬 1 +鱗 1 +膿 1 +鳩 1 +̓ 1 +ऩ 1 +ὑ 1 +醸 1 + 1 +颊 1 +敛 1 +茁 1 +戛 1 +◯ 1 +畳 1 +辿 1 +顎 1 +ၪ 1 +竅 1 +暦 1 +暧 1 +禄 1 +嗡 1 +冉 1 +踹 1 +缉 1 +滝 1 +荃 1 +謗 1 +祁 1 +祠 1 +쭈 1 +칵 1 +陛 1 +茱 1 +渭 1 +蘑 1 +刈 1 +旷 1 +沽 1 +竄 1 +▌ 1 +筱 1 +缪 1 +≪ 1 +겔 1 +꽉 1 +ɱ 1 +౮ 1 +옐 1 +⏩ 1 +跋 1 +🙈 1 +≦ 1 +桁 1 +厝 1 +庵 1 +喳 1 +崙 1 +羚 1 +寐 1 +阎 1 +蠕 1 +矣 1 +斟 1 +☼ 1 +閩 1 +黔 1 +噓 1 +淤 1 +绽 1 +粪 1 +漩 1 +📌 1 +늙 1 +ዤ 1 +₺ 1 +빡 1 +쉼 1 +팸 1 +❃ 1 +Ằ 1 +讳 1 +碁 1 +攏 1 +樽 1 +烛 1 +鞏 1 +饕 1 +劵 1 +潍 1 +篡 1 +猥 1 +祿 1 +烁 1 +祇 1 +鈺 1 +碱 1 +⚽ 1 +ῷ 1 +槌 1 +챌 1 +≧ 1 +蠣 1 +畿 1 +왁 1 +羁 1 +澆 1 +鎂 1 + 1 +閨 1 +凋 1 +ǝ 1 +멧 1 +썹 1 +푹 1 +👑 1 +룻 1 +涎 1 +侄 1 +饅 1 +穹 1 +槓 1 +嘖 1 +恪 1 +墩 1 +ឲ 1 +沌 1 +굵 1 +씹 1 + 1 +ၯ 1 +ႎ 1 +Ỳ 1 +뻗 1 +넛 1 +孽 1 +洱 1 +幟 1 +嚕 1 +盏 1 +薈 1 +💣 1 +鲨 1 +铲 1 +豎 1 +诫 1 +燻 1 +裳 1 +缶 1 +匮 1 +鋅 1 +瀕 1 +衞 1 +딧 1 +몹 1 +엌 1 +̱ 1 +쎄 1 +瞑 1 +젼 1 +盞 1 +痔 1 +窦 1 +侥 1 +蠍 1 +۾ 1 +黴 1 +蔻 1 +瀾 1 +緋 1 +吶 1 +♨ 1 +匡 1 +擲 1 +梧 1 +霹 1 +╬ 1 +왈 1 +Ỷ 1 +귤 1 +둬 1 +솟 1 +🍀 1 +袱 1 +缕 1 +邑 1 +酰 1 +裘 1 +邯 1 +秃 1 +巔 1 +嗆 1 +醤 1 +巿 1 +隘 1 +乜 1 +荊 1 +粟 1 +鋸 1 +ሿ 1 +ኄ 1 +ጬ 1 +덥 1 +쏙 1 +ឭ 1 +왓 1 +舵 1 +櫚 1 +呻 1 +砰 1 +猖 1 +倖 1 +駝 1 +恬 1 +擒 1 +芷 1 +蠅 1 +⇩ 1 +逕 1 +磺 1 +韭 1 +棱 1 +翊 1 +̶ 1 +ၞ 1 +깡 1 +놔 1 +벙 1 +諭 1 +毙 1 +瞥 1 +鈦 1 +胧 1 +遁 1 +刁 1 +暉 1 +嫣 1 +怔 1 +滌 1 +壩 1 +౭ 1 +໓ 1 +៛ 1 +뜩 1 +몫 1 +😏 1 +႓ 1 +캣 1 +鰻 1 +玺 1 +崽 1 +赂 1 +痰 1 +霓 1 +徙 1 +骷 1 +觅 1 +蜷 1 +綽 1 +└ 1 +ŏ 1 +ஶ 1 +遽 1 +💛 1 +ὺ 1 +쌤 1 +💦 1 + 1 +🙌 1 +퉁 1 +虜 1 +瑛 1 +聳 1 +宥 1 +斂 1 +唠 1 +秽 1 +掷 1 +雍 1 +拗 1 +惋 1 +薔 1 +瑾 1 +痠 1 +咦 1 +😡 1 +锣 1 +ቓ 1 +⦁ 1 +쌈 1 +쯔 1 +瑄 1 +戟 1 +婶 1 +嘢 1 +鯉 1 +箔 1 +捣 1 +侖 1 +疮 1 +涕 1 +岑 1 +姗 1 +壟 1 +蠶 1 +酢 1 +斉 1 +↕ 1 +璋 1 +┊ 1 +鋭 1 +샹 1 +⚡ 1 +ڤ 1 +፶ 1 +낡 1 +볕 1 +콧 1 +헝 1 +❖ 1 +踵 1 +綢 1 +竺 1 +啼 1 +烽 1 +舜 1 +腱 1 +哒 1 +叽 1 +骰 1 +莆 1 +痹 1 +淌 1 +笙 1 +툼 1 +呗 1 +諗 1 +茗 1 +젓 1 +짠 1 +֔ 1 +▾ 1 +뿜 1 +👩 1 +ḧ 1 +蛤 1 +逞 1 +喲 1 +猝 1 +∶ 1 +緹 1 +窑 1 +囑 1 +攸 1 +痣 1 +琛 1 +莽 1 +苓 1 +ぃ 1 +馭 1 +🌼 1 +ˆ 1 +啧 1 +뿔 1 +잣 1 +댐 1 +笋 1 +庐 1 +漳 1 +侷 1 +璞 1 +翟 1 +鳄 1 +堯 1 +樊 1 +熾 1 +钧 1 +뽕 1 +斋 1 +ఞ 1 + 1 +൯ 1 +ᄆ 1 +➧ 1 +ඪ 1 +챠 1 +🎄 1 +쑤 1 +蛀 1 +鉀 1 +矗 1 +摒 1 +崁 1 +饺 1 +奄 1 +蝉 1 +듐 1 +娱 1 +筝 1 +绞 1 +囧 1 +姪 1 +炯 1 +筐 1 +惺 1 +刨 1 +憨 1 +✦ 1 +Ġ 1 +⋆ 1 +쿡 1 + 1 +💯 1 +😳 1 +♭ 1 +膛 1 +呑 1 +藜 1 +寰 1 +懦 1 +稜 1 +縷 1 +钛 1 +呱 1 +丐 1 +嶋 1 +帧 1 +憫 1 +☻ 1 +斃 1 +禎 1 +枸 1 +腋 1 +ங 1 +遐 1 +🔝 1 +Ŵ 1 +ᄇ 1 +掺 1 +臼 1 +攘 1 +▄ 1 +撬 1 +楞 1 +萤 1 +炜 1 +颅 1 +驭 1 +鬚 1 +兗 1 +譴 1 +ၷ 1 +͜ 1 +ٖ 1 +൮ 1 +🎶 1 +📸 1 +戯 1 +婕 1 +瀨 1 +祟 1 +吮 1 +殉 1 +槃 1 +莘 1 +绚 1 +馅 1 +缀 1 +钾 1 +悖 1 +雏 1 +懊 1 +茬 1 +泓 1 +璇 1 +煦 1 +瘩 1 +❥ 1 +钝 1 +疙 1 +晗 1 +┐ 1 +啱 1 +❣ 1 +⤵ 1 +槟 1 +ƣ 1 +ʖ 1 +؎ 1 +໔ 1 +ჱ 1 +ኺ 1 +漉 1 +괌 1 +댕 1 +쿤 1 +큘 1 +탬 1 +팰 1 +훔 1 +🙋 1 +〒 1 +ぉ 1 +💋 1 +❀ 1 +徨 1 +倔 1 +釉 1 +蜕 1 +甥 1 +跻 1 +敖 1 +癱 1 +犒 1 +瀋 1 +咔 1 +髄 1 +ぅ 1 +赘 1 +┃ 1 +岱 1 +؁ 1 +샬 1 +💞 1 +📱 1 +ڧ 1 +殻 1 +😐 1 +◘ 1 +魷 1 +拧 1 +搗 1 +傀 1 +昱 1 +輾 1 +咏 1 +諱 1 +唏 1 +榔 1 +搔 1 +擱 1 +驼 1 +坍 1 +暹 1 +♩ 1 +淄 1 +梢 1 +蚵 1 +毓 1 +鉢 1 +丶 1 +🌻 1 +ȋ 1 +֑ 1 +಼ 1 +뜸 1 +삿 1 +짬 1 +💝 1 +熨 1 +ㄚ 1 +酗 1 +闫 1 +怂 1 +淼 1 +惦 1 +驯 1 +兀 1 +惘 1 +芊 1 +♧ 1 +佰 1 +╗ 1 +▀ 1 +厥 1 +偌 1 +☃ 1 +ゞ 1 +妬 1 +퀵 1 +໕ 1 +舐 1 +↙ 1 +圃 1 +擄 1 +댁 1 +✧ 1 +콰 1 +蓓 1 +巒 1 +鷗 1 +啡 1 +箕 1 +辗 1 +詛 1 +恺 1 +泸 1 +孰 1 +羔 1 +嘈 1 +渎 1 +懾 1 +吭 1 +孚 1 +蹊 1 +፵ 1 +랴 1 +🇷 1 +∇ 1 +椿 1 +颐 1 +尧 1 +擂 1 +赃 1 +祢 1 +嚨 1 +嫦 1 +駱 1 +蠔 1 +汎 1 +罄 1 +긁 1 +둡 1 +쿵 1 +텅 1 +홉 1 +👆 1 +‡ 1 +呪 1 +蜒 1 +镶 1 +毆 1 +軋 1 +蝇 1 +賤 1 +氈 1 +隍 1 +禿 1 +瀝 1 +頤 1 +铮 1 +酣 1 +跤 1 +暄 1 +剁 1 +弔 1 +腆 1 +颓 1 +깍 1 +̆ 1 +ۗ 1 +Ẽ 1 +➢ 1 +艸 1 +౯ 1 +瀟 1 +懿 1 +咫 1 +笃 1 +詣 1 +璽 1 +噜 1 +撓 1 +鉱 1 +窜 1 +睾 1 +哽 1 +滄 1 +犁 1 +簇 1 +┌ 1 +┄ 1 +쉘 1 +⚠ 1 +☘ 1 +呛 1 +ጰ 1 +ῇ 1 +꾀 1 +낱 1 +헷 1 +🏽 1 +靑 1 +迸 1 +窖 1 +▓ 1 +汞 1 +钠 1 +誡 1 +岬 1 +脯 1 +鳞 1 +叡 1 +镁 1 +嚥 1 +嵩 1 +☠ 1 +绅 1 +恣 1 +嗷 1 +儷 1 +☪ 1 +✉ 1 +鸥 1 +瑙 1 +甯 1 +癲 1 +💰 1 +Ἀ 1 +ᾶ 1 +⸗ 1 +콥 1 +팥 1 +퐁 1 + 1 +̨ 1 +廬 1 +엎 1 +祺 1 +峯 1 +疣 1 +捗 1 +濑 1 +佇 1 +喰 1 +窪 1 +蜥 1 +篆 1 +玮 1 +腓 1 +漪 1 +瞅 1 +鯛 1 +滙 1 +硒 1 +垦 1 +捻 1 +鷲 1 +箋 1 +╭ 1 +骁 1 +麩 1 +൬ 1 +溅 1 +💫 1 +ෟ 1 +ῃ 1 +竇 1 +챗 1 +쵸 1 +ヾ 1 +🎗 1 +缤 1 +闵 1 +渍 1 +凿 1 +锯 1 +驛 1 +韬 1 +嫖 1 +陨 1 +麝 1 +皈 1 +埤 1 +帛 1 +癣 1 +噱 1 +壆 1 +碘 1 +敝 1 +咻 1 +釦 1 +░ 1 +✒ 1 +挹 1 +↺ 1 +☏ 1 +嗰 1 +肽 1 +😝 1 +糰 1 +💃 1 +ၝ 1 +😥 1 +☕ 1 +펍 1 +📷 1 +堺 1 +∩ 1 +鯖 1 +抿 1 +虱 1 +錐 1 +卯 1 +錘 1 +蚤 1 +诶 1 +☢ 1 +惮 1 +巳 1 +択 1 +褚 1 +羌 1 +亘 1 +鏟 1 +陝 1 +氾 1 +跆 1 +匾 1 +娴 1 +≠ 1 +꾹 1 +랠 1 +🌿 1 +튬 1 +ʃ 1 +ႄ 1 +妾 1 +擘 1 +玟 1 +枷 1 +〃 1 +眞 1 +辙 1 +朮 1 +绯 1 +洙 1 +蛟 1 +笈 1 +阡 1 +醍 1 +儕 1 +♐ 1 +陜 1 +弩 1 +↪ 1 +婁 1 +鵑 1 +ヲ 1 +̵ 1 + 1 +௧ 1 +Ō 1 +ᄅ 1 +ሢ 1 +፹ 1 +ἄ 1 +찐 1 +캉 1 +홋 1 + 1 +💡 1 +剋 1 +幺 1 +▻ 1 +虏 1 +鄒 1 +緞 1 +恿 1 +腩 1 +珞 1 +窈 1 +窕 1 +嗤 1 +辍 1 +粼 1 +觑 1 +禺 1 +诽 1 +沥 1 +婧 1 +噶 1 +荫 1 +蚌 1 +咆 1 +箸 1 +苞 1 +↗ 1 +傚 1 +ɩ 1 +ʊ 1 +۩ 1 +ኟ 1 +፷ 1 +ḳ 1 +曽 1 +똘 1 +뤼 1 +뿍 1 +싯 1 + 1 +🇹 1 +ċ 1 + 1 +砕 1 +║ 1 +欸 1 +硼 1 +遛 1 +鏢 1 +唬 1 +呷 1 +贮 1 +绰 1 +汾 1 +嶽 1 +嚓 1 +蹋 1 +輒 1 +纂 1 +俑 1 +攣 1 +▨ 1 +谤 1 +鑿 1 +啰 1 +殯 1 +叼 1 +玥 1 +畀 1 +➠ 1 +拣 1 +崑 1 +◕ 1 +迂 1 +😌 1 +뎌 1 +ʔ 1 +ʺ 1 +靳 1 +숯 1 + 1 +໗ 1 +錬 1 +柠 1 +浚 1 +彝 1 +餾 1 +贓 1 +孢 1 +轍 1 +臍 1 +蚕 1 +牀 1 +嚏 1 +痙 1 +鞘 1 +昵 1 +镍 1 +鵜 1 +⇐ 1 +🇰 1 +ႝ 1 +儂 1 +숄 1 +֙ 1 +ੴ 1 +ឳ 1 +ῳ 1 +귄 1 +댈 1 +뭄 1 +뺀 1 +쫀 1 +📞 1 +😈 1 +倭 1 +🤩 1 +陞 1 +⇚ 1 +龔 1 +綸 1 +冽 1 +挾 1 +袂 1 +鹵 1 +瘀 1 +衙 1 +滇 1 +⇪ 1 +閔 1 +筦 1 +☰ 1 +嫻 1 +粱 1 +厮 1 +馥 1 +皖 1 +臆 1 +ㄉ 1 +狈 1 +穢 1 +酉 1 +愷 1 +ㄋ 1 +恙 1 +涤 1 +♔ 1 +唄 1 +褥 1 +Ѳ 1 +ὼ 1 +廝 1 +껄 1 +뎅 1 +😮 1 +ቊ 1 +蹬 1 +淒 1 +💎 1 +褶 1 +讪 1 +峥 1 +濺 1 +瓢 1 +蕪 1 + 1 +敎 1 +浊 1 +檐 1 +鉑 1 +圳 1 +讹 1 +戎 1 +浣 1 +懺 1 +衢 1 +锚 1 +剿 1 +瀰 1 +▦ 1 +嗣 1 +晝 1 +貂 1 +囍 1 +謐 1 +✎ 1 +頬 1 +蟒 1 +ȃ 1 +௪ 1 +ሤ 1 +숏 1 +🌞 1 +饌 1 +솥 1 +🎵 1 +👀 1 +♯ 1 +✡ 1 +髭 1 +腌 1 +搆 1 +燮 1 +茧 1 +繭 1 +糗 1 +糜 1 +膺 1 +涝 1 +喽 1 +饵 1 +朕 1 +榭 1 +鮪 1 +▧ 1 +卤 1 +苷 1 +抠 1 +鎧 1 +醚 1 +⌒ 1 +╰ 1 +ҫ 1 +۞ 1 +௫ 1 +❯ 1 +띤 1 +앳 1 +훤 1 + 1 +💌 1 +ᅠ 1 +↲ 1 + 1 +濛 1 +鉗 1 +ˋ 1 +諺 1 +涟 1 +啄 1 +赡 1 +搪 1 +烨 1 +矜 1 +奚 1 +悯 1 +攥 1 +箏 1 +銓 1 +佟 1 +♟ 1 +槐 1 +谚 1 +钰 1 +葆 1 +铀 1 +蔼 1 +耆 1 +🏾 1 +☣ 1 +匕 1 +铂 1 +邨 1 +ᄌ 1 +욘 1 +ἑ 1 +ἴ 1 +쟈 1 +캬 1 + 1 +🌺 1 +😚 1 +🚫 1 +😯 1 +蛍 1 + 1 + 1 + 1 +摻 1 +嬸 1 +檜 1 +荏 1 +吏 1 +釧 1 +忻 1 +劾 1 +裨 1 +▩ 1 +匱 1 +瞇 1 +倶 1 +瀧 1 +☂ 1 +⚜ 1 +╮ 1 +✏ 1 +➻ 1 +◾ 1 +酎 1 +粕 1 + 1 +ಙ 1 +ሗ 1 +卅 1 +걍 1 +쩡 1 + 1 + 1 +🍃 1 +📍 1 +ġ 1 +ʉ 1 +໘ 1 +쉰 1 +┗ 1 +喆 1 +喎 1 +├ 1 +箍 1 +鉻 1 +閏 1 +礡 1 +顱 1 +雋 1 +琊 1 +讷 1 +掖 1 +蛾 1 +唧 1 +骋 1 +铐 1 +嗑 1 +惭 1 +諏 1 +🇵 1 +╯ 1 +仟 1 + 1 +💔 1 +Š 1 +ĸ 1 +ˮ 1 +ዡ 1 +ὀ 1 +✴ 1 +❓ 1 +뻥 1 +잤 1 +좆 1 +🔻 1 +ʁ 1 +ૐ 1 +ጒ 1 +▯ 1 +◡ 1 +쫄 1 +춥 1 +🇲 1 +👧 1 +🇺 1 +😲 1 +袒 1 +拮 1 +炖 1 +洼 1 +鴛 1 +戊 1 +凜 1 +辫 1 +磡 1 +燎 1 +瑠 1 +✕ 1 +嫡 1 +❁ 1 +瓏 1 +┴ 1 +搾 1 +鲤 1 +斡 1 +拈 1 +儉 1 +沓 1 +ඃ 1 +跷 1 +ħ 1 +ɡ 1 +ɾ 1 +௨ 1 +൭ 1 +໙ 1 +ឦ 1 +곶 1 +뾰 1 +셸 1 +툭 1 +헉 1 +훗 1 + 1 +🤦 1 +ḏ 1 +鳶 1 +朧 1 +篠 1 +麴 1 +饑 1 +🌈 1 +梆 1 +褓 1 +锵 1 +苒 1 +訕 1 +鐳 1 +斓 1 +叻 1 +橇 1 +獺 1 +珑 1 +煒 1 +礫 1 +骇 1 +诲 1 +呤 1 +栅 1 +‖ 1 +珉 1 +廻 1 +钊 1 +◙ 1 +ᴀ 1 +炽 1 +௩ 1 +Ỡ 1 +ὄ 1 +✊ 1 +댔 1 +됬 1 +딤 1 +슛 1 +윅 1 +튠 1 + 1 +🏃 1 +👫 1 +🖤 1 +Ɗ 1 +돗 1 +┤ 1 +箴 1 +鏤 1 +挛 1 +謄 1 +薏 1 +╪ 1 +脐 1 +枭 1 +枋 1 +頹 1 +♮ 1 +葳 1 +轧 1 +👗 1 +谛 1 +粿 1 +羲 1 +聾 1 +懋 1 +嗝 1 +⇢ 1 +壬 1 +✗ 1 +鐸 1 +‿ 1 +泗 1 +漯 1 +🎅 1 +峠 1 +蒔 1 +ʒ 1 +Һ 1 +؂ 1 +໖ 1 +癬 1 +뺨 1 +팠 1 + 1 +🌴 1 +ɐ 1 +ഌ 1 +ႌ 1 +겜 1 +쥔 1 +豉 1 +➸ 1 +窿 1 +貳 1 +揹 1 +籬 1 +阑 1 +禀 1 +鉆 1 +忏 1 +筏 1 +绥 1 +楣 1 +娄 1 +驿 1 +昀 1 +浒 1 +掣 1 +啖 1 +嘰 1 +哧 1 +⇜ 1 +珮 1 +鐲 1 +邇 1 +⇔ 1 +呉 1 +睬 1 +╚ 1 +悵 1 +翱 1 +姝 1 +蘸 1 +鉉 1 +🎂 1 +ๅ 1 +✤ 1 +갭 1 +궈 1 +핌 1 +̂ 1 +ΰ 1 +ሇ 1 +ኁ 1 +ḋ 1 +∈ 1 +⛳ 1 +껌 1 +냠 1 +뎀 1 +렙 1 +륵 1 +쓱 1 +📚 1 +🔬 1 +鴦 1 +辻 1 +ƒ 1 +飴 1 +愫 1 +蔘 1 +纭 1 +壕 1 +踱 1 +荟 1 +秧 1 +渕 1 +姣 1 +蠱 1 +☁ 1 +嗔 1 +稟 1 +➳ 1 +┏ 1 +殲 1 +郜 1 +祓 1 +♤ 1 +旻 1 +➽ 1 +⇈ 1 +▐ 1 +✰ 1 +沱 1 +焱 1 +绮 1 +௬ 1 +ഝ 1 +괘 1 +꺽 1 +얏 1 + 1 +🌱 1 +ɲ 1 +ਃ 1 +ዃ 1 +⚕ 1 +璟 1 +筈 1 +꽝 1 +떄 1 +뛸 1 +믈 1 + 1 +😵 1 +◉ 1 +殞 1 +艶 1 +纶 1 +戌 1 +綵 1 +驢 1 +帼 1 +鷺 1 +慄 1 +簸 1 +豌 1 +疡 1 +肮 1 +桦 1 +隈 1 +╔ 1 +潼 1 +瞼 1 +蕨 1 +啾 1 +鹭 1 +翎 1 +詼 1 +◼ 1 +🏆 1 +🇦 1 +⇦ 1 +룽 1 +밧 1 +† 1 +۟ 1 +쁠 1 +🇮 1 +婭 1 +웁 1 +閻 1 +罠 1 +诋 1 +✄ 1 +嘍 1 +疱 1 +堿 1 +嗶 1 +钴 1 +隼 1 +轶 1 +┅ 1 +搀 1 +⇀ 1 +迢 1 +嘌 1 +撂 1 +✯ 1 +涸 1 +╝ 1 +♞ 1 +✲ 1 +櫛 1 +遶 1 +娼 1 +粛 1 +鑾 1 +⇊ 1 +漣 1 +◥ 1 +ᅡ 1 +┣ 1 +✆ 1 +鼾 1 +엊 1 +钳 1 +❑ 1 +揆 1 +猟 1 +땜 1 +떳 1 +찼 1 +컥 1 +🍌 1 +빕 1 +🍁 1 +🎧 1 +楔 1 +蹙 1 +羿 1 +笹 1 +杵 1 +粑 1 +葦 1 +藕 1 +韜 1 +馁 1 +铵 1 +鞣 1 +铿 1 +炤 1 +鱿 1 +熒 1 +戾 1 +俸 1 +溥 1 +淬 1 +舛 1 +妤 1 +醺 1 +稷 1 +诿 1 +銑 1 +↹ 1 +➹ 1 +氪 1 +垠 1 +⭕ 1 +🐱 1 +癇 1 +燴 1 +╤ 1 +憔 1 +悴 1 +桟 1 + 1 +✘ 1 +🎈 1 +ᴏ 1 +🎥 1 +๏ 1 +ṯ 1 +Ἐ 1 +峪 1 +闔 1 +뻘 1 +켐 1 + 1 + 1 + 1 +🇪 1 +🇬 1 +📝 1 +📮 1 +🔵 1 +̍ 1 +ӛ 1 +渓 1 +씰 1 +徇 1 +🎤 1 +膣 1 +😑 1 +✩ 1 +簷 1 +飩 1 +ǐ 1 +瀛 1 +♕ 1 +〟 1 +攞 1 +驍 1 +晌 1 +踞 1 +槳 1 +聶 1 +摹 1 +蚪 1 +壑 1 +頷 1 +旖 1 +婢 1 +疸 1 +呸 1 +♖ 1 +兎 1 +恃 1 +⏬ 1 +➛ 1 +麂 1 +👦 1 +◁ 1 +罔 1 +吒 1 +➜ 1 +痤 1 +욜 1 +Ѝ 1 +ኲ 1 +ᾳ 1 +₾ 1 +砧 1 +겅 1 +탤 1 +퍽 1 +훅 1 +ǫ 1 +诛 1 +╘ 1 +📖 1 +沅 1 +轆 1 +漕 1 +裾 1 +慳 1 +勲 1 +徠 1 +嗖 1 +榛 1 +臧 1 +麾 1 +頜 1 +掂 1 +孃 1 +萼 1 +絃 1 +鹃 1 +钵 1 +烃 1 +擰 1 +椭 1 +偎 1 +泯 1 +湮 1 +篱 1 +絹 1 +╒ 1 +馋 1 +婊 1 +➺ 1 +礎 1 +铢 1 +鎳 1 +┨ 1 +╩ 1 +奘 1 +弋 1 +瘁 1 +↷ 1 +堇 1 +찹 1 +膾 1 +😔 1 +≡ 1 +ʏ 1 +☔ 1 +ꨳ 1 +🐼 1 +🤘 1 +ֳ 1 +ኍ 1 +ὡ 1 +₴ 1 +뇽 1 +빽 1 +뺏 1 +엥 1 +욤 1 +쩐 1 +💘 1 +😒 1 +쏭 1 +辕 1 +✐ 1 +苣 1 +∗ 1 +鎬 1 +➼ 1 +疟 1 +攫 1 +僟 1 +夙 1 +侬 1 +泾 1 +荻 1 +棣 1 +唰 1 +鸞 1 +瞿 1 +忿 1 +秸 1 +匝 1 +涪 1 +誨 1 +勛 1 +俬 1 +憚 1 +钜 1 +卍 1 +怼 1 +湍 1 +琨 1 +裱 1 +慚 1 +甬 1 +甕 1 +瘸 1 +琍 1 +⇥ 1 +丨 1 +嵘 1 +蹺 1 +撻 1 +睨 1 +捎 1 +奬 1 +聡 1 +驹 1 +咭 1 +莒 1 +銖 1 +氹 1 +鹦 1 + 1 +↠ 1 +拴 1 +捺 1 +扈 1 +˜ 1 +縈 1 +🚗 1 +ቑ 1 +걔 1 +뗄 1 +랏 1 +셧 1 +폈 1 + 1 +🇧 1 +🐒 1 +💁 1 +🤷 1 +⁩ 1 +첸 1 +춧 1 +👊 1 +💟 1 +📦 1 +Œ 1 +藐 1 +陇 1 + 1 +枱 1 +锥 1 +邋 1 +霏 1 +讃 1 +⁢ 1 +揶 1 +鹊 1 +獒 1 +糠 1 +攢 1 +桢 1 +嗒 1 +鰭 1 +∕ 1 +旎 1 +诬 1 +娑 1 +荀 1 +桀 1 +▥ 1 +祯 1 +圩 1 +皋 1 +岘 1 +✙ 1 +剌 1 +渚 1 +腴 1 +➶ 1 +锲 1 +☇ 1 +♢ 1 +丕 1 +蛊 1 +┛ 1 +∫ 1 +绫 1 +泫 1 +硏 1 +💢 1 +Ɔ 1 +֛ 1 +ۜ 1 +ၴ 1 +ᴇ 1 +헴 1 + 1 + 1 +🍔 1 +💻 1 +🙇 1 +ऴ 1 +ਞ 1 +繆 1 +벵 1 +쿰 1 +💵 1 +🚚 1 +ˌ 1 +蚓 1 +뎃 1 +摳 1 +蒿 1 +坯 1 +溴 1 +捶 1 +頡 1 +阖 1 +亙 1 +甭 1 +泞 1 +蟾 1 +锰 1 +麋 1 +跛 1 +苇 1 +坨 1 +筠 1 +跺 1 +舷 1 +啵 1 +滁 1 +妲 1 +蜊 1 +❈ 1 +筵 1 +噎 1 +羟 1 +哂 1 +燁 1 +卐 1 +┘ 1 +諫 1 +╧ 1 +萩 1 +囡 1 +捱 1 +佗 1 +⇤ 1 +歆 1 + 1 +✂ 1 +⇘ 1 +佯 1 +孑 1 +癸 1 +隕 1 +謡 1 +◍ 1 +櫸 1 +欅 1 +ၜ 1 +얌 1 +ƴ 1 +쫌 1 +찻 1 +켠 1 +🎯 1 +🚨 1 +ႛ 1 +☐ 1 +녘 1 +얕 1 +옌 1 +챈 1 + 1 +🇳 1 +👳 1 +👸 1 +📣 1 +🔫 1 +膦 1 +螨 1 +넵 1 +‹ 1 +╹ 1 +Ž 1 +┓ 1 +孖 1 +涧 1 +幂 1 +隽 1 +梶 1 +祗 1 +啜 1 +雉 1 +攷 1 +庾 1 +琬 1 +挎 1 +嬴 1 +鼬 1 +铠 1 +烬 1 +⇖ 1 +➷ 1 +吆 1 +俚 1 +⇃ 1 +↶ 1 +谘 1 +👎 1 +塀 1 +┯ 1 +➟ 1 + 1 +╠ 1 +屄 1 +゙ 1 +🌾 1 +💑 1 +ጏ 1 +Ḥ 1 +ẖ 1 +✳ 1 +✹ 1 +뵈 1 +쏜 1 +윽 1 + 1 +👋 1 +👮 1 +😙 1 +⚘ 1 +엡 1 + 1 +👻 1 +ឣ 1 +擼 1 +鵲 1 +ၹ 1 +菀 1 +叁 1 +唑 1 +嶮 1 + 1 +↼ 1 +噠 1 +镐 1 +饞 1 +╥ 1 +☭ 1 +鑊 1 +熹 1 +◤ 1 +缜 1 +∠ 1 +僭 1 +幀 1 +莺 1 +镭 1 +佘 1 +菏 1 +煖 1 +倌 1 +鎢 1 +纔 1 +瞟 1 +碇 1 +餒 1 +坳 1 +爰 1 +⇁ 1 +髙 1 +壱 1 +⇞ 1 +敍 1 +擢 1 +褂 1 +讥 1 +╋ 1 +疝 1 +胯 1 +糅 1 +龋 1 +ぢ 1 +蓁 1 +⇣ 1 +娣 1 +訶 1 +╙ 1 +ᴗ 1 +🇨 1 +쩜 1 +௮ 1 +ൿ 1 +∂ 1 +俣 1 +皑 1 +맣 1 +৳ 1 +ṫ 1 +☚ 1 +귓 1 +숀 1 +쌩 1 +앎 1 +욥 1 +젬 1 + 1 + 1 +🇱 1 +🏠 1 +👠 1 +႗ 1 +彡 1 +쥴 1 +😣 1 +ႋ 1 +🐶 1 +塁 1 +錆 1 + 1 +雹 1 +➨ 1 +梟 1 +喏 1 +掬 1 +稈 1 +湳 1 +莪 1 +聿 1 +稔 1 +熵 1 +铉 1 +錨 1 +摟 1 +餞 1 +諳 1 +囿 1 +囝 1 +狒 1 +铬 1 +訛 1 +濮 1 +颍 1 +蜆 1 +牒 1 +桨 1 +昶 1 +勅 1 +璣 1 +♘ 1 +囱 1 +浔 1 +缄 1 +麹 1 +鐮 1 +↿ 1 +➥ 1 +🇯 1 +葺 1 + 1 +芍 1 +➦ 1 +瀆 1 +↟ 1 +∴ 1 +缇 1 +躾 1 +◣ 1 +孺 1 +獷 1 +✚ 1 +埸 1 +˃ 1 +┲ 1 +ʟ 1 +胴 1 +ʀ 1 +ɴ 1 +ʋ 1 +ʾ 1 +֤ 1 +۝ 1 +ਙ 1 +ᄁ 1 +Ὁ 1 +▮ 1 +갸 1 +잰 1 +짊 1 +😓 1 +̯ 1 +֗ 1 +⏰ 1 +╨ 1 +쌔 1 +웜 1 +🙃 1 +❎ 1 +苺 1 + 1 +ၭ 1 + 1 +👿 1 +崴 1 +覃 1 +噤 1 +⇗ 1 +葷 1 +壅 1 +↾ 1 +蹿 1 +柒 1 +ㄨ 1 +蓼 1 +妩 1 +铎 1 +銬 1 +蜈 1 +蚣 1 +蔺 1 +榷 1 +萦 1 +搽 1 +昙 1 +涓 1 +♈ 1 +淞 1 +鋤 1 +砷 1 +👔 1 +╓ 1 +玷 1 +羥 1 +藿 1 +鲑 1 +鱸 1 +镳 1 +晔 1 +淸 1 +掟 1 +՟ 1 +颯 1 +鎚 1 +阙 1 +腈 1 +📃 1 +伈 1 + 1 +暸 1 +皚 1 +袴 1 +🇭 1 +😬 1 +┫ 1 +诃 1 +🔰 1 +ॠ 1 +঵ 1 +ὕ 1 +⁦ 1 +❶ 1 +舫 1 +꼰 1 +샥 1 +쌌 1 +팻 1 +헹 1 + 1 +🌎 1 +🍾 1 +Ŕ 1 +ȇ 1 +ჷ 1 +긱 1 +멱 1 +쎈 1 +짭 1 +찡 1 +캇 1 +텨 1 +힝 1 + 1 +🍬 1 +🍺 1 +🎼 1 +💄 1 +🔔 1 + 1 +🎬 1 +嘞 1 +馍 1 +裆 1 +荤 1 +惣 1 +燜 1 +殇 1 +砦 1 +ヂ 1 +紜 1 +鱒 1 +❂ 1 +ヱ 1 +佃 1 +☄ 1 +樫 1 +荳 1 +砚 1 +踮 1 +桎 1 +鈾 1 +蜱 1 +尒 1 +烩 1 +袄 1 +炅 1 +椪 1 +☯ 1 +暘 1 +葯 1 +渙 1 +╳ 1 +蕁 1 +鱔 1 +┽ 1 +冪 1 +鵰 1 +揸 1 +╜ 1 +╣ 1 +薫 1 + 1 +瘪 1 +祎 1 +暌 1 +⇙ 1 +粄 1 +砝 1 +♗ 1 +◢ 1 +鈑 1 +⇄ 1 +┬ 1 +ゝ 1 +鰹 1 +乩 1 +燼 1 +╉ 1 +贻 1 +鰲 1 +빤 1 +🙊 1 +♜ 1 +薙 1 +颌 1 +௯ 1 +ዅ 1 +ᴘ 1 +陲 1 + 1 +🍂 1 +🍒 1 +ɣ 1 +ҏ 1 +ୢ 1 +ဪ 1 +ᄑ 1 +ṗ 1 +ἤ 1 +℣ 1 +⇓ 1 +⌚ 1 +⚓ 1 +〆 1 +숱 1 +쨍 1 +튤 1 + 1 + 1 + 1 + 1 +🌊 1 +🍊 1 +🏿 1 +👤 1 +👶 1 +💀 1 +📩 1 +😻 1 +🥇 1 +∑ 1 +☷ 1 +ႜ 1 +❷ 1 +⇋ 1 +旌 1 +衹 1 +俵 1 +ໞ 1 +ˊ 1 +驊 1 +盅 1 +蹣 1 +芎 1 +鎔 1 +埰 1 +踉 1 +囙 1 +莢 1 +缈 1 +脓 1 +盹 1 +┇ 1 +峴 1 +锏 1 +簌 1 +辮 1 +⇟ 1 +溧 1 +缽 1 +涣 1 +栾 1 +饷 1 +皎 1 +犊 1 +閆 1 +霁 1 +┮ 1 +锄 1 +➚ 1 +紺 1 +怵 1 +➴ 1 +┳ 1 +綏 1 +↖ 1 +馏 1 +┹ 1 +颚 1 +❦ 1 +↽ 1 +碉 1 +祚 1 +┷ 1 +☾ 1 +⇡ 1 +嗲 1 +珏 1 +㗎 1 +侑 1 +👣 1 +啫 1 +谑 1 +⊕ 1 +戍 1 +畠 1 +搡 1 +💲 1 +🔁 1 +ܐ 1 +ᆫ 1 +矇 1 +ꣳ 1 +깬 1 +뭣 1 +쫙 1 +캅 1 +쾰 1 +텁 1 + 1 + 1 + 1 +🌲 1 +👁 1 +ᴛ 1 +굼 1 + 1 +낍 1 +쪄 1 +🔜 1 +冢 1 +魇 1 +鮨 1 +痧 1 + 1 +👜 1 +😤 1 +ʌ 1 +嬷 1 +豢 1 +鞄 1 +藁 1 +恫 1 +琰 1 +冏 1 +舘 1 +芃 1 +钗 1 +冴 1 +鐺 1 +舺 1 +艮 1 +驥 1 +臊 1 +燊 1 +偃 1 +蹶 1 +簍 1 +彆 1 +炕 1 +↤ 1 +┎ 1 +綑 1 +盂 1 +珺 1 +嫚 1 +皰 1 +釵 1 +靼 1 +紆 1 +╞ 1 +淦 1 +胥 1 +蝗 1 +谟 1 +╟ 1 +❧ 1 +鈎 1 + 1 +靭 1 +爻 1 +╦ 1 +炔 1 +錮 1 +瘴 1 +陂 1 +↴ 1 +ꨤ 1 +譏 1 +ᴍ 1 +⛔ 1 +襬 1 +ʜ 1 +菖 1 +谌 1 + 1 +👬 1 +👼 1 +🔊 1 +ǒ 1 +˂ 1 +ᆯ 1 +ጯ 1 +✋ 1 +⟩ 1 +⟶ 1 +ꝫ 1 +갬 1 +댜 1 +📥 1 +😗 1 +🥀 1 +҉ 1 +ҳ 1 +ઙ 1 +႖ 1 +ዯ 1 +Ἡ 1 +┻ 1 +➲ 1 +🇴 1 +🌙 1 +🐯 1 +🐾 1 +👖 1 +🛍 1 +🤤 1 +ɒ 1 +ឝ 1 +ᴅ 1 + 1 +✫ 1 + 1 +➕ 1 +🤪 1 +蟎 1 + 1 +萵 1 +囪 1 +摁 1 +螳 1 +姍 1 +肏 1 +菈 1 +┺ 1 +侗 1 +匍 1 +榖 1 +圜 1 +墒 1 +俪 1 +诩 1 +嬅 1 +毂 1 +弼 1 +氡 1 +噼 1 +羧 1 +攙 1 +忖 1 +嚢 1 +擞 1 +犢 1 +騁 1 +泷 1 +仨 1 +澗 1 +┞ 1 +嬲 1 +鄺 1 +蕞 1 +錚 1 +↸ 1 +誅 1 +奐 1 +宦 1 +镰 1 +┍ 1 +╫ 1 +仃 1 +蛹 1 +唁 1 +帑 1 +┱ 1 +毘 1 +┠ 1 +飚 1 +☒ 1 +̷ 1 +僥 1 +齁 1 +褔 1 +幔 1 +躉 1 +瞓 1 +鱉 1 +ヅ 1 +╖ 1 +雫 1 +囁 1 + 1 +撅 1 +隴 1 +灞 1 +🐦 1 +ێ 1 +ᅣ 1 +ឩ 1 +🏡 1 +ɹ 1 +ᄊ 1 +ḃ 1 +⛄ 1 +⟨ 1 +껀 1 +맬 1 +뻣 1 +윰 1 +쟝 1 +쾅 1 +휙 1 + 1 + 1 +🆔 1 +🇿 1 +🌀 1 +👰 1 +👱 1 +📧 1 +📺 1 +🔺 1 +😩 1 +🚀 1 +🚴 1 +🧚 1 +🧡 1 +ಱ 1 +ቩ 1 +╊ 1 +🎓 1 +🎖 1 +尙 1 +珪 1 +鋳 1 +┼ 1 +訥 1 +鲲 1 +飒 1 +韆 1 +😴 1 +↬ 1 +鞦 1 +桅 1 +╕ 1 +⇂ 1 +↮ 1 +叟 1 +呟 1 +镉 1 +軻 1 +濂 1 +掳 1 +錳 1 +卞 1 +鎘 1 +暁 1 +煊 1 +貘 1 +喙 1 +亳 1 +璜 1 +嬪 1 +鏘 1 +鏗 1 +偈 1 +仄 1 +勣 1 +髻 1 +寘 1 +笆 1 +谕 1 +萣 1 +骥 1 +喩 1 +鉬 1 +骐 1 +騏 1 +迺 1 +┑ 1 +酐 1 +鬃 1 +鹑 1 +╄ 1 +餸 1 +婵 1 +軼 1 +✥ 1 +痂 1 +頚 1 +∏ 1 +脲 1 +唖 1 +襖 1 +堑 1 +鏞 1 +纾 1 +餮 1 +缰 1 +┟ 1 + 1 +⇍ 1 +☊ 1 +❝ 1 +✱ 1 +┿ 1 +⚪ 1 +貅 1 +ᴋ 1 +伉 1 +羣 1 +🎊 1 +🐝 1 +௭ 1 +ౄ 1 +ἥ 1 +❕ 1 +갠 1 +쿱 1 +🇩 1 +🌍 1 +🍳 1 +🍻 1 +ǽ 1 +ʕ 1 +̐ 1 +ѹ 1 +ٕ 1 +ڕ 1 +ऒ 1 +ᅩ 1 +ቒ 1 +ቛ 1 +ቯ 1 +ẕ 1 +↦ 1 +∅ 1 +┾ 1 +◗ 1 +⬆ 1 +뚤 1 +띵 1 +밉 1 +뵐 1 +뺄 1 +츨 1 +텟 1 +힛 1 + 1 + 1 + 1 +﷦ 1 +🍦 1 +🍷 1 +💳 1 +🖒 1 +⏪ 1 +裟 1 +벧 1 +🍇 1 +邬 1 +晞 1 +咂 1 +搥 1 +馗 1 +↧ 1 +颳 1 +☽ 1 +鸢 1 +勐 1 +凪 1 +邺 1 +胤 1 +蓑 1 +劏 1 +滂 1 +耄 1 +濰 1 +篓 1 +∷ 1 +╢ 1 +罡 1 +鉸 1 +郗 1 +摞 1 +魘 1 +郅 1 +栢 1 +呲 1 +釗 1 +龕 1 +蜃 1 +焯 1 +蝨 1 +捌 1 +鳖 1 +↨ 1 +👚 1 +獾 1 +☋ 1 +鲟 1 +灏 1 +巽 1 +婀 1 +玨 1 +悽 1 +鍬 1 +剉 1 +吡 1 +塭 1 +缨 1 +籟 1 +鬓 1 +鯰 1 +诏 1 +⇏ 1 +‰ 1 +笏 1 +箫 1 +睏 1 +孛 1 +焜 1 +燿 1 +┧ 1 +ㄇ 1 +虻 1 +躑 1 +鉾 1 +🎙 1 +👕 1 +❛ 1 +꽈 1 +ѡ 1 +ႍ 1 +🇫 1 +🤝 1 +ѧ 1 +֨ 1 +ۦ 1 +ೖ 1 +ቖ 1 +ኂ 1 +៚ 1 +₱ 1 +⌘ 1 +▹ 1 +✭ 1 +羸 1 +跎 1 +뉠 1 +믄 1 +뼛 1 +컹 1 +톈 1 + 1 + 1 + 1 +🐰 1 +💧 1 +😰 1 +😶 1 +🚵 1 +ɕ 1 +ɖ 1 +ɢ 1 +ˎ 1 +ൡ 1 +ဎ 1 +♻ 1 +냑 1 +뮈 1 +샨 1 +샾 1 +쇳 1 +틔 1 +훠 1 +🌐 1 +🍉 1 +ቌ 1 +♙ 1 +嘤 1 +蜢 1 +눗 1 + 1 +✑ 1 +殒 1 +錡 1 +芡 1 +🎨 1 +浬 1 +纣 1 +🆘 1 +聼 1 +觴 1 +楹 1 +榎 1 +🐷 1 +杓 1 +硯 1 +涔 1 +♝ 1 +嗌 1 +秆 1 +縝 1 +噔 1 +瀅 1 +簪 1 +蛭 1 +緘 1 +脛 1 +擀 1 +楨 1 +钨 1 +ㄏ 1 +┚ 1 +罂 1 +藹 1 +诙 1 +玳 1 +┢ 1 +藺 1 +峦 1 +藓 1 +焖 1 +珩 1 +栉 1 +佚 1 +顥 1 +螯 1 +➵ 1 +↣ 1 +鞑 1 +霈 1 +忒 1 +瀘 1 +瑀 1 +摰 1 +咿 1 +婺 1 +啮 1 +闕 1 +鹜 1 +颦 1 +樵 1 +ㄌ 1 +伕 1 +僂 1 +镌 1 +┭ 1 +ㄎ 1 +暐 1 +殤 1 +沏 1 +犽 1 +詔 1 +柢 1 +砾 1 + 1 + 1 +吖 1 +蛎 1 +鍺 1 +↭ 1 +☲ 1 +佝 1 +猬 1 +衊 1 +冨 1 +ㄛ 1 + 1 +↥ 1 +✽ 1 +昉 1 +掸 1 +瓩 1 +睢 1 +誒 1 +↚ 1 +↰ 1 +╇ 1 +琇 1 +謁 1 +뺑 1 +🐣 1 +🗼 1 +ӑ 1 +ॢ 1 +☉ 1 + 1 +😷 1 +Ƹ 1 +ǧ 1 +ɯ 1 +ҥ 1 +ۢ 1 +ܝ 1 +ዂ 1 +፨ 1 +Ḕ 1 +⇝ 1 +✮ 1 +簣 1 +갛 1 +궂 1 +끕 1 +냇 1 +닳 1 +멩 1 +빳 1 +윔 1 +쥘 1 +쨩 1 +퓸 1 +휼 1 + 1 + 1 + 1 +🍋 1 +😖 1 +😠 1 +😨 1 +🙆 1 +🚶 1 +🤓 1 +🦁 1 +ǰ 1 +ဨ 1 +ႚ 1 +ቝ 1 +፠ 1 +ἵ 1 +긔 1 +숴 1 + 1 +🎸 1 +🐘 1 +슝 1 +욧 1 +哔 1 +溱 1 +郞 1 +骅 1 + 1 +贛 1 +🔍 1 +🏀 1 +欒 1 +滦 1 +镕 1 +柊 1 +嘣 1 +┝ 1 +榊 1 +縞 1 +骜 1 +耙 1 +毡 1 +邉 1 +揩 1 +嵊 1 +趸 1 +坩 1 +▋ 1 +濬 1 +岷 1 +疽 1 +鸵 1 +≒ 1 +瞋 1 +掇 1 +鄔 1 +ㄝ 1 +埴 1 +堃 1 +┵ 1 +蛐 1 +囗 1 +闰 1 +邳 1 +抺 1 +蕈 1 +嗟 1 +崢 1 +辘 1 +睥 1 +倬 1 +嬈 1 +☵ 1 +跩 1 + 1 +肱 1 +锹 1 +闌 1 +┈ 1 +☟ 1 +捄 1 +艹 1 + 1 +┋ 1 +柩 1 +靛 1 +捋 1 +蔦 1 +┙ 1 +❉ 1 +苫 1 +蒨 1 +褫 1 +驀 1 +鴕 1 +蓖 1 +ゐ 1 +蚝 1 +̌ 1 +🕺 1 +🍴 1 +╆ 1 +筊 1 +珲 1 +ᴜ 1 +▴ 1 +ӯ 1 +◞ 1 +넙 1 + 1 +🛒 1 +ǁ 1 +ɫ 1 +ʘ 1 +̤ 1 +җ 1 +Ӊ 1 +֧ 1 +ۥ 1 +ኌ 1 +ᐈ 1 +ὖ 1 +⊥ 1 +❔ 1 +峒 1 +ꨀ 1 +궜 1 +멎 1 +잌 1 + 1 + 1 + 1 +﷫ 1 +🇻 1 +🍹 1 +💅 1 +💍 1 +💬 1 +💮 1 +📹 1 +🤨 1 +⊆ 1 +겄 1 +듦 1 +뗏 1 +뫼 1 +셍 1 +촐 1 +휀 1 +🌳 1 +👙 1 +👥 1 +💉 1 +🕊 1 +◟ 1 +姵 1 +穣 1 +깽 1 +숑 1 + 1 +📽 1 +Ӝ 1 +∥ 1 +☹ 1 +鰍 1 +🅱 1 + 1 +↢ 1 +燄 1 +赊 1 +黍 1 +膈 1 +旮 1 +昴 1 +泠 1 +滓 1 +珥 1 +輥 1 +硐 1 +↝ 1 +卹 1 +澹 1 +厩 1 +雒 1 +氦 1 +芫 1 +汩 1 +苡 1 +蛆 1 +↡ 1 +娲 1 +┩ 1 +楝 1 +薊 1 +▎ 1 +菡 1 +彊 1 +┦ 1 +璎 1 +酊 1 +洸 1 +敕 1 +衮 1 +碴 1 +燧 1 +蝪 1 +萄 1 +雎 1 +萸 1 +钒 1 +⇎ 1 +⇅ 1 +藪 1 +俟 1 +澍 1 +瑗 1 +╃ 1 +籀 1 +郯 1 +瀞 1 +☴ 1 +仞 1 +釆 1 +嵋 1 +瓔 1 +⇉ 1 +嘮 1 +⇆ 1 +✁ 1 + 1 +☱ 1 +滘 1 +褸 1 +嗪 1 +┶ 1 +毽 1 +貽 1 +鄕 1 +镂 1 +珣 1 +柘 1 +紘 1 +顳 1 + 1 +〓 1 +榫 1 +ㄍ 1 +堙 1 +̭ 1 +⇇ 1 +┸ 1 +幗 1 +辊 1 +鐫 1 + 1 +丿 1 +叵 1 +娆 1 +弑 1 +鏖 1 +疃 1 +ㄤ 1 +ꨟ 1 +ꨱ 1 +∮ 1 +╎ 1 +颔 1 +馀 1 +╡ 1 +猷 1 +ܳ 1 +⤴ 1 +贄 1 +釩 1 +鯤 1 + 1 +🏝 1 + 1 +🇼 1 +🗣 1 +😟 1 +ǀ 1 +ȗ 1 +˗ 1 +ڵ 1 +ೞ 1 +ᄄ 1 +᎐ 1 +Ὅ 1 +⊂ 1 +┡ 1 +❸ 1 +ⱪ 1 +柾 1 +넴 1 +샅 1 +쑈 1 +츰 1 +폿 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 +🍪 1 +🍫 1 +🍰 1 +🎮 1 +🏵 1 +🐴 1 +💠 1 +💼 1 +🔅 1 +🥂 1 +🦄 1 +̑ 1 +Ҳ 1 +ᄎ 1 +ፇ 1 +Ṣ 1 +Ἔ 1 +◽ 1 +⛱ 1 +넹 1 +렝 1 +쳇 1 +퓰 1 + 1 +📎 1 +🔗 1 +🤭 1 +ၐ 1 +ᆢ 1 +↫ 1 +乇 1 +儆 1 +ꨓ 1 +🎋 1 +🏫 1 + 1 +摀 1 +獠 1 +銨 1 +┖ 1 +陟 1 +💊 1 +🗽 1 +╅ 1 +鈷 1 +╌ 1 +譁 1 +錕 1 +魟 1 +擻 1 +ˆ 1 +酩 1 +哝 1 +芘 1 +鎭 1 +踨 1 +鹫 1 +溟 1 +茭 1 +靨 1 +畚 1 +鳗 1 +糢 1 +紂 1 +玑 1 +仝 1 +尕 1 +恸 1 +呯 1 +凇 1 +蚜 1 +挞 1 +鮫 1 +鎵 1 +鈮 1 +轲 1 +靄 1 +泮 1 +铩 1 +瘧 1 +┥ 1 +骊 1 +鯧 1 +牴 1 +肓 1 +竈 1 +簋 1 +┉ 1 +╀ 1 +箪 1 +胫 1 +觥 1 +黠 1 +鋯 1 +ヰ 1 +痱 1 +螫 1 +秭 1 +嘸 1 +躓 1 +醮 1 +왑 1 +┰ 1 +╁ 1 +攰 1 +煸 1 +谒 1 +轂 1 +➊ 1 +旳 1 +罈 1 +钯 1 +ㄥ 1 +撵 1 +靥 1 +馊 1 +忤 1 +殚 1 +蟆 1 +嗬 1 +秣 1 +↯ 1 +╍ 1 +籐 1 +脣 1 +衪 1 +錸 1 +┪ 1 +郧 1 +‵ 1 +✃ 1 +❞ 1 +媞 1 +鑌 1 +炀 1 +┒ 1 +崧 1 +篭 1 +纨 1 +邕 1 +鎰 1 +😫 1 +鐙 1 +ꨮ 1 +ꨯ 1 +ꨲ 1 +ఽ 1 +┆ 1 +銲 1 +🆑 1 +🍎 1 +🏄 1 +ɜ 1 +ᴄ 1 +펨 1 +🆓 1 +🍆 1 +🐻 1 +ۙ 1 +⛰ 1 +銚 1 +콴 1 +🍏 1 +🐤 1 +🛑 1 +ŧ 1 +Ʒ 1 +ʎ 1 +ӕ 1 +ӧ 1 +ڹ 1 +ۭ 1 +ಽ 1 +ჵ 1 +ᄐ 1 +ᐉ 1 +᠐ 1 +ᤰ 1 +ᵫ 1 +Ṭ 1 +ἢ 1 +ἷ 1 +ὃ 1 +℗ 1 +↵ 1 +⏳ 1 +劭 1 +龇 1 +꼐 1 +꿍 1 +뎁 1 +슌 1 +슥 1 +웡 1 +윕 1 +죤 1 +죵 1 +퓌 1 + 1 + 1 + 1 + 1 +🅾 1 +🌏 1 +🏋 1 +🐥 1 +👐 1 +👪 1 +🖋 1 +🖥 1 +🚘 1 +🛫 1 +🧜 1 +̕ 1 +֚ 1 +ੑ 1 +ᅦ 1 +᳚ 1 +❙ 1 +롄 1 +翀 1 +驷 1 +🥰 1 +ܰ 1 + 1 +➞ 1 +冼 1 +繙 1 +荞 1 +箐 1 +旯 1 +氘 1 +釹 1 +🐞 1 +赈 1 +铖 1 +僮 1 +訃 1 +飮 1 +揾 1 +垭 1 +玆 1 +烴 1 +铰 1 +垛 1 +擡 1 +邗 1 +潞 1 +∧ 1 +痲 1 +蜉 1 +闾 1 +慟 1 +犇 1 +霭 1 +尟 1 +蒽 1 +諂 1 +懽 1 +绶 1 +ˉ 1 +啐 1 +汴 1 +縵 1 +桉 1 +迤 1 +賁 1 +鍥 1 +窠 1 +鸾 1 +逵 1 +箩 1 +抻 1 +芻 1 +獃 1 +怙 1 +𥚃 1 +锭 1 +脩 1 +髋 1 +襠 1 +玦 1 +桧 1 +龢 1 +☌ 1 +↜ 1 +坭 1 +晷 1 +糍 1 +逹 1 +鑭 1 + 1 +睑 1 +埜 1 +牍 1 +齶 1 +妺 1 +朐 1 +炆 1 +鳍 1 +ฦ 1 + 1 +↞ 1 +誥 1 +蹓 1 +鮎 1 +寳 1 +曄 1 +籮 1 +戕 1 +👅 1 +羋 1 +孪 1 +瓮 1 +譙 1 +琮 1 +┕ 1 +蟠 1 +踫 1 +🤲 1 +ᴡ 1 +楯 1 +ܘ 1 +晁 1 + 1 +𐌰 1 +🍅 1 +ؼ 1 +ḱ 1 +🌽 1 +🍓 1 +🔶 1 +ɳ 1 +ঽ 1 +ᅭ 1 +셴 1 +얍 1 +켑 1 +🌶 1 +💭 1 +😪 1 +Ŏ 1 +ǣ 1 +ɤ 1 +̩ 1 +׀ 1 +٘ 1 +ߪ 1 +॔ 1 +Ⴋ 1 +ᅢ 1 +ኆ 1 +ᐛ 1 +∃ 1 +⏱ 1 +⏺ 1 +◌ 1 +⚔ 1 +✬ 1 +❘ 1 +❱ 1 +➀ 1 +剷 1 +弒 1 +梔 1 +畵 1 +贗 1 +鵠 1 +꺄 1 +꺅 1 +냔 1 +넝 1 +돐 1 +뗐 1 +볐 1 +뽈 1 +삥 1 +셤 1 +솝 1 +읜 1 +줏 1 +퉈 1 +휑 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 +🌄 1 +🍄 1 +🍍 1 +🍕 1 +🍨 1 +🍿 1 +🎩 1 +🏢 1 +🐍 1 +👯 1 +💏 1 +💶 1 +📜 1 +📬 1 +🔖 1 +🕔 1 +🕵 1 +🖐 1 +🤞 1 +🦅 1 +ׅ 1 +ٲ 1 +ܬ 1 +ꨁ 1 +꿩 1 +숩 1 +홑 1 + 1 +🌋 1 +🏖 1 +📅 1 +🔎 1 +🔱 1 +🚲 1 +🤵 1 +🦊 1 +ɟ 1 +쩝 1 +ܠ 1 +ᴖ 1 +⇌ 1 +姒 1 +莿 1 +骞 1 +鲫 1 +뻬 1 + 1 +ㄡ 1 +∨ 1 + 1 +⊿ 1 +ヮ 1 +🤑 1 +庖 1 +ᗜ 1 +↱ 1 +踟 1 +飨 1 +🤖 1 +奌 1 +钼 1 +麿 1 +貍 1 +墉 1 +揖 1 +歛 1 +焘 1 +阚 1 +栞 1 +镛 1 +麸 1 + 1 +撘 1 +睚 1 +珅 1 +荚 1 +ㄅ 1 +歙 1 +剜 1 +嶂 1 +澇 1 +钎 1 +铊 1 +垓 1 +☍ 1 +哐 1 +鈀 1 +堉 1 +苕 1 +淙 1 +鴆 1 +谏 1 +蔫 1 +躥 1 +劄 1 +嵙 1 +縴 1 +逑 1 +蚋 1 +騮 1 +犍 1 +躅 1 +✣ 1 +怆 1 +璿 1 +胄 1 +鈐 1 +猗 1 +洵 1 +钍 1 +孬 1 +鐡 1 +颉 1 +邶 1 +滟 1 +旼 1 +驪 1 +蓆 1 +郢 1 +ㄙ 1 +嬗 1 +蠡 1 +剐 1 +岵 1 +猁 1 +脷 1 +赟 1 +囌 1 +踰 1 +宍 1 +幵 1 +澧 1 +蘅 1 +鏊 1 +硌 1 +臬 1 +鉿 1 +╏ 1 +鏜 1 +靱 1 +佶 1 +昰 1 +顰 1 +餉 1 +凃 1 +岀 1 +萁 1 +ㄞ 1 +啶 1 +蒯 1 +馱 1 +铆 1 +悌 1 +膘 1 +薹 1 +餽 1 +扞 1 +鲔 1 +皴 1 +蓟 1 +窳 1 +錩 1 +锴 1 +閾 1 +溘 1 +͈ 1 +ꨰ 1 +⎠ 1 +╂ 1 +啷 1 +槲 1 +癆 1 +茍 1 +蠊 1 +銫 1 +铟 1 +铣 1 + 1 +🍯 1 +彧 1 +ㄕ 1 +涇 1 +箝 1 +쎌 1 +愾 1 +ᠢ 1 +Ŗ 1 +௰ 1 +棹 1 +簫 1 +舀 1 +髯 1 + 1 +🐸 1 +뭡 1 +֭ 1 +۬ 1 +ᠠ 1 + 1 +🌝 1 +👭 1 +Ċ 1 +ȅ 1 +ȏ 1 +ѥ 1 +ҧ 1 +ӣ 1 +ܪ 1 +ஂ 1 +ጔ 1 +ḑ 1 +떵 1 +웩 1 + 1 + 1 +🐳 1 +💆 1 +🕉 1 +🕯 1 +🦋 1 +ǿ 1 +ɼ 1 +˥ 1 +̰ 1 +ͅ 1 +ͻ 1 +Ҫ 1 +ҽ 1 +֍ 1 +؞ 1 +ܓ 1 +ૄ 1 +ഩ 1 +႘ 1 +Ḍ 1 +ṡ 1 +⁂ 1 +⁃ 1 +℟ 1 +ↄ 1 +∪ 1 +⌀ 1 +⎯ 1 +◠ 1 +☶ 1 +⛺ 1 +❒ 1 +➝ 1 +冧 1 +吔 1 +妏 1 +酆 1 +霰 1 +꞉ 1 +꼿 1 +놋 1 +땔 1 +띔 1 +뤠 1 +뮴 1 +뿡 1 +잴 1 +졋 1 +쩨 1 +칡 1 +텡 1 +홧 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 +🅰 1 +🌅 1 +🌆 1 +🍚 1 +🍲 1 +🎞 1 +🎢 1 +🏌 1 +🏳 1 +👄 1 +👒 1 +👟 1 +💇 1 +📋 1 +📕 1 +🔘 1 +🔞 1 +🔮 1 +🗓 1 +🙅 1 +🚇 1 +🚌 1 +🚙 1 +🛌 1 +🥣 1 +􀂃 1 +􀂾 1 +ǵ 1 +⊁ 1 +旸 1 +셩 1 +쭝 1 +팹 1 +֝ 1 +헙 1 +ʙ 1 +႟ 1 +ㄈ 1 +銉 1 +銻 1 +ㄔ 1 +🎭 1 +牘 1 +訖 1 +黜 1 +燐 1 +茈 1 +촨 1 + 1 +璉 1 +抡 1 +鷄 1 +埒 1 +瑭 1 +軔 1 +醴 1 +鋐 1 +铨 1 +胍 1 +曌 1 +濶 1 +薅 1 +寃 1 +ໟ 1 +銣 1 +閙 1 +鞆 1 +侪 1 +莳 1 +👃 1 +🙀 1 +阉 1 +犟 1 +舸 1 +铄 1 +洺 1 +綬 1 +荽 1 + 1 +愴 1 +嚙 1 +畦 1 +宓 1 +弐 1 +绛 1 +祼 1 +鰓 1 +娉 1 +汨 1 +璘 1 +贰 1 +燚 1 +閎 1 +涞 1 +賡 1 +荇 1 +鏇 1 +湟 1 +洄 1 +嵗 1 +襦 1 +槎 1 +燬 1 +牯 1 +咛 1 +蠹 1 +谀 1 +佾 1 +赝 1 +縉 1 +萜 1 +颺 1 +刍 1 + 1 +妣 1 +聃 1 +噙 1 +絳 1 +迳 1 +飹 1 +鬨 1 +樨 1 +琚 1 +谔 1 +佞 1 +彣 1 +黌 1 +鲣 1 +╈ 1 +婞 1 +惇 1 +槙 1 +诤 1 +蓀 1 +↛ 1 +薨 1 +媾 1 +檄 1 +芈 1 +憺 1 +噯 1 +魈 1 +逄 1 +罘 1 +➋ 1 +倜 1 +嫺 1 +嬬 1 +嶠 1 +淯 1 +蝋 1 +嫔 1 +缎 1 +櫈 1 +琯 1 +櫓 1 +裄 1 +櫟 1 +⌣ 1 +椋 1 +滢 1 +馕 1 +ꨵ 1 +겻 1 +磧 1 +缬 1 +ㄓ 1 +跶 1 +Ӧ 1 +僞 1 +噻 1 +幷 1 +笞 1 +蝮 1 +躰 1 + 1 +༎ 1 +ꨅ 1 +ۣ 1 +ܼ 1 +ོ 1 +ㄆ 1 +縋 1 +赭 1 +ཀ 1 +ഺ 1 +ᅥ 1 +ᠭ 1 +⊀ 1 +✷ 1 +乂 1 +闍 1 +̴ 1 +ܕ 1 +ਁ 1 +Ḻ 1 +攆 1 +艂 1 +옙 1 +͏ 1 +ҹ 1 +ḟ 1 +◔ 1 +饃 1 +쑹 1 +씸 1 +윳 1 +훙 1 +Ƣ 1 +Ǿ 1 +Ȩ 1 +ҙ 1 +ҡ 1 +֞ 1 +ڨ 1 +ۤ 1 +۫ 1 +ܡ 1 +ܿ 1 +৤ 1 +৹ 1 +૰ 1 +๚ 1 +ᆪ 1 +ዧ 1 +፟ 1 +᠑ 1 +᷆ 1 +ḛ 1 +ὔ 1 +₸ 1 +∘ 1 +⊃ 1 +⌂ 1 +▰ 1 +◻ 1 +♋ 1 +⚾ 1 +⛵ 1 +✞ 1 +❅ 1 +❋ 1 +❜ 1 +哞 1 +怄 1 +挈 1 +癩 1 +苄 1 +苙 1 +菘 1 +袗 1 +诮 1 +赉 1 +赓 1 +迩 1 +꿎 1 +돠 1 +둣 1 +듄 1 +롸 1 +뵌 1 +뻡 1 +뼘 1 +삑 1 +섶 1 +쉔 1 +쟌 1 +쥰 1 +쨔 1 +쭌 1 +츔 1 +쿳 1 +햐 1 +흄 1 +흣 1 + 1 + 1 + 1 +Ŧ 1 +̜ 1 +֜ 1 +ᅙ 1 +⁓ 1 +⁡ 1 +≌ 1 +槇 1 +ꡓ 1 +돛 1 +벰 1 +솨 1 +졍 1 +큭 1 +푯 1 +ɥ 1 +฽ 1 +ᘢ 1 +豋 1 +฾ 1 +✾ 1 +灬 1 +錀 1 +糀 1 +紬 1 +醌 1 +骶 1 +澪 1 +蕓 1 +锷 1 +鱧 1 +嘜 1 + 1 +ឰ 1 +▉ 1 +❻ 1 +慍 1 +撣 1 +洮 1 +鯁 1 +鹄 1 +╛ 1 +坵 1 +鎏 1 +鬪 1 +亓 1 +塬 1 +晧 1 +氲 1 +蟳 1 +钕 1 +鱟 1 +尐 1 +凧 1 +妁 1 +煋 1 +鈿 1 +铌 1 +闩 1 +鴞 1 +楸 1 +粢 1 +縐 1 +腚 1 +嬋 1 +殮 1 +瑷 1 +籾 1 +蚺 1 +觐 1 +錙 1 +锉 1 +锑 1 +遝 1 +芗 1 +鳯 1 +腭 1 +氙 1 +牝 1 +鴇 1 +孓 1 +酞 1 +驮 1 +箓 1 +缦 1 +訢 1 +藴 1 +佤 1 +噺 1 +凖 1 +炝 1 +椴 1 +懟 1 +鼹 1 + 1 +휄 1 +픕 1 +푀 1 +튿 1 +텼 1 +콱 1 +쭐 1 +옻 1 +쐈 1 +쉑 1 +쇽 1 +셌 1 +먀 1 +띨 1 +땋 1 +깟 1 +굣 1 +갉 1 +ꡒ 1 +龅 1 +鸩 1 +鸕 1 +鶿 1 +鶺 1 +鴒 1 +鲇 1 +鲆 1 +鰥 1 +鯱 1 +鬩 1 +髑 1 +餿 1 +韃 1 +鞅 1 +镣 1 +锗 1 +鏑 1 +醂 1 +轀 1 +跬 1 +趔 1 +趄 1 +谶 1 +譟 1 +譞 1 +訐 1 +蛔 1 +葚 1 +菟 1 +苴 1 +臾 1 +罣 1 +缙 1 +绾 1 +绡 1 +繾 1 +綣 1 +穠 1 +碣 1 +皸 1 +癔 1 +猞 1 +澐 1 +渃 1 +榗 1 +椹 1 +椀 1 +桠 1 +戬 1 +懑 1 +慤 1 +愎 1 +忾 1 +幇 1 +嶸 1 +姹 1 +妪 1 +堶 1 +堨 1 +唛 1 +哚 1 +吲 1 +劊 1 +丂 1 +⸝ 1 +➙ 1 +✺ 1 +⛅ 1 +⎝ 1 +₦ 1 +⁊ 1 +ὠ 1 +ἧ 1 +ἓ 1 +Ṛ 1 +଑ 1 +ؾ 1 +Ɵ 1 +🤡 1 +🚛 1 +🐲 1 +🍽 1 + 1 + 1 + 1 + 1 +힉 1 +튄 1 +톳 1 +캥 1 +짰 1 +쑨 1 +쏼 1 +딨 1 +꽐 1 +귐 1 +鹀 1 +鷥 1 +鱘 1 +髀 1 +饴 1 +钣 1 +鎩 1 +錤 1 +鄞 1 +躙 1 +蹰 1 +蹩 1 +豇 1 +谄 1 +覲 1 +螻 1 +蝰 1 +薺 1 +薌 1 +蕚 1 +莴 1 +苅 1 +绢 1 +绔 1 +筚 1 +笤 1 +矾 1 +瑳 1 +珐 1 +玹 1 +燔 1 +瀣 1 +沆 1 +榉 1 +梠 1 +柺 1 +杈 1 +昺 1 +撙 1 +嶗 1 +嫄 1 +壷 1 +堊 1 +圄 1 +囹 1 +嚅 1 +嗫 1 +刎 1 +❿ 1 +▍ 1 +Ἠ 1 +Ἕ 1 +ଌ 1 +ٮ 1 +Ȇ 1 +🤟 1 +🤙 1 + 1 +펐 1 +츤 1 +챤 1 +쭙 1 +잽 1 +뮐 1 +뤽 1 +뙤 1 +뇸 1 +낑 1 +껐 1 +꞊ 1 +黢 1 +鸳 1 +鸯 1 +鶘 1 +鳟 1 +餬 1 +颧 1 +頎 1 +韁 1 +鄲 1 +逡 1 +贔 1 +豺 1 +謅 1 +諄 1 +衿 1 +蜇 1 +蚱 1 +蘚 1 +蕤 1 +蓯 1 +莧 1 +茕 1 +肄 1 +聩 1 +笥 1 +碚 1 +砵 1 +玧 1 +犛 1 +涠 1 +浃 1 +氳 1 +橿 1 +枴 1 +摈 1 +揠 1 +挲 1 +恻 1 +怩 1 +忸 1 +嶙 1 +峋 1 +岿 1 +屓 1 +塹 1 +垩 1 +唳 1 +咥 1 +倹 1 +☸ 1 +∎ 1 +₤ 1 +Ἄ 1 +ẏ 1 +ऌ 1 +😹 1 +🔷 1 + 1 + 1 +쾨 1 +쫑 1 +윷 1 +앴 1 +봣 1 +볏 1 +늉 1 +녜 1 +뀜 1 +괭 1 +鳕 1 +阈 1 +锒 1 +鐐 1 +貲 1 +蛰 1 +茼 1 +罌 1 +篳 1 +硤 1 +硚 1 +瓚 1 +涿 1 +慜 1 +孿 1 +堛 1 +埚 1 +噚 1 +刽 1 +俋 1 +➯ 1 +❮ 1 +✶ 1 +ῥ 1 +Ἅ 1 +Ỵ 1 +ዻ 1 +̔ 1 +󰠐 1 + 1 +쨋 1 +옅 1 +뽁 1 +깻 1 +깰 1 +鳝 1 +餑 1 +輌 1 +踽 1 +赳 1 +賅 1 +讧 1 +蟄 1 +蝼 1 +蒻 1 +蒟 1 +蒗 1 +耷 1 +耒 1 +竽 1 +窨 1 +瑁 1 +浐 1 +栀 1 +旂 1 +壐 1 +囃 1 +佻 1 +⏑ 1 +Ὀ 1 +ἅ 1 +ኴ 1 +߅ 1 +Ϋ 1 +Ħ 1 + 1 + 1 + 1 + 1 + 1 +횃 1 +탰 1 +첵 1 +옇 1 +몄 1 +땄 1 +뎠 1 +놉 1 +뀝 1 +鹌 1 +騨 1 +躪 1 +赅 1 +諉 1 +詆 1 +荖 1 +胛 1 +眙 1 +瘢 1 +甾 1 +瓴 1 +猕 1 +氤 1 +摑 1 +❊ 1 +⇑ 1 +ἠ 1 +Ἑ 1 +̡ 1 + 1 + 1 + 1 +핼 1 +쫒 1 +봬 1 +묽 1 +뗀 1 +꿋 1 +귈 1 +龈 1 +齎 1 +鲶 1 +騖 1 +阆 1 +詡 1 +觎 1 +觊 1 +襁 1 +筲 1 +瘜 1 +瘘 1 +狛 1 +犸 1 +炷 1 +潸 1 +扪 1 +徕 1 +崂 1 +嘚 1 +冑 1 +儚 1 +僳 1 +傈 1 +ṙ 1 +ૠ 1 +ϟ 1 +🍑 1 + 1 +탯 1 +찧 1 +뿅 1 +덫 1 +鶉 1 +鵪 1 +鰂 1 +貔 1 +謾 1 +褴 1 +褛 1 +裊 1 +袈 1 +耋 1 +繍 1 +盱 1 +溏 1 +楕 1 +戡 1 +慫 1 +幪 1 +嬿 1 +埂 1 +啻 1 +呋 1 +兖 1 +✠ 1 +ḩ 1 +Ȋ 1 + 1 +찝 1 +쐬 1 +밈 1 +넸 1 +龊 1 +脍 1 +縹 1 +緲 1 +痼 1 +猙 1 +狰 1 +犷 1 +爌 1 +撾 1 +悻 1 +儋 1 +傣 1 +⓵ 1 +ჶ 1 +ؽ 1 +쬐 1 +엷 1 +쌉 1 +뺐 1 +뒹 1 +넋 1 +깼 1 +轼 1 +轭 1 +蹉 1 +謔 1 +蝟 1 +蜍 1 +苳 1 +缥 1 +篑 1 +狽 1 +濘 1 +滸 1 +浹 1 +忪 1 +孱 1 +奂 1 +嗇 1 +匐 1 +儸 1 +倏 1 +➔ 1 +⛓ 1 +⋙ 1 +ὥ 1 +Ἁ 1 +ἁ 1 + 1 + 1 +쐐 1 +슭 1 +섣 1 +닻 1 +铤 1 +鑣 1 +鄱 1 +郫 1 +蹑 1 +跄 1 +覬 1 +覦 1 +蔷 1 +艋 1 +檎 1 +枇 1 +杷 1 +杳 1 +幄 1 +嘹 1 +伫 1 +♒ 1 +ἂ 1 +ᄍ 1 +📰 1 +💸 1 + 1 +햅 1 +썽 1 +빴 1 +맏 1 +끙 1 +龌 1 +轢 1 +軾 1 +踌 1 +谩 1 +讞 1 +蓿 1 +苜 1 +牦 1 +梏 1 +斛 1 +嬛 1 +剽 1 +ὗ 1 +퀼 1 +챕 1 +읊 1 +뷴 1 +鬣 1 +驒 1 +锢 1 +醯 1 +躏 1 +詬 1 +纫 1 +纍 1 +篝 1 +睪 1 +痍 1 +瓯 1 +獰 1 +孀 1 +嫵 1 +偲 1 +❆ 1 + 1 +헵 1 +틋 1 +챘 1 +쭤 1 +잿 1 +쏴 1 +鱈 1 +鬟 1 +馄 1 +饨 1 +谧 1 +讴 1 +譎 1 +莠 1 +膵 1 +篪 1 +瘠 1 +狞 1 +囔 1 +❏ 1 +❇ 1 +Ἱ 1 +ඣ 1 +뜹 1 +눉 1 +骯 1 +饽 1 +醞 1 +贍 1 +诣 1 +袅 1 +蟋 1 +蟀 1 +籁 1 +礪 1 +泱 1 +汆 1 +槤 1 +惴 1 +嶇 1 + 1 +얗 1 +꿉 1 +髖 1 +顴 1 +靦 1 +臃 1 +瞌 1 +獼 1 +拄 1 + 1 +폄 1 +솎 1 +鹉 1 +髏 1 +霎 1 +遢 1 +蹒 1 +誣 1 +荨 1 +瞠 1 +楂 1 +嵯 1 +⟵ 1 +Ḩ 1 +󰠜 1 +켤 1 +좇 1 +뛴 1 +낵 1 +鸠 1 +躋 1 +蚯 1 +蓦 1 +紉 1 +淖 1 +淅 1 +樋 1 +揄 1 +捩 1 +怅 1 +弭 1 +☩ 1 +⇨ 1 +ἦ 1 +쁩 1 +랗 1 +鉚 1 +谆 1 +咘 1 +₫ 1 +훑 1 +샛 1 +늪 1 +꿇 1 +輟 1 +胭 1 +岖 1 +孳 1 +፺ 1 +ዀ 1 +펩 1 +튕 1 +띈 1 +땠 1 +鶩 1 +骛 1 +餛 1 +铛 1 +讐 1 +衩 1 +斕 1 +阂 1 +賂 1 +蝌 1 +茴 1 +ἕ 1 + 1 +숟 1 +颶 1 +轅 1 +蜴 1 +矸 1 +徬 1 +☮ 1 +雳 1 +跚 1 +诟 1 +蜚 1 +瘙 1 +琺 1 +帚 1 +倣 1 +Ẳ 1 + 1 +뻑 1 +谙 1 +腼 1 +娯 1 +컫 1 +섀 1 +啬 1 +咤 1 +隷 1 +繚 1 +礴 1 +潦 1 +啕 1 +싣 1 +镯 1 +缮 1 +蜓 1 +眈 1 +痉 1 +殃 1 +槻 1 +₽ 1 +뻤 1 +뉜 1 +黝 1 +閡 1 +釁 1 +蹂 1 +蜻 1 +惆 1 +埗 1 +ஔ 1 +遨 1 +瘓 1 +掻 1 +펭 1 +퀀 1 +떴 1 +눴 1 +눇 1 +齦 1 +颼 1 +蒡 1 +耦 1 +怦 1 +屉 1 +❍ 1 + 1 +郴 1 +榈 1 +፸ 1 +맴 1 +눕 1 +搐 1 +徜 1 +徉 1 +壌 1 +ẍ 1 +늠 1 +遡 1 +褻 1 +蝸 1 +潺 1 +忡 1 +🇸 1 +꿰 1 +靂 1 +獗 1 +醐 1 +遑 1 +覷 1 +袤 1 +岌 1 +儼 1 +俨 1 +鸚 1 +鵡 1 +烊 1 +渇 1 +嚀 1 +缭 1 +橢 1 +텃 1 +탔 1 +댑 1 +굶 1 +琲 1 +Ẵ 1 +짖 1 +뱉 1 +髅 1 +咄 1 +鹕 1 +鹈 1 +蜿 1 +ጶ 1 +걀 1 +爍 1 +팎 1 +큽 1 +덟 1 +馒 1 +Ἰ 1 +📢 1 +촘 1 +꿨 1 +猾 1 + 1 +뀔 1 +酝 1 +洶 1 +۪ 1 +뮌 1 +딛 1 +迥 1 +暱 1 +얹 1 +蜗 1 +儡 1 +ၩ 1 +씁 1 +彗 1 +잦 1 +鍰 1 +郸 1 +莅 1 +羈 1 +殡 1 +亵 1 +씌 1 +흩 1 +뤘 1 +謳 1 +慵 1 +핍 1 +糬 1 +뵙 1 +诧 1 +诅 1 +ၣ 1 +탉 1 +辄 1 +誹 1 +蛻 1 +殭 1 +짙 1 +惬 1 +끽 1 +痪 1 +ऎ 1 +킵 1 +찢 1 +▭ 1 +얽 1 +邃 1 +盥 1 +屜 1 +ὅ 1 +睽 1 +껑 1 +鹸 1 +핥 1 +엮 1 +侏 1 +텝 1 +痿 1 +咙 1 +荧 1 +飓 1 +깎 1 +갇 1 +☦ 1 +ἔ 1 +췄 1 +饪 1 +ἶ 1 +딪 1 +腑 1 +쨌 1 +꽂 1 +抨 1 +휩 1 +胱 1 +깥 1 +媲 1 +궐 1 +汹 1 +螞 1 +忑 1 +忐 1 +娓 1 +앓 1 +꺾 1 +梱 1 +벚 1 +躊 1 +婪 1 +녔 1 +溉 1 +琥 1 +邂 1 +컸 1 +끓 1 +痺 1 +疎 1 +匂 1 +ጇ 1 +躇 1 +耸 1 +뚫 1 +ၨ 1 +螃 1 +尷 1 +犠 1 +얇 1 +꼈 1 +껍 1 +骼 1 +悚 1 +쫓 1 +惫 1 +씻 1 +髦 1 +兢 1 +绎 1 +谴 1 +睞 1 +渲 1 +崭 1 +곁 1 +옳 1 +슐 1 +촛 1 +瑚 1 +ၰ 1 +볶 1 +挚 1 +剰 1 +Ỹ 1 +闺 1 +琐 1 +듈 1 +닮 1 +譬 1 +쩔 1 +섞 1 +帜 1 +붉 1 +恳 1 +밌 1 + 1 +낯 1 +嗽 1 +̋ 1 +犧 1 +눠 1 +낳 1 +揺 1 +띄 1 +瞩 1 +덮 1 +癜 1 +꿔 1 +‣ 1 +쏟 1 +쁨 1 +睐 1 +酋 1 +깝 1 +썼 1 +痩 1 +橄 1 +拶 1 +Ắ 1 +ゅ 1 +邏 1 +矶 1 +ὐ 1 +牺 1 +ଔ 1 +뀌 1 +寞 1 +섰 1 +렀 1 +뽑 1 +谅 1 +ὸ 1 +낄 1 +듭 1 +檬 1 +옮 1 +켰 1 +겪 1 +닙 1 +끊 1 +揃 1 +봅 1 +늦 1 +괜 1 +繋 1 +၎ 1 +슷 1 +맡 1 +펼 1 +랐 1 +拡 1 +蹈 1 +ɗ 1 +촬 1 +诞 1 +깊 1 +Ự 1 +낌 1 +봤 1 +雰 1 +Ứ 1 +씀 1 +믿 1 +圾 1 +Ộ 1 +ƙ 1 +悩 1 +Ấ 1 +놓 1 +ẵ 1 +囲 1 +険 1 +왔 1 +높 1 +됩 1 +렇 1 +ଞ 1 +받 1 +ẫ 1 +ẩ 1 +ắ 1 +ầ 1 +ấ 1 +础 1 diff --git a/laser/laser2.spm b/laser/laser2.spm new file mode 100644 index 0000000000000000000000000000000000000000..c89de0c71df26013c144aa7badf091bfb4e8a81f --- /dev/null +++ b/laser/laser2.spm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f7ef5da4408b94a096ff72d31d90f8ba438b4ab772764eb50c3db5e201fb384 +size 1008139 diff --git a/laser/laser_encoders/README.md b/laser/laser_encoders/README.md new file mode 100644 index 0000000000000000000000000000000000000000..a20ed62c183513507b3f422197be61a756f5cb3e --- /dev/null +++ b/laser/laser_encoders/README.md @@ -0,0 +1,149 @@ +# LASER encoders + +LASER Language-Agnostic SEntence Representations Toolkit + +laser_encoders is the official Python package for the Facebook [LASER](https://github.com/facebookresearch/LASER) library. It provides a simple and convenient way to use LASER embeddings in Python. It allows you to calculate multilingual sentence embeddings using the LASER toolkit. These embeddings can be utilized for various natural language processing tasks, including document classification, bitext filtering, and mining. + +## Dependencies + +- Python `>= 3.8` +- [PyTorch `>= 1.10.0`](http://pytorch.org/) +- sacremoses `>=0.1.0` +- sentencepiece `>=0.1.99` +- numpy `>=1.21.3` +- fairseq `>=0.12.2` + +You can find a full list of requirements [here](https://github.com/facebookresearch/LASER/blob/main/pyproject.toml) + +## Installation + +You can install `laser_encoders` package from PyPI: + +```sh +pip install laser_encoders +``` + +Alternatively, you can install it from a local clone of this repository, in editable mode: +```sh +pip install . -e +``` + +## Usage + +Here's a simple example on how to obtain embeddings for sentences using the `LaserEncoderPipeline`: + +>**Note:** By default, the models will be downloaded to the `~/.cache/laser_encoders` directory. To specify a different download location, you can provide the argument `model_dir=path/to/model/directory` + +```py +from laser_encoders import LaserEncoderPipeline + +# Initialize the LASER encoder pipeline +encoder = LaserEncoderPipeline(lang="igbo") + +# Encode sentences into embeddings +embeddings = encoder.encode_sentences(["nnọọ, kedu ka ị mere"]) +# If you want the output embeddings to be L2-normalized, set normalize_embeddings to True +normalized_embeddings = encoder.encode_sentences(["nnọọ, kedu ka ị mere"], normalize_embeddings=True) + +``` + +If you prefer more control over the tokenization and encoding process, you can initialize the tokenizer and encoder separately: +```py +from laser_encoders import initialize_encoder, initialize_tokenizer + +# Initialize the LASER tokenizer +tokenizer = initialize_tokenizer(lang="igbo") +tokenized_sentence = tokenizer.tokenize("nnọọ, kedu ka ị mere") + +# Initialize the LASER sentence encoder +encoder = initialize_encoder(lang="igbo") + +# Encode tokenized sentences into embeddings +embeddings = encoder.encode_sentences([tokenized_sentence]) +``` +>By default, the `spm` flag is set to `True` when initializing the encoder, ensuring the accompanying spm model is downloaded. + +**Supported Languages:** You can specify any language from the [FLORES200](https://github.com/facebookresearch/flores/blob/main/flores200/README.md#languages-in-flores-200) dataset. This includes both languages identified by their full codes (like "ibo_Latn") and simpler alternatives (like "igbo"). + +## Downloading the pre-trained models + +If you prefer to download the models individually, you can use the following command: + +```sh +python -m laser_encoders.download_models --lang=your_prefered_language # e.g., --lang="igbo"" +``` + +By default, the downloaded models will be stored in the `~/.cache/laser_encoders` directory. To specify a different download location, utilize the following command: + +```sh +python -m laser_encoders.download_models --model-dir=path/to/model/directory +``` + +> For a comprehensive list of available arguments, you can use the `--help` command with the download_models script. + +Once you have successfully downloaded the models, you can utilize the `SentenceEncoder` to tokenize and encode your text in your desired language. Here's an example of how you can achieve this: + +```py +from laser_encoders.models import SentenceEncoder +from pathlib import Path + +encoder = SentenceEncoder(model_path=path/to/downloaded/model, spm_model=Path(path/to/spm_model), spm_vocab=path/to/cvocab) +embeddings = encoder("This is a test sentence.") +``` +If you want to perform tokenization seperately, you can do this below: +```py +from laser_encoders.laser_tokenizer import LaserTokenizer + +tokenizer = LaserTokenizer(spm_model=Path(path/to/spm_model)) + +tokenized_sentence = tokenizer.tokenize("This is a test sentence.") + +encoder = SentenceEncoder(model_path=path/to/downloaded/model, spm_vocab=path/to/cvocab) +embeddings = encoder.encode_sentences([tokenized_sentence]) +``` + +For tokenizing a file instead of a string, you can use the following: + +```py +tokenized_sentence = tokenizer.tokenize_file(inp_fname=Path(path/to/input_file.txt), out_fname=Path(path/to/output_file.txt)) +``` + +### Now you can use these embeddings for downstream tasks + +For more advanced usage and options, please refer to the official LASER repository documentation. + +## LASER Versions and Associated Packages + +For users familiar with the earlier version of LASER, you might have encountered the [`laserembeddings`](https://pypi.org/project/laserembeddings/) package. This package primarily dealt with LASER-1 model embeddings. + +For the latest LASER-2,3 models, use the newly introduced `laser_encoders` package, which offers better performance and support for a wider range of languages. + + +## Contributing + +We welcome contributions from the developer community to enhance and improve laser_encoders. If you'd like to contribute, you can: + +1. Submit bug reports or feature requests through GitHub issues. +1. Fork the repository, make changes, and submit pull requests for review. + +Please follow our [Contribution Guidelines](https://github.com/facebookresearch/LASER/blob/main/CONTRIBUTING.md) to ensure a smooth process. + +### Code of Conduct + +We expect all contributors to adhere to our [Code of Conduct](https://github.com/facebookresearch/LASER/blob/main/CODE_OF_CONDUCT.md). + +### Contributors + +The following people have contributed to this project: + +- [Victor Joseph](https://github.com/CaptainVee) +- [Paul Okewunmi](https://github.com/Paulooh007) +- [Siddharth Singh Rana](https://github.com/NIXBLACK11) +- [David Dale](https://github.com/avidale/) +- [Holger Schwenk](https://github.com/hoschwenk) +- [Kevin Heffernan](https://github.com/heffernankevin) + +### License + +This package is released under the [LASER](https://github.com/facebookresearch/LASER/blob/main/LICENSE) BSD License. + diff --git a/laser/laser_encoders/__init__.py b/laser/laser_encoders/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..05b4618636e62544f900a4a84f5ff4e5044dec28 --- /dev/null +++ b/laser/laser_encoders/__init__.py @@ -0,0 +1,16 @@ +#!/bin/bash +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# ------------------------------------------------------- + +from laser_encoders.laser_tokenizer import initialize_tokenizer +from laser_encoders.models import LaserEncoderPipeline, initialize_encoder diff --git a/laser/laser_encoders/download_models.py b/laser/laser_encoders/download_models.py new file mode 100644 index 0000000000000000000000000000000000000000..08b917617fa0b73f4eff569d1e36be8180e4be2c --- /dev/null +++ b/laser/laser_encoders/download_models.py @@ -0,0 +1,154 @@ +#!/bin/bash +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# ------------------------------------------------------- +# +# This python script installs NLLB LASER2 and LASER3 sentence encoders from Amazon s3 + +import argparse +import logging +import os +import shutil +import sys +import tempfile +from pathlib import Path + +import requests +from tqdm import tqdm + +from laser_encoders.language_list import LASER2_LANGUAGE, LASER3_LANGUAGE, SPM_LANGUAGE + +logging.basicConfig( + stream=sys.stdout, + level=logging.INFO, + format="%(asctime)s | %(levelname)s | %(name)s | %(message)s", +) +logger = logging.getLogger(__name__) + + +class LaserModelDownloader: + def __init__(self, model_dir: str = None): + if model_dir is None: + model_dir = os.path.expanduser("~/.cache/laser_encoders") + os.makedirs(model_dir, exist_ok=True) + + self.model_dir = Path(model_dir) + self.base_url = "https://dl.fbaipublicfiles.com/nllb/laser" + + def download(self, filename: str): + # Because on windows os.path.join will use "\" insted of "/", so link would be: + # https://dl.fbaipublicfiles.com/nllb/laser\laser2.pt instead of https://dl.fbaipublicfiles.com/nllb/laser/laser2.pt + # which results in a failed download. + url = f"{self.base_url}/{filename}" + local_file_path = os.path.join(self.model_dir, filename) + + if os.path.exists(local_file_path): + logger.info(f" - {filename} already downloaded") + else: + logger.info(f" - Downloading {filename}") + + tf = tempfile.NamedTemporaryFile(delete=False) + temp_file_path = tf.name + + with tf: + response = requests.get(url, stream=True) + total_size = int(response.headers.get("Content-Length", 0)) + progress_bar = tqdm(total=total_size, unit_scale=True, unit="B") + + for chunk in response.iter_content(chunk_size=1024): + tf.write(chunk) + progress_bar.update(len(chunk)) + progress_bar.close() + + shutil.move(temp_file_path, local_file_path) + + def get_language_code(self, language_list: dict, lang: str) -> str: + try: + lang_3_4 = language_list[lang] + if isinstance(lang_3_4, list): + options = ", ".join(f"'{opt}'" for opt in lang_3_4) + raise ValueError( + f"Language '{lang}' has multiple options: {options}. Please specify using the 'lang' argument." + ) + return lang_3_4 + except KeyError: + raise ValueError( + f"language name: {lang} not found in language list. Specify a supported language name" + ) + + def download_laser2(self): + self.download("laser2.pt") + self.download("laser2.spm") + self.download("laser2.cvocab") + + def download_laser3(self, lang: str, spm: bool = False): + result = self.get_language_code(LASER3_LANGUAGE, lang) + + if isinstance(result, list): + raise ValueError( + f"There are script-specific models available for {lang}. Please choose one from the following: {result}" + ) + + lang = result + self.download(f"laser3-{lang}.v1.pt") + if spm: + if lang in SPM_LANGUAGE: + self.download(f"laser3-{lang}.v1.spm") + self.download(f"laser3-{lang}.v1.cvocab") + else: + self.download(f"laser2.spm") + self.download(f"laser2.cvocab") + + def main(self, args): + if args.laser: + if args.laser == "laser2": + self.download_laser2() + elif args.laser == "laser3": + self.download_laser3(lang=args.lang, spm=args.spm) + else: + raise ValueError( + f"Unsupported laser model: {args.laser}. Choose either laser2 or laser3." + ) + else: + if args.lang in LASER3_LANGUAGE: + self.download_laser3(lang=args.lang, spm=args.spm) + elif args.lang in LASER2_LANGUAGE: + self.download_laser2() + else: + raise ValueError( + f"Unsupported language name: {args.lang}. Please specify a supported language name using --lang." + ) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="LASER: Download Laser models") + parser.add_argument( + "--laser", + type=str, + help="Laser model to download", + ) + parser.add_argument( + "--lang", + type=str, + help="The language name in FLORES200 format", + ) + parser.add_argument( + "--spm", + action="store_false", + help="Do not download the SPM model?", + ) + parser.add_argument( + "--model-dir", type=str, help="The directory to download the models to" + ) + args = parser.parse_args() + downloader = LaserModelDownloader(args.model_dir) + downloader.main(args) diff --git a/laser/laser_encoders/language_list.py b/laser/laser_encoders/language_list.py new file mode 100644 index 0000000000000000000000000000000000000000..8834260108a2bf8663573d5021a1f71774507891 --- /dev/null +++ b/laser/laser_encoders/language_list.py @@ -0,0 +1,564 @@ +#!/bin/bash +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# ------------------------------------------------------- +# Language mapping to handle different language codes and names + + +def build_language_names_dict(language_list: list, language_names: dict) -> dict: + """ + Build a dictionary mapping language names to their corresponding language codes. + + Parameters: + - language_list (list): A list of language codes. + - language_names (dict): A dictionary mapping language codes to language names. + + Returns: + - dict: A dictionary mapping language names to their corresponding language codes. + """ + result_dict = {} + + for lang_code in language_list: + if lang_code not in language_names: + raise ValueError( + f"Language code '{lang_code}' not found in the provided language_names dictionary." + ) + + names_list = language_names[lang_code] + + # Ensure names_list is always a list + if not isinstance(names_list, list): + names_list = [names_list] + + for name in names_list: + if name not in result_dict: + result_dict[name] = [] + result_dict[name].append(lang_code) + + # Remove single-element lists and convert them to the element itself + for key in result_dict: + if len(result_dict[key]) == 1: + result_dict[key] = result_dict[key][0] + + return result_dict + + +SPM_LANGUAGE = [ + "amh_Ethi", + "ayr_Latn", + "azj_Latn", + "bak_Cyrl", + "bel_Cyrl", + "bod_Tibt", + "ckb_Arab", + "crh_Latn", + "dik_Latn", + "dzo_Tibt", + "fur_Latn", + "fuv_Latn", + "grn_Latn", + "kab_Latn", + "kac_Latn", + "kaz_Cyrl", + "kir_Cyrl", + "kmr_Latn", + "lij_Latn", + "lim_Latn", + "lmo_Latn", + "ltg_Latn", + "mya_Mymr", + "pbt_Arab", + "pes_Arab", + "prs_Arab", + "sat_Beng", + "scn_Latn", + "srd_Latn", + "szl_Latn", + "taq_Latn", + "tgk_Cyrl", + "tir_Ethi", + "tzm_Tfng", + "vec_Latn", +] + + +################################## +###### LANGUAGE NAMES ############ +################################## + +LANGUAGE_NAMES = { + "ace_Arab": ["acehnese", "ace", "ace_Arab"], + "ace_Latn": ["acehnese", "ace", "ace_Latn"], + "acm_Arab": ["mesopotamian arabic", "acm", "acm_Arab"], + "acq_Arab": ["ta’izzi-adeni arabic", "acq", "acq_Arab"], + "aeb_Arab": ["tunisian arabic", "aeb", "aeb_Arab"], + "afr_Latn": ["afrikaans", "afr", "afr_Latn"], + "ajp_Arab": ["south levantine arabic", "ajp", "ajp_Arab"], + "aka_Latn": ["akan", "aka", "aka_Latn"], + "amh_Ethi": ["amharic", "amh", "amh_Ethi"], + "apc_Arab": ["north levantine arabic", "apc", "apc_Arab"], + "arb_Arab": ["modern standard arabic", "arb", "arb_Arab"], + "arb_Latn": ["modern standard arabic", "arb", "arb_Latn"], + "ars_Arab": ["najdi arabic", "ars", "ars_Arab"], + "ary_Arab": ["moroccan arabic", "ary", "ary_Arab"], + "arz_Arab": ["egyptian arabic", "arz", "arz_Arab"], + "asm_Beng": ["assamese", "asm", "asm_Beng"], + "ast_Latn": ["asturian", "ast", "ast_Latn"], + "awa_Deva": ["awadhi", "awa", "awa_Deva"], + "ayr_Latn": ["central aymara", "ayr", "ayr_Latn"], + "azb_Arab": ["south azerbaijani", "azb", "azb_Arab"], + "azj_Latn": ["north azerbaijani", "azj", "azj_Latn"], + "bak_Cyrl": ["bashkir", "bak", "bak_Cyrl"], + "bam_Latn": ["bambara", "bam", "bam_Latn"], + "ban_Latn": ["balinese", "ban", "ban_Latn"], + "bel_Cyrl": ["belarusian", "bel", "bel_Cyrl"], + "bem_Latn": ["bemba", "bem", "bem_Latn"], + "ben_Beng": ["bengali", "ben", "ben_Beng"], + "bho_Deva": ["bhojpuri", "bho", "bho_Deva"], + "bjn_Arab": ["banjar", "bjn", "bjn_Arab"], + "bjn_Latn": ["banjar", "bjn", "bjn_Latn"], + "bod_Tibt": ["standard tibetan", "bod", "bod_Tibt"], + "bos_Latn": ["bosnian", "bos", "bos_Latn"], + "bug_Latn": ["buginese", "bug", "bug_Latn"], + "bul_Cyrl": ["bulgarian", "bul", "bul_Cyrl"], + "cat_Latn": ["catalan", "cat", "cat_Latn"], + "ceb_Latn": ["cebuano", "ceb", "ceb_Latn"], + "ces_Latn": ["czech", "ces", "ces_Latn"], + "cjk_Latn": ["chokwe", "cjk", "cjk_Latn"], + "ckb_Arab": ["central kurdish", "ckb", "ckb_Arab"], + "crh_Latn": ["crimean tatar", "crh", "crh_Latn"], + "cym_Latn": ["welsh", "cym", "cym_Latn"], + "dan_Latn": ["danish", "dan", "dan_Latn"], + "deu_Latn": ["german", "deu", "deu_Latn"], + "dik_Latn": ["southwestern dinka", "dik", "dik_Latn"], + "dyu_Latn": ["dyula", "dyu", "dyu_Latn"], + "dzo_Tibt": ["dzongkha", "dzo", "dzo_Tibt"], + "ell_Grek": ["greek", "ell", "ell_Grek"], + "eng_Latn": ["english", "eng", "eng_Latn"], + "epo_Latn": ["esperanto", "epo", "epo_Latn"], + "est_Latn": ["estonian", "est", "est_Latn"], + "eus_Latn": ["basque", "eus", "eus_Latn"], + "ewe_Latn": ["ewe", "ewe_Latn"], + "fao_Latn": ["faroese", "fao", "fao_Latn"], + "fij_Latn": ["fijian", "fij", "fij_Latn"], + "fin_Latn": ["finnish", "fin", "fin_Latn"], + "fon_Latn": ["fon", "fon_Latn"], + "fra_Latn": ["french", "fra", "fra_Latn"], + "fur_Latn": ["friulian", "fur", "fur_Latn"], + "fuv_Latn": ["nigerian fulfulde", "fuv", "fuv_Latn"], + "gla_Latn": ["scottish gaelic", "gla", "gla_Latn"], + "gle_Latn": ["irish", "gle", "gle_Latn"], + "glg_Latn": ["galician", "glg", "glg_Latn"], + "grn_Latn": ["guarani", "grn", "grn_Latn"], + "guj_Gujr": ["gujarati", "guj", "guj_Gujr"], + "hat_Latn": ["haitian creole", "hat", "hat_Latn"], + "hau_Latn": ["hausa", "hau", "hau_Latn"], + "heb_Hebr": ["hebrew", "heb", "heb_Hebr"], + "hin_Deva": ["hindi", "hin", "hin_Deva"], + "hne_Deva": ["chhattisgarhi", "hne", "hne_Deva"], + "hrv_Latn": ["croatian", "hrv", "hrv_Latn"], + "hun_Latn": ["hungarian", "hun", "hun_Latn"], + "hye_Armn": ["armenian", "hye", "hye_Armn"], + "ibo_Latn": ["igbo", "ibo", "ibo_Latn"], + "ilo_Latn": ["ilocano", "ilo", "ilo_Latn"], + "ind_Latn": ["indonesian", "ind", "ind_Latn"], + "isl_Latn": ["icelandic", "isl", "isl_Latn"], + "ita_Latn": ["italian", "ita", "ita_Latn"], + "jav_Latn": ["javanese", "jav", "jav_Latn"], + "jpn_Jpan": ["japanese", "jpn", "jpn_Jpan"], + "kab_Latn": ["kabyle", "kab", "kab_Latn"], + "kac_Latn": ["jingpho", "kac", "kac_Latn"], + "kam_Latn": ["kamba", "kam", "kam_Latn"], + "kan_Knda": ["kannada", "kan", "kan_Knda"], + "kas_Arab": ["kashmiri", "kas", "kas_Arab"], + "kas_Deva": ["kashmiri", "kas", "kas_Deva"], + "kat_Geor": ["georgian", "kat", "kat_Geor"], + "knc_Arab": ["central kanuri", "knc", "knc_Arab"], + "knc_Latn": ["central kanuri", "knc", "knc_Latn"], + "kaz_Cyrl": ["kazakh", "kaz", "kaz_Cyrl"], + "kbp_Latn": ["kabiyè", "kbp", "kbp_Latn"], + "kea_Latn": ["kabuverdianu", "kea", "kea_Latn"], + "khm_Khmr": ["khmer", "khm", "khm_Khmr"], + "kik_Latn": ["kikuyu", "kik", "kik_Latn"], + "kin_Latn": ["kinyarwanda", "kin", "kin_Latn"], + "kir_Cyrl": ["kyrgyz", "kir", "kir_Cyrl"], + "kmb_Latn": ["kimbundu", "kmb", "kmb_Latn"], + "kmr_Latn": ["northern kurdish", "kmr", "kmr_Latn"], + "kon_Latn": ["kikongo", "kon", "kon_Latn"], + "kor_Hang": ["korean", "kor", "kor_Hang"], + "lao_Laoo": ["lao", "lao_Laoo"], + "lij_Latn": ["ligurian", "lij", "lij_Latn"], + "lim_Latn": ["limburgish", "lim", "lim_Latn"], + "lin_Latn": ["lingala", "lin", "lin_Latn"], + "lit_Latn": ["lithuanian", "lit", "lit_Latn"], + "lmo_Latn": ["lombard", "lmo", "lmo_Latn"], + "ltg_Latn": ["latgalian", "ltg", "ltg_Latn"], + "ltz_Latn": ["luxembourgish", "ltz", "ltz_Latn"], + "lua_Latn": ["luba-kasai", "lua", "lua_Latn"], + "lug_Latn": ["ganda", "lug", "lug_Latn"], + "luo_Latn": ["luo", "luo_Latn"], + "lus_Latn": ["mizo", "lus", "lus_Latn"], + "lvs_Latn": ["standard latvian", "lvs", "lvs_Latn"], + "mag_Deva": ["magahi", "mag", "mag_Deva"], + "mai_Deva": ["maithili", "mai", "mai_Deva"], + "mal_Mlym": ["malayalam", "mal", "mal_Mlym"], + "mar_Deva": ["marathi", "mar", "mar_Deva"], + "min_Arab": ["minangkabau", "min", "min_Arab"], + "min_Latn": ["minangkabau", "min", "min_Latn"], + "mkd_Cyrl": ["macedonian", "mkd", "mkd_Cyrl"], + "plt_Latn": ["plateau malagasy", "plt", "plt_Latn"], + "mlt_Latn": ["maltese", "mlt", "mlt_Latn"], + "mni_Beng": ["meitei", "mni", "mni_Beng"], + "khk_Cyrl": ["halh mongolian", "khk", "khk_Cyrl"], + "mos_Latn": ["mossi", "mos", "mos_Latn"], + "mri_Latn": ["maori", "mri", "mri_Latn"], + "mya_Mymr": ["burmese", "mya", "mya_Mymr"], + "nld_Latn": ["dutch", "nld", "nld_Latn"], + "nno_Latn": ["norwegian nynorsk", "nno", "nno_Latn"], + "nob_Latn": ["norwegian bokmål", "nob", "nob_Latn"], + "npi_Deva": ["nepali", "npi", "npi_Deva"], + "nso_Latn": ["northern sotho", "nso", "nso_Latn"], + "nus_Latn": ["nuer", "nus", "nus_Latn"], + "nya_Latn": ["nyanja", "nya", "nya_Latn"], + "oci_Latn": ["occitan", "oci", "oci_Latn"], + "gaz_Latn": ["west central oromo", "gaz", "gaz_Latn"], + "ory_Orya": ["odia", "ory", "ory_Orya"], + "pag_Latn": ["pangasinan", "pag", "pag_Latn"], + "pan_Guru": ["eastern panjabi", "pan", "pan_Guru"], + "pap_Latn": ["papiamento", "pap", "pap_Latn"], + "pes_Arab": ["western persian", "pes", "pes_Arab"], + "pol_Latn": ["polish", "pol", "pol_Latn"], + "por_Latn": ["portuguese", "por", "por_Latn"], + "prs_Arab": ["dari", "prs", "prs_Arab"], + "pbt_Arab": ["southern pashto", "pbt", "pbt_Arab"], + "quy_Latn": ["ayacucho quechua", "quy", "quy_Latn"], + "ron_Latn": ["romanian", "ron", "ron_Latn"], + "run_Latn": ["rundi", "run", "run_Latn"], + "rus_Cyrl": ["russian", "rus", "rus_Cyrl"], + "sag_Latn": ["sango", "sag", "sag_Latn"], + "san_Deva": ["sanskrit", "san", "san_Deva"], + "sat_Olck": ["santali", "sat", "sat_Olck"], + "scn_Latn": ["sicilian", "scn", "scn_Latn"], + "shn_Mymr": ["shan", "shn", "shn_Mymr"], + "sin_Sinh": ["sinhala", "sin", "sin_Sinh"], + "slk_Latn": ["slovak", "slk", "slk_Latn"], + "slv_Latn": ["slovenian", "slv", "slv_Latn"], + "smo_Latn": ["samoan", "smo", "smo_Latn"], + "sna_Latn": ["shona", "sna", "sna_Latn"], + "snd_Arab": ["sindhi", "snd", "snd_Arab"], + "som_Latn": ["somali", "som", "som_Latn"], + "sot_Latn": ["southern sotho", "sot", "sot_Latn"], + "spa_Latn": ["spanish", "spa", "spa_Latn"], + "als_Latn": ["tosk albanian", "als", "als_Latn"], + "srd_Latn": ["sardinian", "srd", "srd_Latn"], + "srp_Cyrl": ["serbian", "srp", "srp_Cyrl"], + "ssw_Latn": ["swati", "ssw", "ssw_Latn"], + "sun_Latn": ["sundanese", "sun", "sun_Latn"], + "swe_Latn": ["swedish", "swe", "swe_Latn"], + "swh_Latn": ["swahili", "swh", "swh_Latn"], + "szl_Latn": ["silesian", "szl", "szl_Latn"], + "tam_Taml": ["tamil", "tam", "tam_Taml"], + "tat_Cyrl": ["tatar", "tat", "tat_Cyrl"], + "tel_Telu": ["telugu", "tel", "tel_Telu"], + "tgk_Cyrl": ["tajik", "tgk", "tgk_Cyrl"], + "tgl_Latn": ["tagalog", "tgl", "tgl_Latn"], + "tha_Thai": ["thai", "tha", "tha_Thai"], + "tir_Ethi": ["tigrinya", "tir", "tir_Ethi"], + "taq_Latn": ["tamasheq", "taq", "taq_Latn"], + "taq_Tfng": ["tamasheq", "taq", "taq_Tfng"], + "tpi_Latn": ["tok pisin", "tpi", "tpi_Latn"], + "tsn_Latn": ["tswana", "tsn", "tsn_Latn"], + "tso_Latn": ["tsonga", "tso", "tso_Latn"], + "tuk_Latn": ["turkmen", "tuk", "tuk_Latn"], + "tum_Latn": ["tumbuka", "tum", "tum_Latn"], + "tur_Latn": ["turkish", "tur", "tur_Latn"], + "twi_Latn": ["twi", "twi_Latn"], + "tzm_Tfng": ["central atlas tamazight", "tzm", "tzm_Tfng"], + "uig_Arab": ["uyghur", "uig", "uig_Arab"], + "ukr_Cyrl": ["ukrainian", "ukr", "ukr_Cyrl"], + "umb_Latn": ["umbundu", "umb", "umb_Latn"], + "urd_Arab": ["urdu", "urd", "urd_Arab"], + "uzn_Latn": ["northern uzbek", "uzn", "uzn_Latn"], + "vec_Latn": ["venetian", "vec", "vec_Latn"], + "vie_Latn": ["vietnamese", "vie", "vie_Latn"], + "war_Latn": ["waray", "war", "war_Latn"], + "wol_Latn": ["wolof", "wol", "wol_Latn"], + "xho_Latn": ["xhosa", "xho", "xho_Latn"], + "ydd_Hebr": ["eastern yiddish", "ydd", "ydd_Hebr"], + "yor_Latn": ["yoruba", "yor", "yor_Latn"], + "yue_Hant": ["yue chinese", "yue", "yue_Hant"], + "zho_Hans": ["chinese", "zho", "zho_Hans"], + "zho_Hant": ["chinese", "zho", "zho_Hant"], + "zsm_Latn": ["standard malay", "zsm", "zsm_Latn"], + "zul_Latn": ["zulu", "zul", "zul_Latn"], + "diq_Latn": ["southern zaza", "diq", "diq_Latn"], + "sat_Beng": ["santali", "sat", "sat_Beng"], +} + +################################## +###### LASER 3 ################### +################################## + +LASER3_LANGUAGES_LIST = [ + "ace_Latn", + "aka_Latn", + "als_Latn", + "amh_Ethi", + "asm_Beng", + "awa_Deva", + "ayr_Latn", + "azb_Arab", + "azj_Latn", + "bak_Cyrl", + "bam_Latn", + "ban_Latn", + "bel_Cyrl", + "bem_Latn", + "ben_Beng", + "bho_Deva", + "bjn_Latn", + "bod_Tibt", + "bug_Latn", + "ceb_Latn", + "cjk_Latn", + "ckb_Arab", + "crh_Latn", + "cym_Latn", + "dik_Latn", + "diq_Latn", + "dyu_Latn", + "dzo_Tibt", + "ewe_Latn", + "fao_Latn", + "fij_Latn", + "fon_Latn", + "fur_Latn", + "fuv_Latn", + "gaz_Latn", + "gla_Latn", + "gle_Latn", + "grn_Latn", + "guj_Gujr", + "hat_Latn", + "hau_Latn", + "hin_Deva", + "hne_Deva", + "hye_Armn", + "ibo_Latn", + "ilo_Latn", + "ind_Latn", + "jav_Latn", + "kab_Latn", + "kac_Latn", + "kam_Latn", + "kan_Knda", + "kas_Arab", + "kas_Deva", + "kat_Geor", + "kaz_Cyrl", + "kbp_Latn", + "kea_Latn", + "khk_Cyrl", + "khm_Khmr", + "kik_Latn", + "kin_Latn", + "kir_Cyrl", + "kmb_Latn", + "kmr_Latn", + "knc_Arab", + "knc_Latn", + "kon_Latn", + "lao_Laoo", + "lij_Latn", + "lim_Latn", + "lin_Latn", + "lmo_Latn", + "ltg_Latn", + "ltz_Latn", + "lua_Latn", + "lug_Latn", + "luo_Latn", + "lus_Latn", + "mag_Deva", + "mai_Deva", + "mal_Mlym", + "mar_Deva", + "min_Latn", + "mlt_Latn", + "mni_Beng", + "mos_Latn", + "mri_Latn", + "mya_Mymr", + "npi_Deva", + "nso_Latn", + "nus_Latn", + "nya_Latn", + "ory_Orya", + "pag_Latn", + "pan_Guru", + "pap_Latn", + "pbt_Arab", + "pes_Arab", + "plt_Latn", + "prs_Arab", + "quy_Latn", + "run_Latn", + "sag_Latn", + "san_Deva", + "sat_Beng", + "scn_Latn", + "shn_Mymr", + "sin_Sinh", + "smo_Latn", + "sna_Latn", + "snd_Arab", + "som_Latn", + "sot_Latn", + "srd_Latn", + "ssw_Latn", + "sun_Latn", + "swh_Latn", + "szl_Latn", + "tam_Taml", + "taq_Latn", + "tat_Cyrl", + "tel_Telu", + "tgk_Cyrl", + "tgl_Latn", + "tha_Thai", + "tir_Ethi", + "tpi_Latn", + "tsn_Latn", + "tso_Latn", + "tuk_Latn", + "tum_Latn", + "tur_Latn", + "twi_Latn", + "tzm_Tfng", + "uig_Arab", + "umb_Latn", + "urd_Arab", + "uzn_Latn", + "vec_Latn", + "war_Latn", + "wol_Latn", + "xho_Latn", + "ydd_Hebr", + "yor_Latn", + "zsm_Latn", + "zul_Latn", +] + + +LASER3_LANGUAGE = build_language_names_dict(LASER3_LANGUAGES_LIST, LANGUAGE_NAMES) + +################################## +###### LASER 2 ################### +################################## + +LASER2_LANGUAGES_LIST = [ + "acm_Arab", + "acq_Arab", + "aeb_Arab", + "afr_Latn", + "ajp_Arab", + "amh_Ethi", + "apc_Arab", + "arb_Arab", + "arb_Latn", + "ars_Arab", + "ary_Arab", + "arz_Arab", + "ayr_Latn", + "azb_Arab", + "azj_Latn", + "bel_Cyrl", + "ben_Beng", + "bos_Latn", + "bul_Cyrl", + "cat_Latn", + "ces_Latn", + "ckb_Arab", + "crh_Latn", + "dan_Latn", + "deu_Latn", + "ell_Grek", + "eng_Latn", + "epo_Latn", + "est_Latn", + "eus_Latn", + "fin_Latn", + "fra_Latn", + "gle_Latn", + "glg_Latn", + "hau_Latn", + "heb_Hebr", + "hin_Deva", + "hrv_Latn", + "hun_Latn", + "hye_Armn", + "ind_Latn", + "isl_Latn", + "ita_Latn", + "jpn_Jpan", + "kab_Latn", + "kat_Geor", + "kaz_Cyrl", + "khm_Khmr", + "kmr_Latn", + "kor_Hang", + "lit_Latn", + "lvs_Latn", + "mal_Mlym", + "mar_Deva", + "mkd_Cyrl", + "plt_Latn", + "mya_Mymr", + "nld_Latn", + "nob_Latn", + "oci_Latn", + "pes_Arab", + "pol_Latn", + "por_Latn", + "ron_Latn", + "rus_Cyrl", + "sin_Sinh", + "slk_Latn", + "slv_Latn", + "snd_Arab", + "som_Latn", + "spa_Latn", + "als_Latn", + "srp_Cyrl", + "swe_Latn", + "swh_Latn", + "tam_Taml", + "tat_Cyrl", + "tel_Telu", + "tgk_Cyrl", + "tgl_Latn", + "tha_Thai", + "tur_Latn", + "uig_Arab", + "ukr_Cyrl", + "urd_Arab", + "uzn_Latn", + "vie_Latn", + "yue_Hant", + "yue_Hant", + "zho_Hans", + "zho_Hant", + "zsm_Latn", +] + + +LASER2_LANGUAGE = build_language_names_dict(LASER2_LANGUAGES_LIST, LANGUAGE_NAMES) diff --git a/laser/laser_encoders/laser_tokenizer.py b/laser/laser_encoders/laser_tokenizer.py new file mode 100644 index 0000000000000000000000000000000000000000..5cbd2a4e91d80ea6c5e251362dd5ea7fb0611b04 --- /dev/null +++ b/laser/laser_encoders/laser_tokenizer.py @@ -0,0 +1,179 @@ +#!/usr/bin/python3 +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# -------------------------------------------------------- +# +# Helper functions for tokenization + +import gzip +import logging +import os +import re +import sys +from pathlib import Path +from typing import IO, List + +import sentencepiece as spm +from sacremoses import MosesDetokenizer, MosesPunctNormalizer +from unicategories import categories + +from laser_encoders.download_models import LaserModelDownloader +from laser_encoders.language_list import LASER2_LANGUAGE, LASER3_LANGUAGE, SPM_LANGUAGE + +SPACE_NORMALIZER = re.compile(r"\s+") +NON_PRINT_CHARS = set(c for c in categories["C"].characters()) + +logging.basicConfig( + stream=sys.stdout, + level=logging.INFO, + format="%(asctime)s | %(levelname)s | %(name)s | %(message)s", +) +logger = logging.getLogger("preprocess") + + +class LaserTokenizer: + def __init__( + self, + spm_model: Path, + lang: str = "en", + lower_case: bool = True, + descape: bool = False, + verbose: bool = False, + over_write: bool = False, + normalize_punct: bool = True, + ): + self.spm_model = spm_model + self.lang = lang + self.lower_case = lower_case + self.descape = descape + self.verbose = verbose + self.over_write = over_write + self.normalize_punct = normalize_punct + + assert spm_model.exists(), f"spm model file: {spm_model} does not exist" + self.moses_punct_normalizer = MosesPunctNormalizer(self.lang, perl_parity=True) + # add parity with MOSES release-4.0 + self.moses_punct_normalizer.substitutions[21] = ("‘", r'"') + self.moses_punct_normalizer.substitutions[22] = ("‚", r'"') + self.moses_detokenizer = MosesDetokenizer() + self.spm_encoder = spm.SentencePieceProcessor(model_file=str(self.spm_model)) + + def open(self, file: Path, mode: str, encoding="utf-8") -> IO: + return ( + gzip.open(file, mode, encoding=encoding) + if file.name.endswith(".gz") + else open(file, mode, encoding=encoding) + ) + + def log(self, message: str) -> None: + if self.verbose: + logger.info(message) + + def tokenize(self, text: str) -> str: + # Preprocessing + sentence_text = "".join([c if c not in NON_PRINT_CHARS else " " for c in text]) + if self.normalize_punct: + sentence_text = self.moses_punct_normalizer.normalize(sentence_text) + if self.descape: + sentence_text = self.moses_detokenizer.unescape_xml(text=sentence_text) + if self.lower_case: + sentence_text = sentence_text.lower() + + # SentencePiece encoding + encoded_text = " ".join(self.spm_encoder.encode(sentence_text, out_type=str)) + return encoded_text + + def tokenize_file(self, inp_fname: Path, out_fname: Path) -> None: + if not self.over_write and out_fname.exists(): + self.log(f"tokenized file {out_fname.name} already exists") + return + else: + self.log( + f"tokenizing {inp_fname.name}" + + f"{' (de-escaped)' if self.descape else ''}" + + f"{' (lower-cased)' if self.lower_case else ' (cased)'} " + + f"(punctuation-normalization lang: {self.lang})" + ) + + with self.open(inp_fname, "rt") as file_in, open( + out_fname, "w" + ) as file_out: + for line in file_in: + tokens = self.tokenize(line.strip()) + file_out.write(tokens + "\n") + + def __call__(self, text_or_batch): + if isinstance(text_or_batch, str): + return self.tokenize(text_or_batch) + else: + return self.tokenize_batch(text_or_batch) + + def tokenize_batch(self, batch: List[str]) -> List[List[str]]: + return [self.tokenize(text) for text in batch] + + def convert_ids_to_tokens(self, ids: List[int]) -> List[str]: + return [self.spm_encoder.DecodeIds(ids) for ids in ids] + + def convert_tokens_to_ids(self, tokens: List[str]) -> List[int]: + ids = [] + + for token in tokens: + # Apply the same tokenization logic as in _tokenize method + tokens = SPACE_NORMALIZER.sub(" ", token).strip().split() + + # Initialize an empty tensor for this token's IDs + token_ids = [] + + for i, token in enumerate(tokens): + token_id = self.spm_encoder.PieceToId(token) + if token_id == 0: # Handle out-of-vocabulary tokens + token_id = self.spm_encoder.PieceToId("") + token_ids.append(token_id) + + # Append token IDs to the final IDs tensor + ids.extend(token_ids) + + return ids + + +def initialize_tokenizer(lang: str = None, model_dir: str = None, laser: str = None): + downloader = LaserModelDownloader(model_dir) + if laser is not None: + if laser == "laser3": + lang = downloader.get_language_code(LASER3_LANGUAGE, lang) + if lang in SPM_LANGUAGE: + filename = f"laser3-{lang}.v1.spm" + else: + filename = "laser2.spm" + elif laser == "laser2": + filename = "laser2.spm" + else: + raise ValueError( + f"Unsupported laser model: {laser}. Choose either laser2 or laser3." + ) + else: + if lang in LASER3_LANGUAGE: + lang = downloader.get_language_code(LASER3_LANGUAGE, lang) + if lang in SPM_LANGUAGE: + filename = f"laser3-{lang}.v1.spm" + else: + filename = "laser2.spm" + elif lang in LASER2_LANGUAGE: + filename = "laser2.spm" + else: + raise ValueError( + f"Unsupported language name: {lang}. Please specify a supported language name." + ) + + downloader.download(filename) + model_path = os.path.join(downloader.model_dir, filename) + return LaserTokenizer(spm_model=Path(model_path)) diff --git a/laser/laser_encoders/models.py b/laser/laser_encoders/models.py new file mode 100644 index 0000000000000000000000000000000000000000..beaa6cbc0103b16fe57b55a2b6bb39c465225b46 --- /dev/null +++ b/laser/laser_encoders/models.py @@ -0,0 +1,426 @@ +#!/usr/bin/python3 +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# -------------------------------------------------------- + + +import logging +import os +import re +import sys +import warnings +from collections import namedtuple +from pathlib import Path + +import numpy as np +import torch +import torch.nn as nn +from fairseq.data.dictionary import Dictionary +from fairseq.models.transformer import Embedding, TransformerEncoder +from fairseq.modules import LayerNorm + +from laser_encoders.download_models import LaserModelDownloader +from laser_encoders.language_list import LASER2_LANGUAGE, LASER3_LANGUAGE +from laser_encoders.laser_tokenizer import LaserTokenizer, initialize_tokenizer + +SPACE_NORMALIZER = re.compile(r"\s+") +Batch = namedtuple("Batch", "srcs tokens lengths") + +logging.basicConfig( + stream=sys.stdout, + level=logging.INFO, + format="%(asctime)s | %(levelname)s | %(name)s | %(message)s", +) +logger = logging.getLogger("embed") + + +class SentenceEncoder: + def __init__( + self, + model_path, + max_sentences=None, + max_tokens=None, + spm_vocab=None, + spm_model=None, + cpu=False, + fp16=False, + verbose=False, + sort_kind="quicksort", + ): + if verbose: + logger.info(f"loading encoder: {model_path}") + self.spm_model = spm_model + if self.spm_model: + self.tokenizer = LaserTokenizer(spm_model=Path(self.spm_model)) + + self.use_cuda = torch.cuda.is_available() and not cpu + self.max_sentences = max_sentences + self.max_tokens = max_tokens + if self.max_tokens is None and self.max_sentences is None: + self.max_sentences = 1 + + state_dict = torch.load(model_path) + if "params" in state_dict: + self.encoder = LaserLstmEncoder(**state_dict["params"]) + self.encoder.load_state_dict(state_dict["model"]) + self.dictionary = state_dict["dictionary"] + self.prepend_bos = False + self.left_padding = False + else: + self.encoder = LaserTransformerEncoder(state_dict, spm_vocab) + self.dictionary = self.encoder.dictionary.indices + self.prepend_bos = state_dict["cfg"]["model"].prepend_bos + self.left_padding = state_dict["cfg"]["model"].left_pad_source + del state_dict + self.bos_index = self.dictionary[""] = 0 + self.pad_index = self.dictionary[""] = 1 + self.eos_index = self.dictionary[""] = 2 + self.unk_index = self.dictionary[""] = 3 + + if fp16: + self.encoder.half() + if self.use_cuda: + if verbose: + logger.info("transfer encoder to GPU") + self.encoder.cuda() + self.encoder.eval() + self.sort_kind = sort_kind + + def __call__(self, text_or_batch): + if self.spm_model: + text_or_batch = self.tokenizer(text_or_batch) + if isinstance(text_or_batch, str): + text_or_batch = [text_or_batch] + return self.encode_sentences(text_or_batch) + else: + raise ValueError( + "Either initialize the encoder with an spm_model or pre-tokenize and use the encode_sentences method." + ) + + def _process_batch(self, batch): + tokens = batch.tokens + lengths = batch.lengths + if self.use_cuda: + tokens = tokens.cuda() + lengths = lengths.cuda() + + with torch.no_grad(): + sentemb = self.encoder(tokens, lengths)["sentemb"] + embeddings = sentemb.detach().cpu().numpy() + return embeddings + + def _tokenize(self, line): + tokens = SPACE_NORMALIZER.sub(" ", line).strip().split() + ntokens = len(tokens) + if self.prepend_bos: + ids = torch.LongTensor(ntokens + 2) + ids[0] = self.bos_index + for i, token in enumerate(tokens): + ids[i + 1] = self.dictionary.get(token, self.unk_index) + ids[ntokens + 1] = self.eos_index + else: + ids = torch.LongTensor(ntokens + 1) + for i, token in enumerate(tokens): + ids[i] = self.dictionary.get(token, self.unk_index) + ids[ntokens] = self.eos_index + return ids + + def _make_batches(self, lines): + tokens = [self._tokenize(line) for line in lines] + lengths = np.array([t.numel() for t in tokens]) + indices = np.argsort(-lengths, kind=self.sort_kind) + + def batch(tokens, lengths, indices): + toks = tokens[0].new_full((len(tokens), tokens[0].shape[0]), self.pad_index) + if not self.left_padding: + for i in range(len(tokens)): + toks[i, : tokens[i].shape[0]] = tokens[i] + else: + for i in range(len(tokens)): + toks[i, -tokens[i].shape[0] :] = tokens[i] + return ( + Batch(srcs=None, tokens=toks, lengths=torch.LongTensor(lengths)), + indices, + ) + + batch_tokens, batch_lengths, batch_indices = [], [], [] + ntokens = nsentences = 0 + for i in indices: + if nsentences > 0 and ( + (self.max_tokens is not None and ntokens + lengths[i] > self.max_tokens) + or (self.max_sentences is not None and nsentences == self.max_sentences) + ): + yield batch(batch_tokens, batch_lengths, batch_indices) + ntokens = nsentences = 0 + batch_tokens, batch_lengths, batch_indices = [], [], [] + batch_tokens.append(tokens[i]) + batch_lengths.append(lengths[i]) + batch_indices.append(i) + ntokens += tokens[i].shape[0] + nsentences += 1 + if nsentences > 0: + yield batch(batch_tokens, batch_lengths, batch_indices) + + def encode_sentences(self, sentences, normalize_embeddings=False): + indices = [] + results = [] + for batch, batch_indices in self._make_batches(sentences): + indices.extend(batch_indices) + encoded_batch = self._process_batch(batch) + if normalize_embeddings: + # Perform L2 normalization on the embeddings + norms = np.linalg.norm(encoded_batch, axis=1, keepdims=True) + encoded_batch = encoded_batch / norms + results.append(encoded_batch) + return np.vstack(results)[np.argsort(indices, kind=self.sort_kind)] + + +class LaserTransformerEncoder(TransformerEncoder): + def __init__(self, state_dict, vocab_path): + self.dictionary = Dictionary.load(vocab_path) + if any( + k in state_dict["model"] + for k in ["encoder.layer_norm.weight", "layer_norm.weight"] + ): + self.dictionary.add_symbol("") + cfg = state_dict["cfg"]["model"] + self.sentemb_criterion = cfg.sentemb_criterion + self.pad_idx = self.dictionary.pad_index + self.bos_idx = self.dictionary.bos_index + embed_tokens = Embedding( + len(self.dictionary), + cfg.encoder_embed_dim, + self.pad_idx, + ) + super().__init__(cfg, self.dictionary, embed_tokens) + if "decoder.version" in state_dict["model"]: + self._remove_decoder_layers(state_dict) + if "layer_norm.weight" in state_dict["model"]: + self.layer_norm = LayerNorm(cfg.encoder_embed_dim) + self.load_state_dict(state_dict["model"]) + + def _remove_decoder_layers(self, state_dict): + for key in list(state_dict["model"].keys()): + if not key.startswith( + ( + "encoder.layer_norm", + "encoder.layers", + "encoder.embed", + "encoder.version", + ) + ): + del state_dict["model"][key] + else: + renamed_key = key.replace("encoder.", "") + state_dict["model"][renamed_key] = state_dict["model"].pop(key) + + def forward(self, src_tokens, src_lengths): + encoder_out = super().forward(src_tokens, src_lengths) + if isinstance(encoder_out, dict): + x = encoder_out["encoder_out"][0] # T x B x C + else: + x = encoder_out[0] + if self.sentemb_criterion == "cls": + cls_indices = src_tokens.eq(self.bos_idx).t() + sentemb = x[cls_indices, :] + else: + padding_mask = src_tokens.eq(self.pad_idx).t().unsqueeze(-1) + if padding_mask.any(): + x = x.float().masked_fill_(padding_mask, float("-inf")).type_as(x) + sentemb = x.max(dim=0)[0] + return {"sentemb": sentemb} + + +class LaserLstmEncoder(nn.Module): + def __init__( + self, + num_embeddings, + padding_idx, + embed_dim=320, + hidden_size=512, + num_layers=1, + bidirectional=False, + left_pad=True, + padding_value=0.0, + ): + super().__init__() + + self.num_layers = num_layers + self.bidirectional = bidirectional + self.hidden_size = hidden_size + + self.padding_idx = padding_idx + self.embed_tokens = nn.Embedding( + num_embeddings, embed_dim, padding_idx=self.padding_idx + ) + + self.lstm = nn.LSTM( + input_size=embed_dim, + hidden_size=hidden_size, + num_layers=num_layers, + bidirectional=bidirectional, + ) + self.left_pad = left_pad + self.padding_value = padding_value + + self.output_units = hidden_size + if bidirectional: + self.output_units *= 2 + + def forward(self, src_tokens, src_lengths): + bsz, seqlen = src_tokens.size() + + # embed tokens + x = self.embed_tokens(src_tokens) + + # B x T x C -> T x B x C + x = x.transpose(0, 1) + + # pack embedded source tokens into a PackedSequence + packed_x = nn.utils.rnn.pack_padded_sequence(x, src_lengths.data.tolist()) + + # apply LSTM + if self.bidirectional: + state_size = 2 * self.num_layers, bsz, self.hidden_size + else: + state_size = self.num_layers, bsz, self.hidden_size + h0 = x.data.new(*state_size).zero_() + c0 = x.data.new(*state_size).zero_() + packed_outs, (final_hiddens, final_cells) = self.lstm(packed_x, (h0, c0)) + + # unpack outputs and apply dropout + x, _ = nn.utils.rnn.pad_packed_sequence( + packed_outs, padding_value=self.padding_value + ) + assert list(x.size()) == [seqlen, bsz, self.output_units] + + if self.bidirectional: + + def combine_bidir(outs): + return torch.cat( + [ + torch.cat([outs[2 * i], outs[2 * i + 1]], dim=0).view( + 1, bsz, self.output_units + ) + for i in range(self.num_layers) + ], + dim=0, + ) + + final_hiddens = combine_bidir(final_hiddens) + final_cells = combine_bidir(final_cells) + + encoder_padding_mask = src_tokens.eq(self.padding_idx).t() + + # Set padded outputs to -inf so they are not selected by max-pooling + padding_mask = src_tokens.eq(self.padding_idx).t().unsqueeze(-1) + if padding_mask.any(): + x = x.float().masked_fill_(padding_mask, float("-inf")).type_as(x) + + # Build the sentence embedding by max-pooling over the encoder outputs + sentemb = x.max(dim=0)[0] + + return { + "sentemb": sentemb, + "encoder_out": (x, final_hiddens, final_cells), + "encoder_padding_mask": encoder_padding_mask + if encoder_padding_mask.any() + else None, + } + + +def initialize_encoder( + lang: str = None, + model_dir: str = None, + spm: bool = True, + laser: str = None, +): + downloader = LaserModelDownloader(model_dir) + if laser is not None: + if laser == "laser3": + lang = downloader.get_language_code(LASER3_LANGUAGE, lang) + downloader.download_laser3(lang=lang, spm=spm) + file_path = f"laser3-{lang}.v1" + elif laser == "laser2": + downloader.download_laser2() + file_path = "laser2" + else: + raise ValueError( + f"Unsupported laser model: {laser}. Choose either laser2 or laser3." + ) + else: + if lang in LASER3_LANGUAGE: + lang = downloader.get_language_code(LASER3_LANGUAGE, lang) + downloader.download_laser3(lang=lang, spm=spm) + file_path = f"laser3-{lang}.v1" + elif lang in LASER2_LANGUAGE: + downloader.download_laser2() + file_path = "laser2" + else: + raise ValueError( + f"Unsupported language name: {lang}. Please specify a supported language name." + ) + + model_dir = downloader.model_dir + model_path = os.path.join(model_dir, f"{file_path}.pt") + spm_vocab = os.path.join(model_dir, f"{file_path}.cvocab") + + if not os.path.exists(spm_vocab): + # if there is no cvocab for the laser3 lang use laser2 cvocab + spm_vocab = os.path.join(model_dir, "laser2.cvocab") + + return SentenceEncoder(model_path=model_path, spm_vocab=spm_vocab, spm_model=None) + + +class LaserEncoderPipeline: + def __init__( + self, + lang: str = None, + model_dir: str = None, + spm: bool = True, + laser: str = None, + ): + + if laser == "laser2" and lang is not None: + warnings.warn( + "Warning: The 'lang' parameter is optional when using 'laser2'. It will be ignored." + ) + + if laser == "laser3" and lang is None: + raise ValueError("For 'laser3', the 'lang' parameter is required.") + + if laser is None and lang is None: + raise ValueError("Either 'laser' or 'lang' should be provided.") + + self.tokenizer = initialize_tokenizer( + lang=lang, model_dir=model_dir, laser=laser + ) + self.encoder = initialize_encoder( + lang=lang, model_dir=model_dir, spm=spm, laser=laser + ) + + def encode_sentences( + self, sentences: list, normalize_embeddings: bool = False + ) -> list: + """ + Tokenizes and encodes a list of sentences. + + Args: + - sentences (list of str): List of sentences to tokenize and encode. + + Returns: + - List of embeddings for each sentence. + """ + tokenized_sentences = [ + self.tokenizer.tokenize(sentence) for sentence in sentences + ] + return self.encoder.encode_sentences(tokenized_sentences, normalize_embeddings) diff --git a/laser/laser_encoders/test_laser_tokenizer.py b/laser/laser_encoders/test_laser_tokenizer.py new file mode 100644 index 0000000000000000000000000000000000000000..78a3aadddcdcb557de1722268a6880d22b843102 --- /dev/null +++ b/laser/laser_encoders/test_laser_tokenizer.py @@ -0,0 +1,310 @@ +#!/usr/bin/python3 +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# -------------------------------------------------------- +# Tests for LaserTokenizer + +import os +import warnings +from pathlib import Path +from tempfile import TemporaryDirectory +from typing import List + +import numpy as np +import pytest + +from laser_encoders import ( + LaserEncoderPipeline, + initialize_encoder, + initialize_tokenizer, +) + + +@pytest.fixture +def tokenizer(tmp_path: Path): + tokenizer_instance = initialize_tokenizer(model_dir=tmp_path, laser="laser2") + return tokenizer_instance + + +@pytest.fixture +def input_text() -> str: + return "This is a test sentence." + + +@pytest.fixture +def test_readme_params() -> dict: + return { + "lang": "igbo", + "input_sentences": ["nnọọ, kedu ka ị mere"], + "expected_embedding_shape": (1, 1024), + "expected_array": [ + 0.3807628, + -0.27941525, + -0.17819545, + 0.44144684, + -0.38985375, + 0.04719935, + 0.20238206, + -0.03934783, + 0.0118901, + 0.28986093, + ], + } + + +def test_tokenize(tokenizer, input_text: str): + expected_output = "▁this ▁is ▁a ▁test ▁sent ence ." + assert tokenizer.tokenize(input_text) == expected_output + + +def test_tokenizer_call_method(tokenizer, input_text: str): + single_string = "This is a test sentence." + expected_output = "▁this ▁is ▁a ▁test ▁sent ence ." + assert tokenizer(single_string) == expected_output + + list_of_strings = ["This is a test sentence.", "This is another test sentence."] + expected_output = [ + "▁this ▁is ▁a ▁test ▁sent ence .", + "▁this ▁is ▁another ▁test ▁sent ence .", + ] + assert tokenizer(list_of_strings) == expected_output + + +def test_normalization(tokenizer): + test_data = "Hello!!! How are you??? I'm doing great." + expected_output = "▁hel lo !!! ▁how ▁are ▁you ??? ▁i ' m ▁do ing ▁great ." + assert tokenizer.tokenize(test_data) == expected_output + + +def test_descape(tokenizer): + test_data = "I <3 Apple & Carrots!" + expected_output = "▁i ▁<3 ▁app le ▁& ▁car ro ts !" + tokenizer.descape = True + assert tokenizer.tokenize(test_data) == expected_output + + +def test_lowercase(tokenizer): + test_data = "THIS OUTPUT MUST BE UPPERCASE" + expected_output = "▁TH IS ▁ OU TP UT ▁ MU ST ▁BE ▁ UP PER CA SE" + tokenizer.lower_case = False + assert tokenizer.tokenize(test_data) == expected_output + + +def test_is_printable(tokenizer): + test_data = "Hello, \tWorld! ABC\x1f123" + expected_output = "▁hel lo , ▁world ! ▁ab c ▁12 3" + assert tokenizer.tokenize(test_data) == expected_output + + +def test_tokenize_file(tokenizer, input_text: str): + with TemporaryDirectory() as temp_dir: + input_file = os.path.join(temp_dir, "input.txt") + output_file = os.path.join(temp_dir, "output.txt") + + with open(input_file, "w") as file: + file.write(input_text) + + tokenizer.tokenize_file( + inp_fname=Path(input_file), + out_fname=Path(output_file), + ) + + with open(output_file, "r") as file: + output = file.read().strip() + + expected_output = "▁this ▁is ▁a ▁test ▁sent ence ." + assert output == expected_output + + +def test_tokenize_file_overwrite(tokenizer, input_text: str): + with TemporaryDirectory() as temp_dir: + input_file = os.path.join(temp_dir, "input.txt") + output_file = os.path.join(temp_dir, "output.txt") + + with open(input_file, "w") as file: + file.write(input_text) + + with open(output_file, "w") as file: + file.write("Existing output") + + # Test when over_write is False + tokenizer.over_write = False + tokenizer.tokenize_file( + inp_fname=Path(input_file), + out_fname=Path(output_file), + ) + + with open(output_file, "r") as file: + output = file.read().strip() + + assert output == "Existing output" + + # Test when over_write is True + tokenizer.over_write = True + tokenizer.tokenize_file( + inp_fname=Path(input_file), + out_fname=Path(output_file), + ) + + with open(output_file, "r") as file: + output = file.read().strip() + + expected_output = "▁this ▁is ▁a ▁test ▁sent ence ." + assert output == expected_output + + +@pytest.mark.parametrize( + "laser, expected_array, lang", + [ + ( + "laser2", + [ + 1.042462512850761414e-02, + 6.325428839772939682e-03, + -3.032622225873637944e-05, + 9.033476933836936951e-03, + 2.937933895736932755e-04, + 4.489220678806304932e-03, + 2.334521152079105377e-03, + -9.427300537936389446e-04, + -1.571535394759848714e-04, + 2.095808042213320732e-03, + ], + None, + ), + ( + "laser3", + [ + 3.038274645805358887e-01, + 4.151830971240997314e-01, + -2.458990514278411865e-01, + 3.153458833694458008e-01, + -5.153598189353942871e-01, + -6.035178527235984802e-02, + 2.210616767406463623e-01, + -2.701394855976104736e-01, + -4.902199506759643555e-01, + -3.126966953277587891e-02, + ], + "zul_Latn", + ), + ], +) +def test_sentence_encoder( + tmp_path: Path, + tokenizer, + laser: str, + expected_array: List, + lang: str, + input_text: str, +): + sentence_encoder = initialize_encoder(model_dir=tmp_path, laser=laser, lang=lang) + tokenized_text = tokenizer.tokenize(input_text) + sentence_embedding = sentence_encoder.encode_sentences([tokenized_text]) + + assert isinstance(sentence_embedding, np.ndarray) + assert sentence_embedding.shape == (1, 1024) + assert np.allclose(expected_array, sentence_embedding[:, :10], atol=1e-3) + + +def test_laser_encoder_pipeline(tmp_path: Path, test_readme_params: dict): + lang = test_readme_params["lang"] + input_sentences = test_readme_params["input_sentences"] + expected_embedding_shape = test_readme_params["expected_embedding_shape"] + expected_array = test_readme_params["expected_array"] + + encoder = LaserEncoderPipeline(model_dir=tmp_path, lang=lang) + embeddings = encoder.encode_sentences(input_sentences) + + assert isinstance(embeddings, np.ndarray) + assert embeddings.shape == expected_embedding_shape + assert np.allclose(expected_array, embeddings[:, :10], atol=1e-3) + + +def test_separate_initialization_and_encoding( + tmp_path, tokenizer, test_readme_params: dict +): + lang = test_readme_params["lang"] + input_sentences = test_readme_params["input_sentences"] + expected_embedding_shape = test_readme_params["expected_embedding_shape"] + expected_array = test_readme_params["expected_array"] + + tokenized_sentence = tokenizer.tokenize(input_sentences[0]) + sentence_encoder = initialize_encoder(model_dir=tmp_path, lang=lang) + + # Encode tokenized sentences into embeddings + embeddings = sentence_encoder.encode_sentences([tokenized_sentence]) + + assert isinstance(embeddings, np.ndarray) + assert embeddings.shape == expected_embedding_shape + assert np.allclose(expected_array, embeddings[:, :10], atol=1e-3) + + +def test_encoder_normalization(tmp_path: Path, test_readme_params: dict): + lang = test_readme_params["lang"] + input_sentences = test_readme_params["input_sentences"] + + encoder = LaserEncoderPipeline(model_dir=tmp_path, lang=lang) + normalized_embeddings = encoder.encode_sentences( + input_sentences, normalize_embeddings=True + ) + norm = np.linalg.norm(normalized_embeddings[0]) + + assert np.allclose(norm, 1.0, atol=1e-3) + + +def test_encoder_default_behaviour(tmp_path: Path, test_readme_params: dict): + lang = test_readme_params["lang"] + input_sentences = test_readme_params["input_sentences"] + + encoder = LaserEncoderPipeline(model_dir=tmp_path, lang=lang) + default_embeddings = encoder.encode_sentences(input_sentences) + non_normalized_embeddings = encoder.encode_sentences( + input_sentences, normalize_embeddings=False + ) + + assert np.allclose(default_embeddings, non_normalized_embeddings) + + +def test_encoder_non_normalization(tmp_path: Path, test_readme_params: dict): + lang = test_readme_params["lang"] + input_sentences = test_readme_params["input_sentences"] + + encoder = LaserEncoderPipeline(model_dir=tmp_path, lang=lang) + non_normalized_embeddings = encoder.encode_sentences( + input_sentences, normalize_embeddings=False + ) + norm = np.linalg.norm(non_normalized_embeddings[0]) + + assert not np.isclose(norm, 1) + + +def test_optional_lang_with_laser2(tmp_path: Path): + with pytest.warns( + UserWarning, + match="The 'lang' parameter is optional when using 'laser2'. It will be ignored.", + ): + encoder = LaserEncoderPipeline(lang="en", laser="laser2", model_dir=tmp_path) + + +def test_required_lang_with_laser3(tmp_path: Path): + with pytest.raises( + ValueError, match="For 'laser3', the 'lang' parameter is required." + ): + encoder = LaserEncoderPipeline(laser="laser3", model_dir=tmp_path) + + +def test_missing_lang_and_laser(tmp_path: Path): + with pytest.raises( + ValueError, match="Either 'laser' or 'lang' should be provided." + ): + encoder = LaserEncoderPipeline(model_dir=tmp_path) diff --git a/laser/laser_encoders/test_models_initialization.py b/laser/laser_encoders/test_models_initialization.py new file mode 100644 index 0000000000000000000000000000000000000000..88e898fadef17a6850814f9005628ea806914d90 --- /dev/null +++ b/laser/laser_encoders/test_models_initialization.py @@ -0,0 +1,57 @@ +import os +import tempfile + +import pytest + +from laser_encoders.download_models import LaserModelDownloader +from laser_encoders.language_list import LASER2_LANGUAGE, LASER3_LANGUAGE +from laser_encoders.laser_tokenizer import initialize_tokenizer +from laser_encoders.models import initialize_encoder + + +def test_validate_achnese_models_and_tokenize_laser3(lang="acehnese"): + with tempfile.TemporaryDirectory() as tmp_dir: + print(f"Created temporary directory for {lang}", tmp_dir) + + downloader = LaserModelDownloader(model_dir=tmp_dir) + downloader.download_laser3(lang) + encoder = initialize_encoder(lang, model_dir=tmp_dir) + tokenizer = initialize_tokenizer(lang, model_dir=tmp_dir) + + # Test tokenization with a sample sentence + tokenized = tokenizer.tokenize("This is a sample sentence.") + + print(f"{lang} model validated successfully") + + +def test_validate_english_models_and_tokenize_laser2(lang="english"): + with tempfile.TemporaryDirectory() as tmp_dir: + print(f"Created temporary directory for {lang}", tmp_dir) + + downloader = LaserModelDownloader(model_dir=tmp_dir) + downloader.download_laser2() + + encoder = initialize_encoder(lang, model_dir=tmp_dir) + tokenizer = initialize_tokenizer(lang, model_dir=tmp_dir) + + # Test tokenization with a sample sentence + tokenized = tokenizer.tokenize("This is a sample sentence.") + + print(f"{lang} model validated successfully") + + +def test_validate_kashmiri_models_and_tokenize_laser3(lang="kas"): + with tempfile.TemporaryDirectory() as tmp_dir: + print(f"Created temporary directory for {lang}", tmp_dir) + + downloader = LaserModelDownloader(model_dir=tmp_dir) + with pytest.raises(ValueError): + downloader.download_laser3(lang) + + encoder = initialize_encoder(lang, model_dir=tmp_dir) + tokenizer = initialize_tokenizer(lang, model_dir=tmp_dir) + + # Test tokenization with a sample sentence + tokenized = tokenizer.tokenize("This is a sample sentence.") + + print(f"{lang} model validated successfully") diff --git a/laser/laser_encoders/validate_models.py b/laser/laser_encoders/validate_models.py new file mode 100644 index 0000000000000000000000000000000000000000..0748dfee704932b659d23468faf461efea8d8b97 --- /dev/null +++ b/laser/laser_encoders/validate_models.py @@ -0,0 +1,108 @@ +import os +import tempfile + +import pytest + +from laser_encoders.download_models import LaserModelDownloader +from laser_encoders.language_list import LASER2_LANGUAGE, LASER3_LANGUAGE +from laser_encoders.laser_tokenizer import initialize_tokenizer +from laser_encoders.models import initialize_encoder + + +@pytest.mark.slow +@pytest.mark.parametrize("lang", LASER3_LANGUAGE) +def test_validate_language_models_and_tokenize_laser3(lang): + with tempfile.TemporaryDirectory() as tmp_dir: + print(f"Created temporary directory for {lang}", tmp_dir) + + downloader = LaserModelDownloader(model_dir=tmp_dir) + if lang in ["kashmiri", "kas", "central kanuri", "knc"]: + with pytest.raises(ValueError) as excinfo: + downloader.download_laser3(lang) + assert "ValueError" in str(excinfo.value) + print(f"{lang} language model raised a ValueError as expected.") + else: + downloader.download_laser3(lang) + encoder = initialize_encoder(lang, model_dir=tmp_dir) + tokenizer = initialize_tokenizer(lang, model_dir=tmp_dir) + + # Test tokenization with a sample sentence + tokenized = tokenizer.tokenize("This is a sample sentence.") + + print(f"{lang} model validated successfully") + + +@pytest.mark.slow +@pytest.mark.parametrize("lang", LASER2_LANGUAGE) +def test_validate_language_models_and_tokenize_laser2(lang): + with tempfile.TemporaryDirectory() as tmp_dir: + print(f"Created temporary directory for {lang}", tmp_dir) + + downloader = LaserModelDownloader(model_dir=tmp_dir) + downloader.download_laser2() + + encoder = initialize_encoder(lang, model_dir=tmp_dir) + tokenizer = initialize_tokenizer(lang, model_dir=tmp_dir) + + # Test tokenization with a sample sentence + tokenized = tokenizer.tokenize("This is a sample sentence.") + + print(f"{lang} model validated successfully") + + +class MockLaserModelDownloader(LaserModelDownloader): + def __init__(self, model_dir): + self.model_dir = model_dir + + def download_laser3(self, lang): + lang = self.get_language_code(LASER3_LANGUAGE, lang) + file_path = os.path.join(self.model_dir, f"laser3-{lang}.v1.pt") + if not os.path.exists(file_path): + raise FileNotFoundError(f"Could not find {file_path}.") + + def download_laser2(self): + files = ["laser2.pt", "laser2.spm", "laser2.cvocab"] + for file_name in files: + file_path = os.path.join(self.model_dir, file_name) + if not os.path.exists(file_path): + raise FileNotFoundError(f"Could not find {file_path}.") + + +CACHE_DIR = "/home/user/.cache/models" # Change this to the desired cache directory + +# This uses the mock downloader +@pytest.mark.slow +@pytest.mark.parametrize("lang", LASER3_LANGUAGE) +def test_validate_language_models_and_tokenize_mock_laser3(lang): + downloader = MockLaserModelDownloader(model_dir=CACHE_DIR) + + try: + downloader.download_laser3(lang) + except FileNotFoundError as e: + raise pytest.error(str(e)) + + encoder = initialize_encoder(lang, model_dir=CACHE_DIR) + tokenizer = initialize_tokenizer(lang, model_dir=CACHE_DIR) + + tokenized = tokenizer.tokenize("This is a sample sentence.") + + print(f"{lang} model validated successfully") + + +# This uses the mock downloader +@pytest.mark.slow +@pytest.mark.parametrize("lang", LASER2_LANGUAGE) +def test_validate_language_models_and_tokenize_mock_laser2(lang): + downloader = MockLaserModelDownloader(model_dir=CACHE_DIR) + + try: + downloader.download_laser2() + except FileNotFoundError as e: + raise pytest.error(str(e)) + + encoder = initialize_encoder(lang, model_dir=CACHE_DIR) + tokenizer = initialize_tokenizer(lang, model_dir=CACHE_DIR) + + tokenized = tokenizer.tokenize("This is a sample sentence.") + + print(f"{lang} model validated successfully") diff --git a/laser/pyproject.toml b/laser/pyproject.toml new file mode 100644 index 0000000000000000000000000000000000000000..fc8243301d4f66912e779b53ccf07b799f0de3cf --- /dev/null +++ b/laser/pyproject.toml @@ -0,0 +1,69 @@ +[build-system] +requires = ["flit_core >=3.2,<4", "setuptools"] +build-backend = "flit_core.buildapi" + +[project] +name = "laser_encoders" +version = "0.0.2" +authors = [{name = "Facebook AI Research"}] +description = "LASER Language-Agnostic SEntence Representations is a toolkit to calculate multilingual sentence embeddings and to use them for document classification, bitext filtering and mining" +readme = "laser_encoders/README.md" +requires-python = ">=3.8" + +dependencies = [ + 'sacremoses==0.1.0', + 'unicategories>=0.1.2', + 'sentencepiece>=0.1.99', + 'numpy>=1.21.3', + 'torch>=1.10.0', + 'fairseq>=0.12.2', +] + +classifiers=[ + "License :: OSI Approved :: BSD License", + "Topic :: Scientific/Engineering", + "Development Status :: 4 - Beta", +] + +[project.urls] +"Homepage" = "https://github.com/facebookresearch/LASER" +"Bug Tracker" = "https://github.com/facebookresearch/LASER/issues" + +[project.optional-dependencies] + dev = [ + # Test + "pytest>=4.3.0", + # Format + "black==22.3.0", + "isort>=5.10.1", + # Linters + "mypy>=0.782", + "pylint>=2.8.0", + # Release + "flit>=3.5.1" + ] + +[tool.black] +# Black defaults are great ! + +[tool.isort] +profile = "black" +skip_gitignore = true +skip_glob = ["website/*", "*.pyx"] + +[tool.mypy] +python_version = "3.8" +show_error_codes = true +check_untyped_defs = true + +ignore_missing_imports = true + +files = [ + "laser_encoders/" +] + +[tool.pytest.ini_options] +testpaths = ["laser_encoders"] +python_files = [ + "test_*.py", +] \ No newline at end of file diff --git a/laser/remove_external_tools.sh b/laser/remove_external_tools.sh new file mode 100755 index 0000000000000000000000000000000000000000..7a96d8098b20cf2b3dcdd7df3ba1d7c33ca3538b --- /dev/null +++ b/laser/remove_external_tools.sh @@ -0,0 +1,26 @@ +#!/bin/bash +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +#------------------------------------------------------- +# +# This bash script removes all installed third party software +# + +if [ -z ${LASER+x} ] ; then + echo "Please set the environment variable 'LASER'" + exit +fi + +bdir="${LASER}" +tools_ext="${bdir}/tools-external" + +/bin/rm -rf ${tools_ext} diff --git a/laser/source/embed.py b/laser/source/embed.py new file mode 100644 index 0000000000000000000000000000000000000000..9260a27c03ced00c1c588e01e8f6df50a55601ae --- /dev/null +++ b/laser/source/embed.py @@ -0,0 +1,362 @@ +#!/usr/bin/python3 +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# -------------------------------------------------------- +# +# Tool to calculate to embed a text file +# The functions can be also imported into another Python code + + +import argparse +import logging +import os +import re +import sys +import tempfile +import time +from collections import namedtuple +from pathlib import Path +from subprocess import run +from typing import Optional, Union + +assert os.environ.get("LASER"), "Please set the environment variable LASER" +LASER = os.environ["LASER"] +sys.path.append(LASER) + +import numpy as np +from lib.text_processing import BPEfastApply, SPMApply, Token +from laser_encoders.models import SentenceEncoder + +SPACE_NORMALIZER = re.compile(r"\s+") +Batch = namedtuple("Batch", "srcs tokens lengths") + +logging.basicConfig( + stream=sys.stdout, + level=logging.INFO, + format="%(asctime)s | %(levelname)s | %(name)s | %(message)s", +) +logger = logging.getLogger("embed") + + +def buffered_read(fp, buffer_size): + buffer = [] + for src_str in fp: + buffer.append(src_str.strip()) + if len(buffer) >= buffer_size: + yield buffer + buffer = [] + + if len(buffer) > 0: + yield buffer + + +class HuggingFaceEncoder: + def __init__(self, encoder_name: str, verbose=False): + from sentence_transformers import SentenceTransformer + + encoder = f"sentence-transformers/{encoder_name}" + if verbose: + logger.info(f"loading HuggingFace encoder: {encoder}") + self.encoder = SentenceTransformer(encoder) + + def encode_sentences(self, sentences): + return self.encoder.encode(sentences) + + +def load_model( + encoder: str, + spm_model: str, + bpe_codes: str, + hugging_face=False, + verbose=False, + **encoder_kwargs, +) -> Union[SentenceEncoder, HuggingFaceEncoder]: + if hugging_face: + return HuggingFaceEncoder(encoder, verbose=verbose) + if spm_model: + spm_vocab = str(Path(spm_model).with_suffix(".cvocab")) + if verbose: + logger.info(f"spm_model: {spm_model}") + logger.info(f"spm_cvocab: {spm_vocab}") + else: + spm_vocab = None + return SentenceEncoder( + encoder, spm_vocab=spm_vocab, verbose=verbose, **encoder_kwargs + ) + + +def EncodeLoad(args): + args.buffer_size = max(args.buffer_size, 1) + assert ( + not args.max_sentences or args.max_sentences <= args.buffer_size + ), "--max-sentences/--batch-size cannot be larger than --buffer-size" + + print(" - loading encoder", args.encoder) + return SentenceEncoder( + args.encoder, + max_sentences=args.max_sentences, + max_tokens=args.max_tokens, + cpu=args.cpu, + verbose=args.verbose, + ) + + +def EncodeTime(t): + t = int(time.time() - t) + if t < 1000: + return "{:d}s".format(t) + else: + return "{:d}m{:d}s".format(t // 60, t % 60) + + +# Encode sentences (existing file pointers) +def EncodeFilep( + encoder, inp_file, out_file, buffer_size=10000, fp16=False, verbose=False +): + n = 0 + t = time.time() + for sentences in buffered_read(inp_file, buffer_size): + encoded = encoder.encode_sentences(sentences) + if fp16: + encoded = encoded.astype(np.float16) + encoded.tofile(out_file) + n += len(sentences) + if verbose and n % 10000 == 0: + logger.info("encoded {:d} sentences".format(n)) + if verbose: + logger.info(f"encoded {n} sentences in {EncodeTime(t)}") + + +# Encode sentences (file names) +def EncodeFile( + encoder, + inp_fname, + out_fname, + buffer_size=10000, + fp16=False, + verbose=False, + over_write=False, + inp_encoding="utf-8", +): + # TODO :handle over write + if not os.path.isfile(out_fname): + if verbose: + logger.info( + "encoding {} to {}".format( + inp_fname if len(inp_fname) > 0 else "stdin", + out_fname, + ) + ) + fin = ( + open(inp_fname, "r", encoding=inp_encoding, errors="surrogateescape") + if len(inp_fname) > 0 + else sys.stdin + ) + fout = open(out_fname, mode="wb") + EncodeFilep( + encoder, fin, fout, buffer_size=buffer_size, fp16=fp16, verbose=verbose + ) + fin.close() + fout.close() + elif not over_write and verbose: + logger.info("encoder: {} exists already".format(os.path.basename(out_fname))) + + +# Load existing embeddings +def EmbedLoad(fname, dim=1024, verbose=False, fp16=False): + x = np.fromfile(fname, dtype=(np.float16 if fp16 else np.float32), count=-1) + x.resize(x.shape[0] // dim, dim) + if verbose: + print(" - Embeddings: {:s}, {:d}x{:d}".format(fname, x.shape[0], dim)) + return x + + +# Get memory mapped embeddings +def EmbedMmap(fname, dim=1024, dtype=np.float32, verbose=False): + nbex = int(os.path.getsize(fname) / dim / np.dtype(dtype).itemsize) + E = np.memmap(fname, mode="r", dtype=dtype, shape=(nbex, dim)) + if verbose: + print(" - embeddings on disk: {:s} {:d} x {:d}".format(fname, nbex, dim)) + return E + + +def embed_sentences( + ifname: str, + output: str, + encoder: Union[SentenceEncoder, HuggingFaceEncoder] = None, + encoder_path: str = None, + hugging_face=False, + token_lang: Optional[str] = "--", + bpe_codes: Optional[str] = None, + spm_lang: Optional[str] = "en", + spm_model: Optional[str] = None, + verbose: bool = False, + buffer_size: int = 10000, + max_tokens: int = 12000, + max_sentences: Optional[int] = None, + cpu: bool = False, + fp16: bool = False, + sort_kind: str = "quicksort", +): + assert encoder or encoder_path, "Provide initialised encoder or encoder_path" + buffer_size = max(buffer_size, 1) + assert ( + not max_sentences or max_sentences <= buffer_size + ), "--max-sentences/--batch-size cannot be larger than --buffer-size" + + assert not (bpe_codes and spm_model), "Cannot specify both spm and bpe" + + if encoder_path: + encoder = load_model( + encoder_path, + spm_model, + bpe_codes, + verbose=verbose, + hugging_face=hugging_face, + max_sentences=max_sentences, + max_tokens=max_tokens, + sort_kind=sort_kind, + cpu=cpu, + ) + if not ifname: + ifname = "" # default to stdin + with tempfile.TemporaryDirectory() as tmpdir: + if token_lang != "--": + tok_fname = os.path.join(tmpdir, "tok") + Token( + ifname, + tok_fname, + lang=token_lang, + romanize=True if token_lang == "el" else False, + lower_case=True, + gzip=False, + verbose=verbose, + over_write=False, + ) + ifname = tok_fname + + if bpe_codes: + if ifname == "": # stdin + ifname = os.path.join(tmpdir, "no_tok") + run(f"cat > {ifname}", shell=True) + bpe_fname = os.path.join(tmpdir, "bpe") + BPEfastApply( + ifname, bpe_fname, bpe_codes, verbose=verbose, over_write=False + ) + ifname = bpe_fname + + if spm_model: + spm_fname = os.path.join(tmpdir, "spm") + SPMApply( + ifname, + spm_fname, + spm_model, + lang=spm_lang, + lower_case=True, + verbose=verbose, + over_write=False, + ) + ifname = spm_fname + + EncodeFile( + encoder, + ifname, + output, + verbose=verbose, + over_write=False, + buffer_size=buffer_size, + fp16=fp16, + ) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="LASER: Embed sentences") + parser.add_argument( + "-i", + "--input", + type=str, + default=None, + help="Input text file", + ) + parser.add_argument("--encoder", type=str, required=True, help="encoder to be used") + parser.add_argument( + "--token-lang", + type=str, + default="--", + help="Perform tokenization with given language ('--' for no tokenization)", + ) + parser.add_argument( + "--bpe-codes", type=str, default=None, help="Apply BPE using specified codes" + ) + parser.add_argument( + "--spm-lang", type=str, default="en", help="Apply SPM using specified language" + ) + parser.add_argument( + "--spm-model", type=str, default=None, help="Apply SPM using specified model" + ) + parser.add_argument("-v", "--verbose", action="store_true", help="Detailed output") + + parser.add_argument( + "-o", "--output", required=True, help="Output sentence embeddings" + ) + parser.add_argument( + "--buffer-size", type=int, default=10000, help="Buffer size (sentences)" + ) + parser.add_argument( + "--max-tokens", + type=int, + default=12000, + help="Maximum number of tokens to process in a batch", + ) + parser.add_argument( + "--max-sentences", + type=int, + default=None, + help="Maximum number of sentences to process in a batch", + ) + parser.add_argument( + "--fp16", + action="store_true", + help="Store embedding matrices in fp16 instead of fp32", + ) + parser.add_argument("--cpu", action="store_true", help="Use CPU instead of GPU") + parser.add_argument( + "--sort-kind", + type=str, + default="quicksort", + choices=["quicksort", "mergesort"], + help="Algorithm used to sort batch by length", + ) + parser.add_argument( + "--use-hugging-face", + action="store_true", + help="Use a HuggingFace sentence transformer", + ) + + args = parser.parse_args() + embed_sentences( + ifname=args.input, + encoder_path=args.encoder, + token_lang=args.token_lang, + bpe_codes=args.bpe_codes, + spm_lang=args.spm_lang, + hugging_face=args.use_hugging_face, + spm_model=args.spm_model, + verbose=args.verbose, + output=args.output, + buffer_size=args.buffer_size, + max_tokens=args.max_tokens, + max_sentences=args.max_sentences, + cpu=args.cpu, + fp16=args.fp16, + sort_kind=args.sort_kind, + ) diff --git a/laser/source/eval.py b/laser/source/eval.py new file mode 100644 index 0000000000000000000000000000000000000000..2beb5f9c732fba1a5eefe72902828346e33d1e99 --- /dev/null +++ b/laser/source/eval.py @@ -0,0 +1,381 @@ +#!/usr/bin/python3 +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# -------------------------------------------------------- +# +# Tool to calculate multilingual similarity error rate +# on various predefined test sets + + +import os +import argparse +import pandas +import tempfile +import numpy as np +from pathlib import Path +import itertools +import logging +import sys +from typing import List, Tuple, Dict +from tabulate import tabulate +from collections import defaultdict +from xsim import xSIM +from embed import embed_sentences, load_model + +logging.basicConfig( + stream=sys.stdout, + level=logging.INFO, + format="%(asctime)s | %(levelname)s | %(name)s | %(message)s", +) +logger = logging.getLogger("eval") + + +class Eval: + def __init__(self, args): + self.base_dir = args.base_dir + self.corpus = args.corpus + self.split = args.corpus_part + self.min_sents = args.min_sents + self.index_comparison = args.index_comparison + self.emb_dimension = args.embedding_dimension + self.encoder_args = { + k: v + for k, v in args._get_kwargs() + if k in ["max_sentences", "max_tokens", "cpu", "sort_kind", "verbose"] + } + self.src_bpe_codes = args.src_bpe_codes + self.tgt_bpe_codes = args.tgt_bpe_codes + self.src_spm_model = args.src_spm_model + self.tgt_spm_model = args.tgt_spm_model + logger.info("loading src encoder") + self.src_encoder = load_model( + args.src_encoder, + self.src_spm_model, + self.src_bpe_codes, + hugging_face=args.use_hugging_face, + **self.encoder_args, + ) + if args.tgt_encoder: + logger.info("loading tgt encoder") + self.tgt_encoder = load_model( + args.tgt_encoder, + self.tgt_spm_model, + self.tgt_bpe_codes, + hugging_face=args.use_hugging_face, + **self.encoder_args, + ) + else: + logger.info("encoding tgt using src encoder") + self.tgt_encoder = self.src_encoder + self.tgt_bpe_codes = self.src_bpe_codes + self.tgt_spm_model = self.src_spm_model + self.nway = args.nway + self.buffer_size = args.buffer_size + self.fp16 = args.fp16 + self.margin = args.margin + + def _embed( + self, tmpdir, langs, encoder, spm_model, bpe_codes, tgt_aug_langs=[] + ) -> List[List[str]]: + emb_data = [] + for lang in langs: + augjson = None + fname = f"{lang}.{self.split}" + infile = self.base_dir / self.corpus / self.split / fname + assert infile.exists(), f"{infile} does not exist" + outfile = tmpdir / fname + if lang in tgt_aug_langs: + fname = f"{lang}_augmented.{self.split}" + fjname = f"{lang}_errtype.{self.split}.json" + augment_dir = self.base_dir / self.corpus / (self.split + "_augmented") + augjson = augment_dir / fjname + auginfile = augment_dir / fname + assert augjson.exists(), f"{augjson} does not exist" + assert auginfile.exists(), f"{auginfile} does not exist" + combined_infile = tmpdir / f"combined_{lang}" + with open(combined_infile, "w") as newfile: + for f in [infile, auginfile]: + with open(f) as fin: + newfile.write(fin.read()) + infile = combined_infile + embed_sentences( + str(infile), + str(outfile), + encoder=encoder, + spm_model=spm_model, + bpe_codes=bpe_codes, + token_lang=lang if bpe_codes else "--", + buffer_size=self.buffer_size, + fp16=self.fp16, + **self.encoder_args, + ) + assert ( + os.path.isfile(outfile) and os.path.getsize(outfile) > 0 + ), f"Error encoding {infile}" + emb_data.append([lang, infile, outfile, augjson]) + return emb_data + + def _xsim( + self, src_emb, src_lang, tgt_emb, tgt_lang, tgt_txt, augjson=None + ) -> Tuple[int, int, Dict[str, int]]: + return xSIM( + src_emb, + tgt_emb, + margin=self.margin, + dim=self.emb_dimension, + fp16=self.fp16, + eval_text=tgt_txt if not self.index_comparison else None, + augmented_json=augjson, + ) + + def calc_xsim( + self, embdir, src_langs, tgt_langs, tgt_aug_langs, err_sum=0, totl_nbex=0 + ) -> None: + outputs = [] + src_emb_data = self._embed( + embdir, + src_langs, + self.src_encoder, + self.src_spm_model, + self.src_bpe_codes, + ) + tgt_emb_data = self._embed( + embdir, + tgt_langs, + self.tgt_encoder, + self.tgt_spm_model, + self.tgt_bpe_codes, + tgt_aug_langs, + ) + aug_df = defaultdict(lambda: defaultdict()) + combs = list(itertools.product(src_emb_data, tgt_emb_data)) + for (src_lang, _, src_emb, _), (tgt_lang, tgt_txt, tgt_emb, augjson) in combs: + if src_lang == tgt_lang: + continue + err, nbex, aug_report = self._xsim( + src_emb, src_lang, tgt_emb, tgt_lang, tgt_txt, augjson + ) + result = round(100 * err / nbex, 2) + if tgt_lang in tgt_aug_langs: + aug_df[tgt_lang][src_lang] = aug_report + if nbex < self.min_sents: + result = "skipped" + else: + err_sum += err + totl_nbex += nbex + outputs.append( + [self.corpus, f"{src_lang}-{tgt_lang}", f"{result}", f"{nbex}"] + ) + outputs.append( + [ + self.corpus, + "average", + f"{round(100 * err_sum / totl_nbex, 2)}", + f"{len(combs)}", + ] + ) + print( + tabulate( + outputs, + tablefmt="psql", + headers=[ + "dataset", + "src-tgt", + "xsim" + ("(++)" if tgt_aug_langs else ""), + "nbex", + ], + ) + ) + for tgt_aug_lang in tgt_aug_langs: + df = pandas.DataFrame.from_dict(aug_df[tgt_aug_lang]).fillna(0).T + print( + f"\nAbsolute error under augmented transformations for: {tgt_aug_lang}" + ) + print(f"{tabulate(df, df.columns, floatfmt='.2f', tablefmt='grid')}") + + def calc_xsim_nway(self, embdir, langs) -> None: + err_matrix = np.zeros((len(langs), len(langs))) + emb_data = self._embed( + embdir, + langs, + self.src_encoder, + self.src_spm_model, + self.src_bpe_codes, + ) + for i1, (src_lang, _, src_emb, _) in enumerate(emb_data): + for i2, (tgt_lang, tgt_txt, tgt_emb, _) in enumerate(emb_data): + if src_lang == tgt_lang: + err_matrix[i1, i2] = 0 + else: + err, nbex, _ = self._xsim( + src_emb, src_lang, tgt_emb, tgt_lang, tgt_txt + ) + err_matrix[i1, i2] = 100 * err / nbex + df = pandas.DataFrame(err_matrix, columns=langs, index=langs) + df.loc["avg"] = df.sum() / float(df.shape[0] - 1) # exclude diagonal in average + print(f"\n{tabulate(df, langs, floatfmt='.2f', tablefmt='grid')}\n\n") + print(f"Global average: {df.loc['avg'].mean():.2f}") + + +def run_eval(args) -> None: + evaluation = Eval(args) + tmp_dir = None + if args.embed_dir: + os.makedirs(args.embed_dir, exist_ok=True) + embed_dir = args.embed_dir + else: + tmp_dir = tempfile.TemporaryDirectory() + embed_dir = Path(tmp_dir.name) + src_langs = sorted(args.src_langs.split(",")) + tgt_aug_langs = sorted(args.tgt_aug_langs.split(",")) if args.tgt_aug_langs else [] + if evaluation.nway: + evaluation.calc_xsim_nway(embed_dir, src_langs) + else: + assert ( + args.tgt_langs + ), "Please provide tgt langs when not performing n-way comparison" + tgt_langs = sorted(args.tgt_langs.split(",")) + evaluation.calc_xsim(embed_dir, src_langs, tgt_langs, tgt_aug_langs) + if tmp_dir: + tmp_dir.cleanup() # remove temporary directory + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description="LASER: multilingual similarity error evaluation" + ) + parser.add_argument( + "--base-dir", + type=Path, + default=None, + help="Base directory for evaluation files", + required=True, + ) + parser.add_argument( + "--corpus", + type=str, + default=None, + help="Name of evaluation corpus", + required=True, + ) + parser.add_argument( + "--corpus-part", + type=str, + default=None, + help="Specify split of the corpus to use e.g., dev", + required=True, + ) + parser.add_argument( + "--margin", + type=str, + default=None, + help="Margin for xSIM calculation. See: https://aclanthology.org/P19-1309", + ) + parser.add_argument( + "--min-sents", + type=int, + default=100, + help="Only use test sets which have at least N sentences", + ) + parser.add_argument( + "--nway", action="store_true", help="Test N-way for corpora which support it" + ) + parser.add_argument( + "--embed-dir", + type=Path, + default=None, + help="Store/load embeddings from specified directory (default temporary)", + ) + parser.add_argument( + "--index-comparison", + action="store_true", + help="Use index comparison instead of texts (not recommended when test data contains duplicates)", + ) + parser.add_argument("--src-spm-model", type=str, default=None) + parser.add_argument("--tgt-spm-model", type=str, default=None) + parser.add_argument( + "--src-bpe-codes", + type=str, + default=None, + help="Path to bpe codes for src model", + ) + parser.add_argument( + "--tgt-bpe-codes", + type=str, + default=None, + help="Path to bpe codes for tgt model", + ) + parser.add_argument("--src-encoder", type=str, default=None, required=True) + parser.add_argument("--tgt-encoder", type=str, default=None) + parser.add_argument( + "--buffer-size", type=int, default=100, help="Buffer size (sentences)" + ) + parser.add_argument( + "--max-tokens", + type=int, + default=12000, + help="Maximum number of tokens to process in a batch", + ) + parser.add_argument( + "--max-sentences", + type=int, + default=None, + help="Maximum number of sentences to process in a batch", + ) + parser.add_argument("--cpu", action="store_true", help="Use CPU instead of GPU") + + parser.add_argument( + "--src-langs", + type=str, + default=None, + help="Source-side languages for evaluation", + required=True, + ) + parser.add_argument( + "--tgt-langs", + type=str, + default=None, + help="Target-side languages for evaluation", + ) + parser.add_argument( + "--tgt-aug-langs", + type=str, + default=None, + help="languages with augmented data", + required=False, + ) + parser.add_argument( + "--fp16", + action="store_true", + help="Store embedding matrices in fp16 instead of fp32", + ) + parser.add_argument( + "--sort-kind", + type=str, + default="quicksort", + choices=["quicksort", "mergesort"], + help="Algorithm used to sort batch by length", + ) + parser.add_argument( + "--use-hugging-face", + action="store_true", + help="Use a HuggingFace sentence transformer", + ) + parser.add_argument( + "--embedding-dimension", + type=int, + default=1024, + help="Embedding dimension for encoders", + ) + parser.add_argument("-v", "--verbose", action="store_true", help="Detailed output") + args = parser.parse_args() + run_eval(args) diff --git a/laser/source/lib/indexing.py b/laser/source/lib/indexing.py new file mode 100644 index 0000000000000000000000000000000000000000..b2a5b205926e313bf27162821aa2f9ba8c068e79 --- /dev/null +++ b/laser/source/lib/indexing.py @@ -0,0 +1,258 @@ +#!/usr/bin/python3 +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# -------------------------------------------------------- +# +# tools for indexing and search with FAISS + +import faiss +import os.path +import sys +import numpy as np + +#------------------------------------------------------------- +# Get list of fnames: +# - we loop over the list of given languages +# - for each language, we also check if there are splitted files .%03d + +def SplitFnames(par_fname, langs): + fnames = [] + for l in langs: + fname = par_fname + '.' + l + if os.path.isfile(fname): + fnames.append(fname) + for i in range(1000): + fname = par_fname + '.' + l + '.{:03d}'.format(i) + if os.path.isfile(fname): + fnames.append(fname) + if len(fnames) == 0: + print("ERROR: no embeddings found in {:s}*".format(par_fname)) + sys.exit(1) + return fnames + +def SplitOpen(par_fname, langs, dim, dtype, verbose=False): + M = [] + nf = 0 + nc = 0 + print('Reading sentence embeddings') + print(' - memory mapped files {:s}'.format(par_fname)) + for fname in SplitFnames(par_fname, langs): + n = int(os.path.getsize(fname) / dim / np.dtype(dtype).itemsize) + if verbose: + print(' - {:s}: {:d} x {:d}'.format(fname, n, dim)) + Mi = np.memmap(fname, mode='r', dtype=dtype, shape=(n, dim)) + nc += n + nf += 1 + M.append(Mi) + print(' - total of {:d} files: {:d} x {:d}'.format(nf, nc, dim)) + return M + +def SplitAccess(M, idx): + i = idx + for Mi in M: + n = Mi.shape[0] + if i < n: + return Mi[i,:] + i -= n + print('ERROR: index {:d} is too large form memory mapped files'.format(idx)) + sys.exit(1) + + +############################################################################### +# create an FAISS index on the given data + +def IndexCreate(dname, idx_type, + verbose=False, normalize=True, save_index=False, dim=1024): + + assert idx_type == 'FlatL2', 'only FlatL2 index is currently supported' + x = np.fromfile(dname, dtype=np.float32, count=-1) + nbex = x.shape[0] // dim + print(' - embedding: {:s} {:d} examples of dim {:d}' + .format(dname, nbex, dim)) + x.resize(nbex, dim) + print(' - creating FAISS index') + idx = faiss.IndexFlatL2(dim) + if normalize: + faiss.normalize_L2(x) + idx.add(x) + if save_index: + iname = 'TODO' + print(' - saving index into ' + iname) + faiss.write_index(idx, iname) + return x, idx + + +############################################################################### +# search closest vector for all languages pairs and calculate error rate + +def IndexSearchMultiple(data, idx, langs, verbose=False, texts=None, print_errors=False): + nl = len(data) + nbex = data[0].shape[0] + err = np.zeros((nl, nl)).astype(float) + ref = np.linspace(0, nbex-1, nbex).astype(int) # [0, nbex) + if verbose: + if texts is None: + print('Calculating similarity error (indices):') + else: + print('Calculating similarity error (textual):') + for i1 in range(nl): + for i2 in range(nl): + if i1 != i2: + D, I = idx[i2].search(data[i1], 1) + if texts: # do textual comparison + e1 = 0 + for p in range(I.shape[0]): + if texts[i2][p] != texts[i2][I[p,0]]: + e1 += 1 + if print_errors: + print('Error {:s}\n {:s}' + .format(texts[i2][p].strip(), texts[i2][I[p,0]].strip())) + err[i1, i2] = e1 / nbex + else: # do index based comparision + err[i1, i2] \ + = (nbex - np.equal(I.reshape(nbex), ref) + .astype(int).sum()) / nbex + if verbose: + print(' - similarity error {:s}/{:s}: {:5.2f}%' + .format(langs[i1], langs[i2], + 100.0 * err[i1, i2])) + return err + + +############################################################################### +# print confusion matrix + +def IndexPrintConfusionMatrix(err, langs): + nl = len(langs) + assert nl == err.shape[0], 'size of errror matrix doesn not match' + print('Confusion matrix:') + print('{:8s}'.format('langs'), end='') + for i2 in range(nl): + print('{:8s} '.format(langs[i2]), end='') + print('{:8s}'.format('avg')) + for i1 in range(nl): + print('{:3s}'.format(langs[i1]), end='') + for i2 in range(nl): + print('{:8.2f}%'.format(100 * err[i1, i2]), end='') + print('{:8.2f}%'.format(100 * err[i1, :].sum() / (nl-1))) + + print('avg', end='') + for i2 in range(nl): + print('{:8.2f}%'.format(100 * err[:, i2].sum() / (nl-1)), end='') + + # global average + print('{:8.2f}%'.format(100 * err.sum() / (nl-1) / nl)) + + +############################################################################### +# Load an FAISS index + +def IndexLoad(idx_name, nprobe, gpu=False): + print('Reading FAISS index') + print(' - index: {:s}'.format(idx_name)) + index = faiss.read_index(idx_name) + print(' - found {:d} sentences of dim {:d}'.format(index.ntotal, index.d)) + print(' - setting nbprobe to {:d}'.format(nprobe)) + if gpu: + print(' - transfer index to %d GPUs ' % faiss.get_num_gpus()) + #co = faiss.GpuMultipleClonerOptions() + #co.shard = True + index = faiss.index_cpu_to_all_gpus(index) # co=co + faiss.GpuParameterSpace().set_index_parameter(index, 'nprobe', nprobe) + return index + + +############################################################################### +# Opens a text file with the sentences corresponding to the indices used +# by an FAISS index +# We also need the reference files with the byte offsets to the beginning +# of each sentence +# optionnally: array with number of words per sentence +# All arrays are memory mapped + +def IndexTextOpen(txt_fname): + print('Reading text corpus') + print(' - texts: {:s}'.format(txt_fname)) + txt_mmap = np.memmap(txt_fname, mode='r', dtype=np.uint8) + fname = txt_fname.replace('.txt', '.ref.bin32') + if os.path.isfile(fname): + print(' - sentence start offsets (32 bit): {}'.format(fname)) + ref_mmap = np.memmap(fname, mode='r', dtype=np.uint32) + else: + fname = txt_fname.replace('.txt', '.ref.bin64') + if os.path.isfile(fname): + print(' - sentence start offsets (64 bit): {}'.format(fname)) + ref_mmap = np.memmap(fname, mode='r', dtype=np.uint64) + else: + print('ERROR: no file with sentence start offsets found') + sys.exit(1) + print(' - found {:d} sentences'.format(ref_mmap.shape[0])) + + nbw_mmap = None + fname = txt_fname.replace('.txt', '.nw.bin8') + if os.path.isfile(fname): + print(' - word counts: {:s}'.format(fname)) + nbw_mmap = np.memmap(fname, mode='r', dtype=np.uint8) + + M = None + fname = txt_fname.replace('.txt', '.meta') + if os.path.isfile(fname): + M = [] + n = 0 + print(' - metafile: {:s}'.format(fname)) + with open(fname, 'r') as fp: + for line in fp: + fields = line.strip().split() + if len(fields) != 2: + print('ERROR: format error in meta file') + sys.exit(1) + n += int(fields[1]) + M.append({'lang': fields[0], 'n': n}) + print(' - found {:d} languages:'.format(len(M)), end='') + for L in M: + print(' {:s}'.format(L['lang']), end='') + print('') + + return txt_mmap, ref_mmap, nbw_mmap, M + + +############################################################################### +# Return the text for the given index + +def IndexTextQuery(txt_mmap, ref_mmap, idx): + p = int(ref_mmap[idx]) # get starting byte position + i = 0 + dim = 10000 # max sentence length in bytes + b = bytearray(dim) + # find EOL + while txt_mmap[p+i] != 10 and i < dim: + b[i] = txt_mmap[p+i] + i += 1 + + return b[0:i].decode('utf-8') + + +############################################################################### +# Search the [k] nearest vectors of [x] in the given index +# and return the text lines + +def IndexSearchKNN(index, x, T, R, kmax=1, Dmax=1.0, dedup=True): + D, I = index.search(x, kmax) + prev = {} # for depuplication + res = [] + for n in range(x.shape[0]): + for i in range(kmax): + txt = IndexTextQuery(T, R, I[n, i]) + if (dedup and txt not in prev) and D[n, i] <= Dmax: + prev[txt] = 1 + res.append([txt, D[n, i]]) + return res diff --git a/laser/source/lib/romanize_lc.py b/laser/source/lib/romanize_lc.py new file mode 100644 index 0000000000000000000000000000000000000000..27c08a24e2c771f26cd2ae58f560be8ce7cf2f38 --- /dev/null +++ b/laser/source/lib/romanize_lc.py @@ -0,0 +1,51 @@ +#!/usr/bin/python +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# -------------------------------------------------------- +# +# Romanize and lower case text + +import os +import sys +import argparse +from transliterate import translit, get_available_language_codes + +parser = argparse.ArgumentParser( + formatter_class=argparse.RawDescriptionHelpFormatter, + description="Calculate multilingual sentence encodings") +parser.add_argument( + '--input', '-i', type=argparse.FileType('r', encoding='UTF-8'), + default=sys.stdin, + metavar='PATH', + help="Input text file (default: standard input).") +parser.add_argument( + '--output', '-o', type=argparse.FileType('w', encoding='UTF-8'), + default=sys.stdout, + metavar='PATH', + help="Output text file (default: standard output).") +parser.add_argument( + '--language', '-l', type=str, + metavar='STR', default="none", + help="perform transliteration into Roman characters" + " from the specified language (default none)") +parser.add_argument( + '--preserve-case', '-C', action='store_true', + help="Preserve case of input texts (default is all lower case)") + +args = parser.parse_args() + +for line in args.input: + if args.language != "none": + line = translit(line, args.language, reversed=True) + if not args.preserve_case: + line = line.lower() + args.output.write(line) diff --git a/laser/source/lib/text_processing.py b/laser/source/lib/text_processing.py new file mode 100644 index 0000000000000000000000000000000000000000..41ffa71cf4850e4f3ee0c249437691bdf41520d1 --- /dev/null +++ b/laser/source/lib/text_processing.py @@ -0,0 +1,272 @@ +#!/usr/bin/python +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# -------------------------------------------------------- +# +# Helper functions for tokenization and BPE + +import os +import sys +import logging +from pathlib import Path +import numpy as np +from subprocess import run, check_output, CalledProcessError, DEVNULL + +logging.basicConfig( + stream=sys.stdout, + level=logging.INFO, + format="%(asctime)s | %(levelname)s | %(name)s | %(message)s") +logger = logging.getLogger("preprocess") + +# get environment +assert os.environ.get('LASER'), 'Please set the enviornment variable LASER' +LASER = os.environ['LASER'] + +FASTBPE = LASER + '/tools-external/fastBPE/fast' +MOSES_BDIR = LASER + '/tools-external/moses-tokenizer/tokenizer/' +MOSES_TOKENIZER = MOSES_BDIR + 'tokenizer.perl -q -no-escape -threads 20 -l ' +MOSES_LC = MOSES_BDIR + 'lowercase.perl' +NORM_PUNC = MOSES_BDIR + 'normalize-punctuation.perl -l ' +DESCAPE = MOSES_BDIR + 'deescape-special-chars.perl' +REM_NON_PRINT_CHAR = MOSES_BDIR + 'remove-non-printing-char.perl' +SPM_DIR = LASER + '/tools-external/sentencepiece-master/build/src/' +SPM = 'LD_LIBRARY_PATH=' + SPM_DIR + ' ' + SPM_DIR + '/spm_encode --output_format=piece' + +# Romanization (and lower casing) +ROMAN_LC = 'python3 ' + LASER + '/source/lib/romanize_lc.py -l ' + +# Mecab tokenizer for Japanese +MECAB = LASER + '/tools-external/mecab' + + + + +############################################################################### +# +# Tokenize a line of text +# +############################################################################### + +def TokenLine(line, lang='en', lower_case=True, romanize=False): + assert lower_case, 'lower case is needed by all the models' + roman = lang if romanize else 'none' + tok = check_output( + REM_NON_PRINT_CHAR + + '|' + NORM_PUNC + lang + + '|' + DESCAPE + + '|' + MOSES_TOKENIZER + lang + + ('| python3 -m jieba -d ' if lang == 'zh' else '') + + ('|' + MECAB + '/bin/mecab -O wakati -b 50000 ' if lang == 'ja' else '') + + '|' + ROMAN_LC + roman, + input=line, + encoding='UTF-8', + shell=True) + return tok.strip() + + +############################################################################### +# +# Tokenize a file +# +############################################################################### + +def Token(inp_fname, out_fname, lang='en', + lower_case=True, romanize=False, descape=False, + verbose=False, over_write=False, gzip=False): + assert lower_case, 'lower case is needed by all the models' + assert not over_write, 'over-write is not yet implemented' + if not os.path.isfile(out_fname): + cat = 'zcat ' if gzip else 'cat ' + roman = lang if romanize else 'none' + # handle some iso3 langauge codes + if lang in ('cmn', 'wuu', 'yue'): + lang = 'zh' + if lang in ('jpn'): + lang = 'ja' + if verbose: + logger.info('tokenizing {} in language {} {} {}' + .format(os.path.basename(inp_fname), lang, + '(gzip)' if gzip else '', + '(de-escaped)' if descape else '', + '(romanized)' if romanize else '')) + run(cat + inp_fname + + '|' + REM_NON_PRINT_CHAR + + '|' + NORM_PUNC + lang + + ('|' + DESCAPE if descape else '') + + '|' + MOSES_TOKENIZER + lang + + ('| python3 -m jieba -d ' if lang == 'zh' else '') + + ('|' + MECAB + '/bin/mecab -O wakati -b 50000 ' if lang == 'ja' else '') + + '|' + ROMAN_LC + roman + + '>' + out_fname, + env=dict(os.environ, LD_LIBRARY_PATH=MECAB + '/lib'), + shell=True) + elif not over_write and verbose: + logger.info('tokenized file {} exists already' + .format(os.path.basename(out_fname), lang)) + + +############################################################################### +# +# Apply SPM on a whole file +# +############################################################################### + +def SPMApply(inp_fname, out_fname, spm_model, lang='en', + lower_case=True, descape=False, + verbose=False, over_write=False, gzip=False): + assert lower_case, 'lower case is needed by all the models' + if not os.path.isfile(out_fname): + cat = 'zcat ' if gzip else 'cat ' + if verbose: + logger.info('SPM processing {} {} {}' + .format(os.path.basename(inp_fname), + '(gzip)' if gzip else '', + '(de-escaped)' if descape else '')) + + assert os.path.isfile(spm_model), f'SPM model {spm_model} not found' + command = (cat + inp_fname + + '|' + REM_NON_PRINT_CHAR + + '|' + NORM_PUNC + lang + + ('|' + DESCAPE if descape else '') + + '|' + ROMAN_LC + 'none' + + '|' + SPM + " --model=" + spm_model + + ' > ' + out_fname) + try: + run(["/bin/bash", "-o", "pipefail", "-c", command], check=True, capture_output=True) + except CalledProcessError as e: + logger.error(e.stderr.decode().strip()) + sys.exit(1) + + elif not over_write and verbose: + logger.info('SPM encoded file {} exists already' + .format(os.path.basename(out_fname))) + + +############################################################################### +# +# Apply FastBPE on a whole file +# +############################################################################### + +def BPEfastApply(inp_fname, out_fname, bpe_codes, + verbose=False, over_write=False): + if not os.path.isfile(out_fname): + if verbose: + logger.info('fastBPE: processing {}' + .format(os.path.basename(inp_fname))) + bpe_vocab = bpe_codes.replace('fcodes', 'fvocab') + assert os.path.isfile(bpe_vocab), f'fastBPE: vocab file {bpe_vocab} not found' + run(FASTBPE + ' applybpe ' + + out_fname + ' ' + inp_fname + + ' ' + bpe_codes + + ' ' + bpe_vocab, shell=True, stderr=DEVNULL) + elif not over_write and verbose: + logger.info('fastBPE: {} exists already' + .format(os.path.basename(out_fname))) + + +############################################################################### +# +# Split long lines into multiple sentences at "." +# +############################################################################### + +def SplitLines(ifname, of_txt, of_sid): + if os.path.isfile(of_txt): + print(' - SplitLines: {} already exists'.format(of_txt)) + return + nl = 0 + nl_sp = 0 + maxw = 0 + maxw_sp = 0 + fp_sid = open(of_sid, 'w') + fp_txt = open(of_txt, 'w') + with open(ifname, 'r') as ifp: + for line in ifp: + print('{:d}'.format(nl), file=fp_sid) # store current sentence ID + nw = 0 + words = line.strip().split() + maxw = max(maxw, len(words)) + for i, word in enumerate(words): + if word == '.' and i != len(words)-1: + if nw > 0: + print(' {}'.format(word), file=fp_txt) + else: + print('{}'.format(word), file=fp_txt) + # store current sentence ID + print('{:d}'.format(nl), file=fp_sid) + nl_sp += 1 + maxw_sp = max(maxw_sp, nw+1) + nw = 0 + else: + if nw > 0: + print(' {}'.format(word), end='', file=fp_txt) + else: + print('{}'.format(word), end='', file=fp_txt) + nw += 1 + if nw > 0: + # handle remainder of sentence + print('', file=fp_txt) + nl_sp += 1 + maxw_sp = max(maxw_sp, nw+1) + nl += 1 + print(' - Split sentences: {}'.format(ifname)) + print(' - lines/max words: {:d}/{:d} -> {:d}/{:d}' + .format(nl, maxw, nl_sp, maxw_sp)) + fp_sid.close() + fp_txt.close() + + +############################################################################### +# +# Join embeddings of previously split lines (average) +# +############################################################################### + +def JoinEmbed(if_embed, sid_fname, of_embed, dim=1024): + if os.path.isfile(of_embed): + print(' - JoinEmbed: {} already exists'.format(of_embed)) + return + # read the input embeddings + em_in = np.fromfile(if_embed, dtype=np.float32, count=-1).reshape(-1, dim) + ninp = em_in.shape[0] + print(' - Combine embeddings:') + print(' input: {:s} {:d} sentences'.format(if_embed, ninp)) + + # get all sentence IDs + sid = np.empty(ninp, dtype=np.int32) + i = 0 + with open(sid_fname, 'r') as fp_sid: + for line in fp_sid: + sid[i] = int(line) + i += 1 + nout = sid.max() + 1 + print(' IDs: {:s}, {:d} sentences'.format(sid_fname, nout)) + + # combining + em_out = np.zeros((nout, dim), dtype=np.float32) + cnt = np.zeros(nout, dtype=np.int32) + for i in range(ninp): + idx = sid[i] + em_out[idx] += em_in[i] # cumulate sentence vectors + cnt[idx] += 1 + + if (cnt == 0).astype(int).sum() > 0: + print('ERROR: missing lines') + sys.exit(1) + + # normalize + for i in range(nout): + em_out[i] /= cnt[i] + + print(' output: {:s}'.format(of_embed)) + em_out.tofile(of_embed) diff --git a/laser/source/mine_bitexts.py b/laser/source/mine_bitexts.py new file mode 100644 index 0000000000000000000000000000000000000000..dc30b307c9d3b59bf8c11260baf8baf8537e37a7 --- /dev/null +++ b/laser/source/mine_bitexts.py @@ -0,0 +1,302 @@ +#!/usr/bin/python3 +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# -------------------------------------------------------- +# +# Tool to calculate to embed a text file +# The functions can be also imported into another Python code + +import os +import sys +import faiss +import argparse +import torch +import numpy as np + +# get environment +assert os.environ.get('LASER'), 'Please set the enviornment variable LASER' +LASER = os.environ['LASER'] + +sys.path.append(LASER + '/source') +sys.path.append(LASER + '/source/tools') +from embed import SentenceEncoder, EncodeLoad, EncodeFile, EmbedLoad +from lib.text_processing import Token, BPEfastApply + + +############################################################################### +# +# Load texts and remove duplicates +# +############################################################################### + +def TextLoadUnify(fname, args): + if args.verbose: + print(' - loading texts {:s}: '.format(fname), end='') + fin = open(fname, encoding=args.encoding, errors='surrogateescape') + inds = [] + sents = [] + sent2ind = {} + n = 0 + nu = 0 + for line in fin: + new_ind = len(sent2ind) + inds.append(sent2ind.setdefault(line, new_ind)) + if args.unify: + if inds[-1] == new_ind: + sents.append(line[:-1]) + nu += 1 + else: + sents.append(line[:-1]) + nu += 1 + n += 1 + if args.verbose: + print('{:d} lines, {:d} unique'.format(n, nu)) + del sent2ind + return inds, sents + + +############################################################################### +# +# Wrapper for knn on CPU/GPU +# +############################################################################### + +def knn(x, y, k, use_gpu): + return knnGPU(x, y, k) if use_gpu else knnCPU(x, y, k) + + +############################################################################### +# +# Perform knn on GPU +# +############################################################################### + +def knnGPU(x, y, k, mem=5*1024*1024*1024): + dim = x.shape[1] + batch_size = mem // (dim*4) + sim = np.zeros((x.shape[0], k), dtype=np.float32) + ind = np.zeros((x.shape[0], k), dtype=np.int64) + for xfrom in range(0, x.shape[0], batch_size): + xto = min(xfrom + batch_size, x.shape[0]) + bsims, binds = [], [] + for yfrom in range(0, y.shape[0], batch_size): + yto = min(yfrom + batch_size, y.shape[0]) + # print('{}-{} -> {}-{}'.format(xfrom, xto, yfrom, yto)) + idx = faiss.IndexFlatIP(dim) + idx = faiss.index_cpu_to_all_gpus(idx) + idx.add(y[yfrom:yto]) + bsim, bind = idx.search(x[xfrom:xto], min(k, yto-yfrom)) + bsims.append(bsim) + binds.append(bind + yfrom) + del idx + bsims = np.concatenate(bsims, axis=1) + binds = np.concatenate(binds, axis=1) + aux = np.argsort(-bsims, axis=1) + for i in range(xfrom, xto): + for j in range(k): + sim[i, j] = bsims[i-xfrom, aux[i-xfrom, j]] + ind[i, j] = binds[i-xfrom, aux[i-xfrom, j]] + return sim, ind + + +############################################################################### +# +# Perform knn on CPU +# +############################################################################### + +def knnCPU(x, y, k): + dim = x.shape[1] + idx = faiss.IndexFlatIP(dim) + idx.add(y) + sim, ind = idx.search(x, k) + return sim, ind + + +############################################################################### +# +# Scoring +# +############################################################################### + +def score(x, y, fwd_mean, bwd_mean, margin): + return margin(x.dot(y), (fwd_mean + bwd_mean) / 2) + + +def score_candidates(x, y, candidate_inds, fwd_mean, bwd_mean, margin, verbose=False): + if verbose: + print(' - scoring {:d} candidates'.format(x.shape[0])) + scores = np.zeros(candidate_inds.shape) + for i in range(scores.shape[0]): + for j in range(scores.shape[1]): + k = candidate_inds[i, j] + scores[i, j] = score(x[i], y[k], fwd_mean[i], bwd_mean[k], margin) + return scores + + +############################################################################### +# +# Main +# +############################################################################### + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='LASER: Mine bitext') + parser.add_argument('src', + help='Source language corpus') + parser.add_argument('trg', + help='Target language corpus') + parser.add_argument('--encoding', default='utf-8', + help='Character encoding for input/output') + parser.add_argument('--src-lang', required=True, + help='Source language id') + parser.add_argument('--trg-lang', required=True, + help='Target language id') + parser.add_argument('--output', required=True, + help='Output file') + parser.add_argument('--threshold', type=float, default=0, + help='Threshold on extracted bitexts') + + # mining params + parser.add_argument('--mode', + choices=['search', 'score', 'mine'], required=True, + help='Execution mode') + parser.add_argument('-k', '--neighborhood', + type=int, default=4, + help='Neighborhood size') + parser.add_argument('--margin', + choices=['absolute', 'distance', 'ratio'], default='ratio', + help='Margin function') + parser.add_argument('--retrieval', + choices=['fwd', 'bwd', 'max', 'intersect'], default='max', + help='Retrieval strategy') + parser.add_argument('--unify', action='store_true', + help='Unify texts') + parser.add_argument('--gpu', action='store_true', + help='Run knn on all available GPUs') + parser.add_argument('--verbose', action='store_true', + help='Detailed output') + + # embeddings + parser.add_argument('--src-embeddings', required=True, + help='Precomputed source sentence embeddings') + parser.add_argument('--trg-embeddings', required=True, + help='Precomputed target sentence embeddings') + parser.add_argument('--dim', type=int, default=1024, + help='Embedding dimensionality') + parser.add_argument('--fp16', action='store_true', + help='Load precomputed embeddings in float16 format') + args = parser.parse_args() + + print('LASER: tool to search, score or mine bitexts') + use_gpu = torch.cuda.is_available() and args.gpu + if use_gpu: + print(' - knn will run on all available GPUs (recommended)') + else: + print(' - knn will run on CPU (slow)') + + src_inds, src_sents = TextLoadUnify(args.src, args) + trg_inds, trg_sents = TextLoadUnify(args.trg, args) + + def unique_embeddings(emb, ind, verbose=False): + aux = {j: i for i, j in enumerate(ind)} + if verbose: + print(' - unify embeddings: {:d} -> {:d}'.format(len(emb), len(aux))) + return emb[[aux[i] for i in range(len(aux))]] + + # load the embeddings and store as np.float32 (required for FAISS) + x = EmbedLoad(args.src_embeddings, args.dim, verbose=args.verbose, fp16=args.fp16).astype(np.float32) + if args.unify: + x = unique_embeddings(x, src_inds, args.verbose) + faiss.normalize_L2(x) + y = EmbedLoad(args.trg_embeddings, args.dim, verbose=args.verbose, fp16=args.fp16).astype(np.float32) + if args.unify: + y = unique_embeddings(y, trg_inds, args.verbose) + faiss.normalize_L2(y) + + # calculate knn in both directions + if args.retrieval != 'bwd': + if args.verbose: + print(' - perform {:d}-nn source against target'.format(args.neighborhood)) + x2y_sim, x2y_ind = knn(x, y, min(y.shape[0], args.neighborhood), use_gpu) + x2y_mean = x2y_sim.mean(axis=1) + + if args.retrieval != 'fwd': + if args.verbose: + print(' - perform {:d}-nn target against source'.format(args.neighborhood)) + y2x_sim, y2x_ind = knn(y, x, min(x.shape[0], args.neighborhood), use_gpu) + y2x_mean = y2x_sim.mean(axis=1) + + # margin function + if args.margin == 'absolute': + margin = lambda a, b: a + elif args.margin == 'distance': + margin = lambda a, b: a - b + else: # args.margin == 'ratio': + margin = lambda a, b: a / b + + fout = open(args.output, mode='w', encoding=args.encoding, errors='surrogateescape') + + if args.mode == 'search': + if args.verbose: + print(' - Searching for closest sentences in target') + print(' - writing alignments to {:s}'.format(args.output)) + scores = score_candidates(x, y, x2y_ind, x2y_mean, y2x_mean, margin, args.verbose) + best = x2y_ind[np.arange(x.shape[0]), scores.argmax(axis=1)] + + nbex = x.shape[0] + ref = np.linspace(0, nbex-1, nbex).astype(int) # [0, nbex) + err = nbex - np.equal(best.reshape(nbex), ref).astype(int).sum() + print(' - errors: {:d}={:.2f}%'.format(err, 100*err/nbex)) + for i in src_inds: + print(trg_sents[best[i]], file=fout) + + elif args.mode == 'score': + for i, j in zip(src_inds, trg_inds): + s = score(x[i], y[j], x2y_mean[i], y2x_mean[j], margin) + print(s, src_sents[i], trg_sents[j], sep='\t', file=fout) + + elif args.mode == 'mine': + if args.verbose: + print(' - mining for parallel data') + fwd_scores = score_candidates(x, y, x2y_ind, x2y_mean, y2x_mean, margin, args.verbose) + bwd_scores = score_candidates(y, x, y2x_ind, y2x_mean, x2y_mean, margin, args.verbose) + fwd_best = x2y_ind[np.arange(x.shape[0]), fwd_scores.argmax(axis=1)] + bwd_best = y2x_ind[np.arange(y.shape[0]), bwd_scores.argmax(axis=1)] + if args.verbose: + print(' - writing alignments to {:s}'.format(args.output)) + if args.threshold > 0: + print(' - with threshold of {:f}'.format(args.threshold)) + if args.retrieval == 'fwd': + for i, j in enumerate(fwd_best): + print(fwd_scores[i].max(), src_sents[i], trg_sents[j], sep='\t', file=fout) + if args.retrieval == 'bwd': + for j, i in enumerate(bwd_best): + print(bwd_scores[j].max(), src_sents[i], trg_sents[j], sep='\t', file=fout) + if args.retrieval == 'intersect': + for i, j in enumerate(fwd_best): + if bwd_best[j] == i: + print(fwd_scores[i].max(), src_sents[i], trg_sents[j], sep='\t', file=fout) + if args.retrieval == 'max': + indices = np.stack((np.concatenate((np.arange(x.shape[0]), bwd_best)), + np.concatenate((fwd_best, np.arange(y.shape[0])))), axis=1) + scores = np.concatenate((fwd_scores.max(axis=1), bwd_scores.max(axis=1))) + seen_src, seen_trg = set(), set() + for i in np.argsort(-scores): + src_ind, trg_ind = indices[i] + if not src_ind in seen_src and not trg_ind in seen_trg: + seen_src.add(src_ind) + seen_trg.add(trg_ind) + if scores[i] > args.threshold: + print(scores[i], src_sents[src_ind], trg_sents[trg_ind], sep='\t', file=fout) + + fout.close() diff --git a/laser/source/nli.py b/laser/source/nli.py new file mode 100644 index 0000000000000000000000000000000000000000..54772b62014a3f8db822b3a38999f1d3771caa75 --- /dev/null +++ b/laser/source/nli.py @@ -0,0 +1,371 @@ +#!/usr/bin/python +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# -------------------------------------------------------- +# +# + + +import os +import copy +import argparse +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.optim as optim +import torch.utils.data as data_utils +import numpy as np +import faiss + + +################################################ + +def LoadDataNLI(fn1, fn2, fn_lbl, + dim=1024, bsize=32, + fraction=1.0, + shuffle=False, quiet=False): + x = np.fromfile(fn1, dtype=np.float32, count=-1) + x.resize(x.shape[0] // dim, dim) + faiss.normalize_L2(x) + + y = np.fromfile(fn2, dtype=np.float32, count=-1) + y.resize(y.shape[0] // dim, dim) + faiss.normalize_L2(y) + + lbl = np.loadtxt(fn_lbl, dtype=np.int32) + lbl.reshape(lbl.shape[0], 1) + + if not quiet: + print(' - read {:d}x{:d} elements in {:s}'.format(x.shape[0], x.shape[1], fn1)) + print(' - read {:d}x{:d} elements in {:s}'.format(y.shape[0], y.shape[1], fn2)) + print(' - read {:d} labels [{:d},{:d}] in {:s}' + .format(lbl.shape[0], lbl.min(), lbl.max(), fn_lbl)) + + if fraction < 1.0: + N = int(x.shape[0] * fraction) + if not quiet: + print(' - using only the first {:d} examples'.format(N)) + x = x[:N][:] + y = y[:N][:] + lbl = lbl[:N][:] + + if not quiet: + print(' - combine premises and hyps') + nli = np.concatenate((x, y, np.absolute(x - y), np.multiply(x, y)), axis=1) + + D = data_utils.TensorDataset(torch.from_numpy(nli), torch.from_numpy(lbl)) + loader = data_utils.DataLoader(D, batch_size=bsize, shuffle=shuffle) + return loader + + +################################################ + +class Net(nn.Module): + def __init__(self, fname='', + idim=4*1024, odim=2, nhid=None, + dropout=0.0, gpu=0, activation='TANH'): + super(Net, self).__init__() + self.gpu = gpu + if os.path.isfile(fname): + print(' - loading mlp from %s'.format(fname)) + loaded = torch.load(fname) + self.mlp = loaded.mlp + else: + modules = [] + print(' - mlp {:d}'.format(idim), end='') + if len(nhid) > 0: + if dropout > 0: + modules.append(nn.Dropout(p=dropout)) + nprev = idim + for nh in nhid: + if nh > 0: + modules.append(nn.Linear(nprev, nh)) + nprev = nh + if activation == 'TANH': + modules.append(nn.Tanh()) + print('-{:d}t'.format(nh), end='') + elif activation == 'RELU': + modules.append(nn.ReLU()) + print('-{:d}r'.format(nh), end='') + else: + raise Exception('Unrecognised activation {activation}') + if dropout > 0: + modules.append(nn.Dropout(p=dropout)) + modules.append(nn.Linear(nprev, odim)) + print('-{:d}, dropout={:.1f}'.format(odim, dropout)) + else: + modules.append(nn.Linear(idim, odim)) + print(' - mlp {:d}-{:d}'.format(idim, odim)) + self.mlp = nn.Sequential(*modules) + + if self.gpu >= 0: + self.mlp = self.mlp.cuda() + + def forward(self, x): + return self.mlp(x) + + def TestCorpus(self, dset, name=' Dev', nlbl=3, out_fname=None): + correct = 0 + total = 0 + self.mlp.train(mode=False) + corr = np.zeros(nlbl, dtype=np.int32) + if out_fname: + fp = open(out_fname, 'w') + fp.write('# outputs target_class predicted_class\n') + for data in dset: + X, Y = data + Y = Y.long() + if self.gpu >= 0: + X = X.cuda() + Y = Y.cuda() + outputs = self.mlp(X) + _, predicted = torch.max(outputs.data, 1) + total += Y.size(0) + correct += (predicted == Y).int().sum() + for i in range(nlbl): + corr[i] += (predicted == i).int().sum() + if out_fname: + for b in range(outputs.shape[0]): + for i in range(nlbl): + fp.write('{:f} '.format(outputs[b][i])) + fp.write('{:d} {:d}\n' + .format(predicted[b], Y[b])) + + print(' | {:4s}: {:5.2f}%' + .format(name, 100.0 * correct.float() / total), end='') + # print(' | loss {:6.4f}'.format(loss/total), end='') + print(' | classes:', end='') + for i in range(nlbl): + print(' {:5.2f}'.format(100.0 * corr[i] / total), end='') + + if out_fname: + fp.close() + + return correct, total + + +################################################ + +parser = argparse.ArgumentParser( + formatter_class=argparse.RawDescriptionHelpFormatter, + description='Classifier for NLI') + +# Data +parser.add_argument( + '--base-dir', '-b', type=str, required=True, metavar='PATH', + help='Directory with all the data files)') +parser.add_argument( + '--load', '-l', type=str, required=False, metavar='PATH', default='', + help='Load network from file before training or for testing') +parser.add_argument( + '--save', '-s', type=str, required=False, metavar='PATH', default='', + help='File in which to save best network') +parser.add_argument( + '--train', '-t', type=str, required=True, metavar='STR', + help='Name of training corpus') +parser.add_argument( + '--train-labels', '-T', type=str, required=True, metavar='STR', + help='Name of training corpus (labels)') +parser.add_argument( + '--dev', '-d', type=str, required=True, metavar='STR', + help='Name of development corpus') +parser.add_argument( + '--dev-labels', '-D', type=str, required=True, metavar='STR', + help='Name of development corpus (labels)') +parser.add_argument( + '--test', '-e', type=str, default=None, + help='Name of test corpus without language extension') +parser.add_argument( + '--test-labels', '-E', type=str, default=None, + help='Name of test corpus without language extension (labels)') +parser.add_argument( + '--lang', '-L', nargs='+', default=None, + help='List of languages to test on') +parser.add_argument( + '--cross-lingual', '-x', action='store_true', + help='Also test on premise and hypothesis in different languages)') +parser.add_argument( + '--parts', '-p', type=str, nargs='+', default=['prem', 'hyp'], + help='Name of the two input parts to compare') +parser.add_argument( + '--fraction', '-f', type=float, default=1.0, + help='Fraction of training examples to use (from the beginning)') +parser.add_argument( + '--save-outputs', type=str, default=None, + help='File name to save classifier outputs ("l1-l2.txt" will be added)') + +# network definition +parser.add_argument( + '--dim', '-m', type=int, default=1024, + help='dimension of sentence embeddings') +parser.add_argument( + '--nhid', '-n', type=int, default=0, nargs='+', + help='List of hidden layer(s) dimensions') +parser.add_argument( + '--dropout', '-o', type=float, default=0.0, metavar='FLOAT', + help='Value of dropout') +parser.add_argument( + '--nepoch', '-N', type=int, default=100, metavar='INT', + help='Number of epochs') +parser.add_argument( + '--bsize', '-B', type=int, default=128, metavar='INT', + help='Batch size') +parser.add_argument( + '--seed', '-S', type=int, default=123456789, metavar='INT', + help='Initial random seed') +parser.add_argument( + '--lr', type=float, default=0.001, metavar='FLOAT', + help='Learning rate') +parser.add_argument( + '--activation', '-a', type=str, default='TANH', metavar='STR', + help='NonLinearity to use in hidden layers') +parser.add_argument( + '--gpu', '-g', type=int, default=-1, metavar='INT', + help='GPU id (-1 for CPU)') +args = parser.parse_args() + +train_loader = LoadDataNLI(os.path.join(args.base_dir, args.train % args.parts[0]), + os.path.join(args.base_dir, args.train % args.parts[1]), + os.path.join(args.base_dir, args.train_labels), + dim=args.dim, bsize=args.bsize, shuffle=True, fraction=args.fraction) + +dev_loader = LoadDataNLI(os.path.join(args.base_dir, args.dev % args.parts[0]), + os.path.join(args.base_dir, args.dev % args.parts[1]), + os.path.join(args.base_dir, args.dev_labels), + dim=args.dim, bsize=args.bsize, shuffle=False) + +# set GPU and random seed +np.random.seed(args.seed) +torch.manual_seed(args.seed) +if args.gpu < 0: + print(' - running on cpu') +else: + print(' - running on gpu {:d}'.format(args.gpu)) + torch.cuda.set_device(args.gpu) + torch.cuda.manual_seed(args.seed) +print(' - setting seed to {:d}'.format(args.seed)) +print(' - lrate is {:f} and bsize {:d}'.format(args.lr, args.bsize)) + +# create network +net = Net(fname=args.load, + idim=4*args.dim, odim=3, nhid=args.nhid, + dropout=args.dropout, gpu=args.gpu, + activation=args.activation) +if args.gpu >= 0: + criterion = nn.CrossEntropyLoss().cuda() +else: + criterion = nn.CrossEntropyLoss() + +optimizer = optim.Adam(net.parameters(), lr=args.lr) + +corr_best = 0 +# loop multiple times over the dataset +for epoch in range(args.nepoch): + + loss_epoch = 0.0 + print('Ep {:4d}'.format(epoch), end='') + # for inputs, labels in train_loader: + for i, data in enumerate(train_loader, 0): + # get the inputs + inputs, labels = data + labels = labels.long() + if args.gpu >= 0: + inputs = inputs.cuda() + labels = labels.cuda() + + # zero the parameter gradients + optimizer.zero_grad() + + # forward + backward + optimize + net.train(mode=True) + outputs = net(inputs) + loss = criterion(outputs, labels) + loss.backward() + optimizer.step() + loss_epoch += loss.item() + + print(' | loss {:e}'.format(loss_epoch), end='') + + corr, nbex = net.TestCorpus(dev_loader, 'Dev') + if corr >= corr_best: + print(' | saved') + corr_best = corr + net_best = copy.deepcopy(net) + else: + print('') + + +if 'net_best' in globals(): + if args.save != '': + torch.save(net_best.cpu(), args.save) + print('Best Dev: {:d} = {:5.2f}%' + .format(corr_best, 100.0 * corr_best.float() / nbex)) + + if args.gpu >= 0: + net_best = net_best.cuda() + +# test on (several) languages +if args.test is None: + os.exit() + +print('Testing on {}'.format(args.test)) +if not args.cross_lingual: + for l in args.lang: + test_loader = LoadDataNLI(os.path.join(args.base_dir, args.test % args.parts[0] + '.' + l), + os.path.join(args.base_dir, args.test % args.parts[1] + '.' + l), + os.path.join(args.base_dir, args.test_labels + '.' + l), + dim=args.dim, bsize=args.bsize, shuffle=False, quiet=True) + print('Ep best | Eval Test lang {:s}'.format(l), end='') + ofname = args.save_outputs + '.{:s}-{:s}'.format(l, l) + '.txt' if args.save_outputs else None + net_best.TestCorpus(test_loader, 'Test', out_fname=ofname) + print('') +else: # cross-lingual + err = np.empty((len(args.lang), len(args.lang)), dtype=np.float32) + i1 = 0 + for l1 in args.lang: + i2 = 0 + for l2 in args.lang: + test_loader = LoadDataNLI(os.path.join(args.base_dir, args.test % args.parts[0] + '.' + l1), + os.path.join(args.base_dir, args.test % args.parts[1] + '.' + l2), + os.path.join(args.base_dir, args.test_labels + '.' + l2), + dim=args.dim, bsize=args.bsize, shuffle=False, quiet=True) + print('Ep best | Eval Test {:s}-{:s}'.format(l1, l2), end='') + ofname = args.save_outputs + '.{:s}-{:s}'.format(l1, l2) + '.txt' if args.save_outputs else None + p, n = net_best.TestCorpus(test_loader, 'Test', + out_fname=ofname) + err[i1, i2] = 100.0 * float(p) / n + i2 += 1 + print('') + i1 += 1 + + print('\nAccuracy matrix:') + print(' ', end='') + for i2 in range(err.shape[1]): + print(' {:4s} '.format(args.lang[i2]), end='') + + print(' avg') + for i1 in range(err.shape[0]): + print('{:4s}'.format(args.lang[i1]), end='') + for i2 in range(err.shape[1]): + print(' {:5.2f}'.format(err[i1, i2]), end='') + print(' {:5.2f}'.format(np.average(err[i1, :]))) + print('avg ', end='') + for i2 in range(err.shape[1]): + print(' {:5.2f}'.format(np.average(err[:, i2])), end='') + print(' {:5.2f}'.format(np.average(err))) + + if err.shape[0] == err.shape[1]: + s = 0 + # TODO: we assume the first lang is English + for i1 in range(1, err.shape[0]): + s += err[i1, i1] + print('xnli-xx: {:5.2f}'.format(s/(err.shape[0]-1))) diff --git a/laser/source/paraphrase.py b/laser/source/paraphrase.py new file mode 100644 index 0000000000000000000000000000000000000000..5877805ee5875eef5e91729216d0e53615e2d9fb --- /dev/null +++ b/laser/source/paraphrase.py @@ -0,0 +1,285 @@ +#!/usr/bin/python +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# -------------------------------------------------------- +# +# Python tool to search for paraphrases in FAISS index + +import re +import sys +import os.path +import tempfile +import argparse +import faiss +import time +import pdb +import numpy as np +from collections import namedtuple + +# get environment +assert os.environ.get('LASER'), 'Please set the enviornment variable LASER' +LASER = os.environ['LASER'] + +sys.path.append(LASER + '/source/lib') +from indexing import IndexLoad, IndexTextOpen, IndexTextQuery, SplitOpen, SplitAccess +from embed import SentenceEncoder, EncodeLoad, EncodeFile, EncodeTime +from text_processing import Token, BPEfastApply + +SPACE_NORMALIZER = re.compile("\s+") +Batch = namedtuple('Batch', 'srcs tokens lengths') + +# calculate L2 distance between [x] +# and the vectors referenced in idxs +# x should be already normalized +def IndexDistL2(X, E, D, I, thresh=1.0, dtype=np.float32, sort=True): + nb, nK = I.shape + dim = X.shape[1] + dist_l2 = np.empty((nb, nK), dtype=np.float32) + y = np.empty((1, dim), dtype=dtype) + for i in range(nb): + for k in range(nK): + if D[i, k] <= thresh: + # get embedding from disk + np.copyto(y, SplitAccess(E, I[i, k])) + faiss.normalize_L2(y) + dist_l2[i, k] = 1.0 - np.dot(X[i], y[0]) + else: + # exclude sentences which already have a huge FAISS distance + # (getting embeddings from disk is very time consumming) + dist_l2[i, k] = 1.0 + + if sort: + # re-sort according to L2 + idxs = np.argsort(dist_l2[i], axis=0) + dist_l2[i] = dist_l2[i][idxs] + I[i] = I[i][idxs] + + return dist_l2, I + +############################################################################### +# +# Apply an absolute threshold on the distance +# +############################################################################### + +def MarginAbs(em, ofp, params, args, stats): + D, I = params.idx.search(em, args.kmax) + thresh = args.threshold_faiss + if args.embed: + D, I = IndexDistL2(em, params.E, D, I, args.threshold_faiss) + thresh = args.threshold_L2 + + for n in range(D.shape[0]): + + prev = {} # for deduplication + for i in range(args.kmax): + txt = IndexTextQuery(params.T, params.R, I[n, i]) + if (args.dedup and txt not in prev) and D[n, i] <= thresh: + prev[txt] = 1 + ofp.write('{:d}\t{:7.5f}\t{}\n' + .format(stats.nbs, D[n, i], txt)) + stats.nbp += 1 + + # display source sentece if requested + if (args.include_source == 'matches' and len(prev) > 0): + ofp.write('{:d}\t{:6.1f}\t{}\n' + .format(stats.nbs, 0.0, sentences[n].replace('@@ ', ''))) + + if args.include_source == 'always': + ofp.write('{:d}\t{:6.1f}\t{}\n' + .format(stats.nbs, 0.0, sentences[n].replace('@@ ', ''))) + stats.nbs += 1 + + +############################################################################### +# +# Apply an threshold on the ratio between distance and average +# +############################################################################### + +def MarginRatio(em, ofp, params, args, stats): + D, I = params.idx.search(em, args.margin_k) + thresh = args.threshold + if args.embed: + D, I = IndexDistL2(em, params.E, D, I, args.threshold_faiss) + thresh = args.threshold_L2 + + Mean = D.mean(axis=1) + for n in range(D.shape[0]): + if D[n, 0] / Mean[n] <= args.threshold: + if args.include_source == 'matches': + ofp.write('{:d}\t{:6.1f}\t{}\n' + .format(stats.nbs, 0.0, sentences[n].replace('@@ ', ''))) + txt = IndexTextQuery(params.T, params.R, I[n, 0]) + ofp.write('{:d}\t{:7.5f}\t{}\n'.format(stats.nbs, D[n, 0], txt)) + stats.nbp += 1 + + stats.nbs += 1 + + if args.include_source == 'always': + ofp.write('{:d}\t{:6.1f}\t{}\n' + .format(stats.nbs, 0.0, sentences[n].replace('@@ ', ''))) + + +############################################################################### + +def MarginDist(em, ofp, params, args, stats): + print('ERROR: MarginAbs not implemented') + sys.exit(1) + + +############################################################################### + +def buffered_read(fp, buffer_size): + buffer = [] + for src_str in fp: + buffer.append(src_str.strip()) + if len(buffer) >= buffer_size: + yield buffer + buffer = [] + + if len(buffer) > 0: + yield buffer + + +############################################################################### + +parser = argparse.ArgumentParser('LASER: paraphrase tool') + +parser.add_argument('--encoder', type=str, required=True, + help='encoder to be used') +parser.add_argument('--encoding', default='utf-8', + help='Character encoding for input/output') +parser.add_argument('--token-lang', type=str, default='--', + help="Language of tokenizer ('--' for no tokenization)") +parser.add_argument('--bpe-codes', type=str, default=None, required=True, + help='BPE codes') +parser.add_argument('--buffer-size', type=int, default=100, + help='Buffer size (sentences)') +parser.add_argument('--max-tokens', type=int, default=12000, + help='Maximum number of tokens to process in a batch') +parser.add_argument('--max-sentences', type=int, default=None, + help='Maximum number of sentences to process in a batch') +parser.add_argument('--cpu', action='store_true', + help='Use CPU instead of GPU') + +parser.add_argument('--index', type=str, required=True, + help='FAISS index') +parser.add_argument('--nprobe', type=int, default=128, + help='FAISS: value of nprobe') +parser.add_argument('--text', type=str, required=True, + help='File with indexed texts') +parser.add_argument( + '--dim', type=int, default=1024, + help='Dimension of specified sentence embeddings') +parser.add_argument( + '--embed', type=str, default=None, + help='Sentence embeddings, true L2 distance will be calculated when specified') + +parser.add_argument('-i', '--input', type=str, required=True, + help='Input text file') +parser.add_argument('-p', '--output', type=str, default='--', + help='Output paraphrases') +parser.add_argument('--kmax', type=int, default=10, + help='Max value of distance or margin of each paraphrase') +parser.add_argument('--dedup', type=int, default=1, + help='Deduplicate list of paraphrases') +parser.add_argument('--include-source', default='never', + choices=['never', 'matches', 'always'], + help='Include source sentence in the list of paraphrases') +parser.add_argument('--margin', + choices=['absolute', 'distance', 'ratio'], + default='ratio', help='Margin function') +parser.add_argument('-T', '--threshold-margin', type=float, default=0.9, + help='Threshold on margin') +parser.add_argument('--threshold-faiss', type=float, default=0.4, + help='Threshold on FAISS distance') +parser.add_argument('--threshold-L2', type=float, default=0.2, + help='Threshold on L2 distance') +parser.add_argument('--margin-k', type=int, default=4, + help='Number of nearest neighbors for margin calculation') + +parser.add_argument('--verbose', action='store_true', + help='Detailed output') + + +print('\nLASER: paraphrase tool') +args = parser.parse_args() + +# index, +# memory mapped texts, references and word counts +# encoder +params = namedtuple('params', 'idx T R W M E enc') + +# open text and reference file +params.T, params.R, params.W, params.M = IndexTextOpen(args.text) + +# Open on-disk embeddings for L2 distances +if args.embed: + params.E = SplitOpen(args.embed, ['en'], + args.dim, np.float32, verbose=False) + +# load FAISS index +params.idx = IndexLoad(args.index, args.nprobe) + +# load sentence encoder +params.enc = EncodeLoad(args) + + +margin_methods = {'absolute': MarginAbs, + 'distance': MarginDist, + 'ratio': MarginRatio} + +with tempfile.TemporaryDirectory() as tmpdir: + ifile = args.input + if args.token_lang != '--': + ifile = os.path.join(tmpdir, 'tok') + Token(args.input, + ifile, + lang=args.token_lang, + romanize=True if args.token_lang == 'el' else False, + lower_case=True, gzip=False, + verbose=args.verbose, over_write=False) + + if args.bpe_codes: + bpe_file = os.path.join(tmpdir, 'bpe') + BPEfastApply(ifile, + bpe_file, + args.bpe_codes, + verbose=args.verbose, over_write=False) + ifile = bpe_file + + print(' - processing (batch size is {:d})'.format(args.buffer_size)) + ifp = open(ifile, 'r', encoding=args.encoding, errors='surrogateescape') + if args.output == '--': + ofp = sys.stdout + else: + ofp = open(args.output, 'w', encoding=args.encoding, errors='surrogateescape') + stats = namedtuple('stats', 'ns np') + stats.nbs = 0 + stats.nbp = 0 + t = time.time() + for sentences in buffered_read(ifp, args.buffer_size): + embed = params.enc.encode_sentences(sentences) + faiss.normalize_L2(embed) + # call function for selected margin method + margin_methods.get(args.margin)(embed, ofp, params, args, stats) + if stats.nbs % 1000 == 0: + print('\r - {:d} sentences {:d} paraphrases' + .format(stats.nbs, stats.nbp), end='') + + ifp.close() + if args.output != '--': + ofp.close() + print('\r - {:d} sentences {:d} paraphrases' + .format(stats.nbs, stats.nbp), end='') + EncodeTime(t) diff --git a/laser/source/pxsim.py b/laser/source/pxsim.py new file mode 100644 index 0000000000000000000000000000000000000000..be94769bef41c037a9b8bf26650ea42f2cbde989 --- /dev/null +++ b/laser/source/pxsim.py @@ -0,0 +1,251 @@ +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for various tasks such as document classification, +# and bitext filtering +# +# -------------------------------------------------------- +# +# Tool to calculate the dual approach multilingual similarity error rate (P-xSIM) + +import typing as tp +from pathlib import Path + +import faiss +import numpy as np +import torch +from scipy.special import softmax +from sklearn.metrics.pairwise import cosine_similarity +from stopes.eval.auto_pcp.audio_comparator import Comparator, get_model_pred +from xsim import Margin, score_margin + + +def get_neighbors( + x: np.ndarray, y: np.ndarray, k: int, margin: str +) -> tp.Tuple[np.ndarray, np.ndarray, int]: + x_copy = x.astype(np.float32).copy() + y_copy = y.astype(np.float32).copy() + nbex, dim = x.shape + # create index + idx_x = faiss.IndexFlatIP(dim) + idx_y = faiss.IndexFlatIP(dim) + # L2 normalization needed for cosine distance + faiss.normalize_L2(x_copy) + faiss.normalize_L2(y_copy) + idx_x.add(x_copy) + idx_y.add(y_copy) + if margin == Margin.ABSOLUTE.value: + scores, indices = idx_y.search(x_copy, k) + else: + # return cosine similarity and indices of k closest neighbors + Cos_xy, Idx_xy = idx_y.search(x_copy, k) + Cos_yx, Idx_yx = idx_x.search(y_copy, k) + + # average cosines + Avg_xy = Cos_xy.mean(axis=1) + Avg_yx = Cos_yx.mean(axis=1) + + scores = score_margin(Cos_xy, Idx_xy, Avg_xy, Avg_yx, margin, k) + indices = Idx_xy + return scores, indices, nbex + + +def get_cosine_scores(src_emb: np.ndarray, neighbor_embs: np.ndarray) -> np.ndarray: + assert src_emb.shape[0] == neighbor_embs.shape[1] + src_embs = np.repeat( + np.expand_dims(src_emb, axis=0), neighbor_embs.shape[0], axis=0 + ) + cosine_scores = cosine_similarity(src_embs, neighbor_embs).diagonal() + return cosine_scores + + +def get_comparator_scores( + src_emb: np.ndarray, + neighbor_embs: np.ndarray, + comparator_model: tp.Any, + symmetrize_comparator: bool, +) -> np.ndarray: + src_embs = np.repeat( + np.expand_dims(src_emb, axis=0), neighbor_embs.shape[0], axis=0 + ) + a = torch.from_numpy(src_embs).unsqueeze(1) # restore depth dim + b = torch.from_numpy(neighbor_embs).unsqueeze(1) + res = get_comparator_preds(a, b, comparator_model, symmetrize_comparator) + scores_softmax = softmax(res) + return np.array(scores_softmax) + + +def get_comparator_preds( + src_emb: np.ndarray, tgt_emb: np.ndarray, model: tp.Any, symmetrize: bool +): + preds = ( + get_model_pred( + model, + src=src_emb[:, 0], + mt=tgt_emb[:, 0], + use_gpu=model.use_gpu, + batch_size=1, + )[:, 0] + .cpu() + .numpy() + ) + if symmetrize: + preds2 = ( + get_model_pred( + model, + src=tgt_emb[:, 0], + mt=src_emb[:, 0], + use_gpu=model.use_gpu, + batch_size=1, + )[:, 0] + .cpu() + .numpy() + ) + preds = (preds2 + preds) / 2 + return preds + + +def get_blended_predictions( + alpha: float, + nbex: int, + margin_scores: np.ndarray, + x_aux: np.ndarray, + y_aux: np.ndarray, + neighbor_indices: np.ndarray, + comparator_model: tp.Optional[tp.Any] = None, + symmetrize_comparator: bool = False, +) -> list[int]: + predictions = [] + for src_index in range(nbex): + neighbors = neighbor_indices[src_index] + neighbor_embs = y_aux[neighbors].astype(np.float32) + src_emb = x_aux[src_index].astype(np.float32) + aux_scores = ( + get_comparator_scores( + src_emb, neighbor_embs, comparator_model, symmetrize_comparator + ) + if comparator_model + else get_cosine_scores(src_emb, neighbor_embs) + ) + assert margin_scores[src_index].shape == aux_scores.shape + blended_scores = alpha * margin_scores[src_index] + (1 - alpha) * aux_scores + blended_neighbor_idx = blended_scores.argmax() + predictions.append(neighbors[blended_neighbor_idx]) + return predictions + + +def PxSIM( + x: np.ndarray, + y: np.ndarray, + x_aux: np.ndarray, + y_aux: np.ndarray, + alpha: float, + margin: str = Margin.RATIO.value, + k: int = 16, + comparator_path: tp.Optional[Path] = None, + symmetrize_comparator: bool = False, +) -> tp.Tuple[int, int, list[int]]: + """ + Parameters + ---------- + x : np.ndarray + source-side embedding array + y : np.ndarray + target-side embedding array + x_aux : np.ndarray + source-side embedding array using auxiliary model + y_aux : np.ndarray + target-side embedding array using auxiliary model + alpha : int + parameter to weight blended score + margin : str + margin scoring function (e.g. ratio, absolute, distance) + k : int + number of neighbors in k-nn search + comparator_path : Path + path to AutoPCP model config + symmetrize_comparator : bool + whether to symmetrize the comparator predictions + + Returns + ------- + err : int + Number of errors + nbex : int + Number of examples + preds : list[int] + List of (index-based) predictions + """ + assert Margin.has_value(margin), f"Margin type: {margin}, is not supported." + comparator_model = Comparator.load(comparator_path) if comparator_path else None + # get margin-based nearest neighbors + margin_scores, neighbor_indices, nbex = get_neighbors(x, y, k=k, margin=margin) + preds = get_blended_predictions( + alpha, + nbex, + margin_scores, + x_aux, + y_aux, + neighbor_indices, + comparator_model, + symmetrize_comparator, + ) + err = sum([idx != pred for idx, pred in enumerate(preds)]) + print(f"P-xSIM error: {100 * (err / nbex):.2f}") + return err, nbex, preds + + +def load_embeddings( + infile: Path, dim: int, fp16: bool = False, numpy_header: bool = False +) -> np.ndarray: + assert infile.exists(), f"file: {infile} does not exist." + if numpy_header: + return np.load(infile) + emb = np.fromfile(infile, dtype=np.float16 if fp16 else np.float32) + num_examples = emb.shape[0] // dim + emb.resize(num_examples, dim) + if fp16: + emb = emb.astype(np.float32) # faiss currently only supports fp32 + return emb + + +def run( + src_emb: Path, + tgt_emb: Path, + src_aux_emb: Path, + tgt_aux_emb: Path, + alpha: float, + margin: str = Margin.RATIO.value, + k: int = 16, + emb_fp16: bool = False, + aux_emb_fp16: bool = False, + emb_dim: int = 1024, + aux_emb_dim: int = 1024, + numpy_header: bool = False, + comparator_path: tp.Optional[Path] = None, + symmetrize_comparator: bool = False, + prediction_savepath: tp.Optional[Path] = None, +) -> None: + x = load_embeddings(src_emb, emb_dim, emb_fp16, numpy_header) + y = load_embeddings(tgt_emb, emb_dim, emb_fp16, numpy_header) + x_aux = load_embeddings(src_aux_emb, aux_emb_dim, aux_emb_fp16, numpy_header) + y_aux = load_embeddings(tgt_aux_emb, aux_emb_dim, aux_emb_fp16, numpy_header) + assert (x.shape == y.shape) and (x_aux.shape == y_aux.shape) + _, _, preds = PxSIM( + x, y, x_aux, y_aux, alpha, margin, k, comparator_path, symmetrize_comparator + ) + if prediction_savepath: + with open(prediction_savepath, "w") as outf: + for pred in preds: + print(pred, file=outf) + + +if __name__ == "__main__": + import func_argparse + + func_argparse.main() diff --git a/laser/source/sent_classif.py b/laser/source/sent_classif.py new file mode 100644 index 0000000000000000000000000000000000000000..ca01cd1f2f8c305b392ac7a3b21318cd5c87d60d --- /dev/null +++ b/laser/source/sent_classif.py @@ -0,0 +1,273 @@ +#!/usr/bin/python +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# -------------------------------------------------------- +# +# Simple MLP classifier for sentence embeddings + + +import argparse +import copy +import numpy as np +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.optim as optim +import torch.utils.data as data_utils + + +################################################ + +def LoadData(bdir, dfn, lfn, dim=1024, bsize=32, shuffle=False, quiet=False): + x = np.fromfile(bdir + dfn, dtype=np.float32, count=-1) + x.resize(x.shape[0] // dim, dim) + + lbl = np.loadtxt(bdir + lfn, dtype=np.int32) + lbl.reshape(lbl.shape[0], 1) + if not quiet: + print(' - read {:d}x{:d} elements in {:s}'.format(x.shape[0], x.shape[1], dfn)) + print(' - read {:d} labels [{:d},{:d}] in {:s}' + .format(lbl.shape[0], lbl.min(), lbl.max(), lfn)) + + D = data_utils.TensorDataset(torch.from_numpy(x), torch.from_numpy(lbl)) + loader = data_utils.DataLoader(D, batch_size=bsize, shuffle=shuffle) + return loader + + +################################################ + +class Net(nn.Module): + def __init__(self, idim=1024, odim=2, nhid=None, + dropout=0.0, gpu=0, activation='TANH'): + super(Net, self).__init__() + self.gpu = gpu + modules = [] + + modules = [] + print(' - mlp {:d}'.format(idim), end='') + if len(nhid) > 0: + if dropout > 0: + modules.append(nn.Dropout(p=dropout)) + nprev = idim + for nh in nhid: + if nh > 0: + modules.append(nn.Linear(nprev, nh)) + nprev = nh + if activation == 'TANH': + modules.append(nn.Tanh()) + print('-{:d}t'.format(nh), end='') + elif activation == 'RELU': + modules.append(nn.ReLU()) + print('-{:d}r'.format(nh), end='') + else: + raise Exception('Unrecognized activation {activation}') + if dropout > 0: + modules.append(nn.Dropout(p=dropout)) + modules.append(nn.Linear(nprev, odim)) + print('-{:d}, dropout={:.1f}'.format(odim, dropout)) + else: + modules.append(nn.Linear(idim, odim)) + print(' - mlp %d-%d'.format(idim, odim)) + self.mlp = nn.Sequential(*modules) + # Softmax is included CrossEntropyLoss ! + + if self.gpu >= 0: + self.mlp = self.mlp.cuda() + + def forward(self, x): + return self.mlp(x) + + def TestCorpus(self, dset, name=' Dev', nlbl=4): + correct = 0 + total = 0 + self.mlp.train(mode=False) + corr = np.zeros(nlbl, dtype=np.int32) + for data in dset: + X, Y = data + Y = Y.long() + if self.gpu >= 0: + X = X.cuda() + Y = Y.cuda() + outputs = self.mlp(X) + _, predicted = torch.max(outputs.data, 1) + total += Y.size(0) + correct += (predicted == Y).int().sum() + for i in range(nlbl): + corr[i] += (predicted == i).int().sum() + + print(' | {:4s}: {:5.2f}%' + .format(name, 100.0 * correct.float() / total), end='') + print(' | classes:', end='') + for i in range(nlbl): + print(' {:5.2f}'.format(100.0 * corr[i] / total), end='') + + return correct, total + + +################################################ + +parser = argparse.ArgumentParser( + formatter_class=argparse.RawDescriptionHelpFormatter, + description="Simple sentence classifier") + +# Data +parser.add_argument( + '--base-dir', '-b', type=str, required=True, metavar='PATH', + help="Directory with all the data files)") +parser.add_argument( + '--save', '-s', type=str, required=False, metavar='PATH', default="", + help="File in which to save best network") +parser.add_argument( + '--train', '-t', type=str, required=True, metavar='STR', + help="Name of training corpus") +parser.add_argument( + '--train-labels', '-T', type=str, required=True, metavar='STR', + help="Name of training corpus (labels)") +parser.add_argument( + '--dev', '-d', type=str, required=True, metavar='STR', + help="Name of development corpus") +parser.add_argument( + '--dev-labels', '-D', type=str, required=True, metavar='STR', + help="Name of development corpus (labels)") +parser.add_argument( + '--test', '-e', type=str, required=True, metavar='STR', + help="Name of test corpus without language extension") +parser.add_argument( + '--test-labels', '-E', type=str, required=True, metavar='STR', + help="Name of test corpus without language extension (labels)") +parser.add_argument( + '--lang', '-L', nargs='+', default=None, + help="List of languages to test on") + +# network definition +parser.add_argument( + "--dim", "-m", type=int, default=1024, + help="Dimension of sentence embeddings") +parser.add_argument( + '--nhid', '-n', type=int, default=[0], nargs='+', + help="List of hidden layer(s) dimensions") +parser.add_argument( + "--nb-classes", "-c", type=int, default=2, + help="Number of output classes") +parser.add_argument( + '--dropout', '-o', type=float, default=0.0, metavar='FLOAT', + help="Value of dropout") +parser.add_argument( + '--nepoch', '-N', type=int, default=100, metavar='INT', + help="Number of epochs") +parser.add_argument( + '--bsize', '-B', type=int, default=128, metavar='INT', + help="Batch size") +parser.add_argument( + '--seed', '-S', type=int, default=123456789, metavar='INT', + help="Initial random seed") +parser.add_argument( + '--lr', type=float, default=0.001, metavar='FLOAT', + help='Learning rate') +parser.add_argument( + '--wdecay', type=float, default=0.0, metavar='FLOAT', + help='Weight decay') +parser.add_argument( + '--gpu', '-g', type=int, default=-1, metavar='INT', + help="GPU id (-1 for CPU)") +args = parser.parse_args() + +print(' - base directory: {}'.format(args.base_dir)) +args.base_dir = args.base_dir + "/" + +train_loader = LoadData(args.base_dir, args.train, args.train_labels, + dim=args.dim, bsize=args.bsize, shuffle=True) + +dev_loader = LoadData(args.base_dir, args.dev, args.dev_labels, + dim=args.dim, bsize=args.bsize, shuffle=False) + +# set GPU and random seed +torch.cuda.set_device(args.gpu) +np.random.seed(args.seed) +torch.manual_seed(args.seed) +torch.cuda.manual_seed(args.seed) +print(" - setting seed to %d" % args.seed) + +# create network +net = Net(idim=args.dim, odim=args.nb_classes, + nhid=args.nhid, dropout=args.dropout, gpu=args.gpu) +if args.gpu >= 0: + criterion = nn.CrossEntropyLoss().cuda() +else: + criterion = nn.CrossEntropyLoss() + +#optimizer = optim.Adam(net.parameters(), weight_decay=0.0) +# default: pytorch/optim/adam.py +# Py0.4: lr=1e-3, betas=(0.9, 0.999), eps=1e-8, weight_decay=0, amsgrad=False): +# Py1.0: lr=1e-3, betas=(0.9, 0.999), eps=1e-8, weight_decay=0, amsgrad=False): +optimizer = optim.Adam(net.parameters(), + lr=args.lr, + weight_decay=args.wdecay, + betas=(0.9, 0.999), + eps=1e-8, + amsgrad=False) + +corr_best = 0 +# loop multiple times over the dataset +for epoch in range(args.nepoch): + + loss_epoch = 0.0 + print('Ep {:4d}'.format(epoch), end='') + # for inputs, labels in train_loader: + for i, data in enumerate(train_loader, 0): + # get the inputs + inputs, labels = data + labels = labels.long() + if args.gpu >= 0: + inputs = inputs.cuda() + labels = labels.cuda() + + # zero the parameter gradients + net.zero_grad() + + # forward + backward + optimize + net.train(mode=True) + outputs = net(inputs) + loss = criterion(outputs, labels) + loss.backward() + optimizer.step() + loss_epoch += loss.item() + + print(' | loss {:e}'.format(loss_epoch), end='') + + corr, nbex = net.TestCorpus(dev_loader, 'Dev') + if corr >= corr_best: + print(' | saved') + corr_best = corr + net_best = copy.deepcopy(net) + else: + print('') + + +if 'net_best' in globals(): + if args.save != '': + torch.save(net_best.cpu(), args.save) + print('Best Dev: {:d} = {:5.2f}%' + .format(corr_best, 100.0 * corr_best.float() / nbex)) + + if args.gpu >= 0: + net_best = net_best.cuda() + + # test on (several) languages + for l in args.lang: + test_loader = LoadData(args.base_dir, args.test + '.' + l, + args.test_labels + '.' + l, + dim=args.dim, bsize=args.bsize, + shuffle=False, quiet=True) + print('Ep best | Eval Test lang {:s}'.format(l), end='') + net_best.TestCorpus(test_loader, 'Test') + print('') diff --git a/laser/source/similarity_search.py b/laser/source/similarity_search.py new file mode 100644 index 0000000000000000000000000000000000000000..c91a8c5168367e8c0acf505f4047c6fa0464dfdf --- /dev/null +++ b/laser/source/similarity_search.py @@ -0,0 +1,113 @@ +#!/usr/bin/python3 +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# -------------------------------------------------------- +# +# Quora Q&A paraphrase detection + +import os +import sys +import argparse +import faiss +import numpy as np + +# get environment +assert os.environ.get('LASER'), 'Please set the enviornment variable LASER' +LASER = os.environ['LASER'] + +sys.path.append(LASER + '/source') +sys.path.append(LASER + '/source/lib') +from embed import SentenceEncoder, EncodeLoad, EncodeFile +from text_processing import Token, BPEfastApply +from indexing import IndexCreate, IndexSearchMultiple, IndexPrintConfusionMatrix + +############################################################################### + +parser = argparse.ArgumentParser('LASER: similarity search') +parser.add_argument('--base-dir', type=str, default='.', + help='Base directory for all data files') +parser.add_argument('--data', type=str, required=True, + help='Direcory and basename of input data (language name will be added)') +parser.add_argument('--output', type=str, required=True, + help='Directory and basename of created data (language name will be added)') +parser.add_argument('--textual', action='store_true', + help='Use textual comparison instead of indicies') +parser.add_argument( + '--lang', '-l', nargs='+', required=True, + help="List of languages to test on") + +# preprocessing +parser.add_argument('--bpe-codes', type=str, required=True, + help='Fast BPPE codes and vocabulary') +parser.add_argument('--verbose', action='store_true', + help='Detailed output') + +# options for encoder +parser.add_argument('--encoder', type=str, required=True, + help='encoder to be used') +parser.add_argument('--buffer-size', type=int, default=100, + help='Buffer size (sentences)') +parser.add_argument('--max-tokens', type=int, default=12000, + help='Maximum number of tokens to process in a batch') +parser.add_argument('--max-sentences', type=int, default=None, + help='Maximum number of sentences to process in a batch') +parser.add_argument('--cpu', action='store_true', + help='Use CPU instead of GPU') + +args = parser.parse_args() + +print('LASER: similarity search') + +print('\nProcessing:') +all_texts = [] +if args.textual: + print(' - using textual comparision') + for l in args.lang: + with open(os.path.join(args.base_dir, args.data + '.' + l), + encoding='utf-8', errors='surrogateescape') as f: + texts = f.readlines() + print(' - {:s}: {:d} lines'.format(args.data + '.' + l, len(texts))) + all_texts.append(texts) + +enc = EncodeLoad(args) + +out_dir = os.path.dirname(args.output) +if not os.path.exists(out_dir): + print(' - creating directory {}'.format(out_dir)) + os.mkdir(out_dir) + +all_data = [] +all_index = [] +for l in args.lang: + Token(os.path.join(args.base_dir, args.data + '.' + l), + os.path.join(args.base_dir, args.output + '.tok.' + l), + lang=l, + romanize=True if l == 'el' else False, + lower_case=True, + verbose=args.verbose, over_write=False) + BPEfastApply(os.path.join(args.base_dir, args.output + '.tok.' + l), + os.path.join(args.base_dir, args.output + '.bpe.' + l), + args.bpe_codes, + verbose=args.verbose, over_write=False) + EncodeFile(enc, + os.path.join(args.base_dir, args.output + '.bpe.' + l), + os.path.join(args.base_dir, args.output + '.enc.' + l), + verbose=args.verbose, over_write=False) + d, idx = IndexCreate(os.path.join(args.base_dir, args.output + '.enc.' + l), + 'FlatL2', + verbose=args.verbose, save_index=False) + all_data.append(d) + all_index.append(idx) + +err = IndexSearchMultiple(all_data, all_index, args.lang, texts=all_texts, + verbose=False, print_errors=False) +IndexPrintConfusionMatrix(err, args.lang) diff --git a/laser/source/xsim.py b/laser/source/xsim.py new file mode 100644 index 0000000000000000000000000000000000000000..d87123ae3b252d7bca5081c659995aad1ab52611 --- /dev/null +++ b/laser/source/xsim.py @@ -0,0 +1,165 @@ +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# -------------------------------------------------------- +# +# Tool to calculate multilingual similarity error rate (xSIM) + +import faiss +import numpy as np +import typing as tp +import os +import json +from enum import Enum + + +class Margin(Enum): + RATIO = "ratio" + DISTANCE = "distance" + ABSOLUTE = "absolute" + + @classmethod + def has_value(cls, value): + return value in cls._value2member_map_ + + +def xSIM( + x: tp.Union[str, np.ndarray], + y: tp.Union[str, np.ndarray], + margin: str = Margin.RATIO.value, + k: int = 4, + dim: int = 1024, + fp16: bool = False, + eval_text: str = None, + augmented_json: str = None, +) -> tp.Tuple[int, int, tp.Dict[str, int]]: + assert Margin.has_value(margin), f"Margin type: {margin}, is not supported." + if not isinstance(x, np.ndarray): + x = _load_embeddings(x, dim, fp16) + if not isinstance(y, np.ndarray): + y = _load_embeddings(y, dim, fp16) + # calculate xSIM error + return calculate_error(x, y, margin, k, eval_text, augmented_json) + + +def _load_embeddings(infile: str, dim: int, fp16: bool = False) -> np.ndarray: + assert os.path.isfile(infile), f"file: {infile} does not exist." + emb = np.fromfile(infile, dtype=np.float16 if fp16 else np.float32) + num_examples = emb.shape[0] // dim + emb.resize(num_examples, dim) + if fp16: + emb = emb.astype(np.float32) # faiss currently only supports fp32 + return emb + + +def score_margin( + Dxy: np.ndarray, + Ixy: np.ndarray, + Ax: np.ndarray, + Ay: np.ndarray, + margin: str, + k: int, +) -> np.ndarray: + nbex = Dxy.shape[0] + scores = np.zeros((nbex, k)) + for i in range(nbex): + for j in range(k): + jj = Ixy[i, j] + a = Dxy[i, j] + b = (Ax[i] + Ay[jj]) / 2 + if margin == Margin.RATIO.value: + scores[i, j] = a / b + else: # distance margin + scores[i, j] = a - b + return scores + + +def _score_knn(x: np.ndarray, y: np.ndarray, k: int, margin: str) -> np.ndarray: + nbex, dim = x.shape + # create index + idx_x = faiss.IndexFlatIP(dim) + idx_y = faiss.IndexFlatIP(dim) + # L2 normalization needed for cosine distance + faiss.normalize_L2(x) + faiss.normalize_L2(y) + idx_x.add(x) + idx_y.add(y) + if margin == Margin.ABSOLUTE.value: + scores, indices = idx_y.search(x, 1) + else: + # return cosine similarity and indices of k closest neighbors + Cos_xy, Idx_xy = idx_y.search(x, k) + Cos_yx, Idx_yx = idx_x.search(y, k) + + # average cosines + Avg_xy = Cos_xy.mean(axis=1) + Avg_yx = Cos_yx.mean(axis=1) + + scores = score_margin(Cos_xy, Idx_xy, Avg_xy, Avg_yx, margin, k) + + # find best + best = scores.argmax(axis=1) + indices = np.zeros((nbex, 1), dtype=np.int32) + for i in range(nbex): + indices[i] = Idx_xy[i, best[i]] + return indices + + +def get_transform(augmented_json, closest_neighbor, src): + if ( + closest_neighbor in augmented_json + and augmented_json[closest_neighbor]["src"] == src + ): + return augmented_json[closest_neighbor]["errtype"] + return "Misaligned" + + +def calculate_error( + x: np.ndarray, + y: np.ndarray, + margin: str = None, + k: int = 4, + eval_text: str = None, + augmented_json: str = None, +) -> tp.Tuple[int, int, tp.Dict[str, int]]: + if augmented_json: + with open(augmented_json) as f: + augmented_json = json.load(f) + assert ( + x.shape[0] < y.shape[0] + ), f"Shape mismatch: {x.shape[0]} >= target {y.shape[0]}" + else: + assert ( + x.shape == y.shape + ), f"number of source {x.shape} / target {y.shape} shapes mismatch, " + nbex = x.shape[0] + augmented_report = {} + + # for each x calculate the highest scoring neighbor from y + closest_neighbor = _score_knn(x, y, k, margin) + + if eval_text: # calc textual error + lines = open(eval_text, encoding="utf-8", errors="surrogateescape").readlines() + err = 0 + for ex in range(nbex): + if lines[ex] != lines[closest_neighbor[ex, 0]]: + err += 1 + if augmented_json: + transform = get_transform( + augmented_json, + lines[closest_neighbor[ex, 0]].strip(), + lines[ex].strip(), + ) + augmented_report[transform] = augmented_report.get(transform, 0) + 1 + else: # calc index error + ref = np.linspace(0, nbex - 1, nbex).astype(int) # [0, nbex) + err = nbex - np.equal(closest_neighbor.reshape(nbex), ref).astype(int).sum() + return err, nbex, augmented_report diff --git a/laser/tasks/CCMatrix/MatrixMine.pdf b/laser/tasks/CCMatrix/MatrixMine.pdf new file mode 100644 index 0000000000000000000000000000000000000000..85a3e565362c55242753823b0f152959a54d9f5a Binary files /dev/null and b/laser/tasks/CCMatrix/MatrixMine.pdf differ diff --git a/laser/tasks/CCMatrix/README.md b/laser/tasks/CCMatrix/README.md new file mode 100644 index 0000000000000000000000000000000000000000..08a3daf7294552d665d7016eed0437fc3d50d959 --- /dev/null +++ b/laser/tasks/CCMatrix/README.md @@ -0,0 +1,39 @@ +# CCMatrix: Mining Billions of High-Quality Parallel Sentences on the WEB + +## Parallel data + +We show that margin-based bitext mining in LASER's multilingual sentence space can be applied to monolingual corpora of billions of sentences to produce high quality aligned translation data. We use thirty-two snapshots of a curated common crawl corpus [1] totaling 69 billion unique sentences. Using one unified approach for 80 languages, we were able to mine 10.8 billion parallel sentences, out of which only 2.9 billion are aligned with English. + +## Download + +We open-source our scripts in this directory so that others may reproduce the data, evaluation and results reported in the CCMatrix paper. +``` +pip3 install cc_net +python3 dl_cc_matrix.py +``` + +Please cite reference [2][3] if you use this data. + + +## Evaluation + +Evaluation +We have assessed the quality of our mined data with bilingual models and multilingual models. + +* Bilingual models [2]: To evaluate the quality of the mined bitexts, we train NMT systems for most of the language pairs and evaluate them on TED, WMT and WAT test sets. Using our mined bitexts only and no human translated parallel data, we achieve a new state-of-the-art for a single system on the WMT'19 test set for translation between English and German, Russian and Chinese, as well as German/French. In particular, our English/German system outperforms the best single one by close to 4 BLEU points and is almost on pair with best WMT'19 evaluation system which uses system combination and back-translation. We also achieve excellent results for distant languages pairs like Russian/Japanese, outperforming the best submission at the 2019 workshop on Asian Translation (WAT). + +* Multilingual models [3]: CCMatrix data is used to train M2M-100, a large-scale Many-to-Many multilingual translation model. The thousands of directions we mine produce training data for direct translations without relying solely on English data. We mine using novel strategy which exploits language groupings and bridge languages to avoid mining every possible direction while maintaining good accuracy. By training on this data and scaling model capacity through model parallelism and language-specific parameters, M2M-100 outperforms English-Centric multilingual models trained on data where either the source or target language is English. The system improves over 10 BLEU on average compared to an English-Centric baseline when translating directly between non-English directions. M2M-100 is competitive to bilingual models from WMT and improves over existing publicly available multilingual translation systems. To download the data, follow our instructions above. To download the models and reproduce the training, click [*here*](https://github.com/pytorch/fairseq/tree/master/examples/m2m_100) + +Please note that additional data filtering was applied before training the M2M-100 model, see [3] for details. +Also, we have improved mining against English which leads to more bitexts, in particular for mid- and low-resources languages. +This new data was not used for M2M-100. + +## References + +[1] Guillaume Wenzek, Marie-Anne Lachaux, Alexis Conneau, Vishrav Chaudhary, Francisco Guzmán, Armand Jouli and Edouard Grave, + [*CCNet: Extracting High Quality Monolingual Datasets from Web Crawl Data*](https://arxiv.org/abs/1911.00359) + +[2] Holger Schwenk, Guillaume Wenzek, Sergey Edunov, Edouard Grave and Armand Joulin, + [*CCMatrix: Mining Billions of High-Quality Parallel Sentences on the WEB*](https://arxiv.org/abs/1911.04944) + +[3] Angela Fan, Shruti Bhosale, Holger Schwenk, Zhiyi Ma, Ahmed El-Kishky, Siddharth Goyal, Mandeep Baines, Onur Celebi, Guillaume Wenzek, Vishrav Chaudhary, Naman Goyal, Tom Birch, Vitaliy Liptchinsky, Sergey Edunov, Edouard Grave, Michael Auli, and Armand Joulin. Beyond English-Centric Multilingual Machine Translation diff --git a/laser/tasks/CCMatrix/dl_cc_matrix.py b/laser/tasks/CCMatrix/dl_cc_matrix.py new file mode 100644 index 0000000000000000000000000000000000000000..7a43b270151b398dd358b96784c0f775a091e2ba --- /dev/null +++ b/laser/tasks/CCMatrix/dl_cc_matrix.py @@ -0,0 +1,338 @@ +import contextlib +import gzip +import logging +import re +import subprocess +import tempfile +from collections import defaultdict +from pathlib import Path +from typing import Callable, Dict, Iterable, List, NamedTuple, Type + +from cc_net.jsonql import open_remote_file, open_write +from cc_net.process_wet_file import CCSegmentsReader +from typing import Sequence +import functools +import multiprocessing + +BUFFER_SIZE = "32G" +SORT_PARALLEL = 8 + +KNOWN_VERSIONS = ["v1.0.0", "v1.0.beta", "v1.0.alpha"] + + +class NormalizedBitextPtr(NamedTuple): + lang_pair: str + line_no: int + segment: str + digest: str + ptr_start: int + ptr_end: int + score: float + + +class Bitext(NamedTuple): + lang_pair: str + line_no: int + score: float + text: str + + +class SimpleBitext(NamedTuple): + line_no: int + score: float + text: str + + +WEB_PAT = re.compile(r"https?:[^ \n]* ") +WEB_REPL = "WEB " + +WEB2_PAT = re.compile(r"https?:[^ \n]*\n") +WEB2_REPL = "WEB\n" + + +def clean_content(raw_content: str) -> str: + # We need to clean all the content, because otherwise there is no way for + # the user to know if we need to clean it or not. + par = raw_content + par = par.replace("", ". ") + par = par.replace("\t", " ") + par = re.sub(WEB_PAT, WEB_REPL, par, count=0) + par = re.sub(WEB2_PAT, WEB2_REPL, par, count=0) + return par + + +def get_typed_parser(cls: Type) -> Callable: + types = cls.__annotations__.values() + + def parser(line: str) -> NamedTuple: + parts = line.rstrip("\n").split("\t") + assert len(parts) == len( + types + ), f"Print size mismatch expected the following columns {cls.__annotations__} got: {parts}" + return cls(*(t(p) for t, p in zip(types, parts))) + + return parser + + +def open_read(file: Path) -> Iterable[str]: + if file.suffix == ".gz": + reader = gzip.open(file, "rt") + else: + reader = open(file, "rt") + with reader as f: + for line in f: + yield line + + +def dl(outdir: Path = Path("data"), version: str = KNOWN_VERSIONS[0], parallelism: int = 8): + """ + Download bitext pointers from FAIR dataset and extract corresponding CC snippets. + - version: Specific version to download + - outdir: Directory where the data should go. Files will be in {outdir}/{version}/raw/ + """ + assert version in KNOWN_VERSIONS, f"Unknown version {version}, chose from {KNOWN_VERSIONS}" + metadata_dir = f"https://dl.fbaipublicfiles.com/laser/CCMatrix/{version}" + file_list = [l.strip() for l in open_remote_file(metadata_dir + "/list.txt")] + outdir.mkdir(exist_ok=True) + outdir = outdir / version / "raw" + outdir.mkdir(exist_ok=True, parents=True) + + dlf = functools.partial(dl_file, metadata_dir, outdir) + # list(map(dlf, file_list)) + with multiprocessing.Pool(parallelism) as pool: + pool.map(dlf, file_list) + + +def get_documents(segment: str) -> Dict[str, str]: + return {d["digest"]: d["raw_content"] for d in CCSegmentsReader([segment])} + + +def dl_file(metadata_dir: str, outdir: Path, file: str): + metadata = "/".join((metadata_dir, file)) + parser = get_typed_parser(NormalizedBitextPtr) + found_bitext, missed_bitext, skipped_line = 0, 0, 0 + segment = "" + segment_downloads: Dict[str, int] = defaultdict(int) + raw_documents: Dict[str, str] = {} + cleaned_documents: Dict[str, str] = {} + + outfile = outdir / file + if outfile.exists(): + return + o = FileWriterWithTmp(outfile) + for i, line in enumerate(open_remote_file(metadata)): + try: + bitext: NormalizedBitextPtr = parser(line) + # Add some more assert in case the line is invalid but still parse + assert bitext.segment.startswith("crawl-data/") + assert bitext.digest.startswith("sha1:") + except AssertionError: + logging.error(f"Skipping line {i}: {line}") + skipped_line += 1 + continue + + if not segment or bitext.segment != segment: + segment = bitext.segment + segment_downloads[segment] += 1 + # Load segment in RAM, purge document cache + raw_documents = get_documents(segment) + cleaned_documents = {} + + raw_doc = raw_documents.get(bitext.digest) + if raw_doc is None: + logging.error(f"Document not found: {bitext.digest} in {segment}") + missed_bitext += 1 + continue + + clean_doc = cleaned_documents.get(bitext.digest) + if clean_doc is None: + clean_doc = clean_content(raw_doc) + cleaned_documents[bitext.digest] = clean_doc + + text = clean_doc[bitext.ptr_start : bitext.ptr_end] + score = getattr(bitext, "score", 0.0) + bt = Bitext(bitext.lang_pair, bitext.line_no, score, text) + print(*bt, sep="\t", file=o) + + o.close(True) + logging.info(f"Found {found_bitext} sentences, missed {missed_bitext} sentences.") + if skipped_line > 0: + logging.error(f"Skipped {skipped_line} unparsable lines") + expected_dl = len(segment_downloads) + actual_dl = sum(segment_downloads.values()) + + if actual_dl != expected_dl: + logging.error( + f"Some segments where downloaded twice. Total dl: {actual_dl}, distinct dl: {expected_dl}" + ) + + +def _tmp(file: Path) -> Path: + tmp_dir = file.parent + prefix = file.name.split(".", 1)[0] + "." + suffix = ".tmp." + file.name[len(prefix) :] + _, tmp_path = tempfile.mkstemp(dir=tmp_dir, prefix=prefix, suffix=suffix) + return Path(tmp_path) + + +class FileWriterWithTmp: + def __init__(self, file: Path): + self.file = file + self.tmp_file = _tmp(file) + # We don't want to make FileWriterWithTmp a ContextManager + self.handle = open_write(self.tmp_file).__enter__() + + def write(self, data) -> int: + return self.handle.write(data) + + def close(self, success: bool = False): + self.handle.close() + if success: + self.tmp_file.rename(self.file) + + +def transpose_file(outdir: Path, file: Path) -> None: + sentinel_file = file.with_suffix(".transposed") + if sentinel_file.exists(): + return + outputs: Dict[str, FileWriterWithTmp] = {} + parser = get_typed_parser(Bitext) + success = False + try: + for line in open_read(file): + bt: Bitext = parser(line) + lang_pair = bt.lang_pair + if bt.lang_pair not in outputs: + assert ( + "/" in lang_pair + ), f"Invalid lang pair '{lang_pair}' should be 'src-trg/src' or 'src-trg/trg'" + (outdir / f"{lang_pair}").mkdir(exist_ok=True, parents=True) + o = FileWriterWithTmp(outdir / f"{lang_pair}_{file.name}") + outputs[lang_pair] = o + simple_bt = SimpleBitext(bt.line_no, bt.score, bt.text) + print(*simple_bt, sep="\t", file=outputs[lang_pair]) + success = True + finally: + for o in outputs.values(): + o.close(success) + if success: + sentinel_file.write_text("\n".join(str(o.file) for o in outputs.values())) + # file.unlink() + + +def sort_files(outdir: Path, lang_pair_dir: Path, lang: str) -> Path: + out = outdir / lang_pair_dir.name / f"{lang}.txt" + if out.exists(): + return out + + files: List[Path] = [] + for f in lang_pair_dir.iterdir(): + if not f.suffix == ".gz": + continue + if f.name.split("_")[0] != lang: + continue + files.append(f) + + print(f"Found {len(files)} files for lang '{lang}' in {lang_pair_dir}: {files}") + assert len(files) > 0 + + (outdir / lang_pair_dir.name).mkdir(exist_ok=True, parents=True) + tmp_out = _tmp(out) + + unzipped_files = [] + for f in files: + subprocess.check_call(["gunzip", "-k", str(f)]) + unzipped_files.append(str(f)[:-3]) + + sort_cmd = [ + "sort", + "-nk1", + f"--parallel={SORT_PARALLEL}", + f"--buffer-size={BUFFER_SIZE}", + "--output", + str(tmp_out), + ] + unzipped_files + subprocess.check_call(sort_cmd) + tmp_out.rename(out) + return out + + +def finalize( + outdir: Path = Path("data"), version: str = KNOWN_VERSIONS[0], pairs: Sequence[str] = [] +) -> None: + """From the downloaded raw text files, extract the bitexts, sorted by language pair. + Assumes 'dl' has been run with the same outdir and version before. + + - version: Specific version to download + - outdir: Directory where the data should go. Files will be in {outdir}/{version}/bitext/ + - pairs: List of language pairs you are interested in. Defaults to all. + """ + raw_dir = outdir / version / "raw" + if not raw_dir.is_dir(): + cmd = f"python {__file__} dl --outdir {outdir} --version {version}" + assert raw_dir.is_dir(), f"Dir not found {raw_dir}. Did you run following command?\n{cmd}" + + raw_files = list(raw_dir.glob("*.gz")) + split_dir = outdir / version / "split_by_lang" + split_dir.mkdir(exist_ok=True, parents=True) + tr = functools.partial(transpose_file, split_dir) + with multiprocessing.Pool() as pool: + pool.map(tr, raw_files) + + bitext_dir = outdir / version / "bitext" + bitext_dir.mkdir(exist_ok=True, parents=True) + if pairs: + pair_dirs = [] + for pair in pairs: + assert ( + len(pair.split("-")) == 2 + ), f"Invalid pair '{pair}', should be 'src-trg'" + pair_dir = split_dir / pair + assert ( + pair_dir.is_dir() + ), f"Dir {pair_dir} not found for lang pair '{pair}'. Is the pair valid ?" + pair_dirs.append(pair_dir) + else: + pair_dirs = [d for d in split_dir.iterdir() if d.is_dir()] + + for pair_dir in pair_dirs: + src, trg = pair_dir.name.split("-") + src_file = sort_files(bitext_dir, pair_dir, src) + trg_file = sort_files(bitext_dir, pair_dir, trg) + validate(src_file, trg_file) + + +def validate(src_file: Path, trg_file: Path) -> None: + """Checks that the segments in the given batch are valid.""" + lines_src, lines_trg, found_pairs = 0, 0, 0 + parser = get_typed_parser(SimpleBitext) + with open(src_file) as src_f, open(trg_file) as trg_f: + src_l = src_f.readline() + trg_l = trg_f.readline() + while src_l and trg_l: + src: SimpleBitext = parser(src_l) + trg: SimpleBitext = parser(trg_l) + if src.line_no <= trg.line_no: + lines_src += 1 + src_l = src_f.readline() + if trg.line_no <= src.line_no: + lines_trg += 1 + trg_l = trg_f.readline() + if trg.line_no == src.line_no: + found_pairs += 1 + + if found_pairs == lines_src and found_pairs == lines_trg: + logging.info( + f"Validated {src_file} and {trg_file}. Found {found_pairs} bitexts." + ) + else: + logging.error( + f"Validated {src_file} and {trg_file}. " + f"Found {found_pairs} bitexts, from {lines_src} in {src_file} and {lines_trg} in {trg_file}" + ) + + +if __name__ == "__main__": + import func_argparse + + func_argparse.main(dl, finalize) diff --git a/laser/tasks/SentimentAnalysis/README.md b/laser/tasks/SentimentAnalysis/README.md new file mode 100644 index 0000000000000000000000000000000000000000..488c45613b7accda43f95af4bf9eb3a0b536c7f3 --- /dev/null +++ b/laser/tasks/SentimentAnalysis/README.md @@ -0,0 +1,34 @@ +# Laser Encoder: Sentiment Analysis + +## Overview + +This project demonstrates the application of the Laser Encoder tool for creating sentence embeddings in the context of sentiment analysis. The Laser Encoder is used to encode text data, and a sentiment analysis model is trained to predict the sentiment of the text. + +## Getting Started + +To run the notebook in Google Colab, click the "Open in Colab" button below: + +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/NIXBLACK11/LASER-fork/blob/Sentiment-analysis-laser/tasks/SentimentAnalysis/SentimentAnalysis.ipynb) + +Also, check out the hugging face space with the button below: + +[![Open In Hugging Face Space](https://img.shields.io/badge/Open%20In-Hugging%20Face%20Space-blue?logo=huggingface)](https://huggingface.co/spaces/NIXBLACK/SentimentAnalysis_LASER_) + + +## Example Usage + +Run the Example Notebook: + Execute the provided Jupyter Notebook SentimentAnalysis.ipynb + + jupyter notebook SentimentAnalysis.ipynb + + +## Customization + +- Modify the model architecture, hyperparameters, and training settings in the neural network model section based on your requirements. +- Customize the sentiment mapping and handling of unknown sentiments in the data preparation section. + +## Additional Notes +- Feel free to experiment with different models, embeddings, and hyperparameters to optimize performance. +- Ensure that the dimensions of embeddings and model inputs are compatible. +Adapt the code based on your specific dataset and use case. diff --git a/laser/tasks/SentimentAnalysis/SentimentAnalysis.ipynb b/laser/tasks/SentimentAnalysis/SentimentAnalysis.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..adec6b51d1b2b4c46e6e61b8936aace94bb4b00e --- /dev/null +++ b/laser/tasks/SentimentAnalysis/SentimentAnalysis.ipynb @@ -0,0 +1,8073 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "OUrFprmDa40H" + }, + "source": [ + "# Tutorial: Sentiment Analysis with LASER Embeddings and RNN\n", + "\n", + "In this tutorial, we will guide you through the process of installing the necessary libraries, downloading a sentiment analysis dataset, and building a sentiment analysis model using [LASER](https://github.com/facebookresearch/LASER) embeddings and a Recurrent Neural Network (RNN).\n", + "Despite being trained on English-language data, the model accurately analyzes texts in various languages.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hJETScFpJkyu" + }, + "source": [ + "## Step 1: Installing Laser Encoder\n", + "\n", + "To begin, let's install the laser_encoders library along with its dependencies. These include sacremoses, sentencepiece, and fairseq. You can achieve this by running the following command:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "KZ_Eqn90J6CK", + "outputId": "4c8d8e6c-93d6-4072-af76-d8245f929ece" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting laser_encoders\n", + " Downloading laser_encoders-0.0.1-py3-none-any.whl (24 kB)\n", + "Collecting sacremoses==0.1.0 (from laser_encoders)\n", + " Downloading sacremoses-0.1.0-py3-none-any.whl (895 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m895.1/895.1 kB\u001b[0m \u001b[31m5.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting unicategories>=0.1.2 (from laser_encoders)\n", + " Downloading unicategories-0.1.2.tar.gz (12 kB)\n", + " Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "Collecting sentencepiece>=0.1.99 (from laser_encoders)\n", + " Downloading sentencepiece-0.1.99-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.3/1.3 MB\u001b[0m \u001b[31m26.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: numpy>=1.21.3 in /usr/local/lib/python3.10/dist-packages (from laser_encoders) (1.23.5)\n", + "Requirement already satisfied: torch>=1.10.0 in /usr/local/lib/python3.10/dist-packages (from laser_encoders) (2.1.0+cu118)\n", + "Collecting fairseq>=0.12.2 (from laser_encoders)\n", + " Downloading fairseq-0.12.2.tar.gz (9.6 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m9.6/9.6 MB\u001b[0m \u001b[31m70.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Installing build dependencies ... \u001b[?25l\u001b[?25hdone\n", + " Getting requirements to build wheel ... \u001b[?25l\u001b[?25hdone\n", + " Installing backend dependencies ... \u001b[?25l\u001b[?25hdone\n", + " Preparing metadata (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n", + "Requirement already satisfied: regex in /usr/local/lib/python3.10/dist-packages (from sacremoses==0.1.0->laser_encoders) (2023.6.3)\n", + "Requirement already satisfied: click in /usr/local/lib/python3.10/dist-packages (from sacremoses==0.1.0->laser_encoders) (8.1.7)\n", + "Requirement already satisfied: joblib in /usr/local/lib/python3.10/dist-packages (from sacremoses==0.1.0->laser_encoders) (1.3.2)\n", + "Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from sacremoses==0.1.0->laser_encoders) (4.66.1)\n", + "Requirement already satisfied: cffi in /usr/local/lib/python3.10/dist-packages (from fairseq>=0.12.2->laser_encoders) (1.16.0)\n", + "Requirement already satisfied: cython in /usr/local/lib/python3.10/dist-packages (from fairseq>=0.12.2->laser_encoders) (3.0.6)\n", + "Collecting hydra-core<1.1,>=1.0.7 (from fairseq>=0.12.2->laser_encoders)\n", + " Downloading hydra_core-1.0.7-py3-none-any.whl (123 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m123.8/123.8 kB\u001b[0m \u001b[31m17.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting omegaconf<2.1 (from fairseq>=0.12.2->laser_encoders)\n", + " Downloading omegaconf-2.0.6-py3-none-any.whl (36 kB)\n", + "Collecting sacrebleu>=1.4.12 (from fairseq>=0.12.2->laser_encoders)\n", + " Downloading sacrebleu-2.3.3-py3-none-any.whl (106 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m106.4/106.4 kB\u001b[0m \u001b[31m4.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting bitarray (from fairseq>=0.12.2->laser_encoders)\n", + " Downloading bitarray-2.8.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (279 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m279.9/279.9 kB\u001b[0m \u001b[31m27.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: torchaudio>=0.8.0 in /usr/local/lib/python3.10/dist-packages (from fairseq>=0.12.2->laser_encoders) (2.1.0+cu118)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->laser_encoders) (3.13.1)\n", + "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->laser_encoders) (4.5.0)\n", + "Requirement already satisfied: sympy in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->laser_encoders) (1.12)\n", + "Requirement already satisfied: networkx in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->laser_encoders) (3.2.1)\n", + "Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->laser_encoders) (3.1.2)\n", + "Requirement already satisfied: fsspec in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->laser_encoders) (2023.6.0)\n", + "Requirement already satisfied: triton==2.1.0 in /usr/local/lib/python3.10/dist-packages (from torch>=1.10.0->laser_encoders) (2.1.0)\n", + "Requirement already satisfied: appdirs in /usr/local/lib/python3.10/dist-packages (from unicategories>=0.1.2->laser_encoders) (1.4.4)\n", + "Collecting antlr4-python3-runtime==4.8 (from hydra-core<1.1,>=1.0.7->fairseq>=0.12.2->laser_encoders)\n", + " Downloading antlr4-python3-runtime-4.8.tar.gz (112 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m112.4/112.4 kB\u001b[0m \u001b[31m15.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "Requirement already satisfied: PyYAML>=5.1.* in /usr/local/lib/python3.10/dist-packages (from omegaconf<2.1->fairseq>=0.12.2->laser_encoders) (6.0.1)\n", + "Collecting portalocker (from sacrebleu>=1.4.12->fairseq>=0.12.2->laser_encoders)\n", + " Downloading portalocker-2.8.2-py3-none-any.whl (17 kB)\n", + "Requirement already satisfied: tabulate>=0.8.9 in /usr/local/lib/python3.10/dist-packages (from sacrebleu>=1.4.12->fairseq>=0.12.2->laser_encoders) (0.9.0)\n", + "Collecting colorama (from sacrebleu>=1.4.12->fairseq>=0.12.2->laser_encoders)\n", + " Downloading colorama-0.4.6-py2.py3-none-any.whl (25 kB)\n", + "Requirement already satisfied: lxml in /usr/local/lib/python3.10/dist-packages (from sacrebleu>=1.4.12->fairseq>=0.12.2->laser_encoders) (4.9.3)\n", + "Requirement already satisfied: pycparser in /usr/local/lib/python3.10/dist-packages (from cffi->fairseq>=0.12.2->laser_encoders) (2.21)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2->torch>=1.10.0->laser_encoders) (2.1.3)\n", + "Requirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy->torch>=1.10.0->laser_encoders) (1.3.0)\n", + "Building wheels for collected packages: fairseq, unicategories, antlr4-python3-runtime\n", + " Building wheel for fairseq (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for fairseq: filename=fairseq-0.12.2-cp310-cp310-linux_x86_64.whl size=11291812 sha256=d6e901a4343c5ff920f12c372773eda078dda7be8955c66d11406617e3dc3519\n", + " Stored in directory: /root/.cache/pip/wheels/e4/35/55/9c66f65ec7c83fd6fbc2b9502a0ac81b2448a1196159dacc32\n", + " Building wheel for unicategories (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for unicategories: filename=unicategories-0.1.2-py2.py3-none-any.whl size=30843 sha256=31556e02d7c4d0d4e0091974bbf384f04859b44ed83cc3b393d2810a9e4f2027\n", + " Stored in directory: /root/.cache/pip/wheels/0b/6d/14/7135674b9daa3996f7f0d9bc1ccff5b7d50d6f1c4a16dc7d90\n", + " Building wheel for antlr4-python3-runtime (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for antlr4-python3-runtime: filename=antlr4_python3_runtime-4.8-py3-none-any.whl size=141210 sha256=34c258aea7d9045a058a75577c46fa94f3f766635f64f8e261bff829d5ddf52d\n", + " Stored in directory: /root/.cache/pip/wheels/a7/20/bd/e1477d664f22d99989fd28ee1a43d6633dddb5cb9e801350d5\n", + "Successfully built fairseq unicategories antlr4-python3-runtime\n", + "Installing collected packages: sentencepiece, bitarray, antlr4-python3-runtime, unicategories, sacremoses, portalocker, omegaconf, colorama, sacrebleu, hydra-core, fairseq, laser_encoders\n", + "Successfully installed antlr4-python3-runtime-4.8 bitarray-2.8.4 colorama-0.4.6 fairseq-0.12.2 hydra-core-1.0.7 laser_encoders-0.0.1 omegaconf-2.0.6 portalocker-2.8.2 sacrebleu-2.3.3 sacremoses-0.1.0 sentencepiece-0.1.99 unicategories-0.1.2\n" + ] + } + ], + "source": [ + "! pip install laser_encoders" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "F-BHLZZTbq5_" + }, + "source": [ + "This ensures that you have all the required packages for this tutorial." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4qYPrbjXcNjK" + }, + "source": [ + "## Step 2: Install Additional Libraries\n", + "\n", + "Before we proceed, let's install the chardet library, which is handy for detecting the encoding of the dataset." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "bxnIqaniSXbG", + "outputId": "d000e9cf-aa56-4173-de99-3d8f733ffdb5" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: chardet in /usr/local/lib/python3.10/dist-packages (5.2.0)\n", + "Collecting datasets\n", + " Downloading datasets-2.15.0-py3-none-any.whl (521 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m521.2/521.2 kB\u001b[0m \u001b[31m4.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/dist-packages (from datasets) (1.23.5)\n", + "Requirement already satisfied: pyarrow>=8.0.0 in /usr/local/lib/python3.10/dist-packages (from datasets) (9.0.0)\n", + "Collecting pyarrow-hotfix (from datasets)\n", + " Downloading pyarrow_hotfix-0.6-py3-none-any.whl (7.9 kB)\n", + "Collecting dill<0.3.8,>=0.3.0 (from datasets)\n", + " Downloading dill-0.3.7-py3-none-any.whl (115 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m115.3/115.3 kB\u001b[0m \u001b[31m16.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from datasets) (1.5.3)\n", + "Requirement already satisfied: requests>=2.19.0 in /usr/local/lib/python3.10/dist-packages (from datasets) (2.31.0)\n", + "Requirement already satisfied: tqdm>=4.62.1 in /usr/local/lib/python3.10/dist-packages (from datasets) (4.66.1)\n", + "Requirement already satisfied: xxhash in /usr/local/lib/python3.10/dist-packages (from datasets) (3.4.1)\n", + "Collecting multiprocess (from datasets)\n", + " Downloading multiprocess-0.70.15-py310-none-any.whl (134 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m134.8/134.8 kB\u001b[0m \u001b[31m19.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: fsspec[http]<=2023.10.0,>=2023.1.0 in /usr/local/lib/python3.10/dist-packages (from datasets) (2023.6.0)\n", + "Requirement already satisfied: aiohttp in /usr/local/lib/python3.10/dist-packages (from datasets) (3.9.1)\n", + "Requirement already satisfied: huggingface-hub>=0.18.0 in /usr/local/lib/python3.10/dist-packages (from datasets) (0.19.4)\n", + "Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from datasets) (23.2)\n", + "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from datasets) (6.0.1)\n", + "Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (23.1.0)\n", + "Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (6.0.4)\n", + "Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (1.9.3)\n", + "Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (1.4.0)\n", + "Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (1.3.1)\n", + "Requirement already satisfied: async-timeout<5.0,>=4.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (4.0.3)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.18.0->datasets) (3.13.1)\n", + "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.18.0->datasets) (4.5.0)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->datasets) (3.3.2)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->datasets) (3.6)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->datasets) (2.0.7)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->datasets) (2023.11.17)\n", + "Requirement already satisfied: python-dateutil>=2.8.1 in /usr/local/lib/python3.10/dist-packages (from pandas->datasets) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->datasets) (2023.3.post1)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.1->pandas->datasets) (1.16.0)\n", + "Installing collected packages: pyarrow-hotfix, dill, multiprocess, datasets\n", + "Successfully installed datasets-2.15.0 dill-0.3.7 multiprocess-0.70.15 pyarrow-hotfix-0.6\n" + ] + } + ], + "source": [ + "!pip install chardet\n", + "!pip install datasets" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "rgBj7FdeVIZn" + }, + "source": [ + "## Step 3: Import Necessary Libraries\n", + "\n", + "Now, let's import the libraries required for data manipulation, encoding, and model building." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "LN0F4-9AR8_k" + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import chardet\n", + "import matplotlib.pyplot as plt\n", + "from laser_encoders import LaserEncoderPipeline\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import accuracy_score\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.preprocessing import LabelEncoder\n", + "from tensorflow.keras.models import Sequential\n", + "from tensorflow.keras.layers import Dense\n", + "from tqdm import tqdm\n", + "from datasets import load_dataset\n", + "from collections import Counter" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HI_joOxsc-l7" + }, + "source": [ + "These libraries will be crucial for various stages of the tutorial." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "RPQyhOAyVM-X" + }, + "source": [ + "## Step 4: Load the Dataset\n", + "\n", + "\n", + "The provided code loads a Twitter sentiment analysis dataset named \"carblacac/twitter-sentiment-analysis\" using the Hugging Face datasets library.\n", + "You can explore the dataset at [Twitter sentiment analysis](https://huggingface.co/datasets/carblacac/twitter-sentiment-analysis)." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 625, + "referenced_widgets": [ + "f720e5b0f068453895e8f931d83792bd", + "09adc94479c14590971e97b21b6a5d6e", + "93283eaea26547c891d16c64e20d3fb4", + "d36b419d21734f09b8667362c11536b4", + "ef1231caedd343a08a2b08e8f513a67f", + "49600a623e5a423b8299aa12527c172e", + "0eac091d915340a5948cf80aed896ef8", + "6898685d25ee4805b7fec0378365ffa0", + "f174f333e840477ba96c910213a81d0a", + "b79d7facd6d7485cb92dc4c053551e40", + "ddac597cb7134c098050fc68de47b478", + "ff9f1d437bac40b0aa93e4839069deb2", + "07078068134d4a11987f88bdf0b08f17", + "fc4458f874424781bbd52adc4f441a37", + "0925e66d052145bcb3480604f3da4cda", + "4f4ae616c7c343edada8b37ca4027125", + "b1b81a92053b4c3fa5c76caef02563b6", + "c4012bd1af3945f28f62c7c1307458e5", + "d04039432648443082f031df11d445c9", + "028b74f6c2fe4fd999507b3ed0f03f21", + "ece324a1271b46b98a8b6fd5ba384236", + "8471e543444f44f09e59b4fe964ed82e", + "ed79c826a7194b5a9942671d86e2379d", + "8194ea8f5b0a4c8cb5f999ec0c87a633", + "81b0c62b427040c0a085e7e63db46ac3", + "91799ab4c0864ba9a9a8dd54f73cf7a4", + "91598533cd7f48f5a708543bf5f3bab6", + "543c8cc6dd0f4ccd99e48c038543cd9f", + "debe32e761d34be1a2c30d801a2451be", + "d958d6f7c1284adeae233a13353ba3d0", + "49a44fb68bca4ea19a6ffcf794f3039a", + "e991a429e51d4980b1374992b1bd3fb3", + "6224481255304438bafa996d1981bd9b", + "822edeea9ecf4c16b9bcf7951eed3792", + "8e4c08035b694012922777750beb333e", + "0b19af29fefa46749ec3efa4af03bd85", + "4f6d03ac52c04d3f8da9b7796054b648", + "2c73ded880e14d7fbae4d3abc94262c2", + "92459ab6b11d47dba3db1fc162972efd", + "91a1b97822fc40eeb827c34fd15c74b6", + "de9ac409b2104355b33f3224a58d5d24", + "103a16e8a0cb4abeaff11b881ad45cd7", + "48a424c068e247b889628fe97265550a", + "cd33f15aee464f798cba807dce8440e9", + "a441f30832cc435c8bbe4176a4eb6397", + "38e802c8fcee4125815f972d7c7a0fff", + "cf58b80e62454c939e14a0cf451a0aa2", + "94dad8d2649c403dbb443c7e3d8b1097", + "6daf5ef868b847d397fb3924b1b74d35", + "95991639ef264d37a509f8bd9ecdf7c8", + "f7d58ab0578b49e39939c05192016146", + "9d0edf01c6574b6da5e2fd9ffc9146aa", + "935634cd3d1340d3986110539c3fcc76", + "2001d69064ec4b78be911fe41c06b468", + "074215c3ae704b939e205bc604a6339d", + "caf5cd41ecb44a50b80508f7cb6792f2", + "2ada78a1a43a42668dba150700b257ea", + "abdd89a240da41858e2eedbe80a3a084", + "7ed6cb7e905f43768e21ceb29c674215", + "e8aa467e689c47c5a52738dc8620d529", + "75560191f732426e8d48348d9519c1f0", + "bbae5295c7814f8aa8a83b6c7c4622f2", + "f73ecd74491647148a180a05c52e69b8", + "f312478e6d794daa9625836628caf03f", + "0cc7dfd0ff934b649b76b3917602f1be", + "afd3066953514cd59f31e15e4d2915e7", + "a652e69a7c0044f190068adae92d4461", + "146c22e8c0654103944d314f183beac1", + "9384d6d22f3643219151ad248a0d2fc7", + "5780154511334024bedf4323a4c87227", + "f6d52c07e696497c9744d30e48c4f8ba", + "848fb54cd20347f8b61579415190dd92", + "9e5e85f4d62b4a699c28f7cf5567dd46", + "017322c8e90b48ae9164efe2569c2727", + "9658ed7253c940548fb40a4b320ac1b4", + "390e468c3044442aacca917d23d5709d", + "eb1a99d40b2b426a80884f1577f18948", + "489f5cfe7b244bdd85122db470ad7d2a", + "0799153be5ac4d209c20817dfd187cf8", + "7188ef2547fb49a79f044755eda0e7ca", + "70b549e449864f4795d7fca0ceb21b3a", + "458ec4577122485dae1acbf046fb6701", + "c6bf49b2298c4d9eb9035fb860b539e7", + "eff0a998e46046fe8cbeed279d4956c3", + "a2956bc417f8442a93ace1630b4f6c5c", + "1e3ece313db34ed89f7c97bda5d94136", + "26215544657644888e95c477b5875804", + "a2c144716157471f86cff341ec3a188e", + "55130e2f028e4711a48477b69601295d", + "93cb42215da44d2ba4213b835d252eab", + "94d0bf4b5dce4ec8b33600c8b3472630", + "c55c9f7cf12b40a4bf753945ddd96f05", + "1fa1643b342b485d9b6697d7cefeddac", + "dd417a969ac849baa6929d18ada5d1c9", + "dfdcf8520708413da2dc151f41c193c0", + "c0fb53db671b4d26ac06c6c3c9933b15", + "0da9f1a610f244249d7dbe73df3ac5ee", + "0169f1f662334c438b88fcdadfbcbfd4", + "ba97193bfa6442bb929be164fc9a7463", + "36bd99d5f08c4fdabada7157edff32ea", + "5c9e7ebc6e5d41bab8328e93513913ad", + "f2b117616f3b4eedb96986bab63a6692", + "91e0f48982364466a14fbd0c5364d336", + "28514f23fe78478faf8d4ee54c03f573", + "adb329d31dc94bbb9447099ee12802a4", + "e46269bca9ac4f289ae58b63a9b50c05", + "727e09b03a2841fab93af2ccdc800619", + "b240fb02e8184aa58d1eba709b1991bc", + "1e467554461f4cc2ae842712b59feea8", + "28848374ffd84ecd869acd909f966885", + "6970e3f5318c425bb682a11fe2710eb8", + "93cd1a99f280417fa21c10147d3086a2", + "88c000f55dbb48129f1d719207084ddb", + "f4eda86e937a4a548024f662723e37a3", + "199692beb0204413b8e3212ea7a3a030", + "bdb1639f2264475c96a6665fd0a16fdf", + "87007da808364f3a8f464fed05c92a0d", + "e932af18b3734c50b3d7d12972408a8d", + "9e9516808b2e406c9e1010f23d5b26c0", + "70f0780e3ac143eaa5793bd75b1dd0d4", + "62c52ca8fa1147c594cfc1b0e891992f", + "40f69f00418b4f3e90061376bac624d5", + "dc0da9cdfd2e41998f4e2f3a04dfc658", + "a4493afa196e4888aa1d1b2b06a181a0", + "c25e4db8dbbc4aef980fa2463678306f", + "2a432c2f7e4b44c2926fc6a5460c27ed", + "c7d932f531e0499ab8318f32834dae51", + "a50c23d78cc445879300f98af0ac69ae", + "8774f73644024974a3116309684f0c7c", + "85d4eb30714f4d66b1fe1f77887554ca", + "7d8e46bd108d41adae04baa12963bb56", + "5d5a7becafcb45808dfe65cb660e6827", + "27ce5829e05149a39ea9afd2e6f0fc98", + "aae06c7d529c418b9841a348bc444d3a", + "52a4fd97b2094096a0a23d8bb097a686", + "1ce195a3a1354811945728f81568da2a", + "e0f1add308c74732b8e488e2057becf4", + "6f1ca069baf04a5da2861661dadbc662", + "8af4d1f70cd944ddadf8ea36ac38c58e", + "400f27da06e749d5be0a61accaf43a0c", + "3f813851ad10411ab48f26e765dc9cff", + "2908cee0b3524c82a262c0d5b78fddfb", + "35710d549e274f58abd02c54be72c6c2", + "46e5647a158d4d83a89a08991191bcbb", + "1dff1987bcc64508b236a2a5bf9cec2a", + "70f57872c19447aa9b0d2d9e5bcf0570", + "461c8ba97e25462189b95f238a27044e", + "f7985d5de72648c2a4334b89ee603f7c", + "43da3b6e0120420bacc56bb081c560ec", + "031f9bd8994f498db14409e4e7f1cf03", + "6c4658d876b44a84b360d061bb68ed66", + "439aa1daa2424e49a07ec12ed29ac351", + "88dd9b1409f04bfc9993bcd0244777fe", + "c979b3835a7b49ae8ab8947cf13707d5", + "0bccff746d854f2cba07592a9f1259f5", + "c59fec8321c64cb98488e70f9ef78740", + "5a7ea78609464fb0b4b6c1e4a3597613", + "269568a9089f40ccb9a0c62efb6c3770", + "1ee4b4a1f0014f60b88656f97f31dd51", + "65eeb8ee0eeb4127a0d5bd27e2aee5b7", + "4a8a0369a02d45b0ba6b3714180da358", + "303510fad09b4534aed23aa783256b89", + "35377e401e344f27b3f86567e03b8665", + "3c13ee6ac4364612bc17ef3ffd6b3429", + "fc4f53f70e3446a1b93a144879dd8c2d", + "495a8f52054743509e151806da0abbfa", + "8c22504ccaee4cbf9bdfef0c120590b2", + "df38d84cc6ae40788c0f164cc251f185", + "cc4803dc285b471685e754d1e442c6fd", + "e875464290684953b527904557f3528e", + "9bb3360a875543ae82ee5480acac4796", + "2a7dda9c5aac4087951f16e5b5ac96b7", + "f578471ef71447758cfd82bd8bdc99e0", + "ebc67fdc3a434f4f8a52e12faa935dea", + "e138aec3fffe40fc8855ff43e8bdc96e", + "06a0f93bdfcb4b6d9f2bd0488565c650", + "271cfea7b9a4422ba78ad0513d8091e9", + "7ec9e74bff04481da80fe3370e876420", + "5bd26ff88cf248d4aabe2fcf5446cd5c", + "adf9c6b09bd54777996a1f9673d7f694", + "6e9fdbd4fd544b15a04dd0729aedcaae", + "6581c29cdfb04ea59400f8061d796fe3", + "d115499e37a34b8690d6849494aa65ae", + "13826beae5f042db9b6d3e3f3807f85e", + "14c66c78bd1b4313b789a79ddb265a45", + "f02baf3f36754d8f87241f7184ffb75c", + "cda0be8a5d5847ca989c89fff99dac1f", + "3103d44d02bb45beb33588cf708ba811", + "58385a662e624c63b2d317b5b6840037", + "736c636e2b274ffeb9aac319d56a37a7", + "002e4045b9b44bfc84571412f0f11624", + "5969054c9cf34ed1a638a69bcbbb377a", + "c24af0f963b7460d9d38e3b09081f949", + "65055dbabf0440d1a6b0c0189553ffcf", + "c8b52ae553bb4745b0444e6476da535d", + "f7e102b56feb46c68f968056adaec751", + "2c7208b82d5c42adb83acc50af9e2a29", + "ed390a926cd14072bc95e2054d184541", + "2831a9ec119a495bbde153ee1eb37c66", + "e830bae8320b44a4bec4a8652e3d8472", + "f44ba78d0c29409bbd1e24134d5335da", + "0ba6d5b1963e4ec1a2a6bc72990bc5a3", + "b01e8fb3d39c4aa986da3ac2b0a16ec7", + "0411fc784d604202afbfbf43a915e467", + "3246b30f178c4fe9a256e6e326546cbd", + "e764d414a9db4f9bbb3bf42a5f8b780a", + "fca8c1d470cb49b08c8066676d70aed3", + "f01e1dee781d49939d3204cdfe991def", + "8badb18f053f407e83699688cc0c5999" + ] + }, + "id": "K0CKtslqNlQg", + "outputId": "b9e2ddd9-7fd5-4eec-fcc7-443b0d0b1b76" + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "f720e5b0f068453895e8f931d83792bd", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Downloading builder script: 0%| | 0.00/4.38k [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(10, 6))\n", + "ax = data['feeling'].value_counts().plot(kind='bar', color=['red', 'blue'])\n", + "ax.set_title('Sentiment Distribution')\n", + "ax.set_xlabel('Sentiment')\n", + "ax.set_ylabel('Count')\n", + "\n", + "labels = ['Negative', 'Positive']\n", + "ax.set_xticks([0, 1])\n", + "ax.set_xticklabels(labels)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "xgpZZMfI5NWv" + }, + "source": [ + "## Step 7: Extract Sentiments and Texts from DataFrame\n", + "\n", + "Now, we'll extract sentiments and texts from the DataFrame." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "fmkM4YiSVRym", + "outputId": "76d3d964-e92c-4c30-9d7e-d932bef37a5d" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "119988\n", + "119988\n" + ] + } + ], + "source": [ + "sentiments = []\n", + "texts = []\n", + "\n", + "for index, row in data.iterrows():\n", + " sentiment = row['feeling']\n", + " sentiments.append(sentiment)\n", + "\n", + " text = row['text'].lower()\n", + " texts.append(text)\n", + "\n", + "print(len(sentiments))\n", + "print(len(texts))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OttHuyrLd5HR" + }, + "source": [ + "This step prepares the data by converting sentiments and texts into a suitable format for training.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "RYAKRFt_d87z" + }, + "source": [ + "## Step 8: Split the Dataset\n", + "\n", + "For model training and evaluation, we'll split the dataset into training and validation sets:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "GOUNpqmlfMV5", + "outputId": "3df5a74b-ab41-4656-cb9b-e9810bf27b97" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Training set - Class distribution:\n", + "Class 0: 9595\n", + "Class 1: 9603\n", + "\n", + "Test set - Class distribution:\n", + "Class 0: 2399\n", + "Class 1: 2401\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 1.01M/1.01M [00:00<00:00, 15.3MB/s]\n", + "100%|██████████| 179M/179M [00:07<00:00, 25.3MB/s]\n", + "100%|██████████| 470k/470k [00:00<00:00, 8.13MB/s]\n" + ] + } + ], + "source": [ + "label_encoder = LabelEncoder()\n", + "encoded_sentiments = label_encoder.fit_transform(sentiments)\n", + "\n", + "# Split into training and temporary sets with stratification\n", + "X_train_temp, X_temp, y_train_temp, y_temp = train_test_split(\n", + " texts, encoded_sentiments,\n", + " test_size=0.2,\n", + " random_state=42,\n", + " stratify=encoded_sentiments\n", + ")\n", + "\n", + "# Split the temporary set into the final training and test sets with stratification\n", + "X_train, X_test, y_train, y_test = train_test_split(\n", + " X_temp, y_temp,\n", + " test_size=0.2,\n", + " random_state=42,\n", + " stratify=y_temp\n", + ")\n", + "\n", + "counter_train = Counter(y_train)\n", + "counter_test = Counter(y_test)\n", + "\n", + "print(\"Training set - Class distribution:\")\n", + "print(\"Class 0:\", counter_train[0])\n", + "print(\"Class 1:\", counter_train[1])\n", + "\n", + "print(\"\\nTest set - Class distribution:\")\n", + "print(\"Class 0:\", counter_test[0])\n", + "print(\"Class 1:\", counter_test[1])\n", + "\n", + "\n", + "# Initialize the LaserEncoder\n", + "encoder = LaserEncoderPipeline(lang=\"eng_Latn\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "x2vziPx6eSDs" + }, + "source": [ + "A good practice is to reserve a portion of the data for validation to assess the model's performance." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "KKLdd5MO5hoE" + }, + "source": [ + "## Step 9: LASER Embeddings\n", + "\n", + "Now, let's leverage LASER embeddings to convert the text data into numerical representations:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "3yrXnFZWzTv3", + "outputId": "f4b0515e-f790-4184-daad-9fbb6955b247" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Encoding training sentences:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 19198/19198 [02:20<00:00, 136.17it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Encoding testing sentences:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 4800/4800 [00:36<00:00, 130.31it/s]\n" + ] + } + ], + "source": [ + "# Initialize empty arrays to store embeddings\n", + "X_train_embeddings = []\n", + "X_test_embeddings = []\n", + "\n", + "# Encode sentences line-wise using tqdm for progress visualization\n", + "print(\"Encoding training sentences:\")\n", + "for sentence in tqdm(X_train):\n", + " embeddings = encoder.encode_sentences([sentence])[0]\n", + " X_train_embeddings.append(embeddings)\n", + "\n", + "print(\"Encoding testing sentences:\")\n", + "for sentence in tqdm(X_test):\n", + " embeddings = encoder.encode_sentences([sentence])[0]\n", + " X_test_embeddings.append(embeddings)\n", + "\n", + "# Convert lists to numpy arrays\n", + "X_train_embeddings = np.array(X_train_embeddings)\n", + "X_test_embeddings = np.array(X_test_embeddings)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7HeCXoUvefhT" + }, + "source": [ + "## Step 10: Build and Train the RNN Model\n", + "\n", + "With the data ready, it's time to build and train our sentiment analysis model using a simple RNN architecture:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7-7mYJsmWKVT", + "outputId": "148ade44-3d25-4772-dc24-c8eb5281ac89" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"sequential\"\n", + "_________________________________________________________________\n", + " Layer (type) Output Shape Param # \n", + "=================================================================\n", + " dense (Dense) (None, 256) 262400 \n", + " \n", + " reshape (Reshape) (None, 1, 256) 0 \n", + " \n", + " simple_rnn (SimpleRNN) (None, 128) 49280 \n", + " \n", + " dense_1 (Dense) (None, 64) 8256 \n", + " \n", + " dropout (Dropout) (None, 64) 0 \n", + " \n", + " dense_2 (Dense) (None, 2) 130 \n", + " \n", + "=================================================================\n", + "Total params: 320066 (1.22 MB)\n", + "Trainable params: 320066 (1.22 MB)\n", + "Non-trainable params: 0 (0.00 Byte)\n", + "_________________________________________________________________\n", + "Epoch 1/30\n", + "540/540 [==============================] - 7s 8ms/step - loss: 0.6179 - accuracy: 0.6628 - val_loss: 0.5265 - val_accuracy: 0.7500 - lr: 1.0000e-04\n", + "Epoch 2/30\n", + "540/540 [==============================] - 3s 6ms/step - loss: 0.5190 - accuracy: 0.7532 - val_loss: 0.5023 - val_accuracy: 0.7656 - lr: 9.0000e-05\n", + "Epoch 3/30\n", + "540/540 [==============================] - 3s 5ms/step - loss: 0.4967 - accuracy: 0.7691 - val_loss: 0.4938 - val_accuracy: 0.7594 - lr: 8.1000e-05\n", + "Epoch 4/30\n", + "540/540 [==============================] - 3s 5ms/step - loss: 0.4844 - accuracy: 0.7708 - val_loss: 0.4806 - val_accuracy: 0.7760 - lr: 7.2900e-05\n", + "Epoch 5/30\n", + "540/540 [==============================] - 4s 7ms/step - loss: 0.4794 - accuracy: 0.7764 - val_loss: 0.4859 - val_accuracy: 0.7604 - lr: 6.5610e-05\n", + "Epoch 6/30\n", + "540/540 [==============================] - 3s 6ms/step - loss: 0.4743 - accuracy: 0.7798 - val_loss: 0.4776 - val_accuracy: 0.7719 - lr: 5.9049e-05\n", + "Epoch 7/30\n", + "540/540 [==============================] - 3s 5ms/step - loss: 0.4701 - accuracy: 0.7819 - val_loss: 0.4777 - val_accuracy: 0.7802 - lr: 5.3144e-05\n", + "Epoch 8/30\n", + "540/540 [==============================] - 3s 5ms/step - loss: 0.4676 - accuracy: 0.7812 - val_loss: 0.4732 - val_accuracy: 0.7786 - lr: 4.7830e-05\n", + "Epoch 9/30\n", + "540/540 [==============================] - 3s 6ms/step - loss: 0.4629 - accuracy: 0.7846 - val_loss: 0.4719 - val_accuracy: 0.7828 - lr: 4.3047e-05\n", + "Epoch 10/30\n", + "540/540 [==============================] - 4s 7ms/step - loss: 0.4611 - accuracy: 0.7833 - val_loss: 0.4730 - val_accuracy: 0.7766 - lr: 3.8742e-05\n", + "Epoch 11/30\n", + "540/540 [==============================] - 3s 6ms/step - loss: 0.4576 - accuracy: 0.7859 - val_loss: 0.4716 - val_accuracy: 0.7781 - lr: 3.4868e-05\n", + "Epoch 12/30\n", + "540/540 [==============================] - 3s 5ms/step - loss: 0.4555 - accuracy: 0.7895 - val_loss: 0.4710 - val_accuracy: 0.7833 - lr: 3.1381e-05\n", + "Epoch 13/30\n", + "540/540 [==============================] - 3s 6ms/step - loss: 0.4545 - accuracy: 0.7895 - val_loss: 0.4712 - val_accuracy: 0.7771 - lr: 2.8243e-05\n", + "Epoch 14/30\n", + "540/540 [==============================] - 4s 7ms/step - loss: 0.4530 - accuracy: 0.7905 - val_loss: 0.4702 - val_accuracy: 0.7786 - lr: 2.5419e-05\n", + "Epoch 15/30\n", + "540/540 [==============================] - 3s 5ms/step - loss: 0.4524 - accuracy: 0.7897 - val_loss: 0.4687 - val_accuracy: 0.7839 - lr: 2.2877e-05\n", + "Epoch 16/30\n", + "540/540 [==============================] - 3s 5ms/step - loss: 0.4518 - accuracy: 0.7900 - val_loss: 0.4693 - val_accuracy: 0.7807 - lr: 2.0589e-05\n", + "Epoch 17/30\n", + "540/540 [==============================] - 3s 5ms/step - loss: 0.4502 - accuracy: 0.7917 - val_loss: 0.4725 - val_accuracy: 0.7760 - lr: 1.8530e-05\n", + "Epoch 18/30\n", + "540/540 [==============================] - 4s 8ms/step - loss: 0.4483 - accuracy: 0.7927 - val_loss: 0.4688 - val_accuracy: 0.7812 - lr: 1.6677e-05\n", + "Epoch 19/30\n", + "540/540 [==============================] - 3s 5ms/step - loss: 0.4489 - accuracy: 0.7919 - val_loss: 0.4689 - val_accuracy: 0.7807 - lr: 1.5009e-05\n", + "Epoch 20/30\n", + "540/540 [==============================] - 3s 5ms/step - loss: 0.4495 - accuracy: 0.7925 - val_loss: 0.4690 - val_accuracy: 0.7807 - lr: 1.3509e-05\n", + "Epoch 21/30\n", + "540/540 [==============================] - 3s 5ms/step - loss: 0.4478 - accuracy: 0.7899 - val_loss: 0.4684 - val_accuracy: 0.7807 - lr: 1.2158e-05\n", + "Epoch 22/30\n", + "540/540 [==============================] - 4s 7ms/step - loss: 0.4471 - accuracy: 0.7926 - val_loss: 0.4697 - val_accuracy: 0.7776 - lr: 1.0942e-05\n", + "Epoch 23/30\n", + "540/540 [==============================] - 3s 6ms/step - loss: 0.4462 - accuracy: 0.7923 - val_loss: 0.4710 - val_accuracy: 0.7771 - lr: 9.8477e-06\n", + "Epoch 24/30\n", + "540/540 [==============================] - 3s 6ms/step - loss: 0.4465 - accuracy: 0.7918 - val_loss: 0.4694 - val_accuracy: 0.7786 - lr: 8.8629e-06\n", + "Epoch 25/30\n", + "540/540 [==============================] - 3s 5ms/step - loss: 0.4473 - accuracy: 0.7929 - val_loss: 0.4691 - val_accuracy: 0.7781 - lr: 7.9766e-06\n", + "Epoch 26/30\n", + "540/540 [==============================] - 3s 6ms/step - loss: 0.4455 - accuracy: 0.7939 - val_loss: 0.4685 - val_accuracy: 0.7792 - lr: 7.1790e-06\n", + "Epoch 27/30\n", + "540/540 [==============================] - 4s 6ms/step - loss: 0.4456 - accuracy: 0.7920 - val_loss: 0.4684 - val_accuracy: 0.7818 - lr: 6.4611e-06\n", + "Epoch 28/30\n", + "540/540 [==============================] - 3s 5ms/step - loss: 0.4452 - accuracy: 0.7914 - val_loss: 0.4682 - val_accuracy: 0.7828 - lr: 5.8150e-06\n", + "Epoch 29/30\n", + "540/540 [==============================] - 3s 5ms/step - loss: 0.4447 - accuracy: 0.7940 - val_loss: 0.4683 - val_accuracy: 0.7828 - lr: 5.2335e-06\n", + "Epoch 30/30\n", + "540/540 [==============================] - 3s 6ms/step - loss: 0.4456 - accuracy: 0.7939 - val_loss: 0.4687 - val_accuracy: 0.7797 - lr: 4.7101e-06\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Sentiment Prediction with RNN Neural Network and Confusion Matrix\n", + "\n", + "from keras.models import Sequential\n", + "from keras.layers import Dense, SimpleRNN, Reshape, Dropout\n", + "from keras.optimizers import Adam\n", + "from keras.callbacks import LearningRateScheduler\n", + "from sklearn.metrics import confusion_matrix\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "# Build a neural network model with RNN\n", + "model = Sequential()\n", + "model.add(Dense(256, input_shape=(1024,), activation='tanh'))\n", + "model.add(Reshape((1, 256)))\n", + "model.add(SimpleRNN(128, activation='relu'))\n", + "model.add(Dense(64, activation='relu'))\n", + "model.add(Dropout(0.5)) # Adding dropout for regularization\n", + "model.add(Dense(2, activation='softmax'))\n", + "\n", + "# Use a learning rate scheduler\n", + "def lr_schedule(epoch):\n", + " return 0.0001 * 0.9 ** epoch\n", + "\n", + "opt = Adam(learning_rate=0.0001)\n", + "lr_scheduler = LearningRateScheduler(lr_schedule)\n", + "#\n", + "# Compile the model\n", + "model.compile(optimizer=opt, loss='sparse_categorical_crossentropy', metrics=['accuracy'])\n", + "\n", + "\n", + "# Print model summary to check the architecture\n", + "model.summary()\n", + "\n", + "# Train the model with the learning rate scheduler\n", + "model.fit(X_train_embeddings, y_train, epochs=30, batch_size=32, validation_split=0.1, callbacks=[lr_scheduler])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "32_oRAmBejuj" + }, + "source": [ + "In this architecture, we employ a feedforward neural network with three dense layers, culminating in a softmax activation layer for sentiment classification." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "WLFMDGLqfugC" + }, + "source": [ + "## Step 11: Evaluate the Model\n", + "Finally, let's evaluate the model's performance on the validation set and calculate the accuracy:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Kx4_t2UjgALF", + "outputId": "2c65a96c-1bb0-46a5-c0d4-3fb34fbaae6b" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "150/150 [==============================] - 0s 2ms/step - loss: 0.4879 - accuracy: 0.7581\n", + "Accuracy: 75.81%\n", + "150/150 [==============================] - 0s 2ms/step\n", + "Label 0: Precision = 0.75, Recall = 0.77\n", + "Label 1: Precision = 0.77, Recall = 0.74\n", + "\n", + "Classification Report:\n", + " precision recall f1-score support\n", + "\n", + " 0 0.75 0.77 0.76 2399\n", + " 1 0.77 0.74 0.75 2401\n", + "\n", + " accuracy 0.76 4800\n", + " macro avg 0.76 0.76 0.76 4800\n", + "weighted avg 0.76 0.76 0.76 4800\n", + "\n" + ] + } + ], + "source": [ + "from sklearn.metrics import accuracy_score, precision_score, recall_score, classification_report\n", + "\n", + "# Evaluate the model on the test set\n", + "accuracy = model.evaluate(X_test_embeddings, y_test)[1]\n", + "print(f\"Accuracy: {accuracy * 100:.2f}%\")\n", + "\n", + "# Predictions on the test set\n", + "y_pred_probabilities = model.predict(X_test_embeddings)\n", + "y_pred = np.argmax(y_pred_probabilities, axis=1)\n", + "\n", + "# Calculate precision and recall per label\n", + "precision_per_label = precision_score(y_test, y_pred, average=None)\n", + "recall_per_label = recall_score(y_test, y_pred, average=None)\n", + "\n", + "# Display precision and recall per label\n", + "for label, precision, recall in zip(range(len(precision_per_label)), precision_per_label, recall_per_label):\n", + " print(f\"Label {label}: Precision = {precision:.2f}, Recall = {recall:.2f}\")\n", + "\n", + "# Classification report\n", + "print(\"\\nClassification Report:\")\n", + "print(classification_report(y_test, y_pred))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "xTwXSCUVfvVx" + }, + "source": [ + "This step provides insights into how well the model generalizes to new, unseen data." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "E6mdIbjPgsne" + }, + "source": [ + "## Step 12:Evaluate with Confusion Matrix\n", + "\n", + "This matrix provides detailed insights into the model's predictions, showcasing true positives, true negatives, false positives, and false negatives." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 564 + }, + "id": "kPY816C7gEOw", + "outputId": "d3034218-ab2c-45a6-b081-679bccffba94" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoUAAAIjCAYAAAB1bGEnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABa8klEQVR4nO3deXxMZ/vH8e8kkslGIiRia4K0iL081FJLG43SllZbrS3SolRRwVPaWttKl8dSy0OpvapaSm21VNEqtW9FbbW0JNaERsg25/eHn3k6kpCQyQz5vL3O62Xuuc8514wZuXLd97mPyTAMQwAAAMjXXBwdAAAAAByPpBAAAAAkhQAAACApBAAAgEgKAQAAIJJCAAAAiKQQAAAAIikEAACASAoBAAAgkkLgntS4cWM1btzY+vj48eMymUyaMWNGnsbRqVMnhYSE5Ok579Ts2bNVoUIFubm5yc/PL9ePP3ToUJlMplw/7r3KUZ9JAHeOpBD3pRkzZshkMsnDw0OnTp3K8Hzjxo1VuXJlB0SWvy1cuFBPPvmkihYtKnd3d5UoUUIvvviifvzxR7ue9/fff1enTp1Urlw5TZkyRZMnT7br+fKayWSSyWRS586dM33+nXfesfY5f/58jo+/fPlyDR069C6jBODsSApxX0tOTtaHH37o6DDsLjg4WFevXlWHDh0cHUqmDMNQVFSUnnvuOZ05c0bR0dGaNGmSevTooT/++EOPP/64Nm7caLfzr1u3ThaLRZ9++qk6deqkF198MdfP8e677+rq1au5ftzs8vDw0IIFC5SSkpLhublz58rDw+OOj718+XINGzYsR/s4+2cSQEYkhbivVa9eXVOmTNHp06ftdg7DMByaDEiyVkVdXV0dGkdWRo4cqRkzZujNN9/U9u3b9fbbb+uVV17RO++8o23btmnWrFkqUKCA3c5/9uxZSbLLsPENBQoUuKvE6241a9ZMly9f1vfff2/TvnHjRh07dkwtWrTIkzjS0tKUkpLi9J9JABmRFOK+9vbbbys9PT1b1cK0tDS99957KleunMxms0JCQvT2228rOTnZpl9ISIieeuoprVy5UrVq1ZKnp6c+++wzrVu3TiaTSV9//bWGDRumkiVLqmDBgnr++ed16dIlJScn680331RgYKB8fHwUFRWV4djTp0/XY489psDAQJnNZoWFhWnixIm3jf3m+Vs3Yslsu3kO4Pfff69HH31U3t7eKliwoFq0aKF9+/ZlOMeiRYtUuXJleXh4qHLlylq4cOFt45Kkq1evKiYmRhUqVNB//vOfTOfddejQQbVr17Y+/uOPP/TCCy/I399fXl5eeuSRR7Rs2TKbff75fn/wwQcqVaqUPDw89Pjjj+vIkSPWfiEhIRoyZIgkKSAgQCaTyToU+s+//1NISIg6depkfZyamqphw4bpwQcflIeHh4oUKaIGDRpo9erV1j6ZzSnM6Wdqw4YNql27tjw8PFS2bFnNmjXr1m/uP5QsWVINGzbUl19+adM+Z84cValSJdPpEj///LNeeOEFPfDAAzKbzSpdurT69Olj80tOp06dNGHCBOv7dWOT/ve5+89//qMxY8ZYX+f+/fszfCbPnj2rgIAANW7cWIZhWI9/5MgReXt7q02bNtl+rQDsw36/mgNOoEyZMurYsaOmTJmiAQMGqESJEln27dy5s2bOnKnnn39effv21ebNmxUTE6MDBw5kSIAOHjyol19+Wa+99pq6dOmi8uXLW5+LiYmRp6enBgwYoCNHjmjcuHFyc3OTi4uL4uPjNXToUP3666+aMWOGypQpo8GDB1v3nThxoipVqqRnnnlGBQoU0JIlS/T666/LYrGoR48e2X7dFStW1OzZs23aEhISFB0drcDAQGvb7NmzFRkZqYiICH300UdKSkrSxIkT1aBBA+3cudOaQK5atUqtW7dWWFiYYmJidOHCBUVFRalUqVK3jWXDhg26ePGi3nzzzWxVjc6cOaN69eopKSlJvXr1UpEiRTRz5kw988wzmj9/vp599lmb/h9++KFcXFzUr18/Xbp0SR9//LHatWunzZs3S5LGjBmjWbNmaeHChZo4caJ8fHxUtWrV28bxT0OHDlVMTIw6d+6s2rVr6/Lly9q2bZt27Nihpk2bZrlfTj5TR44c0fPPP69XX31VkZGRmjZtmjp16qSaNWuqUqVK2Yqzbdu26t27txITE+Xj46O0tDR98803io6O1rVr1zL0/+abb5SUlKTu3burSJEi2rJli8aNG6e//vpL33zzjSTptdde0+nTp7V69eoMn6kbpk+frmvXrqlr164ym83y9/eXxWKx6RMYGKiJEyfqhRde0Lhx49SrVy9ZLBZ16tRJBQsW1H//+99svUYAdmQA96Hp06cbkoytW7caR48e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7PjnXuEUSeH777+vSZMmacqUKXJzc7O2169fXzt27HBgZAAAAPmDU1xocvDgQTVs2DBDu6+vrxISEvI+IAAAkK/cS8O89uIUlcKgoCAdOXIkQ/uGDRtUtmxZB0QEAACQvzhFUtilSxf17t1bmzdvlslk0unTpzVnzhz169dP3bt3d3R4AAAA9z2nGD4eMGCALBaLHn/8cSUlJalhw4Yym83q16+fevbs6ejwAAAA7nsmwzAMRwdxQ0pKio4cOaLExESFhYXJx8fH0SEBAIB8IOFqut2O7efpardj5yanSAq/+OILPffcc/Ly8nJ0KAAAIB8iKXSSpDAgIEBXr17VM888o/bt2ysiIkKurvfGGwgAAO59l65a7HZsX0+nuITjtpwiytjYWH311VcymUx68cUXVbx4cfXo0UMbN250dGgAACAf4I4mTlIp/KekpCQtXLhQX375pX744QeVKlVKR48edXRYAADgPnb5mv0qhYU8nKIGd1tOcfXxP3l5eSkiIkLx8fE6ceKEDhw44OiQAADAfe4eKujZjdOkrklJSZozZ46aN2+ukiVLasyYMXr22We1b98+R4cGAABw33OK4eOXXnpJS5culZeXl1588UW1a9dOdevWdXRYAAAgn/g72X7DxwXNTlODuyWnGD52dXXV119/zVXHAAAADuIUlUIAAABHSky2XzrkY743Ziw6rFI4duxYde3aVR4eHho7duwt+/bq1SuPogIAAMifHFYpLFOmjLZt26YiRYqoTJkyWfYzmUz6448/8jAyAACQ31xJsV865O1+b1QKGT4GAAD5HkmhkyxJM3z4cCUlJWVov3r1qoYPH+6AiAAAQH5isuN2r3CKSqGrq6tiY2MVGBho037hwgUFBgYqPd1+N6kGAABISrVfOuTldm+khk5RKTQMQ6ZMbg64e/du+fv7OyAiAACA/MWh6xQWLlxYJpNJJpNJDz30kE1imJ6ersTERHXr1s2BEQIAgPzAdE8N9NqHQ4ePZ86cKcMw9Morr2jMmDHy9fW1Pufu7q6QkBDubAIAAOzuaqr9ju3pZr9j5yanmFO4fv161atXT25u98i7BgAA7ivX0ux3bA+nuH/c7TlFUvhP165dU0pKik1boUKFsuyfnJys5ORkmzaz2Syz2WyX+AAAwP2HpNBJLjRJSkrSG2+8ocDAQHl7e6tw4cI2263E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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "cm = confusion_matrix(y_test, y_pred)\n", + "\n", + "# Normalize the confusion matrix\n", + "cm_normalized = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n", + "\n", + "# Plot the normalized confusion matrix\n", + "plt.figure(figsize=(8, 6))\n", + "sns.heatmap(cm_normalized, annot=True, cmap='Blues', xticklabels=['Neutral', 'Positive', 'Negative'], yticklabels=['Neutral', 'Positive', 'Negative'])\n", + "plt.title('Normalized Confusion Matrix')\n", + "plt.xlabel('Predicted Label')\n", + "plt.ylabel('True Label')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1B1ZP8EizqxU" + }, + "source": [ + "## Step 13:Sentiment Prediction for User Input in Different Languages" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "H2kJx0vKzp81", + "outputId": "9ec013f1-5232-44b0-c38b-925c78540e03" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Enter the language: english\n", + "Enter a text: hello how are you?\n", + "1/1 [==============================] - 0s 144ms/step\n", + "Predicted Sentiment: positive\n" + ] + } + ], + "source": [ + "language = input(\"Enter the language: \")\n", + "encoder = LaserEncoderPipeline(lang=language)\n", + "\n", + "\n", + "# Now, you can use the trained model to predict the sentiment of user input\n", + "user_text = input(\"Enter a text: \")\n", + "user_text_embedding = encoder.encode_sentences([user_text])[0]\n", + "user_text_embedding = np.reshape(user_text_embedding, (1, -1))\n", + "\n", + "predicted_sentiment = np.argmax(model.predict(user_text_embedding))\n", + "predicted_sentiment_no = label_encoder.inverse_transform([predicted_sentiment])[0]\n", + "if predicted_sentiment_no == 0:\n", + " predicted_sentiment_label = 'negative'\n", + "elif predicted_sentiment_no == 1:\n", + " predicted_sentiment_label = 'positive'\n", + "\n", + "print(f\"Predicted Sentiment: {predicted_sentiment_label}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SOxFqEdwcejj" + }, + "source": [ + "## Step 14:Zero-shot Sentiment Prediction for Multilingual Texts\n", + "\n", + "This step involves iterating through a collection of sentiments expressed in various languages, including Hindi, Portuguese, Romanian, Slovenian, Chinese, French, Dutch, Russian, Italian, and Bosnian.\n", + "\n", + "This process demonstrates the model's ability to analyze sentiments across diverse linguistic contexts and still yeild same output." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vjFvWEC0UOj0", + "outputId": "1a725455-cd9a-4eef-a872-aba3bfc694a9" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hindi: कुछ कड़ाई बातें कहीं और मैंने यह तक महसूस नहीं किया कि यह कड़ाई है जब तक मैंने यह कहा.. माफ़ करें\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 608M/608M [00:21<00:00, 28.4MB/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/1 [==============================] - 0s 19ms/step\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.10/dist-packages/fairseq/models/transformer/transformer_encoder.py:281: UserWarning: The PyTorch API of nested tensors is in prototype stage and will change in the near future. (Triggered internally at ../aten/src/ATen/NestedTensorImpl.cpp:178.)\n", + " x = torch._nested_tensor_from_mask(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Predicted Sentiment: negative\n", + "Portuguese: Disse algo duro e nem percebi que era duro até dizer.. Desculpe\n", + "1/1 [==============================] - 0s 37ms/step\n", + "Predicted Sentiment: negative\n", + "Romanian: Am spus ceva dur și nici măcar nu mi-am dat seama că e dur până când am spus asta.. Scuze\n", + "1/1 [==============================] - 0s 17ms/step\n", + "Predicted Sentiment: negative\n", + "Slovenian: Rekel sem nekaj ostrega in sploh nisem ugotovil, da je ostro, dokler nisem rekel.. Oprosti\n", + "1/1 [==============================] - 0s 21ms/step\n", + "Predicted Sentiment: negative\n", + "Chinese: 说了一些刻薄的话,甚至直到我说出来我才意识到它很刻薄.. 抱歉\n", + "1/1 [==============================] - 0s 18ms/step\n", + "Predicted Sentiment: negative\n", + "French: Ai dit quelque chose de dur et je n'ai même pas réalisé que c'était dur jusqu'à ce que je le dise.. Désolé\n", + "1/1 [==============================] - 0s 30ms/step\n", + "Predicted Sentiment: negative\n", + "Dutch: Iets hards gezegd en realiseerde me niet eens dat het hard was tot ik het zei.. Sorry\n", + "1/1 [==============================] - 0s 22ms/step\n", + "Predicted Sentiment: negative\n", + "Russian: Сказал что-то резкое и даже не осознал, насколько это резкое, пока не сказал.. Извините\n", + "1/1 [==============================] - 0s 27ms/step\n", + "Predicted Sentiment: negative\n", + "Italian: Ho detto qualcosa di duro e non me ne sono nemmeno reso conto finché non l'ho detto.. Scusa\n", + "1/1 [==============================] - 0s 28ms/step\n", + "Predicted Sentiment: negative\n", + "Bosnian: Rekao nešto oštro i čak nisam shvatio da je oštro dok nisam rekao.. Žao mi je\n", + "1/1 [==============================] - 0s 28ms/step\n", + "Predicted Sentiment: negative\n" + ] + } + ], + "source": [ + "sentiments = {\n", + " 'hindi': \"कुछ कड़ाई बातें कहीं और मैंने यह तक महसूस नहीं किया कि यह कड़ाई है जब तक मैंने यह कहा.. माफ़ करें\",\n", + " 'portuguese': \"Disse algo duro e nem percebi que era duro até dizer.. Desculpe\",\n", + " 'romanian': \"Am spus ceva dur și nici măcar nu mi-am dat seama că e dur până când am spus asta.. Scuze\",\n", + " 'slovenian': \"Rekel sem nekaj ostrega in sploh nisem ugotovil, da je ostro, dokler nisem rekel.. Oprosti\",\n", + " 'chinese': \"说了一些刻薄的话,甚至直到我说出来我才意识到它很刻薄.. 抱歉\",\n", + " 'french': \"Ai dit quelque chose de dur et je n'ai même pas réalisé que c'était dur jusqu'à ce que je le dise.. Désolé\",\n", + " 'dutch': \"Iets hards gezegd en realiseerde me niet eens dat het hard was tot ik het zei.. Sorry\",\n", + " 'russian': \"Сказал что-то резкое и даже не осознал, насколько это резкое, пока не сказал.. Извините\",\n", + " 'italian': \"Ho detto qualcosa di duro e non me ne sono nemmeno reso conto finché non l'ho detto.. Scusa\",\n", + " 'bosnian': \"Rekao nešto oštro i čak nisam shvatio da je oštro dok nisam rekao.. Žao mi je\"\n", + "}\n", + "\n", + "# Iterate through the dictionary and extract values\n", + "for language, sentiment in sentiments.items():\n", + " print(f\"{language.capitalize()}: {sentiment}\")\n", + " encoder = LaserEncoderPipeline(lang=language)\n", + " # Now, you can use the trained model to predict the sentiment of user input\n", + " user_text = sentiment\n", + " user_text_embedding = encoder.encode_sentences([user_text])[0]\n", + " user_text_embedding = np.reshape(user_text_embedding, (1, -1))\n", + "\n", + " predicted_sentiment = np.argmax(model.predict(user_text_embedding))\n", + " predicted_sentiment_no = label_encoder.inverse_transform([predicted_sentiment])[0]\n", + " if predicted_sentiment_no == 0:\n", + " predicted_sentiment_label = 'negative'\n", + " elif predicted_sentiment_no == 1:\n", + " predicted_sentiment_label = 'positive'\n", + "\n", + " print(f\"Predicted Sentiment: {predicted_sentiment_label}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "D76SEjLm0ZOR" + }, + "source": [ + "Congratulations! You have completed the sentiment analysis tutorial using LASER embeddings and an RNN. Feel free to experiment with different architectures, hyperparameters, or datasets to further improve the model." + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "002e4045b9b44bfc84571412f0f11624": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_2c7208b82d5c42adb83acc50af9e2a29", + "placeholder": "​", + "style": "IPY_MODEL_ed390a926cd14072bc95e2054d184541", + "value": " 29997/29997 [00:03<00:00, 6705.96 examples/s]" + } + }, + "0169f1f662334c438b88fcdadfbcbfd4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "017322c8e90b48ae9164efe2569c2727": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "028b74f6c2fe4fd999507b3ed0f03f21": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "031f9bd8994f498db14409e4e7f1cf03": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "0411fc784d604202afbfbf43a915e467": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "06a0f93bdfcb4b6d9f2bd0488565c650": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "07078068134d4a11987f88bdf0b08f17": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b1b81a92053b4c3fa5c76caef02563b6", + "placeholder": "​", + "style": "IPY_MODEL_c4012bd1af3945f28f62c7c1307458e5", + "value": "Downloading metadata: 100%" + } + }, + "074215c3ae704b939e205bc604a6339d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "0799153be5ac4d209c20817dfd187cf8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c6bf49b2298c4d9eb9035fb860b539e7", + "placeholder": "​", + "style": "IPY_MODEL_eff0a998e46046fe8cbeed279d4956c3", + "value": "Downloading data files: 100%" + } + }, + "0925e66d052145bcb3480604f3da4cda": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_ece324a1271b46b98a8b6fd5ba384236", + "placeholder": "​", + "style": "IPY_MODEL_8471e543444f44f09e59b4fe964ed82e", + "value": " 2.06k/2.06k [00:00<00:00, 136kB/s]" + } + }, + "09adc94479c14590971e97b21b6a5d6e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_49600a623e5a423b8299aa12527c172e", + "placeholder": "​", + "style": "IPY_MODEL_0eac091d915340a5948cf80aed896ef8", + "value": "Downloading builder script: 100%" + } + }, + "0b19af29fefa46749ec3efa4af03bd85": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_de9ac409b2104355b33f3224a58d5d24", + "max": 2, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_103a16e8a0cb4abeaff11b881ad45cd7", + "value": 2 + } + }, + "0ba6d5b1963e4ec1a2a6bc72990bc5a3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f01e1dee781d49939d3204cdfe991def", + "placeholder": "​", + "style": "IPY_MODEL_8badb18f053f407e83699688cc0c5999", + "value": " 61998/61998 [00:02<00:00, 33733.27 examples/s]" + } + }, + "0bccff746d854f2cba07592a9f1259f5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_c59fec8321c64cb98488e70f9ef78740", + "IPY_MODEL_5a7ea78609464fb0b4b6c1e4a3597613", + "IPY_MODEL_269568a9089f40ccb9a0c62efb6c3770" + ], + "layout": "IPY_MODEL_1ee4b4a1f0014f60b88656f97f31dd51" + } + }, + "0cc7dfd0ff934b649b76b3917602f1be": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0da9f1a610f244249d7dbe73df3ac5ee": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "0eac091d915340a5948cf80aed896ef8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "103a16e8a0cb4abeaff11b881ad45cd7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "13826beae5f042db9b6d3e3f3807f85e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "146c22e8c0654103944d314f183beac1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_848fb54cd20347f8b61579415190dd92", + "placeholder": "​", + "style": "IPY_MODEL_9e5e85f4d62b4a699c28f7cf5567dd46", + "value": "Extracting data files: 100%" + } + }, + "14c66c78bd1b4313b789a79ddb265a45": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "199692beb0204413b8e3212ea7a3a030": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1ce195a3a1354811945728f81568da2a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_2908cee0b3524c82a262c0d5b78fddfb", + "placeholder": "​", + "style": "IPY_MODEL_35710d549e274f58abd02c54be72c6c2", + "value": " 61998/61998 [00:05<00:00, 7078.06 examples/s]" + } + }, + "1dff1987bcc64508b236a2a5bf9cec2a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_43da3b6e0120420bacc56bb081c560ec", + "placeholder": "​", + "style": "IPY_MODEL_031f9bd8994f498db14409e4e7f1cf03", + "value": "Creating json from Arrow format: 100%" + } + }, + "1e3ece313db34ed89f7c97bda5d94136": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "1e467554461f4cc2ae842712b59feea8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1ee4b4a1f0014f60b88656f97f31dd51": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1fa1643b342b485d9b6697d7cefeddac": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2001d69064ec4b78be911fe41c06b468": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "26215544657644888e95c477b5875804": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "269568a9089f40ccb9a0c62efb6c3770": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3c13ee6ac4364612bc17ef3ffd6b3429", + "placeholder": "​", + "style": "IPY_MODEL_fc4f53f70e3446a1b93a144879dd8c2d", + "value": " 30/30 [00:00<00:00, 89.60ba/s]" + } + }, + "271cfea7b9a4422ba78ad0513d8091e9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_7ec9e74bff04481da80fe3370e876420", + "IPY_MODEL_5bd26ff88cf248d4aabe2fcf5446cd5c", + "IPY_MODEL_adf9c6b09bd54777996a1f9673d7f694" + ], + "layout": "IPY_MODEL_6e9fdbd4fd544b15a04dd0729aedcaae" + } + }, + "27ce5829e05149a39ea9afd2e6f0fc98": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_aae06c7d529c418b9841a348bc444d3a", + "IPY_MODEL_52a4fd97b2094096a0a23d8bb097a686", + "IPY_MODEL_1ce195a3a1354811945728f81568da2a" + ], + "layout": "IPY_MODEL_e0f1add308c74732b8e488e2057becf4" + } + }, + "2831a9ec119a495bbde153ee1eb37c66": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_e830bae8320b44a4bec4a8652e3d8472", + "IPY_MODEL_f44ba78d0c29409bbd1e24134d5335da", + "IPY_MODEL_0ba6d5b1963e4ec1a2a6bc72990bc5a3" + ], + "layout": "IPY_MODEL_b01e8fb3d39c4aa986da3ac2b0a16ec7" + } + }, + "28514f23fe78478faf8d4ee54c03f573": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "28848374ffd84ecd869acd909f966885": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "2908cee0b3524c82a262c0d5b78fddfb": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2a432c2f7e4b44c2926fc6a5460c27ed": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2a7dda9c5aac4087951f16e5b5ac96b7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "2ada78a1a43a42668dba150700b257ea": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_75560191f732426e8d48348d9519c1f0", + "placeholder": "​", + "style": "IPY_MODEL_bbae5295c7814f8aa8a83b6c7c4622f2", + "value": "Downloading data: " + } + }, + "2c7208b82d5c42adb83acc50af9e2a29": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2c73ded880e14d7fbae4d3abc94262c2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "303510fad09b4534aed23aa783256b89": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3103d44d02bb45beb33588cf708ba811": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_58385a662e624c63b2d317b5b6840037", + "IPY_MODEL_736c636e2b274ffeb9aac319d56a37a7", + "IPY_MODEL_002e4045b9b44bfc84571412f0f11624" + ], + "layout": "IPY_MODEL_5969054c9cf34ed1a638a69bcbbb377a" + } + }, + "3246b30f178c4fe9a256e6e326546cbd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "35377e401e344f27b3f86567e03b8665": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "35710d549e274f58abd02c54be72c6c2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "36bd99d5f08c4fdabada7157edff32ea": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_5c9e7ebc6e5d41bab8328e93513913ad", + "IPY_MODEL_f2b117616f3b4eedb96986bab63a6692", + "IPY_MODEL_91e0f48982364466a14fbd0c5364d336" + ], + "layout": "IPY_MODEL_28514f23fe78478faf8d4ee54c03f573" + } + }, + "38e802c8fcee4125815f972d7c7a0fff": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_95991639ef264d37a509f8bd9ecdf7c8", + "placeholder": "​", + "style": "IPY_MODEL_f7d58ab0578b49e39939c05192016146", + "value": "Downloading data: " + } + }, + "390e468c3044442aacca917d23d5709d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3c13ee6ac4364612bc17ef3ffd6b3429": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3f813851ad10411ab48f26e765dc9cff": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "400f27da06e749d5be0a61accaf43a0c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "40f69f00418b4f3e90061376bac624d5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_dc0da9cdfd2e41998f4e2f3a04dfc658", + "IPY_MODEL_a4493afa196e4888aa1d1b2b06a181a0", + "IPY_MODEL_c25e4db8dbbc4aef980fa2463678306f" + ], + "layout": "IPY_MODEL_2a432c2f7e4b44c2926fc6a5460c27ed" + } + }, + "439aa1daa2424e49a07ec12ed29ac351": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "43da3b6e0120420bacc56bb081c560ec": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "458ec4577122485dae1acbf046fb6701": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "461c8ba97e25462189b95f238a27044e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_88dd9b1409f04bfc9993bcd0244777fe", + "placeholder": "​", + "style": "IPY_MODEL_c979b3835a7b49ae8ab8947cf13707d5", + "value": " 120/120 [00:02<00:00, 76.68ba/s]" + } + }, + "46e5647a158d4d83a89a08991191bcbb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_1dff1987bcc64508b236a2a5bf9cec2a", + "IPY_MODEL_70f57872c19447aa9b0d2d9e5bcf0570", + "IPY_MODEL_461c8ba97e25462189b95f238a27044e" + ], + "layout": "IPY_MODEL_f7985d5de72648c2a4334b89ee603f7c" + } + }, + "489f5cfe7b244bdd85122db470ad7d2a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_0799153be5ac4d209c20817dfd187cf8", + "IPY_MODEL_7188ef2547fb49a79f044755eda0e7ca", + "IPY_MODEL_70b549e449864f4795d7fca0ceb21b3a" + ], + "layout": "IPY_MODEL_458ec4577122485dae1acbf046fb6701" + } + }, + "48a424c068e247b889628fe97265550a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "495a8f52054743509e151806da0abbfa": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_8c22504ccaee4cbf9bdfef0c120590b2", + "IPY_MODEL_df38d84cc6ae40788c0f164cc251f185", + "IPY_MODEL_cc4803dc285b471685e754d1e442c6fd" + ], + "layout": "IPY_MODEL_e875464290684953b527904557f3528e" + } + }, + "49600a623e5a423b8299aa12527c172e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "49a44fb68bca4ea19a6ffcf794f3039a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "4a8a0369a02d45b0ba6b3714180da358": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "4f4ae616c7c343edada8b37ca4027125": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4f6d03ac52c04d3f8da9b7796054b648": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_48a424c068e247b889628fe97265550a", + "placeholder": "​", + "style": "IPY_MODEL_cd33f15aee464f798cba807dce8440e9", + "value": " 2/2 [00:02<00:00, 1.43s/it]" + } + }, + "52a4fd97b2094096a0a23d8bb097a686": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_400f27da06e749d5be0a61accaf43a0c", + "max": 61998, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_3f813851ad10411ab48f26e765dc9cff", + "value": 61998 + } + }, + "543c8cc6dd0f4ccd99e48c038543cd9f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "55130e2f028e4711a48477b69601295d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_93cb42215da44d2ba4213b835d252eab", + "IPY_MODEL_94d0bf4b5dce4ec8b33600c8b3472630", + "IPY_MODEL_c55c9f7cf12b40a4bf753945ddd96f05" + ], + "layout": "IPY_MODEL_1fa1643b342b485d9b6697d7cefeddac" + } + }, + "5780154511334024bedf4323a4c87227": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_390e468c3044442aacca917d23d5709d", + "placeholder": "​", + "style": "IPY_MODEL_eb1a99d40b2b426a80884f1577f18948", + "value": " 2/2 [00:00<00:00, 107.80it/s]" + } + }, + "58385a662e624c63b2d317b5b6840037": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c24af0f963b7460d9d38e3b09081f949", + "placeholder": "​", + "style": "IPY_MODEL_65055dbabf0440d1a6b0c0189553ffcf", + "value": "Generating validation split: 100%" + } + }, + "5969054c9cf34ed1a638a69bcbbb377a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5a7ea78609464fb0b4b6c1e4a3597613": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_303510fad09b4534aed23aa783256b89", + "max": 30, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_35377e401e344f27b3f86567e03b8665", + "value": 30 + } + }, + "5bd26ff88cf248d4aabe2fcf5446cd5c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_13826beae5f042db9b6d3e3f3807f85e", + "max": 119988, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_14c66c78bd1b4313b789a79ddb265a45", + "value": 119988 + } + }, + "5c9e7ebc6e5d41bab8328e93513913ad": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_adb329d31dc94bbb9447099ee12802a4", + "placeholder": "​", + "style": "IPY_MODEL_e46269bca9ac4f289ae58b63a9b50c05", + "value": "Generating train split: " + } + }, + "5d5a7becafcb45808dfe65cb660e6827": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "6224481255304438bafa996d1981bd9b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "62c52ca8fa1147c594cfc1b0e891992f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "65055dbabf0440d1a6b0c0189553ffcf": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "6581c29cdfb04ea59400f8061d796fe3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "65eeb8ee0eeb4127a0d5bd27e2aee5b7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6898685d25ee4805b7fec0378365ffa0": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6970e3f5318c425bb682a11fe2710eb8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_93cd1a99f280417fa21c10147d3086a2", + "IPY_MODEL_88c000f55dbb48129f1d719207084ddb", + "IPY_MODEL_f4eda86e937a4a548024f662723e37a3" + ], + "layout": "IPY_MODEL_199692beb0204413b8e3212ea7a3a030" + } + }, + "6c4658d876b44a84b360d061bb68ed66": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6daf5ef868b847d397fb3924b1b74d35": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6e9fdbd4fd544b15a04dd0729aedcaae": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6f1ca069baf04a5da2861661dadbc662": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "70b549e449864f4795d7fca0ceb21b3a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_26215544657644888e95c477b5875804", + "placeholder": "​", + "style": "IPY_MODEL_a2c144716157471f86cff341ec3a188e", + "value": " 2/2 [00:00<00:00, 125.53it/s]" + } + }, + "70f0780e3ac143eaa5793bd75b1dd0d4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "70f57872c19447aa9b0d2d9e5bcf0570": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_6c4658d876b44a84b360d061bb68ed66", + "max": 120, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_439aa1daa2424e49a07ec12ed29ac351", + "value": 120 + } + }, + "7188ef2547fb49a79f044755eda0e7ca": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_a2956bc417f8442a93ace1630b4f6c5c", + "max": 2, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_1e3ece313db34ed89f7c97bda5d94136", + "value": 2 + } + }, + "727e09b03a2841fab93af2ccdc800619": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": "20px" + } + }, + "736c636e2b274ffeb9aac319d56a37a7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c8b52ae553bb4745b0444e6476da535d", + "max": 29997, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f7e102b56feb46c68f968056adaec751", + "value": 29997 + } + }, + "75560191f732426e8d48348d9519c1f0": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7d8e46bd108d41adae04baa12963bb56": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7ec9e74bff04481da80fe3370e876420": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_6581c29cdfb04ea59400f8061d796fe3", + "placeholder": "​", + "style": "IPY_MODEL_d115499e37a34b8690d6849494aa65ae", + "value": "Generating train split: 100%" + } + }, + "7ed6cb7e905f43768e21ceb29c674215": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0cc7dfd0ff934b649b76b3917602f1be", + "placeholder": "​", + "style": "IPY_MODEL_afd3066953514cd59f31e15e4d2915e7", + "value": " 4.84M/? [00:00<00:00, 30.3MB/s]" + } + }, + "8194ea8f5b0a4c8cb5f999ec0c87a633": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_543c8cc6dd0f4ccd99e48c038543cd9f", + "placeholder": "​", + "style": "IPY_MODEL_debe32e761d34be1a2c30d801a2451be", + "value": "Downloading readme: 100%" + } + }, + "81b0c62b427040c0a085e7e63db46ac3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d958d6f7c1284adeae233a13353ba3d0", + "max": 5439, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_49a44fb68bca4ea19a6ffcf794f3039a", + "value": 5439 + } + }, + "822edeea9ecf4c16b9bcf7951eed3792": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_8e4c08035b694012922777750beb333e", + "IPY_MODEL_0b19af29fefa46749ec3efa4af03bd85", + "IPY_MODEL_4f6d03ac52c04d3f8da9b7796054b648" + ], + "layout": "IPY_MODEL_2c73ded880e14d7fbae4d3abc94262c2" + } + }, + "8471e543444f44f09e59b4fe964ed82e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "848fb54cd20347f8b61579415190dd92": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "85d4eb30714f4d66b1fe1f77887554ca": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "87007da808364f3a8f464fed05c92a0d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "8774f73644024974a3116309684f0c7c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "88c000f55dbb48129f1d719207084ddb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e932af18b3734c50b3d7d12972408a8d", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_9e9516808b2e406c9e1010f23d5b26c0", + "value": 1 + } + }, + "88dd9b1409f04bfc9993bcd0244777fe": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8af4d1f70cd944ddadf8ea36ac38c58e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "8badb18f053f407e83699688cc0c5999": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "8c22504ccaee4cbf9bdfef0c120590b2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9bb3360a875543ae82ee5480acac4796", + "placeholder": "​", + "style": "IPY_MODEL_2a7dda9c5aac4087951f16e5b5ac96b7", + "value": "Creating json from Arrow format: 100%" + } + }, + "8e4c08035b694012922777750beb333e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_92459ab6b11d47dba3db1fc162972efd", + "placeholder": "​", + "style": "IPY_MODEL_91a1b97822fc40eeb827c34fd15c74b6", + "value": "Downloading data files: 100%" + } + }, + "91598533cd7f48f5a708543bf5f3bab6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "91799ab4c0864ba9a9a8dd54f73cf7a4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e991a429e51d4980b1374992b1bd3fb3", + "placeholder": "​", + "style": "IPY_MODEL_6224481255304438bafa996d1981bd9b", + "value": " 5.44k/5.44k [00:00<00:00, 220kB/s]" + } + }, + "91a1b97822fc40eeb827c34fd15c74b6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "91e0f48982364466a14fbd0c5364d336": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_1e467554461f4cc2ae842712b59feea8", + "placeholder": "​", + "style": "IPY_MODEL_28848374ffd84ecd869acd909f966885", + "value": " 149985/0 [00:00<00:00, 522618.35 examples/s]" + } + }, + "92459ab6b11d47dba3db1fc162972efd": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "93283eaea26547c891d16c64e20d3fb4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_6898685d25ee4805b7fec0378365ffa0", + "max": 4376, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f174f333e840477ba96c910213a81d0a", + "value": 4376 + } + }, + "935634cd3d1340d3986110539c3fcc76": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "9384d6d22f3643219151ad248a0d2fc7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_017322c8e90b48ae9164efe2569c2727", + "max": 2, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_9658ed7253c940548fb40a4b320ac1b4", + "value": 2 + } + }, + "93cb42215da44d2ba4213b835d252eab": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_dd417a969ac849baa6929d18ada5d1c9", + "placeholder": "​", + "style": "IPY_MODEL_dfdcf8520708413da2dc151f41c193c0", + "value": "Extracting data files: 100%" + } + }, + "93cd1a99f280417fa21c10147d3086a2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_bdb1639f2264475c96a6665fd0a16fdf", + "placeholder": "​", + "style": "IPY_MODEL_87007da808364f3a8f464fed05c92a0d", + "value": "Generating test split: " + } + }, + "94d0bf4b5dce4ec8b33600c8b3472630": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c0fb53db671b4d26ac06c6c3c9933b15", + "max": 2, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_0da9f1a610f244249d7dbe73df3ac5ee", + "value": 2 + } + }, + "94dad8d2649c403dbb443c7e3d8b1097": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_2001d69064ec4b78be911fe41c06b468", + "placeholder": "​", + "style": "IPY_MODEL_074215c3ae704b939e205bc604a6339d", + "value": " 11.7M/? [00:00<00:00, 41.9MB/s]" + } + }, + "95991639ef264d37a509f8bd9ecdf7c8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9658ed7253c940548fb40a4b320ac1b4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "9bb3360a875543ae82ee5480acac4796": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9d0edf01c6574b6da5e2fd9ffc9146aa": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9e5e85f4d62b4a699c28f7cf5567dd46": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9e9516808b2e406c9e1010f23d5b26c0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "a2956bc417f8442a93ace1630b4f6c5c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a2c144716157471f86cff341ec3a188e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "a441f30832cc435c8bbe4176a4eb6397": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_38e802c8fcee4125815f972d7c7a0fff", + "IPY_MODEL_cf58b80e62454c939e14a0cf451a0aa2", + "IPY_MODEL_94dad8d2649c403dbb443c7e3d8b1097" + ], + "layout": "IPY_MODEL_6daf5ef868b847d397fb3924b1b74d35" + } + }, + "a4493afa196e4888aa1d1b2b06a181a0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_8774f73644024974a3116309684f0c7c", + "max": 149985, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_85d4eb30714f4d66b1fe1f77887554ca", + "value": 149985 + } + }, + "a50c23d78cc445879300f98af0ac69ae": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "a652e69a7c0044f190068adae92d4461": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_146c22e8c0654103944d314f183beac1", + "IPY_MODEL_9384d6d22f3643219151ad248a0d2fc7", + "IPY_MODEL_5780154511334024bedf4323a4c87227" + ], + "layout": "IPY_MODEL_f6d52c07e696497c9744d30e48c4f8ba" + } + }, + "aae06c7d529c418b9841a348bc444d3a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_6f1ca069baf04a5da2861661dadbc662", + "placeholder": "​", + "style": "IPY_MODEL_8af4d1f70cd944ddadf8ea36ac38c58e", + "value": "Map: 100%" + } + }, + "abdd89a240da41858e2eedbe80a3a084": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f73ecd74491647148a180a05c52e69b8", + "max": 2228485, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f312478e6d794daa9625836628caf03f", + "value": 2228485 + } + }, + "adb329d31dc94bbb9447099ee12802a4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "adf9c6b09bd54777996a1f9673d7f694": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f02baf3f36754d8f87241f7184ffb75c", + "placeholder": "​", + "style": "IPY_MODEL_cda0be8a5d5847ca989c89fff99dac1f", + "value": " 119988/119988 [00:08<00:00, 13031.33 examples/s]" + } + }, + "afd3066953514cd59f31e15e4d2915e7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "b01e8fb3d39c4aa986da3ac2b0a16ec7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b1b81a92053b4c3fa5c76caef02563b6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b240fb02e8184aa58d1eba709b1991bc": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "b79d7facd6d7485cb92dc4c053551e40": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ba97193bfa6442bb929be164fc9a7463": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "bbae5295c7814f8aa8a83b6c7c4622f2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "bdb1639f2264475c96a6665fd0a16fdf": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c0fb53db671b4d26ac06c6c3c9933b15": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c24af0f963b7460d9d38e3b09081f949": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c25e4db8dbbc4aef980fa2463678306f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7d8e46bd108d41adae04baa12963bb56", + "placeholder": "​", + "style": "IPY_MODEL_5d5a7becafcb45808dfe65cb660e6827", + "value": " 149985/149985 [00:10<00:00, 17268.92 examples/s]" + } + }, + "c4012bd1af3945f28f62c7c1307458e5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "c55c9f7cf12b40a4bf753945ddd96f05": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0169f1f662334c438b88fcdadfbcbfd4", + "placeholder": "​", + "style": "IPY_MODEL_ba97193bfa6442bb929be164fc9a7463", + "value": " 2/2 [00:00<00:00, 68.43it/s]" + } + }, + "c59fec8321c64cb98488e70f9ef78740": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_65eeb8ee0eeb4127a0d5bd27e2aee5b7", + "placeholder": "​", + "style": "IPY_MODEL_4a8a0369a02d45b0ba6b3714180da358", + "value": "Creating json from Arrow format: 100%" + } + }, + "c6bf49b2298c4d9eb9035fb860b539e7": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c7d932f531e0499ab8318f32834dae51": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c8b52ae553bb4745b0444e6476da535d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c979b3835a7b49ae8ab8947cf13707d5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "caf5cd41ecb44a50b80508f7cb6792f2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_2ada78a1a43a42668dba150700b257ea", + "IPY_MODEL_abdd89a240da41858e2eedbe80a3a084", + "IPY_MODEL_7ed6cb7e905f43768e21ceb29c674215" + ], + "layout": "IPY_MODEL_e8aa467e689c47c5a52738dc8620d529" + } + }, + "cc4803dc285b471685e754d1e442c6fd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e138aec3fffe40fc8855ff43e8bdc96e", + "placeholder": "​", + "style": "IPY_MODEL_06a0f93bdfcb4b6d9f2bd0488565c650", + "value": " 62/62 [00:00<00:00, 199.66ba/s]" + } + }, + "cd33f15aee464f798cba807dce8440e9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "cda0be8a5d5847ca989c89fff99dac1f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "cf58b80e62454c939e14a0cf451a0aa2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9d0edf01c6574b6da5e2fd9ffc9146aa", + "max": 5383113, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_935634cd3d1340d3986110539c3fcc76", + "value": 5383113 + } + }, + "d04039432648443082f031df11d445c9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d115499e37a34b8690d6849494aa65ae": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d36b419d21734f09b8667362c11536b4": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b79d7facd6d7485cb92dc4c053551e40", + "placeholder": "​", + "style": "IPY_MODEL_ddac597cb7134c098050fc68de47b478", + "value": " 4.38k/4.38k [00:00<00:00, 115kB/s]" + } + }, + "d958d6f7c1284adeae233a13353ba3d0": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "dc0da9cdfd2e41998f4e2f3a04dfc658": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c7d932f531e0499ab8318f32834dae51", + "placeholder": "​", + "style": "IPY_MODEL_a50c23d78cc445879300f98af0ac69ae", + "value": "Map: 100%" + } + }, + "dd417a969ac849baa6929d18ada5d1c9": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ddac597cb7134c098050fc68de47b478": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "de9ac409b2104355b33f3224a58d5d24": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "debe32e761d34be1a2c30d801a2451be": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "df38d84cc6ae40788c0f164cc251f185": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f578471ef71447758cfd82bd8bdc99e0", + "max": 62, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_ebc67fdc3a434f4f8a52e12faa935dea", + "value": 62 + } + }, + "dfdcf8520708413da2dc151f41c193c0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "e0f1add308c74732b8e488e2057becf4": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e138aec3fffe40fc8855ff43e8bdc96e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e46269bca9ac4f289ae58b63a9b50c05": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "e764d414a9db4f9bbb3bf42a5f8b780a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e830bae8320b44a4bec4a8652e3d8472": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0411fc784d604202afbfbf43a915e467", + "placeholder": "​", + "style": "IPY_MODEL_3246b30f178c4fe9a256e6e326546cbd", + "value": "Generating test split: 100%" + } + }, + "e875464290684953b527904557f3528e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e8aa467e689c47c5a52738dc8620d529": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e932af18b3734c50b3d7d12972408a8d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": "20px" + } + }, + "e991a429e51d4980b1374992b1bd3fb3": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "eb1a99d40b2b426a80884f1577f18948": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "ebc67fdc3a434f4f8a52e12faa935dea": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "ece324a1271b46b98a8b6fd5ba384236": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ed390a926cd14072bc95e2054d184541": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "ed79c826a7194b5a9942671d86e2379d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_8194ea8f5b0a4c8cb5f999ec0c87a633", + "IPY_MODEL_81b0c62b427040c0a085e7e63db46ac3", + "IPY_MODEL_91799ab4c0864ba9a9a8dd54f73cf7a4" + ], + "layout": "IPY_MODEL_91598533cd7f48f5a708543bf5f3bab6" + } + }, + "ef1231caedd343a08a2b08e8f513a67f": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "eff0a998e46046fe8cbeed279d4956c3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f01e1dee781d49939d3204cdfe991def": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f02baf3f36754d8f87241f7184ffb75c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f174f333e840477ba96c910213a81d0a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "f2b117616f3b4eedb96986bab63a6692": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_727e09b03a2841fab93af2ccdc800619", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_b240fb02e8184aa58d1eba709b1991bc", + "value": 1 + } + }, + "f312478e6d794daa9625836628caf03f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "f44ba78d0c29409bbd1e24134d5335da": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e764d414a9db4f9bbb3bf42a5f8b780a", + "max": 61998, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_fca8c1d470cb49b08c8066676d70aed3", + "value": 61998 + } + }, + "f4eda86e937a4a548024f662723e37a3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_70f0780e3ac143eaa5793bd75b1dd0d4", + "placeholder": "​", + "style": "IPY_MODEL_62c52ca8fa1147c594cfc1b0e891992f", + "value": " 61998/0 [00:00<00:00, 617050.03 examples/s]" + } + }, + "f578471ef71447758cfd82bd8bdc99e0": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f6d52c07e696497c9744d30e48c4f8ba": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f720e5b0f068453895e8f931d83792bd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_09adc94479c14590971e97b21b6a5d6e", + "IPY_MODEL_93283eaea26547c891d16c64e20d3fb4", + "IPY_MODEL_d36b419d21734f09b8667362c11536b4" + ], + "layout": "IPY_MODEL_ef1231caedd343a08a2b08e8f513a67f" + } + }, + "f73ecd74491647148a180a05c52e69b8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f7985d5de72648c2a4334b89ee603f7c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f7d58ab0578b49e39939c05192016146": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f7e102b56feb46c68f968056adaec751": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "fc4458f874424781bbd52adc4f441a37": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d04039432648443082f031df11d445c9", + "max": 2063, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_028b74f6c2fe4fd999507b3ed0f03f21", + "value": 2063 + } + }, + "fc4f53f70e3446a1b93a144879dd8c2d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "fca8c1d470cb49b08c8066676d70aed3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "ff9f1d437bac40b0aa93e4839069deb2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_07078068134d4a11987f88bdf0b08f17", + "IPY_MODEL_fc4458f874424781bbd52adc4f441a37", + "IPY_MODEL_0925e66d052145bcb3480604f3da4cda" + ], + "layout": "IPY_MODEL_4f4ae616c7c343edada8b37ca4027125" + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/laser/tasks/WikiMatrix/README.md b/laser/tasks/WikiMatrix/README.md new file mode 100644 index 0000000000000000000000000000000000000000..455b7eab1cc33384affef904e71558cffdd76399 --- /dev/null +++ b/laser/tasks/WikiMatrix/README.md @@ -0,0 +1,93 @@ +# WikiMatrix: Mining 135M Parallel Sentences in 1620 Language Pairs from Wikipedia + +The goal of this project is to mine for parallel sentences in the textual content of Wikipedia for all possible language pairs. + + +## Mined data +* 85 different languages, 1620 language pairs +* 134M parallel sentences, out of which 34M are aligned with English +* this [*table shows the amount of mined parallel sentences for most of the language pairs*](WikiMatrix-sizes.pdf) +* the mined bitext are stored on AWS and can de downloaded with the following command: +```bash +wget https://dl.fbaipublicfiles.com/laser/WikiMatrix/v1/WikiMatrix.en-fr.tsv.gz +``` +Replace "en-fr" with the ISO codes of the desired language pair. +The language pair must be in alphabetical order, e.g. "de-en" and not "en-de". +The list of available bitexts and their sizes are given in the file [*list_of_bitexts.txt*](list_of_bitexts.txt). +Please do **not loop over all files** since AWs implements some [*limitations*](https://dl.fbaipublicfiles.com/README) to avoid abuse. + +Use this command if you want to download all 1620 language pairs in one tar file (but this is 65GB!): +```bash +wget https://dl.fbaipublicfiles.com/laser/WikiMatrix/WikiMatrix.v1.1620_language_pairs.tar +``` + +## Approach + +We use LASER's bitext mining approach and encoder for 93 languages [2,3]. +We do not use the inter-language links provided by Wikipedia, +but search over all Wikipedia articles of each language. We approach the +computational challenge to mine in almost 600 million sentences by using fast +indexing and similarity search with [*FAISS*](https://github.com/facebookresearch/faiss). +Prior to mining parallel sentences, we perform +sentence segmentation, deduplication and language identification. +Please see reference [1] for details. + + +## Data extraction and threshold optimization +We provide a tool to extract parallel texts from the the TSV files: +```bash +python3 extract.py \ + --tsv WikiMatrix.en-fr.tsv.gz \ + --bitext WikiMatrix.en-fr.txt \ + --src-lang en --trg-lang fr \ + --threshold 1.04 +``` +One can specify the threshold on the margin score. +The higher the value, the more likely the sentences are mutual translations, but the less data one will get. +**A value of 1.04 seems to be good choice for most language pairs.** Please see the analysis in the paper for +more information [1]. + +## Evaluation +To assess the quality of the mined bitexts, we trained neural MT system on all language pairs +for which we were able to mine at least 25k parallel sentences (with a margin threshold of 1.04). +We trained systems in both directions, source to target and target to source, and report BLEU scores +on the [*TED test*](https://github.com/neulab/word-embeddings-for-nmt) set proposed in [4]. +This totals 1886 different NMT systems. +This [*table shows the BLEU scores for the most frequest language pairs*](WikiMatrix-bleu.pdf). +We achieve BLEU scores over 30 for several language pairs. + +The goal is not to build state of the art systems for each language pair, but +to get an indication of the quality of the automatically mined data. These +BLEU scores should be of course appreciated in context of the sizes of the +mined corpora. + +Obviously, we can not exclude that the +provided data contains some wrong alignments even though the margin is large. +Finally, we would like to point out that we run our approach on all available +languages in Wikipedia, independently of the quality of LASER's sentence +embeddings for each one. + + +## License + +The mined data is distributed under the Creative Commons Attribution-ShareAlike license. + +Please cite reference [1] if you use this data. + +## References + +[1] Holger Schwenk, Vishrav Chaudhary, Shuo Sun, Hongyu Gong and Paco Guzman, + [*WikiMatrix: Mining 135M Parallel Sentences in 1620 Language Pairs from Wikipedia*](https://arxiv.org/abs/1907.05791) + arXiv, July 11 2019. + +[2] Mikel Artetxe and Holger Schwenk, + [*Margin-based Parallel Corpus Mining with Multilingual Sentence Embeddings*](https://arxiv.org/abs/1811.01136) + arXiv, Nov 3 2018. + +[3] Mikel Artetxe and Holger Schwenk, + [*Massively Multilingual Sentence Embeddings for Zero-Shot Cross-Lingual Transfer and Beyond*](https://arxiv.org/abs/1812.10464) + arXiv, Dec 26 2018. + +[4] Ye Qi, Devendra Sachan, Matthieu Felix, Sarguna Padmanabhan and Graham Neubig, + [*When and Why Are Pre-Trained Word Embeddings Useful for Neural Machine Translation?*](https://www.aclweb.org/anthology/papers/N/N18/N18-2084/) + NAACL, pages 529-535, 2018. diff --git a/laser/tasks/WikiMatrix/WikiMatrix-bleu.pdf b/laser/tasks/WikiMatrix/WikiMatrix-bleu.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8a1f137dced71b2cc0f4321bf808581dab9b453c Binary files /dev/null and b/laser/tasks/WikiMatrix/WikiMatrix-bleu.pdf differ diff --git a/laser/tasks/WikiMatrix/WikiMatrix-sizes.pdf b/laser/tasks/WikiMatrix/WikiMatrix-sizes.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9e59f163e9212b11b1d1e38f0b94c0074d0f922a Binary files /dev/null and b/laser/tasks/WikiMatrix/WikiMatrix-sizes.pdf differ diff --git a/laser/tasks/WikiMatrix/extract.py b/laser/tasks/WikiMatrix/extract.py new file mode 100644 index 0000000000000000000000000000000000000000..1801675ea8c33457b531f0f874b2562ecb00f8a6 --- /dev/null +++ b/laser/tasks/WikiMatrix/extract.py @@ -0,0 +1,81 @@ +#!/bin/python3 +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# -------------------------------------------------------- +# +# Tool to extract subset of mined bitexts in a tsv.gz file + +import os +import sys +import gzip +import argparse + +############################################################################### +# +# Main +# +############################################################################### + +parser = argparse.ArgumentParser(description='Tool to extract bitext from the WikiMatrix') +parser.add_argument('--encoding', default='utf-8', + help='character encoding for input/output') +parser.add_argument('--tsv', type=str, required=True, + help='File with mined bitexts') +parser.add_argument('--bitext', type=str, required=True, + help='Text file after sentence splitting') +parser.add_argument('--src-lang', type=str, required=True, + help='Source language') +parser.add_argument('--trg-lang', type=str, required=True, + help='Traget language') +parser.add_argument('--threshold', type=float, default=1.05, + help='Threshold on margin score') +parser.add_argument('--nb-sents', type=int, default=999999999, + help='Maximal number of sentences') +parser.add_argument('--nb-words-src', type=int, default=999999999, + help='Maxmimal numer of total words in the source language') +parser.add_argument('--nb-words-trg', type=int, default=999999999, + help='Maxmimal numer of total words in the target language') +args = parser.parse_args() + +print('Tool to extract bitext from the WikiMatrix') + +nl = 0 +nw_src = 0 +nw_trg = 0 +print('Processing {}'.format(args.tsv)) +with gzip.open(args.tsv, 'rt', encoding=args.encoding) as tsv: + with open(args.bitext + '.' + args.src_lang, 'wt', encoding=args.encoding) as fsrc: + with open(args.bitext + '.' + args.trg_lang, 'wt', encoding=args.encoding) as ftrg: + while nl < args.nb_sents: + line = tsv.readline() + if not line: + break + fields = line.split('\t') + cur_src = len(fields[1].split()) + cur_trg = len(fields[2].split()) + if float(fields[0]) < args.threshold: + break + if nw_src + cur_src > args.nb_words_src: + break + if nw_trg + cur_trg > args.nb_words_trg: + break + fsrc.write(fields[1].strip() + '\n') + ftrg.write(fields[2].strip() + '\n') + nw_src += cur_src + nw_trg += cur_trg + nl += 1 + if nl % 100000 == 0: + print('\r - {:d} lines read'.format(nl), end='') + +print('\r - wrote {:d} lines'.format(nl)) +print(' - with {:d} source and {:d} target words'.format(nw_src, nw_trg)) +print(' - last threshold is {:.4f}'.format(float(fields[0]))) diff --git a/laser/tasks/WikiMatrix/list_of_bitexts.txt b/laser/tasks/WikiMatrix/list_of_bitexts.txt new file mode 100644 index 0000000000000000000000000000000000000000..0ecc1a4d012657288fe60126169cd441d85b9dbd --- /dev/null +++ b/laser/tasks/WikiMatrix/list_of_bitexts.txt @@ -0,0 +1,1620 @@ +WikiMatrix.an-ca.tsv 24616 +WikiMatrix.an-de.tsv 12887 +WikiMatrix.an-en.tsv 23313 +WikiMatrix.an-es.tsv 33723 +WikiMatrix.an-fr.tsv 16726 +WikiMatrix.an-gl.tsv 15209 +WikiMatrix.an-it.tsv 13203 +WikiMatrix.an-pl.tsv 10456 +WikiMatrix.an-pt.tsv 14850 +WikiMatrix.an-ru.tsv 11579 +WikiMatrix.ar-arz.tsv 29316 +WikiMatrix.ar-az.tsv 17543 +WikiMatrix.ar-ba.tsv 15093 +WikiMatrix.ar-be.tsv 11720 +WikiMatrix.ar-bg.tsv 54919 +WikiMatrix.ar-bn.tsv 40997 +WikiMatrix.ar-br.tsv 10707 +WikiMatrix.ar-bs.tsv 34137 +WikiMatrix.ar-ca.tsv 94324 +WikiMatrix.ar-ceb.tsv 11056 +WikiMatrix.ar-cs.tsv 67131 +WikiMatrix.ar-da.tsv 53021 +WikiMatrix.ar-de.tsv 99258 +WikiMatrix.ar-el.tsv 66961 +WikiMatrix.ar-en.tsv 999762 +WikiMatrix.ar-eo.tsv 37130 +WikiMatrix.ar-es.tsv 174557 +WikiMatrix.ar-et.tsv 40659 +WikiMatrix.ar-eu.tsv 24853 +WikiMatrix.ar-fa.tsv 58545 +WikiMatrix.ar-fi.tsv 53052 +WikiMatrix.ar-fr.tsv 163549 +WikiMatrix.ar-gl.tsv 50528 +WikiMatrix.ar-he.tsv 68302 +WikiMatrix.ar-hi.tsv 38318 +WikiMatrix.ar-hr.tsv 38853 +WikiMatrix.ar-hu.tsv 60661 +WikiMatrix.ar-id.tsv 90815 +WikiMatrix.ar-is.tsv 18271 +WikiMatrix.ar-it.tsv 123838 +WikiMatrix.ar-ja.tsv 83059 +WikiMatrix.ar-kk.tsv 11688 +WikiMatrix.ar-ko.tsv 48869 +WikiMatrix.ar-lt.tsv 33495 +WikiMatrix.ar-mk.tsv 52154 +WikiMatrix.ar-ml.tsv 32012 +WikiMatrix.ar-mr.tsv 32462 +WikiMatrix.ar-nds.tsv 11783 +WikiMatrix.ar-ne.tsv 12129 +WikiMatrix.ar-nl.tsv 73006 +WikiMatrix.ar-no.tsv 58790 +WikiMatrix.ar-pl.tsv 74295 +WikiMatrix.ar-pt.tsv 157441 +WikiMatrix.ar-ro.tsv 71258 +WikiMatrix.ar-ru.tsv 125312 +WikiMatrix.ar-sh.tsv 35310 +WikiMatrix.ar-si.tsv 32607 +WikiMatrix.ar-sk.tsv 32135 +WikiMatrix.ar-sl.tsv 39982 +WikiMatrix.ar-sq.tsv 30042 +WikiMatrix.ar-sr.tsv 49502 +WikiMatrix.ar-sv.tsv 58224 +WikiMatrix.ar-sw.tsv 13755 +WikiMatrix.ar-ta.tsv 27250 +WikiMatrix.ar-te.tsv 27072 +WikiMatrix.ar-tl.tsv 18350 +WikiMatrix.ar-tr.tsv 69844 +WikiMatrix.ar-tt.tsv 14074 +WikiMatrix.ar-uk.tsv 70551 +WikiMatrix.ar-vi.tsv 93890 +WikiMatrix.arz-de.tsv 11796 +WikiMatrix.arz-en.tsv 18231 +WikiMatrix.arz-es.tsv 12571 +WikiMatrix.arz-fr.tsv 12047 +WikiMatrix.ar-zh.tsv 86236 +WikiMatrix.arz-it.tsv 10384 +WikiMatrix.arz-pt.tsv 10887 +WikiMatrix.arz-ru.tsv 12163 +WikiMatrix.as-de.tsv 11031 +WikiMatrix.as-es.tsv 11054 +WikiMatrix.as-fr.tsv 12092 +WikiMatrix.as-it.tsv 10844 +WikiMatrix.azb-fr.tsv 10355 +WikiMatrix.az-bg.tsv 14096 +WikiMatrix.az-ca.tsv 15416 +WikiMatrix.az-cs.tsv 17994 +WikiMatrix.az-da.tsv 11999 +WikiMatrix.az-de.tsv 34736 +WikiMatrix.az-el.tsv 10594 +WikiMatrix.az-en.tsv 71276 +WikiMatrix.az-es.tsv 31334 +WikiMatrix.az-et.tsv 10537 +WikiMatrix.az-fa.tsv 16093 +WikiMatrix.az-fi.tsv 14393 +WikiMatrix.az-fr.tsv 29949 +WikiMatrix.az-gl.tsv 10514 +WikiMatrix.az-he.tsv 12252 +WikiMatrix.az-hr.tsv 10638 +WikiMatrix.az-hu.tsv 15439 +WikiMatrix.az-id.tsv 17049 +WikiMatrix.az-it.tsv 25780 +WikiMatrix.az-ja.tsv 23140 +WikiMatrix.az-ko.tsv 11806 +WikiMatrix.az-nl.tsv 22641 +WikiMatrix.az-no.tsv 13992 +WikiMatrix.az-pl.tsv 22609 +WikiMatrix.az-pt.tsv 25337 +WikiMatrix.az-ro.tsv 14801 +WikiMatrix.az-ru.tsv 47130 +WikiMatrix.az-sr.tsv 10553 +WikiMatrix.az-sv.tsv 19240 +WikiMatrix.az-ta.tsv 11980 +WikiMatrix.az-tr.tsv 42846 +WikiMatrix.az-uk.tsv 19756 +WikiMatrix.az-vi.tsv 10485 +WikiMatrix.az-zh.tsv 19175 +WikiMatrix.ba-bg.tsv 14238 +WikiMatrix.ba-ca.tsv 17290 +WikiMatrix.ba-cs.tsv 16981 +WikiMatrix.ba-da.tsv 13015 +WikiMatrix.ba-de.tsv 27046 +WikiMatrix.ba-el.tsv 10653 +WikiMatrix.ba-en.tsv 28176 +WikiMatrix.ba-es.tsv 28201 +WikiMatrix.ba-fi.tsv 12213 +WikiMatrix.ba-fr.tsv 29638 +WikiMatrix.ba-gl.tsv 12390 +WikiMatrix.ba-hr.tsv 10663 +WikiMatrix.ba-hu.tsv 12223 +WikiMatrix.ba-id.tsv 12203 +WikiMatrix.ba-it.tsv 26652 +WikiMatrix.ba-ja.tsv 13782 +WikiMatrix.ba-nl.tsv 21836 +WikiMatrix.ba-no.tsv 15233 +WikiMatrix.ba-pl.tsv 19390 +WikiMatrix.ba-pt.tsv 24870 +WikiMatrix.bar-de.tsv 41990 +WikiMatrix.bar-en.tsv 16990 +WikiMatrix.bar-es.tsv 12506 +WikiMatrix.bar-fr.tsv 12036 +WikiMatrix.bar-it.tsv 10450 +WikiMatrix.ba-ro.tsv 15499 +WikiMatrix.bar-pt.tsv 10377 +WikiMatrix.bar-ru.tsv 10220 +WikiMatrix.ba-ru.tsv 42893 +WikiMatrix.ba-sh.tsv 10485 +WikiMatrix.ba-sk.tsv 10764 +WikiMatrix.ba-sl.tsv 10349 +WikiMatrix.ba-sr.tsv 10182 +WikiMatrix.ba-sv.tsv 20346 +WikiMatrix.ba-tr.tsv 11183 +WikiMatrix.ba-uk.tsv 15915 +WikiMatrix.ba-zh.tsv 10468 +WikiMatrix.be-bg.tsv 16061 +WikiMatrix.be-ca.tsv 16344 +WikiMatrix.be-cs.tsv 14343 +WikiMatrix.be-de.tsv 20671 +WikiMatrix.be-en.tsv 33927 +WikiMatrix.be-es.tsv 28153 +WikiMatrix.be-fi.tsv 10959 +WikiMatrix.be-fr.tsv 24250 +WikiMatrix.be-he.tsv 10710 +WikiMatrix.be-hu.tsv 11940 +WikiMatrix.be-it.tsv 24351 +WikiMatrix.be-ja.tsv 12032 +WikiMatrix.be-nl.tsv 14188 +WikiMatrix.be-no.tsv 10997 +WikiMatrix.be-pl.tsv 19438 +WikiMatrix.be-pt.tsv 23580 +WikiMatrix.be-ro.tsv 13182 +WikiMatrix.be-ru.tsv 161215 +WikiMatrix.be-sr.tsv 10206 +WikiMatrix.be-sv.tsv 16161 +WikiMatrix.be-uk.tsv 80801 +WikiMatrix.bg-bn.tsv 38072 +WikiMatrix.bg-bs.tsv 34760 +WikiMatrix.bg-ca.tsv 76189 +WikiMatrix.bg-ceb.tsv 11166 +WikiMatrix.bg-cs.tsv 79005 +WikiMatrix.bg-da.tsv 53738 +WikiMatrix.bg-de.tsv 132146 +WikiMatrix.bg-el.tsv 62768 +WikiMatrix.bg-en.tsv 357969 +WikiMatrix.bg-eo.tsv 40884 +WikiMatrix.bg-es.tsv 122534 +WikiMatrix.bg-et.tsv 43393 +WikiMatrix.bg-eu.tsv 25564 +WikiMatrix.bg-fa.tsv 37158 +WikiMatrix.bg-fi.tsv 61847 +WikiMatrix.bg-fr.tsv 117264 +WikiMatrix.bg-gl.tsv 43273 +WikiMatrix.bg-he.tsv 58167 +WikiMatrix.bg-hi.tsv 30349 +WikiMatrix.bg-hr.tsv 47877 +WikiMatrix.bg-hu.tsv 68595 +WikiMatrix.bg-id.tsv 60639 +WikiMatrix.bg-is.tsv 17659 +WikiMatrix.bg-it.tsv 102305 +WikiMatrix.bg-ja.tsv 71117 +WikiMatrix.bg-kk.tsv 11542 +WikiMatrix.bg-ko.tsv 38280 +WikiMatrix.bg-lt.tsv 42406 +WikiMatrix.bg-mk.tsv 86038 +WikiMatrix.bg-ml.tsv 29348 +WikiMatrix.bg-mr.tsv 35898 +WikiMatrix.bg-nds.tsv 11308 +WikiMatrix.bg-ne.tsv 13616 +WikiMatrix.bg-nl.tsv 84025 +WikiMatrix.bg-no.tsv 58964 +WikiMatrix.bg-pl.tsv 96090 +WikiMatrix.bg-pt.tsv 114067 +WikiMatrix.bg-ro.tsv 69902 +WikiMatrix.bg-ru.tsv 270073 +WikiMatrix.bg-sh.tsv 41845 +WikiMatrix.bg-si.tsv 31112 +WikiMatrix.bg-sk.tsv 43375 +WikiMatrix.bg-sl.tsv 46673 +WikiMatrix.bg-sq.tsv 26037 +WikiMatrix.bg-sr.tsv 65281 +WikiMatrix.bg-sv.tsv 63135 +WikiMatrix.bg-sw.tsv 12945 +WikiMatrix.bg-ta.tsv 21462 +WikiMatrix.bg-te.tsv 23487 +WikiMatrix.bg-tl.tsv 21198 +WikiMatrix.bg-tr.tsv 56592 +WikiMatrix.bg-tt.tsv 12088 +WikiMatrix.bg-uk.tsv 126154 +WikiMatrix.bg-vi.tsv 60738 +WikiMatrix.bg-zh.tsv 60373 +WikiMatrix.bn-bs.tsv 21448 +WikiMatrix.bn-ca.tsv 41891 +WikiMatrix.bn-cs.tsv 47405 +WikiMatrix.bn-da.tsv 33723 +WikiMatrix.bn-de.tsv 70350 +WikiMatrix.bn-el.tsv 36202 +WikiMatrix.bn-en.tsv 280567 +WikiMatrix.bn-eo.tsv 27166 +WikiMatrix.bn-es.tsv 81824 +WikiMatrix.bn-et.tsv 26968 +WikiMatrix.bn-eu.tsv 14912 +WikiMatrix.bn-fa.tsv 20952 +WikiMatrix.bn-fi.tsv 37517 +WikiMatrix.bn-fr.tsv 68784 +WikiMatrix.bn-gl.tsv 27666 +WikiMatrix.bn-he.tsv 34274 +WikiMatrix.bn-hi.tsv 21240 +WikiMatrix.bn-hr.tsv 23924 +WikiMatrix.bn-hu.tsv 41219 +WikiMatrix.bn-id.tsv 36553 +WikiMatrix.bn-it.tsv 64222 +WikiMatrix.bn-ja.tsv 38462 +WikiMatrix.bn-ko.tsv 20915 +WikiMatrix.bn-lt.tsv 21523 +WikiMatrix.bn-mk.tsv 23173 +WikiMatrix.bn-nl.tsv 50217 +WikiMatrix.bn-no.tsv 35729 +WikiMatrix.bn-pl.tsv 52856 +WikiMatrix.bn-pt.tsv 76354 +WikiMatrix.bn-ro.tsv 46700 +WikiMatrix.bn-ru.tsv 62512 +WikiMatrix.bn-sh.tsv 20767 +WikiMatrix.bn-sk.tsv 25064 +WikiMatrix.bn-sl.tsv 26700 +WikiMatrix.bn-sq.tsv 17724 +WikiMatrix.bn-sr.tsv 25613 +WikiMatrix.bn-sv.tsv 54274 +WikiMatrix.bn-ta.tsv 12734 +WikiMatrix.bn-tr.tsv 33161 +WikiMatrix.bn-uk.tsv 37701 +WikiMatrix.bn-vi.tsv 31080 +WikiMatrix.bn-zh.tsv 31604 +WikiMatrix.br-de.tsv 20925 +WikiMatrix.br-en.tsv 16902 +WikiMatrix.br-es.tsv 22492 +WikiMatrix.br-fr.tsv 23892 +WikiMatrix.br-it.tsv 22410 +WikiMatrix.br-pt.tsv 19806 +WikiMatrix.br-ru.tsv 16104 +WikiMatrix.br-uk.tsv 11428 +WikiMatrix.bs-ca.tsv 44601 +WikiMatrix.bs-cs.tsv 43380 +WikiMatrix.bs-da.tsv 32718 +WikiMatrix.bs-de.tsv 71019 +WikiMatrix.bs-el.tsv 33881 +WikiMatrix.bs-en.tsv 210690 +WikiMatrix.bs-eo.tsv 24088 +WikiMatrix.bs-es.tsv 70064 +WikiMatrix.bs-et.tsv 25631 +WikiMatrix.bs-eu.tsv 16473 +WikiMatrix.bs-fa.tsv 20287 +WikiMatrix.bs-fi.tsv 36106 +WikiMatrix.bs-fr.tsv 60013 +WikiMatrix.bs-gl.tsv 32509 +WikiMatrix.bs-he.tsv 30165 +WikiMatrix.bs-hi.tsv 16693 +WikiMatrix.bs-hr.tsv 164225 +WikiMatrix.bs-hu.tsv 39139 +WikiMatrix.bs-id.tsv 38865 +WikiMatrix.bs-is.tsv 11489 +WikiMatrix.bs-it.tsv 52824 +WikiMatrix.bs-ja.tsv 36882 +WikiMatrix.bs-ko.tsv 22710 +WikiMatrix.bs-lt.tsv 23114 +WikiMatrix.bs-mk.tsv 39333 +WikiMatrix.bs-ml.tsv 19148 +WikiMatrix.bs-mr.tsv 20082 +WikiMatrix.bs-nl.tsv 45271 +WikiMatrix.bs-no.tsv 36061 +WikiMatrix.bs-pl.tsv 48283 +WikiMatrix.bs-pt.tsv 62118 +WikiMatrix.bs-ro.tsv 37605 +WikiMatrix.bs-ru.tsv 59540 +WikiMatrix.bs-sh.tsv 178354 +WikiMatrix.bs-si.tsv 16269 +WikiMatrix.bs-sk.tsv 25108 +WikiMatrix.bs-sl.tsv 34165 +WikiMatrix.bs-sq.tsv 19923 +WikiMatrix.bs-sr.tsv 130890 +WikiMatrix.bs-sv.tsv 38600 +WikiMatrix.bs-ta.tsv 15962 +WikiMatrix.bs-te.tsv 12974 +WikiMatrix.bs-tl.tsv 13894 +WikiMatrix.bs-tr.tsv 33212 +WikiMatrix.bs-uk.tsv 39682 +WikiMatrix.bs-vi.tsv 38866 +WikiMatrix.bs-zh.tsv 31707 +WikiMatrix.ca-ceb.tsv 14847 +WikiMatrix.ca-cs.tsv 100782 +WikiMatrix.ca-da.tsv 86539 +WikiMatrix.ca-de.tsv 180321 +WikiMatrix.ca-el.tsv 90118 +WikiMatrix.ca-en.tsv 1205908 +WikiMatrix.ca-eo.tsv 81716 +WikiMatrix.ca-es.tsv 1580036 +WikiMatrix.ca-et.tsv 54756 +WikiMatrix.ca-eu.tsv 77232 +WikiMatrix.ca-fa.tsv 44064 +WikiMatrix.ca-fi.tsv 83094 +WikiMatrix.ca-fo.tsv 13082 +WikiMatrix.ca-fr.tsv 490870 +WikiMatrix.ca-fy.tsv 13000 +WikiMatrix.ca-gl.tsv 268445 +WikiMatrix.ca-he.tsv 84339 +WikiMatrix.ca-hi.tsv 37348 +WikiMatrix.ca-hr.tsv 57726 +WikiMatrix.ca-hu.tsv 92229 +WikiMatrix.ca-id.tsv 107262 +WikiMatrix.ca-is.tsv 23961 +WikiMatrix.ca-it.tsv 316207 +WikiMatrix.ca-ja.tsv 103898 +WikiMatrix.ca-ka.tsv 11585 +WikiMatrix.ca-kk.tsv 12931 +WikiMatrix.ca-ko.tsv 52062 +WikiMatrix.ca-la.tsv 12936 +WikiMatrix.ca-lb.tsv 12167 +WikiMatrix.ca-lt.tsv 45454 +WikiMatrix.ca-mk.tsv 61863 +WikiMatrix.ca-ml.tsv 45785 +WikiMatrix.ca-mr.tsv 56224 +WikiMatrix.ca-nds.tsv 16849 +WikiMatrix.ca-ne.tsv 17559 +WikiMatrix.ca-nl.tsv 144699 +WikiMatrix.ca-no.tsv 102814 +WikiMatrix.ca-oc.tsv 57688 +WikiMatrix.ca-pl.tsv 121144 +WikiMatrix.ca-pt.tsv 358872 +WikiMatrix.ca-ro.tsv 110611 +WikiMatrix.ca-ru.tsv 169694 +WikiMatrix.ca-sh.tsv 52130 +WikiMatrix.ca-si.tsv 52526 +WikiMatrix.ca-sk.tsv 50258 +WikiMatrix.ca-sl.tsv 57635 +WikiMatrix.ca-sq.tsv 34778 +WikiMatrix.ca-sr.tsv 67675 +WikiMatrix.ca-sv.tsv 102757 +WikiMatrix.ca-sw.tsv 14172 +WikiMatrix.ca-ta.tsv 30492 +WikiMatrix.ca-te.tsv 35458 +WikiMatrix.ca-tl.tsv 31806 +WikiMatrix.ca-tr.tsv 77056 +WikiMatrix.ca-tt.tsv 16252 +WikiMatrix.ca-uk.tsv 98316 +WikiMatrix.ca-vi.tsv 106890 +WikiMatrix.ca-zh.tsv 90642 +WikiMatrix.ceb-cs.tsv 13961 +WikiMatrix.ceb-de.tsv 22557 +WikiMatrix.ceb-en.tsv 29061 +WikiMatrix.ceb-es.tsv 27593 +WikiMatrix.ceb-fi.tsv 10552 +WikiMatrix.ceb-fr.tsv 24359 +WikiMatrix.ceb-hu.tsv 12546 +WikiMatrix.ceb-it.tsv 24544 +WikiMatrix.ceb-ja.tsv 14628 +WikiMatrix.ceb-nl.tsv 15981 +WikiMatrix.ceb-no.tsv 10617 +WikiMatrix.ceb-pl.tsv 17744 +WikiMatrix.ceb-pt.tsv 20982 +WikiMatrix.ceb-ro.tsv 11740 +WikiMatrix.ceb-ru.tsv 21786 +WikiMatrix.ceb-sv.tsv 55991 +WikiMatrix.ceb-uk.tsv 12630 +WikiMatrix.cs-da.tsv 75869 +WikiMatrix.cs-de.tsv 233859 +WikiMatrix.cs-el.tsv 70243 +WikiMatrix.cs-en.tsv 519194 +WikiMatrix.cs-eo.tsv 75647 +WikiMatrix.cs-es.tsv 181522 +WikiMatrix.cs-et.tsv 62499 +WikiMatrix.cs-eu.tsv 36854 +WikiMatrix.cs-fa.tsv 45233 +WikiMatrix.cs-fi.tsv 95910 +WikiMatrix.cs-fr.tsv 185766 +WikiMatrix.cs-fy.tsv 10155 +WikiMatrix.cs-gl.tsv 54156 +WikiMatrix.cs-he.tsv 72677 +WikiMatrix.cs-hi.tsv 38939 +WikiMatrix.cs-hr.tsv 63902 +WikiMatrix.cs-hu.tsv 105871 +WikiMatrix.cs-id.tsv 78669 +WikiMatrix.cs-is.tsv 23143 +WikiMatrix.cs-it.tsv 161101 +WikiMatrix.cs-ja.tsv 105593 +WikiMatrix.cs-ka.tsv 10280 +WikiMatrix.cs-kk.tsv 15269 +WikiMatrix.cs-ko.tsv 53009 +WikiMatrix.cs-la.tsv 11106 +WikiMatrix.cs-lt.tsv 55863 +WikiMatrix.cs-mk.tsv 51965 +WikiMatrix.cs-ml.tsv 36217 +WikiMatrix.cs-mr.tsv 41772 +WikiMatrix.cs-nds.tsv 14694 +WikiMatrix.cs-ne.tsv 15583 +WikiMatrix.cs-nl.tsv 139344 +WikiMatrix.cs-no.tsv 86494 +WikiMatrix.cs-oc.tsv 11347 +WikiMatrix.cs-pl.tsv 176644 +WikiMatrix.cs-pt.tsv 153498 +WikiMatrix.cs-ro.tsv 82650 +WikiMatrix.cs-ru.tsv 186997 +WikiMatrix.cs-sh.tsv 50524 +WikiMatrix.cs-si.tsv 37450 +WikiMatrix.cs-sk.tsv 474501 +WikiMatrix.cs-sl.tsv 64723 +WikiMatrix.cs-sq.tsv 30247 +WikiMatrix.cs-sr.tsv 63977 +WikiMatrix.cs-sv.tsv 97411 +WikiMatrix.cs-sw.tsv 15456 +WikiMatrix.cs-ta.tsv 31623 +WikiMatrix.cs-te.tsv 34268 +WikiMatrix.cs-tl.tsv 25877 +WikiMatrix.cs-tr.tsv 75298 +WikiMatrix.cs-tt.tsv 14187 +WikiMatrix.cs-uk.tsv 104982 +WikiMatrix.cs-vi.tsv 74800 +WikiMatrix.cs-zh.tsv 80380 +WikiMatrix.da-de.tsv 180346 +WikiMatrix.da-el.tsv 54103 +WikiMatrix.da-en.tsv 436051 +WikiMatrix.da-eo.tsv 39229 +WikiMatrix.da-es.tsv 140600 +WikiMatrix.da-et.tsv 45476 +WikiMatrix.da-eu.tsv 26471 +WikiMatrix.da-fa.tsv 29956 +WikiMatrix.da-fi.tsv 75305 +WikiMatrix.da-fo.tsv 12572 +WikiMatrix.da-fr.tsv 142489 +WikiMatrix.da-gl.tsv 44177 +WikiMatrix.da-he.tsv 55865 +WikiMatrix.da-hi.tsv 25361 +WikiMatrix.da-hr.tsv 43287 +WikiMatrix.da-hu.tsv 69597 +WikiMatrix.da-id.tsv 63913 +WikiMatrix.da-is.tsv 20952 +WikiMatrix.da-it.tsv 115905 +WikiMatrix.da-ja.tsv 76251 +WikiMatrix.da-ko.tsv 37016 +WikiMatrix.da-lt.tsv 35446 +WikiMatrix.da-mk.tsv 39837 +WikiMatrix.da-ml.tsv 30210 +WikiMatrix.da-mr.tsv 35952 +WikiMatrix.da-nds.tsv 11399 +WikiMatrix.da-ne.tsv 12258 +WikiMatrix.da-nl.tsv 110077 +WikiMatrix.da-no.tsv 303266 +WikiMatrix.da-pl.tsv 89734 +WikiMatrix.da-pt.tsv 123217 +WikiMatrix.da-ro.tsv 70268 +WikiMatrix.da-ru.tsv 109086 +WikiMatrix.da-sh.tsv 37811 +WikiMatrix.da-si.tsv 32338 +WikiMatrix.da-sk.tsv 39731 +WikiMatrix.da-sl.tsv 40166 +WikiMatrix.da-sq.tsv 23038 +WikiMatrix.da-sr.tsv 43677 +WikiMatrix.da-sv.tsv 168311 +WikiMatrix.da-sw.tsv 11561 +WikiMatrix.da-ta.tsv 20656 +WikiMatrix.da-te.tsv 21459 +WikiMatrix.da-tl.tsv 23770 +WikiMatrix.da-tr.tsv 55021 +WikiMatrix.da-tt.tsv 11511 +WikiMatrix.da-uk.tsv 62966 +WikiMatrix.da-vi.tsv 68811 +WikiMatrix.da-zh.tsv 57975 +WikiMatrix.de-el.tsv 95377 +WikiMatrix.de-en.tsv 1573437 +WikiMatrix.de-eo.tsv 186502 +WikiMatrix.de-es.tsv 418724 +WikiMatrix.de-et.tsv 106627 +WikiMatrix.de-eu.tsv 53517 +WikiMatrix.de-fa.tsv 66193 +WikiMatrix.de-fi.tsv 163341 +WikiMatrix.de-fo.tsv 14842 +WikiMatrix.de-fr.tsv 626166 +WikiMatrix.de-fy.tsv 16523 +WikiMatrix.de-gl.tsv 80842 +WikiMatrix.de-gom.tsv 10721 +WikiMatrix.de-he.tsv 109703 +WikiMatrix.de-hi.tsv 57760 +WikiMatrix.de-hr.tsv 87640 +WikiMatrix.de-hu.tsv 192730 +WikiMatrix.de-hy.tsv 11529 +WikiMatrix.de-id.tsv 107890 +WikiMatrix.de-is.tsv 34569 +WikiMatrix.de-it.tsv 388342 +WikiMatrix.de-ja.tsv 217547 +WikiMatrix.de-ka.tsv 15369 +WikiMatrix.de-kk.tsv 23972 +WikiMatrix.de-ko.tsv 82280 +WikiMatrix.de-la.tsv 17846 +WikiMatrix.de-lb.tsv 26924 +WikiMatrix.de-lt.tsv 78962 +WikiMatrix.de-mk.tsv 64773 +WikiMatrix.de-ml.tsv 51618 +WikiMatrix.de-mr.tsv 58672 +WikiMatrix.de-nds.tsv 75590 +WikiMatrix.de-ne.tsv 21897 +WikiMatrix.de-nl.tsv 472831 +WikiMatrix.de-no.tsv 207477 +WikiMatrix.de-oc.tsv 17152 +WikiMatrix.de-pl.tsv 285039 +WikiMatrix.de-pt.tsv 294059 +WikiMatrix.de-rm.tsv 10576 +WikiMatrix.de-ro.tsv 129013 +WikiMatrix.de-ru.tsv 368206 +WikiMatrix.de-sh.tsv 68373 +WikiMatrix.de-si.tsv 50991 +WikiMatrix.de-sk.tsv 94959 +WikiMatrix.de-sl.tsv 106666 +WikiMatrix.de-sq.tsv 51177 +WikiMatrix.de-sr.tsv 81479 +WikiMatrix.de-sv.tsv 216938 +WikiMatrix.de-sw.tsv 20702 +WikiMatrix.de-ta.tsv 58600 +WikiMatrix.de-te.tsv 57957 +WikiMatrix.de-tg.tsv 11121 +WikiMatrix.de-tl.tsv 32893 +WikiMatrix.de-tr.tsv 127051 +WikiMatrix.de-tt.tsv 23087 +WikiMatrix.de-uk.tsv 165076 +WikiMatrix.de-vi.tsv 107022 +WikiMatrix.de-wuu.tsv 11173 +WikiMatrix.de-zh.tsv 134077 +WikiMatrix.el-en.tsv 620801 +WikiMatrix.el-eo.tsv 39852 +WikiMatrix.el-es.tsv 145191 +WikiMatrix.el-et.tsv 41026 +WikiMatrix.el-eu.tsv 23862 +WikiMatrix.el-fa.tsv 35116 +WikiMatrix.el-fi.tsv 55435 +WikiMatrix.el-fr.tsv 137073 +WikiMatrix.el-gl.tsv 48685 +WikiMatrix.el-he.tsv 56833 +WikiMatrix.el-hi.tsv 26307 +WikiMatrix.el-hr.tsv 43565 +WikiMatrix.el-hu.tsv 64636 +WikiMatrix.el-id.tsv 73368 +WikiMatrix.el-is.tsv 15794 +WikiMatrix.el-it.tsv 119290 +WikiMatrix.el-ja.tsv 69478 +WikiMatrix.el-ko.tsv 35634 +WikiMatrix.el-lt.tsv 34372 +WikiMatrix.el-mk.tsv 52936 +WikiMatrix.el-ml.tsv 27124 +WikiMatrix.el-mr.tsv 32288 +WikiMatrix.el-nl.tsv 76721 +WikiMatrix.el-no.tsv 60863 +WikiMatrix.el-pl.tsv 77338 +WikiMatrix.el-pt.tsv 144004 +WikiMatrix.el-ro.tsv 78731 +WikiMatrix.el-ru.tsv 114815 +WikiMatrix.el-sh.tsv 38130 +WikiMatrix.el-si.tsv 31562 +WikiMatrix.el-sk.tsv 35679 +WikiMatrix.el-sl.tsv 46819 +WikiMatrix.el-sq.tsv 28074 +WikiMatrix.el-sr.tsv 52918 +WikiMatrix.el-sv.tsv 62158 +WikiMatrix.el-sw.tsv 11271 +WikiMatrix.el-ta.tsv 16938 +WikiMatrix.el-te.tsv 18789 +WikiMatrix.el-tl.tsv 20861 +WikiMatrix.el-tr.tsv 56445 +WikiMatrix.el-uk.tsv 68884 +WikiMatrix.el-vi.tsv 75576 +WikiMatrix.el-zh.tsv 62957 +WikiMatrix.en-eo.tsv 298200 +WikiMatrix.en-es.tsv 3377911 +WikiMatrix.en-et.tsv 243869 +WikiMatrix.en-eu.tsv 119479 +WikiMatrix.en-fa.tsv 303805 +WikiMatrix.en-fi.tsv 375723 +WikiMatrix.en-fo.tsv 32317 +WikiMatrix.en-fr.tsv 2757883 +WikiMatrix.en-fy.tsv 32249 +WikiMatrix.en-gl.tsv 446151 +WikiMatrix.en-he.tsv 545744 +WikiMatrix.en-hi.tsv 231459 +WikiMatrix.en-hr.tsv 259498 +WikiMatrix.en-hu.tsv 488318 +WikiMatrix.en-id.tsv 1019170 +WikiMatrix.en-io.tsv 11209 +WikiMatrix.en-is.tsv 85991 +WikiMatrix.en-it.tsv 2126083 +WikiMatrix.en-ja.tsv 851706 +WikiMatrix.en-jv.tsv 13048 +WikiMatrix.en-ka.tsv 12807 +WikiMatrix.en-kk.tsv 20053 +WikiMatrix.en-ko.tsv 306900 +WikiMatrix.en-la.tsv 32280 +WikiMatrix.en-lb.tsv 22281 +WikiMatrix.en-lmo.tsv 10434 +WikiMatrix.en-lt.tsv 157525 +WikiMatrix.en-mg.tsv 13959 +WikiMatrix.en-mk.tsv 395394 +WikiMatrix.en-ml.tsv 71508 +WikiMatrix.en-mr.tsv 124308 +WikiMatrix.en-mwl.tsv 10443 +WikiMatrix.en-nds_nl.tsv 10550 +WikiMatrix.en-nds.tsv 43401 +WikiMatrix.en-ne.tsv 15015 +WikiMatrix.en-nl.tsv 796507 +WikiMatrix.en-no.tsv 636472 +WikiMatrix.en-oc.tsv 37331 +WikiMatrix.en-pl.tsv 668646 +WikiMatrix.en-pt.tsv 2461557 +WikiMatrix.en-ro.tsv 631485 +WikiMatrix.en-ru.tsv 1661908 +WikiMatrix.en-sh.tsv 224146 +WikiMatrix.en-simple.tsv 599340 +WikiMatrix.en-si.tsv 115045 +WikiMatrix.en-sk.tsv 178984 +WikiMatrix.en-sl.tsv 318027 +WikiMatrix.en-sq.tsv 180111 +WikiMatrix.en-sr.tsv 395568 +WikiMatrix.en-sv.tsv 546288 +WikiMatrix.en-sw.tsv 51386 +WikiMatrix.en-ta.tsv 95161 +WikiMatrix.en-te.tsv 91910 +WikiMatrix.en-tg.tsv 15002 +WikiMatrix.en-tl.tsv 75446 +WikiMatrix.en-tr.tsv 477735 +WikiMatrix.en-tt.tsv 32153 +WikiMatrix.en-ug.tsv 10698 +WikiMatrix.en-uk.tsv 681114 +WikiMatrix.en-vi.tsv 1073751 +WikiMatrix.en-wuu.tsv 17675 +WikiMatrix.en-zh.tsv 786511 +WikiMatrix.eo-es.tsv 149827 +WikiMatrix.eo-et.tsv 31921 +WikiMatrix.eo-eu.tsv 25283 +WikiMatrix.eo-fa.tsv 23234 +WikiMatrix.eo-fi.tsv 46112 +WikiMatrix.eo-fr.tsv 134088 +WikiMatrix.eo-gl.tsv 46309 +WikiMatrix.eo-he.tsv 39004 +WikiMatrix.eo-hi.tsv 22778 +WikiMatrix.eo-hr.tsv 29259 +WikiMatrix.eo-hu.tsv 57398 +WikiMatrix.eo-id.tsv 46010 +WikiMatrix.eo-is.tsv 15379 +WikiMatrix.eo-it.tsv 101947 +WikiMatrix.eo-ja.tsv 48733 +WikiMatrix.eo-ko.tsv 26463 +WikiMatrix.eo-lt.tsv 28059 +WikiMatrix.eo-mk.tsv 30254 +WikiMatrix.eo-ml.tsv 28437 +WikiMatrix.eo-mr.tsv 28622 +WikiMatrix.eo-nds.tsv 11812 +WikiMatrix.eo-nl.tsv 81182 +WikiMatrix.eo-no.tsv 47185 +WikiMatrix.eo-pl.tsv 77317 +WikiMatrix.eo-pt.tsv 91599 +WikiMatrix.eo-ro.tsv 43594 +WikiMatrix.eo-ru.tsv 81964 +WikiMatrix.eo-sh.tsv 26394 +WikiMatrix.eo-si.tsv 28638 +WikiMatrix.eo-sk.tsv 41405 +WikiMatrix.eo-sl.tsv 32362 +WikiMatrix.eo-sq.tsv 19844 +WikiMatrix.eo-sr.tsv 36234 +WikiMatrix.eo-sv.tsv 53442 +WikiMatrix.eo-ta.tsv 16284 +WikiMatrix.eo-te.tsv 19804 +WikiMatrix.eo-tl.tsv 17779 +WikiMatrix.eo-tr.tsv 37653 +WikiMatrix.eo-uk.tsv 50410 +WikiMatrix.eo-vi.tsv 42253 +WikiMatrix.eo-zh.tsv 39852 +WikiMatrix.es-et.tsv 89252 +WikiMatrix.es-eu.tsv 154280 +WikiMatrix.es-fa.tsv 83056 +WikiMatrix.es-fi.tsv 155486 +WikiMatrix.es-fo.tsv 21382 +WikiMatrix.es-fr.tsv 905760 +WikiMatrix.es-fy.tsv 21959 +WikiMatrix.es-gl.tsv 610824 +WikiMatrix.es-gom.tsv 13914 +WikiMatrix.es-he.tsv 153353 +WikiMatrix.es-hi.tsv 71866 +WikiMatrix.es-hr.tsv 94295 +WikiMatrix.es-hu.tsv 167286 +WikiMatrix.es-hy.tsv 13124 +WikiMatrix.es-id.tsv 198191 +WikiMatrix.es-is.tsv 42377 +WikiMatrix.es-it.tsv 671298 +WikiMatrix.es-ja.tsv 219260 +WikiMatrix.es-jv.tsv 12254 +WikiMatrix.es-ka.tsv 16433 +WikiMatrix.es-kk.tsv 26257 +WikiMatrix.es-ko.tsv 108385 +WikiMatrix.es-la.tsv 20803 +WikiMatrix.es-lb.tsv 19884 +WikiMatrix.es-lt.tsv 76193 +WikiMatrix.es-mk.tsv 92702 +WikiMatrix.es-ml.tsv 65508 +WikiMatrix.es-mr.tsv 98088 +WikiMatrix.es-nds.tsv 28568 +WikiMatrix.es-ne.tsv 25483 +WikiMatrix.es-nl.tsv 272587 +WikiMatrix.es-no.tsv 181719 +WikiMatrix.es-oc.tsv 35804 +WikiMatrix.es-pl.tsv 235464 +WikiMatrix.es-pt.tsv 923724 +WikiMatrix.es-ro.tsv 183489 +WikiMatrix.es-ru.tsv 393314 +WikiMatrix.es-sh.tsv 81086 +WikiMatrix.es-si.tsv 84161 +WikiMatrix.es-sk.tsv 81589 +WikiMatrix.es-sl.tsv 93744 +WikiMatrix.es-sq.tsv 53815 +WikiMatrix.es-sr.tsv 107044 +WikiMatrix.es-sv.tsv 181152 +WikiMatrix.es-sw.tsv 21991 +WikiMatrix.es-ta.tsv 57223 +WikiMatrix.es-te.tsv 71668 +WikiMatrix.es-tl.tsv 48392 +WikiMatrix.es-tr.tsv 147352 +WikiMatrix.es-tt.tsv 26290 +WikiMatrix.es-uk.tsv 187294 +WikiMatrix.es-vi.tsv 206705 +WikiMatrix.es-wuu.tsv 12873 +WikiMatrix.es-zh.tsv 174315 +WikiMatrix.et-eu.tsv 22986 +WikiMatrix.et-fa.tsv 24256 +WikiMatrix.et-fi.tsv 70662 +WikiMatrix.et-fr.tsv 85947 +WikiMatrix.et-gl.tsv 32333 +WikiMatrix.et-he.tsv 39824 +WikiMatrix.et-hi.tsv 20988 +WikiMatrix.et-hr.tsv 33532 +WikiMatrix.et-hu.tsv 56432 +WikiMatrix.et-id.tsv 41272 +WikiMatrix.et-is.tsv 14970 +WikiMatrix.et-it.tsv 75461 +WikiMatrix.et-ja.tsv 57643 +WikiMatrix.et-ko.tsv 29213 +WikiMatrix.et-lt.tsv 35847 +WikiMatrix.et-mk.tsv 32911 +WikiMatrix.et-ml.tsv 20233 +WikiMatrix.et-mr.tsv 21549 +WikiMatrix.et-nl.tsv 72505 +WikiMatrix.et-no.tsv 49810 +WikiMatrix.et-pl.tsv 73151 +WikiMatrix.et-pt.tsv 76955 +WikiMatrix.et-ro.tsv 48427 +WikiMatrix.et-ru.tsv 96345 +WikiMatrix.et-sh.tsv 27195 +WikiMatrix.et-si.tsv 19538 +WikiMatrix.et-sk.tsv 34194 +WikiMatrix.et-sl.tsv 35300 +WikiMatrix.et-sq.tsv 18948 +WikiMatrix.et-sr.tsv 34016 +WikiMatrix.et-sv.tsv 58124 +WikiMatrix.et-ta.tsv 16587 +WikiMatrix.et-te.tsv 16967 +WikiMatrix.et-tl.tsv 15617 +WikiMatrix.et-tr.tsv 43264 +WikiMatrix.et-uk.tsv 56089 +WikiMatrix.et-vi.tsv 40281 +WikiMatrix.et-zh.tsv 44047 +WikiMatrix.eu-fa.tsv 14476 +WikiMatrix.eu-fi.tsv 33576 +WikiMatrix.eu-fr.tsv 65731 +WikiMatrix.eu-gl.tsv 43100 +WikiMatrix.eu-he.tsv 25498 +WikiMatrix.eu-hi.tsv 13049 +WikiMatrix.eu-hr.tsv 21394 +WikiMatrix.eu-hu.tsv 35098 +WikiMatrix.eu-id.tsv 27036 +WikiMatrix.eu-is.tsv 10055 +WikiMatrix.eu-it.tsv 54958 +WikiMatrix.eu-ja.tsv 33986 +WikiMatrix.eu-ko.tsv 18156 +WikiMatrix.eu-lt.tsv 19463 +WikiMatrix.eu-mk.tsv 19208 +WikiMatrix.eu-ml.tsv 11113 +WikiMatrix.eu-mr.tsv 10301 +WikiMatrix.eu-nl.tsv 44131 +WikiMatrix.eu-no.tsv 29644 +WikiMatrix.eu-pl.tsv 43382 +WikiMatrix.eu-pt.tsv 58821 +WikiMatrix.eu-ro.tsv 30397 +WikiMatrix.eu-ru.tsv 47206 +WikiMatrix.eu-sh.tsv 19346 +WikiMatrix.eu-sk.tsv 20316 +WikiMatrix.eu-sl.tsv 20626 +WikiMatrix.eu-sq.tsv 12941 +WikiMatrix.eu-sr.tsv 21433 +WikiMatrix.eu-sv.tsv 38206 +WikiMatrix.eu-ta.tsv 13885 +WikiMatrix.eu-te.tsv 11444 +WikiMatrix.eu-tr.tsv 29185 +WikiMatrix.eu-uk.tsv 30006 +WikiMatrix.eu-vi.tsv 25722 +WikiMatrix.eu-zh.tsv 23990 +WikiMatrix.fa-fi.tsv 34069 +WikiMatrix.fa-fr.tsv 71278 +WikiMatrix.fa-gl.tsv 25353 +WikiMatrix.fa-he.tsv 36955 +WikiMatrix.fa-hi.tsv 20557 +WikiMatrix.fa-hr.tsv 24987 +WikiMatrix.fa-hu.tsv 39139 +WikiMatrix.fa-id.tsv 46991 +WikiMatrix.fa-it.tsv 64468 +WikiMatrix.fa-ja.tsv 46942 +WikiMatrix.fa-ko.tsv 26572 +WikiMatrix.fa-lt.tsv 20032 +WikiMatrix.fa-mk.tsv 27555 +WikiMatrix.fa-ml.tsv 11083 +WikiMatrix.fa-mr.tsv 10684 +WikiMatrix.fa-nl.tsv 49211 +WikiMatrix.fa-no.tsv 32827 +WikiMatrix.fa-pl.tsv 50792 +WikiMatrix.fa-pt.tsv 77606 +WikiMatrix.fa-ro.tsv 40515 +WikiMatrix.fa-ru.tsv 72954 +WikiMatrix.fa-sh.tsv 21729 +WikiMatrix.fa-sk.tsv 21717 +WikiMatrix.fa-sl.tsv 24549 +WikiMatrix.fa-sq.tsv 17644 +WikiMatrix.fa-sr.tsv 30075 +WikiMatrix.fa-sv.tsv 42447 +WikiMatrix.fa-ta.tsv 21879 +WikiMatrix.fa-te.tsv 12711 +WikiMatrix.fa-tr.tsv 42681 +WikiMatrix.fa-uk.tsv 41735 +WikiMatrix.fa-vi.tsv 38848 +WikiMatrix.fa-zh.tsv 42042 +WikiMatrix.fi-fr.tsv 156225 +WikiMatrix.fi-gl.tsv 47377 +WikiMatrix.fi-he.tsv 64406 +WikiMatrix.fi-hi.tsv 28707 +WikiMatrix.fi-hr.tsv 48618 +WikiMatrix.fi-hu.tsv 90196 +WikiMatrix.fi-id.tsv 63983 +WikiMatrix.fi-is.tsv 22671 +WikiMatrix.fi-it.tsv 131193 +WikiMatrix.fi-ja.tsv 87559 +WikiMatrix.fi-ko.tsv 43152 +WikiMatrix.fi-lt.tsv 47157 +WikiMatrix.fi-mk.tsv 40253 +WikiMatrix.fi-ml.tsv 29127 +WikiMatrix.fi-mr.tsv 30489 +WikiMatrix.fi-nds.tsv 12120 +WikiMatrix.fi-ne.tsv 10944 +WikiMatrix.fi-nl.tsv 126003 +WikiMatrix.fi-no.tsv 86413 +WikiMatrix.fi-oc.tsv 10219 +WikiMatrix.fi-pl.tsv 119130 +WikiMatrix.fi-pt.tsv 131186 +WikiMatrix.fi-ro.tsv 69926 +WikiMatrix.fi-ru.tsv 139383 +WikiMatrix.fi-sh.tsv 39988 +WikiMatrix.fi-si.tsv 27125 +WikiMatrix.fi-sk.tsv 50645 +WikiMatrix.fi-sl.tsv 46789 +WikiMatrix.fi-sq.tsv 25032 +WikiMatrix.fi-sr.tsv 46945 +WikiMatrix.fi-sv.tsv 126098 +WikiMatrix.fi-sw.tsv 12603 +WikiMatrix.fi-ta.tsv 23818 +WikiMatrix.fi-te.tsv 24903 +WikiMatrix.fi-tl.tsv 21521 +WikiMatrix.fi-tr.tsv 72100 +WikiMatrix.fi-tt.tsv 10236 +WikiMatrix.fi-uk.tsv 76304 +WikiMatrix.fi-vi.tsv 60265 +WikiMatrix.fi-zh.tsv 64244 +WikiMatrix.fo-fr.tsv 18125 +WikiMatrix.fo-it.tsv 15116 +WikiMatrix.fo-nl.tsv 11341 +WikiMatrix.fo-pl.tsv 11846 +WikiMatrix.fo-pt.tsv 17485 +WikiMatrix.fo-ru.tsv 13640 +WikiMatrix.fo-sv.tsv 12903 +WikiMatrix.fr-fy.tsv 18384 +WikiMatrix.fr-gl.tsv 154872 +WikiMatrix.fr-gom.tsv 13233 +WikiMatrix.fr-he.tsv 136974 +WikiMatrix.fr-hi.tsv 60717 +WikiMatrix.fr-hr.tsv 85047 +WikiMatrix.fr-hu.tsv 164733 +WikiMatrix.fr-hy.tsv 12458 +WikiMatrix.fr-id.tsv 161857 +WikiMatrix.fr-is.tsv 38273 +WikiMatrix.fr-it.tsv 744432 +WikiMatrix.fr-ja.tsv 214852 +WikiMatrix.fr-jv.tsv 10933 +WikiMatrix.fr-ka.tsv 17291 +WikiMatrix.fr-kk.tsv 24401 +WikiMatrix.fr-ko.tsv 89109 +WikiMatrix.fr-la.tsv 18936 +WikiMatrix.fr-lb.tsv 18459 +WikiMatrix.fr-lt.tsv 71060 +WikiMatrix.fr-mg.tsv 12043 +WikiMatrix.fr-mk.tsv 83969 +WikiMatrix.fr-ml.tsv 62719 +WikiMatrix.fr-mr.tsv 83646 +WikiMatrix.fr-nds.tsv 25658 +WikiMatrix.fr-ne.tsv 25868 +WikiMatrix.fr-nl.tsv 331777 +WikiMatrix.fr-no.tsv 166978 +WikiMatrix.fr-oc.tsv 124226 +WikiMatrix.fr-pl.tsv 255763 +WikiMatrix.fr-pt.tsv 558861 +WikiMatrix.fr-ro.tsv 206443 +WikiMatrix.fr-ru.tsv 410005 +WikiMatrix.fr-sh.tsv 72887 +WikiMatrix.fr-si.tsv 74448 +WikiMatrix.fr-sk.tsv 83657 +WikiMatrix.fr-sl.tsv 86073 +WikiMatrix.fr-sq.tsv 48654 +WikiMatrix.fr-sr.tsv 92133 +WikiMatrix.fr-sv.tsv 186370 +WikiMatrix.fr-sw.tsv 19908 +WikiMatrix.fr-ta.tsv 56336 +WikiMatrix.fr-te.tsv 65809 +WikiMatrix.fr-tl.tsv 42182 +WikiMatrix.fr-tr.tsv 130472 +WikiMatrix.fr-tt.tsv 26231 +WikiMatrix.fr-uk.tsv 170063 +WikiMatrix.fr-vi.tsv 165937 +WikiMatrix.fr-wuu.tsv 11999 +WikiMatrix.fr-zh.tsv 157013 +WikiMatrix.fy-it.tsv 17275 +WikiMatrix.fy-nl.tsv 38648 +WikiMatrix.fy-pl.tsv 12437 +WikiMatrix.fy-pt.tsv 18487 +WikiMatrix.fy-ru.tsv 14073 +WikiMatrix.fy-sv.tsv 13136 +WikiMatrix.gl-he.tsv 41858 +WikiMatrix.gl-hi.tsv 21454 +WikiMatrix.gl-hr.tsv 33940 +WikiMatrix.gl-hu.tsv 50347 +WikiMatrix.gl-id.tsv 56200 +WikiMatrix.gl-is.tsv 14870 +WikiMatrix.gl-it.tsv 120462 +WikiMatrix.gl-ja.tsv 50922 +WikiMatrix.gl-ko.tsv 28478 +WikiMatrix.gl-lt.tsv 27669 +WikiMatrix.gl-mk.tsv 35727 +WikiMatrix.gl-ml.tsv 29945 +WikiMatrix.gl-mr.tsv 39026 +WikiMatrix.gl-nds.tsv 10043 +WikiMatrix.gl-ne.tsv 11932 +WikiMatrix.gl-nl.tsv 66259 +WikiMatrix.gl-no.tsv 52272 +WikiMatrix.gl-oc.tsv 17008 +WikiMatrix.gl-pl.tsv 65374 +WikiMatrix.gl-pt.tsv 227507 +WikiMatrix.gl-ro.tsv 56079 +WikiMatrix.gl-ru.tsv 84460 +WikiMatrix.gl-sh.tsv 30941 +WikiMatrix.gl-si.tsv 36721 +WikiMatrix.gl-sk.tsv 29118 +WikiMatrix.gl-sl.tsv 33881 +WikiMatrix.gl-sq.tsv 20614 +WikiMatrix.gl-sr.tsv 39519 +WikiMatrix.gl-sv.tsv 54302 +WikiMatrix.gl-ta.tsv 15445 +WikiMatrix.gl-te.tsv 17166 +WikiMatrix.gl-tl.tsv 22377 +WikiMatrix.gl-tr.tsv 43313 +WikiMatrix.gl-tt.tsv 12039 +WikiMatrix.gl-uk.tsv 51273 +WikiMatrix.gl-vi.tsv 58599 +WikiMatrix.gl-zh.tsv 46609 +WikiMatrix.gom-it.tsv 13099 +WikiMatrix.gom-pt.tsv 11983 +WikiMatrix.gom-ru.tsv 10566 +WikiMatrix.he-hi.tsv 28427 +WikiMatrix.he-hr.tsv 41487 +WikiMatrix.he-hu.tsv 65954 +WikiMatrix.he-id.tsv 63296 +WikiMatrix.he-is.tsv 17590 +WikiMatrix.he-it.tsv 121221 +WikiMatrix.he-ja.tsv 82041 +WikiMatrix.he-ko.tsv 43724 +WikiMatrix.he-lt.tsv 35179 +WikiMatrix.he-mk.tsv 42893 +WikiMatrix.he-ml.tsv 26296 +WikiMatrix.he-mr.tsv 25941 +WikiMatrix.he-nl.tsv 86933 +WikiMatrix.he-no.tsv 64090 +WikiMatrix.he-pl.tsv 84210 +WikiMatrix.he-pt.tsv 133567 +WikiMatrix.he-ro.tsv 67831 +WikiMatrix.he-ru.tsv 131378 +WikiMatrix.he-sh.tsv 35352 +WikiMatrix.he-si.tsv 21382 +WikiMatrix.he-sk.tsv 36947 +WikiMatrix.he-sl.tsv 38755 +WikiMatrix.he-sq.tsv 23046 +WikiMatrix.he-sr.tsv 45889 +WikiMatrix.he-sv.tsv 67852 +WikiMatrix.he-sw.tsv 10339 +WikiMatrix.he-ta.tsv 21839 +WikiMatrix.he-te.tsv 25488 +WikiMatrix.he-tl.tsv 13968 +WikiMatrix.he-tr.tsv 54841 +WikiMatrix.he-uk.tsv 73310 +WikiMatrix.he-vi.tsv 66128 +WikiMatrix.he-zh.tsv 62796 +WikiMatrix.hi-hr.tsv 21019 +WikiMatrix.hi-hu.tsv 33900 +WikiMatrix.hi-id.tsv 31354 +WikiMatrix.hi-it.tsv 56025 +WikiMatrix.hi-ja.tsv 35864 +WikiMatrix.hi-ko.tsv 18367 +WikiMatrix.hi-lt.tsv 16614 +WikiMatrix.hi-mk.tsv 24869 +WikiMatrix.hi-mr.tsv 11686 +WikiMatrix.hi-ne.tsv 12315 +WikiMatrix.hi-nl.tsv 40620 +WikiMatrix.hi-no.tsv 27952 +WikiMatrix.hi-pl.tsv 44014 +WikiMatrix.hi-pt.tsv 63743 +WikiMatrix.hi-ro.tsv 35158 +WikiMatrix.hi-ru.tsv 56751 +WikiMatrix.hi-sh.tsv 17960 +WikiMatrix.hi-sk.tsv 18987 +WikiMatrix.hi-sl.tsv 21600 +WikiMatrix.hi-sq.tsv 14770 +WikiMatrix.hi-sr.tsv 22522 +WikiMatrix.hi-sv.tsv 40738 +WikiMatrix.hi-ta.tsv 13224 +WikiMatrix.hi-te.tsv 18147 +WikiMatrix.hi-tr.tsv 29786 +WikiMatrix.hi-uk.tsv 33725 +WikiMatrix.hi-vi.tsv 26293 +WikiMatrix.hi-zh.tsv 30167 +WikiMatrix.hr-hu.tsv 58438 +WikiMatrix.hr-id.tsv 47104 +WikiMatrix.hr-is.tsv 14241 +WikiMatrix.hr-it.tsv 80194 +WikiMatrix.hr-ja.tsv 48151 +WikiMatrix.hr-ko.tsv 27662 +WikiMatrix.hr-lt.tsv 31432 +WikiMatrix.hr-mk.tsv 52353 +WikiMatrix.hr-ml.tsv 24061 +WikiMatrix.hr-mr.tsv 24490 +WikiMatrix.hr-ne.tsv 10741 +WikiMatrix.hr-nl.tsv 65007 +WikiMatrix.hr-no.tsv 48269 +WikiMatrix.hr-pl.tsv 71529 +WikiMatrix.hr-pt.tsv 85373 +WikiMatrix.hr-ro.tsv 51221 +WikiMatrix.hr-ru.tsv 85888 +WikiMatrix.hr-sh.tsv 666685 +WikiMatrix.hr-si.tsv 19842 +WikiMatrix.hr-sk.tsv 35635 +WikiMatrix.hr-sl.tsv 53346 +WikiMatrix.hr-sq.tsv 21471 +WikiMatrix.hr-sr.tsv 205175 +WikiMatrix.hr-sv.tsv 56793 +WikiMatrix.hr-ta.tsv 16692 +WikiMatrix.hr-te.tsv 16411 +WikiMatrix.hr-tl.tsv 17463 +WikiMatrix.hr-tr.tsv 42175 +WikiMatrix.hr-uk.tsv 55749 +WikiMatrix.hr-vi.tsv 46750 +WikiMatrix.hr-zh.tsv 42053 +WikiMatrix.hu-id.tsv 70813 +WikiMatrix.hu-is.tsv 20377 +WikiMatrix.hu-it.tsv 146012 +WikiMatrix.hu-ja.tsv 99686 +WikiMatrix.hu-kk.tsv 11558 +WikiMatrix.hu-ko.tsv 49720 +WikiMatrix.hu-lt.tsv 48514 +WikiMatrix.hu-mk.tsv 47880 +WikiMatrix.hu-ml.tsv 27146 +WikiMatrix.hu-mr.tsv 28805 +WikiMatrix.hu-nds.tsv 12598 +WikiMatrix.hu-ne.tsv 10988 +WikiMatrix.hu-nl.tsv 121366 +WikiMatrix.hu-no.tsv 75452 +WikiMatrix.hu-oc.tsv 10104 +WikiMatrix.hu-pl.tsv 126850 +WikiMatrix.hu-pt.tsv 148377 +WikiMatrix.hu-ro.tsv 87958 +WikiMatrix.hu-ru.tsv 149514 +WikiMatrix.hu-sh.tsv 46865 +WikiMatrix.hu-si.tsv 26089 +WikiMatrix.hu-sk.tsv 56197 +WikiMatrix.hu-sl.tsv 55097 +WikiMatrix.hu-sq.tsv 27366 +WikiMatrix.hu-sr.tsv 53429 +WikiMatrix.hu-sv.tsv 88872 +WikiMatrix.hu-sw.tsv 13743 +WikiMatrix.hu-ta.tsv 29256 +WikiMatrix.hu-te.tsv 30768 +WikiMatrix.hu-tl.tsv 20518 +WikiMatrix.hu-tr.tsv 75715 +WikiMatrix.hu-uk.tsv 83066 +WikiMatrix.hu-vi.tsv 74351 +WikiMatrix.hu-zh.tsv 75242 +WikiMatrix.hy-it.tsv 12210 +WikiMatrix.hy-pt.tsv 11393 +WikiMatrix.hy-ru.tsv 12074 +WikiMatrix.id-is.tsv 16944 +WikiMatrix.id-it.tsv 146885 +WikiMatrix.id-ja.tsv 77397 +WikiMatrix.id-jv.tsv 19595 +WikiMatrix.id-ko.tsv 45970 +WikiMatrix.id-lt.tsv 33551 +WikiMatrix.id-mk.tsv 55991 +WikiMatrix.id-ml.tsv 25693 +WikiMatrix.id-mr.tsv 23390 +WikiMatrix.id-ne.tsv 10057 +WikiMatrix.id-nl.tsv 101197 +WikiMatrix.id-no.tsv 83641 +WikiMatrix.id-pl.tsv 93486 +WikiMatrix.id-pt.tsv 204470 +WikiMatrix.id-ro.tsv 94439 +WikiMatrix.id-ru.tsv 127410 +WikiMatrix.id-sh.tsv 43738 +WikiMatrix.id-si.tsv 23134 +WikiMatrix.id-sk.tsv 37954 +WikiMatrix.id-sl.tsv 46656 +WikiMatrix.id-sq.tsv 32624 +WikiMatrix.id-sr.tsv 56109 +WikiMatrix.id-sv.tsv 79193 +WikiMatrix.id-sw.tsv 13829 +WikiMatrix.id-ta.tsv 24647 +WikiMatrix.id-te.tsv 19049 +WikiMatrix.id-tl.tsv 21284 +WikiMatrix.id-tr.tsv 79176 +WikiMatrix.id-tt.tsv 11627 +WikiMatrix.id-uk.tsv 73379 +WikiMatrix.id-vi.tsv 146746 +WikiMatrix.id-zh.tsv 83566 +WikiMatrix.is-it.tsv 31787 +WikiMatrix.is-ja.tsv 18848 +WikiMatrix.is-lt.tsv 12041 +WikiMatrix.is-mk.tsv 12532 +WikiMatrix.is-nl.tsv 27334 +WikiMatrix.is-no.tsv 22321 +WikiMatrix.is-pl.tsv 27453 +WikiMatrix.is-pt.tsv 35263 +WikiMatrix.is-ro.tsv 20255 +WikiMatrix.is-ru.tsv 30010 +WikiMatrix.is-sh.tsv 13271 +WikiMatrix.is-sk.tsv 13204 +WikiMatrix.is-sl.tsv 13405 +WikiMatrix.is-sr.tsv 13764 +WikiMatrix.is-sv.tsv 28017 +WikiMatrix.is-tr.tsv 16153 +WikiMatrix.is-uk.tsv 18889 +WikiMatrix.is-vi.tsv 16523 +WikiMatrix.is-zh.tsv 14873 +WikiMatrix.it-ja.tsv 179031 +WikiMatrix.it-jv.tsv 11246 +WikiMatrix.it-ka.tsv 16256 +WikiMatrix.it-kk.tsv 24825 +WikiMatrix.it-ko.tsv 83911 +WikiMatrix.it-la.tsv 17036 +WikiMatrix.it-lb.tsv 15844 +WikiMatrix.it-lmo.tsv 11595 +WikiMatrix.it-lt.tsv 62439 +WikiMatrix.it-mk.tsv 73015 +WikiMatrix.it-ml.tsv 58237 +WikiMatrix.it-mr.tsv 78773 +WikiMatrix.it-nds.tsv 22202 +WikiMatrix.it-ne.tsv 24633 +WikiMatrix.it-nl.tsv 240569 +WikiMatrix.it-no.tsv 150403 +WikiMatrix.it-oc.tsv 20093 +WikiMatrix.it-pl.tsv 219293 +WikiMatrix.it-pt.tsv 480108 +WikiMatrix.it-ro.tsv 161759 +WikiMatrix.it-ru.tsv 303974 +WikiMatrix.it-scn.tsv 11231 +WikiMatrix.it-sh.tsv 67153 +WikiMatrix.it-si.tsv 68652 +WikiMatrix.it-sk.tsv 72794 +WikiMatrix.it-sl.tsv 81545 +WikiMatrix.it-sq.tsv 48707 +WikiMatrix.it-sr.tsv 83320 +WikiMatrix.it-sv.tsv 153800 +WikiMatrix.it-sw.tsv 19586 +WikiMatrix.it-ta.tsv 44891 +WikiMatrix.it-te.tsv 58221 +WikiMatrix.it-tl.tsv 41245 +WikiMatrix.it-tr.tsv 112630 +WikiMatrix.it-tt.tsv 23566 +WikiMatrix.it-uk.tsv 144863 +WikiMatrix.it-vi.tsv 143644 +WikiMatrix.it-wuu.tsv 10484 +WikiMatrix.it-zh.tsv 137288 +WikiMatrix.ja-kk.tsv 14270 +WikiMatrix.ja-ko.tsv 222118 +WikiMatrix.ja-lt.tsv 47361 +WikiMatrix.ja-mk.tsv 48010 +WikiMatrix.ja-ml.tsv 21616 +WikiMatrix.ja-mr.tsv 23173 +WikiMatrix.ja-nds.tsv 11228 +WikiMatrix.ja-nl.tsv 123955 +WikiMatrix.ja-no.tsv 81283 +WikiMatrix.ja-pl.tsv 128372 +WikiMatrix.ja-pt.tsv 175188 +WikiMatrix.ja-ro.tsv 79395 +WikiMatrix.ja-ru.tsv 196556 +WikiMatrix.ja-sh.tsv 40636 +WikiMatrix.ja-si.tsv 19798 +WikiMatrix.ja-sk.tsv 48948 +WikiMatrix.ja-sl.tsv 50219 +WikiMatrix.ja-sq.tsv 28281 +WikiMatrix.ja-sr.tsv 51763 +WikiMatrix.ja-sv.tsv 96872 +WikiMatrix.ja-sw.tsv 12391 +WikiMatrix.ja-ta.tsv 37201 +WikiMatrix.ja-te.tsv 31809 +WikiMatrix.ja-tl.tsv 12366 +WikiMatrix.ja-tr.tsv 84255 +WikiMatrix.ja-tt.tsv 12937 +WikiMatrix.ja-uk.tsv 92317 +WikiMatrix.ja-vi.tsv 75798 +WikiMatrix.ja-zh.tsv 267409 +WikiMatrix.jv-pt.tsv 11226 +WikiMatrix.ka-nl.tsv 12120 +WikiMatrix.ka-pl.tsv 11605 +WikiMatrix.ka-pt.tsv 14003 +WikiMatrix.ka-ru.tsv 13330 +WikiMatrix.ka-sv.tsv 12345 +WikiMatrix.kk-nl.tsv 18071 +WikiMatrix.kk-no.tsv 11301 +WikiMatrix.kk-pl.tsv 17893 +WikiMatrix.kk-pt.tsv 22150 +WikiMatrix.kk-ro.tsv 12467 +WikiMatrix.kk-ru.tsv 32807 +WikiMatrix.kk-sv.tsv 16574 +WikiMatrix.kk-tr.tsv 10081 +WikiMatrix.kk-uk.tsv 14581 +WikiMatrix.ko-lt.tsv 23324 +WikiMatrix.ko-mk.tsv 26857 +WikiMatrix.ko-ml.tsv 10118 +WikiMatrix.ko-mr.tsv 10568 +WikiMatrix.ko-nl.tsv 56609 +WikiMatrix.ko-no.tsv 41716 +WikiMatrix.ko-pl.tsv 63894 +WikiMatrix.ko-pt.tsv 93224 +WikiMatrix.ko-ro.tsv 47054 +WikiMatrix.ko-ru.tsv 89951 +WikiMatrix.ko-sh.tsv 23213 +WikiMatrix.ko-sk.tsv 25644 +WikiMatrix.ko-sl.tsv 26403 +WikiMatrix.ko-sq.tsv 17929 +WikiMatrix.ko-sr.tsv 29639 +WikiMatrix.ko-sv.tsv 51718 +WikiMatrix.ko-ta.tsv 17059 +WikiMatrix.ko-te.tsv 13610 +WikiMatrix.ko-tr.tsv 47497 +WikiMatrix.ko-uk.tsv 48954 +WikiMatrix.ko-vi.tsv 49283 +WikiMatrix.ko-zh.tsv 57932 +WikiMatrix.la-nl.tsv 12202 +WikiMatrix.la-pl.tsv 13391 +WikiMatrix.la-pt.tsv 18561 +WikiMatrix.la-ro.tsv 10267 +WikiMatrix.la-ru.tsv 14815 +WikiMatrix.la-sv.tsv 13396 +WikiMatrix.lb-nl.tsv 11163 +WikiMatrix.lb-pl.tsv 11378 +WikiMatrix.lb-pt.tsv 16576 +WikiMatrix.lb-ru.tsv 11807 +WikiMatrix.lb-sv.tsv 12339 +WikiMatrix.lt-mk.tsv 28117 +WikiMatrix.lt-ml.tsv 16474 +WikiMatrix.lt-mr.tsv 16648 +WikiMatrix.lt-nl.tsv 57966 +WikiMatrix.lt-no.tsv 39216 +WikiMatrix.lt-pl.tsv 70315 +WikiMatrix.lt-pt.tsv 64976 +WikiMatrix.lt-ro.tsv 39152 +WikiMatrix.lt-ru.tsv 107783 +WikiMatrix.lt-sh.tsv 25495 +WikiMatrix.lt-si.tsv 15384 +WikiMatrix.lt-sk.tsv 30843 +WikiMatrix.lt-sl.tsv 30859 +WikiMatrix.lt-sq.tsv 16358 +WikiMatrix.lt-sr.tsv 29967 +WikiMatrix.lt-sv.tsv 46008 +WikiMatrix.lt-ta.tsv 13005 +WikiMatrix.lt-te.tsv 11731 +WikiMatrix.lt-tl.tsv 12904 +WikiMatrix.lt-tr.tsv 36776 +WikiMatrix.lt-uk.tsv 57413 +WikiMatrix.lt-vi.tsv 33170 +WikiMatrix.lt-zh.tsv 35895 +WikiMatrix.mk-ml.tsv 21457 +WikiMatrix.mk-mr.tsv 22675 +WikiMatrix.mk-nl.tsv 53320 +WikiMatrix.mk-no.tsv 46342 +WikiMatrix.mk-pl.tsv 56928 +WikiMatrix.mk-pt.tsv 93291 +WikiMatrix.mk-ro.tsv 56342 +WikiMatrix.mk-ru.tsv 88000 +WikiMatrix.mk-sh.tsv 52825 +WikiMatrix.mk-si.tsv 19587 +WikiMatrix.mk-sk.tsv 29821 +WikiMatrix.mk-sl.tsv 39973 +WikiMatrix.mk-sq.tsv 25078 +WikiMatrix.mk-sr.tsv 106377 +WikiMatrix.mk-sv.tsv 48072 +WikiMatrix.mk-ta.tsv 14353 +WikiMatrix.mk-te.tsv 15254 +WikiMatrix.mk-tl.tsv 16689 +WikiMatrix.mk-tr.tsv 43430 +WikiMatrix.mk-uk.tsv 57515 +WikiMatrix.mk-vi.tsv 57549 +WikiMatrix.mk-zh.tsv 45671 +WikiMatrix.ml-nl.tsv 41804 +WikiMatrix.ml-no.tsv 32249 +WikiMatrix.ml-pl.tsv 41517 +WikiMatrix.ml-pt.tsv 58378 +WikiMatrix.ml-ro.tsv 35368 +WikiMatrix.ml-ru.tsv 46205 +WikiMatrix.ml-sh.tsv 21975 +WikiMatrix.ml-sk.tsv 22420 +WikiMatrix.ml-sl.tsv 21686 +WikiMatrix.ml-sq.tsv 13707 +WikiMatrix.ml-sr.tsv 20165 +WikiMatrix.ml-sv.tsv 44814 +WikiMatrix.ml-tr.tsv 16597 +WikiMatrix.ml-uk.tsv 26706 +WikiMatrix.ml-vi.tsv 15688 +WikiMatrix.ml-zh.tsv 17523 +WikiMatrix.mr-nl.tsv 46456 +WikiMatrix.mr-no.tsv 35123 +WikiMatrix.mr-pl.tsv 47091 +WikiMatrix.mr-pt.tsv 86686 +WikiMatrix.mr-ro.tsv 47259 +WikiMatrix.mr-ru.tsv 50400 +WikiMatrix.mr-sh.tsv 22428 +WikiMatrix.mr-sk.tsv 25169 +WikiMatrix.mr-sl.tsv 25021 +WikiMatrix.mr-sq.tsv 13098 +WikiMatrix.mr-sr.tsv 19078 +WikiMatrix.mr-sv.tsv 56338 +WikiMatrix.mr-tr.tsv 17343 +WikiMatrix.mr-uk.tsv 26221 +WikiMatrix.mr-vi.tsv 14772 +WikiMatrix.mr-zh.tsv 17442 +WikiMatrix.mwl-pt.tsv 34539 +WikiMatrix.nds_nl-nl.tsv 15316 +WikiMatrix.nds-nl.tsv 19081 +WikiMatrix.nds-no.tsv 12797 +WikiMatrix.nds-pl.tsv 18216 +WikiMatrix.nds-pt.tsv 22939 +WikiMatrix.nds-ro.tsv 13008 +WikiMatrix.nds-ru.tsv 20062 +WikiMatrix.nds-sv.tsv 18542 +WikiMatrix.nds-uk.tsv 11947 +WikiMatrix.ne-nl.tsv 17856 +WikiMatrix.ne-no.tsv 13954 +WikiMatrix.ne-pl.tsv 17302 +WikiMatrix.ne-pt.tsv 21399 +WikiMatrix.ne-ro.tsv 14108 +WikiMatrix.ne-ru.tsv 19225 +WikiMatrix.ne-sh.tsv 10471 +WikiMatrix.ne-sk.tsv 10400 +WikiMatrix.ne-sl.tsv 10418 +WikiMatrix.ne-sv.tsv 17951 +WikiMatrix.ne-uk.tsv 11500 +WikiMatrix.nl-no.tsv 133308 +WikiMatrix.nl-oc.tsv 13488 +WikiMatrix.nl-pl.tsv 177117 +WikiMatrix.nl-pt.tsv 218472 +WikiMatrix.nl-ro.tsv 96776 +WikiMatrix.nl-ru.tsv 199345 +WikiMatrix.nl-sh.tsv 53430 +WikiMatrix.nl-si.tsv 42365 +WikiMatrix.nl-sk.tsv 66565 +WikiMatrix.nl-sl.tsv 64687 +WikiMatrix.nl-sq.tsv 34902 +WikiMatrix.nl-sr.tsv 61780 +WikiMatrix.nl-sv.tsv 151735 +WikiMatrix.nl-sw.tsv 16582 +WikiMatrix.nl-ta.tsv 37639 +WikiMatrix.nl-te.tsv 35569 +WikiMatrix.nl-tl.tsv 29776 +WikiMatrix.nl-tr.tsv 90968 +WikiMatrix.nl-tt.tsv 18420 +WikiMatrix.nl-uk.tsv 104378 +WikiMatrix.nl-vi.tsv 84022 +WikiMatrix.nl-zh.tsv 88818 +WikiMatrix.no-pl.tsv 103674 +WikiMatrix.no-pt.tsv 161215 +WikiMatrix.no-ro.tsv 74943 +WikiMatrix.no-ru.tsv 121486 +WikiMatrix.no-sh.tsv 42996 +WikiMatrix.no-si.tsv 28739 +WikiMatrix.no-sk.tsv 43781 +WikiMatrix.no-sl.tsv 51732 +WikiMatrix.no-sq.tsv 26679 +WikiMatrix.no-sr.tsv 47744 +WikiMatrix.no-sv.tsv 270882 +WikiMatrix.no-sw.tsv 12710 +WikiMatrix.no-ta.tsv 24589 +WikiMatrix.no-te.tsv 23501 +WikiMatrix.no-tl.tsv 24491 +WikiMatrix.no-tr.tsv 61772 +WikiMatrix.no-tt.tsv 13155 +WikiMatrix.no-uk.tsv 69895 +WikiMatrix.no-vi.tsv 79750 +WikiMatrix.no-zh.tsv 63206 +WikiMatrix.oc-pl.tsv 13703 +WikiMatrix.oc-pt.tsv 24424 +WikiMatrix.oc-ro.tsv 11840 +WikiMatrix.oc-ru.tsv 14902 +WikiMatrix.oc-sv.tsv 12596 +WikiMatrix.pl-pt.tsv 200506 +WikiMatrix.pl-ro.tsv 97037 +WikiMatrix.pl-ru.tsv 285946 +WikiMatrix.pl-sh.tsv 56752 +WikiMatrix.pl-si.tsv 40941 +WikiMatrix.pl-sk.tsv 81071 +WikiMatrix.pl-sl.tsv 68333 +WikiMatrix.pl-sq.tsv 35947 +WikiMatrix.pl-sr.tsv 69550 +WikiMatrix.pl-sv.tsv 121793 +WikiMatrix.pl-sw.tsv 16928 +WikiMatrix.pl-ta.tsv 39892 +WikiMatrix.pl-te.tsv 42060 +WikiMatrix.pl-tl.tsv 28804 +WikiMatrix.pl-tr.tsv 92945 +WikiMatrix.pl-tt.tsv 16386 +WikiMatrix.pl-uk.tsv 172368 +WikiMatrix.pl-vi.tsv 84550 +WikiMatrix.pl-zh.tsv 92708 +WikiMatrix.pt-ro.tsv 177269 +WikiMatrix.pt-ru.tsv 312869 +WikiMatrix.pt-sh.tsv 74080 +WikiMatrix.pt-si.tsv 76114 +WikiMatrix.pt-sk.tsv 71181 +WikiMatrix.pt-sl.tsv 85307 +WikiMatrix.pt-sq.tsv 47867 +WikiMatrix.pt-sr.tsv 101375 +WikiMatrix.pt-sv.tsv 155481 +WikiMatrix.pt-sw.tsv 20692 +WikiMatrix.pt-ta.tsv 42380 +WikiMatrix.pt-te.tsv 54636 +WikiMatrix.pt-tl.tsv 45927 +WikiMatrix.pt-tr.tsv 140579 +WikiMatrix.pt-tt.tsv 23174 +WikiMatrix.pt-uk.tsv 156140 +WikiMatrix.pt-vi.tsv 213119 +WikiMatrix.pt-wuu.tsv 11129 +WikiMatrix.pt-zh.tsv 165205 +WikiMatrix.ro-ru.tsv 136407 +WikiMatrix.ro-sh.tsv 44686 +WikiMatrix.ro-si.tsv 43266 +WikiMatrix.ro-sk.tsv 42561 +WikiMatrix.ro-sl.tsv 49716 +WikiMatrix.ro-sq.tsv 30941 +WikiMatrix.ro-sr.tsv 58682 +WikiMatrix.ro-sv.tsv 75782 +WikiMatrix.ro-sw.tsv 15025 +WikiMatrix.ro-ta.tsv 23098 +WikiMatrix.ro-te.tsv 27477 +WikiMatrix.ro-tl.tsv 29061 +WikiMatrix.ro-tr.tsv 72180 +WikiMatrix.ro-tt.tsv 13876 +WikiMatrix.ro-uk.tsv 82153 +WikiMatrix.ro-vi.tsv 96125 +WikiMatrix.ro-zh.tsv 74790 +WikiMatrix.ru-sh.tsv 70262 +WikiMatrix.ru-si.tsv 42594 +WikiMatrix.ru-sk.tsv 85656 +WikiMatrix.ru-sl.tsv 78858 +WikiMatrix.ru-sq.tsv 44661 +WikiMatrix.ru-sr.tsv 114775 +WikiMatrix.ru-sv.tsv 140222 +WikiMatrix.ru-sw.tsv 17943 +WikiMatrix.ru-ta.tsv 54465 +WikiMatrix.ru-te.tsv 55768 +WikiMatrix.ru-tg.tsv 10759 +WikiMatrix.ru-tl.tsv 29214 +WikiMatrix.ru-tr.tsv 119345 +WikiMatrix.ru-tt.tsv 25244 +WikiMatrix.ru-uk.tsv 2486905 +WikiMatrix.ru-vi.tsv 122026 +WikiMatrix.ru-wuu.tsv 10421 +WikiMatrix.ru-zh.tsv 148733 +WikiMatrix.sh-si.tsv 17999 +WikiMatrix.sh-sk.tsv 27941 +WikiMatrix.sh-sl.tsv 46667 +WikiMatrix.sh-sq.tsv 19045 +WikiMatrix.sh-sr.tsv 373728 +WikiMatrix.sh-sv.tsv 46389 +WikiMatrix.sh-ta.tsv 14229 +WikiMatrix.sh-te.tsv 13914 +WikiMatrix.sh-tl.tsv 17012 +WikiMatrix.sh-tr.tsv 35108 +WikiMatrix.sh-uk.tsv 45971 +WikiMatrix.sh-vi.tsv 42484 +WikiMatrix.sh-zh.tsv 36099 +WikiMatrix.si-sk.tsv 22131 +WikiMatrix.si-sl.tsv 22809 +WikiMatrix.si-sq.tsv 10145 +WikiMatrix.si-sr.tsv 15895 +WikiMatrix.si-sv.tsv 48372 +WikiMatrix.si-tr.tsv 15421 +WikiMatrix.si-uk.tsv 21209 +WikiMatrix.si-vi.tsv 14999 +WikiMatrix.si-zh.tsv 16002 +WikiMatrix.sk-sl.tsv 36507 +WikiMatrix.sk-sq.tsv 17211 +WikiMatrix.sk-sr.tsv 34375 +WikiMatrix.sk-sv.tsv 51536 +WikiMatrix.sk-ta.tsv 14594 +WikiMatrix.sk-te.tsv 15627 +WikiMatrix.sk-tl.tsv 16713 +WikiMatrix.sk-tr.tsv 37685 +WikiMatrix.sk-uk.tsv 51350 +WikiMatrix.sk-vi.tsv 38667 +WikiMatrix.sk-zh.tsv 38556 +WikiMatrix.sl-sq.tsv 19695 +WikiMatrix.sl-sr.tsv 47119 +WikiMatrix.sl-sv.tsv 50838 +WikiMatrix.sl-ta.tsv 15526 +WikiMatrix.sl-te.tsv 16081 +WikiMatrix.sl-tl.tsv 17840 +WikiMatrix.sl-tr.tsv 39624 +WikiMatrix.sl-uk.tsv 50320 +WikiMatrix.sl-vi.tsv 48297 +WikiMatrix.sl-zh.tsv 42036 +WikiMatrix.sq-sr.tsv 25103 +WikiMatrix.sq-sv.tsv 31183 +WikiMatrix.sq-ta.tsv 13707 +WikiMatrix.sq-te.tsv 10575 +WikiMatrix.sq-tl.tsv 10943 +WikiMatrix.sq-tr.tsv 27534 +WikiMatrix.sq-uk.tsv 29077 +WikiMatrix.sq-vi.tsv 30454 +WikiMatrix.sq-zh.tsv 24128 +WikiMatrix.sr-sv.tsv 51675 +WikiMatrix.sr-ta.tsv 19095 +WikiMatrix.sr-te.tsv 18178 +WikiMatrix.sr-tl.tsv 14064 +WikiMatrix.sr-tr.tsv 43382 +WikiMatrix.sr-uk.tsv 71932 +WikiMatrix.sr-vi.tsv 56213 +WikiMatrix.sr-zh.tsv 45291 +WikiMatrix.sv-sw.tsv 16864 +WikiMatrix.sv-ta.tsv 33629 +WikiMatrix.sv-te.tsv 39137 +WikiMatrix.sv-tl.tsv 35027 +WikiMatrix.sv-tr.tsv 72959 +WikiMatrix.sv-tt.tsv 17518 +WikiMatrix.sv-uk.tsv 82027 +WikiMatrix.sv-vi.tsv 74202 +WikiMatrix.sv-zh.tsv 73747 +WikiMatrix.sw-tr.tsv 12260 +WikiMatrix.sw-uk.tsv 12284 +WikiMatrix.sw-vi.tsv 10822 +WikiMatrix.sw-zh.tsv 11233 +WikiMatrix.ta-tr.tsv 29056 +WikiMatrix.ta-uk.tsv 30604 +WikiMatrix.ta-vi.tsv 19365 +WikiMatrix.ta-zh.tsv 27184 +WikiMatrix.te-tr.tsv 21596 +WikiMatrix.te-uk.tsv 30800 +WikiMatrix.te-vi.tsv 16788 +WikiMatrix.te-zh.tsv 20912 +WikiMatrix.tl-tr.tsv 12260 +WikiMatrix.tl-uk.tsv 16560 +WikiMatrix.tl-vi.tsv 17399 +WikiMatrix.tl-zh.tsv 10492 +WikiMatrix.tr-tt.tsv 10644 +WikiMatrix.tr-uk.tsv 67753 +WikiMatrix.tr-vi.tsv 77062 +WikiMatrix.tr-zh.tsv 69162 +WikiMatrix.tt-uk.tsv 11500 +WikiMatrix.tt-zh.tsv 10587 +WikiMatrix.uk-vi.tsv 73104 +WikiMatrix.uk-zh.tsv 72752 +WikiMatrix.vi-zh.tsv 89445 +WikiMatrix.wuu-zh.tsv 43747 diff --git a/laser/tasks/bucc/README.md b/laser/tasks/bucc/README.md new file mode 100644 index 0000000000000000000000000000000000000000..b119475a515a3dd970899d85235a3b845b87d8c1 --- /dev/null +++ b/laser/tasks/bucc/README.md @@ -0,0 +1,94 @@ +# LASER: application to bitext mining + +This codes shows how to use the multilingual sentence embeddings to mine +for parallel data in (huge) collections of monolingual data. + +The underlying idea is pretty simple: +* embed the sentences in the two languages into the joint sentence space +* calculate all pairwise distances between the sentences. + This is of complexity O(N\*M) and can be done very efficiently with + the FAISS library [2] +* all sentence pairs which have a distance below a threshold + are considered as parallel +* this approach can be further improved using a margin criterion [3] + +Here, we apply this idea to the data provided by the shared task of the BUCC +[Workshop on Building and Using Comparable Corpora](https://comparable.limsi.fr/bucc2018/bucc2018-task.html). + +The same approach can be scaled up to huge collections of monolingual texts +(several billions) using more advanced features of the FAISS toolkit. + +## Installation + +* Please first download the BUCC shared task data + [here](https://comparable.limsi.fr/bucc2017/cgi-bin/download-data-2018.cgi) + and install it the directory "downloaded" +* running the script +```bash +./bucc.sh +``` + +## Results + +Optimized on the F-scores on the training corpus. +These results differ slighty from those published in [4] due to the switch from PyTorch 0.4 to 1.0. + +| Languages | Threshold | precision | Recall | F-score | +|-----------|-----------|-----------|--------|---------| +| fr-en | 1.088131 | 91.52 | 93.32 | 92.41 | +| de-en | 1.092056 | 95.65 | 95.19 | 95.42 | +| ru-en | 1.093404 | 90.60 | 94.04 | 92.29 | +| zh-en | 1.085999 | 91.99 | 91.31 | 91.65 | + +Results on the official test set are scored by the organizers of the BUCC workshop. + + +Below, we compare our approach to the [official results of the 2018 edition +of the BUCC workshop](http://lrec-conf.org/workshops/lrec2018/W8/pdf/12_W8.pdf) [1]. +More details on our approach are provided in [2,3,4] + +| System | fr-en | de-en | ru-en | zh-en | +|----------------------|-------|-------|-------|-------| +| Azpeitia et al '17 | 79.5 | 83.7 | - | - | +| Azpeitia et al '18 | 81.5 | 85.5 | 81.3 | 77.5 | +|Bouamor and Sajjad '18| 76.0 | - | - | - | +| Chongman et al '18 | - | - | - | 56 | +| LASER [3] | 75.8 | 76.9 | - | - | +| LASER [4] | 93.1 | 96.2 | 92.3 | 92.7 | + +All numbers are F1-scores on the test set. + +## Bonus + +To show case the highly multilingual aspect of LASER's sentence embeddings, +we also mine for bitexts for language pairs which do not include English, e.g. +French-German, Russian-French or Chinese-Russian. +This is also performed by the script bucc.sh + +Below the number of extracted parallel sentences for each language pair. + +| src/trg | French | German | Russian | Chinese | +|---------|--------|--------|---------|---------| +| French | n/a | 2795 | 3327 | 387 | +| German | 2795 | n/a | 3661 | 466 | +| Russian | 3327 | 3661 | n/a | 664 | +| Chinese | 387 | 466 | 664 | n/a | + + +## References + +[1] Pierre Zweigenbaum, Serge Sharoff and Reinhard Rapp,` + [*Overview of the Third BUCC Shared Task: Spotting Parallel Sentences in Comparable Corpora*](http://lrec-conf.org/workshops/lrec2018/W8/pdf/12_W8.pdf), + LREC, 2018. + +[2] Holger Schwenk, + [*Filtering and Mining Parallel Data in a Joint Multilingual Space*](https://arxiv.org/abs/1805.09822), + ACL, July 2018 + +[3] Mikel Artetxe and Holger Schwenk, + [*Margin-based Parallel Corpus Mining with Multilingual Sentence Embeddings*](https://arxiv.org/abs/1811.01136) + arXiv, 3 Nov 2018. + +[3] Mikel Artetxe and Holger Schwenk, + [*Massively Multilingual Sentence Embeddings for Zero-Shot Cross-Lingual Transfer and Beyond*](https://arxiv.org/abs/1812.10464) + arXiv, 26 Dec 2018. diff --git a/laser/tasks/bucc/bucc.py b/laser/tasks/bucc/bucc.py new file mode 100644 index 0000000000000000000000000000000000000000..4e80b75c9c5b40eda07aa650579489410b2ab443 --- /dev/null +++ b/laser/tasks/bucc/bucc.py @@ -0,0 +1,151 @@ +#!/bin/bash +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# -------------------------------------------------------- +# +# Python tools for BUCC bitext mining + +import argparse + +############################################################################### +# +# Find te optimal threshold given gold alignments +# +############################################################################### + +def BuccOptimize(candidate2score, gold): + items = sorted(candidate2score.items(), key=lambda x: -x[1]) + ngold = len(gold) + nextract = ncorrect = 0 + threshold = 0 + best_f1 = 0 + for i in range(len(items)): + nextract += 1 + if '\t'.join(items[i][0]) in gold: + ncorrect += 1 + if ncorrect > 0: + precision = ncorrect / nextract + recall = ncorrect / ngold + f1 = 2 * precision * recall / (precision + recall) + if f1 > best_f1: + best_f1 = f1 + threshold = (items[i][1] + items[i + 1][1]) / 2 + return threshold + + +############################################################################### +# +# Main +# +############################################################################### + +parser = argparse.ArgumentParser(description='LASER: tools for BUCC bitext mining') +parser.add_argument('--encoding', default='utf-8', + help='character encoding for input/output') +parser.add_argument('--src-lang', required=True, + help='the source language id') +parser.add_argument('--trg-lang', required=True, + help='the target language id') +parser.add_argument('--bucc-texts', required=True, + help='Base name of the text files (language added)') +parser.add_argument('--bucc-ids', required=True, + help='Base name of the ID files (language added)') +parser.add_argument('--candidates', required=True, + help='File name of candidate alignments') +parser.add_argument('--gold', default=None, + help='File name of gold alignments') +parser.add_argument('--threshold', type=float, default=-1, + help='Threshold (used with --output)') +parser.add_argument('--output', default=None, + help='File name of output alignments which are below threshold') +parser.add_argument('--verbose', action='store_true', + help='Detailed output') +args = parser.parse_args() + +print('LASER: tools for BUCC bitext mining') + +assert (args.gold or args.threshold > 0) \ + and not (args.gold and args.threshold > 0), \ + 'Either "--gold" or "--threshold" must be specified' +if args.verbose: + print(' - reading sentences and IDs') + +src_sent2id, trg_sent2id = {}, {} +for lang, sent2id in (args.src_lang, src_sent2id), (args.trg_lang, trg_sent2id): + repeated = set() + with open(args.bucc_texts + '.' + lang, encoding=args.encoding, errors='surrogateescape') as f: + sentences = [line.strip() for line in f] + with open(args.bucc_ids + '.' + lang, encoding=args.encoding, errors='surrogateescape') as f: + ids = [line.strip() for line in f] + for id, sent in zip(ids, sentences): + if sent in sent2id: + repeated.add(sent) + else: + sent2id[sent] = id + for sent in repeated: + del sent2id[sent] + +if args.verbose: + print(' - reading candidates {}'.format(args.candidates)) +candidate2score = {} +# id2txt = {} +with open(args.candidates, encoding=args.encoding, errors='surrogateescape') as f: + for line in f: + score, src, trg = line.split('\t') + score = float(score) + src = src.strip() + trg = trg.strip() + if src in src_sent2id and trg in trg_sent2id: + src_id = src_sent2id[src] + trg_id = trg_sent2id[trg] + score = max(score, candidate2score.get((src_id, trg_id), score)) + candidate2score[(src_id, trg_id)] = score + # id2txt[src_id + '\t' + trg_id] = src + '\t' + trg + +def BuccExtract(cand2score, th, fname): + if fname: + of = open(fname, 'w', encoding=args.encoding) + bitexts = [] + for (src, trg), score in cand2score.items(): + if score >= th: + bitexts.append(src + '\t' + trg) + if fname: + of.write(src + '\t' + trg + '\n') + if fname: + of.close() + return bitexts + +if args.gold: + if args.verbose: + print(' - optimizing threshold on gold alignments {}'.format(args.gold)) + if args.output: + print(' - extracted bitext are written into {:s}'.format(args.output)) + gold = {line.strip() for line in open(args.gold)} + threshold = BuccOptimize(candidate2score, gold) + + bitexts = BuccExtract(candidate2score, threshold, args.output) + ncorrect = len(gold.intersection(bitexts)) + if ncorrect > 0: + precision = ncorrect / len(bitexts) + recall = ncorrect / len(gold) + f1 = 2*precision*recall / (precision + recall) + else: + precision = recall = f1 = 0 + + print(' - best threshold={:f}: precision={:.2f}, recall={:.2f}, F1={:.2f}' + .format(threshold, 100*precision, 100*recall, 100*f1)) + + +if args.threshold > 0: + if args.verbose: + print(' - extracting bitexts for threshold {:f} into {:s}'.format(args.threshold, args.output)) + BuccExtract(candidate2score, args.threshold, args.output) diff --git a/laser/tasks/bucc/bucc.sh b/laser/tasks/bucc/bucc.sh new file mode 100755 index 0000000000000000000000000000000000000000..73eb54e0d1b582a57cb0ba21529389fedf7aebb8 --- /dev/null +++ b/laser/tasks/bucc/bucc.sh @@ -0,0 +1,202 @@ +#!/bin/bash +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# -------------------------------------------------------- +# +# bash script to mine for bitexts in the BUCC corpus + + +if [ -z ${LASER+x} ] ; then + echo "Please set the environment variable 'LASER'" + exit +fi + +# general config +bucc="bucc2018" +data="." +xdir=${data}/downloaded # tar files as distrubuted by the BUCC evaluation +ddir=${data}/${bucc} # raw texts of BUCC +edir=${data}/embed # normalized texts and embeddings +langs=("fr" "de" "ru" "zh") +ltrg="en" # English is always the 2nd language + +# encoder +model_dir="${LASER}/models" +encoder="${model_dir}/bilstm.93langs.2018-12-26.pt" +bpe_codes="${model_dir}/93langs.fcodes" + + +################################################################### +# +# Extract files with labels and texts from the BUCC corpus +# +################################################################### + +GetData () { + fn1=$1; fn2=$2; lang=$3 + outf="${edir}/${bucc}.${lang}-${ltrg}.${fn2}" + for ll in ${ltrg} ${lang} ; do + inf="${ddir}/${fn1}.${ll}" + if [ ! -f ${outf}.txt.${ll} ] ; then + echo " - extract files ${outf} in ${ll}" + cat ${inf} | cut -f1 > ${outf}.id.${ll} + cat ${inf} | cut -f2 > ${outf}.txt.${ll} + fi + done +} + +ExtractBUCC () { + slang=$1 + tlang=${ltrg} + + pushd ${data} > /dev/null + if [ ! -d ${ddir}/${slang}-${tlang} ] ; then + for tf in ${xdir}/${bucc}-${slang}-${tlang}.*.tar.bz2 ; do + echo " - extract from tar `basename ${tf}`" + tar jxf $tf + done + fi + + GetData "${slang}-${tlang}/${slang}-${tlang}.sample" "dev" ${slang} + GetData "${slang}-${tlang}/${slang}-${tlang}.training" "train" ${slang} + GetData "${slang}-${tlang}/${slang}-${tlang}.test" "test" ${slang} + popd > /dev/null +} + + +################################################################### +# +# Tokenize and Embed +# +################################################################### + +Embed () { + ll=$2 + txt="$1.txt.${ll}" + enc="$1.enc.${ll}" + if [ ! -s ${enc} ] ; then + cat ${txt} | python3 ${LASER}/source/embed.py \ + --encoder ${encoder} \ + --token-lang ${ll} \ + --bpe-codes ${bpe_codes} \ + --output ${enc} \ + --verbose + fi +} + + +################################################################### +# +# Mine for bitexts +# +################################################################### + +Mine () { + bn=$1 + l1=$2 + l2=$3 + cand="${bn}.candidates.tsv" + if [ ! -s ${cand} ] ; then + python3 ${LASER}/source/mine_bitexts.py \ + ${bn}.txt.${l1} ${bn}.txt.${l2} \ + --src-lang ${l1} --trg-lang ${l2} \ + --src-embeddings ${bn}.enc.${l1} --trg-embeddings ${bn}.enc.${l2} \ + --unify --mode mine --retrieval max --margin ratio -k 4 \ + --output ${cand} \ + --verbose --gpu + fi +} + + +################################################################### +# +# Main loop +# +################################################################### + +echo -e "\nProcessing BUCC data in ${data}" + +# create output directories +for d in ${ddir} ${edir} ; do + mkdir -p ${d} +done + +for lsrc in ${langs[@]} ; do + ExtractBUCC ${lsrc} + + # Tokenize and embed train + bname="${bucc}.${lsrc}-${ltrg}" + part="${bname}.train" + Embed ${edir}/${part} ${lsrc} ${encoder} ${bpe_codes} + Embed ${edir}/${part} ${ltrg} ${encoder} ${bpe_codes} + + # mine for texts in train + Mine ${edir}/${part} ${lsrc} ${ltrg} + + # optimize threshold on BUCC training data and provided gold alignments + if [ ! -s ${part}.log ] ; then + python3 bucc.py \ + --src-lang ${lsrc} --trg-lang ${ltrg} \ + --bucc-texts ${edir}/${part}.txt \ + --bucc-ids ${edir}/${part}.id \ + --candidates ${edir}/${part}.candidates.tsv \ + --gold ${ddir}/${lsrc}-${ltrg}/${lsrc}-${ltrg}.training.gold \ + --verbose \ + | tee ${part}.log + fi + + # Tokenize and embed test + part="${bname}.test" + Embed ${edir}/${part} ${lsrc} ${encoder} ${bpe_codes} + Embed ${edir}/${part} ${ltrg} ${encoder} ${bpe_codes} + + # mine for texts in test + Mine ${edir}/${part} ${lsrc} ${ltrg} + + # extract test bitexts for treshhold optimized on train + th=`grep 'best threshold' ${bname}.train.log | sed -e 's/[=:]/ /g' | awk '{print $4}'` + extracted="${edir}/${part}.extracted.tsv" + if [ ! -s ${extracted} ] ; then + python3 bucc.py \ + --src-lang ${lsrc} --trg-lang ${ltrg} \ + --bucc-texts ${edir}/${part}.txt \ + --bucc-ids ${edir}/${part}.id \ + --candidates ${edir}/${part}.candidates.tsv \ + --threshold ${th} --output ${extracted} \ + --verbose + fi +done + +# Bonus: extract bitexts with English alignments +# using a (conservative) threshold of 1.1 +# All the data is supposed to be already tokenized + +th=1.1 +for lsrc in ${langs[@]} ; do + for ltrg in ${langs[@]} ; do + if [ ${lsrc} != 'en' -a ${ltrg} != "en" -a ${lsrc} != ${ltrg} ] ; then + bitext="${bucc}.${lsrc}-${ltrg}.train.extracted.th${th}.csv" + if [ ! -s ${bitext} ] ; then + echo "Extracting bitexts for ${lsrc}-${ltrg}" + python3 ${LASER}/source/mine_bitexts.py \ + ${edir}/${bucc}.${lsrc}-en.train.txt.${lsrc} \ + ${edir}/${bucc}.${ltrg}-en.train.txt.${ltrg} \ + --src-lang ${lsrc} --trg-lang ${ltrg} \ + --src-embeddings ${edir}/${bucc}.${lsrc}-en.train.enc.${lsrc} \ + --trg-embeddings ${edir}/${bucc}.${ltrg}-en.train.enc.${ltrg} \ + --unify --mode mine --retrieval max --margin ratio -k 4 \ + --output ${bitext} --threshold ${th} \ + --verbose --gpu + fi + fi + done +done diff --git a/laser/tasks/clustering/LaserClusteringExample.ipynb b/laser/tasks/clustering/LaserClusteringExample.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..5fa7ef0a7d147ebdcf89bdcb9c3c06aea616a60d --- /dev/null +++ b/laser/tasks/clustering/LaserClusteringExample.ipynb @@ -0,0 +1,738 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [], + "gpuType": "T4" + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + }, + "accelerator": "GPU" + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# Clustering Multilingual Embeddings using LASER\n", + "\n", + "In this tutorial, we'll explore the power of Language-Agnostic SEntence Representations ([LASER](https://github.com/facebookresearch/LASER)) for generating multilingual embeddings. We'll then use these embeddings to perform clustering on the [MASSIVE](https://github.com/alexa/massive) dataset. Our goal is to show that LASER embeddings can effectively group texts not only by their semantic content or meaning but also across different languages. LASER can encode sentences from multiple languages into a shared embedding space, allowing for cross-lingual understanding and comparison. We'll see how this capability is useful for tasks like multilingual clustering.\n" + ], + "metadata": { + "id": "EqqG01vB6E9H" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Setting Up Your Environment\n", + "\n", + "We will use the following libraries:\n", + "- `scikit-learn` for clustering algorithms and evaluation metrics.\n", + "- `plotly` for generating interactive plots.\n", + "- `laser_encoders` for generating text embeddings.\n", + "- `datasets` for downloading data from huggingface hub.\n" + ], + "metadata": { + "id": "eDx4HES46JTf" + } + }, + { + "cell_type": "code", + "source": [ + "!pip install -q laser_encoders datasets" + ], + "metadata": { + "id": "EP-noK6R6xU0" + }, + "execution_count": 1, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "!pip install -U kaleido" + ], + "metadata": { + "id": "j4OXMzQvzZtb", + "outputId": "50abb3f7-1d15-4702-a172-5015fa284922", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "execution_count": 2, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: kaleido in /usr/local/lib/python3.10/dist-packages (0.2.1)\n" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "vWPUBx6u6A2u" + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "from sklearn.cluster import KMeans\n", + "from sklearn import metrics\n", + "from sklearn.manifold import TSNE\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from laser_encoders import LaserEncoderPipeline\n", + "\n", + "import datasets\n", + "from datasets import load_dataset\n", + "\n", + "import warnings\n", + "\n", + "warnings.filterwarnings(\"ignore\")\n" + ] + }, + { + "cell_type": "markdown", + "source": [ + "## Loading the MASSIVE Dataset\n", + "We'll use the MASSIVE dataset, which includes texts in 52 languages. Let's load a subset of this dataset for our experiment:\n", + "\n" + ], + "metadata": { + "id": "tFlfrpM3nTuA" + } + }, + { + "cell_type": "code", + "source": [ + "from datasets import load_dataset\n", + "\n", + "n = 20\n", + "eng_data = load_dataset(\"AmazonScience/massive\", \"en-US\", split=f'train[:{n}]')\n", + "fra_data = load_dataset(\"AmazonScience/massive\", \"fr-FR\", split=f'train[:{n}]')\n", + "ita_data = load_dataset(\"AmazonScience/massive\", \"it-IT\", split=f'train[:{n}]')\n", + "spa_data = load_dataset(\"AmazonScience/massive\", \"es-ES\", split=f'train[:{n}]')\n", + "jap_data = load_dataset(\"AmazonScience/massive\", \"ja-JP\", split=f'train[:{n}]')\n", + "arb_data = load_dataset(\"AmazonScience/massive\", \"ar-SA\", split=f'train[:{n}]')\n", + "chn_data = load_dataset(\"AmazonScience/massive\", \"zh-CN\", split=f'train[:{n}]')\n", + "afr_data = load_dataset(\"AmazonScience/massive\", \"af-ZA\", split=f'train[:{n}]')\n", + "rus_data = load_dataset(\"AmazonScience/massive\", \"ru-RU\", split=f'train[:{n}]')\n", + "hin_data = load_dataset(\"AmazonScience/massive\", \"hi-IN\", split=f'train[:{n}]')" + ], + "metadata": { + "id": "zTQQWUVmSMaI" + }, + "execution_count": 4, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "data_dict = {\n", + " \"english\": eng_data[\"utt\"],\n", + " \"french\": fra_data[\"utt\"],\n", + " \"italian\": ita_data[\"utt\"],\n", + " \"spanish\": spa_data[\"utt\"],\n", + " \"japanese\": jap_data[\"utt\"],\n", + " \"arabic\": arb_data[\"utt\"],\n", + " \"chinese\": chn_data[\"utt\"],\n", + " \"afrikaans\": afr_data[\"utt\"],\n", + " \"russian\": rus_data[\"utt\"],\n", + " \"hindu\": hin_data[\"utt\"],\n", + "}" + ], + "metadata": { + "id": "sn-hexAdkkne" + }, + "execution_count": 5, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Here what the dataset looks like." + ], + "metadata": { + "id": "CnPKEtYnkvaq" + } + }, + { + "cell_type": "code", + "source": [ + "for lang, texts in data_dict.items():\n", + " print(f\"{lang}: {texts[0]}\")" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "nwjzEPUqk4-9", + "outputId": "ab5392f4-79a2-453b-8753-dfbf5089d53a" + }, + "execution_count": 6, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "english: wake me up at nine am on friday\n", + "french: réveille-moi à neuf heures du matin le vendredi\n", + "italian: svegliami alle nove di mattina venerdì\n", + "spanish: despiértame a las nueve de la mañana el viernes\n", + "japanese: 金曜日の午前九時に起こしてください\n", + "arabic: صحيني تسعة الصباح يوم الجمعة\n", + "chinese: 星期五早上九点叫醒我\n", + "afrikaans: maak my wakker nege-uur v. m. op vrydag\n", + "russian: разбуди меня в девять утра в пятницу\n", + "hindu: शुक्रवार को सुबह नौ बजे मुझे जगा दो\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "## Generating LASER Embeddings\n", + "\n", + "We will encode our text data into embeddings using `laser_encoders`. This step is crucial as it translates our multilingual dataset into a uniform representation.\n", + "\n" + ], + "metadata": { + "id": "n7bl3lwnnp_Z" + } + }, + { + "cell_type": "code", + "source": [ + "combined_sentences = []\n", + "for senetence_list in data_dict.values():\n", + " combined_sentences.extend(senetence_list)\n", + "\n", + "print(f\"All together we have {len(combined_sentences)} sentences\")" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "_skE8eHnkpXV", + "outputId": "6472326c-0d1b-48f9-aa67-cba3c41ced9f" + }, + "execution_count": 7, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "All together we have 200 sentences\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "When we initialize the encoder with `lang='eng'`, it automatically defaults to using LASER 2, which offers support for nearly 100 languages.\n" + ], + "metadata": { + "id": "_qJPz9lloNYR" + } + }, + { + "cell_type": "code", + "source": [ + "encoder = LaserEncoderPipeline(lang=\"eng\")\n", + "embeddings = encoder.encode_sentences(combined_sentences, normalize_embeddings=True)" + ], + "metadata": { + "id": "pgWrd9KIEHIw" + }, + "execution_count": 8, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Clustering with Multilingual Embeddings\n", + "With our LASER embeddings, we can now apply a clustering algorithm. K-Means is a good starting point for its simplicity and effectiveness:\n", + "\n", + "## Choice of number of clusters.\n", + "In our case, we have `20` parallel sentences in each of 5 languages, meaning these sentences convey the same meanings or topics in different languages. If each sentence represents a unique semantic content, then ideally, We would expect to see around 20 clusters. This is because LASER is designed to map semantically similar sentences to nearby points in the embedding space, regardless of the language." + ], + "metadata": { + "id": "qtXbMQ1_zz9y" + } + }, + { + "cell_type": "code", + "source": [ + "n_clusters = 20\n", + "kmeans = KMeans(n_clusters=20, random_state=42)\n", + "clusters = kmeans.fit_predict(embeddings)" + ], + "metadata": { + "id": "kYvltGE_qpXy" + }, + "execution_count": 9, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Reduce Dimensionality for Visualization\n", + "\n", + "We'll use t-SNE to reduce the dimensionality of our embeddings so we can plot them in 2D:\n", + "\n" + ], + "metadata": { + "id": "jHIyGdUC1B67" + } + }, + { + "cell_type": "code", + "source": [ + "tsne = TSNE(n_components=2, random_state=42)\n", + "reduced_embeddings = tsne.fit_transform(embeddings)" + ], + "metadata": { + "id": "iYoDifv0lMNl" + }, + "execution_count": 10, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "# Group sentences by their cluster\n", + "clustered_sentences = {}\n", + "for sentence, cluster_label in zip(combined_sentences, clusters):\n", + " if cluster_label not in clustered_sentences:\n", + " clustered_sentences[cluster_label] = []\n", + " clustered_sentences[cluster_label].append(sentence)\n" + ], + "metadata": { + "id": "vMS07RohFWnj" + }, + "execution_count": 11, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Evaluating Clustering Performance\n", + "To evaluate our clustering, we'll use metrics suited for clustering quality, such as the Adjusted Rand Index (ARI), Normalized Mutual Information Score and Silhouette Coefficient:\n", + "\n", + "We can also observe below that the same sentences which were previously displayed in Cell 6, when we initially inspected the dataset, were correctly clustered together\n" + ], + "metadata": { + "id": "QyqNtkxl2D8o" + } + }, + { + "cell_type": "code", + "source": [ + "for sentence in clustered_sentences[7]:\n", + " print(sentence)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "-tkDQp4YFSpD", + "outputId": "b218cbcc-48a6-47e8-c5b8-a831a4cdbab4" + }, + "execution_count": 12, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "wake me up at nine am on friday\n", + "réveille-moi à neuf heures du matin le vendredi\n", + "svegliami alle nove di mattina venerdì\n", + "despiértame a las nueve de la mañana el viernes\n", + "金曜日の午前九時に起こしてください\n", + "صحيني تسعة الصباح يوم الجمعة\n", + "星期五早上九点叫醒我\n", + "maak my wakker nege-uur v. m. op vrydag\n", + "разбуди меня в девять утра в пятницу\n", + "शुक्रवार को सुबह नौ बजे मुझे जगा दो\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "from sklearn.metrics import rand_score,adjusted_rand_score, normalized_mutual_info_score, silhouette_score\n", + "\n", + "labels = list(range(20)) * len(data_dict)\n", + "\n", + "ri_score = rand_score(labels, clusters)\n", + "ari_score = adjusted_rand_score(labels, clusters)\n", + "nmi_score = normalized_mutual_info_score(labels, clusters, average_method='arithmetic')\n", + "silhouette_avg = silhouette_score(embeddings, clusters)\n", + "\n", + "print(f\"Rand Index: {ri_score}\")\n", + "print(f\"Adjusted Rand Index: {ari_score}\")\n", + "print(f\"Normalized Mutual Information: {nmi_score}\")\n", + "print(f\"Silhouette Coefficient: {silhouette_avg}\")\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "w7zgwToT2N9N", + "outputId": "2fa3d8a4-6cac-4bfc-d55d-29e438914dce" + }, + "execution_count": 13, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Rand Index: 0.9731155778894472\n", + "Adjusted Rand Index: 0.7050871871580726\n", + "Normalized Mutual Information: 0.862654325567496\n", + "Silhouette Coefficient: 0.22755876183509827\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "## Clustering Evaluation Summary with LASER Embeddings\n", + "\n", + "We evaluated our clustering model, which leverages LASER embeddings, with the following results:\n", + "\n", + "- **Rand Index (RI):** 0.973 - High accuracy, indicating successful clustering.\n", + "- **Adjusted Rand Index (ARI):** 0.705 - Shows good performance, considering the adjustment for random chance.\n", + "- **Normalized Mutual Information (NMI):** 0.862 - Demonstrates strong alignment between our clustering and the true labels.\n", + "- **Silhouette Coefficient:** 0.227 - Suggests moderate cluster separation.\n", + "\n", + "### Role of LASER in Clustering Performance\n", + "\n", + "The effectiveness of our clustering, as evidenced by the high RI, ARI, and NMI scores, can be significantly attributed to the LASER embeddings. LASER's ability to create language-agnostic sentence representations has likely enhanced the clustering quality, enabling the algorithm to group sentences based on semantic similarity across different languages. This is further supported by the reasonable Silhouette Coefficient, indicating decent separation between clusters. These results showcase LASER’s capability in handling multilingual data.\n" + ], + "metadata": { + "id": "I4IxbYXz3m4Q" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Prepare Data for Plotting\n", + "We organize our data for easy ploting using `plotly`:" + ], + "metadata": { + "id": "0msUmsZP1UMd" + } + }, + { + "cell_type": "code", + "source": [ + "languages = []\n", + "for lang, sentence in data_dict.items():\n", + " languages.extend([lang] * len(sentence))\n", + "\n", + "# Create a DataFrame for plotting\n", + "df = pd.DataFrame({\n", + " 'TSNE Component 1': reduced_embeddings[:, 0],\n", + " 'TSNE Component 2': reduced_embeddings[:, 1],\n", + " 'Language': languages,\n", + " 'Cluster': ['Cluster {}'.format(cluster) for cluster in clusters],\n", + " 'Sentence': combined_sentences\n", + "})\n" + ], + "metadata": { + "id": "VVft-ZUMEtPP" + }, + "execution_count": 14, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Plot Using Plotly\n", + "Le's then go ahead to create an interactive scatter plot:" + ], + "metadata": { + "id": "pK5y0LUn1ln-" + } + }, + { + "cell_type": "code", + "source": [ + "import plotly.express as px\n", + "import plotly.graph_objects as go\n" + ], + "metadata": { + "id": "6vu1UTQVmLu9" + }, + "execution_count": 15, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "fig = px.scatter(df, x='TSNE Component 1', y='TSNE Component 2', color='Language',\n", + " hover_data=['Sentence'])\n", + "fig.update_layout(title=\"Multilingual Sentence Embeddings Visualization\",\n", + " xaxis_title=\"TSNE Component 1\", yaxis_title=\"TSNE Component 2\",\n", + " legend_title=\"Language\")\n", + "fig.show(\"png\") #for interactive plots use fig.show()\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 517 + }, + "id": "0JG_MA7-lXMW", + "outputId": "46127dc5-49ea-4acb-d6c7-6218a9e2cd2b" + }, + "execution_count": 16, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "source": [ + "num_languages = len(data_dict) # Number of languages\n", + "num_sentences = len(reduced_embeddings) // num_languages\n", + "\n", + "cluster_centers = np.array([np.mean(reduced_embeddings[i::num_sentences], axis=0) for i in range(num_sentences)])" + ], + "metadata": { + "id": "FbKkpx5Eue0o" + }, + "execution_count": 17, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "Let's try to draw circles to distinguish the clusters." + ], + "metadata": { + "id": "CLx-qUZR-Kf4" + } + }, + { + "cell_type": "code", + "source": [ + "radius = 1.5\n", + "# Your existing code for the scatter plot\n", + "fig = px.scatter(df, x='TSNE Component 1', y='TSNE Component 2', color='Language',\n", + " hover_data=['Sentence'])\n", + "# Add circles\n", + "for center in cluster_centers:\n", + " fig.add_trace(go.Scatter(x=[center[0]], y=[center[1]],\n", + " mode='markers',\n", + " marker=dict(size=10, color='LightSkyBlue'),\n", + " showlegend=False))\n", + " fig.add_shape(type=\"circle\",\n", + " xref=\"x\", yref=\"y\",\n", + " x0=center[0] - radius, y0=center[1] - radius,\n", + " x1=center[0] + radius, y1=center[1] + radius,\n", + " line_color=\"LightSeaGreen\", opacity=0.4\n", + " )\n", + "\n", + "fig.show(\"png\") #for interactive plots use fig.show()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 517 + }, + "id": "mkpQlPP4unaU", + "outputId": "2ac37329-7dfc-4657-ff01-508c38d514b1" + }, + "execution_count": 18, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "## Plot Randomly Selected Clusters.\n", + "\n", + "To closely inspect the sentences within each cluster, let's randomly display different clusters and examine their proximity in the embedding space." + ], + "metadata": { + "id": "zoPiOP49Fk58" + } + }, + { + "cell_type": "code", + "source": [ + "import random" + ], + "metadata": { + "id": "s9JqzeO5HCBK" + }, + "execution_count": 19, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "random_cluster = random.choice(range(n_clusters))\n", + "print(f\"Sentences in cluster {random_cluster}:\")\n", + "for sentence in clustered_sentences[random_cluster]:\n", + " print(sentence)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "lMzYKIMfFl4s", + "outputId": "579d4c7a-25dd-4fe4-80ad-926aa690df91" + }, + "execution_count": 20, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Sentences in cluster 2:\n", + "time to sleep\n", + "l'heure de dormir\n", + "è ora di andare a letto\n", + "hora de dormir\n", + "寝る時間\n", + "وقت النوم\n", + "是时候睡觉了\n", + "tyd om te slaap\n", + "tyd om te slaap janneman\n", + "время идти спать\n", + "олли время спать\n", + "सोने का समय\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "# Prepare data for the selected cluster\n", + "selected_indices = [i for i, label in enumerate(clusters) if label == random_cluster]\n", + "selected_embeddings = reduced_embeddings[selected_indices]\n", + "selected_sentences = [combined_sentences[i] for i in selected_indices]\n", + "selected_sentences_languages = [languages[i] for i in selected_indices]\n", + "\n", + "df_selected = pd.DataFrame({\n", + " 'Component 1': selected_embeddings[:, 0],\n", + " 'Component 2': selected_embeddings[:, 1],\n", + " 'Sentence': selected_sentences,\n", + " \"Language\": selected_sentences_languages\n", + "})\n", + "\n", + "fig = px.scatter(df_selected, x='Component 1', y='Component 2',color='Language', text='Sentence', title=f'Sentences in Cluster {random_cluster}')\n", + "fig.update_traces(textposition='top center')\n", + "fig.update_layout(showlegend=True)\n", + "fig.show(\"png\")" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 517 + }, + "id": "3_gTVXAJFsG9", + "outputId": "8c95da2a-e4b0-484f-dff3-8a01a91b04cc" + }, + "execution_count": 21, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAArwAAAH0CAYAAADfWf7fAAAgAElEQVR4XuydBVhWSdvH/5SI3bl2d7eu3d3dgYGB2KIiKoqJYrdid7eru+au7q69dneCAdLfNcMLHyAgnDOPD8L/XNd3vR9w5p5zfjO4P+7nnhmTwMDAQPAiARIgARIgARIgARIggThKwITCG0dHlq9FAiRAAiRAAiRAAiQgCVB4ORFIgARIgARIgARIgATiNAEKb5weXr4cCZAACZAACZAACZAAhZdzgARIgARIgARIgARIIE4ToPDG6eHly5EACZAACZAACZAACVB4OQdIgARIgARIgARIgATiNAEKb5weXr4cCZAACZAACZAACZAAhZdzgARIgARIgARIgARIIE4ToPDG6eHly5EACZAACZAACZAACVB4OQdIgARIgARIgARIgATiNAEKb5weXr4cCZAACZAACZAACZAAhZdzgARIgARIgARIgARIIE4ToPDG6eHly5EACZAACZAACZAACVB4OQdIgARIgARIgARIgATiNAEKb5weXr4cCZAACZAACZAACZAAhZdzgARIgARIgARIgARIIE4ToPDG6eHly5EACZAACZAACZAACVB4OQdIgARIgARIgARIgATiNAEKb5weXr4cCZAACZAACZAACZAAhZdzgARIgARIgARIgARIIE4ToPDG6eHly5EACZAACZAACZAACVB4OQdIgARIgARIgARIgATiNAEKb5weXr4cCZAACZAACZAACZAAhZdzgARIgARIgARIgARIIE4ToPDG6eHly5EACZAACZAACZAACVB4OQdIgARIgARIgARIgATiNAEKb5weXr4cCZAACZAACZAACZAAhZdzgARIgARIgARIgARIIE4ToPDG6eHly5EACZAACZAACZAACVB4OQdIgARIgARIgARIgATiNAEKb5weXr4cCZAACZAACZAACZAAhZdzgARIgARIgARIgARIIE4ToPDG6eHly5EACZAACZAACZAACVB4OQdIgARIgARIgARIgATiNAEKb5weXr4cCZAACZAACZAACZAAhZdzgARIgARIgARIgARIIE4ToPDG6eHly5EACZAACZAACZAACcRK4b3z4ClWbTqIvy7dxNv3HjA1MUGWzOlQv3o59GhXHwkSWHDkYkCgXocRKFkkD5xG945Bq8hvvXj5FtZt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cBIgARIgARIgARIgAWMToPAaewTYPwmQAAmQAAmQAAmQgEEJUHgNipfBSYAESIAESIAESIAEjE2AwmvsEWD/JEACJEACJEACJEACBiVA4TUoXgYnARIgARIgARIgARIwNgEKr7FHgP2TAAmQAAmQAAmQAAkYlACF16B4GZwESIAESIAESIAESMDYBCi8xh4B9k8CJEACJEACJEACJGBQAhReg+JlcBIgARIgARIgARIgAWMToPAaewTYPwmQAAmQAAmQAAmQgEEJUHgNipfBSYAESIAESIAESIAEjE2AwmvsEWD/JEACJEACJEACJEACBiVA4TUoXgYnARIgARIgARIgARIwNgEKr7FHgP2TAAmQAAmQAAmQAAkYlACF16B4GZwESIAESIAESIAESMDYBCi8xh4B9k8CJEACJEACJEACJGBQAhReg+JlcBIgARIgARIgARIgAWMToPAaewTYPwmQAAmQAAmQAAmQgEEJUHgNipfBSYAESIAESIAESIAEjE2AwmvsEWD/JEACJEACJEACJEACBiVA4TUoXgYnARIgARIgARIgARIwNgEKr7FHgP2TAAmQAAmQAAmQAAkYlACF16B4GZwESIAESIAESIAESMDYBCi8xh4B9k8CJEACJEACJEACJGBQAhReg+JlcBIgARIgARIgARIgAWMToPAaewTYPwmQAAmQAAmQAAmQgEEJUHgNipfBSYAESIAESIAESIAEjE2AwmvsEWD/JEACJEACJEACJEACBiVA4TUoXgYnARIgARIgARIgARIwNgEKr7FHgP2TAAmQAAmQAAmQAAkYlACF16B4GZwESIAESIAESIAESMDYBCi8xh4B9k8CJEACJEACJEACJGBQAhReg+JlcBIgARIgARIgARIgAWMToPAaewTYPwmQAAmQAAmQAAmQgEEJUHgNipfBSYAESIAESIAESIAEjE2AwmvsEWD/JEACJEACJEACJEACBiVA4TUoXgYnARIgARIgARIgARIwNgEKr7FHgP2TAAmQAAmQAAmQAAkYlACFVyfe5++8dEZg89AEzM1MkDKpJd64fyUYIxFIncwSn7184e0bYKQniN/dWlqYIrGVBd5/9I7fIIz49ulTJsRbD2/4BwQa8Snib9eJE5pD/LfA44uvUSBkSm1llH7ZqWEJUHh18qXw6gQYrjmFVy1PLdEovFqoqWtD4VXHUmskCq9WcmraUXjVcGSUsAQovDpnBIVXJ0AKr1qACqJReBVA1BGCwqsDnqKmFF5FIDWGofBqBMdmURKg8OqcIBRenQApvGoBKohG4VUAUUcICq8OeIqaUngVgdQYhsKrERybUXgNOQcovEF05y/fhGxZMsHbxxepUyTHyzdvkSRxIvmzj5++oH7Nili39QByZMuMew+fokubhtiw/WCYNtWrlJZ1W6KG99aDV9/cf/jEuTAxO7aqH2ZotTxDqpTJDTk9fsrYFF7jDhuF17j8Re8UXuOOAYXXuPzjau/M8OocWQpvEMADR0+jQe3K+PTFExf/uQGvr1/l1+Lae/gPVCpbDLfvPkL5MkVx5s/LKJA3O85fvBqmTXjhjez+4JiN6/4aZvS0PAOF99tfAAqvzn8UdDan8OoEqKA5hVcBRB0hKLw64LFppAQovDonB4WXwqtzCsW65hRe4w4Jhde4/JnhNT5/Cq/xxyAuPgGFV+eoUngpvDqnUKxrTuE17pBQeI3Ln8JrfP4UXuOPQVx8AgqvzlGl8FJ4dU6hWNecwmvcIaHwGpc/hdf4/H9G4W3YeRRaNayK7u3Cri0xPk0+QTABCq/OuUDhpfDqnEKxrjmF17hDQuE1Ln8Kr/H5U3iNPwZx8QkovDpHlcJL4dU5hWJdcwqvcYeEwmtc/hRe4/OPi8K758gZLFu3D89evkWqlMnQrU09dGpZW8KevmAj3D9+RopkSXD+nxt47/4JTetWgm2f1vLnvn7+cJrrhj1HziJ5ssQY2qcNlq7biz6dG6NRrQoQ2eXubeujVaOq8v47D56iWXd7nNu3EMmSJMLV/+5j+sKNuHn3MSwTJEDNKiUxdlAnJEhgIe/ftPs3zF+5Ez6+vmjduBo8vbwREBCAicO6y5+7bTsi73nx6h0yZ0iD0YM6omLpwsafKDF8AgpvDIGFv53CG0REy5Zg3JZM5+QzUHMKr4HARjMshTeaoAx4G3dpMCDcaISOa8J7//ELNO4yGvOdBqNymSK4dP0uetnNwLoF9iiSPwdmL9mCDTuPYeb4/qhWsTjuPXqOpt3GYvtyR+TLlQWrNx/Cqs0HsXzWcKRNlQL2zivw57//SSFtULNclMKbNLEVarS2RePaFTGge3O8eecu+27bpLosv7h+6yHaWDtg7qSBUmJXbNyPjbuOo27VMphg1w0Hjv+Jqa7rsGS6HfLlyoo//rwM2wkLsGe1E7JmTheN0Yw9t1B4dY4FhVcnwHDNebSwWp5aolF4tVBT14bCq46l1kgUXq3k1LSLa8Lr7x+A9+4fkTZ1ihBATbqNRcfmNdG2aQ0pvKf/uoodKyaF/Lx6qyEY0b896tcoh84DnVC8UG7Y9W0jf/742WvU7zgCM8b1+67wigyvyBgnSZQwJKM72cUNHzw+YdaE/nBduQNn/rqKTYsnyNgBAYGo034YqpQtIoW3h60zihXKjcG9WoY8m/WIWShaIKcU6J/povDqHC0Kr06AFF61ABVEo/AqgKgjBIVXBzxFTSm8ikBqDBPXhFdgWLnpAHYeOIUPHp9hamoiSxiG9W2LLq3rSuG9ff8pFjsPDSFWr8MIWHdujOb1q6Bu++Ho2aEh2jSuFvLzcg37YcLQbtES3pNnL8kSCCHKou8vnl9RsXQhuE4ZLLPF3j4+Up6DL5sxc5E2dXIpvLXa2slShvBXkzqVMHVMb40jbJxmFF6d3Cm8OgFSeNUCVBCNwqsAoo4QFF4d8BQ1pfAqAqkxTFwT3i17T8Jl6VYsch6KYgVzSSote42XdbrBwnvnwTMsmmYbofDWaTcM/bo2lfIbfJVv1B/jbbtGKLxCnpv3CKrhff3mg+zLYVg3NK5TEeZmZpg2fwOevXgTIryiXtdp9P/L60D7eUiTMpkU3kZdRqNd0xoh9cYahzRWNKPw6hwGCq9OgBRetQAVRKPwKoCoIwSFVwc8RU0pvIpAagwT14R3zNRl8PbxlSUE4vr42RPVWw6RZQLREd52/RxRqUxhDOzRQrYXGVeReQ0uaWjRcxxaNqyKji1qyZ+LjO6AMS5SeI+f+htzlm7FHzvnhYxGxwGTkSpFUim8Irv877W7cHMdI38eGBiI+h1HokKpglJ4+4+eg9Qpk2PSiB4h7UX/6dOmktnin+mi8OocLQqvToBRCK9JwBdYeD+Gv0Ua+JunVdsRo0VKgMJr3MlB4TUuf9E7hde4Y/CzCm/tX0vLXQ5CX6lSJMPKjftx+OQFbFg4Tu6AIDKst+49RvVKJWRZg5DOqDK8C1btxM6Dp7DKZZTcycFh1mr8cf5KyKI12wnzZZdzJtpIsbZzWIgTZ/+VwnvzzmP0HjYDO1Y4IkO61Fiz5RCOn/4HFuZmsm73r39vosdQZyydYYfSRfNh1eZDWLf9CGpVKSWF94/zlzFk/Hy5qK1C6UK4fP2elGnXyYNQpnh+406UGPZO4Y0hsPC3U3h1AoxEeL88OYLkb5eG/NQnYQG8Tz8EgaaJ1XbIaN8QoPAad1JQeI3Ln8JrfP4/q/A+fPLyG3izHQagXIkCsJu4EJdv3EW6NCkxckAHvH3vAad562DTvblcQBaV8Hp6fcW46SvlwjYh0CMGtMMUFzcM69cO9aqXxd0HzzByyhKZOU6XOgV6tm8AUZZwaperzOQ6zlmL/cfOIaFlAlmaUKVcUfS0my4Xwi1wGoKFq3dh854TEIvrxM8fPX0FKytLjLftIt9n3fajWL3lEN59+Ci3JevdsZEsx/jZLgqvzhGj8OoEGJHwJvKD+ZWu3wT+mKoTviSvp7ZDRqPwxrI5QOE1/oAww2vcMfgZhdfQxLy++sAqYQLZjZ+/P0rXs8bK2SNRskge3V2Hji2CiZ0ZypUsKBfNxaWLwqtzNCm8OgFGILypTO7A7I7DN4F9rPLjXQZ7tR0yGoU3ls0BCq/xB4TCa9wxoPCG5b9h53G5y8KKWcORMX0aLFu/DzsO/IFDG2aESLDWEROHVDTvMQ7zJg+SdcJnL17D4HGu2LRoPArmza41bKxsR+HVOSwUXp0AIxJes+cwuzX8m8CeSarAI6212g4ZjcIby+YAhdf4A0LhNe4YUHjD8hcZ3VmLt8iyBFHekDdnFoyy6YCi/9vxQe9oCXkWEv3yzQdkSp9aliw0q1dZb9hY157Cq3NIKLw6AUYgvCmTWiLw+lBY+DwO89N3GcfAJ2FBtR0yGoU3ls0BCq/xB4TCa9wxoPAal39c7Z3Cq3NkKbw6AUYivG/fv0PSDztg4fsIfmZp4ZW0CmVXLepIo3HR2g8CHUk3FF7j8he9U3iNOwYUXuPyj6u9U3h1jiyFVyfASIT3jftXtYEZLdoEKLzRRmWQGym8BsEao6AU3hjhUn4zhVc5UgYEQOHVOQ0ovDoBUnjVAlQQjcKrAKKOEBReHfAUNaXwKgKpMQyFVyM4NouSAIVX5wSh8OoESOFVC1BBNAqvAog6QlB4dcBT1JTCqwikxjAUXo3g2IzCa8g5QOFVS9fczARi0RpLGtRyjUk0Cm9MaKm/l8KrnmlMI1J4Y0pM7f0UXrU8GS2IADO8OmcChVcnQGZ41QJUEI3CqwCijhAUXh3wFDWl8CoCqTEMhVcjODZjhteQc4DCq5YuM7xqeWqJRuHVQk1dGwqvOpZaI1F4tZJT047Cq4aj6ig37z7GkPHzcWjDdKzadBD3H7/ApBE9Iu1G3Fu5bBG0alRV9aNoihevM7zt+jni5p1HgImJhJcsSSL8sXPeNyCjuo/Cq2neRdqIwquWp5ZoFF4t1NS1oR51mu0AACAASURBVPCqY6k1EoVXKzk17eKb8Hp6AU+eBUp4WTKbIJGVGo6qo4QWXnEcsb+/P5IkjvxhKbyqR0BHvIadR2Gu40DkzpE5yihR3Ufh1TEAETSl8KrlqSUahVcLNXVtKLzqWGqNROHVSk5Nu/gkvI+fBWKGqx+8vILYWVkBPTqYo0TRoESc3uvk2UtwWbYNXl+98UvGtJgxvh9SpUiKtVsP49a9J/Dz88fLN+/h6eWNuY42yJQhDZ6/fIvhkxbj3YePKFkkD756+6BKuaIokCdbhBneMxeuYfrCjfDx8YWFuTmG9WuLX8sXk/fmyp4JZy9ex9Pnr1GqaD7MnNAP5mZmel9LU/t4neGt2mIwNi+ZgAxpU0UJL6r7KLya5l2kjSi8anlqiUbh1UJNXRsKrzqWWiNReLWSU9MuPgnv/OV+uHQ1KLsbfKVOBThPsNAN89WbD2jewx6rXEYhX64sWL35EP6+ehuukwdh/Y5jWLhmF3avmoI0qZJjsoubzNYO6d1KimqWTOlg17cNTv91FTZj52LS8B7Ik/OXCIW3SbexcLDripJF8kqJXr/jKByH95D3vnr7AUun28Hc3BwtetpjnG0XVCxdWPe7aQkQr4W3RJ3e+LVcUfx77Y4ccDHQ4q+S8FdU91F4tUy7yNtQeNXy1BKNwquFmro2FF51LLVGovBqJaemXXwS3l6DfSOEtnyufuHdsvckjvx+ActnDpd9eHp9RYVGA3Dx8FJs2XMC5/++Dtcpg+XP3LYdwY3bjzB1TG9UaTYQy2YOR/7cWeXPmnW3R8/2DSIV3p5DpyNblgzo3raeFOXgSwhv8cK50a1NPfmtgfbzUKNSCTSvX0XNRIlhlDgvvKLmxM/fPwwWkXLPk+MXjJu+AvWql0OF0gXx+9nLGOW0BHvXTg2T8Q0ICIzyPl+/gBgi5+1RERDl1GampvDzJ1djzRTxR4fAHxgYNutgrOeJb/2amJjA1BTw9yd/Y429uZkp/AMCwF8B44yAqakJxAf6/gHG+R2wMDf9YS/u4OyHp8/DvqdVQsDVWb/wrth4AIvW7EKK5ElD3ufzFy/sXeOEI79fxJUb9+Bsby1/JjK+wV8Xq9kThzfNCHEh6xGz0KhWhUiF9+17DyxeuwfHTv0t10IN799OlkCEr+E1dk1vnBdee+cVsnYl9JUiWRKZVg9/dbedhpYNq8qBjeoKfd8bj7Cxf9hvSRztyMzUBMkSW+DDJ584+oax/7VSJE4AT28/+PCPOaMMVgJzU1hZmsPjC38HjDIAAFInSwD3T77wp/EaZQisEpjBzMwEn738jNJ/2uSWP6zf3Qf9sfdQ2ARPraqmaNdCf53r3iNnZYY3OIsb+qVCC2544a3YZADWzh0Tsr6pRc9x6N62fqTCGzrub6f/wSinpTi3dyHsJi4Ms0sDhfeHTauwHYkC7TsPnqJYwVwhP+hkMwWdW9VB3WplQr73vftY0qB2AFnSoJanlmgsadBCTV0bljSoY6k1EksatJJT0y4+lTQIYmf+DMCtu0FZ3ny5TVCpnJoMs8i8ihpeN9exyJ4lA67efIA9h09j7ODOYTK64YW378hZKJI/JwZ0b45zF6+j/xgXOA7rHqHwjhnUCSIJ6OJoIzPCT56/RqveE6TwDnVYQOFV8yuhL4q7x2fUbjcMcyfZyALqU39ekasS97tNQ+qUybDv2DmUL1lQriaM6j4Kr75xCN+awquWp5ZoFF4t1NS1ofCqY6k1EoVXKzk17eKb8KqhFnGU389dxpylW+Ht44MkiRNh9MAOcnFZVBlekQwcMWkxvH18Ua5kQbx68x4NapSXGd+I9uHdefAUlq7bJ7cpS2iZAIN6tUStKqVY0mDIgY1pbDERZi7ahNfv3JE5QxqMGNBeSq64fm0+SP7FIiZGVPdReGNKPer7KbxqeWqJRuHVQk1dGwqvOpZaI1F4tZJT047Cq4ajnihi/ZKopRZX18FT0aNdA1St8O2ifj19/Oi2cb6G19BAKbxqCVN41fLUEo3Cq4WaujYUXnUstUai8Golp6YdhVcNR61Rpi/YCFEOIRa0PX72Gm2sHbBv7VSkTZ1Ca8hY0Y7Cq3MYKLw6AYZrTuFVy1NLNAqvFmrq2lB41bHUGonCq5WcmnYUXjUctUYRsjty8hI8ePIClgks0K9rUzSpU0lruFjTjsKrcygovDoBUnjVAlQQjcKrAKKOEBReHfAUNaXwKgKpMQyFVyM4NouSAIVX5wSh8OoESOFVC1BBNAqvAog6QlB4dcBT1JTCqwikxjAUXo3g2IzCa8g5QOFVS5clDWp5aolG4dVCTV0bCq86llojUXi1klPTjsKrhiOjhCXADK/OGUHh1QmQGV61ABVEo/AqgKgjBIVXBzxFTSm8ikBqDEPh1QiOzZjhNeQcoPCqpcsMr1qeWqJReLVQU9eGwquOpdZIFF6t5NS0o/Cq4cgozPAqnQMUXqU4QeFVy1NLNAqvFmrq2lB41bHUGonCq5WcmnYUXjUcGYXCq3QOUHiV4qTwqsWpKRqFVxM2ZY0ovMpQag5E4dWMTklDCq8SjAwSjgBreHVOCQqvToDhmjPDq5anlmgUXi3U1LWh8KpjqTUShVcrOTXtKLxqOIooE2evweETf2HSiJ6oWaWkusDhIoU/qthgHekITOHVAU80pfDqBEjhVQtQQTQKrwKIOkJQeHXAU9SUwqsIpMYw8U14A798gv+ju5KWWbbcMEmcVCO5b5tVbDwAGxaOQ/YsGZTFjCgQhdegeGNHcAqv2nFghlctTy3RKLxaqKlrQ+FVx1JrJAqvVnJq2sUn4fV/eAefHQYi0POzhGeSKAkS9R8Di7K/6oY50H4eTpz5F9l+SY/h/dphxOTF6NOpMVZvPoQjm2bi5Zv3cJy9Bq/efICFhTmmjOyJIgVy4ubdxxgzdRl+LV8M1249wItX7zB6YEdULlsEgYGBmLloM/YdOwcLczN0aFELPdo1gBDef6/dgZ+fPy5dv4t0aVLAZaINMmVIo/s9VAVghlcnSQqvToDhmlN41fLUEo3Cq4WaujYUXnUstUai8Golp6ZdfBLeL9NHwffi6TDgTNNmQLIF25TALNewH3avnoIMaVOhYpMBaF6/Cuys28LEBGjVewLaNqmONk2q4+rNB7AZ44JjW2bj4ZMXaN5jHJbOsEPF0oVx+OQFrNlySGaK9x09h3Xbj2D13NHw9vZFsx5jMWeiDa7feogFq3bCbf5Y5MqWCSMmLZayO6R3KyXvoSIIhVcnRQqvToAUXrUAFUSj8CqAqCMEhVcHPEVNKbyKQGoME5+E171N5QgppdgSVoI1okR44V041RbFC+XGwycv0aLnOFw4uARmZqYyfBtrB9j1bYtUKZKik80U/Ll/kfy+yPgGy7AQ2UL5c6Br67ryZ5+/eMEqoSU27f4NZy9ewwKnIfL7btuO4MbtR5g6prfWR1fejsKrEymFVydACq9agAqiUXgVQNQRgsKrA56iphReRSA1holPwvtpeLeQ+t0QXIkSI8XqwxrphW0WXng3LhwvSxyu/ncfHQZMQvq0qUIaeH31xnjbLsiZLRP6DJ+JE9tc5M/uPHga8nXfkbNQt1pZmSkOfYWv4Y2NNb0UXp1TisKrEyCFVy1ABdEovAog6ghB4dUBT1FTCq8ikBrDxCfh/bplBb5uWxWGlGWD1rDqNlgjvaiFd9Oi8ciaOb2s323W3R7n9y38pp/QghteeEc5LUXenL/Iul1xiThWlpaypvfKjXtwtreW36fwKhm+2BWEwqt2PFjDq5anlmgUXi3U1LWh8KpjqTUShVcrOTXt4pPwCmI+Jw/A7/q/Ep55oRJIUC1IJlVc4TO8wcIrYosa3u7t6qNhzfJ47/4JU13XwcGuO56/ehtphvfQib+wxG0P1s4bg4DAQLTp4yAlV9TwUnhVjFgsjkHhVTs4FF61PLVEo/BqoaauDYVXHUutkSi8WsmpaRffhFcNtYijRCW8oo7XYdZqvHz9XtbxirpcsYAtqgyv2KVh7vLt2LrvJCwTWKBTy9ohuzRQeA05krEgNoVX7SBQeNXy1BKNwquFmro2FF51LLVGovBqJaemHYVXDUdGCUuANbw6ZwSFVyfAcM0pvGp5aolG4dVCTV0bCq86llojUXi1klPTjsKrhiOjUHiVzgEKr1KcoPCq5aklGoVXCzV1bSi86lhqjUTh1UpOTTsKrxqOjELhVToHKLxKcVJ41eLUFI3CqwmbskYUXmUoNQei8GpGp6QhhVcJRgYJR4AlDTqnBIVXJ8BwzZnhVctTSzQKrxZq6tpQeNWx1BqJwquVnJp2FF41HBmFGV6lc4DCqxQnM7xqcWqKRuHVhE1ZIwqvMpSaA1F4NaNT0pDCqwQjgzDDq3YOUHjV8mSGVy1PLdEovFqoqWtD4VXHUmskCq9WcmraUXjVcGQUZniVzgEKr1KczPCqxakpGoVXEzZljSi8ylBqDkTh1YxOSUMKrxKMDMIMr9o5QOFVy5MZXrU8tUSj8Gqhpq4NhVcdS62RKLxayalpR+FVw5FRmOFVOgcovEpxMsOrFqemaBReTdiUNaLwKkOpORCFVzM6JQ0pvEowMggzvGrnAIVXLU9meNXy1BKNwquFmro2FF51LLVGovBqJaemHYVXDcdrtx5g2MRFOLRhOvz8/XHot7/QqHaFKIOv3XoYdx48w6QRPdBv1Bw0qFEOjetUVPNARo7Cbcl0DgCFVyfAcM0pvGp5aolG4dVCTV0bCq86llojUXi1klPTLr4Jr7u/Ny57vZPwilmlRgozSyUgheR++uyJlMmT4r87jzBn6VYsnTEs2sL78bMnLBNYyP+LCxeFV+coUnh1AqTwqgWoIBqFVwFEHSEovDrgKWpK4VUEUmOY+CS8l7zeovqt3XD395G0UpglwKrsNdAsRQ6N9P6/WXCGd/tyRzTpOgYfP39B0QK5sGL2CGzb9ztWbDwgM7+Z0qfGtLHWyJguFSLL8EZ1/617T+Dn54+Xb97D08sbcx1tkClDGt3PrzoAhVcnUQqvToAUXrUAFUSj8CqAqCMEhVcHPEVNKbyKQGoME5+Et9m9g9jt/jAMqewJkuJBkU4a6X0rvKKk4fDJC9i+/3eZ4X3v/gk1Wttiv9s0ZM6QBuOmr4S5mSkm2HWLUHgrlS0S6f3rdxzDwjW7sHvVFKRJlRyTXdyQJLEVhvRupfv5VQeg8OokSuHVCZDCqxaggmgUXgUQdYSg8OqAp6jpzyK87h6fMGP+GtSpVgFVK5VS9PYxDzNh2iJUqVAStaqWQ+OOg7FingPSpU4Z80D/axGZ8IbuR3PwaDTMlNoqGnepucXk70URBgos1U93B6FreEMLrwj81dsHCS0TyD72HTuHXYdOY/nM4ZFmeCO7Xwjv+b+vw3XKYBnLbdsR3Lj9CFPH9Nb9/KoDUHh1EqXw6gRI4VULUEE0Cq8CiDpCUHh1wFPU9GcRXvG6gYGBOHH6IiqXK44ERqq1DC2iH9w/InmypDA1NdE8GvFJeIvf2BJSvxsMLLlZArgX76mZX3DDyIRXzJnFbntw8swlmJgAHp88ZVmDKHWIqKRBLHSL7H4hvFdu3IOzvbXsNvzXul9CYQAKr06YFF6dACm8agEqiEbhVQBRRwgKrw54ipr+LMK7YftBHDlxHr5+fihfqgj692gDMzPTMBQCAgKxetNenDr3D0xMTJA3V1YM7N0OiRNZYfzURcieLTOOnjyHYQM6I0fWzJgxfy2ev3wD/4AAtGxUE80bVv+G6svX7zBlzgp4eHxCnlxZ4eXljRpVykSZ4b1x6z7mLdsEL6+vsDA3x4DebVGicD5s33sc9x89g7+fP968/yBjTbPvhyyZ0uLWg5eR9hNZvG17j+Ph4+e4++AJKpYpii5tGyG6nOYv34SLl27g2OaZimbS98M4PL+AiS8uhrlxcLoicMlS+fuNv3NHZMJ75PeLWLh6F9xcxyBpkkTYffgM9hw+E6nwWlomiPR+Cq/uYfp5AlB41Y4Vd2lQy1NLNAqvFmrq2lB41bHUGulnEN4zf17GyvW74DJ1OBIlTAjHmUtRrFBetGhUI8xrnzh1EZt2HoLLlGFImNASk2evQMZ0qdGrc3M4zliKDx4fMdV+EBImTIAFKzbD28cXQ/t1ktLba4gj1i6cLGszQ1+TZi1HhrSp0btLc9x7+BQDRznLNlGVNPSxnYy2zeug5q9lcez3P7F+20GscnXArgMn4bZ1P5bNtkeqlMnhumwTUiRLDJseLTDMcVGk/UQVb/22A3CZMhyZM6ZFdDmdOv8v1mzah4XTRyF7xmRap46mdqvf3cTJT89l22pJM6Fb6vya4oRvFFp4fzv9D5Zt2I8NC+yxYedxnLlwFQun2kLsxDDUYQE+f/HCpkXjI8zwinsiu5/Cq2Sofo4gFF6140ThVctTSzQKrxZq6tpQeNWx1BrpZxBepzkrkD1rJnRoWV++5vmLV7Fl9xHMnmQX5rWnzV2F3DmyoFWTWvL7f1++gWVuu7B45hgpvCJD275FPfkzf/8ABAQEwMLCXH7d1WYCRth0QaH8ucLEbNNzJJzGDkDunFnl9weOno6m9apGKby+vn4wMzOTpQ5v33ugc9+xOLhlvhTef6/8h4mjgmpWd+z7DQ8fPcXEET1Rt93QSPuJKp5gMW38QBkvupzEvUL2xRZcP7KGV+scjU670MIrmLfrOxG+fv7YuXIy+o+eI7csy5AuFQb2aIFB9vPkfrvp06T8Zh9esWgtsvszpU/DkoboDEZcuIfCq3YUKbxqeWqJRuHVQk1dGwqvOpZaI/0Mwjt2ynz8d+chrBIG7dkqRDVF8mRYNGN0mNcePckV1auUQZ1q5eX3b999hAnOi7Bx2TQpvKWKF0DD2lXkz0QZwOqNe/D+w0dZGiFKDZzHD0LhArnDxKzfxgar5k9EhnSp5ffHTlmA6pVLRym8v5/9B7sO/AY/Xz/4BwTi3sMnOLx1oRTem7cfYNSQ7jKW+PruvYeYNKo3Kja0jrSfqOL9d+s+Rtv2+N+zRY+T2LJr6ZoduP/wKXatdNQ6ddguFhNgDa/OwaHw6gQYrjmFVy1PLdEovFqoqWtD4VXHUmukn0F4Zy1ch+xZMqJl45pRvqbzvDXIleMXtPrffaJGdcX63VKMhfCWLl4QDWoH1Yv2tp0k76tbI+hkrc797DFyULdvhLd1jxGYOm6gzByLq//wqbKUIrKSBrGQrVM/eyycMRrZfsmI12/eo3N/++8Kb522thH2U6pYgWjHiy4nUb/71dsXQ/p2QNZ0SbROHbaLxQQovDoHh8KrEyCFVy1ABdG0Cu+9B0/gOHMZ1ixwlAtf8ufJjsIFcmHMJFeZTYpNV+hn1fpcYrHNwycvYNdf/36ZoZ9BCO/DJ08xatJiyZLXjyfwMwjv2QtXsG7LfsxytIWVVULsO3JK7qVar2alMMBEJnTjjkOYM8lO7uIwedYyZMuaCd3aNf5GeFt0G4Zp9gORN3c2/HbqAuYu2YCxQ3uhbMlCYWKKXRl+yZRB1vD+d/sB7MbNwtD+nSMV3gePn2HYBBdsXOIEc3NzrNqwG5t2HsbeDXNx6PjZSDO8Q8bNi7AfIfDRjRddTkL+C+bNiVZNa8WZkoYf/5sTu3uk8OocHwqvToAUXrUAFURTIbwiW5I3d3bkyZmFwhvDMRHCa5nAFE9efJDbO/H68QR+BuEVVMTuA4dPnBd7kyFzxnRSOsMvMBNbULlt2Y+TZ/6WW5iJ8oT+3VvDysryG+Hdc+h3Kcdi3tWqUlaezHXw+BnMnzYS6f9XviD6ffrsFZxcVuL9Bw8UzJdTxq1QpijqVK8Q6T68ItN85cZtpEqeFN07NMXaLfvh6+uL2tUqRCq8128/jbSf6MaLLqfrN+9huusa+UfB/rVOP37SsUeDE6Dw6kRM4dUJkMKrFqCCaCqEVyw8ER+3pkyZDOOmLkLd6hVw+MQ5+R/GIdYdUKZEUMYosu2CGrQbiHWLJstV2+IK/lr8B3bm/z7Kfe/+EdMnDMb5C1ewcsMefPX2RoZ0aTDGtgdSJP9WFMV/yMV/0JMlTYJfK5TEkRPnQjKo0dm2SCxombVgLcR/GNOmSSVlXnwEKjK8otZRZMM8Pn6Wi166dWiCCqWL4u79x2Ge17pLC0yfvxbiI9lbdx/Cw+Mz+vdqg70Hf5er4osUzA27fh3CZHgj2mZJwTAzRBQEfhbhjauDGJ9OWourYxgb34vCq3NUKLw6AVJ41QJUEE2F8AY/hvgoc8CIaRjSt6NcNCM+dj168jzmOg2PcrugyITX49NnDBo9HUP7dkb1KqXx5p07rIdOxoyJQ5Ar+y/YtvsYrt68i4kj+4Yh8ejpCwwZMxPLXcYhZYrkcJ67CjfvPpTCG91ti/Ye/gPH//gLMybaSrkePHqGXL1u27cjeg9xRLuWdVG7anm5TZPt2FlYt2gS3rl7hHlewcN66BTMmWwn206dsxL3Hj2TWyEFAmjdfTg2LJmET58/hZQ0iEU8obdZUjDEDPEdAhRe404RCq9x+cfV3im8OkeWwqsTIIVXLUAF0VQL7+DRM7Fn/Rz5ZGIVuKj/W7/EKcrtgqISXpuRzti7fq7c3kgItNg/U6wkF5fY1L5F12HYs2EuLMzNQmgIWb3wz3U4jg7a+ujCv9cxf/lmKbzR3bZo8uzlyJ8nR8jinxXrdsH942e0a14XA0ZMxc61s+TG/uIaPGYG2javi4zpUyP08wrhtRs/BztWB21sv2rjHnz89AWD+7SXX3ezGY+JI/ogQQLTMMIbepslBUPMEBTeWD0HKLyxenh+2oej8OocOgqvToAUXrUAFURTLbyhF60J4Qv+OqptlaIS3tGOrti0PGgR3OZdR7Bu635ZphB8eXp+lZnc1KlShHxPlCw8ff4aIwZ2ld+7efcRps5ZIYU3uts7jXSchxqVS4esYBd7nj559hr1a1WSsdwWTQ7pz95pASqWKYYC+XIg9POK97d3Woj1i6fIe9du3idPlrLu1lJ+3X2gA8YP64GEluZhhDf0NksKhpghKLyxeg5QeGP18Py0D0fhjcbQiQ2uJ85egyO/X0CSxFYY2qcNxNnS4qLwRgNgDG7htmQxgGWgW3+U8Ea1XVCjDoOxer6jXIAjamcbtR+EzcunQZQ0hBZocWKTODI1eNP6yJCIDK/Yjim41EHU/S5avU0Kb3S3LRKnSxXKlzPkJKslq7fjs6cXOrSsh37DnMJkeEXZRfuW9eQ+peGFX4vwht6n1EDDzrChCLCkwbjTQQjvZ/jgvPtr+SC/mCdBFvMft1VYXDl4wrijGPt6p/BGY0xcV+7A3QfPMG2sNR4/ewV75xVYN3+sXJxC4Y0GwBjcQuGNASwD3fqjhDeq7YK6DhgP236dULxwXlk36zxvNTYtm/qN8IpFbNZ2U+SWS79kTi8zt8dOnoNNr3Zh6IhSiuETXLDMZTxSJE+CKbOWy4VmQniju22R2IZMlE+IGt4vXzwxZOwMFCmYF0P7dZR1ucHHpoqN/Uc5zsPqhY54996dwmugeWrIsBReQ9L9fuz7Jh5o/Hg/3P19Qm6ek6YS2iTJ8/3GCu6g8CqAGAtDUHijMSi12gzF8lkjkD1Lhm/upvBGA2AMbqHwxgCWgW79UcIrHj+ybZXEHqBiK6X0aVOjeJG82Ln/hFzYJbZJCr+vr6hvXbl+N3x8fZDIygr9e7T+ZqN80dfqTXtx8NgZJE5kJTfa33XghNwJIqrnCI1YlB5Md12NG7cfIF3qFChWOB8+eHzCcJsuePTkOVyWbJS7NIhtjXp3boZSxQoidAmHiKW1pIEZXgNN9kjCUnh/LO/wvfV5dwL7Pz0K8+3kpglwI2uHH/JgFN6YYQ59hHFkLdfvOBbmCOKY9aDmbgrvdzh+/OyJqi0Gw866DcSAJbS0wMCeLVGjUgnZksKrZiIGR6HwquWpJZpW4dXSF9t8S4AnrRl/VlB4jTsGbV8fxmnPF988xI2s7ZHcNOgoZUNeP1p4fT0B9ydinxYgRRYTWCQy5Nupj+3n749Pnz2RMoLtIIN7o/Cq56454s27jyEGLfRlYW4ua3brdRiOgT1aoHfHRrh84x76DJ+JfWunIV2aFPjk5ae5Tzb8loCpCWBlaY4vX8nVWPMjkaUZfHwD4BcQ9A8wrx9LwNzUBBYWpvDyDvvv0Y99ivjdW5KE5vD09gN/BYwzDxo92o8/vjz/pvOPBXv/kAdKamX+Q/oRnbg/DsTvM/zg6xXUpYUVUKaHOTKVCNrxRc8l1h/ZT1+BS9fuIiAwECUK5YbjiB648+AZ7J2Xo2zx/Lj78Bk+fvLEmEGdUKpoXgQEBGLKXDec/usq/P39UbZEAdnG3MwMA8fORYG82XH91gO8fuuODOlSwWWiDf67+wjDJi7CoQ3T8ezlW4yashRv33sgICAArRpVle4khPffa3fg5+ePS9fvSn8SbTNlSKPnFWPUlhne/+ESdbleX73DwEuRLAkG9WqJio0H4Py+hUiaJOjPrh62zmjXrCbqVC2NT56+MQLOm6MmILaaSpjADJ4UXqNNFfEHh4+fP/z9477wjp6yGOVLFULTelV+OO9NO4/i3qPnGDskaOeI4MvMzAQJzM3g5f39P/pGOC5AjUqlUK9meeXPv37bYTx8+vKb51PeUSwMmNjKHJ5f/eVBKbx+PIGDno/R9tGRMB13SJ4HizNV/SEPkzSRxQ/pR3Rydr4fnl8KO88SpQYaOOt/hsMnL2DrvpNYNmOYOIwPsxZvRs0qpZDIyhIte43HYuehqFKuKE79eQVTXdfjwDpnHP3jIlxX7sS2pQ5Be4P3cUDfzk3QoGY5DBk/X66jWDZzOMxMTdGshz1G9G+P5MkShwjvZBc3udi4b5cm+PzFS655mjSiB/YcOYsFq3bCbf5Y5MqWCSMmLZayO6R3qx/GmsIbtwimowAAIABJREFUDdTlG/XH9uWOyPy/v0SE8HZqWRs1KpdkSUM0+MXkFpY0xISWYe6NTyUNjjOWonTxgrKm90dfYhHcwycv5Eltoa+YlDSIPY2rVCiJWlXLKX/8r1994B/gL2ue49vFkgbjjrjYpeHc15c46v4UHwO8UShBqh+2YE28+Y8sadjWK+KkWavl+oX3n6u3YTdxIRzsuqN8qYJyob24xCfa3YZMk4k8cYlPt4vV7IlTu1yRKkVSuTNO8L0TZq6S7tOnU2MpvCWL5EGX1nVlu4H282R5Z56cv4QI7+K1e3D24jUM798ehfJml/uli0tkeMX3FzgNkV+7bTuCG7cfYeqYH5O1F31SeKPxe+00bx28vvpggl1X/HfnMXoPm4H9btOQOmUyCm80+MXkFgpvTGgZ5t74Irymty/BYeNvyJovD/6+/B9evnqLIgVyY8zQnvLju8iOCw5/1G+n1g0xf/kmue2Z+AhQLGYb2r+TjBH6iupo4i+eXvIgDLEgLjDAHz07NEbVyt9K7MvX7zBlzgp4eHxCnlxZ5R6+NaqUkcIb3ecVAnv3wVP4+fvhybNXSJ0yORrWroyDx8/gybOX6NymEWr+WhZbdx+Vu9IIIR8/dRGyZ8uMoyfPYdiAznJBXly+KLzGHd34tA/vUQc/eDwNm+E1twKaueoXXjGKh0/+hQ07j+O/O49Qp2oZWbogfq9txs7Fsc2zQga6dL0+2LbMESlTJMWMhZtw694TmJmZ4vnLt+jQvJbM2ArhrVy2iCxTEFfw1/nzZA0RXl8/f6zefBD7jp3DB/dP6NqmHnq2byCF98qNe3C2tw4R4NBf/4gZR+GNBmUhu2OnLcOZC9ek5A7v3w7VK3LRWjTQxfgWCm+MkSlvENeF1/zcYSTYuhjw+oyx7hnw2swKTk6jYZYuM/oOm4yBvduhRJECkR4X/Nvpi2GO+hVbla3ZtC/keGBxlHLHlvXl0cehr8iOJhZCuXDlFnz8+AXDB3aFr89X9Bk2FROG9UGuHFnCxBB7AWdImxq9uzSXRxgPHOWMof06oUaVstF+XnFU8cYdh7B87ngktrJCp75jUap4QSm2V2/cxZzF67Fy3oQwwisy4R88PmKq/SAkTJhA+ZyLbQEpvMYdkfgkvDd2++PG3oAwwHPXMkXxdmH/YNY7Iu4en2W2t1LZwqhYujA6D5yCvw4slqdDij/GS9bpjdO7XbFw9S6Z4HMY1k3+0S5KEn7JmDbawhv6Oe8/foHuQ6ZhvtMQKbsUXr2jaOT23KVB7QBQeNXy1BItrguv1dBmMPH6ItEI4S2cwAuta5SDT9fhmOC8GBXLFEXhAnkiPS749Zv3CH/Ub+iPAIUwpk+bCh1a1g+DP7KjiYVotu05EuOH90Gh/LkgShqWuu0AYI6u7RqFidGm50g4jR2A3Dmzyu8PHD0dTetVRYG8OaP9vEJ4r1y/LfsTl639TDSrXx1VK5XCm3fu6DV4Inavm/ON8IqMcvsW9bRMqZ+uDYXXuEMWn4RXkH54JgBvbgVledPmM0H2SqZKBmDd9qNyq8T+3ZrJeEJec2fPjAqlC6GNtQNmjOuLutXKYs+RM1i+fj/2rHGSWdvihXKjW9t6uPfwGaxHzkaDGuUw1LpNtDK8wxwXoWndyqhSrgi+evugVe8JmDa2Dy5fp/AqGVRjBqHwqqVP4VXLU0u0uCy8Jm9fwmpc5xAsQnjLJfiCRsVz4KvtLATX9IqP7yM7LtjH1w+hj/oVewMvXbMD9x8+lR8BvnrzXkpox9YNwuCP7GhiIbwN2w9CsiSJYGpmJjMu/n5+qFy+JAb0bBMmRv02Nlg1f6I8wU0K+5QFqF65NDJlTBft5xXCe/veo5Bjlu3Gz0brxrVQvkxRiIM8utqMx971c78R3lLFC6Bh7R+/uE/LHNbbhsKrl6C+9vFNePXRirz1e/dPGDttOW7fewJTM1MUyZ8Dk0f2xONnr2E7YT5qVCqJE2f/lf/mTBrRU9bnip0URjstg6WlBQrny4FqFYtjzNTlmDamD/YePfvdkoar/92XJ9O6f/wsF7Y1qVMRA7o3Z0mDoQb5R8al8KqlTeFVy1NLtLgsvIJHon61vyu8JYrmj/S44Fev3yP0QRCifverty+G9O0gPwKcucANGdOl/kZ4IzuaWAivOFlu/LDesoQhqkVrrXuMwNRxA5H7f6UO/YdPlUcdi8xwZMcbh39ercJrrMV9Wuaw3jYUXr0E9bWn8Orj973WYtGayOSKbcTi08UaXp2jTeHVCTBccwqvWp5aosV14U04xw6mt68EZUj/l+Gt19cafhXqhmR469eqFOlxwb/9cSGM8IqscMG8OdGqaS154toYkXWtVBq9OjcPgz+yo4mF8C5avQ0+X70xyLoDzEyBFet3oULZksifO1uYGGJXhl8yZZA1vP/dfgC7cbMwtH9nucgssuONwz8vhff7vxUU3u8zMuQdFF5D0g3apYHCa1jGcTI6hVftsFJ41fLUEi2uCy88P8H83FGYXzkD+1v+KF2iAOpZB60cDr1NWWTHBQthDJ3hvX7zHqa7rpFHCufNlQ3lSxfBDNe1GDmoGyqVKxYyBFEdTezp9RWuyzbj+s27EJv4VCpbBD06t/xmp4enz17ByWWlLD0omC+n3Ce2QpmiqFO9QqTHG4d/Xgrv938rKLzfZ2TIOyi8hqRL4TUs3TgcncKrdnApvGp5aokW54VXC5Qf2CYm+/D+wMf6qboSUr9i/U4kS5oE/n7+KFIoD+z6d0ZCywRo1GEwOraqjyvX78g/HOrVrITmDavL9zt/4QpWbtgDX18fpEubGqOH9ECK5EnlH0JiN471i6cgXdpU8t6+w5zw+u177Fg9E+/eu8N53hr5v+YW5njz5j26tGuMZg2qheEmnkvsrhG897LNiGnImiVjSD311DkrcfW/u0iUyArPX7yC67SR+PfKLRw6cU7ukiGulMmToV71CrKfqGKF7vjY739izaa98PPzQ7FCQdvmPXv5WpbBiE8MxPX58xf5R5RYzCi4zJi/Fs9fvoF/QABaNqoJ8amHzUhniBMMHj19gWy/ZARMTDDfeSQ6WI+B69QRyJwxnZJ5QuFVgpFBwhFgSYPOKUHh1QkwXHMKr1qeWqJReLVQU9eGwqufZeisttgXVIhdl7aN8GuFEmjWeahcfCfKQtw9PqFL//FYMW+C7NR66GTMmDgEFUvkxsK1+3Hlxh1MHNlXCu/T56/lASVCYsVuFsMnzIFYsCiEd+X63Xj24hXGDQva+WKayyrkz5sjSuE9+9dlzJy/Vi4WHDEw6LS9QaOno3vHpihROF+Yum7xs+VuO+U9waUyoeU5oljBFMXezf1HTMUC51FIlyYVJjgvkjXf4pOIMZNcsXHZNHnrgaOn5V7SQngXrNgst6oSW94J6e01xBFrF06WJ2iJ7zdqPwj7Ns4LOZygRbdhFF7905YRDEyAwqsTMIVXJ0AKr1qACqJReBVA1BGCwqsD3v+ahhZeIWhCeEVWVYieEN5ZjrYhexzb2s+SYvrps6fM4jqPHwRR0vDkpQeadrbDng1z5Q4YmTKklQd2TBs/EGJP5cdPX+D4qQtSeNdvPYCbdx9i4sh+8mSp7wnv0H4dIfZrFgsB3753DxHeFl2HYfHssUiXOmW0hTeyWMEU9x89hT8vXoPj6H7yW+IEPfGMIsMbmfD6+wcgICAAFhbmsk1XmwkYYdNF8qPw6p+fjGAcAhRendwpvDoBUnjVAlQQjcKrAKKOEBReHfBCCe/aTXuRNm0qvHn7AaWLF8Bwm65S4ITwLp419v+3dnNaiAqli0Ccdrdu635ZBmFmaoKAgEB88fyK5S7jsGDFFlQsWwwbtx+Cq/NITJmzEi0bVsfkOSuk8IpM7wzXNbh+6z4yZ0iL56/eonPrhhFmeO8/eorihfPhxq17yJntF1y7eU8K79v3HvLwkJ1rg06/Cr1zh/g6ogxvZLFCE9y86wgePXkRItXBP3vw+Fmkwnv3wROs3rgH7z98lFvtiVP8xB8ChQvkjlR4RfbYwswUFgksZMmIntP4WNKg/3eAEb4lQOHVOSsovDoBUnjVAlQQjcKrAKKOEBReHfBCCW/wwkKRrXScsQQF8uVEu+Z1pfA6OwxGvlxBO2CIwztaNa4FX19fnDr3DyaO6iczvG89vOEfEHQYgChpEMJ758ET5M2ZFRt3HMb0CYPQy3aSFF5xuS7bhERWCdGzU7MoM7wPnzzHzTsPMdXeBucuXAkR3t/P/I39x05j+oTB0RbeyGKFJnjo+BmcOn8JU8YOkN8Wci6yvF88PSMV3t62k9CqcU3UrVFRtuncz14uwoxKeINreP/655qs/926UvuWVxRe/b8DjEDhVT4HKLxqkbKGVy1PLdEovFqoqWnjcd8Ez46byg3bAy38kbFyIJLnDJIuXtEnEH5nCrEYTBzOIU6uE8Jbu1p5eajHsxdv0GfoJLgtnCSDW9tNwZxJdihVOBtOXbyFIyfOwaZXuxDhTZs6JZat3YGC+YPkOVh4xRZxk2ctw3KXCbCysoxSeDduP4gGtavIZxF1s8EZXnkSX67scns7cUUnwxtZrNCkRL2xyBy7TBmGLJkzwGnOcnlSX1Q1vKImd5r9QOTNnQ2/nbqAuUs2YOzQXihbstB3SxouXbuNSbOWYfuqGdEfsHB3Ung1o2PDKAgww6tzelB4dQIM15zCq5anlmgUXi3U9Lfxfm+Cv53NwgQyTwgUG+wPy1SU3pgQFsK7asNupEqZXNai/pIpvcxQJkuaWApv+5b1pMh9+vQFbZvXRdP6VWV4cWS0WIDm7++LhAmt0K97K5nVDM7wVq9cBm16jcTYoT2R/ZeMUni3rHBG/2FT0aFlPVSrXFrGiaqG123rfinYIhscLLxpUqfEll2HIYTa0tJSxhC7NKRNkwpLZtvL3SUiKmmIKFbwArjQvH4/+zcWr94myzRKFMknF6NFVcO759Dv2LjjEJInS4paVcrKrPDB42cwf9pIpEiRLMJFaymTJYW5uZnMivfo2FQe0a31ovBqJcd2URGg8OqcHxRenQApvGoBKohG4VUAUUOI56dM8XCf6TctszcKQKYqARoisklEBITwLnUZJxeGRXb96H14xT7O5UoVQdWKJcM8UpueI7Fm/kRYWSWMV4NJ4VUz3NduPcCwiYvi3YlqkdGj8OqcVxRenQApvGoBKohG4VUAUUOIJ0dN8eTYt8KbpVYAstSm8GpAGmETCq8qkoaLE++E1+cL8OFxENCUWYEEiZXA9fP3l7uPpEyeVEm8nz0IhVfnCFJ4dQKk8KoFqCAahVcBRA0hRP3u9SVhSxpEmGKD/JA4s4aAbELh/UnnQLwS3vePgMOTAV/PoNGySARUsgayBpXH6LlCZ3hFOcuUuW44/ddV+Pv7o2yJAnAc0UOe5th35GzkzpEZt+4+gcenz8ibMwsm2HWDhbkZtu37HSs2HoCQ50zpU2PaWGtkTJcKa7cexq17T+Dn54+Xb97D08sbcx1tkClDGnz+4oXJc91w+fo92VefTo3RqlFV+Pr6wX76Cly6dhcBgYEoUSi3fAZRsnPy7CW4LNsGr6/e+CVjWswY3w+pUqgVdQqvntkk6qzeeemMwOahCbCG1/jzgcJrvDF4sNcUL07/f5aX2V3jjMWPLmkwzlvG3l7jlfCemA08+TvsYCROA7Scq3uAQgvv0T8uwnXlTmxb6gCxIqB1Hwf07dwEDWqWw8Cxc/He/RPWzBsNUxNTdLKZjI4ta6NCqUKo0doW+92mIXOGNBg3fSXMzUylDK/fcQwL1+zC7lVT5IEkk13ckCSxFYb0boWpruvh7vEZTqN7ywxza2sHuE4ehEdPX2HrvpNYNmOYOLAPsxZvRs0qpWTs5j3sscplFPLlyoLVmw/h76u3ZRuVF4VXJ00Kr06A4ZpTeNXy1BKNwquFmro2Ylsy0y8W8ErgrS4oI8WIAIU3RriU3xyvhHdtx4j5dVmvm2v4Gl5xaIhlAgsZd8LMVVI0RfZVCG+Z4vnRpXVd+TPXlTuksI6z7YKv3j4yAyuufcfOYdeh01g+c7gU3vN/X4frlKBt9Ny2HcGN248wdUxvVG0xGC6ONihROI/82YxFm2BlaYmKZQrBbuJCONh1R/lSBUOeZcvekzjy+wUZV1yeXl9RodEAXDy8VGaZVV0UXp0kKbw6AVJ41QJUEI3CqwCijhDch1cHPEVNjSW8Zl9MkPSGBcy/mMg3+ZzHD18z+yt6q58nTLwS3r2j/79+N3iILKyA9st1D1ho4fX49AUzFm6SZQjiMJHnL9+iQ/Na6NuliRTeGpVLonn9KrLPVZsO4sadh5hu3xeL3fbg5JlLMDEBPD55yrKGFbNHSOG9cuMenO2tZZvQX5es0xvJkyWGmVmQrIpShrrVymLMoI44fPIvbNh5HP/deYQ6VctgzKBO2LjrOBat2YUUoWqNRVnE3jVOSJs6hW4OwQEovDpRUnh1AqTwqgWoIBqFVwFEHSEovDrgKWpqDOE18QXSHU0IIb2hr7fVvOGTNn4tWoxXwnt5O3B5R9iZW6AuUKaL7tkcWnhF/a7XVx84DOsm63btnVfIWtlg4S1ZJC+6t6sv+5yzdKs8ZVDU+S5cvQturmOQNEki7D58BnsOn/mu8NbrMEJmePPnzhrpO4gMssj2VipbGGlTpZAZ3uBsse4XjyQAhVcnWQqvToAUXrUAFUSj8CqAqCMEhVcHPEVNjSG8Cd6YIs3JoD14Q19f8vjBo7ivojf7OcLEK+EVQ3LvD+DljaDByVAQyPWrkoEKLbxDxs9H8UK50a1tPdx7+AzWI2ejQY1yGGrdRmZ437z3wGqXUbLfNtYTMaBbU7x9/xFnLlzFwqm2+PjZE0MdFsgFaZsWjY8yw+u8YCO+fvXG+KFd4ecfgNlLtqBBzfK4fP0uPD5+Rv9uzWQ/QrpzZ8+MxnUqyhpeN9exyJ4lA67efIA9h09j7ODOSjgEB6Hw6sRJ4dUJkMKrFqCCaBReBRB1hKDw6oCnqGlsEl7PbP5wL+uj6M1+jjDxTngNNCyhhfffa3cw2mkZLC0tUDhfDlSrWBxjpi7HtDF9sOvQKWTLkgF/X7mNV2/eo1KZInCw6wZRBtF/9By58CxDulQY2KMFBtnPk4KaKX2aSEsaRHZYLGL75+pt+WaVyxbB6EEd8fGTJ8ZOW47b957A1MwURfLnwOSRPeUhLL+fuywzy94+PkiSOBFGD+wAkXVWeVF4ddKk8OoESOFVC1BBNAqvAog6QlB4dcBT1NQYwitKGdIf+PaACY9ivviS10/Rm/0cYSi8asYpugdPiAyvqKcVIhuXLwqvztGl8OoESOFVC1BBNAqvAog6QlB4dcBT1NQYwisePdFDMyS/lACinldconZX1PDGt4vCq2bExZ67Mxdtxq5Vk6MMSOFVwzvOR6Hwqh1ibkumlqeWaBReLdTUtaHwqmOpNZKxhDf4eS0+mMAvSSACg3aQincXhVf/kJ//+wZsJ8yHdZcm6NamHoUXADO8OucVhVcnwHDNKbxqeWqJRuHVQk1dGwqvOpZaIxlbeLU+d1xpR+GNKyMZu96DwqtzPCi8OgFSeNUCVBCNwqsAoo4QFF4d8BQ1pfAqAqkxDIVXIzg2i5KAwYRXnNv8/NVbeeRc8CkdwU8iTu4QK/LqVivz0w8PhVftEDLDq5anlmgUXi3U1LWh8KpjqTUShVcrOTXtKLxqODJKWAIGEd6bdx/DZowLXrx+L2VXbGzcu2OjkJ5fvnmPmq2H4vrJ1T/9eFB41Q4hhVctTy3RKLxaqKlrQ+FVx1JrJAqvVnJq2lF41XBklB8gvF0GOSFjutQY2LMFXr/9AIdZa1CuRP6QTYQpvJyGkRGg8Bp/blB4jTsGFF7j8he9U3iNOwYUXuPyj6u9GyTDW6a+NbYvn4SsmdNJbmLT4k4Dp6BJnUro2b4BKLxxdTrpfy8Kr36GeiNQePUS1NeewquPn4rWFF4VFLXHoPBqZ8eWkRMwiPBWbTEY852GyFM0gq8Xr96hXT9HeYxduZIFWNLAWRkhgfggvId/O4u6NYI2+G7ccTBWzHNAutQplc+I0P3EJHhEwtus81AsdRlnkOeMybPFh3spvMYfZQqvcceAwmtc/nG1d4MIrzhS7q9LNzHapgMqlC4Uwk7U9vYZPhNVyhXFrkOnWcMbV2eVjveK68IbGBiItr1GYcsKZ0npg/tHJE+WFKamJjqofds0fD8xCU7hjQkt9fdSeP+PvfOAqurYwvBPU7GhiL1Ho7HFFFssMbH32HsvqIhdsIOiIioq9m7s3dhrTNRnbNEkxt4b9g5Ib2/NoIRL0Xvn7OuFyz5rvfUCzN5zzjeDfu47Z4aeqaEZWXgNJUbbnoWXlqfWbEkdTKHvSW5a+6eKN4rwBgWHYtr89fIe3Yd21blX30fPMGnWGhw7fZ6Fl2oUzSiPuQuv+5SFOPHnvyiYPw88xzijx8BxssIb4P8WU+euwrdlS+Dazbvw83sLp56tsWvfUTx68hxlShaFc8+2cqRPnTmP5et2IiQ0FLlyOGDU4O7IYpdJZxbE7+dtYBBmLVoHP/+3SJvGBl3bN8F35b5MMHM27/gV+377A1GR0bCzy4ThA7oiT67siFvh/VD/67buw8HDpxAeEYFK35aBU/fWsLKyRKP2A9GhZX2cv3QDr177oV7NKmjW8Eczmrl0j8LCS8dSNRMLryo5mrjUJrx+UcDl4EgJr6StFewsaThSZUlKeCMiI+WS1azx/v6h6pc6j1GEV5+bFFKc3jatPk2TdRvepYF2eMxdeP38A9DOcRT2bpgjwb1f0hAYGITeQyZh5sShKPVFEUyeuRy37j3E/KkjEA2gVTcXrJg7HpFR0eg9ZCKmjR+EIoXyYcuOQ7hw9SbGD++jMxBx+xFbBPYa5IG2LeqidvVKuHX3AQaPno41CyYgc+aMsXEippvzOOxd541oCyvsOngcYgvBJvWqxwqvBSyS7P/46X+xfO12+Ex2Qfp06eDhvRhlSxVD80Y1ZHzD2tXQq3MzvPELQGcnNyyb7Y7s2bLQTiAzyMbCa/pBZOE17RikJuG9GBKFlreD4B8VwzyzJTAzXzrUz2xNMghbdh/FsvV7IeQ0T85s8BrdG7lz2GPl5gO4cfsBrty4hxpVvkbfLk0xadZqiOOIIyMjUeHrEvBw7Q5rKysI4S2UPzdOnL2I5y/foEr5MvBw6YZrt30xbPwC7F83FeJTRXGM8e5DJ2FjbYX2zWuhe9sGJM9AlcRkwkv1AKbOw8JLOwKpWXiHus3ELyu8JdCf1++Ef0AgBjq2k193dXbDmCE9cfXmPRw79Q+muA2Q3w8ODkHzLsOwc90s+YfM+yuu8D58/Bz9XCdj26rpsLCIWToxcNQ0tGlWF5XL/1flFXLbrtdIDOjRAt9V+ArpbNPH5ntf4f3zr4tJ9j9tzgoUKpAH7VvUl3Gnzl7Aph0HMWPCUCm80z0Go0jh/PJng8dMR9MGP6B65W9pJ5AZZGPhNf0gsvCadgxSk/B2uxeCAwEROsDz2Vjgz+IZNA/CqzcBqNFqMPas9kLeXA4YO3U5rK0s5Sfva385hIWrdmDtvLFyg4Ff/3cWc5Zvw5bF42KKLI7j0KdTEzSoWVEK76OnL7HCZwSsra3Rps94OHZohEIFcsUK7+5fT2LN1oNYMWskQkPD0bT7aMwc74yvShXV/BxUCVh4NZJk4dUIMF54ahbeMZ7zsXbhJElk1cbdCA4ORe+uLeTX3fqPw4hB3XDuwjWs2bwHmTP9V5kNCgrBUp+xyGb/X7U0rvBevn4Hk2cuw+oFE2Npj/Gch8rly6JB7ao6I3D95j1s23MIJ/+6hGKfFcQAx3bIlydHbIX38LEzSfY/Y8EaXLlxF7bpYj65iYqKQha7zFgwbaSMXzh9NHLlyCZ/NtpzPr4rVwaN6lSjnUBmkI2F1/SDyMJr2jFITcKb5+LbRGE/Kv3fn/FaRkMUMt4f/iWqr+L9qaXeLlJ4j5w4hyXew2LTh4aFyyVv4nL3/llKsmPHxlJ4y5Yqip7tG8qfzVq6VS5laFq/aqzwuk5YiFJfFEaXVnVlm7eBwfLvArGkLblcLLwaR4KFVyNAFl65hlcsadBHeH0fPMGxk39j/Ii+HwQfV3gfP32BvsM8dSq8A0ZORbsW9RJdxyteWnvlF4Qla3bizv1HmDS6X6zwnr94Pcn+p89fIz/2atG4ZoJ7E8I7ZdxAFC9SUP6s/8ipaNm4FqpX/oZ2AplBNhZe0w8iC69pxyA1CW+tm0G4HPJuPcM77JksgWsltQuvWGawcPVOHDl+DuLDPb+AILmsYdkMVym8/166ialjY5bD+QUEYtr8Dbh2y1dK6qMnL9C+WS15cJgQ3hpVv0Gz+jEFip837JNLITq3rhsrvH2GT0fdHyrEtjHtDEq8d6MK7617j1CkYJ4EPYt/RVy8egffflksOTIx6J5YeA3C9dHG5l7hFS+Pteg6DNtXzYStbVqdNbz6CG92+yzoPXQSZk4Yinx5c8olDoeOnIx9oe094Lj9pEuXRq4PbtOsDmp+XwGiijvCYzZWzPdA5oz/fWwmKsGbth+At5sTwiOBnQf+wP9OncOkUU6xwmttaZlk/yfOnMeaTXvk0gVb23TYffCY/PhMvKAmhLf2D5XQr0driCUWjkMmYPX8CbDPavfROZHaGrDwmn7EWXhNOwapSXi9n4VhxrMwHeA9s9nAI7f2d5wOHj2L+Su2Y/WcUciUMT12HDiOnQeOxwrv+cu3MGVMb9m3WL8bHBKGccO6ynW7Y6YsQ77c2WOF99svi6Nrm3qyrc+SLQgKDkGTulVihXeE52IU+yxf7Lpdcd6Cbdq0sMusfWkG1Ww0qvCWq+eIs/sXJ7jX134BqNV6KP46kPBnVA/2qfKw8NKSNnfhFbSGe8y3FABJAAAgAElEQVSW0il2aXAd72NQhVdUSMXa2OVrdyAsPAzpbW3h1L0VSpdIuE4qbj/iBVGfRevlLg1p0tigV6em+LZsSZ3Bi4yMwuJVW3HyT1ENsESWLJkxpG8HuaOEzi4NH+hf7NJw4PApIDoaeXPnwBCnTnCwt5PxoqL8+7EzCAgIlOuHf6pfnXbymEk2Fl7TDyQLr2nHIDUJryC98XUETgTGrOOtnMEabbLSvLAmqrjHz1zA/MmD4f82CEPGzZNLDTYscJMV3rjCO8htrlxvK6T21t2H6D18BhrUqCjPThAV3uev/OQaXnG17j0e/bo2Rd7cDrHCu//wn1i0eidWzR6FqOhotHYcJ2Xa7Nfwbtp1BJt3HZEl7xKfx3yEGfd68eoN0qZJI9/sS+kXCy/tCKYG4aUlRp/NGCet8cEV+o8TC6/+rIzVkoXXWGT1y5vahFc/Koa3Ei+tOY2cKdfb5sphj/7dm2PAmNloXKcy8uR00BHefy7ewEjPJUib1galixfGD5W/wqjJS+E1yhGbdx+RB4n9ceYinr94jcrlS8NtSBeIsxXi7tIg1vaKtmIdcMcWtVPHLg2iLP7PxetwGjFT/usg/pUuXVp5+ITYGiOlXyy8tCPIwkvLUyUbC68KNboYFl46lqqZWHhVydHEsfDScOQsugSMuqTh5NlLOietmSN8Fl7aUWXhpeWpko2FV4UaXQwLLx1L1UwsvKrkaOJYeGk4cpZPKLxirci2fcdw+/5jhIbqLsoWt+E5sleKHw8WXtohZOGl5amSzRjCq3IfqTWGhdf0I8/Ca9oxYOE1LX9z7d2oFd6+I2biru8TfFniM/miTPxrgmv3FM+VhZd2CFl4aXnGz/b4CXD1Wsy+iF8Uj0LuXAn7S83Ce/vewySPYBYv3M1evB4O2bLKo5MD3gbGHhSS1M+27z0iT7Yb6tRRgnZ29UKB/Lnh2r+LDnjRbtnabXJ/ZfHyoNjBpr9jB7l/5oeOZU7qKGePaYvlASFiX+cc2WOWjvUZ5olnL17Je3756g2mzF4p/9/axhrPn79C57aN5WEgcS9x+In33FW4cuOO3NGjT7eWKP91KYj8l6/dRsZ3u3w8ePQEC7xHoXCBvNj76x/YuONXeVpTzuz2GD6gG548fYHZSzYgOCREnrSXO2d2FCqQWx43PWrCHKxf4mXciW9gdhZeA4ERN2fhJQbK6SQBowqvOOFj75opsZsemyNzFl7aUWXhpeUZN9s/5yywbed/p7GJn7VrHYUSX+juAZlahfdjRzCv/2U/Xr32f7e12jO5l/D7k/GS+llc4T3x579SHiuV/zJR4b16/Y48XMTSIhq9Bk9Ch1YN8f13Xyd5LLPY6SOpo5yFkD549EweLCIkVhwH6uI+E/7vJF3s8vHw8VOMHeYop4iXz8/4oljhBMIrDhMRLxiLnUCuvdvObuOyKZgy62eU+6pk7MEl7XqNgOfY/shqlxnte4/C8tnj5CEjYm9ma0sLDOzTQfbz59+XsHrTbszxGi6/vnP/IQuv8X7lU2xmFt4UO3TJ+saNKrwterph61KPZA1A682x8GolqBvPwkvLM262GbOs8MYv5mjh91euXICTo+6xlqlVeD92BLOQvwL5cqNl45p4+FhXeJP62XvhFdu79XP1kpIodqlJrML7XngRHYleQyZhUO8OKPVFkSSPZT5++lySRzkL4c2TKztu3nkAL7f+2HXgf7j/4DF+O3ZGSvrazXtx9eZdjB/eF5aWFkkKb9ueIzBxlBOKflZAThkhzKLSK/InJryiwhv3ZKffjv2Jg4dPxR6FzcJrvN9vc8rMwmtOo5l8nsWowvvL3v/h3oOn6NG+ITJnTJ98nvrdnYSHR2D8jJU4ePQMMmawxRDH1mhU+7sE99m2rweu3rgHeVQJIJ/lf9tmy/9m4aUdVhZeWp5xs7l5JL63o4cbC6/g9LEjmIe5zZSyKyq08YU3qZ8J4b197wG+Kl0cl6/dwmcF8+Hi1VuJCu+qDbuQPbs9Xrx4je/Kl8LA3p1gY2Od5LHMJ8/8m+RRzkJIK1coi/Vb92POlOGYNHM5WjT8ERNnLpPCK8R12pyVuHTtNvLmyo5HT1+gU6uGCSq8DdsNwLJZ7rFHQr+fT0kJb6H8ebB2y16cOnNB/nHpHxiMnA72mDpuoAxNTHj7uUxGkcL5ER0VLQ8iEcsmhKyb8uIlDaakD7Dwmpa/ufZuVOGt03YYnr18AyGWYi3aO1+MZZnYoRSfEvSc5b/g5p2H8BrdG/cfPpUni6yZOzr2LOn399Kw0wjM8uiPooXzJrg9Fl7aEWPhpeUZN1tiFd6cOYF+vVl4BaePHcHcpucI+Ewahtw5HRIIb1I/E8J71/cRrt64i8ljnHHyzPkkhfd9hdfaEhg/bTGKfFYQbZvVlcKb2LHMZ89dTvIo5/fCe+OOL4p9VgDrfzmAqe4D0HPwhNhlGHOWbEB623To0bFpkhXe9o6j4ObaG18UjdlP3ffhE+TMng1eSSxp8H34TJ62N2PiEGTMkB4Hj5zCoSOnPyi8cdfwLlm1DU9fvMSYIT2N94ugR2YWXj0gGbEJC68R4abi1EYV3sMn/oG1VdInhlSrWMak6Gu1HoKl011RKH8ib+7EubPqzQdi4yJ35Hr38kfcm2bhpR1CFl5annGz8RreD7MV584ndQSzeLlr1MS5WL94skwSt8Ir16Em8TMhvOu37kOD2tXQpW0j+UJXUhXe98IrdmnwnLkcDg4OMiapY5nFsdJJHeX8XnizZ8uKJat+QckvPpPy/F54r1y/g4nTl2Cpj7s84jqpNbyzFq+XBYvBfTrg9l1fDPcQL5hNTnIN778Xb+DsuUuYOKofAgKDMHH6UgQFBceu2f3YkoZVG3fjnu+j2LXFxvtt+HBmFl5TkY/pl4XXtPzNtXejCu97aOIPzKcvXstzmZPLJY7ZEyI7tHdrecReurQ26N+jBWpU+TrBLX5dpxe+r/glxEkk4pjUQb1a4vtKZWW7Z29CkssjmcV9WFlawC5jGrzyDzWL50luD/HqjQWuXIm5qxIlAPss0QluMUvGNAgKiUBYhO7LbMntWYxxP3fvP8KMBevgF/AWaWxs0LtLM+RwsMdQdx90b98E9WtWjhVeJ9cpmDPZJcmf7Vg9Hb/sOYxVG/dg3cKJSJ8+HXYf/AMXr9zEiIFddW5ftFu2dgeyZbWDeHlO/CNcrPPNnCkDGrUfLHcz+O1/f8qdIdo2r4tm73ZTWLNlH/b/dhJC1vPlyQGXfp3gkC0L3KcsRtWKZVGjWnm06OaKscN6onD+3Og2wANbV0yF42BPdGxVHzWqlZP3MWnGcpQoXhjNG/6oc19v3wbBa/ZKXLh8E3Z2GdG/ZxuU/7qkzC/+v1GdqrJ9qx4jMMWtP7JmyYxRk+YjMDAI2R2yonu7JhjrtRC1f6iAvl1b4vRfl7Bi424smBrz0prYFaP3EE8UzJ8bkdFRyGCbDq7OnVEg34eLEMYY+7g5HTKnxauAMHlEKl+fnoBtWmv5smNAcPin7xxAjizpTNIvd2pcAkYVXnHi2kSfVdj960lEREbi0pEVEEfdDR0/D9PG9pXyaOxLHH0n+o572VhbyzW79dq7yKP2enVohH8v34Kjizd2r/JCDocssc3FXz5jpy5DvR8r4rtyJXH0xL8Y4bkIu1ZNlhXfiEj+A5FyDMWyF0sLC0RGMVdKrobkEv/oEH/R89/1hlCjaxv/d6BKEydsXTYx0U+Y6HrlTHEJWFlZyH948O+AaeaFpXhdxgKIMtG/ucUnjeZ83bjzQPrO4S0+CR7z5w375NkJ5rBtbPyHM6rwijWxYjscp65N0d5pghTeoOBQeMxciYiISHi79TX6nBL3EByiWy3MkjkjBvRsgcqN++HU7vnI9O6Fuu6Dp6Bt05qoUz2m6pHU1W2wF1o0rI5Gtb7jl9aIR5CXNBADVUiXWndpUEBllJD4B0+IJQ2LfcYiR7asRumPkyYkwEsaTDsrUt2ShqBQ4MGLGOj5HID0aY06AB8SXlGoFHtoi6KguV1GFd6KDfti/7qpyGqXCaV+6CqFV1xiOUHDjsNxbPsck/Ks1MhJbpuWN5eDvA8hvB1b1EaNqt/E3pcQdDE5ypYsEvu9js6T0KllHdT9oTwLL/EIsvASA1VIx8KrAI0whIWXEKZiKhZeRXBEYalKeH2fA9N/AYLfnUZrmwboWhv46jMSmrsOnoB4QV8cllPhqxKycnvv4VM4jfRBs/rV5Gm4YknUuKFdUbVCGcSt8PYfPQslihXCpWt38OzFG+TKYQ+f8c6wsrLEkRPn4LNkiywoiuWq09z6wj5LJjx88gIjJi3Gi1d+iIqKQstG1eWn6OJavGYXtu//A2HhEfjhu68wsn8HmetTXUYVXlFBPbzVR+56EFd4xbKGOm2HwtS7NHjOXgPxrxn3oV1w5cZ99Bo2DXtWeyFb1szYfegkKn1TEtZWVqjddhhmTXBG5XKlcez0ebhMWBjbjl9ao52qLLy0PFWysfCqUKOL4aOF6ViqZmLhVSVHE5eqhHf+buDfO7rgsmUCPHXX+auQFfLZytEdmxaNQ+4c2dB/zCx8Xfpz/FD5K7RyHIfxw7rhp7pVsGnXEezY/wfWzhujI7yD3ObK9xmWeLvAytISTbuPgatTOxQtlBfNuo/Bzz4jULxIfqzYuB9/XbiOORMHYKLParlctU/nJngbGCx3vxKS/ec/V+GzZDPWzh8r1+oPcp+LCl99IYuHn+oyqvCKfx3kyeWAwY6t8G1dR1nhffz0JSbOWi3XRy3wGvypnjPRfoTsjvZaguNnLkrJdXFqix8rx7y09n2zAfDxcMY3ZYrh6Ml/4b1gg9xiTVSDXfu1kzIsLhZe2iFk4aXlqZKNhVeFGl0MCy8dS9VMLLyq5GjiUpXw9k7ik+5F/TXD3Lz7iHzvaK5nzD7YwnnEOxqiwtveaSLO7Fsovy/edXIe5YNDm2YkEN5vynyOzq3qynb9x8yWL/aHR0TK8wuWervI7wcFh+C7Rv1w9sBiLFu3ByfOXoSLUzuUKlZIHmwjLpcJC/B54Xxw7NhYfi28atn6PVg1e5Tm59Q3gVGF9/GzV3AcNg33Hz6TL46JtbIBb4NQpsRnmOHuJGU4pV8svLQjyMJLy1MlGwuvCjW6GBXhtQq0QKbLNrAOjPnLJThvJAI/191fme4OzT8TC69pxzhVCe+E9f+t332PXSxr8OmteRCWrd+LW3cfwnNkL51c8dfwxv067pIGUeEVyxzEsgRxvf/aLyAQC1ZuRxa7TLF5RTV310pP+b0VG/fJT8lfvwlAl9b10KNdA/QZPh3nr9yWe3+LSyx3sM+SGVuWjNf8nPomMKrwipuIjIzCuUs35cEO4vCJAnlzolTxQvreX7Jvx8JLO0QsvLQ8VbKx8KpQo4tREV6HI2mR5rnuWji/suEILMbSqzIyLLwq1OhiUpXw7joN7P5TF16NskCb7zUDFafdHjx6FgunDJG5hKiK95LeBgbp7NJgqPCKZaqiwjtnUkzlOKlL7PbQbZAX5noOwqadh/F54byx1WLND6eQwOjCq3BPKSqEhZd2uFh4aXmqZGPhVaFGF2Oo8FqEA7m3J3yjOix7FF78wPtZq4wMC68KNbqYVCW8AtuJK8D1BzEAi+UDKpcggfn0+Ws06ToKa+eOQeECuTHMYz5KFisk1/DG3ZbMUOEV8WIN7+o5o+We4Reu3sHOA39g9MBOGOaxAD/VrQpxsFhIaBha9nKH12hH+dLbgpU7sHLWCFnlFeuGra0s0byBdrHXF5ZRhff67Qfy7cA79x/LB49/Hdo4Xd/7TLbtWHhph4aFl5anSjYWXhVqdDGGCq/NawtkP5Rwo3wWXvUxYeFVZ0cRmeqElwJaEjkOHPkTU+atl5+2V/q2JCa4xOzSoEV4xRIHsQZ35uLNCA0Lk8eIj+zfXr7zdOHKbYyfsRJv/N/KF92a1KmMft2aybsTuzRs2/eH3BWiYL6cmODaQ+fcAyNikKmNKrwterqhaOG8KF/2C7lTQ/yrcZ2YU4tS8sXCSzt6LLy0PFWysfCqUKOLMVR4Rc+iwisqvXGvoIKReFMhYaGB7k7NNxMLr2nHloXXtPzNtXejCm+99q5yH15zvlh4aUeXhZeWp0o2Fl4VanQxKsIr1u9mO542VnpFdfdllVBEJ6wz0N2oGWdi4TXt4LLwmpa/ufZuVOEVp6stmzEctunSmCs/3paMeGRZeImBKqRj4VWARhiiIrzvuxe7NURm4GO5tQ4HC69WgtriWXi18ePoxAkYVXgPHDmDbfv+h1aNfkSO7FkhzoiPe5UuXjjFjwtXeGmHkIWXlqdKNhZeFWp0MVqEl+4uUncmFl7Tjj8Lr2n5m2vvRhVecbrah673Rw2nZLgsvLSjx8JLy1MlGwuvCjW6GBZeOpaqmVh4VcnRxLHw0nDkLLoEjCq8gUEhsLa2SpJ5Yi+ypbQBYuGlHTEWXlqeKtlYeFWo0cWw8NKxVM3EwqtKjiaOhZeGI2f5hMIruhJH0J05dwWPnrxEaFi4PHii0jclYGNjbRZjwcJLO4wsvLQ8VbKx8KpQo4th4aVjqZqJhVeVHE0cCy8NR87yCYX35p2H8ji5F6/8kMMhq+z52YvXcMiWBStnjURePlqY52M8Aiy8pp8SLLymHQMWXtPyF72z8Jp2DFh4TcvfXHs36pKGLgMno8TnBTGgR/PY85PFMgexWfGjpy8wf/LgFM+VK7y0Q8jCS8tTJRsLrwo1uhgWXjqWqplYeFXJ0cSx8NJw5CyfsMJbqZETjv4yK8GhE8EhYajZejBO7JyX4seDhZd2CFl4aXmqZGPhVaFGF8PCS8dSNRMLryo5mjgWXhqOnOUTCm+NVoOxfr4bcmaPWc7w/hLnO7ftOx6Ht/ik+PFg4aUdQhZeWp4q2Vh4VajRxbDw0rFUzcTCq0qOJo6Fl4bjh7KEhIahy4DJePjkBbb/PBEO9naxzS9eu4Nh4xfIg8NWbT6AG3ceYoJrd+PflJF7MOqShkmzVuPfy7fQu2MTecSwOD/5xp0HWLhqJ74oWgCTRvQ08uMZPz0LLy1jFl5anirZWHhVqNHFsPDSsVTNxMKrSo4mLrUJb0R0CPwjnkp4ma1zwtoiHQ3ID2S5fvsBHF28cXjLTFjEOyQhIjISAW+DkNUuEwuvviMhli5MX7gRv+z9n9yhQVxp0tigYc1KGDWgQ+y6Xn3zJcd2LLy0o8LCS8tTJdt74d154A/UrVHZoBTuXgtQ7btvUKt6RYPiDG388PEzvH7jj9IlihoamqD91l2/4a7vYwx16qg5F0UCFl4KitpysPBq46c1OjUJr3/EE5x+tRJCesUlZPdLu5+QM+0XWjHK+C27j2LZ+r0QEpsnZzZ4je6NDOnTobXjODx59hIF8uXCSOf28F64URYmxSYDgx1bJVrhffL8FTr2m4gpY/rg69KfQxQ1//jzAiIjI1Hh6xLwcO0OaysrmWPU5CW4//AZIqOi0KVVXXRsURtXb96X3/++UlmIKvLjpy8xsn8HVK1QRlaaR0xaLGOjoqLQslF19OrQiITB+yRGrfC+70RUdsVDhIVHyN0abD6wNy/p032CZCy8tJBZeGl5qmQTwhsQFIamXVyxadkUg1J8KuHdsus3hIeHo13zegbdX2KNWXg1IzS7BCy8ph3S1CS8f73ZgGeh13SA21plwQ8OAzUPwqs3ARBLS/es9pK7Yo2duhzWVpZwH9pVyucgt7ly2YL45L1dXw94uPRAg5oVpYzGX9IwemBHdOrvic4t66Bxncr49X9nMWf5NmxZPA7iMPNWjuPQp1MTGe85ew3EkgkPl+7wffQMjbuMwsH13vALeItm3cdi8bShqFyuNMRpvCs37ce6+WMx0We1XFbRp3MTvA0Mxpgpy+QyikwZ02vm8MmE989/ruL343/j2Ys3sLS0kOt5a1X7Vv7rwBwuFl7aUWThpeWpkk0I74Cxs/HHqXMomD8PWjauhS27DmGpz9jYdH1dJqNTqwb4rFA+TJq5DH5+Afi8SAEEB4eiRrXyCSq8/gGBmLV4PW7e8YW1paVs06FVA9y644upc1fh27IlcO3mXfj5vYVTz9bYte8oHj15jjIli8K5Z1udx/j7wlVM9F4qD7Wp++N36NGxKdZt3YeDh08hPCIClb4tA6furWFlZakTJ6oZU2avwKs3/oiOikL9WlWkMMcV3lev/TBt7irZt6hMtGhUE80a/ijzXL52G7OXbEBwcAhsrK3Rr1cbfF26ODbtOIibt30RFh4OP/+3sLK0wshB3ZDNPosKfnCFVwkbaRALLylOg5OlJuHd93R8onzq53Q3mFtiAUI806VNI3+0+9BJbN//B5Z6uyQQ3ja9x+Ps/sXS0xIT3uCQUBTOnwv9ujWL7UZ8cv/+ADF375+lVDt2bIzIyChZpX1/3kL9DsPhObInMmawRUfnSTi9Z4HMIaTbeZQPDm2aIZe6njh7ES5O7VCqWCF5H9SXUSu8S9buxoKVO1CubHFZ2RUQHj55jnOXbmJI79bo2lp7dYYaiKH5WHgNJfbh9iy8tDxVsgnhffD0FVp0G4G9G+bIw2Pa9ByOaeMGoUihfHIvbcfBE2T1d8qclciVPRt6dW6GW3cfoP+IKRjSt2MC4Z21cC0ioqIxpG8HBAYFw3m4F5y6t0F2hyzoPWQSZk4cilJfFMHkmctx695DzJ86IqZq0M0FK+aOh33W/16oEM80Z8kGuZ+3ENbjp//F8rXb4TPZBenTpYOH92KULVUMzRvV0Hl8EWOfJbMUbXEP0+etxhCnjjjw+8nYJQ3zlm2Uy6/EMwjp7TnIA6vmx7zQ4Th4Ito0q4Oa31fAoaOnsXbLPvw8Z5wU5pUbdmPlvPHImiUzlqzahsDAIAzq20EFPwuvEjXaIBZeWp6GZktNwvvHy4UIeLd+9z0na4u0qJ1jhKHYErQXn64vXL0TR46fg1im6xcQJJc1LJvhmkB4ew3zxpGtMRsJxBfe+St3ICwsHKMHdkKLht/LNn4BgZg2fwOu3fKVxYVHT16gfbNaskIrRHb2sq14/tJP/uz6LV8sne4iq7Ux64Zj+hGV5fdfi79nVmzcJ6X89ZsAdGldDz3aNdDMIG4Cowpv5Sb9sHrOaBQpmEfnpo+dvgDXCQtwcvd80ocxRTIWXlrqLLy0PFWyxRdekUMIa8aMGWQ1dduew7h+6z6GD+iC1j2Gw3N0PxT9rIDsqv/IqfipXvUEwtvOcSQ8hvfB50UKynbL1+5AaHg46tX4DkPdZuKXFd7y+z+v3wlRDR7o2E5+3dXZDWOG9IzN//554gqv58xlKFQgD9q3qC9/fOrsBVl1nTFhqM7jr928F3+dvwLHLi1R7LMCsRWEuBXe+JWJLs7ucHXuLGU8PDwCVlZWMk4s0erUZzT2bZorhff8pesYP6Kv7E9UoOcv3YSls9xU8LPwKlGjDWLhpeVpaLbUJLw33h7BzcCjOogKpa+IEpm0FwQPHj2L+Su2Y/WcUVI2dxw4jp0HjicqvHFFNL7wHjlxDsOd26PHkKnYtMgdeXI5yPW74j2tccO6ynW7YglCvtzZpfD+1G20LGg2q19NPledtsPgNdrxg8IbF8Dt+4/RbZAX5noOQpkvChs6fZJsb1ThbdBxOPauSbgGUPxL4fvmA3GKhZdsIM0lEQuv6UcyMeH99+J1TJ27EmsXToKL+0y0bFILFb8tg/qtnfHz3PHIlSObvPHRk+bhx6rlEghvg7b9sWLOeOTIbi/bbdlxSC5vaNO8DsZ4zpd5xbVq4265LKJ31xby6279x2HEoG4o/k6UExPe0ZPm4sqNu7BNl1b+WHyUlsUuMxZMG6kDU1QQtuz8Fb8fOyOXHrRoXBNtmtbRWdIg7mnF+p149dpfViZu33uIKW4D5MtxR0/8je17f0dEeAQio6Jx664vDmyeL+NFddu1fxfZ37Vb9+DmOR8bDVz//P5meUmD6X8HWHhNOwapSXgF6QfB5/Aq7K6Ebp+mEPLZfkUyAGt/OYTjZy7IQ7783wZhyLh5cn3shgVuCSq8HxLe99uSiU/tT569JIV5sPs8fFWqKLq2qYdbdx+i9/AZaFCjovz0XhQ7l0xzQanihbDnt1MYP30Fprv3Q64cWZOs8A7zWICf6lZFtYpl5Prflr3cpSSXLp5ChFcskBbrdat/V1Zn8Dbu+B13fJ9ghHN7kkE1ZRKu8NLSZ+Gl5amSLTHhFR+Nte89CgN7tYP3/DVYv2SyfPm0VXdXTB7bH0UL55ddOblMlksJ4u/S0KH3KIwf3ie2UisqvGLNa90a32kW3unz16BQ/txSYPW97j98Ahe3mRg/0gmXrtyMXdLQa/AEtGxcM3Z3ik59x2D4gK7ImzsHOvYdg/nTRqJgvtx49vwVOjmNiRXevy9cw6RRTrL7M/9cwqKVv+isedb3vkQ7Fl5DaBmnLQuvcbjqmzW1Ca++XAxtJ15acxo5U24xliuHPfp3b44BY2bLl84a166s89KaPsIrPgFr7zQBTepWRslihTDScwnSprWRUvpD5a8wavJSeI1yxLOXryHkWGxrJvp54/8WW/cclQIrKsGJLWm4cOU2xs9YKdtaWVqiSZ3KOuuFDX32xNobtcI7fOIiHDh6BgXz5UT+3DkQERmBew+e4uVrf/mGXtzLx8OZ4nk+eQ4WXlrkLLy0PFWyCeF98twPjToOwfZVM2FrG1M5XbRiK/536m9882WJ2C28xK4M+fLkkmt4r1y/g6Fjp2OIU6cEwiuWIIhtcQb36SCXLPRznYzBTh3lH4gqFd4FP2+WL4717NQMJ86cx5pNezDdYzBsbdNh98Fj8k3kejWr6Dy+eLmudvVKqPBNKVlBEHI+fGBXXLz8n/A27zoMXmP6o1jRgrISPGvROowe0lOuNR7m7oP1izxhbW2Nnx9/TcMAACAASURBVNftwIZtB7Br3SzsOXhMVqYXzRgjK93e81YjjY01BrxblmHoGLDwGkqMvj0LLz1TQzKy8BpCi9vqS8Cowiu2mYj/pnRSNyb2YkuJFwsv7aix8NLyVMn2fh/eQWN9cP3mPXiOcUaJYoVx49Y9OLl6wcutP74tW1KmfvDwKTx9lkPsblCy+GfycJnvyn+JOj9+p9N1QGAQ5ixejxu3fWFpYYH6Naug5U+1cOf+QyXh/evfyxg/dQkqfFtKrvEVuzQcOHwKiI6W1Vgh3XFPDhI3c/XGXblThH9ATAVBVKE7t2mks6Rh5/6jWP/LfthlzoRa1SrA/20g9v12HHO9hmPFht04f/k67O0yoVv7n7Bq0x65NVqNahVw+fpt+VKHWAKRM7u9vKf4L9rpOxYsvPqSMl47Fl7jsdUnMwuvPpS4jaEEjCq8ht5MSmzPwks7aiy8tDxVsiV10trLV2/Qz9ULaxd56v0PWZX+U1oM9T6+LLymnwEsvKYdAxZe0/I3196NKrziJZGjJ8/B9+Gz2JPW4oIUb/Ol9IuFl3YEWXhpeapkS0x4ReVWrJXNnSOb3NaLr/8IsPCa32xg4TXtmLLwmpa/ufZuVOEVm9ef/fcaihTMK9e0xb/Em34p/WLhpR1BFl5anirZ4guvWK4g1rsWL1oQIwf3iN3EXCW3Ocaw8JrfqLLwmnZMWXhNy99cezeq8Ioj7XatnCzPbTbXi4WXdmRZeGl5qmRLakmDSi6OMZwAL2kwnBl1BAsvNVHD8rHwGsaLW+tHwKjC27avB9bMHS03JTbXi4WXdmRZeGl5qmRj4VWhRhfDwkvHUjUTC68qOZo4Fl4ajpxFl4BRhffUX5exde9R1P+xIuyzZoaFONsuzlW2ZJEUPx4svLRDyMJLy1MlW3IW3rfR9+EbtQ9h0X7y0ewsPkd+q/qwgvl8isTCqzJraWNYeGl5GpqNhddQYtxeHwJGFd4ZizZh2fq9Sd7HpSMr9LnHZN2GhZd2eFh4aXmqZEvOwnsxYhYiEarzWDktqyCXpe6euyrPnVxiWHhNPxIsvKYdAxZe0/I3196NKrxVfnKGz3hnfFmyCNKmsTFLhiy8tMPKwkvLUyVbchXe4OinuB65MsEjZbTIjyJW7VQeNVnGsPCaflhYeE07Biy8puVvrr0bVXhb9HTD1qUe5spOPhcLL+3wsvDS8lTJllyFVyxjuBK5iIVXZVA5xiACLLwG4SJvzMJLjpQ84c8b9uH2/ceY4NqdPLexEhpVeNdt+w3BIaFo17QG0tuazxq7uIPBwks7NVl4aXmqZEuuwiue5XLEQoTDX+ex8lvWh71lGZVHTZYxXOE1/bCw8Jp2DFKd8IYBePGOuQOANKblr0/vwSFhiIyMRMYMtvo0TxZtjCq8ddoOw7OXbxAeHiG3Jov/0trpPQuSBQQtN8HCq4VewlgWXlqeKtmSs/CKKu/DqN8QHP0MaS3skMGigFmt3xXjxcKrMmtpY1h4aXkami1VCa8Q3Z0AhPSKS8jujwAKG0otYfsrN+5hzJRlKFo4L1688sOAHi0wavIS7FntJRv/e/lW7NcPn7zAiEmLZbuoqCi0bFQdvTo0QlLfj1vhFTEi7/2HzxAZFYUureqiY4vauHrzvvz+95XK4uK1O3j89CVG9u+AqhVMU6AwqvAePvEPrK0SHjjxfliqVTTNQ2ufRv9lYOGlpAmw8NLyVMmWnIVX5XlSWgwLr+lHjIXXtGOQqoR3P4C78XhnAtBB+xjcuPMA7fp6wMOlBxrUrKgjuPGFd6LPajjY20GcgPs2MFiKsliuMGvp1kS/v2X30dglDZ6z1yAkNAweLt3h++gZGncZhYPrveEX8BbNuo/F4mlDUblcaRw4cgYrN+3HuvljtT+cQgajCu/7+wkNC8fT56/k8cJ5czmY1fIGFl6FWfeBEBZeWp4q2Vh4VajRxbDw0rFUzcTCq0qOJi5VCe/CJJj10c5SCG+b3uNxdv9iWFpafFB4F67aiRNnL8LFqR1KFSsk24srqe/HrfBGRkbJqrDNuxN163cYDs+RPeVyh47Ok/D+03xR8XUe5YNDm2ZofziFDEYVXr+AQEz0WYX9h/9EVFS0vD0Bsd6PFeS/OGzTpYCFKh+BysKrMOtYeGmhEWdj4SUGamA6Fl4DgRmheXIV3sPHzuK1n78Uizv3HmKAYzvMXboBBfPnkQWlbFns8OT5C2TMkF5S8Q8IRP2albFm814ULpgXt+4+QOfWDWGf1c4I1OhSpirh3QzgZTx2Qo0I3gUTwttrmDeObPWRHcRdwhD/6/CISKzYuA+7D53E6zcB6NK6Hnq0a4Ckvh9XeIXIzl62Fc9f+sHKyhLXb/li6XQXZMqYHo4u3ji8JaZ/cT9xv6abMfplMqrwDp+4CI+evkTfLk1QOH9ueUe37j3CgpU7ULJYQYwe2Em/u0zGrVh4aQeHK7y0PFWysfCqUKOLYeGlY6maKTkLb6VypWFrmw67DvwPjet+j72//oEGtasiIDAIZ/++jOCQEPm1uESbKhXK4vrNe6hU/kscP/0vShQrxML7kYmRJ9snfBHrLADxv7iXWO1JsLV4fMG8cPUOXCcsxL61U2Rvx89chFiO8H5N7/tbELsvdBvkhbmeg1Dmi/8WE8f9/tlzV2OXNPzUbTS6tq6HZvWryRTi/S2v0Y6pS3i/bzYA25ZPRLasmXXG8tmLN3JdyW+bTVPWVv1DMLE4Fl5KmryGl5amWjYWXjVuVFEsvFQk1fOw8Kqzo4hMVRVeAewagIfvyOUFUJyCYsKK6pPnr9Co0wj8b9scpLdNi/HTV+DPc1el8A7zWICf6laFeLdKrMdt2ctdSuuKjfsT/f6Zf/4T3spN+mHJNBeUKl4Ie347JfNOd++HXDmypp4Kr4BwaOMMCTbuJbazqNlqME7smkczqibMwsJLC58rvLQ8VbKx8KpQo4th4aVjqZqJhVeVHE1cqhNeGmwJsiS2hMBr7jqc+usycuWwR6VvS2LTzsPYu2YKLly5jfEzVuKN/1tYWVqiSZ3K6NetWZLfj7ukYf3237Bk7W5ktcuExrUryxxb9xyVwixefksVSxqcRs5Etqx2GNanDewyZ5CD8dovANMXbsLT56+xxHuYkYb506Vl4aVlzcJLy1MlGwuvCjW6GBZeOpaqmVh4VcnRxLHw0nDkLLoEjLqG99GTF3Aa6YObdx/KbS2io6Px8rU/8ufJgfmTB6FwgZh1vSn5YuGlHT0WXlqeKtlYeFWo0cWw8NKxVM3EwqtKjiaOhZeGI2f5hMIruhKSK0rlvo+fIywsHAXz5UTZkkXlm3zmcLHw0o4iCy8tT5VsLLwq1OhiWHjpWKpmYuFVJUcTx8JLw5GzfCLhFet079x/hJLFCun0+Nuxv+Wi6DRpbFLEWLzfRDnuzUZERGLGuH6oU70cWHhph5GFl5anSjYWXhVqdDEsvHQsVTMlZ+HlbclUR1X/uE+6S4P+t8UtNRIwypKGN35v0cF5oly6sHDKkNhbFPu5/dR1FOwyZ8TyGcNT5D68r94EoEO/Cdiw0B12mTKw8GqcgPHDWXiJgSqkY+FVgEYYwsJLCFMxVXIVXsXHSXFhXOFNcUOWIm7YKMI7adZq/HX+OlbOGin3YYt7BbwNQgfnSaj3Q3k4dW2aIiDFvUm3actR4vOCaNe0pvw2V3hph5CFl5anSjYWXhVqdDHmILz+bwMlkMwZY15WfvbyNbJmzhR7EhMdLeNkYuE1Dld9s7Lw6kuK2xlCwCjCW6vNULg6tZMf+Sd27fv9NOat2I7dqyYbcq8mbyuWN/QYMhV7106BtZUVC68RRoSF1whQDUzJwmsgMOLm5iC8i1Zsle9p9OzUTNLp0Gc03FwcUbxIQWJaxknHwmscrvpmZeHVlxS3M4SAUYT3q1o9sGWJB4oWFjsoJ7zE3nCte4/HPweXGHKvRm0rjsaLiIzU6cPG2hrFi+SP/Z7HzFXypbsurerGfi88Isqo95XqklsA1paWiIhkrqYaeysrC3kUeHTMaeB8fWICFhYxR7BHRqbcAZixcKMU3oG9Wkl69Tu4wNvdCaWK/XdqkwrWS9fvYO+hU3j24jWGO3eQu/8Y47K24j+DjMFV35xi/lsAiIwyze+AjbV5vFSvL+/U0s4owlv1p/7wdu+LSt+UTJTjsdPnMWryEhzbPifZcBabIweHhOrcT5bMGTF2cGf5PSHD3zcdgJ0rPXX+kH3upxuTbB4ohd6ItaUFMmWwweuAsBT6BCn/trNkSIOg0AiE8T/mTDKYaawtYZvWGn6BKfd3YMHyLbC0skTvLs0lwza9RmH8cEd8UVT3JWaTANaj02yZ0+DN23CTCZcet5hoE5sXV+X3wx2+UE2RLOJs01hB/MP7bXCESe4nu53uYVkmuQnulJyAUYR3yLj58At4i6XeLrAQ5Yo4l3hxrWO/iSiQLwemje1L/kDGSnj6nyuYsXATNi5y1+mC1/DSEuclDbQ8VbLxkgYVanQxKXFJw8yFa9G84Y8omD+PBGGsJQ33HjzGms17YWVhib7dW8IucyY68HEypbQlDTZ+9+FwyhsWEUHyKaKt0+NFpWEItytgFD7GTspLGoxNOHXmN4rw3rr7EG36jEfZUkXRq30jubRBVEiv3riPBSt34I7vY2xc6J6iDp5YsWk/rt/yhefIXiy8RvxdYeE1Ilw9U7Pw6gnKSM2Si/A+ePQMV27cxtdlShi8dEBFeAeN9kaD2lURHh6OhrWrJUrXcfBEFCmcD4GBwbCxscLYYY5GGYWUJrz2Z+ci3dNzusWlzAXwvJqbUfgYOykLLw3hxI4Wfp857tHA+vYmln4OcpuL/eum6huSrNoZRXjFE4rDJsSa18vX7+o88FelisplAl8UTVn/8pwybz1srK0wpHdrFl4jTmEWXiPC1TM1C6+eoIzULDkIr6ikDhrljezZsuLFqzfw8RyGAnlz4Z7vI6xYvwtp06ZBv55tkClDzC48uw8eQ9lSnyN/3lzya32ENzw8AotXbUX39k1ha5v4R8hTZq9A5QplUa3S1zJvq+6uGNy3I1699sOWnb9ixVwP+f1bdx9g1YZdSJ/eFk49Wsfel+oQpTThzbOnZ6KP+qjhUlUEJo1LdcIbGQgEvXOl9IUAq5jdTbReHxJecVZCZGQkMmaw1bsbFt6PoHr89CV8Hz2HWNlQMF8u5HDIojfclNCQlzTQjhILLy1PlWwsvCrU6GKSg/AuW7Mdb/zfYqhTR3jOXIa8uXOiS9tG6OLsjvJflcDjpy/kcgLX/l3kg/cf7oX2rRrgu3Jfyq8XrtgC8dJvj44xW08mtkvDjVv34OG9BKsXTEwUXmhYOPoPn4I6P1RCy59qyTYHj5zCyvU75X/b22fBnMmu8r+79HNDua9K4sHjZ3CwzwIX55h3L1SvlCa8OX8fDqvglzqPG21ti8d1k897MoaMRaoS3qA7iL7mBkTGLEeBVXpYFHYGslQ0BFmibYXwOo30QbP61bBt3zF58u24oV1RtUIZxK3w9h89CyWKFcKla3fw7MUb5MphD5/xzvLF0yVrd2P99t8g3mmq+0MFmUdUeMX3Hz15AfehXWXf8b/WfPNGSGC0Cq8R7jVZpmThpR0WFl5anirZWHhVqNHFmFp412zeg43bDyJbVjtUrfg1fj16Gj07NUXt6pXQvMswdGzVANkdsmL52h2YMWGIrAC7jpuFWtUrokOrBvII+QnTl6BmtQpo2uAHCSYx4X3jF4DOTm7o16MVqlcph3Rp08i2T5+9xN/nr2LTjl8RGBSMXDmyYdSQnrBNa4PIyCi5Q8O85ZtQufyXaNe8nowR99W5TSNks7fDyvW7sHSWto/yU5rwZrqxE5mux/xD4P0VUKwJAj5vQjcxP2Gm1CS80Te9gDdndOmmyQ6LLxdqJi6Et5XjOIwf1g0/1a2CTbuOYMf+P7B23hgd4RXLFMR7V0u8XWBlaYmm3cfIrWWF+HboNxG7VnrKPw9GTFqE81dus/BqHpkUmoCFl3bgWHhpeapkY+FVoUYXY0rh9fd/ixbdXDBrsiuev3iNO/cfomjh/Kha8Sv5gH+cPoelq7dJKRXvZYhNo8Se5OW+KoE79x7CwcEeV67dRsnin2HCKKfYpQVJ7cP7z/mrWLJ6G27fewDbdOkQHBKC9La2stpU4/sKqFzuS7hPWSR/7uf/Vt6DQ7YsqPBNaTj3aBN7kIW4LyHgj548w+efFcAcr+GaBiSlCa942PQPjiPdk3/kc4fk+hpB+apoYmDK4FQlvGdbJIraotxWzUMghLe900Sc2Rcjz2JJgvMoHxzaNCOB8H5T5nN0frflav8xs1GjytfyH6/HTl/AXM+BMb//f17ARJ/VLLyaRyaFJmDhpR04Fl5anirZWHhVqNHFmFJ4heCKF8N+3brggw/kPW81rK2tMKh3e5IHDw4OQUBQMGzTpdW0/lbcl8jRr4fuuxaG3mRKFF5DnzE5t09VwntpCBB8T3c4xLKGr1drHqL4a3jjfh13SYOo8IplDi0bVZd9vv/61Rt/3PV9Evuy/oWrd+DisYCFV/PIpNAELLy0A8fCS8tTJRsLrwo1upjkKLz+AYFy6cKTZy+x99djuOf7GLM8XWCf1TgHP+hLM/59iSrzAu/RyJxJ20s/LLz6joBx2qUq4X20EXi0SRdkjoawKNBdM1ytwis+xTl+5iLmTBwg7+XIiXPwmrtOCu/yDXtx78FTuVxCXD5LtshPYd6v6dV880ZIwGt4NUJl4dUIMF44Cy8tT5VsLLwq1OhiTCm8vg+fwHWcD9Yv8dJ5oA3bDmD7nsPInt0e35YtgdY/1UZ623R0D62YKf59NW9YQ7Psilth4VUcEKKw1CS8EtmLw4gOuCj/0yJTacDhRxKSWoW39BeF0XWQF3au8IR91kwYOm4+rt3ylcK76+AJbNlzFCtnjYR4wbRdXw+ULVmEhZdk5JJpEhZe2oFh4aXlqZKNhVeFGl2MKYWX7ilSdiYWXtOOX6oTXiPh1iq8YonDnOW/YMvuo8iUMT1aNf4Ba7b+il83eCMoOFSuBw4ODYND1swomD8X3r4NxrhhMbs2JMeLK7waR4WFVyPAeOEsvLQ8VbKx8KpQo4sxZ+G9Fh6NGxFAbkvg8zQWyKx7ECcdRI2ZWHg1AtQYzsKrESCHJ0qAhVfjxGDh1QiQhZcWIEE2Fl4CiBpSmKvwTvePwvpAsa9DzJXJAlib3Qp5rDTAMlIoC6+RwOqZloVXT1DczCACLLwG4UrYmIVXI0AWXlqABNlYeAkgakhhjsLrHw3UeBKZgEq7DBYYmtlSAy3jhLLwGoervllZePUlxe0MIcDCawitRNqy8GoEyMJLC5AgGwsvAUQNKcxReM+GRaPPy6gEVL5Ja4HF9iy8GqaLWYay8JrlsJr8oVh4NQ4BC69GgCy8tAAJsrHwEkDUkMIchfdRJNDkWcIKb0NbC4zPwsKrYbqYZSgLr1kOq8kfioVX4xCw8GoEyMJLC5AgGwsvAUQNKcxReAUOx1dR+Dv0vzW84ntrHSxR3Cb5vbnGSxo0TGCCUBZeAoicIgEBFl6Nk4KFVyNAFl5agATZWHgJIGpIYa7CK5DsCorGo3crGxrbWiTLF9bEfbLwapjABKEsvAQQOQULL/UcYOGlJcrbktHyVMnGwqtCjS7GnIWXjpJxM7HwGpfvx7Kz8H6MEP9chQBXeFWoxYlh4dUIkCu8tAAJsrHwEkDUkIKFVwM8olAWXiKQimlYeBXBcdgHCbDwapwgLLwaAbLw0gIkyMbCSwBRQwoWXg3wiEJZeIlAKqZh4VUEx2EsvMacAyy8tHR5SQMtT5VsLLwq1OhiWHjpWKpmYuFVJUcTx8JLw5Gz6BLgCq/GGcHCqxEgV3hpARJkY+ElgKghBQuvBnhEoSy8RCAV07DwKoLjMK7wGnMOsPDS0uUKLy1PlWwsvCrU6GJYeOlYqmZi4VUlRxPHwkvDkbNwhZd0DrDwkuIECy8tT5VsLLwq1OhiWHjpWKpmYuFVJUcTx8JLw5GzsPCSzgEWXlKcLLy0OJWysfAqYSMLYuElQ6mciIVXGR1JIAsvCUZOEo8Ar+HVOCVYeDUCjBfOFV5anirZWHhVqNHFsPDSsVTNxMKrSo4mjoWXhiNn4Qov6Rxg4SXFyRVeWpxK2Vh4lbCRBbHwkqFUTsTCq4yOJJCFlwQjJ+EKL+0cYOGl5ckVXlqeKtlYeFWo0cWw8NKxVM3EwqtKjiaOhZeGI2fhCi/pHGDhJcXJFV5anErZWHiVsJEFsfCSoVROxMKrjI4kkIWXBCMn4Qov7Rxg4aXlyRVeWp4q2Vh4VajRxbDw0rFUzcTCq0qOJo6Fl4YjZ+EKL+kcYOElxckVXlqcStlYeJWwkQWx8JKhVE7EwquMjiSQhZcEIyfhCi/tHGDhpeXJFV5anirZWHhVqNHFsPDSsVTNxMKrSo4mjoWXhiNn4Qov6Rxg4SXFyRVeWpxK2Vh4lbCRBbHwkqFUTsTCq4yOJJCFlwQjJ+EKL+0cYOGl5ckVXlqeKtlYeFWo0cWw8NKxVM3EwqtKjiaOhZeGI2fhCi/pHGDhJcXJFV5anErZWHiVsJEFsfCSoVROxMKrjI4kkIWXBCMn4Qov7Rxg4aXlyRVeWp4q2Vh4VajRxbDw0rFUzcTCq0qOJo6Fl4YjZ+EKL+kcYOElxckVXlqcStlYeJWwkQWx8JKhVE7EwquMjiSQhZcEIyfhCi/tHGDhpeXJFV5anirZWHhVqNHFsPDSsVTNxMKrSo4mjoWXhiNn4Qov6Rxg4SXFyRVeWpxK2Vh4lbCRBbHwkqFUTsTCq4yOJJCFlwQjJ+EKL+0cYOGl5ckVXlqeKtlYeFWo0cWw8NKxVM3EwqtKjiaOhZeGI2fhCi/pHGDhJcXJFV5anErZWHiVsJEFsfCSoVROxMKrjI4kkIWXBCMn4Qov7Rxg4aXlyRVeWp4q2Vh4VajRxbDw0rFUzcTCq0qOJo6Fl4YjZ+EKL+kcYOElxckVXlqcStlYeJWwkQWx8JKhVE7EwquMjiSQhZcEIyfhCi/tHGDhpeXJFV5anirZWHhVqNHFsPDSsVTNxMKrSo4mjoWXhiNn4Qov6Rxg4SXFyRVeWpxK2Vh4lbCRBbHwkqFUTsTCq4yOJJCFlwQjJ+EKL+0cYOGl5ckVXlqeKtlYeFWo0cWw8NKxVM3EwqtKjiaOhZeGI2fhCi/pHGDhJcXJFV5anErZWHiVsJEFsfCSoVROxMKrjI4kkIWXBCMn4Qov7Rxg4aXlyRVeWp4q2Vh4VajRxbDw0rFUzcTCq0qOJo6Fl4YjZ+EKryTg++gZGncZpUMjIiISM8b1Q53q5XS+37avB67euAdYWMjvZ86YHv/bNlv+Nwsv7a8UCy8tT5VsLLwq1OhiWHjpWKpmYuFVJUcTx8JLw5GzsPAmOgdevQlAh34TsGGhO+wyZdBp07DTCMzy6I+ihfMmiGXhpf2VYuGl5amSjYVXhRpdDAsvHUvVTCy8quRo4lh4aThyFhbeROeA27TlKPF5QbRrWjPBz6s3H4iNi9yRK7s9C6+Rf4NYeI0MWI/0LLx6QDJiExZeI8LVMzULr56gjNSMhddIYFN5Wovo6OjoVM5ALm/oMWQq9q6dAmsrqwQ4vq7TC99X/BL/XLwBB3s7DOrVEt9XKivbcYWXdvaw8NLyVMnGwqtCjS6GhZeOpWomFl5VcjRxLLw0HDlLKqvwXr15HxGRkTpPbWNtjeJF8sd+z2PmKhTMlxNdWtVNMD+ioqIxduoy1PuxIr4rVxJHT/yLEZ6LsGvVZFnxDQiK4DlFSMDSErBNa43AYOZKiNWgVOnTWSE0PAqRkan+38IGcaNqbGVlgTQ2lggO0f1ziyo/5/k4gYy21ggMiQCXgz7OyhgtbGwsYWUBhIRFGSP9R3NmSm/90TbcIOURMPsK75gpyxAcEqozMlkyZ8TYwZ3l94QMf990AHau9JTVW32uboO90KJhdTSq9R0CgsP1CeE2ehKwtLBAujRWCApl4dUTGXkz2zTWCI+IREQUCy85XD0SWltawMbaCsFh/DugBy6jNBEVxuDQSESx8RqF78eSprGyhIWlBULDTfOPvky2Nh+7Rf55CiRg9sL7sTE5/c8VzFi4Sa7RTewKCg7FjTsPULZkkdgfd3SehE4t66DuD+V5ScPHABv4c17SYCAwIzTnJQ1GgGpASl7SYAAsIzXlJQ1GAqtnWl7SoCcobmYQgVQvvCs27cf1W77wHNlLB9zuQydR6ZuSck1v7bbDMGuCMyqXK41jp8/DZcJC7FnthWxZM7PwGjTdPt6YhffjjIzdgoXX2IQ/nJ+F17T8Re8svKYdAxZe0/I3195TvfBOmbdefnw4pHdrnTH+vtkA+Hg445syxXD05L/wXrABz16+Qd5cDnDt107KsLj4pTXaXw0WXlqeKtlYeFWo0cWw8NKxVM3EwqtKjiaOhZeGI2fRJZDqhVfrhGDh1UpQN56Fl5anSjYWXhVqdDEsvHQsVTOx8KqSo4lj4aXhyFlYeEnnAAsvKU6w8NLyVMnGwqtC7b+Yw8fO4rWfP2xsrHHn3kMMcGyHuUs3oGD+PAgNC0e2LHZ48vwFMmZIL4P8AwJRv2ZlrNm8F4UL5sXd+w/Rr1szzF+xXSdGtI2fV9udcnRSBFh4TTs3WHhNy99ce+cKr8aRZeHVCDBeOAsvLU+VbCy8KtR0hbdSudKwtU2HXQf+h8Z1v8feX/9Ag9pVERAYhLN/X0ZwSIj8WlyiTZUKZXH95j1UKv8l/jx7HuW+Kob9h8/qxIi28fNqu1OOZuFNnnOAhTd5jktKvysWXo0jyMKrESALLy1AgmwsvNogigovC682hqaO5gqvaUeAhde0/M21dxZejSPLwqsRIAsvLUCCbCy82iCy8GrjlxyiWXhNOwosIYOUpAAAIABJREFUvKblb669s/BqHFkWXo0AWXhpARJkY+HVBpGFVxu/5BDNwmvaUWDhNS1/c+2dhVfjyLLwagTIwksLkCAbC682iCy82vglh2gWXtOOAguvafmba+8svBpHloVXI0AWXlqABNlYeLVBZOHVxi85RLPwmnYUWHhNy99ce2fh1TiyLLwaAbLw0gIkyMbCqw0ib0umjV9yiGbhNe0osPCalr+59s7Cq3FkWXg1AmThpQVIkI2FlwCihhR88IQGeEShLLxEIBXTsPAqguOwDxJg4dU4QVh4NQJk4aUFSJCNhZcAooYULLwa4BGFsvASgVRMw8KrCI7DWHiNOQdYeGnp8sETtDxVsrHwqlCji2HhpWOpmomFV5UcTRwLLw1HzqJLgCu8GmcEC69GgFzhpQVIkI2FlwCihhQsvBrgEYWy8BKBVEzDwqsIjsO4wmvMOcDCS0uXK7y0PFWysfCqUKOLYeGlY6maiYVXlRxNHAsvDUfOwhVe0jnAwkuKEyy8tDxVsrHwqlBTi8n029/IePwiLELCEJ0uDV63rI7osoWRwdYGr/xD1ZJylGYCLLyaEWpKwMKrCR8HJ0GAlzRonBosvBoBxgtn4aXlqZKNhVeFmuEx6S7fg/2aXxMEvh7ZDrZ57Vl4DUdKFsHCS4ZSKRELrxI2DvoIARZejVOEhVcjQBZeWoAE2Vh4CSDqkUJUd8X/4l8BXerApvznLLx6MDRWExZeY5HVLy8Lr36cuJVhBFh4DeOVoDULr0aALLy0AAmysfASQNQjRVLC69+7MdKUKcDCqwdDYzVh4TUWWf3ysvDqx4lbGUaAhdcwXiy8Gnl9LJyXNHyMkPF/zsJrfMaihzS3H8Nh6R6dzsQ63jeDW/CShk8zBEn2wsJr2gFg4TUtf3PtnYVX48hyhVcjQK7w0gIkyMbCSwBRzxQZjl+E7eV7SHPnMcIK54Z/zW9gUTwvv7SmJz9jNWPhNRZZ/fKy8OrHiVsZRoCF1zBeXOHVyOtj4Vzh/Rgh4/+chdf4jD/UA29LZlr+oncWXtOOAQuvafmba+8svBpHliu8GgFyhZcWIEE2Fl4CiBpSsPBqgEcUysJLBFIxDQuvIjgO+yABFl6NE4SFVyNAFl5agATZWHgJIGpIwcKrAR5RKAsvEUjFNCy8iuA4jIXXmHOAhZeWLi9poOWpko2FV4UaXQwLLx1L1UwsvKrkaOJYeGk4chZdAlzh1TgjWHg1AuQKLy1AgmwsvAQQNaRg4dUAjyiUhZcIpGIaFl5FcBzGFV5jzgEWXlq6XOGl5amSjYVXhRpdDAsvHUvVTCy8quRo4lh4aThyFq7wks4BFl5SnGDhpeWpko2FV4UaXQwLLx1L1UwsvKrkaOJYeGk4chYWXtI5wMJLipOFlxanUjYWXiVsZEEsvGQolROx8CqjIwlk4SXByEniEeA1vBqnBAuvRoDxwrnCS8tTJRsLrwo1uhgWXjqWqplYeFXJ0cSx8NJw5Cxc4SWdA2cu3sPrN/4oXaKo5rxbd/2Gu76PMdSpo+ZcH0qwecevuP/wqdH7UXkIFl4VarQxLLy0PA3NxsJrKDH69iy89EwNycjCawgtbqsvAa7w6ksqiXazV+xGeHg42jWvpzET8KmENyQkDJFRkciQ3lbzPVMnYOGlJmp4PhZew5lRRrDwUtJUy8XCq8aNKoqFl4ok54lLgIVX43yo1KgfrK2tUPfH79CjY1Os27oPBw+fQnhEBCp9WwZO3VvDyspSp5cnz15iyuwVePXGH9FRUahfq4oU5rjC++q1H6bNXYVHT54jMioKLRrVRLOGP8o8l6/dxuwlGxAcHAIba2v069UGX5cujk07DuLmbV+EhYfDz/8trCytMHJQN2Szz6LTf9wK74f6adppiHymU39dxOMnz1GregW0b1Ff3uftew8RGRGJ569eIzg4FO4ujsiZIxsCg4Ixd+lGXL5+B1GRkfK5GtSuKvsX+Tq3aYSz5y7j/sMn6N2lBc78cwm+D58AsIDnaGdkypgO9+/7wmPmqgTPd+uOL6bOXYWK35TGtVv38Oz5Kzh1b4XyX5fSOIocHpcAC69p5wMLr2n5i95ZeE07Biy8puVvrr2z8Goc2ZFeP8MhWxYpdsdP/4vla7fDZ7IL0qdLBw/vxShbqhiaN6qh08ucJRtgnyUzOrRqIAVx+rzVGOLUEQd+Pxm7pGHeso0IDQvHkL4dpfT2HOSBVfMnwsHeDo6DJ6JNszqo+X0FHDp6Gmu37MPPc8ZJEV25YTdWzhuPrFkyY8mqbQgMDMKgvh2SFN4P9dO86zA0qVcdXds2lss2OvQeha0rpuPA4ZNYvXkPlswYA/usdhDPI6rF3Tv8hPnLN8HfPxAu/bvIvp2Ge2G8a28UKZwfIl/rn2qjbbO62PPrMcxfvhmLZ4xB3tw54OLug4a1q6JW9fLoNXgiWjapneD57tx/iN5DJmHyWGd8W7Ykjp74G1t3HcLsya4aR5HDWXiTzxxg4TX9WLDwmnYMWHhNy99ce2fh1TiycYXXc+YyFCqQR1ZBxXXq7AVZdZ0xYahOL2s378Vf56/AsUtLFPusACwtLeTP41Z4IyOjEBUVBRsba/mzLs7ucHXujFJfFEF4eASsrKxk3ItXfujUZzT2bZor489fuo7xI/rKmL8vXMX8pZuwdJZbksL7oX6EoE5zHyhlVVzNOg/F/Gkjcfqvi/jn/JXYfn7Z/Ttu3PbF8AFd0KbHcLi5OMr7FNeilVuRLm1adGnbSArvdI/BKFwgL/45f1VWgpfNdpftZixYgwL5cqNt01rImM4KrwLCEzyfEN7Bo6dj++oZMubmHV+4ey3A2kWeGkeRw1l4k88cYOE1/Viw8Jp2DFh4TcvfXHtn4dU4snGFd/Skubhy4y5s06WVWYWwZrHLjAXTRur0Eh4RiS07f8Xvx87IpQctGtdEm6Z1dIRXyNyK9Tvx6rW/XBIhlhBMcRsgX44Tlc3te39HRHgEIqOiceuuLw5sni/jb919ANf+XWR/4mN/N8/52LhsSpLC+6F+hKDOmewqK7Diev/1mX8u4+r1OxgxqJv8/va9R2K/bthuADJnTA9LKyv5s4iISHz/3Tfo16O1jJ8/dSRy5ciGcxevY/HKrVKgxTVr4VrkyZ0D7ZrXwZm/z2PV5gMJnk8I76gJc7B+iZeMif+1xqHk8HcEeEmDaacCC69p+YveWXhNOwYsvKblb669s/BqHNm4wjt9/hoUyp9bCqy+l1jL6uI2E+NHOuHSlZuxSxp6DZ6Alo1rom6NyjJVp75jMHxAVymfHfuOkaJYMF9uuY61k9OYWOH9+8I1TBrlJGPE+thFK3/BUp+xSQpvUv0IsVYR3i793OA2rFdsVThux/oIb90aldDecTTmJfJ8LLz6zipt7Vh4tfHTGs3Cq5Wg9ngWXu0MtWRg4dVCj2OTIsDCq3FujPVeJV8c69mpGU6cOY81m/bIj+1tbdNh98FjsLayRL2aVXR6mTRzGWpXr4QK35RCSGgYnFwmY/jArrh4+T/hFXLoNaY/ihUtKCvBsxatw+ghPZHdIQuGuftg/SJPWFtb4+d1O7Bh2wHsWjcLew4ew6qNu7FoxhhZRfWetxppbKwxwLFdksKbVD/i3lSEd8GKLQgLCcWA3u0RERmFpWu24ceq5fFF0YJ6VXgrflsKQ91mYu3ChM/3+OlzrvBqnK/6hLPw6kPJeG1YeI3HVt/MLLz6kjJOOxZe43BN7VlZeDXOgF2//4XxU5egwrelMGZIT7lLw4HDp4DoaFmNHeLUSb5oFve6euMuZi1eD/8AsZOCJWpVryh3L4i7hnfn/qNY/8t+2GXOhFrVKsD/bSD2/XYcc72GY8WG3Th/+Trs7TKhW/ufsGrTHrk1Wo1qFXD5+m2EhYXLJRA5s9vLexIvlsW94u7S8KF++rpONnhJQ1BwCOYs2YhLV2/KLst9VRJOPVrD2spKL+EVSxrES3x/nruS4PmGOXdm4dU4X/UJZ+HVh5Lx2rDwGo+tvplZePUlZZx2LLzG4Zras7LwapwByemkNX338eWDJzQOupmHs/CadoBZeE3LX/TOwmvaMWDhNS1/c+2dhVfjyKZE4V22ZjtCQkPRr0cbjU9PH84HT9AzNTQjC6+hxGjbs/DS8lTJxsKrQo0uhoWXjiVn+o8AC6/G2ZDShHfN5j3Yvvcoxrk6khyHrBFfgnAWXmqihudj4TWcGWUECy8lTbVcLLxq3KiiWHipSHKeuARYeDXOh+QkvBofJVmEs/CafhhYeE07Biy8puUvemfhNe0YsPCalr+59s7Cq3FkP5XwRiIEr6IuwT/6BqyQFnaWnyOrRWmNd5/8wll4TT8mLLymHQMWXtPyZ+E1PX8WXtOPgTneAQuvxlH9VMJ7K3I93kb76txtfsv6sLcso/EJklc4C6/px4OF17RjwMJrWv4svKbnz8Jr+jEwxztg4dU4qp9KeP+NmJrgTjNa5EcRK909djU+jsnDWXhNPgRg4TXtGLDwmpY/C6/p+bPwmn4MzPEOWHg1juqnEN6waD9ciVzEwqtxrDhcPwIsvPpxMlYrFl5jkdU/L6/h1Z+VMVqy8BqDKudk4dVjDly9eR8TZq7Cy9f+yJA+HYb2aY3K5WLWz34K4RX9XIyYhUiE6tytWMNbwKqBHk+Qcppwhdf0Y8XCa9oxYOE1LX+u8JqePwuv6cfAHO+AhVePUW3SZRScujZFvR8r4OK1O+g5dBp+3zwT6W3TfjLhfRV1AY+ifo+VXhtkRlGrdkhjoXuKmh6Pk6ybsPCafnhYeE07Biy8puXPwmt6/iy8ph8Dc7wDFt6PjGp0dDTK1OiOP7bPQRa7jLJ15Sb9sGbuGHxWIPcnE973t/k2+r7cpcHWIqc5zkew8Jp+WFl4TTsGLLym5c/Ca3r+LLymHwNzvAMWXj1GtfvgKaj1fTm0b1YTZ85dxWivpdi7dgqsrazw9HWIHhm4ib4EhPDaZUiDl/66yzf0jed22glkzZQGgSERCAuP0p6MMxhMII2NJdKns8abgDCDYzmAhoCDXVq8DghDZFQ0TULOYhCB9GmtYWVlgYCgcIPiqBqLNdx8mR8BFt53YyrW6UZERuqMsI21NYoXyY+bdx6iy6DJiIqMQkhYOKa7O6FGla9lW/4Dkf6XwtLSAlH8Fw09WD0zWlpYQHyywX/V6wmMuJkFAAsLC0RF8wgQo9U7nZWlBf/Zrjct+oYWFoD4PTDVXwNi/PkyPwIsvO/GdMyUZQgO0a0qZsmcEa792kGs4XUb0gVVypfGXd8n6DJwMtbMHY38eXJ88iUN5jcFdZ+IlzSYfoR5SYNpx4CXNJiWv+idd2kw7RjwkgbT8jfX3ll4PzKyovLbZ/gMHNnqE9uy1zBvNKlTGY3rVGbhJf7NYOElBqqQjoVXARphCAsvIUzFVCy8iuCIwlh4iUByGh0CLLwfmRD+b4NQs9UQLJ85HGW+KIznL9+gWfexWOI9DCU+L8jCS/wLxcJLDFQhHQuvAjTCEBZeQpiKqVh4FcERhbHwEoHkNCy8hs6Bwyf+weylWxESGgZLS0t0blkHbX6qIdN8qn14Db3nlNqehdf0I8fCa9oxYOE1LX/ROwuvaceAhde0/M21d67wahxZFl6NAOOFs/DS8lTJxsKrQo0uhoWXjqVqJhZeVXI0cSy8NBw5iy4BFl6NM4KFVyNAFl5agATZWHgJIGpIwcKrAR5RKAsvEUjFNCy8iuA47IMEWHg1ThAWXo0AWXhpARJkY+ElgKghBQuvBnhEoSy8RCAV07DwKoLjMBZeY84BFl5aurykgZanSjYWXhVqdDEsvHQsVTOx8KqSo4lj4aXhyFl0CXCFV+OMYOHVCJArvLQACbKx8BJA1JCChVcDPKJQFl4ikIppWHgVwXEYV3iNOQdYeGnpcoWXlqdKNhZeFWp0MSy8dCxVM7HwqpKjiWPhpeHIWbjCSzoHWHhJcYKFl5anSjYWXhVqdDEsvHQsVTOx8KqSo4lj4aXhyFlYeEnnAAsvKU4WXlqcStlYeJWwkQWx8JKhVE7EwquMjiSQhZcEIyeJR4DX8GqcEiy8GgHGC+cKLy1PlWwsvCrU6GJYeOlYqmZi4VUlRxPHwkvDkbNwhZd0DrDwkuLkCi8tTqVsLLxK2MiCWHjJUConYuFVRkcSyMJLgpGTcIWX5wATYAJMgAkwASbABJhAaiLASxpS02jzszIBJsAE/t/encfXeOZ9HP9aQoTYqkbb6WKZ6jCopaVUqaLaqqe1r7U1CKIJQqwhiYhdxBIUtaRj6dRSpUXbUWopmrGVVlvlqaHUqKdKhCTzuq82eSRNMoakzjnX5369+o+cc9/X7/07l/PN5brvIoAAAghYKEDgtbDplIwAAggggAACCNgkQOC1qdvUigACCCCAAAIIWChA4LWw6a5U8r9+/Ekh4+bqzLkLWvfGuLShtfcP09FjJ6Q8ecyfFS3io49Xz3ClobvdWK4nJWn6/Le0aPlGbV8boxLFfE0N23YflH/IVOXPny+tpmD/9urUsnG6Gm/2dW4Hc4cHfOTYCQWFztKTj1fRyMAuaaO5du26xk5drE1b96hI4UIa2Kutmjd54g6P1r0vn9UccKraHX9EYVMX6+wPF1SzakVNHNXH/L1z48EcyJ3+ZzYHVm/cZj7/Nx7OnPhk7UwVL1YkdwbCWT1agMDr0e117eJ+vpygDv5havDEo9q6a3+6wPtClxBFhwWoQtn7XLsINxpdwIhoPVLhAcUuXWd+eUgNvBs+2K3NH+/RtLH9s63mZl/nRiR3fKjxh44pYvpS8zn3LeyTLvDGLHxbXx0/pagRvXXy1PcaOWGBls0coYIFvO74uN11AFnNgYs//awXXxmmyaP7qlrl8poSu0LlH7xX7f6nUbpSmQM53/ns5sCNV9u597Dmx63XwmlDc34QnNEKAQKvFW12zSIvX0nQD/+6aP4bM2VxusDboOVrWjE3VGXuLumag3fDUR396qQJvFUadU8XeFeu+0gHjx5X+JAe2VZ1s69zQ5o7NmQnyJYqWUxLVm0y8+DGFd7GbQfq9SlD9ND9Ze7Y+DztwlnNAWc1ccfeQ5o0yp858Ds3Pbs5kDoUZ2W+9auhZtX94XJ//J1HyOU8RYDA6ymddOM6Pjv45W8Cb/WmfnqqdlU5v/07gSDQr7WeqlPNjat0naFnDLyvv/mu+WfzxMTrunDxJ9WvXVXDAjqpsI93ukHf7Otcp1L3GUnsknXpAu//Xbos55e+Qb3bKu7tLfIu6KWAnq3UqF519ynKhUeacQ6Mj4nT9etJ+va7Mzp56qxqVa2oEa91NltJbjyYA7nX1Ixz4MYrrXlvu7Z/elCTR2f/C0nujY4ze4IAgdcTuujmNWQMvMnJKRo1cYGaPV1bT9SqpK079iskcq7eWTKeFd8c6HXGL/vNH+/V4S++Vbe2zZSckqLg8Dnmn3OHD+ic7mo3+7ocGKJ1p8j4ZX/qzA9q1jFYAT1ayq9Tc+3//Gv1Cp6s9UuiVLpUcet8crrgjHNg+Pj55pfrhdNCVLK4r4ZGzDXOzIGcls/6fNkF3hZdh2vCyN76858e/P0GxJU8ToDA63Etdb+CMlvhzVhF96AotXqhgZo35qad2+1wxi/7jOfbu/8LjZq4UBvjJmR7qZt93e2O14b3Z/yyd/aU1n2xn3atny3fX2+c6hE0Qe1fekZNG9SygSRXa8w4ByJnxClv3jwK6d/RXHffgS8VNm2x1i76/xtpMxsQcyDn2pRV4D30xXENGzfPLHhwIHA7AgTe29HjvTkikDHwXr5yVceOf6dqlcqnnb9z/3Hq0rqpnm34WI5c0+aTZPyy//rbU/ItUjht5dC5OWT8zDfT7al2vG72dTbb3mrtmX3Z12neV397PUz3lSllTusE3s6tmqjRkzVu9TK871eBjHNgyar35ezvjRzmlxZ4I2csM/43HsyB3PsIZRV4Zy5crYTERA3u0y73Ls6ZrRAg8FrRZtcuMmPg/fHiJTVpP1jR4f1Vt9ZftG33AQWHx+rdpVG6q0RR1y7GDUaX8ct+SuxKHTv+v5o6pp+c7SQDx8wyN7cN7N1W35w8rVOnz5l9vdm9zg3KdukhZvZl7wSuKwmJCh3UVUeOnZTf4EnMgRzqYsY54Nww2KLbcC2aFqJyD95rtjTc84eSch7P5zyurJhvYTMnmAM51IBMTpNV4O03fLoa16+pl5+rn3sX58xWCBB4rWizaxa5Zds+DQ6bI6Wk6Nr1JHl55VfZ+8to9cIIbd25X5PnLNfZ8z+aFa4h/TqoTo1KrlmIG4zK+SWiYetAM1LnWZaOtXNsWTFFPoW8zT/ffrxrv7zy59fTdatraP+OKuRdQCvWfqhNW/dqwdQhclbes3qdGxC45BCjZr6p5Ws/VHJyslJSUpQvXz61ad5AI17rYsLuiKj5+mTPIfOLXnDf9qY3HLcmkN0ccG6Mdf7OCZ+2WAlXr5l7B8YM6m5u3Bw0drb+VPaP6vNKC+bArdFn+67s5oDzxlavjlagXxvVr10lF67OKW0SIPDa1G1qRQABBBBAAAEELBQg8FrYdEpGAAEEEEAAAQRsEiDw2tRtakUAAQQQQAABBCwUIPBa2HRKRgABBBBAAAEEbBIg8NrUbWpFAAEEEEAAAQQsFCDwWth0SkYAAQQQQAABBGwSIPDa1G1qRQABBBBAAAEELBQg8FrYdEpGAAEEEEAAAQRsEiDw2tRtakUAAQQQQAABBCwUIPBa2HRKRgABBBBAAAEEbBIg8NrUbWpFAAEEEEAAAQQsFCDwWth0SkYAAQQQQAABBGwSIPDa1G1qRQABBBBAAAEELBQg8FrYdEpGAAEEEEAAAQRsEiDw2tRtakUAAQQQQAABBCwUIPBa2HRKRgABBBBAAAEEbBIg8NrUbWpFAAEEEEAAAQQsFCDwWth0SkbAFQW+PvFPzV2yTjv3HdZPly7r7lIl1KhedfXt+pKKFS3sikPOtTFdSUjUO5t3qO2LDbO8xrnzP2rY+Pnaufew9n+wQPnz5cu18XBiBBBAwN0FCLzu3kHGj4AHCBw88o26B0Wp6p/Ly69Tc919V3F9c/K0YpesVeK161o1b6wKeRfwgEpvrgQnxE6dt0qr5o3J9A2O14BRM1TvsSpavXEbgffmWHkVAghYLEDgtbj5lI6Aqwi06TVGRX19NH9SsPLmzZM2LGelNzh8jgb0bKVKDz+k09+fV0T0UsUfOqYCXl6qUeVhjQzsopLFffXRjniNnxGnnh2e16r1W/XP739Q6xcaqN7jVRSz4G2dOnNO1SpV0KTR/vLKn08R05ealeRC3gW198AXunDxJ/Vo/7x5v3MkXE3UlNgV+nB7vC5fSVDFCg9oUJ92qvJIWf18OUGPP99H0eEBWrzyPZ07f1GFfbw1YURvVSh7n3n/d6fPaVz0Mu3//CslJSWraYPHNHxAZxPcU8far/vLevPtLTp7/oKpb+LIPjrw+dfyD5mq60nJ8i7opRVzx6j8g/ema9Unew7prhJFzbi6BEQSeF3lg8w4EEDAZQUIvC7bGgaGgB0CToht3G6QXp8crCdqVc6y6JSUFL3cY5QqV3zIBEcnkAaOnmmC8qzIQG3bfVABI6MV0KOlCa2744+oR9AEPf9MbY0f3ktXrlzVsx2CFTG0pxo9WUPjY+K0Yt1Hig4LUIMnqsnZUtHGL1SxEwbp8eqPmED8j8NfKSZigEoU99X0+W9pwwe7tGn5ZOXJk0c1mvqpfu0qmjY2wITYIeGxSkhM1IzwAUpOTtFL3UeoTs1KCurVVglXrypk3DyVKllM40JeTRtr1zbPKqhXGzlbGFr2HKlOLZuoc6smWrLqfb2zeWeWK7ypSJ8d/JLAa8c0oUoEELhNAQLvbQLydgQQuD2BT+OPmu0MW9+ONoEwq8NZ+ezYL0Lb18SoeLEi5mXOSmfvIVO07/15cs7TZ+gU7dkYK59C3rqaeM2EUiewOgHXOZzVUGdfcPf2z5nAu+uzz7V20bi0S/YKnqxyD96rof06qOazvTRplL+eqf/Le51V3Xot+ml2VJBqVq1ozu2E29Sfv7V+q95Y+Z7WLxmvfQe+NGF794Y58i74y1YMZ/yvDIjUno1zteuzI2asO9fPVtEiPubnQyPmysfHW6EDuxJ4b+8jxbsRQACB3wgQePlQIIDAHRXY84+j6hYYpQ9WTVWZu0tmOZZ3P9ilibP+aoJx6pG6Orxh2QSdPHVWg8bO0qcbYtN+XrlhN8XNGqlHK1cwf9Zz4EQ99ugj6vNKCxN4T53+QTMjX0t7/cgJC3T5ylUNC+iohq0C9e7SKD10f5m0nzdtP1h+nZurRdN6JvAujw01Wxyc451NOxS94G/asmKK2VfrnCuz4/2/TtLxk2cUODrGBPXUY9TEhUpKSlLkMD8C7x39RHJxBBDwRAECryd2lZoQcCOB789dUKM2QWZbQsO6j/5m5NeuJ5k9t9kF3jWLInTm7AUNDput3e/OSRd435w9StUqlc808J747ozZwpB6DIucr8Rr1xTSP+vA27VtM7Vu3sAE3hVzQ/WXir8NvBs/3K2wqYvNCm5mh7P9Iig0RnvfI/C60UeVoSKAgBsLEHjduHkMHQFPEejYN9zc2LVs1kgTblOPSz9fUXv/MAX5tVHpUsXVoW+4tq2ZoRLFfM1LnC0NztYAJ+TuO3Dsvw68H+86oI1xE9Ku52w5qPJIOQ32b6dazXorakQvNXmqlvl56paGmHGBZo9vdoH38Bffqm3vMdqycqruKf3LqrWzcuzsO3ZusCPwesonlzoQQMBdBAi87tIpxomABwscOXZCrwwYr3IP3KP+PV7WPaXvMo8lm/3GGhUqVFBvTA9RAa/8avXqaFWuWNbctOY8YSEodKbKlC6pKaF9TYj8b1d4na0Hg/3b6+Xn6mv3Z5+r77Bp5lo+G58KAAAD9ElEQVTO0x8iZyxT/KGvzMqzbxEf88SGv++I18a4iUpOSck28Dqtatd7rErfXULhwT2UL19es4Xi9NnzWjQt5D8G3pXrPtKcJWu1ekGEfAoVVIECXum6/+PFS+YGuUNHj+u1UTHavHyy8ubLq2K+Rax6fJsHTwlKQwCBHBYg8OYwKKdDAIFbE3CekjBr0Rp9Gn9Ely5fMSujzZ6ubZ7L64Q+5zh+8rQiZ8Tp0NFvTBBuWLe6Bvdpa25Su5XA62yncFaO123aIedhaL27tFC3ds1+XZFNMI8Vc1aRExOvqVrlCho+oJPuv7d02g1xWW1pcE7gPJbMedLD3v1HTWCtU6OSCerOjXn/aYXX2Zvs7Gt2/ucS8ycHq2bVh9OhBoyI1oefxP8GOmp4L73YtO6tNYB3IYAAAh4sQOD14OZSGgIIZC3grLg6gXd6WH+YEEAAAQQ8XIDA6+ENpjwEEMhcgMDLJwMBBBCwR4DAa0+vqRQBBG4QIPDycUAAAQTsESDw2tNrKkUAAQQQQAABBKwUIPBa2XaKRgABBBBAAAEE7BEg8NrTaypFAAEEEEAAAQSsFCDwWtl2ikYAAQQQQAABBOwRIPDa02sqRQABBBBAAAEErBQg8FrZdopGAAEEEEAAAQTsESDw2tNrKkUAAQQQQAABBKwUIPBa2XaKRgABBBBAAAEE7BEg8NrTaypFAAEEEEAAAQSsFCDwWtl2ikYAAQQQQAABBOwRIPDa02sqRQABBBBAAAEErBQg8FrZdopGAAEEEEAAAQTsESDw2tNrKkUAAQQQQAABBKwUIPBa2XaKRgABBBBAAAEE7BEg8NrTaypFAAEEEEAAAQSsFCDwWtl2ikYAAQQQQAABBOwRIPDa02sqRQABBBBAAAEErBQg8FrZdopGAAEEEEAAAQTsESDw2tNrKkUAAQQQQAABBKwUIPBa2XaKRgABBBBAAAEE7BEg8NrTaypFAAEEEEAAAQSsFCDwWtl2ikYAAQQQQAABBOwRIPDa02sqRQABBBBAAAEErBQg8FrZdopGAAEEEEAAAQTsESDw2tNrKkUAAQQQQAABBKwUIPBa2XaKRgABBBBAAAEE7BEg8NrTaypFAAEEEEAAAQSsFCDwWtl2ikYAAQQQQAABBOwRIPDa02sqRQABBBBAAAEErBQg8FrZdopGAAEEEEAAAQTsESDw2tNrKkUAAQQQQAABBKwUIPBa2XaKRgABBBBAAAEE7BEg8NrTaypFAAEEEEAAAQSsFCDwWtl2ikYAAQQQQAABBOwRIPDa02sqRQABBBBAAAEErBQg8FrZdopGAAEEEEAAAQTsESDw2tNrKkUAAQQQQAABBKwU+DfKemCI6QMflQAAAABJRU5ErkJggg==" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### The cluster relative to the whole embeddings space." + ], + "metadata": { + "id": "aYio2usqFxyD" + } + }, + { + "cell_type": "code", + "source": [ + "df_all = pd.DataFrame({\n", + " 'Component 1': reduced_embeddings[:, 0],\n", + " 'Component 2': reduced_embeddings[:, 1],\n", + " 'Language': languages\n", + "})\n", + "\n", + "# Plot the entire dataset\n", + "fig = px.scatter(df_all, x='Component 1', y='Component 2', color='Language', opacity=0.3)\n", + "\n", + "# Overlay the selected cluster\n", + "fig.add_scatter(x=df_selected['Component 1'], y=df_selected['Component 2'], mode='markers', text=df_selected['Sentence'],\n", + " name='Selected Cluster', marker=dict(color='green'), textposition='top center')\n", + "\n", + "# Update layout\n", + "fig.update_layout(title=f'Sentences in Cluster {random_cluster} (highlighted in green)', showlegend=True)\n", + "fig.show(\"png\")\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 517 + }, + "id": "knwAXi4EFwx_", + "outputId": "995a1a20-0d73-4329-dd60-03cbf757408e" + }, + "execution_count": 22, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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znnvblOT4XzA7LG/v4mbpvzFeXuB/fdXzXwIc26+BEN2HuA8P/mGOc4d3Z0Hbt8p4bXv/NrXFgryI7j02nudug/eOgnryjc4H1qbcsGpOGbMr/DjT8th38E974yxOOGYQ9sVXvs9uhdefRfuuPY85zVr879b5LyJ4m8zzsfeew5pV3gP/v0Fzgfkjj3qIBQV5idNqcmIo6Kq2vmzS6ffg6E774Azxh/pnILb93/5RQIkQAIk4B0BCq93bJmZBLKegGlaePL5t/Dcqx9g6cq1zlsTdhs80LkTu/WryuY8+Qqef+0DlFfWYGD/Mlz853HY95e7Onw6c6VhxmV/gv2Kr6Ur1mLITv1hf4htu17dnHz269LuevgFLF2xBj27l+CksYfj5N8f7rxFob0TXjv+iefecnLbb2Ow7+VOOPlo59Vlm3vd1gnvXQ+9gAfnvoaRw4cm3RO2Y+03Txx75tUpe8K+B/3GUzOzfq9wgSRAAiSgkgCFVyV91iYBEkiLwObXktlXFuzTYX6RAAmQAAmQQEcIUHg7QonPkAAJ+IIAhdcXY2ATJEACJJBxBCi8GTcyNkwCuUuAwpu7s+fKSYAESECEAIVXhB5jSYAESIAESIAESIAEfE+Awuv7EbFBEiABEiABEiABEiABEQIUXhF6jCUBEiABEiABEiABEvA9AQqv70fEBkmABEiABEiABEiABEQIUHhF6DGWBEiABEiABEiABEjA9wQovL4fERskARIgARIgARIgARIQIUDhFaHHWBIgARIgARIgARIgAd8ToPD6fkRskARIgARIgARIgARIQIQAhVeEHmNJgARIgARIgARIgAR8T4DC6/sRsUESIAESIAESIAESIAERAhReEXqMJQESIAESIAESIAES8D0BCq/vR8QGSYAESIAESIAESIAERAhQeEXoMZYESIAESIAESIAESMD3BCi8vh8RGyQBEiABEiABEiABEhAhQOEVocdYEiABEiABEiABEiAB3xOg8Pp+RGyQBEiABEiABEiABEhAhACFV4QeY0mABEiABEiABEiABHxPgMLr+xGxQRIgARIgARIgARIgARECFF4ReowlARIgARIgARIgARLwPQEKr+9HxAZJgARIgARIgARIgARECFB4RegxlgRIgARIgARIgARIwPcEKLy+HxEbJAESIAESIAESIAESECFA4RWhx1gSIAESIAESIAESIAHfE6Dw+n5EbJAESIAESIAESIAESECEAIVXhB5jSYAESIAESIAESIAEfE+Awuv7EbFBEiABEiABEiABEiABEQIUXhF6jCUBEiABEiABEiABEvA9AQqv70fEBkmABEiABEiABEiABEQIUHhF6DGWBEiABEiABEiABEjA9wQovL4fERskARIgARIgARIgARIQIUDhFaHHWBIgARIgARIgARIgAd8ToPD6fkRskARIgARIgARIgARIQIQAhVeEHmNJgARIgARIgARIgAR8T4DC6/sRsUESIAESIAESIAESIAERAhReEXqMJQESIAESIAESIAES8D0BCq/vR8QGSYAESIAESIAESIAERAhQeEXoMZYESIAESIAESIAESMD3BP4/yZFztZgYKMwAAAAASUVORK5CYII=" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "## Conclusion.\n", + "\n", + "In this tutorial, we explored how to perform multilingual text clustering using the MASSIVE dataset. We loaded the text data, applied K-Means clustering, and evaluated our clusters using differnet clustering performance evaluation metrics. The visualization and analysis helped us understand the efficacy of LASER across different languages." + ], + "metadata": { + "id": "pNgGeWRF-eyI" + } + } + ] +} \ No newline at end of file diff --git a/laser/tasks/clustering/README.md b/laser/tasks/clustering/README.md new file mode 100644 index 0000000000000000000000000000000000000000..381a08535e8636caefdbec8126254948d118908d --- /dev/null +++ b/laser/tasks/clustering/README.md @@ -0,0 +1,19 @@ +# Laser Encoder: Sentiment Analysis + +## Overview + +In this tutorial, we'll explore the power of Language-Agnostic SEntence Representations ([LASER](https://github.com/facebookresearch/LASER)) for generating multilingual embeddings. We'll then use these embeddings to perform clustering on the [MASSIVE](https://github.com/alexa/massive) dataset. Our goal was to show that LASER embeddings can effectively group texts not only by their semantic content but also across different languages. LASER can encode sentences from multiple languages into a shared embedding space, allowing for cross-lingual understanding and comparison. We'll see how this capability is useful for tasks like multilingual embeddings clustering. + +## Getting Started + +To run the notebook in Google Colab, simply click the "Open in Colab" button below: + +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Paulooh007/LASER/blob/laser-clustering/tasks/clustering/LaserClusteringExample.ipynb) + +## Simple interactive Demo +To better understand this tutorial, you can checkout this interactive demo hosted on huggingface spaces. + +[![Open in Spaces](https://huggingface.co/datasets/huggingface/badges/raw/main/open-in-hf-spaces-lg.svg)](https://huggingface.co/spaces/paulokewunmi/laser_multilingual_embeddings_viz) + + + diff --git a/laser/tasks/librivox-s2s/README.md b/laser/tasks/librivox-s2s/README.md new file mode 100644 index 0000000000000000000000000000000000000000..42bc4f29f280b3201f49cd188bcbb3e9b7060e92 --- /dev/null +++ b/laser/tasks/librivox-s2s/README.md @@ -0,0 +1,32 @@ +# Librivox S2S: Automatically mined Speech-to-Speech translations + +## Abstract + +We present an approach to encode a speech signal into a fixed-size representation which minimizes the cosine loss with the existing massively multilingual LASER text embedding space. Sentences are close in this embedding space, independently of their language and modality, either text or audio. Using a similarity metric in that multimodal embedding space, we perform mining of audio in German, French, Spanish and English from [*Librivox*](https://librivox.org/) against billions of sentences from Common Crawl. This yielded more than twenty thousand hours of aligned speech translations. To evaluate the automatically mined speech/text corpora, we train neural speech translation systems for several languages pairs. Adding the mined data, achieves significant improvements in the BLEU score on the CoVoST2 and the MUST-C test sets with respect to a very competitive baseline. Our approach can also be used to directly perform speech-to-speech mining, without the need to first transcribe or translate the data. We obtain more than one thousand three hundred hours of aligned speech in French, German, Spanish and English. This speech corpus has the potential to boost research in speech-to-speech translation which suffers from scarcity of natural end-to-end training data. + +## Download + +Manifest files for all languages directions are available [*here*](https://dl.fbaipublicfiles.com/librivox_s2s/manifests.zip). +S2S alignments are sorted by decreasing mining scores (first column). Audios files for each language direction can be downloaded separately. For each language direction, we give the amount of aligned hours in the source and target language. + +- [*English-French*](https://dl.fbaipublicfiles.com/librivox_s2s/ena-fra.zip) (470h / 447h) +- [*English-German*](https://dl.fbaipublicfiles.com/librivox_s2s/dea-ena.zip) (363h / 324h) +- [*English-Spanish*](https://dl.fbaipublicfiles.com/librivox_s2s/ena-esa.zip) (425h / 442h) +- [*French-German*](https://dl.fbaipublicfiles.com/librivox_s2s/dea-fra.zip) (33h / 38h) +- [*French-Spanish*](https://dl.fbaipublicfiles.com/librivox_s2s/esa-fra.zip) (101h / 111h) +- [*German-Spanish*](https://dl.fbaipublicfiles.com/librivox_s2s/dea-esa.zip) (41h / 40h) + +The aligned Speech-to-Speech segments are distributed under the same copyright than [*Librivox*](https://librivox.org/). + +Please cite reference [1] if you use this data. +The mined speech-to-speech data was successfully used to train Speech-to-Speech translation systems [2]. + + +## References + +[1] Paul-Ambroise Duquenne, Hongyu Gong, Holger Schwenk, + [*Multimodal and Multilingual Embeddings for Large-Scale Speech Mining,*](https://papers.nips.cc/paper/2021/hash/8466f9ace6a9acbe71f75762ffc890f1-Abstract.html), NeurIPS 2021, pages 15748-15761. + +[2] Ann Lee, Hongyu Gong, Paul-Ambroise Duquenne, Holger Schwenk, Peng-Jen Chen, Changhan Wang, Sravya Popuri, Juan Pino, Jiatao Gu, Wei-Ning Hsu, + [*Textless Speech-to-Speech Translation on Real Data*](https://arxiv.org/abs/2112.08352), arXiv Dec 15 2021. to appear at NAACL'22. + diff --git a/laser/tasks/mldoc/README.md b/laser/tasks/mldoc/README.md new file mode 100644 index 0000000000000000000000000000000000000000..0bbc155ade6f87df5bcb0e485f749cab9cdeb5aa --- /dev/null +++ b/laser/tasks/mldoc/README.md @@ -0,0 +1,51 @@ +# LASER: application to cross-lingual document classification + +This codes shows how to use the multilingual sentence embedding for +cross-lingual document classification, using the MLDoc corpus [1]. + +We train a document classifier on one language (e.g. English) and apply it then +to several other languages without using any resource of that language +(e.g. German, Spanish, French, Italian, Japanese, Russian and Chinese) + +## Installation + +* Please first download the MLDoc corpus from + [here](https://github.com/facebookresearch/MLDoc) + and install it in the directory MLDoc +* Calculate the multilingual sentence embeddings for all languages + and train the classifier `bash ./mldoc.sh` + +## Results + +We use an MLP classifier with two hidden layers and Adam optimization. + +You should get the following results for zero-short cross-lingual transfer +These results are in average better than those reported in [2] since the system has +been improved since publication. + +| Train language | En | De | Es | Fr | It | Ja | Ru | Zh | +|----------------|--------|--------|--------|--------|--------|--------|--------|-------| +| English (en) | 90.73 | 86.25 | 79.30 | 78.03 | 70.20 | 60.95 | 67.25 | 70.98 | +| German (de) | 80.75 | 92.70 | 79.60 | 82.83 | 73.25 | 56.80 | 68.18 | 72.90 | +| Spanish (es) | 69.58 | 79.73 | 88.75 | 75.30 | 71.10 | 59.65 | 59.83 | 61.70 | +| French (fr) | 80.08 | 87.03 | 78.40 | 90.80 | 71.08 | 53.60 | 67.55 | 66.12 | +| Italian (it) | 74.15 | 80.73 | 82.60 | 78.35 | 85.93 | 55.15 | 68.83 | 56.10 | +| Japanese (ja) | 68.45 | 81.90 | 67.95 | 67.95 | 57.98 | 85.15 | 53.70 | 66.12 | +| Russian (ru) | 72.60 | 79.62 | 68.18 | 71.28 | 67.00 | 59.23 | 84.65 | 65.62 | +| Chinese (zh) | 77.95 | 83.38 | 78.38 | 75.83 | 70.33 | 55.25 | 66.62 | 88.98 | + +All numbers are accuracies on the test set. + +## References + +Details on the corpus are described in this paper: + +[1] Holger Schwenk and Xian Li, + [*A Corpus for Multilingual Document Classification in Eight Languages*](http://www.lrec-conf.org/proceedings/lrec2018/pdf/658.pdf), + LREC, pages 3548-3551, 2018. + +Detailed system description: + +[2] Mikel Artetxe and Holger Schwenk, + [*Massively Multilingual Sentence Embeddings for Zero-Shot Cross-Lingual Transfer and Beyond*](https://arxiv.org/abs/1812.10464), + arXiv, Dec 26 2018. diff --git a/laser/tasks/mldoc/mldoc.py b/laser/tasks/mldoc/mldoc.py new file mode 100644 index 0000000000000000000000000000000000000000..a68298169667a44e2a93c55a5808946cee7caedd --- /dev/null +++ b/laser/tasks/mldoc/mldoc.py @@ -0,0 +1,101 @@ +#!/usr/bin/python +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# -------------------------------------------------------- +# +# Calculate embeddings of MLDoc corpus + + +import os +import sys +import argparse + +# get environment +assert os.environ.get('LASER'), 'Please set the enviornment variable LASER' +LASER = os.environ['LASER'] + +sys.path.append(LASER + '/source') +sys.path.append(LASER + '/source/tools') +from embed import SentenceEncoder, EncodeLoad, EncodeFile +from text_processing import Token, BPEfastApply, SplitLines, JoinEmbed + + +############################################################################### + +parser = argparse.ArgumentParser('LASER: calculate embeddings for MLDoc') +parser.add_argument( + '--mldoc', type=str, default='MLDoc', + help='Directory of the MLDoc corpus') +parser.add_argument( + '--data_dir', type=str, default='embed', + help='Base directory for created files') + +# options for encoder +parser.add_argument( + '--encoder', type=str, required=True, + help='Encoder to be used') +parser.add_argument( + '--bpe_codes', type=str, required=True, + help='Directory of the tokenized data') +parser.add_argument( + '--lang', '-L', nargs='+', default=None, + help="List of languages to test on") +parser.add_argument( + '--buffer-size', type=int, default=10000, + help='Buffer size (sentences)') +parser.add_argument( + '--max-tokens', type=int, default=12000, + help='Maximum number of tokens to process in a batch') +parser.add_argument( + '--max-sentences', type=int, default=None, + help='Maximum number of sentences to process in a batch') +parser.add_argument( + '--cpu', action='store_true', + help='Use CPU instead of GPU') +parser.add_argument( + '--verbose', action='store_true', + help='Detailed output') +args = parser.parse_args() + +print('LASER: calculate embeddings for MLDoc') + +if not os.path.exists(args.data_dir): + os.mkdir(args.data_dir) + +enc = EncodeLoad(args) + +print('\nProcessing:') +for part in ('train1000', 'dev', 'test'): + # for lang in "en" if part == 'train1000' else args.lang: + for lang in args.lang: + cfname = os.path.join(args.data_dir, 'mldoc.' + part) + Token(cfname + '.txt.' + lang, + cfname + '.tok.' + lang, + lang=lang, + romanize=(True if lang == 'el' else False), + lower_case=True, gzip=False, + verbose=args.verbose, over_write=False) + SplitLines(cfname + '.tok.' + lang, + cfname + '.split.' + lang, + cfname + '.sid.' + lang) + BPEfastApply(cfname + '.split.' + lang, + cfname + '.split.bpe.' + lang, + args.bpe_codes, + verbose=args.verbose, over_write=False) + EncodeFile(enc, + cfname + '.split.bpe.' + lang, + cfname + '.split.enc.' + lang, + verbose=args.verbose, over_write=False, + buffer_size=args.buffer_size) + JoinEmbed(cfname + '.split.enc.' + lang, + cfname + '.sid.' + lang, + cfname + '.enc.' + lang) diff --git a/laser/tasks/mldoc/mldoc.sh b/laser/tasks/mldoc/mldoc.sh new file mode 100755 index 0000000000000000000000000000000000000000..5c9ecfa34c51bce583d0ea147ba19bc73ae4d4df --- /dev/null +++ b/laser/tasks/mldoc/mldoc.sh @@ -0,0 +1,138 @@ +#!/bin/bash +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# -------------------------------------------------------- +# +# bash script to calculate sentence embeddings for the MLDoc corpus, +# train and evaluate the classifier + +if [ -z ${LASER+x} ] ; then + echo "Please set the environment variable 'LASER'" + exit +fi + +# general config +mldir="MLDoc" # raw texts of MLdoc +edir="embed" # normalized texts and embeddings +languages=('en' 'de' 'es' 'fr' 'it' 'ja' 'ru' 'zh') + +# encoder +model_dir="${LASER}/models" +encoder="${model_dir}/bilstm.93langs.2018-12-26.pt" +bpe_codes="${model_dir}/93langs.fcodes" + +edir="embed" + +################################################################### +# +# Extract files with labels and texts from the MLdoc corpus +# +################################################################### + +ExtractMLdoc () { + ifname=$1 + ofname=$2 + lang=$3 + if [ ! -f ${ifname}.${lang} ] ; then + echo "Please install the MLDoc corpus first" + exit + fi + + if [ ! -f ${ofname}.lbl.${lang} ] ; then + echo " - extract labels from ${ifname}.${lang}" + cut -d' ' -f1 ${ifname}.${lang} \ + | sed -e 's/C/0/' -e 's/E/1/' -e 's/G/2/' -e 's/M/3/' \ + > ${ofname}.lbl.${lang} + fi + if [ ! -f ${ofname}.txt.${lang} ] ; then + echo " - extract texts from ${ifname}.${lang}" + # remove text which is not useful for classification + cut -d' ' -f2 ${ifname}.${lang} \ + | sed -e 's/ Co \./ Co./g' -e s'/ Inc \. / Inc. /g' \ + -e 's/([cC]) Reuters Limited 199[0-9]\.//g' \ + > ${ofname}.txt.${lang} + fi +} + + +################################################################### +# +# Create all files +# +################################################################### + +# create output directories +for d in ${edir} ; do + mkdir -p ${d} +done + +# Embed all data +echo -e "\nExtracting MLDoc data" +#ExtractMLdoc ${mldir}/mldoc.train1000 ${edir}/mldoc.train1000 "en" +for part in "mldoc.train1000" "mldoc.dev" "mldoc.test" ; do + for l in ${languages[@]} ; do + ExtractMLdoc ${mldir}/${part} ${edir}/${part} ${l} + done +done + +MECAB="${LASER}/tools-external/mecab" +export LD_LIBRARY_PATH="${MECAB}/lib:${LD_LIBRARY_PATH}" +python3 mldoc.py --data_dir ${edir} --lang ${languages[@]} --bpe_codes ${bpe_codes} --encoder ${encoder} + +# MLDoc classifier parameters +nb_cl=4 +N=500 +lr=0.001 +wd=0.0 +nhid="10 8" +drop=0.2 +seed=1 +bsize=12 + +echo -e "\nTraining MLDoc classifier (log files in ${edir})" +#for ltrn in "en" ; do +for ltrn in ${languages[@]} ; do + ldev=${ltrn} + lf="${edir}/mldoc.${ltrn}-${ldev}.log" + echo " - train on ${ltrn}, dev on ${ldev}" + if [ ! -f ${lf} ] ; then + python3 ${LASER}/source/sent_classif.py \ + --gpu 0 --base-dir ${edir} \ + --train mldoc.train1000.enc.${ltrn} \ + --train-labels mldoc.train1000.lbl.${ltrn} \ + --dev mldoc.dev.enc.${ldev} \ + --dev-labels mldoc.dev.lbl.${ldev} \ + --test mldoc.test.enc \ + --test-labels mldoc.test.lbl \ + --nb-classes ${nb_cl} \ + --nhid ${nhid[@]} --dropout ${drop} --bsize ${bsize} \ + --seed ${seed} --lr ${lr} --wdecay ${wd} --nepoch ${N} \ + --lang ${languages[@]} \ + > ${lf} + fi +done + +# display results +echo -e "\nAccuracy matrix:" +echo -n "Train " +for l1 in ${languages[@]} ; do + printf " %2s " ${l1} +done +echo "" +for l1 in ${languages[@]} ; do + lf="${edir}/mldoc.${l1}-${l1}.log" + echo -n " ${l1}: " + for l2 in ${languages[@]} ; do + grep "Test lang ${l2}" $lf | sed -e 's/%//' | awk '{printf(" %5.2f", $10)}' + done + echo "" +done diff --git a/laser/tasks/pxsim/README.md b/laser/tasks/pxsim/README.md new file mode 100644 index 0000000000000000000000000000000000000000..e9b39b3b4df2c6a89b3369c9155bbeb4bf3ed8d3 --- /dev/null +++ b/laser/tasks/pxsim/README.md @@ -0,0 +1,27 @@ +# LASER: P-xSIM (dual approach multilingual similarity error rate) + +This README shows how to calculate the P-xSIM error rate (Seamless Communication et al., 2023) for a given language pair. + +P-xSIM returns the error rate for recreating gold alignments using a blended combination of two different approaches. +It works by performing a k-nearest-neighbor search and margin calculation (i.e. margin-based parallel alignment) using the +first approach, followed by the scoring of each candidate neighbor using an auxiliary model (the second approach). Finally, +the scores of both the margin-based alignment and the auxiliary model are combined together using a blended score defined as: + +$$ \text{blended-score}(x, y) = \alpha \cdot \text{margin} + (1 - \alpha) \cdot \text{auxiliary-score} $$ + +where the parameter $\alpha$ controls the combination of both the margin-based and auxiliary scores. By default, the auxiliary-score will be calculated as the cosine between the source and candidate neighbors using the auxiliary embeddings. However, there is also an option to perform inference using a comparator model (Seamless Communication et al., 2023). In this instance, the auxiliary-score will be the AutoPCP outputs. + +P-xSIM offers three margin-based scoring options (discussed in detail [here](https://arxiv.org/pdf/1811.01136.pdf)): +- distance +- ratio +- absolute + +## Example usage + +Simply run the example script `bash ./eval.sh` to download a sample dataset (flores200), sample encoders (laser2 and LaBSE), +and then perform P-xSIM. In this toy example, we use laser2 to provide the k-nearest-neighbors, followed by applying LaBSE as an +auxiliary model on each candidate neighbor, before then applying the blended scoring function defined above. Dependending on +your data sources, you may want to alter the approach used for either margin-based parallel alignment, or the scoring of each candidate neighbor +(i.e. the auxiliary model). + +In addition to LaBSE in the example above, you can also calculate P-xSIM using any model hosted on [HuggingFace sentence-transformers](https://huggingface.co/sentence-transformers). diff --git a/laser/tasks/pxsim/eval.sh b/laser/tasks/pxsim/eval.sh new file mode 100755 index 0000000000000000000000000000000000000000..336cf94966312ddd87a2132c252b7abc778d49f2 --- /dev/null +++ b/laser/tasks/pxsim/eval.sh @@ -0,0 +1,98 @@ +#!/bin/bash +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for various tasks such as document classification, +# and bitext filtering +# +#------------------------------------------------------- +# +# This bash script downloads the flores200 dataset, laser2, and then +# performs pxsim evaluation + +if [ -z ${LASER} ] ; then + echo "Please set the environment variable 'LASER'" + exit +fi + +ddir="${LASER}/data" +cd $ddir # move to data directory + +if [ ! -d $ddir/flores200 ] ; then + echo " - Downloading flores200..." + wget --trust-server-names -q https://tinyurl.com/flores200dataset + tar -xf flores200_dataset.tar.gz + /bin/mv flores200_dataset flores200 + /bin/rm flores200_dataset.tar.gz +else + echo " - flores200 already downloaded" +fi + +cd - + +mdir="${LASER}/models" +if [ ! -d ${mdir} ] ; then + echo " - creating model directory: ${mdir}" + mkdir -p ${mdir} +fi + +function download { + file=$1 + save_dir=$2 + if [ -f ${save_dir}/${file} ] ; then + echo " - ${save_dir}/$file already downloaded"; + else + cd $save_dir + echo " - Downloading $s3/${file}"; + wget -q $s3/${file}; + cd - + fi +} + +# available encoders +s3="https://dl.fbaipublicfiles.com/nllb/laser" + +if [ ! -f ${mdir}/laser2.pt ] ; then + cd $mdir + echo " - Downloading $s3/laser2.pt" + wget --trust-server-names -q https://tinyurl.com/nllblaser2 + cd - +else + echo " - ${mdir}/laser2.pt already downloaded" +fi +download "laser2.spm" $mdir +download "laser2.cvocab" $mdir + +# encode FLORES200 texts using both LASER2 and LaBSE +for lang in eng_Latn wol_Latn; do + infile=$LASER/data/flores200/devtest/$lang.devtest + python3 ${LASER}/source/embed.py \ + --input $infile \ + --encoder $mdir/laser2.pt \ + --spm-model $mdir/laser2.spm \ + --output $lang.devtest.laser2 \ + --verbose + + python3 ${LASER}/source/embed.py \ + --input $infile \ + --encoder LaBSE \ + --use-hugging-face \ + --output $lang.devtest.labse \ + --verbose +done + +# run pxsim using LaBSE as an auxiliary scoring model +echo " - calculating p-xsim" +python3 $LASER/source/pxsim.py run \ + --src_emb wol_Latn.devtest.laser2 \ + --tgt_emb eng_Latn.devtest.laser2 \ + --src_aux_emb wol_Latn.devtest.labse \ + --tgt_aux_emb eng_Latn.devtest.labse \ + --alpha 0.1 \ + --k 32 \ + --aux_emb_dim 768 diff --git a/laser/tasks/similarity/README.md b/laser/tasks/similarity/README.md new file mode 100644 index 0000000000000000000000000000000000000000..202604cce5f2f693be2fc2469ff6a338d422d451 --- /dev/null +++ b/laser/tasks/similarity/README.md @@ -0,0 +1,29 @@ +# LASER: application to multilingual similarity search + +This codes shows how to embed an N-way parallel corpus (we +use the publicly available newstest2012 from WMT 2012), and +how to calculate the similarity search error rate for each language pair. + +For each sentence in the source language, we calculate the closest sentence in +the joint embedding space in the target language. If this sentence has the same +index in the file, it is considered as correct, and as an error else wise. +Therefore, the N-way parallel corpus **should not contain duplicates.** + +## Installation + +* simply run the script `bash ./wmt.sh` + to downloads the data, calculate the sentence embeddings + and the similarity search error rate for each language pair. + +## Results + +You should get the following similarity search errors: + +| | cs | de | en | es | fr | avg | +|-----|-------|-------|-------|--------|-------|-------| +| cs | 0.00% | 0.70% | 0.90% | 0.67% | 0.77% | 0.76% | +| de | 0.83% | 0.00% | 1.17% | 0.90% | 1.03% | 0.98% | +| en | 0.93% | 1.27% | 0.00% | 0.83% | 1.07% | 1.02% | +| es | 0.53% | 0.77% | 0.97% | 0.00% | 0.57% | 0.71% | +| fr | 0.50% | 0.90% | 1.13% | 0.60% | 0.00% | 0.78% | +| avg | 0.70% | 0.91% | 1.04% | 0.75% | 0.86% | 1.06% | diff --git a/laser/tasks/similarity/wmt.sh b/laser/tasks/similarity/wmt.sh new file mode 100755 index 0000000000000000000000000000000000000000..7e9c60f3e830c98989398e61f586f7f337d19007 --- /dev/null +++ b/laser/tasks/similarity/wmt.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# -------------------------------------------------------- +# +# evaluate similarity search on WMT newstest2011 + +if [ -z ${LASER+x} ] ; then + echo "Please set the environment variable 'LASER'" + exit +fi + +# encoder +model_dir="${LASER}/models" +encoder="${model_dir}/bilstm.93langs.2018-12-26.pt" +bpe_codes="${model_dir}/93langs.fcodes" + +edir="embed" + + +if [ ! -d dev ] ; then + echo " - Download WMT data" + wget -q http://www.statmt.org/wmt13/dev.tgz + tar --wildcards -xf dev.tgz "dev/newstest2012.??" + /bin/rm dev.tgz +fi + +python3 ${LASER}//source/similarity_search.py \ + --bpe-codes ${bpe_codes} --encoder ${encoder} \ + --base-dir . \ + --data dev/newstest2012 --output ${edir}/newstest2012 \ + --lang cs de en es fr --verbose diff --git a/laser/tasks/wmt22/README.md b/laser/tasks/wmt22/README.md new file mode 100644 index 0000000000000000000000000000000000000000..6ee1b749b0d9b8b663a4560905b5e8cb30a918b1 --- /dev/null +++ b/laser/tasks/wmt22/README.md @@ -0,0 +1,26 @@ +# LASER: sentence encoders for WMT '22 shared task - data track + +More information on the shared task can be found here: +https://statmt.org/wmt22/large-scale-multilingual-translation-task.html + +## Downloading encoders + +To download encoders for all 24 supported languages, +please run the `download_models.sh` script within this directory +``` +bash ./download_models.sh +``` +This will place all supported models within the directory: `$LASER/models/wmt22` + +**Note**: encoders for each focus language are in the format: `laser3-xxx`, except for +Afrikaans (afr), English (eng), and French (fra) which are all supported by the laser2 model. + +Available languages are: amh, fuv, hau, ibo, kam, kin, lin, lug, luo, nso, nya, orm, sna, som, ssw, swh, tsn, tso, umb, wol, xho, yor and zul + +## Embedding texts + +Once all encoders are downloaded, you can then begin embedding texts by following the +instructions under: `LASER/tasks/embed/README.md` + + + diff --git a/laser/tasks/wmt22/download_models.sh b/laser/tasks/wmt22/download_models.sh new file mode 100755 index 0000000000000000000000000000000000000000..4676909abc2b8cea2ad56892e2fb7f625f2f86b6 --- /dev/null +++ b/laser/tasks/wmt22/download_models.sh @@ -0,0 +1,65 @@ +#!/bin/bash +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +#------------------------------------------------------- +# +# This bash script installs WMT'22 sentence encoders from Amazon s3 + +if [ -z ${LASER} ] ; then + echo "Please set the environment variable 'LASER'" + exit +fi + +mdir="${LASER}/models/wmt22" +version=1 # model version + +echo "Downloading networks..." + +if [ ! -d ${mdir} ] ; then + echo " - creating model directory: ${mdir}" + mkdir -p ${mdir} +fi + +function download { + file=$1 + if [ -f ${mdir}/${file} ] ; then + echo " - ${mdir}/$file already downloaded"; + else + echo " - $s3/${file}"; + wget -q $s3/${file}; + fi +} + +cd ${mdir} # move to model directory + +# available encoders +s3="https://dl.fbaipublicfiles.com/laser/models" + +# [afr, eng, and fra] are supported by the same LASER2 model (93 langs total) +download "laser2.pt" +download "laser2.spm" +download "laser2.cvocab" + +# other WMT '22 supported languages (-afr,eng,fra) +langs=(amh fuv hau ibo kam \ + kin lin lug luo nso \ + nya orm sna som ssw \ + swh tsn tso umb wol \ + xho yor zul) + +for lang in ${langs[@]}; do + download "laser3-$lang.v$version.pt"; + if [ $lang == "fuv" ] || [ $lang == "amh" ] ; then + download "laser3-$lang.v$version.spm"; + download "laser3-$lang.v$version.cvocab"; + fi +done \ No newline at end of file diff --git a/laser/tasks/xnli/README.md b/laser/tasks/xnli/README.md new file mode 100644 index 0000000000000000000000000000000000000000..4ed5141fac00ac37dcbe413ededcee3e7c4fa13e --- /dev/null +++ b/laser/tasks/xnli/README.md @@ -0,0 +1,44 @@ +# LASER: application to cross-lingual natural language inference + +This codes shows how to use the multilingual sentence embedding for +cross-lingual NLI, using the XNLI corpus. + +We train a NLI classifier on the English MultiNLI corpus, optimizing +the meta-parameters on the English XNLI development corpus. +We then apply that classifier to the test set for all 14 transfer languages. +The foreign languages development set is not used. + +## Installation + +Just run `bash ./xnli.sh` +which install XNLI and MultiNLI corpora, +calculates the multilingual sentence embeddings, +trains the classifier and displays results. + +The XNLI corpus is available [here](https://www.nyu.edu/projects/bowman/xnli/). + +## Results + +You should get the following results for zero-short cross-lingual transfer. +They slightly differ from those published in the initial version of the paper [2] +due to the change to PyTorch 1.0 and variations in random number generation, new optimization of meta-parameters, etc. + +| en | fr | es | de | el | bg | ru | tr | ar | vi | th | zh | hi | sw | ur | +|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------| +| 74.65 | 72.26 | 73.15 | 72.48 | 72.73 | 73.35 | 71.08 | 69.84 | 70.48 | 71.94 | 69.20 | 71.38 | 65.95 | 62.14 | 61.82 | + +All numbers are accuracies on the test set + +## References + +Details on the corpus are described in this paper: + +[1] Alexis Conneau, Guillaume Lample, Ruty Rinott, Adina Williams, Samuel R. Bowman, Holger Schwenk and Veselin Stoyanov, +[*XNLI: Cross-lingual Sentence Understanding through Inference*](https://aclweb.org/anthology/D18-1269), +EMNLP, 2018. + +Detailed system description: + +[2] Mikel Artetxe and Holger Schwenk, +[*Massively Multilingual Sentence Embeddings for Zero-Shot Cross-Lingual Transfer and Beyond*](https://arxiv.org/pdf/1812.10464), +arXiv, Dec 26 2018. diff --git a/laser/tasks/xnli/xnli.py b/laser/tasks/xnli/xnli.py new file mode 100644 index 0000000000000000000000000000000000000000..918a0b73023b67710559cbede98f127e13ded98f --- /dev/null +++ b/laser/tasks/xnli/xnli.py @@ -0,0 +1,113 @@ +#!/usr/bin/python3 +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# -------------------------------------------------------- +# +# XNLI + +import os +import sys +import argparse +import pdb +import faiss +import numpy as np + +# get environment +assert os.environ.get('LASER'), 'Please set the enviornment variable LASER' +LASER = os.environ['LASER'] + +sys.path.append(LASER + '/source') +sys.path.append(LASER + '/source/tools') +from embed import SentenceEncoder, EncodeLoad, EncodeFile +from text_processing import Token, BPEfastApply + + +################################################################################ + +parser = argparse.ArgumentParser('LASER: training and evaluation for XNLI') +parser.add_argument('--tsv', type=str, default='tsv', + help='Directory of the TSV file') +parser.add_argument('--data_dir', type=str, default='.', + help='Base directory for created files') +parser.add_argument('--bpe_codes', type=str, required=True, + help='Directory of the tokenized data') +parser.add_argument('--verbose', action='store_true', + help='Detailed output') + +# options for encoder +parser.add_argument('--encoder', type=str, required=True, + help='encoder to be used') +parser.add_argument( + '--lang', '-L', nargs='+', default=None, + help="List of languages to test on") +parser.add_argument('--buffer-size', type=int, default=10000, + help='Buffer size (sentences)') +parser.add_argument('--max-tokens', type=int, default=12000, + help='Maximum number of tokens to process in a batch') +parser.add_argument('--max-sentences', type=int, default=None, + help='Maximum number of sentences to process in a batch') +parser.add_argument('--cpu', action='store_true', + help='Use CPU instead of GPU') + +args = parser.parse_args() + +print('LASER: training and evaluation for XNLI') + +if not os.path.exists(args.data_dir): + os.mkdir(args.data_dir) + +enc = EncodeLoad(args) + +languages_train = ('en',) +languages = ('en', 'ar', 'bg', 'de', 'el', 'es', 'fr', 'hi', 'ru', 'sw', 'th', 'tr', 'ur', 'vi', 'zh') + +print('\nProcessing train:') +for lang in languages_train: + for part in ('prem', 'hyp'): + cfname = os.path.join(args.data_dir, 'xnli.train.' + part + '.') + Token(cfname + lang, + cfname + 'tok.' + lang, + lang=lang, + romanize=True if lang=='el' else False, + lower_case=True, gzip=True, + verbose=args.verbose, over_write=False) + BPEfastApply(cfname + 'tok.' + lang, + cfname + 'bpe.' + lang, + args.bpe_codes, + verbose=args.verbose, over_write=False) + EncodeFile(enc, + cfname + 'bpe.' + lang, + cfname + 'enc.' + lang, + verbose=args.verbose, over_write=False, + buffer_size=args.buffer_size) + +for corpus in ('xnli.dev', 'xnli.test'): + print('\nProcessing {}:'.format(corpus)) + for part in ('prem', 'hyp'): + cfname = os.path.join(args.data_dir, corpus + '.' + part + '.') + for lang in languages: + Token(cfname + lang, + cfname + 'tok.' + lang, + lang=lang, + romanize=True if lang=='el' else False, + lower_case=True, gzip=False, + verbose=args.verbose, over_write=False) + BPEfastApply(cfname + 'tok.' + lang, + cfname + 'bpe.' + lang, + args.bpe_codes, + verbose=args.verbose, over_write=False) + EncodeFile(enc, + cfname + 'bpe.' + lang, + cfname + 'enc.' + lang, + verbose=args.verbose, over_write=False, + buffer_size=args.buffer_size) + diff --git a/laser/tasks/xnli/xnli.sh b/laser/tasks/xnli/xnli.sh new file mode 100755 index 0000000000000000000000000000000000000000..0565bbb89484884e40c4821104a4484c8650b53c --- /dev/null +++ b/laser/tasks/xnli/xnli.sh @@ -0,0 +1,154 @@ +#!/bin/bash +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +# -------------------------------------------------------- +# +# bash script to downlaod and extract XNLI and multiNLI corpus + +if [ -z ${LASER+x} ] ; then + echo "Please set the environment variable 'LASER'" + exit +fi + +xnli="XNLI-1.0" +xnli_mt="XNLI-MT-1.0" +xnli_http="https://dl.fbaipublicfiles.com/XNLI" +mnli_http="https://www.nyu.edu/projects/bowman/multinli/multinli_1.0.zip" + +languages=("en" "fr" "es" "de" "el" "bg" "ru" "tr" "ar" "vi" "th" "zh" "hi" "sw" "ur") + +edir="embed" + +# encoder +model_dir="${LASER}/models" +encoder="${model_dir}/bilstm.93langs.2018-12-26.pt" +bpe_codes="${model_dir}/93langs.fcodes" + +# NLI classifier params +N=200 +nhid="512 384" +drop=0.3 +seed=159753 +bsize=128 +lr=0.001 + +############################################################################################## +# get the XNLI dev and test corpus in 15 languages + +ExtractXNLI () { + echo "Installing XNLI" + if [ ! -s ${xnli}/xnli.test.tsv ] ; then + echo " - Downloading " + wget -q ${xnli_http}/${xnli}.zip + echo " - unzip " + unzip -q ${xnli}.zip + /bin/rm -rf __MACOS ${xnli}.zip + fi + + for lang in ${languages[@]} ; do + for part in "dev" "test" ; do + if [ ! -f ${edir}/xnli.${part}.prem.${lang} ] ; then + echo " - extracting xnli.${part}.${lang}" + tail -n +2 ${xnli}/xnli.${part}.tsv \ + | grep "^${lang}" | cut -f7 \ + > ${edir}/xnli.${part}.prem.${lang} + tail -n +2 ${xnli}/xnli.${part}.tsv \ + | grep "^${lang}" | cut -f8 \ + > ${edir}/xnli.${part}.hyp.${lang} + tail -n +2 ${xnli}/xnli.${part}.tsv \ + | grep "^${lang}" | cut -f2 \ + | sed -e 's/entailment/0/' -e 's/neutral/1/' -e 's/contradiction/2/' \ + > ${edir}/xnli.${part}.cl.${lang} + fi + done + done +} + +############################################################################################## +# https://www.nyu.edu/projects/bowman/multinli/multinli_1.0.zip +# MT translated data is already tokenized ! + +ExtractXNLI_MT () { + echo "Installing XNLI MT" + if [ ! -d ${xnli_mt}/multinli ] ; then + echo " - Downloading " + wget -q ${xnli_http}/${xnli_mt}.zip + echo " - unzip " + unzip -q ${xnli_mt}.zip + /bin/rm -rf __MACOS ${xnli_mt}.zip + fi + + part="train" + for lang in "en" ; do + if [ ! -f ${edir}/multinli.${part}.prem.${lang}.gz ] ; then + echo " - extracting ${part}.${lang}" + tail -n +2 ${xnli_mt}/multinli/multinli.${part}.${lang}.tsv \ + | cut -f1 > ${edir}/multinli.${part}.prem.${lang} + tail -n +2 ${xnli_mt}/multinli/multinli.${part}.${lang}.tsv \ + | cut -f2 > ${edir}/multinli.${part}.hyp.${lang} + tail -n +2 ${xnli_mt}/multinli/multinli.${part}.${lang}.tsv \ + | cut -f3 \ + | sed -e 's/entailment/0/' -e 's/neutral/1/' -e 's/contradictory/2/' \ + > ${edir}/multinli.${part}.cl.${lang} + fi + done +} + +############################################################################################## +# https://www.nyu.edu/projects/bowman/multinli/multinli_1.0.zip +# MT translated data is already tokenized ! + +ExtractMNLI () { + echo "Installing MultiNLI" + train_txt="multinli_1.0/multinli_1.0_train.txt" + if [ ! -d ${edir} ] ; then mkdir -p ${edir}; fi + + if [ ! -f ${edir}/xnli.train.cl.en ] ; then + echo " - Downloading" + wget -q ${mnli_http} + echo " - unzip" + unzip -q multinli_1.0.zip ${train_txt} + + echo " - extracting" + tail -n +2 ${train_txt} | cut -f6 | gzip > ${edir}/xnli.train.prem.en.gz + tail -n +2 ${train_txt} | cut -f7 | gzip > ${edir}/xnli.train.hyp.en.gz + tail -n +2 ${train_txt} | cut -f1 \ + | sed -e 's/entailment/0/' -e 's/neutral/1/' -e 's/contradiction/2/' \ + > ${edir}/xnli.train.cl.en + fi +} + +############################################################################################## + +if [ ! -d ${edir} ] ; then mkdir -p ${edir}; fi + +ExtractXNLI +ExtractMNLI + +# calculate embeddings +export PYTHONPATH="$PYTHONPATH:$LASER/tools-external/jieba" +python3 xnli.py --data_dir ${edir} --lang ${languages[@]} --bpe_codes ${bpe_codes} --encoder ${encoder} --verbose + +#for fr in 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 ; do +for fr in 0.6 0.7 0.8 0.9 ; do +echo -e "\nTraining the classifier (see ${edir}/xnli.fract${fr}.log)" +python3 ${LASER}/source/nli.py -b ${edir} \ + --train xnli.train.%s.enc.en --train-labels xnli.train.cl.en \ + --dev xnli.dev.%s.enc.en --dev-labels xnli.dev.cl.en \ + --test xnli.test.%s.enc --test-labels xnli.test.cl --lang ${languages[@]} \ + --nhid ${nhid[@]} --dropout ${drop} --bsize ${bsize} \ + --seed ${seed} --lr ${lr} --nepoch ${N} \ + --cross-lingual \ + --fraction $fr \ + --save-outputs ${edir}/xnli.fract${fr}.outputs \ + --gpu 1 > ${edir}/xnli.fract${fr}.log +done diff --git a/laser/tasks/xsim/README.md b/laser/tasks/xsim/README.md new file mode 100644 index 0000000000000000000000000000000000000000..d1b00a2cf3e845f2d6e4d044a062b60763426c71 --- /dev/null +++ b/laser/tasks/xsim/README.md @@ -0,0 +1,75 @@ +# LASER: xSIM (multilingual similarity search) + +This README shows how to calculate the xsim (multilingual similarity) error rate for a given language pair. + +xSIM returns the error rate for encoding bitexts into the same embedding space i.e., given a bitext +with source language embeddings X, and target language embeddings Y, xSIM aligns the embeddings from +X and Y based on a margin-based similarity, and then returns the percentage of incorrect alignments. + +xSIM offers three margin-based scoring options (discussed in detail [here](https://arxiv.org/pdf/1811.01136.pdf)): +- distance +- ratio +- absolute + +## Example usage + +### Sample script + +Simply run the example script `bash ./eval.sh` to download a sample dataset (flores200), a sample encoder (laser2), +and calculate the sentence embeddings and the xSIM error rate for a set of (comma separated) languages. + +You can also calculate xsim for encoders hosted on [HuggingFace sentence-transformers](https://huggingface.co/sentence-transformers). For example, to use LaBSE you can modify/add the following arguments in the sample script: +``` +--src-encoder LaBSE +--use-hugging-face +--embedding-dimension 768 +``` +Note: for HuggingFace encoders there is no need to specify `--src-spm-model`. + +### Python + +Import xsim + +``` +from xsim import xSIM +``` +Calculate xsim from either numpy float arrays (e.g. np.float32) or binary embedding files +``` +# A: numpy arrays x and y + +err, nbex = xSIM(x, y) + +# B: binary embedding files x and y + +fp16_flag = False # set true if embeddings are saved in 16 bit +embedding_dim = 1024 # set dimension of saved embeddings +err, nbex = xSIM( + x, + y, + dim=embedding_dim, + fp16=fp16_flag +) +``` +Error type +``` +# A: textual-based error (allows for duplicates) + +tgt_text = "/path/to/target-text-file" +err, nbex = xSIM(x, y, eval_text=tgt_text) + +# B: index-based error (default) + +err, nbex = xSIM(x, y) +``` +Margin selection +``` +# A: ratio (default) +err, nbex = xSIM(x, y) + +# B: distance +err, nbex = xSIM(x, y, margin='distance') + +# C: absolute +err, nbex = xSIM(x, y, margin='absolute') +``` +Finally, to calculate the error rate simply return: `100 * err / nbex` (number of errors over total examples). diff --git a/laser/tasks/xsim/eval.sh b/laser/tasks/xsim/eval.sh new file mode 100755 index 0000000000000000000000000000000000000000..e9f47ae175d3f3d41fd9c1f076d171fb8daf767b --- /dev/null +++ b/laser/tasks/xsim/eval.sh @@ -0,0 +1,80 @@ +#!/bin/bash +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +#------------------------------------------------------- +# +# This bash script installs the flores200 dataset, downloads laser2, and then +# performs xsim (multilingual similarity) evaluation with ratio margin + +if [ -z ${LASER} ] ; then + echo "Please set the environment variable 'LASER'" + exit +fi + +ddir="${LASER}/data" +cd $ddir # move to data directory + +if [ ! -d $ddir/flores200 ] ; then + echo " - Downloading flores200..." + wget --trust-server-names -q https://tinyurl.com/flores200dataset + tar -xf flores200_dataset.tar.gz + /bin/mv flores200_dataset flores200 + /bin/rm flores200_dataset.tar.gz +else + echo " - flores200 already downloaded" +fi + +mdir="${LASER}/models" +if [ ! -d ${mdir} ] ; then + echo " - creating model directory: ${mdir}" + mkdir -p ${mdir} +fi + +function download { + file=$1 + if [ -f ${mdir}/${file} ] ; then + echo " - ${mdir}/$file already downloaded"; + else + echo " - Downloading $s3/${file}"; + wget -q $s3/${file}; + fi +} + +cd $mdir # move to model directory + +# available encoders +s3="https://dl.fbaipublicfiles.com/nllb/laser" + +if [ ! -f ${mdir}/laser2.pt ] ; then + echo " - Downloading $s3/laser2.pt" + wget --trust-server-names -q https://tinyurl.com/nllblaser2 +else + echo " - ${mdir}/laser2.pt already downloaded" +fi +download "laser2.spm" +download "laser2.cvocab" + +corpus_part="devtest" +corpus="flores200" + +# note: example evaluation script expects format: basedir/corpus/corpus_part/lang.corpus_part + +echo " - calculating xsim" +python3 $LASER/source/eval.py \ + --base-dir $ddir \ + --corpus $corpus \ + --corpus-part $corpus_part \ + --margin ratio \ + --src-encoder $LASER/models/laser2.pt \ + --src-spm-model $LASER/models/laser2.spm \ + --src-langs afr_Latn,fin_Latn,fra_Latn,hin_Deva,tha_Thai,eng_Latn \ + --nway --verbose diff --git a/laser/tasks/xsimplusplus/README.md b/laser/tasks/xsimplusplus/README.md new file mode 100644 index 0000000000000000000000000000000000000000..9b44bd4366e216eec603664c21a4afa2ee314480 --- /dev/null +++ b/laser/tasks/xsimplusplus/README.md @@ -0,0 +1,20 @@ +# LASER: xSIM++ + +This README shows how to calculate the xSIM++ error rate for a given language pair. + +xSIM++ is an extension of [xSIM](https://github.com/facebookresearch/LASER/tree/main/tasks/xsim). In comparison to xSIM, this evaluates using target-side data with additional synthetic, hard-to-distinguish examples. You can find more details about it in the publication: [xSIM++: An Improved Proxy to Bitext Mining Performance for Low-Resource Languages](https://arxiv.org/abs/2306.12907). + +## Example usage + +Simply run the example script `bash ./eval.sh` to download a sample dataset (flores200), download synthetically augmented English evaluation data from Flores, a sample encoder (laser2), and calculate both the sentence embeddings and the xSIM++ error rate for a set of (comma separated) languages. + +The evaluation command is similar to xSIM, however there is an additional option to provide the comma-separated list of augmented languages: `--tgt-aug-langs`. These refer +to languages in the chosen evaluation set which also have a separate augmented data file. In addition to the error rate, the script also provides a breakdown of the number of errors by type (e.g. incorrect entity/number etc.). + +You can also calculate xsim++ for encoders hosted on [HuggingFace sentence-transformers](https://huggingface.co/sentence-transformers). For example, to use LaBSE you can modify/add the following arguments in the sample script: +``` +--src-encoder LaBSE +--use-hugging-face +--embedding-dimension 768 +``` +Note: for HuggingFace encoders there is no need to specify `--src-spm-model`. diff --git a/laser/tasks/xsimplusplus/eval.sh b/laser/tasks/xsimplusplus/eval.sh new file mode 100755 index 0000000000000000000000000000000000000000..0612784e8d1ae80059036f9d9dd9a162fa1b9acc --- /dev/null +++ b/laser/tasks/xsimplusplus/eval.sh @@ -0,0 +1,92 @@ +#!/bin/bash +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# LASER Language-Agnostic SEntence Representations +# is a toolkit to calculate multilingual sentence embeddings +# and to use them for document classification, bitext filtering +# and mining +# +#------------------------------------------------------- +# +# This bash script installs the flores200 dataset, downloads laser2, and then +# performs xsim++ evaluation with ratio margin + +if [ -z ${LASER} ] ; then + echo "Please set the environment variable 'LASER'" + exit +fi + +ddir="${LASER}/data" +cd $ddir # move to data directory + +if [ ! -d $ddir/flores200 ] ; then + echo " - Downloading flores200..." + wget --trust-server-names -q https://tinyurl.com/flores200dataset + tar -xf flores200_dataset.tar.gz + /bin/mv flores200_dataset flores200 + /bin/rm flores200_dataset.tar.gz +else + echo " - flores200 already downloaded" +fi + +mdir="${LASER}/models" +if [ ! -d ${mdir} ] ; then + echo " - creating model directory: ${mdir}" + mkdir -p ${mdir} +fi + +function download { + file=$1 + save_dir=$2 + if [ -f ${save_dir}/${file} ] ; then + echo " - ${save_dir}/$file already downloaded"; + else + cd $save_dir + echo " - Downloading $s3/${file}"; + wget -q $s3/${file}; + cd - + fi +} + +# available encoders +s3="https://dl.fbaipublicfiles.com/nllb/laser" + +if [ ! -f ${mdir}/laser2.pt ] ; then + cd $mdir + echo " - Downloading $s3/laser2.pt" + wget --trust-server-names -q https://tinyurl.com/nllblaser2 + cd - +else + echo " - ${mdir}/laser2.pt already downloaded" +fi +download "laser2.spm" $mdir +download "laser2.cvocab" $mdir + +corpus_part="devtest" +corpus="flores200" + +# download flores200 augmented data (eng_Latn) +s3="https://dl.fbaipublicfiles.com/nllb/laser/xsimplusplus" +augmented_dir=$ddir/$corpus/${corpus_part}_augmented +if [ ! -d $augmented_dir ]; then mkdir $augmented_dir; fi +download "eng_Latn_augmented.$corpus_part" $augmented_dir +download "eng_Latn_errtype.$corpus_part.json" $augmented_dir + +# note: example evaluation script expects format: basedir/corpus/corpus_part/lang.corpus_part + +echo " - calculating xsim++" +python3 $LASER/source/eval.py \ + --base-dir $ddir \ + --corpus $corpus \ + --corpus-part $corpus_part \ + --margin ratio \ + --src-encoder $LASER/models/laser2.pt \ + --src-spm-model $LASER/models/laser2.spm \ + --src-langs afr_Latn,fin_Latn,fra_Latn,hin_Deva,tha_Thai \ + --tgt-langs eng_Latn \ + --tgt-aug-langs eng_Latn \ + --verbose diff --git a/laser/utils/requirements.txt b/laser/utils/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..a47ad724f4e89618effc7b7946211c6476e1314c --- /dev/null +++ b/laser/utils/requirements.txt @@ -0,0 +1,8 @@ +indic-nlp-library==0.81 +sentence-splitter==1.4 +botok==0.8.8 +khmer-nltk==1.5 +LaoNLP==0.6 +sacremoses==0.1.0 +xxhash==3.0.0 +emoji==1.7.0 \ No newline at end of file diff --git a/laser/utils/setup.py b/laser/utils/setup.py new file mode 100644 index 0000000000000000000000000000000000000000..cb657a0b028da78b553da212ae86ca89e4b8baa9 --- /dev/null +++ b/laser/utils/setup.py @@ -0,0 +1,22 @@ +from setuptools import find_packages, setup + +setup( + name="sentence_cleaner_splitter", + version="1.0.1", + url="https://github.com/facebookresearch/LASER/", + author="NLLB Data Team", + author_email="nllb_data@fb.com", + description="Clean and split sentences", + packages=["sentence_cleaner_splitter"], + package_dir={"sentence_cleaner_splitter": "src"}, + install_requires=[ + "indic-nlp-library==0.81", + "sentence-splitter==1.4", + "botok==0.8.8", + "khmer-nltk==1.5", + "LaoNLP==0.6", + "sacremoses==0.1.0", + "xxhash==3.0.0", + "emoji==1.7.0", + ], +) diff --git a/laser/utils/src/__init__.py b/laser/utils/src/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/laser/utils/src/cleaner_splitter.py b/laser/utils/src/cleaner_splitter.py new file mode 100644 index 0000000000000000000000000000000000000000..8d7bdb47a44fc1063eb5db5af5e24bd46a06f2df --- /dev/null +++ b/laser/utils/src/cleaner_splitter.py @@ -0,0 +1,167 @@ +import argparse +import sys +import typing as tp +import unicodedata + +import xxhash +from sacremoses import MosesPunctNormalizer + +from .demojizer import Demojizer, legacy_demojizer +from .remove_non_printing_char import \ + get_replacer as non_printing_char_replacer +from .sentence_split import get_split_algo + +demojizer = Demojizer() + + +class SentenceSplitClean: + def __init__(self, splitter_lang: str, split_algo: str): + # setup sentence splitter + self.splitter = get_split_algo(splitter_lang, split_algo=split_algo) + + # setup "moses" normalization + self.mpn = MosesPunctNormalizer(lang="en", perl_parity=True) # TODO + self.replace_nonprint = non_printing_char_replacer(" ") + + def __call__(self, line): + sentence_splits = self.splitter(line) + line_hash = xxhash.xxh3_64_intdigest(line) + + for sent in sentence_splits: + # normalize -- moses equivalent + clean = self.mpn.normalize(sent) + clean = self.replace_nonprint(clean) + # replace 𝓕𝔯𝔞𝔫𝔠𝔢𝔰𝔠𝔞 by Francesca + clean = unicodedata.normalize("NFKC", clean) + + yield (line_hash, sent, clean) + + +def remove_on_unicode_category(x: str) -> str: + return "".join(filter(lambda ch: not unicodedata.category(ch) in {"So"}, x)) + + +def get_replacer_unicode_category( + skip_min: int, max_num: int, replace_by: str = " " +) -> str: + def replace_by_unicode_category(x: str) -> str: + total_counter = 0 + skip_counter = 0 + + def flt(ch): + nonlocal total_counter + nonlocal skip_counter + if max_num == 0 or total_counter < max_num: + if unicodedata.category(ch) in {"So"}: + if skip_counter < skip_min: + skip_counter += 1 + return ch + total_counter += 1 + return replace_by + return ch + + return "".join(map(flt, x)) + + return replace_by_unicode_category + + +# to map with previous versions of the pipeline +def get_sentence_candidate_modifiers() -> tp.List[tp.Callable]: + return [ + lambda x: x, + lambda x: x + " ", + lambda x: " " + x, + lambda x: " " + x + " ", + lambda x: " " + x, + lambda x: x.rstrip(), + lambda x: x.lstrip(), + lambda x: " " + x.rstrip(), + lambda x: x.strip(), + lambda x: demojizer(x, ""), + lambda x: demojizer(x, "").strip(), + lambda x: " " + demojizer(x, ""), + legacy_demojizer, + remove_on_unicode_category, + get_replacer_unicode_category(1, 1), + get_replacer_unicode_category(0, 0), + ] + + +def reach_sentence_from_paragraph( + paragraph: str, + expected_paragraph_digest: int, + expected_sentence_digest: int, + lang: str, + sentence_splitters: tp.Dict[str, "SentenceSplitClean"], + debug_candidates: bool, +): + if lang not in sentence_splitters: + sentence_splitters[lang] = SentenceSplitClean(lang, "default") + + def no_splitter(paragraph): + line_h = xxhash.xxh3_64_intdigest(paragraph) + return [(line_h, paragraph, paragraph)] + + sentence_splitter = sentence_splitters[lang] + splitter_candidates = [sentence_splitter, no_splitter] + for duct_candidate in get_sentence_candidate_modifiers(): + for split_cand in splitter_candidates: + for line_hash, sent, clean in split_cand(paragraph): + assert line_hash == expected_paragraph_digest + clean_cand = duct_candidate(clean) + reached_sentence_digest = xxhash.xxh3_64_intdigest(clean_cand) + if debug_candidates: + print(f"{reached_sentence_digest}::\t::{clean_cand}::") + if reached_sentence_digest == expected_sentence_digest: + return clean_cand + + return None + + +def split_clean(): + split_algo = "default" + sentence_splitters = {} + + for line in sys.stdin: + line_stripped = line.rstrip("\n") + metadata, paragraph = line_stripped.split("\t") + ( + _, + _, + _, + _, + paragraph_digest, + sentence_digest, + _, + _, + _, + lang, + _, + ) = metadata.split() + paragraph_digest = int(paragraph_digest) + sentence_digest = int(sentence_digest) + + sentence = reach_sentence_from_paragraph( + paragraph, + paragraph_digest, + sentence_digest, + lang, + sentence_splitters, + False, + ) + + if sentence is not None: + print(f"{line_stripped}\t{sentence}") + else: + print( + f"Couldn't match sentence for paragraph: {paragraph_digest} sentence: {sentence_digest} lang: {lang}", + file=sys.stderr, + ) + + +def main(): + split_clean() + + +if __name__ == "__main__": + main() diff --git a/laser/utils/src/demojizer.py b/laser/utils/src/demojizer.py new file mode 100644 index 0000000000000000000000000000000000000000..1115d73f4aa1ee9ad775a6f71f58d11086aa5521 --- /dev/null +++ b/laser/utils/src/demojizer.py @@ -0,0 +1,61 @@ +import emoji + + +def legacy_demojizer(x: str) -> str: + return "".join(filter(lambda ch: not emoji.is_emoji(ch), x)) + + +class Demojizer: + """ + based on: + https://github.com/carpedm20/emoji/blob/d8bbfe455c6fcd12b96ed1dce6e0978fe7a47431/emoji/core.py#L141 + """ + + def _get_search_tree(self): + _SEARCH_TREE = {} + for emj in emoji.unicode_codes.EMOJI_DATA: + sub_tree = _SEARCH_TREE + lastidx = len(emj) - 1 + for i, char in enumerate(emj): + if char not in sub_tree: + sub_tree[char] = {} + sub_tree = sub_tree[char] + if i == lastidx: + sub_tree["data"] = emoji.unicode_codes.EMOJI_DATA[emj] + return _SEARCH_TREE + + def __init__(self) -> None: + self.search_tree = self._get_search_tree() + + def __call__(self, string: str, replace_str: str): + result = [] + i = 0 + length = len(string) + state = 0 + while i < length: + consumed = False + char = string[i] + if char in self.search_tree: + j = i + 1 + sub_tree = self.search_tree[char] + while j < length and string[j] in sub_tree: + sub_tree = sub_tree[string[j]] + j += 1 + if "data" in sub_tree: + state = 1 + consumed = True + result.append(replace_str) + i = j - 1 + else: + state = 0 + elif state == 1: + if char.isspace(): + consumed = True + else: + state = 0 + + if not consumed and char != "\ufe0e" and char != "\ufe0f": + result.append(char) + i += 1 + + return "".join(result) diff --git a/laser/utils/src/remove_non_printing_char.py b/laser/utils/src/remove_non_printing_char.py new file mode 100644 index 0000000000000000000000000000000000000000..d3a6645e30f02fe00cb6c8f93aabb54251efd2a3 --- /dev/null +++ b/laser/utils/src/remove_non_printing_char.py @@ -0,0 +1,41 @@ +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the license found in the +# LICENSE file in the root directory of this source tree. + +# Remove non printable char as per: +# https://stackoverflow.com/questions/92438/stripping-non-printable-characters-from-a-string-in-python +# +# This is supposed to be a drop in replacement to moses strip-non-printing-char.perl + +import sys +import unicodedata + + +def get_replacer(replace_by: str = " ") -> str: + non_printable_map = { + ord(c): replace_by + for c in (chr(i) for i in range(sys.maxunicode + 1)) + # same as \p{C} in perl + # see https://www.unicode.org/reports/tr44/#General_Category_Values + if unicodedata.category(c) in {"C", "Cc", "Cf", "Cs", "Co", "Cn"} + } + + def replace_non_printing_char(line) -> str: + return line.translate(non_printable_map) + + return replace_non_printing_char + + +def test_remove(): + replaceby_ = get_replacer("_") + + assert ( + replaceby_("See what's hidden in your string… or be​hind") + == "See what's hidden in your string…_or be_hind_" + ) + + replacebyspace = get_replacer(" ") + + assert replacebyspace("\x00\x11Hello\u200bWorld") == " Hello World" diff --git a/laser/utils/src/sentence_split.py b/laser/utils/src/sentence_split.py new file mode 100644 index 0000000000000000000000000000000000000000..4648febd1dddd15e44d890206c28ffd47cf3d78c --- /dev/null +++ b/laser/utils/src/sentence_split.py @@ -0,0 +1,449 @@ +# Copyright (c) Facebook, Inc. and its affiliates. +# All rights reserved. +# +# This source code is licensed under the license found in the +# LICENSE file in the root directory of this source tree. + +import logging +import re +import typing as tp +from pathlib import Path + +from botok.tokenizers import sentencetokenizer as bod_sent_tok +# Indicp NLP +from indicnlp import common as indic_common +from indicnlp import loader as indic_loader +from indicnlp.normalize.indic_normalize import IndicNormalizerFactory +from indicnlp.tokenize import sentence_tokenize as indic_sent_tok +from khmernltk import sentence_tokenize as khm_sent_tok +# pythainlp for Thai +# Seahorse for Indonesian, Thai, Vietnamese +# botok for tibetan +# Spacy for +# various tool-kits +from laonlp.tokenize import sent_tokenize as lao_sent_tok +# --- sentence splitters +# Moses-style +from sentence_splitter import SentenceSplitter + +INDIC_NLP_RESOURCES = None # apparently not needed for splitting and normalization + + +logger = logging.getLogger("sentence_split") + + +split_lang_code_map = { + "ace_Arab" : "ace_Arab", + "ace_Latn" : "ace_Latn", + "acm_Arab" : "acm", + "acq_Arab" : "acq", + "aeb_Arab" : "aeb", + "afr_Latn" : "afr", + "ajp_Arab" : "ajp", + "aka_Latn" : "aka", + "amh_Ethi" : "amh", + "apc_Arab" : "apc", + "arb_Arab" : "ara", + "arb_Arab" : "ara_Arab", + "arb_Latn" : "ara_Latn", + "ars_Arab" : "ars", + "ary_Arab" : "ary", + "arz_Arab" : "arz", + "asm_Beng" : "asm", + "ast_Latn" : "ast", + "awa_Deva" : "awa", + "ayr_Latn" : "ayr", + "azb_Arab" : "azb", + "azj_Latn" : "azj", + "bak_Cyrl" : "bak", + "bam_Latn" : "bam", + "ban_Latn" : "ban", + "bel_Cyrl" : "bel", + "bem_Latn" : "bem", + "ben_Beng" : "ben", + "bho_Deva" : "bho", + "bjn_Arab" : "bjn_Arab", + "bjn_Latn" : "bjn_Latn", + "bod_Tibt" : "bod", + "bos_Latn" : "bos", + "bug_Latn" : "bug", + "bul_Cyrl" : "bul", + "cat_Latn" : "cat", + "ceb_Latn" : "ceb", + "ces_Latn" : "ces", + "cjk_Latn" : "cjk", + "ckb_Arab" : "ckb", + "crh_Latn" : "crh_Latn", + "cym_Latn" : "cym", + "dan_Latn" : "dan", + "deu_Latn" : "deu", + "dik_Latn" : "dik", + "diq_Latn" : "diq", + "dyu_Latn" : "dyu", + "dzo_Tibt" : "dzo", + "ell_Grek" : "ell", + "eng_Latn" : "eng", + "epo_Latn" : "epo", + "est_Latn" : "est", + "eus_Latn" : "eus", + "ewe_Latn" : "ewe", + "fao_Latn" : "fao", + "pes_Arab" : "fas", + "fij_Latn" : "fij", + "fin_Latn" : "fin", + "fon_Latn" : "fon", + "fra_Latn" : "fra", + "fur_Latn" : "fur", + "fuv_Latn" : "fuv", + "gla_Latn" : "gla", + "gle_Latn" : "gle", + "glg_Latn" : "glg", + "grn_Latn" : "grn", + "guj_Gujr" : "guj", + "hat_Latn" : "hat", + "hau_Latn" : "hau", + "heb_Hebr" : "heb", + "hin_Deva" : "hin", + "hne_Deva" : "hne", + "hrv_Latn" : "hrv", + "hun_Latn" : "hun", + "hye_Armn" : "hye", + "ibo_Latn" : "ibo", + "ilo_Latn" : "ilo", + "ind_Latn" : "ind", + "isl_Latn" : "isl", + "ita_Latn" : "ita", + "jav_Latn" : "jav", + "jpn_Jpan" : "jpn", + "kab_Latn" : "kab", + "kac_Latn" : "kac", + "kam_Latn" : "kam", + "kan_Knda" : "kan", + "kas_Arab" : "kas_Arab", + "kas_Deva" : "kas_Deva", + "kat_Geor" : "kat", + "knc_Arab" : "kau_Arab", + "knc_Latn" : "kau_Latn", + "kaz_Cyrl" : "kaz", + "kbp_Latn" : "kbp", + "kea_Latn" : "kea", + "khm_Khmr" : "khm", + "kik_Latn" : "kik", + "kin_Latn" : "kin", + "kir_Cyrl" : "kir", + "kmb_Latn" : "kmb", + "kon_Latn" : "kon", + "kor_Hang" : "kor", + "kmr_Latn" : "kur", + "lao_Laoo" : "lao", + "lvs_Latn" : "lav", + "lij_Latn" : "lij", + "lim_Latn" : "lim", + "lin_Latn" : "lin", + "lit_Latn" : "lit", + "lmo_Latn" : "lmo", + "ltg_Latn" : "ltg", + "ltz_Latn" : "ltz", + "lua_Latn" : "lua", + "lug_Latn" : "lug", + "luo_Latn" : "luo", + "lus_Latn" : "lus", + "mag_Deva" : "mag", + "mai_Deva" : "mai", + "mal_Mlym" : "mal", + "mar_Deva" : "mar", + "min_Arab" : "min_Arab", + "min_Latn" : "min_Latn", + "mkd_Cyrl" : "mkd", + "plt_Latn" : "mlg", + "mlt_Latn" : "mlt", + "khk_Cyrl" : "mon", + "mos_Latn" : "mos", + "mri_Latn" : "mri", + "zsm_Latn" : "msa", + "mya_Mymr" : "mya", + "nld_Latn" : "nld", + "nno_Latn" : "nno", + "nob_Latn" : "nob", + "npi_Deva" : "npi", + "nso_Latn" : "nso", + "nus_Latn" : "nus", + "nya_Latn" : "nya", + "oci_Latn" : "oci", + "gaz_Latn" : "orm", + "ory_Orya" : "ory", + "pag_Latn" : "pag", + "pan_Guru" : "pan", + "pap_Latn" : "pap", + "pol_Latn" : "pol", + "por_Latn" : "por", + "prs_Arab" : "prs", + "pbt_Arab" : "pus", + "quy_Latn" : "que", + "ron_Latn" : "ron", + "run_Latn" : "run", + "rus_Cyrl" : "rus", + "sag_Latn" : "sag", + "san_Deva" : "san", + "sat_Olck" : "sat", + "scn_Latn" : "scn", + "shn_Mymr" : "shn", + "sin_Sinh" : "sin", + "slk_Latn" : "slk", + "slv_Latn" : "slv", + "smo_Latn" : "smo", + "sna_Latn" : "sna", + "snd_Arab" : "snd", + "som_Latn" : "som", + "sot_Latn" : "sot", + "spa_Latn" : "spa", + "als_Latn" : "sqi", + "srd_Latn" : "srd", + "srp_Cyrl" : "srp_Cyrl", + "ssw_Latn" : "ssw", + "sun_Latn" : "sun", + "swe_Latn" : "swe", + "swh_Latn" : "swh", + "szl_Latn" : "szl", + "tam_Taml" : "tam", + "tat_Cyrl" : "tat_Cyrl", + "tel_Telu" : "tel", + "tgk_Cyrl" : "tgk", + "tgl_Latn" : "tgl", + "tha_Thai" : "tha", + "tir_Ethi" : "tir", + "taq_Latn" : "tmh_Latn", + "taq_Tfng" : "tmh_Tfng", + "ton_Latn" : "ton", + "tpi_Latn" : "tpi", + "tsn_Latn" : "tsn", + "tso_Latn" : "tso", + "tuk_Latn" : "tuk", + "tum_Latn" : "tum", + "tur_Latn" : "tur", + "twi_Latn" : "twi", + "tzm_Tfng" : "tzm", + "uig_Arab" : "uig", + "ukr_Cyrl" : "ukr", + "umb_Latn" : "umb", + "urd_Arab" : "urd", + "uzn_Latn" : "uzb", + "vec_Latn" : "vec", + "vie_Latn" : "vie", + "war_Latn" : "war", + "wol_Latn" : "wol", + "xho_Latn" : "xho", + "ydd_Hebr" : "yid", + "yor_Latn" : "yor", + "yue_Hant" : "yue", + "zho_Hans" : "zho_Hans", + "zho_Hant" : "zho_Hant", + "zul_Latn" : "zul" +} + + +# ---------------------------------- +# Supported tokenization algorithms +# List of supported languages and mapping ISO3 - > ISO2 + +LANGS_MOSES = { + "cat": "ca", + "ces": "cs", + "dan": "da", + "nld": "nl", + "eng": "en", + "fin": "fi", + "fra": "fr", + "deu": "de", + "ell": "el", + "hun": "hu", + "isl": "is", + "ita": "it", + "lav": "lv", + "lit": "lt", + "nob": "no", + "pol": "pl", + "por": "pt", + "ron": "ro", + "rus": "ru", + "slk": "sk", + "slv": "sl", + "spa": "es", + "swe": "sv", + "tur": "tr", +} + +LANGS_LAONLP = {"lao": "lao"} +LANGS_KHMER = {"khm": "khm"} +LANGS_BODNLP = { + "bod": "bod", + "dzo": "dzo", +} # languages with tibetan script + +# ---------------------------------------------- +LANGS_INDIC = { + "asm": "as", + "awa": "hi", + "ben": "bn", + "bho": "hi", + "brx": "bD", + "gom": "xx", + "guj": "gu", + "hin": "hi", + "hne": "hi", + "kan": "kn", + "kas": "hi", + "kas_Deva": "hi", + "kok": "kK", + "mni": "bn", # our meitei is in bengali script, so swapped it to bengali here + "mag": "hi", + "mai": "hi", + "mal": "ml", + "mar": "mr", + "npi": "ne", + "ory": "or", + "pan": "pa", + "san": "sa", + "snd": "sd", + "tam": "ta", + "tel": "te", + "urd": "ur", +} + +# ---------------------------------------------- +LANGS_GEEZ = {"amh": "amh", "tir": "tir"} + + +def split_geez(line: str) -> tp.Iterable[str]: + """Split Amharic text into sentences.""" + line = line.replace("፡፡", "።") + # remove "•" if there's already EOS marker before + line = ( + line.replace("። •", "።") + .replace("? •", "?") + .replace("! •", "!") + .replace(". •", ".") + ) + for sent in re.findall(r"[^።•!?\!\?\.]+[።•!?।৷\?\!\.]?", line, flags=re.U): + yield sent + + +# ---------------------------------------------- +LANGS_OLCHIKI = {"san": "san"} + + +def split_olchiki(line: str) -> tp.Iterable[str]: + """Split Santali text into sentences.""" + for sent in re.findall(r"[^᱾|᱿!?\!\?]+[᱾|᱿!?\?\!]?", line, flags=re.U): + yield sent + + +# test sentence: ᱱᱤᱭᱟᱹ ᱣᱤᱠᱤᱯᱤᱰᱤᱭᱟ ᱫᱚ ᱥᱟᱱᱛᱟᱲᱤ ᱛᱮ ᱚᱞ ᱟᱠᱟᱱᱟ᱾ ᱚᱨᱦᱚᱸ ᱮᱴᱟᱜ ᱯᱟᱹᱨᱥᱤᱛᱮ ᱦᱚᱸ ᱟᱭᱢᱟ ᱣᱤᱠᱤᱯᱤᱰᱤᱭᱟ ᱢᱮᱱᱟᱜᱼᱟ ᱾ ᱱᱚᱸᱰᱮ ᱠᱤᱪᱷᱩ ᱛᱟᱹᱞᱠᱟᱹ ᱮᱢ ᱦᱩᱭᱱᱟ ᱾ +# splits three times + + +# ---------------------------------------------- +LANGS_BURMESE = {"mya": "mya", "shn": "shn"} + + +def split_burmese(line: str) -> tp.Iterable[str]: + """Split Amharic text into sentences.""" + # remove "•" if there's already EOS marker before + line = line.replace("။”", "APOS။") + for sent in re.findall(r"[^။!?\!\?\.]+[။!?।৷\?\!\.]?", line, flags=re.U): + yield sent.replace("APOS။", "။”") + + +# ---------------------------------- + + +def get_split_algo(lang: str, split_algo: str) -> tp.Callable[[str], tp.Iterable[str]]: + if lang in split_lang_code_map: + lang = split_lang_code_map[lang] + + # get default algorithm if requested + if split_algo == "default": + # use best algorithm in function of language + if lang in LANGS_MOSES: + split_algo = "moses" + elif lang in LANGS_INDIC: + split_algo = "indic" + elif lang in LANGS_GEEZ: + split_algo = "geez" + elif lang in LANGS_KHMER: + split_algo = "khmer" + elif lang in LANGS_BURMESE: + split_algo = "burmese" + else: + # use Moses by default (which likely will fall-back to English) + split_algo = "moses" + logger.info(f" - default algorithm for {lang} is {split_algo}") + + if split_algo == "none" or lang == "TODO": + logger.info(" - no sentence splitting") + return lambda line: [line] + + elif split_algo == "moses": + if lang in LANGS_MOSES: + lang = LANGS_MOSES[lang] + logger.info(f" - Moses sentence splitter: using rules for '{lang}'") + else: + lang = "en" + logger.info( + f" - Moses sentence splitter for {lang}: falling back to {lang} rules" + ) + splitter = SentenceSplitter(language=lang) + # non_breaking_prefix_file=non_breaking_prefix_file + return splitter.split + + elif split_algo == "indic": + # initialize toolkit (apparently not needed for sentence segmentation) + if INDIC_NLP_RESOURCES: + logger.info(" - Initialize Indic NLP toolkit") + indic_common.set_resources_path(INDIC_NLP_RESOURCES) + indic_loader.load() + if lang in LANGS_INDIC: + lang = LANGS_INDIC[lang] + logger.info(f" - Indic sentence splitter: using rules for '{lang}'") + else: + lang = "hi" + logger.info( + f" - Indic sentence splitter for {lang}: falling back to {lang} rules" + ) + + # setup normalizer + factory = IndicNormalizerFactory() + indic_normalizer = factory.get_normalizer(lang) + + def split_indic(line: str) -> tp.Iterable[str]: + """Split Indian text into sentences using Indic NLP tool.""" + line = indic_normalizer.normalize(line) + for sent in indic_sent_tok.sentence_split(line, lang=lang): + yield sent + + return split_indic + + elif split_algo == "laonlp": + logger.info(f" - LaoNLP sentence splitter applied to '{lang}'") + return lao_sent_tok + + elif split_algo == "khmer": + logger.info(f" - Khmer NLTK sentence splitter applied to '{lang}'") + return khm_sent_tok + + elif split_algo == "bodnlp": + logger.info(f" - Tibetan NLTK sentence splitter applied to '{lang}'") + return bod_sent_tok + + elif split_algo == "geez": + logger.info(f" - Ge'ez rule-based sentence splitter applied to '{lang}'") + return split_geez + + elif split_algo == "burmese": + logger.info(f" - Burmese rule-based sentence splitter applied to '{lang}'") + return split_burmese + + else: + logger.error(f"Unknown splitting algorithm {split_algo}") + + return None