Skip to content

Instantly share code, notes, and snippets.

@atharvas
Last active September 20, 2019 19:31
Show Gist options
  • Save atharvas/93444379b8a205e19bc1edded53f90e5 to your computer and use it in GitHub Desktop.
Save atharvas/93444379b8a205e19bc1edded53f90e5 to your computer and use it in GitHub Desktop.
nltk_movies_EmoLex.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "nltk_movies_EmoLex.ipynb",
"version": "0.3.2",
"provenance": [],
"collapsed_sections": [
"HWvgjRRk7xuQ",
"liLAfHpbZJjW",
"mioYbZKkGZZT",
"RIQWDq5wFb8L"
],
"toc_visible": true,
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"accelerator": "GPU"
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/atharvas/93444379b8a205e19bc1edded53f90e5/nltk_movies_emolex.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "uex_vcqtfdFh",
"colab_type": "text"
},
"source": [
"## Imports"
]
},
{
"cell_type": "code",
"metadata": {
"id": "XTNQpr1FdpCz",
"colab_type": "code",
"colab": {}
},
"source": [
"# general imports\n",
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import re\n",
"import time \n",
"from tqdm import tqdm_notebook as tqdm\n",
"import string\n",
"from collections import defaultdict\n",
"import nltk\n",
"from nltk.metrics import precision, recall, f_measure\n",
"import glob\n",
"from sklearn.model_selection import KFold"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "EPAad7W32L_j",
"colab_type": "code",
"colab": {}
},
"source": [
"%%capture\n",
"nltk.download('punkt')\n",
"nltk.download('stopwords')\n",
"from nltk.corpus import stopwords\n",
"import string\n",
"from nltk.sentiment.util import mark_negation\n",
"from nltk.stem import WordNetLemmatizer \n",
"nltk.download('wordnet')\n",
"\n",
"# from nltk import ngrams\n",
"# from scipy.spatial.distance import cdist\n",
"# from collections import Counter\n",
"# from gensim.models import Word2Vec\n",
"# from sklearn import cluster"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "5Tk0B2fJffCW",
"colab_type": "text"
},
"source": [
"## Data Imports\n",
"The file path's here must be edited for the correct data to be pulled."
]
},
{
"cell_type": "code",
"metadata": {
"id": "YHXGKNRYfgOh",
"colab_type": "code",
"outputId": "07d797db-3cbe-4dba-b4dc-348761a2331d",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 122
}
},
"source": [
"from google.colab import drive\n",
"drive.mount('/gdrive')\n",
"\n",
"base_path = \"/gdrive/My Drive/SPRING_2019/LING406/final_project/\"\n",
"raw_file_path = base_path + \"review_polarity/txt_sentoken/*/*.txt\"\n",
"emolex_path = base_path + \"NRC-Sentiment-Emotion-Lexicons/NRC-Sentiment-Emotion-Lexicons/NRC-Emotion-Lexicon-v0.92/NRC-Emotion-Lexicon-Wordlevel-v0.92.txt\""
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=947318989803-6bn6qk8qdgf4n4g3pfee6491hc0brc4i.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=email%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdocs.test%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.photos.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fpeopleapi.readonly&response_type=code\n",
"\n",
"Enter your authorization code:\n",
"··········\n",
"Mounted at /gdrive\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "_dDjAJdYfgy1",
"colab_type": "code",
"colab": {}
},
"source": [
"file_paths = []\n",
"for file in glob.glob(raw_file_path):\n",
" file_paths.append(file)\n",
" \n",
"small_paths = file_paths[0:10] + file_paths[1000:1010]"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "EbFNnfew8NVJ",
"colab_type": "code",
"colab": {}
},
"source": [
"# # Adding punctuation marks to stopwords as well\n",
"stop_words = stopwords.words('english') + list(string.punctuation)\n",
"lemmatizer = WordNetLemmatizer() "
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "y46wR08MimgV",
"colab_type": "text"
},
"source": [
"### Import & Clean Data\n",
"\n",
"Stratagies used:\n",
"1. Regex to extract words (no punctuation).\n",
"1. Regex to tokenize data.\n",
"1. No filtering of stopwords"
]
},
{
"cell_type": "code",
"metadata": {
"id": "-4nzvLLiijtF",
"colab_type": "code",
"outputId": "8f991298-151c-48fe-cad0-3bd43b9c5724",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"def get_data(file_path):\n",
" '''\n",
" Helper function to read data from file and do basic preprocessing.\n",
" \n",
" inputs:\n",
" file_path : relative location of file.\n",
" \n",
" returns: \n",
" raw_data : string with no linebreaks. (makes regex easier)\n",
" '''\n",
" raw_data = str()\n",
" with open(file_path, 'r') as file:\n",
" raw_data = file.read()\n",
" return raw_data\n",
"\n",
"raw_data = get_data(file_paths[0])\n",
"raw_data[0:10]"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'plot : two'"
]
},
"metadata": {
"tags": []
},
"execution_count": 6
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "2UDMIiSoRVbM",
"colab_type": "code",
"outputId": "a3d1567e-e3b9-4c99-a650-a60f007cb72a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"def clean_data_with_stopwords(file_path):\n",
" '''\n",
" Helper function to read data from file and do basic preprocessing.\n",
" \n",
" inputs:\n",
" file_path : relative location of file.\n",
" \n",
" returns:\n",
" tuple consisting of:\n",
" label : whether emotion is positive (pos) or negative (neg)\n",
" cleaned_data : string after tokenization and taking out stop_words.\n",
" '''\n",
" label_pattern = re.compile('''\n",
" \\/(\\w{3})\\/.*\\.txt\n",
" ''', \n",
" re.IGNORECASE|re.VERBOSE)\n",
" review_pattern = re.compile('''\n",
" ([\\w]+)\n",
" ''', \n",
" re.IGNORECASE|re.VERBOSE)\n",
" \n",
" label = label_pattern.search(file_path).group(1)\n",
" \n",
" raw_data = get_data(file_path)\n",
" tokenized_data = review_pattern.findall(raw_data)\n",
" cleaned_data = [x for x in (tokenized_data) if x.replace(\"_NEG\", \"\") not in stop_words]\n",
" return label, cleaned_data\n",
"\n",
"sample_tuple = clean_data_with_stopwords(file_paths[0])\n",
"(sample_tuple[0], sample_tuple[1][5:10])"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"('neg', ['church', 'party', 'drink', 'drive', 'get'])"
]
},
"metadata": {
"tags": []
},
"execution_count": 7
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ZXRfGW13EJkS",
"colab_type": "code",
"outputId": "e4582737-0090-4505-ca52-0783bd48edc3",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"def clean_data_with_negation(file_path):\n",
" '''\n",
" Helper function to read data from file and do basic preprocessing.\n",
" \n",
" inputs:\n",
" file_path : relative location of file.\n",
" \n",
" returns:\n",
" tuple consisting of:\n",
" label : whether emotion is positive (pos) or negative (neg)\n",
" cleaned_data : string after tokenization and taking out stop_words.\n",
" '''\n",
" label_pattern = re.compile('''\n",
" \\/(\\w{3})\\/.*\\.txt\n",
" ''', \n",
" re.IGNORECASE|re.VERBOSE)\n",
" review_pattern = re.compile('''\n",
" ([\\w]+)\n",
" ''', \n",
" re.IGNORECASE|re.VERBOSE)\n",
" \n",
" label = label_pattern.search(file_path).group(1)\n",
" \n",
" raw_data = get_data(file_path)\n",
" tokenized_data = review_pattern.findall(raw_data)\n",
" cleaned_data = [x for x in mark_negation(tokenized_data) if x.replace(\"_NEG\", \"\") not in stop_words] # mark_negation(tokenized_data)\n",
" return label, cleaned_data\n",
"\n",
"sample_tuple = clean_data_with_negation(file_paths[0])\n",
"(sample_tuple[0], sample_tuple[1][5:10])"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"('neg', ['church', 'party', 'drink', 'drive', 'get'])"
]
},
"metadata": {
"tags": []
},
"execution_count": 8
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "vHoSTC9cl9gX",
"colab_type": "code",
"outputId": "9a452116-c430-4c49-950c-85e32a6a27b1",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"def clean_data(file_path):\n",
" '''\n",
" Helper function to read data from file and do basic preprocessing.\n",
" \n",
" inputs:\n",
" file_path : relative location of file.\n",
" \n",
" returns:\n",
" tuple consisting of:\n",
" label : whether emotion is positive (pos) or negative (neg)\n",
" cleaned_data : string after tokenization and taking out stop_words.\n",
" '''\n",
" label_pattern = re.compile('''\n",
" \\/(\\w{3})\\/.*\\.txt\n",
" ''', \n",
" re.IGNORECASE|re.VERBOSE)\n",
" review_pattern = re.compile('''\n",
" ([\\w]+)\n",
" ''', \n",
" re.IGNORECASE|re.VERBOSE)\n",
" \n",
" label = label_pattern.search(file_path).group(1)\n",
" \n",
" raw_data = get_data(file_path)\n",
" tokenized_data = review_pattern.findall(raw_data)\n",
" cleaned_data = tokenized_data\n",
" return label, cleaned_data\n",
"\n",
"sample_tuple = clean_data(file_paths[0])\n",
"(sample_tuple[0], sample_tuple[1][5:10])"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"('neg', ['to', 'a', 'church', 'party', 'drink'])"
]
},
"metadata": {
"tags": []
},
"execution_count": 9
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "EidavHlxi2SV",
"colab_type": "code",
"outputId": "835abff5-124b-49d8-f249-4d97df01dd8c",
"colab": {
"resources": {
"http://localhost:8080/nbextensions/google.colab/colabwidgets/controls.css": {
"data": "LyogQ29weXJpZ2h0IChjKSBKdXB5dGVyIERldmVsb3BtZW50IFRlYW0uCiAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTW9kaWZpZWQgQlNEIExpY2Vuc2UuCiAqLwoKIC8qIFdlIGltcG9ydCBhbGwgb2YgdGhlc2UgdG9nZXRoZXIgaW4gYSBzaW5nbGUgY3NzIGZpbGUgYmVjYXVzZSB0aGUgV2VicGFjawpsb2FkZXIgc2VlcyBvbmx5IG9uZSBmaWxlIGF0IGEgdGltZS4gVGhpcyBhbGxvd3MgcG9zdGNzcyB0byBzZWUgdGhlIHZhcmlhYmxlCmRlZmluaXRpb25zIHdoZW4gdGhleSBhcmUgdXNlZC4gKi8KCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnwgQ29weXJpZ2h0IChjKSBKdXB5dGVyIERldmVsb3BtZW50IFRlYW0uCnwgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBNb2RpZmllZCBCU0QgTGljZW5zZS4KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKIC8qClRoaXMgZmlsZSBpcyBjb3BpZWQgZnJvbSB0aGUgSnVweXRlckxhYiBwcm9qZWN0IHRvIGRlZmluZSBkZWZhdWx0IHN0eWxpbmcgZm9yCndoZW4gdGhlIHdpZGdldCBzdHlsaW5nIGlzIGNvbXBpbGVkIGRvd24gdG8gZWxpbWluYXRlIENTUyB2YXJpYWJsZXMuIFdlIG1ha2Ugb25lCmNoYW5nZSAtIHdlIGNvbW1lbnQgb3V0IHRoZSBmb250IGltcG9ydCBiZWxvdy4KKi8KCiAvKioKICogVGhlIG1hdGVyaWFsIGRlc2lnbiBjb2xvcnMgYXJlIGFkYXB0ZWQgZnJvbSBnb29nbGUtbWF0ZXJpYWwtY29sb3IgdjEuMi42CiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5sZXZhbi9nb29nbGUtbWF0ZXJpYWwtY29sb3IKICogaHR0cHM6Ly9naXRodWIuY29tL2RhbmxldmFuL2dvb2dsZS1tYXRlcmlhbC1jb2xvci9ibG9iL2Y2N2NhNWY0MDI4YjJmMWIzNDg2MmY2NGIwY2E2NzMyM2Y5MWIwODgvZGlzdC9wYWxldHRlLnZhci5jc3MKICoKICogVGhlIGxpY2Vuc2UgZm9yIHRoZSBtYXRlcmlhbCBkZXNpZ24gY29sb3IgQ1NTIHZhcmlhYmxlcyBpcyBhcyBmb2xsb3dzIChzZWUKICogaHR0cHM6Ly9naXRodWIuY29tL2RhbmxldmFuL2dvb2dsZS1tYXRlcmlhbC1jb2xvci9ibG9iL2Y2N2NhNWY0MDI4YjJmMWIzNDg2MmY2NGIwY2E2NzMyM2Y5MWIwODgvTElDRU5TRSkKICoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNCBEYW4gTGUgVmFuCiAqCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwogKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwogKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogKgogKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgogKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KICoKICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQogKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCiAqIFNPRlRXQVJFLgogKi8KCiAvKgpUaGUgZm9sbG93aW5nIENTUyB2YXJpYWJsZXMgZGVmaW5lIHRoZSBtYWluLCBwdWJsaWMgQVBJIGZvciBzdHlsaW5nIEp1cHl0ZXJMYWIuClRoZXNlIHZhcmlhYmxlcyBzaG91bGQgYmUgdXNlZCBieSBhbGwgcGx1Z2lucyB3aGVyZXZlciBwb3NzaWJsZS4gSW4gb3RoZXIKd29yZHMsIHBsdWdpbnMgc2hvdWxkIG5vdCBkZWZpbmUgY3VzdG9tIGNvbG9ycywgc2l6ZXMsIGV0YyB1bmxlc3MgYWJzb2x1dGVseQpuZWNlc3NhcnkuIFRoaXMgZW5hYmxlcyB1c2VycyB0byBjaGFuZ2UgdGhlIHZpc3VhbCB0aGVtZSBvZiBKdXB5dGVyTGFiCmJ5IGNoYW5naW5nIHRoZXNlIHZhcmlhYmxlcy4KCk1hbnkgdmFyaWFibGVzIGFwcGVhciBpbiBhbiBvcmRlcmVkIHNlcXVlbmNlICgwLDEsMiwzKS4gVGhlc2Ugc2VxdWVuY2VzCmFyZSBkZXNpZ25lZCB0byB3b3JrIHdlbGwgdG9nZXRoZXIsIHNvIGZvciBleGFtcGxlLCBgLS1qcC1ib3JkZXItY29sb3IxYCBzaG91bGQKYmUgdXNlZCB3aXRoIGAtLWpwLWxheW91dC1jb2xvcjFgLiBUaGUgbnVtYmVycyBoYXZlIHRoZSBmb2xsb3dpbmcgbWVhbmluZ3M6CgoqIDA6IHN1cGVyLXByaW1hcnksIHJlc2VydmVkIGZvciBzcGVjaWFsIGVtcGhhc2lzCiogMTogcHJpbWFyeSwgbW9zdCBpbXBvcnRhbnQgdW5kZXIgbm9ybWFsIHNpdHVhdGlvbnMKKiAyOiBzZWNvbmRhcnksIG5leHQgbW9zdCBpbXBvcnRhbnQgdW5kZXIgbm9ybWFsIHNpdHVhdGlvbnMKKiAzOiB0ZXJ0aWFyeSwgbmV4dCBtb3N0IGltcG9ydGFudCB1bmRlciBub3JtYWwgc2l0dWF0aW9ucwoKVGhyb3VnaG91dCBKdXB5dGVyTGFiLCB3ZSBhcmUgbW9zdGx5IGZvbGxvd2luZyBwcmluY2lwbGVzIGZyb20gR29vZ2xlJ3MKTWF0ZXJpYWwgRGVzaWduIHdoZW4gc2VsZWN0aW5nIGNvbG9ycy4gV2UgYXJlIG5vdCwgaG93ZXZlciwgZm9sbG93aW5nCmFsbCBvZiBNRCBhcyBpdCBpcyBub3Qgb3B0aW1pemVkIGZvciBkZW5zZSwgaW5mb3JtYXRpb24gcmljaCBVSXMuCiovCgogLyoKICogT3B0aW9uYWwgbW9ub3NwYWNlIGZvbnQgZm9yIGlucHV0L291dHB1dCBwcm9tcHQuCiAqLwoKIC8qIENvbW1lbnRlZCBvdXQgaW4gaXB5d2lkZ2V0cyBzaW5jZSB3ZSBkb24ndCBuZWVkIGl0LiAqLwoKIC8qIEBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9Um9ib3RvK01vbm8nKTsgKi8KCiAvKgogKiBBZGRlZCBmb3IgY29tcGFiaXRpbGl0eSB3aXRoIG91dHB1dCBhcmVhCiAqLwoKIDpyb290IHsKCiAgLyogQm9yZGVycwoKICBUaGUgZm9sbG93aW5nIHZhcmlhYmxlcywgc3BlY2lmeSB0aGUgdmlzdWFsIHN0eWxpbmcgb2YgYm9yZGVycyBpbiBKdXB5dGVyTGFiLgogICAqLwoKICAvKiBVSSBGb250cwoKICBUaGUgVUkgZm9udCBDU1MgdmFyaWFibGVzIGFyZSB1c2VkIGZvciB0aGUgdHlwb2dyYXBoeSBhbGwgb2YgdGhlIEp1cHl0ZXJMYWIKICB1c2VyIGludGVyZmFjZSBlbGVtZW50cyB0aGF0IGFyZSBub3QgZGlyZWN0bHkgdXNlciBnZW5lcmF0ZWQgY29udGVudC4KICAqLyAvKiBCYXNlIGZvbnQgc2l6ZSAqLyAvKiBFbnN1cmVzIHB4IHBlcmZlY3QgRm9udEF3ZXNvbWUgaWNvbnMgKi8KCiAgLyogVXNlIHRoZXNlIGZvbnQgY29sb3JzIGFnYWluc3QgdGhlIGNvcnJlc3BvbmRpbmcgbWFpbiBsYXlvdXQgY29sb3JzLgogICAgIEluIGEgbGlnaHQgdGhlbWUsIHRoZXNlIGdvIGZyb20gZGFyayB0byBsaWdodC4KICAqLwoKICAvKiBVc2UgdGhlc2UgYWdhaW5zdCB0aGUgYnJhbmQvYWNjZW50L3dhcm4vZXJyb3IgY29sb3JzLgogICAgIFRoZXNlIHdpbGwgdHlwaWNhbGx5IGdvIGZyb20gbGlnaHQgdG8gZGFya2VyLCBpbiBib3RoIGEgZGFyayBhbmQgbGlnaHQgdGhlbWUKICAgKi8KCiAgLyogQ29udGVudCBGb250cwoKICBDb250ZW50IGZvbnQgdmFyaWFibGVzIGFyZSB1c2VkIGZvciB0eXBvZ3JhcGh5IG9mIHVzZXIgZ2VuZXJhdGVkIGNvbnRlbnQuCiAgKi8gLyogQmFzZSBmb250IHNpemUgKi8KCgogIC8qIExheW91dAoKICBUaGUgZm9sbG93aW5nIGFyZSB0aGUgbWFpbiBsYXlvdXQgY29sb3JzIHVzZSBpbiBKdXB5dGVyTGFiLiBJbiBhIGxpZ2h0CiAgdGhlbWUgdGhlc2Ugd291bGQgZ28gZnJvbSBsaWdodCB0byBkYXJrLgogICovCgogIC8qIEJyYW5kL2FjY2VudCAqLwoKICAvKiBTdGF0ZSBjb2xvcnMgKHdhcm4sIGVycm9yLCBzdWNjZXNzLCBpbmZvKSAqLwoKICAvKiBDZWxsIHNwZWNpZmljIHN0eWxlcyAqLwogIC8qIEEgY3VzdG9tIGJsZW5kIG9mIE1EIGdyZXkgYW5kIGJsdWUgNjAwCiAgICogU2VlIGh0dHBzOi8vbWV5ZXJ3ZWIuY29tL2VyaWMvdG9vbHMvY29sb3ItYmxlbmQvIzU0NkU3QToxRTg4RTU6NTpoZXggKi8KICAvKiBBIGN1c3RvbSBibGVuZCBvZiBNRCBncmV5IGFuZCBvcmFuZ2UgNjAwCiAgICogaHR0cHM6Ly9tZXllcndlYi5jb20vZXJpYy90b29scy9jb2xvci1ibGVuZC8jNTQ2RTdBOkY0NTExRTo1OmhleCAqLwoKICAvKiBOb3RlYm9vayBzcGVjaWZpYyBzdHlsZXMgKi8KCiAgLyogQ29uc29sZSBzcGVjaWZpYyBzdHlsZXMgKi8KCiAgLyogVG9vbGJhciBzcGVjaWZpYyBzdHlsZXMgKi8KfQoKIC8qIENvcHlyaWdodCAoYykgSnVweXRlciBEZXZlbG9wbWVudCBUZWFtLgogKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIE1vZGlmaWVkIEJTRCBMaWNlbnNlLgogKi8KCiAvKgogKiBXZSBhc3N1bWUgdGhhdCB0aGUgQ1NTIHZhcmlhYmxlcyBpbgogKiBodHRwczovL2dpdGh1Yi5jb20vanVweXRlcmxhYi9qdXB5dGVybGFiL2Jsb2IvbWFzdGVyL3NyYy9kZWZhdWx0LXRoZW1lL3ZhcmlhYmxlcy5jc3MKICogaGF2ZSBiZWVuIGRlZmluZWQuCiAqLwoKIC8qIFRoaXMgZmlsZSBoYXMgY29kZSBkZXJpdmVkIGZyb20gUGhvc3Bob3JKUyBDU1MgZmlsZXMsIGFzIG5vdGVkIGJlbG93LiBUaGUgbGljZW5zZSBmb3IgdGhpcyBQaG9zcGhvckpTIGNvZGUgaXM6CgpDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNywgUGhvc3Bob3JKUyBDb250cmlidXRvcnMKQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKCiogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCiAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCgoqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCiAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCgoqIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQpJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQpGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTApEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgpTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgpDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLApPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQpPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoKKi8KCiAvKgogKiBUaGUgZm9sbG93aW5nIHNlY3Rpb24gaXMgZGVyaXZlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9waG9zcGhvcmpzL3Bob3NwaG9yL2Jsb2IvMjNiOWQwNzVlYmM1YjczYWIxNDhiNmViZmMyMGFmOTdmODU3MTRjNC9wYWNrYWdlcy93aWRnZXRzL3N0eWxlL3RhYmJhci5jc3MgCiAqIFdlJ3ZlIHNjb3BlZCB0aGUgcnVsZXMgc28gdGhhdCB0aGV5IGFyZSBjb25zaXN0ZW50IHdpdGggZXhhY3RseSBvdXIgY29kZS4KICovCgogLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7CiAgdXNlci1zZWxlY3Q6IG5vbmU7Cn0KCiAuanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXJbZGF0YS1vcmllbnRhdGlvbj0naG9yaXpvbnRhbCddIHsKICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7CiAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKfQoKIC5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiA+IC5wLVRhYkJhcltkYXRhLW9yaWVudGF0aW9uPSd2ZXJ0aWNhbCddIHsKICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOwogIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0KCiAuanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIgPiAucC1UYWJCYXItY29udGVudCB7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDA7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogZmxleDsKICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgICAtbXMtZmxleDogMSAxIGF1dG87CiAgICAgICAgICBmbGV4OiAxIDEgYXV0bzsKICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7Cn0KCiAuanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXJbZGF0YS1vcmllbnRhdGlvbj0naG9yaXpvbnRhbCddID4gLnAtVGFiQmFyLWNvbnRlbnQgewogIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93Owp9CgogLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyW2RhdGEtb3JpZW50YXRpb249J3ZlcnRpY2FsJ10gPiAucC1UYWJCYXItY29udGVudCB7CiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwp9CgogLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyIC5wLVRhYkJhci10YWIgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IGZsZXg7CiAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICBvdmVyZmxvdzogaGlkZGVuOwp9CgogLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyIC5wLVRhYkJhci10YWJJY29uLAouanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIgLnAtVGFiQmFyLXRhYkNsb3NlSWNvbiB7CiAgLXdlYmtpdC1ib3gtZmxleDogMDsKICAgICAgLW1zLWZsZXg6IDAgMCBhdXRvOwogICAgICAgICAgZmxleDogMCAwIGF1dG87Cn0KCiAuanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIgLnAtVGFiQmFyLXRhYkxhYmVsIHsKICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgICAtbXMtZmxleDogMSAxIGF1dG87CiAgICAgICAgICBmbGV4OiAxIDEgYXV0bzsKICBvdmVyZmxvdzogaGlkZGVuOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCiAuanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIgLnAtVGFiQmFyLXRhYi5wLW1vZC1oaWRkZW4gewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoKIC5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiA+IC5wLVRhYkJhci5wLW1vZC1kcmFnZ2luZyAucC1UYWJCYXItdGFiIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCiAuanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIucC1tb2QtZHJhZ2dpbmdbZGF0YS1vcmllbnRhdGlvbj0naG9yaXpvbnRhbCddIC5wLVRhYkJhci10YWIgewogIGxlZnQ6IDA7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBsZWZ0IDE1MG1zIGVhc2U7CiAgdHJhbnNpdGlvbjogbGVmdCAxNTBtcyBlYXNlOwp9CgogLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyLnAtbW9kLWRyYWdnaW5nW2RhdGEtb3JpZW50YXRpb249J3ZlcnRpY2FsJ10gLnAtVGFiQmFyLXRhYiB7CiAgdG9wOiAwOwogIC13ZWJraXQtdHJhbnNpdGlvbjogdG9wIDE1MG1zIGVhc2U7CiAgdHJhbnNpdGlvbjogdG9wIDE1MG1zIGVhc2U7Cn0KCiAuanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIucC1tb2QtZHJhZ2dpbmcgLnAtVGFiQmFyLXRhYi5wLW1vZC1kcmFnZ2luZyB7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwogIHRyYW5zaXRpb246IG5vbmU7Cn0KCiAvKiBFbmQgdGFiYmFyLmNzcyAqLwoKIDpyb290IHsgLyogbWFyZ2luIGJldHdlZW4gaW5saW5lIGVsZW1lbnRzICovCgogICAgLyogRnJvbSBNYXRlcmlhbCBEZXNpZ24gTGl0ZSAqLwp9CgogLmp1cHl0ZXItd2lkZ2V0cyB7CiAgICBtYXJnaW46IDJweDsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGNvbG9yOiBibGFjazsKICAgIG92ZXJmbG93OiB2aXNpYmxlOwp9CgogLmp1cHl0ZXItd2lkZ2V0cy5qdXB5dGVyLXdpZGdldHMtZGlzY29ubmVjdGVkOjpiZWZvcmUgewogICAgbGluZS1oZWlnaHQ6IDI4cHg7CiAgICBoZWlnaHQ6IDI4cHg7Cn0KCiAuanAtT3V0cHV0LXJlc3VsdCA+IC5qdXB5dGVyLXdpZGdldHMgewogICAgbWFyZ2luLWxlZnQ6IDA7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCiAvKiB2Ym94IGFuZCBoYm94ICovCgogLndpZGdldC1pbmxpbmUtaGJveCB7CiAgICAvKiBIb3Jpem9udGFsIHdpZGdldHMgKi8KICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAtd2Via2l0LWJveC1hbGlnbjogYmFzZWxpbmU7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGJhc2VsaW5lOwogICAgICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7Cn0KCiAud2lkZ2V0LWlubGluZS12Ym94IHsKICAgIC8qIFZlcnRpY2FsIFdpZGdldHMgKi8KICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwp9CgogLndpZGdldC1ib3ggewogICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBtYXJnaW46IDA7CiAgICBvdmVyZmxvdzogYXV0bzsKfQoKIC53aWRnZXQtZ3JpZGJveCB7CiAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBkaXNwbGF5OiBncmlkOwogICAgbWFyZ2luOiAwOwogICAgb3ZlcmZsb3c6IGF1dG87Cn0KCiAud2lkZ2V0LWhib3ggewogICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7Cn0KCiAud2lkZ2V0LXZib3ggewogICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwp9CgogLyogR2VuZXJhbCBCdXR0b24gU3R5bGluZyAqLwoKIC5qdXB5dGVyLWJ1dHRvbiB7CiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4OwogICAgcGFkZGluZy10b3A6IDBweDsKICAgIHBhZGRpbmctYm90dG9tOiAwcHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC1zaXplOiAxM3B4OwogICAgY3Vyc29yOiBwb2ludGVyOwoKICAgIGhlaWdodDogMjhweDsKICAgIGJvcmRlcjogMHB4IHNvbGlkOwogICAgbGluZS1oZWlnaHQ6IDI4cHg7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7CgogICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgLjgpOwogICAgYmFja2dyb3VuZC1jb2xvcjogI0VFRUVFRTsKICAgIGJvcmRlci1jb2xvcjogI0UwRTBFMDsKICAgIGJvcmRlcjogbm9uZTsKfQoKIC5qdXB5dGVyLWJ1dHRvbiBpLmZhIHsKICAgIG1hcmdpbi1yaWdodDogNHB4OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KCiAuanVweXRlci1idXR0b246ZW1wdHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcMjAwYiI7IC8qIHplcm8td2lkdGggc3BhY2UgKi8KfQoKIC5qdXB5dGVyLXdpZGdldHMuanVweXRlci1idXR0b246ZGlzYWJsZWQgewogICAgb3BhY2l0eTogMC42Owp9CgogLmp1cHl0ZXItYnV0dG9uIGkuZmEuY2VudGVyIHsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKIC5qdXB5dGVyLWJ1dHRvbjpob3ZlcjplbmFibGVkLCAuanVweXRlci1idXR0b246Zm9jdXM6ZW5hYmxlZCB7CiAgICAvKiBNRCBMaXRlIDJkcCBzaGFkb3cgKi8KICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAuMTQpLAogICAgICAgICAgICAgICAgMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAuMiksCiAgICAgICAgICAgICAgICAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIC4xMik7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgLjE0KSwKICAgICAgICAgICAgICAgIDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgLjIpLAogICAgICAgICAgICAgICAgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAuMTIpOwp9CgogLmp1cHl0ZXItYnV0dG9uOmFjdGl2ZSwgLmp1cHl0ZXItYnV0dG9uLm1vZC1hY3RpdmUgewogICAgLyogTUQgTGl0ZSA0ZHAgc2hhZG93ICovCiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgNHB4IDVweCAwIHJnYmEoMCwgMCwgMCwgLjE0KSwKICAgICAgICAgICAgICAgIDAgMXB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIC4xMiksCiAgICAgICAgICAgICAgICAwIDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIC4yKTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggNXB4IDAgcmdiYSgwLCAwLCAwLCAuMTQpLAogICAgICAgICAgICAgICAgMCAxcHggMTBweCAwIHJnYmEoMCwgMCwgMCwgLjEyKSwKICAgICAgICAgICAgICAgIDAgMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgLjIpOwogICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgLjgpOwogICAgYmFja2dyb3VuZC1jb2xvcjogI0JEQkRCRDsKfQoKIC5qdXB5dGVyLWJ1dHRvbjpmb2N1czplbmFibGVkIHsKICAgIG91dGxpbmU6IDFweCBzb2xpZCAjNjRCNUY2Owp9CgogLyogQnV0dG9uICJQcmltYXJ5IiBTdHlsaW5nICovCgogLmp1cHl0ZXItYnV0dG9uLm1vZC1wcmltYXJ5IHsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEuMCk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjE5NkYzOwp9CgogLmp1cHl0ZXItYnV0dG9uLm1vZC1wcmltYXJ5Lm1vZC1hY3RpdmUgewogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMSk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTk3NkQyOwp9CgogLmp1cHl0ZXItYnV0dG9uLm1vZC1wcmltYXJ5OmFjdGl2ZSB7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAxKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICMxOTc2RDI7Cn0KCiAvKiBCdXR0b24gIlN1Y2Nlc3MiIFN0eWxpbmcgKi8KCiAuanVweXRlci1idXR0b24ubW9kLXN1Y2Nlc3MgewogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMS4wKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICM0Q0FGNTA7Cn0KCiAuanVweXRlci1idXR0b24ubW9kLXN1Y2Nlc3MubW9kLWFjdGl2ZSB7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAxKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzODhFM0M7CiB9CgogLmp1cHl0ZXItYnV0dG9uLm1vZC1zdWNjZXNzOmFjdGl2ZSB7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAxKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzODhFM0M7CiB9CgogLyogQnV0dG9uICJJbmZvIiBTdHlsaW5nICovCgogLmp1cHl0ZXItYnV0dG9uLm1vZC1pbmZvIHsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEuMCk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBCQ0Q0Owp9CgogLmp1cHl0ZXItYnV0dG9uLm1vZC1pbmZvLm1vZC1hY3RpdmUgewogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMSk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5N0E3Owp9CgogLmp1cHl0ZXItYnV0dG9uLm1vZC1pbmZvOmFjdGl2ZSB7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAxKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDk3QTc7Cn0KCiAvKiBCdXR0b24gIldhcm5pbmciIFN0eWxpbmcgKi8KCiAuanVweXRlci1idXR0b24ubW9kLXdhcm5pbmcgewogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMS4wKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNGRjk4MDA7Cn0KCiAuanVweXRlci1idXR0b24ubW9kLXdhcm5pbmcubW9kLWFjdGl2ZSB7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAxKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNGNTdDMDA7Cn0KCiAuanVweXRlci1idXR0b24ubW9kLXdhcm5pbmc6YWN0aXZlIHsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEpOwogICAgYmFja2dyb3VuZC1jb2xvcjogI0Y1N0MwMDsKfQoKIC8qIEJ1dHRvbiAiRGFuZ2VyIiBTdHlsaW5nICovCgogLmp1cHl0ZXItYnV0dG9uLm1vZC1kYW5nZXIgewogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMS4wKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNGNDQzMzY7Cn0KCiAuanVweXRlci1idXR0b24ubW9kLWRhbmdlci5tb2QtYWN0aXZlIHsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEpOwogICAgYmFja2dyb3VuZC1jb2xvcjogI0QzMkYyRjsKfQoKIC5qdXB5dGVyLWJ1dHRvbi5tb2QtZGFuZ2VyOmFjdGl2ZSB7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAxKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNEMzJGMkY7Cn0KCiAvKiBXaWRnZXQgQnV0dG9uKi8KCiAud2lkZ2V0LWJ1dHRvbiwgLndpZGdldC10b2dnbGUtYnV0dG9uIHsKICAgIHdpZHRoOiAxNDhweDsKfQoKIC8qIFdpZGdldCBMYWJlbCBTdHlsaW5nICovCgogLyogT3ZlcnJpZGUgQm9vdHN0cmFwIGxhYmVsIGNzcyAqLwoKIC5qdXB5dGVyLXdpZGdldHMgbGFiZWwgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIG1hcmdpbi1ib3R0b206IGluaXRpYWw7Cn0KCiAud2lkZ2V0LWxhYmVsLWJhc2ljIHsKICAgIC8qIEJhc2ljIExhYmVsICovCiAgICBjb2xvcjogYmxhY2s7CiAgICBmb250LXNpemU6IDEzcHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgbGluZS1oZWlnaHQ6IDI4cHg7Cn0KCiAud2lkZ2V0LWxhYmVsIHsKICAgIC8qIExhYmVsICovCiAgICBjb2xvcjogYmxhY2s7CiAgICBmb250LXNpemU6IDEzcHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgbGluZS1oZWlnaHQ6IDI4cHg7Cn0KCiAud2lkZ2V0LWlubGluZS1oYm94IC53aWRnZXQtbGFiZWwgewogICAgLyogSG9yaXpvbnRhbCBXaWRnZXQgTGFiZWwgKi8KICAgIGNvbG9yOiBibGFjazsKICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgbWFyZ2luLXJpZ2h0OiA4cHg7CiAgICB3aWR0aDogODBweDsKICAgIC1tcy1mbGV4LW5lZ2F0aXZlOiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwp9CgogLndpZGdldC1pbmxpbmUtdmJveCAud2lkZ2V0LWxhYmVsIHsKICAgIC8qIFZlcnRpY2FsIFdpZGdldCBMYWJlbCAqLwogICAgY29sb3I6IGJsYWNrOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbGluZS1oZWlnaHQ6IDI4cHg7Cn0KCiAvKiBXaWRnZXQgUmVhZG91dCBTdHlsaW5nICovCgogLndpZGdldC1yZWFkb3V0IHsKICAgIGNvbG9yOiBibGFjazsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIGhlaWdodDogMjhweDsKICAgIGxpbmUtaGVpZ2h0OiAyOHB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCiAud2lkZ2V0LXJlYWRvdXQub3ZlcmZsb3cgewogICAgLyogT3ZlcmZsb3dpbmcgUmVhZG91dCAqLwoKICAgIC8qIEZyb20gTWF0ZXJpYWwgRGVzaWduIExpdGUKICAgICAgICBzaGFkb3cta2V5LXVtYnJhLW9wYWNpdHk6IDAuMjsKICAgICAgICBzaGFkb3cta2V5LXBlbnVtYnJhLW9wYWNpdHk6IDAuMTQ7CiAgICAgICAgc2hhZG93LWFtYmllbnQtc2hhZG93LW9wYWNpdHk6IDAuMTI7CiAgICAgKi8KICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAuMiksCiAgICAgICAgICAgICAgICAgICAgICAgIDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgLjE0KSwKICAgICAgICAgICAgICAgICAgICAgICAgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAuMTIpOwoKICAgIGJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgLjIpLAogICAgICAgICAgICAgICAgMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAuMTQpLAogICAgICAgICAgICAgICAgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAuMTIpOwp9CgogLndpZGdldC1pbmxpbmUtaGJveCAud2lkZ2V0LXJlYWRvdXQgewogICAgLyogSG9yaXpvbnRhbCBSZWFkb3V0ICovCiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBtYXgtd2lkdGg6IDE0OHB4OwogICAgbWluLXdpZHRoOiA3MnB4OwogICAgbWFyZ2luLWxlZnQ6IDRweDsKfQoKIC53aWRnZXQtaW5saW5lLXZib3ggLndpZGdldC1yZWFkb3V0IHsKICAgIC8qIFZlcnRpY2FsIFJlYWRvdXQgKi8KICAgIG1hcmdpbi10b3A6IDRweDsKICAgIC8qIGFzIHdpZGUgYXMgdGhlIHdpZGdldCAqLwogICAgd2lkdGg6IGluaGVyaXQ7Cn0KCiAvKiBXaWRnZXQgQ2hlY2tib3ggU3R5bGluZyAqLwoKIC53aWRnZXQtY2hlY2tib3ggewogICAgd2lkdGg6IDMwMHB4OwogICAgaGVpZ2h0OiAyOHB4OwogICAgbGluZS1oZWlnaHQ6IDI4cHg7Cn0KCiAud2lkZ2V0LWNoZWNrYm94IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewogICAgbWFyZ2luOiAwcHggOHB4IDBweCAwcHg7CiAgICBsaW5lLWhlaWdodDogMjhweDsKICAgIGZvbnQtc2l6ZTogbGFyZ2U7CiAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogICAgICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAtbXMtZmxleC1uZWdhdGl2ZTogMDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IGNlbnRlcjsKICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7Cn0KCiAvKiBXaWRnZXQgVmFsaWQgU3R5bGluZyAqLwoKIC53aWRnZXQtdmFsaWQgewogICAgaGVpZ2h0OiAyOHB4OwogICAgbGluZS1oZWlnaHQ6IDI4cHg7CiAgICB3aWR0aDogMTQ4cHg7CiAgICBmb250LXNpemU6IDEzcHg7Cn0KCiAud2lkZ2V0LXZhbGlkIGk6YmVmb3JlIHsKICAgIGxpbmUtaGVpZ2h0OiAyOHB4OwogICAgbWFyZ2luLXJpZ2h0OiA0cHg7CiAgICBtYXJnaW4tbGVmdDogNHB4OwoKICAgIC8qIGZyb20gdGhlIGZhIGNsYXNzIGluIEZvbnRBd2Vzb21lOiBodHRwczovL2dpdGh1Yi5jb20vRm9ydEF3ZXNvbWUvRm9udC1Bd2Vzb21lL2Jsb2IvNDkxMDBjN2MzYTdiNThkNTBiYWE3MWVmZWYxMWFmNDFhNjZiMDNkMy9jc3MvZm9udC1hd2Vzb21lLmNzcyNMMTQgKi8KICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGZvbnQ6IG5vcm1hbCBub3JtYWwgbm9ybWFsIDE0cHgvMSBGb250QXdlc29tZTsKICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKICAgIHRleHQtcmVuZGVyaW5nOiBhdXRvOwogICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwp9CgogLndpZGdldC12YWxpZC5tb2QtdmFsaWQgaTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDBjIjsKICAgIGNvbG9yOiBncmVlbjsKfQoKIC53aWRnZXQtdmFsaWQubW9kLWludmFsaWQgaTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDBkIjsKICAgIGNvbG9yOiByZWQ7Cn0KCiAud2lkZ2V0LXZhbGlkLm1vZC12YWxpZCAud2lkZ2V0LXZhbGlkLXJlYWRvdXQgewogICAgZGlzcGxheTogbm9uZTsKfQoKIC8qIFdpZGdldCBUZXh0IGFuZCBUZXh0QXJlYSBTdHlpbmcgKi8KCiAud2lkZ2V0LXRleHRhcmVhLCAud2lkZ2V0LXRleHQgewogICAgd2lkdGg6IDMwMHB4Owp9CgogLndpZGdldC10ZXh0IGlucHV0W3R5cGU9InRleHQiXSwgLndpZGdldC10ZXh0IGlucHV0W3R5cGU9Im51bWJlciJdewogICAgaGVpZ2h0OiAyOHB4OwogICAgbGluZS1oZWlnaHQ6IDI4cHg7Cn0KCiAud2lkZ2V0LXRleHQgaW5wdXRbdHlwZT0idGV4dCJdOmRpc2FibGVkLCAud2lkZ2V0LXRleHQgaW5wdXRbdHlwZT0ibnVtYmVyIl06ZGlzYWJsZWQsIC53aWRnZXQtdGV4dGFyZWEgdGV4dGFyZWE6ZGlzYWJsZWQgewogICAgb3BhY2l0eTogMC42Owp9CgogLndpZGdldC10ZXh0IGlucHV0W3R5cGU9InRleHQiXSwgLndpZGdldC10ZXh0IGlucHV0W3R5cGU9Im51bWJlciJdLCAud2lkZ2V0LXRleHRhcmVhIHRleHRhcmVhIHsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICM5RTlFOUU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIC44KTsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIHBhZGRpbmc6IDRweCA4cHg7CiAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogICAgICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICBtaW4td2lkdGg6IDA7IC8qIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgZm9yIHRoZSBmbGV4Ym94IHRvIHNocmluayB0aGlzIGlucHV0ICovCiAgICAtbXMtZmxleC1uZWdhdGl2ZTogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsKfQoKIC53aWRnZXQtdGV4dGFyZWEgdGV4dGFyZWEgewogICAgaGVpZ2h0OiBpbmhlcml0OwogICAgd2lkdGg6IGluaGVyaXQ7Cn0KCiAud2lkZ2V0LXRleHQgaW5wdXQ6Zm9jdXMsIC53aWRnZXQtdGV4dGFyZWEgdGV4dGFyZWE6Zm9jdXMgewogICAgYm9yZGVyLWNvbG9yOiAjNjRCNUY2Owp9CgogLyogV2lkZ2V0IFNsaWRlciAqLwoKIC53aWRnZXQtc2xpZGVyIC51aS1zbGlkZXIgewogICAgLyogU2xpZGVyIFRyYWNrICovCiAgICBib3JkZXI6IDFweCBzb2xpZCAjQkRCREJEOwogICAgYmFja2dyb3VuZDogI0JEQkRCRDsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGJvcmRlci1yYWRpdXM6IDBweDsKfQoKIC53aWRnZXQtc2xpZGVyIC51aS1zbGlkZXIgLnVpLXNsaWRlci1oYW5kbGUgewogICAgLyogU2xpZGVyIEhhbmRsZSAqLwogICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50OyAvKiBmb2N1c2VkIHNsaWRlciBoYW5kbGVzIGFyZSBjb2xvcmVkIC0gc2VlIGJlbG93ICovCiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICM5RTlFOUU7CiAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICB6LWluZGV4OiAxOwogICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsgLyogT3ZlcnJpZGUganF1ZXJ5LXVpICovCn0KCiAvKiBPdmVycmlkZSBqcXVlcnktdWkgKi8KCiAud2lkZ2V0LXNsaWRlciAudWktc2xpZGVyIC51aS1zbGlkZXItaGFuZGxlOmhvdmVyLCAud2lkZ2V0LXNsaWRlciAudWktc2xpZGVyIC51aS1zbGlkZXItaGFuZGxlOmZvY3VzIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyMTk2RjM7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjMjE5NkYzOwp9CgogLndpZGdldC1zbGlkZXIgLnVpLXNsaWRlciAudWktc2xpZGVyLWhhbmRsZTphY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzIxOTZGMzsKICAgIGJvcmRlci1jb2xvcjogIzIxOTZGMzsKICAgIHotaW5kZXg6IDI7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4yKTsKICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjIpOwp9CgogLndpZGdldC1zbGlkZXIgIC51aS1zbGlkZXIgLnVpLXNsaWRlci1yYW5nZSB7CiAgICAvKiBJbnRlcnZhbCBiZXR3ZWVuIHRoZSB0d28gc3BlY2lmaWVkIHZhbHVlIG9mIGEgZG91YmxlIHNsaWRlciAqLwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgYmFja2dyb3VuZDogIzIxOTZGMzsKICAgIHotaW5kZXg6IDA7Cn0KCiAvKiBTaGFwZXMgb2YgU2xpZGVyIEhhbmRsZXMgKi8KCiAud2lkZ2V0LWhzbGlkZXIgLnVpLXNsaWRlciAudWktc2xpZGVyLWhhbmRsZSB7CiAgICB3aWR0aDogMTZweDsKICAgIGhlaWdodDogMTZweDsKICAgIG1hcmdpbi10b3A6IC03cHg7CiAgICBtYXJnaW4tbGVmdDogLTdweDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIHRvcDogMDsKfQoKIC53aWRnZXQtdnNsaWRlciAudWktc2xpZGVyIC51aS1zbGlkZXItaGFuZGxlIHsKICAgIHdpZHRoOiAxNnB4OwogICAgaGVpZ2h0OiAxNnB4OwogICAgbWFyZ2luLWJvdHRvbTogLTdweDsKICAgIG1hcmdpbi1sZWZ0OiAtN3B4OwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgbGVmdDogMDsKfQoKIC53aWRnZXQtaHNsaWRlciAudWktc2xpZGVyIC51aS1zbGlkZXItcmFuZ2UgewogICAgaGVpZ2h0OiA4cHg7CiAgICBtYXJnaW4tdG9wOiAtM3B4Owp9CgogLndpZGdldC12c2xpZGVyIC51aS1zbGlkZXIgLnVpLXNsaWRlci1yYW5nZSB7CiAgICB3aWR0aDogOHB4OwogICAgbWFyZ2luLWxlZnQ6IC0zcHg7Cn0KCiAvKiBIb3Jpem9udGFsIFNsaWRlciAqLwoKIC53aWRnZXQtaHNsaWRlciB7CiAgICB3aWR0aDogMzAwcHg7CiAgICBoZWlnaHQ6IDI4cHg7CiAgICBsaW5lLWhlaWdodDogMjhweDsKCiAgICAvKiBPdmVycmlkZSB0aGUgYWxpZ24taXRlbXMgYmFzZWxpbmUuIFRoaXMgd2F5LCB0aGUgZGVzY3JpcHRpb24gYW5kIHJlYWRvdXQKICAgIHN0aWxsIHNlZW0gdG8gYWxpZ24gdGhlaXIgYmFzZWxpbmUgcHJvcGVybHksIGFuZCB3ZSBkb24ndCBoYXZlIHRvIGhhdmUKICAgIGFsaWduLXNlbGY6IHN0cmV0Y2ggaW4gdGhlIC5zbGlkZXItY29udGFpbmVyLiAqLwogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwp9CgogLndpZGdldHMtc2xpZGVyIC5zbGlkZXItY29udGFpbmVyIHsKICAgIG92ZXJmbG93OiB2aXNpYmxlOwp9CgogLndpZGdldC1oc2xpZGVyIC5zbGlkZXItY29udGFpbmVyIHsKICAgIGhlaWdodDogMjhweDsKICAgIG1hcmdpbi1sZWZ0OiA2cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDZweDsKICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAgICAgLW1zLWZsZXg6IDEgMSAxNDhweDsKICAgICAgICAgICAgZmxleDogMSAxIDE0OHB4Owp9CgogLndpZGdldC1oc2xpZGVyIC51aS1zbGlkZXIgewogICAgLyogSW5uZXIsIGludmlzaWJsZSBzbGlkZSBkaXYgKi8KICAgIGhlaWdodDogNHB4OwogICAgbWFyZ2luLXRvcDogMTJweDsKICAgIHdpZHRoOiAxMDAlOwp9CgogLyogVmVydGljYWwgU2xpZGVyICovCgogLndpZGdldC12Ym94IC53aWRnZXQtbGFiZWwgewogICAgaGVpZ2h0OiAyOHB4OwogICAgbGluZS1oZWlnaHQ6IDI4cHg7Cn0KCiAud2lkZ2V0LXZzbGlkZXIgewogICAgLyogVmVydGljYWwgU2xpZGVyICovCiAgICBoZWlnaHQ6IDIwMHB4OwogICAgd2lkdGg6IDcycHg7Cn0KCiAud2lkZ2V0LXZzbGlkZXIgLnNsaWRlci1jb250YWluZXIgewogICAgLXdlYmtpdC1ib3gtZmxleDogMTsKICAgICAgICAtbXMtZmxleDogMSAxIDE0OHB4OwogICAgICAgICAgICBmbGV4OiAxIDEgMTQ4cHg7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgIG1hcmdpbi1ib3R0b206IDZweDsKICAgIG1hcmdpbi10b3A6IDZweDsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwp9CgogLndpZGdldC12c2xpZGVyIC51aS1zbGlkZXItdmVydGljYWwgewogICAgLyogSW5uZXIsIGludmlzaWJsZSBzbGlkZSBkaXYgKi8KICAgIHdpZHRoOiA0cHg7CiAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogICAgICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQoKIC8qIFdpZGdldCBQcm9ncmVzcyBTdHlsaW5nICovCgogLnByb2dyZXNzLWJhciB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CiAgICB0cmFuc2l0aW9uOiBub25lOwp9CgogLnByb2dyZXNzLWJhciB7CiAgICBoZWlnaHQ6IDI4cHg7Cn0KCiAucHJvZ3Jlc3MtYmFyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyMTk2RjM7Cn0KCiAucHJvZ3Jlc3MtYmFyLXN1Y2Nlc3MgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzRDQUY1MDsKfQoKIC5wcm9ncmVzcy1iYXItaW5mbyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBCQ0Q0Owp9CgogLnByb2dyZXNzLWJhci13YXJuaW5nIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNGRjk4MDA7Cn0KCiAucHJvZ3Jlc3MtYmFyLWRhbmdlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjQ0MzM2Owp9CgogLnByb2dyZXNzIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNFRUVFRUU7CiAgICBib3JkZXI6IG5vbmU7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7Cn0KCiAvKiBIb3Jpc29udGFsIFByb2dyZXNzICovCgogLndpZGdldC1ocHJvZ3Jlc3MgewogICAgLyogUHJvZ3Jlc3MgQmFyICovCiAgICBoZWlnaHQ6IDI4cHg7CiAgICBsaW5lLWhlaWdodDogMjhweDsKICAgIHdpZHRoOiAzMDBweDsKICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKCn0KCiAud2lkZ2V0LWhwcm9ncmVzcyAucHJvZ3Jlc3MgewogICAgLXdlYmtpdC1ib3gtZmxleDogMTsKICAgICAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTsKICAgICAgICAgICAgZmxleC1ncm93OiAxOwogICAgbWFyZ2luLXRvcDogNHB4OwogICAgbWFyZ2luLWJvdHRvbTogNHB4OwogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaDsKICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoOwogICAgLyogT3ZlcnJpZGUgYm9vdHN0cmFwIHN0eWxlICovCiAgICBoZWlnaHQ6IGF1dG87CiAgICBoZWlnaHQ6IGluaXRpYWw7Cn0KCiAvKiBWZXJ0aWNhbCBQcm9ncmVzcyAqLwoKIC53aWRnZXQtdnByb2dyZXNzIHsKICAgIGhlaWdodDogMjAwcHg7CiAgICB3aWR0aDogNzJweDsKfQoKIC53aWRnZXQtdnByb2dyZXNzIC5wcm9ncmVzcyB7CiAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogICAgICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICB3aWR0aDogMjBweDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKIC8qIFNlbGVjdCBXaWRnZXQgU3R5bGluZyAqLwoKIC53aWRnZXQtZHJvcGRvd24gewogICAgaGVpZ2h0OiAyOHB4OwogICAgd2lkdGg6IDMwMHB4OwogICAgbGluZS1oZWlnaHQ6IDI4cHg7Cn0KCiAud2lkZ2V0LWRyb3Bkb3duID4gc2VsZWN0IHsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjOUU5RTlFOwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIGhlaWdodDogaW5oZXJpdDsKICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAgICAgLW1zLWZsZXg6IDEgMSAxNDhweDsKICAgICAgICAgICAgZmxleDogMSAxIDE0OHB4OwogICAgbWluLXdpZHRoOiAwOyAvKiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIGZvciB0aGUgZmxleGJveCB0byBzaHJpbmsgdGhpcyBpbnB1dCAqLwogICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50OwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgICAgICAgICBib3gtc2hhZG93OiBub25lOwogICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAuOCk7CiAgICBmb250LXNpemU6IDEzcHg7CiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgcGFkZGluZy1sZWZ0OiA4cHg7CglhcHBlYXJhbmNlOiBub25lOwoJLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwoJLW1vei1hcHBlYXJhbmNlOiBub25lOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKCWJhY2tncm91bmQtc2l6ZTogMjBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IGNlbnRlcjsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpZFhSbUxUZ2lQejRLUENFdExTQkhaVzVsY21GMGIzSTZJRUZrYjJKbElFbHNiSFZ6ZEhKaGRHOXlJREU1TGpJdU1Td2dVMVpISUVWNGNHOXlkQ0JRYkhWbkxVbHVJQzRnVTFaSElGWmxjbk5wYjI0NklEWXVNREFnUW5WcGJHUWdNQ2tnSUMwdFBnbzhjM1puSUhabGNuTnBiMjQ5SWpFdU1TSWdhV1E5SWt4aGVXVnlYekVpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZlR3hwYm1zOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2ZUd4cGJtc2lJSGc5SWpCd2VDSWdlVDBpTUhCNElnb0pJSFpwWlhkQ2IzZzlJakFnTUNBeE9DQXhPQ0lnYzNSNWJHVTlJbVZ1WVdKc1pTMWlZV05yWjNKdmRXNWtPbTVsZHlBd0lEQWdNVGdnTVRnN0lpQjRiV3c2YzNCaFkyVTlJbkJ5WlhObGNuWmxJajRLUEhOMGVXeGxJSFI1Y0dVOUluUmxlSFF2WTNOeklqNEtDUzV6ZERCN1ptbHNiRHB1YjI1bE8zMEtQQzl6ZEhsc1pUNEtQSEJoZEdnZ1pEMGlUVFV1TWl3MUxqbE1PU3c1TGpkc015NDRMVE11T0d3eExqSXNNUzR5YkMwMExqa3NOV3d0TkM0NUxUVk1OUzR5TERVdU9Yb2lMejRLUEhCaGRHZ2dZMnhoYzNNOUluTjBNQ0lnWkQwaVRUQXRNQzQyYURFNGRqRTRTREJXTFRBdU5ub2lMejRLUEM5emRtYytDZyIpOwp9CgogLndpZGdldC1kcm9wZG93biA+IHNlbGVjdDpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6ICM2NEI1RjY7Cn0KCiAud2lkZ2V0LWRyb3Bkb3duID4gc2VsZWN0OmRpc2FibGVkIHsKICAgIG9wYWNpdHk6IDAuNjsKfQoKIC8qIFRvIGRpc2FibGUgdGhlIGRvdHRlZCBib3JkZXIgaW4gRmlyZWZveCBhcm91bmQgc2VsZWN0IGNvbnRyb2xzLgogICBTZWUgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTg4NTMwMDIgKi8KCiAud2lkZ2V0LWRyb3Bkb3duID4gc2VsZWN0Oi1tb3otZm9jdXNyaW5nIHsKICAgIGNvbG9yOiB0cmFuc3BhcmVudDsKICAgIHRleHQtc2hhZG93OiAwIDAgMCAjMDAwOwp9CgogLyogU2VsZWN0IGFuZCBTZWxlY3RNdWx0aXBsZSAqLwoKIC53aWRnZXQtc2VsZWN0IHsKICAgIHdpZHRoOiAzMDBweDsKICAgIGxpbmUtaGVpZ2h0OiAyOHB4OwoKICAgIC8qIEJlY2F1c2UgRmlyZWZveCBkZWZpbmVzIHRoZSBiYXNlbGluZSBvZiBhIHNlbGVjdCBhcyB0aGUgYm90dG9tIG9mIHRoZQogICAgY29udHJvbCwgd2UgYWxpZ24gdGhlIGVudGlyZSBjb250cm9sIHRvIHRoZSB0b3AgYW5kIGFkZCBwYWRkaW5nIHRvIHRoZQogICAgc2VsZWN0IHRvIGdldCBhbiBhcHByb3hpbWF0ZSBmaXJzdCBsaW5lIGJhc2VsaW5lIGFsaWdubWVudC4gKi8KICAgIC13ZWJraXQtYm94LWFsaWduOiBzdGFydDsKICAgICAgICAtbXMtZmxleC1hbGlnbjogc3RhcnQ7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0Owp9CgogLndpZGdldC1zZWxlY3QgPiBzZWxlY3QgewogICAgYm9yZGVyOiAxcHggc29saWQgIzlFOUU5RTsKICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgLjgpOwogICAgZm9udC1zaXplOiAxM3B4OwogICAgLXdlYmtpdC1ib3gtZmxleDogMTsKICAgICAgICAtbXMtZmxleDogMSAxIDE0OHB4OwogICAgICAgICAgICBmbGV4OiAxIDEgMTQ4cHg7CiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7CiAgICBvdmVyZmxvdzogYXV0bzsKICAgIGhlaWdodDogaW5oZXJpdDsKCiAgICAvKiBCZWNhdXNlIEZpcmVmb3ggZGVmaW5lcyB0aGUgYmFzZWxpbmUgb2YgYSBzZWxlY3QgYXMgdGhlIGJvdHRvbSBvZiB0aGUKICAgIGNvbnRyb2wsIHdlIGFsaWduIHRoZSBlbnRpcmUgY29udHJvbCB0byB0aGUgdG9wIGFuZCBhZGQgcGFkZGluZyB0byB0aGUKICAgIHNlbGVjdCB0byBnZXQgYW4gYXBwcm94aW1hdGUgZmlyc3QgbGluZSBiYXNlbGluZSBhbGlnbm1lbnQuICovCiAgICBwYWRkaW5nLXRvcDogNXB4Owp9CgogLndpZGdldC1zZWxlY3QgPiBzZWxlY3Q6Zm9jdXMgewogICAgYm9yZGVyLWNvbG9yOiAjNjRCNUY2Owp9CgogLndpZ2V0LXNlbGVjdCA+IHNlbGVjdCA+IG9wdGlvbiB7CiAgICBwYWRkaW5nLWxlZnQ6IDRweDsKICAgIGxpbmUtaGVpZ2h0OiAyOHB4OwogICAgLyogbGluZS1oZWlnaHQgZG9lc24ndCB3b3JrIG9uIHNvbWUgYnJvd3NlcnMgZm9yIHNlbGVjdCBvcHRpb25zICovCiAgICBwYWRkaW5nLXRvcDogY2FsYygyOHB4IC0gdmFyKC0tanAtd2lkZ2V0cy1mb250LXNpemUpIC8gMik7CiAgICBwYWRkaW5nLWJvdHRvbTogY2FsYygyOHB4IC0gdmFyKC0tanAtd2lkZ2V0cy1mb250LXNpemUpIC8gMik7Cn0KCiAvKiBUb2dnbGUgQnV0dG9ucyBTdHlsaW5nICovCgogLndpZGdldC10b2dnbGUtYnV0dG9ucyB7CiAgICBsaW5lLWhlaWdodDogMjhweDsKfQoKIC53aWRnZXQtdG9nZ2xlLWJ1dHRvbnMgLndpZGdldC10b2dnbGUtYnV0dG9uIHsKICAgIG1hcmdpbi1sZWZ0OiAycHg7CiAgICBtYXJnaW4tcmlnaHQ6IDJweDsKfQoKIC53aWRnZXQtdG9nZ2xlLWJ1dHRvbnMgLmp1cHl0ZXItYnV0dG9uOmRpc2FibGVkIHsKICAgIG9wYWNpdHk6IDAuNjsKfQoKIC8qIFJhZGlvIEJ1dHRvbnMgU3R5bGluZyAqLwoKIC53aWRnZXQtcmFkaW8gewogICAgd2lkdGg6IDMwMHB4OwogICAgbGluZS1oZWlnaHQ6IDI4cHg7Cn0KCiAud2lkZ2V0LXJhZGlvLWJveCB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC13ZWJraXQtYm94LWFsaWduOiBzdHJldGNoOwogICAgICAgIC1tcy1mbGV4LWFsaWduOiBzdHJldGNoOwogICAgICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAgICAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7CiAgICAgICAgICAgIGZsZXgtZ3JvdzogMTsKICAgIG1hcmdpbi1ib3R0b206IDhweDsKfQoKIC53aWRnZXQtcmFkaW8tYm94IGxhYmVsIHsKICAgIGhlaWdodDogMjBweDsKICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgZm9udC1zaXplOiAxM3B4Owp9CgogLndpZGdldC1yYWRpby1ib3ggaW5wdXQgewogICAgaGVpZ2h0OiAyMHB4OwogICAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgICBtYXJnaW46IDAgOHB4IDAgMXB4OwogICAgZmxvYXQ6IGxlZnQ7Cn0KCiAvKiBDb2xvciBQaWNrZXIgU3R5bGluZyAqLwoKIC53aWRnZXQtY29sb3JwaWNrZXIgewogICAgd2lkdGg6IDMwMHB4OwogICAgaGVpZ2h0OiAyOHB4OwogICAgbGluZS1oZWlnaHQ6IDI4cHg7Cn0KCiAud2lkZ2V0LWNvbG9ycGlja2VyID4gLndpZGdldC1jb2xvcnBpY2tlci1pbnB1dCB7CiAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogICAgICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAtbXMtZmxleC1uZWdhdGl2ZTogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgIG1pbi13aWR0aDogNzJweDsKfQoKIC53aWRnZXQtY29sb3JwaWNrZXIgaW5wdXRbdHlwZT0iY29sb3IiXSB7CiAgICB3aWR0aDogMjhweDsKICAgIGhlaWdodDogMjhweDsKICAgIHBhZGRpbmc6IDAgMnB4OyAvKiBtYWtlIHRoZSBjb2xvciBzcXVhcmUgYWN0dWFsbHkgc3F1YXJlIG9uIENocm9tZSBvbiBPUyBYICovCiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIC44KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICM5RTlFOUU7CiAgICBib3JkZXItbGVmdDogbm9uZTsKICAgIC13ZWJraXQtYm94LWZsZXg6IDA7CiAgICAgICAgLW1zLWZsZXgtcG9zaXRpdmU6IDA7CiAgICAgICAgICAgIGZsZXgtZ3JvdzogMDsKICAgIC1tcy1mbGV4LW5lZ2F0aXZlOiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaDsKICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoOwogICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50Owp9CgogLndpZGdldC1jb2xvcnBpY2tlci5jb25jaXNlIGlucHV0W3R5cGU9ImNvbG9yIl0gewogICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjOUU5RTlFOwp9CgogLndpZGdldC1jb2xvcnBpY2tlciBpbnB1dFt0eXBlPSJjb2xvciJdOmZvY3VzLCAud2lkZ2V0LWNvbG9ycGlja2VyIGlucHV0W3R5cGU9InRleHQiXTpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6ICM2NEI1RjY7Cn0KCiAud2lkZ2V0LWNvbG9ycGlja2VyIGlucHV0W3R5cGU9InRleHQiXSB7CiAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogICAgICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IDI4cHg7CiAgICBsaW5lLWhlaWdodDogMjhweDsKICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgLjgpOwogICAgYm9yZGVyOiAxcHggc29saWQgIzlFOUU5RTsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIHBhZGRpbmc6IDRweCA4cHg7CiAgICBtaW4td2lkdGg6IDA7IC8qIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgZm9yIHRoZSBmbGV4Ym94IHRvIHNocmluayB0aGlzIGlucHV0ICovCiAgICAtbXMtZmxleC1uZWdhdGl2ZTogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoKIC53aWRnZXQtY29sb3JwaWNrZXIgaW5wdXRbdHlwZT0idGV4dCJdOmRpc2FibGVkIHsKICAgIG9wYWNpdHk6IDAuNjsKfQoKIC8qIERhdGUgUGlja2VyIFN0eWxpbmcgKi8KCiAud2lkZ2V0LWRhdGVwaWNrZXIgewogICAgd2lkdGg6IDMwMHB4OwogICAgaGVpZ2h0OiAyOHB4OwogICAgbGluZS1oZWlnaHQ6IDI4cHg7Cn0KCiAud2lkZ2V0LWRhdGVwaWNrZXIgaW5wdXRbdHlwZT0iZGF0ZSJdIHsKICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAgICAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7CiAgICAgICAgICAgIGZsZXgtZ3JvdzogMTsKICAgIC1tcy1mbGV4LW5lZ2F0aXZlOiAxOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgbWluLXdpZHRoOiAwOyAvKiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIGZvciB0aGUgZmxleGJveCB0byBzaHJpbmsgdGhpcyBpbnB1dCAqLwogICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiAyOHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgIzlFOUU5RTsKICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgLjgpOwogICAgZm9udC1zaXplOiAxM3B4OwogICAgcGFkZGluZzogNHB4IDhweDsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoKIC53aWRnZXQtZGF0ZXBpY2tlciBpbnB1dFt0eXBlPSJkYXRlIl06Zm9jdXMgewogICAgYm9yZGVyLWNvbG9yOiAjNjRCNUY2Owp9CgogLndpZGdldC1kYXRlcGlja2VyIGlucHV0W3R5cGU9ImRhdGUiXTppbnZhbGlkIHsKICAgIGJvcmRlci1jb2xvcjogI0ZGOTgwMDsKfQoKIC53aWRnZXQtZGF0ZXBpY2tlciBpbnB1dFt0eXBlPSJkYXRlIl06ZGlzYWJsZWQgewogICAgb3BhY2l0eTogMC42Owp9CgogLyogUGxheSBXaWRnZXQgKi8KCiAud2lkZ2V0LXBsYXkgewogICAgd2lkdGg6IDE0OHB4OwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtd2Via2l0LWJveC1hbGlnbjogc3RyZXRjaDsKICAgICAgICAtbXMtZmxleC1hbGlnbjogc3RyZXRjaDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7Cn0KCiAud2lkZ2V0LXBsYXkgLmp1cHl0ZXItYnV0dG9uIHsKICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAgICAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7CiAgICAgICAgICAgIGZsZXgtZ3JvdzogMTsKICAgIGhlaWdodDogYXV0bzsKfQoKIC53aWRnZXQtcGxheSAuanVweXRlci1idXR0b246ZGlzYWJsZWQgewogICAgb3BhY2l0eTogMC42Owp9CgogLyogVGFiIFdpZGdldCAqLwoKIC5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKfQoKIC5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiA+IC5wLVRhYkJhciB7CiAgICAvKiBOZWNlc3Nhcnkgc28gdGhhdCBhIHRhYiBjYW4gYmUgc2hpZnRlZCBkb3duIHRvIG92ZXJsYXkgdGhlIGJvcmRlciBvZiB0aGUgYm94IGJlbG93LiAqLwogICAgb3ZlcmZsb3cteDogdmlzaWJsZTsKICAgIG92ZXJmbG93LXk6IHZpc2libGU7Cn0KCiAuanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIgPiAucC1UYWJCYXItY29udGVudCB7CiAgICAvKiBNYWtlIHN1cmUgdGhhdCB0aGUgdGFiIGdyb3dzIGZyb20gYm90dG9tIHVwICovCiAgICAtd2Via2l0LWJveC1hbGlnbjogZW5kOwogICAgICAgIC1tcy1mbGV4LWFsaWduOiBlbmQ7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKICAgIG1pbi13aWR0aDogMDsKICAgIG1pbi1oZWlnaHQ6IDA7Cn0KCiAuanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAud2lkZ2V0LXRhYi1jb250ZW50cyB7CiAgICB3aWR0aDogMTAwJTsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIG1hcmdpbjogMDsKICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgLjgpOwogICAgYm9yZGVyOiAxcHggc29saWQgIzlFOUU5RTsKICAgIHBhZGRpbmc6IDE1cHg7CiAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogICAgICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICBvdmVyZmxvdzogYXV0bzsKfQoKIC5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiA+IC5wLVRhYkJhciB7CiAgICBmb250OiAxM3B4IEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgICBtaW4taGVpZ2h0OiAyNXB4Owp9CgogLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyIC5wLVRhYkJhci10YWIgewogICAgLXdlYmtpdC1ib3gtZmxleDogMDsKICAgICAgICAtbXMtZmxleDogMCAxIDE0NHB4OwogICAgICAgICAgICBmbGV4OiAwIDEgMTQ0cHg7CiAgICBtaW4td2lkdGg6IDM1cHg7CiAgICBtaW4taGVpZ2h0OiAyNXB4OwogICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICBtYXJnaW4tbGVmdDogLTFweDsKICAgIHBhZGRpbmc6IDBweCAxMHB4OwogICAgYmFja2dyb3VuZDogI0VFRUVFRTsKICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIC41KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICM5RTlFOUU7CiAgICBib3JkZXItYm90dG9tOiBub25lOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgogLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyIC5wLVRhYkJhci10YWIucC1tb2QtY3VycmVudCB7CiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAxLjApOwogICAgLyogV2Ugd2FudCB0aGUgYmFja2dyb3VuZCB0byBtYXRjaCB0aGUgdGFiIGNvbnRlbnQgYmFja2dyb3VuZCAqLwogICAgYmFja2dyb3VuZDogd2hpdGU7CiAgICBtaW4taGVpZ2h0OiAyNnB4OwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMXB4KTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDFweCk7CiAgICBvdmVyZmxvdzogdmlzaWJsZTsKfQoKIC5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiA+IC5wLVRhYkJhciAucC1UYWJCYXItdGFiLnAtbW9kLWN1cnJlbnQ6YmVmb3JlIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogLTFweDsKICAgIGxlZnQ6IC0xcHg7CiAgICBjb250ZW50OiAnJzsKICAgIGhlaWdodDogMnB4OwogICAgd2lkdGg6IGNhbGMoMTAwJSArIDJweCk7CiAgICBiYWNrZ3JvdW5kOiAjMjE5NkYzOwp9CgogLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyIC5wLVRhYkJhci10YWI6Zmlyc3QtY2hpbGQgewogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCiAuanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIgLnAtVGFiQmFyLXRhYjpob3Zlcjpub3QoLnAtbW9kLWN1cnJlbnQpIHsKICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgLjgpOwp9CgogLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyIC5wLW1vZC1jbG9zYWJsZSA+IC5wLVRhYkJhci10YWJDbG9zZUljb24gewogICAgbWFyZ2luLWxlZnQ6IDRweDsKfQoKIC5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiA+IC5wLVRhYkJhciAucC1tb2QtY2xvc2FibGUgPiAucC1UYWJCYXItdGFiQ2xvc2VJY29uOmJlZm9yZSB7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7CiAgICBjb250ZW50OiAnXGYwMGQnOyAvKiBjbG9zZSAqLwp9CgogLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyIC5wLVRhYkJhci10YWJJY29uLAouanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIgLnAtVGFiQmFyLXRhYkxhYmVsLAouanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIgLnAtVGFiQmFyLXRhYkNsb3NlSWNvbiB7CiAgICBsaW5lLWhlaWdodDogMjRweDsKfQoKIC8qIEFjY29yZGlvbiBXaWRnZXQgKi8KCiAucC1Db2xsYXBzZSB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC13ZWJraXQtYm94LWFsaWduOiBzdHJldGNoOwogICAgICAgIC1tcy1mbGV4LWFsaWduOiBzdHJldGNoOwogICAgICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDsKfQoKIC5wLUNvbGxhcHNlLWhlYWRlciB7CiAgICBwYWRkaW5nOiA0cHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAuNSk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUVFRUVFOwogICAgYm9yZGVyOiAxcHggc29saWQgIzlFOUU5RTsKICAgIHBhZGRpbmc6IDEwcHggMTVweDsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgogLnAtQ29sbGFwc2UtaGVhZGVyOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgLjgpOwp9CgogLnAtQ29sbGFwc2Utb3BlbiA+IC5wLUNvbGxhcHNlLWhlYWRlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDEuMCk7CiAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICBib3JkZXItYm90dG9tOiBub25lOwp9CgogLnAtQ29sbGFwc2UgLnAtQ29sbGFwc2UtaGVhZGVyOjpiZWZvcmUgewogICAgY29udGVudDogJ1xmMGRhXDAwQTAnOyAgLyogY2FyZXQtcmlnaHQsIG5vbi1icmVha2luZyBzcGFjZSAqLwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgZm9udDogbm9ybWFsIG5vcm1hbCBub3JtYWwgMTRweC8xIEZvbnRBd2Vzb21lOwogICAgZm9udC1zaXplOiBpbmhlcml0OwogICAgdGV4dC1yZW5kZXJpbmc6IGF1dG87CiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7Cn0KCiAucC1Db2xsYXBzZS1vcGVuID4gLnAtQ29sbGFwc2UtaGVhZGVyOjpiZWZvcmUgewogICAgY29udGVudDogJ1xmMGQ3XDAwQTAnOyAvKiBjYXJldC1kb3duLCBub24tYnJlYWtpbmcgc3BhY2UgKi8KfQoKIC5wLUNvbGxhcHNlLWNvbnRlbnRzIHsKICAgIHBhZGRpbmc6IDE1cHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIC44KTsKICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgIzlFOUU5RTsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICM5RTlFOUU7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzlFOUU5RTsKICAgIG92ZXJmbG93OiBhdXRvOwp9CgogLnAtQWNjb3JkaW9uIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0cmV0Y2g7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IHN0cmV0Y2g7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoOwp9CgogLnAtQWNjb3JkaW9uIC5wLUNvbGxhcHNlIHsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCiAucC1BY2NvcmRpb24gLnAtQ29sbGFwc2UgKyAucC1Db2xsYXBzZSB7CiAgICBtYXJnaW4tdG9wOiA0cHg7Cn0KCiAvKiBIVE1MIHdpZGdldCAqLwoKIC53aWRnZXQtaHRtbCwgLndpZGdldC1odG1sbWF0aCB7CiAgICBmb250LXNpemU6IDEzcHg7Cn0KCiAud2lkZ2V0LWh0bWwgPiAud2lkZ2V0LWh0bWwtY29udGVudCwgLndpZGdldC1odG1sbWF0aCA+IC53aWRnZXQtaHRtbC1jb250ZW50IHsKICAgIC8qIEZpbGwgb3V0IHRoZSBhcmVhIGluIHRoZSBIVE1MIHdpZGdldCAqLwogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaDsKICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoOwogICAgLXdlYmtpdC1ib3gtZmxleDogMTsKICAgICAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTsKICAgICAgICAgICAgZmxleC1ncm93OiAxOwogICAgLW1zLWZsZXgtbmVnYXRpdmU6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAvKiBNYWtlcyBzdXJlIHRoZSBiYXNlbGluZSBpcyBzdGlsbCBhbGlnbmVkIHdpdGggb3RoZXIgZWxlbWVudHMgKi8KICAgIGxpbmUtaGVpZ2h0OiAyOHB4OwogICAgLyogTWFrZSBpdCBwb3NzaWJsZSB0byBoYXZlIGFic29sdXRlbHktcG9zaXRpb25lZCBlbGVtZW50cyBpbiB0aGUgaHRtbCAqLwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgovKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUwyNXZaR1ZmYlc5a2RXeGxjeTlBYW5Wd2VYUmxjaTEzYVdSblpYUnpMMk52Ym5SeWIyeHpMMk56Y3k5M2FXUm5aWFJ6TG1OemN5SXNJaTR1TDI1dlpHVmZiVzlrZFd4bGN5OUFhblZ3ZVhSbGNpMTNhV1JuWlhSekwyTnZiblJ5YjJ4ekwyTnpjeTlzWVdKMllYSnBZV0pzWlhNdVkzTnpJaXdpTGk0dmJtOWtaVjl0YjJSMWJHVnpMMEJxZFhCNWRHVnlMWGRwWkdkbGRITXZZMjl1ZEhKdmJITXZZM056TDIxaGRHVnlhV0ZzWTI5c2IzSnpMbU56Y3lJc0lpNHVMMjV2WkdWZmJXOWtkV3hsY3k5QWFuVndlWFJsY2kxM2FXUm5aWFJ6TDJOdmJuUnliMnh6TDJOemN5OTNhV1JuWlhSekxXSmhjMlV1WTNOeklpd2lMaTR2Ym05a1pWOXRiMlIxYkdWekwwQnFkWEI1ZEdWeUxYZHBaR2RsZEhNdlkyOXVkSEp2YkhNdlkzTnpMM0JvYjNOd2FHOXlMbU56Y3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFUczdSMEZGUnpzN1EwRkZSanM3YTBOQlJXbERPenREUTA1c1F6czdPeXRGUVVjclJUczdRMEZGTDBVN096czdSVUZKUlRzN1EwTlVSanM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3UjBFMlFrYzdPME5FYUVKSU96czdPenM3T3pzN096czdPenM3T3pzN08wVkJiVUpGT3p0RFFVZEdPenRIUVVWSE96dERRVU5HTEhsRVFVRjVSRHM3UTBGRE1VUXNlVVZCUVhsRk96dERRVVY2UlRzN1IwRkZSenM3UTBGUFNEczdSVUZGUlRzN08wdEJSMGM3TzBWQlVVZzdPenM3U1VGSlJTeERRVWwzUWl4dlFrRkJiMElzUTBGSGFFSXNNRU5CUVRCRE96dEZRVWQ0UlRzN1NVRkZSVHM3UlVGUFJqczdTMEZGUnpzN1JVRlBTRHM3TzBsQlIwVXNRMEZYZDBJc2IwSkJRVzlDT3pzN1JVRlZPVU03T3pzN1NVRkpSVHM3UlVGUFJpeHJRa0ZCYTBJN08wVkJXV3hDTEN0RFFVRXJRenM3UlVGelFpOURMREJDUVVFd1FqdEZRV0V4UWpzMFJVRkRNRVU3UlVGRk1VVTdkMFZCUTNORk96dEZRVWQwUlN3NFFrRkJPRUk3TzBWQlN6bENMRFpDUVVFMlFqczdSVUZKTjBJc05rSkJRVFpDTzBOQlVUbENPenREUlhwTlJEczdSMEZGUnpzN1EwRkZTRHM3T3p0SFFVbEhPenREUTFKSU96czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdSVUU0UWtVN08wTkJSVVk3T3p0SFFVZEhPenREUVVWSU8wVkJRMFVzY1VKQlFXTTdSVUZCWkN4eFFrRkJZenRGUVVGa0xHTkJRV003UlVGRFpDd3dRa0ZCTUVJN1JVRkRNVUlzZFVKQlFYVkNPMFZCUTNaQ0xITkNRVUZ6UWp0RlFVTjBRaXhyUWtGQmEwSTdRMEZEYmtJN08wTkJSMFE3UlVGRFJTd3JRa0ZCYjBJN1JVRkJjRUlzT0VKQlFXOUNPMDFCUVhCQ0xIZENRVUZ2UWp0VlFVRndRaXh2UWtGQmIwSTdRMEZEY2tJN08wTkJSMFE3UlVGRFJTdzJRa0ZCZFVJN1JVRkJka0lzT0VKQlFYVkNPMDFCUVhaQ0xESkNRVUYxUWp0VlFVRjJRaXgxUWtGQmRVSTdRMEZEZUVJN08wTkJSMFE3UlVGRFJTeFZRVUZWTzBWQlExWXNWMEZCVnp0RlFVTllMSEZDUVVGak8wVkJRV1FzY1VKQlFXTTdSVUZCWkN4alFVRmpPMFZCUTJRc2IwSkJRV1U3VFVGQlppeHRRa0ZCWlR0VlFVRm1MR1ZCUVdVN1JVRkRaaXh6UWtGQmMwSTdRMEZEZGtJN08wTkJSMFE3UlVGRFJTd3JRa0ZCYjBJN1JVRkJjRUlzT0VKQlFXOUNPMDFCUVhCQ0xIZENRVUZ2UWp0VlFVRndRaXh2UWtGQmIwSTdRMEZEY2tJN08wTkJSMFE3UlVGRFJTdzJRa0ZCZFVJN1JVRkJka0lzT0VKQlFYVkNPMDFCUVhaQ0xESkNRVUYxUWp0VlFVRjJRaXgxUWtGQmRVSTdRMEZEZUVJN08wTkJSMFE3UlVGRFJTeHhRa0ZCWXp0RlFVRmtMSEZDUVVGak8wVkJRV1FzWTBGQll6dEZRVU5rTEN0Q1FVRnZRanRGUVVGd1FpdzRRa0ZCYjBJN1RVRkJjRUlzZDBKQlFXOUNPMVZCUVhCQ0xHOUNRVUZ2UWp0RlFVTndRaXdyUWtGQmRVSTdWVUZCZGtJc2RVSkJRWFZDTzBWQlEzWkNMR2xDUVVGcFFqdERRVU5zUWpzN1EwRkhSRHM3UlVGRlJTeHZRa0ZCWlR0TlFVRm1MRzFDUVVGbE8xVkJRV1lzWlVGQlpUdERRVU5vUWpzN1EwRkhSRHRGUVVORkxHOUNRVUZsTzAxQlFXWXNiVUpCUVdVN1ZVRkJaaXhsUVVGbE8wVkJRMllzYVVKQlFXbENPMFZCUTJwQ0xHOUNRVUZ2UWp0RFFVTnlRanM3UTBGSFJEdEZRVU5GTEhsQ1FVRjVRanREUVVNeFFqczdRMEZIUkR0RlFVTkZMRzFDUVVGdFFqdERRVU53UWpzN1EwRkhSRHRGUVVORkxGRkJRVkU3UlVGRFVpeHZRMEZCTkVJN1JVRkJOVUlzTkVKQlFUUkNPME5CUXpkQ096dERRVWRFTzBWQlEwVXNUMEZCVHp0RlFVTlFMRzFEUVVFeVFqdEZRVUV6UWl3eVFrRkJNa0k3UTBGRE5VSTdPME5CUjBRN1JVRkRSU3g1UWtGQmFVSTdSVUZCYWtJc2FVSkJRV2xDTzBOQlEyeENPenREUVVWRUxHOUNRVUZ2UWpzN1EwUTVSM0JDTEZGQlZYRkRMRzlEUVVGdlF6czdTVUV5UW5KRkxDdENRVUVyUWp0RFFVbHNRenM3UTBGRlJEdEpRVU5KTEZsQlFXbERPMGxCUTJwRExDdENRVUYxUWp0WlFVRjJRaXgxUWtGQmRVSTdTVUZEZGtJc1lVRkJLMEk3U1VGREwwSXNhMEpCUVd0Q08wTkJRM0pDT3p0RFFVVkVPMGxCUTBrc2EwSkJRVFpETzBsQlF6ZERMR0ZCUVhkRE8wTkJRek5ET3p0RFFVVkVPMGxCUTBrc1pVRkJaVHRKUVVObUxHZENRVUZuUWp0RFFVTnVRanM3UTBGRlJDeHRRa0ZCYlVJN08wTkJSVzVDTzBsQlEwa3NkMEpCUVhkQ08wbEJRM2hDTEN0Q1FVRjFRanRaUVVGMlFpeDFRa0ZCZFVJN1NVRkRka0lzY1VKQlFXTTdTVUZCWkN4eFFrRkJZenRKUVVGa0xHTkJRV003U1VGRFpDd3JRa0ZCYjBJN1NVRkJjRUlzT0VKQlFXOUNPMUZCUVhCQ0xIZENRVUZ2UWp0WlFVRndRaXh2UWtGQmIwSTdTVUZEY0VJc05FSkJRWE5DTzFGQlFYUkNMSGxDUVVGelFqdFpRVUYwUWl4elFrRkJjMEk3UTBGRGVrSTdPME5CUlVRN1NVRkRTU3h6UWtGQmMwSTdTVUZEZEVJc0swSkJRWFZDTzFsQlFYWkNMSFZDUVVGMVFqdEpRVU4yUWl4eFFrRkJZenRKUVVGa0xIRkNRVUZqTzBsQlFXUXNZMEZCWXp0SlFVTmtMRFpDUVVGMVFqdEpRVUYyUWl3NFFrRkJkVUk3VVVGQmRrSXNNa0pCUVhWQ08xbEJRWFpDTEhWQ1FVRjFRanRKUVVOMlFpd3dRa0ZCYjBJN1VVRkJjRUlzZFVKQlFXOUNPMWxCUVhCQ0xHOUNRVUZ2UWp0RFFVTjJRanM3UTBGRlJEdEpRVU5KTEN0Q1FVRjFRanRaUVVGMlFpeDFRa0ZCZFVJN1NVRkRka0lzY1VKQlFXTTdTVUZCWkN4eFFrRkJZenRKUVVGa0xHTkJRV003U1VGRFpDeFZRVUZWTzBsQlExWXNaVUZCWlR0RFFVTnNRanM3UTBGRlJEdEpRVU5KTEN0Q1FVRjFRanRaUVVGMlFpeDFRa0ZCZFVJN1NVRkRka0lzWTBGQll6dEpRVU5rTEZWQlFWVTdTVUZEVml4bFFVRmxPME5CUTJ4Q096dERRVVZFTzBsQlEwa3NLMEpCUVc5Q08wbEJRWEJDTERoQ1FVRnZRanRSUVVGd1FpeDNRa0ZCYjBJN1dVRkJjRUlzYjBKQlFXOUNPME5CUTNaQ096dERRVVZFTzBsQlEwa3NOa0pCUVhWQ08wbEJRWFpDTERoQ1FVRjFRanRSUVVGMlFpd3lRa0ZCZFVJN1dVRkJka0lzZFVKQlFYVkNPME5CUXpGQ096dERRVVZFTERSQ1FVRTBRanM3UTBGRk5VSTdTVUZEU1N4dFFrRkJiVUk3U1VGRGJrSXNiMEpCUVc5Q08wbEJRM0JDTEdsQ1FVRnBRanRKUVVOcVFpeHZRa0ZCYjBJN1NVRkRjRUlzYzBKQlFYTkNPMGxCUTNSQ0xHOUNRVUZ2UWp0SlFVTndRaXhwUWtGQmFVSTdTVUZEYWtJc2QwSkJRWGRDTzBsQlEzaENMRzFDUVVGdFFqdEpRVU51UWl4blFrRkJkVU03U1VGRGRrTXNaMEpCUVdkQ096dEpRVVZvUWl4aFFVRjNRenRKUVVONFF5eHJRa0ZCYTBJN1NVRkRiRUlzYTBKQlFUWkRPMGxCUXpkRExIbENRVUZwUWp0WlFVRnFRaXhwUWtGQmFVSTdPMGxCUldwQ0xIbENRVUZuUXp0SlFVTm9ReXd3UWtGQk1FTTdTVUZETVVNc2MwSkJRWE5ETzBsQlEzUkRMR0ZCUVdFN1EwRkRhRUk3TzBOQlJVUTdTVUZEU1N4clFrRkJPRU03U1VGRE9VTXNjVUpCUVhGQ08wTkJRM2hDT3p0RFFVVkVPMGxCUTBrc2FVSkJRV2xDTEVOQlFVTXNjMEpCUVhOQ08wTkJRek5ET3p0RFFVVkVPMGxCUTBrc1lVRkJORU03UTBGREwwTTdPME5CUlVRN1NVRkRTU3huUWtGQlowSTdRMEZEYmtJN08wTkJSVVE3U1VGRFNTeDNRa0ZCZDBJN1NVRkRlRUk3T3l0RFFVVXJSVHRaUVVZdlJUczdLME5CUlN0Rk8wTkJRMnhHT3p0RFFVVkVPMGxCUTBrc2QwSkJRWGRDTzBsQlEzaENPenRwUkVGRk5rVTdXVUZHTjBVN08ybEVRVVUyUlR0SlFVTTNSU3g1UWtGQlowTTdTVUZEYUVNc01FSkJRVEJETzBOQlF6ZERPenREUVVWRU8wbEJRMGtzTWtKQlFUaEVPME5CUTJwRk96dERRVVZFTERoQ1FVRTRRanM3UTBGRk9VSTdTVUZEU1N4blEwRkJkME03U1VGRGVFTXNNRUpCUVhsRE8wTkJRelZET3p0RFFVVkVPMGxCUTBrc09FSkJRWGRETzBsQlEzaERMREJDUVVGNVF6dERRVU0xUXpzN1EwRkZSRHRKUVVOSkxEaENRVUYzUXp0SlFVTjRReXd3UWtGQmVVTTdRMEZETlVNN08wTkJSVVFzT0VKQlFUaENPenREUVVVNVFqdEpRVU5KTEdkRFFVRjNRenRKUVVONFF5d3dRa0ZCTWtNN1EwRkRPVU03TzBOQlJVUTdTVUZEU1N3NFFrRkJkME03U1VGRGVFTXNNRUpCUVRKRE8wVkJRemRET3p0RFFVVkdPMGxCUTBrc09FSkJRWGRETzBsQlEzaERMREJDUVVFeVF6dEZRVU0zUXpzN1EwRkZSQ3d5UWtGQk1rSTdPME5CUlRWQ08wbEJRMGtzWjBOQlFYZERPMGxCUTNoRExEQkNRVUYzUXp0RFFVTXpRenM3UTBGRlJEdEpRVU5KTERoQ1FVRjNRenRKUVVONFF5d3dRa0ZCZDBNN1EwRkRNME03TzBOQlJVUTdTVUZEU1N3NFFrRkJkME03U1VGRGVFTXNNRUpCUVhkRE8wTkJRek5ET3p0RFFVVkVMRGhDUVVFNFFqczdRMEZGT1VJN1NVRkRTU3huUTBGQmQwTTdTVUZEZUVNc01FSkJRWGRETzBOQlF6TkRPenREUVVWRU8wbEJRMGtzT0VKQlFYZERPMGxCUTNoRExEQkNRVUYzUXp0RFFVTXpRenM3UTBGRlJEdEpRVU5KTERoQ1FVRjNRenRKUVVONFF5d3dRa0ZCZDBNN1EwRkRNME03TzBOQlJVUXNOa0pCUVRaQ096dERRVVUzUWp0SlFVTkpMR2REUVVGM1F6dEpRVU40UXl3d1FrRkJlVU03UTBGRE5VTTdPME5CUlVRN1NVRkRTU3c0UWtGQmQwTTdTVUZEZUVNc01FSkJRWGxETzBOQlF6VkRPenREUVVWRU8wbEJRMGtzT0VKQlFYZERPMGxCUTNoRExEQkNRVUY1UXp0RFFVTTFRenM3UTBGRlJDeHJRa0ZCYTBJN08wTkJSV3hDTzBsQlEwa3NZVUZCTkVNN1EwRkRMME03TzBOQlJVUXNNRUpCUVRCQ096dERRVVV4UWl4clEwRkJhME03TzBOQlEyeERPMGxCUTBrc2FVSkJRWFZDTzBsQlFYWkNMSFZDUVVGMVFqdERRVU14UWpzN1EwRkZSRHRKUVVOSkxHbENRVUZwUWp0SlFVTnFRaXhoUVVGeFF6dEpRVU55UXl4blFrRkJkVU03U1VGRGRrTXNhVUpCUVdsQ08wbEJRMnBDTEhkQ1FVRjNRanRKUVVONFFpeHZRa0ZCYjBJN1NVRkRjRUlzYTBKQlFUWkRPME5CUTJoRU96dERRVVZFTzBsQlEwa3NWMEZCVnp0SlFVTllMR0ZCUVhGRE8wbEJRM0pETEdkQ1FVRjFRenRKUVVOMlF5eHBRa0ZCYVVJN1NVRkRha0lzZDBKQlFYZENPMGxCUTNoQ0xHOUNRVUZ2UWp0SlFVTndRaXhyUWtGQk5rTTdRMEZEYUVRN08wTkJSVVE3U1VGRFNTdzJRa0ZCTmtJN1NVRkROMElzWVVGQmNVTTdTVUZEY2tNc2EwSkJRV3RDTzBsQlEyeENMR3RDUVVFd1JEdEpRVU14UkN4WlFVRTBRenRKUVVNMVF5eHhRa0ZCWlR0UlFVRm1MR1ZCUVdVN1EwRkRiRUk3TzBOQlJVUTdTVUZEU1N3eVFrRkJNa0k3U1VGRE0wSXNZVUZCY1VNN1NVRkRja01zYlVKQlFXMUNPMGxCUTI1Q0xHdENRVUUyUXp0RFFVTm9SRHM3UTBGRlJDdzBRa0ZCTkVJN08wTkJSVFZDTzBsQlEwa3NZVUZCZFVNN1NVRkRka01zWjBKQlFYVkRPMGxCUTNaRExHRkJRWGRETzBsQlEzaERMR3RDUVVFMlF6dEpRVU0zUXl4cFFrRkJhVUk3U1VGRGFrSXNiMEpCUVc5Q08wbEJRM0JDTEcxQ1FVRnRRanREUVVOMFFqczdRMEZGUkR0SlFVTkpMSGxDUVVGNVFqczdTVUZGZWtJN096czdUMEZKUnp0SlFVTklPenQxUkVGRmIwUTdPMGxCVFhCRU96c3JRMEZGTkVNN1EwRkRMME03TzBOQlJVUTdTVUZEU1N4M1FrRkJkMEk3U1VGRGVFSXNiVUpCUVcxQ08wbEJRMjVDTEdsQ1FVRm5SRHRKUVVOb1JDeG5Ra0ZCSzBNN1NVRkRMME1zYVVKQlFUWkRPME5CUTJoRU96dERRVVZFTzBsQlEwa3NjMEpCUVhOQ08wbEJRM1JDTEdkQ1FVRTBRenRKUVVNMVF5d3lRa0ZCTWtJN1NVRkRNMElzWlVGQlpUdERRVU5zUWpzN1EwRkZSQ3cyUWtGQk5rSTdPME5CUlRkQ08wbEJRMGtzWVVGQmMwTTdTVUZEZEVNc1lVRkJkME03U1VGRGVFTXNhMEpCUVRaRE8wTkJRMmhFT3p0RFFVVkVPMGxCUTBrc2QwSkJRV2RGTzBsQlEyaEZMR3RDUVVFMlF6dEpRVU0zUXl4cFFrRkJhVUk3U1VGRGFrSXNiMEpCUVdFN1VVRkJZaXh4UWtGQllUdFpRVUZpTEdGQlFXRTdTVUZEWWl4eFFrRkJaVHRSUVVGbUxHVkJRV1U3U1VGRFppdzBRa0ZCYlVJN1VVRkJia0lzYlVKQlFXMUNPME5CUTNSQ096dERRVVZFTERCQ1FVRXdRanM3UTBGRk1VSTdTVUZEU1N4aFFVRjNRenRKUVVONFF5eHJRa0ZCTmtNN1NVRkROME1zWVVGQk5FTTdTVUZETlVNc1owSkJRWFZETzBOQlF6RkRPenREUVVWRU8wbEJRMGtzYTBKQlFUWkRPMGxCUXpkRExHdENRVUU0UXp0SlFVTTVReXhwUWtGQk5rTTdPMGxCUlRkRExEQktRVUV3U2p0SlFVTXhTaXh6UWtGQmMwSTdTVUZEZEVJc09FTkJRVGhETzBsQlF6bERMRzFDUVVGdFFqdEpRVU51UWl4eFFrRkJjVUk3U1VGRGNrSXNiME5CUVc5RE8wbEJRM0JETEcxRFFVRnRRenREUVVOMFF6czdRMEZGUkR0SlFVTkpMR2xDUVVGcFFqdEpRVU5xUWl4aFFVRmhPME5CUTJoQ096dERRVVZFTzBsQlEwa3NhVUpCUVdsQ08wbEJRMnBDTEZkQlFWYzdRMEZEWkRzN1EwRkZSRHRKUVVOSkxHTkJRV003UTBGRGFrSTdPME5CUlVRc2NVTkJRWEZET3p0RFFVVnlRenRKUVVOSkxHRkJRWE5ETzBOQlEzcERPenREUVVWRU8wbEJRMGtzWVVGQmQwTTdTVUZEZUVNc2EwSkJRVFpETzBOQlEyaEVPenREUVVWRU8wbEJRMGtzWVVGQk5FTTdRMEZETDBNN08wTkJSVVE3U1VGRFNTd3JRa0ZCZFVJN1dVRkJka0lzZFVKQlFYVkNPMGxCUTNaQ0xEQkNRVUYzUmp0SlFVTjRSaXgzUWtGQk1rUTdTVUZETTBRc2VVSkJRWEZETzBsQlEzSkRMR2RDUVVGMVF6dEpRVU4yUXl4cFFrRkJjMFk3U1VGRGRFWXNiMEpCUVdFN1VVRkJZaXh4UWtGQllUdFpRVUZpTEdGQlFXRTdTVUZEWWl4aFFVRmhMRU5CUVVNc2FVVkJRV2xGTzBsQlF5OUZMSEZDUVVGbE8xRkJRV1lzWlVGQlpUdEpRVU5tTEhsQ1FVRjVRanREUVVNMVFqczdRMEZGUkR0SlFVTkpMR2RDUVVGblFqdEpRVU5vUWl4bFFVRmxPME5CUTJ4Q096dERRVVZFTzBsQlEwa3NjMEpCUVhsRU8wTkJRelZFT3p0RFFVVkVMRzFDUVVGdFFqczdRMEZGYmtJN1NVRkRTU3hyUWtGQmEwSTdTVUZEYkVJc01FSkJRVFJGTzBsQlF6VkZMRzlDUVVGdlF6dEpRVU53UXl3clFrRkJkVUk3V1VGQmRrSXNkVUpCUVhWQ08wbEJRM1pDTEcxQ1FVRnRRanRKUVVOdVFpeHRRa0ZCYlVJN1EwRkRkRUk3TzBOQlJVUTdTVUZEU1N4dFFrRkJiVUk3U1VGRGJrSXNlVUpCUVhsQ0xFTkJRVU1zYjBSQlFXOUVPMGxCUXpsRkxHMUNRVUZ0UWp0SlFVTnVRaXgzUWtGQmJVVTdTVUZEYmtVc01FSkJRV2xITzBsQlEycEhMQ3RDUVVGMVFqdFpRVUYyUWl4MVFrRkJkVUk3U1VGRGRrSXNWMEZCVnp0SlFVTllMSFZDUVVGMVFpeERRVUZETEhkQ1FVRjNRanREUVVOdVJEczdRMEZGUkN4M1FrRkJkMEk3TzBOQlEzaENPMGxCUTBrc01FSkJRU3RFTzBsQlF5OUVMREJDUVVGcFJ6dERRVU53UnpzN1EwRkZSRHRKUVVOSkxEQkNRVUVyUkR0SlFVTXZSQ3h6UWtGQk1rUTdTVUZETTBRc1YwRkJWenRKUVVOWUxEaENRVUZ6UWp0WlFVRjBRaXh6UWtGQmMwSTdRMEZEZWtJN08wTkJSVVE3U1VGRFNTeHBSVUZCYVVVN1NVRkRha1VzYlVKQlFXMUNPMGxCUTI1Q0xHOUNRVUY1UkR0SlFVTjZSQ3hYUVVGWE8wTkJRMlE3TzBOQlJVUXNPRUpCUVRoQ096dERRVVU1UWp0SlFVTkpMRmxCUVRSRE8wbEJRelZETEdGQlFUWkRPMGxCUXpkRExHbENRVUZuU2p0SlFVTm9TaXhyUWtGQmNVYzdTVUZEY2tjc2JVSkJRVzFDTzBsQlEyNUNMRTlCUVU4N1EwRkRWanM3UTBGRlJEdEpRVU5KTEZsQlFUUkRPMGxCUXpWRExHRkJRVFpETzBsQlF6ZERMRzlDUVVGMVJ6dEpRVU4yUnl4clFrRkJhVW83U1VGRGFrb3NiVUpCUVcxQ08wbEJRMjVDTEZGQlFWRTdRMEZEV0RzN1EwRkZSRHRKUVVOSkxGbEJRVFpFTzBsQlF6ZEVMR2xDUVVGNVNqdERRVU0xU2pzN1EwRkZSRHRKUVVOSkxGZEJRVFJFTzBsQlF6VkVMR3RDUVVFd1NqdERRVU0zU2pzN1EwRkZSQ3gxUWtGQmRVSTdPME5CUlhaQ08wbEJRMGtzWVVGQmMwTTdTVUZEZEVNc1lVRkJkME03U1VGRGVFTXNhMEpCUVRaRE96dEpRVVUzUXpzN2IwUkJSV2RFTzBsQlEyaEVMREJDUVVGdlFqdFJRVUZ3UWl4MVFrRkJiMEk3V1VGQmNFSXNiMEpCUVc5Q08wTkJRM1pDT3p0RFFVVkVPMGxCUTBrc2EwSkJRV3RDTzBOQlEzSkNPenREUVVWRU8wbEJRMGtzWVVGQmQwTTdTVUZEZUVNc2FVSkJRWGRITzBsQlEzaEhMR3RDUVVGNVJ6dEpRVU42Unl4dlFrRkJLME03VVVGQkwwTXNiMEpCUVN0RE8xbEJRUzlETEdkQ1FVRXJRenREUVVOc1JEczdRMEZGUkR0SlFVTkpMR2REUVVGblF6dEpRVU5vUXl4WlFVRnBSRHRKUVVOcVJDeHBRa0ZCYlVjN1NVRkRia2NzV1VGQldUdERRVU5tT3p0RFFVVkVMSEZDUVVGeFFqczdRMEZGY2tJN1NVRkRTU3hoUVVGM1F6dEpRVU40UXl4clFrRkJOa003UTBGRGFFUTdPME5CUlVRN1NVRkRTU3h4UWtGQmNVSTdTVUZEY2tJc1kwRkJNRU03U1VGRE1VTXNXVUZCTWtNN1EwRkRPVU03TzBOQlJVUTdTVUZEU1N4dlFrRkJLME03VVVGQkwwTXNiMEpCUVN0RE8xbEJRUzlETEdkQ1FVRXJRenRKUVVNdlF5eHJRa0ZCYTBJN1NVRkRiRUlzYlVKQlFXMUNPMGxCUTI1Q0xHMUNRVUV3Unp0SlFVTXhSeXhuUWtGQmRVYzdTVUZEZGtjc2NVSkJRV003U1VGQlpDeHhRa0ZCWXp0SlFVRmtMR05CUVdNN1NVRkRaQ3cyUWtGQmRVSTdTVUZCZGtJc09FSkJRWFZDTzFGQlFYWkNMREpDUVVGMVFqdFpRVUYyUWl4MVFrRkJkVUk3UTBGRE1VSTdPME5CUlVRN1NVRkRTU3huUTBGQlowTTdTVUZEYUVNc1YwRkJaMFE3U1VGRGFFUXNiMEpCUVdFN1VVRkJZaXh4UWtGQllUdFpRVUZpTEdGQlFXRTdTVUZEWWl4clFrRkJhMEk3U1VGRGJFSXNiVUpCUVcxQ08wTkJRM1JDT3p0RFFVVkVMRFpDUVVFMlFqczdRMEZGTjBJN1NVRkRTU3g1UWtGQmVVSTdTVUZKZWtJc2FVSkJRV2xDTzBOQlEzQkNPenREUVVWRU8wbEJRMGtzWVVGQmQwTTdRMEZETTBNN08wTkJSVVE3U1VGRFNTd3dRa0ZCZVVNN1EwRkROVU03TzBOQlJVUTdTVUZEU1N3d1FrRkJNa003UTBGRE9VTTdPME5CUlVRN1NVRkRTU3d3UWtGQmQwTTdRMEZETTBNN08wTkJSVVE3U1VGRFNTd3dRa0ZCZDBNN1EwRkRNME03TzBOQlJVUTdTVUZEU1N3d1FrRkJlVU03UTBGRE5VTTdPME5CUlVRN1NVRkRTU3d3UWtGQk1FTTdTVUZETVVNc1lVRkJZVHRKUVVOaUxIbENRVUZwUWp0WlFVRnFRaXhwUWtGQmFVSTdRMEZEY0VJN08wTkJSVVFzZVVKQlFYbENPenREUVVWNlFqdEpRVU5KTEd0Q1FVRnJRanRKUVVOc1FpeGhRVUYzUXp0SlFVTjRReXhyUWtGQk5rTTdTVUZETjBNc1lVRkJjME03U1VGRGRFTXNNRUpCUVc5Q08xRkJRWEJDTEhWQ1FVRnZRanRaUVVGd1FpeHZRa0ZCYjBJN08wTkJSWFpDT3p0RFFVVkVPMGxCUTBrc2IwSkJRV0U3VVVGQllpeHhRa0ZCWVR0WlFVRmlMR0ZCUVdFN1NVRkRZaXhuUWtGQk5FTTdTVUZETlVNc2JVSkJRU3RETzBsQlF5OURMRFpDUVVGdlFqdFJRVUZ3UWl4dlFrRkJiMEk3U1VGRGNFSXNPRUpCUVRoQ08wbEJRemxDTEdGQlFXZENPMGxCUVdoQ0xHZENRVUZuUWp0RFFVTnVRanM3UTBGRlJDeDFRa0ZCZFVJN08wTkJSWFpDTzBsQlEwa3NZMEZCTUVNN1NVRkRNVU1zV1VGQk1rTTdRMEZET1VNN08wTkJSVVE3U1VGRFNTeHZRa0ZCWVR0UlFVRmlMSEZDUVVGaE8xbEJRV0lzWVVGQllUdEpRVU5pTEZsQlFUUkRPMGxCUXpWRExHdENRVUZyUWp0SlFVTnNRaXh0UWtGQmJVSTdTVUZEYmtJc2FVSkJRV2xDTzBOQlEzQkNPenREUVVWRUxESkNRVUV5UWpzN1EwRkZNMEk3U1VGRFNTeGhRVUYzUXp0SlFVTjRReXhoUVVGelF6dEpRVU4wUXl4clFrRkJOa003UTBGRGFFUTdPME5CUlVRN1NVRkRTU3h2UWtGQmIwSTdTVUZEY0VJc01FSkJRWGRHTzBsQlEzaEdMR2xDUVVGcFFqdEpRVU5xUWl4blFrRkJaMEk3U1VGRGFFSXNiMEpCUVN0RE8xRkJRUzlETEc5Q1FVRXJRenRaUVVFdlF5eG5Ra0ZCSzBNN1NVRkRMME1zWVVGQllTeERRVUZETEdsRlFVRnBSVHRKUVVNdlJTd3JRa0ZCZFVJN1dVRkJka0lzZFVKQlFYVkNPMGxCUTNaQ0xIbENRVUY1UWp0SlFVTjZRaXg1UWtGQmFVSTdXVUZCYWtJc2FVSkJRV2xDTzBsQlEycENMSGRDUVVFeVJEdEpRVU16UkN4NVFrRkJjVU03U1VGRGNrTXNaMEpCUVhWRE8wbEJRM1pETEc5Q1FVRnZRanRKUVVOd1FpeHJRa0ZCZVVRN1EwRkROVVFzYVVKQlFXbENPME5CUTJwQ0xIbENRVUY1UWp0RFFVTjZRaXh6UWtGQmMwSTdTVUZEYmtJc05rSkJRVFpDTzBOQlEyaERMSE5DUVVGelFqdERRVU4wUWl4clEwRkJhME03U1VGREwwSXNhM1ZDUVVGdFJEdERRVU4wUkRzN1EwRkRSRHRKUVVOSkxITkNRVUY1UkR0RFFVTTFSRHM3UTBGRlJEdEpRVU5KTEdGQlFUUkRPME5CUXk5RE96dERRVVZFT3paRFFVTTJRenM3UTBGRE4wTTdTVUZEU1N4dFFrRkJiVUk3U1VGRGJrSXNkMEpCUVhkQ08wTkJRek5DT3p0RFFVVkVMQ3RDUVVFclFqczdRMEZGTDBJN1NVRkRTU3hoUVVGelF6dEpRVU4wUXl4clFrRkJOa003TzBsQlJUZERPenRyUlVGRk9FUTdTVUZET1VRc2VVSkJRWGRDTzFGQlFYaENMSE5DUVVGM1FqdFpRVUY0UWl4M1FrRkJkMEk3UTBGRE0wSTdPME5CUlVRN1NVRkRTU3d3UWtGQmQwWTdTVUZEZUVZc2QwSkJRVEpFTzBsQlF6TkVMSGxDUVVGeFF6dEpRVU55UXl4blFrRkJkVU03U1VGRGRrTXNiMEpCUVN0RE8xRkJRUzlETEc5Q1FVRXJRenRaUVVFdlF5eG5Ra0ZCSzBNN1NVRkRMME1zZVVKQlFYbENPMGxCUTNwQ0xHVkJRV1U3U1VGRFppeG5Ra0ZCWjBJN08wbEJSV2hDT3p0clJVRkZPRVE3U1VGRE9VUXNhVUpCUVdsQ08wTkJRM0JDT3p0RFFVVkVPMGxCUTBrc2MwSkJRWGxFTzBOQlF6VkVPenREUVVWRU8wbEJRMGtzYTBKQlFUaERPMGxCUXpsRExHdENRVUUyUXp0SlFVTTNReXhyUlVGQmEwVTdTVUZEYkVVc01FUkJRV2xHTzBsQlEycEdMRFpFUVVGdlJqdERRVU4yUmpzN1EwRkpSQ3cwUWtGQk5FSTdPME5CUlRWQ08wbEJRMGtzYTBKQlFUWkRPME5CUTJoRU96dERRVVZFTzBsQlEwa3NhVUpCUVhORE8wbEJRM1JETEd0Q1FVRjFRenREUVVNeFF6czdRMEZGUkR0SlFVTkpMR0ZCUVRSRE8wTkJReTlET3p0RFFVVkVMREpDUVVFeVFqczdRMEZGTTBJN1NVRkRTU3hoUVVGelF6dEpRVU4wUXl4clFrRkJOa003UTBGRGFFUTdPME5CUlVRN1NVRkRTU3h4UWtGQll6dEpRVUZrTEhGQ1FVRmpPMGxCUVdRc1kwRkJZenRKUVVOa0xEWkNRVUYxUWp0SlFVRjJRaXc0UWtGQmRVSTdVVUZCZGtJc01rSkJRWFZDTzFsQlFYWkNMSFZDUVVGMVFqdEpRVU4yUWl3eVFrRkJjVUk3VVVGQmNrSXNkMEpCUVhGQ08xbEJRWEpDTEhGQ1FVRnhRanRKUVVOeVFpd3JRa0ZCZFVJN1dVRkJka0lzZFVKQlFYVkNPMGxCUTNaQ0xHOUNRVUZoTzFGQlFXSXNjVUpCUVdFN1dVRkJZaXhoUVVGaE8wbEJRMklzYlVKQlFUaEVPME5CUTJwRk96dERRVVZFTzBsQlEwa3NZVUZCTkVNN1NVRkROVU1zYTBKQlFXbEVPMGxCUTJwRUxHZENRVUYxUXp0RFFVTXhRenM3UTBGRlJEdEpRVU5KTEdGQlFUUkRPMGxCUXpWRExHdENRVUZwUkR0SlFVTnFSQ3h2UWtGQk5FUTdTVUZETlVRc1dVRkJXVHREUVVObU96dERRVVZFTERCQ1FVRXdRanM3UTBGRk1VSTdTVUZEU1N4aFFVRnpRenRKUVVOMFF5eGhRVUYzUXp0SlFVTjRReXhyUWtGQk5rTTdRMEZEYUVRN08wTkJSVVE3U1VGRFNTeHZRa0ZCWVR0UlFVRmlMSEZDUVVGaE8xbEJRV0lzWVVGQllUdEpRVU5pTEhGQ1FVRmxPMUZCUVdZc1pVRkJaVHRKUVVObUxHZENRVUVyUXp0RFFVTnNSRHM3UTBGRlJEdEpRVU5KTEZsQlFYVkRPMGxCUTNaRExHRkJRWGRETzBsQlEzaERMR1ZCUVdVc1EwRkJReXcyUkVGQk5rUTdTVUZETjBVc2EwSkJRWEZFTzBsQlEzSkVMSGxDUVVGeFF6dEpRVU55UXl3d1FrRkJkMFk3U1VGRGVFWXNhMEpCUVd0Q08wbEJRMnhDTEc5Q1FVRmhPMUZCUVdJc2NVSkJRV0U3V1VGQllpeGhRVUZoTzBsQlEySXNjVUpCUVdVN1VVRkJaaXhsUVVGbE8wbEJRMllzSzBKQlFYVkNPMWxCUVhaQ0xIVkNRVUYxUWp0SlFVTjJRaXcyUWtGQmIwSTdVVUZCY0VJc2IwSkJRVzlDTzBsQlEzQkNMSGxDUVVGNVFqdERRVU0xUWpzN1EwRkZSRHRKUVVOSkxDdENRVUUyUmp0RFFVTm9SenM3UTBGRlJEdEpRVU5KTEhOQ1FVRjVSRHREUVVNMVJEczdRMEZGUkR0SlFVTkpMRzlDUVVGaE8xRkJRV0lzY1VKQlFXRTdXVUZCWWl4aFFVRmhPMGxCUTJJc2VVSkJRWGxDTzBsQlEzcENMR0ZCUVhkRE8wbEJRM2hETEd0Q1FVRTJRenRKUVVNM1F5eHJRa0ZCY1VRN1NVRkRja1FzZVVKQlFYRkRPMGxCUTNKRExEQkNRVUYzUmp0SlFVTjRSaXhuUWtGQmRVTTdTVUZEZGtNc2FVSkJRWE5HTzBsQlEzUkdMR0ZCUVdFc1EwRkJReXhwUlVGQmFVVTdTVUZETDBVc2NVSkJRV1U3VVVGQlppeGxRVUZsTzBsQlEyWXNLMEpCUVhWQ08xbEJRWFpDTEhWQ1FVRjFRanREUVVNeFFqczdRMEZGUkR0SlFVTkpMR0ZCUVRSRE8wTkJReTlET3p0RFFVVkVMSGxDUVVGNVFqczdRMEZGZWtJN1NVRkRTU3hoUVVGelF6dEpRVU4wUXl4aFFVRjNRenRKUVVONFF5eHJRa0ZCTmtNN1EwRkRhRVE3TzBOQlJVUTdTVUZEU1N4dlFrRkJZVHRSUVVGaUxIRkNRVUZoTzFsQlFXSXNZVUZCWVR0SlFVTmlMSEZDUVVGbE8xRkJRV1lzWlVGQlpUdEpRVU5tTEdGQlFXRXNRMEZCUXl4cFJVRkJhVVU3U1VGREwwVXNlVUpCUVhsQ08wbEJRM3BDTEdGQlFYZERPMGxCUTNoRExEQkNRVUYzUmp0SlFVTjRSaXgzUWtGQk1rUTdTVUZETTBRc2VVSkJRWEZETzBsQlEzSkRMR2RDUVVGMVF6dEpRVU4yUXl4cFFrRkJjMFk3U1VGRGRFWXNLMEpCUVhWQ08xbEJRWFpDTEhWQ1FVRjFRanREUVVNeFFqczdRMEZGUkR0SlFVTkpMSE5DUVVGNVJEdERRVU0xUkRzN1EwRkZSRHRKUVVOSkxITkNRVUZ2UXp0RFFVTjJRenM3UTBGRlJEdEpRVU5KTEdGQlFUUkRPME5CUXk5RE96dERRVVZFTEdsQ1FVRnBRanM3UTBGRmFrSTdTVUZEU1N4aFFVRTBRenRKUVVNMVF5eHhRa0ZCWXp0SlFVRmtMSEZDUVVGak8wbEJRV1FzWTBGQll6dEpRVU5rTERKQ1FVRnhRanRSUVVGeVFpeDNRa0ZCY1VJN1dVRkJja0lzY1VKQlFYRkNPME5CUTNoQ096dERRVVZFTzBsQlEwa3NiMEpCUVdFN1VVRkJZaXh4UWtGQllUdFpRVUZpTEdGQlFXRTdTVUZEWWl4aFFVRmhPME5CUTJoQ096dERRVVZFTzBsQlEwa3NZVUZCTkVNN1EwRkRMME03TzBOQlJVUXNaMEpCUVdkQ096dERRVVZvUWp0SlFVTkpMSEZDUVVGak8wbEJRV1FzY1VKQlFXTTdTVUZCWkN4alFVRmpPMGxCUTJRc05rSkJRWFZDTzBsQlFYWkNMRGhDUVVGMVFqdFJRVUYyUWl3eVFrRkJkVUk3V1VGQmRrSXNkVUpCUVhWQ08wTkJRekZDT3p0RFFVVkVPMGxCUTBrc2VVWkJRWGxHTzBsQlEzcEdMRzlDUVVGdlFqdEpRVU53UWl4dlFrRkJiMEk3UTBGRGRrSTdPME5CUlVRN1NVRkRTU3hwUkVGQmFVUTdTVUZEYWtRc2RVSkJRWE5DTzFGQlFYUkNMRzlDUVVGelFqdFpRVUYwUWl4elFrRkJjMEk3U1VGRGRFSXNZVUZCWVR0SlFVTmlMR05CUVdNN1EwRkRha0k3TzBOQlJVUTdTVUZEU1N4WlFVRlpPMGxCUTFvc0swSkJRWFZDTzFsQlFYWkNMSFZDUVVGMVFqdEpRVU4yUWl4VlFVRlZPMGxCUTFZc2EwSkJRVzlETzBsQlEzQkRMSGxDUVVGblF6dEpRVU5vUXl3d1FrRkJOa1E3U1VGRE4wUXNZMEZCTmtNN1NVRkROME1zYjBKQlFXRTdVVUZCWWl4eFFrRkJZVHRaUVVGaUxHRkJRV0U3U1VGRFlpeGxRVUZsTzBOQlEyeENPenREUVVWRU8wbEJRMGtzZDBOQlFTdEVPMGxCUXk5RUxHbENRVUZ0Ump0RFFVTjBSanM3UTBGRlJEdEpRVU5KTEc5Q1FVRnBSRHRSUVVGcVJDeHZRa0ZCYVVRN1dVRkJha1FzWjBKQlFXbEVPMGxCUTJwRUxHZENRVUZuUWp0SlFVTm9RaXhwUWtGQmJVWTdTVUZEYmtZc2EwSkJRWEZFTzBsQlEzSkVMR3RDUVVFclF6dEpRVU12UXl4clFrRkJhMEk3U1VGRGJFSXNiMEpCUVc5RE8wbEJRM0JETEhsQ1FVRm5RenRKUVVOb1F5d3dRa0ZCTmtRN1NVRkROMFFzYjBKQlFXOUNPMGxCUTNCQ0xHMUNRVUZ0UWp0RFFVTjBRanM3UTBGRlJEdEpRVU5KTERCQ1FVRm5RenRKUVVOb1F5eG5SVUZCWjBVN1NVRkRhRVVzYTBKQlFXOURPMGxCUTNCRExHbENRVUYxUmp0SlFVTjJSaXh0UTBGQk9FTTdXVUZCT1VNc01rSkJRVGhETzBsQlF6bERMR3RDUVVGclFqdERRVU55UWpzN1EwRkZSRHRKUVVOSkxHMUNRVUZ0UWp0SlFVTnVRaXhWUVVGMVF6dEpRVU4yUXl4WFFVRjNRenRKUVVONFF5eFpRVUZaTzBsQlExb3NXVUZCYjBRN1NVRkRjRVFzZDBKQlFTdERPMGxCUXk5RExHOUNRVUZ0UXp0RFFVTjBRenM3UTBGRlJEdEpRVU5KTEdWQlFXVTdRMEZEYkVJN08wTkJSVVE3U1VGRFNTeHJRa0ZCYjBNN1NVRkRjRU1zZVVKQlFXZERPME5CUTI1RE96dERRVVZFTzBsQlEwa3NhVUpCUVdsQ08wTkJRM0JDT3p0RFFVVkVPMGxCUTBrc2VVSkJRWGxDTzBsQlEzcENMR2xDUVVGcFFpeERRVUZETEZkQlFWYzdRMEZEYUVNN08wTkJSVVE3T3p0SlFVZEpMR3RDUVVGeFJEdERRVU40UkRzN1EwRkZSQ3h6UWtGQmMwSTdPME5CUlhSQ08wbEJRMGtzY1VKQlFXTTdTVUZCWkN4eFFrRkJZenRKUVVGa0xHTkJRV003U1VGRFpDdzJRa0ZCZFVJN1NVRkJka0lzT0VKQlFYVkNPMUZCUVhaQ0xESkNRVUYxUWp0WlFVRjJRaXgxUWtGQmRVSTdTVUZEZGtJc01rSkJRWEZDTzFGQlFYSkNMSGRDUVVGeFFqdFpRVUZ5UWl4eFFrRkJjVUk3UTBGRGVFSTdPME5CUlVRN1NVRkRTU3hoUVVGNVF6dEpRVU42UXl4blFrRkJaMEk3U1VGRGFFSXNlVUpCUVdkRE8wbEJRMmhETERCQ1FVRXdRenRKUVVNeFF5d3dRa0ZCY1VVN1NVRkRja1VzYlVKQlFTdEdPMGxCUXk5R0xHdENRVUZyUWp0RFFVTnlRanM3UTBGRlJEdEpRVU5KTEhkQ1FVRXdRenRKUVVNeFF5eDVRa0ZCWjBNN1EwRkRia003TzBOQlJVUTdTVUZEU1N4M1FrRkJNRU03U1VGRE1VTXNNRUpCUVdkRE8wbEJRMmhETEdkQ1FVRm5RanRKUVVOb1FpeHZRa0ZCYjBJN1EwRkRka0k3TzBOQlJVUTdTVUZEU1N4elFrRkJjMElzUlVGQlJTeHhRMEZCY1VNN1NVRkROMFFzYzBKQlFYTkNPMGxCUTNSQ0xEaERRVUU0UXp0SlFVTTVReXh0UWtGQmJVSTdTVUZEYmtJc2NVSkJRWEZDTzBsQlEzSkNMRzlEUVVGdlF6dEpRVU53UXl4dFEwRkJiVU03UTBGRGRFTTdPME5CUlVRN1NVRkRTU3h6UWtGQmMwSXNRMEZCUXl4dlEwRkJiME03UTBGRE9VUTdPME5CUlVRN1NVRkRTU3hqUVVFMlF6dEpRVU0zUXl4M1FrRkJNRU03U1VGRE1VTXNlVUpCUVdkRE8wbEJRMmhETEN0Q1FVRXdSVHRKUVVNeFJTeG5RMEZCTWtVN1NVRkRNMFVzYVVOQlFUUkZPMGxCUXpWRkxHVkJRV1U3UTBGRGJFSTdPME5CUlVRN1NVRkRTU3h4UWtGQll6dEpRVUZrTEhGQ1FVRmpPMGxCUVdRc1kwRkJZenRKUVVOa0xEWkNRVUYxUWp0SlFVRjJRaXc0UWtGQmRVSTdVVUZCZGtJc01rSkJRWFZDTzFsQlFYWkNMSFZDUVVGMVFqdEpRVU4yUWl3eVFrRkJjVUk3VVVGQmNrSXNkMEpCUVhGQ08xbEJRWEpDTEhGQ1FVRnhRanREUVVONFFqczdRMEZGUkR0SlFVTkpMR2xDUVVGcFFqdERRVU53UWpzN1EwRkZSRHRKUVVOSkxHZENRVUZuUWp0RFFVTnVRanM3UTBGSlJDeHBRa0ZCYVVJN08wTkJSV3BDTzBsQlEwa3NaMEpCUVhWRE8wTkJRekZET3p0RFFVVkVPMGxCUTBrc01FTkJRVEJETzBsQlF6RkRMRFpDUVVGdlFqdFJRVUZ3UWl4dlFrRkJiMEk3U1VGRGNFSXNiMEpCUVdFN1VVRkJZaXh4UWtGQllUdFpRVUZpTEdGQlFXRTdTVUZEWWl4eFFrRkJaVHRSUVVGbUxHVkJRV1U3U1VGRFppeHJSVUZCYTBVN1NVRkRiRVVzYTBKQlFUWkRPMGxCUXpkRExIbEZRVUY1UlR0SlFVTjZSU3h0UWtGQmJVSTdRMEZEZEVJaUxDSm1hV3hsSWpvaVkyOXVkSEp2YkhNdVkzTnpJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvZ1EyOXdlWEpwWjJoMElDaGpLU0JLZFhCNWRHVnlJRVJsZG1Wc2IzQnRaVzUwSUZSbFlXMHVYRzRnS2lCRWFYTjBjbWxpZFhSbFpDQjFibVJsY2lCMGFHVWdkR1Z5YlhNZ2IyWWdkR2hsSUUxdlpHbG1hV1ZrSUVKVFJDQk1hV05sYm5ObExseHVJQ292WEc1Y2JpQXZLaUJYWlNCcGJYQnZjblFnWVd4c0lHOW1JSFJvWlhObElIUnZaMlYwYUdWeUlHbHVJR0VnYzJsdVoyeGxJR056Y3lCbWFXeGxJR0psWTJGMWMyVWdkR2hsSUZkbFluQmhZMnRjYm14dllXUmxjaUJ6WldWeklHOXViSGtnYjI1bElHWnBiR1VnWVhRZ1lTQjBhVzFsTGlCVWFHbHpJR0ZzYkc5M2N5QndiM04wWTNOeklIUnZJSE5sWlNCMGFHVWdkbUZ5YVdGaWJHVmNibVJsWm1sdWFYUnBiMjV6SUhkb1pXNGdkR2hsZVNCaGNtVWdkWE5sWkM0Z0tpOWNibHh1UUdsdGNHOXlkQ0JjSWk0dmJHRmlkbUZ5YVdGaWJHVnpMbU56YzF3aU8xeHVRR2x0Y0c5eWRDQmNJaTR2ZDJsa1oyVjBjeTFpWVhObExtTnpjMXdpTzF4dUlpd2lMeW90TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExWeHVmQ0JEYjNCNWNtbG5hSFFnS0dNcElFcDFjSGwwWlhJZ1JHVjJaV3h2Y0cxbGJuUWdWR1ZoYlM1Y2Jud2dSR2x6ZEhKcFluVjBaV1FnZFc1a1pYSWdkR2hsSUhSbGNtMXpJRzltSUhSb1pTQk5iMlJwWm1sbFpDQkNVMFFnVEdsalpXNXpaUzVjYm53dExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRLaTljYmx4dUx5cGNibFJvYVhNZ1ptbHNaU0JwY3lCamIzQnBaV1FnWm5KdmJTQjBhR1VnU25Wd2VYUmxja3hoWWlCd2NtOXFaV04wSUhSdklHUmxabWx1WlNCa1pXWmhkV3gwSUhOMGVXeHBibWNnWm05eVhHNTNhR1Z1SUhSb1pTQjNhV1JuWlhRZ2MzUjViR2x1WnlCcGN5QmpiMjF3YVd4bFpDQmtiM2R1SUhSdklHVnNhVzFwYm1GMFpTQkRVMU1nZG1GeWFXRmliR1Z6TGlCWFpTQnRZV3RsSUc5dVpWeHVZMmhoYm1kbElDMGdkMlVnWTI5dGJXVnVkQ0J2ZFhRZ2RHaGxJR1p2Ym5RZ2FXMXdiM0owSUdKbGJHOTNMbHh1S2k5Y2JseHVRR2x0Y0c5eWRDQmNJaTR2YldGMFpYSnBZV3hqYjJ4dmNuTXVZM056WENJN1hHNWNiaThxWEc1VWFHVWdabTlzYkc5M2FXNW5JRU5UVXlCMllYSnBZV0pzWlhNZ1pHVm1hVzVsSUhSb1pTQnRZV2x1TENCd2RXSnNhV01nUVZCSklHWnZjaUJ6ZEhsc2FXNW5JRXAxY0hsMFpYSk1ZV0l1WEc1VWFHVnpaU0IyWVhKcFlXSnNaWE1nYzJodmRXeGtJR0psSUhWelpXUWdZbmtnWVd4c0lIQnNkV2RwYm5NZ2QyaGxjbVYyWlhJZ2NHOXpjMmxpYkdVdUlFbHVJRzkwYUdWeVhHNTNiM0prY3l3Z2NHeDFaMmx1Y3lCemFHOTFiR1FnYm05MElHUmxabWx1WlNCamRYTjBiMjBnWTI5c2IzSnpMQ0J6YVhwbGN5d2daWFJqSUhWdWJHVnpjeUJoWW5OdmJIVjBaV3g1WEc1dVpXTmxjM05oY25rdUlGUm9hWE1nWlc1aFlteGxjeUIxYzJWeWN5QjBieUJqYUdGdVoyVWdkR2hsSUhacGMzVmhiQ0IwYUdWdFpTQnZaaUJLZFhCNWRHVnlUR0ZpWEc1aWVTQmphR0Z1WjJsdVp5QjBhR1Z6WlNCMllYSnBZV0pzWlhNdVhHNWNiazFoYm5rZ2RtRnlhV0ZpYkdWeklHRndjR1ZoY2lCcGJpQmhiaUJ2Y21SbGNtVmtJSE5sY1hWbGJtTmxJQ2d3TERFc01pd3pLUzRnVkdobGMyVWdjMlZ4ZFdWdVkyVnpYRzVoY21VZ1pHVnphV2R1WldRZ2RHOGdkMjl5YXlCM1pXeHNJSFJ2WjJWMGFHVnlMQ0J6YnlCbWIzSWdaWGhoYlhCc1pTd2dZQzB0YW5BdFltOXlaR1Z5TFdOdmJHOXlNV0FnYzJodmRXeGtYRzVpWlNCMWMyVmtJSGRwZEdnZ1lDMHRhbkF0YkdGNWIzVjBMV052Ykc5eU1XQXVJRlJvWlNCdWRXMWlaWEp6SUdoaGRtVWdkR2hsSUdadmJHeHZkMmx1WnlCdFpXRnVhVzVuY3pwY2JseHVLaUF3T2lCemRYQmxjaTF3Y21sdFlYSjVMQ0J5WlhObGNuWmxaQ0JtYjNJZ2MzQmxZMmxoYkNCbGJYQm9ZWE5wYzF4dUtpQXhPaUJ3Y21sdFlYSjVMQ0J0YjNOMElHbHRjRzl5ZEdGdWRDQjFibVJsY2lCdWIzSnRZV3dnYzJsMGRXRjBhVzl1YzF4dUtpQXlPaUJ6WldOdmJtUmhjbmtzSUc1bGVIUWdiVzl6ZENCcGJYQnZjblJoYm5RZ2RXNWtaWElnYm05eWJXRnNJSE5wZEhWaGRHbHZibk5jYmlvZ016b2dkR1Z5ZEdsaGNua3NJRzVsZUhRZ2JXOXpkQ0JwYlhCdmNuUmhiblFnZFc1a1pYSWdibTl5YldGc0lITnBkSFZoZEdsdmJuTmNibHh1VkdoeWIzVm5hRzkxZENCS2RYQjVkR1Z5VEdGaUxDQjNaU0JoY21VZ2JXOXpkR3g1SUdadmJHeHZkMmx1WnlCd2NtbHVZMmx3YkdWeklHWnliMjBnUjI5dloyeGxKM05jYmsxaGRHVnlhV0ZzSUVSbGMybG5iaUIzYUdWdUlITmxiR1ZqZEdsdVp5QmpiMnh2Y25NdUlGZGxJR0Z5WlNCdWIzUXNJR2h2ZDJWMlpYSXNJR1p2Ykd4dmQybHVaMXh1WVd4c0lHOW1JRTFFSUdGeklHbDBJR2x6SUc1dmRDQnZjSFJwYldsNlpXUWdabTl5SUdSbGJuTmxMQ0JwYm1admNtMWhkR2x2YmlCeWFXTm9JRlZKY3k1Y2Jpb3ZYRzVjYmx4dUx5cGNiaUFxSUU5d2RHbHZibUZzSUcxdmJtOXpjR0ZqWlNCbWIyNTBJR1p2Y2lCcGJuQjFkQzl2ZFhSd2RYUWdjSEp2YlhCMExseHVJQ292WEc0Z0x5b2dRMjl0YldWdWRHVmtJRzkxZENCcGJpQnBjSGwzYVdSblpYUnpJSE5wYm1ObElIZGxJR1J2YmlkMElHNWxaV1FnYVhRdUlDb3ZYRzR2S2lCQWFXMXdiM0owSUhWeWJDZ25hSFIwY0hNNkx5OW1iMjUwY3k1bmIyOW5iR1ZoY0dsekxtTnZiUzlqYzNNL1ptRnRhV3g1UFZKdlltOTBieXROYjI1dkp5azdJQ292WEc1Y2JpOHFYRzRnS2lCQlpHUmxaQ0JtYjNJZ1kyOXRjR0ZpYVhScGJHbDBlU0IzYVhSb0lHOTFkSEIxZENCaGNtVmhYRzRnS2k5Y2JqcHliMjkwSUh0Y2JpQWdMUzFxY0MxcFkyOXVMWE5sWVhKamFEb2dibTl1WlR0Y2JpQWdMUzFxY0MxMWFTMXpaV3hsWTNRdFkyRnlaWFE2SUc1dmJtVTdYRzU5WEc1Y2JseHVPbkp2YjNRZ2UxeHVYRzRnSUM4cUlFSnZjbVJsY25OY2JseHVJQ0JVYUdVZ1ptOXNiRzkzYVc1bklIWmhjbWxoWW14bGN5d2djM0JsWTJsbWVTQjBhR1VnZG1semRXRnNJSE4wZVd4cGJtY2diMllnWW05eVpHVnljeUJwYmlCS2RYQjVkR1Z5VEdGaUxseHVJQ0FnS2k5Y2JseHVJQ0F0TFdwd0xXSnZjbVJsY2kxM2FXUjBhRG9nTVhCNE8xeHVJQ0F0TFdwd0xXSnZjbVJsY2kxamIyeHZjakE2SUhaaGNpZ3RMVzFrTFdkeVpYa3ROekF3S1R0Y2JpQWdMUzFxY0MxaWIzSmtaWEl0WTI5c2IzSXhPaUIyWVhJb0xTMXRaQzFuY21WNUxUVXdNQ2s3WEc0Z0lDMHRhbkF0WW05eVpHVnlMV052Ykc5eU1qb2dkbUZ5S0MwdGJXUXRaM0psZVMwek1EQXBPMXh1SUNBdExXcHdMV0p2Y21SbGNpMWpiMnh2Y2pNNklIWmhjaWd0TFcxa0xXZHlaWGt0TVRBd0tUdGNibHh1SUNBdktpQlZTU0JHYjI1MGMxeHVYRzRnSUZSb1pTQlZTU0JtYjI1MElFTlRVeUIyWVhKcFlXSnNaWE1nWVhKbElIVnpaV1FnWm05eUlIUm9aU0IwZVhCdlozSmhjR2g1SUdGc2JDQnZaaUIwYUdVZ1NuVndlWFJsY2t4aFlseHVJQ0IxYzJWeUlHbHVkR1Z5Wm1GalpTQmxiR1Z0Wlc1MGN5QjBhR0YwSUdGeVpTQnViM1FnWkdseVpXTjBiSGtnZFhObGNpQm5aVzVsY21GMFpXUWdZMjl1ZEdWdWRDNWNiaUFnS2k5Y2JseHVJQ0F0TFdwd0xYVnBMV1p2Ym5RdGMyTmhiR1V0Wm1GamRHOXlPaUF4TGpJN1hHNGdJQzB0YW5BdGRXa3RabTl1ZEMxemFYcGxNRG9nWTJGc1l5aDJZWElvTFMxcWNDMTFhUzFtYjI1MExYTnBlbVV4S1M5MllYSW9MUzFxY0MxMWFTMW1iMjUwTFhOallXeGxMV1poWTNSdmNpa3BPMXh1SUNBdExXcHdMWFZwTFdadmJuUXRjMmw2WlRFNklERXpjSGc3SUM4cUlFSmhjMlVnWm05dWRDQnphWHBsSUNvdlhHNGdJQzB0YW5BdGRXa3RabTl1ZEMxemFYcGxNam9nWTJGc1l5aDJZWElvTFMxcWNDMTFhUzFtYjI1MExYTnBlbVV4S1NwMllYSW9MUzFxY0MxMWFTMW1iMjUwTFhOallXeGxMV1poWTNSdmNpa3BPMXh1SUNBdExXcHdMWFZwTFdadmJuUXRjMmw2WlRNNklHTmhiR01vZG1GeUtDMHRhbkF0ZFdrdFptOXVkQzF6YVhwbE1pa3FkbUZ5S0MwdGFuQXRkV2t0Wm05dWRDMXpZMkZzWlMxbVlXTjBiM0lwS1R0Y2JpQWdMUzFxY0MxMWFTMXBZMjl1TFdadmJuUXRjMmw2WlRvZ01UUndlRHNnTHlvZ1JXNXpkWEpsY3lCd2VDQndaWEptWldOMElFWnZiblJCZDJWemIyMWxJR2xqYjI1eklDb3ZYRzRnSUMwdGFuQXRkV2t0Wm05dWRDMW1ZVzFwYkhrNklGd2lTR1ZzZG1WMGFXTmhJRTVsZFdWY0lpd2dTR1ZzZG1WMGFXTmhMQ0JCY21saGJDd2djMkZ1Y3kxelpYSnBaanRjYmx4dUlDQXZLaUJWYzJVZ2RHaGxjMlVnWm05dWRDQmpiMnh2Y25NZ1lXZGhhVzV6ZENCMGFHVWdZMjl5Y21WemNHOXVaR2x1WnlCdFlXbHVJR3hoZVc5MWRDQmpiMnh2Y25NdVhHNGdJQ0FnSUVsdUlHRWdiR2xuYUhRZ2RHaGxiV1VzSUhSb1pYTmxJR2R2SUdaeWIyMGdaR0Z5YXlCMGJ5QnNhV2RvZEM1Y2JpQWdLaTljYmx4dUlDQXRMV3B3TFhWcExXWnZiblF0WTI5c2IzSXdPaUJ5WjJKaEtEQXNNQ3d3TERFdU1DazdYRzRnSUMwdGFuQXRkV2t0Wm05dWRDMWpiMnh2Y2pFNklISm5ZbUVvTUN3d0xEQXNNQzQ0S1R0Y2JpQWdMUzFxY0MxMWFTMW1iMjUwTFdOdmJHOXlNam9nY21kaVlTZ3dMREFzTUN3d0xqVXBPMXh1SUNBdExXcHdMWFZwTFdadmJuUXRZMjlzYjNJek9pQnlaMkpoS0RBc01Dd3dMREF1TXlrN1hHNWNiaUFnTHlvZ1ZYTmxJSFJvWlhObElHRm5ZV2x1YzNRZ2RHaGxJR0p5WVc1a0wyRmpZMlZ1ZEM5M1lYSnVMMlZ5Y205eUlHTnZiRzl5Y3k1Y2JpQWdJQ0FnVkdobGMyVWdkMmxzYkNCMGVYQnBZMkZzYkhrZ1oyOGdabkp2YlNCc2FXZG9kQ0IwYnlCa1lYSnJaWElzSUdsdUlHSnZkR2dnWVNCa1lYSnJJR0Z1WkNCc2FXZG9kQ0IwYUdWdFpWeHVJQ0FnS2k5Y2JseHVJQ0F0TFdwd0xXbHVkbVZ5YzJVdGRXa3RabTl1ZEMxamIyeHZjakE2SUhKblltRW9NalUxTERJMU5Td3lOVFVzTVNrN1hHNGdJQzB0YW5BdGFXNTJaWEp6WlMxMWFTMW1iMjUwTFdOdmJHOXlNVG9nY21kaVlTZ3lOVFVzTWpVMUxESTFOU3d4TGpBcE8xeHVJQ0F0TFdwd0xXbHVkbVZ5YzJVdGRXa3RabTl1ZEMxamIyeHZjakk2SUhKblltRW9NalUxTERJMU5Td3lOVFVzTUM0M0tUdGNiaUFnTFMxcWNDMXBiblpsY25ObExYVnBMV1p2Ym5RdFkyOXNiM0l6T2lCeVoySmhLREkxTlN3eU5UVXNNalUxTERBdU5TazdYRzVjYmlBZ0x5b2dRMjl1ZEdWdWRDQkdiMjUwYzF4dVhHNGdJRU52Ym5SbGJuUWdabTl1ZENCMllYSnBZV0pzWlhNZ1lYSmxJSFZ6WldRZ1ptOXlJSFI1Y0c5bmNtRndhSGtnYjJZZ2RYTmxjaUJuWlc1bGNtRjBaV1FnWTI5dWRHVnVkQzVjYmlBZ0tpOWNibHh1SUNBdExXcHdMV052Ym5SbGJuUXRabTl1ZEMxemFYcGxPaUF4TTNCNE8xeHVJQ0F0TFdwd0xXTnZiblJsYm5RdGJHbHVaUzFvWldsbmFIUTZJREV1TlR0Y2JpQWdMUzFxY0MxamIyNTBaVzUwTFdadmJuUXRZMjlzYjNJd09pQmliR0ZqYXp0Y2JpQWdMUzFxY0MxamIyNTBaVzUwTFdadmJuUXRZMjlzYjNJeE9pQmliR0ZqYXp0Y2JpQWdMUzFxY0MxamIyNTBaVzUwTFdadmJuUXRZMjlzYjNJeU9pQjJZWElvTFMxdFpDMW5jbVY1TFRjd01DazdYRzRnSUMwdGFuQXRZMjl1ZEdWdWRDMW1iMjUwTFdOdmJHOXlNem9nZG1GeUtDMHRiV1F0WjNKbGVTMDFNREFwTzF4dVhHNGdJQzB0YW5BdGRXa3RabTl1ZEMxelkyRnNaUzFtWVdOMGIzSTZJREV1TWp0Y2JpQWdMUzFxY0MxMWFTMW1iMjUwTFhOcGVtVXdPaUJqWVd4aktIWmhjaWd0TFdwd0xYVnBMV1p2Ym5RdGMybDZaVEVwTDNaaGNpZ3RMV3B3TFhWcExXWnZiblF0YzJOaGJHVXRabUZqZEc5eUtTazdYRzRnSUMwdGFuQXRkV2t0Wm05dWRDMXphWHBsTVRvZ01UTndlRHNnTHlvZ1FtRnpaU0JtYjI1MElITnBlbVVnS2k5Y2JpQWdMUzFxY0MxMWFTMW1iMjUwTFhOcGVtVXlPaUJqWVd4aktIWmhjaWd0TFdwd0xYVnBMV1p2Ym5RdGMybDZaVEVwS25aaGNpZ3RMV3B3TFhWcExXWnZiblF0YzJOaGJHVXRabUZqZEc5eUtTazdYRzRnSUMwdGFuQXRkV2t0Wm05dWRDMXphWHBsTXpvZ1kyRnNZeWgyWVhJb0xTMXFjQzExYVMxbWIyNTBMWE5wZW1VeUtTcDJZWElvTFMxcWNDMTFhUzFtYjI1MExYTmpZV3hsTFdaaFkzUnZjaWtwTzF4dVhHNGdJQzB0YW5BdFkyOWtaUzFtYjI1MExYTnBlbVU2SURFemNIZzdYRzRnSUMwdGFuQXRZMjlrWlMxc2FXNWxMV2hsYVdkb2REb2dNUzR6TURjN1hHNGdJQzB0YW5BdFkyOWtaUzF3WVdSa2FXNW5PaUExY0hnN1hHNGdJQzB0YW5BdFkyOWtaUzFtYjI1MExXWmhiV2xzZVRvZ2JXOXViM053WVdObE8xeHVYRzVjYmlBZ0x5b2dUR0Y1YjNWMFhHNWNiaUFnVkdobElHWnZiR3h2ZDJsdVp5QmhjbVVnZEdobElHMWhhVzRnYkdGNWIzVjBJR052Ykc5eWN5QjFjMlVnYVc0Z1NuVndlWFJsY2t4aFlpNGdTVzRnWVNCc2FXZG9kRnh1SUNCMGFHVnRaU0IwYUdWelpTQjNiM1ZzWkNCbmJ5Qm1jbTl0SUd4cFoyaDBJSFJ2SUdSaGNtc3VYRzRnSUNvdlhHNWNiaUFnTFMxcWNDMXNZWGx2ZFhRdFkyOXNiM0l3T2lCM2FHbDBaVHRjYmlBZ0xTMXFjQzFzWVhsdmRYUXRZMjlzYjNJeE9pQjNhR2wwWlR0Y2JpQWdMUzFxY0Mxc1lYbHZkWFF0WTI5c2IzSXlPaUIyWVhJb0xTMXRaQzFuY21WNUxUSXdNQ2s3WEc0Z0lDMHRhbkF0YkdGNWIzVjBMV052Ykc5eU16b2dkbUZ5S0MwdGJXUXRaM0psZVMwME1EQXBPMXh1WEc0Z0lDOHFJRUp5WVc1a0wyRmpZMlZ1ZENBcUwxeHVYRzRnSUMwdGFuQXRZbkpoYm1RdFkyOXNiM0l3T2lCMllYSW9MUzF0WkMxaWJIVmxMVGN3TUNrN1hHNGdJQzB0YW5BdFluSmhibVF0WTI5c2IzSXhPaUIyWVhJb0xTMXRaQzFpYkhWbExUVXdNQ2s3WEc0Z0lDMHRhbkF0WW5KaGJtUXRZMjlzYjNJeU9pQjJZWElvTFMxdFpDMWliSFZsTFRNd01DazdYRzRnSUMwdGFuQXRZbkpoYm1RdFkyOXNiM0l6T2lCMllYSW9MUzF0WkMxaWJIVmxMVEV3TUNrN1hHNWNiaUFnTFMxcWNDMWhZMk5sYm5RdFkyOXNiM0l3T2lCMllYSW9MUzF0WkMxbmNtVmxiaTAzTURBcE8xeHVJQ0F0TFdwd0xXRmpZMlZ1ZEMxamIyeHZjakU2SUhaaGNpZ3RMVzFrTFdkeVpXVnVMVFV3TUNrN1hHNGdJQzB0YW5BdFlXTmpaVzUwTFdOdmJHOXlNam9nZG1GeUtDMHRiV1F0WjNKbFpXNHRNekF3S1R0Y2JpQWdMUzFxY0MxaFkyTmxiblF0WTI5c2IzSXpPaUIyWVhJb0xTMXRaQzFuY21WbGJpMHhNREFwTzF4dVhHNGdJQzhxSUZOMFlYUmxJR052Ykc5eWN5QW9kMkZ5Yml3Z1pYSnliM0lzSUhOMVkyTmxjM01zSUdsdVptOHBJQ292WEc1Y2JpQWdMUzFxY0MxM1lYSnVMV052Ykc5eU1Eb2dkbUZ5S0MwdGJXUXRiM0poYm1kbExUY3dNQ2s3WEc0Z0lDMHRhbkF0ZDJGeWJpMWpiMnh2Y2pFNklIWmhjaWd0TFcxa0xXOXlZVzVuWlMwMU1EQXBPMXh1SUNBdExXcHdMWGRoY200dFkyOXNiM0l5T2lCMllYSW9MUzF0WkMxdmNtRnVaMlV0TXpBd0tUdGNiaUFnTFMxcWNDMTNZWEp1TFdOdmJHOXlNem9nZG1GeUtDMHRiV1F0YjNKaGJtZGxMVEV3TUNrN1hHNWNiaUFnTFMxcWNDMWxjbkp2Y2kxamIyeHZjakE2SUhaaGNpZ3RMVzFrTFhKbFpDMDNNREFwTzF4dUlDQXRMV3B3TFdWeWNtOXlMV052Ykc5eU1Ub2dkbUZ5S0MwdGJXUXRjbVZrTFRVd01DazdYRzRnSUMwdGFuQXRaWEp5YjNJdFkyOXNiM0l5T2lCMllYSW9MUzF0WkMxeVpXUXRNekF3S1R0Y2JpQWdMUzFxY0MxbGNuSnZjaTFqYjJ4dmNqTTZJSFpoY2lndExXMWtMWEpsWkMweE1EQXBPMXh1WEc0Z0lDMHRhbkF0YzNWalkyVnpjeTFqYjJ4dmNqQTZJSFpoY2lndExXMWtMV2R5WldWdUxUY3dNQ2s3WEc0Z0lDMHRhbkF0YzNWalkyVnpjeTFqYjJ4dmNqRTZJSFpoY2lndExXMWtMV2R5WldWdUxUVXdNQ2s3WEc0Z0lDMHRhbkF0YzNWalkyVnpjeTFqYjJ4dmNqSTZJSFpoY2lndExXMWtMV2R5WldWdUxUTXdNQ2s3WEc0Z0lDMHRhbkF0YzNWalkyVnpjeTFqYjJ4dmNqTTZJSFpoY2lndExXMWtMV2R5WldWdUxURXdNQ2s3WEc1Y2JpQWdMUzFxY0MxcGJtWnZMV052Ykc5eU1Eb2dkbUZ5S0MwdGJXUXRZM2xoYmkwM01EQXBPMXh1SUNBdExXcHdMV2x1Wm04dFkyOXNiM0l4T2lCMllYSW9MUzF0WkMxamVXRnVMVFV3TUNrN1hHNGdJQzB0YW5BdGFXNW1ieTFqYjJ4dmNqSTZJSFpoY2lndExXMWtMV041WVc0dE16QXdLVHRjYmlBZ0xTMXFjQzFwYm1adkxXTnZiRzl5TXpvZ2RtRnlLQzB0YldRdFkzbGhiaTB4TURBcE8xeHVYRzRnSUM4cUlFTmxiR3dnYzNCbFkybG1hV01nYzNSNWJHVnpJQ292WEc1Y2JpQWdMUzFxY0MxalpXeHNMWEJoWkdScGJtYzZJRFZ3ZUR0Y2JpQWdMUzFxY0MxalpXeHNMV1ZrYVhSdmNpMWlZV05yWjNKdmRXNWtPaUFqWmpkbU4yWTNPMXh1SUNBdExXcHdMV05sYkd3dFpXUnBkRzl5TFdKdmNtUmxjaTFqYjJ4dmNqb2dJMk5tWTJaalpqdGNiaUFnTFMxcWNDMWpaV3hzTFdWa2FYUnZjaTFpWVdOclozSnZkVzVrTFdWa2FYUTZJSFpoY2lndExXcHdMWFZwTFd4aGVXOTFkQzFqYjJ4dmNqRXBPMXh1SUNBdExXcHdMV05sYkd3dFpXUnBkRzl5TFdKdmNtUmxjaTFqYjJ4dmNpMWxaR2wwT2lCMllYSW9MUzFxY0MxaWNtRnVaQzFqYjJ4dmNqRXBPMXh1SUNBdExXcHdMV05sYkd3dGNISnZiWEIwTFhkcFpIUm9PaUF4TURCd2VEdGNiaUFnTFMxcWNDMWpaV3hzTFhCeWIyMXdkQzFtYjI1MExXWmhiV2xzZVRvZ0oxSnZZbTkwYnlCTmIyNXZKeXdnYlc5dWIzTndZV05sTzF4dUlDQXRMV3B3TFdObGJHd3RjSEp2YlhCMExXeGxkSFJsY2kxemNHRmphVzVuT2lBd2NIZzdYRzRnSUMwdGFuQXRZMlZzYkMxd2NtOXRjSFF0YjNCaFkybDBlVG9nTVM0d08xeHVJQ0F0TFdwd0xXTmxiR3d0Y0hKdmJYQjBMVzl3WVdOcGRIa3RibTkwTFdGamRHbDJaVG9nTUM0ME8xeHVJQ0F0TFdwd0xXTmxiR3d0Y0hKdmJYQjBMV1p2Ym5RdFkyOXNiM0l0Ym05MExXRmpkR2wyWlRvZ2RtRnlLQzB0YldRdFozSmxlUzAzTURBcE8xeHVJQ0F2S2lCQklHTjFjM1J2YlNCaWJHVnVaQ0J2WmlCTlJDQm5jbVY1SUdGdVpDQmliSFZsSURZd01GeHVJQ0FnS2lCVFpXVWdhSFIwY0hNNkx5OXRaWGxsY25kbFlpNWpiMjB2WlhKcFl5OTBiMjlzY3k5amIyeHZjaTFpYkdWdVpDOGpOVFEyUlRkQk9qRkZPRGhGTlRvMU9taGxlQ0FxTDF4dUlDQXRMV3B3TFdObGJHd3RhVzV3Y205dGNIUXRabTl1ZEMxamIyeHZjam9nSXpNd04wWkRNVHRjYmlBZ0x5b2dRU0JqZFhOMGIyMGdZbXhsYm1RZ2IyWWdUVVFnWjNKbGVTQmhibVFnYjNKaGJtZGxJRFl3TUZ4dUlDQWdLaUJvZEhSd2N6b3ZMMjFsZVdWeWQyVmlMbU52YlM5bGNtbGpMM1J2YjJ4ekwyTnZiRzl5TFdKc1pXNWtMeU0xTkRaRk4wRTZSalExTVRGRk9qVTZhR1Y0SUNvdlhHNGdJQzB0YW5BdFkyVnNiQzF2ZFhSd2NtOXRjSFF0Wm05dWRDMWpiMnh2Y2pvZ0kwSkdOVUl6UkR0Y2JseHVJQ0F2S2lCT2IzUmxZbTl2YXlCemNHVmphV1pwWXlCemRIbHNaWE1nS2k5Y2JseHVJQ0F0TFdwd0xXNXZkR1ZpYjI5ckxYQmhaR1JwYm1jNklERXdjSGc3WEc0Z0lDMHRhbkF0Ym05MFpXSnZiMnN0YzJOeWIyeHNMWEJoWkdScGJtYzZJREV3TUhCNE8xeHVYRzRnSUM4cUlFTnZibk52YkdVZ2MzQmxZMmxtYVdNZ2MzUjViR1Z6SUNvdlhHNWNiaUFnTFMxcWNDMWpiMjV6YjJ4bExXSmhZMnRuY205MWJtUTZJSFpoY2lndExXMWtMV2R5WlhrdE1UQXdLVHRjYmx4dUlDQXZLaUJVYjI5c1ltRnlJSE53WldOcFptbGpJSE4wZVd4bGN5QXFMMXh1WEc0Z0lDMHRhbkF0ZEc5dmJHSmhjaTFpYjNKa1pYSXRZMjlzYjNJNklIWmhjaWd0TFcxa0xXZHlaWGt0TkRBd0tUdGNiaUFnTFMxcWNDMTBiMjlzWW1GeUxXMXBZM0p2TFdobGFXZG9kRG9nT0hCNE8xeHVJQ0F0TFdwd0xYUnZiMnhpWVhJdFltRmphMmR5YjNWdVpEb2dkbUZ5S0MwdGFuQXRiR0Y1YjNWMExXTnZiRzl5TUNrN1hHNGdJQzB0YW5BdGRHOXZiR0poY2kxaWIzZ3RjMmhoWkc5M09pQXdjSGdnTUhCNElESndlQ0F3Y0hnZ2NtZGlZU2d3TERBc01Dd3dMakkwS1R0Y2JpQWdMUzFxY0MxMGIyOXNZbUZ5TFdobFlXUmxjaTF0WVhKbmFXNDZJRFJ3ZUNBMGNIZ2dNSEI0SURSd2VEdGNiaUFnTFMxcWNDMTBiMjlzWW1GeUxXRmpkR2wyWlMxaVlXTnJaM0p2ZFc1a09pQjJZWElvTFMxdFpDMW5jbVY1TFRNd01DazdYRzU5WEc0aUxDSXZLaXBjYmlBcUlGUm9aU0J0WVhSbGNtbGhiQ0JrWlhOcFoyNGdZMjlzYjNKeklHRnlaU0JoWkdGd2RHVmtJR1p5YjIwZ1oyOXZaMnhsTFcxaGRHVnlhV0ZzTFdOdmJHOXlJSFl4TGpJdU5seHVJQ29nYUhSMGNITTZMeTluYVhSb2RXSXVZMjl0TDJSaGJteGxkbUZ1TDJkdmIyZHNaUzF0WVhSbGNtbGhiQzFqYjJ4dmNseHVJQ29nYUhSMGNITTZMeTluYVhSb2RXSXVZMjl0TDJSaGJteGxkbUZ1TDJkdmIyZHNaUzF0WVhSbGNtbGhiQzFqYjJ4dmNpOWliRzlpTDJZMk4yTmhOV1kwTURJNFlqSm1NV0l6TkRnMk1tWTJOR0l3WTJFMk56TXlNMlk1TVdJd09EZ3ZaR2x6ZEM5d1lXeGxkSFJsTG5aaGNpNWpjM05jYmlBcVhHNGdLaUJVYUdVZ2JHbGpaVzV6WlNCbWIzSWdkR2hsSUcxaGRHVnlhV0ZzSUdSbGMybG5iaUJqYjJ4dmNpQkRVMU1nZG1GeWFXRmliR1Z6SUdseklHRnpJR1p2Ykd4dmQzTWdLSE5sWlZ4dUlDb2dhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMlJoYm14bGRtRnVMMmR2YjJkc1pTMXRZWFJsY21saGJDMWpiMnh2Y2k5aWJHOWlMMlkyTjJOaE5XWTBNREk0WWpKbU1XSXpORGcyTW1ZMk5HSXdZMkUyTnpNeU0yWTVNV0l3T0RndlRFbERSVTVUUlNsY2JpQXFYRzRnS2lCVWFHVWdUVWxVSUV4cFkyVnVjMlVnS0UxSlZDbGNiaUFxWEc0Z0tpQkRiM0I1Y21sbmFIUWdLR01wSURJd01UUWdSR0Z1SUV4bElGWmhibHh1SUNwY2JpQXFJRkJsY20xcGMzTnBiMjRnYVhNZ2FHVnlaV0o1SUdkeVlXNTBaV1FzSUdaeVpXVWdiMllnWTJoaGNtZGxMQ0IwYnlCaGJua2djR1Z5YzI5dUlHOWlkR0ZwYm1sdVp5QmhJR052Y0hsY2JpQXFJRzltSUhSb2FYTWdjMjltZEhkaGNtVWdZVzVrSUdGemMyOWphV0YwWldRZ1pHOWpkVzFsYm5SaGRHbHZiaUJtYVd4bGN5QW9kR2hsSUZ3aVUyOW1kSGRoY21WY0lpa3NJSFJ2SUdSbFlXeGNiaUFxSUdsdUlIUm9aU0JUYjJaMGQyRnlaU0IzYVhSb2IzVjBJSEpsYzNSeWFXTjBhVzl1TENCcGJtTnNkV1JwYm1jZ2QybDBhRzkxZENCc2FXMXBkR0YwYVc5dUlIUm9aU0J5YVdkb2RITmNiaUFxSUhSdklIVnpaU3dnWTI5d2VTd2diVzlrYVdaNUxDQnRaWEpuWlN3Z2NIVmliR2x6YUN3Z1pHbHpkSEpwWW5WMFpTd2djM1ZpYkdsalpXNXpaU3dnWVc1a0wyOXlJSE5sYkd4Y2JpQXFJR052Y0dsbGN5QnZaaUIwYUdVZ1UyOW1kSGRoY21Vc0lHRnVaQ0IwYnlCd1pYSnRhWFFnY0dWeWMyOXVjeUIwYnlCM2FHOXRJSFJvWlNCVGIyWjBkMkZ5WlNCcGMxeHVJQ29nWm5WeWJtbHphR1ZrSUhSdklHUnZJSE52TENCemRXSnFaV04wSUhSdklIUm9aU0JtYjJ4c2IzZHBibWNnWTI5dVpHbDBhVzl1Y3pwY2JpQXFYRzRnS2lCVWFHVWdZV0p2ZG1VZ1kyOXdlWEpwWjJoMElHNXZkR2xqWlNCaGJtUWdkR2hwY3lCd1pYSnRhWE56YVc5dUlHNXZkR2xqWlNCemFHRnNiQ0JpWlNCcGJtTnNkV1JsWkNCcGJseHVJQ29nWVd4c0lHTnZjR2xsY3lCdmNpQnpkV0p6ZEdGdWRHbGhiQ0J3YjNKMGFXOXVjeUJ2WmlCMGFHVWdVMjltZEhkaGNtVXVYRzRnS2x4dUlDb2dWRWhGSUZOUFJsUlhRVkpGSUVsVElGQlNUMVpKUkVWRUlGd2lRVk1nU1ZOY0lpd2dWMGxVU0U5VlZDQlhRVkpTUVU1VVdTQlBSaUJCVGxrZ1MwbE9SQ3dnUlZoUVVrVlRVeUJQVWx4dUlDb2dTVTFRVEVsRlJDd2dTVTVEVEZWRVNVNUhJRUpWVkNCT1QxUWdURWxOU1ZSRlJDQlVUeUJVU0VVZ1YwRlNVa0ZPVkVsRlV5QlBSaUJOUlZKRFNFRk9WRUZDU1V4SlZGa3NYRzRnS2lCR1NWUk9SVk5USUVaUFVpQkJJRkJCVWxSSlExVk1RVklnVUZWU1VFOVRSU0JCVGtRZ1RrOU9TVTVHVWtsT1IwVk5SVTVVTGlCSlRpQk9UeUJGVmtWT1ZDQlRTRUZNVENCVVNFVmNiaUFxSUVGVlZFaFBVbE1nVDFJZ1EwOVFXVkpKUjBoVUlFaFBURVJGVWxNZ1FrVWdURWxCUWt4RklFWlBVaUJCVGxrZ1EweEJTVTBzSUVSQlRVRkhSVk1nVDFJZ1QxUklSVkpjYmlBcUlFeEpRVUpKVEVsVVdTd2dWMGhGVkVoRlVpQkpUaUJCVGlCQlExUkpUMDRnVDBZZ1EwOU9WRkpCUTFRc0lGUlBVbFFnVDFJZ1QxUklSVkpYU1ZORkxDQkJVa2xUU1U1SElFWlNUMDBzWEc0Z0tpQlBWVlFnVDBZZ1QxSWdTVTRnUTA5T1RrVkRWRWxQVGlCWFNWUklJRlJJUlNCVFQwWlVWMEZTUlNCUFVpQlVTRVVnVlZORklFOVNJRTlVU0VWU0lFUkZRVXhKVGtkVElFbE9JRlJJUlZ4dUlDb2dVMDlHVkZkQlVrVXVYRzRnS2k5Y2JqcHliMjkwSUh0Y2JpQWdMUzF0WkMxeVpXUXROVEE2SUNOR1JrVkNSVVU3WEc0Z0lDMHRiV1F0Y21Wa0xURXdNRG9nSTBaR1EwUkVNanRjYmlBZ0xTMXRaQzF5WldRdE1qQXdPaUFqUlVZNVFUbEJPMXh1SUNBdExXMWtMWEpsWkMwek1EQTZJQ05GTlRjek56TTdYRzRnSUMwdGJXUXRjbVZrTFRRd01Eb2dJMFZHTlRNMU1EdGNiaUFnTFMxdFpDMXlaV1F0TlRBd09pQWpSalEwTXpNMk8xeHVJQ0F0TFcxa0xYSmxaQzAyTURBNklDTkZOVE01TXpVN1hHNGdJQzB0YldRdGNtVmtMVGN3TURvZ0kwUXpNa1l5Ump0Y2JpQWdMUzF0WkMxeVpXUXRPREF3T2lBalF6WXlPREk0TzF4dUlDQXRMVzFrTFhKbFpDMDVNREE2SUNOQ056RkRNVU03WEc0Z0lDMHRiV1F0Y21Wa0xVRXhNREE2SUNOR1JqaEJPREE3WEc0Z0lDMHRiV1F0Y21Wa0xVRXlNREE2SUNOR1JqVXlOVEk3WEc0Z0lDMHRiV1F0Y21Wa0xVRTBNREE2SUNOR1JqRTNORFE3WEc0Z0lDMHRiV1F0Y21Wa0xVRTNNREE2SUNORU5UQXdNREE3WEc1Y2JpQWdMUzF0WkMxd2FXNXJMVFV3T2lBalJrTkZORVZETzF4dUlDQXRMVzFrTFhCcGJtc3RNVEF3T2lBalJqaENRa1F3TzF4dUlDQXRMVzFrTFhCcGJtc3RNakF3T2lBalJqUTRSa0l4TzF4dUlDQXRMVzFrTFhCcGJtc3RNekF3T2lBalJqQTJNamt5TzF4dUlDQXRMVzFrTFhCcGJtc3ROREF3T2lBalJVTTBNRGRCTzF4dUlDQXRMVzFrTFhCcGJtc3ROVEF3T2lBalJUa3hSVFl6TzF4dUlDQXRMVzFrTFhCcGJtc3ROakF3T2lBalJEZ3hRall3TzF4dUlDQXRMVzFrTFhCcGJtc3ROekF3T2lBalF6SXhPRFZDTzF4dUlDQXRMVzFrTFhCcGJtc3RPREF3T2lBalFVUXhORFUzTzF4dUlDQXRMVzFrTFhCcGJtc3RPVEF3T2lBak9EZ3dSVFJHTzF4dUlDQXRMVzFrTFhCcGJtc3RRVEV3TURvZ0kwWkdPREJCUWp0Y2JpQWdMUzF0WkMxd2FXNXJMVUV5TURBNklDTkdSalF3T0RFN1hHNGdJQzB0YldRdGNHbHVheTFCTkRBd09pQWpSalV3TURVM08xeHVJQ0F0TFcxa0xYQnBibXN0UVRjd01Eb2dJME0xTVRFMk1qdGNibHh1SUNBdExXMWtMWEIxY25Cc1pTMDFNRG9nSTBZelJUVkdOVHRjYmlBZ0xTMXRaQzF3ZFhKd2JHVXRNVEF3T2lBalJURkNSVVUzTzF4dUlDQXRMVzFrTFhCMWNuQnNaUzB5TURBNklDTkRSVGt6UkRnN1hHNGdJQzB0YldRdGNIVnljR3hsTFRNd01Eb2dJMEpCTmpoRE9EdGNiaUFnTFMxdFpDMXdkWEp3YkdVdE5EQXdPaUFqUVVJME4wSkRPMXh1SUNBdExXMWtMWEIxY25Cc1pTMDFNREE2SUNNNVF6STNRakE3WEc0Z0lDMHRiV1F0Y0hWeWNHeGxMVFl3TURvZ0l6aEZNalJCUVR0Y2JpQWdMUzF0WkMxd2RYSndiR1V0TnpBd09pQWpOMEl4UmtFeU8xeHVJQ0F0TFcxa0xYQjFjbkJzWlMwNE1EQTZJQ00yUVRGQ09VRTdYRzRnSUMwdGJXUXRjSFZ5Y0d4bExUa3dNRG9nSXpSQk1UUTRRenRjYmlBZ0xTMXRaQzF3ZFhKd2JHVXRRVEV3TURvZ0kwVkJPREJHUXp0Y2JpQWdMUzF0WkMxd2RYSndiR1V0UVRJd01Eb2dJMFV3TkRCR1FqdGNiaUFnTFMxdFpDMXdkWEp3YkdVdFFUUXdNRG9nSTBRMU1EQkdPVHRjYmlBZ0xTMXRaQzF3ZFhKd2JHVXRRVGN3TURvZ0kwRkJNREJHUmp0Y2JseHVJQ0F0TFcxa0xXUmxaWEF0Y0hWeWNHeGxMVFV3T2lBalJVUkZOMFkyTzF4dUlDQXRMVzFrTFdSbFpYQXRjSFZ5Y0d4bExURXdNRG9nSTBReFF6UkZPVHRjYmlBZ0xTMXRaQzFrWldWd0xYQjFjbkJzWlMweU1EQTZJQ05DTXpsRVJFSTdYRzRnSUMwdGJXUXRaR1ZsY0Mxd2RYSndiR1V0TXpBd09pQWpPVFUzTlVORU8xeHVJQ0F0TFcxa0xXUmxaWEF0Y0hWeWNHeGxMVFF3TURvZ0l6ZEZOVGRETWp0Y2JpQWdMUzF0WkMxa1pXVndMWEIxY25Cc1pTMDFNREE2SUNNMk56TkJRamM3WEc0Z0lDMHRiV1F0WkdWbGNDMXdkWEp3YkdVdE5qQXdPaUFqTlVVek5VSXhPMXh1SUNBdExXMWtMV1JsWlhBdGNIVnljR3hsTFRjd01Eb2dJelV4TWtSQk9EdGNiaUFnTFMxdFpDMWtaV1Z3TFhCMWNuQnNaUzA0TURBNklDTTBOVEkzUVRBN1hHNGdJQzB0YldRdFpHVmxjQzF3ZFhKd2JHVXRPVEF3T2lBak16RXhRamt5TzF4dUlDQXRMVzFrTFdSbFpYQXRjSFZ5Y0d4bExVRXhNREE2SUNOQ016ZzRSa1k3WEc0Z0lDMHRiV1F0WkdWbGNDMXdkWEp3YkdVdFFUSXdNRG9nSXpkRE5FUkdSanRjYmlBZ0xTMXRaQzFrWldWd0xYQjFjbkJzWlMxQk5EQXdPaUFqTmpVeFJrWkdPMXh1SUNBdExXMWtMV1JsWlhBdGNIVnljR3hsTFVFM01EQTZJQ00yTWpBd1JVRTdYRzVjYmlBZ0xTMXRaQzFwYm1ScFoyOHROVEE2SUNORk9FVkJSalk3WEc0Z0lDMHRiV1F0YVc1a2FXZHZMVEV3TURvZ0kwTTFRMEZGT1R0Y2JpQWdMUzF0WkMxcGJtUnBaMjh0TWpBd09pQWpPVVpCT0VSQk8xeHVJQ0F0TFcxa0xXbHVaR2xuYnkwek1EQTZJQ00zT1RnMlEwSTdYRzRnSUMwdGJXUXRhVzVrYVdkdkxUUXdNRG9nSXpWRE5rSkRNRHRjYmlBZ0xTMXRaQzFwYm1ScFoyOHROVEF3T2lBak0wWTFNVUkxTzF4dUlDQXRMVzFrTFdsdVpHbG5ieTAyTURBNklDTXpPVFE1UVVJN1hHNGdJQzB0YldRdGFXNWthV2R2TFRjd01Eb2dJek13TTBZNVJqdGNiaUFnTFMxdFpDMXBibVJwWjI4dE9EQXdPaUFqTWpnek5Ua3pPMXh1SUNBdExXMWtMV2x1WkdsbmJ5MDVNREE2SUNNeFFUSXpOMFU3WEc0Z0lDMHRiV1F0YVc1a2FXZHZMVUV4TURBNklDTTRRemxGUmtZN1hHNGdJQzB0YldRdGFXNWthV2R2TFVFeU1EQTZJQ00xTXpaRVJrVTdYRzRnSUMwdGJXUXRhVzVrYVdkdkxVRTBNREE2SUNNelJEVkJSa1U3WEc0Z0lDMHRiV1F0YVc1a2FXZHZMVUUzTURBNklDTXpNRFJHUmtVN1hHNWNiaUFnTFMxdFpDMWliSFZsTFRVd09pQWpSVE5HTWtaRU8xeHVJQ0F0TFcxa0xXSnNkV1V0TVRBd09pQWpRa0pFUlVaQ08xeHVJQ0F0TFcxa0xXSnNkV1V0TWpBd09pQWpPVEJEUVVZNU8xeHVJQ0F0TFcxa0xXSnNkV1V0TXpBd09pQWpOalJDTlVZMk8xeHVJQ0F0TFcxa0xXSnNkV1V0TkRBd09pQWpOREpCTlVZMU8xeHVJQ0F0TFcxa0xXSnNkV1V0TlRBd09pQWpNakU1TmtZek8xeHVJQ0F0TFcxa0xXSnNkV1V0TmpBd09pQWpNVVU0T0VVMU8xeHVJQ0F0TFcxa0xXSnNkV1V0TnpBd09pQWpNVGszTmtReU8xeHVJQ0F0TFcxa0xXSnNkV1V0T0RBd09pQWpNVFUyTlVNd08xeHVJQ0F0TFcxa0xXSnNkV1V0T1RBd09pQWpNRVEwTjBFeE8xeHVJQ0F0TFcxa0xXSnNkV1V0UVRFd01Eb2dJemd5UWpGR1JqdGNiaUFnTFMxdFpDMWliSFZsTFVFeU1EQTZJQ00wTkRoQlJrWTdYRzRnSUMwdGJXUXRZbXgxWlMxQk5EQXdPaUFqTWprM09VWkdPMXh1SUNBdExXMWtMV0pzZFdVdFFUY3dNRG9nSXpJNU5qSkdSanRjYmx4dUlDQXRMVzFrTFd4cFoyaDBMV0pzZFdVdE5UQTZJQ05GTVVZMVJrVTdYRzRnSUMwdGJXUXRiR2xuYUhRdFlteDFaUzB4TURBNklDTkNNMFUxUmtNN1hHNGdJQzB0YldRdGJHbG5hSFF0WW14MVpTMHlNREE2SUNNNE1VUTBSa0U3WEc0Z0lDMHRiV1F0YkdsbmFIUXRZbXgxWlMwek1EQTZJQ00wUmtNelJqYzdYRzRnSUMwdGJXUXRiR2xuYUhRdFlteDFaUzAwTURBNklDTXlPVUkyUmpZN1hHNGdJQzB0YldRdGJHbG5hSFF0WW14MVpTMDFNREE2SUNNd00wRTVSalE3WEc0Z0lDMHRiV1F0YkdsbmFIUXRZbXgxWlMwMk1EQTZJQ013TXpsQ1JUVTdYRzRnSUMwdGJXUXRiR2xuYUhRdFlteDFaUzAzTURBNklDTXdNamc0UkRFN1hHNGdJQzB0YldRdGJHbG5hSFF0WW14MVpTMDRNREE2SUNNd01qYzNRa1E3WEc0Z0lDMHRiV1F0YkdsbmFIUXRZbXgxWlMwNU1EQTZJQ013TVRVM09VSTdYRzRnSUMwdGJXUXRiR2xuYUhRdFlteDFaUzFCTVRBd09pQWpPREJFT0VaR08xeHVJQ0F0TFcxa0xXeHBaMmgwTFdKc2RXVXRRVEl3TURvZ0l6UXdRelJHUmp0Y2JpQWdMUzF0WkMxc2FXZG9kQzFpYkhWbExVRTBNREE2SUNNd01FSXdSa1k3WEc0Z0lDMHRiV1F0YkdsbmFIUXRZbXgxWlMxQk56QXdPaUFqTURBNU1VVkJPMXh1WEc0Z0lDMHRiV1F0WTNsaGJpMDFNRG9nSTBVd1JqZEdRVHRjYmlBZ0xTMXRaQzFqZVdGdUxURXdNRG9nSTBJeVJVSkdNanRjYmlBZ0xTMXRaQzFqZVdGdUxUSXdNRG9nSXpnd1JFVkZRVHRjYmlBZ0xTMXRaQzFqZVdGdUxUTXdNRG9nSXpSRVJEQkZNVHRjYmlBZ0xTMXRaQzFqZVdGdUxUUXdNRG9nSXpJMlF6WkVRVHRjYmlBZ0xTMXRaQzFqZVdGdUxUVXdNRG9nSXpBd1FrTkVORHRjYmlBZ0xTMXRaQzFqZVdGdUxUWXdNRG9nSXpBd1FVTkRNVHRjYmlBZ0xTMXRaQzFqZVdGdUxUY3dNRG9nSXpBd09UZEJOenRjYmlBZ0xTMXRaQzFqZVdGdUxUZ3dNRG9nSXpBd09ETTRSanRjYmlBZ0xTMXRaQzFqZVdGdUxUa3dNRG9nSXpBd05qQTJORHRjYmlBZ0xTMXRaQzFqZVdGdUxVRXhNREE2SUNNNE5FWkdSa1k3WEc0Z0lDMHRiV1F0WTNsaGJpMUJNakF3T2lBak1UaEdSa1pHTzF4dUlDQXRMVzFrTFdONVlXNHRRVFF3TURvZ0l6QXdSVFZHUmp0Y2JpQWdMUzF0WkMxamVXRnVMVUUzTURBNklDTXdNRUk0UkRRN1hHNWNiaUFnTFMxdFpDMTBaV0ZzTFRVd09pQWpSVEJHTWtZeE8xeHVJQ0F0TFcxa0xYUmxZV3d0TVRBd09pQWpRakpFUmtSQ08xeHVJQ0F0TFcxa0xYUmxZV3d0TWpBd09pQWpPREJEUWtNME8xeHVJQ0F0TFcxa0xYUmxZV3d0TXpBd09pQWpORVJDTmtGRE8xeHVJQ0F0TFcxa0xYUmxZV3d0TkRBd09pQWpNalpCTmpsQk8xeHVJQ0F0TFcxa0xYUmxZV3d0TlRBd09pQWpNREE1TmpnNE8xeHVJQ0F0TFcxa0xYUmxZV3d0TmpBd09pQWpNREE0T1RkQ08xeHVJQ0F0TFcxa0xYUmxZV3d0TnpBd09pQWpNREEzT1RaQ08xeHVJQ0F0TFcxa0xYUmxZV3d0T0RBd09pQWpNREEyT1RWRE8xeHVJQ0F0TFcxa0xYUmxZV3d0T1RBd09pQWpNREEwUkRRd08xeHVJQ0F0TFcxa0xYUmxZV3d0UVRFd01Eb2dJMEUzUmtaRlFqdGNiaUFnTFMxdFpDMTBaV0ZzTFVFeU1EQTZJQ00yTkVaR1JFRTdYRzRnSUMwdGJXUXRkR1ZoYkMxQk5EQXdPaUFqTVVSRk9VSTJPMXh1SUNBdExXMWtMWFJsWVd3dFFUY3dNRG9nSXpBd1FrWkJOVHRjYmx4dUlDQXRMVzFrTFdkeVpXVnVMVFV3T2lBalJUaEdOVVU1TzF4dUlDQXRMVzFrTFdkeVpXVnVMVEV3TURvZ0kwTTRSVFpET1R0Y2JpQWdMUzF0WkMxbmNtVmxiaTB5TURBNklDTkJOVVEyUVRjN1hHNGdJQzB0YldRdFozSmxaVzR0TXpBd09pQWpPREZETnpnME8xeHVJQ0F0TFcxa0xXZHlaV1Z1TFRRd01Eb2dJelkyUWtJMlFUdGNiaUFnTFMxdFpDMW5jbVZsYmkwMU1EQTZJQ00wUTBGR05UQTdYRzRnSUMwdGJXUXRaM0psWlc0dE5qQXdPaUFqTkROQk1EUTNPMXh1SUNBdExXMWtMV2R5WldWdUxUY3dNRG9nSXpNNE9FVXpRenRjYmlBZ0xTMXRaQzFuY21WbGJpMDRNREE2SUNNeVJUZEVNekk3WEc0Z0lDMHRiV1F0WjNKbFpXNHRPVEF3T2lBak1VSTFSVEl3TzF4dUlDQXRMVzFrTFdkeVpXVnVMVUV4TURBNklDTkNPVVkyUTBFN1hHNGdJQzB0YldRdFozSmxaVzR0UVRJd01Eb2dJelk1UmpCQlJUdGNiaUFnTFMxdFpDMW5jbVZsYmkxQk5EQXdPaUFqTURCRk5qYzJPMXh1SUNBdExXMWtMV2R5WldWdUxVRTNNREE2SUNNd01FTTROVE03WEc1Y2JpQWdMUzF0WkMxc2FXZG9kQzFuY21WbGJpMDFNRG9nSTBZeFJqaEZPVHRjYmlBZ0xTMXRaQzFzYVdkb2RDMW5jbVZsYmkweE1EQTZJQ05FUTBWRVF6ZzdYRzRnSUMwdGJXUXRiR2xuYUhRdFozSmxaVzR0TWpBd09pQWpRelZGTVVFMU8xeHVJQ0F0TFcxa0xXeHBaMmgwTFdkeVpXVnVMVE13TURvZ0kwRkZSRFU0TVR0Y2JpQWdMUzF0WkMxc2FXZG9kQzFuY21WbGJpMDBNREE2SUNNNVEwTkROalU3WEc0Z0lDMHRiV1F0YkdsbmFIUXRaM0psWlc0dE5UQXdPaUFqT0VKRE16UkJPMXh1SUNBdExXMWtMV3hwWjJoMExXZHlaV1Z1TFRZd01Eb2dJemREUWpNME1qdGNiaUFnTFMxdFpDMXNhV2RvZEMxbmNtVmxiaTAzTURBNklDTTJPRGxHTXpnN1hHNGdJQzB0YldRdGJHbG5hSFF0WjNKbFpXNHRPREF3T2lBak5UVTRRakpHTzF4dUlDQXRMVzFrTFd4cFoyaDBMV2R5WldWdUxUa3dNRG9nSXpNek5qa3hSVHRjYmlBZ0xTMXRaQzFzYVdkb2RDMW5jbVZsYmkxQk1UQXdPaUFqUTBOR1Jqa3dPMXh1SUNBdExXMWtMV3hwWjJoMExXZHlaV1Z1TFVFeU1EQTZJQ05DTWtaR05UazdYRzRnSUMwdGJXUXRiR2xuYUhRdFozSmxaVzR0UVRRd01Eb2dJemMyUmtZd016dGNiaUFnTFMxdFpDMXNhV2RvZEMxbmNtVmxiaTFCTnpBd09pQWpOalJFUkRFM08xeHVYRzRnSUMwdGJXUXRiR2x0WlMwMU1Eb2dJMFk1UmtKRk56dGNiaUFnTFMxdFpDMXNhVzFsTFRFd01Eb2dJMFl3UmpSRE16dGNiaUFnTFMxdFpDMXNhVzFsTFRJd01Eb2dJMFUyUlVVNVF6dGNiaUFnTFMxdFpDMXNhVzFsTFRNd01Eb2dJMFJEUlRjM05UdGNiaUFnTFMxdFpDMXNhVzFsTFRRd01Eb2dJMFEwUlRFMU56dGNiaUFnTFMxdFpDMXNhVzFsTFRVd01Eb2dJME5FUkVNek9UdGNiaUFnTFMxdFpDMXNhVzFsTFRZd01Eb2dJME13UTBFek16dGNiaUFnTFMxdFpDMXNhVzFsTFRjd01Eb2dJMEZHUWpReVFqdGNiaUFnTFMxdFpDMXNhVzFsTFRnd01Eb2dJemxGT1VReU5EdGNiaUFnTFMxdFpDMXNhVzFsTFRrd01Eb2dJemd5TnpjeE56dGNiaUFnTFMxdFpDMXNhVzFsTFVFeE1EQTZJQ05HTkVaR09ERTdYRzRnSUMwdGJXUXRiR2x0WlMxQk1qQXdPaUFqUlVWR1JqUXhPMXh1SUNBdExXMWtMV3hwYldVdFFUUXdNRG9nSTBNMlJrWXdNRHRjYmlBZ0xTMXRaQzFzYVcxbExVRTNNREE2SUNOQlJVVkJNREE3WEc1Y2JpQWdMUzF0WkMxNVpXeHNiM2N0TlRBNklDTkdSa1pFUlRjN1hHNGdJQzB0YldRdGVXVnNiRzkzTFRFd01Eb2dJMFpHUmpsRE5EdGNiaUFnTFMxdFpDMTVaV3hzYjNjdE1qQXdPaUFqUmtaR05UbEVPMXh1SUNBdExXMWtMWGxsYkd4dmR5MHpNREE2SUNOR1JrWXhOelk3WEc0Z0lDMHRiV1F0ZVdWc2JHOTNMVFF3TURvZ0kwWkdSVVUxT0R0Y2JpQWdMUzF0WkMxNVpXeHNiM2N0TlRBd09pQWpSa1pGUWpOQ08xeHVJQ0F0TFcxa0xYbGxiR3h2ZHkwMk1EQTZJQ05HUkVRNE16VTdYRzRnSUMwdGJXUXRlV1ZzYkc5M0xUY3dNRG9nSTBaQ1F6QXlSRHRjYmlBZ0xTMXRaQzE1Wld4c2IzY3RPREF3T2lBalJqbEJPREkxTzF4dUlDQXRMVzFrTFhsbGJHeHZkeTA1TURBNklDTkdOVGRHTVRjN1hHNGdJQzB0YldRdGVXVnNiRzkzTFVFeE1EQTZJQ05HUmtaR09FUTdYRzRnSUMwdGJXUXRlV1ZzYkc5M0xVRXlNREE2SUNOR1JrWkdNREE3WEc0Z0lDMHRiV1F0ZVdWc2JHOTNMVUUwTURBNklDTkdSa1ZCTURBN1hHNGdJQzB0YldRdGVXVnNiRzkzTFVFM01EQTZJQ05HUmtRMk1EQTdYRzVjYmlBZ0xTMXRaQzFoYldKbGNpMDFNRG9nSTBaR1JqaEZNVHRjYmlBZ0xTMXRaQzFoYldKbGNpMHhNREE2SUNOR1JrVkRRak03WEc0Z0lDMHRiV1F0WVcxaVpYSXRNakF3T2lBalJrWkZNRGd5TzF4dUlDQXRMVzFrTFdGdFltVnlMVE13TURvZ0kwWkdSRFUwUmp0Y2JpQWdMUzF0WkMxaGJXSmxjaTAwTURBNklDTkdSa05CTWpnN1hHNGdJQzB0YldRdFlXMWlaWEl0TlRBd09pQWpSa1pETVRBM08xeHVJQ0F0TFcxa0xXRnRZbVZ5TFRZd01Eb2dJMFpHUWpNd01EdGNiaUFnTFMxdFpDMWhiV0psY2kwM01EQTZJQ05HUmtFd01EQTdYRzRnSUMwdGJXUXRZVzFpWlhJdE9EQXdPaUFqUmtZNFJqQXdPMXh1SUNBdExXMWtMV0Z0WW1WeUxUa3dNRG9nSTBaR05rWXdNRHRjYmlBZ0xTMXRaQzFoYldKbGNpMUJNVEF3T2lBalJrWkZOVGRHTzF4dUlDQXRMVzFrTFdGdFltVnlMVUV5TURBNklDTkdSa1EzTkRBN1hHNGdJQzB0YldRdFlXMWlaWEl0UVRRd01Eb2dJMFpHUXpRd01EdGNiaUFnTFMxdFpDMWhiV0psY2kxQk56QXdPaUFqUmtaQlFqQXdPMXh1WEc0Z0lDMHRiV1F0YjNKaGJtZGxMVFV3T2lBalJrWkdNMFV3TzF4dUlDQXRMVzFrTFc5eVlXNW5aUzB4TURBNklDTkdSa1V3UWpJN1hHNGdJQzB0YldRdGIzSmhibWRsTFRJd01Eb2dJMFpHUTBNNE1EdGNiaUFnTFMxdFpDMXZjbUZ1WjJVdE16QXdPaUFqUmtaQ056UkVPMXh1SUNBdExXMWtMVzl5WVc1blpTMDBNREE2SUNOR1JrRTNNalk3WEc0Z0lDMHRiV1F0YjNKaGJtZGxMVFV3TURvZ0kwWkdPVGd3TUR0Y2JpQWdMUzF0WkMxdmNtRnVaMlV0TmpBd09pQWpSa0k0UXpBd08xeHVJQ0F0TFcxa0xXOXlZVzVuWlMwM01EQTZJQ05HTlRkRE1EQTdYRzRnSUMwdGJXUXRiM0poYm1kbExUZ3dNRG9nSTBWR05rTXdNRHRjYmlBZ0xTMXRaQzF2Y21GdVoyVXRPVEF3T2lBalJUWTFNVEF3TzF4dUlDQXRMVzFrTFc5eVlXNW5aUzFCTVRBd09pQWpSa1pFTVRnd08xeHVJQ0F0TFcxa0xXOXlZVzVuWlMxQk1qQXdPaUFqUmtaQlFqUXdPMXh1SUNBdExXMWtMVzl5WVc1blpTMUJOREF3T2lBalJrWTVNVEF3TzF4dUlDQXRMVzFrTFc5eVlXNW5aUzFCTnpBd09pQWpSa1kyUkRBd08xeHVYRzRnSUMwdGJXUXRaR1ZsY0MxdmNtRnVaMlV0TlRBNklDTkdRa1U1UlRjN1hHNGdJQzB0YldRdFpHVmxjQzF2Y21GdVoyVXRNVEF3T2lBalJrWkRRMEpETzF4dUlDQXRMVzFrTFdSbFpYQXRiM0poYm1kbExUSXdNRG9nSTBaR1FVSTVNVHRjYmlBZ0xTMXRaQzFrWldWd0xXOXlZVzVuWlMwek1EQTZJQ05HUmpoQk5qVTdYRzRnSUMwdGJXUXRaR1ZsY0MxdmNtRnVaMlV0TkRBd09pQWpSa1kzTURRek8xeHVJQ0F0TFcxa0xXUmxaWEF0YjNKaGJtZGxMVFV3TURvZ0kwWkdOVGN5TWp0Y2JpQWdMUzF0WkMxa1pXVndMVzl5WVc1blpTMDJNREE2SUNOR05EVXhNVVU3WEc0Z0lDMHRiV1F0WkdWbGNDMXZjbUZ1WjJVdE56QXdPaUFqUlRZMFFURTVPMXh1SUNBdExXMWtMV1JsWlhBdGIzSmhibWRsTFRnd01Eb2dJMFE0TkRNeE5UdGNiaUFnTFMxdFpDMWtaV1Z3TFc5eVlXNW5aUzA1TURBNklDTkNSak0yTUVNN1hHNGdJQzB0YldRdFpHVmxjQzF2Y21GdVoyVXRRVEV3TURvZ0kwWkdPVVU0TUR0Y2JpQWdMUzF0WkMxa1pXVndMVzl5WVc1blpTMUJNakF3T2lBalJrWTJSVFF3TzF4dUlDQXRMVzFrTFdSbFpYQXRiM0poYm1kbExVRTBNREE2SUNOR1JqTkVNREE3WEc0Z0lDMHRiV1F0WkdWbGNDMXZjbUZ1WjJVdFFUY3dNRG9nSTBSRU1rTXdNRHRjYmx4dUlDQXRMVzFrTFdKeWIzZHVMVFV3T2lBalJVWkZRa1U1TzF4dUlDQXRMVzFrTFdKeWIzZHVMVEV3TURvZ0kwUTNRME5ET0R0Y2JpQWdMUzF0WkMxaWNtOTNiaTB5TURBNklDTkNRMEZCUVRRN1hHNGdJQzB0YldRdFluSnZkMjR0TXpBd09pQWpRVEU0T0RkR08xeHVJQ0F0TFcxa0xXSnliM2R1TFRRd01Eb2dJemhFTmtVMk16dGNiaUFnTFMxdFpDMWljbTkzYmkwMU1EQTZJQ00zT1RVMU5EZzdYRzRnSUMwdGJXUXRZbkp2ZDI0dE5qQXdPaUFqTmtRMFF6UXhPMXh1SUNBdExXMWtMV0p5YjNkdUxUY3dNRG9nSXpWRU5EQXpOenRjYmlBZ0xTMXRaQzFpY205M2JpMDRNREE2SUNNMFJUTTBNa1U3WEc0Z0lDMHRiV1F0WW5KdmQyNHRPVEF3T2lBak0wVXlOekl6TzF4dVhHNGdJQzB0YldRdFozSmxlUzAxTURvZ0kwWkJSa0ZHUVR0Y2JpQWdMUzF0WkMxbmNtVjVMVEV3TURvZ0kwWTFSalZHTlR0Y2JpQWdMUzF0WkMxbmNtVjVMVEl3TURvZ0kwVkZSVVZGUlR0Y2JpQWdMUzF0WkMxbmNtVjVMVE13TURvZ0kwVXdSVEJGTUR0Y2JpQWdMUzF0WkMxbmNtVjVMVFF3TURvZ0kwSkVRa1JDUkR0Y2JpQWdMUzF0WkMxbmNtVjVMVFV3TURvZ0l6bEZPVVU1UlR0Y2JpQWdMUzF0WkMxbmNtVjVMVFl3TURvZ0l6YzFOelUzTlR0Y2JpQWdMUzF0WkMxbmNtVjVMVGN3TURvZ0l6WXhOakUyTVR0Y2JpQWdMUzF0WkMxbmNtVjVMVGd3TURvZ0l6UXlOREkwTWp0Y2JpQWdMUzF0WkMxbmNtVjVMVGt3TURvZ0l6SXhNakV5TVR0Y2JseHVJQ0F0TFcxa0xXSnNkV1V0WjNKbGVTMDFNRG9nSTBWRFJVWkdNVHRjYmlBZ0xTMXRaQzFpYkhWbExXZHlaWGt0TVRBd09pQWpRMFpFT0VSRE8xeHVJQ0F0TFcxa0xXSnNkV1V0WjNKbGVTMHlNREE2SUNOQ01FSkZRelU3WEc0Z0lDMHRiV1F0WW14MVpTMW5jbVY1TFRNd01Eb2dJemt3UVRSQlJUdGNiaUFnTFMxdFpDMWliSFZsTFdkeVpYa3ROREF3T2lBak56ZzVNRGxETzF4dUlDQXRMVzFrTFdKc2RXVXRaM0psZVMwMU1EQTZJQ00yTURkRU9FSTdYRzRnSUMwdGJXUXRZbXgxWlMxbmNtVjVMVFl3TURvZ0l6VTBOa1UzUVR0Y2JpQWdMUzF0WkMxaWJIVmxMV2R5WlhrdE56QXdPaUFqTkRVMVFUWTBPMXh1SUNBdExXMWtMV0pzZFdVdFozSmxlUzA0TURBNklDTXpOelEzTkVZN1hHNGdJQzB0YldRdFlteDFaUzFuY21WNUxUa3dNRG9nSXpJMk16SXpPRHRjYm4waUxDSXZLaUJEYjNCNWNtbG5hSFFnS0dNcElFcDFjSGwwWlhJZ1JHVjJaV3h2Y0cxbGJuUWdWR1ZoYlM1Y2JpQXFJRVJwYzNSeWFXSjFkR1ZrSUhWdVpHVnlJSFJvWlNCMFpYSnRjeUJ2WmlCMGFHVWdUVzlrYVdacFpXUWdRbE5FSUV4cFkyVnVjMlV1WEc0Z0tpOWNibHh1THlwY2JpQXFJRmRsSUdGemMzVnRaU0IwYUdGMElIUm9aU0JEVTFNZ2RtRnlhV0ZpYkdWeklHbHVYRzRnS2lCb2RIUndjem92TDJkcGRHaDFZaTVqYjIwdmFuVndlWFJsY214aFlpOXFkWEI1ZEdWeWJHRmlMMkpzYjJJdmJXRnpkR1Z5TDNOeVl5OWtaV1poZFd4MExYUm9aVzFsTDNaaGNtbGhZbXhsY3k1amMzTmNiaUFxSUdoaGRtVWdZbVZsYmlCa1pXWnBibVZrTGx4dUlDb3ZYRzVjYmtCcGJYQnZjblFnWENJdUwzQm9iM053YUc5eUxtTnpjMXdpTzF4dVhHNDZjbTl2ZENCN1hHNGdJQ0FnTFMxcWNDMTNhV1JuWlhSekxXTnZiRzl5T2lCMllYSW9MUzFxY0MxamIyNTBaVzUwTFdadmJuUXRZMjlzYjNJeEtUdGNiaUFnSUNBdExXcHdMWGRwWkdkbGRITXRiR0ZpWld3dFkyOXNiM0k2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10WTI5c2IzSXBPMXh1SUNBZ0lDMHRhbkF0ZDJsa1oyVjBjeTF5WldGa2IzVjBMV052Ykc5eU9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXTnZiRzl5S1R0Y2JpQWdJQ0F0TFdwd0xYZHBaR2RsZEhNdFptOXVkQzF6YVhwbE9pQjJZWElvTFMxcWNDMTFhUzFtYjI1MExYTnBlbVV4S1R0Y2JpQWdJQ0F0TFdwd0xYZHBaR2RsZEhNdGJXRnlaMmx1T2lBeWNIZzdYRzRnSUNBZ0xTMXFjQzEzYVdSblpYUnpMV2x1YkdsdVpTMW9aV2xuYUhRNklESTRjSGc3WEc0Z0lDQWdMUzFxY0MxM2FXUm5aWFJ6TFdsdWJHbHVaUzEzYVdSMGFEb2dNekF3Y0hnN1hHNGdJQ0FnTFMxcWNDMTNhV1JuWlhSekxXbHViR2x1WlMxM2FXUjBhQzF6YUc5eWREb2dZMkZzWXloMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWJHbHVaUzEzYVdSMGFDa2dMeUF5SUMwZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxdFlYSm5hVzRwS1R0Y2JpQWdJQ0F0TFdwd0xYZHBaR2RsZEhNdGFXNXNhVzVsTFhkcFpIUm9MWFJwYm5rNklHTmhiR01vZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm14cGJtVXRkMmxrZEdndGMyaHZjblFwSUM4Z01pQXRJSFpoY2lndExXcHdMWGRwWkdkbGRITXRiV0Z5WjJsdUtTazdYRzRnSUNBZ0xTMXFjQzEzYVdSblpYUnpMV2x1YkdsdVpTMXRZWEpuYVc0NklEUndlRHNnTHlvZ2JXRnlaMmx1SUdKbGRIZGxaVzRnYVc1c2FXNWxJR1ZzWlcxbGJuUnpJQ292WEc0Z0lDQWdMUzFxY0MxM2FXUm5aWFJ6TFdsdWJHbHVaUzFzWVdKbGJDMTNhV1IwYURvZ09EQndlRHRjYmlBZ0lDQXRMV3B3TFhkcFpHZGxkSE10WW05eVpHVnlMWGRwWkhSb09pQjJZWElvTFMxcWNDMWliM0prWlhJdGQybGtkR2dwTzF4dUlDQWdJQzB0YW5BdGQybGtaMlYwY3kxMlpYSjBhV05oYkMxb1pXbG5hSFE2SURJd01IQjRPMXh1SUNBZ0lDMHRhbkF0ZDJsa1oyVjBjeTFvYjNKcGVtOXVkR0ZzTFhSaFlpMW9aV2xuYUhRNklESTBjSGc3WEc0Z0lDQWdMUzFxY0MxM2FXUm5aWFJ6TFdodmNtbDZiMjUwWVd3dGRHRmlMWGRwWkhSb09pQXhORFJ3ZUR0Y2JpQWdJQ0F0TFdwd0xYZHBaR2RsZEhNdGFHOXlhWHB2Ym5SaGJDMTBZV0l0ZEc5d0xXSnZjbVJsY2pvZ01uQjRPMXh1SUNBZ0lDMHRhbkF0ZDJsa1oyVjBjeTF3Y205bmNtVnpjeTEwYUdsamEyNWxjM002SURJd2NIZzdYRzRnSUNBZ0xTMXFjQzEzYVdSblpYUnpMV052Ym5SaGFXNWxjaTF3WVdSa2FXNW5PaUF4TlhCNE8xeHVJQ0FnSUMwdGFuQXRkMmxrWjJWMGN5MXBibkIxZEMxd1lXUmthVzVuT2lBMGNIZzdYRzRnSUNBZ0xTMXFjQzEzYVdSblpYUnpMWEpoWkdsdkxXbDBaVzB0YUdWcFoyaDBMV0ZrYW5WemRHMWxiblE2SURod2VEdGNiaUFnSUNBdExXcHdMWGRwWkdkbGRITXRjbUZrYVc4dGFYUmxiUzFvWldsbmFIUTZJR05oYkdNb2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxcGJteHBibVV0YUdWcFoyaDBLU0F0SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10Y21Ga2FXOHRhWFJsYlMxb1pXbG5hSFF0WVdScWRYTjBiV1Z1ZENrcE8xeHVJQ0FnSUMwdGFuQXRkMmxrWjJWMGN5MXpiR2xrWlhJdGRISmhZMnN0ZEdocFkydHVaWE56T2lBMGNIZzdYRzRnSUNBZ0xTMXFjQzEzYVdSblpYUnpMWE5zYVdSbGNpMWliM0prWlhJdGQybGtkR2c2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10WW05eVpHVnlMWGRwWkhSb0tUdGNiaUFnSUNBdExXcHdMWGRwWkdkbGRITXRjMnhwWkdWeUxXaGhibVJzWlMxemFYcGxPaUF4Tm5CNE8xeHVJQ0FnSUMwdGFuQXRkMmxrWjJWMGN5MXpiR2xrWlhJdGFHRnVaR3hsTFdKdmNtUmxjaTFqYjJ4dmNqb2dkbUZ5S0MwdGFuQXRZbTl5WkdWeUxXTnZiRzl5TVNrN1hHNGdJQ0FnTFMxcWNDMTNhV1JuWlhSekxYTnNhV1JsY2kxb1lXNWtiR1V0WW1GamEyZHliM1Z1WkMxamIyeHZjam9nZG1GeUtDMHRhbkF0YkdGNWIzVjBMV052Ykc5eU1TazdYRzRnSUNBZ0xTMXFjQzEzYVdSblpYUnpMWE5zYVdSbGNpMWhZM1JwZG1VdGFHRnVaR3hsTFdOdmJHOXlPaUIyWVhJb0xTMXFjQzFpY21GdVpDMWpiMnh2Y2pFcE8xeHVJQ0FnSUMwdGFuQXRkMmxrWjJWMGN5MXRaVzUxTFdsMFpXMHRhR1ZwWjJoME9pQXlOSEI0TzF4dUlDQWdJQzB0YW5BdGQybGtaMlYwY3kxa2NtOXdaRzkzYmkxaGNuSnZkem9nZFhKc0tGd2laR0YwWVRwcGJXRm5aUzl6ZG1jcmVHMXNPMkpoYzJVMk5DeFFSRGswWWxkM1oyUnRWbmxqTW14Mlltb3dhVTFUTkhkSmFVSnNZbTFPZGxwSGJIVmFlakJwWkZoU2JVeFVaMmxRZWpSTFVFTkZkRXhUUWtoYVZ6VnNZMjFHTUdJelNUWkpSVVpyWWpKS2JFbEZiSE5pU0ZaNlpFaEthR1JIT1hsSlJFVTFUR3BKZFUxVGQyZFZNVnBJU1VWV05HTkhPWGxrUTBKUllraFdia3hWYkhWSlF6Um5WVEZhU0VsR1dteGpiazV3WWpJME5rbEVXWFZOUkVGblVXNVdjR0pIVVdkTlEydG5TVU13ZEZCbmJ6aGpNMXB1U1VoYWJHTnVUbkJpTWpRNVNXcEZkVTFUU1dkaFYxRTVTV3Q0YUdWWFZubFlla1ZwU1Vob2RHSkhOWHBRVTBwdlpFaFNkMDlwT0haa00yUXpURzVqZWt4dE9YbGFlVGg1VFVSQmQwd3pUakphZVVsblpVY3hjMkp1VFRabFIzaHdZbTF6T1VsdGFEQmtTRUUyVEhrNU0yUXpZM1ZrZWsxMVlqTktia3g2UlRWUFZHdDJaVWQ0Y0dKdGMybEpTR2M1U1dwQ2QyVkRTV2RsVkRCcFRVaENORWxuYjBwSlNGcHdXbGhrUTJJelp6bEpha0ZuVFVOQmVFOURRWGhQUTBsbll6TlNOV0pIVlRsSmJWWjFXVmRLYzFwVE1XbFpWMDV5V2pOS2RtUlhOV3RQYlRWc1pIbEJkMGxFUVdkTlZHZG5UVlJuTjBscFFqUmlWM2MyWXpOQ2FGa3lWVGxKYmtKNVdsaE9iR051V214SmFqUkxVRWhPTUdWWGVHeEpTRkkxWTBkVk9VbHVVbXhsU0ZGMldUTk9la2xxTkV0RFV6VjZaRVJDTjFwdGJITmlSSEIxWWpJMWJFOHpNRXRRUXpsNlpFaHNjMXBVTkV0UVNFSm9aRWRuWjFwRU1HbFVWRlYxVFdsM01VeHFiRTFQVTNjMVRHcGtjMDE1TkRSTVZFMTFUMGQzZUV4cVNYTk5VelI1WWtNd01FeHFhM05PVjNkMFRrTTBOVXhVVmsxT1V6UjVURVJWZFU5WWIybE1lalJMVUVoQ2FHUkhaMmRaTW5ob1l6Tk5PVWx1VGpCTlEwbG5Xa1F3YVZSVVFYUk5RelF5WVVSRk5HUnFSVFJUUkVKWFRGUkJkVTV1YjJsTWVqUkxVRU01ZW1SdFl5dERaMXdpS1R0Y2JpQWdJQ0F0TFdwd0xYZHBaR2RsZEhNdGFXNXdkWFF0WTI5c2IzSTZJSFpoY2lndExXcHdMWFZwTFdadmJuUXRZMjlzYjNJeEtUdGNiaUFnSUNBdExXcHdMWGRwWkdkbGRITXRhVzV3ZFhRdFltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ2RtRnlLQzB0YW5BdGJHRjViM1YwTFdOdmJHOXlNU2s3WEc0Z0lDQWdMUzFxY0MxM2FXUm5aWFJ6TFdsdWNIVjBMV0p2Y21SbGNpMWpiMnh2Y2pvZ2RtRnlLQzB0YW5BdFltOXlaR1Z5TFdOdmJHOXlNU2s3WEc0Z0lDQWdMUzFxY0MxM2FXUm5aWFJ6TFdsdWNIVjBMV1p2WTNWekxXSnZjbVJsY2kxamIyeHZjam9nZG1GeUtDMHRhbkF0WW5KaGJtUXRZMjlzYjNJeUtUdGNiaUFnSUNBdExXcHdMWGRwWkdkbGRITXRhVzV3ZFhRdFltOXlaR1Z5TFhkcFpIUm9PaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV0p2Y21SbGNpMTNhV1IwYUNrN1hHNGdJQ0FnTFMxcWNDMTNhV1JuWlhSekxXUnBjMkZpYkdWa0xXOXdZV05wZEhrNklEQXVOanRjYmx4dUlDQWdJQzhxSUVaeWIyMGdUV0YwWlhKcFlXd2dSR1Z6YVdkdUlFeHBkR1VnS2k5Y2JpQWdJQ0F0TFcxa0xYTm9ZV1J2ZHkxclpYa3RkVzFpY21FdGIzQmhZMmwwZVRvZ01DNHlPMXh1SUNBZ0lDMHRiV1F0YzJoaFpHOTNMV3RsZVMxd1pXNTFiV0p5WVMxdmNHRmphWFI1T2lBd0xqRTBPMXh1SUNBZ0lDMHRiV1F0YzJoaFpHOTNMV0Z0WW1sbGJuUXRjMmhoWkc5M0xXOXdZV05wZEhrNklEQXVNVEk3WEc1OVhHNWNiaTVxZFhCNWRHVnlMWGRwWkdkbGRITWdlMXh1SUNBZ0lHMWhjbWRwYmpvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxdFlYSm5hVzRwTzF4dUlDQWdJR0p2ZUMxemFYcHBibWM2SUdKdmNtUmxjaTFpYjNnN1hHNGdJQ0FnWTI5c2IzSTZJSFpoY2lndExXcHdMWGRwWkdkbGRITXRZMjlzYjNJcE8xeHVJQ0FnSUc5MlpYSm1iRzkzT2lCMmFYTnBZbXhsTzF4dWZWeHVYRzR1YW5Wd2VYUmxjaTEzYVdSblpYUnpMbXAxY0hsMFpYSXRkMmxrWjJWMGN5MWthWE5qYjI1dVpXTjBaV1E2T21KbFptOXlaU0I3WEc0Z0lDQWdiR2x1WlMxb1pXbG5hSFE2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YVc1c2FXNWxMV2hsYVdkb2RDazdYRzRnSUNBZ2FHVnBaMmgwT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWJHbHVaUzFvWldsbmFIUXBPMXh1ZlZ4dVhHNHVhbkF0VDNWMGNIVjBMWEpsYzNWc2RDQStJQzVxZFhCNWRHVnlMWGRwWkdkbGRITWdlMXh1SUNBZ0lHMWhjbWRwYmkxc1pXWjBPaUF3TzF4dUlDQWdJRzFoY21kcGJpMXlhV2RvZERvZ01EdGNibjFjYmx4dUx5b2dkbUp2ZUNCaGJtUWdhR0p2ZUNBcUwxeHVYRzR1ZDJsa1oyVjBMV2x1YkdsdVpTMW9ZbTk0SUh0Y2JpQWdJQ0F2S2lCSWIzSnBlbTl1ZEdGc0lIZHBaR2RsZEhNZ0tpOWNiaUFnSUNCaWIzZ3RjMmw2YVc1bk9pQmliM0prWlhJdFltOTRPMXh1SUNBZ0lHUnBjM0JzWVhrNklHWnNaWGc3WEc0Z0lDQWdabXhsZUMxa2FYSmxZM1JwYjI0NklISnZkenRjYmlBZ0lDQmhiR2xuYmkxcGRHVnRjem9nWW1GelpXeHBibVU3WEc1OVhHNWNiaTUzYVdSblpYUXRhVzVzYVc1bExYWmliM2dnZTF4dUlDQWdJQzhxSUZabGNuUnBZMkZzSUZkcFpHZGxkSE1nS2k5Y2JpQWdJQ0JpYjNndGMybDZhVzVuT2lCaWIzSmtaWEl0WW05NE8xeHVJQ0FnSUdScGMzQnNZWGs2SUdac1pYZzdYRzRnSUNBZ1pteGxlQzFrYVhKbFkzUnBiMjQ2SUdOdmJIVnRianRjYmlBZ0lDQmhiR2xuYmkxcGRHVnRjem9nWTJWdWRHVnlPMXh1ZlZ4dVhHNHVkMmxrWjJWMExXSnZlQ0I3WEc0Z0lDQWdZbTk0TFhOcGVtbHVaem9nWW05eVpHVnlMV0p2ZUR0Y2JpQWdJQ0JrYVhOd2JHRjVPaUJtYkdWNE8xeHVJQ0FnSUcxaGNtZHBiam9nTUR0Y2JpQWdJQ0J2ZG1WeVpteHZkem9nWVhWMGJ6dGNibjFjYmx4dUxuZHBaR2RsZEMxbmNtbGtZbTk0SUh0Y2JpQWdJQ0JpYjNndGMybDZhVzVuT2lCaWIzSmtaWEl0WW05NE8xeHVJQ0FnSUdScGMzQnNZWGs2SUdkeWFXUTdYRzRnSUNBZ2JXRnlaMmx1T2lBd08xeHVJQ0FnSUc5MlpYSm1iRzkzT2lCaGRYUnZPMXh1ZlZ4dVhHNHVkMmxrWjJWMExXaGliM2dnZTF4dUlDQWdJR1pzWlhndFpHbHlaV04wYVc5dU9pQnliM2M3WEc1OVhHNWNiaTUzYVdSblpYUXRkbUp2ZUNCN1hHNGdJQ0FnWm14bGVDMWthWEpsWTNScGIyNDZJR052YkhWdGJqdGNibjFjYmx4dUx5b2dSMlZ1WlhKaGJDQkNkWFIwYjI0Z1UzUjViR2x1WnlBcUwxeHVYRzR1YW5Wd2VYUmxjaTFpZFhSMGIyNGdlMXh1SUNBZ0lIQmhaR1JwYm1jdGJHVm1kRG9nTVRCd2VEdGNiaUFnSUNCd1lXUmthVzVuTFhKcFoyaDBPaUF4TUhCNE8xeHVJQ0FnSUhCaFpHUnBibWN0ZEc5d09pQXdjSGc3WEc0Z0lDQWdjR0ZrWkdsdVp5MWliM1IwYjIwNklEQndlRHRjYmlBZ0lDQmthWE53YkdGNU9pQnBibXhwYm1VdFlteHZZMnM3WEc0Z0lDQWdkMmhwZEdVdGMzQmhZMlU2SUc1dmQzSmhjRHRjYmlBZ0lDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVJQ0FnSUhSbGVIUXRiM1psY21ac2IzYzZJR1ZzYkdsd2MybHpPMXh1SUNBZ0lIUmxlSFF0WVd4cFoyNDZJR05sYm5SbGNqdGNiaUFnSUNCbWIyNTBMWE5wZW1VNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdFptOXVkQzF6YVhwbEtUdGNiaUFnSUNCamRYSnpiM0k2SUhCdmFXNTBaWEk3WEc1Y2JpQWdJQ0JvWldsbmFIUTZJSFpoY2lndExXcHdMWGRwWkdkbGRITXRhVzVzYVc1bExXaGxhV2RvZENrN1hHNGdJQ0FnWW05eVpHVnlPaUF3Y0hnZ2MyOXNhV1E3WEc0Z0lDQWdiR2x1WlMxb1pXbG5hSFE2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YVc1c2FXNWxMV2hsYVdkb2RDazdYRzRnSUNBZ1ltOTRMWE5vWVdSdmR6b2dibTl1WlR0Y2JseHVJQ0FnSUdOdmJHOXlPaUIyWVhJb0xTMXFjQzExYVMxbWIyNTBMV052Ykc5eU1TazdYRzRnSUNBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ2RtRnlLQzB0YW5BdGJHRjViM1YwTFdOdmJHOXlNaWs3WEc0Z0lDQWdZbTl5WkdWeUxXTnZiRzl5T2lCMllYSW9MUzFxY0MxaWIzSmtaWEl0WTI5c2IzSXlLVHRjYmlBZ0lDQmliM0prWlhJNklHNXZibVU3WEc1OVhHNWNiaTVxZFhCNWRHVnlMV0oxZEhSdmJpQnBMbVpoSUh0Y2JpQWdJQ0J0WVhKbmFXNHRjbWxuYUhRNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGFXNXNhVzVsTFcxaGNtZHBiaWs3WEc0Z0lDQWdjRzlwYm5SbGNpMWxkbVZ1ZEhNNklHNXZibVU3WEc1OVhHNWNiaTVxZFhCNWRHVnlMV0oxZEhSdmJqcGxiWEIwZVRwaVpXWnZjbVVnZTF4dUlDQWdJR052Ym5SbGJuUTZJRndpWEZ3eU1EQmlYQ0k3SUM4cUlIcGxjbTh0ZDJsa2RHZ2djM0JoWTJVZ0tpOWNibjFjYmx4dUxtcDFjSGwwWlhJdGQybGtaMlYwY3k1cWRYQjVkR1Z5TFdKMWRIUnZianBrYVhOaFlteGxaQ0I3WEc0Z0lDQWdiM0JoWTJsMGVUb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MWthWE5oWW14bFpDMXZjR0ZqYVhSNUtUdGNibjFjYmx4dUxtcDFjSGwwWlhJdFluVjBkRzl1SUdrdVptRXVZMlZ1ZEdWeUlIdGNiaUFnSUNCdFlYSm5hVzR0Y21sbmFIUTZJREE3WEc1OVhHNWNiaTVxZFhCNWRHVnlMV0oxZEhSdmJqcG9iM1psY2pwbGJtRmliR1ZrTENBdWFuVndlWFJsY2kxaWRYUjBiMjQ2Wm05amRYTTZaVzVoWW14bFpDQjdYRzRnSUNBZ0x5b2dUVVFnVEdsMFpTQXlaSEFnYzJoaFpHOTNJQ292WEc0Z0lDQWdZbTk0TFhOb1lXUnZkem9nTUNBeWNIZ2dNbkI0SURBZ2NtZGlZU2d3TENBd0xDQXdMQ0IyWVhJb0xTMXRaQzF6YUdGa2IzY3RhMlY1TFhCbGJuVnRZbkpoTFc5d1lXTnBkSGtwS1N4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBd0lETndlQ0F4Y0hnZ0xUSndlQ0J5WjJKaEtEQXNJREFzSURBc0lIWmhjaWd0TFcxa0xYTm9ZV1J2ZHkxclpYa3RkVzFpY21FdGIzQmhZMmwwZVNrcExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEQWdNWEI0SURWd2VDQXdJSEpuWW1Fb01Dd2dNQ3dnTUN3Z2RtRnlLQzB0YldRdGMyaGhaRzkzTFdGdFltbGxiblF0YzJoaFpHOTNMVzl3WVdOcGRIa3BLVHRjYm4xY2JseHVMbXAxY0hsMFpYSXRZblYwZEc5dU9tRmpkR2wyWlN3Z0xtcDFjSGwwWlhJdFluVjBkRzl1TG0xdlpDMWhZM1JwZG1VZ2UxeHVJQ0FnSUM4cUlFMUVJRXhwZEdVZ05HUndJSE5vWVdSdmR5QXFMMXh1SUNBZ0lHSnZlQzF6YUdGa2IzYzZJREFnTkhCNElEVndlQ0F3SUhKblltRW9NQ3dnTUN3Z01Dd2dkbUZ5S0MwdGJXUXRjMmhoWkc5M0xXdGxlUzF3Wlc1MWJXSnlZUzF2Y0dGamFYUjVLU2tzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTUNBeGNIZ2dNVEJ3ZUNBd0lISm5ZbUVvTUN3Z01Dd2dNQ3dnZG1GeUtDMHRiV1F0YzJoaFpHOTNMV0Z0WW1sbGJuUXRjMmhoWkc5M0xXOXdZV05wZEhrcEtTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXdJREp3ZUNBMGNIZ2dMVEZ3ZUNCeVoySmhLREFzSURBc0lEQXNJSFpoY2lndExXMWtMWE5vWVdSdmR5MXJaWGt0ZFcxaWNtRXRiM0JoWTJsMGVTa3BPMXh1SUNBZ0lHTnZiRzl5T2lCMllYSW9MUzFxY0MxMWFTMW1iMjUwTFdOdmJHOXlNU2s3WEc0Z0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dkbUZ5S0MwdGFuQXRiR0Y1YjNWMExXTnZiRzl5TXlrN1hHNTlYRzVjYmk1cWRYQjVkR1Z5TFdKMWRIUnZianBtYjJOMWN6cGxibUZpYkdWa0lIdGNiaUFnSUNCdmRYUnNhVzVsT2lBeGNIZ2djMjlzYVdRZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxcGJuQjFkQzFtYjJOMWN5MWliM0prWlhJdFkyOXNiM0lwTzF4dWZWeHVYRzR2S2lCQ2RYUjBiMjRnWENKUWNtbHRZWEo1WENJZ1UzUjViR2x1WnlBcUwxeHVYRzR1YW5Wd2VYUmxjaTFpZFhSMGIyNHViVzlrTFhCeWFXMWhjbmtnZTF4dUlDQWdJR052Ykc5eU9pQjJZWElvTFMxcWNDMXBiblpsY25ObExYVnBMV1p2Ym5RdFkyOXNiM0l4S1R0Y2JpQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUIyWVhJb0xTMXFjQzFpY21GdVpDMWpiMnh2Y2pFcE8xeHVmVnh1WEc0dWFuVndlWFJsY2kxaWRYUjBiMjR1Ylc5a0xYQnlhVzFoY25rdWJXOWtMV0ZqZEdsMlpTQjdYRzRnSUNBZ1kyOXNiM0k2SUhaaGNpZ3RMV3B3TFdsdWRtVnljMlV0ZFdrdFptOXVkQzFqYjJ4dmNqQXBPMXh1SUNBZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklIWmhjaWd0TFdwd0xXSnlZVzVrTFdOdmJHOXlNQ2s3WEc1OVhHNWNiaTVxZFhCNWRHVnlMV0oxZEhSdmJpNXRiMlF0Y0hKcGJXRnllVHBoWTNScGRtVWdlMXh1SUNBZ0lHTnZiRzl5T2lCMllYSW9MUzFxY0MxcGJuWmxjbk5sTFhWcExXWnZiblF0WTI5c2IzSXdLVHRjYmlBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQjJZWElvTFMxcWNDMWljbUZ1WkMxamIyeHZjakFwTzF4dWZWeHVYRzR2S2lCQ2RYUjBiMjRnWENKVGRXTmpaWE56WENJZ1UzUjViR2x1WnlBcUwxeHVYRzR1YW5Wd2VYUmxjaTFpZFhSMGIyNHViVzlrTFhOMVkyTmxjM01nZTF4dUlDQWdJR052Ykc5eU9pQjJZWElvTFMxcWNDMXBiblpsY25ObExYVnBMV1p2Ym5RdFkyOXNiM0l4S1R0Y2JpQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUIyWVhJb0xTMXFjQzF6ZFdOalpYTnpMV052Ykc5eU1TazdYRzU5WEc1Y2JpNXFkWEI1ZEdWeUxXSjFkSFJ2Ymk1dGIyUXRjM1ZqWTJWemN5NXRiMlF0WVdOMGFYWmxJSHRjYmlBZ0lDQmpiMnh2Y2pvZ2RtRnlLQzB0YW5BdGFXNTJaWEp6WlMxMWFTMW1iMjUwTFdOdmJHOXlNQ2s3WEc0Z0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dkbUZ5S0MwdGFuQXRjM1ZqWTJWemN5MWpiMnh2Y2pBcE8xeHVJSDFjYmx4dUxtcDFjSGwwWlhJdFluVjBkRzl1TG0xdlpDMXpkV05qWlhOek9tRmpkR2wyWlNCN1hHNGdJQ0FnWTI5c2IzSTZJSFpoY2lndExXcHdMV2x1ZG1WeWMyVXRkV2t0Wm05dWRDMWpiMnh2Y2pBcE8xeHVJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUhaaGNpZ3RMV3B3TFhOMVkyTmxjM010WTI5c2IzSXdLVHRjYmlCOVhHNWNiaUF2S2lCQ2RYUjBiMjRnWENKSmJtWnZYQ0lnVTNSNWJHbHVaeUFxTDF4dVhHNHVhblZ3ZVhSbGNpMWlkWFIwYjI0dWJXOWtMV2x1Wm04Z2UxeHVJQ0FnSUdOdmJHOXlPaUIyWVhJb0xTMXFjQzFwYm5abGNuTmxMWFZwTFdadmJuUXRZMjlzYjNJeEtUdGNiaUFnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCMllYSW9MUzFxY0MxcGJtWnZMV052Ykc5eU1TazdYRzU5WEc1Y2JpNXFkWEI1ZEdWeUxXSjFkSFJ2Ymk1dGIyUXRhVzVtYnk1dGIyUXRZV04wYVhabElIdGNiaUFnSUNCamIyeHZjam9nZG1GeUtDMHRhbkF0YVc1MlpYSnpaUzExYVMxbWIyNTBMV052Ykc5eU1DazdYRzRnSUNBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ2RtRnlLQzB0YW5BdGFXNW1ieTFqYjJ4dmNqQXBPMXh1ZlZ4dVhHNHVhblZ3ZVhSbGNpMWlkWFIwYjI0dWJXOWtMV2x1Wm04NllXTjBhWFpsSUh0Y2JpQWdJQ0JqYjJ4dmNqb2dkbUZ5S0MwdGFuQXRhVzUyWlhKelpTMTFhUzFtYjI1MExXTnZiRzl5TUNrN1hHNGdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nZG1GeUtDMHRhbkF0YVc1bWJ5MWpiMnh2Y2pBcE8xeHVmVnh1WEc0dktpQkNkWFIwYjI0Z1hDSlhZWEp1YVc1blhDSWdVM1I1YkdsdVp5QXFMMXh1WEc0dWFuVndlWFJsY2kxaWRYUjBiMjR1Ylc5a0xYZGhjbTVwYm1jZ2UxeHVJQ0FnSUdOdmJHOXlPaUIyWVhJb0xTMXFjQzFwYm5abGNuTmxMWFZwTFdadmJuUXRZMjlzYjNJeEtUdGNiaUFnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCMllYSW9MUzFxY0MxM1lYSnVMV052Ykc5eU1TazdYRzU5WEc1Y2JpNXFkWEI1ZEdWeUxXSjFkSFJ2Ymk1dGIyUXRkMkZ5Ym1sdVp5NXRiMlF0WVdOMGFYWmxJSHRjYmlBZ0lDQmpiMnh2Y2pvZ2RtRnlLQzB0YW5BdGFXNTJaWEp6WlMxMWFTMW1iMjUwTFdOdmJHOXlNQ2s3WEc0Z0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dkbUZ5S0MwdGFuQXRkMkZ5YmkxamIyeHZjakFwTzF4dWZWeHVYRzR1YW5Wd2VYUmxjaTFpZFhSMGIyNHViVzlrTFhkaGNtNXBibWM2WVdOMGFYWmxJSHRjYmlBZ0lDQmpiMnh2Y2pvZ2RtRnlLQzB0YW5BdGFXNTJaWEp6WlMxMWFTMW1iMjUwTFdOdmJHOXlNQ2s3WEc0Z0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dkbUZ5S0MwdGFuQXRkMkZ5YmkxamIyeHZjakFwTzF4dWZWeHVYRzR2S2lCQ2RYUjBiMjRnWENKRVlXNW5aWEpjSWlCVGRIbHNhVzVuSUNvdlhHNWNiaTVxZFhCNWRHVnlMV0oxZEhSdmJpNXRiMlF0WkdGdVoyVnlJSHRjYmlBZ0lDQmpiMnh2Y2pvZ2RtRnlLQzB0YW5BdGFXNTJaWEp6WlMxMWFTMW1iMjUwTFdOdmJHOXlNU2s3WEc0Z0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dkbUZ5S0MwdGFuQXRaWEp5YjNJdFkyOXNiM0l4S1R0Y2JuMWNibHh1TG1wMWNIbDBaWEl0WW5WMGRHOXVMbTF2WkMxa1lXNW5aWEl1Ylc5a0xXRmpkR2wyWlNCN1hHNGdJQ0FnWTI5c2IzSTZJSFpoY2lndExXcHdMV2x1ZG1WeWMyVXRkV2t0Wm05dWRDMWpiMnh2Y2pBcE8xeHVJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUhaaGNpZ3RMV3B3TFdWeWNtOXlMV052Ykc5eU1DazdYRzU5WEc1Y2JpNXFkWEI1ZEdWeUxXSjFkSFJ2Ymk1dGIyUXRaR0Z1WjJWeU9tRmpkR2wyWlNCN1hHNGdJQ0FnWTI5c2IzSTZJSFpoY2lndExXcHdMV2x1ZG1WeWMyVXRkV2t0Wm05dWRDMWpiMnh2Y2pBcE8xeHVJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUhaaGNpZ3RMV3B3TFdWeWNtOXlMV052Ykc5eU1DazdYRzU5WEc1Y2JpOHFJRmRwWkdkbGRDQkNkWFIwYjI0cUwxeHVYRzR1ZDJsa1oyVjBMV0oxZEhSdmJpd2dMbmRwWkdkbGRDMTBiMmRuYkdVdFluVjBkRzl1SUh0Y2JpQWdJQ0IzYVdSMGFEb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibXhwYm1VdGQybGtkR2d0YzJodmNuUXBPMXh1ZlZ4dVhHNHZLaUJYYVdSblpYUWdUR0ZpWld3Z1UzUjViR2x1WnlBcUwxeHVYRzR2S2lCUGRtVnljbWxrWlNCQ2IyOTBjM1J5WVhBZ2JHRmlaV3dnWTNOeklDb3ZYRzR1YW5Wd2VYUmxjaTEzYVdSblpYUnpJR3hoWW1Wc0lIdGNiaUFnSUNCdFlYSm5hVzR0WW05MGRHOXRPaUJwYm1sMGFXRnNPMXh1ZlZ4dVhHNHVkMmxrWjJWMExXeGhZbVZzTFdKaGMybGpJSHRjYmlBZ0lDQXZLaUJDWVhOcFl5Qk1ZV0psYkNBcUwxeHVJQ0FnSUdOdmJHOXlPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV3hoWW1Wc0xXTnZiRzl5S1R0Y2JpQWdJQ0JtYjI1MExYTnBlbVU2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10Wm05dWRDMXphWHBsS1R0Y2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh1SUNBZ0lIUmxlSFF0YjNabGNtWnNiM2M2SUdWc2JHbHdjMmx6TzF4dUlDQWdJSGRvYVhSbExYTndZV05sT2lCdWIzZHlZWEE3WEc0Z0lDQWdiR2x1WlMxb1pXbG5hSFE2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YVc1c2FXNWxMV2hsYVdkb2RDazdYRzU5WEc1Y2JpNTNhV1JuWlhRdGJHRmlaV3dnZTF4dUlDQWdJQzhxSUV4aFltVnNJQ292WEc0Z0lDQWdZMjlzYjNJNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGJHRmlaV3d0WTI5c2IzSXBPMXh1SUNBZ0lHWnZiblF0YzJsNlpUb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MW1iMjUwTFhOcGVtVXBPMXh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hHNGdJQ0FnZEdWNGRDMXZkbVZ5Wm14dmR6b2daV3hzYVhCemFYTTdYRzRnSUNBZ2QyaHBkR1V0YzNCaFkyVTZJRzV2ZDNKaGNEdGNiaUFnSUNCc2FXNWxMV2hsYVdkb2REb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibXhwYm1VdGFHVnBaMmgwS1R0Y2JuMWNibHh1TG5kcFpHZGxkQzFwYm14cGJtVXRhR0p2ZUNBdWQybGtaMlYwTFd4aFltVnNJSHRjYmlBZ0lDQXZLaUJJYjNKcGVtOXVkR0ZzSUZkcFpHZGxkQ0JNWVdKbGJDQXFMMXh1SUNBZ0lHTnZiRzl5T2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFd4aFltVnNMV052Ykc5eUtUdGNiaUFnSUNCMFpYaDBMV0ZzYVdkdU9pQnlhV2RvZER0Y2JpQWdJQ0J0WVhKbmFXNHRjbWxuYUhRNklHTmhiR01vSUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YVc1c2FXNWxMVzFoY21kcGJpa2dLaUF5SUNrN1hHNGdJQ0FnZDJsa2RHZzZJSFpoY2lndExXcHdMWGRwWkdkbGRITXRhVzVzYVc1bExXeGhZbVZzTFhkcFpIUm9LVHRjYmlBZ0lDQm1iR1Y0TFhOb2NtbHVhem9nTUR0Y2JuMWNibHh1TG5kcFpHZGxkQzFwYm14cGJtVXRkbUp2ZUNBdWQybGtaMlYwTFd4aFltVnNJSHRjYmlBZ0lDQXZLaUJXWlhKMGFXTmhiQ0JYYVdSblpYUWdUR0ZpWld3Z0tpOWNiaUFnSUNCamIyeHZjam9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFzWVdKbGJDMWpiMnh2Y2lrN1hHNGdJQ0FnZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5TzF4dUlDQWdJR3hwYm1VdGFHVnBaMmgwT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWJHbHVaUzFvWldsbmFIUXBPMXh1ZlZ4dVhHNHZLaUJYYVdSblpYUWdVbVZoWkc5MWRDQlRkSGxzYVc1bklDb3ZYRzVjYmk1M2FXUm5aWFF0Y21WaFpHOTFkQ0I3WEc0Z0lDQWdZMjlzYjNJNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGNtVmhaRzkxZEMxamIyeHZjaWs3WEc0Z0lDQWdabTl1ZEMxemFYcGxPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV1p2Ym5RdGMybDZaU2s3WEc0Z0lDQWdhR1ZwWjJoME9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHViR2x1WlMxb1pXbG5hSFFwTzF4dUlDQWdJR3hwYm1VdGFHVnBaMmgwT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWJHbHVaUzFvWldsbmFIUXBPMXh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hHNGdJQ0FnZDJocGRHVXRjM0JoWTJVNklHNXZkM0poY0R0Y2JpQWdJQ0IwWlhoMExXRnNhV2R1T2lCalpXNTBaWEk3WEc1OVhHNWNiaTUzYVdSblpYUXRjbVZoWkc5MWRDNXZkbVZ5Wm14dmR5QjdYRzRnSUNBZ0x5b2dUM1psY21ac2IzZHBibWNnVW1WaFpHOTFkQ0FxTDF4dVhHNGdJQ0FnTHlvZ1JuSnZiU0JOWVhSbGNtbGhiQ0JFWlhOcFoyNGdUR2wwWlZ4dUlDQWdJQ0FnSUNCemFHRmtiM2N0YTJWNUxYVnRZbkpoTFc5d1lXTnBkSGs2SURBdU1qdGNiaUFnSUNBZ0lDQWdjMmhoWkc5M0xXdGxlUzF3Wlc1MWJXSnlZUzF2Y0dGamFYUjVPaUF3TGpFME8xeHVJQ0FnSUNBZ0lDQnphR0ZrYjNjdFlXMWlhV1Z1ZEMxemFHRmtiM2N0YjNCaFkybDBlVG9nTUM0eE1qdGNiaUFnSUNBZ0tpOWNiaUFnSUNBdGQyVmlhMmwwTFdKdmVDMXphR0ZrYjNjNklEQWdNbkI0SURKd2VDQXdJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNHlLU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJREFnTTNCNElERndlQ0F0TW5CNElISm5ZbUVvTUN3Z01Dd2dNQ3dnTUM0eE5Da3NYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXdJREZ3ZUNBMWNIZ2dNQ0J5WjJKaEtEQXNJREFzSURBc0lEQXVNVElwTzF4dVhHNGdJQ0FnTFcxdmVpMWliM2d0YzJoaFpHOTNPaUF3SURKd2VDQXljSGdnTUNCeVoySmhLREFzSURBc0lEQXNJREF1TWlrc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F3SUROd2VDQXhjSGdnTFRKd2VDQnlaMkpoS0RBc0lEQXNJREFzSURBdU1UUXBMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ01DQXhjSGdnTlhCNElEQWdjbWRpWVNnd0xDQXdMQ0F3TENBd0xqRXlLVHRjYmx4dUlDQWdJR0p2ZUMxemFHRmtiM2M2SURBZ01uQjRJREp3ZUNBd0lISm5ZbUVvTUN3Z01Dd2dNQ3dnTUM0eUtTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXdJRE53ZUNBeGNIZ2dMVEp3ZUNCeVoySmhLREFzSURBc0lEQXNJREF1TVRRcExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEQWdNWEI0SURWd2VDQXdJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNHhNaWs3WEc1OVhHNWNiaTUzYVdSblpYUXRhVzVzYVc1bExXaGliM2dnTG5kcFpHZGxkQzF5WldGa2IzVjBJSHRjYmlBZ0lDQXZLaUJJYjNKcGVtOXVkR0ZzSUZKbFlXUnZkWFFnS2k5Y2JpQWdJQ0IwWlhoMExXRnNhV2R1T2lCalpXNTBaWEk3WEc0Z0lDQWdiV0Y0TFhkcFpIUm9PaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1YkdsdVpTMTNhV1IwYUMxemFHOXlkQ2s3WEc0Z0lDQWdiV2x1TFhkcFpIUm9PaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1YkdsdVpTMTNhV1IwYUMxMGFXNTVLVHRjYmlBZ0lDQnRZWEpuYVc0dGJHVm1kRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm14cGJtVXRiV0Z5WjJsdUtUdGNibjFjYmx4dUxuZHBaR2RsZEMxcGJteHBibVV0ZG1KdmVDQXVkMmxrWjJWMExYSmxZV1J2ZFhRZ2UxeHVJQ0FnSUM4cUlGWmxjblJwWTJGc0lGSmxZV1J2ZFhRZ0tpOWNiaUFnSUNCdFlYSm5hVzR0ZEc5d09pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHViR2x1WlMxdFlYSm5hVzRwTzF4dUlDQWdJQzhxSUdGeklIZHBaR1VnWVhNZ2RHaGxJSGRwWkdkbGRDQXFMMXh1SUNBZ0lIZHBaSFJvT2lCcGJtaGxjbWwwTzF4dWZWeHVYRzR2S2lCWGFXUm5aWFFnUTJobFkydGliM2dnVTNSNWJHbHVaeUFxTDF4dVhHNHVkMmxrWjJWMExXTm9aV05yWW05NElIdGNiaUFnSUNCM2FXUjBhRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm14cGJtVXRkMmxrZEdncE8xeHVJQ0FnSUdobGFXZG9kRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm14cGJtVXRhR1ZwWjJoMEtUdGNiaUFnSUNCc2FXNWxMV2hsYVdkb2REb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibXhwYm1VdGFHVnBaMmgwS1R0Y2JuMWNibHh1TG5kcFpHZGxkQzFqYUdWamEySnZlQ0JwYm5CMWRGdDBlWEJsUFZ3aVkyaGxZMnRpYjNoY0lsMGdlMXh1SUNBZ0lHMWhjbWRwYmpvZ01IQjRJR05oYkdNb0lIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGFXNXNhVzVsTFcxaGNtZHBiaWtnS2lBeUlDa2dNSEI0SURCd2VEdGNiaUFnSUNCc2FXNWxMV2hsYVdkb2REb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibXhwYm1VdGFHVnBaMmgwS1R0Y2JpQWdJQ0JtYjI1MExYTnBlbVU2SUd4aGNtZGxPMXh1SUNBZ0lHWnNaWGd0WjNKdmR6b2dNVHRjYmlBZ0lDQm1iR1Y0TFhOb2NtbHVhem9nTUR0Y2JpQWdJQ0JoYkdsbmJpMXpaV3htT2lCalpXNTBaWEk3WEc1OVhHNWNiaThxSUZkcFpHZGxkQ0JXWVd4cFpDQlRkSGxzYVc1bklDb3ZYRzVjYmk1M2FXUm5aWFF0ZG1Gc2FXUWdlMXh1SUNBZ0lHaGxhV2RvZERvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxcGJteHBibVV0YUdWcFoyaDBLVHRjYmlBZ0lDQnNhVzVsTFdobGFXZG9kRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm14cGJtVXRhR1ZwWjJoMEtUdGNiaUFnSUNCM2FXUjBhRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm14cGJtVXRkMmxrZEdndGMyaHZjblFwTzF4dUlDQWdJR1p2Ym5RdGMybDZaVG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFtYjI1MExYTnBlbVVwTzF4dWZWeHVYRzR1ZDJsa1oyVjBMWFpoYkdsa0lHazZZbVZtYjNKbElIdGNiaUFnSUNCc2FXNWxMV2hsYVdkb2REb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibXhwYm1VdGFHVnBaMmgwS1R0Y2JpQWdJQ0J0WVhKbmFXNHRjbWxuYUhRNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGFXNXNhVzVsTFcxaGNtZHBiaWs3WEc0Z0lDQWdiV0Z5WjJsdUxXeGxablE2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YVc1c2FXNWxMVzFoY21kcGJpazdYRzVjYmlBZ0lDQXZLaUJtY205dElIUm9aU0JtWVNCamJHRnpjeUJwYmlCR2IyNTBRWGRsYzI5dFpUb2dhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMFp2Y25SQmQyVnpiMjFsTDBadmJuUXRRWGRsYzI5dFpTOWliRzlpTHpRNU1UQXdZemRqTTJFM1lqVTRaRFV3WW1GaE56RmxabVZtTVRGaFpqUXhZVFkyWWpBelpETXZZM056TDJadmJuUXRZWGRsYzI5dFpTNWpjM01qVERFMElDb3ZYRzRnSUNBZ1pHbHpjR3hoZVRvZ2FXNXNhVzVsTFdKc2IyTnJPMXh1SUNBZ0lHWnZiblE2SUc1dmNtMWhiQ0J1YjNKdFlXd2dibTl5YldGc0lERTBjSGd2TVNCR2IyNTBRWGRsYzI5dFpUdGNiaUFnSUNCbWIyNTBMWE5wZW1VNklHbHVhR1Z5YVhRN1hHNGdJQ0FnZEdWNGRDMXlaVzVrWlhKcGJtYzZJR0YxZEc4N1hHNGdJQ0FnTFhkbFltdHBkQzFtYjI1MExYTnRiMjkwYUdsdVp6b2dZVzUwYVdGc2FXRnpaV1E3WEc0Z0lDQWdMVzF2ZWkxdmMzZ3RabTl1ZEMxemJXOXZkR2hwYm1jNklHZHlZWGx6WTJGc1pUdGNibjFjYmx4dUxuZHBaR2RsZEMxMllXeHBaQzV0YjJRdGRtRnNhV1FnYVRwaVpXWnZjbVVnZTF4dUlDQWdJR052Ym5SbGJuUTZJRndpWEZ4bU1EQmpYQ0k3WEc0Z0lDQWdZMjlzYjNJNklHZHlaV1Z1TzF4dWZWeHVYRzR1ZDJsa1oyVjBMWFpoYkdsa0xtMXZaQzFwYm5aaGJHbGtJR2s2WW1WbWIzSmxJSHRjYmlBZ0lDQmpiMjUwWlc1ME9pQmNJbHhjWmpBd1pGd2lPMXh1SUNBZ0lHTnZiRzl5T2lCeVpXUTdYRzU5WEc1Y2JpNTNhV1JuWlhRdGRtRnNhV1F1Ylc5a0xYWmhiR2xrSUM1M2FXUm5aWFF0ZG1Gc2FXUXRjbVZoWkc5MWRDQjdYRzRnSUNBZ1pHbHpjR3hoZVRvZ2JtOXVaVHRjYm4xY2JseHVMeW9nVjJsa1oyVjBJRlJsZUhRZ1lXNWtJRlJsZUhSQmNtVmhJRk4wZVdsdVp5QXFMMXh1WEc0dWQybGtaMlYwTFhSbGVIUmhjbVZoTENBdWQybGtaMlYwTFhSbGVIUWdlMXh1SUNBZ0lIZHBaSFJvT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWJHbHVaUzEzYVdSMGFDazdYRzU5WEc1Y2JpNTNhV1JuWlhRdGRHVjRkQ0JwYm5CMWRGdDBlWEJsUFZ3aWRHVjRkRndpWFN3Z0xuZHBaR2RsZEMxMFpYaDBJR2x1Y0hWMFczUjVjR1U5WENKdWRXMWlaWEpjSWwxN1hHNGdJQ0FnYUdWcFoyaDBPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1YkdsdVpTMW9aV2xuYUhRcE8xeHVJQ0FnSUd4cGJtVXRhR1ZwWjJoME9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHViR2x1WlMxb1pXbG5hSFFwTzF4dWZWeHVYRzR1ZDJsa1oyVjBMWFJsZUhRZ2FXNXdkWFJiZEhsd1pUMWNJblJsZUhSY0lsMDZaR2x6WVdKc1pXUXNJQzUzYVdSblpYUXRkR1Y0ZENCcGJuQjFkRnQwZVhCbFBWd2liblZ0WW1WeVhDSmRPbVJwYzJGaWJHVmtMQ0F1ZDJsa1oyVjBMWFJsZUhSaGNtVmhJSFJsZUhSaGNtVmhPbVJwYzJGaWJHVmtJSHRjYmlBZ0lDQnZjR0ZqYVhSNU9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXUnBjMkZpYkdWa0xXOXdZV05wZEhrcE8xeHVmVnh1WEc0dWQybGtaMlYwTFhSbGVIUWdhVzV3ZFhSYmRIbHdaVDFjSW5SbGVIUmNJbDBzSUM1M2FXUm5aWFF0ZEdWNGRDQnBibkIxZEZ0MGVYQmxQVndpYm5WdFltVnlYQ0pkTENBdWQybGtaMlYwTFhSbGVIUmhjbVZoSUhSbGVIUmhjbVZoSUh0Y2JpQWdJQ0JpYjNndGMybDZhVzVuT2lCaWIzSmtaWEl0WW05NE8xeHVJQ0FnSUdKdmNtUmxjam9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm5CMWRDMWliM0prWlhJdGQybGtkR2dwSUhOdmJHbGtJSFpoY2lndExXcHdMWGRwWkdkbGRITXRhVzV3ZFhRdFltOXlaR1Z5TFdOdmJHOXlLVHRjYmlBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHVjSFYwTFdKaFkydG5jbTkxYm1RdFkyOXNiM0lwTzF4dUlDQWdJR052Ykc5eU9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHVjSFYwTFdOdmJHOXlLVHRjYmlBZ0lDQm1iMjUwTFhOcGVtVTZJSFpoY2lndExXcHdMWGRwWkdkbGRITXRabTl1ZEMxemFYcGxLVHRjYmlBZ0lDQndZV1JrYVc1bk9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHVjSFYwTFhCaFpHUnBibWNwSUdOaGJHTW9JSFpoY2lndExXcHdMWGRwWkdkbGRITXRhVzV3ZFhRdGNHRmtaR2x1WnlrZ0tpQWdNaUFwTzF4dUlDQWdJR1pzWlhndFozSnZkem9nTVR0Y2JpQWdJQ0J0YVc0dGQybGtkR2c2SURBN0lDOHFJRlJvYVhNZ2JXRnJaWE1nYVhRZ2NHOXpjMmxpYkdVZ1ptOXlJSFJvWlNCbWJHVjRZbTk0SUhSdklITm9jbWx1YXlCMGFHbHpJR2x1Y0hWMElDb3ZYRzRnSUNBZ1pteGxlQzF6YUhKcGJtczZJREU3WEc0Z0lDQWdiM1YwYkdsdVpUb2dibTl1WlNBaGFXMXdiM0owWVc1ME8xeHVmVnh1WEc0dWQybGtaMlYwTFhSbGVIUmhjbVZoSUhSbGVIUmhjbVZoSUh0Y2JpQWdJQ0JvWldsbmFIUTZJR2x1YUdWeWFYUTdYRzRnSUNBZ2QybGtkR2c2SUdsdWFHVnlhWFE3WEc1OVhHNWNiaTUzYVdSblpYUXRkR1Y0ZENCcGJuQjFkRHBtYjJOMWN5d2dMbmRwWkdkbGRDMTBaWGgwWVhKbFlTQjBaWGgwWVhKbFlUcG1iMk4xY3lCN1hHNGdJQ0FnWW05eVpHVnlMV052Ykc5eU9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHVjSFYwTFdadlkzVnpMV0p2Y21SbGNpMWpiMnh2Y2lrN1hHNTlYRzVjYmk4cUlGZHBaR2RsZENCVGJHbGtaWElnS2k5Y2JseHVMbmRwWkdkbGRDMXpiR2xrWlhJZ0xuVnBMWE5zYVdSbGNpQjdYRzRnSUNBZ0x5b2dVMnhwWkdWeUlGUnlZV05ySUNvdlhHNGdJQ0FnWW05eVpHVnlPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMWE5zYVdSbGNpMWliM0prWlhJdGQybGtkR2dwSUhOdmJHbGtJSFpoY2lndExXcHdMV3hoZVc5MWRDMWpiMnh2Y2pNcE8xeHVJQ0FnSUdKaFkydG5jbTkxYm1RNklIWmhjaWd0TFdwd0xXeGhlVzkxZEMxamIyeHZjak1wTzF4dUlDQWdJR0p2ZUMxemFYcHBibWM2SUdKdmNtUmxjaTFpYjNnN1hHNGdJQ0FnY0c5emFYUnBiMjQ2SUhKbGJHRjBhWFpsTzF4dUlDQWdJR0p2Y21SbGNpMXlZV1JwZFhNNklEQndlRHRjYm4xY2JseHVMbmRwWkdkbGRDMXpiR2xrWlhJZ0xuVnBMWE5zYVdSbGNpQXVkV2t0YzJ4cFpHVnlMV2hoYm1Sc1pTQjdYRzRnSUNBZ0x5b2dVMnhwWkdWeUlFaGhibVJzWlNBcUwxeHVJQ0FnSUc5MWRHeHBibVU2SUc1dmJtVWdJV2x0Y0c5eWRHRnVkRHNnTHlvZ1ptOWpkWE5sWkNCemJHbGtaWElnYUdGdVpHeGxjeUJoY21VZ1kyOXNiM0psWkNBdElITmxaU0JpWld4dmR5QXFMMXh1SUNBZ0lIQnZjMmwwYVc5dU9pQmhZbk52YkhWMFpUdGNiaUFnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFhOc2FXUmxjaTFvWVc1a2JHVXRZbUZqYTJkeWIzVnVaQzFqYjJ4dmNpazdYRzRnSUNBZ1ltOXlaR1Z5T2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFhOc2FXUmxjaTFpYjNKa1pYSXRkMmxrZEdncElITnZiR2xrSUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YzJ4cFpHVnlMV2hoYm1Sc1pTMWliM0prWlhJdFkyOXNiM0lwTzF4dUlDQWdJR0p2ZUMxemFYcHBibWM2SUdKdmNtUmxjaTFpYjNnN1hHNGdJQ0FnZWkxcGJtUmxlRG9nTVR0Y2JpQWdJQ0JpWVdOclozSnZkVzVrTFdsdFlXZGxPaUJ1YjI1bE95QXZLaUJQZG1WeWNtbGtaU0JxY1hWbGNua3RkV2tnS2k5Y2JuMWNibHh1THlvZ1QzWmxjbkpwWkdVZ2FuRjFaWEo1TFhWcElDb3ZYRzR1ZDJsa1oyVjBMWE5zYVdSbGNpQXVkV2t0YzJ4cFpHVnlJQzUxYVMxemJHbGtaWEl0YUdGdVpHeGxPbWh2ZG1WeUxDQXVkMmxrWjJWMExYTnNhV1JsY2lBdWRXa3RjMnhwWkdWeUlDNTFhUzF6Ykdsa1pYSXRhR0Z1Wkd4bE9tWnZZM1Z6SUh0Y2JpQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMWE5zYVdSbGNpMWhZM1JwZG1VdGFHRnVaR3hsTFdOdmJHOXlLVHRjYmlBZ0lDQmliM0prWlhJNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGMyeHBaR1Z5TFdKdmNtUmxjaTEzYVdSMGFDa2djMjlzYVdRZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxemJHbGtaWEl0WVdOMGFYWmxMV2hoYm1Sc1pTMWpiMnh2Y2lrN1hHNTlYRzVjYmk1M2FXUm5aWFF0YzJ4cFpHVnlJQzUxYVMxemJHbGtaWElnTG5WcExYTnNhV1JsY2kxb1lXNWtiR1U2WVdOMGFYWmxJSHRjYmlBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxYTnNhV1JsY2kxaFkzUnBkbVV0YUdGdVpHeGxMV052Ykc5eUtUdGNiaUFnSUNCaWIzSmtaWEl0WTI5c2IzSTZJSFpoY2lndExXcHdMWGRwWkdkbGRITXRjMnhwWkdWeUxXRmpkR2wyWlMxb1lXNWtiR1V0WTI5c2IzSXBPMXh1SUNBZ0lIb3RhVzVrWlhnNklESTdYRzRnSUNBZ2RISmhibk5tYjNKdE9pQnpZMkZzWlNneExqSXBPMXh1ZlZ4dVhHNHVkMmxrWjJWMExYTnNhV1JsY2lBZ0xuVnBMWE5zYVdSbGNpQXVkV2t0YzJ4cFpHVnlMWEpoYm1kbElIdGNiaUFnSUNBdktpQkpiblJsY25aaGJDQmlaWFIzWldWdUlIUm9aU0IwZDI4Z2MzQmxZMmxtYVdWa0lIWmhiSFZsSUc5bUlHRWdaRzkxWW14bElITnNhV1JsY2lBcUwxeHVJQ0FnSUhCdmMybDBhVzl1T2lCaFluTnZiSFYwWlR0Y2JpQWdJQ0JpWVdOclozSnZkVzVrT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFhOc2FXUmxjaTFoWTNScGRtVXRhR0Z1Wkd4bExXTnZiRzl5S1R0Y2JpQWdJQ0I2TFdsdVpHVjRPaUF3TzF4dWZWeHVYRzR2S2lCVGFHRndaWE1nYjJZZ1UyeHBaR1Z5SUVoaGJtUnNaWE1nS2k5Y2JseHVMbmRwWkdkbGRDMW9jMnhwWkdWeUlDNTFhUzF6Ykdsa1pYSWdMblZwTFhOc2FXUmxjaTFvWVc1a2JHVWdlMXh1SUNBZ0lIZHBaSFJvT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFhOc2FXUmxjaTFvWVc1a2JHVXRjMmw2WlNrN1hHNGdJQ0FnYUdWcFoyaDBPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMWE5zYVdSbGNpMW9ZVzVrYkdVdGMybDZaU2s3WEc0Z0lDQWdiV0Z5WjJsdUxYUnZjRG9nWTJGc1l5Z29kbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXpiR2xrWlhJdGRISmhZMnN0ZEdocFkydHVaWE56S1NBdElIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGMyeHBaR1Z5TFdoaGJtUnNaUzF6YVhwbEtTa2dMeUF5SUMwZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxemJHbGtaWEl0WW05eVpHVnlMWGRwWkhSb0tTazdYRzRnSUNBZ2JXRnlaMmx1TFd4bFpuUTZJR05oYkdNb2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxemJHbGtaWEl0YUdGdVpHeGxMWE5wZW1VcElDOGdMVElnS3lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFhOc2FXUmxjaTFpYjNKa1pYSXRkMmxrZEdncEtUdGNiaUFnSUNCaWIzSmtaWEl0Y21Ga2FYVnpPaUExTUNVN1hHNGdJQ0FnZEc5d09pQXdPMXh1ZlZ4dVhHNHVkMmxrWjJWMExYWnpiR2xrWlhJZ0xuVnBMWE5zYVdSbGNpQXVkV2t0YzJ4cFpHVnlMV2hoYm1Sc1pTQjdYRzRnSUNBZ2QybGtkR2c2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YzJ4cFpHVnlMV2hoYm1Sc1pTMXphWHBsS1R0Y2JpQWdJQ0JvWldsbmFIUTZJSFpoY2lndExXcHdMWGRwWkdkbGRITXRjMnhwWkdWeUxXaGhibVJzWlMxemFYcGxLVHRjYmlBZ0lDQnRZWEpuYVc0dFltOTBkRzl0T2lCallXeGpLSFpoY2lndExXcHdMWGRwWkdkbGRITXRjMnhwWkdWeUxXaGhibVJzWlMxemFYcGxLU0F2SUMweUlDc2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXpiR2xrWlhJdFltOXlaR1Z5TFhkcFpIUm9LU2s3WEc0Z0lDQWdiV0Z5WjJsdUxXeGxablE2SUdOaGJHTW9LSFpoY2lndExXcHdMWGRwWkdkbGRITXRjMnhwWkdWeUxYUnlZV05yTFhSb2FXTnJibVZ6Y3lrZ0xTQjJZWElvTFMxcWNDMTNhV1JuWlhSekxYTnNhV1JsY2kxb1lXNWtiR1V0YzJsNlpTa3BJQzhnTWlBdElIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGMyeHBaR1Z5TFdKdmNtUmxjaTEzYVdSMGFDa3BPMXh1SUNBZ0lHSnZjbVJsY2kxeVlXUnBkWE02SURVd0pUdGNiaUFnSUNCc1pXWjBPaUF3TzF4dWZWeHVYRzR1ZDJsa1oyVjBMV2h6Ykdsa1pYSWdMblZwTFhOc2FXUmxjaUF1ZFdrdGMyeHBaR1Z5TFhKaGJtZGxJSHRjYmlBZ0lDQm9aV2xuYUhRNklHTmhiR01vSUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YzJ4cFpHVnlMWFJ5WVdOckxYUm9hV05yYm1WemN5a2dLaUF5SUNrN1hHNGdJQ0FnYldGeVoybHVMWFJ2Y0RvZ1kyRnNZeWdvZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTF6Ykdsa1pYSXRkSEpoWTJzdGRHaHBZMnR1WlhOektTQXRJSFpoY2lndExXcHdMWGRwWkdkbGRITXRjMnhwWkdWeUxYUnlZV05yTFhSb2FXTnJibVZ6Y3lrZ0tpQXlJQ2tnTHlBeUlDMGdkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXpiR2xrWlhJdFltOXlaR1Z5TFhkcFpIUm9LU2s3WEc1OVhHNWNiaTUzYVdSblpYUXRkbk5zYVdSbGNpQXVkV2t0YzJ4cFpHVnlJQzUxYVMxemJHbGtaWEl0Y21GdVoyVWdlMXh1SUNBZ0lIZHBaSFJvT2lCallXeGpLQ0IyWVhJb0xTMXFjQzEzYVdSblpYUnpMWE5zYVdSbGNpMTBjbUZqYXkxMGFHbGphMjVsYzNNcElDb2dNaUFwTzF4dUlDQWdJRzFoY21kcGJpMXNaV1owT2lCallXeGpLQ2gyWVhJb0xTMXFjQzEzYVdSblpYUnpMWE5zYVdSbGNpMTBjbUZqYXkxMGFHbGphMjVsYzNNcElDMGdkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXpiR2xrWlhJdGRISmhZMnN0ZEdocFkydHVaWE56S1NBcUlESWdLU0F2SURJZ0xTQjJZWElvTFMxcWNDMTNhV1JuWlhSekxYTnNhV1JsY2kxaWIzSmtaWEl0ZDJsa2RHZ3BLVHRjYm4xY2JseHVMeW9nU0c5eWFYcHZiblJoYkNCVGJHbGtaWElnS2k5Y2JseHVMbmRwWkdkbGRDMW9jMnhwWkdWeUlIdGNiaUFnSUNCM2FXUjBhRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm14cGJtVXRkMmxrZEdncE8xeHVJQ0FnSUdobGFXZG9kRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm14cGJtVXRhR1ZwWjJoMEtUdGNiaUFnSUNCc2FXNWxMV2hsYVdkb2REb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibXhwYm1VdGFHVnBaMmgwS1R0Y2JseHVJQ0FnSUM4cUlFOTJaWEp5YVdSbElIUm9aU0JoYkdsbmJpMXBkR1Z0Y3lCaVlYTmxiR2x1WlM0Z1ZHaHBjeUIzWVhrc0lIUm9aU0JrWlhOamNtbHdkR2x2YmlCaGJtUWdjbVZoWkc5MWRGeHVJQ0FnSUhOMGFXeHNJSE5sWlcwZ2RHOGdZV3hwWjI0Z2RHaGxhWElnWW1GelpXeHBibVVnY0hKdmNHVnliSGtzSUdGdVpDQjNaU0JrYjI0bmRDQm9ZWFpsSUhSdklHaGhkbVZjYmlBZ0lDQmhiR2xuYmkxelpXeG1PaUJ6ZEhKbGRHTm9JR2x1SUhSb1pTQXVjMnhwWkdWeUxXTnZiblJoYVc1bGNpNGdLaTljYmlBZ0lDQmhiR2xuYmkxcGRHVnRjem9nWTJWdWRHVnlPMXh1ZlZ4dVhHNHVkMmxrWjJWMGN5MXpiR2xrWlhJZ0xuTnNhV1JsY2kxamIyNTBZV2x1WlhJZ2UxeHVJQ0FnSUc5MlpYSm1iRzkzT2lCMmFYTnBZbXhsTzF4dWZWeHVYRzR1ZDJsa1oyVjBMV2h6Ykdsa1pYSWdMbk5zYVdSbGNpMWpiMjUwWVdsdVpYSWdlMXh1SUNBZ0lHaGxhV2RvZERvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxcGJteHBibVV0YUdWcFoyaDBLVHRjYmlBZ0lDQnRZWEpuYVc0dGJHVm1kRG9nWTJGc1l5aDJZWElvTFMxcWNDMTNhV1JuWlhSekxYTnNhV1JsY2kxb1lXNWtiR1V0YzJsNlpTa2dMeUF5SUMwZ01pQXFJSFpoY2lndExXcHdMWGRwWkdkbGRITXRjMnhwWkdWeUxXSnZjbVJsY2kxM2FXUjBhQ2twTzF4dUlDQWdJRzFoY21kcGJpMXlhV2RvZERvZ1kyRnNZeWgyWVhJb0xTMXFjQzEzYVdSblpYUnpMWE5zYVdSbGNpMW9ZVzVrYkdVdGMybDZaU2tnTHlBeUlDMGdNaUFxSUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YzJ4cFpHVnlMV0p2Y21SbGNpMTNhV1IwYUNrcE8xeHVJQ0FnSUdac1pYZzZJREVnTVNCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWJHbHVaUzEzYVdSMGFDMXphRzl5ZENrN1hHNTlYRzVjYmk1M2FXUm5aWFF0YUhOc2FXUmxjaUF1ZFdrdGMyeHBaR1Z5SUh0Y2JpQWdJQ0F2S2lCSmJtNWxjaXdnYVc1MmFYTnBZbXhsSUhOc2FXUmxJR1JwZGlBcUwxeHVJQ0FnSUdobGFXZG9kRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTF6Ykdsa1pYSXRkSEpoWTJzdGRHaHBZMnR1WlhOektUdGNiaUFnSUNCdFlYSm5hVzR0ZEc5d09pQmpZV3hqS0NoMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWJHbHVaUzFvWldsbmFIUXBJQzBnZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTF6Ykdsa1pYSXRkSEpoWTJzdGRHaHBZMnR1WlhOektTa2dMeUF5S1R0Y2JpQWdJQ0IzYVdSMGFEb2dNVEF3SlR0Y2JuMWNibHh1THlvZ1ZtVnlkR2xqWVd3Z1UyeHBaR1Z5SUNvdlhHNWNiaTUzYVdSblpYUXRkbUp2ZUNBdWQybGtaMlYwTFd4aFltVnNJSHRjYmlBZ0lDQm9aV2xuYUhRNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGFXNXNhVzVsTFdobGFXZG9kQ2s3WEc0Z0lDQWdiR2x1WlMxb1pXbG5hSFE2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YVc1c2FXNWxMV2hsYVdkb2RDazdYRzU5WEc1Y2JpNTNhV1JuWlhRdGRuTnNhV1JsY2lCN1hHNGdJQ0FnTHlvZ1ZtVnlkR2xqWVd3Z1UyeHBaR1Z5SUNvdlhHNGdJQ0FnYUdWcFoyaDBPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMWFpsY25ScFkyRnNMV2hsYVdkb2RDazdYRzRnSUNBZ2QybGtkR2c2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YVc1c2FXNWxMWGRwWkhSb0xYUnBibmtwTzF4dWZWeHVYRzR1ZDJsa1oyVjBMWFp6Ykdsa1pYSWdMbk5zYVdSbGNpMWpiMjUwWVdsdVpYSWdlMXh1SUNBZ0lHWnNaWGc2SURFZ01TQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHViR2x1WlMxM2FXUjBhQzF6YUc5eWRDazdYRzRnSUNBZ2JXRnlaMmx1TFd4bFpuUTZJR0YxZEc4N1hHNGdJQ0FnYldGeVoybHVMWEpwWjJoME9pQmhkWFJ2TzF4dUlDQWdJRzFoY21kcGJpMWliM1IwYjIwNklHTmhiR01vZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTF6Ykdsa1pYSXRhR0Z1Wkd4bExYTnBlbVVwSUM4Z01pQXRJRElnS2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFhOc2FXUmxjaTFpYjNKa1pYSXRkMmxrZEdncEtUdGNiaUFnSUNCdFlYSm5hVzR0ZEc5d09pQmpZV3hqS0haaGNpZ3RMV3B3TFhkcFpHZGxkSE10YzJ4cFpHVnlMV2hoYm1Sc1pTMXphWHBsS1NBdklESWdMU0F5SUNvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxemJHbGtaWEl0WW05eVpHVnlMWGRwWkhSb0tTazdYRzRnSUNBZ1pHbHpjR3hoZVRvZ1pteGxlRHRjYmlBZ0lDQm1iR1Y0TFdScGNtVmpkR2x2YmpvZ1kyOXNkVzF1TzF4dWZWeHVYRzR1ZDJsa1oyVjBMWFp6Ykdsa1pYSWdMblZwTFhOc2FXUmxjaTEyWlhKMGFXTmhiQ0I3WEc0Z0lDQWdMeW9nU1c1dVpYSXNJR2x1ZG1semFXSnNaU0J6Ykdsa1pTQmthWFlnS2k5Y2JpQWdJQ0IzYVdSMGFEb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXpiR2xrWlhJdGRISmhZMnN0ZEdocFkydHVaWE56S1R0Y2JpQWdJQ0JtYkdWNExXZHliM2M2SURFN1hHNGdJQ0FnYldGeVoybHVMV3hsWm5RNklHRjFkRzg3WEc0Z0lDQWdiV0Z5WjJsdUxYSnBaMmgwT2lCaGRYUnZPMXh1ZlZ4dVhHNHZLaUJYYVdSblpYUWdVSEp2WjNKbGMzTWdVM1I1YkdsdVp5QXFMMXh1WEc0dWNISnZaM0psYzNNdFltRnlJSHRjYmlBZ0lDQXRkMlZpYTJsMExYUnlZVzV6YVhScGIyNDZJRzV2Ym1VN1hHNGdJQ0FnTFcxdmVpMTBjbUZ1YzJsMGFXOXVPaUJ1YjI1bE8xeHVJQ0FnSUMxdGN5MTBjbUZ1YzJsMGFXOXVPaUJ1YjI1bE8xeHVJQ0FnSUMxdkxYUnlZVzV6YVhScGIyNDZJRzV2Ym1VN1hHNGdJQ0FnZEhKaGJuTnBkR2x2YmpvZ2JtOXVaVHRjYm4xY2JseHVMbkJ5YjJkeVpYTnpMV0poY2lCN1hHNGdJQ0FnYUdWcFoyaDBPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1YkdsdVpTMW9aV2xuYUhRcE8xeHVmVnh1WEc0dWNISnZaM0psYzNNdFltRnlJSHRjYmlBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQjJZWElvTFMxcWNDMWljbUZ1WkMxamIyeHZjakVwTzF4dWZWeHVYRzR1Y0hKdlozSmxjM010WW1GeUxYTjFZMk5sYzNNZ2UxeHVJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUhaaGNpZ3RMV3B3TFhOMVkyTmxjM010WTI5c2IzSXhLVHRjYm4xY2JseHVMbkJ5YjJkeVpYTnpMV0poY2kxcGJtWnZJSHRjYmlBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQjJZWElvTFMxcWNDMXBibVp2TFdOdmJHOXlNU2s3WEc1OVhHNWNiaTV3Y205bmNtVnpjeTFpWVhJdGQyRnlibWx1WnlCN1hHNGdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nZG1GeUtDMHRhbkF0ZDJGeWJpMWpiMnh2Y2pFcE8xeHVmVnh1WEc0dWNISnZaM0psYzNNdFltRnlMV1JoYm1kbGNpQjdYRzRnSUNBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ2RtRnlLQzB0YW5BdFpYSnliM0l0WTI5c2IzSXhLVHRjYm4xY2JseHVMbkJ5YjJkeVpYTnpJSHRjYmlBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQjJZWElvTFMxcWNDMXNZWGx2ZFhRdFkyOXNiM0l5S1R0Y2JpQWdJQ0JpYjNKa1pYSTZJRzV2Ym1VN1hHNGdJQ0FnWW05NExYTm9ZV1J2ZHpvZ2JtOXVaVHRjYm4xY2JseHVMeW9nU0c5eWFYTnZiblJoYkNCUWNtOW5jbVZ6Y3lBcUwxeHVYRzR1ZDJsa1oyVjBMV2h3Y205bmNtVnpjeUI3WEc0Z0lDQWdMeW9nVUhKdlozSmxjM01nUW1GeUlDb3ZYRzRnSUNBZ2FHVnBaMmgwT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWJHbHVaUzFvWldsbmFIUXBPMXh1SUNBZ0lHeHBibVV0YUdWcFoyaDBPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1YkdsdVpTMW9aV2xuYUhRcE8xeHVJQ0FnSUhkcFpIUm9PaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1YkdsdVpTMTNhV1IwYUNrN1hHNGdJQ0FnWVd4cFoyNHRhWFJsYlhNNklHTmxiblJsY2p0Y2JseHVmVnh1WEc0dWQybGtaMlYwTFdod2NtOW5jbVZ6Y3lBdWNISnZaM0psYzNNZ2UxeHVJQ0FnSUdac1pYZ3RaM0p2ZHpvZ01UdGNiaUFnSUNCdFlYSm5hVzR0ZEc5d09pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHVjSFYwTFhCaFpHUnBibWNwTzF4dUlDQWdJRzFoY21kcGJpMWliM1IwYjIwNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGFXNXdkWFF0Y0dGa1pHbHVaeWs3WEc0Z0lDQWdZV3hwWjI0dGMyVnNaam9nYzNSeVpYUmphRHRjYmlBZ0lDQXZLaUJQZG1WeWNtbGtaU0JpYjI5MGMzUnlZWEFnYzNSNWJHVWdLaTljYmlBZ0lDQm9aV2xuYUhRNklHbHVhWFJwWVd3N1hHNTlYRzVjYmk4cUlGWmxjblJwWTJGc0lGQnliMmR5WlhOeklDb3ZYRzVjYmk1M2FXUm5aWFF0ZG5CeWIyZHlaWE56SUh0Y2JpQWdJQ0JvWldsbmFIUTZJSFpoY2lndExXcHdMWGRwWkdkbGRITXRkbVZ5ZEdsallXd3RhR1ZwWjJoMEtUdGNiaUFnSUNCM2FXUjBhRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm14cGJtVXRkMmxrZEdndGRHbHVlU2s3WEc1OVhHNWNiaTUzYVdSblpYUXRkbkJ5YjJkeVpYTnpJQzV3Y205bmNtVnpjeUI3WEc0Z0lDQWdabXhsZUMxbmNtOTNPaUF4TzF4dUlDQWdJSGRwWkhSb09pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxYQnliMmR5WlhOekxYUm9hV05yYm1WemN5azdYRzRnSUNBZ2JXRnlaMmx1TFd4bFpuUTZJR0YxZEc4N1hHNGdJQ0FnYldGeVoybHVMWEpwWjJoME9pQmhkWFJ2TzF4dUlDQWdJRzFoY21kcGJpMWliM1IwYjIwNklEQTdYRzU5WEc1Y2JpOHFJRk5sYkdWamRDQlhhV1JuWlhRZ1UzUjViR2x1WnlBcUwxeHVYRzR1ZDJsa1oyVjBMV1J5YjNCa2IzZHVJSHRjYmlBZ0lDQm9aV2xuYUhRNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGFXNXNhVzVsTFdobGFXZG9kQ2s3WEc0Z0lDQWdkMmxrZEdnNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGFXNXNhVzVsTFhkcFpIUm9LVHRjYmlBZ0lDQnNhVzVsTFdobGFXZG9kRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm14cGJtVXRhR1ZwWjJoMEtUdGNibjFjYmx4dUxuZHBaR2RsZEMxa2NtOXdaRzkzYmlBK0lITmxiR1ZqZENCN1hHNGdJQ0FnY0dGa1pHbHVaeTF5YVdkb2REb2dNakJ3ZUR0Y2JpQWdJQ0JpYjNKa1pYSTZJSFpoY2lndExXcHdMWGRwWkdkbGRITXRhVzV3ZFhRdFltOXlaR1Z5TFhkcFpIUm9LU0J6YjJ4cFpDQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHVjSFYwTFdKdmNtUmxjaTFqYjJ4dmNpazdYRzRnSUNBZ1ltOXlaR1Z5TFhKaFpHbDFjem9nTUR0Y2JpQWdJQ0JvWldsbmFIUTZJR2x1YUdWeWFYUTdYRzRnSUNBZ1pteGxlRG9nTVNBeElIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGFXNXNhVzVsTFhkcFpIUm9MWE5vYjNKMEtUdGNiaUFnSUNCdGFXNHRkMmxrZEdnNklEQTdJQzhxSUZSb2FYTWdiV0ZyWlhNZ2FYUWdjRzl6YzJsaWJHVWdabTl5SUhSb1pTQm1iR1Y0WW05NElIUnZJSE5vY21sdWF5QjBhR2x6SUdsdWNIVjBJQ292WEc0Z0lDQWdZbTk0TFhOcGVtbHVaem9nWW05eVpHVnlMV0p2ZUR0Y2JpQWdJQ0J2ZFhSc2FXNWxPaUJ1YjI1bElDRnBiWEJ2Y25SaGJuUTdYRzRnSUNBZ1ltOTRMWE5vWVdSdmR6b2dibTl1WlR0Y2JpQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1Y0hWMExXSmhZMnRuY205MWJtUXRZMjlzYjNJcE8xeHVJQ0FnSUdOdmJHOXlPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1Y0hWMExXTnZiRzl5S1R0Y2JpQWdJQ0JtYjI1MExYTnBlbVU2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10Wm05dWRDMXphWHBsS1R0Y2JpQWdJQ0IyWlhKMGFXTmhiQzFoYkdsbmJqb2dkRzl3TzF4dUlDQWdJSEJoWkdScGJtY3RiR1ZtZERvZ1kyRnNZeWdnZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm5CMWRDMXdZV1JrYVc1bktTQXFJRElwTzF4dVhIUmhjSEJsWVhKaGJtTmxPaUJ1YjI1bE8xeHVYSFF0ZDJWaWEybDBMV0Z3Y0dWaGNtRnVZMlU2SUc1dmJtVTdYRzVjZEMxdGIzb3RZWEJ3WldGeVlXNWpaVG9nYm05dVpUdGNiaUFnSUNCaVlXTnJaM0p2ZFc1a0xYSmxjR1ZoZERvZ2JtOHRjbVZ3WldGME8xeHVYSFJpWVdOclozSnZkVzVrTFhOcGVtVTZJREl3Y0hnN1hHNWNkR0poWTJ0bmNtOTFibVF0Y0c5emFYUnBiMjQ2SUhKcFoyaDBJR05sYm5SbGNqdGNiaUFnSUNCaVlXTnJaM0p2ZFc1a0xXbHRZV2RsT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdSeWIzQmtiM2R1TFdGeWNtOTNLVHRjYm4xY2JpNTNhV1JuWlhRdFpISnZjR1J2ZDI0Z1BpQnpaV3hsWTNRNlptOWpkWE1nZTF4dUlDQWdJR0p2Y21SbGNpMWpiMnh2Y2pvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxcGJuQjFkQzFtYjJOMWN5MWliM0prWlhJdFkyOXNiM0lwTzF4dWZWeHVYRzR1ZDJsa1oyVjBMV1J5YjNCa2IzZHVJRDRnYzJWc1pXTjBPbVJwYzJGaWJHVmtJSHRjYmlBZ0lDQnZjR0ZqYVhSNU9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXUnBjMkZpYkdWa0xXOXdZV05wZEhrcE8xeHVmVnh1WEc0dktpQlVieUJrYVhOaFlteGxJSFJvWlNCa2IzUjBaV1FnWW05eVpHVnlJR2x1SUVacGNtVm1iM2dnWVhKdmRXNWtJSE5sYkdWamRDQmpiMjUwY205c2N5NWNiaUFnSUZObFpTQm9kSFJ3T2k4dmMzUmhZMnR2ZG1WeVpteHZkeTVqYjIwdllTOHhPRGcxTXpBd01pQXFMMXh1TG5kcFpHZGxkQzFrY205d1pHOTNiaUErSUhObGJHVmpkRG90Ylc5NkxXWnZZM1Z6Y21sdVp5QjdYRzRnSUNBZ1kyOXNiM0k2SUhSeVlXNXpjR0Z5Wlc1ME8xeHVJQ0FnSUhSbGVIUXRjMmhoWkc5M09pQXdJREFnTUNBak1EQXdPMXh1ZlZ4dVhHNHZLaUJUWld4bFkzUWdZVzVrSUZObGJHVmpkRTExYkhScGNHeGxJQ292WEc1Y2JpNTNhV1JuWlhRdGMyVnNaV04wSUh0Y2JpQWdJQ0IzYVdSMGFEb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibXhwYm1VdGQybGtkR2dwTzF4dUlDQWdJR3hwYm1VdGFHVnBaMmgwT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWJHbHVaUzFvWldsbmFIUXBPMXh1WEc0Z0lDQWdMeW9nUW1WallYVnpaU0JHYVhKbFptOTRJR1JsWm1sdVpYTWdkR2hsSUdKaGMyVnNhVzVsSUc5bUlHRWdjMlZzWldOMElHRnpJSFJvWlNCaWIzUjBiMjBnYjJZZ2RHaGxYRzRnSUNBZ1kyOXVkSEp2YkN3Z2QyVWdZV3hwWjI0Z2RHaGxJR1Z1ZEdseVpTQmpiMjUwY205c0lIUnZJSFJvWlNCMGIzQWdZVzVrSUdGa1pDQndZV1JrYVc1bklIUnZJSFJvWlZ4dUlDQWdJSE5sYkdWamRDQjBieUJuWlhRZ1lXNGdZWEJ3Y205NGFXMWhkR1VnWm1seWMzUWdiR2x1WlNCaVlYTmxiR2x1WlNCaGJHbG5ibTFsYm5RdUlDb3ZYRzRnSUNBZ1lXeHBaMjR0YVhSbGJYTTZJR1pzWlhndGMzUmhjblE3WEc1OVhHNWNiaTUzYVdSblpYUXRjMlZzWldOMElENGdjMlZzWldOMElIdGNiaUFnSUNCaWIzSmtaWEk2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YVc1d2RYUXRZbTl5WkdWeUxYZHBaSFJvS1NCemIyeHBaQ0IyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1Y0hWMExXSnZjbVJsY2kxamIyeHZjaWs3WEc0Z0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibkIxZEMxaVlXTnJaM0p2ZFc1a0xXTnZiRzl5S1R0Y2JpQWdJQ0JqYjJ4dmNqb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibkIxZEMxamIyeHZjaWs3WEc0Z0lDQWdabTl1ZEMxemFYcGxPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV1p2Ym5RdGMybDZaU2s3WEc0Z0lDQWdabXhsZURvZ01TQXhJSFpoY2lndExXcHdMWGRwWkdkbGRITXRhVzVzYVc1bExYZHBaSFJvTFhOb2IzSjBLVHRjYmlBZ0lDQnZkWFJzYVc1bE9pQnViMjVsSUNGcGJYQnZjblJoYm5RN1hHNGdJQ0FnYjNabGNtWnNiM2M2SUdGMWRHODdYRzRnSUNBZ2FHVnBaMmgwT2lCcGJtaGxjbWwwTzF4dVhHNGdJQ0FnTHlvZ1FtVmpZWFZ6WlNCR2FYSmxabTk0SUdSbFptbHVaWE1nZEdobElHSmhjMlZzYVc1bElHOW1JR0VnYzJWc1pXTjBJR0Z6SUhSb1pTQmliM1IwYjIwZ2IyWWdkR2hsWEc0Z0lDQWdZMjl1ZEhKdmJDd2dkMlVnWVd4cFoyNGdkR2hsSUdWdWRHbHlaU0JqYjI1MGNtOXNJSFJ2SUhSb1pTQjBiM0FnWVc1a0lHRmtaQ0J3WVdSa2FXNW5JSFJ2SUhSb1pWeHVJQ0FnSUhObGJHVmpkQ0IwYnlCblpYUWdZVzRnWVhCd2NtOTRhVzFoZEdVZ1ptbHljM1FnYkdsdVpTQmlZWE5sYkdsdVpTQmhiR2xuYm0xbGJuUXVJQ292WEc0Z0lDQWdjR0ZrWkdsdVp5MTBiM0E2SURWd2VEdGNibjFjYmx4dUxuZHBaR2RsZEMxelpXeGxZM1FnUGlCelpXeGxZM1E2Wm05amRYTWdlMXh1SUNBZ0lHSnZjbVJsY2kxamIyeHZjam9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm5CMWRDMW1iMk4xY3kxaWIzSmtaWEl0WTI5c2IzSXBPMXh1ZlZ4dVhHNHVkMmxuWlhRdGMyVnNaV04wSUQ0Z2MyVnNaV04wSUQ0Z2IzQjBhVzl1SUh0Y2JpQWdJQ0J3WVdSa2FXNW5MV3hsWm5RNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGFXNXdkWFF0Y0dGa1pHbHVaeWs3WEc0Z0lDQWdiR2x1WlMxb1pXbG5hSFE2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YVc1c2FXNWxMV2hsYVdkb2RDazdYRzRnSUNBZ0x5b2diR2x1WlMxb1pXbG5hSFFnWkc5bGMyNG5kQ0IzYjNKcklHOXVJSE52YldVZ1luSnZkM05sY25NZ1ptOXlJSE5sYkdWamRDQnZjSFJwYjI1eklDb3ZYRzRnSUNBZ2NHRmtaR2x1WnkxMGIzQTZJR05oYkdNb2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxcGJteHBibVV0YUdWcFoyaDBLUzEyWVhJb0xTMXFjQzEzYVdSblpYUnpMV1p2Ym5RdGMybDZaU2t2TWlrN1hHNGdJQ0FnY0dGa1pHbHVaeTFpYjNSMGIyMDZJR05oYkdNb2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxcGJteHBibVV0YUdWcFoyaDBLUzEyWVhJb0xTMXFjQzEzYVdSblpYUnpMV1p2Ym5RdGMybDZaU2t2TWlrN1hHNTlYRzVjYmx4dVhHNHZLaUJVYjJkbmJHVWdRblYwZEc5dWN5QlRkSGxzYVc1bklDb3ZYRzVjYmk1M2FXUm5aWFF0ZEc5bloyeGxMV0oxZEhSdmJuTWdlMXh1SUNBZ0lHeHBibVV0YUdWcFoyaDBPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1YkdsdVpTMW9aV2xuYUhRcE8xeHVmVnh1WEc0dWQybGtaMlYwTFhSdloyZHNaUzFpZFhSMGIyNXpJQzUzYVdSblpYUXRkRzluWjJ4bExXSjFkSFJ2YmlCN1hHNGdJQ0FnYldGeVoybHVMV3hsWm5RNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGJXRnlaMmx1S1R0Y2JpQWdJQ0J0WVhKbmFXNHRjbWxuYUhRNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGJXRnlaMmx1S1R0Y2JuMWNibHh1TG5kcFpHZGxkQzEwYjJkbmJHVXRZblYwZEc5dWN5QXVhblZ3ZVhSbGNpMWlkWFIwYjI0NlpHbHpZV0pzWldRZ2UxeHVJQ0FnSUc5d1lXTnBkSGs2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10WkdsellXSnNaV1F0YjNCaFkybDBlU2s3WEc1OVhHNWNiaThxSUZKaFpHbHZJRUoxZEhSdmJuTWdVM1I1YkdsdVp5QXFMMXh1WEc0dWQybGtaMlYwTFhKaFpHbHZJSHRjYmlBZ0lDQjNhV1IwYURvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxcGJteHBibVV0ZDJsa2RHZ3BPMXh1SUNBZ0lHeHBibVV0YUdWcFoyaDBPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1YkdsdVpTMW9aV2xuYUhRcE8xeHVmVnh1WEc0dWQybGtaMlYwTFhKaFpHbHZMV0p2ZUNCN1hHNGdJQ0FnWkdsemNHeGhlVG9nWm14bGVEdGNiaUFnSUNCbWJHVjRMV1JwY21WamRHbHZiam9nWTI5c2RXMXVPMXh1SUNBZ0lHRnNhV2R1TFdsMFpXMXpPaUJ6ZEhKbGRHTm9PMXh1SUNBZ0lHSnZlQzF6YVhwcGJtYzZJR0p2Y21SbGNpMWliM2c3WEc0Z0lDQWdabXhsZUMxbmNtOTNPaUF4TzF4dUlDQWdJRzFoY21kcGJpMWliM1IwYjIwNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGNtRmthVzh0YVhSbGJTMW9aV2xuYUhRdFlXUnFkWE4wYldWdWRDazdYRzU5WEc1Y2JpNTNhV1JuWlhRdGNtRmthVzh0WW05NElHeGhZbVZzSUh0Y2JpQWdJQ0JvWldsbmFIUTZJSFpoY2lndExXcHdMWGRwWkdkbGRITXRjbUZrYVc4dGFYUmxiUzFvWldsbmFIUXBPMXh1SUNBZ0lHeHBibVV0YUdWcFoyaDBPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMWEpoWkdsdkxXbDBaVzB0YUdWcFoyaDBLVHRjYmlBZ0lDQm1iMjUwTFhOcGVtVTZJSFpoY2lndExXcHdMWGRwWkdkbGRITXRabTl1ZEMxemFYcGxLVHRjYm4xY2JseHVMbmRwWkdkbGRDMXlZV1JwYnkxaWIzZ2dhVzV3ZFhRZ2UxeHVJQ0FnSUdobGFXZG9kRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTF5WVdScGJ5MXBkR1Z0TFdobGFXZG9kQ2s3WEc0Z0lDQWdiR2x1WlMxb1pXbG5hSFE2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10Y21Ga2FXOHRhWFJsYlMxb1pXbG5hSFFwTzF4dUlDQWdJRzFoY21kcGJqb2dNQ0JqWVd4aktDQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHVjSFYwTFhCaFpHUnBibWNwSUNvZ01pQXBJREFnTVhCNE8xeHVJQ0FnSUdac2IyRjBPaUJzWldaME8xeHVmVnh1WEc0dktpQkRiMnh2Y2lCUWFXTnJaWElnVTNSNWJHbHVaeUFxTDF4dVhHNHVkMmxrWjJWMExXTnZiRzl5Y0dsamEyVnlJSHRjYmlBZ0lDQjNhV1IwYURvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxcGJteHBibVV0ZDJsa2RHZ3BPMXh1SUNBZ0lHaGxhV2RvZERvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxcGJteHBibVV0YUdWcFoyaDBLVHRjYmlBZ0lDQnNhVzVsTFdobGFXZG9kRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm14cGJtVXRhR1ZwWjJoMEtUdGNibjFjYmx4dUxuZHBaR2RsZEMxamIyeHZjbkJwWTJ0bGNpQStJQzUzYVdSblpYUXRZMjlzYjNKd2FXTnJaWEl0YVc1d2RYUWdlMXh1SUNBZ0lHWnNaWGd0WjNKdmR6b2dNVHRjYmlBZ0lDQm1iR1Y0TFhOb2NtbHVhem9nTVR0Y2JpQWdJQ0J0YVc0dGQybGtkR2c2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YVc1c2FXNWxMWGRwWkhSb0xYUnBibmtwTzF4dWZWeHVYRzR1ZDJsa1oyVjBMV052Ykc5eWNHbGphMlZ5SUdsdWNIVjBXM1I1Y0dVOVhDSmpiMnh2Y2x3aVhTQjdYRzRnSUNBZ2QybGtkR2c2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YVc1c2FXNWxMV2hsYVdkb2RDazdYRzRnSUNBZ2FHVnBaMmgwT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWJHbHVaUzFvWldsbmFIUXBPMXh1SUNBZ0lIQmhaR1JwYm1jNklEQWdNbkI0T3lBdktpQnRZV3RsSUhSb1pTQmpiMnh2Y2lCemNYVmhjbVVnWVdOMGRXRnNiSGtnYzNGMVlYSmxJRzl1SUVOb2NtOXRaU0J2YmlCUFV5QllJQ292WEc0Z0lDQWdZbUZqYTJkeWIzVnVaRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm5CMWRDMWlZV05yWjNKdmRXNWtMV052Ykc5eUtUdGNiaUFnSUNCamIyeHZjam9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm5CMWRDMWpiMnh2Y2lrN1hHNGdJQ0FnWW05eVpHVnlPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1Y0hWMExXSnZjbVJsY2kxM2FXUjBhQ2tnYzI5c2FXUWdkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibkIxZEMxaWIzSmtaWEl0WTI5c2IzSXBPMXh1SUNBZ0lHSnZjbVJsY2kxc1pXWjBPaUJ1YjI1bE8xeHVJQ0FnSUdac1pYZ3RaM0p2ZHpvZ01EdGNiaUFnSUNCbWJHVjRMWE5vY21sdWF6b2dNRHRjYmlBZ0lDQmliM2d0YzJsNmFXNW5PaUJpYjNKa1pYSXRZbTk0TzF4dUlDQWdJR0ZzYVdkdUxYTmxiR1k2SUhOMGNtVjBZMmc3WEc0Z0lDQWdiM1YwYkdsdVpUb2dibTl1WlNBaGFXMXdiM0owWVc1ME8xeHVmVnh1WEc0dWQybGtaMlYwTFdOdmJHOXljR2xqYTJWeUxtTnZibU5wYzJVZ2FXNXdkWFJiZEhsd1pUMWNJbU52Ykc5eVhDSmRJSHRjYmlBZ0lDQmliM0prWlhJdGJHVm1kRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm5CMWRDMWliM0prWlhJdGQybGtkR2dwSUhOdmJHbGtJSFpoY2lndExXcHdMWGRwWkdkbGRITXRhVzV3ZFhRdFltOXlaR1Z5TFdOdmJHOXlLVHRjYm4xY2JseHVMbmRwWkdkbGRDMWpiMnh2Y25CcFkydGxjaUJwYm5CMWRGdDBlWEJsUFZ3aVkyOXNiM0pjSWwwNlptOWpkWE1zSUM1M2FXUm5aWFF0WTI5c2IzSndhV05yWlhJZ2FXNXdkWFJiZEhsd1pUMWNJblJsZUhSY0lsMDZabTlqZFhNZ2UxeHVJQ0FnSUdKdmNtUmxjaTFqYjJ4dmNqb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibkIxZEMxbWIyTjFjeTFpYjNKa1pYSXRZMjlzYjNJcE8xeHVmVnh1WEc0dWQybGtaMlYwTFdOdmJHOXljR2xqYTJWeUlHbHVjSFYwVzNSNWNHVTlYQ0owWlhoMFhDSmRJSHRjYmlBZ0lDQm1iR1Y0TFdkeWIzYzZJREU3WEc0Z0lDQWdiM1YwYkdsdVpUb2dibTl1WlNBaGFXMXdiM0owWVc1ME8xeHVJQ0FnSUdobGFXZG9kRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm14cGJtVXRhR1ZwWjJoMEtUdGNiaUFnSUNCc2FXNWxMV2hsYVdkb2REb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibXhwYm1VdGFHVnBaMmgwS1R0Y2JpQWdJQ0JpWVdOclozSnZkVzVrT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWNIVjBMV0poWTJ0bmNtOTFibVF0WTI5c2IzSXBPMXh1SUNBZ0lHTnZiRzl5T2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWNIVjBMV052Ykc5eUtUdGNiaUFnSUNCaWIzSmtaWEk2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YVc1d2RYUXRZbTl5WkdWeUxYZHBaSFJvS1NCemIyeHBaQ0IyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1Y0hWMExXSnZjbVJsY2kxamIyeHZjaWs3WEc0Z0lDQWdabTl1ZEMxemFYcGxPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV1p2Ym5RdGMybDZaU2s3WEc0Z0lDQWdjR0ZrWkdsdVp6b2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibkIxZEMxd1lXUmthVzVuS1NCallXeGpLQ0IyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1Y0hWMExYQmhaR1JwYm1jcElDb2dJRElnS1R0Y2JpQWdJQ0J0YVc0dGQybGtkR2c2SURBN0lDOHFJRlJvYVhNZ2JXRnJaWE1nYVhRZ2NHOXpjMmxpYkdVZ1ptOXlJSFJvWlNCbWJHVjRZbTk0SUhSdklITm9jbWx1YXlCMGFHbHpJR2x1Y0hWMElDb3ZYRzRnSUNBZ1pteGxlQzF6YUhKcGJtczZJREU3WEc0Z0lDQWdZbTk0TFhOcGVtbHVaem9nWW05eVpHVnlMV0p2ZUR0Y2JuMWNibHh1TG5kcFpHZGxkQzFqYjJ4dmNuQnBZMnRsY2lCcGJuQjFkRnQwZVhCbFBWd2lkR1Y0ZEZ3aVhUcGthWE5oWW14bFpDQjdYRzRnSUNBZ2IzQmhZMmwwZVRvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxa2FYTmhZbXhsWkMxdmNHRmphWFI1S1R0Y2JuMWNibHh1THlvZ1JHRjBaU0JRYVdOclpYSWdVM1I1YkdsdVp5QXFMMXh1WEc0dWQybGtaMlYwTFdSaGRHVndhV05yWlhJZ2UxeHVJQ0FnSUhkcFpIUm9PaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1YkdsdVpTMTNhV1IwYUNrN1hHNGdJQ0FnYUdWcFoyaDBPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1YkdsdVpTMW9aV2xuYUhRcE8xeHVJQ0FnSUd4cGJtVXRhR1ZwWjJoME9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHViR2x1WlMxb1pXbG5hSFFwTzF4dWZWeHVYRzR1ZDJsa1oyVjBMV1JoZEdWd2FXTnJaWElnYVc1d2RYUmJkSGx3WlQxY0ltUmhkR1ZjSWwwZ2UxeHVJQ0FnSUdac1pYZ3RaM0p2ZHpvZ01UdGNiaUFnSUNCbWJHVjRMWE5vY21sdWF6b2dNVHRjYmlBZ0lDQnRhVzR0ZDJsa2RHZzZJREE3SUM4cUlGUm9hWE1nYldGclpYTWdhWFFnY0c5emMybGliR1VnWm05eUlIUm9aU0JtYkdWNFltOTRJSFJ2SUhOb2NtbHVheUIwYUdseklHbHVjSFYwSUNvdlhHNGdJQ0FnYjNWMGJHbHVaVG9nYm05dVpTQWhhVzF3YjNKMFlXNTBPMXh1SUNBZ0lHaGxhV2RvZERvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxcGJteHBibVV0YUdWcFoyaDBLVHRjYmlBZ0lDQmliM0prWlhJNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGFXNXdkWFF0WW05eVpHVnlMWGRwWkhSb0tTQnpiMnhwWkNCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWNIVjBMV0p2Y21SbGNpMWpiMnh2Y2lrN1hHNGdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm5CMWRDMWlZV05yWjNKdmRXNWtMV052Ykc5eUtUdGNiaUFnSUNCamIyeHZjam9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm5CMWRDMWpiMnh2Y2lrN1hHNGdJQ0FnWm05dWRDMXphWHBsT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdadmJuUXRjMmw2WlNrN1hHNGdJQ0FnY0dGa1pHbHVaem9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm5CMWRDMXdZV1JrYVc1bktTQmpZV3hqS0NCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWNIVjBMWEJoWkdScGJtY3BJQ29nSURJZ0tUdGNiaUFnSUNCaWIzZ3RjMmw2YVc1bk9pQmliM0prWlhJdFltOTRPMXh1ZlZ4dVhHNHVkMmxrWjJWMExXUmhkR1Z3YVdOclpYSWdhVzV3ZFhSYmRIbHdaVDFjSW1SaGRHVmNJbDA2Wm05amRYTWdlMXh1SUNBZ0lHSnZjbVJsY2kxamIyeHZjam9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm5CMWRDMW1iMk4xY3kxaWIzSmtaWEl0WTI5c2IzSXBPMXh1ZlZ4dVhHNHVkMmxrWjJWMExXUmhkR1Z3YVdOclpYSWdhVzV3ZFhSYmRIbHdaVDFjSW1SaGRHVmNJbDA2YVc1MllXeHBaQ0I3WEc0Z0lDQWdZbTl5WkdWeUxXTnZiRzl5T2lCMllYSW9MUzFxY0MxM1lYSnVMV052Ykc5eU1TazdYRzU5WEc1Y2JpNTNhV1JuWlhRdFpHRjBaWEJwWTJ0bGNpQnBibkIxZEZ0MGVYQmxQVndpWkdGMFpWd2lYVHBrYVhOaFlteGxaQ0I3WEc0Z0lDQWdiM0JoWTJsMGVUb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MWthWE5oWW14bFpDMXZjR0ZqYVhSNUtUdGNibjFjYmx4dUx5b2dVR3hoZVNCWGFXUm5aWFFnS2k5Y2JseHVMbmRwWkdkbGRDMXdiR0Y1SUh0Y2JpQWdJQ0IzYVdSMGFEb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibXhwYm1VdGQybGtkR2d0YzJodmNuUXBPMXh1SUNBZ0lHUnBjM0JzWVhrNklHWnNaWGc3WEc0Z0lDQWdZV3hwWjI0dGFYUmxiWE02SUhOMGNtVjBZMmc3WEc1OVhHNWNiaTUzYVdSblpYUXRjR3hoZVNBdWFuVndlWFJsY2kxaWRYUjBiMjRnZTF4dUlDQWdJR1pzWlhndFozSnZkem9nTVR0Y2JpQWdJQ0JvWldsbmFIUTZJR0YxZEc4N1hHNTlYRzVjYmk1M2FXUm5aWFF0Y0d4aGVTQXVhblZ3ZVhSbGNpMWlkWFIwYjI0NlpHbHpZV0pzWldRZ2UxeHVJQ0FnSUc5d1lXTnBkSGs2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10WkdsellXSnNaV1F0YjNCaFkybDBlU2s3WEc1OVhHNWNiaThxSUZSaFlpQlhhV1JuWlhRZ0tpOWNibHh1TG1wMWNIbDBaWEl0ZDJsa1oyVjBjeTUzYVdSblpYUXRkR0ZpSUh0Y2JpQWdJQ0JrYVhOd2JHRjVPaUJtYkdWNE8xeHVJQ0FnSUdac1pYZ3RaR2x5WldOMGFXOXVPaUJqYjJ4MWJXNDdYRzU5WEc1Y2JpNXFkWEI1ZEdWeUxYZHBaR2RsZEhNdWQybGtaMlYwTFhSaFlpQStJQzV3TFZSaFlrSmhjaUI3WEc0Z0lDQWdMeW9nVG1WalpYTnpZWEo1SUhOdklIUm9ZWFFnWVNCMFlXSWdZMkZ1SUdKbElITm9hV1owWldRZ1pHOTNiaUIwYnlCdmRtVnliR0Y1SUhSb1pTQmliM0prWlhJZ2IyWWdkR2hsSUdKdmVDQmlaV3h2ZHk0Z0tpOWNiaUFnSUNCdmRtVnlabXh2ZHkxNE9pQjJhWE5wWW14bE8xeHVJQ0FnSUc5MlpYSm1iRzkzTFhrNklIWnBjMmxpYkdVN1hHNTlYRzVjYmk1cWRYQjVkR1Z5TFhkcFpHZGxkSE11ZDJsa1oyVjBMWFJoWWlBK0lDNXdMVlJoWWtKaGNpQStJQzV3TFZSaFlrSmhjaTFqYjI1MFpXNTBJSHRjYmlBZ0lDQXZLaUJOWVd0bElITjFjbVVnZEdoaGRDQjBhR1VnZEdGaUlHZHliM2R6SUdaeWIyMGdZbTkwZEc5dElIVndJQ292WEc0Z0lDQWdZV3hwWjI0dGFYUmxiWE02SUdac1pYZ3RaVzVrTzF4dUlDQWdJRzFwYmkxM2FXUjBhRG9nTUR0Y2JpQWdJQ0J0YVc0dGFHVnBaMmgwT2lBd08xeHVmVnh1WEc0dWFuVndlWFJsY2kxM2FXUm5aWFJ6TG5kcFpHZGxkQzEwWVdJZ1BpQXVkMmxrWjJWMExYUmhZaTFqYjI1MFpXNTBjeUI3WEc0Z0lDQWdkMmxrZEdnNklERXdNQ1U3WEc0Z0lDQWdZbTk0TFhOcGVtbHVaem9nWW05eVpHVnlMV0p2ZUR0Y2JpQWdJQ0J0WVhKbmFXNDZJREE3WEc0Z0lDQWdZbUZqYTJkeWIzVnVaRG9nZG1GeUtDMHRhbkF0YkdGNWIzVjBMV052Ykc5eU1TazdYRzRnSUNBZ1kyOXNiM0k2SUhaaGNpZ3RMV3B3TFhWcExXWnZiblF0WTI5c2IzSXhLVHRjYmlBZ0lDQmliM0prWlhJNklIWmhjaWd0TFdwd0xXSnZjbVJsY2kxM2FXUjBhQ2tnYzI5c2FXUWdkbUZ5S0MwdGFuQXRZbTl5WkdWeUxXTnZiRzl5TVNrN1hHNGdJQ0FnY0dGa1pHbHVaem9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFqYjI1MFlXbHVaWEl0Y0dGa1pHbHVaeWs3WEc0Z0lDQWdabXhsZUMxbmNtOTNPaUF4TzF4dUlDQWdJRzkyWlhKbWJHOTNPaUJoZFhSdk8xeHVmVnh1WEc0dWFuVndlWFJsY2kxM2FXUm5aWFJ6TG5kcFpHZGxkQzEwWVdJZ1BpQXVjQzFVWVdKQ1lYSWdlMXh1SUNBZ0lHWnZiblE2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10Wm05dWRDMXphWHBsS1NCSVpXeDJaWFJwWTJFc0lFRnlhV0ZzTENCellXNXpMWE5sY21sbU8xeHVJQ0FnSUcxcGJpMW9aV2xuYUhRNklHTmhiR01vZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFvYjNKcGVtOXVkR0ZzTFhSaFlpMW9aV2xuYUhRcElDc2dkbUZ5S0MwdGFuQXRZbTl5WkdWeUxYZHBaSFJvS1NrN1hHNTlYRzVjYmk1cWRYQjVkR1Z5TFhkcFpHZGxkSE11ZDJsa1oyVjBMWFJoWWlBK0lDNXdMVlJoWWtKaGNpQXVjQzFVWVdKQ1lYSXRkR0ZpSUh0Y2JpQWdJQ0JtYkdWNE9pQXdJREVnZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFvYjNKcGVtOXVkR0ZzTFhSaFlpMTNhV1IwYUNrN1hHNGdJQ0FnYldsdUxYZHBaSFJvT2lBek5YQjRPMXh1SUNBZ0lHMXBiaTFvWldsbmFIUTZJR05oYkdNb2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxb2IzSnBlbTl1ZEdGc0xYUmhZaTFvWldsbmFIUXBJQ3NnZG1GeUtDMHRhbkF0WW05eVpHVnlMWGRwWkhSb0tTazdYRzRnSUNBZ2JHbHVaUzFvWldsbmFIUTZJSFpoY2lndExXcHdMWGRwWkdkbGRITXRhRzl5YVhwdmJuUmhiQzEwWVdJdGFHVnBaMmgwS1R0Y2JpQWdJQ0J0WVhKbmFXNHRiR1ZtZERvZ1kyRnNZeWd0TVNBcUlIWmhjaWd0TFdwd0xXSnZjbVJsY2kxM2FXUjBhQ2twTzF4dUlDQWdJSEJoWkdScGJtYzZJREJ3ZUNBeE1IQjRPMXh1SUNBZ0lHSmhZMnRuY205MWJtUTZJSFpoY2lndExXcHdMV3hoZVc5MWRDMWpiMnh2Y2pJcE8xeHVJQ0FnSUdOdmJHOXlPaUIyWVhJb0xTMXFjQzExYVMxbWIyNTBMV052Ykc5eU1pazdYRzRnSUNBZ1ltOXlaR1Z5T2lCMllYSW9MUzFxY0MxaWIzSmtaWEl0ZDJsa2RHZ3BJSE52Ykdsa0lIWmhjaWd0TFdwd0xXSnZjbVJsY2kxamIyeHZjakVwTzF4dUlDQWdJR0p2Y21SbGNpMWliM1IwYjIwNklHNXZibVU3WEc0Z0lDQWdjRzl6YVhScGIyNDZJSEpsYkdGMGFYWmxPMXh1ZlZ4dVhHNHVhblZ3ZVhSbGNpMTNhV1JuWlhSekxuZHBaR2RsZEMxMFlXSWdQaUF1Y0MxVVlXSkNZWElnTG5BdFZHRmlRbUZ5TFhSaFlpNXdMVzF2WkMxamRYSnlaVzUwSUh0Y2JpQWdJQ0JqYjJ4dmNqb2dkbUZ5S0MwdGFuQXRkV2t0Wm05dWRDMWpiMnh2Y2pBcE8xeHVJQ0FnSUM4cUlGZGxJSGRoYm5RZ2RHaGxJR0poWTJ0bmNtOTFibVFnZEc4Z2JXRjBZMmdnZEdobElIUmhZaUJqYjI1MFpXNTBJR0poWTJ0bmNtOTFibVFnS2k5Y2JpQWdJQ0JpWVdOclozSnZkVzVrT2lCMllYSW9MUzFxY0Mxc1lYbHZkWFF0WTI5c2IzSXhLVHRjYmlBZ0lDQnRhVzR0YUdWcFoyaDBPaUJqWVd4aktIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGFHOXlhWHB2Ym5SaGJDMTBZV0l0YUdWcFoyaDBLU0FySURJZ0tpQjJZWElvTFMxcWNDMWliM0prWlhJdGQybGtkR2dwS1R0Y2JpQWdJQ0IwY21GdWMyWnZjbTA2SUhSeVlXNXpiR0YwWlZrb2RtRnlLQzB0YW5BdFltOXlaR1Z5TFhkcFpIUm9LU2s3WEc0Z0lDQWdiM1psY21ac2IzYzZJSFpwYzJsaWJHVTdYRzU5WEc1Y2JpNXFkWEI1ZEdWeUxYZHBaR2RsZEhNdWQybGtaMlYwTFhSaFlpQStJQzV3TFZSaFlrSmhjaUF1Y0MxVVlXSkNZWEl0ZEdGaUxuQXRiVzlrTFdOMWNuSmxiblE2WW1WbWIzSmxJSHRjYmlBZ0lDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdYRzRnSUNBZ2RHOXdPaUJqWVd4aktDMHhJQ29nZG1GeUtDMHRhbkF0WW05eVpHVnlMWGRwWkhSb0tTazdYRzRnSUNBZ2JHVm1kRG9nWTJGc1l5Z3RNU0FxSUhaaGNpZ3RMV3B3TFdKdmNtUmxjaTEzYVdSMGFDa3BPMXh1SUNBZ0lHTnZiblJsYm5RNklDY25PMXh1SUNBZ0lHaGxhV2RvZERvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxb2IzSnBlbTl1ZEdGc0xYUmhZaTEwYjNBdFltOXlaR1Z5S1R0Y2JpQWdJQ0IzYVdSMGFEb2dZMkZzWXlneE1EQWxJQ3NnTWlBcUlIWmhjaWd0TFdwd0xXSnZjbVJsY2kxM2FXUjBhQ2twTzF4dUlDQWdJR0poWTJ0bmNtOTFibVE2SUhaaGNpZ3RMV3B3TFdKeVlXNWtMV052Ykc5eU1TazdYRzU5WEc1Y2JpNXFkWEI1ZEdWeUxYZHBaR2RsZEhNdWQybGtaMlYwTFhSaFlpQStJQzV3TFZSaFlrSmhjaUF1Y0MxVVlXSkNZWEl0ZEdGaU9tWnBjbk4wTFdOb2FXeGtJSHRjYmlBZ0lDQnRZWEpuYVc0dGJHVm1kRG9nTUR0Y2JuMWNibHh1TG1wMWNIbDBaWEl0ZDJsa1oyVjBjeTUzYVdSblpYUXRkR0ZpSUQ0Z0xuQXRWR0ZpUW1GeUlDNXdMVlJoWWtKaGNpMTBZV0k2YUc5MlpYSTZibTkwS0M1d0xXMXZaQzFqZFhKeVpXNTBLU0I3WEc0Z0lDQWdZbUZqYTJkeWIzVnVaRG9nZG1GeUtDMHRhbkF0YkdGNWIzVjBMV052Ykc5eU1TazdYRzRnSUNBZ1kyOXNiM0k2SUhaaGNpZ3RMV3B3TFhWcExXWnZiblF0WTI5c2IzSXhLVHRjYm4xY2JseHVMbXAxY0hsMFpYSXRkMmxrWjJWMGN5NTNhV1JuWlhRdGRHRmlJRDRnTG5BdFZHRmlRbUZ5SUM1d0xXMXZaQzFqYkc5ellXSnNaU0ErSUM1d0xWUmhZa0poY2kxMFlXSkRiRzl6WlVsamIyNGdlMXh1SUNBZ0lHMWhjbWRwYmkxc1pXWjBPaUEwY0hnN1hHNTlYRzVjYmk1cWRYQjVkR1Z5TFhkcFpHZGxkSE11ZDJsa1oyVjBMWFJoWWlBK0lDNXdMVlJoWWtKaGNpQXVjQzF0YjJRdFkyeHZjMkZpYkdVZ1BpQXVjQzFVWVdKQ1lYSXRkR0ZpUTJ4dmMyVkpZMjl1T21KbFptOXlaU0I3WEc0Z0lDQWdabTl1ZEMxbVlXMXBiSGs2SUVadmJuUkJkMlZ6YjIxbE8xeHVJQ0FnSUdOdmJuUmxiblE2SUNkY1hHWXdNR1FuT3lBdktpQmpiRzl6WlNBcUwxeHVmVnh1WEc0dWFuVndlWFJsY2kxM2FXUm5aWFJ6TG5kcFpHZGxkQzEwWVdJZ1BpQXVjQzFVWVdKQ1lYSWdMbkF0VkdGaVFtRnlMWFJoWWtsamIyNHNYRzR1YW5Wd2VYUmxjaTEzYVdSblpYUnpMbmRwWkdkbGRDMTBZV0lnUGlBdWNDMVVZV0pDWVhJZ0xuQXRWR0ZpUW1GeUxYUmhZa3hoWW1Wc0xGeHVMbXAxY0hsMFpYSXRkMmxrWjJWMGN5NTNhV1JuWlhRdGRHRmlJRDRnTG5BdFZHRmlRbUZ5SUM1d0xWUmhZa0poY2kxMFlXSkRiRzl6WlVsamIyNGdlMXh1SUNBZ0lHeHBibVV0YUdWcFoyaDBPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2h2Y21sNmIyNTBZV3d0ZEdGaUxXaGxhV2RvZENrN1hHNTlYRzVjYmk4cUlFRmpZMjl5WkdsdmJpQlhhV1JuWlhRZ0tpOWNibHh1TG5BdFEyOXNiR0Z3YzJVZ2UxeHVJQ0FnSUdScGMzQnNZWGs2SUdac1pYZzdYRzRnSUNBZ1pteGxlQzFrYVhKbFkzUnBiMjQ2SUdOdmJIVnRianRjYmlBZ0lDQmhiR2xuYmkxcGRHVnRjem9nYzNSeVpYUmphRHRjYm4xY2JseHVMbkF0UTI5c2JHRndjMlV0YUdWaFpHVnlJSHRjYmlBZ0lDQndZV1JrYVc1bk9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHVjSFYwTFhCaFpHUnBibWNwTzF4dUlDQWdJR04xY25OdmNqb2djRzlwYm5SbGNqdGNiaUFnSUNCamIyeHZjam9nZG1GeUtDMHRhbkF0ZFdrdFptOXVkQzFqYjJ4dmNqSXBPMXh1SUNBZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklIWmhjaWd0TFdwd0xXeGhlVzkxZEMxamIyeHZjaklwTzF4dUlDQWdJR0p2Y21SbGNqb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MWliM0prWlhJdGQybGtkR2dwSUhOdmJHbGtJSFpoY2lndExXcHdMV0p2Y21SbGNpMWpiMnh2Y2pFcE8xeHVJQ0FnSUhCaFpHUnBibWM2SUdOaGJHTW9kbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MWpiMjUwWVdsdVpYSXRjR0ZrWkdsdVp5a2dLaUF5SUM4Z015a2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MWpiMjUwWVdsdVpYSXRjR0ZrWkdsdVp5azdYRzRnSUNBZ1ptOXVkQzEzWldsbmFIUTZJR0p2YkdRN1hHNTlYRzVjYmk1d0xVTnZiR3hoY0hObExXaGxZV1JsY2pwb2IzWmxjaUI3WEc0Z0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dkbUZ5S0MwdGFuQXRiR0Y1YjNWMExXTnZiRzl5TVNrN1hHNGdJQ0FnWTI5c2IzSTZJSFpoY2lndExXcHdMWFZwTFdadmJuUXRZMjlzYjNJeEtUdGNibjFjYmx4dUxuQXRRMjlzYkdGd2MyVXRiM0JsYmlBK0lDNXdMVU52Ykd4aGNITmxMV2hsWVdSbGNpQjdYRzRnSUNBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ2RtRnlLQzB0YW5BdGJHRjViM1YwTFdOdmJHOXlNU2s3WEc0Z0lDQWdZMjlzYjNJNklIWmhjaWd0TFdwd0xYVnBMV1p2Ym5RdFkyOXNiM0l3S1R0Y2JpQWdJQ0JqZFhKemIzSTZJR1JsWm1GMWJIUTdYRzRnSUNBZ1ltOXlaR1Z5TFdKdmRIUnZiVG9nYm05dVpUdGNibjFjYmx4dUxuQXRRMjlzYkdGd2MyVWdMbkF0UTI5c2JHRndjMlV0YUdWaFpHVnlPanBpWldadmNtVWdlMXh1SUNBZ0lHTnZiblJsYm5RNklDZGNYR1l3WkdGY1hEQXdRVEFuT3lBZ0x5b2dZMkZ5WlhRdGNtbG5hSFFzSUc1dmJpMWljbVZoYTJsdVp5QnpjR0ZqWlNBcUwxeHVJQ0FnSUdScGMzQnNZWGs2SUdsdWJHbHVaUzFpYkc5amF6dGNiaUFnSUNCbWIyNTBPaUJ1YjNKdFlXd2dibTl5YldGc0lHNXZjbTFoYkNBeE5IQjRMekVnUm05dWRFRjNaWE52YldVN1hHNGdJQ0FnWm05dWRDMXphWHBsT2lCcGJtaGxjbWwwTzF4dUlDQWdJSFJsZUhRdGNtVnVaR1Z5YVc1bk9pQmhkWFJ2TzF4dUlDQWdJQzEzWldKcmFYUXRabTl1ZEMxemJXOXZkR2hwYm1jNklHRnVkR2xoYkdsaGMyVmtPMXh1SUNBZ0lDMXRiM290YjNONExXWnZiblF0YzIxdmIzUm9hVzVuT2lCbmNtRjVjMk5oYkdVN1hHNTlYRzVjYmk1d0xVTnZiR3hoY0hObExXOXdaVzRnUGlBdWNDMURiMnhzWVhCelpTMW9aV0ZrWlhJNk9tSmxabTl5WlNCN1hHNGdJQ0FnWTI5dWRHVnVkRG9nSjF4Y1pqQmtOMXhjTURCQk1DYzdJQzhxSUdOaGNtVjBMV1J2ZDI0c0lHNXZiaTFpY21WaGEybHVaeUJ6Y0dGalpTQXFMMXh1ZlZ4dVhHNHVjQzFEYjJ4c1lYQnpaUzFqYjI1MFpXNTBjeUI3WEc0Z0lDQWdjR0ZrWkdsdVp6b2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MWpiMjUwWVdsdVpYSXRjR0ZrWkdsdVp5azdYRzRnSUNBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ2RtRnlLQzB0YW5BdGJHRjViM1YwTFdOdmJHOXlNU2s3WEc0Z0lDQWdZMjlzYjNJNklIWmhjaWd0TFdwd0xYVnBMV1p2Ym5RdFkyOXNiM0l4S1R0Y2JpQWdJQ0JpYjNKa1pYSXRiR1ZtZERvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxaWIzSmtaWEl0ZDJsa2RHZ3BJSE52Ykdsa0lIWmhjaWd0TFdwd0xXSnZjbVJsY2kxamIyeHZjakVwTzF4dUlDQWdJR0p2Y21SbGNpMXlhV2RvZERvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxaWIzSmtaWEl0ZDJsa2RHZ3BJSE52Ykdsa0lIWmhjaWd0TFdwd0xXSnZjbVJsY2kxamIyeHZjakVwTzF4dUlDQWdJR0p2Y21SbGNpMWliM1IwYjIwNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdFltOXlaR1Z5TFhkcFpIUm9LU0J6YjJ4cFpDQjJZWElvTFMxcWNDMWliM0prWlhJdFkyOXNiM0l4S1R0Y2JpQWdJQ0J2ZG1WeVpteHZkem9nWVhWMGJ6dGNibjFjYmx4dUxuQXRRV05qYjNKa2FXOXVJSHRjYmlBZ0lDQmthWE53YkdGNU9pQm1iR1Y0TzF4dUlDQWdJR1pzWlhndFpHbHlaV04wYVc5dU9pQmpiMngxYlc0N1hHNGdJQ0FnWVd4cFoyNHRhWFJsYlhNNklITjBjbVYwWTJnN1hHNTlYRzVjYmk1d0xVRmpZMjl5WkdsdmJpQXVjQzFEYjJ4c1lYQnpaU0I3WEc0Z0lDQWdiV0Z5WjJsdUxXSnZkSFJ2YlRvZ01EdGNibjFjYmx4dUxuQXRRV05qYjNKa2FXOXVJQzV3TFVOdmJHeGhjSE5sSUNzZ0xuQXRRMjlzYkdGd2MyVWdlMXh1SUNBZ0lHMWhjbWRwYmkxMGIzQTZJRFJ3ZUR0Y2JuMWNibHh1WEc1Y2JpOHFJRWhVVFV3Z2QybGtaMlYwSUNvdlhHNWNiaTUzYVdSblpYUXRhSFJ0YkN3Z0xuZHBaR2RsZEMxb2RHMXNiV0YwYUNCN1hHNGdJQ0FnWm05dWRDMXphWHBsT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdadmJuUXRjMmw2WlNrN1hHNTlYRzVjYmk1M2FXUm5aWFF0YUhSdGJDQStJQzUzYVdSblpYUXRhSFJ0YkMxamIyNTBaVzUwTENBdWQybGtaMlYwTFdoMGJXeHRZWFJvSUQ0Z0xuZHBaR2RsZEMxb2RHMXNMV052Ym5SbGJuUWdlMXh1SUNBZ0lDOHFJRVpwYkd3Z2IzVjBJSFJvWlNCaGNtVmhJR2x1SUhSb1pTQklWRTFNSUhkcFpHZGxkQ0FxTDF4dUlDQWdJR0ZzYVdkdUxYTmxiR1k2SUhOMGNtVjBZMmc3WEc0Z0lDQWdabXhsZUMxbmNtOTNPaUF4TzF4dUlDQWdJR1pzWlhndGMyaHlhVzVyT2lBeE8xeHVJQ0FnSUM4cUlFMWhhMlZ6SUhOMWNtVWdkR2hsSUdKaGMyVnNhVzVsSUdseklITjBhV3hzSUdGc2FXZHVaV1FnZDJsMGFDQnZkR2hsY2lCbGJHVnRaVzUwY3lBcUwxeHVJQ0FnSUd4cGJtVXRhR1ZwWjJoME9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHViR2x1WlMxb1pXbG5hSFFwTzF4dUlDQWdJQzhxSUUxaGEyVWdhWFFnY0c5emMybGliR1VnZEc4Z2FHRjJaU0JoWW5OdmJIVjBaV3g1TFhCdmMybDBhVzl1WldRZ1pXeGxiV1Z1ZEhNZ2FXNGdkR2hsSUdoMGJXd2dLaTljYmlBZ0lDQndiM05wZEdsdmJqb2djbVZzWVhScGRtVTdYRzU5WEc0aUxDSXZLaUJVYUdseklHWnBiR1VnYUdGeklHTnZaR1VnWkdWeWFYWmxaQ0JtY205dElGQm9iM053YUc5eVNsTWdRMU5USUdacGJHVnpMQ0JoY3lCdWIzUmxaQ0JpWld4dmR5NGdWR2hsSUd4cFkyVnVjMlVnWm05eUlIUm9hWE1nVUdodmMzQm9iM0pLVXlCamIyUmxJR2x6T2x4dVhHNURiM0I1Y21sbmFIUWdLR01wSURJd01UUXRNakF4Tnl3Z1VHaHZjM0JvYjNKS1V5QkRiMjUwY21saWRYUnZjbk5jYmtGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNWNibEpsWkdsemRISnBZblYwYVc5dUlHRnVaQ0IxYzJVZ2FXNGdjMjkxY21ObElHRnVaQ0JpYVc1aGNua2dabTl5YlhNc0lIZHBkR2dnYjNJZ2QybDBhRzkxZEZ4dWJXOWthV1pwWTJGMGFXOXVMQ0JoY21VZ2NHVnliV2wwZEdWa0lIQnliM1pwWkdWa0lIUm9ZWFFnZEdobElHWnZiR3h2ZDJsdVp5QmpiMjVrYVhScGIyNXpJR0Z5WlNCdFpYUTZYRzVjYmlvZ1VtVmthWE4wY21saWRYUnBiMjV6SUc5bUlITnZkWEpqWlNCamIyUmxJRzExYzNRZ2NtVjBZV2x1SUhSb1pTQmhZbTkyWlNCamIzQjVjbWxuYUhRZ2JtOTBhV05sTENCMGFHbHpYRzRnSUd4cGMzUWdiMllnWTI5dVpHbDBhVzl1Y3lCaGJtUWdkR2hsSUdadmJHeHZkMmx1WnlCa2FYTmpiR0ZwYldWeUxseHVYRzRxSUZKbFpHbHpkSEpwWW5WMGFXOXVjeUJwYmlCaWFXNWhjbmtnWm05eWJTQnRkWE4wSUhKbGNISnZaSFZqWlNCMGFHVWdZV0p2ZG1VZ1kyOXdlWEpwWjJoMElHNXZkR2xqWlN4Y2JpQWdkR2hwY3lCc2FYTjBJRzltSUdOdmJtUnBkR2x2Ym5NZ1lXNWtJSFJvWlNCbWIyeHNiM2RwYm1jZ1pHbHpZMnhoYVcxbGNpQnBiaUIwYUdVZ1pHOWpkVzFsYm5SaGRHbHZibHh1SUNCaGJtUXZiM0lnYjNSb1pYSWdiV0YwWlhKcFlXeHpJSEJ5YjNacFpHVmtJSGRwZEdnZ2RHaGxJR1JwYzNSeWFXSjFkR2x2Ymk1Y2JseHVLaUJPWldsMGFHVnlJSFJvWlNCdVlXMWxJRzltSUhSb1pTQmpiM0I1Y21sbmFIUWdhRzlzWkdWeUlHNXZjaUIwYUdVZ2JtRnRaWE1nYjJZZ2FYUnpYRzRnSUdOdmJuUnlhV0oxZEc5eWN5QnRZWGtnWW1VZ2RYTmxaQ0IwYnlCbGJtUnZjbk5sSUc5eUlIQnliMjF2ZEdVZ2NISnZaSFZqZEhNZ1pHVnlhWFpsWkNCbWNtOXRYRzRnSUhSb2FYTWdjMjltZEhkaGNtVWdkMmwwYUc5MWRDQnpjR1ZqYVdacFl5QndjbWx2Y2lCM2NtbDBkR1Z1SUhCbGNtMXBjM05wYjI0dVhHNWNibFJJU1ZNZ1UwOUdWRmRCVWtVZ1NWTWdVRkpQVmtsRVJVUWdRbGtnVkVoRklFTlBVRmxTU1VkSVZDQklUMHhFUlZKVElFRk9SQ0JEVDA1VVVrbENWVlJQVWxNZ1hDSkJVeUJKVTF3aVhHNUJUa1FnUVU1WklFVllVRkpGVTFNZ1QxSWdTVTFRVEVsRlJDQlhRVkpTUVU1VVNVVlRMQ0JKVGtOTVZVUkpUa2NzSUVKVlZDQk9UMVFnVEVsTlNWUkZSQ0JVVHl3Z1ZFaEZYRzVKVFZCTVNVVkVJRmRCVWxKQlRsUkpSVk1nVDBZZ1RVVlNRMGhCVGxSQlFrbE1TVlJaSUVGT1JDQkdTVlJPUlZOVElFWlBVaUJCSUZCQlVsUkpRMVZNUVZJZ1VGVlNVRTlUUlNCQlVrVmNia1JKVTBOTVFVbE5SVVF1SUVsT0lFNVBJRVZXUlU1VUlGTklRVXhNSUZSSVJTQkRUMUJaVWtsSFNGUWdTRTlNUkVWU0lFOVNJRU5QVGxSU1NVSlZWRTlTVXlCQ1JTQk1TVUZDVEVWY2JrWlBVaUJCVGxrZ1JFbFNSVU5VTENCSlRrUkpVa1ZEVkN3Z1NVNURTVVJGVGxSQlRDd2dVMUJGUTBsQlRDd2dSVmhGVFZCTVFWSlpMQ0JQVWlCRFQwNVRSVkZWUlU1VVNVRk1YRzVFUVUxQlIwVlRJQ2hKVGtOTVZVUkpUa2NzSUVKVlZDQk9UMVFnVEVsTlNWUkZSQ0JVVHl3Z1VGSlBRMVZTUlUxRlRsUWdUMFlnVTFWQ1UxUkpWRlZVUlNCSFQwOUVVeUJQVWx4dVUwVlNWa2xEUlZNN0lFeFBVMU1nVDBZZ1ZWTkZMQ0JFUVZSQkxDQlBVaUJRVWs5R1NWUlRPeUJQVWlCQ1ZWTkpUa1ZUVXlCSlRsUkZVbEpWVUZSSlQwNHBJRWhQVjBWV1JWSmNia05CVlZORlJDQkJUa1FnVDA0Z1FVNVpJRlJJUlU5U1dTQlBSaUJNU1VGQ1NVeEpWRmtzSUZkSVJWUklSVklnU1U0Z1EwOU9WRkpCUTFRc0lGTlVVa2xEVkNCTVNVRkNTVXhKVkZrc1hHNVBVaUJVVDFKVUlDaEpUa05NVlVSSlRrY2dUa1ZIVEVsSFJVNURSU0JQVWlCUFZFaEZVbGRKVTBVcElFRlNTVk5KVGtjZ1NVNGdRVTVaSUZkQldTQlBWVlFnVDBZZ1ZFaEZJRlZUUlZ4dVQwWWdWRWhKVXlCVFQwWlVWMEZTUlN3Z1JWWkZUaUJKUmlCQlJGWkpVMFZFSUU5R0lGUklSU0JRVDFOVFNVSkpURWxVV1NCUFJpQlRWVU5JSUVSQlRVRkhSUzVjYmx4dUtpOWNibHh1THlwY2JpQXFJRlJvWlNCbWIyeHNiM2RwYm1jZ2MyVmpkR2x2YmlCcGN5QmtaWEpwZG1Wa0lHWnliMjBnYUhSMGNITTZMeTluYVhSb2RXSXVZMjl0TDNCb2IzTndhRzl5YW5NdmNHaHZjM0JvYjNJdllteHZZaTh5TTJJNVpEQTNOV1ZpWXpWaU56TmhZakUwT0dJMlpXSm1Zekl3WVdZNU4yWTROVGN4TkdNMEwzQmhZMnRoWjJWekwzZHBaR2RsZEhNdmMzUjViR1V2ZEdGaVltRnlMbU56Y3lCY2JpQXFJRmRsSjNabElITmpiM0JsWkNCMGFHVWdjblZzWlhNZ2MyOGdkR2hoZENCMGFHVjVJR0Z5WlNCamIyNXphWE4wWlc1MElIZHBkR2dnWlhoaFkzUnNlU0J2ZFhJZ1kyOWtaUzVjYmlBcUwxeHVYRzR1YW5Wd2VYUmxjaTEzYVdSblpYUnpMbmRwWkdkbGRDMTBZV0lnUGlBdWNDMVVZV0pDWVhJZ2UxeHVJQ0JrYVhOd2JHRjVPaUJtYkdWNE8xeHVJQ0F0ZDJWaWEybDBMWFZ6WlhJdGMyVnNaV04wT2lCdWIyNWxPMXh1SUNBdGJXOTZMWFZ6WlhJdGMyVnNaV04wT2lCdWIyNWxPMXh1SUNBdGJYTXRkWE5sY2kxelpXeGxZM1E2SUc1dmJtVTdYRzRnSUhWelpYSXRjMlZzWldOME9pQnViMjVsTzF4dWZWeHVYRzVjYmk1cWRYQjVkR1Z5TFhkcFpHZGxkSE11ZDJsa1oyVjBMWFJoWWlBK0lDNXdMVlJoWWtKaGNsdGtZWFJoTFc5eWFXVnVkR0YwYVc5dVBTZG9iM0pwZW05dWRHRnNKMTBnZTF4dUlDQm1iR1Y0TFdScGNtVmpkR2x2YmpvZ2NtOTNPMXh1ZlZ4dVhHNWNiaTVxZFhCNWRHVnlMWGRwWkdkbGRITXVkMmxrWjJWMExYUmhZaUErSUM1d0xWUmhZa0poY2x0a1lYUmhMVzl5YVdWdWRHRjBhVzl1UFNkMlpYSjBhV05oYkNkZElIdGNiaUFnWm14bGVDMWthWEpsWTNScGIyNDZJR052YkhWdGJqdGNibjFjYmx4dVhHNHVhblZ3ZVhSbGNpMTNhV1JuWlhSekxuZHBaR2RsZEMxMFlXSWdQaUF1Y0MxVVlXSkNZWElnUGlBdWNDMVVZV0pDWVhJdFkyOXVkR1Z1ZENCN1hHNGdJRzFoY21kcGJqb2dNRHRjYmlBZ2NHRmtaR2x1WnpvZ01EdGNiaUFnWkdsemNHeGhlVG9nWm14bGVEdGNiaUFnWm14bGVEb2dNU0F4SUdGMWRHODdYRzRnSUd4cGMzUXRjM1I1YkdVdGRIbHdaVG9nYm05dVpUdGNibjFjYmx4dVhHNHVhblZ3ZVhSbGNpMTNhV1JuWlhSekxuZHBaR2RsZEMxMFlXSWdQaUF1Y0MxVVlXSkNZWEpiWkdGMFlTMXZjbWxsYm5SaGRHbHZiajBuYUc5eWFYcHZiblJoYkNkZElENGdMbkF0VkdGaVFtRnlMV052Ym5SbGJuUWdlMXh1SUNCbWJHVjRMV1JwY21WamRHbHZiam9nY205M08xeHVmVnh1WEc1Y2JpNXFkWEI1ZEdWeUxYZHBaR2RsZEhNdWQybGtaMlYwTFhSaFlpQStJQzV3TFZSaFlrSmhjbHRrWVhSaExXOXlhV1Z1ZEdGMGFXOXVQU2QyWlhKMGFXTmhiQ2RkSUQ0Z0xuQXRWR0ZpUW1GeUxXTnZiblJsYm5RZ2UxeHVJQ0JtYkdWNExXUnBjbVZqZEdsdmJqb2dZMjlzZFcxdU8xeHVmVnh1WEc1Y2JpNXFkWEI1ZEdWeUxYZHBaR2RsZEhNdWQybGtaMlYwTFhSaFlpQStJQzV3TFZSaFlrSmhjaUF1Y0MxVVlXSkNZWEl0ZEdGaUlIdGNiaUFnWkdsemNHeGhlVG9nWm14bGVEdGNiaUFnWm14bGVDMWthWEpsWTNScGIyNDZJSEp2ZHp0Y2JpQWdZbTk0TFhOcGVtbHVaem9nWW05eVpHVnlMV0p2ZUR0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmx4dVhHNHVhblZ3ZVhSbGNpMTNhV1JuWlhSekxuZHBaR2RsZEMxMFlXSWdQaUF1Y0MxVVlXSkNZWElnTG5BdFZHRmlRbUZ5TFhSaFlrbGpiMjRzWEc0dWFuVndlWFJsY2kxM2FXUm5aWFJ6TG5kcFpHZGxkQzEwWVdJZ1BpQXVjQzFVWVdKQ1lYSWdMbkF0VkdGaVFtRnlMWFJoWWtOc2IzTmxTV052YmlCN1hHNGdJR1pzWlhnNklEQWdNQ0JoZFhSdk8xeHVmVnh1WEc1Y2JpNXFkWEI1ZEdWeUxYZHBaR2RsZEhNdWQybGtaMlYwTFhSaFlpQStJQzV3TFZSaFlrSmhjaUF1Y0MxVVlXSkNZWEl0ZEdGaVRHRmlaV3dnZTF4dUlDQm1iR1Y0T2lBeElERWdZWFYwYnp0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNiaUFnZDJocGRHVXRjM0JoWTJVNklHNXZkM0poY0R0Y2JuMWNibHh1WEc0dWFuVndlWFJsY2kxM2FXUm5aWFJ6TG5kcFpHZGxkQzEwWVdJZ1BpQXVjQzFVWVdKQ1lYSWdMbkF0VkdGaVFtRnlMWFJoWWk1d0xXMXZaQzFvYVdSa1pXNGdlMXh1SUNCa2FYTndiR0Y1T2lCdWIyNWxJQ0ZwYlhCdmNuUmhiblE3WEc1OVhHNWNibHh1TG1wMWNIbDBaWEl0ZDJsa1oyVjBjeTUzYVdSblpYUXRkR0ZpSUQ0Z0xuQXRWR0ZpUW1GeUxuQXRiVzlrTFdSeVlXZG5hVzVuSUM1d0xWUmhZa0poY2kxMFlXSWdlMXh1SUNCd2IzTnBkR2x2YmpvZ2NtVnNZWFJwZG1VN1hHNTlYRzVjYmx4dUxtcDFjSGwwWlhJdGQybGtaMlYwY3k1M2FXUm5aWFF0ZEdGaUlENGdMbkF0VkdGaVFtRnlMbkF0Ylc5a0xXUnlZV2RuYVc1blcyUmhkR0V0YjNKcFpXNTBZWFJwYjI0OUoyaHZjbWw2YjI1MFlXd25YU0F1Y0MxVVlXSkNZWEl0ZEdGaUlIdGNiaUFnYkdWbWREb2dNRHRjYmlBZ2RISmhibk5wZEdsdmJqb2diR1ZtZENBeE5UQnRjeUJsWVhObE8xeHVmVnh1WEc1Y2JpNXFkWEI1ZEdWeUxYZHBaR2RsZEhNdWQybGtaMlYwTFhSaFlpQStJQzV3TFZSaFlrSmhjaTV3TFcxdlpDMWtjbUZuWjJsdVoxdGtZWFJoTFc5eWFXVnVkR0YwYVc5dVBTZDJaWEowYVdOaGJDZGRJQzV3TFZSaFlrSmhjaTEwWVdJZ2UxeHVJQ0IwYjNBNklEQTdYRzRnSUhSeVlXNXphWFJwYjI0NklIUnZjQ0F4TlRCdGN5QmxZWE5sTzF4dWZWeHVYRzVjYmk1cWRYQjVkR1Z5TFhkcFpHZGxkSE11ZDJsa1oyVjBMWFJoWWlBK0lDNXdMVlJoWWtKaGNpNXdMVzF2WkMxa2NtRm5aMmx1WnlBdWNDMVVZV0pDWVhJdGRHRmlMbkF0Ylc5a0xXUnlZV2RuYVc1bklIdGNiaUFnZEhKaGJuTnBkR2x2YmpvZ2JtOXVaVHRjYm4xY2JseHVMeW9nUlc1a0lIUmhZbUpoY2k1amMzTWdLaTljYmlKZGZRPT0gKi8=",
"ok": true,
"headers": [
[
"content-type",
"text/css"
]
],
"status": 200,
"status_text": ""
}
},
"base_uri": "https://localhost:8080/",
"height": 66
}
},
"source": [
"labels1 = list()\n",
"reviews1 = list()\n",
"reviews2 = list()\n",
"reviews3 = list()\n",
"\n",
"\n",
"for file in tqdm(file_paths): # A LOOOTtttt of files. Only uncomment when code bug free.\n",
"# for file in tqdm(small_paths):\n",
" label1, review1 = clean_data(file)\n",
" label2, review2 = clean_data_with_negation(file)\n",
" label3, review3 = clean_data_with_stopwords(file)\n",
" \n",
" labels1.append(label1)\n",
" reviews1.append(review1)\n",
" \n",
" reviews2.append(review2)\n",
" \n",
" reviews3.append(review3)\n",
" \n",
"movieDF = pd.DataFrame(np.column_stack([labels1, reviews1]), columns=['category', 'review'])\n",
"movieDF.loc[movieDF['category'] == 'pos', 'label'] = 1\n",
"movieDF.loc[movieDF['category'] == 'neg', 'label'] = -1\n",
"movieDF['category'] = movieDF['category'].astype(str)\n",
"movieDF['review'] = movieDF['review'].astype(object)\n",
"movieDF['label'] = movieDF['label'].astype(int)\n",
"\n",
"movieDF2 = pd.DataFrame(np.column_stack([labels1, reviews2]), columns=['category', 'review'])\n",
"movieDF2.loc[movieDF2['category'] == 'pos', 'label'] = 1\n",
"movieDF2.loc[movieDF2['category'] == 'neg', 'label'] = -1\n",
"movieDF2['category'] = movieDF2['category'].astype(str)\n",
"movieDF2['review'] = movieDF2['review'].astype(object)\n",
"movieDF2['label'] = movieDF2['label'].astype(int)\n",
"\n",
"movieDF3 = pd.DataFrame(np.column_stack([labels1, reviews3]), columns=['category', 'review'])\n",
"movieDF3.loc[movieDF3['category'] == 'pos', 'label'] = 1\n",
"movieDF3.loc[movieDF3['category'] == 'neg', 'label'] = -1\n",
"movieDF3['category'] = movieDF3['category'].astype(str)\n",
"movieDF3['review'] = movieDF3['review'].astype(object)\n",
"movieDF3['label'] = movieDF3['label'].astype(int)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "6e124f40ed23432797bf36baccd9769c",
"version_minor": 0,
"version_major": 2
},
"text/plain": [
"HBox(children=(IntProgress(value=0, max=2000), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "eXB64ij3nB1_",
"colab_type": "code",
"outputId": "ea49f718-181e-4502-a365-e6bfc9cf8a4d",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
}
},
"source": [
"movieDF.head()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>category</th>\n",
" <th>review</th>\n",
" <th>label</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>neg</td>\n",
" <td>[plot, two, teen, couples, go, to, a, church, ...</td>\n",
" <td>-1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>neg</td>\n",
" <td>[so, ask, yourself, what, 8mm, eight, millimet...</td>\n",
" <td>-1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>neg</td>\n",
" <td>[synopsis, a, mentally, unstable, man, undergo...</td>\n",
" <td>-1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>neg</td>\n",
" <td>[the, happy, bastard, s, quick, movie, review,...</td>\n",
" <td>-1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>neg</td>\n",
" <td>[call, it, a, road, trip, for, the, walking, w...</td>\n",
" <td>-1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" category review label\n",
"0 neg [plot, two, teen, couples, go, to, a, church, ... -1\n",
"1 neg [so, ask, yourself, what, 8mm, eight, millimet... -1\n",
"2 neg [synopsis, a, mentally, unstable, man, undergo... -1\n",
"3 neg [the, happy, bastard, s, quick, movie, review,... -1\n",
"4 neg [call, it, a, road, trip, for, the, walking, w... -1"
]
},
"metadata": {
"tags": []
},
"execution_count": 11
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ucZcmH5CEbSF",
"colab_type": "code",
"colab": {}
},
"source": [
"# labels = list()\n",
"# reviews = list()\n",
"\n",
"\n",
"# # for file in tqdm(file_paths): # A LOOOTtttt of files. Only uncomment when code bug free.\n",
"# for file in tqdm(small_paths):\n",
"# label, review = clean_data_with_negation(file)\n",
"# labels.append(label)\n",
"# reviews.append(review)\n",
" \n",
"# movieDF2 = pd.DataFrame(np.column_stack([labels, reviews]), columns=['category', 'review'])\n",
"# movieDF2.loc[movieDF2['category'] == 'pos', 'label'] = 1\n",
"# movieDF2.loc[movieDF2['category'] == 'neg', 'label'] = -1\n",
"# movieDF2['category'] = movieDF2['category'].astype(str)\n",
"# movieDF2['review'] = movieDF2['review'].astype(object)\n",
"# movieDF2['label'] = movieDF2['label'].astype(int)\n",
"# movieDF2['label'].hist(bins=2)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "_AU9QUoYEbtA",
"colab_type": "code",
"outputId": "9aff1d87-a944-4a18-dfe8-416e6db0910b",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
}
},
"source": [
"movieDF2.head()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>category</th>\n",
" <th>review</th>\n",
" <th>label</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>neg</td>\n",
" <td>[plot, two, teen, couples, go, church, party, ...</td>\n",
" <td>-1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>neg</td>\n",
" <td>[ask, 8mm, eight, millimeter, really, wholesom...</td>\n",
" <td>-1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>neg</td>\n",
" <td>[synopsis, mentally, unstable, man, undergoing...</td>\n",
" <td>-1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>neg</td>\n",
" <td>[happy, bastard, quick, movie, review, damn, y...</td>\n",
" <td>-1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>neg</td>\n",
" <td>[call, road, trip, walking, wounded, stellan, ...</td>\n",
" <td>-1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" category review label\n",
"0 neg [plot, two, teen, couples, go, church, party, ... -1\n",
"1 neg [ask, 8mm, eight, millimeter, really, wholesom... -1\n",
"2 neg [synopsis, mentally, unstable, man, undergoing... -1\n",
"3 neg [happy, bastard, quick, movie, review, damn, y... -1\n",
"4 neg [call, road, trip, walking, wounded, stellan, ... -1"
]
},
"metadata": {
"tags": []
},
"execution_count": 13
}
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "cbRPS9uPRxLH",
"colab": {}
},
"source": [
"# labels = list()\n",
"# reviews = list()\n",
"\n",
"\n",
"# # for file in tqdm(file_paths): # A LOOOTtttt of files. Only uncomment when code bug free.\n",
"# for file in tqdm(small_paths):\n",
"# label, review = clean_data_with_negation(file)\n",
"# labels.append(label)\n",
"# reviews.append(review)\n",
" \n",
"# movieDF3 = pd.DataFrame(np.column_stack([labels, reviews]), columns=['category', 'review'])\n",
"# movieDF3.loc[movieDF3['category'] == 'pos', 'label'] = 1\n",
"# movieDF3.loc[movieDF3['category'] == 'neg', 'label'] = -1\n",
"# movieDF3['category'] = movieDF3['category'].astype(str)\n",
"# movieDF3['review'] = movieDF3['review'].astype(object)\n",
"# movieDF3['label'] = movieDF3['label'].astype(int)\n",
"# movieDF3['label'].hist(bins=2)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "Eo7pHLvcRxLK",
"outputId": "02d262b5-0bc4-445c-cbcb-d96af478be98",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
}
},
"source": [
"movieDF3.head()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>category</th>\n",
" <th>review</th>\n",
" <th>label</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>neg</td>\n",
" <td>[plot, two, teen, couples, go, church, party, ...</td>\n",
" <td>-1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>neg</td>\n",
" <td>[ask, 8mm, eight, millimeter, really, wholesom...</td>\n",
" <td>-1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>neg</td>\n",
" <td>[synopsis, mentally, unstable, man, undergoing...</td>\n",
" <td>-1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>neg</td>\n",
" <td>[happy, bastard, quick, movie, review, damn, y...</td>\n",
" <td>-1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>neg</td>\n",
" <td>[call, road, trip, walking, wounded, stellan, ...</td>\n",
" <td>-1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" category review label\n",
"0 neg [plot, two, teen, couples, go, church, party, ... -1\n",
"1 neg [ask, 8mm, eight, millimeter, really, wholesom... -1\n",
"2 neg [synopsis, mentally, unstable, man, undergoing... -1\n",
"3 neg [happy, bastard, quick, movie, review, damn, y... -1\n",
"4 neg [call, road, trip, walking, wounded, stellan, ... -1"
]
},
"metadata": {
"tags": []
},
"execution_count": 15
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "yY16lj6ToZgE",
"colab_type": "text"
},
"source": [
"### Import EmoLex"
]
},
{
"cell_type": "code",
"metadata": {
"id": "h2EhdgYjm4TU",
"colab_type": "code",
"outputId": "8810951b-bf2f-4468-a47f-f3870dc7bd63",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
}
},
"source": [
"emoDF = pd.read_csv(emolex_path, sep=\"\\t\", header=None, names=['word', 'sense', 'is_sense'])\n",
"emoDF = pd.pivot_table(data=emoDF, values='is_sense', index='word', columns='sense').fillna(0).reset_index()\n",
"\n",
"mask = ~(emoDF['negative'].astype(bool) | emoDF['positive'].astype(bool))\n",
"emoDF.loc[mask, 'neutral'] = 1\n",
"emoDF.loc[~mask, 'neutral'] = 0\n",
"emoDF['neutral'] = emoDF['neutral'].astype(int)\n",
"emoDF = emoDF[['word', 'negative', 'positive', 'neutral']]\n",
"emoDF.head()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>sense</th>\n",
" <th>word</th>\n",
" <th>negative</th>\n",
" <th>positive</th>\n",
" <th>neutral</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>aback</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>abacus</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>abandon</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>abandoned</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>abandonment</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"sense word negative positive neutral\n",
"0 aback 0 0 1\n",
"1 abacus 0 0 1\n",
"2 abandon 1 0 0\n",
"3 abandoned 1 0 0\n",
"4 abandonment 1 0 0"
]
},
"metadata": {
"tags": []
},
"execution_count": 16
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Ywsc921tPf6y",
"colab_type": "text"
},
"source": [
"#### Add Negative entries to EmoLex"
]
},
{
"cell_type": "code",
"metadata": {
"id": "yvxz8pCHPfLI",
"colab_type": "code",
"outputId": "5330c651-5eed-471c-c580-a4451189d83c",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
}
},
"source": [
"emoDF2 = emoDF.copy(deep=True)\n",
"\n",
"emoDF2['word'] = emoDF2['word'] + \"_NEG\"\n",
"emoDF2['negative'] = ~(emoDF2['negative'].astype(bool) | emoDF2['neutral'].astype(bool))\n",
"emoDF2['positive'] = ~(emoDF2['positive'].astype(bool) | emoDF2['neutral'].astype(bool))\n",
"emoDF2['negative'] = emoDF2['negative'].astype(int)\n",
"emoDF2['positive'] = emoDF2['positive'].astype(int)\n",
"\n",
"neg_emoDF = pd.concat([emoDF2, emoDF])\n",
"neg_emoDF.head()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>sense</th>\n",
" <th>word</th>\n",
" <th>negative</th>\n",
" <th>positive</th>\n",
" <th>neutral</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>aback_NEG</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>abacus_NEG</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>abandon_NEG</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>abandoned_NEG</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>abandonment_NEG</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"sense word negative positive neutral\n",
"0 aback_NEG 0 0 1\n",
"1 abacus_NEG 0 0 1\n",
"2 abandon_NEG 0 1 0\n",
"3 abandoned_NEG 0 1 0\n",
"4 abandonment_NEG 0 1 0"
]
},
"metadata": {
"tags": []
},
"execution_count": 17
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "HWvgjRRk7xuQ",
"colab_type": "text"
},
"source": [
"### Import SentiWordNet"
]
},
{
"cell_type": "code",
"metadata": {
"id": "z0i0-9s671ZA",
"colab_type": "code",
"outputId": "0a674896-6f07-47d4-e4d6-bb3fb2816a3a",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"source": [
"sen_wordDF = pd.read_csv(\"/gdrive/My Drive/SPRING_2019/LING406/final_project/SentiWordNet/SentiWordNet_3.0.0.txt\", sep='\\t').reset_index(drop=True)\n",
"sen_wordDF = (pd.DataFrame(sen_wordDF['SynsetTerms']\n",
" .str.split(\" \")\n",
" .tolist())\n",
" .merge(sen_wordDF, left_index = True, right_index = True)\n",
" .drop('SynsetTerms', axis=1)\n",
" .melt(id_vars = ['POS ID', 'PosScore', 'NegScore', 'Gloss'], value_name = \"SynsetTerm\")\n",
" .dropna()\n",
")\n",
"sen_wordDF['Score'] = sen_wordDF['PosScore'] - sen_wordDF['NegScore']\n",
"sen_wordDF['SynsetTerm'] = sen_wordDF['SynsetTerm'].apply(lambda x : x.split(\"#\")[0].replace(\"_\", \" \"))\n",
"sen_wordDF = sen_wordDF[['SynsetTerm', 'Score']]\n",
"sen_wordDF.head()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>SynsetTerm</th>\n",
" <th>Score</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>able</td>\n",
" <td>0.125</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>unable</td>\n",
" <td>-0.750</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>dorsal</td>\n",
" <td>0.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>ventral</td>\n",
" <td>0.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>acroscopic</td>\n",
" <td>0.000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" SynsetTerm Score\n",
"0 able 0.125\n",
"1 unable -0.750\n",
"2 dorsal 0.000\n",
"3 ventral 0.000\n",
"4 acroscopic 0.000"
]
},
"metadata": {
"tags": []
},
"execution_count": 18
}
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "liLAfHpbZJjW"
},
"source": [
"#### Add Negative entries to SentiWordNet"
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "dMnTzwPkZJja",
"outputId": "817cc782-7254-4853-9473-cc317c2def7c",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"source": [
"sen_wordDF2 = sen_wordDF.copy(deep=True)\n",
"\n",
"sen_wordDF2['SynsetTerm'] = sen_wordDF2['SynsetTerm'] + \"_NEG\"\n",
"sen_wordDF2['Score'] = -1 * sen_wordDF2['Score']\n",
"\n",
"neg_sen_wordDF = pd.concat([sen_wordDF2, sen_wordDF])\n",
"neg_sen_wordDF.head()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>SynsetTerm</th>\n",
" <th>Score</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>able_NEG</td>\n",
" <td>-0.125</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>unable_NEG</td>\n",
" <td>0.750</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>dorsal_NEG</td>\n",
" <td>-0.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>ventral_NEG</td>\n",
" <td>-0.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>acroscopic_NEG</td>\n",
" <td>-0.000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" SynsetTerm Score\n",
"0 able_NEG -0.125\n",
"1 unable_NEG 0.750\n",
"2 dorsal_NEG -0.000\n",
"3 ventral_NEG -0.000\n",
"4 acroscopic_NEG -0.000"
]
},
"metadata": {
"tags": []
},
"execution_count": 19
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "mioYbZKkGZZT",
"colab_type": "text"
},
"source": [
"## Experiment 1: Naive Approach\n",
"\n",
"**Hypothesis**: The sentiment of a sentence can be determined by the number of times the word occurs with that rating **in the dataset**.\n",
"\n",
"**Approach**:\n",
"Basic approach is as follows:\n",
"1. Normalize Data.\n",
"1. Filter Data.\n",
"1. count the number of times a word occurs with that rating.\n",
"1. take the mean of this measure across all ratings for each word.\n",
"1. Put this in a dict.\n",
"1. For each sentence, compute the 'average rating' by looking up the average rate for each word from the dict, summing it up and dividing by length of sentence.\n",
"\n",
"**Observations**:\n",
"1. Precision = **0.691**\n",
"1. Recall = **0.691**\n",
"1. F_Measure = **0.69**\n",
"\n",
"**Conclusion**: This sucks."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "gLdOmNkUEKrW",
"colab_type": "text"
},
"source": [
"### Normalize Expt. 1\n",
"Number of data points in each class are unbalanced. We \"cutoff\" the data points in each class once they exceed the min data points."
]
},
{
"cell_type": "code",
"metadata": {
"id": "EPlcNj41-lR6",
"colab_type": "code",
"outputId": "360e3db8-07aa-4cb4-a7b5-f3260be3e5ed",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 303
}
},
"source": [
"def cutoff_excess(movieDF):\n",
" min_class = int(movieDF.groupby('label')['category'].count().min())\n",
" naive_normDF = movieDF.groupby('label').head(min_class)\n",
" cutoffDF = movieDF[~movieDF.isin(naive_normDF)].dropna()\n",
" return naive_normDF, cutoffDF\n",
"\n",
"naive_normDF, cutoffDF = cutoff_excess(movieDF)\n",
"naive_normDF['label'].hist(), cutoffDF['label'].hist(bins=2)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(<matplotlib.axes._subplots.AxesSubplot at 0x7f10ee5549e8>,\n",
" <matplotlib.axes._subplots.AxesSubplot at 0x7f10ee5549e8>)"
]
},
"metadata": {
"tags": []
},
"execution_count": 20
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nVer/ASK/tGh8l0uGAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "EyV18luAJWru",
"colab_type": "text"
},
"source": [
"### Count occurances\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "dm5H_qST2B4c",
"colab_type": "code",
"outputId": "706c9250-5f43-464c-c5ea-f71f4068d4ee",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
}
},
"source": [
"def get_word_counts(normDF):\n",
" countDF = (normDF['review']\n",
" .apply(pd.Series)\n",
" .merge(normDF, left_index = True, right_index = True)\n",
" .drop('review', axis=1)\n",
" .melt(id_vars = ['label', 'category'], value_name = \"review_word\")\n",
" )\n",
" return countDF\n",
"countDF = get_word_counts(naive_normDF)\n",
"countDF.head()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>label</th>\n",
" <th>category</th>\n",
" <th>variable</th>\n",
" <th>review_word</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>-1</td>\n",
" <td>neg</td>\n",
" <td>0</td>\n",
" <td>plot</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>-1</td>\n",
" <td>neg</td>\n",
" <td>0</td>\n",
" <td>so</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>-1</td>\n",
" <td>neg</td>\n",
" <td>0</td>\n",
" <td>synopsis</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>-1</td>\n",
" <td>neg</td>\n",
" <td>0</td>\n",
" <td>the</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>-1</td>\n",
" <td>neg</td>\n",
" <td>0</td>\n",
" <td>call</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" label category variable review_word\n",
"0 -1 neg 0 plot\n",
"1 -1 neg 0 so\n",
"2 -1 neg 0 synopsis\n",
"3 -1 neg 0 the\n",
"4 -1 neg 0 call"
]
},
"metadata": {
"tags": []
},
"execution_count": 21
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "wP4cFEV1yGqX",
"colab_type": "text"
},
"source": [
"### Generate dict"
]
},
{
"cell_type": "code",
"metadata": {
"id": "18si7SXs-_Z3",
"colab_type": "code",
"outputId": "c2be6580-2685-4717-aa3a-ed0e3793afc9",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"def get_dict_from_counts(countDF):\n",
" test = (countDF.groupby(['label', 'review_word']).count().reset_index())\n",
" test['tot'] = test['label'] * test['variable']\n",
" test = test.groupby(['review_word'])['tot'].mean().sort_values(ascending=False).reset_index()\n",
" sen_words = defaultdict(float, dict(zip(test['review_word'], test['tot'])))\n",
" return sen_words\n",
"\n",
"sentiment_dict = get_dict_from_counts(countDF)\n",
"\n",
"sentiment_dict['bad'], sentiment_dict['worst'], sentiment_dict['okay'], sentiment_dict['good'], sentiment_dict['amazing']"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(-336.5, -105.0, -6.5, 42.5, 25.0)"
]
},
"metadata": {
"tags": []
},
"execution_count": 22
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Ijcn3IZGyQHA",
"colab_type": "text"
},
"source": [
"### Enrich data using dict"
]
},
{
"cell_type": "code",
"metadata": {
"id": "HJw0wvOmAB9l",
"colab_type": "code",
"outputId": "921b509f-f6db-4d50-ab16-76bc3046eb1c",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
}
},
"source": [
"def lookup_sentiment(testDF, test_dict):\n",
" outDF = testDF.copy(deep=True)\n",
" outDF['sentiment']= testDF['review'].apply(lambda x: (sum([test_dict[y] for y in x])) / len(x))\n",
" return outDF\n",
"\n",
"testDF = lookup_sentiment(movieDF, sentiment_dict)\n",
"testDF.head()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>category</th>\n",
" <th>review</th>\n",
" <th>label</th>\n",
" <th>sentiment</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>neg</td>\n",
" <td>[plot, two, teen, couples, go, to, a, church, ...</td>\n",
" <td>-1</td>\n",
" <td>360.422176</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>neg</td>\n",
" <td>[so, ask, yourself, what, 8mm, eight, millimet...</td>\n",
" <td>-1</td>\n",
" <td>358.972469</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>neg</td>\n",
" <td>[synopsis, a, mentally, unstable, man, undergo...</td>\n",
" <td>-1</td>\n",
" <td>425.452540</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>neg</td>\n",
" <td>[the, happy, bastard, s, quick, movie, review,...</td>\n",
" <td>-1</td>\n",
" <td>387.820158</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>neg</td>\n",
" <td>[call, it, a, road, trip, for, the, walking, w...</td>\n",
" <td>-1</td>\n",
" <td>336.355082</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" category review label \\\n",
"0 neg [plot, two, teen, couples, go, to, a, church, ... -1 \n",
"1 neg [so, ask, yourself, what, 8mm, eight, millimet... -1 \n",
"2 neg [synopsis, a, mentally, unstable, man, undergo... -1 \n",
"3 neg [the, happy, bastard, s, quick, movie, review,... -1 \n",
"4 neg [call, it, a, road, trip, for, the, walking, w... -1 \n",
"\n",
" sentiment \n",
"0 360.422176 \n",
"1 358.972469 \n",
"2 425.452540 \n",
"3 387.820158 \n",
"4 336.355082 "
]
},
"metadata": {
"tags": []
},
"execution_count": 23
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "xM_y_uIZCl-s",
"colab_type": "text"
},
"source": [
"### Testing on entire DF"
]
},
{
"cell_type": "code",
"metadata": {
"id": "clzs46kxvEQ8",
"colab_type": "code",
"colab": {}
},
"source": [
"def get_prf_from_df(trainDF, pred_name='prediction', label_name='labels'):\n",
" label_dict = defaultdict(set)\n",
" predict_dict = defaultdict(set)\n",
"\n",
" for prediction in trainDF[pred_name].unique():\n",
" predict_dict[prediction] = set(trainDF.index[trainDF[pred_name] == prediction].tolist())\n",
"\n",
" for label in trainDF[label_name].unique():\n",
" label_dict[label] = set(trainDF.index[trainDF[label_name] == label].tolist())\n",
"\n",
" prec = float()\n",
" rec = float()\n",
" f_meas = float()\n",
" for key in label_dict:\n",
" p = precision(label_dict[key], predict_dict[key])\n",
" r = recall(label_dict[key], predict_dict[key])\n",
" f = f_measure(label_dict[key], predict_dict[key])\n",
" if p is not None: prec += p / len(label_dict.keys())\n",
" if r is not None: rec += r / len(label_dict.keys())\n",
" if f is not None: f_meas += f / len(label_dict.keys())\n",
"\n",
" return (prec, rec, f_meas)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "JkdACaO3CyuQ",
"colab_type": "code",
"outputId": "c117ef20-1c4a-48c2-bd78-872254d7df4d",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 111
}
},
"source": [
"def test_df(testDF, is_print=False):\n",
" measuresDF = testDF.groupby('label')['sentiment'].mean().reset_index()\n",
" mean_rates = np.asarray(measuresDF['sentiment'].tolist())\n",
" testDF['predicted_label'] = testDF['sentiment'].apply(lambda x : -1 if x <= mean_rates.mean() else 1)\n",
" if is_print:\n",
" print(('precision', 'recall', 'f_measure'), ' = ', get_prf_from_df(testDF, 'label', 'predicted_label'))\n",
" return get_prf_from_df(testDF, 'label', 'predicted_label'), testDF.groupby('label')['predicted_label'].mean().reset_index()\n",
"\n",
"test_df(testDF)[1]"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>label</th>\n",
" <th>predicted_label</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>-1</td>\n",
" <td>-0.258</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>0.236</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" label predicted_label\n",
"0 -1 -0.258\n",
"1 1 0.236"
]
},
"metadata": {
"tags": []
},
"execution_count": 25
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "8_2HbJNCyY3N",
"colab_type": "text"
},
"source": [
"### Calculating metrics"
]
},
{
"cell_type": "code",
"metadata": {
"id": "iorhlNuLwAKx",
"colab_type": "code",
"outputId": "b140eac6-15ef-40a8-909c-4ea0c418e239",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 119
}
},
"source": [
"def test_n_fold_1(testingDF, num_folds = 10):\n",
" featureDF = testingDF.sample(frac=1)\n",
"\n",
" cum_model_precision = float()\n",
" cum_model_recall = float()\n",
" cum_model_f = float()\n",
"\n",
" k_fold_gen = KFold(n_splits=num_folds)\n",
" for train_idx, test_idx in k_fold_gen.split(featureDF):\n",
"\n",
" train = featureDF.iloc[train_idx]\n",
" test = featureDF.iloc[test_idx]\n",
" words_dict = get_dict_from_counts(get_word_counts(cutoff_excess(train)[0]))\n",
" enrichedDF = lookup_sentiment(test, words_dict)\n",
" model_precision, model_recall, model_f = test_df(enrichedDF)[0]\n",
" cum_model_precision += model_precision\n",
" cum_model_recall += model_recall\n",
" cum_model_f += model_f\n",
"\n",
" cum_model_precision = round(cum_model_precision / num_folds, 3)\n",
" cum_model_recall = round(cum_model_recall / num_folds, 3)\n",
" cum_model_f = round(cum_model_f / num_folds, 3)\n",
"\n",
" print(('final precision', 'final recall', 'final f_measure'), ' = ', (cum_model_precision, cum_model_recall, cum_model_f))\n",
"\n",
"for key, value in (zip([\"vanilla\", \"with negation & no stopwords\",\"no stopwords\"], [movieDF, movieDF2, movieDF3])):\n",
" print(key)\n",
"# print(\"vanilla\")\n",
" test_n_fold_1(value, num_folds = 10)\n"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"vanilla\n",
"('final precision', 'final recall', 'final f_measure') = (0.615, 0.615, 0.614)\n",
"with negation & no stopwords\n",
"('final precision', 'final recall', 'final f_measure') = (0.682, 0.682, 0.681)\n",
"no stopwords\n",
"('final precision', 'final recall', 'final f_measure') = (0.691, 0.691, 0.69)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "sbU5XrdLycpl",
"colab_type": "text"
},
"source": [
"### Explaining performance\n",
"\n",
"Most words fall under the neutral category. Hence dont effect perf. Additionally, the dict has incorrect values for a lot of words. Also there is a lot of noise in the dict. "
]
},
{
"cell_type": "code",
"metadata": {
"id": "jxLA5hJRE4Jc",
"colab_type": "code",
"outputId": "704704d7-528b-4483-d55d-cfa1625cc898",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 173
}
},
"source": [
"testDF.groupby('label').head(2).sort_values('label')"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>category</th>\n",
" <th>review</th>\n",
" <th>label</th>\n",
" <th>sentiment</th>\n",
" <th>predicted_label</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>neg</td>\n",
" <td>[plot, two, teen, couples, go, to, a, church, ...</td>\n",
" <td>-1</td>\n",
" <td>360.422176</td>\n",
" <td>-1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>neg</td>\n",
" <td>[so, ask, yourself, what, 8mm, eight, millimet...</td>\n",
" <td>-1</td>\n",
" <td>358.972469</td>\n",
" <td>-1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1000</th>\n",
" <td>pos</td>\n",
" <td>[films, adapted, from, comic, books, have, had...</td>\n",
" <td>1</td>\n",
" <td>393.895105</td>\n",
" <td>-1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1001</th>\n",
" <td>pos</td>\n",
" <td>[every, now, and, then, a, movie, comes, along...</td>\n",
" <td>1</td>\n",
" <td>411.541667</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" category review label \\\n",
"0 neg [plot, two, teen, couples, go, to, a, church, ... -1 \n",
"1 neg [so, ask, yourself, what, 8mm, eight, millimet... -1 \n",
"1000 pos [films, adapted, from, comic, books, have, had... 1 \n",
"1001 pos [every, now, and, then, a, movie, comes, along... 1 \n",
"\n",
" sentiment predicted_label \n",
"0 360.422176 -1 \n",
"1 358.972469 -1 \n",
"1000 393.895105 -1 \n",
"1001 411.541667 1 "
]
},
"metadata": {
"tags": []
},
"execution_count": 27
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "AmnsqRN6-0nV",
"colab_type": "code",
"outputId": "3e456a6c-055d-4e66-f067-b2989e5582b4",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"# bad learnings >:(\n",
"sentiment_dict['disgust'], sentiment_dict['shit'], sentiment_dict['okay'], sentiment_dict['like']"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(1.5, 2.0, -6.5, -43.0)"
]
},
"metadata": {
"tags": []
},
"execution_count": 28
}
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "YlIWI2PN_eDh",
"outputId": "c60b1576-11c2-4839-b1cc-64e6e613b9e9",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 733
}
},
"source": [
"get_random = lambda obj: obj.loc[np.random.choice(obj.index, 1, True),:]\n",
"reviews = testDF.groupby('label').apply(get_random)['review'].tolist()\n",
"# reviews = featureDF.groupby('label').head(1).sort_values('label')['review'].tolist()\n",
"\n",
"fig, ax = plt.subplots(len(reviews),1, figsize=(10,10), constrained_layout=True)\n",
"\n",
"props = dict(boxstyle='square', facecolor='white', alpha=0.5)\n",
"\n",
"for i in range(0, len(reviews)):\n",
" review = reviews[i]\n",
" ax[i].hist([sentiment_dict[word] for word in review], bins=50)\n",
" ax[i].set_title(str(\"label = \" + str(2*i - 1)) + \", len = \" + str(len(review)))\n",
"\n",
"\n",
"\n",
"fig.suptitle('Histogram of sentiment lookup for each word in ' + str(len(reviews)) + ' classes', fontsize=16)\n",
"plt.show()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAtgAAALMCAYAAADelMWIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xvc7eWc//HXW5ucVdqSil2EwSR+\nW8w4RSExwhhTxqHJTBrMDDPmJ2MQwwxjMIxxqJ8mBslhjEZOoZxmwo50QAk7la220kmk8vn9cX1v\ne7W6z/d1d993+/V8PNbjXuv6Xt/vuta1vvda73Wta32/qSokSZIk9XGTpW6AJEmSdGNiwJYkSZI6\nMmBLkiRJHRmwJUmSpI4M2JIkSVJHBmxJkiSpIwO2JpXkwCSV5G6TLFs1LDtskvpr5ngfB3Vp8I1Y\nkt9J8tUkPx/6ePelbhNAkjVJDkuyyyTL1ic5agmaNStz2feS7Dn0+56L1JaJ7e+9GNufq+W6v/Uw\n7K+VZNVSt2WhkpyY5MQZ6qwZHu+Bne5zbZLDk3w3yZVJfpTkfUl27rT9Rf1fk25IK/5FRsvGccDv\nABvmsM6BtH3wyMVo0I3Iu4BfAL8HXAmctbTN+Y01wCuALwM/GFv2JOCyG7pBc3Ag7ntTWa77m+Zu\nA+11+fudtrc/cG/gLcAZwA7Ay4B1SXavqnM73Y+04hmw1UVVbQQ2LnU7ZivJllV11VK3YyZJbgLc\nA3hNVX1+qdszW1X1zaVug+au9/6WJMBNq+pXC27cZqbHa9Sw/kmdmgTwuuG1/jeSfAX4IfCnwMs7\n3pe0ojlFRF1MNkUkydOSfDPJFUkuS3JakucMy04EHg48eFivRr/uTLJHks8O6/48yeeS7DHJ/b5g\nmI7wyyRfS/K749MTRtr2sCQfSnIJ8NVh2QOSfDjJeUl+keTMJP+Q5BZj93Niki8n2SfJKUPdbyZ5\n4DBl5h+SbEhycZKjktxqFn122yRvTfLjJFcN9/3CIZQwfK17Le3/9GXDY1g/zfbunuSjSS4c+uNH\nw+NdNVJndZJ3JDl/uM/vJjl4bDsT/fWg4evfy4Y2viXJzYc6ewInDKscP/Ic7jksn+o5+N0kH0xy\neZILkrxkWL7P0J8/T/L1JP9nksf35CQnDV9NXzI8tjuP1Vmf5L1J9k/ynWF765I8ZPS5ZJp9bzbS\n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\nyXXT5tuSPLnK070lyb8M7ySJ2i6a+i6O2i6O2i6O2i6O2i6W+v6vH+nura920Ib9ikh335Tkplc7\nrqr2dPeO16BLxxy1XSz1XRy1XRy1XRy1XRy1XSz1XbtFXSLyfJK3rtg+c2oDAIDXtUUF7H9Ick5V\nnVVVJyS5JsndC3otADAacBIAAAUNSURBVABYGgu5RKS7X6mq65N8KbOf6bu1u59Y59O96mUkrJva\nLpb6Lo7aLo7aLo7aLo7aLpb6rtFCvuQIAADHKndyBACAgQRsAAAYaKkCdlV9vKqer6qHp+WyFfs+\nWlX7qurJqnrfivZLprZ9VbVrY3q++ajb/Krq2ap6bBqre6a206rq3qp6avp76tReVfXHU70frarz\nN7b3y6Wqbq2qA1X1+Iq2NdeyqnZOxz9VVTs34r0sm1Vq67N2gKp6a1XdX1XfqKonqurDU7uxO6ej\n1NbYHaCqTqqqr1bVI1N9f29qP6uqHpxqdfv0QxWpqhOn7X3T/u0rnuuIdT/mdffSLEk+nuQ3j9B+\nbpJHkpyY5KwkT2f25cnjpvWzk5wwHXPuRr+PZV/UbVgdn03ylsPafj/Jrml9V5JPTOuXJfmrJJXk\nwiQPbnT/l2lJclGS85M8vt5aJjktyTPT31On9VM3+r1t9LJKbX3WjqnttiTnT+tvTPJPUw2N3cXV\n1tgdU99KcvK0fnySB6cxeUeSa6b2zyT5lWn9V5N8Zlq/JsntR6v7Rr+/ZViWagb7KK5I8rnu/o/u\n/uck+zK7Hbtbsq+Pui3OFUl2T+u7k1y5ov2zPfP3SU6pqm0b0cFl1N1/m+TbhzWvtZbvS3Jvd3+7\nu19Kcm+SSxbf++W2Sm1X47N2Dbp7f3d/fVr/XpK9Sc6IsTu3o9R2NcbuGkxj8N+mzeOnpZO8J8md\nU/vhY/fQmL4zycVVVVm97se8ZQzY10+nzm49dFots/+ovrXimOemttXaOTp1G6OT/E1Vfa2qrpva\nTu/u/dP6C0lOn9bVfO3WWks1XhuftQNNp8zPy2wm0Ngd6LDaJsbuEFV1XFU9nORAZv+n7ukkL3f3\nK9MhK2v1gzpO+7+T5M1R31W95gG7qr5cVY8fYbkiyaeT/GiSdyTZn+QPXuv+wRq8u7vPT3Jpkg9V\n1UUrd/bs/JnfwRxALYfzWTtQVZ2c5PNJPtLd3125z9idzxFqa+wO0t3/1d3vyOxu2xckefsGd+l1\nZSE3mjma7v7p/89xVfUnSb44bR7t1utuyb52bmU/QHc/P/09UFV/mdkH1ItVta2790+nfg9Mh6v5\n2q21ls8n+anD2h94Dfq56XT3i4fWfdbOp6qOzywA3tbdX5iajd0BjlRbY3e87n65qu5P8s7MLlva\nMs1Sr6zVofo+V1Vbkrwpyb/G/7ataqkuETnsmtT3Jzn0rfe7k1wzfYv1rCTnJPlq3JJ9vdRtTlX1\nhqp646H1JO/NbLzeneTQLwDsTHLXtH53kl+cfkXgwiTfWXEKmSNbay2/lOS9VXXqdNr4vVMbh/FZ\nO8Z0DeotSfZ29ydX7DJ257RabY3dMapqa1WdMq3/UJKfyew69/uTXDUddvjYPTSmr0rylenszGp1\nZ6O/ZblySfJnSR5L8mhm/2jbVuz7WGbXBz2Z5NIV7Zdl9u3ip5N8bKPfw2ZZ1G3u+p2d2TenH0ny\nxKEaZnZN2n1Jnkry5SSnTe2V5FNTvR9LsmOj38MyLUn+PLPTvf+Z2TV8166nlkl+KbMv2exL8sGN\nfl/LsKxSW5+1Y2r77swu/3g0ycPTcpmxu9DaGrtj6vvjSR6a6vh4kt+d2s/OLCDvS/IXSU6c2k+a\ntvdN+89+tbof64tbpQMAwEBLdYkIAABsdgI2AAAMJGADAMBAAjYAAAwkYAMAwEACNgAADCRgAwDA\nQP8DZ1p/gD3OfDQAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 720x720 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "s3CxnLCyylwV",
"colab_type": "text"
},
"source": [
"## Experiment 2: Using Emolex to enrich data\n",
"\n",
"**Hypothesis**: The sentiment of a sentence can be determined by the number of times the word occurs with that rating **in the EmoLex dataset**.\n",
"\n",
"**Approach**:\n",
"Basic approach is as follows:\n",
"1. Convert emotex to a dict with positive, negative and neutral labels.\n",
"1. For each sentence, compute the 'average rating' by looking up the average rate from the dict.\n",
"\n",
"**Observations**:\n",
"1. Precision = **0.651**\n",
"1. Recall = **0.651**\n",
"1. F_Measure = **0.65**\n",
"\n",
"**Conclusion**: Same problem as before. most words are classified into the 'neutral' category. We lose info from that."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "qeJJtzzLzGxl",
"colab_type": "text"
},
"source": [
"### Converting EmoTex"
]
},
{
"cell_type": "code",
"metadata": {
"id": "XXwqWMYxykp9",
"colab_type": "code",
"colab": {}
},
"source": [
"emoDF\n",
"emo_dict = pd.melt(emoDF, id_vars=['word'], value_vars=['negative', 'positive', 'neutral']).query('value != 0').drop('value', axis=1)\n",
"\n",
"emo_dict.loc[emo_dict['sense'] == 'negative', 'label'] = -1\n",
"emo_dict.loc[emo_dict['sense'] == 'positive', 'label'] = 1\n",
"emo_dict.loc[emo_dict['sense'] == 'neutral', 'label'] = 0\n",
"\n",
"emo_dict = defaultdict(float, dict(zip(emo_dict['word'], emo_dict['label'])))"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "BIgY0k484DUE",
"colab_type": "text"
},
"source": [
"### Calculating metrics"
]
},
{
"cell_type": "code",
"metadata": {
"id": "TPnrq0vKYza0",
"colab_type": "code",
"colab": {}
},
"source": [
""
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "hGRowywJ3gBl",
"colab_type": "code",
"outputId": "a2f59e48-b36f-4b34-fe3f-42c84c2e074f",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 119
}
},
"source": [
"def test_n_fold_2(testingDF, num_folds = 10):\n",
" cum_model_precision = float()\n",
" cum_model_recall = float()\n",
" cum_model_f = float()\n",
"\n",
" featureDF = testingDF.sample(frac=1)\n",
"\n",
" results = test_df(lookup_sentiment(featureDF, emo_dict))\n",
"\n",
" cum_model_precision = round(results[0][0], 3)\n",
" cum_model_recall = round(results[0][1], 3)\n",
" cum_model_f = round(results[0][2], 3)\n",
" print(('final precision', 'final recall', 'final f_measure'), ' = ', (cum_model_precision, cum_model_recall, cum_model_f))\n",
"\n",
"\n",
"\n",
"for key, value in (zip([\"vanilla\", \"with negation & no stopwords\",\"no stopwords\"], [movieDF, movieDF2, movieDF3])):\n",
" print(key)\n",
"# print(\"vanilla\")\n",
" test_n_fold_2(value)\n",
" \n",
"featureDF = movieDF.sample(frac=1)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"vanilla\n",
"('final precision', 'final recall', 'final f_measure') = (0.647, 0.648, 0.647)\n",
"with negation & no stopwords\n",
"('final precision', 'final recall', 'final f_measure') = (0.56, 0.564, 0.552)\n",
"no stopwords\n",
"('final precision', 'final recall', 'final f_measure') = (0.651, 0.651, 0.65)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "X89vq1N2542-",
"colab_type": "text"
},
"source": [
"### Explaining results\n",
"We have taken care of the problem of having bad data for a lot of dict entries but we are still losing a lot of info as most words don't contribute to calculating the sentiment."
]
},
{
"cell_type": "code",
"metadata": {
"id": "rPi5FiAb_5Of",
"colab_type": "code",
"outputId": "f3a5d13a-530a-4936-ff4d-4db40fd95c42",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"# no more bad learnings :)\n",
"emo_dict['disgust'], emo_dict['shit'], emo_dict['okay'], emo_dict['like']"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(-1.0, -1.0, 0.0, 0.0)"
]
},
"metadata": {
"tags": []
},
"execution_count": 32
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "S-A-GzP-5rR9",
"colab_type": "code",
"outputId": "eedd13db-1f93-4589-84f3-3201966302ac",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 733
}
},
"source": [
"get_random = lambda obj: obj.loc[np.random.choice(obj.index, 1, True),:]\n",
"reviews = featureDF.groupby('label').apply(get_random)['review'].tolist()\n",
"# reviews = featureDF.groupby('label').head(1).sort_values('label')['review'].tolist()\n",
"\n",
"fig, ax = plt.subplots(len(reviews),1, figsize=(10,10), constrained_layout=True)\n",
"\n",
"for i in range(0, len(reviews)):\n",
" review = reviews[i]\n",
" ax[i].hist([emo_dict[word] for word in review], bins=50)\n",
" ax[i].set_title(str(\"label = \" + str(2*i - 1)) + \", len = \" + str(len(review)))\n",
"\n",
"fig.suptitle('Sentiment of each word in ' + str(len(reviews)) + ' sample labels', fontsize=16)\n",
"plt.show()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\nSb690vG/rN6Tk1y4A8ut+e/860l+kIXXa5L3JPl+kpsvlN1/3q53LVvOm5N8Ydlx15lC6I+scNwd\nvez1cdzC+LreO9Y49lZ8XSwc1y9P8rEV/obLj4Gt8z74X/P4tZNclORVy+a92XysPGk723Vxkifs\n6N/ew2NvfziDDUm6+zOZQtBdM/3I7rRMZwHfWVVPX6h670xnBC+av07eZz6r+84kt6uq6y5b9NuX\njX8i05m2XfH3C+3+WpILkpzS3d9YqPOv8/NB8/MvZ/on/Jpl7f5Qkm9m+kHhohO7+/sL4x+fn3e2\n7b+Y5G3d/fWFtn8j01nDu+7E8ta9PVX1M/NX1l/O9GHk+/P8P7GwvHslOb+7T1jHupf/TT+etffL\nxzJ9mFj6wew9Mp0Bfveysu8nef88vrQNf7NsWUvjy/fb33b38j7Xd07yju7+1lJBd5+d5P+t0d61\n7PJxXVVPTfJrSR7f3WeuUf3DSfarqr+pqvtV1b7LK1TVdavqeVX1uUxdZL6f6exqZTrbvOgz/R/7\n+C+9Xt65rN6/JjmwqmpZ+Rt7oetYd/+/TGdt77ydbdjR947tmrvpvLaqzs20rd/P9AH1J1aovvwY\nOCvJKQvtvXOmD7zLX09nZ9oHy98fFn04yVOq6olV9dMr7CvYlARsmHX3Zd39vu5+enf/UqavYD+e\n5BlVtdRN4D9l+rr1+8sez5+n32DZYi9cNn5Jku32112Hry0b/94qZVlY11J/yDNz+bZfJ+tr9+Ly\ndtT1s3LXl/Nz+S4Y67Gu7Zm/lj9pXv9/T/JzSX42yT/kP27LDZKcu851r7Rvrr5SxSVzGHtvkrvP\n3Vd+MVO3kZOT/Mwcru6e5MPdffE829LX98v32/nLpmeVesnU3eHLK5SvVLYjdum4nrsj/FGSp3f3\nq9aq393vzdSV46BM3VO21dSf/7YL1f4qU/eQF2b6APWzmbpvZIW2rfZ6Wal8nyTLu1Cttk+315d8\nR987VlVV18505vt2mboQ/UKm7X1VVj4W12rv0uvpXSu076fXaNt/zfRB+XcyfStzbq2jTz7s7VxF\nBFbR3V+qqldk6st5cKZ+2l9N8k9JnrfKbF+6gpq3o746P98rlw8Ri9N3lwuT/NgK5T+WlduzlvVu\nz72TXC/Jg7v7nKWJtfDDwtlXMnXJ2J1OTvK/M/W5vnamwH1xpi4Sd01ytyR/uVB/KcT+WKY+31kY\nX5y+ZKUrhpyXqb/tciuVXSGq6mFJ/iLJn3T3s9c7X3e/Mckb53B5t0yvwX+oqgOTXC3J4Zm6s/z5\nwrp+emTbF6y2T7d33faR7x13zvQj41/o7qVvPLLwG4mV2rZS2dKHyqXXyyOSfHKFut9crSHdfUGm\nDzKPq6qfyNQX/w8ydYd5yeqbAHs3ARuSVNWNunulM4C3mp+Xzhr+Q6Z/bp/s7u8MWPXSmeFrbrfW\nrjsxU1/Um3T3iYOWeUnW3+73Jjmsqq7T3d9MkvmHU/8lU5/YHbXe7VkK0v/e3WX+EetdMn2lv+Qf\nkxxZVf+lu/9uJ9qzHu/OFAR/P8m/LHWXqar3Zfox6f6ZQviS983PR2bqtrTkofPze9axzg9m2u/X\nWuoiMJ/Vv0v2wIfB+YoZf5XkFd395J1ZxnyG/21VdfNMH35vkOlM81Wy8HeePWLnW7tdD6yqZy51\nE6mquyQ5MNP+Xs3I946Vjuv9Mn3IWMnyY2Brkjtl+pFnknwgU4i+RXev9APadenuTyd52vwNxe7+\nwAobmoANk0/UdBm1dyT5Qqb+iIdl+sr5Dd39b3O9/5npTPb7qupFmX7ws1+mfyY37+5H7eB6PzU/\nP66qjs/0D/P07v7edubZYd39uap6XpIXzWeZ3pvku5m+cv/lTIHn5O0tYwWfSvILVXW/TB9AvjL3\n7VzJ/8p0FYyT5nZ0pqth/GimqzXsru15V6Z+16+uqj/J1GXiD5L8W/5jF7m/SfIbSV5bVc/J1Jf7\nOkl+Jcmfdfe/Zhd19yer6oJMV/B4/sKkpTPbl2Shb3R3f6KqXpvkmfOZyQ9kCmi/n+S13f3xrO1Z\nmbpW/GNVPT9TwH9mdr2LyA6rql/M9MPhjyU5rqrutDD5ku7+l+3M+4eZzrienOmDwYGZfsh7Wndv\nm+uckuS3q+q8TN9IPCrruPzfTrpOkr+tqr/MdLOc52T6YfCrtzPPyPeODyT5RpIXV9Uzklwr049f\nv5LpG5vlvpMfHgNXz/Qa+EaSFyTT7yGq6inz8rZk+p3HRZn2312TvKe7/8/yhVbV9TK9xl6Tqa/2\n9zOF/P0yfWiFTUvAhsnvZQrUS//IL8t0fd5jk/zZUqXu/reqOjRTSPmjTP9cv5rpR147fOanuz9W\n03WGj8kU8H4k0y/3z9rpLVl9XU+rqjMyf52bKeSenamP8md3YpFPzXTVgjdkOpN9fFY5Y9jdp1fV\n3TKdiT0+0w/PTsl0VY2P7cS617U9c6h9aKa/6wmZulocm6nryN0WlvX9qrpXpkuyHTM/fzVT4F3e\nFWNXvCfJg/MfL8W3NHxKd393Wf1HJPl8prD49Ezh8nmZAtKauvuMqjosU6B/faYuAc/LFNTvtjMb\nsAvukSnc3SGX/5HlFzNd2WI1H8oUqF+Qqe/5BZkC3O8v1HlIpi4JL84UKN+Q6ZuBt+160y/nOZku\n9XdcpnB7cqYfay4/g/7vRr53dPe2+duAP8l0hZ4vZTqbf/2sfFnBVyf5VpIXZfqm5MNJjuzufz+2\nu/svq+rsTJfb+7VM+eDcTN1aVuv68t1MV6/5jUxdVn6Q5NNJHtrdb92RbYK9TV3+R+cAwHJz14ov\nJPmN7h51C3lgL+RXvsBer6Y7IP7SOut2Vd1iJ9ez0/NeEarqblV1zto1AdgVAjbAlUhV/VRVvbOm\nW8Nf6b+CnD+UfKum231fPF+5Z2naU6rqE1X1zar6wtxPePn8T5ynfauqzqjt3IkV4IqiDzbAlcv3\nM/Uv/otMtynfG9xulZvNVKZrR5+e5Mcz/VDv7O5+XZJU1X9LcnSS+2a63frNs3OXfVyX+Ue8bqQC\nrMkZbGBTqao7VtUHq+rrVXVeVb2oqq62rNphVfX5+Szx8xdvmlFVj5rPlH5tPpN80yuy/d396e5+\nZVa+XvEOqaobV9WbqmrbfBb4CQvTnllVb6iqV89nkD85/0jvCtPdf9zdH+3uS+dLwL010yUGM/9N\nnpHkt7r7Uz353OIP9wD2FAEb2GwuS/Jbma6mcOdMl8177LI6D0hyaKYrXhye6SoeqarDkzwtya9m\nugrEP2W69Nyaquov5lC/0uP0Adu1Q+aA+neZLpt3QKb98KSq+pWFavdP8rok+2a6CsuLtrO807ez\nfX+xRnPeV1XnV9Wb5x8SrrT8ynTHwqUPFgfOj5+qqrPnDwh/UO4gCGwA3oiATaW7P9Ldp8xnRc/K\ndPfEuy6r9rzuvnC+/vmfZboEXDJdF/053X1Gd1+a6XJrh6znLHZ3P7a7913lcdu15t8NfjbJlu7+\nw+7+Xnd/PtNlF49cqPP+7n5Hd1+W5K8z3Zp7Rd192+1s3/IPMIvumukSfbfKdLm5t9XKdyR8Zqb/\nWX81jx84P98r0+28757p73T09jcbYPcTsIFNpapuWVVvm8+YfiNTSN5/WbWzF4a/mOTG8/BNk/z5\n0pnZTNfIruymG5pU1UMXfvz394MXf9MkN14805zp7PzibbXPXxj+dpJrrBJ+d1p3v28O+F/PdN3q\nmyX5ycU6VfX4TH2x79vdS3c/Xbob4h9399cXPiwdNrJ9ADtDwAY2m5dkuuvcwd193UyhcvkP1w5a\nGL5Jfnhb8bOTPHrZ2dlrdvcH1lppVb10ISwvf6zYn7q7X9Pd154f99nhLd2+s5N8Ydm2XKe7dyqg\nzn20V9u+l+7AojoLf4+qelSmmwPds7sXLzH46Uy3SO9l8wLscQI2sNlcJ9Ntoi+uqlsl+c0V6jyl\nqvarqoMynVV9/Vz+0iRPrarbJNOtoqvqQetZaXc/ZiEsL3/cZr2Nr8k1Mt32PFV1jaq6+sL046rq\nuHUs6p+TfLOqfreqrllVV6npEoA/u962LOru22xn+x6zyrbcpqoOmdd97Ux3Jjw30xVBUtNdOP8o\nyS/PXVgW1/ftTH+X36mq61TVgZnuwrk77twIsEMEbGCzeXKmW0F/M1Of49evUOetST6S6RbRb0/y\nyiTp7rdkutX46+buJZ9IMvrM8lpumql7xNJZ7+9kOpu75KBc/lbklzP3q75fkkMy3Z3wK0lekeR6\nIxu7hhtm2v/fyHRL+K1J7rdwy/FnJblBkg+vcjb88UkuzvQNwweT/J8kr7qC2g6wKrdKB9hLzJcb\n/FiS2y6EVACuYAI2AAAMpIsIAAAMJGADAMBAAjYAAAw09IYBO2v//ffvrVu37ulmAADAqj7ykY98\npbu3rFVvQwTsrVu35tRTT93TzQAAgFVV1RfXU08XEQAAGEjABgCAgQRsAAAYSMAGAICBBGwAABhI\nwAYAgIEEbAAAGEjABgCAgQRsAAAYSMAGAICBBGwAABhIwAYAgIH22dMNAGC8rce+fYfnOeu5990N\nLQHYfJzBBgCAgQRsAAAYSMAGAICBBGwAABhIwAYAgIEEbAAAGEjABgCAgQRsAAAYSMAGAICBBGwA\nABhIwAYAgIEEbAAAGEjABgCAgQRsAAAYSMAGAICBBGwAABhIwAYAgIEEbAAAGEjABgCAgQRsAAAY\nSMAGAICBBGwAABhIwAYAgIEEbAAAGEjABgCAgQRsAAAYSMAGAICBBGwAABhIwAYAgIEEbAAAGEjA\nBgCAgQRsAAAYSMAGAICBBGwAABhIwAYAgIHWHbCr6ipV9S9V9bZ5/GZV9aGqOrOqXl9VV5vLrz6P\n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\nV4bbaMeaW6UDAMBAuogAAMBAAjYAAAwkYAMAwEACNgAADCRgAwDAQAI2AAAMJGADAMBAAjYAAAwk\nYAMAwEACNgAADCRgAwDAQAI2AAAMJGADAMBAAjYAAAwkYAObRlWdVVW/tM66XVW32Mn17PS8u0NV\nHVdVz9rT7QDYLARsgCuBqnp8VZ1aVZdU1XF7uj27oqqOrKpPV9VFVXVBVR1fVdddmH79qnpLVX2r\nqr5YVb+2MO1uVfWDqrp44XHUntkSgJUJ2ABXDl9K8qwkr9rTDRng/yW5S3dfL8nNk+yTaduWvDjJ\n95LcMMlDk7ykqm6zMP1L3X3thcfxV1TDAdZDwAY2paq6Y1V9sKq+XlXnVdWLqupqy6odVlWfr6qv\nVNXzq+pHFuZ/VFWdUVVfq6p3VtVNd2d7u/vN3f23Sb66q8uqqvtV1Wnztn+gqm67MO2sqnpyVZ0+\nn2F+fVVdY1fXuai7z+7urywUXZbkFvP6r5Xk/0vy+919cXe/P8kJSR42sg0Au5OADWxWlyX5rST7\nJ7lzknsmeeyyOg9IcmiSOyQ5PMmjkqSqDk/ytCS/mmRLkn9K8tr1rLSq/mIOtis9Th+wXWut//aZ\nzoI/OskNkvxlkhOq6uoL1R6c5N5Jbpbktkkescqyfn472/L1qvr57bTj56vqoiTfzBSo/2yedMsk\nl3b3ZxaqfyzJ4hns/1RVX66qL1TVC+ZQDrBhCNjAptTdH+nuU7r70u4+K1PQvOuyas/r7gu7+98y\nBcCHzOWPSfKc7j6juy9N8kdJDlnPWezufmx377vK47ZrzT/AMUn+srs/1N2Xzd0rLklyp4U6L+zu\nL3X3hUn+LskhKy2ou9+/nW3Zdz77vKJ53uslOTDJ85OcNU+6dpJvLKt+UZLrzMP/OrfnRknukeRn\nkvzp+jcfYPcTsIFNqapuWVVvq6rzq+obmULy/suqnb0w/MUkN56Hb5rkz5fO1Ca5MEklOWB3t3uA\nmyb57cUzzUkOyg+3LUnOXxj+dqbQu1t097lJ/iHJ6+aii5Ncd1m162Y6053uPr+7P9XdP+juLyT5\nnUxnwAE2DAEb2Kxekuls6MHdfd1MXT5qWZ2DFoZvkumHhskUvB+97GztNbv7A2uttKpeuuwKGIuP\nTw7YrrWcneTZy9r+o929ri4ui6rqF7azLRdX1S+sc1H7JPnxefgzSfapqoMXpt8uyWr7puN/GbDB\n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\naN+iG7BoB4/evul1nrzhnXNoCQAAe4Ez2AAA0JGADQAAHQnYAADQkYANAAAdCdgAANCRgA0AAB0J\n2AAA0JGADQAAHQnYAADQkYANAAAdzS1gV9XbquqRqjpRVUfn9T4AALBM5hKwq+qsJB9K8vYkFyd5\nd1VdPI/3AgCAZTKvM9iXJjnRWnuitfbfST6e5Mo5vRcAACyNfXN63Vcn+dfR+FeS/MR4gaq6Lsl1\nw+i3quqRObVlI69M8u+bWaFunFNLdpdN140k6rZV6rZ5jm1bo69tjbptjbptQd240LqdP8tC8wrY\nG2qt3ZTkpkW9/5qqeqC1dmjR7dht1G1r1G1r1G3z1Gxr1G1r1G1r1G1rdkPd5nWJyMkkPzwa/6Fh\nGgAA7GnzCtifTXJRVV1QVWcnOZzk+JzeCwAAlsZcLhFprT1fVb+R5I4kZyX5aGvt4Xm8VwcLv0xl\nl1K3rVG3rVG3zVOzrVG3rVG3rVG3rVn6ulVrbdFtAACAPcOdHAEAoCMBGwAAOlqJgF1V76qqh6vq\n21W17s+6rHd79+HLmp8Zpt86fHFzz6uq/VV1Z1U9NjyfO2WZy6rqc6PHf1XVVcO8j1XVl0fzLtn5\nrdh5s9RtWO6FUW2Oj6avXH+bsa9dUlWfHvblL1TVL4zmrVRfW+9YNZp/ztB3Tgx96eBo3geG6Y9U\n1Vt3st2LNkPdfquqvjj0r7ur6vzRvKn76yqYoW7vrapnRvX5ldG8I8N+/VhVHdnZli/ODDX74Khe\nj1bVN0bzVrmvfbSqTlXVQ+vMr6r6o6GuX6iq14/mLVdfa63t+UeSH03yI0nuS3JonWXOSvJ4kguT\nnJ3k80kuHuZ9IsnhYfjDSd6/6G3aobr9YZKjw/DRJDdusPz+JF9L8p3D+MeSXL3o7VjWuiX51jrT\nV66/zVKzJK9JctEw/KokTyV5+TC+Mn3tpY5Vo2V+LcmHh+HDSW4dhi8elj8nyQXD65y16G1aorpd\nNjp+vX+tbsP41P11rz9mrNt7k/zxlHX3J3lieD53GD530du0DDU7Y/nfzOTHIFa6rw3b/jNJXp/k\noXXmvyPJp5JUkjck+cwwfen62kqcwW6tfam1ttGdIqfe3r2qKsmbkhwblrs5yVXza+1SuTKT7U1m\n2+6rk3yqtfafc23V8tts3f7XCve3DWvWWnu0tfbYMPxvSU4l+f4da+HymHqsOmOZcT2PJXnz0Leu\nTPLx1trp1tqXk5wYXm8VbFi31tq9o+PX/Zncw2HVzdLf1vPWJHe21r7WWvt6kjuTvG1O7Vwmm63Z\nu5PcsiMtW3KttX/I5ETdeq5M8mdt4v4kL6+q87KEfW0lAvaMpt3e/dVJXpHkG62158+YvgoOtNae\nGoa/muTABssfzosPEr8//Bvng1V1TvcWLqdZ6/ayqnqgqu5fu6wmq9vfNtXXqurSTM4MPT6avCp9\nbb1j1dRlhr70zUz61izr7lWb3fZrMzlTtmba/roKZq3bzw/737GqWrvR3Kr2t5m3e7gM6YIk94wm\nr2pfm8V6tV26vrawW6X3VlV3JfnBKbOub619cqfbs1u8VN3GI621VlXr/qbj8AnyxzL57fM1H8gk\nLJ2dyW9W/k6S39tum5dBp7qd31o7WVUXJrmnqh7MJAjtSZ372p8nOdJa+/Ywec/2NXZeVb0nyaEk\nbxxNftH+2lp7fPorrJy/SXJLa+10Vf1qJv89edOC27RbHE5yrLX2wmiavrYH7JmA3Vp7yzZfYr3b\nuz+byb8g9g1ngvbUbd9fqm5V9XRVnddae2oINade4qWuSXJba+250WuvnZE8XVV/muS3uzR6CfSo\nW2vt5PD8RFXdl+R1Sf46e7S/9ahZVX1vktsz+eB8/+i192xfm2K9Y9W0Zb5SVfuSfF8mx7JZ1t2r\nZtr2qnpLJh/63thaO702fZ39dRVCz4Z1a609Oxr9SCbfqVhb92fPWPe+7i1cPpvZzw4n+fXxhBXu\na7NYr7ZL19dcIvJ/pt7evU2unr83k+uLk+RIklU5I348k+1NNt7uF11DNgSlteuKr0oy9VvBe9CG\ndauqc9cuY6iqVyb5qSRfXOH+NkvNzk5yWybX3x07Y94q9bWpx6ozlhnX8+ok9wx963iSwzX5lZEL\nklyU5B93qN2LtmHdqup1Sf4kyRWttVOj6VP31x1r+WLNUrfzRqNXJPnSMHxHksuH+p2b5PL8//9y\n7lWz7KOpqtdm8oW8T4+mrXJfm8XxJL84/JrIG5J8czjBsnx9bZHfsNypR5Kfy+R6nNNJnk5yxzD9\nVUn+drTcO5I8msknxetH0y/M5I/QiSR/leScRW/TDtXtFUnuTvJYkruS7B+mH0rykdFyBzP59Pgd\nZ6x/T5IHMwk7f5Hkuxe9TctStyQ/OdTm88Pztavc32as2XuSPJfkc6PHJavY16YdqzK5JOaKYfhl\nQ985MfSlC0frXj+s90iSty96W5asbncNfyPW+tfxYfq6++sqPGao2x8keXioz71JXjta95eHfngi\nyS8teluWpWbD+O8mueGM9Va9r92SyS9EPZdJbrs2yfuSvG+YX0k+NNT1wYx+GW7Z+ppbpQMAQEcu\nEQEAgI4EbAAA6EjABtpCVkoAAAAfSURBVACAjgRsAADoSMAGAICOBGwAAOhIwAYAgI7+B5cKo4Mf\n/nxvAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 720x720 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "xI5WXfeQ8jx8"
},
"source": [
"## Experiment 3: Using SentiWord to enrich data\n",
"\n",
"**Hypothesis**: The sentiment of a sentence can be determined by the number of times the word occurs with that rating **in the SentiWord dataset**.\n",
"\n",
"**Approach**:\n",
"Basic approach is as follows:\n",
"1. Convert sentiWord to a dict with scores.\n",
"1. For each sentence, compute the 'average rating' by looking up the average rate from the dict.\n",
"\n",
"**Observations**:\n",
"1. Precision = **0.645**\n",
"1. Recall = **0.645**\n",
"1. F_Measure = **0.644**\n",
"\n",
"**Conclusion**: Better than before as words have a negative and psitive \"intensity\" but still, most words are classified into the 'neutral' category. We lose info from that."
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "EiemsHM88jx9"
},
"source": [
"### Converting SentiWord"
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "6GMeoBwJ8jx-",
"colab": {}
},
"source": [
"sen_dict = defaultdict(float, dict(zip(sen_wordDF['SynsetTerm'], sen_wordDF['Score'])))\n",
"# sen_dict"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "wQPq5ZEd8jyE"
},
"source": [
"### Calculating metrics"
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "d_KFPhRt8jyF",
"outputId": "1e07b577-8c16-452e-de5e-47cdcbaf4f1d",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"source": [
"def test_n_fold_3(testingDF, num_folds = 10):\n",
" cum_model_precision = float()\n",
" cum_model_recall = float()\n",
" cum_model_f = float()\n",
"\n",
" featureDF = testingDF.sample(frac=1)\n",
"\n",
" results = test_df(lookup_sentiment(featureDF, sen_dict))\n",
"\n",
" cum_model_precision = round(results[0][0], 3)\n",
" cum_model_recall = round(results[0][1], 3)\n",
" cum_model_f = round(results[0][2], 3)\n",
" print(('final precision', 'final recall', 'final f_measure'), ' = ', (cum_model_precision, cum_model_recall, cum_model_f))\n",
"\n",
"\n",
"\n",
"for key, value in (zip([\"vanilla\", \"with negation & no stopwords\",\"no stopwords\"], [movieDF, movieDF2, movieDF3])):\n",
" print(key)\n",
"# print(\"vanilla\")\n",
" test_n_fold_3(value)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"vanilla\n",
"('final precision', 'final recall', 'final f_measure') = (0.622, 0.622, 0.622)\n",
"with negation & no stopwords\n",
"('final precision', 'final recall', 'final f_measure') = (0.559, 0.561, 0.556)\n",
"no stopwords\n",
"('final precision', 'final recall', 'final f_measure') = (0.645, 0.645, 0.644)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "DX-b2PJ08jyH"
},
"source": [
"### Explaining results\n",
"We have taken care of the problem of having bad data for a lot of dict entries but we are still losing a lot of info as most words don't contribute to calculating the sentiment."
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "eg3gqeSD8jyH",
"outputId": "ff067ba4-e6e6-48a3-f56f-8ffcee47d3c7",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"source": [
"# no more bad learnings :)\n",
"sen_dict['disgust'], sen_dict['shit'], sen_dict['okay'], sen_dict['like']"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(-0.125, -0.25, 0.0, 0.125)"
]
},
"metadata": {
"tags": []
},
"execution_count": 36
}
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "C3IHgRHb8jyL",
"outputId": "c3712316-4c6d-4382-b645-44b60cbb5fa7",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"source": [
"get_random = lambda obj: obj.loc[np.random.choice(obj.index, 1, True),:]\n",
"reviews = featureDF.groupby('label').apply(get_random)['review'].tolist()\n",
"# reviews = featureDF.groupby('label').head(1).sort_values('label')['review'].tolist()\n",
"\n",
"fig, ax = plt.subplots(len(reviews),1, figsize=(10,10), constrained_layout=True)\n",
"\n",
"for i in range(0, len(reviews)):\n",
" review = reviews[i]\n",
" ax[i].hist([sen_dict[word] for word in review], bins=50)\n",
" ax[i].set_title(str(\"label = \" + str(2*i - 1)) + \", len = \" + str(len(review)))\n",
"\n",
"fig.suptitle('Sentiment of each word in ' + str(len(reviews)) + ' sample labels', fontsize=16)\n",
"plt.show()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAtgAAALMCAYAAADelMWIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3XmYJVV9//H3R0bAKMo2QQRk8Cdq\nYqJoJgSjiQpqEI0Qo4bEBZVkNGrUJBpxyS+aGJX4S1Af40JEGdSoBBdGXJHFJQo6RAQVlQEhMIIM\nqyKKoN/fH3VaL5fu6dvTp5memffree5zq06dqjpVXd39uXVPVaWqkCRJktTH7TZ2AyRJkqTNiQFb\nkiRJ6siALUmSJHVkwJYkSZI6MmBLkiRJHRmwJUmSpI4M2FKT5JAkn0tyRZIfJ7k4yUeSHLiA69wn\nySuT7DjNtEryyoVa93wleWGSxy/Acl+W5H+T3Jzk7N7L31BJnt5+Jvfc2G2ZryTHJrlognrdjsEk\n90ryxiTnJLk+yWVJViW5f4/lLzZJLkpybKdlTR17yzZg3kry6h7taMvrtl3S5syALQFJng98GDgf\nOBx4DDD1T2n/BVz1PsA/ALcK2MCDgHcs4Lrn64VA14CdZF/gn4H3A78PPLXn8jVnPY/BRwEPB1YC\nfwg8B1gKnJHktzqtQ5IWhSUbuwHSIvEi4CNVdfhI2anAfyTZKB9Eq+qMjbHejezX2vvbqurCjdqS\nTViS2wM31zyfJNb5GHw/8O+jbUpyKnAR8ALgaR3XJUkblWewpcGOwOXTTaiqn4+OJ9kryXuTrEty\nY5Kzk/zRWJ1Xtq9m907ysfaV+MVJ/u9UYE/ydOBdbZbzW/1ffA08/vX8yDLvk+RTSX7UulI8o01/\napJvtXWdluT/jG9LkhVJvpbkJ0muTHLMePeUqa+Ukzw/yXeT/DDJZ5Pcd6TORcCewJNH2n3s+nZw\nkn2TfKa170dJTmlnrKemnw5MLeOCSbonTLg9z0vypSRXJ7k2yRlJHjPNsu6Y5HVJLmg/18uTfDDJ\nLmNVd24//x8k+V6SNyXZdpZ2fjTJZ0bGM3L8/MpI+XuTfGVk/PbtZ3FRkp+291e3AD1VZ1nbV89J\n8i9JvgfcCGzfph+Q5H/aProgybPW19axds90DM54XM+kqq4cD/xVdR3wHWC3CdryZ0m+2tb5gyTn\n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\n6dlq9Gt1erY6PVuNfq1uq3q2FWcRuS3JqRvWT5m2AQDAMW8rAvZ1SfZU1ROr6rgkL09y+RbsBwAA\nZmf4FJHu/l5VvTHJVVmcpu+D3X3j6P0c5Xbk1JgjpGer0a/V6dlq9Gt1erY6PVuNfq1uS3o2/EOO\nAACwk/kmRwAAGEjABgCAgQTsNaiqx1TV1VV1y3T56PsZ946qurGqbq6q91RVrbvWuVihZ4+vqk9P\nPbupqk5bb6XzsGy/prGPqqpDVfX766xxbpbpWVU9vao+Oz0ub6iqn9+OWrdTVZ1dVV+qqoNVdcFh\nrn9YVX1suv7anfoY3GiJnr1ler66oar2V9UTtqPOudisXxvG/VxVdVXt+NPQLdOzqjp3up/dWFV/\nsu4a52SJx+Tjq+qaqvrc9Lh80ZHuU8BejwuS7O/uPUn2T+vfp6p+KsmzkzwtyVOT/ESS566zyJnZ\ntGeTS5K8s7ufksW3iN65pvrmZtl+JclvJ/nMWqqat2V6dk+SV3f3jyY5O8nvVtXxa6xxW1XVQ5K8\nN8kLk5ye5BVVdfp9hp2X5Nvd/aQkv5Pk7eutcl6W7Nnnkuzt7qcluSzJO9Zb5Xws2a9U1SOTvCnJ\nteutcH6W6VlV7Unyq0mePT1/vXnthc7EkvexX09yaXefkcXZ7/7gSPcrYK/HOUkunpYvTvLSw4zp\nJA9PclyShyV5aJI71lLdPG3as+kBsqu7r06S7v5ud9+zvhJnZZn7WKrqx5OcmOTTa6przjbtWXd/\nubtvmZa/kcULuE2/wesY8swkB7v71u7+zyQfzaJvG23s42VJztrJ775liZ519zUbnqsOZPF9ETvV\nMvexZHFg4O1J/n2dxc3UMj17XZL3dve3k6S7d+rBp2S5fnWSR03LP5zkG0e6UwF7PU7s7tun5W9m\nEXC+T3d/Nsk1SW6ffq7q7pvXV+LsbNqzJE9O8p2q+vj0ts47p1eqO9Gm/aqqH0ryriS/vM7CZmyZ\n+9j/qapnZvEC+B+3urAZOTnJ1zesH5q2HXZMd38vyd1JHruW6uZpmZ5tdF6ST21pRfO2ab+q6hlJ\nTu3uK9ZZ2Iwtcx97cpInV9XfVdWBqjp7bdXNzzL9+s0kr6yqQ0muTPJLR7rTbfuq9GNNVf1lkscd\n5qq3bVzp7q6qHzg3YlU9KclT8v9HMq6uqud0998ML3YmjrRnWdx/n5PkjCRfS/KxJK9J8oGxlc7D\ngH69PsmV3X1opxxgHNCze3/PSUk+nGRfd//P2CrZqarqlUn2ZmdPB3xA04GBd2fx3M7ydiXZk+R5\nWeSKz1TVj3X3d7a1qvl6RZIPdfe7qupZST5cVU89kud7AXuQ7n7+/V1XVXdU1Undffv0j/pwb9X8\nbJID3f3d6TafSvKsJI0vl+oAAAJRSURBVMdswB7Qs0NJPt/dt063+USSM3OMBuwB/XpWkudU1euT\nPCLJcVX13e5+oPnaR7UBPUtVPSrJFUne1t0HtqjUubotyakb1k+Zth1uzKGq2pXF26vfWk95s7RM\nz1JVz8/ihd5zu/s/1lTbHG3Wr0dm8bmkv54ODDwuyeVV9ZLuvn5tVc7LMvexQ0mu7e7/SvJPVfXl\nLAL3despcVaW6dd5WXzOJt392ap6eJITcgSf6zJFZD0uT7JvWt6X5JOHGfO1JM+tql1V9dAsjmjs\n5Ckiy/TsuiTHV9W9c2J/JslNa6htjjbtV3f/Qnc/vrtPy2KayCXHcrhewqY9q6rjkvx5Fr26bI21\nzcV1SfZU1ROnXrw8i75ttLGPL0vyV72zv8Fs055V1RlJ/jDJS3b43Nhkk351993dfUJ3nzY9dx3I\nom87NVwnyz0uP5HF0etU1QlZTBm5dZ1Fzsgy/fpakrOSpKqeksVn4u46kp0K2OtxYZIXVNUtSZ4/\nraeq9lbV+6cxl2Uxt/OLSb6Q5Avd/RfbUexMbNqz7v7vLILi/qr6YpJK8kfbVO92W+Y+xvdbpmfn\nJvnpJK+pqs9PP0/fnnLXb5pT/cYkV2Xxgv/S7r6xqn6rql4yDftAksdW1cEkb8kDn8HmmLdkz96Z\nxbtIfzrdp+77z37HWLJfbLBkz65K8q2quimLz3f9SnfvyHeWluzXW5O8rqq+kOQjSV5zpAcKfFU6\nAAAM5Ag2AAAMJGADAMBAAjYAAAwkYAMAwEACNgAADCRgAwDAQAI2AAAM9L+u5KXcVBRITgAAAABJ\nRU5ErkJggg==\n",
"text/plain": [
"<Figure size 720x720 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "RIQWDq5wFb8L"
},
"source": [
"## Ideas:\n",
"\n",
"1. Use `nltk.sentiment.util.mark_negation` to mark negation and flip the scores for words that have the NEG flag. [example](https://kite.com/python/docs/nltk.sentiment.util.mark_negation)\n",
"2. Use bigrams to mark negation (first word has very high Negative score).\n",
"3. Word Embeddings (pretrained [word2vec](https://code.google.com/archive/p/word2vec/) maybe) to find symantically similar words to enrich the datasets.\n",
"4. tf idf for normalizing counts across positive and negative folders."
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "P_B8OaORPzfB"
},
"source": [
"## Experiment 4: Using Emolex (with negation) to enrich data\n",
"\n",
"**Hypothesis**: The sentiment of a sentence can be determined by the number of times the word occurs with that rating **in the EmoLex dataset**.\n",
"\n",
"**Approach**:\n",
"Basic approach is as follows:\n",
"1. Convert emotex to a dict with positive, negative and neutral labels.\n",
"1. For each sentence, compute the 'average rating' by looking up the average rate from the dict.\n",
"\n",
"**Observations**:\n",
"1. Precision = **0.651**\n",
"1. Recall = **0.651**\n",
"1. F_Measure = **0.65**\n",
"\n",
"**Conclusion**: Same problem as before. most words are classified into the 'neutral' category. We lose info from that."
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "7fbSGG-cPzfP"
},
"source": [
"### Converting EmoTex"
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "xpy9Gu08PzfT",
"colab": {}
},
"source": [
"neg_emo_dict = pd.melt(neg_emoDF, id_vars=['word'], value_vars=['negative', 'positive', 'neutral']).query('value != 0').drop('value', axis=1)\n",
"\n",
"neg_emo_dict.loc[neg_emo_dict['sense'] == 'negative', 'label'] = -1\n",
"neg_emo_dict.loc[neg_emo_dict['sense'] == 'positive', 'label'] = 1\n",
"neg_emo_dict.loc[neg_emo_dict['sense'] == 'neutral', 'label'] = 0\n",
"neg_emo_dict = defaultdict(float, dict(zip(neg_emo_dict['word'], neg_emo_dict['label'])))"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "Q_-HAWiOPzfk"
},
"source": [
"### Calculating metrics"
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "xH0j0ujVPzfm",
"outputId": "593d4ed6-eba3-4ac8-a605-a9e6ebd9082e",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 119
}
},
"source": [
"def test_n_fold_4(testingDF, num_folds = 10):\n",
" cum_model_precision = float()\n",
" cum_model_recall = float()\n",
" cum_model_f = float()\n",
"\n",
" featureDF = testingDF.sample(frac=1)\n",
"\n",
" results = test_df(lookup_sentiment(featureDF, neg_emo_dict))\n",
"\n",
" cum_model_precision = round(results[0][0], 3)\n",
" cum_model_recall = round(results[0][1], 3)\n",
" cum_model_f = round(results[0][2], 3)\n",
" print(('final precision', 'final recall', 'final f_measure'), ' = ', (cum_model_precision, cum_model_recall, cum_model_f))\n",
"\n",
"\n",
"\n",
"for key, value in (zip([\"vanilla\", \"with negation & no stopwords\",\"no stopwords\"], [movieDF, movieDF2, movieDF3])):\n",
" print(key)\n",
"# print(\"vanilla\")\n",
" test_n_fold_4(value)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"vanilla\n",
"('final precision', 'final recall', 'final f_measure') = (0.647, 0.648, 0.647)\n",
"with negation & no stopwords\n",
"('final precision', 'final recall', 'final f_measure') = (0.419, 0.419, 0.419)\n",
"no stopwords\n",
"('final precision', 'final recall', 'final f_measure') = (0.651, 0.651, 0.65)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "sqlfH8NuPzfz"
},
"source": [
"### Explaining results\n",
"We have taken care of the problem of having bad data for a lot of dict entries but we are still losing a lot of info as most words don't contribute to calculating the sentiment."
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "SbglxCR3Pzf0",
"outputId": "9ab3af26-ab97-43f1-ef09-4a799eaaa3c4",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"# no more bad learnings :)\n",
"neg_emo_dict['disgust'], neg_emo_dict['disgust_NEG'], neg_emo_dict['love'], neg_emo_dict['love_NEG']"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(-1.0, 1.0, 1.0, -1.0)"
]
},
"metadata": {
"tags": []
},
"execution_count": 40
}
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "NKxGAFB4Pzf9",
"outputId": "e9da261f-665f-4419-c604-217796e16587",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 733
}
},
"source": [
"get_random = lambda obj: obj.loc[np.random.choice(obj.index, 1, True),:]\n",
"reviews = featureDF.groupby('label').apply(get_random)['review'].tolist()\n",
"# reviews = featureDF.groupby('label').head(1).sort_values('label')['review'].tolist()\n",
"\n",
"fig, ax = plt.subplots(len(reviews),1, figsize=(10,10), constrained_layout=True)\n",
"\n",
"for i in range(0, len(reviews)):\n",
" review = reviews[i]\n",
" ax[i].hist([neg_emo_dict[word] for word in review], bins=50)\n",
" ax[i].set_title(str(\"label = \" + str(2*i - 1)) + \", len = \" + str(len(review)))\n",
"\n",
"fig.suptitle('Sentiment of each word in ' + str(len(reviews)) + ' sample labels', fontsize=16)\n",
"plt.show()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\nGWP2I1V1Ympsfmxq3f7+Xn60qvavb883zjLG7Oap8fpEVT0ztW6rzrN3VtXxqvroEuurqt7Wx/TB\nqrp8at18zbPW2pZ9JPnXSf5VknuT7FmizVlJPpnkJUnOTvKRJJf2dbcl2dfLv5nkJzf6mNZhzP5n\nkht7+cYkN52m/flJPpPkX/TldyW5fqOPYx7HLMlnl6g3zxYZsyTfmmR3L39LkieSnNuXt8Q8+2qf\nT1NtfirJb/byviTv6+VLe/tzklzSX+esjT6mORmzV059Zv3kyTHry4u+TzfzY5lj9iNJfn2Rbc9P\n8lh/Pq+Xz9voY5qHMTul/U9n8sMPW3ae9eP+90kuT/LRJdZfm+SPk1SSK5Pc3+vnbp5t6TPYrbVH\nWmunu1Pkord3r6pKclWS23u7Q0muW7vezo29mRxrsrxjvj7JH7fWPremvZpvKx2zf2aeJVnimFtr\nn2itPdrL/5DkeJLt69bD+bDo59MpbabH8vYkV/d5tTfJe1trz7XW/i7JQn+9ze60Y9Zau2fqM+u+\nTO7ZsJUtZ54t5XuT3Nla+0xr7ekkdyZ59Rr1c56sdMxen+Q969KzOdZa+7NMTsotZW+Sd7eJ+5Kc\nW1UXZg7n2ZYO2Mu02O3ddya5IMkzrbXnT6nf7Ha01p7o5U8n2XGa9vvylR8av9T/a+fmqjpneA/n\nz3LH7AVVdaSq7jt5SU3Ms2QZ86yqrsjkLNEnp6q3wjxb6vNp0TZ9Hj2bybxazrab0UqP+0AmZ8xO\nWux9utktd8x+oL/nbq+qkzeVM88mljzufgnSJUnunqreivNsOZYa17mbZ3N3q/TRqurDSb55kVVv\naa3dsd79ORN8tTGbXmittapa8nce+1+V/yaT3z0/6c2ZBKazM/kdy19I8t9n7fNGGzRmL26tHauq\nlyS5u6oeyiQMbUqD59nvJNnfWvtSr96U84z1VVU/nGRPku+cqv6K92lr7ZOLv8KW8r+TvKe19lxV\n/Xgm/2ty1Qb36UyxL8ntrbUvTtWZZ2e4TR+wW2vfPeNLLHV796cy+a+Jbf2s0Ka57ftXG7OqerKq\nLmytPdGDzfGv8lKvS/KB1toXpl775FnJ56rqt5P8/JBOb7ARY9ZaO9afH6uqe5O8PMn7Y54tOWZV\n9Y1J/iiTP5jvm3rtTTnPFrHU59NibY5W1bYkL8zk82s5225GyzruqvruTP7Y+87W2nMn65d4n272\n4HPaMWutPTW1+I5MvkdxctvvOmXbe4f3cP6s5P21L8kN0xVbdJ4tx1LjOnfzzCUip7fo7d3b5Kr6\nezK5xjhJ9ifZCmfED2dyrMnpj/krrinrYenktcXXJVn0m8KbzGnHrKrOO3kZQ1W9KMkrknzMPEuy\n9JidneQDmVyPd/sp67bKPFv08+mUNtNjeX2Su/u8OpxkX01+ZeSSJLuT/MU69XsjnXbMqurlSX4r\nyWtaa8en6hd9n65bzzfOcsbswqnF1yR5pJc/lORVfezOS/KqfPn/am5Wy3lvpqpelsmX8v58qm6r\nzrPlOJzkDf3XRK5M8mw/oTJ/82wjv2G50Y8k/yGT63SeS/Jkkg/1+m9J8sGpdtcm+UQmfz2+Zar+\nJZn8g7SQ5A+SnLPRx7QOY3ZBkruSPJrkw0nO7/V7krxjqt3FmfxF+TWnbH93kocyCTy/m+QbNvqY\n5mHMkvzbPi4f6c8HzLPTjtkPJ/lCkgemHpdttXm22OdTJpfDvKaXX9DnzUKfRy+Z2vYtfbuPJ7lm\no49ljsbsw/3fhJPz6nCvX/J9utkfyxizX07ycB+be5K8bGrbH+3zbyHJGzf6WOZlzPryLyZ56ynb\nbeV59p5MfhHqC5nkswNJfiLJT/T1leQ3+pg+lKlfgJu3eeZW6QAAMJBLRAAAYCABGwAABhKwAQBg\nIAEbAAAGErABAGAgARsAAAYSsAEAYKB/AuirctiHAF9vAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 720x720 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ed0eFJj4GlDJ",
"colab_type": "code",
"colab": {}
},
"source": [
""
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "9RBuozsuLArG",
"colab_type": "code",
"colab": {}
},
"source": [
""
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "z-wB6q_KZxa6"
},
"source": [
"## Experiment 5: Using SentiWordNet (with negation) to enrich data\n",
"\n",
"**Hypothesis**: The sentiment of a sentence can be determined by the number of times the word occurs with that rating **in the EmoLex dataset**.\n",
"\n",
"**Approach**:\n",
"Basic approach is as follows:\n",
"1. Convert emotex to a dict with positive, negative and neutral labels.\n",
"1. For each sentence, compute the 'average rating' by looking up the average rate from the dict.\n",
"\n",
"**Observations**:\n",
"1. Precision = **0.433**\n",
"1. Recall = **0.433**\n",
"1. F_Measure = **0.433**\n",
"\n",
"**Conclusion**: Same problem as before. most words are classified into the 'neutral' category. We lose info from that."
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "JMjP5lunZxa8"
},
"source": [
"### Converting SentiWordNet"
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "328lt6FhZxbA",
"colab": {}
},
"source": [
"neg_sen_dict = defaultdict(float, dict(zip(neg_sen_wordDF['SynsetTerm'], neg_sen_wordDF['Score'])))"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "GoCKf-peZxbQ"
},
"source": [
"### Calculating metrics"
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "vnrjvbcIZxbU",
"outputId": "ec0ce4db-eefa-4602-b326-682c3185d798",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 128
}
},
"source": [
"cum_model_precision = float()\n",
"cum_model_recall = float()\n",
"cum_model_f = float()\n",
"\n",
"featureDF = movieDF2.sample(frac=1)\n",
"\n",
"results = test_df(lookup_sentiment(featureDF, neg_sen_dict))\n",
"\n",
"cum_model_precision = round(results[0][0], 3)\n",
"cum_model_recall = round(results[0][1], 3)\n",
"cum_model_f = round(results[0][2], 3)\n",
"\n",
"print(('final precision', 'final recall', 'final f_measure'), ' = ', (cum_model_precision, cum_model_recall, cum_model_f))\n",
"results[1]"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"('final precision', 'final recall', 'final f_measure') = (0.433, 0.433, 0.433)\n"
],
"name": "stdout"
},
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>label</th>\n",
" <th>predicted_label</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>-1</td>\n",
" <td>0.126</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>-0.142</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" label predicted_label\n",
"0 -1 0.126\n",
"1 1 -0.142"
]
},
"metadata": {
"tags": []
},
"execution_count": 43
}
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "RG9fSQjyZxbZ"
},
"source": [
"### Explaining results\n",
"We have taken care of the problem of having bad data for a lot of dict entries but we are still losing a lot of info as most words don't contribute to calculating the sentiment."
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "XzgQhOjxZxba",
"outputId": "c268f7a2-530c-4236-99bc-f38244b7205d",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"# no more bad learnings :)\n",
"neg_sen_dict['disgust'], neg_sen_dict['disgust_NEG'], neg_sen_dict['love'], neg_sen_dict['love_NEG']"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(-0.125, 0.125, 0.25, -0.25)"
]
},
"metadata": {
"tags": []
},
"execution_count": 44
}
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "_QKMnxf1Zxbe",
"outputId": "19dfa17c-b6e9-4a56-ef53-683a294e2530",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 733
}
},
"source": [
"get_random = lambda obj: obj.loc[np.random.choice(obj.index, 1, True),:]\n",
"reviews = featureDF.groupby('label').apply(get_random)['review'].tolist()\n",
"# reviews = featureDF.groupby('label').head(1).sort_values('label')['review'].tolist()\n",
"\n",
"fig, ax = plt.subplots(len(reviews),1, figsize=(10,10), constrained_layout=True)\n",
"\n",
"for i in range(0, len(reviews)):\n",
" review = reviews[i]\n",
" ax[i].hist([neg_sen_dict[word] for word in review], bins=50)\n",
" ax[i].set_title(str(\"label = \" + str(2*i - 1)) + \", len = \" + str(len(review)))\n",
"\n",
"fig.suptitle('Sentiment of each word in ' + str(len(reviews)) + ' sample labels', fontsize=16)\n",
"plt.show()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\nVT2U5NaquibJl5JcvfluAgDAznDCAbu7n0ryE6u0v5Dk0s10CgAAdipXcgQAgIEEbAAAGEjABgCA\ngQRsAAAYSMAGAICBBGwAABhIwAYAgIEEbAAAGEjABgCAgQRsAAAYSMAGAICBBGwAABhIwAYAgIEE\nbAAAGEjABgCAgQRsAAAYSMAGAICBBGwAABhIwAYAgIEEbAAAGEjABgCAgQRsAAAYSMAGAICBBGwA\nABhIwAYAgIEEbAAAGEjABgCAgQRsAAAYSMAGAICBBGwAABhIwAYAgIEEbAAAGEjABgCAgfZsdQcA\nYKTzDty5ofWfvv6dC+oJsKwcwQYAgIEcwQbYAo6yAuxejmADAMBAAjYAAAwkYAMAwEACNgAADCRg\nAwDAQAI2AAAMJGADAMBAAjYAAAwkYAMAwEACNgAADCRgAwDAQHu2ugNAct6BOze8zdPXv3MBPQEW\nYaP7uP0bdjYBG9jVfHgB4GRziggAAAwkYAMAwEBOEQGAJeT0KVgcR7ABAGAgARsAAAYSsAEAYCDn\nYAOrcn4mwO7i99hPHgEbANixHAzY2Xbrv9/CAnZVXZ7kT5KckuTG7r5+Uc+1Gbv1H3YRdssn393y\nOgCA7WkhAbuqTknyZ0l+LskzSR6qqoPd/eging8AYLtw8I5Ffcnx4iSHuvup7v7fJB9PcsWCngsA\nALaN6u7xD1p1VZLLu/v90/yvJPnJ7v7Q3DrXJrl2mv3RJI8N78j6nJnkP7fouXcbtRxHLcdRy3HU\nchy1HEctx1HLtZ3b3WettdKWfcmxu29IcsNWPf+Kqnq4u/dudT92A7UcRy3HUctx1HIctRxHLcdR\ny3EWdYrI4SSvn5t/3dQGAAC72qIC9kNJLqyq86vq1CT7khxc0HMBAMC2sZBTRLr7par6UJK7MvuZ\nvr/o7kcW8VwDbPlpKruIWo6jluOo5ThqOY5ajqOW46jlIAv5kiMAACyrRZ0iAgAAS0nABgCAgZYi\nYFfVL1XVI1X1rao67s/PVNXlVfVYVR2qqgNz7edX1T9N7bdMX9xcSlV1RlXdXVVPTPenr7LOJVX1\nmbnb/1TVldOyj1XVF+eWXXTyX8X2sJ5aTuu9PFevg3PtxuVknePyoqr69PRe8K9V9ctzy5Z+XB7v\n/W9u+WnTODs0jbvz5pZ9eGp/rKrefjL7vR2to5a/VVWPTuPw3qo6d27Zqvv7slpHLd9bVc/P1ez9\nc8v2T+8JT1TV/pPb8+1nHbX8yFwdH6+qr80tMy43qrt3/S3Jj2V2MZsHkuw9zjqnJHkyyQVJTk3y\n2SRvnJbdmmTfNP3RJB/Y6te0hbX84yQHpukDSf5ojfXPSPKVJN89zX8syVVb/Tq2w229tUzy38dp\nNy43UMskP5Lkwmn6tUmeTfLqaX6px+Urvf/NrfMbST46Te9Lcss0/cZp/dOSnD89zilb/Zq2eS0v\nmXtP/MBKLaf5Vff3Zbyts5bvTfKnq2x7RpKnpvvTp+nTt/o1bedaHrX+b2b2AxUr88blBm9LcQS7\nu7/Q3WtdKXLVy7tXVSV5a5LbpvVuSnLl4nq77V2RWQ2S9dXiqiSf6u5vLLRXO9NGa/ltxuUx1qxl\ndz/e3U9M0/+R5EiSNa/GtSRWff87ap35Gt+W5NJpHF6R5OPd/WJ3fzHJoenxltWatezu++feEx/M\n7FoRHGs94/J43p7k7u7+Snd/NcndSS5fUD93go3W8t1Jbj4pPdulliJgr9MPJ/n3uflnprbXJPla\nd790VPuyOru7n52mv5zk7DXW35djd9I/mP40+pGqOm14D3eO9dbyVVX1cFU9uHKqTYzLo21oXFbV\nxZkdxXlyrnmZx+Xx3v9WXWcad1/PbByuZ9tlstF6XJPkU3Pzq+3vy2q9tfzFad+9rapWLnJnXH6n\ndddjOmXp/CT3zTUblxu0ZZdKH62q7knyQ6ssuq677zjZ/dnJXqmW8zPd3VV13N95rKpzkvx4Zr+H\nvuLDmQWgUzP7vc3fSfL7m+3zdjWolud29+GquiDJfVX1uczCzVIZPC7/Osn+7v7W1LxU45Ltoare\nk2RvkjfPNR+zv3f3k6s/Akk+keTm7n6xqn49s7+yvHWL+7TT7UtyW3e/PNdmXG7QrgnY3f22TT7E\n8S7v/kKSV1fVnumoza6/7Psr1bKqnquqc7r72SmoHHmFh7o6ye3d/c25x145yvhiVf1lkt8e0ult\nakQtu/vwdP9UVT2Q5E1J/j7G5bett5ZV9f1J7szsg/eDc4+9VONyFcd7/1ttnWeqak+SH8js/XE9\n2y6TddWjqt6W2YfDN3f3iyvtx9nflzXIrFnL7n5hbvbGzL6PsbLtW47a9oHhPdw5NrKf7kvywfkG\n43LjnCLy/1a9vHt3d5L7MzuXOEn2J1nmI+IHM6tBsnYtjjmHawo/K+cQX5nk8wvo406xZi2r6vSV\n0xWq6swkP5PkUePyGOup5alJbk/yV91921HLln1crvr+d9Q68zW+Ksl90zg8mGTf9Csj5ye5MMk/\nn6R+b0dr1rKq3pTkz5O8q7uPzLWvur+ftJ5vP+up5Tlzs+9K8oVp+q4kl001PT3JZfnOv6Yum/Xs\n46mqN2T2pdBPz7UZl2EqOCwAAAETSURBVCdiq79leTJuSX4hs/ONXkzyXJK7pvbXJvnk3HrvSPJ4\nZp/KrptrvyCz/zAOJfm7JKdt9Wvawlq+Jsm9SZ5Ick+SM6b2vUlunFvvvMw+HX/XUdvfl+RzmQWY\nv0nyvVv9mrZzLZP89FSvz07318xtb1xurJbvSfLNJJ+Zu100LVv6cbna+19mp8m8a5p+1TTODk3j\n7oK5ba+btnssyc9v9WvZ6ts6annP9H/Ryjg8OLUfd39f1ts6avmHSR6ZanZ/kjfMbftr03g9lOR9\nW/1atvq2Vi2n+d9Lcv1R2xmXJ3BzqXQAABjIKSIAADCQgA0AAAMJ2AAAMJCADQAAAwnYAAAwkIAN\nAAADCdgAADDQ/wFvPJH2MAsqbwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 720x720 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "4pzjKTcSgDjG",
"colab_type": "code",
"colab": {}
},
"source": [
"# model specific imports\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.feature_extraction.text import TfidfVectorizer\n",
"import sklearn.naive_bayes \n",
"from sklearn.metrics import accuracy_score\n"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "fIdxl2R4h0a8"
},
"source": [
"## Experiment 6: Naive Approach + tfidf\n",
"\n",
"**Hypothesis**: The sentiment of a sentence can be determined by the number of times the word occurs with that rating **in the dataset**.\n",
"\n",
"**Approach**:\n",
"Basic approach is as follows:\n",
"1. Normalize Data using tf -df\n",
"1. Filter Data.\n",
"1. count the number of times a word occurs with that rating.\n",
"1. take the mean of this measure across all ratings for each word.\n",
"1. Put this in a dict.\n",
"1. For each sentence, compute the 'average rating' by looking up the average rate for each word from the dict, summing it up and dividing by length of sentence.\n",
"\n",
"**Observations**:\n",
"1. Precision = **0.623**\n",
"1. Recall = **0.623**\n",
"1. F_Measure = **0.623**\n",
"\n",
"**Conclusion**: This sucks."
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "ae_LuGXVh0a9",
"outputId": "a7b29501-f8ea-4d81-8f43-1840b37f11c8",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 303
}
},
"source": [
"def cutoff_excess(movieDF):\n",
" min_class = int(movieDF.groupby('label')['category'].count().min())\n",
" naive_normDF = movieDF.groupby('label').head(min_class)\n",
" cutoffDF = movieDF[~movieDF.isin(naive_normDF)].dropna()\n",
" return naive_normDF, cutoffDF\n",
"\n",
"naive_normDF, cutoffDF = cutoff_excess(movieDF)\n",
"naive_normDF['label'].hist(), cutoffDF['label'].hist(bins=2)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(<matplotlib.axes._subplots.AxesSubplot at 0x7f10eff95a58>,\n",
" <matplotlib.axes._subplots.AxesSubplot at 0x7f10eff95a58>)"
]
},
"metadata": {
"tags": []
},
"execution_count": 47
},
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAD8CAYAAAB+UHOxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAE7hJREFUeJzt3X+QXWV9x/H316RATcYkgLPFJGPC\nmGoZmCrsIC0zugEHA+0QOkWMgyXQdFKVWlvqlFj/wLHTKXRKqdKONgNIaBkCRp2kAmUwZMdxxlBB\nkfCjyIIo2YZECKxdQRT99o/7RK7LbnbvzyU+79fMzp7zPM8553ufu7mfe8+99yQyE0lSfV4z2wVI\nkmaHASBJlTIAJKlSBoAkVcoAkKRKGQCSVCkDQJIqZQBIUqUMAEmq1NzZLuBgjj766Fy2bFnb2//o\nRz9i3rx53SuoS6yrNdbVGutqza9iXffee+/Tmfn6aQdm5qv256STTspO7Nixo6Pte8W6WmNdrbGu\n1vwq1gXckzN4jPUUkCRVygCQpEoZAJJUKQNAkiplAEhSpaYNgIi4LiL2RcQDTW1HRsSdEfFo+b2o\ntEdEfDoiRiLi/og4sWmbtWX8oxGxtjc3R5I0UzN5BXA9sGpC2wZge2auALaXdYAzgRXlZz3wGWgE\nBnAZ8HbgZOCyA6EhSZod0wZAZn4V2D+heTWwqSxvAs5par+hfBR1J7AwIo4B3g3cmZn7M/NZ4E5e\nGSqSpD5q9z2AgczcU5afAgbK8mLgyaZxu0vbVO2SpFnS8aUgMjMjomv/s3xErKdx+oiBgQGGh4fb\n3te+/WNcfePWLlU2cycsXnDQ/vHx8Y5uV69YV2usqzWHYl27Rsf6W0yT5Qvm9Hy+2g2AvRFxTGbu\nKad49pX2UWBp07glpW0UGJrQPjzZjjNzI7ARYHBwMIeGhiYbNiNX37iVK3f1/3JHT5w/dND+4eFh\nOrldvWJdrbGu1hyKdV244db+FtPk+lXzej5f7Z4C2gYc+CTPWmBrU/sF5dNApwBj5VTRHcAZEbGo\nvPl7RmmTJM2SaZ8eR8RNNJ69Hx0Ru2l8mudy4JaIWAd8DzivDL8NOAsYAZ4HLgLIzP0R8bfAN8q4\nT2bmxDeWJUl9NG0AZOb7pug6fZKxCVw8xX6uA65rqTpJUs/4TWBJqpQBIEmVMgAkqVIGgCRVygCQ\npEoZAJJUKQNAkiplAEhSpQwASaqUASBJlTIAJKlSBoAkVcoAkKRKGQCSVCkDQJIqZQBIUqUMAEmq\nlAEgSZUyACSpUgaAJFXKAJCkShkAklQpA0CSKmUASFKlDABJqpQBIEmVMgAkqVIGgCRVygCQpEoZ\nAJJUKQNAkiplAEhSpToKgIj4y4h4MCIeiIibIuKIiFgeEXdHxEhE3BwRh5Wxh5f1kdK/rBs3QJLU\nnrYDICIWA38ODGbm8cAcYA1wBXBVZr4JeBZYVzZZBzxb2q8q4yRJs6TTU0BzgV+PiLnAa4E9wGnA\nltK/CTinLK8u65T+0yMiOjy+JKlNbQdAZo4C/wh8n8YD/xhwL/BcZr5Uhu0GFpflxcCTZduXyvij\n2j2+JKkzkZntbRixCPgC8F7gOeDzNJ7Zf6Kc5iEilgK3Z+bxEfEAsCozd5e+x4C3Z+bTE/a7HlgP\nMDAwcNLmzZvbqg9g3/4x9r7Q9uZtO2HxgoP2j4+PM3/+/D5VM3PW1Rrras2hWNeu0bE+V/Oy5Qvm\ntD1fK1euvDczB6cbN7etvTe8C/huZv4AICK+CJwKLIyIueVZ/hJgtIwfBZYCu8spowXAMxN3mpkb\ngY0Ag4ODOTQ01HaBV9+4lSt3dXIT2/PE+UMH7R8eHqaT29Ur1tUa62rNoVjXhRtu7W8xTa5fNa/n\n89XJewDfB06JiNeWc/mnAw8BO4Bzy5i1wNayvK2sU/rvynZffkiSOtbJewB30zjl801gV9nXRuBS\n4JKIGKFxjv/assm1wFGl/RJgQwd1S5I61NH5kcy8DLhsQvPjwMmTjP0x8J5OjidJ6h6/CSxJlTIA\nJKlSBoAkVcoAkKRKGQCSVCkDQJIqZQBIUqUMAEmqlAEgSZUyACSpUgaAJFXKAJCkShkAklQpA0CS\nKmUASFKlDABJqpQBIEmVMgAkqVIGgCRVygCQpEoZAJJUKQNAkiplAEhSpQwASaqUASBJlTIAJKlS\nBoAkVcoAkKRKGQCSVCkDQJIqZQBIUqUMAEmqlAEgSZXqKAAiYmFEbImI/4mIhyPidyLiyIi4MyIe\nLb8XlbEREZ+OiJGIuD8iTuzOTZAktaPTVwCfAv4rM98C/DbwMLAB2J6ZK4DtZR3gTGBF+VkPfKbD\nY0uSOtB2AETEAuAdwLUAmfmTzHwOWA1sKsM2AeeU5dXADdmwE1gYEce0XbkkqSOdvAJYDvwA+FxE\nfCsiromIecBAZu4pY54CBsryYuDJpu13lzZJ0iyIzGxvw4hBYCdwambeHRGfAn4IfDgzFzaNezYz\nF0XEl4HLM/NrpX07cGlm3jNhv+tpnCJiYGDgpM2bN7dVH8C+/WPsfaHtzdt2wuIFB+0fHx9n/vz5\nfapm5qyrNdbVmkOxrl2jY32u5mXLF8xpe75Wrlx5b2YOTjdublt7b9gN7M7Mu8v6Fhrn+/dGxDGZ\nuaec4tlX+keBpU3bLyltvyQzNwIbAQYHB3NoaKjtAq++cStX7urkJrbnifOHDto/PDxMJ7erV6yr\nNdbVmkOxrgs33NrfYppcv2pez+er7VNAmfkU8GREvLk0nQ48BGwD1pa2tcDWsrwNuKB8GugUYKzp\nVJEkqc86fXr8YeDGiDgMeBy4iEao3BIR64DvAeeVsbcBZwEjwPNlrCRplnQUAJl5HzDZeabTJxmb\nwMWdHE+S1D1+E1iSKmUASFKlDABJqpQBIEmVMgAkqVIGgCRVygCQpEoZAJJUKQNAkiplAEhSpQwA\nSaqUASBJlTIAJKlSBoAkVcoAkKRKGQCSVCkDQJIqZQBIUqUMAEmqlAEgSZUyACSpUgaAJFXKAJCk\nShkAklQpA0CSKmUASFKlDABJqpQBIEmVMgAkqVIGgCRVygCQpEoZAJJUqY4DICLmRMS3IuLLZX15\nRNwdESMRcXNEHFbaDy/rI6V/WafHliS1rxuvAD4CPNy0fgVwVWa+CXgWWFfa1wHPlvaryjhJ0izp\nKAAiYgnwe8A1ZT2A04AtZcgm4JyyvLqsU/pPL+MlSbOg01cA/wz8NfDzsn4U8FxmvlTWdwOLy/Ji\n4EmA0j9WxkuSZkFkZnsbRvw+cFZmfigihoCPAhcCO8tpHiJiKXB7Zh4fEQ8AqzJzd+l7DHh7Zj49\nYb/rgfUAAwMDJ23evLmt+gD27R9j7wttb962ExYvOGj/+Pg48+fP71M1M2ddrbGu1hyKde0aHetz\nNS9bvmBO2/O1cuXKezNzcLpxc9vae8OpwNkRcRZwBPA64FPAwoiYW57lLwFGy/hRYCmwOyLmAguA\nZybuNDM3AhsBBgcHc2hoqO0Cr75xK1fu6uQmtueJ84cO2j88PEwnt6tXrKs11tWaQ7GuCzfc2t9i\nmly/al7P56vtU0CZ+bHMXJKZy4A1wF2ZeT6wAzi3DFsLbC3L28o6pf+ubPflhySpY734HsClwCUR\nMULjHP+1pf1a4KjSfgmwoQfHliTNUFfOj2TmMDBclh8HTp5kzI+B93TjeJKkzvlNYEmqlAEgSZUy\nACSpUgaAJFXKAJCkShkAklQpA0CSKmUASFKlDABJqpQBIEmVMgAkqVIGgCRVygCQpEoZAJJUKQNA\nkiplAEhSpQwASaqUASBJlTIAJKlSBoAkVcoAkKRKGQCSVCkDQJIqZQBIUqUMAEmqlAEgSZUyACSp\nUgaAJFXKAJCkShkAklQpA0CSKmUASFKlDABJqlTbARARSyNiR0Q8FBEPRsRHSvuREXFnRDxafi8q\n7RERn46IkYi4PyJO7NaNkCS1rpNXAC8Bf5WZxwGnABdHxHHABmB7Zq4Atpd1gDOBFeVnPfCZDo4t\nSepQ2wGQmXsy85tl+f+Ah4HFwGpgUxm2CTinLK8GbsiGncDCiDim7colSR2JzOx8JxHLgK8CxwPf\nz8yFpT2AZzNzYUR8Gbg8M79W+rYDl2bmPRP2tZ7GKwQGBgZO2rx5c9t17ds/xt4X2t68bScsXnDQ\n/vHxcebPn9+nambOulpjXa05FOvaNTrW52petnzBnLbna+XKlfdm5uB04+a2tfcmETEf+ALwF5n5\nw8ZjfkNmZkS0lDCZuRHYCDA4OJhDQ0Nt13b1jVu5clfHN7FlT5w/dND+4eFhOrldvWJdrbGu1hyK\ndV244db+FtPk+lXzej5fHX0KKCJ+jcaD/42Z+cXSvPfAqZ3ye19pHwWWNm2+pLRJkmZBJ58CCuBa\n4OHM/Kemrm3A2rK8Ftja1H5B+TTQKcBYZu5p9/iSpM50cn7kVOCPgF0RcV9p+xvgcuCWiFgHfA84\nr/TdBpwFjADPAxd1cGxJUofaDoDyZm5M0X36JOMTuLjd40mSustvAktSpQwASaqUASBJlTIAJKlS\nBoAkVcoAkKRKGQCSVCkDQJIqZQBIUqUMAEmqlAEgSZUyACSpUgaAJFXKAJCkShkAklQpA0CSKmUA\nSFKlDABJqpQBIEmVMgAkqVIGgCRVygCQpEoZAJJUKQNAkiplAEhSpQwASaqUASBJlTIAJKlSBoAk\nVcoAkKRKGQCSVCkDQJIq1fcAiIhVEfFIRIxExIZ+H1+S1NDXAIiIOcC/AmcCxwHvi4jj+lmDJKmh\n368ATgZGMvPxzPwJsBlY3ecaJEn0PwAWA082re8ubZKkPps72wVMFBHrgfVldTwiHulgd0cDT3de\nVWviimmHzEpdM2BdrbGu1lhXC1Ze0VFdb5zJoH4HwCiwtGl9SWn7hczcCGzsxsEi4p7MHOzGvrrJ\nulpjXa2xrtbUXFe/TwF9A1gREcsj4jBgDbCtzzVIkujzK4DMfCki/gy4A5gDXJeZD/azBklSQ9/f\nA8jM24Db+nS4rpxK6gHrao11tca6WlNtXZGZvT6GJOlVyEtBSFKlDukAiIj3RMSDEfHziJjy3fKp\nLj9R3oy+u7TfXN6Y7kZdR0bEnRHxaPm9aJIxKyPivqafH0fEOaXv+oj4blPfW/tVVxn3s6Zjb2tq\nn835emtEfL3c3/dHxHub+ro6X9NdriQiDi+3f6TMx7Kmvo+V9kci4t2d1NFGXZdExENlfrZHxBub\n+ia9T/tU14UR8YOm4/9JU9/acr8/GhFr+1zXVU01fScinmvq6+V8XRcR+yLigSn6IyI+Xeq+PyJO\nbOrr7nxl5iH7A/wW8GZgGBicYswc4DHgWOAw4NvAcaXvFmBNWf4s8MEu1fUPwIayvAG4YprxRwL7\ngdeW9euBc3swXzOqCxifon3W5gv4TWBFWX4DsAdY2O35OtjfS9OYDwGfLctrgJvL8nFl/OHA8rKf\nOX2sa2XT39AHD9R1sPu0T3VdCPzLJNseCTxefi8qy4v6VdeE8R+m8aGUns5X2fc7gBOBB6boPwu4\nHQjgFODuXs3XIf0KIDMfzszpvig26eUnIiKA04AtZdwm4Jwulba67G+m+z0XuD0zn+/S8afSal2/\nMNvzlZnfycxHy/L/AvuA13fp+M1mcrmS5nq3AKeX+VkNbM7MFzPzu8BI2V9f6srMHU1/QztpfM+m\n1zq5vMu7gTszc39mPgvcCayapbreB9zUpWMfVGZ+lcYTvqmsBm7Ihp3Awog4hh7M1yEdADM01eUn\njgKey8yXJrR3w0Bm7inLTwED04xfwyv/+P6uvPy7KiIO73NdR0TEPRGx88BpKV5F8xURJ9N4VvdY\nU3O35msmlyv5xZgyH2M05qeXlzppdd/raDyLPGCy+7Sfdf1huX+2RMSBL4O+KuarnCpbDtzV1Nyr\n+ZqJqWrv+ny96i4FMVFEfAX4jUm6Pp6ZW/tdzwEHq6t5JTMzIqb8qFVJ9hNofDfigI/ReCA8jMZH\nwS4FPtnHut6YmaMRcSxwV0TsovEg17Yuz9e/A2sz8+elue35+lUUEe8HBoF3NjW/4j7NzMcm30PX\n/SdwU2a+GBF/SuPV02l9OvZMrAG2ZObPmtpmc7765lUfAJn5rg53MdXlJ56h8dJqbnkW94rLUrRb\nV0TsjYhjMnNPecDad5BdnQd8KTN/2rTvA8+GX4yIzwEf7WddmTlafj8eEcPA24AvMMvzFRGvA26l\nEf47m/bd9nxNYtrLlTSN2R0Rc4EFNP6eZrJtL+siIt5FI1TfmZkvHmif4j7txgPaTC7v8kzT6jU0\n3vM5sO3QhG2Hu1DTjOpqsga4uLmhh/M1E1PV3vX5quEU0KSXn8jGuyo7aJx/B1gLdOsVxbayv5ns\n9xXnHsuD4IHz7ucAk35aoBd1RcSiA6dQIuJo4FTgodmer3LffYnGudEtE/q6OV8zuVxJc73nAneV\n+dkGrInGp4SWAyuA/+6glpbqioi3Af8GnJ2Z+5raJ71P+1jXMU2rZwMPl+U7gDNKfYuAM/jlV8I9\nravU9hYab6h+vamtl/M1E9uAC8qngU4BxsqTnO7PV7ff4e7nD/AHNM6DvQjsBe4o7W8Abmsadxbw\nHRoJ/vGm9mNp/AMdAT4PHN6luo4CtgOPAl8Bjiztg8A1TeOW0Uj110zY/i5gF40Hsv8A5verLuB3\ny7G/XX6vezXMF/B+4KfAfU0/b+3FfE3290LjlNLZZfmIcvtHynwc27Ttx8t2jwBndvnvfbq6vlL+\nHRyYn23T3ad9quvvgQfL8XcAb2na9o/LPI4AF/WzrrL+CeDyCdv1er5uovEptp/SePxaB3wA+EDp\nDxr/cdZj5fiDTdt2db78JrAkVaqGU0CSpEkYAJJUKQNAkiplAEhSpQwASaqUASBJlTIAJKlSBoAk\nVer/ASK/tGh8l0uGAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "iw8trQXEikBo",
"colab_type": "code",
"colab": {}
},
"source": [
""
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "-OjcBRGGt9N8",
"colab_type": "code",
"colab": {}
},
"source": [
""
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "WG3qr33lh0bA"
},
"source": [
"### Count occurances\n"
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "1Pgp5YK5h0bB",
"outputId": "11c7f7f9-e6d4-415f-ae9e-09c59cb6ad4a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
}
},
"source": [
"def get_word_counts_tfidf(normDF):\n",
" normalizer = TfidfVectorizer(input=\"content\", strip_accents='ascii', stop_words='english').fit(normDF['review'].apply(lambda row : \" \".join(row)).values )\n",
" tf_idf_dict = defaultdict(lambda: max(normalizer.idf_), [(w, normalizer.idf_[i]) for w, i in normalizer.vocabulary_.items()])\n",
" countDF = (normDF['review']\n",
" .apply(pd.Series)\n",
" .merge(normDF, left_index = True, right_index = True)\n",
" .drop('review', axis=1)\n",
" .melt(id_vars = ['label', 'category'], value_name = \"review_word\")\n",
" )\n",
" countDF['review_word'] = countDF['review_word'].apply(lambda word : lemmatizer.lemmatize(str(word)))\n",
" countDF['idf'] = countDF['review_word'].map(tf_idf_dict)\n",
" countDF['sent'] = countDF['review_word'].map(sen_dict)\n",
" return countDF\n",
"countDF = get_word_counts_tfidf(movieDF)\n",
"countDF.head()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>label</th>\n",
" <th>category</th>\n",
" <th>variable</th>\n",
" <th>review_word</th>\n",
" <th>idf</th>\n",
" <th>sent</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>-1</td>\n",
" <td>neg</td>\n",
" <td>0</td>\n",
" <td>plot</td>\n",
" <td>1.806816</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>-1</td>\n",
" <td>neg</td>\n",
" <td>0</td>\n",
" <td>so</td>\n",
" <td>7.908255</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>-1</td>\n",
" <td>neg</td>\n",
" <td>0</td>\n",
" <td>synopsis</td>\n",
" <td>4.396710</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>-1</td>\n",
" <td>neg</td>\n",
" <td>0</td>\n",
" <td>the</td>\n",
" <td>7.908255</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>-1</td>\n",
" <td>neg</td>\n",
" <td>0</td>\n",
" <td>call</td>\n",
" <td>7.908255</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" label category variable review_word idf sent\n",
"0 -1 neg 0 plot 1.806816 0.0\n",
"1 -1 neg 0 so 7.908255 0.0\n",
"2 -1 neg 0 synopsis 4.396710 0.0\n",
"3 -1 neg 0 the 7.908255 0.0\n",
"4 -1 neg 0 call 7.908255 0.0"
]
},
"metadata": {
"tags": []
},
"execution_count": 48
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "rbb57fHmwYVX",
"colab_type": "code",
"colab": {}
},
"source": [
""
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "sD8yWS2Ph0bC"
},
"source": [
"### Generate dict"
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "mBI9lZ2wh0bC",
"outputId": "5eb1ee50-f45a-4a17-b31c-6f8afd989720",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"def get_dict_from_counts_tfidf(countDF):\n",
" test = (countDF.groupby(['label', 'review_word']).mean().reset_index())\n",
" test['tot'] = round(test['idf'] * test['sent'], 3)\n",
" test = test.groupby(['review_word'])['tot'].mean().sort_values(ascending=False).reset_index()\n",
" sen_words = defaultdict(float, dict(zip(test['review_word'], test['tot'])))\n",
" return sen_words\n",
"\n",
"sentiment_dict = get_dict_from_counts_tfidf(countDF)\n",
"\n",
"sentiment_dict['bad'], sentiment_dict['worst'], sentiment_dict['okay'], sentiment_dict['good'], sentiment_dict['amazing']"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(-1.462, 0.391, 0.0, 0.953, 2.713)"
]
},
"metadata": {
"tags": []
},
"execution_count": 49
}
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "pKB8kEnmh0bK"
},
"source": [
"### Calculating metrics"
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "aYWejgERh0bL",
"outputId": "d76ad055-fa0e-412d-8711-4d546e3802e4",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 119
}
},
"source": [
"def test_n_fold_5(testingDF, num_folds = 10):\n",
" featureDF = testingDF.sample(frac=1)\n",
"\n",
" cum_model_precision = float()\n",
" cum_model_recall = float()\n",
" cum_model_f = float()\n",
"\n",
" k_fold_gen = KFold(n_splits=num_folds)\n",
" for train_idx, test_idx in k_fold_gen.split(featureDF):\n",
"\n",
" train = featureDF.iloc[train_idx]\n",
" test = featureDF.iloc[test_idx]\n",
" words_dict = get_dict_from_counts_tfidf(get_word_counts_tfidf(cutoff_excess(train)[0]))\n",
" enrichedDF = lookup_sentiment(test, words_dict)\n",
" model_precision, model_recall, model_f = test_df(enrichedDF)[0]\n",
" cum_model_precision += model_precision\n",
" cum_model_recall += model_recall\n",
" cum_model_f += model_f\n",
"\n",
" cum_model_precision = round(cum_model_precision / num_folds, 3)\n",
" cum_model_recall = round(cum_model_recall / num_folds, 3)\n",
" cum_model_f = round(cum_model_f / num_folds, 3)\n",
"\n",
" print(('final precision', 'final recall', 'final f_measure'), ' = ', (cum_model_precision, cum_model_recall, cum_model_f))\n",
"\n",
"for key, value in (zip([\"vanilla\", \"with negation & with stopwords\",\"with stopwords\"], [movieDF, movieDF2, movieDF3])):\n",
" print(key)\n",
" test_n_fold_5(value, num_folds = 5)\n"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"vanilla\n",
"('final precision', 'final recall', 'final f_measure') = (0.576, 0.576, 0.576)\n",
"with negation & with stopwords\n",
"('final precision', 'final recall', 'final f_measure') = (0.554, 0.556, 0.551)\n",
"with stopwords\n",
"('final precision', 'final recall', 'final f_measure') = (0.623, 0.623, 0.623)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "E7GFvbsPh0bM"
},
"source": [
"### Explaining performance\n",
"\n",
"Most words fall under the neutral category. Hence dont effect perf. Additionally, the dict has incorrect values for a lot of words. Also there is a lot of noise in the dict. "
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "OrW18Rudh0bN",
"outputId": "6a57d471-cbc4-49ad-a6e6-7a285d56115a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 173
}
},
"source": [
"testDF.groupby('label').head(2).sort_values('label')"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>category</th>\n",
" <th>review</th>\n",
" <th>label</th>\n",
" <th>sentiment</th>\n",
" <th>predicted_label</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>neg</td>\n",
" <td>[plot, two, teen, couples, go, to, a, church, ...</td>\n",
" <td>-1</td>\n",
" <td>360.422176</td>\n",
" <td>-1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>neg</td>\n",
" <td>[so, ask, yourself, what, 8mm, eight, millimet...</td>\n",
" <td>-1</td>\n",
" <td>358.972469</td>\n",
" <td>-1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1000</th>\n",
" <td>pos</td>\n",
" <td>[films, adapted, from, comic, books, have, had...</td>\n",
" <td>1</td>\n",
" <td>393.895105</td>\n",
" <td>-1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1001</th>\n",
" <td>pos</td>\n",
" <td>[every, now, and, then, a, movie, comes, along...</td>\n",
" <td>1</td>\n",
" <td>411.541667</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" category review label \\\n",
"0 neg [plot, two, teen, couples, go, to, a, church, ... -1 \n",
"1 neg [so, ask, yourself, what, 8mm, eight, millimet... -1 \n",
"1000 pos [films, adapted, from, comic, books, have, had... 1 \n",
"1001 pos [every, now, and, then, a, movie, comes, along... 1 \n",
"\n",
" sentiment predicted_label \n",
"0 360.422176 -1 \n",
"1 358.972469 -1 \n",
"1000 393.895105 -1 \n",
"1001 411.541667 1 "
]
},
"metadata": {
"tags": []
},
"execution_count": 51
}
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "Bbl2VVLIh0bO",
"outputId": "a295f6da-86a1-44ad-f05d-5ffe6b4f8f85",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"sentiment_dict['disgust'], sentiment_dict['shit'], sentiment_dict['okay'], sentiment_dict['like']"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(-0.765, -1.336, 0.0, 0.161)"
]
},
"metadata": {
"tags": []
},
"execution_count": 52
}
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "aZaEB3hlh0bP",
"outputId": "8f02e609-f6a7-45d5-80fd-79ca4ba4f207",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 733
}
},
"source": [
"get_random = lambda obj: obj.loc[np.random.choice(obj.index, 1, True),:]\n",
"reviews = testDF.groupby('label').apply(get_random)['review'].tolist()\n",
"# reviews = featureDF.groupby('label').head(1).sort_values('label')['review'].tolist()\n",
"\n",
"fig, ax = plt.subplots(len(reviews),1, figsize=(10,10), constrained_layout=True)\n",
"\n",
"props = dict(boxstyle='square', facecolor='white', alpha=0.5)\n",
"\n",
"for i in range(0, len(reviews)):\n",
" review = reviews[i]\n",
" ax[i].hist([sentiment_dict[word] for word in review], bins=50)\n",
" ax[i].set_title(str(\"label = \" + str(2*i - 1)) + \", len = \" + str(len(review)))\n",
"\n",
"\n",
"\n",
"fig.suptitle('Histogram of sentiment lookup for each word in ' + str(len(reviews)) + ' classes', fontsize=16)\n",
"plt.show()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAtgAAALMCAYAAADelMWIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xu4ZFV95vHvK41ivHFrEQFtVNSo\no8i0iPGGYgwiI2qiwUQFNYNEzWhiMmIyMZioI8lEomPEYDBgNCrxEhglKiKomIA0CshFtIMgkAZa\nkJsoCv7mj72OXRTnUqd7Hc7p7u/neeo5VWuvvffatXedemvVqr1TVUiSJEnq426L3QBJkiRpU2LA\nliRJkjoyYEuSJEkdGbAlSZKkjgzYkiRJUkcGbEmSJKkjA7amleTgJJXkYdNMW9amHT5N/RXzXMcr\nuzR4E5bkSUnOTPKj9hzvvthtAkiyIsnhSR4yzbRLkxy7CM2ayHyOvSR7t+d97wVqy9Tyn7UQy5+v\npXq89dCO10qybLHbsqGSnJbktDnqrGjbe3Cnda5McnSSbye5Jcn3k3wkya6dlr+grzXprrTR/5PR\nkvFZ4EnAmnnMczDDMfjBhWjQJuQY4MfAfwNuAb6zuM35hRXAnwGnA5eMTXsBcONd3aB5OBiPvZks\n1eNN87eG4f/yf3Ra3oHAo4H3ABcAOwF/CqxKsntVXd5pPdJGz4CtLqpqLbB2sdsxqST3qKpbF7sd\nc0lyN+ARwNur6kuL3Z5JVdU3F7sNmr/ex1uSAFtW1U83uHGbmR7/o9r8Z3RqEsAR7X/9LyT5GvA9\n4L8Db+m4Lmmj5hARdTHdEJEkv5Xkm0luTnJjkm8leXWbdhrwdODJbb4a/bozyZ5Jvtjm/VGSU5Ls\nOc1639CGI/wkydeT/Mr48ISRtj0tyT8nuR44s017QpJPJLkiyY+TXJzkHUnuObae05KcnmTfJOe0\nut9M8sQ2ZOYdSdYkuS7JsUnuNcFzdt8k703yn0lubev+/RZKaF/r3s7wOv3Ttg2XzrK8hyf5dJJr\n2vPx/ba9y0bqLE/y/iRXtnV+O8khY8uZer72al//3tja+J4kW7U6ewOntllOHtmHe7fpM+2DX0ly\nfJKbklyd5M1t+r7t+fxRkrOS/Ndptu+FSc5oX01f37btQWN1Lk3y4SQHJrmoLW9VkqeM7ktmOfYm\n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\nBvpfCMjB7LOhfq0AAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 720x720 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment