├── app
├── __init__.py
├── schema.py
├── models.py
├── config.py
├── encoders.py
├── db.py
├── encrypt.py
├── main.py
├── ml.py
└── encrypted
│ └── astradb_connect.zip
├── ai-api.code-workspace
├── pyvenv.cfg
├── requirements.txt
├── entrypoint.sh
├── README.md
├── pipelines
├── encrypt.yaml
├── decrypt.yaml
└── ai-model-download.yaml
├── Dockerfile
├── nbs
├── 1 - Download Datasets.ipynb
├── encrypt_module.ipynb
├── Encryption.ipynb
├── 2 - Download Datasets & Unzip.ipynb
└── 4 - Convert Dataset into Vectors.ipynb
├── .gitignore
└── LICENSE
/app/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ai-api.code-workspace:
--------------------------------------------------------------------------------
1 | {
2 | "folders": [
3 | {
4 | "path": "."
5 | }
6 | ]
7 | }
--------------------------------------------------------------------------------
/app/schema.py:
--------------------------------------------------------------------------------
1 | from pydantic import BaseModel
2 |
3 | class Query(BaseModel):
4 | q: str
--------------------------------------------------------------------------------
/pyvenv.cfg:
--------------------------------------------------------------------------------
1 | home = /Library/Frameworks/Python.framework/Versions/3.9/bin
2 | include-system-site-packages = false
3 | version = 3.9.7
4 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | cassandra-driver
2 | cryptography
3 | fastapi
4 | gunicorn
5 | jupyter
6 | pandas
7 | pypyr
8 | python-dotenv
9 | tensorflow
10 | uvicorn
11 | boto3
--------------------------------------------------------------------------------
/entrypoint.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | RUN_PORT=${PORT:-8000}
4 |
5 | /opt/venv/bin/gunicorn --worker-tmp-dir /dev/shm -k uvicorn.workers.UvicornWorker --bind "0.0.0.0:${RUN_PORT}" app.main:app
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # AI as an API Course Reference
2 | This repository is the exact code used in the course. For the complete & most up to date project go to https://github.com/codingforentrepreneurs/AI-as-an-API
3 |
4 | The final working (and production version) of the code is [here](https://github.com/codingforentrepreneurs/AI-as-an-API).
5 |
--------------------------------------------------------------------------------
/pipelines/encrypt.yaml:
--------------------------------------------------------------------------------
1 | steps:
2 | - name: pypyr.steps.pyimport
3 | in:
4 | pyImport: |
5 | from app import encrypt
6 | - name: pypyr.steps.set
7 | in:
8 | set:
9 | toEncrypt:
10 | - input_dir: app/ignored
11 | output_dir: app/encrypted
12 | - name: pypyr.steps.py
13 | run: !py encrypt.encrypt_dir(i["input_dir"], i["output_dir"])
14 | foreach: "{toEncrypt}"
--------------------------------------------------------------------------------
/pipelines/decrypt.yaml:
--------------------------------------------------------------------------------
1 | steps:
2 | - name: pypyr.steps.pyimport
3 | in:
4 | pyImport: |
5 | from app import encrypt
6 | - name: pypyr.steps.set
7 | in:
8 | set:
9 | toDecrypt:
10 | - secured_dir: app/encrypted
11 | output_dir: app/decrypted
12 | - name: pypyr.steps.py
13 | run: !py encrypt.decrypt_dir(i["secured_dir"], i["output_dir"])
14 | foreach: "{toDecrypt}"
--------------------------------------------------------------------------------
/app/models.py:
--------------------------------------------------------------------------------
1 | import uuid
2 | from cassandra.cqlengine import columns
3 | from cassandra.cqlengine.models import Model
4 |
5 |
6 | class SMSInference(Model):
7 | __keyspace__ = "spam_inferences"
8 | uuid = columns.UUID(primary_key=True, default=uuid.uuid1) # uuid.uuid1 -> timestamp
9 | query = columns.Text()
10 | label = columns.Text()
11 | confidence = columns.Float()
12 | model_version = columns.Text(default='v1')
--------------------------------------------------------------------------------
/app/config.py:
--------------------------------------------------------------------------------
1 | import os
2 | from functools import lru_cache
3 | from pydantic import BaseSettings, Field
4 |
5 |
6 | os.environ['CQLENG_ALLOW_SCHEMA_MANAGEMENT'] = '1'
7 |
8 | class Settings(BaseSettings):
9 | aws_access_key_id: str = None
10 | aws_secret_access_key: str = None
11 | db_client_id: str = Field(..., env="ASTRA_DB_CLIENT_ID")
12 | db_client_secret: str = Field(..., env="ASTRA_DB_CLIENT_SECRET")
13 |
14 | class Config:
15 | env_file = '.env'
16 |
17 |
18 | @lru_cache
19 | def get_settings():
20 | return Settings()
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM codingforentrepreneurs/python:3.9-webapp-cassandra
2 |
3 | COPY .env /app/.env
4 | COPY ./app /app/app
5 | COPY ./requirements.txt /app/requirements.txt
6 | COPY ./entrypoint.sh /app/entrypoint.sh
7 | COPY ./pipelines /app/pipelines/
8 |
9 | WORKDIR /app
10 |
11 | RUN chmod +x entrypoint.sh
12 |
13 |
14 | RUN python3 -m venv /opt/venv && /opt/venv/bin/python -m pip install -r requirements.txt
15 |
16 | RUN /opt/venv/bin/python -m pypyr /app/pipelines/ai-model-download
17 |
18 | RUN /opt/venv/bin/python -m pypyr /app/pipelines/decrypt
19 |
20 | CMD [ "./entrypoint.sh" ]
--------------------------------------------------------------------------------
/app/encoders.py:
--------------------------------------------------------------------------------
1 | import json
2 | import numpy as np
3 |
4 | class NumpyEncoder(json.JSONEncoder):
5 | """ Special json encoder for numpy types """
6 | def default(self, obj):
7 | if isinstance(obj, np.integer):
8 | return int(obj)
9 | elif isinstance(obj, np.floating):
10 | return float(obj)
11 | elif isinstance(obj, np.ndarray):
12 | return obj.tolist()
13 | return json.JSONEncoder.default(self, obj)
14 |
15 |
16 |
17 | def encode_to_json(data, as_py=True):
18 | encoded = json.dumps(data, cls=NumpyEncoder)
19 | if as_py:
20 | return json.loads(encoded)
21 | return encoded
--------------------------------------------------------------------------------
/app/db.py:
--------------------------------------------------------------------------------
1 | import pathlib
2 | from . import config
3 | from cassandra.cluster import Cluster
4 | from cassandra.auth import PlainTextAuthProvider
5 | from cassandra.cqlengine import connection
6 |
7 | BASE_DIR = pathlib.Path(__file__).resolve().parent
8 | SOURCE_DIR = BASE_DIR / 'ignored'
9 | if not SOURCE_DIR.exists():
10 | SOURCE_DIR = BASE_DIR / 'decrypted'
11 |
12 | CLUSTER_BUNDLE = str( SOURCE_DIR / 'astradb_connect.zip')
13 |
14 | settings = config.get_settings()
15 |
16 | ASTRA_DB_CLIENT_ID = settings.db_client_id
17 | ASTRA_DB_CLIENT_SECRET = settings.db_client_secret
18 |
19 |
20 | def get_cluster():
21 | cloud_config= {
22 | 'secure_connect_bundle': CLUSTER_BUNDLE
23 | }
24 | auth_provider = PlainTextAuthProvider(ASTRA_DB_CLIENT_ID, ASTRA_DB_CLIENT_SECRET)
25 | return Cluster(cloud=cloud_config, auth_provider=auth_provider)
26 |
27 |
28 | def get_session():
29 | cluster = get_cluster()
30 | session = cluster.connect()
31 | connection.register_connection(str(session), session=session)
32 | connection.set_default_connection(str(session))
33 | return session
--------------------------------------------------------------------------------
/pipelines/ai-model-download.yaml:
--------------------------------------------------------------------------------
1 | context_parser: pypyr.parser.keyvaluepairs
2 | steps:
3 | - name: pypyr.steps.contextsetf
4 | in:
5 | contextSetf:
6 | local_dest_dir: models/spam-sms
7 | file_keys: [
8 | "exports/spam-sms/spam-classifer-metadata.json",
9 | "exports/spam-sms/spam-classifer-tokenizer.json",
10 | "exports/spam-sms/spam-model.h5",
11 | ]
12 | - name: pypyr.steps.py
13 | in:
14 | py: |
15 | import boto3
16 | import os
17 | import pathlib
18 | from dotenv import load_dotenv
19 | load_dotenv()
20 | dest_path = pathlib.Path(local_dest_dir).resolve()
21 | dest_path.mkdir(exist_ok=True, parents=True)
22 | session = boto3.session.Session()
23 | bucket_name = os.environ.get("BUCKET_NAME")
24 | region = os.environ.get("REGION_NAME")
25 | endpoint_url = os.environ.get("ENDPOINT_URL") or None
26 | client = session.client('s3', region_name=region, endpoint_url=endpoint_url)
27 | for key in file_keys:
28 | fname = pathlib.Path(key).name
29 | dl_path = dest_path / fname
30 | client.download_file(bucket_name, key, str(dl_path))
--------------------------------------------------------------------------------
/app/encrypt.py:
--------------------------------------------------------------------------------
1 | import pathlib
2 | import os
3 | from cryptography.fernet import Fernet
4 | from dotenv import load_dotenv
5 |
6 | load_dotenv()
7 |
8 | ENCRYPTION_KEY = os.environ.get("ENCRYPTION_KEY")
9 |
10 | def generate_key():
11 | return Fernet.generate_key().decode("UTF-8")
12 |
13 |
14 | def encrypt_dir(input_dir, output_dir):
15 | key = ENCRYPTION_KEY
16 | if not key:
17 | raise Exception("ENCRYPTION_KEY is not found")
18 | fer = Fernet(key) # f"{}:"
19 | input_dir = pathlib.Path(input_dir)
20 | output_dir = pathlib.Path(output_dir)
21 | output_dir.mkdir(exist_ok=True, parents=True)
22 | for path in input_dir.glob("*"):
23 | _path_bytes = path.read_bytes() # open(filepath, 'rb')
24 | data = fer.encrypt(_path_bytes)
25 | rel_path = path.relative_to(input_dir)
26 | dest_path = output_dir / rel_path
27 | dest_path.write_bytes(data)
28 |
29 |
30 | def decrypt_dir(input_dir, output_dir):
31 | key = ENCRYPTION_KEY
32 | if not key:
33 | raise Exception("ENCRYPTION_KEY is not found")
34 | fer = Fernet(key) # f"{}:"
35 | input_dir = pathlib.Path(input_dir)
36 | output_dir = pathlib.Path(output_dir)
37 | output_dir.mkdir(exist_ok=True, parents=True)
38 | for path in input_dir.glob("*"):
39 | _path_bytes = path.read_bytes() # open(filepath, 'rb')
40 | data = fer.decrypt(_path_bytes)
41 | rel_path = path.relative_to(input_dir)
42 | dest_path = output_dir / rel_path
43 | dest_path.write_bytes(data)
44 |
45 |
--------------------------------------------------------------------------------
/nbs/1 - Download Datasets.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 11,
6 | "id": "82cdd096",
7 | "metadata": {},
8 | "outputs": [],
9 | "source": [
10 | "import pathlib\n",
11 | "\n",
12 | "BASE_DIR = pathlib.Path().resolve().parent\n",
13 | "DATASET_DIR = BASE_DIR / \"datasets\"\n",
14 | "ZIPS_DIR = DATASET_DIR / 'zips'\n",
15 | "ZIPS_DIR.mkdir(exist_ok=True, parents=True)\n",
16 | "\n",
17 | "SPAM_SMS_ZIP_PATH = ZIPS_DIR / \"sms-spam-dataset.zip\"\n",
18 | "SPAM_YOUTUBE_ZIP_PATH = ZIPS_DIR / \"youtube-spam-dataset.zip\""
19 | ]
20 | },
21 | {
22 | "cell_type": "code",
23 | "execution_count": 13,
24 | "id": "60828e1b",
25 | "metadata": {},
26 | "outputs": [],
27 | "source": [
28 | "SMS_SPAM_ZIP = \"https://archive.ics.uci.edu/ml/machine-learning-databases/00228/smsspamcollection.zip\"\n",
29 | "YOUTUBE_SPAM_ZIP = \"https://archive.ics.uci.edu/ml/machine-learning-databases/00380/YouTube-Spam-Collection-v1.zip\""
30 | ]
31 | },
32 | {
33 | "cell_type": "code",
34 | "execution_count": 14,
35 | "id": "13a8f781",
36 | "metadata": {},
37 | "outputs": [
38 | {
39 | "name": "stdout",
40 | "output_type": "stream",
41 | "text": [
42 | " % Total % Received % Xferd Average Speed Time Time Time Current\n",
43 | " Dload Upload Total Spent Left Speed\n",
44 | "100 198k 100 198k 0 0 31165 0 0:00:06 0:00:06 --:--:-- 45455 0 0:00:18 0:00:05 0:00:13 13221\n",
45 | " % Total % Received % Xferd Average Speed Time Time Time Current\n",
46 | " Dload Upload Total Spent Left Speed\n",
47 | "100 159k 100 159k 0 0 49045 0 0:00:03 0:00:03 --:--:-- 49030\n"
48 | ]
49 | }
50 | ],
51 | "source": [
52 | "!curl $SMS_SPAM_ZIP -o $SPAM_SMS_ZIP_PATH\n",
53 | "\n",
54 | "!curl $YOUTUBE_SPAM_ZIP -o $SPAM_YOUTUBE_ZIP_PATH "
55 | ]
56 | },
57 | {
58 | "cell_type": "code",
59 | "execution_count": null,
60 | "id": "31b8c9ae",
61 | "metadata": {},
62 | "outputs": [],
63 | "source": []
64 | }
65 | ],
66 | "metadata": {
67 | "kernelspec": {
68 | "display_name": "Python 3 (ipykernel)",
69 | "language": "python",
70 | "name": "python3"
71 | },
72 | "language_info": {
73 | "codemirror_mode": {
74 | "name": "ipython",
75 | "version": 3
76 | },
77 | "file_extension": ".py",
78 | "mimetype": "text/x-python",
79 | "name": "python",
80 | "nbconvert_exporter": "python",
81 | "pygments_lexer": "ipython3",
82 | "version": "3.9.7"
83 | }
84 | },
85 | "nbformat": 4,
86 | "nbformat_minor": 5
87 | }
88 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | app/ignored/
2 | app/decrypted/
3 | models/
4 | *.pkl
5 | datasets/exports/*.json
6 | .DS_Store
7 | datasets/spam-classifier/
8 | datasets/zips/
9 | bin/
10 | etc/
11 | include/
12 | share/
13 |
14 | # Byte-compiled / optimized / DLL files
15 | __pycache__/
16 | *.py[cod]
17 | *$py.class
18 |
19 | # C extensions
20 | *.so
21 |
22 | # Distribution / packaging
23 | .Python
24 | build/
25 | develop-eggs/
26 | dist/
27 | downloads/
28 | eggs/
29 | .eggs/
30 | lib/
31 | lib64/
32 | parts/
33 | sdist/
34 | var/
35 | wheels/
36 | share/python-wheels/
37 | *.egg-info/
38 | .installed.cfg
39 | *.egg
40 | MANIFEST
41 |
42 | # PyInstaller
43 | # Usually these files are written by a python script from a template
44 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
45 | *.manifest
46 | *.spec
47 |
48 | # Installer logs
49 | pip-log.txt
50 | pip-delete-this-directory.txt
51 |
52 | # Unit test / coverage reports
53 | htmlcov/
54 | .tox/
55 | .nox/
56 | .coverage
57 | .coverage.*
58 | .cache
59 | nosetests.xml
60 | coverage.xml
61 | *.cover
62 | *.py,cover
63 | .hypothesis/
64 | .pytest_cache/
65 | cover/
66 |
67 | # Translations
68 | *.mo
69 | *.pot
70 |
71 | # Django stuff:
72 | *.log
73 | local_settings.py
74 | db.sqlite3
75 | db.sqlite3-journal
76 |
77 | # Flask stuff:
78 | instance/
79 | .webassets-cache
80 |
81 | # Scrapy stuff:
82 | .scrapy
83 |
84 | # Sphinx documentation
85 | docs/_build/
86 |
87 | # PyBuilder
88 | .pybuilder/
89 | target/
90 |
91 | # Jupyter Notebook
92 | .ipynb_checkpoints
93 |
94 | # IPython
95 | profile_default/
96 | ipython_config.py
97 |
98 | # pyenv
99 | # For a library or package, you might want to ignore these files since the code is
100 | # intended to run in multiple environments; otherwise, check them in:
101 | # .python-version
102 |
103 | # pipenv
104 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
105 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
106 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
107 | # install all needed dependencies.
108 | #Pipfile.lock
109 |
110 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow
111 | __pypackages__/
112 |
113 | # Celery stuff
114 | celerybeat-schedule
115 | celerybeat.pid
116 |
117 | # SageMath parsed files
118 | *.sage.py
119 |
120 | # Environments
121 | .env
122 | .venv
123 | env/
124 | venv/
125 | ENV/
126 | env.bak/
127 | venv.bak/
128 |
129 | # Spyder project settings
130 | .spyderproject
131 | .spyproject
132 |
133 | # Rope project settings
134 | .ropeproject
135 |
136 | # mkdocs documentation
137 | /site
138 |
139 | # mypy
140 | .mypy_cache/
141 | .dmypy.json
142 | dmypy.json
143 |
144 | # Pyre type checker
145 | .pyre/
146 |
147 | # pytype static type analyzer
148 | .pytype/
149 |
150 | # Cython debug symbols
151 | cython_debug/
--------------------------------------------------------------------------------
/app/main.py:
--------------------------------------------------------------------------------
1 | import os
2 | import pathlib
3 | from typing import Optional
4 | from fastapi import FastAPI
5 | from fastapi.responses import StreamingResponse
6 |
7 | from cassandra.query import SimpleStatement
8 | from cassandra.cqlengine.management import sync_table
9 |
10 | from . import (
11 | config,
12 | db,
13 | models,
14 | ml,
15 | schema
16 | )
17 |
18 | app = FastAPI()
19 | settings = config.get_settings()
20 |
21 | BASE_DIR = pathlib.Path(__file__).resolve().parent
22 |
23 | MODEL_DIR = BASE_DIR.parent / "models"
24 | SMS_SPAM_MODEL_DIR = MODEL_DIR / "spam-sms"
25 | MODEL_PATH = SMS_SPAM_MODEL_DIR / "spam-model.h5"
26 | TOKENIZER_PATH = SMS_SPAM_MODEL_DIR / "spam-classifer-tokenizer.json"
27 | METADATA_PATH = SMS_SPAM_MODEL_DIR / "spam-classifer-metadata.json"
28 |
29 | AI_MODEL = None
30 | DB_SESSION = None
31 | SMSInference = models.SMSInference
32 |
33 | @app.on_event("startup")
34 | def on_startup():
35 | global AI_MODEL, DB_SESSION
36 | AI_MODEL = ml.AIModel(
37 | model_path= MODEL_PATH,
38 | tokenizer_path = TOKENIZER_PATH,
39 | metadata_path = METADATA_PATH
40 | )
41 | DB_SESSION = db.get_session()
42 | sync_table(SMSInference)
43 |
44 |
45 | @app.get("/")
46 | def read_index(q:Optional[str] = None):
47 | return {"hello": "world"}
48 |
49 | @app.post("/")
50 | def create_inference(query:schema.Query):
51 | global AI_MODEL
52 | preds_dict = AI_MODEL.predict_text(query.q)
53 | top = preds_dict.get('top') # {label: , conf}
54 | data = {"query": query.q, **top}
55 | obj = SMSInference.objects.create(**data)
56 | # NoSQL -> cassandra -> DataStax AstraDB
57 | return obj
58 |
59 |
60 | @app.get("/inferences") # /?q=this is awesome
61 | def list_inference():
62 | q = SMSInference.objects.all()
63 | print(q)
64 | return list(q)
65 |
66 |
67 | @app.get("/inferences/{my_uuid}") # /?q=this is awesome
68 | def read_inference(my_uuid):
69 | obj = SMSInference.objects.get(uuid=my_uuid)
70 | return obj
71 |
72 |
73 |
74 | def fetch_rows(
75 | stmt:SimpleStatement,
76 | fetch_size:int = 25,
77 | session=None):
78 | stmt.fetch_size = fetch_size
79 | result_set = session.execute(stmt)
80 | has_pages = result_set.has_more_pages
81 | yield "uuid,label,confidence,query,version\n"
82 | while has_pages:
83 | for row in result_set.current_rows:
84 | yield f"{row['uuid']},{row['label']},{row['confidence']},{row['query']},{row['model_version']}\n"
85 | has_pages = result_set.has_more_pages
86 | result_set = session.execute(stmt, paging_state=result_set.paging_state)
87 |
88 |
89 | @app.get("/dataset") # /?q=this is awesome
90 | def export_inferences():
91 | global DB_SESSION
92 | cql_query = "SELECT * FROM spam_inferences.smsinference LIMIT 10000"
93 | statement = SimpleStatement(cql_query)
94 | # rows = DB_SESSION.execute(cql_query)
95 | return StreamingResponse(fetch_rows(statement, 25, DB_SESSION))
--------------------------------------------------------------------------------
/app/ml.py:
--------------------------------------------------------------------------------
1 | import json
2 | import numpy as np
3 |
4 | from typing import Optional, List
5 | from pathlib import Path
6 | from dataclasses import dataclass # pip install dataclasses
7 |
8 | from tensorflow.keras.models import load_model
9 | from tensorflow.keras.preprocessing.sequence import pad_sequences
10 | from tensorflow.keras.preprocessing.text import tokenizer_from_json
11 |
12 | from . import encoders
13 |
14 | @dataclass
15 | class AIModel:
16 | model_path: Path
17 | tokenizer_path: Optional[Path] = None
18 | metadata_path: Optional[Path] = None
19 |
20 | model = None
21 | tokenizer = None
22 | metadata = None
23 |
24 | def __post_init__(self):
25 | if self.model_path.exists():
26 | self.model = load_model(self.model_path)
27 | if self.tokenizer_path:
28 | if self.tokenizer_path.exists():
29 | if self.tokenizer_path.name.endswith("json"):
30 | tokenizer_text = self.tokenizer_path.read_text()
31 | self.tokenizer = tokenizer_from_json(tokenizer_text)
32 | if self.metadata_path:
33 | if self.metadata_path.exists():
34 | if self.metadata_path.name.endswith("json"):
35 | self.metadata = json.loads(self.metadata_path.read_text())
36 |
37 |
38 | def get_model(self):
39 | if not self.model:
40 | raise Exception("Model not implemeted")
41 | return self.model
42 |
43 | def get_tokenizer(self):
44 | if not self.tokenizer:
45 | raise Exception("tokenizer not implemeted")
46 | return self.tokenizer
47 |
48 | def get_metadata(self):
49 | if not self.metadata:
50 | raise Exception("metadata not implemeted")
51 | return self.metadata
52 |
53 | def get_sequences_from_text(self, texts: List[str] ):
54 | tokenizer = self.get_tokenizer()
55 | sequences = tokenizer.texts_to_sequences(texts)
56 | return sequences
57 |
58 | def get_input_from_sequences(self, sequences):
59 | maxlen = self.get_metadata().get('max_sequence') or 280
60 | x_input = pad_sequences(sequences, maxlen=maxlen)
61 | return x_input
62 |
63 | def get_label_legend_inverted(self):
64 | legend = self.get_metadata().get('labels_legend_inverted') or {}
65 | if len(legend.keys()) != 2:
66 | raise Exception("You legend is incorrect")
67 | return legend
68 |
69 | def get_label_pred(self, idx, val):
70 | legend = self.get_label_legend_inverted()
71 | return {"label": legend[str(idx)], "confidence": val}
72 |
73 | def get_top_pred_labled(self, preds):
74 | top_idx_val = np.argmax(preds)
75 | val = preds[top_idx_val]
76 | return self.get_label_pred(top_idx_val, val)
77 |
78 | def predict_text(self, query:str, include_top=True, encode_to_json=True):
79 | model = self.get_model()
80 | sequences = self.get_sequences_from_text([query])
81 | x_input = self.get_input_from_sequences(sequences)
82 | preds = model.predict(x_input)[0]
83 | labeled_preds = [self.get_label_pred(i, x) for i, x in enumerate(list(preds))]
84 | results = {
85 | "predictions": labeled_preds
86 | }
87 | if include_top:
88 | results['top'] = self.get_top_pred_labled(preds)
89 | if encode_to_json:
90 | results = encoders.encode_to_json(results, as_py=True)
91 | return results
--------------------------------------------------------------------------------
/nbs/encrypt_module.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": null,
6 | "id": "cfc58cd7",
7 | "metadata": {},
8 | "outputs": [],
9 | "source": []
10 | },
11 | {
12 | "cell_type": "code",
13 | "execution_count": 1,
14 | "id": "3138f8e2",
15 | "metadata": {},
16 | "outputs": [
17 | {
18 | "data": {
19 | "text/plain": [
20 | "True"
21 | ]
22 | },
23 | "execution_count": 1,
24 | "metadata": {},
25 | "output_type": "execute_result"
26 | }
27 | ],
28 | "source": [
29 | "import pathlib\n",
30 | "import os\n",
31 | "from cryptography.fernet import Fernet\n",
32 | "from dotenv import load_dotenv\n",
33 | "\n",
34 | "load_dotenv()"
35 | ]
36 | },
37 | {
38 | "cell_type": "code",
39 | "execution_count": 2,
40 | "id": "c554c805",
41 | "metadata": {},
42 | "outputs": [],
43 | "source": [
44 | "ENCRYPTION_KEY = os.environ.get(\"ENCRYPTION_KEY\")"
45 | ]
46 | },
47 | {
48 | "cell_type": "code",
49 | "execution_count": 3,
50 | "id": "3d4f1ef8",
51 | "metadata": {},
52 | "outputs": [],
53 | "source": [
54 | "def generate_key():\n",
55 | " return Fernet.generate_key().decode(\"UTF-8\")"
56 | ]
57 | },
58 | {
59 | "cell_type": "code",
60 | "execution_count": 4,
61 | "id": "d1bc2406",
62 | "metadata": {},
63 | "outputs": [],
64 | "source": [
65 | "def encrypt_dir(input_dir, output_dir):\n",
66 | " key = ENCRYPTION_KEY\n",
67 | " if not key:\n",
68 | " raise Exception(\"ENCRYPTION_KEY is not found\")\n",
69 | " fer = Fernet(key) # f\"{}:\"\n",
70 | " input_dir = pathlib.Path(input_dir)\n",
71 | " output_dir = pathlib.Path(output_dir)\n",
72 | " output_dir.mkdir(exist_ok=True, parents=True)\n",
73 | " for path in input_dir.glob(\"*\"):\n",
74 | " _path_bytes = path.read_bytes() # open(filepath, 'rb')\n",
75 | " data = fer.encrypt(_path_bytes)\n",
76 | " rel_path = path.relative_to(input_dir)\n",
77 | " dest_path = output_dir / rel_path\n",
78 | " dest_path.write_bytes(data)"
79 | ]
80 | },
81 | {
82 | "cell_type": "code",
83 | "execution_count": 5,
84 | "id": "62bc24a7",
85 | "metadata": {},
86 | "outputs": [],
87 | "source": [
88 | "def decrypt_dir(input_dir, output_dir):\n",
89 | " key = ENCRYPTION_KEY\n",
90 | " if not key:\n",
91 | " raise Exception(\"ENCRYPTION_KEY is not found\")\n",
92 | " fer = Fernet(key) # f\"{}:\"\n",
93 | " input_dir = pathlib.Path(input_dir)\n",
94 | " output_dir = pathlib.Path(output_dir)\n",
95 | " output_dir.mkdir(exist_ok=True, parents=True)\n",
96 | " for path in input_dir.glob(\"*\"):\n",
97 | " _path_bytes = path.read_bytes() # open(filepath, 'rb')\n",
98 | " data = fer.decrypt(_path_bytes)\n",
99 | " rel_path = path.relative_to(input_dir)\n",
100 | " dest_path = output_dir / rel_path\n",
101 | " dest_path.write_bytes(data)"
102 | ]
103 | }
104 | ],
105 | "metadata": {
106 | "kernelspec": {
107 | "display_name": "Python 3 (ipykernel)",
108 | "language": "python",
109 | "name": "python3"
110 | },
111 | "language_info": {
112 | "codemirror_mode": {
113 | "name": "ipython",
114 | "version": 3
115 | },
116 | "file_extension": ".py",
117 | "mimetype": "text/x-python",
118 | "name": "python",
119 | "nbconvert_exporter": "python",
120 | "pygments_lexer": "ipython3",
121 | "version": "3.9.7"
122 | }
123 | },
124 | "nbformat": 4,
125 | "nbformat_minor": 5
126 | }
127 |
--------------------------------------------------------------------------------
/nbs/Encryption.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "id": "cfc58cd7",
7 | "metadata": {},
8 | "outputs": [
9 | {
10 | "name": "stdout",
11 | "output_type": "stream",
12 | "text": [
13 | "Requirement already satisfied: cryptography in /Users/cfe/Dev/ai-api/lib/python3.9/site-packages (35.0.0)\n",
14 | "Requirement already satisfied: cffi>=1.12 in /Users/cfe/Dev/ai-api/lib/python3.9/site-packages (from cryptography) (1.14.6)\n",
15 | "Requirement already satisfied: pycparser in /Users/cfe/Dev/ai-api/lib/python3.9/site-packages (from cffi>=1.12->cryptography) (2.20)\n",
16 | "Note: you may need to restart the kernel to use updated packages.\n"
17 | ]
18 | }
19 | ],
20 | "source": [
21 | "%pip install cryptography"
22 | ]
23 | },
24 | {
25 | "cell_type": "code",
26 | "execution_count": 2,
27 | "id": "3138f8e2",
28 | "metadata": {},
29 | "outputs": [],
30 | "source": [
31 | "from cryptography.fernet import Fernet"
32 | ]
33 | },
34 | {
35 | "cell_type": "code",
36 | "execution_count": 32,
37 | "id": "3d4f1ef8",
38 | "metadata": {},
39 | "outputs": [],
40 | "source": [
41 | "key = Fernet.generate_key().decode(\"UTF-8\")"
42 | ]
43 | },
44 | {
45 | "cell_type": "code",
46 | "execution_count": 6,
47 | "id": "25e02d70",
48 | "metadata": {},
49 | "outputs": [],
50 | "source": [
51 | "import pathlib"
52 | ]
53 | },
54 | {
55 | "cell_type": "code",
56 | "execution_count": 11,
57 | "id": "6053c85b",
58 | "metadata": {},
59 | "outputs": [
60 | {
61 | "data": {
62 | "text/plain": [
63 | "True"
64 | ]
65 | },
66 | "execution_count": 11,
67 | "metadata": {},
68 | "output_type": "execute_result"
69 | }
70 | ],
71 | "source": [
72 | "BASE_DIR = pathlib.Path().resolve().parent\n",
73 | "BASE_DIR.exists()"
74 | ]
75 | },
76 | {
77 | "cell_type": "code",
78 | "execution_count": 12,
79 | "id": "cf435f7a",
80 | "metadata": {},
81 | "outputs": [
82 | {
83 | "data": {
84 | "text/plain": [
85 | "True"
86 | ]
87 | },
88 | "execution_count": 12,
89 | "metadata": {},
90 | "output_type": "execute_result"
91 | }
92 | ],
93 | "source": [
94 | "APP_DIR = BASE_DIR / \"app\"\n",
95 | "APP_DIR.exists()"
96 | ]
97 | },
98 | {
99 | "cell_type": "code",
100 | "execution_count": 21,
101 | "id": "38f8e0dc",
102 | "metadata": {},
103 | "outputs": [],
104 | "source": [
105 | "IGNORED_DIR = APP_DIR / \"ignored\"\n",
106 | "SECURE_DIR = APP_DIR / \"encrypted\"\n",
107 | "DECRYPTED_DIR = APP_DIR / \"decrypted\"\n",
108 | "SECURE_DIR.mkdir(exist_ok=True, parents=True)\n",
109 | "DECRYPTED_DIR.mkdir(exist_ok=True, parents=True)"
110 | ]
111 | },
112 | {
113 | "cell_type": "code",
114 | "execution_count": 33,
115 | "id": "233c5507",
116 | "metadata": {},
117 | "outputs": [],
118 | "source": [
119 | "fer = Fernet(key) # f\"{}:\""
120 | ]
121 | },
122 | {
123 | "cell_type": "code",
124 | "execution_count": 27,
125 | "id": "62bc24a7",
126 | "metadata": {},
127 | "outputs": [],
128 | "source": [
129 | "for path in IGNORED_DIR.glob(\"*\"):\n",
130 | " _path_bytes = path.read_bytes() # open(filepath, 'rb')\n",
131 | " data = fer.encrypt(_path_bytes)\n",
132 | " rel_path = path.relative_to(IGNORED_DIR)\n",
133 | " dest_path = SECURE_DIR / rel_path\n",
134 | " dest_path.write_bytes(data)"
135 | ]
136 | },
137 | {
138 | "cell_type": "code",
139 | "execution_count": 31,
140 | "id": "246ded34",
141 | "metadata": {},
142 | "outputs": [],
143 | "source": [
144 | "for path in SECURE_DIR.glob(\"*\"):\n",
145 | " _path_bytes = path.read_bytes() # open(filepath, 'rb')\n",
146 | " data = fer.decrypt(_path_bytes)\n",
147 | " rel_path = path.relative_to(SECURE_DIR)\n",
148 | " dest_path = DECRYPTED_DIR / rel_path\n",
149 | " dest_path.write_bytes(data)"
150 | ]
151 | },
152 | {
153 | "cell_type": "code",
154 | "execution_count": null,
155 | "id": "8735b09c",
156 | "metadata": {},
157 | "outputs": [],
158 | "source": []
159 | }
160 | ],
161 | "metadata": {
162 | "kernelspec": {
163 | "display_name": "Python 3 (ipykernel)",
164 | "language": "python",
165 | "name": "python3"
166 | },
167 | "language_info": {
168 | "codemirror_mode": {
169 | "name": "ipython",
170 | "version": 3
171 | },
172 | "file_extension": ".py",
173 | "mimetype": "text/x-python",
174 | "name": "python",
175 | "nbconvert_exporter": "python",
176 | "pygments_lexer": "ipython3",
177 | "version": "3.9.7"
178 | }
179 | },
180 | "nbformat": 4,
181 | "nbformat_minor": 5
182 | }
183 |
--------------------------------------------------------------------------------
/nbs/2 - Download Datasets & Unzip.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "id": "82cdd096",
7 | "metadata": {},
8 | "outputs": [],
9 | "source": [
10 | "import pathlib\n",
11 | "\n",
12 | "BASE_DIR = pathlib.Path().resolve().parent\n",
13 | "DATASET_DIR = BASE_DIR / \"datasets\"\n",
14 | "ZIPS_DIR = DATASET_DIR / 'zips'\n",
15 | "ZIPS_DIR.mkdir(exist_ok=True, parents=True)\n",
16 | "\n",
17 | "SPAM_SMS_ZIP_PATH = ZIPS_DIR / \"sms-spam-dataset.zip\"\n",
18 | "SPAM_YOUTUBE_ZIP_PATH = ZIPS_DIR / \"youtube-spam-dataset.zip\""
19 | ]
20 | },
21 | {
22 | "cell_type": "code",
23 | "execution_count": 2,
24 | "id": "60828e1b",
25 | "metadata": {},
26 | "outputs": [],
27 | "source": [
28 | "SMS_SPAM_ZIP = \"https://archive.ics.uci.edu/ml/machine-learning-databases/00228/smsspamcollection.zip\"\n",
29 | "YOUTUBE_SPAM_ZIP = \"https://archive.ics.uci.edu/ml/machine-learning-databases/00380/YouTube-Spam-Collection-v1.zip\""
30 | ]
31 | },
32 | {
33 | "cell_type": "code",
34 | "execution_count": 3,
35 | "id": "13a8f781",
36 | "metadata": {},
37 | "outputs": [
38 | {
39 | "name": "stdout",
40 | "output_type": "stream",
41 | "text": [
42 | " % Total % Received % Xferd Average Speed Time Time Time Current\n",
43 | " Dload Upload Total Spent Left Speed\n",
44 | "100 198k 100 198k 0 0 413k 0 --:--:-- --:--:-- --:--:-- 413k\n",
45 | " % Total % Received % Xferd Average Speed Time Time Time Current\n",
46 | " Dload Upload Total Spent Left Speed\n",
47 | "100 159k 100 159k 0 0 351k 0 --:--:-- --:--:-- --:--:-- 351k\n"
48 | ]
49 | }
50 | ],
51 | "source": [
52 | "!curl $SMS_SPAM_ZIP -o $SPAM_SMS_ZIP_PATH\n",
53 | "\n",
54 | "!curl $YOUTUBE_SPAM_ZIP -o $SPAM_YOUTUBE_ZIP_PATH "
55 | ]
56 | },
57 | {
58 | "cell_type": "code",
59 | "execution_count": 4,
60 | "id": "31b8c9ae",
61 | "metadata": {},
62 | "outputs": [],
63 | "source": [
64 | "SPAM_CLASSIFIER_DIR = DATASET_DIR / \"spam-classifier\"\n",
65 | "SMS_SPAM_DIR = SPAM_CLASSIFIER_DIR / \"spam-sms\"\n",
66 | "YOUTUBE_SPAM_DIR = SPAM_CLASSIFIER_DIR / \"youtube-spam\"\n",
67 | "\n",
68 | "\n",
69 | "SMS_SPAM_DIR.mkdir(exist_ok=True, parents=True)\n",
70 | "YOUTUBE_SPAM_DIR.mkdir(exist_ok=True, parents=True)"
71 | ]
72 | },
73 | {
74 | "cell_type": "code",
75 | "execution_count": 9,
76 | "id": "48269c4f",
77 | "metadata": {},
78 | "outputs": [
79 | {
80 | "name": "stdout",
81 | "output_type": "stream",
82 | "text": [
83 | "Archive: /Users/cfe/Dev/ai-api/datasets/zips/sms-spam-dataset.zip\n",
84 | " inflating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/spam-sms/SMSSpamCollection \n",
85 | " inflating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/spam-sms/readme \n",
86 | "Archive: /Users/cfe/Dev/ai-api/datasets/zips/youtube-spam-dataset.zip\n",
87 | " inflating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/youtube-spam/Youtube01-Psy.csv \n",
88 | " creating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/youtube-spam/__MACOSX/\n",
89 | " inflating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/youtube-spam/__MACOSX/._Youtube01-Psy.csv \n",
90 | " inflating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/youtube-spam/Youtube02-KatyPerry.csv \n",
91 | " inflating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/youtube-spam/__MACOSX/._Youtube02-KatyPerry.csv \n",
92 | " inflating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/youtube-spam/Youtube03-LMFAO.csv \n",
93 | " inflating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/youtube-spam/__MACOSX/._Youtube03-LMFAO.csv \n",
94 | " inflating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/youtube-spam/Youtube04-Eminem.csv \n",
95 | " inflating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/youtube-spam/__MACOSX/._Youtube04-Eminem.csv \n",
96 | " inflating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/youtube-spam/Youtube05-Shakira.csv \n",
97 | " inflating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/youtube-spam/__MACOSX/._Youtube05-Shakira.csv \n"
98 | ]
99 | }
100 | ],
101 | "source": [
102 | "!unzip -o $SPAM_SMS_ZIP_PATH -d $SMS_SPAM_DIR\n",
103 | "!unzip -o $SPAM_YOUTUBE_ZIP_PATH -d $YOUTUBE_SPAM_DIR"
104 | ]
105 | },
106 | {
107 | "cell_type": "code",
108 | "execution_count": null,
109 | "id": "fcb9fb69",
110 | "metadata": {},
111 | "outputs": [],
112 | "source": []
113 | }
114 | ],
115 | "metadata": {
116 | "kernelspec": {
117 | "display_name": "Python 3 (ipykernel)",
118 | "language": "python",
119 | "name": "python3"
120 | },
121 | "language_info": {
122 | "codemirror_mode": {
123 | "name": "ipython",
124 | "version": 3
125 | },
126 | "file_extension": ".py",
127 | "mimetype": "text/x-python",
128 | "name": "python",
129 | "nbconvert_exporter": "python",
130 | "pygments_lexer": "ipython3",
131 | "version": "3.9.7"
132 | }
133 | },
134 | "nbformat": 4,
135 | "nbformat_minor": 5
136 | }
137 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/app/encrypted/astradb_connect.zip:
--------------------------------------------------------------------------------
1 | gAAAAABhYHw2svK4NHkYUQoiSDsuU1qSJOaBveu75FKjUFI58rcFCJsn-zYrtgcSVZr-bbcMZuMt5l475847A5FvBWGLl0onLkc0wX-hSiCcChSqlvnD-tUhp07v1H0fIbBtpyp0445VG3uNR6edTNzA2lGoDZ7xNICXlKD2ivDrYO1Gug-WsboLmQWprhOUojMObDMkmvIUhssT3f_iIUdLrOMaJciyhGkp4-quCOJjpOi1Tu6C_t6IjNydX7TnbbbTadXvFSoXJNojxabUXbECBsxJU6AN1XbQJvBL3IJmEMWenIFn7MJcE4_oOBs_8ZXkvbKiid_DzUt8RfyTIKOtwGgo2Ob9JsvUR0iFowd_ZaMcsr-rIH_eWq0SmLodpdFhdvyCvE22y-GsoiX_qGFLUEBQtz8CkO_e2V55KbWizeJePrQE88NDT2ZuQKpLHB-sC80hK3Gw3ClolEhpCLu9cxVhoKrQodwOE2503aCSzXYgIwSaX9ySHZ_-N-byKGyVKiJq7HSMgG0vd8Nm1vuyO7eUgWIZPrEofMjaX4Ay4N-WUi48FHTGbU4NhYINF9TNiCOJukyMRz1-Zm5MOtEd8Fmn10UnSSEpfCdmhiJxkvcZ3jGXuh6-41oBXUJR3BUmspmcXUyA4sUXEeJwNRym-6QUNrKGS_SW56wHd4Lreug9TH4xjy60nIIa5cYHO7NDxrrBHfqD9ABI3S_ABXO4Z1OQKc-JNvao69FGJmEIH3UEx7MwHYfgPy6iHr664rPVJfR-VpdHOscg2fw2mBe0Otn40cwT4D0eVt9UC5C2aUp4pQUkVatwWgACynl5dk5sWZLi4yUHgrLAhtfnPTKT7kduGNv66_YMqA-fRZVMVDXeqjYdv5TYt_R6RtNIZKWDdU8VLd0EWYdCR3MBwrh07wFnlkdZDUj_fFLKb0qemtS1JxYxERrBMpfKvlz4jFlAvReCAFU36nZbfGGueP7_fJilEF1gpXERT1iAD98Johs60Hv3rZ0I0Fx1dNLVcIVUwyvYY38Ic3fIrEat-I3i-sPgVDpDxYs6a-CbmTig9c3QGGjWexSuskF7Y_fdfHpJD7GEfZbTZwfZ6OTU58l_i7g-u9rZUossFRDW1JlP8Pz6hxXcr8Ds1yZ0XI88go2adA7JusBbquHZUtd9A1koj55PGy7sqhtQog9f4lTtliA6iVpQsEZf-qYRJdFJhSN819_gCZ2ZwhH4QoXgNqO7QbACSGP7KCO7bvkCDDnM500l8bt3HKBEBQUJNWc2UEKg1YYxRJ2bwsXrEkKaKbYcrXJ0QsOIs5qnczQXPIihqXmz0KCx6wInWVZ1acn9xkKbe2bshcqKY_bFDvtOUjY5yNcGAZ_v9pj_FyK1WizpT0uAED1C7BMdoVlLc_GLFNgjLV8BUKRhhc3tw5fg8lnZC4SUC4nFONxjO9I28Il_640Y4yHTz2DyoeAbKaKf3WMc2b09pOoZDPdgKo_VLELGGTevs_StX-acnGyX52SZNt2W0F6-hYthVtK4sNVj9PEogET9yCzshe0L-QNRZhxrqpbBVSHjSGL6k6MCHqDS-tMArv-FIiSwim0f7ZXC-hHVgDcMerKd3HVp0dDxGSgJ2rdpDzV3VnYUiMnEXWeRLKgmM3xR-p6KlBzMtu-xQtKsRfS47cL4njUyV29es81QNuCs6vn7Z4tsZkjfUh6PiB2_0lF4Sgb4FfcH5kFD5wpJHbg9KHFqv-MfwSp9vAjpP0zSQ3afSOPOLmUzAEQyLp1Zxvy4rEP04gKDPdizIISmGz63J_lSYFMmotjbmb3sEtQ75VQ3Pa495JxMiXlFPn-LhOYltQO8bHx7OWoL6oP-wygC55b_CGCfS-mM3xPs_5bqmOlUAfb1YRXjVNlId5WPmXZ3wZraDiLBS-HNUDoESioFvx3s3JPGhV5pXf5M4-OJ4UuAMKH-KrlqLTLRH1EOfbgViz78Z7GE0DPMbSnEu9dnq7DiWeupVBOGZEf5q1-cmbHKf1qSW_I3bMPoVQ9twwmF2gW6DoXPgtLyX5qahcY_Rku997nkFH9DbZBg1gQenr8LNeUkaGSzqiTy_Gt7IVYEYsYTQq3H8uk54UoeQnGUOXA-19HPGB8L1nWBjBP3_682MqzHRa2-7J79OoKT7g2quqWP9198gF2SDFljbZU_WfAYVuPla6dDtolkqP8tUuWiRqld9kQu84PrqxMvYag4Qr1MloMGlE3-4eaCH9bWspg8sEglej3Pqnonn3cmTG3EKgLd8rUXI6ErbC17S3fIHm5umfAm7_dhXhPxakhYxso8hmZVVwwoaNUHU2BHEyZzbJJmO8_phSDT66k4JEH6TYOoQV3ejiKgQxlbPYUqXzXcpmY_LuhyOdNHtynAKJj8231EllifzcgouQPwGAayENlFqyY2vVjDIoouyuzAAIem_0APePHBPP6p-RnW9q1nU7OtLX96L6b3C3K02TOGg3Lj_0Dd_W_z2x_uMxzSgZPDQAedymdKh0lEu0rH7J7ci-mL9PSeLE9anpZhImdyCFw0ck80GHmkua4TpzCG6Bv-w2nOPSGRZe-8WU1PX6rT_1ZUCsZLZoGntU5FmQCwvNsOkYjaLknF6lTDvijWgcNF8lH1Ncpn2uRbkeGR-mmyNwmizFTTzTMo0ZIrVXpVQGOOzp6Ax1QK5W7jw9SzHlfxFeC7UwkTrFebwEBHSxrOzBWvrmvuSW529GjQFFtsxKBkMdil39O7kYlVKSIee1zR7ezv1aCaigei4UuxXZT9BHqlGG10qPyV1rKb-CCGIC5OviYo6K6GKhV7iCdhd3NCscqyk37nwWITA1f_K-NTxOlTl93AASemDXXwgbmeIZdkojEpe7_rahBezrnm_UviVdRB3cyXjlhoI9WphpqrEv6Zenc8ABIx2LSLCzdmC8ckRfDwSCHgtK638EEk8AvMiKLoU9IjcSz6uC-dKdb_JstT6wZwm4bfGU_W2N_Ca5EeRbEDYXQUVSvynSqZ2COU1uSdaSI7ZMtaWqgMYQ8v8LwG_g5a9Dzx6xbRoOTg7aok48bADhWJLn_9Kt3Wu9HJvAbZ58H1_6ZFRq6MDL7OtKv_KJpcBehrZdkvJj0MJDLU0PK_wahVPPOFhaJmdX8148STWHhLIBvGqJXv_9Re7KQMmCa7U97f0Y7vhL2nGmCWTOfhRcUWWGens4oGM6556gb0ehCP24nclISD52rF-O8NUvgTSMQdU4BXI-yLVw6-084I8wVBdVnZP79zuhNHK4_W1bi6JuxBpWpi0X77c65Cxxvl9x66JlP1TETkGSgDu_yx_3laV4kqH8szndVfwWuUtfap10pZvKPjsJevQXs46s_ns0b_I3iEjH_Idxp2EJ_TRsVxHkWSp6cpygc-eErywWiDoq1M2RhMoXTwNTEBQLQLmmDJbW8qiDKXUertPjesmq05deewNTjIni0iTxjFBL2UMmSuuBAf-bd2UjcjZADqPliJCJgegS32s5lN_EFXsS1qS2oImSgqKKr77P0_V2EMiD0VvVdz7d24ng_Qrq46yce00PchuTQPpEHaZfW5ci91rTwIa6h0u0D47_aYSAQjlTM8ZHHd8q70VIut9M7A5d8J5n3aKRIqhjG3KdgnmO3g_3DnsDo_xG4-rJDsn8FWKdzGHxsVOivjUA-rWKY1XbIKvCA6z9mq4ZFlER8BbaI7QOikHnszfvMzA1YTSte-5h0l0mZANqdQ6GNJ7ZObHWbVuYXCcLsOyY16gMIIcRS3Cw4_TmoO0rNCu4s6cuuI8_vRI-o1SOd44tRh6DwfXUzlLn14yBj_Z3ntH_xpAFq6I4kTHRMh93_yL3ZMxxi7Nb6bL95iFH1OO-N_ryYIo86lzj6G9Zq4sCwjyr_kv7YWHcIF729QMQN3FLOqwHr2YVw4Hke5FAro1oDK81hZr3Weqns7GkWIzvoZ2JP_LizZxUfBlFt8cCqVbVi7G-YhPEwdtM3Sgm07Tnsndur7vOA6g0RQuLthXNIJ7Io1HR9HqfxWb1epTE1aM_qEJEgMA2XXho_F9cbNBYCvlq1FE1BD56He5V6bwSz0X5gpJMV1aQ88NGCVe-I4RAC8U5ObnjdH_C8yCn3jtg5yH-uLFcAXXnIv8M8iJltF2ZswGPlpubV0u6N_-h_490k34iD4BUjuFrg8PuW217a8m8NbftILs317eslNj_caDhlO_iKRmXrhdmS1Ks8YT5pC8cv4Gn987WGug9idcOpDRxalGUG7hN5_5HzCp9qhC9_gUYyiO-PF5sfw5KDKXlY8TOgFEjisEA8WdCpW_hOay-1ZXklow6zL_P8cWLw7cvqew8z_1dzgAUyMTCAY5WXP3zYN1jLeSfFJ9v8_4LQTKUttadejz2G64Ynk9nVw4GUK2nLDAW0GXVi3OHFsAlLG9cXpPw6ZsgfxX6fvGdhynluCXmGmPjKvMu2FamQ4yEtsfoBBLKGI0iVbymfQmP_QcQHgo4mqd-MdUHo1xDMt9pYdw6i-AOfDB4uyvDTdMqCYl0togqWFrdO3dV_1IfSmSNjTpGp0gZKxHzXsoQko42papwtI3YK3M_CnE6DGVyW4oQpbXnPoaXoGEzWLs8By8HuBIhvwDfUtS5Ez2GE_iHrahDH0lf1PT2Pk0NXQk8miYUKpokDvij_FeHONaxQJiBVuud-heicD2gxgrsNUhxBuWR3jRDFYchYrEwctzxdJEhTFeCQcLqrhLuWs05RGNsRN7PKPdnexLbsN4yyBWy_tBG0QdhvjdRVun21NGPJ7SnU7m9katdsHVNOM_dSXOdBtCBVdunbJ2xGKOQz4X6KjIm14AOonjw8BeZhwZkF4zF4ym8eeIWH_rq1fly9Jrxuig1pilw9W308sAuHfoIhkMyZ-QKn0xOJmla0BqxbpIFeDoMZtR2BucSZ2RL74HGNDRTaRu1XjYXmOWVQwWxc8yhFFoRdeSfpVcfiX-TRZZeeUgLPbC_r6dr7ogzn-vDR7eY2HbA-Uequ3VqyQdGQfWcJgGJPzEHI3_PKiq3bhWa8s-3PKoabeNL83tYIy2Jv34p1fjxINod3jKxeooFtn66PcAYATqzLCpCjJpJcXqXZmixWDfhAkvNZ1Yul4ueV3Xdboe6Q_R9ADP66wrM6cM9HZpftMlBD2xk3o6yA5DxDz9MKEBqCvmu6ztIQh7H3HTRNPx9rRsOBtxuwKy2qOkwEl-8pnTrgU7A_SddeUt-ojdD_VELH4UYuLly3yd8nVEtfqYi7yJQRJ0WlgJcG9YfFh_SEqkfTdYZYILkxoLofnYHhIbG4iA3I61kS5CpyOjlOX8dJ4vhf5yb2D7WP--ieAZrUnDfBvTNHfGR_DOfDJ3Rjwdoe9PTwTdAsJPSBpyjOZrXjps0T-hw5J7uJnNNTMoPQwGdAwWqBOXRcpXMq-hb5ovieaSmnTiGUZiftbDB8wVaYZfh7kSKTaHbmhjfjQUVifxzek4wyAfCtiEmaSqkk7jkWW4QRl20_D7mUEZsSYg1c9laRW_ZIsBWY1km7wEyej2_Orrdznm1N2l0s8nz7ixJPmEeeLCPE4ezTNl1cYlol7wO1CgKwft_Nq94T_bdHWUQLV2KvsTYzK6F34b52mXe_GB5nEi9T8UTUhDkVtzBba0L7DgfRN7DyRsh8V20dq3ficw7Iw_57Qx5473yxtZ9xtSH4WUMDSH7svjLULd24ByC8PvjATJcVCB6e1atBzzdLQd8ObuMNnmFCwnOOfZfRj-ZaYyk1_q4Z8aRTcQUbtkdzhy9vI4h6JZfKWSHUUAl5HExVflf3KkVj-KCswWQytaLT6Am5UGKi_-NG3F16GD2YJAlU1ADRaDwoM6Mk5aMRPFLOzWI4PtUG67ugdQfvwaJrYQExdxZDhh-MrENUZQeP6Q1_oJ6B9MwZ8MOjqu2W1eqQd53bdaylC04zXty-vzRhRlwITD1cdj0c2HA4rAhipK3H6WgOm0za_9SFpvcPk8fwKKEKT6TccFEDYfzhe1TiFsIoyPgddml26EN9viVSN6utKpObCLxki_WNpxCw7I4xVs6n2aXygdTBrJoLdJuGda3GcBz5kAwOF3bGmKhxUrO-jvcgMoamSiEiGYRBspC6yARXEDtTR3MwUMZqRQDqccDwLmvNsjHgkpGTJERSO1MPZYTmTnGc8tda6FiVaTop7qMrS6FmlKB8KBMvyb6fJkDIuZ1GNKS4zjdxGVq0C_oTnSo5cUOW7tqEEV0wY_i2VVcstDVXGsDowEZ43Y3Z8nI-Inw6SK-G21BjPqiY0jLt7VHTQN1QuDcOWxZDW00ltPn1uNRes6fHry_rdbKUt6h6awzANwvChzCLS_VNDMxEdIjmtscjVdZPg58coX7bT8nHobwKhKsMmHtldy_Ok96zK0J-WtkymDBDW5BrEjr4bGQ2UeU9o4G2ZYQac_akIl9tzqoWbSIQLwnpiW41mWxIhrMuKXiWvx3Y0uicYli9JYKg-fKi8U86toPf5K-cfb4LMSVvPl0ZyUorXUEyIWT7JNDrHARVHrmx6zADx768ZWd8--9KQUAc3ajeZslGCbgWgpcqdCFXD0aS413NSq6xe0TxqiDkc5PRyPUiPlnKl-5NLvb_ZCxpV6etBlGFlZGSNd2vu0ltN32Pms9hEZn5JwjT2Idnpa7PHio2QIrGJ8geiQOPYJ3ahC162ROryh3mjm1xksypYdDsUzO-_Q3JdqJfJPhjQtJ_2-_ad6qfv7m1-3xH1nLvXzkNa4tEga6J-cLQUXYzh7IQekxREvOCeKA4-pWaTJAgpKLMp2zIaLzi-3RC9llCNseVqaGLalGMLgcWQesnW6zHZ1rx2KZGQ5s43rrsIlvTIAxufOm1qEQu7_ynDLiHEA87OHzf-V-CpT_4h8V6vsI8vshf_NNnm--WdXzKa6hM9eP5HsRQ6CI9O2qb8lTc1_GrWI1_ctytRiadX_UrXCTeEl6WhwEXYLhdlNayAASHoif4rLQfhhVz5DY_pk_ihIKewP2x4FhrlXcBubzx9O9FHLNkk87brFFZsN7G-76ySnQaSuIcfAHdDDuNJzzCxrRW9ZVHf7-mtkaCmDaEOOcRROYkDpAuEjbnQ2hr8TEvKDrY160b896KR21EHPO8Wun5BKjzy6flPsGMeZFly5tAOcHWppdUIIUVOtXO1rJKjFeOkdLvI-7GT1JcM_OMaetWC6gRsOB1M4-M8ucMdRIKJVRHi4EBlMw5W6vVlnNCigpVnLPTSIy7MAiofHEOrTkFJAK3lZ5pQc23dGW9JINe2jzbxKwUQIw4CmJlq4uMEOHoYA97SKqmMVNgNvWOsJ_qUs9AS9ajEw2QwSB_Mow_6P-C0UiVFp10C8XyVQ4Dt43MTC_CDWhW3MpZrakE9mk_gjZaZnAxGutfO41T2WCCRq1x7eqVqKO-URNoxS68vCRBkIRcaT0t4ZjZkAV0oIRb0gwk1iVuBOXpDEAuoM5ZUB1_263Vb7vO2YuIQZB-lUgKkPi7XCiY2aK7V--5AUPptwDLjK7HUnPj1SL56EtJwB0-OA6XYzhEMkAjgROf_v_haaB2NMmM4Ob2ywkUOpE4aUJbIPwGKPF4cNjulHMQkfb4EPPLutzxSGzdi-p0W9EM_RF689GeqcVnx-w2GUOi5rXhrUBxe7GRdox7laEDcXbGAxify0qYUU5kTWnDyTkBdWNUyuFDa8TED5U9MirxDAFNOrM_JNdHCf8Q_VLx8Rt3ejkw6MM6ZPU-_-pFadO88PznM6Hmgfd4hzK58i6MaYW_0BRu_D0-9ybWBprJfkmqB-39RGvrZCRuZvgGZ7ajf1XrpfX3QanU02lyLDosLRf5L4h7JhrnL1BRjjupfFKkX-WoxF0eaF1AllAgFDkRMJu0mZPaYVZpjNF1iuaoiFQeiZOn0o0JmxpoCBcK_bW6ts8GHPmWq5H2ZzNlBgDWNuXJvN8XQ0kY9P7WEZID19Dd6cIuqrPfYQxY_9szZ_sJy8illmKOsjw6fD6UsOIEL1ZkVi27CRPdWcxzf2Usy5j5ckReLaU38zyraybYxC9ROk8U4sGyc1rrl7q80RugwxTrLty0S-X9bE3LxfAl2NzPv1iFhRzqA0DNj84mD2-tqmneG30Qy9HGT-9Yj8EURu5JIC4drebu1iUKB8CCRhKLzRSc_p2vwbF0bO8cFrIEybyWneM-T-Fajb_QdKDo0aH4qrxYJHJmydy4zdvcQ6nMnedB4_crQ_Re33t0Gw0b7GQTE_yLt7Q4TtppTm9zTgJzUqLAt08sHjQS761uul22VsGWR1i_DMACXbheejqL7JUgSYBIkT0HpNWt_GqRgDQZP5UfdpBC5YQURP2fYWJFukSThgJpjPYkA8oQbOxXyba2LEIYDWOi35EMoUTETptf8VAAWSYzSJF5laadFMV0zSTvSPWblLA4oPMGpkhDzcUfYDIW2jo58oC3biM3tuuTXRevHcJpPHsSE1y7dlVNayulbWhoJFevYjVl66aEixX4shpWzlskz8iuI37dM83S_-LYMcDyCiH31Ql1VlVUPf11MJV0dtWfg4VrmbDMmrakWtiQsfFlLmhUaU-6ShwPU59nmrNDUcOPN-nsDHWVEIQKuTWHhHgB17MP7nQi5c_S7kczWhjnrGcvGrGUMfsATmve6aeQZ_pmTg9DsdT87OBAmxe3tlN_hAe3tov82GWreDlM47t3vDW9mP2vx-1ck1ExRj1KPt4wDGcK5ORBkxzR40tpPEFzxDJXCRcsjFhFswhelNdr7bRfVBGS8ZQvtpthiMw_S-6UZb4fnIPrap4KXIgBUsV7cN0kz6-XCVsLnnFxuC5KVQSfCnc3OjwpwuT8QIZSUqP9Zw4WbOs-hhZWu_St6f90pyubA94eWw2s6SmJQvSKPQxZKA-1VZSLsYP7AEtTpDaPprkeOtTqDoqGiDiSC3ODy4ReCm8QLP2omhW8qdQ_5Vxm40vQNwBOz8OdKBKVLX4mv8Wuj05P4DJ8cLnKzKtzHqSLhoJbOkAlBn8G3vmq2OyGlNu-c7YqSQ1hRSCbP2hiocOR3HSRhi507hha3ePbCsGsDSo4ncf6QIHg9sXnDdW7vfiXsRPSm-4bLs3nDuh9zfyDwUcNxFqwrtGbisV_V-xbAmeJUX_ui4IEDbGpbqOcU_OROpfK2onu0qeu6nTQQy4bxk3uqp42JN4T_WJRFn6jEUpYNacFM9I7L8d1sRIgqLkHz15rQxpSUkonAErevp2ndVETZ1euHigA3iJUXD1l1Q8TFC_dcVpVxuCyxrHp4H_BbsmWhxOohKTK0e9tdsDIPnEhT4n48SrhVP1zHzhe211_-gScVm0GLgMrI-FGacTp6j8CxZAr-hZtMj1dcUo85Bv71ay8mGqypZxWg1j1VUK_6adDJHNI1O1_O9gg4Cnbam_3H2h_j0PHygBpuGVw1JNiRT0_8xtql-Pj_63jZFqw0FM4_ExmvjEWuTQirJsxE7OHghcIQJrmAVDIY2bstEW2zIMbtQ1b3aS-GFuqFw1u11kUpNXYrJ_6oMZveYlMe3FMYg5KHJ2NK3f2XG2M_5jibMGW7nuymjcnptupwA7Nczlu5Av5xISh48FXndSS9QDrS89N8Zvck7hCp43P6ZHvNVuGxJqL7SdyHNznVGwA3lp1WPiLaukiXjiiD_GWZIqOXYuaxmujFJY6OD5MWK9C5RxiMOWDD_PXQuirKsgdfRiyeKOk0ks3BWMRISehzRyaiU3MesV2pUeZ7O_fj-0sWDzS4NJ_OPqwGqzXCIzOBXPuCgn3dS9VuSE6VSqBzUgdHEbOdU2tdkR9Itd9UGgTfxgxKr45D7kEHaeS2Akf97GhMJh-rtDJ67X5PR6shdofGoFLZonH0cshSFWgDGvCVmOTl8EHnt2prxa7bS5LukRqgwgiDXMsU3Nvv8tgayEfaE0LIhjiOahwKScHxmtRKrVhewdkDmeTENvX7sMWob997w-0DoFMwYtjysDV8FMsom0g_PG9EC_T19vUwRScvIjMQXxlDNY6CRajSXZwFs_3bhVj_NP3d6zZ00fN7_u7yKjhA4TGVCDNIZ0an8DXybeYon99yBvY9G5fKv6VVKgfwSGIx_U-42UNv0nWSY3NXUMuMlTH86yviKwWmHZKdpBH7NPgFdLg8EftEL8NAweDmQwt0YpZyeK09g1uAxWazmMGjEaiO6o_sWJiYFxsDG1EPQ9ss1MtIIiOT0Yr7kUkOtUxu4UmXLJPthx3J3ILEUy6u0yPdHbr3JNPbf5ASOCPr9f1Xb832h9hCNlqohQ0UskmBfNpHfm3U4GcOLIdBaI0SO_mpyDBqbJ871G6TqoH7wTDvmSv7Zhp24ydtnn6B_eggk37NTI3EjaW6X1YSLis2K3JvqevZUyHgA7IyamlsIengRRu2JZdB-iLb6hI7VXXbhSiXufDUP0Dw-1XNoxpu2tj__eG3mFzYc1843SJE3PhHRmQYcTJo686K1myUEEW9y2XYTU63FOHeJLVQAAMDdB6DsoTcNvmyjWuLp_DwP9_WQ_jnFfmPLeb8rFgXZBRhTvmj7ioV54fpk9zPT588UWh9nA8ZqBL2xUIOL9JeUJaQmbwllBcPed3ND5-y5phTcIRZloO1D4skIvinHXM_7n-2pg7iDqSAiVVGZOrmzxcx4PLKuSF30SRE9E8z2ljx_OYtPWHoVcit_MLWJWKWHPd5z_5ZcLqY0d3f5ychvwudnDz-M978coIn4JJQW48M-Qmi8TNbRU_4Q0D_Lfuod9w6oj1KDNceCbsUei04JSGq8VjfQMqgV7UMnnxrvRYkczJ8lOkAxqQmqwJJInrrPRmkuoMbxEtWAq125x1j-KcCk0GFCB9BGH2a_xxUaa-8kWviKM1BM4SgkuBdg-2xQDYbBswr-vujO8blVwG57P5kEc0rI4Yz9L58zJREQo1hNvVx8h8CV84i4MjgvZtrjAoj7brwr92EFEeJJw_ln2coDFLZSlHo3knXOm-TQvMbcFew9TUPKT_mQL2XHFnolwA5WjAMtUU7KrSZt6erd7hxLophzFbB4cwS4ShlshpZXxQtD5GCO-dWf4TJUH2tqBMg4FqgcF3nuAAmOalo17WeT9afjeSMCoBU9QWb935Np6OKWENIrWER0KviK7TKnZPGCJRcwZY9hQVJZKW-YPxdZOqFnxeZJPBjHsPnhvKzpu0syfN5bcC_X4WOr2fzGrG9kDopgNgljecNyS8GjhP5Z7M0BzkjjpYQza4gLFVwzWiYJM-hy2YsLATu7FTWLpvKEooflETkPx02lYrrEHSeaPUX0HaLE-odShZItRIO0L8SbgTMB4gXqZfaGiB8CMbJ_E0Fv_zJGdWb0B82RTaZp2rMv1bSLnjVyBfTy3rb1zHm6ONBdGaxXL4nXX2cWJuinqrp2crf4oS5Xdgvk9uuOLv9UnPPeOh5BOWCkooyJVQYfiO3QWXiu-X4lrNxAjw4hEtuXmAyWyO3QircHMJkVoKS3ljFcZvvUKVM08pr47gLcoadhtFi5wL6j7XcKhwB4lTdKwt7HT-otZF86As7ubwUsMVIZ9TtjsECIdIgjvJr2q8koZTvWKCfrR9tMLb0gITvamD7d1rVzudDfdvEXmE0z42UnpEg3lJnI52Rl8bUIaSW0tvOY7W723h3l434otg1JPEOIDUvSK7Z8uaCxoYWbX1HfdBVUHjSXGWRA0wCNn_9ikW9GK4myNSQI8DaydbOQAMtUFDzduaFtzhEY8sakR9sLNn0bIJGaEFg4V4kK6-DHtCH9wz2ZwZ8ymhAUQlelzIGm9IFqf4IfZlzD5rByZiAtdfTafpX83_hj6nsBeV1ipbJC2Fd3WL4XmsyvkJcqe0szXAWV3KHKIhdFMokbkZCPlxSxWeUU3K3iiBC-bI7iO8syQnzrGhL0vONAs6FfhtW6JBT6cO-tvvE_wxAqVsH9MfllX1YAm1yG_ykbZfYL78cAQwVGkVTaXuBbuWY-epVxgryDQL54t-XqEJ_PCIbo9HraciI1j1Z4kZSrPKhhBwPfdfgRtdbLUVRbnhD1iVU1ERZ1gdOAOoccyv95fOl2pao0NZMcZJYAXb_RTLkec9L6lDq8hq7KC908I678xCMa4__2mDeW06LDVZJecxteblpUVzsYNW5tFgSDKcZlfD3NWWZZ9Rf8kzEy-B02I_5jOxwIg3mdxAImhAT99qYGdabTAWHHcAVNuy7vpWivybcd-PoNXDxpwiMDldXhar1obwmZ2s9I-4mngwsAHTctKwEtwobWFCBA8wx4nJ5usGz_FT2-BXu9Oqn0-HVMzRDvsUdp8vXelcDJPTediZJxDENncI7hf6i7g-nKx31gsBC8J2OqrLYgCTx9hURyYX_B65b5PE6fB9XG3_U3uQQnRdHqzBOTbKCHQ4kTmU5Ni7O6_GEITxq21D-STuRzDkXwNU6N7jU4A83uB91fhzJtVCVG8itz2qwuNwWVKzOndqaXy2YBP_4aPTxP5vpuTyFUSz1jbLVOdSmWpY1mq_GHTgKAEV7-lWVODsACWAtLDe6HNsccEDoz8thZk2BG8EcUkoRW94rYUzoVZBaV2kV3SrQoZsk5pX5xTZBG7ZQ0CZRgmGb_wVjXFdOKBZcc_1yLQ85s2IfTc_DXxXoYovIIfCZZyW32kf77-mto0CMK0eFbr6Lhd-RSPg23Vl-XEiMSUS6sYGfxo1fc3biyeqL-BOkdwdkBsEPmsC0a2zOR7jI9c2SnFQWf4AnyBrwuOSTXOGQGd6OBtUs_9FhEBkQ8fbaopbUITKgwI_o6vXw0nTOZuGgrCOkKFI6jKJlQFZZ7JU1AamI2QaWaSkT-qmN9trzwWJN6FFR34hPVKG5O1aor4Twt2rHhJfYJu3Tvl2M04U2JLTyzkp3qV6UFmH1FcXN_AaD3DMyAbNEqfB1h5zLIPvH-YvQDB9-GLSmlqXWrAFV350hxzQzkTx0N01xBSYwI0_6Gm7axFCPLfYlJkgzf0faVq5LJVxMN8vWde1XTRWRwDMYRUnfFLVJ6MptRrS4_SVgK5hIg79OIjYeYr5g-D-FQ0SGOWzpkU06HXGaArtPjlxovphLoDN20XVX72hZ_KvYMgmrhpmYVVbx0aHgZjSIZGk3Br9e7aM87DhFv0Xhjzr3siwna4h8f8yrvWXm0QzW2ZtMAvscj0iwJzeXlo7z-K9apwFJiE3gC4AJ3HefjsVQRg8znAlc0BaTPs93yGSHLD_heLOeDxAM_4HJzKVmgvf5xiMJjhmwcvuA-iqWZ-ctdUcaVgiEYOCUS4uwzDEbJ6qMcoPvbzqYbvPmdUjvOfF5kuCIj5J8AtHLqzt_KQzqPgOuIIDFnMsnGwhzzBQvvoDuBpSM0Rhjjj9YL30i7TAtI4e6fli_gCmnKQLap-2LbY-CUmii6NAH-Y9BYYgKGeiMheJ6DXG97wlvCzyMvPG26EseioMzPhBjijDuQcxY79jBjS3rOdCFcsvZhwkphUd1qjedUVEBSxGGYEKHFK-BrFHkBE090A3jCxQiISXAqvaI8489gPD8MVWbrnicoy9ABQMg2rCAuHwx5ex2tOlqfLeVxyPU3AnrVlvSmZG24T2QNTrx6dj0rcXmohyntec-acgvO9NYQla2DkF9A8szjUPDVwxcXQE5KQDsRO_9OJqCBwnQC8K_c-PsVgCzjag-LMZsF6Whel9OwSKogcGoEY6xioshyzOpXmvq5elqLtqtU3Enw0jofRmBWuuF9p1mZdz6ntXmlXmxmuDfPCDSQN1PJOkdNmo8QsbcG-DDCDp7dWo_0XexRW77bcx2KHAi5Cw8HcehCug5mbNWOca1K_afQgI-38ltpV-yLrUXwYiLpSf4hoVAsU30_OrBw8AVGjILUkhx-ArcQ4YRCpUt_bT6FC1mhKh00R8Fn6QN5gEut8OOj0xzHRrSWOJpU85355-bLlj4iQllMeUOTib1cP5zJbsZthZKOLA6Husuch_ud5YLgb7zZWe_M_nWk-OHC2ujJ6O8gn2ea4lOYbwPXhazS7Wx2d8Pyhk2ivUvEm18RJ8ddP3JYwd_nCmzOC1dfM2RbvPxAAiXCJruZWdyh33yqIbIG9Jk6jG0vjgBS2cA1mhvrEOCvK5PCYTop3nOLNC27MqP6ZK30JXlXJ1SPOWZCCljuBK-tHl4ZRqAsgwshp08g70nWFOWZ2EfkdZFo-Gm9UDXyOfUnWDFWm6qJhmuyfeegLOd2n7g2_IXy-hFOvxUjnuFhOCzcXpNrOgQ5ezaKlmahBEBDWT6zouddn9tqYnDyiCwhA8DAdR9o-hlc47fAH8nN7riQhSUte5yGjcInnIueHCrhLbVmBwF7IWGhPVQT16SW2dPtJ2nI1qLakmRf6aUZOQ_zAIujxXudqFE7vieSZ5ENd3aYRNXC4txkkSLRTkEEsxND3Li02v_r5io7V6NDhnpi17n79wmNZ0-9MpVqnCD1vqE5pxXF0aMi9B99qT_Y1MbURVny34X6kxhnyEhkMg4T5h3OaXn-KHqm_waa_J3COBX3bCLEge8NKM0amH2MKiKPCuMttfhXiwjToMh0QGPgeU2Mf5TctJaRd6YiAMSFsoHZowci038BJXRkL9XbvBUFpnmJSuTHjncOXRW_hTxEqWgGYE4DRLey75JZJm2657mm79ODNnDrQwZqWaDeS501A9roaS7-5KH40KyVjKo22HEz-kSNPt4v-90I1bjutpVNrU43-vjheG55mWKFc6VMlM_pRkgwlHJjeaj2Iy9C6jTJMZj1GxpnLn6rfFzrl5idm3ieFR6vjzVGxHf5fNhyUvJvO1xW9NMaDlKksKDPiqvNCk_JNCELiZs8--mwBkY5dYBvc-rbTTsQBjAUMRp5TyOtc8Tp8leh-UzGTfi8ip4FFdoc41MZBQk0KCdB8_mQh3o9_Mcj2VcWYNOYxvj4gAXdfHVDMAGS5rB8mGC4ncm4mi75KxJz8iDAae7hEJ1kbGDA6n0QVTIVmX3a0im2yppsB76w-3OGXB84-wrv2xsKloAKvspMz3vaDGCBZrpP_Bum5xO2YZcXiCnrrgiYzkzZJn9jFIHuMK-gD1JLq4gmgcHWNOR3iH2Ha1xtTQH1Rp3WcttDpkkXqbKH6mLMwvhSruwUTf3Dw2OlsHMrMRzdQ8CevK7ko-iX3rcd5wonNMxg3Cg8xqaI4xlkA_fEi7dxOFOeIDjjGcSwQB7Rj7JXBP5qmaFFoN8602MuU9HmMSHpp6zFxPstKFQlGO4TLyIsjatz6qeit55t1wLbfumu7DjFjjruFmmJTAyegbpeqqAvCHWIfZOizPsNvJNTNP71FgeSsB5LrOnzrpZFeR1a7V3Bsk5lHyPQOFFOLuWuMoy0RDF-iPKCAm3VECyLjQDbFFQJkfp96SEZ9keHz75VWw_7fINrhmU_vCZKFLFdHH-CB34rxpM9ztLZZDh8KwreEC2Jq45dsJc0LS1NYzaeqkeSsoiJpkSdP4J0tJrabqpnXJx54dZtZte_1HW4cVWX2tWD2B46Ltg3uP3ROG_DA_E17IfOZjMz-VtWibqRiswCNG9Tpen_N6sXY5d05kHu_zjNVQ4D4EUVkbwioFDgj01WwWhGt_AchqB07P7m9PNYPi5oUgSYbx6EB-dE1I_RaC70_hsJJE5Zdwa2IZOoBUrOcODMjDSuuYDYd0VwHKyGequqif4s0EFRnnaMsfydpsf3fnhoys13aS9Tgl6oM7UFZwIIwnxUYB6Fi3PRvE7fB17jtgSh7RgOnlwfhVGnQPKGguZpP7POm6B5sC2OKLxAvMbrfpeYmxO-mxEC2XtL8QKI1DewqsQcpDx7eRNmUYbQI5sJhMw3vbyprdIwQxsL1M4dvPI4RdmvN_l8nhE-0PYCZIr_doCGCCfSR8N2e1gMtut22CP7SixWPJX2mKoUHZ4nil6VIF41Wu_rPOgKQCgrrSV_qMjn4HH5uRt7gQYRFetp8eEpZp_IWaO3UZC73LLvkhIu1HZdb4KoPBbJxRgaEoLsqOG7wA84cbzinYplBRaC4jvHY-_iCC5P3es4VuMrrroT6X8xZ529pZn33RkPGMLHSUl-8MPRUOl7Kl0X-A94lVU_ksP5uNhOBe53xwWE53nibKxr_lrwsPJmQhIskdQuaN1NfQb3-NfLhK7QLHXV_7hjExZmtnUzr5wOF36MTpzVPdAu5drCUj3UreDmKFNVCmaSepSW4lHhNkCmQf4LKmtKJh4K2HbpsLMVPeso4WXnflWXsU9wsKLs9aTkVggHy974SEGAteava7rIdqj6PoeCYU2XhfqHT_jPPQh3dP5b_siI6l9GxCDNaKmXv44ZCg4a1S7-eD0V9wP54OPa7B3KRTeEP8h-J0sOAG4od3lQeb8Ir43iE5CnyVbQZ5bNdXzl051wYl1XODVip7k3dpKcGaio1e2z1M_dyz6Tl84FJVQog==
--------------------------------------------------------------------------------
/nbs/4 - Convert Dataset into Vectors.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 18,
6 | "id": "03e95af1",
7 | "metadata": {},
8 | "outputs": [],
9 | "source": [
10 | "import pathlib\n",
11 | "import pandas as pd\n",
12 | "import random\n",
13 | "\n",
14 | "BASE_DIR = pathlib.Path().resolve().parent\n",
15 | "DATASET_DIR = BASE_DIR / \"datasets\"\n",
16 | "EXPORT_DIR = DATASET_DIR / \"exports\"\n",
17 | "EXPORT_DIR.mkdir(exist_ok=True, parents=True)\n",
18 | "SPAM_DATASET_PATH = EXPORT_DIR / \"spam-dataset.csv\""
19 | ]
20 | },
21 | {
22 | "cell_type": "code",
23 | "execution_count": 6,
24 | "id": "f65cc36d",
25 | "metadata": {},
26 | "outputs": [
27 | {
28 | "data": {
29 | "text/html": [
30 | "
\n",
31 | "\n",
44 | "
\n",
45 | " \n",
46 | " \n",
47 | " | \n",
48 | " label | \n",
49 | " text | \n",
50 | " source | \n",
51 | "
\n",
52 | " \n",
53 | " \n",
54 | " \n",
55 | " | 0 | \n",
56 | " ham | \n",
57 | " Go until jurong point, crazy.. Available only ... | \n",
58 | " sms-spam | \n",
59 | "
\n",
60 | " \n",
61 | " | 1 | \n",
62 | " ham | \n",
63 | " Ok lar... Joking wif u oni... | \n",
64 | " sms-spam | \n",
65 | "
\n",
66 | " \n",
67 | " | 2 | \n",
68 | " spam | \n",
69 | " Free entry in 2 a wkly comp to win FA Cup fina... | \n",
70 | " sms-spam | \n",
71 | "
\n",
72 | " \n",
73 | " | 3 | \n",
74 | " ham | \n",
75 | " U dun say so early hor... U c already then say... | \n",
76 | " sms-spam | \n",
77 | "
\n",
78 | " \n",
79 | " | 4 | \n",
80 | " ham | \n",
81 | " Nah I don't think he goes to usf, he lives aro... | \n",
82 | " sms-spam | \n",
83 | "
\n",
84 | " \n",
85 | "
\n",
86 | "
"
87 | ],
88 | "text/plain": [
89 | " label text source\n",
90 | "0 ham Go until jurong point, crazy.. Available only ... sms-spam\n",
91 | "1 ham Ok lar... Joking wif u oni... sms-spam\n",
92 | "2 spam Free entry in 2 a wkly comp to win FA Cup fina... sms-spam\n",
93 | "3 ham U dun say so early hor... U c already then say... sms-spam\n",
94 | "4 ham Nah I don't think he goes to usf, he lives aro... sms-spam"
95 | ]
96 | },
97 | "execution_count": 6,
98 | "metadata": {},
99 | "output_type": "execute_result"
100 | }
101 | ],
102 | "source": [
103 | "df = pd.read_csv(SPAM_DATASET_PATH)\n",
104 | "df.head()"
105 | ]
106 | },
107 | {
108 | "cell_type": "code",
109 | "execution_count": 7,
110 | "id": "b72886e5",
111 | "metadata": {},
112 | "outputs": [],
113 | "source": [
114 | "labels = df['label'].tolist()\n",
115 | "texts = df['text'].tolist()"
116 | ]
117 | },
118 | {
119 | "cell_type": "code",
120 | "execution_count": 8,
121 | "id": "2a57afc1",
122 | "metadata": {},
123 | "outputs": [
124 | {
125 | "data": {
126 | "text/plain": [
127 | "('spam',\n",
128 | " 'PRIVATE! Your 2004 Account Statement for 07742676969 shows 786 unredeemed Bonus Points. To claim call 08719180248 Identifier Code: 45239 Expires')"
129 | ]
130 | },
131 | "execution_count": 8,
132 | "metadata": {},
133 | "output_type": "execute_result"
134 | }
135 | ],
136 | "source": [
137 | "labels[120], texts[120]"
138 | ]
139 | },
140 | {
141 | "cell_type": "code",
142 | "execution_count": 13,
143 | "id": "75ccc8f1",
144 | "metadata": {},
145 | "outputs": [
146 | {
147 | "data": {
148 | "text/plain": [
149 | "{'0': 'ham', '1': 'spam'}"
150 | ]
151 | },
152 | "execution_count": 13,
153 | "metadata": {},
154 | "output_type": "execute_result"
155 | }
156 | ],
157 | "source": [
158 | "label_legend = {\"ham\": 0, \"spam\": 1}\n",
159 | "label_legend_inverted = {f\"{v}\": k for k,v in label_legend.items()}\n",
160 | "label_legend_inverted"
161 | ]
162 | },
163 | {
164 | "cell_type": "code",
165 | "execution_count": 17,
166 | "id": "63a2b378",
167 | "metadata": {},
168 | "outputs": [],
169 | "source": [
170 | "labels_as_int = [label_legend[x] for x in labels]\n",
171 | "# label_legend_inverted[str(labels_as_int[120])]"
172 | ]
173 | },
174 | {
175 | "cell_type": "code",
176 | "execution_count": 27,
177 | "id": "1ae380b7",
178 | "metadata": {},
179 | "outputs": [],
180 | "source": [
181 | "random_idx = random.randint(0, len(labels))\n",
182 | "\n",
183 | "assert texts[random_idx] == df.iloc[random_idx].text\n",
184 | "\n",
185 | "assert labels[random_idx] == df.iloc[random_idx].label\n",
186 | "\n",
187 | "assert label_legend_inverted[str(labels_as_int[random_idx])] == df.iloc[random_idx].label"
188 | ]
189 | },
190 | {
191 | "cell_type": "code",
192 | "execution_count": 29,
193 | "id": "52b7be64",
194 | "metadata": {},
195 | "outputs": [],
196 | "source": [
197 | "from tensorflow.keras.preprocessing.text import Tokenizer"
198 | ]
199 | },
200 | {
201 | "cell_type": "code",
202 | "execution_count": 30,
203 | "id": "0f1bb7ab",
204 | "metadata": {},
205 | "outputs": [],
206 | "source": [
207 | "MAX_NUM_WORDS = 280"
208 | ]
209 | },
210 | {
211 | "cell_type": "code",
212 | "execution_count": 33,
213 | "id": "4a8e800d",
214 | "metadata": {},
215 | "outputs": [
216 | {
217 | "data": {
218 | "text/plain": [
219 | "[[55, 66, 10, 123, 143, 204, 169, 77, 68, 187],\n",
220 | " [64, 8],\n",
221 | " [59, 10, 25, 4, 2, 211, 95, 2, 2, 110, 104],\n",
222 | " [8, 182, 21, 8, 181, 185, 67, 182],\n",
223 | " [1, 121, 124, 80, 2, 80, 263, 118],\n",
224 | " [94,\n",
225 | " 77,\n",
226 | " 175,\n",
227 | " 136,\n",
228 | " 129,\n",
229 | " 31,\n",
230 | " 6,\n",
231 | " 44,\n",
232 | " 101,\n",
233 | " 38,\n",
234 | " 125,\n",
235 | " 3,\n",
236 | " 41,\n",
237 | " 14,\n",
238 | " 13,\n",
239 | " 92,\n",
240 | " 64,\n",
241 | " 2,\n",
242 | " 93,\n",
243 | " 2],\n",
244 | " [208, 7, 9, 32, 38, 2, 40, 12, 113, 12, 38],\n",
245 | " [76, 212, 18, 120, 136, 76, 18, 14, 49, 2, 18, 276],\n",
246 | " [76, 4, 3, 20, 136, 2, 199, 2, 174, 26, 174, 66],\n",
247 | " [166, 18, 141, 37, 114, 8, 111, 2, 2, 5, 40, 14, 59, 26, 5, 141, 249, 59, 16],\n",
248 | " [42, 254, 33, 91, 245, 6, 1, 121, 79, 2, 89, 11, 135, 267, 96],\n",
249 | " [2, 211, 209, 47, 2, 196, 110, 6, 93, 2, 255, 78, 134, 56],\n",
250 | " [257,\n",
251 | " 3,\n",
252 | " 20,\n",
253 | " 216,\n",
254 | " 4,\n",
255 | " 90,\n",
256 | " 159,\n",
257 | " 59,\n",
258 | " 10,\n",
259 | " 88,\n",
260 | " 196,\n",
261 | " 199,\n",
262 | " 110,\n",
263 | " 5,\n",
264 | " 174,\n",
265 | " 2,\n",
266 | " 44,\n",
267 | " 104,\n",
268 | " 181,\n",
269 | " 82],\n",
270 | " [267,\n",
271 | " 136,\n",
272 | " 14,\n",
273 | " 5,\n",
274 | " 170,\n",
275 | " 2,\n",
276 | " 195,\n",
277 | " 3,\n",
278 | " 14,\n",
279 | " 11,\n",
280 | " 1,\n",
281 | " 1,\n",
282 | " 107,\n",
283 | " 18,\n",
284 | " 177,\n",
285 | " 14,\n",
286 | " 6,\n",
287 | " 35,\n",
288 | " 7,\n",
289 | " 3,\n",
290 | " 20,\n",
291 | " 136,\n",
292 | " 6,\n",
293 | " 4,\n",
294 | " 34,\n",
295 | " 49],\n",
296 | " [1, 20, 4, 16, 40, 35],\n",
297 | " [2, 18, 5, 10, 5, 246, 110, 186, 37, 118, 122, 50, 123],\n",
298 | " [163, 135, 42, 264, 118],\n",
299 | " [8, 53, 25, 225, 268, 183, 1, 147, 80, 206, 100, 1, 206],\n",
300 | " [27, 5, 144, 8, 251, 5, 144, 69, 213],\n",
301 | " [206, 108, 202, 5, 110, 46, 2, 2],\n",
302 | " [9, 22, 53, 3, 225, 268],\n",
303 | " [98, 2, 14, 25, 66],\n",
304 | " [21, 119, 190, 67, 54, 9, 130],\n",
305 | " [1, 7, 67, 1, 55, 126, 129, 126, 8, 46, 185],\n",
306 | " [44, 144, 1, 29, 214, 41, 40, 3],\n",
307 | " [30, 2, 4, 42, 140, 32, 11, 9, 233, 80, 42, 54, 1, 197],\n",
308 | " [197, 18, 269, 21],\n",
309 | " [147, 3, 5, 24, 3, 127, 147, 3, 100, 4, 24, 3, 18, 168, 36, 3, 251, 7, 45],\n",
310 | " [42, 101, 84, 5, 31, 112, 226, 3, 58, 27],\n",
311 | " [165, 1, 22, 61, 219, 13, 251, 38, 197],\n",
312 | " [270,\n",
313 | " 92,\n",
314 | " 32,\n",
315 | " 49,\n",
316 | " 22,\n",
317 | " 241,\n",
318 | " 3,\n",
319 | " 32,\n",
320 | " 230,\n",
321 | " 89,\n",
322 | " 12,\n",
323 | " 37,\n",
324 | " 22,\n",
325 | " 155,\n",
326 | " 79,\n",
327 | " 2,\n",
328 | " 272,\n",
329 | " 40,\n",
330 | " 161],\n",
331 | " [203,\n",
332 | " 80,\n",
333 | " 68,\n",
334 | " 10,\n",
335 | " 34,\n",
336 | " 25,\n",
337 | " 6,\n",
338 | " 63,\n",
339 | " 206,\n",
340 | " 123,\n",
341 | " 166,\n",
342 | " 17,\n",
343 | " 6,\n",
344 | " 86,\n",
345 | " 63,\n",
346 | " 38,\n",
347 | " 6,\n",
348 | " 80,\n",
349 | " 68,\n",
350 | " 41,\n",
351 | " 10,\n",
352 | " 22,\n",
353 | " 25,\n",
354 | " 28,\n",
355 | " 43,\n",
356 | " 55,\n",
357 | " 77,\n",
358 | " 32,\n",
359 | " 178,\n",
360 | " 151,\n",
361 | " 3],\n",
362 | " [135, 132, 12, 234, 89, 3],\n",
363 | " [14, 15, 40, 5, 15, 49, 22, 3, 30, 147, 20, 4],\n",
364 | " [145,\n",
365 | " 14,\n",
366 | " 18,\n",
367 | " 2,\n",
368 | " 231,\n",
369 | " 18,\n",
370 | " 141,\n",
371 | " 35,\n",
372 | " 33,\n",
373 | " 273,\n",
374 | " 48,\n",
375 | " 83,\n",
376 | " 183,\n",
377 | " 37,\n",
378 | " 44,\n",
379 | " 27,\n",
380 | " 3,\n",
381 | " 134,\n",
382 | " 44,\n",
383 | " 3,\n",
384 | " 35,\n",
385 | " 32,\n",
386 | " 33],\n",
387 | " [64, 1, 55, 91, 34, 5, 67, 1, 176, 119, 236, 98, 2, 16, 151, 28, 103, 9, 34],\n",
388 | " [112, 226, 3, 58, 54, 7],\n",
389 | " [1, 85, 5, 213, 16, 7],\n",
390 | " [234, 126, 8],\n",
391 | " [242,\n",
392 | " 3,\n",
393 | " 6,\n",
394 | " 53,\n",
395 | " 147,\n",
396 | " 55,\n",
397 | " 1,\n",
398 | " 63,\n",
399 | " 30,\n",
400 | " 2,\n",
401 | " 85,\n",
402 | " 27,\n",
403 | " 2,\n",
404 | " 36,\n",
405 | " 234,\n",
406 | " 32,\n",
407 | " 22,\n",
408 | " 42,\n",
409 | " 2,\n",
410 | " 37,\n",
411 | " 234],\n",
412 | " [148, 55, 40, 1, 30, 2, 33, 230, 36, 20, 4, 143],\n",
413 | " [147, 1, 2, 132, 3, 1, 79, 3, 1, 99, 3, 1, 3, 28, 15, 49, 1, 45, 3, 7],\n",
414 | " [176,\n",
415 | " 43,\n",
416 | " 2,\n",
417 | " 26,\n",
418 | " 3,\n",
419 | " 18,\n",
420 | " 134,\n",
421 | " 2,\n",
422 | " 88,\n",
423 | " 14,\n",
424 | " 4,\n",
425 | " 59,\n",
426 | " 252,\n",
427 | " 141,\n",
428 | " 59,\n",
429 | " 48,\n",
430 | " 26,\n",
431 | " 31,\n",
432 | " 14,\n",
433 | " 193],\n",
434 | " [97, 24, 3],\n",
435 | " [143, 1, 153, 3, 38, 18, 154, 1, 60, 51, 52],\n",
436 | " [44],\n",
437 | " [3, 39, 213, 10],\n",
438 | " [234, 98, 16],\n",
439 | " [203, 27, 279, 36, 13, 1, 171, 200, 263, 4],\n",
440 | " [8, 121, 58, 53, 1, 60, 1, 208, 79, 2, 55, 2, 5, 1, 42, 32, 4, 24, 14],\n",
441 | " [61, 3, 89, 12, 190, 65, 3, 12, 10, 274],\n",
442 | " [4, 38, 51, 52, 4, 9, 6, 3, 4, 14, 51, 52],\n",
443 | " [135, 120, 4, 193, 220, 28, 34, 88],\n",
444 | " [1,\n",
445 | " 22,\n",
446 | " 3,\n",
447 | " 241,\n",
448 | " 21,\n",
449 | " 83,\n",
450 | " 18,\n",
451 | " 1,\n",
452 | " 3,\n",
453 | " 13,\n",
454 | " 1,\n",
455 | " 63,\n",
456 | " 178,\n",
457 | " 5,\n",
458 | " 156,\n",
459 | " 1,\n",
460 | " 171,\n",
461 | " 6,\n",
462 | " 3,\n",
463 | " 269,\n",
464 | " 21,\n",
465 | " 167,\n",
466 | " 89,\n",
467 | " 5,\n",
468 | " 42,\n",
469 | " 105,\n",
470 | " 1,\n",
471 | " 6,\n",
472 | " 121,\n",
473 | " 20,\n",
474 | " 114,\n",
475 | " 2,\n",
476 | " 137,\n",
477 | " 42,\n",
478 | " 105,\n",
479 | " 1,\n",
480 | " 42,\n",
481 | " 105,\n",
482 | " 18,\n",
483 | " 63,\n",
484 | " 21],\n",
485 | " [5, 74, 6, 5, 37, 134],\n",
486 | " [36, 3, 58, 61, 147, 210, 17, 31, 51, 52],\n",
487 | " [90, 215, 14, 25, 9, 26, 31, 181, 206, 49, 56, 59, 108, 202, 17],\n",
488 | " [105, 112, 26, 149, 10],\n",
489 | " [132, 157, 3],\n",
490 | " [183, 6, 17, 15],\n",
491 | " [18, 254, 20, 2, 256, 41, 4, 90, 14, 16, 18, 144, 91, 1, 279, 208, 9, 12],\n",
492 | " [62, 24],\n",
493 | " [69, 4, 15],\n",
494 | " [105, 7, 13, 64, 27, 1, 71, 83, 31],\n",
495 | " [64, 1, 23, 130, 185, 80, 198, 206, 80, 198, 35, 1, 194],\n",
496 | " [76, 4, 1, 60, 2, 3, 22, 15, 18, 44, 3, 24, 40, 4, 199, 26],\n",
497 | " [96, 9, 70, 78, 277, 70, 35, 8, 14, 12, 93, 11, 2, 49, 46, 28, 190, 12],\n",
498 | " [257, 46, 4, 2, 37, 2, 174, 110, 2],\n",
499 | " [147, 3, 89, 5, 74, 13, 40, 49, 15],\n",
500 | " [1, 2, 137, 16, 11, 273],\n",
501 | " [67, 29, 133],\n",
502 | " [274, 157, 24, 3],\n",
503 | " [115, 227, 138, 34, 91, 31, 36, 235],\n",
504 | " [135, 135, 157, 24, 3, 53, 147, 3],\n",
505 | " [8, 29, 26, 12, 31],\n",
506 | " [1, 60, 26, 12, 3, 59],\n",
507 | " [258, 1, 60, 4, 6, 35, 3, 40, 6],\n",
508 | " [1, 38, 3, 172, 117, 28, 60, 172],\n",
509 | " [219, 32, 188, 51, 52, 37, 61],\n",
510 | " [69, 32, 5, 118, 92, 14, 4, 53, 117, 36, 77],\n",
511 | " [105, 112, 26, 149],\n",
512 | " [135, 147, 3, 26, 12, 30, 31],\n",
513 | " [64, 1, 60, 16, 5, 144, 2, 91, 115, 115],\n",
514 | " [3, 35, 33, 10, 5, 15, 22],\n",
515 | " [246, 106],\n",
516 | " [1, 26, 3, 149, 121, 20, 27, 12],\n",
517 | " [14, 54, 8, 233, 16, 1, 66, 99, 25, 114, 6, 81, 114, 6, 42, 1, 185, 49, 7],\n",
518 | " [183,\n",
519 | " 1,\n",
520 | " 2,\n",
521 | " 93,\n",
522 | " 2,\n",
523 | " 100,\n",
524 | " 13,\n",
525 | " 28,\n",
526 | " 101,\n",
527 | " 21,\n",
528 | " 42,\n",
529 | " 101,\n",
530 | " 10,\n",
531 | " 34,\n",
532 | " 5,\n",
533 | " 151,\n",
534 | " 1,\n",
535 | " 209,\n",
536 | " 10,\n",
537 | " 49,\n",
538 | " 7],\n",
539 | " [42, 140, 32, 41, 2, 13, 92, 227],\n",
540 | " [71, 46, 59],\n",
541 | " [203, 36, 2, 235],\n",
542 | " [105,\n",
543 | " 2,\n",
544 | " 33,\n",
545 | " 4,\n",
546 | " 9,\n",
547 | " 13,\n",
548 | " 64,\n",
549 | " 27,\n",
550 | " 43,\n",
551 | " 214,\n",
552 | " 164,\n",
553 | " 1,\n",
554 | " 10,\n",
555 | " 6,\n",
556 | " 22,\n",
557 | " 1,\n",
558 | " 116,\n",
559 | " 15,\n",
560 | " 6,\n",
561 | " 22,\n",
562 | " 49,\n",
563 | " 7,\n",
564 | " 65,\n",
565 | " 6,\n",
566 | " 22,\n",
567 | " 105],\n",
568 | " [10, 10, 54, 38, 54, 8, 247, 92, 2, 85, 8],\n",
569 | " [48, 26, 88, 16, 76, 3, 20, 216, 4, 209, 37, 199],\n",
570 | " [2, 237, 149, 1, 23, 185, 66, 68, 10, 169, 8, 165, 185],\n",
571 | " [18, 59, 9, 2, 33, 95, 5, 2, 2, 39, 6],\n",
572 | " [264, 187, 8],\n",
573 | " [1, 85, 54, 43, 43, 20, 15, 2],\n",
574 | " [115,\n",
575 | " 136,\n",
576 | " 64,\n",
577 | " 16,\n",
578 | " 31,\n",
579 | " 183,\n",
580 | " 16,\n",
581 | " 14,\n",
582 | " 4,\n",
583 | " 15,\n",
584 | " 4,\n",
585 | " 22,\n",
586 | " 1,\n",
587 | " 20,\n",
588 | " 34,\n",
589 | " 21,\n",
590 | " 99,\n",
591 | " 2,\n",
592 | " 39,\n",
593 | " 91,\n",
594 | " 123,\n",
595 | " 219,\n",
596 | " 22,\n",
597 | " 14,\n",
598 | " 8],\n",
599 | " [1, 85, 4, 15],\n",
600 | " [48, 121, 95, 12, 1, 20, 2, 182],\n",
601 | " [268, 46, 76, 76, 69, 29, 1, 256, 191, 41, 8],\n",
602 | " [42, 92, 14, 4, 2, 237, 6, 20, 32],\n",
603 | " [76, 212, 18, 120, 136, 76, 18, 14, 49, 2, 18, 276],\n",
604 | " [170, 1, 2, 36, 22, 1, 1, 41, 16, 6, 7, 2, 235, 16, 7, 13, 92],\n",
605 | " [7, 173, 6, 45, 3, 160],\n",
606 | " [145, 4, 14, 18, 16, 7, 145, 3, 14, 7],\n",
607 | " [112, 3, 41, 54, 1, 39, 125, 209],\n",
608 | " [53, 142, 7, 22, 7, 4],\n",
609 | " [1, 58, 243, 150, 7, 63, 38, 3, 32, 33, 67, 236, 1, 60, 269, 5, 81, 2],\n",
610 | " [108, 1],\n",
611 | " [61, 9, 5, 15, 5],\n",
612 | " [98, 14, 176, 3, 188],\n",
613 | " [42, 64, 13, 238, 1, 38, 25, 74, 28, 1, 8, 38, 238, 8, 198, 32, 151],\n",
614 | " [43, 24, 2, 259, 3, 217, 22, 3, 216, 4, 199, 26, 174, 66],\n",
615 | " [46, 172, 42, 151, 42, 151, 117, 123, 16, 21],\n",
616 | " [76, 1, 7, 7, 198, 167, 1, 86, 12, 56, 188, 86, 12, 2, 103, 43, 77],\n",
617 | " [3, 24, 4, 8, 20, 136, 25, 37, 4, 56, 2, 4, 272, 25, 174, 260],\n",
618 | " [183, 43, 14],\n",
619 | " [7, 30, 12, 22, 5, 21, 148, 237],\n",
620 | " [18, 14, 2, 174, 26],\n",
621 | " [257, 18, 141, 44, 63, 199, 16, 218, 11, 9, 88, 2, 259, 8, 26, 47],\n",
622 | " [118, 9, 7, 74, 49, 22],\n",
623 | " [24, 2, 4, 27, 3, 20, 4, 48, 26, 174],\n",
624 | " [1, 60, 98, 2, 96, 35, 33, 66, 34],\n",
625 | " [119, 187, 65],\n",
626 | " [62, 35, 36],\n",
627 | " [30,\n",
628 | " 21,\n",
629 | " 22,\n",
630 | " 3,\n",
631 | " 58,\n",
632 | " 261,\n",
633 | " 133,\n",
634 | " 1,\n",
635 | " 30,\n",
636 | " 261,\n",
637 | " 103,\n",
638 | " 4,\n",
639 | " 95,\n",
640 | " 32,\n",
641 | " 2,\n",
642 | " 21,\n",
643 | " 69,\n",
644 | " 168,\n",
645 | " 3,\n",
646 | " 108,\n",
647 | " 20,\n",
648 | " 2,\n",
649 | " 10,\n",
650 | " 234,\n",
651 | " 1,\n",
652 | " 20,\n",
653 | " 234,\n",
654 | " 16,\n",
655 | " 3,\n",
656 | " 10,\n",
657 | " 5,\n",
658 | " 190,\n",
659 | " 21,\n",
660 | " 14,\n",
661 | " 22,\n",
662 | " 1],\n",
663 | " [24, 3, 77, 10],\n",
664 | " [94,\n",
665 | " 53,\n",
666 | " 111,\n",
667 | " 8,\n",
668 | " 153,\n",
669 | " 8,\n",
670 | " 111,\n",
671 | " 154,\n",
672 | " 12,\n",
673 | " 127,\n",
674 | " 111,\n",
675 | " 236,\n",
676 | " 65,\n",
677 | " 44,\n",
678 | " 181,\n",
679 | " 137,\n",
680 | " 12,\n",
681 | " 4,\n",
682 | " 26,\n",
683 | " 65,\n",
684 | " 47],\n",
685 | " [135, 135, 53, 117, 219, 13],\n",
686 | " [42, 91],\n",
687 | " [160, 35, 26, 148],\n",
688 | " [190, 7],\n",
689 | " [211, 4, 27, 8, 58, 277, 5, 9, 10, 110, 2],\n",
690 | " [79, 25, 39, 79, 261, 25, 46, 5, 2, 176, 255],\n",
691 | " [1, 66, 175, 50],\n",
692 | " [80, 9, 77, 3, 26, 6, 214, 162],\n",
693 | " [44, 44, 1, 35, 23, 49],\n",
694 | " [32, 116, 114, 47, 5, 14, 59, 95, 55, 2, 27, 8, 39, 8, 40, 236],\n",
695 | " [68, 181, 1, 2, 1, 119, 10, 1, 4, 28, 38, 32, 206, 194],\n",
696 | " [135, 95, 12, 54, 16, 5, 144],\n",
697 | " [14, 18],\n",
698 | " [4, 39, 15, 178, 56, 128, 10, 275],\n",
699 | " [1, 58, 3, 24, 29, 3, 148, 5, 101],\n",
700 | " [183, 85, 32, 16, 5],\n",
701 | " [5, 268, 97, 9, 274, 14, 161],\n",
702 | " [155, 3, 2, 7, 95, 42, 6, 272, 2, 47, 8, 212, 176, 134, 106, 2],\n",
703 | " [35, 26, 188, 23, 10, 88, 173, 35, 47, 21, 148, 172],\n",
704 | " [135, 1, 7, 259, 22, 155],\n",
705 | " [68, 10],\n",
706 | " [5, 9, 6, 42, 1, 20],\n",
707 | " [1, 9, 238, 44, 99, 25, 55, 25],\n",
708 | " [64, 46, 134],\n",
709 | " [76, 212, 18, 120, 136, 76, 18, 14, 49, 2, 18, 276],\n",
710 | " [3,\n",
711 | " 24,\n",
712 | " 16,\n",
713 | " 5,\n",
714 | " 5,\n",
715 | " 208,\n",
716 | " 16,\n",
717 | " 7,\n",
718 | " 6,\n",
719 | " 54,\n",
720 | " 1,\n",
721 | " 7,\n",
722 | " 3,\n",
723 | " 24,\n",
724 | " 49,\n",
725 | " 22,\n",
726 | " 17,\n",
727 | " 1,\n",
728 | " 15,\n",
729 | " 7,\n",
730 | " 204,\n",
731 | " 3,\n",
732 | " 67,\n",
733 | " 7,\n",
734 | " 24,\n",
735 | " 17,\n",
736 | " 151,\n",
737 | " 4,\n",
738 | " 65,\n",
739 | " 15,\n",
740 | " 14,\n",
741 | " 12,\n",
742 | " 15,\n",
743 | " 1,\n",
744 | " 85,\n",
745 | " 28,\n",
746 | " 1,\n",
747 | " 38,\n",
748 | " 49,\n",
749 | " 3,\n",
750 | " 30,\n",
751 | " 38,\n",
752 | " 6,\n",
753 | " 6,\n",
754 | " 54,\n",
755 | " 7,\n",
756 | " 65,\n",
757 | " 118,\n",
758 | " 9,\n",
759 | " 3,\n",
760 | " 6,\n",
761 | " 1,\n",
762 | " 81],\n",
763 | " [24, 3, 34, 165],\n",
764 | " [42, 7, 31],\n",
765 | " [242,\n",
766 | " 7,\n",
767 | " 45,\n",
768 | " 61,\n",
769 | " 24,\n",
770 | " 3,\n",
771 | " 178,\n",
772 | " 147,\n",
773 | " 3,\n",
774 | " 39,\n",
775 | " 2,\n",
776 | " 22,\n",
777 | " 96,\n",
778 | " 24,\n",
779 | " 3,\n",
780 | " 3,\n",
781 | " 167,\n",
782 | " 24,\n",
783 | " 3,\n",
784 | " 4,\n",
785 | " 62,\n",
786 | " 36,\n",
787 | " 3,\n",
788 | " 124,\n",
789 | " 15,\n",
790 | " 12,\n",
791 | " 24,\n",
792 | " 3,\n",
793 | " 12],\n",
794 | " [3, 20, 4, 74, 14, 3, 48, 26, 31, 2],\n",
795 | " [3, 24, 4, 8, 20, 136, 25, 209, 37, 4, 56, 2, 4, 272, 25, 174],\n",
796 | " [222, 14, 12, 205, 1, 99, 3, 6, 1, 202, 3, 185, 6, 1, 262, 22, 3, 10, 173],\n",
797 | " [74, 6, 14, 7, 1, 20, 66, 74, 10],\n",
798 | " [42, 21, 10, 45, 40, 3, 42, 78, 1, 40, 3, 3, 100, 12, 21, 167],\n",
799 | " [148,\n",
800 | " 106,\n",
801 | " 9,\n",
802 | " 3,\n",
803 | " 2,\n",
804 | " 33,\n",
805 | " 103,\n",
806 | " 134,\n",
807 | " 183,\n",
808 | " 37,\n",
809 | " 44,\n",
810 | " 85,\n",
811 | " 103,\n",
812 | " 82,\n",
813 | " 8,\n",
814 | " 106,\n",
815 | " 93,\n",
816 | " 106,\n",
817 | " 2],\n",
818 | " [46, 9, 16, 5, 144, 8, 146, 4, 176, 25, 46, 27, 8, 36, 32, 16, 46, 141],\n",
819 | " [1, 49, 46, 16, 169, 185],\n",
820 | " [257, 43, 24, 2, 259, 3, 217, 22, 3, 20, 216, 4, 199, 26, 174, 66],\n",
821 | " [115, 277, 9, 156, 144, 2, 88],\n",
822 | " [143, 1, 5, 28, 103, 85, 3],\n",
823 | " [183, 13, 10, 17, 15, 179],\n",
824 | " [1, 99, 44, 6],\n",
825 | " [230, 68, 65, 2, 29, 55, 56, 59, 26, 8, 2],\n",
826 | " [61, 65, 3, 149],\n",
827 | " [265, 3, 7, 137, 8, 4, 69, 6, 40, 152],\n",
828 | " [154, 42, 254, 7, 31, 20, 4, 62, 164],\n",
829 | " [226, 12, 58, 54, 68, 5, 133, 21, 29, 100, 5, 26],\n",
830 | " [8, 92, 98, 2, 5],\n",
831 | " [17,\n",
832 | " 7,\n",
833 | " 276,\n",
834 | " 24,\n",
835 | " 14,\n",
836 | " 5,\n",
837 | " 6,\n",
838 | " 33,\n",
839 | " 101,\n",
840 | " 51,\n",
841 | " 52,\n",
842 | " 21,\n",
843 | " 251,\n",
844 | " 59,\n",
845 | " 2,\n",
846 | " 55,\n",
847 | " 6,\n",
848 | " 22,\n",
849 | " 51,\n",
850 | " 52],\n",
851 | " [95, 103, 27, 86, 134, 226, 12, 58, 21, 1, 29, 20, 103, 10],\n",
852 | " [115, 3, 30, 2, 206, 38, 2, 58, 27, 3, 241, 40, 5, 134, 59, 40, 183, 37, 44],\n",
853 | " [3, 7, 40, 5, 15, 133, 1, 60, 10, 99, 54, 5, 15, 5, 273, 6, 13, 7, 20, 4],\n",
854 | " [197, 44, 8, 29, 12],\n",
855 | " [64, 1, 60, 4, 6, 35, 3, 40, 6],\n",
856 | " [80, 35, 3, 131],\n",
857 | " [98, 16, 143],\n",
858 | " [242, 24, 3, 22, 32, 233, 101, 22, 14, 7, 31, 219, 80, 202, 12],\n",
859 | " [33, 77, 10, 4],\n",
860 | " [48, 26, 88, 16, 76, 3, 20, 216, 4, 209, 37, 199],\n",
861 | " [20, 3, 68, 27, 32, 1, 35, 39, 13, 31],\n",
862 | " [1, 91, 1, 55, 190, 28, 7, 132, 8, 54, 86, 135],\n",
863 | " [24, 3, 210, 17, 47, 82, 249, 231],\n",
864 | " [42,\n",
865 | " 105,\n",
866 | " 267,\n",
867 | " 5,\n",
868 | " 15,\n",
869 | " 150,\n",
870 | " 22,\n",
871 | " 108,\n",
872 | " 222,\n",
873 | " 10,\n",
874 | " 3,\n",
875 | " 4,\n",
876 | " 143,\n",
877 | " 2,\n",
878 | " 12,\n",
879 | " 3,\n",
880 | " 20,\n",
881 | " 136,\n",
882 | " 4,\n",
883 | " 34,\n",
884 | " 49,\n",
885 | " 208,\n",
886 | " 34,\n",
887 | " 143,\n",
888 | " 36,\n",
889 | " 20,\n",
890 | " 4,\n",
891 | " 143,\n",
892 | " 159],\n",
893 | " [115, 1, 5],\n",
894 | " [13, 35, 106, 16, 1, 86, 40, 247, 22, 35, 33, 2, 137, 14, 201],\n",
895 | " [53, 24, 3, 178, 153, 10, 14, 5, 74, 215, 30, 3, 4, 78],\n",
896 | " [275, 160, 4, 194, 78],\n",
897 | " [147, 8, 68, 22],\n",
898 | " [9, 18, 94, 21, 1, 214, 3, 34],\n",
899 | " [115,\n",
900 | " 69,\n",
901 | " 53,\n",
902 | " 9,\n",
903 | " 18,\n",
904 | " 1,\n",
905 | " 153,\n",
906 | " 1,\n",
907 | " 29,\n",
908 | " 85,\n",
909 | " 3,\n",
910 | " 193,\n",
911 | " 14,\n",
912 | " 4,\n",
913 | " 28,\n",
914 | " 1,\n",
915 | " 20,\n",
916 | " 2,\n",
917 | " 110,\n",
918 | " 101,\n",
919 | " 27,\n",
920 | " 8,\n",
921 | " 29],\n",
922 | " [13, 51, 52, 157, 3, 34],\n",
923 | " [1, 261, 3, 51, 52],\n",
924 | " [242, 31, 21, 110, 12, 54, 8, 27, 8, 29, 45],\n",
925 | " [18, 120, 136, 83, 51, 52, 18, 9, 51, 52, 18, 9, 51, 52],\n",
926 | " [],\n",
927 | " [8, 26, 12, 34, 64],\n",
928 | " [119, 182, 38, 1, 237],\n",
929 | " [76, 1, 7, 7, 198, 167, 1, 86, 12, 56, 188, 86, 12, 2, 103, 43, 77],\n",
930 | " [],\n",
931 | " [3, 48, 137, 161, 96, 228, 51, 52, 37, 5],\n",
932 | " [1, 21, 39],\n",
933 | " [41, 153, 3, 166, 4, 143, 36, 20, 4],\n",
934 | " [91, 21, 43, 29, 269],\n",
935 | " [135, 135, 62, 154],\n",
936 | " [53, 119],\n",
937 | " [143, 24, 3, 91, 31],\n",
938 | " [5, 76, 18],\n",
939 | " [1, 154, 5],\n",
940 | " [68, 69, 62],\n",
941 | " [1, 20, 2, 107, 40, 129],\n",
942 | " [203,\n",
943 | " 3,\n",
944 | " 146,\n",
945 | " 1,\n",
946 | " 124,\n",
947 | " 3,\n",
948 | " 29,\n",
949 | " 18,\n",
950 | " 52,\n",
951 | " 31,\n",
952 | " 2,\n",
953 | " 32,\n",
954 | " 230,\n",
955 | " 28,\n",
956 | " 27,\n",
957 | " 1,\n",
958 | " 29,\n",
959 | " 177,\n",
960 | " 226,\n",
961 | " 12,\n",
962 | " 58,\n",
963 | " 28,\n",
964 | " 54,\n",
965 | " 3,\n",
966 | " 36,\n",
967 | " 33,\n",
968 | " 230,\n",
969 | " 3,\n",
970 | " 24],\n",
971 | " [64, 44, 107, 46, 65],\n",
972 | " [77, 9, 221, 277, 35, 10, 3, 29, 22, 2, 5, 10, 6, 137, 13, 2],\n",
973 | " [105, 112, 26, 149],\n",
974 | " [8, 182, 15, 32, 182, 206, 4, 66, 126, 1, 169, 32, 21, 194],\n",
975 | " [74, 47, 55, 110, 252, 2, 44, 96, 47, 66, 82, 56],\n",
976 | " [142, 140, 27, 3, 26, 12, 30, 99, 247, 2, 2],\n",
977 | " [35,\n",
978 | " 8,\n",
979 | " 214,\n",
980 | " 46,\n",
981 | " 245,\n",
982 | " 9,\n",
983 | " 46,\n",
984 | " 223,\n",
985 | " 25,\n",
986 | " 4,\n",
987 | " 266,\n",
988 | " 25,\n",
989 | " 210,\n",
990 | " 17,\n",
991 | " 59,\n",
992 | " 110,\n",
993 | " 83,\n",
994 | " 46,\n",
995 | " 169],\n",
996 | " [94],\n",
997 | " [173, 9, 114, 84, 67, 28, 173, 190, 84, 67, 167, 220],\n",
998 | " [160, 62, 220, 31, 66, 1, 60, 41],\n",
999 | " [39, 10, 6, 2, 170, 51, 52, 6, 34, 190, 170],\n",
1000 | " [160, 43, 24, 98, 2, 88],\n",
1001 | " [105, 203, 42, 118],\n",
1002 | " [183, 118, 9, 269, 10, 165],\n",
1003 | " [95,\n",
1004 | " 214,\n",
1005 | " 247,\n",
1006 | " 96,\n",
1007 | " 8,\n",
1008 | " 29,\n",
1009 | " 210,\n",
1010 | " 4,\n",
1011 | " 37,\n",
1012 | " 208,\n",
1013 | " 69,\n",
1014 | " 41,\n",
1015 | " 2,\n",
1016 | " 8,\n",
1017 | " 56,\n",
1018 | " 30,\n",
1019 | " 134,\n",
1020 | " 40,\n",
1021 | " 268,\n",
1022 | " 176],\n",
1023 | " [1, 20, 13, 163, 21, 51, 52, 71],\n",
1024 | " [37, 33, 4, 38, 34, 5, 106, 16, 5],\n",
1025 | " [157, 24, 3, 54, 3, 118],\n",
1026 | " [74, 128, 28, 5, 21, 108, 40, 46, 276, 30, 191, 84, 182, 42, 269],\n",
1027 | " [8,\n",
1028 | " 20,\n",
1029 | " 4,\n",
1030 | " 97,\n",
1031 | " 9,\n",
1032 | " 25,\n",
1033 | " 100,\n",
1034 | " 259,\n",
1035 | " 40,\n",
1036 | " 8,\n",
1037 | " 210,\n",
1038 | " 17,\n",
1039 | " 97,\n",
1040 | " 113,\n",
1041 | " 111,\n",
1042 | " 97,\n",
1043 | " 46,\n",
1044 | " 21,\n",
1045 | " 26,\n",
1046 | " 16],\n",
1047 | " [16, 7, 21, 1, 265],\n",
1048 | " [12, 206],\n",
1049 | " [44, 44, 30, 16, 22, 63, 2, 33, 28, 22],\n",
1050 | " [1, 8, 42, 31, 28, 1, 140, 38, 169, 192, 8, 238, 175, 8, 56, 96, 42],\n",
1051 | " [8, 121, 22, 243],\n",
1052 | " [151, 1, 198, 1, 20, 5, 1, 1, 20, 37, 108, 20, 5],\n",
1053 | " [1, 3, 2, 26, 162, 31, 64],\n",
1054 | " [10],\n",
1055 | " [13,\n",
1056 | " 165,\n",
1057 | " 236,\n",
1058 | " 163,\n",
1059 | " 64,\n",
1060 | " 67,\n",
1061 | " 1,\n",
1062 | " 6,\n",
1063 | " 20,\n",
1064 | " 13,\n",
1065 | " 83,\n",
1066 | " 5,\n",
1067 | " 65,\n",
1068 | " 3,\n",
1069 | " 41,\n",
1070 | " 3,\n",
1071 | " 24,\n",
1072 | " 172,\n",
1073 | " 20,\n",
1074 | " 4,\n",
1075 | " 62,\n",
1076 | " 164],\n",
1077 | " [46, 15, 37, 59, 25, 110, 109, 2, 82],\n",
1078 | " [6],\n",
1079 | " [46, 8, 107, 13, 9, 128, 123, 144, 15, 239, 123, 20, 194, 78, 130],\n",
1080 | " [61, 3, 178, 53, 24, 3],\n",
1081 | " [277,\n",
1082 | " 9,\n",
1083 | " 179,\n",
1084 | " 6,\n",
1085 | " 5,\n",
1086 | " 22,\n",
1087 | " 5,\n",
1088 | " 278,\n",
1089 | " 144,\n",
1090 | " 9,\n",
1091 | " 277,\n",
1092 | " 4,\n",
1093 | " 159,\n",
1094 | " 28,\n",
1095 | " 54,\n",
1096 | " 13,\n",
1097 | " 2,\n",
1098 | " 3,\n",
1099 | " 20,\n",
1100 | " 2,\n",
1101 | " 2,\n",
1102 | " 39,\n",
1103 | " 18],\n",
1104 | " [42, 101, 58, 54],\n",
1105 | " [121, 13, 2, 33, 228, 3, 39, 101, 205, 42, 30, 31, 17],\n",
1106 | " [21, 227, 194, 2, 5],\n",
1107 | " [157, 24, 3, 1, 99, 3],\n",
1108 | " [43, 2, 259, 3, 18, 134, 2, 88, 15, 4, 57, 95, 134, 37, 26, 31],\n",
1109 | " [246, 2, 4, 54, 24, 3, 10, 96, 36, 3, 124],\n",
1110 | " [],\n",
1111 | " [42, 98, 16, 7, 31, 238, 7, 32, 8],\n",
1112 | " [7, 44, 10, 12, 27, 46, 263],\n",
1113 | " [94, 1, 60, 140, 79, 2, 37, 85, 12, 95, 2, 95, 34, 2, 95, 106],\n",
1114 | " [155, 3, 71, 40, 161],\n",
1115 | " [4, 67],\n",
1116 | " [32, 230, 92, 2, 39, 4, 15, 162],\n",
1117 | " [46, 120, 59, 55, 2, 50, 2, 31, 106, 110, 106, 2, 255],\n",
1118 | " [5, 1, 30, 166, 2],\n",
1119 | " [39, 5, 231, 16, 18, 141, 159, 6, 116, 11, 186, 9, 59, 15],\n",
1120 | " [71, 2, 17, 88],\n",
1121 | " [164, 120, 14, 78, 220, 120, 71, 10, 4, 144, 3, 38, 5, 6, 18, 34, 5],\n",
1122 | " [15, 2, 33, 216, 30, 56, 31, 93, 2, 114, 82, 50],\n",
1123 | " [1, 76, 154, 107, 90],\n",
1124 | " [44, 7, 32],\n",
1125 | " [],\n",
1126 | " [132, 2, 225, 10, 5],\n",
1127 | " [112, 85, 3, 10, 4],\n",
1128 | " [30, 261, 13, 21, 61, 15, 36, 3, 38],\n",
1129 | " [49, 49, 10, 10],\n",
1130 | " [3, 68, 221, 4],\n",
1131 | " [8, 202, 247, 5, 9, 14, 8, 28, 27, 5, 9, 21, 155, 2, 202, 191, 30, 222, 10],\n",
1132 | " [64, 1, 14, 133, 53],\n",
1133 | " [],\n",
1134 | " [203, 1, 124, 7, 92, 17, 47, 217, 164, 27, 3, 39, 15, 226, 12, 58, 6, 112],\n",
1135 | " [135, 1, 71, 83, 67, 27, 7, 274, 17],\n",
1136 | " [64],\n",
1137 | " [115,\n",
1138 | " 138,\n",
1139 | " 40,\n",
1140 | " 7,\n",
1141 | " 61,\n",
1142 | " 111,\n",
1143 | " 8,\n",
1144 | " 41,\n",
1145 | " 25,\n",
1146 | " 137,\n",
1147 | " 12,\n",
1148 | " 4,\n",
1149 | " 26,\n",
1150 | " 10,\n",
1151 | " 6,\n",
1152 | " 34,\n",
1153 | " 91,\n",
1154 | " 27,\n",
1155 | " 37,\n",
1156 | " 12,\n",
1157 | " 16,\n",
1158 | " 11,\n",
1159 | " 31,\n",
1160 | " 45],\n",
1161 | " [7,\n",
1162 | " 173,\n",
1163 | " 4,\n",
1164 | " 2,\n",
1165 | " 12,\n",
1166 | " 32,\n",
1167 | " 205,\n",
1168 | " 1,\n",
1169 | " 45,\n",
1170 | " 7,\n",
1171 | " 173,\n",
1172 | " 28,\n",
1173 | " 205,\n",
1174 | " 1,\n",
1175 | " 45,\n",
1176 | " 5,\n",
1177 | " 150,\n",
1178 | " 10,\n",
1179 | " 7,\n",
1180 | " 173,\n",
1181 | " 5,\n",
1182 | " 204,\n",
1183 | " 191,\n",
1184 | " 276,\n",
1185 | " 1,\n",
1186 | " 26,\n",
1187 | " 191,\n",
1188 | " 7,\n",
1189 | " 204],\n",
1190 | " [160, 10, 5, 3, 24, 64, 28, 4, 62, 81, 10],\n",
1191 | " [94, 3, 18, 268, 2],\n",
1192 | " [8, 162, 1, 251, 21, 130, 206, 63],\n",
1193 | " [56, 68, 22],\n",
1194 | " [24, 3, 11, 117],\n",
1195 | " [1, 5, 186, 48],\n",
1196 | " [104, 141, 3, 31, 174, 18, 59, 158, 4, 55, 14, 18, 26, 16, 104],\n",
1197 | " [175, 4, 157, 3, 55, 142, 33, 114],\n",
1198 | " [12,\n",
1199 | " 12,\n",
1200 | " 100,\n",
1201 | " 12,\n",
1202 | " 28,\n",
1203 | " 10,\n",
1204 | " 5,\n",
1205 | " 15,\n",
1206 | " 7,\n",
1207 | " 173,\n",
1208 | " 54,\n",
1209 | " 1,\n",
1210 | " 222,\n",
1211 | " 81,\n",
1212 | " 16,\n",
1213 | " 7,\n",
1214 | " 6,\n",
1215 | " 182,\n",
1216 | " 1,\n",
1217 | " 202,\n",
1218 | " 8,\n",
1219 | " 20,\n",
1220 | " 4,\n",
1221 | " 194,\n",
1222 | " 78],\n",
1223 | " [1, 265, 256, 5, 158, 170, 31, 148, 93, 4, 186],\n",
1224 | " [99, 4, 279, 175, 22, 65, 15, 159, 185],\n",
1225 | " [1, 5, 217, 65, 43, 68, 14, 5, 190, 65, 40, 206],\n",
1226 | " [22,\n",
1227 | " 9,\n",
1228 | " 140,\n",
1229 | " 6,\n",
1230 | " 265,\n",
1231 | " 14,\n",
1232 | " 4,\n",
1233 | " 41,\n",
1234 | " 14,\n",
1235 | " 164,\n",
1236 | " 17,\n",
1237 | " 36,\n",
1238 | " 8,\n",
1239 | " 124,\n",
1240 | " 77,\n",
1241 | " 9,\n",
1242 | " 1,\n",
1243 | " 171,\n",
1244 | " 14,\n",
1245 | " 164,\n",
1246 | " 16],\n",
1247 | " [163, 6, 83, 5, 144, 3, 36, 20, 114, 10, 18, 79, 2, 55, 17, 14, 4],\n",
1248 | " [80, 9, 4],\n",
1249 | " [9, 152, 47, 23, 162, 17, 122, 56, 44, 93],\n",
1250 | " [47, 61, 1, 1, 124, 146, 33, 29],\n",
1251 | " [200, 27, 8, 214, 41],\n",
1252 | " [197, 183, 88, 9, 16, 4, 8, 237],\n",
1253 | " [23, 17, 88, 15, 6, 222, 18, 141, 6, 95, 2],\n",
1254 | " [157, 24, 5, 113, 16, 5],\n",
1255 | " [96, 9, 78, 8, 12, 76, 44],\n",
1256 | " [124, 46, 211, 11, 159, 10, 88, 95, 2, 31, 104, 159],\n",
1257 | " [80, 137, 12, 4, 26, 54, 225, 68, 5, 133, 28, 22, 228, 5, 15, 5, 159],\n",
1258 | " [115,\n",
1259 | " 5,\n",
1260 | " 144,\n",
1261 | " 1,\n",
1262 | " 63,\n",
1263 | " 40,\n",
1264 | " 8,\n",
1265 | " 9,\n",
1266 | " 5,\n",
1267 | " 144,\n",
1268 | " 11,\n",
1269 | " 9,\n",
1270 | " 5,\n",
1271 | " 12,\n",
1272 | " 46,\n",
1273 | " 1,\n",
1274 | " 153,\n",
1275 | " 1,\n",
1276 | " 58,\n",
1277 | " 8,\n",
1278 | " 56,\n",
1279 | " 5,\n",
1280 | " 15,\n",
1281 | " 153,\n",
1282 | " 8,\n",
1283 | " 210,\n",
1284 | " 63],\n",
1285 | " [3, 7, 78, 36, 20, 4, 143, 78, 151],\n",
1286 | " [135, 135, 167],\n",
1287 | " [43, 29, 55, 56, 123, 43, 29, 68],\n",
1288 | " [32, 140, 20, 44, 276, 42],\n",
1289 | " [66, 166, 18, 141, 3, 24, 2, 2, 5, 141, 14, 59, 26, 5, 141, 249, 59, 16],\n",
1290 | " [1],\n",
1291 | " [2, 3, 151, 227, 1, 45],\n",
1292 | " [94, 155, 108, 43, 30, 55, 192, 6, 20],\n",
1293 | " [8, 132, 138, 213, 4, 238, 25, 238, 113, 241, 138, 92, 56, 90],\n",
1294 | " [22,\n",
1295 | " 142,\n",
1296 | " 33,\n",
1297 | " 143,\n",
1298 | " 33,\n",
1299 | " 34,\n",
1300 | " 5,\n",
1301 | " 171,\n",
1302 | " 214,\n",
1303 | " 16,\n",
1304 | " 37,\n",
1305 | " 35,\n",
1306 | " 39,\n",
1307 | " 10,\n",
1308 | " 168,\n",
1309 | " 88,\n",
1310 | " 107,\n",
1311 | " 20,\n",
1312 | " 4,\n",
1313 | " 62,\n",
1314 | " 159],\n",
1315 | " [44, 53, 24, 3, 178],\n",
1316 | " [44],\n",
1317 | " [115, 130, 53, 9, 5, 274],\n",
1318 | " [182, 4, 62, 28, 154, 3, 58, 7, 34],\n",
1319 | " [258, 95, 12, 54],\n",
1320 | " [42, 5, 95, 1, 30, 261, 3, 69, 2, 33, 4, 21, 13, 10, 22],\n",
1321 | " [135, 135, 135, 62],\n",
1322 | " [1, 171, 39, 17, 67, 13, 37, 235],\n",
1323 | " [26, 14, 66, 90, 212, 26, 47, 4, 189, 44],\n",
1324 | " [116,\n",
1325 | " 232,\n",
1326 | " 3,\n",
1327 | " 20,\n",
1328 | " 166,\n",
1329 | " 40,\n",
1330 | " 12,\n",
1331 | " 76,\n",
1332 | " 245,\n",
1333 | " 76,\n",
1334 | " 3,\n",
1335 | " 7,\n",
1336 | " 83,\n",
1337 | " 7,\n",
1338 | " 158,\n",
1339 | " 189,\n",
1340 | " 47,\n",
1341 | " 18,\n",
1342 | " 32,\n",
1343 | " 258,\n",
1344 | " 34,\n",
1345 | " 49,\n",
1346 | " 48,\n",
1347 | " 36,\n",
1348 | " 32,\n",
1349 | " 259,\n",
1350 | " 12,\n",
1351 | " 236,\n",
1352 | " 37,\n",
1353 | " 1,\n",
1354 | " 35,\n",
1355 | " 3,\n",
1356 | " 2,\n",
1357 | " 18],\n",
1358 | " [78, 211, 168, 10, 88, 6, 107, 18, 16, 5, 15, 4, 93, 55, 2, 31, 255, 176],\n",
1359 | " [1, 60, 91, 227, 24, 3, 92, 41],\n",
1360 | " [258, 21, 53, 71, 3, 136, 6, 228],\n",
1361 | " [30, 6],\n",
1362 | " [105, 112, 26, 149],\n",
1363 | " [8, 12, 170, 26, 7, 158],\n",
1364 | " [64, 143, 4],\n",
1365 | " [1,\n",
1366 | " 107,\n",
1367 | " 13,\n",
1368 | " 5,\n",
1369 | " 120,\n",
1370 | " 71,\n",
1371 | " 67,\n",
1372 | " 3,\n",
1373 | " 20,\n",
1374 | " 15,\n",
1375 | " 31,\n",
1376 | " 167,\n",
1377 | " 7,\n",
1378 | " 81,\n",
1379 | " 47,\n",
1380 | " 242,\n",
1381 | " 34,\n",
1382 | " 5,\n",
1383 | " 9,\n",
1384 | " 7,\n",
1385 | " 162],\n",
1386 | " [157, 8, 136],\n",
1387 | " [60, 32, 2, 36, 38, 22],\n",
1388 | " [7, 10],\n",
1389 | " [98, 16],\n",
1390 | " [9, 1, 46, 10, 261, 8, 7, 9, 7],\n",
1391 | " [81, 31],\n",
1392 | " [4, 1, 36, 50, 110, 2, 90, 212, 176, 16],\n",
1393 | " [30, 10, 16, 3, 140, 36, 202, 36, 20, 4, 143, 273],\n",
1394 | " [279, 177, 3, 77, 267, 166, 127],\n",
1395 | " [27, 32, 10, 7, 10, 127, 6, 4, 42, 98],\n",
1396 | " [96,\n",
1397 | " 9,\n",
1398 | " 105,\n",
1399 | " 78,\n",
1400 | " 27,\n",
1401 | " 271,\n",
1402 | " 1,\n",
1403 | " 63,\n",
1404 | " 40,\n",
1405 | " 3,\n",
1406 | " 27,\n",
1407 | " 271,\n",
1408 | " 1,\n",
1409 | " 37,\n",
1410 | " 3,\n",
1411 | " 30,\n",
1412 | " 69,\n",
1413 | " 46,\n",
1414 | " 42,\n",
1415 | " 62],\n",
1416 | " [3, 131, 271, 17, 53, 117, 43, 99, 14, 6, 1, 24, 2, 17, 53, 117, 43, 29, 16],\n",
1417 | " [51, 52, 63, 218],\n",
1418 | " [195, 3, 14, 2, 182, 167, 2, 3, 1, 60, 118, 6, 3, 54, 1, 127, 214, 3, 10, 97],\n",
1419 | " [46, 15, 37, 59, 25, 110, 109, 2, 82],\n",
1420 | " [46, 209, 9, 2, 46, 209, 10, 31, 93, 209, 2, 66, 255, 176],\n",
1421 | " [42, 127, 54, 1, 165, 1, 165, 10, 5, 6, 42, 34, 5, 1, 269, 54, 201, 78, 9],\n",
1422 | " [242, 30, 68, 118, 69, 4, 144, 69, 1, 35, 222, 3],\n",
1423 | " [258, 258],\n",
1424 | " [163, 64, 44],\n",
1425 | " [23, 170, 31],\n",
1426 | " [118, 2, 14, 74, 215, 1, 60, 2, 3],\n",
1427 | " [62,\n",
1428 | " 53,\n",
1429 | " 22,\n",
1430 | " 78,\n",
1431 | " 24,\n",
1432 | " 43,\n",
1433 | " 6,\n",
1434 | " 167,\n",
1435 | " 2,\n",
1436 | " 33,\n",
1437 | " 36,\n",
1438 | " 43,\n",
1439 | " 10,\n",
1440 | " 5,\n",
1441 | " 6,\n",
1442 | " 1,\n",
1443 | " 124,\n",
1444 | " 15,\n",
1445 | " 3,\n",
1446 | " 7,\n",
1447 | " 45,\n",
1448 | " 76,\n",
1449 | " 269],\n",
1450 | " [154, 1, 58, 35, 107, 239, 15, 12, 21, 44],\n",
1451 | " [31, 252, 59, 110, 16, 26, 16, 37],\n",
1452 | " [118, 9, 18, 2, 106, 134, 106, 82, 249, 231],\n",
1453 | " [187, 10, 157, 39],\n",
1454 | " [258, 95, 12, 54],\n",
1455 | " [242,\n",
1456 | " 7,\n",
1457 | " 1,\n",
1458 | " 202,\n",
1459 | " 3,\n",
1460 | " 185,\n",
1461 | " 6,\n",
1462 | " 1,\n",
1463 | " 30,\n",
1464 | " 41,\n",
1465 | " 1,\n",
1466 | " 3,\n",
1467 | " 241,\n",
1468 | " 118,\n",
1469 | " 10,\n",
1470 | " 40,\n",
1471 | " 12,\n",
1472 | " 12,\n",
1473 | " 1,\n",
1474 | " 45,\n",
1475 | " 3],\n",
1476 | " [1, 35, 3, 10, 76, 154],\n",
1477 | " [42, 98, 14, 35, 176, 3, 246, 51, 52, 260],\n",
1478 | " [1,\n",
1479 | " 265,\n",
1480 | " 222,\n",
1481 | " 2,\n",
1482 | " 150,\n",
1483 | " 27,\n",
1484 | " 60,\n",
1485 | " 32,\n",
1486 | " 230,\n",
1487 | " 1,\n",
1488 | " 29,\n",
1489 | " 191,\n",
1490 | " 27,\n",
1491 | " 113,\n",
1492 | " 2,\n",
1493 | " 21,\n",
1494 | " 148,\n",
1495 | " 132,\n",
1496 | " 12,\n",
1497 | " 61,\n",
1498 | " 3,\n",
1499 | " 79,\n",
1500 | " 2,\n",
1501 | " 140,\n",
1502 | " 237,\n",
1503 | " 6,\n",
1504 | " 53,\n",
1505 | " 117,\n",
1506 | " 3,\n",
1507 | " 24,\n",
1508 | " 2],\n",
1509 | " [145, 14, 18, 3, 35, 33, 56, 212, 159, 3, 29, 34, 83, 16],\n",
1510 | " [29, 3, 182, 61],\n",
1511 | " [3, 171, 20, 12, 1, 3],\n",
1512 | " [154, 32, 4, 15, 10, 16, 74, 125, 10, 6, 5, 120, 235, 98],\n",
1513 | " [222, 7, 77, 27],\n",
1514 | " [1, 22, 221, 12, 21, 66, 1, 38, 22, 89, 96, 21, 66, 108, 12],\n",
1515 | " [1,\n",
1516 | " 155,\n",
1517 | " 3,\n",
1518 | " 3,\n",
1519 | " 58,\n",
1520 | " 22,\n",
1521 | " 4,\n",
1522 | " 144,\n",
1523 | " 5,\n",
1524 | " 6,\n",
1525 | " 42,\n",
1526 | " 230,\n",
1527 | " 3,\n",
1528 | " 107,\n",
1529 | " 13,\n",
1530 | " 190,\n",
1531 | " 5,\n",
1532 | " 113,\n",
1533 | " 35,\n",
1534 | " 54,\n",
1535 | " 18,\n",
1536 | " 9,\n",
1537 | " 67,\n",
1538 | " 30,\n",
1539 | " 198,\n",
1540 | " 9,\n",
1541 | " 4,\n",
1542 | " 2,\n",
1543 | " 28,\n",
1544 | " 1,\n",
1545 | " 222,\n",
1546 | " 16,\n",
1547 | " 3,\n",
1548 | " 41],\n",
1549 | " [203, 230, 137, 12, 4, 2, 7],\n",
1550 | " [94, 250, 13, 32, 4, 107, 239],\n",
1551 | " [94, 1, 35, 33, 214, 3, 34],\n",
1552 | " [6, 56, 59, 16, 16, 252, 26, 16, 37],\n",
1553 | " [13, 129],\n",
1554 | " [1, 35, 26, 3],\n",
1555 | " [22, 65, 3, 108, 38],\n",
1556 | " [56, 59, 166, 18, 158, 26, 59, 16, 2, 31],\n",
1557 | " [7, 31, 8, 185],\n",
1558 | " [21],\n",
1559 | " [94, 21, 11, 24, 43, 98, 14, 5, 66, 37, 5, 151],\n",
1560 | " [220, 66, 1, 29, 64],\n",
1561 | " [183, 1, 124, 21, 1, 60, 10, 28, 7, 9, 10, 1, 124, 16, 14, 5, 217, 1, 22],\n",
1562 | " [256, 3, 41, 61, 65, 24, 6, 22, 98],\n",
1563 | " [47, 118, 188, 5, 9, 201, 273, 32, 14, 81, 273],\n",
1564 | " [63, 6, 92, 54, 8, 26, 101, 21, 4, 95, 9, 3, 35, 93, 8, 4, 95, 1],\n",
1565 | " [3,\n",
1566 | " 24,\n",
1567 | " 269,\n",
1568 | " 18,\n",
1569 | " 17,\n",
1570 | " 77,\n",
1571 | " 3,\n",
1572 | " 15,\n",
1573 | " 18,\n",
1574 | " 16,\n",
1575 | " 248,\n",
1576 | " 3,\n",
1577 | " 24,\n",
1578 | " 81,\n",
1579 | " 15,\n",
1580 | " 5,\n",
1581 | " 150,\n",
1582 | " 267,\n",
1583 | " 271,\n",
1584 | " 155,\n",
1585 | " 142,\n",
1586 | " 1,\n",
1587 | " 124,\n",
1588 | " 4,\n",
1589 | " 15,\n",
1590 | " 18,\n",
1591 | " 142,\n",
1592 | " 3,\n",
1593 | " 100,\n",
1594 | " 3,\n",
1595 | " 251],\n",
1596 | " [62, 4, 167, 83, 5, 15, 1, 68, 127, 47, 6, 1, 153, 3, 24, 214, 3, 47],\n",
1597 | " [135, 28, 1, 79, 2, 5, 130, 1, 39, 37],\n",
1598 | " [59, 95, 190, 2, 14, 4, 37, 95, 39, 2, 14, 4, 177, 188, 59, 24, 2, 110, 106],\n",
1599 | " [160, 53, 9, 147, 3, 2, 103],\n",
1600 | " [5, 120, 32, 136],\n",
1601 | " [15, 3, 39, 118],\n",
1602 | " [5, 143, 15, 51, 52, 10, 127],\n",
1603 | " [39, 2, 2, 1, 58, 4, 15],\n",
1604 | " [49,\n",
1605 | " 63,\n",
1606 | " 154,\n",
1607 | " 274,\n",
1608 | " 11,\n",
1609 | " 40,\n",
1610 | " 7,\n",
1611 | " 153,\n",
1612 | " 78,\n",
1613 | " 223,\n",
1614 | " 64,\n",
1615 | " 33,\n",
1616 | " 62,\n",
1617 | " 76,\n",
1618 | " 279,\n",
1619 | " 193,\n",
1620 | " 65,\n",
1621 | " 76,\n",
1622 | " 269],\n",
1623 | " [242, 62, 159, 4, 37, 235, 149],\n",
1624 | " [],\n",
1625 | " [186, 125, 95, 268, 189, 261, 8, 4, 9, 261, 50],\n",
1626 | " [71, 83, 88, 34, 125, 21, 43, 29, 17, 5, 14, 11],\n",
1627 | " [238, 1, 79, 13, 2, 33, 18, 244],\n",
1628 | " [112, 55, 151, 43, 29, 55, 55, 81],\n",
1629 | " [91, 125, 128],\n",
1630 | " [],\n",
1631 | " [77, 108, 8, 79, 2],\n",
1632 | " [1, 20, 4, 74, 31],\n",
1633 | " [59, 88, 30, 95, 5, 211, 2, 31, 104, 181, 82, 249, 231],\n",
1634 | " [112, 17, 10, 4, 95, 12, 157, 2, 214, 3],\n",
1635 | " [93, 4, 25, 46, 25, 83, 4, 110, 45, 45, 2, 56, 44, 255],\n",
1636 | " [183, 47, 217, 159, 42, 272, 26],\n",
1637 | " [247, 120, 88, 6, 18, 158, 205, 113, 3, 2, 210, 17, 97, 13, 9, 26, 47, 4],\n",
1638 | " [9, 10],\n",
1639 | " [257, 18, 141, 189, 120, 136, 40, 4, 199, 26, 47, 174, 66],\n",
1640 | " [93,\n",
1641 | " 11,\n",
1642 | " 2,\n",
1643 | " 46,\n",
1644 | " 276,\n",
1645 | " 6,\n",
1646 | " 235,\n",
1647 | " 89,\n",
1648 | " 46,\n",
1649 | " 53,\n",
1650 | " 9,\n",
1651 | " 7,\n",
1652 | " 90,\n",
1653 | " 25,\n",
1654 | " 129,\n",
1655 | " 56,\n",
1656 | " 218,\n",
1657 | " 15,\n",
1658 | " 51,\n",
1659 | " 52,\n",
1660 | " 51,\n",
1661 | " 52,\n",
1662 | " 134,\n",
1663 | " 12],\n",
1664 | " [64, 33, 64, 1],\n",
1665 | " [157, 24, 3, 160],\n",
1666 | " [116, 16, 116, 244],\n",
1667 | " [34, 36, 119, 12, 4, 238, 1, 68, 44, 96],\n",
1668 | " [1, 2, 237, 4, 69, 257, 28, 4, 15, 51, 52, 77, 9, 44, 2, 51, 52, 7],\n",
1669 | " [34, 91, 264, 126],\n",
1670 | " [219, 86, 107, 2, 2, 4, 183, 37, 44],\n",
1671 | " [252, 57, 158, 9, 18, 26, 26, 47],\n",
1672 | " [14],\n",
1673 | " [3, 31, 42, 38, 170, 263, 84, 51, 52],\n",
1674 | " [5, 186, 261, 9, 14, 51, 52, 1, 51, 52, 37, 51, 52],\n",
1675 | " [200, 37, 267, 5, 38, 185],\n",
1676 | " [53, 219, 107],\n",
1677 | " [115, 153, 8, 39, 11, 110, 136, 31, 89, 1, 124],\n",
1678 | " [28, 1, 20, 2, 1, 38, 2, 20, 45, 6],\n",
1679 | " [183, 80, 9, 140, 143, 156, 188, 10, 204, 172, 2, 39, 17],\n",
1680 | " [3, 241, 2, 12, 41, 52],\n",
1681 | " [1, 162, 151, 28, 1, 80, 181, 12, 1, 4],\n",
1682 | " [105, 112, 26, 149],\n",
1683 | " [94, 94, 182, 43, 4, 45],\n",
1684 | " [105, 7, 1, 29, 71, 83, 28, 42, 66, 233, 4, 14, 31, 18],\n",
1685 | " [154, 203, 1, 22, 9],\n",
1686 | " [1, 39, 160, 3, 58, 3, 24, 7, 6],\n",
1687 | " [197, 20, 3, 14, 74],\n",
1688 | " [260, 149, 135],\n",
1689 | " [],\n",
1690 | " [145, 14, 11, 153, 3, 166, 4, 62, 78, 96],\n",
1691 | " [135, 135, 61, 24, 3, 79, 2, 44],\n",
1692 | " [64, 1, 35, 132, 103, 2, 17, 203, 69, 136, 28, 43, 24, 35, 11, 273],\n",
1693 | " [14, 116, 196, 20, 3, 136, 43, 29, 92, 177, 26, 59, 37, 95, 101],\n",
1694 | " [1, 124, 55, 100],\n",
1695 | " [34, 4, 6, 1, 38, 8, 4, 1, 58, 8, 38, 12, 38, 22, 21],\n",
1696 | " [1, 153, 3, 5, 15, 6, 266, 162, 89, 6, 222, 18, 6, 49, 5, 156],\n",
1697 | " [90, 22, 26, 277, 1, 202, 99, 79, 45],\n",
1698 | " [98, 4, 172, 6, 41, 40, 5, 9, 5, 65, 35, 1],\n",
1699 | " [157, 147, 8, 55, 7, 158, 9, 254, 3, 20, 2, 10, 118],\n",
1700 | " [143, 136, 78, 208, 114, 2, 195],\n",
1701 | " [3, 31, 174, 18, 59, 158, 14, 18, 26, 31, 16, 104, 17],\n",
1702 | " [105, 112, 26, 149, 64],\n",
1703 | " [64, 1, 60, 16, 5, 144, 2],\n",
1704 | " [143, 1, 45, 6, 9, 7, 53, 89, 3, 1, 45, 51, 52, 212, 164],\n",
1705 | " [113, 121, 22, 16, 5, 2, 222, 13, 47, 233, 168, 77],\n",
1706 | " [54, 24, 3, 98, 2, 18],\n",
1707 | " [44, 99, 112, 270, 56, 169, 25, 106],\n",
1708 | " [77, 24, 224, 132, 12, 5],\n",
1709 | " [160, 11, 9, 18, 2, 18, 56, 37, 209, 26, 47],\n",
1710 | " [53, 120, 13, 136, 3],\n",
1711 | " [1,\n",
1712 | " 22,\n",
1713 | " 5,\n",
1714 | " 133,\n",
1715 | " 18,\n",
1716 | " 118,\n",
1717 | " 5,\n",
1718 | " 35,\n",
1719 | " 69,\n",
1720 | " 247,\n",
1721 | " 51,\n",
1722 | " 52,\n",
1723 | " 2,\n",
1724 | " 7,\n",
1725 | " 6,\n",
1726 | " 51,\n",
1727 | " 52,\n",
1728 | " 68,\n",
1729 | " 21,\n",
1730 | " 5,\n",
1731 | " 6,\n",
1732 | " 179,\n",
1733 | " 33,\n",
1734 | " 230,\n",
1735 | " 3,\n",
1736 | " 5,\n",
1737 | " 3,\n",
1738 | " 24,\n",
1739 | " 2,\n",
1740 | " 238],\n",
1741 | " [79, 25, 39, 79, 261, 25, 46, 5, 83, 2, 176, 255],\n",
1742 | " [194, 198, 83, 4, 121, 90, 114, 15, 12, 278, 236, 1, 8, 62],\n",
1743 | " [64, 42, 254, 41, 2, 10, 38],\n",
1744 | " [45, 3, 45, 8],\n",
1745 | " [61, 116],\n",
1746 | " [135, 29, 1, 256, 41, 54],\n",
1747 | " [3, 131, 233, 101, 198, 3, 241, 89, 32, 14],\n",
1748 | " [77, 85, 8, 10, 4],\n",
1749 | " [4, 276, 24, 185, 12, 89, 3, 3, 34, 49, 11],\n",
1750 | " [264, 126],\n",
1751 | " [195, 3, 1, 265, 270, 2, 5, 244],\n",
1752 | " [3, 146, 18, 2],\n",
1753 | " [27, 43, 211, 69, 140, 44, 90, 14, 65],\n",
1754 | " [59, 186, 18, 59, 95, 83, 2, 11, 186, 40, 5, 59, 14, 82, 50],\n",
1755 | " [160, 61, 2, 3],\n",
1756 | " [16, 27, 3, 79, 5, 1, 261, 67, 89, 27, 3, 79, 25],\n",
1757 | " [1, 124, 267, 13, 29, 3, 93, 4, 186],\n",
1758 | " [105, 7, 37, 1, 142, 27, 3, 79, 43, 171, 101, 37, 1, 171, 237, 125, 40, 7],\n",
1759 | " [90, 215, 14, 25, 9, 26, 31, 181, 206, 49, 56, 59, 108, 202, 17],\n",
1760 | " [105, 10, 112, 26, 149],\n",
1761 | " [61, 274, 15, 51, 52],\n",
1762 | " [24, 3, 59, 31, 29, 1, 26, 31],\n",
1763 | " [68, 54],\n",
1764 | " [124, 1, 35, 55, 14, 13, 16, 105, 1, 21],\n",
1765 | " [125, 15, 191, 9, 32, 9, 13],\n",
1766 | " [228, 170],\n",
1767 | " [160, 1, 20],\n",
1768 | " [40, 5, 204, 9, 8, 211, 37, 40, 97, 9, 2, 8, 9, 27, 8, 8, 27, 8, 211, 8, 92],\n",
1769 | " [54, 29, 119, 71, 17],\n",
1770 | " [23, 40],\n",
1771 | " [1, 47, 4, 2],\n",
1772 | " [10, 11, 8, 20, 216, 5, 199, 2, 174, 30, 26, 104, 106, 168, 66],\n",
1773 | " [44,\n",
1774 | " 175,\n",
1775 | " 10,\n",
1776 | " 169,\n",
1777 | " 187,\n",
1778 | " 238,\n",
1779 | " 270,\n",
1780 | " 68,\n",
1781 | " 25,\n",
1782 | " 36,\n",
1783 | " 34,\n",
1784 | " 91,\n",
1785 | " 29,\n",
1786 | " 36,\n",
1787 | " 7,\n",
1788 | " 37,\n",
1789 | " 192,\n",
1790 | " 187],\n",
1791 | " [37, 5, 7],\n",
1792 | " [3,\n",
1793 | " 146,\n",
1794 | " 58,\n",
1795 | " 31,\n",
1796 | " 21,\n",
1797 | " 24,\n",
1798 | " 3,\n",
1799 | " 133,\n",
1800 | " 267,\n",
1801 | " 2,\n",
1802 | " 6,\n",
1803 | " 6,\n",
1804 | " 38,\n",
1805 | " 22,\n",
1806 | " 155,\n",
1807 | " 1,\n",
1808 | " 99,\n",
1809 | " 18,\n",
1810 | " 177,\n",
1811 | " 4,\n",
1812 | " 10,\n",
1813 | " 99],\n",
1814 | " [5],\n",
1815 | " [18, 89, 12, 90, 168, 25, 129, 56, 218, 32, 148, 134],\n",
1816 | " [34, 5, 92, 77, 27, 3, 29, 41, 125, 6, 79, 2, 137, 5, 74, 4],\n",
1817 | " [42, 42],\n",
1818 | " [197, 64, 18],\n",
1819 | " [44, 66],\n",
1820 | " [3, 24, 5, 252, 158, 4, 37, 4, 199, 110, 2, 44, 255],\n",
1821 | " [139, 44, 14, 162],\n",
1822 | " [14, 255, 134, 37, 90, 25, 203, 129, 71, 40, 12, 37, 106, 56, 114, 110, 114],\n",
1823 | " [18, 20, 136, 41, 14, 122, 82, 50, 18, 9],\n",
1824 | " [22,\n",
1825 | " 144,\n",
1826 | " 9,\n",
1827 | " 16,\n",
1828 | " 164,\n",
1829 | " 83,\n",
1830 | " 5,\n",
1831 | " 144,\n",
1832 | " 27,\n",
1833 | " 8,\n",
1834 | " 79,\n",
1835 | " 2,\n",
1836 | " 200,\n",
1837 | " 123,\n",
1838 | " 2,\n",
1839 | " 7,\n",
1840 | " 251,\n",
1841 | " 59,\n",
1842 | " 28,\n",
1843 | " 99,\n",
1844 | " 2,\n",
1845 | " 58,\n",
1846 | " 76,\n",
1847 | " 16],\n",
1848 | " [5, 9, 10, 28, 10, 113, 30, 1, 26, 3, 31],\n",
1849 | " [28, 16, 13, 33],\n",
1850 | " [1, 71, 2, 39],\n",
1851 | " [241, 254, 55, 39, 125],\n",
1852 | " [172, 3, 16],\n",
1853 | " [257, 18, 141, 44, 63, 4, 196, 199, 16, 11, 9, 88, 2, 259, 3, 26],\n",
1854 | " [115, 1, 213, 56, 28, 36, 123],\n",
1855 | " [174, 46, 15, 95, 183, 2, 31, 141, 104, 134],\n",
1856 | " [183, 53, 9, 4, 38, 3],\n",
1857 | " [3, 35, 18, 5, 246, 14, 6, 48, 85, 102, 8],\n",
1858 | " [22, 4],\n",
1859 | " [18, 14, 139, 1, 152, 26],\n",
1860 | " [61, 96, 9, 21, 44, 165],\n",
1861 | " [98, 16],\n",
1862 | " [112, 33],\n",
1863 | " [267,\n",
1864 | " 32,\n",
1865 | " 221,\n",
1866 | " 3,\n",
1867 | " 10,\n",
1868 | " 4,\n",
1869 | " 11,\n",
1870 | " 9,\n",
1871 | " 13,\n",
1872 | " 63,\n",
1873 | " 6,\n",
1874 | " 22,\n",
1875 | " 3,\n",
1876 | " 58,\n",
1877 | " 22,\n",
1878 | " 43,\n",
1879 | " 202,\n",
1880 | " 3,\n",
1881 | " 131,\n",
1882 | " 1,\n",
1883 | " 202,\n",
1884 | " 21,\n",
1885 | " 148,\n",
1886 | " 137,\n",
1887 | " 103,\n",
1888 | " 7,\n",
1889 | " 45,\n",
1890 | " 20,\n",
1891 | " 4,\n",
1892 | " 143,\n",
1893 | " 78],\n",
1894 | " [62,\n",
1895 | " 7,\n",
1896 | " 45,\n",
1897 | " 53,\n",
1898 | " 22,\n",
1899 | " 78,\n",
1900 | " 1,\n",
1901 | " 153,\n",
1902 | " 3,\n",
1903 | " 68,\n",
1904 | " 125,\n",
1905 | " 16,\n",
1906 | " 4,\n",
1907 | " 1,\n",
1908 | " 124,\n",
1909 | " 15,\n",
1910 | " 3,\n",
1911 | " 6,\n",
1912 | " 93,\n",
1913 | " 3,\n",
1914 | " 4,\n",
1915 | " 47,\n",
1916 | " 5],\n",
1917 | " [254, 33, 118, 14, 4, 85, 3, 149, 51],\n",
1918 | " [37, 7, 30, 49, 6, 13, 58, 61, 2, 36],\n",
1919 | " [224, 224, 167, 15, 128, 78, 7, 160, 167, 160],\n",
1920 | " [1, 60, 10, 130, 3, 47, 26, 12],\n",
1921 | " [47, 82, 50, 176, 273, 104, 110, 106],\n",
1922 | " [4, 54, 3, 5, 2, 2, 18, 37, 13, 3, 24],\n",
1923 | " [28, 60, 98, 2, 61, 2, 36, 24, 71, 77, 13],\n",
1924 | " [56, 34, 30, 2, 17, 4],\n",
1925 | " [11, 219, 32, 10, 11, 99, 65, 17, 67, 33, 41, 10],\n",
1926 | " [67, 116, 77],\n",
1927 | " [1,\n",
1928 | " 58,\n",
1929 | " 28,\n",
1930 | " 3,\n",
1931 | " 99,\n",
1932 | " 2,\n",
1933 | " 39,\n",
1934 | " 31,\n",
1935 | " 1,\n",
1936 | " 30,\n",
1937 | " 68,\n",
1938 | " 7,\n",
1939 | " 28,\n",
1940 | " 1,\n",
1941 | " 166,\n",
1942 | " 2,\n",
1943 | " 9,\n",
1944 | " 2,\n",
1945 | " 14,\n",
1946 | " 12,\n",
1947 | " 2,\n",
1948 | " 71,\n",
1949 | " 2,\n",
1950 | " 125],\n",
1951 | " [105, 22, 21, 31],\n",
1952 | " [270, 51, 52, 260],\n",
1953 | " [64, 137, 12, 218, 1, 124, 1, 85, 103, 7, 3, 241, 7, 5, 65],\n",
1954 | " [3,\n",
1955 | " 39,\n",
1956 | " 2,\n",
1957 | " 22,\n",
1958 | " 188,\n",
1959 | " 1,\n",
1960 | " 20,\n",
1961 | " 3,\n",
1962 | " 18,\n",
1963 | " 208,\n",
1964 | " 3,\n",
1965 | " 12,\n",
1966 | " 14,\n",
1967 | " 4,\n",
1968 | " 228,\n",
1969 | " 1,\n",
1970 | " 28,\n",
1971 | " 179,\n",
1972 | " 5,\n",
1973 | " 251,\n",
1974 | " 15,\n",
1975 | " 22,\n",
1976 | " 16,\n",
1977 | " 18,\n",
1978 | " 83,\n",
1979 | " 5,\n",
1980 | " 3,\n",
1981 | " 269,\n",
1982 | " 97,\n",
1983 | " 3,\n",
1984 | " 7],\n",
1985 | " [41, 267, 136, 14, 38],\n",
1986 | " [230, 27, 1, 39, 127, 47, 3, 22, 175, 6, 2, 4],\n",
1987 | " [64,\n",
1988 | " 201,\n",
1989 | " 164,\n",
1990 | " 107,\n",
1991 | " 4,\n",
1992 | " 4,\n",
1993 | " 15,\n",
1994 | " 6,\n",
1995 | " 85,\n",
1996 | " 4,\n",
1997 | " 165,\n",
1998 | " 15,\n",
1999 | " 3,\n",
2000 | " 92,\n",
2001 | " 99,\n",
2002 | " 2,\n",
2003 | " 30,\n",
2004 | " 21,\n",
2005 | " 22,\n",
2006 | " 3,\n",
2007 | " 58],\n",
2008 | " [20, 4, 34, 5, 10, 37, 4, 44, 4, 2, 33, 4],\n",
2009 | " [154, 9, 38],\n",
2010 | " [3, 24, 32, 10, 155],\n",
2011 | " [1, 58, 22, 7, 185, 22],\n",
2012 | " [115, 195, 3, 14, 5, 3, 24, 172, 53, 24, 3],\n",
2013 | " [8, 269, 181, 88, 81, 1, 86, 134, 190, 65, 8, 134, 21, 21, 32, 68, 83, 46],\n",
2014 | " [115, 176, 12, 42, 10],\n",
2015 | " [56, 169, 175, 206, 194],\n",
2016 | " [1, 45, 3, 21, 117, 1, 29, 13],\n",
2017 | " [43, 24, 2, 259, 3, 217, 22, 3, 216, 4, 199, 26, 174, 66],\n",
2018 | " [227,\n",
2019 | " 1,\n",
2020 | " 202,\n",
2021 | " 3,\n",
2022 | " 185,\n",
2023 | " 3,\n",
2024 | " 58,\n",
2025 | " 279,\n",
2026 | " 3,\n",
2027 | " 226,\n",
2028 | " 12,\n",
2029 | " 93,\n",
2030 | " 3,\n",
2031 | " 125,\n",
2032 | " 133,\n",
2033 | " 18,\n",
2034 | " 1,\n",
2035 | " 99,\n",
2036 | " 3,\n",
2037 | " 1,\n",
2038 | " 79,\n",
2039 | " 3,\n",
2040 | " 1,\n",
2041 | " 3],\n",
2042 | " [26, 8, 34, 40, 7, 22, 106, 12, 25, 135],\n",
2043 | " [61, 24, 3, 15],\n",
2044 | " [21,\n",
2045 | " 3,\n",
2046 | " 29,\n",
2047 | " 30,\n",
2048 | " 55,\n",
2049 | " 2,\n",
2050 | " 18,\n",
2051 | " 37,\n",
2052 | " 7,\n",
2053 | " 45,\n",
2054 | " 1,\n",
2055 | " 153,\n",
2056 | " 18,\n",
2057 | " 64,\n",
2058 | " 6,\n",
2059 | " 4,\n",
2060 | " 62,\n",
2061 | " 78,\n",
2062 | " 227,\n",
2063 | " 1,\n",
2064 | " 202,\n",
2065 | " 3,\n",
2066 | " 21,\n",
2067 | " 117,\n",
2068 | " 185],\n",
2069 | " [45, 13, 35, 100, 3, 40, 1, 60, 98, 2, 18, 40, 7],\n",
2070 | " [8, 36, 67],\n",
2071 | " [126, 270, 56, 7, 25, 67, 20, 126, 1, 220, 34, 91, 7, 31, 7],\n",
2072 | " [36, 3, 58, 157, 7],\n",
2073 | " [29, 3, 5],\n",
2074 | " [14, 18, 26],\n",
2075 | " [1, 10, 56],\n",
2076 | " [3, 20, 216, 90, 196, 209, 37, 4, 25, 196, 199, 2, 174],\n",
2077 | " [42,\n",
2078 | " 15,\n",
2079 | " 40,\n",
2080 | " 3,\n",
2081 | " 89,\n",
2082 | " 11,\n",
2083 | " 159,\n",
2084 | " 188,\n",
2085 | " 159,\n",
2086 | " 36,\n",
2087 | " 61,\n",
2088 | " 3,\n",
2089 | " 79,\n",
2090 | " 6,\n",
2091 | " 47,\n",
2092 | " 31,\n",
2093 | " 16,\n",
2094 | " 112,\n",
2095 | " 36,\n",
2096 | " 5],\n",
2097 | " [119, 270, 56, 12, 10, 1, 218],\n",
2098 | " [88, 141, 189, 120, 216, 2, 174, 161, 101, 37, 5, 16],\n",
2099 | " [9, 8, 111, 4, 8, 45, 9, 10, 15, 128, 84, 12, 12],\n",
2100 | " [21, 67, 119],\n",
2101 | " [64, 44, 99, 2, 40, 61, 3, 198],\n",
2102 | " [43,\n",
2103 | " 2,\n",
2104 | " 259,\n",
2105 | " 3,\n",
2106 | " 18,\n",
2107 | " 134,\n",
2108 | " 2,\n",
2109 | " 88,\n",
2110 | " 15,\n",
2111 | " 4,\n",
2112 | " 74,\n",
2113 | " 57,\n",
2114 | " 158,\n",
2115 | " 26,\n",
2116 | " 31,\n",
2117 | " 37,\n",
2118 | " 134,\n",
2119 | " 14,\n",
2120 | " 59,\n",
2121 | " 193],\n",
2122 | " [7, 63, 32, 2, 20, 36, 3, 79, 81, 78],\n",
2123 | " [21, 153, 3, 24, 32, 168, 18, 107, 239, 272, 5],\n",
2124 | " [132, 191, 8, 20, 4, 6, 30, 79, 2, 90, 15, 65],\n",
2125 | " [1, 112, 29, 55, 29, 43, 29, 55, 214, 188, 88],\n",
2126 | " [29, 3, 48],\n",
2127 | " [],\n",
2128 | " [42, 10, 4, 26, 12, 149, 34],\n",
2129 | " [14, 46, 232, 2, 211, 4, 110, 2, 82, 110, 25, 50],\n",
2130 | " [3, 20, 136, 2, 4, 26, 228, 5, 104],\n",
2131 | " [18, 14, 139, 1, 152, 26],\n",
2132 | " [3, 92, 34],\n",
2133 | " [1, 3, 76, 4, 6, 3, 76, 7, 76, 76, 5, 204, 88, 33, 276, 275],\n",
2134 | " [1, 60, 143, 53, 24, 3],\n",
2135 | " [275, 160, 20, 4, 194, 78],\n",
2136 | " [3, 20, 127, 26, 31],\n",
2137 | " [35, 36, 63, 16, 11, 220, 151, 117, 6, 3, 154, 151],\n",
2138 | " [42, 98, 17, 2, 237],\n",
2139 | " [44, 114, 35, 47, 31, 16, 10, 128],\n",
2140 | " [27, 8, 103, 91, 190, 175, 64, 126, 42, 32],\n",
2141 | " [15, 219, 80, 20, 116, 209],\n",
2142 | " [33, 167, 77, 1, 35, 71, 188],\n",
2143 | " [214, 188],\n",
2144 | " [107, 239, 123, 39, 154, 245],\n",
2145 | " [218, 40, 47, 59, 25, 49],\n",
2146 | " [61, 1, 2, 182, 9, 265, 270, 2, 85, 8, 236, 233, 15, 11],\n",
2147 | " [175, 64],\n",
2148 | " [175, 39, 4, 37, 79, 12, 2, 71, 210, 3],\n",
2149 | " [2, 223, 14, 8, 35, 33, 41, 2, 40, 5, 6, 2, 33, 93, 39, 110, 106, 2],\n",
2150 | " [69,\n",
2151 | " 4,\n",
2152 | " 93,\n",
2153 | " 176,\n",
2154 | " 2,\n",
2155 | " 49,\n",
2156 | " 46,\n",
2157 | " 276,\n",
2158 | " 27,\n",
2159 | " 218,\n",
2160 | " 111,\n",
2161 | " 128,\n",
2162 | " 67,\n",
2163 | " 247,\n",
2164 | " 140,\n",
2165 | " 8,\n",
2166 | " 277,\n",
2167 | " 12,\n",
2168 | " 5,\n",
2169 | " 156,\n",
2170 | " 12],\n",
2171 | " [1, 20, 224],\n",
2172 | " [96,\n",
2173 | " 13,\n",
2174 | " 63,\n",
2175 | " 194,\n",
2176 | " 25,\n",
2177 | " 41,\n",
2178 | " 28,\n",
2179 | " 43,\n",
2180 | " 25,\n",
2181 | " 210,\n",
2182 | " 114,\n",
2183 | " 65,\n",
2184 | " 114,\n",
2185 | " 163,\n",
2186 | " 154,\n",
2187 | " 107,\n",
2188 | " 239,\n",
2189 | " 181,\n",
2190 | " 8,\n",
2191 | " 245,\n",
2192 | " 181],\n",
2193 | " [1, 221, 6, 198, 49, 2, 162, 67, 80, 20, 2, 11],\n",
2194 | " [167, 78, 1, 58, 69, 28, 1, 20, 15, 6, 2, 21, 1, 2, 223, 6],\n",
2195 | " [80, 38, 32, 206, 238, 9, 38, 179, 38, 49, 58, 80, 68, 200, 12, 46, 126],\n",
2196 | " [14, 7],\n",
2197 | " [1, 71, 123, 256, 119, 41, 71, 17, 46],\n",
2198 | " [226, 77, 33, 226, 77, 33, 11, 15, 21, 29],\n",
2199 | " [160, 43, 68, 51, 52, 115, 115],\n",
2200 | " [62, 28, 250, 8, 10, 224],\n",
2201 | " [100, 230, 225, 9, 168, 10, 76, 76],\n",
2202 | " [105, 44, 20, 68, 2, 36, 33, 10, 149],\n",
2203 | " [175, 27, 3, 29, 30, 37, 37, 235, 4, 114, 209],\n",
2204 | " [62, 2, 42, 6, 16, 5, 14, 127],\n",
2205 | " [53, 224, 219, 13, 107, 2, 39, 2, 5, 15, 4],\n",
2206 | " [1, 113, 111, 169, 198, 22, 35, 100, 7, 200, 12, 32, 25, 151],\n",
2207 | " [74, 25, 131, 10, 46, 56, 30, 59, 25, 37, 34, 50, 110, 81, 268, 2],\n",
2208 | " [40, 24, 2, 4, 4, 27, 18, 189, 26, 2, 18],\n",
2209 | " [48, 108, 182, 38, 22, 115, 115, 115],\n",
2210 | " [195, 8],\n",
2211 | " [163, 22, 63, 4, 186, 1, 3, 93, 22, 2, 12],\n",
2212 | " [68, 13, 14, 153, 64],\n",
2213 | " [160,\n",
2214 | " 25,\n",
2215 | " 174,\n",
2216 | " 11,\n",
2217 | " 34,\n",
2218 | " 18,\n",
2219 | " 55,\n",
2220 | " 2,\n",
2221 | " 122,\n",
2222 | " 82,\n",
2223 | " 169,\n",
2224 | " 249,\n",
2225 | " 231,\n",
2226 | " 25,\n",
2227 | " 106,\n",
2228 | " 110,\n",
2229 | " 106,\n",
2230 | " 2],\n",
2231 | " [12, 123, 162, 21],\n",
2232 | " [153, 3, 24, 32, 22, 15, 78, 20, 81, 40, 15, 2],\n",
2233 | " [54, 119, 65, 119, 91, 31],\n",
2234 | " [61, 35, 43, 36, 10, 5],\n",
2235 | " [1, 166, 8, 4, 125, 228, 69],\n",
2236 | " [154, 99, 2, 228, 112, 226, 3, 58, 54, 42, 17],\n",
2237 | " [198, 1, 279, 36, 5, 80, 9, 4, 80, 15, 97, 4, 2, 225, 78],\n",
2238 | " [254, 83, 10, 4],\n",
2239 | " [172, 194, 33, 16],\n",
2240 | " [43, 20, 5, 6, 16, 5, 6, 1, 10, 20, 4, 62, 15, 159],\n",
2241 | " [264, 109, 84, 34, 166, 2, 55, 84, 61, 89, 8],\n",
2242 | " [36, 3, 27, 1, 200, 61, 3, 108, 20, 2, 182, 27, 13, 9],\n",
2243 | " [18, 14, 139, 1, 152, 26],\n",
2244 | " [44, 1, 35, 93, 2, 18],\n",
2245 | " [3, 20, 216, 90, 196, 209, 37, 4, 25, 196, 199, 2, 174, 104, 181],\n",
2246 | " [258, 6, 6],\n",
2247 | " [42, 254, 182, 44, 105, 1, 142, 28, 76, 60, 2, 89, 65, 105, 236, 24, 3, 16],\n",
2248 | " [270, 36, 3, 58, 27, 10, 1, 86, 219],\n",
2249 | " [1, 202, 3, 172, 117],\n",
2250 | " [147, 8, 68, 22],\n",
2251 | " [132, 191, 5, 233],\n",
2252 | " [265,\n",
2253 | " 71,\n",
2254 | " 2,\n",
2255 | " 28,\n",
2256 | " 93,\n",
2257 | " 76,\n",
2258 | " 265,\n",
2259 | " 71,\n",
2260 | " 2,\n",
2261 | " 28,\n",
2262 | " 93,\n",
2263 | " 76,\n",
2264 | " 1,\n",
2265 | " 265,\n",
2266 | " 71,\n",
2267 | " 2,\n",
2268 | " 214,\n",
2269 | " 8,\n",
2270 | " 28,\n",
2271 | " 29,\n",
2272 | " 93,\n",
2273 | " 7,\n",
2274 | " 239,\n",
2275 | " 76,\n",
2276 | " 176,\n",
2277 | " 2,\n",
2278 | " 8,\n",
2279 | " 275],\n",
2280 | " [3, 35, 33, 10, 5, 15, 22],\n",
2281 | " [13, 100, 2, 107, 13, 77, 69, 59, 27, 3, 99, 2, 58, 114, 50],\n",
2282 | " [6, 24, 158, 26],\n",
2283 | " [5, 77, 4, 10, 5, 77, 9, 127, 10, 5, 77, 9, 4, 16, 5, 77, 24, 129],\n",
2284 | " [67, 53],\n",
2285 | " [105, 12, 98, 91, 190, 71, 119, 149],\n",
2286 | " [250, 13, 266, 14, 246],\n",
2287 | " [183, 43, 29, 49, 5, 15, 5],\n",
2288 | " [176, 67, 166],\n",
2289 | " [33, 118, 10, 4, 27, 3, 92, 99, 2, 237],\n",
2290 | " [11, 9, 51, 52],\n",
2291 | " [20, 4, 62],\n",
2292 | " [147, 8, 7, 176],\n",
2293 | " [85],\n",
2294 | " [242, 3, 258, 2, 182, 115, 115, 106, 93, 106, 2],\n",
2295 | " [39,\n",
2296 | " 46,\n",
2297 | " 59,\n",
2298 | " 31,\n",
2299 | " 134,\n",
2300 | " 2,\n",
2301 | " 11,\n",
2302 | " 176,\n",
2303 | " 40,\n",
2304 | " 2,\n",
2305 | " 18,\n",
2306 | " 158,\n",
2307 | " 201,\n",
2308 | " 159,\n",
2309 | " 30,\n",
2310 | " 212,\n",
2311 | " 25,\n",
2312 | " 17,\n",
2313 | " 93,\n",
2314 | " 106],\n",
2315 | " [6,\n",
2316 | " 3,\n",
2317 | " 20,\n",
2318 | " 2,\n",
2319 | " 89,\n",
2320 | " 12,\n",
2321 | " 234,\n",
2322 | " 2,\n",
2323 | " 3,\n",
2324 | " 38,\n",
2325 | " 1,\n",
2326 | " 198,\n",
2327 | " 217,\n",
2328 | " 164,\n",
2329 | " 3,\n",
2330 | " 36,\n",
2331 | " 3,\n",
2332 | " 79,\n",
2333 | " 6,\n",
2334 | " 112,\n",
2335 | " 36,\n",
2336 | " 5],\n",
2337 | " [267, 68, 51, 52, 116, 144, 1, 171, 256, 41],\n",
2338 | " [1, 108, 1, 30],\n",
2339 | " [182, 115, 2, 6, 210, 17, 27, 68, 225, 143, 37],\n",
2340 | " [111, 8, 1, 92, 42, 98, 56, 31],\n",
2341 | " [42, 32, 197],\n",
2342 | " [18, 26, 1, 63, 34, 202, 8, 279, 270, 14, 8, 2, 71, 91, 42, 21, 96],\n",
2343 | " [61, 9, 11, 3, 15],\n",
2344 | " [119, 223, 56, 187, 175],\n",
2345 | " [9, 98, 56, 169],\n",
2346 | " [115,\n",
2347 | " 42,\n",
2348 | " 1,\n",
2349 | " 60,\n",
2350 | " 243,\n",
2351 | " 6,\n",
2352 | " 165,\n",
2353 | " 76,\n",
2354 | " 4,\n",
2355 | " 1,\n",
2356 | " 45,\n",
2357 | " 95,\n",
2358 | " 12,\n",
2359 | " 272,\n",
2360 | " 42,\n",
2361 | " 1,\n",
2362 | " 7,\n",
2363 | " 31,\n",
2364 | " 95,\n",
2365 | " 2,\n",
2366 | " 83],\n",
2367 | " [1, 2, 200, 119, 2, 270, 56, 12, 2, 238, 7, 10, 127],\n",
2368 | " [20, 3, 165],\n",
2369 | " [201, 63, 4, 6, 201, 143, 63, 4, 32, 157, 8, 111, 96, 28, 157, 8, 275],\n",
2370 | " [160,\n",
2371 | " 12,\n",
2372 | " 34,\n",
2373 | " 10,\n",
2374 | " 8,\n",
2375 | " 111,\n",
2376 | " 148,\n",
2377 | " 26,\n",
2378 | " 8,\n",
2379 | " 266,\n",
2380 | " 1,\n",
2381 | " 179,\n",
2382 | " 37,\n",
2383 | " 132,\n",
2384 | " 12,\n",
2385 | " 277,\n",
2386 | " 78,\n",
2387 | " 8,\n",
2388 | " 111,\n",
2389 | " 1,\n",
2390 | " 60,\n",
2391 | " 69],\n",
2392 | " [145, 45, 28, 60, 1, 178, 37],\n",
2393 | " [47, 48, 26, 76, 77, 9, 127, 257, 186, 14, 3],\n",
2394 | " [63, 5],\n",
2395 | " [105, 2, 8, 236, 29, 237, 14, 7, 236, 49, 25, 90, 123],\n",
2396 | " [7, 10, 153, 3, 24, 4, 143, 273, 30, 94],\n",
2397 | " [35, 128, 96, 6, 2, 3, 36, 3, 20, 4, 189],\n",
2398 | " [38, 20, 2, 93, 10, 7, 2, 39, 13, 120, 4],\n",
2399 | " [62, 62, 1, 38],\n",
2400 | " [3, 83, 37, 92, 263],\n",
2401 | " [214, 3, 10, 3, 29, 85, 53, 7, 9],\n",
2402 | " [200, 119, 2, 237, 91],\n",
2403 | " [135, 8, 179, 108, 176, 37, 134, 2, 225, 176],\n",
2404 | " [53, 117, 111, 119, 2],\n",
2405 | " [105, 112, 26, 149],\n",
2406 | " [61, 9, 9, 22, 3, 83, 103],\n",
2407 | " [4, 208, 157, 9, 5, 36, 2, 33, 28, 62, 230, 113, 35, 33, 10],\n",
2408 | " [160, 1, 2, 6, 21, 21, 1, 3, 10, 125, 65],\n",
2409 | " [1, 121, 124, 1, 29, 39, 14, 4, 22, 40, 10, 105],\n",
2410 | " [21, 54, 36, 3],\n",
2411 | " [1, 213],\n",
2412 | " [2, 6, 222, 5, 252, 123, 40, 252, 55, 25, 82, 50, 47, 134, 40, 5, 17],\n",
2413 | " [56, 59, 166, 18, 158, 26, 59, 16, 2, 31, 104],\n",
2414 | " [15,\n",
2415 | " 49,\n",
2416 | " 5,\n",
2417 | " 84,\n",
2418 | " 113,\n",
2419 | " 25,\n",
2420 | " 10,\n",
2421 | " 127,\n",
2422 | " 113,\n",
2423 | " 113,\n",
2424 | " 5,\n",
2425 | " 83,\n",
2426 | " 49,\n",
2427 | " 17,\n",
2428 | " 15,\n",
2429 | " 128,\n",
2430 | " 66,\n",
2431 | " 90,\n",
2432 | " 80,\n",
2433 | " 198,\n",
2434 | " 27,\n",
2435 | " 13,\n",
2436 | " 9,\n",
2437 | " 83,\n",
2438 | " 7,\n",
2439 | " 11,\n",
2440 | " 208,\n",
2441 | " 266],\n",
2442 | " [13,\n",
2443 | " 30,\n",
2444 | " 38,\n",
2445 | " 22,\n",
2446 | " 5,\n",
2447 | " 164,\n",
2448 | " 22,\n",
2449 | " 49,\n",
2450 | " 3,\n",
2451 | " 6,\n",
2452 | " 79,\n",
2453 | " 9,\n",
2454 | " 14,\n",
2455 | " 12,\n",
2456 | " 2,\n",
2457 | " 71,\n",
2458 | " 9,\n",
2459 | " 5,\n",
2460 | " 78,\n",
2461 | " 76,\n",
2462 | " 54,\n",
2463 | " 4,\n",
2464 | " 9,\n",
2465 | " 2,\n",
2466 | " 12,\n",
2467 | " 269,\n",
2468 | " 168,\n",
2469 | " 6,\n",
2470 | " 262],\n",
2471 | " [],\n",
2472 | " [5, 27, 5, 120, 4, 30, 93, 18, 6, 5, 133, 35, 33, 261, 2, 3],\n",
2473 | " [80, 179, 89, 66, 130, 1, 58],\n",
2474 | " [54, 1, 20, 2, 1, 132, 3],\n",
2475 | " [257, 11, 9, 5, 2, 259, 8, 8, 20, 216, 26, 104],\n",
2476 | " [277, 67, 3, 176, 12, 1, 35, 26, 41, 188, 165, 37, 42, 98, 2, 39, 7, 9],\n",
2477 | " [3, 20, 216, 4, 209, 37, 4, 199, 2, 174, 199, 26, 88, 16],\n",
2478 | " [108,\n",
2479 | " 251,\n",
2480 | " 1,\n",
2481 | " 29,\n",
2482 | " 18,\n",
2483 | " 12,\n",
2484 | " 81,\n",
2485 | " 40,\n",
2486 | " 12,\n",
2487 | " 6,\n",
2488 | " 1,\n",
2489 | " 20,\n",
2490 | " 125,\n",
2491 | " 14,\n",
2492 | " 15,\n",
2493 | " 161,\n",
2494 | " 226,\n",
2495 | " 173,\n",
2496 | " 236,\n",
2497 | " 26,\n",
2498 | " 12],\n",
2499 | " [163, 9, 13, 93, 12, 5],\n",
2500 | " [49, 5, 156, 40, 13],\n",
2501 | " [22, 9],\n",
2502 | " [208, 20, 16, 191],\n",
2503 | " [5,\n",
2504 | " 204,\n",
2505 | " 9,\n",
2506 | " 6,\n",
2507 | " 1,\n",
2508 | " 60,\n",
2509 | " 92,\n",
2510 | " 49,\n",
2511 | " 24,\n",
2512 | " 5,\n",
2513 | " 21,\n",
2514 | " 33,\n",
2515 | " 13,\n",
2516 | " 37,\n",
2517 | " 1,\n",
2518 | " 20,\n",
2519 | " 2,\n",
2520 | " 1,\n",
2521 | " 60,\n",
2522 | " 67,\n",
2523 | " 157,\n",
2524 | " 9,\n",
2525 | " 5,\n",
2526 | " 37,\n",
2527 | " 226,\n",
2528 | " 12,\n",
2529 | " 26,\n",
2530 | " 11,\n",
2531 | " 9,\n",
2532 | " 173,\n",
2533 | " 6,\n",
2534 | " 222,\n",
2535 | " 40,\n",
2536 | " 5,\n",
2537 | " 204,\n",
2538 | " 33,\n",
2539 | " 8,\n",
2540 | " 111,\n",
2541 | " 179],\n",
2542 | " [68, 13, 13, 2, 3, 49, 164],\n",
2543 | " [15,\n",
2544 | " 238,\n",
2545 | " 29,\n",
2546 | " 42,\n",
2547 | " 32,\n",
2548 | " 21,\n",
2549 | " 64,\n",
2550 | " 90,\n",
2551 | " 126,\n",
2552 | " 8,\n",
2553 | " 200,\n",
2554 | " 157,\n",
2555 | " 43,\n",
2556 | " 55,\n",
2557 | " 1,\n",
2558 | " 198,\n",
2559 | " 8,\n",
2560 | " 142,\n",
2561 | " 200,\n",
2562 | " 16,\n",
2563 | " 28,\n",
2564 | " 80,\n",
2565 | " 198,\n",
2566 | " 8,\n",
2567 | " 35,\n",
2568 | " 200,\n",
2569 | " 96],\n",
2570 | " [7, 2, 4],\n",
2571 | " [53, 9, 103, 2, 37, 30],\n",
2572 | " [8, 200, 12],\n",
2573 | " [2, 26],\n",
2574 | " [44, 80, 9],\n",
2575 | " [197, 3, 251, 54, 1, 103, 133, 2, 107, 3, 17, 2, 4, 128],\n",
2576 | " [208, 8, 108, 39, 10, 30, 162, 37, 6, 30, 225, 108, 181, 6, 13, 30, 108, 134],\n",
2577 | " [2, 10, 15, 127, 49, 148, 12, 10, 46, 160],\n",
2578 | " [67, 155, 44, 81, 2, 12],\n",
2579 | " [145, 14, 17, 14, 12, 1, 140],\n",
2580 | " [115, 5, 74, 141, 47, 66, 34, 110, 266, 2, 44, 39, 31, 255],\n",
2581 | " [1, 241, 40, 3, 31],\n",
2582 | " [8, 58, 12, 154, 130, 15, 83, 247, 9, 126, 8, 55, 210, 81, 67, 49, 10, 88],\n",
2583 | " [183, 1, 35, 33, 77, 3, 13],\n",
2584 | " [36, 154, 49, 35, 14, 65, 244, 15, 62],\n",
2585 | " [30,\n",
2586 | " 68,\n",
2587 | " 41,\n",
2588 | " 20,\n",
2589 | " 2,\n",
2590 | " 33,\n",
2591 | " 17,\n",
2592 | " 15,\n",
2593 | " 5,\n",
2594 | " 172,\n",
2595 | " 245,\n",
2596 | " 1,\n",
2597 | " 5,\n",
2598 | " 101,\n",
2599 | " 34,\n",
2600 | " 1,\n",
2601 | " 34,\n",
2602 | " 262,\n",
2603 | " 2,\n",
2604 | " 39,\n",
2605 | " 41,\n",
2606 | " 6,\n",
2607 | " 67,\n",
2608 | " 13,\n",
2609 | " 63,\n",
2610 | " 10],\n",
2611 | " [64, 77, 33, 4, 59, 89],\n",
2612 | " [38, 41, 225],\n",
2613 | " [80, 182, 55, 65],\n",
2614 | " [1, 2, 107, 62, 239, 15, 3, 1, 20, 2, 31, 48, 93, 54, 3, 39, 4, 232],\n",
2615 | " [8, 24, 2, 5, 156, 141, 10, 5, 231, 14, 212, 3, 93, 106, 2],\n",
2616 | " [9, 77, 4, 32, 11, 215, 20, 4, 143, 159, 6, 49, 5, 156, 10, 18],\n",
2617 | " [83, 246, 159, 137, 12, 5],\n",
2618 | " [36, 3, 22, 10, 89, 20, 15, 243, 263, 40],\n",
2619 | " [3, 20, 127, 47],\n",
2620 | " [108, 22],\n",
2621 | " [54, 147, 3, 39, 2, 5],\n",
2622 | " [105, 1, 121, 11, 189, 6, 60, 31, 97, 111, 8, 48],\n",
2623 | " [21, 155, 3],\n",
2624 | " [265, 124, 15, 40, 223, 15, 7],\n",
2625 | " [153, 165, 45, 3, 20, 49, 11],\n",
2626 | " [8, 146, 20, 127],\n",
2627 | " [26, 12, 54, 3, 9, 24, 118, 7, 9, 41, 6, 1, 32],\n",
2628 | " [25, 25, 47, 31, 56, 246, 215, 26],\n",
2629 | " [43,\n",
2630 | " 24,\n",
2631 | " 34,\n",
2632 | " 163,\n",
2633 | " 160,\n",
2634 | " 8,\n",
2635 | " 92,\n",
2636 | " 1,\n",
2637 | " 11,\n",
2638 | " 220,\n",
2639 | " 28,\n",
2640 | " 1,\n",
2641 | " 124,\n",
2642 | " 1,\n",
2643 | " 60,\n",
2644 | " 30,\n",
2645 | " 164,\n",
2646 | " 67,\n",
2647 | " 43,\n",
2648 | " 250,\n",
2649 | " 16],\n",
2650 | " [257, 46, 9, 92, 26, 31],\n",
2651 | " [28, 43, 8, 142, 200, 238, 8, 28, 43, 17, 185, 21, 96, 32, 98, 17, 26, 126],\n",
2652 | " [3, 6, 18, 6, 167, 74, 215, 10],\n",
2653 | " [46, 4, 6, 171, 211, 4, 201, 110, 2],\n",
2654 | " [42, 68, 16, 113, 56, 126, 1, 97, 35, 55, 65],\n",
2655 | " [105, 112, 26, 149],\n",
2656 | " [1, 265, 256, 5, 158, 170, 31, 148, 93, 4, 186],\n",
2657 | " [197, 1, 58, 21, 185, 14, 193, 43, 279, 10, 5, 15, 241, 2, 39],\n",
2658 | " [32, 233, 40, 11, 168, 118],\n",
2659 | " [197, 8, 30, 178, 7, 34, 128, 203, 92, 41, 56, 5],\n",
2660 | " [39, 168, 118, 3, 24, 32, 18, 144, 17, 15, 11, 10, 4],\n",
2661 | " [1, 33, 77, 40, 10, 51, 52, 68, 116],\n",
2662 | " [30, 6],\n",
2663 | " [145, 14, 41, 5],\n",
2664 | " [155,\n",
2665 | " 121,\n",
2666 | " 3,\n",
2667 | " 55,\n",
2668 | " 132,\n",
2669 | " 18,\n",
2670 | " 32,\n",
2671 | " 230,\n",
2672 | " 3,\n",
2673 | " 79,\n",
2674 | " 2,\n",
2675 | " 272,\n",
2676 | " 40,\n",
2677 | " 162,\n",
2678 | " 205,\n",
2679 | " 80,\n",
2680 | " 151,\n",
2681 | " 117,\n",
2682 | " 67,\n",
2683 | " 162,\n",
2684 | " 2,\n",
2685 | " 71],\n",
2686 | " [115, 69, 13, 63, 2, 85, 3, 6, 158, 3, 193, 1, 68, 2, 6, 4, 12, 225],\n",
2687 | " [167,\n",
2688 | " 74,\n",
2689 | " 215,\n",
2690 | " 7,\n",
2691 | " 160,\n",
2692 | " 1,\n",
2693 | " 140,\n",
2694 | " 36,\n",
2695 | " 202,\n",
2696 | " 3,\n",
2697 | " 30,\n",
2698 | " 68,\n",
2699 | " 18,\n",
2700 | " 189,\n",
2701 | " 6,\n",
2702 | " 2,\n",
2703 | " 93,\n",
2704 | " 3,\n",
2705 | " 11,\n",
2706 | " 95,\n",
2707 | " 3,\n",
2708 | " 66],\n",
2709 | " [22, 39, 5],\n",
2710 | " [18, 89, 12, 90, 168, 25, 129, 56, 218, 32, 148, 134],\n",
2711 | " [1, 43, 198, 25, 32, 129, 3, 24, 53, 146, 1, 3],\n",
2712 | " [],\n",
2713 | " [3, 20, 127, 47, 26, 31],\n",
2714 | " [108, 124, 21, 13, 223, 38, 15],\n",
2715 | " [86, 63, 2, 33, 28, 100, 13, 92, 10],\n",
2716 | " [13, 219, 13, 16, 69, 15, 5, 65, 13, 7, 28, 13, 4, 55],\n",
2717 | " [271, 89, 4, 62, 173, 40, 4, 30, 110, 101, 268, 6, 2, 5, 141],\n",
2718 | " [218, 59, 26, 39, 4, 261, 201, 159, 30, 95, 2, 212],\n",
2719 | " [275, 160, 4, 194, 78],\n",
2720 | " [11,\n",
2721 | " 9,\n",
2722 | " 3,\n",
2723 | " 18,\n",
2724 | " 105,\n",
2725 | " 267,\n",
2726 | " 32,\n",
2727 | " 136,\n",
2728 | " 10,\n",
2729 | " 28,\n",
2730 | " 148,\n",
2731 | " 58,\n",
2732 | " 22,\n",
2733 | " 3,\n",
2734 | " 24,\n",
2735 | " 223,\n",
2736 | " 20,\n",
2737 | " 4,\n",
2738 | " 143,\n",
2739 | " 159],\n",
2740 | " [49, 169, 156, 56, 46],\n",
2741 | " [157, 8, 34, 69, 30, 38, 181],\n",
2742 | " [1, 79, 2, 1, 6, 1, 114],\n",
2743 | " [77, 81, 175, 127, 8, 10, 5, 15],\n",
2744 | " [175, 140, 233, 12, 30, 263],\n",
2745 | " [3, 31, 174, 18, 59, 158, 14, 18, 26, 31, 16, 104, 17],\n",
2746 | " [3, 12, 6, 49, 18, 10, 71, 27, 3],\n",
2747 | " [64, 1, 176, 8, 1, 250, 7],\n",
2748 | " [4, 63, 51, 52],\n",
2749 | " [217, 232, 174, 46, 15, 96, 95, 2, 31, 141, 104],\n",
2750 | " [9, 34, 51, 65, 52, 60, 32, 7, 8, 121, 1, 8],\n",
2751 | " [59,\n",
2752 | " 14,\n",
2753 | " 159,\n",
2754 | " 252,\n",
2755 | " 56,\n",
2756 | " 46,\n",
2757 | " 141,\n",
2758 | " 201,\n",
2759 | " 159,\n",
2760 | " 30,\n",
2761 | " 110,\n",
2762 | " 252,\n",
2763 | " 2,\n",
2764 | " 39,\n",
2765 | " 6,\n",
2766 | " 132,\n",
2767 | " 46,\n",
2768 | " 82,\n",
2769 | " 249,\n",
2770 | " 231],\n",
2771 | " [3, 20, 216, 4, 37, 208, 174, 46, 26, 59, 16, 25, 106, 16],\n",
2772 | " [135, 112, 33, 77, 228, 56],\n",
2773 | " [1, 69, 172],\n",
2774 | " [230, 28, 100, 230, 80, 43],\n",
2775 | " [3, 269, 165, 30],\n",
2776 | " [1, 60, 78, 250, 1, 60, 32, 154],\n",
2777 | " [1, 121, 39, 17, 15, 175, 21],\n",
2778 | " [139, 139, 51, 52],\n",
2779 | " [21, 4, 22, 40, 5, 131, 175, 77, 21, 113, 29],\n",
2780 | " [46, 15, 59, 25, 88, 110, 109, 2, 82],\n",
2781 | " [1, 46, 64],\n",
2782 | " [8, 241, 83, 16, 5, 25, 236, 25, 134, 17],\n",
2783 | " [7, 1, 202, 3, 61],\n",
2784 | " [80, 120, 15, 227, 28, 5, 177, 20, 2, 13, 168, 6, 13, 41],\n",
2785 | " [179, 24, 3, 37],\n",
2786 | " [67, 155, 3, 32],\n",
2787 | " [227, 8, 8, 25, 213, 16, 154, 153, 64, 107, 239, 15],\n",
2788 | " [62, 7, 219, 80, 12, 2, 12, 1, 202, 3, 227],\n",
2789 | " [16, 5, 21, 265, 110],\n",
2790 | " [14, 95, 148, 82, 40, 106, 44, 177],\n",
2791 | " [56, 10, 99, 70, 16, 46, 132, 46, 110, 2, 14, 37, 14, 25],\n",
2792 | " [20, 4, 62],\n",
2793 | " [6, 197],\n",
2794 | " [18, 160],\n",
2795 | " [94, 3, 68, 116],\n",
2796 | " [105, 1, 51, 52, 28, 80, 32, 33, 263],\n",
2797 | " [145, 14, 3, 20, 136, 153, 3, 5],\n",
2798 | " [8, 20, 4, 97, 8, 111, 21, 26, 2, 17, 134, 106, 90, 212, 176, 239],\n",
2799 | " [115, 69, 147, 8, 4, 194, 30, 4, 186, 129, 182, 242, 261, 8, 90, 10, 21, 223],\n",
2800 | " [160,\n",
2801 | " 2,\n",
2802 | " 174,\n",
2803 | " 11,\n",
2804 | " 34,\n",
2805 | " 3,\n",
2806 | " 48,\n",
2807 | " 55,\n",
2808 | " 2,\n",
2809 | " 122,\n",
2810 | " 82,\n",
2811 | " 169,\n",
2812 | " 249,\n",
2813 | " 231,\n",
2814 | " 2,\n",
2815 | " 106,\n",
2816 | " 110,\n",
2817 | " 106,\n",
2818 | " 2],\n",
2819 | " [195,\n",
2820 | " 3,\n",
2821 | " 21,\n",
2822 | " 117,\n",
2823 | " 54,\n",
2824 | " 43,\n",
2825 | " 6,\n",
2826 | " 43,\n",
2827 | " 39,\n",
2828 | " 5,\n",
2829 | " 15,\n",
2830 | " 18,\n",
2831 | " 153,\n",
2832 | " 3,\n",
2833 | " 24,\n",
2834 | " 62,\n",
2835 | " 3,\n",
2836 | " 163,\n",
2837 | " 43,\n",
2838 | " 24,\n",
2839 | " 2,\n",
2840 | " 11,\n",
2841 | " 9,\n",
2842 | " 5,\n",
2843 | " 186,\n",
2844 | " 1,\n",
2845 | " 261],\n",
2846 | " [35],\n",
2847 | " [62, 220, 7, 160, 20, 4, 143, 84, 78],\n",
2848 | " [36,\n",
2849 | " 3,\n",
2850 | " 79,\n",
2851 | " 116,\n",
2852 | " 95,\n",
2853 | " 6,\n",
2854 | " 4,\n",
2855 | " 74,\n",
2856 | " 57,\n",
2857 | " 158,\n",
2858 | " 14,\n",
2859 | " 66,\n",
2860 | " 212,\n",
2861 | " 159,\n",
2862 | " 26,\n",
2863 | " 37,\n",
2864 | " 134,\n",
2865 | " 14,\n",
2866 | " 193],\n",
2867 | " [1,\n",
2868 | " 20,\n",
2869 | " 136,\n",
2870 | " 10,\n",
2871 | " 14,\n",
2872 | " 5,\n",
2873 | " 6,\n",
2874 | " 166,\n",
2875 | " 2,\n",
2876 | " 4,\n",
2877 | " 51,\n",
2878 | " 52,\n",
2879 | " 1,\n",
2880 | " 13,\n",
2881 | " 142,\n",
2882 | " 33,\n",
2883 | " 15,\n",
2884 | " 12,\n",
2885 | " 2,\n",
2886 | " 89,\n",
2887 | " 235,\n",
2888 | " 3,\n",
2889 | " 137,\n",
2890 | " 34,\n",
2891 | " 143,\n",
2892 | " 2,\n",
2893 | " 6,\n",
2894 | " 155,\n",
2895 | " 1,\n",
2896 | " 41,\n",
2897 | " 1,\n",
2898 | " 60,\n",
2899 | " 10,\n",
2900 | " 4,\n",
2901 | " 6,\n",
2902 | " 33,\n",
2903 | " 2,\n",
2904 | " 5,\n",
2905 | " 11,\n",
2906 | " 273,\n",
2907 | " 7,\n",
2908 | " 154,\n",
2909 | " 15,\n",
2910 | " 29,\n",
2911 | " 3,\n",
2912 | " 48,\n",
2913 | " 177,\n",
2914 | " 145],\n",
2915 | " [43, 2, 259, 3, 88, 15, 74, 57, 158, 116, 26, 37, 134, 14],\n",
2916 | " [217, 232, 25, 174, 46, 15, 95, 183, 2, 31, 141, 104, 110, 37, 106],\n",
2917 | " [1, 8, 117, 8, 53, 8, 111, 25, 12, 8, 8],\n",
2918 | " [148, 93, 12, 4, 89, 97, 42, 54, 6, 53, 117],\n",
2919 | " [88, 217, 164, 14, 103, 6],\n",
2920 | " [257, 26, 47, 18, 18, 56, 37, 196, 209, 104],\n",
2921 | " [135, 135, 54, 24, 3, 98],\n",
2922 | " [10,\n",
2923 | " 5,\n",
2924 | " 2,\n",
2925 | " 137,\n",
2926 | " 161,\n",
2927 | " 51,\n",
2928 | " 52,\n",
2929 | " 15,\n",
2930 | " 22,\n",
2931 | " 63,\n",
2932 | " 168,\n",
2933 | " 6,\n",
2934 | " 9,\n",
2935 | " 2,\n",
2936 | " 103,\n",
2937 | " 37,\n",
2938 | " 125,\n",
2939 | " 179,\n",
2940 | " 1,\n",
2941 | " 121,\n",
2942 | " 124,\n",
2943 | " 1,\n",
2944 | " 121,\n",
2945 | " 272,\n",
2946 | " 118],\n",
2947 | " [7, 120, 136, 21, 117, 1, 1, 30, 279, 1],\n",
2948 | " [1, 60, 10, 5, 176, 12, 31, 1, 35, 26, 3, 34],\n",
2949 | " [203, 14, 5, 15, 161, 120, 151, 224, 105, 85, 3, 149],\n",
2950 | " [174, 46, 15, 95, 183, 2, 31, 141, 104, 134],\n",
2951 | " [8, 185, 8, 25, 55, 237, 190],\n",
2952 | " [1, 60, 1, 79, 2, 17, 18],\n",
2953 | " [44, 130, 27, 3, 22, 13, 5, 130],\n",
2954 | " [153, 15, 165, 94, 55, 25, 8, 15],\n",
2955 | " [106, 5, 267, 162, 267, 13, 6, 1, 146, 32, 13],\n",
2956 | " [100, 74, 276, 37, 10, 45, 10, 5, 95, 30, 95, 2, 6, 85, 97, 3, 171, 214],\n",
2957 | " [98, 2, 107, 18, 227, 17],\n",
2958 | " [60, 16, 220, 51, 52, 33, 77, 10, 67, 43, 55, 2, 134, 12, 188, 2, 91],\n",
2959 | " [13, 9, 67],\n",
2960 | " [147, 80, 30, 182, 9],\n",
2961 | " [10, 165, 31, 98, 20, 10, 260],\n",
2962 | " [18, 9, 4],\n",
2963 | " [105, 1, 1, 29, 39, 4, 15, 7, 127, 37, 112, 95, 3],\n",
2964 | " [147, 8, 210, 17, 61, 65, 5, 9, 34, 1, 99, 2, 125, 17],\n",
2965 | " [136, 4],\n",
2966 | " [46, 4, 15, 47, 37, 4, 26, 82],\n",
2967 | " [118, 28, 1, 6, 6, 30, 205, 1, 16, 28, 1, 18, 9, 22, 13, 121],\n",
2968 | " [18, 14, 139, 1, 152, 26],\n",
2969 | " [242, 43, 99, 125, 6, 2, 14, 29, 1, 3, 1, 99, 18, 6, 111],\n",
2970 | " [61,\n",
2971 | " 36,\n",
2972 | " 8,\n",
2973 | " 79,\n",
2974 | " 14,\n",
2975 | " 53,\n",
2976 | " 89,\n",
2977 | " 59,\n",
2978 | " 95,\n",
2979 | " 4,\n",
2980 | " 74,\n",
2981 | " 57,\n",
2982 | " 158,\n",
2983 | " 40,\n",
2984 | " 26,\n",
2985 | " 59,\n",
2986 | " 31,\n",
2987 | " 16,\n",
2988 | " 2,\n",
2989 | " 210,\n",
2990 | " 17,\n",
2991 | " 114],\n",
2992 | " [154, 60, 10, 4, 21, 27, 8, 26, 60, 34, 91, 2, 33],\n",
2993 | " [69, 98, 62, 44, 28, 92, 99, 2],\n",
2994 | " [112, 95, 3, 54, 1, 223],\n",
2995 | " [69, 136, 4, 78, 42, 30, 79, 2, 41, 6, 107, 4],\n",
2996 | " [40, 10, 4, 78, 3, 35, 202, 18, 156, 10, 11, 204, 51, 52],\n",
2997 | " [8, 9, 13, 3, 209, 37, 26, 31, 141],\n",
2998 | " [24, 3, 10, 3, 99, 2, 85, 235],\n",
2999 | " [211, 4, 27, 8, 58, 277, 10, 159, 110, 2],\n",
3000 | " [8,\n",
3001 | " 20,\n",
3002 | " 4,\n",
3003 | " 97,\n",
3004 | " 9,\n",
3005 | " 25,\n",
3006 | " 100,\n",
3007 | " 259,\n",
3008 | " 40,\n",
3009 | " 8,\n",
3010 | " 210,\n",
3011 | " 17,\n",
3012 | " 97,\n",
3013 | " 113,\n",
3014 | " 111,\n",
3015 | " 97,\n",
3016 | " 46,\n",
3017 | " 21,\n",
3018 | " 26,\n",
3019 | " 16],\n",
3020 | " [8,\n",
3021 | " 20,\n",
3022 | " 4,\n",
3023 | " 97,\n",
3024 | " 9,\n",
3025 | " 25,\n",
3026 | " 100,\n",
3027 | " 259,\n",
3028 | " 40,\n",
3029 | " 8,\n",
3030 | " 210,\n",
3031 | " 17,\n",
3032 | " 97,\n",
3033 | " 113,\n",
3034 | " 111,\n",
3035 | " 97,\n",
3036 | " 46,\n",
3037 | " 21,\n",
3038 | " 26,\n",
3039 | " 16],\n",
3040 | " [3, 20, 32, 5, 3, 20, 185, 14, 122, 2, 18],\n",
3041 | " [85,\n",
3042 | " 1,\n",
3043 | " 3,\n",
3044 | " 4,\n",
3045 | " 4,\n",
3046 | " 2,\n",
3047 | " 3,\n",
3048 | " 269,\n",
3049 | " 2,\n",
3050 | " 202,\n",
3051 | " 1,\n",
3052 | " 63,\n",
3053 | " 254,\n",
3054 | " 3,\n",
3055 | " 81,\n",
3056 | " 28,\n",
3057 | " 4,\n",
3058 | " 9,\n",
3059 | " 32,\n",
3060 | " 254,\n",
3061 | " 39,\n",
3062 | " 17,\n",
3063 | " 188,\n",
3064 | " 25,\n",
3065 | " 3,\n",
3066 | " 99,\n",
3067 | " 2,\n",
3068 | " 71,\n",
3069 | " 91,\n",
3070 | " 3,\n",
3071 | " 99,\n",
3072 | " 2,\n",
3073 | " 6,\n",
3074 | " 27,\n",
3075 | " 234,\n",
3076 | " 3,\n",
3077 | " 99,\n",
3078 | " 2,\n",
3079 | " 213],\n",
3080 | " [1, 45, 2, 137, 1, 15, 61, 9, 18],\n",
3081 | " [43, 146, 55, 236],\n",
3082 | " [8, 58, 53, 2, 14, 4, 10, 7],\n",
3083 | " [],\n",
3084 | " [1, 38, 2, 28, 60, 32, 2, 1, 108, 58],\n",
3085 | " [151, 8, 38, 86],\n",
3086 | " [3],\n",
3087 | " [53, 86, 5, 65, 15],\n",
3088 | " [155, 36, 3, 200],\n",
3089 | " [1, 60, 143, 61, 24, 3, 89, 12],\n",
3090 | " [3],\n",
3091 | " [175, 64, 1, 28, 42, 140, 151, 21, 1, 176, 8, 1, 187, 86, 56, 12, 81],\n",
3092 | " [20, 274, 193, 6, 33, 2, 34, 51, 52],\n",
3093 | " [33, 22, 8, 108, 20, 8, 79, 22, 8, 92, 20, 127, 2, 33, 193, 8, 24, 96],\n",
3094 | " [153, 3, 24, 4, 62, 159, 30, 10],\n",
3095 | " [42,\n",
3096 | " 2,\n",
3097 | " 13,\n",
3098 | " 1,\n",
3099 | " 30,\n",
3100 | " 153,\n",
3101 | " 7,\n",
3102 | " 121,\n",
3103 | " 12,\n",
3104 | " 267,\n",
3105 | " 66,\n",
3106 | " 4,\n",
3107 | " 11,\n",
3108 | " 215,\n",
3109 | " 11,\n",
3110 | " 12,\n",
3111 | " 10,\n",
3112 | " 191,\n",
3113 | " 10,\n",
3114 | " 63,\n",
3115 | " 127],\n",
3116 | " [164, 203, 230, 244, 165, 13, 17, 67],\n",
3117 | " [18, 59, 9, 2, 33, 95, 5, 2, 2, 39, 6],\n",
3118 | " [133, 24, 6, 1, 20, 14, 165, 1, 147, 6],\n",
3119 | " [53, 9, 13, 2, 3, 6, 157],\n",
3120 | " [1, 27, 18, 158, 1, 166, 2, 132, 3, 1, 45, 3, 227],\n",
3121 | " [16, 11, 6, 13],\n",
3122 | " [49, 233, 168, 118, 6, 20, 185, 5],\n",
3123 | " [94, 41, 105, 89, 5, 134],\n",
3124 | " [49, 5, 47, 6, 5, 211, 40, 37, 95, 2],\n",
3125 | " [1, 137, 103, 1, 20, 13, 86, 198, 3, 43],\n",
3126 | " [24, 10],\n",
3127 | " [31, 26, 47, 90, 260, 2, 260, 2, 106, 26, 260],\n",
3128 | " [7,\n",
3129 | " 45,\n",
3130 | " 53,\n",
3131 | " 71,\n",
3132 | " 13,\n",
3133 | " 3,\n",
3134 | " 21,\n",
3135 | " 2,\n",
3136 | " 250,\n",
3137 | " 14,\n",
3138 | " 1,\n",
3139 | " 68,\n",
3140 | " 18,\n",
3141 | " 16,\n",
3142 | " 6,\n",
3143 | " 63,\n",
3144 | " 167,\n",
3145 | " 2,\n",
3146 | " 85,\n",
3147 | " 191,\n",
3148 | " 28,\n",
3149 | " 63,\n",
3150 | " 3,\n",
3151 | " 166,\n",
3152 | " 1,\n",
3153 | " 202,\n",
3154 | " 3],\n",
3155 | " [1, 60, 105, 13, 3],\n",
3156 | " [279,\n",
3157 | " 1,\n",
3158 | " 251,\n",
3159 | " 42,\n",
3160 | " 21,\n",
3161 | " 1,\n",
3162 | " 116,\n",
3163 | " 49,\n",
3164 | " 159,\n",
3165 | " 96,\n",
3166 | " 1,\n",
3167 | " 63,\n",
3168 | " 2,\n",
3169 | " 17,\n",
3170 | " 1,\n",
3171 | " 63,\n",
3172 | " 49,\n",
3173 | " 159,\n",
3174 | " 6,\n",
3175 | " 31,\n",
3176 | " 42,\n",
3177 | " 32],\n",
3178 | " [64, 126, 28, 32, 151, 12, 92, 31],\n",
3179 | " [26, 12, 130, 1, 60, 14, 18, 26],\n",
3180 | " [1, 171, 200, 27, 43, 171, 39, 114, 27, 29, 10],\n",
3181 | " [63, 89, 2, 93, 3, 4, 96, 20, 4],\n",
3182 | " [54, 150, 85, 7, 113, 124, 2, 113, 24, 113, 58, 22, 2, 7, 276],\n",
3183 | " [94, 3, 191, 18, 54, 3, 14, 214, 34],\n",
3184 | " [108, 2, 162, 271, 64, 69, 7],\n",
3185 | " [54, 8, 85, 13, 67],\n",
3186 | " [16, 144, 2, 29, 3, 148, 93, 12, 189],\n",
3187 | " [13, 33, 1, 20, 31, 35],\n",
3188 | " [86, 2, 96, 28, 92, 91],\n",
3189 | " [1, 7, 243, 31, 1, 152, 34, 50],\n",
3190 | " [135, 270, 93, 51, 52],\n",
3191 | " [28, 42, 16, 4, 6, 1, 90, 151, 224, 15, 42, 269, 16, 4],\n",
3192 | " [135, 1, 35, 137, 7],\n",
3193 | " [163, 49, 20, 2, 71],\n",
3194 | " [133, 3, 111, 4, 25, 174, 18, 199, 95, 133, 25, 168, 2, 137, 95],\n",
3195 | " [42, 140, 105, 1, 213, 25, 36, 11, 153, 8, 29, 210, 127, 153, 98, 64],\n",
3196 | " [13, 6, 1, 3, 224, 167, 2, 6, 3, 55],\n",
3197 | " [21, 36, 3, 20],\n",
3198 | " [61, 65, 3, 124, 20, 13, 99, 2, 58, 54, 1, 146, 33],\n",
3199 | " [160, 48, 26, 47, 4, 18, 56, 37, 209, 104],\n",
3200 | " [67, 126],\n",
3201 | " [54, 277, 116, 116],\n",
3202 | " [135, 135, 24, 3, 10],\n",
3203 | " [257, 26, 47, 18, 56, 37, 196, 209, 104],\n",
3204 | " [41, 14, 6, 38, 4, 31, 1, 251, 28, 34, 69, 32, 15],\n",
3205 | " [44, 43, 13, 49, 21, 20, 27, 67, 88, 2, 247, 133, 101, 10, 173],\n",
3206 | " [178, 13, 2, 15, 66, 6, 24],\n",
3207 | " [53, 89, 233, 10, 40, 14, 30, 110, 101, 18, 268, 6, 2, 10, 5, 255],\n",
3208 | " [6, 179, 267, 162, 223, 4, 21, 32, 95, 162, 17, 15, 5, 14],\n",
3209 | " [1,\n",
3210 | " 261,\n",
3211 | " 7,\n",
3212 | " 2,\n",
3213 | " 6,\n",
3214 | " 1,\n",
3215 | " 166,\n",
3216 | " 2,\n",
3217 | " 36,\n",
3218 | " 14,\n",
3219 | " 4,\n",
3220 | " 1,\n",
3221 | " 124,\n",
3222 | " 27,\n",
3223 | " 3,\n",
3224 | " 24,\n",
3225 | " 15,\n",
3226 | " 36,\n",
3227 | " 4,\n",
3228 | " 16,\n",
3229 | " 179,\n",
3230 | " 259,\n",
3231 | " 103,\n",
3232 | " 9,\n",
3233 | " 81,\n",
3234 | " 12,\n",
3235 | " 5],\n",
3236 | " [1, 265, 270, 2, 85, 3, 53, 241, 5, 241],\n",
3237 | " [46, 209, 9, 2, 46, 209, 10, 31, 93, 55, 2, 66, 255, 176],\n",
3238 | " [94,\n",
3239 | " 1,\n",
3240 | " 5,\n",
3241 | " 16,\n",
3242 | " 185,\n",
3243 | " 61,\n",
3244 | " 278,\n",
3245 | " 24,\n",
3246 | " 43,\n",
3247 | " 98,\n",
3248 | " 14,\n",
3249 | " 222,\n",
3250 | " 18,\n",
3251 | " 164,\n",
3252 | " 59,\n",
3253 | " 43,\n",
3254 | " 99,\n",
3255 | " 2,\n",
3256 | " 214,\n",
3257 | " 6,\n",
3258 | " 88],\n",
3259 | " [10, 46],\n",
3260 | " [9, 22, 61, 65, 3, 79, 12, 2, 71],\n",
3261 | " [58, 263],\n",
3262 | " [213, 64, 126],\n",
3263 | " [88, 54, 247, 9, 10, 13, 28, 13, 172, 54, 247, 13, 62, 164],\n",
3264 | " [179, 2, 39, 47, 18],\n",
3265 | " [6, 14, 18],\n",
3266 | " [105,\n",
3267 | " 1,\n",
3268 | " 31,\n",
3269 | " 67,\n",
3270 | " 181,\n",
3271 | " 46,\n",
3272 | " 176,\n",
3273 | " 126,\n",
3274 | " 21,\n",
3275 | " 244,\n",
3276 | " 28,\n",
3277 | " 66,\n",
3278 | " 56,\n",
3279 | " 81,\n",
3280 | " 164,\n",
3281 | " 20,\n",
3282 | " 4,\n",
3283 | " 74,\n",
3284 | " 25,\n",
3285 | " 10],\n",
3286 | " [45, 4, 175, 4, 27, 43, 171, 97, 2, 45, 67, 173, 142, 33, 117, 28, 67],\n",
3287 | " [80],\n",
3288 | " [7, 9, 6, 44, 9, 5, 9, 29, 3, 134, 2, 267, 261, 11, 2, 5, 170],\n",
3289 | " [157],\n",
3290 | " [8, 230, 8, 279, 107, 116, 65],\n",
3291 | " [257, 43, 24, 2, 259, 8, 22, 3, 20, 216, 4, 199, 26, 47, 174, 66],\n",
3292 | " [264, 109, 84, 34, 166, 2, 55, 84, 61, 89, 8],\n",
3293 | " [277, 274, 36, 3, 107, 5, 274, 9],\n",
3294 | " [24, 3, 11, 117],\n",
3295 | " [37, 92, 29, 3, 103, 6, 226, 200, 103, 27, 86, 29, 51, 52, 14, 12],\n",
3296 | " [1, 60, 32, 230, 89, 164, 1, 58, 66, 89],\n",
3297 | " [61,\n",
3298 | " 36,\n",
3299 | " 8,\n",
3300 | " 79,\n",
3301 | " 54,\n",
3302 | " 1,\n",
3303 | " 71,\n",
3304 | " 101,\n",
3305 | " 4,\n",
3306 | " 76,\n",
3307 | " 4,\n",
3308 | " 15,\n",
3309 | " 7,\n",
3310 | " 14,\n",
3311 | " 3,\n",
3312 | " 61,\n",
3313 | " 1,\n",
3314 | " 35,\n",
3315 | " 137,\n",
3316 | " 28,\n",
3317 | " 66,\n",
3318 | " 2,\n",
3319 | " 7,\n",
3320 | " 15,\n",
3321 | " 7,\n",
3322 | " 33,\n",
3323 | " 22,\n",
3324 | " 6,\n",
3325 | " 85,\n",
3326 | " 44,\n",
3327 | " 81,\n",
3328 | " 29,\n",
3329 | " 137,\n",
3330 | " 3,\n",
3331 | " 22,\n",
3332 | " 108,\n",
3333 | " 26,\n",
3334 | " 12,\n",
3335 | " 1,\n",
3336 | " 35,\n",
3337 | " 270,\n",
3338 | " 1,\n",
3339 | " 71],\n",
3340 | " [24, 3, 2, 55, 14, 274],\n",
3341 | " [13, 213, 25, 76, 25, 17, 9, 22, 64],\n",
3342 | " [126, 80, 25, 55, 181, 96, 21, 126, 1, 8],\n",
3343 | " [101, 31, 67],\n",
3344 | " [1, 21, 169, 126],\n",
3345 | " [61, 9, 18, 189],\n",
3346 | " [8, 93],\n",
3347 | " [94, 44, 1, 4, 63, 25, 40, 12, 8, 28, 8, 270, 65],\n",
3348 | " [64, 1, 2, 162],\n",
3349 | " [108,\n",
3350 | " 3,\n",
3351 | " 58,\n",
3352 | " 11,\n",
3353 | " 9,\n",
3354 | " 5,\n",
3355 | " 65,\n",
3356 | " 86,\n",
3357 | " 120,\n",
3358 | " 166,\n",
3359 | " 38,\n",
3360 | " 22,\n",
3361 | " 21,\n",
3362 | " 222,\n",
3363 | " 1,\n",
3364 | " 15,\n",
3365 | " 61,\n",
3366 | " 86,\n",
3367 | " 6,\n",
3368 | " 147,\n",
3369 | " 5,\n",
3370 | " 78,\n",
3371 | " 228,\n",
3372 | " 37,\n",
3373 | " 27,\n",
3374 | " 234,\n",
3375 | " 5,\n",
3376 | " 78,\n",
3377 | " 228,\n",
3378 | " 21,\n",
3379 | " 22,\n",
3380 | " 43,\n",
3381 | " 29,\n",
3382 | " 33,\n",
3383 | " 230,\n",
3384 | " 69],\n",
3385 | " [94, 3, 29, 40, 66, 51, 52],\n",
3386 | " [273, 1, 99, 6],\n",
3387 | " [27, 80, 80, 35, 39, 10, 80, 20, 143, 6],\n",
3388 | " [99, 2, 33, 10, 83, 2, 47],\n",
3389 | " [25, 141, 111, 26, 31, 18, 109],\n",
3390 | " [34, 5, 65, 61, 5, 3, 124, 9, 41],\n",
3391 | " [61, 1, 30],\n",
3392 | " [33, 34, 10, 51, 52],\n",
3393 | " [42, 10, 31, 1, 35, 26, 3, 51, 52, 260],\n",
3394 | " [1,\n",
3395 | " 202,\n",
3396 | " 3,\n",
3397 | " 185,\n",
3398 | " 3,\n",
3399 | " 58,\n",
3400 | " 18,\n",
3401 | " 49,\n",
3402 | " 1,\n",
3403 | " 29,\n",
3404 | " 124,\n",
3405 | " 89,\n",
3406 | " 1,\n",
3407 | " 279,\n",
3408 | " 270,\n",
3409 | " 246,\n",
3410 | " 215,\n",
3411 | " 54,\n",
3412 | " 43,\n",
3413 | " 35,\n",
3414 | " 33],\n",
3415 | " [5, 81, 182, 27, 119, 26, 83, 193, 26, 14, 66, 68, 14],\n",
3416 | " [101, 2, 47, 7, 9],\n",
3417 | " [15],\n",
3418 | " [115,\n",
3419 | " 138,\n",
3420 | " 5,\n",
3421 | " 65,\n",
3422 | " 271,\n",
3423 | " 43,\n",
3424 | " 20,\n",
3425 | " 2,\n",
3426 | " 39,\n",
3427 | " 41,\n",
3428 | " 34,\n",
3429 | " 201,\n",
3430 | " 78,\n",
3431 | " 63,\n",
3432 | " 5,\n",
3433 | " 62,\n",
3434 | " 5,\n",
3435 | " 278,\n",
3436 | " 164,\n",
3437 | " 1,\n",
3438 | " 39,\n",
3439 | " 91,\n",
3440 | " 193,\n",
3441 | " 34],\n",
3442 | " [41, 2, 119, 119, 71, 67, 71, 126, 28, 1, 181, 116],\n",
3443 | " [5, 9, 5, 176, 9, 45, 5, 9, 4, 273, 84, 8],\n",
3444 | " [1, 279, 1, 121, 20, 103, 189],\n",
3445 | " [236, 175, 169, 81, 246, 2],\n",
3446 | " [42, 10, 274, 29, 3, 32, 16, 13, 2, 100, 13, 64, 148, 31],\n",
3447 | " [32,\n",
3448 | " 4,\n",
3449 | " 120,\n",
3450 | " 118,\n",
3451 | " 172,\n",
3452 | " 9,\n",
3453 | " 34,\n",
3454 | " 103,\n",
3455 | " 6,\n",
3456 | " 9,\n",
3457 | " 30,\n",
3458 | " 12,\n",
3459 | " 6,\n",
3460 | " 10,\n",
3461 | " 34,\n",
3462 | " 5,\n",
3463 | " 53,\n",
3464 | " 20,\n",
3465 | " 3,\n",
3466 | " 136],\n",
3467 | " [67,\n",
3468 | " 119,\n",
3469 | " 270,\n",
3470 | " 56,\n",
3471 | " 12,\n",
3472 | " 34,\n",
3473 | " 106,\n",
3474 | " 46,\n",
3475 | " 27,\n",
3476 | " 1,\n",
3477 | " 181,\n",
3478 | " 119,\n",
3479 | " 67,\n",
3480 | " 1,\n",
3481 | " 55,\n",
3482 | " 39,\n",
3483 | " 7,\n",
3484 | " 67,\n",
3485 | " 71,\n",
3486 | " 101,\n",
3487 | " 123,\n",
3488 | " 256,\n",
3489 | " 119],\n",
3490 | " ...]"
3491 | ]
3492 | },
3493 | "execution_count": 33,
3494 | "metadata": {},
3495 | "output_type": "execute_result"
3496 | }
3497 | ],
3498 | "source": [
3499 | "tokenizer = Tokenizer(num_words=MAX_NUM_WORDS)\n",
3500 | "tokenizer.fit_on_texts(texts)\n",
3501 | "sequences = tokenizer.texts_to_sequences(texts)\n",
3502 | "sequences"
3503 | ]
3504 | },
3505 | {
3506 | "cell_type": "code",
3507 | "execution_count": 38,
3508 | "id": "efb7ad67",
3509 | "metadata": {},
3510 | "outputs": [
3511 | {
3512 | "data": {
3513 | "text/plain": [
3514 | "{'i': 1,\n",
3515 | " 'to': 2,\n",
3516 | " 'you': 3,\n",
3517 | " 'a': 4,\n",
3518 | " 'the': 5,\n",
3519 | " 'and': 6,\n",
3520 | " 'my': 7,\n",
3521 | " 'u': 8,\n",
3522 | " 'is': 9,\n",
3523 | " 'in': 10,\n",
3524 | " 'this': 11,\n",
3525 | " 'me': 12,\n",
3526 | " 'it': 13,\n",
3527 | " 'for': 14,\n",
3528 | " 'of': 15,\n",
3529 | " 'on': 16,\n",
3530 | " 'out': 17,\n",
3531 | " 'your': 18,\n",
3532 | " '\\ufeff': 19,\n",
3533 | " 'have': 20,\n",
3534 | " 'so': 21,\n",
3535 | " 'that': 22,\n",
3536 | " 'check': 23,\n",
3537 | " 'are': 24,\n",
3538 | " '2': 25,\n",
3539 | " 'call': 26,\n",
3540 | " 'if': 27,\n",
3541 | " 'but': 28,\n",
3542 | " 'can': 29,\n",
3543 | " 'just': 30,\n",
3544 | " 'now': 31,\n",
3545 | " 'not': 32,\n",
3546 | " 'be': 33,\n",
3547 | " 'at': 34,\n",
3548 | " 'will': 35,\n",
3549 | " 'do': 36,\n",
3550 | " 'or': 37,\n",
3551 | " 'like': 38,\n",
3552 | " 'get': 39,\n",
3553 | " 'with': 40,\n",
3554 | " 'up': 41,\n",
3555 | " \"i'm\": 42,\n",
3556 | " 'we': 43,\n",
3557 | " 'no': 44,\n",
3558 | " 'love': 45,\n",
3559 | " 'ur': 46,\n",
3560 | " 'from': 47,\n",
3561 | " 'please': 48,\n",
3562 | " 'all': 49,\n",
3563 | " 'com': 50,\n",
3564 | " 'lt': 51,\n",
3565 | " 'gt': 52,\n",
3566 | " 'how': 53,\n",
3567 | " 'when': 54,\n",
3568 | " 'go': 55,\n",
3569 | " '4': 56,\n",
3570 | " 'video': 57,\n",
3571 | " 'know': 58,\n",
3572 | " 'free': 59,\n",
3573 | " 'am': 60,\n",
3574 | " 'what': 61,\n",
3575 | " 'good': 62,\n",
3576 | " 'was': 63,\n",
3577 | " 'ok': 64,\n",
3578 | " 'time': 65,\n",
3579 | " 'only': 66,\n",
3580 | " 'then': 67,\n",
3581 | " 'got': 68,\n",
3582 | " 'its': 69,\n",
3583 | " 'song': 70,\n",
3584 | " 'come': 71,\n",
3585 | " '39': 72,\n",
3586 | " 'youtube': 73,\n",
3587 | " 'new': 74,\n",
3588 | " 'br': 75,\n",
3589 | " 'as': 76,\n",
3590 | " 'there': 77,\n",
3591 | " 'day': 78,\n",
3592 | " 'want': 79,\n",
3593 | " 'he': 80,\n",
3594 | " 'one': 81,\n",
3595 | " 'www': 82,\n",
3596 | " 'by': 83,\n",
3597 | " 'amp': 84,\n",
3598 | " 'see': 85,\n",
3599 | " 'she': 86,\n",
3600 | " 'subscribe': 87,\n",
3601 | " 'our': 88,\n",
3602 | " 'about': 89,\n",
3603 | " '1': 90,\n",
3604 | " 'home': 91,\n",
3605 | " 'still': 92,\n",
3606 | " 'send': 93,\n",
3607 | " 'hey': 94,\n",
3608 | " 'text': 95,\n",
3609 | " 'today': 96,\n",
3610 | " 'who': 97,\n",
3611 | " 'going': 98,\n",
3612 | " 'need': 99,\n",
3613 | " 'make': 100,\n",
3614 | " 'back': 101,\n",
3615 | " 'channel': 102,\n",
3616 | " 'her': 103,\n",
3617 | " 't': 104,\n",
3618 | " 'sorry': 105,\n",
3619 | " 'stop': 106,\n",
3620 | " 'take': 107,\n",
3621 | " 'dont': 108,\n",
3622 | " 'music': 109,\n",
3623 | " 'txt': 110,\n",
3624 | " 'r': 111,\n",
3625 | " \"i'll\": 112,\n",
3626 | " 'they': 113,\n",
3627 | " 'more': 114,\n",
3628 | " 'hi': 115,\n",
3629 | " 'any': 116,\n",
3630 | " 'much': 117,\n",
3631 | " 'here': 118,\n",
3632 | " 'ü': 119,\n",
3633 | " 'has': 120,\n",
3634 | " \"don't\": 121,\n",
3635 | " 'http': 122,\n",
3636 | " 'n': 123,\n",
3637 | " 'think': 124,\n",
3638 | " 'some': 125,\n",
3639 | " 'lor': 126,\n",
3640 | " 'an': 127,\n",
3641 | " 'd': 128,\n",
3642 | " '3': 129,\n",
3643 | " 'da': 130,\n",
3644 | " 'guys': 131,\n",
3645 | " 'tell': 132,\n",
3646 | " 'money': 133,\n",
3647 | " 'reply': 134,\n",
3648 | " 'k': 135,\n",
3649 | " 'been': 136,\n",
3650 | " 'give': 137,\n",
3651 | " 'im': 138,\n",
3652 | " 's': 139,\n",
3653 | " 'really': 140,\n",
3654 | " 'mobile': 141,\n",
3655 | " 'would': 142,\n",
3656 | " 'great': 143,\n",
3657 | " 'way': 144,\n",
3658 | " 'thanks': 145,\n",
3659 | " 'should': 146,\n",
3660 | " 'did': 147,\n",
3661 | " 'pls': 148,\n",
3662 | " 'later': 149,\n",
3663 | " 'people': 150,\n",
3664 | " 'too': 151,\n",
3665 | " 'm': 152,\n",
3666 | " 'hope': 153,\n",
3667 | " 'well': 154,\n",
3668 | " 'why': 155,\n",
3669 | " 'best': 156,\n",
3670 | " 'where': 157,\n",
3671 | " 'phone': 158,\n",
3672 | " 'week': 159,\n",
3673 | " 'dear': 160,\n",
3674 | " 'us': 161,\n",
3675 | " 'him': 162,\n",
3676 | " 'oh': 163,\n",
3677 | " 'night': 164,\n",
3678 | " 'work': 165,\n",
3679 | " 'had': 166,\n",
3680 | " 'happy': 167,\n",
3681 | " 'over': 168,\n",
3682 | " 'e': 169,\n",
3683 | " 'right': 170,\n",
3684 | " 'could': 171,\n",
3685 | " 'very': 172,\n",
3686 | " 'life': 173,\n",
3687 | " 'claim': 174,\n",
3688 | " \"it's\": 175,\n",
3689 | " 'msg': 176,\n",
3690 | " 'help': 177,\n",
3691 | " 'doing': 178,\n",
3692 | " 'also': 179,\n",
3693 | " 'https': 180,\n",
3694 | " 'c': 181,\n",
3695 | " 'say': 182,\n",
3696 | " 'yes': 183,\n",
3697 | " 'views': 184,\n",
3698 | " 'already': 185,\n",
3699 | " 'message': 186,\n",
3700 | " 'wat': 187,\n",
3701 | " 'after': 188,\n",
3702 | " 'number': 189,\n",
3703 | " 'first': 190,\n",
3704 | " 'them': 191,\n",
3705 | " 'watch': 192,\n",
3706 | " 'tomorrow': 193,\n",
3707 | " 'nice': 194,\n",
3708 | " 'thank': 195,\n",
3709 | " '000': 196,\n",
3710 | " 'lol': 197,\n",
3711 | " 'said': 198,\n",
3712 | " 'prize': 199,\n",
3713 | " 'ask': 200,\n",
3714 | " 'every': 201,\n",
3715 | " 'miss': 202,\n",
3716 | " 'yeah': 203,\n",
3717 | " 'world': 204,\n",
3718 | " 'because': 205,\n",
3719 | " 'v': 206,\n",
3720 | " 'quot': 207,\n",
3721 | " 'even': 208,\n",
3722 | " 'cash': 209,\n",
3723 | " 'find': 210,\n",
3724 | " 'win': 211,\n",
3725 | " 'per': 212,\n",
3726 | " 'b': 213,\n",
3727 | " 'meet': 214,\n",
3728 | " 'year': 215,\n",
3729 | " 'won': 216,\n",
3730 | " 'last': 217,\n",
3731 | " '5': 218,\n",
3732 | " 'does': 219,\n",
3733 | " 'morning': 220,\n",
3734 | " 'called': 221,\n",
3735 | " 'keep': 222,\n",
3736 | " 'off': 223,\n",
3737 | " 'many': 224,\n",
3738 | " 'his': 225,\n",
3739 | " 'let': 226,\n",
3740 | " 'babe': 227,\n",
3741 | " 'before': 228,\n",
3742 | " 'katy': 229,\n",
3743 | " 'sure': 230,\n",
3744 | " 'uk': 231,\n",
3745 | " 'chance': 232,\n",
3746 | " 'getting': 233,\n",
3747 | " 'anything': 234,\n",
3748 | " 'something': 235,\n",
3749 | " 'again': 236,\n",
3750 | " 'buy': 237,\n",
3751 | " 'cos': 238,\n",
3752 | " 'care': 239,\n",
3753 | " 'comment': 240,\n",
3754 | " 'were': 241,\n",
3755 | " 'hello': 242,\n",
3756 | " 'old': 243,\n",
3757 | " 'thing': 244,\n",
3758 | " 'soon': 245,\n",
3759 | " 'next': 246,\n",
3760 | " 'someone': 247,\n",
3761 | " 'facebook': 248,\n",
3762 | " 'co': 249,\n",
3763 | " 'leave': 250,\n",
3764 | " 'feel': 251,\n",
3765 | " 'nokia': 252,\n",
3766 | " 'videos': 253,\n",
3767 | " 'gonna': 254,\n",
3768 | " '150p': 255,\n",
3769 | " 'pick': 256,\n",
3770 | " 'urgent': 257,\n",
3771 | " 'cool': 258,\n",
3772 | " 'contact': 259,\n",
3773 | " 'min': 260,\n",
3774 | " 'sent': 261,\n",
3775 | " 'everyone': 262,\n",
3776 | " 'around': 263,\n",
3777 | " 'watching': 264,\n",
3778 | " 'cant': 265,\n",
3779 | " 'start': 266,\n",
3780 | " \"i've\": 267,\n",
3781 | " 'name': 268,\n",
3782 | " 'always': 269,\n",
3783 | " 'wait': 270,\n",
3784 | " 'ever': 271,\n",
3785 | " 'live': 272,\n",
3786 | " 'month': 273,\n",
3787 | " 'class': 274,\n",
3788 | " 'gud': 275,\n",
3789 | " 'friends': 276,\n",
3790 | " 'which': 277,\n",
3791 | " 'other': 278,\n",
3792 | " \"can't\": 279,\n",
3793 | " 'place': 280,\n",
3794 | " 'real': 281,\n",
3795 | " 'working': 282,\n",
3796 | " 'visit': 283,\n",
3797 | " '50': 284,\n",
3798 | " 'tonight': 285,\n",
3799 | " 'x': 286,\n",
3800 | " 'went': 287,\n",
3801 | " 'being': 288,\n",
3802 | " 'things': 289,\n",
3803 | " 'coming': 290,\n",
3804 | " '7': 291,\n",
3805 | " 'look': 292,\n",
3806 | " 'most': 293,\n",
3807 | " 'never': 294,\n",
3808 | " 'same': 295,\n",
3809 | " 'than': 296,\n",
3810 | " 'may': 297,\n",
3811 | " 'down': 298,\n",
3812 | " 'service': 299,\n",
3813 | " 'ya': 300,\n",
3814 | " 'sleep': 301,\n",
3815 | " 'wish': 302,\n",
3816 | " 'tone': 303,\n",
3817 | " '16': 304,\n",
3818 | " 'done': 305,\n",
3819 | " 'special': 306,\n",
3820 | " 'hear': 307,\n",
3821 | " 'late': 308,\n",
3822 | " \"you're\": 309,\n",
3823 | " 'making': 310,\n",
3824 | " 'few': 311,\n",
3825 | " 'customer': 312,\n",
3826 | " 'try': 313,\n",
3827 | " \"that's\": 314,\n",
3828 | " 'man': 315,\n",
3829 | " 'better': 316,\n",
3830 | " 'chat': 317,\n",
3831 | " 'person': 318,\n",
3832 | " 'told': 319,\n",
3833 | " 'shit': 320,\n",
3834 | " 'online': 321,\n",
3835 | " 'wanna': 322,\n",
3836 | " 'years': 323,\n",
3837 | " 'friend': 324,\n",
3838 | " 'god': 325,\n",
3839 | " 'trying': 326,\n",
3840 | " 'sms': 327,\n",
3841 | " 'play': 328,\n",
3842 | " '6': 329,\n",
3843 | " 'lot': 330,\n",
3844 | " 'haha': 331,\n",
3845 | " 'girl': 332,\n",
3846 | " 'made': 333,\n",
3847 | " 'wan': 334,\n",
3848 | " 'dun': 335,\n",
3849 | " 'yet': 336,\n",
3850 | " 'those': 337,\n",
3851 | " 'awesome': 338,\n",
3852 | " 'don': 339,\n",
3853 | " '18': 340,\n",
3854 | " 'nothing': 341,\n",
3855 | " 'enjoy': 342,\n",
3856 | " 'use': 343,\n",
3857 | " 'bit': 344,\n",
3858 | " 'waiting': 345,\n",
3859 | " 'share': 346,\n",
3860 | " 'eminem': 347,\n",
3861 | " 'stuff': 348,\n",
3862 | " 'fine': 349,\n",
3863 | " 'y': 350,\n",
3864 | " 'ill': 351,\n",
3865 | " 'days': 352,\n",
3866 | " 'mind': 353,\n",
3867 | " 'billion': 354,\n",
3868 | " 'thought': 355,\n",
3869 | " 'guaranteed': 356,\n",
3870 | " 'thk': 357,\n",
3871 | " 'house': 358,\n",
3872 | " 'big': 359,\n",
3873 | " 'heart': 360,\n",
3874 | " 'these': 361,\n",
3875 | " 'perry': 362,\n",
3876 | " 'mins': 363,\n",
3877 | " 'songs': 364,\n",
3878 | " 'mixtape': 365,\n",
3879 | " 'latest': 366,\n",
3880 | " 'talk': 367,\n",
3881 | " 'part': 368,\n",
3882 | " 'thats': 369,\n",
3883 | " 'job': 370,\n",
3884 | " 'smile': 371,\n",
3885 | " 'birthday': 372,\n",
3886 | " 'thumbs': 373,\n",
3887 | " \"didn't\": 374,\n",
3888 | " 'half': 375,\n",
3889 | " 'holiday': 376,\n",
3890 | " 'beautiful': 377,\n",
3891 | " 'probably': 378,\n",
3892 | " 'plus': 379,\n",
3893 | " 'lunch': 380,\n",
3894 | " 'maybe': 381,\n",
3895 | " 'end': 382,\n",
3896 | " 'yo': 383,\n",
3897 | " 'll': 384,\n",
3898 | " 'boy': 385,\n",
3899 | " 'reach': 386,\n",
3900 | " 'finish': 387,\n",
3901 | " 'long': 388,\n",
3902 | " 'account': 389,\n",
3903 | " 'ready': 390,\n",
3904 | " 'into': 391,\n",
3905 | " 'plz': 392,\n",
3906 | " 'cs': 393,\n",
3907 | " 'line': 394,\n",
3908 | " 'remember': 395,\n",
3909 | " 'draw': 396,\n",
3910 | " 'having': 397,\n",
3911 | " 'word': 398,\n",
3912 | " 'car': 399,\n",
3913 | " 'yup': 400,\n",
3914 | " 'meeting': 401,\n",
3915 | " '10': 402,\n",
3916 | " 'started': 403,\n",
3917 | " 'little': 404,\n",
3918 | " 'tv': 405,\n",
3919 | " 'website': 406,\n",
3920 | " 'true': 407,\n",
3921 | " 'guy': 408,\n",
3922 | " 'dream': 409,\n",
3923 | " 'might': 410,\n",
3924 | " 'actually': 411,\n",
3925 | " 'fuck': 412,\n",
3926 | " 'href': 413,\n",
3927 | " 'shakira': 414,\n",
3928 | " 'camera': 415,\n",
3929 | " 'wont': 416,\n",
3930 | " 'left': 417,\n",
3931 | " 'box': 418,\n",
3932 | " 'wk': 419,\n",
3933 | " 'guess': 420,\n",
3934 | " 'read': 421,\n",
3935 | " 'put': 422,\n",
3936 | " 'bad': 423,\n",
3937 | " 'while': 424,\n",
3938 | " 'google': 425,\n",
3939 | " '£1': 426,\n",
3940 | " 'another': 427,\n",
3941 | " 'luv': 428,\n",
3942 | " 'pray': 429,\n",
3943 | " 'dat': 430,\n",
3944 | " 'quite': 431,\n",
3945 | " 'listen': 432,\n",
3946 | " 'rapper': 433,\n",
3947 | " 'receive': 434,\n",
3948 | " 'eat': 435,\n",
3949 | " 'join': 436,\n",
3950 | " 'sexy': 437,\n",
3951 | " 'problem': 438,\n",
3952 | " 'minutes': 439,\n",
3953 | " 'lar': 440,\n",
3954 | " 'awarded': 441,\n",
3955 | " 'came': 442,\n",
3956 | " 'mean': 443,\n",
3957 | " 'type': 444,\n",
3958 | " 'sir': 445,\n",
3959 | " 'face': 446,\n",
3960 | " 'hot': 447,\n",
3961 | " 'hour': 448,\n",
3962 | " '1st': 449,\n",
3963 | " 'anyone': 450,\n",
3964 | " 'party': 451,\n",
3965 | " 'playlist': 452,\n",
3966 | " '9': 453,\n",
3967 | " 'pay': 454,\n",
3968 | " 'wanted': 455,\n",
3969 | " 'sweet': 456,\n",
3970 | " 'ah': 457,\n",
3971 | " 'bt': 458,\n",
3972 | " 'without': 459,\n",
3973 | " 'liao': 460,\n",
3974 | " 'believe': 461,\n",
3975 | " 'id': 462,\n",
3976 | " 'g': 463,\n",
3977 | " 'baby': 464,\n",
3978 | " 'two': 465,\n",
3979 | " '8': 466,\n",
3980 | " 'fun': 467,\n",
3981 | " 'dinner': 468,\n",
3982 | " 'once': 469,\n",
3983 | " 'po': 470,\n",
3984 | " 'shows': 471,\n",
3985 | " 'jus': 472,\n",
3986 | " 'easy': 473,\n",
3987 | " 'appreciate': 474,\n",
3988 | " 'everything': 475,\n",
3989 | " 'makes': 476,\n",
3990 | " 'gift': 477,\n",
3991 | " 'moneygq': 478,\n",
3992 | " 'xxx': 479,\n",
3993 | " 'code': 480,\n",
3994 | " 'cost': 481,\n",
3995 | " 'room': 482,\n",
3996 | " 're': 483,\n",
3997 | " '£1000': 484,\n",
3998 | " 'must': 485,\n",
3999 | " 'offer': 486,\n",
4000 | " 'covers': 487,\n",
4001 | " 'rate': 488,\n",
4002 | " 'wow': 489,\n",
4003 | " 'looking': 490,\n",
4004 | " 'forgot': 491,\n",
4005 | " '150ppm': 492,\n",
4006 | " 'school': 493,\n",
4007 | " 'landline': 494,\n",
4008 | " 'thanx': 495,\n",
4009 | " 'details': 496,\n",
4010 | " 'follow': 497,\n",
4011 | " 'until': 498,\n",
4012 | " 'early': 499,\n",
4013 | " 'speak': 500,\n",
4014 | " 'network': 501,\n",
4015 | " 'enough': 502,\n",
4016 | " 'click': 503,\n",
4017 | " 'between': 504,\n",
4018 | " 'aight': 505,\n",
4019 | " 'plan': 506,\n",
4020 | " 'shall': 507,\n",
4021 | " 'fucking': 508,\n",
4022 | " 'town': 509,\n",
4023 | " 'away': 510,\n",
4024 | " 'support': 511,\n",
4025 | " 'subscribers': 512,\n",
4026 | " 'zonepa': 513,\n",
4027 | " 'apply': 514,\n",
4028 | " \"there's\": 515,\n",
4029 | " '2nd': 516,\n",
4030 | " 'weekend': 517,\n",
4031 | " 'since': 518,\n",
4032 | " 'dis': 519,\n",
4033 | " 'pa': 520,\n",
4034 | " 'bed': 521,\n",
4035 | " 'else': 522,\n",
4036 | " 'price': 523,\n",
4037 | " 'top': 524,\n",
4038 | " 'hard': 525,\n",
4039 | " 'dunno': 526,\n",
4040 | " 'reading': 527,\n",
4041 | " 'sat': 528,\n",
4042 | " 'den': 529,\n",
4043 | " 'princess': 530,\n",
4044 | " 'heard': 531,\n",
4045 | " 'song\\ufeff': 532,\n",
4046 | " 'times': 533,\n",
4047 | " 'ringtone': 534,\n",
4048 | " \"he's\": 535,\n",
4049 | " 'hair': 536,\n",
4050 | " 'comes': 537,\n",
4051 | " 'means': 538,\n",
4052 | " 'hit': 539,\n",
4053 | " 'anyway': 540,\n",
4054 | " 'didnt': 541,\n",
4055 | " 'shopping': 542,\n",
4056 | " 'post': 543,\n",
4057 | " 'orange': 544,\n",
4058 | " 'office': 545,\n",
4059 | " 'simple': 546,\n",
4060 | " 'kiss': 547,\n",
4061 | " 'wife': 548,\n",
4062 | " 'dad': 549,\n",
4063 | " '100': 550,\n",
4064 | " 'news': 551,\n",
4065 | " 'bus': 552,\n",
4066 | " 'saw': 553,\n",
4067 | " 'yourself': 554,\n",
4068 | " 'okay': 555,\n",
4069 | " 'missing': 556,\n",
4070 | " 'leh': 557,\n",
4071 | " 'book': 558,\n",
4072 | " 'selected': 559,\n",
4073 | " \"how's\": 560,\n",
4074 | " 'girls': 561,\n",
4075 | " 'show': 562,\n",
4076 | " 'says': 563,\n",
4077 | " 'award': 564,\n",
4078 | " 'found': 565,\n",
4079 | " '500': 566,\n",
4080 | " 'asked': 567,\n",
4081 | " 'wake': 568,\n",
4082 | " 'rock': 569,\n",
4083 | " 'bring': 570,\n",
4084 | " 'o': 571,\n",
4085 | " 'comments': 572,\n",
4086 | " 'rihanna': 573,\n",
4087 | " 'goes': 574,\n",
4088 | " 'though': 575,\n",
4089 | " 'calls': 576,\n",
4090 | " 'yesterday': 577,\n",
4091 | " 'afternoon': 578,\n",
4092 | " 'mail': 579,\n",
4093 | " 'able': 580,\n",
4094 | " 'tmr': 581,\n",
4095 | " 'evening': 582,\n",
4096 | " 'important': 583,\n",
4097 | " 'collect': 584,\n",
4098 | " 'texts': 585,\n",
4099 | " 'change': 586,\n",
4100 | " 'funny': 587,\n",
4101 | " 'sub': 588,\n",
4102 | " 'game': 589,\n",
4103 | " 'collection': 590,\n",
4104 | " 'sad': 591,\n",
4105 | " 'wif': 592,\n",
4106 | " 'update': 593,\n",
4107 | " 'net': 594,\n",
4108 | " 'pain': 595,\n",
4109 | " 'their': 596,\n",
4110 | " 'xmas': 597,\n",
4111 | " 'hav': 598,\n",
4112 | " 'style': 599,\n",
4113 | " 'bored': 600,\n",
4114 | " 'family': 601,\n",
4115 | " 'de': 602,\n",
4116 | " '\\xa0': 603,\n",
4117 | " 'rap': 604,\n",
4118 | " 'crazy': 605,\n",
4119 | " 'entry': 606,\n",
4120 | " 'words': 607,\n",
4121 | " 'tried': 608,\n",
4122 | " 'messages': 609,\n",
4123 | " 'abt': 610,\n",
4124 | " 'search': 611,\n",
4125 | " 'page': 612,\n",
4126 | " 'lots': 613,\n",
4127 | " 'shop': 614,\n",
4128 | " 'tones': 615,\n",
4129 | " 'wot': 616,\n",
4130 | " 'ago': 617,\n",
4131 | " 'stay': 618,\n",
4132 | " 'saying': 619,\n",
4133 | " 'dreams': 620,\n",
4134 | " 'ref': 621,\n",
4135 | " '2015': 622,\n",
4136 | " 'extraordinary': 623,\n",
4137 | " 'link': 624,\n",
4138 | " 'alright': 625,\n",
4139 | " 'missed': 626,\n",
4140 | " 'almost': 627,\n",
4141 | " 'second': 628,\n",
4142 | " 'took': 629,\n",
4143 | " 'mob': 630,\n",
4144 | " 'bonus': 631,\n",
4145 | " 'download': 632,\n",
4146 | " 'wen': 633,\n",
4147 | " 'movie': 634,\n",
4148 | " 'worry': 635,\n",
4149 | " 'juz': 636,\n",
4150 | " 'story': 637,\n",
4151 | " 'decimal': 638,\n",
4152 | " 'lets': 639,\n",
4153 | " 'weekly': 640,\n",
4154 | " 'dude': 641,\n",
4155 | " 'feeling': 642,\n",
4156 | " 'wants': 643,\n",
4157 | " 'understand': 644,\n",
4158 | " 'drop': 645,\n",
4159 | " 'cover': 646,\n",
4160 | " '0': 647,\n",
4161 | " 'hate': 648,\n",
4162 | " 'ru': 649,\n",
4163 | " 'million': 650,\n",
4164 | " 'waka': 651,\n",
4165 | " 'set': 652,\n",
4166 | " 'valid': 653,\n",
4167 | " 'hours': 654,\n",
4168 | " 'colour': 655,\n",
4169 | " '£100': 656,\n",
4170 | " \"we're\": 657,\n",
4171 | " 'till': 658,\n",
4172 | " 'yours': 659,\n",
4173 | " 'havent': 660,\n",
4174 | " 'food': 661,\n",
4175 | " 'answer': 662,\n",
4176 | " 'order': 663,\n",
4177 | " '10p': 664,\n",
4178 | " 'far': 665,\n",
4179 | " 'hurt': 666,\n",
4180 | " 'either': 667,\n",
4181 | " 'attempt': 668,\n",
4182 | " 'fast': 669,\n",
4183 | " 'together': 670,\n",
4184 | " 'paid': 671,\n",
4185 | " \"she's\": 672,\n",
4186 | " 'omg': 673,\n",
4187 | " 'dance': 674,\n",
4188 | " 'vote': 675,\n",
4189 | " 'national': 676,\n",
4190 | " \"won't\": 677,\n",
4191 | " 'forget': 678,\n",
4192 | " 'gets': 679,\n",
4193 | " 'double': 680,\n",
4194 | " 'close': 681,\n",
4195 | " 'run': 682,\n",
4196 | " 'driving': 683,\n",
4197 | " 'test': 684,\n",
4198 | " 'haf': 685,\n",
4199 | " 'til': 686,\n",
4200 | " 'minute': 687,\n",
4201 | " 'oso': 688,\n",
4202 | " \"what's\": 689,\n",
4203 | " 'sounds': 690,\n",
4204 | " 'happen': 691,\n",
4205 | " 'nite': 692,\n",
4206 | " 'takes': 693,\n",
4207 | " 'own': 694,\n",
4208 | " 'full': 695,\n",
4209 | " 'games': 696,\n",
4210 | " 'huh': 697,\n",
4211 | " 'head': 698,\n",
4212 | " 'voice': 699,\n",
4213 | " 'kind': 700,\n",
4214 | " 'pretty': 701,\n",
4215 | " 'pub': 702,\n",
4216 | " 'mother': 703,\n",
4217 | " 'lei': 704,\n",
4218 | " 'everyday': 705,\n",
4219 | " 'd\\ufeff': 706,\n",
4220 | " 'question': 707,\n",
4221 | " 'brother': 708,\n",
4222 | " 'press': 709,\n",
4223 | " 'ard': 710,\n",
4224 | " 'delivery': 711,\n",
4225 | " 'whole': 712,\n",
4226 | " \"haven't\": 713,\n",
4227 | " 'address': 714,\n",
4228 | " 'coz': 715,\n",
4229 | " 'company': 716,\n",
4230 | " 'vouchers': 717,\n",
4231 | " 'card': 718,\n",
4232 | " 'friendship': 719,\n",
4233 | " 'moment': 720,\n",
4234 | " 'lose': 721,\n",
4235 | " 'mine': 722,\n",
4236 | " 'sch': 723,\n",
4237 | " 'email': 724,\n",
4238 | " 'goin': 725,\n",
4239 | " 'twitter': 726,\n",
4240 | " '11': 727,\n",
4241 | " 'date': 728,\n",
4242 | " 'trip': 729,\n",
4243 | " '£5000': 730,\n",
4244 | " 'cause': 731,\n",
4245 | " 'busy': 732,\n",
4246 | " \"''\": 733,\n",
4247 | " 'todays': 734,\n",
4248 | " 'taking': 735,\n",
4249 | " 'sleeping': 736,\n",
4250 | " 'both': 737,\n",
4251 | " 'walk': 738,\n",
4252 | " 'wid': 739,\n",
4253 | " 'ring': 740,\n",
4254 | " 'club': 741,\n",
4255 | " 'stupid': 742,\n",
4256 | " 'lost': 743,\n",
4257 | " 'calling': 744,\n",
4258 | " 'reason': 745,\n",
4259 | " 'eve': 746,\n",
4260 | " 'tot': 747,\n",
4261 | " 'sae': 748,\n",
4262 | " 'store': 749,\n",
4263 | " '8007': 750,\n",
4264 | " 'least': 751,\n",
4265 | " 'loving': 752,\n",
4266 | " 'alone': 753,\n",
4267 | " 'ha': 754,\n",
4268 | " 'congrats': 755,\n",
4269 | " 'used': 756,\n",
4270 | " 'smiling': 757,\n",
4271 | " 'points': 758,\n",
4272 | " '£2000': 759,\n",
4273 | " 'open': 760,\n",
4274 | " 'leaving': 761,\n",
4275 | " 'noe': 762,\n",
4276 | " 'wil': 763,\n",
4277 | " 'secret': 764,\n",
4278 | " 'charge': 765,\n",
4279 | " 'w': 766,\n",
4280 | " 'sister': 767,\n",
4281 | " \"we'll\": 768,\n",
4282 | " 'chikku': 769,\n",
4283 | " '£500': 770,\n",
4284 | " 'drive': 771,\n",
4285 | " 'await': 772,\n",
4286 | " 'pic': 773,\n",
4287 | " 'others': 774,\n",
4288 | " 'amazing': 775,\n",
4289 | " '3\\ufeff': 776,\n",
4290 | " 'remix': 777,\n",
4291 | " 'image2you': 778,\n",
4292 | " '48051': 779,\n",
4293 | " 'available': 780,\n",
4294 | " 'final': 781,\n",
4295 | " 'pounds': 782,\n",
4296 | " 'aft': 783,\n",
4297 | " 'tomo': 784,\n",
4298 | " 'pass': 785,\n",
4299 | " 'finished': 786,\n",
4300 | " 'xx': 787,\n",
4301 | " 'private': 788,\n",
4302 | " 'player': 789,\n",
4303 | " 'whats': 790,\n",
4304 | " 'smoke': 791,\n",
4305 | " 'worth': 792,\n",
4306 | " 'gr8': 793,\n",
4307 | " 'touch': 794,\n",
4308 | " 'case': 795,\n",
4309 | " 'angry': 796,\n",
4310 | " '750': 797,\n",
4311 | " '86688': 798,\n",
4312 | " 'okie': 799,\n",
4313 | " 'row': 800,\n",
4314 | " 'bout': 801,\n",
4315 | " 'ass': 802,\n",
4316 | " 'poly': 803,\n",
4317 | " 'pm': 804,\n",
4318 | " 'drink': 805,\n",
4319 | " 'land': 806,\n",
4320 | " 'thinking': 807,\n",
4321 | " 'pics': 808,\n",
4322 | " 'whatever': 809,\n",
4323 | " 'rite': 810,\n",
4324 | " '15': 811,\n",
4325 | " 'p': 812,\n",
4326 | " 'spam': 813,\n",
4327 | " 'psy': 814,\n",
4328 | " 'roar': 815,\n",
4329 | " \"c's\": 816,\n",
4330 | " \"'\": 817,\n",
4331 | " 'months': 818,\n",
4332 | " '20': 819,\n",
4333 | " 'info': 820,\n",
4334 | " 'promise': 821,\n",
4335 | " 'tho': 822,\n",
4336 | " \"doesn't\": 823,\n",
4337 | " 'decided': 824,\n",
4338 | " 'lucky': 825,\n",
4339 | " 'gone': 826,\n",
4340 | " 'mom': 827,\n",
4341 | " 'statement': 828,\n",
4342 | " \"you'll\": 829,\n",
4343 | " 'services': 830,\n",
4344 | " 'hand': 831,\n",
4345 | " 'content': 832,\n",
4346 | " 'finally': 833,\n",
4347 | " 'college': 834,\n",
4348 | " 'break': 835,\n",
4349 | " 'unsubscribe': 836,\n",
4350 | " 'currently': 837,\n",
4351 | " 'gd': 838,\n",
4352 | " 'welcome': 839,\n",
4353 | " '00': 840,\n",
4354 | " 'neva': 841,\n",
4355 | " 'regret': 842,\n",
4356 | " 'auction': 843,\n",
4357 | " 'lie': 844,\n",
4358 | " 'fans': 845,\n",
4359 | " 'singer': 846,\n",
4360 | " 'cup': 847,\n",
4361 | " 'wonderful': 848,\n",
4362 | " 'myself': 849,\n",
4363 | " 'lesson': 850,\n",
4364 | " 'saturday': 851,\n",
4365 | " 'checking': 852,\n",
4366 | " '12hrs': 853,\n",
4367 | " 'happened': 854,\n",
4368 | " 'expires': 855,\n",
4369 | " 'msgs': 856,\n",
4370 | " 'each': 857,\n",
4371 | " 'f': 858,\n",
4372 | " 'sis': 859,\n",
4373 | " 'choose': 860,\n",
4374 | " 'christmas': 861,\n",
4375 | " 'small': 862,\n",
4376 | " 'project': 863,\n",
4377 | " 'dating': 864,\n",
4378 | " 'opt': 865,\n",
4379 | " 'fb': 866,\n",
4380 | " 'mum': 867,\n",
4381 | " 'voucher': 868,\n",
4382 | " 'sun': 869,\n",
4383 | " 'earth': 870,\n",
4384 | " 'knw': 871,\n",
4385 | " 'lovely': 872,\n",
4386 | " 'mates': 873,\n",
4387 | " 'wrong': 874,\n",
4388 | " 'enter': 875,\n",
4389 | " 'write': 876,\n",
4390 | " 'loved': 877,\n",
4391 | " 'likes': 878,\n",
4392 | " 'queen': 879,\n",
4393 | " '30': 880,\n",
4394 | " 'such': 881,\n",
4395 | " 'lyrics': 882,\n",
4396 | " 'treat': 883,\n",
4397 | " 'winner': 884,\n",
4398 | " 'pobox': 885,\n",
4399 | " 'smth': 886,\n",
4400 | " '08000930705': 887,\n",
4401 | " 'loves': 888,\n",
4402 | " 'prob': 889,\n",
4403 | " 'identifier': 890,\n",
4404 | " 'nt': 891,\n",
4405 | " 'age': 892,\n",
4406 | " 'ni8': 893,\n",
4407 | " 'ltd': 894,\n",
4408 | " 'frnd': 895,\n",
4409 | " 'needs': 896,\n",
4410 | " 'carlos': 897,\n",
4411 | " 'boytoy': 898,\n",
4412 | " '25': 899,\n",
4413 | " 'congratulations': 900,\n",
4414 | " 'anytime': 901,\n",
4415 | " 'blue': 902,\n",
4416 | " 'die': 903,\n",
4417 | " 'mobileupd8': 904,\n",
4418 | " 'seen': 905,\n",
4419 | " 'water': 906,\n",
4420 | " '800': 907,\n",
4421 | " 'un': 908,\n",
4422 | " 'em': 909,\n",
4423 | " 'successful': 910,\n",
4424 | " 'site': 911,\n",
4425 | " 'j': 912,\n",
4426 | " 'hows': 913,\n",
4427 | " 'view': 914,\n",
4428 | " 'gangnam': 915,\n",
4429 | " 'credit': 916,\n",
4430 | " 'knows': 917,\n",
4431 | " 'camcorder': 918,\n",
4432 | " 'seeing': 919,\n",
4433 | " 'telling': 920,\n",
4434 | " 'men': 921,\n",
4435 | " 'operator': 922,\n",
4436 | " 'friday': 923,\n",
4437 | " 'hmm': 924,\n",
4438 | " 'quiz': 925,\n",
4439 | " 'yr': 926,\n",
4440 | " 'become': 927,\n",
4441 | " 'parents': 928,\n",
4442 | " 'wit': 929,\n",
4443 | " 'completely': 930,\n",
4444 | " \"you've\": 931,\n",
4445 | " 'course': 932,\n",
4446 | " 'darlin': 933,\n",
4447 | " 'rs': 934,\n",
4448 | " 'goodmorning': 935,\n",
4449 | " 'oredi': 936,\n",
4450 | " 'tel': 937,\n",
4451 | " 'fr': 938,\n",
4452 | " 'hold': 939,\n",
4453 | " 'track': 940,\n",
4454 | " 'light': 941,\n",
4455 | " 'immediately': 942,\n",
4456 | " 'suite342': 943,\n",
4457 | " '2lands': 944,\n",
4458 | " '08000839402': 945,\n",
4459 | " 'talking': 946,\n",
4460 | " 'nope': 947,\n",
4461 | " 'outside': 948,\n",
4462 | " 'opinion': 949,\n",
4463 | " 'fri': 950,\n",
4464 | " '£3': 951,\n",
4465 | " 'within': 952,\n",
4466 | " 'sea': 953,\n",
4467 | " 'self': 954,\n",
4468 | " 'weeks': 955,\n",
4469 | " 'sound': 956,\n",
4470 | " 'laugh': 957,\n",
4471 | " 'sex': 958,\n",
4472 | " 'looks': 959,\n",
4473 | " '…': 960,\n",
4474 | " 'extra': 961,\n",
4475 | " 'mate': 962,\n",
4476 | " 'seconds': 963,\n",
4477 | " 'user': 964,\n",
4478 | " 'knew': 965,\n",
4479 | " 'photo': 966,\n",
4480 | " 'against': 967,\n",
4481 | " 'nyt': 968,\n",
4482 | " 'cute': 969,\n",
4483 | " 'chennai': 970,\n",
4484 | " 'original': 971,\n",
4485 | " 'football': 972,\n",
4486 | " 'youtu': 973,\n",
4487 | " 'point': 974,\n",
4488 | " 'wkly': 975,\n",
4489 | " 'freemsg': 976,\n",
4490 | " 'sunday': 977,\n",
4491 | " 'hungry': 978,\n",
4492 | " 'etc': 979,\n",
4493 | " 'frnds': 980,\n",
4494 | " 'gotta': 981,\n",
4495 | " 'computer': 982,\n",
4496 | " 'mah': 983,\n",
4497 | " 'felt': 984,\n",
4498 | " 'uncle': 985,\n",
4499 | " 'numbers': 986,\n",
4500 | " 'mu': 987,\n",
4501 | " 'fancy': 988,\n",
4502 | " 'bank': 989,\n",
4503 | " 'log': 990,\n",
4504 | " 'mrng': 991,\n",
4505 | " 'tc': 992,\n",
4506 | " 'sign': 993,\n",
4507 | " 'thinks': 994,\n",
4508 | " 'meant': 995,\n",
4509 | " 'unlimited': 996,\n",
4510 | " 'fone': 997,\n",
4511 | " 'ends': 998,\n",
4512 | " 'forward': 999,\n",
4513 | " 'couple': 1000,\n",
4514 | " ...}"
4515 | ]
4516 | },
4517 | "execution_count": 38,
4518 | "metadata": {},
4519 | "output_type": "execute_result"
4520 | }
4521 | ],
4522 | "source": [
4523 | "word_index = tokenizer.word_index\n",
4524 | "word_index"
4525 | ]
4526 | },
4527 | {
4528 | "cell_type": "code",
4529 | "execution_count": 37,
4530 | "id": "67ae5c25",
4531 | "metadata": {},
4532 | "outputs": [],
4533 | "source": [
4534 | "from tensorflow.keras.preprocessing.sequence import pad_sequences"
4535 | ]
4536 | },
4537 | {
4538 | "cell_type": "code",
4539 | "execution_count": 39,
4540 | "id": "685b0e07",
4541 | "metadata": {},
4542 | "outputs": [],
4543 | "source": [
4544 | "MAX_SEQ_LENGTH = 300"
4545 | ]
4546 | },
4547 | {
4548 | "cell_type": "code",
4549 | "execution_count": 40,
4550 | "id": "11da526e",
4551 | "metadata": {},
4552 | "outputs": [],
4553 | "source": [
4554 | "X = pad_sequences(sequences, maxlen=MAX_SEQ_LENGTH)"
4555 | ]
4556 | },
4557 | {
4558 | "cell_type": "code",
4559 | "execution_count": 44,
4560 | "id": "224ebddf",
4561 | "metadata": {},
4562 | "outputs": [],
4563 | "source": [
4564 | "import numpy as np\n",
4565 | "from tensorflow.keras.utils import to_categorical"
4566 | ]
4567 | },
4568 | {
4569 | "cell_type": "code",
4570 | "execution_count": 45,
4571 | "id": "94b059bd",
4572 | "metadata": {},
4573 | "outputs": [
4574 | {
4575 | "data": {
4576 | "text/plain": [
4577 | "array([0, 0, 1, ..., 1, 1, 0])"
4578 | ]
4579 | },
4580 | "execution_count": 45,
4581 | "metadata": {},
4582 | "output_type": "execute_result"
4583 | }
4584 | ],
4585 | "source": [
4586 | "labels_as_int_array = np.asarray(labels_as_int)\n",
4587 | "labels_as_int_array"
4588 | ]
4589 | },
4590 | {
4591 | "cell_type": "code",
4592 | "execution_count": 46,
4593 | "id": "1c942d83",
4594 | "metadata": {},
4595 | "outputs": [],
4596 | "source": [
4597 | "y = to_categorical(labels_as_int_array)"
4598 | ]
4599 | },
4600 | {
4601 | "cell_type": "code",
4602 | "execution_count": 47,
4603 | "id": "05e359a4",
4604 | "metadata": {},
4605 | "outputs": [
4606 | {
4607 | "data": {
4608 | "text/plain": [
4609 | "array([[1., 0.],\n",
4610 | " [1., 0.],\n",
4611 | " [0., 1.],\n",
4612 | " ...,\n",
4613 | " [0., 1.],\n",
4614 | " [0., 1.],\n",
4615 | " [1., 0.]], dtype=float32)"
4616 | ]
4617 | },
4618 | "execution_count": 47,
4619 | "metadata": {},
4620 | "output_type": "execute_result"
4621 | }
4622 | ],
4623 | "source": [
4624 | "y"
4625 | ]
4626 | },
4627 | {
4628 | "cell_type": "code",
4629 | "execution_count": 48,
4630 | "id": "1448b76e",
4631 | "metadata": {},
4632 | "outputs": [
4633 | {
4634 | "data": {
4635 | "text/plain": [
4636 | "[[1, 0], [1, 0], [0, 1]]"
4637 | ]
4638 | },
4639 | "execution_count": 48,
4640 | "metadata": {},
4641 | "output_type": "execute_result"
4642 | }
4643 | ],
4644 | "source": [
4645 | "[0, 0, 1]\n",
4646 | "['ham', 'ham', 'spam']\n",
4647 | "['ham', 'spam']\n",
4648 | "\n",
4649 | "[[1, 0], [1,0], [0, 1]]"
4650 | ]
4651 | },
4652 | {
4653 | "cell_type": "code",
4654 | "execution_count": null,
4655 | "id": "e27e225b",
4656 | "metadata": {},
4657 | "outputs": [],
4658 | "source": []
4659 | }
4660 | ],
4661 | "metadata": {
4662 | "kernelspec": {
4663 | "display_name": "Python 3 (ipykernel)",
4664 | "language": "python",
4665 | "name": "python3"
4666 | },
4667 | "language_info": {
4668 | "codemirror_mode": {
4669 | "name": "ipython",
4670 | "version": 3
4671 | },
4672 | "file_extension": ".py",
4673 | "mimetype": "text/x-python",
4674 | "name": "python",
4675 | "nbconvert_exporter": "python",
4676 | "pygments_lexer": "ipython3",
4677 | "version": "3.9.7"
4678 | }
4679 | },
4680 | "nbformat": 4,
4681 | "nbformat_minor": 5
4682 | }
4683 |
--------------------------------------------------------------------------------