Skip to content

Instantly share code, notes, and snippets.

@joshlk
Last active November 2, 2020 22:09
Show Gist options
  • Save joshlk/8a1bc6b29eb63e2aa9ae8e756ef94a59 to your computer and use it in GitHub Desktop.
Save joshlk/8a1bc6b29eb63e2aa9ae8e756ef94a59 to your computer and use it in GitHub Desktop.
Uber's H3 Geoindex plotted on the UK and Bristol at different levels
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/mnt/secondary/dataiku_data/code-envs/python/python3_dataiku/lib/python3.6/site-packages/pysal/__init__.py:65: VisibleDeprecationWarning: PySAL's API will be changed on 2018-12-31. The last release made with this API is version 1.14.4. A preview of the next API version is provided in the `pysal` 2.0 prelease candidate. The API changes and a guide on how to change imports is provided at https://pysal.org/about\n",
" ), VisibleDeprecationWarning)\n"
]
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"import geopandas as gpd\n",
"import pysal as ps\n",
"from pysal.contrib.viz import mapping as maps\n",
"\n",
"from h3 import h3\n",
"import pandas as pd\n",
"import folium"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Matts crude boundary"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [],
"source": [
"gb_geojson = {\"type\":\"Polygon\",\"coordinates\":[[[-8.3056640625,58.17070248348609],[-7.822265625000001,56.31653672211301],[-7.163085937499999,56.022948079627454],[-6.6796875,55.52863052257191],[-8.3056640625,55.30413773740139],[-8.4814453125,54.316523240258256],[-7.163085937499999,53.69670647530323],[-5.888671875,53.56641415275043],[-5.2734375,53.72271667491848],[-4.921875,53.30462107510271],[-5.1416015625,52.64306343665892],[-5.625,51.72702815704774],[-6.064453125,50.819818262156545],[-5.8447265625,49.724479188712984],[-3.6474609374999996,49.69606181911566],[-3.1640625,50.3734961443035],[-0.9667968749999999,50.42951794712287],[0.791015625,50.62507306341435],[1.669921875,51.04139389812637],[1.9775390625,51.536085601784755],[1.9775390625,52.40241887397332],[1.7578125,53.067626642387374],[0.6591796875,53.80065082633023],[-0.3955078125,54.62297813269033],[-1.142578125,55.50374985927514],[-2.1533203125,56.26776108757582],[-1.9775390625,56.84897198026975],[-1.4501953125,57.468589192089354],[-1.58203125,57.98480801923985],[-3.1640625,58.00809779306888],[-2.63671875,58.56252272853734],[-1.6259765625,59.24341475839977],[-0.8349609375,59.91097597079679],[-0.48339843749999994,60.780618803458935],[-0.615234375,61.079544234557304],[-1.9335937499999998,60.56537850464181],[-2.1533203125,59.91097597079679],[-2.28515625,59.57885104663186],[-3.5595703125,59.489726035537075],[-4.0869140625,58.97266715450153],[-5.756835937499999,58.63121664342478],[-7.4267578125,58.44773280389084],[-8.3056640625,58.17070248348609]]]}\n",
"bristol_geojson = {\n",
" \"type\": \"Polygon\",\n",
" \"coordinates\": [\n",
" [\n",
" [\n",
" -2.5522613525390625,\n",
" 51.55658218576253\n",
" ],\n",
" [\n",
" -2.7081298828124996,\n",
" 51.49078959803455\n",
" ],\n",
" [\n",
" -2.695770263671875,\n",
" 51.39749205520681\n",
" ],\n",
" [\n",
" -2.4932098388671875,\n",
" 51.39706364558934\n",
" ],\n",
" [\n",
" -2.4520111083984375,\n",
" 51.50404120260676\n",
" ],\n",
" [\n",
" -2.5522613525390625,\n",
" 51.55658218576253\n",
" ]\n",
" ]\n",
" ]\n",
" }\n",
"\n",
"bristol_uni_geojson = {\n",
" \"type\": \"Polygon\",\n",
" \"coordinates\": [\n",
" [\n",
" [\n",
" -2.618265151977539,\n",
" 51.46946138994744\n",
" ],\n",
" [\n",
" -2.630281448364258,\n",
" 51.453365088385986\n",
" ],\n",
" [\n",
" -2.603588104248047,\n",
" 51.44304121677976\n",
" ],\n",
" [\n",
" -2.5864219665527344,\n",
" 51.460317675894956\n",
" ],\n",
" [\n",
" -2.5987815856933594,\n",
" 51.46924752282709\n",
" ],\n",
" [\n",
" -2.618265151977539,\n",
" 51.46946138994744\n",
" ]\n",
" ]\n",
" ]\n",
" }"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVM9ZmFsc2U7IExfTk9fVE9VQ0g9ZmFsc2U7IExfRElTQUJMRV8zRD1mYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgPHN0eWxlPiNtYXBfNTI2NmRhZjM5ZjZiNGJkMDhkNWM2Yjc0MjgwYzk1ZTggewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMTAwLjAlOwogICAgICAgIGhlaWdodDogMTAwLjAlOwogICAgICAgIGxlZnQ6IDAuMCU7CiAgICAgICAgdG9wOiAwLjAlOwogICAgICAgIH0KICAgIDwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzUyNjZkYWYzOWY2YjRiZDA4ZDVjNmI3NDI4MGM5NWU4IiA+PC9kaXY+CjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKICAgIAogICAgICAgIHZhciBib3VuZHMgPSBudWxsOwogICAgCgogICAgdmFyIG1hcF81MjY2ZGFmMzlmNmI0YmQwOGQ1YzZiNzQyODBjOTVlOCA9IEwubWFwKAogICAgICAgICdtYXBfNTI2NmRhZjM5ZjZiNGJkMDhkNWM2Yjc0MjgwYzk1ZTgnLCB7CiAgICAgICAgY2VudGVyOiBbNTUuMzY1LCAtMy40NV0sCiAgICAgICAgem9vbTogNSwKICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICBsYXllcnM6IFtdLAogICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcsCiAgICAgICAgem9vbUNvbnRyb2w6IHRydWUsCiAgICAgICAgfSk7CgogICAgCiAgICAKICAgIHZhciB0aWxlX2xheWVyXzVlMjNiOTAzNzI4ZjQ0ZTM4YzcxNTQzMTY3NjNjZGE0ID0gTC50aWxlTGF5ZXIoCiAgICAgICAgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKICAgICAgICB7CiAgICAgICAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAgICAgICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgICAgICAgIm1heE5hdGl2ZVpvb20iOiAxOCwKICAgICAgICAibWF4Wm9vbSI6IDE4LAogICAgICAgICJtaW5ab29tIjogMCwKICAgICAgICAibm9XcmFwIjogZmFsc2UsCiAgICAgICAgInN1YmRvbWFpbnMiOiAiYWJjIgp9KS5hZGRUbyhtYXBfNTI2NmRhZjM5ZjZiNGJkMDhkNWM2Yjc0MjgwYzk1ZTgpOwogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzc5NTBiMmI4NjFlNzRkZDJiYTAwOWMxMTU1NDlhMDhlID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTguMzA1NjY0MDYyNSwgNTguMTcwNzAyNDgzNDg2MDldLCBbLTcuODIyMjY1NjI1MDAwMDAxLCA1Ni4zMTY1MzY3MjIxMTMwMV0sIFstNy4xNjMwODU5Mzc0OTk5OTksIDU2LjAyMjk0ODA3OTYyNzQ1NF0sIFstNi42Nzk2ODc1LCA1NS41Mjg2MzA1MjI1NzE5MV0sIFstOC4zMDU2NjQwNjI1LCA1NS4zMDQxMzc3Mzc0MDEzOV0sIFstOC40ODE0NDUzMTI1LCA1NC4zMTY1MjMyNDAyNTgyNTZdLCBbLTcuMTYzMDg1OTM3NDk5OTk5LCA1My42OTY3MDY0NzUzMDMyM10sIFstNS44ODg2NzE4NzUsIDUzLjU2NjQxNDE1Mjc1MDQzXSwgWy01LjI3MzQzNzUsIDUzLjcyMjcxNjY3NDkxODQ4XSwgWy00LjkyMTg3NSwgNTMuMzA0NjIxMDc1MTAyNzFdLCBbLTUuMTQxNjAxNTYyNSwgNTIuNjQzMDYzNDM2NjU4OTJdLCBbLTUuNjI1LCA1MS43MjcwMjgxNTcwNDc3NF0sIFstNi4wNjQ0NTMxMjUsIDUwLjgxOTgxODI2MjE1NjU0NV0sIFstNS44NDQ3MjY1NjI1LCA0OS43MjQ0NzkxODg3MTI5ODRdLCBbLTMuNjQ3NDYwOTM3NDk5OTk5NiwgNDkuNjk2MDYxODE5MTE1NjZdLCBbLTMuMTY0MDYyNSwgNTAuMzczNDk2MTQ0MzAzNV0sIFstMC45NjY3OTY4NzQ5OTk5OTk5LCA1MC40Mjk1MTc5NDcxMjI4N10sIFswLjc5MTAxNTYyNSwgNTAuNjI1MDczMDYzNDE0MzVdLCBbMS42Njk5MjE4NzUsIDUxLjA0MTM5Mzg5ODEyNjM3XSwgWzEuOTc3NTM5MDYyNSwgNTEuNTM2MDg1NjAxNzg0NzU1XSwgWzEuOTc3NTM5MDYyNSwgNTIuNDAyNDE4ODczOTczMzJdLCBbMS43NTc4MTI1LCA1My4wNjc2MjY2NDIzODczNzRdLCBbMC42NTkxNzk2ODc1LCA1My44MDA2NTA4MjYzMzAyM10sIFstMC4zOTU1MDc4MTI1LCA1NC42MjI5NzgxMzI2OTAzM10sIFstMS4xNDI1NzgxMjUsIDU1LjUwMzc0OTg1OTI3NTE0XSwgWy0yLjE1MzMyMDMxMjUsIDU2LjI2Nzc2MTA4NzU3NTgyXSwgWy0xLjk3NzUzOTA2MjUsIDU2Ljg0ODk3MTk4MDI2OTc1XSwgWy0xLjQ1MDE5NTMxMjUsIDU3LjQ2ODU4OTE5MjA4OTM1NF0sIFstMS41ODIwMzEyNSwgNTcuOTg0ODA4MDE5MjM5ODVdLCBbLTMuMTY0MDYyNSwgNTguMDA4MDk3NzkzMDY4ODhdLCBbLTIuNjM2NzE4NzUsIDU4LjU2MjUyMjcyODUzNzM0XSwgWy0xLjYyNTk3NjU2MjUsIDU5LjI0MzQxNDc1ODM5OTc3XSwgWy0wLjgzNDk2MDkzNzUsIDU5LjkxMDk3NTk3MDc5Njc5XSwgWy0wLjQ4MzM5ODQzNzQ5OTk5OTk0LCA2MC43ODA2MTg4MDM0NTg5MzVdLCBbLTAuNjE1MjM0Mzc1LCA2MS4wNzk1NDQyMzQ1NTczMDRdLCBbLTEuOTMzNTkzNzQ5OTk5OTk5OCwgNjAuNTY1Mzc4NTA0NjQxODFdLCBbLTIuMTUzMzIwMzEyNSwgNTkuOTEwOTc1OTcwNzk2NzldLCBbLTIuMjg1MTU2MjUsIDU5LjU3ODg1MTA0NjYzMTg2XSwgWy0zLjU1OTU3MDMxMjUsIDU5LjQ4OTcyNjAzNTUzNzA3NV0sIFstNC4wODY5MTQwNjI1LCA1OC45NzI2NjcxNTQ1MDE1M10sIFstNS43NTY4MzU5Mzc0OTk5OTksIDU4LjYzMTIxNjY0MzQyNDc4XSwgWy03LjQyNjc1NzgxMjUsIDU4LjQ0NzczMjgwMzg5MDg0XSwgWy04LjMwNTY2NDA2MjUsIDU4LjE3MDcwMjQ4MzQ4NjA5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF81MjY2ZGFmMzlmNmI0YmQwOGQ1YzZiNzQyODBjOTVlOCk7CiAgICAgICAgZ2VvX2pzb25fNzk1MGIyYjg2MWU3NGRkMmJhMDA5YzExNTU0OWEwOGUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCjwvc2NyaXB0Pg==\" 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 0x7ffa6a742080>"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m = folium.Map(location=[55.365, -3.45], zoom_start=5, )\n",
"\n",
"folium.GeoJson(\n",
" gb_geojson,\n",
" name='uk_boundary'\n",
").add_to(m)\n",
"\n",
"m"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# H3 shapes"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [],
"source": [
"hexagons = list(h3.polyfill(gb_geojson, 1))\n",
"hexagons_boundary = [h3.h3_to_geo_boundary(h3_ix) for h3_ix in hexagons]"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVM9ZmFsc2U7IExfTk9fVE9VQ0g9ZmFsc2U7IExfRElTQUJMRV8zRD1mYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgPHN0eWxlPiNtYXBfZjUzMmJjOTA5OGY1NDYzZmI5OGQyODQ2ZmI2Y2FiNmMgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMTAwLjAlOwogICAgICAgIGhlaWdodDogMTAwLjAlOwogICAgICAgIGxlZnQ6IDAuMCU7CiAgICAgICAgdG9wOiAwLjAlOwogICAgICAgIH0KICAgIDwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2Y1MzJiYzkwOThmNTQ2M2ZiOThkMjg0NmZiNmNhYjZjIiA+PC9kaXY+CjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKICAgIAogICAgICAgIHZhciBib3VuZHMgPSBudWxsOwogICAgCgogICAgdmFyIG1hcF9mNTMyYmM5MDk4ZjU0NjNmYjk4ZDI4NDZmYjZjYWI2YyA9IEwubWFwKAogICAgICAgICdtYXBfZjUzMmJjOTA5OGY1NDYzZmI5OGQyODQ2ZmI2Y2FiNmMnLCB7CiAgICAgICAgY2VudGVyOiBbNTUuMzY1LCAtMy40NV0sCiAgICAgICAgem9vbTogNSwKICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICBsYXllcnM6IFtdLAogICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcsCiAgICAgICAgem9vbUNvbnRyb2w6IHRydWUsCiAgICAgICAgfSk7CgogICAgCiAgICAKICAgIHZhciB0aWxlX2xheWVyXzE0N2JiOTE1ODZlZjRmZDk4YmQ2NzJiMzc5MzM2Zjk3ID0gTC50aWxlTGF5ZXIoCiAgICAgICAgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKICAgICAgICB7CiAgICAgICAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAgICAgICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgICAgICAgIm1heE5hdGl2ZVpvb20iOiAxOCwKICAgICAgICAibWF4Wm9vbSI6IDE4LAogICAgICAgICJtaW5ab29tIjogMCwKICAgICAgICAibm9XcmFwIjogZmFsc2UsCiAgICAgICAgInN1YmRvbWFpbnMiOiAiYWJjIgp9KS5hZGRUbyhtYXBfZjUzMmJjOTA5OGY1NDYzZmI5OGQyODQ2ZmI2Y2FiNmMpOwogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzgzNDVhZjc5NzljNzRkY2Q5NWZjMGIyODk0MjdmYTIzID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTguMzA1NjY0MDYyNSwgNTguMTcwNzAyNDgzNDg2MDldLCBbLTcuODIyMjY1NjI1MDAwMDAxLCA1Ni4zMTY1MzY3MjIxMTMwMV0sIFstNy4xNjMwODU5Mzc0OTk5OTksIDU2LjAyMjk0ODA3OTYyNzQ1NF0sIFstNi42Nzk2ODc1LCA1NS41Mjg2MzA1MjI1NzE5MV0sIFstOC4zMDU2NjQwNjI1LCA1NS4zMDQxMzc3Mzc0MDEzOV0sIFstOC40ODE0NDUzMTI1LCA1NC4zMTY1MjMyNDAyNTgyNTZdLCBbLTcuMTYzMDg1OTM3NDk5OTk5LCA1My42OTY3MDY0NzUzMDMyM10sIFstNS44ODg2NzE4NzUsIDUzLjU2NjQxNDE1Mjc1MDQzXSwgWy01LjI3MzQzNzUsIDUzLjcyMjcxNjY3NDkxODQ4XSwgWy00LjkyMTg3NSwgNTMuMzA0NjIxMDc1MTAyNzFdLCBbLTUuMTQxNjAxNTYyNSwgNTIuNjQzMDYzNDM2NjU4OTJdLCBbLTUuNjI1LCA1MS43MjcwMjgxNTcwNDc3NF0sIFstNi4wNjQ0NTMxMjUsIDUwLjgxOTgxODI2MjE1NjU0NV0sIFstNS44NDQ3MjY1NjI1LCA0OS43MjQ0NzkxODg3MTI5ODRdLCBbLTMuNjQ3NDYwOTM3NDk5OTk5NiwgNDkuNjk2MDYxODE5MTE1NjZdLCBbLTMuMTY0MDYyNSwgNTAuMzczNDk2MTQ0MzAzNV0sIFstMC45NjY3OTY4NzQ5OTk5OTk5LCA1MC40Mjk1MTc5NDcxMjI4N10sIFswLjc5MTAxNTYyNSwgNTAuNjI1MDczMDYzNDE0MzVdLCBbMS42Njk5MjE4NzUsIDUxLjA0MTM5Mzg5ODEyNjM3XSwgWzEuOTc3NTM5MDYyNSwgNTEuNTM2MDg1NjAxNzg0NzU1XSwgWzEuOTc3NTM5MDYyNSwgNTIuNDAyNDE4ODczOTczMzJdLCBbMS43NTc4MTI1LCA1My4wNjc2MjY2NDIzODczNzRdLCBbMC42NTkxNzk2ODc1LCA1My44MDA2NTA4MjYzMzAyM10sIFstMC4zOTU1MDc4MTI1LCA1NC42MjI5NzgxMzI2OTAzM10sIFstMS4xNDI1NzgxMjUsIDU1LjUwMzc0OTg1OTI3NTE0XSwgWy0yLjE1MzMyMDMxMjUsIDU2LjI2Nzc2MTA4NzU3NTgyXSwgWy0xLjk3NzUzOTA2MjUsIDU2Ljg0ODk3MTk4MDI2OTc1XSwgWy0xLjQ1MDE5NTMxMjUsIDU3LjQ2ODU4OTE5MjA4OTM1NF0sIFstMS41ODIwMzEyNSwgNTcuOTg0ODA4MDE5MjM5ODVdLCBbLTMuMTY0MDYyNSwgNTguMDA4MDk3NzkzMDY4ODhdLCBbLTIuNjM2NzE4NzUsIDU4LjU2MjUyMjcyODUzNzM0XSwgWy0xLjYyNTk3NjU2MjUsIDU5LjI0MzQxNDc1ODM5OTc3XSwgWy0wLjgzNDk2MDkzNzUsIDU5LjkxMDk3NTk3MDc5Njc5XSwgWy0wLjQ4MzM5ODQzNzQ5OTk5OTk0LCA2MC43ODA2MTg4MDM0NTg5MzVdLCBbLTAuNjE1MjM0Mzc1LCA2MS4wNzk1NDQyMzQ1NTczMDRdLCBbLTEuOTMzNTkzNzQ5OTk5OTk5OCwgNjAuNTY1Mzc4NTA0NjQxODFdLCBbLTIuMTUzMzIwMzEyNSwgNTkuOTEwOTc1OTcwNzk2NzldLCBbLTIuMjg1MTU2MjUsIDU5LjU3ODg1MTA0NjYzMTg2XSwgWy0zLjU1OTU3MDMxMjUsIDU5LjQ4OTcyNjAzNTUzNzA3NV0sIFstNC4wODY5MTQwNjI1LCA1OC45NzI2NjcxNTQ1MDE1M10sIFstNS43NTY4MzU5Mzc0OTk5OTksIDU4LjYzMTIxNjY0MzQyNDc4XSwgWy03LjQyNjc1NzgxMjUsIDU4LjQ0NzczMjgwMzg5MDg0XSwgWy04LjMwNTY2NDA2MjUsIDU4LjE3MDcwMjQ4MzQ4NjA5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9mNTMyYmM5MDk4ZjU0NjNmYjk4ZDI4NDZmYjZjYWI2Yyk7CiAgICAgICAgZ2VvX2pzb25fODM0NWFmNzk3OWM3NGRjZDk1ZmMwYjI4OTQyN2ZhMjMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZWRjZDI1ZTkyODM0NDEwYTgyNWJmMTU4MjMyYmY2MWIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi4zMDQxMTc4ODY5NjY5MTM0LCA1Ni4wNDA3NjM3MzY2Nzk1NDRdLCBbMS40NDc2NDI4NjAyMDAyMDk4LCA1NS43MDE1MDcyMjAyMzIyOV0sIFszLjY5Mjc1MzI1NDE5NDAxMzYsIDUyLjMxNjU5MjQ0NDY1NzYyXSwgWzEuODk4MjcwNDM5MTkyNjIyOCwgNDguOTQ3MDY4ODU3NDQ5Ml0sIFstMi4zNTQ3MzQzMTI5NTM3MTczLCA0OS4wNzYyODI3ODMzMDE1NjVdLCBbLTQuNjEyODYwNzI3NDgyNDkyLCA1Mi42ODk1MjYzOTE4NDQxOF0sIFstMy41OTMzMjQxODgyMzA1MTI1LCA1NC4zNDI2MzA5OTI2NzIwMTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2Y1MzJiYzkwOThmNTQ2M2ZiOThkMjg0NmZiNmNhYjZjKTsKICAgICAgICBnZW9fanNvbl9lZGNkMjVlOTI4MzQ0MTBhODI1YmYxNTgyMzJiZjYxYi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl83YWI3OGI5OTUxYTA0NTVhYTdmNmU5MWNmNDk0ZDFmOSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00LjYxMjg2MDcyNzQ4MjQ5MiwgNTIuNjg5NTI2MzkxODQ0MThdLCBbLTguOTMxODkxNTAwNDQ2ODcsIDUyLjg4NTkzNDE5NzkyNTc4NV0sIFstMTAuNDkwOTYzNzY1ODk5NzA3LCA1Ni43OTE0MzMxMzc3NjYyNTVdLCBbLTcuNzQ3ODEyNzYwNjkzODUsIDYwLjM5MTY0NzE4NTk0ODI1XSwgWy0zLjYyNTQwNTEwOTcxNzY1MywgNTkuODg0ODU0NTY0Nzg2MTNdLCBbLTIuMzA0MTE3ODg2OTY2OTEzNCwgNTYuMDQwNzYzNzM2Njc5NTQ0XSwgWy0zLjU5MzMyNDE4ODIzMDUyNCwgNTQuMzQyNjMwOTkyNjcyMDM1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9mNTMyYmM5MDk4ZjU0NjNmYjk4ZDI4NDZmYjZjYWI2Yyk7CiAgICAgICAgZ2VvX2pzb25fN2FiNzhiOTk1MWEwNDU1YWE3ZjZlOTFjZjQ5NGQxZjkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCjwvc2NyaXB0Pg==\" 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 0x7ffa6918ef28>"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m = folium.Map(location=[55.365, -3.45], zoom_start=5, )\n",
"\n",
"folium.GeoJson(\n",
" gb_geojson,\n",
" name='uk_boundary'\n",
").add_to(m)\n",
"\n",
"for boundary in hexagons_boundary:\n",
" folium.GeoJson(\n",
" {\"type\":\"Polygon\",\"coordinates\": [boundary]}\n",
" ).add_to(m)\n",
"\n",
"m"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [],
"source": [
"hexagons = list(h3.polyfill(gb_geojson, 2))\n",
"hexagons_boundary = [h3.h3_to_geo_boundary(h3_ix) for h3_ix in hexagons]"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVM9ZmFsc2U7IExfTk9fVE9VQ0g9ZmFsc2U7IExfRElTQUJMRV8zRD1mYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgPHN0eWxlPiNtYXBfODM4OTM4MTZmNmZlNDAzMWIxNzBiYWMzODU1MWYzZTkgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMTAwLjAlOwogICAgICAgIGhlaWdodDogMTAwLjAlOwogICAgICAgIGxlZnQ6IDAuMCU7CiAgICAgICAgdG9wOiAwLjAlOwogICAgICAgIH0KICAgIDwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzgzODkzODE2ZjZmZTQwMzFiMTcwYmFjMzg1NTFmM2U5IiA+PC9kaXY+CjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKICAgIAogICAgICAgIHZhciBib3VuZHMgPSBudWxsOwogICAgCgogICAgdmFyIG1hcF84Mzg5MzgxNmY2ZmU0MDMxYjE3MGJhYzM4NTUxZjNlOSA9IEwubWFwKAogICAgICAgICdtYXBfODM4OTM4MTZmNmZlNDAzMWIxNzBiYWMzODU1MWYzZTknLCB7CiAgICAgICAgY2VudGVyOiBbNTUuMzY1LCAtMy40NV0sCiAgICAgICAgem9vbTogNSwKICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICBsYXllcnM6IFtdLAogICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcsCiAgICAgICAgem9vbUNvbnRyb2w6IHRydWUsCiAgICAgICAgfSk7CgogICAgCiAgICAKICAgIHZhciB0aWxlX2xheWVyX2M4M2Y5MGIyZDg5NTQ1MWRhMTUyZTUzM2Q0MGExODM2ID0gTC50aWxlTGF5ZXIoCiAgICAgICAgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKICAgICAgICB7CiAgICAgICAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAgICAgICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgICAgICAgIm1heE5hdGl2ZVpvb20iOiAxOCwKICAgICAgICAibWF4Wm9vbSI6IDE4LAogICAgICAgICJtaW5ab29tIjogMCwKICAgICAgICAibm9XcmFwIjogZmFsc2UsCiAgICAgICAgInN1YmRvbWFpbnMiOiAiYWJjIgp9KS5hZGRUbyhtYXBfODM4OTM4MTZmNmZlNDAzMWIxNzBiYWMzODU1MWYzZTkpOwogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzYwZjA1NzMzNTk2MzQ0ZWM4NzAwNTJhOGJlN2QwZjA2ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTguMzA1NjY0MDYyNSwgNTguMTcwNzAyNDgzNDg2MDldLCBbLTcuODIyMjY1NjI1MDAwMDAxLCA1Ni4zMTY1MzY3MjIxMTMwMV0sIFstNy4xNjMwODU5Mzc0OTk5OTksIDU2LjAyMjk0ODA3OTYyNzQ1NF0sIFstNi42Nzk2ODc1LCA1NS41Mjg2MzA1MjI1NzE5MV0sIFstOC4zMDU2NjQwNjI1LCA1NS4zMDQxMzc3Mzc0MDEzOV0sIFstOC40ODE0NDUzMTI1LCA1NC4zMTY1MjMyNDAyNTgyNTZdLCBbLTcuMTYzMDg1OTM3NDk5OTk5LCA1My42OTY3MDY0NzUzMDMyM10sIFstNS44ODg2NzE4NzUsIDUzLjU2NjQxNDE1Mjc1MDQzXSwgWy01LjI3MzQzNzUsIDUzLjcyMjcxNjY3NDkxODQ4XSwgWy00LjkyMTg3NSwgNTMuMzA0NjIxMDc1MTAyNzFdLCBbLTUuMTQxNjAxNTYyNSwgNTIuNjQzMDYzNDM2NjU4OTJdLCBbLTUuNjI1LCA1MS43MjcwMjgxNTcwNDc3NF0sIFstNi4wNjQ0NTMxMjUsIDUwLjgxOTgxODI2MjE1NjU0NV0sIFstNS44NDQ3MjY1NjI1LCA0OS43MjQ0NzkxODg3MTI5ODRdLCBbLTMuNjQ3NDYwOTM3NDk5OTk5NiwgNDkuNjk2MDYxODE5MTE1NjZdLCBbLTMuMTY0MDYyNSwgNTAuMzczNDk2MTQ0MzAzNV0sIFstMC45NjY3OTY4NzQ5OTk5OTk5LCA1MC40Mjk1MTc5NDcxMjI4N10sIFswLjc5MTAxNTYyNSwgNTAuNjI1MDczMDYzNDE0MzVdLCBbMS42Njk5MjE4NzUsIDUxLjA0MTM5Mzg5ODEyNjM3XSwgWzEuOTc3NTM5MDYyNSwgNTEuNTM2MDg1NjAxNzg0NzU1XSwgWzEuOTc3NTM5MDYyNSwgNTIuNDAyNDE4ODczOTczMzJdLCBbMS43NTc4MTI1LCA1My4wNjc2MjY2NDIzODczNzRdLCBbMC42NTkxNzk2ODc1LCA1My44MDA2NTA4MjYzMzAyM10sIFstMC4zOTU1MDc4MTI1LCA1NC42MjI5NzgxMzI2OTAzM10sIFstMS4xNDI1NzgxMjUsIDU1LjUwMzc0OTg1OTI3NTE0XSwgWy0yLjE1MzMyMDMxMjUsIDU2LjI2Nzc2MTA4NzU3NTgyXSwgWy0xLjk3NzUzOTA2MjUsIDU2Ljg0ODk3MTk4MDI2OTc1XSwgWy0xLjQ1MDE5NTMxMjUsIDU3LjQ2ODU4OTE5MjA4OTM1NF0sIFstMS41ODIwMzEyNSwgNTcuOTg0ODA4MDE5MjM5ODVdLCBbLTMuMTY0MDYyNSwgNTguMDA4MDk3NzkzMDY4ODhdLCBbLTIuNjM2NzE4NzUsIDU4LjU2MjUyMjcyODUzNzM0XSwgWy0xLjYyNTk3NjU2MjUsIDU5LjI0MzQxNDc1ODM5OTc3XSwgWy0wLjgzNDk2MDkzNzUsIDU5LjkxMDk3NTk3MDc5Njc5XSwgWy0wLjQ4MzM5ODQzNzQ5OTk5OTk0LCA2MC43ODA2MTg4MDM0NTg5MzVdLCBbLTAuNjE1MjM0Mzc1LCA2MS4wNzk1NDQyMzQ1NTczMDRdLCBbLTEuOTMzNTkzNzQ5OTk5OTk5OCwgNjAuNTY1Mzc4NTA0NjQxODFdLCBbLTIuMTUzMzIwMzEyNSwgNTkuOTEwOTc1OTcwNzk2NzldLCBbLTIuMjg1MTU2MjUsIDU5LjU3ODg1MTA0NjYzMTg2XSwgWy0zLjU1OTU3MDMxMjUsIDU5LjQ4OTcyNjAzNTUzNzA3NV0sIFstNC4wODY5MTQwNjI1LCA1OC45NzI2NjcxNTQ1MDE1M10sIFstNS43NTY4MzU5Mzc0OTk5OTksIDU4LjYzMTIxNjY0MzQyNDc4XSwgWy03LjQyNjc1NzgxMjUsIDU4LjQ0NzczMjgwMzg5MDg0XSwgWy04LjMwNTY2NDA2MjUsIDU4LjE3MDcwMjQ4MzQ4NjA5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84Mzg5MzgxNmY2ZmU0MDMxYjE3MGJhYzM4NTUxZjNlOSk7CiAgICAgICAgZ2VvX2pzb25fNjBmMDU3MzM1OTYzNDRlYzg3MDA1MmE4YmU3ZDBmMDYuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNGUwMWJjZWFlMTc0NGNjMjkzMDY4MGRiMjcxODM3ZWYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy4zNjUwMDQzMDk3NzY4NzY1LCA1MS42NDMzNzIyMzcyNjc0NjRdLCBbLTEuODY0ODYzNTc0NTc5MTEyLCA1Mi4wNzU3ODY0OTc5NDQ2OV0sIFstMC42MTQ5NjQ1NjY0NDAwMjc1LCA1MS4wMzYzOTY5ODg2NTU4MV0sIFstMC44NDM2MDMxMTEwMTY1MzE0LCA0OS41MzkxNDEyNDQ4MTE1OF0sIFstMi4zNTQ3MzQzMTI5NTM3MTczLCA0OS4wNzYyODI3ODMzMDE1NjVdLCBbLTMuNjI2NjMxMDcyNzI2MTM3MywgNTAuMTQwOTg5MTU1NDQ0NDE2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84Mzg5MzgxNmY2ZmU0MDMxYjE3MGJhYzM4NTUxZjNlOSk7CiAgICAgICAgZ2VvX2pzb25fNGUwMWJjZWFlMTc0NGNjMjkzMDY4MGRiMjcxODM3ZWYuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZGJkOWRlZjEwMmQ2NDJlMjg5YWUzMTNkNjRkNDNlY2UgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNy4zODA1NTgzNDc1MTY2MTUsIDUzLjMxMjYxNzk3NzI4OTEzXSwgWy04LjkzMTg5MTUwMDQ0Njg3LCA1Mi44ODU5MzQxOTc5MjU3ODVdLCBbLTkuOTc0NjMwNDEyMDA5NTI1LCA1NC4wMTg5NDg3MDg1MDAxMDVdLCBbLTkuNDM1MTMxMzcwMjI1MzIzLCA1NS41OTk1ODk2MTc2ODk4NDRdLCBbLTcuODUyMjM5MzI5NzkxMjU3LCA1Ni4wMDU2NzA3MzQwMTUwM10sIFstNi44NDAzNjgwNjQzNTA5MjM1LCA1NC44NTI2NjEwOTMwODA4N11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODM4OTM4MTZmNmZlNDAzMWIxNzBiYWMzODU1MWYzZTkpOwogICAgICAgIGdlb19qc29uX2RiZDlkZWYxMDJkNjQyZTI4OWFlMzEzZDY0ZDQzZWNlLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzUxYTIyYjU3NTg1MjRkMWJiYzlkZGUwOTNkYzQ1ODIxID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTYuMTQxODk3MDcxODc4MTY1LCA1Mi4yNTk4NTgyNDc5MDk2OF0sIFstNC42MTI4NjA3Mjc0ODI0OTIsIDUyLjY4OTUyNjM5MTg0NDE4XSwgWy0zLjM2NTAwNDMwOTc3Njg3NjUsIDUxLjY0MzM3MjIzNzI2NzQ2NF0sIFstMy42MjY2MzEwNzI3MjYxMzczLCA1MC4xNDA5ODkxNTU0NDQ0MTZdLCBbLTUuMTY5NzA2OTU5MzA0MTQzLCA0OS42ODAxMTk4OTgwMzc1XSwgWy02LjQzNzQ0Mzk4Mzg0NzEwMSwgNTAuNzUyNzIwNTY4MjY5MDM0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84Mzg5MzgxNmY2ZmU0MDMxYjE3MGJhYzM4NTUxZjNlOSk7CiAgICAgICAgZ2VvX2pzb25fNTFhMjJiNTc1ODUyNGQxYmJjOWRkZTA5M2RjNDU4MjEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYmRmN2Q1MTA0YTUyNDdmYzg0ZGQzNzBkZWFlNWQ1ZjkgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy4yMzcyOTQzODA2NjkzMzQsIDU3LjE3Mzg1Njg2NDU5NzQ3NV0sIFstNC43NTEzNDQyMzUyNjMyNzgsIDU2Ljc5MjU4MDkzMDYxMzA1Nl0sIFstNS43MzE0MzY3NjIwNzA4MTksIDU3Ljk2MjIyOTAzMjAzNzYzNF0sIFstNS4xNjUwNDgxMTUzMDIzMjIsIDU5LjUyNzMxNTUzODcxMzY5NF0sIFstMy42MjU0MDUxMDk3MTc2NTMsIDU5Ljg4NDg1NDU2NDc4NjEzXSwgWy0yLjY3NzQ5MTYwMzkyMTQ3OCwgNTguNzAxODg5NzEyMTc1MjE2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84Mzg5MzgxNmY2ZmU0MDMxYjE3MGJhYzM4NTUxZjNlOSk7CiAgICAgICAgZ2VvX2pzb25fYmRmN2Q1MTA0YTUyNDdmYzg0ZGQzNzBkZWFlNWQ1Zjkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZWNjNjkwZmJkYmY2NDg0NDkwYTQ3NWRhNDUyYzk2MTYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi4zMDQxMTc4ODY5NjY5MTM0LCA1Ni4wNDA3NjM3MzY2Nzk1NDRdLCBbLTAuODQzMjMxMzk5NDA2Mjc1NSwgNTYuNDIwOTgzNDY5MTMwOF0sIFswLjA0MTQ1MTM1MTAxNTAzOTI4LCA1NS4zMjI3NTAzMjYyNTk3MV0sIFstMC4xNzIxNzc0NTgzNDI2Mzk2MiwgNTMuOTI4ODExOTgzMjk5Nzc0XSwgWy0xLjYyNjM2MzczMDY0OTYzMzUsIDUzLjUyMzgwNDU3NjE3NDM1Nl0sIFstMi44NTMzNzg2OTM0MTg2NTE2LCA1NC41NDI1NDc1MzI5NTM2MDZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzgzODkzODE2ZjZmZTQwMzFiMTcwYmFjMzg1NTFmM2U5KTsKICAgICAgICBnZW9fanNvbl9lY2M2OTBmYmRiZjY0ODQ0OTBhNDc1ZGE0NTJjOTYxNi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xZjM2MzliZmU2Njc0M2Y0YjI4ZmYwN2MzOTlhNjc1NCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0wLjg0MzIzMTM5OTQwNjI3NTUsIDU2LjQyMDk4MzQ2OTEzMDhdLCBbLTIuMzA0MTE3ODg2OTY2OTEzNCwgNTYuMDQwNzYzNzM2Njc5NTQ0XSwgWy0zLjIzNzI5NDM4MDY2OTMzNCwgNTcuMTczODU2ODY0NTk3NDc1XSwgWy0yLjY3NzQ5MTYwMzkyMTQ3OCwgNTguNzAxODg5NzEyMTc1MjE2XSwgWy0xLjE5MTYwNDIzNzYzMjk4NSwgNTkuMDYwMTMwODc2NzA0MTNdLCBbLTAuMjkwMjc5OTYzOTQyMzk3NSwgNTcuOTEzMTIxMTg1MTc4ODZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzgzODkzODE2ZjZmZTQwMzFiMTcwYmFjMzg1NTFmM2U5KTsKICAgICAgICBnZW9fanNvbl8xZjM2MzliZmU2Njc0M2Y0YjI4ZmYwN2MzOTlhNjc1NC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lMWE3NWFkYmYyOWQ0NDg2OTBhMWM1OWIzMzY0YWMzNyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00LjYxMjg2MDcyNzQ4MjQ5MiwgNTIuNjg5NTI2MzkxODQ0MThdLCBbLTYuMTQxODk3MDcxODc4MTY1LCA1Mi4yNTk4NTgyNDc5MDk2OF0sIFstNy4zODA1NTgzNDc1MTY2MTUsIDUzLjMxMjYxNzk3NzI4OTEzXSwgWy02Ljg0MDM2ODA2NDM1MDkyMzUsIDU0Ljg1MjY2MTA5MzA4MDg3XSwgWy01LjMwNDMyMjM2NjY1NTc4LCA1NS4yNTY4MDkyMjAyMjMyNl0sIFstNC4zMzkzOTMwNjIxNDMwNzQsIDU0LjE0MDcxOTI5NjUzMjg4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84Mzg5MzgxNmY2ZmU0MDMxYjE3MGJhYzM4NTUxZjNlOSk7CiAgICAgICAgZ2VvX2pzb25fZTFhNzVhZGJmMjlkNDQ4NjkwYTFjNTliMzM2NGFjMzcuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYmVkNTZjNzc3ODIyNDliZTg2NzM3NTE0ZTc0NTBjMTEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMS42MjYzNjM3MzA2NDk2MzM1LCA1My41MjM4MDQ1NzYxNzQzNTZdLCBbLTAuMTcyMTc3NDU4MzQyNjM5NjIsIDUzLjkyODgxMTk4MzI5OTc3NF0sIFsxLjA1NDk1OTAzMDU3NDY4NDUsIDUyLjkxNTc4MTI0MDE2MzkyXSwgWzAuODUwMjYyODkxNzc1NTc1OCwgNTEuNDcxMzI3MDI3NzEzOThdLCBbLTAuNjE0OTY0NTY2NDQwMDI3NSwgNTEuMDM2Mzk2OTg4NjU1ODFdLCBbLTEuODY0ODYzNTc0NTc5MTEyLCA1Mi4wNzU3ODY0OTc5NDQ2OV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODM4OTM4MTZmNmZlNDAzMWIxNzBiYWMzODU1MWYzZTkpOwogICAgICAgIGdlb19qc29uX2JlZDU2Yzc3NzgyMjQ5YmU4NjczNzUxNGU3NDUwYzExLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2I2ZDMzYWIwM2E1OTQ1NmFhMjA1YWQ2OTU3ZWYzNGI0ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTUuMzA0MzIyMzY2NjU1NzgsIDU1LjI1NjgwOTIyMDIyMzI2XSwgWy02Ljg0MDM2ODA2NDM1MDkyMzUsIDU0Ljg1MjY2MTA5MzA4MDg3XSwgWy03Ljg1MjIzOTMyOTc5MTI1NywgNTYuMDA1NjcwNzM0MDE1MDNdLCBbLTcuMjk2MTM4MDAyODA5NTQ2LCA1Ny41ODAzNjg1NDA4MTk5MjZdLCBbLTUuNzMxNDM2NzYyMDcwODE5LCA1Ny45NjIyMjkwMzIwMzc2MzRdLCBbLTQuNzUxMzQ0MjM1MjYzMjc4LCA1Ni43OTI1ODA5MzA2MTMwNTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzgzODkzODE2ZjZmZTQwMzFiMTcwYmFjMzg1NTFmM2U5KTsKICAgICAgICBnZW9fanNvbl9iNmQzM2FiMDNhNTk0NTZhYTIwNWFkNjk1N2VmMzRiNC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8yZGRkMWI0MDI2ZGQ0NmQ3YTJjMTA3YjM1YjY4M2I5YiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjg1MzM3ODY5MzQxODY2OSwgNTQuNTQyNTQ3NTMyOTUzNjFdLCBbLTQuMzM5MzkzMDYyMTQzMDc0LCA1NC4xNDA3MTkyOTY1MzI4OF0sIFstNS4zMDQzMjIzNjY2NTU3OCwgNTUuMjU2ODA5MjIwMjIzMjZdLCBbLTQuNzUxMzQ0MjM1MjYzMjc4LCA1Ni43OTI1ODA5MzA2MTMwNTZdLCBbLTMuMjM3Mjk0MzgwNjY5MzM0LCA1Ny4xNzM4NTY4NjQ1OTc0NzVdLCBbLTIuMzA0MTE3ODg2OTY2OTEzNCwgNTYuMDQwNzYzNzM2Njc5NTQ0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84Mzg5MzgxNmY2ZmU0MDMxYjE3MGJhYzM4NTUxZjNlOSk7CiAgICAgICAgZ2VvX2pzb25fMmRkZDFiNDAyNmRkNDZkN2EyYzEwN2IzNWI2ODNiOWIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNWUzM2EyNWI3ZDdmNDliZjk0OGFlNWM5ZDU0Y2VlZjcgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC4zMzkzOTMwNjIxNDMwNTcsIDU0LjE0MDcxOTI5NjUzMjg2NV0sIFstMi44NTMzNzg2OTM0MTg2NTE2LCA1NC41NDI1NDc1MzI5NTM2MDZdLCBbLTEuNjI2MzYzNzMwNjQ5NjMzNSwgNTMuNTIzODA0NTc2MTc0MzU2XSwgWy0xLjg2NDg2MzU3NDU3OTExMiwgNTIuMDc1Nzg2NDk3OTQ0NjldLCBbLTMuMzY1MDA0MzA5Nzc2ODc2NSwgNTEuNjQzMzcyMjM3MjY3NDY0XSwgWy00LjYxMjg2MDcyNzQ4MjQ5MiwgNTIuNjg5NTI2MzkxODQ0MThdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzgzODkzODE2ZjZmZTQwMzFiMTcwYmFjMzg1NTFmM2U5KTsKICAgICAgICBnZW9fanNvbl81ZTMzYTI1YjdkN2Y0OWJmOTQ4YWU1YzlkNTRjZWVmNy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKPC9zY3JpcHQ+\" 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 0x7ffa691ab198>"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m = folium.Map(location=[55.365, -3.45], zoom_start=5, )\n",
"\n",
"folium.GeoJson(\n",
" gb_geojson,\n",
" name='uk_boundary'\n",
").add_to(m)\n",
"\n",
"for boundary in hexagons_boundary:\n",
" folium.GeoJson(\n",
" {\"type\":\"Polygon\",\"coordinates\": [boundary]}\n",
" ).add_to(m)\n",
"\n",
"m"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [],
"source": [
"hexagons = list(h3.polyfill(gb_geojson, 3))\n",
"hexagons_boundary = [h3.h3_to_geo_boundary(h3_ix) for h3_ix in hexagons]"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVM9ZmFsc2U7IExfTk9fVE9VQ0g9ZmFsc2U7IExfRElTQUJMRV8zRD1mYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgPHN0eWxlPiNtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMTAwLjAlOwogICAgICAgIGhlaWdodDogMTAwLjAlOwogICAgICAgIGxlZnQ6IDAuMCU7CiAgICAgICAgdG9wOiAwLjAlOwogICAgICAgIH0KICAgIDwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2JkZWZlM2U3NGUyZjQ1ODZhZjdkZTZiZDhmMGZiZTlmIiA+PC9kaXY+CjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKICAgIAogICAgICAgIHZhciBib3VuZHMgPSBudWxsOwogICAgCgogICAgdmFyIG1hcF9iZGVmZTNlNzRlMmY0NTg2YWY3ZGU2YmQ4ZjBmYmU5ZiA9IEwubWFwKAogICAgICAgICdtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYnLCB7CiAgICAgICAgY2VudGVyOiBbNTUuMzY1LCAtMy40NV0sCiAgICAgICAgem9vbTogNSwKICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICBsYXllcnM6IFtdLAogICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcsCiAgICAgICAgem9vbUNvbnRyb2w6IHRydWUsCiAgICAgICAgfSk7CgogICAgCiAgICAKICAgIHZhciB0aWxlX2xheWVyXzNlNzVhZTY0YzljZDRmY2I4NWQ1ZDY2YTQ0MTBmNTcxID0gTC50aWxlTGF5ZXIoCiAgICAgICAgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKICAgICAgICB7CiAgICAgICAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAgICAgICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgICAgICAgIm1heE5hdGl2ZVpvb20iOiAxOCwKICAgICAgICAibWF4Wm9vbSI6IDE4LAogICAgICAgICJtaW5ab29tIjogMCwKICAgICAgICAibm9XcmFwIjogZmFsc2UsCiAgICAgICAgInN1YmRvbWFpbnMiOiAiYWJjIgp9KS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzZhOTFlZTc1Yzk1YzRjN2FiNGQ2ZjIzNTlmZTVhNDM5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTguMzA1NjY0MDYyNSwgNTguMTcwNzAyNDgzNDg2MDldLCBbLTcuODIyMjY1NjI1MDAwMDAxLCA1Ni4zMTY1MzY3MjIxMTMwMV0sIFstNy4xNjMwODU5Mzc0OTk5OTksIDU2LjAyMjk0ODA3OTYyNzQ1NF0sIFstNi42Nzk2ODc1LCA1NS41Mjg2MzA1MjI1NzE5MV0sIFstOC4zMDU2NjQwNjI1LCA1NS4zMDQxMzc3Mzc0MDEzOV0sIFstOC40ODE0NDUzMTI1LCA1NC4zMTY1MjMyNDAyNTgyNTZdLCBbLTcuMTYzMDg1OTM3NDk5OTk5LCA1My42OTY3MDY0NzUzMDMyM10sIFstNS44ODg2NzE4NzUsIDUzLjU2NjQxNDE1Mjc1MDQzXSwgWy01LjI3MzQzNzUsIDUzLjcyMjcxNjY3NDkxODQ4XSwgWy00LjkyMTg3NSwgNTMuMzA0NjIxMDc1MTAyNzFdLCBbLTUuMTQxNjAxNTYyNSwgNTIuNjQzMDYzNDM2NjU4OTJdLCBbLTUuNjI1LCA1MS43MjcwMjgxNTcwNDc3NF0sIFstNi4wNjQ0NTMxMjUsIDUwLjgxOTgxODI2MjE1NjU0NV0sIFstNS44NDQ3MjY1NjI1LCA0OS43MjQ0NzkxODg3MTI5ODRdLCBbLTMuNjQ3NDYwOTM3NDk5OTk5NiwgNDkuNjk2MDYxODE5MTE1NjZdLCBbLTMuMTY0MDYyNSwgNTAuMzczNDk2MTQ0MzAzNV0sIFstMC45NjY3OTY4NzQ5OTk5OTk5LCA1MC40Mjk1MTc5NDcxMjI4N10sIFswLjc5MTAxNTYyNSwgNTAuNjI1MDczMDYzNDE0MzVdLCBbMS42Njk5MjE4NzUsIDUxLjA0MTM5Mzg5ODEyNjM3XSwgWzEuOTc3NTM5MDYyNSwgNTEuNTM2MDg1NjAxNzg0NzU1XSwgWzEuOTc3NTM5MDYyNSwgNTIuNDAyNDE4ODczOTczMzJdLCBbMS43NTc4MTI1LCA1My4wNjc2MjY2NDIzODczNzRdLCBbMC42NTkxNzk2ODc1LCA1My44MDA2NTA4MjYzMzAyM10sIFstMC4zOTU1MDc4MTI1LCA1NC42MjI5NzgxMzI2OTAzM10sIFstMS4xNDI1NzgxMjUsIDU1LjUwMzc0OTg1OTI3NTE0XSwgWy0yLjE1MzMyMDMxMjUsIDU2LjI2Nzc2MTA4NzU3NTgyXSwgWy0xLjk3NzUzOTA2MjUsIDU2Ljg0ODk3MTk4MDI2OTc1XSwgWy0xLjQ1MDE5NTMxMjUsIDU3LjQ2ODU4OTE5MjA4OTM1NF0sIFstMS41ODIwMzEyNSwgNTcuOTg0ODA4MDE5MjM5ODVdLCBbLTMuMTY0MDYyNSwgNTguMDA4MDk3NzkzMDY4ODhdLCBbLTIuNjM2NzE4NzUsIDU4LjU2MjUyMjcyODUzNzM0XSwgWy0xLjYyNTk3NjU2MjUsIDU5LjI0MzQxNDc1ODM5OTc3XSwgWy0wLjgzNDk2MDkzNzUsIDU5LjkxMDk3NTk3MDc5Njc5XSwgWy0wLjQ4MzM5ODQzNzQ5OTk5OTk0LCA2MC43ODA2MTg4MDM0NTg5MzVdLCBbLTAuNjE1MjM0Mzc1LCA2MS4wNzk1NDQyMzQ1NTczMDRdLCBbLTEuOTMzNTkzNzQ5OTk5OTk5OCwgNjAuNTY1Mzc4NTA0NjQxODFdLCBbLTIuMTUzMzIwMzEyNSwgNTkuOTEwOTc1OTcwNzk2NzldLCBbLTIuMjg1MTU2MjUsIDU5LjU3ODg1MTA0NjYzMTg2XSwgWy0zLjU1OTU3MDMxMjUsIDU5LjQ4OTcyNjAzNTUzNzA3NV0sIFstNC4wODY5MTQwNjI1LCA1OC45NzI2NjcxNTQ1MDE1M10sIFstNS43NTY4MzU5Mzc0OTk5OTksIDU4LjYzMTIxNjY0MzQyNDc4XSwgWy03LjQyNjc1NzgxMjUsIDU4LjQ0NzczMjgwMzg5MDg0XSwgWy04LjMwNTY2NDA2MjUsIDU4LjE3MDcwMjQ4MzQ4NjA5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iZGVmZTNlNzRlMmY0NTg2YWY3ZGU2YmQ4ZjBmYmU5Zik7CiAgICAgICAgZ2VvX2pzb25fNmE5MWVlNzVjOTVjNGM3YWI0ZDZmMjM1OWZlNWE0Mzkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNjFiNzZjZTBjZjhlNDAzNmE1ODRlZGJlNDlhNGYyYjkgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMS4wMDEzNzM5ODUwMTQ5Nzc3LCA2MC4wOTQzMDQwNjA4NjI0M10sIFstMS41NTQ5NjY3NjIwNTg4OTcsIDYwLjE2NDE4ODY2NzAxMDA5NF0sIFstMS43MzgyODY3NTQzMDc3MjAzLCA2MC43MjE5NzY1OTU5MTA1MjZdLCBbLTEuMzYzODE5MzMxMDkwOTQ5MiwgNjEuMjA3ODk0NjM5NzY5OTU0XSwgWy0wLjgwOTk2NDkzNTgzMTgwMzEsIDYxLjEzMjk4MDQyNDExNTkxNF0sIFstMC42MzA4MDEyMzEzMzYwNTE2LCA2MC41NzcxNzM0MjI0MjIzM11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uXzYxYjc2Y2UwY2Y4ZTQwMzZhNTg0ZWRiZTQ5YTRmMmI5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzhjMDYwYWYyODc1MjQxMDZiMDU1MWJjMGMxMzczZGEwID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuNDIzMTU0MDIyODY3NDQxLCA1My42MTE2NTAxMzEzMTEyNDRdLCBbLTIuODIxODY1NDcwMzM2NTcwNCwgNTMuNTgyMjI0ODI0ODgyNDk1XSwgWy0yLjUwNDczOTUwOTU5MzU0MiwgNTMuMDgyNTA3NDM1Nzk3MzVdLCBbLTIuNzg5MDY2MzUyNjQ2MzUyLCA1Mi42MDc0MzQ5MzQwOTU4ODVdLCBbLTMuMzk0NzkwODgyMjkzODQyNCwgNTIuNjM0NjYyOTI4ODY2MzFdLCBbLTMuNzExNzUwNzgwMTkxNjEyNSwgNTMuMTM5MTgyMDc1NzgxNDNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2JkZWZlM2U3NGUyZjQ1ODZhZjdkZTZiZDhmMGZiZTlmKTsKICAgICAgICBnZW9fanNvbl84YzA2MGFmMjg3NTI0MTA2YjA1NTFiYzBjMTM3M2RhMC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wNTg1MmM2ODk4NjA0MDk5YTkwZjQ5NDg0OGM3ODM0NSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0wLjgwNjUyNjUxMjQ2NzMxMjQsIDU0LjkwNDQ3Mzc2MzIwNzMzXSwgWy0wLjIyMzA1MjEyNjA4NzI4ODE3LCA1NC44NzI2MDY3ODI2MjM2NF0sIFswLjA5NDA4MjA4MDgyODk5MjMzLCA1NC4zODcxMjIzNDY3NjI1NzRdLCBbLTAuMTcyMTc3NDU4MzQyNjM5NjIsIDUzLjkyODgxMTk4MzI5OTc3NF0sIFstMC43NTk5OTMxNjI0NjAyNDE1LCA1My45NTg2NDU2NjY1NzM4MV0sIFstMS4wNzcyMDYyOTgyMzY4Mjk4LCA1NC40NDg4NDM3OTEyMTI2OTVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2JkZWZlM2U3NGUyZjQ1ODZhZjdkZTZiZDhmMGZiZTlmKTsKICAgICAgICBnZW9fanNvbl8wNTg1MmM2ODk4NjA0MDk5YTkwZjQ5NDg0OGM3ODM0NS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl85MTY0NGUwODMwZjU0YTZjODI3ZTI1ZWIyNDBiOGM5OCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01LjE5MDAwMjc4Mzg1Mjc2NiwgNTAuNzA2NTA4NTIxMDUxMjc2XSwgWy00LjU2OTEzMTQxOTE3NzczNSwgNTAuNjgzNTc4ODg3NTc2NDk1XSwgWy00LjI0NjQwNTUyMDkyMDMyMywgNTAuMTYyNTIzNjMzNTI2MDJdLCBbLTQuNTQ0NjU0OTQ3NTYxNzc3LCA0OS42NTk2Njk2NzAyNTMyNF0sIFstNS4xNjk3MDY5NTkzMDQxNDMsIDQ5LjY4MDExOTg5ODAzNzVdLCBbLTUuNDkyMzMxNzE5NDU4MTI4LCA1MC4yMDU5MjQyMzYyNDU4MzVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2JkZWZlM2U3NGUyZjQ1ODZhZjdkZTZiZDhmMGZiZTlmKTsKICAgICAgICBnZW9fanNvbl85MTY0NGUwODMwZjU0YTZjODI3ZTI1ZWIyNDBiOGM5OC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl80ODYyMGUyNmFlNDQ0NDgyODMwM2VmMDIzN2U3ZDllZSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01LjMwNDMyMjM2NjY1NTc4LCA1NS4yNTY4MDkyMjAyMjMyNl0sIFstNS44ODE1NDgzMjA3NzM3MzYsIDU1LjMwNDM0OTQ4MTA5MTYzXSwgWy02LjA4NTQwNjYxNTMxNDQzNywgNTUuODUxNDc5NjAwMjI4OTM0XSwgWy01LjcwNzExMjg0NDgxNTYyOSwgNTYuMzQ5OTYyMTk3ODQ1NThdLCBbLTUuMTI4NDExMzUwODkyNzY2LCA1Ni4yOTcxODEzODE5OTE3NV0sIFstNC45Mjk0NDQ1NTIwNjA5MDMsIDU1Ljc1MTE2NjkyNzE4MjEyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iZGVmZTNlNzRlMmY0NTg2YWY3ZGU2YmQ4ZjBmYmU5Zik7CiAgICAgICAgZ2VvX2pzb25fNDg2MjBlMjZhZTQ0NDQ4MjgzMDNlZjAyMzdlN2Q5ZWUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fM2M4MmVmY2Q4MjQ4NDg0MzhlYzEwOTY3ZDNjNTY4ZDEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC4zMTg1NjEyNDY1NDg4NjcsIDUzLjE2NzczMDAzODkxNjA2XSwgWy0zLjcxMTc1MDc4MDE5MTYxMjUsIDUzLjEzOTE4MjA3NTc4MTQzXSwgWy0zLjM5NDc5MDg4MjI5Mzg0MjQsIDUyLjYzNDY2MjkyODg2NjMxXSwgWy0zLjY4NDg4Njc2Nzg2OTEzMTUsIDUyLjE1Mzg4NjE5NzAxNjQ1NV0sIFstNC4yOTYxNDc4MjcwMTQ4MTcsIDUyLjE4MDE4MDIwOTgwMTg3XSwgWy00LjYxMjg2MDcyNzQ4MjQ5MiwgNTIuNjg5NTI2MzkxODQ0MThdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2JkZWZlM2U3NGUyZjQ1ODZhZjdkZTZiZDhmMGZiZTlmKTsKICAgICAgICBnZW9fanNvbl8zYzgyZWZjZDgyNDg0ODQzOGVjMTA5NjdkM2M1NjhkMS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9kMmIzNzk3Nzg2ZTk0NzNiOTM1ODc0MmNmYzg3YzYwNCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01LjQ3NzEwNDUyNDIzOTAyMywgNTQuMjI0MTkyOTk4ODc5MzFdLCBbLTYuMDUyNjUyMjUwNzc3OTc5LCA1NC4yNjY1MzgyMTU3ODIxN10sIFstNi4yNTczODM1NjkyMTY5MzYsIDU0LjgwNzA2Mzc3NDMxMDQzNl0sIFstNS44ODE1NDgzMjA3NzM3MzYsIDU1LjMwNDM0OTQ4MTA5MTYzXSwgWy01LjMwNDMyMjM2NjY1NTc4LCA1NS4yNTY4MDkyMjAyMjMyNl0sIFstNS4xMDQ1NzY1Mzk4Nzg4MTMsIDU0LjcxNzE4OTMwOTkwMjQ0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iZGVmZTNlNzRlMmY0NTg2YWY3ZGU2YmQ4ZjBmYmU5Zik7CiAgICAgICAgZ2VvX2pzb25fZDJiMzc5Nzc4NmU5NDczYjkzNTg3NDJjZmM4N2M2MDQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYjE3OGNiMDA0NmEzNDliY2FmOWNhOTY1N2I3NzU1NzAgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMC43NTk5OTMxNjI0NjAyNDE1LCA1My45NTg2NDU2NjY1NzM4MV0sIFstMC4xNzIxNzc0NTgzNDI2Mzk2MiwgNTMuOTI4ODExOTgzMjk5Nzc0XSwgWzAuMTQ3NDg5MDQxNzIzMzk5NjMsIDUzLjQzNzIzNDcxNDEzMDcxXSwgWy0wLjEyMDQ4OTI0NDY1MDU2NjU4LCA1Mi45NzA4MTQ5NDcwNDc3MTRdLCBbLTAuNzEyNTQ0MzAxNjU3OTU5MiwgNTIuOTk4NTMzNDY1ODM0OTddLCBbLTEuMDMyMzgxODg2MTg4MjQ3LCA1My40OTQ4MDc1NzA5NTI0M11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uX2IxNzhjYjAwNDZhMzQ5YmNhZjljYTk2NTdiNzc1NTcwLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2I0MzJjMmJkOGE2NDQ1OGZhOGZmYjQ2NjEyZjBhNDVhID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTUuMjI0OTUyMTk3NDI3OTE2LCA1Mi43MTcxNjM4NzIzNzUyOV0sIFstNC42MTI4NjA3Mjc0ODI0OTIsIDUyLjY4OTUyNjM5MTg0NDE4XSwgWy00LjI5NjE0NzgyNzAxNDgxNywgNTIuMTgwMTgwMjA5ODAxODddLCBbLTQuNTkxODUxNzgyNjc1Njg2LCA1MS42OTM2NDMxMjA1ODU4MjZdLCBbLTUuMjA4Mzk5MjM4NDU0Mzg5LCA1MS43MTg5NjkwNjIwMDE2N10sIFstNS41MjQ3ODUyOTU1NDA1ODIsIDUyLjIzMzE2NTI0NTEwNDc3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iZGVmZTNlNzRlMmY0NTg2YWY3ZGU2YmQ4ZjBmYmU5Zik7CiAgICAgICAgZ2VvX2pzb25fYjQzMmMyYmQ4YTY0NDU4ZmE4ZmZiNDY2MTJmMGE0NWEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNzZlOWVkNzZkNDMzNDJkYThjYzI5NDYyZDRkZjVmYTYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC4zNTgyNDkxOTU1NTkwNTIsIDU1LjcwMTczMzc4MzM1MTg3XSwgWy00LjkyOTQ0NDU1MjA2MDkwMywgNTUuNzUxMTY2OTI3MTgyMTJdLCBbLTUuMTI4NDExMzUwODkyNzY2LCA1Ni4yOTcxODEzODE5OTE3NV0sIFstNC43NTEzNDQyMzUyNjMyNzgsIDU2Ljc5MjU4MDkzMDYxMzA1Nl0sIFstNC4xNzg4NDE5OTk5NTI0NzMsIDU2LjczNzk2MzkxMDUzMjE0NF0sIFstMy45ODQ2NzgzNjc0NDE2NDc1LCA1Ni4xOTMxMzgzMjc3MTk0NzRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2JkZWZlM2U3NGUyZjQ1ODZhZjdkZTZiZDhmMGZiZTlmKTsKICAgICAgICBnZW9fanNvbl83NmU5ZWQ3NmQ0MzM0MmRhOGNjMjk0NjJkNGRmNWZhNi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xYTllYzEwNGVlNTQ0MzNjODgwNzc0ODdlYjRiNWE2ZCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00Ljk0OTQ5MzM0MjYwOTE3MSwgNTcuMzQ0NzAzODE2MzY3MzRdLCBbLTUuNTI5NDYyNjUzNTA3Mzk2LCA1Ny40MDI3NjA3NTM4MTAyN10sIFstNS43MzE0MzY3NjIwNzA4MjU1LCA1Ny45NjIyMjkwMzIwMzc2MzRdLCBbLTUuMzQ4NzI3MTY3OTU1Mzk2LCA1OC40NjIxMDE2NjA2NzM5Ml0sIFstNC43Njc3MDIxNzU0NjI2MzksIDU4LjM5ODc0MzQwNDYzMTc2Nl0sIFstNC41NzA0MDU3NTgwOTcxMDksIDU3Ljg0MDgxNjcwNDg4Mjg3Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uXzFhOWVjMTA0ZWU1NDQzM2M4ODA3NzQ4N2ViNGI1YTZkLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzBmMGI2MmVmZjAwZjQ2MTFhMjI2YzE3ZDU4MmQyMDEzID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuMDUyNTU4ODg2MzA4NTg2LCA1OC4yMTIyOTIyNjcxNTI0ODVdLCBbLTMuNjE5NTU3ODY2MjQzMzYwNSwgNTguMjczODQ3MjM3NDg2NDNdLCBbLTMuODEyMjY5MjY0Njk2MTksIDU4LjgzMDE2Njk4ODE3OTc3XSwgWy0zLjQzMzQ1Njg5Njk0OTYxMDYsIDU5LjMyMzI2MzA0Mzg0MzZdLCBbLTIuODY1NzE1ODM0NTA0NDc2LCA1OS4yNTY1NDAyNTA4NzAwOF0sIFstMi42Nzc0OTE2MDM5MjE0NjUsIDU4LjcwMTg4OTcxMjE3NTIyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iZGVmZTNlNzRlMmY0NTg2YWY3ZGU2YmQ4ZjBmYmU5Zik7CiAgICAgICAgZ2VvX2pzb25fMGYwYjYyZWZmMDBmNDYxMWEyMjZjMTdkNTgyZDIwMTMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNjc1ZDYxNzI3Mjg2NGU1YmJlNmI5NzhhMzUwMWU4YTUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNi44Nzc4NTA4NTA1ODcyMjEsIDU2LjQ1NzA3OTI1MjAxNzM3XSwgWy03LjQ2OTczODk2MzcwMTE0NywgNTYuNTExNDMwNjUzOTg2NTk0XSwgWy03LjY4MTMyMjcwODg1NjAzMywgNTcuMDczNzczMTc1MzMyOV0sIFstNy4yOTYxMzgwMDI4MDk1NDYsIDU3LjU4MDM2ODU0MDgxOTkyNl0sIFstNi43MDI4NTk1MzMyNDcyNTUsIDU3LjUyMDU4NDgwNTU3MTY1XSwgWy02LjQ5NjEyMDg1MTg2MjksIDU2Ljk1OTY0MzUwMTcwMzldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2JkZWZlM2U3NGUyZjQ1ODZhZjdkZTZiZDhmMGZiZTlmKTsKICAgICAgICBnZW9fanNvbl82NzVkNjE3MjcyODY0ZTViYmU2Yjk3OGEzNTAxZThhNS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8yZjFjNDNjNzk4YjE0ZmNiYTZkMTQzOWRmZGZiZmQxYSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjg1MzM3ODY5MzQxODY2OSwgNTQuNTQyNTQ3NTMyOTUzNjFdLCBbLTMuNDA5MjM1MzY1ODY4ODkyOCwgNTQuNTg1NTg0NjQzMTY0NDhdLCBbLTMuNTk5ODI5OTY4NzUyMTMxLCA1NS4xMTY5MTAyMjYzNjExNF0sIFstMy4yMjk3MjkwNDYxMjYwNjczLCA1NS42MDQyNzk4MTI4MjI5OV0sIFstMi42NzI1MTAxNjUzMzY1ODU3LCA1NS41NTYyNDU3MzgwOTgzNTVdLCBbLTIuNDg2NzE5NzkzNzE3Mjg3LCA1NS4wMjU4NDg2Njc1ODc2OF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uXzJmMWM0M2M3OThiMTRmY2JhNmQxNDM5ZGZkZmJmZDFhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2FkZmEzYWUyMDMxYzRkYmI5Y2FjNzg3NmIyY2FmNTY3ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTA0NzM5NTA5NTkzNTQyLCA1My4wODI1MDc0MzU3OTczNV0sIFstMS45MDQ3ODE0MjQ4MDMyNTQ5LCA1My4wNTQzNzg3MTkxNjA1NzRdLCBbLTEuNTg0ODUwODI0MTA1MywgNTIuNTUzMzgxNDU5NzA2NzZdLCBbLTEuODY0ODYzNTc0NTc5MTEyLCA1Mi4wNzU3ODY0OTc5NDQ2OV0sIFstMi40NjkxMjA4OTQwODM4NDYzLCA1Mi4xMDE2OTAzMDI2MTIyMDVdLCBbLTIuNzg5MDY2MzUyNjQ2MzUyLCA1Mi42MDc0MzQ5MzQwOTU4ODVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2JkZWZlM2U3NGUyZjQ1ODZhZjdkZTZiZDhmMGZiZTlmKTsKICAgICAgICBnZW9fanNvbl9hZGZhM2FlMjAzMWM0ZGJiOWNhYzc4NzZiMmNhZjU2Ny5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lZGM4NmY5ZDJhNDM0NzU4YTE4ZGFmNjc3MjJlODQyOSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjExNzMyMTU5MjY5NDg1MSwgNTguNjM4NjYxNTIzNDkzNDA0XSwgWy0yLjY3NzQ5MTYwMzkyMTQ2NSwgNTguNzAxODg5NzEyMTc1MjJdLCBbLTIuODY1NzE1ODM0NTA0NDc2LCA1OS4yNTY1NDAyNTA4NzAwOF0sIFstMi40ODkzNDc0MTIxNTc0NiwgNTkuNzQ2MjMzNTM0OTU3NzNdLCBbLTEuOTI4NTgyOTE2MDU5NzQ4MywgNTkuNjc3OTA0OTU2NTQ0MzRdLCBbLTEuNzQ0NzQzNDQwNTMzNTQ0LCA1OS4xMjQ5ODI4NjEwNDQ1OF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uX2VkYzg2ZjlkMmE0MzQ3NThhMThkYWY2NzcyMmU4NDI5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzhlYWY4ZGExN2RiNzQ1OGViZTAxMDg2NTRmNWYzYzMwID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTUuNTM4MTYzNjU2OTU2NjA4LCA1My4yMjUyNTI0MjUwMzIyNDVdLCBbLTYuMTUwNjk2MzQyNjM5MTkzLCA1My4yNTQyMjg5NDc1NzE3OF0sIFstNi4zNTcyMjYxMzYzMDQzMTIsIDUzLjU5MjM0MzUxOTQ3MjMyXSwgWy02LjQyNTg3MzkyMzE3NjQ4NywgNTMuNzcwNzcxNDY1OTI5MTZdLCBbLTYuMDUyNjUyMjUwNzc3OTc5LCA1NC4yNjY1MzgyMTU3ODIxN10sIFstNS40NzcxMDQ1MjQyMzkwMjMsIDU0LjIyNDE5Mjk5ODg3OTMxXSwgWy01LjM0MzMxNTcwMDY5OTk3MiwgNTMuODY4MzU2OTkwMTUwODVdLCBbLTUuMjM5NzIwMjQ2OTQxNzQ2LCA1My43MDA3OTkzNjQ0NzcxN11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uXzhlYWY4ZGExN2RiNzQ1OGViZTAxMDg2NTRmNWYzYzMwLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzRhODJkZWI3NWE4ZjRiMTZiYmFkNWQ3MzU3MDhjZmEwID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMS4wNTQ5NTkwMzA1NzQ2ODQ1LCA1Mi45MTU3ODEyNDAxNjM5Ml0sIFsxLjYzODE0ODcwMjQxOTE0NywgNTIuODg4NDY0MTI1NjYxMjVdLCBbMS45NjE3MzY1MjA1OTYxODcyLCA1Mi4zOTQzNzE2MTkzNTQ2NDRdLCBbMS43MDI2MzU5ODcyMDEzMDM3LCA1MS45MjMwMjI1MzcwMDA2NV0sIFsxLjExNTUwNjc2OTg2NzM4NSwgNTEuOTQ4MTcxMjY4MTQzODI0XSwgWzAuNzkxNDEzNDczNjI1NTA2MSwgNTIuNDQ2ODU3NDAwMDI4MDRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2JkZWZlM2U3NGUyZjQ1ODZhZjdkZTZiZDhmMGZiZTlmKTsKICAgICAgICBnZW9fanNvbl80YTgyZGViNzVhOGY0YjE2YmJhZDVkNzM1NzA4Y2ZhMC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8zMTg2ZTBiY2QzMTk0ZGM5OGEzNzUwM2Y4MWJmYTRjNiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjQ4NjcxOTc5MzcxNzI4NywgNTUuMDI1ODQ4NjY3NTg3NjhdLCBbLTEuOTM3Mjc1NjM2Mzk2NTQ1MywgNTQuOTgwOTYwNzIxMDM3NTZdLCBbLTEuODc2NjQ1NzU3ODY1MTk0MywgNTQuODA2MDQxODY4MDI1MDM0XSwgWy0xLjY2NjgwNzI4OTM3NTc4OTUsIDU0LjQ3OTkyNzc2NTA2MDZdLCBbLTEuOTQzNTc0MTc3MTMxNjc5MiwgNTQuMDE4NzQ3NjI5NDQyMjk1XSwgWy0yLjUzOTExOTY4ODQ3ODg0NywgNTQuMDQ5MDE3OTkxMDgxODc1XSwgWy0yLjg1MzM3ODY5MzQxODY1MTYsIDU0LjU0MjU0NzUzMjk1MzYwNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uXzMxODZlMGJjZDMxOTRkYzk4YTM3NTAzZjgxYmZhNGM2LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2VjZWMzNzRkYjYwMDQyZDE5YjExOWVjNjg4NTU1NGUyID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuNDE5NzY2Njk0NzA1LCA1Ni4xNDE4NjE3NjMyMzE0OTZdLCBbLTMuOTg0Njc4MzY3NDQxNjQ3NSwgNTYuMTkzMTM4MzI3NzE5NDc0XSwgWy00LjE3ODg0MTk5OTk1MjQ3MywgNTYuNzM3OTYzOTEwNTMyMTQ0XSwgWy0zLjgwMzM0OTE2MzY3NTg2NDcsIDU3LjIzMDI1OTcyNTc0MTY3NV0sIFstMy4yMzcyOTQzODA2NjkzMzQsIDU3LjE3Mzg1Njg2NDU5NzQ3NV0sIFstMy4wNDc4Mzk1MDgzNDI2MzI2LCA1Ni42MzAyOTAzNDg4NjQzN11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uX2VjZWMzNzRkYjYwMDQyZDE5YjExOWVjNjg4NTU1NGUyLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2MyYWI5MzY4OGFmYjQ3ZGQ5ZjUwY2MwZWQ4MGNmMzg2ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTAuNjY0MTk1MjQyMjI4MjI3MSwgNTIuMDI0MzYyNDM1NjQ4NDhdLCBbLTAuMDY4MDEyMzI0MzA3NzM0OTUsIDUxLjk5ODg0MDMxMDE4MDYxXSwgWzAuMjU2NTE2OTM2MTA4NzkxNCwgNTEuNDk1NTQwNDg2ODQwODddLCBbLTAuMDE0Nzc0OTQyMDA4Mzc2MTEyLCA1MS4wMTMxNTE0NzEwNjQ5NF0sIFstMC42MTQ5NjQ1NjY0NDAwMjQzLCA1MS4wMzYzOTY5ODg2NTU4Ml0sIFstMC45Mzk4NTk2NjE0MTk1NDIyLCA1MS41NDQzMjgyNDg2MDgxNzRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2JkZWZlM2U3NGUyZjQ1ODZhZjdkZTZiZDhmMGZiZTlmKTsKICAgICAgICBnZW9fanNvbl9jMmFiOTM2ODhhZmI0N2RkOWY1MGNjMGVkODBjZjM4Ni5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl82MTczZTUyMzE1ODg0OTJkODA3N2U4ODQ2NjA4N2ZmZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzAuMDk0MDgyMDgwODI4OTkyMzMsIDU0LjM4NzEyMjM0Njc2MjU3NF0sIFswLjY3NTU2MTMwMDgyNjAyOTMsIDU0LjM1NjQ4Mjc3ODgxNzg4NV0sIFswLjk5NDk3OTEwMjIxNTMzNzMsIDUzLjg2OTU3NDA4MDUyMzA4XSwgWzAuNzMzMTY2MDkxMTQ4MjU3NSwgNTMuNDA4NjU2ODU3Mjg5OV0sIFswLjE0NzQ4OTA0MTcyMzM5OTYzLCA1My40MzcyMzQ3MTQxMzA3MV0sIFstMC4xNzIxNzc0NTgzNDI2Mzk2MiwgNTMuOTI4ODExOTgzMjk5Nzc0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iZGVmZTNlNzRlMmY0NTg2YWY3ZGU2YmQ4ZjBmYmU5Zik7CiAgICAgICAgZ2VvX2pzb25fNjE3M2U1MjMxNTg4NDkyZDgwNzdlODg0NjYwODdmZmYuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMDU4YTY4MGM1OTIzNDUxYWE0YjRjNzVlYmQ1ZDViZjcgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC42MzIyMDU3NzQzMTAxMjMsIDUzLjY3MDkzNjMzOTc1ODc5XSwgWy01LjIzOTcyMDI0Njk0MTc0NiwgNTMuNzAwNzk5MzY0NDc3MTddLCBbLTUuMzQzMzE1NzA2NjY4OTAzLCA1My44NjgzNTcwMDYwMTA1OF0sIFstNS40NzcxMDQ1MjQyMzkwMjMsIDU0LjIyNDE5Mjk5ODg3OTMxXSwgWy01LjEwNDU3NjUzOTg3ODgxMywgNTQuNzE3MTg5MzA5OTAyNDRdLCBbLTQuNTM0ODg3MjA2MzIxODYyLCA1NC42NzI4OTk1OTI5NzgzXSwgWy00LjMzOTM5MzA2MjE0MzA3NCwgNTQuMTQwNzE5Mjk2NTMyODhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2JkZWZlM2U3NGUyZjQ1ODZhZjdkZTZiZDhmMGZiZTlmKTsKICAgICAgICBnZW9fanNvbl8wNThhNjgwYzU5MjM0NTFhYTRiNGM3NWViZDVkNWJmNy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8zNmMxYTk3NTIzMDU0MzdjYjQwNmJlNTgzZDkxYjlkNyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzEuMTE1NTA2NzY5ODY3Mzg1LCA1MS45NDgxNzEyNjgxNDM4MjRdLCBbMS43MDI2MzU5ODcyMDEzMDM3LCA1MS45MjMwMjI1MzcwMDA2NV0sIFsyLjAyODM0ODU1MTc5OTg1NzYsIDUxLjQyMzI1NjU2OTQwMzkwNF0sIFsxLjc2NzUyNTc2MDU4MjEyODYsIDUwLjk0NDEwMzQyODAxMjU5XSwgWzEuMTc2NTc1MzY3NjA2NzQzNiwgNTAuOTY3MDA1NTM1MTA3MzNdLCBbMC44NTAyNjI4OTE3NzU1NzEsIDUxLjQ3MTMyNzAyNzcxNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uXzM2YzFhOTc1MjMwNTQzN2NiNDA2YmU1ODNkOTFiOWQ3LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzI2NDE0OWNiMmVlMTRiZjJhN2Q0NTZkMjJkZjQ5ZjZjID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTguMTgxOTA3MzM4MjMwMDY5LCA1My44OTMwMjIzNzY1Mjc3NV0sIFstOC43NzU1MTk3NjU2NjE1MiwgNTMuOTM0NTgxMzk0NzE2MzA0XSwgWy04Ljk5NDUxMjc0MTYwMDU5MywgNTQuNDg0NTg4MzM0MjE2MTJdLCBbLTguNjE0NzQ3NzMwOTY0OTc1LCA1NC45OTIxNzEzOTk1MDY4NDRdLCBbLTguMDE5MTMwODc2MzMzMjA0LCA1NC45NDUyMDgyNDc1OTMzXSwgWy03LjgwNTI1MTkzNjc0NzY4OCwgNTQuMzk2MDc4NzQyODI2OTQ0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iZGVmZTNlNzRlMmY0NTg2YWY3ZGU2YmQ4ZjBmYmU5Zik7CiAgICAgICAgZ2VvX2pzb25fMjY0MTQ5Y2IyZWUxNGJmMmE3ZDQ1NmQyMmRmNDlmNmMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNzU1OTkxODg1ODllNGIxNjgzZTIyMWU0YTcxYThmNTMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNi40MjU4NzM5MjMxNzY0ODcsIDUzLjc3MDc3MTQ2NTkyOTE2XSwgWy03LjAwNzAwNDIzNzM4NTc2MSwgNTMuODExMTIzMzAwOTc3MTddLCBbLTcuMjE2Nzk5Mzc3NDk1MDE3LCA1NC4zNTI0NzQ5OTI5ODcwNF0sIFstNi44NDAzNjgwNjQzNTA5MjM1LCA1NC44NTI2NjEwOTMwODA4N10sIFstNi4yNTczODM1NjkyMTY5MzYsIDU0LjgwNzA2Mzc3NDMxMDQzNl0sIFstNi4wNTI2NTIyNTA3Nzc5NzksIDU0LjI2NjUzODIxNTc4MjE3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iZGVmZTNlNzRlMmY0NTg2YWY3ZGU2YmQ4ZjBmYmU5Zik7CiAgICAgICAgZ2VvX2pzb25fNzU1OTkxODg1ODllNGIxNjgzZTIyMWU0YTcxYThmNTMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNTFhMjAyMGZiYmYxNDg1OWEwZDI0MThjN2QyYzQ1YWQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMC42MTQ5NjQ1NjY0NDAwMjQzLCA1MS4wMzYzOTY5ODg2NTU4Ml0sIFstMC4wMTQ3NzQ5NDIwMDgzNzYxMTIsIDUxLjAxMzE1MTQ3MTA2NDk0XSwgWzAuMzEyMDcxODU3ODY3NTYwNTMsIDUwLjUwNDI1OTk2NTQ1MzAzXSwgWzAuMDM5MTkxMTgwOTA2MTEzNzMsIDUwLjAxNDA1MTc2MTE5NTEzNF0sIFstMC41NjQ4NzQyNDM0OTA3Mjk3LCA1MC4wMzQ5NDE4NjcyMDQzN10sIFstMC44OTIxODkyMzYyOTk0ODQ4LCA1MC41NDg0MTUyODcxNzM1MV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uXzUxYTIwMjBmYmJmMTQ4NTlhMGQyNDE4YzdkMmM0NWFkLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzJkNjk5YTk1YjQ2OTRkYTNiNmI5MjIwYzJmZGJlOTQ5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTUuMTI4NDExMzUwODkyNzY2LCA1Ni4yOTcxODEzODE5OTE3NV0sIFstNS43MDcxMTI4NDQ4MTU2MjksIDU2LjM0OTk2MjE5Nzg0NTU4XSwgWy01LjkxMDA1MDc3NjM3MTg4MSwgNTYuOTAzNDEzMDAwOTg3OTVdLCBbLTUuNTI5NDYyNjUzNTA3Mzk2LCA1Ny40MDI3NjA3NTM4MTAyN10sIFstNC45NDk0OTMzNDI2MDkxNzEsIDU3LjM0NDcwMzgxNjM2NzM0XSwgWy00Ljc1MTM0NDIzNTI2MzI3OCwgNTYuNzkyNTgwOTMwNjEzMDU2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iZGVmZTNlNzRlMmY0NTg2YWY3ZGU2YmQ4ZjBmYmU5Zik7CiAgICAgICAgZ2VvX2pzb25fMmQ2OTlhOTViNDY5NGRhM2I2YjkyMjBjMmZkYmU5NDkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZmUxZDg3ZDY4YTdiNDQxNjlhYWFmN2UyOGQ4ZGIwMGEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy43MzcxNDgwNjk1MjQxNTcsIDU0LjExMDAwMjc1Mzc5ODEwNl0sIFstNC4zMzkzOTMwNjIxNDMwNzQsIDU0LjE0MDcxOTI5NjUzMjg4XSwgWy00LjUzNDg4NzIwNjMyMTg2MiwgNTQuNjcyODk5NTkyOTc4M10sIFstNC4xNjM0MDM0MjYyMzY0ODMsIDU1LjE2MzA5NjA1NDc2NTI3Nl0sIFstMy41OTk4Mjk5Njg3NTIxMzEsIDU1LjExNjkxMDIyNjM2MTE0XSwgWy0zLjQwOTIzNTM2NTg2ODg5MjgsIDU0LjU4NTU4NDY0MzE2NDQ4XSwgWy0zLjU5MzMyNDE4ODIzMDUyNCwgNTQuMzQyNjMwOTkyNjcyMDM1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iZGVmZTNlNzRlMmY0NTg2YWY3ZGU2YmQ4ZjBmYmU5Zik7CiAgICAgICAgZ2VvX2pzb25fZmUxZDg3ZDY4YTdiNDQxNjlhYWFmN2UyOGQ4ZGIwMGEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMWZiMzIyY2EzNGE5NDhmN2E3MmUzYTZiOGM1Mzc0MzcgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNi4wODU0MDY2MTUzMTQ0MzcsIDU1Ljg1MTQ3OTYwMDIyODkzNF0sIFstNi42NzAwMzk1ODgyNjk1MDksIDU1LjkwMjM3MzE0ODU5OTk4NV0sIFstNi44Nzc4NTA4NTA1ODcyMjEsIDU2LjQ1NzA3OTI1MjAxNzM3XSwgWy02LjQ5NjEyMDg1MTg2MjksIDU2Ljk1OTY0MzUwMTcwMzldLCBbLTUuOTEwMDUwNzc2MzcxODgxLCA1Ni45MDM0MTMwMDA5ODc5NV0sIFstNS43MDcxMTI4NDQ4MTU2MjksIDU2LjM0OTk2MjE5Nzg0NTU4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iZGVmZTNlNzRlMmY0NTg2YWY3ZGU2YmQ4ZjBmYmU5Zik7CiAgICAgICAgZ2VvX2pzb25fMWZiMzIyY2EzNGE5NDhmN2E3MmUzYTZiOGM1Mzc0Mzcuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMGUzM2Y0NTkxNGNlNDkwOTlkMGZhMjI5Nzk0ZGIxOWYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41MzkxMTk2ODg0Nzg4NDcsIDU0LjA0OTAxNzk5MTA4MTg3NV0sIFstMS45NDM1NzQxNzcxMzE2NzkyLCA1NC4wMTg3NDc2Mjk0NDIyOTVdLCBbLTEuNjI2MzYzNzMwNjQ5NjMzNSwgNTMuNTIzODA0NTc2MTc0MzU2XSwgWy0xLjkwNDc4MTQyNDgwMzI1NDksIDUzLjA1NDM3ODcxOTE2MDU3NF0sIFstMi41MDQ3Mzk1MDk1OTM1NDIsIDUzLjA4MjUwNzQzNTc5NzM1XSwgWy0yLjgyMTg2NTQ3MDMzNjU3MDQsIDUzLjU4MjIyNDgyNDg4MjQ5NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uXzBlMzNmNDU5MTRjZTQ5MDk5ZDBmYTIyOTc5NGRiMTlmLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzQxY2NjNzJhZjE3MjRlMjlhNGQ4YzQ4ZWMyYjYxOGVlID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQuMTc4ODQxOTk5OTUyNDczLCA1Ni43Mzc5NjM5MTA1MzIxNDRdLCBbLTQuNzUxMzQ0MjM1MjYzMjc4LCA1Ni43OTI1ODA5MzA2MTMwNTZdLCBbLTQuOTQ5NDkzMzQyNjA5MTcxLCA1Ny4zNDQ3MDM4MTYzNjczNF0sIFstNC41NzA0MDU3NTgwOTcxMDksIDU3Ljg0MDgxNjcwNDg4Mjg3Nl0sIFstMy45OTY4MDAyMDA0NTkyMTYyLCA1Ny43ODA5ODUyMTE1NjAyOF0sIFstMy44MDMzNDkxNjM2NzU4NjQ3LCA1Ny4yMzAyNTk3MjU3NDE2NzVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2JkZWZlM2U3NGUyZjQ1ODZhZjdkZTZiZDhmMGZiZTlmKTsKICAgICAgICBnZW9fanNvbl80MWNjYzcyYWYxNzI0ZTI5YTRkOGM0OGVjMmI2MThlZS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9iMzVkNjk5MzRkZDM0MTIyYjlkMjM3M2IwNTk2YzJlYiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0wLjcxMjU0NDMwMTY1Nzk1OTIsIDUyLjk5ODUzMzQ2NTgzNDk3XSwgWy0wLjEyMDQ4OTI0NDY1MDU2NjU4LCA1Mi45NzA4MTQ5NDcwNDc3MTRdLCBbMC4yMDE2NDQ0MTI1OTg2ODI0MywgNTIuNDczMjkyOTQ1MDk0NzJdLCBbLTAuMDY4MDEyMzI0MzA3NzM0OTUsIDUxLjk5ODg0MDMxMDE4MDYxXSwgWy0wLjY2NDE5NTI0MjIyODIyNzEsIDUyLjAyNDM2MjQzNTY0ODQ4XSwgWy0wLjk4NjU5NTY1NDQ3MjUwNjIsIDUyLjUyNjU1NDAyNTMwMzEyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iZGVmZTNlNzRlMmY0NTg2YWY3ZGU2YmQ4ZjBmYmU5Zik7CiAgICAgICAgZ2VvX2pzb25fYjM1ZDY5OTM0ZGQzNDEyMmI5ZDIzNzNiMDU5NmMyZWIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNDE2M2NmZjY1NzUxNDZhNDhiMWMyZmQ1MWU5NDFjODQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNi4yNTczODM1NjkyMTY5MzYsIDU0LjgwNzA2Mzc3NDMxMDQzNl0sIFstNi44NDAzNjgwNjQzNTA5MjM1LCA1NC44NTI2NjEwOTMwODA4N10sIFstNy4wNDkxOTk0OTc2NzIxMTc1LCA1NS40MDA4MzA2MDE4MjU0OV0sIFstNi42NzAwMzk1ODgyNjk1MDksIDU1LjkwMjM3MzE0ODU5OTk4NV0sIFstNi4wODU0MDY2MTUzMTQ0MzcsIDU1Ljg1MTQ3OTYwMDIyODkzNF0sIFstNS44ODE1NDgzMjA3NzM3MzYsIDU1LjMwNDM0OTQ4MTA5MTYzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iZGVmZTNlNzRlMmY0NTg2YWY3ZGU2YmQ4ZjBmYmU5Zik7CiAgICAgICAgZ2VvX2pzb25fNDE2M2NmZjY1NzUxNDZhNDhiMWMyZmQ1MWU5NDFjODQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZDVkZDdkM2E2NGMxNDI0ZTlkZWIxZmJlZWUwY2M1ZmEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1swLjIwMTY0NDQxMjU5ODY4MjQzLCA1Mi40NzMyOTI5NDUwOTQ3Ml0sIFswLjc5MTQxMzQ3MzYyNTUwNjEsIDUyLjQ0Njg1NzQwMDAyODA0XSwgWzEuMTE1NTA2NzY5ODY3Mzg1LCA1MS45NDgxNzEyNjgxNDM4MjRdLCBbMC44NTAyNjI4OTE3NzU1NzEsIDUxLjQ3MTMyNzAyNzcxNF0sIFswLjI1NjUxNjkzNjEwODc5MTQsIDUxLjQ5NTU0MDQ4Njg0MDg3XSwgWy0wLjA2ODAxMjMyNDMwNzczNDk1LCA1MS45OTg4NDAzMTAxODA2MV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uX2Q1ZGQ3ZDNhNjRjMTQyNGU5ZGViMWZiZWVlMGNjNWZhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2FmNWViMTFmYWIwZTQzMTM5MmFkNGU3Y2Y4NWQ4ODk5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTUuNzMxNDM2NzYyMDcwODI1NSwgNTcuOTYyMjI5MDMyMDM3NjM0XSwgWy02LjMxODcyNzUxNjAzNzk5NSwgNTguMDIzODI2NzIwMzM0OTc0XSwgWy02LjUyNDM0NTUyODk0MjYxMywgNTguNTkwNjgyMzc2Mzk3NjE2XSwgWy02LjEzNzk4ODcwNDYxNzM5MiwgNTkuMDk0MjQ5ODUwNzM2NDZdLCBbLTUuNTQ5Njk4MDczODMyMDk5LCA1OS4wMjcyNjU2MzMwMDcyNTRdLCBbLTUuMzQ4NzI3MTY3OTU1Mzk2LCA1OC40NjIxMDE2NjA2NzM5Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uX2FmNWViMTFmYWIwZTQzMTM5MmFkNGU3Y2Y4NWQ4ODk5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzIyYWI2MTE4ZTU0YzQ3YzZiOTE4NjAzYmQyN2RmYTFiID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTEuMTkxNjA0MjM3NjMyOTg1LCA1OS4wNjAxMzA4NzY3MDQxM10sIFstMS43NDQ3NDM0NDA1MzM1NDQsIDU5LjEyNDk4Mjg2MTA0NDU4XSwgWy0xLjkyODU4MjkxNjA1OTc0ODMsIDU5LjY3NzkwNDk1NjU0NDM0XSwgWy0xLjU1NDk2Njc2MjA1ODg5NywgNjAuMTY0MTg4NjY3MDEwMDk0XSwgWy0xLjAwMTM3Mzk4NTAxNDk3NzcsIDYwLjA5NDMwNDA2MDg2MjQzXSwgWy0wLjgyMTgxMjkwNTU3MjU0MDgsIDU5LjU0MzE2NjY4NDg3MzMyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iZGVmZTNlNzRlMmY0NTg2YWY3ZGU2YmQ4ZjBmYmU5Zik7CiAgICAgICAgZ2VvX2pzb25fMjJhYjYxMThlNTRjNDdjNmI5MTg2MDNiZDI3ZGZhMWIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMGE3YTI5NWU5YTNhNGQ3ZWFiM2EyYzg5ZGQxYjg4Y2QgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi40ODk0NDUyMzQ5ODQ5MjIsIDU2LjU3NzIxOTIwMjYzNzAyXSwgWy0zLjA0NzgzOTUwODM0MjYzMjYsIDU2LjYzMDI5MDM0ODg2NDM3XSwgWy0zLjIzNzI5NDM4MDY2OTMzNCwgNTcuMTczODU2ODY0NTk3NDc1XSwgWy0yLjg2MzcwOTUzMjM2MDgzNzcsIDU3LjY2MzAzMDU5MzkzODRdLCBbLTIuMzA0MzMwNDczMTk4NTY5LCA1Ny42MDQ4OTE1MzIyMTU5Ml0sIFstMi4xMTk0ODQ1MDA5NTAzNjcsIDU3LjA2MjY1MTMyMjg2MTI1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iZGVmZTNlNzRlMmY0NTg2YWY3ZGU2YmQ4ZjBmYmU5Zik7CiAgICAgICAgZ2VvX2pzb25fMGE3YTI5NWU5YTNhNGQ3ZWFiM2EyYzg5ZGQxYjg4Y2Quc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fOTUzYTU3YTQ1MTAyNDJlMjgxNTZiODU5MTY1MjhjZDQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42NzI1MTAxNjUzMzY1ODU3LCA1NS41NTYyNDU3MzgwOTgzNTVdLCBbLTMuMjI5NzI5MDQ2MTI2MDY3MywgNTUuNjA0Mjc5ODEyODIyOTldLCBbLTMuNDE5NzY2Njk0NzA1LCA1Ni4xNDE4NjE3NjMyMzE0OTZdLCBbLTMuMDQ3ODM5NTA4MzQyNjMyNiwgNTYuNjMwMjkwMzQ4ODY0MzddLCBbLTIuNDg5NDQ1MjM0OTg0OTIyLCA1Ni41NzcyMTkyMDI2MzcwMl0sIFstMi4zMDQxMTc4ODY5NjY5MTM0LCA1Ni4wNDA3NjM3MzY2Nzk1NDRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2JkZWZlM2U3NGUyZjQ1ODZhZjdkZTZiZDhmMGZiZTlmKTsKICAgICAgICBnZW9fanNvbl85NTNhNTdhNDUxMDI0MmUyODE1NmI4NTkxNjUyOGNkNC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl85N2EwNWU4ZGU3ZGI0NjEyOTEzNDlkNGRlMmRkZGZhMiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjQwOTIzNTM2NTg2ODg5MjgsIDU0LjU4NTU4NDY0MzE2NDQ4XSwgWy0yLjg1MzM3ODY5MzQxODY1MTYsIDU0LjU0MjU0NzUzMjk1MzYwNl0sIFstMi41MzkxMTk2ODg0Nzg4NDcsIDU0LjA0OTAxNzk5MTA4MTg3NV0sIFstMi44MjE4NjU0NzAzMzY1NzA0LCA1My41ODIyMjQ4MjQ4ODI0OTVdLCBbLTMuNDIzMTU0MDIyODY3NDQxLCA1My42MTE2NTAxMzEzMTEyNDRdLCBbLTMuNzM3MTQ4MDY5NTI0MTU3LCA1NC4xMTAwMDI3NTM3OTgxMDZdLCBbLTMuNTkzMzI0MTg4MjMwNTEyNSwgNTQuMzQyNjMwOTkyNjcyMDE0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iZGVmZTNlNzRlMmY0NTg2YWY3ZGU2YmQ4ZjBmYmU5Zik7CiAgICAgICAgZ2VvX2pzb25fOTdhMDVlOGRlN2RiNDYxMjkxMzQ5ZDRkZTJkZGRmYTIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fOGUyZGNhNGU3MjBjNDAwMzg0MmYxNzRjMzcxN2FhMWQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNS4yMzk3MjAyNDY5NDE3NDYsIDUzLjcwMDc5OTM2NDQ3NzE3XSwgWy00LjYzMjIwNTc3NDMxMDEyMywgNTMuNjcwOTM2MzM5NzU4NzldLCBbLTQuMzE4NTYxMjQ2NTQ4ODY3LCA1My4xNjc3MzAwMzg5MTYwNl0sIFstNC42MTI4NjA3Mjc0ODI0OTIsIDUyLjY4OTUyNjM5MTg0NDE4XSwgWy01LjIyNDk1MjE5NzQyNzkxNiwgNTIuNzE3MTYzODcyMzc1MjldLCBbLTUuNTM4MTYzNjU2OTU2NjA4LCA1My4yMjUyNTI0MjUwMzIyNDVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2JkZWZlM2U3NGUyZjQ1ODZhZjdkZTZiZDhmMGZiZTlmKTsKICAgICAgICBnZW9fanNvbl84ZTJkY2E0ZTcyMGM0MDAzODQyZjE3NGMzNzE3YWExZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xNDBhZjk0MTQ5OGM0Y2FmYWE5MjNlYzIyMzU3ODFmNiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjU4NDg1MDgyNDEwNTMsIDUyLjU1MzM4MTQ1OTcwNjc2XSwgWy0wLjk4NjU5NTY1NDQ3MjUwNjIsIDUyLjUyNjU1NDAyNTMwMzEyXSwgWy0wLjY2NDE5NTI0MjIyODIyNzEsIDUyLjAyNDM2MjQzNTY0ODQ4XSwgWy0wLjkzOTg1OTY2MTQxOTU0MjIsIDUxLjU0NDMyODI0ODYwODE3NF0sIFstMS41NDIyNzA3MzkxODc5ODIsIDUxLjU2ODkwNDMzMDM1MDEzXSwgWy0xLjg2NDg2MzU3NDU3OTExMiwgNTIuMDc1Nzg2NDk3OTQ0NjldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2JkZWZlM2U3NGUyZjQ1ODZhZjdkZTZiZDhmMGZiZTlmKTsKICAgICAgICBnZW9fanNvbl8xNDBhZjk0MTQ5OGM0Y2FmYWE5MjNlYzIyMzU3ODFmNi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl84YTA1ZjdmNTgyNWU0YzFiYmRkNDM4ODVmYWUyZWIzNSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjk5NjgwMDIwMDQ1OTIxNjIsIDU3Ljc4MDk4NTIxMTU2MDI4XSwgWy00LjU3MDQwNTc1ODA5NzEwOSwgNTcuODQwODE2NzA0ODgyODc2XSwgWy00Ljc2NzcwMjE3NTQ2MjYzOSwgNTguMzk4NzQzNDA0NjMxNzY2XSwgWy00LjM4Njc3MDc5Mjg3ODc1NywgNTguODk1MjMzMzExOTkxMjVdLCBbLTMuODEyMjY5MjY0Njk2MTksIDU4LjgzMDE2Njk4ODE3OTc3XSwgWy0zLjYxOTU1Nzg2NjI0MzM2MDUsIDU4LjI3Mzg0NzIzNzQ4NjQzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iZGVmZTNlNzRlMmY0NTg2YWY3ZGU2YmQ4ZjBmYmU5Zik7CiAgICAgICAgZ2VvX2pzb25fOGEwNWY3ZjU4MjVlNGMxYmJkZDQzODg1ZmFlMmViMzUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fODJiNWFlNmJjM2FmNDMxMjk5MzhiZjAxMGJkZTlkMTUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi40NjkxMjA4OTQwODM4NDYzLCA1Mi4xMDE2OTAzMDI2MTIyMDVdLCBbLTEuODY0ODYzNTc0NTc5MTEyLCA1Mi4wNzU3ODY0OTc5NDQ2OV0sIFstMS41NDIyNzA3MzkxODc5ODIsIDUxLjU2ODkwNDMzMDM1MDEzXSwgWy0xLjgyMzgxOTI5NDU4NDIxMjIsIDUxLjA4MzIzNzQwNzIwNDM4Nl0sIFstMi40MzIyNTIyNzA4MTIxNjcsIDUxLjEwNjgzNDA0NzE3NDM4XSwgWy0yLjc1NDk2MzE4NDAwMzI4MiwgNTEuNjE4NDI1NDA4NzM0NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uXzgyYjVhZTZiYzNhZjQzMTI5OTM4YmYwMTBiZGU5ZDE1LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2EwM2FjOGM3ODBiODQ2YTdiOWJhMDY3MDQ4M2QwMDE5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTEuNjY2ODA3Mjg5Mzc1Nzg5NSwgNTQuNDc5OTI3NzY1MDYwNl0sIFstMS4wNzcyMDYyOTgyMzY4Mjk4LCA1NC40NDg4NDM3OTEyMTI2OTVdLCBbLTAuNzU5OTkzMTYyNDYwMjQxNSwgNTMuOTU4NjQ1NjY2NTczODFdLCBbLTEuMDMyMzgxODg2MTg4MjQ3LCA1My40OTQ4MDc1NzA5NTI0M10sIFstMS42MjYzNjM3MzA2NDk2MzM1LCA1My41MjM4MDQ1NzYxNzQzNTZdLCBbLTEuOTQzNTc0MTc3MTMxNjc5MiwgNTQuMDE4NzQ3NjI5NDQyMjk1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iZGVmZTNlNzRlMmY0NTg2YWY3ZGU2YmQ4ZjBmYmU5Zik7CiAgICAgICAgZ2VvX2pzb25fYTAzYWM4Yzc4MGI4NDZhN2I5YmEwNjcwNDgzZDAwMTkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYTdlZWEzNTVlODVkNGVkZWJiNjkyMzE1NjE3YWQ1NjYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy4zOTQ3OTA4ODIyOTM4NDI0LCA1Mi42MzQ2NjI5Mjg4NjYzMV0sIFstMi43ODkwNjYzNTI2NDYzNTIsIDUyLjYwNzQzNDkzNDA5NTg4NV0sIFstMi40NjkxMjA4OTQwODM4NDYzLCA1Mi4xMDE2OTAzMDI2MTIyMDVdLCBbLTIuNzU0OTYzMTg0MDAzMjgyLCA1MS42MTg0MjU0MDg3MzQ0XSwgWy0zLjM2NTAwNDMwOTc3Njg3NjUsIDUxLjY0MzM3MjIzNzI2NzQ2NF0sIFstMy42ODQ4ODY3Njc4NjkxMzE1LCA1Mi4xNTM4ODYxOTcwMTY0NTVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2JkZWZlM2U3NGUyZjQ1ODZhZjdkZTZiZDhmMGZiZTlmKTsKICAgICAgICBnZW9fanNvbl9hN2VlYTM1NWU4NWQ0ZWRlYmI2OTIzMTU2MTdhZDU2Ni5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl83NTAwNTViMTYzZDU0ZTQxYWJjMzVmM2RiY2ExYTNjYiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy02LjcwMjg1OTUzMzI0NzI1NSwgNTcuNTIwNTg0ODA1NTcxNjVdLCBbLTcuMjk2MTM4MDAyODA5NTQ2LCA1Ny41ODAzNjg1NDA4MTk5MjZdLCBbLTcuNTA2NDg1OTM2MDE5NDU4LCA1OC4xNDg4NDg0OTA5NDcxXSwgWy03LjExODc4OTE0ODY5MzQ4NCwgNTguNjU1OTIyODc5NTkzNjA0XSwgWy02LjUyNDM0NTUyODk0MjYxMywgNTguNTkwNjgyMzc2Mzk3NjE2XSwgWy02LjMxODcyNzUxNjAzNzk5NSwgNTguMDIzODI2NzIwMzM0OTc0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iZGVmZTNlNzRlMmY0NTg2YWY3ZGU2YmQ4ZjBmYmU5Zik7CiAgICAgICAgZ2VvX2pzb25fNzUwMDU1YjE2M2Q1NGU0MWFiYzM1ZjNkYmNhMWEzY2Iuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fOTlmYzk4ZTk5YTNhNGE3MDkxMTU2MzcwYjc0MTAyNDUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC4zMzkzOTMwNjIxNDMwNTcsIDU0LjE0MDcxOTI5NjUzMjg2NV0sIFstMy43MzcxNDgwNjk1MjQxNTcsIDU0LjExMDAwMjc1Mzc5ODEwNl0sIFstMy40MjMxNTQwMjI4Njc0NDEsIDUzLjYxMTY1MDEzMTMxMTI0NF0sIFstMy43MTE3NTA3ODAxOTE2MTI1LCA1My4xMzkxODIwNzU3ODE0M10sIFstNC4zMTg1NjEyNDY1NDg4NjcsIDUzLjE2NzczMDAzODkxNjA2XSwgWy00LjYzMjIwNTc3NDMxMDEyMywgNTMuNjcwOTM2MzM5NzU4NzldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2JkZWZlM2U3NGUyZjQ1ODZhZjdkZTZiZDhmMGZiZTlmKTsKICAgICAgICBnZW9fanNvbl85OWZjOThlOTlhM2E0YTcwOTExNTYzNzBiNzQxMDI0NS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl81Y2UyYWI3NTIwY2E0YWJkYjg5YjU5YTk4YTU1NjI3ZCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzAuMjU2NTE2OTM2MTA4NzkxNCwgNTEuNDk1NTQwNDg2ODQwODddLCBbMC44NTAyNjI4OTE3NzU1NzEsIDUxLjQ3MTMyNzAyNzcxNF0sIFsxLjE3NjU3NTM2NzYwNjc0MzYsIDUwLjk2NzAwNTUzNTEwNzMzXSwgWzAuOTA5NjcwMTkyMzY4NzAxMSwgNTAuNDgyMzQ3MTYwMTU4Mzc2XSwgWzAuMzEyMDcxODU3ODY3NTYwNTMsIDUwLjUwNDI1OTk2NTQ1MzAzXSwgWy0wLjAxNDc3NDk0MjAwODM3NjExMiwgNTEuMDEzMTUxNDcxMDY0OTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2JkZWZlM2U3NGUyZjQ1ODZhZjdkZTZiZDhmMGZiZTlmKTsKICAgICAgICBnZW9fanNvbl81Y2UyYWI3NTIwY2E0YWJkYjg5YjU5YTk4YTU1NjI3ZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl81MDljYjI3MjVkMTg0N2Q0YjU3MDgyY2RmMjkzMzczNCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy03LjY4MTMyMjcwODg1NjAzMywgNTcuMDczNzczMTc1MzMyOV0sIFstOC4yODAyOTEwMjcwMzE1MjQsIDU3LjEzMTY4ODcwNTU5OTZdLCBbLTguNDk1NDQ1MTkwMjM5NTA0LCA1Ny43MDE3MjIxODYxNDMwN10sIFstOC4xMDY3ODkyNDE1NjM5MTMsIDU4LjIxMjI5MDQxMDQwMzU3NV0sIFstNy41MDY0ODU5MzYwMTk0NTgsIDU4LjE0ODg0ODQ5MDk0NzFdLCBbLTcuMjk2MTM4MDAyODA5NTQ2LCA1Ny41ODAzNjg1NDA4MTk5MjZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2JkZWZlM2U3NGUyZjQ1ODZhZjdkZTZiZDhmMGZiZTlmKTsKICAgICAgICBnZW9fanNvbl81MDljYjI3MjVkMTg0N2Q0YjU3MDgyY2RmMjkzMzczNC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl81ODYwMmI1ZGQyMDE0NTVjODYyMzU1ZDhhZmE0ZTM0NiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzAuMTQ3NDg5MDQxNzIzMzk5NjMsIDUzLjQzNzIzNDcxNDEzMDcxXSwgWzAuNzMzMTY2MDkxMTQ4MjU3NSwgNTMuNDA4NjU2ODU3Mjg5OV0sIFsxLjA1NDk1OTAzMDU3NDY4NDUsIDUyLjkxNTc4MTI0MDE2MzkyXSwgWzAuNzkxNDEzNDczNjI1NTA2MSwgNTIuNDQ2ODU3NDAwMDI4MDRdLCBbMC4yMDE2NDQ0MTI1OTg2ODI0MywgNTIuNDczMjkyOTQ1MDk0NzJdLCBbLTAuMTIwNDg5MjQ0NjUwNTY2NTgsIDUyLjk3MDgxNDk0NzA0NzcxNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uXzU4NjAyYjVkZDIwMTQ1NWM4NjIzNTVkOGFmYTRlMzQ2LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2YzNTFiMDg4NTExOTRmMzBiNWYyYmNlYTE3NGI4ZDNmID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTEuNTcyMzg2MDYzMTg1NzM2MywgNTUuNDYxNTMxMjAzMzcyMzldLCBbLTEuMDI5NTYwMzEzMDA1MzAzLCA1NS40MTQ4MzgyMTQ3Mjk0M10sIFstMC45MTE1NzI4NzI0ODE2NTU3LCA1NS4wNjYwOTA1ODA5NDYyXSwgWy0wLjgwNjUyNjUxMjQ2NzMxMjQsIDU0LjkwNDQ3Mzc2MzIwNzMzXSwgWy0xLjA3NzIwNjI5ODIzNjgyOTgsIDU0LjQ0ODg0Mzc5MTIxMjY5NV0sIFstMS42NjY4MDcyODkzNzU3ODk1LCA1NC40Nzk5Mjc3NjUwNjA2XSwgWy0xLjg3NjY0NTc2NzIyNjc4MSwgNTQuODA2MDQxODgyNTc3NzZdLCBbLTEuOTM3Mjc1NjM2Mzk2NTQ1MywgNTQuOTgwOTYwNzIxMDM3NTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2JkZWZlM2U3NGUyZjQ1ODZhZjdkZTZiZDhmMGZiZTlmKTsKICAgICAgICBnZW9fanNvbl9mMzUxYjA4ODUxMTk0ZjMwYjVmMmJjZWExNzRiOGQzZi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9mODUyZTM4ODg5NDk0YjUyYmU0MTI2YTE2YzJmMjAwZCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjYyNjM2MzczMDY0OTYzMzUsIDUzLjUyMzgwNDU3NjE3NDM1Nl0sIFstMS4wMzIzODE4ODYxODgyNDcsIDUzLjQ5NDgwNzU3MDk1MjQzXSwgWy0wLjcxMjU0NDMwMTY1Nzk1OTIsIDUyLjk5ODUzMzQ2NTgzNDk3XSwgWy0wLjk4NjU5NTY1NDQ3MjUwNjIsIDUyLjUyNjU1NDAyNTMwMzEyXSwgWy0xLjU4NDg1MDgyNDEwNTMsIDUyLjU1MzM4MTQ1OTcwNjc2XSwgWy0xLjkwNDc4MTQyNDgwMzI1NDksIDUzLjA1NDM3ODcxOTE2MDU3NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uX2Y4NTJlMzg4ODk0OTRiNTJiZTQxMjZhMTZjMmYyMDBkLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2YyMmZkYjY2NGQwODQyNzViOGEyYWU3MTc4ZjdhOGE1ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQuNTM0ODg3MjA2MzIxODYyLCA1NC42NzI4OTk1OTI5NzgzXSwgWy01LjEwNDU3NjUzOTg3ODgxMywgNTQuNzE3MTg5MzA5OTAyNDRdLCBbLTUuMzA0MzIyMzY2NjU1NzgsIDU1LjI1NjgwOTIyMDIyMzI2XSwgWy00LjkyOTQ0NDU1MjA2MDkwMywgNTUuNzUxMTY2OTI3MTgyMTJdLCBbLTQuMzU4MjQ5MTk1NTU5MDUyLCA1NS43MDE3MzM3ODMzNTE4N10sIFstNC4xNjM0MDM0MjYyMzY0ODMsIDU1LjE2MzA5NjA1NDc2NTI3Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uX2YyMmZkYjY2NGQwODQyNzViOGEyYWU3MTc4ZjdhOGE1LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzRkNTc3MzczODMzZDQ3MzA4Njg1ODhkNmYzMjAwMWI4ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQuMjk2MTQ3ODI3MDE0ODE3LCA1Mi4xODAxODAyMDk4MDE4N10sIFstMy42ODQ4ODY3Njc4NjkxMzE1LCA1Mi4xNTM4ODYxOTcwMTY0NTVdLCBbLTMuMzY1MDA0MzA5Nzc2ODc2NSwgNTEuNjQzMzcyMjM3MjY3NDY0XSwgWy0zLjY1NjUyMzQ1MjkzOTI5MywgNTEuMTU0Mzg0NjAwNjY5MzJdLCBbLTQuMjcyMTA5NDY5NzQ3OTI3LCA1MS4xNzgzNDAzMDUzNTc4OF0sIFstNC41OTE4NTE3ODI2NzU2ODYsIDUxLjY5MzY0MzEyMDU4NTgyNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uXzRkNTc3MzczODMzZDQ3MzA4Njg1ODhkNmYzMjAwMWI4LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzRlMDYzMTc1MDc0OTQzOTE4ZDdkZTE3MjYyNWQ3NWRhID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQuMjcyMTA5NDY5NzQ3OTI3LCA1MS4xNzgzNDAzMDUzNTc4OF0sIFstMy42NTY1MjM0NTI5MzkyOTMsIDUxLjE1NDM4NDYwMDY2OTMyXSwgWy0zLjMzMzc2ODQ0MTIzMDgwNCwgNTAuNjM4MDY3OTcxMzc1MzFdLCBbLTMuNjI2NjMxMDcyNzI2MTQzNSwgNTAuMTQwOTg5MTU1NDQ0NDFdLCBbLTQuMjQ2NDA1NTIwOTIwMzIzLCA1MC4xNjI1MjM2MzM1MjYwMl0sIFstNC41NjkxMzE0MTkxNzc3MzUsIDUwLjY4MzU3ODg4NzU3NjQ5NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uXzRlMDYzMTc1MDc0OTQzOTE4ZDdkZTE3MjYyNWQ3NWRhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzYwNjc5YzlkYWI2YjQzNTg5YTJkYzY5Yjc1ZjIwNWI2ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuNTk5ODI5OTY4NzUyMTMxLCA1NS4xMTY5MTAyMjYzNjExNF0sIFstNC4xNjM0MDM0MjYyMzY0ODMsIDU1LjE2MzA5NjA1NDc2NTI3Nl0sIFstNC4zNTgyNDkxOTU1NTkwNTIsIDU1LjcwMTczMzc4MzM1MTg3XSwgWy0zLjk4NDY3ODM2NzQ0MTY0NzUsIDU2LjE5MzEzODMyNzcxOTQ3NF0sIFstMy40MTk3NjY2OTQ3MDUsIDU2LjE0MTg2MTc2MzIzMTQ5Nl0sIFstMy4yMjk3MjkwNDYxMjYwNjczLCA1NS42MDQyNzk4MTI4MjI5OV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uXzYwNjc5YzlkYWI2YjQzNTg5YTJkYzY5Yjc1ZjIwNWI2LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2RhNzhhZGFhMjE1MjRmZTc5MzZlY2JmNzkzNjFhNjQ4ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTEuNTQyMjcwNzM5MTg3OTgyLCA1MS41Njg5MDQzMzAzNTAxM10sIFstMC45Mzk4NTk2NjE0MTk1NDIyLCA1MS41NDQzMjgyNDg2MDgxNzRdLCBbLTAuNjE0OTY0NTY2NDQwMDI0MywgNTEuMDM2Mzk2OTg4NjU1ODJdLCBbLTAuODkyMTg5MjM2Mjk5NDg0OCwgNTAuNTQ4NDE1Mjg3MTczNTFdLCBbLTEuNDk4NjI4NzkwMDk4MTA3NSwgNTAuNTcwNjU5NDQ4MTc4OTldLCBbLTEuODIzODE5Mjk0NTg0MjEyMiwgNTEuMDgzMjM3NDA3MjA0Mzg2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iZGVmZTNlNzRlMmY0NTg2YWY3ZGU2YmQ4ZjBmYmU5Zik7CiAgICAgICAgZ2VvX2pzb25fZGE3OGFkYWEyMTUyNGZlNzkzNmVjYmY3OTM2MWE2NDguc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fY2MwMWUzYjlhNDZlNDIzMWI2OTdlMWU0MTJhODljYzkgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMS41Njc4MjE3MTg5MjQ2MzUzLCA1Ny4wMDc4MzM3ODYzNjA5MDVdLCBbLTIuMTE5NDg0NTAwOTUwMzY3LCA1Ny4wNjI2NTEzMjI4NjEyNV0sIFstMi4zMDQzMzA0NzMxOTg1NjksIDU3LjYwNDg5MTUzMjIxNTkyXSwgWy0xLjkzMjk3MjUyMTkwMTE0NDQsIDU4LjA5MDkyNzA3MjE4NTQzXSwgWy0xLjM4MDQ3NzM0OTE3MTA4MTYsIDU4LjAzMTEwMDcwNzU5MzkyXSwgWy0xLjIwMDEzNTU5MjA1NTQ2OTUsIDU3LjQ5MDI1MTE0Njk3NzA0NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uX2NjMDFlM2I5YTQ2ZTQyMzFiNjk3ZTFlNDEyYTg5Y2M5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzU5MzI2ZmNlNDNjYzQ4YjE5NTIxYTQwNzdiNDVlMzA0ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuMjM3Mjk0MzgwNjY5MzM0LCA1Ny4xNzM4NTY4NjQ1OTc0NzVdLCBbLTMuODAzMzQ5MTYzNjc1ODY0NywgNTcuMjMwMjU5NzI1NzQxNjc1XSwgWy0zLjk5NjgwMDIwMDQ1OTIxNjIsIDU3Ljc4MDk4NTIxMTU2MDI4XSwgWy0zLjYxOTU1Nzg2NjI0MzM2MDUsIDU4LjI3Mzg0NzIzNzQ4NjQzXSwgWy0zLjA1MjU1ODg4NjMwODU4NiwgNTguMjEyMjkyMjY3MTUyNDg1XSwgWy0yLjg2MzcwOTUzMjM2MDgzNzcsIDU3LjY2MzAzMDU5MzkzODRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2JkZWZlM2U3NGUyZjQ1ODZhZjdkZTZiZDhmMGZiZTlmKTsKICAgICAgICBnZW9fanNvbl81OTMyNmZjZTQzY2M0OGIxOTUyMWE0MDc3YjQ1ZTMwNC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9iYjUxNzZkMDRiYzM0ZWZkOWJhZDkxZDI4Y2QzODhhOSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01LjIwODM5OTIzODQ1NDM4OSwgNTEuNzE4OTY5MDYyMDAxNjddLCBbLTQuNTkxODUxNzgyNjc1Njg2LCA1MS42OTM2NDMxMjA1ODU4MjZdLCBbLTQuMjcyMTA5NDY5NzQ3OTI3LCA1MS4xNzgzNDAzMDUzNTc4OF0sIFstNC41NjkxMzE0MTkxNzc3MzUsIDUwLjY4MzU3ODg4NzU3NjQ5NV0sIFstNS4xOTAwMDI3ODM4NTI3NjYsIDUwLjcwNjUwODUyMTA1MTI3Nl0sIFstNS41MDk1Mjg5NTUxMzgyNTI1LCA1MS4yMjY2MTcxMTU1NzE1OF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uX2JiNTE3NmQwNGJjMzRlZmQ5YmFkOTFkMjhjZDM4OGE5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2YzMjFmNjNjMTMzYjQ2NDBhOTJjMGQ4MTBkOGI0YWM5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTcuMjE2Nzk5Mzc3NDk1MDE3LCA1NC4zNTI0NzQ5OTI5ODcwNF0sIFstNy44MDUyNTE5MzY3NDc2ODgsIDU0LjM5NjA3ODc0MjgyNjk0NF0sIFstOC4wMTkxMzA4NzYzMzMyMDQsIDU0Ljk0NTIwODI0NzU5MzNdLCBbLTcuNjM5NDc3MDc0MTg4MTM5LCA1NS40NDk3ODUxNDQ1NTMwOV0sIFstNy4wNDkxOTk0OTc2NzIxMTc1LCA1NS40MDA4MzA2MDE4MjU0OV0sIFstNi44NDAzNjgwNjQzNTA5MjM1LCA1NC44NTI2NjEwOTMwODA4N11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uX2YzMjFmNjNjMTMzYjQ2NDBhOTJjMGQ4MTBkOGI0YWM5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzM4ZjZlMzExODI1ZTQ1MTM4ZGViYTlkYWZiZWU1YTQ4ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuMzY1MDA0MzA5Nzc2ODc2NSwgNTEuNjQzMzcyMjM3MjY3NDY0XSwgWy0yLjc1NDk2MzE4NDAwMzI4MiwgNTEuNjE4NDI1NDA4NzM0NF0sIFstMi40MzIyNTIyNzA4MTIxNjcsIDUxLjEwNjgzNDA0NzE3NDM4XSwgWy0yLjcxOTU0MDY3NDk0NjIyNywgNTAuNjE1NDg0OTQzMjQ5NzldLCBbLTMuMzMzNzY4NDQxMjMwODA0LCA1MC42MzgwNjc5NzEzNzUzMV0sIFstMy42NTY1MjM0NTI5MzkyOTMsIDUxLjE1NDM4NDYwMDY2OTMyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iZGVmZTNlNzRlMmY0NTg2YWY3ZGU2YmQ4ZjBmYmU5Zik7CiAgICAgICAgZ2VvX2pzb25fMzhmNmUzMTE4MjVlNDUxMzhkZWJhOWRhZmJlZTVhNDguc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNGJmYzliZmIxMTRhNGVmOGI5NDRkMzkyMjkwMjgyM2EgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNi4xMzEwOTI0OTc2NDQzMTc1LCA1MS4yNTA5NDAwNjYzNjE1NV0sIFstNS41MDk1Mjg5NTUxMzgyNTI1LCA1MS4yMjY2MTcxMTU1NzE1OF0sIFstNS4xOTAwMDI3ODM4NTI3NjYsIDUwLjcwNjUwODUyMTA1MTI3Nl0sIFstNS40OTIzMzE3MTk0NTgxMjgsIDUwLjIwNTkyNDIzNjI0NTgzNV0sIFstNi4xMTgyMDgzNTAzODI1NTYsIDUwLjIyNzc5MjA1NTIxNzgzXSwgWy02LjQzNzQ0Mzk4Mzg0NzEwMSwgNTAuNzUyNzIwNTY4MjY5MDM0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iZGVmZTNlNzRlMmY0NTg2YWY3ZGU2YmQ4ZjBmYmU5Zik7CiAgICAgICAgZ2VvX2pzb25fNGJmYzliZmIxMTRhNGVmOGI5NDRkMzkyMjkwMjgyM2Euc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fY2Y4YjY4YmJlZjc0NDVmODhiNWMzMWJmY2ZlZDY1MGMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNS45MTAwNTA3NzYzNzE4ODEsIDU2LjkwMzQxMzAwMDk4Nzk1XSwgWy02LjQ5NjEyMDg1MTg2MjksIDU2Ljk1OTY0MzUwMTcwMzldLCBbLTYuNzAyODU5NTMzMjQ3MjU1LCA1Ny41MjA1ODQ4MDU1NzE2NV0sIFstNi4zMTg3Mjc1MTYwMzc5OTUsIDU4LjAyMzgyNjcyMDMzNDk3NF0sIFstNS43MzE0MzY3NjIwNzA4MjU1LCA1Ny45NjIyMjkwMzIwMzc2MzRdLCBbLTUuNTI5NDYyNjUzNTA3Mzk2LCA1Ny40MDI3NjA3NTM4MTAyN11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uX2NmOGI2OGJiZWY3NDQ1Zjg4YjVjMzFiZmNmZWQ2NTBjLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzhjZTM2MGE1ZmQ3ZDRkMGQ4NTUwOTdhNDc0NWYzZDAxID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNDMyMjUyMjcwODEyMTY3LCA1MS4xMDY4MzQwNDcxNzQzOF0sIFstMS44MjM4MTkyOTQ1ODQyMTIyLCA1MS4wODMyMzc0MDcyMDQzODZdLCBbLTEuNDk4NjI4NzkwMDk4MTA3NSwgNTAuNTcwNjU5NDQ4MTc4OTldLCBbLTEuNzgxNjUwNDM1Njk2NTUxNywgNTAuMDc3MDM5MDI1NTk2NzFdLCBbLTIuMzk0MTI1MTM3MjEwODEwNSwgNTAuMDk4MjQ3NjczNDc2OTVdLCBbLTIuNzE5NTQwNjc0OTQ2MjI3LCA1MC42MTU0ODQ5NDMyNDk3OV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmRlZmUzZTc0ZTJmNDU4NmFmN2RlNmJkOGYwZmJlOWYpOwogICAgICAgIGdlb19qc29uXzhjZTM2MGE1ZmQ3ZDRkMGQ4NTUwOTdhNDc0NWYzZDAxLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2NmZDEyMjhlYzJjNjQ1MDA5YWExYWU3ZGZhNTczYzJiID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTEuOTM3Mjc1NjM2Mzk2NTQ1MywgNTQuOTgwOTYwNzIxMDM3NTZdLCBbLTIuNDg2NzE5NzkzNzE3Mjg3LCA1NS4wMjU4NDg2Njc1ODc2OF0sIFstMi42NzI1MTAxNjUzMzY1ODU3LCA1NS41NTYyNDU3MzgwOTgzNTVdLCBbLTIuMzA0MTE3ODg2OTY2OTEzNCwgNTYuMDQwNzYzNzM2Njc5NTQ0XSwgWy0xLjc1MzQ3MzE4NDU2NzY0MzUsIDU1Ljk5MDkyODcyOTc3MzI5XSwgWy0xLjU3MjM4NjA2MzE4NTczNjMsIDU1LjQ2MTUzMTIwMzM3MjM5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iZGVmZTNlNzRlMmY0NTg2YWY3ZGU2YmQ4ZjBmYmU5Zik7CiAgICAgICAgZ2VvX2pzb25fY2ZkMTIyOGVjMmM2NDUwMDlhYTFhZTdkZmE1NzNjMmIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCjwvc2NyaXB0Pg==\" 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 0x7ffa691ab7f0>"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m = folium.Map(location=[55.365, -3.45], zoom_start=5, )\n",
"\n",
"folium.GeoJson(\n",
" gb_geojson,\n",
" name='uk_boundary'\n",
").add_to(m)\n",
"\n",
"for boundary in hexagons_boundary:\n",
" folium.GeoJson(\n",
" {\"type\":\"Polygon\",\"coordinates\": [boundary]}\n",
" ).add_to(m)\n",
"\n",
"m"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [],
"source": [
"hexagons = list(h3.polyfill(gb_geojson, 4))\n",
"hexagons_boundary = [h3.h3_to_geo_boundary(h3_ix) for h3_ix in hexagons]"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVM9ZmFsc2U7IExfTk9fVE9VQ0g9ZmFsc2U7IExfRElTQUJMRV8zRD1mYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgPHN0eWxlPiNtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMTAwLjAlOwogICAgICAgIGhlaWdodDogMTAwLjAlOwogICAgICAgIGxlZnQ6IDAuMCU7CiAgICAgICAgdG9wOiAwLjAlOwogICAgICAgIH0KICAgIDwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxIiA+PC9kaXY+CjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKICAgIAogICAgICAgIHZhciBib3VuZHMgPSBudWxsOwogICAgCgogICAgdmFyIG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSA9IEwubWFwKAogICAgICAgICdtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEnLCB7CiAgICAgICAgY2VudGVyOiBbNTUuMzY1LCAtMy40NV0sCiAgICAgICAgem9vbTogNSwKICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICBsYXllcnM6IFtdLAogICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcsCiAgICAgICAgem9vbUNvbnRyb2w6IHRydWUsCiAgICAgICAgfSk7CgogICAgCiAgICAKICAgIHZhciB0aWxlX2xheWVyXzAyYTA4OWZlMzRmNDQ2ZTFiYjA5OTQ3NDUzY2ZhMTdkID0gTC50aWxlTGF5ZXIoCiAgICAgICAgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKICAgICAgICB7CiAgICAgICAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAgICAgICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgICAgICAgIm1heE5hdGl2ZVpvb20iOiAxOCwKICAgICAgICAibWF4Wm9vbSI6IDE4LAogICAgICAgICJtaW5ab29tIjogMCwKICAgICAgICAibm9XcmFwIjogZmFsc2UsCiAgICAgICAgInN1YmRvbWFpbnMiOiAiYWJjIgp9KS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2ZjY2NlYWZiNzhkNTQxZDNhOTExMTA5ZDdjMzM1ZmY1ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTguMzA1NjY0MDYyNSwgNTguMTcwNzAyNDgzNDg2MDldLCBbLTcuODIyMjY1NjI1MDAwMDAxLCA1Ni4zMTY1MzY3MjIxMTMwMV0sIFstNy4xNjMwODU5Mzc0OTk5OTksIDU2LjAyMjk0ODA3OTYyNzQ1NF0sIFstNi42Nzk2ODc1LCA1NS41Mjg2MzA1MjI1NzE5MV0sIFstOC4zMDU2NjQwNjI1LCA1NS4zMDQxMzc3Mzc0MDEzOV0sIFstOC40ODE0NDUzMTI1LCA1NC4zMTY1MjMyNDAyNTgyNTZdLCBbLTcuMTYzMDg1OTM3NDk5OTk5LCA1My42OTY3MDY0NzUzMDMyM10sIFstNS44ODg2NzE4NzUsIDUzLjU2NjQxNDE1Mjc1MDQzXSwgWy01LjI3MzQzNzUsIDUzLjcyMjcxNjY3NDkxODQ4XSwgWy00LjkyMTg3NSwgNTMuMzA0NjIxMDc1MTAyNzFdLCBbLTUuMTQxNjAxNTYyNSwgNTIuNjQzMDYzNDM2NjU4OTJdLCBbLTUuNjI1LCA1MS43MjcwMjgxNTcwNDc3NF0sIFstNi4wNjQ0NTMxMjUsIDUwLjgxOTgxODI2MjE1NjU0NV0sIFstNS44NDQ3MjY1NjI1LCA0OS43MjQ0NzkxODg3MTI5ODRdLCBbLTMuNjQ3NDYwOTM3NDk5OTk5NiwgNDkuNjk2MDYxODE5MTE1NjZdLCBbLTMuMTY0MDYyNSwgNTAuMzczNDk2MTQ0MzAzNV0sIFstMC45NjY3OTY4NzQ5OTk5OTk5LCA1MC40Mjk1MTc5NDcxMjI4N10sIFswLjc5MTAxNTYyNSwgNTAuNjI1MDczMDYzNDE0MzVdLCBbMS42Njk5MjE4NzUsIDUxLjA0MTM5Mzg5ODEyNjM3XSwgWzEuOTc3NTM5MDYyNSwgNTEuNTM2MDg1NjAxNzg0NzU1XSwgWzEuOTc3NTM5MDYyNSwgNTIuNDAyNDE4ODczOTczMzJdLCBbMS43NTc4MTI1LCA1My4wNjc2MjY2NDIzODczNzRdLCBbMC42NTkxNzk2ODc1LCA1My44MDA2NTA4MjYzMzAyM10sIFstMC4zOTU1MDc4MTI1LCA1NC42MjI5NzgxMzI2OTAzM10sIFstMS4xNDI1NzgxMjUsIDU1LjUwMzc0OTg1OTI3NTE0XSwgWy0yLjE1MzMyMDMxMjUsIDU2LjI2Nzc2MTA4NzU3NTgyXSwgWy0xLjk3NzUzOTA2MjUsIDU2Ljg0ODk3MTk4MDI2OTc1XSwgWy0xLjQ1MDE5NTMxMjUsIDU3LjQ2ODU4OTE5MjA4OTM1NF0sIFstMS41ODIwMzEyNSwgNTcuOTg0ODA4MDE5MjM5ODVdLCBbLTMuMTY0MDYyNSwgNTguMDA4MDk3NzkzMDY4ODhdLCBbLTIuNjM2NzE4NzUsIDU4LjU2MjUyMjcyODUzNzM0XSwgWy0xLjYyNTk3NjU2MjUsIDU5LjI0MzQxNDc1ODM5OTc3XSwgWy0wLjgzNDk2MDkzNzUsIDU5LjkxMDk3NTk3MDc5Njc5XSwgWy0wLjQ4MzM5ODQzNzQ5OTk5OTk0LCA2MC43ODA2MTg4MDM0NTg5MzVdLCBbLTAuNjE1MjM0Mzc1LCA2MS4wNzk1NDQyMzQ1NTczMDRdLCBbLTEuOTMzNTkzNzQ5OTk5OTk5OCwgNjAuNTY1Mzc4NTA0NjQxODFdLCBbLTIuMTUzMzIwMzEyNSwgNTkuOTEwOTc1OTcwNzk2NzldLCBbLTIuMjg1MTU2MjUsIDU5LjU3ODg1MTA0NjYzMTg2XSwgWy0zLjU1OTU3MDMxMjUsIDU5LjQ4OTcyNjAzNTUzNzA3NV0sIFstNC4wODY5MTQwNjI1LCA1OC45NzI2NjcxNTQ1MDE1M10sIFstNS43NTY4MzU5Mzc0OTk5OTksIDU4LjYzMTIxNjY0MzQyNDc4XSwgWy03LjQyNjc1NzgxMjUsIDU4LjQ0NzczMjgwMzg5MDg0XSwgWy04LjMwNTY2NDA2MjUsIDU4LjE3MDcwMjQ4MzQ4NjA5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZmNjY2VhZmI3OGQ1NDFkM2E5MTExMDlkN2MzMzVmZjUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fOWQ4ZmRkNGEyZDgwNDczNmI2ZTk5NjEyNzVkNDk2ZDUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMS4zOTcxNzYzODE4NzA2OTQ4LCA1MS4yMDg4NTI4NjY2NTE2XSwgWy0xLjE4NDY3Mzg1NTI3MjU1MDQsIDUxLjI3MTQwMDgxNTI3NjQ4XSwgWy0xLjAwNTY4MTY1MTQ1MDIzODcsIDUxLjEyMjUyODYxNjc0OTI2NF0sIFstMS4wMzg3MzM4MTc0MjA1NjY3LCA1MC45MTA1ODc0MTk2MzM1MV0sIFstMS4yNTE0NTI4NjcyNTc2NjUsIDUwLjg0NzQyMjUyNzI0MTk1XSwgWy0xLjQzMDkwNDQxNzI3MDM0MSwgNTAuOTk2ODE1NDQyMzA4MzhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl85ZDhmZGQ0YTJkODA0NzM2YjZlOTk2MTI3NWQ0OTZkNS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lNTQ4NDRhMzg3Mzc0NDdkOTFhN2VhYjYzYWQwZTczYSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjkzNjE1Mzg3NzIwNDg2NTYsIDUwLjU1MTMxMjY4MjkxMzc5Nl0sIFstMi43MTk1NDA2NzQ5NDYyMjcsIDUwLjYxNTQ4NDk0MzI0OTc5XSwgWy0yLjUzOTE2MDYyMjQwNTcyOSwgNTAuNDY0NzU2MDE2MzcyMjA2XSwgWy0yLjU3NDk1Mzk1NjI4OTIyMjcsIDUwLjI0OTMzNzczNzgxMTQxNl0sIFstMi43OTE3OTk5MDY3Mjg3ODczLCA1MC4xODQ1NDA0MjA5OTA0OF0sIFstMi45NzI2MjA4OTM5MTQ2ODcsIDUwLjMzNTc4NjAxOTE2Mjg4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZTU0ODQ0YTM4NzM3NDQ3ZDkxYTdlYWI2M2FkMGU3M2Euc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYzZhOTFmNThiNDM2NGNkNWFiODhkZjAwMGZhYzBmMDkgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC4zNTE5NTczNjQ4NTM2NjcsIDU3Ljg5NDM2NjYxMTczMTAzXSwgWy00LjU3MDQwNTc1ODA5NzEwOSwgNTcuODQwODE2NzA0ODgyODc2XSwgWy00LjcwOTExNTE2NDE5MDY2MSwgNTguMDA4NTAwMTIzNzcyNzU1XSwgWy00LjYyODcxODg0NDcyNTk4OCwgNTguMjMwMDE3MzkxMDIwMzc1XSwgWy00LjQwOTczODY1MzIzMTg0MiwgNTguMjgzMDg2NzI2NzEzMTddLCBbLTQuMjcxNjg1ODg1MjY4NzY2LCA1OC4xMTUxMjE4NTgxNTMzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fYzZhOTFmNThiNDM2NGNkNWFiODhkZjAwMGZhYzBmMDkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNDc3MDBkZjkzNTE0NGM5Njg3NDc0Y2RkNWZkNjU3YTQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi4xNDU5Nzg1NTc0OTAwOTY3LCA1NC45MjQ5NTc4NjM3NjcxNV0sIFstMS45MzcyNzU2MzYzOTY1NDUzLCA1NC45ODA5NjA3MjEwMzc1Nl0sIFstMS44MDczMjA0NzAwMzM0ODQyLCA1NC44MjQ3MzAzNzMyMzE5OF0sIFstMS44NDEyMzUyOTI4MTQ2OTk4LCA1NC42MjQzMjkwNTY3NDY0NTRdLCBbLTIuMDQ5ODAyNDQwOTgyMTkwNCwgNTQuNTY3ODI1MzExNjk2OTFdLCBbLTIuMjI0MTYxODE2MDE3MTc2LCA1NC43MTIzMzUyNjQ1OTg3Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzQ3NzAwZGY5MzUxNDRjOTY4NzQ3NGNkZDVmZDY1N2E0LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2FlNWFkODcwZjAyOTQ2YTY4MjY1Nzg3MWFjZDYyOTVjID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMS4wMjc5NTA4NTI1MDU4MzA3LCA1MS4zMjQwNTY2MzEyMTA1NDZdLCBbMS4yMzQ3Mjc4MjY0NzIyNzQzLCA1MS4zODU3Mjg4MjAxNzIyNzVdLCBbMS40MTIyNzI0NTIyOTU5MDc2LCA1MS4yMzg1OTcxNjg3MTQ5Nl0sIFsxLjM4MzUyNTA3ODM1NzM3NjMsIDUxLjAyOTI4MTUzODE5MDM1XSwgWzEuMTc2NTc1MzY3NjA2NzQzNiwgNTAuOTY3MDA1NTM1MTA3MzNdLCBbMC45OTg1NDQ0NTIyMzA0NDY0LCA1MS4xMTQ2NDg2NjcxMDQ1M11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2FlNWFkODcwZjAyOTQ2YTY4MjY1Nzg3MWFjZDYyOTVjLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzEzOWRlODYxNWE0NTQ4M2Y5OGIyZTI4MzJkMzA2YjhiID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMS40OTc4MzU0MDQ5NTc4OTY4LCA1MS44NjI0NTQ2MzM0ODI4NzZdLCBbMS43MDI2MzU5ODcyMDEzMDM3LCA1MS45MjMwMjI1MzcwMDA2NV0sIFsxLjg3OTIwMzI1MzgxMTQwMTQsIDUxLjc3NjkyMjg1NTc3OTE5XSwgWzEuODUxNDU4MDYyNDY0MDQ5OCwgNTEuNTY5NzM3NTg3MDQ0NjhdLCBbMS42NDY0ODQ4MjM2NDM0MDA0LCA1MS41MDg1Njg3NTE3MzM3M10sIFsxLjQ2OTQyODEwNzM4MTMxOTMsIDUxLjY1NTE4NTg2OTYyMzM5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMTM5ZGU4NjE1YTQ1NDgzZjk4YjJlMjgzMmQzMDZiOGIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNTM5YjY0MzNhMWUyNGM4OWE1OGUzNDE1Y2I3MzY5NWQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi40MzMzNzc2NjAyMjc4NTYsIDU0LjY1NTg5OTI2MjY2MDY1XSwgWy0yLjIyNDE2MTgxNjAxNzE3NiwgNTQuNzEyMzM1MjY0NTk4NzZdLCBbLTIuMDQ5ODAyNDQwOTgyMTkwNCwgNTQuNTY3ODI1MzExNjk2OTFdLCBbLTIuMDg0MjI4NDI1NDE1OTQ4LCA1NC4zNjYzMDcyMTY1ODYwOF0sIFstMi4yOTM3MzkxMjc5MjkzNjk3LCA1NC4zMDkyNTYzNzgzNTk2MV0sIFstMi40Njg1Mjk5ODQzNjA3NDMzLCA1NC40NTQzMzg1MTk1ODkxODZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl81MzliNjQzM2ExZTI0Yzg5YTU4ZTM0MTVjYjczNjk1ZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8zNjQ4NDU0NDQ5MDY0NTMzYjUwZTkxZmY5YzQyMWQyNiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0wLjE0MTMzMjUzNzY0MTMxMzM3LCA1NC4xMzAwOTkyNDAwNTYwOF0sIFswLjA2Mzc1MzYyMDkwMjUwMTEzLCA1NC4xODY5MzIwMDk2OTkyMV0sIFswLjIzODIzNjY2Mjg0Njg3NTU5LCA1NC4wNDMwODE5MDQyMjA2N10sIFswLjIwODA5NjU4NDM5MDc4NTMyLCA1My44NDE4NDQyNzkwMDMxOV0sIFswLjAwMjc2OTc4OTYxMzU0NDUzMTUsIDUzLjc4NDQwNzEzNDU4MDc0XSwgWy0wLjE3MjE3NzQ1ODM0MjYzOTYyLCA1My45Mjg4MTE5ODMyOTk3NzRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8zNjQ4NDU0NDQ5MDY0NTMzYjUwZTkxZmY5YzQyMWQyNi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9kMmYwMzkwNjQ5MGU0ZDNjOWYxNjNmYWU2Mzc5NjY1ZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0wLjkwNzA5MTc1MzU5ODI4MTgsIDUxLjc1NDE4MjEzOTg0NzAzXSwgWy0wLjY5NjQ3NTAzNTc2NDU1MDYsIDUxLjgxNTYwMDQzOTA4NTk1NV0sIFstMC41MTg0MDgxMTAxODA1MjU5LCA1MS42Njc3NzkxNjE5MTI2MDVdLCBbLTAuNTUwNDk1MzkzODYyMDY0OSwgNTEuNDU4MDEyMzI3ODcwNjVdLCBbLTAuNzYxMzI5MDI1OTQ2NjY3LCA1MS4zOTU5Nzk5ODE4MTQ4Ml0sIFstMC45Mzk4NTk2NjE0MTk1NDIyLCA1MS41NDQzMjgyNDg2MDgxNzRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9kMmYwMzkwNjQ5MGU0ZDNjOWYxNjNmYWU2Mzc5NjY1Zi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xYjAyOTdlMTFmOGY0ZWY2YjEzODk5MjM2NTkwMTk4NSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01LjczMTQzNjc2MjA3MDgyNTUsIDU3Ljk2MjIyOTAzMjAzNzYzNF0sIFstNS45NTM1MDY1NzEwNjEwNDgsIDU3LjkwODE3ODQzNTc3NDU4XSwgWy02LjA5NTY0MDU0ODc1MDM0MjQsIDU4LjA3Nzg4MDc4NjE5OTg0XSwgWy02LjAxNTA0ODIzOTMxMDQxNSwgNTguMzAxOTIxODIxODQ5MTZdLCBbLTUuNzkyNDM0NTk0NTEyMTIsIDU4LjM1NTQ3OTU4NjQ1NjIzXSwgWy01LjY1MDk1NjQyNTQ2Mzk4OCwgNTguMTg1NDkxNzIwMjMwMjFdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8xYjAyOTdlMTFmOGY0ZWY2YjEzODk5MjM2NTkwMTk4NS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl84M2IyMjdiYzFhMjg0ZTIxYWQ0NjdmNWIyNDVmYzNhMyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY4MzUyNTUzMzE4MzI4MSwgNTAuODI5OTEyMjkwMzA3OTRdLCBbLTIuNDY3ODA4NDY0OTM5NzUzLCA1MC44OTM1MDY3NzM4MTgyMV0sIFstMi4yODc4NzE5ODAxOTgzMTYsIDUwLjc0MzI5ODE2MzI0MTAzXSwgWy0yLjMyMzIxMDEyMTE2MTA5MDUsIDUwLjUyODk3NDM2ODAzNDMwNV0sIFstMi41MzkxNjA2MjI0MDU3MjksIDUwLjQ2NDc1NjAxNjM3MjIwNl0sIFstMi43MTk1NDA2NzQ5NDYyMjcsIDUwLjYxNTQ4NDk0MzI0OTc5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fODNiMjI3YmMxYTI4NGUyMWFkNDY3ZjViMjQ1ZmMzYTMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNTIwMTJjMTZlZGI3NDI3NjlkZTAwM2RhMmE2NWNlMGYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1swLjY0MjY4NzY1MDI0MjQ3NzYsIDUxLjQwOTcwNDMyNDQwNDk3XSwgWzAuODUwMjYyODkxNzc1NTcxLCA1MS40NzEzMjcwMjc3MTRdLCBbMS4wMjc5NTA4NTI1MDU4MzA3LCA1MS4zMjQwNTY2MzEyMTA1NDZdLCBbMC45OTg1NDQ0NTIyMzA0NDY0LCA1MS4xMTQ2NDg2NjcxMDQ1M10sIFswLjc5MDc4NzcyNzEyNTYyNjEsIDUxLjA1MjQyMDEwNDk4MDI4NV0sIFswLjYxMjYxNzU5MTYxMDc3NzMsIDUxLjIwMDIwNTA2NDM1MjY5NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzUyMDEyYzE2ZWRiNzQyNzY5ZGUwMDNkYTJhNjVjZTBmLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzIwMmMzOTNjZGQ3NzQ4MzM4MDgzMDAwNjZhZGI2ZTM4ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuMDM0MTY1NDYzMDIxMTMwNSwgNTMuNTIzNTExNTQ5NTMwNjddLCBbLTIuODIxODY1NDcwMzM2NTcwNCwgNTMuNTgyMjI0ODI0ODgyNDk1XSwgWy0yLjY0NTcwMTQ4MDQwNzU0OCwgNTMuNDM1NTU2NzM2MDcyNjU1XSwgWy0yLjY4MTQxMDM5NjA0OTM0NywgNTMuMjI5NjEzMzQ0Mjg1MDVdLCBbLTIuODkzOTk4NjU0ODQ0NzY0NSwgNTMuMTcwMjc3Njg2MTMyMDRdLCBbLTMuMDcwNTkwNzM1NDI4NTgsIDUzLjMxNzUwNzcyOTE3NjA3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMjAyYzM5M2NkZDc3NDgzMzgwODMwMDA2NmFkYjZlMzguc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNDhiNTRhYWRiMWIwNDJlOThiOTY0ODcyOWUyZWZhMzggPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi44ODkwNjQ3NDk2MzcxMSwgNTcuMDY0MTgwNzE3ODI2OTNdLCBbLTMuMTAyNjg2NDY4NjExNDg3NywgNTcuMDEwMjEyNDc4MDQ1MDU1XSwgWy0zLjIzNzI5NDM4MDY2OTMzNCwgNTcuMTczODU2ODY0NTk3NDc1XSwgWy0zLjE1NzYyNjkyNTA5ODU0OTQsIDU3LjM5MTc3MTA4OTYwNDddLCBbLTIuOTQzNDcyNTIyOTcyMTI3NywgNTcuNDQ1Mjg4Njg3OTc0ODldLCBbLTIuODA5NTE3NjMwODY5NzYxNCwgNTcuMjgxMzQ1MTI1MDA2NjhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl80OGI1NGFhZGIxYjA0MmU5OGI5NjQ4NzI5ZTJlZmEzOC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wMTUwMGVmZWY2YWE0M2JhYTA1Mjg5ZGQ5MzFhZTU2YSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjI3NjkzNjAzNDM1MzU0MDUsIDU1LjA4MTg5MzE0MzA4MTRdLCBbLTIuNDg2NzE5NzkzNzE3Mjg3LCA1NS4wMjU4NDg2Njc1ODc2OF0sIFstMi42MTg2NzY0NTM2MzA0NDQ1LCA1NS4xODM0OTM4MjM1MTA2NF0sIFstMi41NDAyMDM5MjQ0NzA2ODUsIDU1LjM5NzUzNjE1MDUwNzYzNF0sIFstMi4zMjk4NTc5ODk5NTg4OTUsIDU1LjQ1MzE4MDA5MTc4MjkyNl0sIFstMi4xOTg1NDYzNTY1NDY5OTE0LCA1NS4yOTUxODQ2Mzc5NTUwM11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzAxNTAwZWZlZjZhYTQzYmFhMDUyODlkZDkzMWFlNTZhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2U3ZThkNDQ1MGI1MzRkMTRhNzFkOTk2Y2RhMTI3MDNmID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjE4Njc2NDUzNjMwNDQ0NSwgNTUuMTgzNDkzODIzNTEwNjRdLCBbLTIuODI5NTM1OTM1MzQxNDYwNiwgNTUuMTI3NDA4NzU5NDI2MzldLCBbLTIuOTYyNDg4MjY3ODQ5Mjg4LCA1NS4yODU3Njg3NzU2NzM1Nl0sIFstMi44ODM5MzQ2MjI4MzAzOTU3LCA1NS41MDA1NjU4NDU0OTY2MjRdLCBbLTIuNjcyNTEwMTY1MzM2NTg1NywgNTUuNTU2MjQ1NzM4MDk4MzU1XSwgWy0yLjU0MDIwMzkyNDQ3MDY4NSwgNTUuMzk3NTM2MTUwNTA3NjM0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZTdlOGQ0NDUwYjUzNGQxNGE3MWQ5OTZjZGExMjcwM2Yuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMDA5MzJmYjg4YjYyNGM1OGFhOWQ3NmFjMTM1NzAwN2EgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi4zMjYwNzg0ODc1MzY5NTIsIDUxLjc0MjU5NDE5MTkzODc3XSwgWy0yLjExMjQyNTM0NDY3ODU4NTcsIDUxLjgwNDQxOTg0MDU5NzUyNV0sIFstMS45MzM4MzUwMDYwMDI2MDgyLCA1MS42NTU2NTM0NTM1MjI5NjZdLCBbLTEuOTY4NDUzNTE2MzI4Mzc5OCwgNTEuNDQ0NTI3Njk3MDgxOTddLCBbLTIuMTgyMzUwMjkxMzQ0MDY5MywgNTEuMzgyMDgwMjQ0MTM1Nl0sIFstMi4zNjEzODYwNDEwNzE0MjYyLCA1MS41MzEzODAwNzczNTMzOF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzAwOTMyZmI4OGI2MjRjNThhYTlkNzZhYzEzNTcwMDdhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2Y5ZTVlNTYzMGZkNzQyY2U5NjE1MjM3MjQ2ODIzOWRmID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTguMjUxMjY5NTY5Mjc2NzU4LCA1NC4yNzcwOTU3MDAzMjU4MV0sIFstOC40NzQ4NzUyODU5MjMxODEsIDU0LjIxNzM0MTE4OTg4ODc5XSwgWy04LjYyMTk3NjU4MDMxMDgwMiwgNTQuMzgwNDgwNzY4MDEzNDRdLCBbLTguNTQ0ODQxNjAxMTA5OTEsIDU0LjYwMzc4NTg0MDUwNjQ5XSwgWy04LjMyMDU5MTI2NTUzNTU1MSwgNTQuNjYzMTE5OTI0NDQ0NTk0XSwgWy04LjE3NDEyMDQyMDM5MzA1MiwgNTQuNDk5NTcyMTI2MTExMTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9mOWU1ZTU2MzBmZDc0MmNlOTYxNTIzNzI0NjgyMzlkZi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9hYzdmY2M2MzBmOTM0ZjhiOThhODcwNGFhNGNiYjc1MSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0wLjY2MTc2NTA5MjQ1MjQ0NjcsIDU5Ljk3NTkyNjAyMjI3NDM2NV0sIFstMC44NzEzODQyODU1ODg1Nzc3LCA1OS45MjY2MzE1ODEwNzM4M10sIFstMS4wMDEzNzM5ODUwMTQ5Nzc3LCA2MC4wOTQzMDQwNjA4NjI0M10sIFstMC45MjEwOTM2MTM3MTI5NTEzLCA2MC4zMTE0NzcyNjczOTg1NDRdLCBbLTAuNzExMDI3OTM3OTgxMjI1NCwgNjAuMzYwMjc1MDQ1MjgzNjg2XSwgWy0wLjU4MTY4ODA5Nzc1MTQxOTYsIDYwLjE5MjM5ODQ5MzQ2NjYwNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2FjN2ZjYzYzMGY5MzRmOGI5OGE4NzA0YWE0Y2JiNzUxLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzM1MjlkMzFlYWUyMDQ1M2ZhOTQ0Y2YyOTg4ODY5ZjA2ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTEuNDgzODI4NDk0OTU1MzYyNiwgNTMuMTcyNzkzMjgyODU0NDE0XSwgWy0xLjI3NDE2ODAzNTU4ODc1NDYsIDUzLjIzMTc1MjcxNDQxNjddLCBbLTEuMDk3ODMyNTc2MjY0MzA5NSwgNTMuMDg1NTcxOTA2MTQ2NjJdLCBbLTEuMTMwNzA3NDA5NjA0Njk2LCA1Mi44Nzk4ODE3OTE2Nzk2Ml0sIFstMS4zNDA2MjAwMzUwNzQ2NTg0LCA1Mi44MjAzMDc1NTg3OTI3OV0sIFstMS41MTc0MDY3ODA0MjY3Nzc3LCA1Mi45NjcwMzgxMzE3MDkwOV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzM1MjlkMzFlYWUyMDQ1M2ZhOTQ0Y2YyOTg4ODY5ZjA2LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2Q4Y2QwZTIyNDg3MjRkM2FhYmRjYjMxZjNhZmIxYzAwID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTUuMDY5NDI1ODI4NTgyODM4LCA1MS4zNTM3NDA5NjcwNjc1NV0sIFstNC44NTAwNjM1NjE0MjM3MzYsIDUxLjQxNzAzNTQ2ODAzNDIxXSwgWy00LjY3MDU0OTIwNzc2NTI3NywgNTEuMjY1OTQxNTI4MjE4NDJdLCBbLTQuNzA5OTkyMTA5Mzc1MzE0LCA1MS4wNTEwMTI2MzQ4NzcxMDRdLCBbLTQuOTI5NjQxMTk4MTU1NDE4NSwgNTAuOTg3MDgxMDE0MzgwNDhdLCBbLTUuMTA5NTYxNTE5MDk2OTQzNCwgNTEuMTM4NzE1MDc0Mzc5MTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9kOGNkMGUyMjQ4NzI0ZDNhYWJkY2IzMWYzYWZiMWMwMC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wMzBkNTU1YjA3YmQ0M2VlYjE4ZDZjZGVhMzMxOTE4MiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzEuNjQ2NDg0ODIzNjQzNDAwNCwgNTEuNTA4NTY4NzUxNzMzNzNdLCBbMS44NTE0NTgwNjI0NjQwNDk4LCA1MS41Njk3Mzc1ODcwNDQ2OF0sIFsyLjAyODM0ODU1MTc5OTg1NzYsIDUxLjQyMzI1NjU2OTQwMzkwNF0sIFsyLjAwMDc1NjE5Mzk1MjkwMTcsIDUxLjIxNTA5NDk0MDMzNTc1XSwgWzEuNzk1NjE4ODg4MTUyNTU1OSwgNTEuMTUzMzI1Njk2MDcyNzZdLCBbMS42MTgyMzY2NjY2NzY4OTU3LCA1MS4zMDAzMTgyMDM1OTM4OV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzAzMGQ1NTViMDdiZDQzZWViMThkNmNkZWEzMzE5MTgyLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzkzZDM1MWZlODQzNjQ2NDdiNzU3NDAzNGMzOTNmYmVjID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQuNjcwNTQ5MjA3NzY1Mjc3LCA1MS4yNjU5NDE1MjgyMTg0Ml0sIFstNC40NTE3NDczNjQ1NjAxLCA1MS4zMjkyODc3MzkwMDQ5XSwgWy00LjI3MjEwOTQ2OTc0NzkyNywgNTEuMTc4MzQwMzA1MzU3ODhdLCBbLTQuMzEwODYxNzQwMDU4MjQxLCA1MC45NjM1MDk1Mjc1NTU1NDRdLCBbLTQuNTI5OTQxNTUxNDE2MTQ0LCA1MC44OTk1Mjg0MDkyMTU5MV0sIFstNC43MDk5OTIxMDkzNzUzMTQsIDUxLjA1MTAxMjYzNDg3NzEwNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzkzZDM1MWZlODQzNjQ2NDdiNzU3NDAzNGMzOTNmYmVjLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzBjMmE0NjdhMzRkNzQ3NTBhNTZmZTk3MGJkZDNhMDU0ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTcuNjE1MTI3NzE1MzIxNDI0LCA1Ni42Nzk1NTUyNDk2NDAxXSwgWy03Ljg0MDI3OTE4NTIwMTM3LCA1Ni42MjMwMjQ0MzU2NzQxN10sIFstNy45ODY1NzAxNTcwNzgxNTUsIDU2Ljc5MTkzNzgwOTc5NjI2Nl0sIFstNy45MDcwNjMxODk4MDI0ODEsIDU3LjAxNzcxODkyMDg2NjQ4Nl0sIFstNy42ODEzMjI3MDg4NTYwMzMsIDU3LjA3Mzc3MzE3NTMzMjldLCBbLTcuNTM1Njc3NzUyNDY0ODEzLCA1Ni45MDQ1MjU1OTYwOTY2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMGMyYTQ2N2EzNGQ3NDc1MGE1NmZlOTcwYmRkM2EwNTQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYzVlZjQyNDc4MWFhNDAwMzg4M2NhYWFiMWU2ZmQ2MDcgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy40NTg3MzI5NzQxMDQ1NDY3LCA1OC43MTM3NzQwODUyNjAxM10sIFstMy42NzU1MzEyMDg2MTA5NjEsIDU4LjY2MTY2ODAyMTY3NDY4Nl0sIFstMy44MTIyNjkyNjQ2OTYxOSwgNTguODMwMTY2OTg4MTc5NzddLCBbLTMuNzMxNTUwNTkyNDAxNjk0MywgNTkuMDUxMDI3MTUxMzIyNThdLCBbLTMuNTE0MjQ3NzU1OTIzNzM5MywgNTkuMTAyNjQxMTQ2ODE4NDM1XSwgWy0zLjM3ODE2NzM3NjcwMTMyMDMsIDU4LjkzMzg4OTQ2MzI1MTUwNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2M1ZWY0MjQ3ODFhYTQwMDM4ODNjYWFhYjFlNmZkNjA3LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzJjMWVjZjUwYTdkNTQ3YmU4YjIwZDExMWRiMDU4MjFhID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMS40MTIyNzI0NTIyOTU5MDc2LCA1MS4yMzg1OTcxNjg3MTQ5Nl0sIFsxLjYxODIzNjY2NjY3Njg5NTcsIDUxLjMwMDMxODIwMzU5Mzg5XSwgWzEuNzk1NjE4ODg4MTUyNTU1OSwgNTEuMTUzMzI1Njk2MDcyNzZdLCBbMS43Njc1MjU3NjA1ODIxMjg2LCA1MC45NDQxMDM0MjgwMTI1OV0sIFsxLjU2MTM5NzUwMDcxMTUzNjIsIDUwLjg4MTc4MDYyMjYzMTU0NV0sIFsxLjM4MzUyNTA3ODM1NzM3NjMsIDUxLjAyOTI4MTUzODE5MDM1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMmMxZWNmNTBhN2Q1NDdiZThiMjBkMTExZGIwNTgyMWEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYTZjNjI4M2Q5ZTdlNDZjNmFlMzVkMGYwYjg3ZjU4ZmMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC4wNTM3Njk1NDAxMDQzMTEsIDU4LjE2ODE5MDY0MDYwNjE1Nl0sIFstNC4yNzE2ODU4ODUyNjg3NjYsIDU4LjExNTEyMTg1ODE1MzNdLCBbLTQuNDA5NzM4NjUzMjMxODQyLCA1OC4yODMwODY3MjY3MTMxN10sIFstNC4zMjkyMTcxNTY5MjMwMDIsIDU4LjUwNDM5NDY4Mjg5NTAyNV0sIFstNC4xMTA3NzgwNjE5NTU3MzMsIDU4LjU1Njk3ODk2MTI2Mjk2XSwgWy0zLjk3MzM4MjQ3NzI2NTUzOSwgNTguMzg4NzQyMjU0NTUzNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2E2YzYyODNkOWU3ZTQ2YzZhZTM1ZDBmMGI4N2Y1OGZjLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2U0NDczNGVjOGU1ZDRiNTI4NGNlMGQxNTBhMmIxOTlhID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQuNzA5MTE1MTY0MTkwNjYxLCA1OC4wMDg1MDAxMjM3NzI3NTVdLCBbLTQuOTI4NjE4MDUwMTMxNjEsIDU3Ljk1NDk0NTg4MjkxMjk5XSwgWy01LjA2ODI1ODI3MTg2NzczNSwgNTguMTIzMzkyMzQxMzk1NV0sIFstNC45ODc3MzgwMTY3NTAwMjQsIDU4LjM0NTY3NTEwNjA3MjMyXSwgWy00Ljc2NzcwMjE3NTQ2MjYzOSwgNTguMzk4NzQzNDA0NjMxNzY2XSwgWy00LjYyODcxODg0NDcyNTk4OCwgNTguMjMwMDE3MzkxMDIwMzc1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZTQ0NzM0ZWM4ZTVkNGI1Mjg0Y2UwZDE1MGEyYjE5OWEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNGY4YjY2MmZlMTdiNDEyNGE5NzJhMjRiOGIwMWI4OTEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1swLjkwODQxMDIzMDA4ODM2ODUsIDUzLjI2NDA1MzI1NjQ0NjU5XSwgWzEuMTEyNDM1NjU1MTk0Njk0MSwgNTMuMzIyMjE1Mjg5MTI3MDY1XSwgWzEuMjg3NTg2OTE3MTg1MTY2OCwgNTMuMTc3NzMwNzEzOTc3NTc0XSwgWzEuMjU5MTkwNzc5ODk0ODQxMiwgNTIuOTc0NTQ0NzU5MzcxMzc2XSwgWzEuMDU0OTU5MDMwNTc0Njg0NSwgNTIuOTE1NzgxMjQwMTYzOTJdLCBbMC44NzkzMjg0ODU2MTc3NDE0LCA1My4wNjA4MDUwNjU0MzkxNTVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl80ZjhiNjYyZmUxN2I0MTI0YTk3MmEyNGI4YjAxYjg5MS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl84YWIyODRmZDJlZTg0Y2E5YjY0NzU5YmFjNjNlZmY3YSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjE2OTc4MTU5OTc4NTc5ODgsIDU5LjAyMzExMTg1ODIyNzA5XSwgWy0yLjM4MzE3NTgyMjUyODkwOTUsIDU4Ljk3MTk0NTExMzY3Mzk3NV0sIFstMi41MTY3MjI3MzEzNjkyNDU3LCA1OS4xMzk0NDkwMDc2NTkxMl0sIFstMi40MzYyMTkyODgxMDYyMTQsIDU5LjM1ODM2MDI2MDc3OTgzXSwgWy0yLjIyMjM0MTIxNzI5ODQ4LCA1OS40MDkwMzgzMzU2NTIxXSwgWy0yLjA4OTQ0OTU1NTc0MzQ0NjUsIDU5LjI0MTI5NjE1OTQxMTkxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fOGFiMjg0ZmQyZWU4NGNhOWI2NDc1OWJhYzYzZWZmN2Euc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNTY5MGVjOTgzZDUzNGQxZTlkYzUxODI2OWJhM2ZkODUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC4yNzIxMDk0Njk3NDc5MjcsIDUxLjE3ODM0MDMwNTM1Nzg4XSwgWy00LjA1Mzg4NzIyODk3NTU1NCwgNTEuMjQxNzM3NTM2MTM0NDk0XSwgWy0zLjg3NDE0NzE1NjI3MTAyNjYsIDUxLjA5MDkzNzAzNjE3Njg4XSwgWy0zLjkxMjIxMTE0NTc4MTU4MTYsIDUwLjg3NjIwNTQ4MDQwODk1XSwgWy00LjEzMDcwMjQ3NDU1NjE4LCA1MC44MTIxNzU1NTI4MDE2OV0sIFstNC4zMTA4NjE3NDAwNTgyNDEsIDUwLjk2MzUwOTUyNzU1NTU0NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzU2OTBlYzk4M2Q1MzRkMWU5ZGM1MTgyNjliYTNmZDg1LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzAwY2RmNDNmMTFhNDQ4ZjVhNjdjMmRhNTMxNDY0N2MzID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTEuNTg0MjM2NDI0Nzk4MTM0LCA1OS41NjAxNTIzMTQzMzUwNl0sIFstMS43OTYzNDU4NTA5MjEyNjQyLCA1OS41MDk5MzM3NDMwODgxN10sIFstMS45Mjg1ODI5MTYwNTk3NDgzLCA1OS42Nzc5MDQ5NTY1NDQzNF0sIFstMS44NDgwNTU4MzQxMjE0MDIsIDU5Ljg5NjMxNjg1NTM3Mzc3Nl0sIFstMS42MzU0ODA1OTcxNDc0OTQsIDU5Ljk0NjAzOTk3OTM1NjgyXSwgWy0xLjUwMzg5NzI5NzE5OTM5OTQsIDU5Ljc3Nzg0ODkzMjA0MzU2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMDBjZGY0M2YxMWE0NDhmNWE2N2MyZGE1MzE0NjQ3YzMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fOTk3NjU2NWQ2NzVhNGU0ZjhkZjE2MjI5OTViNDExYmEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy41ODc1Njk4MTgyNzk4MDA2LCA1Ny4yODQyNTcyMjc4Nzk1NV0sIFstMy44MDMzNDkxNjM2NzU4NjQ3LCA1Ny4yMzAyNTk3MjU3NDE2NzVdLCBbLTMuOTM5ODc4Nzk0NjgzNzU1LCA1Ny4zOTUzODgxNzY3Mjk2OF0sIFstMy44NTk5NzM4Mzc1MDgzNDE0LCA1Ny42MTQ4MTI3MDU3NDAyOF0sIFstMy42NDM2NTgxMDg4MjAxMDk3LCA1Ny42NjgzNDkzOTI2MDMwN10sIFstMy41MDc3ODMwODM0OTk1MiwgNTcuNTAyOTI0ODI1MzcxMjFdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl85OTc2NTY1ZDY3NWE0ZTRmOGRmMTYyMjk5NWI0MTFiYS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl83MWQ4ZGYyM2MxMGI0OGU5OGIyZmRjNzBkNjQzYmE1YiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzAuMjAxNjQ0NDEyNTk4NjgyNDMsIDUyLjQ3MzI5Mjk0NTA5NDcyXSwgWzAuNDA4NjIyNjc5NDkwODY5NjcsIDUyLjUzMzA5NTI2MDAwMjQ3Nl0sIFswLjU4NTIwNjk2ODU2ODY5MiwgNTIuMzg2OTk5NjgxODUyMzFdLCBbMC41NTUyODYwNTQ4NzA1NTgsIDUyLjE4MDU2OTM4NzI5MDNdLCBbMC4zNDgxMDAxMTg4NTQyNzI0LCA1Mi4xMjAxNTk5NjU5NDMxN10sIFswLjE3MTA0MTUyMzQyNDI1LCA1Mi4yNjY3ODc3NjIwMjkwNzVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl83MWQ4ZGYyM2MxMGI0OGU5OGIyZmRjNzBkNjQzYmE1Yi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xZDk0YjIxYTkxODY0MThiYTQwYjYzM2YyYTk4NmQ5YyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01LjMwODk3MDY3MDk1ODg3OCwgNTcuNDU3Mjg0MDU2MTQyNzZdLCBbLTUuNTI5NDYyNjUzNTA3Mzk2LCA1Ny40MDI3NjA3NTM4MTAyN10sIFstNS42NzA0MTM4MzE3NjMxMDcsIDU3LjU3MDYxODg0OTExODIyNl0sIFstNS41OTAyMTc0NzQ1ODY3NzMsIDU3Ljc5MzMwMTg3MzI0MjAxNV0sIFstNS4zNjkxNzQ1MDUwNTg0MDYsIDU3Ljg0NzM0NzQxMDUzMDY2Nl0sIFstNS4yMjg4NzgyNjUzNzE0Mzg1LCA1Ny42NzkxOTAyNDgyNzE4NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzFkOTRiMjFhOTE4NjQxOGJhNDBiNjMzZjJhOTg2ZDljLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2Q4OGFjMjZkZDI5MjQxZTNiZTUwYTM5MjA5NzdjODFhID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuNzY5NDg3Njk3NzkzNjUwNywgNTYuMjQ4NDkwNTQ0MjUwODRdLCBbLTMuOTg0Njc4MzY3NDQxNjQ3NSwgNTYuMTkzMTM4MzI3NzE5NDc0XSwgWy00LjEyMTI0MjU3NjA4OTg3MywgNTYuMzU1ODMwMDIwNjU5Nzk1XSwgWy00LjA0MTk2NDE3NDk3OTcxNSwgNTYuNTc0MjAzMTkwMTkzMTZdLCBbLTMuODI2MjE0MTI5MDY5NjIzLCA1Ni42MjkxMTczMjgxMjkxN10sIFstMy42OTAzMDEzNTkxNDY4ODE0LCA1Ni40NjYwOTg4NTkxMTcwNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2Q4OGFjMjZkZDI5MjQxZTNiZTUwYTM5MjA5NzdjODFhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzI3ZDVmNTJjNmVjNTQ0ZDI5MTgxOWY4OTY0ZWQyMGQ5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTEuNjcwMjU4NjE0NzQyNDMxNiwgNTcuNzYzMDgyMjQzNjk5MjZdLCBbLTEuODgxMDQ1NzUwNjYwNjYwNCwgNTcuNzEwNTA3OTAxMTI5MjldLCBbLTIuMDEyNzI4ODE4MTY1ODA2NywgNTcuODc0MjkyNDAwNDczNzNdLCBbLTEuOTMyOTcyNTIxOTAxMTQ0NCwgNTguMDkwOTI3MDcyMTg1NDNdLCBbLTEuNzIxNjgxNTcyNDE1NTIyNiwgNTguMTQzMDQ0MDU3MTE2ODddLCBbLTEuNTkwNjQ5OTg3NjE1MTE3OSwgNTcuOTc4OTg2MDY3MDMxMDY2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMjdkNWY1MmM2ZWM1NDRkMjkxODE5Zjg5NjRlZDIwZDkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fOTE2MjNmNTY5MmNmNDg0NjlkOTM3YWIzYThiMzk5NzggPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi43ODA1NTc2MTM3OTgwMDk3LCA1Ni4zMDY4Njk2NTExODE5MDZdLCBbLTIuOTkzMDkzNjE4MjgwODMxLCA1Ni4yNTIwMjczODkwNDI5Ml0sIFstMy4xMjcwNjAwODk0Njk2MDc1LCA1Ni40MTM1NzY1MTYwNjAyOF0sIFstMy4wNDc4Mzk1MDgzNDI2MzI2LCA1Ni42MzAyOTAzNDg4NjQzN10sIFstMi44MzQ3NTczMjAyNzQ4OTcsIDU2LjY4NDcwMDE0NjgxODM3XSwgWy0yLjcwMTQ0MTM1ODY4NjMxNDQsIDU2LjUyMjgzMTAwMDk0OTM1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fOTE2MjNmNTY5MmNmNDg0NjlkOTM3YWIzYThiMzk5Nzguc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZjA5YmQxZTgwNTJiNDQyNmJhOTNiMjg4MzhmZmMzYzggPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNS40Njg2OTg1MTMyNDUwMjgsIDUxLjQ0MTczODg4MTY3OTA5XSwgWy01LjI0ODc5NTIzMzQ2OTkyNCwgNTEuNTA0OTgwOTc5NDM4NzA2XSwgWy01LjA2OTQyNTgyODU4MjgzOCwgNTEuMzUzNzQwOTY3MDY3NTVdLCBbLTUuMTA5NTYxNTE5MDk2OTQzNCwgNTEuMTM4NzE1MDc0Mzc5MTZdLCBbLTUuMzI5NzYwNDQwNjE0MjkxLCA1MS4wNzQ4MzM2NDM5NDM3NF0sIFstNS41MDk1Mjg5NTUxMzgyNTI1LCA1MS4yMjY2MTcxMTU1NzE1OF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2YwOWJkMWU4MDUyYjQ0MjZiYTkzYjI4ODM4ZmZjM2M4LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzVmNzA5Mjc5YjdkYjRlM2JhY2Q4N2YwMzAyNzQ2ZjA5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTEuOTg5Mjg0MTg0NDExNjg4LCA1NS4zNTA3OTE1NDA3OTg3MV0sIFstMi4xOTg1NDYzNTY1NDY5OTE0LCA1NS4yOTUxODQ2Mzc5NTUwM10sIFstMi4zMjk4NTc5ODk5NTg4OTUsIDU1LjQ1MzE4MDA5MTc4MjkyNl0sIFstMi4yNTEyNjE2MDMzMzA4NTk1LCA1NS42NjcxMjY0Njg2OTIwOV0sIFstMi4wNDE0NDU5NzA2NTYxNTU0LCA1NS43MjIzMjg0NzIxNTc4NzZdLCBbLTEuOTEwNzc5NzM5Mzc0NzI2MywgNTUuNTYzOTkxMzc5NjI5NjhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl81ZjcwOTI3OWI3ZGI0ZTNiYWNkODdmMDMwMjc0NmYwOS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9hOTc0ZDE4ZTRhY2I0N2JhODRlNGZlZTI3YWM3NjMxMiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjY0NDMzODAxNTc0MTA0NSwgNTAuOTMzNjk4MzQwNjkxMjJdLCBbLTEuNDMwOTA0NDE3MjcwMzQxLCA1MC45OTY4MTU0NDIzMDgzOF0sIFstMS4yNTE0NTI4NjcyNTc2NjUsIDUwLjg0NzQyMjUyNzI0MTk1XSwgWy0xLjI4NDk3OTA1NTk5NzY0NjYsIDUwLjYzNDM5NDgwMTk3NDU4XSwgWy0xLjQ5ODYyODc5MDA5ODEwNzUsIDUwLjU3MDY1OTQ0ODE3ODk5XSwgWy0xLjY3ODUzNzM4MzAzMzEzOTgsIDUwLjcyMDU2OTcwNDY4MTc1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fYTk3NGQxOGU0YWNiNDdiYTg0ZTRmZWUyN2FjNzYzMTIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMTZmOGYwYjMwY2Q2NDNhNjlmZDM0MDBhNGE1ZDcyYWYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMS42ODY3MjEwNDUzMTE0NTQ1LCA1MS45Mjc1NTY1MjE2MTk5MDZdLCBbLTEuNDc0Njc5MDQ4MzQwNzY4NiwgNTEuOTg4ODY4Njk3MDM5MDI0XSwgWy0xLjI5NjU0MTU2NDcyMDc4OTIsIDUxLjg0MDc3NDUxNzU1ODgzXSwgWy0xLjMyOTk5MzkyNzc5MTE5MzksIDUxLjYzMDgzNDY1MTAzMjMxXSwgWy0xLjU0MjI3MDczOTE4Nzk4MiwgNTEuNTY4OTA0MzMwMzUwMTNdLCBbLTEuNzIwODYxNTIzMTE2NzY4MywgNTEuNzE3NTMxNzcwNjcwNzhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8xNmY4ZjBiMzBjZDY0M2E2OWZkMzQwMGE0YTVkNzJhZi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lOWEzZTE0ZTFjZDI0M2ZhYjI2MWY3NThkMjRlNDdkYyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00LjM4ODU1NTkwODE1NTUyNCwgNTAuNTMxNzE0OTYyNjkwNTFdLCBbLTQuMTY5MjA3NzgyOTAwNjM5LCA1MC41OTYzMzAxMjM4MDEzN10sIFstMy45ODg1Mzg2MDU3NzYxNDg1LCA1MC40NDQ2MjAxOTcyNDY3ODVdLCBbLTQuMDI2Nzk4ODUxNjc0MzQ2LCA1MC4yMjc3NzE3OTE3MDAyNV0sIFstNC4yNDY0MDU1MjA5MjAzMjMsIDUwLjE2MjUyMzYzMzUyNjAyXSwgWy00LjQyNzQ5NDQzMDQ5NjAyOSwgNTAuMzE0NzU2NDQ3Mjk4NTddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9lOWEzZTE0ZTFjZDI0M2ZhYjI2MWY3NThkMjRlNDdkYy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xMDU4ZTM1MjdhYTY0M2M2OWZiODljMWU0NDJiNTMxYSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjk2MDYwOTkyNjQ4MzA1LCA1Ny40OTQ0MjMzMjAyOTY5OTVdLCBbLTIuMTcxOTk1NTU2Mjk3OTcyNSwgNTcuNDQxMzg5NTQ0MDIyNDY0XSwgWy0yLjMwNDMzMDQ3MzE5ODU2OSwgNTcuNjA0ODkxNTMyMjE1OTJdLCBbLTIuMjI0NjI3MjA1MDcxMjgxLCA1Ny44MjE3MTIxNjg4OTE2XSwgWy0yLjAxMjcyODgxODE2NTgwNjcsIDU3Ljg3NDI5MjQwMDQ3MzczXSwgWy0xLjg4MTA0NTc1MDY2MDY2MDQsIDU3LjcxMDUwNzkwMTEyOTI5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMTA1OGUzNTI3YWE2NDNjNjlmYjg5YzFlNDQyYjUzMWEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZTRlMWUyMDVhYTY4NDkyMWI0ZDIxNjEyZjNhOGE4MWYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1swLjI5MjgxMTI4OTMyMDY1NjEsIDUzLjA4ODU5ODEwNTQ5MDQwNV0sIFswLjQ5ODU5NDY4MDcxNzUxNTksIDUzLjE0NzI0NTIxNDcyMzNdLCBbMC42NzQzMTM3MTcxNjgwNTI2LCA1My4wMDIwOTk0MzI1NDYzOV0sIFswLjY0NDcyMTM2MTM1MTY2MjgsIDUyLjc5Nzc2NjQxMzA5ODU3XSwgWzAuNDM4NzIyMTg1NTk1NDk0MywgNTIuNzM4NTE0MDA1NDExNTk1XSwgWzAuMjYyNTI5OTIxNDk0OTgyNjcsIDUyLjg4NDE5OTc5OTMxNzgxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZTRlMWUyMDVhYTY4NDkyMWI0ZDIxNjEyZjNhOGE4MWYuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMDlhNmRjZGZjZjNjNDA1ODgzZjI0ODZiMWRkMDE4OTEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNS4yNDM0MDc0MTk1MTQ1NjQsIDU0Ljg3NzM2NTg0MTk1NTAyXSwgWy01LjQ2MDg1MTEyNjM1MjczMzUsIDU0LjgxOTcyMTA2ODYwMTkxNV0sIFstNS42MDA2NTQ0NDYwNDY5MDMsIDU0Ljk4MDY0MDIzNjMxNTkxNF0sIFstNS41MjIzNjkwNjIyMjg2NjcsIDU1LjE5OTU3OTc2ODU4NzYyXSwgWy01LjMwNDMyMjM2NjY1NTc4LCA1NS4yNTY4MDkyMjAyMjMyNl0sIFstNS4xNjUxNjM3NjUzNzIyNywgNTUuMDk1NTE3MDM3MTkwNjZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8wOWE2ZGNkZmNmM2M0MDU4ODNmMjQ4NmIxZGQwMTg5MS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wOGEyMjUxYWZiZmI0ZjRjODI1NmQ5ZDVhZmRjYzYzYiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy02Ljk0MjM0ODk1NzgxMzI5OCwgNTYuODQ4MTE4Njc5MTQ5MDhdLCBbLTcuMTY2MTU2NDAwOTgxMTgyLCA1Ni43OTIxMDE2OTc5NzgyNTRdLCBbLTcuMzEwODk4MTQ1NzY1NjYxLCA1Ni45NjA1NjE5NTQ1MzgzXSwgWy03LjIzMTE4Mjc1ODUyMTk2NSwgNTcuMTg1MzY3NDQ3MzgwNzldLCBbLTcuMDA2Nzk1NzQ4OTkxODM5LCA1Ny4yNDA5MDg4MjQ3MDc3MjRdLCBbLTYuODYyNzAzMjAwMTY4MjMyLCA1Ny4wNzIxMjI5ODUzODAzNTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8wOGEyMjUxYWZiZmI0ZjRjODI1NmQ5ZDVhZmRjYzYzYi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8yZjVjNGFkOWNkNWI0NWM3YWZiODQwNWIwNTI1MDcyNiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjI5MzczOTEyNzkyOTM2OTcsIDU0LjMwOTI1NjM3ODM1OTYxXSwgWy0yLjA4NDIyODQyNTQxNTk0OCwgNTQuMzY2MzA3MjE2NTg2MDhdLCBbLTEuOTA5MzYzMDI4MzAzODU1NiwgNTQuMjIxMzM2NjU5NjY2MDVdLCBbLTEuOTQzNTc0MTc3MTMxNjc5MiwgNTQuMDE4NzQ3NjI5NDQyMjk1XSwgWy0yLjE1MzM3MTQ4NjkzNzQ2OCwgNTMuOTYxMDgxMjY4MDQ2OTNdLCBbLTIuMzI4NjcyMDYxODA4NTEyNiwgNTQuMTA2NjE5NDcxODAxMDldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8yZjVjNGFkOWNkNWI0NWM3YWZiODQwNWIwNTI1MDcyNi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wODE4YjI1ODUxYmI0ZjFhYTc1Y2FkZDhjNmQzNmVmNCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjE0NjIwNDIxMjU0MjY2MiwgNTYuNDcwNDQxNDEwMDQ0MzddLCBbLTIuMzU3MTA4NjQ3NDQ4NzM4LCA1Ni40MTYwNzYwNjY2MTU4OTRdLCBbLTIuNDg5NDQ1MjM0OTg0OTIyLCA1Ni41NzcyMTkyMDI2MzcwMl0sIFstMi40MTAyMjcxNzc1NjA4OTk3LCA1Ni43OTMwNDIzMjUxODAzMTZdLCBbLTIuMTk4Nzg3Nzc2Mzg1NTc2NSwgNTYuODQ2OTc1OTA3MzQ3MjZdLCBbLTIuMDY3MTAwODIxNzU2MjY0MywgNTYuNjg1NTIwNTE0NTE4NzRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8wODE4YjI1ODUxYmI0ZjFhYTc1Y2FkZDhjNmQzNmVmNC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9jYmRlM2FjMmI1Y2Q0ODM2ODY4NzU5ZjJkZDFjNTlkNCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy02Ljc4NzEzODc1NTQ5ODc4NiwgNTMuODcwNjQ0OTcwMDEyMTRdLCBbLTcuMDA3MDA0MjM3Mzg1NzYxLCA1My44MTExMjMzMDA5NzcxN10sIFstNy4xNTAzMjg1NTcxMjg1OSwgNTMuOTcxMjA3NTc4MTI3NjNdLCBbLTcuMDczMTUyNDcyNTYyNzM0LCA1NC4xOTEyMjU5NDY5NDU4Nl0sIFstNi44NTI2NDg0MzgzMTI0MjUsIDU0LjI1MDM0NzI0NTY4Mzg2XSwgWy02LjcwOTk1ODk0NjA5OTc5MywgNTQuMDg5ODUzMjA4OTk2NTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9jYmRlM2FjMmI1Y2Q0ODM2ODY4NzU5ZjJkZDFjNTlkNC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9hMGY2YjFlNjExMzc0ZmJmOGQzZjAwNWMxYzZiMjllNSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjQ3NjcwMjUwODQxOTI4OSwgNTEuMDAzNzMxNDU1ODY1MzFdLCBbLTMuMjU5Njk2MDIzNzYzMjk4LCA1MS4wNjcyMjg2NzEzNTIyMl0sIFstMy4wNzk4MTU0NDM2MzAyOTU2LCA1MC45MTY3MjMyOTcxNDU4N10sIFstMy4xMTY1MTA2ODIzNjQ2NjE2LCA1MC43MDIxOTM0NjYzNDY0Nl0sIFstMy4zMzM3Njg0NDEyMzA4MDQsIDUwLjYzODA2Nzk3MTM3NTMxXSwgWy0zLjUxNDA4MDc1ODEwOTM1NTYsIDUwLjc4OTEwMDIxODk3MDUzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fYTBmNmIxZTYxMTM3NGZiZjhkM2YwMDVjMWM2YjI5ZTUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYzdmNWNmMjAyMDEwNGY1NDkxZTJhMjQzMzM2MjllY2MgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41MzkxMTk2ODg0Nzg4NDcsIDU0LjA0OTAxNzk5MTA4MTg3NV0sIFstMi4zMjg2NzIwNjE4MDg1MTI2LCA1NC4xMDY2MTk0NzE4MDEwOV0sIFstMi4xNTMzNzE0ODY5Mzc0NjgsIDUzLjk2MTA4MTI2ODA0NjkzXSwgWy0yLjE4ODA4NjY2NTM5MDE5OTYsIDUzLjc1NzM3NTY3Njg1MTU4XSwgWy0yLjM5ODgyMTU3NTI4MjQ1OTgsIDUzLjY5OTE1NjMxNDg4MDcyXSwgWy0yLjU3NDU1NTAzODg1MTY1MzYsIDUzLjg0NTI2MDQwOTQ0MzM4NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2M3ZjVjZjIwMjAxMDRmNTQ5MWUyYTI0MzMzNjI5ZWNjLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzNjMzY3OTdhY2I4ZTQxYjU4NDAwZDg3NmZlZGRhNjVlID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuNjE4OTA4NTE3MDQzMjg4LCA1MS4zNjgwMDE3MjkxMjY5NDVdLCBbLTMuNDAyMTYyODIzNzEzNDkwNCwgNTEuNDMwODY5ODYyODIyNTFdLCBbLTMuMjIyNzcwMjI1Nzk4MDYxMywgNTEuMjgwNzUwMjc0MTI1MjI1XSwgWy0zLjI1OTY5NjAyMzc2MzI5OCwgNTEuMDY3MjI4NjcxMzUyMjJdLCBbLTMuNDc2NzAyNTA4NDE5Mjg5LCA1MS4wMDM3MzE0NTU4NjUzMV0sIFstMy42NTY1MjM0NTI5MzkyOTMsIDUxLjE1NDM4NDYwMDY2OTMyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fM2MzNjc5N2FjYjhlNDFiNTg0MDBkODc2ZmVkZGE2NWUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZGRjMTRlMzZiNGY1NGFkNGE2OTFmMTIzNTcwNTY4YTggPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMS43ODk0MTE3NDU3NzgwMDg1LCA1MS4yOTUzNjk5OTIwMjE4NV0sIFstMS41NzYyMDM1OTU1MjMwODEsIDUxLjM1Nzg2ODAyNDg4NDY3NF0sIFstMS4zOTcxNzYzODE4NzA2OTQ4LCA1MS4yMDg4NTI4NjY2NTE2XSwgWy0xLjQzMDkwNDQxNzI3MDM0MSwgNTAuOTk2ODE1NDQyMzA4MzhdLCBbLTEuNjQ0MzM4MDE1NzQxMDQ1LCA1MC45MzM2OTgzNDA2OTEyMl0sIFstMS44MjM4MTkyOTQ1ODQyMTIyLCA1MS4wODMyMzc0MDcyMDQzODZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9kZGMxNGUzNmI0ZjU0YWQ0YTY5MWYxMjM1NzA1NjhhOC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8zZTVmOWY5MzhiZjA0ZWRjYjk5ZmY0NDMxYmMwZDQ5OCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00LjcxMTA2ODA1ODI3NTg2OSwgNTMuMjU2MjQzOTMwNDcyODU2XSwgWy00LjQ5NTIwMTQ0MTQ0MTM0LCA1My4zMTU4OTg1NzEwODM1NF0sIFstNC4zMTg1NjEyNDY1NDg4NjcsIDUzLjE2NzczMDAzODkxNjA2XSwgWy00LjM1NzM4NTI5MDk4MDkyLCA1Mi45NTkzMzk4OTI3Nzg1N10sIFstNC41NzM1Njc0ODA5NjUzMDU1LCA1Mi44OTkwNTI3NTg1NzEzODZdLCBbLTQuNzUwNjEwOTUxNzA4MTg2LCA1My4wNDc3ODgxNTg1NzM2OV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzNlNWY5ZjkzOGJmMDRlZGNiOTlmZjQ0MzFiYzBkNDk4LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzI2NTY2YWNmY2M1NjQ2ODA5Nzk2OGE3MGNhNDI2ODA2ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQuODI5OTEyNDgxNjQzMzUsIDUyLjYyODY2NTQ1NjE0OTA5XSwgWy00LjYxMjg2MDcyNzQ4MjQ5MiwgNTIuNjg5NTI2MzkxODQ0MThdLCBbLTQuNDM1MjU3MDA2NDU2NzAyLCA1Mi41NDAzNTg1ODk3MjczM10sIFstNC40NzQzMDE2MzUwNzMxNDIsIDUyLjMyOTc3MDk1MTIwNDhdLCBbLTQuNjkxNjU5ODg4MTA0MzgsIDUyLjI2ODI3NTQ2MjAxMDk5XSwgWy00Ljg2OTY2NzkzMTY5ODYyLCA1Mi40MTgwMDE5ODY0NDM4M11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzI2NTY2YWNmY2M1NjQ2ODA5Nzk2OGE3MGNhNDI2ODA2LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzA1MzI3ZmU4NzJhODQ0MGNhYzJiOTMzNTQ1YTExNTM0ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTUuODk3MTM4ODIyNDAyNzMzNSwgNTQuNzAzOTI3OTA3MDg1MDJdLCBbLTYuMTE1OTcxNzc1NjU1ODg1LCA1NC42NDU3NzgyODgwMTg3N10sIFstNi4yNTczODM1NjkyMTY5MzYsIDU0LjgwNzA2Mzc3NDMxMDQzNl0sIFstNi4xNzkzMTk3MzM5NzAwODEsIDU1LjAyNjg4MzE3NTExNThdLCBbLTUuOTU5ODczMjkwOTgwNjkyLCA1NS4wODQ2MTczNjkwMTA2OV0sIFstNS44MTkxMDM5MzgzODE3Nzk1LCA1NC45MjI5NTAyMDI5ODIyMzZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8wNTMyN2ZlODcyYTg0NDBjYWMyYjkzMzU0NWExMTUzNC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8yODU4YjI1MjBkYWU0MzJhODhkZWE1NmQ0YmU4ODI4MyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzEuMjg3NTg2OTE3MTg1MTY2OCwgNTMuMTc3NzMwNzEzOTc3NTc0XSwgWzEuNDkwODI0MTAxMTg1NDQ0NiwgNTMuMjM1OTUxODI0NjY0MTA2XSwgWzEuNjY1ODYzODk4NzU1MzM5OCwgNTMuMDkxNTg2NzQ2MjkxMjM1XSwgWzEuNjM4MTQ4NzAyNDE5MTQ3LCA1Mi44ODg0NjQxMjU2NjEyNV0sIFsxLjQzNDcxNDA0NzQ3ODk0MjIsIDUyLjgyOTY0MzM1NDY2ODgyXSwgWzEuMjU5MTkwNzc5ODk0ODQxMiwgNTIuOTc0NTQ0NzU5MzcxMzc2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMjg1OGIyNTIwZGFlNDMyYTg4ZGVhNTZkNGJlODgyODMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMDI2YjYyNTAxMGQyNDQ1ZThhZDFkOTdlMDU0ODRhZmQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNi4wMzM4MDU3MTI4ODAyODIsIDU3LjY4NDcxNDkxMDg1MTY5XSwgWy02LjI1NjMzOTgzNDI2OTAxNSwgNTcuNjMwMTcyMTYyOTgzMDFdLCBbLTYuMzk5MTI4Mjg1ODUwNzc5LCA1Ny43OTk1NzkwMjMyNjkzXSwgWy02LjMxODcyNzUxNjAzNzk5NSwgNTguMDIzODI2NzIwMzM0OTc0XSwgWy02LjA5NTY0MDU0ODc1MDM0MjQsIDU4LjA3Nzg4MDc4NjE5OTg0XSwgWy01Ljk1MzUwNjU3MTA2MTA0OCwgNTcuOTA4MTc4NDM1Nzc0NThdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8wMjZiNjI1MDEwZDI0NDVlOGFkMWQ5N2UwNTQ4NGFmZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9iOTQ3YjY2ZDE5NWE0ZmJhOGIyYWI4MDljNWY4ZjIxYyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjU4OTA0NjU3NzUyMTc2NDQsIDUwLjM1NzcyNjM4MzA5MjI5XSwgWy0zLjM3MDkxMjEzNzAwMzQ4NywgNTAuNDIyNDMzOTgxMDQxNjFdLCBbLTMuMTkwMTIwMzAyODQyNTI3MywgNTAuMjcxMDMzMjIzODg4OTNdLCBbLTMuMjI3MDMxNzU5MjgwNzcyMiwgNTAuMDU0NDA4MjMyMzY5NTI1XSwgWy0zLjQ0NTQwNzAwMzEzODQwOSwgNDkuOTg5MDcyMjA5NTA3ODI1XSwgWy0zLjYyNjYzMTA3MjcyNjE0MzUsIDUwLjE0MDk4OTE1NTQ0NDQxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fYjk0N2I2NmQxOTVhNGZiYThiMmFiODA5YzVmOGYyMWMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fODI0MjY0MDEwMmI4NDgzYmIyN2UxMjNiMmUzNGM1ZjMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNi40OTA0MTc4MjUzMDU2OSwgNTQuMTQ4OTE4NzE5MjkyNjJdLCBbLTYuNzA5OTU4OTQ2MDk5NzkzLCA1NC4wODk4NTMyMDg5OTY1Nl0sIFstNi44NTI2NDg0MzgzMTI0MjUsIDU0LjI1MDM0NzI0NTY4Mzg2XSwgWy02Ljc3NTE1OTA4NzUyODIxNSwgNTQuNDcwMzA5ODQ1ODU5Mjc2XSwgWy02LjU1NDk4NzY3NjAxMDU2OSwgNTQuNTI4OTY5ODc5NDc2OTc1XSwgWy02LjQxMjkzNTc2NDMyMDk0MzUsIDU0LjM2ODA3NTQzNzU1NjQ5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fODI0MjY0MDEwMmI4NDgzYmIyN2UxMjNiMmUzNGM1ZjMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYTdhYzNiMTAyMjRhNGE2Nzg2NWQwNDljMzc1Yjk4NmIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNy43NDc0MzAxMzYzMjc1MjgsIDU3LjQ2OTc0NjYzNTY2MjU1XSwgWy03Ljk3Mzc1MTM0OTE1NDYzMiwgNTcuNDE0MTc5MTIzNzM2OTFdLCBbLTguMTIwNTI2Mjk4NTg5MzgyLCA1Ny41ODUzMzg2NDQyODA0NF0sIFstOC4wNDAzMzA5NzAzODk5NzQsIDU3LjgxMjM3ODcwMjE3MjQ0XSwgWy03LjgxMzQzNzU0Mjk3NzM1OTUsIDU3Ljg2NzQ0OTMwNzc1OTQ3XSwgWy03LjY2NzMxMTEwMDQ4NjAyNywgNTcuNjk1OTc5NDczMTgyMTNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9hN2FjM2IxMDIyNGE0YTY3ODY1ZDA0OWMzNzViOTg2Yi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl84ODg3MDM3MWNhYWE0NWY5YTg4ZjM0Y2RiMjdlODU2OSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00LjE1NjI1MTYxMjg5OTY1MSwgNTEuODE4NTM3MDI5NjA2NTVdLCBbLTMuOTM5MTc2NzUyODU3NDQ2LCA1MS44ODA3MjE1MDI0NzA3MDZdLCBbLTMuNzYwMzcyOTUyMTA0MTc0NCwgNTEuNzMwODU3NDYwMzE2M10sIFstMy43OTgyMjY1MjUwNzMxMDcsIDUxLjUxODI2NTM5ODAzNjg2XSwgWy00LjAxNTU4MDUxMzIyMzk2OCwgNTEuNDU1NDQ5MDg0OTU3Mzk0XSwgWy00LjE5NDgwMjc5NzYwNzczNSwgNTEuNjA1ODU2NDAyMDUwNDVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl84ODg3MDM3MWNhYWE0NWY5YTg4ZjM0Y2RiMjdlODU2OS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl82N2VhMGJiY2U2MjI0NTg4YjU4MDI2MDQ2OWQxN2I5MiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY3ODY4MTk2NDczMjI5MDYsIDU0LjM5NzM1NDMzOTI0MTI3XSwgWy0yLjQ2ODUyOTk4NDM2MDc0MzMsIDU0LjQ1NDMzODUxOTU4OTE4Nl0sIFstMi4yOTM3MzkxMjc5MjkzNjk3LCA1NC4zMDkyNTYzNzgzNTk2MV0sIFstMi4zMjg2NzIwNjE4MDg1MTI2LCA1NC4xMDY2MTk0NzE4MDEwOV0sIFstMi41MzkxMTk2ODg0Nzg4NDcsIDU0LjA0OTAxNzk5MTA4MTg3NV0sIFstMi43MTQzMzk3MjU3NjM0MDQsIDU0LjE5NDY3MDczODM5NjgxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNjdlYTBiYmNlNjIyNDU4OGI1ODAyNjA0NjlkMTdiOTIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNzE5ODM5ZGU1NjYxNGU2Y2IzZWJkYWE0NjlmNmQ2NTEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi43NzUyNjcxNDg5NTY3NDgsIDU0Ljc1NTk5Mzg0MjA4MDQ1XSwgWy0yLjU2NDk3ODUyMDc0NzExNCwgNTQuODEyNDc0OTkzODI5ODZdLCBbLTIuNDMzMzc3NjYwMjI3ODU2LCA1NC42NTU4OTkyNjI2NjA2NV0sIFstMi40Njg1Mjk5ODQzNjA3NDMzLCA1NC40NTQzMzg1MTk1ODkxODZdLCBbLTIuNjc4NjgxOTY0NzMyMjkwNiwgNTQuMzk3MzU0MzM5MjQxMjddLCBbLTIuODUzMzc4NjkzNDE4NjUxNiwgNTQuNTQyNTQ3NTMyOTUzNjA2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNzE5ODM5ZGU1NjYxNGU2Y2IzZWJkYWE0NjlmNmQ2NTEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fN2IyNGQwNWYwMGUxNDZlOGFhM2VkY2NiZjQ4MjljY2YgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy43MzE5NjQ2NDkyNTY4MDI2LCA1MC43MjUwMjIxNjcwMzE0N10sIFstMy41MTQwODA3NTgxMDkzNTU2LCA1MC43ODkxMDAyMTg5NzA1M10sIFstMy4zMzM3Njg0NDEyMzA4MDQsIDUwLjYzODA2Nzk3MTM3NTMxXSwgWy0zLjM3MDkxMjEzNzAwMzQ4NywgNTAuNDIyNDMzOTgxMDQxNjFdLCBbLTMuNTg5MDQ2NTc3NTIxNzY0NCwgNTAuMzU3NzI2MzgzMDkyMjldLCBbLTMuNzY5Nzg3ODM3NDc1OTIzNywgNTAuNTA5MjgxOTE4MzgwOTM1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fN2IyNGQwNWYwMGUxNDZlOGFhM2VkY2NiZjQ4MjljY2Yuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNTJkNGU1NzFmNTdmNGIxZGExNzQ3ZGQ5YjI5MTZiYTIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42NzI1MTAxNjUzMzY1ODU3LCA1NS41NTYyNDU3MzgwOTgzNTVdLCBbLTIuODgzOTM0NjIyODMwMzk1NywgNTUuNTAwNTY1ODQ1NDk2NjI0XSwgWy0zLjAxNzIzMTcwMjc2MTMzNDIsIDU1LjY1OTk5NDU0NDgwNzldLCBbLTIuOTM4NDU2MjI4NTk0OTQxLCA1NS44NzU0NDU1MDkzODg3OF0sIFstMi43MjY0NzI4NjU2ODcxMzgsIDU1LjkzMDcxMTEzNjQwOTYwNl0sIFstMi41OTM4MjM0MzM3NjU0MjgsIDU1Ljc3MDk0MjQ4NjE0NjEyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNTJkNGU1NzFmNTdmNGIxZGExNzQ3ZGQ5YjI5MTZiYTIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fODM2ZDIwMTQzMzgwNGZmMmExMGY5ZTY0NzhmN2Q3NDMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC44NDc3NDgwMjI3Mzc5MDcsIDUzLjYxMTkxMzk0MzkyODg3XSwgWy00LjYzMjIwNTc3NDMxMDEyMywgNTMuNjcwOTM2MzM5NzU4NzldLCBbLTQuNDU2MTMxNjgxMDY1MDk0LCA1My41MjMyMTQ3OTc0MDY3N10sIFstNC40OTUyMDE0NDE0NDEzNCwgNTMuMzE1ODk4NTcxMDgzNTRdLCBbLTQuNzExMDY4MDU4Mjc1ODY5LCA1My4yNTYyNDM5MzA0NzI4NTZdLCBbLTQuODg3NTQxNDE4NDg1NzgsIDUzLjQwNDUzNzY5NTYyMDE2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fODM2ZDIwMTQzMzgwNGZmMmExMGY5ZTY0NzhmN2Q3NDMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZjExN2M0ZDZkMzcyNGU3N2IwMDhlMTg1MDZjMzFiMWQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNy4wODM4NjQ2MzYxNjYyMTksIDUzLjU5MTg3NDA4OTMzNzQ5XSwgWy03LjMwNDAzNDQ1MjY5MTU4NywgNTMuNTMxODk3NTUwOTc4MV0sIFstNy40NDc5OTA2MzExODE1MDgsIDUzLjY5MTU2MjcyMzY1NTEyXSwgWy03LjM3MTE0NTA4NjQ1MjgxNywgNTMuOTExNjI2MjE2NzIxOF0sIFstNy4xNTAzMjg1NTcxMjg1OSwgNTMuOTcxMjA3NTc4MTI3NjNdLCBbLTcuMDA3MDA0MjM3Mzg1NzYxLCA1My44MTExMjMzMDA5NzcxN11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2YxMTdjNGQ2ZDM3MjRlNzdiMDA4ZTE4NTA2YzMxYjFkLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzYxZmRlYWVlYzA2NjQ4MmVhNGIyZmViNmEzOTA4OTJkID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuOTg4NTM4NjA1Nzc2MTQ4NSwgNTAuNDQ0NjIwMTk3MjQ2Nzg1XSwgWy0zLjc2OTc4NzgzNzQ3NTkyMzcsIDUwLjUwOTI4MTkxODM4MDkzNV0sIFstMy41ODkwNDY1Nzc1MjE3NjQ0LCA1MC4zNTc3MjYzODMwOTIyOV0sIFstMy42MjY2MzEwNzI3MjYxNDM1LCA1MC4xNDA5ODkxNTU0NDQ0MV0sIFstMy44NDU2MzE1MjA0MzIxMzQzLCA1MC4wNzU2OTY3MjQzODM3NTRdLCBbLTQuMDI2Nzk4ODUxNjc0MzQ2LCA1MC4yMjc3NzE3OTE3MDAyNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzYxZmRlYWVlYzA2NjQ4MmVhNGIyZmViNmEzOTA4OTJkLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2I1OWMzYzY3NjU4MTQyNzJiYmFlMjJkNmVkMDQzYTViID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTcuMzEwODk4MTQ1NzY1NjYxLCA1Ni45NjA1NjE5NTQ1MzgzXSwgWy03LjUzNTY3Nzc1MjQ2NDgxMywgNTYuOTA0NTI1NTk2MDk2Nl0sIFstNy42ODEzMjI3MDg4NTYwMzMsIDU3LjA3Mzc3MzE3NTMzMjldLCBbLTcuNjAxNTM5MjIyNjQ3MDAzLCA1Ny4yOTkzODM4MjQ0NDI1Nl0sIFstNy4zNzYxNzkzNzgxMjMzMjEsIDU3LjM1NDkzOTA0NDE2MjAxXSwgWy03LjIzMTE4Mjc1ODUyMTk2NSwgNTcuMTg1MzY3NDQ3MzgwNzldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9iNTljM2M2NzY1ODE0MjcyYmJhZTIyZDZlZDA0M2E1Yi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl84OWRlNmY1YTg4ZTc0OTY0YjdiOGY2ZDdlMzVkMzMxNiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjUzMzEwNzM1ODM0NDc1MDMsIDU5LjE3NTY4ODM1MDYwMjU1XSwgWy0xLjc0NDc0MzQ0MDUzMzU0NCwgNTkuMTI0OTgyODYxMDQ0NThdLCBbLTEuODc2Njg5NzQyODAzNDkyOCwgNTkuMjkxOTg4NzYzNTI5MTc2XSwgWy0xLjc5NjM0NTg1MDkyMTI2NDIsIDU5LjUwOTkzMzc0MzA4ODE3XSwgWy0xLjU4NDIzNjQyNDc5ODEzNCwgNTkuNTYwMTUyMzE0MzM1MDZdLCBbLTEuNDUyOTQzMzIxNjY4NDc1NywgNTkuMzkyOTE1MTE1OTExNDg1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fODlkZTZmNWE4OGU3NDk2NGI3YjhmNmQ3ZTM1ZDMzMTYuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fY2FhODU0MTI1MGY3NDhhM2EwNGQ5MTU1NTQwZWFiMTcgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41MDQ3Mzk1MDk1OTM1NDIsIDUzLjA4MjUwNzQzNTc5NzM1XSwgWy0yLjI5Mjc5NDkwMTk1MjE5NTQsIDUzLjE0MTkwMzczMTY5NTkwNV0sIFstMi4xMTYwNjUzNjAwMDk0MzEsIDUyLjk5NDkyMjQ1MDE5NzY5XSwgWy0yLjE1MDg0Mzc3MzQ2NzI5MSwgNTIuNzg3OTkxMTYzMDI2Mjg0XSwgWy0yLjM2MzA1ODkyNDIwMzc3NDUsIDUyLjcyNzk3NDIxMzA5ODA2NV0sIFstMi41NDAyMjYxNzUyODM5ODU2LCA1Mi44NzU1MDkwODI3MjkwNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2NhYTg1NDEyNTBmNzQ4YTNhMDRkOTE1NTU0MGVhYjE3LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzllMGUyNGMxOTJlMTQ0NzM5NTBhNTE1OTExYTlkYWE5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQuOTI5NjQxMTk4MTU1NDE4NSwgNTAuOTg3MDgxMDE0MzgwNDhdLCBbLTQuNzA5OTkyMTA5Mzc1MzE0LCA1MS4wNTEwMTI2MzQ4NzcxMDRdLCBbLTQuNTI5OTQxNTUxNDE2MTQ0LCA1MC44OTk1Mjg0MDkyMTU5MV0sIFstNC41NjkxMzE0MTkxNzc3MzUsIDUwLjY4MzU3ODg4NzU3NjQ5NV0sIFstNC43ODkwNTc2NzM3Nzc3MjgsIDUwLjYxOTAxMDk3MzQxOTE2XSwgWy00Ljk2OTUxNzg3MzczMTM0LCA1MC43NzEwMjg0OTc1OTg0NDRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl85ZTBlMjRjMTkyZTE0NDczOTUwYTUxNTkxMWE5ZGFhOS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl80YTkzMzhiOWYzYzY0MDExODc2Zjc2NTNhNDQ3NTVkMSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy02LjgyOTc5Nzc1MTc4OTk3NSwgNTguMzExNTIyMDMxNTUwOTRdLCBbLTcuMDU0ODg4MTUxNDc1OTI5LCA1OC4yNTc0NjU5MjU0NTg0Ml0sIFstNy4xOTk3MTEzNDg5NjgyMTA1LCA1OC40Mjk1MjUzNTg0MDk5NzVdLCBbLTcuMTE4Nzg5MTQ4NjkzNDg0LCA1OC42NTU5MjI4Nzk1OTM2MDRdLCBbLTYuODkzMTUzNDEzMTgxODQ5NSwgNTguNzA5NDY5MjY4OTI5MjldLCBbLTYuNzQ4OTg0NTIzNTMxODk5LCA1OC41MzcxMzA0ODQzMjgzMV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzRhOTMzOGI5ZjNjNjQwMTE4NzZmNzY1M2E0NDc1NWQxLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2MxNGNmOThhOWE3MzQ3MDZiODJiNjJhYzViYjhlMWE1ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjQ1NzAxNDgwNDA3NTQ4LCA1My40MzU1NTY3MzYwNzI2NTVdLCBbLTIuNDM0MDM2MTE4OTkyNzc3NywgNTMuNDk0MzMyNTQzMjcxMjRdLCBbLTIuMjU3Nzk5MzkzNTEyOTEyNCwgNTMuMzQ3Nzg1NTMwMDQ0MjM0XSwgWy0yLjI5Mjc5NDkwMTk1MjE5NTQsIDUzLjE0MTkwMzczMTY5NTkwNV0sIFstMi41MDQ3Mzk1MDk1OTM1NDIsIDUzLjA4MjUwNzQzNTc5NzM1XSwgWy0yLjY4MTQxMDM5NjA0OTM0NywgNTMuMjI5NjEzMzQ0Mjg1MDVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9jMTRjZjk4YTlhNzM0NzA2YjgyYjYyYWM1YmI4ZTFhNS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl85YTNiZGRjMDQ3MDY0NzIwODNmOTM1OWUzOGUyYjg3NyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzAuNzYyNDI1MTA2NjMyMzQxMSwgNTMuNjEwODc4MzM4ODg3NDJdLCBbMC45NjYyMzU5NzkzNTA1Nzk2LCA1My42Njg0MzkxMTg3NTUxMl0sIFsxLjE0MTAwMzYyNzI1MjMzLCA1My41MjQzNzk3MzAxNjM3NjZdLCBbMS4xMTI0MzU2NTUxOTQ2OTQxLCA1My4zMjIyMTUyODkxMjcwNjVdLCBbMC45MDg0MTAyMzAwODgzNjg1LCA1My4yNjQwNTMyNTY0NDY1OV0sIFswLjczMzE2NjA5MTE0ODI1NzUsIDUzLjQwODY1Njg1NzI4OTldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl85YTNiZGRjMDQ3MDY0NzIwODNmOTM1OWUzOGUyYjg3Ny5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9hYWUwOTFhNTgwYjk0MTE5OGFlMDMwZTdhOGVmMDFhNiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjA3MjA5MTQxMjI3ODI1NjgsIDU2LjAzNTkzNzM3MzkyNjU0NF0sIFstMy4yODUxNTAxOTA1NzgzNjk4LCA1NS45ODA2NDE2NzgyMzM2NV0sIFstMy40MTk3NjY2OTQ3MDUsIDU2LjE0MTg2MTc2MzIzMTQ5Nl0sIFstMy4zNDA2NzM4OTE5MDA2MzQsIDU2LjM1ODcwOTAyOTc5NDM4XSwgWy0zLjEyNzA2MDA4OTQ2OTYwNzUsIDU2LjQxMzU3NjUxNjA2MDI4XSwgWy0yLjk5MzA5MzYxODI4MDgzMSwgNTYuMjUyMDI3Mzg5MDQyOTJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9hYWUwOTFhNTgwYjk0MTE5OGFlMDMwZTdhOGVmMDFhNi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9iZTIyYzJlZWQyMzU0NzBmYWU4NGIxNDc4MTMzOGQzNSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00LjgxMDM2NjEyMjQ5NjQyMywgNTEuNjMwOTMyNTAzNDkxMzhdLCBbLTQuNTkxODUxNzgyNjc1Njg2LCA1MS42OTM2NDMxMjA1ODU4MjZdLCBbLTQuNDEyNzQ2NDE2OTc5ODkyLCA1MS41NDMwOTI1OTMzNDg2MDRdLCBbLTQuNDUxNzQ3MzY0NTYwMSwgNTEuMzI5Mjg3NzM5MDA0OV0sIFstNC42NzA1NDkyMDc3NjUyNzcsIDUxLjI2NTk0MTUyODIxODQyXSwgWy00Ljg1MDA2MzU2MTQyMzczNiwgNTEuNDE3MDM1NDY4MDM0MjFdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9iZTIyYzJlZWQyMzU0NzBmYWU4NGIxNDc4MTMzOGQzNS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9iYzNiMzYxMGQ0OTA0OTUyYWU5MjhjNWFkOWY0YjExMCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0wLjMyNzk5OTEzMjkzMjYwNTksIDUyLjkxMTY3Nzc4NzQ0Mzk3XSwgWy0wLjEyMDQ4OTI0NDY1MDU2NjU4LCA1Mi45NzA4MTQ5NDcwNDc3MTRdLCBbMC4wNTU3Njc4OTM5MjU1MjIxMTYsIDUyLjgyNTAwNDY5Mzg3MDI1XSwgWzAuMDI0OTgwNjY3NzM5MjUxMDg1LCA1Mi42MTk1MTY0Mzk3NTQ2OF0sIFstMC4xODI3NTQ0MDQzNTE3MzI0MywgNTIuNTU5NzcwMTcyMDQwNTVdLCBbLTAuMzU5NDc4MjY1MDIwODM3OTYsIDUyLjcwNjEyMTEyOTk1OTU2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fYmMzYjM2MTBkNDkwNDk1MmFlOTI4YzVhZDlmNGIxMTAuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fN2I2MWRlZTJmNjRkNDNjNGE2MjRiZWNlODExMGRmMmIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC44MjgyMjg5MjI3NDc5NDYsIDU0LjM5ODY5MTY2MzkyMDE1NF0sIFstNS4wNDQwNTEzMTUwMDQyMzcsIDU0LjM0MDY5MjM3Nzk5ODA3NF0sIFstNS4xODI1NDY2OTUxNzgzNzYsIDU0LjQ5OTc0ODI2MTQ1MTUxNV0sIFstNS4xMDQ1NzY1Mzk4Nzg4MTMsIDU0LjcxNzE4OTMwOTkwMjQ0XSwgWy00Ljg4ODE0NzAyMjU2ODMzMSwgNTQuNzc0Nzg3NzQ5OTU0MzJdLCBbLTQuNzUwMjk0NTU2Mzk5NzQyNSwgNTQuNjE1MzQ4NTMzOTYwMjldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl83YjYxZGVlMmY2NGQ0M2M0YTYyNGJlY2U4MTEwZGYyYi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl85MTVhYjhhYjBhZWQ0NDcyYjhjYzc5ODExNDQyMGY5ZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjgzNDc1NzMyMDI3NDg5NywgNTYuNjg0NzAwMTQ2ODE4MzddLCBbLTMuMDQ3ODM5NTA4MzQyNjMyNiwgNTYuNjMwMjkwMzQ4ODY0MzddLCBbLTMuMTgyMTMwMjc5MTU2MTk2LCA1Ni43OTI4OTA0NDcxMzYxNV0sIFstMy4xMDI2ODY0Njg2MTE0ODc3LCA1Ny4wMTAyMTI0NzgwNDUwNTVdLCBbLTIuODg5MDY0NzQ5NjM3MTEsIDU3LjA2NDE4MDcxNzgyNjkzXSwgWy0yLjc1NTQyNTc4ODczMzQ1ODMsIDU2LjkwMTI3MDkwOTExNjQ1NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzkxNWFiOGFiMGFlZDQ0NzJiOGNjNzk4MTE0NDIwZjlmLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2I5MGVjY2Y5NDQ1NDRjNDM4YjAxNDJiMDliMjI3OWM2ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMC4zODMwMDI3NjkwMTY3MzQ2MywgNTMuNjk3NTU0MDkxNDI4NjE0XSwgWzAuNTg3NTc4ODM3MDA1NzM2NSwgNTMuNzU1MDUzMzcxMzE2MDddLCBbMC43NjI0MjUxMDY2MzIzNDExLCA1My42MTA4NzgzMzg4ODc0Ml0sIFswLjczMzE2NjA5MTE0ODI1NzUsIDUzLjQwODY1Njg1NzI4OTldLCBbMC41MjgzNjY1NDM3MDk2MzQxLCA1My4zNTA1NTQ1MzY0NDM5MTZdLCBbMC4zNTMwNDgyNzcyNzE3NzU1LCA1My40OTUyNzY2ODY1Nzc4MjRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9iOTBlY2NmOTQ0NTQ0YzQzOGIwMTQyYjA5YjIyNzljNi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xZDIxNTliY2UyY2E0ZjUyYmJjYWM5ODU1MzE0MjFjYyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjIzNzI5NDM4MDY2OTMzNCwgNTcuMTczODU2ODY0NTk3NDc1XSwgWy0zLjQ1MTk5ODIwODQzODUxOCwgNTcuMTE5ODczMzA1MTc0NDE2XSwgWy0zLjU4NzU2OTgxODI3OTgwMDYsIDU3LjI4NDI1NzIyNzg3OTU1XSwgWy0zLjUwNzc4MzA4MzQ5OTUyLCA1Ny41MDI5MjQ4MjUzNzEyMV0sIFstMy4yOTI1NDQ2NTA4NDg4NTIsIDU3LjU1NjQ1MjY4Njc1NzAxXSwgWy0zLjE1NzYyNjkyNTA5ODU0OTQsIDU3LjM5MTc3MTA4OTYwNDddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8xZDIxNTliY2UyY2E0ZjUyYmJjYWM5ODU1MzE0MjFjYy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl81NGQ1YjM1N2MwY2U0M2ZmOTM1ZTRhNDU3ZTM5ZDEzYyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0wLjQ2ODAxMzk3MDg3MjYzNywgNTAuNjc1NDUzNjQ4NTQzNjE2XSwgWy0wLjI1Njc3MzcxNzE0NzMxMDczLCA1MC43Mzg3MTIxNDczMDg1OV0sIFstMC4wNzc1MzM4MjUwMDA5MjMwNywgNTAuNTg5NzYwMDQzODI2NjldLCBbLTAuMTA5MDYzNDYzOTE4OTk0OTgsIDUwLjM3NzA0MTMwNzY1NTYxXSwgWy0wLjMyMDQ5MzI1OTY3NDk2MDksIDUwLjMxMzE3MTAzNjc5OTAwNV0sIFstMC41MDAyMDUxMjk0MjgyNjAxLCA1MC40NjI2MzA4ODI0Mjk4OF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzU0ZDViMzU3YzBjZTQzZmY5MzVlNGE0NTdlMzlkMTNjLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2Y4YTQyNzI2ZTQ3MjQ3N2Y4M2U3ZjI2MTU2MmE0YmFjID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTEuODcwNDk2MTg3NTU3NzUxLCA1My4yNjAxOTc3Njc3NzY0OV0sIFstMS42NjAxNTA4NjMzNTQ0Mzk3LCA1My4zMTkwOTY2NTAyMDUwNF0sIFstMS40ODM4Mjg0OTQ5NTUzNjI2LCA1My4xNzI3OTMyODI4NTQ0MTRdLCBbLTEuNTE3NDA2NzgwNDI2Nzc3NywgNTIuOTY3MDM4MTMxNzA5MDldLCBbLTEuNzI4MDEzMjk0NjY2NzA2NCwgNTIuOTA3NTIyNTUxNDAzOTVdLCBbLTEuOTA0NzgxNDI0ODAzMjU0OSwgNTMuMDU0Mzc4NzE5MTYwNTc0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZjhhNDI3MjZlNDcyNDc3ZjgzZTdmMjYxNTYyYTRiYWMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNmZlYWVmMDFhMGZkNDhhZmE3ZWQ1NWU1NzhjMzE3NGEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMC43MTI1NDQzMDE2NTc5NTkyLCA1Mi45OTg1MzM0NjU4MzQ5N10sIFstMC41MDQzMDE4NTMzOTk4OTE0LCA1My4wNTc2MTIwMzMxMDEwNl0sIFstMC4zMjc5OTkxMzI5MzI2MDU5LCA1Mi45MTE2Nzc3ODc0NDM5N10sIFstMC4zNTk0NzgyNjUwMjA4Mzc5NiwgNTIuNzA2MTIxMTI5OTU5NTZdLCBbLTAuNTY3OTU0ODcwMjkxNjkyMSwgNTIuNjQ2NDMxNTU2MzM0NTc2XSwgWy0wLjc0NDcxOTM1OTM5OTI4NTYsIDUyLjc5MjkwOTUxODc0ODQyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNmZlYWVmMDFhMGZkNDhhZmE3ZWQ1NWU1NzhjMzE3NGEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNDdlYzRhZmE2NTFlNDdmMzkwZjIwYmRjZmNmNDBlNGYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC44OTAxMzM4NDExMjE0MywgNTYuOTU3ODQxNDk1MzI4OTFdLCBbLTUuMTA5MDMzNTE1MTA0MzA4LCA1Ni45MDI4NjcyODgzNzA2NF0sIFstNS4yNDg3Njg5Njk5MzE4NzYsIDU3LjA2ODg4NTUxODc1NjY5NF0sIFstNS4xNjg5NTA0MzU5NTYyMjYsIDU3LjI5MDE5MjQ5MTI3MTA2NF0sIFstNC45NDk0OTMzNDI2MDkxNzEsIDU3LjM0NDcwMzgxNjM2NzM0XSwgWy00LjgxMDQxMTY0MjAzOTQ2MywgNTcuMTc4MzczNTk0MDc2NjhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl80N2VjNGFmYTY1MWU0N2YzOTBmMjBiZGNmY2Y0MGU0Zi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xZDQ3OTQ5NDc5ZDk0ZGQ2YmE0NWJmMzhhMGVjNzg0OCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy03LjgxMzQzNzU0Mjk3NzM1OTUsIDU3Ljg2NzQ0OTMwNzc1OTQ3XSwgWy04LjA0MDMzMDk3MDM4OTk3NCwgNTcuODEyMzc4NzAyMTcyNDRdLCBbLTguMTg3MzMxOTEzMTExMzkxLCA1Ny45ODQ2NDg5MDk5MTg0N10sIFstOC4xMDY3ODkyNDE1NjM5MTMsIDU4LjIxMjI5MDQxMDQwMzU3NV0sIFstNy44NzkzMzIzNTQ3MjQwNywgNTguMjY2ODUzOTcxOTMxOTY1XSwgWy03LjczMjk4MDk4ODgyOTg2NCwgNTguMDk0Mjg1NzgyNDg4MTM2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMWQ0Nzk0OTQ3OWQ5NGRkNmJhNDViZjM4YTBlYzc4NDguc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fOGQ2Y2ZjMmM4NjdmNGI3MzkyOWM4MGZiZWU5NDQzOWYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy41NjE3MzQzMjgxMzk5MTcsIDUzLjk2MzU0NzYwNDI2NjY3XSwgWy0zLjM0OTEyMjgzNDIwMTU2MSwgNTQuMDIxNTczODA1MzgxODNdLCBbLTMuMTczNTgyNTQ0NDA1NzQzLCA1My44NzUyMzUxNTE4MTk0OTZdLCBbLTMuMjEwMjM2NjcwODI4MTkwNCwgNTMuNjcwMzAwMjA4MTY2OTY0XSwgWy0zLjQyMzE1NDAyMjg2NzQ0MSwgNTMuNjExNjUwMTMxMzExMjQ0XSwgWy0zLjU5OTExMjMzODIzNzg2MTYsIDUzLjc1ODU1ODg0ODM0NTA5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fOGQ2Y2ZjMmM4NjdmNGI3MzkyOWM4MGZiZWU5NDQzOWYuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYjQzOGVlOTQ1MmVlNDcxNDhmOTg1YjY3MTQ5NmQ4MTEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy44NDU2MzE1MjA0MzIxMzQzLCA1MC4wNzU2OTY3MjQzODM3NTRdLCBbLTMuNjI2NjMxMDcyNzI2MTQzNSwgNTAuMTQwOTg5MTU1NDQ0NDFdLCBbLTMuNDQ1NDA3MDAzMTM4NDA5LCA0OS45ODkwNzIyMDk1MDc4MjVdLCBbLTMuNDgyNzU1MDk3Nzk1MzIyLCA0OS43NzEzNTAxMTYyOTU0OF0sIFstMy43MDE5OTUzNTY3MTYyNjMsIDQ5LjcwNTQyODI0MTMyMjM1XSwgWy0zLjg4MzY0ODc4ODcwNjY0MTgsIDQ5Ljg1Nzg1NzQxOTE0MjY4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fYjQzOGVlOTQ1MmVlNDcxNDhmOTg1YjY3MTQ5NmQ4MTEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNWE1NzdmMzYyNDQ4NDMwNzhmMGE1MzFmNmNiN2YyYTIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC41NzM1Njc0ODA5NjUzMDU1LCA1Mi44OTkwNTI3NTg1NzEzODZdLCBbLTQuMzU3Mzg1MjkwOTgwOTIsIDUyLjk1OTMzOTg5Mjc3ODU3XSwgWy00LjE4MDE4ODc3NDc2Njc5MDUsIDUyLjgxMDczMzM4Njg5MDYyXSwgWy00LjIxODc2ODE2NzcwNTA0MSwgNTIuNjAxMjc4MzA0MjMyMTc0XSwgWy00LjQzNTI1NzAwNjQ1NjcwMiwgNTIuNTQwMzU4NTg5NzI3MzNdLCBbLTQuNjEyODYwNzI3NDgyNDkyLCA1Mi42ODk1MjYzOTE4NDQxOF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzVhNTc3ZjM2MjQ0ODQzMDc4ZjBhNTMxZjZjYjdmMmEyLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2IxOGJkOGZiMjg2MDQ4MDViMzBiODU2YzcyMDU1NTU2ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTYuODc3ODUwODUwNTg3MjIxLCA1Ni40NTcwNzkyNTIwMTczN10sIFstNy4xMDEwNzA3ODcyNDg4NjksIDU2LjQwMDU5NjY5MDIzMTg0XSwgWy03LjI0NTU0NzcwMzY3OTc2NywgNTYuNTY3OTM4MDQ4MTY1NjE1XSwgWy03LjE2NjE1NjQwMDk4MTE4MiwgNTYuNzkyMTAxNjk3OTc4MjU0XSwgWy02Ljk0MjM0ODk1NzgxMzI5OCwgNTYuODQ4MTE4Njc5MTQ5MDhdLCBbLTYuNzk4NTE5ODgxOTQ0NTQ1LCA1Ni42ODA0NDAyNjQ3OTE5NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2IxOGJkOGZiMjg2MDQ4MDViMzBiODU2YzcyMDU1NTU2LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2EyMmNiZDg0ZGY2ZjQ5NWI4MDk0ZmM3YWEyZTQ2ZmQyID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQuNDA5NzM4NjUzMjMxODQyLCA1OC4yODMwODY3MjY3MTMxN10sIFstNC42Mjg3MTg4NDQ3MjU5ODgsIDU4LjIzMDAxNzM5MTAyMDM3NV0sIFstNC43Njc3MDIxNzU0NjI2MzksIDU4LjM5ODc0MzQwNDYzMTc2Nl0sIFstNC42ODcwNDcwMTI5MDgyODQsIDU4LjYyMDgxMTA4NDk3ODc1NF0sIFstNC40Njc1NDI5Mjc2MjQzNDcsIDU4LjY3MzM5MDU0Mjc0OTc0XSwgWy00LjMyOTIxNzE1NjkyMzAwMiwgNTguNTA0Mzk0NjgyODk1MDI1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fYTIyY2JkODRkZjZmNDk1YjgwOTRmYzdhYTJlNDZmZDIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMmFhNzRlYTRiMmQyNDc2YWJmMTA4NmQxNGU3YWUyMDMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi45NzAxODUwMzY3Nzg2NzczLCA1MS41NTYwODExMjE1ODYxNV0sIFstMi43NTQ5NjMxODQwMDMyODIsIDUxLjYxODQyNTQwODczNDRdLCBbLTIuNTc1OTU0MTQ2MDk2OTMyLCA1MS40Njg5ODM4NzE4NTI5M10sIFstMi42MTE3MzA5NTQ1OTE3NjU3LCA1MS4yNTY2NjQyMDMyMjA0OV0sIFstMi44MjcyMDUxMDU5MDExMDksIDUxLjE5MzY5NDQ2NTcxMjQ1NF0sIFstMy4wMDY2NTEyMzM3MDUxMDgzLCA1MS4zNDM2Njk1NDgxNDIwNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzJhYTc0ZWE0YjJkMjQ3NmFiZjEwODZkMTRlN2FlMjAzLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzRiYzRlMDBkNGU0ZTRjNDM4MzhjZWUxY2QzYzU1Mjc4ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuNDc1NjE2MDcwMjIyNzg2NywgNTYuNTIwOTkwMzEzMDc5MThdLCBbLTMuNjkwMzAxMzU5MTQ2ODgxNCwgNTYuNDY2MDk4ODU5MTE3MDRdLCBbLTMuODI2MjE0MTI5MDY5NjIzLCA1Ni42MjkxMTczMjgxMjkxN10sIFstMy43NDY3ODg4OTk4MjAzNjYyLCA1Ni44NDczNDcyNzQxNTk5MTVdLCBbLTMuNTMxNTUzMTAxNTMxOTczNywgNTYuOTAxNzk2MzcwMDcxMjZdLCBbLTMuMzk2MjkyNDk3NDA4NTgyNiwgNTYuNzM4NDYwMzQxOTMzODhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl80YmM0ZTAwZDRlNGU0YzQzODM4Y2VlMWNkM2M1NTI3OC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl81MDhmYzE5MzJiM2Y0OTMzOTBjZTc5MGY4MzgzZmEwNyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjQ5ODYyODc5MDA5ODEwNzUsIDUwLjU3MDY1OTQ0ODE3ODk5XSwgWy0xLjI4NDk3OTA1NTk5NzY0NjYsIDUwLjYzNDM5NDgwMTk3NDU4XSwgWy0xLjEwNTExNTUyODEzNTU1ODUsIDUwLjQ4NDYzNDMwNDI2MjY0XSwgWy0xLjEzODQ0MzAxODI3ODgxNTksIDUwLjI3MDYyNzQ3ODUyNjExNl0sIFstMS4zNTIyOTk0ODU1MjMzNzMyLCA1MC4yMDYyNzQ4NjA4OTU3OF0sIFstMS41MzI2MjI5MzExMDIyNDMsIDUwLjM1NjU0NTkyMzA2NjUwNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzUwOGZjMTkzMmIzZjQ5MzM5MGNlNzkwZjgzODNmYTA3LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzE2MDQ5MTVjMjUyZjRkNjRhYjllYTc4ZWJiNWRkMzA4ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuMzgyOTIxMjUzMzE5Nzk3NiwgNTUuODI2MTc2ODczODk5NDNdLCBbLTIuNTkzODIzNDMzNzY1NDI4LCA1NS43NzA5NDI0ODYxNDYxMl0sIFstMi43MjY0NzI4NjU2ODcxMzgsIDU1LjkzMDcxMTEzNjQwOTYwNl0sIFstMi42NDc1NzE1NTE1OTU1NDk0LCA1Ni4xNDYwNDc2ODcwMjg5Nl0sIFstMi40MzYxMTkyNDQ0OTI3NjM1LCA1Ni4yMDA4NjM0OTU0MDQ0XSwgWy0yLjMwNDExNzg4Njk2NjkxMzQsIDU2LjA0MDc2MzczNjY3OTU0NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzE2MDQ5MTVjMjUyZjRkNjRhYjllYTc4ZWJiNWRkMzA4LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzFmZTk5ZTBkZDFiYTRhMWJiMTM2ZDdkNjFjYWJmNzJjID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuMjUzOTkxMDcwMjkxMTc0NywgNTIuMjc2NTg1MjQ1MDk5NDVdLCBbLTMuMDM5MzAxNTMzMjA3MDMxNCwgNTIuMzM3Njc3MjAwOTExNTg1XSwgWy0yLjg2MTI2NjE5NTAxMzc0NTIsIDUyLjE4OTA0MjUyMDEyODA2XSwgWy0yLjg5NzQ5MTIwNTgwNjU3OCwgNTEuOTc4NzY5NzUxMTUzODg0XSwgWy0zLjExMjQ1MTQ4NDE3NTc3MDIsIDUxLjkxNzA1MTQ0NzUxMjMxNF0sIFstMy4yOTA5MTcwNDkzNTA4MDcsIDUyLjA2NjIzMjA0NTM3ODI1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMWZlOTllMGRkMWJhNGExYmIxMzZkN2Q2MWNhYmY3MmMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMTBiYzU4MDA2NmJmNGVmZjhkYmNhOTNhOTg0ZDA0YjUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNS42NjI0OTM4NjQ5Nzk0NTEsIDU1LjM2MTYxOTI0ODcwNzIxXSwgWy01Ljg4MTU0ODMyMDc3MzczNiwgNTUuMzA0MzQ5NDgxMDkxNjNdLCBbLTYuMDIyNjMyNjI2MTY4MTk1LCA1NS40NjcxNDE2MTYzNDgzXSwgWy01Ljk0NDAxNTg4MjgwMDM2MiwgNTUuNjg3NTY4MjE4MzIxODVdLCBbLTUuNzI0MzYzMjQxNjg4ODc4LCA1NS43NDQ0MDc5NDI1OTYxMV0sIFstNS41ODM5MjUyMDAwMzI1NzMsIDU1LjU4MTI1MzcxMTU1NjYzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMTBiYzU4MDA2NmJmNGVmZjhkYmNhOTNhOTg0ZDA0YjUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fM2FmNjhiODc5MjhhNGJiN2E2Y2E4ZWEyN2Y1OTIwYTkgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi45NjI0ODgyNjc4NDkyODgsIDU1LjI4NTc2ODc3NTY3MzU2XSwgWy0zLjE3NDQxNzk2MjM0MDA4NTQsIDU1LjIyOTY0NDE3NjcyNTUxNV0sIFstMy4zMDgzNjIwNjYxMTI4MjYsIDU1LjM4ODcyNDA3NTgxMDAyNV0sIFstMy4yMjk3MjkwNDYxMjYwNjczLCA1NS42MDQyNzk4MTI4MjI5OV0sIFstMy4wMTcyMzE3MDI3NjEzMzQyLCA1NS42NTk5OTQ1NDQ4MDc5XSwgWy0yLjg4MzkzNDYyMjgzMDM5NTcsIDU1LjUwMDU2NTg0NTQ5NjYyNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzNhZjY4Yjg3OTI4YTRiYjdhNmNhOGVhMjdmNTkyMGE5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2UwMjc3YzllMWJmMDQzMGVhYTVjZDJjZDU4NThhYzBiID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTAuNDIyNzQ1NjY2OTIwNzUwMzMsIDUyLjI5Mjg5MDY0MDIyNTEzXSwgWy0wLjIxNDA0MzUzMjUxMTY5MDI4LCA1Mi4zNTMxOTExOTIyNDM3OF0sIFstMC4wMzY5MTAxMzE0ODYyMDcyNiwgNTIuMjA2NDMyNDUxODU4MzNdLCBbLTAuMDY4MDEyMzI0MzA3NzM0OTUsIDUxLjk5ODg0MDMxMDE4MDYxXSwgWy0wLjI3NjkzMTI3MDUxOTE3MzE2LCA1MS45Mzc5Mjg5NjMzNjAwNl0sIFstMC40NTQ1MzI0MjQ3NzI3MTEzLCA1Mi4wODUyMjAzNDc3MTQ2NzRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9lMDI3N2M5ZTFiZjA0MzBlYWE1Y2QyY2Q1ODU4YWMwYi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl82MThhNGZkNGM1MDQ0NmI2OWM0NTNjMmU3OGIxZTViMCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY1MDEyMTczNDg3NzUxMywgNTcuNzE2MDgxODc2MDY4MTRdLCBbLTIuODYzNzA5NTMyMzYwODM3NywgNTcuNjYzMDMwNTkzOTM4NF0sIFstMi45OTc5NzMxMjA4MjI4NjQ2LCA1Ny44MjgwMDA2MTAxNzkyOF0sIFstMi45MTc5OTQwMDE1MzIxMTQsIDU4LjA0NjMwMzQ5MzM4OTc2XSwgWy0yLjcwMzg4OTU0NDkzNjA1OSwgNTguMDk4ODkxMTUxMDI1MTM2XSwgWy0yLjU3MDI4MDE1MTkxNjExMzQsIDU3LjkzMzY0MTk0NjE1OTA0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNjE4YTRmZDRjNTA0NDZiNjljNDUzYzJlNzhiMWU1YjAuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMDVjYWM2OTU1YzYyNGEzNGIwODRjOWI4NDRlOTg3NjcgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi45OTc5NzMxMjA4MjI4NjQ2LCA1Ny44MjgwMDA2MTAxNzkyOF0sIFstMy4yMTI2NTMxNjMwMzU0MjY1LCA1Ny43NzQ5NDI3MjAxNzMxMV0sIFstMy4zNDc4NzMyMDcyODE0NSwgNTcuOTQwNjU0MDUyOTAzNDFdLCBbLTMuMjY3NzU3MzMwMTUzMjM2MywgNTguMTU5NzAzMTMwNTMyODJdLCBbLTMuMDUyNTU4ODg2MzA4NTg2LCA1OC4yMTIyOTIyNjcxNTI0ODVdLCBbLTIuOTE3OTk0MDAxNTMyMTE0LCA1OC4wNDYzMDM0OTMzODk3Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzA1Y2FjNjk1NWM2MjRhMzRiMDg0YzliODQ0ZTk4NzY3LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzE5NGMwYTA5YjdjYzQwZjViMTk0YjE5NThmMTVjNzE0ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTUuNzcxNzg0NTI2MjA5MzU5LCA1My45NDgxMzMyOTI0NzczN10sIFstNS45ODkzNzEyNjcyODQ0MTgsIDUzLjg4OTE4MjI4ODg4NTVdLCBbLTYuMTMwMTI0NDk0NTM0OTIzLCA1NC4wNDgxODI4ODY2OTE4XSwgWy02LjA1MjY1MjI1MDc3Nzk3OSwgNTQuMjY2NTM4MjE1NzgyMTddLCBbLTUuODM0NDM5MjcyMDg0NDcxLCA1NC4zMjUwOTM0MzAwODY5Nl0sIFstNS42OTQzMjQ2MzY1OTM4NDIsIDU0LjE2NTY5MTcwNDM3NDcxNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzE5NGMwYTA5YjdjYzQwZjViMTk0YjE5NThmMTVjNzE0LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzU2NmQxNTMzYzZlOTQwZDFhY2M2OGI2NGNhMzlhZWQwID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTcuODgyNDEyNjczNjIxNDgsIDU0LjE3NDQyNjMwMjMwMDQ2XSwgWy04LjEwNTA5OTc1ODUzODMsIDU0LjExNDcyODQ5NDIzMjI5XSwgWy04LjI1MTI2OTU2OTI3Njc1OCwgNTQuMjc3MDk1NzAwMzI1ODFdLCBbLTguMTc0MTIwNDIwMzkzMDUyLCA1NC40OTk1NzIxMjYxMTExNF0sIFstNy45NTA3ODk5NzY0NjU0NTU1LCA1NC41NTg4NTQ2MjIyODE5MzVdLCBbLTcuODA1MjUxOTM2NzQ3Njg4LCA1NC4zOTYwNzg3NDI4MjY5NDRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl81NjZkMTUzM2M2ZTk0MGQxYWNjNjhiNjRjYTM5YWVkMC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9iYmU5MWJlMjI0MGY0ZmFmODI2N2QxODg0YjlhYzk4NiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00LjkwODA3ODc3MDk4NDgyLCA0OS45NjU2ODg2OTE5NjAwNTRdLCBbLTQuNjg3MDUxMzMzNjU3NDk5LCA1MC4wMzE0ODI2NzAxMTY0XSwgWy00LjUwNTU0NTcxNjQxODg2MzUsIDQ5Ljg3ODczMDg2ODMxNjFdLCBbLTQuNTQ0NjU0OTQ3NTYxNzc3LCA0OS42NTk2Njk2NzAyNTMyNF0sIFstNC43NjU5Mzg2ODY4MTQ3MTMsIDQ5LjU5MzI0MDYwNzU3NjYzXSwgWy00Ljk0Nzg1NzkxMDQzMzY4OCwgNDkuNzQ2NTA3MzIyMzUwNjFdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9iYmU5MWJlMjI0MGY0ZmFmODI2N2QxODg0YjlhYzk4Ni5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lMzU3YzBkNGRlZWM0ZDcwOGUzNWZlYjdiNzIwODYxNCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01LjMyOTc2MDQ0MDYxNDI5MSwgNTEuMDc0ODMzNjQzOTQzNzRdLCBbLTUuMTA5NTYxNTE5MDk2OTQzNCwgNTEuMTM4NzE1MDc0Mzc5MTZdLCBbLTQuOTI5NjQxMTk4MTU1NDE4NSwgNTAuOTg3MDgxMDE0MzgwNDhdLCBbLTQuOTY5NTE3ODczNzMxMzQsIDUwLjc3MTAyODQ5NzU5ODQ0NF0sIFstNS4xOTAwMDI3ODM4NTI3NjYsIDUwLjcwNjUwODUyMTA1MTI3Nl0sIFstNS4zNzAzMjU5NzkxNzk3OTcsIDUwLjg1ODY3OTIzOTM0MzI4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZTM1N2MwZDRkZWVjNGQ3MDhlMzVmZWI3YjcyMDg2MTQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNjExOTY4NGIzNjA4NDliMDk3MDdiYzFmMzU4N2E3ZTYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNS4wMDg4NzEzNjA5NDg0MzIsIDU3LjczMzIyOTE2OTIwOTM0XSwgWy01LjIyODg3ODI2NTM3MTQzODUsIDU3LjY3OTE5MDI0ODI3MTg0XSwgWy01LjM2OTE3NDUwNTA1ODQwNiwgNTcuODQ3MzQ3NDEwNTMwNjY2XSwgWy01LjI4ODgwNzE2NDk1MzE3MSwgNTguMDY5ODM1MzI1MDczNTFdLCBbLTUuMDY4MjU4MjcxODY3NzM1LCA1OC4xMjMzOTIzNDEzOTU1XSwgWy00LjkyODYxODA1MDEzMTYxLCA1Ny45NTQ5NDU4ODI5MTI5OV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzYxMTk2ODRiMzYwODQ5YjA5NzA3YmMxZjM1ODdhN2U2LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzcxNGE4Nzg1ZjIxZTRhNDNhNmE1N2RkNDMwNzQ4ZDQ3ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQuNDY3NTQyOTI3NjI0MzQ3LCA1OC42NzMzOTA1NDI3NDk3NF0sIFstNC42ODcwNDcwMTI5MDgyODQsIDU4LjYyMDgxMTA4NDk3ODc1NF0sIFstNC44MjYyOTU1MzQ3OTI4MjIsIDU4Ljc5MDU3MTA2ODg4MzE0Nl0sIFstNC43NDUzODA4MDc3MDA5MzksIDU5LjAxMzE3MTAwNTk2MzgwNV0sIFstNC41MjUzNjA5NDA0MDMxMzIsIDU5LjA2NTI1MTMxNTE3NDc3XSwgWy00LjM4Njc3MDc5Mjg3ODc1NywgNTguODk1MjMzMzExOTkxMjVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl83MTRhODc4NWYyMWU0YTQzYTZhNTdkZDQzMDc0OGQ0Ny5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9hZDA5NGQ0MjBjNTg0MjJhOTIzOTQzOGMzYThmZTFkZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01LjIzOTcyMDI0Njk0MTc0NiwgNTMuNzAwNzk5MzY0NDc3MTddLCBbLTUuMDIzNjQxNzE1NTcyMzY0NSwgNTMuNzU5NzU3MDcyNDkyNjZdLCBbLTQuODQ3NzQ4MDIyNzM3OTA3LCA1My42MTE5MTM5NDM5Mjg4N10sIFstNC44ODc1NDE0MTg0ODU3OCwgNTMuNDA0NTM3Njk1NjIwMTZdLCBbLTUuMTAzOTUzMTgwMzk5NDc1NSwgNTMuMzQ0OTQ1ODE0MzcxNTM1XSwgWy01LjI4MDIzOTE1NTYyODY2NDUsIDUzLjQ5MzM2NDI5ODk5Mzg1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fYWQwOTRkNDIwYzU4NDIyYTkyMzk0MzhjM2E4ZmUxZGYuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNWI0YTE1OGYzMTcyNGJjZGJiYThjNjY5ZjAxZDM5ZmMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNy41MDY0ODU5MzYwMTk0NTgsIDU4LjE0ODg0ODQ5MDk0NzFdLCBbLTcuNzMyOTgwOTg4ODI5ODY0LCA1OC4wOTQyODU3ODI0ODgxMzZdLCBbLTcuODc5MzMyMzU0NzI0MDcsIDU4LjI2Njg1Mzk3MTkzMTk2NV0sIFstNy43OTg1MzYzNzUwOTg1NzksIDU4LjQ5NDI3NTA5OTkxNjgzXSwgWy03LjU3MTQ4NjgyMTYyMzIxMDUsIDU4LjU0ODMyNjQ5MDI4OTI1Nl0sIFstNy40MjU3ODcwOTQyNDE1NTgsIDU4LjM3NTQ3MDc0ODU4NjY2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNWI0YTE1OGYzMTcyNGJjZGJiYThjNjY5ZjAxZDM5ZmMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMjYxZWZhNjNmZWIzNDk1MWE3OGI2ZDM5MTRhOWUxNzMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC45ODM1OTcxMzM0Mjc4NjQsIDUzLjk2NjA0NTI2MDY3ODIxXSwgWy00Ljc2ODM4NzkxNzAyOTk5MywgNTQuMDI0NDM1ODE5Nzg0XSwgWy00LjU5Mjg4OTQwNTI3OTg5MSwgNTMuODc3MTcwMDUzMjQ4MzRdLCBbLTQuNjMyMjA1Nzc0MzEwMTIzLCA1My42NzA5MzYzMzk3NTg3OV0sIFstNC44NDc3NDgwMjI3Mzc5MDcsIDUzLjYxMTkxMzk0MzkyODg3XSwgWy01LjAyMzY0MTcxNTU3MjM2NDUsIDUzLjc1OTc1NzA3MjQ5MjY2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMjYxZWZhNjNmZWIzNDk1MWE3OGI2ZDM5MTRhOWUxNzMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZTI3ZDYxYTk1MThlNDgwMWI1MDQ4M2VkYzhmYWM1ZWEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41OTY0NTM1NzAwMzM5MjgsIDU3LjMzNDg1MTA1MTc2MzQ4XSwgWy0yLjgwOTUxNzYzMDg2OTc2MTQsIDU3LjI4MTM0NTEyNTAwNjY4XSwgWy0yLjk0MzQ3MjUyMjk3MjEyNzcsIDU3LjQ0NTI4ODY4Nzk3NDg5XSwgWy0yLjg2MzcwOTUzMjM2MDgzNzcsIDU3LjY2MzAzMDU5MzkzODRdLCBbLTIuNjUwMTIxNzM0ODc3NTEzLCA1Ny43MTYwODE4NzYwNjgxNF0sIFstMi41MTY4MTk5OTQ4NDA2MjIyLCA1Ny41NTE4NDgyOTc1MzQ0ODRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9lMjdkNjFhOTUxOGU0ODAxYjUwNDgzZWRjOGZhYzVlYS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl83ZmYwZDExYTZlNjY0NWNkOWYwNDY4YmRlN2RjNDg0ZSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzAuMjM4MjM2NjYyODQ2ODc1NTksIDU0LjA0MzA4MTkwNDIyMDY3XSwgWzAuNDQyNTgxMDc4NDgxMzA1NDYsIDU0LjA5OTk3ODU1ODQ4MDQzXSwgWzAuNjE3MDE4MjYxNzM3ODc2OCwgNTMuOTU2MjQwMjI4OTAyNTddLCBbMC41ODc1Nzg4MzcwMDU3MzY1LCA1My43NTUwNTMzNzEzMTYwN10sIFswLjM4MzAwMjc2OTAxNjczNDYzLCA1My42OTc1NTQwOTE0Mjg2MTRdLCBbMC4yMDgwOTY1ODQzOTA3ODUzMiwgNTMuODQxODQ0Mjc5MDAzMTldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl83ZmYwZDExYTZlNjY0NWNkOWYwNDY4YmRlN2RjNDg0ZS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9mMjRjYjg0Y2M2YTQ0M2EyYjY3Njk5ZWJjNDdkOTZkMCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0wLjcxMTAyNzkzNzk4MTIyNTQsIDYwLjM2MDI3NTA0NTI4MzY4Nl0sIFstMC45MjEwOTM2MTM3MTI5NTEzLCA2MC4zMTE0NzcyNjczOTg1NDRdLCBbLTEuMDUxMzcyNTgwNDk3MzUzMywgNjAuNDgwMDgwNTQ5ODMyMTQ1XSwgWy0wLjk3MDkzNDU4NjUzNjc0ODEsIDYwLjY5NzY3NjMwNDg5OTkyXSwgWy0wLjc2MDQyOTk3MjYzMzk5NzcsIDYwLjc0NTk2OTIwMDA5MDldLCBbLTAuNjMwODAxMjMxMzM2MDUxNiwgNjAuNTc3MTczNDIyNDIyMzNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9mMjRjYjg0Y2M2YTQ0M2EyYjY3Njk5ZWJjNDdkOTZkMC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl81OWEyNzJkYjY5OWY0M2U2OGY2NTZhNjVjMjUxN2ZlZSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjQyNTcxNDY0OTE3MTc2MiwgNTQuNzM2ODYwMDYzNTA3ODldLCBbLTEuMjE4NzY5MDYzNzk4MzgyNiwgNTQuNzkyODg4NDQ2ODc0NjhdLCBbLTEuMDQ0NzM2OTQ4ODIwNDE4MywgNTQuNjQ5MTY0MjE2ODExNDg1XSwgWy0xLjA3NzIwNjI5ODIzNjgyOTgsIDU0LjQ0ODg0Mzc5MTIxMjY5NV0sIFstMS4yODQ0Mjc3MzQyODY5NzY1LCA1NC4zOTIyMDY1MDU3ODQ1ODZdLCBbLTEuNDU4OTA1MDMyNDQ2MTE2NCwgNTQuNTM2NDk4NjAzNzU4NDddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl81OWEyNzJkYjY5OWY0M2U2OGY2NTZhNjVjMjUxN2ZlZS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl81NDUyYWU5ZDZmOTA0NWI4YmIxMTc0ZGI4MTYyZGQ1YyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00LjUyOTk0MTU1MTQxNjE0NCwgNTAuODk5NTI4NDA5MjE1OTFdLCBbLTQuMzEwODYxNzQwMDU4MjQxLCA1MC45NjM1MDk1Mjc1NTU1NDRdLCBbLTQuMTMwNzAyNDc0NTU2MTgsIDUwLjgxMjE3NTU1MjgwMTY5XSwgWy00LjE2OTIwNzc4MjkwMDYzOSwgNTAuNTk2MzMwMTIzODAxMzddLCBbLTQuMzg4NTU1OTA4MTU1NTI0LCA1MC41MzE3MTQ5NjI2OTA1MV0sIFstNC41NjkxMzE0MTkxNzc3MzUsIDUwLjY4MzU3ODg4NzU3NjQ5NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzU0NTJhZTlkNmY5MDQ1YjhiYjExNzRkYjgxNjJkZDVjLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzBiNDFkMjY4OGYwOTRiZTc4Y2UwNjkyNmUzYjdkOGI5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTcuMjE2Nzk5Mzc3NDk1MDE3LCA1NC4zNTI0NzQ5OTI5ODcwNF0sIFstNy40MzgyNTYyMjkwODA0NCwgNTQuMjkzMjk4OTE2MzExNzZdLCBbLTcuNTgyODUyODAxNzYzNDE2LCA1NC40NTUzMDg1NjA4NTMzNTRdLCBbLTcuNTA1MzU2NDAzNTQ3NTEzLCA1NC42NzY4OTY0ODQ5MDI5NTRdLCBbLTcuMjgzMjY1ODUyOTI0NjE2LCA1NC43MzU2NTcxMzg4MDg2OV0sIFstNy4xMzkzMDUyNTI0MzE1NTQsIDU0LjU3MzI0Nzk4ODMzMzg3NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzBiNDFkMjY4OGYwOTRiZTc4Y2UwNjkyNmUzYjdkOGI5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzc1M2MyMDUzMDZkMjRmYWNhMTQzNDA3MTcwZDk3ODMyID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMC4zNDgxMDAxMTg4NTQyNzI0LCA1Mi4xMjAxNTk5NjU5NDMxN10sIFswLjU1NTI4NjA1NDg3MDU1OCwgNTIuMTgwNTY5Mzg3MjkwM10sIFswLjczMjI1MDQ2Mzg3NzI5OTYsIDUyLjAzNDA3Mjk3NDc2MzA5XSwgWzAuNzAyNTA0NzA4MzQ1MTM4NiwgNTEuODI2NjQwMzg0MzIzMjhdLCBbMC40OTUxMTk3NTQ3NTIyNjY3LCA1MS43NjU2MjQxMTQ0MzQ0Nl0sIFswLjMxNzY3ODMxMzkyNDk2NTYsIDUxLjkxMjY0NzA2MTE2NzU5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNzUzYzIwNTMwNmQyNGZhY2ExNDM0MDcxNzBkOTc4MzIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fN2Q2NmNhODIzMGM3NDdiYjg2N2E2ZTE5ZGE0NDBiMDIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC4yOTYxNDc4MjcwMTQ4MTcsIDUyLjE4MDE4MDIwOTgwMTg3XSwgWy00LjA3OTM2MTM5MDM1MTYwNywgNTIuMjQxNzMyNDI2Mzk3NDhdLCBbLTMuOTAxMDgyNzcyMjcyMjQzNiwgNTIuMDkyMjc3OTM3NzQyNDddLCBbLTMuOTM5MTc2NzUyODU3NDQ2LCA1MS44ODA3MjE1MDI0NzA3MDZdLCBbLTQuMTU2MjUxNjEyODk5NjUxLCA1MS44MTg1MzcwMjk2MDY1NV0sIFstNC4zMzQ5NDUwNDI0NzUxNTksIDUxLjk2ODU0MTAxODUyNTA0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fN2Q2NmNhODIzMGM3NDdiYjg2N2E2ZTE5ZGE0NDBiMDIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYzRjNDcwYTYzYTkwNDgzODhmNjNlYzNiNzk4MDE1YTAgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi44NTMzNzg2OTM0MTg2NjksIDU0LjU0MjU0NzUzMjk1MzYxXSwgWy0zLjA2NDE1NTIzMTc1MzE0MiwgNTQuNDg1NjMwNjY3MDYyMDNdLCBbLTMuMTk3NDAwMDMxNDMxMzUwNCwgNTQuNjQyNTQ5MjQyMjk5NDhdLCBbLTMuMTE5MjI0MjkxNDYyMzE4NywgNTQuODU2NzU0NzMyOTEwNjhdLCBbLTIuOTA3ODY4MjYzNzAxNTM2LCA1NC45MTMyODAwMzg0ODAzMl0sIFstMi43NzUyNjcxNDg5NTY3NDgsIDU0Ljc1NTk5Mzg0MjA4MDQ1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fYzRjNDcwYTYzYTkwNDgzODhmNjNlYzNiNzk4MDE1YTAuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZWU1Y2RjYWIyNDk5NDMxZWE4YTllNzMzY2ZiNDQ3NDcgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNS45NzE5Mzg4OTkxODk5ODM2LCA1Ny4yOTMyMTcwNzI1NzQxNV0sIFstNi4xOTM5MTIwNjAyOTkxODYsIDU3LjIzODE5NTM4MjIyNV0sIFstNi4zMzY0Mzk0OTk3NTYzOTcsIDU3LjQwNjUxODAyMDI5NzI3XSwgWy02LjI1NjMzOTgzNDI2OTAxNSwgNTcuNjMwMTcyMTYyOTgzMDFdLCBbLTYuMDMzODA1NzEyODgwMjgyLCA1Ny42ODQ3MTQ5MTA4NTE2OV0sIFstNS44OTE5MzE2NDEwMzA4OTEsIDU3LjUxNjA4NTA2MjExNTUzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZWU1Y2RjYWIyNDk5NDMxZWE4YTllNzMzY2ZiNDQ3NDcuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMGJmZWIzMmQ3NDZlNDFjODkyNmM2MDU0MGJkYjUzZTQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMS42MTg5Njk4NjY0MDIzOTQ2LCA1Ny4zODQ2NzEwNDE1MzU3Nl0sIFstMS44MjkyNDYzOTcwMDAzMDQ2LCA1Ny4zMzE2NDgxMDY1MTAwOF0sIFstMS45NjA2MDk5MjY0ODMwNSwgNTcuNDk0NDIzMzIwMjk2OTk1XSwgWy0xLjg4MTA0NTc1MDY2MDY2MDQsIDU3LjcxMDUwNzkwMTEyOTI5XSwgWy0xLjY3MDI1ODYxNDc0MjQzMTYsIDU3Ljc2MzA4MjI0MzY5OTI2XSwgWy0xLjUzOTU0NTU1ODMxMjU2MTIsIDU3LjYwMDAyMjk0MTQ0NDM0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMGJmZWIzMmQ3NDZlNDFjODkyNmM2MDU0MGJkYjUzZTQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fM2QzMTE1MmVlNGQxNDk3OTljZDc3N2NlZjIxYWYwMTcgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMS4xODYwOTQ3ODgwMjY2NDQxLCA1NC45OTIxMzkyMzEwNzMxMV0sIFstMC45ODAxMTE0NjA2NjkyNDg1LCA1NS4wNDc2Mjg3Mzc0Mzk5Ml0sIFstMC44MDY1MjY1MTI0NjczMTI0LCA1NC45MDQ0NzM3NjMyMDczM10sIFstMC44Mzg0Nzg3OTI1NjQ0NjA4LCA1NC43MDUyNjAxMDgxMTI3OTZdLCBbLTEuMDQ0NzM2OTQ4ODIwNDE4MywgNTQuNjQ5MTY0MjE2ODExNDg1XSwgWy0xLjIxODc2OTA2Mzc5ODM4MjYsIDU0Ljc5Mjg4ODQ0Njg3NDY4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fM2QzMTE1MmVlNGQxNDk3OTljZDc3N2NlZjIxYWYwMTcuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fOGU2ZDQ0NDE4ZmM1NGYwNmJhMDIzZDBmYjE3NDMzZjkgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC4yOTk5NjUxNjQ0NDcwNTEsIDU1LjMyMzI3NDc3MzIwMDY0XSwgWy00LjUxNTUyODkzNzA4NTQzNSwgNTUuMjY2NTgzMjk1MzI2MjhdLCBbLTQuNjUzMDY4NzA4OTg1NjU3LCA1NS40Mjc0OTgwMTAxNzU1XSwgWy00LjU3NDM5NjU1NTQ3MDU4LCA1NS42NDU0NjIwODA1NzY2MTRdLCBbLTQuMzU4MjQ5MTk1NTU5MDUyLCA1NS43MDE3MzM3ODMzNTE4N10sIFstNC4yMjEzNTcyMDk4NTE2MDcsIDU1LjU0MDQ2MzcxMDA3ODIzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fOGU2ZDQ0NDE4ZmM1NGYwNmJhMDIzZDBmYjE3NDMzZjkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNDBmNWJkNTc2MDQ5NGM3YTliZmEyZTFjYTBkNTM0MWIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stOC4wMTkxMzA4NzYzMzMyMDQsIDU0Ljk0NTIwODI0NzU5MzNdLCBbLTguMjQzMDk3NzU0MDMxMTIsIDU0Ljg4NjM1MTM4NjIzODYxXSwgWy04LjM4OTg1OTg1NTM5ODUyOCwgNTUuMDUxMDc0NjQwNTU0NTNdLCBbLTguMzEyMDE5MjIzMTYzNTA1LCA1NS4yNzUwNDUzOTkyMzIyMV0sIFstOC4wODc0MjMwNzc1MTI2MTgsIDU1LjMzMzQ2NjI4MDg2MjAxXSwgWy03Ljk0MTI5NjYyNjA2MzA1NSwgNTUuMTY4MzU1MTM2OTI3NjRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl80MGY1YmQ1NzYwNDk0YzdhOWJmYTJlMWNhMGQ1MzQxYi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl82YWZkMWYxNWM4MjE0ZDcxOTJjYTdhNTlmN2E3YmMxMSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjAwMTM3Mzk4NTAxNDk3NzcsIDYwLjA5NDMwNDA2MDg2MjQzXSwgWy0xLjIxMjEzNjAwOTU4MjU1MzcsIDYwLjA0NTAzMjk2Nzk0ODMxXSwgWy0xLjM0MzA2NjU1MjM2ODU4ODcsIDYwLjIxMzQzNDY4OTYwMjM4XSwgWy0xLjI2MjU4MjQ2ODcxMzc0NTUsIDYwLjQzMTMxMTI5MTcxNTAzXSwgWy0xLjA1MTM3MjU4MDQ5NzM1MzMsIDYwLjQ4MDA4MDU0OTgzMjE0NV0sIFstMC45MjEwOTM2MTM3MTI5NTEzLCA2MC4zMTE0NzcyNjczOTg1NDRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl82YWZkMWYxNWM4MjE0ZDcxOTJjYTdhNTlmN2E3YmMxMS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9mNjA3ODhkOWI0OTQ0ZWMwOTA4YmE2YzJkYTk5YWZlMSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01LjU5MTM0OTgzNTY3MDc3NywgNTAuNzk0MjA3ODk0NzkzNDY2XSwgWy01LjM3MDMyNTk3OTE3OTc5NywgNTAuODU4Njc5MjM5MzQzMjhdLCBbLTUuMTkwMDAyNzgzODUyNzY2LCA1MC43MDY1MDg1MjEwNTEyNzZdLCBbLTUuMjMwMzA0Njc4ODAyODIxLCA1MC40ODkzMzMwMjk2NDQzOF0sIFstNS40NTE2MTM1MzcyMTg0MTIsIDUwLjQyNDIyMTgxNDY5Njk5XSwgWy01LjYzMjMzNjQ0MjE2MzQyMywgNTAuNTc2OTI1NTU3MDg1NzZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9mNjA3ODhkOWI0OTQ0ZWMwOTA4YmE2YzJkYTk5YWZlMS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9kYmY1ODAxNTVjNzA0YTNiOTRlYjNlNWJmOTM2YTMzZSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01LjMxMTA2MTU5MzE1NjU5MywgNTAuMDUyODUxMjg1MTg5NThdLCBbLTUuMDg5NDc3NjMwNDM3NTQ4LCA1MC4xMTg2MDEyNTU4MTEzOF0sIFstNC45MDgwNzg3NzA5ODQ4MiwgNDkuOTY1Njg4NjkxOTYwMDU0XSwgWy00Ljk0Nzg1NzkxMDQzMzY4OCwgNDkuNzQ2NTA3MzIyMzUwNjFdLCBbLTUuMTY5NzA2OTU5MzA0MTQzLCA0OS42ODAxMTk4OTgwMzc1XSwgWy01LjM1MTUxMjc3MTgxNzcxMiwgNDkuODMzNTUwODAwMzM2OTQ0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZGJmNTgwMTU1YzcwNGEzYjk0ZWIzZTViZjkzNmEzM2Uuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZWNmY2RlYTJjYmRkNDNhNzkwMTAzNTg0OTdlMjAxN2EgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMS41MjU1ODk2NDI5MTQ3MzEzLCA1NC4xMzM1OTUwNTU1NTYzMzRdLCBbLTEuMzE3NDEwNjIzMzM5NzgwMiwgNTQuMTkwNzc3MjUwMjkwNDI0XSwgWy0xLjE0MjQ1NDYwMDMyMDgyMDIsIDU0LjA0NjAzMTQzNTYwMTA1XSwgWy0xLjE3NTIzMjA0NDU3ODgzMTgsIDUzLjg0MzU0MTY3MTU2OTkxNl0sIFstMS4zODM2Nzk1NzkwNzI4MTcsIDUzLjc4NTc0NzUxMjk3MTAxXSwgWy0xLjU1OTA4MjIzNDM2NzMyOSwgNTMuOTMxMDU1MDc1NTU1NjRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9lY2ZjZGVhMmNiZGQ0M2E3OTAxMDM1ODQ5N2UyMDE3YS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl81MjcwMzIzNDhiODM0ZGViOTMyMGMxNGQ5ZGNkMzE2MSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00Ljk0ODEzMzM4NjQ3MjI4NjUsIDU1LjE1MjcwNTAzNjQ3OThdLCBbLTUuMTY1MTYzNzY1MzcyMjcsIDU1LjA5NTUxNzAzNzE5MDY2XSwgWy01LjMwNDMyMjM2NjY1NTc4LCA1NS4yNTY4MDkyMjAyMjMyNl0sIFstNS4yMjU4MDM3ODU0MjgwNTYsIDU1LjQ3NTY1NTcxNjczMDRdLCBbLTUuMDA4MTc5MDIyMjA3NDIsIDU1LjUzMjQyMzY2MzQ0MzM4XSwgWy00Ljg2OTY2NjkwMDc0NjE1MiwgNTUuMzcwNzY3NzI0OTAxNjRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl81MjcwMzIzNDhiODM0ZGViOTMyMGMxNGQ5ZGNkMzE2MS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9mMTJjZWJjNTI3NzI0MDMzOGE1ZGE4ODY5MDY1YTMxYiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjE4MjM1MDI5MTM0NDA2OTMsIDUxLjM4MjA4MDI0NDEzNTZdLCBbLTEuOTY4NDUzNTE2MzI4Mzc5OCwgNTEuNDQ0NTI3Njk3MDgxOTddLCBbLTEuNzg5NDExNzQ1Nzc4MDA4NSwgNTEuMjk1MzY5OTkyMDIxODVdLCBbLTEuODIzODE5Mjk0NTg0MjEyMiwgNTEuMDgzMjM3NDA3MjA0Mzg2XSwgWy0yLjAzNzk1MDQ1OTU0ODcyNCwgNTEuMDIwMTY4NzU5MzU1MzY0XSwgWy0yLjIxNzQ0MDgyMzYxNzA2MywgNTEuMTY5ODUzNTc0ODA2MzNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9mMTJjZWJjNTI3NzI0MDMzOGE1ZGE4ODY5MDY1YTMxYi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wZGI3ZTI1ZWJkNTI0ZWFhYTkwMDY0YWQ5NzE1YzQzNSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy03LjY4MTMyMjcwODg1NjAzMywgNTcuMDczNzczMTc1MzMyOV0sIFstNy45MDcwNjMxODk4MDI0ODEsIDU3LjAxNzcxODkyMDg2NjQ4Nl0sIFstOC4wNTM2MDE0MjIxODYyMjQsIDU3LjE4Nzc1OTM0MjUzNTE0XSwgWy03Ljk3Mzc1MTM0OTE1NDYzMiwgNTcuNDE0MTc5MTIzNzM2OTFdLCBbLTcuNzQ3NDMwMTM2MzI3NTI4LCA1Ny40Njk3NDY2MzU2NjI1NV0sIFstNy42MDE1MzkyMjI2NDcwMDMsIDU3LjI5OTM4MzgyNDQ0MjU2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMGRiN2UyNWViZDUyNGVhYWE5MDA2NGFkOTcxNWM0MzUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNjQ3MWMyOWYxN2E2NGE1NGExZmYzNmM5MDg5N2IwY2IgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy4zNDc4NzMyMDcyODE0NSwgNTcuOTQwNjU0MDUyOTAzNDFdLCBbLTMuNTYzNjM5MDQxNjcwNTY4NiwgNTcuODg3NTkxMDIzNzEwNTU2XSwgWy0zLjY5OTgwOTcyMzgxNDU1MjQsIDU4LjA1NDA0ODU4MzA5OTU1XSwgWy0zLjYxOTU1Nzg2NjI0MzM2MDUsIDU4LjI3Mzg0NzIzNzQ4NjQzXSwgWy0zLjQwMzI3MjAzMTc4MDA0NCwgNTguMzI2NDM2MzI0MTgwOTA0XSwgWy0zLjI2Nzc1NzMzMDE1MzIzNjMsIDU4LjE1OTcwMzEzMDUzMjgyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNjQ3MWMyOWYxN2E2NGE1NGExZmYzNmM5MDg5N2IwY2Iuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZWM3ZTFkZWJiOTcxNDcxM2E1NmJhZTgzMmNhYzVmMmUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMC4zNzgyNDAyMDcwMzAwOTk1LCA1My44NzE0Mzc2MTI0NzkyMV0sIFstMC4xNzIxNzc0NTgzNDI2Mzk2MiwgNTMuOTI4ODExOTgzMjk5Nzc0XSwgWzAuMDAyNzY5Nzg5NjEzNTQ0NTMxNSwgNTMuNzg0NDA3MTM0NTgwNzRdLCBbLTAuMDI3ODg0NDUwMDQ4MjMxNzEyLCA1My41ODIwNzQ5MzE4MDY2Ml0sIFstMC4yMzQxODg2Mjk0NzE0NTk1NSwgNTMuNTI0MDkzOTQ3MDU1NjhdLCBbLTAuNDA5NTk4MzAxMjE4ODM1NTYsIDUzLjY2OTA1MTc0NTE1NDg3NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2VjN2UxZGViYjk3MTQ3MTNhNTZiYWU4MzJjYWM1ZjJlLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2ZlMmRiYjgwNTEzNDQ4NjhiMWY5Nzg4YTNmODQ0NDRjID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuMTk4Nzg3Nzc2Mzg1NTc2NSwgNTYuODQ2OTc1OTA3MzQ3MjZdLCBbLTIuNDEwMjI3MTc3NTYwODk5NywgNTYuNzkzMDQyMzI1MTgwMzE2XSwgWy0yLjU0Mjg5MjM0OTg1NDUyNywgNTYuOTU1MjIyNDgwNTY3OTNdLCBbLTIuNDYzNDY2NjI1MDIwNTgsIDU3LjE3MTY0MDYxOTcwMTc5XSwgWy0yLjI1MTQ5ODc5ODY1MTg3NjQsIDU3LjIyNTEzMzQ5NDY4MDUyXSwgWy0yLjExOTQ4NDUwMDk1MDM2NywgNTcuMDYyNjUxMzIyODYxMjVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9mZTJkYmI4MDUxMzQ0ODY4YjFmOTc4OGEzZjg0NDQ0Yy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xMjQ3NGYzNmE1NGI0Y2IyOTYyZDE5YjFkMTBiNTA1NCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy03LjEzNTQ4ODc1Njc4MDU0NSwgNTguMDMxNjM4ODYzMDAwNjFdLCBbLTcuMzYxMDEwMTQ5NDYwMTgwNSwgNTcuOTc3MDc4Njk2MzEyOF0sIFstNy41MDY0ODU5MzYwMTk0NTgsIDU4LjE0ODg0ODQ5MDk0NzFdLCBbLTcuNDI1Nzg3MDk0MjQxNTU4LCA1OC4zNzU0NzA3NDg1ODY2Nl0sIFstNy4xOTk3MTEzNDg5NjgyMTA1LCA1OC40Mjk1MjUzNTg0MDk5NzVdLCBbLTcuMDU0ODg4MTUxNDc1OTI5LCA1OC4yNTc0NjU5MjU0NTg0Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzEyNDc0ZjM2YTU0YjRjYjI5NjJkMTliMWQxMGI1MDU0LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2JjNGExZjU0MGRkYTRjM2I5ZmM0M2NjMjk4NTU0ZjNjID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuMjU3Nzk5MzkzNTEyOTEyNCwgNTMuMzQ3Nzg1NTMwMDQ0MjM0XSwgWy0yLjA0Njc4NTY3NzEwMzY5NDMsIDUzLjQwNjYyMzIwNTMxMDUxXSwgWy0xLjg3MDQ5NjE4NzU1Nzc1MSwgNTMuMjYwMTk3NzY3Nzc2NDldLCBbLTEuOTA0NzgxNDI0ODAzMjU0OSwgNTMuMDU0Mzc4NzE5MTYwNTc0XSwgWy0yLjExNjA2NTM2MDAwOTQzMSwgNTIuOTk0OTIyNDUwMTk3NjldLCBbLTIuMjkyNzk0OTAxOTUyMTk1NCwgNTMuMTQxOTAzNzMxNjk1OTA1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fYmM0YTFmNTQwZGRhNGMzYjlmYzQzY2MyOTg1NTRmM2Muc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZjJiM2RlNWYxZGYyNGQ3MTkyNjZhOGFhMTU5NjdmNzcgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC4xMTA3NzgwNjE5NTU3MzMsIDU4LjU1Njk3ODk2MTI2Mjk2XSwgWy00LjMyOTIxNzE1NjkyMzAwMiwgNTguNTA0Mzk0NjgyODk1MDI1XSwgWy00LjQ2NzU0MjkyNzYyNDM0NywgNTguNjczMzkwNTQyNzQ5NzRdLCBbLTQuMzg2NzcwNzkyODc4NzU3LCA1OC44OTUyMzMzMTE5OTEyNV0sIFstNC4xNjc4MTY4ODcyMTY2MTgsIDU4Ljk0NzMyMzg3OTAwMzQzNF0sIFstNC4wMzAxNDkxNDQwNjkyNzgsIDU4Ljc3ODA2Nzg0NzA1Mjc0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZjJiM2RlNWYxZGYyNGQ3MTkyNjZhOGFhMTU5NjdmNzcuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYmNlMGI4YTI4MDgwNGU2OTkyN2I4YTFkNGIzZmI0MjkgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNi4wODU0MDY2MTUzMTQ0MzcsIDU1Ljg1MTQ3OTYwMDIyODkzNF0sIFstNi4zMDYwNTk2OTA1MTA5MjUsIDU1Ljc5NDYwNTgxNDg2MDcxXSwgWy02LjQ0ODM5NTY3MDcwNjYwMywgNTUuOTU5Mjc5NzM5MDI1ODJdLCBbLTYuMzY5NDMwNjU4NDQ4ODE4LCA1Ni4xODExODA2MzY4NDIyNjRdLCBbLTYuMTQ4MTg0ODg5NTQ1ODk1LCA1Ni4yMzc2MDk0MTg4ODg4NDRdLCBbLTYuMDA2NDk2NDQ0NTYxNDIzLCA1Ni4wNzI1ODQ5MzUwOTk1OV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2JjZTBiOGEyODA4MDRlNjk5MjdiOGExZDRiM2ZiNDI5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzZmNTkzMDM5OTkxZjRiZTQ5NDZmMDljMTJjNzE4MmY0ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNzUzMDkzOTkzODc1MDgxNiwgNTIuODE1NTUwODM2ODEwMjk2XSwgWy0yLjU0MDIyNjE3NTI4Mzk4NTYsIDUyLjg3NTUwOTA4MjcyOTA0XSwgWy0yLjM2MzA1ODkyNDIwMzc3NDUsIDUyLjcyNzk3NDIxMzA5ODA2NV0sIFstMi4zOTgzMjUyNTIwOTc2MTgsIDUyLjUxOTkyOTc2MTc5NDAyNV0sIFstMi42MTE0NjM4MTA5OTk3MTUsIDUyLjQ1OTM0ODg4MDg1NDc2XSwgWy0yLjc4OTA2NjM1MjY0NjM1MiwgNTIuNjA3NDM0OTM0MDk1ODg1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNmY1OTMwMzk5OTFmNGJlNDk0NmYwOWMxMmM3MTgyZjQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNWM2YzczMGUwNjBkNDVkMjk4YTdkNzBiMjAyZWRmZGMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNy42NTAyNTk1MDE5NjA0OCwgNTQuODQwMDcxMzUxNTEwNjk0XSwgWy03Ljg3MzI5Mzc4OTI4NDIzNywgNTQuNzgxMjYyMDI4NTcyMDRdLCBbLTguMDE5MTMwODc2MzMzMjA0LCA1NC45NDUyMDgyNDc1OTMzXSwgWy03Ljk0MTI5NjYyNjA2MzA1NSwgNTUuMTY4MzU1MTM2OTI3NjRdLCBbLTcuNzE3NjM0MTk3MDM0NDEzLCA1NS4yMjY3MzM3MTEzMTAyNF0sIFstNy41NzI0MzM5NTg1NTUzNDcsIDU1LjA2MjM5ODg3MzcwMzM5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNWM2YzczMGUwNjBkNDVkMjk4YTdkNzBiMjAyZWRmZGMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMGY5NjE3NTYzZWFlNDdlOWIzZWFkY2FiZTFlMjE2ZTAgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNS40NTE2MTM1MzcyMTg0MTIsIDUwLjQyNDIyMTgxNDY5Njk5XSwgWy01LjIzMDMwNDY3ODgwMjgyMSwgNTAuNDg5MzMzMDI5NjQ0MzhdLCBbLTUuMDQ5NDM3OTMxNjI2ODQ0LCA1MC4zMzY3ODU4NzIxNzQ1NV0sIFstNS4wODk0Nzc2MzA0Mzc1NDgsIDUwLjExODYwMTI1NTgxMTM4XSwgWy01LjMxMTA2MTU5MzE1NjU5MywgNTAuMDUyODUxMjg1MTg5NThdLCBbLTUuNDkyMzMxNzE5NDU4MTI4LCA1MC4yMDU5MjQyMzYyNDU4MzVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8wZjk2MTc1NjNlYWU0N2U5YjNlYWRjYWJlMWUyMTZlMC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8zZDJiMTJmMmY1Y2M0ZjgzODgzZDEwZDZlOGI5ZmNjZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01Ljk5MzA1NzE2NzAxOTkxMywgNTAuODgyMTA5MzgxNDA1MTldLCBbLTUuNzcxNTE0Mjk3NDUwNDI4LCA1MC45NDY1MzEzOTU4MzYxM10sIFstNS41OTEzNDk4MzU2NzA3NzcsIDUwLjc5NDIwNzg5NDc5MzQ2Nl0sIFstNS42MzIzMzY0NDIxNjM0MjMsIDUwLjU3NjkyNTU1NzA4NTc2XSwgWy01Ljg1NDE3MzA2NTI2NTgyMTUsIDUwLjUxMTg2MTM3NzQ0NzczXSwgWy02LjAzNDczMDI0MTkyNDE0OCwgNTAuNjY0NzIxMzA1MTg2OTQ0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fM2QyYjEyZjJmNWNjNGY4Mzg4M2QxMGQ2ZThiOWZjY2Yuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNDUxNjI1ODJmZjIwNGI3ODk2MDVkZTRlODZmYzJiOWEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC40NzUwMTg2NDA3ODAyMDYsIDU2LjQ2Mzg4NjU2MDQ4NzcxNV0sIFstNC42OTIzMTMxNTk1NTA4NjksIDU2LjQwODQ4MjgyNDYxMzQ1XSwgWy00LjgzMDgwMjM0NzA2NDI3NSwgNTYuNTcyNjY2NTk2NzI1XSwgWy00Ljc1MTM0NDIzNTI2MzI3OCwgNTYuNzkyNTgwOTMwNjEzMDU2XSwgWy00LjUzMzQ4NjU2NDgxMTU1MiwgNTYuODQ3NTM2NDczNjIyNDddLCBbLTQuMzk1NjQ5NjQ5NDk4MzkyNSwgNTYuNjgzMDI4NDAwMTQyNjJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl80NTE2MjU4MmZmMjA0Yjc4OTYwNWRlNGU4NmZjMmI5YS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl82NTE4NDFiMTk1YjM0MTQ0YjAzY2ZmN2M1ZjZiZjQyYSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0wLjg1NjQ5OTgwOTY4Mzg1OTIsIDUzLjM0OTE3ODcwNTgwNzI4XSwgWy0wLjY0ODUwMDA1Mzc3NDg3MTksIDUzLjQwNzY0NjM5MTg2OTQ4NF0sIFstMC40NzI2Mjk4MTU4ODUyMTUzLCA1My4yNjIxMzc1NzQ5MTI5MDZdLCBbLTAuNTA0MzAxODUzMzk5ODkxNCwgNTMuMDU3NjEyMDMzMTAxMDZdLCBbLTAuNzEyNTQ0MzAxNjU3OTU5MiwgNTIuOTk4NTMzNDY1ODM0OTddLCBbLTAuODg4ODczMTcyMDkyMTY1NCwgNTMuMTQ0NTkxMjMxNjkzOTFdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl82NTE4NDFiMTk1YjM0MTQ0YjAzY2ZmN2M1ZjZiZjQyYS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl85N2I1MzI2NTAzYzU0MTIwOWY4NmE2NDY5OWM4MTdlMyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjgyNjIxNDEyOTA2OTYyMywgNTYuNjI5MTE3MzI4MTI5MTddLCBbLTQuMDQxOTY0MTc0OTc5NzE1LCA1Ni41NzQyMDMxOTAxOTMxNl0sIFstNC4xNzg4NDE5OTk5NTI0NzMsIDU2LjczNzk2MzkxMDUzMjE0NF0sIFstNC4wOTkzMTY0NDkwNDQ3OTk1LCA1Ni45NTY5NTc1MDI1Mzc0NV0sIFstMy44ODMwMTM5NDI4MjIzODQ3LCA1Ny4wMTE0MjQyNDQ1OTMxNjVdLCBbLTMuNzQ2Nzg4ODk5ODIwMzY2MiwgNTYuODQ3MzQ3Mjc0MTU5OTE1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fOTdiNTMyNjUwM2M1NDEyMDlmODZhNjQ2OTljODE3ZTMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMjYzNjg1NzEzOTNjNGU5NWJmOGEyMDA4YjE1NTM2NTggPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNi45ODM2ODk4NzgzODM4NSwgNTUuMDE1NDYwMTcwNjA0NTNdLCBbLTcuMjA1NDUxMzYxNTM2MzEyLCA1NC45NTcxNjk3NzgyNTA1OTVdLCBbLTcuMzQ5NzE2NTY2MTQwOTE0NSwgNTUuMTIwNzMzOTQyMTcyODhdLCBbLTcuMjcxNTc5NDE0Nzk2ODYzLCA1NS4zNDI5NzA3OTE2MTkyNDRdLCBbLTcuMDQ5MTk5NDk3NjcyMTE3NSwgNTUuNDAwODMwNjAxODI1NDldLCBbLTYuOTA1NTc0OTIxODk2OTgxNSwgNTUuMjM2ODg2ODMxMTM2NjhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8yNjM2ODU3MTM5M2M0ZTk1YmY4YTIwMDhiMTU1MzY1OC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl84YWQ0YTg2NTM4YTA0ZjQ1OGZjMDlkMjgyMjFlMTQyNSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjg3NDE0NzE1NjI3MTAyNjYsIDUxLjA5MDkzNzAzNjE3Njg4XSwgWy0zLjY1NjUyMzQ1MjkzOTI5MywgNTEuMTU0Mzg0NjAwNjY5MzJdLCBbLTMuNDc2NzAyNTA4NDE5Mjg5LCA1MS4wMDM3MzE0NTU4NjUzMV0sIFstMy41MTQwODA3NTgxMDkzNTU2LCA1MC43ODkxMDAyMTg5NzA1M10sIFstMy43MzE5NjQ2NDkyNTY4MDI2LCA1MC43MjUwMjIxNjcwMzE0N10sIFstMy45MTIyMTExNDU3ODE1ODE2LCA1MC44NzYyMDU0ODA0MDg5NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzhhZDRhODY1MzhhMDRmNDU4ZmMwOWQyODIyMWUxNDI1LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzI0NjY2ZTI3MzRiODQ3ZjU5Nzc1NWNlNTNmNmY1NDYxID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTEuMTk2NzUxNzc2MjAyMzMzOSwgNTIuNDY2MzY0OTQyNzExODM0XSwgWy0wLjk4NjU5NTY1NDQ3MjUwNjIsIDUyLjUyNjU1NDAyNTMwMzEyXSwgWy0wLjgwOTM3MTM5NjcwNjU1NjcsIDUyLjM3OTUzNDczNjI3MjUyXSwgWy0wLjg0MTg0NjczMTQ4OTg1MjIsIDUyLjE3MTc4NzM4NzY2NDMyNF0sIFstMS4wNTIyMzc1ODIxNDExMjYsIDUyLjExMDk4MzU2MzMzNzgyNV0sIFstMS4yMjk5MTk1MzA4MjA1MDUsIDUyLjI1ODU0MTY0MTQzNjI5NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzI0NjY2ZTI3MzRiODQ3ZjU5Nzc1NWNlNTNmNmY1NDYxLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzk2ZGUyOWFjZmFlNzQ4YmNiMDc3MWY1YzY5NTcyZTZjID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMS4yMDIwNTY1MDAzNjMwNywgNTIuNTY2MDc5MTEyMjExNzZdLCBbMS40MDY0ODYyNjcxMDk2ODE0LCA1Mi42MjU0NDQyMDUxMzA4OF0sIFsxLjU4MjM2OTY5MzQxNTM0MiwgNTIuNDgwMTM0NTM1MzMzNzI1XSwgWzEuNTU0MzA2NjMwNDU2NzE5NSwgNTIuMjc0OTMwODY0MTcwNDFdLCBbMS4zNDk2ODcyMjg2MTA5NTQ1LCA1Mi4yMTQ5NjQyNTkzNTEzMV0sIFsxLjE3MzMxOTIzMjA3ODIxMDYsIDUyLjM2MDgwMjY2NjY0MjE0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fOTZkZTI5YWNmYWU3NDhiY2IwNzcxZjVjNjk1NzJlNmMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNjc3NDVhYTcwZGZkNGJiMThmNTZmZjdhMjlhZjVkNDAgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy41NDM0Nzc1ODk2NDAzNzYzLCA1NC43NDMyMTkyNDQ1MTE5Ml0sIFstMy43NTYzNjU2Njg2NzUzODcsIDU0LjY4NjIwNzg5NzQ0NjQ1XSwgWy0zLjg5MTYwMTE0NTYxMTE0OTQsIDU0Ljg0NDU2MzYzMzMyNzg5NF0sIFstMy44MTMzMDMwNTI1NTE5Mzk2LCA1NS4wNjAyOTk2OTY3OTU2Nl0sIFstMy41OTk4Mjk5Njg3NTIxMzEsIDU1LjExNjkxMDIyNjM2MTE0XSwgWy0zLjQ2NTIzOTY2NTI5OTMyMzYsIDU0Ljk1ODE4Nzk4MTEyNTE5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNjc3NDVhYTcwZGZkNGJiMThmNTZmZjdhMjlhZjVkNDAuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNTRiNmUyMGI5MjNhNGUzOWE4OTk4ZThhMDkzZWI4N2QgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNS4xODI1NDY2OTUxNzgzNzYsIDU0LjQ5OTc0ODI2MTQ1MTUxNV0sIFstNS4zOTkzODEwMDM4NjU0NzIsIDU0LjQ0MTY5Nzg0NTIxNDgxXSwgWy01LjUzODg1NDc4NTk5MDU4NCwgNTQuNjAxNDkxNTUwODg5NjZdLCBbLTUuNDYwODUxMTI2MzUyNzMzNSwgNTQuODE5NzIxMDY4NjAxOTE1XSwgWy01LjI0MzQwNzQxOTUxNDU2NCwgNTQuODc3MzY1ODQxOTU1MDJdLCBbLTUuMTA0NTc2NTM5ODc4ODEzLCA1NC43MTcxODkzMDk5MDI0NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzU0YjZlMjBiOTIzYTRlMzlhODk5OGU4YTA5M2ViODdkLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2UzMDAxZmVlZGUwMDRlMjg4NTllZDVkNWNjOTA0N2FkID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuMDc3NTkzMjY3NzkyODcxNywgNTIuMDE0NTI4Mzc2MTE1MzNdLCBbLTEuODY0ODYzNTc0NTc5MTEyLCA1Mi4wNzU3ODY0OTc5NDQ2OV0sIFstMS42ODY3MjEwNDUzMTE0NTQ1LCA1MS45Mjc1NTY1MjE2MTk5MDZdLCBbLTEuNzIwODYxNTIzMTE2NzY4MywgNTEuNzE3NTMxNzcwNjcwNzhdLCBbLTEuOTMzODM1MDA2MDAyNjA4MiwgNTEuNjU1NjUzNDUzNTIyOTY2XSwgWy0yLjExMjQyNTM0NDY3ODU4NTcsIDUxLjgwNDQxOTg0MDU5NzUyNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2UzMDAxZmVlZGUwMDRlMjg4NTllZDVkNWNjOTA0N2FkLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzQ2NWM3Mjg4NDI1ODQwNjhhYmI2OThmODkwNDkxMmNkID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMS43MzA1MzgxMzM1NzEzMzQsIDUyLjEyOTIyMTcwMDM0MzYyXSwgWzEuOTM0MzQyODUyNTI0NDM0MiwgNTIuMTg5MjQxNzk0NDgyMTldLCBbMi4xMTA0MTkyMDgzODkyNjQzLCA1Mi4wNDM2NjIzMDU1OTk0MDVdLCBbMi4wODMxODA0MjU5OTU2OSwgNTEuODM3NTQyMzEzMDY2MzE1XSwgWzEuODc5MjAzMjUzODExNDAxNCwgNTEuNzc2OTIyODU1Nzc5MTldLCBbMS43MDI2MzU5ODcyMDEzMDM3LCA1MS45MjMwMjI1MzcwMDA2NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzQ2NWM3Mjg4NDI1ODQwNjhhYmI2OThmODkwNDkxMmNkLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzhlNjUyMjkwOWNhNzRiNGRhOTY0YzI3ZmIwZWRlYWZjID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNDMyMjUyMjcwODEyMTY3LCA1MS4xMDY4MzQwNDcxNzQzOF0sIFstMi4yMTc0NDA4MjM2MTcwNjMsIDUxLjE2OTg1MzU3NDgwNjMzXSwgWy0yLjAzNzk1MDQ1OTU0ODcyNCwgNTEuMDIwMTY4NzU5MzU1MzY0XSwgWy0yLjA3MjgyNjU1MzYxMzA3MDYsIDUwLjgwNjk0MDI3MDg3MjAyXSwgWy0yLjI4Nzg3MTk4MDE5ODMxNiwgNTAuNzQzMjk4MTYzMjQxMDNdLCBbLTIuNDY3ODA4NDY0OTM5NzUzLCA1MC44OTM1MDY3NzM4MTgyMV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzhlNjUyMjkwOWNhNzRiNGRhOTY0YzI3ZmIwZWRlYWZjLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzg5MjgyMGEwYWQxNDQzYTM5YzcxMmQxYTYyYWJhMGQwID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTUuNDI5MzcwNDYxMTY0NDYzLCA1OC4yMzkwNDk5MjE4NTcxN10sIFstNS42NTA5NTY0MjU0NjM5ODgsIDU4LjE4NTQ5MTcyMDIzMDIxXSwgWy01Ljc5MjQzNDU5NDUxMjEyLCA1OC4zNTU0Nzk1ODY0NTYyM10sIFstNS43MTE2NjkxNTI3MzA0MTUsIDU4LjU3OTMwMzc3NTU5NjE2Nl0sIFstNS40ODk1NDg0MDI3NzU5OTgsIDU4LjYzMjM2NTEwMTE0OTQ3XSwgWy01LjM0ODcyNzE2Nzk1NTM5NiwgNTguNDYyMTAxNjYwNjczOTJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl84OTI4MjBhMGFkMTQ0M2EzOWM3MTJkMWE2MmFiYTBkMC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl82ZWUzNmQ2YzU4Zjg0MGFlOTU0ZTA5NGNiMzRkMzk1ZSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0wLjQyMTQ0NjU1MDQ1Mzc4NjgsIDYwLjYyNTQ5ODI1MzY3MDQ0XSwgWy0wLjYzMDgwMTIzMTMzNjA1MTYsIDYwLjU3NzE3MzQyMjQyMjMzXSwgWy0wLjc2MDQyOTk3MjYzMzk5NzcsIDYwLjc0NTk2OTIwMDA5MDldLCBbLTAuNjgwMDU0MjMxMzMzMjcwNCwgNjAuOTYzMjc1NDYwNjc5M10sIFstMC40NzAyNjk0OTgyNzcxNjk2LCA2MS4wMTEwOTI0NTgyODI3M10sIFstMC4zNDEyODk0NjY0NzI4MjY0LCA2MC44NDIxMTMyMDA4OTYzNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzZlZTM2ZDZjNThmODQwYWU5NTRlMDk0Y2IzNGQzOTVlLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2M3ZDhkY2Q5ZGQ2MjRjMGZhMGU2M2MxMzA2MzYwNTcyID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuMDkzNzU0NzcwOTAxNjQ2NiwgNTYuMDk1NTUxODg3OTU5NzJdLCBbLTIuMzA0MTE3ODg2OTY2OTEzNCwgNTYuMDQwNzYzNzM2Njc5NTQ0XSwgWy0yLjQzNjExOTI0NDQ5Mjc2MzUsIDU2LjIwMDg2MzQ5NTQwNDRdLCBbLTIuMzU3MTA4NjQ3NDQ4NzM4LCA1Ni40MTYwNzYwNjY2MTU4OTRdLCBbLTIuMTQ2MjA0MjEyNTQyNjYyLCA1Ni40NzA0NDE0MTAwNDQzN10sIFstMi4wMTQ4NTExNjAzOTkwMDE0LCA1Ni4zMTAwMTkzNzYxNTY5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fYzdkOGRjZDlkZDYyNGMwZmEwZTYzYzEzMDYzNjA1NzIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMzM3ODBmZWRkYzIyNGRiN2IwMDkwNGMzNWYwMDA5ZDggPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy4xNDM2OTk4MDUzODM5NzUsIDUyLjkwMzMxNDU0NTY0ODYzNF0sIFstMi45MzAxOTY2MTQ1Mjk0MjA3LCA1Mi45NjMyMTM0MTkyNTg1OV0sIFstMi43NTMwOTM5OTM4NzUwODE2LCA1Mi44MTU1NTA4MzY4MTAyOTZdLCBbLTIuNzg5MDY2MzUyNjQ2MzUyLCA1Mi42MDc0MzQ5MzQwOTU4ODVdLCBbLTMuMDAyODQ5Mjg3NTkwNjkzNCwgNTIuNTQ2OTExNDUyNzUwNzZdLCBbLTMuMTgwMzgxMTQxMjQ0Nzk4NiwgNTIuNjk1MTI4MzM4ODY1MDNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8zMzc4MGZlZGRjMjI0ZGI3YjAwOTA0YzM1ZjAwMDlkOC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9hNDJkOWM4NDg1NWQ0MGU3OGYxNzY4MjM5MGViMmZjOSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzAuODIwODI5NjA3NjgxNzgyMywgNTIuNjUyMjA1NTM5Nzk2MjZdLCBbMS4wMjYwNTEyNTYxMDgxMTksIDUyLjcxMTUxNDYwOTAwOTQ2XSwgWzEuMjAyMDU2NTAwMzYzMDcsIDUyLjU2NjA3OTExMjIxMTc2XSwgWzEuMTczMzE5MjMyMDc4MjEwNiwgNTIuMzYwODAyNjY2NjQyMTRdLCBbMC45Njc4OTkxMjQyNjgzOTgzLCA1Mi4zMDA4OTAxODYxNTMyM10sIFswLjc5MTQxMzQ3MzYyNTUwNjEsIDUyLjQ0Njg1NzQwMDAyODA0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fYTQyZDljODQ4NTVkNDBlNzhmMTc2ODIzOTBlYjJmYzkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYmZiYzA3NDRjNWQyNDljOWEzYWU4Zjg1NWNhMzk4MjAgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1swLjI1NjUxNjkzNjEwODc5MTQsIDUxLjQ5NTU0MDQ4Njg0MDg3XSwgWzAuNDY0ODc1NjE1MjY0NzExNTUsIDUxLjU1NzExMzA2MTU1NzYxXSwgWzAuNjQyNjg3NjUwMjQyNDc3NiwgNTEuNDA5NzA0MzI0NDA0OTddLCBbMC42MTI2MTc1OTE2MTA3NzczLCA1MS4yMDAyMDUwNjQzNTI2OTRdLCBbMC40MDQwNjg2MzIwNzg4NDM4NiwgNTEuMTM4MDI0NTg1MTI3NDhdLCBbMC4yMjU3Nzg3MzkyNjY1ODA3LCA1MS4yODU5NTA5NzcyNjQxODZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9iZmJjMDc0NGM1ZDI0OWM5YTNhZThmODU1Y2EzOTgyMC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl80ZjZjOWY0ZTgxNTI0OWEwOTU1ODg3MDBhNzZjMmNiOSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy03LjQ0MTM3OTM2MjIzMDE5MSwgNTcuNzUxMDQzNDY4MzAzMDZdLCBbLTcuNjY3MzExMTAwNDg2MDI3LCA1Ny42OTU5Nzk0NzMxODIxM10sIFstNy44MTM0Mzc1NDI5NzczNTk1LCA1Ny44Njc0NDkzMDc3NTk0N10sIFstNy43MzI5ODA5ODg4Mjk4NjQsIDU4LjA5NDI4NTc4MjQ4ODEzNl0sIFstNy41MDY0ODU5MzYwMTk0NTgsIDU4LjE0ODg0ODQ5MDk0NzFdLCBbLTcuMzYxMDEwMTQ5NDYwMTgwNSwgNTcuOTc3MDc4Njk2MzEyOF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzRmNmM5ZjRlODE1MjQ5YTA5NTU4ODcwMGE3NmMyY2I5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzIxYzc4MDE3MjU2ZTQ1MzNiMjA0NzJiODEzZGVjODMyID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQuMTgwMTg4Nzc0NzY2NzkwNSwgNTIuODEwNzMzMzg2ODkwNjJdLCBbLTMuOTY0NTc5MTYwNTMyOTI0LCA1Mi44NzEwODA2MjY0NDI2NF0sIFstMy43ODcyNTAyNjEwMzAwMTM0LCA1Mi43MjI2MDM1MDgxNjE0MV0sIFstMy44MjUxMTgwNzMyMDcyMzAzLCA1Mi41MTMyMjA4Nzg3MTQxN10sIFstNC4wNDEwMjU0MTA2MTUyNzMsIDUyLjQ1MjI0MzA3MDA1ODYyXSwgWy00LjIxODc2ODE2NzcwNTA0MSwgNTIuNjAxMjc4MzA0MjMyMTc0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMjFjNzgwMTcyNTZlNDUzM2IyMDQ3MmI4MTNkZWM4MzIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZmU2ZTMxNjNkMDU1NGVkMzk2N2ZhYmZjYjc3MTAxMjcgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi40NjM0NzkyNjYzOTY5MzQsIDU4Ljc1MzUzMDYzNzYyMjRdLCBbLTIuNjc3NDkxNjAzOTIxNDY1LCA1OC43MDE4ODk3MTIxNzUyMl0sIFstMi44MTE2OTQyMjcxMjU1NzIsIDU4Ljg2OTE0NjAzOTM5NzY5XSwgWy0yLjczMTIyNzk1NDQ4OTg4OCwgNTkuMDg4MjkzMjE2NjAwNTFdLCBbLTIuNTE2NzIyNzMxMzY5MjQ1NywgNTkuMTM5NDQ5MDA3NjU5MTJdLCBbLTIuMzgzMTc1ODIyNTI4OTA5NSwgNTguOTcxOTQ1MTEzNjczOTc1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZmU2ZTMxNjNkMDU1NGVkMzk2N2ZhYmZjYjc3MTAxMjcuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fY2E1NzIwNGVhZTQ3NGE2NmI4M2YyOWQ3M2YxN2RlMjAgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1swLjE2Mzk5MDkzMDM4OTI1NzQ0LCA1MC44NjQ3MTA1NzE1MzI4MjVdLCBbMC4zNzM1MDcxNjE3ODcwMDksIDUwLjkyNzQ1MTYwOTA4OTY0NF0sIFswLjU1MjE1NzY4MjQ0MTQxNDUsIDUwLjc3OTE1NTI2MzU1MzQ4NF0sIFswLjUyMTc2OTIwMjM3Nzg1NDEsIDUwLjU2NzYwOTQ2MDAwMTMzNl0sIFswLjMxMjA3MTg1Nzg2NzU2MDUzLCA1MC41MDQyNTk5NjU0NTMwM10sIFswLjEzMjk0MjgyMzQxMzY0MDA4LCA1MC42NTMwNjQzNjUwODU1OF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2NhNTcyMDRlYWU0NzRhNjZiODNmMjlkNzNmMTdkZTIwLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzZmODUzZmIzM2M5NDQyMWNiYmQxNmQ4ZmRmZDE2MWQ5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQuMDY0OTEwMDg2NDU1ODc5LCA1My40MzQ3MDE3NjM3ODc1OF0sIFstMy44NTA0OTU2MDI4Mzc1NjQsIDUzLjQ5Mzg1MTQ5MTA2NTA5NF0sIFstMy42NzQxMjE4NjA0MDY0ODMsIDUzLjM0NjM3NDY3OTA3MDE2Nl0sIFstMy43MTE3NTA3ODAxOTE2MTI1LCA1My4xMzkxODIwNzU3ODE0M10sIFstMy45MjY0NzE3ODkxODE4MDksIDUzLjA3OTQwMzk2Mzg0NTgwNl0sIFstNC4xMDMyNTgyODg5MTYzNTEsIDUzLjIyNzQ0Njc1NTQxMjM5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNmY4NTNmYjMzYzk0NDIxY2JiZDE2ZDhmZGZkMTYxZDkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNzEyODcyYjY3ZTlmNDNiZWEyYTFmNDkxMmM2NzkwY2YgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNS4zNDY1NDk1OTQ0OTY4NywgNTIuMDgyNzQ0MTY0Nzg4Mzk0XSwgWy01LjEyNzc4OTQ0MzE3NzA4NywgNTIuMTQ0NzYyNjYzNTI1MThdLCBbLTQuOTQ5MzgwMDI5NTE3ODY5LCA1MS45OTQ0ODAxNDk0ODEzMjZdLCBbLTQuOTg5MzMzMzI1ODA2NDU0LCA1MS43ODE2MjU3OTY3ODkyOF0sIFstNS4yMDgzOTkyMzg0NTQzODksIDUxLjcxODk2OTA2MjAwMTY3XSwgWy01LjM4NzIwNjk5OTc3NjA0OCwgNTEuODY5ODA0NjcxMTk3MTVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl83MTI4NzJiNjdlOWY0M2JlYTJhMWY0OTEyYzY3OTBjZi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9iNTRkZmU5YWU2NTc0YmYzOGRkYjAzNWIwM2ZiNTg2YSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy02LjA2NjU1MDU2MDcxOTM2MSwgNTMuNjcxNTgwNjA3NjgyMjhdLCBbLTYuMjg0NDg0NTc5MDcxOTY1NCwgNTMuNjEyMTgxMTM1NjMxMTU0XSwgWy02LjQyNTg3MzkyMzE3NjQ4NywgNTMuNzcwNzcxNDY1OTI5MTZdLCBbLTYuMzQ4NjkzMDQwNDk2MjAyLCA1My45ODkxNzQxNDk3ODkzODVdLCBbLTYuMTMwMTI0NDk0NTM0OTIzLCA1NC4wNDgxODI4ODY2OTE4XSwgWy01Ljk4OTM3MTI2NzI4NDQxOCwgNTMuODg5MTgyMjg4ODg1NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2I1NGRmZTlhZTY1NzRiZjM4ZGRiMDM1YjAzZmI1ODZhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2Q2MjFkY2U2MWY0ZDRiMzJhMzRiYzE3NDg5Njg0MTIwID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuMDUyNTU4ODg2MzA4NTg2LCA1OC4yMTIyOTIyNjcxNTI0ODVdLCBbLTMuMjY3NzU3MzMwMTUzMjM2MywgNTguMTU5NzAzMTMwNTMyODJdLCBbLTMuNDAzMjcyMDMxNzgwMDQ0LCA1OC4zMjY0MzYzMjQxODA5MDRdLCBbLTMuMzIyOTMxNDQwMjAwNjkxNSwgNTguNTQ2MDI3MzA2OTQxNDc1XSwgWy0zLjEwNzIyMjAyODQ4MDgxOSwgNTguNTk4MTM4NjcyODIxNzNdLCBbLTIuOTcyMzYzNDEwOTI3OTc0NCwgNTguNDMxMTM5MjM0MDc4MDJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9kNjIxZGNlNjFmNGQ0YjMyYTM0YmMxNzQ4OTY4NDEyMC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl85ZjI1ODk1ODVhNDE0MWMxYTQ5YTY3NWM5ZjA3YjBkZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01LjEwMzk1MzE4MDM5OTQ3NTUsIDUzLjM0NDk0NTgxNDM3MTUzNV0sIFstNC44ODc1NDE0MTg0ODU3OCwgNTMuNDA0NTM3Njk1NjIwMTZdLCBbLTQuNzExMDY4MDU4Mjc1ODY5LCA1My4yNTYyNDM5MzA0NzI4NTZdLCBbLTQuNzUwNjEwOTUxNzA4MTg2LCA1My4wNDc3ODgxNTg1NzM2OV0sIFstNC45NjczNDcxNjU0NTM1NCwgNTIuOTg3NTYxODEzOTUyMTU1XSwgWy01LjE0NDIxNjkwMDIyMzI1MSwgNTMuMTM2NDI1NjA4NjU4MzVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl85ZjI1ODk1ODVhNDE0MWMxYTQ5YTY3NWM5ZjA3YjBkZi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl85YWJkNzhjMGFlMzc0OTk5YTY1ZGQzYmFkMzA3NTQ4OSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01LjU0ODMzNDE1Mjk0NjM0MTUsIDU2Ljc5MjQyMzIxODg0MzU0XSwgWy01Ljc2ODcyNDM1MTcyOTAzODUsIDU2LjczNjk1MjA3MDgyMzMxNF0sIFstNS45MTAwNTA3NzYzNzE4ODEsIDU2LjkwMzQxMzAwMDk4Nzk1XSwgWy01LjgzMDMzNDA3MDIyMDc2NiwgNTcuMTI1NjY3ODQxOTUyNzJdLCBbLTUuNjA5Mzc2MjA0NDQ4NTY2LCA1Ny4xODA2NzUxNTI3NzAwMl0sIFstNS40Njg3MDIxOTA0NTEwOTcsIDU3LjAxMzg5NDA0NTg5MTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl85YWJkNzhjMGFlMzc0OTk5YTY1ZGQzYmFkMzA3NTQ4OS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl80MGU5ZWRiNDJjN2I0ZTM1YmNiZDA1N2RjZWMwOTQ2NiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00LjQ3NTkxNDk5MDE3NjI4OSwgNTQuMjk4MzE1NDUyMTE1NTQ2XSwgWy00LjY5MDcxNzYzNDYzNzQ4MTUsIDU0LjI0MDM2ODI4MjYwOTAxXSwgWy00LjgyODIyODkyMjc0Nzk0NiwgNTQuMzk4NjkxNjYzOTIwMTU0XSwgWy00Ljc1MDI5NDU1NjM5OTc0MjUsIDU0LjYxNTM0ODUzMzk2MDI5XSwgWy00LjUzNDg4NzIwNjMyMTg2MiwgNTQuNjcyODk5NTkyOTc4M10sIFstNC4zOTgwMTg2OTk5NzI4NDQsIDU0LjUxNDE5MjQxNjI2M11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzQwZTllZGI0MmM3YjRlMzViY2JkMDU3ZGNlYzA5NDY2LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzQ2NmUyN2NjYWM4MzRmN2I5M2Q5MTYwMGQwOGEyMDQ4ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQuNzY4Mzg3OTE3MDMwMDAzLCA1NC4wMjQ0MzU4MTk3ODQwMl0sIFstNC45ODM1OTcxMzM0Mjc4NzUsIDUzLjk2NjA0NTI2MDY3ODIzXSwgWy01LjEyMTc0OTQyNTgxMDE3LCA1NC4xMjM5NzU4OTkxNjg2NF0sIFstNS4wNDQwNTEzMTUwMDQyMzcsIDU0LjM0MDY5MjM3Nzk5ODA3NF0sIFstNC44MjgyMjg5MjI3NDc5NDYsIDU0LjM5ODY5MTY2MzkyMDE1NF0sIFstNC42OTA3MTc2MzQ2Mzc0ODE1LCA1NC4yNDAzNjgyODI2MDkwMV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzQ2NmUyN2NjYWM4MzRmN2I5M2Q5MTYwMGQwOGEyMDQ4LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2UwMDQ5MzU3NDZkYjQyOTk5YjI2NjJhZTJjZmUzYTMxID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTUuNzg2MjUyNjE3Nzc3ODIsIDU2LjEyODk4NDgyOTc5Nzg2NV0sIFstNi4wMDY0OTY0NDQ1NjE0MjMsIDU2LjA3MjU4NDkzNTA5OTU5XSwgWy02LjE0ODE4NDg4OTU0NTg5NSwgNTYuMjM3NjA5NDE4ODg4ODQ0XSwgWy02LjA2ODk3OTY3MjgwOTk3OSwgNTYuNDU5Mzc3MzAwMzkzMTNdLCBbLTUuODQ4MTUxODgyMjI2NDk2LCA1Ni41MTUzMjc1NzY0NzQxOF0sIFstNS43MDcxMTI4NDQ4MTU2MjksIDU2LjM0OTk2MjE5Nzg0NTU4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZTAwNDkzNTc0NmRiNDI5OTliMjY2MmFlMmNmZTNhMzEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZjg1YjM0NDYxZTA3NDhmNDhhZWYzNWFkMDk0NmJiN2YgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNi44NTI2NDg0MzgzMTI0MjUsIDU0LjI1MDM0NzI0NTY4Mzg2XSwgWy03LjA3MzE1MjQ3MjU2MjczNCwgNTQuMTkxMjI1OTQ2OTQ1ODZdLCBbLTcuMjE2Nzk5Mzc3NDk1MDE3LCA1NC4zNTI0NzQ5OTI5ODcwNF0sIFstNy4xMzkzMDUyNTI0MzE1NTQsIDU0LjU3MzI0Nzk4ODMzMzg3NV0sIFstNi45MTgxNjkxNDA4NjY5MDQsIDU0LjYzMTk1ODg3MDEzNDU3NV0sIFstNi43NzUxNTkwODc1MjgyMTUsIDU0LjQ3MDMwOTg0NTg1OTI3Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2Y4NWIzNDQ2MWUwNzQ4ZjQ4YWVmMzVhZDA5NDZiYjdmLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzk3YTI0YWI3MWY2ODQxZjZhZDAwZWM5YWYzMjg2YWExID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuNjc0MTIxODYwNDA2NDgzLCA1My4zNDYzNzQ2NzkwNzAxNjZdLCBbLTMuNDYwMjk4NDEyMjgyMzM5NywgNTMuNDA1NTg3MDU1ODY0OTA2XSwgWy0zLjI4MzgwNTM1OTY1NTM3OCwgNTMuMjU4MjMzMzc2NDA2NF0sIFstMy4zMjA3MTc0Njc1MDM4OSwgNTMuMDUxMTA0MzU2NTQzMDhdLCBbLTMuNTM0ODM4NDcyODk5NDc1MywgNTIuOTkxMjY1NTI2NTgxNDhdLCBbLTMuNzExNzUwNzgwMTkxNjEyNSwgNTMuMTM5MTgyMDc1NzgxNDNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl85N2EyNGFiNzFmNjg0MWY2YWQwMGVjOWFmMzI4NmFhMS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lYTFiZTQxMjdjMDc0MTk4OTBkZTQ2NmRmZmQxZTU4MSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjgwNzMyMDQ3MDAzMzQ4NDIsIDU0LjgyNDczMDM3MzIzMTk4XSwgWy0xLjU5OTcwMzExNTk5Nzg3OCwgNTQuODgwNjkwNjA2MjgzMTldLCBbLTEuNDI1NzE0NjQ5MTcxNzYyLCA1NC43MzY4NjAwNjM1MDc4OV0sIFstMS40NTg5MDUwMzI0NDYxMTY0LCA1NC41MzY0OTg2MDM3NTg0N10sIFstMS42NjY4MDcyODkzNzU3ODk1LCA1NC40Nzk5Mjc3NjUwNjA2XSwgWy0xLjg0MTIzNTI5MjgxNDY5OTgsIDU0LjYyNDMyOTA1Njc0NjQ1NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2VhMWJlNDEyN2MwNzQxOTg5MGRlNDY2ZGZmZDFlNTgxLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzNlMTNiOWI0NWQ2NTQ0MmM4OTIwODk0NzliZjM1NDQzID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuMDY0MTU1MjMxNzUzMTM0NCwgNTQuNDg1NjMwNjY3MDYyMDJdLCBbLTIuODUzMzc4NjkzNDE4NjUxNiwgNTQuNTQyNTQ3NTMyOTUzNjA2XSwgWy0yLjY3ODY4MTk2NDczMjI5MDYsIDU0LjM5NzM1NDMzOTI0MTI3XSwgWy0yLjcxNDMzOTcyNTc2MzQwNCwgNTQuMTk0NjcwNzM4Mzk2ODFdLCBbLTIuOTI1NDIwOTM2NDYzNjEyLCA1NC4xMzcxMzQ3OTY2NzkyMl0sIFstMy4xMDA1NDA2NzM1NDQ5NDQsIDU0LjI4MjkwMTU2MjE1OTI3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fM2UxM2I5YjQ1ZDY1NDQyYzg5MjA4OTQ3OWJmMzU0NDMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNDUyNjJiZTBhZmRkNGEzYmE1NDRlMDk2MzM0ZGRjMmQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy43NTYwMTYyODAwODIwODEsIDU4LjQ0MTMyOTczMjEwNzhdLCBbLTMuOTczMzgyNDc3MjY1NTM5LCA1OC4zODg3NDIyNTQ1NTM2XSwgWy00LjExMDc3ODA2MTk1NTczMywgNTguNTU2OTc4OTYxMjYyOTZdLCBbLTQuMDMwMTQ5MTQ0MDY5Mjc4LCA1OC43NzgwNjc4NDcwNTI3NF0sIFstMy44MTIyNjkyNjQ2OTYxOSwgNTguODMwMTY2OTg4MTc5NzddLCBbLTMuNjc1NTMxMjA4NjEwOTYxLCA1OC42NjE2NjgwMjE2NzQ2ODZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl80NTI2MmJlMGFmZGQ0YTNiYTU0NGUwOTYzMzRkZGMyZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl80NmMzMDAxODYxYmM0MTU2YmQzYTM0ZWJkNzUxMjQwNiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjY4NjgzMzAyOTcxMDU4OTEsIDYwLjMzMzMyNDA2ODM1NjE2XSwgWy0xLjg5OTg2NjM2NjczNTQ5ODcsIDYwLjI4NDEwNDg2OTA1MTU3NV0sIFstMi4wMzI2NjI4MjQ0NDg3NjgsIDYwLjQ1Mzk3ODQwOTEyMjZdLCBbLTEuOTUxNzcwMzAzNzE3MDI4LCA2MC42NzMyNjk3NDE0MDMxMV0sIFstMS43MzgyODY3NTQzMDc3MjAzLCA2MC43MjE5NzY1OTU5MTA1MjZdLCBbLTEuNjA2MTQ0ODk2NzcxMTg2LCA2MC41NTE5MDY3MTYwMzkxN11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzQ2YzMwMDE4NjFiYzQxNTZiZDNhMzRlYmQ3NTEyNDA2LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2JiNTU5ZWJlMGVlMDRlNGViNzNlMzYwMWE4Y2QyMTdlID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQuNTM0ODg3MjA2MzIxODYyLCA1NC42NzI4OTk1OTI5NzgzXSwgWy00Ljc1MDI5NDU1NjM5OTc0MjUsIDU0LjYxNTM0ODUzMzk2MDI5XSwgWy00Ljg4ODE0NzAyMjU2ODMzMSwgNTQuNzc0Nzg3NzQ5OTU0MzJdLCBbLTQuODA5OTQ3MjQ2OTkwMzIxLCA1NC45OTIxNTQ4MzQ1OTg3Nl0sIFstNC41OTM5NDEzMTEwMjQ5MzUsIDU1LjA0OTMwMDI3MTU5NjZdLCBbLTQuNDU2NzMzNDYxNzY2MjI5NSwgNTQuODg5NDg2Nzc2ODQ5MThdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9iYjU1OWViZTBlZTA0ZTRlYjczZTM2MDFhOGNkMjE3ZS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xYzJjYjU0MDk1Yzg0NGY4OWNmOGJjZDU5ZTM3YjUyOSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00LjQ1NjEzMTY4MTA2NTA5NCwgNTMuNTIzMjE0Nzk3NDA2NzddLCBbLTQuMjQxMTQ0MTg3OTgxNDQxLCA1My41ODIzMDExOTg2NzczMV0sIFstNC4wNjQ5MTAwODY0NTU4NzksIDUzLjQzNDcwMTc2Mzc4NzU4XSwgWy00LjEwMzI1ODI4ODkxNjM1MSwgNTMuMjI3NDQ2NzU1NDEyMzldLCBbLTQuMzE4NTYxMjQ2NTQ4ODY3LCA1My4xNjc3MzAwMzg5MTYwNl0sIFstNC40OTUyMDE0NDE0NDEzNCwgNTMuMzE1ODk4NTcxMDgzNTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8xYzJjYjU0MDk1Yzg0NGY4OWNmOGJjZDU5ZTM3YjUyOS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9kNDg1ZGE1ZDBhNzg0OGMxOGI3YzMxYzJjN2MzNTk3ZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00LjAxNTU4MDUxMzIyMzk2OCwgNTEuNDU1NDQ5MDg0OTU3Mzk0XSwgWy0zLjc5ODIyNjUyNTA3MzEwNywgNTEuNTE4MjY1Mzk4MDM2ODZdLCBbLTMuNjE4OTA4NTE3MDQzMjg4LCA1MS4zNjgwMDE3MjkxMjY5NDVdLCBbLTMuNjU2NTIzNDUyOTM5MjkzLCA1MS4xNTQzODQ2MDA2NjkzMl0sIFstMy44NzQxNDcxNTYyNzEwMjY2LCA1MS4wOTA5MzcwMzYxNzY4OF0sIFstNC4wNTM4ODcyMjg5NzU1NTQsIDUxLjI0MTczNzUzNjEzNDQ5NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2Q0ODVkYTVkMGE3ODQ4YzE4YjdjMzFjMmM3YzM1OTdmLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzZjNGQyNTViMTE4NTRmNzRhNDVhZWJiZTljMTBjM2M2ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQuMjQxNzU5NjY5NTI1MjI1NSwgNTQuOTQ2NTg4NTY3NTIxNzldLCBbLTQuNDU2NzMzNDYxNzY2MjI5NSwgNTQuODg5NDg2Nzc2ODQ5MThdLCBbLTQuNTkzOTQxMzExMDI0OTM1LCA1NS4wNDkzMDAyNzE1OTY2XSwgWy00LjUxNTUyODkzNzA4NTQzNSwgNTUuMjY2NTgzMjk1MzI2MjhdLCBbLTQuMjk5OTY1MTY0NDQ3MDUxLCA1NS4zMjMyNzQ3NzMyMDA2NF0sIFstNC4xNjM0MDM0MjYyMzY0ODMsIDU1LjE2MzA5NjA1NDc2NTI3Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzZjNGQyNTViMTE4NTRmNzRhNDVhZWJiZTljMTBjM2M2LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2VhZmY5ZjYxNzhiNzQxYmNiMWM0NDQ2ODVmYTk5ZDIzID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuODkzOTk4NjU0ODQ0NzY0NSwgNTMuMTcwMjc3Njg2MTMyMDRdLCBbLTIuNjgxNDEwMzk2MDQ5MzQ3LCA1My4yMjk2MTMzNDQyODUwNV0sIFstMi41MDQ3Mzk1MDk1OTM1NDIsIDUzLjA4MjUwNzQzNTc5NzM1XSwgWy0yLjU0MDIyNjE3NTI4Mzk4NTYsIDUyLjg3NTUwOTA4MjcyOTA0XSwgWy0yLjc1MzA5Mzk5Mzg3NTA4MTYsIDUyLjgxNTU1MDgzNjgxMDI5Nl0sIFstMi45MzAxOTY2MTQ1Mjk0MjA3LCA1Mi45NjMyMTM0MTkyNTg1OV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2VhZmY5ZjYxNzhiNzQxYmNiMWM0NDQ2ODVmYTk5ZDIzLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzZmYzBkYjBjZmRkNjQ4MjliN2FiMGIwMGI2N2ZhNmM5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTYuNjM5MzAwMDMwNDU1MDcxLCA1Ny4xMjc2NDkwMDI2NzczMl0sIFstNi44NjI3MDMyMDAxNjgyMzIsIDU3LjA3MjEyMjk4NTM4MDM1NF0sIFstNy4wMDY3OTU3NDg5OTE4MzksIDU3LjI0MDkwODgyNDcwNzcyNF0sIFstNi45MjY4MzM0MjExMDI1NTksIDU3LjQ2NTUzODg1NjA5NjM0NF0sIFstNi43MDI4NTk1MzMyNDcyNTUsIDU3LjUyMDU4NDgwNTU3MTY1XSwgWy02LjU1OTQxODE1MzY1MjE2OSwgNTcuMzUxNDgzNDM5ODYyOTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl82ZmMwZGIwY2ZkZDY0ODI5YjdhYjBiMDBiNjdmYTZjOS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl80ZGM1YTI0MjRkZjk0MmRmODFkYTFlYWMwYzAwYzNlNSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjM0MDYyMDAzNTA3NDY1ODQsIDUyLjgyMDMwNzU1ODc5Mjc5XSwgWy0xLjEzMDcwNzQwOTYwNDY5NiwgNTIuODc5ODgxNzkxNjc5NjJdLCBbLTAuOTUzOTIxOTE2NjYwODQ1NiwgNTIuNzMzMjc3Mjg5MDc2OF0sIFstMC45ODY1OTU2NTQ0NzI1MDYyLCA1Mi41MjY1NTQwMjUzMDMxMl0sIFstMS4xOTY3NTE3NzYyMDIzMzM5LCA1Mi40NjYzNjQ5NDI3MTE4MzRdLCBbLTEuMzczOTkxODA0NzI4NDg3NiwgNTIuNjEzNTEzODI0OTI2NTldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl80ZGM1YTI0MjRkZjk0MmRmODFkYTFlYWMwYzAwYzNlNS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wZTg5ZmMxMmQ1MTI0NWQzOGMyMWExNmU1ODY5YzkzMiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00LjU1MjYwMDYyNTQyMzgwNiwgNTEuOTA2NDExMTgxNDMzNjVdLCBbLTQuMzM0OTQ1MDQyNDc1MTU5LCA1MS45Njg1NDEwMTg1MjUwNF0sIFstNC4xNTYyNTE2MTI4OTk2NTEsIDUxLjgxODUzNzAyOTYwNjU1XSwgWy00LjE5NDgwMjc5NzYwNzczNSwgNTEuNjA1ODU2NDAyMDUwNDVdLCBbLTQuNDEyNzQ2NDE2OTc5ODkyLCA1MS41NDMwOTI1OTMzNDg2MDRdLCBbLTQuNTkxODUxNzgyNjc1Njg2LCA1MS42OTM2NDMxMjA1ODU4MjZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8wZTg5ZmMxMmQ1MTI0NWQzOGMyMWExNmU1ODY5YzkzMi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl85MmYzMjA3YjY0OTc0MjM4OTI3NGZiMDUyYzdlY2RiOSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjkzMzgzNTAwNjAwMjYwODIsIDUxLjY1NTY1MzQ1MzUyMjk2Nl0sIFstMS43MjA4NjE1MjMxMTY3NjgzLCA1MS43MTc1MzE3NzA2NzA3OF0sIFstMS41NDIyNzA3MzkxODc5ODIsIDUxLjU2ODkwNDMzMDM1MDEzXSwgWy0xLjU3NjIwMzU5NTUyMzA4MSwgNTEuMzU3ODY4MDI0ODg0Njc0XSwgWy0xLjc4OTQxMTc0NTc3ODAwODUsIDUxLjI5NTM2OTk5MjAyMTg1XSwgWy0xLjk2ODQ1MzUxNjMyODM3OTgsIDUxLjQ0NDUyNzY5NzA4MTk3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fOTJmMzIwN2I2NDk3NDIzODkyNzRmYjA1MmM3ZWNkYjkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZGI2Y2UyOWQzZjJjNDM3ZDg4YTc5YjhlM2EwOGJiYjUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy40MDMyNzIwMzE3ODAwNDQsIDU4LjMyNjQzNjMyNDE4MDkwNF0sIFstMy42MTk1NTc4NjYyNDMzNjA1LCA1OC4yNzM4NDcyMzc0ODY0M10sIFstMy43NTYwMTYyODAwODIwODEsIDU4LjQ0MTMyOTczMjEwNzhdLCBbLTMuNjc1NTMxMjA4NjEwOTYxLCA1OC42NjE2NjgwMjE2NzQ2ODZdLCBbLTMuNDU4NzMyOTc0MTA0NTQ2NywgNTguNzEzNzc0MDg1MjYwMTNdLCBbLTMuMzIyOTMxNDQwMjAwNjkxNSwgNTguNTQ2MDI3MzA2OTQxNDc1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZGI2Y2UyOWQzZjJjNDM3ZDg4YTc5YjhlM2EwOGJiYjUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMTc2NGYzYzBkZGFmNGM0NmJhN2NlY2I0OGNkZTM5NzQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMC4xMzA1MjY2ODUxMjUxMDIwNywgNTEuNTgxNTY1MzU0NzI3OTldLCBbMC4wNzg2MDAyNjkyNzY4MTM4OCwgNTEuNjQzMDg3MTU0NzA3MTc1XSwgWzAuMjU2NTE2OTM2MTA4NzkxNCwgNTEuNDk1NTQwNDg2ODQwODddLCBbMC4yMjU3Nzg3MzkyNjY1ODA3LCA1MS4yODU5NTA5NzcyNjQxODZdLCBbMC4wMTY0NTI2NjMyNzE3MDQxNzYsIDUxLjIyMzgxOTIyNjE2MDIxXSwgWy0wLjE2MTkzNzM0Mzc0ODk1NTk2LCA1MS4zNzE4ODY2NTA4Njk3MjZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8xNzY0ZjNjMGRkYWY0YzQ2YmE3Y2VjYjQ4Y2RlMzk3NC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8yZDA1N2Y2ZmNlZDA0NzE5OTAzMmRhNTFkNGNkNjcwMiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjQwOTIzNTM2NTg2ODg5MjgsIDU0LjU4NTU4NDY0MzE2NDQ4XSwgWy0zLjE5NzQwMDAzMTQzMTM1MDQsIDU0LjY0MjU0OTI0MjI5OTQ4XSwgWy0zLjA2NDE1NTIzMTc1MzEzNDQsIDU0LjQ4NTYzMDY2NzA2MjAyXSwgWy0zLjEwMDU0MDY3MzU0NDk0NCwgNTQuMjgyOTAxNTYyMTU5MjddLCBbLTMuMzEyMjM4NDgxMjk0MDMzOCwgNTQuMjI1NDMxODIwNDY5ODE1XSwgWy0zLjQ4NzIzODA5NjEwMTAyOTQsIDU0LjM3MTMxMjA3MzE1NDY1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMmQwNTdmNmZjZWQwNDcxOTkwMzJkYTUxZDRjZDY3MDIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fOTA4NjlhNTNjM2NlNDE3MDhhZjg2YTkzOWNhNTZmMGQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC4xODM2NDEwNzMyODQyODE1LCA1NC41NzE2OTUwNzE2MDEyNV0sIFstNC4zOTgwMTg2OTk5NzI4NDQsIDU0LjUxNDE5MjQxNjI2M10sIFstNC41MzQ4ODcyMDYzMjE4NjIsIDU0LjY3Mjg5OTU5Mjk3ODNdLCBbLTQuNDU2NzMzNDYxNzY2MjI5NSwgNTQuODg5NDg2Nzc2ODQ5MThdLCBbLTQuMjQxNzU5NjY5NTI1MjI1NSwgNTQuOTQ2NTg4NTY3NTIxNzldLCBbLTQuMTA1NTM1NTEzODA4MTY1NSwgNTQuNzg3NTA2NTQ3NjA1MTddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl85MDg2OWE1M2MzY2U0MTcwOGFmODZhOTM5Y2E1NmYwZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9iMDVlZTI2MjY3NDI0OWQxYmM0YzY2NzIyNGNjNGJlZSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjA0MTQ0NTk3MDY1NjE1NTQsIDU1LjcyMjMyODQ3MjE1Nzg3Nl0sIFstMi4yNTEyNjE2MDMzMzA4NTk1LCA1NS42NjcxMjY0Njg2OTIwOV0sIFstMi4zODI5MjEyNTMzMTk3OTc2LCA1NS44MjYxNzY4NzM4OTk0M10sIFstMi4zMDQxMTc4ODY5NjY5MTM0LCA1Ni4wNDA3NjM3MzY2Nzk1NDRdLCBbLTIuMDkzNzU0NzcwOTAxNjQ2NiwgNTYuMDk1NTUxODg3OTU5NzJdLCBbLTEuOTYyNzQyMDE1MjU5NTk5NiwgNTUuOTM2MTY5NDEzMDk1NzZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9iMDVlZTI2MjY3NDI0OWQxYmM0YzY2NzIyNGNjNGJlZS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9hODNiNGI4YzhjMmI0YzQyYTBjMTg5MzY0YzViMDM5MSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00LjMzOTM5MzA2MjE0MzA1NywgNTQuMTQwNzE5Mjk2NTMyODY1XSwgWy00LjEyNTYxNzU3OTI2MDgyMywgNTQuMTk4NjEzMzg3NzgxMDddLCBbLTMuOTUwMzUwNDIzNzgxNDg1NywgNTQuMDUyMDQyMjcyMTY5MDk2XSwgWy0zLjk4ODQ1NDc4ODU2NjMxOCwgNTMuODQ3MDAwODk3ODA1MThdLCBbLTQuMjAyNTU0MDU0NDk3OTQ4LCA1My43ODg0NzkyMjkzNTIxNTZdLCBbLTQuMzc4MjI2MDU2NjI3MDAyLCA1My45MzU2MjY1MDYwNzM0NTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9hODNiNGI4YzhjMmI0YzQyYTBjMTg5MzY0YzViMDM5MS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl82YTljOWVmZGNmOTA0OGVjYmEwYzhhYmFlMzhiOTZhMCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjI5MjU0NDY1MDg0ODg1MiwgNTcuNTU2NDUyNjg2NzU3MDFdLCBbLTMuNTA3NzgzMDgzNDk5NTIsIDU3LjUwMjkyNDgyNTM3MTIxXSwgWy0zLjY0MzY1ODEwODgyMDEwOTcsIDU3LjY2ODM0OTM5MjYwMzA3XSwgWy0zLjU2MzYzOTA0MTY3MDU2ODYsIDU3Ljg4NzU5MTAyMzcxMDU1Nl0sIFstMy4zNDc4NzMyMDcyODE0NSwgNTcuOTQwNjU0MDUyOTAzNDFdLCBbLTMuMjEyNjUzMTYzMDM1NDI2NSwgNTcuNzc0OTQyNzIwMTczMTFdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl82YTljOWVmZGNmOTA0OGVjYmEwYzhhYmFlMzhiOTZhMC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl83YWQ2OGVmOTI1ZWY0ZDM3ODFjOWY5OTEyOWU1NmI4NyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjgyNDkwMzg2NjAzMTY4ODcsIDU4LjkwNzUyMjQ5MTIyMDU2XSwgWy0yLjAzNzE4MTMzNjQ5OTQyOSwgNTguODU2MzQ2NDA5MzgxNDRdLCBbLTIuMTY5NzgxNTk5Nzg1Nzk4OCwgNTkuMDIzMTExODU4MjI3MDldLCBbLTIuMDg5NDQ5NTU1NzQzNDQ2NSwgNTkuMjQxMjk2MTU5NDExOTFdLCBbLTEuODc2Njg5NzQyODAzNDkyOCwgNTkuMjkxOTg4NzYzNTI5MTc2XSwgWy0xLjc0NDc0MzQ0MDUzMzU0NCwgNTkuMTI0OTgyODYxMDQ0NThdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl83YWQ2OGVmOTI1ZWY0ZDM3ODFjOWY5OTEyOWU1NmI4Ny5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl84N2IzY2ExYzVmM2M0YmVhOGVlN2Q2NzM5MGMyZTRhOSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00LjI0NjQwNTUyMDkyMDMyMywgNTAuMTYyNTIzNjMzNTI2MDJdLCBbLTQuMDI2Nzk4ODUxNjc0MzQ2LCA1MC4yMjc3NzE3OTE3MDAyNV0sIFstMy44NDU2MzE1MjA0MzIxMzQzLCA1MC4wNzU2OTY3MjQzODM3NTRdLCBbLTMuODgzNjQ4Nzg4NzA2NjQxOCwgNDkuODU3ODU3NDE5MTQyNjhdLCBbLTQuMTAzNTA0MTE5OTAyNDkxLCA0OS43OTE5Nzc0OTI3MDE5NF0sIFstNC4yODUwOTQ1NzI1MzczMSwgNDkuOTQ0NTY4MTYzNzgwNjE2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fODdiM2NhMWM1ZjNjNGJlYThlZTdkNjczOTBjMmU0YTkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZmE0MjYzZmZmMjA0NDUzMDk3MzUwZmYzOGFhMzI2NTMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NDI4OTIzNDk4NTQ1MjcsIDU2Ljk1NTIyMjQ4MDU2NzkzXSwgWy0yLjc1NTQyNTc4ODczMzQ1ODMsIDU2LjkwMTI3MDkwOTExNjQ1NV0sIFstMi44ODkwNjQ3NDk2MzcxMSwgNTcuMDY0MTgwNzE3ODI2OTNdLCBbLTIuODA5NTE3NjMwODY5NzYxNCwgNTcuMjgxMzQ1MTI1MDA2NjhdLCBbLTIuNTk2NDUzNTcwMDMzOTI4LCA1Ny4zMzQ4NTEwNTE3NjM0OF0sIFstMi40NjM0NjY2MjUwMjA1OCwgNTcuMTcxNjQwNjE5NzAxNzldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9mYTQyNjNmZmYyMDQ0NTMwOTczNTBmZjM4YWEzMjY1My5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9jMGNlMzk0ZDAzOTY0Y2I5YmZiODI3MmQ2NzQyYTIzYiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzAuNTUyMTU3NjgyNDQxNDE0NSwgNTAuNzc5MTU1MjYzNTUzNDg0XSwgWzAuNzYwODg3OTk5NDU5MDQyNSwgNTAuODQxOTQyOTQ2NjQ5ODY2XSwgWzAuOTM5NDAzNTAzNTU5Njg3NiwgNTAuNjkzNzkxNTM5NTQ2MTddLCBbMC45MDk2NzAxOTIzNjg3MDExLCA1MC40ODIzNDcxNjAxNTgzNzZdLCBbMC43MDA3Njc1MTI2NzU3MjU2LCA1MC40MTg5NTMxMzgwODY3Ml0sIFswLjUyMTc2OTIwMjM3Nzg1NDEsIDUwLjU2NzYwOTQ2MDAwMTMzNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2MwY2UzOTRkMDM5NjRjYjliZmI4MjcyZDY3NDJhMjNiLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzZjODI3YjA3MGFjYjQ4NTlhNGRlNGEyNmEzOWJjY2U5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTUuOTU5ODczMjkwOTgwNjkyLCA1NS4wODQ2MTczNjkwMTA2OV0sIFstNi4xNzkzMTk3MzM5NzAwODEsIDU1LjAyNjg4MzE3NTExNThdLCBbLTYuMzIxMDQ4MjcyMTI2NDE2LCA1NS4xODkzMDM3NDUzODM4MjVdLCBbLTYuMjQyNjg1ODUxMTI1NDMxLCA1NS40MDk4MzI2OTYwNjE3MDZdLCBbLTYuMDIyNjMyNjI2MTY4MTk1LCA1NS40NjcxNDE2MTYzNDgzXSwgWy01Ljg4MTU0ODMyMDc3MzczNiwgNTUuMzA0MzQ5NDgxMDkxNjNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl82YzgyN2IwNzBhY2I0ODU5YTRkZTRhMjZhMzliY2NlOS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl84ZWUyZGM5MDY1OTk0MWUxYjE4YjlhNzU1N2I1YmNkZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjQ4OTQ0NTIzNDk4NDkyMiwgNTYuNTc3MjE5MjAyNjM3MDJdLCBbLTIuNzAxNDQxMzU4Njg2MzE0NCwgNTYuNTIyODMxMDAwOTQ5MzVdLCBbLTIuODM0NzU3MzIwMjc0ODk3LCA1Ni42ODQ3MDAxNDY4MTgzN10sIFstMi43NTU0MjU3ODg3MzM0NTgzLCA1Ni45MDEyNzA5MDkxMTY0NTVdLCBbLTIuNTQyODkyMzQ5ODU0NTI3LCA1Ni45NTUyMjI0ODA1Njc5M10sIFstMi40MTAyMjcxNzc1NjA4OTk3LCA1Ni43OTMwNDIzMjUxODAzMTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl84ZWUyZGM5MDY1OTk0MWUxYjE4YjlhNzU1N2I1YmNkZi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl84NTNjZjVkMTIxNjE0NTk2YjUxMjhiODQwMDE0YWI5YyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjE5NzQwMDAzMTQzMTM1MDQsIDU0LjY0MjU0OTI0MjI5OTQ4XSwgWy0zLjQwOTIzNTM2NTg2ODg5MjgsIDU0LjU4NTU4NDY0MzE2NDQ4XSwgWy0zLjU0MzQ3NzU4OTY0MDM3NjMsIDU0Ljc0MzIxOTI0NDUxMTkyXSwgWy0zLjQ2NTIzOTY2NTI5OTMyMzYsIDU0Ljk1ODE4Nzk4MTEyNTE5XSwgWy0zLjI1MjgyMjAxODMyNzI1MiwgNTUuMDE0NzU2NDIwNzIyNTVdLCBbLTMuMTE5MjI0MjkxNDYyMzE4NywgNTQuODU2NzU0NzMyOTEwNjhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl84NTNjZjVkMTIxNjE0NTk2YjUxMjhiODQwMDE0YWI5Yy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xMDkwMTA2YjNkMjA0Y2FiODAzNTk2NTEyZmJiMTdmZCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01LjAyMzY0MTcxNTU3MjM2NDUsIDUzLjc1OTc1NzA3MjQ5MjY2XSwgWy01LjIzOTcyMDI0Njk0MTc0NiwgNTMuNzAwNzk5MzY0NDc3MTddLCBbLTUuNDE1NDEzMTM0NDc5MTIzLCA1My44NDg3NjM1NTIxNTcxM10sIFstNS4zMzc5NjgxNDMwNDUzOTMsIDU0LjA2NTUyOTQ5Nzg2MjQ5XSwgWy01LjEyMTc0OTQyNTgxMDE3LCA1NC4xMjM5NzU4OTkxNjg2NF0sIFstNC45ODM1OTcxMzM0Mjc4NzUsIDUzLjk2NjA0NTI2MDY3ODIzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMTA5MDEwNmIzZDIwNGNhYjgwMzU5NjUxMmZiYjE3ZmQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYjYwYTVkMGU0YzAxNDgzMGE0Y2I4OThmMWQwMjdiZGUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMS44NTY3NjA4MDg1OTMwNTksIDU2LjczOTQzNDgxMzY4ODMzXSwgWy0yLjA2NzEwMDgyMTc1NjI2NDMsIDU2LjY4NTUyMDUxNDUxODc0XSwgWy0yLjE5ODc4Nzc3NjM4NTU3NjUsIDU2Ljg0Njk3NTkwNzM0NzI2XSwgWy0yLjExOTQ4NDUwMDk1MDM2NywgNTcuMDYyNjUxMzIyODYxMjVdLCBbLTEuOTA4NjE4MzkwOTkxNjE0MSwgNTcuMTE2MTI5NzkzODMwNzNdLCBbLTEuNzc3NTgxMDM1MTk5OTU5NSwgNTYuOTU0MzcxMDQ0MTg5NjJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9iNjBhNWQwZTRjMDE0ODMwYTRjYjg5OGYxZDAyN2JkZS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9jNjA5NmZmNGUxYTc0MzBkOWY3OWQ2MzE5ZDZmYTRhMiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01Ljg1NDE3MzA2NTI2NTgyMTUsIDUwLjUxMTg2MTM3NzQ0NzczXSwgWy01LjYzMjMzNjQ0MjE2MzQyMywgNTAuNTc2OTI1NTU3MDg1NzZdLCBbLTUuNDUxNjEzNTM3MjE4NDEyLCA1MC40MjQyMjE4MTQ2OTY5OV0sIFstNS40OTIzMzE3MTk0NTgxMjgsIDUwLjIwNTkyNDIzNjI0NTgzNV0sIFstNS43MTQ0NTIyMDE4NjI1MzIsIDUwLjE0MDIxODk2NzI4NTQ1Nl0sIFstNS44OTU1NzE1ODAxNzk3MjEsIDUwLjI5MzQ1MTkyNDQ4MzQ5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fYzYwOTZmZjRlMWE3NDMwZDlmNzlkNjMxOWQ2ZmE0YTIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fOTMyMTM0MzdmN2M0NDZiYWFkZGRiNTI1MDE2YjA2ZmQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy44OTE2MDExNDU2MTExNDk0LCA1NC44NDQ1NjM2MzMzMjc4OTRdLCBbLTQuMTA1NTM1NTEzODA4MTY1NSwgNTQuNzg3NTA2NTQ3NjA1MTddLCBbLTQuMjQxNzU5NjY5NTI1MjI1NSwgNTQuOTQ2NTg4NTY3NTIxNzldLCBbLTQuMTYzNDAzNDI2MjM2NDgzLCA1NS4xNjMwOTYwNTQ3NjUyNzZdLCBbLTMuOTQ4ODgxNDk1OTc5MzY5LCA1NS4yMTk3NDc2MDU0OTc5MzZdLCBbLTMuODEzMzAzMDUyNTUxOTM5NiwgNTUuMDYwMjk5Njk2Nzk1NjZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl85MzIxMzQzN2Y3YzQ0NmJhYWRkZGI1MjUwMTZiMDZmZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xN2Q3NzE1NzJlMGU0MjQyOWMxZGEzNjViYWRlYTRiZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjUyMTQ4NDMxODY4ODQ0MDgsIDU1LjA5MjQ5MjExMjkwMjIxXSwgWy0xLjMxNDQwMzgzMTI3MDM3MywgNTUuMTQ4MDIxNzc0NjAwNTg2XSwgWy0xLjE4NjA5NDc4ODAyNjY0NDEsIDU0Ljk5MjEzOTIzMTA3MzExXSwgWy0xLjIxODc2OTA2Mzc5ODM4MjYsIDU0Ljc5Mjg4ODQ0Njg3NDY4XSwgWy0xLjQyNTcxNDY0OTE3MTc2MiwgNTQuNzM2ODYwMDYzNTA3ODldLCBbLTEuNTk5NzAzMTE1OTk3ODc4LCA1NC44ODA2OTA2MDYyODMxOV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzE3ZDc3MTU3MmUwZTQyNDI5YzFkYTM2NWJhZGVhNGJmLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzc1YjMzZTEwNmRjZjQ2M2VhMzE2ZTk4MzhkOWVkNzhiID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuMjI0MTYxODE2MDE3MTg4NSwgNTQuNzEyMzM1MjY0NTk4NzRdLCBbLTIuNDMzMzc3NjYwMjI3ODY0LCA1NC42NTU4OTkyNjI2NjA2Nl0sIFstMi41NjQ5Nzg1MjA3NDcxMTQsIDU0LjgxMjQ3NDk5MzgyOTg2XSwgWy0yLjQ4NjcxOTc5MzcxNzI4NywgNTUuMDI1ODQ4NjY3NTg3NjhdLCBbLTIuMjc2OTM2MDM0MzUzNTQwNSwgNTUuMDgxODkzMTQzMDgxNF0sIFstMi4xNDU5Nzg1NTc0OTAwOTY3LCA1NC45MjQ5NTc4NjM3NjcxNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzc1YjMzZTEwNmRjZjQ2M2VhMzE2ZTk4MzhkOWVkNzhiLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2UyNzU1NDY5MzA3ZDRmZGM4Y2I0NTdhNzIwZDI2YTVjID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuMDEyMjg2NDUzMzMzOTYzLCA1My42MTEzODk2MzQwNzk3ODVdLCBbLTEuODAyMjEwODk5NjczNjk1OSwgNTMuNjY5NjcyMDU5NzQ1ODg1XSwgWy0xLjYyNjM2MzczMDY0OTYzMzUsIDUzLjUyMzgwNDU3NjE3NDM1Nl0sIFstMS42NjAxNTA4NjMzNTQ0Mzk3LCA1My4zMTkwOTY2NTAyMDUwNF0sIFstMS44NzA0OTYxODc1NTc3NTEsIDUzLjI2MDE5Nzc2Nzc3NjQ5XSwgWy0yLjA0Njc4NTY3NzEwMzY5NDMsIDUzLjQwNjYyMzIwNTMxMDUxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZTI3NTU0NjkzMDdkNGZkYzhjYjQ1N2E3MjBkMjZhNWMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZWRlZjI4NDhiZGU0NDEzZThiZjEwODM4MGVkYTA0MWIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1swLjUyODM2NjU0MzcwOTYzNDEsIDUzLjM1MDU1NDUzNjQ0MzkxNl0sIFswLjczMzE2NjA5MTE0ODI1NzUsIDUzLjQwODY1Njg1NzI4OTldLCBbMC45MDg0MTAyMzAwODgzNjg1LCA1My4yNjQwNTMyNTY0NDY1OV0sIFswLjg3OTMyODQ4NTYxNzc0MTQsIDUzLjA2MDgwNTA2NTQzOTE1NV0sIFswLjY3NDMxMzcxNzE2ODA1MjYsIDUzLjAwMjA5OTQzMjU0NjM5XSwgWzAuNDk4NTk0NjgwNzE3NTE1OSwgNTMuMTQ3MjQ1MjE0NzIzM11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2VkZWYyODQ4YmRlNDQxM2U4YmYxMDgzODBlZGEwNDFiLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzlmMGU3ZjRmMzM5MTQxZGM4NzBkOWYzZWI5MTFhYzVjID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTAuODA5MzcxMzk2NzA2NTU2NywgNTIuMzc5NTM0NzM2MjcyNTJdLCBbLTAuNTk5OTM0MzM3MTg3MDg1MSwgNTIuNDM5Nzc5ODgwMTE0MTddLCBbLTAuNDIyNzQ1NjY2OTIwNzUwMzMsIDUyLjI5Mjg5MDY0MDIyNTEzXSwgWy0wLjQ1NDUzMjQyNDc3MjcxMTMsIDUyLjA4NTIyMDM0NzcxNDY3NF0sIFstMC42NjQxOTUyNDIyMjgyMjcxLCA1Mi4wMjQzNjI0MzU2NDg0OF0sIFstMC44NDE4NDY3MzE0ODk4NTIyLCA1Mi4xNzE3ODczODc2NjQzMjRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl85ZjBlN2Y0ZjMzOTE0MWRjODcwZDlmM2ViOTExYWM1Yy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9kYzI2ZTBhNGVlMjY0NTFlOWVmNTYyZTg0ZDc2MzdlMCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01LjI0ODc2ODk2OTkzMTg3NiwgNTcuMDY4ODg1NTE4NzU2Njk0XSwgWy01LjQ2ODcwMjE5MDQ1MTA5NywgNTcuMDEzODk0MDQ1ODkxNF0sIFstNS42MDkzNzYyMDQ0NDg1NjYsIDU3LjE4MDY3NTE1Mjc3MDAyXSwgWy01LjUyOTQ2MjY1MzUwNzM5NiwgNTcuNDAyNzYwNzUzODEwMjddLCBbLTUuMzA4OTcwNjcwOTU4ODc4LCA1Ny40NTcyODQwNTYxNDI3Nl0sIFstNS4xNjg5NTA0MzU5NTYyMjYsIDU3LjI5MDE5MjQ5MTI3MTA2NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2RjMjZlMGE0ZWUyNjQ1MWU5ZWY1NjJlODRkNzYzN2UwLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzExZDVjYmRiOWUxNjQ3YTc4M2NjMTRlYmVkNzE2MTkwID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQuMjk0MjA4MTg1OTEyMjA2LCA1Ny41MDcyNTYxNDI3OTAyMDRdLCBbLTQuNTEyMTE3MDg0MTQ0MDkyLCA1Ny40NTMyMzUwMDE1MTIxN10sIFstNC42NTA1NDM5OTkyMTE0MzEsIDU3LjYxOTg2NzYyMDgxNzUxXSwgWy00LjU3MDQwNTc1ODA5NzEwOSwgNTcuODQwODE2NzA0ODgyODc2XSwgWy00LjM1MTk1NzM2NDg1MzY2NywgNTcuODk0MzY2NjExNzMxMDNdLCBbLTQuMjE0MTg2MDYxMDkwMTk4LCA1Ny43Mjc0NDExNjYyMTYxMl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzExZDVjYmRiOWUxNjQ3YTc4M2NjMTRlYmVkNzE2MTkwLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2QyMjZjZjY4Y2JjMjQ0NzlhMWZlYjdlZDVhYTIxZmViID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTcuMTUwMzI4NTU3MTI4NTksIDUzLjk3MTIwNzU3ODEyNzYzXSwgWy03LjM3MTE0NTA4NjQ1MjgxNywgNTMuOTExNjI2MjE2NzIxOF0sIFstNy41MTU0MjU5NTA3Njk1MjQsIDU0LjA3MjQ2NTgyMDkxNjQ1Nl0sIFstNy40MzgyNTYyMjkwODA0NCwgNTQuMjkzMjk4OTE2MzExNzZdLCBbLTcuMjE2Nzk5Mzc3NDk1MDE3LCA1NC4zNTI0NzQ5OTI5ODcwNF0sIFstNy4wNzMxNTI0NzI1NjI3MzQsIDU0LjE5MTIyNTk0Njk0NTg2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZDIyNmNmNjhjYmMyNDQ3OWExZmViN2VkNWFhMjFmZWIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMTdhYTZkMWRhNzBhNDNkNjlmYzIwNGMyYTkyZWY2NmYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi4zMjk4NTc5ODk5NTg4OTUsIDU1LjQ1MzE4MDA5MTc4MjkyNl0sIFstMi41NDAyMDM5MjQ0NzA2ODUsIDU1LjM5NzUzNjE1MDUwNzYzNF0sIFstMi42NzI1MTAxNjUzMzY1ODU3LCA1NS41NTYyNDU3MzgwOTgzNTVdLCBbLTIuNTkzODIzNDMzNzY1NDI4LCA1NS43NzA5NDI0ODYxNDYxMl0sIFstMi4zODI5MjEyNTMzMTk3OTc2LCA1NS44MjYxNzY4NzM4OTk0M10sIFstMi4yNTEyNjE2MDMzMzA4NTk1LCA1NS42NjcxMjY0Njg2OTIwOV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzE3YWE2ZDFkYTcwYTQzZDY5ZmMyMDRjMmE5MmVmNjZmLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzAxZjFhMzIwMmM5MTRhOWRiMGZiOTZlZjZiOTNmMzdjID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTYuMzIxMDQ4MjcyMTI2NDE2LCA1NS4xODkzMDM3NDUzODM4MjVdLCBbLTYuNTQxNDgyMzk1OTQxMDc3LCA1NS4xMzE1MjY1MTY5NjY0NV0sIFstNi42ODQxNjI4MjU5MjI4MjA1LCA1NS4yOTQ3MDU5NDA4ODgwMl0sIFstNi42MDU3NjUwNzk4Nzk4OTU1LCA1NS41MTYwMzYwMDQ2MzUzOV0sIFstNi4zODQ3MjI1MTU1MjQ2NjUsIDU1LjU3MzM4Mjg4NjgxMTI2XSwgWy02LjI0MjY4NTg1MTEyNTQzMSwgNTUuNDA5ODMyNjk2MDYxNzA2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMDFmMWEzMjAyYzkxNGE5ZGIwZmI5NmVmNmI5M2YzN2Muc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fY2Y3MzU4MDE4NWE3NGEzMmI5OTQ0ODM4YTU1Zjk3NzYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1swLjAwMjc2OTc4OTYxMzU0NDUzMTUsIDUzLjc4NDQwNzEzNDU4MDc0XSwgWzAuMjA4MDk2NTg0MzkwNzg1MzIsIDUzLjg0MTg0NDI3OTAwMzE5XSwgWzAuMzgzMDAyNzY5MDE2NzM0NjMsIDUzLjY5NzU1NDA5MTQyODYxNF0sIFswLjM1MzA0ODI3NzI3MTc3NTUsIDUzLjQ5NTI3NjY4NjU3NzgyNF0sIFswLjE0NzQ4OTA0MTcyMzM5OTYzLCA1My40MzcyMzQ3MTQxMzA3MV0sIFstMC4wMjc4ODQ0NTAwNDgyMzE3MTIsIDUzLjU4MjA3NDkzMTgwNjYyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fY2Y3MzU4MDE4NWE3NGEzMmI5OTQ0ODM4YTU1Zjk3NzYuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNzRlOGY4Y2JlOGE3NGYyY2I0ZTUyMWNmYjJmODA1YmIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNy4yODMyNjU4NTI5MjQ2MTYsIDU0LjczNTY1NzEzODgwODY5XSwgWy03LjUwNTM1NjQwMzU0NzUxMywgNTQuNjc2ODk2NDg0OTAyOTU0XSwgWy03LjY1MDI1OTUwMTk2MDQ4LCA1NC44NDAwNzEzNTE1MTA2OTRdLCBbLTcuNTcyNDMzOTU4NTU1MzQ3LCA1NS4wNjIzOTg4NzM3MDMzOV0sIFstNy4zNDk3MTY1NjYxNDA5MTQ1LCA1NS4xMjA3MzM5NDIxNzI4OF0sIFstNy4yMDU0NTEzNjE1MzYzMTIsIDU0Ljk1NzE2OTc3ODI1MDU5NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzc0ZThmOGNiZThhNzRmMmNiNGU1MjFjZmIyZjgwNWJiLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2UxOTNjMTkwZGUwNDQ4ZDM5MDg2NjhkYmQ4NjNlM2E4ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMC4xNDc0ODkwNDE3MjMzOTk2MywgNTMuNDM3MjM0NzE0MTMwNzFdLCBbMC4zNTMwNDgyNzcyNzE3NzU1LCA1My40OTUyNzY2ODY1Nzc4MjRdLCBbMC41MjgzNjY1NDM3MDk2MzQxLCA1My4zNTA1NTQ1MzY0NDM5MTZdLCBbMC40OTg1OTQ2ODA3MTc1MTU5LCA1My4xNDcyNDUyMTQ3MjMzXSwgWzAuMjkyODExMjg5MzIwNjU2MSwgNTMuMDg4NTk4MTA1NDkwNDA1XSwgWzAuMTE3MDIyNzA3Nzk5MTIwMTUsIDUzLjIzMzg2NTM3NTUyMTA4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZTE5M2MxOTBkZTA0NDhkMzkwODY2OGRiZDg2M2UzYTguc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fODcxM2I3N2U3MTlkNGMzMDg1NWZjZjEzODQ3NDZhZGIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC41OTE5OTgwNTI1MTM5MTIsIDU3LjIzMjg3MTQ4MDA1MDddLCBbLTQuODEwNDExNjQyMDM5NDYzLCA1Ny4xNzgzNzM1OTQwNzY2OF0sIFstNC45NDk0OTMzNDI2MDkxNzEsIDU3LjM0NDcwMzgxNjM2NzM0XSwgWy00Ljg2OTUwNjA2NDI0ODA2OSwgNTcuNTY1ODM2ODQyMTc1OTRdLCBbLTQuNjUwNTQzOTk5MjExNDMxLCA1Ny42MTk4Njc2MjA4MTc1MV0sIFstNC41MTIxMTcwODQxNDQwOTIsIDU3LjQ1MzIzNTAwMTUxMjE3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fODcxM2I3N2U3MTlkNGMzMDg1NWZjZjEzODQ3NDZhZGIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYWFiYmQ4ZTliZDY5NDExYmE2NjQ1MTdkOTZiOTA1NTQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi45MDc4NjgyNjM3MDE1MzYsIDU0LjkxMzI4MDAzODQ4MDMyXSwgWy0zLjExOTIyNDI5MTQ2MjMxODcsIDU0Ljg1Njc1NDczMjkxMDY4XSwgWy0zLjI1MjgyMjAxODMyNzI1MiwgNTUuMDE0NzU2NDIwNzIyNTVdLCBbLTMuMTc0NDE3OTYyMzQwMDg1NCwgNTUuMjI5NjQ0MTc2NzI1NTE1XSwgWy0yLjk2MjQ4ODI2Nzg0OTI4OCwgNTUuMjg1NzY4Nzc1NjczNTZdLCBbLTIuODI5NTM1OTM1MzQxNDYwNiwgNTUuMTI3NDA4NzU5NDI2MzldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9hYWJiZDhlOWJkNjk0MTFiYTY2NDUxN2Q5NmI5MDU1NC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xNzY4YzkzNjA0MDM0NDc2OTZlZjg1M2M4NTk3ZDc5NSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00LjQzNTI1NzAwNjQ1NjcwMiwgNTIuNTQwMzU4NTg5NzI3MzNdLCBbLTQuMjE4NzY4MTY3NzA1MDQxLCA1Mi42MDEyNzgzMDQyMzIxNzRdLCBbLTQuMDQxMDI1NDEwNjE1MjczLCA1Mi40NTIyNDMwNzAwNTg2Ml0sIFstNC4wNzkzNjEzOTAzNTE2MDcsIDUyLjI0MTczMjQyNjM5NzQ4XSwgWy00LjI5NjE0NzgyNzAxNDgxNywgNTIuMTgwMTgwMjA5ODAxODddLCBbLTQuNDc0MzAxNjM1MDczMTQyLCA1Mi4zMjk3NzA5NTEyMDQ4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMTc2OGM5MzYwNDAzNDQ3Njk2ZWY4NTNjODU5N2Q3OTUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNjA3MGM1NmZiMGJjNGNjN2FmYzY0NWQ5MWI5NzI0MzcgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNS40ODcyOTc4MTYyOTM0MDUsIDU2LjQwNTg4NzQ4Mjk3NzQwNl0sIFstNS43MDcxMTI4NDQ4MTU2MjksIDU2LjM0OTk2MjE5Nzg0NTU4XSwgWy01Ljg0ODE1MTg4MjIyNjQ5NiwgNTYuNTE1MzI3NTc2NDc0MThdLCBbLTUuNzY4NzI0MzUxNzI5MDM4NSwgNTYuNzM2OTUyMDcwODIzMzE0XSwgWy01LjU0ODMzNDE1Mjk0NjM0MTUsIDU2Ljc5MjQyMzIxODg0MzU0XSwgWy01LjQwNzk0NjE4MjY3MDg1NywgNTYuNjI2NzI2NTk2NzMyOTNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl82MDcwYzU2ZmIwYmM0Y2M3YWZjNjQ1ZDkxYjk3MjQzNy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9jZTQzMjNkNjY5MWU0YWJiOGQ5YTU4NThiOThiZDA0MiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy02LjUxMjA1Njk1NDEwODUxMjUsIDU2LjM0Njk3MTk3OTI5NjI2XSwgWy02LjczNDI5NDkwOTQ4MjAyMSwgNTYuMjkwNTE1NjMxNjQ5MTddLCBbLTYuODc3ODUwODUwNTg3MjIxLCA1Ni40NTcwNzkyNTIwMTczN10sIFstNi43OTg1MTk4ODE5NDQ1NDUsIDU2LjY4MDQ0MDI2NDc5MTk0XSwgWy02LjU3NTY5NTQzMjgyNjM2NywgNTYuNzM2NDM2NDE5MTU4MTI1XSwgWy02LjQzMjc4ODAwOTQ2MjQ5NywgNTYuNTY5NTM0NDA1NzU5NDZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9jZTQzMjNkNjY5MWU0YWJiOGQ5YTU4NThiOThiZDA0Mi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl81MGYxZWIyMzIwMjU0NmFiOWZjZTg5OGYzNjEzZmRlMiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjgzNDQyMDg4OTMyNDc0NCwgNTQuNDcxMTY3OTUzNTgzOV0sIFstNC4wNDc3NjE2NTI5NjE2NDYsIDU0LjQxMzcxNDY5OTk3NjI0XSwgWy00LjE4MzY0MTA3MzI4NDI4MTUsIDU0LjU3MTY5NTA3MTYwMTI1XSwgWy00LjEwNTUzNTUxMzgwODE2NTUsIDU0Ljc4NzUwNjU0NzYwNTE3XSwgWy0zLjg5MTYwMTE0NTYxMTE0OTQsIDU0Ljg0NDU2MzYzMzMyNzg5NF0sIFstMy43NTYzNjU2Njg2NzUzODcsIDU0LjY4NjIwNzg5NzQ0NjQ1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNTBmMWViMjMyMDI1NDZhYjlmY2U4OThmMzYxM2ZkZTIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNWE3OTY2ZDU4N2RkNDk5ZDg4YjgwMjRjODc1NmIwZGIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC43Njc3MDIxNzU0NjI2MzksIDU4LjM5ODc0MzQwNDYzMTc2Nl0sIFstNC45ODc3MzgwMTY3NTAwMjQsIDU4LjM0NTY3NTEwNjA3MjMyXSwgWy01LjEyNzY0NDMyMjU3NjIwODUsIDU4LjUxNTE2NzI5OTk2MDY1XSwgWy01LjA0Njg1NjI1NTE5NjgxNiwgNTguNzM3OTk4MDg1MDI2NTJdLCBbLTQuODI2Mjk1NTM0NzkyODIyLCA1OC43OTA1NzEwNjg4ODMxNDZdLCBbLTQuNjg3MDQ3MDEyOTA4Mjg0LCA1OC42MjA4MTEwODQ5Nzg3NTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl81YTc5NjZkNTg3ZGQ0OTlkODhiODAyNGM4NzU2YjBkYi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl84OTJiZDhhNzUzZDY0ZWM0OGNhZDE2ZjE1NGFhMjcxNyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0wLjI3NjkzMTI3MDUxOTE3MzE2LCA1MS45Mzc5Mjg5NjMzNjAwNl0sIFstMC4wNjgwMTIzMjQzMDc3MzQ5NSwgNTEuOTk4ODQwMzEwMTgwNjFdLCBbMC4xMDk1MTg3NjI1OTY5Mjc3MiwgNTEuODUxNjgyOTI5NDQ5MDJdLCBbMC4wNzg2MDAyNjkyNzY4MTM4OCwgNTEuNjQzMDg3MTU0NzA3MTc1XSwgWy0wLjEzMDUyNjY4NTEyNTEwMjA3LCA1MS41ODE1NjUzNTQ3Mjc5OV0sIFstMC4zMDg1MjgzNjk0NTk1MTk5LCA1MS43MjkyNDk1Mzc4MDE5Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzg5MmJkOGE3NTNkNjRlYzQ4Y2FkMTZmMTU0YWEyNzE3LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2UzZWJjMTg1Y2YxNDQ2NmFhMTEwODliYzRiZDRmMjdmID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMS4zNDk2ODcyMjg2MTA5NTQ1LCA1Mi4yMTQ5NjQyNTkzNTEzMV0sIFsxLjU1NDMwNjYzMDQ1NjcxOTUsIDUyLjI3NDkzMDg2NDE3MDQxXSwgWzEuNzMwNTM4MTMzNTcxMzM0LCA1Mi4xMjkyMjE3MDAzNDM2Ml0sIFsxLjcwMjYzNTk4NzIwMTMwMzcsIDUxLjkyMzAyMjUzNzAwMDY1XSwgWzEuNDk3ODM1NDA0OTU3ODk2OCwgNTEuODYyNDU0NjMzNDgyODc2XSwgWzEuMzIxMTE2ODQwMDQyNTEwOCwgNTIuMDA4Njg2OTgzMTE0NzldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9lM2ViYzE4NWNmMTQ0NjZhYTExMDg5YmM0YmQ0ZjI3Zi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl82NzIwZGU4MDFhMzY0MjdlYWFjNDdmMWJlZmUxMjYyOCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0wLjgwNjUyNjUxMjQ2NzMxMjQsIDU0LjkwNDQ3Mzc2MzIwNzMzXSwgWy0wLjYwMTIzNjk1NDM1NjYzNzgsIDU0Ljk2MDAzMTgwNjIyODhdLCBbLTAuNDI3NjMyNzk3NDUzNjY0OTUsIDU0LjgxNjk4MDgzODI4MTMzXSwgWy0wLjQ1ODg2Njc1MTk3OTg3MTg3LCA1NC42MTc4MDU0ODMwNjQ1NV0sIFstMC42NjQ0MjIwOTI1OTQzMDQxLCA1NC41NjE2NDI3MjM3Mzc1M10sIFstMC44Mzg0Nzg3OTI1NjQ0NjA4LCA1NC43MDUyNjAxMDgxMTI3OTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl82NzIwZGU4MDFhMzY0MjdlYWFjNDdmMWJlZmUxMjYyOC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl84ZDA5NDAzNjEzZGQ0ODk2ODM3YTEzZDZiMjdmZTFkNCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjE2MTk1NDYyNTkxNDA1OCwgNTguOTg1NTE0MDc0NTM5NjQ0XSwgWy0zLjM3ODE2NzM3NjcwMTMyMDMsIDU4LjkzMzg4OTQ2MzI1MTUwNF0sIFstMy41MTQyNDc3NTU5MjM3MzkzLCA1OS4xMDI2NDExNDY4MTg0MzVdLCBbLTMuNDMzNDU2ODk2OTQ5NjEwNiwgNTkuMzIzMjYzMDQzODQzNl0sIFstMy4yMTY3NDg2MzA1MzEzNjkzLCA1OS4zNzQzOTE5NTYxMDIzMV0sIFstMy4wODEzMjU4ODIyNTAwNTMsIDU5LjIwNTM5NzA2MDE4MzAxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fOGQwOTQwMzYxM2RkNDg5NjgzN2ExM2Q2YjI3ZmUxZDQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMmRiZTc5N2I5ZWU2NDNlY2FkZjkyY2VhNzIyYTQwYjggPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC4wNDEwMjU0MTA2MTUyNzMsIDUyLjQ1MjI0MzA3MDA1ODYyXSwgWy0zLjgyNTExODA3MzIwNzIzMDMsIDUyLjUxMzIyMDg3ODcxNDE3XSwgWy0zLjY0NzI1NzA2OTAwMjYzMzYsIDUyLjM2NDMxODY5MTM1MDAxNF0sIFstMy42ODQ4ODY3Njc4NjkxMzE1LCA1Mi4xNTM4ODYxOTcwMTY0NTVdLCBbLTMuOTAxMDgyNzcyMjcyMjQzNiwgNTIuMDkyMjc3OTM3NzQyNDddLCBbLTQuMDc5MzYxMzkwMzUxNjA3LCA1Mi4yNDE3MzI0MjYzOTc0OF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzJkYmU3OTdiOWVlNjQzZWNhZGY5MmNlYTcyMmE0MGI4LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzc4NDkxMGIzYWNmOTRiMDU5OTJkNTRkZjhmYjcxOTMzID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTEuODc2Njg5NzQyODAzNDkyOCwgNTkuMjkxOTg4NzYzNTI5MTc2XSwgWy0yLjA4OTQ0OTU1NTc0MzQ0NjUsIDU5LjI0MTI5NjE1OTQxMTkxXSwgWy0yLjIyMjM0MTIxNzI5ODQ4LCA1OS40MDkwMzgzMzU2NTIxXSwgWy0yLjE0MTgxNzU1MDE0MjU3NSwgNTkuNjI3NzA0NDU5NzEzMzhdLCBbLTEuOTI4NTgyOTE2MDU5NzQ4MywgNTkuNjc3OTA0OTU2NTQ0MzRdLCBbLTEuNzk2MzQ1ODUwOTIxMjY0MiwgNTkuNTA5OTMzNzQzMDg4MTddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl83ODQ5MTBiM2FjZjk0YjA1OTkyZDU0ZGY4ZmI3MTkzMy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xNTczNWJlNjRkNjM0OTcwOWM3OWQzMjUxOGZiNzVjNyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00LjIzNjUwMDExMDczOTQ5LCA1Ny4xMjE3ODA0NjI3MTUyOF0sIFstNC40NTM4NjIwMjUwOTg5ODIsIDU3LjA2NzI5NzQ0NzYxODUzNl0sIFstNC41OTE5OTgwNTI1MTM5MTIsIDU3LjIzMjg3MTQ4MDA1MDddLCBbLTQuNTEyMTE3MDg0MTQ0MDkyLCA1Ny40NTMyMzUwMDE1MTIxN10sIFstNC4yOTQyMDgxODU5MTIyMDYsIDU3LjUwNzI1NjE0Mjc5MDIwNF0sIFstNC4xNTY3MjY2NDA3MzE5NTUsIDU3LjM0MTM3ODEzNzU1MTE3NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzE1NzM1YmU2NGQ2MzQ5NzA5Yzc5ZDMyNTE4ZmI3NWM3LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzgzZjIxZWU4OTJlZjRjZDhhOTRjNTQyZTAzMWY2YTZhID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNzg1OTMyNTYzMDIzMDg4NCwgNTMuNzg3MTA0NzcwOTM4NDA2XSwgWy0yLjU3NDU1NTAzODg1MTY1MzYsIDUzLjg0NTI2MDQwOTQ0MzM4NF0sIFstMi4zOTg4MjE1NzUyODI0NTk4LCA1My42OTkxNTYzMTQ4ODA3Ml0sIFstMi40MzQwMzYxMTg5OTI3Nzc3LCA1My40OTQzMzI1NDMyNzEyNF0sIFstMi42NDU3MDE0ODA0MDc1NDgsIDUzLjQzNTU1NjczNjA3MjY1NV0sIFstMi44MjE4NjU0NzAzMzY1NzA0LCA1My41ODIyMjQ4MjQ4ODI0OTVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl84M2YyMWVlODkyZWY0Y2Q4YTk0YzU0MmUwMzFmNmE2YS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xOWNlMjg5YzcxMmM0ZGRlYThhOGFhZWM0YjUwYTllOSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjExNjA2NTM2MDAwOTQzMSwgNTIuOTk0OTIyNDUwMTk3NjldLCBbLTEuOTA0NzgxNDI0ODAzMjU0OSwgNTMuMDU0Mzc4NzE5MTYwNTc0XSwgWy0xLjcyODAxMzI5NDY2NjcwNjQsIDUyLjkwNzUyMjU1MTQwMzk1XSwgWy0xLjc2MjA4NjY4MjI3ODUyODQsIDUyLjcwMDY1OTQ3MzUyMzY2NV0sIFstMS45NzM2MzIxNDAyODYzMzU1LCA1Mi42NDA1ODQ0ODQ4NDMwM10sIFstMi4xNTA4NDM3NzM0NjcyOTEsIDUyLjc4Nzk5MTE2MzAyNjI4NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzE5Y2UyODljNzEyYzRkZGVhOGE4YWFlYzRiNTBhOWU5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzA2MWVmZDVlNjZmZjQzY2VhMTljY2EwM2ExYTA3OTdhID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTUuMDQ5NDM3OTMxNjI2ODQ0LCA1MC4zMzY3ODU4NzIxNzQ1NV0sIFstNC44Mjg2NzY4MDk1MzM1OTMsIDUwLjQwMTk0MzQyNjEwM10sIFstNC42NDc2ODgwNzU1MTI3MDk1LCA1MC4yNDk1NTMyNDY4OTg5OV0sIFstNC42ODcwNTEzMzM2NTc0OTksIDUwLjAzMTQ4MjY3MDExNjRdLCBbLTQuOTA4MDc4NzcwOTg0ODIsIDQ5Ljk2NTY4ODY5MTk2MDA1NF0sIFstNS4wODk0Nzc2MzA0Mzc1NDgsIDUwLjExODYwMTI1NTgxMTM4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMDYxZWZkNWU2NmZmNDNjZWExOWNjYTAzYTFhMDc5N2Euc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMTdhYzJlNDBhZmNlNGZlODk1YzQ0N2Y1M2NkZDZiOWQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC42NTMwNjg3MDg5ODU2NTcsIDU1LjQyNzQ5ODAxMDE3NTVdLCBbLTQuODY5NjY2OTAwNzQ2MTUyLCA1NS4zNzA3Njc3MjQ5MDE2NF0sIFstNS4wMDgxNzkwMjIyMDc0MiwgNTUuNTMyNDIzNjYzNDQzMzhdLCBbLTQuOTI5NDQ0NTUyMDYwOTAzLCA1NS43NTExNjY5MjcxODIxMl0sIFstNC43MTIyNjA2NDU5OTEzMjgsIDU1LjgwNzQ3MjUxODE3NDQ4NV0sIFstNC41NzQzOTY1NTU0NzA1OCwgNTUuNjQ1NDYyMDgwNTc2NjE0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMTdhYzJlNDBhZmNlNGZlODk1YzQ0N2Y1M2NkZDZiOWQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fODNmNTk1YjAzM2Q5NGExMmFjY2U1YjE1ODJlNjNjZWQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMS4yNTE0NTI4NjcyNTc2NjUsIDUwLjg0NzQyMjUyNzI0MTk1XSwgWy0xLjAzODczMzgxNzQyMDU2NjcsIDUwLjkxMDU4NzQxOTYzMzUxXSwgWy0wLjg1OTMzMjUwNjQyNjE4NiwgNTAuNzYxMzQxMDUyNzI0MjNdLCBbLTAuODkyMTg5MjM2Mjk5NDg0OCwgNTAuNTQ4NDE1Mjg3MTczNTFdLCBbLTEuMTA1MTE1NTI4MTM1NTU4NSwgNTAuNDg0NjM0MzA0MjYyNjRdLCBbLTEuMjg0OTc5MDU1OTk3NjQ2NiwgNTAuNjM0Mzk0ODAxOTc0NThdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl84M2Y1OTViMDMzZDk0YTEyYWNjZTViMTU4MmU2M2NlZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl85MGJiZmExY2U2NDM0OTZmYmE3NTFkZmRlMTQ2MmJlMyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0wLjI4NDgwNDQyOTg4NTY2NzIsIDU0LjQ3NDI5NTQ3MjA2MDcyXSwgWy0wLjA3OTk2NzAxMDc4ODc4ODk4LCA1NC41MzA1MjQ0NjE5ODI3XSwgWzAuMDk0MDgyMDgwODI4OTkyMzMsIDU0LjM4NzEyMjM0Njc2MjU3NF0sIFswLjA2Mzc1MzYyMDkwMjUwMTEzLCA1NC4xODY5MzIwMDk2OTkyMV0sIFstMC4xNDEzMzI1Mzc2NDEzMTMzNywgNTQuMTMwMDk5MjQwMDU2MDhdLCBbLTAuMzE1ODQyNjQzMTkwOTc5NzcsIDU0LjI3NDA2MDYxNTYyOTM3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fOTBiYmZhMWNlNjQzNDk2ZmJhNzUxZGZkZTE0NjJiZTMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNjU4ZWY5YzAyYjRlNDkxMTk4ZTM0YWU3YWRkNWQ5YmEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMS44OTI4OTM1OTgxNzUwMzU0LCA1MC42NTY4ODA2NDE0NjgxNTZdLCBbLTEuNjc4NTM3MzgzMDMzMTM5OCwgNTAuNzIwNTY5NzA0NjgxNzVdLCBbLTEuNDk4NjI4NzkwMDk4MTA3NSwgNTAuNTcwNjU5NDQ4MTc4OTldLCBbLTEuNTMyNjIyOTMxMTAyMjQzLCA1MC4zNTY1NDU5MjMwNjY1MDZdLCBbLTEuNzQ3MTk0NzYyNTc4MDE1LCA1MC4yOTIyMzczOTYzNzUwNV0sIFstMS45Mjc1NTgwMTM2MDI3MzUsIDUwLjQ0MjY2MTQ1NjcyODAwNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzY1OGVmOWMwMmI0ZTQ5MTE5OGUzNGFlN2FkZDVkOWJhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzQ4OTUyNDVjNDMzYjQ4MjA4YmI5ODIyZmEwODIzZWQ3ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTUuMjI0OTUyMTk3NDI3OTE2LCA1Mi43MTcxNjM4NzIzNzUyOV0sIFstNS4wMDczNTYzNDEzMTg0MjEsIDUyLjc3Nzk2NTM0MTM5NTA4XSwgWy00LjgyOTkxMjQ4MTY0MzM1LCA1Mi42Mjg2NjU0NTYxNDkwOV0sIFstNC44Njk2Njc5MzE2OTg2MiwgNTIuNDE4MDAxOTg2NDQzODNdLCBbLTUuMDg3NTc5MTUxMTYwOTQxLCA1Mi4zNTY1NjM5MTI2NzAxNzVdLCBbLTUuMjY1NDIwNDQzODExOTk1LCA1Mi41MDY0MjU3NDQ0MDkyMzVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl80ODk1MjQ1YzQzM2I0ODIwOGJiOTgyMmZhMDgyM2VkNy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8zN2IzNmYxZmZiYzQ0NWI4OWI5NWQ0NzhhNDE1ZTM3MSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjcxMjg0Mjg0OTgxNTI2OCwgNTUuODY5NTY2MjE0MDMwNjU1XSwgWy0zLjkyNzQ2NzQzMTQwMzEyOTMsIDU1LjgxMzc4NTI0MDgzOTUyXSwgWy00LjA2MzcxMDQxOTUxMTI2NywgNTUuOTc1NDAxNTIyOTEwOTddLCBbLTMuOTg0Njc4MzY3NDQxNjQ3NSwgNTYuMTkzMTM4MzI3NzE5NDc0XSwgWy0zLjc2OTQ4NzY5Nzc5MzY1MDcsIDU2LjI0ODQ5MDU0NDI1MDg0XSwgWy0zLjYzMzg5NDcxMzI4NzMwNywgNTYuMDg2NTM3MTk1NTE5MjRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8zN2IzNmYxZmZiYzQ0NWI4OWI5NWQ0NzhhNDE1ZTM3MS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl83MGUzMTJiZWY5NDQ0ZDc0OWUzOGJmY2VmMTVkN2YyNCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01LjYwNjgwNTExMTQwNTE3NywgNTEuODA3MjAyNTEyODg2NjVdLCBbLTUuMzg3MjA2OTk5Nzc2MDQ4LCA1MS44Njk4MDQ2NzExOTcxNV0sIFstNS4yMDgzOTkyMzg0NTQzODksIDUxLjcxODk2OTA2MjAwMTY3XSwgWy01LjI0ODc5NTIzMzQ2OTkyNCwgNTEuNTA0OTgwOTc5NDM4NzA2XSwgWy01LjQ2ODY5ODUxMzI0NTAyOCwgNTEuNDQxNzM4ODgxNjc5MDldLCBbLTUuNjQ3OTAxNTMwMzM0Njg2LCA1MS41OTMxMjQ1MjY4NjMwODZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl83MGUzMTJiZWY5NDQ0ZDc0OWUzOGJmY2VmMTVkN2YyNC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl83ZWIwNWEzYmFkMzM0MGM4OGZhNGFjMmMzNWJlMjAzMSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjg2MTI2NjE5NTAxMzc0NTIsIDUyLjE4OTA0MjUyMDEyODA2XSwgWy0yLjY0NzIxMjQ1MjY5MzgwNjYsIDUyLjI1MDE5MDUzNTM2NDY5XSwgWy0yLjQ2OTEyMDg5NDA4Mzg0NjMsIDUyLjEwMTY5MDMwMjYxMjIwNV0sIFstMi41MDQ2NDc4NzU4Nzk4MTAzLCA1MS44OTE0OTkwOTE0MDEyOV0sIFstMi43MTg5NjMzNzc2MTkxNiwgNTEuODI5NzI2Nzc5NDc5ODRdLCBbLTIuODk3NDkxMjA1ODA2NTc4LCA1MS45Nzg3Njk3NTExNTM4ODRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl83ZWIwNWEzYmFkMzM0MGM4OGZhNGFjMmMzNWJlMjAzMS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lM2Q3YTFmNDJmZjM0MzJiOWE5MDZhODRlZGJmNTY3OSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjY0NzI1NzA2OTAwMjYzMzYsIDUyLjM2NDMxODY5MTM1MDAxNF0sIFstMy40MzE5NDk1ODEyNzUwMjYsIDUyLjQyNTM1MzkxMjcwNTAxXSwgWy0zLjI1Mzk5MTA3MDI5MTE3NDcsIDUyLjI3NjU4NTI0NTA5OTQ1XSwgWy0zLjI5MDkxNzA0OTM1MDgwNywgNTIuMDY2MjMyMDQ1Mzc4MjVdLCBbLTMuNTA2NTA0MjQ5NzA0MzMyNCwgNTIuMDA0NTY4NDI0ODU0MDhdLCBbLTMuNjg0ODg2NzY3ODY5MTMxNSwgNTIuMTUzODg2MTk3MDE2NDU1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZTNkN2ExZjQyZmYzNDMyYjlhOTA2YTg0ZWRiZjU2Nzkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fOTNkNTI5ZDc4ZWI4NGVlMjkxZDQyMThjMWFkMjYwNDQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNS4wODc1NzkxNTExNjA5NDEsIDUyLjM1NjU2MzkxMjY3MDE3NV0sIFstNC44Njk2Njc5MzE2OTg2MiwgNTIuNDE4MDAxOTg2NDQzODNdLCBbLTQuNjkxNjU5ODg4MTA0MzgsIDUyLjI2ODI3NTQ2MjAxMDk5XSwgWy00LjczMTE2MjYwNjA1ODM2NywgNTIuMDU2NTU0NjYyOTkxMTI1XSwgWy00Ljk0OTM4MDAyOTUxNzg2OSwgNTEuOTk0NDgwMTQ5NDgxMzI2XSwgWy01LjEyNzc4OTQ0MzE3NzA4NywgNTIuMTQ0NzYyNjYzNTI1MThdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl85M2Q1MjlkNzhlYjg0ZWUyOTFkNDIxOGMxYWQyNjA0NC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wYjExZGMzNjNlN2U0YTNjYTJmOTY1ZGEzMTFmZTY3NSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjc1Nzc0OTU2NDk1OTAwOCwgNTguNDgzMjU0MzEzMDUzMzQ0XSwgWy0yLjk3MjM2MzQxMDkyNzk3NDQsIDU4LjQzMTEzOTIzNDA3ODAyXSwgWy0zLjEwNzIyMjAyODQ4MDgxOSwgNTguNTk4MTM4NjcyODIxNzNdLCBbLTMuMDI2ODEwMDAwNzAzNjI5LCA1OC44MTc1MTI0NjE4MTkxXSwgWy0yLjgxMTY5NDIyNzEyNTU3MiwgNTguODY5MTQ2MDM5Mzk3NjldLCBbLTIuNjc3NDkxNjAzOTIxNDY1LCA1OC43MDE4ODk3MTIxNzUyMl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzBiMTFkYzM2M2U3ZTRhM2NhMmY5NjVkYTMxMWZlNjc1LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzI1NmE0OWExODYzODQwOWI5ZTViOTY2OWUzN2YzMmU4ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTcuMjQ1NTQ3NzAzNjc5NzY3LCA1Ni41Njc5MzgwNDgxNjU2MTVdLCBbLTcuNDY5NzM4OTYzNzAxMTQ3LCA1Ni41MTE0MzA2NTM5ODY1OTRdLCBbLTcuNjE1MTI3NzE1MzIxNDI0LCA1Ni42Nzk1NTUyNDk2NDAxXSwgWy03LjUzNTY3Nzc1MjQ2NDgxMywgNTYuOTA0NTI1NTk2MDk2Nl0sIFstNy4zMTA4OTgxNDU3NjU2NjEsIDU2Ljk2MDU2MTk1NDUzODNdLCBbLTcuMTY2MTU2NDAwOTgxMTgyLCA1Ni43OTIxMDE2OTc5NzgyNTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8yNTZhNDlhMTg2Mzg0MDliOWU1Yjk2NjllMzdmMzJlOC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9iYmFlNWJlMmQwYmE0NDAxOWExMDJmNTU4ODg2NDEyMyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjMwNDMzMDQ3MzE5ODU2OSwgNTcuNjA0ODkxNTMyMjE1OTJdLCBbLTIuNTE2ODE5OTk0ODQwNjIyMiwgNTcuNTUxODQ4Mjk3NTM0NDg0XSwgWy0yLjY1MDEyMTczNDg3NzUxMywgNTcuNzE2MDgxODc2MDY4MTRdLCBbLTIuNTcwMjgwMTUxOTE2MTEzNCwgNTcuOTMzNjQxOTQ2MTU5MDRdLCBbLTIuMzU3Mjc1ODUzOTU3NDM2LCA1Ny45ODYyMjY2MjU2ODg5XSwgWy0yLjIyNDYyNzIwNTA3MTI4MSwgNTcuODIxNzEyMTY4ODkxNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2JiYWU1YmUyZDBiYTQ0MDE5YTEwMmY1NTg4ODY0MTIzLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzZhNDY2NzRiYWIyZjQ2NDNhZjYwYjJkNWE1YmVlYTgyID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTYuNzQ4NzQ2NTA4NzcyMjkxLCA1NS42ODAzNDk2OTM3MjQyN10sIFstNi45NzA3Njg1NDAyODkwNDEsIDU1LjYyMjk2NjA2ODQ1NDA5XSwgWy03LjExNDY4NjY4MjUxOTY4LCA1NS43ODgwNDg3NDEzOTc4M10sIFstNy4wMzU5Mzc2Mzk5MTY4Mjg1LCA1Ni4wMTA4NzY5MzcyNjAxMV0sIFstNi44MTMzMTI5MTc3NDQ3MjcsIDU2LjA2NzgxNTA0NzgzODc0XSwgWy02LjY3MDAzOTU4ODI2OTUwOSwgNTUuOTAyMzczMTQ4NTk5OTg1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNmE0NjY3NGJhYjJmNDY0M2FmNjBiMmQ1YTViZWVhODIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZjBjY2MxYmNkZWIzNDU4YmI0Nzk1YWQxYjg1MjdjM2EgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMC42MTQ5NjQ1NjY0NDAwMjQzLCA1MS4wMzYzOTY5ODg2NTU4Ml0sIFstMC40MDM5MjMwNjA5MDk1NzE3LCA1MS4wOTkwNDI3ODk4MzE3Nl0sIFstMC4yMjUwNjE2ODAyMTcxODU3NiwgNTAuOTUwNDU3NzI2MzYwNTU0XSwgWy0wLjI1Njc3MzcxNzE0NzMxMDczLCA1MC43Mzg3MTIxNDczMDg1OV0sIFstMC40NjgwMTM5NzA4NzI2MzcsIDUwLjY3NTQ1MzY0ODU0MzYxNl0sIFstMC42NDczNDQ2NzczNDU5MTQ4LCA1MC44MjQ1NTMwNzYzNDg2OV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2YwY2NjMWJjZGViMzQ1OGJiNDc5NWFkMWI4NTI3YzNhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzFiNjg0NjQyOTIzOTRkNWRiZDNhZDE1YjY3NWZhNjk5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMS4xMTU1MDY3Njk4NjczODUsIDUxLjk0ODE3MTI2ODE0MzgyNF0sIFsxLjMyMTExNjg0MDA0MjUxMDgsIDUyLjAwODY4Njk4MzExNDc5XSwgWzEuNDk3ODM1NDA0OTU3ODk2OCwgNTEuODYyNDU0NjMzNDgyODc2XSwgWzEuNDY5NDI4MTA3MzgxMzE5MywgNTEuNjU1MTg1ODY5NjIzMzldLCBbMS4yNjM2MzY2NDUwNTYyNTg2LCA1MS41OTQwNjcyNTEwNjU0MV0sIFsxLjA4NjQzMjU2Nzg3NDAwNzIsIDUxLjc0MDgyMDA2MDg2Nzc0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMWI2ODQ2NDI5MjM5NGQ1ZGJkM2FkMTViNjc1ZmE2OTkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNGU2YjQxMDY3OTY1NDE2ODhmODkyOGMwNTk1OGM1NjIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC4zNzgyMjYwNTY2MjcwMDIsIDUzLjkzNTYyNjUwNjA3MzQ1NF0sIFstNC41OTI4ODk0MDUyNzk4OTEsIDUzLjg3NzE3MDA1MzI0ODM0XSwgWy00Ljc2ODM4NzkxNzAzMDAwMywgNTQuMDI0NDM1ODE5Nzg0MDJdLCBbLTQuNjkwNzE3NjM0NjM3NDgxNSwgNTQuMjQwMzY4MjgyNjA5MDFdLCBbLTQuNDc1OTE0OTkwMTc2Mjg5LCA1NC4yOTgzMTU0NTIxMTU1NDZdLCBbLTQuMzM5MzkzMDYyMTQzMDc0LCA1NC4xNDA3MTkyOTY1MzI4OF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzRlNmI0MTA2Nzk2NTQxNjg4Zjg5MjhjMDU5NThjNTYyLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2VmOWE0MTZjMzc0ZTRmMDNhNzc0N2I3YzY1Yzg1MDYzID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuOTQ4ODgxNDk1OTc5MzY5LCA1NS4yMTk3NDc2MDU0OTc5MzZdLCBbLTQuMTYzNDAzNDI2MjM2NDgzLCA1NS4xNjMwOTYwNTQ3NjUyNzZdLCBbLTQuMjk5OTY1MTY0NDQ3MDUxLCA1NS4zMjMyNzQ3NzMyMDA2NF0sIFstNC4yMjEzNTcyMDk4NTE2MDcsIDU1LjU0MDQ2MzcxMDA3ODIzXSwgWy00LjAwNjI1Mzk2NDU1ODU4MSwgNTUuNTk2NzAwMzQzMjgwMTldLCBbLTMuODcwMzM5NjI0Mjc3Njc0LCA1NS40MzYxNjU0NTQ5MTE3N11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2VmOWE0MTZjMzc0ZTRmMDNhNzc0N2I3YzY1Yzg1MDYzLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzI5OGNjYmJlOTk3OTRhMTk5YzNjZDM0M2MzYzgzNzhjID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuNjQzNjU4MTA4ODIwMTA5NywgNTcuNjY4MzQ5MzkyNjAzMDddLCBbLTMuODU5OTczODM3NTA4MzQxNCwgNTcuNjE0ODEyNzA1NzQwMjhdLCBbLTMuOTk2ODAwMjAwNDU5MjE2MiwgNTcuNzgwOTg1MjExNTYwMjhdLCBbLTMuOTE2NjU0NDcwMzA1MzYsIDU4LjAwMDk4MTkxMzA0MDVdLCBbLTMuNjk5ODA5NzIzODE0NTUyNCwgNTguMDU0MDQ4NTgzMDk5NTVdLCBbLTMuNTYzNjM5MDQxNjcwNTY4NiwgNTcuODg3NTkxMDIzNzEwNTU2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMjk4Y2NiYmU5OTc5NGExOTljM2NkMzQzYzNjODM3OGMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZmY0NTAxODRkNWQ4NGQyNjkyYzY5ZDY4NDY2NmZmOGUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy4xNzM1ODI1NDQ0MDU3NDMsIDUzLjg3NTIzNTE1MTgxOTQ5Nl0sIFstMi45NjE1Nzk0MDgyNDA2MzY0LCA1My45MzMzMjY0MDQzMDAzNl0sIFstMi43ODU5MzI1NjMwMjMwODg0LCA1My43ODcxMDQ3NzA5Mzg0MDZdLCBbLTIuODIxODY1NDcwMzM2NTcwNCwgNTMuNTgyMjI0ODI0ODgyNDk1XSwgWy0zLjAzNDE2NTQ2MzAyMTEzMDUsIDUzLjUyMzUxMTU0OTUzMDY3XSwgWy0zLjIxMDIzNjY3MDgyODE5MDQsIDUzLjY3MDMwMDIwODE2Njk2NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2ZmNDUwMTg0ZDVkODRkMjY5MmM2OWQ2ODQ2NjZmZjhlLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2E2NTFlOTJmNjQ2ZTQ1OGZiYzRhZmIzMjFmZDA5ZmFmID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTYuMzk5MTI4Mjg1ODUwNzc5LCA1Ny43OTk1NzkwMjMyNjkzXSwgWy02LjYyMjY2ODc0ODc0Mjg4NTUsIDU3Ljc0NTAyODg3MDE0NDY2NV0sIFstNi43NjYzNjI1OTY1ODkwNjM1LCA1Ny45MTUyMTgwMzUyMTU0NV0sIFstNi42ODU4NjEzNDM0OSwgNTguMTQwMjUzNTc3Njk0NzY0XSwgWy02LjQ2MTc2NzM1ODM4OTUzOSwgNTguMTk0MzA5NDkxMjE5OTZdLCBbLTYuMzE4NzI3NTE2MDM3OTk1LCA1OC4wMjM4MjY3MjAzMzQ5NzRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9hNjUxZTkyZjY0NmU0NThmYmM0YWZiMzIxZmQwOWZhZi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl80MDRhNThjZjk2ZWU0ZDgzODJlNzQ0MTM1NzhkODMzMCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjM2NDc1ODA0NzQ5NDU4NCwgNTUuNTE2NjY1MTAzMTQ2OTNdLCBbLTEuNTcyMzg2MDYzMTg1NzM2MywgNTUuNDYxNTMxMjAzMzcyMzldLCBbLTEuNzAyMDU1NjI0NDk0NTA2LCA1NS42MTkxNTk4Nzg4OTAwOTVdLCBbLTEuNjIzNDUyNTM3MzU4NDYwNSwgNTUuODMyMjU4NjUyOTY3OTddLCBbLTEuNDE1MjgyNjkzNjkzODE0OCwgNTUuODg2OTg3OTgyODg3NTddLCBbLTEuMjg2MjU3Mjc4NzYyODA2NCwgNTUuNzI5MDI1NDUzOTkyNDg1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNDA0YTU4Y2Y5NmVlNGQ4MzgyZTc0NDEzNTc4ZDgzMzAuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fODg1ZjMzYWVkM2FjNDJiMjgyOWMwMTcyZjgxYzUxNmEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy4zNjUwMDQzMDk3NzY4NzY1LCA1MS42NDMzNzIyMzcyNjc0NjRdLCBbLTMuMTQ5MTQ2NTcwMzE1MTgzNSwgNTEuNzA1NjYzOTMxNzc4ODddLCBbLTIuOTcwMTg1MDM2Nzc4Njc3MywgNTEuNTU2MDgxMTIxNTg2MTVdLCBbLTMuMDA2NjUxMjMzNzA1MTA4MywgNTEuMzQzNjY5NTQ4MTQyMDRdLCBbLTMuMjIyNzcwMjI1Nzk4MDYxMywgNTEuMjgwNzUwMjc0MTI1MjI1XSwgWy0zLjQwMjE2MjgyMzcxMzQ5MDQsIDUxLjQzMDg2OTg2MjgyMjUxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fODg1ZjMzYWVkM2FjNDJiMjgyOWMwMTcyZjgxYzUxNmEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNzdlZGRlYTMzYWQ3NDc3YTg1NWExMDMyZjNlNmJmYjUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC4xMjEyNDI1NzYwODk4NzMsIDU2LjM1NTgzMDAyMDY1OTc5NV0sIFstNC4zMzc0ODg4ODc2NDQ1ODgsIDU2LjMwMDQ1MTQwNTU1NjJdLCBbLTQuNDc1MDE4NjQwNzgwMjA2LCA1Ni40NjM4ODY1NjA0ODc3MTVdLCBbLTQuMzk1NjQ5NjQ5NDk4MzkyNSwgNTYuNjgzMDI4NDAwMTQyNjJdLCBbLTQuMTc4ODQxOTk5OTUyNDczLCA1Ni43Mzc5NjM5MTA1MzIxNDRdLCBbLTQuMDQxOTY0MTc0OTc5NzE1LCA1Ni41NzQyMDMxOTAxOTMxNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzc3ZWRkZWEzM2FkNzQ3N2E4NTVhMTAzMmYzZTZiZmI1LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzM2YjIwZDgzNTQ1NDQzZTZhYWJlODNlMTRhMjkxOGI0ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTEuNzI4MDEzMjk0NjY2NzA2NCwgNTIuOTA3NTIyNTUxNDAzOTVdLCBbLTEuNTE3NDA2NzgwNDI2Nzc3NywgNTIuOTY3MDM4MTMxNzA5MDldLCBbLTEuMzQwNjIwMDM1MDc0NjU4NCwgNTIuODIwMzA3NTU4NzkyNzldLCBbLTEuMzczOTkxODA0NzI4NDg3NiwgNTIuNjEzNTEzODI0OTI2NTldLCBbLTEuNTg0ODUwODI0MTA1MywgNTIuNTUzMzgxNDU5NzA2NzZdLCBbLTEuNzYyMDg2NjgyMjc4NTI4NCwgNTIuNzAwNjU5NDczNTIzNjY1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMzZiMjBkODM1NDU0NDNlNmFhYmU4M2UxNGEyOTE4YjQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZTNjNjQ1ZDI0Zjg1NDYyYzkwZjYzOTgzMjIyZmQzNzIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMS40NDEwMjIyNjg5NjQ0OTUsIDUyLjE5Nzc5MjU2MDk2MzcwNV0sIFstMS4yMjk5MTk1MzA4MjA1MDUsIDUyLjI1ODU0MTY0MTQzNjI5NV0sIFstMS4wNTIyMzc1ODIxNDExMjYsIDUyLjExMDk4MzU2MzMzNzgyNV0sIFstMS4wODUyMDM5OTI2MDYxNTE2LCA1MS45MDIxNDAwODQzNzc2N10sIFstMS4yOTY1NDE1NjQ3MjA3ODkyLCA1MS44NDA3NzQ1MTc1NTg4M10sIFstMS40NzQ2NzkwNDgzNDA3Njg2LCA1MS45ODg4Njg2OTcwMzkwMjRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9lM2M2NDVkMjRmODU0NjJjOTBmNjM5ODMyMjJmZDM3Mi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9iMGIwZDcxZTMzOTY0MmRmYjliOTM0M2E0NjIwZDRiNyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01LjM2OTE3NDUwNTA1ODQwNiwgNTcuODQ3MzQ3NDEwNTMwNjY2XSwgWy01LjU5MDIxNzQ3NDU4Njc3MywgNTcuNzkzMzAxODczMjQyMDE1XSwgWy01LjczMTQzNjc2MjA3MDgyNTUsIDU3Ljk2MjIyOTAzMjAzNzYzNF0sIFstNS42NTA5NTY0MjU0NjM5ODgsIDU4LjE4NTQ5MTcyMDIzMDIxXSwgWy01LjQyOTM3MDQ2MTE2NDQ2MywgNTguMjM5MDQ5OTIxODU3MTddLCBbLTUuMjg4ODA3MTY0OTUzMTcxLCA1OC4wNjk4MzUzMjUwNzM1MV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2IwYjBkNzFlMzM5NjQyZGZiOWI5MzQzYTQ2MjBkNGI3LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzc5OTE3ZGYzNWVjMzRiMDdiYzkyNDUyOTcwOTZmNjIzID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTEuMTUxNDIzMDg3NDQyMjU1NywgNTEuNDgyMzQ2NTg2MDUzNzZdLCBbLTAuOTM5ODU5NjYxNDE5NTQyMiwgNTEuNTQ0MzI4MjQ4NjA4MTc0XSwgWy0wLjc2MTMyOTAyNTk0NjY2NywgNTEuMzk1OTc5OTgxODE0ODJdLCBbLTAuNzkzOTAxNDQzNTcxOTIyLCA1MS4xODUxMjU4MjAzNTQ4OV0sIFstMS4wMDU2ODE2NTE0NTAyMzg3LCA1MS4xMjI1Mjg2MTY3NDkyNjRdLCBbLTEuMTg0NjczODU1MjcyNTUwNCwgNTEuMjcxNDAwODE1Mjc2NDhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl83OTkxN2RmMzVlYzM0YjA3YmM5MjQ1Mjk3MDk2ZjYyMy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9kNWE1NTBjMmRjZWI0YmY0ODE4MzgyOTUyOThjZGIyNiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00Ljk0OTQ5MzM0MjYwOTE3MSwgNTcuMzQ0NzAzODE2MzY3MzRdLCBbLTUuMTY4OTUwNDM1OTU2MjI2LCA1Ny4yOTAxOTI0OTEyNzEwNjRdLCBbLTUuMzA4OTcwNjcwOTU4ODc4LCA1Ny40NTcyODQwNTYxNDI3Nl0sIFstNS4yMjg4NzgyNjUzNzE0Mzg1LCA1Ny42NzkxOTAyNDgyNzE4NF0sIFstNS4wMDg4NzEzNjA5NDg0MzIsIDU3LjczMzIyOTE2OTIwOTM0XSwgWy00Ljg2OTUwNjA2NDI0ODA2OSwgNTcuNTY1ODM2ODQyMTc1OTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9kNWE1NTBjMmRjZWI0YmY0ODE4MzgyOTUyOThjZGIyNi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8zZjdmNDYwM2NlNTU0ZGQ4YTI0YTdjNzFjZjNmOWU5YiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjYyNjM2MzczMDY0OTYzMzUsIDUzLjUyMzgwNDU3NjE3NDM1Nl0sIFstMS40MTY5NjQwMDY3NTY2NDcxLCA1My41ODIxNDk0MDg1NTY1OV0sIFstMS4yNDEwODk1ODI5NTk0NDIyLCA1My40MzY0MDA5ODYwMzc3OV0sIFstMS4yNzQxNjgwMzU1ODg3NTQ2LCA1My4yMzE3NTI3MTQ0MTY3XSwgWy0xLjQ4MzgyODQ5NDk1NTM2MjYsIDUzLjE3Mjc5MzI4Mjg1NDQxNF0sIFstMS42NjAxNTA4NjMzNTQ0Mzk3LCA1My4zMTkwOTY2NTAyMDUwNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzNmN2Y0NjAzY2U1NTRkZDhhMjRhN2M3MWNmM2Y5ZTliLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzBhODgyN2YzMDI1MzQyMWNiNjA1MDEyYTk2OWZhZTVkID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTAuNjE2NjMyMzc2MDYxMzM1OCwgNTMuNjExMTMyMzkwMTI3MDk2XSwgWy0wLjQwOTU5ODMwMTIxODgzNTU2LCA1My42NjkwNTE3NDUxNTQ4NzRdLCBbLTAuMjM0MTg4NjI5NDcxNDU5NTUsIDUzLjUyNDA5Mzk0NzA1NTY4XSwgWy0wLjI2NTM1MzYyMzg2ODQ2OTQsIDUzLjMyMDY2NTcxMzUzOTk5XSwgWy0wLjQ3MjYyOTgxNTg4NTIxNTMsIDUzLjI2MjEzNzU3NDkxMjkwNl0sIFstMC42NDg1MDAwNTM3NzQ4NzE5LCA1My40MDc2NDYzOTE4Njk0ODRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8wYTg4MjdmMzAyNTM0MjFjYjYwNTAxMmE5NjlmYWU1ZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9mYzA3YzdkYmUwMDA0OTk1YWZlYTFiNzFkY2NlODIwNSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjkwODYxODM5MDk5MTYxNDEsIDU3LjExNjEyOTc5MzgzMDczXSwgWy0yLjExOTQ4NDUwMDk1MDM2NywgNTcuMDYyNjUxMzIyODYxMjVdLCBbLTIuMjUxNDk4Nzk4NjUxODc2NCwgNTcuMjI1MTMzNDk0NjgwNTJdLCBbLTIuMTcxOTk1NTU2Mjk3OTcyNSwgNTcuNDQxMzg5NTQ0MDIyNDY0XSwgWy0xLjk2MDYwOTkyNjQ4MzA1LCA1Ny40OTQ0MjMzMjAyOTY5OTVdLCBbLTEuODI5MjQ2Mzk3MDAwMzA0NiwgNTcuMzMxNjQ4MTA2NTEwMDhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9mYzA3YzdkYmUwMDA0OTk1YWZlYTFiNzFkY2NlODIwNS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8zOWE5MmQ2ZjZmZjA0Yzc0YWY0YWM1N2UxN2VjMWQwMyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjA0NDczNjk0ODgyMDQxODMsIDU0LjY0OTE2NDIxNjgxMTQ4NV0sIFstMC44Mzg0Nzg3OTI1NjQ0NjA4LCA1NC43MDUyNjAxMDgxMTI3OTZdLCBbLTAuNjY0NDIyMDkyNTk0MzA0MSwgNTQuNTYxNjQyNzIzNzM3NTNdLCBbLTAuNjk2MTczOTkzMjk4MTMyMiwgNTQuMzYxMzY0NTAxODU1NjA0XSwgWy0wLjkwMjY5ODk1MTY3MTU3NjgsIDU0LjMwNDY2MTQxNDA2NDcyNV0sIFstMS4wNzcyMDYyOTgyMzY4Mjk4LCA1NC40NDg4NDM3OTEyMTI2OTVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8zOWE5MmQ2ZjZmZjA0Yzc0YWY0YWM1N2UxN2VjMWQwMy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9hNDEzM2U2ZjQyODM0ZjQ1OTM3OGYzMGM4Nzc5OTJjMCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjUwNjUwNDI0OTcwNDMzMjQsIDUyLjAwNDU2ODQyNDg1NDA4XSwgWy0zLjI5MDkxNzA0OTM1MDgwNywgNTIuMDY2MjMyMDQ1Mzc4MjVdLCBbLTMuMTEyNDUxNDg0MTc1NzcwMiwgNTEuOTE3MDUxNDQ3NTEyMzE0XSwgWy0zLjE0OTE0NjU3MDMxNTE4MzUsIDUxLjcwNTY2MzkzMTc3ODg3XSwgWy0zLjM2NTAwNDMwOTc3Njg3NjUsIDUxLjY0MzM3MjIzNzI2NzQ2NF0sIFstMy41NDM4OTc0NTY3Njg2MDIsIDUxLjc5MzA5NTg4NDUyNjU4Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2E0MTMzZTZmNDI4MzRmNDU5Mzc4ZjMwYzg3Nzk5MmMwLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzA2OWEyYjcyZTAxODRkNjY5NWM4ZDMxNTY4NThkZmUyID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTYuNzY2MzYyNTk2NTg5MDYzNSwgNTcuOTE1MjE4MDM1MjE1NDVdLCBbLTYuOTkwODk4OTcwODEyNjc4LCA1Ny44NjA2NjIwNjQ4Mjc4M10sIFstNy4xMzU0ODg3NTY3ODA1NDUsIDU4LjAzMTYzODg2MzAwMDYxXSwgWy03LjA1NDg4ODE1MTQ3NTkyOSwgNTguMjU3NDY1OTI1NDU4NDJdLCBbLTYuODI5Nzk3NzUxNzg5OTc1LCA1OC4zMTE1MjIwMzE1NTA5NF0sIFstNi42ODU4NjEzNDM0OSwgNTguMTQwMjUzNTc3Njk0NzY0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMDY5YTJiNzJlMDE4NGQ2Njk1YzhkMzE1Njg1OGRmZTIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZWYyM2VmYzk3MjcwNGNhNTkyMWQyNjc1MzA0MGU4OTQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy44MTIyNjkyNjQ2OTYxOSwgNTguODMwMTY2OTg4MTc5NzddLCBbLTQuMDMwMTQ5MTQ0MDY5Mjc4LCA1OC43NzgwNjc4NDcwNTI3NF0sIFstNC4xNjc4MTY4ODcyMTY2MTgsIDU4Ljk0NzMyMzg3OTAwMzQzNF0sIFstNC4wODY5NDU2MzE0MDA3MTEsIDU5LjE2ODkzMjAxOTg0MjE2XSwgWy0zLjg2ODU2MDAzOTMyOTE3MTUsIDU5LjIyMDUzMzcxODQzOTcyNV0sIFstMy43MzE1NTA1OTI0MDE2OTQzLCA1OS4wNTEwMjcxNTEzMjI1OF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2VmMjNlZmM5NzI3MDRjYTU5MjFkMjY3NTMwNDBlODk0LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2I4NWE5NjYxZmZmMzQ4YWZiYjUzNjE2YWM1ZDc3MmYxID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTUuODM0NDM5MjcyMDg0NDcxLCA1NC4zMjUwOTM0MzAwODY5Nl0sIFstNi4wNTI2NTIyNTA3Nzc5NzksIDU0LjI2NjUzODIxNTc4MjE3XSwgWy02LjE5MzczODg3NTQ0NjM0NSwgNTQuNDI2NjgzNTczMzY3MzhdLCBbLTYuMTE1OTcxNzc1NjU1ODg1LCA1NC42NDU3NzgyODgwMTg3N10sIFstNS44OTcxMzg4MjI0MDI3MzM1LCA1NC43MDM5Mjc5MDcwODUwMl0sIFstNS43NTY2OTI3NTczMzA2MTEsIDU0LjU0MzM5MTAxNTE4ODM2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fYjg1YTk2NjFmZmYzNDhhZmJiNTM2MTZhYzVkNzcyZjEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNWMwYjMwOTdkNDU3NDdhNjhjNmRmZTNjNDEwZmRmMGUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMC4wODk1MTQ1OTQ3NTgyNjg4NCwgNTMuMTc1Mjc3NDMwMTA2NDc2XSwgWzAuMTE3MDIyNzA3Nzk5MTIwMTUsIDUzLjIzMzg2NTM3NTUyMTA4XSwgWzAuMjkyODExMjg5MzIwNjU2MSwgNTMuMDg4NTk4MTA1NDkwNDA1XSwgWzAuMjYyNTI5OTIxNDk0OTgyNjcsIDUyLjg4NDE5OTc5OTMxNzgxXSwgWzAuMDU1NzY3ODkzOTI1NTIyMTE2LCA1Mi44MjUwMDQ2OTM4NzAyNV0sIFstMC4xMjA0ODkyNDQ2NTA1NjY1OCwgNTIuOTcwODE0OTQ3MDQ3NzE0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNWMwYjMwOTdkNDU3NDdhNjhjNmRmZTNjNDEwZmRmMGUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMzg5MmJmZTg2YTZmNGNiNWEyOTFkNWNhYjU3ZmE4ZTUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC41MDU1NDU3MTY0MTg4NjM1LCA0OS44Nzg3MzA4NjgzMTYxXSwgWy00LjI4NTA5NDU3MjUzNzMxLCA0OS45NDQ1NjgxNjM3ODA2MTZdLCBbLTQuMTAzNTA0MTE5OTAyNDkxLCA0OS43OTE5Nzc0OTI3MDE5NF0sIFstNC4xNDE5NDU3NjI4NDQ5NzMsIDQ5LjU3MzAzNzUxMjM4MTE2XSwgWy00LjM2MjY0NDQwMTQ4Njg1MiwgNDkuNTA2NTY3NDk4ODcyMjE1XSwgWy00LjU0NDY1NDk0NzU2MTc3NywgNDkuNjU5NjY5NjcwMjUzMjRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8zODkyYmZlODZhNmY0Y2I1YTI5MWQ1Y2FiNTdmYThlNS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl85NWRjMDlkOWRhNzM0ZjJmYTllZDZkNmRlZDQ5OWQ0NCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0wLjY2NDE5NTI0MjIyODIyNzEsIDUyLjAyNDM2MjQzNTY0ODQ4XSwgWy0wLjQ1NDUzMjQyNDc3MjcxMTMsIDUyLjA4NTIyMDM0NzcxNDY3NF0sIFstMC4yNzY5MzEyNzA1MTkxNzMxNiwgNTEuOTM3OTI4OTYzMzYwMDZdLCBbLTAuMzA4NTI4MzY5NDU5NTE5OSwgNTEuNzI5MjQ5NTM3ODAxOTJdLCBbLTAuNTE4NDA4MTEwMTgwNTI1OSwgNTEuNjY3Nzc5MTYxOTEyNjA1XSwgWy0wLjY5NjQ3NTAzNTc2NDU1MDYsIDUxLjgxNTYwMDQzOTA4NTk1NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzk1ZGMwOWQ5ZGE3MzRmMmZhOWVkNmQ2ZGVkNDk5ZDQ0LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2I2MWZlZjM3NWM1MzRlMmQ5OWU5NDAzM2M4MDU0YWRlID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTEuNjM1NDgwNTk3MTQ3NDk0LCA1OS45NDYwMzk5NzkzNTY4Ml0sIFstMS44NDgwNTU4MzQxMjE0MDIsIDU5Ljg5NjMxNjg1NTM3Mzc3Nl0sIFstMS45ODA1NzYzMzQ2NDE0NzgsIDYwLjA2NTI0NDA3NjI3MjQ4XSwgWy0xLjg5OTg2NjM2NjczNTQ5ODcsIDYwLjI4NDEwNDg2OTA1MTU3NV0sIFstMS42ODY4MzMwMjk3MTA1ODkxLCA2MC4zMzMzMjQwNjgzNTYxNl0sIFstMS41NTQ5NjY3NjIwNTg4OTcsIDYwLjE2NDE4ODY2NzAxMDA5NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2I2MWZlZjM3NWM1MzRlMmQ5OWU5NDAzM2M4MDU0YWRlLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2VjOTg1MzFkNGFjZTQ1MGM4YmJjNTE1ZWQ4NDQ3Y2ZkID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuMDc5ODE1NDQzNjMwMjk1NiwgNTAuOTE2NzIzMjk3MTQ1ODddLCBbLTIuODYzNDQ0NTk1MTM0NDk0NSwgNTAuOTgwMjY5NDg0NDU2MjRdLCBbLTIuNjgzNTI1NTMzMTgzMjgxLCA1MC44Mjk5MTIyOTAzMDc5NF0sIFstMi43MTk1NDA2NzQ5NDYyMjcsIDUwLjYxNTQ4NDk0MzI0OTc5XSwgWy0yLjkzNjE1Mzg3NzIwNDg2NTYsIDUwLjU1MTMxMjY4MjkxMzc5Nl0sIFstMy4xMTY1MTA2ODIzNjQ2NjE2LCA1MC43MDIxOTM0NjYzNDY0Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2VjOTg1MzFkNGFjZTQ1MGM4YmJjNTE1ZWQ4NDQ3Y2ZkLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzlhZTdkZWZjM2ZkOTQyOWI4MDVjMjg1NDAzZDEwMDBhID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuMzMzNzY4NDQxMjMwODA0LCA1MC42MzgwNjc5NzEzNzUzMV0sIFstMy4xMTY1MTA2ODIzNjQ2NjE2LCA1MC43MDIxOTM0NjYzNDY0Nl0sIFstMi45MzYxNTM4NzcyMDQ4NjU2LCA1MC41NTEzMTI2ODI5MTM3OTZdLCBbLTIuOTcyNjIwODkzOTE0Njg3LCA1MC4zMzU3ODYwMTkxNjI4OF0sIFstMy4xOTAxMjAzMDI4NDI1MjczLCA1MC4yNzEwMzMyMjM4ODg5M10sIFstMy4zNzA5MTIxMzcwMDM0ODcsIDUwLjQyMjQzMzk4MTA0MTYxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fOWFlN2RlZmMzZmQ5NDI5YjgwNWMyODU0MDNkMTAwMGEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fM2E5NjlkNjczMmQ0NDQyNjkyZWQ5ZTFmOGZkZWM5ODggPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNS4wNjgyNTgyNzE4Njc3MzUsIDU4LjEyMzM5MjM0MTM5NTVdLCBbLTUuMjg4ODA3MTY0OTUzMTcxLCA1OC4wNjk4MzUzMjUwNzM1MV0sIFstNS40MjkzNzA0NjExNjQ0NjMsIDU4LjIzOTA0OTkyMTg1NzE3XSwgWy01LjM0ODcyNzE2Nzk1NTM5NiwgNTguNDYyMTAxNjYwNjczOTJdLCBbLTUuMTI3NjQ0MzIyNTc2MjA4NSwgNTguNTE1MTY3Mjk5OTYwNjVdLCBbLTQuOTg3NzM4MDE2NzUwMDI0LCA1OC4zNDU2NzUxMDYwNzIzMl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzNhOTY5ZDY3MzJkNDQ0MjY5MmVkOWUxZjhmZGVjOTg4LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2NjMWYxY2UzMjllMDRiNjJiY2JkMjMzNWFjMDQwOGI3ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQuNjkxNjU5ODg4MTA0MzgsIDUyLjI2ODI3NTQ2MjAxMDk5XSwgWy00LjQ3NDMwMTYzNTA3MzE0MiwgNTIuMzI5NzcwOTUxMjA0OF0sIFstNC4yOTYxNDc4MjcwMTQ4MTcsIDUyLjE4MDE4MDIwOTgwMTg3XSwgWy00LjMzNDk0NTA0MjQ3NTE1OSwgNTEuOTY4NTQxMDE4NTI1MDRdLCBbLTQuNTUyNjAwNjI1NDIzODA2LCA1MS45MDY0MTExODE0MzM2NV0sIFstNC43MzExNjI2MDYwNTgzNjcsIDUyLjA1NjU1NDY2Mjk5MTEyNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2NjMWYxY2UzMjllMDRiNjJiY2JkMjMzNWFjMDQwOGI3LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzdhNzFjZmI3ZDcxZjQ5OThhYzFhOTIyNTUzZWZiNjU5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQuNTMzNDg2NTY0ODExNTUyLCA1Ni44NDc1MzY0NzM2MjI0N10sIFstNC43NTEzNDQyMzUyNjMyNzgsIDU2Ljc5MjU4MDkzMDYxMzA1Nl0sIFstNC44OTAxMzM4NDExMjE0MywgNTYuOTU3ODQxNDk1MzI4OTFdLCBbLTQuODEwNDExNjQyMDM5NDYzLCA1Ny4xNzgzNzM1OTQwNzY2OF0sIFstNC41OTE5OTgwNTI1MTM5MTIsIDU3LjIzMjg3MTQ4MDA1MDddLCBbLTQuNDUzODYyMDI1MDk4OTgyLCA1Ny4wNjcyOTc0NDc2MTg1MzZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl83YTcxY2ZiN2Q3MWY0OTk4YWMxYTkyMjU1M2VmYjY1OS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl83ODVlYTQ5NmM1Mjc0N2EwOGEyYjM3ZWQxN2NmYThlOCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjY5OTUzNTI2ODIwNTIxOTQsIDU0LjMxMzkwOTE5NTIxNTc4Nl0sIFstMy40ODcyMzgwOTYxMDEwMjk0LCA1NC4zNzEzMTIwNzMxNTQ2NV0sIFstMy4zMTIyMzg0ODEyOTQwMzM4LCA1NC4yMjU0MzE4MjA0Njk4MTVdLCBbLTMuMzQ5MTIyODM0MjAxNTYxLCA1NC4wMjE1NzM4MDUzODE4M10sIFstMy41NjE3MzQzMjgxMzk5MTcsIDUzLjk2MzU0NzYwNDI2NjY3XSwgWy0zLjczNzE0ODA2OTUyNDE1NywgNTQuMTEwMDAyNzUzNzk4MTA2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNzg1ZWE0OTZjNTI3NDdhMDhhMmIzN2VkMTdjZmE4ZTguc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYzdjNjMzYTY2MTVlNDdjMWJmYWFlZjVmZGI2YmI1MzIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1swLjAxNjQ1MjY2MzI3MTcwNDE3NiwgNTEuMjIzODE5MjI2MTYwMjFdLCBbMC4yMjU3Nzg3MzkyNjY1ODA3LCA1MS4yODU5NTA5NzcyNjQxODZdLCBbMC40MDQwNjg2MzIwNzg4NDM4NiwgNTEuMTM4MDI0NTg1MTI3NDhdLCBbMC4zNzM1MDcxNjE3ODcwMDksIDUwLjkyNzQ1MTYwOTA4OTY0NF0sIFswLjE2Mzk5MDkzMDM4OTI1NzQ0LCA1MC44NjQ3MTA1NzE1MzI4MjVdLCBbLTAuMDE0Nzc0OTQyMDA4Mzc2MTEyLCA1MS4wMTMxNTE0NzEwNjQ5NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2M3YzYzM2E2NjE1ZTQ3YzFiZmFhZWY1ZmRiNmJiNTMyLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2I5YmFhMTU0NGI1NTQ2NTZiYzc2ZDMyYmVkMDRjMmZlID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTEuMjg0NDI3NzM0Mjg2OTc2NSwgNTQuMzkyMjA2NTA1Nzg0NTg2XSwgWy0xLjA3NzIwNjI5ODIzNjgyOTgsIDU0LjQ0ODg0Mzc5MTIxMjY5NV0sIFstMC45MDI2OTg5NTE2NzE1NzY4LCA1NC4zMDQ2NjE0MTQwNjQ3MjVdLCBbLTAuOTM0OTY1NDUwMjQ0NzYzNSwgNTQuMTAzMjc4MzM0MjE5MTRdLCBbLTEuMTQyNDU0NjAwMzIwODIwMiwgNTQuMDQ2MDMxNDM1NjAxMDVdLCBbLTEuMzE3NDEwNjIzMzM5NzgwMiwgNTQuMTkwNzc3MjUwMjkwNDI0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fYjliYWExNTQ0YjU1NDY1NmJjNzZkMzJiZWQwNGMyZmUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNDJmNjc1ZDcyZjYyNGRjYjhhODlkMTJmNmM3ZGZkMWMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNS4wNjgyNzQ3Nzg4OTAzNDQsIDU1LjkxMzkyMjk0ODE0OTgyNV0sIFstNS4yODY0ODcyMzQzNjk0MDksIDU1Ljg1NzU4NDY3NzMxNjY2XSwgWy01LjQyNjI3NzE5NDI5Mzg0NzUsIDU2LjAyMTA5MTU0MDQ3NDA3XSwgWy01LjM0NzIwNDU5MDk0NTg1NSwgNTYuMjQxMjgyNDE2MjYwNDA0XSwgWy01LjEyODQxMTM1MDg5Mjc2NiwgNTYuMjk3MTgxMzgxOTkxNzVdLCBbLTQuOTg5MjcxMDc5MDUwOTc5NiwgNTYuMTMzMzMxMzQyMTI0MDQ1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNDJmNjc1ZDcyZjYyNGRjYjhhODlkMTJmNmM3ZGZkMWMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNjc2ZmU5YTI0NDdmNDE3OWE5MTgzNjk2MjcyN2Q4MTAgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy40ODcyMzgwOTYxMDEwNDIzLCA1NC4zNzEzMTIwNzMxNTQ2Nl0sIFstMy42OTk1MzUyNjgyMDUyMzU0LCA1NC4zMTM5MDkxOTUyMTU3OV0sIFstMy44MzQ0MjA4ODkzMjQ3NDQsIDU0LjQ3MTE2Nzk1MzU4MzldLCBbLTMuNzU2MzY1NjY4Njc1Mzg3LCA1NC42ODYyMDc4OTc0NDY0NV0sIFstMy41NDM0Nzc1ODk2NDAzNzYzLCA1NC43NDMyMTkyNDQ1MTE5Ml0sIFstMy40MDkyMzUzNjU4Njg4OTI4LCA1NC41ODU1ODQ2NDMxNjQ0OF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzY3NmZlOWEyNDQ3ZjQxNzlhOTE4MzY5NjI3MjdkODEwLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2YxNGZlOGI0Y2IyYzRkNTJiOGY4YmQ3ZjQ5NmE1Mzg1ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTUuNDI2Mjc3MTk0MjkzODQ3NSwgNTYuMDIxMDkxNTQwNDc0MDddLCBbLTUuNjQ1NTA5NzY5MjYyNDg5LCA1NS45NjQ3MjE4MjU3MTYwNTVdLCBbLTUuNzg2MjUyNjE3Nzc3ODIsIDU2LjEyODk4NDgyOTc5Nzg2NV0sIFstNS43MDcxMTI4NDQ4MTU2MjksIDU2LjM0OTk2MjE5Nzg0NTU4XSwgWy01LjQ4NzI5NzgxNjI5MzQwNSwgNTYuNDA1ODg3NDgyOTc3NDA2XSwgWy01LjM0NzIwNDU5MDk0NTg1NSwgNTYuMjQxMjgyNDE2MjYwNDA0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZjE0ZmU4YjRjYjJjNGQ1MmI4ZjhiZDdmNDk2YTUzODUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNmY0ZDkwMTgzNTMyNDhjMmEwMGQ2MjRkM2U2OGEzMDQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMS41ODQ4NTA4MjQxMDUzLCA1Mi41NTMzODE0NTk3MDY3Nl0sIFstMS4zNzM5OTE4MDQ3Mjg0ODc2LCA1Mi42MTM1MTM4MjQ5MjY1OV0sIFstMS4xOTY3NTE3NzYyMDIzMzM5LCA1Mi40NjYzNjQ5NDI3MTE4MzRdLCBbLTEuMjI5OTE5NTMwODIwNTA1LCA1Mi4yNTg1NDE2NDE0MzYyOTVdLCBbLTEuNDQxMDIyMjY4OTY0NDk1LCA1Mi4xOTc3OTI1NjA5NjM3MDVdLCBbLTEuNjE4NzE0NjY4ODMxOTUxNiwgNTIuMzQ1NDgzMzE3OTE4ODZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl82ZjRkOTAxODM1MzI0OGMyYTAwZDYyNGQzZTY4YTMwNC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wZjE3MDZmZDdhNTM0OWFkYjUzOWI2ZDU4MTRhNDk1NyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzAuOTY3ODk5MTI0MjY4Mzk4MywgNTIuMzAwODkwMTg2MTUzMjNdLCBbMS4xNzMzMTkyMzIwNzgyMTA2LCA1Mi4zNjA4MDI2NjY2NDIxNF0sIFsxLjM0OTY4NzIyODYxMDk1NDUsIDUyLjIxNDk2NDI1OTM1MTMxXSwgWzEuMzIxMTE2ODQwMDQyNTEwOCwgNTIuMDA4Njg2OTgzMTE0NzldLCBbMS4xMTU1MDY3Njk4NjczODUsIDUxLjk0ODE3MTI2ODE0MzgyNF0sIFswLjkzODY1NTc2MjcwNDQ5NjIsIDUyLjA5NDUzNTg2MzM2MDQyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMGYxNzA2ZmQ3YTUzNDlhZGI1MzliNmQ1ODE0YTQ5NTcuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMmY5ZmIwMWJmNjYwNDJjM2I5ZWEyYWRkMjdiMzkxN2QgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNS4xODg1NzkyODIwMTI3MjMsIDU2LjY4MjE3NjYyNzkzMTA2NF0sIFstNS40MDc5NDYxODI2NzA4NTcsIDU2LjYyNjcyNjU5NjczMjkzXSwgWy01LjU0ODMzNDE1Mjk0NjM0MTUsIDU2Ljc5MjQyMzIxODg0MzU0XSwgWy01LjQ2ODcwMjE5MDQ1MTA5NywgNTcuMDEzODk0MDQ1ODkxNF0sIFstNS4yNDg3Njg5Njk5MzE4NzYsIDU3LjA2ODg4NTUxODc1NjY5NF0sIFstNS4xMDkwMzM1MTUxMDQzMDgsIDU2LjkwMjg2NzI4ODM3MDY0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMmY5ZmIwMWJmNjYwNDJjM2I5ZWEyYWRkMjdiMzkxN2Quc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYTQ4NzdiMzgwYjBhNDEwMzliMmM1NmNjOTU0MDMyMDkgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNy41NDg4NTc0ODMyNTMwMTUsIDU2LjI4NzExODI4MzgwOV0sIFstNy43NzM0MTE5MDEwMTYyOCwgNTYuMjMwMTIxMTA1OTIyOTI2XSwgWy03LjkxOTQ0NTI1MzMyMjEzOCwgNTYuMzk3ODk5OTQzNjUxMDFdLCBbLTcuODQwMjc5MTg1MjAxMzcsIDU2LjYyMzAyNDQzNTY3NDE3XSwgWy03LjYxNTEyNzcxNTMyMTQyNCwgNTYuNjc5NTU1MjQ5NjQwMV0sIFstNy40Njk3Mzg5NjM3MDExNDcsIDU2LjUxMTQzMDY1Mzk4NjU5NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2E0ODc3YjM4MGIwYTQxMDM5YjJjNTZjYzk1NDAzMjA5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2IwMTZlMmM4NTEyMDQwMjRiYzUyYjE3NGE4ODc5YmU5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNDM2MTE5MjQ0NDkyNzYzNSwgNTYuMjAwODYzNDk1NDA0NF0sIFstMi42NDc1NzE1NTE1OTU1NDk0LCA1Ni4xNDYwNDc2ODcwMjg5Nl0sIFstMi43ODA1NTc2MTM3OTgwMDk3LCA1Ni4zMDY4Njk2NTExODE5MDZdLCBbLTIuNzAxNDQxMzU4Njg2MzE0NCwgNTYuNTIyODMxMDAwOTQ5MzVdLCBbLTIuNDg5NDQ1MjM0OTg0OTIyLCA1Ni41NzcyMTkyMDI2MzcwMl0sIFstMi4zNTcxMDg2NDc0NDg3MzgsIDU2LjQxNjA3NjA2NjYxNTg5NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2IwMTZlMmM4NTEyMDQwMjRiYzUyYjE3NGE4ODc5YmU5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzlkMmY3ZjE4MDNkZjQ3ZTliNzBkMjVjNWQxOWM3ZjQwID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTYuNzAyODU5NTMzMjQ3MjU1LCA1Ny41MjA1ODQ4MDU1NzE2NV0sIFstNi45MjY4MzM0MjExMDI1NTksIDU3LjQ2NTUzODg1NjA5NjM0NF0sIFstNy4wNzExNzk1OTkzNjM0MDMsIDU3LjYzNTQyNDMwNjExMzczXSwgWy02Ljk5MDg5ODk3MDgxMjY3OCwgNTcuODYwNjYyMDY0ODI3ODNdLCBbLTYuNzY2MzYyNTk2NTg5MDYzNSwgNTcuOTE1MjE4MDM1MjE1NDVdLCBbLTYuNjIyNjY4NzQ4NzQyODg1NSwgNTcuNzQ1MDI4ODcwMTQ0NjY1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fOWQyZjdmMTgwM2RmNDdlOWI3MGQyNWM1ZDE5YzdmNDAuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZWZkMzAzYTEwMjVmNDJkYmFkYzVjZGU0ODZjMTRkMDIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC44MzA4MDIzNDcwNjQyNzUsIDU2LjU3MjY2NjU5NjcyNV0sIFstNS4wNDkxMzcyMDc1MDMwNDgsIDU2LjUxNzIzOTA0NTk1MzI2XSwgWy01LjE4ODU3OTI4MjAxMjcyMywgNTYuNjgyMTc2NjI3OTMxMDY0XSwgWy01LjEwOTAzMzUxNTEwNDMwOCwgNTYuOTAyODY3Mjg4MzcwNjRdLCBbLTQuODkwMTMzODQxMTIxNDMsIDU2Ljk1Nzg0MTQ5NTMyODkxXSwgWy00Ljc1MTM0NDIzNTI2MzI3OCwgNTYuNzkyNTgwOTMwNjEzMDU2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZWZkMzAzYTEwMjVmNDJkYmFkYzVjZGU0ODZjMTRkMDIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMDU4ZDM0MjU0MmI3NDNmZDk0Y2QwZjI0N2MwNTkzNDIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy4zNjQwMTI4MDA2ODQzNjM1LCA1NS43NjQ0MzI2Mzk3MjM4XSwgWy0zLjU3NzU3Njk4ODc4NzMwMzcsIDU1LjcwODY4NDIwNTYxMDg5XSwgWy0zLjcxMjg0Mjg0OTgxNTI2OCwgNTUuODY5NTY2MjE0MDMwNjU1XSwgWy0zLjYzMzg5NDcxMzI4NzMwNywgNTYuMDg2NTM3MTk1NTE5MjRdLCBbLTMuNDE5NzY2Njk0NzA1LCA1Ni4xNDE4NjE3NjMyMzE0OTZdLCBbLTMuMjg1MTUwMTkwNTc4MzY5OCwgNTUuOTgwNjQxNjc4MjMzNjVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8wNThkMzQyNTQyYjc0M2ZkOTRjZDBmMjQ3YzA1OTM0Mi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl81MjIwYjU0MGQ5ZmM0ZmZmOTM3YjY5YjhkOGJjOTE5NSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00Ljg4ODE0NzAyMjU2ODMzMSwgNTQuNzc0Nzg3NzQ5OTU0MzJdLCBbLTUuMTA0NTc2NTM5ODc4ODEzLCA1NC43MTcxODkzMDk5MDI0NF0sIFstNS4yNDM0MDc0MTk1MTQ1NjQsIDU0Ljg3NzM2NTg0MTk1NTAyXSwgWy01LjE2NTE2Mzc2NTM3MjI3LCA1NS4wOTU1MTcwMzcxOTA2Nl0sIFstNC45NDgxMzMzODY0NzIyODY1LCA1NS4xNTI3MDUwMzY0Nzk4XSwgWy00LjgwOTk0NzI0Njk5MDMyMSwgNTQuOTkyMTU0ODM0NTk4NzZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl81MjIwYjU0MGQ5ZmM0ZmZmOTM3YjY5YjhkOGJjOTE5NS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9kMDhkYzU5MjhiODk0ZjVjYmE0MDZiYTVmNmZlM2Q0ZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy03LjM0OTcxNjU2NjE0MDkxNDUsIDU1LjEyMDczMzk0MjE3Mjg4XSwgWy03LjU3MjQzMzk1ODU1NTM0NywgNTUuMDYyMzk4ODczNzAzMzldLCBbLTcuNzE3NjM0MTk3MDM0NDEzLCA1NS4yMjY3MzM3MTEzMTAyNF0sIFstNy42Mzk0NzcwNzQxODgxMzksIDU1LjQ0OTc4NTE0NDU1MzA5XSwgWy03LjQxNjEzOTkzMjQxMTg3MywgNTUuNTA3Njg0NDQ2MDkzNjU2XSwgWy03LjI3MTU3OTQxNDc5Njg2MywgNTUuMzQyOTcwNzkxNjE5MjQ0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZDA4ZGM1OTI4Yjg5NGY1Y2JhNDA2YmE1ZjZmZTNkNGYuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMDQ0NWE0Y2E4ODc5NGM2Njk1NmMzYjNjNjg4ZjIzZGIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1swLjQ5NTExOTc1NDc1MjI2NjcsIDUxLjc2NTYyNDExNDQzNDQ2XSwgWzAuNzAyNTA0NzA4MzQ1MTM4NiwgNTEuODI2NjQwMzg0MzIzMjhdLCBbMC44Nzk4MzcwODgwODIyMzc4LCA1MS42Nzk3NTIyOTY0MDgyOV0sIFswLjg1MDI2Mjg5MTc3NTU3MSwgNTEuNDcxMzI3MDI3NzE0XSwgWzAuNjQyNjg3NjUwMjQyNDc3NiwgNTEuNDA5NzA0MzI0NDA0OTddLCBbMC40NjQ4NzU2MTUyNjQ3MTE1NSwgNTEuNTU3MTEzMDYxNTU3NjFdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8wNDQ1YTRjYTg4Nzk0YzY2OTU2YzNiM2M2ODhmMjNkYi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9jNDIzODhjOWQ0NmI0OWE2YjM5MWIyMzYyMGMyN2Q1OCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0wLjkwMjY5ODk1MTY3MTU3NjgsIDU0LjMwNDY2MTQxNDA2NDcyNV0sIFstMC42OTYxNzM5OTMyOTgxMzIyLCA1NC4zNjEzNjQ1MDE4NTU2MDRdLCBbLTAuNTIxNjU1NzQ2OTA3NjMzMSwgNTQuMjE3MjkyMzY3Mjg3MTldLCBbLTAuNTUzMjA5NTMxMjQ4MDQ0NCwgNTQuMDE1OTU2NjIzMDA3NTZdLCBbLTAuNzU5OTkzMTYyNDYwMjQxNSwgNTMuOTU4NjQ1NjY2NTczODFdLCBbLTAuOTM0OTY1NDUwMjQ0NzYzNSwgNTQuMTAzMjc4MzM0MjE5MTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9jNDIzODhjOWQ0NmI0OWE2YjM5MWIyMzYyMGMyN2Q1OC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9kYjhhMzdlZTg4MmM0NTBlYTY5NzcxMGQxOTQ2ZDFjMCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01LjEyNzY0NDMyMjU3NjIwODUsIDU4LjUxNTE2NzI5OTk2MDY1XSwgWy01LjM0ODcyNzE2Nzk1NTM5NiwgNTguNDYyMTAxNjYwNjczOTJdLCBbLTUuNDg5NTQ4NDAyNzc1OTk4LCA1OC42MzIzNjUxMDExNDk0N10sIFstNS40MDg2MjgxODQ5MjE3NDYsIDU4Ljg1NTk2MjM2OTQ1NjA2XSwgWy01LjE4NzAxOTYzNzIxMDE1OSwgNTguOTA4NTI3MTkzNjIzN10sIFstNS4wNDY4NTYyNTUxOTY4MTYsIDU4LjczNzk5ODA4NTAyNjUyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZGI4YTM3ZWU4ODJjNDUwZWE2OTc3MTBkMTk0NmQxYzAuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMTM4MDU2NjUxMzdmNGZmNDk4MjQ4MTAxMjNmZWZmZTAgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNS45MTAwNTA3NzYzNzE4ODEsIDU2LjkwMzQxMzAwMDk4Nzk1XSwgWy02LjEzMTQ1NTA4NjEwOTM3OSwgNTYuODQ3OTIyMTI5NDI4MTJdLCBbLTYuMjczNzEyMDY3NTEwNTM0LCA1Ny4wMTUxNTI2NzMyODgyNF0sIFstNi4xOTM5MTIwNjAyOTkxODYsIDU3LjIzODE5NTM4MjIyNV0sIFstNS45NzE5Mzg4OTkxODk5ODM2LCA1Ny4yOTMyMTcwNzI1NzQxNV0sIFstNS44MzAzMzQwNzAyMjA3NjYsIDU3LjEyNTY2Nzg0MTk1MjcyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMTM4MDU2NjUxMzdmNGZmNDk4MjQ4MTAxMjNmZWZmZTAuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZjkxNDcxMTBjNTY3NGU1Zjk3ODQwNThkYWE0YTc2MmMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC4yMDI1NTQwNTQ0OTc5NDgsIDUzLjc4ODQ3OTIyOTM1MjE1Nl0sIFstMy45ODg0NTQ3ODg1NjYzMTgsIDUzLjg0NzAwMDg5NzgwNTE4XSwgWy0zLjgxMjYyOTUyODIwNTk5NzQsIDUzLjY5OTk3MjYzOTUwMTM5XSwgWy0zLjg1MDQ5NTYwMjgzNzU2NCwgNTMuNDkzODUxNDkxMDY1MDk0XSwgWy00LjA2NDkxMDA4NjQ1NTg3OSwgNTMuNDM0NzAxNzYzNzg3NThdLCBbLTQuMjQxMTQ0MTg3OTgxNDQxLCA1My41ODIzMDExOTg2NzczMV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2Y5MTQ3MTEwYzU2NzRlNWY5Nzg0MDU4ZGFhNGE3NjJjLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2Y0NjUzYjg4ZGM3MDRhZTU5MjM1ZmZhMzhmMjYyZWZjID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuNTM0ODM4NDcyODk5NDc1MywgNTIuOTkxMjY1NTI2NTgxNDhdLCBbLTMuMzIwNzE3NDY3NTAzODksIDUzLjA1MTEwNDM1NjU0MzA4XSwgWy0zLjE0MzY5OTgwNTM4Mzk3NSwgNTIuOTAzMzE0NTQ1NjQ4NjM0XSwgWy0zLjE4MDM4MTE0MTI0NDc5ODYsIDUyLjY5NTEyODMzODg2NTAzXSwgWy0zLjM5NDc5MDg4MjI5Mzg0MjQsIDUyLjYzNDY2MjkyODg2NjMxXSwgWy0zLjU3MjIzMTU0MzQxMzQ4NjYsIDUyLjc4MzAxMDE3MTkzNjgxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZjQ2NTNiODhkYzcwNGFlNTkyMzVmZmEzOGYyNjJlZmMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYjcxYTg0ZThiMjVhNGI5OTliMmUxOThiOTU5MzU1OTUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi45NDM0NzI1MjI5NzIxMjc3LCA1Ny40NDUyODg2ODc5NzQ4OV0sIFstMy4xNTc2MjY5MjUwOTg1NDk0LCA1Ny4zOTE3NzEwODk2MDQ3XSwgWy0zLjI5MjU0NDY1MDg0ODg1MiwgNTcuNTU2NDUyNjg2NzU3MDFdLCBbLTMuMjEyNjUzMTYzMDM1NDI2NSwgNTcuNzc0OTQyNzIwMTczMTFdLCBbLTIuOTk3OTczMTIwODIyODY0NiwgNTcuODI4MDAwNjEwMTc5MjhdLCBbLTIuODYzNzA5NTMyMzYwODM3NywgNTcuNjYzMDMwNTkzOTM4NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2I3MWE4NGU4YjI1YTRiOTk5YjJlMTk4Yjk1OTM1NTk1LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzk3NTcxNjAwYjlkNDQ0ZGY4ZWI0YWZiOWEzNDZiN2Q3ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuMjIwNjcyNDUwNjU0ODcyLCA1Mi4zNzE5NzUwMTE1NDQ0XSwgWy0yLjAwODE5NTU2OTI2Njc2MywgNTIuNDMyNjEyNjIzNDUxNDldLCBbLTEuODMwNTEyODQ4MjM1Mzk5NiwgNTIuMjg0Nzg5NjQwNTQzMjk1XSwgWy0xLjg2NDg2MzU3NDU3OTExMiwgNTIuMDc1Nzg2NDk3OTQ0NjldLCBbLTIuMDc3NTkzMjY3NzkyODcxNywgNTIuMDE0NTI4Mzc2MTE1MzNdLCBbLTIuMjU1NzIwNTI0NjU3NDQzLCA1Mi4xNjI4OTM3MDU0NTEwMDVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl85NzU3MTYwMGI5ZDQ0NGRmOGViNGFmYjlhMzQ2YjdkNy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl81NGY1YWI2MjJkMmE0NThkODAxOTI4YjU5MDIzYzhmMCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0wLjk1MzkyMTkxNjY2MDg0NTYsIDUyLjczMzI3NzI4OTA3NjhdLCBbLTAuNzQ0NzE5MzU5Mzk5Mjg1NiwgNTIuNzkyOTA5NTE4NzQ4NDJdLCBbLTAuNTY3OTU0ODcwMjkxNjkyMSwgNTIuNjQ2NDMxNTU2MzM0NTc2XSwgWy0wLjU5OTkzNDMzNzE4NzA4NTEsIDUyLjQzOTc3OTg4MDExNDE3XSwgWy0wLjgwOTM3MTM5NjcwNjU1NjcsIDUyLjM3OTUzNDczNjI3MjUyXSwgWy0wLjk4NjU5NTY1NDQ3MjUwNjIsIDUyLjUyNjU1NDAyNTMwMzEyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNTRmNWFiNjIyZDJhNDU4ZDgwMTkyOGI1OTAyM2M4ZjAuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZTVlYTg3OWFjY2E0NDA3ZDg1ZTRlODU1NDZmY2ZiNzUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxLjQzNDcxNDA0NzQ3ODk0MjIsIDUyLjgyOTY0MzM1NDY2ODgyXSwgWzEuNjM4MTQ4NzAyNDE5MTQ3LCA1Mi44ODg0NjQxMjU2NjEyNV0sIFsxLjgxMzU0NjA3NjUxODU1NzYsIDUyLjc0MzY4NTU5OTg1MTQ1XSwgWzEuNzg1OTkzNTUwNTEyMzkxMiwgNTIuNTM5NTU1MDE3MDMyNzc1XSwgWzEuNTgyMzY5NjkzNDE1MzQyLCA1Mi40ODAxMzQ1MzUzMzM3MjVdLCBbMS40MDY0ODYyNjcxMDk2ODE0LCA1Mi42MjU0NDQyMDUxMzA4OF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2U1ZWE4NzlhY2NhNDQwN2Q4NWU0ZTg1NTQ2ZmNmYjc1LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2QwZGNkYTU5YTFlODRjMmE5MmZmZjQyMWRkN2I0YWEyID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTUuNjAwNjU0NDQ2MDQ2OTAzLCA1NC45ODA2NDAyMzYzMTU5MTRdLCBbLTUuODE5MTAzOTM4MzgxNzc5NSwgNTQuOTIyOTUwMjAyOTgyMjM2XSwgWy01Ljk1OTg3MzI5MDk4MDY5MiwgNTUuMDg0NjE3MzY5MDEwNjldLCBbLTUuODgxNTQ4MzIwNzczNzM2LCA1NS4zMDQzNDk0ODEwOTE2M10sIFstNS42NjI0OTM4NjQ5Nzk0NTEsIDU1LjM2MTYxOTI0ODcwNzIxXSwgWy01LjUyMjM2OTA2MjIyODY2NywgNTUuMTk5NTc5NzY4NTg3NjJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9kMGRjZGE1OWExZTg0YzJhOTJmZmY0MjFkZDdiNGFhMi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9mMTQ4NWRmZGU5Y2M0Y2JiOWY4NjE4ZmMxNmIyOTUyZSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0wLjc2MDQyOTk3MjYzMzk5NzcsIDYwLjc0NTk2OTIwMDA5MDldLCBbLTAuOTcwOTM0NTg2NTM2NzQ4MSwgNjAuNjk3Njc2MzA0ODk5OTJdLCBbLTEuMTAxNDk1Nzg2NDU1OTcxLCA2MC44NjcyMDA1MjY4MjQyNF0sIFstMS4wMjA5MDA3NzY1ODMwMzgsIDYxLjA4NTIwMDU2OTQ4MTAxXSwgWy0wLjgwOTk2NDkzNTgzMTgwMzEsIDYxLjEzMjk4MDQyNDExNTkxNF0sIFstMC42ODAwNTQyMzEzMzMyNzA0LCA2MC45NjMyNzU0NjA2NzkzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZjE0ODVkZmRlOWNjNGNiYjlmODYxOGZjMTZiMjk1MmUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZTkxMjY5ODMzYjQ0NDY3ZDgyNjJkYTdhZTY1ODU1ZTkgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC43NzE1MDgyMTI0MjczODUsIDU2LjE4OTIwMjY4ODg4MjQ0XSwgWy00Ljk4OTI3MTA3OTA1MDk3OTYsIDU2LjEzMzMzMTM0MjEyNDA0NV0sIFstNS4xMjg0MTEzNTA4OTI3NjYsIDU2LjI5NzE4MTM4MTk5MTc1XSwgWy01LjA0OTEzNzIwNzUwMzA0OCwgNTYuNTE3MjM5MDQ1OTUzMjZdLCBbLTQuODMwODAyMzQ3MDY0Mjc1LCA1Ni41NzI2NjY1OTY3MjVdLCBbLTQuNjkyMzEzMTU5NTUwODY5LCA1Ni40MDg0ODI4MjQ2MTM0NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2U5MTI2OTgzM2I0NDQ2N2Q4MjYyZGE3YWU2NTg1NWU5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzcwMjQ5NmUxNWU4MjQzOGRhOWE1Mjg3ZTE3Yzc5ZTdhID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuMjIyNzcwMjI1Nzk4MDYxMywgNTEuMjgwNzUwMjc0MTI1MjI1XSwgWy0zLjAwNjY1MTIzMzcwNTEwODMsIDUxLjM0MzY2OTU0ODE0MjA0XSwgWy0yLjgyNzIwNTEwNTkwMTEwOSwgNTEuMTkzNjk0NDY1NzEyNDU0XSwgWy0yLjg2MzQ0NDU5NTEzNDQ5NDUsIDUwLjk4MDI2OTQ4NDQ1NjI0XSwgWy0zLjA3OTgxNTQ0MzYzMDI5NTYsIDUwLjkxNjcyMzI5NzE0NTg3XSwgWy0zLjI1OTY5NjAyMzc2MzI5OCwgNTEuMDY3MjI4NjcxMzUyMjJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl83MDI0OTZlMTVlODI0MzhkYTlhNTI4N2UxN2M3OWU3YS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl82ODFlMDViYTRhMmU0NTczOWQwNDliMmI2ZjdjOTFhZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0wLjk5OTgwNzY3MjcxNzkxNTUsIDUzLjY5ODM1MDE5NTU4NDYyXSwgWy0wLjc5MjA1OTA0ODk4OTI5ODQsIDUzLjc1NjIwNzI3NjEzNTkyNV0sIFstMC42MTY2MzIzNzYwNjEzMzU4LCA1My42MTExMzIzOTAxMjcwOTZdLCBbLTAuNjQ4NTAwMDUzNzc0ODcxOSwgNTMuNDA3NjQ2MzkxODY5NDg0XSwgWy0wLjg1NjQ5OTgwOTY4Mzg1OTIsIDUzLjM0OTE3ODcwNTgwNzI4XSwgWy0xLjAzMjM4MTg4NjE4ODI0NywgNTMuNDk0ODA3NTcwOTUyNDNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl82ODFlMDViYTRhMmU0NTczOWQwNDliMmI2ZjdjOTFhZi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl81ZDI1ZWRjNGRiMWM0MDZiYmVjYThjZjE3MTQzOTZmMiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjA1MTM3MjU4MDQ5NzM1MzMsIDYwLjQ4MDA4MDU0OTgzMjE0NV0sIFstMS4yNjI1ODI0Njg3MTM3NDU1LCA2MC40MzEzMTEyOTE3MTUwM10sIFstMS4zOTM3OTU1Nzg5NTA4NzU2LCA2MC42MDA2NDU2NzY4NDM2M10sIFstMS4zMTMxNDU4MjMxOTkxMDQ3LCA2MC44MTg5NDEzNjkwMzQzMDZdLCBbLTEuMTAxNDk1Nzg2NDU1OTcxLCA2MC44NjcyMDA1MjY4MjQyNF0sIFstMC45NzA5MzQ1ODY1MzY3NDgxLCA2MC42OTc2NzYzMDQ4OTk5Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzVkMjVlZGM0ZGIxYzQwNmJiZWNhOGNmMTcxNDM5NmYyLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzY2YWI0YmFhMjEzMzQ5NTNiNTczNDFjYTRkYTQ2MmIyID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTEuMjQxOTY0Mjk4OTkwODIwNCwgNTkuNDQzMTUwMDkwOTMxOTldLCBbLTEuNDUyOTQzMzIxNjY4NDc1NywgNTkuMzkyOTE1MTE1OTExNDg1XSwgWy0xLjU4NDIzNjQyNDc5ODEzNCwgNTkuNTYwMTUyMzE0MzM1MDZdLCBbLTEuNTAzODk3Mjk3MTk5Mzk5NCwgNTkuNzc3ODQ4OTMyMDQzNTZdLCBbLTEuMjkyNDUzOTEwNjAxNTA2NywgNTkuODI3NTkzNjQ0MzUzNjFdLCBbLTEuMTYxODEzMDY2NTk5MDU2MywgNTkuNjYwMTM0MjY3NTgwMDM0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNjZhYjRiYWEyMTMzNDk1M2I1NzM0MWNhNGRhNDYyYjIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMWQwZjVhZjIzYWQ4NDg1ZWE2NDM2YWEzM2U5YjY0MzUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMS4zODM2Nzk1NzkwNzI4MTcsIDUzLjc4NTc0NzUxMjk3MTAxXSwgWy0xLjE3NTIzMjA0NDU3ODgzMTgsIDUzLjg0MzU0MTY3MTU2OTkxNl0sIFstMC45OTk4MDc2NzI3MTc5MTU1LCA1My42OTgzNTAxOTU1ODQ2Ml0sIFstMS4wMzIzODE4ODYxODgyNDcsIDUzLjQ5NDgwNzU3MDk1MjQzXSwgWy0xLjI0MTA4OTU4Mjk1OTQ0MjIsIDUzLjQzNjQwMDk4NjAzNzc5XSwgWy0xLjQxNjk2NDAwNjc1NjY0NzEsIDUzLjU4MjE0OTQwODU1NjU5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMWQwZjVhZjIzYWQ4NDg1ZWE2NDM2YWEzM2U5YjY0MzUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYzA5MzEwOTg4NGQ3NDlkOWIwZjFiNjIxNmIxNjlmNDUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNi4xNDgxODQ4ODk1NDU4OTUsIDU2LjIzNzYwOTQxODg4ODg0NF0sIFstNi4zNjk0MzA2NTg0NDg4MTgsIDU2LjE4MTE4MDYzNjg0MjI2NF0sIFstNi41MTIwNTY5NTQxMDg1MTI1LCA1Ni4zNDY5NzE5NzkyOTYyNl0sIFstNi40MzI3ODgwMDk0NjI0OTcsIDU2LjU2OTUzNDQwNTc1OTQ2XSwgWy02LjIxMDk1NjkyODg1NjUyNSwgNTYuNjI1NTA4MzE0OTEyNzVdLCBbLTYuMDY4OTc5NjcyODA5OTc5LCA1Ni40NTkzNzczMDAzOTMxM11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2MwOTMxMDk4ODRkNzQ5ZDliMGYxYjYyMTZiMTY5ZjQ1LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzg4MWM3NmQwNGQ4NDRiMGFhMWY2MTA1NmEzOTQ3MjY4ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTUuNzI0MzYzMjQxNjg4ODc4LCA1NS43NDQ0MDc5NDI1OTYxMV0sIFstNS45NDQwMTU4ODI4MDAzNjIsIDU1LjY4NzU2ODIxODMyMTg1XSwgWy02LjA4NTQwNjYxNTMxNDQzNywgNTUuODUxNDc5NjAwMjI4OTM0XSwgWy02LjAwNjQ5NjQ0NDU2MTQyMywgNTYuMDcyNTg0OTM1MDk5NTldLCBbLTUuNzg2MjUyNjE3Nzc3ODIsIDU2LjEyODk4NDgyOTc5Nzg2NV0sIFstNS42NDU1MDk3NjkyNjI0ODksIDU1Ljk2NDcyMTgyNTcxNjA1NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzg4MWM3NmQwNGQ4NDRiMGFhMWY2MTA1NmEzOTQ3MjY4LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2RiMjg0NDYzNGIxMzQ4NjQ5ZmFmMWUxN2VmMDFhODQ3ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuMDM3OTUwNDU5NTQ4NzI0LCA1MS4wMjAxNjg3NTkzNTUzNjRdLCBbLTEuODIzODE5Mjk0NTg0MjEyMiwgNTEuMDgzMjM3NDA3MjA0Mzg2XSwgWy0xLjY0NDMzODAxNTc0MTA0NSwgNTAuOTMzNjk4MzQwNjkxMjJdLCBbLTEuNjc4NTM3MzgzMDMzMTM5OCwgNTAuNzIwNTY5NzA0NjgxNzVdLCBbLTEuODkyODkzNTk4MTc1MDM1NCwgNTAuNjU2ODgwNjQxNDY4MTU2XSwgWy0yLjA3MjgyNjU1MzYxMzA3MDYsIDUwLjgwNjk0MDI3MDg3MjAyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZGIyODQ0NjM0YjEzNDg2NDlmYWYxZTE3ZWYwMWE4NDcuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNzBlM2U2YWRiYzM1NGRhOWJjZGZhODlmMzM4NTkwNzEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNi40MjU4NzM5MjMxNzY0ODcsIDUzLjc3MDc3MTQ2NTkyOTE2XSwgWy02LjY0NDc3ODQyNDM5NDQ1MSwgNTMuNzExMzEwNDM0ODk1MzRdLCBbLTYuNzg3MTM4NzU1NDk4Nzg2LCA1My44NzA2NDQ5NzAwMTIxNF0sIFstNi43MDk5NTg5NDYwOTk3OTMsIDU0LjA4OTg1MzIwODk5NjU2XSwgWy02LjQ5MDQxNzgyNTMwNTY5LCA1NC4xNDg5MTg3MTkyOTI2Ml0sIFstNi4zNDg2OTMwNDA0OTYyMDIsIDUzLjk4OTE3NDE0OTc4OTM4NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzcwZTNlNmFkYmMzNTRkYTliY2RmYTg5ZjMzODU5MDcxLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2I3MjQ3Y2M5Nzc3MDQwNGQ4ZmVmZTU5YTA4OTdjNjg5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTcuMDA2Nzk1NzQ4OTkxODM5LCA1Ny4yNDA5MDg4MjQ3MDc3MjRdLCBbLTcuMjMxMTgyNzU4NTIxOTY1LCA1Ny4xODUzNjc0NDczODA3OV0sIFstNy4zNzYxNzkzNzgxMjMzMjEsIDU3LjM1NDkzOTA0NDE2MjAxXSwgWy03LjI5NjEzODAwMjgwOTU0NiwgNTcuNTgwMzY4NTQwODE5OTI2XSwgWy03LjA3MTE3OTU5OTM2MzQwMywgNTcuNjM1NDI0MzA2MTEzNzNdLCBbLTYuOTI2ODMzNDIxMTAyNTU5LCA1Ny40NjU1Mzg4NTYwOTYzNDRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9iNzI0N2NjOTc3NzA0MDRkOGZlZmU1OWEwODk3YzY4OS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wN2RmZjAwMTJlYWQ0ZGI0OWJkMzhkZDVhN2U5NDU3MyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy03LjE4MDEzOTk1OTQyNjcxNywgNTYuMTc3MDkyMjg1OTU4MDA0XSwgWy03LjQwMzczNDk5OTA5NjU4NywgNTYuMTIwMTIzOTY5NTU5NzhdLCBbLTcuNTQ4ODU3NDgzMjUzMDE1LCA1Ni4yODcxMTgyODM4MDldLCBbLTcuNDY5NzM4OTYzNzAxMTQ3LCA1Ni41MTE0MzA2NTM5ODY1OTRdLCBbLTcuMjQ1NTQ3NzAzNjc5NzY3LCA1Ni41Njc5MzgwNDgxNjU2MTVdLCBbLTcuMTAxMDcwNzg3MjQ4ODY5LCA1Ni40MDA1OTY2OTAyMzE4NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzA3ZGZmMDAxMmVhZDRkYjQ5YmQzOGRkNWE3ZTk0NTczLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzc2N2YxYzQzNGZmMjRhYWM5MGU5NDI2NWM4NGMzMTU3ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTYuMzM2NDM5NDk5NzU2Mzk3LCA1Ny40MDY1MTgwMjAyOTcyN10sIFstNi41NTk0MTgxNTM2NTIxNjksIDU3LjM1MTQ4MzQzOTg2Mjk2XSwgWy02LjcwMjg1OTUzMzI0NzI1NSwgNTcuNTIwNTg0ODA1NTcxNjVdLCBbLTYuNjIyNjY4NzQ4NzQyODg1NSwgNTcuNzQ1MDI4ODcwMTQ0NjY1XSwgWy02LjM5OTEyODI4NTg1MDc3OSwgNTcuNzk5NTc5MDIzMjY5M10sIFstNi4yNTYzMzk4MzQyNjkwMTUsIDU3LjYzMDE3MjE2Mjk4MzAxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNzY3ZjFjNDM0ZmYyNGFhYzkwZTk0MjY1Yzg0YzMxNTcuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMDJlZjE2OTg2ZmUxNGJiMTg1Y2UxOTBjYzZkMDJiY2MgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMS4yOTI0NTM5MTA2MDE1MDY3LCA1OS44Mjc1OTM2NDQzNTM2MV0sIFstMS41MDM4OTcyOTcxOTkzOTk0LCA1OS43Nzc4NDg5MzIwNDM1Nl0sIFstMS42MzU0ODA1OTcxNDc0OTQsIDU5Ljk0NjAzOTk3OTM1NjgyXSwgWy0xLjU1NDk2Njc2MjA1ODg5NywgNjAuMTY0MTg4NjY3MDEwMDk0XSwgWy0xLjM0MzA2NjU1MjM2ODU4ODcsIDYwLjIxMzQzNDY4OTYwMjM4XSwgWy0xLjIxMjEzNjAwOTU4MjU1MzcsIDYwLjA0NTAzMjk2Nzk0ODMxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMDJlZjE2OTg2ZmUxNGJiMTg1Y2UxOTBjYzZkMDJiY2Muc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fM2M0YmU1YTM2NjZhNDM0M2E1NDBkMjZlNzBiMjQ0MTEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy45Mzk4Nzg3OTQ2ODM3NTUsIDU3LjM5NTM4ODE3NjcyOTY4XSwgWy00LjE1NjcyNjY0MDczMTk1NSwgNTcuMzQxMzc4MTM3NTUxMTc1XSwgWy00LjI5NDIwODE4NTkxMjIwNiwgNTcuNTA3MjU2MTQyNzkwMjA0XSwgWy00LjIxNDE4NjA2MTA5MDE5OCwgNTcuNzI3NDQxMTY2MjE2MTJdLCBbLTMuOTk2ODAwMjAwNDU5MjE2MiwgNTcuNzgwOTg1MjExNTYwMjhdLCBbLTMuODU5OTczODM3NTA4MzQxNCwgNTcuNjE0ODEyNzA1NzQwMjhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8zYzRiZTVhMzY2NmE0MzQzYTU0MGQyNmU3MGIyNDQxMS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9jNjZmMDMzZThhZmY0NmZjOWI1Zjg3Mjk3OWUzNjZkYiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00Ljk2NzM0NzE2NTQ1MzU0LCA1Mi45ODc1NjE4MTM5NTIxNTVdLCBbLTQuNzUwNjEwOTUxNzA4MTg2LCA1My4wNDc3ODgxNTg1NzM2OV0sIFstNC41NzM1Njc0ODA5NjUzMDU1LCA1Mi44OTkwNTI3NTg1NzEzODZdLCBbLTQuNjEyODYwNzI3NDgyNDkyLCA1Mi42ODk1MjYzOTE4NDQxOF0sIFstNC44Mjk5MTI0ODE2NDMzNSwgNTIuNjI4NjY1NDU2MTQ5MDldLCBbLTUuMDA3MzU2MzQxMzE4NDIxLCA1Mi43Nzc5NjUzNDEzOTUwOF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2M2NmYwMzNlOGFmZjQ2ZmM5YjVmODcyOTc5ZTM2NmRiLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzEyNThhODlkYzIwZjQwYWE5N2NmZTIxMDNkNzE5NzU0ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTEuNzAyMDU1NjI0NDk0NTA2LCA1NS42MTkxNTk4Nzg4OTAwOTVdLCBbLTEuOTEwNzc5NzM5Mzc0NzI2MywgNTUuNTYzOTkxMzc5NjI5NjhdLCBbLTIuMDQxNDQ1OTcwNjU2MTU1NCwgNTUuNzIyMzI4NDcyMTU3ODc2XSwgWy0xLjk2Mjc0MjAxNTI1OTU5OTYsIDU1LjkzNjE2OTQxMzA5NTc2XSwgWy0xLjc1MzQ3MzE4NDU2NzY0MzUsIDU1Ljk5MDkyODcyOTc3MzI5XSwgWy0xLjYyMzQ1MjUzNzM1ODQ2MDUsIDU1LjgzMjI1ODY1Mjk2Nzk3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMTI1OGE4OWRjMjBmNDBhYTk3Y2ZlMjEwM2Q3MTk3NTQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZmE5ZGQ3NzdhYWZmNGM3ZGIzYzU3YTQ4ZDZlMTM0MGYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNi42ODQxNjI4MjU5MjI4MjA1LCA1NS4yOTQ3MDU5NDA4ODgwMl0sIFstNi45MDU1NzQ5MjE4OTY5ODE1LCA1NS4yMzY4ODY4MzExMzY2OF0sIFstNy4wNDkxOTk0OTc2NzIxMTc1LCA1NS40MDA4MzA2MDE4MjU0OV0sIFstNi45NzA3Njg1NDAyODkwNDEsIDU1LjYyMjk2NjA2ODQ1NDA5XSwgWy02Ljc0ODc0NjUwODc3MjI5MSwgNTUuNjgwMzQ5NjkzNzI0MjddLCBbLTYuNjA1NzY1MDc5ODc5ODk1NSwgNTUuNTE2MDM2MDA0NjM1MzldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9mYTlkZDc3N2FhZmY0YzdkYjNjNTdhNDhkNmUxMzQwZi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8yYzAxMWJhZGM0ZjA0NjIzYjE0ZGJiNmI5MmQ5YWY3MSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01LjEyMTc0OTQyNTgxMDE3LCA1NC4xMjM5NzU4OTkxNjg2NF0sIFstNS4zMzc5NjgxNDMwNDUzOTMsIDU0LjA2NTUyOTQ5Nzg2MjQ5XSwgWy01LjQ3NzEwNDUyNDIzOTAyMywgNTQuMjI0MTkyOTk4ODc5MzFdLCBbLTUuMzk5MzgxMDAzODY1NDcyLCA1NC40NDE2OTc4NDUyMTQ4MV0sIFstNS4xODI1NDY2OTUxNzgzNzYsIDU0LjQ5OTc0ODI2MTQ1MTUxNV0sIFstNS4wNDQwNTEzMTUwMDQyMzcsIDU0LjM0MDY5MjM3Nzk5ODA3NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzJjMDExYmFkYzRmMDQ2MjNiMTRkYmI2YjkyZDlhZjcxLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2QyODI1NWM3NjFlNzQwNTM4ODNhMTdjZjFhNDUwODMwID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMC43MzIyNTA0NjM4NzcyOTk2LCA1Mi4wMzQwNzI5NzQ3NjMwOV0sIFswLjkzODY1NTc2MjcwNDQ5NjIsIDUyLjA5NDUzNTg2MzM2MDQyXSwgWzEuMTE1NTA2NzY5ODY3Mzg1LCA1MS45NDgxNzEyNjgxNDM4MjRdLCBbMS4wODY0MzI1Njc4NzQwMDcyLCA1MS43NDA4MjAwNjA4Njc3NF0sIFswLjg3OTgzNzA4ODA4MjIzNzgsIDUxLjY3OTc1MjI5NjQwODI5XSwgWzAuNzAyNTA0NzA4MzQ1MTM4NiwgNTEuODI2NjQwMzg0MzIzMjhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9kMjgyNTVjNzYxZTc0MDUzODgzYTE3Y2YxYTQ1MDgzMC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl84ZThjYzMyZDA5Yjk0MWVlOTExNTk2MWIxYjExOTllNSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjQ2OTEyMDg5NDA4Mzg0NjMsIDUyLjEwMTY5MDMwMjYxMjIwNV0sIFstMi4yNTU3MjA1MjQ2NTc0NDMsIDUyLjE2Mjg5MzcwNTQ1MTAwNV0sIFstMi4wNzc1OTMyNjc3OTI4NzE3LCA1Mi4wMTQ1MjgzNzYxMTUzM10sIFstMi4xMTI0MjUzNDQ2Nzg1ODU3LCA1MS44MDQ0MTk4NDA1OTc1MjVdLCBbLTIuMzI2MDc4NDg3NTM2OTUyLCA1MS43NDI1OTQxOTE5Mzg3N10sIFstMi41MDQ2NDc4NzU4Nzk4MTAzLCA1MS44OTE0OTkwOTE0MDEyOV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzhlOGNjMzJkMDliOTQxZWU5MTE1OTYxYjFiMTE5OWU1LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzk4YTFkYzE1MzVhMjQyNDVhZjk3ZTBiYjZjZGY4OWU5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuNzYwMzcyOTUyMTA0MTc0NCwgNTEuNzMwODU3NDYwMzE2M10sIFstMy41NDM4OTc0NTY3Njg2MDIsIDUxLjc5MzA5NTg4NDUyNjU4Nl0sIFstMy4zNjUwMDQzMDk3NzY4NzY1LCA1MS42NDMzNzIyMzcyNjc0NjRdLCBbLTMuNDAyMTYyODIzNzEzNDkwNCwgNTEuNDMwODY5ODYyODIyNTFdLCBbLTMuNjE4OTA4NTE3MDQzMjg4LCA1MS4zNjgwMDE3MjkxMjY5NDVdLCBbLTMuNzk4MjI2NTI1MDczMTA3LCA1MS41MTgyNjUzOTgwMzY4Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzk4YTFkYzE1MzVhMjQyNDVhZjk3ZTBiYjZjZGY4OWU5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2FjZjU1MmMwNmYzNjRlMTdiMWJkNjFkZGFjNjhjNzY2ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuMzk4ODIxNTc1MjgyNDU5OCwgNTMuNjk5MTU2MzE0ODgwNzJdLCBbLTIuMTg4MDg2NjY1MzkwMTk5NiwgNTMuNzU3Mzc1Njc2ODUxNThdLCBbLTIuMDEyMjg2NDUzMzMzOTYzLCA1My42MTEzODk2MzQwNzk3ODVdLCBbLTIuMDQ2Nzg1Njc3MTAzNjk0MywgNTMuNDA2NjIzMjA1MzEwNTFdLCBbLTIuMjU3Nzk5MzkzNTEyOTEyNCwgNTMuMzQ3Nzg1NTMwMDQ0MjM0XSwgWy0yLjQzNDAzNjExODk5Mjc3NzcsIDUzLjQ5NDMzMjU0MzI3MTI0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fYWNmNTUyYzA2ZjM2NGUxN2IxYmQ2MWRkYWM2OGM3NjYuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fM2Y2N2QyOGFkYTFhNDExYTg3ZTBjZGEzMmFiYzk0MjEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1swLjc5MDc4NzcyNzEyNTYyNjEsIDUxLjA1MjQyMDEwNDk4MDI4NV0sIFswLjk5ODU0NDQ1MjIzMDQ0NjQsIDUxLjExNDY0ODY2NzEwNDUzXSwgWzEuMTc2NTc1MzY3NjA2NzQzNiwgNTAuOTY3MDA1NTM1MTA3MzNdLCBbMS4xNDczMzI4MzY1ODU4MDIsIDUwLjc1NjYyNTIyNDIyOTI5Nl0sIFswLjkzOTQwMzUwMzU1OTY4NzYsIDUwLjY5Mzc5MTUzOTU0NjE3XSwgWzAuNzYwODg3OTk5NDU5MDQyNSwgNTAuODQxOTQyOTQ2NjQ5ODY2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fM2Y2N2QyOGFkYTFhNDExYTg3ZTBjZGEzMmFiYzk0MjEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMTM3ZDJmOWJlZDYwNDBmMmJhMGZmZTkxNzRiOTczN2EgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNi4zODQ3MjI1MTU1MjQ2NjUsIDU1LjU3MzM4Mjg4NjgxMTI2XSwgWy02LjYwNTc2NTA3OTg3OTg5NTUsIDU1LjUxNjAzNjAwNDYzNTM5XSwgWy02Ljc0ODc0NjUwODc3MjI5MSwgNTUuNjgwMzQ5NjkzNzI0MjddLCBbLTYuNjcwMDM5NTg4MjY5NTA5LCA1NS45MDIzNzMxNDg1OTk5ODVdLCBbLTYuNDQ4Mzk1NjcwNzA2NjAzLCA1NS45NTkyNzk3MzkwMjU4Ml0sIFstNi4zMDYwNTk2OTA1MTA5MjUsIDU1Ljc5NDYwNTgxNDg2MDcxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMTM3ZDJmOWJlZDYwNDBmMmJhMGZmZTkxNzRiOTczN2Euc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMmZjZmZjODk5N2EwNDA4Mjg5NjBiNTE5MTYzZjQ2NGUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC42NDc2ODgwNzU1MTI3MDk1LCA1MC4yNDk1NTMyNDY4OTg5OV0sIFstNC40Mjc0OTQ0MzA0OTYwMjksIDUwLjMxNDc1NjQ0NzI5ODU3XSwgWy00LjI0NjQwNTUyMDkyMDMyMywgNTAuMTYyNTIzNjMzNTI2MDJdLCBbLTQuMjg1MDk0NTcyNTM3MzEsIDQ5Ljk0NDU2ODE2Mzc4MDYxNl0sIFstNC41MDU1NDU3MTY0MTg4NjM1LCA0OS44Nzg3MzA4NjgzMTYxXSwgWy00LjY4NzA1MTMzMzY1NzQ5OSwgNTAuMDMxNDgyNjcwMTE2NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzJmY2ZmYzg5OTdhMDQwODI4OTYwYjUxOTE2M2Y0NjRlLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzhhMjYzNTIxNWRlNTRiY2NiNDkwMzcxNDU5Mjc0ZDA3ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuODY1NzE1ODM0NTA0NDc2LCA1OS4yNTY1NDAyNTA4NzAwOF0sIFstMy4wODEzMjU4ODIyNTAwNTMsIDU5LjIwNTM5NzA2MDE4MzAxXSwgWy0zLjIxNjc0ODYzMDUzMTM2OTMsIDU5LjM3NDM5MTk1NjEwMjMxXSwgWy0zLjEzNTkwMzA0MjA1MTI1OTIsIDU5LjU5NDc2NjE1Mzk2MTRdLCBbLTIuOTE5ODA2NTY0NzQyNTksIDU5LjY0NTQxMDExNTM5NTJdLCBbLTIuNzg1MDQxMjEwMzQ3NDMxLCA1OS40NzYxODE0NzE0NTM4MV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzhhMjYzNTIxNWRlNTRiY2NiNDkwMzcxNDU5Mjc0ZDA3LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2YzM2E1ZDE4Mjk4OTRlMDc5M2FlNmJiMWYzMjI5ZTM2ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTYuOTE4MTY5MTQwODY2OTA0LCA1NC42MzE5NTg4NzAxMzQ1NzVdLCBbLTcuMTM5MzA1MjUyNDMxNTU0LCA1NC41NzMyNDc5ODgzMzM4NzVdLCBbLTcuMjgzMjY1ODUyOTI0NjE2LCA1NC43MzU2NTcxMzg4MDg2OV0sIFstNy4yMDU0NTEzNjE1MzYzMTIsIDU0Ljk1NzE2OTc3ODI1MDU5NV0sIFstNi45ODM2ODk4NzgzODM4NSwgNTUuMDE1NDYwMTcwNjA0NTNdLCBbLTYuODQwMzY4MDY0MzUwOTIzNSwgNTQuODUyNjYxMDkzMDgwODddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9mMzNhNWQxODI5ODk0ZTA3OTNhZTZiYjFmMzIyOWUzNi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wMTY5NTQ0MjliOTk0ZTI0OWRkMjMzNTNlZTEzYjRmYiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01LjczMDI1ODAzNjA4NDQyMiwgNTEuMTYyNzg2NTcxMDYxNF0sIFstNS41MDk1Mjg5NTUxMzgyNTI1LCA1MS4yMjY2MTcxMTU1NzE1OF0sIFstNS4zMjk3NjA0NDA2MTQyOTEsIDUxLjA3NDgzMzY0Mzk0Mzc0XSwgWy01LjM3MDMyNTk3OTE3OTc5NywgNTAuODU4Njc5MjM5MzQzMjhdLCBbLTUuNTkxMzQ5ODM1NjcwNzc3LCA1MC43OTQyMDc4OTQ3OTM0NjZdLCBbLTUuNzcxNTE0Mjk3NDUwNDI4LCA1MC45NDY1MzEzOTU4MzYxM11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzAxNjk1NDQyOWI5OTRlMjQ5ZGQyMzM1M2VlMTNiNGZiLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2ZmMDg2MTI1ZWU0MDRiOWRiZTAwN2M0MGI0YTI0NzNiID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTcuMzc2MTc5Mzc4MTIzMzIxLCA1Ny4zNTQ5MzkwNDQxNjIwMV0sIFstNy42MDE1MzkyMjI2NDcwMDMsIDU3LjI5OTM4MzgyNDQ0MjU2XSwgWy03Ljc0NzQzMDEzNjMyNzUyOCwgNTcuNDY5NzQ2NjM1NjYyNTVdLCBbLTcuNjY3MzExMTAwNDg2MDI3LCA1Ny42OTU5Nzk0NzMxODIxM10sIFstNy40NDEzNzkzNjIyMzAxOTEsIDU3Ljc1MTA0MzQ2ODMwMzA2XSwgWy03LjI5NjEzODAwMjgwOTU0NiwgNTcuNTgwMzY4NTQwODE5OTI2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZmYwODYxMjVlZTQwNGI5ZGJlMDA3YzQwYjRhMjQ3M2Iuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZjMxNDY2MTQzZDUzNDU5ODkyNzlmYjg1Y2U5YWJkNzUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy4zOTQ3OTA4ODIyOTM4NDI0LCA1Mi42MzQ2NjI5Mjg4NjYzMV0sIFstMy4xODAzODExNDEyNDQ3OTg2LCA1Mi42OTUxMjgzMzg4NjUwM10sIFstMy4wMDI4NDkyODc1OTA2OTM0LCA1Mi41NDY5MTE0NTI3NTA3Nl0sIFstMy4wMzkzMDE1MzMyMDcwMzE0LCA1Mi4zMzc2NzcyMDA5MTE1ODVdLCBbLTMuMjUzOTkxMDcwMjkxMTc0NywgNTIuMjc2NTg1MjQ1MDk5NDVdLCBbLTMuNDMxOTQ5NTgxMjc1MDI2LCA1Mi40MjUzNTM5MTI3MDUwMV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2YzMTQ2NjE0M2Q1MzQ1OTg5Mjc5ZmI4NWNlOWFiZDc1LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzQyYWY5NWJjNmY1NzRkMzVhZmYzMjIzYmQxODgyZmFjID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTEuMDA1NjgxNjUxNDUwMjM4NywgNTEuMTIyNTI4NjE2NzQ5MjY0XSwgWy0wLjc5MzkwMTQ0MzU3MTkyMiwgNTEuMTg1MTI1ODIwMzU0ODldLCBbLTAuNjE0OTY0NTY2NDQwMDI0MywgNTEuMDM2Mzk2OTg4NjU1ODJdLCBbLTAuNjQ3MzQ0Njc3MzQ1OTE0OCwgNTAuODI0NTUzMDc2MzQ4NjldLCBbLTAuODU5MzMyNTA2NDI2MTg2LCA1MC43NjEzNDEwNTI3MjQyM10sIFstMS4wMzg3MzM4MTc0MjA1NjY3LCA1MC45MTA1ODc0MTk2MzM1MV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzQyYWY5NWJjNmY1NzRkMzVhZmYzMjIzYmQxODgyZmFjLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzMyNTA3ODIxMDEyNzQ2MTQ5ZjU3MDI0NjJmM2ZjZTA0ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuMjg3ODcxOTgwMTk4MzE2LCA1MC43NDMyOTgxNjMyNDEwM10sIFstMi4wNzI4MjY1NTM2MTMwNzA2LCA1MC44MDY5NDAyNzA4NzIwMl0sIFstMS44OTI4OTM1OTgxNzUwMzU0LCA1MC42NTY4ODA2NDE0NjgxNTZdLCBbLTEuOTI3NTU4MDEzNjAyNzM1LCA1MC40NDI2NjE0NTY3MjgwMDRdLCBbLTIuMTQyODI3OTU4NTgwMjU4LCA1MC4zNzgzOTc2ODQxNTQxMV0sIFstMi4zMjMyMTAxMjExNjEwOTA1LCA1MC41Mjg5NzQzNjgwMzQzMDVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8zMjUwNzgyMTAxMjc0NjE0OWY1NzAyNDYyZjNmY2UwNC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl80ZDY0NDU1MTIyMGE0YWE4OGQ3M2NiZDE4ZjY3ZTZiOSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjk3MzYzMjE0MDI4NjMzNTUsIDUyLjY0MDU4NDQ4NDg0MzAzXSwgWy0xLjc2MjA4NjY4MjI3ODUyODQsIDUyLjcwMDY1OTQ3MzUyMzY2NV0sIFstMS41ODQ4NTA4MjQxMDUzLCA1Mi41NTMzODE0NTk3MDY3Nl0sIFstMS42MTg3MTQ2Njg4MzE5NTE2LCA1Mi4zNDU0ODMzMTc5MTg4Nl0sIFstMS44MzA1MTI4NDgyMzUzOTk2LCA1Mi4yODQ3ODk2NDA1NDMyOTVdLCBbLTIuMDA4MTk1NTY5MjY2NzYzLCA1Mi40MzI2MTI2MjM0NTE0OV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzRkNjQ0NTUxMjIwYTRhYTg4ZDczY2JkMThmNjdlNmI5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2M4NzE3YTJlYjE3ODQ4NzFiMzFhYjUwNTZlY2I2YjBkID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMS4yNjM2MzY2NDUwNTYyNTg2LCA1MS41OTQwNjcyNTEwNjU0MV0sIFsxLjQ2OTQyODEwNzM4MTMxOTMsIDUxLjY1NTE4NTg2OTYyMzM5XSwgWzEuNjQ2NDg0ODIzNjQzNDAwNCwgNTEuNTA4NTY4NzUxNzMzNzNdLCBbMS42MTgyMzY2NjY2NzY4OTU3LCA1MS4zMDAzMTgyMDM1OTM4OV0sIFsxLjQxMjI3MjQ1MjI5NTkwNzYsIDUxLjIzODU5NzE2ODcxNDk2XSwgWzEuMjM0NzI3ODI2NDcyMjc0MywgNTEuMzg1NzI4ODIwMTcyMjc1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fYzg3MTdhMmViMTc4NDg3MWIzMWFiNTA1NmVjYjZiMGQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fOGY5NGI2YzkzZTViNGRkOTgzYzJiNDhjNWIxZGYwODIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC4zNTgyNDkxOTU1NTkwNTIsIDU1LjcwMTczMzc4MzM1MTg3XSwgWy00LjU3NDM5NjU1NTQ3MDU4LCA1NS42NDU0NjIwODA1NzY2MTRdLCBbLTQuNzEyMjYwNjQ1OTkxMzI4LCA1NS44MDc0NzI1MTgxNzQ0ODVdLCBbLTQuNjMzMzI3NTg5NzM4MDA1LCA1Ni4wMjYxMDI0Mjk2MTg3MV0sIFstNC40MTY2MDMyNDQ1NjUzNjIsIDU2LjA4MTk0NDg4NjE3MzI5XSwgWy00LjI3OTM4ODUyNzMzMzczNywgNTUuOTE5NTg5MTk5OTc3MjVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl84Zjk0YjZjOTNlNWI0ZGQ5ODNjMmI0OGM1YjFkZjA4Mi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl83MzViMGJlYzUzY2E0MWNiOThmNDJlOTg2YTgwMWNhMSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjc2ODIxMjc1Njc0OTk5NiwgNTMuODczMzI0NDg5MTAzODRdLCBbLTEuNTU5MDgyMjM0MzY3MzI5LCA1My45MzEwNTUwNzU1NTU2NF0sIFstMS4zODM2Nzk1NzkwNzI4MTcsIDUzLjc4NTc0NzUxMjk3MTAxXSwgWy0xLjQxNjk2NDAwNjc1NjY0NzEsIDUzLjU4MjE0OTQwODU1NjU5XSwgWy0xLjYyNjM2MzczMDY0OTYzMzUsIDUzLjUyMzgwNDU3NjE3NDM1Nl0sIFstMS44MDIyMTA4OTk2NzM2OTU5LCA1My42Njk2NzIwNTk3NDU4ODVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl83MzViMGJlYzUzY2E0MWNiOThmNDJlOTg2YTgwMWNhMS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xZTA1MzNjNGU1MTM0YzdkYWFkMjU4OWQyOGE0NjMzMiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy02LjYxOTU3MjkxODI1NjE1OSwgNTQuOTEwOTA1NjY3MDE4NTk2XSwgWy02Ljg0MDM2ODA2NDM1MDkyMzUsIDU0Ljg1MjY2MTA5MzA4MDg3XSwgWy02Ljk4MzY4OTg3ODM4Mzg1LCA1NS4wMTU0NjAxNzA2MDQ1M10sIFstNi45MDU1NzQ5MjE4OTY5ODE1LCA1NS4yMzY4ODY4MzExMzY2OF0sIFstNi42ODQxNjI4MjU5MjI4MjA1LCA1NS4yOTQ3MDU5NDA4ODgwMl0sIFstNi41NDE0ODIzOTU5NDEwNzcsIDU1LjEzMTUyNjUxNjk2NjQ1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMWUwNTMzYzRlNTEzNGM3ZGFhZDI1ODlkMjhhNDYzMzIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fOWZjZDE0MjliOWY2NGIwYTgwZTVkZmU3NTE5OTRlZDMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMC41MTg0MDgxMTAxODA1MjU5LCA1MS42Njc3NzkxNjE5MTI2MDVdLCBbLTAuMzA4NTI4MzY5NDU5NTE5OSwgNTEuNzI5MjQ5NTM3ODAxOTJdLCBbLTAuMTMwNTI2Njg1MTI1MTAyMDcsIDUxLjU4MTU2NTM1NDcyNzk5XSwgWy0wLjE2MTkzNzM0Mzc0ODk1NTk2LCA1MS4zNzE4ODY2NTA4Njk3MjZdLCBbLTAuMzcyMDI1MDg1OTY3NDgwMjQsIDUxLjMwOTgwNDI3NjM5MzQzNl0sIFstMC41NTA0OTUzOTM4NjIwNjQ5LCA1MS40NTgwMTIzMjc4NzA2NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzlmY2QxNDI5YjlmNjRiMGE4MGU1ZGZlNzUxOTk0ZWQzLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzdmMTM0MDg1YjkxYzQ4OGNhZDRiN2FiOGQwMmJmNjFkID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuNzg3MjUwMjYxMDMwMDEzNCwgNTIuNzIyNjAzNTA4MTYxNDFdLCBbLTMuNTcyMjMxNTQzNDEzNDg2NiwgNTIuNzgzMDEwMTcxOTM2ODFdLCBbLTMuMzk0NzkwODgyMjkzODQyNCwgNTIuNjM0NjYyOTI4ODY2MzFdLCBbLTMuNDMxOTQ5NTgxMjc1MDI2LCA1Mi40MjUzNTM5MTI3MDUwMV0sIFstMy42NDcyNTcwNjkwMDI2MzM2LCA1Mi4zNjQzMTg2OTEzNTAwMTRdLCBbLTMuODI1MTE4MDczMjA3MjMwMywgNTIuNTEzMjIwODc4NzE0MTddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl83ZjEzNDA4NWI5MWM0ODhjYWQ0YjdhYjhkMDJiZjYxZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9mZjJkODU4ZTBjMWY0NmQ2YWUxODVlOTYwMjkwZDRmOSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy02LjQ0ODM5NTY3MDcwNjYwMywgNTUuOTU5Mjc5NzM5MDI1ODJdLCBbLTYuNjcwMDM5NTg4MjY5NTA5LCA1NS45MDIzNzMxNDg1OTk5ODVdLCBbLTYuODEzMzEyOTE3NzQ0NzI3LCA1Ni4wNjc4MTUwNDc4Mzg3NF0sIFstNi43MzQyOTQ5MDk0ODIwMjEsIDU2LjI5MDUxNTYzMTY0OTE3XSwgWy02LjUxMjA1Njk1NDEwODUxMjUsIDU2LjM0Njk3MTk3OTI5NjI2XSwgWy02LjM2OTQzMDY1ODQ0ODgxOCwgNTYuMTgxMTgwNjM2ODQyMjY0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZmYyZDg1OGUwYzFmNDZkNmFlMTg1ZTk2MDI5MGQ0Zjkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fM2Q1NmM0YTRjNWZhNDg2Y2IyYzc5MzgxYzNmNTY4MjkgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNS4xOTAwMDI3ODM4NTI3NjYsIDUwLjcwNjUwODUyMTA1MTI3Nl0sIFstNC45Njk1MTc4NzM3MzEzNCwgNTAuNzcxMDI4NDk3NTk4NDQ0XSwgWy00Ljc4OTA1NzY3Mzc3NzcyOCwgNTAuNjE5MDEwOTczNDE5MTZdLCBbLTQuODI4Njc2ODA5NTMzNTkzLCA1MC40MDE5NDM0MjYxMDNdLCBbLTUuMDQ5NDM3OTMxNjI2ODQ0LCA1MC4zMzY3ODU4NzIxNzQ1NV0sIFstNS4yMzAzMDQ2Nzg4MDI4MjEsIDUwLjQ4OTMzMzAyOTY0NDM4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fM2Q1NmM0YTRjNWZhNDg2Y2IyYzc5MzgxYzNmNTY4Mjkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMjRhZWQwY2QyODk1NDIzYjhhM2QyY2M3ZmNmZGI5NzQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxLjA1NDk1OTAzMDU3NDY4NDUsIDUyLjkxNTc4MTI0MDE2MzkyXSwgWzEuMjU5MTkwNzc5ODk0ODQxMiwgNTIuOTc0NTQ0NzU5MzcxMzc2XSwgWzEuNDM0NzE0MDQ3NDc4OTQyMiwgNTIuODI5NjQzMzU0NjY4ODJdLCBbMS40MDY0ODYyNjcxMDk2ODE0LCA1Mi42MjU0NDQyMDUxMzA4OF0sIFsxLjIwMjA1NjUwMDM2MzA3LCA1Mi41NjYwNzkxMTIyMTE3Nl0sIFsxLjAyNjA1MTI1NjEwODExOSwgNTIuNzExNTE0NjA5MDA5NDZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8yNGFlZDBjZDI4OTU0MjNiOGEzZDJjYzdmY2ZkYjk3NC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl82NjcwMzFjODUyMzU0MzM0ODg2ODAyMjJkY2ViODM3MSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00Ljk0OTM4MDAyOTUxNzg2OSwgNTEuOTk0NDgwMTQ5NDgxMzI2XSwgWy00LjczMTE2MjYwNjA1ODM2NywgNTIuMDU2NTU0NjYyOTkxMTI1XSwgWy00LjU1MjYwMDYyNTQyMzgwNiwgNTEuOTA2NDExMTgxNDMzNjVdLCBbLTQuNTkxODUxNzgyNjc1Njg2LCA1MS42OTM2NDMxMjA1ODU4MjZdLCBbLTQuODEwMzY2MTIyNDk2NDIzLCA1MS42MzA5MzI1MDM0OTEzOF0sIFstNC45ODkzMzMzMjU4MDY0NTQsIDUxLjc4MTYyNTc5Njc4OTI4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNjY3MDMxYzg1MjM1NDMzNDg4NjgwMjIyZGNlYjgzNzEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZDg1OGMzOTBkY2YxNDM3MTk5ZDY5OWI5MzQ4Nzg3MjEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi43MjY0NzI4NjU2ODcxMzgsIDU1LjkzMDcxMTEzNjQwOTYwNl0sIFstMi45Mzg0NTYyMjg1OTQ5NDEsIDU1Ljg3NTQ0NTUwOTM4ODc4XSwgWy0zLjA3MjA5MTQxMjI3ODI1NjgsIDU2LjAzNTkzNzM3MzkyNjU0NF0sIFstMi45OTMwOTM2MTgyODA4MzEsIDU2LjI1MjAyNzM4OTA0MjkyXSwgWy0yLjc4MDU1NzYxMzc5ODAwOTcsIDU2LjMwNjg2OTY1MTE4MTkwNl0sIFstMi42NDc1NzE1NTE1OTU1NDk0LCA1Ni4xNDYwNDc2ODcwMjg5Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2Q4NThjMzkwZGNmMTQzNzE5OWQ2OTliOTM0ODc4NzIxLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2I1YThkYjlmN2RiMjQ4YjlhODNmODczZjU3YTQ0MmNmID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTAuMjM0MTg4NjI5NDcxNDU5NTUsIDUzLjUyNDA5Mzk0NzA1NTY4XSwgWy0wLjAyNzg4NDQ1MDA0ODIzMTcxMiwgNTMuNTgyMDc0OTMxODA2NjJdLCBbMC4xNDc0ODkwNDE3MjMzOTk2MywgNTMuNDM3MjM0NzE0MTMwNzFdLCBbMC4xMTcwMjI3MDc3OTkxMjAxNSwgNTMuMjMzODY1Mzc1NTIxMDhdLCBbLTAuMDg5NTE0NTk0NzU4MjY4ODQsIDUzLjE3NTI3NzQzMDEwNjQ3Nl0sIFstMC4yNjUzNTM2MjM4Njg0Njk0LCA1My4zMjA2NjU3MTM1Mzk5OV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2I1YThkYjlmN2RiMjQ4YjlhODNmODczZjU3YTQ0MmNmLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzZlYzc4ZTA2NWI4YTQ2MGM4ZjYwNzQwZWYwYjE0ZDdkID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMC41ODUyMDY5Njg1Njg2OTIsIDUyLjM4Njk5OTY4MTg1MjMxXSwgWzAuNzkxNDEzNDczNjI1NTA2MSwgNTIuNDQ2ODU3NDAwMDI4MDRdLCBbMC45Njc4OTkxMjQyNjgzOTgzLCA1Mi4zMDA4OTAxODYxNTMyM10sIFswLjkzODY1NTc2MjcwNDQ5NjIsIDUyLjA5NDUzNTg2MzM2MDQyXSwgWzAuNzMyMjUwNDYzODc3Mjk5NiwgNTIuMDM0MDcyOTc0NzYzMDldLCBbMC41NTUyODYwNTQ4NzA1NTgsIDUyLjE4MDU2OTM4NzI5MDNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl82ZWM3OGUwNjViOGE0NjBjOGY2MDc0MGVmMGIxNGQ3ZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8yYTU4NTU3N2IxZTM0ZmM4YWJjOTU4NDhkYmFiODJiMCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjA5NzgzMjU3NjI2NDMwOTUsIDUzLjA4NTU3MTkwNjE0NjYyXSwgWy0wLjg4ODg3MzE3MjA5MjE2NTQsIDUzLjE0NDU5MTIzMTY5MzkxXSwgWy0wLjcxMjU0NDMwMTY1Nzk1OTIsIDUyLjk5ODUzMzQ2NTgzNDk3XSwgWy0wLjc0NDcxOTM1OTM5OTI4NTYsIDUyLjc5MjkwOTUxODc0ODQyXSwgWy0wLjk1MzkyMTkxNjY2MDg0NTYsIDUyLjczMzI3NzI4OTA3NjhdLCBbLTEuMTMwNzA3NDA5NjA0Njk2LCA1Mi44Nzk4ODE3OTE2Nzk2Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzJhNTg1NTc3YjFlMzRmYzhhYmM5NTg0OGRiYWI4MmIwLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzQ1NDA2YTM0OWI5YjQ0ZGJhMzI2OTM2N2ZkZTI5MzY3ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTEuOTI4NTgyOTE2MDU5NzQ4MywgNTkuNjc3OTA0OTU2NTQ0MzRdLCBbLTIuMTQxODE3NTUwMTQyNTc1LCA1OS42Mjc3MDQ0NTk3MTMzOF0sIFstMi4yNzQ5OTMxODM2MDMzMjE3LCA1OS43OTY0MTQyNTU4OTk4OF0sIFstMi4xOTQyNzgwODcyNzEzMiwgNjAuMDE1NTQ0MjY4MjI0NjRdLCBbLTEuOTgwNTc2MzM0NjQxNDc4LCA2MC4wNjUyNDQwNzYyNzI0OF0sIFstMS44NDgwNTU4MzQxMjE0MDIsIDU5Ljg5NjMxNjg1NTM3Mzc3Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzQ1NDA2YTM0OWI5YjQ0ZGJhMzI2OTM2N2ZkZTI5MzY3LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2E5ZGZkZWQxODM1NDQzZGFiMzljMTFmOGQxM2I2Y2RiID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMC4xMDk1MTg3NjI1OTY5Mjc3MiwgNTEuODUxNjgyOTI5NDQ5MDJdLCBbMC4zMTc2NzgzMTM5MjQ5NjU2LCA1MS45MTI2NDcwNjExNjc1OV0sIFswLjQ5NTExOTc1NDc1MjI2NjcsIDUxLjc2NTYyNDExNDQzNDQ2XSwgWzAuNDY0ODc1NjE1MjY0NzExNTUsIDUxLjU1NzExMzA2MTU1NzYxXSwgWzAuMjU2NTE2OTM2MTA4NzkxNCwgNTEuNDk1NTQwNDg2ODQwODddLCBbMC4wNzg2MDAyNjkyNzY4MTM4OCwgNTEuNjQzMDg3MTU0NzA3MTc1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fYTlkZmRlZDE4MzU0NDNkYWIzOWMxMWY4ZDEzYjZjZGIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fM2FiYzRiYjk0NTNhNDI4Njg1N2NmOWQ0NmZmN2QwYjUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy45OTY4MDAyMDA0NTkyMTYyLCA1Ny43ODA5ODUyMTE1NjAyOF0sIFstNC4yMTQxODYwNjEwOTAxOTgsIDU3LjcyNzQ0MTE2NjIxNjEyXSwgWy00LjM1MTk1NzM2NDg1MzY2NywgNTcuODk0MzY2NjExNzMxMDNdLCBbLTQuMjcxNjg1ODg1MjY4NzY2LCA1OC4xMTUxMjE4NTgxNTMzXSwgWy00LjA1Mzc2OTU0MDEwNDMxMSwgNTguMTY4MTkwNjQwNjA2MTU2XSwgWy0zLjkxNjY1NDQ3MDMwNTM2LCA1OC4wMDA5ODE5MTMwNDA1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fM2FiYzRiYjk0NTNhNDI4Njg1N2NmOWQ0NmZmN2QwYjUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZWI3MTlmYWRmZDlkNDcxOGE2OGY4YWQ0MmUyYTFmM2UgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMS45MzcyNzU2MzYzOTY1NDUzLCA1NC45ODA5NjA3MjEwMzc1Nl0sIFstMi4xNDU5Nzg1NTc0OTAwOTY3LCA1NC45MjQ5NTc4NjM3NjcxNV0sIFstMi4yNzY5MzYwMzQzNTM1NDA1LCA1NS4wODE4OTMxNDMwODE0XSwgWy0yLjE5ODU0NjM1NjU0Njk5MTQsIDU1LjI5NTE4NDYzNzk1NTAzXSwgWy0xLjk4OTI4NDE4NDQxMTY4OCwgNTUuMzUwNzkxNTQwNzk4NzFdLCBbLTEuODU4OTcwNTM4NjA4MzI2LCA1NS4xOTM1MDUyODA1MzI0MzVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9lYjcxOWZhZGZkOWQ0NzE4YTY4ZjhhZDQyZTJhMWYzZS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8zYjlkOTZhMTM2OWY0OTRkOWJjNjQxMGIzZTM1MTMxZCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU2NDk3ODUyMDc0NzExNCwgNTQuODEyNDc0OTkzODI5ODZdLCBbLTIuNzc1MjY3MTQ4OTU2NzQ4LCA1NC43NTU5OTM4NDIwODA0NV0sIFstMi45MDc4NjgyNjM3MDE1MzYsIDU0LjkxMzI4MDAzODQ4MDMyXSwgWy0yLjgyOTUzNTkzNTM0MTQ2MDYsIDU1LjEyNzQwODc1OTQyNjM5XSwgWy0yLjYxODY3NjQ1MzYzMDQ0NDUsIDU1LjE4MzQ5MzgyMzUxMDY0XSwgWy0yLjQ4NjcxOTc5MzcxNzI4NywgNTUuMDI1ODQ4NjY3NTg3NjhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8zYjlkOTZhMTM2OWY0OTRkOWJjNjQxMGIzZTM1MTMxZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9jOWZiYWEyNmM1NTM0MzIwYTU2OWFiMWFmMWUxYjE2ZSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjExMjQ1MTQ4NDE3NTc3MDIsIDUxLjkxNzA1MTQ0NzUxMjMxNF0sIFstMi44OTc0OTEyMDU4MDY1NzgsIDUxLjk3ODc2OTc1MTE1Mzg4NF0sIFstMi43MTg5NjMzNzc2MTkxNiwgNTEuODI5NzI2Nzc5NDc5ODRdLCBbLTIuNzU0OTYzMTg0MDAzMjgyLCA1MS42MTg0MjU0MDg3MzQ0XSwgWy0yLjk3MDE4NTAzNjc3ODY3NzMsIDUxLjU1NjA4MTEyMTU4NjE1XSwgWy0zLjE0OTE0NjU3MDMxNTE4MzUsIDUxLjcwNTY2MzkzMTc3ODg3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fYzlmYmFhMjZjNTUzNDMyMGE1NjlhYjFhZjFlMWIxNmUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMWUxZmIwYjQ2ZjM1NDIxNjhmZDU1NjE5MWZmY2VkZTYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNS44NjgzMjYxODk0MzcwMjYsIDUxLjUyOTkzNTUyOTI1NzI0XSwgWy01LjY0NzkwMTUzMDMzNDY4NiwgNTEuNTkzMTI0NTI2ODYzMDg2XSwgWy01LjQ2ODY5ODUxMzI0NTAyOCwgNTEuNDQxNzM4ODgxNjc5MDldLCBbLTUuNTA5NTI4OTU1MTM4MjUyNSwgNTEuMjI2NjE3MTE1NTcxNThdLCBbLTUuNzMwMjU4MDM2MDg0NDIyLCA1MS4xNjI3ODY1NzEwNjE0XSwgWy01LjkwOTg1MzE0ODAwODY0OSwgNTEuMzE0NzE5MDI1NDMzODk1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMWUxZmIwYjQ2ZjM1NDIxNjhmZDU1NjE5MWZmY2VkZTYuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNmI3MTE5YjgxMTI0NGMxYzkxYmI0NzE0MTg4ODA3YjQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy45MDEwODI3NzIyNzIyNDM2LCA1Mi4wOTIyNzc5Mzc3NDI0N10sIFstMy42ODQ4ODY3Njc4NjkxMzE1LCA1Mi4xNTM4ODYxOTcwMTY0NTVdLCBbLTMuNTA2NTA0MjQ5NzA0MzMyNCwgNTIuMDA0NTY4NDI0ODU0MDhdLCBbLTMuNTQzODk3NDU2NzY4NjAyLCA1MS43OTMwOTU4ODQ1MjY1ODZdLCBbLTMuNzYwMzcyOTUyMTA0MTc0NCwgNTEuNzMwODU3NDYwMzE2M10sIFstMy45MzkxNzY3NTI4NTc0NDYsIDUxLjg4MDcyMTUwMjQ3MDcwNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzZiNzExOWI4MTEyNDRjMWM5MWJiNDcxNDE4ODgwN2I0LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzZhNWFiM2IzNWRiMTRiOThiMjg2YWYwOWYwNmRhNzQxID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTAuMTgyNzU0NDA0MzUxNzMyNDMsIDUyLjU1OTc3MDE3MjA0MDU1XSwgWzAuMDI0OTgwNjY3NzM5MjUxMDg1LCA1Mi42MTk1MTY0Mzk3NTQ2OF0sIFswLjIwMTY0NDQxMjU5ODY4MjQzLCA1Mi40NzMyOTI5NDUwOTQ3Ml0sIFswLjE3MTA0MTUyMzQyNDI1LCA1Mi4yNjY3ODc3NjIwMjkwNzVdLCBbLTAuMDM2OTEwMTMxNDg2MjA3MjYsIDUyLjIwNjQzMjQ1MTg1ODMzXSwgWy0wLjIxNDA0MzUzMjUxMTY5MDI4LCA1Mi4zNTMxOTExOTIyNDM3OF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzZhNWFiM2IzNWRiMTRiOThiMjg2YWYwOWYwNmRhNzQxLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2Y2NGVkNjE0NTAxZTRlYjBhMjE0Y2FjNDFkYmExZGY2ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTcuNTE1NDI1OTUwNzY5NTI0LCA1NC4wNzI0NjU4MjA5MTY0NTZdLCBbLTcuNzM3MTgzMTYwMTAzMjE1LCA1NC4wMTI4MjU3Mzc5MzU0MTVdLCBbLTcuODgyNDEyNjczNjIxNDgsIDU0LjE3NDQyNjMwMjMwMDQ2XSwgWy03LjgwNTI1MTkzNjc0NzY4OCwgNTQuMzk2MDc4NzQyODI2OTQ0XSwgWy03LjU4Mjg1MjgwMTc2MzQxNiwgNTQuNDU1MzA4NTYwODUzMzU0XSwgWy03LjQzODI1NjIyOTA4MDQ0LCA1NC4yOTMyOTg5MTYzMTE3Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2Y2NGVkNjE0NTAxZTRlYjBhMjE0Y2FjNDFkYmExZGY2LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2NkODdlODIzMDNkNzQ3YzJhZjg0NzlmM2M0M2U1MTJkID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTcuNTgyODUyODAxNzYzNDE2LCA1NC40NTUzMDg1NjA4NTMzNTRdLCBbLTcuODA1MjUxOTM2NzQ3Njg4LCA1NC4zOTYwNzg3NDI4MjY5NDRdLCBbLTcuOTUwNzg5OTc2NDY1NDU1NSwgNTQuNTU4ODU0NjIyMjgxOTM1XSwgWy03Ljg3MzI5Mzc4OTI4NDIzNywgNTQuNzgxMjYyMDI4NTcyMDRdLCBbLTcuNjUwMjU5NTAxOTYwNDgsIDU0Ljg0MDA3MTM1MTUxMDY5NF0sIFstNy41MDUzNTY0MDM1NDc1MTMsIDU0LjY3Njg5NjQ4NDkwMjk1NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2NkODdlODIzMDNkNzQ3YzJhZjg0NzlmM2M0M2U1MTJkLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2NiZWVlNjM3ZjYxODQ5NTNhNjU1ZjQxMDhmNTYyYmFhID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuMzYzMDU4OTI0MjAzNzc0NSwgNTIuNzI3OTc0MjEzMDk4MDY1XSwgWy0yLjE1MDg0Mzc3MzQ2NzI5MSwgNTIuNzg3OTkxMTYzMDI2Mjg0XSwgWy0xLjk3MzYzMjE0MDI4NjMzNTUsIDUyLjY0MDU4NDQ4NDg0MzAzXSwgWy0yLjAwODE5NTU2OTI2Njc2MywgNTIuNDMyNjEyNjIzNDUxNDldLCBbLTIuMjIwNjcyNDUwNjU0ODcyLCA1Mi4zNzE5NzUwMTE1NDQ0XSwgWy0yLjM5ODMyNTI1MjA5NzYxOCwgNTIuNTE5OTI5NzYxNzk0MDI1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fY2JlZWU2MzdmNjE4NDk1M2E2NTVmNDEwOGY1NjJiYWEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYmNiNDdiYTEyMzMyNGNjOGE3YmJhMDMxYjZkY2IzZDUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNS40ODM4NjU1NTYwNzM2OTQsIDUyLjQ0NTA0NTc3NzM2ODM1XSwgWy01LjI2NTQyMDQ0MzgxMTk5NSwgNTIuNTA2NDI1NzQ0NDA5MjM1XSwgWy01LjA4NzU3OTE1MTE2MDk0MSwgNTIuMzU2NTYzOTEyNjcwMTc1XSwgWy01LjEyNzc4OTQ0MzE3NzA4NywgNTIuMTQ0NzYyNjYzNTI1MThdLCBbLTUuMzQ2NTQ5NTk0NDk2ODcsIDUyLjA4Mjc0NDE2NDc4ODM5NF0sIFstNS41MjQ3ODUyOTU1NDA1ODIsIDUyLjIzMzE2NTI0NTEwNDc3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fYmNiNDdiYTEyMzMyNGNjOGE3YmJhMDMxYjZkY2IzZDUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNTlhMGY1OGQwNjFlNGFjZWI1MTQ5ZTNhZWJlY2VhNjkgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi43MTg5NjMzNzc2MTkxNiwgNTEuODI5NzI2Nzc5NDc5ODRdLCBbLTIuNTA0NjQ3ODc1ODc5ODEwMywgNTEuODkxNDk5MDkxNDAxMjldLCBbLTIuMzI2MDc4NDg3NTM2OTUyLCA1MS43NDI1OTQxOTE5Mzg3N10sIFstMi4zNjEzODYwNDEwNzE0MjYyLCA1MS41MzEzODAwNzczNTMzOF0sIFstMi41NzU5NTQxNDYwOTY5MzIsIDUxLjQ2ODk4Mzg3MTg1MjkzXSwgWy0yLjc1NDk2MzE4NDAwMzI4MiwgNTEuNjE4NDI1NDA4NzM0NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzU5YTBmNThkMDYxZTRhY2ViNTE0OWUzYWViZWNlYTY5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzhmOWY3NTk5ZjUxYTQzMjNhZGY0OGM4NjBmOWRmYWJjID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTUuNDc3MTA0NTI0MjM5MDIzLCA1NC4yMjQxOTI5OTg4NzkzMV0sIFstNS42OTQzMjQ2MzY1OTM4NDIsIDU0LjE2NTY5MTcwNDM3NDcxNl0sIFstNS44MzQ0MzkyNzIwODQ0NzEsIDU0LjMyNTA5MzQzMDA4Njk2XSwgWy01Ljc1NjY5Mjc1NzMzMDYxMSwgNTQuNTQzMzkxMDE1MTg4MzZdLCBbLTUuNTM4ODU0Nzg1OTkwNTg0LCA1NC42MDE0OTE1NTA4ODk2Nl0sIFstNS4zOTkzODEwMDM4NjU0NzIsIDU0LjQ0MTY5Nzg0NTIxNDgxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fOGY5Zjc1OTlmNTFhNDMyM2FkZjQ4Yzg2MGY5ZGZhYmMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZTM3YzFkYzE2YmZiNDM4ZjkwYjE0YWZiNTg0NGUzNTggPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMC4wMzY5MTAxMzE0ODYyMDcyNiwgNTIuMjA2NDMyNDUxODU4MzNdLCBbMC4xNzEwNDE1MjM0MjQyNSwgNTIuMjY2Nzg3NzYyMDI5MDc1XSwgWzAuMzQ4MTAwMTE4ODU0MjcyNCwgNTIuMTIwMTU5OTY1OTQzMTddLCBbMC4zMTc2NzgzMTM5MjQ5NjU2LCA1MS45MTI2NDcwNjExNjc1OV0sIFswLjEwOTUxODc2MjU5NjkyNzcyLCA1MS44NTE2ODI5Mjk0NDkwMl0sIFstMC4wNjgwMTIzMjQzMDc3MzQ5NSwgNTEuOTk4ODQwMzEwMTgwNjFdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9lMzdjMWRjMTZiZmI0MzhmOTBiMTRhZmI1ODQ0ZTM1OC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9jZTAyZDdlNTA5YTI0YzY2YjQzMTBjZGNiYThhYTQ2YSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00LjA2MzcxMDQxOTUxMTI2NywgNTUuOTc1NDAxNTIyOTEwOTddLCBbLTQuMjc5Mzg4NTI3MzMzNzM3LCA1NS45MTk1ODkxOTk5NzcyNV0sIFstNC40MTY2MDMyNDQ1NjUzNjIsIDU2LjA4MTk0NDg4NjE3MzI5XSwgWy00LjMzNzQ4ODg4NzY0NDU4OCwgNTYuMzAwNDUxNDA1NTU2Ml0sIFstNC4xMjEyNDI1NzYwODk4NzMsIDU2LjM1NTgzMDAyMDY1OTc5NV0sIFstMy45ODQ2NzgzNjc0NDE2NDc1LCA1Ni4xOTMxMzgzMjc3MTk0NzRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9jZTAyZDdlNTA5YTI0YzY2YjQzMTBjZGNiYThhYTQ2YS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl82MjQxZDNiNmMxNzM0MDA5OWQxMDI5MzIxYTQzY2Q1NyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjg4MzAxMzk0MjgyMjM4NDcsIDU3LjAxMTQyNDI0NDU5MzE2NV0sIFstNC4wOTkzMTY0NDkwNDQ3OTk1LCA1Ni45NTY5NTc1MDI1Mzc0NV0sIFstNC4yMzY1MDAxMTA3Mzk0OSwgNTcuMTIxNzgwNDYyNzE1MjhdLCBbLTQuMTU2NzI2NjQwNzMxOTU1LCA1Ny4zNDEzNzgxMzc1NTExNzVdLCBbLTMuOTM5ODc4Nzk0NjgzNzU1LCA1Ny4zOTUzODgxNzY3Mjk2OF0sIFstMy44MDMzNDkxNjM2NzU4NjQ3LCA1Ny4yMzAyNTk3MjU3NDE2NzVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl82MjQxZDNiNmMxNzM0MDA5OWQxMDI5MzIxYTQzY2Q1Ny5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl83ZTA1Yjc3M2NlOWU0MzYwYTA1MjY5YmZiZTkwMDFlNiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01LjUzODg1NDc4NTk5MDU4NCwgNTQuNjAxNDkxNTUwODg5NjZdLCBbLTUuNzU2NjkyNzU3MzMwNjExLCA1NC41NDMzOTEwMTUxODgzNl0sIFstNS44OTcxMzg4MjI0MDI3MzM1LCA1NC43MDM5Mjc5MDcwODUwMl0sIFstNS44MTkxMDM5MzgzODE3Nzk1LCA1NC45MjI5NTAyMDI5ODIyMzZdLCBbLTUuNjAwNjU0NDQ2MDQ2OTAzLCA1NC45ODA2NDAyMzYzMTU5MTRdLCBbLTUuNDYwODUxMTI2MzUyNzMzNSwgNTQuODE5NzIxMDY4NjAxOTE1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fN2UwNWI3NzNjZTllNDM2MGEwNTI2OWJmYmU5MDAxZTYuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZjdlZGFiMDkzNzZhNGIxNDg2MzljMzMzYmI5NWQwODkgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNS42MDkzNzYyMDQ0NDg1NjYsIDU3LjE4MDY3NTE1Mjc3MDAyXSwgWy01LjgzMDMzNDA3MDIyMDc2NiwgNTcuMTI1NjY3ODQxOTUyNzJdLCBbLTUuOTcxOTM4ODk5MTg5OTgzNiwgNTcuMjkzMjE3MDcyNTc0MTVdLCBbLTUuODkxOTMxNjQxMDMwODkxLCA1Ny41MTYwODUwNjIxMTU1M10sIFstNS42NzA0MTM4MzE3NjMxMDcsIDU3LjU3MDYxODg0OTExODIyNl0sIFstNS41Mjk0NjI2NTM1MDczOTYsIDU3LjQwMjc2MDc1MzgxMDI3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZjdlZGFiMDkzNzZhNGIxNDg2MzljMzMzYmI5NWQwODkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYjVkOWI4OGJkMmVkNGU3Zjk5YjNlNjdjMWY4N2Y4NTggPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy4xMjcwNjAwODk0Njk2MDc1LCA1Ni40MTM1NzY1MTYwNjAyOF0sIFstMy4zNDA2NzM4OTE5MDA2MzQsIDU2LjM1ODcwOTAyOTc5NDM4XSwgWy0zLjQ3NTYxNjA3MDIyMjc4NjcsIDU2LjUyMDk5MDMxMzA3OTE4XSwgWy0zLjM5NjI5MjQ5NzQwODU4MjYsIDU2LjczODQ2MDM0MTkzMzg4XSwgWy0zLjE4MjEzMDI3OTE1NjE5NiwgNTYuNzkyODkwNDQ3MTM2MTVdLCBbLTMuMDQ3ODM5NTA4MzQyNjMyNiwgNTYuNjMwMjkwMzQ4ODY0MzddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9iNWQ5Yjg4YmQyZWQ0ZTdmOTliM2U2N2MxZjg3Zjg1OC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xMDFlMGQ1MTkwMjU0YTFkOWVhZmY4NDg5YTAyOTBlZCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjkyNjQ3MTc4OTE4MTgwOSwgNTMuMDc5NDAzOTYzODQ1ODA2XSwgWy0zLjcxMTc1MDc4MDE5MTYxMjUsIDUzLjEzOTE4MjA3NTc4MTQzXSwgWy0zLjUzNDgzODQ3Mjg5OTQ3NTMsIDUyLjk5MTI2NTUyNjU4MTQ4XSwgWy0zLjU3MjIzMTU0MzQxMzQ4NjYsIDUyLjc4MzAxMDE3MTkzNjgxXSwgWy0zLjc4NzI1MDI2MTAzMDAxMzQsIDUyLjcyMjYwMzUwODE2MTQxXSwgWy0zLjk2NDU3OTE2MDUzMjkyNCwgNTIuODcxMDgwNjI2NDQyNjRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8xMDFlMGQ1MTkwMjU0YTFkOWVhZmY4NDg5YTAyOTBlZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wNjI3NGMxOGQwOTE0YTdhYjNlMGE3NmY1YzIxMTQyZSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjI1MjgyMjAxODMyNzI1MiwgNTUuMDE0NzU2NDIwNzIyNTVdLCBbLTMuNDY1MjM5NjY1Mjk5MzIzNiwgNTQuOTU4MTg3OTgxMTI1MTldLCBbLTMuNTk5ODI5OTY4NzUyMTMxLCA1NS4xMTY5MTAyMjYzNjExNF0sIFstMy41MjEzNTYwNjM4NDQ4Njk4LCA1NS4zMzI1NjEwMjAyODQ2NF0sIFstMy4zMDgzNjIwNjYxMTI4MjYsIDU1LjM4ODcyNDA3NTgxMDAyNV0sIFstMy4xNzQ0MTc5NjIzNDAwODU0LCA1NS4yMjk2NDQxNzY3MjU1MTVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8wNjI3NGMxOGQwOTE0YTdhYjNlMGE3NmY1YzIxMTQyZS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lNWI2N2UwMGYzNTE0MzdlYTliYmM2NDVjODRhYTUxNyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU3NTk1NDE0NjA5NjkzMiwgNTEuNDY4OTgzODcxODUyOTNdLCBbLTIuMzYxMzg2MDQxMDcxNDI2MiwgNTEuNTMxMzgwMDc3MzUzMzhdLCBbLTIuMTgyMzUwMjkxMzQ0MDY5MywgNTEuMzgyMDgwMjQ0MTM1Nl0sIFstMi4yMTc0NDA4MjM2MTcwNjMsIDUxLjE2OTg1MzU3NDgwNjMzXSwgWy0yLjQzMjI1MjI3MDgxMjE2NywgNTEuMTA2ODM0MDQ3MTc0MzhdLCBbLTIuNjExNzMwOTU0NTkxNzY1NywgNTEuMjU2NjY0MjAzMjIwNDldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9lNWI2N2UwMGYzNTE0MzdlYTliYmM2NDVjODRhYTUxNy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lZTIyZjg5NzA1MDY0YmNiYmQ0MGI5YTBmYmMyMGE3NCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00LjQxNjYwMzI0NDU2NTM2MiwgNTYuMDgxOTQ0ODg2MTczMjldLCBbLTQuNjMzMzI3NTg5NzM4MDA1LCA1Ni4wMjYxMDI0Mjk2MTg3MV0sIFstNC43NzE1MDgyMTI0MjczODUsIDU2LjE4OTIwMjY4ODg4MjQ0XSwgWy00LjY5MjMxMzE1OTU1MDg2OSwgNTYuNDA4NDgyODI0NjEzNDVdLCBbLTQuNDc1MDE4NjQwNzgwMjA2LCA1Ni40NjM4ODY1NjA0ODc3MTVdLCBbLTQuMzM3NDg4ODg3NjQ0NTg4LCA1Ni4zMDA0NTE0MDU1NTYyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZWUyMmY4OTcwNTA2NGJjYmJkNDBiOWEwZmJjMjBhNzQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMzZiYzIxYjE1MmFlNGVmZmE2NDBiNDlhMzM2OTQyZTMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNi40NjE3NjczNTgzODk1MzksIDU4LjE5NDMwOTQ5MTIxOTk2XSwgWy02LjY4NTg2MTM0MzQ5LCA1OC4xNDAyNTM1Nzc2OTQ3NjRdLCBbLTYuODI5Nzk3NzUxNzg5OTc1LCA1OC4zMTE1MjIwMzE1NTA5NF0sIFstNi43NDg5ODQ1MjM1MzE4OTksIDU4LjUzNzEzMDQ4NDMyODMxXSwgWy02LjUyNDM0NTUyODk0MjYxMywgNTguNTkwNjgyMzc2Mzk3NjE2XSwgWy02LjM4MTA2NDA4OTEzNzM1MiwgNTguNDE5MTMyNDQ4NDk1MzhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8zNmJjMjFiMTUyYWU0ZWZmYTY0MGI0OWEzMzY5NDJlMy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9kYjIxMTdjMDQzZGQ0ZmE3YTA1ZjQ4MzI2MDU4ZmE3MCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01LjMwNDMyMjM2NjY1NTc4LCA1NS4yNTY4MDkyMjAyMjMyNl0sIFstNS41MjIzNjkwNjIyMjg2NjcsIDU1LjE5OTU3OTc2ODU4NzYyXSwgWy01LjY2MjQ5Mzg2NDk3OTQ1MSwgNTUuMzYxNjE5MjQ4NzA3MjFdLCBbLTUuNTgzOTI1MjAwMDMyNTczLCA1NS41ODEyNTM3MTE1NTY2M10sIFstNS4zNjUyODIxNDIzNjEzNTEsIDU1LjYzODA1ODE0NzAxOTQ4XSwgWy01LjIyNTgwMzc4NTQyODA1NiwgNTUuNDc1NjU1NzE2NzMwNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2RiMjExN2MwNDNkZDRmYTdhMDVmNDgzMjYwNThmYTcwLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2Y0NDUyMjM3NmQ2YjRjNjY4YmM0NGNlNDRiMmI1MWNiID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTUuODQ4MTUxODgyMjI2NDk2LCA1Ni41MTUzMjc1NzY0NzQxOF0sIFstNi4wNjg5Nzk2NzI4MDk5NzksIDU2LjQ1OTM3NzMwMDM5MzEzXSwgWy02LjIxMDk1NjkyODg1NjUyNSwgNTYuNjI1NTA4MzE0OTEyNzVdLCBbLTYuMTMxNDU1MDg2MTA5Mzc5LCA1Ni44NDc5MjIxMjk0MjgxMl0sIFstNS45MTAwNTA3NzYzNzE4ODEsIDU2LjkwMzQxMzAwMDk4Nzk1XSwgWy01Ljc2ODcyNDM1MTcyOTAzODUsIDU2LjczNjk1MjA3MDgyMzMxNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2Y0NDUyMjM3NmQ2YjRjNjY4YmM0NGNlNDRiMmI1MWNiLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzBiMmNiYmFlOGNiZDQzZTJiMWE4MzAyNGJmODA0NzBhID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTYuMjczNzEyMDY3NTEwNTM0LCA1Ny4wMTUxNTI2NzMyODgyNF0sIFstNi40OTYxMjA4NTE4NjI5LCA1Ni45NTk2NDM1MDE3MDM5XSwgWy02LjYzOTMwMDAzMDQ1NTA3MSwgNTcuMTI3NjQ5MDAyNjc3MzJdLCBbLTYuNTU5NDE4MTUzNjUyMTY5LCA1Ny4zNTE0ODM0Mzk4NjI5Nl0sIFstNi4zMzY0Mzk0OTk3NTYzOTcsIDU3LjQwNjUxODAyMDI5NzI3XSwgWy02LjE5MzkxMjA2MDI5OTE4NiwgNTcuMjM4MTk1MzgyMjI1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMGIyY2JiYWU4Y2JkNDNlMmIxYTgzMDI0YmY4MDQ3MGEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fOGVkNjNlMzBkNTU0NDk2NTgyMWQ0NmJmY2I2ZDQ0ZDMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC4wMDYyNTM5NjQ1NTg1ODEsIDU1LjU5NjcwMDM0MzI4MDE5XSwgWy00LjIyMTM1NzIwOTg1MTYwNywgNTUuNTQwNDYzNzEwMDc4MjNdLCBbLTQuMzU4MjQ5MTk1NTU5MDUyLCA1NS43MDE3MzM3ODMzNTE4N10sIFstNC4yNzkzODg1MjczMzM3MzcsIDU1LjkxOTU4OTE5OTk3NzI1XSwgWy00LjA2MzcxMDQxOTUxMTI2NywgNTUuOTc1NDAxNTIyOTEwOTddLCBbLTMuOTI3NDY3NDMxNDAzMTI5MywgNTUuODEzNzg1MjQwODM5NTJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl84ZWQ2M2UzMGQ1NTQ0OTY1ODIxZDQ2YmZjYjZkNDRkMy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl82YTFhNGIyYzhlNDA0NjNjYTU4ZDlmZjUzNDA4MjQ4YyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjk1MDM1MDQyMzc4MTQ4NTcsIDU0LjA1MjA0MjI3MjE2OTA5Nl0sIFstMy43MzcxNDgwNjk1MjQxNTcsIDU0LjExMDAwMjc1Mzc5ODEwNl0sIFstMy41NjE3MzQzMjgxMzk5MTcsIDUzLjk2MzU0NzYwNDI2NjY3XSwgWy0zLjU5OTExMjMzODIzNzg2MTYsIDUzLjc1ODU1ODg0ODM0NTA5XSwgWy0zLjgxMjYyOTUyODIwNTk5NzQsIDUzLjY5OTk3MjYzOTUwMTM5XSwgWy0zLjk4ODQ1NDc4ODU2NjMxOCwgNTMuODQ3MDAwODk3ODA1MThdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl82YTFhNGIyYzhlNDA0NjNjYTU4ZDlmZjUzNDA4MjQ4Yy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9hZjQ3NDUwYTBiN2U0ZWI2YWQ1MzRmODg0ZTU0YmEyMCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0wLjM3MjAyNTA4NTk2NzQ4MDI0LCA1MS4zMDk4MDQyNzYzOTM0MzZdLCBbLTAuMTYxOTM3MzQzNzQ4OTU1OTYsIDUxLjM3MTg4NjY1MDg2OTcyNl0sIFswLjAxNjQ1MjY2MzI3MTcwNDE3NiwgNTEuMjIzODE5MjI2MTYwMjFdLCBbLTAuMDE0Nzc0OTQyMDA4Mzc2MTEyLCA1MS4wMTMxNTE0NzEwNjQ5NF0sIFstMC4yMjUwNjE2ODAyMTcxODU3NiwgNTAuOTUwNDU3NzI2MzYwNTU0XSwgWy0wLjQwMzkyMzA2MDkwOTU3MTcsIDUxLjA5OTA0Mjc4OTgzMTc2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fYWY0NzQ1MGEwYjdlNGViNmFkNTM0Zjg4NGU1NGJhMjAuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZWY4OGQwY2I0MDg3NDk2OTllOGZlNDNjMDc1MDM1NDUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41MTY3MjI3MzEzNjkyNDU3LCA1OS4xMzk0NDkwMDc2NTkxMl0sIFstMi43MzEyMjc5NTQ0ODk4ODgsIDU5LjA4ODI5MzIxNjYwMDUxXSwgWy0yLjg2NTcxNTgzNDUwNDQ3NiwgNTkuMjU2NTQwMjUwODcwMDhdLCBbLTIuNzg1MDQxMjEwMzQ3NDMxLCA1OS40NzYxODE0NzE0NTM4MV0sIFstMi41NzAwNTA3NzU1NzA5NjMsIDU5LjUyNjg0MzM0MjUxOTQxXSwgWy0yLjQzNjIxOTI4ODEwNjIxNCwgNTkuMzU4MzYwMjYwNzc5ODNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9lZjg4ZDBjYjQwODc0OTY5OWU4ZmU0M2MwNzUwMzU0NS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8zYTA0OTYwMGZlMmU0NGEyYWZjOTQwNDUzNzdmYWY0MyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy02LjE5MzczODg3NTQ0NjM0NSwgNTQuNDI2NjgzNTczMzY3MzhdLCBbLTYuNDEyOTM1NzY0MzIwOTQzNSwgNTQuMzY4MDc1NDM3NTU2NDldLCBbLTYuNTU0OTg3Njc2MDEwNTY5LCA1NC41Mjg5Njk4Nzk0NzY5NzVdLCBbLTYuNDc3MjAyMzkyNDM0Mzc5LCA1NC43NDg4NjYxMzM3Mzg2OV0sIFstNi4yNTczODM1NjkyMTY5MzYsIDU0LjgwNzA2Mzc3NDMxMDQzNl0sIFstNi4xMTU5NzE3NzU2NTU4ODUsIDU0LjY0NTc3ODI4ODAxODc3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fM2EwNDk2MDBmZTJlNDRhMmFmYzk0MDQ1Mzc3ZmFmNDMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMTRjMjQ5Y2I0ZWY3NGUxNDgyYmU2YWYwMDI1MDZmNDMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi44MTE2OTQyMjcxMjU1NzIsIDU4Ljg2OTE0NjAzOTM5NzY5XSwgWy0zLjAyNjgxMDAwMDcwMzYyOSwgNTguODE3NTEyNDYxODE5MV0sIFstMy4xNjE5NTQ2MjU5MTQwNTgsIDU4Ljk4NTUxNDA3NDUzOTY0NF0sIFstMy4wODEzMjU4ODIyNTAwNTMsIDU5LjIwNTM5NzA2MDE4MzAxXSwgWy0yLjg2NTcxNTgzNDUwNDQ3NiwgNTkuMjU2NTQwMjUwODcwMDhdLCBbLTIuNzMxMjI3OTU0NDg5ODg4LCA1OS4wODgyOTMyMTY2MDA1MV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzE0YzI0OWNiNGVmNzRlMTQ4MmJlNmFmMDAyNTA2ZjQzLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzQxOTljYjc0ZGMwODQ2ZjQ4NGRhZjViYzkyMTgwMTA2ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMC40Mzg3MjIxODU1OTU0OTQzLCA1Mi43Mzg1MTQwMDU0MTE1OTVdLCBbMC42NDQ3MjEzNjEzNTE2NjI4LCA1Mi43OTc3NjY0MTMwOTg1N10sIFswLjgyMDgyOTYwNzY4MTc4MjMsIDUyLjY1MjIwNTUzOTc5NjI2XSwgWzAuNzkxNDEzNDczNjI1NTA2MSwgNTIuNDQ2ODU3NDAwMDI4MDRdLCBbMC41ODUyMDY5Njg1Njg2OTIsIDUyLjM4Njk5OTY4MTg1MjMxXSwgWzAuNDA4NjIyNjc5NDkwODY5NjcsIDUyLjUzMzA5NTI2MDAwMjQ3Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzQxOTljYjc0ZGMwODQ2ZjQ4NGRhZjViYzkyMTgwMTA2LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzgwOGU2MDkxMjkzYjQyZDViZmZkNjNjZjQ0MzI4ZmI4ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTYuMDIyNjMyNjI2MTY4MTk1LCA1NS40NjcxNDE2MTYzNDgzXSwgWy02LjI0MjY4NTg1MTEyNTQzMSwgNTUuNDA5ODMyNjk2MDYxNzA2XSwgWy02LjM4NDcyMjUxNTUyNDY2NSwgNTUuNTczMzgyODg2ODExMjZdLCBbLTYuMzA2MDU5NjkwNTEwOTI1LCA1NS43OTQ2MDU4MTQ4NjA3MV0sIFstNi4wODU0MDY2MTUzMTQ0MzcsIDU1Ljg1MTQ3OTYwMDIyODkzNF0sIFstNS45NDQwMTU4ODI4MDAzNjIsIDU1LjY4NzU2ODIxODMyMTg1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fODA4ZTYwOTEyOTNiNDJkNWJmZmQ2M2NmNDQzMjhmYjguc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMDBiZmFkZmQ3OTBmNDc5OGEzOTExNjAwNzI0ODFkYTkgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNi44MTMzMTI5MTc3NDQ3MjcsIDU2LjA2NzgxNTA0NzgzODc0XSwgWy03LjAzNTkzNzYzOTkxNjgyODUsIDU2LjAxMDg3NjkzNzI2MDExXSwgWy03LjE4MDEzOTk1OTQyNjcxNywgNTYuMTc3MDkyMjg1OTU4MDA0XSwgWy03LjEwMTA3MDc4NzI0ODg2OSwgNTYuNDAwNTk2NjkwMjMxODRdLCBbLTYuODc3ODUwODUwNTg3MjIxLCA1Ni40NTcwNzkyNTIwMTczN10sIFstNi43MzQyOTQ5MDk0ODIwMjEsIDU2LjI5MDUxNTYzMTY0OTE3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMDBiZmFkZmQ3OTBmNDc5OGEzOTExNjAwNzI0ODFkYTkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fY2QxMjI2MmQ3YTE2NDM5Mjk4NzgyOGJmZWEzMGM4YWUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi44MjcyMDUxMDU5MDExMDksIDUxLjE5MzY5NDQ2NTcxMjQ1NF0sIFstMi42MTE3MzA5NTQ1OTE3NjU3LCA1MS4yNTY2NjQyMDMyMjA0OV0sIFstMi40MzIyNTIyNzA4MTIxNjcsIDUxLjEwNjgzNDA0NzE3NDM4XSwgWy0yLjQ2NzgwODQ2NDkzOTc1MywgNTAuODkzNTA2NzczODE4MjFdLCBbLTIuNjgzNTI1NTMzMTgzMjgxLCA1MC44Mjk5MTIyOTAzMDc5NF0sIFstMi44NjM0NDQ1OTUxMzQ0OTQ1LCA1MC45ODAyNjk0ODQ0NTYyNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2NkMTIyNjJkN2ExNjQzOTI5ODc4MjhiZmVhMzBjOGFlLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2I3MjMwN2FlZjNiZDRjYzliNjYwOWU5ZWNkN2RiZTUzID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTUuNjczMjU1MzY1NTcwMTg0LCA1My41ODIzNzg1NDgyOTEyMjRdLCBbLTUuODkwNzAxMDI3MjA3ODA3NSwgNTMuNTIyOTE0MjQ4MzAwNjRdLCBbLTYuMDY2NTUwNTYwNzE5MzYxLCA1My42NzE1ODA2MDc2ODIyOF0sIFstNS45ODkzNzEyNjcyODQ0MTgsIDUzLjg4OTE4MjI4ODg4NTVdLCBbLTUuNzcxNzg0NTI2MjA5MzU5LCA1My45NDgxMzMyOTI0NzczN10sIFstNS42MzIwMDkyNjgxODIyODgsIDUzLjc4OTg3MTIxNzI2Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2I3MjMwN2FlZjNiZDRjYzliNjYwOWU5ZWNkN2RiZTUzLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzliYjFiNTBiYTI3NjQxOWM5NGFhNzI1M2ZhZDQ0ZmNlID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTUuMTI4NDExMzUwODkyNzY2LCA1Ni4yOTcxODEzODE5OTE3NV0sIFstNS4zNDcyMDQ1OTA5NDU4NTUsIDU2LjI0MTI4MjQxNjI2MDQwNF0sIFstNS40ODcyOTc4MTYyOTM0MDUsIDU2LjQwNTg4NzQ4Mjk3NzQwNl0sIFstNS40MDc5NDYxODI2NzA4NTcsIDU2LjYyNjcyNjU5NjczMjkzXSwgWy01LjE4ODU3OTI4MjAxMjcyMywgNTYuNjgyMTc2NjI3OTMxMDY0XSwgWy01LjA0OTEzNzIwNzUwMzA0OCwgNTYuNTE3MjM5MDQ1OTUzMjZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl85YmIxYjUwYmEyNzY0MTljOTRhYTcyNTNmYWQ0NGZjZS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9hM2MzYWY4ZWEyNWQ0ZDNkYjM2NzRiMDc3NDhkYjljYSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjUzMTU1MzEwMTUzMTk3MzcsIDU2LjkwMTc5NjM3MDA3MTI2XSwgWy0zLjc0Njc4ODg5OTgyMDM2NjIsIDU2Ljg0NzM0NzI3NDE1OTkxNV0sIFstMy44ODMwMTM5NDI4MjIzODQ3LCA1Ny4wMTE0MjQyNDQ1OTMxNjVdLCBbLTMuODAzMzQ5MTYzNjc1ODY0NywgNTcuMjMwMjU5NzI1NzQxNjc1XSwgWy0zLjU4NzU2OTgxODI3OTgwMDYsIDU3LjI4NDI1NzIyNzg3OTU1XSwgWy0zLjQ1MTk5ODIwODQzODUxOCwgNTcuMTE5ODczMzA1MTc0NDE2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fYTNjM2FmOGVhMjVkNGQzZGIzNjc0YjA3NzQ4ZGI5Y2Euc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMmQ2N2FjNmY0MGNkNDFjNTg1MjQxY2ZkNzMyYjRjNTMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMS4zMTQ0MDM4MzEyNzAzNzMsIDU1LjE0ODAyMTc3NDYwMDU4Nl0sIFstMS41MjE0ODQzMTg2ODg0NDA4LCA1NS4wOTI0OTIxMTI5MDIyMV0sIFstMS42NTA3OTY5NzcwMjIwNDY1LCA1NS4yNDkwNzQwODIyMTE5NV0sIFstMS41NzIzODYwNjMxODU3MzYzLCA1NS40NjE1MzEyMDMzNzIzOV0sIFstMS4zNjQ3NTgwNDc0OTQ1ODQsIDU1LjUxNjY2NTEwMzE0NjkzXSwgWy0xLjIzNjA4ODAyOTkyMDg5NjcsIDU1LjM1OTczOTk4NTU0MDY5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMmQ2N2FjNmY0MGNkNDFjNTg1MjQxY2ZkNzMyYjRjNTMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZjNkMDYxOGNiMzZjNGNmMTg2MDRjN2RlN2JhNDlmMTMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMS4wNTIyMzc1ODIxNDExMjYsIDUyLjExMDk4MzU2MzMzNzgyNV0sIFstMC44NDE4NDY3MzE0ODk4NTIyLCA1Mi4xNzE3ODczODc2NjQzMjRdLCBbLTAuNjY0MTk1MjQyMjI4MjI3MSwgNTIuMDI0MzYyNDM1NjQ4NDhdLCBbLTAuNjk2NDc1MDM1NzY0NTUwNiwgNTEuODE1NjAwNDM5MDg1OTU1XSwgWy0wLjkwNzA5MTc1MzU5ODI4MTgsIDUxLjc1NDE4MjEzOTg0NzAzXSwgWy0xLjA4NTIwMzk5MjYwNjE1MTYsIDUxLjkwMjE0MDA4NDM3NzY3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZjNkMDYxOGNiMzZjNGNmMTg2MDRjN2RlN2JhNDlmMTMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMjczZmNkOTA3ZDRkNDVlYzhjMWVjZThlMTVlYzM4YzMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy4xODIxMzAyNzkxNTYxOTYsIDU2Ljc5Mjg5MDQ0NzEzNjE1XSwgWy0zLjM5NjI5MjQ5NzQwODU4MjYsIDU2LjczODQ2MDM0MTkzMzg4XSwgWy0zLjUzMTU1MzEwMTUzMTk3MzcsIDU2LjkwMTc5NjM3MDA3MTI2XSwgWy0zLjQ1MTk5ODIwODQzODUxOCwgNTcuMTE5ODczMzA1MTc0NDE2XSwgWy0zLjIzNzI5NDM4MDY2OTMzNCwgNTcuMTczODU2ODY0NTk3NDc1XSwgWy0zLjEwMjY4NjQ2ODYxMTQ4NzcsIDU3LjAxMDIxMjQ3ODA0NTA1NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzI3M2ZjZDkwN2Q0ZDQ1ZWM4YzFlY2U4ZTE1ZWMzOGMzLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzMxMGE2MWUwZTc2MDQxNTlhYTZiNzI3NzRkYmZlMDg1ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuMzA4MzYyMDY2MTEyODI2LCA1NS4zODg3MjQwNzU4MTAwMjVdLCBbLTMuNTIxMzU2MDYzODQ0ODY5OCwgNTUuMzMyNTYxMDIwMjg0NjRdLCBbLTMuNjU2Mjg3NjM4OTQxMzcwOCwgNTUuNDkyMzY1ODYzNjk0MTRdLCBbLTMuNTc3NTc2OTg4Nzg3MzAzNywgNTUuNzA4Njg0MjA1NjEwODldLCBbLTMuMzY0MDEyODAwNjg0MzYzNSwgNTUuNzY0NDMyNjM5NzIzOF0sIFstMy4yMjk3MjkwNDYxMjYwNjczLCA1NS42MDQyNzk4MTI4MjI5OV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzMxMGE2MWUwZTc2MDQxNTlhYTZiNzI3NzRkYmZlMDg1LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2M3NzVjOWNhMTJkZDRmOTBiNTA2YzFhMGNhMzdiNTJiID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTUuMDA4MTc5MDIyMjA3NDIsIDU1LjUzMjQyMzY2MzQ0MzM4XSwgWy01LjIyNTgwMzc4NTQyODA1NiwgNTUuNDc1NjU1NzE2NzMwNF0sIFstNS4zNjUyODIxNDIzNjEzNTEsIDU1LjYzODA1ODE0NzAxOTQ4XSwgWy01LjI4NjQ4NzIzNDM2OTQwOSwgNTUuODU3NTg0Njc3MzE2NjZdLCBbLTUuMDY4Mjc0Nzc4ODkwMzQ0LCA1NS45MTM5MjI5NDgxNDk4MjVdLCBbLTQuOTI5NDQ0NTUyMDYwOTAzLCA1NS43NTExNjY5MjcxODIxMl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2M3NzVjOWNhMTJkZDRmOTBiNTA2YzFhMGNhMzdiNTJiLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzVlYTI1ZTBkNjAyODQwZjliMmU0OTU0MDY3OWE2NWU5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTUuNjcwNDEzODMxNzYzMTA3LCA1Ny41NzA2MTg4NDkxMTgyMjZdLCBbLTUuODkxOTMxNjQxMDMwODkxLCA1Ny41MTYwODUwNjIxMTU1M10sIFstNi4wMzM4MDU3MTI4ODAyODIsIDU3LjY4NDcxNDkxMDg1MTY5XSwgWy01Ljk1MzUwNjU3MTA2MTA0OCwgNTcuOTA4MTc4NDM1Nzc0NThdLCBbLTUuNzMxNDM2NzYyMDcwODI1NSwgNTcuOTYyMjI5MDMyMDM3NjM0XSwgWy01LjU5MDIxNzQ3NDU4Njc3MywgNTcuNzkzMzAxODczMjQyMDE1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNWVhMjVlMGQ2MDI4NDBmOWIyZTQ5NTQwNjc5YTY1ZTkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZjg4NTE4NmJiN2YxNDIyMDkwOGYyNmM4YmU1MTJmOWYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi4yNTE0OTg3OTg2NTE4NzY0LCA1Ny4yMjUxMzM0OTQ2ODA1Ml0sIFstMi40NjM0NjY2MjUwMjA1OCwgNTcuMTcxNjQwNjE5NzAxNzldLCBbLTIuNTk2NDUzNTcwMDMzOTI4LCA1Ny4zMzQ4NTEwNTE3NjM0OF0sIFstMi41MTY4MTk5OTQ4NDA2MjIyLCA1Ny41NTE4NDgyOTc1MzQ0ODRdLCBbLTIuMzA0MzMwNDczMTk4NTY5LCA1Ny42MDQ4OTE1MzIyMTU5Ml0sIFstMi4xNzE5OTU1NTYyOTc5NzI1LCA1Ny40NDEzODk1NDQwMjI0NjRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9mODg1MTg2YmI3ZjE0MjIwOTA4ZjI2YzhiZTUxMmY5Zi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8yMzdhNTM5NTEwYTA0ZWM1ODhjOTZhYjYyYmVmODBhMyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy02LjEzMDEyNDQ5NDUzNDkyMywgNTQuMDQ4MTgyODg2NjkxOF0sIFstNi4zNDg2OTMwNDA0OTYyMDIsIDUzLjk4OTE3NDE0OTc4OTM4NV0sIFstNi40OTA0MTc4MjUzMDU2OSwgNTQuMTQ4OTE4NzE5MjkyNjJdLCBbLTYuNDEyOTM1NzY0MzIwOTQzNSwgNTQuMzY4MDc1NDM3NTU2NDldLCBbLTYuMTkzNzM4ODc1NDQ2MzQ1LCA1NC40MjY2ODM1NzMzNjczOF0sIFstNi4wNTI2NTIyNTA3Nzc5NzksIDU0LjI2NjUzODIxNTc4MjE3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMjM3YTUzOTUxMGEwNGVjNTg4Yzk2YWI2MmJlZjgwYTMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMDQyYTEzZWNjNTg3NGM2NTlhNTA4ZmMwMzgwZGI3OWYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMS41OTk3MDMxMTU5OTc4OTU2LCA1NC44ODA2OTA2MDYyODMyXSwgWy0xLjgwNzMyMDQ3MDAzMzQ5NjgsIDU0LjgyNDczMDM3MzIzMTk5XSwgWy0xLjkzNzI3NTYzNjM5NjU0NTMsIDU0Ljk4MDk2MDcyMTAzNzU2XSwgWy0xLjg1ODk3MDUzODYwODMyNiwgNTUuMTkzNTA1MjgwNTMyNDM1XSwgWy0xLjY1MDc5Njk3NzAyMjA0NjUsIDU1LjI0OTA3NDA4MjIxMTk1XSwgWy0xLjUyMTQ4NDMxODY4ODQ0MDgsIDU1LjA5MjQ5MjExMjkwMjIxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMDQyYTEzZWNjNTg3NGM2NTlhNTA4ZmMwMzgwZGI3OWYuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYWRlN2NlMmM5YzI5NDBlMGEzNDZiMjIyZmJhNDU5NDggPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNi4yNTczODM1NjkyMTY5MzYsIDU0LjgwNzA2Mzc3NDMxMDQzNl0sIFstNi40NzcyMDIzOTI0MzQzNzksIDU0Ljc0ODg2NjEzMzczODY5XSwgWy02LjYxOTU3MjkxODI1NjE1OSwgNTQuOTEwOTA1NjY3MDE4NTk2XSwgWy02LjU0MTQ4MjM5NTk0MTA3NywgNTUuMTMxNTI2NTE2OTY2NDVdLCBbLTYuMzIxMDQ4MjcyMTI2NDE2LCA1NS4xODkzMDM3NDUzODM4MjVdLCBbLTYuMTc5MzE5NzMzOTcwMDgxLCA1NS4wMjY4ODMxNzUxMTU4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fYWRlN2NlMmM5YzI5NDBlMGEzNDZiMjIyZmJhNDU5NDguc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNjlhZTkwYjUxNjUyNDg3Yzk0Y2Y3NGQ3ZmY2Y2RkYjMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy42NTYyODc2Mzg5NDEzNzA4LCA1NS40OTIzNjU4NjM2OTQxNF0sIFstMy44NzAzMzk2MjQyNzc2NzQsIDU1LjQzNjE2NTQ1NDkxMTc3XSwgWy00LjAwNjI1Mzk2NDU1ODU4MSwgNTUuNTk2NzAwMzQzMjgwMTldLCBbLTMuOTI3NDY3NDMxNDAzMTI5MywgNTUuODEzNzg1MjQwODM5NTJdLCBbLTMuNzEyODQyODQ5ODE1MjY4LCA1NS44Njk1NjYyMTQwMzA2NTVdLCBbLTMuNTc3NTc2OTg4Nzg3MzAzNywgNTUuNzA4Njg0MjA1NjEwODldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl82OWFlOTBiNTE2NTI0ODdjOTRjZjc0ZDdmZjZjZGRiMy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl81MmFjNzczNTM4YWM0N2M4OGIyNGY1ZTdkM2U2NmI5NCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjY1MDc5Njk3NzAyMjA0NjUsIDU1LjI0OTA3NDA4MjIxMTk1XSwgWy0xLjg1ODk3MDUzODYwODMyNiwgNTUuMTkzNTA1MjgwNTMyNDM1XSwgWy0xLjk4OTI4NDE4NDQxMTY4OCwgNTUuMzUwNzkxNTQwNzk4NzFdLCBbLTEuOTEwNzc5NzM5Mzc0NzI2MywgNTUuNTYzOTkxMzc5NjI5NjhdLCBbLTEuNzAyMDU1NjI0NDk0NTA2LCA1NS42MTkxNTk4Nzg4OTAwOTVdLCBbLTEuNTcyMzg2MDYzMTg1NzM2MywgNTUuNDYxNTMxMjAzMzcyMzldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl81MmFjNzczNTM4YWM0N2M4OGIyNGY1ZTdkM2U2NmI5NC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl80ODc4NGVkODRlNjg0M2M2OTg3ODA5NDlkOWFmYzgzMyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0wLjc1OTk5MzE2MjQ2MDI0MTUsIDUzLjk1ODY0NTY2NjU3MzgxXSwgWy0wLjU1MzIwOTUzMTI0ODA0NDQsIDU0LjAxNTk1NjYyMzAwNzU2XSwgWy0wLjM3ODI0MDIwNzAzMDA5OTUsIDUzLjg3MTQzNzYxMjQ3OTIxXSwgWy0wLjQwOTU5ODMwMTIxODgzNTU2LCA1My42NjkwNTE3NDUxNTQ4NzRdLCBbLTAuNjE2NjMyMzc2MDYxMzM1OCwgNTMuNjExMTMyMzkwMTI3MDk2XSwgWy0wLjc5MjA1OTA0ODk4OTI5ODQsIDUzLjc1NjIwNzI3NjEzNTkyNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzQ4Nzg0ZWQ4NGU2ODQzYzY5ODc4MDk0OWQ5YWZjODMzLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzI2NTU2NTdkZWY2ZjRjMmZhODc4YjlkMTE0NGE4ZWIxID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuNTE0MjQ3NzU1OTIzNzM5MywgNTkuMTAyNjQxMTQ2ODE4NDM1XSwgWy0zLjczMTU1MDU5MjQwMTY5NDMsIDU5LjA1MTAyNzE1MTMyMjU4XSwgWy0zLjg2ODU2MDAzOTMyOTE3MTUsIDU5LjIyMDUzMzcxODQzOTcyNV0sIFstMy43ODc2MDc0MTc4NTc1MzY1LCA1OS40NDE4OTc2MjQ3NzAxMV0sIFstMy41Njk4MDc5NzUwMTc0ODA1LCA1OS40OTMwMTA1NDg4NDQ5NV0sIFstMy40MzM0NTY4OTY5NDk2MTA2LCA1OS4zMjMyNjMwNDM4NDM2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMjY1NTY1N2RlZjZmNGMyZmE4NzhiOWQxMTQ0YThlYjEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMzYxMzNkNWIwNDI0NGVlYjkwZWZiMDYxY2NlNTVmNzEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMC4yMjUwNjE2ODAyMTcxODU3NiwgNTAuOTUwNDU3NzI2MzYwNTU0XSwgWy0wLjAxNDc3NDk0MjAwODM3NjExMiwgNTEuMDEzMTUxNDcxMDY0OTRdLCBbMC4xNjM5OTA5MzAzODkyNTc0NCwgNTAuODY0NzEwNTcxNTMyODI1XSwgWzAuMTMyOTQyODIzNDEzNjQwMDgsIDUwLjY1MzA2NDM2NTA4NTU4XSwgWy0wLjA3NzUzMzgyNTAwMDkyMzA3LCA1MC41ODk3NjAwNDM4MjY2OV0sIFstMC4yNTY3NzM3MTcxNDczMTA3MywgNTAuNzM4NzEyMTQ3MzA4NTldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8zNjEzM2Q1YjA0MjQ0ZWViOTBlZmIwNjFjY2U1NWY3MS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9kMGZkN2NkMzMwZDA0YmFlYjUzMTlkZDJhYWQ0ZjFjZSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy03Ljk1MDc4OTk3NjQ2NTQ1NTUsIDU0LjU1ODg1NDYyMjI4MTkzNV0sIFstOC4xNzQxMjA0MjAzOTMwNTIsIDU0LjQ5OTU3MjEyNjExMTE0XSwgWy04LjMyMDU5MTI2NTUzNTU1MSwgNTQuNjYzMTE5OTI0NDQ0NTk0XSwgWy04LjI0MzA5Nzc1NDAzMTEyLCA1NC44ODYzNTEzODYyMzg2MV0sIFstOC4wMTkxMzA4NzYzMzMyMDQsIDU0Ljk0NTIwODI0NzU5MzNdLCBbLTcuODczMjkzNzg5Mjg0MjM3LCA1NC43ODEyNjIwMjg1NzIwNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2QwZmQ3Y2QzMzBkMDRiYWViNTMxOWRkMmFhZDRmMWNlLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2RiMGMwMzAxOWYyYjRiNThhNGVkMmY4ODk1ZWYzMTNiID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTYuMDk1NjQwNTQ4NzUwMzQyNCwgNTguMDc3ODgwNzg2MTk5ODRdLCBbLTYuMzE4NzI3NTE2MDM3OTk1LCA1OC4wMjM4MjY3MjAzMzQ5NzRdLCBbLTYuNDYxNzY3MzU4Mzg5NTM5LCA1OC4xOTQzMDk0OTEyMTk5Nl0sIFstNi4zODEwNjQwODkxMzczNTIsIDU4LjQxOTEzMjQ0ODQ5NTM4XSwgWy02LjE1NzQzMjYxMzM5ODI0MiwgNTguNDcyNjg4MTIxMDIxMzM1XSwgWy02LjAxNTA0ODIzOTMxMDQxNSwgNTguMzAxOTIxODIxODQ5MTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9kYjBjMDMwMTlmMmI0YjU4YTRlZDJmODg5NWVmMzEzYi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl85NGNjMmM3NmNhMGE0NDhhOGZlMjQyOTJkYzY2ZTAzOCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjY2NjgwNzI4OTM3NTc4OTUsIDU0LjQ3OTkyNzc2NTA2MDZdLCBbLTEuNDU4OTA1MDMyNDQ2MTE2NCwgNTQuNTM2NDk4NjAzNzU4NDddLCBbLTEuMjg0NDI3NzM0Mjg2OTc2NSwgNTQuMzkyMjA2NTA1Nzg0NTg2XSwgWy0xLjMxNzQxMDYyMzMzOTc4MDIsIDU0LjE5MDc3NzI1MDI5MDQyNF0sIFstMS41MjU1ODk2NDI5MTQ3MzEzLCA1NC4xMzM1OTUwNTU1NTYzMzRdLCBbLTEuNzAwNTEwMDY3Mzk0MTM4NywgNTQuMjc4NDUzNTAxODEyOTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl85NGNjMmM3NmNhMGE0NDhhOGZlMjQyOTJkYzY2ZTAzOC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lZDZhNDQyOTYwZTM0YmU3ODc1ODRhODAzODczOWIzMyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01Ljc5MjQzNDU5NDUxMjEyLCA1OC4zNTU0Nzk1ODY0NTYyM10sIFstNi4wMTUwNDgyMzkzMTA0MTUsIDU4LjMwMTkyMTgyMTg0OTE2XSwgWy02LjE1NzQzMjYxMzM5ODI0MiwgNTguNDcyNjg4MTIxMDIxMzM1XSwgWy02LjA3NjU0NTkwMzEwNTE0OCwgNTguNjk3Mjg4MjM1NDg0NjNdLCBbLTUuODUzMzk2ODA2MjE3MTk4LCA1OC43NTAzNDM1NTk5NTgzOTVdLCBbLTUuNzExNjY5MTUyNzMwNDE1LCA1OC41NzkzMDM3NzU1OTYxNjZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9lZDZhNDQyOTYwZTM0YmU3ODc1ODRhODAzODczOWIzMy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl83ZDIyMzQ0NjViODg0M2Y0YTYyM2UzMThkOTA0YmExOSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzEuNTgyMzY5NjkzNDE1MzQyLCA1Mi40ODAxMzQ1MzUzMzM3MjVdLCBbMS43ODU5OTM1NTA1MTIzOTEyLCA1Mi41Mzk1NTUwMTcwMzI3NzVdLCBbMS45NjE3MzY1MjA1OTYxODcyLCA1Mi4zOTQzNzE2MTkzNTQ2NDRdLCBbMS45MzQzNDI4NTI1MjQ0MzQyLCA1Mi4xODkyNDE3OTQ0ODIxOV0sIFsxLjczMDUzODEzMzU3MTMzNCwgNTIuMTI5MjIxNzAwMzQzNjJdLCBbMS41NTQzMDY2MzA0NTY3MTk1LCA1Mi4yNzQ5MzA4NjQxNzA0MV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzdkMjIzNDQ2NWI4ODQzZjRhNjIzZTMxOGQ5MDRiYTE5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2NjZjYwMjBjMDI3YzQ3Y2U4NTBlNDIzYTc5Mjg4OGVjID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQuMzE4NTYxMjQ2NTQ4ODY3LCA1My4xNjc3MzAwMzg5MTYwNl0sIFstNC4xMDMyNTgyODg5MTYzNTEsIDUzLjIyNzQ0Njc1NTQxMjM5XSwgWy0zLjkyNjQ3MTc4OTE4MTgwOSwgNTMuMDc5NDAzOTYzODQ1ODA2XSwgWy0zLjk2NDU3OTE2MDUzMjkyNCwgNTIuODcxMDgwNjI2NDQyNjRdLCBbLTQuMTgwMTg4Nzc0NzY2NzkwNSwgNTIuODEwNzMzMzg2ODkwNjJdLCBbLTQuMzU3Mzg1MjkwOTgwOTIsIDUyLjk1OTMzOTg5Mjc3ODU3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fY2NmNjAyMGMwMjdjNDdjZTg1MGU0MjNhNzkyODg4ZWMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNTQ5ODg5ZWUxODNhNDVmMzhiZjVmNjc2YmZhMjA3YzQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNS40MTU0MTMxMzQ0NzkxMjMsIDUzLjg0ODc2MzU1MjE1NzEzXSwgWy01LjYzMjAwOTI2ODE4MjI4OCwgNTMuNzg5ODcxMjE3MjY2XSwgWy01Ljc3MTc4NDUyNjIwOTM1OSwgNTMuOTQ4MTMzMjkyNDc3MzddLCBbLTUuNjk0MzI0NjM2NTkzODQyLCA1NC4xNjU2OTE3MDQzNzQ3MTZdLCBbLTUuNDc3MTA0NTI0MjM5MDIzLCA1NC4yMjQxOTI5OTg4NzkzMV0sIFstNS4zMzc5NjgxNDMwNDUzOTMsIDU0LjA2NTUyOTQ5Nzg2MjQ5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNTQ5ODg5ZWUxODNhNDVmMzhiZjVmNjc2YmZhMjA3YzQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMzNhMDJlNGU5MDkyNDBmMWJjOTAwNzAwM2UwY2U2YmEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMS45MDkzNjMwMjgzMDM4NTU2LCA1NC4yMjEzMzY2NTk2NjYwNV0sIFstMS43MDA1MTAwNjczOTQxMzg3LCA1NC4yNzg0NTM1MDE4MTI5NF0sIFstMS41MjU1ODk2NDI5MTQ3MzEzLCA1NC4xMzM1OTUwNTU1NTYzMzRdLCBbLTEuNTU5MDgyMjM0MzY3MzI5LCA1My45MzEwNTUwNzU1NTU2NF0sIFstMS43NjgyMTI3NTY3NDk5OTYsIDUzLjg3MzMyNDQ4OTEwMzg0XSwgWy0xLjk0MzU3NDE3NzEzMTY3OTIsIDU0LjAxODc0NzYyOTQ0MjI5NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzMzYTAyZTRlOTA5MjQwZjFiYzkwMDcwMDNlMGNlNmJhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2Y3NTU3OGJiMTE1YTQwODhhZjRlZjU5MjA2N2VlMGNhID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTYuNTc1Njk1NDMyODI2MzY3LCA1Ni43MzY0MzY0MTkxNTgxMjVdLCBbLTYuNzk4NTE5ODgxOTQ0NTQ1LCA1Ni42ODA0NDAyNjQ3OTE5NF0sIFstNi45NDIzNDg5NTc4MTMyOTgsIDU2Ljg0ODExODY3OTE0OTA4XSwgWy02Ljg2MjcwMzIwMDE2ODIzMiwgNTcuMDcyMTIyOTg1MzgwMzU0XSwgWy02LjYzOTMwMDAzMDQ1NTA3MSwgNTcuMTI3NjQ5MDAyNjc3MzJdLCBbLTYuNDk2MTIwODUxODYyOSwgNTYuOTU5NjQzNTAxNzAzOV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2Y3NTU3OGJiMTE1YTQwODhhZjRlZjU5MjA2N2VlMGNhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzU4MmE5ZDM4YzAxODRhZmI4ZmYxOTlmMzk3MDU3NmUzID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuMDAyODQ5Mjg3NTkwNjkzNCwgNTIuNTQ2OTExNDUyNzUwNzZdLCBbLTIuNzg5MDY2MzUyNjQ2MzUyLCA1Mi42MDc0MzQ5MzQwOTU4ODVdLCBbLTIuNjExNDYzODEwOTk5NzE1LCA1Mi40NTkzNDg4ODA4NTQ3Nl0sIFstMi42NDcyMTI0NTI2OTM4MDY2LCA1Mi4yNTAxOTA1MzUzNjQ2OV0sIFstMi44NjEyNjYxOTUwMTM3NDUyLCA1Mi4xODkwNDI1MjAxMjgwNl0sIFstMy4wMzkzMDE1MzMyMDcwMzE0LCA1Mi4zMzc2NzcyMDA5MTE1ODVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl81ODJhOWQzOGMwMTg0YWZiOGZmMTk5ZjM5NzA1NzZlMy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl83Y2E5MTFhM2VkZTQ0ZDU3OWU0NGNmOTk2MmVkMDQ2ZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjYxMTQ2MzgxMDk5OTcxNSwgNTIuNDU5MzQ4ODgwODU0NzZdLCBbLTIuMzk4MzI1MjUyMDk3NjE4LCA1Mi41MTk5Mjk3NjE3OTQwMjVdLCBbLTIuMjIwNjcyNDUwNjU0ODcyLCA1Mi4zNzE5NzUwMTE1NDQ0XSwgWy0yLjI1NTcyMDUyNDY1NzQ0MywgNTIuMTYyODkzNzA1NDUxMDA1XSwgWy0yLjQ2OTEyMDg5NDA4Mzg0NjMsIDUyLjEwMTY5MDMwMjYxMjIwNV0sIFstMi42NDcyMTI0NTI2OTM4MDY2LCA1Mi4yNTAxOTA1MzUzNjQ2OV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzdjYTkxMWEzZWRlNDRkNTc5ZTQ0Y2Y5OTYyZWQwNDZmLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzJiNmNkYzU1Yzg3ZjRhNzg4OTljMDMwNTEyNjVlOGE5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQuMTc4ODQxOTk5OTUyNDczLCA1Ni43Mzc5NjM5MTA1MzIxNDRdLCBbLTQuMzk1NjQ5NjQ5NDk4MzkyNSwgNTYuNjgzMDI4NDAwMTQyNjJdLCBbLTQuNTMzNDg2NTY0ODExNTUyLCA1Ni44NDc1MzY0NzM2MjI0N10sIFstNC40NTM4NjIwMjUwOTg5ODIsIDU3LjA2NzI5NzQ0NzYxODUzNl0sIFstNC4yMzY1MDAxMTA3Mzk0OSwgNTcuMTIxNzgwNDYyNzE1MjhdLCBbLTQuMDk5MzE2NDQ5MDQ0Nzk5NSwgNTYuOTU2OTU3NTAyNTM3NDVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8yYjZjZGM1NWM4N2Y0YTc4ODk5YzAzMDUxMjY1ZThhOS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl82YTdmMjViYjI0YjY0OWM1YTllMzQ3OWU1MDdmOWY5MiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjY5OTgwOTcyMzgxNDU1MjQsIDU4LjA1NDA0ODU4MzA5OTU1XSwgWy0zLjkxNjY1NDQ3MDMwNTM2LCA1OC4wMDA5ODE5MTMwNDA1XSwgWy00LjA1Mzc2OTU0MDEwNDMxMSwgNTguMTY4MTkwNjQwNjA2MTU2XSwgWy0zLjk3MzM4MjQ3NzI2NTUzOSwgNTguMzg4NzQyMjU0NTUzNl0sIFstMy43NTYwMTYyODAwODIwODEsIDU4LjQ0MTMyOTczMjEwNzhdLCBbLTMuNjE5NTU3ODY2MjQzMzYwNSwgNTguMjczODQ3MjM3NDg2NDNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl82YTdmMjViYjI0YjY0OWM1YTllMzQ3OWU1MDdmOWY5Mi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl85ZGRiODRjNTM3MzU0NjBhYTMwYTA4MzQ5OTI5NjEyYyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0wLjY2NDQyMjA5MjU5NDMwNDEsIDU0LjU2MTY0MjcyMzczNzUzXSwgWy0wLjQ1ODg2Njc1MTk3OTg3MTg3LCA1NC42MTc4MDU0ODMwNjQ1NV0sIFstMC4yODQ4MDQ0Mjk4ODU2NjcyLCA1NC40NzQyOTU0NzIwNjA3Ml0sIFstMC4zMTU4NDI2NDMxOTA5Nzk3NywgNTQuMjc0MDYwNjE1NjI5MzddLCBbLTAuNTIxNjU1NzQ2OTA3NjMzMSwgNTQuMjE3MjkyMzY3Mjg3MTldLCBbLTAuNjk2MTczOTkzMjk4MTMyMiwgNTQuMzYxMzY0NTAxODU1NjA0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fOWRkYjg0YzUzNzM1NDYwYWEzMGEwODM0OTkyOTYxMmMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fY2JmMGZlYzY3NTE0NDE3NzliYTkyMTJiODhmODcyZWQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy40MTk3NjY2OTQ3MDUsIDU2LjE0MTg2MTc2MzIzMTQ5Nl0sIFstMy42MzM4OTQ3MTMyODczMDcsIDU2LjA4NjUzNzE5NTUxOTI0XSwgWy0zLjc2OTQ4NzY5Nzc5MzY1MDcsIDU2LjI0ODQ5MDU0NDI1MDg0XSwgWy0zLjY5MDMwMTM1OTE0Njg4MTQsIDU2LjQ2NjA5ODg1OTExNzA0XSwgWy0zLjQ3NTYxNjA3MDIyMjc4NjcsIDU2LjUyMDk5MDMxMzA3OTE4XSwgWy0zLjM0MDY3Mzg5MTkwMDYzNCwgNTYuMzU4NzA5MDI5Nzk0MzhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9jYmYwZmVjNjc1MTQ0MTc3OWJhOTIxMmI4OGY4NzJlZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lOTdmZmYxNzUwODU0NzNmOWU1ZWQ5Y2E4YmRhM2FkNiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0wLjU2Nzk1NDg3MDI5MTY5MjEsIDUyLjY0NjQzMTU1NjMzNDU3Nl0sIFstMC4zNTk0NzgyNjUwMjA4Mzc5NiwgNTIuNzA2MTIxMTI5OTU5NTZdLCBbLTAuMTgyNzU0NDA0MzUxNzMyNDMsIDUyLjU1OTc3MDE3MjA0MDU1XSwgWy0wLjIxNDA0MzUzMjUxMTY5MDI4LCA1Mi4zNTMxOTExOTIyNDM3OF0sIFstMC40MjI3NDU2NjY5MjA3NTAzMywgNTIuMjkyODkwNjQwMjI1MTNdLCBbLTAuNTk5OTM0MzM3MTg3MDg1MSwgNTIuNDM5Nzc5ODgwMTE0MTddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9lOTdmZmYxNzUwODU0NzNmOWU1ZWQ5Y2E4YmRhM2FkNi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl80MzBkNDZkOTg0Nzg0MGVkYTRmN2ZlOGQ3NjA4ZmFhMSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjM0MzA2NjU1MjM2ODU4ODcsIDYwLjIxMzQzNDY4OTYwMjM4XSwgWy0xLjU1NDk2Njc2MjA1ODg5NywgNjAuMTY0MTg4NjY3MDEwMDk0XSwgWy0xLjY4NjgzMzAyOTcxMDU4OTEsIDYwLjMzMzMyNDA2ODM1NjE2XSwgWy0xLjYwNjE0NDg5Njc3MTE4NiwgNjAuNTUxOTA2NzE2MDM5MTddLCBbLTEuMzkzNzk1NTc4OTUwODc1NiwgNjAuNjAwNjQ1Njc2ODQzNjNdLCBbLTEuMjYyNTgyNDY4NzEzNzQ1NSwgNjAuNDMxMzExMjkxNzE1MDNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl80MzBkNDZkOTg0Nzg0MGVkYTRmN2ZlOGQ3NjA4ZmFhMS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl83NTg4ZTgzOTg1MDY0ODc0ODI0OGQ3NjdjYTY1M2YzMCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzAuNDA0MDY4NjMyMDc4ODQzODYsIDUxLjEzODAyNDU4NTEyNzQ4XSwgWzAuNjEyNjE3NTkxNjEwNzc3MywgNTEuMjAwMjA1MDY0MzUyNjk0XSwgWzAuNzkwNzg3NzI3MTI1NjI2MSwgNTEuMDUyNDIwMTA0OTgwMjg1XSwgWzAuNzYwODg3OTk5NDU5MDQyNSwgNTAuODQxOTQyOTQ2NjQ5ODY2XSwgWzAuNTUyMTU3NjgyNDQxNDE0NSwgNTAuNzc5MTU1MjYzNTUzNDg0XSwgWzAuMzczNTA3MTYxNzg3MDA5LCA1MC45Mjc0NTE2MDkwODk2NDRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl83NTg4ZTgzOTg1MDY0ODc0ODI0OGQ3NjdjYTY1M2YzMC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl82NTJkY2VjYzc1MjQ0N2U1YjhiZjQwZDY0NmQxYzkwYSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00LjY1MDU0Mzk5OTIxMTQzMSwgNTcuNjE5ODY3NjIwODE3NTFdLCBbLTQuODY5NTA2MDY0MjQ4MDY5LCA1Ny41NjU4MzY4NDIxNzU5NF0sIFstNS4wMDg4NzEzNjA5NDg0MzIsIDU3LjczMzIyOTE2OTIwOTM0XSwgWy00LjkyODYxODA1MDEzMTYxLCA1Ny45NTQ5NDU4ODI5MTI5OV0sIFstNC43MDkxMTUxNjQxOTA2NjEsIDU4LjAwODUwMDEyMzc3Mjc1NV0sIFstNC41NzA0MDU3NTgwOTcxMDksIDU3Ljg0MDgxNjcwNDg4Mjg3Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzY1MmRjZWNjNzUyNDQ3ZTViOGJmNDBkNjQ2ZDFjOTBhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2JiOTE4NjFmMjg0NzRmNGZiN2QzMTA1NzkxYjllYmJmID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMC42NzQzMTM3MTcxNjgwNTI2LCA1My4wMDIwOTk0MzI1NDYzOV0sIFswLjg3OTMyODQ4NTYxNzc0MTQsIDUzLjA2MDgwNTA2NTQzOTE1NV0sIFsxLjA1NDk1OTAzMDU3NDY4NDUsIDUyLjkxNTc4MTI0MDE2MzkyXSwgWzEuMDI2MDUxMjU2MTA4MTE5LCA1Mi43MTE1MTQ2MDkwMDk0Nl0sIFswLjgyMDgyOTYwNzY4MTc4MjMsIDUyLjY1MjIwNTUzOTc5NjI2XSwgWzAuNjQ0NzIxMzYxMzUxNjYyOCwgNTIuNzk3NzY2NDEzMDk4NTddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9iYjkxODYxZjI4NDc0ZjRmYjdkMzEwNTc5MWI5ZWJiZi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9hYmQ1ZjRmZWM1NDc0NmM5ODFhODY4ZDE5YTRjMzFiNCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjI5NjU0MTU2NDcyMDc4OTIsIDUxLjg0MDc3NDUxNzU1ODgzXSwgWy0xLjA4NTIwMzk5MjYwNjE1MTYsIDUxLjkwMjE0MDA4NDM3NzY3XSwgWy0wLjkwNzA5MTc1MzU5ODI4MTgsIDUxLjc1NDE4MjEzOTg0NzAzXSwgWy0wLjkzOTg1OTY2MTQxOTU0MjIsIDUxLjU0NDMyODI0ODYwODE3NF0sIFstMS4xNTE0MjMwODc0NDIyNTU3LCA1MS40ODIzNDY1ODYwNTM3Nl0sIFstMS4zMjk5OTM5Mjc3OTExOTM5LCA1MS42MzA4MzQ2NTEwMzIzMV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2FiZDVmNGZlYzU0NzQ2Yzk4MWE4NjhkMTlhNGMzMWI0LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2ZlZDUyNGEwOGQ1YzQ4MGQ4MzU2YmM0YWIwMjJjMDFkID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuOTI1NDIwOTM2NDYzNjEyLCA1NC4xMzcxMzQ3OTY2NzkyMl0sIFstMi43MTQzMzk3MjU3NjM0MDQsIDU0LjE5NDY3MDczODM5NjgxXSwgWy0yLjUzOTExOTY4ODQ3ODg0NywgNTQuMDQ5MDE3OTkxMDgxODc1XSwgWy0yLjU3NDU1NTAzODg1MTY1MzYsIDUzLjg0NTI2MDQwOTQ0MzM4NF0sIFstMi43ODU5MzI1NjMwMjMwODg0LCA1My43ODcxMDQ3NzA5Mzg0MDZdLCBbLTIuOTYxNTc5NDA4MjQwNjM2NCwgNTMuOTMzMzI2NDA0MzAwMzZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9mZWQ1MjRhMDhkNWM0ODBkODM1NmJjNGFiMDIyYzAxZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl80OGJlYjZmZTNhYjU0N2ZlOTAwNjZjY2M5NWRkMmQ5NyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00LjEyNTYxNzU3OTI2MDg0MywgNTQuMTk4NjEzMzg3NzgxMDhdLCBbLTQuMzM5MzkzMDYyMTQzMDc0LCA1NC4xNDA3MTkyOTY1MzI4OF0sIFstNC40NzU5MTQ5OTAxNzYyODksIDU0LjI5ODMxNTQ1MjExNTU0Nl0sIFstNC4zOTgwMTg2OTk5NzI4NDQsIDU0LjUxNDE5MjQxNjI2M10sIFstNC4xODM2NDEwNzMyODQyODE1LCA1NC41NzE2OTUwNzE2MDEyNV0sIFstNC4wNDc3NjE2NTI5NjE2NDYsIDU0LjQxMzcxNDY5OTk3NjI0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNDhiZWI2ZmUzYWI1NDdmZTkwMDY2Y2NjOTVkZDJkOTcuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMzc5NTJlMWZmZTg2NGNjOWFhZTZkM2MyN2RkZDFjNTQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1swLjA1NTc2Nzg5MzkyNTUyMjExNiwgNTIuODI1MDA0NjkzODcwMjVdLCBbMC4yNjI1Mjk5MjE0OTQ5ODI2NywgNTIuODg0MTk5Nzk5MzE3ODFdLCBbMC40Mzg3MjIxODU1OTU0OTQzLCA1Mi43Mzg1MTQwMDU0MTE1OTVdLCBbMC40MDg2MjI2Nzk0OTA4Njk2NywgNTIuNTMzMDk1MjYwMDAyNDc2XSwgWzAuMjAxNjQ0NDEyNTk4NjgyNDMsIDUyLjQ3MzI5Mjk0NTA5NDcyXSwgWzAuMDI0OTgwNjY3NzM5MjUxMDg1LCA1Mi42MTk1MTY0Mzk3NTQ2OF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzM3OTUyZTFmZmU4NjRjYzlhYWU2ZDNjMjdkZGQxYzU0LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2Q4OGU0NjEwYWVhODRiOGJiNmIzYzQ5NTFmYTRkZmUzID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTAuNDcyNjI5ODE1ODg1MjE1MywgNTMuMjYyMTM3NTc0OTEyOTA2XSwgWy0wLjI2NTM1MzYyMzg2ODQ2OTQsIDUzLjMyMDY2NTcxMzUzOTk5XSwgWy0wLjA4OTUxNDU5NDc1ODI2ODg0LCA1My4xNzUyNzc0MzAxMDY0NzZdLCBbLTAuMTIwNDg5MjQ0NjUwNTY2NTgsIDUyLjk3MDgxNDk0NzA0NzcxNF0sIFstMC4zMjc5OTkxMzI5MzI2MDU5LCA1Mi45MTE2Nzc3ODc0NDM5N10sIFstMC41MDQzMDE4NTMzOTk4OTE0LCA1My4wNTc2MTIwMzMxMDEwNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2Q4OGU0NjEwYWVhODRiOGJiNmIzYzQ5NTFmYTRkZmUzLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzE3MjkyMDFiYWVhZTRiZGU4NzEwNWI0M2JmZWVlMmU4ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTAuNzYxMzI5MDI1OTQ2NjY3LCA1MS4zOTU5Nzk5ODE4MTQ4Ml0sIFstMC41NTA0OTUzOTM4NjIwNjQ5LCA1MS40NTgwMTIzMjc4NzA2NV0sIFstMC4zNzIwMjUwODU5Njc0ODAyNCwgNTEuMzA5ODA0Mjc2MzkzNDM2XSwgWy0wLjQwMzkyMzA2MDkwOTU3MTcsIDUxLjA5OTA0Mjc4OTgzMTc2XSwgWy0wLjYxNDk2NDU2NjQ0MDAyNDMsIDUxLjAzNjM5Njk4ODY1NTgyXSwgWy0wLjc5MzkwMTQ0MzU3MTkyMiwgNTEuMTg1MTI1ODIwMzU0ODldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8xNzI5MjAxYmFlYWU0YmRlODcxMDViNDNiZmVlZTJlOC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xNGI2NjJmOWYxMGI0N2JjOWZhYjQ1OGE0ZmZmZDY1ZCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0wLjg1OTMzMjUwNjQyNjE4NiwgNTAuNzYxMzQxMDUyNzI0MjNdLCBbLTAuNjQ3MzQ0Njc3MzQ1OTE0OCwgNTAuODI0NTUzMDc2MzQ4NjldLCBbLTAuNDY4MDEzOTcwODcyNjM3LCA1MC42NzU0NTM2NDg1NDM2MTZdLCBbLTAuNTAwMjA1MTI5NDI4MjYwMSwgNTAuNDYyNjMwODgyNDI5ODhdLCBbLTAuNzEyMzkxMzMzOTU0MTk0OCwgNTAuMzk4ODA0OTI4MzQwNTldLCBbLTAuODkyMTg5MjM2Mjk5NDg0OCwgNTAuNTQ4NDE1Mjg3MTczNTFdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8xNGI2NjJmOWYxMGI0N2JjOWZhYjQ1OGE0ZmZmZDY1ZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9mNGU2NTU0OTA5NzE0OWJlYTBkYzEwMjQ5YTE3ZmRiMyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xLjU0MjI3MDczOTE4Nzk4MiwgNTEuNTY4OTA0MzMwMzUwMTNdLCBbLTEuMzI5OTkzOTI3NzkxMTkzOSwgNTEuNjMwODM0NjUxMDMyMzFdLCBbLTEuMTUxNDIzMDg3NDQyMjU1NywgNTEuNDgyMzQ2NTg2MDUzNzZdLCBbLTEuMTg0NjczODU1MjcyNTUwNCwgNTEuMjcxNDAwODE1Mjc2NDhdLCBbLTEuMzk3MTc2MzgxODcwNjk0OCwgNTEuMjA4ODUyODY2NjUxNl0sIFstMS41NzYyMDM1OTU1MjMwODEsIDUxLjM1Nzg2ODAyNDg4NDY3NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2Y0ZTY1NTQ5MDk3MTQ5YmVhMGRjMTAyNDlhMTdmZGIzLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzcwZThmZWMxZDdlZDQyMjJhNjUzZWRjNjMwNjFkYjRlID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuODEyNjI5NTI4MjA1OTk3NCwgNTMuNjk5OTcyNjM5NTAxMzldLCBbLTMuNTk5MTEyMzM4MjM3ODYxNiwgNTMuNzU4NTU4ODQ4MzQ1MDldLCBbLTMuNDIzMTU0MDIyODY3NDQxLCA1My42MTE2NTAxMzEzMTEyNDRdLCBbLTMuNDYwMjk4NDEyMjgyMzM5NywgNTMuNDA1NTg3MDU1ODY0OTA2XSwgWy0zLjY3NDEyMTg2MDQwNjQ4MywgNTMuMzQ2Mzc0Njc5MDcwMTY2XSwgWy0zLjg1MDQ5NTYwMjgzNzU2NCwgNTMuNDkzODUxNDkxMDY1MDk0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNzBlOGZlYzFkN2VkNDIyMmE2NTNlZGM2MzA2MWRiNGUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMTE2NmRmZDY4ODMzNGM0MzhhODFjNWMwNTkwYzVmNTYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMC45NTE1MDY0NTAyNzU1MjMyLCA1OS43MDk4OTg4NzE0OTcwNzRdLCBbLTEuMTYxODEzMDY2NTk5MDU2MywgNTkuNjYwMTM0MjY3NTgwMDM0XSwgWy0xLjI5MjQ1MzkxMDYwMTUwNjcsIDU5LjgyNzU5MzY0NDM1MzYxXSwgWy0xLjIxMjEzNjAwOTU4MjU1MzcsIDYwLjA0NTAzMjk2Nzk0ODMxXSwgWy0xLjAwMTM3Mzk4NTAxNDk3NzcsIDYwLjA5NDMwNDA2MDg2MjQzXSwgWy0wLjg3MTM4NDI4NTU4ODU3NzcsIDU5LjkyNjYzMTU4MTA3MzgzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMTE2NmRmZDY4ODMzNGM0MzhhODFjNWMwNTkwYzVmNTYuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMzExMzg0ZDNmNDU0NDk2ZDhkYzRmOGU0OGRhYWEwYWYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy40MjMxNTQwMjI4Njc0NDEsIDUzLjYxMTY1MDEzMTMxMTI0NF0sIFstMy4yMTAyMzY2NzA4MjgxOTA0LCA1My42NzAzMDAyMDgxNjY5NjRdLCBbLTMuMDM0MTY1NDYzMDIxMTMwNSwgNTMuNTIzNTExNTQ5NTMwNjddLCBbLTMuMDcwNTkwNzM1NDI4NTgsIDUzLjMxNzUwNzcyOTE3NjA3XSwgWy0zLjI4MzgwNTM1OTY1NTM3OCwgNTMuMjU4MjMzMzc2NDA2NF0sIFstMy40NjAyOTg0MTIyODIzMzk3LCA1My40MDU1ODcwNTU4NjQ5MDZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8zMTEzODRkM2Y0NTQ0OTZkOGRjNGY4ZTQ4ZGFhYTBhZi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9kMWQ4ZmE1NGFmZDE0YzMyOGI4MDJiMmE2ZmFjOWE1NyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00Ljc4OTA1NzY3Mzc3NzcyOCwgNTAuNjE5MDEwOTczNDE5MTZdLCBbLTQuNTY5MTMxNDE5MTc3NzM1LCA1MC42ODM1Nzg4ODc1NzY0OTVdLCBbLTQuMzg4NTU1OTA4MTU1NTI0LCA1MC41MzE3MTQ5NjI2OTA1MV0sIFstNC40Mjc0OTQ0MzA0OTYwMjksIDUwLjMxNDc1NjQ0NzI5ODU3XSwgWy00LjY0NzY4ODA3NTUxMjcwOTUsIDUwLjI0OTU1MzI0Njg5ODk5XSwgWy00LjgyODY3NjgwOTUzMzU5MywgNTAuNDAxOTQzNDI2MTAzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZDFkOGZhNTRhZmQxNGMzMjhiODAyYjJhNmZhYzlhNTcuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZjQ2MDhkMDM4NWQ3NGVjMGEwZmRkZjc2ZDVjNWU2MzAgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNS4zNjUyODIxNDIzNjEzNTEsIDU1LjYzODA1ODE0NzAxOTQ4XSwgWy01LjU4MzkyNTIwMDAzMjU3MywgNTUuNTgxMjUzNzExNTU2NjNdLCBbLTUuNzI0MzYzMjQxNjg4ODc4LCA1NS43NDQ0MDc5NDI1OTYxMV0sIFstNS42NDU1MDk3NjkyNjI0ODksIDU1Ljk2NDcyMTgyNTcxNjA1NV0sIFstNS40MjYyNzcxOTQyOTM4NDc1LCA1Ni4wMjEwOTE1NDA0NzQwN10sIFstNS4yODY0ODcyMzQzNjk0MDksIDU1Ljg1NzU4NDY3NzMxNjY2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZjQ2MDhkMDM4NWQ3NGVjMGEwZmRkZjc2ZDVjNWU2MzAuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNWQ5ZWQwMjRkNDRmNDBiNGJlZWM1YjIwMTI2ZjYzZGMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMC45ODAxMTE0NjA2NjkyNjI5LCA1NS4wNDc2Mjg3Mzc0Mzk5NV0sIFstMS4xODYwOTQ3ODgwMjY2NTg0LCA1NC45OTIxMzkyMzEwNzMxMV0sIFstMS4zMTQ0MDM4MzEyNzAzNzMsIDU1LjE0ODAyMTc3NDYwMDU4Nl0sIFstMS4yMzYwODgwMjk5MjA4OTY3LCA1NS4zNTk3Mzk5ODU1NDA2OV0sIFstMS4wMjk1NjAzMTMwMDUzMDMsIDU1LjQxNDgzODIxNDcyOTQzXSwgWy0wLjkwMTg5MjM0MzUzNzg4ODgsIDU1LjI1ODYxMTgzMjM2MTE1NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzVkOWVkMDI0ZDQ0ZjQwYjRiZWVjNWIyMDEyNmY2M2RjLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzY1Mzc2MzAxNGVjZjQzMWE4ZWRhYWUxYmM4YWY0YTI0ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTEuODMwNTEyODQ4MjM1Mzk5NiwgNTIuMjg0Nzg5NjQwNTQzMjk1XSwgWy0xLjYxODcxNDY2ODgzMTk1MTYsIDUyLjM0NTQ4MzMxNzkxODg2XSwgWy0xLjQ0MTAyMjI2ODk2NDQ5NSwgNTIuMTk3NzkyNTYwOTYzNzA1XSwgWy0xLjQ3NDY3OTA0ODM0MDc2ODYsIDUxLjk4ODg2ODY5NzAzOTAyNF0sIFstMS42ODY3MjEwNDUzMTE0NTQ1LCA1MS45Mjc1NTY1MjE2MTk5MDZdLCBbLTEuODY0ODYzNTc0NTc5MTEyLCA1Mi4wNzU3ODY0OTc5NDQ2OV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzY1Mzc2MzAxNGVjZjQzMWE4ZWRhYWUxYmM4YWY0YTI0LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2NiMjliNDFhZjNhMzQzNDk5MjFlZGU3NGI0YzI3NjczID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMC44Nzk4MzcwODgwODIyMzc4LCA1MS42Nzk3NTIyOTY0MDgyOV0sIFsxLjA4NjQzMjU2Nzg3NDAwNzIsIDUxLjc0MDgyMDA2MDg2Nzc0XSwgWzEuMjYzNjM2NjQ1MDU2MjU4NiwgNTEuNTk0MDY3MjUxMDY1NDFdLCBbMS4yMzQ3Mjc4MjY0NzIyNzQzLCA1MS4zODU3Mjg4MjAxNzIyNzVdLCBbMS4wMjc5NTA4NTI1MDU4MzA3LCA1MS4zMjQwNTY2MzEyMTA1NDZdLCBbMC44NTAyNjI4OTE3NzU1NzEsIDUxLjQ3MTMyNzAyNzcxNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2NiMjliNDFhZjNhMzQzNDk5MjFlZGU3NGI0YzI3NjczLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2UyYWRkNGUxYTAyOTQ2Zjg4ZmI1NjViZTIwZDExNDgyID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuMTA3MjIyMDI4NDgwODE5LCA1OC41OTgxMzg2NzI4MjE3M10sIFstMy4zMjI5MzE0NDAyMDA2OTE1LCA1OC41NDYwMjczMDY5NDE0NzVdLCBbLTMuNDU4NzMyOTc0MTA0NTQ2NywgNTguNzEzNzc0MDg1MjYwMTNdLCBbLTMuMzc4MTY3Mzc2NzAxMzIwMywgNTguOTMzODg5NDYzMjUxNTA0XSwgWy0zLjE2MTk1NDYyNTkxNDA1OCwgNTguOTg1NTE0MDc0NTM5NjQ0XSwgWy0zLjAyNjgxMDAwMDcwMzYyOSwgNTguODE3NTEyNDYxODE5MV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2UyYWRkNGUxYTAyOTQ2Zjg4ZmI1NjViZTIwZDExNDgyLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzVhNWNjNjYyMmExZTQ0ODRhMzQzZjMwMTZjNDZjNzk5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQuNDEyNzQ2NDE2OTc5ODkyLCA1MS41NDMwOTI1OTMzNDg2MDRdLCBbLTQuMTk0ODAyNzk3NjA3NzM1LCA1MS42MDU4NTY0MDIwNTA0NV0sIFstNC4wMTU1ODA1MTMyMjM5NjgsIDUxLjQ1NTQ0OTA4NDk1NzM5NF0sIFstNC4wNTM4ODcyMjg5NzU1NTQsIDUxLjI0MTczNzUzNjEzNDQ5NF0sIFstNC4yNzIxMDk0Njk3NDc5MjcsIDUxLjE3ODM0MDMwNTM1Nzg4XSwgWy00LjQ1MTc0NzM2NDU2MDEsIDUxLjMyOTI4NzczOTAwNDldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl81YTVjYzY2MjJhMWU0NDg0YTM0M2YzMDE2YzQ2Yzc5OS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9kODI3NTBhYTIyYjc0M2M5YWNkNTUzNGFiOGM1YmE0OCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjczNzE0ODA2OTUyNDE1NywgNTQuMTEwMDAyNzUzNzk4MTA2XSwgWy0zLjk1MDM1MDQyMzc4MTQ4NTcsIDU0LjA1MjA0MjI3MjE2OTA5Nl0sIFstNC4xMjU2MTc1NzkyNjA4NDMsIDU0LjE5ODYxMzM4Nzc4MTA4XSwgWy00LjA0Nzc2MTY1Mjk2MTY0NiwgNTQuNDEzNzE0Njk5OTc2MjRdLCBbLTMuODM0NDIwODg5MzI0NzQ0LCA1NC40NzExNjc5NTM1ODM5XSwgWy0zLjY5OTUzNTI2ODIwNTIzNTQsIDU0LjMxMzkwOTE5NTIxNTc5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZDgyNzUwYWEyMmI3NDNjOWFjZDU1MzRhYjhjNWJhNDguc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fOGEyNGVlZmM0OGNlNDkyNzhhMDdkMTRkZTg4ZGMwYjcgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC41OTI4ODk0MDUyNzk4OTEsIDUzLjg3NzE3MDA1MzI0ODM0XSwgWy00LjM3ODIyNjA1NjYyNzAwMiwgNTMuOTM1NjI2NTA2MDczNDU0XSwgWy00LjIwMjU1NDA1NDQ5Nzk0OCwgNTMuNzg4NDc5MjI5MzUyMTU2XSwgWy00LjI0MTE0NDE4Nzk4MTQ0MSwgNTMuNTgyMzAxMTk4Njc3MzFdLCBbLTQuNDU2MTMxNjgxMDY1MDk0LCA1My41MjMyMTQ3OTc0MDY3N10sIFstNC42MzIyMDU3NzQzMTAxMjMsIDUzLjY3MDkzNjMzOTc1ODc5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fOGEyNGVlZmM0OGNlNDkyNzhhMDdkMTRkZTg4ZGMwYjcuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYzhmN2UwMTliYzhlNDUzYzg3ZjE4NmQ2YTMyNTI5MWIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC43MTIyNjA2NDU5OTEzMjgsIDU1LjgwNzQ3MjUxODE3NDQ4NV0sIFstNC45Mjk0NDQ1NTIwNjA5MDMsIDU1Ljc1MTE2NjkyNzE4MjEyXSwgWy01LjA2ODI3NDc3ODg5MDM0NCwgNTUuOTEzOTIyOTQ4MTQ5ODI1XSwgWy00Ljk4OTI3MTA3OTA1MDk3OTYsIDU2LjEzMzMzMTM0MjEyNDA0NV0sIFstNC43NzE1MDgyMTI0MjczODUsIDU2LjE4OTIwMjY4ODg4MjQ0XSwgWy00LjYzMzMyNzU4OTczODAwNSwgNTYuMDI2MTAyNDI5NjE4NzFdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9jOGY3ZTAxOWJjOGU0NTNjODdmMTg2ZDZhMzI1MjkxYi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9jNGI4ZGRmMWUzMDk0ODI0YWZhYmVkN2RmZjEzMTZkOCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy02LjIxMDk1NjkyODg1NjUyNSwgNTYuNjI1NTA4MzE0OTEyNzVdLCBbLTYuNDMyNzg4MDA5NDYyNDk3LCA1Ni41Njk1MzQ0MDU3NTk0Nl0sIFstNi41NzU2OTU0MzI4MjYzNjcsIDU2LjczNjQzNjQxOTE1ODEyNV0sIFstNi40OTYxMjA4NTE4NjI5LCA1Ni45NTk2NDM1MDE3MDM5XSwgWy02LjI3MzcxMjA2NzUxMDUzNCwgNTcuMDE1MTUyNjczMjg4MjRdLCBbLTYuMTMxNDU1MDg2MTA5Mzc5LCA1Ni44NDc5MjIxMjk0MjgxMl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uX2M0YjhkZGYxZTMwOTQ4MjRhZmFiZWQ3ZGZmMTMxNmQ4LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzIwYTUwOGUxYjBjYzQ2YTliNjE4ODMwYWMzNzQ0OWI1ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTMuMjgzODA1MzU5NjU1Mzc4LCA1My4yNTgyMzMzNzY0MDY0XSwgWy0zLjA3MDU5MDczNTQyODU4LCA1My4zMTc1MDc3MjkxNzYwN10sIFstMi44OTM5OTg2NTQ4NDQ3NjQ1LCA1My4xNzAyNzc2ODYxMzIwNF0sIFstMi45MzAxOTY2MTQ1Mjk0MjA3LCA1Mi45NjMyMTM0MTkyNTg1OV0sIFstMy4xNDM2OTk4MDUzODM5NzUsIDUyLjkwMzMxNDU0NTY0ODYzNF0sIFstMy4zMjA3MTc0Njc1MDM4OSwgNTMuMDUxMTA0MzU2NTQzMDhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8yMGE1MDhlMWIwY2M0NmE5YjYxODgzMGFjMzc0NDliNS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl85MmJkMjQwMjM1Mjg0OGQyYmI2ODhlMzc2NWU4NWUyNiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjMxMjIzODQ4MTI5NDAzMzgsIDU0LjIyNTQzMTgyMDQ2OTgxNV0sIFstMy4xMDA1NDA2NzM1NDQ5NDQsIDU0LjI4MjkwMTU2MjE1OTI3XSwgWy0yLjkyNTQyMDkzNjQ2MzYxMiwgNTQuMTM3MTM0Nzk2Njc5MjJdLCBbLTIuOTYxNTc5NDA4MjQwNjM2NCwgNTMuOTMzMzI2NDA0MzAwMzZdLCBbLTMuMTczNTgyNTQ0NDA1NzQzLCA1My44NzUyMzUxNTE4MTk0OTZdLCBbLTMuMzQ5MTIyODM0MjAxNTYxLCA1NC4wMjE1NzM4MDUzODE4M11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzkyYmQyNDAyMzUyODQ4ZDJiYjY4OGUzNzY1ZTg1ZTI2LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzJjM2JiYjU3OTk2YzQ3YzBiOWFiMTk4MmU4NzAyM2JlID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTcuMDcxMTc5NTk5MzYzNDAzLCA1Ny42MzU0MjQzMDYxMTM3M10sIFstNy4yOTYxMzgwMDI4MDk1NDYsIDU3LjU4MDM2ODU0MDgxOTkyNl0sIFstNy40NDEzNzkzNjIyMzAxOTEsIDU3Ljc1MTA0MzQ2ODMwMzA2XSwgWy03LjM2MTAxMDE0OTQ2MDE4MDUsIDU3Ljk3NzA3ODY5NjMxMjhdLCBbLTcuMTM1NDg4NzU2NzgwNTQ1LCA1OC4wMzE2Mzg4NjMwMDA2MV0sIFstNi45OTA4OTg5NzA4MTI2NzgsIDU3Ljg2MDY2MjA2NDgyNzgzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fMmMzYmJiNTc5OTZjNDdjMGI5YWIxOTgyZTg3MDIzYmUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZmM5OTgwODdkNjEyNDE3OWFkZGI1ZDk0MTY2MjQwYWYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMy4wMTcyMzE3MDI3NjEzMzQyLCA1NS42NTk5OTQ1NDQ4MDc5XSwgWy0zLjIyOTcyOTA0NjEyNjA2NzMsIDU1LjYwNDI3OTgxMjgyMjk5XSwgWy0zLjM2NDAxMjgwMDY4NDM2MzUsIDU1Ljc2NDQzMjYzOTcyMzhdLCBbLTMuMjg1MTUwMTkwNTc4MzY5OCwgNTUuOTgwNjQxNjc4MjMzNjVdLCBbLTMuMDcyMDkxNDEyMjc4MjU2OCwgNTYuMDM1OTM3MzczOTI2NTQ0XSwgWy0yLjkzODQ1NjIyODU5NDk0MSwgNTUuODc1NDQ1NTA5Mzg4NzhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9mYzk5ODA4N2Q2MTI0MTc5YWRkYjVkOTQxNjYyNDBhZi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl85MjczM2JmNDU0Njk0NjA1YmRkMmE4ZTE3NWQyZWUxNCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0zLjU5OTgyOTk2ODc1MjEzMSwgNTUuMTE2OTEwMjI2MzYxMTRdLCBbLTMuODEzMzAzMDUyNTUxOTM5NiwgNTUuMDYwMjk5Njk2Nzk1NjZdLCBbLTMuOTQ4ODgxNDk1OTc5MzY5LCA1NS4yMTk3NDc2MDU0OTc5MzZdLCBbLTMuODcwMzM5NjI0Mjc3Njc0LCA1NS40MzYxNjU0NTQ5MTE3N10sIFstMy42NTYyODc2Mzg5NDEzNzA4LCA1NS40OTIzNjU4NjM2OTQxNF0sIFstMy41MjEzNTYwNjM4NDQ4Njk4LCA1NS4zMzI1NjEwMjAyODQ2NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzkyNzMzYmY0NTQ2OTQ2MDViZGQyYThlMTc1ZDJlZTE0LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2VhY2I3NzdlOTIwNjQ4NTg4OTVkYzYxMzUyZmJkZTJiID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuMTUzMzcxNDg2OTM3NDY4LCA1My45NjEwODEyNjgwNDY5M10sIFstMS45NDM1NzQxNzcxMzE2NzkyLCA1NC4wMTg3NDc2Mjk0NDIyOTVdLCBbLTEuNzY4MjEyNzU2NzQ5OTk2LCA1My44NzMzMjQ0ODkxMDM4NF0sIFstMS44MDIyMTA4OTk2NzM2OTU5LCA1My42Njk2NzIwNTk3NDU4ODVdLCBbLTIuMDEyMjg2NDUzMzMzOTYzLCA1My42MTEzODk2MzQwNzk3ODVdLCBbLTIuMTg4MDg2NjY1MzkwMTk5NiwgNTMuNzU3Mzc1Njc2ODUxNThdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl9lYWNiNzc3ZTkyMDY0ODU4ODk1ZGM2MTM1MmZiZGUyYi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl84MWIwNDJhYzA3MDc0ODI3OTkzMjE0NDQ0YjBkNjY5ZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy02LjU1NDk4NzY3NjAxMDU2OSwgNTQuNTI4OTY5ODc5NDc2OTc1XSwgWy02Ljc3NTE1OTA4NzUyODIxNSwgNTQuNDcwMzA5ODQ1ODU5Mjc2XSwgWy02LjkxODE2OTE0MDg2NjkwNCwgNTQuNjMxOTU4ODcwMTM0NTc1XSwgWy02Ljg0MDM2ODA2NDM1MDkyMzUsIDU0Ljg1MjY2MTA5MzA4MDg3XSwgWy02LjYxOTU3MjkxODI1NjE1OSwgNTQuOTEwOTA1NjY3MDE4NTk2XSwgWy02LjQ3NzIwMjM5MjQzNDM3OSwgNTQuNzQ4ODY2MTMzNzM4NjldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl84MWIwNDJhYzA3MDc0ODI3OTkzMjE0NDQ0YjBkNjY5Zi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lZmI0ODYxNDk3Yzk0OGZhOTg0YzJkZGRlNWUxNTkwZSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01LjcxNDQ1MjIwMTg2MjUzMiwgNTAuMTQwMjE4OTY3Mjg1NDU2XSwgWy01LjQ5MjMzMTcxOTQ1ODEyOCwgNTAuMjA1OTI0MjM2MjQ1ODM1XSwgWy01LjMxMTA2MTU5MzE1NjU5MywgNTAuMDUyODUxMjg1MTg5NThdLCBbLTUuMzUxNTEyNzcxODE3NzEyLCA0OS44MzM1NTA4MDAzMzY5NDRdLCBbLTUuNTczOTA3MDk0ODY1MDQxLCA0OS43NjcyMDU3MDU4OTldLCBbLTUuNzU1NTc3MzU5MjA4MzcsIDQ5LjkyMDgwMDQzMzY0OTYzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fZWZiNDg2MTQ5N2M5NDhmYTk4NGMyZGRkZTVlMTU5MGUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNTJlOTY1NDUyMzFmNGZhNjkwODFkZWI4OWI0NzUzYzQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMS4xNDI0NTQ2MDAzMjA4MjAyLCA1NC4wNDYwMzE0MzU2MDEwNV0sIFstMC45MzQ5NjU0NTAyNDQ3NjM1LCA1NC4xMDMyNzgzMzQyMTkxNF0sIFstMC43NTk5OTMxNjI0NjAyNDE1LCA1My45NTg2NDU2NjY1NzM4MV0sIFstMC43OTIwNTkwNDg5ODkyOTg0LCA1My43NTYyMDcyNzYxMzU5MjVdLCBbLTAuOTk5ODA3NjcyNzE3OTE1NSwgNTMuNjk4MzUwMTk1NTg0NjJdLCBbLTEuMTc1MjMyMDQ0NTc4ODMxOCwgNTMuODQzNTQxNjcxNTY5OTE2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNTJlOTY1NDUyMzFmNGZhNjkwODFkZWI4OWI0NzUzYzQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fOTdlNmZhOGQ5MzQ5NDdkNThhYTQ1ZWM3MDdmNzNkMTcgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMS4yNDEwODk1ODI5NTk0NDIyLCA1My40MzY0MDA5ODYwMzc3OV0sIFstMS4wMzIzODE4ODYxODgyNDcsIDUzLjQ5NDgwNzU3MDk1MjQzXSwgWy0wLjg1NjQ5OTgwOTY4Mzg1OTIsIDUzLjM0OTE3ODcwNTgwNzI4XSwgWy0wLjg4ODg3MzE3MjA5MjE2NTQsIDUzLjE0NDU5MTIzMTY5MzkxXSwgWy0xLjA5NzgzMjU3NjI2NDMwOTUsIDUzLjA4NTU3MTkwNjE0NjYyXSwgWy0xLjI3NDE2ODAzNTU4ODc1NDYsIDUzLjIzMTc1MjcxNDQxNjddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl85N2U2ZmE4ZDkzNDk0N2Q1OGFhNDVlYzcwN2Y3M2QxNy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl85YWVjMmQzOTg2NTE0YTVkYWY4NjczYjlkZjc2OWRjYSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01LjIwODM5OTIzODQ1NDM4OSwgNTEuNzE4OTY5MDYyMDAxNjddLCBbLTQuOTg5MzMzMzI1ODA2NDU0LCA1MS43ODE2MjU3OTY3ODkyOF0sIFstNC44MTAzNjYxMjI0OTY0MjMsIDUxLjYzMDkzMjUwMzQ5MTM4XSwgWy00Ljg1MDA2MzU2MTQyMzczNiwgNTEuNDE3MDM1NDY4MDM0MjFdLCBbLTUuMDY5NDI1ODI4NTgyODM4LCA1MS4zNTM3NDA5NjcwNjc1NV0sIFstNS4yNDg3OTUyMzM0Njk5MjQsIDUxLjUwNDk4MDk3OTQzODcwNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjUzZTUzNDlkMmEzNDYwN2FkMGE5ODg0Yzg2ZmMxZjEpOwogICAgICAgIGdlb19qc29uXzlhZWMyZDM5ODY1MTRhNWRhZjg2NzNiOWRmNzY5ZGNhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2MxNTVkNmY0ZmE2MjQ2ZjU5NzlmOTY5NzY5MDdlMzYyID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTAuNTIxNjU1NzQ2OTA3NjMzMSwgNTQuMjE3MjkyMzY3Mjg3MTldLCBbLTAuMzE1ODQyNjQzMTkwOTc5NzcsIDU0LjI3NDA2MDYxNTYyOTM3XSwgWy0wLjE0MTMzMjUzNzY0MTMxMzM3LCA1NC4xMzAwOTkyNDAwNTYwOF0sIFstMC4xNzIxNzc0NTgzNDI2Mzk2MiwgNTMuOTI4ODExOTgzMjk5Nzc0XSwgWy0wLjM3ODI0MDIwNzAzMDA5OTUsIDUzLjg3MTQzNzYxMjQ3OTIxXSwgWy0wLjU1MzIwOTUzMTI0ODA0NDQsIDU0LjAxNTk1NjYyMzAwNzU2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fYzE1NWQ2ZjRmYTYyNDZmNTk3OWY5Njk3NjkwN2UzNjIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNWZjMDZhMmViNmViNDc5OTk5YzFmZTBmYjNmNWI0MjMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi4wNDk4MDI0NDA5ODIxOTA0LCA1NC41Njc4MjUzMTE2OTY5MV0sIFstMS44NDEyMzUyOTI4MTQ2OTk4LCA1NC42MjQzMjkwNTY3NDY0NTRdLCBbLTEuNjY2ODA3Mjg5Mzc1Nzg5NSwgNTQuNDc5OTI3NzY1MDYwNl0sIFstMS43MDA1MTAwNjczOTQxMzg3LCA1NC4yNzg0NTM1MDE4MTI5NF0sIFstMS45MDkzNjMwMjgzMDM4NTU2LCA1NC4yMjEzMzY2NTk2NjYwNV0sIFstMi4wODQyMjg0MjU0MTU5NDgsIDU0LjM2NjMwNzIxNjU4NjA4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNWZjMDZhMmViNmViNDc5OTk5YzFmZTBmYjNmNWI0MjMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNjgyNDc2MWVlZTllNDA5OTkwMTU0Zjg4YjE3ZTkyMjkgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC4xMzA3MDI0NzQ1NTYxOCwgNTAuODEyMTc1NTUyODAxNjldLCBbLTMuOTEyMjExMTQ1NzgxNTgxNiwgNTAuODc2MjA1NDgwNDA4OTVdLCBbLTMuNzMxOTY0NjQ5MjU2ODAyNiwgNTAuNzI1MDIyMTY3MDMxNDddLCBbLTMuNzY5Nzg3ODM3NDc1OTIzNywgNTAuNTA5MjgxOTE4MzgwOTM1XSwgWy0zLjk4ODUzODYwNTc3NjE0ODUsIDUwLjQ0NDYyMDE5NzI0Njc4NV0sIFstNC4xNjkyMDc3ODI5MDA2MzksIDUwLjU5NjMzMDEyMzgwMTM3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9iNTNlNTM0OWQyYTM0NjA3YWQwYTk4ODRjODZmYzFmMSk7CiAgICAgICAgZ2VvX2pzb25fNjgyNDc2MWVlZTllNDA5OTkwMTU0Zjg4YjE3ZTkyMjkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMmNiMzE3OTdkMDljNDg5YWEwNzUyY2E3NmRhYWM1MGQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNC41OTM5NDEzMTEwMjQ5MzUsIDU1LjA0OTMwMDI3MTU5NjZdLCBbLTQuODA5OTQ3MjQ2OTkwMzIxLCA1NC45OTIxNTQ4MzQ1OTg3Nl0sIFstNC45NDgxMzMzODY0NzIyODY1LCA1NS4xNTI3MDUwMzY0Nzk4XSwgWy00Ljg2OTY2NjkwMDc0NjE1MiwgNTUuMzcwNzY3NzI0OTAxNjRdLCBbLTQuNjUzMDY4NzA4OTg1NjU3LCA1NS40Mjc0OTgwMTAxNzU1XSwgWy00LjUxNTUyODkzNzA4NTQzNSwgNTUuMjY2NTgzMjk1MzI2MjhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2I1M2U1MzQ5ZDJhMzQ2MDdhZDBhOTg4NGM4NmZjMWYxKTsKICAgICAgICBnZW9fanNvbl8yY2IzMTc5N2QwOWM0ODlhYTA3NTJjYTc2ZGFhYzUwZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKPC9zY3JpcHQ+\" 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 0x7ffa6a754f60>"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m = folium.Map(location=[55.365, -3.45], zoom_start=5, )\n",
"\n",
"folium.GeoJson(\n",
" gb_geojson,\n",
" name='uk_boundary'\n",
").add_to(m)\n",
"\n",
"for boundary in hexagons_boundary:\n",
" folium.GeoJson(\n",
" {\"type\":\"Polygon\",\"coordinates\": [boundary]}\n",
" ).add_to(m)\n",
"\n",
"m"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [],
"source": [
"hexagons = list(h3.polyfill(bristol_geojson, 5))\n",
"hexagons_boundary = [h3.h3_to_geo_boundary(h3_ix) for h3_ix in hexagons]"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVM9ZmFsc2U7IExfTk9fVE9VQ0g9ZmFsc2U7IExfRElTQUJMRV8zRD1mYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgPHN0eWxlPiNtYXBfZWVkMWY5MmM1YzI2NGZjMWI4M2YyN2JmZmZiYjhiNDggewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMTAwLjAlOwogICAgICAgIGhlaWdodDogMTAwLjAlOwogICAgICAgIGxlZnQ6IDAuMCU7CiAgICAgICAgdG9wOiAwLjAlOwogICAgICAgIH0KICAgIDwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2VlZDFmOTJjNWMyNjRmYzFiODNmMjdiZmZmYmI4YjQ4IiA+PC9kaXY+CjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKICAgIAogICAgICAgIHZhciBib3VuZHMgPSBudWxsOwogICAgCgogICAgdmFyIG1hcF9lZWQxZjkyYzVjMjY0ZmMxYjgzZjI3YmZmZmJiOGI0OCA9IEwubWFwKAogICAgICAgICdtYXBfZWVkMWY5MmM1YzI2NGZjMWI4M2YyN2JmZmZiYjhiNDgnLCB7CiAgICAgICAgY2VudGVyOiBbNTEuNDYwNTU1LCAtMi41OTc1NzZdLAogICAgICAgIHpvb206IDExLAogICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgIGxheWVyczogW10sCiAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NywKICAgICAgICB6b29tQ29udHJvbDogdHJ1ZSwKICAgICAgICB9KTsKCiAgICAKICAgIAogICAgdmFyIHRpbGVfbGF5ZXJfZDYzZWQ3Y2FmOGMzNGU3ZTkxNWRiMWVkYTI5YWQyYmEgPSBMLnRpbGVMYXllcigKICAgICAgICAnaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLAogICAgICAgIHsKICAgICAgICAiYXR0cmlidXRpb24iOiBudWxsLAogICAgICAgICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAgICAgICAibWF4TmF0aXZlWm9vbSI6IDE4LAogICAgICAgICJtYXhab29tIjogMTgsCiAgICAgICAgIm1pblpvb20iOiAwLAogICAgICAgICJub1dyYXAiOiBmYWxzZSwKICAgICAgICAic3ViZG9tYWlucyI6ICJhYmMiCn0pLmFkZFRvKG1hcF9lZWQxZjkyYzVjMjY0ZmMxYjgzZjI3YmZmZmJiOGI0OCk7CiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fODA0ODFiMzVmODQxNDEwYWIzY2UzNDU0ZTkyYWU5OWQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NTIyNjEzNTI1MzkwNjI1LCA1MS41NTY1ODIxODU3NjI1M10sIFstMi43MDgxMjk4ODI4MTI0OTk2LCA1MS40OTA3ODk1OTgwMzQ1NV0sIFstMi42OTU3NzAyNjM2NzE4NzUsIDUxLjM5NzQ5MjA1NTIwNjgxXSwgWy0yLjQ5MzIwOTgzODg2NzE4NzUsIDUxLjM5NzA2MzY0NTU4OTM0XSwgWy0yLjQ1MjAxMTEwODM5ODQzNzUsIDUxLjUwNDA0MTIwMjYwNjc2XSwgWy0yLjU1MjI2MTM1MjUzOTA2MjUsIDUxLjU1NjU4MjE4NTc2MjUzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9lZWQxZjkyYzVjMjY0ZmMxYjgzZjI3YmZmZmJiOGI0OCk7CiAgICAgICAgZ2VvX2pzb25fODA0ODFiMzVmODQxNDEwYWIzY2UzNDU0ZTkyYWU5OWQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYTNlNDVlOGIzYjliNGFmNGJiMDY0NDVmNDg5OTRmMWUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41ODExMDUzMTU4NTEzODYsIDUxLjYxMTMyMDY1MTE1MjI3Nl0sIFstMi40OTQyNTE0NDk3MDUzMzcsIDUxLjYwNzc3MjA3NjgyMDkxNV0sIFstMi40NDgyMDY3OTAyMDE2MTc0LCA1MS41MzQ5MDEyMzU2NjAyM10sIFstMi40ODkwMTQ1NTIxMDI1MDksIDUxLjQ2NTQ4MjYzODM5MDQwNV0sIFstMi41NzU5NTQxNDYwOTY5MzIsIDUxLjQ2ODk4Mzg3MTg1MjkxXSwgWy0yLjYyMjAwMDI1NTg5MTgyNjcsIDUxLjU0MTk1MTEwMzg2NjZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2VlZDFmOTJjNWMyNjRmYzFiODNmMjdiZmZmYmI4YjQ4KTsKICAgICAgICBnZW9fanNvbl9hM2U0NWU4YjNiOWI0YWY0YmIwNjQ0NWY0ODk5NGYxZS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8zNzVhMTk1OTdiNDc0NTBkYmQxMjM3OTgwNDRlNTIxYSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjcwODk3MjI1ODcyODIyNiwgNTEuNTQ1NDc5ODE5MTEzMDldLCBbLTIuNjIyMDAwMjU1ODkxODI2NywgNTEuNTQxOTUxMTAzODY2Nl0sIFstMi41NzU5NTQxNDYwOTY5MzIsIDUxLjQ2ODk4Mzg3MTg1MjkxXSwgWy0yLjYxNjg3ODgxMTg4MzkzLCA1MS4zOTk0NDg5NzUyMzkzOV0sIFstMi43MDM5MzY1Nzc0MTI1NDQ2LCA1MS40MDI5MzAxODQ1ODg4XSwgWy0yLjc0OTk4MzkyMDA2NzU1NzUsIDUxLjQ3NTk5Mzg1Njg5MTA0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9lZWQxZjkyYzVjMjY0ZmMxYjgzZjI3YmZmZmJiOGI0OCk7CiAgICAgICAgZ2VvX2pzb25fMzc1YTE5NTk3YjQ3NDUwZGJkMTIzNzk4MDQ0ZTUyMWEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCjwvc2NyaXB0Pg==\" 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 0x7ffa6758b940>"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m = folium.Map(location=[51.460555, -2.597576], zoom_start=11, )\n",
"\n",
"folium.GeoJson(\n",
" bristol_geojson,\n",
" name='bristol'\n",
").add_to(m)\n",
"\n",
"for boundary in hexagons_boundary:\n",
" folium.GeoJson(\n",
" {\"type\":\"Polygon\",\"coordinates\": [boundary]}\n",
" ).add_to(m)\n",
"\n",
"m"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [],
"source": [
"hexagons = list(h3.polyfill(bristol_geojson, 6))\n",
"hexagons_boundary = [h3.h3_to_geo_boundary(h3_ix) for h3_ix in hexagons]"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVM9ZmFsc2U7IExfTk9fVE9VQ0g9ZmFsc2U7IExfRElTQUJMRV8zRD1mYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgPHN0eWxlPiNtYXBfNTRhNWY3M2I2ZGI0NDI1MzhkMTU2YTlmNTIwOTI5MWEgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMTAwLjAlOwogICAgICAgIGhlaWdodDogMTAwLjAlOwogICAgICAgIGxlZnQ6IDAuMCU7CiAgICAgICAgdG9wOiAwLjAlOwogICAgICAgIH0KICAgIDwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzU0YTVmNzNiNmRiNDQyNTM4ZDE1NmE5ZjUyMDkyOTFhIiA+PC9kaXY+CjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKICAgIAogICAgICAgIHZhciBib3VuZHMgPSBudWxsOwogICAgCgogICAgdmFyIG1hcF81NGE1ZjczYjZkYjQ0MjUzOGQxNTZhOWY1MjA5MjkxYSA9IEwubWFwKAogICAgICAgICdtYXBfNTRhNWY3M2I2ZGI0NDI1MzhkMTU2YTlmNTIwOTI5MWEnLCB7CiAgICAgICAgY2VudGVyOiBbNTEuNDYwNTU1LCAtMi41OTc1NzZdLAogICAgICAgIHpvb206IDExLAogICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgIGxheWVyczogW10sCiAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NywKICAgICAgICB6b29tQ29udHJvbDogdHJ1ZSwKICAgICAgICB9KTsKCiAgICAKICAgIAogICAgdmFyIHRpbGVfbGF5ZXJfMmQxNzU4YzNkYjQ4NDZjODgzZWE3YjA2OTY0NmU2MWUgPSBMLnRpbGVMYXllcigKICAgICAgICAnaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLAogICAgICAgIHsKICAgICAgICAiYXR0cmlidXRpb24iOiBudWxsLAogICAgICAgICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAgICAgICAibWF4TmF0aXZlWm9vbSI6IDE4LAogICAgICAgICJtYXhab29tIjogMTgsCiAgICAgICAgIm1pblpvb20iOiAwLAogICAgICAgICJub1dyYXAiOiBmYWxzZSwKICAgICAgICAic3ViZG9tYWlucyI6ICJhYmMiCn0pLmFkZFRvKG1hcF81NGE1ZjczYjZkYjQ0MjUzOGQxNTZhOWY1MjA5MjkxYSk7CiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNjM5ZWVhYjE4MzgxNDVlODk5YTg0NjBkNzMyMTRmZjQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NTIyNjEzNTI1MzkwNjI1LCA1MS41NTY1ODIxODU3NjI1M10sIFstMi43MDgxMjk4ODI4MTI0OTk2LCA1MS40OTA3ODk1OTgwMzQ1NV0sIFstMi42OTU3NzAyNjM2NzE4NzUsIDUxLjM5NzQ5MjA1NTIwNjgxXSwgWy0yLjQ5MzIwOTgzODg2NzE4NzUsIDUxLjM5NzA2MzY0NTU4OTM0XSwgWy0yLjQ1MjAxMTEwODM5ODQzNzUsIDUxLjUwNDA0MTIwMjYwNjc2XSwgWy0yLjU1MjI2MTM1MjUzOTA2MjUsIDUxLjU1NjU4MjE4NTc2MjUzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF81NGE1ZjczYjZkYjQ0MjUzOGQxNTZhOWY1MjA5MjkxYSk7CiAgICAgICAgZ2VvX2pzb25fNjM5ZWVhYjE4MzgxNDVlODk5YTg0NjBkNzMyMTRmZjQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYjlhNDViNDZhYTdiNGFiNmEzZDU0ZmNhYzg1YTZhNzEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NjA2NDYyNjYyNjQyNDczLCA1MS41NTk3NjE2MjYyNDg0NF0sIFstMi41Mjk5ODUyNTU1NDQyMjE3LCA1MS41Njg2NjE1Nzg2MjM2Nl0sIFstMi41MDQ0MjAwODcyOTI1NTI0LCA1MS41NDczMjk0NjAzODEzMDZdLCBbLTIuNTA5NTA2OTQ4NDEyNzI4NCwgNTEuNTE3MDg2NDgyMzQ5MzJdLCBbLTIuNTQwMTczMDU5Nzk5OTk5LCA1MS41MDgxNzM3OTU3NDQwODVdLCBbLTIuNTY1NzQ3MjEyNTkyMjg5LCA1MS41Mjk1MTY4MjA1NzczNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfNTRhNWY3M2I2ZGI0NDI1MzhkMTU2YTlmNTIwOTI5MWEpOwogICAgICAgIGdlb19qc29uX2I5YTQ1YjQ2YWE3YjRhYjZhM2Q1NGZjYWM4NWE2YTcxLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzVmOWUzNzNmZTk5YTQ1MmNhMzExMzhjYmYyMDUzMmY5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNzI0MzkzMjgxODA1NTA3NCwgNTEuNDU0NjIzMjMwOTc1MzFdLCBbLTIuNjkzNjYzMzY5NjA1MTczNSwgNTEuNDYzNTU3MTk2MDI2MzE1XSwgWy0yLjY2ODA3MTk3MDI3NzQyOTQsIDUxLjQ0MjE4OTQ3NzAzMjIyXSwgWy0yLjY3MzIwMTU0MTIxOTQzNjUsIDUxLjQxMTg3NjkwMzQ2MzkzNF0sIFstMi43MDM5MzY1Nzc0MTI1NDQ2LCA1MS40MDI5MzAxODQ1ODg4XSwgWy0yLjcyOTUzNjkyMTg0NDA0NzMsIDUxLjQyNDMwODc5MjI0NDU5NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfNTRhNWY3M2I2ZGI0NDI1MzhkMTU2YTlmNTIwOTI5MWEpOwogICAgICAgIGdlb19qc29uXzVmOWUzNzNmZTk5YTQ1MmNhMzExMzhjYmYyMDUzMmY5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2JlZTRlZDg4ZTlmZDRlOTdiOTc3Y2ZiMDcwOGY2NzI5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjUyNjkzMjA2MjYwNzk1NywgNTEuNTMzMDQwNTMwNDk4MDhdLCBbLTIuNjIyMDAwMjU1ODkxODI2NywgNTEuNTQxOTUxMTAzODY2Nl0sIFstMi41OTY0MjY3NjkyMTkxMDQ1LCA1MS41MjA2MDUxODk2MTEwNzVdLCBbLTIuNjAxNTM3Mjc2MDM1NzU3NCwgNTEuNDkwMzM3Nzk0MjM3MjVdLCBbLTIuNjMyMjM1MzUyMzMwMjkzLCA1MS40ODE0MTQ0NzU5NzUwMV0sIFstMi42NTc4MTc3OTkwNjA5NTI2LCA1MS41MDI3NzEyOTcxNDY2Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfNTRhNWY3M2I2ZGI0NDI1MzhkMTU2YTlmNTIwOTI5MWEpOwogICAgICAgIGdlb19qc29uX2JlZTRlZDg4ZTlmZDRlOTdiOTc3Y2ZiMDcwOGY2NzI5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzI2OGU4Mjc3ZTlkNDRhMjI4ZmIwODVmY2EzNDk1MTEwID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjMyMjM1MzUyMzMwMjkzLCA1MS40ODE0MTQ0NzU5NzUwMV0sIFstMi42MDE1MzcyNzYwMzU3NTc0LCA1MS40OTAzMzc3OTQyMzcyNV0sIFstMi41NzU5NTQxNDYwOTY5MzIsIDUxLjQ2ODk4Mzg3MTg1MjkxXSwgWy0yLjU4MTA2MDEyNTkyMDAxNiwgNTEuNDM4Njk1NzQxOTEwODRdLCBbLTIuNjExNzYzMzAxMDc1MzQ3NiwgNTEuNDI5NzU5NjgwNDQzMzNdLCBbLTIuNjM3MzU1NDAwNzM0MDksIDUxLjQ1MTEyNDQ5MTI3MTk0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF81NGE1ZjczYjZkYjQ0MjUzOGQxNTZhOWY1MjA5MjkxYSk7CiAgICAgICAgZ2VvX2pzb25fMjY4ZTgyNzdlOWQ0NGEyMjhmYjA4NWZjYTM0OTUxMTAuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYmNiYjg2NzJjYzA2NDFiNGEyODRhYzJiNmUzNmQ3OTEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NzU5NTQxNDYwOTY5MzIsIDUxLjQ2ODk4Mzg3MTg1MjkxXSwgWy0yLjU0NTI2OTQ4OTY3Nzg1NiwgNTEuNDc3OTA4MjQxNTU2MTM2XSwgWy0yLjUxOTY4NTczNzE0ODk1ODMsIDUxLjQ1NjU1NzIxOTIwNDY4XSwgWy0yLjUyNDc3NzY1NzQ3MTMxMSwgNTEuNDI2MjcwOTQ3MjI0ODJdLCBbLTIuNTU1NDY3Mzg2NjI0NTEyLCA1MS40MTczMzM4NDA0ODkwNl0sIFstMi41ODEwNjAxMjU5MjAwMTYsIDUxLjQzODY5NTc0MTkxMDg0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF81NGE1ZjczYjZkYjQ0MjUzOGQxNTZhOWY1MjA5MjkxYSk7CiAgICAgICAgZ2VvX2pzb25fYmNiYjg2NzJjYzA2NDFiNGEyODRhYzJiNmUzNmQ3OTEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYmIwN2NkNGMxNDY4NDM2Y2E3Zjc4MjRkZWVhNzYxNmMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41MTk2ODU3MzcxNDg5NTgzLCA1MS40NTY1NTcyMTkyMDQ2OF0sIFstMi40ODkwMTQ1NTIxMDI1MDksIDUxLjQ2NTQ4MjYzODM5MDQwNV0sIFstMi40NjM0MzAyMzc1NjAyMzcsIDUxLjQ0NDEzNDUxNzMxNDk3XSwgWy0yLjQ2ODUwODEwNzUzNzY1NSwgNTEuNDEzODUwMTA2NDk0NzJdLCBbLTIuNDk5MTg0MzM5MTkyMDMyMywgNTEuNDA0OTExOTU2NDQ4NzldLCBbLTIuNTI0Nzc3NjU3NDcxMzExLCA1MS40MjYyNzA5NDcyMjQ4Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfNTRhNWY3M2I2ZGI0NDI1MzhkMTU2YTlmNTIwOTI5MWEpOwogICAgICAgIGdlb19qc29uX2JiMDdjZDRjMTQ2ODQzNmNhN2Y3ODI0ZGVlYTc2MTZjLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzc2Y2NmMGQ0M2FkMTRiOTM4Njg5NTYzZmExODgxYjkyID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTQwMTczMDU5Nzk5OTk5LCA1MS41MDgxNzM3OTU3NDQwODVdLCBbLTIuNTA5NTA2OTQ4NDEyNzI4NCwgNTEuNTE3MDg2NDgyMzQ5MzJdLCBbLTIuNDgzOTMyMTkwMDQyNzY5MywgNTEuNDk1NzQ2MzQ4MTg4MDZdLCBbLTIuNDg5MDE0NTUyMTAyNTA5LCA1MS40NjU0ODI2MzgzOTA0MDVdLCBbLTIuNTE5Njg1NzM3MTQ4OTU4MywgNTEuNDU2NTU3MjE5MjA0NjhdLCBbLTIuNTQ1MjY5NDg5Njc3ODU2LCA1MS40Nzc5MDgyNDE1NTYxMzZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzU0YTVmNzNiNmRiNDQyNTM4ZDE1NmE5ZjUyMDkyOTFhKTsKICAgICAgICBnZW9fanNvbl83NmNjZjBkNDNhZDE0YjkzODY4OTU2M2ZhMTg4MWI5Mi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lZmRmOWFkMzFkMWI0NWJjODI1N2NhYWU0MDA5ZWNkOSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU5NjQyNjc2OTIxOTEwNDUsIDUxLjUyMDYwNTE4OTYxMTA3NV0sIFstMi41NjU3NDcyMTI1OTIyODksIDUxLjUyOTUxNjgyMDU3NzM2XSwgWy0yLjU0MDE3MzA1OTc5OTk5OSwgNTEuNTA4MTczNzk1NzQ0MDg1XSwgWy0yLjU0NTI2OTQ4OTY3Nzg1NiwgNTEuNDc3OTA4MjQxNTU2MTM2XSwgWy0yLjU3NTk1NDE0NjA5NjkzMiwgNTEuNDY4OTgzODcxODUyOTFdLCBbLTIuNjAxNTM3Mjc2MDM1NzU3NCwgNTEuNDkwMzM3Nzk0MjM3MjVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzU0YTVmNzNiNmRiNDQyNTM4ZDE1NmE5ZjUyMDkyOTFhKTsKICAgICAgICBnZW9fanNvbl9lZmRmOWFkMzFkMWI0NWJjODI1N2NhYWU0MDA5ZWNkOS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9kODAxMzdiZDI3MWI0OTk0YjEyNzg3MjNlZTE1OGIxNCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY2ODA3MTk3MDI3NzQyOTQsIDUxLjQ0MjE4OTQ3NzAzMjIyXSwgWy0yLjYzNzM1NTQwMDczNDA5LCA1MS40NTExMjQ0OTEyNzE5NF0sIFstMi42MTE3NjMzMDEwNzUzNDc2LCA1MS40Mjk3NTk2ODA0NDMzM10sIFstMi42MTY4Nzg4MTE4ODM5MywgNTEuMzk5NDQ4OTc1MjM5MzldLCBbLTIuNjQ3NjAwNDc5Mjk5OTYxNywgNTEuMzkwNTAxMjEzMzY0ODZdLCBbLTIuNjczMjAxNTQxMjE5NDM2NSwgNTEuNDExODc2OTAzNDYzOTM0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF81NGE1ZjczYjZkYjQ0MjUzOGQxNTZhOWY1MjA5MjkxYSk7CiAgICAgICAgZ2VvX2pzb25fZDgwMTM3YmQyNzFiNDk5NGIxMjc4NzIzZWUxNThiMTQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZGI4NTNhOTdmY2VkNGUzMzg2YmQyYmYwNDk4NzA3ZWUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42ODg1MjkyNDM2MTY3MzQ3LCA1MS40OTM4NDkwMzIyODUyMl0sIFstMi42NTc4MTc3OTkwNjA5NTI2LCA1MS41MDI3NzEyOTcxNDY2Ml0sIFstMi42MzIyMzUzNTIzMzAyOTMsIDUxLjQ4MTQxNDQ3NTk3NTAxXSwgWy0yLjYzNzM1NTQwMDczNDA5LCA1MS40NTExMjQ0OTEyNzE5NF0sIFstMi42NjgwNzE5NzAyNzc0Mjk0LCA1MS40NDIxODk0NzcwMzIyMl0sIFstMi42OTM2NjMzNjk2MDUxNzM1LCA1MS40NjM1NTcxOTYwMjYzMTVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzU0YTVmNzNiNmRiNDQyNTM4ZDE1NmE5ZjUyMDkyOTFhKTsKICAgICAgICBnZW9fanNvbl9kYjg1M2E5N2ZjZWQ0ZTMzODZiZDJiZjA0OTg3MDdlZS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9kNmE3NTlmZGI0M2E0NDMzOGY2YmUwMDkzZTgyMDQzMCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjYxMTc2MzMwMTA3NTM0NzYsIDUxLjQyOTc1OTY4MDQ0MzMzXSwgWy0yLjU4MTA2MDEyNTkyMDAxNiwgNTEuNDM4Njk1NzQxOTEwODRdLCBbLTIuNTU1NDY3Mzg2NjI0NTEyLCA1MS40MTczMzM4NDA0ODkwNl0sIFstMi41NjA1Njg4NDYzMzg4NTI3LCA1MS4zODcwMjUwMDY4NDc1MTZdLCBbLTIuNTkxMjc3MDkzMjQ2NzM1LCA1MS4zNzgwNzYyMDM5MzQxNjRdLCBbLTIuNjE2ODc4ODExODgzOTMsIDUxLjM5OTQ0ODk3NTIzOTM5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF81NGE1ZjczYjZkYjQ0MjUzOGQxNTZhOWY1MjA5MjkxYSk7CiAgICAgICAgZ2VvX2pzb25fZDZhNzU5ZmRiNDNhNDQzMzhmNmJlMDA5M2U4MjA0MzAuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCjwvc2NyaXB0Pg==\" 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 0x7ffa6758e5f8>"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m = folium.Map(location=[51.460555, -2.597576], zoom_start=11, )\n",
"\n",
"folium.GeoJson(\n",
" bristol_geojson,\n",
" name='bristol'\n",
").add_to(m)\n",
"\n",
"for boundary in hexagons_boundary:\n",
" folium.GeoJson(\n",
" {\"type\":\"Polygon\",\"coordinates\": [boundary]}\n",
" ).add_to(m)\n",
"\n",
"m"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [],
"source": [
"hexagons = list(h3.polyfill(bristol_geojson, 7))\n",
"hexagons_boundary = [h3.h3_to_geo_boundary(h3_ix) for h3_ix in hexagons]"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVM9ZmFsc2U7IExfTk9fVE9VQ0g9ZmFsc2U7IExfRElTQUJMRV8zRD1mYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgPHN0eWxlPiNtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMTAwLjAlOwogICAgICAgIGhlaWdodDogMTAwLjAlOwogICAgICAgIGxlZnQ6IDAuMCU7CiAgICAgICAgdG9wOiAwLjAlOwogICAgICAgIH0KICAgIDwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzMxNTYwODQ3MDAzMTQ0ZjdiMGJiODBmNzRhMGNiN2IxIiA+PC9kaXY+CjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKICAgIAogICAgICAgIHZhciBib3VuZHMgPSBudWxsOwogICAgCgogICAgdmFyIG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSA9IEwubWFwKAogICAgICAgICdtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEnLCB7CiAgICAgICAgY2VudGVyOiBbNTEuNDYwNTU1LCAtMi41OTc1NzZdLAogICAgICAgIHpvb206IDExLAogICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgIGxheWVyczogW10sCiAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NywKICAgICAgICB6b29tQ29udHJvbDogdHJ1ZSwKICAgICAgICB9KTsKCiAgICAKICAgIAogICAgdmFyIHRpbGVfbGF5ZXJfZTQzNzdhOWY0MGI5NDQ3Zjg2OWVmODc3YTA3ZTM3MzkgPSBMLnRpbGVMYXllcigKICAgICAgICAnaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLAogICAgICAgIHsKICAgICAgICAiYXR0cmlidXRpb24iOiBudWxsLAogICAgICAgICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAgICAgICAibWF4TmF0aXZlWm9vbSI6IDE4LAogICAgICAgICJtYXhab29tIjogMTgsCiAgICAgICAgIm1pblpvb20iOiAwLAogICAgICAgICJub1dyYXAiOiBmYWxzZSwKICAgICAgICAic3ViZG9tYWlucyI6ICJhYmMiCn0pLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fOWNkYzA5MzE2Y2U2NDBjMzhmOGIxMGU4YTA4OGQxNDUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NTIyNjEzNTI1MzkwNjI1LCA1MS41NTY1ODIxODU3NjI1M10sIFstMi43MDgxMjk4ODI4MTI0OTk2LCA1MS40OTA3ODk1OTgwMzQ1NV0sIFstMi42OTU3NzAyNjM2NzE4NzUsIDUxLjM5NzQ5MjA1NTIwNjgxXSwgWy0yLjQ5MzIwOTgzODg2NzE4NzUsIDUxLjM5NzA2MzY0NTU4OTM0XSwgWy0yLjQ1MjAxMTEwODM5ODQzNzUsIDUxLjUwNDA0MTIwMjYwNjc2XSwgWy0yLjU1MjI2MTM1MjUzOTA2MjUsIDUxLjU1NjU4MjE4NTc2MjUzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fOWNkYzA5MzE2Y2U2NDBjMzhmOGIxMGU4YTA4OGQxNDUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZjc5Mzg2N2VhYjMxNDhiN2FlNTNlMDY4MmYwNGE1ZjEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42NDgzMjk2MzY2MjgxNTUsIDUxLjQxMDg4MTMwMDQ3NzQzNV0sIFstMi42MzU4OTUyMTY2MTMxNDUzLCA1MS40MTAzODM1NzUzNDYxN10sIFstMi42MjkzMTI1Njk3OTQ2MzgsIDUxLjM5OTk0NjEzODI3NDI5XSwgWy0yLjYzNTE2NDMxMzU4MDYwNzMsIDUxLjM5MDAwNDQ2MDA0Njc0XSwgWy0yLjY0NzYwMDQ3OTI5OTk2NSwgNTEuMzkwNTAxMjEzMzY0ODZdLCBbLTIuNjU0MTgzMTU1NTQ2NzU4MywgNTEuNDAwOTQwNjE2ODk5NjA0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fZjc5Mzg2N2VhYjMxNDhiN2FlNTNlMDY4MmYwNGE1ZjEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMTE2M2EzZGMyOWMyNDI4ZWIyOTY4ZTU1MzI2ZWMwZjIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi43MDYwOTgwMDU3MzU3MjYsIDUxLjQ2NDA1NzU3Nzc4MDEzXSwgWy0yLjY5MzY2MzM2OTYwNTE3MzUsIDUxLjQ2MzU1NzE5NjAyNjMxNV0sIFstMi42ODcwODUyMjM1NTI2NzYsIDUxLjQ1MzEyMzQ2NDQ3ODM4XSwgWy0yLjY5Mjk0MTY4OTc1Mzg1NDMsIDUxLjQ0MzE4ODE0NjQwNTI4XSwgWy0yLjcwNTM3ODA3NjMzNzAzNywgNTEuNDQzNjg3NTU3Njg2OTVdLCBbLTIuNzExOTU2MjQ2MjgyODAyLCA1MS40NTQxMjMyNTc2OTAxNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uXzExNjNhM2RjMjljMjQyOGViMjk2OGU1NTMyNmVjMGYyLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzlhNTczMTU5OTNjYTQ5NjI5YmVhMzVmNzdjMGQzZWZmID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjE0NjkzMzM3MjQ2NjM1LCA1MS41MTExODc1NDQ2MjAwM10sIFstMi42MDIyNzA3Mjc4NDM1ODA0LCA1MS41MTA2ODUxMjQ4NzEzN10sIFstMi41OTU2OTI3MTA3NjA2OTEzLCA1MS41MDAyNjEyMzM0NjI1Nl0sIFstMi42MDE1MzcyNzYwMzU3NTc0LCA1MS40OTAzMzc3OTQyMzcyNV0sIFstMi42MTM5NjE2MzU0MDY4MzcsIDUxLjQ5MDgzOTI0NTkyMTU2XSwgWy0yLjYyMDUzOTY3OTU1MTA4OTYsIDUxLjUwMTI2NTEwNTA3MTcyNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uXzlhNTczMTU5OTNjYTQ5NjI5YmVhMzVmNzdjMGQzZWZmLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzFiZTAwNThlODM2MTRiNmI4NTdlOTQwYWRkN2YxZjE1ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTE5Njg1NzM3MTQ4OTYzNiwgNTEuNDU2NTU3MjE5MjA0NjldLCBbLTIuNTA3MjY2NDY3NTk5MzQ2LCA1MS40NTYwNTc2MDM5NTkzOTRdLCBbLTIuNTAwNjgyOTA4MDIwMTE3LCA1MS40NDU2MzE1MjcxOTU4NjRdLCBbLTIuNTA2NTE4NTgzMjU1NzQxMywgNTEuNDM1NzAzMTAwNzYyMzhdLCBbLTIuNTE4OTM5NTk2NzA3MTAzOCwgNTEuNDM2MjAxNzQ2ODY3NF0sIFstMi41MjU1MjMxOTEwMzkwNDM0LCA1MS40NDY2Mjk3ODg3MjE5NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uXzFiZTAwNThlODM2MTRiNmI4NTdlOTQwYWRkN2YxZjE1LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2ExMjk2YTlhYjQ3MDQ2ZDU4Yzc5MDgxYWQ0MTlmODc4ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTIxOTIwOTc5NTkxMTg2LCA1MS41MTc1ODkwMDA4NDEyN10sIFstMi41MDk1MDY5NDg0MTI3MjY2LCA1MS41MTcwODY0ODIzNDkzMDZdLCBbLTIuNTAyOTI2Nzk5Njc3NzM0LCA1MS41MDY2Njc2MTM2ODAzODVdLCBbLTIuNTA4NzYwNjUwMDk5ODM1NCwgNTEuNDk2NzQ5Mjk3NDI3MTE1XSwgWy0yLjUyMTE3NjQyODUxMTE3OTUsIDUxLjQ5NzI1MDg0ODg2NjEyXSwgWy0yLjUyNzc1NjYwOTI4NDQwNSwgNTEuNTA3NjcxNjgzNzg3MzRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNTYwODQ3MDAzMTQ0ZjdiMGJiODBmNzRhMGNiN2IxKTsKICAgICAgICBnZW9fanNvbl9hMTI5NmE5YWI0NzA0NmQ1OGM3OTA4MWFkNDE5Zjg3OC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl83NWRmYzM3ZDkzOTU0NTNmYWVlY2RjZmMzYTc2NTNmNCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU1NzY5MDEwNTAxMzA2MSwgNTEuNDc4NDA4OTc4Njc0MDhdLCBbLTIuNTQ1MjY5NDg5Njc3ODU2LCA1MS40Nzc5MDgyNDE1NTYxMzZdLCBbLTIuNTM4Njg4MTM4MjI2MzcxLCA1MS40Njc0ODMwMzY2MjgyM10sIFstMi41NDQ1MjczNzA0NDkzNTUsIDUxLjQ1NzU1NjYwMjg0MTg2XSwgWy0yLjU1Njk0OTczMjExNjE3OCwgNTEuNDU4MDU2MzcxMjQ5MjU2XSwgWy0yLjU2MzUzMTExNTI0NTY2NCwgNTEuNDY4NDgzNTQyMzI5NTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNTYwODQ3MDAzMTQ0ZjdiMGJiODBmNzRhMGNiN2IxKTsKICAgICAgICBnZW9fanNvbl83NWRmYzM3ZDkzOTU0NTNmYWVlY2RjZmMzYTc2NTNmNC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8zNmE4ZTA0M2I2M2I0MDBlOWNiNDIwMWE5NjEyZDQxMCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjYzMTUwNTQ2NjYxNjY1MSwgNTEuNDYxMDU2MDU0NDI1MjldLCBbLTIuNjE5MDc2OTQ4ODg2NzUxLCA1MS40NjA1NTU5Nzk0ODQzNTRdLCBbLTIuNjEyNDk2NjE3NDE0NDAzOCwgNTEuNDUwMTI1MzExMTUzMV0sIFstMi42MTgzNDQ3NzU0NDY4ODM2LCA1MS40NDAxOTI3NTA4MzAyODVdLCBbLTIuNjMwNzc1MDQxMDE5NjU2NCwgNTEuNDQwNjkxODU1ODMyMTNdLCBbLTIuNjM3MzU1NDAwNzM0MDksIDUxLjQ1MTEyNDQ5MTI3MTk0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fMzZhOGUwNDNiNjNiNDAwZTljYjQyMDFhOTYxMmQ0MTAuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYjU2ZmM2MzdiNGRiNDZhMDgxMjM5Yzc1YTQ4Y2NkMDIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42MTI0OTY2MTc0MTQ0MDM4LCA1MS40NTAxMjUzMTExNTMxXSwgWy0yLjYwMDA2ODc2MTQ0MDc1MDcsIDUxLjQ0OTYyNTc5NzY4NzY0NV0sIFstMi41OTM0ODczMTY4NTEzMzIsIDUxLjQzOTE5NDY5Mzg3NzM5XSwgWy0yLjU5OTMzMzY5ODQ3MDc5NiwgNTEuNDI5MjYxMTM3MTMxODhdLCBbLTIuNjExNzYzMzAxMDc1MzUwMywgNTEuNDI5NzU5NjgwNDQzMzRdLCBbLTIuNjE4MzQ0Nzc1NDQ2ODgzNiwgNTEuNDQwMTkyNzUwODMwMjg1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fYjU2ZmM2MzdiNGRiNDZhMDgxMjM5Yzc1YTQ4Y2NkMDIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fOGUyMjExODE3YjFjNDAxMmE3OWVhNDA0ZTgyZTJkMzEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42MzA3NzUwNDEwMTk2NTY0LCA1MS40NDA2OTE4NTU4MzIxM10sIFstMi42MTgzNDQ3NzU0NDY4ODM2LCA1MS40NDAxOTI3NTA4MzAyODVdLCBbLTIuNjExNzYzMzAxMDc1MzUwMywgNTEuNDI5NzU5NjgwNDQzMzRdLCBbLTIuNjE3NjEyMDYzMTQzNjExNSwgNTEuNDE5ODIzNzQ4NTE2OTldLCBbLTIuNjMwMDQ0MDc1NDQzOTM4LCA1MS40MjAzMjE4ODI4ODMzODVdLCBbLTIuNjM2NjI1NTc4OTY1ODExMywgNTEuNDMwNzU2OTE5OTg3NThdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNTYwODQ3MDAzMTQ0ZjdiMGJiODBmNzRhMGNiN2IxKTsKICAgICAgICBnZW9fanNvbl84ZTIyMTE4MTdiMWM0MDEyYTc5ZWE0MDRlODJlMmQzMS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl85ZGVmY2ViNDdhMjI0NTIzODdiZjJhZDdlOGI0N2YyOCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU0MDkxNDcyMzU1MTk3ODIsIDUxLjUyODUxMDUwODg3OTA2Nl0sIFstMi41Mjg1MDAwMjE0ODI2ODQzLCA1MS41MjgwMDc0MzAwODUwN10sIFstMi41MjE5MjA5Nzk1OTExODYsIDUxLjUxNzU4OTAwMDg0MTI3XSwgWy0yLjUyNzc1NjYwOTI4NDQwNSwgNTEuNTA3NjcxNjgzNzg3MzRdLCBbLTIuNTQwMTczMDU5Nzk5OTk5LCA1MS41MDgxNzM3OTU3NDQwODVdLCBbLTIuNTQ2NzUyMTMyMTkyNjEsIDUxLjUxODU5NDE5MTc2ODA1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fOWRlZmNlYjQ3YTIyNDUyMzg3YmYyYWQ3ZThiNDdmMjguc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMjM4ODNiZTRiM2E0NDhiMjkyYTkyYzFkZTEyOWJiMTkgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41OTM0ODczMTY4NTEzMzIsIDUxLjQzOTE5NDY5Mzg3NzM5XSwgWy0yLjU4MTA2MDEyNTkyMDAxNiwgNTEuNDM4Njk1NzQxOTEwODRdLCBbLTIuNTc0NDc3NTcxMTcyNzAyNCwgNTEuNDI4MjY0MjAzMzkxNThdLCBbLTIuNTgwMzIyMTc2MDUyODIzLCA1MS40MTgzMjk2NTA5NzAzMzVdLCBbLTIuNTkyNzUxMTEyNDAxOTM0MiwgNTEuNDE4ODI3NjMyNTY4MTc0XSwgWy0yLjU5OTMzMzY5ODQ3MDc5NiwgNTEuNDI5MjYxMTM3MTMxODhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNTYwODQ3MDAzMTQ0ZjdiMGJiODBmNzRhMGNiN2IxKTsKICAgICAgICBnZW9fanNvbl8yMzg4M2JlNGIzYTQ0OGIyOTJhOTJjMWRlMTI5YmIxOS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lZTBkZGJkYmI4YjI0MzgxYWQ2MWI4NTZiOWY1MGUzYiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjQ5OTkzMzg4Nzc2MjU1LCA1MS40MjUyNzQ2MjQ2NzQ2MzZdLCBbLTIuNDg3NTEzNTUzMzQxMTQ2NSwgNTEuNDI0Nzc2NTM5NzU1OF0sIFstMi40ODA5Mjc3NTk2NDgyODUsIDUxLjQxNDM0NzYzMDIwNDI2XSwgWy0yLjQ4Njc2MjI2MzIwMDE5NDcsIDUxLjQwNDQxNDg0MTU3OTcxNV0sIFstMi40OTkxODQzMzkxOTIwMzIzLCA1MS40MDQ5MTE5NTY0NDg3OV0sIFstMi41MDU3NzAxNzAwODAxNjQyLCA1MS40MTUzNDI4MzAxNjc4MTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNTYwODQ3MDAzMTQ0ZjdiMGJiODBmNzRhMGNiN2IxKTsKICAgICAgICBnZW9fanNvbl9lZTBkZGJkYmI4YjI0MzgxYWQ2MWI4NTZiOWY1MGUzYi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lMTc1MTJhNDFhZDY0YTU0YTcyZmJmYmFhMGFiN2ZlNiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY2ODc5NzE0OTczMTY5MSwgNTEuNDYyNTU2NTg1OTc1NTg0XSwgWy0yLjY1NjM2NTU2ODA4NjEzMywgNTEuNDYyMDU2MzU3NjYzMTNdLCBbLTIuNjQ5Nzg2MzI1OTg3MzU4NiwgNTEuNDUxNjI0MTU3OTQwODNdLCBbLTIuNjU1NjM4NjM5NDgyMzM4LCA1MS40NDE2OTAyMTg5MjUzNl0sIFstMi42NjgwNzE5NzAyNzc0MjYsIDUxLjQ0MjE4OTQ3NzAzMjIzXSwgWy0yLjY3NDY1MTIzODQ0NDcwNjUsIDUxLjQ1MjYyMzY0NDUzNjI3NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uX2UxNzUxMmE0MWFkNjRhNTRhNzJmYmZiYWEwYWI3ZmU2LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzNiODVlMmNmY2JlZDQyNGRiN2IyMGE3MzVkNTRiY2JhID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjExMDI5NDQ2Mzg0MzgxLCA1MS40MDkzODgyNzc3Njg5NV0sIFstMi41OTg1OTgwOTgyNjQ5NjEsIDUxLjQwODg5MDcwNTMwNzUxXSwgWy0yLjU5MjAxNDM3MTIyOTk5OSwgNTEuMzk4NDU0ODAxNjg2NTA1XSwgWy0yLjU5Nzg2MTk2MDczMzI1NDMsIDUxLjM4ODUxNDUwNDkxMjgyXSwgWy0yLjYxMDI5NTA1MzI0OTcwMTMsIDUxLjM4OTAxMTEwNTgyODQxNl0sIFstMi42MTY4Nzg4MTE4ODM5MywgNTEuMzk5NDQ4OTc1MjM5MzldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNTYwODQ3MDAzMTQ0ZjdiMGJiODBmNzRhMGNiN2IxKTsKICAgICAgICBnZW9fanNvbl8zYjg1ZTJjZmNiZWQ0MjRkYjdiMjBhNzM1ZDU0YmNiYS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl82MjhkNjA2ZTA2Yzg0N2U0YTE2MjAzODFlMjk3MDVjZCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjcwNjgxNzM4ODU2NzAwMDQsIDUxLjQ4NDQyMTgxNjY0NzY5Nl0sIFstMi42OTQzODQ1MDQwMDM0NDcsIDUxLjQ4MzkyMDQ2NTExOTA1Nl0sIFstMi42ODc4MDc1MDYwMDY2NTMsIDUxLjQ3MzQ4OTEzOTE0MjUxXSwgWy0yLjY5MzY2MzM2OTYwNTE3MzUsIDUxLjQ2MzU1NzE5NjAyNjMxNV0sIFstMi43MDYwOTgwMDU3MzU3MjYsIDUxLjQ2NDA1NzU3Nzc4MDEzXSwgWy0yLjcxMjY3NTAyNjcxNjc4MDcsIDUxLjQ3NDQ5MDg3MjYwMTI5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fNjI4ZDYwNmUwNmM4NDdlNGExNjIwMzgxZTI5NzA1Y2Quc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNGFmNGU1NWMzNThhNDlhYWIyMWE2YjEwNTQwZDY5MzQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42MzM2OTM1MDQ0OTE4ODU3LCA1MS41MjIxMTM5NzcyMjk0NDVdLCBbLTIuNjIxMjcwMjM2OTY0MzYsIDUxLjUyMTYxMDk5NjY1MTkxNl0sIFstMi42MTQ2OTMzMzcyNDY2MzUsIDUxLjUxMTE4NzU0NDYyMDAzXSwgWy0yLjYyMDUzOTY3OTU1MTA4OTYsIDUxLjUwMTI2NTEwNTA3MTcyNF0sIFstMi42MzI5NjQ2OTgyNTY1MzQsIDUxLjUwMTc2NzExNzgwMDc2XSwgWy0yLjYzOTU0MTYyMzQ5NTUzNTYsIDUxLjUxMjE5MjUzODEwMjg0NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uXzRhZjRlNTVjMzU4YTQ5YWFiMjFhNmIxMDU0MGQ2OTM0LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2IxNTQ4ZjQwM2NhMjRjYmI5NGMyYWJhNDNiZDYzNjhkID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTc0NDc3NTcxMTcyNzAyNCwgNTEuNDI4MjY0MjAzMzkxNThdLCBbLTIuNTYyMDUxMDQ4NTY5MzM3NywgNTEuNDI3NzY1ODEyOTQ3MjVdLCBbLTIuNTU1NDY3Mzg2NjI0NTEyLCA1MS40MTczMzM4NDA0ODkwNl0sIFstMi41NjEzMTAyMTQ0NDA2OTEsIDUxLjQwNzM5ODI5MzEzOTI2Nl0sIFstMi41NzM3Mzg0ODEyNDc2MzQzLCA1MS40MDc4OTU3MTMwMDA0XSwgWy0yLjU4MDMyMjE3NjA1MjgyMywgNTEuNDE4MzI5NjUwOTcwMzM1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fYjE1NDhmNDAzY2EyNGNiYjk0YzJhYmE0M2JkNjM2OGQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZTZkYTg1MGM3ZDUzNDNlZDlkMDI2ODc4ZGNlZjhhMWEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42NTE5NjcyOTgyNTA5OTc2LCA1MS41MTI2OTUxMTE4NTI1N10sIFstMi42Mzk1NDE2MjM0OTU1MzU2LCA1MS41MTIxOTI1MzgxMDI4NDVdLCBbLTIuNjMyOTY0Njk4MjU2NTM0LCA1MS41MDE3NjcxMTc4MDA3Nl0sIFstMi42Mzg4MTM0MjI5MDIwODYsIDUxLjQ5MTg0MjMwMzAxMDE5NV0sIFstMi42NTEyNDA4NDg5MzUwODE0LCA1MS40OTIzNDM5MDg0MzAwNl0sIFstMi42NTc4MTc3OTkwNjA5NDczLCA1MS41MDI3NzEyOTcxNDY2Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uX2U2ZGE4NTBjN2Q1MzQzZWQ5ZDAyNjg3OGRjZWY4YTFhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2E4MjFkNTU1ODZiODRiMDRhYjkyOTYyYjA2Yjg3MThlID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNDgzOTMyMTkwMDQyNzc2LCA1MS40OTU3NDYzNDgxODgwNl0sIFstMi40NzE1MTk1MTA0NzYwODEsIDUxLjQ5NTI0NDk1MDM3MjQ3NF0sIFstMi40NjQ5MzcxNTY5MTgxNTMsIDUxLjQ4NDgyNTIwNTE1NTgxNV0sIFstMi40NzA3Njc0NDc4MzM4NDk1LCA1MS40NzQ5MDQ4OTI3MzUyMV0sIFstMi40ODMxODE4NzIyMDMyNTQ2LCA1MS40NzU0MDUzMjMwNjcxNV0sIFstMi40ODk3NjQyNjA4NzE3ODk2LCA1MS40ODU4MjcwMzM0NzkxNTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNTYwODQ3MDAzMTQ0ZjdiMGJiODBmNzRhMGNiN2IxKTsKICAgICAgICBnZW9fanNvbl9hODIxZDU1NTg2Yjg0YjA0YWI5Mjk2MmIwNmI4NzE4ZS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wNDAxM2E3OTYxZWI0ZGJhYTg3ZWI2OTMyYzlkNjBiNiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjQ4MzE4MTg3MjIwMzI1NDYsIDUxLjQ3NTQwNTMyMzA2NzE1XSwgWy0yLjQ3MDc2NzQ0NzgzMzg0OTUsIDUxLjQ3NDkwNDg5MjczNTIxXSwgWy0yLjQ2NDE4Mzk1OTY1MzAyOTMsIDUxLjQ2NDQ4Mjc0NTcyOThdLCBbLTIuNDcwMDE0ODU5ODQ0NzgzOCwgNTEuNDU0NTU5MDY0NDIzODRdLCBbLTIuNDgyNDMxMDI3OTA2OTY0LCA1MS40NTUwNTg1MjY1NzY3MV0sIFstMi40ODkwMTQ1NTIxMDI1MDksIDUxLjQ2NTQ4MjYzODM5MDQwNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uXzA0MDEzYTc5NjFlYjRkYmFhODdlYjY5MzJjOWQ2MGI2LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzQ4OTdjMGJiZWQyNTRjOWY5ODE4ZTgyYmI5YzYxNzU0ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTc1MjE2MTI2MDkzNTA0LCA1MS40NDg2MjY5MjM5MDU4Nl0sIFstMi41NjI3OTEzNDg4MDkzLCA1MS40NDgxMjc1NjM1NzQwNV0sIFstMi41NTYyMDg4MjYwMTQ4MDUsIDUxLjQzNzY5Nzk5MDk1ODgyNF0sIFstMi41NjIwNTEwNDg1NjkzMzc3LCA1MS40Mjc3NjU4MTI5NDcyNV0sIFstMi41NzQ0Nzc1NzExNzI3MDI0LCA1MS40MjgyNjQyMDMzOTE1OF0sIFstMi41ODEwNjAxMjU5MjAwMTYsIDUxLjQzODY5NTc0MTkxMDg0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fNDg5N2MwYmJlZDI1NGM5Zjk4MThlODJiYjljNjE3NTQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNjE5MzAzNTI3Y2NkNDJiODhhNDg3MDQxYzdhNTUxOTUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NTU0NjczODY2MjQ1MTIsIDUxLjQxNzMzMzg0MDQ4OTA2XSwgWy0yLjU0MzA0MTUzNTYzNDE5NSwgNTEuNDE2ODM2MDExNTkwMTddLCBbLTIuNTM2NDU2NzY5NDUzNDcwNSwgNTEuNDA2NDAzNjA1OTYzMTg1XSwgWy0yLjU0MjI5NzgxOTg4Mjg0NCwgNTEuMzk2NDY3MDY0NDMyMThdLCBbLTIuNTU0NzI1NDEzODYxMzk5MywgNTEuMzk2OTYzOTIyNTMzNjQ0XSwgWy0yLjU2MTMxMDIxNDQ0MDY5MSwgNTEuNDA3Mzk4MjkzMTM5MjY2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fNjE5MzAzNTI3Y2NkNDJiODhhNDg3MDQxYzdhNTUxOTUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMTBlYjFjMDQ0MTQ2NGZhZWI0YWQ2YjM5YjAxOGYwYTMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41MDIxNzkzNjM5MDA4OTUsIDUxLjQ4NjMyODAyNDM3NjU0XSwgWy0yLjQ4OTc2NDI2MDg3MTc4OTYsIDUxLjQ4NTgyNzAzMzQ3OTE1NF0sIFstMi40ODMxODE4NzIyMDMyNTQ2LCA1MS40NzU0MDUzMjMwNjcxNV0sIFstMi40ODkwMTQ1NTIxMDI1MDksIDUxLjQ2NTQ4MjYzODM5MDQwNV0sIFstMi41MDE0MzE0MDAwNDA3MjM0LCA1MS40NjU5ODI2NjEzMjM2NF0sIFstMi41MDgwMTM4MjMxODgxMzMzLCA1MS40NzY0MDYzMzcwNzM2Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uXzEwZWIxYzA0NDE0NjRmYWViNGFkNmIzOWIwMThmMGEzLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzQxZDMzNjY3YWVjZTQ2NDc4YmM2YjhkMmQ4ODRiMTgyID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNDY1Njg5ODI5NDI3MjY1LCA1MS41MDUxNjE4OTI5MTk2MV0sIFstMi40NTMyNzk1NzUyNzUyNDE0LCA1MS41MDQ2NjAwODg0NzQ4NV0sIFstMi40NDY2OTcyNTc0NTk3NDgsIDUxLjQ5NDI0MjMwODMxMDQxXSwgWy0yLjQ1MjUyNTE1ODA3MTM2LCA1MS40ODQzMjQzNjc3MTQzM10sIFstMi40NjQ5MzcxNTY5MTgxNTMsIDUxLjQ4NDgyNTIwNTE1NTgxNV0sIFstMi40NzE1MTk1MTA0NzYwODEsIDUxLjQ5NTI0NDk1MDM3MjQ3NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uXzQxZDMzNjY3YWVjZTQ2NDc4YmM2YjhkMmQ4ODRiMTgyLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzIwYTZkM2U4MWU4ZTRmMjZiZjE3YTYwOTQwNTBlYWFlID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTk1NjkyNzEwNzYwNjkxMywgNTEuNTAwMjYxMjMzNDYyNTZdLCBbLTIuNTgzMjcwNzYyNzY0ODQ1NywgNTEuNDk5NzU5Mzc0NTY2ODddLCBbLTIuNTc2NjkxNjMxMjcwNDU3NSwgNTEuNDg5MzM1MDQ0NTQ5NzA1XSwgWy0yLjU4MjUzNDQxOTE4NzY1ODcsIDUxLjQ3OTQxMDYwNjM5MjI1XSwgWy0yLjU5NDk1ODExNTk0MDUxOCwgNTEuNDc5OTExNDk3MDA3OTddLCBbLTIuNjAxNTM3Mjc2MDM1NzU3NCwgNTEuNDkwMzM3Nzk0MjM3MjVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNTYwODQ3MDAzMTQ0ZjdiMGJiODBmNzRhMGNiN2IxKTsKICAgICAgICBnZW9fanNvbl8yMGE2ZDNlODFlOGU0ZjI2YmYxN2E2MDk0MDUwZWFhZS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lYTQyNDQ2NGM1OTI0ODlmOTJiMDdkODUwNzMyMWE4YSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU1NjIwODgyNjAxNDgwNSwgNTEuNDM3Njk3OTkwOTU4ODI0XSwgWy0yLjU0Mzc4NDcxOTEyOTAxMzcsIDUxLjQzNzE5OTE5MTk1Nzg2XSwgWy0yLjUzNzIwMTA5MDY3NTIzMTQsIDUxLjQyNjc2OTE4NDg3MTYyXSwgWy0yLjU0MzA0MTUzNTYzNDE5NSwgNTEuNDE2ODM2MDExNTkwMTddLCBbLTIuNTU1NDY3Mzg2NjI0NTEyLCA1MS40MTczMzM4NDA0ODkwNl0sIFstMi41NjIwNTEwNDg1NjkzMzc3LCA1MS40Mjc3NjU4MTI5NDcyNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uX2VhNDI0NDY0YzU5MjQ4OWY5MmIwN2Q4NTA3MzIxYThhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzQ3ODliM2JjZTVmOTRmOTFiYjE4MDA1NmRhOTNkNGNlID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTAwNjgyOTA4MDIwMTE3LCA1MS40NDU2MzE1MjcxOTU4NjRdLCBbLTIuNDg4MjY0MzE2MjgzODcyNSwgNTEuNDQ1MTMyNDcyOTIyMjFdLCBbLTIuNDgxNjc5NjU3MDc5ODExNiwgNTEuNDM0NzA1OTYxMzk0MThdLCBbLTIuNDg3NTEzNTUzMzQxMTQ2NSwgNTEuNDI0Nzc2NTM5NzU1OF0sIFstMi40OTk5MzM4ODc3NjI1NSwgNTEuNDI1Mjc0NjI0Njc0NjM2XSwgWy0yLjUwNjUxODU4MzI1NTc0MTMsIDUxLjQzNTcwMzEwMDc2MjM4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fNDc4OWIzYmNlNWY5NGY5MWJiMTgwMDU2ZGE5M2Q0Y2Uuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNDVhODNkYzE0MmRiNDQ2M2EyZGJiMzkxMDUyYjMyODMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41OTI3NTExMTI0MDE5MzQyLCA1MS40MTg4Mjc2MzI1NjgxNzRdLCBbLTIuNTgwMzIyMTc2MDUyODIzLCA1MS40MTgzMjk2NTA5NzAzMzVdLCBbLTIuNTczNzM4NDgxMjQ3NjM0MywgNTEuNDA3ODk1NzEzMDAwNF0sIFstMi41Nzk1ODM2OTA1Nzk4MjEsIDUxLjM5Nzk1Nzc5MTE1MzA5XSwgWy0yLjU5MjAxNDM3MTIyOTk5OSwgNTEuMzk4NDU0ODAxNjg2NTA1XSwgWy0yLjU5ODU5ODA5ODI2NDk2MSwgNTEuNDA4ODkwNzA1MzA3NTFdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNTYwODQ3MDAzMTQ0ZjdiMGJiODBmNzRhMGNiN2IxKTsKICAgICAgICBnZW9fanNvbl80NWE4M2RjMTQyZGI0NDYzYTJkYmIzOTEwNTJiMzI4My5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl82ZTFlNDYwYjJiZjg0ZTNmYTI1MWEyZjA0ZmZhZDgzZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU5NDk1ODExNTk0MDUxOCwgNTEuNDc5OTExNDk3MDA3OTddLCBbLTIuNTgyNTM0NDE5MTg3NjU4NywgNTEuNDc5NDEwNjA2MzkyMjVdLCBbLTIuNTc1OTU0MTQ2MDk2OTMyLCA1MS40Njg5ODM4NzE4NTI5M10sIFstMi41ODE3OTc1NDAyNjg5MzI2LCA1MS40NTkwNTYwNjEyODA0Ml0sIFstMi41OTQyMjI5ODQ2Njc1NTMsIDUxLjQ1OTU1NTk4MjkxOTY3NF0sIFstMi42MDA4MDMyODcyNjUzNjY2LCA1MS40Njk5ODQ2ODQyODM5Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uXzZlMWU0NjBiMmJmODRlM2ZhMjUxYTJmMDRmZmFkODNmLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2VkZWRiNzRlOGUyODRkMjRhNTQzM2FlODlmMzE0NzZiID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTU2OTQ5NzMyMTE2MTc4LCA1MS40NTgwNTYzNzEyNDkyNTZdLCBbLTIuNTQ0NTI3MzcwNDQ5MzU1LCA1MS40NTc1NTY2MDI4NDE4Nl0sIFstMi41Mzc5NDQ4ODAyMzkwNTksIDUxLjQ0NzEyODk5NTk4OTgzNl0sIFstMi41NDM3ODQ3MTkxMjkwMTM3LCA1MS40MzcxOTkxOTE5NTc4Nl0sIFstMi41NTYyMDg4MjYwMTQ4MDUsIDUxLjQzNzY5Nzk5MDk1ODgyNF0sIFstMi41NjI3OTEzNDg4MDkzLCA1MS40NDgxMjc1NjM1NzQwNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uX2VkZWRiNzRlOGUyODRkMjRhNTQzM2FlODlmMzE0NzZiLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzNmYzljOTIzZTQ2ZTQ0OTFiMDMxZmMwMWRiZjVkOTQzID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjMyMjM1MzUyMzMwMjkzLCA1MS40ODE0MTQ0NzU5NzUwMV0sIFstMi42MTk4MDg1ODM1NTY3NzksIDUxLjQ4MDkxMzQzMTc5MTU5XSwgWy0yLjYxMzIyOTM5NTQ5MzkyNzQsIDUxLjQ3MDQ4NTE2NzIwNzExNl0sIFstMi42MTkwNzY5NDg4ODY3NTEsIDUxLjQ2MDU1NTk3OTQ4NDM1NF0sIFstMi42MzE1MDU0NjY2MTY2NTEsIDUxLjQ2MTA1NjA1NDQyNTI5XSwgWy0yLjYzODA4NDY4MjAxMzk4MDUsIDUxLjQ3MTQ4NjI4NjUwNzZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNTYwODQ3MDAzMTQ0ZjdiMGJiODBmNzRhMGNiN2IxKTsKICAgICAgICBnZW9fanNvbl8zZmM5YzkyM2U0NmU0NDkxYjAzMWZjMDFkYmY1ZDk0My5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9jMTYwYTk4NGRiMjQ0N2M0OWVkOWVmZjcxNTZmOTRmNSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjYxMTc2MzMwMTA3NTM1MDMsIDUxLjQyOTc1OTY4MDQ0MzM0XSwgWy0yLjU5OTMzMzY5ODQ3MDc5NiwgNTEuNDI5MjYxMTM3MTMxODhdLCBbLTIuNTkyNzUxMTEyNDAxOTM0MiwgNTEuNDE4ODI3NjMyNTY4MTc0XSwgWy0yLjU5ODU5ODA5ODI2NDk2MSwgNTEuNDA4ODkwNzA1MzA3NTFdLCBbLTIuNjExMDI5NDQ2Mzg0MzgxLCA1MS40MDkzODgyNzc3Njg5NV0sIFstMi42MTc2MTIwNjMxNDM2MTE1LCA1MS40MTk4MjM3NDg1MTY5OV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uX2MxNjBhOTg0ZGIyNDQ3YzQ5ZWQ5ZWZmNzE1NmY5NGY1LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2RjOTY1MmZhZTc3ZDRmNmFhMzc0MWQzZjVjNjUwYzRjID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjUwNTEzODU4MjEzNTIxMywgNTEuNDcxOTg2OTIyOTAwNDJdLCBbLTIuNjM4MDg0NjgyMDEzOTgwNSwgNTEuNDcxNDg2Mjg2NTA3Nl0sIFstMi42MzE1MDU0NjY2MTY2NTEsIDUxLjQ2MTA1NjA1NDQyNTI5XSwgWy0yLjYzNzM1NTQwMDczNDA5LCA1MS40NTExMjQ0OTEyNzE5NF0sIFstMi42NDk3ODYzMjU5ODczNTg2LCA1MS40NTE2MjQxNTc5NDA4M10sIFstMi42NTYzNjU1NjgwODYxMzMsIDUxLjQ2MjA1NjM1NzY2MzEzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fZGM5NjUyZmFlNzdkNGY2YWEzNzQxZDNmNWM2NTBjNGMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMzAxMGJhMTE0Y2NiNGJmMDhiY2YwYmY1ZjVhNGE5NWIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42ODcwODUyMjM1NTI2NzYsIDUxLjQ1MzEyMzQ2NDQ3ODM4XSwgWy0yLjY3NDY1MTIzODQ0NDcwNjUsIDUxLjQ1MjYyMzY0NDUzNjI3NF0sIFstMi42NjgwNzE5NzAyNzc0MjYsIDUxLjQ0MjE4OTQ3NzAzMjIzXSwgWy0yLjY3MzkyNjY2MTc5OTE4MjQsIDUxLjQzMjI1MzE2MTcyMzQxXSwgWy0yLjY4NjM2MjM5NjE1MDkxOCwgNTEuNDMyNzUyMDEwOTc4MTg0XSwgWy0yLjY5Mjk0MTY4OTc1Mzg1NDMsIDUxLjQ0MzE4ODE0NjQwNTI4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fMzAxMGJhMTE0Y2NiNGJmMDhiY2YwYmY1ZjVhNGE5NWIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fODI0ZjYyOTAxYzc5NGJiYjlkMDU0YWRkNDA4ZTY5YTYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42NjczNDYyNDc0OTc1NTk2LCA1MS40MjE4MTY1OTE2NDM1MzRdLCBbLTIuNjU0OTExMTY4NjY4NzExNywgNTEuNDIxMzE4MzA0NDM4OTNdLCBbLTIuNjQ4MzI5NjM2NjI4MTU1LCA1MS40MTA4ODEzMDA0Nzc0MzVdLCBbLTIuNjU0MTgzMTU1NTQ2NzU4MywgNTEuNDAwOTQwNjE2ODk5NjA0XSwgWy0yLjY2NjYxOTk4MTI5MTc3MTcsIDUxLjQwMTQzNzkzMjUwNTQ5NV0sIFstMi42NzMyMDE1NDEyMTk0MzQ4LCA1MS40MTE4NzY5MDM0NjM5MzRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNTYwODQ3MDAzMTQ0ZjdiMGJiODBmNzRhMGNiN2IxKTsKICAgICAgICBnZW9fanNvbl84MjRmNjI5MDFjNzk0YmJiOWQwNTRhZGQ0MDhlNjlhNi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xMTIzYzNlYmFmODM0ZDYzOGZmNmRlZjc1NmJjYzM4OSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjYxNTQyNDUwMTEwNzM1NSwgNTEuNTMxNTMwMDYwNjMzNDJdLCBbLTIuNjAzMDAzNjQyNzgxMDY0LCA1MS41MzEwMjY2NzM1MTc0OV0sIFstMi41OTY0MjY3NjkyMTkxMDQ1LCA1MS41MjA2MDUxODk2MTEwNzVdLCBbLTIuNjAyMjcwNzI3ODQzNTgwNCwgNTEuNTEwNjg1MTI0ODcxMzddLCBbLTIuNjE0NjkzMzM3MjQ2NjM1LCA1MS41MTExODc1NDQ2MjAwM10sIFstMi42MjEyNzAyMzY5NjQzNiwgNTEuNTIxNjEwOTk2NjUxOTE2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fMTEyM2MzZWJhZjgzNGQ2MzhmZjZkZWY3NTZiY2MzODkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMWEzNmJiMjExOTc5NGZjNzhiOTdmYTM2MGI5ODgyMzkgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42MzAwNDQwNzU0NDM5MzgsIDUxLjQyMDMyMTg4Mjg4MzM4NV0sIFstMi42MTc2MTIwNjMxNDM2MTE1LCA1MS40MTk4MjM3NDg1MTY5OV0sIFstMi42MTEwMjk0NDYzODQzODEsIDUxLjQwOTM4ODI3Nzc2ODk1XSwgWy0yLjYxNjg3ODgxMTg4MzkzLCA1MS4zOTk0NDg5NzUyMzkzOV0sIFstMi42MjkzMTI1Njk3OTQ2MzgsIDUxLjM5OTk0NjEzODI3NDI5XSwgWy0yLjYzNTg5NTIxNjYxMzE0NTMsIDUxLjQxMDM4MzU3NTM0NjE3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fMWEzNmJiMjExOTc5NGZjNzhiOTdmYTM2MGI5ODgyMzkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZTU1ODg5NjJhZjEzNDMxZTgyMGQ3ZDM0MGE1MzNmZGMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41MDM2NzM3MDc0NDg4ODQ0LCA1MS41MjcwMDE0MjY1Njg0N10sIFstMi40OTEyNjIwOTc1NjM5MiwgNTEuNTI2NDk4NTAxODMwMjc1XSwgWy0yLjQ4NDY4MTk4MTUwMDE2OTcsIDUxLjUxNjA4MTU5OTI2OTM4NF0sIFstMi40OTA1MTM0NDI2NjY5ODIsIDUxLjUwNjE2NTY1NTUxNDYzXSwgWy0yLjUwMjkyNjc5OTY3NzczNCwgNTEuNTA2NjY3NjEzNjgwMzg1XSwgWy0yLjUwOTUwNjk0ODQxMjcyNjYsIDUxLjUxNzA4NjQ4MjM0OTMwNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uX2U1NTg4OTYyYWYxMzQzMWU4MjBkN2QzNDBhNTMzZmRjLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2VlMzE1MTllM2QyNDQ1NWZiOTVmYzlhODBkZmIwYTg1ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTM5NDMwODY0NzE5MTY4LCA1MS40ODc4MzEzMDQxMDQ2MjRdLCBbLTIuNTI3MDEyNjY2ODY1MTM1LCA1MS40ODczMzAxNTk2ODE1MDVdLCBbLTIuNTIwNDMxMzQ3NzIzODAzLCA1MS40NzY5MDY5MjA3NjM2NV0sIFstMi41MjYyNjgxOTQxNDM1OTIzLCA1MS40NjY5ODI4NjA0MzQ4MjVdLCBbLTIuNTM4Njg4MTM4MjI2MzcxLCA1MS40Njc0ODMwMzY2MjgyM10sIFstMi41NDUyNjk0ODk2Nzc4NTYsIDUxLjQ3NzkwODI0MTU1NjEzNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uX2VlMzE1MTllM2QyNDQ1NWZiOTVmYzlhODBkZmIwYTg1LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2NkOGY1NzhiMWE5YzRjODI4MTk2NzRhYTE3YmJjYjRhID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTE4MTkyOTI2MzE5MjU5NSwgNTEuNDE1ODQwNTA2NDM3Mjg0XSwgWy0yLjUwNTc3MDE3MDA4MDE2NDIsIDUxLjQxNTM0MjgzMDE2NzgxNl0sIFstMi40OTkxODQzMzkxOTIwMzIzLCA1MS40MDQ5MTE5NTY0NDg3OV0sIFstMi41MDUwMjEyMjc5OTYwMDIyLCA1MS4zOTQ5NzY3OTQ4NjgzMzRdLCBbLTIuNTE3NDQ1NzI1OTA2OTkyMiwgNTEuMzk1NDczNTAwNjA3MjQ1XSwgWy0yLjUyNDAzMTU5MzM2MDc3OSwgNTEuNDA1OTA2MzM4NjMyODJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNTYwODQ3MDAzMTQ0ZjdiMGJiODBmNzRhMGNiN2IxKTsKICAgICAgICBnZW9fanNvbl9jZDhmNTc4YjFhOWM0YzgyODE5Njc0YWExN2JiY2I0YS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9hZGQ2MzQ2MDcwZGI0NjNhOWM2Y2IwMTlhYmJkM2FiZCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU0MDE3MzA1OTc5OTk5OSwgNTEuNTA4MTczNzk1NzQ0MDg1XSwgWy0yLjUyNzc1NjYwOTI4NDQwNSwgNTEuNTA3NjcxNjgzNzg3MzRdLCBbLTIuNTIxMTc2NDI4NTExMTc5NSwgNTEuNDk3MjUwODQ4ODY2MTJdLCBbLTIuNTI3MDEyNjY2ODY1MTM1LCA1MS40ODczMzAxNTk2ODE1MDVdLCBbLTIuNTM5NDMwODY0NzE5MTY4LCA1MS40ODc4MzEzMDQxMDQ2MjRdLCBbLTIuNTQ2MDExMDc2ODk3Njk2NywgNTEuNDk4MjU0MTA1NDIxOTddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNTYwODQ3MDAzMTQ0ZjdiMGJiODBmNzRhMGNiN2IxKTsKICAgICAgICBnZW9fanNvbl9hZGQ2MzQ2MDcwZGI0NjNhOWM2Y2IwMTlhYmJkM2FiZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl83ZWVmYjU0Y2JkYzE0N2I1YWRhODFlNDUyZWFhOTMwYyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU1ODQyOTk0NDc5MDQ2OTMsIDUxLjQ5ODc1NTgxMDU1NDM1XSwgWy0yLjU0NjAxMTA3Njg5NzY5NjcsIDUxLjQ5ODI1NDEwNTQyMTk3XSwgWy0yLjUzOTQzMDg2NDcxOTE2OCwgNTEuNDg3ODMxMzA0MTA0NjI0XSwgWy0yLjU0NTI2OTQ4OTY3Nzg1NiwgNTEuNDc3OTA4MjQxNTU2MTM2XSwgWy0yLjU1NzY5MDEwNTAxMzA2MSwgNTEuNDc4NDA4OTc4Njc0MDhdLCBbLTIuNTY0MjcwMzQ3OTY0MDU3LCA1MS40ODg4MzM3NDY1MzA5N11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uXzdlZWZiNTRjYmRjMTQ3YjVhZGE4MWU0NTJlYWE5MzBjLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2MzNjkwMTNjOWE2YzQ1YzlhMjg4Njk0YTY0NDdiMDI4ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTc2NjkxNjMxMjcwNDU3NSwgNTEuNDg5MzM1MDQ0NTQ5NzA1XSwgWy0yLjU2NDI3MDM0Nzk2NDA1NywgNTEuNDg4ODMzNzQ2NTMwOTddLCBbLTIuNTU3NjkwMTA1MDEzMDYxLCA1MS40Nzg0MDg5Nzg2NzQwOF0sIFstMi41NjM1MzExMTUyNDU2NjQsIDUxLjQ2ODQ4MzU0MjMyOTU0XSwgWy0yLjU3NTk1NDE0NjA5NjkzMiwgNTEuNDY4OTgzODcxODUyOTNdLCBbLTIuNTgyNTM0NDE5MTg3NjU4NywgNTEuNDc5NDEwNjA2MzkyMjVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNTYwODQ3MDAzMTQ0ZjdiMGJiODBmNzRhMGNiN2IxKTsKICAgICAgICBnZW9fanNvbl9jMzY5MDEzYzlhNmM0NWM5YTI4ODY5NGE2NDQ3YjAyOC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl85ZDMyYzc2MWYzNDQ0ZTVjOGViYWE2ODAyMTc1MjM0NyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU5NDIyMjk4NDY2NzU1MywgNTEuNDU5NTU1OTgyOTE5Njc0XSwgWy0yLjU4MTc5NzU0MDI2ODkzMjYsIDUxLjQ1OTA1NjA2MTI4MDQyXSwgWy0yLjU3NTIxNjEyNjA5MzUwNCwgNTEuNDQ4NjI2OTIzOTA1ODZdLCBbLTIuNTgxMDYwMTI1OTIwMDE2LCA1MS40Mzg2OTU3NDE5MTA4NF0sIFstMi41OTM0ODczMTY4NTEzMzIsIDUxLjQzOTE5NDY5Mzg3NzM5XSwgWy0yLjYwMDA2ODc2MTQ0MDc1MDcsIDUxLjQ0OTYyNTc5NzY4NzY0NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uXzlkMzJjNzYxZjM0NDRlNWM4ZWJhYTY4MDIxNzUyMzQ3LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2I4ZGU2ZWE1OGY1NDQ4MThhNDE4MDIwMzg0N2IwZGYxID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjEzOTYxNjM1NDA2ODM3LCA1MS40OTA4MzkyNDU5MjE1Nl0sIFstMi42MDE1MzcyNzYwMzU3NTc0LCA1MS40OTAzMzc3OTQyMzcyNV0sIFstMi41OTQ5NTgxMTU5NDA1MTgsIDUxLjQ3OTkxMTQ5NzAwNzk3XSwgWy0yLjYwMDgwMzI4NzI2NTM2NjYsIDUxLjQ2OTk4NDY4NDI4Mzk2XSwgWy0yLjYxMzIyOTM5NTQ5MzkyNzQsIDUxLjQ3MDQ4NTE2NzIwNzExNl0sIFstMi42MTk4MDg1ODM1NTY3NzksIDUxLjQ4MDkxMzQzMTc5MTU5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fYjhkZTZlYTU4ZjU0NDgxOGE0MTgwMjAzODQ3YjBkZjEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNWExOTg1OTZmZGZiNGFlY2JhY2FmZjFhZTNjZjFiNWQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41MDE0MzE0MDAwNDA3MjM0LCA1MS40NjU5ODI2NjEzMjM2NF0sIFstMi40ODkwMTQ1NTIxMDI1MDksIDUxLjQ2NTQ4MjYzODM5MDQwNV0sIFstMi40ODI0MzEwMjc5MDY5NjQsIDUxLjQ1NTA1ODUyNjU3NjcxXSwgWy0yLjQ4ODI2NDMxNjI4Mzg3MjUsIDUxLjQ0NTEzMjQ3MjkyMjIxXSwgWy0yLjUwMDY4MjkwODAyMDExNywgNTEuNDQ1NjMxNTI3MTk1ODY0XSwgWy0yLjUwNzI2NjQ2NzU5OTM0NiwgNTEuNDU2MDU3NjAzOTU5Mzk0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fNWExOTg1OTZmZGZiNGFlY2JhY2FmZjFhZTNjZjFiNWQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fM2Q1M2E5MTQzNGI3NDA2NGE3YTMwYzg2Mjg2NTYxNTAgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42Njk1MjE3ODU5NjEyMzIsIDUxLjQ4MjkxNzkxNTc4NDkyXSwgWy0yLjY1NzA5MTk1NDU3OTEzOSwgNTEuNDgyNDE2NzE3OTYzODldLCBbLTIuNjUwNTEzODU4MjEzNTIxMywgNTEuNDcxOTg2OTIyOTAwNDJdLCBbLTIuNjU2MzY1NTY4MDg2MTMzLCA1MS40NjIwNTYzNTc2NjMxM10sIFstMi42Njg3OTcxNDk3MzE2OTEsIDUxLjQ2MjU1NjU4NTk3NTU4NF0sIFstMi42NzUzNzUyNzEyNTc1MTEsIDUxLjQ3Mjk4ODM0OTIxMDExXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fM2Q1M2E5MTQzNGI3NDA2NGE3YTMwYzg2Mjg2NTYxNTAuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZjIxMzZhNmI3ZTg3NDRlMzg1NDg5NmNkZGI0MzIzN2UgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41Nzg5MDA4Nzg2OTQ1MjY0LCA1MS41NTAzNTM4ODQ0MTg3MDVdLCBbLTIuNTY2NDg0ODQ0Njc2MTg0LCA1MS41NDk4NDk2ODUwOTM1NV0sIFstMi41NTk5MDgwMjUzMjk2NjcsIDUxLjUzOTQzMjEzNzAwMjExNl0sIFstMi41NjU3NDcyMTI1OTIyODksIDUxLjUyOTUxNjgyMDU3NzM2XSwgWy0yLjU3ODE2NDk5NzQ4MDM5NTMsIDUxLjUzMDAyMDA1MzQ5NzI1XSwgWy0yLjU4NDc0MTg0NDI1MTk4OCwgNTEuNTQwNDM5NTY5NDIzMzhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNTYwODQ3MDAzMTQ0ZjdiMGJiODBmNzRhMGNiN2IxKTsKICAgICAgICBnZW9fanNvbl9mMjEzNmE2YjdlODc0NGUzODU0ODk2Y2RkYjQzMjM3ZS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl81YjE1ZWVkNzgxZmY0ZDVhOTc0YTdiZDJiNTI0YWI0OSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU1OTkwODAyNTMyOTY2NywgNTEuNTM5NDMyMTM3MDAyMTE2XSwgWy0yLjU0NzQ5MjY1NTY0NjkwOTcsIDUxLjUzODkyODQ5NzkzMDM1XSwgWy0yLjU0MDkxNDcyMzU1MTk3ODIsIDUxLjUyODUxMDUwODg3OTA2Nl0sIFstMi41NDY3NTIxMzIxOTI2MSwgNTEuNTE4NTk0MTkxNzY4MDVdLCBbLTIuNTU5MTY5MjUxNTMzOTY3NywgNTEuNTE5MDk2ODY0MjE4NDU0XSwgWy0yLjU2NTc0NzIxMjU5MjI4OSwgNTEuNTI5NTE2ODIwNTc3MzZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNTYwODQ3MDAzMTQ0ZjdiMGJiODBmNzRhMGNiN2IxKTsKICAgICAgICBnZW9fanNvbl81YjE1ZWVkNzgxZmY0ZDVhOTc0YTdiZDJiNTI0YWI0OS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8zZDA4MzFiMDgzZGI0YzZhODkxNDczNjJlNDE3NjFkYiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU5NjQyNjc2OTIxOTEwNDUsIDUxLjUyMDYwNTE4OTYxMTA3NV0sIFstMi41ODQwMDY1NzEwODk2OTgsIDUxLjUyMDEwMjM2MzEzMjE2XSwgWy0yLjU3NzQyODU4MTcwMjA4MjgsIDUxLjUwOTY4MDQzOTMyMDYwNF0sIFstMi41ODMyNzA3NjI3NjQ4NDU3LCA1MS40OTk3NTkzNzQ1NjY4N10sIFstMi41OTU2OTI3MTA3NjA2OTEzLCA1MS41MDAyNjEyMzM0NjI1Nl0sIFstMi42MDIyNzA3Mjc4NDM1ODA0LCA1MS41MTA2ODUxMjQ4NzEzN11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uXzNkMDgzMWIwODNkYjRjNmE4OTE0NzM2MmU0MTc2MWRiLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzQxMjQxZDBjODgxYjQwNTA5YTZmMTNlOTI3ZjYwNWNhID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNDgyNDMxMDI3OTA2OTY0LCA1MS40NTUwNTg1MjY1NzY3MV0sIFstMi40NzAwMTQ4NTk4NDQ3ODM4LCA1MS40NTQ1NTkwNjQ0MjM4NF0sIFstMi40NjM0MzAyMzc1NjAyNDE1LCA1MS40NDQxMzQ1MTczMTQ5N10sIFstMi40NjkyNjE3NDY0MzY2MjA0LCA1MS40MzQyMDc0NjgxMTU1MV0sIFstMi40ODE2Nzk2NTcwNzk4MTE2LCA1MS40MzQ3MDU5NjEzOTQxOF0sIFstMi40ODgyNjQzMTYyODM4NzI1LCA1MS40NDUxMzI0NzI5MjIyMV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uXzQxMjQxZDBjODgxYjQwNTA5YTZmMTNlOTI3ZjYwNWNhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2ZkNDNhNTRlZjliMzQ1OGI5YTY2OTBhZjdhZWM4ZTZiID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjcwMjQ1ODc5MDY3NDU3NSwgNTEuNTAzMjczNDYzNzc5MDI0XSwgWy0yLjY1NzgxNzc5OTA2MDk0NzMsIDUxLjUwMjc3MTI5NzE0NjYyXSwgWy0yLjY1MTI0MDg0ODkzNTA4MTQsIDUxLjQ5MjM0MzkwODQzMDA2XSwgWy0yLjY1NzA5MTk1NDU3OTEzOSwgNTEuNDgyNDE2NzE3OTYzODldLCBbLTIuNjY5NTIxNzg1OTYxMjMyLCA1MS40ODI5MTc5MTU3ODQ5Ml0sIFstMi42NzYwOTg3NjAzMzk2NjMzLCA1MS40OTMzNDcyNzMwNTk4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fZmQ0M2E1NGVmOWIzNDU4YjlhNjY5MGFmN2FlYzhlNmIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNTA5MjAwYTA5MTU1NGZiZDkzMzk3ZDM0N2Q3MTVmMDkgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42NDkwNTgyNTIxNTgxODg3LCA1MS40MzEyNTU2MTYyMzU4NV0sIFstMi42MzY2MjU1Nzg5NjU4MTEzLCA1MS40MzA3NTY5MTk5ODc1OF0sIFstMi42MzAwNDQwNzU0NDM5MzgsIDUxLjQyMDMyMTg4Mjg4MzM4NV0sIFstMi42MzU4OTUyMTY2MTMxNDUzLCA1MS40MTAzODM1NzUzNDYxN10sIFstMi42NDgzMjk2MzY2MjgxNTUsIDUxLjQxMDg4MTMwMDQ3NzQzNV0sIFstMi42NTQ5MTExNjg2Njg3MTE3LCA1MS40MjEzMTgzMDQ0Mzg5M11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uXzUwOTIwMGEwOTE1NTRmYmQ5MzM5N2QzNDdkNzE1ZjA5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzlkNTAyMjNmZWI1YzQ2ZGJiMjU5ZWY4NWQ2MzgwZGFjID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTU5MTY5MjUxNTMzOTY3NywgNTEuNTE5MDk2ODY0MjE4NDU0XSwgWy0yLjU0Njc1MjEzMjE5MjYxLCA1MS41MTg1OTQxOTE3NjgwNV0sIFstMi41NDAxNzMwNTk3OTk5OTksIDUxLjUwODE3Mzc5NTc0NDA4NV0sIFstMi41NDYwMTEwNzY4OTc2OTY3LCA1MS40OTgyNTQxMDU0MjE5N10sIFstMi41NTg0Mjk5NDQ3OTA0NjkzLCA1MS40OTg3NTU4MTA1NTQzNV0sIFstMi41NjUwMDkwNDcwNTA2ODksIDUxLjUwOTE3ODE3MzUwMjkyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fOWQ1MDIyM2ZlYjVjNDZkYmIyNTllZjg1ZDYzODBkYWMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMjc0ZjkyZGIzNGFiNDhiNzgyYmE5Nzg1OGRiNzNkNDcgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42ODU2MzkwMjM2OTgwMjYsIDUxLjQxMjM3NDc4MTMzNDY0XSwgWy0yLjY3MzIwMTU0MTIxOTQzNDgsIDUxLjQxMTg3NjkwMzQ2MzkzNF0sIFstMi42NjY2MTk5ODEyOTE3NzE3LCA1MS40MDE0Mzc5MzI1MDU0OTVdLCBbLTIuNjcyNDc1ODc2NjA0NTEwMiwgNTEuMzkxNDk0ODcyNDU3NjhdLCBbLTIuNjg0OTE1MTA2MDkxMjQyLCA1MS4zOTE5OTE3NzgyNDc4XSwgWy0yLjY5MTQ5NjY5MzI3NDUzNzcsIDUxLjQwMjQzMjcxNjM0MjM1NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uXzI3NGY5MmRiMzRhYjQ4Yjc4MmJhOTc4NThkYjczZDQ3LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzQxMGZjZmYzNGUyZTRhNDBiMGJiYjdlODg4YjM2MTgzID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjg3ODA3NTA2MDA2NjUzLCA1MS40NzM0ODkxMzkxNDI1MV0sIFstMi42NzUzNzUyNzEyNTc1MTEsIDUxLjQ3Mjk4ODM0OTIxMDExXSwgWy0yLjY2ODc5NzE0OTczMTY5MSwgNTEuNDYyNTU2NTg1OTc1NTg0XSwgWy0yLjY3NDY1MTIzODQ0NDcwNjUsIDUxLjQ1MjYyMzY0NDUzNjI3NF0sIFstMi42ODcwODUyMjM1NTI2NzYsIDUxLjQ1MzEyMzQ2NDQ3ODM4XSwgWy0yLjY5MzY2MzM2OTYwNTE3MzUsIDUxLjQ2MzU1NzE5NjAyNjMxNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uXzQxMGZjZmYzNGUyZTRhNDBiMGJiYjdlODg4YjM2MTgzLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2MzZjk3OWJhOTYxODQ0YmQ5OGMzZTcyMTQxMTE4NGFiID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjQ5Nzg2MzI1OTg3MzU4NiwgNTEuNDUxNjI0MTU3OTQwODNdLCBbLTIuNjM3MzU1NDAwNzM0MDksIDUxLjQ1MTEyNDQ5MTI3MTk0XSwgWy0yLjYzMDc3NTA0MTAxOTY1NjQsIDUxLjQ0MDY5MTg1NTgzMjEzXSwgWy0yLjYzNjYyNTU3ODk2NTgxMTMsIDUxLjQzMDc1NjkxOTk4NzU4XSwgWy0yLjY0OTA1ODI1MjE1ODE4ODcsIDUxLjQzMTI1NTYxNjIzNTg1XSwgWy0yLjY1NTYzODYzOTQ4MjMzOCwgNTEuNDQxNjkwMjE4OTI1MzZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNTYwODQ3MDAzMTQ0ZjdiMGJiODBmNzRhMGNiN2IxKTsKICAgICAgICBnZW9fanNvbl9jM2Y5NzliYTk2MTg0NGJkOThjM2U3MjE0MTExODRhYi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9kZGIzZGE1Y2ZhN2E0NzFhOTI2ZjA1YWM1OTJmOGExYiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjUyMDQzMTM0NzcyMzgwMywgNTEuNDc2OTA2OTIwNzYzNjVdLCBbLTIuNTA4MDEzODIzMTg4MTMzMywgNTEuNDc2NDA2MzM3MDczNjJdLCBbLTIuNTAxNDMxNDAwMDQwNzIzNCwgNTEuNDY1OTgyNjYxMzIzNjRdLCBbLTIuNTA3MjY2NDY3NTk5MzQ2LCA1MS40NTYwNTc2MDM5NTkzOTRdLCBbLTIuNTE5Njg1NzM3MTQ4OTYzNiwgNTEuNDU2NTU3MjE5MjA0NjldLCBbLTIuNTI2MjY4MTk0MTQzNTkyMywgNTEuNDY2OTgyODYwNDM0ODI1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fZGRiM2RhNWNmYTdhNDcxYTkyNmYwNWFjNTkyZjhhMWIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYThiYzBlZTMwZTNkNGVkY2IzZGUzNmQ2N2IyYWNhZDIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NzU5NTQxNDYwOTY5MzIsIDUxLjQ2ODk4Mzg3MTg1MjkzXSwgWy0yLjU2MzUzMTExNTI0NTY2NCwgNTEuNDY4NDgzNTQyMzI5NTRdLCBbLTIuNTU2OTQ5NzMyMTE2MTc4LCA1MS40NTgwNTYzNzEyNDkyNTZdLCBbLTIuNTYyNzkxMzQ4ODA5MywgNTEuNDQ4MTI3NTYzNTc0MDVdLCBbLTIuNTc1MjE2MTI2MDkzNTA0LCA1MS40NDg2MjY5MjM5MDU4Nl0sIFstMi41ODE3OTc1NDAyNjg5MzI2LCA1MS40NTkwNTYwNjEyODA0Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uX2E4YmMwZWUzMGUzZDRlZGNiM2RlMzZkNjdiMmFjYWQyLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzg2MDE1M2E5MzBmZDQ1MDg5Yzc4Y2E5YjMxODM2YTUyID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTM3MjAxMDkwNjc1MjMxNCwgNTEuNDI2NzY5MTg0ODcxNjJdLCBbLTIuNTI0Nzc3NjU3NDcxMzExLCA1MS40MjYyNzA5NDcyMjQ4Ml0sIFstMi41MTgxOTI5MjYzMTkyNTk1LCA1MS40MTU4NDA1MDY0MzcyODRdLCBbLTIuNTI0MDMxNTkzMzYwNzc5LCA1MS40MDU5MDYzMzg2MzI4Ml0sIFstMi41MzY0NTY3Njk0NTM0NzA1LCA1MS40MDY0MDM2MDU5NjMxODVdLCBbLTIuNTQzMDQxNTM1NjM0MTk1LCA1MS40MTY4MzYwMTE1OTAxN11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uXzg2MDE1M2E5MzBmZDQ1MDg5Yzc4Y2E5YjMxODM2YTUyLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzRiN2ZkYzY3ZGI1OTRmNTdiN2Q3YjI3OGNmNTY1OWFhID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTc4MTY0OTk3NDgwMzk1MywgNTEuNTMwMDIwMDUzNDk3MjVdLCBbLTIuNTY1NzQ3MjEyNTkyMjg5LCA1MS41Mjk1MTY4MjA1NzczNl0sIFstMi41NTkxNjkyNTE1MzM5Njc3LCA1MS41MTkwOTY4NjQyMTg0NTRdLCBbLTIuNTY1MDA5MDQ3MDUwNjg5LCA1MS41MDkxNzgxNzM1MDI5Ml0sIFstMi41Nzc0Mjg1ODE3MDIwODI4LCA1MS41MDk2ODA0MzkzMjA2MDRdLCBbLTIuNTg0MDA2NTcxMDg5Njk4LCA1MS41MjAxMDIzNjMxMzIxNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uXzRiN2ZkYzY3ZGI1OTRmNTdiN2Q3YjI3OGNmNTY1OWFhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2FiYTYwMGM0OWMwODRlZDA5NGZiNjVkODJjYzBjYmRiID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTM3OTQ0ODgwMjM5MDU5LCA1MS40NDcxMjg5OTU5ODk4MzZdLCBbLTIuNTI1NTIzMTkxMDM5MDQzNCwgNTEuNDQ2NjI5Nzg4NzIxOTRdLCBbLTIuNTE4OTM5NTk2NzA3MTAzOCwgNTEuNDM2MjAxNzQ2ODY3NF0sIFstMi41MjQ3Nzc2NTc0NzEzMTEsIDUxLjQyNjI3MDk0NzIyNDgyXSwgWy0yLjUzNzIwMTA5MDY3NTIzMTQsIDUxLjQyNjc2OTE4NDg3MTYyXSwgWy0yLjU0Mzc4NDcxOTEyOTAxMzcsIDUxLjQzNzE5OTE5MTk1Nzg2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fYWJhNjAwYzQ5YzA4NGVkMDk0ZmI2NWQ4MmNjMGNiZGIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYmZhZDNkYWI3NGM2NGY3NjhlMGJlZTE0NTNjYWVlMTkgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NzM3Mzg0ODEyNDc2MzQzLCA1MS40MDc4OTU3MTMwMDA0XSwgWy0yLjU2MTMxMDIxNDQ0MDY5MSwgNTEuNDA3Mzk4MjkzMTM5MjY2XSwgWy0yLjU1NDcyNTQxMzg2MTM5OTMsIDUxLjM5Njk2MzkyMjUzMzY0NF0sIFstMi41NjA1Njg4NDYzMzg4NTI3LCA1MS4zODcwMjUwMDY4NDc1MTZdLCBbLTIuNTcyOTk4ODU2MjMxOTU0MywgNTEuMzg3NTIxNDU1NDMwMDldLCBbLTIuNTc5NTgzNjkwNTc5ODIxLCA1MS4zOTc5NTc3OTExNTMwOV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uX2JmYWQzZGFiNzRjNjRmNzY4ZTBiZWUxNDUzY2FlZTE5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzFmODZlODljMTdlMTQ5M2E5MjNiYWU2NDM5NGUyMzgxID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTk3MTYwMjkxNDA3MzQ4LCA1MS41NDA5NDMzNjI3ODg0N10sIFstMi41ODQ3NDE4NDQyNTE5ODgsIDUxLjU0MDQzOTU2OTQyMzM4XSwgWy0yLjU3ODE2NDk5NzQ4MDM5NTMsIDUxLjUzMDAyMDA1MzQ5NzI1XSwgWy0yLjU4NDAwNjU3MTA4OTY5OCwgNTEuNTIwMTAyMzYzMTMyMTZdLCBbLTIuNTk2NDI2NzY5MjE5MTA0NSwgNTEuNTIwNjA1MTg5NjExMDc1XSwgWy0yLjYwMzAwMzY0Mjc4MTA2NCwgNTEuNTMxMDI2NjczNTE3NDldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNTYwODQ3MDAzMTQ0ZjdiMGJiODBmNzRhMGNiN2IxKTsKICAgICAgICBnZW9fanNvbl8xZjg2ZTg5YzE3ZTE0OTNhOTIzYmFlNjQzOTRlMjM4MS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wM2QyN2Q4NWE0ZWU0MjlhOTkyNzdkOTQwYzMxYjZlNCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjYzMjk2NDY5ODI1NjUzNCwgNTEuNTAxNzY3MTE3ODAwNzZdLCBbLTIuNjIwNTM5Njc5NTUxMDg5NiwgNTEuNTAxMjY1MTA1MDcxNzI0XSwgWy0yLjYxMzk2MTYzNTQwNjgzNywgNTEuNDkwODM5MjQ1OTIxNTZdLCBbLTIuNjE5ODA4NTgzNTU2Nzc5LCA1MS40ODA5MTM0MzE3OTE1OV0sIFstMi42MzIyMzUzNTIzMzAyOTMsIDUxLjQ4MTQxNDQ3NTk3NTAxXSwgWy0yLjYzODgxMzQyMjkwMjA4NiwgNTEuNDkxODQyMzAzMDEwMTk1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fMDNkMjdkODVhNGVlNDI5YTk5Mjc3ZDk0MGMzMWI2ZTQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fOWM4YmY4MjQwMmM0NGRmMjgyOWE0MGZhNzljYjE4MGUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41MDI5MjY3OTk2Nzc3MzQsIDUxLjUwNjY2NzYxMzY4MDM4NV0sIFstMi40OTA1MTM0NDI2NjY5ODIsIDUxLjUwNjE2NTY1NTUxNDYzXSwgWy0yLjQ4MzkzMjE5MDA0Mjc3NiwgNTEuNDk1NzQ2MzQ4MTg4MDZdLCBbLTIuNDg5NzY0MjYwODcxNzg5NiwgNTEuNDg1ODI3MDMzNDc5MTU0XSwgWy0yLjUwMjE3OTM2MzkwMDg5NSwgNTEuNDg2MzI4MDI0Mzc2NTRdLCBbLTIuNTA4NzYwNjUwMDk5ODM1NCwgNTEuNDk2NzQ5Mjk3NDI3MTE1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fOWM4YmY4MjQwMmM0NGRmMjgyOWE0MGZhNzljYjE4MGUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMWM3NzhkZTFmMzE1NDY4OWJkMGZiMGUzYzU0YmFmMzQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41Mzg2ODgxMzgyMjYzNzEsIDUxLjQ2NzQ4MzAzNjYyODIzXSwgWy0yLjUyNjI2ODE5NDE0MzU5MjMsIDUxLjQ2Njk4Mjg2MDQzNDgyNV0sIFstMi41MTk2ODU3MzcxNDg5NjM2LCA1MS40NTY1NTcyMTkyMDQ2OV0sIFstMi41MjU1MjMxOTEwMzkwNDM0LCA1MS40NDY2Mjk3ODg3MjE5NF0sIFstMi41Mzc5NDQ4ODAyMzkwNTksIDUxLjQ0NzEyODk5NTk4OTgzNl0sIFstMi41NDQ1MjczNzA0NDkzNTUsIDUxLjQ1NzU1NjYwMjg0MTg2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fMWM3NzhkZTFmMzE1NDY4OWJkMGZiMGUzYzU0YmFmMzQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMDdlMGY4YmU2NWFhNDhjMDkyM2ZhZDM1ZWM1ZTk1YWEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42MTMyMjkzOTU0OTM5Mjc0LCA1MS40NzA0ODUxNjcyMDcxMTZdLCBbLTIuNjAwODAzMjg3MjY1MzY2NiwgNTEuNDY5OTg0Njg0MjgzOTZdLCBbLTIuNTk0MjIyOTg0NjY3NTUzLCA1MS40NTk1NTU5ODI5MTk2NzRdLCBbLTIuNjAwMDY4NzYxNDQwNzUwNywgNTEuNDQ5NjI1Nzk3Njg3NjQ1XSwgWy0yLjYxMjQ5NjYxNzQxNDQwMzgsIDUxLjQ1MDEyNTMxMTE1MzFdLCBbLTIuNjE5MDc2OTQ4ODg2NzUxLCA1MS40NjA1NTU5Nzk0ODQzNTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNTYwODQ3MDAzMTQ0ZjdiMGJiODBmNzRhMGNiN2IxKTsKICAgICAgICBnZW9fanNvbl8wN2UwZjhiZTY1YWE0OGMwOTIzZmFkMzVlYzVlOTVhYS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9mYTNiMzA2OGI4N2Y0MzUyODdlY2Q4YjQ3NjMwNjQ1YSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU0MTY1NTg1NjA1ODc3MTQsIDUxLjU0ODg0MTQ0MDg0OTM2NV0sIFstMi41MjkyNDI5MDM1NDE4MjIsIDUxLjU0ODMzNzM5NTkxNDcxXSwgWy0yLjUyMjY2NTAwMTA0NDQ4NSwgNTEuNTM3OTIxMzc0MDI1NTg2XSwgWy0yLjUyODUwMDAyMTQ4MjY4NDMsIDUxLjUyODAwNzQzMDA4NTA3XSwgWy0yLjU0MDkxNDcyMzU1MTk3ODIsIDUxLjUyODUxMDUwODg3OTA2Nl0sIFstMi41NDc0OTI2NTU2NDY5MDk3LCA1MS41Mzg5Mjg0OTc5MzAzNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uX2ZhM2IzMDY4Yjg3ZjQzNTI4N2VjZDhiNDc2MzA2NDVhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzcxNzhjNDc4YjEwZDRjZGI5NGIyNTdlMjMzYmFjMmZiID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjg4NTI5MjQzNjE2NzMwMywgNTEuNDkzODQ5MDMyMjg1MjJdLCBbLTIuNjc2MDk4NzYwMzM5NjYzMywgNTEuNDkzMzQ3MjczMDU5OF0sIFstMi42Njk1MjE3ODU5NjEyMzIsIDUxLjQ4MjkxNzkxNTc4NDkyXSwgWy0yLjY3NTM3NTI3MTI1NzUxMSwgNTEuNDcyOTg4MzQ5MjEwMTFdLCBbLTIuNjg3ODA3NTA2MDA2NjUzLCA1MS40NzM0ODkxMzkxNDI1MV0sIFstMi42OTQzODQ1MDQwMDM0NDcsIDUxLjQ4MzkyMDQ2NTExOTA1Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uXzcxNzhjNDc4YjEwZDRjZGI5NGIyNTdlMjMzYmFjMmZiLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzk0ZDE2ZGMwOGE4MDQ5ZDNiY2UwNzllMjRjZWI1MjZiID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNzA1Mzc4MDc2MzM3MDM3LCA1MS40NDM2ODc1NTc2ODY5NV0sIFstMi42OTI5NDE2ODk3NTM4NTQzLCA1MS40NDMxODgxNDY0MDUyOF0sIFstMi42ODYzNjIzOTYxNTA5MTgsIDUxLjQzMjc1MjAxMDk3ODE4NF0sIFstMi42OTIyMTk0NjQzNDQ5NzIsIDUxLjQyMjgxMzMxODk0NTExXSwgWy0yLjcwNDY1NzYwMDI2NDU3NjQsIDUxLjQyMzMxMTc1OTA1NzU4XSwgWy0yLjcxMTIzNjkxODY3MDQ1NzUsIDUxLjQzMzc0OTg2MjU0ODUyNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uXzk0ZDE2ZGMwOGE4MDQ5ZDNiY2UwNzllMjRjZWI1MjZiLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2FlYzA5ODEwOGE3NjQ4OTZhMmVhYjczODRhN2MzZGE5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTIyNjY1MDAxMDQ0NDg1LCA1MS41Mzc5MjEzNzQwMjU1ODZdLCBbLTIuNTEwMjUyNzE4MjA1NjUxOCwgNTEuNTM3NDE3ODg5MTc2OThdLCBbLTIuNTAzNjczNzA3NDQ4ODg0NCwgNTEuNTI3MDAxNDI2NTY4NDddLCBbLTIuNTA5NTA2OTQ4NDEyNzI2NiwgNTEuNTE3MDg2NDgyMzQ5MzA2XSwgWy0yLjUyMTkyMDk3OTU5MTE4NiwgNTEuNTE3NTg5MDAwODQxMjddLCBbLTIuNTI4NTAwMDIxNDgyNjg0MywgNTEuNTI4MDA3NDMwMDg1MDddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNTYwODQ3MDAzMTQ0ZjdiMGJiODBmNzRhMGNiN2IxKTsKICAgICAgICBnZW9fanNvbl9hZWMwOTgxMDhhNzY0ODk2YTJlYWI3Mzg0YTdjM2RhOS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl82ZWQ1M2UyMzA2MjA0NDM4OWNkMDhmNmFiZDAyMzIzNSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjUxODkzOTU5NjcwNzEwMzgsIDUxLjQzNjIwMTc0Njg2NzRdLCBbLTIuNTA2NTE4NTgzMjU1NzQxMywgNTEuNDM1NzAzMTAwNzYyMzhdLCBbLTIuNDk5OTMzODg3NzYyNTUsIDUxLjQyNTI3NDYyNDY3NDYzNl0sIFstMi41MDU3NzAxNzAwODAxNjQyLCA1MS40MTUzNDI4MzAxNjc4MTZdLCBbLTIuNTE4MTkyOTI2MzE5MjU5NSwgNTEuNDE1ODQwNTA2NDM3Mjg0XSwgWy0yLjUyNDc3NzY1NzQ3MTMxMSwgNTEuNDI2MjcwOTQ3MjI0ODJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNTYwODQ3MDAzMTQ0ZjdiMGJiODBmNzRhMGNiN2IxKTsKICAgICAgICBnZW9fanNvbl82ZWQ1M2UyMzA2MjA0NDM4OWNkMDhmNmFiZDAyMzIzNS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl85MzhmMDBkZGYyM2E0ODlhYmU5MjVhNTcxMWE0ZjYyOCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU2MDY0NjI2NjI2NDI0NzMsIDUxLjU1OTc2MTYyNjI0ODQ0XSwgWy0yLjU0ODIzMjY0NzM0NTQzNjQsIDUxLjU1OTI1NzAyMTI1MjIxNV0sIFstMi41NDE2NTU4NTYwNTg3NzE0LCA1MS41NDg4NDE0NDA4NDkzNjVdLCBbLTIuNTQ3NDkyNjU1NjQ2OTA5NywgNTEuNTM4OTI4NDk3OTMwMzVdLCBbLTIuNTU5OTA4MDI1MzI5NjY3LCA1MS41Mzk0MzIxMzcwMDIxMTZdLCBbLTIuNTY2NDg0ODQ0Njc2MTg0LCA1MS41NDk4NDk2ODUwOTM1NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uXzkzOGYwMGRkZjIzYTQ4OWFiZTkyNWE1NzExYTRmNjI4LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2ZmZmQwOWFkNGYzMjQyMWZhMzI4OTU3NDZjNTVhODg5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNDg0NjgxOTgxNTAwMTY5NywgNTEuNTE2MDgxNTk5MjY5Mzg0XSwgWy0yLjQ3MjI3MTA0Nzg0NDMyMTUsIDUxLjUxNTU3OTIzNDY2NTg1XSwgWy0yLjQ2NTY4OTgyOTQyNzI2NSwgNTEuNTA1MTYxODkyOTE5NjFdLCBbLTIuNDcxNTE5NTEwNDc2MDgxLCA1MS40OTUyNDQ5NTAzNzI0NzRdLCBbLTIuNDgzOTMyMTkwMDQyNzc2LCA1MS40OTU3NDYzNDgxODgwNl0sIFstMi40OTA1MTM0NDI2NjY5ODIsIDUxLjUwNjE2NTY1NTUxNDYzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fZmZmZDA5YWQ0ZjMyNDIxZmEzMjg5NTc0NmM1NWE4ODkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMDYzZGJmOTA0NDU3NDU1NjhhMDEwMGNjNDJlZWFlNTQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42NjgwNzE5NzAyNzc0MjYsIDUxLjQ0MjE4OTQ3NzAzMjIzXSwgWy0yLjY1NTYzODYzOTQ4MjMzOCwgNTEuNDQxNjkwMjE4OTI1MzZdLCBbLTIuNjQ5MDU4MjUyMTU4MTg4NywgNTEuNDMxMjU1NjE2MjM1ODVdLCBbLTIuNjU0OTExMTY4NjY4NzExNywgNTEuNDIxMzE4MzA0NDM4OTNdLCBbLTIuNjY3MzQ2MjQ3NDk3NTU5NiwgNTEuNDIxODE2NTkxNjQzNTM0XSwgWy0yLjY3MzkyNjY2MTc5OTE4MjQsIDUxLjQzMjI1MzE2MTcyMzQxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fMDYzZGJmOTA0NDU3NDU1NjhhMDEwMGNjNDJlZWFlNTQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMDhhMDhlODQ5NmM3NGY5N2FjMmJjYzY3NmUxMmVjNmMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41MjExNzY0Mjg1MTExNzk1LCA1MS40OTcyNTA4NDg4NjYxMl0sIFstMi41MDg3NjA2NTAwOTk4MzU0LCA1MS40OTY3NDkyOTc0MjcxMTVdLCBbLTIuNTAyMTc5MzYzOTAwODk1LCA1MS40ODYzMjgwMjQzNzY1NF0sIFstMi41MDgwMTM4MjMxODgxMzMzLCA1MS40NzY0MDYzMzcwNzM2Ml0sIFstMi41MjA0MzEzNDc3MjM4MDMsIDUxLjQ3NjkwNjkyMDc2MzY1XSwgWy0yLjUyNzAxMjY2Njg2NTEzNSwgNTEuNDg3MzMwMTU5NjgxNTA1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fMDhhMDhlODQ5NmM3NGY5N2FjMmJjYzY3NmUxMmVjNmMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZTFmZmM0ZjYzMDhkNDYwYjk1ZjkzNTRiYzdmYzAzMzYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42NTEyNDA4NDg5MzUwODE0LCA1MS40OTIzNDM5MDg0MzAwNl0sIFstMi42Mzg4MTM0MjI5MDIwODYsIDUxLjQ5MTg0MjMwMzAxMDE5NV0sIFstMi42MzIyMzUzNTIzMzAyOTMsIDUxLjQ4MTQxNDQ3NTk3NTAxXSwgWy0yLjYzODA4NDY4MjAxMzk4MDUsIDUxLjQ3MTQ4NjI4NjUwNzZdLCBbLTIuNjUwNTEzODU4MjEzNTIxMywgNTEuNDcxOTg2OTIyOTAwNDJdLCBbLTIuNjU3MDkxOTU0NTc5MTM5LCA1MS40ODI0MTY3MTc5NjM4OV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzE1NjA4NDcwMDMxNDRmN2IwYmI4MGY3NGEwY2I3YjEpOwogICAgICAgIGdlb19qc29uX2UxZmZjNGY2MzA4ZDQ2MGI5NWY5MzU0YmM3ZmMwMzM2LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2I3ZTRkYWNhYTk0ZDQ4NjA5N2Y3ZTQ4ODA3ZTY0ZWQ5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjg2MzYyMzk2MTUwOTE4LCA1MS40MzI3NTIwMTA5NzgxODRdLCBbLTIuNjczOTI2NjYxNzk5MTgyNCwgNTEuNDMyMjUzMTYxNzIzNDFdLCBbLTIuNjY3MzQ2MjQ3NDk3NTU5NiwgNTEuNDIxODE2NTkxNjQzNTM0XSwgWy0yLjY3MzIwMTU0MTIxOTQzNDgsIDUxLjQxMTg3NjkwMzQ2MzkzNF0sIFstMi42ODU2MzkwMjM2OTgwMjYsIDUxLjQxMjM3NDc4MTMzNDY0XSwgWy0yLjY5MjIxOTQ2NDM0NDk3MiwgNTEuNDIyODEzMzE4OTQ1MTFdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzMxNTYwODQ3MDAzMTQ0ZjdiMGJiODBmNzRhMGNiN2IxKTsKICAgICAgICBnZW9fanNvbl9iN2U0ZGFjYWE5NGQ0ODYwOTdmN2U0ODgwN2U2NGVkOS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl84NWNmZmM3MjY1MWU0MWE3YmRmYmMwNmZjMGFiN2Y3ZSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU3NzQyODU4MTcwMjA4MjgsIDUxLjUwOTY4MDQzOTMyMDYwNF0sIFstMi41NjUwMDkwNDcwNTA2ODksIDUxLjUwOTE3ODE3MzUwMjkyXSwgWy0yLjU1ODQyOTk0NDc5MDQ2OTMsIDUxLjQ5ODc1NTgxMDU1NDM1XSwgWy0yLjU2NDI3MDM0Nzk2NDA1NywgNTEuNDg4ODMzNzQ2NTMwOTddLCBbLTIuNTc2NjkxNjMxMjcwNDU3NSwgNTEuNDg5MzM1MDQ0NTQ5NzA1XSwgWy0yLjU4MzI3MDc2Mjc2NDg0NTcsIDUxLjQ5OTc1OTM3NDU2Njg3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF8zMTU2MDg0NzAwMzE0NGY3YjBiYjgwZjc0YTBjYjdiMSk7CiAgICAgICAgZ2VvX2pzb25fODVjZmZjNzI2NTFlNDFhN2JkZmJjMDZmYzBhYjdmN2Uuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCjwvc2NyaXB0Pg==\" 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 0x7ffa675a77b8>"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m = folium.Map(location=[51.460555, -2.597576], zoom_start=11, )\n",
"\n",
"folium.GeoJson(\n",
" bristol_geojson,\n",
" name='bristol'\n",
").add_to(m)\n",
"\n",
"for boundary in hexagons_boundary:\n",
" folium.GeoJson(\n",
" {\"type\":\"Polygon\",\"coordinates\": [boundary]}\n",
" ).add_to(m)\n",
"\n",
"m"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [],
"source": [
"hexagons = list(h3.polyfill(bristol_geojson, 8))\n",
"hexagons_boundary = [h3.h3_to_geo_boundary(h3_ix) for h3_ix in hexagons]"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVM9ZmFsc2U7IExfTk9fVE9VQ0g9ZmFsc2U7IExfRElTQUJMRV8zRD1mYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgPHN0eWxlPiNtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMTAwLjAlOwogICAgICAgIGhlaWdodDogMTAwLjAlOwogICAgICAgIGxlZnQ6IDAuMCU7CiAgICAgICAgdG9wOiAwLjAlOwogICAgICAgIH0KICAgIDwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3IiA+PC9kaXY+CjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKICAgIAogICAgICAgIHZhciBib3VuZHMgPSBudWxsOwogICAgCgogICAgdmFyIG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyA9IEwubWFwKAogICAgICAgICdtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcnLCB7CiAgICAgICAgY2VudGVyOiBbNTEuNDYwNTU1LCAtMi41OTc1NzZdLAogICAgICAgIHpvb206IDExLAogICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgIGxheWVyczogW10sCiAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NywKICAgICAgICB6b29tQ29udHJvbDogdHJ1ZSwKICAgICAgICB9KTsKCiAgICAKICAgIAogICAgdmFyIHRpbGVfbGF5ZXJfNzk0ZGExMDNmZTFjNGExYjlkNzhhOThkMTkwOWZlZDEgPSBMLnRpbGVMYXllcigKICAgICAgICAnaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLAogICAgICAgIHsKICAgICAgICAiYXR0cmlidXRpb24iOiBudWxsLAogICAgICAgICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAgICAgICAibWF4TmF0aXZlWm9vbSI6IDE4LAogICAgICAgICJtYXhab29tIjogMTgsCiAgICAgICAgIm1pblpvb20iOiAwLAogICAgICAgICJub1dyYXAiOiBmYWxzZSwKICAgICAgICAic3ViZG9tYWlucyI6ICJhYmMiCn0pLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYjE4NzJkZTM3ZjQ3NGEyYmJhYjYxNjQyNDJmY2RiNGIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NTIyNjEzNTI1MzkwNjI1LCA1MS41NTY1ODIxODU3NjI1M10sIFstMi43MDgxMjk4ODI4MTI0OTk2LCA1MS40OTA3ODk1OTgwMzQ1NV0sIFstMi42OTU3NzAyNjM2NzE4NzUsIDUxLjM5NzQ5MjA1NTIwNjgxXSwgWy0yLjQ5MzIwOTgzODg2NzE4NzUsIDUxLjM5NzA2MzY0NTU4OTM0XSwgWy0yLjQ1MjAxMTEwODM5ODQzNzUsIDUxLjUwNDA0MTIwMjYwNjc2XSwgWy0yLjU1MjI2MTM1MjUzOTA2MjUsIDUxLjU1NjU4MjE4NTc2MjUzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fYjE4NzJkZTM3ZjQ3NGEyYmJhYjYxNjQyNDJmY2RiNGIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMTQxZDE0YTViYjRhNDBlODkxZGVmYjNkOWFiMjUxNjMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NzA4MTA5NzA4Mjc4MTg0LCA1MS40MDA1MTMzMzQ0MTQ1MV0sIFstMi41NjY0MjQ5MzcwNDM3MTg3LCA1MS40MDE3OTA5OTczMTIxMjZdLCBbLTIuNTYyNzY4MDYxMDcwMzg1LCA1MS4zOTg3Mzg1ODgwODYxMjVdLCBbLTIuNTYzNDk3MDM1NTExMzE2NSwgNTEuMzk0NDA4Mjk0MjM0NTNdLCBbLTIuNTY3ODgzMTcyNTY5MjA1NywgNTEuMzkzMTMwMzcxMzQ4N10sIFstMi41NzE1NDAyMzE5MjE3MjIsIDUxLjM5NjE4MzAwMjMwMDE0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fMTQxZDE0YTViYjRhNDBlODkxZGVmYjNkOWFiMjUxNjMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYmJlYWNhODMwMGU0NGIzNWEyNTAyZWRkNmEyOWFlZDEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41OTc4ODI3NTMxMTQ1MiwgNTEuNDg3Mjg3MzM3OTAxNDFdLCBbLTIuNTkzNDk4MjM4NDI5MTYyLCA1MS40ODg1NjE5MDIwMjAxNDVdLCBbLTIuNTg5ODQzNzAxOTY4Mjc1LCA1MS40ODU1MTE1MDQ4MjMxOV0sIFstMi41OTA1NzM0OTcxMDk1NTMsIDUxLjQ4MTE4NjMyMTE1ODEzNF0sIFstMi41OTQ5NTgxMTU5NDA1MTgsIDUxLjQ3OTkxMTQ5NzAwNzk3XSwgWy0yLjU5ODYxMjgzNTQ5Mzg4MjIsIDUxLjQ4Mjk2MjExNjU1MTgzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fYmJlYWNhODMwMGU0NGIzNWEyNTAyZWRkNmEyOWFlZDEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fODNhYTZmZTkxNWQ2NDJmYjllNTRlOTVhNWQ5OGU3ZDEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42Nzk3NjM1ODQzMDAxMTkzLCA1MS40NzE3MTI3NDIwNjIwM10sIFstMi42NzUzNzUyNzEyNTc1MTEsIDUxLjQ3Mjk4ODM0OTIxMDExXSwgWy0yLjY3MTcxOTkxOTc4NzkzMiwgNTEuNDY5OTM2NDI1NjkxOThdLCBbLTIuNjcyNDUyNjk4NzM1OTcsIDUxLjQ2NTYwODY3MjYxNzk1XSwgWy0yLjY3Njg0MTExNjQ0MzU0NCwgNTEuNDY0MzMyODA1MjQ3MzldLCBbLTIuNjgwNDk2NjUwNTQ3MzY2NCwgNTEuNDY3Mzg0OTUxMTcwODZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl84M2FhNmZlOTE1ZDY0MmZiOWU1NGU5NWE1ZDk4ZTdkMS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9mYzVhYWQ2MWNhODQ0YmY0YTIyZmU5NjFlMmNkYWM0MyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU1OTg3NjE0NzA3NjQ2NiwgNTEuNDY1NDMyOTk2NDg3MzVdLCBbLTIuNTU1NDkyNTIwODg1NjE2NSwgNTEuNDY2NzA4MTY2Mzg5NzM2XSwgWy0yLjU1MTgzNzU0MDEzNzU2MDQsIDUxLjQ2MzY1NzY3OTc2Mjg1XSwgWy0yLjU1MjU2NjAwMjI0MjIzLCA1MS40NTkzMzE4MDExMDEyMzZdLCBbLTIuNTU2OTQ5NzMyMTE2MTc4LCA1MS40NTgwNTYzNzEyNDkyNTZdLCBbLTIuNTYwNjA0ODk2MjExNjY4LCA1MS40NjExMDcwODAwMDYwMV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2ZjNWFhZDYxY2E4NDRiZjRhMjJmZTk2MWUyY2RhYzQzLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2M0MWUzYWQ1MzY5NjQwYmRhZTkzOTc5M2U2OWE4Njc4ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNDU3NjU3ODY0OTIyOTExNywgNTEuNTAzMzg2OTEzNzY1NzddLCBbLTIuNDUzMjc5NTc1Mjc1MjQxNCwgNTEuNTA0NjYwMDg4NDc0ODVdLCBbLTIuNDQ5NjI2MTY1NjMyODQ3MywgNTEuNTAxNjEyMDE1MTAwMTY0XSwgWy0yLjQ1MDM1MDg2MTc2MDUwNzYsIDUxLjQ5NzI5MDU0NDgzNjUyNF0sIFstMi40NTQ3MjkyNTQ1ODE1NjY0LCA1MS40OTYwMTcxMTA0MjA2OV0sIFstMi40NTgzODI4NDgxMTA5MzQsIDUxLjQ5OTA2NTQwNTk3MjgzNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2M0MWUzYWQ1MzY5NjQwYmRhZTkzOTc5M2U2OWE4Njc4LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2FjZTI1NWMwMWEwMjRiMDc5OGI0NmRjNjA1ODk3NGZhID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjU3MTAzMTY3MzUyNDg5LCA1MS40MzMwMzEzNjU1NDE2NjZdLCBbLTIuNjUyNzE0NjA0NTI4OTE5NCwgNTEuNDM0MzA4Mjk1MTE2MTk2XSwgWy0yLjY0OTA1ODI1MjE1ODE4ODcsIDUxLjQzMTI1NTYxNjIzNTg1XSwgWy0yLjY0OTc5MDI3OTc5NTA0OTcsIDUxLjQyNjkyNTc4NTY3MDg5XSwgWy0yLjY1NDE3ODk0NjgxMjE1MzUsIDUxLjQyNTY0ODU5NTkxNzI0NV0sIFstMi42NTc4MzU0ODIwMDgxMzc0LCA1MS40Mjg3MDE0OTY5MDUxNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2FjZTI1NWMwMWEwMjRiMDc5OGI0NmRjNjA1ODk3NGZhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2VlM2M4MzlhNGM2NTQyNDI4NzhkYWRlNzE3MGNkZTQxID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjExNzYzMzAxMDc1MzUwMywgNTEuNDI5NzU5NjgwNDQzMzRdLCBbLTIuNjA3Mzc2NDgxNzU0NzQyLCA1MS40MzEwMzY0NzgwMDg5NF0sIFstMi42MDM3MjAyNDQwNTkwNDEsIDUxLjQyNzk4NDMxODIyMzczXSwgWy0yLjYwNDQ1MDY0MjU5Njg1NywgNTEuNDIzNjU1MTM4ODcyODQ2XSwgWy0yLjYwODgzNzU2NTczMzEzMjYsIDUxLjQyMjM3ODA4MTIzMTIxNl0sIFstMi42MTI0OTM5ODY1MjUyMjUsIDUxLjQyNTQzMDQ2MzAxMzk3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fZWUzYzgzOWE0YzY1NDI0Mjg3OGRhZGU3MTcwY2RlNDEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMjZhMDdhMzY1NjdmNGMwZmI1YmRiODZmYWQ0YjJjZGUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NjcxNzU4MzQ5MjM1NzA1LCA1MS40NDY4NTE2NTY1ODE1MzZdLCBbLTIuNTYyNzkxMzQ4ODA5MywgNTEuNDQ4MTI3NTYzNTc0MDVdLCBbLTIuNTU5MTM1ODA1NTMyNzI2NywgNTEuNDQ1MDc2NDY5OTM4MzldLCBbLTIuNTU5ODY0NTY1MDQ3NTE0MywgNTEuNDQwNzQ5MjQ3Mjg1MTldLCBbLTIuNTY0MjQ5MTU0NzYwMzg2NSwgNTEuNDM5NDczMDgwMzIyMjZdLCBbLTIuNTY3OTA0ODgxMzY5MTg0NywgNTEuNDQyNTI0Mzk1OTgwNDU2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fMjZhMDdhMzY1NjdmNGMwZmI1YmRiODZmYWQ0YjJjZGUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNDNkZDBkODkzMjRlNDJiYzkzMGFiNTA4ZTE2ZGRhNWYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41ODM5OTM1Mzc1MjQ2NzIsIDUxLjQ3MDc1OTQzMDQ5ODE1XSwgWy0yLjU3OTYwOTA4ODU3ODMxNSwgNTEuNDcyMDM0NTM2MTE0OF0sIFstMi41NzU5NTQxNDYwOTY5MzIsIDUxLjQ2ODk4Mzg3MTg1MjkzXSwgWy0yLjU3NjY4MzQ2OTM3Mjc3LCA1MS40NjQ2NTc4Nzk3NjAxMDRdLCBbLTIuNTgxMDY4MDIyMjMwNzQzLCA1MS40NjMzODI1MTQxMzk5M10sIFstMi41ODQ3MjMxNDc5MTA1NTQ0LCA1MS40NjY0MzM0MDA2MTM2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fNDNkZDBkODkzMjRlNDJiYzkzMGFiNTA4ZTE2ZGRhNWYuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYjM4YmEwNTlkMGYyNDMzMTlhYWZhODcxMTgxNGJhOWMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi40OTcwNzIyOTk2NzkyOTYsIDUxLjQ5MTkyNTA4OTc1Njk0XSwgWy0yLjQ5MjY5MjA0NDk0MjEwMDYsIDUxLjQ5MzE5ODkxNDg1MDE1NF0sIFstMi40ODkwMzgxMTczNzEwMjI1LCA1MS40OTAxNDk5OTc4MDI0Nl0sIFstMi40ODk3NjQyNjA4NzE3ODk2LCA1MS40ODU4MjcwMzM0NzkxNTRdLCBbLTIuNDk0MTQ0NjE5MDAzMzExNiwgNTEuNDg0NTUyOTQ4NTg2MjJdLCBbLTIuNDk3Nzk4NzMwMjQ5MDc4NSwgNTEuNDg3NjAyMDg3ODEzODU1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fYjM4YmEwNTlkMGYyNDMzMTlhYWZhODcxMTgxNGJhOWMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNDQ0ZTU5MjA1MjBiNGRjN2I5YzY3ZDc2NWNmZjJjYWEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42NTE5ODI0ODQxMjQwNjA3LCA1MS40Mzg2Mzc3MDI3OTgwNTRdLCBbLTIuNjQ3NTk0Mjk4NDAxMjY5NywgNTEuNDM5OTE0MzkzNTY1MjI1XSwgWy0yLjY0MzkzODEyODg3NzYwNjMsIDUxLjQzNjg2MTkzNjgxOTIyXSwgWy0yLjY0NDY2OTk2MjIzODk0MTQsIDUxLjQzMjUzMjU2NzE2OTIwNF0sIFstMi42NDkwNTgyNTIxNTgxODg3LCA1MS40MzEyNTU2MTYyMzU4NV0sIFstMi42NTI3MTQ2MDQ1Mjg5MTk0LCA1MS40MzQzMDgyOTUxMTYxOTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl80NDRlNTkyMDUyMGI0ZGM3YjljNjdkNzY1Y2ZmMmNhYS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl84OTM3ZTkzZTg0ZDQ0YzE0YjE0MDM1NWM4NTYwODg3MSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjUzNTc2MTExMzAzNjQ1OSwgNTEuNDYwMTA3Mjg4MjE5OTddLCBbLTIuNTMxMzc4MzEwOTUyMzQ1MywgNTEuNDYxMzgyNTIyMzU2NzJdLCBbLTIuNTI3NzIzMjkzNTI3Njk0NSwgNTEuNDU4MzMyMjEzMzk3NDNdLCBbLTIuNTI4NDUwODk0NzAwMzI1MiwgNTEuNDU0MDA2NDQ4MjUwOTg2XSwgWy0yLjUzMjgzMzgwMDIzOTAwNjMsIDUxLjQ1MjczMDk1NDIxODZdLCBbLTIuNTM2NDg5MDAxMTU5ODE2MiwgNTEuNDU1NzgxNDg1MjI1OF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzg5MzdlOTNlODRkNDRjMTRiMTQwMzU1Yzg1NjA4ODcxLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzdmMjlmODU2MDAwOTQyN2NiMmMwOGFkNjA4YWE0NjYyID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTUwMzkzMzYwNTI1OTA0LCA1MS40OTY5ODAxNzA4MzgxMV0sIFstMi41NDYwMTEwNzY4OTc2OTY3LCA1MS40OTgyNTQxMDU0MjE5N10sIFstMi41NDIzNTcwMzgwNDg3NTEyLCA1MS40OTUyMDQ2MTE2ODg5NF0sIFstMi41NDMwODUwOTk0ODEyMjUsIDUxLjQ5MDg4MDk2MTA1MjQwNV0sIFstMi41NDc0Njc0ODY5NTgzMDIsIDUxLjQ4OTYwNjc2NjU0ODExXSwgWy0yLjU1MTEyMTcwOTE2MzM0ODcsIDUxLjQ5MjY1NjQ4MjU5ODMxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fN2YyOWY4NTYwMDA5NDI3Y2IyYzA4YWQ2MDhhYTQ2NjIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMjE5ZGM1YmJiYzVkNDIyYzk3ZDA3MWVhMzYzMzU0YzkgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41MzI4MzM4MDAyMzkwMDYzLCA1MS40NTI3MzA5NTQyMTg2XSwgWy0yLjUyODQ1MDg5NDcwMDMyNTIsIDUxLjQ1NDAwNjQ0ODI1MDk4Nl0sIFstMi41MjQ3OTU2ODE4NTc3NDEsIDUxLjQ1MDk1NTk3NjUwMDg2NV0sIFstMi41MjU1MjMxOTEwMzkwNDM0LCA1MS40NDY2Mjk3ODg3MjE5NF0sIFstMi41Mjk5MDYxOTk5NTMzNzY1LCA1MS40NDUzNTQwMzQ3OTg5NV0sIFstMi41MzM1NjE1OTYzMjAwODE1LCA1MS40NDg0MDQ3Mjg1NDMwM11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzIxOWRjNWJiYmM1ZDQyMmM5N2QwNzFlYTM2MzM1NGM5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2M4YTRlNDk1MzU3MTQ2NWQ5ZmQzNDY2MTY1MjRlYWEyID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTE0NjMyMzUwOTIzMzc5LCA1MS41MzYxNDU2MjI5ODM2Nl0sIFstMi41MTAyNTI3MTgyMDU2NTE4LCA1MS41Mzc0MTc4ODkxNzY5OF0sIFstMi41MDY1OTk5NjM0NTIyMjUsIDUxLjUzNDM2OTk1MjQwMzRdLCBbLTIuNTA3MzI2NjU3OTE5MTM5NiwgNTEuNTMwMDQ5NTI2OTMyM10sIFstMi41MTE3MDYzOTQ1MDM1MjksIDUxLjUyODc3NzAwMDkxMDM5XSwgWy0yLjUxNTM1OTMzMjc2MzY2NSwgNTEuNTMxODI1MTYwMTg1NzNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9jOGE0ZTQ5NTM1NzE0NjVkOWZkMzQ2NjE2NTI0ZWFhMi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8zNDc0ZThjYjQyNzQ0OTU1OWI1ZDZiYjEyZjRhMGYwZCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU2MDU4MTM0MjI3MzQ3MDUsIDUxLjQxMTcyNzcwNDMwMTg5XSwgWy0yLjU1NjE5NjA2NDI0NTIzMywgNTEuNDEzMDA0ODg5ODA0OTI0XSwgWy0yLjU1MjUzOTU1NTA5NTIxODYsIDUxLjQwOTk1MjkyNDExMDVdLCBbLTIuNTUzMjY4MTQwNTYwMjk5NSwgNTEuNDA1NjIzNTUxMTMxMjhdLCBbLTIuNTU3NjUzNTIxODY4MTk3NywgNTEuNDA0MzQ2MTA1NjY1Nl0sIFstMi41NjEzMTAyMTQ0NDA2OTEsIDUxLjQwNzM5ODI5MzEzOTI2Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzM0NzRlOGNiNDI3NDQ5NTU5YjVkNmJiMTJmNGEwZjBkLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzNlZmQ1MTBhYmRkNjQzZDdiZWQxZjMxOTViYTNiZDNjID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTI0MDUwMTM3Mzk1NDUyLCA1MS40MzA1OTg0NDA0MDQ1Nl0sIFstMi41MTk2NjY5MjE5NjY2NDQzLCA1MS40MzE4NzQ3MTQwOTM0NF0sIFstMi41MTYwMTExMjM0NjU1NDE2LCA1MS40Mjg4MjM3NTQ0ODAzOV0sIFstMi41MTY3MzgzNTY3OTQ2OTIsIDUxLjQyNDQ5NjI5OTM0NDFdLCBbLTIuNTIxMTIxNjc1MzYyMzA3LCA1MS40MjMyMTk3NjU3Nzk5MjZdLCBbLTIuNTI0Nzc3NjU3NDcxMzExLCA1MS40MjYyNzA5NDcyMjQ4Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzNlZmQ1MTBhYmRkNjQzZDdiZWQxZjMxOTViYTNiZDNjLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzNiNTEwNzFhYzJmMDQxMWVhNTU0YmU3MDFkNjAwNjI2ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTg5MTA3OTc0Nzk2MDMyLCA1MS40NjUxNTgwNTY0MTU0NTRdLCBbLTIuNTg0NzIzMTQ3OTEwNTU0NCwgNTEuNDY2NDMzNDAwNjEzNl0sIFstMi41ODEwNjgwMjIyMzA3NDMsIDUxLjQ2MzM4MjUxNDEzOTkzXSwgWy0yLjU4MTc5NzU0MDI2ODkzMjYsIDUxLjQ1OTA1NjA2MTI4MDQyXSwgWy0yLjU4NjE4MjQ3MTA2MzI3OSwgNTEuNDU3NzgwNDU3MDY1NzRdLCBbLTIuNTg5ODM3Nzc5OTE5ODU4NiwgNTEuNDYwODMxNTY1NzI0NjJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8zYjUxMDcxYWMyZjA0MTFlYTU1NGJlNzAxZDYwMDYyNi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9jNDJiYmI1OGY2MDQ0Mjg0ODY4MDcwNzcxYzJiMGM2MCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU1NzY5MDEwNTAxMzA2MSwgNTEuNDc4NDA4OTc4Njc0MDhdLCBbLTIuNTUzMzA2OTYwODI0OTAxNSwgNTEuNDc5NjgzNjUwMTE1NDVdLCBbLTIuNTQ5NjUyMzU5MzE2MTExNiwgNTEuNDc2NjMzNTQ4NjY3MzhdLCBbLTIuNTUwMzgwNzE4NjYzNzkzNSwgNTEuNDcyMzA4NTUzNTY1MTRdLCBbLTIuNTU0NzYzOTY2NjE2NjUxNSwgNTEuNDcxMDMzNjIyMTgyMl0sIFstMi41NTg0MTg3NTE0NjY0MzgsIDUxLjQ3NDA4Mzk0NTg0MDYxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fYzQyYmJiNThmNjA0NDI4NDg2ODA3MDc3MWMyYjBjNjAuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMjgyMzNiMzIwZjhjNDVmM2FkMGQ3ZDRhYjM0MmJjMDAgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41MzcyNDcxNjI3MjYxODgzLCA1MS41MDA4MDE3NTc2NjQ0NzZdLCBbLTIuNTMyODY1NTMyMjY1OTQ4MywgNTEuNTAyMDc1NDc1MzMyODk0XSwgWy0yLjUyOTIxMTY2NDMzNjgzNiwgNTEuNDk5MDI2MjYyOTkxMzddLCBbLTIuNTI5OTM5MjQzNDUwMDM2MywgNTEuNDk0NzAzMTEwNjYyNjFdLCBbLTIuNTM0MzIwOTc3Njg1NTYsIDUxLjQ5MzQyOTEzMzEwNDc1NV0sIFstMi41Mzc5NzUwMjkwNDE5MTcsIDUxLjQ5NjQ3ODU2Nzc2MjY1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fMjgyMzNiMzIwZjhjNDVmM2FkMGQ3ZDRhYjM0MmJjMDAuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fODMyZDZkZTNmM2JiNDk0MmE1ODNlZjc4MmM4NjM1ZjEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41MDgwMzM4NDA1NTU1NywgNTEuNTAxMDcxOTEzOTY0NF0sIFstMi41MDM2NTM0MTM5MjM1NjE2LCA1MS41MDIzNDU0NTc3NjE1NF0sIFstMi40OTk5OTk2OTMyNzcxOTc3LCA1MS40OTkyOTY2NDQ4NDYzNl0sIFstMi41MDA3MjYyMTU2NzQ4ODMsIDUxLjQ5NDk3NDA2NTg3MDY1XSwgWy0yLjUwNTEwNjc0NTg1NjE3NiwgNTEuNDkzNzAwMjYyMjUwOThdLCBbLTIuNTA4NzYwNjUwMDk5ODM1NCwgNTEuNDk2NzQ5Mjk3NDI3MTE1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fODMyZDZkZTNmM2JiNDk0MmE1ODNlZjc4MmM4NjM1ZjEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNTc0MzExNWQ5OTRjNGJhMWJjZTY0ZWM0ZmM3ZTI5M2UgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi40Njc4NjU3NDQwNzgxMTYsIDUxLjQ5MjE5NjM3MzYxOTYyXSwgWy0yLjQ2MzQ4NjY5NTc4MTY1NDYsIDUxLjQ5MzQ3MDAyNDgxNzEzXSwgWy0yLjQ1OTgzMjkxODM4NjY5ODMsIDUxLjQ5MDQyMTUwNzExMzkyXSwgWy0yLjQ2MDU1ODAwNTQ1MzM3NCwgNTEuNDg2MDk5MTE2MDg2MTY2XSwgWy0yLjQ2NDkzNzE1NjkxODE1MywgNTEuNDg0ODI1MjA1MTU1ODE1XSwgWy0yLjQ2ODU5MTExODE1NzMwMiwgNTEuNDg3ODczOTQ0OTgzNjA1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fNTc0MzExNWQ5OTRjNGJhMWJjZTY0ZWM0ZmM3ZTI5M2Uuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZTJkYzIzODg2M2Y4NDQ5MTg1OWNjMWQ1NWMyNGNlODUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NDgyMDg1MjA1MTI0MywgNTEuNTA5OTQ5NDY3NTI2MjI2XSwgWy0yLjU0MzgyNjcxOTI4NzMzNzQsIDUxLjUxMTIyMjkwMzc4MDM2NF0sIFstMi41NDAxNzMwNTk3OTk5OTksIDUxLjUwODE3Mzc5NTc0NDA4NV0sIFstMi41NDA5MDEwMTgxOTc0NjY1LCA1MS41MDM4NTEwMjkwNTM4ODRdLCBbLTIuNTQ1MjgyOTIzMzUyODI0NywgNTEuNTAyNTc3MzMyODg3NTNdLCBbLTIuNTQ4OTM2NzY2MTg5NzYzLCA1MS41MDU2MjY2NjMzMjExNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2UyZGMyMzg4NjNmODQ0OTE4NTljYzFkNTVjMjRjZTg1LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzQ2YjAwYzIxNzk4YzRiMzU5YWFkZTBmZjViNWJkOTlkID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjA4MTAzMTQ0NzYxMjEyLCA1MS40MDIwMDQ4MjU4OTQ1Ml0sIFstMi42MDM3MTU2MzY3NjYwNTksIDUxLjQwMzI4MjY0MjQ1Njk5XSwgWy0yLjYwMDA1ODYyNzQzODIyNywgNTEuNDAwMjI5NzczMzkwODNdLCBbLTIuNjAwNzg4OTQyOTU2MDkwNiwgNTEuMzk1ODk4ODY1OTUxNjhdLCBbLTIuNjA1MTc2NTU0NTI2NjQ5NiwgNTEuMzk0NjIwNzg5MzE1OTk0XSwgWy0yLjYwODgzMzc0NzAxMzI1OCwgNTEuMzk3NjczODgwMTkwMTJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl80NmIwMGMyMTc5OGM0YjM1OWFhZGUwZmY1YjViZDk5ZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9hZjdkYzNiY2M4YjM0ZmMyOTQzNDM1N2FlZGZlNDliNiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjYxNjg4NTM4MTIyNDA3MTgsIDUxLjQ5ODIxNDY5MzgyMzczXSwgWy0yLjYxMjUwMDQyMzc2ODY5NDYsIDUxLjQ5OTQ4ODk1NDkwMTE0Nl0sIFstMi42MDg4NDYxMTE0MjE2NTMsIDUxLjQ5NjQzODYwMjc1MzgyXSwgWy0yLjYwOTU3NjU3MzU3NDU5MDYsIDUxLjQ5MjExMzc2NzA3MTI3XSwgWy0yLjYxMzk2MTYzNTQwNjgzNywgNTEuNDkwODM5MjQ1OTIxNTZdLCBbLTIuNjE3NjE2MTMwNzE4NTQ2LCA1MS40OTM4ODk4MjA1MjQyNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2FmN2RjM2JjYzhiMzRmYzI5NDM0MzU3YWVkZmU0OWI2LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzFmZGYwODY2MmUzOTQ2MzBhYTdmMTU1MzQ0M2ZjZTgwID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTQ0NDk4MDMwNzEyODY4LCA1MS40MDgxNzgyMjQ2NjQ5NjVdLCBbLTIuNTQwMTEzMzAyMjU2NzU5NSwgNTEuNDA5NDU1NDUyNzQyNzddLCBbLTIuNTM2NDU2NzY5NDUzNDcwNSwgNTEuNDA2NDAzNjA1OTYzMTg1XSwgWy0yLjUzNzE4NDc4MTU5NDA1MywgNTEuNDAyMDc0MzA5Mzc4NzI2XSwgWy0yLjU0MTU2OTYxMzE3NzUyNDMsIDUxLjQwMDc5NjgyMTM3NDM0XSwgWy0yLjU0NTIyNjMyOTUwMjM4MTQsIDUxLjQwMzg0ODg4OTg3ODQ4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fMWZkZjA4NjYyZTM5NDYzMGFhN2YxNTUzNDQzZmNlODAuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYTE0Y2M5Mzc5NGQxNDQzNTgxZTliZmI2YzMwNTU2OGYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42MDg4Mzc1NjU3MzMxMzI2LCA1MS40MjIzNzgwODEyMzEyMTZdLCBbLTIuNjA0NDUwNjQyNTk2ODU3LCA1MS40MjM2NTUxMzg4NzI4NDZdLCBbLTIuNjAwNzk0MjA4NjUxNDYxLCA1MS40MjA2MDI4MTY1MjA0NjRdLCBbLTIuNjAxNTI0NTE0NzI3MTg5NywgNTEuNDE2MjczMjE0NTgwNTM1XSwgWy0yLjYwNTkxMTU0MTYwMDA2MiwgNTEuNDE0OTk1ODk2ODY4MDM1XSwgWy0yLjYwOTU2ODE1ODY2OTkwMSwgNTEuNDE4MDQ4NDQxMTYzODFdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9hMTRjYzkzNzk0ZDE0NDM1ODFlOWJmYjZjMzA1NTY4Zi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9hZDhjMjE4MGFmMzc0Y2RkODBhYjI3NTc0NmY1ZDYwOCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjYwMjk5NzcyODA0OTY2NzQsIDUxLjQ4MTY4NzMxMzg2NTM2NV0sIFstMi41OTg2MTI4MzU0OTM4ODIyLCA1MS40ODI5NjIxMTY1NTE4M10sIFstMi41OTQ5NTgxMTU5NDA1MTgsIDUxLjQ3OTkxMTQ5NzAwNzk3XSwgWy0yLjU5NTY4ODEwNTg4MTQxNywgNTEuNDc1NTg1ODUyNDU0ODRdLCBbLTIuNjAwMDczMTAyNTgwMDg4NSwgNTEuNDc0MzEwNzg5NzIzOTFdLCBbLTIuNjAzNzI4MDA1MjA0MjY1NywgNTEuNDc3MzYxNjMxNTg4MTI0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fYWQ4YzIxODBhZjM3NGNkZDgwYWIyNzU3NDZmNWQ2MDguc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNmZmODMyNWI3NTA1NDQ1MThhNWFmNzRiNGFlN2NkMWEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42MDczNzk5MDIwMjIwNCwgNTEuNDU1NzI4ODAwMDU2OTc0XSwgWy0yLjYwMjk5NDA0NTc2MDQyLCA1MS40NTcwMDQ2MDAwOTA3NTVdLCBbLTIuNTk5MzM4NTY3MDA2OTU0NiwgNTEuNDUzOTUzMjA5OTg2OTRdLCBbLTIuNjAwMDY4NzYxNDQwNzUwNywgNTEuNDQ5NjI1Nzk3Njg3NjQ1XSwgWy0yLjYwNDQ1NDcyMTY4MTgxNjYsIDUxLjQ0ODM0OTczNzU5MzQyNV0sIFstMi42MDgxMTAzODM1MTg5MzgsIDUxLjQ1MTQwMTM0OTg1NjQ1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fNmZmODMyNWI3NTA1NDQ1MThhNWFmNzRiNGFlN2NkMWEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYWNhYjliNmI1ODdlNDI0M2I2OWQ3ZWMwMzM4ZTc1ZWEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NjkzNjMwNzY2ODQ0NjQsIDUxLjQzMzg2ODk5MTQ4MTE5XSwgWy0yLjU2NDk3ODEwODk2OTQ5OSwgNTEuNDM1MTQ1Mzk3MDY1MTM1XSwgWy0yLjU2MTMyMjE4NjU3NjU2MjMsIDUxLjQzMjA5MzkxODc3MDI4XSwgWy0yLjU2MjA1MTA0ODU2OTMzNzcsIDUxLjQyNzc2NTgxMjk0NzI1XSwgWy0yLjU2NjQzNjExOTgwMTA4MywgNTEuNDI2NDg5MTQ3Mzg1MTI2XSwgWy0yLjU3MDA5MjIyNTUzMjYwMzUsIDUxLjQyOTU0MDg0NzYyMTY5NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2FjYWI5YjZiNTg3ZTQyNDNiNjlkN2VjMDMzOGU3NWVhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2Y2NzZmODA4ZWZjZjQ1MGViMmU1NTAyM2Q2OTU3ZDZmID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTQxNjU1ODU2MDU4NzcxNCwgNTEuNTQ4ODQxNDQwODQ5MzY1XSwgWy0yLjUzNzI3NTUwMzAwMzQ2MSwgNTEuNTUwMTEzMzgyMzk1NDJdLCBbLTIuNTMzNjIyOTgxOTg1ODg5MywgNTEuNTQ3MDY1NDMyNzU4M10sIFstMi41MzQzNTA2MzA3MDMwMTI0LCA1MS41NDI3NDUzMTg5MzU3Ml0sIFstMi41Mzg3MzEwODc5MzIyNzg2LCA1MS41NDE0NzMxMTc1MDI2NzZdLCBbLTIuNTQyMzgzNzkyMjc5NzYzLCA1MS41NDQ1MjEyODk3NzY4MjRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9mNjc2ZjgwOGVmY2Y0NTBlYjJlNTUwMjNkNjk1N2Q2Zi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8yMDQxMmJjZDBlMWE0ZmJmYjA2NzlmMjg5OGY4ZTExZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjUxOTczOTM0NDQxMTE2NSwgNTEuNTMwNTUyNjU1NzI2OTddLCBbLTIuNTE1MzU5MzMyNzYzNjY1LCA1MS41MzE4MjUxNjAxODU3M10sIFstMi41MTE3MDYzOTQ1MDM1MjksIDUxLjUyODc3NzAwMDkxMDM5XSwgWy0yLjUxMjQzMzI4NDQxNDk4MTUsIDUxLjUyNDQ1NjExNDY5ODM0Nl0sIFstMi41MTY4MTMzOTk5MjY2NzM1LCA1MS41MjMxODMzNTAzOTc4MV0sIFstMi41MjA0NjY1MjE2NzIwNDI4LCA1MS41MjYyMzE3MzIxNDg2N11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzIwNDEyYmNkMGUxYTRmYmZiMDY3OWYyODk4ZjhlMTFmLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzYzNDgyOTk0MDY5MjQ0MzE5YTAwMGNmNGFhOGI0MzM4ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjEyNDk2NjE3NDE0NDAzOCwgNTEuNDUwMTI1MzExMTUzMV0sIFstMi42MDgxMTAzODM1MTg5MzgsIDUxLjQ1MTQwMTM0OTg1NjQ1XSwgWy0yLjYwNDQ1NDcyMTY4MTgxNjYsIDUxLjQ0ODM0OTczNzU5MzQyNV0sIFstMi42MDUxODUxMTA2ODc1MTEsIDUxLjQ0NDAyMTg2NDQ5MjA1XSwgWy0yLjYwOTU3MTQ0ODU1OTU4NTMsIDUxLjQ0Mjc0NTU2NTcxNTM1XSwgWy0yLjYxMzIyNzI5MzQ1ODY2MSwgNTEuNDQ1Nzk3NDAwMTEwODldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl82MzQ4Mjk5NDA2OTI0NDMxOWEwMDBjZjRhYThiNDMzOC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl80ZDkxYWY0MzE0ZDY0OGQ1YTYzNGE2MDZmYzNjMzQ3ZCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY5NDQwODkwMjg3ODQ4OTQsIDUxLjQzNDUyODA2NjcyNDU0XSwgWy0yLjY5MDAxODg3MzIyMjk1NzMsIDUxLjQzNTgwNTE0OTY4ODU3XSwgWy0yLjY4NjM2MjM5NjE1MDkxOCwgNTEuNDMyNzUyMDEwOTc4MTg0XSwgWy0yLjY4NzA5NTc2NjE0MDM2MiwgNTEuNDI4NDIxNTY3MTExMDE2XSwgWy0yLjY5MTQ4NTkwMDI5MTA2LCA1MS40MjcxNDQyMjM4ODI4Nl0sIFstMi42OTUxNDI1NTk5NjY0MDYzLCA1MS40MzAxOTc1ODQ3ODM0ODVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl80ZDkxYWY0MzE0ZDY0OGQ1YTYzNGE2MDZmYzNjMzQ3ZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl80YjNmMzc4YjljZWM0OWEwOGUwMmIyODAyNWU0MzgyMyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjUyMTg2Nzc4Mjg3NzcwNzQsIDUxLjQ0MzU3OTE1NDI2NTg5XSwgWy0yLjUxNzQ4NTA0OTExODAyMSwgNTEuNDQ0ODU0OTI5NTUyOTJdLCBbLTIuNTEzODI5NjI5MzM4NzAzMiwgNTEuNDQxODA0MzU0Mzg4NTE2XSwgWy0yLjUxNDU1Njc1OTcyNjg3MDUsIDUxLjQzNzQ3Nzc4MjAyMTk0XSwgWy0yLjUxODkzOTU5NjcwNzEwMzgsIDUxLjQzNjIwMTc0Njg2NzRdLCBbLTIuNTIyNTk1MjAwMDg3OTY1NywgNTEuNDM5MjUyNTQzOTQ0NDJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl80YjNmMzc4YjljZWM0OWEwOGUwMmIyODAyNWU0MzgyMy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9jMzc2Yzc2MWRhNmE0YjU2YmZmYjkzMzdlMTdiYTliZSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY1ODU1NjQ0NzQwNzQ0NzUsIDUxLjQ3Mzc2MzA5NDIwODg2XSwgWy0yLjY1NDE2OTA1NjQ1MDc5LCA1MS40NzUwMzg1MDU1MzAxOF0sIFstMi42NTA1MTM4NTgyMTM1MjEzLCA1MS40NzE5ODY5MjI5MDA0Ml0sIFstMi42NTEyNDU4NjgxODYwNDM0LCA1MS40Njc2NTk3MDY1Njk2Ml0sIFstMi42NTU2MzMzNjM2NTgxNTI0LCA1MS40NjYzODQwMzUwNzQ4NV0sIFstMi42NTkyODg3NDQ2NTE1NTA3LCA1MS40Njk0MzU4NDAwODE4NjRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9jMzc2Yzc2MWRhNmE0YjU2YmZmYjkzMzdlMTdiYTliZS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9iMDMyM2IwZTkyNmI0ZWYyOTY1NTE3Zjg0NTkzOGU3YSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjYxMzIyOTM5NTQ5MzkyNzQsIDUxLjQ3MDQ4NTE2NzIwNzExNl0sIFstMi42MDg4NDM3NDc0MjgxMjA1LCA1MS40NzE3NjA0NDcxMDQ5NF0sIFstMi42MDUxODg2NjE3NTQ4MTA2LCA1MS40Njg3MDkzODI5NDY5Nl0sIFstMi42MDU5MTkwNDExMjkxNjc3LCA1MS40NjQzODI4MTY2MjE0OTRdLCBbLTIuNjEwMzA0NzkzMzMyMzYyLCA1MS40NjMxMDcyNzY2NTMxNzZdLCBbLTIuNjEzOTYwMDYyMDMzMTAxNCwgNTEuNDY2MTU4NTYzMDc4MzVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9iMDMyM2IwZTkyNmI0ZWYyOTY1NTE3Zjg0NTkzOGU3YS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl81MmI4Y2QyOTkyZGQ0ZTUxYjFiYzE3NTFhNjM1YTQwMCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU4NzY1NDUyMTQ3ODg3MzUsIDUxLjQ5ODQ4NTI4NzUwNzY4NF0sIFstMi41ODMyNzA3NjI3NjQ4NDU3LCA1MS40OTk3NTkzNzQ1NjY4N10sIFstMi41Nzk2MTY1OTI1NTM4NTA2LCA1MS40OTY3MDk0MjIxNDMyMl0sIFstMi41ODAzNDU5OTc5MzA0MDEsIDUxLjQ5MjM4NTE2MDI1ODA3NF0sIFstMi41ODQ3Mjk4NjA3OTU0MTgsIDUxLjQ5MTExMDgxMzE5MzU1XSwgWy0yLjU4ODM4NDIxNDE0MjE4MTMsIDUxLjQ5NDE2MDk4ODAxNzFdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl81MmI4Y2QyOTkyZGQ0ZTUxYjFiYzE3NTFhNjM1YTQwMC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl80OTUyNDMyZWVjZDU0Y2IxODU4ZmYyOTA5MTZkMmRkYiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY0Njg2MjM3MjMwMzAwNjMsIDUxLjQ0NDI0MzM0MDI5MDg5XSwgWy0yLjY0MjQ3NDU2Mzc1ODU3OTQsIDUxLjQ0NTUxOTc5MjI3NTg5XSwgWy0yLjYzODgxODU3NzEwMzc2NDQsIDUxLjQ0MjQ2NzU1NzY5MTAxXSwgWy0yLjYzOTU1MDIxNjEzMzgwMywgNTEuNDM4MTM4NjQ4OTU3NTJdLCBbLTIuNjQzOTM4MTI4ODc3NjA2MywgNTEuNDM2ODYxOTM2ODE5MjJdLCBbLTIuNjQ3NTk0Mjk4NDAxMjY5NywgNTEuNDM5OTE0MzkzNTY1MjI1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fNDk1MjQzMmVlY2Q1NGNiMTg1OGZmMjkwOTE2ZDJkZGIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fM2JjZmE1MzA3NGQ5NDI1YzgyMzdjNDEyYzBmMjdhMDQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi43MDE2OTQ1MzcyMDE1MjUzLCA1MS40OTAwMjQxMTg0NjQzN10sIFstMi42OTczMDU4ODk3MzgwMjYsIDUxLjQ5MTI5OTE2MjE1NDI1XSwgWy0yLjY5MzY1MDk2NDM3MzA3OCwgNTEuNDg4MjQ3NDQ2NzY2Nzg1XSwgWy0yLjY5NDM4NDUwNDAwMzQ0NywgNTEuNDgzOTIwNDY1MTE5MDU2XSwgWy0yLjY5ODc3MzI1NjQ0MjI0OTcsIDUxLjQ4MjY0NTE2MTE2MDc5XSwgWy0yLjcwMjQyODM2NDI4NDYxNDcsIDUxLjQ4NTY5NzA5OTExNjE5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fM2JjZmE1MzA3NGQ5NDI1YzgyMzdjNDEyYzBmMjdhMDQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fODMyZjRjNjg3N2M5NGRiYjk4M2FkOTUzN2QzODU1Y2YgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42NjE0OTc1NjIwNTUzMDY1LCA1MS40MDcwNDc3MzUwNTIyMV0sIFstMi42NTcxMDgwMzY5NjcxNTYsIDUxLjQwODMyNTY2MjcyMTU5XSwgWy0yLjY1MzQ1MDkyNTEyNzE4MywgNTEuNDA1MjcyMjE0NjE5MjNdLCBbLTIuNjU0MTgzMTU1NTQ2NzU4MywgNTEuNDAwOTQwNjE2ODk5NjA0XSwgWy0yLjY1ODU3Mjc4NDY2NDE3LCA1MS4zOTk2NjI0MjkwMzU4Nl0sIFstMi42NjIyMzAwNzkzNDIwMjczLCA1MS40MDI3MTYwOTkwODM1NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzgzMmY0YzY4NzdjOTRkYmI5ODNhZDk1MzdkMzg1NWNmLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2Q1Y2RjYzIyZDVjOTRiNTdhNDkwOTdmOWY2MTk0YzEyID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjE3NjE2NTE1NzgyNzUzMywgNTEuNTE4NTYxMTM0OTg0MDddLCBbLTIuNjEzMjMyMTQ1MTI0NTg1LCA1MS41MTk4MzQ2MzczNzQ3NjRdLCBbLTIuNjA5NTc4NDA5NzE5MTg4OCwgNTEuNTE2Nzg0ODM0NzE4MzddLCBbLTIuNjEwMzA4ODYyMDUxMjUzLCA1MS41MTI0NjEzMDcwNzk1OF0sIFstMi42MTQ2OTMzMzcyNDY2MzUsIDUxLjUxMTE4NzU0NDYyMDAzXSwgWy0yLjYxODM0NzI1NTU4MjAwNiwgNTEuNTE0MjM3NTY5ODY1NzA2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fZDVjZGNjMjJkNWM5NGI1N2E0OTA5N2Y5ZjYxOTRjMTIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fM2MwNjExNWMwN2ZhNDQ2MmE1OTZlNTNjN2Y1OWFlMmQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NDMwNTY1MzMzOTYxOTQ4LCA1MS40NDE1MjYzMzg2ODczM10sIFstMi41Mzg2NzI4NzExNzM1NTA3LCA1MS40NDI4MDIzMDk3ODY1NV0sIFstMi41MzUwMTcyOTEzMDQyNzksIDUxLjQzOTc1MTM5NDA3NTIyXSwgWy0yLjUzNTc0NTE5MDE4NjAxNjYsIDUxLjQzNTQyNDI4NTMyMTYxXSwgWy0yLjU0MDEyODk1NTc3ODc2MiwgNTEuNDM0MTQ4MDU0MzA1OThdLCBbLTIuNTQzNzg0NzE5MTI5MDEzNywgNTEuNDM3MTk5MTkxOTU3ODZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8zYzA2MTE1YzA3ZmE0NDYyYTU5NmU1M2M3ZjU5YWUyZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl82MjgwYjk4YTI4NGU0MzE3ODE2MTZmMGY1ODJmMWNiMSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY2MDc1MzQ0MDc0NTIwNywgNTEuNDYwNzgwNDQ3NDI1MDldLCBbLTIuNjU2MzY1NTY4MDg2MTMzLCA1MS40NjIwNTYzNTc2NjMxM10sIFstMi42NTI3MDk5ODk4MTE5NTEsIDUxLjQ1OTAwNDM4OTU5Mzg1XSwgWy0yLjY1MzQ0MjEwMTQ0MzU1NzYsIDUxLjQ1NDY3NjI4ODk4NzM5XSwgWy0yLjY1NzgzMDA3ODUzNjI0MSwgNTEuNDUzNDAwMTE4NTY3OTNdLCBbLTIuNjYxNDg1ODM5NTcyOTc3MiwgNTEuNDU2NDUyMzA4OTMzODJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl82MjgwYjk4YTI4NGU0MzE3ODE2MTZmMGY1ODJmMWNiMS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8zYzkzNTE1YWRhMDU0MTg0ODVmZTY3NTNhYTI4MDExNSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjQ4NTM1OTg1NTcwMDg3NiwgNTEuNDYyNDMzMDEwMzI5MjFdLCBbLTIuNDgwOTc5MTg3ODU5MTU5LCA1MS40NjM3MDc4NzQ1OTE2NTVdLCBbLTIuNDc3MzI0NDgwMzkwMzAzLCA1MS40NjA2NTgzMDU3MjAxNDVdLCBbLTIuNDc4MDUwMjU2OTg2MTcyLCA1MS40NTYzMzM2NTA2MTkwM10sIFstMi40ODI0MzEwMjc5MDY5NjQsIDUxLjQ1NTA1ODUyNjU3NjcxXSwgWy0yLjQ4NjA4NTkxOTE2MjE2MSwgNTEuNDU4MTA4MzE3NDEyODhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8zYzkzNTE1YWRhMDU0MTg0ODVmZTY3NTNhYTI4MDExNS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl83ODMyZGUyMGIxYWE0Y2E1ODY0NmFiYjY4ZjY1ZmZkMCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY5NjU3MjI1NzA0OTM5MywgNTEuNDk1NjI1NzIwMTQxNl0sIFstMi42OTIxODM5ODY0ODI0MTQsIDUxLjQ5NjkwMDUyNTA3ODE5XSwgWy0yLjY4ODUyOTI0MzYxNjczMDMsIDUxLjQ5Mzg0OTAzMjI4NTIyXSwgWy0yLjY4OTI2MjU4ODgyODAwMiwgNTEuNDg5NTIyNTExOTU4N10sIFstMi42OTM2NTA5NjQzNzMwNzgsIDUxLjQ4ODI0NzQ0Njc2Njc4NV0sIFstMi42OTczMDU4ODk3MzgwMjYsIDUxLjQ5MTI5OTE2MjE1NDI1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fNzgzMmRlMjBiMWFhNGNhNTg2NDZhYmI2OGY2NWZmZDAuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNDBjNjkzNTg0M2RjNDViNzkyN2VmYmZmOGM0NzhiMDEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NDUyNDExOTMyNDQ5Njk3LCA1MS40Mjg1NDQwMTU0Njc1OV0sIFstMi41NDA4NTcwNDk0MjgwNjgsIDUxLjQyOTgyMDQ4NTA2NzMzXSwgWy0yLjUzNzIwMTA5MDY3NTIzMTQsIDUxLjQyNjc2OTE4NDg3MTYyXSwgWy0yLjUzNzkyOTA5MjI2MTMxMDcsIDUxLjQyMjQ0MTE5MzIxMzkyXSwgWy0yLjU0MjMxMzMzOTM2NjUwMDcsIDUxLjQyMTE2NDQ2MzY5MDA1XSwgWy0yLjU0NTk2OTQ4MTYwNjY3NTQsIDUxLjQyNDIxNTk4NTc0NTQ4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fNDBjNjkzNTg0M2RjNDViNzkyN2VmYmZmOGM0NzhiMDEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fM2JlYmZiYjVmNjc4NDMwNWE1MDdhOWY2OTQ1MDc4OTkgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42Nzc1OTE2MTE2Njg5MzMsIDUxLjQxMDU5OTAxODQwNzhdLCBbLTIuNjczMjAxNTQxMjE5NDM0OCwgNTEuNDExODc2OTAzNDYzOTM0XSwgWy0yLjY2OTU0NDQ1NzY3ODYxNTYsIDUxLjQwODgyMzMzNjMxNDM1XSwgWy0yLjY3MDI3NzI2MTg1ODY1NSwgNTEuNDA0NDkxNjYyMTA1OTldLCBbLTIuNjc0NjY3NDM2NDg5NzE4LCA1MS40MDMyMTM1MTY4MTkzNTZdLCBbLTIuNjc4MzI0NzAyNzY4NDQyLCA1MS40MDYyNjczMDU5NjkwN11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzNiZWJmYmI1ZjY3ODQzMDVhNTA3YTlmNjk0NTA3ODk5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2Q5YzNkM2YzYjgyNDRkY2Y4ZGJjNTQ1Y2JlZTg0NGIxID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTU3NjUzNTIxODY4MTk3NywgNTEuNDA0MzQ2MTA1NjY1Nl0sIFstMi41NTMyNjgxNDA1NjAyOTk1LCA1MS40MDU2MjM1NTExMzEyOF0sIFstMi41NDk2MTE0MzYwMjMxODYsIDUxLjQwMjU3MTQyMzE0MDU4XSwgWy0yLjU1MDMzOTkyOTM1MjkwOCwgNTEuMzk4MjQxNjI3OTU2NjldLCBbLTIuNTU0NzI1NDEzODYxMzk5MywgNTEuMzk2OTYzOTIyNTMzNjQ0XSwgWy0yLjU1ODM4MjMwMTg0ODkxOTYsIDUxLjQwMDAxNjI3MjI0OTMyNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2Q5YzNkM2YzYjgyNDRkY2Y4ZGJjNTQ1Y2JlZTg0NGIxLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2NkN2UwYjNkNTI4ZjRjYWZiMGU0Mjg2MjdmNTVlNTE4ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTEzMDgyMzYzMjcyNjgwNiwgNTEuNDIxNDQ1MTc3MjgwMDFdLCBbLTIuNTA4Njk5MzIwMDg4MjEwNiwgNTEuNDIyNzIxNzMyMTU0MjRdLCBbLTIuNTA1MDQzMzE1MzI5ODgxLCA1MS40MTk2NzA2Njk0NzQ2XSwgWy0yLjUwNTc3MDE3MDA4MDE2NDIsIDUxLjQxNTM0MjgzMDE2NzgxNl0sIFstMi41MTAxNTMzMTYyNDgyODQzLCA1MS40MTQwNjYwMTU0NDE1MDZdLCBbLTIuNTEzODA5NTA0NjkxODMxLCA1MS40MTcxMTcyOTk4NzE1NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2NkN2UwYjNkNTI4ZjRjYWZiMGU0Mjg2MjdmNTVlNTE4LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2Y4MDZkZDA1ZmNhZjQ0OWViZTNjM2VlZTg0NmJkNmI0ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNDc2NjQ5Nzg2MTYzNDU3LCA1MS41MTQzMDYzNjI2OTYxMjVdLCBbLTIuNDcyMjcxMDQ3ODQ0MzIxNSwgNTEuNTE1NTc5MjM0NjY1ODVdLCBbLTIuNDY4NjE3ODU1MTg2NDE3LCA1MS41MTI1MzEyMDY2MDIyOV0sIFstMi40NjkzNDMyMTcwOTY1NzU3LCA1MS41MDgyMTAwODQyODA5MjVdLCBbLTIuNDczNzIyMDU4ODIwMTkyNywgNTEuNTA2OTM2OTUyNTYzNzg0XSwgWy0yLjQ3NzM3NTQzNTIzODUyNDcsIDUxLjUwOTk4NTIwMjkxMjk3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fZjgwNmRkMDVmY2FmNDQ5ZWJlM2MzZWVlODQ2YmQ2YjQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZGNmMjAxYzc4ZWFlNGE5NGJlMWE0NjM0NjlkOGIwM2QgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NDA4NzIxODE2MjY5NzE1LCA1MS40NTQ1MDYwMTI1ODExODRdLCBbLTIuNTM2NDg5MDAxMTU5ODE2MiwgNTEuNDU1NzgxNDg1MjI1OF0sIFstMi41MzI4MzM4MDAyMzkwMDYzLCA1MS40NTI3MzA5NTQyMTg2XSwgWy0yLjUzMzU2MTU5NjMyMDA4MTUsIDUxLjQ0ODQwNDcyODU0MzAzXSwgWy0yLjUzNzk0NDg4MDIzOTA1OSwgNTEuNDQ3MTI4OTk1OTg5ODM2XSwgWy0yLjU0MTYwMDI2NDYzNDQ2NTgsIDUxLjQ1MDE3OTc0OTAxODNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9kY2YyMDFjNzhlYWU0YTk0YmUxYTQ2MzQ2OWQ4YjAzZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xNjcwMzFmMDI0NTA0YmNmYjExM2NmYTMxZmY5NTI0NSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjQ5ODUwMzE2ODQ2Nzc2ODUsIDUxLjQ1ODYwNzk4MzUzODQxXSwgWy0yLjQ5NDEyMTg0NjA0NjYxNiwgNTEuNDU5ODgzMDY0ODA3NDY0XSwgWy0yLjQ5MDQ2Njk2NTkwNzk4MzQsIDUxLjQ1NjgzMzIxNDc1NDM1XSwgWy0yLjQ5MTE5MzIyNDQ4NDM1NTUsIDUxLjQ1MjUwODA2MTQ2NDMzNl0sIFstMi40OTU1NzQ2NTAwNTgwOCwgNTEuNDUxMjMyNzIwMzg0NDhdLCBbLTIuNDk5MjI5NzEzOTEyMjE0LCA1MS40NTQyODI3OTI0MDI5NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzE2NzAzMWYwMjQ1MDRiY2ZiMTEzY2ZhMzFmZjk1MjQ1LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2NkYmNiNzg5ZWRkYjQzMmE4MmZkYWJjOGRjYzk4NjYyID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTc0NTAzODk3Mzc1MzQ3LCA1MS41MDIzMDczMzE2OTYzMzZdLCBbLTIuNTcwMTIwNzkwNzgzMTcxLCA1MS41MDM1ODEyMDE3NzY0MDZdLCBbLTIuNTY2NDY2NzkwNTE1ODQzNiwgNTEuNTAwNTMxNTMwODM5NzNdLCBbLTIuNTY3MTk1NzEzNjQyODcwNSwgNTEuNDk2MjA3NzY3NDIxNDhdLCBbLTIuNTcxNTc4OTI0MzEyNDg2NywgNTEuNDk0OTMzNjM3MzY3MTA0XSwgWy0yLjU3NTIzMzEwNzc4NjkzMiwgNTEuNDk3OTgzNTMwNzAyODU0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fY2RiY2I3ODllZGRiNDMyYTgyZmRhYmM4ZGNjOTg2NjIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZTQ0ODM2ODM2ZjVlNDQyNTliM2NiYjgwYjI1MjkzNDggPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42MzAwNDQwNzU0NDM5MzgsIDUxLjQyMDMyMTg4Mjg4MzM4NV0sIFstMi42MjU2NTYyMjc4MjA3MDA3LCA1MS40MjE1OTkxMzY2NDIxODZdLCBbLTIuNjIxOTk5NjM3MzM0MDQ2LCA1MS40MTg1NDY0NzM0MzQ1OF0sIFstMi42MjI3MzA3MTE0NzY4MzcsIDUxLjQxNDIxNjMzNDQ5NDQzXSwgWy0yLjYyNzExODY2Mjk4NjAyOCwgNTEuNDEyOTM4ODIwNjE1ODY0XSwgWy0yLjYzMDc3NTQzNjQ3NTc2MiwgNTEuNDE1OTkxNzA1Nzk0NzJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9lNDQ4MzY4MzZmNWU0NDI1OWIzY2JiODBiMjUyOTM0OC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8zMjY3OWNmNTNlOWE0ZmNhYjE0YTY1MjE3NGIzNzZiZCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjQ5OTE4NDMzOTE5MjAzMjMsIDUxLjQwNDkxMTk1NjQ0ODc5XSwgWy0yLjQ5NDgwMTM2NTgwNDY1NzUsIDUxLjQwNjE4OTA1MjI5MDNdLCBbLTIuNDkxMTQ0OTYwNzUyMjc5LCA1MS40MDMxMzc3MjQ0NzU1OV0sIFstMi40OTE4NzEzNDUzMDYzNjcyLCA1MS4zOTg4MDkwNzkyMDIxXSwgWy0yLjQ5NjI1NDQyMTQ0MzIxOCwgNTEuMzk3NTMxNzIzNTM2OTddLCBbLTIuNDk5OTExMDEwMjg1ODgyLCA1MS40MDA1ODMyNzI5NjYzOTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8zMjY3OWNmNTNlOWE0ZmNhYjE0YTY1MjE3NGIzNzZiZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9mNDg1NzBiZWZiN2E0ZWQxYWQ2NmRiNWMxMWM0NTE1YyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjQ5NzgyMDMzMzA3MjYzNzQsIDUxLjUxMjI2MjYxNDQ1ODg4XSwgWy0yLjQ5MzQ0MDY2NDM1NjEyMSwgNTEuNTEzNTM1NjgxNjQ1MzddLCBbLTIuNDg5Nzg3MzEwOTY4NzM3NiwgNTEuNTEwNDg3MzEzMzMxMzRdLCBbLTIuNDkwNTEzNDQyNjY2OTgyLCA1MS41MDYxNjU2NTU1MTQ2M10sIFstMi40OTQ4OTMyMTQ5Mzc4NzcsIDUxLjUwNDg5MjMyODUzMTc1XSwgWy0yLjQ5ODU0Njc1MTk2NTQ4LCA1MS41MDc5NDA5MTkxNTk1Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2Y0ODU3MGJlZmI3YTRlZDFhZDY2ZGI1YzExYzQ1MTVjLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2Y0ZDJhMzYxZGNlNjQ3NzFhMzg1OTcwNjc0MDhjM2M2ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjQ2ODQ5NTU2MjEyOTQyNCwgNTEuNTE4MjkzMTY1NDUyMDddLCBbLTIuNjQyNDYzOTg4ODQxNTgsIDUxLjUxOTU2Njg0MTcxMjM1NF0sIFstMi42Mzg4MTAxMTM4NTc0NjY0LCA1MS41MTY1MTY2MzkzNjEzNl0sIFstMi42Mzk1NDE2MjM0OTU1MzU2LCA1MS41MTIxOTI1MzgxMDI4NDVdLCBbLTIuNjQzOTI3Mjk1NjMwMDU4LCA1MS41MTA5MTg2MDE3MDY3MzRdLCBbLTIuNjQ3NTgxMzUzMzcyNjEsIDUxLjUxMzk2OTAyNjcwMjUzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fZjRkMmEzNjFkY2U2NDc3MWEzODU5NzA2NzQwOGMzYzYuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNjZjZjYyNzMwYzQxNGMxNDg3MzA0MjhlNTc0NmRhMjEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42OTA3NjMxMjEyODM1NTgzLCA1MS40MDY3NjQ5Mjc5ODgyMDZdLCBbLTIuNjg2MzcyNDAxNzQzMTA3NywgNTEuNDA4MDQzMDMwNjc0ODVdLCBbLTIuNjgyNzE1MTQ5OTI5NzQ0LCA1MS40MDQ5ODkxODE5Nzk1Nl0sIFstMi42ODM0NDg0MzUwMDAwOTEzLCA1MS40MDA2NTcwMDg1OTQ1MTRdLCBbLTIuNjg3ODM5MjU4Nzk1MTc2LCA1MS4zOTkzNzg2NDU2NDY0ODZdLCBbLTIuNjkxNDk2NjkzMjc0NTM3NywgNTEuNDAyNDMyNzE2MzQyMzU0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fNjZjZjYyNzMwYzQxNGMxNDg3MzA0MjhlNTc0NmRhMjEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMzUxYjU5YmJmOGE2NDhiODkzNzY5OTBiYmMzZDIxZGEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42MDIyNzM0ODc5MzUzOTMsIDUxLjUzNTM0ODg1NTIzOTgyXSwgWy0yLjU5Nzg5MDI1MTE1ODQ2NDcsIDUxLjUzNjYyMTY0MjIwMDAwNF0sIFstMi41OTQyMzcwNjQ2NzI5MzUsIDUxLjUzMzU3MjUwNzQ2OTYzNl0sIFstMi41OTQ5NjY5MzE5Nzg2NzUsIDUxLjUyOTI1MDM2MzEwODMyNV0sIFstMi41OTkzNTAyNzMzMDA1OTMsIDUxLjUyNzk3NzMxNjExODc4XSwgWy0yLjYwMzAwMzY0Mjc4MTA2NCwgNTEuNTMxMDI2NjczNTE3NDldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8zNTFiNTliYmY4YTY0OGI4OTM3Njk5MGJiYzNkMjFkYS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9kYTI2YzNiZDZmNDI0Y2IzYjlkMTJmOTVmZTExODRiOCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjUxMzgyOTYyOTMzODcwMzIsIDUxLjQ0MTgwNDM1NDM4ODUxNl0sIFstMi41MDk0NDcxNzA4ODM1OTU1LCA1MS40NDMwODAxNTEwMzM5MV0sIFstMi41MDU3OTE3Mzk2NjI5NCwgNTEuNDQwMDI5NjM1MTY0NzM0XSwgWy0yLjUwNjUxODU4MzI1NTc0MTMsIDUxLjQzNTcwMzEwMDc2MjM4XSwgWy0yLjUxMDkwMTE0NDg1NTIyMywgNTEuNDM0NDI3MDQ0MjY3NDddLCBbLTIuNTE0NTU2NzU5NzI2ODcwNSwgNTEuNDM3NDc3NzgyMDIxOTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9kYTI2YzNiZDZmNDI0Y2IzYjlkMTJmOTVmZTExODRiOC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9jOTdiZjAwZDFlMDc0MGQwYmJiNmRjNjdiZDYwMDk1NyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY2Mjk1MDczODczNTg1OTUsIDUxLjQ0Nzc5NTE0NzcyMTk3Nl0sIFstMi42NTg1NjIzODQ1MzY1NzgsIDUxLjQ0OTA3MTU1NjkyMjk4XSwgWy0yLjY1NDkwNjQyNjI4OTY1LCA1MS40NDYwMTkyMDM2MzM4NF0sIFstMi42NTU2Mzg2Mzk0ODIzMzgsIDUxLjQ0MTY5MDIxODkyNTM2XSwgWy0yLjY2MDAyNzA5ODAzMzI5OCwgNTEuNDQwNDEzNTQ5NTM1MDJdLCBbLTIuNjYzNjgzMjM5MDQ5MTU5LCA1MS40NDM0NjYxMjUwNDAwMV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2M5N2JmMDBkMWUwNzQwZDBiYmI2ZGM2N2JkNjAwOTU3LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2I2YTYxM2Q1MDMzYTQ4OTE5MDJmYmIzNzAxMjliYzFhID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTI5OTA2MTk5OTUzMzc2NSwgNTEuNDQ1MzU0MDM0Nzk4OTVdLCBbLTIuNTI1NTIzMTkxMDM5MDQzNCwgNTEuNDQ2NjI5Nzg4NzIxOTRdLCBbLTIuNTIxODY3NzgyODc3NzA3NCwgNTEuNDQzNTc5MTU0MjY1ODldLCBbLTIuNTIyNTk1MjAwMDg3OTY1NywgNTEuNDM5MjUyNTQzOTQ0NDJdLCBbLTIuNTI2OTc4MzEyMjk5MDEsIDUxLjQzNzk3NjUzMDEzNTkzNF0sIFstMi41MzA2MzM5MDQwMTI0MTQsIDUxLjQ0MTAyNzM4NjUzMTkzNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2I2YTYxM2Q1MDMzYTQ4OTE5MDJmYmIzNzAxMjliYzFhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzdmY2JlOTZkNDFiNDQzYWFhNWVlZGE0NTA4NGM4Yjc3ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjI0OTI0OTEwMjc4MTA5LCA1MS40OTk5OTA4NjU1MDUzNl0sIFstMi42MjA1Mzk2Nzk1NTEwODk2LCA1MS41MDEyNjUxMDUwNzE3MjRdLCBbLTIuNjE2ODg1MzgxMjI0MDcxOCwgNTEuNDk4MjE0NjkzODIzNzNdLCBbLTIuNjE3NjE2MTMwNzE4NTQ2LCA1MS40OTM4ODk4MjA1MjQyNl0sIFstMi42MjIwMDE0NjU4OTg2MTUzLCA1MS40OTI2MTUzMjA4Njc2Nl0sIFstMi42MjU2NTU5NDcxNDA0MjYsIDUxLjQ5NTY2NTk1NDU5ODMyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fN2ZjYmU5NmQ0MWI0NDNhYWE1ZWVkYTQ1MDg0YzhiNzcuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZTE1NDVkOTU1MTExNDdhNjg4NWI3MTgyMDk4ZGNmZjcgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41OTM1MDI5NzU4MDkzMjEsIDUxLjUxMzIzMjQ3NTg5MDYyXSwgWy0yLjU4OTExOTQyNTYzMzc0NTgsIDUxLjUxNDUwNjA0MjkyNDZdLCBbLTIuNTg1NDY1NjQ4NjE2OTQxLCA1MS41MTE0NTY0MTczMjQ0MjVdLCBbLTIuNTg2MTk1MjM4NzA1NTEzNiwgNTEuNTA3MTMzMDAyMTgwNDVdLCBbLTIuNTkwNTc4ODkzMTg5NzI3MywgNTEuNTA1ODU5MTc1MTMxNDU1XSwgWy0yLjU5NDIzMjg1MzI4NjAxMywgNTEuNTA4OTA5MDIzMjM5MDJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9lMTU0NWQ5NTUxMTE0N2E2ODg1YjcxODIwOThkY2ZmNy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9hZmEyNDM5ZDM5ZDY0ZWY4OGQwYzQyOTY2NTFiNjI5YSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU1MzMxODk0NTg5MDMsIDUxLjUwNDM1Mjk4ODY2MjZdLCBbLTIuNTQ4OTM2NzY2MTg5NzYzLCA1MS41MDU2MjY2NjMzMjExNV0sIFstMi41NDUyODI5MjMzNTI4MjQ3LCA1MS41MDI1NzczMzI4ODc1M10sIFstMi41NDYwMTEwNzY4OTc2OTY3LCA1MS40OTgyNTQxMDU0MjE5N10sIFstMi41NTAzOTMzNjA1MjU5MDQsIDUxLjQ5Njk4MDE3MDgzODExXSwgWy0yLjU1NDA0NzM4NjY5MDg3OTUsIDUxLjUwMDAyOTcyMzY0MjY2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fYWZhMjQzOWQzOWQ2NGVmODhkMGM0Mjk2NjUxYjYyOWEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZDliMmNlOWNjMjVhNGQzYWJhNzY3ZTExZmIxOGY3ZjUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi40OTcwMDQ1MzE4NjA1Mjk0LCA1MS40MTc4OTYyNDIzNjE1Nl0sIFstMi40OTI2MjIwMzk4OTIxMTI2LCA1MS40MTkxNzI4Mzk4Mzg3OF0sIFstMi40ODg5NjYwMTMxOTExNjg2LCA1MS40MTYxMjE4OTU5Mzg4Ml0sIFstMi40ODk2OTIyOTQ2ODQwMzM0LCA1MS40MTE3OTQxMzI4NjMzN10sIFstMi40OTQwNzQ4ODk0ODM3ODQzLCA1MS40MTA1MTcyNzU1NzAxXSwgWy0yLjQ5NzczMTA5OTk2ODcsIDUxLjQxMzU2ODQ0MTE2NTc5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fZDliMmNlOWNjMjVhNGQzYWJhNzY3ZTExZmIxOGY3ZjUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNDI0MDA1NDE3MjJjNDhhZmI3YmIwZTNhZjlkODIyNjYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42ODkyODU0MTAyMzA2OTY0LCA1MS40NDAxMzUxNzA1MTc3ODVdLCBbLTIuNjg0ODk1NzU3Mjk4OTY3LCA1MS40NDE0MTIwMTQ1OTk5M10sIFstMi42ODEyMzk0NjI4NTIwOTUsIDUxLjQzODM1OTA5ODEwNjZdLCBbLTIuNjgxOTcyNjM4NzIxMDQ1LCA1MS40MzQwMjkxMTUzMTE1OF0sIFstMi42ODYzNjIzOTYxNTA5MTgsIDUxLjQzMjc1MjAxMDk3ODE4NF0sIFstMi42OTAwMTg4NzMyMjI5NTczLCA1MS40MzU4MDUxNDk2ODg1N11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzQyNDAwNTQxNzIyYzQ4YWZiN2JiMGUzYWY5ZDgyMjY2LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2Y0MzEwOGRiYjIwYTRjNDBiNmFlZjRjNDIwMDhkZWJkID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjQ5MDQ1MDQ5Njc3MzA3NywgNTEuNTA1MzE5ODY0MjQxMTk0XSwgWy0yLjY0NDY1OTAwMDAzODQzODUsIDUxLjUwNjU5NDAzOTI0MDEzNF0sIFstMi42NDEwMDQ3NDQ4MzIwNTg0LCA1MS41MDM1NDM0NTA3MTIwMV0sIFstMi42NDE3MzYzNTY1MDg4MzU2LCA1MS40OTkyMTg0NjQ2MTc5XSwgWy0yLjY0NjEyMjUxMDgyOTMwNiwgNTEuNDk3OTQ0MDI5NDc0ODVdLCBbLTIuNjQ5Nzc2OTQ4ODAwNjUzMywgNTEuNTAwOTk0ODQwNTY3NTg2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fZjQzMTA4ZGJiMjBhNGM0MGI2YWVmNGM0MjAwOGRlYmQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZTQxNzUxYTcyMzEyNDIzMGFmZmQ0MzMzNTJjOTBkYWMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41MzcyMDEwOTA2NzUyMzE0LCA1MS40MjY3NjkxODQ4NzE2Ml0sIFstMi41MzI4MTcyMjE3OTEzNTksIDUxLjQyODA0NTY3NTc5ODUzNl0sIFstMi41MjkxNjEyNTEyNzIwNjksIDUxLjQyNDk5NDQzNDk3NjQyNl0sIFstMi41Mjk4ODg5NjYxMDkxNTgsIDUxLjQyMDY2NjQ4MTM5MjQ5NV0sIFstMi41MzQyNzI5MzgyMDUxNjgzLCA1MS40MTkzODk3MzA1NTk0NV0sIFstMi41Mzc5MjkwOTIyNjEzMTA3LCA1MS40MjI0NDExOTMyMTM5Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2U0MTc1MWE3MjMxMjQyMzBhZmZkNDMzMzUyYzkwZGFjLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzJjOGMxYzkzZDY0NjQzYmZhYWQzMzkyZmE1ZTU3YzZmID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjc2ODQxMTE2NDQzNTQ0LCA1MS40NjQzMzI4MDUyNDczOV0sIFstMi42NzI0NTI2OTg3MzU5NywgNTEuNDY1NjA4NjcyNjE3OTVdLCBbLTIuNjY4Nzk3MTQ5NzMxNjkxLCA1MS40NjI1NTY1ODU5NzU1ODRdLCBbLTIuNjY5NTI5ODM1NzgxNzY0LCA1MS40NTgyMjg0MDk2MDg4Ml0sIFstMi42NzM5MTgzNTgwNzUyNzQsIDUxLjQ1Njk1MjI4MjAyMDgzXSwgWy0yLjY3NzU3NDA4OTc0MjAzNiwgNTEuNDYwMDA0NTkxMDE0NTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8yYzhjMWM5M2Q2NDY0M2JmYWFkMzM5MmZhNWU1N2M2Zi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9mN2JlZDhiNTNlOGY0YzMyYjY0MDI3ZGI5NmU0ZmU3ZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjQ4OTAzODExNzM3MTAyMjUsIDUxLjQ5MDE0OTk5NzgwMjQ2XSwgWy0yLjQ4NDY1ODEzODIyNzU3NywgNTEuNDkxNDIzODQ0MzYzNTNdLCBbLTIuNDgxMDA0MTk5MjU3NDIxLCA1MS40ODgzNzQ5ODYzODU1XSwgWy0yLjQ4MTczMDA1NTcxNTk3MDMsIDUxLjQ4NDA1MjA1OTY5MTI5XSwgWy0yLjQ4NjExMDEzODE3NzU0NjMsIDUxLjQ4Mjc3Nzk1MzM0ODQ2XSwgWy0yLjQ4OTc2NDI2MDg3MTc4OTYsIDUxLjQ4NTgyNzAzMzQ3OTE1NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2Y3YmVkOGI1M2U4ZjRjMzJiNjQwMjdkYjk2ZTRmZTdmLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2YzYTk0ZjNhYWM0ZTRhNDI5YmMyMmMyZDI3YWU2NDZmID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjQzMjA4OTE5MzAwODIzNSwgNTEuNDE2NDg5Njg2NjMzODldLCBbLTIuNjM4ODIwNDIxMjI1OTUwNSwgNTEuNDE3NzY3MTU3ODg0MTVdLCBbLTIuNjM1MTYzNjYxMzQzMTc5NywgNTEuNDE0NzE0MjEzMjI3NDM0XSwgWy0yLjYzNTg5NTIxNjYxMzE0NTMsIDUxLjQxMDM4MzU3NTM0NjE3XSwgWy0yLjY0MDI4MzgxODY0NzE1MzMsIDUxLjQwOTEwNTg0Mzk0NTIzXSwgWy0yLjY0Mzk0MDc2MTQ2MTM1NCwgNTEuNDEyMTU5MDEwNTczN11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2YzYTk0ZjNhYWM0ZTRhNDI5YmMyMmMyZDI3YWU2NDZmLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2I4MWFmZWI4OWFkYjRmY2M5ZDA4ZDBmZWQzNzhkZDA0ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNDk5OTk5NjkzMjc3MTk3NywgNTEuNDk5Mjk2NjQ0ODQ2MzZdLCBbLTIuNDk1NjE5NTQyMDEzMDk5MywgNTEuNTAwNTcwMjEwMTM0OThdLCBbLTIuNDkxOTY1ODA5NjY0MjUwNywgNTEuNDk3NTIxNDU2MjU0OTQ0XSwgWy0yLjQ5MjY5MjA0NDk0MjEwMDYsIDUxLjQ5MzE5ODkxNDg1MDE1NF0sIFstMi40OTcwNzIyOTk2NzkyOTYsIDUxLjQ5MTkyNTA4OTc1Njk0XSwgWy0yLjUwMDcyNjIxNTY3NDg4MywgNTEuNDk0OTc0MDY1ODcwNjVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9iODFhZmViODlhZGI0ZmNjOWQwOGQwZmVkMzc4ZGQwNC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xZjQ3YjM5NDQ3ZmU0YWYzYmM3ZTVkODRkY2I3NDBjZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjUyMTEyMTY3NTM2MjMwNywgNTEuNDIzMjE5NzY1Nzc5OTI2XSwgWy0yLjUxNjczODM1Njc5NDY5MiwgNTEuNDI0NDk2Mjk5MzQ0MV0sIFstMi41MTMwODIzNjMyNzI2ODA2LCA1MS40MjE0NDUxNzcyODAwMV0sIFstMi41MTM4MDk1MDQ2OTE4MzEsIDUxLjQxNzExNzI5OTg3MTU1XSwgWy0yLjUxODE5MjkyNjMxOTI1OTUsIDUxLjQxNTg0MDUwNjQzNzI4NF0sIFstMi41MjE4NDkxMDM0NzcwNzEsIDUxLjQxODg5MTg1MDI3OTA3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fMWY0N2IzOTQ0N2ZlNGFmM2JjN2U1ZDg0ZGNiNzQwY2Yuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNzBkMzVjMWVjZjhjNDUzOTliNTYzMjUzZmM3NDNmMWUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41MTA5MDExNDQ4NTUyMjMsIDUxLjQzNDQyNzA0NDI2NzQ3XSwgWy0yLjUwNjUxODU4MzI1NTc0MTMsIDUxLjQzNTcwMzEwMDc2MjM4XSwgWy0yLjUwMjg2Mjk1NzA2OTk0NzcsIDUxLjQzMjY1MjQyMjMzNDFdLCBbLTIuNTAzNTg5NzA4ODE0MTE5MiwgNTEuNDI4MzI1NDY1NTc3MDk2XSwgWy0yLjUwNzk3MjM3MzQ3OTAzNSwgNTEuNDI3MDQ5MTQ5MjM3NzhdLCBbLTIuNTExNjI4MTgzMzQzNzA4NiwgNTEuNDMwMTAwMDQ5NDk3MzM0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fNzBkMzVjMWVjZjhjNDUzOTliNTYzMjUzZmM3NDNmMWUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNjM0OTEzODMyODMxNDYwNDg3YzgzOWMxNmU5MmJhYTQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NDM3OTkxOTUzNDg2NDQsIDUxLjQ2MTg4MjQ0MzY3NDQwNV0sIFstMi41Mzk0MTYxMTg0MTIyMjU1LCA1MS40NjMxNTc2NTY0MDU0MTRdLCBbLTIuNTM1NzYxMTEzMDM2NDU5LCA1MS40NjAxMDcyODgyMTk5N10sIFstMi41MzY0ODkwMDExNTk4MTYyLCA1MS40NTU3ODE0ODUyMjU4XSwgWy0yLjU0MDg3MjE4MTYyNjk3MTUsIDUxLjQ1NDUwNjAxMjU4MTE4NF0sIFstMi41NDQ1MjczNzA0NDkzNTUsIDUxLjQ1NzU1NjYwMjg0MTg2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fNjM0OTEzODMyODMxNDYwNDg3YzgzOWMxNmU5MmJhYTQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMTE3YzY5ZDM1MTdlNDBhMGEwODZkYWMyODZhNGQyMjQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42Nzc1NjQ1ODg0MjUwMjM3LCA1MS40ODQ2OTQzNDU0MjkxNF0sIFstMi42NzMxNzY3NTcxNjk2MzQzLCA1MS40ODU5Njk0NTM2MDc5OF0sIFstMi42Njk1MjE3ODU5NjEyMzIsIDUxLjQ4MjkxNzkxNTc4NDkyXSwgWy0yLjY3MDI1NDQ2MzM4OTY0OTcsIDUxLjQ3ODU5MTA0NzI5NDddLCBbLTIuNjc0NjQyMzk5MzkxODE5LCA1MS40NzczMTU2Nzg5MDE0NTVdLCBbLTIuNjc4Mjk3NTUzMjI4MDI0NCwgNTEuNDgwMzY3NDM5MjEwMzhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8xMTdjNjlkMzUxN2U0MGEwYTA4NmRhYzI4NmE0ZDIyNC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lOWNmNDdjMjA2ZjI0ZjhjYWY0NGVjMWIxOGQ4ODI0YyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY2MjIyNDQyMTg1NDg1NTYsIDUxLjQyNzQyNDMyODQ5ODAyXSwgWy0yLjY1NzgzNTQ4MjAwODEzNzQsIDUxLjQyODcwMTQ5NjkwNTE2XSwgWy0yLjY1NDE3ODk0NjgxMjE1MzUsIDUxLjQyNTY0ODU5NTkxNzI0NV0sIFstMi42NTQ5MTExNjg2Njg3MTE3LCA1MS40MjEzMTgzMDQ0Mzg5M10sIFstMi42NTkzMDAyMTI3MDU5OTE1LCA1MS40MjAwNDA4NzU4Mzk4MjRdLCBbLTIuNjYyOTU2OTMwNzA1NDI1NSwgNTEuNDIzMDkzOTk4OTA4NDhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9lOWNmNDdjMjA2ZjI0ZjhjYWY0NGVjMWIxOGQ4ODI0Yy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9kMGFhMjdhOTNmNGI0NzM0YmYwNDI2NWFmMmNhZGU5MCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU4OTEyNDQyOTI3NTEyNjUsIDUxLjUzOTE2Njk5OTI4Njg4NF0sIFstMi41ODQ3NDE4NDQyNTE5ODgsIDUxLjU0MDQzOTU2OTQyMzM4XSwgWy0yLjU4MTA4ODgyNjkzNTI0NjMsIDUxLjUzNzM5MDcxNjI5MzU3XSwgWy0yLjU4MTgxODIxMTU4NDU1MjcsIDUxLjUzMzA2OTA3MDM1NzUzNF0sIFstMi41ODYyMDA5MDEwNzkwMjUsIDUxLjUzMTc5NjI0MDIyMjc5Nl0sIFstMi41ODk4NTQxMDE0NjIxNDEyLCA1MS41MzQ4NDUzMTYwMTk5NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2QwYWEyN2E5M2Y0YjQ3MzRiZjA0MjY1YWYyY2FkZTkwLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2NiODg4NTJlNzRhNjRlYjg4YTIxZjU3NGRmNGExNGU3ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTQyMzU3MDM4MDQ4NzUxMiwgNTEuNDk1MjA0NjExNjg4OTRdLCBbLTIuNTM3OTc1MDI5MDQxOTE3LCA1MS40OTY0Nzg1Njc3NjI2NV0sIFstMi41MzQzMjA5Nzc2ODU1NiwgNTEuNDkzNDI5MTMzMTA0NzU1XSwgWy0yLjUzNTA0ODc1MTkzOTY1MSwgNTEuNDg5MTA1NTIwMDgwODFdLCBbLTIuNTM5NDMwODY0NzE5MTY4LCA1MS40ODc4MzEzMDQxMDQ2MjRdLCBbLTIuNTQzMDg1MDk5NDgxMjI1LCA1MS40OTA4ODA5NjEwNTI0MDVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9jYjg4ODUyZTc0YTY0ZWI4OGEyMWY1NzRkZjRhMTRlNy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl83NjRhNmEyYThlODY0ZTZmYTYzNTMxZjBlMzk2NjQ0MiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjUyNTU0MDY5NTk1MzQ3MSwgNTEuNDcxMzA3NzQyMjg3MzFdLCBbLTIuNTIxMTU4NjUwODY0OTYyLCA1MS40NzI1ODI0OTk0ODQwMDVdLCBbLTIuNTE3NTA0MDAwNDk3MjczNSwgNTEuNDY5NTMyNjM0NzAwMzhdLCBbLTIuNTE4MjMxMjExNjg4MTc4LCA1MS40NjUyMDc3OTA2MTY0NTRdLCBbLTIuNTIyNjEzMzYwMjM2NjYsIDUxLjQ2MzkzMjc3MzU1MDA2XSwgWy0yLjUyNjI2ODE5NDE0MzU5MjMsIDUxLjQ2Njk4Mjg2MDQzNDgyNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzc2NGE2YTJhOGU4NjRlNmZhNjM1MzFmMGUzOTY2NDQyLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2QzNGI5MzBhMDQwZTQ3ZTI4NTgwMjA5YjBlNGE3MThmID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjY5NTIxNzg1OTYxMjMyLCA1MS40ODI5MTc5MTU3ODQ5Ml0sIFstMi42NjUxMzQyMjcwNzcwMTMzLCA1MS40ODQxOTMwNDU0NDg2NF0sIFstMi42NjE0NzkyNDA5NDEzNTkyLCA1MS40ODExNDE1NjY4MjEwMl0sIFstMi42NjIyMTE2MzEwMjEzMTEsIDUxLjQ3NjgxNDczNjA2ODY2XSwgWy0yLjY2NjU5OTI5NDU3NjEzNDgsIDUxLjQ3NTUzOTM0NjIwODUxXSwgWy0yLjY3MDI1NDQ2MzM4OTY0OTcsIDUxLjQ3ODU5MTA0NzI5NDddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9kMzRiOTMwYTA0MGU0N2UyODU4MDIwOWIwZTRhNzE4Zi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9iMmE3YzU4ZDYxYzY0NTQyYTM4MDEwN2MwY2RiYmI5NCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjUzMDY1MDYxNzc2ODEzMjMsIDUxLjQ2NTcwNzg2NDc4MDcyXSwgWy0yLjUyNjI2ODE5NDE0MzU5MjMsIDUxLjQ2Njk4Mjg2MDQzNDgyNV0sIFstMi41MjI2MTMzNjAyMzY2NiwgNTEuNDYzOTMyNzczNTUwMDZdLCBbLTIuNTIzMzQwNzY2NDQ1ODc0NSwgNTEuNDU5NjA3NDY4OTM0Ml0sIFstMi41Mjc3MjMyOTM1Mjc2OTQ1LCA1MS40NTgzMzIyMTMzOTc0M10sIFstMi41MzEzNzgzMTA5NTIzNDUzLCA1MS40NjEzODI1MjIzNTY3Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2IyYTdjNThkNjFjNjQ1NDJhMzgwMTA3YzBjZGJiYjk0LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2QwYzk2OWViMmFmNDQwNTNhZTg0Yzk5MzFmOTJkOTQyID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjgwNTE1NDk2NzUxMzc4NSwgNTEuNDE3OTgzOTM0NzQ3NTldLCBbLTIuNjc2MTI1NTMwNTYyNjA1NywgNTEuNDE5MjYxNTU5NTY3OTldLCBbLTIuNjcyNDY4NjQ0MTQ2ODc0NCwgNTEuNDE2MjA4MTU0OTU0NjNdLCBbLTIuNjczMjAxNTQxMjE5NDM0OCwgNTEuNDExODc2OTAzNDYzOTM0XSwgWy0yLjY3NzU5MTYxMTY2ODkzMywgNTEuNDEwNTk5MDE4NDA3OF0sIFstMi42ODEyNDg2ODA3OTQ0MjA1LCA1MS40MTM2NTI2NDUwNzU1N11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2QwYzk2OWViMmFmNDQwNTNhZTg0Yzk5MzFmOTJkOTQyLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzExODhlNGQwZjFjNTQ5NzM4YmExODRjOWI4NWFkNzg0ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTk1Njc3NDQ3NjcxNTUxNiwgNTEuNDI2MjA5MDM2NzQ5NjddLCBbLTIuNTkxMjkxMTc1OTY2MTksIDUxLjQyNzQ4NTg3Njk5NDY0NV0sIFstMi41ODc2MzQ5MTIyNDAzMjE1LCA1MS40MjQ0MzM4MzYwMTkwNl0sIFstMi41ODgzNjQ3MzcwMzMyMTc1LCA1MS40MjAxMDQ3MzI4NTMxNF0sIFstMi41OTI3NTExMTI0MDE5MzQyLCA1MS40MTg4Mjc2MzI1NjgxNzRdLCBbLTIuNTk2NDA3NTU5MzIzNywgNTEuNDIxODc5ODk1NDg2NjFdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8xMTg4ZTRkMGYxYzU0OTczOGJhMTg0YzliODVhZDc4NC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl82ODJiNmZiOWUzOTM0NTZiODhjNTIzNTYyZGMyMWE3ZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU4NjE4MjQ3MTA2MzI3OSwgNTEuNDU3NzgwNDU3MDY1NzRdLCBbLTIuNTgxNzk3NTQwMjY4OTMyNiwgNTEuNDU5MDU2MDYxMjgwNDJdLCBbLTIuNTc4MTQyMjE4MzgwNjY3NSwgNTEuNDU2MDA1MDExODg0MjJdLCBbLTIuNTc4ODcxNjQ0MDkxMjA5LCA1MS40NTE2NzgxMzYxMzk2NV0sIFstMi41ODMyNTY2Nzg3MTU0NjY1LCA1MS40NTA0MDIyNzE5MTM0OF0sIFstMi41ODY5MTIxODM4MDg1NzIyLCA1MS40NTM0NTM1NDM0NDA5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fNjgyYjZmYjllMzkzNDU2Yjg4YzUyMzU2MmRjMjFhN2Yuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYzI0NzA4MzdiMDBmNDAyNGFjNDI0ZGZhZjNiNTU2NTkgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42OTU4NTE2ODQ1Nzk1NTksIDUxLjQ3NTI2NTYxNjkzNTUxNl0sIFstMi42OTE0NjI4MjcyNDQ0NTUsIDUxLjQ3NjU0MTE4MTE1NzIzXSwgWy0yLjY4NzgwNzUwNjAwNjY1MywgNTEuNDczNDg5MTM5MTQyNTFdLCBbLTIuNjg4NTQwODU5NTc5MTc4LCA1MS40NjkxNjEzMTA0NDM1N10sIFstMi42OTI5Mjk4MjE3MzE1OSwgNTEuNDY3ODg1NDg1OTYzMzddLCBbLTIuNjk2NTg1MzI1NTAzNDEwNywgNTEuNDcwOTM3NzUwNDM4MTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9jMjQ3MDgzN2IwMGY0MDI0YWM0MjRkZmFmM2I1NTY1OS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lOTk3NzQ1ZmU1YzQ0Zjg1YTAwM2ZkNWM2NTMwY2Y5MiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjUyNzc3MjU1Njg0NTcxOTQsIDUxLjUzMjMyODM5MTAyMDI4Nl0sIFstMi41MjMzOTIyNzAyODQ4MjA2LCA1MS41MzM2MDA4NzM5MTAyXSwgWy0yLjUxOTczOTM0NDQxMTE2NSwgNTEuNTMwNTUyNjU1NzI2OTddLCBbLTIuNTIwNDY2NTIxNjcyMDQyOCwgNTEuNTI2MjMxNzMyMTQ4NjddLCBbLTIuNTI0ODQ2OTEyMTczMzQzNywgNTEuNTI0OTU4OTg5Mzk5MDhdLCBbLTIuNTI4NTAwMDIxNDgyNjg0MywgNTEuNTI4MDA3NDMwMDg1MDddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9lOTk3NzQ1ZmU1YzQ0Zjg1YTAwM2ZkNWM2NTMwY2Y5Mi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8yZTNkYTk0NjE2NmQ0MzI0OTgyNjAwYzU3YWFhYTZmMyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjcwMDI1NDAzNjA0MjQxMywgNTEuNDQ5MjkzOTk0NjY1MzNdLCBbLTIuNjk1ODY0MjE1NjE0NTc0NSwgNTEuNDUwNTcwNTU3MDg1N10sIFstMi42OTIyMDgxMzM3MzkwODgsIDUxLjQ0NzUxNzc0NDEwNjIxNF0sIFstMi42OTI5NDE2ODk3NTM4NTQzLCA1MS40NDMxODgxNDY0MDUyOF0sIFstMi42OTczMzE2MTQ4MzUwOTA1LCA1MS40NDE5MTEzMjM3MTA1Ml0sIFstMi43MDA5ODc4NzkyNTc0MDc0LCA1MS40NDQ5NjQzNTg5ODg1ODVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8yZTNkYTk0NjE2NmQ0MzI0OTgyNjAwYzU3YWFhYTZmMy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xYjZiZjEwNWI5ZWU0MTBlYWJiMmNlODc5NjA1Njg0ZCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjYzMDc3MDkyOTY5MzA4NiwgNTEuNTE0NzQwMTkzODYwNV0sIFstMi42MjYzODU5MDgxMDg3NTA0LCA1MS41MTYwMTM5MTMyMzE4NF0sIFstMi42MjI3MzIwMDQwNDcwNzI1LCA1MS41MTI5NjM4Mjg5NDc0MV0sIFstMi42MjM0NjI5Mzg3MjA2MjA4LCA1MS41MDg2Mzk4MDI2OTkwMTVdLCBbLTIuNjI3ODQ4MDY0OTE1NzI2LCA1MS41MDczNjU4MjMyMjc3NF0sIFstMi42MzE1MDIxNTE4MzU3NzYsIDUxLjUxMDQxNjEzMDEwMjM2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fMWI2YmYxMDViOWVlNDEwZWFiYjJjZTg3OTYwNTY4NGQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMjg2YWZjOGQxZTU3NDE3ZWJkMzI1Njk1NDAxNzQ0MGIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi40OTQxNDQ2MTkwMDMzMTE2LCA1MS40ODQ1NTI5NDg1ODYyMl0sIFstMi40ODk3NjQyNjA4NzE3ODk2LCA1MS40ODU4MjcwMzM0NzkxNTRdLCBbLTIuNDg2MTEwMTM4MTc3NTQ2MywgNTEuNDgyNzc3OTUzMzQ4NDZdLCBbLTIuNDg2ODM2MTg5OTIxNTQ2LCA1MS40Nzg0NTQ1NjYxOTYxODRdLCBbLTIuNDkxMjE2NjUxMzY4NjEwNywgNTEuNDc3MTgwMjIxNTA4NDVdLCBbLTIuNDk0ODcwOTU3NzY1NDgzNSwgNTEuNDgwMjI5NTIzNzY1MzNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8yODZhZmM4ZDFlNTc0MTdlYmQzMjU2OTU0MDE3NDQwYi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl84MmIyY2QwMzQ3Yjc0OTdkYWJkZTM2YzU0ZGE0YWI3OSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjcwMDk3NDU1OTY1MTczOSwgNTEuNDY5NjYxOTQ3NDExNzJdLCBbLTIuNjk2NTg1MzI1NTAzNDEwNywgNTEuNDcwOTM3NzUwNDM4MTRdLCBbLTIuNjkyOTI5ODIxNzMxNTksIDUxLjQ2Nzg4NTQ4NTk2MzM3XSwgWy0yLjY5MzY2MzM2OTYwNTE3MzUsIDUxLjQ2MzU1NzE5NjAyNjMxNV0sIFstMi42OTgwNTI3MDg1Njc5NDM1LCA1MS40NjIyODExMzI3MjgzOV0sIFstMi43MDE3MDgzOTQ4NTE5MzA3LCA1MS40NjUzMzM2MTk2MzY1Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzgyYjJjZDAzNDdiNzQ5N2RhYmRlMzZjNTRkYTRhYjc5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2RhNTA0YTVlODgzZjQ2NWZhZmZhNTYxOTczOGZjMDBlID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTE4OTM5NTk2NzA3MTAzOCwgNTEuNDM2MjAxNzQ2ODY3NF0sIFstMi41MTQ1NTY3NTk3MjY4NzA1LCA1MS40Mzc0Nzc3ODIwMjE5NF0sIFstMi41MTA5MDExNDQ4NTUyMjMsIDUxLjQzNDQyNzA0NDI2NzQ3XSwgWy0yLjUxMTYyODE4MzM0MzcwODYsIDUxLjQzMDEwMDA0OTQ5NzMzNF0sIFstMi41MTYwMTExMjM0NjU1NDE2LCA1MS40Mjg4MjM3NTQ0ODAzOV0sIFstMi41MTk2NjY5MjE5NjY2NDQzLCA1MS40MzE4NzQ3MTQwOTM0NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2RhNTA0YTVlODgzZjQ2NWZhZmZhNTYxOTczOGZjMDBlLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2YxOWU4YmMzNDU4ZTQyOTU4ODRlZDcyODQ3OTYyZWVmID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjQ0NjY2Nzk3MjU5Njk3MywgNTEuNDU3MjI4NDEyNDc5NzRdLCBbLTIuNjQwMjc5NDcwMjUyNDAyNCwgNTEuNDU4NTA0MzY1NTYyNDI2XSwgWy0yLjYzNjYyMzg2MzQxNjE5NDMsIDUxLjQ1NTQ1MjUxNjA4MDcyXSwgWy0yLjYzNzM1NTQwMDczNDA5LCA1MS40NTExMjQ0OTEyNzE5NF0sIFstMi42NDE3NDI4MzIwMjI2NjE3LCA1MS40NDk4NDgyNzgwNDM4Nl0sIFstMi42NDUzOTg2MjE3MjEzNDMsIDUxLjQ1MjkwMDM0OTc2NzQ2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fZjE5ZThiYzM0NThlNDI5NTg4NGVkNzI4NDc5NjJlZWYuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNmU2N2QxYzBmM2Y1NGQ4MmJjNjYzNmYyY2ZhMWU5OWQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi40NzUxNDczNTc2MzkwNDkzLCA1MS40NzM2MzA1MDUxODkyOF0sIFstMi40NzA3Njc0NDc4MzM4NDk1LCA1MS40NzQ5MDQ4OTI3MzUyMV0sIFstMi40NjcxMTMxMDgwMDIwMjQsIDUxLjQ3MTg1NTc2Nzg3Mjc1XSwgWy0yLjQ2NzgzODQ5NDE1NTUyOCwgNTEuNDY3NTMyMDMzNDQ0MDldLCBbLTIuNDcyMjE4NTA3MDQ1MDk5LCA1MS40NjYyNTczODYxNDQyXSwgWy0yLjQ3NTg3MzAzMDcwNjE1NiwgNTEuNDY5MzA2NzMzMDI0NDhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl82ZTY3ZDFjMGYzZjU0ZDgyYmM2NjM2ZjJjZmExZTk5ZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl81MDQyNTYxOTAxMTg0ZGRmYmY0Yjg4MDRiMzI4NTc4NCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjYyNTY1NjYyMTE1NjcyNDUsIDUxLjQ0NjI5Njc2MDQzMTkzXSwgWy0yLjYyMTI2OTczNjI3NTE1MiwgNTEuNDQ3NTczMDE2NDQ1NzQ1XSwgWy0yLjYxNzYxMzkwNDkxMDc3OSwgNTEuNDQ0NTIxMTIyNzEyNzVdLCBbLTIuNjE4MzQ0Nzc1NDQ2ODgzNiwgNTEuNDQwMTkyNzUwODMwMjg1XSwgWy0yLjYyMjczMTc2NDM3ODM4NzYsIDUxLjQzODkxNjIzNDcxMjE2XSwgWy0yLjYyNjM4Nzc3ODczMzE1NDcsIDUxLjQ0MTk2ODM1MDU3ODI4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fNTA0MjU2MTkwMTE4NGRkZmJmNGI4ODA0YjMyODU3ODQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fOWY5ODk3NWQ4Y2MwNDFkMmFlNTI1NmUyY2IwNGQxZmMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42NDgzMjk2MzY2MjgxNTUsIDUxLjQxMDg4MTMwMDQ3NzQzNV0sIFstMi42NDM5NDA3NjE0NjEzNTQsIDUxLjQxMjE1OTAxMDU3MzddLCBbLTIuNjQwMjgzODE4NjQ3MTUzMywgNTEuNDA5MTA1ODQzOTQ1MjNdLCBbLTIuNjQxMDE1NTY4MDk5NDA0LCA1MS40MDQ3NzQ3NDUyNzMwOV0sIFstMi42NDU0MDQ1NDcyMjIzNDE4LCA1MS40MDM0OTY3NzUwMTMzMl0sIFstMi42NDkwNjE2NzI5NDYxNzY3LCA1MS40MDY1NTAxNjM1ODY2NjVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl85Zjk4OTc1ZDhjYzA0MWQyYWU1MjU2ZTJjYjA0ZDFmYy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9jMzYyZjkwYTk2MDM0MDk5OTI5YzNlYzg3MjE5NWNiMCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY1MzQ1MDkyNTEyNzE4MywgNTEuNDA1MjcyMjE0NjE5MjNdLCBbLTIuNjQ5MDYxNjcyOTQ2MTc2NywgNTEuNDA2NTUwMTYzNTg2NjY1XSwgWy0yLjY0NTQwNDU0NzIyMjM0MTgsIDUxLjQwMzQ5Njc3NTAxMzMyXSwgWy0yLjY0NjEzNjQ5MDgwMDk4MywgNTEuMzk5MTY1MjE1NTUyMDZdLCBbLTIuNjUwNTI1ODQ2OTM1MTA0NywgNTEuMzk3ODg3MDA2NDA4MzI1XSwgWy0yLjY1NDE4MzE1NTU0Njc1ODMsIDUxLjQwMDk0MDYxNjg5OTYwNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2MzNjJmOTBhOTYwMzQwOTk5MjljM2VjODcyMTk1Y2IwLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzBiNDk4MjRmOWQ2MTQzNGU4YzJmYzgwOGZkNDYzNjg1ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjQ5Nzg2MzI1OTg3MzU4NiwgNTEuNDUxNjI0MTU3OTQwODNdLCBbLTIuNjQ1Mzk4NjIxNzIxMzQzLCA1MS40NTI5MDAzNDk3Njc0Nl0sIFstMi42NDE3NDI4MzIwMjI2NjE3LCA1MS40NDk4NDgyNzgwNDM4Nl0sIFstMi42NDI0NzQ1NjM3NTg1Nzk0LCA1MS40NDU1MTk3OTIyNzU4OV0sIFstMi42NDY4NjIzNzIzMDMwMDYzLCA1MS40NDQyNDMzNDAyOTA4OV0sIFstMi42NTA1MTgzNDQ4NDIzODk3LCA1MS40NDcyOTU2MzQyMjk3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fMGI0OTgyNGY5ZDYxNDM0ZThjMmZjODA4ZmQ0NjM2ODUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNmE5M2ZlYzM5MTg2NGIwZTkwZWFhMThkZWNkNjI0ZjYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42ODcwODUyMjM1NTI2NzYsIDUxLjQ1MzEyMzQ2NDQ3ODM4XSwgWy0yLjY4MjY5NjA1MjAwMjc2NywgNTEuNDU0Mzk5ODA5NDYwNV0sIFstMi42NzkwNDAxMzc2OTUzNTM0LCA1MS40NTEzNDcyNzgxNDIxNl0sIFstMi42Nzk3NzMyMTIzMjgzMDIsIDUxLjQ0NzAxODE3OTU0MTI0Nl0sIFstMi42ODQxNjI0ODg0NTgzNzkyLCA1MS40NDU3NDE1NzQzMTU3M10sIFstMi42ODc4MTg1ODUzODQ2MDA0LCA1MS40NDg3OTQzMjc5MzIwMl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzZhOTNmZWMzOTE4NjRiMGU5MGVhYTE4ZGVjZDYyNGY2LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzZiOTQwNWNlYTM5MDQ3ODU4YTkzZjI1NDg1MGQ2ODZmID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNDg3NTM4MTQ5NDY0MjcsIDUxLjQ0OTQ1ODA0ODY5MDEzXSwgWy0yLjQ4MzE1Njk5OTY0MjA1NzMsIDUxLjQ1MDczMzQxMTE0MTQ4NV0sIFstMi40Nzk1MDE5MTM2MzI1NjQ3LCA1MS40NDc2ODM0NTc2MTUxNTZdLCBbLTIuNDgwMjI3NzkzNjYxODkyNCwgNTEuNDQzMzU3OTE5NzUwODk1XSwgWy0yLjQ4NDYwOTA0NjQ4MTYyNSwgNTEuNDQyMDgyMjk3NTExNzk2XSwgWy0yLjQ4ODI2NDMxNjI4Mzg3MjUsIDUxLjQ0NTEzMjQ3MjkyMjIxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fNmI5NDA1Y2VhMzkwNDc4NThhOTNmMjU0ODUwZDY4NmYuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNjE1Zjg2NGYwNjJhNDRhNWIwZGJmNjc3MzUzNGRkNTcgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41MDc5NzIzNzM0NzkwMzUsIDUxLjQyNzA0OTE0OTIzNzc4XSwgWy0yLjUwMzU4OTcwODgxNDExOTIsIDUxLjQyODMyNTQ2NTU3NzA5Nl0sIFstMi40OTk5MzM4ODc3NjI1NSwgNTEuNDI1Mjc0NjI0Njc0NjM2XSwgWy0yLjUwMDY2MDU0NzY3ODQ5NiwgNTEuNDIwOTQ3MjQ1NjUzMTZdLCBbLTIuNTA1MDQzMzE1MzI5ODgxLCA1MS40MTk2NzA2Njk0NzQ2XSwgWy0yLjUwODY5OTMyMDA4ODIxMDYsIDUxLjQyMjcyMTczMjE1NDI0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fNjE1Zjg2NGYwNjJhNDRhNWIwZGJmNjc3MzUzNGRkNTcuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYTA4ZjRjNGViYjlhNDU3YWFmMThlNTI2M2JjMGI1ODYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NDY3NjQ1MjQwNDY2ODAzLCA1MS41NDMyNDkxMDk5NDE5N10sIFstMi41NDIzODM3OTIyNzk3NjMsIDUxLjU0NDUyMTI4OTc3NjgyNF0sIFstMi41Mzg3MzEwODc5MzIyNzg2LCA1MS41NDE0NzMxMTc1MDI2NzZdLCBbLTIuNTM5NDU4OTMyMDUyNjE0NCwgNTEuNTM3MTUyNTQyNzgwNDRdLCBbLTIuNTQzODM5NzY3OTkxMDI3LCA1MS41MzU4ODAxMDMwNDUzOF0sIFstMi41NDc0OTI2NTU2NDY5MDk3LCA1MS41Mzg5Mjg0OTc5MzAzNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2EwOGY0YzRlYmI5YTQ1N2FhZjE4ZTUyNjNiYzBiNTg2LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2Y4YzI5NDIxZmEwZTQ3OTdiZGRlZTU1YmU4OWI3MTBlID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjg3ODA3NTA2MDA2NjUzLCA1MS40NzM0ODkxMzkxNDI1MV0sIFstMi42ODM0MTg5MjA3NDIzMTM2LCA1MS40NzQ3NjQ3MjQ4MzAyNl0sIFstMi42Nzk3NjM1ODQzMDAxMTkzLCA1MS40NzE3MTI3NDIwNjIwM10sIFstMi42ODA0OTY2NTA1NDczNjY0LCA1MS40NjczODQ5NTExNzA4Nl0sIFstMi42ODQ4ODUzNDA1NTI4MzUsIDUxLjQ2NjEwOTEwNTI0MjYzXSwgWy0yLjY4ODU0MDg1OTU3OTE3OCwgNTEuNDY5MTYxMzEwNDQzNTddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9mOGMyOTQyMWZhMGU0Nzk3YmRkZWU1NWJlODliNzEwZS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl82NTg1MmI0MzM4MTI0YTBiYTVjM2QzZWE5ZWMyZmYwZSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjYzOTU0Nzg0MDIzOTc5OSwgNTEuNDYyODMxOTY3Mjc0NDRdLCBbLTIuNjM1MTYwODkwNTY4NjIzMiwgNTEuNDY0MTA3NjgxNjM4NDFdLCBbLTIuNjMxNTA1NDY2NjE2NjUxLCA1MS40NjEwNTYwNTQ0MjUyOV0sIFstMi42MzIyMzY4MDk0NjA4OTIsIDUxLjQ1NjcyODQ5MDU3NzE0XSwgWy0yLjYzNjYyMzg2MzQxNjE5NDMsIDUxLjQ1NTQ1MjUxNjA4MDcyXSwgWy0yLjY0MDI3OTQ3MDI1MjQwMjQsIDUxLjQ1ODUwNDM2NTU2MjQyNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzY1ODUyYjQzMzgxMjRhMGJhNWMzZDNlYTllYzJmZjBlLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2E0MTQ0ODUyZTg5NTRlZWU4Y2FlN2Y5Yjg3M2ZlYjk4ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjcyNDQzOTg2ODM0OTY4MywgNTEuNDkwMjk1ODk4NTg0NzVdLCBbLTIuNjY4MDU2NTMyNzAwMzIyNSwgNTEuNDkxNTcwNzY4MDQ3MTNdLCBbLTIuNjY0NDAxNzQ0MTQxNTIzMywgNTEuNDg4NTE5NDUyNzM2NTI2XSwgWy0yLjY2NTEzNDIyNzA3NzAxMzMsIDUxLjQ4NDE5MzA0NTQ0ODY0XSwgWy0yLjY2OTUyMTc4NTk2MTIzMiwgNTEuNDgyOTE3OTE1Nzg0OTJdLCBbLTIuNjczMTc2NzU3MTY5NjM0MywgNTEuNDg1OTY5NDUzNjA3OThdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9hNDE0NDg1MmU4OTU0ZWVlOGNhZTdmOWI4NzNmZWI5OC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xOWVjZDcwMmRlYWQ0YzE0ODA0ZDJhZjMzZjRjYTNjNiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjYzODA4MTkwMzkzNzIwMSwgNTEuNDk2MTY3NzEyNjQyMjJdLCBbLTIuNjMzNjk2MDIyNTEyOTY3NSwgNTEuNDk3NDQyMTY5Mjk1NDk2XSwgWy0yLjYzMDA0MTU1NTUxNzg0MjcsIDUxLjQ5NDM5MTQ3NjQ0MDVdLCBbLTIuNjMwNzcyNzg3MTEzMDUxNSwgNTEuNDkwMDY2MTA0NDQ2Mjg1XSwgWy0yLjYzNTE1ODc3MzA2MzgwNywgNTEuNDg4NzkxMzg3NjcxNzFdLCBbLTIuNjM4ODEzNDIyOTAyMDg2LCA1MS40OTE4NDIzMDMwMTAxOTVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8xOWVjZDcwMmRlYWQ0YzE0ODA0ZDJhZjMzZjRjYTNjNi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl81MGU4Yzg1NjEzNDA0ZmEwOWFjNjM0Mzk0ZGJiMWMyMyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU5NzE2MDI5MTQwNzM0OCwgNTEuNTQwOTQzMzYyNzg4NDddLCBbLTIuNTkyNzc3NDMyNzQ0MDg2NywgNTEuNTQyMjE1OTExMzIyNjJdLCBbLTIuNTg5MTI0NDI5Mjc1MTI2NSwgNTEuNTM5MTY2OTk5Mjg2ODg0XSwgWy0yLjU4OTg1NDEwMTQ2MjE0MTIsIDUxLjUzNDg0NTMxNjAxOTk1XSwgWy0yLjU5NDIzNzA2NDY3MjkzNSwgNTEuNTMzNTcyNTA3NDY5NjM2XSwgWy0yLjU5Nzg5MDI1MTE1ODQ2NDcsIDUxLjUzNjYyMTY0MjIwMDAwNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzUwZThjODU2MTM0MDRmYTA5YWM2MzQzOTRkYmIxYzIzLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2MyOGE1YjY0NTBmYTQzNmI4NzNkYzc1MTJmNGFhNzQ1ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjA5NTc4NDA5NzE5MTg4OCwgNTEuNTE2Nzg0ODM0NzE4MzddLCBbLTIuNjA1MTk0MzEyNDA0ODk5LCA1MS41MTgwNTgzNTg2NjI1NF0sIFstMi42MDE1NDA1NjI5NTIzODAyLCA1MS41MTUwMDg2MTUwMjEyNDVdLCBbLTIuNjAyMjcwNzI3ODQzNTgwNCwgNTEuNTEwNjg1MTI0ODcxMzddLCBbLTIuNjA2NjU0OTI5NjE4ODkyLCA1MS41MDk0MTEzNDA4NzYyOV0sIFstMi42MTAzMDg4NjIwNTEyNTMsIDUxLjUxMjQ2MTMwNzA3OTU4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fYzI4YTViNjQ1MGZhNDM2Yjg3M2RjNzUxMmY0YWE3NDUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZGIxZmY3YThlNjgxNGQ4MDkzNDc2MjFlNjEyZDBiN2YgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41MzU4MDYwMzE0ODEwNjY2LCA1MS41MzQxMDQyMDY3OTI0MV0sIFstMi41MzE0MjU0NzAxNTY1MTM4LCA1MS41MzUzNzY2NjgxMDc3Nl0sIFstMi41Mjc3NzI1NTY4NDU3MTk0LCA1MS41MzIzMjgzOTEwMjAyODZdLCBbLTIuNTI4NTAwMDIxNDgyNjg0MywgNTEuNTI4MDA3NDMwMDg1MDddLCBbLTIuNTMyODgwNjg2ODIzODQzLCA1MS41MjY3MzQ3MDg4OTIxMzVdLCBbLTIuNTM2NTMzNzgzNTIwNzU0LCA1MS41Mjk3ODMyMDg1MDk2Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2RiMWZmN2E4ZTY4MTRkODA5MzQ3NjIxZTYxMmQwYjdmLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzc2YjZjOTMyOTZlYTRiOTg5MzU2YzI4OGRjNTE5NjAyID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTc4ODU0MTQyODA2NDE4LCA1MS40MDIyODgxNjE1MjA5M10sIFstMi41NzQ0Njc4MzQ2MTAwNTM0LCA1MS40MDM1NjU4MDMxNDcyNDVdLCBbLTIuNTcwODEwOTcwODI3ODE4NCwgNTEuNDAwNTEzMzM0NDE0NTFdLCBbLTIuNTcxNTQwMjMxOTIxNzIyLCA1MS4zOTYxODMwMDIzMDAxNF0sIFstMi41NzU5MjY2NDM0NjgwMjQsIDUxLjM5NDkwNTEwMDY2NzU1XSwgWy0yLjU3OTU4MzY5MDU3OTgyMSwgNTEuMzk3OTU3NzkxMTUzMDldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl83NmI2YzkzMjk2ZWE0Yjk4OTM1NmMyODhkYzUxOTYwMi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lMTIwOTU1YTJmMmE0MTk4YjVlZjMxYjc4NjgwMGNjOCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY5MjIwODEzMzczOTA4OCwgNTEuNDQ3NTE3NzQ0MTA2MjE0XSwgWy0yLjY4NzgxODU4NTM4NDYwMDQsIDUxLjQ0ODc5NDMyNzkzMjAyXSwgWy0yLjY4NDE2MjQ4ODQ1ODM3OTIsIDUxLjQ0NTc0MTU3NDMxNTczXSwgWy0yLjY4NDg5NTc1NzI5ODk2NywgNTEuNDQxNDEyMDE0NTk5OTNdLCBbLTIuNjg5Mjg1NDEwMjMwNjk2NCwgNTEuNDQwMTM1MTcwNTE3Nzg1XSwgWy0yLjY5Mjk0MTY4OTc1Mzg1NDMsIDUxLjQ0MzE4ODE0NjQwNTI4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fZTEyMDk1NWEyZjJhNDE5OGI1ZWYzMWI3ODY4MDBjYzguc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYzJkYWExMDFmMTZlNDM2YmFkOWVkODM3MGM2OGE5MjEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42MDA3OTQyMDg2NTE0NjEsIDUxLjQyMDYwMjgxNjUyMDQ2NF0sIFstMi41OTY0MDc1NTkzMjM3LCA1MS40MjE4Nzk4OTU0ODY2MV0sIFstMi41OTI3NTExMTI0MDE5MzQyLCA1MS40MTg4Mjc2MzI1NjgxNzRdLCBbLTIuNTkzNDgxMTMxNjQzMDM1MywgNTEuNDE0NDk4MDY4NzY1MDldLCBbLTIuNTk3ODY3ODg0NjMxMjMyLCA1MS40MTMyMjA3Mjk3NDYxMV0sIFstMi42MDE1MjQ1MTQ3MjcxODk3LCA1MS40MTYyNzMyMTQ1ODA1MzVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9jMmRhYTEwMWYxNmU0MzZiYWQ5ZWQ4MzcwYzY4YTkyMS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl85NmE4MTM0Njc1NGI0YjE3OGNjNDMwZjY3MjgxNTAxYyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjYyMTk5OTYzNzMzNDA0NiwgNTEuNDE4NTQ2NDczNDM0NThdLCBbLTIuNjE3NjEyMDYzMTQzNjExNSwgNTEuNDE5ODIzNzQ4NTE2OTldLCBbLTIuNjEzOTU1NDU5Mjc2ODY1NywgNTEuNDE2NzcxMTQ0NzYzNTFdLCBbLTIuNjE0Njg2MjQ2NTU2OTM5LCA1MS40MTI0NDEwNDM5ODEyMV0sIFstMi42MTkwNzM5MjQ1NTcxNzc3LCA1MS40MTExNjM1MDg3OTcwNzRdLCBbLTIuNjIyNzMwNzExNDc2ODM3LCA1MS40MTQyMTYzMzQ0OTQ0M11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzk2YTgxMzQ2NzU0YjRiMTc4Y2M0MzBmNjcyODE1MDFjLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzA2NzY5MzA3Yjg3ODRhZTQ4ZDdkNDc2NzQ0ZmIxZDZlID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTY0MjQ5MTU0NzYwMzg2NSwgNTEuNDM5NDczMDgwMzIyMjZdLCBbLTIuNTU5ODY0NTY1MDQ3NTE0MywgNTEuNDQwNzQ5MjQ3Mjg1MTldLCBbLTIuNTU2MjA4ODI2MDE0ODA1LCA1MS40Mzc2OTc5OTA5NTg4MjRdLCBbLTIuNTU2OTM3NDkzMzQ0MDY0MywgNTEuNDMzMzcwMzQ1Njk4NTM1XSwgWy0yLjU2MTMyMjE4NjU3NjU2MjMsIDUxLjQzMjA5MzkxODc3MDI4XSwgWy0yLjU2NDk3ODEwODk2OTQ5OSwgNTEuNDM1MTQ1Mzk3MDY1MTM1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fMDY3NjkzMDdiODc4NGFlNDhkN2Q0NzY3NDRmYjFkNmUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZDRhNzM1MGI0ZGM4NGZjZjgwYTA1ZGIzZWZiOGU5ZDUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42ODU2MDc2NDgwMDQ5MzU2LCA1MS40ODY0NzA4NTU3NTU3M10sIFstMi42ODEyMTk1NDQ1MjkyNDQ0LCA1MS40ODc3NDU5NDI0NDM5N10sIFstMi42Nzc1NjQ1ODg0MjUwMjM3LCA1MS40ODQ2OTQzNDU0MjkxNF0sIFstMi42NzgyOTc1NTMyMjgwMjQ0LCA1MS40ODAzNjc0MzkyMTAzOF0sIFstMi42ODI2ODU3NjE1MjY2NjcsIDUxLjQ3OTA5MjA5MjI4OTc1NF0sIFstMi42ODYzNDA5MDAyMDg1OTQ3LCA1MS40ODIxNDM5MTE4MTc4MTVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9kNGE3MzUwYjRkYzg0ZmNmODBhMDVkYjNlZmI4ZTlkNS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9iYjhiODZhZWI3NWE0YTgxYjA2OGJjZTNiNGI1MjY0ZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY0ODMxODAzMTc4ODE1NSwgNTEuNDg0OTY2ODAzMDMzNjM2XSwgWy0yLjY0MzkzMTM5NTQ0MzIxOTgsIDUxLjQ4NjI0MTczNjk3MDI4XSwgWy0yLjY0MDI3NjU2Mjc4MzUxMTQsIDUxLjQ4MzE5MDU5OTE3NDgzXSwgWy0yLjY0MTAwODE4MzY3ODM1NTQsIDUxLjQ3ODg2NDMwNTAwOTgxXSwgWy0yLjY0NTM5NDkyNDU0NDMzNTMsIDUxLjQ3NzU4OTExMDkyNTczNF0sIFstMi42NDkwNDk5NDAwMDM3MSwgNTEuNDgwNjQwNDcxMTUxNjNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9iYjhiODZhZWI3NWE0YTgxYjA2OGJjZTNiNGI1MjY0Zi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8yNDVlZTA5M2RkMjI0NmFhOGQxYTU4M2QwMWMxMDZjZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY0NjEzMzczMDUxMDgxNywgNTEuNDIzODcyOTQ0MTIyNjM1XSwgWy0yLjY0MTc0NTMzNjQ3NDIwMzQsIDUxLjQyNTE1MDE1NTIxNzAyNV0sIFstMi42MzgwODg3NzMyNzg3OSwgNTEuNDIyMDk3MzczMTEyMDQ1XSwgWy0yLjYzODgyMDQyMTIyNTk1MDUsIDUxLjQxNzc2NzE1Nzg4NDE1XSwgWy0yLjY0MzIwODkxOTMwMDgyMzUsIDUxLjQxNjQ4OTY4NjYzMzg5XSwgWy0yLjY0Njg2NTY2NTM5OTU2LCA1MS40MTk1NDI2OTA3NjQ4NjRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8yNDVlZTA5M2RkMjI0NmFhOGQxYTU4M2QwMWMxMDZjZi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9jOGFjY2IyZWJjMGY0OGFiOGQ3MzFjNDcyZDA2NDJlNCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjYyNDE5NDQwMDc1NTk2MjgsIDUxLjQ3OTYzODQzMzQzMjA4XSwgWy0yLjYxOTgwODU4MzU1Njc3OSwgNTEuNDgwOTEzNDMxNzkxNTldLCBbLTIuNjE2MTUzNzA4Mzg3OTQxNCwgNTEuNDc3ODYyNDcxNTQzOThdLCBbLTIuNjE2ODg0NDY3NDc4MTI2LCA1MS40NzM1MzYyOTA1ODU5NV0sIFstMi42MjEyNzAzODg5Njk4MiwgNTEuNDcyMjYxMDMyMTMzXSwgWy0yLjYyNDkyNTQ0NzA4ODA5ODcsIDUxLjQ3NTMxMjIxNDcyOTA0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fYzhhY2NiMmViYzBmNDhhYjhkNzMxYzQ3MmQwNjQyZTQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMDVjY2FhMjYyZDRiNDRlZDk0ZDVmODAyNDhkNTgxODcgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41MDY1Mzk2MzUyNjAwMzU4LCA1MS40NjAzODI4MzI5MzA5OTZdLCBbLTIuNTAyMTU4MDM3MzEzMzAyLCA1MS40NjE2NTc4OTI4MDQ4N10sIFstMi40OTg1MDMxNjg0Njc3Njg1LCA1MS40NTg2MDc5ODM1Mzg0MV0sIFstMi40OTkyMjk3MTM5MTIyMTQsIDUxLjQ1NDI4Mjc5MjQwMjk1XSwgWy0yLjUwMzYxMTQxNTA4NzcwNiwgNTEuNDUzMDA3NDcyNzAwMzE0XSwgWy0yLjUwNzI2NjQ2NzU5OTM0NiwgNTEuNDU2MDU3NjAzOTU5Mzk0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fMDVjY2FhMjYyZDRiNDRlZDk0ZDVmODAyNDhkNTgxODcuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMjg4OGZmNDU3OTFkNDcwN2I0YzBlYWEwOGI4NDgwOTYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi40NjQ5MzcxNTY5MTgxNTMsIDUxLjQ4NDgyNTIwNTE1NTgxNV0sIFstMi40NjA1NTgwMDU0NTMzNzQsIDUxLjQ4NjA5OTExNjA4NjE2Nl0sIFstMi40NTY5MDQwMzMzNDQyODYsIDUxLjQ4MzA1MDQzNTMzODkzXSwgWy0yLjQ1NzYyOTAyODgzNzI3MzMsIDUxLjQ3ODcyNzYyMTU4OF0sIFstMi40NjIwMDgyODMzOTE2MTksIDUxLjQ3NzQ1MzQ1MDkyOTY4XSwgWy0yLjQ2NTY2MjQzOTM3Mjc3ODYsIDUxLjQ4MDUwMjM1Mzc0Nzc5NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzI4ODhmZjQ1NzkxZDQ3MDdiNGMwZWFhMDhiODQ4MDk2LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2E0NzYxYWYxMjQwMzRjZGU4YWFmMjJjMDQ3ZjIzYzkzID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNDkxODk1NjY2NjQyNjA0LCA1MS40MjM1MDAxODA3ODg4OF0sIFstMi40ODc1MTM1NTMzNDExNDY1LCA1MS40MjQ3NzY1Mzk3NTU4XSwgWy0yLjQ4Mzg1NzcxMDQ0NTY4MywgNTEuNDIxNzI1ODE3NTc4Mzg0XSwgWy0yLjQ4NDU4Mzc5NzA1NTU2NjYsIDUxLjQxNzM5ODUxNDcwODk3XSwgWy0yLjQ4ODk2NjAxMzE5MTE2ODYsIDUxLjQxNjEyMTg5NTkzODgyXSwgWy0yLjQ5MjYyMjAzOTg5MjExMjYsIDUxLjQxOTE3MjgzOTgzODc4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fYTQ3NjFhZjEyNDAzNGNkZThhYWYyMmMwNDdmMjNjOTMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fN2QwZjYwMmE0YzhmNDQ5Zjk1NTE1MWJhOGQxZGQyZDcgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41ODk4MjQ0ODg2OTc5MTEsIDUxLjQxMTQ0NTY0MzM5NTU5NV0sIFstMi41ODU0MzgwMDk3NDQ5MTIzLCA1MS40MTI3MjMwMDM3MTUzM10sIFstMi41ODE3ODEzNTQxMjc1NzUsIDUxLjQwOTY3MDYzNzgxNDM5XSwgWy0yLjU4MjUxMDk5NDIyMDYzNjYsIDUxLjQwNTM0MDY4OTc1Njc3XSwgWy0yLjU4Njg5NzU3NjY3ODgyMywgNTEuNDA0MDYzMDY5NDA3NDddLCBbLTIuNTkwNTU0NDE1NTQ4MDgzLCA1MS40MDcxMTU2NTcxNDI4MjVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl83ZDBmNjAyYTRjOGY0NDlmOTU1MTUxYmE4ZDFkZDJkNy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8zNzRiOTkwZDhjMDE0OTU3ODNiZThhNDBhNzU0NTE2ZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU4MzI1NjY3ODcxNTQ2NjUsIDUxLjQ1MDQwMjI3MTkxMzQ4XSwgWy0yLjU3ODg3MTY0NDA5MTIwOSwgNTEuNDUxNjc4MTM2MTM5NjVdLCBbLTIuNTc1MjE2MTI2MDkzNTA0LCA1MS40NDg2MjY5MjM5MDU4Nl0sIFstMi41NzU5NDU0NTk0OTY0NTgsIDUxLjQ0NDI5OTYyNTM2NjIzNF0sIFstMi41ODAzMzA1OTc4NzE2NTU4LCA1MS40NDMwMjM1MDExMzM2NDVdLCBbLTIuNTgzOTg2Mjk5MTAyMjU5LCA1MS40NDYwNzQ5MzU0NDQ2MzVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8zNzRiOTkwZDhjMDE0OTU3ODNiZThhNDBhNzU0NTE2Zi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wZDM2NWZjNTNlOTU0Y2E2ODdiZmNhMjBlYTYxNmUxNCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU3NzQwNDIyODY1MDk5MiwgNTEuNDM1NjQ0MTQ0OTAxMjk2XSwgWy0yLjU3MzAxODk4NjYwMzgzODQsIDUxLjQzNjkyMDUyOTEzNTIxXSwgWy0yLjU2OTM2MzA3NjY4NDQ2NCwgNTEuNDMzODY4OTkxNDgxMTldLCBbLTIuNTcwMDkyMjI1NTMyNjAzNSwgNTEuNDI5NTQwODQ3NjIxNjk1XSwgWy0yLjU3NDQ3NzU3MTE3MjcwMjQsIDUxLjQyODI2NDIwMzM5MTU4XSwgWy0yLjU3ODEzMzY2NDM4MTAyNDYsIDUxLjQzMTMxNTk2MzAxNDY1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fMGQzNjVmYzUzZTk1NGNhNjg3YmZjYTIwZWE2MTZlMTQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMjY3MDJiY2FjNjE0NDJhMzg5NWIyN2EyMDU0MDZmZDkgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41MDI4NjI5NTcwNjk5NDc3LCA1MS40MzI2NTI0MjIzMzQxXSwgWy0yLjQ5ODQ4MDY3MTAwMTExMjMsIDUxLjQzMzkyODUwMDE2MzY1XSwgWy0yLjQ5NDgyNTAzMzY3NzgxNDQsIDUxLjQzMDg3Nzg4MTA2NTE0XSwgWy0yLjQ5NTU1MTQ5ODcwNDQ0LCA1MS40MjY1NTA5NjIzMzA2MV0sIFstMi40OTk5MzM4ODc3NjI1NSwgNTEuNDI1Mjc0NjI0Njc0NjM2XSwgWy0yLjUwMzU4OTcwODgxNDExOTIsIDUxLjQyODMyNTQ2NTU3NzA5Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzI2NzAyYmNhYzYxNDQyYTM4OTViMjdhMjA1NDA2ZmQ5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzFiYTU3MGMzYTZhZDQ2ZmJiNWE5MDFhN2Y5OGM3NDNjID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTI0MTAyOTI0ODA0MDYzNiwgNTEuNTA0NjIyNjkzNzg4Nl0sIFstMi41MTk3MjE5NDc4ODUzODksIDUxLjUwNTg5NjE5NDU4NTY1XSwgWy0yLjUxNjA2ODI1MTE3MzI1MjYsIDUxLjUwMjg0NzI2MzYxMTEyXSwgWy0yLjUxNjc5NTM0Nzg5MDgxNzYsIDUxLjQ5ODUyNDYwOTUyMTU5Nl0sIFstMi41MjExNzY0Mjg1MTExNzk1LCA1MS40OTcyNTA4NDg4NjYxMl0sIFstMi41MjQ4MzAzMDg3MjE2MTksIDUxLjUwMDMwMDAwMjE1NjE2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fMWJhNTcwYzNhNmFkNDZmYmI1YTkwMWE3Zjk4Yzc0M2Muc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNmI5ODM3MDgwMjNhNDU3YTlkNTYxNzA2NzdmMmQ3N2EgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi40OTQ4OTMyMTQ5Mzc4NzcsIDUxLjUwNDg5MjMyODUzMTc1XSwgWy0yLjQ5MDUxMzQ0MjY2Njk4MiwgNTEuNTA2MTY1NjU1NTE0NjNdLCBbLTIuNDg2ODU5ODkzOTg2MzI0LCA1MS41MDMxMTcxMjM4OTQ2OV0sIFstMi40ODc1ODU5MzM5MTc3MDYsIDUxLjQ5ODc5NTA0MzAyOTM0XSwgWy0yLjQ5MTk2NTgwOTY2NDI1MDcsIDUxLjQ5NzUyMTQ1NjI1NDk0NF0sIFstMi40OTU2MTk1NDIwMTMwOTkzLCA1MS41MDA1NzAyMTAxMzQ5OF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzZiOTgzNzA4MDIzYTQ1N2E5ZDU2MTcwNjc3ZjJkNzdhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzgzNmY5OWMyNWEyZjRlOGRiMzFmZWRjMTJmYzUxMjYzID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTQ1OTgzODIzNDA4MDQ4LCA1MS40NDg5MDQwMzc4NDA1ODVdLCBbLTIuNTQxNjAwMjY0NjM0NDY1OCwgNTEuNDUwMTc5NzQ5MDE4M10sIFstMi41Mzc5NDQ4ODAyMzkwNTksIDUxLjQ0NzEyODk5NTk4OTgzNl0sIFstMi41Mzg2NzI4NzExNzM1NTA3LCA1MS40NDI4MDIzMDk3ODY1NV0sIFstMi41NDMwNTY1MzMzOTYxOTQ4LCA1MS40NDE1MjYzMzg2ODczM10sIFstMi41NDY3MTIxMDEyNDQ2MTY2LCA1MS40NDQ1NzczMTM3MTA0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fODM2Zjk5YzI1YTJmNGU4ZGIzMWZlZGMxMmZjNTEyNjMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZGIwNDU1Yjc5YjllNDExNDhiNWZmMGE5NWMyZmQzNjEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NzA4NDA4NDI3OTM5MDA1LCA1MS40NzQ1ODQ1MzAyMjg2MDRdLCBbLTIuNTY2NDU3MDQ2MDM5MTk0NCwgNTEuNDc1ODU5NDE4NzM1NTVdLCBbLTIuNTYyODAyMjczODk1Mjk0LCA1MS40NzI4MDkwMzU4OTI3OTRdLCBbLTIuNTYzNTMxMTE1MjQ1NjY0LCA1MS40Njg0ODM1NDIzMjk1NF0sIFstMi41Njc5MTUwMTU4Mzg1NDgsIDUxLjQ2NzIwODM5Mzg1MDAyXSwgWy0yLjU3MTU2OTk3MTI1MjE5OCwgNTEuNDcwMjU4OTk4OTAzODVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9kYjA0NTViNzliOWU0MTE0OGI1ZmYwYTk1YzJmZDM2MS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl82YzAwODQ5OThmZDc0NmQ3YmI0NGE1ZWQ2MjA1NmVhYiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU2NjQzNjExOTgwMTA4MywgNTEuNDI2NDg5MTQ3Mzg1MTI2XSwgWy0yLjU2MjA1MTA0ODU2OTMzNzcsIDUxLjQyNzc2NTgxMjk0NzI1XSwgWy0yLjU1ODM5NDkzMDQ5MTQ2MiwgNTEuNDI0NzE0MTcyMTAwNzg1XSwgWy0yLjU1OTEyMzcwMDI4ODA5NzMsIDUxLjQyMDM4NTY0MzgwMjA3XSwgWy0yLjU2MzUwODg3NDk1NzYwNywgNTEuNDE5MTA4NzE4MjY2OV0sIFstMi41NjcxNjUxNzY0MDIwNTEzLCA1MS40MjIxNjA1ODEwMDA5NjZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl82YzAwODQ5OThmZDc0NmQ3YmI0NGE1ZWQ2MjA1NmVhYi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9mMjI2Zjk1MTQ0OTg0YjllOTUyOWI5Y2FjN2QxNmUwMCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU3NjY2NTcwMzcwOTA4OSwgNTEuNDE1Mjc3NTA2OTMwN10sIFstMi41NzIyNzk4NzY3MDk4NTgsIDUxLjQxNjU1NDY0OTgzNjA5NF0sIFstMi41Njg2MjMzOTE5MjA0OTEzLCA1MS40MTM1MDI1NjUyNDEyNDVdLCBbLTIuNTY5MzUyNTUwODE2NDIsIDUxLjQwOTE3MzExNTkwNDU0XSwgWy0yLjU3MzczODQ4MTI0NzYzNDMsIDUxLjQwNzg5NTcxMzAwMDRdLCBbLTIuNTc3Mzk1MTQ5MzYwMjYxLCA1MS40MTA5NDgwMTk0MjkxOV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2YyMjZmOTUxNDQ5ODRiOWU5NTI5YjljYWM3ZDE2ZTAwLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzQ2MzlhOTU2NmU5YjRhZmI4ZGIyMzE5OTFmMjJlYTI0ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTU5MTM1ODA1NTMyNzI2NywgNTEuNDQ1MDc2NDY5OTM4MzldLCBbLTIuNTU0NzUxNTkzODk4ODI4MywgNTEuNDQ2MzUyMzk4MzA1NTNdLCBbLTIuNTUxMDk2MDM4MjQ3OTYzLCA1MS40NDMzMDEzNjM5NzQzNTZdLCBbLTIuNTUxODI0NTEwODU4NDcxLCA1MS40Mzg5NzQxNzkyNzgzNl0sIFstMi41NTYyMDg4MjYwMTQ4MDUsIDUxLjQzNzY5Nzk5MDk1ODgyNF0sIFstMi41NTk4NjQ1NjUwNDc1MTQzLCA1MS40NDA3NDkyNDcyODUxOV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzQ2MzlhOTU2NmU5YjRhZmI4ZGIyMzE5OTFmMjJlYTI0LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzlkZWViMTk0ZjRlZDRjZmJiYTc1NGY1ODRhZGEzZDMzID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTU0Nzk4MjIxNTA2NDQ3OCwgNTEuNTQ1MDI1MTgyODUxMTZdLCBbLTIuNTUwNDE3MjE1MzUxNzI3NSwgNTEuNTQ2Mjk3MzQxMDgyMTRdLCBbLTIuNTQ2NzY0NTI0MDQ2NjgwMywgNTEuNTQzMjQ5MTA5OTQxOTddLCBbLTIuNTQ3NDkyNjU1NjQ2OTA5NywgNTEuNTM4OTI4NDk3OTMwMzVdLCBbLTIuNTUxODczNzY2MDQ5MzM4NywgNTEuNTM3NjU2MDc5NzgxMjVdLCBbLTIuNTU1NTI2NjQwNjEzMTE3NiwgNTEuNTQwNzA0NTMzNTU5NTA2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fOWRlZWIxOTRmNGVkNGNmYmJhNzU0ZjU4NGFkYTNkMzMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZjY3MDk5MzFkOWYxNDhmZGI0M2VmMDU1OGRiODcyMmIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41ODc2MzQ5MTIyNDAzMjE1LCA1MS40MjQ0MzM4MzYwMTkwNl0sIFstMi41ODMyNDg5MTQ1NjgzMjc1LCA1MS40MjU3MTA2OTc1OTUxNl0sIFstMi41Nzk1OTI2MzgwOTI3MjI1LCA1MS40MjI2NTg3MTYwMjk3OTRdLCBbLTIuNTgwMzIyMTc2MDUyODIzLCA1MS40MTgzMjk2NTA5NzAzMzVdLCBbLTIuNTg0NzA4Mjc3MzEyMDExLCA1MS40MTcwNTI1MjkzNzIzMDZdLCBbLTIuNTg4MzY0NzM3MDMzMjE3NSwgNTEuNDIwMTA0NzMyODUzMTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9mNjcwOTkzMWQ5ZjE0OGZkYjQzZWYwNTU4ZGI4NzIyYi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl83NzMzOGJkY2RiNDc0NDdkYjY0YWNiNjk4ZWYyNDVlNiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU4MjUxOTI4NDI3OTE0MjUsIDUxLjQzMDAzOTM0MDEyMjIzXSwgWy0yLjU3ODEzMzY2NDM4MTAyNDYsIDUxLjQzMTMxNTk2MzAxNDY1XSwgWy0yLjU3NDQ3NzU3MTE3MjcwMjQsIDUxLjQyODI2NDIwMzM5MTU4XSwgWy0yLjU3NTIwNjkxNDYwNDUyMTYsIDUxLjQyMzkzNTU5ODkzMTI5NF0sIFstMi41Nzk1OTI2MzgwOTI3MjI1LCA1MS40MjI2NTg3MTYwMjk3OTRdLCBbLTIuNTgzMjQ4OTE0NTY4MzI3NSwgNTEuNDI1NzEwNjk3NTk1MTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl83NzMzOGJkY2RiNDc0NDdkYjY0YWNiNjk4ZWYyNDVlNi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lNzgzMzVjOGNmZjU0NzRmOGEwZDM0NzBmMWQ4OTNhOSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY2MDAwNzU1ODYxMTI2OCwgNTEuNTE0NDcxNzAyNjA1NDA1XSwgWy0yLjY1NTYyMTM0MTEzOTY0LCA1MS41MTU3NDU1OTU5MDM0OTZdLCBbLTIuNjUxOTY3Mjk4MjUwOTk3NiwgNTEuNTEyNjk1MTExODUyNTddLCBbLTIuNjUyNjk5MjkwMTU2NTY4MiwgNTEuNTA4MzcwNTExODU1NF0sIFstMi42NTcwODU2MTI0NjQ4NjYzLCA1MS41MDcwOTYzNTgzOTAzODVdLCBbLTIuNjYwNzM5ODM4MDQwMTgwMywgNTEuNTEwMTQ3MDY1MDg3MDJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9lNzgzMzVjOGNmZjU0NzRmOGEwZDM0NzBmMWQ4OTNhOS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xYjljMDFkMDBkMzU0ODMxODkzNGNlYTA5NjNhM2YyOCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjYwMTUyOTI1MjQzMDYzMiwgNTEuNDQwOTcwMDg5NDM3NTldLCBbLTIuNTk3MTQzMTg4Mjg5MTE2NywgNTEuNDQyMjQ2NDA5NTg3MTddLCBbLTIuNTkzNDg3MzE2ODUxMzMyLCA1MS40MzkxOTQ2OTM4NzczOV0sIFstMi41OTQyMTczMjY0MjQ1NTU0LCA1MS40MzQ4NjY0MzU5NjQ0M10sIFstMi41OTg2MDM0OTQzODc1MTQsIDUxLjQzMzU4OTg1NTc2NDU4XSwgWy0yLjYwMjI1OTU0ODk2NTEwNSwgNTEuNDM2NjQxNzkzNTI1NDZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8xYjljMDFkMDBkMzU0ODMxODkzNGNlYTA5NjNhM2YyOC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wZDU1YjhmZWNiOTA0ZmJkOTE2NzVhODhhMTQ0MWM1MCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU4OTg0MzcwMTk2ODI3NSwgNTEuNDg1NTExNTA0ODIzMTldLCBbLTIuNTg1NDU5NDYxMDgxODksIDUxLjQ4Njc4NjA5MDQxNzg2XSwgWy0yLjU4MTgwNDkxMTI1ODA1ODMsIDUxLjQ4MzczNTc1MjM2MzQxXSwgWy0yLjU4MjUzNDQxOTE4NzY1ODcsIDUxLjQ3OTQxMDYwNjM5MjI1XSwgWy0yLjU4NjkxODc2NDE0MzQ3MiwgNTEuNDc4MTM1NzYwNzg0MTA2XSwgWy0yLjU5MDU3MzQ5NzEwOTU1MywgNTEuNDgxMTg2MzIxMTU4MTM0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fMGQ1NWI4ZmVjYjkwNGZiZDkxNjc1YTg4YTE0NDFjNTAuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fODI0OGE0OTJmOGY2NGM2OTk2ZDczNTVjYjNiYzhhMWQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41MDE0MzE0MDAwNDA3MjM0LCA1MS40NjU5ODI2NjEzMjM2NF0sIFstMi40OTcwNTAxODA4NTEwMDczLCA1MS40NjcyNTc0ODI3NzY5MV0sIFstMi40OTMzOTU0OTU2OTMwNzYsIDUxLjQ2NDIwNzc5NTUyOTY4XSwgWy0yLjQ5NDEyMTg0NjA0NjYxNiwgNTEuNDU5ODgzMDY0ODA3NDY0XSwgWy0yLjQ5ODUwMzE2ODQ2Nzc2ODUsIDUxLjQ1ODYwNzk4MzUzODQxXSwgWy0yLjUwMjE1ODAzNzMxMzMwMiwgNTEuNDYxNjU3ODkyODA0ODddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl84MjQ4YTQ5MmY4ZjY0YzY5OTZkNzM1NWNiM2JjOGExZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wMmNjZjY1ZTI4YTA0NjM2YmE4MWEyNjAxYmJmMGYxYSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjQ3MjIxODUwNzA0NTA5OSwgNTEuNDY2MjU3Mzg2MTQ0Ml0sIFstMi40Njc4Mzg0OTQxNTU1MjgsIDUxLjQ2NzUzMjAzMzQ0NDA5XSwgWy0yLjQ2NDE4Mzk1OTY1MzAyOTMsIDUxLjQ2NDQ4Mjc0NTcyOThdLCBbLTIuNDY0OTA5MjU0MTkyMzU1NiwgNTEuNDYwMTU4NTg4NzQ5MjNdLCBbLTIuNDY5Mjg5MzcwMDg3NDgxNCwgNTEuNDU4ODgzNjgxNzAwNF0sIFstMi40NzI5NDQwODg0NDcwODI2LCA1MS40NjE5MzMxOTEzNzg2MzRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8wMmNjZjY1ZTI4YTA0NjM2YmE4MWEyNjAxYmJmMGYxYS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9hMzllMGZmZjNiOGE0MjJmYTEyMjlkODJmMDI0MzZhMiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU0NjcyNTkyMTI4NDc2NSwgNTEuNDY5MjU4Mjg5MDk0NjldLCBbLTIuNTQyMzQyOTQ3OTU3OTg3MywgNTEuNDcwNTMzMjQxOTA3MDddLCBbLTIuNTM4Njg4MTM4MjI2MzcxLCA1MS40Njc0ODMwMzY2MjgyM10sIFstMi41Mzk0MTYxMTg0MTIyMjU1LCA1MS40NjMxNTc2NTY0MDU0MTRdLCBbLTIuNTQzNzk5MTk1MzQ4NjQ0LCA1MS40NjE4ODI0NDM2NzQ0MDVdLCBbLTIuNTQ3NDU0MTg4NDk4ODgyLCA1MS40NjQ5MzI4NzEwODI0MDRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9hMzllMGZmZjNiOGE0MjJmYTEyMjlkODJmMDI0MzZhMi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9jZjMzYWQyYTk5ODQ0NmY4OThjZmRkOTY1NWJlYWU2OCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjUzNTAxNzI5MTMwNDI3OSwgNTEuNDM5NzUxMzk0MDc1MjJdLCBbLTIuNTMwNjMzOTA0MDEyNDE0LCA1MS40NDEwMjczODY1MzE5MzVdLCBbLTIuNTI2OTc4MzEyMjk5MDEsIDUxLjQzNzk3NjUzMDEzNTkzNF0sIFstMi41Mjc3MDU5MjQzNTYzMDcsIDUxLjQzMzY0OTQ1OTM2NzVdLCBbLTIuNTMyMDg5NDE0OTQyMTA2NSwgNTEuNDMyMzczMjA3MDEyMzldLCBbLTIuNTM1NzQ1MTkwMTg2MDE2NiwgNTEuNDM1NDI0Mjg1MzIxNjFdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9jZjMzYWQyYTk5ODQ0NmY4OThjZmRkOTY1NWJlYWU2OC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9jN2FkOTQyMGMyYmY0MjJjOTIxMTJhZDg4ZWE3Zjc1NiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY3NjExNzEwMDUyODQ2MDcsIDUxLjQ0Mzk2NTQ4NTI5MTc2XSwgWy0yLjY3MTcyODA5Njc3MzgwNjYsIDUxLjQ0NTI0MjExMTkxMTI3XSwgWy0yLjY2ODA3MTk3MDI3NzQyNiwgNTEuNDQyMTg5NDc3MDMyMjNdLCBbLTIuNjY4ODA0NjY0ODQ3ODc4LCA1MS40Mzc4NTk5OTMzMTQ3M10sIFstMi42NzMxOTM3NzMwMjc0NjY0LCA1MS40MzY1ODMxMDY0NzQ5MzRdLCBbLTIuNjc2ODUwMDgyMjIwOTMxLCA1MS40Mzk2MzU5NjM1NzA0M11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2M3YWQ5NDIwYzJiZjQyMmM5MjExMmFkODhlYTdmNzU2LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2JjZTk3YThiMmFmMTQ2YTRhOGI3MmQ4OTg5OTQ0ZWU5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjc4MzE2MTQ2ODUyMzMxMywgNTEuNDMwOTc2MDM2MDI2MzldLCBbLTIuNjczOTI2NjYxNzk5MTgyNCwgNTEuNDMyMjUzMTYxNzIzNDFdLCBbLTIuNjcwMjcwMTU1MzEwOTQxNCwgNTEuNDI5MjAwMTQxODY3MDJdLCBbLTIuNjcxMDAyOTUxMTgxNjc1MywgNTEuNDI0ODY5Nzc0MTc1NjJdLCBbLTIuNjc1MzkyNTQwNTc3Njk4NiwgNTEuNDIzNTkyMzg4MjUwNTRdLCBbLTIuNjc5MDQ5MjI5NzY5Mzc3LCA1MS40MjY2NDU2MzAyNDI0Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2JjZTk3YThiMmFmMTQ2YTRhOGI3MmQ4OTg5OTQ0ZWU5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzExZDJjZmZkZmE0ODQxMDg5ZjQwOGE0ZGI2Y2U2OGFmID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjM1ODg3NTUxMDc1ODQ0NCwgNTEuNTA5MTQyMTcyMTY1ODFdLCBbLTIuNjMxNTAyMTUxODM1Nzc2LCA1MS41MTA0MTYxMzAxMDIzNl0sIFstMi42Mjc4NDgwNjQ5MTU3MjYsIDUxLjUwNzM2NTgyMzIyNzc0XSwgWy0yLjYyODU3OTE5NDQwODM1NywgNTEuNTAzMDQxMzM1ODUwMzddLCBbLTIuNjMyOTY0Njk4MjU2NTM0LCA1MS41MDE3NjcxMTc4MDA3Nl0sIFstMi42MzY2MTg5NjgwMTMyNDUsIDUxLjUwNDgxNzY0NzIzOTE0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fMTFkMmNmZmRmYTQ4NDEwODlmNDA4YTRkYjZjZTY4YWYuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMGMzZTIxMzg0NmM3NDg3MTg4YzA1MmRmYzUyNjBkMzYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NjIwOTM5NzE1NzU2ODU2LCA1MS41MjY0Njc5MjE2MDE3OF0sIFstMi41NTc3MTIxMDQxMzA4MjYsIDUxLjUyNzc0MDgxNjQ1NTQ4XSwgWy0yLjU1NDA1ODg0OTkyMjc2NSwgNTEuNTI0NjkxOTc2NDI3NzI1XSwgWy0yLjU1NDc4NzI3OTkyNTExNSwgNTEuNTIwMzcwMDE5MDExOTE0XSwgWy0yLjU1OTE2OTI1MTUzMzk2NzcsIDUxLjUxOTA5Njg2NDIxODQ1NF0sIFstMi41NjI4MjI2ODg5ODU3ODM3LCA1MS41MjIxNDU5MjY3NzgxNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzBjM2UyMTM4NDZjNzQ4NzE4OGMwNTJkZmM1MjYwZDM2LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2JjNDNlZTI5NGJiZDQyZGE4MjM1MjY3Y2RkYTliOTAyID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjQyNDcxNTI3MzIyMDQ4NywgNTEuNDcwMjEwODMyMjgxMDhdLCBbLTIuNjM4MDg0NjgyMDEzOTgwNSwgNTEuNDcxNDg2Mjg2NTA3Nl0sIFstMi42MzQ0Mjk0NTUwNjA2NjQsIDUxLjQ2ODQzNDgyMjM0ODc3XSwgWy0yLjYzNTE2MDg5MDU2ODYyMzIsIDUxLjQ2NDEwNzY4MTYzODQxXSwgWy0yLjYzOTU0Nzg0MDIzOTc5OSwgNTEuNDYyODMxOTY3Mjc0NDRdLCBbLTIuNjQzMjAzMjUwMDQ5MTgzOCwgNTEuNDY1ODgzNjUzNzU1ODI0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fYmM0M2VlMjk0YmJkNDJkYTgyMzUyNjdjZGRhOWI5MDIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNmViYmM1MTNhZTY1NDA4NDk5Y2RjMDVlY2RlNzg0NzEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42Mzg4MTg1NzcxMDM3NjQ0LCA1MS40NDI0Njc1NTc2OTEwMV0sIFstMi42MzQ0MzEwNDE2MTI5MzUsIDUxLjQ0Mzc0NDAzMTA1OTQ1XSwgWy0yLjYzMDc3NTA0MTAxOTY1NjQsIDUxLjQ0MDY5MTg1NTgzMjEzXSwgWy0yLjYzMTUwNjM5MzAwNzczLCA1MS40MzYzNjI5ODUxMDAxMl0sIFstMi42MzU4OTQwMzI2MjE3NzIsIDUxLjQzNTA4NjI1MTU5NjQ0XSwgWy0yLjYzOTU1MDIxNjEzMzgwMywgNTEuNDM4MTM4NjQ4OTU3NTJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl82ZWJiYzUxM2FlNjU0MDg0OTljZGMwNWVjZGU3ODQ3MS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl81NjkwZDU3ZTVmNmM0ZDZjYTJiNDY5ZDE4MTRiNzBjZSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU5OTMzODU2NzAwNjk1NDYsIDUxLjQ1Mzk1MzIwOTk4Njk0XSwgWy0yLjU5NDk1Mjk4NDQ3NDA0MywgNTEuNDU1MjI5MDMxNDIzOTA0XSwgWy0yLjU5MTI5NzQ5MjQ2MjM0NCwgNTEuNDUyMTc3NzAwNjA2NDg0XSwgWy0yLjU5MjAyNzM5OTg1OTQzMDMsIDUxLjQ0Nzg1MDMyNjIxNzcyNl0sIFstMi41OTY0MTMwODYyOTU2MjIzLCA1MS40NDY1NzQyNDQ3MzgzNV0sIFstMi42MDAwNjg3NjE0NDA3NTA3LCA1MS40NDk2MjU3OTc2ODc2NDVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl81NjkwZDU3ZTVmNmM0ZDZjYTJiNDY5ZDE4MTRiNzBjZS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wMzhkMDQzMWZkZjA0ZDgyYTIyZGFmOWUzODc3ZTg4OCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU0OTY1MjM1OTMxNjExMTYsIDUxLjQ3NjYzMzU0ODY2NzM4XSwgWy0yLjU0NTI2OTQ4OTY3Nzg1NiwgNTEuNDc3OTA4MjQxNTU2MTM2XSwgWy0yLjU0MTYxNDg3NTY4OTQ0MDYsIDUxLjQ3NDg1ODE5OTI2ODcyXSwgWy0yLjU0MjM0Mjk0Nzk1Nzk4NzMsIDUxLjQ3MDUzMzI0MTkwNzA3XSwgWy0yLjU0NjcyNTkyMTI4NDc2NSwgNTEuNDY5MjU4Mjg5MDk0NjldLCBbLTIuNTUwMzgwNzE4NjYzNzkzNSwgNTEuNDcyMzA4NTUzNTY1MTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8wMzhkMDQzMWZkZjA0ZDgyYTIyZGFmOWUzODc3ZTg4OC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wNzAyOGYxOTZlOWM0ZjgyOWM2ZTU3YTY2YjdlZThmMiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU2ODYyMzM5MTkyMDQ5MTMsIDUxLjQxMzUwMjU2NTI0MTI0NV0sIFstMi41NjQyMzc4MzkzMzE1ODYzLCA1MS40MTQ3Nzk3Mjk0NDgzMzRdLCBbLTIuNTYwNTgxMzQyMjczNDcwNSwgNTEuNDExNzI3NzA0MzAxODldLCBbLTIuNTYxMzEwMjE0NDQwNjkxLCA1MS40MDczOTgyOTMxMzkyNjZdLCBbLTIuNTY1Njk1ODcwMzg1NDIxNCwgNTEuNDA2MTIwODY4OTUxNV0sIFstMi41NjkzNTI1NTA4MTY0MiwgNTEuNDA5MTczMTE1OTA0NTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8wNzAyOGYxOTZlOWM0ZjgyOWM2ZTU3YTY2YjdlZThmMi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9mODFmYWRjN2M4NTI0ZDJmOTNlNDcxYzFjYWNlZjU0YiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU4MDMzMDU5Nzg3MTY1NTgsIDUxLjQ0MzAyMzUwMTEzMzY0NV0sIFstMi41NzU5NDU0NTk0OTY0NTgsIDUxLjQ0NDI5OTYyNTM2NjIzNF0sIFstMi41NzIyODk3NDU0ODgzNjE4LCA1MS40NDEyNDgyNTAzNzk4M10sIFstMi41NzMwMTg5ODY2MDM4Mzg0LCA1MS40MzY5MjA1MjkxMzUyMV0sIFstMi41Nzc0MDQyMjg2NTA5OTIsIDUxLjQzNTY0NDE0NDkwMTI5Nl0sIFstMi41ODEwNjAxMjU5MjAwMTYsIDUxLjQzODY5NTc0MTkxMDg0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fZjgxZmFkYzdjODUyNGQyZjkzZTQ3MWMxY2FjZWY1NGIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fOWFiOGQ1MmQ3MzgxNGU1MDllZGJlNWRiOTI2MjU2M2QgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42MjEyNzAzODg5Njk4MiwgNTEuNDcyMjYxMDMyMTMzXSwgWy0yLjYxNjg4NDQ2NzQ3ODEyNiwgNTEuNDczNTM2MjkwNTg1OTVdLCBbLTIuNjEzMjI5Mzk1NDkzOTI3NCwgNTEuNDcwNDg1MTY3MjA3MTE2XSwgWy0yLjYxMzk2MDA2MjAzMzEwMTQsIDUxLjQ2NjE1ODU2MzA3ODM1XSwgWy0yLjYxODM0NjA4NzczODM1NDYsIDUxLjQ2NDg4MzA0NDUzNjkxXSwgWy0yLjYyMjAwMTM0MjcwMDE0OCwgNTEuNDY3OTM0MzkwMjEwMjZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl85YWI4ZDUyZDczODE0ZTUwOWVkYmU1ZGI5MjYyNTYzZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wODQyNDc0M2UxY2M0YWMxOTRiMzYxOTdkZDFkYTNjMCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY0MzkzODEyODg3NzYwNjMsIDUxLjQzNjg2MTkzNjgxOTIyXSwgWy0yLjYzOTU1MDIxNjEzMzgwMywgNTEuNDM4MTM4NjQ4OTU3NTJdLCBbLTIuNjM1ODk0MDMyNjIxNzcyLCA1MS40MzUwODYyNTE1OTY0NF0sIFstMi42MzY2MjU1Nzg5NjU4MTEzLCA1MS40MzA3NTY5MTk5ODc1OF0sIFstMi42NDEwMTM1OTU4Mjk5MDYsIDUxLjQyOTQ3OTk0NzcwMTE1XSwgWy0yLjY0NDY2OTk2MjIzODk0MTQsIDUxLjQzMjUzMjU2NzE2OTIwNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzA4NDI0NzQzZTFjYzRhYzE5NGIzNjE5N2RkMWRhM2MwLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2I0ZWZjZmEyMGE5MzRiYWFhMWFkOWVlZTBhZGJkNWE0ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTY1NzU2MDQ1Nzg0MzAxNiwgNTEuNTU0MTY5OTQ3ODU5NzU1XSwgWy0yLjU2MTM3NDg2OTc5NDI2OTgsIDUxLjU1NTQ0MTgyNDU0MDQ2Nl0sIFstMi41NTc3MjIzODgyODQyMzcsIDUxLjU1MjM5MzY5ODM5ODAzNV0sIFstMi41NTg0NTA4OTk1OTI2NDQ1LCA1MS41NDgwNzM0NzI4NTM3XSwgWy0yLjU2MjgzMjE3OTk4NTI3LCA1MS41NDY4MDEzMzYyMzIzMl0sIFstMi41NjY0ODQ4NDQ2NzYxODQsIDUxLjU0OTg0OTY4NTA5MzU1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fYjRlZmNmYTIwYTkzNGJhYWExYWQ5ZWVlMGFkYmQ1YTQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMjAwNmNkZDM2MDBiNDNhMGIxYjgyNzUwNjM0MmIwOTcgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42ODA0ODY0ODY3NjkzMDg2LCA1MS40OTIwNzI0MjUxMDAzXSwgWy0yLjY3NjA5ODc2MDMzOTY2MzMsIDUxLjQ5MzM0NzI3MzA1OThdLCBbLTIuNjcyNDQzOTg2ODM0OTY4MywgNTEuNDkwMjk1ODk4NTg0NzVdLCBbLTIuNjczMTc2NzU3MTY5NjM0MywgNTEuNDg1OTY5NDUzNjA3OThdLCBbLTIuNjc3NTY0NTg4NDI1MDIzNywgNTEuNDg0Njk0MzQ1NDI5MTRdLCBbLTIuNjgxMjE5NTQ0NTI5MjQ0NCwgNTEuNDg3NzQ1OTQyNDQzOTddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8yMDA2Y2RkMzYwMGI0M2EwYjFiODI3NTA2MzQyYjA5Ny5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lMDViNTYzZWQwNTE0YTJmOWViOWQ4NmFlMzljOGQ3ZSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU5NjQyNjc2OTIxOTEwNDUsIDUxLjUyMDYwNTE4OTYxMTA3NV0sIFstMi41OTIwNDMzMjM0MzA5NjYsIDUxLjUyMTg3ODQ5NjYyNTIzXSwgWy0yLjU4ODM4OTc0MzE1OTMwNzMsIDUxLjUxODgyOTAzNDU2Mzc0NF0sIFstMi41ODkxMTk0MjU2MzM3NDU4LCA1MS41MTQ1MDYwNDI5MjQ2XSwgWy0yLjU5MzUwMjk3NTgwOTMyMSwgNTEuNTEzMjMyNDc1ODkwNjJdLCBbLTIuNTk3MTU2NzM5MTMyMzAzLCA1MS41MTYyODIxNjA1MTMxOV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2UwNWI1NjNlZDA1MTRhMmY5ZWI5ZDg2YWUzOWM4ZDdlLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzg5NDdkNGZiOWRjMzQwZGE5OWQzYmE3ZWYzODM1MmM3ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjE5ODA2NjE4MzkyOTY2LCA1MS40MzE1MzUxMjM0MTA2XSwgWy0yLjYxNTQxOTUyNTQ5MDU3MzQsIDUxLjQzMjgxMTg5OTYyNzkzNl0sIFstMi42MTE3NjMzMDEwNzUzNTAzLCA1MS40Mjk3NTk2ODA0NDMzNF0sIFstMi42MTI0OTM5ODY1MjUyMjUsIDUxLjQyNTQzMDQ2MzAxMzk3XSwgWy0yLjYxNjg4MTE4MzMxOTQzNjgsIDUxLjQyNDE1MzQyNjcwMjU3XSwgWy0yLjYyMDUzNzU5MDc4MTI1MDcsIDUxLjQyNzIwNTg2NzkxMjA2NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzg5NDdkNGZiOWRjMzQwZGE5OWQzYmE3ZWYzODM1MmM3LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzU0YWY4NTA3MmM0YTRjNzY4MzZjNTg3YTQzYTQ4ZmM3ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTEyMzM0NTY3NjgyNjA1NCwgNTEuNDAxMDgwMjM0Mjk5MzRdLCBbLTIuNTA3OTUwOTQwMTcyNTc5LCA1MS40MDIzNTc1NDc0NTgyMV0sIFstMi41MDQyOTQzNjIxODQyODQ2LCA1MS4zOTkzMDU5Mzg1NTE1NV0sIFstMi41MDUwMjEyMjc5OTYwMDIyLCA1MS4zOTQ5NzY3OTQ4NjgzMzRdLCBbLTIuNTA5NDA0OTU4MzI4NzczNiwgNTEuMzkzNjk5MjIxODU1MDQ0XSwgWy0yLjUxMzA2MTcyMDAzNjQ0MiwgNTEuMzk2NzUxMDUyMzc2ODY0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fNTRhZjg1MDcyYzRhNGM3NjgzNmM1ODdhNDNhNDhmYzcuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYzMyYmVkZWE3OGFjNDQyNWE4YmU1YTU0NTVlOTFhNjQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi40OTE5NjU4MDk2NjQyNTA3LCA1MS40OTc1MjE0NTYyNTQ5NDRdLCBbLTIuNDg3NTg1OTMzOTE3NzA2LCA1MS40OTg3OTUwNDMwMjkzNF0sIFstMi40ODM5MzIxOTAwNDI3NzYsIDUxLjQ5NTc0NjM0ODE4ODA2XSwgWy0yLjQ4NDY1ODEzODIyNzU3NywgNTEuNDkxNDIzODQ0MzYzNTNdLCBbLTIuNDg5MDM4MTE3MzcxMDIyNSwgNTEuNDkwMTQ5OTk3ODAyNDZdLCBbLTIuNDkyNjkyMDQ0OTQyMTAwNiwgNTEuNDkzMTk4OTE0ODUwMTU0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fYzMyYmVkZWE3OGFjNDQyNWE4YmU1YTU0NTVlOTFhNjQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYjViMDUyNDY4MTc0NDJkN2EyMTI1ZjBmZjJmZGI2MzEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NTY5ODM1ODE5MzU5NzY1LCA1MS41MzIwNjIzNTAzNDI3XSwgWy0yLjU1MjYwMjA5Mjk3NDIwODYsIDUxLjUzMzMzNTAwNjgzMTM5XSwgWy0yLjU0ODk0OTAyMjAzMTQ2OTQsIDUxLjUzMDI4NjM4OTM2MTg5XSwgWy0yLjU0OTY3NzI1Njc5NDQ4NCwgNTEuNTI1OTY0ODkyODQzXSwgWy0yLjU1NDA1ODg0OTkyMjc2NSwgNTEuNTI0NjkxOTc2NDI3NzI1XSwgWy0yLjU1NzcxMjEwNDEzMDgyNiwgNTEuNTI3NzQwODE2NDU1NDhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9iNWIwNTI0NjgxNzQ0MmQ3YTIxMjVmMGZmMmZkYjYzMS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl80YTE5MzUzMDQ3YWU0NjNhYjA4NDkzZTg1NWVmNjc1YyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU5MjAzMzE4OTc5NDc0MzMsIDUxLjQ3MjUzNTA2OTc4Nzc5XSwgWy0yLjU4NzY0ODQ2Njg5NzA2NjUsIDUxLjQ3MzgxMDE1Mzk2NDQzNl0sIFstMi41ODM5OTM1Mzc1MjQ2NzIsIDUxLjQ3MDc1OTQzMDQ5ODE1XSwgWy0yLjU4NDcyMzE0NzkxMDU1NDQsIDUxLjQ2NjQzMzQwMDYxMzZdLCBbLTIuNTg5MTA3OTc0Nzk2MDMyLCA1MS40NjUxNTgwNTY0MTU0NTRdLCBbLTIuNTkyNzYzMDg3MzE3MTE4NiwgNTEuNDY4MjA5MDAyMTIwODhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl80YTE5MzUzMDQ3YWU0NjNhYjA4NDkzZTg1NWVmNjc1Yy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9hZjI1MzU4NzgyYjY0ZTgzOGE3ZjkyYzU4YWU5MGU5NyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU3MTU3ODkyNDMxMjQ4NjcsIDUxLjQ5NDkzMzYzNzM2NzEwNF0sIFstMi41NjcxOTU3MTM2NDI4NzA1LCA1MS40OTYyMDc3Njc0MjE0OF0sIFstMi41NjM1NDE1MTcwODE2MTU2LCA1MS40OTMxNTc5MzMxNzcyNjVdLCBbLTIuNTY0MjcwMzQ3OTY0MDU3LCA1MS40ODg4MzM3NDY1MzA5N10sIFstMi41Njg2NTM2NjI2MzIyNzIsIDUxLjQ4NzU1OTM1NjUwNzIwNV0sIFstMi41NzIzMDgwNDI0Mjg3NDU0LCA1MS40OTA2MDk0MTMwOTY3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fYWYyNTM1ODc4MmI2NGU4MzhhN2Y5MmM1OGFlOTBlOTcuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMDE5MWMwNTg2Y2FmNDFlYmE1NGMyYjg3NTY2NWJjZmQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NzM3Mzg0ODEyNDc2MzQzLCA1MS40MDc4OTU3MTMwMDA0XSwgWy0yLjU2OTM1MjU1MDgxNjQyLCA1MS40MDkxNzMxMTU5MDQ1NF0sIFstMi41NjU2OTU4NzAzODU0MjE0LCA1MS40MDYxMjA4Njg5NTE1XSwgWy0yLjU2NjQyNDkzNzA0MzcxODcsIDUxLjQwMTc5MDk5NzMxMjEyNl0sIFstMi41NzA4MTA5NzA4Mjc4MTg0LCA1MS40MDA1MTMzMzQ0MTQ1MV0sIFstMi41NzQ0Njc4MzQ2MTAwNTM0LCA1MS40MDM1NjU4MDMxNDcyNDVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8wMTkxYzA1ODZjYWY0MWViYTU0YzJiODc1NjY1YmNmZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8zOTc4NGMzMjdlM2Y0ZWQ1YTRmZWY5YjY1NzU2YWVjYyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjUyOTk1NTA1NDA3OTM1NywgNTEuNTE5MzY0NjIzOTc1NTVdLCBbLTIuNTI1NTc0Mjg0ODAwMjk3MywgNTEuNTIwNjM3NjA1MDQxMzFdLCBbLTIuNTIxOTIwOTc5NTkxMTg2LCA1MS41MTc1ODkwMDA4NDEyN10sIFstMi41MjI2NDgyNjAyMjgyMTMsIDUxLjUxMzI2NzE5MzE1MDIxXSwgWy0yLjUyNzAyOTEzMzM2NjQ1NzYsIDUxLjUxMTk5Mzk1MjIxNjRdLCBbLTIuNTMwNjgyNjIyMDE3ODEyLCA1MS41MTUwNDI3Nzg4MzkyNjZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8zOTc4NGMzMjdlM2Y0ZWQ1YTRmZWY5YjY1NzU2YWVjYy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl85NDQ5MzY2ZjVjYzE0ZjM4OGNmZWZhYmY1ZDMzN2RhYyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjUzNjUwNDQwMzQ4MzEwOTUsIDUxLjQ4MDQ1NzQxMDMwODg3XSwgWy0yLjUzMjEyMjE4NzAwOTc0NCwgNTEuNDgxNzMxODg2MTgyNjVdLCBbLTIuNTI4NDY3NzQ0MTgwMDU2MywgNTEuNDc4NjgyMTI1MjQxODNdLCBbLTIuNTI5MTk1MzM0MzcxMzIsIDUxLjQ3NDM1NzY2NjI0MjQ4XSwgWy0yLjUzMzU3NzY1NDQ1OTcsIDUxLjQ3MzA4MjkzMDQ3NjA3NV0sIFstMi41MzcyMzIyODA3NTExMjUsIDUxLjQ3NjEzMjkxMzU5OTE3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fOTQ0OTM2NmY1Y2MxNGYzODhjZmVmYWJmNWQzMzdkYWMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYjdmYzM2MzFlMTE0NDUyZjkyZGQ1ODY2Y2UwMTYyYmQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi43MDk3MzgzNjYxNjIyNjA3LCA1MS40OTE4MDA4NzA4NTA1N10sIFstMi43MDUzNDk0NDY5MzEzNTM3LCA1MS40OTMwNzU4OTMwMzI2OF0sIFstMi43MDE2OTQ1MzcyMDE1MjUzLCA1MS40OTAwMjQxMTg0NjQzN10sIFstMi43MDI0MjgzNjQyODQ2MTQ3LCA1MS40ODU2OTcwOTkxMTYxOV0sIFstMi43MDY4MTczODg1NjcwMDA0LCA1MS40ODQ0MjE4MTY2NDc2OTZdLCBbLTIuNzEwNDcyNDgwNzI0MDUzLCA1MS40ODc0NzM4MTM4MTEzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fYjdmYzM2MzFlMTE0NDUyZjkyZGQ1ODY2Y2UwMTYyYmQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYWM5NzIwOTNhNzcyNGUwODgxMWZhODcxMTk2ZTE1YjIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NDAxNzMwNTk3OTk5OTksIDUxLjUwODE3Mzc5NTc0NDA4NV0sIFstMi41MzU3OTE1MzMxOTM4MzMsIDUxLjUwOTQ0NzI1MzUxODI0XSwgWy0yLjUzMjEzNzg2MTEyMTc1MTMsIDUxLjUwNjM5ODIwNDQ5ODg5XSwgWy0yLjUzMjg2NTUzMjI2NTk0ODMsIDUxLjUwMjA3NTQ3NTMzMjg5NF0sIFstMi41MzcyNDcxNjI3MjYxODgzLCA1MS41MDA4MDE3NTc2NjQ0NzZdLCBbLTIuNTQwOTAxMDE4MTk3NDY2NSwgNTEuNTAzODUxMDI5MDUzODg0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fYWM5NzIwOTNhNzcyNGUwODgxMWZhODcxMTk2ZTE1YjIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fOGU3NDM0NWQzYmE0NDA0MDg4Mjg1NTkxMDViMGViNzMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41ODgzNzE3MTE1ODMxNDIsIDUxLjQ0NDc5ODgzMjU4NTc5XSwgWy0yLjU4Mzk4NjI5OTEwMjI1OSwgNTEuNDQ2MDc0OTM1NDQ0NjM1XSwgWy0yLjU4MDMzMDU5Nzg3MTY1NTgsIDUxLjQ0MzAyMzUwMTEzMzY0NV0sIFstMi41ODEwNjAxMjU5MjAwMTYsIDUxLjQzODY5NTc0MTkxMDg0XSwgWy0yLjU4NTQ0NTY0MjE0OTAyMSwgNTEuNDM3NDE5Mzc5MDMyNjZdLCBbLTIuNTg5MTAxNTI2NTkwODUyNiwgNTEuNDQwNDcxMDM1Mzk0MTNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl84ZTc0MzQ1ZDNiYTQ0MDQwODgyODU1OTEwNWIwZWI3My5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8zYmQ5MmIyMGYyZmE0ODliYTg2MTEzNjZlNDUyZTU4ZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY5ODgxMTM1MDIyMjc1MzUsIDUxLjQwODU0MDc1NDg0NzRdLCBbLTIuNjk0NDIwMzU4NDU0MzI4LCA1MS40MDk4MTg4MzYyMjU0N10sIFstMi42OTA3NjMxMjEyODM1NTgzLCA1MS40MDY3NjQ5Mjc5ODgyMDZdLCBbLTIuNjkxNDk2NjkzMjc0NTM3NywgNTEuNDAyNDMyNzE2MzQyMzU0XSwgWy0yLjY5NTg4Nzc4OTM3MzczNiwgNTEuNDAxMTU0Mzc0Njg0ODM2XSwgWy0yLjY5OTU0NTIwOTE2MDQzNiwgNTEuNDA0MjA4NTA0OTUwMDldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8zYmQ5MmIyMGYyZmE0ODliYTg2MTEzNjZlNDUyZTU4Zi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wZDY0MTAwNTI4YTg0ZjQyODhmYTFlMTRkMDA0YzczNSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjYwNjY1NDkyOTYxODg5MiwgNTEuNTA5NDExMzQwODc2MjldLCBbLTIuNjAyMjcwNzI3ODQzNTgwNCwgNTEuNTEwNjg1MTI0ODcxMzddLCBbLTIuNTk4NjE2NzgxNDkwOTE3NiwgNTEuNTA3NjM1MjE3NzE0MTNdLCBbLTIuNTk5MzQ2ODUzOTE0ODI1LCA1MS41MDMzMTEzMDQwNTEwOTVdLCBbLTIuNjAzNzMxMTYwMDcyMzMyNSwgNTEuNTAyMDM3MjYwMDA5OTM1XSwgWy0yLjYwNzM4NTI4OTQzMzAxOCwgNTEuNTA1MDg3Mzg5Njc1NDZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8wZDY0MTAwNTI4YTg0ZjQyODhmYTFlMTRkMDA0YzczNS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl85NGQ5ZDcyMTAxMzA0MmIwOTVkYTY1MDBmOWRkYzNlZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjQ3MDc5NDA0NDc1MTk1MjUsIDUxLjQ5OTU2Njk1NjE0Njk3XSwgWy0yLjQ2NjQxNTA5OTcwMjU1LCA1MS41MDA4NDAzNDc2MDY3MjZdLCBbLTIuNDYyNzYxNTE3MTIwODYzNCwgNTEuNDk3NzkxOTkzMDMyMThdLCBbLTIuNDYzNDg2Njk1NzgxNjU0NiwgNTEuNDkzNDcwMDI0ODE3MTNdLCBbLTIuNDY3ODY1NzQ0MDc4MTE2LCA1MS40OTIxOTYzNzM2MTk2Ml0sIFstMi40NzE1MTk1MTA0NzYwODEsIDUxLjQ5NTI0NDk1MDM3MjQ3NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzk0ZDlkNzIxMDEzMDQyYjA5NWRhNjUwMGY5ZGRjM2VmLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2E1OTZiNDhlMGJmNDQwMGFiOTU5OWZhZjM0OThkOTc1ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjkxNDg1OTAwMjkxMDYsIDUxLjQyNzE0NDIyMzg4Mjg2XSwgWy0yLjY4NzA5NTc2NjE0MDM2MiwgNTEuNDI4NDIxNTY3MTExMDE2XSwgWy0yLjY4MzQzOTA5MTYxODI2NiwgNTEuNDI1MzY4MjY1NjYyOTVdLCBbLTIuNjg0MTcyMzY4NjI0NjMxLCA1MS40MjEwMzczOTg4NDgxMzVdLCBbLTIuNjg4NTYyNjA3MTkxMzY4LCA1MS40MTk3NTk3OTUzNjA5OV0sIFstMi42OTIyMTk0NjQzNDQ5NzIsIDUxLjQyMjgxMzMxODk0NTExXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fYTU5NmI0OGUwYmY0NDAwYWI5NTk5ZmFmMzQ5OGQ5NzUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZmJkNjNiZmJhYzRiNDg1OGE0MmQwMmE0ZTE1Mjk5YmUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NTc3MjIzODgyODQyMzcsIDUxLjU1MjM5MzY5ODM5ODAzNV0sIFstMi41NTMzNDE0ODY0NTU4OTksIDUxLjU1MzY2NTU5NjcwNjIzXSwgWy0yLjU0OTY4ODk5MTYwMDMsIDUxLjU1MDYxNzUyOTM5NTI1XSwgWy0yLjU1MDQxNzIxNTM1MTcyNzUsIDUxLjU0NjI5NzM0MTA4MjE0XSwgWy0yLjU1NDc5ODIyMTUwNjQ0NzgsIDUxLjU0NTAyNTE4Mjg1MTE2XSwgWy0yLjU1ODQ1MDg5OTU5MjY0NDUsIDUxLjU0ODA3MzQ3Mjg1MzddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9mYmQ2M2JmYmFjNGI0ODU4YTQyZDAyYTRlMTUyOTliZS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl81MWY2OWYxNjhkZDY0OGRmYmQ4MDhiYTViMzkzMGRkZCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU4ODM4OTc0MzE1OTMwNzMsIDUxLjUxODgyOTAzNDU2Mzc0NF0sIFstMi41ODQwMDY1NzEwODk2OTgsIDUxLjUyMDEwMjM2MzEzMjE2XSwgWy0yLjU4MDM1Mjk3NzE3NDAwNzUsIDUxLjUxNzA1Mjk2MDA2NTc3Nl0sIFstMi41ODEwODIzNzIyMzYwOTMsIDUxLjUxMjczMDAwNTg5NDc0NV0sIFstMi41ODU0NjU2NDg2MTY5NDEsIDUxLjUxMTQ1NjQxNzMyNDQyNV0sIFstMi41ODkxMTk0MjU2MzM3NDU4LCA1MS41MTQ1MDYwNDI5MjQ2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fNTFmNjlmMTY4ZGQ2NDhkZmJkODA4YmE1YjM5MzBkZGQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMTE2NTk0NGJkY2FmNGQxMzg4OGZlNzI1NzMwMDE3YzUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42NzUzOTI1NDA1Nzc2OTg2LCA1MS40MjM1OTIzODgyNTA1NF0sIFstMi42NzEwMDI5NTExODE2NzUzLCA1MS40MjQ4Njk3NzQxNzU2Ml0sIFstMi42NjczNDYyNDc0OTc1NTk2LCA1MS40MjE4MTY1OTE2NDM1MzRdLCBbLTIuNjY4MDc4OTUwNDg3MTE5LCA1MS40MTc0ODU4MDExMDI1N10sIFstMi42NzI0Njg2NDQxNDY4NzQ0LCA1MS40MTYyMDgxNTQ5NTQ2M10sIFstMi42NzYxMjU1MzA1NjI2MDU3LCA1MS40MTkyNjE1NTk1Njc5OV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzExNjU5NDRiZGNhZjRkMTM4ODhmZTcyNTczMDAxN2M1LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2Q4Mjg2ZmYyZjQwMTQ2ZjdhNWUzNmM4YTZjNDM5YWI0ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjc5MDQwMTM3Njk1MzUzNCwgNTEuNDUxMzQ3Mjc4MTQyMTZdLCBbLTIuNjc0NjUxMjM4NDQ0NzA2NSwgNTEuNDUyNjIzNjQ0NTM2Mjc0XSwgWy0yLjY3MDk5NTMwOTMxMzc0MTMsIDUxLjQ0OTU3MTE3MjU1NzM3XSwgWy0yLjY3MTcyODA5Njc3MzgwNjYsIDUxLjQ0NTI0MjExMTkxMTI3XSwgWy0yLjY3NjExNzEwMDUyODQ2MDcsIDUxLjQ0Mzk2NTQ4NTI5MTc2XSwgWy0yLjY3OTc3MzIxMjMyODMwMiwgNTEuNDQ3MDE4MTc5NTQxMjQ2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fZDgyODZmZjJmNDAxNDZmN2E1ZTM2YzhhNmM0MzlhYjQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZGEyZjU0YTA4MzgwNDJmZDkwZTU3MmU5N2I0YWY3NzUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi40OTU2NDEyODM1NzMyMSwgNTEuNTI1MjI1OTMyNjk5MTY1XSwgWy0yLjQ5MTI2MjA5NzU2MzkyLCA1MS41MjY0OTg1MDE4MzAyNzVdLCBbLTIuNDg3NjA5MTIzMjAyNDM1MywgNTEuNTIzNDUwNTE5MzAwNDJdLCBbLTIuNDg4MzM1MTUxMjI1ODk3OCwgNTEuNTE5MTI5NzQ1MjQzMjddLCBbLTIuNDkyNzE0NDQwODcwNzU5OCwgNTEuNTE3ODU2OTE2MzI0MTJdLCBbLTIuNDk2MzY3NTk4ODY1OTE0NCwgNTEuNTIwOTA1MTIxMjQ3NzJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9kYTJmNTRhMDgzODA0MmZkOTBlNTcyZTk3YjRhZjc3NS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lZTU2MzRkZGVmNjY0NDQwOGEyYzc0ZTg5YzcyMGViNSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU3MjI4OTc0NTQ4ODM2MTgsIDUxLjQ0MTI0ODI1MDM3OTgzXSwgWy0yLjU2NzkwNDg4MTM2OTE4NDcsIDUxLjQ0MjUyNDM5NTk4MDQ1Nl0sIFstMi41NjQyNDkxNTQ3NjAzODY1LCA1MS40Mzk0NzMwODAzMjIyNl0sIFstMi41NjQ5NzgxMDg5Njk0OTksIDUxLjQzNTE0NTM5NzA2NTEzNV0sIFstMi41NjkzNjMwNzY2ODQ0NjQsIDUxLjQzMzg2ODk5MTQ4MTE5XSwgWy0yLjU3MzAxODk4NjYwMzgzODQsIDUxLjQzNjkyMDUyOTEzNTIxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fZWU1NjM0ZGRlZjY2NDQ0MDhhMmM3NGU4OWM3MjBlYjUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNWU1MDI4ZTBmZDRmNDEzNTk5ZTRlNmIzMzU4MzkxOGYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42MzM2OTk1OTY5Njk4OTEzLCA1MS40NDgwNzI0Nzg4NzQ5Ml0sIFstMi42MjkzMTI0Mzg4MDk0ODEzLCA1MS40NDkzNDg3MTM0OTg3MzZdLCBbLTIuNjI1NjU2NjIxMTU2NzI0NSwgNTEuNDQ2Mjk2NzYwNDMxOTNdLCBbLTIuNjI2Mzg3Nzc4NzMzMTU0NywgNTEuNDQxOTY4MzUwNTc4MjhdLCBbLTIuNjMwNzc1MDQxMDE5NjU2NCwgNTEuNDQwNjkxODU1ODMyMTNdLCBbLTIuNjM0NDMxMDQxNjEyOTM1LCA1MS40NDM3NDQwMzEwNTk0NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzVlNTAyOGUwZmQ0ZjQxMzU5OWU0ZTZiMzM1ODM5MThmLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2MwYjYzNWI1OTIxODRiYzViZTU5YjA2YWY3Y2E5NGNmID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjc1MzY1ODk3MDc5MTI2MywgNTEuNDk3NjczMjk0NDMzMzRdLCBbLTIuNjcwOTc4NTQ3NzcyOTg3MywgNTEuNDk4OTQ3OTAzNjg5NDRdLCBbLTIuNjY3MzIzOTU2ODg5NjMwOCwgNTEuNDk1ODk2NzUxNzgwNjldLCBbLTIuNjY4MDU2NTMyNzAwMzIyNSwgNTEuNDkxNTcwNzY4MDQ3MTNdLCBbLTIuNjcyNDQzOTg2ODM0OTY4MywgNTEuNDkwMjk1ODk4NTg0NzVdLCBbLTIuNjc2MDk4NzYwMzM5NjYzMywgNTEuNDkzMzQ3MjczMDU5OF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2MwYjYzNWI1OTIxODRiYzViZTU5YjA2YWY3Y2E5NGNmLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2IzNjkwYjhjOTI0ZDQ1YzlhZmRjYzQwNTRlYjM1MjQ5ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTE2NzU3ODI2ODA5ODA2LCA1MS40NDkxODEwNzk0MjU4OV0sIFstMi41MTIzNzU0NzE1NzgwMTI3LCA1MS40NTA0NTY2MTYyMTY2N10sIFstMi41MDg3MjAyMzU0MjE3NzEsIDUxLjQ0NzQwNjI2Mjk5MTU4NV0sIFstMi41MDk0NDcxNzA4ODM1OTU1LCA1MS40NDMwODAxNTEwMzM5MV0sIFstMi41MTM4Mjk2MjkzMzg3MDMyLCA1MS40NDE4MDQzNTQzODg1MTZdLCBbLTIuNTE3NDg1MDQ5MTE4MDIxLCA1MS40NDQ4NTQ5Mjk1NTI5Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2IzNjkwYjhjOTI0ZDQ1YzlhZmRjYzQwNTRlYjM1MjQ5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzA3ZWU4YWNjOTAwZDQ1NGY5YzUzZmMwMDMwM2U0ZmU2ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTk5MzUwMjczMzAwNTkzLCA1MS41Mjc5NzczMTYxMTg3OF0sIFstMi41OTQ5NjY5MzE5Nzg2NzUsIDUxLjUyOTI1MDM2MzEwODMyNV0sIFstMi41OTEzMTM1NDg1NTA3ODg4LCA1MS41MjYyMDEwNjQ2NzAxMjZdLCBbLTIuNTkyMDQzMzIzNDMwOTY2LCA1MS41MjE4Nzg0OTY2MjUyM10sIFstMi41OTY0MjY3NjkyMTkxMDQ1LCA1MS41MjA2MDUxODk2MTEwNzVdLCBbLTIuNjAwMDgwMzM1NjcwMTMxLCA1MS41MjM2NTQ3MTA2NjQwMDVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8wN2VlOGFjYzkwMGQ0NTRmOWM1M2ZjMDAzMDNlNGZlNi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl83ZGYwZTcyNzMyNDk0MDE4YWQ2ZTFmYTNhNWMzNmNhZCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU0ODk0OTAyMjAzMTQ2OTQsIDUxLjUzMDI4NjM4OTM2MTg5XSwgWy0yLjU0NDU2NzgwNzQ2MDAyMDQsIDUxLjUzMTU1OTA2NzQyNDM4XSwgWy0yLjU0MDkxNDcyMzU1MTk3ODIsIDUxLjUyODUxMDUwODg3OTA2Nl0sIFstMi41NDE2NDI2NzA5MDk3MTg0LCA1MS41MjQxODkwNDk3Mzc4NTZdLCBbLTIuNTQ2MDIzOTg5NTcxNDcyNywgNTEuNTIyOTE2MTExNzY2NzA1XSwgWy0yLjU0OTY3NzI1Njc5NDQ4NCwgNTEuNTI1OTY0ODkyODQzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fN2RmMGU3MjczMjQ5NDAxOGFkNmUxZmEzYTVjMzZjYWQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMzVkODA4YjUwYzUxNDQ0YThhODIwY2I1OGEzODNjYjMgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41OTQyMjI5ODQ2Njc1NTMsIDUxLjQ1OTU1NTk4MjkxOTY3NF0sIFstMi41ODk4Mzc3Nzk5MTk4NTg2LCA1MS40NjA4MzE1NjU3MjQ2Ml0sIFstMi41ODYxODI0NzEwNjMyNzksIDUxLjQ1Nzc4MDQ1NzA2NTc0XSwgWy0yLjU4NjkxMjE4MzgwODU3MjIsIDUxLjQ1MzQ1MzU0MzQ0MDldLCBbLTIuNTkxMjk3NDkyNDYyMzQ0LCA1MS40NTIxNzc3MDA2MDY0ODRdLCBbLTIuNTk0OTUyOTg0NDc0MDQzLCA1MS40NTUyMjkwMzE0MjM5MDRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8zNWQ4MDhiNTBjNTE0NDRhOGE4MjBjYjU4YTM4M2NiMy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl82YTJjYzdlMGZlNWE0MDE3OTExZDZiOGM0ZjlmNDE4NyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU3NjY5MTYzMTI3MDQ1NzUsIDUxLjQ4OTMzNTA0NDU0OTcwNV0sIFstMi41NzIzMDgwNDI0Mjg3NDU0LCA1MS40OTA2MDk0MTMwOTY3XSwgWy0yLjU2ODY1MzY2MjYzMjI3MiwgNTEuNDg3NTU5MzU2NTA3MjA1XSwgWy0yLjU2OTM4MjY4ODQ3MzIwNTYsIDUxLjQ4MzIzNDcwOTA0OTQ2XSwgWy0yLjU3Mzc2NjM4MTMxMDg0OTYsIDUxLjQ4MTk2MDA4MDUyMDAyXSwgWy0yLjU3NzQyMDk0NDMyMDkyODYsIDUxLjQ4NTAxMDM1OTQyODMxNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzZhMmNjN2UwZmU1YTQwMTc5MTFkNmI4YzRmOWY0MTg3LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzIyZTE3ZDQyYzUxYTQ3OWNhZDAyNmI2ZjJiMzkwMmUzID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTQwOTE0NzIzNTUxOTc4MiwgNTEuNTI4NTEwNTA4ODc5MDY2XSwgWy0yLjUzNjUzMzc4MzUyMDc1NCwgNTEuNTI5NzgzMjA4NTA5NjJdLCBbLTIuNTMyODgwNjg2ODIzODQzLCA1MS41MjY3MzQ3MDg4OTIxMzVdLCBbLTIuNTMzNjA4MzQ2ODAyODg0LCA1MS41MjI0MTMyODcxMzc5OV0sIFstMi41Mzc5ODkzOTA4NDgyMTYsIDUxLjUyMTE0MDMyNzYxNjY3XSwgWy0yLjU0MTY0MjY3MDkwOTcxODQsIDUxLjUyNDE4OTA0OTczNzg1Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzIyZTE3ZDQyYzUxYTQ3OWNhZDAyNmI2ZjJiMzkwMmUzLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzA5ZGE2M2YzMGY1ZDQzNzdhYzI0YjUxYTBhZDI5Zjg3ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjQ3NTkwNDcyNjk2MTg3NiwgNTEuNDY0NjA3OTYwODIzNjFdLCBbLTIuNjQzMjAzMjUwMDQ5MTgzOCwgNTEuNDY1ODgzNjUzNzU1ODI0XSwgWy0yLjYzOTU0Nzg0MDIzOTc5OSwgNTEuNDYyODMxOTY3Mjc0NDRdLCBbLTIuNjQwMjc5NDcwMjUyNDAyNCwgNTEuNDU4NTA0MzY1NTYyNDI2XSwgWy0yLjY0NDY2Njc5NzI1OTY5NzMsIDUxLjQ1NzIyODQxMjQ3OTc0XSwgWy0yLjY0ODMyMjM4OTkwMzM3NiwgNTEuNDYwMjgwMzIxMjU3MDVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8wOWRhNjNmMzBmNWQ0Mzc3YWMyNGI1MWEwYWQyOWY4Ny5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9kN2EwMjdmNDI5ZjY0YzdjODliZTgxYWIwZjk1ZTYxMiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY4MTIzOTQ2Mjg1MjA5NSwgNTEuNDM4MzU5MDk4MTA2Nl0sIFstMi42NzY4NTAwODIyMjA5MzEsIDUxLjQzOTYzNTk2MzU3MDQzXSwgWy0yLjY3MzE5Mzc3MzAyNzQ2NjQsIDUxLjQzNjU4MzEwNjQ3NDkzNF0sIFstMi42NzM5MjY2NjE3OTkxODI0LCA1MS40MzIyNTMxNjE3MjM0MV0sIFstMi42NzgzMTYxNDY4NTIzMzEzLCA1MS40MzA5NzYwMzYwMjYzOV0sIFstMi42ODE5NzI2Mzg3MjEwNDUsIDUxLjQzNDAyOTExNTMxMTU4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fZDdhMDI3ZjQyOWY2NGM3Yzg5YmU4MWFiMGY5NWU2MTIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMGRjNjZlYzZkNmFiNGNhM2JmODQ2ZDAxYzBiNTYyOGEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42ODQ4ODUzNDA1NTI4MzUsIDUxLjQ2NjEwOTEwNTI0MjYzXSwgWy0yLjY4MDQ5NjY1MDU0NzM2NjQsIDUxLjQ2NzM4NDk1MTE3MDg2XSwgWy0yLjY3Njg0MTExNjQ0MzU0NCwgNTEuNDY0MzMyODA1MjQ3MzldLCBbLTIuNjc3NTc0MDg5NzQyMDM2LCA1MS40NjAwMDQ1OTEwMTQ1NF0sIFstMi42ODE5NjI4ODQ0MDk2MjEsIDUxLjQ1ODcyODQ4NDg1MDgyXSwgWy0yLjY4NTYxODYwMTEyNTg1MDMsIDUxLjQ2MTc4MDg1MzE1Mjk5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fMGRjNjZlYzZkNmFiNGNhM2JmODQ2ZDAxYzBiNTYyOGEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fOTljNmQ3NGFkYWIyNGRjNWEyMWQ1YmU4NWU5MDFjMTYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42MTU0MjQ1MDExMDczNTUsIDUxLjUzMTUzMDA2MDYzMzQyXSwgWy0yLjYxMTA0MDYxMjk1MTUxNSwgNTEuNTMyODAzMDY0NDYxNDI2XSwgWy0yLjYwNzM4NzI1NzU5NTA4MDUsIDUxLjUyOTc1MzY0ODEwNTg1XSwgWy0yLjYwODExNzYwNzQ4MDMzMiwgNTEuNTI1NDMxMDA1MjUwNTQ2XSwgWy0yLjYxMjUwMTYwMDI1NDc4NDUsIDUxLjUyNDE1Nzc0MTM2MjA5Nl0sIFstMi42MTYxNTUxMzg1MzQ2NDEsIDUxLjUyNzIwNzM4MDM4Njk3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fOTljNmQ3NGFkYWIyNGRjNWEyMWQ1YmU4NWU5MDFjMTYuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYjM4MGQ1YzY1MDcxNDQyN2JmNDc3MmU5YzQ3ODc1ZjcgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NDE2MTQ4NzU2ODk0NDA2LCA1MS40NzQ4NTgxOTkyNjg3Ml0sIFstMi41MzcyMzIyODA3NTExMjUsIDUxLjQ3NjEzMjkxMzU5OTE3XSwgWy0yLjUzMzU3NzY1NDQ1OTcsIDUxLjQ3MzA4MjkzMDQ3NjA3NV0sIFstMi41MzQzMDU0Mzk2NzU3MTgsIDUxLjQ2ODc1ODAxMDg2NDMzXSwgWy0yLjUzODY4ODEzODIyNjM3MSwgNTEuNDY3NDgzMDM2NjI4MjNdLCBbLTIuNTQyMzQyOTQ3OTU3OTg3MywgNTEuNDcwNTMzMjQxOTA3MDddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9iMzgwZDVjNjUwNzE0NDI3YmY0NzcyZTljNDc4NzVmNy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wZjdlMjk0NGFiNDk0NzhiOTgwNDVjYTJkZmJjN2FlZSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY0MDI3NjU2Mjc4MzUxMTQsIDUxLjQ4MzE5MDU5OTE3NDgzXSwgWy0yLjYzNTg5MDE5OTMzNjU0NjIsIDUxLjQ4NDQ2NTU1NDU5MTQ5XSwgWy0yLjYzMjIzNTM1MjMzMDI5MywgNTEuNDgxNDE0NDc1OTc1MDFdLCBbLTIuNjMyOTY2Njg1OTMwNjU1LCA1MS40NzcwODgyMTk1MzYyODRdLCBbLTIuNjM3MzUzMTUzODIyNDc5MywgNTEuNDc1ODEzMDAzOTkwMjI2XSwgWy0yLjY0MTAwODE4MzY3ODM1NTQsIDUxLjQ3ODg2NDMwNTAwOTgxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fMGY3ZTI5NDRhYjQ5NDc4Yjk4MDQ1Y2EyZGZiYzdhZWUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMGNjN2Q4MDU2NmNhNGI3MGE1NmMzOWY0OGVkMjc1MTUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NzAxMDIyMjY5NDY4Mzc3LCA1MS40NTQyMjk2NDczNzMwMjZdLCBbLTIuNTY1NzE3ODQ0NTEwMTM2MywgNTEuNDU1NTA1Mjk0MzkwMDY1XSwgWy0yLjU2MjA2MjQ5NzA4ODgxNiwgNTEuNDUyNDU0MzYzNTMwMDldLCBbLTIuNTYyNzkxMzQ4ODA5MywgNTEuNDQ4MTI3NTYzNTc0MDVdLCBbLTIuNTY3MTc1ODM0OTIzNTcwNSwgNTEuNDQ2ODUxNjU2NTgxNTM2XSwgWy0yLjU3MDgzMTM2NTY0OTA5ODYsIDUxLjQ0OTkwMjgwOTUxODA2NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzBjYzdkODA1NjZjYTRiNzBhNTZjMzlmNDhlZDI3NTE1LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2Y4ZjM1YjNiYmJiZDQxYWM5NzMwMGQ5OThhOGIxNDc1ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNzAzODk2MTE5NjkwODA0MiwgNTEuNDc3MDQyMTc1NDQzMTRdLCBbLTIuNjk5NTA2OTkwNDM1OTQyLCA1MS40NzgzMTc3MTgxOTMwN10sIFstMi42OTU4NTE2ODQ1Nzk1NTksIDUxLjQ3NTI2NTYxNjkzNTUxNl0sIFstMi42OTY1ODUzMjU1MDM0MTA3LCA1MS40NzA5Mzc3NTA0MzgxNF0sIFstMi43MDA5NzQ1NTk2NTE3MzksIDUxLjQ2OTY2MTk0NzQxMTcyXSwgWy0yLjcwNDYzMDA0Nzk5MTk5NSwgNTEuNDcyNzE0MjcxMTU2NjldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9mOGYzNWIzYmJiYmQ0MWFjOTczMDBkOTk4YThiMTQ3NS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9hNWJhOWNlYWVhZGU0YWNlOGJiZjRiNjQ1ZmFmMWM3ZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjUzMDY5NzkxMzQ4OTQ4OCwgNTEuNTM5Njk3MjA1NTMxMjI2XSwgWy0yLjUyNjMxNzczMDk0NzY2NDgsIDUxLjU0MDk2OTQyODU1Njc0XSwgWy0yLjUyMjY2NTAwMTA0NDQ4NSwgNTEuNTM3OTIxMzc0MDI1NTg2XSwgWy0yLjUyMzM5MjI3MDI4NDgyMDYsIDUxLjUzMzYwMDg3MzkxMDJdLCBbLTIuNTI3NzcyNTU2ODQ1NzE5NCwgNTEuNTMyMzI4MzkxMDIwMjg2XSwgWy0yLjUzMTQyNTQ3MDE1NjUxMzgsIDUxLjUzNTM3NjY2ODEwNzc2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fYTViYTljZWFlYWRlNGFjZThiYmY0YjY0NWZhZjFjN2Yuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNGZhZGM3YmYyMjkwNGY2Mzg5ZDJiNDdhMzczN2Q5MzQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41Mjg0MTU3NzE2NDQwMTk2LCA1MS40MDQ2MjkwNjgwMDMwN10sIFstMi41MjQwMzE1OTMzNjA3NzksIDUxLjQwNTkwNjMzODYzMjgyXSwgWy0yLjUyMDM3NTAzNzYxMTQ0NiwgNTEuNDAyODU0NjEwNzgyNV0sIFstMi41MjExMDI0NzY1MzQxNTM0LCA1MS4zOTg1MjUzOTA2MzAwNV0sIFstMi41MjU0ODY3NTc3OTI0NTQsIDUxLjM5NzI0Nzg2MDEwOTc4XSwgWy0yLjUyOTE0MzQ5NzE2MjMyNiwgNTEuNDAwMjk5ODA5NjI5OTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl80ZmFkYzdiZjIyOTA0ZjYzODlkMmI0N2EzNzM3ZDkzNC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wNDk0YmFkZThhOTE0YzkwYTNiMDc5ZTZiZDAxZGUwNCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU4MTA2ODAyMjIzMDc0MywgNTEuNDYzMzgyNTE0MTM5OTNdLCBbLTIuNTc2NjgzNDY5MzcyNzcsIDUxLjQ2NDY1Nzg3OTc2MDEwNF0sIFstMi41NzMwMjgzMzA3MTA5OTc2LCA1MS40NjE2MDcwNTI1MjE3ODVdLCBbLTIuNTczNzU3NTYxNjkwMDA5NywgNTEuNDU3MjgwNjM3NTAyOTI2XSwgWy0yLjU3ODE0MjIxODM4MDY2NzUsIDUxLjQ1NjAwNTAxMTg4NDIyXSwgWy0yLjU4MTc5NzU0MDI2ODkzMjYsIDUxLjQ1OTA1NjA2MTI4MDQyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fMDQ5NGJhZGU4YTkxNGM5MGEzYjA3OWU2YmQwMWRlMDQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYzJlOTgxMWNiMDg3NDMwN2FhNzY0YTk2ZTk0OGVmYWIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42NDEwMTM1OTU4Mjk5MDYsIDUxLjQyOTQ3OTk0NzcwMTE1XSwgWy0yLjYzNjYyNTU3ODk2NTgxMTMsIDUxLjQzMDc1NjkxOTk4NzU4XSwgWy0yLjYzMjk2OTE5ODY5NTUxMTMsIDUxLjQyNzcwNDM1OTkzNTQyNl0sIFstMi42MzM3MDA2NTIzNzM0ODAzLCA1MS40MjMzNzQ2MDU1NDE0OV0sIFstMi42MzgwODg3NzMyNzg3OSwgNTEuNDIyMDk3MzczMTEyMDQ1XSwgWy0yLjY0MTc0NTMzNjQ3NDIwMzQsIDUxLjQyNTE1MDE1NTIxNzAyNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2MyZTk4MTFjYjA4NzQzMDdhYTc2NGE5NmU5NDhlZmFiLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzc3NjkyN2UzZmFmMzRhN2U4ZmU3YmYxMTIxOGU1NDAxID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjE4MzQ2MDg3NzM4MzU0NiwgNTEuNDY0ODgzMDQ0NTM2OTFdLCBbLTIuNjEzOTYwMDYyMDMzMTAxNCwgNTEuNDY2MTU4NTYzMDc4MzVdLCBbLTIuNjEwMzA0NzkzMzMyMzYyLCA1MS40NjMxMDcyNzY2NTMxNzZdLCBbLTIuNjExMDM1MzY3MzQwNDM1NiwgNTEuNDU4NzgwMjQ5NDQzNTRdLCBbLTIuNjE1NDIxNDk3MTgwMjgzLCA1MS40NTc1MDQ0NzA4MTg2NV0sIFstMi42MTkwNzY5NDg4ODY3NTEsIDUxLjQ2MDU1NTk3OTQ4NDM1NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzc3NjkyN2UzZmFmMzRhN2U4ZmU3YmYxMTIxOGU1NDAxLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzFjYjdmZjk3NjRhODRiMmFiY2M3NDA2MWMyMGExNDg3ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNDk2MzIzNzM4Njk5OTM0LCA1MS40NzE1ODE3OTA4NDE1XSwgWy0yLjQ5MTk0Mjg5ODM0MzQ2MjYsIDUxLjQ3Mjg1NjM3Mzg5OTM4XSwgWy0yLjQ4ODI4ODM5Njg5NDYxOTcsIDUxLjQ2OTgwNjkwODY5Nzk3Nl0sIFstMi40ODkwMTQ1NTIxMDI1MDksIDUxLjQ2NTQ4MjYzODM5MDQwNV0sIFstMi40OTMzOTU0OTU2OTMwNzYsIDUxLjQ2NDIwNzc5NTUyOTY4XSwgWy0yLjQ5NzA1MDE4MDg1MTAwNzMsIDUxLjQ2NzI1NzQ4Mjc3NjkxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fMWNiN2ZmOTc2NGE4NGIyYWJjYzc0MDYxYzIwYTE0ODcuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fM2ZjMTUyMDAxY2JlNGQ0NzgwZTA3OGY0MmIxYjNkMDQgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42NzgyODc1MTY1NzU1NDMzLCA1MS41MDUwNTAxMDMxNTYxXSwgWy0yLjY3MzkwMDI3MjE3NjgzODYsIDUxLjUwNjMyNDQ1MjIwMTA3XSwgWy0yLjY3MDI0NTg3OTA2NzQ1NzUsIDUxLjUwMzI3MzQ2Mzc3OTAyNF0sIFstMi42NzA5Nzg1NDc3NzI5ODczLCA1MS40OTg5NDc5MDM2ODk0NF0sIFstMi42NzUzNjU4OTcwNzkxMjYzLCA1MS40OTc2NzMyOTQ0MzMzNF0sIFstMi42NzkwMjA0NzI3ODE1NTAzLCA1MS41MDA3MjQ1MDU0NzU1MV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzNmYzE1MjAwMWNiZTRkNDc4MGUwNzhmNDJiMWIzZDA0LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzU3YjJhZjE1OGU3ZTQ0MzZiMTA3ZDAzZGIzOTM3MTVkID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTkzNDg3MzE2ODUxMzMyLCA1MS40MzkxOTQ2OTM4NzczOV0sIFstMi41ODkxMDE1MjY1OTA4NTI2LCA1MS40NDA0NzEwMzUzOTQxM10sIFstMi41ODU0NDU2NDIxNDkwMjEsIDUxLjQzNzQxOTM3OTAzMjY2XSwgWy0yLjU4NjE3NTM2NDc4NzQyNzMsIDUxLjQzMzA5MTE1OTEyODE5XSwgWy0yLjU5MDU2MTI1ODc5MzE4MTcsIDUxLjQzMTgxNDU1NzU3OTJdLCBbLTIuNTk0MjE3MzI2NDI0NTU1NCwgNTEuNDM0ODY2NDM1OTY0NDNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl81N2IyYWYxNThlN2U0NDM2YjEwN2QwM2RiMzkzNzE1ZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9jNWNiOGU3YTgwMDY0YTg1YjNhOGE4NDNhOTU4MjAwYyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU1OTkwODAyNTMyOTY2NywgNTEuNTM5NDMyMTM3MDAyMTE2XSwgWy0yLjU1NTUyNjY0MDYxMzExNzYsIDUxLjU0MDcwNDUzMzU1OTUwNl0sIFstMi41NTE4NzM3NjYwNDkzMzg3LCA1MS41Mzc2NTYwNzk3ODEyNV0sIFstMi41NTI2MDIwOTI5NzQyMDg2LCA1MS41MzMzMzUwMDY4MzEzOV0sIFstMi41NTY5ODM1ODE5MzU5NzY1LCA1MS41MzIwNjIzNTAzNDI3XSwgWy0yLjU2MDYzNjYzOTczNjk1LCA1MS41MzUxMTEwMjY3MzI3NjRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9jNWNiOGU3YTgwMDY0YTg1YjNhOGE4NDNhOTU4MjAwYy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl85MTgzNTgzYmMwZGI0OWFlOWU5MmU1NTE5MGIwZDA4OCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjUxNjgxMzM5OTkyNjY3MzUsIDUxLjUyMzE4MzM1MDM5NzgxXSwgWy0yLjUxMjQzMzI4NDQxNDk4MTUsIDUxLjUyNDQ1NjExNDY5ODM0Nl0sIFstMi41MDg3ODAxNTA0MDk5ODAzLCA1MS41MjE0MDc3OTE4ODYyN10sIFstMi41MDk1MDY5NDg0MTI3MjY2LCA1MS41MTcwODY0ODIzNDkzMDZdLCBbLTIuNTEzODg3MTY3NzA5OTE3NSwgNTEuNTE1ODEzNDU4MjExNzc0XSwgWy0yLjUxNzU0MDQ4NTIyODE4ODYsIDUxLjUxODg2MjAwMzQ0NTc3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fOTE4MzU4M2JjMGRiNDlhZTllOTJlNTUxOTBiMGQwODguc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZDFlOGEwOWNhOGJkNDRmODk3YzlmNTc2YzUyMjQ0ODAgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi40ODY3ODczNzUwMDUyNjU2LCA1MS40MjkxMDM0MjA0NTg1N10sIFstMi40ODI0MDU2NDA0NDcxODg2LCA1MS40MzAzNzk1NDA5NDAzMzZdLCBbLTIuNDc4NzQ5OTgxMzc4Njg5LCA1MS40MjczMjkwNDA1MTIyNF0sIFstMi40Nzk0NzU4NzMwNTA2NzI1LCA1MS40MjMwMDIxOTc4NTA1NF0sIFstMi40ODM4NTc3MTA0NDU2ODMsIDUxLjQyMTcyNTgxNzU3ODM4NF0sIFstMi40ODc1MTM1NTMzNDExNDY1LCA1MS40MjQ3NzY1Mzk3NTU4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fZDFlOGEwOWNhOGJkNDRmODk3YzlmNTc2YzUyMjQ0ODAuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMjE1MDVkYThhZDY2NGJhYmJmNDVhYmY5YzEzNjQyNTIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42MTM5NTU0NTkyNzY4NjU3LCA1MS40MTY3NzExNDQ3NjM1MV0sIFstMi42MDk1NjgxNTg2Njk5MDEsIDUxLjQxODA0ODQ0MTE2MzgxXSwgWy0yLjYwNTkxMTU0MTYwMDA2MiwgNTEuNDE0OTk1ODk2ODY4MDM1XSwgWy0yLjYwNjY0MjA0MjA0Mzc3LCA1MS40MTA2NjU4MzQyNTI5NV0sIFstMi42MTEwMjk0NDYzODQzODEsIDUxLjQwOTM4ODI3Nzc2ODk1XSwgWy0yLjYxNDY4NjI0NjU1NjkzOSwgNTEuNDEyNDQxMDQzOTgxMjFdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8yMTUwNWRhOGFkNjY0YmFiYmY0NWFiZjljMTM2NDI1Mi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl83YjE4ZTdmNTM0MjE0OTkyOWJhOTRmN2Y4N2FjNzg5OCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU1NDc2Mzk2NjYxNjY1MTUsIDUxLjQ3MTAzMzYyMjE4MjJdLCBbLTIuNTUwMzgwNzE4NjYzNzkzNSwgNTEuNDcyMzA4NTUzNTY1MTRdLCBbLTIuNTQ2NzI1OTIxMjg0NzY1LCA1MS40NjkyNTgyODkwOTQ2OV0sIFstMi41NDc0NTQxODg0OTg4ODIsIDUxLjQ2NDkzMjg3MTA4MjQwNF0sIFstMi41NTE4Mzc1NDAxMzc1NjA0LCA1MS40NjM2NTc2Nzk3NjI4NV0sIFstMi41NTU0OTI1MjA4ODU2MTY1LCA1MS40NjY3MDgxNjYzODk3MzZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl83YjE4ZTdmNTM0MjE0OTkyOWJhOTRmN2Y4N2FjNzg5OC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lOTk5MmU2Y2QyMmQ0MDg1ODU4ZGRlY2QyMzU5NzM3MSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU1NTUwNDM3MTE4Nzk5MzcsIDUxLjQ5MTM4MjMwOTU3MTYxXSwgWy0yLjU1MTEyMTcwOTE2MzM0ODcsIDUxLjQ5MjY1NjQ4MjU5ODMxXSwgWy0yLjU0NzQ2NzQ4Njk1ODMwMiwgNTEuNDg5NjA2NzY2NTQ4MTFdLCBbLTIuNTQ4MTk1NzQzNDUyNjcxNiwgNTEuNDg1MjgyNjU1MTc4MDNdLCBbLTIuNTUyNTc4NTA5MzIzNTQ2LCA1MS40ODQwMDgyMjIyMTc4NF0sIFstMi41NTYyMzI5MTQ4NjMxMjgsIDUxLjQ4NzA1ODE2MDU1ODc3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fZTk5OTJlNmNkMjJkNDA4NTg1OGRkZWNkMjM1OTczNzEuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZTA4MjEwM2VjYzIwNDYyZDkxYTc1ZjRjNmMzN2YwZWEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41Mzg3MzEwODc5MzIyNzg2LCA1MS41NDE0NzMxMTc1MDI2NzZdLCBbLTIuNTM0MzUwNjMwNzAzMDEyNCwgNTEuNTQyNzQ1MzE4OTM1NzJdLCBbLTIuNTMwNjk3OTEzNDg5NDg4LCA1MS41Mzk2OTcyMDU1MzEyMjZdLCBbLTIuNTMxNDI1NDcwMTU2NTEzOCwgNTEuNTM1Mzc2NjY4MTA3NzZdLCBbLTIuNTM1ODA2MDMxNDgxMDY2NiwgNTEuNTM0MTA0MjA2NzkyNDFdLCBbLTIuNTM5NDU4OTMyMDUyNjE0NCwgNTEuNTM3MTUyNTQyNzgwNDRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9lMDgyMTAzZWNjMjA0NjJkOTFhNzVmNGM2YzM3ZjBlYS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9iOTJkMjgxN2NlODg0MDczYjk3NDJlYWFlZmUyM2ZlOCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjUyMjY2NTAwMTA0NDQ4NSwgNTEuNTM3OTIxMzc0MDI1NTg2XSwgWy0yLjUxODI4NTA5MzMzOTg1OSwgNTEuNTM5MTkzNjE4NjM3ODVdLCBbLTIuNTE0NjMyMzUwOTIzMzc5LCA1MS41MzYxNDU2MjI5ODM2Nl0sIFstMi41MTUzNTkzMzI3NjM2NjUsIDUxLjUzMTgyNTE2MDE4NTczXSwgWy0yLjUxOTczOTM0NDQxMTE2NSwgNTEuNTMwNTUyNjU1NzI2OTddLCBbLTIuNTIzMzkyMjcwMjg0ODIwNiwgNTEuNTMzNjAwODczOTEwMl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2I5MmQyODE3Y2U4ODQwNzNiOTc0MmVhYWVmZTIzZmU4LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzEzODM1OTAyNDcxZDQzMTc4NTgwZGVkZjE2ZGRmNjhmID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTY3MjA0OTM0ODM3NDE5MywgNTEuNTIwODcyNzkzNTM0MDVdLCBbLTIuNTYyODIyNjg4OTg1NzgzNywgNTEuNTIyMTQ1OTI2Nzc4MTRdLCBbLTIuNTU5MTY5MjUxNTMzOTY3NywgNTEuNTE5MDk2ODY0MjE4NDU0XSwgWy0yLjU1OTg5Nzg3NjcyMDkwMzMsIDUxLjUxNDc3NDQ0NTkwNjY1XSwgWy0yLjU2NDI4MDIyNjczMzk3MSwgNTEuNTEzNTAxMDUyNzA5NjddLCBbLTIuNTY3OTMzODQ3NDA3OTc0NSwgNTEuNTE2NTUwMzM3Nzc0OTVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8xMzgzNTkwMjQ3MWQ0MzE3ODU4MGRlZGYxNmRkZjY4Zi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl80NzQ4YWU1ZDMwZWY0ODhmOTBmZWFjYWIzODQzMGY3ZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjQ4NDY4MTk4MTUwMDE2OTcsIDUxLjUxNjA4MTU5OTI2OTM4NF0sIFstMi40ODAzMDI5Njc0NDM0MiwgNTEuNTE3MzU0NDQ5NzE2NjhdLCBbLTIuNDc2NjQ5Nzg2MTYzNDU3LCA1MS41MTQzMDYzNjI2OTYxMjVdLCBbLTIuNDc3Mzc1NDM1MjM4NTI0NywgNTEuNTA5OTg1MjAyOTEyOTddLCBbLTIuNDgxNzU0NTUyNzc1OTU5LCA1MS41MDg3MTIwOTI3MDAzNF0sIFstMi40ODU0MDc5MTc3NjY5ODYzLCA1MS41MTE3NjA0MDIwMzM3NjVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl80NzQ4YWU1ZDMwZWY0ODhmOTBmZWFjYWIzODQzMGY3Zi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9kMmExMDUwZTQwN2M0NzhiYjg5ZDMzOWFjZjBkNDM3MyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU4NDcwODI3NzMxMjAxMSwgNTEuNDE3MDUyNTI5MzcyMzA2XSwgWy0yLjU4MDMyMjE3NjA1MjgyMywgNTEuNDE4MzI5NjUwOTcwMzM1XSwgWy0yLjU3NjY2NTcwMzcwOTA4OSwgNTEuNDE1Mjc3NTA2OTMwN10sIFstMi41NzczOTUxNDkzNjAyNjEsIDUxLjQxMDk0ODAxOTQyOTE5XSwgWy0yLjU4MTc4MTM1NDEyNzU3NSwgNTEuNDA5NjcwNjM3ODE0MzldLCBbLTIuNTg1NDM4MDA5NzQ0OTEyMywgNTEuNDEyNzIzMDAzNzE1MzNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9kMmExMDUwZTQwN2M0NzhiYjg5ZDMzOWFjZjBkNDM3My5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lOTljODIxYmNkMTU0ZWRmOWNjZWZlZTU5NDk3YTVmMyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjUxMDIxNDM3MjU0NDE2MSwgNTEuNDg4MTAzMTgwNzIxNDZdLCBbLTIuNTA1ODMzNDYzNTIxNzQ2LCA1MS40ODkzNzcyMjI2OTc0OV0sIFstMi41MDIxNzkzNjM5MDA4OTUsIDUxLjQ4NjMyODAyNDM3NjU0XSwgWy0yLjUwMjkwNTk4OTcwODAxNywgNTEuNDgyMDA0NTYxODk2MzddLCBbLTIuNTA3Mjg3MDAyMTk4MzQ3LCA1MS40ODA3MzAyNjAwODk2NV0sIFstMi41MTA5NDEyODU0MjI5ODA3LCA1MS40ODM3Nzk2ODA1OTEzNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2U5OWM4MjFiY2QxNTRlZGY5Y2NlZmVlNTk0OTdhNWYzLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzcyYjhkOGJlNmIzZjQxY2RiOTg4OGI0ZTMyNGZmOGFhID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjIwNTM5NDA0NTc2Nzg3NiwgNTEuNTI1OTM0MTM4MDY5OTE0XSwgWy0yLjYxNjE1NTEzODUzNDY0MSwgNTEuNTI3MjA3MzgwMzg2OTddLCBbLTIuNjEyNTAxNjAwMjU0Nzg0NSwgNTEuNTI0MTU3NzQxMzYyMDk2XSwgWy0yLjYxMzIzMjE0NTEyNDU4NSwgNTEuNTE5ODM0NjM3Mzc0NzY0XSwgWy0yLjYxNzYxNjUxNTc4Mjc1MzMsIDUxLjUxODU2MTEzNDk4NDA3XSwgWy0yLjYyMTI3MDIzNjk2NDM2LCA1MS41MjE2MTA5OTY2NTE5MTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl83MmI4ZDhiZTZiM2Y0MWNkYjk4ODhiNGUzMjRmZjhhYS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8yZDc3MDYxMGUwODg0N2IzYWQwZmYzN2M1ODBmODVhMiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjUxMDE1MzMxNjI0ODI4NDMsIDUxLjQxNDA2NjAxNTQ0MTUwNl0sIFstMi41MDU3NzAxNzAwODAxNjQyLCA1MS40MTUzNDI4MzAxNjc4MTZdLCBbLTIuNTAyMTEzOTcwNTI3NTc5LCA1MS40MTIyOTE2MDUxNTMxNl0sIFstMi41MDI4NDA3MzM0Mzk0MDMsIDUxLjQwNzk2MzM0MzcxMzQwNV0sIFstMi41MDcyMjM5ODI1MTIxNzY3LCA1MS40MDY2ODYyNjkxNDAyMV0sIFstMi41MTA4ODAzNjU3Nzc4NDA3LCA1MS40MDk3Mzc3MTU4NTExMTVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8yZDc3MDYxMGUwODg0N2IzYWQwZmYzN2M1ODBmODVhMi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl84NTViOWFkMDViMTk0MmQzOGZjNWEwOWIyODlkYmUyZCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjYzODA4ODc3MzI3ODc5LCA1MS40MjIwOTczNzMxMTIwNDVdLCBbLTIuNjMzNzAwNjUyMzczNDgwMywgNTEuNDIzMzc0NjA1NTQxNDldLCBbLTIuNjMwMDQ0MDc1NDQzOTM4LCA1MS40MjAzMjE4ODI4ODMzODVdLCBbLTIuNjMwNzc1NDM2NDc1NzYyLCA1MS40MTU5OTE3MDU3OTQ3Ml0sIFstMi42MzUxNjM2NjEzNDMxNzk3LCA1MS40MTQ3MTQyMTMyMjc0MzRdLCBbLTIuNjM4ODIwNDIxMjI1OTUwNSwgNTEuNDE3NzY3MTU3ODg0MTVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl84NTViOWFkMDViMTk0MmQzOGZjNWEwOWIyODlkYmUyZC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9lNWMzYjc0OTNkNzA0MjExOWUzYjQ2Yzc0OTFmNDhmNyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjYwNDQ2NDA1NTAyNjU2OSwgNTEuNTIyMzgxNDI1MjA5ODM2XSwgWy0yLjYwMDA4MDMzNTY3MDEzMSwgNTEuNTIzNjU0NzEwNjY0MDA1XSwgWy0yLjU5NjQyNjc2OTIxOTEwNDUsIDUxLjUyMDYwNTE4OTYxMTA3NV0sIFstMi41OTcxNTY3MzkxMzIzMDMsIDUxLjUxNjI4MjE2MDUxMzE5XSwgWy0yLjYwMTU0MDU2Mjk1MjM4MDIsIDUxLjUxNTAwODYxNTAyMTI0NV0sIFstMi42MDUxOTQzMTI0MDQ4OTksIDUxLjUxODA1ODM1ODY2MjU0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fZTVjM2I3NDkzZDcwNDIxMTllM2I0NmM3NDkxZjQ4Zjcuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMjhjOGViZTY5NzFhNDE5NDlhNjg2YzkwMzQ4MjM5NjIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NTMyODE1NTg2NTQzOTY3LCA1MS40MzAzMTg5MjY3NjY0M10sIFstMi41NDg4OTcxNDAwNTQ2MDUsIDUxLjQzMTU5NTM3NTAzMzI5XSwgWy0yLjU0NTI0MTE5MzI0NDk2OTcsIDUxLjQyODU0NDAxNTQ2NzU5XSwgWy0yLjU0NTk2OTQ4MTYwNjY3NTQsIDUxLjQyNDIxNTk4NTc0NTQ4XSwgWy0yLjU1MDM1NDAwMzU3MDkyNzYsIDUxLjQyMjkzOTI3NzUzNjQ0XSwgWy0yLjU1NDAxMDEzMzgxODM0MjUsIDUxLjQyNTk5MDg1ODk4OTIxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fMjhjOGViZTY5NzFhNDE5NDlhNjg2YzkwMzQ4MjM5NjIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNTBiZDUyYjg4NDgxNGI4ZmExN2JhNmYzYmE1OTJlYTYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41MjA0MzEzNDc3MjM4MDMsIDUxLjQ3NjkwNjkyMDc2MzY1XSwgWy0yLjUxNjA0OTY4MTI0NzcxNTgsIDUxLjQ3ODE4MTQzOTUyODE5XSwgWy0yLjUxMjM5NTIxNDQ0MDc5OTUsIDUxLjQ3NTEzMTc5Njg3MjI1XSwgWy0yLjUxMzEyMjIzMDU1ODUzNTUsIDUxLjQ3MDgwNzQxMzMyMTY0XSwgWy0yLjUxNzUwNDAwMDQ5NzI3MzUsIDUxLjQ2OTUzMjYzNDcwMDM4XSwgWy0yLjUyMTE1ODY1MDg2NDk2MiwgNTEuNDcyNTgyNDk5NDg0MDA1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fNTBiZDUyYjg4NDgxNGI4ZmExN2JhNmYzYmE1OTJlYTYuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYTBkYTNiYTQ4MGQ2NGZmYThiMTUxODVlNzAwZDY0YzAgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NzAxMjkzNTQyMDM3NDcsIDUxLjUyODI0Mzk0NzI5MDkyXSwgWy0yLjU2NTc0NzIxMjU5MjI4OSwgNTEuNTI5NTE2ODIwNTc3MzZdLCBbLTIuNTYyMDkzOTcxNTc1Njg1NiwgNTEuNTI2NDY3OTIxNjAxNzhdLCBbLTIuNTYyODIyNjg4OTg1NzgzNywgNTEuNTIyMTQ1OTI2Nzc4MTRdLCBbLTIuNTY3MjA0OTM0ODM3NDE5MywgNTEuNTIwODcyNzkzNTM0MDVdLCBbLTIuNTcwODU4MzU5MDQ4MDgyMiwgNTEuNTIzOTIxOTE1MDY4ODNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9hMGRhM2JhNDgwZDY0ZmZhOGIxNTE4NWU3MDBkNjRjMC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9kYzdkMDQ0NDE1ZDA0NDNjYWVmMzk1MzFhYWMwOWZkOCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjUyNzcyMzI5MzUyNzY5NDUsIDUxLjQ1ODMzMjIxMzM5NzQzXSwgWy0yLjUyMzM0MDc2NjQ0NTg3NDUsIDUxLjQ1OTYwNzQ2ODkzNDJdLCBbLTIuNTE5Njg1NzM3MTQ4OTYzNiwgNTEuNDU2NTU3MjE5MjA0NjldLCBbLTIuNTIwNDEzMDUxMzk3NTMzNCwgNTEuNDUyMjMxNDkxOTE1MzA2XSwgWy0yLjUyNDc5NTY4MTg1Nzc0MSwgNTEuNDUwOTU1OTc2NTAwODY1XSwgWy0yLjUyODQ1MDg5NDcwMDMyNTIsIDUxLjQ1NDAwNjQ0ODI1MDk4Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2RjN2QwNDQ0MTVkMDQ0M2NhZWYzOTUzMWFhYzA5ZmQ4LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzU1OGJkZDdkODcwNzQyMjc5ZjZkMjVlMzUzYzE2YmYwID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTU2OTQ5NzMyMTE2MTc4LCA1MS40NTgwNTYzNzEyNDkyNTZdLCBbLTIuNTUyNTY2MDAyMjQyMjMsIDUxLjQ1OTMzMTgwMTEwMTIzNl0sIFstMi41NDg5MTA4MjU2OTQ5NDYsIDUxLjQ1NjI4MTE1MTU5MDddLCBbLTIuNTQ5NjM5MTk1NjU1NDc5LCA1MS40NTE5NTQ4NTAxNDk4NF0sIFstMi41NTQwMjMwMjkxMzM1ODQsIDUxLjQ1MDY3OTE2MDM1MzMxXSwgWy0yLjU1NzY3ODM4OTA1NjMyLCA1MS40NTM3MzAwMzE5Mzk3M11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzU1OGJkZDdkODcwNzQyMjc5ZjZkMjVlMzUzYzE2YmYwLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzIxNTY2OTdkYmQxZTQ5ODFhZTdlMGI1M2NkYjhlMzY0ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjA4MTEzMjc1NTUzNTU1NCwgNTEuNDc2MDg2NTkwMzA4NjJdLCBbLTIuNjAzNzI4MDA1MjA0MjY1NywgNTEuNDc3MzYxNjMxNTg4MTI0XSwgWy0yLjYwMDA3MzEwMjU4MDA4ODUsIDUxLjQ3NDMxMDc4OTcyMzkxXSwgWy0yLjYwMDgwMzI4NzI2NTM2NjYsIDUxLjQ2OTk4NDY4NDI4Mzk2XSwgWy0yLjYwNTE4ODY2MTc1NDgxMDYsIDUxLjQ2ODcwOTM4Mjk0Njk2XSwgWy0yLjYwODg0Mzc0NzQyODEyMDUsIDUxLjQ3MTc2MDQ0NzEwNDk0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fMjE1NjY5N2RiZDFlNDk4MWFlN2UwYjUzY2RiOGUzNjQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZTYxMDQyODM2ODQwNDQ5ZjkzN2E2MmZjNThhZjZiYzggPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NjI4MzIxNzk5ODUyNywgNTEuNTQ2ODAxMzM2MjMyMzJdLCBbLTIuNTU4NDUwODk5NTkyNjQ0NSwgNTEuNTQ4MDczNDcyODUzN10sIFstMi41NTQ3OTgyMjE1MDY0NDc4LCA1MS41NDUwMjUxODI4NTExNl0sIFstMi41NTU1MjY2NDA2MTMxMTc2LCA1MS41NDA3MDQ1MzM1NTk1MDZdLCBbLTIuNTU5OTA4MDI1MzI5NjY3LCA1MS41Mzk0MzIxMzcwMDIxMTZdLCBbLTIuNTYzNTYwODg2NjI0OTExNiwgNTEuNTQyNDgwNjQ5NjY5OThdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9lNjEwNDI4MzY4NDA0NDlmOTM3YTYyZmM1OGFmNmJjOC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl82ODg1ODNiMGE2OWM0NDFmODNmYmViZDgxM2JiNzQ2ZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU2NDk4ODkwMDU2MzgxNzMsIDUxLjQ1OTgzMTY3MTU1ODkzXSwgWy0yLjU2MDYwNDg5NjIxMTY2OCwgNTEuNDYxMTA3MDgwMDA2MDFdLCBbLTIuNTU2OTQ5NzMyMTE2MTc4LCA1MS40NTgwNTYzNzEyNDkyNTZdLCBbLTIuNTU3Njc4Mzg5MDU2MzIsIDUxLjQ1MzczMDAzMTkzOTczXSwgWy0yLjU2MjA2MjQ5NzA4ODgxNiwgNTEuNDUyNDU0MzYzNTMwMDldLCBbLTIuNTY1NzE3ODQ0NTEwMTM2MywgNTEuNDU1NTA1Mjk0MzkwMDY1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fNjg4NTgzYjBhNjljNDQxZjgzZmJlYmQ4MTNiYjc0NmYuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNWRlNWNkYzg2OWRkNDhjYzg0ODY0ZGVjYzY3YzFjNzggPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NDMwOTg2Njg3ODgwNDk1LCA1MS41MTU1NDUyNDcxNjk0ODRdLCBbLTIuNTM4NzE3MjQ2MTE0NzE1LCA1MS41MTY4MTg0NDUwNDQ1NF0sIFstMi41MzUwNjM3Njk5OTg1MjA2LCA1MS41MTM3Njk1NTk0MzE5ODVdLCBbLTIuNTM1NzkxNTMzMTkzODMzLCA1MS41MDk0NDcyNTM1MTgyNF0sIFstMi41NDAxNzMwNTk3OTk5OTksIDUxLjUwODE3Mzc5NTc0NDA4NV0sIFstMi41NDM4MjY3MTkyODczMzc0LCA1MS41MTEyMjI5MDM3ODAzNjRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl81ZGU1Y2RjODY5ZGQ0OGNjODQ4NjRkZWNjNjdjMWM3OC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl81NGFhZWFjMWUzMmU0MzMzYjUzN2IyYTljZTZkNjQzNCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjYwNTkxMTU0MTYwMDA2MiwgNTEuNDE0OTk1ODk2ODY4MDM1XSwgWy0yLjYwMTUyNDUxNDcyNzE4OTcsIDUxLjQxNjI3MzIxNDU4MDUzNV0sIFstMi41OTc4Njc4ODQ2MzEyMzIsIDUxLjQxMzIyMDcyOTc0NjExXSwgWy0yLjU5ODU5ODA5ODI2NDk2MSwgNTEuNDA4ODkwNzA1MzA3NTFdLCBbLTIuNjAyOTg1MjI4Nzk1MzI4LCA1MS40MDc2MTMxMjc1MjkzNjZdLCBbLTIuNjA2NjQyMDQyMDQzNzcsIDUxLjQxMDY2NTgzNDI1Mjk1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fNTRhYWVhYzFlMzJlNDMzM2I1MzdiMmE5Y2U2ZDY0MzQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNTlhZWI5NThiZmI5NDMyM2I2NDU2NjIwZjliMzY1ZTUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41MjkxNjEyNTEyNzIwNjksIDUxLjQyNDk5NDQzNDk3NjQyNl0sIFstMi41MjQ3Nzc2NTc0NzEzMTEsIDUxLjQyNjI3MDk0NzIyNDgyXSwgWy0yLjUyMTEyMTY3NTM2MjMwNywgNTEuNDIzMjE5NzY1Nzc5OTI2XSwgWy0yLjUyMTg0OTEwMzQ3NzA3MSwgNTEuNDE4ODkxODUwMjc5MDddLCBbLTIuNTI2MjMyODAwNDEzODA3NSwgNTEuNDE3NjE1MDc4MTQyNTZdLCBbLTIuNTI5ODg4OTY2MTA5MTU4LCA1MS40MjA2NjY0ODEzOTI0OTVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl81OWFlYjk1OGJmYjk0MzIzYjY0NTY2MjBmOWIzNjVlNS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9jYjJkMDdkMTlhNDE0ZjI1ODMxN2Q3YWFmYzNlZGNlYiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjYyODU4MTE4ODYwOTA4OSwgNTEuNDUzNjc2NzAwMzk0NjddLCBbLTIuNjI0MTk0NDA3ODU2NDU2LCA1MS40NTQ5NTI2OTYyOTkxXSwgWy0yLjYyMDUzODc3MzE2NTk4NSwgNTEuNDUxOTAwOTY1NDE5NV0sIFstMi42MjEyNjk3MzYyNzUxNTIsIDUxLjQ0NzU3MzAxNjQ0NTc0NV0sIFstMi42MjU2NTY2MjExNTY3MjQ1LCA1MS40NDYyOTY3NjA0MzE5M10sIFstMi42MjkzMTI0Mzg4MDk0ODEzLCA1MS40NDkzNDg3MTM0OTg3MzZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9jYjJkMDdkMTlhNDE0ZjI1ODMxN2Q3YWFmYzNlZGNlYi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl83ZmE4YzZjMTU3ZTg0MDA2YWJiNTE1OGY2Mjk4ZDFmZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU5ODYwMzQ5NDM4NzUxNCwgNTEuNDMzNTg5ODU1NzY0NThdLCBbLTIuNTk0MjE3MzI2NDI0NTU1NCwgNTEuNDM0ODY2NDM1OTY0NDNdLCBbLTIuNTkwNTYxMjU4NzkzMTgxNywgNTEuNDMxODE0NTU3NTc5Ml0sIFstMi41OTEyOTExNzU5NjYxOSwgNTEuNDI3NDg1ODc2OTk0NjQ1XSwgWy0yLjU5NTY3NzQ0NzY3MTU1MTYsIDUxLjQyNjIwOTAzNjc0OTY3XSwgWy0yLjU5OTMzMzY5ODQ3MDc5NiwgNTEuNDI5MjYxMTM3MTMxODhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl83ZmE4YzZjMTU3ZTg0MDA2YWJiNTE1OGY2Mjk4ZDFmZi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9mNDY0ZjVlOWI3YzU0YzFlODZmOTVmZDI4NzU2NTllZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU4MTA4ODgyNjkzNTI0NjMsIDUxLjUzNzM5MDcxNjI5MzU3XSwgWy0yLjU3NjcwNjUxNTcwMjM2MSwgNTEuNTM4NjYzMzA4MDI2NjhdLCBbLTIuNTczMDUzNDg0NzE0MzY1MywgNTEuNTM1NjE0NTEzODA2NDg2XSwgWy0yLjU3Mzc4MjU4MTg1MjM5MDcsIDUxLjUzMTI5MjkwNTIxMDY5XSwgWy0yLjU3ODE2NDk5NzQ4MDM5NTMsIDUxLjUzMDAyMDA1MzQ5NzI1XSwgWy0yLjU4MTgxODIxMTU4NDU1MjcsIDUxLjUzMzA2OTA3MDM1NzUzNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2Y0NjRmNWU5YjdjNTRjMWU4NmY5NWZkMjg3NTY1OWVmLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzQyMWQzNzk3ZGE1MzQ3M2M5NjY0ZWI5NGY0NTY3OTZhID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNDg4Mjg4Mzk2ODk0NjE5NywgNTEuNDY5ODA2OTA4Njk3OTc2XSwgWy0yLjQ4MzkwNzgzMjIxMDgyNDYsIDUxLjQ3MTA4MTUxMzE3NTU0XSwgWy0yLjQ4MDI1MzMxOTU2NzYzOTMsIDUxLjQ2ODAzMjEwNzEzMjldLCBbLTIuNDgwOTc5MTg3ODU5MTU5LCA1MS40NjM3MDc4NzQ1OTE2NTVdLCBbLTIuNDg1MzU5ODU1NzAwODc2LCA1MS40NjI0MzMwMTAzMjkyMV0sIFstMi40ODkwMTQ1NTIxMDI1MDksIDUxLjQ2NTQ4MjYzODM5MDQwNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzQyMWQzNzk3ZGE1MzQ3M2M5NjY0ZWI5NGY0NTY3OTZhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzVmNWQ4NWFkN2RmNDQ5YzQ5MjNkYmVkY2JlYTYxN2E1ID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTA4NzgwMTUwNDA5OTgwMywgNTEuNTIxNDA3NzkxODg2MjddLCBbLTIuNTA0NDAwMzEwMDM3NjA2LCA1MS41MjI2ODA1Nzc3MzIwNV0sIFstMi41MDA3NDcxNjM5NDkzNDM1LCA1MS41MTk2MzIzMTM4NjIzOTVdLCBbLTIuNTAxNDczNjc0NjgwMDI0LCA1MS41MTUzMTEwNDE3NDk4OF0sIFstMi41MDU4NTM2MTg3NjE3MDMzLCA1MS41MTQwMzc5OTYwODQ5OTRdLCBbLTIuNTA5NTA2OTQ4NDEyNzI2NiwgNTEuNTE3MDg2NDgyMzQ5MzA2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fNWY1ZDg1YWQ3ZGY0NDljNDkyM2RiZWRjYmVhNjE3YTUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fODZjNWY3ZGIxMzVkNGRlYmFkYWEyYTQ0NDUyNGFiNDggPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42NjY1OTkyOTQ1NzYxMzQ4LCA1MS40NzU1MzkzNDYyMDg1MV0sIFstMi42NjIyMTE2MzEwMjEzMTEsIDUxLjQ3NjgxNDczNjA2ODY2XSwgWy0yLjY1ODU1NjQ0NzQwNzQ0NzUsIDUxLjQ3Mzc2MzA5NDIwODg2XSwgWy0yLjY1OTI4ODc0NDY1MTU1MDcsIDUxLjQ2OTQzNTg0MDA4MTg2NF0sIFstMi42NjM2NzY1MTI3OTc5OTIsIDUxLjQ2ODE2MDE5MDAzMDI4XSwgWy0yLjY2NzMzMTg3OTExNzk3MzQsIDUxLjQ3MTIxMjA1NDI5NDY3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fODZjNWY3ZGIxMzVkNGRlYmFkYWEyYTQ0NDUyNGFiNDguc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZjlkOTUxNjA0M2UxNDg1MmJlZGI5NDM3NjY1ZjczNTkgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41Mjg0Njc3NDQxODAwNTYzLCA1MS40Nzg2ODIxMjUyNDE4M10sIFstMi41MjQwODU4MDI2MzAzODA3LCA1MS40Nzk5NTY2MjI1NjM4NF0sIFstMi41MjA0MzEzNDc3MjM4MDMsIDUxLjQ3NjkwNjkyMDc2MzY1XSwgWy0yLjUyMTE1ODY1MDg2NDk2MiwgNTEuNDcyNTgyNDk5NDg0MDA1XSwgWy0yLjUyNTU0MDY5NTk1MzQ3MSwgNTEuNDcxMzA3NzQyMjg3MzFdLCBbLTIuNTI5MTk1MzM0MzcxMzIsIDUxLjQ3NDM1NzY2NjI0MjQ4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fZjlkOTUxNjA0M2UxNDg1MmJlZGI5NDM3NjY1ZjczNTkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMmU4MmJjYzFkYWM2NDczODg4YWU4MTRmNDBkNmY3MTUgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42NTkzMDAyMTI3MDU5OTE1LCA1MS40MjAwNDA4NzU4Mzk4MjRdLCBbLTIuNjU0OTExMTY4NjY4NzExNywgNTEuNDIxMzE4MzA0NDM4OTNdLCBbLTIuNjUxMjU0NDM2NTMxMDc4LCA1MS40MTgyNjUyNDA4MzczMV0sIFstMi42NTE5ODY1NjU2MDg0MTYsIDUxLjQxMzkzNDUyNjYwNzU1XSwgWy0yLjY1NjM3NTcxMzc1NzEzMywgNTEuNDEyNjU2ODM3ODIxNjZdLCBbLTIuNjYwMDMyNjI4NzI2MzUzNCwgNTEuNDE1NzEwMTIzNDQ5OF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzJlODJiY2MxZGFjNjQ3Mzg4OGFlODE0ZjQwZDZmNzE1LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzExOWI1Y2I2MjdlMzRhZjJhMDhjZGZiNzBjYmM0MzRlID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjkzNjUwOTY0MzczMDc4LCA1MS40ODgyNDc0NDY3NjY3ODVdLCBbLTIuNjg5MjYyNTg4ODI4MDAyLCA1MS40ODk1MjI1MTE5NTg3XSwgWy0yLjY4NTYwNzY0ODAwNDkzNTYsIDUxLjQ4NjQ3MDg1NTc1NTczXSwgWy0yLjY4NjM0MDkwMDIwODU5NDcsIDUxLjQ4MjE0MzkxMTgxNzgxNV0sIFstMi42OTA3MjkzODA2NTI3OTQ4LCA1MS40ODA4Njg1ODYzNzU1MTRdLCBbLTIuNjk0Mzg0NTA0MDAzNDQ3LCA1MS40ODM5MjA0NjUxMTkwNTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8xMTliNWNiNjI3ZTM0YWYyYTA4Y2RmYjcwY2JjNDM0ZS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9jMTdiMmExYWEyZmE0NjcyYjI4YWZkMjM0NTFkMDYyNCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjQ2ODYxNzg1NTE4NjQxNywgNTEuNTEyNTMxMjA2NjAyMjldLCBbLTIuNDY0MjM5MzkyNzU0MzU0LCA1MS41MTM4MDQxMDAwODg3M10sIFstMi40NjA1ODYxODg4OTQ4MDg0LCA1MS41MTA3NTYxMzA5ODU3NzZdLCBbLTIuNDYxMzExMjYzNjY2OTA5LCA1MS41MDY0MzUwNDYxMzU1ODZdLCBbLTIuNDY1Njg5ODI5NDI3MjY1LCA1MS41MDUxNjE4OTI5MTk2MV0sIFstMi40NjkzNDMyMTcwOTY1NzU3LCA1MS41MDgyMTAwODQyODA5MjVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9jMTdiMmExYWEyZmE0NjcyYjI4YWZkMjM0NTFkMDYyNC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9mY2FjZjQwOGU5NzQ0OTgwYTA2NTkwNzkxMjE1M2VkZCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY0MTc0MjgzMjAyMjY2MTcsIDUxLjQ0OTg0ODI3ODA0Mzg2XSwgWy0yLjYzNzM1NTQwMDczNDA5LCA1MS40NTExMjQ0OTEyNzE5NF0sIFstMi42MzM2OTk1OTY5Njk4OTEzLCA1MS40NDgwNzI0Nzg4NzQ5Ml0sIFstMi42MzQ0MzEwNDE2MTI5MzUsIDUxLjQ0Mzc0NDAzMTA1OTQ1XSwgWy0yLjYzODgxODU3NzEwMzc2NDQsIDUxLjQ0MjQ2NzU1NzY5MTAxXSwgWy0yLjY0MjQ3NDU2Mzc1ODU3OTQsIDUxLjQ0NTUxOTc5MjI3NTg5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fZmNhY2Y0MDhlOTc0NDk4MGEwNjU5MDc5MTIxNTNlZGQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYzAwMmQ5ZjUxZTBhNDZiYThiMDljMWY1ZGFlZDg4ODkgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41MDUxMDY3NDU4NTYxNzYsIDUxLjQ5MzcwMDI2MjI1MDk4XSwgWy0yLjUwMDcyNjIxNTY3NDg4MywgNTEuNDk0OTc0MDY1ODcwNjVdLCBbLTIuNDk3MDcyMjk5Njc5Mjk2LCA1MS40OTE5MjUwODk3NTY5NF0sIFstMi40OTc3OTg3MzAyNDkwNzg1LCA1MS40ODc2MDIwODc4MTM4NTVdLCBbLTIuNTAyMTc5MzYzOTAwODk1LCA1MS40ODYzMjgwMjQzNzY1NF0sIFstMi41MDU4MzM0NjM1MjE3NDYsIDUxLjQ4OTM3NzIyMjY5NzQ5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fYzAwMmQ5ZjUxZTBhNDZiYThiMDljMWY1ZGFlZDg4ODkuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYjYyMDZmNTdhNTM4NDNmZDg4ZDM1NjVlNDhiMmE5MGIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41OTQ5NDEyNzIxMTc2MjIsIDUxLjQwNTgzODA1ODA3NjI0XSwgWy0yLjU5MDU1NDQxNTU0ODA4MywgNTEuNDA3MTE1NjU3MTQyODI1XSwgWy0yLjU4Njg5NzU3NjY3ODgyMywgNTEuNDA0MDYzMDY5NDA3NDddLCBbLTIuNTg3NjI3NDExMTU4MjE2NywgNTEuMzk5NzMyNjYwNzk1NDZdLCBbLTIuNTkyMDE0MzcxMjI5OTk5LCA1MS4zOTg0NTQ4MDE2ODY1MDVdLCBbLTIuNTk1NjcxMzkzMzI5NDczLCA1MS40MDE1MDc2MTEyMjk0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fYjYyMDZmNTdhNTM4NDNmZDg4ZDM1NjVlNDhiMmE5MGIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fMDJjZGNmYTViMTQ5NDQ4NmE4MDJmMWM0MjVlNDFhZjAgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42MjkzMTE2NDE4NTUxNDA1LCA1MS40NzQwMzY5Nzc3MjY2NzZdLCBbLTIuNjI0OTI1NDQ3MDg4MDk4NywgNTEuNDc1MzEyMjE0NzI5MDRdLCBbLTIuNjIxMjcwMzg4OTY5ODIsIDUxLjQ3MjI2MTAzMjEzM10sIFstMi42MjIwMDEzNDI3MDAxNDgsIDUxLjQ2NzkzNDM5MDIxMDI2XSwgWy0yLjYyNjM4NzY0MTc1NjkzMiwgNTEuNDY2NjU4ODkzMTAxNDJdLCBbLTIuNjMwMDQyODgyODAyOTIyMywgNTEuNDY5NzEwMjk4MDE5MzFdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8wMmNkY2ZhNWIxNDk0NDg2YTgwMmYxYzQyNWU0MWFmMC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9hZDRmYWJkNjYzZDY0MTIwOGM3YjEyYzVmYTFjNTRmNCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjU2MjgwMjI3Mzg5NTI5NCwgNTEuNDcyODA5MDM1ODkyNzk0XSwgWy0yLjU1ODQxODc1MTQ2NjQzOCwgNTEuNDc0MDgzOTQ1ODQwNjFdLCBbLTIuNTU0NzYzOTY2NjE2NjUxNSwgNTEuNDcxMDMzNjIyMTgyMl0sIFstMi41NTU0OTI1MjA4ODU2MTY1LCA1MS40NjY3MDgxNjYzODk3MzZdLCBbLTIuNTU5ODc2MTQ3MDc2NDY2LCA1MS40NjU0MzI5OTY0ODczNV0sIFstMi41NjM1MzExMTUyNDU2NjQsIDUxLjQ2ODQ4MzU0MjMyOTU0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fYWQ0ZmFiZDY2M2Q2NDEyMDhjN2IxMmM1ZmExYzU0ZjQuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNjJiOTdkMGZhNDlkNDZhNjlmOTdhMmQ3MDFhMDQ1OGYgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi41NTI1Mzk1NTUwOTUyMTg2LCA1MS40MDk5NTI5MjQxMTA1XSwgWy0yLjU0ODE1NDU1MTc3NzkyNywgNTEuNDExMjMwMTMwOTAzNzc1XSwgWy0yLjU0NDQ5ODAzMDcxMjg2OCwgNTEuNDA4MTc4MjI0NjY0OTY1XSwgWy0yLjU0NTIyNjMyOTUwMjM4MTQsIDUxLjQwMzg0ODg4OTg3ODQ4XSwgWy0yLjU0OTYxMTQzNjAyMzE4NiwgNTEuNDAyNTcxNDIzMTQwNThdLCBbLTIuNTUzMjY4MTQwNTYwMjk5NSwgNTEuNDA1NjIzNTUxMTMxMjhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl82MmI5N2QwZmE0OWQ0NmE2OWY5N2EyZDcwMWEwNDU4Zi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xMGQ4ZmQ1NTkzYzQ0ZmFjOWRiYzU2YjM4NDc5NzA3NSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY4ODUyOTI0MzYxNjczMDMsIDUxLjQ5Mzg0OTAzMjI4NTIyXSwgWy0yLjY4NDE0MTI0NTA0Mjk2NzYsIDUxLjQ5NTEyMzg1ODczNjEyXSwgWy0yLjY4MDQ4NjQ4Njc2OTMwODYsIDUxLjQ5MjA3MjQyNTEwMDNdLCBbLTIuNjgxMjE5NTQ0NTI5MjQ0NCwgNTEuNDg3NzQ1OTQyNDQzOTddLCBbLTIuNjg1NjA3NjQ4MDA0OTM1NiwgNTEuNDg2NDcwODU1NzU1NzNdLCBbLTIuNjg5MjYyNTg4ODI4MDAyLCA1MS40ODk1MjI1MTE5NTg3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fMTBkOGZkNTU5M2M0NGZhYzlkYmM1NmIzODQ3OTcwNzUuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZDAyODE1OWJhOGRhNDQzZjhjYmM2NTRhOGU1MDkwY2UgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42MTU0MjE0OTcxODAyODMsIDUxLjQ1NzUwNDQ3MDgxODY1XSwgWy0yLjYxMTAzNTM2NzM0MDQzNTYsIDUxLjQ1ODc4MDI0OTQ0MzU0XSwgWy0yLjYwNzM3OTkwMjAyMjA0LCA1MS40NTU3Mjg4MDAwNTY5NzRdLCBbLTIuNjA4MTEwMzgzNTE4OTM4LCA1MS40NTE0MDEzNDk4NTY0NV0sIFstMi42MTI0OTY2MTc0MTQ0MDM4LCA1MS40NTAxMjUzMTExNTMxXSwgWy0yLjYxNjE1MjI2NTc2NjY0NiwgNTEuNDUzMTc2OTgyNzI2MjRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9kMDI4MTU5YmE4ZGE0NDNmOGNiYzY1NGE4ZTUwOTBjZS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl83ODllNmMwOTFlYmE0MjA3YjYxOTM3NmJlNzQwMTNiMiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY5NTEzMDU2NjU1NzYyODYsIDUxLjQ1NDg5OTczMTU2ODE4XSwgWy0yLjY5MDc0MTEyMjg1OTQ2NTgsIDUxLjQ1NjE3NjA1NTEzMjU2Nl0sIFstMi42ODcwODUyMjM1NTI2NzYsIDUxLjQ1MzEyMzQ2NDQ3ODM4XSwgWy0yLjY4NzgxODU4NTM4NDYwMDQsIDUxLjQ0ODc5NDMyNzkzMjAyXSwgWy0yLjY5MjIwODEzMzczOTA4OCwgNTEuNDQ3NTE3NzQ0MTA2MjE0XSwgWy0yLjY5NTg2NDIxNTYxNDU3NDUsIDUxLjQ1MDU3MDU1NzA4NTddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl83ODllNmMwOTFlYmE0MjA3YjYxOTM3NmJlNzQwMTNiMi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl82ZWFhN2VkYzZkNjA0ZGJhYjYzNGQzODVlYTNiODc1NyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjQ5NDA3NDg4OTQ4Mzc4NDMsIDUxLjQxMDUxNzI3NTU3MDFdLCBbLTIuNDg5NjkyMjk0Njg0MDMzNCwgNTEuNDExNzk0MTMyODYzMzddLCBbLTIuNDg2MDM2MDczNDQzNDU2NiwgNTEuNDA4NzQzMDI2NjkwMjNdLCBbLTIuNDg2NzYyMjYzMjAwMTk0NywgNTEuNDA0NDE0ODQxNTc5NzE1XSwgWy0yLjQ5MTE0NDk2MDc1MjI3OSwgNTEuNDAzMTM3NzI0NDc1NTldLCBbLTIuNDk0ODAxMzY1ODA0NjU3NSwgNTEuNDA2MTg5MDUyMjkwM11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzZlYWE3ZWRjNmQ2MDRkYmFiNjM0ZDM4NWVhM2I4NzU3LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2YxMWY2ZWU1MmMxZTQ2N2NiNDY0ZmZjNDgzOWQ2MjBlID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjIwNTM4NzczMTY1OTg1LCA1MS40NTE5MDA5NjU0MTk1XSwgWy0yLjYxNjE1MjI2NTc2NjY0NiwgNTEuNDUzMTc2OTgyNzI2MjRdLCBbLTIuNjEyNDk2NjE3NDE0NDAzOCwgNTEuNDUwMTI1MzExMTUzMV0sIFstMi42MTMyMjcyOTM0NTg2NjEsIDUxLjQ0NTc5NzQwMDExMDg5XSwgWy0yLjYxNzYxMzkwNDkxMDc3OSwgNTEuNDQ0NTIxMTIyNzEyNzVdLCBbLTIuNjIxMjY5NzM2Mjc1MTUyLCA1MS40NDc1NzMwMTY0NDU3NDVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9mMTFmNmVlNTJjMWU0NjdjYjQ2NGZmYzQ4MzlkNjIwZS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8xOTA4NmVlMTExN2Y0NDdjOThmMmFhZmU3ZWFiMmI2OSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjYwODg0NjExMTQyMTY1MywgNTEuNDk2NDM4NjAyNzUzODJdLCBbLTIuNjA0NDYxNDI3Mzg4MzQyLCA1MS40OTc3MTI4ODUzMzY1OF0sIFstMi42MDA4MDcxMDExOTgwMTQsIDUxLjQ5NDY2MjU5MjI5MzUzXSwgWy0yLjYwMTUzNzI3NjAzNTc1NzQsIDUxLjQ5MDMzNzc5NDIzNzI1XSwgWy0yLjYwNTkyMjA2NDM2OTc0MjUsIDUxLjQ4OTA2MzI1MTYwMDE4Nl0sIFstMi42MDk1NzY1NzM1NzQ1OTA2LCA1MS40OTIxMTM3NjcwNzEyN11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzE5MDg2ZWUxMTE3ZjQ0N2M5OGYyYWFmZTdlYWIyYjY5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2M3MmE0M2VkMjRiODQyYTBiN2QxZTJjOGNmYjE4ZGIzID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTc0NDc3NTcxMTcyNzAyNCwgNTEuNDI4MjY0MjAzMzkxNThdLCBbLTIuNTcwMDkyMjI1NTMyNjAzNSwgNTEuNDI5NTQwODQ3NjIxNjk1XSwgWy0yLjU2NjQzNjExOTgwMTA4MywgNTEuNDI2NDg5MTQ3Mzg1MTI2XSwgWy0yLjU2NzE2NTE3NjQwMjA1MTMsIDUxLjQyMjE2MDU4MTAwMDk2Nl0sIFstMi41NzE1NTA2MjU1NTYwNzE2LCA1MS40MjA4ODM2NzY3Nzk3N10sIFstMi41NzUyMDY5MTQ2MDQ1MjE2LCA1MS40MjM5MzU1OTg5MzEyOTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9jNzJhNDNlZDI0Yjg0MmEwYjdkMWUyYzhjZmIxOGRiMy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wMGUwNWQ3YWQ1OGM0MWUzYjBjYzEzY2I4YjYyMjA0YyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjUxMzE0MTQ1NTU3NTUzOSwgNTEuNDk1NDc1NTE1Mjg2NjldLCBbLTIuNTA4NzYwNjUwMDk5ODM1NCwgNTEuNDk2NzQ5Mjk3NDI3MTE1XSwgWy0yLjUwNTEwNjc0NTg1NjE3NiwgNTEuNDkzNzAwMjYyMjUwOThdLCBbLTIuNTA1ODMzNDYzNTIxNzQ2LCA1MS40ODkzNzcyMjI2OTc0OV0sIFstMi41MTAyMTQzNzI1NDQxNjEsIDUxLjQ4ODEwMzE4MDcyMTQ2XSwgWy0yLjUxMzg2ODQ2MDM2MzYyNiwgNTEuNDkxMTUyNDM4MTMyMV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzAwZTA1ZDdhZDU4YzQxZTNiMGNjMTNjYjhiNjIyMDRjLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2Q4ODE0YTk5YTllZDQwNTI4ZjI0ZTlhY2Y3MjdkYzFiID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNTA1ODUzNjE4NzYxNzAzMywgNTEuNTE0MDM3OTk2MDg0OTk0XSwgWy0yLjUwMTQ3MzY3NDY4MDAyNCwgNTEuNTE1MzExMDQxNzQ5ODhdLCBbLTIuNDk3ODIwMzMzMDcyNjM3NCwgNTEuNTEyMjYyNjE0NDU4ODhdLCBbLTIuNDk4NTQ2NzUxOTY1NDgsIDUxLjUwNzk0MDkxOTE1OTU2XSwgWy0yLjUwMjkyNjc5OTY3NzczNCwgNTEuNTA2NjY3NjEzNjgwMzg1XSwgWy0yLjUwNjU4MDMyNDg3NTg5NSwgNTEuNTA5NzE2MjYzMzEyNDNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9kODgxNGE5OWE5ZWQ0MDUyOGYyNGU5YWNmNzI3ZGMxYi5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl81YzkzYWIxNjMwNjE0NjAwYTI1OTI2NTc3YWVlMDE4NiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY5OTUzMjk2NjI2NzgxMDcsIDUxLjQyODkyMDI2MjkxMjM2XSwgWy0yLjY5NTE0MjU1OTk2NjQwNjMsIDUxLjQzMDE5NzU4NDc4MzQ4NV0sIFstMi42OTE0ODU5MDAyOTEwNiwgNTEuNDI3MTQ0MjIzODgyODZdLCBbLTIuNjkyMjE5NDY0MzQ0OTcyLCA1MS40MjI4MTMzMTg5NDUxMV0sIFstMi42OTY2MDk5NzUxMzg1NTQ0LCA1MS40MjE1MzU3MzY3OTY5NTVdLCBbLTIuNzAwMjY2ODE3Mzk1MzA5MywgNTEuNDI0NTg5MzE5ODYxMDNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl81YzkzYWIxNjMwNjE0NjAwYTI1OTI2NTc3YWVlMDE4Ni5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl83MTdhYmM5MmI1NDU0YzM3OTljOGE4YjExYTJhZjExMyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjQ5MzM5NTQ5NTY5MzA3NiwgNTEuNDY0MjA3Nzk1NTI5NjhdLCBbLTIuNDg5MDE0NTUyMTAyNTA5LCA1MS40NjU0ODI2MzgzOTA0MDVdLCBbLTIuNDg1MzU5ODU1NzAwODc2LCA1MS40NjI0MzMwMTAzMjkyMV0sIFstMi40ODYwODU5MTkxNjIxNjEsIDUxLjQ1ODEwODMxNzQxMjg4XSwgWy0yLjQ5MDQ2Njk2NTkwNzk4MzQsIDUxLjQ1NjgzMzIxNDc1NDM1XSwgWy0yLjQ5NDEyMTg0NjA0NjYxNiwgNTEuNDU5ODgzMDY0ODA3NDY0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fNzE3YWJjOTJiNTQ1NGMzNzk5YzhhOGIxMWEyYWYxMTMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fOTYyM2Y3Y2RiODJhNDdkNDgxY2M1NTk2ODc2OTg3N2EgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42MzM2OTM1MDQ0OTE4ODU3LCA1MS41MjIxMTM5NzcyMjk0NDVdLCBbLTIuNjI5MzA4NTg3NTk3MTU0LCA1MS41MjMzODc0MzY0OTYwNDRdLCBbLTIuNjI1NjU0ODgwODE2MDI3LCA1MS41MjAzMzc1MTU4MjA0XSwgWy0yLjYyNjM4NTkwODEwODc1MDQsIDUxLjUxNjAxMzkxMzIzMTg0XSwgWy0yLjYzMDc3MDkyOTY5MzA4NiwgNTEuNTE0NzQwMTkzODYwNV0sIFstMi42MzQ0MjQ4MTkzMDQzNTQyLCA1MS41MTc3OTAzMzcxODAwM11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzk2MjNmN2NkYjgyYTQ3ZDQ4MWNjNTU5Njg3Njk4NzdhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2NhMmVkNDgyNGUwZTQ1YmY4ZGJmNDM2ZTlmYTE2OWJjID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjE5MDczOTI0NTU3MTc3NywgNTEuNDExMTYzNTA4Nzk3MDc0XSwgWy0yLjYxNDY4NjI0NjU1NjkzOSwgNTEuNDEyNDQxMDQzOTgxMjFdLCBbLTIuNjExMDI5NDQ2Mzg0MzgxLCA1MS40MDkzODgyNzc3Njg5NV0sIFstMi42MTE3NjAxNDExNDA0MDU0LCA1MS40MDUwNTc3NTQ0ODAzNV0sIFstMi42MTYxNDc5MjI4NzEzMzQyLCA1MS40MDM3Nzk5NTkxOTk2OV0sIFstMi42MTk4MDQ5MDYxMjQ4NTU0LCA1MS40MDY4MzI5NDczMDE2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fY2EyZWQ0ODI0ZTBlNDViZjhkYmY0MzZlOWZhMTY5YmMuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fODgwYWZmM2IzMzU3NDExNmI2MjAwOThlOTA4YjU1ZmEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi40ODY4NTk4OTM5ODYzMjQsIDUxLjUwMzExNzEyMzg5NDY5XSwgWy0yLjQ4MjQ4MDM5NzMwNjM4OCwgNTEuNTA0MzkwNDcyMzc1NTU1XSwgWy0yLjQ3ODgyNjgzNzE0OTA1MiwgNTEuNTAxMzQxOTk5NzY3MTFdLCBbLTIuNDc5NTUyNTg5OTYzMzg5LCA1MS40OTcwMTk5NTY0NDI1M10sIFstMi40ODM5MzIxOTAwNDI3NzYsIDUxLjQ5NTc0NjM0ODE4ODA2XSwgWy0yLjQ4NzU4NTkzMzkxNzcwNiwgNTEuNDk4Nzk1MDQzMDI5MzRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl84ODBhZmYzYjMzNTc0MTE2YjYyMDA5OGU5MDhiNTVmYS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9mZjY3YmQwZWZmNWM0Zjk3YTE5YTlkOTFkMjhlNTQ0ZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY2NzMyMzk1Njg4OTYzMDgsIDUxLjQ5NTg5Njc1MTc4MDY5XSwgWy0yLjY2MjkzNjg3OTk1MzExODYsIDUxLjQ5NzE3MTM4MjU1MTk0XSwgWy0yLjY1OTI4MjI3NDA2NTczMTYsIDUxLjQ5NDEyMDI4OTc4MDMxXSwgWy0yLjY2MDAxNDU2MjQ1MjY4ODMsIDUxLjQ4OTc5NDM0MzY5NjA0XSwgWy0yLjY2NDQwMTc0NDE0MTUyMzMsIDUxLjQ4ODUxOTQ1MjczNjUyNl0sIFstMi42NjgwNTY1MzI3MDAzMjI1LCA1MS40OTE1NzA3NjgwNDcxM11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2ZmNjdiZDBlZmY1YzRmOTdhMTlhOWQ5MWQyOGU1NDRmLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uXzM0MTAzNDI4MjUxNTRlZWQ5MDI0YzIwZDQxYzczN2RhID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjI0MTkyOTYxNDQwODc3LCA1MS40MDU1NTUxNzMzMDg0N10sIFstMi42MTk4MDQ5MDYxMjQ4NTU0LCA1MS40MDY4MzI5NDczMDE2XSwgWy0yLjYxNjE0NzkyMjg3MTMzNDIsIDUxLjQwMzc3OTk1OTE5OTY5XSwgWy0yLjYxNjg3ODgxMTg4MzkzLCA1MS4zOTk0NDg5NzUyMzkzOV0sIFstMi42MjEyNjY5NzA5Mjc2NTk1LCA1MS4zOTgxNzA5NDExMzY5MjVdLCBbLTIuNjI0OTI0MTM3MjQwMzg4LCA1MS40MDEyMjQxNTExMDE1NjZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8zNDEwMzQyODI1MTU0ZWVkOTAyNGMyMGQ0MWM3MzdkYS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8wMGFkYzEwNjBjMGQ0YWI4YThlMTdjNjNiOTA4MjZkOSA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY4MjcxNTE0OTkyOTc0NCwgNTEuNDA0OTg5MTgxOTc5NTZdLCBbLTIuNjc4MzI0NzAyNzY4NDQyLCA1MS40MDYyNjczMDU5NjkwN10sIFstMi42NzQ2Njc0MzY0ODk3MTgsIDUxLjQwMzIxMzUxNjgxOTM1Nl0sIFstMi42NzU0MDA0MzQ2NjU1MTQsIDUxLjM5ODg4MTM4MTcwNDQ0XSwgWy0yLjY3OTc5MDk4NjAwNTMyMDYsIDUxLjM5NzYwMjk5NzQ3MTYxXSwgWy0yLjY4MzQ0ODQzNTAwMDA5MTMsIDUxLjQwMDY1NzAwODU5NDUxNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uXzAwYWRjMTA2MGMwZDRhYjhhOGUxN2M2M2I5MDgyNmQ5LnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2ZmZmU1YjA4ZWRjMjQ1MzliODdmZGU2MGNmMmRlM2RmID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNzAyNDU1NjY2NzA2Nzk4NywgNTEuNDM2MzA0MjAzMjY3NTVdLCBbLTIuNjk4MDY1MzY0OTc2NzE5MiwgNTEuNDM3NTgxMjY0ODU2NDldLCBbLTIuNjk0NDA4OTAyODc4NDg5NCwgNTEuNDM0NTI4MDY2NzI0NTRdLCBbLTIuNjk1MTQyNTU5OTY2NDA2MywgNTEuNDMwMTk3NTg0NzgzNDg1XSwgWy0yLjY5OTUzMjk2NjI2NzgxMDcsIDUxLjQyODkyMDI2MjkxMjM2XSwgWy0yLjcwMzE4OTYxMDkxOTIyMDYsIDUxLjQzMTk3MzY4MzI2MTk2NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2ZmZmU1YjA4ZWRjMjQ1MzliODdmZGU2MGNmMmRlM2RmLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2EyODc1ZWVmMDgzYjQwNGQ4OTgzM2U3OTkzYWUyMGJjID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuNjk4MDUyNzA4NTY3OTQzNSwgNTEuNDYyMjgxMTMyNzI4MzldLCBbLTIuNjkzNjYzMzY5NjA1MTczNSwgNTEuNDYzNTU3MTk2MDI2MzE1XSwgWy0yLjY5MDAwNzY2ODAxNjUzNDYsIDUxLjQ2MDUwNDc2ODQxOTMyXSwgWy0yLjY5MDc0MTEyMjg1OTQ2NTgsIDUxLjQ1NjE3NjA1NTEzMjU2Nl0sIFstMi42OTUxMzA1NjY1NTc2Mjg2LCA1MS40NTQ4OTk3MzE1NjgxOF0sIFstMi42OTg3ODY0NTA2ODY3MDk0LCA1MS40NTc5NTIzODE1NTQ1MzRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl9hMjg3NWVlZjA4M2I0MDRkODk4MzNlNzk5M2FlMjBiYy5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl85M2Y3NWZhMzU3NGM0ZWQxODZlODRjZTdjMmYwODc4NiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY2OTU0NDQ1NzY3ODYxNTYsIDUxLjQwODgyMzMzNjMxNDM1XSwgWy0yLjY2NTE1NDY1OTgzNDI3OSwgNTEuNDEwMTAxMjQyNjc5OThdLCBbLTIuNjYxNDk3NTYyMDU1MzA2NSwgNTEuNDA3MDQ3NzM1MDUyMjFdLCBbLTIuNjYyMjMwMDc5MzQyMDI3MywgNTEuNDAyNzE2MDk5MDgzNTVdLCBbLTIuNjY2NjE5OTgxMjkxNzcxNywgNTEuNDAxNDM3OTMyNTA1NDk1XSwgWy0yLjY3MDI3NzI2MTg1ODY1NSwgNTEuNDA0NDkxNjYyMTA1OTldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl85M2Y3NWZhMzU3NGM0ZWQxODZlODRjZTdjMmYwODc4Ni5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl8zMmM4NTBlMjZiZjY0MmU0ODU3Y2UyMGExMWRmYmVmMCA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjcwNjgxNzM4ODU2NzAwMDQsIDUxLjQ4NDQyMTgxNjY0NzY5Nl0sIFstMi43MDI0MjgzNjQyODQ2MTQ3LCA1MS40ODU2OTcwOTkxMTYxOV0sIFstMi42OTg3NzMyNTY0NDIyNDk3LCA1MS40ODI2NDUxNjExNjA3OV0sIFstMi42OTk1MDY5OTA0MzU5NDIsIDUxLjQ3ODMxNzcxODE5MzA3XSwgWy0yLjcwMzg5NjExOTY5MDgwNDIsIDUxLjQ3NzA0MjE3NTQ0MzE0XSwgWy0yLjcwNzU1MTQwOTk4ODcyMTcsIDUxLjQ4MDA5NDMzNTkzOTldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAic3R5bGUiOiB7fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwXzg2ZjI1YjU1MjExNjRlMTA4M2E1MzU1MWUxNjg1OWM3KTsKICAgICAgICBnZW9fanNvbl8zMmM4NTBlMjZiZjY0MmU0ODU3Y2UyMGExMWRmYmVmMC5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgIHZhciBnZW9fanNvbl9kZmQ5YTFiMDQxOTE0NjRjYTMzMTM5NDU0MThlNTQ2YiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjY3MDI0NTg3OTA2NzQ1NzUsIDUxLjUwMzI3MzQ2Mzc3OTAyNF0sIFstMi42NjU4NTg5MDY5NjIyMDgsIDUxLjUwNDU0NzgzNDM1NzEwNV0sIFstMi42NjIyMDQ0OTg3MjE5ODMsIDUxLjUwMTQ5NjkwNTA0MTE3XSwgWy0yLjY2MjkzNjg3OTk1MzExODYsIDUxLjQ5NzE3MTM4MjU1MTk0XSwgWy0yLjY2NzMyMzk1Njg4OTYzMDgsIDUxLjQ5NTg5Njc1MTc4MDY5XSwgWy0yLjY3MDk3ODU0Nzc3Mjk4NzMsIDUxLjQ5ODk0NzkwMzY4OTQ0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgInN0eWxlIjoge319LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF84NmYyNWI1NTIxMTY0ZTEwODNhNTM1NTFlMTY4NTljNyk7CiAgICAgICAgZ2VvX2pzb25fZGZkOWExYjA0MTkxNDY0Y2EzMzEzOTQ1NDE4ZTU0NmIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fZGU2NjZmMzAzOWFiNDkyZWI4OWI2N2FkODU1MTczOGEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi42NDYxMjI1MTA4MjkzMDYsIDUxLjQ5Nzk0NDAyOTQ3NDg1XSwgWy0yLjY0MTczNjM1NjUwODgzNTYsIDUxLjQ5OTIxODQ2NDYxNzldLCBbLTIuNjM4MDgxOTAzOTM3MjAxLCA1MS40OTYxNjc3MTI2NDIyMl0sIFstMi42Mzg4MTM0MjI5MDIwODYsIDUxLjQ5MTg0MjMwMzAxMDE5NV0sIFstMi42NDMxOTk2ODE4MjUyNjcsIDUxLjQ5MDU2NzYwNzcyNzg3Nl0sIFstMi42NDY4NTQzMTcxOTAxMDUsIDUxLjQ5MzYxODU4MjIxNDM5NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJzdHlsZSI6IHt9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfODZmMjViNTUyMTE2NGUxMDgzYTUzNTUxZTE2ODU5YzcpOwogICAgICAgIGdlb19qc29uX2RlNjY2ZjMwMzlhYjQ5MmViODliNjdhZDg1NTE3MzhhLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICA
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment