Last active
July 28, 2017 00:39
-
-
Save bobhaffner/32d4d9004e820f82a8fd3e7818b72100 to your computer and use it in GitHub Desktop.
folium_basics
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": { | |
"ExecuteTime": { | |
"end_time": "2017-07-27T18:17:33.314652Z", | |
"start_time": "2017-07-27T18:17:32.405415Z" | |
}, | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"import pandas as pd\n", | |
"import folium" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": { | |
"ExecuteTime": { | |
"end_time": "2017-07-27T18:17:35.296992Z", | |
"start_time": "2017-07-27T18:17:33.317341Z" | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"33,144 rows\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style>\n", | |
" .dataframe thead tr:only-child th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: left;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>GEOID</th>\n", | |
" <th>ALAND</th>\n", | |
" <th>AWATER</th>\n", | |
" <th>ALAND_SQMI</th>\n", | |
" <th>AWATER_SQMI</th>\n", | |
" <th>INTPTLAT</th>\n", | |
" <th>INTPTLONG</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>00601</td>\n", | |
" <td>166659884</td>\n", | |
" <td>799293</td>\n", | |
" <td>64.348</td>\n", | |
" <td>0.309</td>\n", | |
" <td>18.180555</td>\n", | |
" <td>-66.749961</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>00602</td>\n", | |
" <td>79287203</td>\n", | |
" <td>4448761</td>\n", | |
" <td>30.613</td>\n", | |
" <td>1.718</td>\n", | |
" <td>18.361945</td>\n", | |
" <td>-67.175597</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>00603</td>\n", | |
" <td>81884707</td>\n", | |
" <td>183895</td>\n", | |
" <td>31.616</td>\n", | |
" <td>0.071</td>\n", | |
" <td>18.455183</td>\n", | |
" <td>-67.119887</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>00606</td>\n", | |
" <td>109579998</td>\n", | |
" <td>12487</td>\n", | |
" <td>42.309</td>\n", | |
" <td>0.005</td>\n", | |
" <td>18.158345</td>\n", | |
" <td>-66.932911</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>00610</td>\n", | |
" <td>93020979</td>\n", | |
" <td>4171994</td>\n", | |
" <td>35.916</td>\n", | |
" <td>1.611</td>\n", | |
" <td>18.295366</td>\n", | |
" <td>-67.125135</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" GEOID ALAND AWATER ALAND_SQMI AWATER_SQMI INTPTLAT INTPTLONG\n", | |
"0 00601 166659884 799293 64.348 0.309 18.180555 -66.749961\n", | |
"1 00602 79287203 4448761 30.613 1.718 18.361945 -67.175597\n", | |
"2 00603 81884707 183895 31.616 0.071 18.455183 -67.119887\n", | |
"3 00606 109579998 12487 42.309 0.005 18.158345 -66.932911\n", | |
"4 00610 93020979 4171994 35.916 1.611 18.295366 -67.125135" | |
] | |
}, | |
"execution_count": 2, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"file_url = 'http://www2.census.gov/geo/docs/maps-data/data/gazetteer/2016_Gazetteer/2016_Gaz_zcta_national.zip'\n", | |
"\n", | |
"#Pandas usually infers zips are numerics, but we lose our leading zeroes so let's go with the object dtype\n", | |
"df = pd.read_csv(file_url, sep='\\t', dtype={'GEOID' : object}) \n", | |
"\n", | |
"df.columns = df.columns.str.strip() #some column names have some extra padding\n", | |
"\n", | |
"print('{:,} rows'.format(len(df)))\n", | |
"df.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": { | |
"ExecuteTime": { | |
"end_time": "2017-07-27T18:17:38.626491Z", | |
"start_time": "2017-07-27T18:17:36.108048Z" | |
} | |
}, | |
"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+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3VucGtnLmNvbS9sZWFmbGV0QDEuMC4xL2Rpc3QvbGVhZmxldC5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9hamF4Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGlicy9qcXVlcnkvMS4xMS4xL2pxdWVyeS5taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMi4wL2pzL2Jvb3RzdHJhcC5taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLzIuMC4yL2xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIvMS4wLjAvbGVhZmxldC5tYXJrZXJjbHVzdGVyLXNyYy5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbGVhZmxldC5tYXJrZXJjbHVzdGVyLzEuMC4wL2xlYWZsZXQubWFya2VyY2x1c3Rlci5qcyI+PC9zY3JpcHQ+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vdW5wa2cuY29tL2xlYWZsZXRAMS4wLjEvZGlzdC9sZWFmbGV0LmNzcyIgLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC5taW4uY3NzIiAvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLXRoZW1lLm1pbi5jc3MiIC8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIgLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuY3NzIiAvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIvMS4wLjAvTWFya2VyQ2x1c3Rlci5EZWZhdWx0LmNzcyIgLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbGVhZmxldC5tYXJrZXJjbHVzdGVyLzEuMC4wL01hcmtlckNsdXN0ZXIuY3NzIiAvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3Jhd2dpdC5jb20vcHl0aG9uLXZpc3VhbGl6YXRpb24vZm9saXVtL21hc3Rlci9mb2xpdW0vdGVtcGxhdGVzL2xlYWZsZXQuYXdlc29tZS5yb3RhdGUuY3NzIiAvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIHNvdXRoV2VzdCA9IEwubGF0TG5nKC05MCwgLTE4MCk7CiAgICAgICAgICAgICAgICB2YXIgbm9ydGhFYXN0ID0gTC5sYXRMbmcoOTAsIDE4MCk7CiAgICAgICAgICAgICAgICB2YXIgYm91bmRzID0gTC5sYXRMbmdCb3VuZHMoc291dGhXZXN0LCBub3J0aEVhc3QpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QgPSBMLm1hcCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NlbnRlcjogWzM4LjYzNDg0NTEyLC05MC41NzEwNzExNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl8xNmVkOTY0ZGFmMGU0YmIyODM3YWZlNDE5MWExMTIxNSA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBtYXhab29tOiAxOCwKICAgICAgICAgICAgICAgICAgICBtaW5ab29tOiAxLAogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVvdXNXb3JsZDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgbm9XcmFwOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGlvbjogJ0RhdGEgYnkgPGEgaHJlZj0iaHR0cDovL29wZW5zdHJlZXRtYXAub3JnIj5PcGVuU3RyZWV0TWFwPC9hPiwgdW5kZXIgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5cmlnaHQiPk9EYkw8L2E+LicsCiAgICAgICAgICAgICAgICAgICAgZGV0ZWN0UmV0aW5hOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMjZkNWQzOWRlYWUxNDdmNmJjZmFmMWEzNDVjMGZjYjIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszMy42MzMxNzUsLTEwMS4xNzg1MTZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lYTFiZTg5MTAxOTM0ZWVkYmQ4ZTdlMWJiNzFiNzRkZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iM2NhMWU5M2UzZTA0NjZmOTJhMmEzZmFhN2Y3YjljMCA9ICQoJzxkaXYgaWQ9Imh0bWxfYjNjYTFlOTNlM2UwNDY2ZjkyYTJhM2ZhYTdmN2I5YzAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjc5MzIyPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lYTFiZTg5MTAxOTM0ZWVkYmQ4ZTdlMWJiNzFiNzRkZi5zZXRDb250ZW50KGh0bWxfYjNjYTFlOTNlM2UwNDY2ZjkyYTJhM2ZhYTdmN2I5YzApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yNmQ1ZDM5ZGVhZTE0N2Y2YmNmYWYxYTM0NWMwZmNiMi5iaW5kUG9wdXAocG9wdXBfZWExYmU4OTEwMTkzNGVlZGJkOGU3ZTFiYjcxYjc0ZGYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMDJjY2RlNjVlZGIzNGI5N2FhZGE4Njg4NDNmM2RlNTEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszOC4xMDkwMTcsLTk4LjA5Njg1M10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzFjODAzOWMwYjIxYzQ2OGE4YWRmMDkxN2U0YzBiZmI3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzk5ZmM1ZjQ5Yzk2MTQzODY5Nzk1NmY3ZGYzZTcwODk4ID0gJCgnPGRpdiBpZD0iaHRtbF85OWZjNWY0OWM5NjE0Mzg2OTc5NTZmN2RmM2U3MDg5OCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Njc1NjE8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFjODAzOWMwYjIxYzQ2OGE4YWRmMDkxN2U0YzBiZmI3LnNldENvbnRlbnQoaHRtbF85OWZjNWY0OWM5NjE0Mzg2OTc5NTZmN2RmM2U3MDg5OCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzAyY2NkZTY1ZWRiMzRiOTdhYWRhODY4ODQzZjNkZTUxLmJpbmRQb3B1cChwb3B1cF8xYzgwMzljMGIyMWM0NjhhOGFkZjA5MTdlNGMwYmZiNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hZjY5YWJlMDkzOWI0MTgwOWExOTJkNzUwNThlYTBjNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzQxLjUxNTk2LC05MC4zNjc4OTddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wODlhOGRjYjVkMzc0ZjIwOWI3MmMyNjA0OTBiOTQ4NiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mNzVhNjgxNGZiMjQ0ZjUwODYzN2M5NjQ5NjhhY2M5NiA9ICQoJzxkaXYgaWQ9Imh0bWxfZjc1YTY4MTRmYjI0NGY1MDg2MzdjOTY0OTY4YWNjOTYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjYxMjM2PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wODlhOGRjYjVkMzc0ZjIwOWI3MmMyNjA0OTBiOTQ4Ni5zZXRDb250ZW50KGh0bWxfZjc1YTY4MTRmYjI0NGY1MDg2MzdjOTY0OTY4YWNjOTYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hZjY5YWJlMDkzOWI0MTgwOWExOTJkNzUwNThlYTBjNS5iaW5kUG9wdXAocG9wdXBfMDg5YThkY2I1ZDM3NGYyMDliNzJjMjYwNDkwYjk0ODYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZmE2NjEwNDRkYmZjNGU3OGJlNDVmYzFhOWZkNTNiYTYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs0MS4wOTUzMjMsLTgwLjUxNDAzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjY1M2E1NjdjMzM2NDBlZmI2NGEzMjk3MWMwYjcyNmMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjZhNTRhOTY4NTNmNGY4Zjk1NTUyZDUyZTZjZDM3YWYgPSAkKCc8ZGl2IGlkPSJodG1sX2Y2YTU0YTk2ODUzZjRmOGY5NTU1MmQ1MmU2Y2QzN2FmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij4xNjE0MDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjY1M2E1NjdjMzM2NDBlZmI2NGEzMjk3MWMwYjcyNmMuc2V0Q29udGVudChodG1sX2Y2YTU0YTk2ODUzZjRmOGY5NTU1MmQ1MmU2Y2QzN2FmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZmE2NjEwNDRkYmZjNGU3OGJlNDVmYzFhOWZkNTNiYTYuYmluZFBvcHVwKHBvcHVwXzY2NTNhNTY3YzMzNjQwZWZiNjRhMzI5NzFjMGI3MjZjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2FkN2QxNjAwYmMxNjRiNTU4YWM1NzA3MzIxYzI2NDY2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNDYuNTQ4MjU2LC05Ni42NDI5OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQ1ZTVkNzc2YzQyMzQ4NDg4ZGI0OWQ3Njg0OTdlMGI3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzU0NDkzNzg4Nzg5NDQ3ODA5OWE3NjJkMmFkYWRiY2MxID0gJCgnPGRpdiBpZD0iaHRtbF81NDQ5Mzc4ODc4OTQ0NzgwOTlhNzYyZDJhZGFkYmNjMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+NTY1OTQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQ1ZTVkNzc2YzQyMzQ4NDg4ZGI0OWQ3Njg0OTdlMGI3LnNldENvbnRlbnQoaHRtbF81NDQ5Mzc4ODc4OTQ0NzgwOTlhNzYyZDJhZGFkYmNjMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2FkN2QxNjAwYmMxNjRiNTU4YWM1NzA3MzIxYzI2NDY2LmJpbmRQb3B1cChwb3B1cF80NWU1ZDc3NmM0MjM0ODQ4OGRiNDlkNzY4NDk3ZTBiNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82MzgzNmE5Zjc0NTg0NTg2OWMwMzE4NDY3MmQ5ZTcwYiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzMyLjA5MzU4NywtMTA5LjEzMzIzMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzBmYjJmY2YzNjUzZjRhYTI4YjRjM2EzZDFhYzliMzVhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Q0YWFjNmY5ODNkNjRmODI5MmJhODhlMGY4MjkwNGNhID0gJCgnPGRpdiBpZD0iaHRtbF9kNGFhYzZmOTgzZDY0ZjgyOTJiYTg4ZTBmODI5MDRjYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+ODU2MzI8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzBmYjJmY2YzNjUzZjRhYTI4YjRjM2EzZDFhYzliMzVhLnNldENvbnRlbnQoaHRtbF9kNGFhYzZmOTgzZDY0ZjgyOTJiYTg4ZTBmODI5MDRjYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzYzODM2YTlmNzQ1ODQ1ODY5YzAzMTg0NjcyZDllNzBiLmJpbmRQb3B1cChwb3B1cF8wZmIyZmNmMzY1M2Y0YWEyOGI0YzNhM2QxYWM5YjM1YSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kMThjMjM0ZDcxOTQ0ZDA4YTcwMDdkY2JlZDMwNGE0OCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzQyLjk5Njk4NiwtOTguNDI5MjE2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjgzNmVmNjhmYTg3NDgwNTk5NjI2Yjk3ODk0YmMwYTQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTExNDk1OGE2MmFiNGE2MDg3MGIzYjQyYjg0Njk1MjQgPSAkKCc8ZGl2IGlkPSJodG1sXzExMTQ5NThhNjJhYjRhNjA4NzBiM2I0MmI4NDY5NTI0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij41NzM2MTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjgzNmVmNjhmYTg3NDgwNTk5NjI2Yjk3ODk0YmMwYTQuc2V0Q29udGVudChodG1sXzExMTQ5NThhNjJhYjRhNjA4NzBiM2I0MmI4NDY5NTI0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZDE4YzIzNGQ3MTk0NGQwOGE3MDA3ZGNiZWQzMDRhNDguYmluZFBvcHVwKHBvcHVwX2Y4MzZlZjY4ZmE4NzQ4MDU5OTYyNmI5Nzg5NGJjMGE0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzczYWJjNTM5ZjdjZjQ4YWNiMjI5MmIzYmYwMTkwZTQ4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzAuNjQ4NjM1LC04Ni4xMzAxOTddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xZGE3N2M3ZmEzZmY0MDY4YWM0ZGU0MGIwZmQyM2RkZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xY2Q5ODU5YTdhYTE0OGYwYjg1ZTI5OGZiZjM0OTRlMyA9ICQoJzxkaXYgaWQ9Imh0bWxfMWNkOTg1OWE3YWExNDhmMGI4NWUyOThmYmYzNDk0ZTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjMyNDM1PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xZGE3N2M3ZmEzZmY0MDY4YWM0ZGU0MGIwZmQyM2RkZC5zZXRDb250ZW50KGh0bWxfMWNkOTg1OWE3YWExNDhmMGI4NWUyOThmYmYzNDk0ZTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83M2FiYzUzOWY3Y2Y0OGFjYjIyOTJiM2JmMDE5MGU0OC5iaW5kUG9wdXAocG9wdXBfMWRhNzdjN2ZhM2ZmNDA2OGFjNGRlNDBiMGZkMjNkZGQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzMxYzVmOGZmZmIwNDQwNjg5OWNlZWRmM2U0MDBmYjggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszOC41NTQ4MzIsLTEwNi4wNjYwMzhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80ZTQxY2Q0OWM1YzY0NWZlYTZlNzlhMDkwZDlmYzE5MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81NjViYTIxNGI4OWY0MWNkOTIyMjI0NTI0NTc5NTYwYSA9ICQoJzxkaXYgaWQ9Imh0bWxfNTY1YmEyMTRiODlmNDFjZDkyMjIyNDUyNDU3OTU2MGEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjgxMjAxPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80ZTQxY2Q0OWM1YzY0NWZlYTZlNzlhMDkwZDlmYzE5MS5zZXRDb250ZW50KGh0bWxfNTY1YmEyMTRiODlmNDFjZDkyMjIyNDUyNDU3OTU2MGEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8zMzFjNWY4ZmZmYjA0NDA2ODk5Y2VlZGYzZTQwMGZiOC5iaW5kUG9wdXAocG9wdXBfNGU0MWNkNDljNWM2NDVmZWE2ZTc5YTA5MGQ5ZmMxOTEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNDdmM2E3YzY3ZmU5NDMyNGI3ZGQ2YmYwNWZlNjJjNTkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszOC43NDIwNTIsLTgzLjk3MzUzOF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2VhODBjZTkxZjM0NTQ4NGFiNGE4NzY4NGRiOTk0ZWJkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Q0ZjMwNzMxYTRhZTQ3MmFiYWZjNmI2YzEwMWMzMmU4ID0gJCgnPGRpdiBpZD0iaHRtbF9kNGYzMDczMWE0YWU0NzJhYmFmYzZiNmMxMDFjMzJlOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+NDEwMDI8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2VhODBjZTkxZjM0NTQ4NGFiNGE4NzY4NGRiOTk0ZWJkLnNldENvbnRlbnQoaHRtbF9kNGYzMDczMWE0YWU0NzJhYmFmYzZiNmMxMDFjMzJlOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzQ3ZjNhN2M2N2ZlOTQzMjRiN2RkNmJmMDVmZTYyYzU5LmJpbmRQb3B1cChwb3B1cF9lYTgwY2U5MWYzNDU0ODRhYjRhODc2ODRkYjk5NGViZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kZTRjNjk3MWEzZjA0Yjg3OWI5MmMyYTEyYWFkYzdkYiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzQ0LjMwMTM5NiwtNzEuMjk5ODM0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjBjNzQ1NjI5ZDgyNGM0OWFjYTg5NmI1Njc1NjEyOTMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDQzZmM3ZDA3MTZlNGQxYTgyYWE2MGUxYTdhMTMzZGQgPSAkKCc8ZGl2IGlkPSJodG1sXzA0M2ZjN2QwNzE2ZTRkMWE4MmFhNjBlMWE3YTEzM2RkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij4wMzU5MzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjBjNzQ1NjI5ZDgyNGM0OWFjYTg5NmI1Njc1NjEyOTMuc2V0Q29udGVudChodG1sXzA0M2ZjN2QwNzE2ZTRkMWE4MmFhNjBlMWE3YTEzM2RkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZGU0YzY5NzFhM2YwNGI4NzliOTJjMmExMmFhZGM3ZGIuYmluZFBvcHVwKHBvcHVwX2YwYzc0NTYyOWQ4MjRjNDlhY2E4OTZiNTY3NTYxMjkzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzI2YzRiN2E2YjM3MjRiYTQ4NWYwYmVkMGQxNTNiNjQwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNTM5MzQzLC04OS42MTgzMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzgwNGMxY2IyMjkzMzQ5YzY4NDRmOGMwYTQ1NWIxNDFkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQwNDc4ZjA3OTdjOTRhN2ZiNzUxYmZkM2U1Mjg1ZTFjID0gJCgnPGRpdiBpZD0iaHRtbF80MDQ3OGYwNzk3Yzk0YTdmYjc1MWJmZDNlNTI4NWUxYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+NjE1NTQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzgwNGMxY2IyMjkzMzQ5YzY4NDRmOGMwYTQ1NWIxNDFkLnNldENvbnRlbnQoaHRtbF80MDQ3OGYwNzk3Yzk0YTdmYjc1MWJmZDNlNTI4NWUxYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzI2YzRiN2E2YjM3MjRiYTQ4NWYwYmVkMGQxNTNiNjQwLmJpbmRQb3B1cChwb3B1cF84MDRjMWNiMjI5MzM0OWM2ODQ0ZjhjMGE0NTViMTQxZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kMWJiNDI3YTYwM2Q0MWU2YTYzZmUzZDMzZDcyYzQ1NCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzQ2LjQyNzczNCwtMTE3LjU2NTM4OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzU3OTRhZjhmNTc5YzQ4NjQ5ZjQ5ZDQ4Zjk2MDMxM2M4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzAyMDUyZDUxYzExMDQ5MjRhNjc5YTMyNjI2ZDZjM2VjID0gJCgnPGRpdiBpZD0iaHRtbF8wMjA1MmQ1MWMxMTA0OTI0YTY3OWEzMjYyNmQ2YzNlYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+OTkzNDc8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzU3OTRhZjhmNTc5YzQ4NjQ5ZjQ5ZDQ4Zjk2MDMxM2M4LnNldENvbnRlbnQoaHRtbF8wMjA1MmQ1MWMxMTA0OTI0YTY3OWEzMjYyNmQ2YzNlYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2QxYmI0MjdhNjAzZDQxZTZhNjNmZTNkMzNkNzJjNDU0LmJpbmRQb3B1cChwb3B1cF81Nzk0YWY4ZjU3OWM0ODY0OWY0OWQ0OGY5NjAzMTNjOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wNDM1NWRlNjkxYTQ0YTIzODExNWJkYjc2OWFiYTUwNyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjMwNTI5NCwtOTQuMjM0Mjg3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDA3M2IzOTI1ODhkNDQzNjg3OThkZDNiMWEzMTllZWUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDUxNmE1NTQ1Njg3NDJmYjgxNmEwNTYxY2E2MjJlY2QgPSAkKCc8ZGl2IGlkPSJodG1sXzA1MTZhNTU0NTY4NzQyZmI4MTZhMDU2MWNhNjIyZWNkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij41MDUxNzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZDA3M2IzOTI1ODhkNDQzNjg3OThkZDNiMWEzMTllZWUuc2V0Q29udGVudChodG1sXzA1MTZhNTU0NTY4NzQyZmI4MTZhMDU2MWNhNjIyZWNkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMDQzNTVkZTY5MWE0NGEyMzgxMTViZGI3NjlhYmE1MDcuYmluZFBvcHVwKHBvcHVwX2QwNzNiMzkyNTg4ZDQ0MzY4Nzk4ZGQzYjFhMzE5ZWVlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzMxMzllNDhmNGUzMDRjOGE5YWE0MzEzZTNjNzE1ZmM5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzIuNjIzMTg1LC0xMTYuOTQ5MDUzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMGJjNmFlN2U4ZWMwNGUzM2EyYTViOTdjZjA5NzUwMjcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjNmMmFiMDQzN2ZjNGM2NmI0NDAzMjRkM2QzYzNjOWIgPSAkKCc8ZGl2IGlkPSJodG1sXzYzZjJhYjA0MzdmYzRjNjZiNDQwMzI0ZDNkM2MzYzliIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij45MTkxNTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMGJjNmFlN2U4ZWMwNGUzM2EyYTViOTdjZjA5NzUwMjcuc2V0Q29udGVudChodG1sXzYzZjJhYjA0MzdmYzRjNjZiNDQwMzI0ZDNkM2MzYzliKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMzEzOWU0OGY0ZTMwNGM4YTlhYTQzMTNlM2M3MTVmYzkuYmluZFBvcHVwKHBvcHVwXzBiYzZhZTdlOGVjMDRlMzNhMmE1Yjk3Y2YwOTc1MDI3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzk2ZmI1YWNiY2E2ZDRiNDBhMDA4YTQxOTBiMDNkNTE4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzAuNjU0NzEyLC04NC43ODMyNTRdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zMTExNzY1NzRkODY0YWUyODY2NGQxNWQ4ZDgyODk1NiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83NjAzYTJjYjcwYTQ0NTQ2OGM4OTY0NWJhZTlmYTA1MSA9ICQoJzxkaXYgaWQ9Imh0bWxfNzYwM2EyY2I3MGE0NDU0NjhjODk2NDViYWU5ZmEwNTEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjMyMzI0PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zMTExNzY1NzRkODY0YWUyODY2NGQxNWQ4ZDgyODk1Ni5zZXRDb250ZW50KGh0bWxfNzYwM2EyY2I3MGE0NDU0NjhjODk2NDViYWU5ZmEwNTEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl85NmZiNWFjYmNhNmQ0YjQwYTAwOGE0MTkwYjAzZDUxOC5iaW5kUG9wdXAocG9wdXBfMzExMTc2NTc0ZDg2NGFlMjg2NjRkMTVkOGQ4Mjg5NTYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYTI5Y2FkMjUzNGRkNDIwZmI4YzAxNTE5YTViMTM4NjMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs0Mi4xNjAwNjQsLTcyLjg3Mzg0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfM2Y0NDQzYmUwMDFlNDg4Y2E2MDc0OGRmMzk5NTUxODkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDk5MjFjNDNjMDYyNGJmNzhhNjc4YThhNjAwNjJlMjAgPSAkKCc8ZGl2IGlkPSJodG1sX2Q5OTIxYzQzYzA2MjRiZjc4YTY3OGE4YTYwMDYyZTIwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij4wMTA3MTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfM2Y0NDQzYmUwMDFlNDg4Y2E2MDc0OGRmMzk5NTUxODkuc2V0Q29udGVudChodG1sX2Q5OTIxYzQzYzA2MjRiZjc4YTY3OGE4YTYwMDYyZTIwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYTI5Y2FkMjUzNGRkNDIwZmI4YzAxNTE5YTViMTM4NjMuYmluZFBvcHVwKHBvcHVwXzNmNDQ0M2JlMDAxZTQ4OGNhNjA3NDhkZjM5OTU1MTg5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzU5ZGM3MTYwYjhlYjQ3YzliNDlhMjEyMzZiOGZhYmEwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNDQuNTU2NjYxLC0xMTguMDY3MTA2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTI5NmI5ZDEyY2JlNDRhNWI3Zjk5NDBhNmQ4YzM2OWIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTllNDc4ZmQ5OWU3NDVkMGFhNzRiNGEzZjdiZmJkOTcgPSAkKCc8ZGl2IGlkPSJodG1sXzE5ZTQ3OGZkOTllNzQ1ZDBhYTc0YjRhM2Y3YmZiZDk3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij45NzgzNzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTI5NmI5ZDEyY2JlNDRhNWI3Zjk5NDBhNmQ4YzM2OWIuc2V0Q29udGVudChodG1sXzE5ZTQ3OGZkOTllNzQ1ZDBhYTc0YjRhM2Y3YmZiZDk3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNTlkYzcxNjBiOGViNDdjOWI0OWEyMTIzNmI4ZmFiYTAuYmluZFBvcHVwKHBvcHVwXzEyOTZiOWQxMmNiZTQ0YTViN2Y5OTQwYTZkOGMzNjliKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzcyNzFiNTJmMTdhODQzN2I5MmMzMzMzMDgzZTJhMzk1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNDIuMTMxNDU5LC04My4yMTc3OTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xNTdlNDc0MmQzNTg0ZjBiOGYwODRjYzkwZmQ1NWVmOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yZmQ5ZjU2MDAxNDA0YWIwYjZlMjk5MDQxZmI5MDMxYSA9ICQoJzxkaXYgaWQ9Imh0bWxfMmZkOWY1NjAwMTQwNGFiMGI2ZTI5OTA0MWZiOTAzMWEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjQ4MTgzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xNTdlNDc0MmQzNTg0ZjBiOGYwODRjYzkwZmQ1NWVmOC5zZXRDb250ZW50KGh0bWxfMmZkOWY1NjAwMTQwNGFiMGI2ZTI5OTA0MWZiOTAzMWEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83MjcxYjUyZjE3YTg0MzdiOTJjMzMzMzA4M2UyYTM5NS5iaW5kUG9wdXAocG9wdXBfMTU3ZTQ3NDJkMzU4NGYwYjhmMDg0Y2M5MGZkNTVlZjgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMDg2YTU3MTM2MjgxNDdmYWIyOGRkZDY1NmVjMDA2ZWEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44MTQwMjYsLTg5LjQxOTk0NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JiNjQxMThhNjBmMjRjNmE4Yzk0MDljN2Q0YWFhNzgzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2M4N2YzMDMyYWJmOTQxMmFhZjU4YmUwZjZlNTNmYjIxID0gJCgnPGRpdiBpZD0iaHRtbF9jODdmMzAzMmFiZjk0MTJhYWY1OGJlMGY2ZTUzZmIyMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+NjE1NDg8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2JiNjQxMThhNjBmMjRjNmE4Yzk0MDljN2Q0YWFhNzgzLnNldENvbnRlbnQoaHRtbF9jODdmMzAzMmFiZjk0MTJhYWY1OGJlMGY2ZTUzZmIyMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzA4NmE1NzEzNjI4MTQ3ZmFiMjhkZGQ2NTZlYzAwNmVhLmJpbmRQb3B1cChwb3B1cF9iYjY0MTE4YTYwZjI0YzZhOGM5NDA5YzdkNGFhYTc4Myk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kYTAwZWY2M2JjODc0MDY3YmY3ZDdkNWUyZmIwNmU3YiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzQxLjc1MTA1NywtNzYuNDU0NzQxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzFiM2FiZDFjMDgyNDYxYmI4NTM3MzA5YWI0Njc3N2MgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDY2ZDY1NmM5NDBlNDMyOGJiNjY5OTQyY2IzNzZmMTUgPSAkKCc8ZGl2IGlkPSJodG1sX2Q2NmQ2NTZjOTQwZTQzMjhiYjY2OTk0MmNiMzc2ZjE1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij4xODg0ODwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzFiM2FiZDFjMDgyNDYxYmI4NTM3MzA5YWI0Njc3N2Muc2V0Q29udGVudChodG1sX2Q2NmQ2NTZjOTQwZTQzMjhiYjY2OTk0MmNiMzc2ZjE1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZGEwMGVmNjNiYzg3NDA2N2JmN2Q3ZDVlMmZiMDZlN2IuYmluZFBvcHVwKHBvcHVwXzcxYjNhYmQxYzA4MjQ2MWJiODUzNzMwOWFiNDY3NzdjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzBmZjgxNTEzZWZlNDQxYmQ5YWIxNzYzMWJlMmUzMWIzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNDEuNzE1NjM1LC04My41NTA5NDZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yZTAwOTdjMWJkM2M0YmIwODI3ZGZlOTYyYjZmNDg4MyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wYzIwN2VkOWViYzA0Y2QwOTA0MzgwNjM0MTU1ZTVkNiA9ICQoJzxkaXYgaWQ9Imh0bWxfMGMyMDdlZDllYmMwNGNkMDkwNDM4MDYzNDE1NWU1ZDYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjQzNjEyPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yZTAwOTdjMWJkM2M0YmIwODI3ZGZlOTYyYjZmNDg4My5zZXRDb250ZW50KGh0bWxfMGMyMDdlZDllYmMwNGNkMDkwNDM4MDYzNDE1NWU1ZDYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wZmY4MTUxM2VmZTQ0MWJkOWFiMTc2MzFiZTJlMzFiMy5iaW5kUG9wdXAocG9wdXBfMmUwMDk3YzFiZDNjNGJiMDgyN2RmZTk2MmI2ZjQ4ODMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYWU3NDhkYzMzNzdhNDg3Nzg3MGZmYzUzNzBmNzk2ZjMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNi41Mjg4NTMsLTk2LjM2MTUxNV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FkZmI0OTlmOTc3OTRiMzBhZjA5OTE0Yjk2OGM0MTUyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2E3MWU5Mjk4ODY2MjQzODY4YTBmMmJjMWYxYWM0OTMwID0gJCgnPGRpdiBpZD0iaHRtbF9hNzFlOTI5ODg2NjI0Mzg2OGEwZjJiYzFmMWFjNDkzMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+NzQwODQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2FkZmI0OTlmOTc3OTRiMzBhZjA5OTE0Yjk2OGM0MTUyLnNldENvbnRlbnQoaHRtbF9hNzFlOTI5ODg2NjI0Mzg2OGEwZjJiYzFmMWFjNDkzMCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2FlNzQ4ZGMzMzc3YTQ4Nzc4NzBmZmM1MzcwZjc5NmYzLmJpbmRQb3B1cChwb3B1cF9hZGZiNDk5Zjk3Nzk0YjMwYWYwOTkxNGI5NjhjNDE1Mik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84ZGRjZDQ0NmRhOWE0NWRjYWM0YzhkY2I5NGNjMWY5NCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzQxLjc4MTQzLC04Ny43NzA1MjFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xYTE5NzY3NTQ4MWU0YWIwYTBhOTVhNTA0YWVhN2ZkMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zNjkwY2Q5MDRkZTg0OTNmOGNkN2M1MmJlMGQ4Y2Q1YSA9ICQoJzxkaXYgaWQ9Imh0bWxfMzY5MGNkOTA0ZGU4NDkzZjhjZDdjNTJiZTBkOGNkNWEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjYwNjM4PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xYTE5NzY3NTQ4MWU0YWIwYTBhOTVhNTA0YWVhN2ZkMy5zZXRDb250ZW50KGh0bWxfMzY5MGNkOTA0ZGU4NDkzZjhjZDdjNTJiZTBkOGNkNWEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84ZGRjZDQ0NmRhOWE0NWRjYWM0YzhkY2I5NGNjMWY5NC5iaW5kUG9wdXAocG9wdXBfMWExOTc2NzU0ODFlNGFiMGEwYTk1YTUwNGFlYTdmZDMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMDcyZjFlZDZlNzM2NDNmZGIwOGExNGJjYmQxMzY0ZTQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC40MjAwMTUsLTg2Ljc2NjA0NF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzJiNjMwZjk4ZDQ0MzQ4MjlhZmM4NzczZmQ3OWIzY2IyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzE0NjE2ZWIwMDI5YTQ2M2M4MDZlYzkwMjNlY2NmYjhkID0gJCgnPGRpdiBpZD0iaHRtbF8xNDYxNmViMDAyOWE0NjNjODA2ZWM5MDIzZWNjZmI4ZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+NDc5MDU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzJiNjMwZjk4ZDQ0MzQ4MjlhZmM4NzczZmQ3OWIzY2IyLnNldENvbnRlbnQoaHRtbF8xNDYxNmViMDAyOWE0NjNjODA2ZWM5MDIzZWNjZmI4ZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzA3MmYxZWQ2ZTczNjQzZmRiMDhhMTRiY2JkMTM2NGU0LmJpbmRQb3B1cChwb3B1cF8yYjYzMGY5OGQ0NDM0ODI5YWZjODc3M2ZkNzliM2NiMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mOWQ1ZmVjYTQzMGM0MzQ4YjUxOGJmZDlkZmUxZGIyMyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzQyLjE5NTQ4LC03NC41MDMzOTRdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82YmVlY2U1MDE4ZmY0MGEyOGRmMjY5MDQzMzEwYTI2YiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kZWY3ZjAzNzQ4ZmI0MzViYTI0NTc1MTZkNWFkYTNmOSA9ICQoJzxkaXYgaWQ9Imh0bWxfZGVmN2YwMzc0OGZiNDM1YmEyNDU3NTE2ZDVhZGEzZjkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjEyNDMwPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82YmVlY2U1MDE4ZmY0MGEyOGRmMjY5MDQzMzEwYTI2Yi5zZXRDb250ZW50KGh0bWxfZGVmN2YwMzc0OGZiNDM1YmEyNDU3NTE2ZDVhZGEzZjkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mOWQ1ZmVjYTQzMGM0MzQ4YjUxOGJmZDlkZmUxZGIyMy5iaW5kUG9wdXAocG9wdXBfNmJlZWNlNTAxOGZmNDBhMjhkZjI2OTA0MzMxMGEyNmIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYjIxZjhmYzUxMWEyNGM2ZmFhMzgwY2Y5NjBjYmRjNDYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszOC4zOTI5NTgsLTk5LjY4Njc3OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM3ZTIwNmUwYzFhNjQ4MDQ4NzExNmFmN2ZmMzkwYWRlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2QyYjFmNjliZWIwNjRjM2Q5NDNmY2Y4NWMxNzFkZDQwID0gJCgnPGRpdiBpZD0iaHRtbF9kMmIxZjY5YmViMDY0YzNkOTQzZmNmODVjMTcxZGQ0MCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Njc1MTY8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM3ZTIwNmUwYzFhNjQ4MDQ4NzExNmFmN2ZmMzkwYWRlLnNldENvbnRlbnQoaHRtbF9kMmIxZjY5YmViMDY0YzNkOTQzZmNmODVjMTcxZGQ0MCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2IyMWY4ZmM1MTFhMjRjNmZhYTM4MGNmOTYwY2JkYzQ2LmJpbmRQb3B1cChwb3B1cF8zN2UyMDZlMGMxYTY0ODA0ODcxMTZhZjdmZjM5MGFkZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wZDcyZjA1Zjc1NDc0YmNmYWEzNWEyMTY0ZTVkNWJlOCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM2LjUzMDcwOCwtOTMuOTcwNjQxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzg4NGU5MTkxOWNmNDljNTgzZDY2MDAxN2JhZDk3YzcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMWI2ZTJlOGQ5YTc2NDZiZjk0ZWIxN2U1NTgzZTEzNDkgPSAkKCc8ZGl2IGlkPSJodG1sXzFiNmUyZThkOWE3NjQ2YmY5NGViMTdlNTU4M2UxMzQ5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij42NTc0NTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzg4NGU5MTkxOWNmNDljNTgzZDY2MDAxN2JhZDk3Yzcuc2V0Q29udGVudChodG1sXzFiNmUyZThkOWE3NjQ2YmY5NGViMTdlNTU4M2UxMzQ5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMGQ3MmYwNWY3NTQ3NGJjZmFhMzVhMjE2NGU1ZDViZTguYmluZFBvcHVwKHBvcHVwXzc4ODRlOTE5MTljZjQ5YzU4M2Q2NjAwMTdiYWQ5N2M3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzI2ZDhiMTYwZjZiZDRlZTliMjQ3ZjM2Yjc5NWEzMGYxID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzEuMDQ3Nzk2LC04Ni42NzQxODddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80ZWQ4ZWJhNTU3MzM0OGQ2YWY5ZjZiZDMwN2E1NTg0NCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82MTM4OTJiOGViZjk0OTgyYjc2MWFkNTU2NmM4Njc0ZCA9ICQoJzxkaXYgaWQ9Imh0bWxfNjEzODkyYjhlYmY5NDk4MmI3NjFhZDU1NjZjODY3NGQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjM2NDgzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80ZWQ4ZWJhNTU3MzM0OGQ2YWY5ZjZiZDMwN2E1NTg0NC5zZXRDb250ZW50KGh0bWxfNjEzODkyYjhlYmY5NDk4MmI3NjFhZDU1NjZjODY3NGQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yNmQ4YjE2MGY2YmQ0ZWU5YjI0N2YzNmI3OTVhMzBmMS5iaW5kUG9wdXAocG9wdXBfNGVkOGViYTU1NzMzNDhkNmFmOWY2YmQzMDdhNTU4NDQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDZhYzNmODJhNThhNDIzNjgxOGE4YWJhNWI3NjZkYmMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszOC42NjQ1NzEsLTc3LjQyOTMyNl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FlMzIxODc3YmFlYzRlZTE4ZjhlZGFlYTgzN2VkODIyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM3ZTNlY2EwYjEwYzQ2YTJiOGM1NzExNjY3ODIwZmI4ID0gJCgnPGRpdiBpZD0iaHRtbF8zN2UzZWNhMGIxMGM0NmEyYjhjNTcxMTY2NzgyMGZiOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+MjAxMTI8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2FlMzIxODc3YmFlYzRlZTE4ZjhlZGFlYTgzN2VkODIyLnNldENvbnRlbnQoaHRtbF8zN2UzZWNhMGIxMGM0NmEyYjhjNTcxMTY2NzgyMGZiOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2Q2YWMzZjgyYTU4YTQyMzY4MThhOGFiYTViNzY2ZGJjLmJpbmRQb3B1cChwb3B1cF9hZTMyMTg3N2JhZWM0ZWUxOGY4ZWRhZWE4MzdlZDgyMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80MmQ0MDFiZDFjMDA0NjQzYjU5MGE5NmYwYzIxZTk0NiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzQyLjY4MzQyOSwtNzcuNTY1OTA0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODBmNGZkNzUxMjdjNDFjMGFkN2I5YTQ0MzdkMzg0MWQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYWY1NGY2MzFkNDk5NDQ2NzhkYTZkN2ZiNjU1OTM5YjUgPSAkKCc8ZGl2IGlkPSJodG1sX2FmNTRmNjMxZDQ5OTQ0Njc4ZGE2ZDdmYjY1NTkzOWI1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij4xNDU2MDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODBmNGZkNzUxMjdjNDFjMGFkN2I5YTQ0MzdkMzg0MWQuc2V0Q29udGVudChodG1sX2FmNTRmNjMxZDQ5OTQ0Njc4ZGE2ZDdmYjY1NTkzOWI1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDJkNDAxYmQxYzAwNDY0M2I1OTBhOTZmMGMyMWU5NDYuYmluZFBvcHVwKHBvcHVwXzgwZjRmZDc1MTI3YzQxYzBhZDdiOWE0NDM3ZDM4NDFkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzk0Nzc3YjRlNzQwYjQ5N2E4YjRmYzYwYjQwYzAxMjFkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMjguMDUwODI3LC04Mi40NDk1NzNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83YzA0MDcyYTcwNTM0MzE1YjE0MjY5MWVlNTZjZWJmOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80ZjE2ZmIxZmNiMzI0MDk0YTAxZWQ4ZGQ4MGFiMjJjNiA9ICQoJzxkaXYgaWQ9Imh0bWxfNGYxNmZiMWZjYjMyNDA5NGEwMWVkOGRkODBhYjIyYzYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjMzNjEyPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83YzA0MDcyYTcwNTM0MzE1YjE0MjY5MWVlNTZjZWJmOS5zZXRDb250ZW50KGh0bWxfNGYxNmZiMWZjYjMyNDA5NGEwMWVkOGRkODBhYjIyYzYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl85NDc3N2I0ZTc0MGI0OTdhOGI0ZmM2MGI0MGMwMTIxZC5iaW5kUG9wdXAocG9wdXBfN2MwNDA3MmE3MDUzNDMxNWIxNDI2OTFlZTU2Y2ViZjkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZWNiNmMzNjU1ZDUyNGZhMmI0YzBhMmEwZGFiOGU5NWIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszMy4yNzM2MDMsLTk2Ljk5MDA0Ml0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzVmZjg5OGI5YTg2YzRmMDNhYWUxYWFiZjg2YzI0ZWUxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzE2ZTQzNzU3ZDU0NDQyOGI5MmMxYTc4NDhjMTE3ZDI4ID0gJCgnPGRpdiBpZD0iaHRtbF8xNmU0Mzc1N2Q1NDQ0MjhiOTJjMWE3ODQ4YzExN2QyOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+NzYyMjc8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzVmZjg5OGI5YTg2YzRmMDNhYWUxYWFiZjg2YzI0ZWUxLnNldENvbnRlbnQoaHRtbF8xNmU0Mzc1N2Q1NDQ0MjhiOTJjMWE3ODQ4YzExN2QyOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2VjYjZjMzY1NWQ1MjRmYTJiNGMwYTJhMGRhYjhlOTViLmJpbmRQb3B1cChwb3B1cF81ZmY4OThiOWE4NmM0ZjAzYWFlMWFhYmY4NmMyNGVlMSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84ODQzMmNlZGI4ODk0YWM5YTgwMzNmZTY0Zjk5MWNlNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM2LjI5ODg4NSwtODYuODM0ODAyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDY2ZDQxOWExY2U5NDRmMjk5YWY0Y2FlYTdjYjQwNmMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODY0Nzc3MGZiNTRkNGIwZmFjNzk1ZWY2MjMyN2JjZjQgPSAkKCc8ZGl2IGlkPSJodG1sXzg2NDc3NzBmYjU0ZDRiMGZhYzc5NWVmNjIzMjdiY2Y0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij4zNzE4OTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDY2ZDQxOWExY2U5NDRmMjk5YWY0Y2FlYTdjYjQwNmMuc2V0Q29udGVudChodG1sXzg2NDc3NzBmYjU0ZDRiMGZhYzc5NWVmNjIzMjdiY2Y0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfODg0MzJjZWRiODg5NGFjOWE4MDMzZmU2NGY5OTFjZTUuYmluZFBvcHVwKHBvcHVwXzA2NmQ0MTlhMWNlOTQ0ZjI5OWFmNGNhZWE3Y2I0MDZjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2ZmNGM0NmE3NGM2NTQ2MWQ4NzJjOWYzZGQ1NzA3OGY0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzAuNjk3Mzg0LC05MS41Nzk0NTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zMjM3NGM3NjAwNmI0OWFlOGVkMzRmNzFjYTE4OThjNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wMDc4M2JjOGM3ZTI0YzM5YWQzZTczNjRjZTNkZWYyNCA9ICQoJzxkaXYgaWQ9Imh0bWxfMDA3ODNiYzhjN2UyNGMzOWFkM2U3MzY0Y2UzZGVmMjQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjcwNzU5PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zMjM3NGM3NjAwNmI0OWFlOGVkMzRmNzFjYTE4OThjNS5zZXRDb250ZW50KGh0bWxfMDA3ODNiYzhjN2UyNGMzOWFkM2U3MzY0Y2UzZGVmMjQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mZjRjNDZhNzRjNjU0NjFkODcyYzlmM2RkNTcwNzhmNC5iaW5kUG9wdXAocG9wdXBfMzIzNzRjNzYwMDZiNDlhZThlZDM0ZjcxY2ExODk4YzUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzdmOGJkYWRiMzY1NDc2NGFmMDA5MjQwNzVlMzIxNTcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs0Ni4xNzI1MjEsLTExMS41ODk4MjddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iYWIyN2FiNDlkNTY0ZTZlYWVmMzA1YTcxZDc5OWE0MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84YTRhNjQ0NmIwN2E0Y2JjYTc0NTg3ZjdmNzkxODk4YyA9ICQoJzxkaXYgaWQ9Imh0bWxfOGE0YTY0NDZiMDdhNGNiY2E3NDU4N2Y3Zjc5MTg5OGMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjU5NjQzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iYWIyN2FiNDlkNTY0ZTZlYWVmMzA1YTcxZDc5OWE0Mi5zZXRDb250ZW50KGh0bWxfOGE0YTY0NDZiMDdhNGNiY2E3NDU4N2Y3Zjc5MTg5OGMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jN2Y4YmRhZGIzNjU0NzY0YWYwMDkyNDA3NWUzMjE1Ny5iaW5kUG9wdXAocG9wdXBfYmFiMjdhYjQ5ZDU2NGU2ZWFlZjMwNWE3MWQ3OTlhNDIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDU2N2I2YWMwMWZiNGZhOThhYzQyYzZkZjQwZDM5MWMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszMy4wODA1MzQsLTg2Ljg4NTc5NF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzY3Yjg0OTY2YWNlOTRhZGM4NTc3OGM0NjllMTE1NmQxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzVhZjY3Y2U0OGE0MTQ2NzZiNTRmNTliNWE1ZDBhZmE2ID0gJCgnPGRpdiBpZD0iaHRtbF81YWY2N2NlNDhhNDE0Njc2YjU0ZjU5YjVhNWQwYWZhNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+MzUxODc8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzY3Yjg0OTY2YWNlOTRhZGM4NTc3OGM0NjllMTE1NmQxLnNldENvbnRlbnQoaHRtbF81YWY2N2NlNDhhNDE0Njc2YjU0ZjU5YjVhNWQwYWZhNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2Q1NjdiNmFjMDFmYjRmYTk4YWM0MmM2ZGY0MGQzOTFjLmJpbmRQb3B1cChwb3B1cF82N2I4NDk2NmFjZTk0YWRjODU3NzhjNDY5ZTExNTZkMSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83YzdhZTkwODY4NTU0OWU0YTBjMzc2MmYzZTk5MjI5YSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM0LjM0ODk3MywtODYuNzI5NTM2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTk0NTEzNjljYzQ2NDQ1NTk3OGZjOGU0ODhkNjQ3ZTUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZmI0YjkzYjZjYzQzNGE5YzljZDIwNDFiNDVkNDNmOTkgPSAkKCc8ZGl2IGlkPSJodG1sX2ZiNGI5M2I2Y2M0MzRhOWM5Y2QyMDQxYjQ1ZDQzZjk5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij4zNTYyMTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTk0NTEzNjljYzQ2NDQ1NTk3OGZjOGU0ODhkNjQ3ZTUuc2V0Q29udGVudChodG1sX2ZiNGI5M2I2Y2M0MzRhOWM5Y2QyMDQxYjQ1ZDQzZjk5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfN2M3YWU5MDg2ODU1NDllNGEwYzM3NjJmM2U5OTIyOWEuYmluZFBvcHVwKHBvcHVwXzk5NDUxMzY5Y2M0NjQ0NTU5NzhmYzhlNDg4ZDY0N2U1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzk0Y2M2NWNiMzQ5ODRhNDc4ZThmOTFlYzkyYzVkY2ZhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzYuNzUzMjUyLC04MS43Njc5MDRdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kNWVjNmYzMDE2YWI0OTM1ODNmZWIzMzBiNmNhOTU2YiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hZDA4NThkY2UyNmI0YmFhODZhMGFmYjhlNjhmYTIwNyA9ICQoJzxkaXYgaWQ9Imh0bWxfYWQwODU4ZGNlMjZiNGJhYTg2YTBhZmI4ZTY4ZmEyMDciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjI0MzQwPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kNWVjNmYzMDE2YWI0OTM1ODNmZWIzMzBiNmNhOTU2Yi5zZXRDb250ZW50KGh0bWxfYWQwODU4ZGNlMjZiNGJhYTg2YTBhZmI4ZTY4ZmEyMDcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl85NGNjNjVjYjM0OTg0YTQ3OGU4ZjkxZWM5MmM1ZGNmYS5iaW5kUG9wdXAocG9wdXBfZDVlYzZmMzAxNmFiNDkzNTgzZmViMzMwYjZjYTk1NmIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOGYxOTMwMWIxZDYwNDljZjg1NmM4ZTMzNWE0NDgyMjkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszOS45MDU4NTksLTkwLjYzNDc4NF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzFhZmQ1NDljMGVhYjQ4MTg4MDYzZThiODM3OWU0MzkyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2I3MmRhZjk4NGYzMzQ4MTY4OTkyOTBjNTMwM2U4NWZiID0gJCgnPGRpdiBpZD0iaHRtbF9iNzJkYWY5ODRmMzM0ODE2ODk5MjkwYzUzMDNlODVmYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+NjIzNzg8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFhZmQ1NDljMGVhYjQ4MTg4MDYzZThiODM3OWU0MzkyLnNldENvbnRlbnQoaHRtbF9iNzJkYWY5ODRmMzM0ODE2ODk5MjkwYzUzMDNlODVmYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzhmMTkzMDFiMWQ2MDQ5Y2Y4NTZjOGUzMzVhNDQ4MjI5LmJpbmRQb3B1cChwb3B1cF8xYWZkNTQ5YzBlYWI0ODE4ODA2M2U4YjgzNzllNDM5Mik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yMTE1Y2YwMjkzMmM0YWQ0OGQzZGNlOTExYWIxODNhNyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM2LjkyMzQyMSwtODMuMTQ0MzU2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODc5YzIxMWY0NTFkNDQ2MWI3Mzg3MDhkMzc5NTQwMzkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTljZGEzYzIzOTgzNGUzYWFkZjU0ZWRmZGM0ZDVmYjAgPSAkKCc8ZGl2IGlkPSJodG1sXzE5Y2RhM2MyMzk4MzRlM2FhZGY1NGVkZmRjNGQ1ZmIwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij40MDg3MDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODc5YzIxMWY0NTFkNDQ2MWI3Mzg3MDhkMzc5NTQwMzkuc2V0Q29udGVudChodG1sXzE5Y2RhM2MyMzk4MzRlM2FhZGY1NGVkZmRjNGQ1ZmIwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMjExNWNmMDI5MzJjNGFkNDhkM2RjZTkxMWFiMTgzYTcuYmluZFBvcHVwKHBvcHVwXzg3OWMyMTFmNDUxZDQ0NjFiNzM4NzA4ZDM3OTU0MDM5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2VjMmRhYmI1ZDI2NzRlNjRiODlkMDM0NDhkMzhmNGQzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzguMjg3OTU1LC05MC40Mjg1ODVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jZDNhMjViYjE4NmE0NzMzYjEyN2IyOGEzZTY0ODhmNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lZTljMGI0ZjQzMjc0ZDM0ODBiNGFlMzg4OGE5MjhlMyA9ICQoJzxkaXYgaWQ9Imh0bWxfZWU5YzBiNGY0MzI3NGQzNDgwYjRhZTM4ODhhOTI4ZTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjYzMDcwPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jZDNhMjViYjE4NmE0NzMzYjEyN2IyOGEzZTY0ODhmNy5zZXRDb250ZW50KGh0bWxfZWU5YzBiNGY0MzI3NGQzNDgwYjRhZTM4ODhhOTI4ZTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lYzJkYWJiNWQyNjc0ZTY0Yjg5ZDAzNDQ4ZDM4ZjRkMy5iaW5kUG9wdXAocG9wdXBfY2QzYTI1YmIxODZhNDczM2IxMjdiMjhhM2U2NDg4ZjcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZGI0YTk0MDQxMzJjNDE3ZjhjZTAxMWI3YWU1N2YwYzEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszOC4xODkwMDQsLTg1LjgzOTI2NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U4YzhjMzc2ODM4ZTRhMzQ5OGRkMmQzZmI1MDZhNzU1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzBjZGZmYmIzMDkyZDRiZDU4ODk2N2U5ODJjMGMzZjk4ID0gJCgnPGRpdiBpZD0iaHRtbF8wY2RmZmJiMzA5MmQ0YmQ1ODg5NjdlOTgyYzBjM2Y5OCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+NDAyMTY8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U4YzhjMzc2ODM4ZTRhMzQ5OGRkMmQzZmI1MDZhNzU1LnNldENvbnRlbnQoaHRtbF8wY2RmZmJiMzA5MmQ0YmQ1ODg5NjdlOTgyYzBjM2Y5OCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2RiNGE5NDA0MTMyYzQxN2Y4Y2UwMTFiN2FlNTdmMGMxLmJpbmRQb3B1cChwb3B1cF9lOGM4YzM3NjgzOGU0YTM0OThkZDJkM2ZiNTA2YTc1NSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iZDVkNDAyNzZkMDk0MmU0YmVjODFiNDAzNTk0NDg3YSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzQ1Ljc2OTgyNCwtMTExLjM2ODM0NF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Y5NjNkMjdmNzZlMjRkZTRhNzBhMTkwYmRmOTkzNjVhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2QyZWE0ZTM5ZGE3ODQwNzg5OTk3MmVmMGY5MDE5OWFiID0gJCgnPGRpdiBpZD0iaHRtbF9kMmVhNGUzOWRhNzg0MDc4OTk5NzJlZjBmOTAxOTlhYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+NTk3NDE8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Y5NjNkMjdmNzZlMjRkZTRhNzBhMTkwYmRmOTkzNjVhLnNldENvbnRlbnQoaHRtbF9kMmVhNGUzOWRhNzg0MDc4OTk5NzJlZjBmOTAxOTlhYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2JkNWQ0MDI3NmQwOTQyZTRiZWM4MWI0MDM1OTQ0ODdhLmJpbmRQb3B1cChwb3B1cF9mOTYzZDI3Zjc2ZTI0ZGU0YTcwYTE5MGJkZjk5MzY1YSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83NmExOWE1OTQ0Y2M0NjY1YThlZWRhZDIxNzIyODcyZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM1Ljg2MDU4LC04MC4wOTkyODhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mMmU4MjFjNzhiNGY0NWU1YjhlODJmODgzYzhlNTMwMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zOWMyNjY1MTRlMWM0NjA4YjU1YzUwYzM2MzJlNGU2ZiA9ICQoJzxkaXYgaWQ9Imh0bWxfMzljMjY2NTE0ZTFjNDYwOGI1NWM1MGMzNjMyZTRlNmYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjI3MzYwPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mMmU4MjFjNzhiNGY0NWU1YjhlODJmODgzYzhlNTMwMy5zZXRDb250ZW50KGh0bWxfMzljMjY2NTE0ZTFjNDYwOGI1NWM1MGMzNjMyZTRlNmYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83NmExOWE1OTQ0Y2M0NjY1YThlZWRhZDIxNzIyODcyZS5iaW5kUG9wdXAocG9wdXBfZjJlODIxYzc4YjRmNDVlNWI4ZTgyZjg4M2M4ZTUzMDMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYjhmNTk5NWJhOTY4NGFlMTkxZjM1ODFhNWFmM2IxYmIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszMC45MjM3MjYsLTg2LjQ0OTEzNl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzFhZTU5MjQzNWYzOTQwNjBiYjdhM2ZlODNiMzYxODgxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzA3MTNhNzUxYjBhMTRlZmJhNzZlMGM2MzFmNzJlY2E0ID0gJCgnPGRpdiBpZD0iaHRtbF8wNzEzYTc1MWIwYTE0ZWZiYTc2ZTBjNjMxZjcyZWNhNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+MzI1Njc8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFhZTU5MjQzNWYzOTQwNjBiYjdhM2ZlODNiMzYxODgxLnNldENvbnRlbnQoaHRtbF8wNzEzYTc1MWIwYTE0ZWZiYTc2ZTBjNjMxZjcyZWNhNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2I4ZjU5OTViYTk2ODRhZTE5MWYzNTgxYTVhZjNiMWJiLmJpbmRQb3B1cChwb3B1cF8xYWU1OTI0MzVmMzk0MDYwYmI3YTNmZTgzYjM2MTg4MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80ZjRkODA1YTMyOTQ0MWU0ODllMGM1MmI5MTI3Mzk5MSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM2LjIxNzY4NSwtODUuODEzNzY5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjU5Y2UxOGViNmRhNGZmNTkxOTVkZDRlOGFhOTBiNTMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDBjNTY1YzNlNWJkNGZkNTg2YzhlYTNjY2I5YzJjMGYgPSAkKCc8ZGl2IGlkPSJodG1sX2QwYzU2NWMzZTViZDRmZDU4NmM4ZWEzY2NiOWMyYzBmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij4zODU1MjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjU5Y2UxOGViNmRhNGZmNTkxOTVkZDRlOGFhOTBiNTMuc2V0Q29udGVudChodG1sX2QwYzU2NWMzZTViZDRmZDU4NmM4ZWEzY2NiOWMyYzBmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNGY0ZDgwNWEzMjk0NDFlNDg5ZTBjNTJiOTEyNzM5OTEuYmluZFBvcHVwKHBvcHVwXzI1OWNlMThlYjZkYTRmZjU5MTk1ZGQ0ZThhYTkwYjUzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzcyNGUzM2UxYTYxMTRkZGFhMDAwNDhmMTQ2YTlkNDdkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzUuMDk2NzY3LC04Ni4xOTE4MjFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85OTFkZTRiYzYzODM0MmE1YWMwMjdkMTEwZDFhNDViYSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zMjkyZThiNjhkZTA0MjMwYTk2MTlmNzRiYmJlYTJjMiA9ICQoJzxkaXYgaWQ9Imh0bWxfMzI5MmU4YjY4ZGUwNDIzMGE5NjE5Zjc0YmJiZWEyYzIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjM3MzA2PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85OTFkZTRiYzYzODM0MmE1YWMwMjdkMTEwZDFhNDViYS5zZXRDb250ZW50KGh0bWxfMzI5MmU4YjY4ZGUwNDIzMGE5NjE5Zjc0YmJiZWEyYzIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83MjRlMzNlMWE2MTE0ZGRhYTAwMDQ4ZjE0NmE5ZDQ3ZC5iaW5kUG9wdXAocG9wdXBfOTkxZGU0YmM2MzgzNDJhNWFjMDI3ZDExMGQxYTQ1YmEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzczZjQ2MDM5OWJkNDIxMWFkM2MyOTA2MzFhY2FiNDEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszMy44MzkwNzgsLTg0LjYyODIxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2JjNjI4MmZmNWE4NDQwN2EyNDc4ZDRhZDhjNTcyMjcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTllNDMyNWU3MWVkNDIzZmExNzhiNDgxYzUyOWJhMGMgPSAkKCc8ZGl2IGlkPSJodG1sXzk5ZTQzMjVlNzFlZDQyM2ZhMTc4YjQ4MWM1MjliYTBjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij4zMDEwNjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfN2JjNjI4MmZmNWE4NDQwN2EyNDc4ZDRhZDhjNTcyMjcuc2V0Q29udGVudChodG1sXzk5ZTQzMjVlNzFlZDQyM2ZhMTc4YjQ4MWM1MjliYTBjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYzczZjQ2MDM5OWJkNDIxMWFkM2MyOTA2MzFhY2FiNDEuYmluZFBvcHVwKHBvcHVwXzdiYzYyODJmZjVhODQ0MDdhMjQ3OGQ0YWQ4YzU3MjI3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2RlOGRjNmEzMTIyNTQ2YTI4ZWZkMjJlZjQ5ZWJiZjhkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzkuOTc5MDMxLC03NC4xNjA0MjldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mMWQ1MDdmNGQ1ZWU0MDhiOTEzOGJmNzI3YWQyYjgxOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kODQzNmQ5ZjI5NGM0MjAwODQ1ZjMwYzUyMjYzOTM4MiA9ICQoJzxkaXYgaWQ9Imh0bWxfZDg0MzZkOWYyOTRjNDIwMDg0NWYzMGM1MjI2MzkzODIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjA4NzUzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mMWQ1MDdmNGQ1ZWU0MDhiOTEzOGJmNzI3YWQyYjgxOS5zZXRDb250ZW50KGh0bWxfZDg0MzZkOWYyOTRjNDIwMDg0NWYzMGM1MjI2MzkzODIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kZThkYzZhMzEyMjU0NmEyOGVmZDIyZWY0OWViYmY4ZC5iaW5kUG9wdXAocG9wdXBfZjFkNTA3ZjRkNWVlNDA4YjkxMzhiZjcyN2FkMmI4MTkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzdiYTQ2M2VhM2MwNDBkOGI5NjkwMmFiYTFhNDQ3YzggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs0NS41Nzg2MzksLTkzLjU5MjA2Ml0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzdjMjRhNDZjZjQ4YTRlMjZhMGQ5NjRhZTYwYzQxNjY3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzFmNGEyMjQ1ZDczMTQ0ZDFhZTFiNzM3MzVmOTdmOGY0ID0gJCgnPGRpdiBpZD0iaHRtbF8xZjRhMjI0NWQ3MzE0NGQxYWUxYjczNzM1Zjk3ZjhmNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+NTUzNzE8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdjMjRhNDZjZjQ4YTRlMjZhMGQ5NjRhZTYwYzQxNjY3LnNldENvbnRlbnQoaHRtbF8xZjRhMjI0NWQ3MzE0NGQxYWUxYjczNzM1Zjk3ZjhmNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2M3YmE0NjNlYTNjMDQwZDhiOTY5MDJhYmExYTQ0N2M4LmJpbmRQb3B1cChwb3B1cF83YzI0YTQ2Y2Y0OGE0ZTI2YTBkOTY0YWU2MGM0MTY2Nyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80ZDQ5Y2Q3Nzc2MmY0ODIzYWFiNjFjYmZlYzNlMGJmYyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzI5Ljg1MzM3NSwtOTMuNTY4Mjg4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZTllYzkyODM4ZTdjNDVkNGFmNWE4NzFkYWUyZGU4OWYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjY3ODYxNThjN2ZiNGMxMDhjOTE3MzVlZGVjMjAyYmYgPSAkKCc8ZGl2IGlkPSJodG1sX2I2Nzg2MTU4YzdmYjRjMTA4YzkxNzM1ZWRlYzIwMmJmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij43MDYzMTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTllYzkyODM4ZTdjNDVkNGFmNWE4NzFkYWUyZGU4OWYuc2V0Q29udGVudChodG1sX2I2Nzg2MTU4YzdmYjRjMTA4YzkxNzM1ZWRlYzIwMmJmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNGQ0OWNkNzc3NjJmNDgyM2FhYjYxY2JmZWMzZTBiZmMuYmluZFBvcHVwKHBvcHVwX2U5ZWM5MjgzOGU3YzQ1ZDRhZjVhODcxZGFlMmRlODlmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzY0YzZiYTg1ZGI4ZTQ0N2U4OWY3YTg1OTc4YzBlYWQ1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzIuNzU4NDA4LC05Ni4zMDEzMjNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wYTlhMTA0OTAyZDU0NDM1YjkyYjczMzhlMDViMjU0ZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lYTMzMTZkYTY3MzQ0NzY2ODFjMDBjZTRiN2M0NmVhYSA9ICQoJzxkaXYgaWQ9Imh0bWxfZWEzMzE2ZGE2NzM0NDc2NjgxYzAwY2U0YjdjNDZlYWEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjc1MTYwPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wYTlhMTA0OTAyZDU0NDM1YjkyYjczMzhlMDViMjU0ZS5zZXRDb250ZW50KGh0bWxfZWEzMzE2ZGE2NzM0NDc2NjgxYzAwY2U0YjdjNDZlYWEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82NGM2YmE4NWRiOGU0NDdlODlmN2E4NTk3OGMwZWFkNS5iaW5kUG9wdXAocG9wdXBfMGE5YTEwNDkwMmQ1NDQzNWI5MmI3MzM4ZTA1YjI1NGUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNTVjMjBjMjE1ZTQ3NDg3N2I2YjVkNTZlYTk0MDFlNmMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszMC4wNDMwMTYsLTk2LjY5OTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM2NmQyODlmNjVkYzRhNGFhZGEyOTM3ZDIxMzI4ZGEzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2I3ZDBjNmMzMGIzODRlMTNiMjU5YTUxZmY5MGY0MGI3ID0gJCgnPGRpdiBpZD0iaHRtbF9iN2QwYzZjMzBiMzg0ZTEzYjI1OWE1MWZmOTBmNDBiNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Nzg5NTQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM2NmQyODlmNjVkYzRhNGFhZGEyOTM3ZDIxMzI4ZGEzLnNldENvbnRlbnQoaHRtbF9iN2QwYzZjMzBiMzg0ZTEzYjI1OWE1MWZmOTBmNDBiNyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzU1YzIwYzIxNWU0NzQ4NzdiNmI1ZDU2ZWE5NDAxZTZjLmJpbmRQb3B1cChwb3B1cF8zNjZkMjg5ZjY1ZGM0YTRhYWRhMjkzN2QyMTMyOGRhMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl81MGVmYjMzMjYzN2I0ZTMwOGEwMjExM2I4YTEzMTQ2MCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjg3NzExLC02OC44Njg2OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg4NzcyOTFkMTVkNjRjMjY4ZjM1ZDEyNmRjOWQxZWY5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RhYWUxZmM5NjUwOTQ0NzE5ZGNjMjY4NTEzMTA2MDVkID0gJCgnPGRpdiBpZD0iaHRtbF9kYWFlMWZjOTY1MDk0NDcxOWRjYzI2ODUxMzEwNjA1ZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+MDQ4NTE8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzg4NzcyOTFkMTVkNjRjMjY4ZjM1ZDEyNmRjOWQxZWY5LnNldENvbnRlbnQoaHRtbF9kYWFlMWZjOTY1MDk0NDcxOWRjYzI2ODUxMzEwNjA1ZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzUwZWZiMzMyNjM3YjRlMzA4YTAyMTEzYjhhMTMxNDYwLmJpbmRQb3B1cChwb3B1cF84ODc3MjkxZDE1ZDY0YzI2OGYzNWQxMjZkYzlkMWVmOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl81NTQxNWRlOGNiNjU0YzI5YTcwNjdiOTgwYmVhODdhNCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzQxLjg2NTIxMywtODguMDYxNDc5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjA3MTFkODM0MzRjNDJiZTg1MDJlYzMwZDAyOGVmMTEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTNhN2U3MGYyODg2NDE4OGEyYmMxOGM5Y2ZjODYxNmIgPSAkKCc8ZGl2IGlkPSJodG1sX2EzYTdlNzBmMjg4NjQxODhhMmJjMThjOWNmYzg2MTZiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij42MDEzNzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjA3MTFkODM0MzRjNDJiZTg1MDJlYzMwZDAyOGVmMTEuc2V0Q29udGVudChodG1sX2EzYTdlNzBmMjg4NjQxODhhMmJjMThjOWNmYzg2MTZiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNTU0MTVkZThjYjY1NGMyOWE3MDY3Yjk4MGJlYTg3YTQuYmluZFBvcHVwKHBvcHVwXzIwNzExZDgzNDM0YzQyYmU4NTAyZWMzMGQwMjhlZjExKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2NlN2RmNDVmODUwMTQ2NDg5ZDkzNmE0ODNiNTBiMDE2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuODM0OTMyLC04MC4zMjM3NzFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85Y2M2OGRiYmE0MDM0MDlhYTVlZDU2Mzc3NjIyOTk3YSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zNGQ0MWVmZDVjMmY0NGFhYTAwNzcyMDcyZWM0NzgyNiA9ICQoJzxkaXYgaWQ9Imh0bWxfMzRkNDFlZmQ1YzJmNDRhYWEwMDc3MjA3MmVjNDc4MjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjE2MTM2PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85Y2M2OGRiYmE0MDM0MDlhYTVlZDU2Mzc3NjIyOTk3YS5zZXRDb250ZW50KGh0bWxfMzRkNDFlZmQ1YzJmNDRhYWEwMDc3MjA3MmVjNDc4MjYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jZTdkZjQ1Zjg1MDE0NjQ4OWQ5MzZhNDgzYjUwYjAxNi5iaW5kUG9wdXAocG9wdXBfOWNjNjhkYmJhNDAzNDA5YWE1ZWQ1NjM3NzYyMjk5N2EpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNmY4ZTE0ZDk4ZGUxNGRhOWI1OWMyZTIwMmRlN2I3ZGMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNi41ODcyNDUsLTkwLjYzNzcwNl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzhhYzRkZGQ3NzczODQyNjQ4ZmVjOTA3MWMyMDFiNzNhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM2NzBjMDY0NWNmYzQ0NzY5OTBiZTgyN2Q5ZTkzOWI4ID0gJCgnPGRpdiBpZD0iaHRtbF8zNjcwYzA2NDVjZmM0NDc2OTkwYmU4MjdkOWU5MzliOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+NjM5NTM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzhhYzRkZGQ3NzczODQyNjQ4ZmVjOTA3MWMyMDFiNzNhLnNldENvbnRlbnQoaHRtbF8zNjcwYzA2NDVjZmM0NDc2OTkwYmU4MjdkOWU5MzliOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzZmOGUxNGQ5OGRlMTRkYTliNTljMmUyMDJkZTdiN2RjLmJpbmRQb3B1cChwb3B1cF84YWM0ZGRkNzc3Mzg0MjY0OGZlYzkwNzFjMjAxYjczYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9lZGZiMzc4ZjJiNWQ0ZDBiYTViM2YxOWRhMTJmYzFiYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjkzMDM0NSwtOTkuMDkxMDgyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2RhZGQzMjYyMzAzNGI1Nzg1NWQxZTc4N2RkNjdhYzAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODg1ZDUzNjk4ZTRjNGJhYmJjN2Y1MDRlNjAzYmY5ZTEgPSAkKCc8ZGl2IGlkPSJodG1sXzg4NWQ1MzY5OGU0YzRiYWJiYzdmNTA0ZTYwM2JmOWUxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij42NzUxOTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfN2RhZGQzMjYyMzAzNGI1Nzg1NWQxZTc4N2RkNjdhYzAuc2V0Q29udGVudChodG1sXzg4NWQ1MzY5OGU0YzRiYWJiYzdmNTA0ZTYwM2JmOWUxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZWRmYjM3OGYyYjVkNGQwYmE1YjNmMTlkYTEyZmMxYmEuYmluZFBvcHVwKHBvcHVwXzdkYWRkMzI2MjMwMzRiNTc4NTVkMWU3ODdkZDY3YWMwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2U2NGNkMjE0NjQ5ODRiNWY5MGRjZDk1MTczNGE4YTMyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuNTA5MTUxLC03NS4zODU5NF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2ExYzUxN2Q3ODk3NjQ3MTBhNGQ2MDAwMjIxYTdjNmRhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzdkMTZjMTIyODA4NTQ2MWVhNjkzYjEzYTU5MDBkZTRiID0gJCgnPGRpdiBpZD0iaHRtbF83ZDE2YzEyMjgwODU0NjFlYTY5M2IxM2E1OTAwZGU0YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+MTgwMzY8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ExYzUxN2Q3ODk3NjQ3MTBhNGQ2MDAwMjIxYTdjNmRhLnNldENvbnRlbnQoaHRtbF83ZDE2YzEyMjgwODU0NjFlYTY5M2IxM2E1OTAwZGU0Yik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2U2NGNkMjE0NjQ5ODRiNWY5MGRjZDk1MTczNGE4YTMyLmJpbmRQb3B1cChwb3B1cF9hMWM1MTdkNzg5NzY0NzEwYTRkNjAwMDIyMWE3YzZkYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8zN2YzZTViYTQ1NjM0MjU5ODU0N2Q0NmM3ODMzYTJkNyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzQxLjk0NzU2OCwtODcuNzAyNjQ3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMmY5MWE5ZTI1MTE4NDY2ZTgzZWZhM2M1MmM5MzgwOGYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDI2YWY4ZGY3MjA1NDMwZDhiNTdkNzc0MWUyZjhkN2MgPSAkKCc8ZGl2IGlkPSJodG1sXzQyNmFmOGRmNzIwNTQzMGQ4YjU3ZDc3NDFlMmY4ZDdjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij42MDYxODwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMmY5MWE5ZTI1MTE4NDY2ZTgzZWZhM2M1MmM5MzgwOGYuc2V0Q29udGVudChodG1sXzQyNmFmOGRmNzIwNTQzMGQ4YjU3ZDc3NDFlMmY4ZDdjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMzdmM2U1YmE0NTYzNDI1OTg1NDdkNDZjNzgzM2EyZDcuYmluZFBvcHVwKHBvcHVwXzJmOTFhOWUyNTExODQ2NmU4M2VmYTNjNTJjOTM4MDhmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzI3OTlkNDg3YWI0NTQyZjk5YzNhNGQ4Zjg0YTAwMDM5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuMTA4OTA3LC05MS42NjA1ODZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83MDg0NmMzM2I5OGI0OGFlOTZkMGI1ZDMxMjk5ODM5ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82NmMwOTQxMDQ3NzI0YTI5YmJmZjBmN2Q5ODJjYzhiMyA9ICQoJzxkaXYgaWQ9Imh0bWxfNjZjMDk0MTA0NzcyNGEyOWJiZmYwZjdkOTgyY2M4YjMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjUyMTMzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83MDg0NmMzM2I5OGI0OGFlOTZkMGI1ZDMxMjk5ODM5ZC5zZXRDb250ZW50KGh0bWxfNjZjMDk0MTA0NzcyNGEyOWJiZmYwZjdkOTgyY2M4YjMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yNzk5ZDQ4N2FiNDU0MmY5OWMzYTRkOGY4NGEwMDAzOS5iaW5kUG9wdXAocG9wdXBfNzA4NDZjMzNiOThiNDhhZTk2ZDBiNWQzMTI5OTgzOWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYTRjMWQxNTg5NmFiNDQzMWJmMzU0ZWU2YzYwNDE1YWIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszOC43NjA5NjIsLTgzLjMxNDMyNF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzA0ZGE3MjMxNjk4OTRkNjdhYjgwMTliOGYwMGMyZDJkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzVlOTEwZjkyNzI3ZTQwNzQ5YTZkZTFiNGQzZDk3NjI3ID0gJCgnPGRpdiBpZD0iaHRtbF81ZTkxMGY5MjcyN2U0MDc0OWE2ZGUxYjRkM2Q5NzYyNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+NDU2MTY8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzA0ZGE3MjMxNjk4OTRkNjdhYjgwMTliOGYwMGMyZDJkLnNldENvbnRlbnQoaHRtbF81ZTkxMGY5MjcyN2U0MDc0OWE2ZGUxYjRkM2Q5NzYyNyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2E0YzFkMTU4OTZhYjQ0MzFiZjM1NGVlNmM2MDQxNWFiLmJpbmRQb3B1cChwb3B1cF8wNGRhNzIzMTY5ODk0ZDY3YWI4MDE5YjhmMDBjMmQyZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mYjRjMTlmYTgzN2Y0NDdiYWYyM2MyMWM3YmJiZjViNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjU1MTc4MywtMTAxLjY4NTIzMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzFlNmU5ZGY0NTQ5ZTQ2ZGZhOWZhNzg1NzM2MWJjMTVlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQwMDgwZjM5NDQ4ZjQyNDBhZTIxNTBiMTFhMWFjMzk3ID0gJCgnPGRpdiBpZD0iaHRtbF80MDA4MGYzOTQ0OGY0MjQwYWUyMTUwYjExYTFhYzM5NyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Njc4NTU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFlNmU5ZGY0NTQ5ZTQ2ZGZhOWZhNzg1NzM2MWJjMTVlLnNldENvbnRlbnQoaHRtbF80MDA4MGYzOTQ0OGY0MjQwYWUyMTUwYjExYTFhYzM5Nyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2ZiNGMxOWZhODM3ZjQ0N2JhZjIzYzIxYzdiYmJmNWI1LmJpbmRQb3B1cChwb3B1cF8xZTZlOWRmNDU0OWU0NmRmYTlmYTc4NTczNjFiYzE1ZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hNTgwMmFiZGRkMTc0MjdkOGI3Y2JlZmY0NTc0NTA0NyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzQxLjU4NTkzMywtNzUuNzkyMzY5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjkzOGVlYTQyYzVlNGQ1NDgxODg0YjFmNDA3NWY0NGMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMGM4NTc3OGI4YzRmNDIzMTliNzk1NGYxN2E1NmU1YWEgPSAkKCc8ZGl2IGlkPSJodG1sXzBjODU3NzhiOGM0ZjQyMzE5Yjc5NTRmMTdhNTZlNWFhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij4xODQxOTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjkzOGVlYTQyYzVlNGQ1NDgxODg0YjFmNDA3NWY0NGMuc2V0Q29udGVudChodG1sXzBjODU3NzhiOGM0ZjQyMzE5Yjc5NTRmMTdhNTZlNWFhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYTU4MDJhYmRkZDE3NDI3ZDhiN2NiZWZmNDU3NDUwNDcuYmluZFBvcHVwKHBvcHVwXzY5MzhlZWE0MmM1ZTRkNTQ4MTg4NGIxZjQwNzVmNDRjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzNhYjYwODJmMGJlZjQxYTg5YzA1NWRmY2E5NTRmYmQwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzQuNTcxMDM2LC05NS43MDgxMzNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hNTZiMGY3NDhhZDg0NDQ4YmYxZWQ3MDllYzhhYTQwMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84MjZkYTcxNjFlMmE0YTgxOGExN2ZkNTk1NmM1MzA4OSA9ICQoJzxkaXYgaWQ9Imh0bWxfODI2ZGE3MTYxZTJhNGE4MThhMTdmZDU5NTZjNTMwODkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjc0NTQwPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hNTZiMGY3NDhhZDg0NDQ4YmYxZWQ3MDllYzhhYTQwMS5zZXRDb250ZW50KGh0bWxfODI2ZGE3MTYxZTJhNGE4MThhMTdmZDU5NTZjNTMwODkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8zYWI2MDgyZjBiZWY0MWE4OWMwNTVkZmNhOTU0ZmJkMC5iaW5kUG9wdXAocG9wdXBfYTU2YjBmNzQ4YWQ4NDQ0OGJmMWVkNzA5ZWM4YWE0MDEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZWY4ZTRkNGM2OTE5NGFiNWI2ODdmMDkwNDkyNGYyOGYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs0My45OTkxMTUsLTY5LjE0NDM1NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2E3OWM1OGI1NWJmYTQxNGRhZjBjODVmODFhMzA0ZjM0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzJmOGFiMzMzZTk5YTRlYmFhMmU3M2JkMTJkMWE3YWJjID0gJCgnPGRpdiBpZD0iaHRtbF8yZjhhYjMzM2U5OWE0ZWJhYTJlNzNiZDEyZDFhN2FiYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+MDQ4NTk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2E3OWM1OGI1NWJmYTQxNGRhZjBjODVmODFhMzA0ZjM0LnNldENvbnRlbnQoaHRtbF8yZjhhYjMzM2U5OWE0ZWJhYTJlNzNiZDEyZDFhN2FiYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2VmOGU0ZDRjNjkxOTRhYjViNjg3ZjA5MDQ5MjRmMjhmLmJpbmRQb3B1cChwb3B1cF9hNzljNThiNTViZmE0MTRkYWYwYzg1ZjgxYTMwNGYzNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mOTcyYzA4NGFiZGM0OTU3OTgzNDQwY2IyOWEyNDY4ZCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM1LjA1MjYwOSwtNzguOTA3MjQ0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZGQ4MDQ4ZjFjYTJiNDAxOTliM2U0M2ZlM2ZmZjI5YzAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfN2U3NWYwZmM2NjRkNGExYmE0ODY2NjQxMjNlNDNhOGYgPSAkKCc8ZGl2IGlkPSJodG1sXzdlNzVmMGZjNjY0ZDRhMWJhNDg2NjY0MTIzZTQzYThmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij4yODMwNTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZGQ4MDQ4ZjFjYTJiNDAxOTliM2U0M2ZlM2ZmZjI5YzAuc2V0Q29udGVudChodG1sXzdlNzVmMGZjNjY0ZDRhMWJhNDg2NjY0MTIzZTQzYThmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZjk3MmMwODRhYmRjNDk1Nzk4MzQ0MGNiMjlhMjQ2OGQuYmluZFBvcHVwKHBvcHVwX2RkODA0OGYxY2EyYjQwMTk5YjNlNDNmZTNmZmYyOWMwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2ZkZjJhNzdkMjJjMzQzMmM4ZmY5YzI3MWE5NDlmOTRiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNDIuMzU2NDk0LC03Ny45ODIwNjRdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lMTZiNzYyMDJlMDM0ZWZjOTc2MDNkYzYwZDIwNGQ3ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81ZmFmZWEyNmRjN2U0ZTU2ODFhNTNmNDRlYTE3MTJjMCA9ICQoJzxkaXYgaWQ9Imh0bWxfNWZhZmVhMjZkYzdlNGU1NjgxYTUzZjQ0ZWExNzEyYzAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjE0NzA5PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lMTZiNzYyMDJlMDM0ZWZjOTc2MDNkYzYwZDIwNGQ3ZC5zZXRDb250ZW50KGh0bWxfNWZhZmVhMjZkYzdlNGU1NjgxYTUzZjQ0ZWExNzEyYzApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mZGYyYTc3ZDIyYzM0MzJjOGZmOWMyNzFhOTQ5Zjk0Yi5iaW5kUG9wdXAocG9wdXBfZTE2Yjc2MjAyZTAzNGVmYzk3NjAzZGM2MGQyMDRkN2QpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzc2OGI1NGI0MjBiNDhkYzg4NzMwM2E0MmMwODNmNjcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy4zOTM0NzEsLTExOS43NDEwMzddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iMzc5ZTc3M2E2NGM0MDZlYTc2ZjYxNTM2MDU3ODQ1ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81YWE1YzU1NTM1Mjg0NGQ1ODhjYmI1MmQ3OWNjMzUzNSA9ICQoJzxkaXYgaWQ9Imh0bWxfNWFhNWM1NTUzNTI4NDRkNTg4Y2JiNTJkNzljYzM1MzUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjkzNjAxPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iMzc5ZTc3M2E2NGM0MDZlYTc2ZjYxNTM2MDU3ODQ1ZC5zZXRDb250ZW50KGh0bWxfNWFhNWM1NTUzNTI4NDRkNTg4Y2JiNTJkNzljYzM1MzUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jNzY4YjU0YjQyMGI0OGRjODg3MzAzYTQyYzA4M2Y2Ny5iaW5kUG9wdXAocG9wdXBfYjM3OWU3NzNhNjRjNDA2ZWE3NmY2MTUzNjA1Nzg0NWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNWYyNGU3MGE2YWZmNGI1NWExMjlhYTAxM2RjYTA3ZjIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs0Mi45NjMwMywtNzUuOTQ4NDM5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzZmM2QwNWJkNmZkNDU5MzgzZDk2ODhlMDY4MmE3N2QgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGIyNDk0NWQxYWViNGJkZDgzYTc0NzIwMjZhNTFjMTUgPSAkKCc8ZGl2IGlkPSJodG1sXzRiMjQ5NDVkMWFlYjRiZGQ4M2E3NDcyMDI2YTUxYzE1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij4xMzEwNDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzZmM2QwNWJkNmZkNDU5MzgzZDk2ODhlMDY4MmE3N2Quc2V0Q29udGVudChodG1sXzRiMjQ5NDVkMWFlYjRiZGQ4M2E3NDcyMDI2YTUxYzE1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNWYyNGU3MGE2YWZmNGI1NWExMjlhYTAxM2RjYTA3ZjIuYmluZFBvcHVwKHBvcHVwXzM2ZjNkMDViZDZmZDQ1OTM4M2Q5Njg4ZTA2ODJhNzdkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzgzNmNlYTc5NzE5ZTQ5N2E4ZGI3NjRhNGUwNmZmOTNlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzAuNzI2NzA5LC05NS45MDM4OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzllYzUyNDU0NWMwZDRkMzFhODM1M2E2OWNlMThkZDllID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM3OTNkYmMzN2EwMTRhZTE5ZDZhZmYwNzA4ZmVjZDNiID0gJCgnPGRpdiBpZD0iaHRtbF8zNzkzZGJjMzdhMDE0YWUxOWQ2YWZmMDcwOGZlY2QzYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Nzc4MzE8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzllYzUyNDU0NWMwZDRkMzFhODM1M2E2OWNlMThkZDllLnNldENvbnRlbnQoaHRtbF8zNzkzZGJjMzdhMDE0YWUxOWQ2YWZmMDcwOGZlY2QzYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzgzNmNlYTc5NzE5ZTQ5N2E4ZGI3NjRhNGUwNmZmOTNlLmJpbmRQb3B1cChwb3B1cF85ZWM1MjQ1NDVjMGQ0ZDMxYTgzNTNhNjljZTE4ZGQ5ZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wZGIwNGY2MmIxNWY0MDdlYmIxMmI4NDUwNThhNmRmZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzQ3LjUyNTI5MSwtMTE3LjI3NTkxN10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg2YmVhMmY5NTY3ZDQwNzhiZGExNmY1ODM0Y2NmZDFhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNlMmQzZmRhZTlhMTQ2MThhMjE4MzNlNzBlOGYwMjg0ID0gJCgnPGRpdiBpZD0iaHRtbF8zZTJkM2ZkYWU5YTE0NjE4YTIxODMzZTcwZThmMDI4NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+OTkwMzY8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzg2YmVhMmY5NTY3ZDQwNzhiZGExNmY1ODM0Y2NmZDFhLnNldENvbnRlbnQoaHRtbF8zZTJkM2ZkYWU5YTE0NjE4YTIxODMzZTcwZThmMDI4NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzBkYjA0ZjYyYjE1ZjQwN2ViYjEyYjg0NTA1OGE2ZGZlLmJpbmRQb3B1cChwb3B1cF84NmJlYTJmOTU2N2Q0MDc4YmRhMTZmNTgzNGNjZmQxYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xYzY1MTJlN2MwODA0ZTZmOTc4ZDgyNjE4ZTlhMTZiYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM5LjYwODk0LC0xMTkuNzc2NjUzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOGM4NTE4ZGYzY2FhNDVhY2FkYjY4YmFjOTQzZDAzZTMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjk5OGE1NTNjNTRkNDhhMGEyNTU4YzMxOTAxZjA3M2UgPSAkKCc8ZGl2IGlkPSJodG1sXzY5OThhNTUzYzU0ZDQ4YTBhMjU1OGMzMTkwMWYwNzNlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij44OTQzMzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOGM4NTE4ZGYzY2FhNDVhY2FkYjY4YmFjOTQzZDAzZTMuc2V0Q29udGVudChodG1sXzY5OThhNTUzYzU0ZDQ4YTBhMjU1OGMzMTkwMWYwNzNlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMWM2NTEyZTdjMDgwNGU2Zjk3OGQ4MjYxOGU5YTE2YmEuYmluZFBvcHVwKHBvcHVwXzhjODUxOGRmM2NhYTQ1YWNhZGI2OGJhYzk0M2QwM2UzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQxOWYzZDJjMTMyMDQ1MjFiMTc2ZmM5NDUzNmIyYTA4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNDEuMjQ2MDIyLC0xMDMuNjY3Njk2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjM1ZDZiNTRhNTQ2NDE1YmEzYzkxM2QzNDM5ZjFiNjggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYmNiNTdhZGQyYTA2NDRjYTg3YjMxMjFmNmI3ZGUwZmEgPSAkKCc8ZGl2IGlkPSJodG1sX2JjYjU3YWRkMmEwNjQ0Y2E4N2IzMTIxZjZiN2RlMGZhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij42OTE0NTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjM1ZDZiNTRhNTQ2NDE1YmEzYzkxM2QzNDM5ZjFiNjguc2V0Q29udGVudChodG1sX2JjYjU3YWRkMmEwNjQ0Y2E4N2IzMTIxZjZiN2RlMGZhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDE5ZjNkMmMxMzIwNDUyMWIxNzZmYzk0NTM2YjJhMDguYmluZFBvcHVwKHBvcHVwXzIzNWQ2YjU0YTU0NjQxNWJhM2M5MTNkMzQzOWYxYjY4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzBiMTVlMjdlOTJhMTQ3ODE5Y2QwMzE2MjYwOGUwNmQ0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNDcuMjU3Mjg4LC0xMjEuMjcwODc4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjlhZWVmOWUwNWI5NGE2MzhjNjE0M2U2ZjMzODllOGUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfN2IzOGQwNGU2NmZmNDFhYTg2ZTQ4YzMzZjI1NWNmZTUgPSAkKCc8ZGl2IGlkPSJodG1sXzdiMzhkMDRlNjZmZjQxYWE4NmU0OGMzM2YyNTVjZmU1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij45ODkyNTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjlhZWVmOWUwNWI5NGE2MzhjNjE0M2U2ZjMzODllOGUuc2V0Q29udGVudChodG1sXzdiMzhkMDRlNjZmZjQxYWE4NmU0OGMzM2YyNTVjZmU1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMGIxNWUyN2U5MmExNDc4MTljZDAzMTYyNjA4ZTA2ZDQuYmluZFBvcHVwKHBvcHVwXzY5YWVlZjllMDViOTRhNjM4YzYxNDNlNmYzMzg5ZThlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzFlOWFhMzllZDcxZjQ5MzZiODU3NjE4OGIwZjQ1YmNmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzUuNjAzOTcyLC05MS45NDQ3OTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81NGIwN2FiNTgzYzg0M2QzYjI4YjhhNzE5MTU5ZDdjZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wNDMxZDUxZWZhZDY0NGFhYjdhZDE4YTMyMDM5MjIzMyA9ICQoJzxkaXYgaWQ9Imh0bWxfMDQzMWQ1MWVmYWQ2NDRhYWI3YWQxOGEzMjAzOTIyMzMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjcyNTMwPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81NGIwN2FiNTgzYzg0M2QzYjI4YjhhNzE5MTU5ZDdjZi5zZXRDb250ZW50KGh0bWxfMDQzMWQ1MWVmYWQ2NDRhYWI3YWQxOGEzMjAzOTIyMzMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8xZTlhYTM5ZWQ3MWY0OTM2Yjg1NzYxODhiMGY0NWJjZi5iaW5kUG9wdXAocG9wdXBfNTRiMDdhYjU4M2M4NDNkM2IyOGI4YTcxOTE1OWQ3Y2YpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZWM3NjliYTEyYjcwNDM5ZWFkYzBiOGE2NDYwMTJlMzEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs0Mi4zNzU2MzQsLTcxLjg2NzM4Ml0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzA2ZjdlYjMwZmVkODQ2YzBiZTI3NzZjZDJlODc5MGRhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhmZjExMDQ5N2RkYTRhOTA5ODJjMTAxMWJlZGQ0Zjk4ID0gJCgnPGRpdiBpZD0iaHRtbF84ZmYxMTA0OTdkZGE0YTkwOTgyYzEwMTFiZWRkNGY5OCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+MDE1MjI8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzA2ZjdlYjMwZmVkODQ2YzBiZTI3NzZjZDJlODc5MGRhLnNldENvbnRlbnQoaHRtbF84ZmYxMTA0OTdkZGE0YTkwOTgyYzEwMTFiZWRkNGY5OCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2VjNzY5YmExMmI3MDQzOWVhZGMwYjhhNjQ2MDEyZTMxLmJpbmRQb3B1cChwb3B1cF8wNmY3ZWIzMGZlZDg0NmMwYmUyNzc2Y2QyZTg3OTBkYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9lYTZmNjg1ZTg4MDk0YjhmOGNmMGU2ZDBiZGI0MTUzNiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzQ4LjA4NDAyNSwtOTcuMjAwMTY5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTEwY2ZlNzhmOGY0NDAyN2FkM2Q3OWMzNTNlMDI3NjggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDBhMjUzMzI2YTUwNDRjNDkxYmNlZTJmZTc0YmMyZjcgPSAkKCc8ZGl2IGlkPSJodG1sXzAwYTI1MzMyNmE1MDQ0YzQ5MWJjZWUyZmU3NGJjMmY3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij41ODI1NjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTEwY2ZlNzhmOGY0NDAyN2FkM2Q3OWMzNTNlMDI3Njguc2V0Q29udGVudChodG1sXzAwYTI1MzMyNmE1MDQ0YzQ5MWJjZWUyZmU3NGJjMmY3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZWE2ZjY4NWU4ODA5NGI4ZjhjZjBlNmQwYmRiNDE1MzYuYmluZFBvcHVwKHBvcHVwX2ExMGNmZTc4ZjhmNDQwMjdhZDNkNzljMzUzZTAyNzY4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2M2ODBhN2U4ZjgzNTQwOTFiNDNhYTg2ZjYzYmVhYzU2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzQuOTM5MjM1LC05Ny43MjgzMThdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85OWU1OWRlYmJiOWQ0ZmRjOGQ3Y2E0MmI2MzZjY2EyZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81M2UyMGMwNDBiNjQ0YjZmOWRiNDEyOTRhODg0MjY4MCA9ICQoJzxkaXYgaWQ9Imh0bWxfNTNlMjBjMDQwYjY0NGI2ZjlkYjQxMjk0YTg4NDI2ODAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjczMDAyPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85OWU1OWRlYmJiOWQ0ZmRjOGQ3Y2E0MmI2MzZjY2EyZC5zZXRDb250ZW50KGh0bWxfNTNlMjBjMDQwYjY0NGI2ZjlkYjQxMjk0YTg4NDI2ODApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jNjgwYTdlOGY4MzU0MDkxYjQzYWE4NmY2M2JlYWM1Ni5iaW5kUG9wdXAocG9wdXBfOTllNTlkZWJiYjlkNGZkYzhkN2NhNDJiNjM2Y2NhMmQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYWVmOGJlNGRjZjUzNGU1MjlkOGVjMTFkOTA4MmM5ZGMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszMy40MTU4ODQsLTg2LjUzMDk5Ml0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzgwZWRlMzg3OGY2NDQwMmViNmRhZDUxNjUzMDUwZWQ2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2JiNmIwNDBlOGYwOTRmZDBhNDIzYTRiNTJmN2Y4MWZiID0gJCgnPGRpdiBpZD0iaHRtbF9iYjZiMDQwZThmMDk0ZmQwYTQyM2E0YjUyZjdmODFmYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+MzUxNDc8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzgwZWRlMzg3OGY2NDQwMmViNmRhZDUxNjUzMDUwZWQ2LnNldENvbnRlbnQoaHRtbF9iYjZiMDQwZThmMDk0ZmQwYTQyM2E0YjUyZjdmODFmYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2FlZjhiZTRkY2Y1MzRlNTI5ZDhlYzExZDkwODJjOWRjLmJpbmRQb3B1cChwb3B1cF84MGVkZTM4NzhmNjQ0MDJlYjZkYWQ1MTY1MzA1MGVkNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83Yjg0OTVhYzBhOWQ0Nzg3OWZmODc4MTdmMjk5NDhkYyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzQ1LjAxNDU1MSwtOTMuMDI1NTM1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzQyNjkxM2UwOTZiNGZhYmExNTRhZTBmNDJlYmI5OTkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMmE4YjdiYzAzNzM3NGVmY2E4YTQ2YjM1MmNiOTcwMmEgPSAkKCc8ZGl2IGlkPSJodG1sXzJhOGI3YmMwMzczNzRlZmNhOGE0NmIzNTJjYjk3MDJhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij41NTEwOTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzQyNjkxM2UwOTZiNGZhYmExNTRhZTBmNDJlYmI5OTkuc2V0Q29udGVudChodG1sXzJhOGI3YmMwMzczNzRlZmNhOGE0NmIzNTJjYjk3MDJhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfN2I4NDk1YWMwYTlkNDc4NzlmZjg3ODE3ZjI5OTQ4ZGMuYmluZFBvcHVwKHBvcHVwX2M0MjY5MTNlMDk2YjRmYWJhMTU0YWUwZjQyZWJiOTk5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzczMDI1NzMxYzA0ODQ0OTA5YmU0ZGViNWE5YzBjODEyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMjkuNTA3MTYyLC05NC45ODcyNDddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zMTFhYjQyYmExZTE0NmNiYTYxOGM3YjFjZjY2NGMxNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82ZjMyZDJhYmYwODg0MmQwYTZlYzc1ZDVhYzE1YWNmNCA9ICQoJzxkaXYgaWQ9Imh0bWxfNmYzMmQyYWJmMDg4NDJkMGE2ZWM3NWQ1YWMxNWFjZjQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjc3NTE4PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zMTFhYjQyYmExZTE0NmNiYTYxOGM3YjFjZjY2NGMxNi5zZXRDb250ZW50KGh0bWxfNmYzMmQyYWJmMDg4NDJkMGE2ZWM3NWQ1YWMxNWFjZjQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83MzAyNTczMWMwNDg0NDkwOWJlNGRlYjVhOWMwYzgxMi5iaW5kUG9wdXAocG9wdXBfMzExYWI0MmJhMWUxNDZjYmE2MThjN2IxY2Y2NjRjMTYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOGVjODE4NDAzNDM2NDA0Y2FkOTU5OGY1NWFmZjJmMzUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszOS43OTY1LC03NS42MTI4NF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2ViYjE4MWI1YTA3YzQ2OTQ5ZDVmNTk1YjdiMzkzNDIzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzAyZGNjYWJjZmUwNDQzZDE5NGYzNTgyMDM4MDk2MmU1ID0gJCgnPGRpdiBpZD0iaHRtbF8wMmRjY2FiY2ZlMDQ0M2QxOTRmMzU4MjAzODA5NjJlNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+MTk4MDc8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ViYjE4MWI1YTA3YzQ2OTQ5ZDVmNTk1YjdiMzkzNDIzLnNldENvbnRlbnQoaHRtbF8wMmRjY2FiY2ZlMDQ0M2QxOTRmMzU4MjAzODA5NjJlNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzhlYzgxODQwMzQzNjQwNGNhZDk1OThmNTVhZmYyZjM1LmJpbmRQb3B1cChwb3B1cF9lYmIxODFiNWEwN2M0Njk0OWQ1ZjU5NWI3YjM5MzQyMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83YWM1NGIyNDBhYWI0ZmNmYmU1ZDE2MDU0OWE4NzlmYiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjgxNjMyMiwtNzguNzkyNTY4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWY5Y2E0Njg0MDE4NDI1M2I3YjdmODc3NjExMzkyNTUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTkzYTEwMjVjNDZmNGQ3YmE5MTU0Y2RlYzJjN2U3ZTEgPSAkKCc8ZGl2IGlkPSJodG1sXzE5M2ExMDI1YzQ2ZjRkN2JhOTE1NGNkZWMyYzdlN2UxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij4xNTcyMTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMWY5Y2E0Njg0MDE4NDI1M2I3YjdmODc3NjExMzkyNTUuc2V0Q29udGVudChodG1sXzE5M2ExMDI1YzQ2ZjRkN2JhOTE1NGNkZWMyYzdlN2UxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfN2FjNTRiMjQwYWFiNGZjZmJlNWQxNjA1NDlhODc5ZmIuYmluZFBvcHVwKHBvcHVwXzFmOWNhNDY4NDAxODQyNTNiN2I3Zjg3NzYxMTM5MjU1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2RkMDYxMjYxY2IzZDQwZDVhMzlkNDg2YTVmZTMwZWU1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuNTU2NDQ5LC03My4wNDg3ODddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80NjMyMjdhOGYxNjI0OTNhOGNkMDUxY2IxZTBkMmUyOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80NGJjNzdiNjFmNzc0ZTAxOTYzZjkxODk4M2NmMDA0MiA9ICQoJzxkaXYgaWQ9Imh0bWxfNDRiYzc3YjYxZjc3NGUwMTk2M2Y5MTg5ODNjZjAwNDIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjA1Nzc3PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80NjMyMjdhOGYxNjI0OTNhOGNkMDUxY2IxZTBkMmUyOS5zZXRDb250ZW50KGh0bWxfNDRiYzc3YjYxZjc3NGUwMTk2M2Y5MTg5ODNjZjAwNDIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kZDA2MTI2MWNiM2Q0MGQ1YTM5ZDQ4NmE1ZmUzMGVlNS5iaW5kUG9wdXAocG9wdXBfNDYzMjI3YThmMTYyNDkzYThjZDA1MWNiMWUwZDJlMjkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzllOGUzNTVjMGU1NDYzNjliMTdjMWRkMzg4ZjFhYjggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy45NjUzMDEsLTc2Ljc3MTA2N10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQ0YTYzYjZkYTc5ODQzNWRiODA4YWQ3NzlkMGRhZmY1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2VmYjc2ODIxYWVjZjRhOGFiZTAwNjJlZGE4ZjZkZjNmID0gJCgnPGRpdiBpZD0iaHRtbF9lZmI3NjgyMWFlY2Y0YThhYmUwMDYyZWRhOGY2ZGYzZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+MjI1NzI8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQ0YTYzYjZkYTc5ODQzNWRiODA4YWQ3NzlkMGRhZmY1LnNldENvbnRlbnQoaHRtbF9lZmI3NjgyMWFlY2Y0YThhYmUwMDYyZWRhOGY2ZGYzZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2M5ZThlMzU1YzBlNTQ2MzY5YjE3YzFkZDM4OGYxYWI4LmJpbmRQb3B1cChwb3B1cF80NGE2M2I2ZGE3OTg0MzVkYjgwOGFkNzc5ZDBkYWZmNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hYmFhYTFhODNlMGU0MDVlYjJiZmJhOTQ5ZjZhZmIyMyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM4LjgwOTI4MywtOTYuOTYyNzg0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDdhODY1MmI2Zjc4NDhlZThjMThkM2Q1OGM2ZDlkOWQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDI2N2E2N2VkM2VmNDRiY2FkOTIyNzg3YjgyNWZkZGIgPSAkKCc8ZGl2IGlkPSJodG1sXzQyNjdhNjdlZDNlZjQ0YmNhZDkyMjc4N2I4MjVmZGRiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij42NzQ5MjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDdhODY1MmI2Zjc4NDhlZThjMThkM2Q1OGM2ZDlkOWQuc2V0Q29udGVudChodG1sXzQyNjdhNjdlZDNlZjQ0YmNhZDkyMjc4N2I4MjVmZGRiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYWJhYWExYTgzZTBlNDA1ZWIyYmZiYTk0OWY2YWZiMjMuYmluZFBvcHVwKHBvcHVwXzA3YTg2NTJiNmY3ODQ4ZWU4YzE4ZDNkNThjNmQ5ZDlkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzgxN2RiYzVhYzgxYTQ2YzVhZTVjY2Q4NmRmMTRhZmNjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMjkuOTU4NjAyLC04OS45OTc0NzddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80MTBkMjM0ODQyNGU0NzVlYmJjNGZjNzVhYzYzMTBhZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zZDQ5ZjYyZjIzODg0M2FmYmY1M2RiYzU1ZWUyNWExMyA9ICQoJzxkaXYgaWQ9Imh0bWxfM2Q0OWY2MmYyMzg4NDNhZmJmNTNkYmM1NWVlMjVhMTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjcwMDMyPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80MTBkMjM0ODQyNGU0NzVlYmJjNGZjNzVhYzYzMTBhZC5zZXRDb250ZW50KGh0bWxfM2Q0OWY2MmYyMzg4NDNhZmJmNTNkYmM1NWVlMjVhMTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84MTdkYmM1YWM4MWE0NmM1YWU1Y2NkODZkZjE0YWZjYy5iaW5kUG9wdXAocG9wdXBfNDEwZDIzNDg0MjRlNDc1ZWJiYzRmYzc1YWM2MzEwYWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzdlZTMyNzBkZWZiNDFhMzhkNmU5OTgzOTlhYTMzODMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszMy40MjczNDksLTgzLjYyNzddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wYWM5OTU5ZDU4YmE0NjA1YmI2MTVlNmYwZGE1MzExOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wMzA1OWRmYThiMWI0MzFjYmE5ZGUyNDVkNDk0NWY1MyA9ICQoJzxkaXYgaWQ9Imh0bWxfMDMwNTlkZmE4YjFiNDMxY2JhOWRlMjQ1ZDQ5NDVmNTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjMxMDg1PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wYWM5OTU5ZDU4YmE0NjA1YmI2MTVlNmYwZGE1MzExOS5zZXRDb250ZW50KGh0bWxfMDMwNTlkZmE4YjFiNDMxY2JhOWRlMjQ1ZDQ5NDVmNTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83N2VlMzI3MGRlZmI0MWEzOGQ2ZTk5ODM5OWFhMzM4My5iaW5kUG9wdXAocG9wdXBfMGFjOTk1OWQ1OGJhNDYwNWJiNjE1ZTZmMGRhNTMxMTkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZGYyYWUxYmE0YjRiNGJlZWE3MjRkZjZmMjlkOGFhOWEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs0My41NzUwMTUsLTk2LjQ5NTYwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc3ZDAxOWU4Yjk3ZDRjZGFhMzgwYTEyMDAyMTdkYmU3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc5NGRhYTgxYzFmNDQxYzBhYzBjMmE4ZjQ3NGQxNTJlID0gJCgnPGRpdiBpZD0iaHRtbF83OTRkYWE4MWMxZjQ0MWMwYWMwYzJhOGY0NzRkMTUyZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+NTcwNjg8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc3ZDAxOWU4Yjk3ZDRjZGFhMzgwYTEyMDAyMTdkYmU3LnNldENvbnRlbnQoaHRtbF83OTRkYWE4MWMxZjQ0MWMwYWMwYzJhOGY0NzRkMTUyZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2RmMmFlMWJhNGI0YjRiZWVhNzI0ZGY2ZjI5ZDhhYTlhLmJpbmRQb3B1cChwb3B1cF83N2QwMTllOGI5N2Q0Y2RhYTM4MGExMjAwMjE3ZGJlNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yY2U4ZTBlMTdmNzU0NDI4OTI2NDU0YTU4ODQ1M2M4MCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzQxLjEyOTIyOCwtMTAzLjAxNjYzMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg1ZjJhMTk5NjczYzRmY2Q5NWNiNWQwMTViMWM1OGQ5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzBmZDAyMDNlZjI3YzQ2MGNiMjk1YjllNDE3ZTllY2ZlID0gJCgnPGRpdiBpZD0iaHRtbF8wZmQwMjAzZWYyN2M0NjBjYjI5NWI5ZTQxN2U5ZWNmZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+NjkxNjI8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzg1ZjJhMTk5NjczYzRmY2Q5NWNiNWQwMTViMWM1OGQ5LnNldENvbnRlbnQoaHRtbF8wZmQwMjAzZWYyN2M0NjBjYjI5NWI5ZTQxN2U5ZWNmZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzJjZThlMGUxN2Y3NTQ0Mjg5MjY0NTRhNTg4NDUzYzgwLmJpbmRQb3B1cChwb3B1cF84NWYyYTE5OTY3M2M0ZmNkOTVjYjVkMDE1YjFjNThkOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85ZmIzNTI5NTI4N2E0NWFiOGI0MGI0MjVkMzI5MzFkOSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzQyLjE2MDM3MiwtNzcuMTI3NjExXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjkzMjlmYTNjYjRmNGI0ZTgwMjkyMzQzYmYxNDhlMjMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGIyNGEzY2YyMTBjNGIxODlkNjA1ZDhlNGQ2NzY1NmYgPSAkKCc8ZGl2IGlkPSJodG1sXzRiMjRhM2NmMjEwYzRiMTg5ZDYwNWQ4ZTRkNjc2NTZmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij4xNDg3MDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjkzMjlmYTNjYjRmNGI0ZTgwMjkyMzQzYmYxNDhlMjMuc2V0Q29udGVudChodG1sXzRiMjRhM2NmMjEwYzRiMTg5ZDYwNWQ4ZTRkNjc2NTZmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOWZiMzUyOTUyODdhNDVhYjhiNDBiNDI1ZDMyOTMxZDkuYmluZFBvcHVwKHBvcHVwX2Y5MzI5ZmEzY2I0ZjRiNGU4MDI5MjM0M2JmMTQ4ZTIzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzJiNDYxNjkzMWNkZTQzMTc5NjA1YjU3YzFiZjhjODdlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzkuMTQ4NzA2LC04MS44MTkxNjldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mZjA0ZDExZjI4YjM0MjczYTk5ZTFhNjI4ZWYzYTRjMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83MGUyM2M1NjEzODU0YTUwYWI0MDQxMmU4NDA4MGNjMSA9ICQoJzxkaXYgaWQ9Imh0bWxfNzBlMjNjNTYxMzg1NGE1MGFiNDA0MTJlODQwODBjYzEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjQ1NzcyPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mZjA0ZDExZjI4YjM0MjczYTk5ZTFhNjI4ZWYzYTRjMC5zZXRDb250ZW50KGh0bWxfNzBlMjNjNTYxMzg1NGE1MGFiNDA0MTJlODQwODBjYzEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yYjQ2MTY5MzFjZGU0MzE3OTYwNWI1N2MxYmY4Yzg3ZS5iaW5kUG9wdXAocG9wdXBfZmYwNGQxMWYyOGIzNDI3M2E5OWUxYTYyOGVmM2E0YzApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZGExZTBkNDY1MjAwNDQyMzg0MzFlNzFjZDYwZTllY2UgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs0My44ODk1ODgsLTEyNC4wMjQ5MDddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xYmM1NzcwYTk2NDA0NjVkOWI3OWRkZTVlZDMwYTE2ZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yYjQ2MDRiMzNjMDE0ZmU3ODlmNDAxMGQ0MWQ0MWQ2MCA9ICQoJzxkaXYgaWQ9Imh0bWxfMmI0NjA0YjMzYzAxNGZlNzg5ZjQwMTBkNDFkNDFkNjAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjk3NDkzPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xYmM1NzcwYTk2NDA0NjVkOWI3OWRkZTVlZDMwYTE2ZS5zZXRDb250ZW50KGh0bWxfMmI0NjA0YjMzYzAxNGZlNzg5ZjQwMTBkNDFkNDFkNjApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kYTFlMGQ0NjUyMDA0NDIzODQzMWU3MWNkNjBlOWVjZS5iaW5kUG9wdXAocG9wdXBfMWJjNTc3MGE5NjQwNDY1ZDliNzlkZGU1ZWQzMGExNmUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfN2NmMzQ4ZDQyNDdmNDljZjgwZjQyZjQzNDExYTExOWIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNS4wNzg3ODMsLTkyLjQ1NzM5Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzI5MDZhNmY4MTkzMTQzZGNiZDAxNTE0MzhlY2ZjNDdiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzEyZmRiMDY5MWVlZTQzNzNiNTQxYjJkNmM0OWYxOWFkID0gJCgnPGRpdiBpZD0iaHRtbF8xMmZkYjA2OTFlZWU0MzczYjU0MWIyZDZjNDlmMTlhZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+NzIwMzU8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzI5MDZhNmY4MTkzMTQzZGNiZDAxNTE0MzhlY2ZjNDdiLnNldENvbnRlbnQoaHRtbF8xMmZkYjA2OTFlZWU0MzczYjU0MWIyZDZjNDlmMTlhZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzdjZjM0OGQ0MjQ3ZjQ5Y2Y4MGY0MmY0MzQxMWExMTliLmJpbmRQb3B1cChwb3B1cF8yOTA2YTZmODE5MzE0M2RjYmQwMTUxNDM4ZWNmYzQ3Yik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iNGZmMjE4ZjU5ODE0NTc2YTNiNDBhZGRmZTQ4MTYxNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM0LjA0NjE2MiwtODEuMTA2NThdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80YWQxYzFjNDk4NGQ0MmUwYTAyMzc2MThmMTRjMGZlOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iNTZiMDkxODM3YWY0YjBmYmViOWE0ZjA0YmMyN2EwZSA9ICQoJzxkaXYgaWQ9Imh0bWxfYjU2YjA5MTgzN2FmNGIwZmJlYjlhNGYwNGJjMjdhMGUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjI5MjEwPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80YWQxYzFjNDk4NGQ0MmUwYTAyMzc2MThmMTRjMGZlOS5zZXRDb250ZW50KGh0bWxfYjU2YjA5MTgzN2FmNGIwZmJlYjlhNGYwNGJjMjdhMGUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iNGZmMjE4ZjU5ODE0NTc2YTNiNDBhZGRmZTQ4MTYxNS5iaW5kUG9wdXAocG9wdXBfNGFkMWMxYzQ5ODRkNDJlMGEwMjM3NjE4ZjE0YzBmZTkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZmE3MDJkNzc4YzVkNDg0MTgyYTM3NTVjODc3NWQ5NzEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC44MDEyMiwtOTMuMDYzOTQ5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYjE2OGI5OTFlMmY1NDk5ZmJhYmQ1ZTVkODIxMDdmN2QpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfM2NjMWQ2NTg0ZWJjNDhiOTk2Zjk3NzM5NWI5ZWVjNWYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNWJjOTJlMWNkNzU0NGUzMjhjMTM3OWJjYzQzOWU5ZmIgPSAkKCc8ZGl2IGlkPSJodG1sXzViYzkyZTFjZDc1NDRlMzI4YzEzNzliY2M0MzllOWZiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij41MjU4MTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfM2NjMWQ2NTg0ZWJjNDhiOTk2Zjk3NzM5NWI5ZWVjNWYuc2V0Q29udGVudChodG1sXzViYzkyZTFjZDc1NDRlMzI4YzEzNzliY2M0MzllOWZiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZmE3MDJkNzc4YzVkNDg0MTgyYTM3NTVjODc3NWQ5NzEuYmluZFBvcHVwKHBvcHVwXzNjYzFkNjU4NGViYzQ4Yjk5NmY5NzczOTViOWVlYzVmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzE1MGE4MjE5N2FhYzRhMDBiNzIxOGM3MTQ2ZjEzMTVhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzguNDMyNzk5LC03Ni45NTc5OTNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9iMTY4Yjk5MWUyZjU0OTlmYmFiZDVlNWQ4MjEwN2Y3ZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80ODkxYWI1MDBmNGY0YzQ1YTI3Y2Q2M2FiYjJkMmE3YyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iMzliODE5YTYyOWQ0MGZkOThiNzI5MmYxY2I0MDc3NiA9ICQoJzxkaXYgaWQ9Imh0bWxfYjM5YjgxOWE2MjlkNDBmZDk4YjcyOTJmMWNiNDA3NzYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjIwNjMyPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80ODkxYWI1MDBmNGY0YzQ1YTI3Y2Q2M2FiYjJkMmE3Yy5zZXRDb250ZW50KGh0bWxfYjM5YjgxOWE2MjlkNDBmZDk4YjcyOTJmMWNiNDA3NzYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8xNTBhODIxOTdhYWM0YTAwYjcyMThjNzE0NmYxMzE1YS5iaW5kUG9wdXAocG9wdXBfNDg5MWFiNTAwZjRmNGM0NWEyN2NkNjNhYmIyZDJhN2MpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMDE4ZWIxMTM3ZTAwNGIzZDk0Njk1ZTMwZDJhMTYwM2UgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszMy42MjcyNCwtMTEyLjA0ODQxNF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2IxNjhiOTkxZTJmNTQ5OWZiYWJkNWU1ZDgyMTA3ZjdkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzMzN2FlZDU4NDI5YzQxZmViNTNiODgwOWI4MTNiNWE3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzU3N2MzMmI2N2RiNzQ1ZTY5ZDUwZTg3NjVhMzUzYjFhID0gJCgnPGRpdiBpZD0iaHRtbF81NzdjMzJiNjdkYjc0NWU2OWQ1MGU4NzY1YTM1M2IxYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+ODUwMjI8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzMzN2FlZDU4NDI5YzQxZmViNTNiODgwOWI4MTNiNWE3LnNldENvbnRlbnQoaHRtbF81NzdjMzJiNjdkYjc0NWU2OWQ1MGU4NzY1YTM1M2IxYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzAxOGViMTEzN2UwMDRiM2Q5NDY5NWUzMGQyYTE2MDNlLmJpbmRQb3B1cChwb3B1cF8zMzdhZWQ1ODQyOWM0MWZlYjUzYjg4MDliODEzYjVhNyk7CgogICAgICAgICAgICAKICAgICAgICAKPC9zY3JpcHQ+\" 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 0x114bba5f8>" | |
] | |
}, | |
"execution_count": 3, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"#grab a random sample from df\n", | |
"subset_of_df = df.sample(n=100)\n", | |
"\n", | |
"#creating a map that's centered to our sample\n", | |
"some_map = folium.Map(location=[subset_of_df['INTPTLAT'].mean(), \n", | |
" subset_of_df['INTPTLONG'].mean()], \n", | |
" zoom_start=4)\n", | |
"\n", | |
"#creating a Marker for each point in df_sample. Each point will get a popup with their zip\n", | |
"for row in subset_of_df.itertuples():\n", | |
" some_map.add_child(folium.Marker(location=[row.INTPTLAT, row.INTPTLONG], \n", | |
" popup=row.GEOID))\n", | |
" \n", | |
"some_map" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"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.5.3" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<head> | |
<meta http-equiv="content-type" content="text/html; charset=UTF-8" /> | |
<script>L_PREFER_CANVAS = false; L_NO_TOUCH = false; L_DISABLE_3D = false;</script> | |
<script src="https://unpkg.com/[email protected]/dist/leaflet.js"></script> | |
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.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> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/1.0.0/leaflet.markercluster-src.js"></script> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/1.0.0/leaflet.markercluster.js"></script> | |
<link rel="stylesheet" href="https://unpkg.com/[email protected]/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://cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/1.0.0/MarkerCluster.Default.css" /> | |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/1.0.0/MarkerCluster.css" /> | |
<link rel="stylesheet" href="https://rawgit.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> | |
<style> #map_b168b991e2f5499fbabd5e5d82107f7d { | |
position : relative; | |
width : 100.0%; | |
height: 100.0%; | |
left: 0.0%; | |
top: 0.0%; | |
} | |
</style> | |
</head> | |
<body> | |
<div class="folium-map" id="map_b168b991e2f5499fbabd5e5d82107f7d" ></div> | |
</body> | |
<script> | |
var southWest = L.latLng(-90, -180); | |
var northEast = L.latLng(90, 180); | |
var bounds = L.latLngBounds(southWest, northEast); | |
var map_b168b991e2f5499fbabd5e5d82107f7d = L.map( | |
'map_b168b991e2f5499fbabd5e5d82107f7d', | |
{center: [38.63484512,-90.57107115], | |
zoom: 4, | |
maxBounds: bounds, | |
layers: [], | |
worldCopyJump: false, | |
crs: L.CRS.EPSG3857 | |
}); | |
var tile_layer_16ed964daf0e4bb2837afe4191a11215 = L.tileLayer( | |
'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', | |
{ | |
maxZoom: 18, | |
minZoom: 1, | |
continuousWorld: false, | |
noWrap: false, | |
attribution: 'Data by <a href="http://openstreetmap.org">OpenStreetMap</a>, under <a href="http://www.openstreetmap.org/copyright">ODbL</a>.', | |
detectRetina: false | |
} | |
).addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var marker_26d5d39deae147f6bcfaf1a345c0fcb2 = L.marker( | |
[33.633175,-101.178516], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_ea1be89101934eedbd8e7e1bb71b74df = L.popup({maxWidth: '300'}); | |
var html_b3ca1e93e3e0466f92a2a3faa7f7b9c0 = $('<div id="html_b3ca1e93e3e0466f92a2a3faa7f7b9c0" style="width: 100.0%; height: 100.0%;">79322</div>')[0]; | |
popup_ea1be89101934eedbd8e7e1bb71b74df.setContent(html_b3ca1e93e3e0466f92a2a3faa7f7b9c0); | |
marker_26d5d39deae147f6bcfaf1a345c0fcb2.bindPopup(popup_ea1be89101934eedbd8e7e1bb71b74df); | |
var marker_02ccde65edb34b97aada868843f3de51 = L.marker( | |
[38.109017,-98.096853], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_1c8039c0b21c468a8adf0917e4c0bfb7 = L.popup({maxWidth: '300'}); | |
var html_99fc5f49c961438697956f7df3e70898 = $('<div id="html_99fc5f49c961438697956f7df3e70898" style="width: 100.0%; height: 100.0%;">67561</div>')[0]; | |
popup_1c8039c0b21c468a8adf0917e4c0bfb7.setContent(html_99fc5f49c961438697956f7df3e70898); | |
marker_02ccde65edb34b97aada868843f3de51.bindPopup(popup_1c8039c0b21c468a8adf0917e4c0bfb7); | |
var marker_af69abe0939b41809a192d75058ea0c5 = L.marker( | |
[41.51596,-90.367897], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_089a8dcb5d374f209b72c260490b9486 = L.popup({maxWidth: '300'}); | |
var html_f75a6814fb244f508637c964968acc96 = $('<div id="html_f75a6814fb244f508637c964968acc96" style="width: 100.0%; height: 100.0%;">61236</div>')[0]; | |
popup_089a8dcb5d374f209b72c260490b9486.setContent(html_f75a6814fb244f508637c964968acc96); | |
marker_af69abe0939b41809a192d75058ea0c5.bindPopup(popup_089a8dcb5d374f209b72c260490b9486); | |
var marker_fa661044dbfc4e78be45fc1a9fd53ba6 = L.marker( | |
[41.095323,-80.51403], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_6653a567c33640efb64a32971c0b726c = L.popup({maxWidth: '300'}); | |
var html_f6a54a96853f4f8f95552d52e6cd37af = $('<div id="html_f6a54a96853f4f8f95552d52e6cd37af" style="width: 100.0%; height: 100.0%;">16140</div>')[0]; | |
popup_6653a567c33640efb64a32971c0b726c.setContent(html_f6a54a96853f4f8f95552d52e6cd37af); | |
marker_fa661044dbfc4e78be45fc1a9fd53ba6.bindPopup(popup_6653a567c33640efb64a32971c0b726c); | |
var marker_ad7d1600bc164b558ac5707321c26466 = L.marker( | |
[46.548256,-96.64298], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_45e5d776c42348488db49d768497e0b7 = L.popup({maxWidth: '300'}); | |
var html_544937887894478099a762d2adadbcc1 = $('<div id="html_544937887894478099a762d2adadbcc1" style="width: 100.0%; height: 100.0%;">56594</div>')[0]; | |
popup_45e5d776c42348488db49d768497e0b7.setContent(html_544937887894478099a762d2adadbcc1); | |
marker_ad7d1600bc164b558ac5707321c26466.bindPopup(popup_45e5d776c42348488db49d768497e0b7); | |
var marker_63836a9f745845869c03184672d9e70b = L.marker( | |
[32.093587,-109.133232], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_0fb2fcf3653f4aa28b4c3a3d1ac9b35a = L.popup({maxWidth: '300'}); | |
var html_d4aac6f983d64f8292ba88e0f82904ca = $('<div id="html_d4aac6f983d64f8292ba88e0f82904ca" style="width: 100.0%; height: 100.0%;">85632</div>')[0]; | |
popup_0fb2fcf3653f4aa28b4c3a3d1ac9b35a.setContent(html_d4aac6f983d64f8292ba88e0f82904ca); | |
marker_63836a9f745845869c03184672d9e70b.bindPopup(popup_0fb2fcf3653f4aa28b4c3a3d1ac9b35a); | |
var marker_d18c234d71944d08a7007dcbed304a48 = L.marker( | |
[42.996986,-98.429216], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_f836ef68fa87480599626b97894bc0a4 = L.popup({maxWidth: '300'}); | |
var html_1114958a62ab4a60870b3b42b8469524 = $('<div id="html_1114958a62ab4a60870b3b42b8469524" style="width: 100.0%; height: 100.0%;">57361</div>')[0]; | |
popup_f836ef68fa87480599626b97894bc0a4.setContent(html_1114958a62ab4a60870b3b42b8469524); | |
marker_d18c234d71944d08a7007dcbed304a48.bindPopup(popup_f836ef68fa87480599626b97894bc0a4); | |
var marker_73abc539f7cf48acb2292b3bf0190e48 = L.marker( | |
[30.648635,-86.130197], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_1da77c7fa3ff4068ac4de40b0fd23ddd = L.popup({maxWidth: '300'}); | |
var html_1cd9859a7aa148f0b85e298fbf3494e3 = $('<div id="html_1cd9859a7aa148f0b85e298fbf3494e3" style="width: 100.0%; height: 100.0%;">32435</div>')[0]; | |
popup_1da77c7fa3ff4068ac4de40b0fd23ddd.setContent(html_1cd9859a7aa148f0b85e298fbf3494e3); | |
marker_73abc539f7cf48acb2292b3bf0190e48.bindPopup(popup_1da77c7fa3ff4068ac4de40b0fd23ddd); | |
var marker_331c5f8fffb04406899ceedf3e400fb8 = L.marker( | |
[38.554832,-106.066038], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_4e41cd49c5c645fea6e79a090d9fc191 = L.popup({maxWidth: '300'}); | |
var html_565ba214b89f41cd922224524579560a = $('<div id="html_565ba214b89f41cd922224524579560a" style="width: 100.0%; height: 100.0%;">81201</div>')[0]; | |
popup_4e41cd49c5c645fea6e79a090d9fc191.setContent(html_565ba214b89f41cd922224524579560a); | |
marker_331c5f8fffb04406899ceedf3e400fb8.bindPopup(popup_4e41cd49c5c645fea6e79a090d9fc191); | |
var marker_47f3a7c67fe94324b7dd6bf05fe62c59 = L.marker( | |
[38.742052,-83.973538], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_ea80ce91f345484ab4a87684db994ebd = L.popup({maxWidth: '300'}); | |
var html_d4f30731a4ae472abafc6b6c101c32e8 = $('<div id="html_d4f30731a4ae472abafc6b6c101c32e8" style="width: 100.0%; height: 100.0%;">41002</div>')[0]; | |
popup_ea80ce91f345484ab4a87684db994ebd.setContent(html_d4f30731a4ae472abafc6b6c101c32e8); | |
marker_47f3a7c67fe94324b7dd6bf05fe62c59.bindPopup(popup_ea80ce91f345484ab4a87684db994ebd); | |
var marker_de4c6971a3f04b879b92c2a12aadc7db = L.marker( | |
[44.301396,-71.299834], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_f0c745629d824c49aca896b567561293 = L.popup({maxWidth: '300'}); | |
var html_043fc7d0716e4d1a82aa60e1a7a133dd = $('<div id="html_043fc7d0716e4d1a82aa60e1a7a133dd" style="width: 100.0%; height: 100.0%;">03593</div>')[0]; | |
popup_f0c745629d824c49aca896b567561293.setContent(html_043fc7d0716e4d1a82aa60e1a7a133dd); | |
marker_de4c6971a3f04b879b92c2a12aadc7db.bindPopup(popup_f0c745629d824c49aca896b567561293); | |
var marker_26c4b7a6b3724ba485f0bed0d153b640 = L.marker( | |
[40.539343,-89.61832], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_804c1cb2293349c6844f8c0a455b141d = L.popup({maxWidth: '300'}); | |
var html_40478f0797c94a7fb751bfd3e5285e1c = $('<div id="html_40478f0797c94a7fb751bfd3e5285e1c" style="width: 100.0%; height: 100.0%;">61554</div>')[0]; | |
popup_804c1cb2293349c6844f8c0a455b141d.setContent(html_40478f0797c94a7fb751bfd3e5285e1c); | |
marker_26c4b7a6b3724ba485f0bed0d153b640.bindPopup(popup_804c1cb2293349c6844f8c0a455b141d); | |
var marker_d1bb427a603d41e6a63fe3d33d72c454 = L.marker( | |
[46.427734,-117.565388], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_5794af8f579c48649f49d48f960313c8 = L.popup({maxWidth: '300'}); | |
var html_02052d51c1104924a679a32626d6c3ec = $('<div id="html_02052d51c1104924a679a32626d6c3ec" style="width: 100.0%; height: 100.0%;">99347</div>')[0]; | |
popup_5794af8f579c48649f49d48f960313c8.setContent(html_02052d51c1104924a679a32626d6c3ec); | |
marker_d1bb427a603d41e6a63fe3d33d72c454.bindPopup(popup_5794af8f579c48649f49d48f960313c8); | |
var marker_04355de691a44a238115bdb769aba507 = L.marker( | |
[43.305294,-94.234287], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_d073b392588d44368798dd3b1a319eee = L.popup({maxWidth: '300'}); | |
var html_0516a554568742fb816a0561ca622ecd = $('<div id="html_0516a554568742fb816a0561ca622ecd" style="width: 100.0%; height: 100.0%;">50517</div>')[0]; | |
popup_d073b392588d44368798dd3b1a319eee.setContent(html_0516a554568742fb816a0561ca622ecd); | |
marker_04355de691a44a238115bdb769aba507.bindPopup(popup_d073b392588d44368798dd3b1a319eee); | |
var marker_3139e48f4e304c8a9aa4313e3c715fc9 = L.marker( | |
[32.623185,-116.949053], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_0bc6ae7e8ec04e33a2a5b97cf0975027 = L.popup({maxWidth: '300'}); | |
var html_63f2ab0437fc4c66b440324d3d3c3c9b = $('<div id="html_63f2ab0437fc4c66b440324d3d3c3c9b" style="width: 100.0%; height: 100.0%;">91915</div>')[0]; | |
popup_0bc6ae7e8ec04e33a2a5b97cf0975027.setContent(html_63f2ab0437fc4c66b440324d3d3c3c9b); | |
marker_3139e48f4e304c8a9aa4313e3c715fc9.bindPopup(popup_0bc6ae7e8ec04e33a2a5b97cf0975027); | |
var marker_96fb5acbca6d4b40a008a4190b03d518 = L.marker( | |
[30.654712,-84.783254], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_311176574d864ae28664d15d8d828956 = L.popup({maxWidth: '300'}); | |
var html_7603a2cb70a445468c89645bae9fa051 = $('<div id="html_7603a2cb70a445468c89645bae9fa051" style="width: 100.0%; height: 100.0%;">32324</div>')[0]; | |
popup_311176574d864ae28664d15d8d828956.setContent(html_7603a2cb70a445468c89645bae9fa051); | |
marker_96fb5acbca6d4b40a008a4190b03d518.bindPopup(popup_311176574d864ae28664d15d8d828956); | |
var marker_a29cad2534dd420fb8c01519a5b13863 = L.marker( | |
[42.160064,-72.87384], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_3f4443be001e488ca60748df39955189 = L.popup({maxWidth: '300'}); | |
var html_d9921c43c0624bf78a678a8a60062e20 = $('<div id="html_d9921c43c0624bf78a678a8a60062e20" style="width: 100.0%; height: 100.0%;">01071</div>')[0]; | |
popup_3f4443be001e488ca60748df39955189.setContent(html_d9921c43c0624bf78a678a8a60062e20); | |
marker_a29cad2534dd420fb8c01519a5b13863.bindPopup(popup_3f4443be001e488ca60748df39955189); | |
var marker_59dc7160b8eb47c9b49a21236b8faba0 = L.marker( | |
[44.556661,-118.067106], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_1296b9d12cbe44a5b7f9940a6d8c369b = L.popup({maxWidth: '300'}); | |
var html_19e478fd99e745d0aa74b4a3f7bfbd97 = $('<div id="html_19e478fd99e745d0aa74b4a3f7bfbd97" style="width: 100.0%; height: 100.0%;">97837</div>')[0]; | |
popup_1296b9d12cbe44a5b7f9940a6d8c369b.setContent(html_19e478fd99e745d0aa74b4a3f7bfbd97); | |
marker_59dc7160b8eb47c9b49a21236b8faba0.bindPopup(popup_1296b9d12cbe44a5b7f9940a6d8c369b); | |
var marker_7271b52f17a8437b92c3333083e2a395 = L.marker( | |
[42.131459,-83.217792], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_157e4742d3584f0b8f084cc90fd55ef8 = L.popup({maxWidth: '300'}); | |
var html_2fd9f56001404ab0b6e299041fb9031a = $('<div id="html_2fd9f56001404ab0b6e299041fb9031a" style="width: 100.0%; height: 100.0%;">48183</div>')[0]; | |
popup_157e4742d3584f0b8f084cc90fd55ef8.setContent(html_2fd9f56001404ab0b6e299041fb9031a); | |
marker_7271b52f17a8437b92c3333083e2a395.bindPopup(popup_157e4742d3584f0b8f084cc90fd55ef8); | |
var marker_086a5713628147fab28ddd656ec006ea = L.marker( | |
[40.814026,-89.419945], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_bb64118a60f24c6a8c9409c7d4aaa783 = L.popup({maxWidth: '300'}); | |
var html_c87f3032abf9412aaf58be0f6e53fb21 = $('<div id="html_c87f3032abf9412aaf58be0f6e53fb21" style="width: 100.0%; height: 100.0%;">61548</div>')[0]; | |
popup_bb64118a60f24c6a8c9409c7d4aaa783.setContent(html_c87f3032abf9412aaf58be0f6e53fb21); | |
marker_086a5713628147fab28ddd656ec006ea.bindPopup(popup_bb64118a60f24c6a8c9409c7d4aaa783); | |
var marker_da00ef63bc874067bf7d7d5e2fb06e7b = L.marker( | |
[41.751057,-76.454741], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_71b3abd1c082461bb8537309ab46777c = L.popup({maxWidth: '300'}); | |
var html_d66d656c940e4328bb669942cb376f15 = $('<div id="html_d66d656c940e4328bb669942cb376f15" style="width: 100.0%; height: 100.0%;">18848</div>')[0]; | |
popup_71b3abd1c082461bb8537309ab46777c.setContent(html_d66d656c940e4328bb669942cb376f15); | |
marker_da00ef63bc874067bf7d7d5e2fb06e7b.bindPopup(popup_71b3abd1c082461bb8537309ab46777c); | |
var marker_0ff81513efe441bd9ab17631be2e31b3 = L.marker( | |
[41.715635,-83.550946], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_2e0097c1bd3c4bb0827dfe962b6f4883 = L.popup({maxWidth: '300'}); | |
var html_0c207ed9ebc04cd0904380634155e5d6 = $('<div id="html_0c207ed9ebc04cd0904380634155e5d6" style="width: 100.0%; height: 100.0%;">43612</div>')[0]; | |
popup_2e0097c1bd3c4bb0827dfe962b6f4883.setContent(html_0c207ed9ebc04cd0904380634155e5d6); | |
marker_0ff81513efe441bd9ab17631be2e31b3.bindPopup(popup_2e0097c1bd3c4bb0827dfe962b6f4883); | |
var marker_ae748dc3377a4877870ffc5370f796f3 = L.marker( | |
[36.528853,-96.361515], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_adfb499f97794b30af09914b968c4152 = L.popup({maxWidth: '300'}); | |
var html_a71e9298866243868a0f2bc1f1ac4930 = $('<div id="html_a71e9298866243868a0f2bc1f1ac4930" style="width: 100.0%; height: 100.0%;">74084</div>')[0]; | |
popup_adfb499f97794b30af09914b968c4152.setContent(html_a71e9298866243868a0f2bc1f1ac4930); | |
marker_ae748dc3377a4877870ffc5370f796f3.bindPopup(popup_adfb499f97794b30af09914b968c4152); | |
var marker_8ddcd446da9a45dcac4c8dcb94cc1f94 = L.marker( | |
[41.78143,-87.770521], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_1a197675481e4ab0a0a95a504aea7fd3 = L.popup({maxWidth: '300'}); | |
var html_3690cd904de8493f8cd7c52be0d8cd5a = $('<div id="html_3690cd904de8493f8cd7c52be0d8cd5a" style="width: 100.0%; height: 100.0%;">60638</div>')[0]; | |
popup_1a197675481e4ab0a0a95a504aea7fd3.setContent(html_3690cd904de8493f8cd7c52be0d8cd5a); | |
marker_8ddcd446da9a45dcac4c8dcb94cc1f94.bindPopup(popup_1a197675481e4ab0a0a95a504aea7fd3); | |
var marker_072f1ed6e73643fdb08a14bcbd1364e4 = L.marker( | |
[40.420015,-86.766044], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_2b630f98d4434829afc8773fd79b3cb2 = L.popup({maxWidth: '300'}); | |
var html_14616eb0029a463c806ec9023eccfb8d = $('<div id="html_14616eb0029a463c806ec9023eccfb8d" style="width: 100.0%; height: 100.0%;">47905</div>')[0]; | |
popup_2b630f98d4434829afc8773fd79b3cb2.setContent(html_14616eb0029a463c806ec9023eccfb8d); | |
marker_072f1ed6e73643fdb08a14bcbd1364e4.bindPopup(popup_2b630f98d4434829afc8773fd79b3cb2); | |
var marker_f9d5feca430c4348b518bfd9dfe1db23 = L.marker( | |
[42.19548,-74.503394], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_6beece5018ff40a28df269043310a26b = L.popup({maxWidth: '300'}); | |
var html_def7f03748fb435ba2457516d5ada3f9 = $('<div id="html_def7f03748fb435ba2457516d5ada3f9" style="width: 100.0%; height: 100.0%;">12430</div>')[0]; | |
popup_6beece5018ff40a28df269043310a26b.setContent(html_def7f03748fb435ba2457516d5ada3f9); | |
marker_f9d5feca430c4348b518bfd9dfe1db23.bindPopup(popup_6beece5018ff40a28df269043310a26b); | |
var marker_b21f8fc511a24c6faa380cf960cbdc46 = L.marker( | |
[38.392958,-99.686778], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_37e206e0c1a6480487116af7ff390ade = L.popup({maxWidth: '300'}); | |
var html_d2b1f69beb064c3d943fcf85c171dd40 = $('<div id="html_d2b1f69beb064c3d943fcf85c171dd40" style="width: 100.0%; height: 100.0%;">67516</div>')[0]; | |
popup_37e206e0c1a6480487116af7ff390ade.setContent(html_d2b1f69beb064c3d943fcf85c171dd40); | |
marker_b21f8fc511a24c6faa380cf960cbdc46.bindPopup(popup_37e206e0c1a6480487116af7ff390ade); | |
var marker_0d72f05f75474bcfaa35a2164e5d5be8 = L.marker( | |
[36.530708,-93.970641], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_7884e91919cf49c583d660017bad97c7 = L.popup({maxWidth: '300'}); | |
var html_1b6e2e8d9a7646bf94eb17e5583e1349 = $('<div id="html_1b6e2e8d9a7646bf94eb17e5583e1349" style="width: 100.0%; height: 100.0%;">65745</div>')[0]; | |
popup_7884e91919cf49c583d660017bad97c7.setContent(html_1b6e2e8d9a7646bf94eb17e5583e1349); | |
marker_0d72f05f75474bcfaa35a2164e5d5be8.bindPopup(popup_7884e91919cf49c583d660017bad97c7); | |
var marker_26d8b160f6bd4ee9b247f36b795a30f1 = L.marker( | |
[31.047796,-86.674187], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_4ed8eba5573348d6af9f6bd307a55844 = L.popup({maxWidth: '300'}); | |
var html_613892b8ebf94982b761ad5566c8674d = $('<div id="html_613892b8ebf94982b761ad5566c8674d" style="width: 100.0%; height: 100.0%;">36483</div>')[0]; | |
popup_4ed8eba5573348d6af9f6bd307a55844.setContent(html_613892b8ebf94982b761ad5566c8674d); | |
marker_26d8b160f6bd4ee9b247f36b795a30f1.bindPopup(popup_4ed8eba5573348d6af9f6bd307a55844); | |
var marker_d6ac3f82a58a4236818a8aba5b766dbc = L.marker( | |
[38.664571,-77.429326], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_ae321877baec4ee18f8edaea837ed822 = L.popup({maxWidth: '300'}); | |
var html_37e3eca0b10c46a2b8c5711667820fb8 = $('<div id="html_37e3eca0b10c46a2b8c5711667820fb8" style="width: 100.0%; height: 100.0%;">20112</div>')[0]; | |
popup_ae321877baec4ee18f8edaea837ed822.setContent(html_37e3eca0b10c46a2b8c5711667820fb8); | |
marker_d6ac3f82a58a4236818a8aba5b766dbc.bindPopup(popup_ae321877baec4ee18f8edaea837ed822); | |
var marker_42d401bd1c004643b590a96f0c21e946 = L.marker( | |
[42.683429,-77.565904], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_80f4fd75127c41c0ad7b9a4437d3841d = L.popup({maxWidth: '300'}); | |
var html_af54f631d49944678da6d7fb655939b5 = $('<div id="html_af54f631d49944678da6d7fb655939b5" style="width: 100.0%; height: 100.0%;">14560</div>')[0]; | |
popup_80f4fd75127c41c0ad7b9a4437d3841d.setContent(html_af54f631d49944678da6d7fb655939b5); | |
marker_42d401bd1c004643b590a96f0c21e946.bindPopup(popup_80f4fd75127c41c0ad7b9a4437d3841d); | |
var marker_94777b4e740b497a8b4fc60b40c0121d = L.marker( | |
[28.050827,-82.449573], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_7c04072a70534315b142691ee56cebf9 = L.popup({maxWidth: '300'}); | |
var html_4f16fb1fcb324094a01ed8dd80ab22c6 = $('<div id="html_4f16fb1fcb324094a01ed8dd80ab22c6" style="width: 100.0%; height: 100.0%;">33612</div>')[0]; | |
popup_7c04072a70534315b142691ee56cebf9.setContent(html_4f16fb1fcb324094a01ed8dd80ab22c6); | |
marker_94777b4e740b497a8b4fc60b40c0121d.bindPopup(popup_7c04072a70534315b142691ee56cebf9); | |
var marker_ecb6c3655d524fa2b4c0a2a0dab8e95b = L.marker( | |
[33.273603,-96.990042], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_5ff898b9a86c4f03aae1aabf86c24ee1 = L.popup({maxWidth: '300'}); | |
var html_16e43757d544428b92c1a7848c117d28 = $('<div id="html_16e43757d544428b92c1a7848c117d28" style="width: 100.0%; height: 100.0%;">76227</div>')[0]; | |
popup_5ff898b9a86c4f03aae1aabf86c24ee1.setContent(html_16e43757d544428b92c1a7848c117d28); | |
marker_ecb6c3655d524fa2b4c0a2a0dab8e95b.bindPopup(popup_5ff898b9a86c4f03aae1aabf86c24ee1); | |
var marker_88432cedb8894ac9a8033fe64f991ce5 = L.marker( | |
[36.298885,-86.834802], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_066d419a1ce944f299af4caea7cb406c = L.popup({maxWidth: '300'}); | |
var html_8647770fb54d4b0fac795ef62327bcf4 = $('<div id="html_8647770fb54d4b0fac795ef62327bcf4" style="width: 100.0%; height: 100.0%;">37189</div>')[0]; | |
popup_066d419a1ce944f299af4caea7cb406c.setContent(html_8647770fb54d4b0fac795ef62327bcf4); | |
marker_88432cedb8894ac9a8033fe64f991ce5.bindPopup(popup_066d419a1ce944f299af4caea7cb406c); | |
var marker_ff4c46a74c65461d872c9f3dd57078f4 = L.marker( | |
[30.697384,-91.579455], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_32374c76006b49ae8ed34f71ca1898c5 = L.popup({maxWidth: '300'}); | |
var html_00783bc8c7e24c39ad3e7364ce3def24 = $('<div id="html_00783bc8c7e24c39ad3e7364ce3def24" style="width: 100.0%; height: 100.0%;">70759</div>')[0]; | |
popup_32374c76006b49ae8ed34f71ca1898c5.setContent(html_00783bc8c7e24c39ad3e7364ce3def24); | |
marker_ff4c46a74c65461d872c9f3dd57078f4.bindPopup(popup_32374c76006b49ae8ed34f71ca1898c5); | |
var marker_c7f8bdadb3654764af00924075e32157 = L.marker( | |
[46.172521,-111.589827], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_bab27ab49d564e6eaef305a71d799a42 = L.popup({maxWidth: '300'}); | |
var html_8a4a6446b07a4cbca74587f7f791898c = $('<div id="html_8a4a6446b07a4cbca74587f7f791898c" style="width: 100.0%; height: 100.0%;">59643</div>')[0]; | |
popup_bab27ab49d564e6eaef305a71d799a42.setContent(html_8a4a6446b07a4cbca74587f7f791898c); | |
marker_c7f8bdadb3654764af00924075e32157.bindPopup(popup_bab27ab49d564e6eaef305a71d799a42); | |
var marker_d567b6ac01fb4fa98ac42c6df40d391c = L.marker( | |
[33.080534,-86.885794], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_67b84966ace94adc85778c469e1156d1 = L.popup({maxWidth: '300'}); | |
var html_5af67ce48a414676b54f59b5a5d0afa6 = $('<div id="html_5af67ce48a414676b54f59b5a5d0afa6" style="width: 100.0%; height: 100.0%;">35187</div>')[0]; | |
popup_67b84966ace94adc85778c469e1156d1.setContent(html_5af67ce48a414676b54f59b5a5d0afa6); | |
marker_d567b6ac01fb4fa98ac42c6df40d391c.bindPopup(popup_67b84966ace94adc85778c469e1156d1); | |
var marker_7c7ae908685549e4a0c3762f3e99229a = L.marker( | |
[34.348973,-86.729536], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_99451369cc464455978fc8e488d647e5 = L.popup({maxWidth: '300'}); | |
var html_fb4b93b6cc434a9c9cd2041b45d43f99 = $('<div id="html_fb4b93b6cc434a9c9cd2041b45d43f99" style="width: 100.0%; height: 100.0%;">35621</div>')[0]; | |
popup_99451369cc464455978fc8e488d647e5.setContent(html_fb4b93b6cc434a9c9cd2041b45d43f99); | |
marker_7c7ae908685549e4a0c3762f3e99229a.bindPopup(popup_99451369cc464455978fc8e488d647e5); | |
var marker_94cc65cb34984a478e8f91ec92c5dcfa = L.marker( | |
[36.753252,-81.767904], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_d5ec6f3016ab493583feb330b6ca956b = L.popup({maxWidth: '300'}); | |
var html_ad0858dce26b4baa86a0afb8e68fa207 = $('<div id="html_ad0858dce26b4baa86a0afb8e68fa207" style="width: 100.0%; height: 100.0%;">24340</div>')[0]; | |
popup_d5ec6f3016ab493583feb330b6ca956b.setContent(html_ad0858dce26b4baa86a0afb8e68fa207); | |
marker_94cc65cb34984a478e8f91ec92c5dcfa.bindPopup(popup_d5ec6f3016ab493583feb330b6ca956b); | |
var marker_8f19301b1d6049cf856c8e335a448229 = L.marker( | |
[39.905859,-90.634784], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_1afd549c0eab48188063e8b8379e4392 = L.popup({maxWidth: '300'}); | |
var html_b72daf984f334816899290c5303e85fb = $('<div id="html_b72daf984f334816899290c5303e85fb" style="width: 100.0%; height: 100.0%;">62378</div>')[0]; | |
popup_1afd549c0eab48188063e8b8379e4392.setContent(html_b72daf984f334816899290c5303e85fb); | |
marker_8f19301b1d6049cf856c8e335a448229.bindPopup(popup_1afd549c0eab48188063e8b8379e4392); | |
var marker_2115cf02932c4ad48d3dce911ab183a7 = L.marker( | |
[36.923421,-83.144356], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_879c211f451d4461b738708d37954039 = L.popup({maxWidth: '300'}); | |
var html_19cda3c239834e3aadf54edfdc4d5fb0 = $('<div id="html_19cda3c239834e3aadf54edfdc4d5fb0" style="width: 100.0%; height: 100.0%;">40870</div>')[0]; | |
popup_879c211f451d4461b738708d37954039.setContent(html_19cda3c239834e3aadf54edfdc4d5fb0); | |
marker_2115cf02932c4ad48d3dce911ab183a7.bindPopup(popup_879c211f451d4461b738708d37954039); | |
var marker_ec2dabb5d2674e64b89d03448d38f4d3 = L.marker( | |
[38.287955,-90.428585], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_cd3a25bb186a4733b127b28a3e6488f7 = L.popup({maxWidth: '300'}); | |
var html_ee9c0b4f43274d3480b4ae3888a928e3 = $('<div id="html_ee9c0b4f43274d3480b4ae3888a928e3" style="width: 100.0%; height: 100.0%;">63070</div>')[0]; | |
popup_cd3a25bb186a4733b127b28a3e6488f7.setContent(html_ee9c0b4f43274d3480b4ae3888a928e3); | |
marker_ec2dabb5d2674e64b89d03448d38f4d3.bindPopup(popup_cd3a25bb186a4733b127b28a3e6488f7); | |
var marker_db4a9404132c417f8ce011b7ae57f0c1 = L.marker( | |
[38.189004,-85.839265], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_e8c8c376838e4a3498dd2d3fb506a755 = L.popup({maxWidth: '300'}); | |
var html_0cdffbb3092d4bd588967e982c0c3f98 = $('<div id="html_0cdffbb3092d4bd588967e982c0c3f98" style="width: 100.0%; height: 100.0%;">40216</div>')[0]; | |
popup_e8c8c376838e4a3498dd2d3fb506a755.setContent(html_0cdffbb3092d4bd588967e982c0c3f98); | |
marker_db4a9404132c417f8ce011b7ae57f0c1.bindPopup(popup_e8c8c376838e4a3498dd2d3fb506a755); | |
var marker_bd5d40276d0942e4bec81b403594487a = L.marker( | |
[45.769824,-111.368344], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_f963d27f76e24de4a70a190bdf99365a = L.popup({maxWidth: '300'}); | |
var html_d2ea4e39da78407899972ef0f90199ab = $('<div id="html_d2ea4e39da78407899972ef0f90199ab" style="width: 100.0%; height: 100.0%;">59741</div>')[0]; | |
popup_f963d27f76e24de4a70a190bdf99365a.setContent(html_d2ea4e39da78407899972ef0f90199ab); | |
marker_bd5d40276d0942e4bec81b403594487a.bindPopup(popup_f963d27f76e24de4a70a190bdf99365a); | |
var marker_76a19a5944cc4665a8eedad21722872e = L.marker( | |
[35.86058,-80.099288], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_f2e821c78b4f45e5b8e82f883c8e5303 = L.popup({maxWidth: '300'}); | |
var html_39c266514e1c4608b55c50c3632e4e6f = $('<div id="html_39c266514e1c4608b55c50c3632e4e6f" style="width: 100.0%; height: 100.0%;">27360</div>')[0]; | |
popup_f2e821c78b4f45e5b8e82f883c8e5303.setContent(html_39c266514e1c4608b55c50c3632e4e6f); | |
marker_76a19a5944cc4665a8eedad21722872e.bindPopup(popup_f2e821c78b4f45e5b8e82f883c8e5303); | |
var marker_b8f5995ba9684ae191f3581a5af3b1bb = L.marker( | |
[30.923726,-86.449136], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_1ae592435f394060bb7a3fe83b361881 = L.popup({maxWidth: '300'}); | |
var html_0713a751b0a14efba76e0c631f72eca4 = $('<div id="html_0713a751b0a14efba76e0c631f72eca4" style="width: 100.0%; height: 100.0%;">32567</div>')[0]; | |
popup_1ae592435f394060bb7a3fe83b361881.setContent(html_0713a751b0a14efba76e0c631f72eca4); | |
marker_b8f5995ba9684ae191f3581a5af3b1bb.bindPopup(popup_1ae592435f394060bb7a3fe83b361881); | |
var marker_4f4d805a329441e489e0c52b91273991 = L.marker( | |
[36.217685,-85.813769], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_259ce18eb6da4ff59195dd4e8aa90b53 = L.popup({maxWidth: '300'}); | |
var html_d0c565c3e5bd4fd586c8ea3ccb9c2c0f = $('<div id="html_d0c565c3e5bd4fd586c8ea3ccb9c2c0f" style="width: 100.0%; height: 100.0%;">38552</div>')[0]; | |
popup_259ce18eb6da4ff59195dd4e8aa90b53.setContent(html_d0c565c3e5bd4fd586c8ea3ccb9c2c0f); | |
marker_4f4d805a329441e489e0c52b91273991.bindPopup(popup_259ce18eb6da4ff59195dd4e8aa90b53); | |
var marker_724e33e1a6114ddaa00048f146a9d47d = L.marker( | |
[35.096767,-86.191821], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_991de4bc638342a5ac027d110d1a45ba = L.popup({maxWidth: '300'}); | |
var html_3292e8b68de04230a9619f74bbbea2c2 = $('<div id="html_3292e8b68de04230a9619f74bbbea2c2" style="width: 100.0%; height: 100.0%;">37306</div>')[0]; | |
popup_991de4bc638342a5ac027d110d1a45ba.setContent(html_3292e8b68de04230a9619f74bbbea2c2); | |
marker_724e33e1a6114ddaa00048f146a9d47d.bindPopup(popup_991de4bc638342a5ac027d110d1a45ba); | |
var marker_c73f460399bd4211ad3c290631acab41 = L.marker( | |
[33.839078,-84.62821], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_7bc6282ff5a84407a2478d4ad8c57227 = L.popup({maxWidth: '300'}); | |
var html_99e4325e71ed423fa178b481c529ba0c = $('<div id="html_99e4325e71ed423fa178b481c529ba0c" style="width: 100.0%; height: 100.0%;">30106</div>')[0]; | |
popup_7bc6282ff5a84407a2478d4ad8c57227.setContent(html_99e4325e71ed423fa178b481c529ba0c); | |
marker_c73f460399bd4211ad3c290631acab41.bindPopup(popup_7bc6282ff5a84407a2478d4ad8c57227); | |
var marker_de8dc6a3122546a28efd22ef49ebbf8d = L.marker( | |
[39.979031,-74.160429], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_f1d507f4d5ee408b9138bf727ad2b819 = L.popup({maxWidth: '300'}); | |
var html_d8436d9f294c4200845f30c522639382 = $('<div id="html_d8436d9f294c4200845f30c522639382" style="width: 100.0%; height: 100.0%;">08753</div>')[0]; | |
popup_f1d507f4d5ee408b9138bf727ad2b819.setContent(html_d8436d9f294c4200845f30c522639382); | |
marker_de8dc6a3122546a28efd22ef49ebbf8d.bindPopup(popup_f1d507f4d5ee408b9138bf727ad2b819); | |
var marker_c7ba463ea3c040d8b96902aba1a447c8 = L.marker( | |
[45.578639,-93.592062], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_7c24a46cf48a4e26a0d964ae60c41667 = L.popup({maxWidth: '300'}); | |
var html_1f4a2245d73144d1ae1b73735f97f8f4 = $('<div id="html_1f4a2245d73144d1ae1b73735f97f8f4" style="width: 100.0%; height: 100.0%;">55371</div>')[0]; | |
popup_7c24a46cf48a4e26a0d964ae60c41667.setContent(html_1f4a2245d73144d1ae1b73735f97f8f4); | |
marker_c7ba463ea3c040d8b96902aba1a447c8.bindPopup(popup_7c24a46cf48a4e26a0d964ae60c41667); | |
var marker_4d49cd77762f4823aab61cbfec3e0bfc = L.marker( | |
[29.853375,-93.568288], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_e9ec92838e7c45d4af5a871dae2de89f = L.popup({maxWidth: '300'}); | |
var html_b6786158c7fb4c108c91735edec202bf = $('<div id="html_b6786158c7fb4c108c91735edec202bf" style="width: 100.0%; height: 100.0%;">70631</div>')[0]; | |
popup_e9ec92838e7c45d4af5a871dae2de89f.setContent(html_b6786158c7fb4c108c91735edec202bf); | |
marker_4d49cd77762f4823aab61cbfec3e0bfc.bindPopup(popup_e9ec92838e7c45d4af5a871dae2de89f); | |
var marker_64c6ba85db8e447e89f7a85978c0ead5 = L.marker( | |
[32.758408,-96.301323], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_0a9a104902d54435b92b7338e05b254e = L.popup({maxWidth: '300'}); | |
var html_ea3316da6734476681c00ce4b7c46eaa = $('<div id="html_ea3316da6734476681c00ce4b7c46eaa" style="width: 100.0%; height: 100.0%;">75160</div>')[0]; | |
popup_0a9a104902d54435b92b7338e05b254e.setContent(html_ea3316da6734476681c00ce4b7c46eaa); | |
marker_64c6ba85db8e447e89f7a85978c0ead5.bindPopup(popup_0a9a104902d54435b92b7338e05b254e); | |
var marker_55c20c215e474877b6b5d56ea9401e6c = L.marker( | |
[30.043016,-96.699188], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_366d289f65dc4a4aada2937d21328da3 = L.popup({maxWidth: '300'}); | |
var html_b7d0c6c30b384e13b259a51ff90f40b7 = $('<div id="html_b7d0c6c30b384e13b259a51ff90f40b7" style="width: 100.0%; height: 100.0%;">78954</div>')[0]; | |
popup_366d289f65dc4a4aada2937d21328da3.setContent(html_b7d0c6c30b384e13b259a51ff90f40b7); | |
marker_55c20c215e474877b6b5d56ea9401e6c.bindPopup(popup_366d289f65dc4a4aada2937d21328da3); | |
var marker_50efb332637b4e308a02113b8a131460 = L.marker( | |
[43.87711,-68.86868], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_8877291d15d64c268f35d126dc9d1ef9 = L.popup({maxWidth: '300'}); | |
var html_daae1fc9650944719dcc26851310605d = $('<div id="html_daae1fc9650944719dcc26851310605d" style="width: 100.0%; height: 100.0%;">04851</div>')[0]; | |
popup_8877291d15d64c268f35d126dc9d1ef9.setContent(html_daae1fc9650944719dcc26851310605d); | |
marker_50efb332637b4e308a02113b8a131460.bindPopup(popup_8877291d15d64c268f35d126dc9d1ef9); | |
var marker_55415de8cb654c29a7067b980bea87a4 = L.marker( | |
[41.865213,-88.061479], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_20711d83434c42be8502ec30d028ef11 = L.popup({maxWidth: '300'}); | |
var html_a3a7e70f28864188a2bc18c9cfc8616b = $('<div id="html_a3a7e70f28864188a2bc18c9cfc8616b" style="width: 100.0%; height: 100.0%;">60137</div>')[0]; | |
popup_20711d83434c42be8502ec30d028ef11.setContent(html_a3a7e70f28864188a2bc18c9cfc8616b); | |
marker_55415de8cb654c29a7067b980bea87a4.bindPopup(popup_20711d83434c42be8502ec30d028ef11); | |
var marker_ce7df45f850146489d936a483b50b016 = L.marker( | |
[40.834932,-80.323771], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_9cc68dbba403409aa5ed56377622997a = L.popup({maxWidth: '300'}); | |
var html_34d41efd5c2f44aaa00772072ec47826 = $('<div id="html_34d41efd5c2f44aaa00772072ec47826" style="width: 100.0%; height: 100.0%;">16136</div>')[0]; | |
popup_9cc68dbba403409aa5ed56377622997a.setContent(html_34d41efd5c2f44aaa00772072ec47826); | |
marker_ce7df45f850146489d936a483b50b016.bindPopup(popup_9cc68dbba403409aa5ed56377622997a); | |
var marker_6f8e14d98de14da9b59c2e202de7b7dc = L.marker( | |
[36.587245,-90.637706], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_8ac4ddd7773842648fec9071c201b73a = L.popup({maxWidth: '300'}); | |
var html_3670c0645cfc4476990be827d9e939b8 = $('<div id="html_3670c0645cfc4476990be827d9e939b8" style="width: 100.0%; height: 100.0%;">63953</div>')[0]; | |
popup_8ac4ddd7773842648fec9071c201b73a.setContent(html_3670c0645cfc4476990be827d9e939b8); | |
marker_6f8e14d98de14da9b59c2e202de7b7dc.bindPopup(popup_8ac4ddd7773842648fec9071c201b73a); | |
var marker_edfb378f2b5d4d0ba5b3f19da12fc1ba = L.marker( | |
[37.930345,-99.091082], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_7dadd32623034b57855d1e787dd67ac0 = L.popup({maxWidth: '300'}); | |
var html_885d53698e4c4babbc7f504e603bf9e1 = $('<div id="html_885d53698e4c4babbc7f504e603bf9e1" style="width: 100.0%; height: 100.0%;">67519</div>')[0]; | |
popup_7dadd32623034b57855d1e787dd67ac0.setContent(html_885d53698e4c4babbc7f504e603bf9e1); | |
marker_edfb378f2b5d4d0ba5b3f19da12fc1ba.bindPopup(popup_7dadd32623034b57855d1e787dd67ac0); | |
var marker_e64cd21464984b5f90dcd951734a8a32 = L.marker( | |
[40.509151,-75.38594], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_a1c517d789764710a4d6000221a7c6da = L.popup({maxWidth: '300'}); | |
var html_7d16c1228085461ea693b13a5900de4b = $('<div id="html_7d16c1228085461ea693b13a5900de4b" style="width: 100.0%; height: 100.0%;">18036</div>')[0]; | |
popup_a1c517d789764710a4d6000221a7c6da.setContent(html_7d16c1228085461ea693b13a5900de4b); | |
marker_e64cd21464984b5f90dcd951734a8a32.bindPopup(popup_a1c517d789764710a4d6000221a7c6da); | |
var marker_37f3e5ba456342598547d46c7833a2d7 = L.marker( | |
[41.947568,-87.702647], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_2f91a9e25118466e83efa3c52c93808f = L.popup({maxWidth: '300'}); | |
var html_426af8df7205430d8b57d7741e2f8d7c = $('<div id="html_426af8df7205430d8b57d7741e2f8d7c" style="width: 100.0%; height: 100.0%;">60618</div>')[0]; | |
popup_2f91a9e25118466e83efa3c52c93808f.setContent(html_426af8df7205430d8b57d7741e2f8d7c); | |
marker_37f3e5ba456342598547d46c7833a2d7.bindPopup(popup_2f91a9e25118466e83efa3c52c93808f); | |
var marker_2799d487ab4542f99c3a4d8f84a00039 = L.marker( | |
[43.108907,-91.660586], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_70846c33b98b48ae96d0b5d31299839d = L.popup({maxWidth: '300'}); | |
var html_66c0941047724a29bbff0f7d982cc8b3 = $('<div id="html_66c0941047724a29bbff0f7d982cc8b3" style="width: 100.0%; height: 100.0%;">52133</div>')[0]; | |
popup_70846c33b98b48ae96d0b5d31299839d.setContent(html_66c0941047724a29bbff0f7d982cc8b3); | |
marker_2799d487ab4542f99c3a4d8f84a00039.bindPopup(popup_70846c33b98b48ae96d0b5d31299839d); | |
var marker_a4c1d15896ab4431bf354ee6c60415ab = L.marker( | |
[38.760962,-83.314324], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_04da723169894d67ab8019b8f00c2d2d = L.popup({maxWidth: '300'}); | |
var html_5e910f92727e40749a6de1b4d3d97627 = $('<div id="html_5e910f92727e40749a6de1b4d3d97627" style="width: 100.0%; height: 100.0%;">45616</div>')[0]; | |
popup_04da723169894d67ab8019b8f00c2d2d.setContent(html_5e910f92727e40749a6de1b4d3d97627); | |
marker_a4c1d15896ab4431bf354ee6c60415ab.bindPopup(popup_04da723169894d67ab8019b8f00c2d2d); | |
var marker_fb4c19fa837f447baf23c21c7bbbf5b5 = L.marker( | |
[37.551783,-101.685232], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_1e6e9df4549e46dfa9fa7857361bc15e = L.popup({maxWidth: '300'}); | |
var html_40080f39448f4240ae2150b11a1ac397 = $('<div id="html_40080f39448f4240ae2150b11a1ac397" style="width: 100.0%; height: 100.0%;">67855</div>')[0]; | |
popup_1e6e9df4549e46dfa9fa7857361bc15e.setContent(html_40080f39448f4240ae2150b11a1ac397); | |
marker_fb4c19fa837f447baf23c21c7bbbf5b5.bindPopup(popup_1e6e9df4549e46dfa9fa7857361bc15e); | |
var marker_a5802abddd17427d8b7cbeff45745047 = L.marker( | |
[41.585933,-75.792369], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_6938eea42c5e4d5481884b1f4075f44c = L.popup({maxWidth: '300'}); | |
var html_0c85778b8c4f42319b7954f17a56e5aa = $('<div id="html_0c85778b8c4f42319b7954f17a56e5aa" style="width: 100.0%; height: 100.0%;">18419</div>')[0]; | |
popup_6938eea42c5e4d5481884b1f4075f44c.setContent(html_0c85778b8c4f42319b7954f17a56e5aa); | |
marker_a5802abddd17427d8b7cbeff45745047.bindPopup(popup_6938eea42c5e4d5481884b1f4075f44c); | |
var marker_3ab6082f0bef41a89c055dfca954fbd0 = L.marker( | |
[34.571036,-95.708133], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_a56b0f748ad84448bf1ed709ec8aa401 = L.popup({maxWidth: '300'}); | |
var html_826da7161e2a4a818a17fd5956c53089 = $('<div id="html_826da7161e2a4a818a17fd5956c53089" style="width: 100.0%; height: 100.0%;">74540</div>')[0]; | |
popup_a56b0f748ad84448bf1ed709ec8aa401.setContent(html_826da7161e2a4a818a17fd5956c53089); | |
marker_3ab6082f0bef41a89c055dfca954fbd0.bindPopup(popup_a56b0f748ad84448bf1ed709ec8aa401); | |
var marker_ef8e4d4c69194ab5b687f0904924f28f = L.marker( | |
[43.999115,-69.144355], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_a79c58b55bfa414daf0c85f81a304f34 = L.popup({maxWidth: '300'}); | |
var html_2f8ab333e99a4ebaa2e73bd12d1a7abc = $('<div id="html_2f8ab333e99a4ebaa2e73bd12d1a7abc" style="width: 100.0%; height: 100.0%;">04859</div>')[0]; | |
popup_a79c58b55bfa414daf0c85f81a304f34.setContent(html_2f8ab333e99a4ebaa2e73bd12d1a7abc); | |
marker_ef8e4d4c69194ab5b687f0904924f28f.bindPopup(popup_a79c58b55bfa414daf0c85f81a304f34); | |
var marker_f972c084abdc4957983440cb29a2468d = L.marker( | |
[35.052609,-78.907244], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_dd8048f1ca2b40199b3e43fe3fff29c0 = L.popup({maxWidth: '300'}); | |
var html_7e75f0fc664d4a1ba486664123e43a8f = $('<div id="html_7e75f0fc664d4a1ba486664123e43a8f" style="width: 100.0%; height: 100.0%;">28305</div>')[0]; | |
popup_dd8048f1ca2b40199b3e43fe3fff29c0.setContent(html_7e75f0fc664d4a1ba486664123e43a8f); | |
marker_f972c084abdc4957983440cb29a2468d.bindPopup(popup_dd8048f1ca2b40199b3e43fe3fff29c0); | |
var marker_fdf2a77d22c3432c8ff9c271a949f94b = L.marker( | |
[42.356494,-77.982064], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_e16b76202e034efc97603dc60d204d7d = L.popup({maxWidth: '300'}); | |
var html_5fafea26dc7e4e5681a53f44ea1712c0 = $('<div id="html_5fafea26dc7e4e5681a53f44ea1712c0" style="width: 100.0%; height: 100.0%;">14709</div>')[0]; | |
popup_e16b76202e034efc97603dc60d204d7d.setContent(html_5fafea26dc7e4e5681a53f44ea1712c0); | |
marker_fdf2a77d22c3432c8ff9c271a949f94b.bindPopup(popup_e16b76202e034efc97603dc60d204d7d); | |
var marker_c768b54b420b48dc887303a42c083f67 = L.marker( | |
[37.393471,-119.741037], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_b379e773a64c406ea76f61536057845d = L.popup({maxWidth: '300'}); | |
var html_5aa5c555352844d588cbb52d79cc3535 = $('<div id="html_5aa5c555352844d588cbb52d79cc3535" style="width: 100.0%; height: 100.0%;">93601</div>')[0]; | |
popup_b379e773a64c406ea76f61536057845d.setContent(html_5aa5c555352844d588cbb52d79cc3535); | |
marker_c768b54b420b48dc887303a42c083f67.bindPopup(popup_b379e773a64c406ea76f61536057845d); | |
var marker_5f24e70a6aff4b55a129aa013dca07f2 = L.marker( | |
[42.96303,-75.948439], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_36f3d05bd6fd459383d9688e0682a77d = L.popup({maxWidth: '300'}); | |
var html_4b24945d1aeb4bdd83a7472026a51c15 = $('<div id="html_4b24945d1aeb4bdd83a7472026a51c15" style="width: 100.0%; height: 100.0%;">13104</div>')[0]; | |
popup_36f3d05bd6fd459383d9688e0682a77d.setContent(html_4b24945d1aeb4bdd83a7472026a51c15); | |
marker_5f24e70a6aff4b55a129aa013dca07f2.bindPopup(popup_36f3d05bd6fd459383d9688e0682a77d); | |
var marker_836cea79719e497a8db764a4e06ff93e = L.marker( | |
[30.726709,-95.90388], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_9ec524545c0d4d31a8353a69ce18dd9e = L.popup({maxWidth: '300'}); | |
var html_3793dbc37a014ae19d6aff0708fecd3b = $('<div id="html_3793dbc37a014ae19d6aff0708fecd3b" style="width: 100.0%; height: 100.0%;">77831</div>')[0]; | |
popup_9ec524545c0d4d31a8353a69ce18dd9e.setContent(html_3793dbc37a014ae19d6aff0708fecd3b); | |
marker_836cea79719e497a8db764a4e06ff93e.bindPopup(popup_9ec524545c0d4d31a8353a69ce18dd9e); | |
var marker_0db04f62b15f407ebb12b845058a6dfe = L.marker( | |
[47.525291,-117.275917], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_86bea2f9567d4078bda16f5834ccfd1a = L.popup({maxWidth: '300'}); | |
var html_3e2d3fdae9a14618a21833e70e8f0284 = $('<div id="html_3e2d3fdae9a14618a21833e70e8f0284" style="width: 100.0%; height: 100.0%;">99036</div>')[0]; | |
popup_86bea2f9567d4078bda16f5834ccfd1a.setContent(html_3e2d3fdae9a14618a21833e70e8f0284); | |
marker_0db04f62b15f407ebb12b845058a6dfe.bindPopup(popup_86bea2f9567d4078bda16f5834ccfd1a); | |
var marker_1c6512e7c0804e6f978d82618e9a16ba = L.marker( | |
[39.60894,-119.776653], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_8c8518df3caa45acadb68bac943d03e3 = L.popup({maxWidth: '300'}); | |
var html_6998a553c54d48a0a2558c31901f073e = $('<div id="html_6998a553c54d48a0a2558c31901f073e" style="width: 100.0%; height: 100.0%;">89433</div>')[0]; | |
popup_8c8518df3caa45acadb68bac943d03e3.setContent(html_6998a553c54d48a0a2558c31901f073e); | |
marker_1c6512e7c0804e6f978d82618e9a16ba.bindPopup(popup_8c8518df3caa45acadb68bac943d03e3); | |
var marker_419f3d2c13204521b176fc94536b2a08 = L.marker( | |
[41.246022,-103.667696], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_235d6b54a546415ba3c913d3439f1b68 = L.popup({maxWidth: '300'}); | |
var html_bcb57add2a0644ca87b3121f6b7de0fa = $('<div id="html_bcb57add2a0644ca87b3121f6b7de0fa" style="width: 100.0%; height: 100.0%;">69145</div>')[0]; | |
popup_235d6b54a546415ba3c913d3439f1b68.setContent(html_bcb57add2a0644ca87b3121f6b7de0fa); | |
marker_419f3d2c13204521b176fc94536b2a08.bindPopup(popup_235d6b54a546415ba3c913d3439f1b68); | |
var marker_0b15e27e92a147819cd03162608e06d4 = L.marker( | |
[47.257288,-121.270878], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_69aeef9e05b94a638c6143e6f3389e8e = L.popup({maxWidth: '300'}); | |
var html_7b38d04e66ff41aa86e48c33f255cfe5 = $('<div id="html_7b38d04e66ff41aa86e48c33f255cfe5" style="width: 100.0%; height: 100.0%;">98925</div>')[0]; | |
popup_69aeef9e05b94a638c6143e6f3389e8e.setContent(html_7b38d04e66ff41aa86e48c33f255cfe5); | |
marker_0b15e27e92a147819cd03162608e06d4.bindPopup(popup_69aeef9e05b94a638c6143e6f3389e8e); | |
var marker_1e9aa39ed71f4936b8576188b0f45bcf = L.marker( | |
[35.603972,-91.944791], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_54b07ab583c843d3b28b8a719159d7cf = L.popup({maxWidth: '300'}); | |
var html_0431d51efad644aab7ad18a320392233 = $('<div id="html_0431d51efad644aab7ad18a320392233" style="width: 100.0%; height: 100.0%;">72530</div>')[0]; | |
popup_54b07ab583c843d3b28b8a719159d7cf.setContent(html_0431d51efad644aab7ad18a320392233); | |
marker_1e9aa39ed71f4936b8576188b0f45bcf.bindPopup(popup_54b07ab583c843d3b28b8a719159d7cf); | |
var marker_ec769ba12b70439eadc0b8a646012e31 = L.marker( | |
[42.375634,-71.867382], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_06f7eb30fed846c0be2776cd2e8790da = L.popup({maxWidth: '300'}); | |
var html_8ff110497dda4a90982c1011bedd4f98 = $('<div id="html_8ff110497dda4a90982c1011bedd4f98" style="width: 100.0%; height: 100.0%;">01522</div>')[0]; | |
popup_06f7eb30fed846c0be2776cd2e8790da.setContent(html_8ff110497dda4a90982c1011bedd4f98); | |
marker_ec769ba12b70439eadc0b8a646012e31.bindPopup(popup_06f7eb30fed846c0be2776cd2e8790da); | |
var marker_ea6f685e88094b8f8cf0e6d0bdb41536 = L.marker( | |
[48.084025,-97.200169], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_a10cfe78f8f44027ad3d79c353e02768 = L.popup({maxWidth: '300'}); | |
var html_00a253326a5044c491bcee2fe74bc2f7 = $('<div id="html_00a253326a5044c491bcee2fe74bc2f7" style="width: 100.0%; height: 100.0%;">58256</div>')[0]; | |
popup_a10cfe78f8f44027ad3d79c353e02768.setContent(html_00a253326a5044c491bcee2fe74bc2f7); | |
marker_ea6f685e88094b8f8cf0e6d0bdb41536.bindPopup(popup_a10cfe78f8f44027ad3d79c353e02768); | |
var marker_c680a7e8f8354091b43aa86f63beac56 = L.marker( | |
[34.939235,-97.728318], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_99e59debbb9d4fdc8d7ca42b636cca2d = L.popup({maxWidth: '300'}); | |
var html_53e20c040b644b6f9db41294a8842680 = $('<div id="html_53e20c040b644b6f9db41294a8842680" style="width: 100.0%; height: 100.0%;">73002</div>')[0]; | |
popup_99e59debbb9d4fdc8d7ca42b636cca2d.setContent(html_53e20c040b644b6f9db41294a8842680); | |
marker_c680a7e8f8354091b43aa86f63beac56.bindPopup(popup_99e59debbb9d4fdc8d7ca42b636cca2d); | |
var marker_aef8be4dcf534e529d8ec11d9082c9dc = L.marker( | |
[33.415884,-86.530992], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_80ede3878f64402eb6dad51653050ed6 = L.popup({maxWidth: '300'}); | |
var html_bb6b040e8f094fd0a423a4b52f7f81fb = $('<div id="html_bb6b040e8f094fd0a423a4b52f7f81fb" style="width: 100.0%; height: 100.0%;">35147</div>')[0]; | |
popup_80ede3878f64402eb6dad51653050ed6.setContent(html_bb6b040e8f094fd0a423a4b52f7f81fb); | |
marker_aef8be4dcf534e529d8ec11d9082c9dc.bindPopup(popup_80ede3878f64402eb6dad51653050ed6); | |
var marker_7b8495ac0a9d47879ff87817f29948dc = L.marker( | |
[45.014551,-93.025535], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_c426913e096b4faba154ae0f42ebb999 = L.popup({maxWidth: '300'}); | |
var html_2a8b7bc037374efca8a46b352cb9702a = $('<div id="html_2a8b7bc037374efca8a46b352cb9702a" style="width: 100.0%; height: 100.0%;">55109</div>')[0]; | |
popup_c426913e096b4faba154ae0f42ebb999.setContent(html_2a8b7bc037374efca8a46b352cb9702a); | |
marker_7b8495ac0a9d47879ff87817f29948dc.bindPopup(popup_c426913e096b4faba154ae0f42ebb999); | |
var marker_73025731c04844909be4deb5a9c0c812 = L.marker( | |
[29.507162,-94.987247], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_311ab42ba1e146cba618c7b1cf664c16 = L.popup({maxWidth: '300'}); | |
var html_6f32d2abf08842d0a6ec75d5ac15acf4 = $('<div id="html_6f32d2abf08842d0a6ec75d5ac15acf4" style="width: 100.0%; height: 100.0%;">77518</div>')[0]; | |
popup_311ab42ba1e146cba618c7b1cf664c16.setContent(html_6f32d2abf08842d0a6ec75d5ac15acf4); | |
marker_73025731c04844909be4deb5a9c0c812.bindPopup(popup_311ab42ba1e146cba618c7b1cf664c16); | |
var marker_8ec818403436404cad9598f55aff2f35 = L.marker( | |
[39.7965,-75.61284], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_ebb181b5a07c46949d5f595b7b393423 = L.popup({maxWidth: '300'}); | |
var html_02dccabcfe0443d194f35820380962e5 = $('<div id="html_02dccabcfe0443d194f35820380962e5" style="width: 100.0%; height: 100.0%;">19807</div>')[0]; | |
popup_ebb181b5a07c46949d5f595b7b393423.setContent(html_02dccabcfe0443d194f35820380962e5); | |
marker_8ec818403436404cad9598f55aff2f35.bindPopup(popup_ebb181b5a07c46949d5f595b7b393423); | |
var marker_7ac54b240aab4fcfbe5d160549a879fb = L.marker( | |
[40.816322,-78.792568], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_1f9ca46840184253b7b7f87761139255 = L.popup({maxWidth: '300'}); | |
var html_193a1025c46f4d7ba9154cdec2c7e7e1 = $('<div id="html_193a1025c46f4d7ba9154cdec2c7e7e1" style="width: 100.0%; height: 100.0%;">15721</div>')[0]; | |
popup_1f9ca46840184253b7b7f87761139255.setContent(html_193a1025c46f4d7ba9154cdec2c7e7e1); | |
marker_7ac54b240aab4fcfbe5d160549a879fb.bindPopup(popup_1f9ca46840184253b7b7f87761139255); | |
var marker_dd061261cb3d40d5a39d486a5fe30ee5 = L.marker( | |
[43.556449,-73.048787], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_463227a8f162493a8cd051cb1e0d2e29 = L.popup({maxWidth: '300'}); | |
var html_44bc77b61f774e01963f918983cf0042 = $('<div id="html_44bc77b61f774e01963f918983cf0042" style="width: 100.0%; height: 100.0%;">05777</div>')[0]; | |
popup_463227a8f162493a8cd051cb1e0d2e29.setContent(html_44bc77b61f774e01963f918983cf0042); | |
marker_dd061261cb3d40d5a39d486a5fe30ee5.bindPopup(popup_463227a8f162493a8cd051cb1e0d2e29); | |
var marker_c9e8e355c0e546369b17c1dd388f1ab8 = L.marker( | |
[37.965301,-76.771067], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_44a63b6da798435db808ad779d0daff5 = L.popup({maxWidth: '300'}); | |
var html_efb76821aecf4a8abe0062eda8f6df3f = $('<div id="html_efb76821aecf4a8abe0062eda8f6df3f" style="width: 100.0%; height: 100.0%;">22572</div>')[0]; | |
popup_44a63b6da798435db808ad779d0daff5.setContent(html_efb76821aecf4a8abe0062eda8f6df3f); | |
marker_c9e8e355c0e546369b17c1dd388f1ab8.bindPopup(popup_44a63b6da798435db808ad779d0daff5); | |
var marker_abaaa1a83e0e405eb2bfba949f6afb23 = L.marker( | |
[38.809283,-96.962784], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_07a8652b6f7848ee8c18d3d58c6d9d9d = L.popup({maxWidth: '300'}); | |
var html_4267a67ed3ef44bcad922787b825fddb = $('<div id="html_4267a67ed3ef44bcad922787b825fddb" style="width: 100.0%; height: 100.0%;">67492</div>')[0]; | |
popup_07a8652b6f7848ee8c18d3d58c6d9d9d.setContent(html_4267a67ed3ef44bcad922787b825fddb); | |
marker_abaaa1a83e0e405eb2bfba949f6afb23.bindPopup(popup_07a8652b6f7848ee8c18d3d58c6d9d9d); | |
var marker_817dbc5ac81a46c5ae5ccd86df14afcc = L.marker( | |
[29.958602,-89.997477], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_410d2348424e475ebbc4fc75ac6310ad = L.popup({maxWidth: '300'}); | |
var html_3d49f62f238843afbf53dbc55ee25a13 = $('<div id="html_3d49f62f238843afbf53dbc55ee25a13" style="width: 100.0%; height: 100.0%;">70032</div>')[0]; | |
popup_410d2348424e475ebbc4fc75ac6310ad.setContent(html_3d49f62f238843afbf53dbc55ee25a13); | |
marker_817dbc5ac81a46c5ae5ccd86df14afcc.bindPopup(popup_410d2348424e475ebbc4fc75ac6310ad); | |
var marker_77ee3270defb41a38d6e998399aa3383 = L.marker( | |
[33.427349,-83.6277], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_0ac9959d58ba4605bb615e6f0da53119 = L.popup({maxWidth: '300'}); | |
var html_03059dfa8b1b431cba9de245d4945f53 = $('<div id="html_03059dfa8b1b431cba9de245d4945f53" style="width: 100.0%; height: 100.0%;">31085</div>')[0]; | |
popup_0ac9959d58ba4605bb615e6f0da53119.setContent(html_03059dfa8b1b431cba9de245d4945f53); | |
marker_77ee3270defb41a38d6e998399aa3383.bindPopup(popup_0ac9959d58ba4605bb615e6f0da53119); | |
var marker_df2ae1ba4b4b4beea724df6f29d8aa9a = L.marker( | |
[43.575015,-96.495601], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_77d019e8b97d4cdaa380a1200217dbe7 = L.popup({maxWidth: '300'}); | |
var html_794daa81c1f441c0ac0c2a8f474d152e = $('<div id="html_794daa81c1f441c0ac0c2a8f474d152e" style="width: 100.0%; height: 100.0%;">57068</div>')[0]; | |
popup_77d019e8b97d4cdaa380a1200217dbe7.setContent(html_794daa81c1f441c0ac0c2a8f474d152e); | |
marker_df2ae1ba4b4b4beea724df6f29d8aa9a.bindPopup(popup_77d019e8b97d4cdaa380a1200217dbe7); | |
var marker_2ce8e0e17f754428926454a588453c80 = L.marker( | |
[41.129228,-103.016632], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_85f2a199673c4fcd95cb5d015b1c58d9 = L.popup({maxWidth: '300'}); | |
var html_0fd0203ef27c460cb295b9e417e9ecfe = $('<div id="html_0fd0203ef27c460cb295b9e417e9ecfe" style="width: 100.0%; height: 100.0%;">69162</div>')[0]; | |
popup_85f2a199673c4fcd95cb5d015b1c58d9.setContent(html_0fd0203ef27c460cb295b9e417e9ecfe); | |
marker_2ce8e0e17f754428926454a588453c80.bindPopup(popup_85f2a199673c4fcd95cb5d015b1c58d9); | |
var marker_9fb35295287a45ab8b40b425d32931d9 = L.marker( | |
[42.160372,-77.127611], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_f9329fa3cb4f4b4e80292343bf148e23 = L.popup({maxWidth: '300'}); | |
var html_4b24a3cf210c4b189d605d8e4d67656f = $('<div id="html_4b24a3cf210c4b189d605d8e4d67656f" style="width: 100.0%; height: 100.0%;">14870</div>')[0]; | |
popup_f9329fa3cb4f4b4e80292343bf148e23.setContent(html_4b24a3cf210c4b189d605d8e4d67656f); | |
marker_9fb35295287a45ab8b40b425d32931d9.bindPopup(popup_f9329fa3cb4f4b4e80292343bf148e23); | |
var marker_2b4616931cde43179605b57c1bf8c87e = L.marker( | |
[39.148706,-81.819169], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_ff04d11f28b34273a99e1a628ef3a4c0 = L.popup({maxWidth: '300'}); | |
var html_70e23c5613854a50ab40412e84080cc1 = $('<div id="html_70e23c5613854a50ab40412e84080cc1" style="width: 100.0%; height: 100.0%;">45772</div>')[0]; | |
popup_ff04d11f28b34273a99e1a628ef3a4c0.setContent(html_70e23c5613854a50ab40412e84080cc1); | |
marker_2b4616931cde43179605b57c1bf8c87e.bindPopup(popup_ff04d11f28b34273a99e1a628ef3a4c0); | |
var marker_da1e0d46520044238431e71cd60e9ece = L.marker( | |
[43.889588,-124.024907], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_1bc5770a9640465d9b79dde5ed30a16e = L.popup({maxWidth: '300'}); | |
var html_2b4604b33c014fe789f4010d41d41d60 = $('<div id="html_2b4604b33c014fe789f4010d41d41d60" style="width: 100.0%; height: 100.0%;">97493</div>')[0]; | |
popup_1bc5770a9640465d9b79dde5ed30a16e.setContent(html_2b4604b33c014fe789f4010d41d41d60); | |
marker_da1e0d46520044238431e71cd60e9ece.bindPopup(popup_1bc5770a9640465d9b79dde5ed30a16e); | |
var marker_7cf348d4247f49cf80f42f43411a119b = L.marker( | |
[35.078783,-92.457396], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_2906a6f8193143dcbd0151438ecfc47b = L.popup({maxWidth: '300'}); | |
var html_12fdb0691eee4373b541b2d6c49f19ad = $('<div id="html_12fdb0691eee4373b541b2d6c49f19ad" style="width: 100.0%; height: 100.0%;">72035</div>')[0]; | |
popup_2906a6f8193143dcbd0151438ecfc47b.setContent(html_12fdb0691eee4373b541b2d6c49f19ad); | |
marker_7cf348d4247f49cf80f42f43411a119b.bindPopup(popup_2906a6f8193143dcbd0151438ecfc47b); | |
var marker_b4ff218f59814576a3b40addfe481615 = L.marker( | |
[34.046162,-81.10658], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_4ad1c1c4984d42e0a0237618f14c0fe9 = L.popup({maxWidth: '300'}); | |
var html_b56b091837af4b0fbeb9a4f04bc27a0e = $('<div id="html_b56b091837af4b0fbeb9a4f04bc27a0e" style="width: 100.0%; height: 100.0%;">29210</div>')[0]; | |
popup_4ad1c1c4984d42e0a0237618f14c0fe9.setContent(html_b56b091837af4b0fbeb9a4f04bc27a0e); | |
marker_b4ff218f59814576a3b40addfe481615.bindPopup(popup_4ad1c1c4984d42e0a0237618f14c0fe9); | |
var marker_fa702d778c5d484182a3755c8775d971 = L.marker( | |
[40.80122,-93.063949], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_3cc1d6584ebc48b996f977395b9eec5f = L.popup({maxWidth: '300'}); | |
var html_5bc92e1cd7544e328c1379bcc439e9fb = $('<div id="html_5bc92e1cd7544e328c1379bcc439e9fb" style="width: 100.0%; height: 100.0%;">52581</div>')[0]; | |
popup_3cc1d6584ebc48b996f977395b9eec5f.setContent(html_5bc92e1cd7544e328c1379bcc439e9fb); | |
marker_fa702d778c5d484182a3755c8775d971.bindPopup(popup_3cc1d6584ebc48b996f977395b9eec5f); | |
var marker_150a82197aac4a00b7218c7146f1315a = L.marker( | |
[38.432799,-76.957993], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_4891ab500f4f4c45a27cd63abb2d2a7c = L.popup({maxWidth: '300'}); | |
var html_b39b819a629d40fd98b7292f1cb40776 = $('<div id="html_b39b819a629d40fd98b7292f1cb40776" style="width: 100.0%; height: 100.0%;">20632</div>')[0]; | |
popup_4891ab500f4f4c45a27cd63abb2d2a7c.setContent(html_b39b819a629d40fd98b7292f1cb40776); | |
marker_150a82197aac4a00b7218c7146f1315a.bindPopup(popup_4891ab500f4f4c45a27cd63abb2d2a7c); | |
var marker_018eb1137e004b3d94695e30d2a1603e = L.marker( | |
[33.62724,-112.048414], | |
{ | |
icon: new L.Icon.Default() | |
} | |
) | |
.addTo(map_b168b991e2f5499fbabd5e5d82107f7d); | |
var popup_337aed58429c41feb53b8809b813b5a7 = L.popup({maxWidth: '300'}); | |
var html_577c32b67db745e69d50e8765a353b1a = $('<div id="html_577c32b67db745e69d50e8765a353b1a" style="width: 100.0%; height: 100.0%;">85022</div>')[0]; | |
popup_337aed58429c41feb53b8809b813b5a7.setContent(html_577c32b67db745e69d50e8765a353b1a); | |
marker_018eb1137e004b3d94695e30d2a1603e.bindPopup(popup_337aed58429c41feb53b8809b813b5a7); | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment