Skip to content

Instantly share code, notes, and snippets.

@psychemedia
Last active July 23, 2020 01:52
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save psychemedia/0b5e6d7b51750b63a1041c66264e51c2 to your computer and use it in GitHub Desktop.
Save psychemedia/0b5e6d7b51750b63a1041c66264e51c2 to your computer and use it in GitHub Desktop.
Venue map
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Venues According to Wikipedia\n",
"\n",
"As well as driving the Wikipedia website, a lot of facts that are recorded as such in Wikipedia are exposed in a special sort of database known as a *Linked Data* database called DBPedia.\n",
"\n",
"So for example, on Wikipedia we have [The Charlotte](https://en.wikipedia.org/wiki/The_Charlotte) and on DBPedia we also have the [The Charlotte](http://dbpedia.org/page/The_Charlotte), albeit in a form that's more intended for machine consumption.\n",
"\n",
"With some help form code, and a query language called SPARQL, we can write queries over the facts known to Wikipedia...\n",
"\n",
"...like a list of venues, with locations..."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Some Code Stuff\n",
"\n",
"..cos this is what does the work and by writing code here we can reuese it and write less code elsewhere..."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"%%capture\n",
"#Install some essential packages\n",
"%pip install SPARQLWrapper pandas folium\n",
"# Import the necessary packages\n",
"from SPARQLWrapper import SPARQLWrapper, JSON\n",
"\n",
"# Add some helper functions\n",
"\n",
"# A function that will return the results of running a SPARQL query with \n",
"# a defined set of prefixes over a specified endpoint.\n",
"# It follows the same five-step process apart from creating the query, which \n",
"# is provided as an argument to the function.\n",
"def runQuery(endpoint, prefix, q):\n",
" ''' Run a SPARQL query with a declared prefix over a specified endpoint '''\n",
" sparql = SPARQLWrapper(endpoint)\n",
" sparql.setQuery(prefix+q) # concatenate the strings representing the prefixes and the query\n",
" sparql.setReturnFormat(JSON)\n",
" return sparql.query().convert()\n",
" \n",
"# Import pandas to provide facilities for creating a DataFrame to hold results\n",
"import pandas as pd\n",
"\n",
"# Function to convert query results into a DataFrame\n",
"# The results are assumed to be in JSON format and therefore the Python dictionary will have \n",
"# the results indexed by 'results' and then 'bindings'. \n",
"def dict2df(results):\n",
" ''' A function to flatten the SPARQL query results and return the column values '''\n",
" data = []\n",
" for result in results[\"results\"][\"bindings\"]:\n",
" tmp = {}\n",
" for el in result:\n",
" tmp[el] = result[el]['value']\n",
" data.append(tmp)\n",
"\n",
" df = pd.DataFrame(data)\n",
" return df\n",
"\n",
"# Function to run a query and return results in a DataFrame\n",
"def dfResults(endpoint, prefix, q):\n",
" ''' Generate a data frame containing the results of running\n",
" a SPARQL query with a declared prefix over a specified endpoint '''\n",
" return dict2df(runQuery(endpoint, prefix, q))\n",
" \n",
"# Print a limited number of results of a query\n",
"def printQuery(results, limit=''):\n",
" ''' Print the results from the SPARQL query '''\n",
" resdata = results[\"results\"][\"bindings\"]\n",
" if limit != '':\n",
" resdata = results[\"results\"][\"bindings\"][:limit]\n",
" for result in resdata:\n",
" for ans in result:\n",
" print('{0}: {1}'.format(ans, result[ans]['value']))\n",
" print()\n",
"\n",
"# Run a query and print out a limited number of results\n",
"def printRunQuery(endpoint, prefix, q, limit=''):\n",
" ''' Print the results from the SPARQL query '''\n",
" results = runQuery(endpoint, prefix, q)\n",
" printQuery(results, limit)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The query language is a bit weird and can get a bit hard to read, so we make aliases to simplify the clutter in our queries..."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# Define any prefixes\n",
"prefix = '''\n",
" PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n",
" PREFIX dbpedia: <http://dbpedia.org/resource/>\n",
" PREFIX foaf: <http://xmlns.com/foaf/0.1/>\n",
" PREFIX dct: <http://purl.org/dc/terms/>\n",
" PREFIX skos: <http://www.w3.org/2004/02/skos/core#>\n",
" PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n",
" PREFIX dbo: <http://dbpedia.org/ontology/>\n",
" PREFIX dbc: <http://dbpedia.org/resource/Category:>\n",
" PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>\n",
" \n",
" PREFIX ouseful:<http://ouseful.info/>\n",
"'''"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The endpoint is where machines go to ask questions..."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"#Declare the DBPedia endpoint\n",
"endpoint=\"http://dbpedia.org/sparql\"\n",
"sparql = SPARQLWrapper(endpoint)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Music Venues in England\n",
"\n",
"Now let's phrase a question...\n",
"\n",
"> DBPedia, can you give me the names and geo-coordinates of venues in England?"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"q = '''\n",
"SELECT DISTINCT ?venue_name ?lat ?lon\n",
"WHERE {\n",
"\n",
" ?venue rdfs:label ?venue_name .\n",
" \n",
" ?venue geo:lat ?lat .\n",
" ?venue geo:long ?lon .\n",
" \n",
" ?venue dct:subject ?is_en_venue .\n",
" ?is_en_venue skos:broader dbc:Music_venues_in_England .\n",
" \n",
" FILTER (langMatches(lang(?venue_name), \"en\"))\n",
" \n",
"} LIMIT 1000\n",
"'''"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we actually pose the question and get a response back.."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>venue_name</th>\n",
" <th>lat</th>\n",
" <th>lon</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>The Coronet</td>\n",
" <td>51.4948</td>\n",
" <td>-0.0989</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>Pigalle Club</td>\n",
" <td>51.5095</td>\n",
" <td>-0.135</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>The Spitz</td>\n",
" <td>51.5197</td>\n",
" <td>-0.0747222</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>First Direct Arena</td>\n",
" <td>53.8031</td>\n",
" <td>-1.54222</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>First Direct Arena</td>\n",
" <td>53.8031</td>\n",
" <td>-1.54222</td>\n",
" </tr>\n",
" <tr>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <td>259</td>\n",
" <td>The Ram Folk Club</td>\n",
" <td>51.3823</td>\n",
" <td>-0.3414</td>\n",
" </tr>\n",
" <tr>\n",
" <td>260</td>\n",
" <td>Worthing Leisure Centre</td>\n",
" <td>50.8167</td>\n",
" <td>-0.408758</td>\n",
" </tr>\n",
" <tr>\n",
" <td>261</td>\n",
" <td>Workington Opera House</td>\n",
" <td>54.6438</td>\n",
" <td>-3.5443</td>\n",
" </tr>\n",
" <tr>\n",
" <td>262</td>\n",
" <td>Bradford Odeon</td>\n",
" <td>53.7925</td>\n",
" <td>-1.7565</td>\n",
" </tr>\n",
" <tr>\n",
" <td>263</td>\n",
" <td>Guildford Civic Hall</td>\n",
" <td>51.2386</td>\n",
" <td>-0.5663</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>264 rows × 3 columns</p>\n",
"</div>"
],
"text/plain": [
" venue_name lat lon\n",
"0 The Coronet 51.4948 -0.0989\n",
"1 Pigalle Club 51.5095 -0.135\n",
"2 The Spitz 51.5197 -0.0747222\n",
"3 First Direct Arena 53.8031 -1.54222\n",
"4 First Direct Arena 53.8031 -1.54222\n",
".. ... ... ...\n",
"259 The Ram Folk Club 51.3823 -0.3414\n",
"260 Worthing Leisure Centre 50.8167 -0.408758\n",
"261 Workington Opera House 54.6438 -3.5443\n",
"262 Bradford Odeon 53.7925 -1.7565\n",
"263 Guildford Civic Hall 51.2386 -0.5663\n",
"\n",
"[264 rows x 3 columns]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = dfResults(endpoint, prefix, q)\n",
"df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Whenever you work with data, you need to tidy it up. Here, we make sure the co-ordinates are treated as numbers and get rid of any rows that contain missing values."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>venue_name</th>\n",
" <th>lat</th>\n",
" <th>lon</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>The Coronet</td>\n",
" <td>51.4948</td>\n",
" <td>-0.098900</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>Pigalle Club</td>\n",
" <td>51.5095</td>\n",
" <td>-0.135000</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>The Spitz</td>\n",
" <td>51.5197</td>\n",
" <td>-0.074722</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>First Direct Arena</td>\n",
" <td>53.8031</td>\n",
" <td>-1.542220</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>First Direct Arena</td>\n",
" <td>53.8031</td>\n",
" <td>-1.542220</td>\n",
" </tr>\n",
" <tr>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <td>259</td>\n",
" <td>The Ram Folk Club</td>\n",
" <td>51.3823</td>\n",
" <td>-0.341400</td>\n",
" </tr>\n",
" <tr>\n",
" <td>260</td>\n",
" <td>Worthing Leisure Centre</td>\n",
" <td>50.8167</td>\n",
" <td>-0.408758</td>\n",
" </tr>\n",
" <tr>\n",
" <td>261</td>\n",
" <td>Workington Opera House</td>\n",
" <td>54.6438</td>\n",
" <td>-3.544300</td>\n",
" </tr>\n",
" <tr>\n",
" <td>262</td>\n",
" <td>Bradford Odeon</td>\n",
" <td>53.7925</td>\n",
" <td>-1.756500</td>\n",
" </tr>\n",
" <tr>\n",
" <td>263</td>\n",
" <td>Guildford Civic Hall</td>\n",
" <td>51.2386</td>\n",
" <td>-0.566300</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>264 rows × 3 columns</p>\n",
"</div>"
],
"text/plain": [
" venue_name lat lon\n",
"0 The Coronet 51.4948 -0.098900\n",
"1 Pigalle Club 51.5095 -0.135000\n",
"2 The Spitz 51.5197 -0.074722\n",
"3 First Direct Arena 53.8031 -1.542220\n",
"4 First Direct Arena 53.8031 -1.542220\n",
".. ... ... ...\n",
"259 The Ram Folk Club 51.3823 -0.341400\n",
"260 Worthing Leisure Centre 50.8167 -0.408758\n",
"261 Workington Opera House 54.6438 -3.544300\n",
"262 Bradford Odeon 53.7925 -1.756500\n",
"263 Guildford Civic Hall 51.2386 -0.566300\n",
"\n",
"[264 rows x 3 columns]"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['lat'] = df['lat'].astype(float)\n",
"df['lon'] = df['lon'].astype(float)\n",
"df = df.dropna(how='any', axis=1)\n",
"\n",
"#Preview the data\n",
"df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Map It...\n",
"\n",
"Maps are actually quite easy to work with in code... Often just a couple of lines to pull stuff together, even fewer if we use some magic (but maybe later for that..)."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"#folium is a package for doing stuff with maps\n",
"import folium"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For each line of our dataset, plot a corresponding marker on a map..."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgCiAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgTF9OT19UT1VDSCA9IGZhbHNlOwogICAgICAgICAgICBMX0RJU0FCTEVfM0QgPSBmYWxzZTsKICAgICAgICA8L3NjcmlwdD4KICAgIAogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbGVhZmxldEAxLjUuMS9kaXN0L2xlYWZsZXQuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEyLjQubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9qcy9ib290c3RyYXAubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5qcyI+PC9zY3JpcHQ+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbGVhZmxldEAxLjUuMS9kaXN0L2xlYWZsZXQuY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMi4wL2Nzcy9ib290c3RyYXAubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLXRoZW1lLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9mb250LWF3ZXNvbWUvNC42LjMvY3NzL2ZvbnQtYXdlc29tZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLzIuMC4yL2xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3Jhd2Nkbi5naXRoYWNrLmNvbS9weXRob24tdmlzdWFsaXphdGlvbi9mb2xpdW0vbWFzdGVyL2ZvbGl1bS90ZW1wbGF0ZXMvbGVhZmxldC5hd2Vzb21lLnJvdGF0ZS5jc3MiLz4KICAgIDxzdHlsZT5odG1sLCBib2R5IHt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7bWFyZ2luOiAwO3BhZGRpbmc6IDA7fTwvc3R5bGU+CiAgICA8c3R5bGU+I21hcCB7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7cmlnaHQ6MDtsZWZ0OjA7fTwvc3R5bGU+CiAgICAKICAgICAgICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwKICAgICAgICAgICAgICAgIGluaXRpYWwtc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubyIgLz4KICAgICAgICAgICAgPHN0eWxlPgogICAgICAgICAgICAgICAgI21hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSB7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAuMCU7CiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICAgICAgbGVmdDogMC4wJTsKICAgICAgICAgICAgICAgICAgICB0b3A6IDAuMCU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgCjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvbGl1bS1tYXAiIGlkPSJtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkiID48L2Rpdj4KICAgICAgICAKPC9ib2R5Pgo8c2NyaXB0PiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5ID0gTC5tYXAoCiAgICAgICAgICAgICAgICAibWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5IiwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IFs1NS4wLCAwLjBdLAogICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcsCiAgICAgICAgICAgICAgICAgICAgem9vbTogNSwKICAgICAgICAgICAgICAgICAgICB6b29tQ29udHJvbDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICBwcmVmZXJDYW52YXM6IGZhbHNlLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgCgogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyX2Q5MWRjYTU4NTljMzRlYjQ4ZTc4NjY1YWVlYzhkMTljID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAiaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmciLAogICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGlvbiI6ICJEYXRhIGJ5IFx1MDAyNmNvcHk7IFx1MDAzY2EgaHJlZj1cImh0dHA6Ly9vcGVuc3RyZWV0bWFwLm9yZ1wiXHUwMDNlT3BlblN0cmVldE1hcFx1MDAzYy9hXHUwMDNlLCB1bmRlciBcdTAwM2NhIGhyZWY9XCJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodFwiXHUwMDNlT0RiTFx1MDAzYy9hXHUwMDNlLiIsICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwgIm1heE5hdGl2ZVpvb20iOiAxOCwgIm1heFpvb20iOiAxOCwgIm1pblpvb20iOiAwLCAibm9XcmFwIjogZmFsc2UsICJvcGFjaXR5IjogMSwgInN1YmRvbWFpbnMiOiAiYWJjIiwgInRtcyI6IGZhbHNlfQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl8zNDNmMzhhNGMwYzc0MTE3OWY4ZTE2YWE4ZjRkMDhlOCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQ5NDgsIC0wLjA5ODldLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzFmYTRlNzY2OTNkNzQyMTdhZGE5MGI0NDJhZTNmNDNjID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9lZmRhN2QwZDFjYjc0NWU3YWY1MmY1ZjM4Zjc3ZDUxMyA9ICQoYDxkaXYgaWQ9Imh0bWxfZWZkYTdkMGQxY2I3NDVlN2FmNTJmNWYzOGY3N2Q1MTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRoZSBDb3JvbmV0PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzFmYTRlNzY2OTNkNzQyMTdhZGE5MGI0NDJhZTNmNDNjLnNldENvbnRlbnQoaHRtbF9lZmRhN2QwZDFjYjc0NWU3YWY1MmY1ZjM4Zjc3ZDUxMyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8zNDNmMzhhNGMwYzc0MTE3OWY4ZTE2YWE4ZjRkMDhlOC5iaW5kUG9wdXAocG9wdXBfMWZhNGU3NjY5M2Q3NDIxN2FkYTkwYjQ0MmFlM2Y0M2MpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfZTU4OTBkYjQ4Yzk5NGZjNTlmM2UyMzQ5NGIwNzY3MDcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41MDk1LCAtMC4xMzVdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2FjNTE2M2VkNjU3NzQ3NWI4ZGFhOTNlZWUyNTExMGI2ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8zMjk2YTg0ODg5NmU0MjZkYWY4YTUzNDlhNGNkYzcyNSA9ICQoYDxkaXYgaWQ9Imh0bWxfMzI5NmE4NDg4OTZlNDI2ZGFmOGE1MzQ5YTRjZGM3MjUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlBpZ2FsbGUgQ2x1YjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9hYzUxNjNlZDY1Nzc0NzViOGRhYTkzZWVlMjUxMTBiNi5zZXRDb250ZW50KGh0bWxfMzI5NmE4NDg4OTZlNDI2ZGFmOGE1MzQ5YTRjZGM3MjUpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfZTU4OTBkYjQ4Yzk5NGZjNTlmM2UyMzQ5NGIwNzY3MDcuYmluZFBvcHVwKHBvcHVwX2FjNTE2M2VkNjU3NzQ3NWI4ZGFhOTNlZWUyNTExMGI2KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2JmMDY3ZjU3Y2I2YjRlZjNhYTJlNTUyNGM0OWUzNmViID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTE5NywgLTAuMDc0NzIyMl0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfN2MxNGI1YjI3NGM2NGI1Yzk3N2JmMjgxY2QwZjYxMzEgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzU3ZDBhN2E1YjNkZDQ3MjhiZWQ5YWViOTdjMWEyMzM5ID0gJChgPGRpdiBpZD0iaHRtbF81N2QwYTdhNWIzZGQ0NzI4YmVkOWFlYjk3YzFhMjMzOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VGhlIFNwaXR6PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzdjMTRiNWIyNzRjNjRiNWM5NzdiZjI4MWNkMGY2MTMxLnNldENvbnRlbnQoaHRtbF81N2QwYTdhNWIzZGQ0NzI4YmVkOWFlYjk3YzFhMjMzOSk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9iZjA2N2Y1N2NiNmI0ZWYzYWEyZTU1MjRjNDllMzZlYi5iaW5kUG9wdXAocG9wdXBfN2MxNGI1YjI3NGM2NGI1Yzk3N2JmMjgxY2QwZjYxMzEpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfY2YyZjRkNGU3MjA1NDI2YWIxMmE2MTVkM2MxYzVkMDEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1My44MDMxLCAtMS41NDIyMl0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfZWMwZmQwOGQ3MTk3NDY3OGJmYWJhYmIxOTkxY2UyMTAgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzNiMzQ2YjlkZjYxNzQ3MzViYzQyOWQ5ZTFlNDNkYTRiID0gJChgPGRpdiBpZD0iaHRtbF8zYjM0NmI5ZGY2MTc0NzM1YmM0MjlkOWUxZTQzZGE0YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Rmlyc3QgRGlyZWN0IEFyZW5hPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2VjMGZkMDhkNzE5NzQ2NzhiZmFiYWJiMTk5MWNlMjEwLnNldENvbnRlbnQoaHRtbF8zYjM0NmI5ZGY2MTc0NzM1YmM0MjlkOWUxZTQzZGE0Yik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9jZjJmNGQ0ZTcyMDU0MjZhYjEyYTYxNWQzYzFjNWQwMS5iaW5kUG9wdXAocG9wdXBfZWMwZmQwOGQ3MTk3NDY3OGJmYWJhYmIxOTkxY2UyMTApCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMTU5YTVhNTYxZTUxNDM5Mzk2YmY5OWQ3OWNkYzU5ODQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1My44MDMxLCAtMS41NDIyMl0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfY2JhZDA3M2JlNmRhNDYyNzk2MGUwYjdmYjAyNWFkZjggPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzQwYjZiZmJjOGRiNzQwOTViMjAwNzM5YjZkODYxOWQ0ID0gJChgPGRpdiBpZD0iaHRtbF80MGI2YmZiYzhkYjc0MDk1YjIwMDczOWI2ZDg2MTlkNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Rmlyc3QgRGlyZWN0IEFyZW5hPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2NiYWQwNzNiZTZkYTQ2Mjc5NjBlMGI3ZmIwMjVhZGY4LnNldENvbnRlbnQoaHRtbF80MGI2YmZiYzhkYjc0MDk1YjIwMDczOWI2ZDg2MTlkNCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8xNTlhNWE1NjFlNTE0MzkzOTZiZjk5ZDc5Y2RjNTk4NC5iaW5kUG9wdXAocG9wdXBfY2JhZDA3M2JlNmRhNDYyNzk2MGUwYjdmYjAyNWFkZjgpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfOTA4Nzc5N2Y1ODIyNGYyNmI2NjYyMzBiZTAyMTg0MTUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1My41NDMsIC0wLjAwNl0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfYmI2YmFjYzU2Y2QzNDMyM2EwNDY2MTA4M2NkNDI2NmIgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzNjMGQ3MTJlZDliZjQwZjk4NmVhNWQ3NDRjOWU4MDYxID0gJChgPGRpdiBpZD0iaHRtbF8zYzBkNzEyZWQ5YmY0MGY5ODZlYTVkNzQ0YzllODA2MSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TWVyaWRpYW4gUGFyayAoQ2xlZXRob3JwZXMpPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2JiNmJhY2M1NmNkMzQzMjNhMDQ2NjEwODNjZDQyNjZiLnNldENvbnRlbnQoaHRtbF8zYzBkNzEyZWQ5YmY0MGY5ODZlYTVkNzQ0YzllODA2MSk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl85MDg3Nzk3ZjU4MjI0ZjI2YjY2NjIzMGJlMDIxODQxNS5iaW5kUG9wdXAocG9wdXBfYmI2YmFjYzU2Y2QzNDMyM2EwNDY2MTA4M2NkNDI2NmIpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfNjMxNWY3MjA1NGQ2NDdhOGFjN2Q3ZjA0NDM3MmIyMGIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1My40NzcsIC0yLjIzMV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfZGY5YTIzMmM2OThhNDQzY2I2M2RiMjUyYTkyMTI0NGUgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2NlNjczODI5MDgyMTRkNzc4YzU5ZTZmNTc0YTIzYjA2ID0gJChgPGRpdiBpZD0iaHRtbF9jZTY3MzgyOTA4MjE0ZDc3OGM1OWU2ZjU3NGEyM2IwNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VGhlIFdhcmVob3VzZSBQcm9qZWN0PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2RmOWEyMzJjNjk4YTQ0M2NiNjNkYjI1MmE5MjEyNDRlLnNldENvbnRlbnQoaHRtbF9jZTY3MzgyOTA4MjE0ZDc3OGM1OWU2ZjU3NGEyM2IwNik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl82MzE1ZjcyMDU0ZDY0N2E4YWM3ZDdmMDQ0MzcyYjIwYi5iaW5kUG9wdXAocG9wdXBfZGY5YTIzMmM2OThhNDQzY2I2M2RiMjUyYTkyMTI0NGUpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMmYwOTY0YmI1MmIyNDFmNWI3MWI4MjcyYzhmMDZkODAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1Mi40MzQ2LCAtMS44OTM1NV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfOGQ4MTE2YTA1OWQyNGNmOThkYjEwMmI4MmE4NjFlYjcgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzZiMDk2MTMxYjNmNDRjMWU5MTdlZjRjMGQwMTMwMzUxID0gJChgPGRpdiBpZD0iaHRtbF82YjA5NjEzMWIzZjQ0YzFlOTE3ZWY0YzBkMDEzMDM1MSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Uml0eiBCYWxscm9vbSwgS2luZ3MgSGVhdGg8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfOGQ4MTE2YTA1OWQyNGNmOThkYjEwMmI4MmE4NjFlYjcuc2V0Q29udGVudChodG1sXzZiMDk2MTMxYjNmNDRjMWU5MTdlZjRjMGQwMTMwMzUxKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzJmMDk2NGJiNTJiMjQxZjViNzFiODI3MmM4ZjA2ZDgwLmJpbmRQb3B1cChwb3B1cF84ZDgxMTZhMDU5ZDI0Y2Y5OGRiMTAyYjgyYTg2MWViNykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl80YzJiMmY2ZGI4ZjQ0ZGMxOThiMjBjMWEwZTEwYzY1MCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjUxMjEsIC0wLjEzODYxMV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfOTk0MmMzZjkwNmExNGFmMGE1NWEzNTBhMjMzOWU1NDAgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzg4NjY5ZjI0N2ZhYzQ0NjVhNzJiMTZkZjAwZTdhOGVmID0gJChgPGRpdiBpZD0iaHRtbF84ODY2OWYyNDdmYWM0NDY1YTcyYjE2ZGYwMGU3YThlZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VGhlIENhdCdzIFdoaXNrZXI8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfOTk0MmMzZjkwNmExNGFmMGE1NWEzNTBhMjMzOWU1NDAuc2V0Q29udGVudChodG1sXzg4NjY5ZjI0N2ZhYzQ0NjVhNzJiMTZkZjAwZTdhOGVmKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzRjMmIyZjZkYjhmNDRkYzE5OGIyMGMxYTBlMTBjNjUwLmJpbmRQb3B1cChwb3B1cF85OTQyYzNmOTA2YTE0YWYwYTU1YTM1MGEyMzM5ZTU0MCkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl80MzllNmVkZDQwMWE0ZjE0ODBkMmZkYjc2OTQ3ZGZmYyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjU1MTIsIC0wLjExMDQ2Ml0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfODVhNDlmNjI1NGM2NGYxNWJiOTI0ZWE2ZjQzMzM4ZjUgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2E4NjJjNDYxZTdjMDQ0MDY4MzY1ZTJmZjVlY2QzMTVkID0gJChgPGRpdiBpZD0iaHRtbF9hODYyYzQ2MWU3YzA0NDA2ODM2NWUyZmY1ZWNkMzE1ZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+MTIgQmFyIENsdWI8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfODVhNDlmNjI1NGM2NGYxNWJiOTI0ZWE2ZjQzMzM4ZjUuc2V0Q29udGVudChodG1sX2E4NjJjNDYxZTdjMDQ0MDY4MzY1ZTJmZjVlY2QzMTVkKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzQzOWU2ZWRkNDAxYTRmMTQ4MGQyZmRiNzY5NDdkZmZjLmJpbmRQb3B1cChwb3B1cF84NWE0OWY2MjU0YzY0ZjE1YmI5MjRlYTZmNDMzMzhmNSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl8xM2E3ODM5ZmMxMjY0N2M5OGRiN2Y2Yzg0NjY0Zjg2MSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjUxNTksIC0wLjEzMDgyNV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfNTQ5Y2MwYTk1MjlkNGNjOWFkODQ2OGMwNmE5NTIwZGUgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzRhNzdhOWIxZTEwNzQwZjdhZTJlMmJjOTIwNDIzOTE4ID0gJChgPGRpdiBpZD0iaHRtbF80YTc3YTliMWUxMDc0MGY3YWUyZTJiYzkyMDQyMzkxOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QXN0b3JpYSAyPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzU0OWNjMGE5NTI5ZDRjYzlhZDg0NjhjMDZhOTUyMGRlLnNldENvbnRlbnQoaHRtbF80YTc3YTliMWUxMDc0MGY3YWUyZTJiYzkyMDQyMzkxOCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8xM2E3ODM5ZmMxMjY0N2M5OGRiN2Y2Yzg0NjY0Zjg2MS5iaW5kUG9wdXAocG9wdXBfNTQ5Y2MwYTk1MjlkNGNjOWFkODQ2OGMwNmE5NTIwZGUpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfY2ExZDM3MTI5M2MwNGZkZjhjOWM3YmMyZTFiOWE4MjAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1My41OTA1LCAtMC42NTldLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzM4MTVmMjZlZDNhNTQ4MTViODQxYmNhNjM2NDdiMDUwID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8zMTM1MTY3Y2FhZjg0NmEzOGZkMDcyMWI5ZmUwZTk1MyA9ICQoYDxkaXYgaWQ9Imh0bWxfMzEzNTE2N2NhYWY4NDZhMzhmZDA3MjFiOWZlMGU5NTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJhdGhzIEhhbGw8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfMzgxNWYyNmVkM2E1NDgxNWI4NDFiY2E2MzY0N2IwNTAuc2V0Q29udGVudChodG1sXzMxMzUxNjdjYWFmODQ2YTM4ZmQwNzIxYjlmZTBlOTUzKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2NhMWQzNzEyOTNjMDRmZGY4YzljN2JjMmUxYjlhODIwLmJpbmRQb3B1cChwb3B1cF8zODE1ZjI2ZWQzYTU0ODE1Yjg0MWJjYTYzNjQ3YjA1MCkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl81YzJhMGYwNzkxYWM0OGU5OWUyY2Q5NDYzMjE5YmQzYyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUwLjgyMTEsIC0wLjE0NjExMV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfOGNkNTdlMjQyMjQ1NDcyNzg4ZGU3MGQ2NWRmNTM4MDkgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzU3NjRjN2YxZTk4ZDQwNmY4YTUwNmE1NjAyNWFhMDQ5ID0gJChgPGRpdiBpZD0iaHRtbF81NzY0YzdmMWU5OGQ0MDZmOGE1MDZhNTYwMjVhYTA0OSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QnJpZ2h0b24gQ2VudHJlPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzhjZDU3ZTI0MjI0NTQ3Mjc4OGRlNzBkNjVkZjUzODA5LnNldENvbnRlbnQoaHRtbF81NzY0YzdmMWU5OGQ0MDZmOGE1MDZhNTYwMjVhYTA0OSk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl81YzJhMGYwNzkxYWM0OGU5OWUyY2Q5NDYzMjE5YmQzYy5iaW5kUG9wdXAocG9wdXBfOGNkNTdlMjQyMjQ1NDcyNzg4ZGU3MGQ2NWRmNTM4MDkpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfOTAzZmMyZTVjYmUyNDUzYTlkNzdkYzVhOWFlYjg1MGMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41NDEzLCAtMC4xNDU4XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9kMzUzOTQ0YjE1YTI0MjMwOTk1YmQwMWI1Y2FlMWZjMiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfOTY0M2I3YzRmNjc3NGE2NzhhNDhkOTFhZGViZjRjNDkgPSAkKGA8ZGl2IGlkPSJodG1sXzk2NDNiN2M0ZjY3NzRhNjc4YTQ4ZDkxYWRlYmY0YzQ5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EaW5nd2FsbHM8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfZDM1Mzk0NGIxNWEyNDIzMDk5NWJkMDFiNWNhZTFmYzIuc2V0Q29udGVudChodG1sXzk2NDNiN2M0ZjY3NzRhNjc4YTQ4ZDkxYWRlYmY0YzQ5KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzkwM2ZjMmU1Y2JlMjQ1M2E5ZDc3ZGM1YTlhZWI4NTBjLmJpbmRQb3B1cChwb3B1cF9kMzUzOTQ0YjE1YTI0MjMwOTk1YmQwMWI1Y2FlMWZjMikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl9jMjliZDQ0ZTczNDk0MWQ3ODkxMGM5ODlkYzNkYjkwYyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUwLjkwNSwgLTEuMzk2MTFdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2FlMjNiNGU5YjgxMTQxNDE5MDQwM2RjOGUzNzY4ODkzID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF83YzI1NjFkMzBmNDE0ZDAyOWUyOGY3MGJmMjJhZTJkZSA9ICQoYDxkaXYgaWQ9Imh0bWxfN2MyNTYxZDMwZjQxNGQwMjllMjhmNzBiZjIyYWUyZGUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkpvaW5lcnMgQXJtczwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9hZTIzYjRlOWI4MTE0MTQxOTA0MDNkYzhlMzc2ODg5My5zZXRDb250ZW50KGh0bWxfN2MyNTYxZDMwZjQxNGQwMjllMjhmNzBiZjIyYWUyZGUpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfYzI5YmQ0NGU3MzQ5NDFkNzg5MTBjOTg5ZGMzZGI5MGMuYmluZFBvcHVwKHBvcHVwX2FlMjNiNGU5YjgxMTQxNDE5MDQwM2RjOGUzNzY4ODkzKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzhjMWU2YzM1OTVkMzQ2NmViZGEwZTFkYjQ1OWU2NWIzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuOTU1NiwgLTEuMTUxMzldLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzhkNTUzNGE2NmI3ZDRhNjY5MTM0N2ZmM2ZkODQwOGMwID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF84ZTEyZWNlZjY2NjA0ZGE4OGYwNDA3NGE2MDg2MzlkMiA9ICQoYDxkaXYgaWQ9Imh0bWxfOGUxMmVjZWY2NjYwNGRhODhmMDQwNzRhNjA4NjM5ZDIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5vdHRpbmdoYW0gUm95YWwgQ29uY2VydCBIYWxsPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzhkNTUzNGE2NmI3ZDRhNjY5MTM0N2ZmM2ZkODQwOGMwLnNldENvbnRlbnQoaHRtbF84ZTEyZWNlZjY2NjA0ZGE4OGYwNDA3NGE2MDg2MzlkMik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl84YzFlNmMzNTk1ZDM0NjZlYmRhMGUxZGI0NTllNjViMy5iaW5kUG9wdXAocG9wdXBfOGQ1NTM0YTY2YjdkNGE2NjkxMzQ3ZmYzZmQ4NDA4YzApCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfY2E2ZTFjN2RmZTFmNDA0Njk5NGZiODVjNWM4NzVjZDQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40NTQyLCAtMi42MDA0XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9mNGM1ZTUyOTQ0ZmI0YTNjOTFjYmI5YjlkYzcwOTg2NyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfODdhMzhkZTlhYTM1NGE3ZGFlNzZlNDdkMDM3NjQ1NWUgPSAkKGA8ZGl2IGlkPSJodG1sXzg3YTM4ZGU5YWEzNTRhN2RhZTc2ZTQ3ZDAzNzY0NTVlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PMiBBY2FkZW15IEJyaXN0b2w8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfZjRjNWU1Mjk0NGZiNGEzYzkxY2JiOWI5ZGM3MDk4Njcuc2V0Q29udGVudChodG1sXzg3YTM4ZGU5YWEzNTRhN2RhZTc2ZTQ3ZDAzNzY0NTVlKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2NhNmUxYzdkZmUxZjQwNDY5OTRmYjg1YzVjODc1Y2Q0LmJpbmRQb3B1cChwb3B1cF9mNGM1ZTUyOTQ0ZmI0YTNjOTFjYmI5YjlkYzcwOTg2NykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl80MWMzNjY5NWI2NDM0ODViODdkZGNjZWZkNzMxZTgwNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUyLjQwNzQsIC0xLjUxODY4XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9hZTJlNjlkZWQ0MzY0Y2JiYTgzMThjNjQ0MGI5NjJlYSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNDhjNGZmYWFlYTEwNDMwZDliZTlhM2VmZDM0YzQxYWQgPSAkKGA8ZGl2IGlkPSJodG1sXzQ4YzRmZmFhZWExMDQzMGQ5YmU5YTNlZmQzNGM0MWFkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Ta3lEb21lIEFyZW5hPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2FlMmU2OWRlZDQzNjRjYmJhODMxOGM2NDQwYjk2MmVhLnNldENvbnRlbnQoaHRtbF80OGM0ZmZhYWVhMTA0MzBkOWJlOWEzZWZkMzRjNDFhZCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl80MWMzNjY5NWI2NDM0ODViODdkZGNjZWZkNzMxZTgwNS5iaW5kUG9wdXAocG9wdXBfYWUyZTY5ZGVkNDM2NGNiYmE4MzE4YzY0NDBiOTYyZWEpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfNjYzNTNhMDJmNDgxNDQ3YmJiYjA4YmVmZjRkYWFmYTkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41Mzg5LCAtMC4xNDMzMzNdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2Y0ZWRmNmZiZDg5ZTQ1M2VhM2VkMDA4MDNhZmZiZmMwID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9mYTNmZTBmZWZhMGY0MTJkOTQ1Y2U4OTQ4MzBjMTFlMCA9ICQoYDxkaXYgaWQ9Imh0bWxfZmEzZmUwZmVmYTBmNDEyZDk0NWNlODk0ODMwYzExZTAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRoZSBKYXp6IENhZsOpPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2Y0ZWRmNmZiZDg5ZTQ1M2VhM2VkMDA4MDNhZmZiZmMwLnNldENvbnRlbnQoaHRtbF9mYTNmZTBmZWZhMGY0MTJkOTQ1Y2U4OTQ4MzBjMTFlMCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl82NjM1M2EwMmY0ODE0NDdiYmJiMDhiZWZmNGRhYWZhOS5iaW5kUG9wdXAocG9wdXBfZjRlZGY2ZmJkODllNDUzZWEzZWQwMDgwM2FmZmJmYzApCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfZGZlNTJlMDlhNTI4NDU0Y2FmMjZiOTkyM2QwMDA5MzcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40NDUsIDAuMjA1NTU2XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF84NTMwMDQxMzIwNWY0YTU1OTcxZDBhYTEzMWU2MjM2YSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfYTdhM2Q3MWEzOTQ5NDk5ZGE3OWNhMjllYjk3NTU5NDEgPSAkKGA8ZGl2IGlkPSJodG1sX2E3YTNkNzFhMzk0OTQ5OWRhNzljYTI5ZWI5NzU1OTQxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5UaGUgTWljayBKYWdnZXIgQ2VudHJlPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzg1MzAwNDEzMjA1ZjRhNTU5NzFkMGFhMTMxZTYyMzZhLnNldENvbnRlbnQoaHRtbF9hN2EzZDcxYTM5NDk0OTlkYTc5Y2EyOWViOTc1NTk0MSk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9kZmU1MmUwOWE1Mjg0NTRjYWYyNmI5OTIzZDAwMDkzNy5iaW5kUG9wdXAocG9wdXBfODUzMDA0MTMyMDVmNGE1NTk3MWQwYWExMzFlNjIzNmEpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfODMxMzhkMDJmYWYxNGM2YzgzZGFiZTk2NDllOTk0OGMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1My4wMjUsIC0yLjE3ODMzXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8yOThhYzAwNzFlZmE0MjlhOTRiOGQyOGNjNTc5MTRlZiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfZjYyZmM0OGU4YzVkNGYxNWEyMTVmODdjN2YyYmNmODcgPSAkKGA8ZGl2IGlkPSJodG1sX2Y2MmZjNDhlOGM1ZDRmMTVhMjE1Zjg3YzdmMmJjZjg3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5UaGUgU3VnYXJtaWxsPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzI5OGFjMDA3MWVmYTQyOWE5NGI4ZDI4Y2M1NzkxNGVmLnNldENvbnRlbnQoaHRtbF9mNjJmYzQ4ZThjNWQ0ZjE1YTIxNWY4N2M3ZjJiY2Y4Nyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl84MzEzOGQwMmZhZjE0YzZjODNkYWJlOTY0OWU5OTQ4Yy5iaW5kUG9wdXAocG9wdXBfMjk4YWMwMDcxZWZhNDI5YTk0YjhkMjhjYzU3OTE0ZWYpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMmVjMzBlYzBiZjY3NGFjNjkyNjZlZWE5NGExNmEyMzcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40NTE1LCAtMi41OTgwMl0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfOGIxMDlhOTU2YTFmNDUxNThhYmU3ZjZlNWQ3Mzk0YjQgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2YyODMxMzExZGUzMjQwYmI4NzE4OTBhYTM4NjY1ZmY3ID0gJChgPGRpdiBpZD0iaHRtbF9mMjgzMTMxMWRlMzI0MGJiODcxODkwYWEzODY2NWZmNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V2F0ZXJzaGVkIChCcmlzdG9sKTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF84YjEwOWE5NTZhMWY0NTE1OGFiZTdmNmU1ZDczOTRiNC5zZXRDb250ZW50KGh0bWxfZjI4MzEzMTFkZTMyNDBiYjg3MTg5MGFhMzg2NjVmZjcpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfMmVjMzBlYzBiZjY3NGFjNjkyNjZlZWE5NGExNmEyMzcuYmluZFBvcHVwKHBvcHVwXzhiMTA5YTk1NmExZjQ1MTU4YWJlN2Y2ZTVkNzM5NGI0KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzNiNmExMDU4MWQzZDQyYzU5MTQ2ZWQ2MDJlNjBkYWQ4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTAuODI0MiwgLTAuMTQ1MV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfM2RjY2I5ZjAzODk1NDQxZmE5YmI5MjdhNmY4ZGQ3Y2UgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzk1YjllNjVkOTlkNDQ4ZDc5YjlmNTljYWUzMjhhODgxID0gJChgPGRpdiBpZD0iaHRtbF85NWI5ZTY1ZDk5ZDQ0OGQ3OWI5ZjU5Y2FlMzI4YTg4MSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+MTEgRHlrZSBSb2FkLCBCcmlnaHRvbjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8zZGNjYjlmMDM4OTU0NDFmYTliYjkyN2E2ZjhkZDdjZS5zZXRDb250ZW50KGh0bWxfOTViOWU2NWQ5OWQ0NDhkNzliOWY1OWNhZTMyOGE4ODEpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfM2I2YTEwNTgxZDNkNDJjNTkxNDZlZDYwMmU2MGRhZDguYmluZFBvcHVwKHBvcHVwXzNkY2NiOWYwMzg5NTQ0MWZhOWJiOTI3YTZmOGRkN2NlKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzZhYjgxNmM2Mzg5MDRiMjViNmFiNWFjYjIwNzBmNGUzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTAuNzE2NywgLTEuODc4MDZdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzJjMTY0MTRkNDcyMjRmZTdhNDkxMTlmMzRhNmQ3NmVhID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8xM2QxNzFlY2Y0NTU0MjU5OGMwYTc1NmE2NmQ4MzllMSA9ICQoYDxkaXYgaWQ9Imh0bWxfMTNkMTcxZWNmNDU1NDI1OThjMGE3NTZhNjZkODM5ZTEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJvdXJuZW1vdXRoIEludGVybmF0aW9uYWwgQ2VudHJlPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzJjMTY0MTRkNDcyMjRmZTdhNDkxMTlmMzRhNmQ3NmVhLnNldENvbnRlbnQoaHRtbF8xM2QxNzFlY2Y0NTU0MjU5OGMwYTc1NmE2NmQ4MzllMSk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl82YWI4MTZjNjM4OTA0YjI1YjZhYjVhY2IyMDcwZjRlMy5iaW5kUG9wdXAocG9wdXBfMmMxNjQxNGQ0NzIyNGZlN2E0OTExOWYzNGE2ZDc2ZWEpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMWM5MDhlNTE1NTQ5NGExYzkzZGRjNTVmNDc4ZWQ0NGMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41MTU5LCAtMC4xMjAxXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF81OGJlYTczZmFlZGE0Yzc4OTZlNWU0MDQxMzM2NTcwOSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfZTY1ODQyZmE4NTBhNGE3NDhhNWQwN2I0MDMzYmU0ZGEgPSAkKGA8ZGl2IGlkPSJodG1sX2U2NTg0MmZhODUwYTRhNzQ4YTVkMDdiNDAzM2JlNGRhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5LaW5nc3dheSBIYWxsPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzU4YmVhNzNmYWVkYTRjNzg5NmU1ZTQwNDEzMzY1NzA5LnNldENvbnRlbnQoaHRtbF9lNjU4NDJmYTg1MGE0YTc0OGE1ZDA3YjQwMzNiZTRkYSk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8xYzkwOGU1MTU1NDk0YTFjOTNkZGM1NWY0NzhlZDQ0Yy5iaW5kUG9wdXAocG9wdXBfNThiZWE3M2ZhZWRhNGM3ODk2ZTVlNDA0MTMzNjU3MDkpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfNDY2Y2RiMDIwMGVlNGMxMWI2ZDViODZmZDA5MzFkZjQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41NjIxLCAtMC4xMDgwMjNdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzJhOGU3MjIzN2MwZTQzMDRhMjU4OWVmY2M4ZmJiOTczID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF84NzBhNWQyMWVhMWE0YTVjODczZTFiMGVhMTBiNGM1NiA9ICQoYDxkaXYgaWQ9Imh0bWxfODcwYTVkMjFlYTFhNGE1Yzg3M2UxYjBlYTEwYjRjNTYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJhaW5ib3cgVGhlYXRyZTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8yYThlNzIyMzdjMGU0MzA0YTI1ODllZmNjOGZiYjk3My5zZXRDb250ZW50KGh0bWxfODcwYTVkMjFlYTFhNGE1Yzg3M2UxYjBlYTEwYjRjNTYpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfNDY2Y2RiMDIwMGVlNGMxMWI2ZDViODZmZDA5MzFkZjQuYmluZFBvcHVwKHBvcHVwXzJhOGU3MjIzN2MwZTQzMDRhMjU4OWVmY2M4ZmJiOTczKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2QxOGYyNmMwZTk4ODQzYjJiYWE1MjI3ZDI3ZDZhNjAzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTAuMzU0MiwgLTQuNjQxXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF81ZWQ3MGNmZDA2Yjk0NmZiYTVlNzNhNjY3MmU0ZjZlNSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfYjcwOWYxNDYwZGViNDA4NGE5YzE3NmIzNDRkZjlkNjMgPSAkKGA8ZGl2IGlkPSJodG1sX2I3MDlmMTQ2MGRlYjQwODRhOWMxNzZiMzQ0ZGY5ZDYzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TYXdtaWxscyBTdHVkaW9zPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzVlZDcwY2ZkMDZiOTQ2ZmJhNWU3M2E2NjcyZTRmNmU1LnNldENvbnRlbnQoaHRtbF9iNzA5ZjE0NjBkZWI0MDg0YTljMTc2YjM0NGRmOWQ2Myk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9kMThmMjZjMGU5ODg0M2IyYmFhNTIyN2QyN2Q2YTYwMy5iaW5kUG9wdXAocG9wdXBfNWVkNzBjZmQwNmI5NDZmYmE1ZTczYTY2NzJlNGY2ZTUpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfNmUwZDlmMDhiMmYxNDA5NjlmYTljYjU0OTNhMjI5YjEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1My43NjIyLCAtMC4zNTUyNzhdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2I0ZWEzMTJmNmY5NTQ4NzBiMTllZTE4M2FjZjkzZmQ4ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF81YTYzMzg2YjdlMTU0MmEyODQwMmZlYTFiY2E5NWRiYSA9ICQoYDxkaXYgaWQ9Imh0bWxfNWE2MzM4NmI3ZTE1NDJhMjg0MDJmZWExYmNhOTVkYmEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRoZSBOZXcgQWRlbHBoaSBDbHViPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2I0ZWEzMTJmNmY5NTQ4NzBiMTllZTE4M2FjZjkzZmQ4LnNldENvbnRlbnQoaHRtbF81YTYzMzg2YjdlMTU0MmEyODQwMmZlYTFiY2E5NWRiYSk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl82ZTBkOWYwOGIyZjE0MDk2OWZhOWNiNTQ5M2EyMjliMS5iaW5kUG9wdXAocG9wdXBfYjRlYTMxMmY2Zjk1NDg3MGIxOWVlMTgzYWNmOTNmZDgpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfNmYwYzUwYTdlZDU3NDk4NjlkNWJkNGExNjRjNGM5ZDkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1My4yNTg2LCAtMS45MTU3XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF84OTUwNWMzMjA2ZGE0YjU4YWQ3ZDk1YTg1MWNkNDQ1OSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNjc2MzMwNjI4ZTc0NDM0Yjk1YjliNzk0OGJhMjI4ZTcgPSAkKGA8ZGl2IGlkPSJodG1sXzY3NjMzMDYyOGU3NDQzNGI5NWI5Yjc5NDhiYTIyOGU3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CdXh0b24gT3BlcmEgSG91c2U8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfODk1MDVjMzIwNmRhNGI1OGFkN2Q5NWE4NTFjZDQ0NTkuc2V0Q29udGVudChodG1sXzY3NjMzMDYyOGU3NDQzNGI5NWI5Yjc5NDhiYTIyOGU3KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzZmMGM1MGE3ZWQ1NzQ5ODY5ZDViZDRhMTY0YzRjOWQ5LmJpbmRQb3B1cChwb3B1cF84OTUwNWMzMjA2ZGE0YjU4YWQ3ZDk1YTg1MWNkNDQ1OSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl85M2U0ZjJiZDFlOGM0ODg3OGRiMzYwYjk4MTEzN2YyYyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjUxNTksIC0wLjEzMDddLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2MyMzJiY2JhOWYzMDQ2OGE5NDBiY2RmODg0OWEyNjVhID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF82OWRkYzBhZDBhNjM0NWU3YTc0YjVjM2Y0YzM2OTU3ZiA9ICQoYDxkaXYgaWQ9Imh0bWxfNjlkZGMwYWQwYTYzNDVlN2E3NGI1YzNmNGMzNjk1N2YiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkctQS1ZPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2MyMzJiY2JhOWYzMDQ2OGE5NDBiY2RmODg0OWEyNjVhLnNldENvbnRlbnQoaHRtbF82OWRkYzBhZDBhNjM0NWU3YTc0YjVjM2Y0YzM2OTU3Zik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl85M2U0ZjJiZDFlOGM0ODg3OGRiMzYwYjk4MTEzN2YyYy5iaW5kUG9wdXAocG9wdXBfYzIzMmJjYmE5ZjMwNDY4YTk0MGJjZGY4ODQ5YTI2NWEpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfZGQ0NzcxMjkwZGIwNGI2NmJkZGNkNDhjZmZkNmI5NjUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS4yNDg0LCAtMC41NjI4OF0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfNzhkODgwNGIwMDRiNGViOWI1NzE4MWQyZGE4MWYzNzUgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzgyZGNkNzcwMTM2MzRmNmQ5ZDBmYjAyYmU3YjFjMjE0ID0gJChgPGRpdiBpZD0iaHRtbF84MmRjZDc3MDEzNjM0ZjZkOWQwZmIwMmJlN2IxYzIxNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+R3VpbGRmb3JkIFNwZWN0cnVtPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzc4ZDg4MDRiMDA0YjRlYjliNTcxODFkMmRhODFmMzc1LnNldENvbnRlbnQoaHRtbF84MmRjZDc3MDEzNjM0ZjZkOWQwZmIwMmJlN2IxYzIxNCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9kZDQ3NzEyOTBkYjA0YjY2YmRkY2Q0OGNmZmQ2Yjk2NS5iaW5kUG9wdXAocG9wdXBfNzhkODgwNGIwMDRiNGViOWI1NzE4MWQyZGE4MWYzNzUpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfZWEyZTBhNTU0YTc1NDc5MGI0NmNkZjk3ZGQxMWZlNmQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS43NTUyLCAtMS4yNTMyXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF80ZjIzMmUxZDdhOWI0YmRiOWQwNDQyMTAwYzExNWNjMiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfN2I2MzVkZDMzYjE4NGU5MzgxNDRkNjQ0NjFkYTc1NWQgPSAkKGA8ZGl2IGlkPSJodG1sXzdiNjM1ZGQzM2IxODRlOTM4MTQ0ZDY0NDYxZGE3NTVkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Ib2x5d2VsbCBNdXNpYyBSb29tPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzRmMjMyZTFkN2E5YjRiZGI5ZDA0NDIxMDBjMTE1Y2MyLnNldENvbnRlbnQoaHRtbF83YjYzNWRkMzNiMTg0ZTkzODE0NGQ2NDQ2MWRhNzU1ZCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9lYTJlMGE1NTRhNzU0NzkwYjQ2Y2RmOTdkZDExZmU2ZC5iaW5kUG9wdXAocG9wdXBfNGYyMzJlMWQ3YTliNGJkYjlkMDQ0MjEwMGMxMTVjYzIpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMWE4MWQwOTYxYTVhNGQwNGEyZmVjMzc5MjE2MTNiM2QgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40OTY3LCAtMC4wMTQ4NF0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfZjI3N2U4YTUwNzdkNDU4OTk4MzkxZGE1ZjgxZjhhYjIgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2RiZjJjN2JlZWQ0NTRiMTc4ZGYxMWY5NWU1MTU4MTVlID0gJChgPGRpdiBpZD0iaHRtbF9kYmYyYzdiZWVkNDU0YjE3OGRmMTFmOTVlNTE1ODE1ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TG9uZG9uIEFyZW5hPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2YyNzdlOGE1MDc3ZDQ1ODk5ODM5MWRhNWY4MWY4YWIyLnNldENvbnRlbnQoaHRtbF9kYmYyYzdiZWVkNDU0YjE3OGRmMTFmOTVlNTE1ODE1ZSk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8xYTgxZDA5NjFhNWE0ZDA0YTJmZWMzNzkyMTYxM2IzZC5iaW5kUG9wdXAocG9wdXBfZjI3N2U4YTUwNzdkNDU4OTk4MzkxZGE1ZjgxZjhhYjIpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfNTMzNGI1Njk5MTNhNDkxYTkxNzZhM2FlOGQ5NmJmYjcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS43NDcxLCAtMS4yMzUyXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF83YWFjYjZkODEwM2U0ZjhlYjcxNjNlNDA0Mzc3ZmVjOSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfMmU1YjBhMjk2N2Q0NDM2OWEzOGE0MzE4ZGUwMGVkOGQgPSAkKGA8ZGl2IGlkPSJodG1sXzJlNWIwYTI5NjdkNDQzNjlhMzhhNDMxOGRlMDBlZDhkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PMiBBY2FkZW15IE94Zm9yZDwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF83YWFjYjZkODEwM2U0ZjhlYjcxNjNlNDA0Mzc3ZmVjOS5zZXRDb250ZW50KGh0bWxfMmU1YjBhMjk2N2Q0NDM2OWEzOGE0MzE4ZGUwMGVkOGQpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfNTMzNGI1Njk5MTNhNDkxYTkxNzZhM2FlOGQ5NmJmYjcuYmluZFBvcHVwKHBvcHVwXzdhYWNiNmQ4MTAzZTRmOGViNzE2M2U0MDQzNzdmZWM5KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2QzNmMyZjViYmNkMTQyZTBhNjhjNjY3Y2U3Nzk3ZTc0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTMuNDY5NiwgLTIuMjIyMjJdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzA3ZmNlNDcwMGJiYTRjOWM5OTI5MTM1OGVhZDhlYTE1ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9kNTkwODY1MWNlM2M0YzFhODFmNGE1ZmQ5OWE2ZjEyMCA9ICQoYDxkaXYgaWQ9Imh0bWxfZDU5MDg2NTFjZTNjNGMxYTgxZjRhNWZkOTlhNmYxMjAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk8yIEFwb2xsbyBNYW5jaGVzdGVyPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzA3ZmNlNDcwMGJiYTRjOWM5OTI5MTM1OGVhZDhlYTE1LnNldENvbnRlbnQoaHRtbF9kNTkwODY1MWNlM2M0YzFhODFmNGE1ZmQ5OWE2ZjEyMCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9kMzZjMmY1YmJjZDE0MmUwYTY4YzY2N2NlNzc5N2U3NC5iaW5kUG9wdXAocG9wdXBfMDdmY2U0NzAwYmJhNGM5Yzk5MjkxMzU4ZWFkOGVhMTUpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfOTIzNWE1NDI3NmM4NDY1MjkyYjllYTExZTJhMzY2NTIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41MDY3LCAtMC4xMTYzNjFdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2Y1MDhhYWIzMzkwNjRjYTVhZDU4NzU2YTkxMjk1ZDJkID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8wOTcxYzFiNDc2MzQ0YWU5YTEyM2U0YmU4NjU0ZmUyYSA9ICQoYDxkaXYgaWQ9Imh0bWxfMDk3MWMxYjQ3NjM0NGFlOWExMjNlNGJlODY1NGZlMmEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlF1ZWVuIEVsaXphYmV0aCBIYWxsPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2Y1MDhhYWIzMzkwNjRjYTVhZDU4NzU2YTkxMjk1ZDJkLnNldENvbnRlbnQoaHRtbF8wOTcxYzFiNDc2MzQ0YWU5YTEyM2U0YmU4NjU0ZmUyYSk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl85MjM1YTU0Mjc2Yzg0NjUyOTJiOWVhMTFlMmEzNjY1Mi5iaW5kUG9wdXAocG9wdXBfZjUwOGFhYjMzOTA2NGNhNWFkNTg3NTZhOTEyOTVkMmQpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfZWNhMTI3OWM5YWU0NDJkNDhkNjM2ZGFmZDY2YzNmNDEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40ODcyLCAtMC4xNTUyNzhdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzlmZTYyOTNkOWJlMjQ2YWI4N2EzODNlZjEyNjE3ZGQzID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF80Y2FiMmM5NDdkMTE0ZmRlOWE5ZDZlYjgyYjAzOThhYyA9ICQoYDxkaXYgaWQ9Imh0bWxfNGNhYjJjOTQ3ZDExNGZkZTlhOWQ2ZWI4MmIwMzk4YWMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJhbmVsYWdoIEdhcmRlbnM8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfOWZlNjI5M2Q5YmUyNDZhYjg3YTM4M2VmMTI2MTdkZDMuc2V0Q29udGVudChodG1sXzRjYWIyYzk0N2QxMTRmZGU5YTlkNmViODJiMDM5OGFjKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2VjYTEyNzljOWFlNDQyZDQ4ZDYzNmRhZmQ2NmMzZjQxLmJpbmRQb3B1cChwb3B1cF85ZmU2MjkzZDliZTI0NmFiODdhMzgzZWYxMjYxN2RkMykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl9hN2E1ZDdhMWRlOTI0OTk3YWUxY2NmMTQxN2VhOGVjZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQ0NSwgMC4zNTJdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2M1ZmQ4ZDI5ODViODRmZjk4MDhiZjkwMzBkMDA4Y2Y3ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9jMmIzYmY3YmNkMWY0YTE2OGVlZmI5ZGVkMWExZThiNSA9ICQoYDxkaXYgaWQ9Imh0bWxfYzJiM2JmN2JjZDFmNGExNjhlZWZiOWRlZDFhMWU4YjUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJvc2hlcnZpbGxlIEdhcmRlbnM8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfYzVmZDhkMjk4NWI4NGZmOTgwOGJmOTAzMGQwMDhjZjcuc2V0Q29udGVudChodG1sX2MyYjNiZjdiY2QxZjRhMTY4ZWVmYjlkZWQxYTFlOGI1KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2E3YTVkN2ExZGU5MjQ5OTdhZTFjY2YxNDE3ZWE4ZWNlLmJpbmRQb3B1cChwb3B1cF9jNWZkOGQyOTg1Yjg0ZmY5ODA4YmY5MDMwZDAwOGNmNykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl81MDZjOTdhOTMzN2U0ZGNhYjdjYmE2MzIwMjA1ZTEzNiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjUxOTEsIC0wLjA5Njk0Nl0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMTUwZTcwZjQ1YjdiNGQzMmEwY2VhNjZmMWQ1MTRlZTcgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzkwNGRmN2EwNTUwOTRlYjhiNzY3N2Y5M2FjZjMyYWViID0gJChgPGRpdiBpZD0iaHRtbF85MDRkZjdhMDU1MDk0ZWI4Yjc2NzdmOTNhY2YzMmFlYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UnV0bGFuZCBIb3VzZTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8xNTBlNzBmNDViN2I0ZDMyYTBjZWE2NmYxZDUxNGVlNy5zZXRDb250ZW50KGh0bWxfOTA0ZGY3YTA1NTA5NGViOGI3Njc3ZjkzYWNmMzJhZWIpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfNTA2Yzk3YTkzMzdlNGRjYWI3Y2JhNjMyMDIwNWUxMzYuYmluZFBvcHVwKHBvcHVwXzE1MGU3MGY0NWI3YjRkMzJhMGNlYTY2ZjFkNTE0ZWU3KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzIxMDkxZjg3YTA1ODQ5N2ZiYWM2NjUxYTIyMmFkMzJkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTAzNSwgLTAuMjI0MzNdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzIwYjMzNDBmYWViNDRiNDY5OWJjYTY4MGE2YjY3NGNjID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9lYWI4MDdiOTljM2U0YTM0ODE1YjU4MTdiOTdkYjdlMyA9ICQoYDxkaXYgaWQ9Imh0bWxfZWFiODA3Yjk5YzNlNGEzNDgxNWI1ODE3Yjk3ZGI3ZTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNoZXBoZXJkJ3MgQnVzaCBFbXBpcmU8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfMjBiMzM0MGZhZWI0NGI0Njk5YmNhNjgwYTZiNjc0Y2Muc2V0Q29udGVudChodG1sX2VhYjgwN2I5OWMzZTRhMzQ4MTViNTgxN2I5N2RiN2UzKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzIxMDkxZjg3YTA1ODQ5N2ZiYWM2NjUxYTIyMmFkMzJkLmJpbmRQb3B1cChwb3B1cF8yMGIzMzQwZmFlYjQ0YjQ2OTliY2E2ODBhNmI2NzRjYykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl84ZDYwY2UyYzA0OGY0MTZkOWNjNTc3Y2NkY2I5MDVjNyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjM3NjIsIC0xLjQ2NDldLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2QwZjQ2YTYxYWY5MjQ4YTRiYmNjZWJlNGQyZjE5OWMwID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9jMGMxNTBjODE3MDI0ZGY5OTkwYTM5NDlhMDllNTk3MSA9ICQoYDxkaXYgaWQ9Imh0bWxfYzBjMTUwYzgxNzAyNGRmOTk5MGEzOTQ5YTA5ZTU5NzEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRoZSBMZWFkbWlsbDwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9kMGY0NmE2MWFmOTI0OGE0YmJjY2ViZTRkMmYxOTljMC5zZXRDb250ZW50KGh0bWxfYzBjMTUwYzgxNzAyNGRmOTk5MGEzOTQ5YTA5ZTU5NzEpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfOGQ2MGNlMmMwNDhmNDE2ZDljYzU3N2NjZGNiOTA1YzcuYmluZFBvcHVwKHBvcHVwX2QwZjQ2YTYxYWY5MjQ4YTRiYmNjZWJlNGQyZjE5OWMwKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzg2NTVhMWY3YjU2MzQ1ZGI5ZTMzZDM3OTk5ZTY3ZWUwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTMuNzk2LCAtMS41NjRdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzI4ODBhYWQ1OWMwMTQ0MTBiZjE4ZGI4Y2E2N2E5ZGYzID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9lMjVjZGI1MGI4ZTc0YmIzOWY3OGUxNzhhNDQwNTRlNCA9ICQoYDxkaXYgaWQ9Imh0bWxfZTI1Y2RiNTBiOGU3NGJiMzlmNzhlMTc4YTQ0MDU0ZTQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRoZSBXZW5keSBIb3VzZTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8yODgwYWFkNTljMDE0NDEwYmYxOGRiOGNhNjdhOWRmMy5zZXRDb250ZW50KGh0bWxfZTI1Y2RiNTBiOGU3NGJiMzlmNzhlMTc4YTQ0MDU0ZTQpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfODY1NWExZjdiNTYzNDVkYjllMzNkMzc5OTllNjdlZTAuYmluZFBvcHVwKHBvcHVwXzI4ODBhYWQ1OWMwMTQ0MTBiZjE4ZGI4Y2E2N2E5ZGYzKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzQxZTE2YWYyZTU0MjQ1OWI4NzkyMWY1MGIyMzUxZGM0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTMuNzk5LCAtMS41NTNdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzM4NmFiMWY5YmUwMDRmMWFhZGE1MGE4OTA5OGNkMDBiID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8yNjhhMTQyNTUzNzY0N2YxOTA4ODIxYzdkOGQ0YjU0MyA9ICQoYDxkaXYgaWQ9Imh0bWxfMjY4YTE0MjU1Mzc2NDdmMTkwODgyMWM3ZDhkNGI1NDMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZhZ3VlIGNsdWIsIExlZWRzPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzM4NmFiMWY5YmUwMDRmMWFhZGE1MGE4OTA5OGNkMDBiLnNldENvbnRlbnQoaHRtbF8yNjhhMTQyNTUzNzY0N2YxOTA4ODIxYzdkOGQ0YjU0Myk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl80MWUxNmFmMmU1NDI0NTliODc5MjFmNTBiMjM1MWRjNC5iaW5kUG9wdXAocG9wdXBfMzg2YWIxZjliZTAwNGYxYWFkYTUwYTg5MDk4Y2QwMGIpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfNGU0YmIyMzA5OTY3NDE0YWFlZjAwMjhlOGU4NmFmYTQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1My43OTksIC0xLjU1M10sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMTE5YmU1NTJjM2Q1NDNiNjhmZGExMzkwMGZiYjJiZWIgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2E3OTIzZjBlYWMyMTQ5ZThhZDQ1M2Y2NDY2MDJhYzQzID0gJChgPGRpdiBpZD0iaHRtbF9hNzkyM2YwZWFjMjE0OWU4YWQ0NTNmNjQ2NjAyYWM0MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VmFndWUgY2x1YiwgTGVlZHM8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfMTE5YmU1NTJjM2Q1NDNiNjhmZGExMzkwMGZiYjJiZWIuc2V0Q29udGVudChodG1sX2E3OTIzZjBlYWMyMTQ5ZThhZDQ1M2Y2NDY2MDJhYzQzKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzRlNGJiMjMwOTk2NzQxNGFhZWYwMDI4ZThlODZhZmE0LmJpbmRQb3B1cChwb3B1cF8xMTliZTU1MmMzZDU0M2I2OGZkYTEzOTAwZmJiMmJlYikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl8wOGUwYWMwMTk4MWQ0MDE5ODZiNjYwYmFmMjdiMGFlOCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQ4NjcsIC0wLjEyMTgzM10sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMTA5M2Y3NzhjNzY1NDdhNmFjN2RhZjBjZTlkOGUwYzEgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2QyMzk2ZThmOTg2NzQyZDc5YmY4OTFlOTExZmEyMzQ1ID0gJChgPGRpdiBpZD0iaHRtbF9kMjM5NmU4Zjk4Njc0MmQ3OWJmODkxZTkxMWZhMjM0NSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VmF1eGhhbGwgR2FyZGVuczwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8xMDkzZjc3OGM3NjU0N2E2YWM3ZGFmMGNlOWQ4ZTBjMS5zZXRDb250ZW50KGh0bWxfZDIzOTZlOGY5ODY3NDJkNzliZjg5MWU5MTFmYTIzNDUpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfMDhlMGFjMDE5ODFkNDAxOTg2YjY2MGJhZjI3YjBhZTguYmluZFBvcHVwKHBvcHVwXzEwOTNmNzc4Yzc2NTQ3YTZhYzdkYWYwY2U5ZDhlMGMxKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzRhMGI1ZmM3ZDhkODQwNzQ5M2I1Y2IwZDQ4ZTQ4ZDU1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTMuMDIzMSwgLTIuMTc1Ml0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfNmQxYjhhNWUwNDUyNDQ1NWI4NDJlYmIwYTBhNTczZDIgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzYxZDFhY2IwYTUxNzQyODdhOGFhODY4MmRmOTRkMzE0ID0gJChgPGRpdiBpZD0iaHRtbF82MWQxYWNiMGE1MTc0Mjg3YThhYTg2ODJkZjk0ZDMxNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VmljdG9yaWEgSGFsbCwgU3Rva2Utb24tVHJlbnQ8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfNmQxYjhhNWUwNDUyNDQ1NWI4NDJlYmIwYTBhNTczZDIuc2V0Q29udGVudChodG1sXzYxZDFhY2IwYTUxNzQyODdhOGFhODY4MmRmOTRkMzE0KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzRhMGI1ZmM3ZDhkODQwNzQ5M2I1Y2IwZDQ4ZTQ4ZDU1LmJpbmRQb3B1cChwb3B1cF82ZDFiOGE1ZTA0NTI0NDU1Yjg0MmViYjBhMGE1NzNkMikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl9kMTUxYWFlOGNkZWM0ZjVlODU3YWM2MjQ4YTQ5MWY5YiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQ1MjIsIC0wLjEyMTY2N10sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMTQxMDVlZjYzZjMxNGUzNDg1YWVjMjUxNTllMTRlY2YgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzIyMGU2MzZhZmE1ZDRhNTZiNzIwOWVhMjQwZjljZmIwID0gJChgPGRpdiBpZD0iaHRtbF8yMjBlNjM2YWZhNWQ0YTU2YjcyMDllYTI0MGY5Y2ZiMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+R2VvcmdlIElWLCBCcml4dG9uPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzE0MTA1ZWY2M2YzMTRlMzQ4NWFlYzI1MTU5ZTE0ZWNmLnNldENvbnRlbnQoaHRtbF8yMjBlNjM2YWZhNWQ0YTU2YjcyMDllYTI0MGY5Y2ZiMCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9kMTUxYWFlOGNkZWM0ZjVlODU3YWM2MjQ4YTQ5MWY5Yi5iaW5kUG9wdXAocG9wdXBfMTQxMDVlZjYzZjMxNGUzNDg1YWVjMjUxNTllMTRlY2YpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfOWRlZmU0MzQ0YTY4NDFlNWIwYWI3MjJhYzI2MWE1OTcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1Mi41MTM2LCAtMi4wNzU1Nl0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfNjY0YmQ4MzJiYjNmNGUwZjgwZjEyZjViM2YwODU4YTYgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzUxMDVmZWUyNjcwYzRkZDE5NmVlODI0MmVkYTMxYzA3ID0gJChgPGRpdiBpZD0iaHRtbF81MTA1ZmVlMjY3MGM0ZGQxOTZlZTgyNDJlZGEzMWMwNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+SkIncyBEdWRsZXk8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfNjY0YmQ4MzJiYjNmNGUwZjgwZjEyZjViM2YwODU4YTYuc2V0Q29udGVudChodG1sXzUxMDVmZWUyNjcwYzRkZDE5NmVlODI0MmVkYTMxYzA3KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzlkZWZlNDM0NGE2ODQxZTViMGFiNzIyYWMyNjFhNTk3LmJpbmRQb3B1cChwb3B1cF82NjRiZDgzMmJiM2Y0ZTBmODBmMTJmNWIzZjA4NThhNikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl9iYjRmYzY2NTZkNGU0OTQ5YmVhMDA0M2IwYTZlZGFmMCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjM5NjUsIC0xLjQ2OF0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfY2Q5ZTkyNGJjYTcyNGVjZDhiOTJkZTMwMzFkZjM4NzEgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2NiNDJhMWQ5NDliODRlZTQ5NTVhY2YxZWI5ODBkYTM5ID0gJChgPGRpdiBpZD0iaHRtbF9jYjQyYTFkOTQ5Yjg0ZWU0OTU1YWNmMWViOTgwZGEzOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+S2luZyBNb2pvIENsdWI8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfY2Q5ZTkyNGJjYTcyNGVjZDhiOTJkZTMwMzFkZjM4NzEuc2V0Q29udGVudChodG1sX2NiNDJhMWQ5NDliODRlZTQ5NTVhY2YxZWI5ODBkYTM5KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2JiNGZjNjY1NmQ0ZTQ5NDliZWEwMDQzYjBhNmVkYWYwLmJpbmRQb3B1cChwb3B1cF9jZDllOTI0YmNhNzI0ZWNkOGI5MmRlMzAzMWRmMzg3MSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl84ZDM0N2UyZmRjOTE0MjBlYjBjZmI0YzE5OWViMTNhOCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQ0NjQsIDAuMTU0NDQ0XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9jNmM0NzNhODViMDM0YWE0YTc4Y2RiN2U4MmY3ZGI0YiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfZGEyOTZjMGZhMjA1NGQ4NDlkOTgzYmU0NjZlZjNkZGQgPSAkKGA8ZGl2IGlkPSJodG1sX2RhMjk2YzBmYTIwNTRkODQ5ZDk4M2JlNDY2ZWYzZGRkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CbGFjayBQcmluY2UsIEJleGxleTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9jNmM0NzNhODViMDM0YWE0YTc4Y2RiN2U4MmY3ZGI0Yi5zZXRDb250ZW50KGh0bWxfZGEyOTZjMGZhMjA1NGQ4NDlkOTgzYmU0NjZlZjNkZGQpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfOGQzNDdlMmZkYzkxNDIwZWIwY2ZiNGMxOTllYjEzYTguYmluZFBvcHVwKHBvcHVwX2M2YzQ3M2E4NWIwMzRhYTRhNzhjZGI3ZTgyZjdkYjRiKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzJlNmQ0NTkwNjQ2MDRiZGZiODk2MzQwYTBhNzc0NzMzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNDQ2NCwgMC4xNTQ0NDRdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzQ5ODYyNGNiZTYwMDRhOTI5ZmMyNDE3OTNlZGM1ODQyID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8wZWViNjI5ZmE2NWY0NTViOWM1MjExMTBiYmNlYmMzNyA9ICQoYDxkaXYgaWQ9Imh0bWxfMGVlYjYyOWZhNjVmNDU1YjljNTIxMTEwYmJjZWJjMzciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJsYWNrIFByaW5jZSwgQmV4bGV5PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzQ5ODYyNGNiZTYwMDRhOTI5ZmMyNDE3OTNlZGM1ODQyLnNldENvbnRlbnQoaHRtbF8wZWViNjI5ZmE2NWY0NTViOWM1MjExMTBiYmNlYmMzNyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8yZTZkNDU5MDY0NjA0YmRmYjg5NjM0MGEwYTc3NDczMy5iaW5kUG9wdXAocG9wdXBfNDk4NjI0Y2JlNjAwNGE5MjlmYzI0MTc5M2VkYzU4NDIpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMmYwYmIxMTYxMjUwNGM3YWJlYTIzMzdiYTM1OTBkYWUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40NTI2LCAtMC4xMDA2XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF84NzA0NWViYTc1YWE0ZGY4OTkzNDUzM2FiNzVkZGFjNSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfOTgzMzBlNjQ5ZDg3NGM3MDg0Y2JmYzk4ZGUxMmY1ZjMgPSAkKGA8ZGl2IGlkPSJodG1sXzk4MzMwZTY0OWQ4NzRjNzA4NGNiZmM5OGRlMTJmNWYzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5IYWxmIE1vb24sIEhlcm5lIEhpbGw8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfODcwNDVlYmE3NWFhNGRmODk5MzQ1MzNhYjc1ZGRhYzUuc2V0Q29udGVudChodG1sXzk4MzMwZTY0OWQ4NzRjNzA4NGNiZmM5OGRlMTJmNWYzKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzJmMGJiMTE2MTI1MDRjN2FiZWEyMzM3YmEzNTkwZGFlLmJpbmRQb3B1cChwb3B1cF84NzA0NWViYTc1YWE0ZGY4OTkzNDUzM2FiNzVkZGFjNSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl8zODJkMTgwNzJlMWE0MTBmYjg0NWM2ZThiOTcxOTM5ZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjM3MjgsIDEuMTM2N10sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfZjYyN2RhYTJjNjg3NGNkMTk2ZmU0NzVhZmMzNWY1NGQgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzU2Y2Y4NTY1OTg2ZjRiNTE4YWUxNGYwZTJkNWVhMjE5ID0gJChgPGRpdiBpZD0iaHRtbF81NmNmODU2NTk4NmY0YjUxOGFlMTRmMGUyZDVlYTIxOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+S2luZydzIEhhbGwsIEhlcm5lIEJheTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9mNjI3ZGFhMmM2ODc0Y2QxOTZmZTQ3NWFmYzM1ZjU0ZC5zZXRDb250ZW50KGh0bWxfNTZjZjg1NjU5ODZmNGI1MThhZTE0ZjBlMmQ1ZWEyMTkpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfMzgyZDE4MDcyZTFhNDEwZmI4NDVjNmU4Yjk3MTkzOWUuYmluZFBvcHVwKHBvcHVwX2Y2MjdkYWEyYzY4NzRjZDE5NmZlNDc1YWZjMzVmNTRkKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzAzODAwZjBlZDBjMjQyNTBhMjEwZTM0NjI4ZjJlYTM4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNDY3MiwgLTAuMjIwMTcyXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF84MTMwYTI4NmRhOTM0MDc3OWUyMzU1Njk5ZWNjY2E4NiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfYmQ1YTg3OGVkZTk5NDJmZmIwYTlmMmQyNzBiZDM2OGUgPSAkKGA8ZGl2IGlkPSJodG1sX2JkNWE4NzhlZGU5OTQyZmZiMGE5ZjJkMjcwYmQzNjhlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5UaGUgSGFsZiBNb29uLCBQdXRuZXk8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfODEzMGEyODZkYTkzNDA3NzllMjM1NTY5OWVjY2NhODYuc2V0Q29udGVudChodG1sX2JkNWE4NzhlZGU5OTQyZmZiMGE5ZjJkMjcwYmQzNjhlKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzAzODAwZjBlZDBjMjQyNTBhMjEwZTM0NjI4ZjJlYTM4LmJpbmRQb3B1cChwb3B1cF84MTMwYTI4NmRhOTM0MDc3OWUyMzU1Njk5ZWNjY2E4NikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl84OTg3NDEwZTg0ZDc0MGVmOThhZmE3NWQzNWFiZGZmMCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjU1LCAtMi42M10sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfM2JkNWExNWI0N2E4NGJiNTlmODk1ODdmNWZmYzJlMWEgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2VkNDA4MTkwOGZlNjRmNmU5ZjgxN2NkMWY4YTI2ZDNmID0gJChgPGRpdiBpZD0iaHRtbF9lZDQwODE5MDhmZTY0ZjZlOWY4MTdjZDFmOGEyNmQzZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V2lnYW4gQ2FzaW5vPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzNiZDVhMTViNDdhODRiYjU5Zjg5NTg3ZjVmZmMyZTFhLnNldENvbnRlbnQoaHRtbF9lZDQwODE5MDhmZTY0ZjZlOWY4MTdjZDFmOGEyNmQzZik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl84OTg3NDEwZTg0ZDc0MGVmOThhZmE3NWQzNWFiZGZmMC5iaW5kUG9wdXAocG9wdXBfM2JkNWExNWI0N2E4NGJiNTlmODk1ODdmNWZmYzJlMWEpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzBlMzAxMDYyMWViNDlhYzllOWU3OWEwYjhhNWYwYjQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40NCwgLTIuNjIwMjhdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzUyOWQ5MzE5OTM0YTRmYzg4NzNiNmJjYjhlODZmOWQwID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9jMjliNzIxMzEyODU0Njc4ODU5NmYyNWY0NWVlYzYwOSA9ICQoYDxkaXYgaWQ9Imh0bWxfYzI5YjcyMTMxMjg1NDY3ODg1OTZmMjVmNDVlZWM2MDkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFzaHRvbiBHYXRlIFN0YWRpdW08L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfNTI5ZDkzMTk5MzRhNGZjODg3M2I2YmNiOGU4NmY5ZDAuc2V0Q29udGVudChodG1sX2MyOWI3MjEzMTI4NTQ2Nzg4NTk2ZjI1ZjQ1ZWVjNjA5KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzMwZTMwMTA2MjFlYjQ5YWM5ZTllNzlhMGI4YTVmMGI0LmJpbmRQb3B1cChwb3B1cF81MjlkOTMxOTkzNGE0ZmM4ODczYjZiY2I4ZTg2ZjlkMCkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl8wZDQxZjM2Zjk4ZmQ0OTZkOWY1NzUxNzhlY2FjY2EzOSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjUxMzQsIC0wLjEzMzldLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzJlZGIzZjUxNTZiNzRmMTQ5MTkyZjEwNTA1NTZlYzQyID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF83YWM2MTlhYTdkYmU0YzQ3YTk1YWNmOTExMmYzYzc5YyA9ICQoYDxkaXYgaWQ9Imh0bWxfN2FjNjE5YWE3ZGJlNGM0N2E5NWFjZjkxMTJmM2M3OWMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1hcnF1ZWUgQ2x1YjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8yZWRiM2Y1MTU2Yjc0ZjE0OTE5MmYxMDUwNTU2ZWM0Mi5zZXRDb250ZW50KGh0bWxfN2FjNjE5YWE3ZGJlNGM0N2E5NWFjZjkxMTJmM2M3OWMpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfMGQ0MWYzNmY5OGZkNDk2ZDlmNTc1MTc4ZWNhY2NhMzkuYmluZFBvcHVwKHBvcHVwXzJlZGIzZjUxNTZiNzRmMTQ5MTkyZjEwNTA1NTZlYzQyKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzUxN2EwODM0ZmVjYjQxZmU4YTA3YTdkMmFjZjU5MjUyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuNDc2NywgLTEuOTEzMzNdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzZmODY0NTllOTRlNTRjMDdiMzUwNWU4NWQzMWQ1NzViID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9jNjhiYzFiNDgwNDA0NTczYmFhZTZhM2E4MDNlZWM4NyA9ICQoYDxkaXYgaWQ9Imh0bWxfYzY4YmMxYjQ4MDQwNDU3M2JhYWU2YTNhODAzZWVjODciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJhcmJhcmVsbGEnczwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF82Zjg2NDU5ZTk0ZTU0YzA3YjM1MDVlODVkMzFkNTc1Yi5zZXRDb250ZW50KGh0bWxfYzY4YmMxYjQ4MDQwNDU3M2JhYWU2YTNhODAzZWVjODcpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfNTE3YTA4MzRmZWNiNDFmZThhMDdhN2QyYWNmNTkyNTIuYmluZFBvcHVwKHBvcHVwXzZmODY0NTllOTRlNTRjMDdiMzUwNWU4NWQzMWQ1NzViKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2I2M2FkMDU4YTNjZjQxMWRhMTMyYTI4NzU0MjljZmE5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNDk4MSwgLTAuMTMzMl0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMTBiNGYzZDZlOGUyNGRhZTk3OWRkZTdhNDNhMWE2ODIgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2VlM2IyNmMwOGIwMjQ5ODliZDRiN2JmZGIwZDcyZWY5ID0gJChgPGRpdiBpZD0iaHRtbF9lZTNiMjZjMDhiMDI0OTg5YmQ0YjdiZmRiMGQ3MmVmOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VGhlIFZlbnVlIChWaWN0b3JpYSBTdHJlZXQsIExvbmRvbik8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfMTBiNGYzZDZlOGUyNGRhZTk3OWRkZTdhNDNhMWE2ODIuc2V0Q29udGVudChodG1sX2VlM2IyNmMwOGIwMjQ5ODliZDRiN2JmZGIwZDcyZWY5KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2I2M2FkMDU4YTNjZjQxMWRhMTMyYTI4NzU0MjljZmE5LmJpbmRQb3B1cChwb3B1cF8xMGI0ZjNkNmU4ZTI0ZGFlOTc5ZGRlN2E0M2ExYTY4MikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl82MjgzODIwNGE3YTY0ODI2YjhjMTQ2NzIzNjZjZjdjNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzU0LjA2ODgsIC0yLjI3OTA1XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9jYzFjM2NkZGQyYTE0ODBlYmI3ODRkNGEzNjM2MjBkYyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfZmQyZmM2YmFiNGZkNDgxN2I5NzczZTc4NWU1MWI4YzEgPSAkKGA8ZGl2IGlkPSJodG1sX2ZkMmZjNmJhYjRmZDQ4MTdiOTc3M2U3ODVlNTFiOGMxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WaWN0b3JpYSBIYWxsLCBTZXR0bGU8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfY2MxYzNjZGRkMmExNDgwZWJiNzg0ZDRhMzYzNjIwZGMuc2V0Q29udGVudChodG1sX2ZkMmZjNmJhYjRmZDQ4MTdiOTc3M2U3ODVlNTFiOGMxKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzYyODM4MjA0YTdhNjQ4MjZiOGMxNDY3MjM2NmNmN2M1LmJpbmRQb3B1cChwb3B1cF9jYzFjM2NkZGQyYTE0ODBlYmI3ODRkNGEzNjM2MjBkYykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl9lNDdlYTY0NDgxYjQ0ZGJiYjkyZDEwNTM1NjdiZWU5YyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUyLjUzOTYsIC0yLjE3MDRdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzNiNmU4NjQ0NGY0ZjRhYjc5OTE4MmNiNjZhZGY2ZWQ5ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9hMjk3MjU3YWY5ODI0NzgwYWY3ZTFkNGY5M2FlZWIzNSA9ICQoYDxkaXYgaWQ9Imh0bWxfYTI5NzI1N2FmOTgyNDc4MGFmN2UxZDRmOTNhZWViMzUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRoZSBXb2RlaG91c2U8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfM2I2ZTg2NDQ0ZjRmNGFiNzk5MTgyY2I2NmFkZjZlZDkuc2V0Q29udGVudChodG1sX2EyOTcyNTdhZjk4MjQ3ODBhZjdlMWQ0ZjkzYWVlYjM1KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2U0N2VhNjQ0ODFiNDRkYmJiOTJkMTA1MzU2N2JlZTljLmJpbmRQb3B1cChwb3B1cF8zYjZlODY0NDRmNGY0YWI3OTkxODJjYjY2YWRmNmVkOSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl9kZjM4ZWY2YThmNzA0Njg5OTBkMjBiNWZjNDEyOTM1MCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjU0MTQsIC0wLjE0NjM4OV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfOWU0MThmYWExMDZhNDI2NTkyMGNjNTAwOGZlNDdkY2IgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzg0MGY2MTU4OGE2NTQ4N2E5OWIxNjcxZWM3ODdiNDk3ID0gJChgPGRpdiBpZD0iaHRtbF84NDBmNjE1ODhhNjU0ODdhOTliMTY3MWVjNzg3YjQ5NyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+SW5TcGlyYWwgTG91bmdlPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzllNDE4ZmFhMTA2YTQyNjU5MjBjYzUwMDhmZTQ3ZGNiLnNldENvbnRlbnQoaHRtbF84NDBmNjE1ODhhNjU0ODdhOTliMTY3MWVjNzg3YjQ5Nyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9kZjM4ZWY2YThmNzA0Njg5OTBkMjBiNWZjNDEyOTM1MC5iaW5kUG9wdXAocG9wdXBfOWU0MThmYWExMDZhNDI2NTkyMGNjNTAwOGZlNDdkY2IpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMGQ3NjI0Mjk4OGE3NDAyNWI5N2FiNzU0YWRiNjY4MzQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1NC45NzgyLCAtMS42MDY1Nl0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfM2YyOTBhZGYwNzM0NGFiNjk2NzczNDUyZjIzNzkxYjMgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzZjODBjNjgwNzJlNTRiOGVhOTM3MmYzMWVlZmFjNDk1ID0gJChgPGRpdiBpZD0iaHRtbF82YzgwYzY4MDcyZTU0YjhlYTkzNzJmMzFlZWZhYzQ5NSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U3BvcnQgQ2VudHJhbDwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8zZjI5MGFkZjA3MzQ0YWI2OTY3NzM0NTJmMjM3OTFiMy5zZXRDb250ZW50KGh0bWxfNmM4MGM2ODA3MmU1NGI4ZWE5MzcyZjMxZWVmYWM0OTUpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfMGQ3NjI0Mjk4OGE3NDAyNWI5N2FiNzU0YWRiNjY4MzQuYmluZFBvcHVwKHBvcHVwXzNmMjkwYWRmMDczNDRhYjY5Njc3MzQ1MmYyMzc5MWIzKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2IyMzE3ZjI3NzMwMTRhMjFiZGY0OWQ2YjExNDZiNGYwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuNDc5NywgLTEuOTE1XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9hZTRhZWY0NGQwM2Y0MDU4OWEyMTZkMDFkNTgxMmQwNCA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfODE0N2I3MjMwN2NmNGU1YWIyYjEyMTdjOWE2M2M2NWMgPSAkKGA8ZGl2IGlkPSJodG1sXzgxNDdiNzIzMDdjZjRlNWFiMmIxMjE3YzlhNjNjNjVjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CYXJjbGF5Y2FyZCBBcmVuYTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9hZTRhZWY0NGQwM2Y0MDU4OWEyMTZkMDFkNTgxMmQwNC5zZXRDb250ZW50KGh0bWxfODE0N2I3MjMwN2NmNGU1YWIyYjEyMTdjOWE2M2M2NWMpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfYjIzMTdmMjc3MzAxNGEyMWJkZjQ5ZDZiMTE0NmI0ZjAuYmluZFBvcHVwKHBvcHVwX2FlNGFlZjQ0ZDAzZjQwNTg5YTIxNmQwMWQ1ODEyZDA0KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2VmNGY0ZWZjMTcxZjRmOWZhNTVjZDlkMWMxNDhjZGY5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuNDc5NiwgLTEuOTAzNzddLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2I5ODA2ZGNhODYzNDQwMjdiMWQyODIwOTFiN2QyNmE2ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9jY2UzMjVkMDY5MGE0ZWUzOWMyMzk2ZDUxOGIxZmI3NCA9ICQoYDxkaXYgaWQ9Imh0bWxfY2NlMzI1ZDA2OTBhNGVlMzljMjM5NmQ1MThiMWZiNzQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJpcm1pbmdoYW0gVG93biBIYWxsPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2I5ODA2ZGNhODYzNDQwMjdiMWQyODIwOTFiN2QyNmE2LnNldENvbnRlbnQoaHRtbF9jY2UzMjVkMDY5MGE0ZWUzOWMyMzk2ZDUxOGIxZmI3NCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9lZjRmNGVmYzE3MWY0ZjlmYTU1Y2Q5ZDFjMTQ4Y2RmOS5iaW5kUG9wdXAocG9wdXBfYjk4MDZkY2E4NjM0NDAyN2IxZDI4MjA5MWI3ZDI2YTYpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfNmZmMGVkZGQyMWUxNDgyZWIwNTEwZTZlNzcxMWExMWQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1Mi40Nzk2LCAtMS45MDM3N10sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfYjQyNTMzZThkNjkxNDllZmExYWE3NzIwNGMzNjBjNjQgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzY2MGYxNjg5MzY5ZDQ0ZGZhZmU5NGVjMmFiM2I4MTZhID0gJChgPGRpdiBpZD0iaHRtbF82NjBmMTY4OTM2OWQ0NGRmYWZlOTRlYzJhYjNiODE2YSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QmlybWluZ2hhbSBUb3duIEhhbGw8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfYjQyNTMzZThkNjkxNDllZmExYWE3NzIwNGMzNjBjNjQuc2V0Q29udGVudChodG1sXzY2MGYxNjg5MzY5ZDQ0ZGZhZmU5NGVjMmFiM2I4MTZhKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzZmZjBlZGRkMjFlMTQ4MmViMDUxMGU2ZTc3MTFhMTFkLmJpbmRQb3B1cChwb3B1cF9iNDI1MzNlOGQ2OTE0OWVmYTFhYTc3MjA0YzM2MGM2NCkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl80OTI0YzZhOGYzMmU0YTkwYTM4NWEzZjU2MThjZDhiMyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQ1MTcsIC0yLjYwMDddLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzZmOWE3MjQ4OGM2NjQ4ZDA4YTFkNDg1NTdmOTlhOTJjID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9iZjkzOTExYzY5YWU0ODk4ODA2OWJjNjExNDNiN2JlNyA9ICQoYDxkaXYgaWQ9Imh0bWxfYmY5MzkxMWM2OWFlNDg5ODgwNjliYzYxMTQzYjdiZTciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJyaXN0b2wgQ2F0aGVkcmFsPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzZmOWE3MjQ4OGM2NjQ4ZDA4YTFkNDg1NTdmOTlhOTJjLnNldENvbnRlbnQoaHRtbF9iZjkzOTExYzY5YWU0ODk4ODA2OWJjNjExNDNiN2JlNyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl80OTI0YzZhOGYzMmU0YTkwYTM4NWEzZjU2MThjZDhiMy5iaW5kUG9wdXAocG9wdXBfNmY5YTcyNDg4YzY2NDhkMDhhMWQ0ODU1N2Y5OWE5MmMpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzQwMzEwZmY4NTk5NGI1Y2E4YTlhZjY4ZThkYTExMjkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1My40ODMxLCAtMi4yMDAyOF0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMmYwZDcwNWRiNmUyNGZhM2IxODA1MDI1MjViYzVlMGQgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzY2ZGFkODVhNmU4MDQyN2ZhODAxNTRkNmMzYjY0MmUwID0gJChgPGRpdiBpZD0iaHRtbF82NmRhZDg1YTZlODA0MjdmYTgwMTU0ZDZjM2I2NDJlMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q2l0eSBvZiBNYW5jaGVzdGVyIFN0YWRpdW08L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfMmYwZDcwNWRiNmUyNGZhM2IxODA1MDI1MjViYzVlMGQuc2V0Q29udGVudChodG1sXzY2ZGFkODVhNmU4MDQyN2ZhODAxNTRkNmMzYjY0MmUwKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzM0MDMxMGZmODU5OTRiNWNhOGE5YWY2OGU4ZGExMTI5LmJpbmRQb3B1cChwb3B1cF8yZjBkNzA1ZGI2ZTI0ZmEzYjE4MDUwMjUyNWJjNWUwZCkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl9lZGY3MTI5MGFiMWQ0ODYzOGJlMmNjOWYwM2RhMzRhMSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQ1OTcsIC0yLjYxNjNdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzcwMDVmNTdmNDBkZDRmOGRhYTU5MGRhMzg0N2E2YTQ5ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9kOTIzZGIyYjMzZGE0ZTMyYTc2NDZkZDNmNDRmOGZlNiA9ICQoYDxkaXYgaWQ9Imh0bWxfZDkyM2RiMmIzM2RhNGUzMmE3NjQ2ZGQzZjQ0ZjhmZTYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNsaWZ0b24gQ2F0aGVkcmFsPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzcwMDVmNTdmNDBkZDRmOGRhYTU5MGRhMzg0N2E2YTQ5LnNldENvbnRlbnQoaHRtbF9kOTIzZGIyYjMzZGE0ZTMyYTc2NDZkZDNmNDRmOGZlNik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9lZGY3MTI5MGFiMWQ0ODYzOGJlMmNjOWYwM2RhMzRhMS5iaW5kUG9wdXAocG9wdXBfNzAwNWY1N2Y0MGRkNGY4ZGFhNTkwZGEzODQ3YTZhNDkpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfZWJhYzRhZmRjNzE2NDRhNTgxYTY4YzZkNTMxN2FhYmUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1My40ODgxLCAtMi4yNDM4OV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfNmNiYmM3YmU1MjFiNDQ3OWJjYzczM2QxNGJjOWFiNDIgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzlkM2YwMDIyYTg0ODQwYzdiZjU4NjU1NzUzYTI0NzVlID0gJChgPGRpdiBpZD0iaHRtbF85ZDNmMDAyMmE4NDg0MGM3YmY1ODY1NTc1M2EyNDc1ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TWFuY2hlc3RlciBBcmVuYTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF82Y2JiYzdiZTUyMWI0NDc5YmNjNzMzZDE0YmM5YWI0Mi5zZXRDb250ZW50KGh0bWxfOWQzZjAwMjJhODQ4NDBjN2JmNTg2NTU3NTNhMjQ3NWUpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfZWJhYzRhZmRjNzE2NDRhNTgxYTY4YzZkNTMxN2FhYmUuYmluZFBvcHVwKHBvcHVwXzZjYmJjN2JlNTIxYjQ0NzliY2M3MzNkMTRiYzlhYjQyKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2ZjZTljNDk3MzE1NTQ0NTI4ZjEyZjg5ZTE5MDY1Njc2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuNTIzMiwgLTEuODQwMzRdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2Y5ZGM4YjI0OTUxYTRlY2Y5MGI1YTU0NDExMzBiNTI4ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8zOTE1N2Q4NWIxZGI0ZWI5YjJhZjkzNDI2NjE0M2VlNSA9ICQoYDxkaXYgaWQ9Imh0bWxfMzkxNTdkODViMWRiNGViOWIyYWY5MzQyNjYxNDNlZTUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1vdGhlcnMgKG11c2ljIHZlbnVlKTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9mOWRjOGIyNDk1MWE0ZWNmOTBiNWE1NDQxMTMwYjUyOC5zZXRDb250ZW50KGh0bWxfMzkxNTdkODViMWRiNGViOWIyYWY5MzQyNjYxNDNlZTUpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfZmNlOWM0OTczMTU1NDQ1MjhmMTJmODllMTkwNjU2NzYuYmluZFBvcHVwKHBvcHVwX2Y5ZGM4YjI0OTUxYTRlY2Y5MGI1YTU0NDExMzBiNTI4KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2I3OTAxMGUxZThlMjQxNzQ5MDQ5MGFiM2FkN2FlZjVlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTQuOTE0NCwgLTEuMzg4Ml0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfZDk4YTc3MGQ5MWRkNGQ0OWI2ZGE3Mzg2NmJkMTQ0ZDAgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzNjZmM5NzhmYmM1NDRjOTliYmM3YTViODkwODFmMzliID0gJChgPGRpdiBpZD0iaHRtbF8zY2ZjOTc4ZmJjNTQ0Yzk5YmJjN2E1Yjg5MDgxZjM5YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U3RhZGl1bSBvZiBMaWdodDwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9kOThhNzcwZDkxZGQ0ZDQ5YjZkYTczODY2YmQxNDRkMC5zZXRDb250ZW50KGh0bWxfM2NmYzk3OGZiYzU0NGM5OWJiYzdhNWI4OTA4MWYzOWIpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfYjc5MDEwZTFlOGUyNDE3NDkwNDkwYWIzYWQ3YWVmNWUuYmluZFBvcHVwKHBvcHVwX2Q5OGE3NzBkOTFkZDRkNDliNmRhNzM4NjZiZDE0NGQwKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzBjYTUyOGQ2MDcwZTQ4ZGNhMmM4Y2ViZmVmOWIxZjI1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuNDc4NiwgLTEuOTEwNTZdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2E1ODQ3Y2IzYTViMjQwOGVhNDY2YzMyOWRiZjQ1OWEzID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF83MWVjMzkxYTM5ZDM0NTQ4ODVmMTdlNDhjZjYwY2FjOSA9ICQoYDxkaXYgaWQ9Imh0bWxfNzFlYzM5MWEzOWQzNDU0ODg1ZjE3ZTQ4Y2Y2MGNhYzkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlN5bXBob255IEhhbGwsIEJpcm1pbmdoYW08L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfYTU4NDdjYjNhNWIyNDA4ZWE0NjZjMzI5ZGJmNDU5YTMuc2V0Q29udGVudChodG1sXzcxZWMzOTFhMzlkMzQ1NDg4NWYxN2U0OGNmNjBjYWM5KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzBjYTUyOGQ2MDcwZTQ4ZGNhMmM4Y2ViZmVmOWIxZjI1LmJpbmRQb3B1cChwb3B1cF9hNTg0N2NiM2E1YjI0MDhlYTQ2NmMzMjlkYmY0NTlhMykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl84N2MzMDk0YmYyZDk0MzZjYjA4YWI5YmQyZGFiYmY4NyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUyLjQ3ODYsIC0xLjkxMDU2XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9iZTYwZTFjNWNlZjI0NWVlYTA0OWI3ODVlYWEyYWFjMCA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfZTVmM2ZhZDA3M2QwNDhkODhjMGRjNzRhY2Q0M2U0YzUgPSAkKGA8ZGl2IGlkPSJodG1sX2U1ZjNmYWQwNzNkMDQ4ZDg4YzBkYzc0YWNkNDNlNGM1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TeW1waG9ueSBIYWxsLCBCaXJtaW5naGFtPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2JlNjBlMWM1Y2VmMjQ1ZWVhMDQ5Yjc4NWVhYTJhYWMwLnNldENvbnRlbnQoaHRtbF9lNWYzZmFkMDczZDA0OGQ4OGMwZGM3NGFjZDQzZTRjNSk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl84N2MzMDk0YmYyZDk0MzZjYjA4YWI5YmQyZGFiYmY4Ny5iaW5kUG9wdXAocG9wdXBfYmU2MGUxYzVjZWYyNDVlZWEwNDliNzg1ZWFhMmFhYzApCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMTc3ZGQzMDhjMzMxNDg4NWIxMDk2NGRjMTlkMWFkNzMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40NTYxLCAtMC4zNDE2NjddLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzYxNTAwM2VmMWIxNTRiNjViNjRhMWIyNGJkZGZkYjEwID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF82Nzc2Y2IxY2NmYTM0ZTk1ODAzNzBlYzdmMzBmMGEwYiA9ICQoYDxkaXYgaWQ9Imh0bWxfNjc3NmNiMWNjZmEzNGU5NTgwMzcwZWM3ZjMwZjBhMGIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlR3aWNrZW5oYW0gU3RhZGl1bTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF82MTUwMDNlZjFiMTU0YjY1YjY0YTFiMjRiZGRmZGIxMC5zZXRDb250ZW50KGh0bWxfNjc3NmNiMWNjZmEzNGU5NTgwMzcwZWM3ZjMwZjBhMGIpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfMTc3ZGQzMDhjMzMxNDg4NWIxMDk2NGRjMTlkMWFkNzMuYmluZFBvcHVwKHBvcHVwXzYxNTAwM2VmMWIxNTRiNjViNjRhMWIyNGJkZGZkYjEwKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzJkZjJhNzBlNDZmNzQ5MGM4NjZkN2M3YmYxMDZjNzY2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTU4MSwgLTAuMjgyOTcyXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8yNTU4OTE1NDQ0Y2E0MDBkOWU0NDkyMWFmMjZiZTYxYyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfYTcyZWM2ZGIzMzE2NGFjNGI1Y2E4OWNkNGRkMTRiNWYgPSAkKGA8ZGl2IGlkPSJodG1sX2E3MmVjNmRiMzMxNjRhYzRiNWNhODljZDRkZDE0YjVmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XZW1ibGV5IEFyZW5hPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzI1NTg5MTU0NDRjYTQwMGQ5ZTQ0OTIxYWYyNmJlNjFjLnNldENvbnRlbnQoaHRtbF9hNzJlYzZkYjMzMTY0YWM0YjVjYTg5Y2Q0ZGQxNGI1Zik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8yZGYyYTcwZTQ2Zjc0OTBjODY2ZDdjN2JmMTA2Yzc2Ni5iaW5kUG9wdXAocG9wdXBfMjU1ODkxNTQ0NGNhNDAwZDllNDQ5MjFhZjI2YmU2MWMpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfNThlMmYyMWJhMDM3NDE3YTg0ZDE5Y2U2MjU0ODI4NTQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41NTU2LCAtMC4yNzk3MjJdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzAwMzgwZTczMjMzNjQ4MzQ4MmQzOTIxMTM1NWZjOTQwID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF83MGJhMTg2NzZkNzI0NzhjOWRlNzhhODI4NTk4YjBhNSA9ICQoYDxkaXYgaWQ9Imh0bWxfNzBiYTE4Njc2ZDcyNDc4YzlkZTc4YTgyODU5OGIwYTUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldlbWJsZXkgU3RhZGl1bSAoMTkyMyk8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfMDAzODBlNzMyMzM2NDgzNDgyZDM5MjExMzU1ZmM5NDAuc2V0Q29udGVudChodG1sXzcwYmExODY3NmQ3MjQ3OGM5ZGU3OGE4Mjg1OThiMGE1KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzU4ZTJmMjFiYTAzNzQxN2E4NGQxOWNlNjI1NDgyODU0LmJpbmRQb3B1cChwb3B1cF8wMDM4MGU3MzIzMzY0ODM0ODJkMzkyMTEzNTVmYzk0MCkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl83NDE5YTkxOWYyZTQ0YWMzOGZlODU3ZWNjOGNmZmZhYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUyLjU4NjYsIC0yLjEzMDddLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzQ5M2JhZGViMjczYzQzYTQ4NTJkZGZlN2U4ZjE3YTZiID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9iNGZmZWYyMWM4Y2U0OGY0YTkxYjM1MGEwZmY2NGUyMSA9ICQoYDxkaXYgaWQ9Imh0bWxfYjRmZmVmMjFjOGNlNDhmNGE5MWIzNTBhMGZmNjRlMjEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldvbHZlcmhhbXB0b24gQ2l2aWMgSGFsbDwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF80OTNiYWRlYjI3M2M0M2E0ODUyZGRmZTdlOGYxN2E2Yi5zZXRDb250ZW50KGh0bWxfYjRmZmVmMjFjOGNlNDhmNGE5MWIzNTBhMGZmNjRlMjEpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfNzQxOWE5MTlmMmU0NGFjMzhmZTg1N2VjYzhjZmZmYWEuYmluZFBvcHVwKHBvcHVwXzQ5M2JhZGViMjczYzQzYTQ4NTJkZGZlN2U4ZjE3YTZiKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzdmZjc2NzNkN2NlMjRlZTU5NjJjNzU3NzZhN2UzOTk5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNDQ5MiwgLTIuNTk3Ml0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfOWYxNTkyNjkyNzY4NGJlYWI0YjUzNTk1MTNmYmUyZmYgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzY4NjE4NzM4Yjg4MTQ3MWNiMmU5ZjYxYzMwZTVmZWYzID0gJChgPGRpdiBpZD0iaHRtbF82ODYxODczOGI4ODE0NzFjYjJlOWY2MWMzMGU1ZmVmMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QXJub2xmaW5pPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzlmMTU5MjY5Mjc2ODRiZWFiNGI1MzU5NTEzZmJlMmZmLnNldENvbnRlbnQoaHRtbF82ODYxODczOGI4ODE0NzFjYjJlOWY2MWMzMGU1ZmVmMyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl83ZmY3NjczZDdjZTI0ZWU1OTYyYzc1Nzc2YTdlMzk5OS5iaW5kUG9wdXAocG9wdXBfOWYxNTkyNjkyNzY4NGJlYWI0YjUzNTk1MTNmYmUyZmYpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMjU4ZTU3OGYwYTBlNDViZTg5YWFjMzFhZGNhMDBhY2IgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40ODg5LCAtMC4xOTc3NzhdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzEzNDY3ODVhY2I5MzRlZTRiZTkxYzBlNGVhOGQ0Y2E5ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9jMjNmMGU3NzVjMjk0MjVkYjVlNWI1NGMxMTI1MTRhMiA9ICQoYDxkaXYgaWQ9Imh0bWxfYzIzZjBlNzc1YzI5NDI1ZGI1ZTViNTRjMTEyNTE0YTIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkVhcmxzIENvdXJ0IEV4aGliaXRpb24gQ2VudHJlPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzEzNDY3ODVhY2I5MzRlZTRiZTkxYzBlNGVhOGQ0Y2E5LnNldENvbnRlbnQoaHRtbF9jMjNmMGU3NzVjMjk0MjVkYjVlNWI1NGMxMTI1MTRhMik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8yNThlNTc4ZjBhMGU0NWJlODlhYWMzMWFkY2EwMGFjYi5iaW5kUG9wdXAocG9wdXBfMTM0Njc4NWFjYjkzNGVlNGJlOTFjMGU0ZWE4ZDRjYTkpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfYTU4MTY2MDVhYjRjNDQxMTk3ZjA3YWU5OTRhOTFhMDkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1NC45NjM5LCAtMS42MjMzM10sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfZTQyNDRmOWU2ODM0NDc0Y2IzYmJmZTY3MjFkNjQzNGUgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzA2N2ExNzFhZDAwYjRmZDZhOTg3YmEyZDFkYjk1MjJlID0gJChgPGRpdiBpZD0iaHRtbF8wNjdhMTcxYWQwMGI0ZmQ2YTk4N2JhMmQxZGI5NTIyZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TWV0cm8gUmFkaW8gQXJlbmE8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfZTQyNDRmOWU2ODM0NDc0Y2IzYmJmZTY3MjFkNjQzNGUuc2V0Q29udGVudChodG1sXzA2N2ExNzFhZDAwYjRmZDZhOTg3YmEyZDFkYjk1MjJlKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2E1ODE2NjA1YWI0YzQ0MTE5N2YwN2FlOTk0YTkxYTA5LmJpbmRQb3B1cChwb3B1cF9lNDI0NGY5ZTY4MzQ0NzRjYjNiYmZlNjcyMWQ2NDM0ZSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl8yZmI0YmY3NDViNTU0ZTIwODEzMDIxMjgzYWY5YzM2MCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzU0Ljk2MzksIC0xLjYyMzMzXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9kYjU0NTE5M2RmNzI0NDAwODI3M2IxYzJiNDY1NjhkMSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfODAwYTJkY2Q4YTRlNDU0Y2E3Y2UyODRkMmVkYWEwNTEgPSAkKGA8ZGl2IGlkPSJodG1sXzgwMGEyZGNkOGE0ZTQ1NGNhN2NlMjg0ZDJlZGFhMDUxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NZXRybyBSYWRpbyBBcmVuYTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9kYjU0NTE5M2RmNzI0NDAwODI3M2IxYzJiNDY1NjhkMS5zZXRDb250ZW50KGh0bWxfODAwYTJkY2Q4YTRlNDU0Y2E3Y2UyODRkMmVkYWEwNTEpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfMmZiNGJmNzQ1YjU1NGUyMDgxMzAyMTI4M2FmOWMzNjAuYmluZFBvcHVwKHBvcHVwX2RiNTQ1MTkzZGY3MjQ0MDA4MjczYjFjMmI0NjU2OGQxKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2ViMzZiYWQ0YjA5ZjRkYzRiZTFiOTc0MTQ4YzhjNDRhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTc4LCAtMC45OV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMzYwMjJkODY5MTJjNGYzYWJiNTI3MzkxM2Y4YzdjZDIgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzg3YWNmZDM2ZWRiMjRhNmNhZDRkMzhmOTZkMGY0NThmID0gJChgPGRpdiBpZD0iaHRtbF84N2FjZmQzNmVkYjI0YTZjYWQ0ZDM4Zjk2ZDBmNDU4ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TmV0dGxlYmVkPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzM2MDIyZDg2OTEyYzRmM2FiYjUyNzM5MTNmOGM3Y2QyLnNldENvbnRlbnQoaHRtbF84N2FjZmQzNmVkYjI0YTZjYWQ0ZDM4Zjk2ZDBmNDU4Zik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9lYjM2YmFkNGIwOWY0ZGM0YmUxYjk3NDE0OGM4YzQ0YS5iaW5kUG9wdXAocG9wdXBfMzYwMjJkODY5MTJjNGYzYWJiNTI3MzkxM2Y4YzdjZDIpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfNDMyNzVhNmYyY2VmNDVlNjhlOTg2Y2I5MzEyNGIxNzEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1Mi45NTYxLCAtMS4xNTQ0XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF84Yjg3NmIxMGQ3Nzg0YjFlOWRhNTA5MWY5YzczMDVhNyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfZThhNmZiYWM1MTVhNDNiMjhkZTczZWUwY2RjNDBhMTUgPSAkKGA8ZGl2IGlkPSJodG1sX2U4YTZmYmFjNTE1YTQzYjI4ZGU3M2VlMGNkYzQwYTE1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Sb2NrIENpdHkgKHZlbnVlKTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF84Yjg3NmIxMGQ3Nzg0YjFlOWRhNTA5MWY5YzczMDVhNy5zZXRDb250ZW50KGh0bWxfZThhNmZiYWM1MTVhNDNiMjhkZTczZWUwY2RjNDBhMTUpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfNDMyNzVhNmYyY2VmNDVlNjhlOTg2Y2I5MzEyNGIxNzEuYmluZFBvcHVwKHBvcHVwXzhiODc2YjEwZDc3ODRiMWU5ZGE1MDkxZjljNzMwNWE3KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzk2NDc4MGVkZWZlODRhZmNhZGI0MTk2ODBlNDNlNGZmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTMuMzk5OSwgLTEuNDE4NzZdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2Q0N2ExMDcwMWMxZTQzMzBhZTM0MmNhN2I3YzNiNmMwID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9jNDBlMjBjNTk4YmU0M2VjODQ2MTAwNGNjMThhODI1YSA9ICQoYDxkaXYgaWQ9Imh0bWxfYzQwZTIwYzU5OGJlNDNlYzg0NjEwMDRjYzE4YTgyNWEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNoZWZmaWVsZCBBcmVuYTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9kNDdhMTA3MDFjMWU0MzMwYWUzNDJjYTdiN2MzYjZjMC5zZXRDb250ZW50KGh0bWxfYzQwZTIwYzU5OGJlNDNlYzg0NjEwMDRjYzE4YTgyNWEpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfOTY0NzgwZWRlZmU4NGFmY2FkYjQxOTY4MGU0M2U0ZmYuYmluZFBvcHVwKHBvcHVwX2Q0N2ExMDcwMWMxZTQzMzBhZTM0MmNhN2I3YzNiNmMwKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzhmOWIxMWU3Y2QzYjQzOTliMDBhMjJlMDgzODdmNmQxID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTA1NywgLTAuMTE2NzYxXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8zN2U1OWUwOTNlZjk0Njg1YjIxZWFjN2MwOWQ5NDA0OSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfZTgyZDFkMTFlMDI0NGUyMWJlOWU5NzhkNDJlZDhiODYgPSAkKGA8ZGl2IGlkPSJodG1sX2U4MmQxZDExZTAyNDRlMjFiZTllOTc4ZDQyZWQ4Yjg2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Tb3V0aGJhbmsgQ2VudHJlPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzM3ZTU5ZTA5M2VmOTQ2ODViMjFlYWM3YzA5ZDk0MDQ5LnNldENvbnRlbnQoaHRtbF9lODJkMWQxMWUwMjQ0ZTIxYmU5ZTk3OGQ0MmVkOGI4Nik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl84ZjliMTFlN2NkM2I0Mzk5YjAwYTIyZTA4Mzg3ZjZkMS5iaW5kUG9wdXAocG9wdXBfMzdlNTllMDkzZWY5NDY4NWIyMWVhYzdjMDlkOTQwNDkpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfZTliMzBhYTg1MjAxNDA1M2IyYWQ2ODYyY2UzYzI0NzkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40OTc5LCAtMC4xMDk5NzZdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzY0ZGUxMmM3NzQyNzQyMGJhNTM3ZWZmMWY0NTA1MTRlID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF80NWZkZmVhMzU1NTI0NTQyYTY3YjM1ODk2ZDc5YzNiZiA9ICQoYDxkaXYgaWQ9Imh0bWxfNDVmZGZlYTM1NTUyNDU0MmE2N2IzNTg5NmQ3OWMzYmYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNlbnRyZSBmb3IgWW91bmcgTXVzaWNpYW5zPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzY0ZGUxMmM3NzQyNzQyMGJhNTM3ZWZmMWY0NTA1MTRlLnNldENvbnRlbnQoaHRtbF80NWZkZmVhMzU1NTI0NTQyYTY3YjM1ODk2ZDc5YzNiZik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9lOWIzMGFhODUyMDE0MDUzYjJhZDY4NjJjZTNjMjQ3OS5iaW5kUG9wdXAocG9wdXBfNjRkZTEyYzc3NDI3NDIwYmE1MzdlZmYxZjQ1MDUxNGUpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfNDkyMzQ5MWQyZjFmNGM3N2FhYzRiNGE1ZTRjYzU3Y2YgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1My43NTQ2LCAtMC4zNDg5XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF80NTI0MzI2Njg0ZmM0NDI1YWY4YjQ4YTExM2ZmZGE3MiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfZjhmMjQzNjYyMjUzNDQ4ZThhZGZjZWNhNDdlNjQ5NzcgPSAkKGA8ZGl2IGlkPSJodG1sX2Y4ZjI0MzY2MjI1MzQ0OGU4YWRmY2VjYTQ3ZTY0OTc3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5DbHViIETDqWrDoCBWdTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF80NTI0MzI2Njg0ZmM0NDI1YWY4YjQ4YTExM2ZmZGE3Mi5zZXRDb250ZW50KGh0bWxfZjhmMjQzNjYyMjUzNDQ4ZThhZGZjZWNhNDdlNjQ5NzcpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfNDkyMzQ5MWQyZjFmNGM3N2FhYzRiNGE1ZTRjYzU3Y2YuYmluZFBvcHVwKHBvcHVwXzQ1MjQzMjY2ODRmYzQ0MjVhZjhiNDhhMTEzZmZkYTcyKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzAyMDJmZWMxMTljNTRjY2NiNTcwMzBjZWUzNTRlOWU1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTMuNzU0NiwgLTAuMzQ4OV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMzEzMjMwYjY5ZTNjNDBhZDliYjZmMWEwODkxN2QyYmMgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzJhMGRjNTlkZWVjODRkYmI5M2E0MDBkYThmMDE5MTYyID0gJChgPGRpdiBpZD0iaHRtbF8yYTBkYzU5ZGVlYzg0ZGJiOTNhNDAwZGE4ZjAxOTE2MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q2x1YiBEw6lqw6AgVnU8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfMzEzMjMwYjY5ZTNjNDBhZDliYjZmMWEwODkxN2QyYmMuc2V0Q29udGVudChodG1sXzJhMGRjNTlkZWVjODRkYmI5M2E0MDBkYThmMDE5MTYyKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzAyMDJmZWMxMTljNTRjY2NiNTcwMzBjZWUzNTRlOWU1LmJpbmRQb3B1cChwb3B1cF8zMTMyMzBiNjllM2M0MGFkOWJiNmYxYTA4OTE3ZDJiYykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl9kZWMzZjY2YTBjNzA0ZmQwYTg0OGVkYmJmMTQ3YjNkYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjI4MTksIDEuMDgwNzJdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzczMzBkMDUxMDIzZDQ2ZmZiNGM1MTY1YjlkODkyNmQ4ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9jZmYxODIyNzBhNmQ0MGRmOGZmOTE4Y2NiNGVhNmMyMiA9ICQoYDxkaXYgaWQ9Imh0bWxfY2ZmMTgyMjcwYTZkNDBkZjhmZjkxOGNjYjRlYTZjMjIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9sZCBTeW5hZ29ndWUgKENhbnRlcmJ1cnkpPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzczMzBkMDUxMDIzZDQ2ZmZiNGM1MTY1YjlkODkyNmQ4LnNldENvbnRlbnQoaHRtbF9jZmYxODIyNzBhNmQ0MGRmOGZmOTE4Y2NiNGVhNmMyMik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9kZWMzZjY2YTBjNzA0ZmQwYTg0OGVkYmJmMTQ3YjNkYS5iaW5kUG9wdXAocG9wdXBfNzMzMGQwNTEwMjNkNDZmZmI0YzUxNjViOWQ4OTI2ZDgpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzE0ZTY4YTBmYTY1NDRiNmI0YWNiYWE2N2Y1NDY2ZDkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41MTEzLCAtMC4xMzIyXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8xNzgwNTQ0NjFlYzc0OGFlYmNmOTZlYzc5ZjhmYzNjMiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNGZkYTQyZGRiNDgxNGU5YThmZGRmOThiZWNjODkxMjYgPSAkKGA8ZGl2IGlkPSJodG1sXzRmZGE0MmRkYjQ4MTRlOWE4ZmRkZjk4YmVjYzg5MTI2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5UaGUgRmxhbWluZ28gQ2x1YjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8xNzgwNTQ0NjFlYzc0OGFlYmNmOTZlYzc5ZjhmYzNjMi5zZXRDb250ZW50KGh0bWxfNGZkYTQyZGRiNDgxNGU5YThmZGRmOThiZWNjODkxMjYpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfNzE0ZTY4YTBmYTY1NDRiNmI0YWNiYWE2N2Y1NDY2ZDkuYmluZFBvcHVwKHBvcHVwXzE3ODA1NDQ2MWVjNzQ4YWViY2Y5NmVjNzlmOGZjM2MyKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2ZhZTZjZjg4MGQyMTQ5YTc4ZjcxYjVjMmYwZjA2ZjJkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTQ2NywgLTAuMTAzODg5XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9hNTJmMjZmZTkxMmY0ZTA2YmI4MTA3MjdlMDZjYWQ1ZCA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfZmQ4NGRiNTE2NDFlNGUxZDlmZGYzZmFlNzU1YTEzYWQgPSAkKGA8ZGl2IGlkPSJodG1sX2ZkODRkYjUxNjQxZTRlMWQ5ZmRmM2ZhZTc1NWExM2FkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5UaGUgR2FyYWdlLCBMb25kb248L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfYTUyZjI2ZmU5MTJmNGUwNmJiODEwNzI3ZTA2Y2FkNWQuc2V0Q29udGVudChodG1sX2ZkODRkYjUxNjQxZTRlMWQ5ZmRmM2ZhZTc1NWExM2FkKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2ZhZTZjZjg4MGQyMTQ5YTc4ZjcxYjVjMmYwZjA2ZjJkLmJpbmRQb3B1cChwb3B1cF9hNTJmMjZmZTkxMmY0ZTA2YmI4MTA3MjdlMDZjYWQ1ZCkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl80YWJkNjcxMDFhY2U0ZTUyOTcwZjQ0ZmQ3MWY0NGI0MSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjM5NjcsIC0yLjk5MDk2XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8zZTQyNTY1Y2U1M2U0MjcwYjdmNzQzZWQ3ZWRiOTAxZiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfZTc0MzdhNDRiZGQzNDQ4MGI3OWU3ZmUzYWFkY2NiMjcgPSAkKGA8ZGl2IGlkPSJodG1sX2U3NDM3YTQ0YmRkMzQ0ODBiNzllN2ZlM2FhZGNjYjI3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5FY2hvIEFyZW5hIExpdmVycG9vbDwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8zZTQyNTY1Y2U1M2U0MjcwYjdmNzQzZWQ3ZWRiOTAxZi5zZXRDb250ZW50KGh0bWxfZTc0MzdhNDRiZGQzNDQ4MGI3OWU3ZmUzYWFkY2NiMjcpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfNGFiZDY3MTAxYWNlNGU1Mjk3MGY0NGZkNzFmNDRiNDEuYmluZFBvcHVwKHBvcHVwXzNlNDI1NjVjZTUzZTQyNzBiN2Y3NDNlZDdlZGI5MDFmKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2YzYmYzNGE5OWY5ZjRjYTE5YWIzMzcyNWRlMzQ0MjUxID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTEyNCwgLTAuMTM4ODldLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2EwYzE2ZmVhZjFmMjQ2N2Y4MGM1MWIwMzA0NWY2YjZmID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF83MGJjMTQxYTM2YzQ0OTEyYmY5N2VmNzNmNTJmYjM4YiA9ICQoYDxkaXYgaWQ9Imh0bWxfNzBiYzE0MWEzNmM0NDkxMmJmOTdlZjczZjUyZmIzOGIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRoZSBCYWcgTydOYWlsczwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9hMGMxNmZlYWYxZjI0NjdmODBjNTFiMDMwNDVmNmI2Zi5zZXRDb250ZW50KGh0bWxfNzBiYzE0MWEzNmM0NDkxMmJmOTdlZjczZjUyZmIzOGIpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfZjNiZjM0YTk5ZjlmNGNhMTlhYjMzNzI1ZGUzNDQyNTEuYmluZFBvcHVwKHBvcHVwX2EwYzE2ZmVhZjFmMjQ2N2Y4MGM1MWIwMzA0NWY2YjZmKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2Q1ZTg4ZDYzMmYyMTRhZDY4NTE4NzJkN2M0Mzc0ZjFiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTEyNCwgLTAuMTM4ODg5XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF84MzU3NTQyZGJiN2U0Y2FkOWU3ZGJmZDQ5NjQ1YThkYiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNzgxMzk4ODVmOGJkNDhjYjk4YjYxNWU4OGIxYTlhMmIgPSAkKGA8ZGl2IGlkPSJodG1sXzc4MTM5ODg1ZjhiZDQ4Y2I5OGI2MTVlODhiMWE5YTJiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5UaGUgQmFnIE8nTmFpbHM8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfODM1NzU0MmRiYjdlNGNhZDllN2RiZmQ0OTY0NWE4ZGIuc2V0Q29udGVudChodG1sXzc4MTM5ODg1ZjhiZDQ4Y2I5OGI2MTVlODhiMWE5YTJiKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2Q1ZTg4ZDYzMmYyMTRhZDY4NTE4NzJkN2M0Mzc0ZjFiLmJpbmRQb3B1cChwb3B1cF84MzU3NTQyZGJiN2U0Y2FkOWU3ZGJmZDQ5NjQ1YThkYikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl81NGFhMmIwYWMxZmU0MWEwOTQ2NGMzOGU3ZTlkNzgzZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjUwNzgsIC0wLjEzNzFdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzA3NDZmMWMwOWRhOTQ1N2Q4OWMwMDEwMGIxZmM5YTJjID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF84Nzc1MjZjODc1YzA0Y2RkOWY4YzEyMWZiMWIyOTQyZiA9ICQoYDxkaXYgaWQ9Imh0bWxfODc3NTI2Yzg3NWMwNGNkZDlmOGMxMjFmYjFiMjk0MmYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRoZSBTY290Y2ggb2YgU3QuIEphbWVzPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzA3NDZmMWMwOWRhOTQ1N2Q4OWMwMDEwMGIxZmM5YTJjLnNldENvbnRlbnQoaHRtbF84Nzc1MjZjODc1YzA0Y2RkOWY4YzEyMWZiMWIyOTQyZik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl81NGFhMmIwYWMxZmU0MWEwOTQ2NGMzOGU3ZTlkNzgzZS5iaW5kUG9wdXAocG9wdXBfMDc0NmYxYzA5ZGE5NDU3ZDg5YzAwMTAwYjFmYzlhMmMpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfN2RlOWY3ZDlmM2IxNDk5OGJiY2E1NTNhYmUyOGIzM2YgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1Mi4wMDg1LCAtMC43MzI4NzZdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzIxOGZhNTkzMDgxYzQzNDk4NWM2OTNiYTFjZjAxYmU3ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9jZDc4YzYyY2QwZjQ0Y2ZlOTI4Yzk2YzRkOTQzMjI1OSA9ICQoYDxkaXYgaWQ9Imh0bWxfY2Q3OGM2MmNkMGY0NGNmZTkyOGM5NmM0ZDk0MzIyNTkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFyZW5hIE1LPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzIxOGZhNTkzMDgxYzQzNDk4NWM2OTNiYTFjZjAxYmU3LnNldENvbnRlbnQoaHRtbF9jZDc4YzYyY2QwZjQ0Y2ZlOTI4Yzk2YzRkOTQzMjI1OSk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl83ZGU5ZjdkOWYzYjE0OTk4YmJjYTU1M2FiZTI4YjMzZi5iaW5kUG9wdXAocG9wdXBfMjE4ZmE1OTMwODFjNDM0OTg1YzY5M2JhMWNmMDFiZTcpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzE3ODVjNTY4OWRlNGMyODkzYjlhMmNiNTlhYTA0YzMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1My41NzkyLCAtMi41MzkxN10sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMzcxN2MyY2RlNGE4NGY3MWJjYzE1MWVmYzRkNzgyZTYgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2I0M2NjYTI5ZTcwMTQyN2M5ODk3Njk1NzY4M2M0NjRjID0gJChgPGRpdiBpZD0iaHRtbF9iNDNjY2EyOWU3MDE0MjdjOTg5NzY5NTc2ODNjNDY0YyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Qm9sdG9uIEFyZW5hPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzM3MTdjMmNkZTRhODRmNzFiY2MxNTFlZmM0ZDc4MmU2LnNldENvbnRlbnQoaHRtbF9iNDNjY2EyOWU3MDE0MjdjOTg5NzY5NTc2ODNjNDY0Yyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9jMTc4NWM1Njg5ZGU0YzI4OTNiOWEyY2I1OWFhMDRjMy5iaW5kUG9wdXAocG9wdXBfMzcxN2MyY2RlNGE4NGY3MWJjYzE1MWVmYzRkNzgyZTYpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMTliNTFkNjIxZWRkNGE2NGExYTJiMjU1OTBjNjdlNDIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41MjQ0LCAtMC4xNl0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfY2IzNzVkNzQ5OWVmNDRiYmI1ZjNiODc3NGYwNWU0YzQgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzU1N2M4MTQyYjdlZDQ0MjNhZDNhYzgxODYxOTg5Mjg2ID0gJChgPGRpdiBpZD0iaHRtbF81NTdjODE0MmI3ZWQ0NDIzYWQzYWM4MTg2MTk4OTI4NiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U3QgQ3lwcmlhbidzLCBDbGFyZW5jZSBHYXRlPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2NiMzc1ZDc0OTllZjQ0YmJiNWYzYjg3NzRmMDVlNGM0LnNldENvbnRlbnQoaHRtbF81NTdjODE0MmI3ZWQ0NDIzYWQzYWM4MTg2MTk4OTI4Nik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8xOWI1MWQ2MjFlZGQ0YTY0YTFhMmIyNTU5MGM2N2U0Mi5iaW5kUG9wdXAocG9wdXBfY2IzNzVkNzQ5OWVmNDRiYmI1ZjNiODc3NGYwNWU0YzQpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfNjhkNTkxZTBlMzQ3NDQ4MGIzOWEzNDJmMzBjOTkzMTMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1Mi44MDU4LCAtMS42Mjc1XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF81MzE5ZGQzOGZiZmU0M2EyOTU3M2IyMmY2OTJkNzdjMiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfYTY5YTZjNzBlZTM4NDgxY2E4ZWJjYjEyNTM4NTdmZmQgPSAkKGA8ZGl2IGlkPSJodG1sX2E2OWE2YzcwZWUzODQ4MWNhOGViY2IxMjUzODU3ZmZkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij43NiBDbHViPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzUzMTlkZDM4ZmJmZTQzYTI5NTczYjIyZjY5MmQ3N2MyLnNldENvbnRlbnQoaHRtbF9hNjlhNmM3MGVlMzg0ODFjYThlYmNiMTI1Mzg1N2ZmZCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl82OGQ1OTFlMGUzNDc0NDgwYjM5YTM0MmYzMGM5OTMxMy5iaW5kUG9wdXAocG9wdXBfNTMxOWRkMzhmYmZlNDNhMjk1NzNiMjJmNjkyZDc3YzIpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfODkzMmIwMTE2MTBmNGYyYWFlNmVkMDZhMGUxODVlMGQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS43NTI4LCAtMC4zMzYzODldLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2Y1OTc1YWMxMWZiMzQ0YTZiNGJiZmVkNjY4NDI3N2JmID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF85NDEzNzRiNWE2ZWQ0ZTg2YjU4MjkwOTUyYTVmY2E4YyA9ICQoYDxkaXYgaWQ9Imh0bWxfOTQxMzc0YjVhNmVkNGU4NmI1ODI5MDk1MmE1ZmNhOGMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFsYmFuIEFyZW5hPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2Y1OTc1YWMxMWZiMzQ0YTZiNGJiZmVkNjY4NDI3N2JmLnNldENvbnRlbnQoaHRtbF85NDEzNzRiNWE2ZWQ0ZTg2YjU4MjkwOTUyYTVmY2E4Yyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl84OTMyYjAxMTYxMGY0ZjJhYWU2ZWQwNmEwZTE4NWUwZC5iaW5kUG9wdXAocG9wdXBfZjU5NzVhYzExZmIzNDRhNmI0YmJmZWQ2Njg0Mjc3YmYpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfZjc1NDVhNTllMDRkNDVkODlmN2E3MzI2ZmU3MzVmZTUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1My43NDM4LCAtMC4zNDAxNDZdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzJhMDhhY2UwNDNlYTRkOWY5ZGE5OTVhOWNiOTg0ZTZmID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF82ZDNjYmU1NTIyM2I0NDQ1YjIyNDNiOTgzYTMzM2JkNSA9ICQoYDxkaXYgaWQ9Imh0bWxfNmQzY2JlNTUyMjNiNDQ0NWIyMjQzYjk4M2EzMzNiZDUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkh1bGwgQ2l0eSBIYWxsPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzJhMDhhY2UwNDNlYTRkOWY5ZGE5OTVhOWNiOTg0ZTZmLnNldENvbnRlbnQoaHRtbF82ZDNjYmU1NTIyM2I0NDQ1YjIyNDNiOTgzYTMzM2JkNSk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9mNzU0NWE1OWUwNGQ0NWQ4OWY3YTczMjZmZTczNWZlNS5iaW5kUG9wdXAocG9wdXBfMmEwOGFjZTA0M2VhNGQ5ZjlkYTk5NWE5Y2I5ODRlNmYpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfODU1M2JlMTZjYjlmNGU4NThhNGMyNWJlYTEyMDY5NmIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1Mi42MjE3LCAtMS4xMjUyN10sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfNjZlZDNjMTM3Mjc1NDUzY2JhMmI2NjA3NjRkNzRhYTIgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2Y5MTMzNDAxZjE4ZjRlZTFhZmQwNmQ0ODhhOWRhNWJiID0gJChgPGRpdiBpZD0iaHRtbF9mOTEzMzQwMWYxOGY0ZWUxYWZkMDZkNDg4YTlkYTViYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TzIgQWNhZGVteSBMZWljZXN0ZXI8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfNjZlZDNjMTM3Mjc1NDUzY2JhMmI2NjA3NjRkNzRhYTIuc2V0Q29udGVudChodG1sX2Y5MTMzNDAxZjE4ZjRlZTFhZmQwNmQ0ODhhOWRhNWJiKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzg1NTNiZTE2Y2I5ZjRlODU4YTRjMjViZWExMjA2OTZiLmJpbmRQb3B1cChwb3B1cF82NmVkM2MxMzcyNzU0NTNjYmEyYjY2MDc2NGQ3NGFhMikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl9iMWJkNjA0ZWE5ZDA0NmMyOGJiZGE3YmFjYWJlNjhkMCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUyLjgyNDgsIC0yLjA2NTNdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2U4NDJlMDFjMmQ0ZDRkNmQ4ZDk0ZjMwMWIzNzE4YWYzID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF81YjRmZjlkNGU5YjI0YjNjODliYzM0NGQwZDE1YTBhNCA9ICQoYDxkaXYgaWQ9Imh0bWxfNWI0ZmY5ZDRlOWIyNGIzYzg5YmMzNDRkMGQxNWEwYTQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJpbmdsZXkgSGFsbCwgU3RhZmZvcmQ8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfZTg0MmUwMWMyZDRkNGQ2ZDhkOTRmMzAxYjM3MThhZjMuc2V0Q29udGVudChodG1sXzViNGZmOWQ0ZTliMjRiM2M4OWJjMzQ0ZDBkMTVhMGE0KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2IxYmQ2MDRlYTlkMDQ2YzI4YmJkYTdiYWNhYmU2OGQwLmJpbmRQb3B1cChwb3B1cF9lODQyZTAxYzJkNGQ0ZDZkOGQ5NGYzMDFiMzcxOGFmMykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl9lMDc4ZTgwMGFjZGM0YjM3OGVmNTA5MTQxOTQwMTJiOSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQ2NDQsIDAuMDA5NjM4ODldLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzI2MzA1OWE1ZjRjMjRlZDQ4NjY1ZDkxZDk2MTMwODM4ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF85OTE5MzY3ZDAyMDU0NDZlOGQ5MGFmZmIwMTkzMzc2NiA9ICQoYDxkaXYgaWQ9Imh0bWxfOTkxOTM2N2QwMjA1NDQ2ZThkOTBhZmZiMDE5MzM3NjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJsYWNraGVhdGggSGFsbHM8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfMjYzMDU5YTVmNGMyNGVkNDg2NjVkOTFkOTYxMzA4Mzguc2V0Q29udGVudChodG1sXzk5MTkzNjdkMDIwNTQ0NmU4ZDkwYWZmYjAxOTMzNzY2KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2UwNzhlODAwYWNkYzRiMzc4ZWY1MDkxNDE5NDAxMmI5LmJpbmRQb3B1cChwb3B1cF8yNjMwNTlhNWY0YzI0ZWQ0ODY2NWQ5MWQ5NjEzMDgzOCkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl8wMWQ5NzUwYTljYzE0MjljYjQwMDFjYTk4Y2Y5MWI4OSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjUwNjUsIC0wLjIzMTYwOV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfODZmNTk4YmVhOGVkNDNmMjljMmY4YTBlMGM2OTY1OTIgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzQzYTg0ZTNiZThiYjQwY2M5MTYwZDBiNDcyZDI4NjIzID0gJChgPGRpdiBpZD0iaHRtbF80M2E4NGUzYmU4YmI0MGNjOTE2MGQwYjQ3MmQyODYyMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QnVzaCBIYWxsPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzg2ZjU5OGJlYThlZDQzZjI5YzJmOGEwZTBjNjk2NTkyLnNldENvbnRlbnQoaHRtbF80M2E4NGUzYmU4YmI0MGNjOTE2MGQwYjQ3MmQyODYyMyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8wMWQ5NzUwYTljYzE0MjljYjQwMDFjYTk4Y2Y5MWI4OS5iaW5kUG9wdXAocG9wdXBfODZmNTk4YmVhOGVkNDNmMjljMmY4YTBlMGM2OTY1OTIpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfZmJlMzFiZjgxZDVmNGUxNmIxMDhkODVhNzI2NjE5YzIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41MzczLCAtMC4xNDExMl0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMzE5OWFjMGJhYmRiNDFlY2IzMDI1MWE5NDY0ZTA2ZWMgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzMyMWIzODlmOGFlMjRjMmNiNmE3NmQ4MzUwOTBiY2ZkID0gJChgPGRpdiBpZD0iaHRtbF8zMjFiMzg5ZjhhZTI0YzJjYjZhNzZkODM1MDkwYmNmZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q2FtZGVuIEhlYWQ8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfMzE5OWFjMGJhYmRiNDFlY2IzMDI1MWE5NDY0ZTA2ZWMuc2V0Q29udGVudChodG1sXzMyMWIzODlmOGFlMjRjMmNiNmE3NmQ4MzUwOTBiY2ZkKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2ZiZTMxYmY4MWQ1ZjRlMTZiMTA4ZDg1YTcyNjYxOWMyLmJpbmRQb3B1cChwb3B1cF8zMTk5YWMwYmFiZGI0MWVjYjMwMjUxYTk0NjRlMDZlYykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl9jNjg1MzRhMzE1NTc0OTA3OGY3ODY1ODRiMWNmNDI2MCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUyLjkxMjcsIC0xLjQ0NjRdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2YxYTliYTY5ZGQ0NTQ0Mzg4YmY4NWYwYmFkNjA1MTg4ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8xMGU5Y2Q4ZWQ1YTU0YzA2ODQ5NDc5ZWJiZjVmY2VmNiA9ICQoYDxkaXYgaWQ9Imh0bWxfMTBlOWNkOGVkNWE1NGMwNjg0OTQ3OWViYmY1ZmNlZjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkRlcmJ5IEFyZW5hPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2YxYTliYTY5ZGQ0NTQ0Mzg4YmY4NWYwYmFkNjA1MTg4LnNldENvbnRlbnQoaHRtbF8xMGU5Y2Q4ZWQ1YTU0YzA2ODQ5NDc5ZWJiZjVmY2VmNik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9jNjg1MzRhMzE1NTc0OTA3OGY3ODY1ODRiMWNmNDI2MC5iaW5kUG9wdXAocG9wdXBfZjFhOWJhNjlkZDQ1NDQzODhiZjg1ZjBiYWQ2MDUxODgpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfYjMyNzcwZTRiNzkyNGI3MDk5MjcyM2E4NDMzNjQzZjEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41MTQzLCAtMC4xMzI2ODddLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzczZGUyYmYxODg1YjQ0MWI4ZGFlZDM1M2RmMWIwZTgwID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8wZWM1OWJiNjFkYzQ0MTYyOTliZmE4ZmFjODhmMDNhOSA9ICQoYDxkaXYgaWQ9Imh0bWxfMGVjNTliYjYxZGM0NDE2Mjk5YmZhOGZhYzg4ZjAzYTkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlBpenphRXhwcmVzcyBKYXp6IENsdWI8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfNzNkZTJiZjE4ODViNDQxYjhkYWVkMzUzZGYxYjBlODAuc2V0Q29udGVudChodG1sXzBlYzU5YmI2MWRjNDQxNjI5OWJmYThmYWM4OGYwM2E5KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2IzMjc3MGU0Yjc5MjRiNzA5OTI3MjNhODQzMzY0M2YxLmJpbmRQb3B1cChwb3B1cF83M2RlMmJmMTg4NWI0NDFiOGRhZWQzNTNkZjFiMGU4MCkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl81MDk5MDc3NzQ2MDA0MGE5OTE4N2EyZDZlZTc4NjYxMyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjc1NDQsIC0xLjI1NTA3XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8xNmY4OWVlN2Q0ZjM0YmNlYmUxYjg2YjQ2ZTU4MDU2MCA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfZDlkYWE2YWViMTBkNDU4YjkzOTk1ZmM0OTM0MjA5ZTYgPSAkKGA8ZGl2IGlkPSJodG1sX2Q5ZGFhNmFlYjEwZDQ1OGI5Mzk5NWZjNDkzNDIwOWU2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TaGVsZG9uaWFuIFRoZWF0cmU8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfMTZmODllZTdkNGYzNGJjZWJlMWI4NmI0NmU1ODA1NjAuc2V0Q29udGVudChodG1sX2Q5ZGFhNmFlYjEwZDQ1OGI5Mzk5NWZjNDkzNDIwOWU2KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzUwOTkwNzc3NDYwMDQwYTk5MTg3YTJkNmVlNzg2NjEzLmJpbmRQb3B1cChwb3B1cF8xNmY4OWVlN2Q0ZjM0YmNlYmUxYjg2YjQ2ZTU4MDU2MCkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl82OGIzZTY2NDhjMjU0NzVjYjRiMDYxN2E0OWY0M2Y0MyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjc1NDQsIC0xLjI1NTA3XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF80OTYyZDM1YTk5ZTQ0OWNhODdjZjUxZmI5YjNmMDZmYyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfZTM4MTg0YjA3OWRlNGMzMGFhMjE2ZDM1ZWE5ZTUwZDYgPSAkKGA8ZGl2IGlkPSJodG1sX2UzODE4NGIwNzlkZTRjMzBhYTIxNmQzNWVhOWU1MGQ2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TaGVsZG9uaWFuIFRoZWF0cmU8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfNDk2MmQzNWE5OWU0NDljYTg3Y2Y1MWZiOWIzZjA2ZmMuc2V0Q29udGVudChodG1sX2UzODE4NGIwNzlkZTRjMzBhYTIxNmQzNWVhOWU1MGQ2KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzY4YjNlNjY0OGMyNTQ3NWNiNGIwNjE3YTQ5ZjQzZjQzLmJpbmRQb3B1cChwb3B1cF80OTYyZDM1YTk5ZTQ0OWNhODdjZjUxZmI5YjNmMDZmYykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl84NmYxMDkyNTdhZTA0ODY1YjgxOGI2ZGRiNTIxZTk2MyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjUzOTIsIC0wLjE0MjJdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzFlYzM0MDZkOTJhNTQ3N2VhNzNhODY3Njc3ZjFkMjMxID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF82YWQ4OTMxYzE3ZGU0OGZlYTM2NmE3OTAxZWE1ZDhjNyA9ICQoYDxkaXYgaWQ9Imh0bWxfNmFkODkzMWMxN2RlNDhmZWEzNjZhNzkwMWVhNWQ4YzciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNhbWRlbiBVbmRlcndvcmxkPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzFlYzM0MDZkOTJhNTQ3N2VhNzNhODY3Njc3ZjFkMjMxLnNldENvbnRlbnQoaHRtbF82YWQ4OTMxYzE3ZGU0OGZlYTM2NmE3OTAxZWE1ZDhjNyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl84NmYxMDkyNTdhZTA0ODY1YjgxOGI2ZGRiNTIxZTk2My5iaW5kUG9wdXAocG9wdXBfMWVjMzQwNmQ5MmE1NDc3ZWE3M2E4Njc2NzdmMWQyMzEpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMWRiOTU1N2Q5NTQ3NDI3Yjk3NGYxNzA5NGUzNjQxYzYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1Mi40NTMzLCAtMS43MTk0NF0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfYmNjYjM5OGFlZDQ3NDQ2YWIxMmM4OWE0NWM4YzZlOGIgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2E5MGQxMTI5OTJmZDQ3NDBiYzMyOWMwNjhjMmJhM2UyID0gJChgPGRpdiBpZD0iaHRtbF9hOTBkMTEyOTkyZmQ0NzQwYmMzMjljMDY4YzJiYTNlMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TmF0aW9uYWwgRXhoaWJpdGlvbiBDZW50cmU8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfYmNjYjM5OGFlZDQ3NDQ2YWIxMmM4OWE0NWM4YzZlOGIuc2V0Q29udGVudChodG1sX2E5MGQxMTI5OTJmZDQ3NDBiYzMyOWMwNjhjMmJhM2UyKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzFkYjk1NTdkOTU0NzQyN2I5NzRmMTcwOTRlMzY0MWM2LmJpbmRQb3B1cChwb3B1cF9iY2NiMzk4YWVkNDc0NDZhYjEyYzg5YTQ1YzhjNmU4YikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl84ODE0MjI3ODQ0NDE0YTkxYWE4ZTY5Y2Q1ZGZhNzE4ZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjQ1NjMsIC0yLjI4Njc2XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9jZjkyNzc2NjMxNzQ0YjMxYjU2NzAyOTMwMzQ0YzI4YyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfMmFhMzI0NGI0YjY3NDIzYTkxMTEzNDA0ZmVmZjk3NTkgPSAkKGA8ZGl2IGlkPSJodG1sXzJhYTMyNDRiNGI2NzQyM2E5MTExMzQwNGZlZmY5NzU5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PbGQgVHJhZmZvcmQgQ3JpY2tldCBHcm91bmQ8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfY2Y5Mjc3NjYzMTc0NGIzMWI1NjcwMjkzMDM0NGMyOGMuc2V0Q29udGVudChodG1sXzJhYTMyNDRiNGI2NzQyM2E5MTExMzQwNGZlZmY5NzU5KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzg4MTQyMjc4NDQ0MTRhOTFhYThlNjljZDVkZmE3MThmLmJpbmRQb3B1cChwb3B1cF9jZjkyNzc2NjMxNzQ0YjMxYjU2NzAyOTMwMzQ0YzI4YykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl8zZjI3N2Q0YTQxMGQ0OGQ5YjJkNDgyNTFlNWI0MTBiYiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjE5NiwgLTIuODldLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2QzM2QwMzg4N2EzMTQwODY4ZmYzMzlhNmQyMGRlN2JhID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF82Y2I3MjQ3ODdlMzU0MjU4YmE3ZWQ1MmIyNzI1N2U5ZiA9ICQoYDxkaXYgaWQ9Imh0bWxfNmNiNzI0Nzg3ZTM1NDI1OGJhN2VkNTJiMjcyNTdlOWYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5vcnRoZ2F0ZSBBcmVuYTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9kMzNkMDM4ODdhMzE0MDg2OGZmMzM5YTZkMjBkZTdiYS5zZXRDb250ZW50KGh0bWxfNmNiNzI0Nzg3ZTM1NDI1OGJhN2VkNTJiMjcyNTdlOWYpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfM2YyNzdkNGE0MTBkNDhkOWIyZDQ4MjUxZTViNDEwYmIuYmluZFBvcHVwKHBvcHVwX2QzM2QwMzg4N2EzMTQwODY4ZmYzMzlhNmQyMGRlN2JhKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzQxNDAxNGUxZjRmZDQ5ZmFhZjk1M2RjYmNlZDZhZTYyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTI1MiwgLTAuMDk0MDU4M10sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMzA3MmZlYTg0MDM0NDQ4ZWFiZjgxNmI4Yjg3YTIwYWYgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzNmYjcxYmI2ZmIxNzQyYzM5MzIxODE4ZDQ0MTEyMjkwID0gJChgPGRpdiBpZD0iaHRtbF8zZmI3MWJiNmZiMTc0MmMzOTMyMTgxOGQ0NDExMjI5MCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U3QgTHVrZSBPbGQgU3RyZWV0PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzMwNzJmZWE4NDAzNDQ0OGVhYmY4MTZiOGI4N2EyMGFmLnNldENvbnRlbnQoaHRtbF8zZmI3MWJiNmZiMTc0MmMzOTMyMTgxOGQ0NDExMjI5MCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl80MTQwMTRlMWY0ZmQ0OWZhYWY5NTNkY2JjZWQ2YWU2Mi5iaW5kUG9wdXAocG9wdXBfMzA3MmZlYTg0MDM0NDQ4ZWFiZjgxNmI4Yjg3YTIwYWYpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzY1ZTMxYTU1M2FiNDJhMzk2MmRlYWNjZjc3Yjk0YTcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS43NzA4LCAwLjA4OTQ0NDRdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzdlYTQyYjlhMTU4ZTQzNTk4NmE4MzY4YTA2ZDZlY2JiID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8wZjViZjUwMjQwMjE0NTNkOTRjNTQwNDIyYTk4ZTRlMiA9ICQoYDxkaXYgaWQ9Imh0bWxfMGY1YmY1MDI0MDIxNDUzZDk0YzU0MDQyMmE5OGU0ZTIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRoZSBTcXVhcmUsIEhhcmxvdzwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF83ZWE0MmI5YTE1OGU0MzU5ODZhODM2OGEwNmQ2ZWNiYi5zZXRDb250ZW50KGh0bWxfMGY1YmY1MDI0MDIxNDUzZDk0YzU0MDQyMmE5OGU0ZTIpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfNzY1ZTMxYTU1M2FiNDJhMzk2MmRlYWNjZjc3Yjk0YTcuYmluZFBvcHVwKHBvcHVwXzdlYTQyYjlhMTU4ZTQzNTk4NmE4MzY4YTA2ZDZlY2JiKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2ZkZTc3ZjFmMmFhZTQyMGU5NmUwNTM5ZjE1NWE4YTBhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNDc3MiwgLTIuNTg0MTZdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzEyMWRkZGI1NDljNzQ4MTg4NjBjOTc4M2NkZjFhOTI0ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF84MzM4M2UzMmE5ZmY0ZjViYTFmMjQwNzNkYzdhOTk4NSA9ICQoYDxkaXYgaWQ9Imh0bWxfODMzODNlMzJhOWZmNGY1YmExZjI0MDczZGM3YTk5ODUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJyaXN0b2wgQ291bnR5IEdyb3VuZDwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8xMjFkZGRiNTQ5Yzc0ODE4ODYwYzk3ODNjZGYxYTkyNC5zZXRDb250ZW50KGh0bWxfODMzODNlMzJhOWZmNGY1YmExZjI0MDczZGM3YTk5ODUpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfZmRlNzdmMWYyYWFlNDIwZTk2ZTA1MzlmMTU1YThhMGEuYmluZFBvcHVwKHBvcHVwXzEyMWRkZGI1NDljNzQ4MTg4NjBjOTc4M2NkZjFhOTI0KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2U3YjEyODdmNGJjYTQyZGU4Yzc1YzE0N2M1MzllN2U2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuMjA0MiwgMC4xMTk4XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9hZjJmYWQyMGI5YWU0MGZmOGI0OWI3MzQ3YzA5YWY3MyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfYjBlY2Y2ZjgyMmI5NDViYmE4N2QxZWM2Yzk5ZjU0NDcgPSAkKGA8ZGl2IGlkPSJodG1sX2IwZWNmNmY4MjJiOTQ1YmJhODdkMWVjNmM5OWY1NDQ3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5DYW1icmlkZ2UgQ29ybiBFeGNoYW5nZTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9hZjJmYWQyMGI5YWU0MGZmOGI0OWI3MzQ3YzA5YWY3My5zZXRDb250ZW50KGh0bWxfYjBlY2Y2ZjgyMmI5NDViYmE4N2QxZWM2Yzk5ZjU0NDcpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfZTdiMTI4N2Y0YmNhNDJkZThjNzVjMTQ3YzUzOWU3ZTYuYmluZFBvcHVwKHBvcHVwX2FmMmZhZDIwYjlhZTQwZmY4YjQ5YjczNDdjMDlhZjczKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzA2YTVhNGRhNjhiYzRmNTQ5ODc5ZjcxNjM1YWRkNjBkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTAuNDcyNiwgLTQuNTU2NV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfYmU2MTAwMmQyMGU5NDQyOThjNmUwMDE2MmVmMWRiMWEgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzNhYzdlOGJiNWNiNTRlZGI5MzUwMDFlNGYwZjczMzQzID0gJChgPGRpdiBpZD0iaHRtbF8zYWM3ZThiYjVjYjU0ZWRiOTM1MDAxZTRmMGY3MzM0MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q2FybmdsYXplIENhdmVybnM8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfYmU2MTAwMmQyMGU5NDQyOThjNmUwMDE2MmVmMWRiMWEuc2V0Q29udGVudChodG1sXzNhYzdlOGJiNWNiNTRlZGI5MzUwMDFlNGYwZjczMzQzKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzA2YTVhNGRhNjhiYzRmNTQ5ODc5ZjcxNjM1YWRkNjBkLmJpbmRQb3B1cChwb3B1cF9iZTYxMDAyZDIwZTk0NDI5OGM2ZTAwMTYyZWYxZGIxYSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl8zNmM5NDgzYzIzODQ0MGQyYTFlNThjZGUzNzI2ZGQ4NSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQ2MzMsIC0wLjMwMjVdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzczNzczMWY0NTE1ZDQ0MWY4MTJkYTgwZmUwOTk4OGI5ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8yNWVhNzg5ZjllMzM0NWI4YmQ0NTMyNTJiYjIyYzg5ZiA9ICQoYDxkaXYgaWQ9Imh0bWxfMjVlYTc4OWY5ZTMzNDViOGJkNDUzMjUyYmIyMmM4OWYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkNyYXdkYWRkeSBDbHViPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzczNzczMWY0NTE1ZDQ0MWY4MTJkYTgwZmUwOTk4OGI5LnNldENvbnRlbnQoaHRtbF8yNWVhNzg5ZjllMzM0NWI4YmQ0NTMyNTJiYjIyYzg5Zik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8zNmM5NDgzYzIzODQ0MGQyYTFlNThjZGUzNzI2ZGQ4NS5iaW5kUG9wdXAocG9wdXBfNzM3NzMxZjQ1MTVkNDQxZjgxMmRhODBmZTA5OTg4YjkpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfODhjMmE3MjgyNjQ1NGY4MWI3ODBiZTI0ZThjODE4MGYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40Nzk4LCAtMC4xNzgzNF0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMGUyMDViMTU1MWFlNGZkZDhhYWIwZGQ1NTlhZjAzOTIgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzgxMzkwNmFhNWIxODQ1MmVhZGY5ODJhYjdiZTQ5MjU4ID0gJChgPGRpdiBpZD0iaHRtbF84MTM5MDZhYTViMTg0NTJlYWRmOTgyYWI3YmU0OTI1OCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q3JlbW9ybmUgR2FyZGVucywgTG9uZG9uPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzBlMjA1YjE1NTFhZTRmZGQ4YWFiMGRkNTU5YWYwMzkyLnNldENvbnRlbnQoaHRtbF84MTM5MDZhYTViMTg0NTJlYWRmOTgyYWI3YmU0OTI1OCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl84OGMyYTcyODI2NDU0ZjgxYjc4MGJlMjRlOGM4MTgwZi5iaW5kUG9wdXAocG9wdXBfMGUyMDViMTU1MWFlNGZkZDhhYWIwZGQ1NTlhZjAzOTIpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfODQ4OTE5Y2EyYTkwNDBjNGJlMjMxMGI0YTRjZDNkNGQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1My4zOTgzLCAtMS40MjQ0NF0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfZjkyMDgxMzVhZjg2NGVkNzk0NTkzYTQ4MzY0ZDY3YmUgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzY1MzM1NmU1MzJmNjRlMjU5ZDdiZmNhNDBlMGJjYThlID0gJChgPGRpdiBpZD0iaHRtbF82NTMzNTZlNTMyZjY0ZTI1OWQ3YmZjYTQwZTBiY2E4ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RW5nbGlzaCBJbnN0aXR1dGUgb2YgU3BvcnQsIFNoZWZmaWVsZDwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9mOTIwODEzNWFmODY0ZWQ3OTQ1OTNhNDgzNjRkNjdiZS5zZXRDb250ZW50KGh0bWxfNjUzMzU2ZTUzMmY2NGUyNTlkN2JmY2E0MGUwYmNhOGUpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfODQ4OTE5Y2EyYTkwNDBjNGJlMjMxMGI0YTRjZDNkNGQuYmluZFBvcHVwKHBvcHVwX2Y5MjA4MTM1YWY4NjRlZDc5NDU5M2E0ODM2NGQ2N2JlKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2U3MTRlMTAxMDMyMjRiM2Y4YjE0NGM3OTI0MjYwZTk2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTMuOCwgLTEuNTQwOF0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMmI0NzMyODM0OTk5NGE2ZmIyMDg5ZDE5ZDYwOGI3MzYgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzRmMDY4NWVlYTYwNDQ4MmI4NmEwZDU2ZWFiNDQyYmQ3ID0gJChgPGRpdiBpZD0iaHRtbF80ZjA2ODVlZWE2MDQ0ODJiODZhMGQ1NmVhYjQ0MmJkNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+R3JhbmQgVGhlYXRyZSwgTGVlZHM8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfMmI0NzMyODM0OTk5NGE2ZmIyMDg5ZDE5ZDYwOGI3MzYuc2V0Q29udGVudChodG1sXzRmMDY4NWVlYTYwNDQ4MmI4NmEwZDU2ZWFiNDQyYmQ3KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2U3MTRlMTAxMDMyMjRiM2Y4YjE0NGM3OTI0MjYwZTk2LmJpbmRQb3B1cChwb3B1cF8yYjQ3MzI4MzQ5OTk0YTZmYjIwODlkMTlkNjA4YjczNikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl8zNzk2NWE1YWM2YjU0YTRjYmIzZWNhMDA4ZWVjYTY2YSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUwLjc3OSwgLTEuMDg1MzldLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzIyOGQ5MjUzYjU4NzRlZDY5YzQwNzBmZDcxYjBiZGJiID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9lYzUxMTRlYTEyN2M0NDM3YWY0MjY5MmEzNzRhMjNkMiA9ICQoYDxkaXYgaWQ9Imh0bWxfZWM1MTE0ZWExMjdjNDQzN2FmNDI2OTJhMzc0YTIzZDIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlBvcnRzbW91dGggUHlyYW1pZHMgQ2VudHJlPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzIyOGQ5MjUzYjU4NzRlZDY5YzQwNzBmZDcxYjBiZGJiLnNldENvbnRlbnQoaHRtbF9lYzUxMTRlYTEyN2M0NDM3YWY0MjY5MmEzNzRhMjNkMik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8zNzk2NWE1YWM2YjU0YTRjYmIzZWNhMDA4ZWVjYTY2YS5iaW5kUG9wdXAocG9wdXBfMjI4ZDkyNTNiNTg3NGVkNjljNDA3MGZkNzFiMGJkYmIpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfYWUyNmY4MDVlNmY1NDNkNGJkNzg3ZDk5M2RjOTA5MzggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1NC42MjA1LCAtMS4wNzI2XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9jZWRjZTg0MmQwYTI0MTg2OGVkZGZhMWUwZTBmN2I4YiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNWZjNWU4NjRkMGUxNDUyZWFmNjAzOWVmMGM1MWJmYjAgPSAkKGA8ZGl2IGlkPSJodG1sXzVmYzVlODY0ZDBlMTQ1MmVhZjYwMzllZjBjNTFiZmIwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5SZWRjYXIgSmF6eiBDbHViPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2NlZGNlODQyZDBhMjQxODY4ZWRkZmExZTBlMGY3YjhiLnNldENvbnRlbnQoaHRtbF81ZmM1ZTg2NGQwZTE0NTJlYWY2MDM5ZWYwYzUxYmZiMCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9hZTI2ZjgwNWU2ZjU0M2Q0YmQ3ODdkOTkzZGM5MDkzOC5iaW5kUG9wdXAocG9wdXBfY2VkY2U4NDJkMGEyNDE4NjhlZGRmYTFlMGUwZjdiOGIpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfODNmNmU3MmZlM2M4NDBmZmFlZTMxZmYzYjAxYWJiMWQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40ODUsIC0wLjYxXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF80NzIzZDU1MTYwNmE0ZTFhYWUzMThkZWRiYzMxZWIxNiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNDdiMDJjOWJiMDc4NGM1YzliZjQ0N2U2NDIwM2UwNTMgPSAkKGA8ZGl2IGlkPSJodG1sXzQ3YjAyYzliYjA3ODRjNWM5YmY0NDdlNjQyMDNlMDUzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5SaWNreS1UaWNrPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzQ3MjNkNTUxNjA2YTRlMWFhZTMxOGRlZGJjMzFlYjE2LnNldENvbnRlbnQoaHRtbF80N2IwMmM5YmIwNzg0YzVjOWJmNDQ3ZTY0MjAzZTA1Myk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl84M2Y2ZTcyZmUzYzg0MGZmYWVlMzFmZjNiMDFhYmIxZC5iaW5kUG9wdXAocG9wdXBfNDcyM2Q1NTE2MDZhNGUxYWFlMzE4ZGVkYmMzMWViMTYpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfODUyNDY1MWZmNDdjNDczYTkwZTExMDdjNGY3ZDNmMWUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41NDMxLCAtMC4xNDkxNjddLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzgwZWZjYjI0YTUyZjRlMjFiMzA2Yzc3ZDYxMzBhZmM0ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF83ZjYzODY3ODA1N2I0ODc2ODQ5ZjliZmRmZmIyZmE4MiA9ICQoYDxkaXYgaWQ9Imh0bWxfN2Y2Mzg2NzgwNTdiNDg3Njg0OWY5YmZkZmZiMmZhODIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRoZSBCYXJmbHk8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfODBlZmNiMjRhNTJmNGUyMWIzMDZjNzdkNjEzMGFmYzQuc2V0Q29udGVudChodG1sXzdmNjM4Njc4MDU3YjQ4NzY4NDlmOWJmZGZmYjJmYTgyKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzg1MjQ2NTFmZjQ3YzQ3M2E5MGUxMTA3YzRmN2QzZjFlLmJpbmRQb3B1cChwb3B1cF84MGVmY2IyNGE1MmY0ZTIxYjMwNmM3N2Q2MTMwYWZjNCkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl9jMzg2NzQ5NGEzM2U0ZGE2YmQ0ZmU4NzFlMWU5ZWZjNCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUyLjYzMTMsIC0xLjEzNzJdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzNlZTM3ZjU5YmRhMTRiNDRhOGQ0NTU4ZTkyNDcyMTYwID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8wMDEyYTQxMjM2MjA0ZGJjYThlNmM4MGYyYzY3MzEzMSA9ICQoYDxkaXYgaWQ9Imh0bWxfMDAxMmE0MTIzNjIwNGRiY2E4ZTZjODBmMmM2NzMxMzEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRoZSBDaGFybG90dGU8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfM2VlMzdmNTliZGExNGI0NGE4ZDQ1NThlOTI0NzIxNjAuc2V0Q29udGVudChodG1sXzAwMTJhNDEyMzYyMDRkYmNhOGU2YzgwZjJjNjczMTMxKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2MzODY3NDk0YTMzZTRkYTZiZDRmZTg3MWUxZTllZmM0LmJpbmRQb3B1cChwb3B1cF8zZWUzN2Y1OWJkYTE0YjQ0YThkNDU1OGU5MjQ3MjE2MCkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl9hMzU2NDUzNmQ2MmU0YjYxODIxZmU5OGVhZGI5YzI0ZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjI3MjgsIDAuNTIzMzMzXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF84ZTFmMTZkNjJkMGI0YjM2YjMwOTE1MDI0YjViODE2MiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfY2M2ZmUwY2EyMzExNGI1ZThhNzQxZjk2YmQzODI5ZGMgPSAkKGA8ZGl2IGlkPSJodG1sX2NjNmZlMGNhMjMxMTRiNWU4YTc0MWY5NmJkMzgyOWRjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5UaGUgTG9mdCAoS2VudCk8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfOGUxZjE2ZDYyZDBiNGIzNmIzMDkxNTAyNGI1YjgxNjIuc2V0Q29udGVudChodG1sX2NjNmZlMGNhMjMxMTRiNWU4YTc0MWY5NmJkMzgyOWRjKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2EzNTY0NTM2ZDYyZTRiNjE4MjFmZTk4ZWFkYjljMjRmLmJpbmRQb3B1cChwb3B1cF84ZTFmMTZkNjJkMGI0YjM2YjMwOTE1MDI0YjViODE2MikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl8zNjc1Nzk1MzU0MTk0NDg1OGU2NzkyOWNjM2ZjN2E5NiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjU0OSwgLTAuMDc2XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8zZTk0NWY3NTQ3YTY0OWRkYWQzODA1MzZhMjVjMzg4NyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfM2I1Mjc4NzE3NDUxNGM0MWEyNzVmNjBlMWJkMmZjNTggPSAkKGA8ZGl2IGlkPSJodG1sXzNiNTI3ODcxNzQ1MTRjNDFhMjc1ZjYwZTFiZDJmYzU4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Wb3J0ZXggSmF6eiBDbHViPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzNlOTQ1Zjc1NDdhNjQ5ZGRhZDM4MDUzNmEyNWMzODg3LnNldENvbnRlbnQoaHRtbF8zYjUyNzg3MTc0NTE0YzQxYTI3NWY2MGUxYmQyZmM1OCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8zNjc1Nzk1MzU0MTk0NDg1OGU2NzkyOWNjM2ZjN2E5Ni5iaW5kUG9wdXAocG9wdXBfM2U5NDVmNzU0N2E2NDlkZGFkMzgwNTM2YTI1YzM4ODcpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfYTQ0ZjkwYzg5NDkxNGQ1MThjYzg1NmIyZmE5ZDFlMWYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1Mi45NTQ0LCAtMS4xNTYzOV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMzMxMjgwMTE1YTU3NDNlYTg1MDQwNDI4MTM4NjAxMGIgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzVhZWQxODBiMDQyMjQwODNiOThjYzQxMjUyNjhlOGRjID0gJChgPGRpdiBpZD0iaHRtbF81YWVkMTgwYjA0MjI0MDgzYjk4Y2M0MTI1MjY4ZThkYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QWxiZXJ0IEhhbGwsIE5vdHRpbmdoYW08L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfMzMxMjgwMTE1YTU3NDNlYTg1MDQwNDI4MTM4NjAxMGIuc2V0Q29udGVudChodG1sXzVhZWQxODBiMDQyMjQwODNiOThjYzQxMjUyNjhlOGRjKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2E0NGY5MGM4OTQ5MTRkNTE4Y2M4NTZiMmZhOWQxZTFmLmJpbmRQb3B1cChwb3B1cF8zMzEyODAxMTVhNTc0M2VhODUwNDA0MjgxMzg2MDEwYikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl8wMTU2ODJkOWQzZmM0ZWNlYTk3M2Y5OTBlMTY3ZmFmNCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjgxLCAtMS41N10sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfNGM2NGRmOTdhODliNGNjMzkyOTllZjVhNjk0NzhiMjAgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzlhNTMzNWRjMzBmNDQ1YzhhNTNiM2NhYmQ3OTE0NjY3ID0gJChgPGRpdiBpZD0iaHRtbF85YTUzMzVkYzMwZjQ0NWM4YTUzYjNjYWJkNzkxNDY2NyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QnJ1ZGVuZWxsIFNvY2lhbCBDbHViPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzRjNjRkZjk3YTg5YjRjYzM5Mjk5ZWY1YTY5NDc4YjIwLnNldENvbnRlbnQoaHRtbF85YTUzMzVkYzMwZjQ0NWM4YTUzYjNjYWJkNzkxNDY2Nyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8wMTU2ODJkOWQzZmM0ZWNlYTk3M2Y5OTBlMTY3ZmFmNC5iaW5kUG9wdXAocG9wdXBfNGM2NGRmOTdhODliNGNjMzkyOTllZjVhNjk0NzhiMjApCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMDVhYWVhNjBhZGNlNDczMWJlYzI1MjM5NTRiZmJlOTAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41MTQzLCAtMC4wNTNdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzllNjlkN2JjZDBkNDQ0ZTk4MDg0NTE0MmJlOTkwMzJiID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9kZGY1MjI0YTMwNjA0MzE1YjJhMTY3MTg4YzM0ZThiMyA9ICQoYDxkaXYgaWQ9Imh0bWxfZGRmNTIyNGEzMDYwNDMxNWIyYTE2NzE4OGMzNGU4YjMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkdlb3JnZSBUYXZlcm48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfOWU2OWQ3YmNkMGQ0NDRlOTgwODQ1MTQyYmU5OTAzMmIuc2V0Q29udGVudChodG1sX2RkZjUyMjRhMzA2MDQzMTViMmExNjcxODhjMzRlOGIzKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzA1YWFlYTYwYWRjZTQ3MzFiZWMyNTIzOTU0YmZiZTkwLmJpbmRQb3B1cChwb3B1cF85ZTY5ZDdiY2QwZDQ0NGU5ODA4NDUxNDJiZTk5MDMyYikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl80ZjIyMWI0MzQwZGU0ZmQyOTVhNzM4NmNlYTJiMjkyMCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQ2MzIsIC0yLjU4OTUyXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9lNTczM2E4NjdjNzQ0MDZkOWFmMWRlNTY3ZTM3YWYwYSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfOGMyODk4MDA5MmU0NDhiNmE3NDY0ZTIwODBmMGVjY2MgPSAkKGA8ZGl2IGlkPSJodG1sXzhjMjg5ODAwOTJlNDQ4YjZhNzQ2NGUyMDgwZjBlY2NjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MYWtvdGEgKGNsdWIpPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2U1NzMzYTg2N2M3NDQwNmQ5YWYxZGU1NjdlMzdhZjBhLnNldENvbnRlbnQoaHRtbF84YzI4OTgwMDkyZTQ0OGI2YTc0NjRlMjA4MGYwZWNjYyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl80ZjIyMWI0MzQwZGU0ZmQyOTVhNzM4NmNlYTJiMjkyMC5iaW5kUG9wdXAocG9wdXBfZTU3MzNhODY3Yzc0NDA2ZDlhZjFkZTU2N2UzN2FmMGEpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfNGNjMTUyZjU0MTE1NDc0MmJkYjkyMjc2NjdlOGNiOTggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40NjMyLCAtMi41ODk1Ml0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfODNjOWYyZWYwODhkNDY0MThhYTIyYjI5M2ViYTM0MmUgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzFiMTY5MDJjOGY2ZDRmMzZhZGExMzRlMGE1MDhhZmY3ID0gJChgPGRpdiBpZD0iaHRtbF8xYjE2OTAyYzhmNmQ0ZjM2YWRhMTM0ZTBhNTA4YWZmNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TGFrb3RhIChjbHViKTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF84M2M5ZjJlZjA4OGQ0NjQxOGFhMjJiMjkzZWJhMzQyZS5zZXRDb250ZW50KGh0bWxfMWIxNjkwMmM4ZjZkNGYzNmFkYTEzNGUwYTUwOGFmZjcpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfNGNjMTUyZjU0MTE1NDc0MmJkYjkyMjc2NjdlOGNiOTguYmluZFBvcHVwKHBvcHVwXzgzYzlmMmVmMDg4ZDQ2NDE4YWEyMmIyOTNlYmEzNDJlKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2I3NGQ2ZDI3NzgxYzRlZGU5ODNhZDZlYzQ2MjgzZWQ3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTMuODAyLCAtMS41NDcwN10sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMzhiZjVhNGQ5MjZkNGRmMmE0ZGY0OGVmODQ4YTg0MjQgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2RlMGU5NDUwM2MyMjQ3ZTFhNzBkYWQ3NzE4N2FjMGViID0gJChgPGRpdiBpZD0iaHRtbF9kZTBlOTQ1MDNjMjI0N2UxYTcwZGFkNzcxODdhYzBlYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TzIgQWNhZGVteSBMZWVkczwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8zOGJmNWE0ZDkyNmQ0ZGYyYTRkZjQ4ZWY4NDhhODQyNC5zZXRDb250ZW50KGh0bWxfZGUwZTk0NTAzYzIyNDdlMWE3MGRhZDc3MTg3YWMwZWIpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfYjc0ZDZkMjc3ODFjNGVkZTk4M2FkNmVjNDYyODNlZDcuYmluZFBvcHVwKHBvcHVwXzM4YmY1YTRkOTI2ZDRkZjJhNGRmNDhlZjg0OGE4NDI0KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzk1NTg1N2E1NDM2YTRmOTg4OGQ0NGUxMzljOGMxNzMyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTMuMzgyLCAtMS40NjU1XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF80NWJiMTRlZmQxMDU0OGM0OWU1NDlkMThkNTNmMzM4NiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfMDFiYzA3YjBiMjYxNGQwMzg2OTg0NDg1MTIyMzdiNjUgPSAkKGA8ZGl2IGlkPSJodG1sXzAxYmMwN2IwYjI2MTRkMDM4Njk4NDQ4NTEyMjM3YjY1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PMiBBY2FkZW15IFNoZWZmaWVsZDwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF80NWJiMTRlZmQxMDU0OGM0OWU1NDlkMThkNTNmMzM4Ni5zZXRDb250ZW50KGh0bWxfMDFiYzA3YjBiMjYxNGQwMzg2OTg0NDg1MTIyMzdiNjUpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfOTU1ODU3YTU0MzZhNGY5ODg4ZDQ0ZTEzOWM4YzE3MzIuYmluZFBvcHVwKHBvcHVwXzQ1YmIxNGVmZDEwNTQ4YzQ5ZTU0OWQxOGQ1M2YzMzg2KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzk1NTg2ZTBkYTY4MTQ0MDU5ODhjOTk2ZjNmOWIxNzgwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTQuMDc5MywgLTAuMTk2NDNdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2RjZmNhMzBmYTlmMjRmZTE5YjIyNWY1MWZlMDUwODMxID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8yNmU4Njc3MDUzZTc0NmU3YmUwNGQ3ZjdkMDhkYjFkYSA9ICQoYDxkaXYgaWQ9Imh0bWxfMjZlODY3NzA1M2U3NDZlN2JlMDRkN2Y3ZDA4ZGIxZGEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRoZSBTcGEsIEJyaWRsaW5ndG9uPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2RjZmNhMzBmYTlmMjRmZTE5YjIyNWY1MWZlMDUwODMxLnNldENvbnRlbnQoaHRtbF8yNmU4Njc3MDUzZTc0NmU3YmUwNGQ3ZjdkMDhkYjFkYSk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl85NTU4NmUwZGE2ODE0NDA1OTg4Yzk5NmYzZjliMTc4MC5iaW5kUG9wdXAocG9wdXBfZGNmY2EzMGZhOWYyNGZlMTliMjI1ZjUxZmUwNTA4MzEpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfOTc1NjYyY2ZhNWU5NDg2OTliZmZhNTIwZTU5YTU1MjQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40ODg5LCAtMC4xOTE2NjddLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2UyZDVmMmRhMmQ1MTQxMzY5ZGY1Y2VlMGI5Y2U2MzA3ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF84ZjAzNjA1OTdjYmY0M2YwYWRjNmRlZmM0NmFlNjY1YyA9ICQoYDxkaXYgaWQ9Imh0bWxfOGYwMzYwNTk3Y2JmNDNmMGFkYzZkZWZjNDZhZTY2NWMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRoZSBUcm91YmFkb3VyLCBMb25kb248L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfZTJkNWYyZGEyZDUxNDEzNjlkZjVjZWUwYjljZTYzMDcuc2V0Q29udGVudChodG1sXzhmMDM2MDU5N2NiZjQzZjBhZGM2ZGVmYzQ2YWU2NjVjKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzk3NTY2MmNmYTVlOTQ4Njk5YmZmYTUyMGU1OWE1NTI0LmJpbmRQb3B1cChwb3B1cF9lMmQ1ZjJkYTJkNTE0MTM2OWRmNWNlZTBiOWNlNjMwNykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl80MjcxY2QwZDE3OWU0MzJiYmYxOTY4MTM2OGI4YTE2ZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQ1MzgsIC0wLjEyMTkxXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF80YjU2MjczZDBmMTY0N2Q0YWI4NDc0ZWYxZjc2YTcyYyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfZjIyYTI3ZWE3ODIwNDUzODhhMTJmMTdiYWZlYjA5ODUgPSAkKGA8ZGl2IGlkPSJodG1sX2YyMmEyN2VhNzgyMDQ1Mzg4YTEyZjE3YmFmZWIwOTg1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5UaGUgV2luZG1pbGwsIEJyaXh0b248L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfNGI1NjI3M2QwZjE2NDdkNGFiODQ3NGVmMWY3NmE3MmMuc2V0Q29udGVudChodG1sX2YyMmEyN2VhNzgyMDQ1Mzg4YTEyZjE3YmFmZWIwOTg1KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzQyNzFjZDBkMTc5ZTQzMmJiZjE5NjgxMzY4YjhhMTZlLmJpbmRQb3B1cChwb3B1cF80YjU2MjczZDBmMTY0N2Q0YWI4NDc0ZWYxZjc2YTcyYykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl8wMzI4MTI3NjJlZmM0MzBiYjgwMzEzZTJlMDE0NWNjZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQyNCwgLTAuMDY5MV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfNmQ2OWRiZWY2NTBhNGMyMzgzNDIwYWFlM2U4MzhlZGYgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzA1MjJlY2FjZGQzNDQ2N2Q5NmU0ZDM3NTBmOTE2OGJiID0gJChgPGRpdiBpZD0iaHRtbF8wNTIyZWNhY2RkMzQ0NjdkOTZlNGQzNzUwZjkxNjhiYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q3J5c3RhbCBQYWxhY2UgUGFyayBDb25jZXJ0IFBsYXRmb3JtPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzZkNjlkYmVmNjUwYTRjMjM4MzQyMGFhZTNlODM4ZWRmLnNldENvbnRlbnQoaHRtbF8wNTIyZWNhY2RkMzQ0NjdkOTZlNGQzNzUwZjkxNjhiYik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8wMzI4MTI3NjJlZmM0MzBiYjgwMzEzZTJlMDE0NWNjZi5iaW5kUG9wdXAocG9wdXBfNmQ2OWRiZWY2NTBhNGMyMzgzNDIwYWFlM2U4MzhlZGYpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfZGVjMzU3NzRlYjRiNDQwNjliMzU4MWU2M2YxZDI2YTEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MC43NjQ1LCAwLjI4OTQ0NF0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMDRlMTRiZTFiODVlNDJlMjgxODNmNTQwNTE3YTBmOGMgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzJkNDRmMTliYmYyZDQ3YjZhY2NkM2E3YThiMjk3MTc2ID0gJChgPGRpdiBpZD0iaHRtbF8yZDQ0ZjE5YmJmMmQ0N2I2YWNjZDNhN2E4YjI5NzE3NiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RWFzdGJvdXJuZSBCYW5kc3RhbmQ8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfMDRlMTRiZTFiODVlNDJlMjgxODNmNTQwNTE3YTBmOGMuc2V0Q29udGVudChodG1sXzJkNDRmMTliYmYyZDQ3YjZhY2NkM2E3YThiMjk3MTc2KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2RlYzM1Nzc0ZWI0YjQ0MDY5YjM1ODFlNjNmMWQyNmExLmJpbmRQb3B1cChwb3B1cF8wNGUxNGJlMWI4NWU0MmUyODE4M2Y1NDA1MTdhMGY4YykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl8zMzMxNzNkMTk0OGU0NGU1ODBjNDg5ODY0NTNlMDdmMCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQ1MzMsIC0yLjYwMTY3XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9mMTMwMDc0NjUzOTk0N2Y2OTIxZWM5YTA1ZjY4ZDhjNiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNDY4YjljZTU2ZTMzNDdhMWJmNWFiYmM4ODBjYmQxZmMgPSAkKGA8ZGl2IGlkPSJodG1sXzQ2OGI5Y2U1NmUzMzQ3YTFiZjVhYmJjODgwY2JkMWZjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NYXVyZXRhbmlhIFB1YmxpYyBIb3VzZTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9mMTMwMDc0NjUzOTk0N2Y2OTIxZWM5YTA1ZjY4ZDhjNi5zZXRDb250ZW50KGh0bWxfNDY4YjljZTU2ZTMzNDdhMWJmNWFiYmM4ODBjYmQxZmMpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfMzMzMTczZDE5NDhlNDRlNTgwYzQ4OTg2NDUzZTA3ZjAuYmluZFBvcHVwKHBvcHVwX2YxMzAwNzQ2NTM5OTQ3ZjY5MjFlYzlhMDVmNjhkOGM2KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzQyNWQ3YTk2MDAwODRhZjI4NGRkZjc3Y2JkMDVlZGFiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTYwOCwgLTAuMTIzNjExXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9mZGVkYzVkNGY2N2Y0MTdmYmNiNWMxYjBjOWQyZjdiZCA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfYTAwMzVjNmVlMDY4NDgzNmI2MGIwNGE1MTNmNmY1OWUgPSAkKGA8ZGl2IGlkPSJodG1sX2EwMDM1YzZlZTA2ODQ4MzZiNjBiMDRhNTEzZjZmNTllIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OYW1idWNjYSAodmVudWUpPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2ZkZWRjNWQ0ZjY3ZjQxN2ZiY2I1YzFiMGM5ZDJmN2JkLnNldENvbnRlbnQoaHRtbF9hMDAzNWM2ZWUwNjg0ODM2YjYwYjA0YTUxM2Y2ZjU5ZSk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl80MjVkN2E5NjAwMDg0YWYyODRkZGY3N2NiZDA1ZWRhYi5iaW5kUG9wdXAocG9wdXBfZmRlZGM1ZDRmNjdmNDE3ZmJjYjVjMWIwYzlkMmY3YmQpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfM2Y5NTFhM2ZjNjk5NDU1MTlhOWI2YmYxZjc5ZTYxMDYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1Mi42MzE2LCAxLjI4NzhdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzczMGNhOGUxMzgwZTQzYTk5MWRlZTAwYTBhZTE2YzMyID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF85MTA2NjIxN2I1ZDQ0MGYwOTYzY2RiNjRhOGU5M2VjMiA9ICQoYDxkaXYgaWQ9Imh0bWxfOTEwNjYyMTdiNWQ0NDBmMDk2M2NkYjY0YThlOTNlYzIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5vcndpY2ggQXJ0cyBDZW50cmU8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfNzMwY2E4ZTEzODBlNDNhOTkxZGVlMDBhMGFlMTZjMzIuc2V0Q29udGVudChodG1sXzkxMDY2MjE3YjVkNDQwZjA5NjNjZGI2NGE4ZTkzZWMyKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzNmOTUxYTNmYzY5OTQ1NTE5YTliNmJmMWY3OWU2MTA2LmJpbmRQb3B1cChwb3B1cF83MzBjYThlMTM4MGU0M2E5OTFkZWUwMGEwYWUxNmMzMikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl8yMGRlNGQwMDQ2YmE0NWU2OGVmN2M3NzA4MDU2YmFiYyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjkxMiwgLTIuMDY3MzVdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2VmMWY5NjUyZDZmMDRlMGU4N2FlYjRkYmIwZDg0N2M0ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF83NjczMzRhYjQwZWE0YzM2OTVjMGEyMWExOWZhOTU3MCA9ICQoYDxkaXYgaWQ9Imh0bWxfNzY3MzM0YWI0MGVhNGMzNjk1YzBhMjFhMTlmYTk1NzAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlBpdHR2aWxsZSBQdW1wIFJvb208L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfZWYxZjk2NTJkNmYwNGUwZTg3YWViNGRiYjBkODQ3YzQuc2V0Q29udGVudChodG1sXzc2NzMzNGFiNDBlYTRjMzY5NWMwYTIxYTE5ZmE5NTcwKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzIwZGU0ZDAwNDZiYTQ1ZTY4ZWY3Yzc3MDgwNTZiYWJjLmJpbmRQb3B1cChwb3B1cF9lZjFmOTY1MmQ2ZjA0ZTBlODdhZWI0ZGJiMGQ4NDdjNCkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl85MThiOWM3NjAyYjA0MWQ5ODEwNzYyZDk2ZTdhNTM4MSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjUxMTcsIC0wLjA3NjUyNzhdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzg5Mzk2YTVhZDEwZjRkMGZiNTM0OWEyNzVkOGFlYjJjID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9hZGU0YzBjNzU4YWQ0NTkzYTFjZTkzOTM5ZWUwZTM4ZiA9ICQoYDxkaXYgaWQ9Imh0bWxfYWRlNGMwYzc1OGFkNDU5M2ExY2U5MzkzOWVlMGUzOGYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRoZSBXYXlvdXQgQ2x1YjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF84OTM5NmE1YWQxMGY0ZDBmYjUzNDlhMjc1ZDhhZWIyYy5zZXRDb250ZW50KGh0bWxfYWRlNGMwYzc1OGFkNDU5M2ExY2U5MzkzOWVlMGUzOGYpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfOTE4YjljNzYwMmIwNDFkOTgxMDc2MmQ5NmU3YTUzODEuYmluZFBvcHVwKHBvcHVwXzg5Mzk2YTVhZDEwZjRkMGZiNTM0OWEyNzVkOGFlYjJjKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzM3ZmUwY2JkNWRhNDQ3MjY5MjEzMmQ3ZTRlMWNlYmJhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNDg4NywgLTAuMjM3Ml0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfYzNlODA5NWJhZjc0NDVjM2E5NDEyMjNlOWRkMTA0YTMgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2RmODJiMjk5ZjdjYjQxNTQ4YjM3MDU5NzU4MzA3NTdlID0gJChgPGRpdiBpZD0iaHRtbF9kZjgyYjI5OWY3Y2I0MTU0OGIzNzA1OTc1ODMwNzU3ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V2F0aGVuIEhhbGw8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfYzNlODA5NWJhZjc0NDVjM2E5NDEyMjNlOWRkMTA0YTMuc2V0Q29udGVudChodG1sX2RmODJiMjk5ZjdjYjQxNTQ4YjM3MDU5NzU4MzA3NTdlKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzM3ZmUwY2JkNWRhNDQ3MjY5MjEzMmQ3ZTRlMWNlYmJhLmJpbmRQb3B1cChwb3B1cF9jM2U4MDk1YmFmNzQ0NWMzYTk0MTIyM2U5ZGQxMDRhMykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl9iOTgzNzJlN2QwYjI0MjU4YWNjNDIwNTQ4ODM3ZmMxYyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjQ3NTMsIC0yLjI0NTgzXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9lMWRiZTk3ZGFiODE0ZmMyODE2ZDI5MmI5MGZkOTkwNiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfYmEwNDczM2Q4MzY2NGEzZTkyZDZhMjUyZWVhMmZhZDMgPSAkKGA8ZGl2IGlkPSJodG1sX2JhMDQ3MzNkODM2NjRhM2U5MmQ2YTI1MmVlYTJmYWQzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CcmlkZ2V3YXRlciBIYWxsPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2UxZGJlOTdkYWI4MTRmYzI4MTZkMjkyYjkwZmQ5OTA2LnNldENvbnRlbnQoaHRtbF9iYTA0NzMzZDgzNjY0YTNlOTJkNmEyNTJlZWEyZmFkMyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9iOTgzNzJlN2QwYjI0MjU4YWNjNDIwNTQ4ODM3ZmMxYy5iaW5kUG9wdXAocG9wdXBfZTFkYmU5N2RhYjgxNGZjMjgxNmQyOTJiOTBmZDk5MDYpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfYjI1N2VkMmM5ZjE2NGJiMGJiM2JjYjE0ZDhmOTE2NzMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS4zNzIyLCAtMC4wOTU4MzMzXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF82NTI3YTJjMDc1MWM0Y2RkYjUwZWQ0OWI3NDVmNjRlNSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfODcxYWQ2MzM3YTk4NDQ1ODk5MzAxMmY1MGNjMzIxMWIgPSAkKGA8ZGl2IGlkPSJodG1sXzg3MWFkNjMzN2E5ODQ0NTg5OTMwMTJmNTBjYzMyMTFiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5GYWlyZmllbGQgSGFsbHM8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfNjUyN2EyYzA3NTFjNGNkZGI1MGVkNDliNzQ1ZjY0ZTUuc2V0Q29udGVudChodG1sXzg3MWFkNjMzN2E5ODQ0NTg5OTMwMTJmNTBjYzMyMTFiKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2IyNTdlZDJjOWYxNjRiYjBiYjNiY2IxNGQ4ZjkxNjczLmJpbmRQb3B1cChwb3B1cF82NTI3YTJjMDc1MWM0Y2RkYjUwZWQ0OWI3NDVmNjRlNSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl80YmYxNTc2NjdjMmY0MDMzOWU3OTE4YjgwNjdhY2JlYiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQ5MDcsIC0wLjIyNDQ1OF0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfZjgyMjFkMTc2ODRjNDkzYThlZDE3M2FiZTAwMDcwODcgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzRiOWY4MzRlNjA0OTQ2NmI4OTg0N2QwMzg0MDU1ZjE4ID0gJChgPGRpdiBpZD0iaHRtbF80YjlmODM0ZTYwNDk0NjZiODk4NDdkMDM4NDA1NWYxOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+SGFtbWVyc21pdGggQXBvbGxvPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2Y4MjIxZDE3Njg0YzQ5M2E4ZWQxNzNhYmUwMDA3MDg3LnNldENvbnRlbnQoaHRtbF80YjlmODM0ZTYwNDk0NjZiODk4NDdkMDM4NDA1NWYxOCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl80YmYxNTc2NjdjMmY0MDMzOWU3OTE4YjgwNjdhY2JlYi5iaW5kUG9wdXAocG9wdXBfZjgyMjFkMTc2ODRjNDkzYThlZDE3M2FiZTAwMDcwODcpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfZjQwYzc1NGQ4NDMyNDQyZGJhOTk3NjYyN2MyYzU2M2UgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41MTU4LCAtMC4xMzA1NTZdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzIzNmE2OWVmNzM1OTRlNzhhOWZiMjM2ZDViYjY5MTBlID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF81YzI3NjliZGE3MDg0MmRhODhkZDRhNDk4YTk3YTBmZiA9ICQoYDxkaXYgaWQ9Imh0bWxfNWMyNzY5YmRhNzA4NDJkYTg4ZGQ0YTQ5OGE5N2EwZmYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxvbmRvbiBBc3RvcmlhPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzIzNmE2OWVmNzM1OTRlNzhhOWZiMjM2ZDViYjY5MTBlLnNldENvbnRlbnQoaHRtbF81YzI3NjliZGE3MDg0MmRhODhkZDRhNDk4YTk3YTBmZik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9mNDBjNzU0ZDg0MzI0NDJkYmE5OTc2NjI3YzJjNTYzZS5iaW5kUG9wdXAocG9wdXBfMjM2YTY5ZWY3MzU5NGU3OGE5ZmIyMzZkNWJiNjkxMGUpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfNjBiMWZiMzllYjFjNDkzNGIyOGU4ZmQyYmYyYjVhZTkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1Mi40NTI5LCAtMS45MDM5XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9mNGE5Y2JhYmE3ZmI0NTdiYTVkMTM5ODg2NGE3MWM1NCA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfOTZkYjI5NDIwNDIzNGQ3MjllZmNjZTg4ZDllNWZjNmUgPSAkKGA8ZGl2IGlkPSJodG1sXzk2ZGIyOTQyMDQyMzRkNzI5ZWZjY2U4OGQ5ZTVmYzZlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NYWMgKEJpcm1pbmdoYW0pPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2Y0YTljYmFiYTdmYjQ1N2JhNWQxMzk4ODY0YTcxYzU0LnNldENvbnRlbnQoaHRtbF85NmRiMjk0MjA0MjM0ZDcyOWVmY2NlODhkOWU1ZmM2ZSk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl82MGIxZmIzOWViMWM0OTM0YjI4ZThmZDJiZjJiNWFlOS5iaW5kUG9wdXAocG9wdXBfZjRhOWNiYWJhN2ZiNDU3YmE1ZDEzOTg4NjRhNzFjNTQpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMDQyMDRmYTNhZGIwNDQ5N2JhYTY1OGY5YjkxZDdmZTAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1NC45NzE3LCAtMS42MDUxXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8wNGYxNTUzYWM5ZGY0MmE4YTExYTk2MjAzMDE2NGEwYiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfMjVjNWY0ODFiNTliNDkwN2E3NGY0ZTUwNjNiMWJjNGMgPSAkKGA8ZGl2IGlkPSJodG1sXzI1YzVmNDgxYjU5YjQ5MDdhNzRmNGU1MDYzYjFiYzRjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5SaXZlcnNpZGUgKG11c2ljIHZlbnVlKTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8wNGYxNTUzYWM5ZGY0MmE4YTExYTk2MjAzMDE2NGEwYi5zZXRDb250ZW50KGh0bWxfMjVjNWY0ODFiNTliNDkwN2E3NGY0ZTUwNjNiMWJjNGMpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfMDQyMDRmYTNhZGIwNDQ5N2JhYTY1OGY5YjkxZDdmZTAuYmluZFBvcHVwKHBvcHVwXzA0ZjE1NTNhYzlkZjQyYThhMTFhOTYyMDMwMTY0YTBiKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzAxMzEyZDE2ZWIyNzQ5ZWE5Y2U4MjZlYzAzOWVjNjQxID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNDg4MywgLTAuMjI4MDgzXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF85ODAwMDY0MTFjYmE0ZjE1YTFlMjY4ZjFhYzQyMjhhOCA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNThiNjA0MGU4MWEyNDZhMjliY2E5Y2NjNzBiNjk3ZWYgPSAkKGA8ZGl2IGlkPSJodG1sXzU4YjYwNDBlODFhMjQ2YTI5YmNhOWNjYzcwYjY5N2VmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5SaXZlcnNpZGUgU3R1ZGlvczwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF85ODAwMDY0MTFjYmE0ZjE1YTFlMjY4ZjFhYzQyMjhhOC5zZXRDb250ZW50KGh0bWxfNThiNjA0MGU4MWEyNDZhMjliY2E5Y2NjNzBiNjk3ZWYpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfMDEzMTJkMTZlYjI3NDllYTljZTgyNmVjMDM5ZWM2NDEuYmluZFBvcHVwKHBvcHVwXzk4MDAwNjQxMWNiYTRmMTVhMWUyNjhmMWFjNDIyOGE4KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzU0NzcyNDY5ODdlMjRkMDc4MTJkY2E5MzAyNzcxMGViID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNzY0NywgLTczLjk3NzhdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzY5OTQzZDY1MmQ4ZDQ2YWZhZWUzODI0NjU4OGJjNTRiID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9lNTFhOGI2M2ZlNzc0ODI2YTg5MWQ0ZGNiMTgyNjNkNiA9ICQoYDxkaXYgaWQ9Imh0bWxfZTUxYThiNjNmZTc3NDgyNmE4OTFkNGRjYjE4MjYzZDYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlN0ZWlud2F5IEhhbGw8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfNjk5NDNkNjUyZDhkNDZhZmFlZTM4MjQ2NTg4YmM1NGIuc2V0Q29udGVudChodG1sX2U1MWE4YjYzZmU3NzQ4MjZhODkxZDRkY2IxODI2M2Q2KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzU0NzcyNDY5ODdlMjRkMDc4MTJkY2E5MzAyNzcxMGViLmJpbmRQb3B1cChwb3B1cF82OTk0M2Q2NTJkOGQ0NmFmYWVlMzgyNDY1ODhiYzU0YikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl80NmIwMTMxMjFiNGQ0NDNhYWU4YTI1MjE2ZjFhNmFhMSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjU1MjIsIC0wLjE0MjJdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzlmMDE3M2JjNTc3NjQzMDU4NjA3MGMzZGViODYxNWNjID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8xMTYyMjMyNmViNTg0ZDFjOWMwMjlkMzRkMzUzYWQ0ZCA9ICQoYDxkaXYgaWQ9Imh0bWxfMTE2MjIzMjZlYjU4NGQxYzljMDI5ZDM0ZDM1M2FkNGQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRoZSBGb3J1bSwgTG9uZG9uPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzlmMDE3M2JjNTc3NjQzMDU4NjA3MGMzZGViODYxNWNjLnNldENvbnRlbnQoaHRtbF8xMTYyMjMyNmViNTg0ZDFjOWMwMjlkMzRkMzUzYWQ0ZCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl80NmIwMTMxMjFiNGQ0NDNhYWU4YTI1MjE2ZjFhNmFhMS5iaW5kUG9wdXAocG9wdXBfOWYwMTczYmM1Nzc2NDMwNTg2MDcwYzNkZWI4NjE1Y2MpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfYWZjNTkyMTc3Y2ExNDY1MzkxZTA4YjljYjE1ODkyMzcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41MDUsIC0wLjA3OTE2NjddLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2UxYWU1M2M3NzBjYTQzODViYjFkZjc3OWQxNjE0N2Q2ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8xYThjZGY1YmIxODE0NmYyOTU1NGZjMjhjOTc1OWJkYiA9ICQoYDxkaXYgaWQ9Imh0bWxfMWE4Y2RmNWJiMTgxNDZmMjk1NTRmYzI4Yzk3NTliZGIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRoZSBTY29vcDwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9lMWFlNTNjNzcwY2E0Mzg1YmIxZGY3NzlkMTYxNDdkNi5zZXRDb250ZW50KGh0bWxfMWE4Y2RmNWJiMTgxNDZmMjk1NTRmYzI4Yzk3NTliZGIpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfYWZjNTkyMTc3Y2ExNDY1MzkxZTA4YjljYjE1ODkyMzcuYmluZFBvcHVwKHBvcHVwX2UxYWU1M2M3NzBjYTQzODViYjFkZjc3OWQxNjE0N2Q2KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2U5OTAzYTc4MDgzOTRkZWJhOGFkODMyYTk2Njg0YTViID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTMuMDIyNiwgLTIuMTgwNV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMGIxNTNhMjliMmQyNDFlYjllMDZiZjE2ZDVmNjM2ZGIgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzViNGFkMTk2MjQ2MjQyZGQ4Yjk1YWY1NDY4NGRlZjcwID0gJChgPGRpdiBpZD0iaHRtbF81YjRhZDE5NjI0NjI0MmRkOGI5NWFmNTQ2ODRkZWY3MCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VGhlIFVuZGVyZ3JvdW5kIChTdG9rZSBjb25jZXJ0IHZlbnVlKTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8wYjE1M2EyOWIyZDI0MWViOWUwNmJmMTZkNWY2MzZkYi5zZXRDb250ZW50KGh0bWxfNWI0YWQxOTYyNDYyNDJkZDhiOTVhZjU0Njg0ZGVmNzApOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfZTk5MDNhNzgwODM5NGRlYmE4YWQ4MzJhOTY2ODRhNWIuYmluZFBvcHVwKHBvcHVwXzBiMTUzYTI5YjJkMjQxZWI5ZTA2YmYxNmQ1ZjYzNmRiKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2NkZDlkMjZhYmY0ZDRjNTI4ZGI4ZWNhZGFhMjliYTQ5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuMTI2OSwgMC4yNTgzMzNdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2UxMTBlOTdjNjBjNzQ1ZmY4NDE1OTFhMzA5MWViODdlID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9lOWMzZDU2NjAwNDI0NTI2ODY2ZjY1MDBmOTVlNzExMCA9ICQoYDxkaXYgaWQ9Imh0bWxfZTljM2Q1NjYwMDQyNDUyNjg2NmY2NTAwZjk1ZTcxMTAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlR1bmJyaWRnZSBXZWxscyBGb3J1bTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9lMTEwZTk3YzYwYzc0NWZmODQxNTkxYTMwOTFlYjg3ZS5zZXRDb250ZW50KGh0bWxfZTljM2Q1NjYwMDQyNDUyNjg2NmY2NTAwZjk1ZTcxMTApOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfY2RkOWQyNmFiZjRkNGM1MjhkYjhlY2FkYWEyOWJhNDkuYmluZFBvcHVwKHBvcHVwX2UxMTBlOTdjNjBjNzQ1ZmY4NDE1OTFhMzA5MWViODdlKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzk3ZjE1YWMzMDFlZDQ2MjdhNGIzM2QwM2QyY2MwNDA1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuMzgsIC0xLjU2MTM4XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9lZTQxNDBmMTVjOGQ0N2M4OTc5OGU1Nzg4NGNhZTQxYyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfZjI0ODY2Y2Y5YzgyNDNjYjg4YjNkMGIyN2M4MWY5NzEgPSAkKGA8ZGl2IGlkPSJodG1sX2YyNDg2NmNmOWM4MjQzY2I4OGIzZDBiMjdjODFmOTcxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XYXJ3aWNrIEFydHMgQ2VudHJlPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2VlNDE0MGYxNWM4ZDQ3Yzg5Nzk4ZTU3ODg0Y2FlNDFjLnNldENvbnRlbnQoaHRtbF9mMjQ4NjZjZjljODI0M2NiODhiM2QwYjI3YzgxZjk3MSk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl85N2YxNWFjMzAxZWQ0NjI3YTRiMzNkMDNkMmNjMDQwNS5iaW5kUG9wdXAocG9wdXBfZWU0MTQwZjE1YzhkNDdjODk3OThlNTc4ODRjYWU0MWMpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzRlYTU3YjBlNmRhNDVjZGE1MmIyYWI5YzFmMTYxMjEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41MTYxLCAtMC4xMzUzNjFdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzYzMDVjMjQwNzAwYjRjOTVhYjY1OWQxMTU4OTJkYzIwID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF85YmFjZjMxMDMwMDQ0MTE2YmU3MjVjOTA2Yjc5ZjdiZCA9ICQoYDxkaXYgaWQ9Imh0bWxfOWJhY2YzMTAzMDA0NDExNmJlNzI1YzkwNmI3OWY3YmQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjEwMCBDbHViPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzYzMDVjMjQwNzAwYjRjOTVhYjY1OWQxMTU4OTJkYzIwLnNldENvbnRlbnQoaHRtbF85YmFjZjMxMDMwMDQ0MTE2YmU3MjVjOTA2Yjc5ZjdiZCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9jNGVhNTdiMGU2ZGE0NWNkYTUyYjJhYjljMWYxNjEyMS5iaW5kUG9wdXAocG9wdXBfNjMwNWMyNDA3MDBiNGM5NWFiNjU5ZDExNTg5MmRjMjApCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMjM5MTE2YmYyZjExNGZjNTk3MWEzZmUwNDg3MGExYjkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41OTM5LCAtMC4xM10sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMDU1ZmZkMGU4MmFlNDZlMWEwNGYyNmI1OTE3MDExMzAgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzYwYjQzNzI1NGRmMjQ2NTI5ZDExZDIwY2M3ZDMxYzBlID0gJChgPGRpdiBpZD0iaHRtbF82MGI0MzcyNTRkZjI0NjUyOWQxMWQyMGNjN2QzMWMwZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QWxleGFuZHJhIFBhbGFjZTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8wNTVmZmQwZTgyYWU0NmUxYTA0ZjI2YjU5MTcwMTEzMC5zZXRDb250ZW50KGh0bWxfNjBiNDM3MjU0ZGYyNDY1MjlkMTFkMjBjYzdkMzFjMGUpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfMjM5MTE2YmYyZjExNGZjNTk3MWEzZmUwNDg3MGExYjkuYmluZFBvcHVwKHBvcHVwXzA1NWZmZDBlODJhZTQ2ZTFhMDRmMjZiNTkxNzAxMTMwKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzIwYTFjOWY2ODg5NTQ2ZTZiNjVhYzJjNDgwMDM0MGFjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuNDUwNCwgLTEuOTI3NzNdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzI3NmEyNmVlMjY4OTQ0ZGE4NzMwMDNmZTYwMWY2NjYyID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF82NzIzMWNhMjQ3NmE0NjEwODkxN2RlOTdhMzBiM2I5OCA9ICQoYDxkaXYgaWQ9Imh0bWxfNjcyMzFjYTI0NzZhNDYxMDg5MTdkZTk3YTMwYjNiOTgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJhcmJlciBJbnN0aXR1dGUgb2YgRmluZSBBcnRzPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzI3NmEyNmVlMjY4OTQ0ZGE4NzMwMDNmZTYwMWY2NjYyLnNldENvbnRlbnQoaHRtbF82NzIzMWNhMjQ3NmE0NjEwODkxN2RlOTdhMzBiM2I5OCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8yMGExYzlmNjg4OTU0NmU2YjY1YWMyYzQ4MDAzNDBhYy5iaW5kUG9wdXAocG9wdXBfMjc2YTI2ZWUyNjg5NDRkYTg3MzAwM2ZlNjAxZjY2NjIpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfNjRmODI3NzYxNzlmNDViM2FmMzBmZjk1ZTE0M2M1ZWEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40NjMzLCAtMi42MjIyMl0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfOGY0NDdkNDAzNzBmNDhjODg0NWU5NmJiZDNlYjA5MjEgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzk3NDIxZjY2MDhjMTQyMjRhMTg1NTI4MzdhM2Y2ODM5ID0gJChgPGRpdiBpZD0iaHRtbF85NzQyMWY2NjA4YzE0MjI0YTE4NTUyODM3YTNmNjgzOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QnJpc3RvbCBab288L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfOGY0NDdkNDAzNzBmNDhjODg0NWU5NmJiZDNlYjA5MjEuc2V0Q29udGVudChodG1sXzk3NDIxZjY2MDhjMTQyMjRhMTg1NTI4MzdhM2Y2ODM5KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzY0ZjgyNzc2MTc5ZjQ1YjNhZjMwZmY5NWUxNDNjNWVhLmJpbmRQb3B1cChwb3B1cF84ZjQ0N2Q0MDM3MGY0OGM4ODQ1ZTk2YmJkM2ViMDkyMSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl8wNmI0OThkOGExNWU0YjM1YjMzNGYyODgzMGFjMzE4YSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQ2NTEsIC0wLjExNDkyMl0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfYmRhZTQyNDdjOTQ2NDRjYmIwMzhlNjFmYWNkZGNmNTQgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzE5MjA5Y2FjM2Y1YjQzYjRhMmE4NzU1YzQ2ZjZjN2FhID0gJChgPGRpdiBpZD0iaHRtbF8xOTIwOWNhYzNmNWI0M2I0YTJhODc1NWM0NmY2YzdhYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QnJpeHRvbiBBY2FkZW15PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2JkYWU0MjQ3Yzk0NjQ0Y2JiMDM4ZTYxZmFjZGRjZjU0LnNldENvbnRlbnQoaHRtbF8xOTIwOWNhYzNmNWI0M2I0YTJhODc1NWM0NmY2YzdhYSk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8wNmI0OThkOGExNWU0YjM1YjMzNGYyODgzMGFjMzE4YS5iaW5kUG9wdXAocG9wdXBfYmRhZTQyNDdjOTQ2NDRjYmIwMzhlNjFmYWNkZGNmNTQpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzRhOTNlOTNhZWUxNDk5NTlhZThlYTc0NTA0YTNlNTEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1Mi42MjQ5LCAtMS4xMjE2M10sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfNjNlNjRmNjcwODkxNGJiZjk3MGUxYTdmNTRjNDIxMzggPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2UxYzRlM2ZhNzY5ZjRlOGJiMTJiNGJhZjEzMjhjZTYwID0gJChgPGRpdiBpZD0iaHRtbF9lMWM0ZTNmYTc2OWY0ZThiYjEyYjRiYWYxMzI4Y2U2MCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RGUgTW9udGZvcnQgSGFsbDwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF82M2U2NGY2NzA4OTE0YmJmOTcwZTFhN2Y1NGM0MjEzOC5zZXRDb250ZW50KGh0bWxfZTFjNGUzZmE3NjlmNGU4YmIxMmI0YmFmMTMyOGNlNjApOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfYzRhOTNlOTNhZWUxNDk5NTlhZThlYTc0NTA0YTNlNTEuYmluZFBvcHVwKHBvcHVwXzYzZTY0ZjY3MDg5MTRiYmY5NzBlMWE3ZjU0YzQyMTM4KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2YyNWRiZGI3ZWYyMzQ3NThhNjMzODdjZGUzOTM2OTliID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTM5NywgLTAuMTQzMDU2XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF83YzM0YjM1MGVhMzI0MmJlOTA0OTI4ZGY2ZjY1ZWVhNiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfMWU3OGExYmU1MmM5NDRjYzhlMDEzYzc0ODJiODc3YWYgPSAkKGA8ZGl2IGlkPSJodG1sXzFlNzhhMWJlNTJjOTQ0Y2M4ZTAxM2M3NDgyYjg3N2FmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5FbGVjdHJpYyBCYWxscm9vbTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF83YzM0YjM1MGVhMzI0MmJlOTA0OTI4ZGY2ZjY1ZWVhNi5zZXRDb250ZW50KGh0bWxfMWU3OGExYmU1MmM5NDRjYzhlMDEzYzc0ODJiODc3YWYpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfZjI1ZGJkYjdlZjIzNDc1OGE2MzM4N2NkZTM5MzY5OWIuYmluZFBvcHVwKHBvcHVwXzdjMzRiMzUwZWEzMjQyYmU5MDQ5MjhkZjZmNjVlZWE2KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzc3MzEzYzBlZmEzMTQxNGU5NjA1NmJhMGEwYjQxYmI1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTAuODc4MywgMC4wNjM4ODg5XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8wNDk0N2FlZWRjY2Q0ODg4ODVmODMyMWU5ODRmOWRlZiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfMTQ2YWI2MmJjYWE3NGI3ODhkNmEzYjM5NmRiZjM4YWEgPSAkKGA8ZGl2IGlkPSJodG1sXzE0NmFiNjJiY2FhNzRiNzg4ZDZhM2IzOTZkYmYzOGFhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5HbHluZGVib3VybmU8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfMDQ5NDdhZWVkY2NkNDg4ODg1ZjgzMjFlOTg0ZjlkZWYuc2V0Q29udGVudChodG1sXzE0NmFiNjJiY2FhNzRiNzg4ZDZhM2IzOTZkYmYzOGFhKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzc3MzEzYzBlZmEzMTQxNGU5NjA1NmJhMGEwYjQxYmI1LmJpbmRQb3B1cChwb3B1cF8wNDk0N2FlZWRjY2Q0ODg4ODVmODMyMWU5ODRmOWRlZikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl8xNDNiM2JkMzMyMGM0YzQxYjJjNzExMzIxMjIxNDdlNCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjkyMDMsIC0yLjA1NzhdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzQ5MjU1MDVhNGFkYTQ0Y2Y4NGM4NmQwYTk5YTIzNTM2ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF83NmI5OTYwMjA1MDI0YjQyOGQzMmM4Njk3YmQzZGE1OCA9ICQoYDxkaXYgaWQ9Imh0bWxfNzZiOTk2MDIwNTAyNGI0MjhkMzJjODY5N2JkM2RhNTgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkdyZWVuYmVsdCBGZXN0aXZhbDwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF80OTI1NTA1YTRhZGE0NGNmODRjODZkMGE5OWEyMzUzNi5zZXRDb250ZW50KGh0bWxfNzZiOTk2MDIwNTAyNGI0MjhkMzJjODY5N2JkM2RhNTgpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfMTQzYjNiZDMzMjBjNGM0MWIyYzcxMTMyMTIyMTQ3ZTQuYmluZFBvcHVwKHBvcHVwXzQ5MjU1MDVhNGFkYTQ0Y2Y4NGM4NmQwYTk5YTIzNTM2KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzFjNWNlNzdkZjEwZDQwZjc5MWJlMGU1YjMyNGIxNzBiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuNDczNSwgLTEuODk5ODVdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzY2ZjNhZjVhNzMzMTQxY2RiZjM3NDY0N2FhZWFhZDc1ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF84NDc0YWQwNTkxODQ0NmZmODNiNjExNDExNTA4NDM4OSA9ICQoYDxkaXYgaWQ9Imh0bWxfODQ3NGFkMDU5MTg0NDZmZjgzYjYxMTQxMTUwODQzODkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk8yIEFjYWRlbXkgQmlybWluZ2hhbTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF82NmYzYWY1YTczMzE0MWNkYmYzNzQ2NDdhYWVhYWQ3NS5zZXRDb250ZW50KGh0bWxfODQ3NGFkMDU5MTg0NDZmZjgzYjYxMTQxMTUwODQzODkpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfMWM1Y2U3N2RmMTBkNDBmNzkxYmUwZTViMzI0YjE3MGIuYmluZFBvcHVwKHBvcHVwXzY2ZjNhZjVhNzMzMTQxY2RiZjM3NDY0N2FhZWFhZDc1KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzhlMzhmY2I2NzhkYjQ4NDhhZmE4MzU3MjhiYmRlODBjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTQzMiwgLTAuMTUxOV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMWI0NDc1YmMzODNmNDYxNzk4NTRkMTE3MzQ1OGVlZWUgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzM2ZjMxMGNiN2RmZjQyMGFiYzUyYmY3ZDAxMjcwMjY2ID0gJChgPGRpdiBpZD0iaHRtbF8zNmYzMTBjYjdkZmY0MjBhYmM1MmJmN2QwMTI3MDI2NiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Um91bmRob3VzZSAodmVudWUpPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzFiNDQ3NWJjMzgzZjQ2MTc5ODU0ZDExNzM0NThlZWVlLnNldENvbnRlbnQoaHRtbF8zNmYzMTBjYjdkZmY0MjBhYmM1MmJmN2QwMTI3MDI2Nik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl84ZTM4ZmNiNjc4ZGI0ODQ4YWZhODM1NzI4YmJkZTgwYy5iaW5kUG9wdXAocG9wdXBfMWI0NDc1YmMzODNmNDYxNzk4NTRkMTE3MzQ1OGVlZWUpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfY2U1Zjg3M2YzNWJiNDBkNmIyZjgzYzUzMzE0NWEyYjYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41MTI5LCAtMC4xMjI3NjddLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzdiOWJlZmE2ZjRhNTQyMWY5ODYzNmNhMWNjN2Y5ZWZkID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9iNTI4NTUwYWQ0ZmE0YjM3YjdkZDNjM2U3YjM1NjczYyA9ICQoYDxkaXYgaWQ9Imh0bWxfYjUyODU1MGFkNGZhNGIzN2I3ZGQzYzNlN2IzNTY3M2MiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJveWFsIE9wZXJhIEhvdXNlPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzdiOWJlZmE2ZjRhNTQyMWY5ODYzNmNhMWNjN2Y5ZWZkLnNldENvbnRlbnQoaHRtbF9iNTI4NTUwYWQ0ZmE0YjM3YjdkZDNjM2U3YjM1NjczYyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9jZTVmODczZjM1YmI0MGQ2YjJmODNjNTMzMTQ1YTJiNi5iaW5kUG9wdXAocG9wdXBfN2I5YmVmYTZmNGE1NDIxZjk4NjM2Y2ExY2M3ZjllZmQpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfODNmZTRlNzNlMDMzNDEzOWExNjlmMTUzOTdhZDEyODYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1NC45Njc3LCAtMS42MDJdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzg3NDZlNTlhNjcwMzQ4NGNhNDVlYmI3YjQwYTA4YjM5ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9lY2FiYWMyY2Q2ZTU0NDkzYTE0MzAwMmFjYjI1NjE3NyA9ICQoYDxkaXYgaWQ9Imh0bWxfZWNhYmFjMmNkNmU1NDQ5M2ExNDMwMDJhY2IyNTYxNzciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNhZ2UgR2F0ZXNoZWFkPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzg3NDZlNTlhNjcwMzQ4NGNhNDVlYmI3YjQwYTA4YjM5LnNldENvbnRlbnQoaHRtbF9lY2FiYWMyY2Q2ZTU0NDkzYTE0MzAwMmFjYjI1NjE3Nyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl84M2ZlNGU3M2UwMzM0MTM5YTE2OWYxNTM5N2FkMTI4Ni5iaW5kUG9wdXAocG9wdXBfODc0NmU1OWE2NzAzNDg0Y2E0NWViYjdiNDBhMDhiMzkpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfZmEzZDc3ZDViYTgwNDg2MGJlMzBiZmM1OGZhYWZlZWIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1Mi40OTksIC0xLjg5NDZdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzUzMGNiOGFiYTkzMDQ3MDhiYTYwYmYzNjI3MjBjZmZkID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9iNzVjY2NiODk5NmU0MzMzOWI0YzhmZTIyNTY3N2RmYyA9ICQoYDxkaXYgaWQ9Imh0bWxfYjc1Y2NjYjg5OTZlNDMzMzliNGM4ZmUyMjU2NzdkZmMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRoZSBEcnVtIChBcnRzIENlbnRyZSk8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfNTMwY2I4YWJhOTMwNDcwOGJhNjBiZjM2MjcyMGNmZmQuc2V0Q29udGVudChodG1sX2I3NWNjY2I4OTk2ZTQzMzM5YjRjOGZlMjI1Njc3ZGZjKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2ZhM2Q3N2Q1YmE4MDQ4NjBiZTMwYmZjNThmYWFmZWViLmJpbmRQb3B1cChwb3B1cF81MzBjYjhhYmE5MzA0NzA4YmE2MGJmMzYyNzIwY2ZmZCkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl8wZmMyNWFmNTUzNzc0MTM1OTUxMmRmYWExMjFiMThkNyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjQ3NDMsIC0yLjI0NzY4XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF81NWE4NmRjMDM3NDc0MTFiOWQ2MGQ3ODFiMjJhZGIwMyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNzc3ZTAwZTAzY2EwNDAxN2EyNmNhNzA4YTA3NDYzZGMgPSAkKGA8ZGl2IGlkPSJodG1sXzc3N2UwMGUwM2NhMDQwMTdhMjZjYTcwOGEwNzQ2M2RjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5UaGUgSGHDp2llbmRhPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzU1YTg2ZGMwMzc0NzQxMWI5ZDYwZDc4MWIyMmFkYjAzLnNldENvbnRlbnQoaHRtbF83NzdlMDBlMDNjYTA0MDE3YTI2Y2E3MDhhMDc0NjNkYyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8wZmMyNWFmNTUzNzc0MTM1OTUxMmRmYWExMjFiMThkNy5iaW5kUG9wdXAocG9wdXBfNTVhODZkYzAzNzQ3NDExYjlkNjBkNzgxYjIyYWRiMDMpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfOWMwZjM3MGRhNDgyNDE5Mzk1N2IyNzQ0NjAxYWYzMTcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41MTY3LCAtMC4xNDEzODldLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2U1NzQ3NDA1YzExOTQ0MmU4NjcwY2NjYTRlMjg0MTM1ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF82MTdlMWFhNGY4MTI0NGJjYmViYjc0MTM1MjMwMjgyOSA9ICQoYDxkaXYgaWQ9Imh0bWxfNjE3ZTFhYTRmODEyNDRiY2JlYmI3NDEzNTIzMDI4MjkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRoZSBTcGVha2Vhc3kgQ2x1YjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9lNTc0NzQwNWMxMTk0NDJlODY3MGNjY2E0ZTI4NDEzNS5zZXRDb250ZW50KGh0bWxfNjE3ZTFhYTRmODEyNDRiY2JlYmI3NDEzNTIzMDI4MjkpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfOWMwZjM3MGRhNDgyNDE5Mzk1N2IyNzQ0NjAxYWYzMTcuYmluZFBvcHVwKHBvcHVwX2U1NzQ3NDA1YzExOTQ0MmU4NjcwY2NjYTRlMjg0MTM1KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2U0YjBmMjVmZWYwZDQ5OGI5YWI1NzI1YjFhNTg3MWNlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTIyLCAtMC4xMDU5XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF80Y2EzZjQwOGI4M2U0M2Y1OGMyY2ZhYzY0OTc5Nzc4OSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfMzYxY2VhOThhYTBlNGRmYmFkNWU3N2QwMmQ3OWZjZDMgPSAkKGA8ZGl2IGlkPSJodG1sXzM2MWNlYTk4YWEwZTRkZmJhZDVlNzdkMDJkNzlmY2QzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5UdXJubWlsbHM8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfNGNhM2Y0MDhiODNlNDNmNThjMmNmYWM2NDk3OTc3ODkuc2V0Q29udGVudChodG1sXzM2MWNlYTk4YWEwZTRkZmJhZDVlNzdkMDJkNzlmY2QzKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2U0YjBmMjVmZWYwZDQ5OGI5YWI1NzI1YjFhNTg3MWNlLmJpbmRQb3B1cChwb3B1cF80Y2EzZjQwOGI4M2U0M2Y1OGMyY2ZhYzY0OTc5Nzc4OSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl85ZDU5ZGM3ZTc0OTU0ZGUyYTJmOTA2MGRkNGUyNTQwMyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjQ1NjksIC0yLjYwODRdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzY1YmVmMGI0YThkYTQyOGI5ZDM4YTRjZDQ2NzJmNDQwID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF84ZjYwMjE0ZjgwZTI0MmUzYjBhNTIzMjE0OWE0Mjc2MCA9ICQoYDxkaXYgaWQ9Imh0bWxfOGY2MDIxNGY4MGUyNDJlM2IwYTUyMzIxNDlhNDI3NjAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlVuaXZlcnNpdHkgb2YgQnJpc3RvbCBVbmlvbjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF82NWJlZjBiNGE4ZGE0MjhiOWQzOGE0Y2Q0NjcyZjQ0MC5zZXRDb250ZW50KGh0bWxfOGY2MDIxNGY4MGUyNDJlM2IwYTUyMzIxNDlhNDI3NjApOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfOWQ1OWRjN2U3NDk1NGRlMmEyZjkwNjBkZDRlMjU0MDMuYmluZFBvcHVwKHBvcHVwXzY1YmVmMGI0YThkYTQyOGI5ZDM4YTRjZDQ2NzJmNDQwKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzUwNTRlM2Q3MGY0ZDRmMTJhYjViOTU3NzU1MGNjYjIxID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTMuNjkzLCAtMC40NDI5MV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfNzZiNjJlMmQyOTNkNGYzNmE2N2NhNWMwZTMxZTNjYTcgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2JjN2VmNjAyZjE0YjRmYWRhODUzNDA3MWU1Yjc0ZjhhID0gJChgPGRpdiBpZD0iaHRtbF9iYzdlZjYwMmYxNGI0ZmFkYTg1MzQwNzFlNWI3NGY4YSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Um9wZXdhbGsgQmFydG9uIHVwb24gSHVtYmVyPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzc2YjYyZTJkMjkzZDRmMzZhNjdjYTVjMGUzMWUzY2E3LnNldENvbnRlbnQoaHRtbF9iYzdlZjYwMmYxNGI0ZmFkYTg1MzQwNzFlNWI3NGY4YSk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl81MDU0ZTNkNzBmNGQ0ZjEyYWI1Yjk1Nzc1NTBjY2IyMS5iaW5kUG9wdXAocG9wdXBfNzZiNjJlMmQyOTNkNGYzNmE2N2NhNWMwZTMxZTNjYTcpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfOThjZWE5YTAzY2IxNGMyNmFkOTI0NTg3YzE0OTc2MDMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40NDgyLCAtMi41ODk5XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8wZDRhYWZhYzE1YjM0N2U0YjY2NTYzZWYyYTljYTM3ZSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNGM3MDIwYzZlOTc5NDBlNWE1ODExMDljZWQxMmYzODMgPSAkKGA8ZGl2IGlkPSJodG1sXzRjNzAyMGM2ZTk3OTQwZTVhNTgxMTA5Y2VkMTJmMzgzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TdCBNYXJ5IFJlZGNsaWZmZTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8wZDRhYWZhYzE1YjM0N2U0YjY2NTYzZWYyYTljYTM3ZS5zZXRDb250ZW50KGh0bWxfNGM3MDIwYzZlOTc5NDBlNWE1ODExMDljZWQxMmYzODMpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfOThjZWE5YTAzY2IxNGMyNmFkOTI0NTg3YzE0OTc2MDMuYmluZFBvcHVwKHBvcHVwXzBkNGFhZmFjMTViMzQ3ZTRiNjY1NjNlZjJhOWNhMzdlKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2RhMjRkZGVmMGQ4YTRjY2E5M2I2ZTg1Mjc0YmIxODk1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTMuNDAxMiwgLTIuOTcwMV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfZGJiYzU2ODQ0MDcwNDE1OTk1OTQ0NmVhN2M2ZTQwYmYgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzY4YzdlZTA0OWM3MjRkMmZhZDFhMWY2NzkyYjdkMzRlID0gJChgPGRpdiBpZD0iaHRtbF82OGM3ZWUwNDljNzI0ZDJmYWQxYTFmNjc5MmI3ZDM0ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UGhpbGhhcm1vbmljIEhhbGwsIExpdmVycG9vbDwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9kYmJjNTY4NDQwNzA0MTU5OTU5NDQ2ZWE3YzZlNDBiZi5zZXRDb250ZW50KGh0bWxfNjhjN2VlMDQ5YzcyNGQyZmFkMWExZjY3OTJiN2QzNGUpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfZGEyNGRkZWYwZDhhNGNjYTkzYjZlODUyNzRiYjE4OTUuYmluZFBvcHVwKHBvcHVwX2RiYmM1Njg0NDA3MDQxNTk5NTk0NDZlYTdjNmU0MGJmKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzYxNDExMjBhMTNjMjQ1N2M4NWNmYjY0NDFlMTBlOTQzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTA1MywgLTAuMTEzODg5XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF80ZmYxYTNmMGFhZjM0YzZhYjgzNjliNzk3ZTJjMmY3YSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfMjNhZjg1YmNjYzkwNGRkMzg1ZGY0ODk4MTQ3NmM4NWUgPSAkKGA8ZGl2IGlkPSJodG1sXzIzYWY4NWJjY2M5MDRkZDM4NWRmNDg5ODE0NzZjODVlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5DdXBlcidzIEdhcmRlbnM8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfNGZmMWEzZjBhYWYzNGM2YWI4MzY5Yjc5N2UyYzJmN2Euc2V0Q29udGVudChodG1sXzIzYWY4NWJjY2M5MDRkZDM4NWRmNDg5ODE0NzZjODVlKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzYxNDExMjBhMTNjMjQ1N2M4NWNmYjY0NDFlMTBlOTQzLmJpbmRQb3B1cChwb3B1cF80ZmYxYTNmMGFhZjM0YzZhYjgzNjliNzk3ZTJjMmY3YSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl80ZDBkMDg2NWE3OGM0NmY2OGNhNzI2MjdiMDA5YWRmOSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjA1OSwgLTIuMjExMzRdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzIxNjljOGFkN2RlZDQyZmU5NmEwNDU4MTVkYjQ5NWZhID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9lMTQwOTYzOGNhOWQ0OTg2YTZmY2I4OWVhMGE1MTUzNyA9ICQoYDxkaXYgaWQ9Imh0bWxfZTE0MDk2MzhjYTlkNDk4NmE2ZmNiODllYTBhNTE1MzciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkdvbGRlbiBUb3JjaDwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8yMTY5YzhhZDdkZWQ0MmZlOTZhMDQ1ODE1ZGI0OTVmYS5zZXRDb250ZW50KGh0bWxfZTE0MDk2MzhjYTlkNDk4NmE2ZmNiODllYTBhNTE1MzcpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfNGQwZDA4NjVhNzhjNDZmNjhjYTcyNjI3YjAwOWFkZjkuYmluZFBvcHVwKHBvcHVwXzIxNjljOGFkN2RlZDQyZmU5NmEwNDU4MTVkYjQ5NWZhKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzk2NDVkOGVhMDVhMjQ1ZGZiZDcyN2E2MDM5ZWRjZTZlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTMuNzk4OSwgLTEuNTQyNzhdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2Y3N2YzYzhhN2JmMDRkMDk4NWM3MjNjYjUzNTc5NmY2ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF84NTcxNDA5NTMyMDc0OWJmOTliZjRiMGYwMWE5M2RkNyA9ICQoYDxkaXYgaWQ9Imh0bWxfODU3MTQwOTUzMjA3NDliZjk5YmY0YjBmMDFhOTNkZDciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxlZWRzIENpdHkgVmFyaWV0aWVzPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2Y3N2YzYzhhN2JmMDRkMDk4NWM3MjNjYjUzNTc5NmY2LnNldENvbnRlbnQoaHRtbF84NTcxNDA5NTMyMDc0OWJmOTliZjRiMGYwMWE5M2RkNyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl85NjQ1ZDhlYTA1YTI0NWRmYmQ3MjdhNjAzOWVkY2U2ZS5iaW5kUG9wdXAocG9wdXBfZjc3ZjNjOGE3YmYwNGQwOTg1YzcyM2NiNTM1Nzk2ZjYpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfNmNjNjExZTYxN2NhNGNkMGE4ZTE1NzAwMjMzYzY5NTMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41MzQ1LCAtMC4xMDU4XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9jOGFjODc4MTgxOTk0MWViOGMyNGQ4YmQ3NmE3YjUzOSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfOGUzZDk4YjFlYjBmNDEzMGJlZTc1ZTFhZjExYWUzNWYgPSAkKGA8ZGl2IGlkPSJodG1sXzhlM2Q5OGIxZWIwZjQxMzBiZWU3NWUxYWYxMWFlMzVmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PMiBBY2FkZW15IElzbGluZ3RvbjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9jOGFjODc4MTgxOTk0MWViOGMyNGQ4YmQ3NmE3YjUzOS5zZXRDb250ZW50KGh0bWxfOGUzZDk4YjFlYjBmNDEzMGJlZTc1ZTFhZjExYWUzNWYpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfNmNjNjExZTYxN2NhNGNkMGE4ZTE1NzAwMjMzYzY5NTMuYmluZFBvcHVwKHBvcHVwX2M4YWM4NzgxODE5OTQxZWI4YzI0ZDhiZDc2YTdiNTM5KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzU0OTdmZGZiOTgxNDQ5YTdhNmU4ZjI5NmE4OWYyNjI2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTAuMzY4OSwgLTQuMTVdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2MwZDliYTZkZjQyMDQwMWI5ZjJhMGM3ZmRmYjBiM2Q2ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF80ZWZmMGZkMDdmNGY0MWU4YmQ5OGI4NzI3NTY5ZjJiOSA9ICQoYDxkaXYgaWQ9Imh0bWxfNGVmZjBmZDA3ZjRmNDFlOGJkOThiODcyNzU2OWYyYjkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlBseW1vdXRoIFBhdmlsaW9uczwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9jMGQ5YmE2ZGY0MjA0MDFiOWYyYTBjN2ZkZmIwYjNkNi5zZXRDb250ZW50KGh0bWxfNGVmZjBmZDA3ZjRmNDFlOGJkOThiODcyNzU2OWYyYjkpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfNTQ5N2ZkZmI5ODE0NDlhN2E2ZThmMjk2YTg5ZjI2MjYuYmluZFBvcHVwKHBvcHVwX2MwZDliYTZkZjQyMDQwMWI5ZjJhMGM3ZmRmYjBiM2Q2KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2Q0NWFmMWE2MzkyODRiMjFiMTYyOGQxNjMxMzVmY2NhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTAuODI1OCwgLTAuNDQyNTUzXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9mYjgwNzBhN2M0NDg0MGI2OGVhMTdjNWE0OWIzMDExYyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfYmVjNjFiZDY1MzdiNDQxNjhlYjZkOWRmZTRhNWFiZjggPSAkKGA8ZGl2IGlkPSJodG1sX2JlYzYxYmQ2NTM3YjQ0MTY4ZWI2ZDlkZmU0YTVhYmY4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TdGVybnMgTmlnaHRjbHViPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2ZiODA3MGE3YzQ0ODQwYjY4ZWExN2M1YTQ5YjMwMTFjLnNldENvbnRlbnQoaHRtbF9iZWM2MWJkNjUzN2I0NDE2OGViNmQ5ZGZlNGE1YWJmOCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9kNDVhZjFhNjM5Mjg0YjIxYjE2MjhkMTYzMTM1ZmNjYS5iaW5kUG9wdXAocG9wdXBfZmI4MDcwYTdjNDQ4NDBiNjhlYTE3YzVhNDliMzAxMWMpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMjk4ZDA1ZTllZDVhNGVkM2JkNGM2YjAxYWYxYzdmZWMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41MTI1LCAtMC4xMzI3NzhdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzUxMzUwYmE5MGQ2NzRiOWNiMDMwYzI0ODRmNDBkNTRlID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9jNDQ1OGI1MDExMGM0MjVjYmYwZjE0OWU4YTRjMGM3MCA9ICQoYDxkaXYgaWQ9Imh0bWxfYzQ0NThiNTAxMTBjNDI1Y2JmMGYxNDllOGE0YzBjNzAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRoZSAyaSdzIENvZmZlZSBCYXI8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfNTEzNTBiYTkwZDY3NGI5Y2IwMzBjMjQ4NGY0MGQ1NGUuc2V0Q29udGVudChodG1sX2M0NDU4YjUwMTEwYzQyNWNiZjBmMTQ5ZThhNGMwYzcwKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzI5OGQwNWU5ZWQ1YTRlZDNiZDRjNmIwMWFmMWM3ZmVjLmJpbmRQb3B1cChwb3B1cF81MTM1MGJhOTBkNjc0YjljYjAzMGMyNDg0ZjQwZDU0ZSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl9mYzBkMjZmZmM0YWM0OWI2YWFjNjI1ZTExYTdiM2VkNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjQ4MjUsIC0yLjIzNTI4XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9jMzU0N2Y2MjIzZDE0ZTQ4OGZkYjgwM2U0ZTQxM2I1ZCA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNzZiODg5ZWQ5ODhmNDU5YTg2MDMwMmQ4MTVkYzc1NGMgPSAkKGA8ZGl2IGlkPSJodG1sXzc2Yjg4OWVkOTg4ZjQ1OWE4NjAzMDJkODE1ZGM3NTRjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5UaGUgTmlnaHQgYW5kIERheSBDYWbDqTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9jMzU0N2Y2MjIzZDE0ZTQ4OGZkYjgwM2U0ZTQxM2I1ZC5zZXRDb250ZW50KGh0bWxfNzZiODg5ZWQ5ODhmNDU5YTg2MDMwMmQ4MTVkYzc1NGMpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfZmMwZDI2ZmZjNGFjNDliNmFhYzYyNWUxMWE3YjNlZDUuYmluZFBvcHVwKHBvcHVwX2MzNTQ3ZjYyMjNkMTRlNDg4ZmRiODAzZTRlNDEzYjVkKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2ZhNmRmOGVlZTMyMDRiNWI4MjQxZjQ0ODc0NjMxYjM1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTEyMSwgLTAuMTQ0M10sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfYzJiOGU4YzkyNmJhNGIwYmIwM2Y2MjAzMGViOGVmNDkgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2NhZDU2YmMxNzc5NTRhODhhMjFlNGQ2NzA4OTM5YThmID0gJChgPGRpdiBpZD0iaHRtbF9jYWQ1NmJjMTc3OTU0YTg4YTIxZTRkNjcwODkzOWE4ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QWVvbGlhbiBIYWxsLCBMb25kb248L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfYzJiOGU4YzkyNmJhNGIwYmIwM2Y2MjAzMGViOGVmNDkuc2V0Q29udGVudChodG1sX2NhZDU2YmMxNzc5NTRhODhhMjFlNGQ2NzA4OTM5YThmKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2ZhNmRmOGVlZTMyMDRiNWI4MjQxZjQ0ODc0NjMxYjM1LmJpbmRQb3B1cChwb3B1cF9jMmI4ZThjOTI2YmE0YjBiYjAzZjYyMDMwZWI4ZWY0OSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl8yMTM0MWZkNTcxYjc0YTQxYTgwOTlhMWQ2MTY2M2YyYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUyLjQ3NTYsIC0xLjkwOTM2XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF82ZTM5NTVhZDJmNzQ0NmZlOTZhZjMwYmQzOGY5YmE2YSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfZjZmOTE3YTA0NTcyNGVjN2I4YTdiNjQxNzBiNDVkNzkgPSAkKGA8ZGl2IGlkPSJodG1sX2Y2ZjkxN2EwNDU3MjRlYzdiOGE3YjY0MTcwYjQ1ZDc5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5DQlNPIENlbnRyZTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF82ZTM5NTVhZDJmNzQ0NmZlOTZhZjMwYmQzOGY5YmE2YS5zZXRDb250ZW50KGh0bWxfZjZmOTE3YTA0NTcyNGVjN2I4YTdiNjQxNzBiNDVkNzkpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfMjEzNDFmZDU3MWI3NGE0MWE4MDk5YTFkNjE2NjNmMmEuYmluZFBvcHVwKHBvcHVwXzZlMzk1NWFkMmY3NDQ2ZmU5NmFmMzBiZDM4ZjliYTZhKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2QxNzIzOTc0ZmEwZTRjOWVhMGQyZTNhMTM3NTM4NWZmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTMuODAyLCAtMS41NTZdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzIzZTMwYmIxNjAzNDQ5MTc4ZDcwZWMwNWE2Mzg4ZDg0ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8wOGFlMTE3YTZiM2M0NzE4YTI3MGRkOWY2NzQ2ZTRmMSA9ICQoYDxkaXYgaWQ9Imh0bWxfMDhhZTExN2E2YjNjNDcxOGEyNzBkZDlmNjc0NmU0ZjEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkpvc2VwaHMgV2VsbDwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8yM2UzMGJiMTYwMzQ0OTE3OGQ3MGVjMDVhNjM4OGQ4NC5zZXRDb250ZW50KGh0bWxfMDhhZTExN2E2YjNjNDcxOGEyNzBkZDlmNjc0NmU0ZjEpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfZDE3MjM5NzRmYTBlNGM5ZWEwZDJlM2ExMzc1Mzg1ZmYuYmluZFBvcHVwKHBvcHVwXzIzZTMwYmIxNjAzNDQ5MTc4ZDcwZWMwNWE2Mzg4ZDg0KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2RlY2FmZDI4ZGNkMTQwZmM4MmY5YjEwMzViOTdmZmI5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTE0MSwgLTAuMTMxMV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfN2JiYjVjOTc0OGUzNDYyNmE2NTgxYTY4ZWQ4ZDM1OTQgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzFjZGMxYmI4NDBjZTRiYmY5NDg1ODhiOTlkMjJkYjlhID0gJChgPGRpdiBpZD0iaHRtbF8xY2RjMWJiODQwY2U0YmJmOTQ4NTg4Yjk5ZDIyZGI5YSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TGVzIENvdXNpbnMgKG11c2ljIGNsdWIpPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzdiYmI1Yzk3NDhlMzQ2MjZhNjU4MWE2OGVkOGQzNTk0LnNldENvbnRlbnQoaHRtbF8xY2RjMWJiODQwY2U0YmJmOTQ4NTg4Yjk5ZDIyZGI5YSk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9kZWNhZmQyOGRjZDE0MGZjODJmOWIxMDM1Yjk3ZmZiOS5iaW5kUG9wdXAocG9wdXBfN2JiYjVjOTc0OGUzNDYyNmE2NTgxYTY4ZWQ4ZDM1OTQpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfM2NhNjU2ZDkyYmVmNDRlNjk0MzdjMmY1MGJiMjk3YWUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1My4zODgsIC0yLjU5N10sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfNWFiZGUxZTM1NjY4NGQ2ZmIyMmM3OWRiY2RkN2VlODYgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2E2YWZiMjUyNDUwZTRiMTU4Nzg2ZThlZDIzMmY2MGIyID0gJChgPGRpdiBpZD0iaHRtbF9hNmFmYjI1MjQ1MGU0YjE1ODc4NmU4ZWQyMzJmNjBiMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UGFyciBIYWxsPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzVhYmRlMWUzNTY2ODRkNmZiMjJjNzlkYmNkZDdlZTg2LnNldENvbnRlbnQoaHRtbF9hNmFmYjI1MjQ1MGU0YjE1ODc4NmU4ZWQyMzJmNjBiMik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8zY2E2NTZkOTJiZWY0NGU2OTQzN2MyZjUwYmIyOTdhZS5iaW5kUG9wdXAocG9wdXBfNWFiZGUxZTM1NjY4NGQ2ZmIyMmM3OWRiY2RkN2VlODYpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfNDY1OGM2MzYxYzczNGIzY2E0YmU4ZDFlMDY1ZmE0YWMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MC43OTc3LCAtMS4wOTI4OV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfZDk3NTcyYTM4YjNmNGE3MGE3Y2E2NGY1NDQ1ODIyODggPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzhkMmExMzM0MWEyNjQ5MDU5NzNkNTU4MGI5N2U4MWExID0gJChgPGRpdiBpZD0iaHRtbF84ZDJhMTMzNDFhMjY0OTA1OTczZDU1ODBiOTdlODFhMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UG9ydHNtb3V0aCBHdWlsZGhhbGw8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfZDk3NTcyYTM4YjNmNGE3MGE3Y2E2NGY1NDQ1ODIyODguc2V0Q29udGVudChodG1sXzhkMmExMzM0MWEyNjQ5MDU5NzNkNTU4MGI5N2U4MWExKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzQ2NThjNjM2MWM3MzRiM2NhNGJlOGQxZTA2NWZhNGFjLmJpbmRQb3B1cChwb3B1cF9kOTc1NzJhMzhiM2Y0YTcwYTdjYTY0ZjU0NDU4MjI4OCkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl85NWMzMTRkMTgzODM0NzhlYWUwNTQ2ZjE5NTFiYTVjZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUwLjc4NywgLTEuMDc1XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9mMDQ4MGIwODVjNzQ0MTU4OGQ5YmNhMWU4NjVkYjVjYiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNzBmNjUzYjgyYTBmNGM3ZDkxMGIyMDFkYWRjNTg2NzcgPSAkKGA8ZGl2IGlkPSJodG1sXzcwZjY1M2I4MmEwZjRjN2Q5MTBiMjAxZGFkYzU4Njc3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5UaGUgV2VkZ2V3b29kIFJvb21zPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2YwNDgwYjA4NWM3NDQxNTg4ZDliY2ExZTg2NWRiNWNiLnNldENvbnRlbnQoaHRtbF83MGY2NTNiODJhMGY0YzdkOTEwYjIwMWRhZGM1ODY3Nyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl85NWMzMTRkMTgzODM0NzhlYWUwNTQ2ZjE5NTFiYTVjZS5iaW5kUG9wdXAocG9wdXBfZjA0ODBiMDg1Yzc0NDE1ODhkOWJjYTFlODY1ZGI1Y2IpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfM2NjNzIxZWZjZWNkNDI1NDk1ZDIwOTY1MGE1MjY0MWIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40NDAyLCAwLjM2ODddLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzMxNzM3YzM1ZThjZjQ5NGNhOGFjMzkzYTFmZWQyYWE4ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF80MjQ5Mjc0NjkwMjY0NTNhYTlhNTg0MzY0Y2JiZmI3NyA9ICQoYDxkaXYgaWQ9Imh0bWxfNDI0OTI3NDY5MDI2NDUzYWE5YTU4NDM2NGNiYmZiNzciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldvb2R2aWxsZSBIYWxscyBUaGVhdHJlPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzMxNzM3YzM1ZThjZjQ5NGNhOGFjMzkzYTFmZWQyYWE4LnNldENvbnRlbnQoaHRtbF80MjQ5Mjc0NjkwMjY0NTNhYTlhNTg0MzY0Y2JiZmI3Nyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8zY2M3MjFlZmNlY2Q0MjU0OTVkMjA5NjUwYTUyNjQxYi5iaW5kUG9wdXAocG9wdXBfMzE3MzdjMzVlOGNmNDk0Y2E4YWMzOTNhMWZlZDJhYTgpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfNDc1ZjAxODIyM2I1NDA2ZDhhM2Q1NmQ4MzFlMjk0NGYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1My40ODE4LCAtMi4yNjMzOV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfOTc3MjNmNjZiOTc3NDg4NGJjMGViYTg2OGIxYWFlMDAgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzExYjA3YmU5ZTQ3ZjRjYzZhODVmMjAyZGVhNWVmMjI0ID0gJChgPGRpdiBpZD0iaHRtbF8xMWIwN2JlOWU0N2Y0Y2M2YTg1ZjIwMmRlYTVlZjIyNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+SXNsaW5ndG9uIE1pbGw8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfOTc3MjNmNjZiOTc3NDg4NGJjMGViYTg2OGIxYWFlMDAuc2V0Q29udGVudChodG1sXzExYjA3YmU5ZTQ3ZjRjYzZhODVmMjAyZGVhNWVmMjI0KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzQ3NWYwMTgyMjNiNTQwNmQ4YTNkNTZkODMxZTI5NDRmLmJpbmRQb3B1cChwb3B1cF85NzcyM2Y2NmI5Nzc0ODg0YmMwZWJhODY4YjFhYWUwMCkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl9lMjc4Y2IxYmVlZjA0MjEzOGM4ZTcyZWVkMmY3MGRmNyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUyLjQ1MzMsIC0xLjcxOTQ0XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF81MzdkOWQzZjJhZmQ0OTZjYWUxMjRjZTQxZjY4YTFkNCA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfODI4YTc4YmFiMDlhNDMxY2I0YjdlMWI1NWU3NzMxNTcgPSAkKGA8ZGl2IGlkPSJodG1sXzgyOGE3OGJhYjA5YTQzMWNiNGI3ZTFiNTVlNzczMTU3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5HZW50aW5nIEFyZW5hPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzUzN2Q5ZDNmMmFmZDQ5NmNhZTEyNGNlNDFmNjhhMWQ0LnNldENvbnRlbnQoaHRtbF84MjhhNzhiYWIwOWE0MzFjYjRiN2UxYjU1ZTc3MzE1Nyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9lMjc4Y2IxYmVlZjA0MjEzOGM4ZTcyZWVkMmY3MGRmNy5iaW5kUG9wdXAocG9wdXBfNTM3ZDlkM2YyYWZkNDk2Y2FlMTI0Y2U0MWY2OGExZDQpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfZWI1YTkyNjVhNzUyNDFkNzk4MWRjOTRlMWNjMDQwNDIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40NzM5LCAtMC4xNzM2MTFdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2E0OWE3ODg5YzhlZjQwOGU5ZmE3M2I3NDZmNzYzNzAyID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF84ZjkwYzZiYjg5ZmE0OWQ3YjZkMmZmYWY3NjRkMjA3ZiA9ICQoYDxkaXYgaWQ9Imh0bWxfOGY5MGM2YmI4OWZhNDlkN2I2ZDJmZmFmNzY0ZDIwN2YiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxlIFF1ZWN1bUJhcjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9hNDlhNzg4OWM4ZWY0MDhlOWZhNzNiNzQ2Zjc2MzcwMi5zZXRDb250ZW50KGh0bWxfOGY5MGM2YmI4OWZhNDlkN2I2ZDJmZmFmNzY0ZDIwN2YpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfZWI1YTkyNjVhNzUyNDFkNzk4MWRjOTRlMWNjMDQwNDIuYmluZFBvcHVwKHBvcHVwX2E0OWE3ODg5YzhlZjQwOGU5ZmE3M2I3NDZmNzYzNzAyKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzE2ZTZiMWZlMTU5YjQyYWZhOTE5MTdjMGM5ZGMxY2VmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTM3MiwgLTAuMTQ1NTU2XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF81MTRmYjMxNGNmZjc0ZTE4YWVhMTA0ZjMyYzI0MjgxMyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfMjA4ZDA0MDdhNTAyNDkzNGFlODdmNjVkM2ZjNmJhMDggPSAkKGA8ZGl2IGlkPSJodG1sXzIwOGQwNDA3YTUwMjQ5MzRhZTg3ZjY1ZDNmYzZiYTA4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EdWJsaW4gQ2FzdGxlLCBDYW1kZW48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfNTE0ZmIzMTRjZmY3NGUxOGFlYTEwNGYzMmMyNDI4MTMuc2V0Q29udGVudChodG1sXzIwOGQwNDA3YTUwMjQ5MzRhZTg3ZjY1ZDNmYzZiYTA4KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzE2ZTZiMWZlMTU5YjQyYWZhOTE5MTdjMGM5ZGMxY2VmLmJpbmRQb3B1cChwb3B1cF81MTRmYjMxNGNmZjc0ZTE4YWVhMTA0ZjMyYzI0MjgxMykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl8yOGVhNjIwZDQxZmI0OWYwOTJmMzA2YTI3OGNhNjUzMiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzU0Ljk3MiwgLTEuNjE2XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8yMzA3OGZmMGNiYmY0MjI4YjQzZjdhNzA1NGRjYzBiMyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfMmMyYjI0NDRhOGFiNGU3NzgxZGQxOWE1ZTY4ZTY2MGYgPSAkKGA8ZGl2IGlkPSJodG1sXzJjMmIyNDQ0YThhYjRlNzc4MWRkMTlhNWU2OGU2NjBmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NYXlmYWlyIEJhbGxyb29tPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzIzMDc4ZmYwY2JiZjQyMjhiNDNmN2E3MDU0ZGNjMGIzLnNldENvbnRlbnQoaHRtbF8yYzJiMjQ0NGE4YWI0ZTc3ODFkZDE5YTVlNjhlNjYwZik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8yOGVhNjIwZDQxZmI0OWYwOTJmMzA2YTI3OGNhNjUzMi5iaW5kUG9wdXAocG9wdXBfMjMwNzhmZjBjYmJmNDIyOGI0M2Y3YTcwNTRkY2MwYjMpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMDFhMTllMjYxZTQwNDUzM2IwYzAxMDJiYTE1MTkzNjIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1Mi43MjM0LCAtMS4zNzQxXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF80NzYyYzU5ZWM4OWQ0OTY2YmMwYzYzZGExYTA2OTE4MCA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfYjkyNDkxMDlkOTU1NDc3YjhkYjQ0ZGE4OGYwNWRjNTAgPSAkKGA8ZGl2IGlkPSJodG1sX2I5MjQ5MTA5ZDk1NTQ3N2I4ZGI0NGRhODhmMDVkYzUwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5UaGUgRW1wb3JpdW0sIExlaWNlc3RlcnNoaXJlPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzQ3NjJjNTllYzg5ZDQ5NjZiYzBjNjNkYTFhMDY5MTgwLnNldENvbnRlbnQoaHRtbF9iOTI0OTEwOWQ5NTU0NzdiOGRiNDRkYTg4ZjA1ZGM1MCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8wMWExOWUyNjFlNDA0NTMzYjBjMDEwMmJhMTUxOTM2Mi5iaW5kUG9wdXAocG9wdXBfNDc2MmM1OWVjODlkNDk2NmJjMGM2M2RhMWEwNjkxODApCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfY2ZlZmM1OWE2MWM5NGZhM2FiNjA3YjdjYTA5Nzc5NGYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40NDkyLCAtMi41OTUxOF0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfZDg4ZmM4NzA1ZTQ1NGRlY2JmY2IwMDc0MmJlZWFhMjIgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzYzNTk3YTUwN2FhNDQyZmRhNWJjYTFjMTU4MmUwZGY2ID0gJChgPGRpdiBpZD0iaHRtbF82MzU5N2E1MDdhYTQ0MmZkYTViY2ExYzE1ODJlMGRmNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VGhlIFRoZWtsYTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9kODhmYzg3MDVlNDU0ZGVjYmZjYjAwNzQyYmVlYWEyMi5zZXRDb250ZW50KGh0bWxfNjM1OTdhNTA3YWE0NDJmZGE1YmNhMWMxNTgyZTBkZjYpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfY2ZlZmM1OWE2MWM5NGZhM2FiNjA3YjdjYTA5Nzc5NGYuYmluZFBvcHVwKHBvcHVwX2Q4OGZjODcwNWU0NTRkZWNiZmNiMDA3NDJiZWVhYTIyKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2IzY2Y3ZDc1NTc3YjRhYmZiNTZhNmYyOWVhZmYxMmMyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuODk3MiwgLTIuMDc3OF0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfYjg1NjBjMzcwZTE3NGM5MDk5N2RiNTViMDZjNGNhODAgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzMwYjI3NjU3NWFmOTRjZTRhMzk1MzM1ZjYxYWJkMTM4ID0gJChgPGRpdiBpZD0iaHRtbF8zMGIyNzY1NzVhZjk0Y2U0YTM5NTMzNWY2MWFiZDEzOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q2hlbHRlbmhhbSBUb3duIEhhbGw8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfYjg1NjBjMzcwZTE3NGM5MDk5N2RiNTViMDZjNGNhODAuc2V0Q29udGVudChodG1sXzMwYjI3NjU3NWFmOTRjZTRhMzk1MzM1ZjYxYWJkMTM4KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2IzY2Y3ZDc1NTc3YjRhYmZiNTZhNmYyOWVhZmYxMmMyLmJpbmRQb3B1cChwb3B1cF9iODU2MGMzNzBlMTc0YzkwOTk3ZGI1NWIwNmM0Y2E4MCkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl81NmQ4YjY1Y2Q5ZmY0N2IzODVjNjI0NDRiNWZjNTUxNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjY0MDgsIDAuMDkzNF0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfZjA1NDlmYjE5ZTYwNGNkY2FiMjAyMDRiYjc3MWM0ZmUgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzc0MTg5OGU3NGVlMjQ5OWRiOGI1ZWY1NzYzOGZlYjIwID0gJChgPGRpdiBpZD0iaHRtbF83NDE4OThlNzRlZTI0OTlkYjhiNWVmNTc2MzhmZWIyMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RXBwaW5nIEZvcmVzdCBDb3VudHJ5IENsdWI8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfZjA1NDlmYjE5ZTYwNGNkY2FiMjAyMDRiYjc3MWM0ZmUuc2V0Q29udGVudChodG1sXzc0MTg5OGU3NGVlMjQ5OWRiOGI1ZWY1NzYzOGZlYjIwKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzU2ZDhiNjVjZDlmZjQ3YjM4NWM2MjQ0NGI1ZmM1NTE1LmJpbmRQb3B1cChwb3B1cF9mMDU0OWZiMTllNjA0Y2RjYWIyMDIwNGJiNzcxYzRmZSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl85NDFjOWY5Y2E0ZDk0ZmRiODdlZTE2NDMzMDE2ZGVmNCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjgwMDMsIC0xLjU0OTddLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzk4MGFlOTM1YTc3MzRlYjdhNDkxYjE3NGYwM2Y2NTFiID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF82MzQ1ZDJjZmMwMjc0MzRiYWJlY2U2ZmJiOWFmZDRiNCA9ICQoYDxkaXYgaWQ9Imh0bWxfNjM0NWQyY2ZjMDI3NDM0YmFiZWNlNmZiYjlhZmQ0YjQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxlZWRzIFRvd24gSGFsbDwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF85ODBhZTkzNWE3NzM0ZWI3YTQ5MWIxNzRmMDNmNjUxYi5zZXRDb250ZW50KGh0bWxfNjM0NWQyY2ZjMDI3NDM0YmFiZWNlNmZiYjlhZmQ0YjQpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfOTQxYzlmOWNhNGQ5NGZkYjg3ZWUxNjQzMzAxNmRlZjQuYmluZFBvcHVwKHBvcHVwXzk4MGFlOTM1YTc3MzRlYjdhNDkxYjE3NGYwM2Y2NTFiKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2ZhOGIyYTRkMDJlZTQ0MmU4ODE1ODEzNzM2NzExZDBjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTIxNSwgLTAuMTVdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzJmNTk4NjJhNDdlMjRjNzViYmE4ZGQwOTA0YjY2NjQ0ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8xZGQ3ZTViOGEzNjI0ZWQ4ODViODViYThmMTZhNzUyOCA9ICQoYDxkaXYgaWQ9Imh0bWxfMWRkN2U1YjhhMzYyNGVkODg1Yjg1YmE4ZjE2YTc1MjgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1hcnlsZWJvbmUgR2FyZGVuczwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8yZjU5ODYyYTQ3ZTI0Yzc1YmJhOGRkMDkwNGI2NjY0NC5zZXRDb250ZW50KGh0bWxfMWRkN2U1YjhhMzYyNGVkODg1Yjg1YmE4ZjE2YTc1MjgpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfZmE4YjJhNGQwMmVlNDQyZTg4MTU4MTM3MzY3MTFkMGMuYmluZFBvcHVwKHBvcHVwXzJmNTk4NjJhNDdlMjRjNzViYmE4ZGQwOTA0YjY2NjQ0KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzI5Mjg4NDU1MjQzMjQxYTNiMmE4MWM1NjQ5YmM2OGNkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuOTg2NCwgLTIuMTM3MjJdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2ZmNWFjZGQyM2Y3NzRlZGI4N2E3ZjY2MWFhNmMwYjMxID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9mNjZkYjczZWUxOGM0NzViYWU3ZjA4NmY0NjI3NWI5ZiA9ICQoYDxkaXYgaWQ9Imh0bWxfZjY2ZGI3M2VlMThjNDc1YmFlN2YwODZmNDYyNzViOWYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNoZWxsZXkncyBMYXNlcmRvbWU8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfZmY1YWNkZDIzZjc3NGVkYjg3YTdmNjYxYWE2YzBiMzEuc2V0Q29udGVudChodG1sX2Y2NmRiNzNlZTE4YzQ3NWJhZTdmMDg2ZjQ2Mjc1YjlmKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzI5Mjg4NDU1MjQzMjQxYTNiMmE4MWM1NjQ5YmM2OGNkLmJpbmRQb3B1cChwb3B1cF9mZjVhY2RkMjNmNzc0ZWRiODdhN2Y2NjFhYTZjMGIzMSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl84ODY1OTNlMjk5NTk0ZjdkOTI4N2M0MWJhNzQ1NGVkMCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUwLjg2NiwgLTIuMTg2XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF85N2JlOWNmODBmYzk0MWYxYTUyZWE1NjE2ODFiZmE5NyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfZWVkNzVlZDIzMDgzNDYzNmE5NmZlMDZjYzY0ZDE3NTEgPSAkKGA8ZGl2IGlkPSJodG1sX2VlZDc1ZWQyMzA4MzQ2MzZhOTZmZTA2Y2M2NGQxNzUxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5UaGUgQ29hZGUgSGFsbDwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF85N2JlOWNmODBmYzk0MWYxYTUyZWE1NjE2ODFiZmE5Ny5zZXRDb250ZW50KGh0bWxfZWVkNzVlZDIzMDgzNDYzNmE5NmZlMDZjYzY0ZDE3NTEpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfODg2NTkzZTI5OTU5NGY3ZDkyODdjNDFiYTc0NTRlZDAuYmluZFBvcHVwKHBvcHVwXzk3YmU5Y2Y4MGZjOTQxZjFhNTJlYTU2MTY4MWJmYTk3KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzEzZTVkN2E0MzI0YjRmZDk5OGUyMzNhNWVmNmU2YjQwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuNDc4MywgLTEuODk3XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF84NTA3NGEwODY4ODM0ZTk5YTI1MDk1MDNiZGEwOTMzNyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfM2NhY2NjMmQ5M2IxNDA1NDgxZGVlOGVmNmRkZTJjYzMgPSAkKGA8ZGl2IGlkPSJodG1sXzNjYWNjYzJkOTNiMTQwNTQ4MWRlZThlZjZkZGUyY2MzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CaXJtaW5naGFtIE9kZW9uPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzg1MDc0YTA4Njg4MzRlOTlhMjUwOTUwM2JkYTA5MzM3LnNldENvbnRlbnQoaHRtbF8zY2FjY2MyZDkzYjE0MDU0ODFkZWU4ZWY2ZGRlMmNjMyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8xM2U1ZDdhNDMyNGI0ZmQ5OThlMjMzYTVlZjZlNmI0MC5iaW5kUG9wdXAocG9wdXBfODUwNzRhMDg2ODgzNGU5OWEyNTA5NTAzYmRhMDkzMzcpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfYjAwMzAwMDM1M2QxNGUyODljMDdkZjg5N2E4MzU1ODIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40NDY0LCAtMi41NzgyOV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMzA2OTUyNzI3ZmZjNDE5MDk5NDZjZGQwZWQwM2UxMTUgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2IxZWVjYjFkMmQ2MTQ0Y2M4MGRlYWMxYjVjNjRjNmM3ID0gJChgPGRpdiBpZD0iaHRtbF9iMWVlY2IxZDJkNjE0NGNjODBkZWFjMWI1YzY0YzZjNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QnJpc3RvbCBBcmVuYTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8zMDY5NTI3MjdmZmM0MTkwOTk0NmNkZDBlZDAzZTExNS5zZXRDb250ZW50KGh0bWxfYjFlZWNiMWQyZDYxNDRjYzgwZGVhYzFiNWM2NGM2YzcpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfYjAwMzAwMDM1M2QxNGUyODljMDdkZjg5N2E4MzU1ODIuYmluZFBvcHVwKHBvcHVwXzMwNjk1MjcyN2ZmYzQxOTA5OTQ2Y2RkMGVkMDNlMTE1KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzZiYzExODUyMWFhYTRiZDRiOGEyZmIyMGQ4YzMzY2ZhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNDk4NiwgLTAuMDkzODk0NF0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfOTQzOTJjYTM4MDlkNDBjY2E1NDBiMDQ1NjU0ZTQxY2YgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2FhOTQ2NTMzYzE5ZDRkMTA4ODU0NmJkYWRkZTIyY2YwID0gJChgPGRpdiBpZD0iaHRtbF9hYTk0NjUzM2MxOWQ0ZDEwODg1NDZiZGFkZGUyMmNmMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+SGVucnkgV29vZCBIYWxsPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzk0MzkyY2EzODA5ZDQwY2NhNTQwYjA0NTY1NGU0MWNmLnNldENvbnRlbnQoaHRtbF9hYTk0NjUzM2MxOWQ0ZDEwODg1NDZiZGFkZGUyMmNmMCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl82YmMxMTg1MjFhYWE0YmQ0YjhhMmZiMjBkOGMzM2NmYS5iaW5kUG9wdXAocG9wdXBfOTQzOTJjYTM4MDlkNDBjY2E1NDBiMDQ1NjU0ZTQxY2YpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfZTc5NGIxYWI1MTg5NGNlOTg4ODZmZWU2ZjA0NzM1ZGMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1NC41NzYxLCAtMS4yMzQwM10sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMGQ0M2Y0NzllYTQ4NGE3OGE2YWU0YTZmMGEwODY4ODAgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzMzZTMxYWJjODI4OTQ0OTE5MDA4YTAxMjQwZTJhMTQ4ID0gJChgPGRpdiBpZD0iaHRtbF8zM2UzMWFiYzgyODk0NDkxOTAwOGEwMTI0MGUyYTE0OCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TWlkZGxlc2Jyb3VnaCBUb3duIEhhbGw8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfMGQ0M2Y0NzllYTQ4NGE3OGE2YWU0YTZmMGEwODY4ODAuc2V0Q29udGVudChodG1sXzMzZTMxYWJjODI4OTQ0OTE5MDA4YTAxMjQwZTJhMTQ4KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2U3OTRiMWFiNTE4OTRjZTk4ODg2ZmVlNmYwNDczNWRjLmJpbmRQb3B1cChwb3B1cF8wZDQzZjQ3OWVhNDg0YTc4YTZhZTRhNmYwYTA4Njg4MCkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl80NTBlNmMwMjFkOTY0YjU4OWRkMTBlMWRkZTkxMTJlMCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjc1OTYsIC0yLjY5NzVdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2RmZGQ2YjZhOWQwYjQxNjlhZDkzZTE5MGIxOGVhNzBjID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9jYTA0NzZmMmMzNjY0NWY1OWMxOWM0ODY5NzM1OWI3ZCA9ICQoYDxkaXYgaWQ9Imh0bWxfY2EwNDc2ZjJjMzY2NDVmNTljMTljNDg2OTczNTliN2QiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlByZXN0b24gR3VpbGQgSGFsbDwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9kZmRkNmI2YTlkMGI0MTY5YWQ5M2UxOTBiMThlYTcwYy5zZXRDb250ZW50KGh0bWxfY2EwNDc2ZjJjMzY2NDVmNTljMTljNDg2OTczNTliN2QpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfNDUwZTZjMDIxZDk2NGI1ODlkZDEwZTFkZGU5MTEyZTAuYmluZFBvcHVwKHBvcHVwX2RmZGQ2YjZhOWQwYjQxNjlhZDkzZTE5MGIxOGVhNzBjKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2EzODMwYzM5MDVkYTQxMjE5ZmQyYmI2ZDk4M2Q2MGJkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTQuNjE5MiwgLTEuMDc2NDJdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzI4MzJjODhhMmQxNDQ1OWRhNDFlZjVjMjQyOTVjMjA3ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8wZmM1MzMzOWM5YTg0ZWZjODY4Y2IwMTg5YjdmOWM0NyA9ICQoYDxkaXYgaWQ9Imh0bWxfMGZjNTMzMzljOWE4NGVmYzg2OGNiMDE4OWI3ZjljNDciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJlZGNhciBCb3dsPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzI4MzJjODhhMmQxNDQ1OWRhNDFlZjVjMjQyOTVjMjA3LnNldENvbnRlbnQoaHRtbF8wZmM1MzMzOWM5YTg0ZWZjODY4Y2IwMTg5YjdmOWM0Nyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9hMzgzMGMzOTA1ZGE0MTIxOWZkMmJiNmQ5ODNkNjBiZC5iaW5kUG9wdXAocG9wdXBfMjgzMmM4OGEyZDE0NDU5ZGE0MWVmNWMyNDI5NWMyMDcpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfYWRmN2E2NzVmYzM0NDJlYzg3NTE4NjE5ZmVjOTYyMWEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41MDk3LCAtMC4xMjI4XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8zOTZjOTljYTg2YTE0NWZjOTIyMzM3NmNiMzJiYzIyOSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfMDNhN2NkZjBlYjgwNGU4YWJmNzZhYjdhNDk3YzE4N2EgPSAkKGA8ZGl2IGlkPSJodG1sXzAzYTdjZGYwZWI4MDRlOGFiZjc2YWI3YTQ5N2MxODdhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5UaXZvbGkgTXVzaWMgSGFsbCAoTG9uZG9uKTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8zOTZjOTljYTg2YTE0NWZjOTIyMzM3NmNiMzJiYzIyOS5zZXRDb250ZW50KGh0bWxfMDNhN2NkZjBlYjgwNGU4YWJmNzZhYjdhNDk3YzE4N2EpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfYWRmN2E2NzVmYzM0NDJlYzg3NTE4NjE5ZmVjOTYyMWEuYmluZFBvcHVwKHBvcHVwXzM5NmM5OWNhODZhMTQ1ZmM5MjIzMzc2Y2IzMmJjMjI5KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzE5OGY4ZmZlY2JkNjQ5ZjNhZDc4OGYwMDc0OTQ0ODQ5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTMuODA2OSwgLTEuNTU2NF0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfYzkwOGE0NmM2OWZlNGIwNTkxNmJhMGU0OGNkYjM3ODcgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2RjZDY0MmM4NmI0ZjRlYTNhODdjYzBkZTNmNzM3ZmM4ID0gJChgPGRpdiBpZD0iaHRtbF9kY2Q2NDJjODZiNGY0ZWEzYTg3Y2MwZGUzZjczN2ZjOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VW5pdmVyc2l0eSBSZWZlY3Rvcnk8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfYzkwOGE0NmM2OWZlNGIwNTkxNmJhMGU0OGNkYjM3ODcuc2V0Q29udGVudChodG1sX2RjZDY0MmM4NmI0ZjRlYTNhODdjYzBkZTNmNzM3ZmM4KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzE5OGY4ZmZlY2JkNjQ5ZjNhZDc4OGYwMDc0OTQ0ODQ5LmJpbmRQb3B1cChwb3B1cF9jOTA4YTQ2YzY5ZmU0YjA1OTE2YmEwZTQ4Y2RiMzc4NykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl83MmZmNWNiMTVjMTM0ZGFmODY2OGJjMDI5OGY4YTkwNyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUyLjE5MjcsIC0yLjIzMTddLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2Q4NWUzYjYyZTRkMzRmZjNiZDgyZDc1NzRjNzczZjU0ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF82MTMxOTNiZTM5ZWU0OWYyYWU1YWQ0OTNiOWY2ODdmOCA9ICQoYDxkaXYgaWQ9Imh0bWxfNjEzMTkzYmUzOWVlNDlmMmFlNWFkNDkzYjlmNjg3ZjgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlVuaXZlcnNpdHkgb2YgV29yY2VzdGVyIEFyZW5hPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2Q4NWUzYjYyZTRkMzRmZjNiZDgyZDc1NzRjNzczZjU0LnNldENvbnRlbnQoaHRtbF82MTMxOTNiZTM5ZWU0OWYyYWU1YWQ0OTNiOWY2ODdmOCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl83MmZmNWNiMTVjMTM0ZGFmODY2OGJjMDI5OGY4YTkwNy5iaW5kUG9wdXAocG9wdXBfZDg1ZTNiNjJlNGQzNGZmM2JkODJkNzU3NGM3NzNmNTQpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfM2E5MWYzZWY5NmFhNDI1ZjgzYTk3Nzg5OWQyOGExZmYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1Mi41ODU3LCAtMS45ODAzM10sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMzEyNGRjNGUzYmI1NDBhZGE0OWIwZGI1NmM2N2JhZTkgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2M5YmMxNWZhOTJjYTRkZjU5MTBhNDk4MzRhM2I3ZTUxID0gJChgPGRpdiBpZD0iaHRtbF9jOWJjMTVmYTkyY2E0ZGY1OTEwYTQ5ODM0YTNiN2U1MSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V2Fsc2FsbCBUb3duIEhhbGw8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfMzEyNGRjNGUzYmI1NDBhZGE0OWIwZGI1NmM2N2JhZTkuc2V0Q29udGVudChodG1sX2M5YmMxNWZhOTJjYTRkZjU5MTBhNDk4MzRhM2I3ZTUxKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzNhOTFmM2VmOTZhYTQyNWY4M2E5Nzc4OTlkMjhhMWZmLmJpbmRQb3B1cChwb3B1cF8zMTI0ZGM0ZTNiYjU0MGFkYTQ5YjBkYjU2YzY3YmFlOSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl8yZDhmZjcxZmNiNTQ0MmNkYjFiMDU1ZjYyMWMxN2U0ZCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjUzNDQsIC0wLjEwODg4OV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfOTFjYzA5MWM4ZTM3NGY0ODg3YTgwNDEzZjk4NTMyNzAgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzNiYTI1YTFkMjZlYjQ1YmM4MWYxNWY4MjIzMmFmZWU3ID0gJChgPGRpdiBpZD0iaHRtbF8zYmEyNWExZDI2ZWI0NWJjODFmMTVmODIyMzJhZmVlNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VGhlIElzbGluZ3RvbjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF85MWNjMDkxYzhlMzc0ZjQ4ODdhODA0MTNmOTg1MzI3MC5zZXRDb250ZW50KGh0bWxfM2JhMjVhMWQyNmViNDViYzgxZjE1ZjgyMjMyYWZlZTcpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfMmQ4ZmY3MWZjYjU0NDJjZGIxYjA1NWY2MjFjMTdlNGQuYmluZFBvcHVwKHBvcHVwXzkxY2MwOTFjOGUzNzRmNDg4N2E4MDQxM2Y5ODUzMjcwKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzUzMWYzZmVjMTdhNTQzMWY5YzM1NzJkMzdlNDRjZmFmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNDg5LCAtMC4xNjQyXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9jZDg3MjhjYzNhNjY0NzlkOWZiY2U3ZWUyY2EzY2U5MCA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfMTRjZmIxOGE5ZTNiNGRkYzgzNjY2MGY1ZGUyNTFlOTQgPSAkKGA8ZGl2IGlkPSJodG1sXzE0Y2ZiMThhOWUzYjRkZGM4MzY2NjBmNWRlMjUxZTk0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5UaGUgUGhlYXNhbnRyeTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9jZDg3MjhjYzNhNjY0NzlkOWZiY2U3ZWUyY2EzY2U5MC5zZXRDb250ZW50KGh0bWxfMTRjZmIxOGE5ZTNiNGRkYzgzNjY2MGY1ZGUyNTFlOTQpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfNTMxZjNmZWMxN2E1NDMxZjljMzU3MmQzN2U0NGNmYWYuYmluZFBvcHVwKHBvcHVwX2NkODcyOGNjM2E2NjQ3OWQ5ZmJjZTdlZTJjYTNjZTkwKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2EwMjVmZDA3N2FkZDRmZjBhYzg2NTY1MTZjN2Y4YTQzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTMuOTUzNCwgLTEuMDc0MjRdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzlhNjk0NDFmNmNmYzQ1OTNhYzQ3MzIzNjliOTRlMjA2ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8wMmZmN2FmYzhkNzA0ZGVmOTlkMTU0MjVhMjllOTkzYyA9ICQoYDxkaXYgaWQ9Imh0bWxfMDJmZjdhZmM4ZDcwNGRlZjk5ZDE1NDI1YTI5ZTk5M2MiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJhcmJpY2FuIENlbnRyZSwgWW9yazwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF85YTY5NDQxZjZjZmM0NTkzYWM0NzMyMzY5Yjk0ZTIwNi5zZXRDb250ZW50KGh0bWxfMDJmZjdhZmM4ZDcwNGRlZjk5ZDE1NDI1YTI5ZTk5M2MpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfYTAyNWZkMDc3YWRkNGZmMGFjODY1NjUxNmM3ZjhhNDMuYmluZFBvcHVwKHBvcHVwXzlhNjk0NDFmNmNmYzQ1OTNhYzQ3MzIzNjliOTRlMjA2KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzEzYzU5Y2ZiNDFjMjQwOTFhZjQ2NTVlM2E4NDQyMzAyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNDU1OSwgLTIuNTkyNV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMTc4NzJlNGY2MmE1NDIwZWIxNmIxNWVjMjdhMTJkYTYgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzNjZDJmYmZiYWIyZjQ0N2VhZTVkYWE4YzVmYzY4ZWJlID0gJChgPGRpdiBpZD0iaHRtbF8zY2QyZmJmYmFiMmY0NDdlYWU1ZGFhOGM1ZmM2OGViZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QmllcmtlbGxlciBUaGVhdHJlPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzE3ODcyZTRmNjJhNTQyMGViMTZiMTVlYzI3YTEyZGE2LnNldENvbnRlbnQoaHRtbF8zY2QyZmJmYmFiMmY0NDdlYWU1ZGFhOGM1ZmM2OGViZSk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8xM2M1OWNmYjQxYzI0MDkxYWY0NjU1ZTNhODQ0MjMwMi5iaW5kUG9wdXAocG9wdXBfMTc4NzJlNGY2MmE1NDIwZWIxNmIxNWVjMjdhMTJkYTYpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzQxMTkzNjcxODY3NGFjYzgwNzk3NmM4MjVlYjE0YWEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1Mi45NTI4LCAtMS4xMzk0NF0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfNmE4MzE2NTNiYjM4NGJhYWExNDczZDAwMjk3N2I0ZTQgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2Y1OWFlNmY0NzliZjRmNjNhNTc4MmY4ZGFlMTM3MmUyID0gJChgPGRpdiBpZD0iaHRtbF9mNTlhZTZmNDc5YmY0ZjYzYTU3ODJmOGRhZTEzNzJlMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TW90b3Jwb2ludCBBcmVuYSBOb3R0aW5naGFtPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzZhODMxNjUzYmIzODRiYWFhMTQ3M2QwMDI5NzdiNGU0LnNldENvbnRlbnQoaHRtbF9mNTlhZTZmNDc5YmY0ZjYzYTU3ODJmOGRhZTEzNzJlMik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8zNDExOTM2NzE4Njc0YWNjODA3OTc2YzgyNWViMTRhYS5iaW5kUG9wdXAocG9wdXBfNmE4MzE2NTNiYjM4NGJhYWExNDczZDAwMjk3N2I0ZTQpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfZGZlOTlhODcxMGZhNDA3NGJkY2NlODU5YzFmMDE2NjEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1NC45Njk0LCAtMS42MTQzXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8yYWI1ODZjZjE4MGI0ZTA2Yjk0ZGFhZDY3MzgxNDA5MCA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfODEwYzExY2YzODlmNGI5NDg1ZTUxYWU0NTkwYWQ1M2IgPSAkKGA8ZGl2IGlkPSJodG1sXzgxMGMxMWNmMzg5ZjRiOTQ4NWU1MWFlNDU5MGFkNTNiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Ob3J0aCBvZiBFbmdsYW5kIEluc3RpdHV0ZSBvZiBNaW5pbmcgYW5kIE1lY2hhbmljYWwgRW5naW5lZXJzPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzJhYjU4NmNmMTgwYjRlMDZiOTRkYWFkNjczODE0MDkwLnNldENvbnRlbnQoaHRtbF84MTBjMTFjZjM4OWY0Yjk0ODVlNTFhZTQ1OTBhZDUzYik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9kZmU5OWE4NzEwZmE0MDc0YmRjY2U4NTljMWYwMTY2MS5iaW5kUG9wdXAocG9wdXBfMmFiNTg2Y2YxODBiNGUwNmI5NGRhYWQ2NzM4MTQwOTApCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfZjc1MTYxYjQxMGUzNGQ3YTk0MzI5MmE0YTcwM2RlMTggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40NDg5LCAtMC4zM10sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMjVmMjYwZWE1YmZmNDM4MmFiNjBkZjgwMGVkMmNkZmYgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzJiOThmZmNkZDA2NTRjNTRhZjAwODM5ZTRlMTMyOWEzID0gJChgPGRpdiBpZD0iaHRtbF8yYjk4ZmZjZGQwNjU0YzU0YWYwMDgzOWU0ZTEzMjlhMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VHdpY2tGb2xrPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzI1ZjI2MGVhNWJmZjQzODJhYjYwZGY4MDBlZDJjZGZmLnNldENvbnRlbnQoaHRtbF8yYjk4ZmZjZGQwNjU0YzU0YWYwMDgzOWU0ZTEzMjlhMyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9mNzUxNjFiNDEwZTM0ZDdhOTQzMjkyYTRhNzAzZGUxOC5iaW5kUG9wdXAocG9wdXBfMjVmMjYwZWE1YmZmNDM4MmFiNjBkZjgwMGVkMmNkZmYpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzEzZWFmMmM0ZjBiNGJkY2EwOGIyMTViOTNmMDlkOWUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1My40MDg2LCAtMi45ODAxXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9kMzdkZjllMDk0YzE0ZDY2ODA1NzY5YTdmMDJiM2RkMyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNTcyNDIzYjE5NjQyNGQ2OTliZGZiNWEyOGQ4ZWZlMWEgPSAkKGA8ZGl2IGlkPSJodG1sXzU3MjQyM2IxOTY0MjRkNjk5YmRmYjVhMjhkOGVmZTFhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TdCBHZW9yZ2UncyBIYWxsLCBMaXZlcnBvb2w8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfZDM3ZGY5ZTA5NGMxNGQ2NjgwNTc2OWE3ZjAyYjNkZDMuc2V0Q29udGVudChodG1sXzU3MjQyM2IxOTY0MjRkNjk5YmRmYjVhMjhkOGVmZTFhKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzMxM2VhZjJjNGYwYjRiZGNhMDhiMjE1YjkzZjA5ZDllLmJpbmRQb3B1cChwb3B1cF9kMzdkZjllMDk0YzE0ZDY2ODA1NzY5YTdmMDJiM2RkMykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl82MjA3MDliNjRmOTc0OTNhYWI3OWJjZjY4NjdkZWMwZCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUyLjQ3NjgsIC0xLjkwMTVdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2FkZWYxYjQzZTEwMjQ4YmU4YTQ3OGY0MjdlMDRmOWM0ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9jOTk2MTk3NTU5NDY0Y2VhYmI5YTEyNmJjOGZmMTE1NCA9ICQoYDxkaXYgaWQ9Imh0bWxfYzk5NjE5NzU1OTQ2NGNlYWJiOWExMjZiYzhmZjExNTQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkVkd2FyZHMgTnVtYmVyIEVpZ2h0PC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2FkZWYxYjQzZTEwMjQ4YmU4YTQ3OGY0MjdlMDRmOWM0LnNldENvbnRlbnQoaHRtbF9jOTk2MTk3NTU5NDY0Y2VhYmI5YTEyNmJjOGZmMTE1NCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl82MjA3MDliNjRmOTc0OTNhYWI3OWJjZjY4NjdkZWMwZC5iaW5kUG9wdXAocG9wdXBfYWRlZjFiNDNlMTAyNDhiZThhNDc4ZjQyN2UwNGY5YzQpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzFhNzEzNDhjOWU1NDAzYThkMTA4NGY1ODIyNTNkOGQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MC43MjcsIC0xLjg0XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF81NzVhZGUwOTJkZmI0NTAwYTA5YjY0MTI5ZmM2ODc0MCA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfYTQ2NThlYmZlODE5NGRiMGEwYTZmMjdjOTNkNmMxZjggPSAkKGA8ZGl2IGlkPSJodG1sX2E0NjU4ZWJmZTgxOTRkYjBhMGE2ZjI3YzkzZDZjMWY4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PMiBBY2FkZW15IEJvdXJuZW1vdXRoPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzU3NWFkZTA5MmRmYjQ1MDBhMDliNjQxMjlmYzY4NzQwLnNldENvbnRlbnQoaHRtbF9hNDY1OGViZmU4MTk0ZGIwYTBhNmYyN2M5M2Q2YzFmOCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8zMWE3MTM0OGM5ZTU0MDNhOGQxMDg0ZjU4MjI1M2Q4ZC5iaW5kUG9wdXAocG9wdXBfNTc1YWRlMDkyZGZiNDUwMGEwOWI2NDEyOWZjNjg3NDApCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfZmI3NDQ3ZTllNzg5NDYzMGI1Nzk5ZDY5YmRiOGZkMzYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41NDQ3LCAtMC4xMDI1MDNdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzRkNWY4Y2JiNjFmNDRiMzJiMDJkNWViMTQwZjEyMWU5ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF80ZWExNzM1ODhhNTM0NDYyODEwNDI2ZWRmYzZmOWYwNiA9ICQoYDxkaXYgaWQ9Imh0bWxfNGVhMTczNTg4YTUzNDQ2MjgxMDQyNmVkZmM2ZjlmMDYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlVuaW9uIENoYXBlbCwgSXNsaW5ndG9uPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzRkNWY4Y2JiNjFmNDRiMzJiMDJkNWViMTQwZjEyMWU5LnNldENvbnRlbnQoaHRtbF80ZWExNzM1ODhhNTM0NDYyODEwNDI2ZWRmYzZmOWYwNik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9mYjc0NDdlOWU3ODk0NjMwYjU3OTlkNjliZGI4ZmQzNi5iaW5kUG9wdXAocG9wdXBfNGQ1ZjhjYmI2MWY0NGIzMmIwMmQ1ZWIxNDBmMTIxZTkpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzAzYTYwNTkzODlhNDZhNmIxNThlYzA3NWVlYzBiM2EgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1NC45Nzc0LCAtMS42MV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMWE0ZGRmNjQwYmJmNGMyNDhkOWU3NTgyN2ViZjI1ZDAgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2NlODMwYWVlODUxMTRlNWY5NDExNDJhNDMzNjM2YWIyID0gJChgPGRpdiBpZD0iaHRtbF9jZTgzMGFlZTg1MTE0ZTVmOTQxMTQyYTQzMzYzNmFiMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TmV3Y2FzdGxlIENpdHkgSGFsbDwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8xYTRkZGY2NDBiYmY0YzI0OGQ5ZTc1ODI3ZWJmMjVkMC5zZXRDb250ZW50KGh0bWxfY2U4MzBhZWU4NTExNGU1Zjk0MTE0MmE0MzM2MzZhYjIpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfMzAzYTYwNTkzODlhNDZhNmIxNThlYzA3NWVlYzBiM2EuYmluZFBvcHVwKHBvcHVwXzFhNGRkZjY0MGJiZjRjMjQ4ZDllNzU4MjdlYmYyNWQwKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzAxNTA4ZjI4YWE3ZDRiMzQ4ZmQ1YmI0ZGFhNWRjNWMzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTAyOCwgMC4wMDMxMTY2N10sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfZWI1ZGU0NTQ1ZGM3NDliNmE3N2Q2OTljNWFhZWJiMDQgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2ZhOWE4NGIzNjFjNDRkNmI5MjFmZWFlZjBjOGI3MjIzID0gJChgPGRpdiBpZD0iaHRtbF9mYTlhODRiMzYxYzQ0ZDZiOTIxZmVhZWYwYzhiNzIyMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VGhlIE8yPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2ViNWRlNDU0NWRjNzQ5YjZhNzdkNjk5YzVhYWViYjA0LnNldENvbnRlbnQoaHRtbF9mYTlhODRiMzYxYzQ0ZDZiOTIxZmVhZWYwYzhiNzIyMyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8wMTUwOGYyOGFhN2Q0YjM0OGZkNWJiNGRhYTVkYzVjMy5iaW5kUG9wdXAocG9wdXBfZWI1ZGU0NTQ1ZGM3NDliNmE3N2Q2OTljNWFhZWJiMDQpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfODg4YzFhOWNmOWZiNDIyYmE1NTVlMGJiYzlhM2JkZDIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41NTU4LCAtMC4yNzk3MjJdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzg5NGY5N2FhMWQ3NDRlMmRiNTkxZDI3OGMxZGNlMmI5ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8zZjJiNzdhYzU5NmE0OTRhOWViZDdiZWI3MWFhYjQ4MSA9ICQoYDxkaXYgaWQ9Imh0bWxfM2YyYjc3YWM1OTZhNDk0YTllYmQ3YmViNzFhYWI0ODEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldlbWJsZXkgU3RhZGl1bTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF84OTRmOTdhYTFkNzQ0ZTJkYjU5MWQyNzhjMWRjZTJiOS5zZXRDb250ZW50KGh0bWxfM2YyYjc3YWM1OTZhNDk0YTllYmQ3YmViNzFhYWI0ODEpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfODg4YzFhOWNmOWZiNDIyYmE1NTVlMGJiYzlhM2JkZDIuYmluZFBvcHVwKHBvcHVwXzg5NGY5N2FhMWQ3NDRlMmRiNTkxZDI3OGMxZGNlMmI5KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzM3MjcwMjhhZjJmYTRlMDJiOGIyMGQwNjU1Y2ZiMDQyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTAuNzEzMSwgLTMuNDQwNTFdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzg2ODNhZmYwMjhiYjQ5NTFhOGE5OGMzMTBhZmQ0Nzg4ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF82ZTZlODgzODQ1NmU0MTcxODZlNDE2NmE5MTk1OGRkZCA9ICQoYDxkaXYgaWQ9Imh0bWxfNmU2ZTg4Mzg0NTZlNDE3MTg2ZTQxNjZhOTE5NThkZGQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldlc3Rwb2ludCBBcmVuYTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF84NjgzYWZmMDI4YmI0OTUxYThhOThjMzEwYWZkNDc4OC5zZXRDb250ZW50KGh0bWxfNmU2ZTg4Mzg0NTZlNDE3MTg2ZTQxNjZhOTE5NThkZGQpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfMzcyNzAyOGFmMmZhNGUwMmI4YjIwZDA2NTVjZmIwNDIuYmluZFBvcHVwKHBvcHVwXzg2ODNhZmYwMjhiYjQ5NTFhOGE5OGMzMTBhZmQ0Nzg4KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2FiMThkNDBjZWU3OTQ5MWNhMjI3MjFmYjUwODYyNTQ1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTA0MiwgMC4wMDMyXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9jZjZhN2ZhOWM3ZWU0Y2RiYmE1NDM2NTQwMzFlNjFkZSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfZGNkZmFmYzQ2ZmE2NGE0MWE3YjgzOGFhNDQ0NDE1NmEgPSAkKGA8ZGl2IGlkPSJodG1sX2RjZGZhZmM0NmZhNjRhNDFhN2I4MzhhYTQ0NDQxNTZhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NYXR0ZXIgKHZlbnVlKTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9jZjZhN2ZhOWM3ZWU0Y2RiYmE1NDM2NTQwMzFlNjFkZS5zZXRDb250ZW50KGh0bWxfZGNkZmFmYzQ2ZmE2NGE0MWE3YjgzOGFhNDQ0NDE1NmEpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfYWIxOGQ0MGNlZTc5NDkxY2EyMjcyMWZiNTA4NjI1NDUuYmluZFBvcHVwKHBvcHVwX2NmNmE3ZmE5YzdlZTRjZGJiYTU0MzY1NDAzMWU2MWRlKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzgyYTJiZGMzYjlkYjQ3MTM5YTQ5MDI5YTM5OTg1MDBlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTE4OSwgLTAuMTQyNl0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMzRhMjhiZDM4Y2U2NGI2M2IzNWQwMWQwYjgzNTgzMzAgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2YwNzUwYTY1MWM3MjQyOTU5Y2E2MDEyMDFlYTNkY2I1ID0gJChgPGRpdiBpZD0iaHRtbF9mMDc1MGE2NTFjNzI0Mjk1OWNhNjAxMjAxZWEzZGNiNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UGhpbGhhcm1vbmljIEhhbGwsIExvbmRvbjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8zNGEyOGJkMzhjZTY0YjYzYjM1ZDAxZDBiODM1ODMzMC5zZXRDb250ZW50KGh0bWxfZjA3NTBhNjUxYzcyNDI5NTljYTYwMTIwMWVhM2RjYjUpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfODJhMmJkYzNiOWRiNDcxMzlhNDkwMjlhMzk5ODUwMGUuYmluZFBvcHVwKHBvcHVwXzM0YTI4YmQzOGNlNjRiNjNiMzVkMDFkMGI4MzU4MzMwKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzJiMWE5NDg4OWFhNzQ1YzI5MTgyZWM1ZDhkNDA2ZTdmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuMjQwMywgLTAuODk5MTY3XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8xZWJkOWZkYjJmMWU0MGY1YTI4YTUwOTU3Yzg4NDg5NiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfODVkZjI1ZTRlM2NiNDhlNTk5OTAyY2FmYjRiNTMxZjAgPSAkKGA8ZGl2IGlkPSJodG1sXzg1ZGYyNWU0ZTNjYjQ4ZTU5OTkwMmNhZmI0YjUzMWYwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Sb2FkbWVuZGVyIChuaWdodGNsdWIpPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzFlYmQ5ZmRiMmYxZTQwZjVhMjhhNTA5NTdjODg0ODk2LnNldENvbnRlbnQoaHRtbF84NWRmMjVlNGUzY2I0OGU1OTk5MDJjYWZiNGI1MzFmMCk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8yYjFhOTQ4ODlhYTc0NWMyOTE4MmVjNWQ4ZDQwNmU3Zi5iaW5kUG9wdXAocG9wdXBfMWViZDlmZGIyZjFlNDBmNWEyOGE1MDk1N2M4ODQ4OTYpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfNmY1NjUxOTYwMTFlNDBiODg3ZTI3YTRjOTBmM2JjMmEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS44NzgsIC0wLjUzNl0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfZWIxYWQxNDc5MDMwNDk0YjhlYzg3Mjc1Y2I0OTBlYTcgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2NiODE0NDMyNDU1ODRiMDRhYzExNWI5ZTVhZWM5MTNiID0gJChgPGRpdiBpZD0iaHRtbF9jYjgxNDQzMjQ1NTg0YjA0YWMxMTViOWU1YWVjOTEzYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q2FsaWZvcm5pYSBCYWxscm9vbTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9lYjFhZDE0NzkwMzA0OTRiOGVjODcyNzVjYjQ5MGVhNy5zZXRDb250ZW50KGh0bWxfY2I4MTQ0MzI0NTU4NGIwNGFjMTE1YjllNWFlYzkxM2IpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfNmY1NjUxOTYwMTFlNDBiODg3ZTI3YTRjOTBmM2JjMmEuYmluZFBvcHVwKHBvcHVwX2ViMWFkMTQ3OTAzMDQ5NGI4ZWM4NzI3NWNiNDkwZWE3KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzYxOTc1MGI0NDY5NzRmYzk5MmZmNzBjZWVkMTNkNjAwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuMTM2LCAtMC40Njc0Nl0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfYTMzMzhhM2QxZjUwNGI0NDkwYWMzMWFiNjkzMTQ5ZDggPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2FhZDUzNjJlOTg2NjQzN2M5NTk5NDhlZWVmYmUzNGEzID0gJChgPGRpdiBpZD0iaHRtbF9hYWQ1MzYyZTk4NjY0MzdjOTU5OTQ4ZWVlZmJlMzRhMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Q29ybiBFeGNoYW5nZSwgQmVkZm9yZDwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9hMzMzOGEzZDFmNTA0YjQ0OTBhYzMxYWI2OTMxNDlkOC5zZXRDb250ZW50KGh0bWxfYWFkNTM2MmU5ODY2NDM3Yzk1OTk0OGVlZWZiZTM0YTMpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfNjE5NzUwYjQ0Njk3NGZjOTkyZmY3MGNlZWQxM2Q2MDAuYmluZFBvcHVwKHBvcHVwX2EzMzM4YTNkMWY1MDRiNDQ5MGFjMzFhYjY5MzE0OWQ4KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzQyMmZkMTMxNzliMjQ2NTI4OTc1ZDE5NDJjMDhjY2Y2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuNjI1MSwgLTEuMTMyODRdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzA2M2YzYTg4OWIzMDQ4NGZhZGJhNmZmN2NhMDE2Mjc3ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF80MTJjZjdlODM4YWY0OTExOTYyMjIwYmY4OWQ2MjNlOSA9ICQoYDxkaXYgaWQ9Imh0bWxfNDEyY2Y3ZTgzOGFmNDkxMTk2MjIyMGJmODlkNjIzZTkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkdyYW5ieSBIYWxsczwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8wNjNmM2E4ODliMzA0ODRmYWRiYTZmZjdjYTAxNjI3Ny5zZXRDb250ZW50KGh0bWxfNDEyY2Y3ZTgzOGFmNDkxMTk2MjIyMGJmODlkNjIzZTkpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfNDIyZmQxMzE3OWIyNDY1Mjg5NzVkMTk0MmMwOGNjZjYuYmluZFBvcHVwKHBvcHVwXzA2M2YzYTg4OWIzMDQ4NGZhZGJhNmZmN2NhMDE2Mjc3KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzFlNzY0YzM2ZjBkMzQxNTFiNjIwMWY0MDQzOGFlMmIzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuOTUzMSwgLTEuMTc2MzldLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzZlYjRkNmFmODU0NTRmMWI4ZTczYTllMTExM2RmYjZiID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF82MGNmODY1OWFhNWU0ZjJkODk5YWU3MWRmYzAxNDRjYyA9ICQoYDxkaXYgaWQ9Imh0bWxfNjBjZjg2NTlhYTVlNGYyZDg5OWFlNzFkZmMwMTQ0Y2MiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1hcmN1cyBHYXJ2ZXkgQ2VudHJlPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzZlYjRkNmFmODU0NTRmMWI4ZTczYTllMTExM2RmYjZiLnNldENvbnRlbnQoaHRtbF82MGNmODY1OWFhNWU0ZjJkODk5YWU3MWRmYzAxNDRjYyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8xZTc2NGMzNmYwZDM0MTUxYjYyMDFmNDA0MzhhZTJiMy5iaW5kUG9wdXAocG9wdXBfNmViNGQ2YWY4NTQ1NGYxYjhlNzNhOWUxMTEzZGZiNmIpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMjYyZmQ0MTc1ZTAyNGZmYWI0NTg5MmIzYjJkOTYxMGIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1Mi4wMzIsIC0wLjc3MV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfOGI4MmVmYmUwODJmNGVkNzgzMTQzZDAxMGQ0OGE4YzIgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzdjMjczOTExYWY5ZDRmMGM4OTUwY2E2NzRjOGQ1MTgyID0gJChgPGRpdiBpZD0iaHRtbF83YzI3MzkxMWFmOWQ0ZjBjODk1MGNhNjc0YzhkNTE4MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UGxhbmV0IEljZSBNaWx0b24gS2V5bmVzPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzhiODJlZmJlMDgyZjRlZDc4MzE0M2QwMTBkNDhhOGMyLnNldENvbnRlbnQoaHRtbF83YzI3MzkxMWFmOWQ0ZjBjODk1MGNhNjc0YzhkNTE4Mik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8yNjJmZDQxNzVlMDI0ZmZhYjQ1ODkyYjNiMmQ5NjEwYi5iaW5kUG9wdXAocG9wdXBfOGI4MmVmYmUwODJmNGVkNzgzMTQzZDAxMGQ0OGE4YzIpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMjUyYTRmMzFkNmNjNDliMWE5OWFjYTljY2FjNDBjYzkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS40NzM3LCAtMC4yNTExXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9lNGE0NGIwNzc5MGE0MDUxOGNiZjAyZTRhOTNlMGE1NiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfOTUzNDJhM2FlMzNjNDYzYmIyYmExN2IzNDA0NjJkZjYgPSAkKGA8ZGl2IGlkPSJodG1sXzk1MzQyYTNhZTMzYzQ2M2JiMmJhMTdiMzQwNDYyZGY2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5UaGUgQnVsbCdzIEhlYWQsIEJhcm5lczwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9lNGE0NGIwNzc5MGE0MDUxOGNiZjAyZTRhOTNlMGE1Ni5zZXRDb250ZW50KGh0bWxfOTUzNDJhM2FlMzNjNDYzYmIyYmExN2IzNDA0NjJkZjYpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfMjUyYTRmMzFkNmNjNDliMWE5OWFjYTljY2FjNDBjYzkuYmluZFBvcHVwKHBvcHVwX2U0YTQ0YjA3NzkwYTQwNTE4Y2JmMDJlNGE5M2UwYTU2KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2Y4NTcxZGMwOGIwNTQ3MzU5ODViYzczMTI1NzZhZTUwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuNjIyNywgMS4zMDM1XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9iNWIzMWFkY2I0NjE0NTU4ODY1MDcwMjcxNjExZjFlYSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfZjgwYjcxOTM4NjA1NDczMGIwNjhmODU4M2Q0Y2M4ODYgPSAkKGA8ZGl2IGlkPSJodG1sX2Y4MGI3MTkzODYwNTQ3MzBiMDY4Zjg1ODNkNGNjODg2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5UaGUgRmVycnkgQm9hdCBJbm48L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfYjViMzFhZGNiNDYxNDU1ODg2NTA3MDI3MTYxMWYxZWEuc2V0Q29udGVudChodG1sX2Y4MGI3MTkzODYwNTQ3MzBiMDY4Zjg1ODNkNGNjODg2KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2Y4NTcxZGMwOGIwNTQ3MzU5ODViYzczMTI1NzZhZTUwLmJpbmRQb3B1cChwb3B1cF9iNWIzMWFkY2I0NjE0NTU4ODY1MDcwMjcxNjExZjFlYSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl83M2I3ZmQ1ZTc1MWE0MzI0YTUyN2M5YjBjOTIzNWY3MSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjU0NDIsIC0wLjIwMV0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfNjJiNGFlOGE2OTE3NDg2MmFmOTMwYjcyZjkwYzBkMmQgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzUzMDgxODVhYzQ0NTQxN2U5ODZlYjJjMzdkZWQ0M2U3ID0gJChgPGRpdiBpZD0iaHRtbF81MzA4MTg1YWM0NDU0MTdlOTg2ZWIyYzM3ZGVkNDNlNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VGhlIEx1bWluYWlyZTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF82MmI0YWU4YTY5MTc0ODYyYWY5MzBiNzJmOTBjMGQyZC5zZXRDb250ZW50KGh0bWxfNTMwODE4NWFjNDQ1NDE3ZTk4NmViMmMzN2RlZDQzZTcpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfNzNiN2ZkNWU3NTFhNDMyNGE1MjdjOWIwYzkyMzVmNzEuYmluZFBvcHVwKHBvcHVwXzYyYjRhZThhNjkxNzQ4NjJhZjkzMGI3MmY5MGMwZDJkKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2JjMWE1M2IzMDQzYjQ5MjBiZjBhMDM3MjkzMjI5OTIwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTQuOTc1MiwgLTEuNTkxNzVdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2UwZWQzY2NjYjljZjRkZGI4ODJkZTZkN2QwZmU5NWNiID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8wZmFlNjJkNzkwZDM0ZjJhODQzYzE3YWMwZTg0NjUyZCA9ICQoYDxkaXYgaWQ9Imh0bWxfMGZhZTYyZDc5MGQzNGYyYTg0M2MxN2FjMGU4NDY1MmQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlRoZSBDbHVueTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9lMGVkM2NjY2I5Y2Y0ZGRiODgyZGU2ZDdkMGZlOTVjYi5zZXRDb250ZW50KGh0bWxfMGZhZTYyZDc5MGQzNGYyYTg0M2MxN2FjMGU4NDY1MmQpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfYmMxYTUzYjMwNDNiNDkyMGJmMGEwMzcyOTMyMjk5MjAuYmluZFBvcHVwKHBvcHVwX2UwZWQzY2NjYjljZjRkZGI4ODJkZTZkN2QwZmU5NWNiKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzkzNTMyMWNkZjBiMDRiZDg5MzU0YjVhYzgwZGU2MWFkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTMuNzk0LCAtMS41NDM2XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9kNjE0YTlmYTZjYTg0MDNkYjE2ODRjYjgzNTZmNjZiYiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfYTcwM2I4NWY5MWI5NGY0ODliZmQ1ZWQwZGVmNTUwNzQgPSAkKGA8ZGl2IGlkPSJodG1sX2E3MDNiODVmOTFiOTRmNDg5YmZkNWVkMGRlZjU1MDc0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5RdWVlbnMgSGFsbCwgTGVlZHM8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfZDYxNGE5ZmE2Y2E4NDAzZGIxNjg0Y2I4MzU2ZjY2YmIuc2V0Q29udGVudChodG1sX2E3MDNiODVmOTFiOTRmNDg5YmZkNWVkMGRlZjU1MDc0KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzkzNTMyMWNkZjBiMDRiZDg5MzU0YjVhYzgwZGU2MWFkLmJpbmRQb3B1cChwb3B1cF9kNjE0YTlmYTZjYTg0MDNkYjE2ODRjYjgzNTZmNjZiYikKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl8xMzMwNDUzYTczNjg0YTg4YjhkYjQxMjQ1NTliYTc1OCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjU2NywgMC4wMDYzXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9mMzgxNmU4MmZmMDM0ZDhlYjcyYTU4MTNlYzhkODhhYiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNTZlOWFhYjU0ZjQxNGEzZThkNjEzYTRlMmE0Y2FiMmUgPSAkKGA8ZGl2IGlkPSJodG1sXzU2ZTlhYWI1NGY0MTRhM2U4ZDYxM2E0ZTJhNGNhYjJlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij40OTEgR2FsbGVyeTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9mMzgxNmU4MmZmMDM0ZDhlYjcyYTU4MTNlYzhkODhhYi5zZXRDb250ZW50KGh0bWxfNTZlOWFhYjU0ZjQxNGEzZThkNjEzYTRlMmE0Y2FiMmUpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfMTMzMDQ1M2E3MzY4NGE4OGI4ZGI0MTI0NTU5YmE3NTguYmluZFBvcHVwKHBvcHVwX2YzODE2ZTgyZmYwMzRkOGViNzJhNTgxM2VjOGQ4OGFiKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzhhY2Y1YjhhZjg3ZjQzN2VhNjFhMGYyMDQ0NjQ2Y2I3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTEyOCwgLTAuMTI4NF0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfNmQ0Y2ZhZTRmZjE3NDkxZTlkNzg3MWM1NmY1ZDgzNjggPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2UzNjAyNTc5Y2FlNzQwZjZhNDI5NWE4YjdhMzE1NDI3ID0gJChgPGRpdiBpZD0iaHRtbF9lMzYwMjU3OWNhZTc0MGY2YTQyOTVhOGI3YTMxNTQyNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QnVuamllczwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF82ZDRjZmFlNGZmMTc0OTFlOWQ3ODcxYzU2ZjVkODM2OC5zZXRDb250ZW50KGh0bWxfZTM2MDI1NzljYWU3NDBmNmE0Mjk1YThiN2EzMTU0MjcpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfOGFjZjViOGFmODdmNDM3ZWE2MWEwZjIwNDQ2NDZjYjcuYmluZFBvcHVwKHBvcHVwXzZkNGNmYWU0ZmYxNzQ5MWU5ZDc4NzFjNTZmNWQ4MzY4KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzMwNTY0M2UyYjM1YjQ1YjQ4MWRhY2Q2ZTM2ZmRhNDVhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTAuOTUxOSwgLTIuMDgzMjldLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2NlODk0ZTNlNTk2OTQxODc4NDgyM2MxMzRkMTQ0MTVhID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9kMzJmYTdlNGQyZWE0NTkyYTMyZmM0OGQ1MzYyYzA0YiA9ICQoYDxkaXYgaWQ9Imh0bWxfZDMyZmE3ZTRkMmVhNDU5MmEzMmZjNDhkNTM2MmMwNGIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxhcm1lciBUcmVlIEdhcmRlbnM8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfY2U4OTRlM2U1OTY5NDE4Nzg0ODIzYzEzNGQxNDQxNWEuc2V0Q29udGVudChodG1sX2QzMmZhN2U0ZDJlYTQ1OTJhMzJmYzQ4ZDUzNjJjMDRiKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzMwNTY0M2UyYjM1YjQ1YjQ4MWRhY2Q2ZTM2ZmRhNDVhLmJpbmRQb3B1cChwb3B1cF9jZTg5NGUzZTU5Njk0MTg3ODQ4MjNjMTM0ZDE0NDE1YSkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl81MjkxMzZlZDAzNmU0OWQ5YjVkMDYyZGE2NTM2NDkzZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjM4NDUsIC0xLjQ2NjIyXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF82MWVlNDFhZDEwZTI0M2Q0ODk0Yjk3Y2E4MzQ5ZjYxNyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNTY3YjUwYjFjMzJmNDFiOGFlZDI0MTQ2ZDZmODg5ZTMgPSAkKGA8ZGl2IGlkPSJodG1sXzU2N2I1MGIxYzMyZjQxYjhhZWQyNDE0NmQ2Zjg4OWUzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5Cb2FyZHdhbGsgKG5pZ2h0Y2x1Yik8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfNjFlZTQxYWQxMGUyNDNkNDg5NGI5N2NhODM0OWY2MTcuc2V0Q29udGVudChodG1sXzU2N2I1MGIxYzMyZjQxYjhhZWQyNDE0NmQ2Zjg4OWUzKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzUyOTEzNmVkMDM2ZTQ5ZDliNWQwNjJkYTY1MzY0OTNlLmJpbmRQb3B1cChwb3B1cF82MWVlNDFhZDEwZTI0M2Q0ODk0Yjk3Y2E4MzQ5ZjYxNykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl9kN2EzYzg4ZTZjZTY0ZTE0YTMwYjA1M2MyNzU0YTFiMSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjU0MTYsIDAuMTEzMjU5XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9mY2FlZDFjNGVlNTg0ODYyOTJiZjZmNGY2ZDY0MzI3YiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfMTYwN2Q3MjUyMDk1NGMwODk2YzgyNzQyZWFjNmQ3MGEgPSAkKGA8ZGl2IGlkPSJodG1sXzE2MDdkNzI1MjA5NTRjMDg5NmM4Mjc0MmVhYzZkNzBhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EYWdlbmhhbSBSb3VuZGhvdXNlPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwX2ZjYWVkMWM0ZWU1ODQ4NjI5MmJmNmY0ZjZkNjQzMjdiLnNldENvbnRlbnQoaHRtbF8xNjA3ZDcyNTIwOTU0YzA4OTZjODI3NDJlYWM2ZDcwYSk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9kN2EzYzg4ZTZjZTY0ZTE0YTMwYjA1M2MyNzU0YTFiMS5iaW5kUG9wdXAocG9wdXBfZmNhZWQxYzRlZTU4NDg2MjkyYmY2ZjRmNmQ2NDMyN2IpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfOGUzNjk5ODQyM2EzNGY1NjkyNzQ2M2VkZDE1MTQzNzggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS41MDY2LCAtMC4yMzE2XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8zZTllNDQ0MTljODY0MDc0YWM3ZmQ1OGE5MTJjNGI1YiA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNDRjMzM1MmExZTRhNDlhZTgxMzE5NzRlMmQzNWZiMjYgPSAkKGA8ZGl2IGlkPSJodG1sXzQ0YzMzNTJhMWU0YTQ5YWU4MTMxOTc0ZTJkMzVmYjI2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TdHJhbmdlIEZydWl0IChjbHViKTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8zZTllNDQ0MTljODY0MDc0YWM3ZmQ1OGE5MTJjNGI1Yi5zZXRDb250ZW50KGh0bWxfNDRjMzM1MmExZTRhNDlhZTgxMzE5NzRlMmQzNWZiMjYpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfOGUzNjk5ODQyM2EzNGY1NjkyNzQ2M2VkZDE1MTQzNzguYmluZFBvcHVwKHBvcHVwXzNlOWU0NDQxOWM4NjQwNzRhYzdmZDU4YTkxMmM0YjViKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2U5NWMzNzgzMWY3ODRjOTdiOTQzOGM2YTI3ZjM5MjRiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuNTEzNSwgLTAuMTMxNTVdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzlmMDkwOWEzYjE0ZTRjNzU4OGI0OWMwMmJjNzk5NGQ5ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF80NjE4OWY2ZDY1NjQ0ODY0YTUwYzdmNjM4YzRjZTc4NCA9ICQoYDxkaXYgaWQ9Imh0bWxfNDYxODlmNmQ2NTY0NDg2NGE1MGM3ZjYzOGM0Y2U3ODQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJvbm5pZSBTY290dCdzIEphenogQ2x1YjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF85ZjA5MDlhM2IxNGU0Yzc1ODhiNDljMDJiYzc5OTRkOS5zZXRDb250ZW50KGh0bWxfNDYxODlmNmQ2NTY0NDg2NGE1MGM3ZjYzOGM0Y2U3ODQpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfZTk1YzM3ODMxZjc4NGM5N2I5NDM4YzZhMjdmMzkyNGIuYmluZFBvcHVwKHBvcHVwXzlmMDkwOWEzYjE0ZTRjNzU4OGI0OWMwMmJjNzk5NGQ5KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzc3MDg0ZDBkYjhlODRjYzFiYzYxYTMzZTkxYTEyZWMwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTMuNTgwNiwgLTIuNTM1NTZdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzMwMzBkMTYzZTU1MjRhMGU5YzE5MWQ1NGI4NDlmZmI2ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF80YzM5NWI0YTViMGI0OGVmODhiNjVhZTA4NmNmYjY4ZiA9ICQoYDxkaXYgaWQ9Imh0bWxfNGMzOTViNGE1YjBiNDhlZjg4YjY1YWUwODZjZmI2OGYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1hY3JvbiBTdGFkaXVtPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzMwMzBkMTYzZTU1MjRhMGU5YzE5MWQ1NGI4NDlmZmI2LnNldENvbnRlbnQoaHRtbF80YzM5NWI0YTViMGI0OGVmODhiNjVhZTA4NmNmYjY4Zik7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl83NzA4NGQwZGI4ZTg0Y2MxYmM2MWEzM2U5MWExMmVjMC5iaW5kUG9wdXAocG9wdXBfMzAzMGQxNjNlNTUyNGEwZTljMTkxZDU0Yjg0OWZmYjYpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMWIxZTc3NmJkNzMxNDBhMjk4NWE2ZjgzY2NlODJiNTUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1NC4xMDgzLCAtMy4yMjY0XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9hMGY4ZGMxZmNiODI0Mjg1YmI0NDMwNTdjNzhmZGI5NSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNGU5OGZlYjJkYjczNDVkMDk5MWY3MGI0YWI2NGEwZWUgPSAkKGA8ZGl2IGlkPSJodG1sXzRlOThmZWIyZGI3MzQ1ZDA5OTFmNzBiNGFiNjRhMGVlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5QcmluY2VzcyBTZWxhbmRpYTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9hMGY4ZGMxZmNiODI0Mjg1YmI0NDMwNTdjNzhmZGI5NS5zZXRDb250ZW50KGh0bWxfNGU5OGZlYjJkYjczNDVkMDk5MWY3MGI0YWI2NGEwZWUpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfMWIxZTc3NmJkNzMxNDBhMjk4NWE2ZjgzY2NlODJiNTUuYmluZFBvcHVwKHBvcHVwX2EwZjhkYzFmY2I4MjQyODViYjQ0MzA1N2M3OGZkYjk1KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzQ3MzFmMzM0ZWQyZDQwNzViODEwZjNiN2Q4NDMzNjE0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuMzgyMywgLTAuMzQxNF0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfY2ZiZDVmNjA5ZjYyNGVmOGFjNTRhNTk2OTgwMjJmMTAgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2RhOWNlYzUwZGUxZDQ2ODBiNjJhMzI4ODY1NDg5YzJiID0gJChgPGRpdiBpZD0iaHRtbF9kYTljZWM1MGRlMWQ0NjgwYjYyYTMyODg2NTQ4OWMyYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VGhlIFJhbSBGb2xrIENsdWI8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfY2ZiZDVmNjA5ZjYyNGVmOGFjNTRhNTk2OTgwMjJmMTAuc2V0Q29udGVudChodG1sX2RhOWNlYzUwZGUxZDQ2ODBiNjJhMzI4ODY1NDg5YzJiKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzQ3MzFmMzM0ZWQyZDQwNzViODEwZjNiN2Q4NDMzNjE0LmJpbmRQb3B1cChwb3B1cF9jZmJkNWY2MDlmNjI0ZWY4YWM1NGE1OTY5ODAyMmYxMCkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl8xZTZlNGNiOGI5Nzg0MGQxYTZlYjg1NmFkYmZiNjMyNyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUwLjgxNjcsIC0wLjQwODc1OF0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF82NWYyMGZlNTI4MmE0YmEyYjYxYmFkZDQ4OGQ2NTYyOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMzhlOGNjODA1YTMzNGZiOWE0NWE2ZjQ1NGNhZmYyYWMgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzkzMjQwMGNmZDgzYjRlZWZiNTBhYjhkZTBkMzZiMDUyID0gJChgPGRpdiBpZD0iaHRtbF85MzI0MDBjZmQ4M2I0ZWVmYjUwYWI4ZGUwZDM2YjA1MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V29ydGhpbmcgTGVpc3VyZSBDZW50cmU8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfMzhlOGNjODA1YTMzNGZiOWE0NWE2ZjQ1NGNhZmYyYWMuc2V0Q29udGVudChodG1sXzkzMjQwMGNmZDgzYjRlZWZiNTBhYjhkZTBkMzZiMDUyKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzFlNmU0Y2I4Yjk3ODQwZDFhNmViODU2YWRiZmI2MzI3LmJpbmRQb3B1cChwb3B1cF8zOGU4Y2M4MDVhMzM0ZmI5YTQ1YTZmNDU0Y2FmZjJhYykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl9iZTFlMDdkYTNjN2I0M2E4OWY4NmMxYjdjMWJhYzQ3OSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzU0LjY0MzgsIC0zLjU0NDNdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2Y5OGEyMmUyZTQ0MTRiY2VhZmU3NWRkYTM3YWFjZWQ0ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9hY2M3MDNlOGQ3Yzk0OTkyOTNhYzExMGVjZDYxZWJhZSA9ICQoYDxkaXYgaWQ9Imh0bWxfYWNjNzAzZThkN2M5NDk5MjkzYWMxMTBlY2Q2MWViYWUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldvcmtpbmd0b24gT3BlcmEgSG91c2U8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfZjk4YTIyZTJlNDQxNGJjZWFmZTc1ZGRhMzdhYWNlZDQuc2V0Q29udGVudChodG1sX2FjYzcwM2U4ZDdjOTQ5OTI5M2FjMTEwZWNkNjFlYmFlKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyX2JlMWUwN2RhM2M3YjQzYTg5Zjg2YzFiN2MxYmFjNDc5LmJpbmRQb3B1cChwb3B1cF9mOThhMjJlMmU0NDE0YmNlYWZlNzVkZGEzN2FhY2VkNCkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl9kNTQ5YjRhOTRiNDE0NTIyYWEzZGI5Y2M3OWEyMWNmNCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzUzLjc5MjUsIC0xLjc1NjVdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjVmMjBmZTUyODJhNGJhMmI2MWJhZGQ0ODhkNjU2MjkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzMwNGY5NjZiZTU2ZDQ2YzQ4NDJhMmM0NzdhZDVjZDAwID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8xOTU1MzJlM2M5MGQ0OGRkYTY0NGM5NGZmODRhNGRmNyA9ICQoYDxkaXYgaWQ9Imh0bWxfMTk1NTMyZTNjOTBkNDhkZGE2NDRjOTRmZjg0YTRkZjciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJyYWRmb3JkIE9kZW9uPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzMwNGY5NjZiZTU2ZDQ2YzQ4NDJhMmM0NzdhZDVjZDAwLnNldENvbnRlbnQoaHRtbF8xOTU1MzJlM2M5MGQ0OGRkYTY0NGM5NGZmODRhNGRmNyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl9kNTQ5YjRhOTRiNDE0NTIyYWEzZGI5Y2M3OWEyMWNmNC5iaW5kUG9wdXAocG9wdXBfMzA0Zjk2NmJlNTZkNDZjNDg0MmEyYzQ3N2FkNWNkMDApCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzQzZmFjMzYzMzRmNGNhYzg1MGE3ZjEzNDdmZmQ1ZTcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS4yMzg2LCAtMC41NjYzXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzY1ZjIwZmU1MjgyYTRiYTJiNjFiYWRkNDg4ZDY1NjI5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF83ZTUxN2U1NWVkM2Q0MDFjYmI0NTI5NTE4MDE0YWMxZSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfZDdjMzJkMDdhNzczNDlmNDg3MTg5OGU3OTUyOGUyYmUgPSAkKGA8ZGl2IGlkPSJodG1sX2Q3YzMyZDA3YTc3MzQ5ZjQ4NzE4OThlNzk1MjhlMmJlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5HdWlsZGZvcmQgQ2l2aWMgSGFsbDwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF83ZTUxN2U1NWVkM2Q0MDFjYmI0NTI5NTE4MDE0YWMxZS5zZXRDb250ZW50KGh0bWxfZDdjMzJkMDdhNzczNDlmNDg3MTg5OGU3OTUyOGUyYmUpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfMzQzZmFjMzYzMzRmNGNhYzg1MGE3ZjEzNDdmZmQ1ZTcuYmluZFBvcHVwKHBvcHVwXzdlNTE3ZTU1ZWQzZDQwMWNiYjQ1Mjk1MTgwMTRhYzFlKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKPC9zY3JpcHQ+\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x120d152b0>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m = folium.Map(location=[55, 0], zoom_start=5)\n",
"\n",
"\n",
"for i in range(0,len(df)):\n",
" folium.Marker([df.iloc[i]['lat'], df.iloc[i]['lon']],\n",
" popup=df.iloc[i]['venue_name']).add_to(m)\n",
" \n",
"m"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also save the map to an HTML file that we can share around, pop onto websites, etc.."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"m.save('venues.html')"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
<!DOCTYPE html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<script>
L_NO_TOUCH = false;
L_DISABLE_3D = false;
</script>
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.5.1/dist/leaflet.js"></script>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.5.1/dist/leaflet.css"/>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
<link rel="stylesheet" href="https://rawcdn.githack.com/python-visualization/folium/master/folium/templates/leaflet.awesome.rotate.css"/>
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
<meta name="viewport" content="width=device-width,
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<style>
#map_65f20fe5282a4ba2b61badd488d65629 {
position: relative;
width: 100.0%;
height: 100.0%;
left: 0.0%;
top: 0.0%;
}
</style>
</head>
<body>
<div class="folium-map" id="map_65f20fe5282a4ba2b61badd488d65629" ></div>
</body>
<script>
var map_65f20fe5282a4ba2b61badd488d65629 = L.map(
"map_65f20fe5282a4ba2b61badd488d65629",
{
center: [55.0, 0.0],
crs: L.CRS.EPSG3857,
zoom: 5,
zoomControl: true,
preferCanvas: false,
}
);
var tile_layer_d91dca5859c34eb48e78665aeec8d19c = L.tileLayer(
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var marker_343f38a4c0c741179f8e16aa8f4d08e8 = L.marker(
[51.4948, -0.0989],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_1fa4e76693d74217ada90b442ae3f43c = L.popup({"maxWidth": "100%"});
var html_efda7d0d1cb745e7af52f5f38f77d513 = $(`<div id="html_efda7d0d1cb745e7af52f5f38f77d513" style="width: 100.0%; height: 100.0%;">The Coronet</div>`)[0];
popup_1fa4e76693d74217ada90b442ae3f43c.setContent(html_efda7d0d1cb745e7af52f5f38f77d513);
marker_343f38a4c0c741179f8e16aa8f4d08e8.bindPopup(popup_1fa4e76693d74217ada90b442ae3f43c)
;
var marker_e5890db48c994fc59f3e23494b076707 = L.marker(
[51.5095, -0.135],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_ac5163ed6577475b8daa93eee25110b6 = L.popup({"maxWidth": "100%"});
var html_3296a848896e426daf8a5349a4cdc725 = $(`<div id="html_3296a848896e426daf8a5349a4cdc725" style="width: 100.0%; height: 100.0%;">Pigalle Club</div>`)[0];
popup_ac5163ed6577475b8daa93eee25110b6.setContent(html_3296a848896e426daf8a5349a4cdc725);
marker_e5890db48c994fc59f3e23494b076707.bindPopup(popup_ac5163ed6577475b8daa93eee25110b6)
;
var marker_bf067f57cb6b4ef3aa2e5524c49e36eb = L.marker(
[51.5197, -0.0747222],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_7c14b5b274c64b5c977bf281cd0f6131 = L.popup({"maxWidth": "100%"});
var html_57d0a7a5b3dd4728bed9aeb97c1a2339 = $(`<div id="html_57d0a7a5b3dd4728bed9aeb97c1a2339" style="width: 100.0%; height: 100.0%;">The Spitz</div>`)[0];
popup_7c14b5b274c64b5c977bf281cd0f6131.setContent(html_57d0a7a5b3dd4728bed9aeb97c1a2339);
marker_bf067f57cb6b4ef3aa2e5524c49e36eb.bindPopup(popup_7c14b5b274c64b5c977bf281cd0f6131)
;
var marker_cf2f4d4e7205426ab12a615d3c1c5d01 = L.marker(
[53.8031, -1.54222],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_ec0fd08d71974678bfababb1991ce210 = L.popup({"maxWidth": "100%"});
var html_3b346b9df6174735bc429d9e1e43da4b = $(`<div id="html_3b346b9df6174735bc429d9e1e43da4b" style="width: 100.0%; height: 100.0%;">First Direct Arena</div>`)[0];
popup_ec0fd08d71974678bfababb1991ce210.setContent(html_3b346b9df6174735bc429d9e1e43da4b);
marker_cf2f4d4e7205426ab12a615d3c1c5d01.bindPopup(popup_ec0fd08d71974678bfababb1991ce210)
;
var marker_159a5a561e51439396bf99d79cdc5984 = L.marker(
[53.8031, -1.54222],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_cbad073be6da4627960e0b7fb025adf8 = L.popup({"maxWidth": "100%"});
var html_40b6bfbc8db74095b200739b6d8619d4 = $(`<div id="html_40b6bfbc8db74095b200739b6d8619d4" style="width: 100.0%; height: 100.0%;">First Direct Arena</div>`)[0];
popup_cbad073be6da4627960e0b7fb025adf8.setContent(html_40b6bfbc8db74095b200739b6d8619d4);
marker_159a5a561e51439396bf99d79cdc5984.bindPopup(popup_cbad073be6da4627960e0b7fb025adf8)
;
var marker_9087797f58224f26b666230be0218415 = L.marker(
[53.543, -0.006],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_bb6bacc56cd34323a04661083cd4266b = L.popup({"maxWidth": "100%"});
var html_3c0d712ed9bf40f986ea5d744c9e8061 = $(`<div id="html_3c0d712ed9bf40f986ea5d744c9e8061" style="width: 100.0%; height: 100.0%;">Meridian Park (Cleethorpes)</div>`)[0];
popup_bb6bacc56cd34323a04661083cd4266b.setContent(html_3c0d712ed9bf40f986ea5d744c9e8061);
marker_9087797f58224f26b666230be0218415.bindPopup(popup_bb6bacc56cd34323a04661083cd4266b)
;
var marker_6315f72054d647a8ac7d7f044372b20b = L.marker(
[53.477, -2.231],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_df9a232c698a443cb63db252a921244e = L.popup({"maxWidth": "100%"});
var html_ce67382908214d778c59e6f574a23b06 = $(`<div id="html_ce67382908214d778c59e6f574a23b06" style="width: 100.0%; height: 100.0%;">The Warehouse Project</div>`)[0];
popup_df9a232c698a443cb63db252a921244e.setContent(html_ce67382908214d778c59e6f574a23b06);
marker_6315f72054d647a8ac7d7f044372b20b.bindPopup(popup_df9a232c698a443cb63db252a921244e)
;
var marker_2f0964bb52b241f5b71b8272c8f06d80 = L.marker(
[52.4346, -1.89355],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_8d8116a059d24cf98db102b82a861eb7 = L.popup({"maxWidth": "100%"});
var html_6b096131b3f44c1e917ef4c0d0130351 = $(`<div id="html_6b096131b3f44c1e917ef4c0d0130351" style="width: 100.0%; height: 100.0%;">Ritz Ballroom, Kings Heath</div>`)[0];
popup_8d8116a059d24cf98db102b82a861eb7.setContent(html_6b096131b3f44c1e917ef4c0d0130351);
marker_2f0964bb52b241f5b71b8272c8f06d80.bindPopup(popup_8d8116a059d24cf98db102b82a861eb7)
;
var marker_4c2b2f6db8f44dc198b20c1a0e10c650 = L.marker(
[51.5121, -0.138611],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_9942c3f906a14af0a55a350a2339e540 = L.popup({"maxWidth": "100%"});
var html_88669f247fac4465a72b16df00e7a8ef = $(`<div id="html_88669f247fac4465a72b16df00e7a8ef" style="width: 100.0%; height: 100.0%;">The Cat's Whisker</div>`)[0];
popup_9942c3f906a14af0a55a350a2339e540.setContent(html_88669f247fac4465a72b16df00e7a8ef);
marker_4c2b2f6db8f44dc198b20c1a0e10c650.bindPopup(popup_9942c3f906a14af0a55a350a2339e540)
;
var marker_439e6edd401a4f1480d2fdb76947dffc = L.marker(
[51.5512, -0.110462],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_85a49f6254c64f15bb924ea6f43338f5 = L.popup({"maxWidth": "100%"});
var html_a862c461e7c044068365e2ff5ecd315d = $(`<div id="html_a862c461e7c044068365e2ff5ecd315d" style="width: 100.0%; height: 100.0%;">12 Bar Club</div>`)[0];
popup_85a49f6254c64f15bb924ea6f43338f5.setContent(html_a862c461e7c044068365e2ff5ecd315d);
marker_439e6edd401a4f1480d2fdb76947dffc.bindPopup(popup_85a49f6254c64f15bb924ea6f43338f5)
;
var marker_13a7839fc12647c98db7f6c84664f861 = L.marker(
[51.5159, -0.130825],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_549cc0a9529d4cc9ad8468c06a9520de = L.popup({"maxWidth": "100%"});
var html_4a77a9b1e10740f7ae2e2bc920423918 = $(`<div id="html_4a77a9b1e10740f7ae2e2bc920423918" style="width: 100.0%; height: 100.0%;">Astoria 2</div>`)[0];
popup_549cc0a9529d4cc9ad8468c06a9520de.setContent(html_4a77a9b1e10740f7ae2e2bc920423918);
marker_13a7839fc12647c98db7f6c84664f861.bindPopup(popup_549cc0a9529d4cc9ad8468c06a9520de)
;
var marker_ca1d371293c04fdf8c9c7bc2e1b9a820 = L.marker(
[53.5905, -0.659],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_3815f26ed3a54815b841bca63647b050 = L.popup({"maxWidth": "100%"});
var html_3135167caaf846a38fd0721b9fe0e953 = $(`<div id="html_3135167caaf846a38fd0721b9fe0e953" style="width: 100.0%; height: 100.0%;">Baths Hall</div>`)[0];
popup_3815f26ed3a54815b841bca63647b050.setContent(html_3135167caaf846a38fd0721b9fe0e953);
marker_ca1d371293c04fdf8c9c7bc2e1b9a820.bindPopup(popup_3815f26ed3a54815b841bca63647b050)
;
var marker_5c2a0f0791ac48e99e2cd9463219bd3c = L.marker(
[50.8211, -0.146111],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_8cd57e242245472788de70d65df53809 = L.popup({"maxWidth": "100%"});
var html_5764c7f1e98d406f8a506a56025aa049 = $(`<div id="html_5764c7f1e98d406f8a506a56025aa049" style="width: 100.0%; height: 100.0%;">Brighton Centre</div>`)[0];
popup_8cd57e242245472788de70d65df53809.setContent(html_5764c7f1e98d406f8a506a56025aa049);
marker_5c2a0f0791ac48e99e2cd9463219bd3c.bindPopup(popup_8cd57e242245472788de70d65df53809)
;
var marker_903fc2e5cbe2453a9d77dc5a9aeb850c = L.marker(
[51.5413, -0.1458],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_d353944b15a24230995bd01b5cae1fc2 = L.popup({"maxWidth": "100%"});
var html_9643b7c4f6774a678a48d91adebf4c49 = $(`<div id="html_9643b7c4f6774a678a48d91adebf4c49" style="width: 100.0%; height: 100.0%;">Dingwalls</div>`)[0];
popup_d353944b15a24230995bd01b5cae1fc2.setContent(html_9643b7c4f6774a678a48d91adebf4c49);
marker_903fc2e5cbe2453a9d77dc5a9aeb850c.bindPopup(popup_d353944b15a24230995bd01b5cae1fc2)
;
var marker_c29bd44e734941d78910c989dc3db90c = L.marker(
[50.905, -1.39611],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_ae23b4e9b811414190403dc8e3768893 = L.popup({"maxWidth": "100%"});
var html_7c2561d30f414d029e28f70bf22ae2de = $(`<div id="html_7c2561d30f414d029e28f70bf22ae2de" style="width: 100.0%; height: 100.0%;">Joiners Arms</div>`)[0];
popup_ae23b4e9b811414190403dc8e3768893.setContent(html_7c2561d30f414d029e28f70bf22ae2de);
marker_c29bd44e734941d78910c989dc3db90c.bindPopup(popup_ae23b4e9b811414190403dc8e3768893)
;
var marker_8c1e6c3595d3466ebda0e1db459e65b3 = L.marker(
[52.9556, -1.15139],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_8d5534a66b7d4a6691347ff3fd8408c0 = L.popup({"maxWidth": "100%"});
var html_8e12ecef66604da88f04074a608639d2 = $(`<div id="html_8e12ecef66604da88f04074a608639d2" style="width: 100.0%; height: 100.0%;">Nottingham Royal Concert Hall</div>`)[0];
popup_8d5534a66b7d4a6691347ff3fd8408c0.setContent(html_8e12ecef66604da88f04074a608639d2);
marker_8c1e6c3595d3466ebda0e1db459e65b3.bindPopup(popup_8d5534a66b7d4a6691347ff3fd8408c0)
;
var marker_ca6e1c7dfe1f4046994fb85c5c875cd4 = L.marker(
[51.4542, -2.6004],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_f4c5e52944fb4a3c91cbb9b9dc709867 = L.popup({"maxWidth": "100%"});
var html_87a38de9aa354a7dae76e47d0376455e = $(`<div id="html_87a38de9aa354a7dae76e47d0376455e" style="width: 100.0%; height: 100.0%;">O2 Academy Bristol</div>`)[0];
popup_f4c5e52944fb4a3c91cbb9b9dc709867.setContent(html_87a38de9aa354a7dae76e47d0376455e);
marker_ca6e1c7dfe1f4046994fb85c5c875cd4.bindPopup(popup_f4c5e52944fb4a3c91cbb9b9dc709867)
;
var marker_41c36695b643485b87ddccefd731e805 = L.marker(
[52.4074, -1.51868],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_ae2e69ded4364cbba8318c6440b962ea = L.popup({"maxWidth": "100%"});
var html_48c4ffaaea10430d9be9a3efd34c41ad = $(`<div id="html_48c4ffaaea10430d9be9a3efd34c41ad" style="width: 100.0%; height: 100.0%;">SkyDome Arena</div>`)[0];
popup_ae2e69ded4364cbba8318c6440b962ea.setContent(html_48c4ffaaea10430d9be9a3efd34c41ad);
marker_41c36695b643485b87ddccefd731e805.bindPopup(popup_ae2e69ded4364cbba8318c6440b962ea)
;
var marker_66353a02f481447bbbb08beff4daafa9 = L.marker(
[51.5389, -0.143333],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_f4edf6fbd89e453ea3ed00803affbfc0 = L.popup({"maxWidth": "100%"});
var html_fa3fe0fefa0f412d945ce894830c11e0 = $(`<div id="html_fa3fe0fefa0f412d945ce894830c11e0" style="width: 100.0%; height: 100.0%;">The Jazz Café</div>`)[0];
popup_f4edf6fbd89e453ea3ed00803affbfc0.setContent(html_fa3fe0fefa0f412d945ce894830c11e0);
marker_66353a02f481447bbbb08beff4daafa9.bindPopup(popup_f4edf6fbd89e453ea3ed00803affbfc0)
;
var marker_dfe52e09a528454caf26b9923d000937 = L.marker(
[51.445, 0.205556],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_85300413205f4a55971d0aa131e6236a = L.popup({"maxWidth": "100%"});
var html_a7a3d71a3949499da79ca29eb9755941 = $(`<div id="html_a7a3d71a3949499da79ca29eb9755941" style="width: 100.0%; height: 100.0%;">The Mick Jagger Centre</div>`)[0];
popup_85300413205f4a55971d0aa131e6236a.setContent(html_a7a3d71a3949499da79ca29eb9755941);
marker_dfe52e09a528454caf26b9923d000937.bindPopup(popup_85300413205f4a55971d0aa131e6236a)
;
var marker_83138d02faf14c6c83dabe9649e9948c = L.marker(
[53.025, -2.17833],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_298ac0071efa429a94b8d28cc57914ef = L.popup({"maxWidth": "100%"});
var html_f62fc48e8c5d4f15a215f87c7f2bcf87 = $(`<div id="html_f62fc48e8c5d4f15a215f87c7f2bcf87" style="width: 100.0%; height: 100.0%;">The Sugarmill</div>`)[0];
popup_298ac0071efa429a94b8d28cc57914ef.setContent(html_f62fc48e8c5d4f15a215f87c7f2bcf87);
marker_83138d02faf14c6c83dabe9649e9948c.bindPopup(popup_298ac0071efa429a94b8d28cc57914ef)
;
var marker_2ec30ec0bf674ac69266eea94a16a237 = L.marker(
[51.4515, -2.59802],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_8b109a956a1f45158abe7f6e5d7394b4 = L.popup({"maxWidth": "100%"});
var html_f2831311de3240bb871890aa38665ff7 = $(`<div id="html_f2831311de3240bb871890aa38665ff7" style="width: 100.0%; height: 100.0%;">Watershed (Bristol)</div>`)[0];
popup_8b109a956a1f45158abe7f6e5d7394b4.setContent(html_f2831311de3240bb871890aa38665ff7);
marker_2ec30ec0bf674ac69266eea94a16a237.bindPopup(popup_8b109a956a1f45158abe7f6e5d7394b4)
;
var marker_3b6a10581d3d42c59146ed602e60dad8 = L.marker(
[50.8242, -0.1451],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_3dccb9f03895441fa9bb927a6f8dd7ce = L.popup({"maxWidth": "100%"});
var html_95b9e65d99d448d79b9f59cae328a881 = $(`<div id="html_95b9e65d99d448d79b9f59cae328a881" style="width: 100.0%; height: 100.0%;">11 Dyke Road, Brighton</div>`)[0];
popup_3dccb9f03895441fa9bb927a6f8dd7ce.setContent(html_95b9e65d99d448d79b9f59cae328a881);
marker_3b6a10581d3d42c59146ed602e60dad8.bindPopup(popup_3dccb9f03895441fa9bb927a6f8dd7ce)
;
var marker_6ab816c638904b25b6ab5acb2070f4e3 = L.marker(
[50.7167, -1.87806],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_2c16414d47224fe7a49119f34a6d76ea = L.popup({"maxWidth": "100%"});
var html_13d171ecf45542598c0a756a66d839e1 = $(`<div id="html_13d171ecf45542598c0a756a66d839e1" style="width: 100.0%; height: 100.0%;">Bournemouth International Centre</div>`)[0];
popup_2c16414d47224fe7a49119f34a6d76ea.setContent(html_13d171ecf45542598c0a756a66d839e1);
marker_6ab816c638904b25b6ab5acb2070f4e3.bindPopup(popup_2c16414d47224fe7a49119f34a6d76ea)
;
var marker_1c908e5155494a1c93ddc55f478ed44c = L.marker(
[51.5159, -0.1201],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_58bea73faeda4c7896e5e40413365709 = L.popup({"maxWidth": "100%"});
var html_e65842fa850a4a748a5d07b4033be4da = $(`<div id="html_e65842fa850a4a748a5d07b4033be4da" style="width: 100.0%; height: 100.0%;">Kingsway Hall</div>`)[0];
popup_58bea73faeda4c7896e5e40413365709.setContent(html_e65842fa850a4a748a5d07b4033be4da);
marker_1c908e5155494a1c93ddc55f478ed44c.bindPopup(popup_58bea73faeda4c7896e5e40413365709)
;
var marker_466cdb0200ee4c11b6d5b86fd0931df4 = L.marker(
[51.5621, -0.108023],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_2a8e72237c0e4304a2589efcc8fbb973 = L.popup({"maxWidth": "100%"});
var html_870a5d21ea1a4a5c873e1b0ea10b4c56 = $(`<div id="html_870a5d21ea1a4a5c873e1b0ea10b4c56" style="width: 100.0%; height: 100.0%;">Rainbow Theatre</div>`)[0];
popup_2a8e72237c0e4304a2589efcc8fbb973.setContent(html_870a5d21ea1a4a5c873e1b0ea10b4c56);
marker_466cdb0200ee4c11b6d5b86fd0931df4.bindPopup(popup_2a8e72237c0e4304a2589efcc8fbb973)
;
var marker_d18f26c0e98843b2baa5227d27d6a603 = L.marker(
[50.3542, -4.641],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_5ed70cfd06b946fba5e73a6672e4f6e5 = L.popup({"maxWidth": "100%"});
var html_b709f1460deb4084a9c176b344df9d63 = $(`<div id="html_b709f1460deb4084a9c176b344df9d63" style="width: 100.0%; height: 100.0%;">Sawmills Studios</div>`)[0];
popup_5ed70cfd06b946fba5e73a6672e4f6e5.setContent(html_b709f1460deb4084a9c176b344df9d63);
marker_d18f26c0e98843b2baa5227d27d6a603.bindPopup(popup_5ed70cfd06b946fba5e73a6672e4f6e5)
;
var marker_6e0d9f08b2f140969fa9cb5493a229b1 = L.marker(
[53.7622, -0.355278],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_b4ea312f6f954870b19ee183acf93fd8 = L.popup({"maxWidth": "100%"});
var html_5a63386b7e1542a28402fea1bca95dba = $(`<div id="html_5a63386b7e1542a28402fea1bca95dba" style="width: 100.0%; height: 100.0%;">The New Adelphi Club</div>`)[0];
popup_b4ea312f6f954870b19ee183acf93fd8.setContent(html_5a63386b7e1542a28402fea1bca95dba);
marker_6e0d9f08b2f140969fa9cb5493a229b1.bindPopup(popup_b4ea312f6f954870b19ee183acf93fd8)
;
var marker_6f0c50a7ed5749869d5bd4a164c4c9d9 = L.marker(
[53.2586, -1.9157],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_89505c3206da4b58ad7d95a851cd4459 = L.popup({"maxWidth": "100%"});
var html_676330628e74434b95b9b7948ba228e7 = $(`<div id="html_676330628e74434b95b9b7948ba228e7" style="width: 100.0%; height: 100.0%;">Buxton Opera House</div>`)[0];
popup_89505c3206da4b58ad7d95a851cd4459.setContent(html_676330628e74434b95b9b7948ba228e7);
marker_6f0c50a7ed5749869d5bd4a164c4c9d9.bindPopup(popup_89505c3206da4b58ad7d95a851cd4459)
;
var marker_93e4f2bd1e8c48878db360b981137f2c = L.marker(
[51.5159, -0.1307],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_c232bcba9f30468a940bcdf8849a265a = L.popup({"maxWidth": "100%"});
var html_69ddc0ad0a6345e7a74b5c3f4c36957f = $(`<div id="html_69ddc0ad0a6345e7a74b5c3f4c36957f" style="width: 100.0%; height: 100.0%;">G-A-Y</div>`)[0];
popup_c232bcba9f30468a940bcdf8849a265a.setContent(html_69ddc0ad0a6345e7a74b5c3f4c36957f);
marker_93e4f2bd1e8c48878db360b981137f2c.bindPopup(popup_c232bcba9f30468a940bcdf8849a265a)
;
var marker_dd4771290db04b66bddcd48cffd6b965 = L.marker(
[51.2484, -0.56288],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_78d8804b004b4eb9b57181d2da81f375 = L.popup({"maxWidth": "100%"});
var html_82dcd77013634f6d9d0fb02be7b1c214 = $(`<div id="html_82dcd77013634f6d9d0fb02be7b1c214" style="width: 100.0%; height: 100.0%;">Guildford Spectrum</div>`)[0];
popup_78d8804b004b4eb9b57181d2da81f375.setContent(html_82dcd77013634f6d9d0fb02be7b1c214);
marker_dd4771290db04b66bddcd48cffd6b965.bindPopup(popup_78d8804b004b4eb9b57181d2da81f375)
;
var marker_ea2e0a554a754790b46cdf97dd11fe6d = L.marker(
[51.7552, -1.2532],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_4f232e1d7a9b4bdb9d0442100c115cc2 = L.popup({"maxWidth": "100%"});
var html_7b635dd33b184e938144d64461da755d = $(`<div id="html_7b635dd33b184e938144d64461da755d" style="width: 100.0%; height: 100.0%;">Holywell Music Room</div>`)[0];
popup_4f232e1d7a9b4bdb9d0442100c115cc2.setContent(html_7b635dd33b184e938144d64461da755d);
marker_ea2e0a554a754790b46cdf97dd11fe6d.bindPopup(popup_4f232e1d7a9b4bdb9d0442100c115cc2)
;
var marker_1a81d0961a5a4d04a2fec37921613b3d = L.marker(
[51.4967, -0.01484],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_f277e8a5077d458998391da5f81f8ab2 = L.popup({"maxWidth": "100%"});
var html_dbf2c7beed454b178df11f95e515815e = $(`<div id="html_dbf2c7beed454b178df11f95e515815e" style="width: 100.0%; height: 100.0%;">London Arena</div>`)[0];
popup_f277e8a5077d458998391da5f81f8ab2.setContent(html_dbf2c7beed454b178df11f95e515815e);
marker_1a81d0961a5a4d04a2fec37921613b3d.bindPopup(popup_f277e8a5077d458998391da5f81f8ab2)
;
var marker_5334b569913a491a9176a3ae8d96bfb7 = L.marker(
[51.7471, -1.2352],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_7aacb6d8103e4f8eb7163e404377fec9 = L.popup({"maxWidth": "100%"});
var html_2e5b0a2967d44369a38a4318de00ed8d = $(`<div id="html_2e5b0a2967d44369a38a4318de00ed8d" style="width: 100.0%; height: 100.0%;">O2 Academy Oxford</div>`)[0];
popup_7aacb6d8103e4f8eb7163e404377fec9.setContent(html_2e5b0a2967d44369a38a4318de00ed8d);
marker_5334b569913a491a9176a3ae8d96bfb7.bindPopup(popup_7aacb6d8103e4f8eb7163e404377fec9)
;
var marker_d36c2f5bbcd142e0a68c667ce7797e74 = L.marker(
[53.4696, -2.22222],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_07fce4700bba4c9c99291358ead8ea15 = L.popup({"maxWidth": "100%"});
var html_d5908651ce3c4c1a81f4a5fd99a6f120 = $(`<div id="html_d5908651ce3c4c1a81f4a5fd99a6f120" style="width: 100.0%; height: 100.0%;">O2 Apollo Manchester</div>`)[0];
popup_07fce4700bba4c9c99291358ead8ea15.setContent(html_d5908651ce3c4c1a81f4a5fd99a6f120);
marker_d36c2f5bbcd142e0a68c667ce7797e74.bindPopup(popup_07fce4700bba4c9c99291358ead8ea15)
;
var marker_9235a54276c8465292b9ea11e2a36652 = L.marker(
[51.5067, -0.116361],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_f508aab339064ca5ad58756a91295d2d = L.popup({"maxWidth": "100%"});
var html_0971c1b476344ae9a123e4be8654fe2a = $(`<div id="html_0971c1b476344ae9a123e4be8654fe2a" style="width: 100.0%; height: 100.0%;">Queen Elizabeth Hall</div>`)[0];
popup_f508aab339064ca5ad58756a91295d2d.setContent(html_0971c1b476344ae9a123e4be8654fe2a);
marker_9235a54276c8465292b9ea11e2a36652.bindPopup(popup_f508aab339064ca5ad58756a91295d2d)
;
var marker_eca1279c9ae442d48d636dafd66c3f41 = L.marker(
[51.4872, -0.155278],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_9fe6293d9be246ab87a383ef12617dd3 = L.popup({"maxWidth": "100%"});
var html_4cab2c947d114fde9a9d6eb82b0398ac = $(`<div id="html_4cab2c947d114fde9a9d6eb82b0398ac" style="width: 100.0%; height: 100.0%;">Ranelagh Gardens</div>`)[0];
popup_9fe6293d9be246ab87a383ef12617dd3.setContent(html_4cab2c947d114fde9a9d6eb82b0398ac);
marker_eca1279c9ae442d48d636dafd66c3f41.bindPopup(popup_9fe6293d9be246ab87a383ef12617dd3)
;
var marker_a7a5d7a1de924997ae1ccf1417ea8ece = L.marker(
[51.445, 0.352],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_c5fd8d2985b84ff9808bf9030d008cf7 = L.popup({"maxWidth": "100%"});
var html_c2b3bf7bcd1f4a168eefb9ded1a1e8b5 = $(`<div id="html_c2b3bf7bcd1f4a168eefb9ded1a1e8b5" style="width: 100.0%; height: 100.0%;">Rosherville Gardens</div>`)[0];
popup_c5fd8d2985b84ff9808bf9030d008cf7.setContent(html_c2b3bf7bcd1f4a168eefb9ded1a1e8b5);
marker_a7a5d7a1de924997ae1ccf1417ea8ece.bindPopup(popup_c5fd8d2985b84ff9808bf9030d008cf7)
;
var marker_506c97a9337e4dcab7cba6320205e136 = L.marker(
[51.5191, -0.096946],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_150e70f45b7b4d32a0cea66f1d514ee7 = L.popup({"maxWidth": "100%"});
var html_904df7a055094eb8b7677f93acf32aeb = $(`<div id="html_904df7a055094eb8b7677f93acf32aeb" style="width: 100.0%; height: 100.0%;">Rutland House</div>`)[0];
popup_150e70f45b7b4d32a0cea66f1d514ee7.setContent(html_904df7a055094eb8b7677f93acf32aeb);
marker_506c97a9337e4dcab7cba6320205e136.bindPopup(popup_150e70f45b7b4d32a0cea66f1d514ee7)
;
var marker_21091f87a058497fbac6651a222ad32d = L.marker(
[51.5035, -0.22433],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_20b3340faeb44b4699bca680a6b674cc = L.popup({"maxWidth": "100%"});
var html_eab807b99c3e4a34815b5817b97db7e3 = $(`<div id="html_eab807b99c3e4a34815b5817b97db7e3" style="width: 100.0%; height: 100.0%;">Shepherd's Bush Empire</div>`)[0];
popup_20b3340faeb44b4699bca680a6b674cc.setContent(html_eab807b99c3e4a34815b5817b97db7e3);
marker_21091f87a058497fbac6651a222ad32d.bindPopup(popup_20b3340faeb44b4699bca680a6b674cc)
;
var marker_8d60ce2c048f416d9cc577ccdcb905c7 = L.marker(
[53.3762, -1.4649],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_d0f46a61af9248a4bbccebe4d2f199c0 = L.popup({"maxWidth": "100%"});
var html_c0c150c817024df9990a3949a09e5971 = $(`<div id="html_c0c150c817024df9990a3949a09e5971" style="width: 100.0%; height: 100.0%;">The Leadmill</div>`)[0];
popup_d0f46a61af9248a4bbccebe4d2f199c0.setContent(html_c0c150c817024df9990a3949a09e5971);
marker_8d60ce2c048f416d9cc577ccdcb905c7.bindPopup(popup_d0f46a61af9248a4bbccebe4d2f199c0)
;
var marker_8655a1f7b56345db9e33d37999e67ee0 = L.marker(
[53.796, -1.564],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_2880aad59c014410bf18db8ca67a9df3 = L.popup({"maxWidth": "100%"});
var html_e25cdb50b8e74bb39f78e178a44054e4 = $(`<div id="html_e25cdb50b8e74bb39f78e178a44054e4" style="width: 100.0%; height: 100.0%;">The Wendy House</div>`)[0];
popup_2880aad59c014410bf18db8ca67a9df3.setContent(html_e25cdb50b8e74bb39f78e178a44054e4);
marker_8655a1f7b56345db9e33d37999e67ee0.bindPopup(popup_2880aad59c014410bf18db8ca67a9df3)
;
var marker_41e16af2e542459b87921f50b2351dc4 = L.marker(
[53.799, -1.553],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_386ab1f9be004f1aada50a89098cd00b = L.popup({"maxWidth": "100%"});
var html_268a1425537647f1908821c7d8d4b543 = $(`<div id="html_268a1425537647f1908821c7d8d4b543" style="width: 100.0%; height: 100.0%;">Vague club, Leeds</div>`)[0];
popup_386ab1f9be004f1aada50a89098cd00b.setContent(html_268a1425537647f1908821c7d8d4b543);
marker_41e16af2e542459b87921f50b2351dc4.bindPopup(popup_386ab1f9be004f1aada50a89098cd00b)
;
var marker_4e4bb2309967414aaef0028e8e86afa4 = L.marker(
[53.799, -1.553],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_119be552c3d543b68fda13900fbb2beb = L.popup({"maxWidth": "100%"});
var html_a7923f0eac2149e8ad453f646602ac43 = $(`<div id="html_a7923f0eac2149e8ad453f646602ac43" style="width: 100.0%; height: 100.0%;">Vague club, Leeds</div>`)[0];
popup_119be552c3d543b68fda13900fbb2beb.setContent(html_a7923f0eac2149e8ad453f646602ac43);
marker_4e4bb2309967414aaef0028e8e86afa4.bindPopup(popup_119be552c3d543b68fda13900fbb2beb)
;
var marker_08e0ac01981d401986b660baf27b0ae8 = L.marker(
[51.4867, -0.121833],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_1093f778c76547a6ac7daf0ce9d8e0c1 = L.popup({"maxWidth": "100%"});
var html_d2396e8f986742d79bf891e911fa2345 = $(`<div id="html_d2396e8f986742d79bf891e911fa2345" style="width: 100.0%; height: 100.0%;">Vauxhall Gardens</div>`)[0];
popup_1093f778c76547a6ac7daf0ce9d8e0c1.setContent(html_d2396e8f986742d79bf891e911fa2345);
marker_08e0ac01981d401986b660baf27b0ae8.bindPopup(popup_1093f778c76547a6ac7daf0ce9d8e0c1)
;
var marker_4a0b5fc7d8d8407493b5cb0d48e48d55 = L.marker(
[53.0231, -2.1752],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_6d1b8a5e04524455b842ebb0a0a573d2 = L.popup({"maxWidth": "100%"});
var html_61d1acb0a5174287a8aa8682df94d314 = $(`<div id="html_61d1acb0a5174287a8aa8682df94d314" style="width: 100.0%; height: 100.0%;">Victoria Hall, Stoke-on-Trent</div>`)[0];
popup_6d1b8a5e04524455b842ebb0a0a573d2.setContent(html_61d1acb0a5174287a8aa8682df94d314);
marker_4a0b5fc7d8d8407493b5cb0d48e48d55.bindPopup(popup_6d1b8a5e04524455b842ebb0a0a573d2)
;
var marker_d151aae8cdec4f5e857ac6248a491f9b = L.marker(
[51.4522, -0.121667],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_14105ef63f314e3485aec25159e14ecf = L.popup({"maxWidth": "100%"});
var html_220e636afa5d4a56b7209ea240f9cfb0 = $(`<div id="html_220e636afa5d4a56b7209ea240f9cfb0" style="width: 100.0%; height: 100.0%;">George IV, Brixton</div>`)[0];
popup_14105ef63f314e3485aec25159e14ecf.setContent(html_220e636afa5d4a56b7209ea240f9cfb0);
marker_d151aae8cdec4f5e857ac6248a491f9b.bindPopup(popup_14105ef63f314e3485aec25159e14ecf)
;
var marker_9defe4344a6841e5b0ab722ac261a597 = L.marker(
[52.5136, -2.07556],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_664bd832bb3f4e0f80f12f5b3f0858a6 = L.popup({"maxWidth": "100%"});
var html_5105fee2670c4dd196ee8242eda31c07 = $(`<div id="html_5105fee2670c4dd196ee8242eda31c07" style="width: 100.0%; height: 100.0%;">JB's Dudley</div>`)[0];
popup_664bd832bb3f4e0f80f12f5b3f0858a6.setContent(html_5105fee2670c4dd196ee8242eda31c07);
marker_9defe4344a6841e5b0ab722ac261a597.bindPopup(popup_664bd832bb3f4e0f80f12f5b3f0858a6)
;
var marker_bb4fc6656d4e4949bea0043b0a6edaf0 = L.marker(
[53.3965, -1.468],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_cd9e924bca724ecd8b92de3031df3871 = L.popup({"maxWidth": "100%"});
var html_cb42a1d949b84ee4955acf1eb980da39 = $(`<div id="html_cb42a1d949b84ee4955acf1eb980da39" style="width: 100.0%; height: 100.0%;">King Mojo Club</div>`)[0];
popup_cd9e924bca724ecd8b92de3031df3871.setContent(html_cb42a1d949b84ee4955acf1eb980da39);
marker_bb4fc6656d4e4949bea0043b0a6edaf0.bindPopup(popup_cd9e924bca724ecd8b92de3031df3871)
;
var marker_8d347e2fdc91420eb0cfb4c199eb13a8 = L.marker(
[51.4464, 0.154444],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_c6c473a85b034aa4a78cdb7e82f7db4b = L.popup({"maxWidth": "100%"});
var html_da296c0fa2054d849d983be466ef3ddd = $(`<div id="html_da296c0fa2054d849d983be466ef3ddd" style="width: 100.0%; height: 100.0%;">Black Prince, Bexley</div>`)[0];
popup_c6c473a85b034aa4a78cdb7e82f7db4b.setContent(html_da296c0fa2054d849d983be466ef3ddd);
marker_8d347e2fdc91420eb0cfb4c199eb13a8.bindPopup(popup_c6c473a85b034aa4a78cdb7e82f7db4b)
;
var marker_2e6d459064604bdfb896340a0a774733 = L.marker(
[51.4464, 0.154444],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_498624cbe6004a929fc241793edc5842 = L.popup({"maxWidth": "100%"});
var html_0eeb629fa65f455b9c521110bbcebc37 = $(`<div id="html_0eeb629fa65f455b9c521110bbcebc37" style="width: 100.0%; height: 100.0%;">Black Prince, Bexley</div>`)[0];
popup_498624cbe6004a929fc241793edc5842.setContent(html_0eeb629fa65f455b9c521110bbcebc37);
marker_2e6d459064604bdfb896340a0a774733.bindPopup(popup_498624cbe6004a929fc241793edc5842)
;
var marker_2f0bb11612504c7abea2337ba3590dae = L.marker(
[51.4526, -0.1006],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_87045eba75aa4df89934533ab75ddac5 = L.popup({"maxWidth": "100%"});
var html_98330e649d874c7084cbfc98de12f5f3 = $(`<div id="html_98330e649d874c7084cbfc98de12f5f3" style="width: 100.0%; height: 100.0%;">Half Moon, Herne Hill</div>`)[0];
popup_87045eba75aa4df89934533ab75ddac5.setContent(html_98330e649d874c7084cbfc98de12f5f3);
marker_2f0bb11612504c7abea2337ba3590dae.bindPopup(popup_87045eba75aa4df89934533ab75ddac5)
;
var marker_382d18072e1a410fb845c6e8b971939e = L.marker(
[51.3728, 1.1367],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_f627daa2c6874cd196fe475afc35f54d = L.popup({"maxWidth": "100%"});
var html_56cf8565986f4b518ae14f0e2d5ea219 = $(`<div id="html_56cf8565986f4b518ae14f0e2d5ea219" style="width: 100.0%; height: 100.0%;">King's Hall, Herne Bay</div>`)[0];
popup_f627daa2c6874cd196fe475afc35f54d.setContent(html_56cf8565986f4b518ae14f0e2d5ea219);
marker_382d18072e1a410fb845c6e8b971939e.bindPopup(popup_f627daa2c6874cd196fe475afc35f54d)
;
var marker_03800f0ed0c24250a210e34628f2ea38 = L.marker(
[51.4672, -0.220172],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_8130a286da9340779e2355699eccca86 = L.popup({"maxWidth": "100%"});
var html_bd5a878ede9942ffb0a9f2d270bd368e = $(`<div id="html_bd5a878ede9942ffb0a9f2d270bd368e" style="width: 100.0%; height: 100.0%;">The Half Moon, Putney</div>`)[0];
popup_8130a286da9340779e2355699eccca86.setContent(html_bd5a878ede9942ffb0a9f2d270bd368e);
marker_03800f0ed0c24250a210e34628f2ea38.bindPopup(popup_8130a286da9340779e2355699eccca86)
;
var marker_8987410e84d740ef98afa75d35abdff0 = L.marker(
[53.55, -2.63],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_3bd5a15b47a84bb59f89587f5ffc2e1a = L.popup({"maxWidth": "100%"});
var html_ed4081908fe64f6e9f817cd1f8a26d3f = $(`<div id="html_ed4081908fe64f6e9f817cd1f8a26d3f" style="width: 100.0%; height: 100.0%;">Wigan Casino</div>`)[0];
popup_3bd5a15b47a84bb59f89587f5ffc2e1a.setContent(html_ed4081908fe64f6e9f817cd1f8a26d3f);
marker_8987410e84d740ef98afa75d35abdff0.bindPopup(popup_3bd5a15b47a84bb59f89587f5ffc2e1a)
;
var marker_30e3010621eb49ac9e9e79a0b8a5f0b4 = L.marker(
[51.44, -2.62028],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_529d9319934a4fc8873b6bcb8e86f9d0 = L.popup({"maxWidth": "100%"});
var html_c29b7213128546788596f25f45eec609 = $(`<div id="html_c29b7213128546788596f25f45eec609" style="width: 100.0%; height: 100.0%;">Ashton Gate Stadium</div>`)[0];
popup_529d9319934a4fc8873b6bcb8e86f9d0.setContent(html_c29b7213128546788596f25f45eec609);
marker_30e3010621eb49ac9e9e79a0b8a5f0b4.bindPopup(popup_529d9319934a4fc8873b6bcb8e86f9d0)
;
var marker_0d41f36f98fd496d9f575178ecacca39 = L.marker(
[51.5134, -0.1339],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_2edb3f5156b74f149192f1050556ec42 = L.popup({"maxWidth": "100%"});
var html_7ac619aa7dbe4c47a95acf9112f3c79c = $(`<div id="html_7ac619aa7dbe4c47a95acf9112f3c79c" style="width: 100.0%; height: 100.0%;">Marquee Club</div>`)[0];
popup_2edb3f5156b74f149192f1050556ec42.setContent(html_7ac619aa7dbe4c47a95acf9112f3c79c);
marker_0d41f36f98fd496d9f575178ecacca39.bindPopup(popup_2edb3f5156b74f149192f1050556ec42)
;
var marker_517a0834fecb41fe8a07a7d2acf59252 = L.marker(
[52.4767, -1.91333],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_6f86459e94e54c07b3505e85d31d575b = L.popup({"maxWidth": "100%"});
var html_c68bc1b480404573baae6a3a803eec87 = $(`<div id="html_c68bc1b480404573baae6a3a803eec87" style="width: 100.0%; height: 100.0%;">Barbarella's</div>`)[0];
popup_6f86459e94e54c07b3505e85d31d575b.setContent(html_c68bc1b480404573baae6a3a803eec87);
marker_517a0834fecb41fe8a07a7d2acf59252.bindPopup(popup_6f86459e94e54c07b3505e85d31d575b)
;
var marker_b63ad058a3cf411da132a2875429cfa9 = L.marker(
[51.4981, -0.1332],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_10b4f3d6e8e24dae979dde7a43a1a682 = L.popup({"maxWidth": "100%"});
var html_ee3b26c08b024989bd4b7bfdb0d72ef9 = $(`<div id="html_ee3b26c08b024989bd4b7bfdb0d72ef9" style="width: 100.0%; height: 100.0%;">The Venue (Victoria Street, London)</div>`)[0];
popup_10b4f3d6e8e24dae979dde7a43a1a682.setContent(html_ee3b26c08b024989bd4b7bfdb0d72ef9);
marker_b63ad058a3cf411da132a2875429cfa9.bindPopup(popup_10b4f3d6e8e24dae979dde7a43a1a682)
;
var marker_62838204a7a64826b8c14672366cf7c5 = L.marker(
[54.0688, -2.27905],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_cc1c3cddd2a1480ebb784d4a363620dc = L.popup({"maxWidth": "100%"});
var html_fd2fc6bab4fd4817b9773e785e51b8c1 = $(`<div id="html_fd2fc6bab4fd4817b9773e785e51b8c1" style="width: 100.0%; height: 100.0%;">Victoria Hall, Settle</div>`)[0];
popup_cc1c3cddd2a1480ebb784d4a363620dc.setContent(html_fd2fc6bab4fd4817b9773e785e51b8c1);
marker_62838204a7a64826b8c14672366cf7c5.bindPopup(popup_cc1c3cddd2a1480ebb784d4a363620dc)
;
var marker_e47ea64481b44dbbb92d1053567bee9c = L.marker(
[52.5396, -2.1704],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_3b6e86444f4f4ab799182cb66adf6ed9 = L.popup({"maxWidth": "100%"});
var html_a297257af9824780af7e1d4f93aeeb35 = $(`<div id="html_a297257af9824780af7e1d4f93aeeb35" style="width: 100.0%; height: 100.0%;">The Wodehouse</div>`)[0];
popup_3b6e86444f4f4ab799182cb66adf6ed9.setContent(html_a297257af9824780af7e1d4f93aeeb35);
marker_e47ea64481b44dbbb92d1053567bee9c.bindPopup(popup_3b6e86444f4f4ab799182cb66adf6ed9)
;
var marker_df38ef6a8f70468990d20b5fc4129350 = L.marker(
[51.5414, -0.146389],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_9e418faa106a4265920cc5008fe47dcb = L.popup({"maxWidth": "100%"});
var html_840f61588a65487a99b1671ec787b497 = $(`<div id="html_840f61588a65487a99b1671ec787b497" style="width: 100.0%; height: 100.0%;">InSpiral Lounge</div>`)[0];
popup_9e418faa106a4265920cc5008fe47dcb.setContent(html_840f61588a65487a99b1671ec787b497);
marker_df38ef6a8f70468990d20b5fc4129350.bindPopup(popup_9e418faa106a4265920cc5008fe47dcb)
;
var marker_0d76242988a74025b97ab754adb66834 = L.marker(
[54.9782, -1.60656],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_3f290adf07344ab696773452f23791b3 = L.popup({"maxWidth": "100%"});
var html_6c80c68072e54b8ea9372f31eefac495 = $(`<div id="html_6c80c68072e54b8ea9372f31eefac495" style="width: 100.0%; height: 100.0%;">Sport Central</div>`)[0];
popup_3f290adf07344ab696773452f23791b3.setContent(html_6c80c68072e54b8ea9372f31eefac495);
marker_0d76242988a74025b97ab754adb66834.bindPopup(popup_3f290adf07344ab696773452f23791b3)
;
var marker_b2317f2773014a21bdf49d6b1146b4f0 = L.marker(
[52.4797, -1.915],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_ae4aef44d03f40589a216d01d5812d04 = L.popup({"maxWidth": "100%"});
var html_8147b72307cf4e5ab2b1217c9a63c65c = $(`<div id="html_8147b72307cf4e5ab2b1217c9a63c65c" style="width: 100.0%; height: 100.0%;">Barclaycard Arena</div>`)[0];
popup_ae4aef44d03f40589a216d01d5812d04.setContent(html_8147b72307cf4e5ab2b1217c9a63c65c);
marker_b2317f2773014a21bdf49d6b1146b4f0.bindPopup(popup_ae4aef44d03f40589a216d01d5812d04)
;
var marker_ef4f4efc171f4f9fa55cd9d1c148cdf9 = L.marker(
[52.4796, -1.90377],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_b9806dca86344027b1d282091b7d26a6 = L.popup({"maxWidth": "100%"});
var html_cce325d0690a4ee39c2396d518b1fb74 = $(`<div id="html_cce325d0690a4ee39c2396d518b1fb74" style="width: 100.0%; height: 100.0%;">Birmingham Town Hall</div>`)[0];
popup_b9806dca86344027b1d282091b7d26a6.setContent(html_cce325d0690a4ee39c2396d518b1fb74);
marker_ef4f4efc171f4f9fa55cd9d1c148cdf9.bindPopup(popup_b9806dca86344027b1d282091b7d26a6)
;
var marker_6ff0eddd21e1482eb0510e6e7711a11d = L.marker(
[52.4796, -1.90377],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_b42533e8d69149efa1aa77204c360c64 = L.popup({"maxWidth": "100%"});
var html_660f1689369d44dfafe94ec2ab3b816a = $(`<div id="html_660f1689369d44dfafe94ec2ab3b816a" style="width: 100.0%; height: 100.0%;">Birmingham Town Hall</div>`)[0];
popup_b42533e8d69149efa1aa77204c360c64.setContent(html_660f1689369d44dfafe94ec2ab3b816a);
marker_6ff0eddd21e1482eb0510e6e7711a11d.bindPopup(popup_b42533e8d69149efa1aa77204c360c64)
;
var marker_4924c6a8f32e4a90a385a3f5618cd8b3 = L.marker(
[51.4517, -2.6007],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_6f9a72488c6648d08a1d48557f99a92c = L.popup({"maxWidth": "100%"});
var html_bf93911c69ae48988069bc61143b7be7 = $(`<div id="html_bf93911c69ae48988069bc61143b7be7" style="width: 100.0%; height: 100.0%;">Bristol Cathedral</div>`)[0];
popup_6f9a72488c6648d08a1d48557f99a92c.setContent(html_bf93911c69ae48988069bc61143b7be7);
marker_4924c6a8f32e4a90a385a3f5618cd8b3.bindPopup(popup_6f9a72488c6648d08a1d48557f99a92c)
;
var marker_340310ff85994b5ca8a9af68e8da1129 = L.marker(
[53.4831, -2.20028],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_2f0d705db6e24fa3b180502525bc5e0d = L.popup({"maxWidth": "100%"});
var html_66dad85a6e80427fa80154d6c3b642e0 = $(`<div id="html_66dad85a6e80427fa80154d6c3b642e0" style="width: 100.0%; height: 100.0%;">City of Manchester Stadium</div>`)[0];
popup_2f0d705db6e24fa3b180502525bc5e0d.setContent(html_66dad85a6e80427fa80154d6c3b642e0);
marker_340310ff85994b5ca8a9af68e8da1129.bindPopup(popup_2f0d705db6e24fa3b180502525bc5e0d)
;
var marker_edf71290ab1d48638be2cc9f03da34a1 = L.marker(
[51.4597, -2.6163],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_7005f57f40dd4f8daa590da3847a6a49 = L.popup({"maxWidth": "100%"});
var html_d923db2b33da4e32a7646dd3f44f8fe6 = $(`<div id="html_d923db2b33da4e32a7646dd3f44f8fe6" style="width: 100.0%; height: 100.0%;">Clifton Cathedral</div>`)[0];
popup_7005f57f40dd4f8daa590da3847a6a49.setContent(html_d923db2b33da4e32a7646dd3f44f8fe6);
marker_edf71290ab1d48638be2cc9f03da34a1.bindPopup(popup_7005f57f40dd4f8daa590da3847a6a49)
;
var marker_ebac4afdc71644a581a68c6d5317aabe = L.marker(
[53.4881, -2.24389],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_6cbbc7be521b4479bcc733d14bc9ab42 = L.popup({"maxWidth": "100%"});
var html_9d3f0022a84840c7bf58655753a2475e = $(`<div id="html_9d3f0022a84840c7bf58655753a2475e" style="width: 100.0%; height: 100.0%;">Manchester Arena</div>`)[0];
popup_6cbbc7be521b4479bcc733d14bc9ab42.setContent(html_9d3f0022a84840c7bf58655753a2475e);
marker_ebac4afdc71644a581a68c6d5317aabe.bindPopup(popup_6cbbc7be521b4479bcc733d14bc9ab42)
;
var marker_fce9c497315544528f12f89e19065676 = L.marker(
[52.5232, -1.84034],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_f9dc8b24951a4ecf90b5a5441130b528 = L.popup({"maxWidth": "100%"});
var html_39157d85b1db4eb9b2af934266143ee5 = $(`<div id="html_39157d85b1db4eb9b2af934266143ee5" style="width: 100.0%; height: 100.0%;">Mothers (music venue)</div>`)[0];
popup_f9dc8b24951a4ecf90b5a5441130b528.setContent(html_39157d85b1db4eb9b2af934266143ee5);
marker_fce9c497315544528f12f89e19065676.bindPopup(popup_f9dc8b24951a4ecf90b5a5441130b528)
;
var marker_b79010e1e8e2417490490ab3ad7aef5e = L.marker(
[54.9144, -1.3882],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_d98a770d91dd4d49b6da73866bd144d0 = L.popup({"maxWidth": "100%"});
var html_3cfc978fbc544c99bbc7a5b89081f39b = $(`<div id="html_3cfc978fbc544c99bbc7a5b89081f39b" style="width: 100.0%; height: 100.0%;">Stadium of Light</div>`)[0];
popup_d98a770d91dd4d49b6da73866bd144d0.setContent(html_3cfc978fbc544c99bbc7a5b89081f39b);
marker_b79010e1e8e2417490490ab3ad7aef5e.bindPopup(popup_d98a770d91dd4d49b6da73866bd144d0)
;
var marker_0ca528d6070e48dca2c8cebfef9b1f25 = L.marker(
[52.4786, -1.91056],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_a5847cb3a5b2408ea466c329dbf459a3 = L.popup({"maxWidth": "100%"});
var html_71ec391a39d3454885f17e48cf60cac9 = $(`<div id="html_71ec391a39d3454885f17e48cf60cac9" style="width: 100.0%; height: 100.0%;">Symphony Hall, Birmingham</div>`)[0];
popup_a5847cb3a5b2408ea466c329dbf459a3.setContent(html_71ec391a39d3454885f17e48cf60cac9);
marker_0ca528d6070e48dca2c8cebfef9b1f25.bindPopup(popup_a5847cb3a5b2408ea466c329dbf459a3)
;
var marker_87c3094bf2d9436cb08ab9bd2dabbf87 = L.marker(
[52.4786, -1.91056],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_be60e1c5cef245eea049b785eaa2aac0 = L.popup({"maxWidth": "100%"});
var html_e5f3fad073d048d88c0dc74acd43e4c5 = $(`<div id="html_e5f3fad073d048d88c0dc74acd43e4c5" style="width: 100.0%; height: 100.0%;">Symphony Hall, Birmingham</div>`)[0];
popup_be60e1c5cef245eea049b785eaa2aac0.setContent(html_e5f3fad073d048d88c0dc74acd43e4c5);
marker_87c3094bf2d9436cb08ab9bd2dabbf87.bindPopup(popup_be60e1c5cef245eea049b785eaa2aac0)
;
var marker_177dd308c3314885b10964dc19d1ad73 = L.marker(
[51.4561, -0.341667],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_615003ef1b154b65b64a1b24bddfdb10 = L.popup({"maxWidth": "100%"});
var html_6776cb1ccfa34e9580370ec7f30f0a0b = $(`<div id="html_6776cb1ccfa34e9580370ec7f30f0a0b" style="width: 100.0%; height: 100.0%;">Twickenham Stadium</div>`)[0];
popup_615003ef1b154b65b64a1b24bddfdb10.setContent(html_6776cb1ccfa34e9580370ec7f30f0a0b);
marker_177dd308c3314885b10964dc19d1ad73.bindPopup(popup_615003ef1b154b65b64a1b24bddfdb10)
;
var marker_2df2a70e46f7490c866d7c7bf106c766 = L.marker(
[51.5581, -0.282972],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_2558915444ca400d9e44921af26be61c = L.popup({"maxWidth": "100%"});
var html_a72ec6db33164ac4b5ca89cd4dd14b5f = $(`<div id="html_a72ec6db33164ac4b5ca89cd4dd14b5f" style="width: 100.0%; height: 100.0%;">Wembley Arena</div>`)[0];
popup_2558915444ca400d9e44921af26be61c.setContent(html_a72ec6db33164ac4b5ca89cd4dd14b5f);
marker_2df2a70e46f7490c866d7c7bf106c766.bindPopup(popup_2558915444ca400d9e44921af26be61c)
;
var marker_58e2f21ba037417a84d19ce625482854 = L.marker(
[51.5556, -0.279722],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_00380e732336483482d39211355fc940 = L.popup({"maxWidth": "100%"});
var html_70ba18676d72478c9de78a828598b0a5 = $(`<div id="html_70ba18676d72478c9de78a828598b0a5" style="width: 100.0%; height: 100.0%;">Wembley Stadium (1923)</div>`)[0];
popup_00380e732336483482d39211355fc940.setContent(html_70ba18676d72478c9de78a828598b0a5);
marker_58e2f21ba037417a84d19ce625482854.bindPopup(popup_00380e732336483482d39211355fc940)
;
var marker_7419a919f2e44ac38fe857ecc8cfffaa = L.marker(
[52.5866, -2.1307],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_493badeb273c43a4852ddfe7e8f17a6b = L.popup({"maxWidth": "100%"});
var html_b4ffef21c8ce48f4a91b350a0ff64e21 = $(`<div id="html_b4ffef21c8ce48f4a91b350a0ff64e21" style="width: 100.0%; height: 100.0%;">Wolverhampton Civic Hall</div>`)[0];
popup_493badeb273c43a4852ddfe7e8f17a6b.setContent(html_b4ffef21c8ce48f4a91b350a0ff64e21);
marker_7419a919f2e44ac38fe857ecc8cfffaa.bindPopup(popup_493badeb273c43a4852ddfe7e8f17a6b)
;
var marker_7ff7673d7ce24ee5962c75776a7e3999 = L.marker(
[51.4492, -2.5972],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_9f15926927684beab4b5359513fbe2ff = L.popup({"maxWidth": "100%"});
var html_68618738b881471cb2e9f61c30e5fef3 = $(`<div id="html_68618738b881471cb2e9f61c30e5fef3" style="width: 100.0%; height: 100.0%;">Arnolfini</div>`)[0];
popup_9f15926927684beab4b5359513fbe2ff.setContent(html_68618738b881471cb2e9f61c30e5fef3);
marker_7ff7673d7ce24ee5962c75776a7e3999.bindPopup(popup_9f15926927684beab4b5359513fbe2ff)
;
var marker_258e578f0a0e45be89aac31adca00acb = L.marker(
[51.4889, -0.197778],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_1346785acb934ee4be91c0e4ea8d4ca9 = L.popup({"maxWidth": "100%"});
var html_c23f0e775c29425db5e5b54c112514a2 = $(`<div id="html_c23f0e775c29425db5e5b54c112514a2" style="width: 100.0%; height: 100.0%;">Earls Court Exhibition Centre</div>`)[0];
popup_1346785acb934ee4be91c0e4ea8d4ca9.setContent(html_c23f0e775c29425db5e5b54c112514a2);
marker_258e578f0a0e45be89aac31adca00acb.bindPopup(popup_1346785acb934ee4be91c0e4ea8d4ca9)
;
var marker_a5816605ab4c441197f07ae994a91a09 = L.marker(
[54.9639, -1.62333],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_e4244f9e6834474cb3bbfe6721d6434e = L.popup({"maxWidth": "100%"});
var html_067a171ad00b4fd6a987ba2d1db9522e = $(`<div id="html_067a171ad00b4fd6a987ba2d1db9522e" style="width: 100.0%; height: 100.0%;">Metro Radio Arena</div>`)[0];
popup_e4244f9e6834474cb3bbfe6721d6434e.setContent(html_067a171ad00b4fd6a987ba2d1db9522e);
marker_a5816605ab4c441197f07ae994a91a09.bindPopup(popup_e4244f9e6834474cb3bbfe6721d6434e)
;
var marker_2fb4bf745b554e20813021283af9c360 = L.marker(
[54.9639, -1.62333],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_db545193df7244008273b1c2b46568d1 = L.popup({"maxWidth": "100%"});
var html_800a2dcd8a4e454ca7ce284d2edaa051 = $(`<div id="html_800a2dcd8a4e454ca7ce284d2edaa051" style="width: 100.0%; height: 100.0%;">Metro Radio Arena</div>`)[0];
popup_db545193df7244008273b1c2b46568d1.setContent(html_800a2dcd8a4e454ca7ce284d2edaa051);
marker_2fb4bf745b554e20813021283af9c360.bindPopup(popup_db545193df7244008273b1c2b46568d1)
;
var marker_eb36bad4b09f4dc4be1b974148c8c44a = L.marker(
[51.578, -0.99],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_36022d86912c4f3abb5273913f8c7cd2 = L.popup({"maxWidth": "100%"});
var html_87acfd36edb24a6cad4d38f96d0f458f = $(`<div id="html_87acfd36edb24a6cad4d38f96d0f458f" style="width: 100.0%; height: 100.0%;">Nettlebed</div>`)[0];
popup_36022d86912c4f3abb5273913f8c7cd2.setContent(html_87acfd36edb24a6cad4d38f96d0f458f);
marker_eb36bad4b09f4dc4be1b974148c8c44a.bindPopup(popup_36022d86912c4f3abb5273913f8c7cd2)
;
var marker_43275a6f2cef45e68e986cb93124b171 = L.marker(
[52.9561, -1.1544],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_8b876b10d7784b1e9da5091f9c7305a7 = L.popup({"maxWidth": "100%"});
var html_e8a6fbac515a43b28de73ee0cdc40a15 = $(`<div id="html_e8a6fbac515a43b28de73ee0cdc40a15" style="width: 100.0%; height: 100.0%;">Rock City (venue)</div>`)[0];
popup_8b876b10d7784b1e9da5091f9c7305a7.setContent(html_e8a6fbac515a43b28de73ee0cdc40a15);
marker_43275a6f2cef45e68e986cb93124b171.bindPopup(popup_8b876b10d7784b1e9da5091f9c7305a7)
;
var marker_964780edefe84afcadb419680e43e4ff = L.marker(
[53.3999, -1.41876],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_d47a10701c1e4330ae342ca7b7c3b6c0 = L.popup({"maxWidth": "100%"});
var html_c40e20c598be43ec8461004cc18a825a = $(`<div id="html_c40e20c598be43ec8461004cc18a825a" style="width: 100.0%; height: 100.0%;">Sheffield Arena</div>`)[0];
popup_d47a10701c1e4330ae342ca7b7c3b6c0.setContent(html_c40e20c598be43ec8461004cc18a825a);
marker_964780edefe84afcadb419680e43e4ff.bindPopup(popup_d47a10701c1e4330ae342ca7b7c3b6c0)
;
var marker_8f9b11e7cd3b4399b00a22e08387f6d1 = L.marker(
[51.5057, -0.116761],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_37e59e093ef94685b21eac7c09d94049 = L.popup({"maxWidth": "100%"});
var html_e82d1d11e0244e21be9e978d42ed8b86 = $(`<div id="html_e82d1d11e0244e21be9e978d42ed8b86" style="width: 100.0%; height: 100.0%;">Southbank Centre</div>`)[0];
popup_37e59e093ef94685b21eac7c09d94049.setContent(html_e82d1d11e0244e21be9e978d42ed8b86);
marker_8f9b11e7cd3b4399b00a22e08387f6d1.bindPopup(popup_37e59e093ef94685b21eac7c09d94049)
;
var marker_e9b30aa852014053b2ad6862ce3c2479 = L.marker(
[51.4979, -0.109976],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_64de12c77427420ba537eff1f450514e = L.popup({"maxWidth": "100%"});
var html_45fdfea355524542a67b35896d79c3bf = $(`<div id="html_45fdfea355524542a67b35896d79c3bf" style="width: 100.0%; height: 100.0%;">Centre for Young Musicians</div>`)[0];
popup_64de12c77427420ba537eff1f450514e.setContent(html_45fdfea355524542a67b35896d79c3bf);
marker_e9b30aa852014053b2ad6862ce3c2479.bindPopup(popup_64de12c77427420ba537eff1f450514e)
;
var marker_4923491d2f1f4c77aac4b4a5e4cc57cf = L.marker(
[53.7546, -0.3489],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_4524326684fc4425af8b48a113ffda72 = L.popup({"maxWidth": "100%"});
var html_f8f243662253448e8adfceca47e64977 = $(`<div id="html_f8f243662253448e8adfceca47e64977" style="width: 100.0%; height: 100.0%;">Club Déjà Vu</div>`)[0];
popup_4524326684fc4425af8b48a113ffda72.setContent(html_f8f243662253448e8adfceca47e64977);
marker_4923491d2f1f4c77aac4b4a5e4cc57cf.bindPopup(popup_4524326684fc4425af8b48a113ffda72)
;
var marker_0202fec119c54cccb57030cee354e9e5 = L.marker(
[53.7546, -0.3489],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_313230b69e3c40ad9bb6f1a08917d2bc = L.popup({"maxWidth": "100%"});
var html_2a0dc59deec84dbb93a400da8f019162 = $(`<div id="html_2a0dc59deec84dbb93a400da8f019162" style="width: 100.0%; height: 100.0%;">Club Déjà Vu</div>`)[0];
popup_313230b69e3c40ad9bb6f1a08917d2bc.setContent(html_2a0dc59deec84dbb93a400da8f019162);
marker_0202fec119c54cccb57030cee354e9e5.bindPopup(popup_313230b69e3c40ad9bb6f1a08917d2bc)
;
var marker_dec3f66a0c704fd0a848edbbf147b3da = L.marker(
[51.2819, 1.08072],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_7330d051023d46ffb4c5165b9d8926d8 = L.popup({"maxWidth": "100%"});
var html_cff182270a6d40df8ff918ccb4ea6c22 = $(`<div id="html_cff182270a6d40df8ff918ccb4ea6c22" style="width: 100.0%; height: 100.0%;">Old Synagogue (Canterbury)</div>`)[0];
popup_7330d051023d46ffb4c5165b9d8926d8.setContent(html_cff182270a6d40df8ff918ccb4ea6c22);
marker_dec3f66a0c704fd0a848edbbf147b3da.bindPopup(popup_7330d051023d46ffb4c5165b9d8926d8)
;
var marker_714e68a0fa6544b6b4acbaa67f5466d9 = L.marker(
[51.5113, -0.1322],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_178054461ec748aebcf96ec79f8fc3c2 = L.popup({"maxWidth": "100%"});
var html_4fda42ddb4814e9a8fddf98becc89126 = $(`<div id="html_4fda42ddb4814e9a8fddf98becc89126" style="width: 100.0%; height: 100.0%;">The Flamingo Club</div>`)[0];
popup_178054461ec748aebcf96ec79f8fc3c2.setContent(html_4fda42ddb4814e9a8fddf98becc89126);
marker_714e68a0fa6544b6b4acbaa67f5466d9.bindPopup(popup_178054461ec748aebcf96ec79f8fc3c2)
;
var marker_fae6cf880d2149a78f71b5c2f0f06f2d = L.marker(
[51.5467, -0.103889],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_a52f26fe912f4e06bb810727e06cad5d = L.popup({"maxWidth": "100%"});
var html_fd84db51641e4e1d9fdf3fae755a13ad = $(`<div id="html_fd84db51641e4e1d9fdf3fae755a13ad" style="width: 100.0%; height: 100.0%;">The Garage, London</div>`)[0];
popup_a52f26fe912f4e06bb810727e06cad5d.setContent(html_fd84db51641e4e1d9fdf3fae755a13ad);
marker_fae6cf880d2149a78f71b5c2f0f06f2d.bindPopup(popup_a52f26fe912f4e06bb810727e06cad5d)
;
var marker_4abd67101ace4e52970f44fd71f44b41 = L.marker(
[53.3967, -2.99096],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_3e42565ce53e4270b7f743ed7edb901f = L.popup({"maxWidth": "100%"});
var html_e7437a44bdd34480b79e7fe3aadccb27 = $(`<div id="html_e7437a44bdd34480b79e7fe3aadccb27" style="width: 100.0%; height: 100.0%;">Echo Arena Liverpool</div>`)[0];
popup_3e42565ce53e4270b7f743ed7edb901f.setContent(html_e7437a44bdd34480b79e7fe3aadccb27);
marker_4abd67101ace4e52970f44fd71f44b41.bindPopup(popup_3e42565ce53e4270b7f743ed7edb901f)
;
var marker_f3bf34a99f9f4ca19ab33725de344251 = L.marker(
[51.5124, -0.13889],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_a0c16feaf1f2467f80c51b03045f6b6f = L.popup({"maxWidth": "100%"});
var html_70bc141a36c44912bf97ef73f52fb38b = $(`<div id="html_70bc141a36c44912bf97ef73f52fb38b" style="width: 100.0%; height: 100.0%;">The Bag O'Nails</div>`)[0];
popup_a0c16feaf1f2467f80c51b03045f6b6f.setContent(html_70bc141a36c44912bf97ef73f52fb38b);
marker_f3bf34a99f9f4ca19ab33725de344251.bindPopup(popup_a0c16feaf1f2467f80c51b03045f6b6f)
;
var marker_d5e88d632f214ad6851872d7c4374f1b = L.marker(
[51.5124, -0.138889],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_8357542dbb7e4cad9e7dbfd49645a8db = L.popup({"maxWidth": "100%"});
var html_78139885f8bd48cb98b615e88b1a9a2b = $(`<div id="html_78139885f8bd48cb98b615e88b1a9a2b" style="width: 100.0%; height: 100.0%;">The Bag O'Nails</div>`)[0];
popup_8357542dbb7e4cad9e7dbfd49645a8db.setContent(html_78139885f8bd48cb98b615e88b1a9a2b);
marker_d5e88d632f214ad6851872d7c4374f1b.bindPopup(popup_8357542dbb7e4cad9e7dbfd49645a8db)
;
var marker_54aa2b0ac1fe41a09464c38e7e9d783e = L.marker(
[51.5078, -0.1371],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_0746f1c09da9457d89c00100b1fc9a2c = L.popup({"maxWidth": "100%"});
var html_877526c875c04cdd9f8c121fb1b2942f = $(`<div id="html_877526c875c04cdd9f8c121fb1b2942f" style="width: 100.0%; height: 100.0%;">The Scotch of St. James</div>`)[0];
popup_0746f1c09da9457d89c00100b1fc9a2c.setContent(html_877526c875c04cdd9f8c121fb1b2942f);
marker_54aa2b0ac1fe41a09464c38e7e9d783e.bindPopup(popup_0746f1c09da9457d89c00100b1fc9a2c)
;
var marker_7de9f7d9f3b14998bbca553abe28b33f = L.marker(
[52.0085, -0.732876],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_218fa593081c434985c693ba1cf01be7 = L.popup({"maxWidth": "100%"});
var html_cd78c62cd0f44cfe928c96c4d9432259 = $(`<div id="html_cd78c62cd0f44cfe928c96c4d9432259" style="width: 100.0%; height: 100.0%;">Arena MK</div>`)[0];
popup_218fa593081c434985c693ba1cf01be7.setContent(html_cd78c62cd0f44cfe928c96c4d9432259);
marker_7de9f7d9f3b14998bbca553abe28b33f.bindPopup(popup_218fa593081c434985c693ba1cf01be7)
;
var marker_c1785c5689de4c2893b9a2cb59aa04c3 = L.marker(
[53.5792, -2.53917],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_3717c2cde4a84f71bcc151efc4d782e6 = L.popup({"maxWidth": "100%"});
var html_b43cca29e701427c98976957683c464c = $(`<div id="html_b43cca29e701427c98976957683c464c" style="width: 100.0%; height: 100.0%;">Bolton Arena</div>`)[0];
popup_3717c2cde4a84f71bcc151efc4d782e6.setContent(html_b43cca29e701427c98976957683c464c);
marker_c1785c5689de4c2893b9a2cb59aa04c3.bindPopup(popup_3717c2cde4a84f71bcc151efc4d782e6)
;
var marker_19b51d621edd4a64a1a2b25590c67e42 = L.marker(
[51.5244, -0.16],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_cb375d7499ef44bbb5f3b8774f05e4c4 = L.popup({"maxWidth": "100%"});
var html_557c8142b7ed4423ad3ac81861989286 = $(`<div id="html_557c8142b7ed4423ad3ac81861989286" style="width: 100.0%; height: 100.0%;">St Cyprian's, Clarence Gate</div>`)[0];
popup_cb375d7499ef44bbb5f3b8774f05e4c4.setContent(html_557c8142b7ed4423ad3ac81861989286);
marker_19b51d621edd4a64a1a2b25590c67e42.bindPopup(popup_cb375d7499ef44bbb5f3b8774f05e4c4)
;
var marker_68d591e0e3474480b39a342f30c99313 = L.marker(
[52.8058, -1.6275],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_5319dd38fbfe43a29573b22f692d77c2 = L.popup({"maxWidth": "100%"});
var html_a69a6c70ee38481ca8ebcb1253857ffd = $(`<div id="html_a69a6c70ee38481ca8ebcb1253857ffd" style="width: 100.0%; height: 100.0%;">76 Club</div>`)[0];
popup_5319dd38fbfe43a29573b22f692d77c2.setContent(html_a69a6c70ee38481ca8ebcb1253857ffd);
marker_68d591e0e3474480b39a342f30c99313.bindPopup(popup_5319dd38fbfe43a29573b22f692d77c2)
;
var marker_8932b011610f4f2aae6ed06a0e185e0d = L.marker(
[51.7528, -0.336389],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_f5975ac11fb344a6b4bbfed6684277bf = L.popup({"maxWidth": "100%"});
var html_941374b5a6ed4e86b58290952a5fca8c = $(`<div id="html_941374b5a6ed4e86b58290952a5fca8c" style="width: 100.0%; height: 100.0%;">Alban Arena</div>`)[0];
popup_f5975ac11fb344a6b4bbfed6684277bf.setContent(html_941374b5a6ed4e86b58290952a5fca8c);
marker_8932b011610f4f2aae6ed06a0e185e0d.bindPopup(popup_f5975ac11fb344a6b4bbfed6684277bf)
;
var marker_f7545a59e04d45d89f7a7326fe735fe5 = L.marker(
[53.7438, -0.340146],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_2a08ace043ea4d9f9da995a9cb984e6f = L.popup({"maxWidth": "100%"});
var html_6d3cbe55223b4445b2243b983a333bd5 = $(`<div id="html_6d3cbe55223b4445b2243b983a333bd5" style="width: 100.0%; height: 100.0%;">Hull City Hall</div>`)[0];
popup_2a08ace043ea4d9f9da995a9cb984e6f.setContent(html_6d3cbe55223b4445b2243b983a333bd5);
marker_f7545a59e04d45d89f7a7326fe735fe5.bindPopup(popup_2a08ace043ea4d9f9da995a9cb984e6f)
;
var marker_8553be16cb9f4e858a4c25bea120696b = L.marker(
[52.6217, -1.12527],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_66ed3c137275453cba2b660764d74aa2 = L.popup({"maxWidth": "100%"});
var html_f9133401f18f4ee1afd06d488a9da5bb = $(`<div id="html_f9133401f18f4ee1afd06d488a9da5bb" style="width: 100.0%; height: 100.0%;">O2 Academy Leicester</div>`)[0];
popup_66ed3c137275453cba2b660764d74aa2.setContent(html_f9133401f18f4ee1afd06d488a9da5bb);
marker_8553be16cb9f4e858a4c25bea120696b.bindPopup(popup_66ed3c137275453cba2b660764d74aa2)
;
var marker_b1bd604ea9d046c28bbda7bacabe68d0 = L.marker(
[52.8248, -2.0653],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_e842e01c2d4d4d6d8d94f301b3718af3 = L.popup({"maxWidth": "100%"});
var html_5b4ff9d4e9b24b3c89bc344d0d15a0a4 = $(`<div id="html_5b4ff9d4e9b24b3c89bc344d0d15a0a4" style="width: 100.0%; height: 100.0%;">Bingley Hall, Stafford</div>`)[0];
popup_e842e01c2d4d4d6d8d94f301b3718af3.setContent(html_5b4ff9d4e9b24b3c89bc344d0d15a0a4);
marker_b1bd604ea9d046c28bbda7bacabe68d0.bindPopup(popup_e842e01c2d4d4d6d8d94f301b3718af3)
;
var marker_e078e800acdc4b378ef50914194012b9 = L.marker(
[51.4644, 0.00963889],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_263059a5f4c24ed48665d91d96130838 = L.popup({"maxWidth": "100%"});
var html_9919367d0205446e8d90affb01933766 = $(`<div id="html_9919367d0205446e8d90affb01933766" style="width: 100.0%; height: 100.0%;">Blackheath Halls</div>`)[0];
popup_263059a5f4c24ed48665d91d96130838.setContent(html_9919367d0205446e8d90affb01933766);
marker_e078e800acdc4b378ef50914194012b9.bindPopup(popup_263059a5f4c24ed48665d91d96130838)
;
var marker_01d9750a9cc1429cb4001ca98cf91b89 = L.marker(
[51.5065, -0.231609],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_86f598bea8ed43f29c2f8a0e0c696592 = L.popup({"maxWidth": "100%"});
var html_43a84e3be8bb40cc9160d0b472d28623 = $(`<div id="html_43a84e3be8bb40cc9160d0b472d28623" style="width: 100.0%; height: 100.0%;">Bush Hall</div>`)[0];
popup_86f598bea8ed43f29c2f8a0e0c696592.setContent(html_43a84e3be8bb40cc9160d0b472d28623);
marker_01d9750a9cc1429cb4001ca98cf91b89.bindPopup(popup_86f598bea8ed43f29c2f8a0e0c696592)
;
var marker_fbe31bf81d5f4e16b108d85a726619c2 = L.marker(
[51.5373, -0.14112],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_3199ac0babdb41ecb30251a9464e06ec = L.popup({"maxWidth": "100%"});
var html_321b389f8ae24c2cb6a76d835090bcfd = $(`<div id="html_321b389f8ae24c2cb6a76d835090bcfd" style="width: 100.0%; height: 100.0%;">Camden Head</div>`)[0];
popup_3199ac0babdb41ecb30251a9464e06ec.setContent(html_321b389f8ae24c2cb6a76d835090bcfd);
marker_fbe31bf81d5f4e16b108d85a726619c2.bindPopup(popup_3199ac0babdb41ecb30251a9464e06ec)
;
var marker_c68534a3155749078f786584b1cf4260 = L.marker(
[52.9127, -1.4464],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_f1a9ba69dd4544388bf85f0bad605188 = L.popup({"maxWidth": "100%"});
var html_10e9cd8ed5a54c06849479ebbf5fcef6 = $(`<div id="html_10e9cd8ed5a54c06849479ebbf5fcef6" style="width: 100.0%; height: 100.0%;">Derby Arena</div>`)[0];
popup_f1a9ba69dd4544388bf85f0bad605188.setContent(html_10e9cd8ed5a54c06849479ebbf5fcef6);
marker_c68534a3155749078f786584b1cf4260.bindPopup(popup_f1a9ba69dd4544388bf85f0bad605188)
;
var marker_b32770e4b7924b70992723a8433643f1 = L.marker(
[51.5143, -0.132687],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_73de2bf1885b441b8daed353df1b0e80 = L.popup({"maxWidth": "100%"});
var html_0ec59bb61dc4416299bfa8fac88f03a9 = $(`<div id="html_0ec59bb61dc4416299bfa8fac88f03a9" style="width: 100.0%; height: 100.0%;">PizzaExpress Jazz Club</div>`)[0];
popup_73de2bf1885b441b8daed353df1b0e80.setContent(html_0ec59bb61dc4416299bfa8fac88f03a9);
marker_b32770e4b7924b70992723a8433643f1.bindPopup(popup_73de2bf1885b441b8daed353df1b0e80)
;
var marker_50990777460040a99187a2d6ee786613 = L.marker(
[51.7544, -1.25507],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_16f89ee7d4f34bcebe1b86b46e580560 = L.popup({"maxWidth": "100%"});
var html_d9daa6aeb10d458b93995fc4934209e6 = $(`<div id="html_d9daa6aeb10d458b93995fc4934209e6" style="width: 100.0%; height: 100.0%;">Sheldonian Theatre</div>`)[0];
popup_16f89ee7d4f34bcebe1b86b46e580560.setContent(html_d9daa6aeb10d458b93995fc4934209e6);
marker_50990777460040a99187a2d6ee786613.bindPopup(popup_16f89ee7d4f34bcebe1b86b46e580560)
;
var marker_68b3e6648c25475cb4b0617a49f43f43 = L.marker(
[51.7544, -1.25507],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_4962d35a99e449ca87cf51fb9b3f06fc = L.popup({"maxWidth": "100%"});
var html_e38184b079de4c30aa216d35ea9e50d6 = $(`<div id="html_e38184b079de4c30aa216d35ea9e50d6" style="width: 100.0%; height: 100.0%;">Sheldonian Theatre</div>`)[0];
popup_4962d35a99e449ca87cf51fb9b3f06fc.setContent(html_e38184b079de4c30aa216d35ea9e50d6);
marker_68b3e6648c25475cb4b0617a49f43f43.bindPopup(popup_4962d35a99e449ca87cf51fb9b3f06fc)
;
var marker_86f109257ae04865b818b6ddb521e963 = L.marker(
[51.5392, -0.1422],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_1ec3406d92a5477ea73a867677f1d231 = L.popup({"maxWidth": "100%"});
var html_6ad8931c17de48fea366a7901ea5d8c7 = $(`<div id="html_6ad8931c17de48fea366a7901ea5d8c7" style="width: 100.0%; height: 100.0%;">Camden Underworld</div>`)[0];
popup_1ec3406d92a5477ea73a867677f1d231.setContent(html_6ad8931c17de48fea366a7901ea5d8c7);
marker_86f109257ae04865b818b6ddb521e963.bindPopup(popup_1ec3406d92a5477ea73a867677f1d231)
;
var marker_1db9557d9547427b974f17094e3641c6 = L.marker(
[52.4533, -1.71944],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_bccb398aed47446ab12c89a45c8c6e8b = L.popup({"maxWidth": "100%"});
var html_a90d112992fd4740bc329c068c2ba3e2 = $(`<div id="html_a90d112992fd4740bc329c068c2ba3e2" style="width: 100.0%; height: 100.0%;">National Exhibition Centre</div>`)[0];
popup_bccb398aed47446ab12c89a45c8c6e8b.setContent(html_a90d112992fd4740bc329c068c2ba3e2);
marker_1db9557d9547427b974f17094e3641c6.bindPopup(popup_bccb398aed47446ab12c89a45c8c6e8b)
;
var marker_8814227844414a91aa8e69cd5dfa718f = L.marker(
[53.4563, -2.28676],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_cf92776631744b31b56702930344c28c = L.popup({"maxWidth": "100%"});
var html_2aa3244b4b67423a91113404feff9759 = $(`<div id="html_2aa3244b4b67423a91113404feff9759" style="width: 100.0%; height: 100.0%;">Old Trafford Cricket Ground</div>`)[0];
popup_cf92776631744b31b56702930344c28c.setContent(html_2aa3244b4b67423a91113404feff9759);
marker_8814227844414a91aa8e69cd5dfa718f.bindPopup(popup_cf92776631744b31b56702930344c28c)
;
var marker_3f277d4a410d48d9b2d48251e5b410bb = L.marker(
[53.196, -2.89],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_d33d03887a3140868ff339a6d20de7ba = L.popup({"maxWidth": "100%"});
var html_6cb724787e354258ba7ed52b27257e9f = $(`<div id="html_6cb724787e354258ba7ed52b27257e9f" style="width: 100.0%; height: 100.0%;">Northgate Arena</div>`)[0];
popup_d33d03887a3140868ff339a6d20de7ba.setContent(html_6cb724787e354258ba7ed52b27257e9f);
marker_3f277d4a410d48d9b2d48251e5b410bb.bindPopup(popup_d33d03887a3140868ff339a6d20de7ba)
;
var marker_414014e1f4fd49faaf953dcbced6ae62 = L.marker(
[51.5252, -0.0940583],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_3072fea84034448eabf816b8b87a20af = L.popup({"maxWidth": "100%"});
var html_3fb71bb6fb1742c39321818d44112290 = $(`<div id="html_3fb71bb6fb1742c39321818d44112290" style="width: 100.0%; height: 100.0%;">St Luke Old Street</div>`)[0];
popup_3072fea84034448eabf816b8b87a20af.setContent(html_3fb71bb6fb1742c39321818d44112290);
marker_414014e1f4fd49faaf953dcbced6ae62.bindPopup(popup_3072fea84034448eabf816b8b87a20af)
;
var marker_765e31a553ab42a3962deaccf77b94a7 = L.marker(
[51.7708, 0.0894444],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_7ea42b9a158e435986a8368a06d6ecbb = L.popup({"maxWidth": "100%"});
var html_0f5bf5024021453d94c540422a98e4e2 = $(`<div id="html_0f5bf5024021453d94c540422a98e4e2" style="width: 100.0%; height: 100.0%;">The Square, Harlow</div>`)[0];
popup_7ea42b9a158e435986a8368a06d6ecbb.setContent(html_0f5bf5024021453d94c540422a98e4e2);
marker_765e31a553ab42a3962deaccf77b94a7.bindPopup(popup_7ea42b9a158e435986a8368a06d6ecbb)
;
var marker_fde77f1f2aae420e96e0539f155a8a0a = L.marker(
[51.4772, -2.58416],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_121dddb549c74818860c9783cdf1a924 = L.popup({"maxWidth": "100%"});
var html_83383e32a9ff4f5ba1f24073dc7a9985 = $(`<div id="html_83383e32a9ff4f5ba1f24073dc7a9985" style="width: 100.0%; height: 100.0%;">Bristol County Ground</div>`)[0];
popup_121dddb549c74818860c9783cdf1a924.setContent(html_83383e32a9ff4f5ba1f24073dc7a9985);
marker_fde77f1f2aae420e96e0539f155a8a0a.bindPopup(popup_121dddb549c74818860c9783cdf1a924)
;
var marker_e7b1287f4bca42de8c75c147c539e7e6 = L.marker(
[52.2042, 0.1198],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_af2fad20b9ae40ff8b49b7347c09af73 = L.popup({"maxWidth": "100%"});
var html_b0ecf6f822b945bba87d1ec6c99f5447 = $(`<div id="html_b0ecf6f822b945bba87d1ec6c99f5447" style="width: 100.0%; height: 100.0%;">Cambridge Corn Exchange</div>`)[0];
popup_af2fad20b9ae40ff8b49b7347c09af73.setContent(html_b0ecf6f822b945bba87d1ec6c99f5447);
marker_e7b1287f4bca42de8c75c147c539e7e6.bindPopup(popup_af2fad20b9ae40ff8b49b7347c09af73)
;
var marker_06a5a4da68bc4f549879f71635add60d = L.marker(
[50.4726, -4.5565],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_be61002d20e944298c6e00162ef1db1a = L.popup({"maxWidth": "100%"});
var html_3ac7e8bb5cb54edb935001e4f0f73343 = $(`<div id="html_3ac7e8bb5cb54edb935001e4f0f73343" style="width: 100.0%; height: 100.0%;">Carnglaze Caverns</div>`)[0];
popup_be61002d20e944298c6e00162ef1db1a.setContent(html_3ac7e8bb5cb54edb935001e4f0f73343);
marker_06a5a4da68bc4f549879f71635add60d.bindPopup(popup_be61002d20e944298c6e00162ef1db1a)
;
var marker_36c9483c238440d2a1e58cde3726dd85 = L.marker(
[51.4633, -0.3025],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_737731f4515d441f812da80fe09988b9 = L.popup({"maxWidth": "100%"});
var html_25ea789f9e3345b8bd453252bb22c89f = $(`<div id="html_25ea789f9e3345b8bd453252bb22c89f" style="width: 100.0%; height: 100.0%;">Crawdaddy Club</div>`)[0];
popup_737731f4515d441f812da80fe09988b9.setContent(html_25ea789f9e3345b8bd453252bb22c89f);
marker_36c9483c238440d2a1e58cde3726dd85.bindPopup(popup_737731f4515d441f812da80fe09988b9)
;
var marker_88c2a72826454f81b780be24e8c8180f = L.marker(
[51.4798, -0.17834],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_0e205b1551ae4fdd8aab0dd559af0392 = L.popup({"maxWidth": "100%"});
var html_813906aa5b18452eadf982ab7be49258 = $(`<div id="html_813906aa5b18452eadf982ab7be49258" style="width: 100.0%; height: 100.0%;">Cremorne Gardens, London</div>`)[0];
popup_0e205b1551ae4fdd8aab0dd559af0392.setContent(html_813906aa5b18452eadf982ab7be49258);
marker_88c2a72826454f81b780be24e8c8180f.bindPopup(popup_0e205b1551ae4fdd8aab0dd559af0392)
;
var marker_848919ca2a9040c4be2310b4a4cd3d4d = L.marker(
[53.3983, -1.42444],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_f9208135af864ed794593a48364d67be = L.popup({"maxWidth": "100%"});
var html_653356e532f64e259d7bfca40e0bca8e = $(`<div id="html_653356e532f64e259d7bfca40e0bca8e" style="width: 100.0%; height: 100.0%;">English Institute of Sport, Sheffield</div>`)[0];
popup_f9208135af864ed794593a48364d67be.setContent(html_653356e532f64e259d7bfca40e0bca8e);
marker_848919ca2a9040c4be2310b4a4cd3d4d.bindPopup(popup_f9208135af864ed794593a48364d67be)
;
var marker_e714e10103224b3f8b144c7924260e96 = L.marker(
[53.8, -1.5408],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_2b47328349994a6fb2089d19d608b736 = L.popup({"maxWidth": "100%"});
var html_4f0685eea604482b86a0d56eab442bd7 = $(`<div id="html_4f0685eea604482b86a0d56eab442bd7" style="width: 100.0%; height: 100.0%;">Grand Theatre, Leeds</div>`)[0];
popup_2b47328349994a6fb2089d19d608b736.setContent(html_4f0685eea604482b86a0d56eab442bd7);
marker_e714e10103224b3f8b144c7924260e96.bindPopup(popup_2b47328349994a6fb2089d19d608b736)
;
var marker_37965a5ac6b54a4cbb3eca008eeca66a = L.marker(
[50.779, -1.08539],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_228d9253b5874ed69c4070fd71b0bdbb = L.popup({"maxWidth": "100%"});
var html_ec5114ea127c4437af42692a374a23d2 = $(`<div id="html_ec5114ea127c4437af42692a374a23d2" style="width: 100.0%; height: 100.0%;">Portsmouth Pyramids Centre</div>`)[0];
popup_228d9253b5874ed69c4070fd71b0bdbb.setContent(html_ec5114ea127c4437af42692a374a23d2);
marker_37965a5ac6b54a4cbb3eca008eeca66a.bindPopup(popup_228d9253b5874ed69c4070fd71b0bdbb)
;
var marker_ae26f805e6f543d4bd787d993dc90938 = L.marker(
[54.6205, -1.0726],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_cedce842d0a241868eddfa1e0e0f7b8b = L.popup({"maxWidth": "100%"});
var html_5fc5e864d0e1452eaf6039ef0c51bfb0 = $(`<div id="html_5fc5e864d0e1452eaf6039ef0c51bfb0" style="width: 100.0%; height: 100.0%;">Redcar Jazz Club</div>`)[0];
popup_cedce842d0a241868eddfa1e0e0f7b8b.setContent(html_5fc5e864d0e1452eaf6039ef0c51bfb0);
marker_ae26f805e6f543d4bd787d993dc90938.bindPopup(popup_cedce842d0a241868eddfa1e0e0f7b8b)
;
var marker_83f6e72fe3c840ffaee31ff3b01abb1d = L.marker(
[51.485, -0.61],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_4723d551606a4e1aae318dedbc31eb16 = L.popup({"maxWidth": "100%"});
var html_47b02c9bb0784c5c9bf447e64203e053 = $(`<div id="html_47b02c9bb0784c5c9bf447e64203e053" style="width: 100.0%; height: 100.0%;">Ricky-Tick</div>`)[0];
popup_4723d551606a4e1aae318dedbc31eb16.setContent(html_47b02c9bb0784c5c9bf447e64203e053);
marker_83f6e72fe3c840ffaee31ff3b01abb1d.bindPopup(popup_4723d551606a4e1aae318dedbc31eb16)
;
var marker_8524651ff47c473a90e1107c4f7d3f1e = L.marker(
[51.5431, -0.149167],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_80efcb24a52f4e21b306c77d6130afc4 = L.popup({"maxWidth": "100%"});
var html_7f638678057b4876849f9bfdffb2fa82 = $(`<div id="html_7f638678057b4876849f9bfdffb2fa82" style="width: 100.0%; height: 100.0%;">The Barfly</div>`)[0];
popup_80efcb24a52f4e21b306c77d6130afc4.setContent(html_7f638678057b4876849f9bfdffb2fa82);
marker_8524651ff47c473a90e1107c4f7d3f1e.bindPopup(popup_80efcb24a52f4e21b306c77d6130afc4)
;
var marker_c3867494a33e4da6bd4fe871e1e9efc4 = L.marker(
[52.6313, -1.1372],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_3ee37f59bda14b44a8d4558e92472160 = L.popup({"maxWidth": "100%"});
var html_0012a41236204dbca8e6c80f2c673131 = $(`<div id="html_0012a41236204dbca8e6c80f2c673131" style="width: 100.0%; height: 100.0%;">The Charlotte</div>`)[0];
popup_3ee37f59bda14b44a8d4558e92472160.setContent(html_0012a41236204dbca8e6c80f2c673131);
marker_c3867494a33e4da6bd4fe871e1e9efc4.bindPopup(popup_3ee37f59bda14b44a8d4558e92472160)
;
var marker_a3564536d62e4b61821fe98eadb9c24f = L.marker(
[51.2728, 0.523333],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_8e1f16d62d0b4b36b30915024b5b8162 = L.popup({"maxWidth": "100%"});
var html_cc6fe0ca23114b5e8a741f96bd3829dc = $(`<div id="html_cc6fe0ca23114b5e8a741f96bd3829dc" style="width: 100.0%; height: 100.0%;">The Loft (Kent)</div>`)[0];
popup_8e1f16d62d0b4b36b30915024b5b8162.setContent(html_cc6fe0ca23114b5e8a741f96bd3829dc);
marker_a3564536d62e4b61821fe98eadb9c24f.bindPopup(popup_8e1f16d62d0b4b36b30915024b5b8162)
;
var marker_36757953541944858e67929cc3fc7a96 = L.marker(
[51.549, -0.076],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_3e945f7547a649ddad380536a25c3887 = L.popup({"maxWidth": "100%"});
var html_3b52787174514c41a275f60e1bd2fc58 = $(`<div id="html_3b52787174514c41a275f60e1bd2fc58" style="width: 100.0%; height: 100.0%;">Vortex Jazz Club</div>`)[0];
popup_3e945f7547a649ddad380536a25c3887.setContent(html_3b52787174514c41a275f60e1bd2fc58);
marker_36757953541944858e67929cc3fc7a96.bindPopup(popup_3e945f7547a649ddad380536a25c3887)
;
var marker_a44f90c894914d518cc856b2fa9d1e1f = L.marker(
[52.9544, -1.15639],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_331280115a5743ea850404281386010b = L.popup({"maxWidth": "100%"});
var html_5aed180b04224083b98cc4125268e8dc = $(`<div id="html_5aed180b04224083b98cc4125268e8dc" style="width: 100.0%; height: 100.0%;">Albert Hall, Nottingham</div>`)[0];
popup_331280115a5743ea850404281386010b.setContent(html_5aed180b04224083b98cc4125268e8dc);
marker_a44f90c894914d518cc856b2fa9d1e1f.bindPopup(popup_331280115a5743ea850404281386010b)
;
var marker_015682d9d3fc4ecea973f990e167faf4 = L.marker(
[53.81, -1.57],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_4c64df97a89b4cc39299ef5a69478b20 = L.popup({"maxWidth": "100%"});
var html_9a5335dc30f445c8a53b3cabd7914667 = $(`<div id="html_9a5335dc30f445c8a53b3cabd7914667" style="width: 100.0%; height: 100.0%;">Brudenell Social Club</div>`)[0];
popup_4c64df97a89b4cc39299ef5a69478b20.setContent(html_9a5335dc30f445c8a53b3cabd7914667);
marker_015682d9d3fc4ecea973f990e167faf4.bindPopup(popup_4c64df97a89b4cc39299ef5a69478b20)
;
var marker_05aaea60adce4731bec2523954bfbe90 = L.marker(
[51.5143, -0.053],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_9e69d7bcd0d444e980845142be99032b = L.popup({"maxWidth": "100%"});
var html_ddf5224a30604315b2a167188c34e8b3 = $(`<div id="html_ddf5224a30604315b2a167188c34e8b3" style="width: 100.0%; height: 100.0%;">George Tavern</div>`)[0];
popup_9e69d7bcd0d444e980845142be99032b.setContent(html_ddf5224a30604315b2a167188c34e8b3);
marker_05aaea60adce4731bec2523954bfbe90.bindPopup(popup_9e69d7bcd0d444e980845142be99032b)
;
var marker_4f221b4340de4fd295a7386cea2b2920 = L.marker(
[51.4632, -2.58952],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_e5733a867c74406d9af1de567e37af0a = L.popup({"maxWidth": "100%"});
var html_8c28980092e448b6a7464e2080f0eccc = $(`<div id="html_8c28980092e448b6a7464e2080f0eccc" style="width: 100.0%; height: 100.0%;">Lakota (club)</div>`)[0];
popup_e5733a867c74406d9af1de567e37af0a.setContent(html_8c28980092e448b6a7464e2080f0eccc);
marker_4f221b4340de4fd295a7386cea2b2920.bindPopup(popup_e5733a867c74406d9af1de567e37af0a)
;
var marker_4cc152f541154742bdb9227667e8cb98 = L.marker(
[51.4632, -2.58952],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_83c9f2ef088d46418aa22b293eba342e = L.popup({"maxWidth": "100%"});
var html_1b16902c8f6d4f36ada134e0a508aff7 = $(`<div id="html_1b16902c8f6d4f36ada134e0a508aff7" style="width: 100.0%; height: 100.0%;">Lakota (club)</div>`)[0];
popup_83c9f2ef088d46418aa22b293eba342e.setContent(html_1b16902c8f6d4f36ada134e0a508aff7);
marker_4cc152f541154742bdb9227667e8cb98.bindPopup(popup_83c9f2ef088d46418aa22b293eba342e)
;
var marker_b74d6d27781c4ede983ad6ec46283ed7 = L.marker(
[53.802, -1.54707],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_38bf5a4d926d4df2a4df48ef848a8424 = L.popup({"maxWidth": "100%"});
var html_de0e94503c2247e1a70dad77187ac0eb = $(`<div id="html_de0e94503c2247e1a70dad77187ac0eb" style="width: 100.0%; height: 100.0%;">O2 Academy Leeds</div>`)[0];
popup_38bf5a4d926d4df2a4df48ef848a8424.setContent(html_de0e94503c2247e1a70dad77187ac0eb);
marker_b74d6d27781c4ede983ad6ec46283ed7.bindPopup(popup_38bf5a4d926d4df2a4df48ef848a8424)
;
var marker_955857a5436a4f9888d44e139c8c1732 = L.marker(
[53.382, -1.4655],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_45bb14efd10548c49e549d18d53f3386 = L.popup({"maxWidth": "100%"});
var html_01bc07b0b2614d038698448512237b65 = $(`<div id="html_01bc07b0b2614d038698448512237b65" style="width: 100.0%; height: 100.0%;">O2 Academy Sheffield</div>`)[0];
popup_45bb14efd10548c49e549d18d53f3386.setContent(html_01bc07b0b2614d038698448512237b65);
marker_955857a5436a4f9888d44e139c8c1732.bindPopup(popup_45bb14efd10548c49e549d18d53f3386)
;
var marker_95586e0da6814405988c996f3f9b1780 = L.marker(
[54.0793, -0.19643],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_dcfca30fa9f24fe19b225f51fe050831 = L.popup({"maxWidth": "100%"});
var html_26e8677053e746e7be04d7f7d08db1da = $(`<div id="html_26e8677053e746e7be04d7f7d08db1da" style="width: 100.0%; height: 100.0%;">The Spa, Bridlington</div>`)[0];
popup_dcfca30fa9f24fe19b225f51fe050831.setContent(html_26e8677053e746e7be04d7f7d08db1da);
marker_95586e0da6814405988c996f3f9b1780.bindPopup(popup_dcfca30fa9f24fe19b225f51fe050831)
;
var marker_975662cfa5e948699bffa520e59a5524 = L.marker(
[51.4889, -0.191667],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_e2d5f2da2d5141369df5cee0b9ce6307 = L.popup({"maxWidth": "100%"});
var html_8f0360597cbf43f0adc6defc46ae665c = $(`<div id="html_8f0360597cbf43f0adc6defc46ae665c" style="width: 100.0%; height: 100.0%;">The Troubadour, London</div>`)[0];
popup_e2d5f2da2d5141369df5cee0b9ce6307.setContent(html_8f0360597cbf43f0adc6defc46ae665c);
marker_975662cfa5e948699bffa520e59a5524.bindPopup(popup_e2d5f2da2d5141369df5cee0b9ce6307)
;
var marker_4271cd0d179e432bbf19681368b8a16e = L.marker(
[51.4538, -0.12191],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_4b56273d0f1647d4ab8474ef1f76a72c = L.popup({"maxWidth": "100%"});
var html_f22a27ea782045388a12f17bafeb0985 = $(`<div id="html_f22a27ea782045388a12f17bafeb0985" style="width: 100.0%; height: 100.0%;">The Windmill, Brixton</div>`)[0];
popup_4b56273d0f1647d4ab8474ef1f76a72c.setContent(html_f22a27ea782045388a12f17bafeb0985);
marker_4271cd0d179e432bbf19681368b8a16e.bindPopup(popup_4b56273d0f1647d4ab8474ef1f76a72c)
;
var marker_032812762efc430bb80313e2e0145ccf = L.marker(
[51.424, -0.0691],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_6d69dbef650a4c2383420aae3e838edf = L.popup({"maxWidth": "100%"});
var html_0522ecacdd34467d96e4d3750f9168bb = $(`<div id="html_0522ecacdd34467d96e4d3750f9168bb" style="width: 100.0%; height: 100.0%;">Crystal Palace Park Concert Platform</div>`)[0];
popup_6d69dbef650a4c2383420aae3e838edf.setContent(html_0522ecacdd34467d96e4d3750f9168bb);
marker_032812762efc430bb80313e2e0145ccf.bindPopup(popup_6d69dbef650a4c2383420aae3e838edf)
;
var marker_dec35774eb4b44069b3581e63f1d26a1 = L.marker(
[50.7645, 0.289444],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_04e14be1b85e42e28183f540517a0f8c = L.popup({"maxWidth": "100%"});
var html_2d44f19bbf2d47b6accd3a7a8b297176 = $(`<div id="html_2d44f19bbf2d47b6accd3a7a8b297176" style="width: 100.0%; height: 100.0%;">Eastbourne Bandstand</div>`)[0];
popup_04e14be1b85e42e28183f540517a0f8c.setContent(html_2d44f19bbf2d47b6accd3a7a8b297176);
marker_dec35774eb4b44069b3581e63f1d26a1.bindPopup(popup_04e14be1b85e42e28183f540517a0f8c)
;
var marker_333173d1948e44e580c48986453e07f0 = L.marker(
[51.4533, -2.60167],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_f1300746539947f6921ec9a05f68d8c6 = L.popup({"maxWidth": "100%"});
var html_468b9ce56e3347a1bf5abbc880cbd1fc = $(`<div id="html_468b9ce56e3347a1bf5abbc880cbd1fc" style="width: 100.0%; height: 100.0%;">Mauretania Public House</div>`)[0];
popup_f1300746539947f6921ec9a05f68d8c6.setContent(html_468b9ce56e3347a1bf5abbc880cbd1fc);
marker_333173d1948e44e580c48986453e07f0.bindPopup(popup_f1300746539947f6921ec9a05f68d8c6)
;
var marker_425d7a9600084af284ddf77cbd05edab = L.marker(
[51.5608, -0.123611],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_fdedc5d4f67f417fbcb5c1b0c9d2f7bd = L.popup({"maxWidth": "100%"});
var html_a0035c6ee0684836b60b04a513f6f59e = $(`<div id="html_a0035c6ee0684836b60b04a513f6f59e" style="width: 100.0%; height: 100.0%;">Nambucca (venue)</div>`)[0];
popup_fdedc5d4f67f417fbcb5c1b0c9d2f7bd.setContent(html_a0035c6ee0684836b60b04a513f6f59e);
marker_425d7a9600084af284ddf77cbd05edab.bindPopup(popup_fdedc5d4f67f417fbcb5c1b0c9d2f7bd)
;
var marker_3f951a3fc69945519a9b6bf1f79e6106 = L.marker(
[52.6316, 1.2878],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_730ca8e1380e43a991dee00a0ae16c32 = L.popup({"maxWidth": "100%"});
var html_91066217b5d440f0963cdb64a8e93ec2 = $(`<div id="html_91066217b5d440f0963cdb64a8e93ec2" style="width: 100.0%; height: 100.0%;">Norwich Arts Centre</div>`)[0];
popup_730ca8e1380e43a991dee00a0ae16c32.setContent(html_91066217b5d440f0963cdb64a8e93ec2);
marker_3f951a3fc69945519a9b6bf1f79e6106.bindPopup(popup_730ca8e1380e43a991dee00a0ae16c32)
;
var marker_20de4d0046ba45e68ef7c7708056babc = L.marker(
[51.912, -2.06735],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_ef1f9652d6f04e0e87aeb4dbb0d847c4 = L.popup({"maxWidth": "100%"});
var html_767334ab40ea4c3695c0a21a19fa9570 = $(`<div id="html_767334ab40ea4c3695c0a21a19fa9570" style="width: 100.0%; height: 100.0%;">Pittville Pump Room</div>`)[0];
popup_ef1f9652d6f04e0e87aeb4dbb0d847c4.setContent(html_767334ab40ea4c3695c0a21a19fa9570);
marker_20de4d0046ba45e68ef7c7708056babc.bindPopup(popup_ef1f9652d6f04e0e87aeb4dbb0d847c4)
;
var marker_918b9c7602b041d9810762d96e7a5381 = L.marker(
[51.5117, -0.0765278],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_89396a5ad10f4d0fb5349a275d8aeb2c = L.popup({"maxWidth": "100%"});
var html_ade4c0c758ad4593a1ce93939ee0e38f = $(`<div id="html_ade4c0c758ad4593a1ce93939ee0e38f" style="width: 100.0%; height: 100.0%;">The Wayout Club</div>`)[0];
popup_89396a5ad10f4d0fb5349a275d8aeb2c.setContent(html_ade4c0c758ad4593a1ce93939ee0e38f);
marker_918b9c7602b041d9810762d96e7a5381.bindPopup(popup_89396a5ad10f4d0fb5349a275d8aeb2c)
;
var marker_37fe0cbd5da4472692132d7e4e1cebba = L.marker(
[51.4887, -0.2372],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_c3e8095baf7445c3a941223e9dd104a3 = L.popup({"maxWidth": "100%"});
var html_df82b299f7cb41548b3705975830757e = $(`<div id="html_df82b299f7cb41548b3705975830757e" style="width: 100.0%; height: 100.0%;">Wathen Hall</div>`)[0];
popup_c3e8095baf7445c3a941223e9dd104a3.setContent(html_df82b299f7cb41548b3705975830757e);
marker_37fe0cbd5da4472692132d7e4e1cebba.bindPopup(popup_c3e8095baf7445c3a941223e9dd104a3)
;
var marker_b98372e7d0b24258acc420548837fc1c = L.marker(
[53.4753, -2.24583],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_e1dbe97dab814fc2816d292b90fd9906 = L.popup({"maxWidth": "100%"});
var html_ba04733d83664a3e92d6a252eea2fad3 = $(`<div id="html_ba04733d83664a3e92d6a252eea2fad3" style="width: 100.0%; height: 100.0%;">Bridgewater Hall</div>`)[0];
popup_e1dbe97dab814fc2816d292b90fd9906.setContent(html_ba04733d83664a3e92d6a252eea2fad3);
marker_b98372e7d0b24258acc420548837fc1c.bindPopup(popup_e1dbe97dab814fc2816d292b90fd9906)
;
var marker_b257ed2c9f164bb0bb3bcb14d8f91673 = L.marker(
[51.3722, -0.0958333],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_6527a2c0751c4cddb50ed49b745f64e5 = L.popup({"maxWidth": "100%"});
var html_871ad6337a984458993012f50cc3211b = $(`<div id="html_871ad6337a984458993012f50cc3211b" style="width: 100.0%; height: 100.0%;">Fairfield Halls</div>`)[0];
popup_6527a2c0751c4cddb50ed49b745f64e5.setContent(html_871ad6337a984458993012f50cc3211b);
marker_b257ed2c9f164bb0bb3bcb14d8f91673.bindPopup(popup_6527a2c0751c4cddb50ed49b745f64e5)
;
var marker_4bf157667c2f40339e7918b8067acbeb = L.marker(
[51.4907, -0.224458],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_f8221d17684c493a8ed173abe0007087 = L.popup({"maxWidth": "100%"});
var html_4b9f834e6049466b89847d0384055f18 = $(`<div id="html_4b9f834e6049466b89847d0384055f18" style="width: 100.0%; height: 100.0%;">Hammersmith Apollo</div>`)[0];
popup_f8221d17684c493a8ed173abe0007087.setContent(html_4b9f834e6049466b89847d0384055f18);
marker_4bf157667c2f40339e7918b8067acbeb.bindPopup(popup_f8221d17684c493a8ed173abe0007087)
;
var marker_f40c754d8432442dba9976627c2c563e = L.marker(
[51.5158, -0.130556],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_236a69ef73594e78a9fb236d5bb6910e = L.popup({"maxWidth": "100%"});
var html_5c2769bda70842da88dd4a498a97a0ff = $(`<div id="html_5c2769bda70842da88dd4a498a97a0ff" style="width: 100.0%; height: 100.0%;">London Astoria</div>`)[0];
popup_236a69ef73594e78a9fb236d5bb6910e.setContent(html_5c2769bda70842da88dd4a498a97a0ff);
marker_f40c754d8432442dba9976627c2c563e.bindPopup(popup_236a69ef73594e78a9fb236d5bb6910e)
;
var marker_60b1fb39eb1c4934b28e8fd2bf2b5ae9 = L.marker(
[52.4529, -1.9039],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_f4a9cbaba7fb457ba5d1398864a71c54 = L.popup({"maxWidth": "100%"});
var html_96db294204234d729efcce88d9e5fc6e = $(`<div id="html_96db294204234d729efcce88d9e5fc6e" style="width: 100.0%; height: 100.0%;">Mac (Birmingham)</div>`)[0];
popup_f4a9cbaba7fb457ba5d1398864a71c54.setContent(html_96db294204234d729efcce88d9e5fc6e);
marker_60b1fb39eb1c4934b28e8fd2bf2b5ae9.bindPopup(popup_f4a9cbaba7fb457ba5d1398864a71c54)
;
var marker_04204fa3adb04497baa658f9b91d7fe0 = L.marker(
[54.9717, -1.6051],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_04f1553ac9df42a8a11a962030164a0b = L.popup({"maxWidth": "100%"});
var html_25c5f481b59b4907a74f4e5063b1bc4c = $(`<div id="html_25c5f481b59b4907a74f4e5063b1bc4c" style="width: 100.0%; height: 100.0%;">Riverside (music venue)</div>`)[0];
popup_04f1553ac9df42a8a11a962030164a0b.setContent(html_25c5f481b59b4907a74f4e5063b1bc4c);
marker_04204fa3adb04497baa658f9b91d7fe0.bindPopup(popup_04f1553ac9df42a8a11a962030164a0b)
;
var marker_01312d16eb2749ea9ce826ec039ec641 = L.marker(
[51.4883, -0.228083],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_980006411cba4f15a1e268f1ac4228a8 = L.popup({"maxWidth": "100%"});
var html_58b6040e81a246a29bca9ccc70b697ef = $(`<div id="html_58b6040e81a246a29bca9ccc70b697ef" style="width: 100.0%; height: 100.0%;">Riverside Studios</div>`)[0];
popup_980006411cba4f15a1e268f1ac4228a8.setContent(html_58b6040e81a246a29bca9ccc70b697ef);
marker_01312d16eb2749ea9ce826ec039ec641.bindPopup(popup_980006411cba4f15a1e268f1ac4228a8)
;
var marker_5477246987e24d07812dca93027710eb = L.marker(
[40.7647, -73.9778],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_69943d652d8d46afaee38246588bc54b = L.popup({"maxWidth": "100%"});
var html_e51a8b63fe774826a891d4dcb18263d6 = $(`<div id="html_e51a8b63fe774826a891d4dcb18263d6" style="width: 100.0%; height: 100.0%;">Steinway Hall</div>`)[0];
popup_69943d652d8d46afaee38246588bc54b.setContent(html_e51a8b63fe774826a891d4dcb18263d6);
marker_5477246987e24d07812dca93027710eb.bindPopup(popup_69943d652d8d46afaee38246588bc54b)
;
var marker_46b013121b4d443aae8a25216f1a6aa1 = L.marker(
[51.5522, -0.1422],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_9f0173bc5776430586070c3deb8615cc = L.popup({"maxWidth": "100%"});
var html_11622326eb584d1c9c029d34d353ad4d = $(`<div id="html_11622326eb584d1c9c029d34d353ad4d" style="width: 100.0%; height: 100.0%;">The Forum, London</div>`)[0];
popup_9f0173bc5776430586070c3deb8615cc.setContent(html_11622326eb584d1c9c029d34d353ad4d);
marker_46b013121b4d443aae8a25216f1a6aa1.bindPopup(popup_9f0173bc5776430586070c3deb8615cc)
;
var marker_afc592177ca1465391e08b9cb1589237 = L.marker(
[51.505, -0.0791667],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_e1ae53c770ca4385bb1df779d16147d6 = L.popup({"maxWidth": "100%"});
var html_1a8cdf5bb18146f29554fc28c9759bdb = $(`<div id="html_1a8cdf5bb18146f29554fc28c9759bdb" style="width: 100.0%; height: 100.0%;">The Scoop</div>`)[0];
popup_e1ae53c770ca4385bb1df779d16147d6.setContent(html_1a8cdf5bb18146f29554fc28c9759bdb);
marker_afc592177ca1465391e08b9cb1589237.bindPopup(popup_e1ae53c770ca4385bb1df779d16147d6)
;
var marker_e9903a7808394deba8ad832a96684a5b = L.marker(
[53.0226, -2.1805],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_0b153a29b2d241eb9e06bf16d5f636db = L.popup({"maxWidth": "100%"});
var html_5b4ad196246242dd8b95af54684def70 = $(`<div id="html_5b4ad196246242dd8b95af54684def70" style="width: 100.0%; height: 100.0%;">The Underground (Stoke concert venue)</div>`)[0];
popup_0b153a29b2d241eb9e06bf16d5f636db.setContent(html_5b4ad196246242dd8b95af54684def70);
marker_e9903a7808394deba8ad832a96684a5b.bindPopup(popup_0b153a29b2d241eb9e06bf16d5f636db)
;
var marker_cdd9d26abf4d4c528db8ecadaa29ba49 = L.marker(
[51.1269, 0.258333],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_e110e97c60c745ff841591a3091eb87e = L.popup({"maxWidth": "100%"});
var html_e9c3d56600424526866f6500f95e7110 = $(`<div id="html_e9c3d56600424526866f6500f95e7110" style="width: 100.0%; height: 100.0%;">Tunbridge Wells Forum</div>`)[0];
popup_e110e97c60c745ff841591a3091eb87e.setContent(html_e9c3d56600424526866f6500f95e7110);
marker_cdd9d26abf4d4c528db8ecadaa29ba49.bindPopup(popup_e110e97c60c745ff841591a3091eb87e)
;
var marker_97f15ac301ed4627a4b33d03d2cc0405 = L.marker(
[52.38, -1.56138],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_ee4140f15c8d47c89798e57884cae41c = L.popup({"maxWidth": "100%"});
var html_f24866cf9c8243cb88b3d0b27c81f971 = $(`<div id="html_f24866cf9c8243cb88b3d0b27c81f971" style="width: 100.0%; height: 100.0%;">Warwick Arts Centre</div>`)[0];
popup_ee4140f15c8d47c89798e57884cae41c.setContent(html_f24866cf9c8243cb88b3d0b27c81f971);
marker_97f15ac301ed4627a4b33d03d2cc0405.bindPopup(popup_ee4140f15c8d47c89798e57884cae41c)
;
var marker_c4ea57b0e6da45cda52b2ab9c1f16121 = L.marker(
[51.5161, -0.135361],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_6305c240700b4c95ab659d115892dc20 = L.popup({"maxWidth": "100%"});
var html_9bacf31030044116be725c906b79f7bd = $(`<div id="html_9bacf31030044116be725c906b79f7bd" style="width: 100.0%; height: 100.0%;">100 Club</div>`)[0];
popup_6305c240700b4c95ab659d115892dc20.setContent(html_9bacf31030044116be725c906b79f7bd);
marker_c4ea57b0e6da45cda52b2ab9c1f16121.bindPopup(popup_6305c240700b4c95ab659d115892dc20)
;
var marker_239116bf2f114fc5971a3fe04870a1b9 = L.marker(
[51.5939, -0.13],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_055ffd0e82ae46e1a04f26b591701130 = L.popup({"maxWidth": "100%"});
var html_60b437254df246529d11d20cc7d31c0e = $(`<div id="html_60b437254df246529d11d20cc7d31c0e" style="width: 100.0%; height: 100.0%;">Alexandra Palace</div>`)[0];
popup_055ffd0e82ae46e1a04f26b591701130.setContent(html_60b437254df246529d11d20cc7d31c0e);
marker_239116bf2f114fc5971a3fe04870a1b9.bindPopup(popup_055ffd0e82ae46e1a04f26b591701130)
;
var marker_20a1c9f6889546e6b65ac2c4800340ac = L.marker(
[52.4504, -1.92773],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_276a26ee268944da873003fe601f6662 = L.popup({"maxWidth": "100%"});
var html_67231ca2476a46108917de97a30b3b98 = $(`<div id="html_67231ca2476a46108917de97a30b3b98" style="width: 100.0%; height: 100.0%;">Barber Institute of Fine Arts</div>`)[0];
popup_276a26ee268944da873003fe601f6662.setContent(html_67231ca2476a46108917de97a30b3b98);
marker_20a1c9f6889546e6b65ac2c4800340ac.bindPopup(popup_276a26ee268944da873003fe601f6662)
;
var marker_64f82776179f45b3af30ff95e143c5ea = L.marker(
[51.4633, -2.62222],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_8f447d40370f48c8845e96bbd3eb0921 = L.popup({"maxWidth": "100%"});
var html_97421f6608c14224a18552837a3f6839 = $(`<div id="html_97421f6608c14224a18552837a3f6839" style="width: 100.0%; height: 100.0%;">Bristol Zoo</div>`)[0];
popup_8f447d40370f48c8845e96bbd3eb0921.setContent(html_97421f6608c14224a18552837a3f6839);
marker_64f82776179f45b3af30ff95e143c5ea.bindPopup(popup_8f447d40370f48c8845e96bbd3eb0921)
;
var marker_06b498d8a15e4b35b334f28830ac318a = L.marker(
[51.4651, -0.114922],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_bdae4247c94644cbb038e61facddcf54 = L.popup({"maxWidth": "100%"});
var html_19209cac3f5b43b4a2a8755c46f6c7aa = $(`<div id="html_19209cac3f5b43b4a2a8755c46f6c7aa" style="width: 100.0%; height: 100.0%;">Brixton Academy</div>`)[0];
popup_bdae4247c94644cbb038e61facddcf54.setContent(html_19209cac3f5b43b4a2a8755c46f6c7aa);
marker_06b498d8a15e4b35b334f28830ac318a.bindPopup(popup_bdae4247c94644cbb038e61facddcf54)
;
var marker_c4a93e93aee149959ae8ea74504a3e51 = L.marker(
[52.6249, -1.12163],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_63e64f6708914bbf970e1a7f54c42138 = L.popup({"maxWidth": "100%"});
var html_e1c4e3fa769f4e8bb12b4baf1328ce60 = $(`<div id="html_e1c4e3fa769f4e8bb12b4baf1328ce60" style="width: 100.0%; height: 100.0%;">De Montfort Hall</div>`)[0];
popup_63e64f6708914bbf970e1a7f54c42138.setContent(html_e1c4e3fa769f4e8bb12b4baf1328ce60);
marker_c4a93e93aee149959ae8ea74504a3e51.bindPopup(popup_63e64f6708914bbf970e1a7f54c42138)
;
var marker_f25dbdb7ef234758a63387cde393699b = L.marker(
[51.5397, -0.143056],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_7c34b350ea3242be904928df6f65eea6 = L.popup({"maxWidth": "100%"});
var html_1e78a1be52c944cc8e013c7482b877af = $(`<div id="html_1e78a1be52c944cc8e013c7482b877af" style="width: 100.0%; height: 100.0%;">Electric Ballroom</div>`)[0];
popup_7c34b350ea3242be904928df6f65eea6.setContent(html_1e78a1be52c944cc8e013c7482b877af);
marker_f25dbdb7ef234758a63387cde393699b.bindPopup(popup_7c34b350ea3242be904928df6f65eea6)
;
var marker_77313c0efa31414e96056ba0a0b41bb5 = L.marker(
[50.8783, 0.0638889],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_04947aeedccd488885f8321e984f9def = L.popup({"maxWidth": "100%"});
var html_146ab62bcaa74b788d6a3b396dbf38aa = $(`<div id="html_146ab62bcaa74b788d6a3b396dbf38aa" style="width: 100.0%; height: 100.0%;">Glyndebourne</div>`)[0];
popup_04947aeedccd488885f8321e984f9def.setContent(html_146ab62bcaa74b788d6a3b396dbf38aa);
marker_77313c0efa31414e96056ba0a0b41bb5.bindPopup(popup_04947aeedccd488885f8321e984f9def)
;
var marker_143b3bd3320c4c41b2c71132122147e4 = L.marker(
[51.9203, -2.0578],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_4925505a4ada44cf84c86d0a99a23536 = L.popup({"maxWidth": "100%"});
var html_76b9960205024b428d32c8697bd3da58 = $(`<div id="html_76b9960205024b428d32c8697bd3da58" style="width: 100.0%; height: 100.0%;">Greenbelt Festival</div>`)[0];
popup_4925505a4ada44cf84c86d0a99a23536.setContent(html_76b9960205024b428d32c8697bd3da58);
marker_143b3bd3320c4c41b2c71132122147e4.bindPopup(popup_4925505a4ada44cf84c86d0a99a23536)
;
var marker_1c5ce77df10d40f791be0e5b324b170b = L.marker(
[52.4735, -1.89985],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_66f3af5a733141cdbf374647aaeaad75 = L.popup({"maxWidth": "100%"});
var html_8474ad05918446ff83b6114115084389 = $(`<div id="html_8474ad05918446ff83b6114115084389" style="width: 100.0%; height: 100.0%;">O2 Academy Birmingham</div>`)[0];
popup_66f3af5a733141cdbf374647aaeaad75.setContent(html_8474ad05918446ff83b6114115084389);
marker_1c5ce77df10d40f791be0e5b324b170b.bindPopup(popup_66f3af5a733141cdbf374647aaeaad75)
;
var marker_8e38fcb678db4848afa835728bbde80c = L.marker(
[51.5432, -0.1519],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_1b4475bc383f46179854d1173458eeee = L.popup({"maxWidth": "100%"});
var html_36f310cb7dff420abc52bf7d01270266 = $(`<div id="html_36f310cb7dff420abc52bf7d01270266" style="width: 100.0%; height: 100.0%;">Roundhouse (venue)</div>`)[0];
popup_1b4475bc383f46179854d1173458eeee.setContent(html_36f310cb7dff420abc52bf7d01270266);
marker_8e38fcb678db4848afa835728bbde80c.bindPopup(popup_1b4475bc383f46179854d1173458eeee)
;
var marker_ce5f873f35bb40d6b2f83c533145a2b6 = L.marker(
[51.5129, -0.122767],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_7b9befa6f4a5421f98636ca1cc7f9efd = L.popup({"maxWidth": "100%"});
var html_b528550ad4fa4b37b7dd3c3e7b35673c = $(`<div id="html_b528550ad4fa4b37b7dd3c3e7b35673c" style="width: 100.0%; height: 100.0%;">Royal Opera House</div>`)[0];
popup_7b9befa6f4a5421f98636ca1cc7f9efd.setContent(html_b528550ad4fa4b37b7dd3c3e7b35673c);
marker_ce5f873f35bb40d6b2f83c533145a2b6.bindPopup(popup_7b9befa6f4a5421f98636ca1cc7f9efd)
;
var marker_83fe4e73e0334139a169f15397ad1286 = L.marker(
[54.9677, -1.602],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_8746e59a6703484ca45ebb7b40a08b39 = L.popup({"maxWidth": "100%"});
var html_ecabac2cd6e54493a143002acb256177 = $(`<div id="html_ecabac2cd6e54493a143002acb256177" style="width: 100.0%; height: 100.0%;">Sage Gateshead</div>`)[0];
popup_8746e59a6703484ca45ebb7b40a08b39.setContent(html_ecabac2cd6e54493a143002acb256177);
marker_83fe4e73e0334139a169f15397ad1286.bindPopup(popup_8746e59a6703484ca45ebb7b40a08b39)
;
var marker_fa3d77d5ba804860be30bfc58faafeeb = L.marker(
[52.499, -1.8946],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_530cb8aba9304708ba60bf362720cffd = L.popup({"maxWidth": "100%"});
var html_b75cccb8996e43339b4c8fe225677dfc = $(`<div id="html_b75cccb8996e43339b4c8fe225677dfc" style="width: 100.0%; height: 100.0%;">The Drum (Arts Centre)</div>`)[0];
popup_530cb8aba9304708ba60bf362720cffd.setContent(html_b75cccb8996e43339b4c8fe225677dfc);
marker_fa3d77d5ba804860be30bfc58faafeeb.bindPopup(popup_530cb8aba9304708ba60bf362720cffd)
;
var marker_0fc25af5537741359512dfaa121b18d7 = L.marker(
[53.4743, -2.24768],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_55a86dc03747411b9d60d781b22adb03 = L.popup({"maxWidth": "100%"});
var html_777e00e03ca04017a26ca708a07463dc = $(`<div id="html_777e00e03ca04017a26ca708a07463dc" style="width: 100.0%; height: 100.0%;">The Haçienda</div>`)[0];
popup_55a86dc03747411b9d60d781b22adb03.setContent(html_777e00e03ca04017a26ca708a07463dc);
marker_0fc25af5537741359512dfaa121b18d7.bindPopup(popup_55a86dc03747411b9d60d781b22adb03)
;
var marker_9c0f370da4824193957b2744601af317 = L.marker(
[51.5167, -0.141389],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_e5747405c119442e8670ccca4e284135 = L.popup({"maxWidth": "100%"});
var html_617e1aa4f81244bcbebb741352302829 = $(`<div id="html_617e1aa4f81244bcbebb741352302829" style="width: 100.0%; height: 100.0%;">The Speakeasy Club</div>`)[0];
popup_e5747405c119442e8670ccca4e284135.setContent(html_617e1aa4f81244bcbebb741352302829);
marker_9c0f370da4824193957b2744601af317.bindPopup(popup_e5747405c119442e8670ccca4e284135)
;
var marker_e4b0f25fef0d498b9ab5725b1a5871ce = L.marker(
[51.522, -0.1059],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_4ca3f408b83e43f58c2cfac649797789 = L.popup({"maxWidth": "100%"});
var html_361cea98aa0e4dfbad5e77d02d79fcd3 = $(`<div id="html_361cea98aa0e4dfbad5e77d02d79fcd3" style="width: 100.0%; height: 100.0%;">Turnmills</div>`)[0];
popup_4ca3f408b83e43f58c2cfac649797789.setContent(html_361cea98aa0e4dfbad5e77d02d79fcd3);
marker_e4b0f25fef0d498b9ab5725b1a5871ce.bindPopup(popup_4ca3f408b83e43f58c2cfac649797789)
;
var marker_9d59dc7e74954de2a2f9060dd4e25403 = L.marker(
[51.4569, -2.6084],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_65bef0b4a8da428b9d38a4cd4672f440 = L.popup({"maxWidth": "100%"});
var html_8f60214f80e242e3b0a5232149a42760 = $(`<div id="html_8f60214f80e242e3b0a5232149a42760" style="width: 100.0%; height: 100.0%;">University of Bristol Union</div>`)[0];
popup_65bef0b4a8da428b9d38a4cd4672f440.setContent(html_8f60214f80e242e3b0a5232149a42760);
marker_9d59dc7e74954de2a2f9060dd4e25403.bindPopup(popup_65bef0b4a8da428b9d38a4cd4672f440)
;
var marker_5054e3d70f4d4f12ab5b9577550ccb21 = L.marker(
[53.693, -0.44291],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_76b62e2d293d4f36a67ca5c0e31e3ca7 = L.popup({"maxWidth": "100%"});
var html_bc7ef602f14b4fada8534071e5b74f8a = $(`<div id="html_bc7ef602f14b4fada8534071e5b74f8a" style="width: 100.0%; height: 100.0%;">Ropewalk Barton upon Humber</div>`)[0];
popup_76b62e2d293d4f36a67ca5c0e31e3ca7.setContent(html_bc7ef602f14b4fada8534071e5b74f8a);
marker_5054e3d70f4d4f12ab5b9577550ccb21.bindPopup(popup_76b62e2d293d4f36a67ca5c0e31e3ca7)
;
var marker_98cea9a03cb14c26ad924587c1497603 = L.marker(
[51.4482, -2.5899],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_0d4aafac15b347e4b66563ef2a9ca37e = L.popup({"maxWidth": "100%"});
var html_4c7020c6e97940e5a581109ced12f383 = $(`<div id="html_4c7020c6e97940e5a581109ced12f383" style="width: 100.0%; height: 100.0%;">St Mary Redcliffe</div>`)[0];
popup_0d4aafac15b347e4b66563ef2a9ca37e.setContent(html_4c7020c6e97940e5a581109ced12f383);
marker_98cea9a03cb14c26ad924587c1497603.bindPopup(popup_0d4aafac15b347e4b66563ef2a9ca37e)
;
var marker_da24ddef0d8a4cca93b6e85274bb1895 = L.marker(
[53.4012, -2.9701],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_dbbc568440704159959446ea7c6e40bf = L.popup({"maxWidth": "100%"});
var html_68c7ee049c724d2fad1a1f6792b7d34e = $(`<div id="html_68c7ee049c724d2fad1a1f6792b7d34e" style="width: 100.0%; height: 100.0%;">Philharmonic Hall, Liverpool</div>`)[0];
popup_dbbc568440704159959446ea7c6e40bf.setContent(html_68c7ee049c724d2fad1a1f6792b7d34e);
marker_da24ddef0d8a4cca93b6e85274bb1895.bindPopup(popup_dbbc568440704159959446ea7c6e40bf)
;
var marker_6141120a13c2457c85cfb6441e10e943 = L.marker(
[51.5053, -0.113889],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_4ff1a3f0aaf34c6ab8369b797e2c2f7a = L.popup({"maxWidth": "100%"});
var html_23af85bccc904dd385df48981476c85e = $(`<div id="html_23af85bccc904dd385df48981476c85e" style="width: 100.0%; height: 100.0%;">Cuper's Gardens</div>`)[0];
popup_4ff1a3f0aaf34c6ab8369b797e2c2f7a.setContent(html_23af85bccc904dd385df48981476c85e);
marker_6141120a13c2457c85cfb6441e10e943.bindPopup(popup_4ff1a3f0aaf34c6ab8369b797e2c2f7a)
;
var marker_4d0d0865a78c46f68ca72627b009adf9 = L.marker(
[53.059, -2.21134],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_2169c8ad7ded42fe96a045815db495fa = L.popup({"maxWidth": "100%"});
var html_e1409638ca9d4986a6fcb89ea0a51537 = $(`<div id="html_e1409638ca9d4986a6fcb89ea0a51537" style="width: 100.0%; height: 100.0%;">Golden Torch</div>`)[0];
popup_2169c8ad7ded42fe96a045815db495fa.setContent(html_e1409638ca9d4986a6fcb89ea0a51537);
marker_4d0d0865a78c46f68ca72627b009adf9.bindPopup(popup_2169c8ad7ded42fe96a045815db495fa)
;
var marker_9645d8ea05a245dfbd727a6039edce6e = L.marker(
[53.7989, -1.54278],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_f77f3c8a7bf04d0985c723cb535796f6 = L.popup({"maxWidth": "100%"});
var html_85714095320749bf99bf4b0f01a93dd7 = $(`<div id="html_85714095320749bf99bf4b0f01a93dd7" style="width: 100.0%; height: 100.0%;">Leeds City Varieties</div>`)[0];
popup_f77f3c8a7bf04d0985c723cb535796f6.setContent(html_85714095320749bf99bf4b0f01a93dd7);
marker_9645d8ea05a245dfbd727a6039edce6e.bindPopup(popup_f77f3c8a7bf04d0985c723cb535796f6)
;
var marker_6cc611e617ca4cd0a8e15700233c6953 = L.marker(
[51.5345, -0.1058],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_c8ac8781819941eb8c24d8bd76a7b539 = L.popup({"maxWidth": "100%"});
var html_8e3d98b1eb0f4130bee75e1af11ae35f = $(`<div id="html_8e3d98b1eb0f4130bee75e1af11ae35f" style="width: 100.0%; height: 100.0%;">O2 Academy Islington</div>`)[0];
popup_c8ac8781819941eb8c24d8bd76a7b539.setContent(html_8e3d98b1eb0f4130bee75e1af11ae35f);
marker_6cc611e617ca4cd0a8e15700233c6953.bindPopup(popup_c8ac8781819941eb8c24d8bd76a7b539)
;
var marker_5497fdfb981449a7a6e8f296a89f2626 = L.marker(
[50.3689, -4.15],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_c0d9ba6df420401b9f2a0c7fdfb0b3d6 = L.popup({"maxWidth": "100%"});
var html_4eff0fd07f4f41e8bd98b8727569f2b9 = $(`<div id="html_4eff0fd07f4f41e8bd98b8727569f2b9" style="width: 100.0%; height: 100.0%;">Plymouth Pavilions</div>`)[0];
popup_c0d9ba6df420401b9f2a0c7fdfb0b3d6.setContent(html_4eff0fd07f4f41e8bd98b8727569f2b9);
marker_5497fdfb981449a7a6e8f296a89f2626.bindPopup(popup_c0d9ba6df420401b9f2a0c7fdfb0b3d6)
;
var marker_d45af1a639284b21b1628d163135fcca = L.marker(
[50.8258, -0.442553],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_fb8070a7c44840b68ea17c5a49b3011c = L.popup({"maxWidth": "100%"});
var html_bec61bd6537b44168eb6d9dfe4a5abf8 = $(`<div id="html_bec61bd6537b44168eb6d9dfe4a5abf8" style="width: 100.0%; height: 100.0%;">Sterns Nightclub</div>`)[0];
popup_fb8070a7c44840b68ea17c5a49b3011c.setContent(html_bec61bd6537b44168eb6d9dfe4a5abf8);
marker_d45af1a639284b21b1628d163135fcca.bindPopup(popup_fb8070a7c44840b68ea17c5a49b3011c)
;
var marker_298d05e9ed5a4ed3bd4c6b01af1c7fec = L.marker(
[51.5125, -0.132778],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_51350ba90d674b9cb030c2484f40d54e = L.popup({"maxWidth": "100%"});
var html_c4458b50110c425cbf0f149e8a4c0c70 = $(`<div id="html_c4458b50110c425cbf0f149e8a4c0c70" style="width: 100.0%; height: 100.0%;">The 2i's Coffee Bar</div>`)[0];
popup_51350ba90d674b9cb030c2484f40d54e.setContent(html_c4458b50110c425cbf0f149e8a4c0c70);
marker_298d05e9ed5a4ed3bd4c6b01af1c7fec.bindPopup(popup_51350ba90d674b9cb030c2484f40d54e)
;
var marker_fc0d26ffc4ac49b6aac625e11a7b3ed5 = L.marker(
[53.4825, -2.23528],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_c3547f6223d14e488fdb803e4e413b5d = L.popup({"maxWidth": "100%"});
var html_76b889ed988f459a860302d815dc754c = $(`<div id="html_76b889ed988f459a860302d815dc754c" style="width: 100.0%; height: 100.0%;">The Night and Day Café</div>`)[0];
popup_c3547f6223d14e488fdb803e4e413b5d.setContent(html_76b889ed988f459a860302d815dc754c);
marker_fc0d26ffc4ac49b6aac625e11a7b3ed5.bindPopup(popup_c3547f6223d14e488fdb803e4e413b5d)
;
var marker_fa6df8eee3204b5b8241f44874631b35 = L.marker(
[51.5121, -0.1443],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_c2b8e8c926ba4b0bb03f62030eb8ef49 = L.popup({"maxWidth": "100%"});
var html_cad56bc177954a88a21e4d6708939a8f = $(`<div id="html_cad56bc177954a88a21e4d6708939a8f" style="width: 100.0%; height: 100.0%;">Aeolian Hall, London</div>`)[0];
popup_c2b8e8c926ba4b0bb03f62030eb8ef49.setContent(html_cad56bc177954a88a21e4d6708939a8f);
marker_fa6df8eee3204b5b8241f44874631b35.bindPopup(popup_c2b8e8c926ba4b0bb03f62030eb8ef49)
;
var marker_21341fd571b74a41a8099a1d61663f2a = L.marker(
[52.4756, -1.90936],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_6e3955ad2f7446fe96af30bd38f9ba6a = L.popup({"maxWidth": "100%"});
var html_f6f917a045724ec7b8a7b64170b45d79 = $(`<div id="html_f6f917a045724ec7b8a7b64170b45d79" style="width: 100.0%; height: 100.0%;">CBSO Centre</div>`)[0];
popup_6e3955ad2f7446fe96af30bd38f9ba6a.setContent(html_f6f917a045724ec7b8a7b64170b45d79);
marker_21341fd571b74a41a8099a1d61663f2a.bindPopup(popup_6e3955ad2f7446fe96af30bd38f9ba6a)
;
var marker_d1723974fa0e4c9ea0d2e3a1375385ff = L.marker(
[53.802, -1.556],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_23e30bb1603449178d70ec05a6388d84 = L.popup({"maxWidth": "100%"});
var html_08ae117a6b3c4718a270dd9f6746e4f1 = $(`<div id="html_08ae117a6b3c4718a270dd9f6746e4f1" style="width: 100.0%; height: 100.0%;">Josephs Well</div>`)[0];
popup_23e30bb1603449178d70ec05a6388d84.setContent(html_08ae117a6b3c4718a270dd9f6746e4f1);
marker_d1723974fa0e4c9ea0d2e3a1375385ff.bindPopup(popup_23e30bb1603449178d70ec05a6388d84)
;
var marker_decafd28dcd140fc82f9b1035b97ffb9 = L.marker(
[51.5141, -0.1311],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_7bbb5c9748e34626a6581a68ed8d3594 = L.popup({"maxWidth": "100%"});
var html_1cdc1bb840ce4bbf948588b99d22db9a = $(`<div id="html_1cdc1bb840ce4bbf948588b99d22db9a" style="width: 100.0%; height: 100.0%;">Les Cousins (music club)</div>`)[0];
popup_7bbb5c9748e34626a6581a68ed8d3594.setContent(html_1cdc1bb840ce4bbf948588b99d22db9a);
marker_decafd28dcd140fc82f9b1035b97ffb9.bindPopup(popup_7bbb5c9748e34626a6581a68ed8d3594)
;
var marker_3ca656d92bef44e69437c2f50bb297ae = L.marker(
[53.388, -2.597],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_5abde1e356684d6fb22c79dbcdd7ee86 = L.popup({"maxWidth": "100%"});
var html_a6afb252450e4b158786e8ed232f60b2 = $(`<div id="html_a6afb252450e4b158786e8ed232f60b2" style="width: 100.0%; height: 100.0%;">Parr Hall</div>`)[0];
popup_5abde1e356684d6fb22c79dbcdd7ee86.setContent(html_a6afb252450e4b158786e8ed232f60b2);
marker_3ca656d92bef44e69437c2f50bb297ae.bindPopup(popup_5abde1e356684d6fb22c79dbcdd7ee86)
;
var marker_4658c6361c734b3ca4be8d1e065fa4ac = L.marker(
[50.7977, -1.09289],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_d97572a38b3f4a70a7ca64f544582288 = L.popup({"maxWidth": "100%"});
var html_8d2a13341a264905973d5580b97e81a1 = $(`<div id="html_8d2a13341a264905973d5580b97e81a1" style="width: 100.0%; height: 100.0%;">Portsmouth Guildhall</div>`)[0];
popup_d97572a38b3f4a70a7ca64f544582288.setContent(html_8d2a13341a264905973d5580b97e81a1);
marker_4658c6361c734b3ca4be8d1e065fa4ac.bindPopup(popup_d97572a38b3f4a70a7ca64f544582288)
;
var marker_95c314d18383478eae0546f1951ba5ce = L.marker(
[50.787, -1.075],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_f0480b085c7441588d9bca1e865db5cb = L.popup({"maxWidth": "100%"});
var html_70f653b82a0f4c7d910b201dadc58677 = $(`<div id="html_70f653b82a0f4c7d910b201dadc58677" style="width: 100.0%; height: 100.0%;">The Wedgewood Rooms</div>`)[0];
popup_f0480b085c7441588d9bca1e865db5cb.setContent(html_70f653b82a0f4c7d910b201dadc58677);
marker_95c314d18383478eae0546f1951ba5ce.bindPopup(popup_f0480b085c7441588d9bca1e865db5cb)
;
var marker_3cc721efcecd425495d209650a52641b = L.marker(
[51.4402, 0.3687],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_31737c35e8cf494ca8ac393a1fed2aa8 = L.popup({"maxWidth": "100%"});
var html_424927469026453aa9a584364cbbfb77 = $(`<div id="html_424927469026453aa9a584364cbbfb77" style="width: 100.0%; height: 100.0%;">Woodville Halls Theatre</div>`)[0];
popup_31737c35e8cf494ca8ac393a1fed2aa8.setContent(html_424927469026453aa9a584364cbbfb77);
marker_3cc721efcecd425495d209650a52641b.bindPopup(popup_31737c35e8cf494ca8ac393a1fed2aa8)
;
var marker_475f018223b5406d8a3d56d831e2944f = L.marker(
[53.4818, -2.26339],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_97723f66b9774884bc0eba868b1aae00 = L.popup({"maxWidth": "100%"});
var html_11b07be9e47f4cc6a85f202dea5ef224 = $(`<div id="html_11b07be9e47f4cc6a85f202dea5ef224" style="width: 100.0%; height: 100.0%;">Islington Mill</div>`)[0];
popup_97723f66b9774884bc0eba868b1aae00.setContent(html_11b07be9e47f4cc6a85f202dea5ef224);
marker_475f018223b5406d8a3d56d831e2944f.bindPopup(popup_97723f66b9774884bc0eba868b1aae00)
;
var marker_e278cb1beef042138c8e72eed2f70df7 = L.marker(
[52.4533, -1.71944],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_537d9d3f2afd496cae124ce41f68a1d4 = L.popup({"maxWidth": "100%"});
var html_828a78bab09a431cb4b7e1b55e773157 = $(`<div id="html_828a78bab09a431cb4b7e1b55e773157" style="width: 100.0%; height: 100.0%;">Genting Arena</div>`)[0];
popup_537d9d3f2afd496cae124ce41f68a1d4.setContent(html_828a78bab09a431cb4b7e1b55e773157);
marker_e278cb1beef042138c8e72eed2f70df7.bindPopup(popup_537d9d3f2afd496cae124ce41f68a1d4)
;
var marker_eb5a9265a75241d7981dc94e1cc04042 = L.marker(
[51.4739, -0.173611],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_a49a7889c8ef408e9fa73b746f763702 = L.popup({"maxWidth": "100%"});
var html_8f90c6bb89fa49d7b6d2ffaf764d207f = $(`<div id="html_8f90c6bb89fa49d7b6d2ffaf764d207f" style="width: 100.0%; height: 100.0%;">Le QuecumBar</div>`)[0];
popup_a49a7889c8ef408e9fa73b746f763702.setContent(html_8f90c6bb89fa49d7b6d2ffaf764d207f);
marker_eb5a9265a75241d7981dc94e1cc04042.bindPopup(popup_a49a7889c8ef408e9fa73b746f763702)
;
var marker_16e6b1fe159b42afa91917c0c9dc1cef = L.marker(
[51.5372, -0.145556],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_514fb314cff74e18aea104f32c242813 = L.popup({"maxWidth": "100%"});
var html_208d0407a5024934ae87f65d3fc6ba08 = $(`<div id="html_208d0407a5024934ae87f65d3fc6ba08" style="width: 100.0%; height: 100.0%;">Dublin Castle, Camden</div>`)[0];
popup_514fb314cff74e18aea104f32c242813.setContent(html_208d0407a5024934ae87f65d3fc6ba08);
marker_16e6b1fe159b42afa91917c0c9dc1cef.bindPopup(popup_514fb314cff74e18aea104f32c242813)
;
var marker_28ea620d41fb49f092f306a278ca6532 = L.marker(
[54.972, -1.616],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_23078ff0cbbf4228b43f7a7054dcc0b3 = L.popup({"maxWidth": "100%"});
var html_2c2b2444a8ab4e7781dd19a5e68e660f = $(`<div id="html_2c2b2444a8ab4e7781dd19a5e68e660f" style="width: 100.0%; height: 100.0%;">Mayfair Ballroom</div>`)[0];
popup_23078ff0cbbf4228b43f7a7054dcc0b3.setContent(html_2c2b2444a8ab4e7781dd19a5e68e660f);
marker_28ea620d41fb49f092f306a278ca6532.bindPopup(popup_23078ff0cbbf4228b43f7a7054dcc0b3)
;
var marker_01a19e261e404533b0c0102ba1519362 = L.marker(
[52.7234, -1.3741],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_4762c59ec89d4966bc0c63da1a069180 = L.popup({"maxWidth": "100%"});
var html_b9249109d955477b8db44da88f05dc50 = $(`<div id="html_b9249109d955477b8db44da88f05dc50" style="width: 100.0%; height: 100.0%;">The Emporium, Leicestershire</div>`)[0];
popup_4762c59ec89d4966bc0c63da1a069180.setContent(html_b9249109d955477b8db44da88f05dc50);
marker_01a19e261e404533b0c0102ba1519362.bindPopup(popup_4762c59ec89d4966bc0c63da1a069180)
;
var marker_cfefc59a61c94fa3ab607b7ca097794f = L.marker(
[51.4492, -2.59518],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_d88fc8705e454decbfcb00742beeaa22 = L.popup({"maxWidth": "100%"});
var html_63597a507aa442fda5bca1c1582e0df6 = $(`<div id="html_63597a507aa442fda5bca1c1582e0df6" style="width: 100.0%; height: 100.0%;">The Thekla</div>`)[0];
popup_d88fc8705e454decbfcb00742beeaa22.setContent(html_63597a507aa442fda5bca1c1582e0df6);
marker_cfefc59a61c94fa3ab607b7ca097794f.bindPopup(popup_d88fc8705e454decbfcb00742beeaa22)
;
var marker_b3cf7d75577b4abfb56a6f29eaff12c2 = L.marker(
[51.8972, -2.0778],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_b8560c370e174c90997db55b06c4ca80 = L.popup({"maxWidth": "100%"});
var html_30b276575af94ce4a395335f61abd138 = $(`<div id="html_30b276575af94ce4a395335f61abd138" style="width: 100.0%; height: 100.0%;">Cheltenham Town Hall</div>`)[0];
popup_b8560c370e174c90997db55b06c4ca80.setContent(html_30b276575af94ce4a395335f61abd138);
marker_b3cf7d75577b4abfb56a6f29eaff12c2.bindPopup(popup_b8560c370e174c90997db55b06c4ca80)
;
var marker_56d8b65cd9ff47b385c62444b5fc5515 = L.marker(
[51.6408, 0.0934],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_f0549fb19e604cdcab20204bb771c4fe = L.popup({"maxWidth": "100%"});
var html_741898e74ee2499db8b5ef57638feb20 = $(`<div id="html_741898e74ee2499db8b5ef57638feb20" style="width: 100.0%; height: 100.0%;">Epping Forest Country Club</div>`)[0];
popup_f0549fb19e604cdcab20204bb771c4fe.setContent(html_741898e74ee2499db8b5ef57638feb20);
marker_56d8b65cd9ff47b385c62444b5fc5515.bindPopup(popup_f0549fb19e604cdcab20204bb771c4fe)
;
var marker_941c9f9ca4d94fdb87ee16433016def4 = L.marker(
[53.8003, -1.5497],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_980ae935a7734eb7a491b174f03f651b = L.popup({"maxWidth": "100%"});
var html_6345d2cfc027434babece6fbb9afd4b4 = $(`<div id="html_6345d2cfc027434babece6fbb9afd4b4" style="width: 100.0%; height: 100.0%;">Leeds Town Hall</div>`)[0];
popup_980ae935a7734eb7a491b174f03f651b.setContent(html_6345d2cfc027434babece6fbb9afd4b4);
marker_941c9f9ca4d94fdb87ee16433016def4.bindPopup(popup_980ae935a7734eb7a491b174f03f651b)
;
var marker_fa8b2a4d02ee442e8815813736711d0c = L.marker(
[51.5215, -0.15],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_2f59862a47e24c75bba8dd0904b66644 = L.popup({"maxWidth": "100%"});
var html_1dd7e5b8a3624ed885b85ba8f16a7528 = $(`<div id="html_1dd7e5b8a3624ed885b85ba8f16a7528" style="width: 100.0%; height: 100.0%;">Marylebone Gardens</div>`)[0];
popup_2f59862a47e24c75bba8dd0904b66644.setContent(html_1dd7e5b8a3624ed885b85ba8f16a7528);
marker_fa8b2a4d02ee442e8815813736711d0c.bindPopup(popup_2f59862a47e24c75bba8dd0904b66644)
;
var marker_29288455243241a3b2a81c5649bc68cd = L.marker(
[52.9864, -2.13722],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_ff5acdd23f774edb87a7f661aa6c0b31 = L.popup({"maxWidth": "100%"});
var html_f66db73ee18c475bae7f086f46275b9f = $(`<div id="html_f66db73ee18c475bae7f086f46275b9f" style="width: 100.0%; height: 100.0%;">Shelley's Laserdome</div>`)[0];
popup_ff5acdd23f774edb87a7f661aa6c0b31.setContent(html_f66db73ee18c475bae7f086f46275b9f);
marker_29288455243241a3b2a81c5649bc68cd.bindPopup(popup_ff5acdd23f774edb87a7f661aa6c0b31)
;
var marker_886593e299594f7d9287c41ba7454ed0 = L.marker(
[50.866, -2.186],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_97be9cf80fc941f1a52ea561681bfa97 = L.popup({"maxWidth": "100%"});
var html_eed75ed230834636a96fe06cc64d1751 = $(`<div id="html_eed75ed230834636a96fe06cc64d1751" style="width: 100.0%; height: 100.0%;">The Coade Hall</div>`)[0];
popup_97be9cf80fc941f1a52ea561681bfa97.setContent(html_eed75ed230834636a96fe06cc64d1751);
marker_886593e299594f7d9287c41ba7454ed0.bindPopup(popup_97be9cf80fc941f1a52ea561681bfa97)
;
var marker_13e5d7a4324b4fd998e233a5ef6e6b40 = L.marker(
[52.4783, -1.897],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_85074a0868834e99a2509503bda09337 = L.popup({"maxWidth": "100%"});
var html_3caccc2d93b1405481dee8ef6dde2cc3 = $(`<div id="html_3caccc2d93b1405481dee8ef6dde2cc3" style="width: 100.0%; height: 100.0%;">Birmingham Odeon</div>`)[0];
popup_85074a0868834e99a2509503bda09337.setContent(html_3caccc2d93b1405481dee8ef6dde2cc3);
marker_13e5d7a4324b4fd998e233a5ef6e6b40.bindPopup(popup_85074a0868834e99a2509503bda09337)
;
var marker_b003000353d14e289c07df897a835582 = L.marker(
[51.4464, -2.57829],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_306952727ffc41909946cdd0ed03e115 = L.popup({"maxWidth": "100%"});
var html_b1eecb1d2d6144cc80deac1b5c64c6c7 = $(`<div id="html_b1eecb1d2d6144cc80deac1b5c64c6c7" style="width: 100.0%; height: 100.0%;">Bristol Arena</div>`)[0];
popup_306952727ffc41909946cdd0ed03e115.setContent(html_b1eecb1d2d6144cc80deac1b5c64c6c7);
marker_b003000353d14e289c07df897a835582.bindPopup(popup_306952727ffc41909946cdd0ed03e115)
;
var marker_6bc118521aaa4bd4b8a2fb20d8c33cfa = L.marker(
[51.4986, -0.0938944],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_94392ca3809d40cca540b045654e41cf = L.popup({"maxWidth": "100%"});
var html_aa946533c19d4d1088546bdadde22cf0 = $(`<div id="html_aa946533c19d4d1088546bdadde22cf0" style="width: 100.0%; height: 100.0%;">Henry Wood Hall</div>`)[0];
popup_94392ca3809d40cca540b045654e41cf.setContent(html_aa946533c19d4d1088546bdadde22cf0);
marker_6bc118521aaa4bd4b8a2fb20d8c33cfa.bindPopup(popup_94392ca3809d40cca540b045654e41cf)
;
var marker_e794b1ab51894ce98886fee6f04735dc = L.marker(
[54.5761, -1.23403],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_0d43f479ea484a78a6ae4a6f0a086880 = L.popup({"maxWidth": "100%"});
var html_33e31abc828944919008a01240e2a148 = $(`<div id="html_33e31abc828944919008a01240e2a148" style="width: 100.0%; height: 100.0%;">Middlesbrough Town Hall</div>`)[0];
popup_0d43f479ea484a78a6ae4a6f0a086880.setContent(html_33e31abc828944919008a01240e2a148);
marker_e794b1ab51894ce98886fee6f04735dc.bindPopup(popup_0d43f479ea484a78a6ae4a6f0a086880)
;
var marker_450e6c021d964b589dd10e1dde9112e0 = L.marker(
[53.7596, -2.6975],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_dfdd6b6a9d0b4169ad93e190b18ea70c = L.popup({"maxWidth": "100%"});
var html_ca0476f2c36645f59c19c48697359b7d = $(`<div id="html_ca0476f2c36645f59c19c48697359b7d" style="width: 100.0%; height: 100.0%;">Preston Guild Hall</div>`)[0];
popup_dfdd6b6a9d0b4169ad93e190b18ea70c.setContent(html_ca0476f2c36645f59c19c48697359b7d);
marker_450e6c021d964b589dd10e1dde9112e0.bindPopup(popup_dfdd6b6a9d0b4169ad93e190b18ea70c)
;
var marker_a3830c3905da41219fd2bb6d983d60bd = L.marker(
[54.6192, -1.07642],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_2832c88a2d14459da41ef5c24295c207 = L.popup({"maxWidth": "100%"});
var html_0fc53339c9a84efc868cb0189b7f9c47 = $(`<div id="html_0fc53339c9a84efc868cb0189b7f9c47" style="width: 100.0%; height: 100.0%;">Redcar Bowl</div>`)[0];
popup_2832c88a2d14459da41ef5c24295c207.setContent(html_0fc53339c9a84efc868cb0189b7f9c47);
marker_a3830c3905da41219fd2bb6d983d60bd.bindPopup(popup_2832c88a2d14459da41ef5c24295c207)
;
var marker_adf7a675fc3442ec87518619fec9621a = L.marker(
[51.5097, -0.1228],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_396c99ca86a145fc9223376cb32bc229 = L.popup({"maxWidth": "100%"});
var html_03a7cdf0eb804e8abf76ab7a497c187a = $(`<div id="html_03a7cdf0eb804e8abf76ab7a497c187a" style="width: 100.0%; height: 100.0%;">Tivoli Music Hall (London)</div>`)[0];
popup_396c99ca86a145fc9223376cb32bc229.setContent(html_03a7cdf0eb804e8abf76ab7a497c187a);
marker_adf7a675fc3442ec87518619fec9621a.bindPopup(popup_396c99ca86a145fc9223376cb32bc229)
;
var marker_198f8ffecbd649f3ad788f0074944849 = L.marker(
[53.8069, -1.5564],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_c908a46c69fe4b05916ba0e48cdb3787 = L.popup({"maxWidth": "100%"});
var html_dcd642c86b4f4ea3a87cc0de3f737fc8 = $(`<div id="html_dcd642c86b4f4ea3a87cc0de3f737fc8" style="width: 100.0%; height: 100.0%;">University Refectory</div>`)[0];
popup_c908a46c69fe4b05916ba0e48cdb3787.setContent(html_dcd642c86b4f4ea3a87cc0de3f737fc8);
marker_198f8ffecbd649f3ad788f0074944849.bindPopup(popup_c908a46c69fe4b05916ba0e48cdb3787)
;
var marker_72ff5cb15c134daf8668bc0298f8a907 = L.marker(
[52.1927, -2.2317],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_d85e3b62e4d34ff3bd82d7574c773f54 = L.popup({"maxWidth": "100%"});
var html_613193be39ee49f2ae5ad493b9f687f8 = $(`<div id="html_613193be39ee49f2ae5ad493b9f687f8" style="width: 100.0%; height: 100.0%;">University of Worcester Arena</div>`)[0];
popup_d85e3b62e4d34ff3bd82d7574c773f54.setContent(html_613193be39ee49f2ae5ad493b9f687f8);
marker_72ff5cb15c134daf8668bc0298f8a907.bindPopup(popup_d85e3b62e4d34ff3bd82d7574c773f54)
;
var marker_3a91f3ef96aa425f83a977899d28a1ff = L.marker(
[52.5857, -1.98033],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_3124dc4e3bb540ada49b0db56c67bae9 = L.popup({"maxWidth": "100%"});
var html_c9bc15fa92ca4df5910a49834a3b7e51 = $(`<div id="html_c9bc15fa92ca4df5910a49834a3b7e51" style="width: 100.0%; height: 100.0%;">Walsall Town Hall</div>`)[0];
popup_3124dc4e3bb540ada49b0db56c67bae9.setContent(html_c9bc15fa92ca4df5910a49834a3b7e51);
marker_3a91f3ef96aa425f83a977899d28a1ff.bindPopup(popup_3124dc4e3bb540ada49b0db56c67bae9)
;
var marker_2d8ff71fcb5442cdb1b055f621c17e4d = L.marker(
[51.5344, -0.108889],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_91cc091c8e374f4887a80413f9853270 = L.popup({"maxWidth": "100%"});
var html_3ba25a1d26eb45bc81f15f82232afee7 = $(`<div id="html_3ba25a1d26eb45bc81f15f82232afee7" style="width: 100.0%; height: 100.0%;">The Islington</div>`)[0];
popup_91cc091c8e374f4887a80413f9853270.setContent(html_3ba25a1d26eb45bc81f15f82232afee7);
marker_2d8ff71fcb5442cdb1b055f621c17e4d.bindPopup(popup_91cc091c8e374f4887a80413f9853270)
;
var marker_531f3fec17a5431f9c3572d37e44cfaf = L.marker(
[51.489, -0.1642],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_cd8728cc3a66479d9fbce7ee2ca3ce90 = L.popup({"maxWidth": "100%"});
var html_14cfb18a9e3b4ddc836660f5de251e94 = $(`<div id="html_14cfb18a9e3b4ddc836660f5de251e94" style="width: 100.0%; height: 100.0%;">The Pheasantry</div>`)[0];
popup_cd8728cc3a66479d9fbce7ee2ca3ce90.setContent(html_14cfb18a9e3b4ddc836660f5de251e94);
marker_531f3fec17a5431f9c3572d37e44cfaf.bindPopup(popup_cd8728cc3a66479d9fbce7ee2ca3ce90)
;
var marker_a025fd077add4ff0ac8656516c7f8a43 = L.marker(
[53.9534, -1.07424],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_9a69441f6cfc4593ac4732369b94e206 = L.popup({"maxWidth": "100%"});
var html_02ff7afc8d704def99d15425a29e993c = $(`<div id="html_02ff7afc8d704def99d15425a29e993c" style="width: 100.0%; height: 100.0%;">Barbican Centre, York</div>`)[0];
popup_9a69441f6cfc4593ac4732369b94e206.setContent(html_02ff7afc8d704def99d15425a29e993c);
marker_a025fd077add4ff0ac8656516c7f8a43.bindPopup(popup_9a69441f6cfc4593ac4732369b94e206)
;
var marker_13c59cfb41c24091af4655e3a8442302 = L.marker(
[51.4559, -2.5925],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_17872e4f62a5420eb16b15ec27a12da6 = L.popup({"maxWidth": "100%"});
var html_3cd2fbfbab2f447eae5daa8c5fc68ebe = $(`<div id="html_3cd2fbfbab2f447eae5daa8c5fc68ebe" style="width: 100.0%; height: 100.0%;">Bierkeller Theatre</div>`)[0];
popup_17872e4f62a5420eb16b15ec27a12da6.setContent(html_3cd2fbfbab2f447eae5daa8c5fc68ebe);
marker_13c59cfb41c24091af4655e3a8442302.bindPopup(popup_17872e4f62a5420eb16b15ec27a12da6)
;
var marker_3411936718674acc807976c825eb14aa = L.marker(
[52.9528, -1.13944],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_6a831653bb384baaa1473d002977b4e4 = L.popup({"maxWidth": "100%"});
var html_f59ae6f479bf4f63a5782f8dae1372e2 = $(`<div id="html_f59ae6f479bf4f63a5782f8dae1372e2" style="width: 100.0%; height: 100.0%;">Motorpoint Arena Nottingham</div>`)[0];
popup_6a831653bb384baaa1473d002977b4e4.setContent(html_f59ae6f479bf4f63a5782f8dae1372e2);
marker_3411936718674acc807976c825eb14aa.bindPopup(popup_6a831653bb384baaa1473d002977b4e4)
;
var marker_dfe99a8710fa4074bdcce859c1f01661 = L.marker(
[54.9694, -1.6143],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_2ab586cf180b4e06b94daad673814090 = L.popup({"maxWidth": "100%"});
var html_810c11cf389f4b9485e51ae4590ad53b = $(`<div id="html_810c11cf389f4b9485e51ae4590ad53b" style="width: 100.0%; height: 100.0%;">North of England Institute of Mining and Mechanical Engineers</div>`)[0];
popup_2ab586cf180b4e06b94daad673814090.setContent(html_810c11cf389f4b9485e51ae4590ad53b);
marker_dfe99a8710fa4074bdcce859c1f01661.bindPopup(popup_2ab586cf180b4e06b94daad673814090)
;
var marker_f75161b410e34d7a943292a4a703de18 = L.marker(
[51.4489, -0.33],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_25f260ea5bff4382ab60df800ed2cdff = L.popup({"maxWidth": "100%"});
var html_2b98ffcdd0654c54af00839e4e1329a3 = $(`<div id="html_2b98ffcdd0654c54af00839e4e1329a3" style="width: 100.0%; height: 100.0%;">TwickFolk</div>`)[0];
popup_25f260ea5bff4382ab60df800ed2cdff.setContent(html_2b98ffcdd0654c54af00839e4e1329a3);
marker_f75161b410e34d7a943292a4a703de18.bindPopup(popup_25f260ea5bff4382ab60df800ed2cdff)
;
var marker_313eaf2c4f0b4bdca08b215b93f09d9e = L.marker(
[53.4086, -2.9801],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_d37df9e094c14d66805769a7f02b3dd3 = L.popup({"maxWidth": "100%"});
var html_572423b196424d699bdfb5a28d8efe1a = $(`<div id="html_572423b196424d699bdfb5a28d8efe1a" style="width: 100.0%; height: 100.0%;">St George's Hall, Liverpool</div>`)[0];
popup_d37df9e094c14d66805769a7f02b3dd3.setContent(html_572423b196424d699bdfb5a28d8efe1a);
marker_313eaf2c4f0b4bdca08b215b93f09d9e.bindPopup(popup_d37df9e094c14d66805769a7f02b3dd3)
;
var marker_620709b64f97493aab79bcf6867dec0d = L.marker(
[52.4768, -1.9015],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_adef1b43e10248be8a478f427e04f9c4 = L.popup({"maxWidth": "100%"});
var html_c996197559464ceabb9a126bc8ff1154 = $(`<div id="html_c996197559464ceabb9a126bc8ff1154" style="width: 100.0%; height: 100.0%;">Edwards Number Eight</div>`)[0];
popup_adef1b43e10248be8a478f427e04f9c4.setContent(html_c996197559464ceabb9a126bc8ff1154);
marker_620709b64f97493aab79bcf6867dec0d.bindPopup(popup_adef1b43e10248be8a478f427e04f9c4)
;
var marker_31a71348c9e5403a8d1084f582253d8d = L.marker(
[50.727, -1.84],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_575ade092dfb4500a09b64129fc68740 = L.popup({"maxWidth": "100%"});
var html_a4658ebfe8194db0a0a6f27c93d6c1f8 = $(`<div id="html_a4658ebfe8194db0a0a6f27c93d6c1f8" style="width: 100.0%; height: 100.0%;">O2 Academy Bournemouth</div>`)[0];
popup_575ade092dfb4500a09b64129fc68740.setContent(html_a4658ebfe8194db0a0a6f27c93d6c1f8);
marker_31a71348c9e5403a8d1084f582253d8d.bindPopup(popup_575ade092dfb4500a09b64129fc68740)
;
var marker_fb7447e9e7894630b5799d69bdb8fd36 = L.marker(
[51.5447, -0.102503],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_4d5f8cbb61f44b32b02d5eb140f121e9 = L.popup({"maxWidth": "100%"});
var html_4ea173588a534462810426edfc6f9f06 = $(`<div id="html_4ea173588a534462810426edfc6f9f06" style="width: 100.0%; height: 100.0%;">Union Chapel, Islington</div>`)[0];
popup_4d5f8cbb61f44b32b02d5eb140f121e9.setContent(html_4ea173588a534462810426edfc6f9f06);
marker_fb7447e9e7894630b5799d69bdb8fd36.bindPopup(popup_4d5f8cbb61f44b32b02d5eb140f121e9)
;
var marker_303a6059389a46a6b158ec075eec0b3a = L.marker(
[54.9774, -1.61],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_1a4ddf640bbf4c248d9e75827ebf25d0 = L.popup({"maxWidth": "100%"});
var html_ce830aee85114e5f941142a433636ab2 = $(`<div id="html_ce830aee85114e5f941142a433636ab2" style="width: 100.0%; height: 100.0%;">Newcastle City Hall</div>`)[0];
popup_1a4ddf640bbf4c248d9e75827ebf25d0.setContent(html_ce830aee85114e5f941142a433636ab2);
marker_303a6059389a46a6b158ec075eec0b3a.bindPopup(popup_1a4ddf640bbf4c248d9e75827ebf25d0)
;
var marker_01508f28aa7d4b348fd5bb4daa5dc5c3 = L.marker(
[51.5028, 0.00311667],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_eb5de4545dc749b6a77d699c5aaebb04 = L.popup({"maxWidth": "100%"});
var html_fa9a84b361c44d6b921feaef0c8b7223 = $(`<div id="html_fa9a84b361c44d6b921feaef0c8b7223" style="width: 100.0%; height: 100.0%;">The O2</div>`)[0];
popup_eb5de4545dc749b6a77d699c5aaebb04.setContent(html_fa9a84b361c44d6b921feaef0c8b7223);
marker_01508f28aa7d4b348fd5bb4daa5dc5c3.bindPopup(popup_eb5de4545dc749b6a77d699c5aaebb04)
;
var marker_888c1a9cf9fb422ba555e0bbc9a3bdd2 = L.marker(
[51.5558, -0.279722],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_894f97aa1d744e2db591d278c1dce2b9 = L.popup({"maxWidth": "100%"});
var html_3f2b77ac596a494a9ebd7beb71aab481 = $(`<div id="html_3f2b77ac596a494a9ebd7beb71aab481" style="width: 100.0%; height: 100.0%;">Wembley Stadium</div>`)[0];
popup_894f97aa1d744e2db591d278c1dce2b9.setContent(html_3f2b77ac596a494a9ebd7beb71aab481);
marker_888c1a9cf9fb422ba555e0bbc9a3bdd2.bindPopup(popup_894f97aa1d744e2db591d278c1dce2b9)
;
var marker_3727028af2fa4e02b8b20d0655cfb042 = L.marker(
[50.7131, -3.44051],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_8683aff028bb4951a8a98c310afd4788 = L.popup({"maxWidth": "100%"});
var html_6e6e8838456e417186e4166a91958ddd = $(`<div id="html_6e6e8838456e417186e4166a91958ddd" style="width: 100.0%; height: 100.0%;">Westpoint Arena</div>`)[0];
popup_8683aff028bb4951a8a98c310afd4788.setContent(html_6e6e8838456e417186e4166a91958ddd);
marker_3727028af2fa4e02b8b20d0655cfb042.bindPopup(popup_8683aff028bb4951a8a98c310afd4788)
;
var marker_ab18d40cee79491ca22721fb50862545 = L.marker(
[51.5042, 0.0032],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_cf6a7fa9c7ee4cdbba543654031e61de = L.popup({"maxWidth": "100%"});
var html_dcdfafc46fa64a41a7b838aa4444156a = $(`<div id="html_dcdfafc46fa64a41a7b838aa4444156a" style="width: 100.0%; height: 100.0%;">Matter (venue)</div>`)[0];
popup_cf6a7fa9c7ee4cdbba543654031e61de.setContent(html_dcdfafc46fa64a41a7b838aa4444156a);
marker_ab18d40cee79491ca22721fb50862545.bindPopup(popup_cf6a7fa9c7ee4cdbba543654031e61de)
;
var marker_82a2bdc3b9db47139a49029a3998500e = L.marker(
[51.5189, -0.1426],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_34a28bd38ce64b63b35d01d0b8358330 = L.popup({"maxWidth": "100%"});
var html_f0750a651c7242959ca601201ea3dcb5 = $(`<div id="html_f0750a651c7242959ca601201ea3dcb5" style="width: 100.0%; height: 100.0%;">Philharmonic Hall, London</div>`)[0];
popup_34a28bd38ce64b63b35d01d0b8358330.setContent(html_f0750a651c7242959ca601201ea3dcb5);
marker_82a2bdc3b9db47139a49029a3998500e.bindPopup(popup_34a28bd38ce64b63b35d01d0b8358330)
;
var marker_2b1a94889aa745c29182ec5d8d406e7f = L.marker(
[52.2403, -0.899167],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_1ebd9fdb2f1e40f5a28a50957c884896 = L.popup({"maxWidth": "100%"});
var html_85df25e4e3cb48e599902cafb4b531f0 = $(`<div id="html_85df25e4e3cb48e599902cafb4b531f0" style="width: 100.0%; height: 100.0%;">Roadmender (nightclub)</div>`)[0];
popup_1ebd9fdb2f1e40f5a28a50957c884896.setContent(html_85df25e4e3cb48e599902cafb4b531f0);
marker_2b1a94889aa745c29182ec5d8d406e7f.bindPopup(popup_1ebd9fdb2f1e40f5a28a50957c884896)
;
var marker_6f565196011e40b887e27a4c90f3bc2a = L.marker(
[51.878, -0.536],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_eb1ad1479030494b8ec87275cb490ea7 = L.popup({"maxWidth": "100%"});
var html_cb81443245584b04ac115b9e5aec913b = $(`<div id="html_cb81443245584b04ac115b9e5aec913b" style="width: 100.0%; height: 100.0%;">California Ballroom</div>`)[0];
popup_eb1ad1479030494b8ec87275cb490ea7.setContent(html_cb81443245584b04ac115b9e5aec913b);
marker_6f565196011e40b887e27a4c90f3bc2a.bindPopup(popup_eb1ad1479030494b8ec87275cb490ea7)
;
var marker_619750b446974fc992ff70ceed13d600 = L.marker(
[52.136, -0.46746],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_a3338a3d1f504b4490ac31ab693149d8 = L.popup({"maxWidth": "100%"});
var html_aad5362e9866437c959948eeefbe34a3 = $(`<div id="html_aad5362e9866437c959948eeefbe34a3" style="width: 100.0%; height: 100.0%;">Corn Exchange, Bedford</div>`)[0];
popup_a3338a3d1f504b4490ac31ab693149d8.setContent(html_aad5362e9866437c959948eeefbe34a3);
marker_619750b446974fc992ff70ceed13d600.bindPopup(popup_a3338a3d1f504b4490ac31ab693149d8)
;
var marker_422fd13179b246528975d1942c08ccf6 = L.marker(
[52.6251, -1.13284],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_063f3a889b30484fadba6ff7ca016277 = L.popup({"maxWidth": "100%"});
var html_412cf7e838af4911962220bf89d623e9 = $(`<div id="html_412cf7e838af4911962220bf89d623e9" style="width: 100.0%; height: 100.0%;">Granby Halls</div>`)[0];
popup_063f3a889b30484fadba6ff7ca016277.setContent(html_412cf7e838af4911962220bf89d623e9);
marker_422fd13179b246528975d1942c08ccf6.bindPopup(popup_063f3a889b30484fadba6ff7ca016277)
;
var marker_1e764c36f0d34151b6201f40438ae2b3 = L.marker(
[52.9531, -1.17639],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_6eb4d6af85454f1b8e73a9e1113dfb6b = L.popup({"maxWidth": "100%"});
var html_60cf8659aa5e4f2d899ae71dfc0144cc = $(`<div id="html_60cf8659aa5e4f2d899ae71dfc0144cc" style="width: 100.0%; height: 100.0%;">Marcus Garvey Centre</div>`)[0];
popup_6eb4d6af85454f1b8e73a9e1113dfb6b.setContent(html_60cf8659aa5e4f2d899ae71dfc0144cc);
marker_1e764c36f0d34151b6201f40438ae2b3.bindPopup(popup_6eb4d6af85454f1b8e73a9e1113dfb6b)
;
var marker_262fd4175e024ffab45892b3b2d9610b = L.marker(
[52.032, -0.771],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_8b82efbe082f4ed783143d010d48a8c2 = L.popup({"maxWidth": "100%"});
var html_7c273911af9d4f0c8950ca674c8d5182 = $(`<div id="html_7c273911af9d4f0c8950ca674c8d5182" style="width: 100.0%; height: 100.0%;">Planet Ice Milton Keynes</div>`)[0];
popup_8b82efbe082f4ed783143d010d48a8c2.setContent(html_7c273911af9d4f0c8950ca674c8d5182);
marker_262fd4175e024ffab45892b3b2d9610b.bindPopup(popup_8b82efbe082f4ed783143d010d48a8c2)
;
var marker_252a4f31d6cc49b1a99aca9ccac40cc9 = L.marker(
[51.4737, -0.2511],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_e4a44b07790a40518cbf02e4a93e0a56 = L.popup({"maxWidth": "100%"});
var html_95342a3ae33c463bb2ba17b340462df6 = $(`<div id="html_95342a3ae33c463bb2ba17b340462df6" style="width: 100.0%; height: 100.0%;">The Bull's Head, Barnes</div>`)[0];
popup_e4a44b07790a40518cbf02e4a93e0a56.setContent(html_95342a3ae33c463bb2ba17b340462df6);
marker_252a4f31d6cc49b1a99aca9ccac40cc9.bindPopup(popup_e4a44b07790a40518cbf02e4a93e0a56)
;
var marker_f8571dc08b054735985bc7312576ae50 = L.marker(
[52.6227, 1.3035],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_b5b31adcb4614558865070271611f1ea = L.popup({"maxWidth": "100%"});
var html_f80b719386054730b068f8583d4cc886 = $(`<div id="html_f80b719386054730b068f8583d4cc886" style="width: 100.0%; height: 100.0%;">The Ferry Boat Inn</div>`)[0];
popup_b5b31adcb4614558865070271611f1ea.setContent(html_f80b719386054730b068f8583d4cc886);
marker_f8571dc08b054735985bc7312576ae50.bindPopup(popup_b5b31adcb4614558865070271611f1ea)
;
var marker_73b7fd5e751a4324a527c9b0c9235f71 = L.marker(
[51.5442, -0.201],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_62b4ae8a69174862af930b72f90c0d2d = L.popup({"maxWidth": "100%"});
var html_5308185ac445417e986eb2c37ded43e7 = $(`<div id="html_5308185ac445417e986eb2c37ded43e7" style="width: 100.0%; height: 100.0%;">The Luminaire</div>`)[0];
popup_62b4ae8a69174862af930b72f90c0d2d.setContent(html_5308185ac445417e986eb2c37ded43e7);
marker_73b7fd5e751a4324a527c9b0c9235f71.bindPopup(popup_62b4ae8a69174862af930b72f90c0d2d)
;
var marker_bc1a53b3043b4920bf0a037293229920 = L.marker(
[54.9752, -1.59175],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_e0ed3cccb9cf4ddb882de6d7d0fe95cb = L.popup({"maxWidth": "100%"});
var html_0fae62d790d34f2a843c17ac0e84652d = $(`<div id="html_0fae62d790d34f2a843c17ac0e84652d" style="width: 100.0%; height: 100.0%;">The Cluny</div>`)[0];
popup_e0ed3cccb9cf4ddb882de6d7d0fe95cb.setContent(html_0fae62d790d34f2a843c17ac0e84652d);
marker_bc1a53b3043b4920bf0a037293229920.bindPopup(popup_e0ed3cccb9cf4ddb882de6d7d0fe95cb)
;
var marker_935321cdf0b04bd89354b5ac80de61ad = L.marker(
[53.794, -1.5436],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_d614a9fa6ca8403db1684cb8356f66bb = L.popup({"maxWidth": "100%"});
var html_a703b85f91b94f489bfd5ed0def55074 = $(`<div id="html_a703b85f91b94f489bfd5ed0def55074" style="width: 100.0%; height: 100.0%;">Queens Hall, Leeds</div>`)[0];
popup_d614a9fa6ca8403db1684cb8356f66bb.setContent(html_a703b85f91b94f489bfd5ed0def55074);
marker_935321cdf0b04bd89354b5ac80de61ad.bindPopup(popup_d614a9fa6ca8403db1684cb8356f66bb)
;
var marker_1330453a73684a88b8db4124559ba758 = L.marker(
[51.567, 0.0063],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_f3816e82ff034d8eb72a5813ec8d88ab = L.popup({"maxWidth": "100%"});
var html_56e9aab54f414a3e8d613a4e2a4cab2e = $(`<div id="html_56e9aab54f414a3e8d613a4e2a4cab2e" style="width: 100.0%; height: 100.0%;">491 Gallery</div>`)[0];
popup_f3816e82ff034d8eb72a5813ec8d88ab.setContent(html_56e9aab54f414a3e8d613a4e2a4cab2e);
marker_1330453a73684a88b8db4124559ba758.bindPopup(popup_f3816e82ff034d8eb72a5813ec8d88ab)
;
var marker_8acf5b8af87f437ea61a0f2044646cb7 = L.marker(
[51.5128, -0.1284],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_6d4cfae4ff17491e9d7871c56f5d8368 = L.popup({"maxWidth": "100%"});
var html_e3602579cae740f6a4295a8b7a315427 = $(`<div id="html_e3602579cae740f6a4295a8b7a315427" style="width: 100.0%; height: 100.0%;">Bunjies</div>`)[0];
popup_6d4cfae4ff17491e9d7871c56f5d8368.setContent(html_e3602579cae740f6a4295a8b7a315427);
marker_8acf5b8af87f437ea61a0f2044646cb7.bindPopup(popup_6d4cfae4ff17491e9d7871c56f5d8368)
;
var marker_305643e2b35b45b481dacd6e36fda45a = L.marker(
[50.9519, -2.08329],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_ce894e3e5969418784823c134d14415a = L.popup({"maxWidth": "100%"});
var html_d32fa7e4d2ea4592a32fc48d5362c04b = $(`<div id="html_d32fa7e4d2ea4592a32fc48d5362c04b" style="width: 100.0%; height: 100.0%;">Larmer Tree Gardens</div>`)[0];
popup_ce894e3e5969418784823c134d14415a.setContent(html_d32fa7e4d2ea4592a32fc48d5362c04b);
marker_305643e2b35b45b481dacd6e36fda45a.bindPopup(popup_ce894e3e5969418784823c134d14415a)
;
var marker_529136ed036e49d9b5d062da6536493e = L.marker(
[53.3845, -1.46622],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_61ee41ad10e243d4894b97ca8349f617 = L.popup({"maxWidth": "100%"});
var html_567b50b1c32f41b8aed24146d6f889e3 = $(`<div id="html_567b50b1c32f41b8aed24146d6f889e3" style="width: 100.0%; height: 100.0%;">Boardwalk (nightclub)</div>`)[0];
popup_61ee41ad10e243d4894b97ca8349f617.setContent(html_567b50b1c32f41b8aed24146d6f889e3);
marker_529136ed036e49d9b5d062da6536493e.bindPopup(popup_61ee41ad10e243d4894b97ca8349f617)
;
var marker_d7a3c88e6ce64e14a30b053c2754a1b1 = L.marker(
[51.5416, 0.113259],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_fcaed1c4ee58486292bf6f4f6d64327b = L.popup({"maxWidth": "100%"});
var html_1607d72520954c0896c82742eac6d70a = $(`<div id="html_1607d72520954c0896c82742eac6d70a" style="width: 100.0%; height: 100.0%;">Dagenham Roundhouse</div>`)[0];
popup_fcaed1c4ee58486292bf6f4f6d64327b.setContent(html_1607d72520954c0896c82742eac6d70a);
marker_d7a3c88e6ce64e14a30b053c2754a1b1.bindPopup(popup_fcaed1c4ee58486292bf6f4f6d64327b)
;
var marker_8e36998423a34f56927463edd1514378 = L.marker(
[51.5066, -0.2316],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_3e9e44419c864074ac7fd58a912c4b5b = L.popup({"maxWidth": "100%"});
var html_44c3352a1e4a49ae8131974e2d35fb26 = $(`<div id="html_44c3352a1e4a49ae8131974e2d35fb26" style="width: 100.0%; height: 100.0%;">Strange Fruit (club)</div>`)[0];
popup_3e9e44419c864074ac7fd58a912c4b5b.setContent(html_44c3352a1e4a49ae8131974e2d35fb26);
marker_8e36998423a34f56927463edd1514378.bindPopup(popup_3e9e44419c864074ac7fd58a912c4b5b)
;
var marker_e95c37831f784c97b9438c6a27f3924b = L.marker(
[51.5135, -0.13155],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_9f0909a3b14e4c7588b49c02bc7994d9 = L.popup({"maxWidth": "100%"});
var html_46189f6d65644864a50c7f638c4ce784 = $(`<div id="html_46189f6d65644864a50c7f638c4ce784" style="width: 100.0%; height: 100.0%;">Ronnie Scott's Jazz Club</div>`)[0];
popup_9f0909a3b14e4c7588b49c02bc7994d9.setContent(html_46189f6d65644864a50c7f638c4ce784);
marker_e95c37831f784c97b9438c6a27f3924b.bindPopup(popup_9f0909a3b14e4c7588b49c02bc7994d9)
;
var marker_77084d0db8e84cc1bc61a33e91a12ec0 = L.marker(
[53.5806, -2.53556],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_3030d163e5524a0e9c191d54b849ffb6 = L.popup({"maxWidth": "100%"});
var html_4c395b4a5b0b48ef88b65ae086cfb68f = $(`<div id="html_4c395b4a5b0b48ef88b65ae086cfb68f" style="width: 100.0%; height: 100.0%;">Macron Stadium</div>`)[0];
popup_3030d163e5524a0e9c191d54b849ffb6.setContent(html_4c395b4a5b0b48ef88b65ae086cfb68f);
marker_77084d0db8e84cc1bc61a33e91a12ec0.bindPopup(popup_3030d163e5524a0e9c191d54b849ffb6)
;
var marker_1b1e776bd73140a2985a6f83cce82b55 = L.marker(
[54.1083, -3.2264],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_a0f8dc1fcb824285bb443057c78fdb95 = L.popup({"maxWidth": "100%"});
var html_4e98feb2db7345d0991f70b4ab64a0ee = $(`<div id="html_4e98feb2db7345d0991f70b4ab64a0ee" style="width: 100.0%; height: 100.0%;">Princess Selandia</div>`)[0];
popup_a0f8dc1fcb824285bb443057c78fdb95.setContent(html_4e98feb2db7345d0991f70b4ab64a0ee);
marker_1b1e776bd73140a2985a6f83cce82b55.bindPopup(popup_a0f8dc1fcb824285bb443057c78fdb95)
;
var marker_4731f334ed2d4075b810f3b7d8433614 = L.marker(
[51.3823, -0.3414],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_cfbd5f609f624ef8ac54a59698022f10 = L.popup({"maxWidth": "100%"});
var html_da9cec50de1d4680b62a328865489c2b = $(`<div id="html_da9cec50de1d4680b62a328865489c2b" style="width: 100.0%; height: 100.0%;">The Ram Folk Club</div>`)[0];
popup_cfbd5f609f624ef8ac54a59698022f10.setContent(html_da9cec50de1d4680b62a328865489c2b);
marker_4731f334ed2d4075b810f3b7d8433614.bindPopup(popup_cfbd5f609f624ef8ac54a59698022f10)
;
var marker_1e6e4cb8b97840d1a6eb856adbfb6327 = L.marker(
[50.8167, -0.408758],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_38e8cc805a334fb9a45a6f454caff2ac = L.popup({"maxWidth": "100%"});
var html_932400cfd83b4eefb50ab8de0d36b052 = $(`<div id="html_932400cfd83b4eefb50ab8de0d36b052" style="width: 100.0%; height: 100.0%;">Worthing Leisure Centre</div>`)[0];
popup_38e8cc805a334fb9a45a6f454caff2ac.setContent(html_932400cfd83b4eefb50ab8de0d36b052);
marker_1e6e4cb8b97840d1a6eb856adbfb6327.bindPopup(popup_38e8cc805a334fb9a45a6f454caff2ac)
;
var marker_be1e07da3c7b43a89f86c1b7c1bac479 = L.marker(
[54.6438, -3.5443],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_f98a22e2e4414bceafe75dda37aaced4 = L.popup({"maxWidth": "100%"});
var html_acc703e8d7c9499293ac110ecd61ebae = $(`<div id="html_acc703e8d7c9499293ac110ecd61ebae" style="width: 100.0%; height: 100.0%;">Workington Opera House</div>`)[0];
popup_f98a22e2e4414bceafe75dda37aaced4.setContent(html_acc703e8d7c9499293ac110ecd61ebae);
marker_be1e07da3c7b43a89f86c1b7c1bac479.bindPopup(popup_f98a22e2e4414bceafe75dda37aaced4)
;
var marker_d549b4a94b414522aa3db9cc79a21cf4 = L.marker(
[53.7925, -1.7565],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_304f966be56d46c4842a2c477ad5cd00 = L.popup({"maxWidth": "100%"});
var html_195532e3c90d48dda644c94ff84a4df7 = $(`<div id="html_195532e3c90d48dda644c94ff84a4df7" style="width: 100.0%; height: 100.0%;">Bradford Odeon</div>`)[0];
popup_304f966be56d46c4842a2c477ad5cd00.setContent(html_195532e3c90d48dda644c94ff84a4df7);
marker_d549b4a94b414522aa3db9cc79a21cf4.bindPopup(popup_304f966be56d46c4842a2c477ad5cd00)
;
var marker_343fac36334f4cac850a7f1347ffd5e7 = L.marker(
[51.2386, -0.5663],
{}
).addTo(map_65f20fe5282a4ba2b61badd488d65629);
var popup_7e517e55ed3d401cbb4529518014ac1e = L.popup({"maxWidth": "100%"});
var html_d7c32d07a77349f4871898e79528e2be = $(`<div id="html_d7c32d07a77349f4871898e79528e2be" style="width: 100.0%; height: 100.0%;">Guildford Civic Hall</div>`)[0];
popup_7e517e55ed3d401cbb4529518014ac1e.setContent(html_d7c32d07a77349f4871898e79528e2be);
marker_343fac36334f4cac850a7f1347ffd5e7.bindPopup(popup_7e517e55ed3d401cbb4529518014ac1e)
;
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment