Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save prafullkotecha/434adf172d6fc761665a5c2597953910 to your computer and use it in GitHub Desktop.
Save prafullkotecha/434adf172d6fc761665a5c2597953910 to your computer and use it in GitHub Desktop.
Created on Cognitive Class Labs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"<a href=\"https://cognitiveclass.ai\"><img src = \"https://ibm.box.com/shared/static/9gegpsmnsoo25ikkbl4qzlvlyjbgxs5x.png\" width = 400> </a>\n",
"\n",
"<h1 align=center><font size = 5>Generating Maps with Python</font></h1>"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"## Introduction\n",
"\n",
"In this lab, we will learn how to create maps for different objectives. To do that, we will part ways with Matplotlib and work with another Python visualization library, namely **Folium**. What is nice about **Folium** is that it was developed for the sole purpose of visualizing geospatial data. While other libraries are available to visualize geospatial data, such as **plotly**, they might have a cap on how many API calls you can make within a defined time frame. **Folium**, on the other hand, is completely free."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"## Table of Contents\n",
"\n",
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
"\n",
"1. [Exploring Datasets with *p*andas](#0)<br>\n",
"2. [Downloading and Prepping Data](#2)<br>\n",
"3. [Introduction to Folium](#4) <br>\n",
"4. [Map with Markers](#6) <br>\n",
"5. [Choropleth Maps](#8) <br>\n",
"</div>\n",
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"# Exploring Datasets with *pandas* and Matplotlib<a id=\"0\"></a>\n",
"\n",
"Toolkits: This lab heavily relies on [*pandas*](http://pandas.pydata.org/) and [**Numpy**](http://www.numpy.org/) for data wrangling, analysis, and visualization. The primary plotting library we will explore in this lab is [**Folium**](https://github.com/python-visualization/folium/).\n",
"\n",
"Datasets: \n",
"\n",
"1. San Francisco Police Department Incidents for the year 2016 - [Police Department Incidents](https://data.sfgov.org/Public-Safety/Police-Department-Incidents-Previous-Year-2016-/ritf-b9ki) from San Francisco public data portal. Incidents derived from San Francisco Police Department (SFPD) Crime Incident Reporting system. Updated daily, showing data for the entire year of 2016. Address and location has been anonymized by moving to mid-block or to an intersection. \n",
"\n",
"2. Immigration to Canada from 1980 to 2013 - [International migration flows to and from selected countries - The 2015 revision](http://www.un.org/en/development/desa/population/migration/data/empirical2/migrationflows.shtml) from United Nation's website. The dataset contains annual data on the flows of international migrants as recorded by the countries of destination. The data presents both inflows and outflows according to the place of birth, citizenship or place of previous / next residence both for foreigners and nationals. For this lesson, we will focus on the Canadian Immigration data"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"# Downloading and Prepping Data <a id=\"2\"></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Import Primary Modules:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"button": false,
"collapsed": true,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"import numpy as np # useful for many scientific computing in Python\n",
"import pandas as pd # primary data structure library"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"# Introduction to Folium <a id=\"4\"></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Folium is a powerful Python library that helps you create several types of Leaflet maps. The fact that the Folium results are interactive makes this library very useful for dashboard building.\n",
"\n",
"From the official Folium documentation page:\n",
"\n",
"> Folium builds on the data wrangling strengths of the Python ecosystem and the mapping strengths of the Leaflet.js library. Manipulate your data in Python, then visualize it in on a Leaflet map via Folium.\n",
"\n",
"> Folium makes it easy to visualize data that's been manipulated in Python on an interactive Leaflet map. It enables both the binding of data to a map for choropleth visualizations as well as passing Vincent/Vega visualizations as markers on the map.\n",
"\n",
"> The library has a number of built-in tilesets from OpenStreetMap, Mapbox, and Stamen, and supports custom tilesets with Mapbox or Cloudmade API keys. Folium supports both GeoJSON and TopoJSON overlays, as well as the binding of data to those overlays to create choropleth maps with color-brewer color schemes."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"#### Let's install **Folium**"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"**Folium** is not available by default. So, we first need to install it before we are able to import it."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting package metadata: done\n",
"Solving environment: done\n",
"\n",
"# All requested packages already installed.\n",
"\n",
"Folium installed and imported!\n"
]
}
],
"source": [
"!conda install -c conda-forge folium=0.5.0 --yes\n",
"import folium\n",
"\n",
"print('Folium installed and imported!')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Generating the world map is straigtforward in **Folium**. You simply create a **Folium** *Map* object and then you display it. What is attactive about **Folium** maps is that they are interactive, so you can zoom into any region of interest despite the initial zoom level. "
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": true
},
"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+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfMjE5YzcwYjllMGMwNDZkYjgwOWQ2YTdkMWQ2ZTA5YjkgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzIxOWM3MGI5ZTBjMDQ2ZGI4MDlkNmE3ZDFkNmUwOWI5IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF8yMTljNzBiOWUwYzA0NmRiODA5ZDZhN2QxZDZlMDliOSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF8yMTljNzBiOWUwYzA0NmRiODA5ZDZhN2QxZDZlMDliOScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMCwwXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvb206IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZENvcHlKdW1wOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyXzk4MmYzMzA1MzU0MjQ0NjI5MDY3YjNmMDM3NjcxMDdkID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAnaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLAogICAgICAgICAgICAgICAgewogICJhdHRyaWJ1dGlvbiI6IG51bGwsCiAgImRldGVjdFJldGluYSI6IGZhbHNlLAogICJtYXhab29tIjogMTgsCiAgIm1pblpvb20iOiAxLAogICJub1dyYXAiOiBmYWxzZSwKICAic3ViZG9tYWlucyI6ICJhYmMiCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzIxOWM3MGI5ZTBjMDQ2ZGI4MDlkNmE3ZDFkNmUwOWI5KTsKICAgICAgICAKPC9zY3JpcHQ+\" 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 0x7f0e364fb4e0>"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# define the world map\n",
"world_map = folium.Map()\n",
"\n",
"# display world map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Go ahead. Try zooming in and out of the rendered map above."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"You can customize this default definition of the world map by specifying the centre of your map and the intial zoom level. \n",
"\n",
"All locations on a map are defined by their respective *Latitude* and *Longitude* values. So you can create a map and pass in a center of *Latitude* and *Longitude* values of **[0, 0]**. \n",
"\n",
"For a defined center, you can also define the intial zoom level into that location when the map is rendered. **The higher the zoom level the more the map is zoomed into the center**.\n",
"\n",
"Let's create a map centered around Canada and play with the zoom level to see how it affects the rendered map."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": false
},
"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+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfZDk5NjhjOGY3ZjkzNDI2NTk2MjE0NzljODJmMDc4N2EgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2Q5OTY4YzhmN2Y5MzQyNjU5NjIxNDc5YzgyZjA3ODdhIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9kOTk2OGM4ZjdmOTM0MjY1OTYyMTQ3OWM4MmYwNzg3YSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9kOTk2OGM4ZjdmOTM0MjY1OTYyMTQ3OWM4MmYwNzg3YScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTYuMTMsLTEwNi4zNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl9lOTczNzEwOTFkZjI0MGY0YjhlNDQ4OTFlYzMwMmY5YSA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9kOTk2OGM4ZjdmOTM0MjY1OTYyMTQ3OWM4MmYwNzg3YSk7CiAgICAgICAgCjwvc2NyaXB0Pg==\" 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 0x7f0e34fd4a20>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# define the world map centered around Canada with a low zoom level\n",
"world_map = folium.Map(location=[56.130, -106.35], zoom_start=4)\n",
"\n",
"# display world map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's create the map again with a higher zoom level"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": false
},
"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+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfNGUzYjI0MmU1MmZiNDU2MWI0N2ZjMjY0MzNkNmY4NzkgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzRlM2IyNDJlNTJmYjQ1NjFiNDdmYzI2NDMzZDZmODc5IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF80ZTNiMjQyZTUyZmI0NTYxYjQ3ZmMyNjQzM2Q2Zjg3OSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF80ZTNiMjQyZTUyZmI0NTYxYjQ3ZmMyNjQzM2Q2Zjg3OScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTYuMTMsLTEwNi4zNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl8yMWVmZDBlMTZiODY0Y2M1YjVkYTJlNTc3Mzg4NGMzNiA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80ZTNiMjQyZTUyZmI0NTYxYjQ3ZmMyNjQzM2Q2Zjg3OSk7CiAgICAgICAgCjwvc2NyaXB0Pg==\" 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 0x7f0e35020438>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# define the world map centered around Canada with a higher zoom level\n",
"world_map = folium.Map(location=[56.130, -106.35], zoom_start=8)\n",
"\n",
"# display world map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"As you can see, the higher the zoom level the more the map is zoomed into the given center."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"**Question**: Create a map of Mexico with a zoom level of 4."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"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+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfYjZmZmU4YTIwOGIzNGVlOGE4OGE4MTVjNjkyOGMxYjAgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2I2ZmZlOGEyMDhiMzRlZThhODhhODE1YzY5MjhjMWIwIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9iNmZmZThhMjA4YjM0ZWU4YTg4YTgxNWM2OTI4YzFiMCA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9iNmZmZThhMjA4YjM0ZWU4YTg4YTgxNWM2OTI4YzFiMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMjMuNjM0NSwtMTAyLjU1MjhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfNmZjNjkxMTVkMWYzNDBlNjk5NmExNThjYTA2MzVhYjQgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjZmZmU4YTIwOGIzNGVlOGE4OGE4MTVjNjkyOGMxYjApOwogICAgICAgIAo8L3NjcmlwdD4=\" 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 0x7f0e350379b0>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"### type your answer here\n",
"mexico_latitude = 23.6345 \n",
"mexico_longitude = -102.5528\n",
"\n",
"mexico_map = folium.Map(location=[mexico_latitude, mexico_longitude], zoom_start=4)\n",
"mexico_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Double-click __here__ for the solution.\n",
"<!-- The correct answer is:\n",
"\\\\ # define Mexico's geolocation coordinates\n",
"mexico_latitude = 23.6345 \n",
"mexico_longitude = -102.5528\n",
"-->\n",
"\n",
"<!--\n",
"\\\\ # define the world map centered around Canada with a higher zoom level\n",
"mexico_map = folium.Map(location=[mexico_latitude, mexico_longitude], zoom_start=4)\n",
"-->\n",
"\n",
"<!--\n",
"\\\\ # display world map\n",
"mexico_map\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Another cool feature of **Folium** is that you can generate different map styles."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"### A. Stamen Toner Maps\n",
"\n",
"These are high-contrast B+W (black and white) maps. They are perfect for data mashups and exploring river meanders and coastal zones. "
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's create a Stamen Toner map of canada with a zoom level of 4."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": false
},
"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+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfMDFmNTljOTg3NDcxNGI3MjhhY2UzNDM0ZmY3MmFiYzQgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzAxZjU5Yzk4NzQ3MTRiNzI4YWNlMzQzNGZmNzJhYmM0IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF8wMWY1OWM5ODc0NzE0YjcyOGFjZTM0MzRmZjcyYWJjNCA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF8wMWY1OWM5ODc0NzE0YjcyOGFjZTM0MzRmZjcyYWJjNCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTYuMTMsLTEwNi4zNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl81NWNkOGQ2YTAyMWQ0NDhhYmUwMDRiYThhZjc4NzE0ZCA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8vc3RhbWVuLXRpbGVzLXtzfS5hLnNzbC5mYXN0bHkubmV0L3RvbmVyL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMDFmNTljOTg3NDcxNGI3MjhhY2UzNDM0ZmY3MmFiYzQpOwogICAgICAgIAo8L3NjcmlwdD4=\" 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 0x7f0e35037940>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create a Stamen Toner map of the world centered around Canada\n",
"world_map = folium.Map(location=[56.130, -106.35], zoom_start=4, tiles='Stamen Toner')\n",
"\n",
"# display map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Feel free to zoom in and out to see how this style compares to the default one."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"### B. Stamen Terrain Maps\n",
"\n",
"These are maps that feature hill shading and natural vegetation colors. They showcase advanced labeling and linework generalization of dual-carriageway roads."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's create a Stamen Terrain map of Canada with zoom level 4."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": false
},
"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+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfNGQyNWE5MjMwNjJjNGU4OTgyNDFlMjJiZWFjOTk4MzIgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzRkMjVhOTIzMDYyYzRlODk4MjQxZTIyYmVhYzk5ODMyIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF80ZDI1YTkyMzA2MmM0ZTg5ODI0MWUyMmJlYWM5OTgzMiA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF80ZDI1YTkyMzA2MmM0ZTg5ODI0MWUyMmJlYWM5OTgzMicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTYuMTMsLTEwNi4zNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl80NzM5NTlkYjBjOTk0YTZiYmJmZThmYTE5MGIxZTRmNyA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8vc3RhbWVuLXRpbGVzLXtzfS5hLnNzbC5mYXN0bHkubmV0L3RlcnJhaW4ve3p9L3t4fS97eX0uanBnJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80ZDI1YTkyMzA2MmM0ZTg5ODI0MWUyMmJlYWM5OTgzMik7CiAgICAgICAgCjwvc2NyaXB0Pg==\" 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 0x7f0e34fbdcc0>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create a Stamen Toner map of the world centered around Canada\n",
"world_map = folium.Map(location=[56.130, -106.35], zoom_start=4, tiles='Stamen Terrain')\n",
"\n",
"# display map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Feel free to zoom in and out to see how this style compares to Stamen Toner and the default style."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"### C. Mapbox Bright Maps\n",
"\n",
"These are maps that quite similar to the default style, except that the borders are not visible with a low zoom level. Furthermore, unlike the default style where country names are displayed in each country's native language, *Mapbox Bright* style displays all country names in English."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's create a world map with this style."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"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+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfMWNkYWJmYjNmYzMyNDRlNWJhYjRiMjcwNDQ3OTk1MDUgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzFjZGFiZmIzZmMzMjQ0ZTViYWI0YjI3MDQ0Nzk5NTA1IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF8xY2RhYmZiM2ZjMzI0NGU1YmFiNGIyNzA0NDc5OTUwNSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF8xY2RhYmZiM2ZjMzI0NGU1YmFiNGIyNzA0NDc5OTUwNScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMCwwXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvb206IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZENvcHlKdW1wOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyXzY3NTYzOGZjNDJjYTQ4ODRiNjhiYmFjN2IxYzM1Mjk3ID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAnaHR0cHM6Ly97c30udGlsZXMubWFwYm94LmNvbS92My9tYXBib3gud29ybGQtYnJpZ2h0L3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMWNkYWJmYjNmYzMyNDRlNWJhYjRiMjcwNDQ3OTk1MDUpOwogICAgICAgIAo8L3NjcmlwdD4=\" 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 0x7f0e585af668>"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create a world map with a Mapbox Bright style.\n",
"world_map = folium.Map(tiles='Mapbox Bright')\n",
"\n",
"# display the map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Zoom in and notice how the borders start showing as you zoom in, and the displayed country names are in English."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"**Question**: Create a map of Mexico to visualize its hill shading and natural vegetation. Use a zoom level of 6."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"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+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfNzFkYWY3MWY0NjM3NDhiYjlmMmNmZWMyNjQxZTQ0ODIgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzcxZGFmNzFmNDYzNzQ4YmI5ZjJjZmVjMjY0MWU0NDgyIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF83MWRhZjcxZjQ2Mzc0OGJiOWYyY2ZlYzI2NDFlNDQ4MiA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF83MWRhZjcxZjQ2Mzc0OGJiOWYyY2ZlYzI2NDFlNDQ4MicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMjMuNjM0NSwtMTAyLjU1MjhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfYWY3NGFkZDY1ZTBmNGYxMjg1MjE4NDA4OGY4Y2VmMmYgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3N0YW1lbi10aWxlcy17c30uYS5zc2wuZmFzdGx5Lm5ldC90ZXJyYWluL3t6fS97eH0ve3l9LmpwZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNzFkYWY3MWY0NjM3NDhiYjlmMmNmZWMyNjQxZTQ0ODIpOwogICAgICAgIAo8L3NjcmlwdD4=\" 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 0x7f0e34fdbf28>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"### type your answer here\n",
"mexico_map = folium.Map(location=[mexico_latitude, mexico_longitude], zoom_start=6, tiles='Stamen Terrain')\n",
"mexico_map\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Double-click __here__ for the solution.\n",
"<!-- The correct answer is:\n",
"\\\\ # define Mexico's geolocation coordinates\n",
"mexico_latitude = 23.6345 \n",
"mexico_longitude = -102.5528\n",
"-->\n",
"\n",
"<!--\n",
"\\\\ # define the world map centered around Canada with a higher zoom level\n",
"mexico_map = folium.Map(location=[mexico_latitude, mexico_longitude], zoom_start=6, tiles='Stamen Terrain')\n",
"-->\n",
"\n",
"<!--\n",
"\\\\ # display world map\n",
"mexico_map\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"# Maps with Markers <a id=\"6\"></a>\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's download and import the data on police department incidents using *pandas* `read_csv()` method."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Download the dataset and read it into a *pandas* dataframe:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dataset downloaded and read into a pandas dataframe!\n"
]
}
],
"source": [
"df_incidents = pd.read_csv('https://ibm.box.com/shared/static/nmcltjmocdi8sd5tk93uembzdec8zyaq.csv')\n",
"\n",
"print('Dataset downloaded and read into a pandas dataframe!')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's take a look at the first five items in our dataset."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>IncidntNum</th>\n",
" <th>Category</th>\n",
" <th>Descript</th>\n",
" <th>DayOfWeek</th>\n",
" <th>Date</th>\n",
" <th>Time</th>\n",
" <th>PdDistrict</th>\n",
" <th>Resolution</th>\n",
" <th>Address</th>\n",
" <th>X</th>\n",
" <th>Y</th>\n",
" <th>Location</th>\n",
" <th>PdId</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>120058272</td>\n",
" <td>WEAPON LAWS</td>\n",
" <td>POSS OF PROHIBITED WEAPON</td>\n",
" <td>Friday</td>\n",
" <td>01/29/2016 12:00:00 AM</td>\n",
" <td>11:00</td>\n",
" <td>SOUTHERN</td>\n",
" <td>ARREST, BOOKED</td>\n",
" <td>800 Block of BRYANT ST</td>\n",
" <td>-122.403405</td>\n",
" <td>37.775421</td>\n",
" <td>(37.775420706711, -122.403404791479)</td>\n",
" <td>12005827212120</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>120058272</td>\n",
" <td>WEAPON LAWS</td>\n",
" <td>FIREARM, LOADED, IN VEHICLE, POSSESSION OR USE</td>\n",
" <td>Friday</td>\n",
" <td>01/29/2016 12:00:00 AM</td>\n",
" <td>11:00</td>\n",
" <td>SOUTHERN</td>\n",
" <td>ARREST, BOOKED</td>\n",
" <td>800 Block of BRYANT ST</td>\n",
" <td>-122.403405</td>\n",
" <td>37.775421</td>\n",
" <td>(37.775420706711, -122.403404791479)</td>\n",
" <td>12005827212168</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>141059263</td>\n",
" <td>WARRANTS</td>\n",
" <td>WARRANT ARREST</td>\n",
" <td>Monday</td>\n",
" <td>04/25/2016 12:00:00 AM</td>\n",
" <td>14:59</td>\n",
" <td>BAYVIEW</td>\n",
" <td>ARREST, BOOKED</td>\n",
" <td>KEITH ST / SHAFTER AV</td>\n",
" <td>-122.388856</td>\n",
" <td>37.729981</td>\n",
" <td>(37.7299809672996, -122.388856204292)</td>\n",
" <td>14105926363010</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>160013662</td>\n",
" <td>NON-CRIMINAL</td>\n",
" <td>LOST PROPERTY</td>\n",
" <td>Tuesday</td>\n",
" <td>01/05/2016 12:00:00 AM</td>\n",
" <td>23:50</td>\n",
" <td>TENDERLOIN</td>\n",
" <td>NONE</td>\n",
" <td>JONES ST / OFARRELL ST</td>\n",
" <td>-122.412971</td>\n",
" <td>37.785788</td>\n",
" <td>(37.7857883766888, -122.412970537591)</td>\n",
" <td>16001366271000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>160002740</td>\n",
" <td>NON-CRIMINAL</td>\n",
" <td>LOST PROPERTY</td>\n",
" <td>Friday</td>\n",
" <td>01/01/2016 12:00:00 AM</td>\n",
" <td>00:30</td>\n",
" <td>MISSION</td>\n",
" <td>NONE</td>\n",
" <td>16TH ST / MISSION ST</td>\n",
" <td>-122.419672</td>\n",
" <td>37.765050</td>\n",
" <td>(37.7650501214668, -122.419671780296)</td>\n",
" <td>16000274071000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" IncidntNum Category Descript \\\n",
"0 120058272 WEAPON LAWS POSS OF PROHIBITED WEAPON \n",
"1 120058272 WEAPON LAWS FIREARM, LOADED, IN VEHICLE, POSSESSION OR USE \n",
"2 141059263 WARRANTS WARRANT ARREST \n",
"3 160013662 NON-CRIMINAL LOST PROPERTY \n",
"4 160002740 NON-CRIMINAL LOST PROPERTY \n",
"\n",
" DayOfWeek Date Time PdDistrict Resolution \\\n",
"0 Friday 01/29/2016 12:00:00 AM 11:00 SOUTHERN ARREST, BOOKED \n",
"1 Friday 01/29/2016 12:00:00 AM 11:00 SOUTHERN ARREST, BOOKED \n",
"2 Monday 04/25/2016 12:00:00 AM 14:59 BAYVIEW ARREST, BOOKED \n",
"3 Tuesday 01/05/2016 12:00:00 AM 23:50 TENDERLOIN NONE \n",
"4 Friday 01/01/2016 12:00:00 AM 00:30 MISSION NONE \n",
"\n",
" Address X Y \\\n",
"0 800 Block of BRYANT ST -122.403405 37.775421 \n",
"1 800 Block of BRYANT ST -122.403405 37.775421 \n",
"2 KEITH ST / SHAFTER AV -122.388856 37.729981 \n",
"3 JONES ST / OFARRELL ST -122.412971 37.785788 \n",
"4 16TH ST / MISSION ST -122.419672 37.765050 \n",
"\n",
" Location PdId \n",
"0 (37.775420706711, -122.403404791479) 12005827212120 \n",
"1 (37.775420706711, -122.403404791479) 12005827212168 \n",
"2 (37.7299809672996, -122.388856204292) 14105926363010 \n",
"3 (37.7857883766888, -122.412970537591) 16001366271000 \n",
"4 (37.7650501214668, -122.419671780296) 16000274071000 "
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_incidents.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"So each row consists of 13 features:\n",
"> 1. **IncidntNum**: Incident Number\n",
"> 2. **Category**: Category of crime or incident\n",
"> 3. **Descript**: Description of the crime or incident\n",
"> 4. **DayOfWeek**: The day of week on which the incident occurred\n",
"> 5. **Date**: The Date on which the incident occurred\n",
"> 6. **Time**: The time of day on which the incident occurred\n",
"> 7. **PdDistrict**: The police department district\n",
"> 8. **Resolution**: The resolution of the crime in terms whether the perpetrator was arrested or not\n",
"> 9. **Address**: The closest address to where the incident took place\n",
"> 10. **X**: The longitude value of the crime location \n",
"> 11. **Y**: The latitude value of the crime location\n",
"> 12. **Location**: A tuple of the latitude and the longitude values\n",
"> 13. **PdId**: The police department ID"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's find out how many entries there are in our dataset."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(150500, 13)"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_incidents.shape"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"So the dataframe consists of 150,500 crimes, which took place in the year 2016. In order to reduce computational cost, let's just work with the first 100 incidents in this dataset."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"button": false,
"collapsed": true,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"# get the first 100 crimes in the df_incidents dataframe\n",
"limit = 100\n",
"df_incidents = df_incidents.iloc[0:limit, :]"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's confirm that our dataframe now consists only of 100 crimes."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(100, 13)"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_incidents.shape"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Now that we reduced the data a little bit, let's visualize where these crimes took place in the city of San Francisco. We will use the default style and we will initialize the zoom level to 12. "
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"button": false,
"collapsed": true,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"# San Francisco latitude and longitude values\n",
"latitude = 37.77\n",
"longitude = -122.42"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"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+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzcuNzcsLTEyMi40Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfNzNmMDAwMWI0NmY4NGMzMGJmOGY1ZWQwNzk1ZTBiMTggPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgIAo8L3NjcmlwdD4=\" 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 0x7f0e345836a0>"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create map and display it\n",
"sanfran_map = folium.Map(location=[latitude, longitude], zoom_start=12)\n",
"\n",
"# display the map of San Francisco\n",
"sanfran_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Now let's superimpose the locations of the crimes onto the map. The way to do that in **Folium** is to create a *feature group* with its own features and style and then add it to the sanfran_map."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": false
},
"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+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzcuNzcsLTEyMi40Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfNzNmMDAwMWI0NmY4NGMzMGJmOGY1ZWQwNzk1ZTBiMTggPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMGRjZWFhMzRjYjdiNGVmNDg0NDZmZDBjZDBiZmE2ODQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU0MjA3MDY3MTEsLTEyMi40MDM0MDQ3OTE0Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2EwN2E1NzAxODZmMjRlYTQ5MzExODVlN2FhODNhYjE4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82YWU0ZjcwN2YxNjQ0MDdmOGY3ZGQ3MDY2YWU4MWFlOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTk4MDk2NzI5OTU5NiwtMTIyLjM4ODg1NjIwNDI5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FiZDVhNTM5N2U5NTRhY2M4ZWRlYmM5ZmY2OTU0ZTlmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1Nzg4Mzc2Njg4NzksLTEyMi40MTI5NzA1Mzc1OTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mNGEwZDlmYzEwMmU0ZDM0OGQyNjhiNWFlNGRhY2E0NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTA1MDEyMTQ2NjgsLTEyMi40MTk2NzE3ODAyOTZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jMThhYmE3M2M5N2Y0Y2E5YWY0OTQzNjZlZTdmMTZiMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfY2UyYTZiMGU5Yjg0NGI3ODkxNWVhNGRiMzc0YWFlYzggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA4Nzg5MzYwMjE0LC0xMjIuNDA1NzIxNDU0NTY3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNmYyOGZhYTdmYjhiNGE4ZDhjZmQ0MDlmYzA2NTVhMGUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM5ODA1NTkyNjM0LC0xMjIuNDExNzc4Mjk1OTkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTBkM2QyYTRkYWQ5NDEyOTg1MGFmNjkyOGJiZTU2NzEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82MGRhNDBkMWJiNDY0ZDM1OTc2Njk3NDYxNjNhZmNjOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mYWZlYmUwYmFjZTY0YWRiYThiYWJjNTM5MDc1NjJjNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQ3ODE1Nzg2OTUwNSwtMTIyLjQ3NzM3NjUyNDAwMjk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDFiMmVmYTAyY2NjNGJjZGJmOTUwMjZlMjkwOTFmNWIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDU3Mzg5NDI5NjU0OTUsLTEyMi40Nzc5NjAzMjcyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jZWI4NDZhNjMzOTk0NjliYWRjNzEyNTA5ZGU1YTk4ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTI4MzJhYWIxNzM1NDVjODhiODVkMDQ1MTQzZDNiNjMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyNzA1MTk5NTkyLC0xMjIuNDMyMzI1ODcxMDI4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGRlZjRhZjE1OTAzNDUyMmFkMTg0NjQxYzRjZTc4NzEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTE2NDI5ODIzODQsLTEyMi40MDA5MDg2OTg4ODk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzNkMTNjM2E0ZTYwMjQ2Y2NiYzE1YjA4YmI1ZjgzYmM5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNzA2OTMwMTU0NSwtMTIyLjQwODU5NTExMDg2OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M1MTg5YjA3MjNmMjQ2OWY5MjBmZTBjMTRlNzdmN2E1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU3Mjg5NTkwNDU3Nzk1LC0xMjIuNDA2ODcwNDAyMDgyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjgxNGE4NTIyNDM4NGY5YTg4NGMzOTc0ZjRlYjdmM2QgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDg5MDYzMDUxODI5LC0xMjIuNDIwMzU0NzgwODYwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wMGI1ZmM5ZjI4ZWE0MDRmYWQ5MGYwYjY1MzhlZDEwOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxNTc2NTQyNjk5NSwtMTIyLjQzOTkwOTc2Njc3Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2NhYTVlZjE5ZjlhYTQwOGRhN2JmYzdmYmJiOGFiYWM3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNTY5OTM4NjkxOCwtMTIyLjQwODQyMTExNjkyMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzViNjI2NzFjYTVlYjRmMDlhMDk2Yzg3YTE4NDFhOTdkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczNjE4NjI3NjQ1NjA0LC0xMjIuNDIyMzE1NjcwNzQ5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWNkZmRhMmJmZWQ4NGFiZDhlZTNiNzk1M2YxNWFjM2IgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTI4NDEyODQwNDQ3MDUsLTEyMi40MjQ1MTk4MzUwMDkwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y0MWIzNzViMWY5NTRkMjk5MzY1NDk1ZmJhMDhmNmUwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU0MDk4Njg4MjA2Nzk1LC0xMjIuNDE0MjMzODQ5MDM3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81OWY2NGQ0OWU1Njk0ODZkOWRhYTY1MGVjYWY0ODM4ZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMGJkMThkNjg2ZmE3NDIyMmE4NTNhMDdkY2ZiZjY4MDQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzE0OTM5OTY5NDE2LC0xMjIuNTA3NzUwMTMxMDA0MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82OGM3MjY4YmVlOWI0ZDNkOTQxNTYxNzQzMGVjZmQ3NSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxODMwMjIwNDc2NjAwNSwtMTIyLjQ3NDQ0NDYzOTU5NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTBlMmJjMjUxNDE5NDI4NjljMzhlZWIxYzM5YzFlMDIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDdlZjVlNmI0YmM0NDRiYmE4NWM2M2MwMDUzM2I3NTUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOWFkZWJiMWMxMmI4NDc0MTkxODdiYzE1NDhjZDhmNjkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkzNjg4Mjg0NTMyLC0xMjIuNDEyNjkwMTQyMzA4MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zZmY1OGFjZjM2Nzg0ODlmYTY2MmVmNWRjYzE3OWZhMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81NDcxMmM1MmYzMmE0YzRjYjhhNGY2MzVhMGZiZDU3MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzkyMDkzNzU1MzI5NSwtMTIyLjQxMDg4MjgyNTU1MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2IwNWEyMmMwY2E1YzQ0MzQ5MDc2OWVlMjRiNDQxZTk1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuODAwNDU2NjQ3MTAzODksLTEyMi40MDE0MzI3NTQ3MjIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRmNTFmNTQ0NjE4YTQxYzY4YjM4MGI0ZmVjNDA3YTYwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQzNTU1MDU0MjI2NSwtMTIyLjQyMTEyODAyOTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FhZTFjNGU0ZmU3ZjQzNjdiZTgyOWM0ZTQ4Yjk5M2ZiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg2NTY0NzYwNzY4NSwtMTIyLjQwNzI0NDA4NzAzMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU3ODhlNjg4YTJjZDQ2MDc5YjY4N2MyMGJmOTI0NjY3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDhlN2EwNDA4ZmIzNDZkMWFhOTQyM2Q1NDNlOWJlNTYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85NTBmOWFjNWRhOTY0YTI5OWQ1YjgxMTQwYWVjNDJlNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzcyNWIwYjQyMWQzYTQ0ZGViODU1OWM0YmE0MDkzYmUzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2EzMzFhMjY1NTgyOTRhZjc5MzU4NWRkNGZjY2RmY2E4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NTI4MDYyNzQ2NSwtMTIyLjQ3NTY0NzQ2MDc4NTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDA5ODU0YTg4NzAwNGNjNmFlMTU2YzQ2YmFjODJlMWQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDI4NTE3Mzc0NDQ4OTQsLTEyMi40MjA5Njc0NDA1NjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81YTA0NTBkN2JmZjU0MzhjYTExODczNTc3M2U2ZGU0NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83Y2VjNGM5ZjZjODE0OGEyYmU4MmRmY2Q5NzQzNTI4YiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3OTE2NzQyMTg5NjMsLTEyMi40MDYzNDY0MjU2MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yOGZjNGM0ZTgwYTE0MjNkODA3YTJiYjU3MmQwOTEzYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTcxODQzOTUyODIsLTEyMi40MDk1Mjk5MTMyNzhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lMzJiODNkZDE4ZDc0MTA1YWI5YTQxYTkyMWVhNzM0YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTJmZTU1OGI1YTE2NGVjNGEzYjQ1MWM3MzZjZmZlYjcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jMmI3Mzc4MzgzYWY0NWVhYTRlNTRhMmIzYjI1Njg3YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NzUyNDMwODc4MywtMTIyLjQxMDczODA5NzMxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIzZDEzYTU2MTViYTQ2MTliMjVhY2RkMGVjN2NjM2MwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2EyZWNiOThkZWYwZTRmODJhZGViNTY3YjFmOTU3NzE1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FlNzFmZTBlOGM2NDQ3MjlhYzMxZDFlYzBhZTlhZTM2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2YzM2VmNTE4OGM2ZDQwMGY5YzFhNjQyODhkMDhhMDBhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJlNjg3ZmFiNTA4NTQ1MDRhMzg2YzcwNjE4ODFiNmQ2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNmEwZDgwZDg2MTU4NDg5ZmEwOWUxMjYwMDVjNzlkMzcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzYyMzEwNDA0NzU4LC0xMjIuNDE0NzE0Mjk1NTc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wZjBiOWVjYTcxODk0Yjk2ODA4ZjY3NzBhY2E5MDk3ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzUxMTg4OTU2OTUsLTEyMi40MTgwNDU0NTI3NjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84MzI1YTJkZTc0OWM0NTI1YWU1YTI1MDljNzIwYmFmOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjAyMzg0Nzg5NzUsLTEyMi40MDExNjE1NTU2MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zYzFjMWZhZTM0YjQ0Y2Q5ODVlYzRjZmI5NTYzOTE2OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyNzAwNTMxOTYyOTk5NSwtMTIyLjQwMzQwODY2OTE5MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzY3MDY3YzQ4YjkwZDRhNzY5OTk1MDJmM2E4OGExODhkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzkyNjZlNTk4NTVhNjRhNGU4MGQxZWM0YjBkZmNkYjE3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzUzMDE4NjUzNzQ0NjA0LC0xMjIuNDE4NTg3MTcyMjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWEyZDdkNWYzNjEyNDAxN2I2Y2Y4OTZiZjg0ZTM3NWQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODJhMGViMDliZDYzNDYxNjlmNmMzNjJiNzA4ZmI2YzUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTA1Mzg5OTM3MjUsLTEyMi40MDM5MTU2ODE1NzEwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhhZWQwNjBlMWNmMTRkZjA4Y2EyNTVlNTRjNThkNTljID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzMDk5ODI0NDU5MjEsLTEyMi40MTkxODMwOTYzNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wODZmZjlkNmE2YjA0YzBlYmQ3ODZhM2U1ZWM3YWNmMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0MDczNjA1NDgzNTc5LC0xMjIuMzg4NzUzMDQ2OTk3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGQxMTAzNTIyNDUyNGUwN2FlMzhjZGY4M2I0ZjUwNmYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ5OTEyOTQ0MzY2LC0xMjIuNDM3Nzk5NzAzNDY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjcwNDgxZjNkZDYxNDg1YThiNDlhZWFmZjQ5NjlkNDMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDExYWNkNmRmM2FiNDg1NDlkNDAzM2VhMTM0YmJkYzggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjE5MWQwZDMyZDg1NGUwZTk5ZjdjZDFhZTAxOGJiYzQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMmE2MzViMjJjZTkzNDNjMDhiN2IzNWU4NGU1MGIwNTcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzAwMzc5OTk1MTI3OTUsLTEyMi40MDQ1OTQxNDA2MzRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jYzQwMzQ5MDBmZTU0NmI1YTQ3YmE5ZjNiODU2YjExMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5NTMzMzgyNjc0MzYsLTEyMi4zOTczNzM3NDAwNjZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mYTA3YjhlYmViYmY0MTE0OWIwYTE4ZDhkZDViNzRlYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzUxNTg3NDE2MjI5NSwtMTIyLjQwNzQzNDk4OTUyM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzljMWJmMzI3M2MxNjQ4OWI4NjM4NGUwZTVmMTk0YTVkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzNlY2ZlZThjYjYyMTRlZjJhZWNmMTY1MDk3OGUwNDJiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzc0YWY5Nzc5MDk3MTRlNjY5OThhNzQwNjA4NjY2YTg4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zZjVlMzk4YWE3YjI0MzIyOGQwNGI1OTA0MTBlYmY4OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzExNjJiNmM0ODY2NGM4NmFhNjY1NDIxMTY0NGU3NWMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA1Mjc1Nzg1MDksLTEyMi4zOTY4NDkwMTUxNzIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg2ZjE0NmQ3OGVjMDQzOTU5NjgwMmRjYmQ5MDk5NDlmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDY2MDRkNzc1ZjFkNGNlMDk4NjYzMzdkNGZiNzQ5ODMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGU2MGE1YmVjYjg4NDg3YzhmODY5MGUzZThhYWYxYmUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84YTBmYzBjODZkOWI0NmZiOGJmMzFiMzA5OGRlYjA2NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMzk3NDgyNDE2MDksLTEyMi4zOTQ5Mjg0NzU4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzg2ZmU2M2JhODM3NGY5ZDg3Mzc5OWNiYTY3ODFmNDEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2MwNmJhZWFjY2ZiOTRjZjE5ZGU0M2MwNzk3MmE0OTQ0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jZmVjYTMzNThjMjA0NWNkYTgyYzBmM2UwNTFmNmY1MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODMyMzU0NDk5MDQsLTEyMi40MTE4NTcwMzI1NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzljNzBiMjJiMDFjMzRlZmFhMGYzNjg2ODc2MzljNmRiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU1OTk3NzMzOTg1NiwtMTIyLjQwOTQzNTYxNzEwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAzMThjYWRjODdjNjQwNmRiNGZhNzI1NGJhZDEwNjA2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3MDc5ODE0NDQ0MywtMTIyLjQyNTg4MzM1ODE0OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FiZDdmMWE3NGZmZDRmZDk5ZjhhN2RjZDU5Mzc0NWJkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM2MDM3NDQ2Njg2MjA0LC0xMjIuNDE1MTI2NTQzMDAxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81NjAxNmIwMjFiMDI0ZjhiOGIyYmExZjc3NzM5Mjc2YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMjc2Nzg4NDgyMSwtMTIyLjQzMTkyODAxMTA4OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2IzYWI2YjExNDkyOTRlYjVhMjU1ZTMxOGI4MDVlMGU4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg5NTcxMDI1NTg2MywtMTIyLjQwMjE2MzcxMzYxOF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIyN2QxYjgwZjhkMTRkMTBhZWQ0MTcwMzRiMDE3ZmYxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FhZDhjOGYyNTI1ZDRiNzJiNjA4ZjJhMzIwNGE2MTViID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM2NTU2NTM0Nzk0LC0xMjIuNDEzNzkwOTcyNzgwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85ZTZkYmM0NzY0NDc0NDU3YTI2OTg4NTFmYTU4ZjUyNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80ZjkzYzc0NGE3YWI0NTQ5YTE3ZmE5NzY0ODE2MWExZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNzM2MjM2MDUyMTI5NiwtMTIyLjQyMjA2NzE4NDkzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZmZjFiZDVlYzc0OTQ3MDJhNzkxNmI2ZjMyODVhNzY4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWQ3MjUxNDM0YmY0NDZiMmE1NjcxMWFhMjRmMjY3OTcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODU5OTg4MzIzNzk3OTYsLTEyMi40MTE3NDczNzE5MjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84ZjFiNmM0Mzk1NTM0ODFlOWE4NjlkMzMxNmZmZGU4OCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhhOGVkYzUyZjA4ZjQ2ZDhhYzk2NWFhOGMzNTgzMzYzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1MDIyNjYyMjc4NiwtMTIyLjQxMTk4NzY0MzU5NTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjQ0MWUyMjk4Mzk4NDg1YzgzNDNiNGExZWNiZWFhZTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ2MjA2NDkxMDY0OTUsLTEyMi41MDAzODA0Mjc5MTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85N2RjNzFmZTc5YzA0NzdhYjNhNGNkODQ5ZmFmOGY5MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTE5MTgyNjcyMTcsLTEyMi40NjY1NTg3ODA2ODNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lODFkMDNjZjhkMzE0YzMxYTYwYWM0MTIyZDYwODUyNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTA4NDE3MjkwMjgsLTEyMi40ODY5MjU5NjAxMTQwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzMyN2M5NTQzZTRjZjQ2M2Y4MzVhMTIyZGMwZDgxNWZhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY4NTM2MDEyMzU4MywtMTIyLjQxNTYxNjMzODMxOTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDY4MTgzYWI5MDhiNGIzZWIwNGEyMmRjZGFjOGUyYzMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDUzMTExZDljNGE4NDkyOGJlMWY1NGExMTM4NmFjNDAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMmE0ZTRjY2RjNDIwNDQ0Zjg0Y2VhYmRlZDI2Y2Q2ZDUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzUyNjgxNDY5MDgzOTYsLTEyMi40NzI3MTU3NTk2MzFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKPC9zY3JpcHQ+\" 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 0x7f0e345836a0>"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# instantiate a feature group for the incidents in the dataframe\n",
"incidents = folium.map.FeatureGroup()\n",
"\n",
"# loop through the 100 crimes and add each to the incidents feature group\n",
"for lat, lng, in zip(df_incidents.Y, df_incidents.X):\n",
" incidents.add_child(\n",
" folium.features.CircleMarker(\n",
" [lat, lng],\n",
" radius=5, # define how big you want the circle markers to be\n",
" color='yellow',\n",
" fill=True,\n",
" fill_color='blue',\n",
" fill_opacity=0.6\n",
" )\n",
" )\n",
"\n",
"# add incidents to map\n",
"sanfran_map.add_child(incidents)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"You can also add some pop-up text that would get displayed when you hover over a marker. Let's make each marker display the category of the crime when hovered over."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": false
},
"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+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzcuNzcsLTEyMi40Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfNzNmMDAwMWI0NmY4NGMzMGJmOGY1ZWQwNzk1ZTBiMTggPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMGRjZWFhMzRjYjdiNGVmNDg0NDZmZDBjZDBiZmE2ODQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU0MjA3MDY3MTEsLTEyMi40MDM0MDQ3OTE0Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2EwN2E1NzAxODZmMjRlYTQ5MzExODVlN2FhODNhYjE4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82YWU0ZjcwN2YxNjQ0MDdmOGY3ZGQ3MDY2YWU4MWFlOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTk4MDk2NzI5OTU5NiwtMTIyLjM4ODg1NjIwNDI5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FiZDVhNTM5N2U5NTRhY2M4ZWRlYmM5ZmY2OTU0ZTlmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1Nzg4Mzc2Njg4NzksLTEyMi40MTI5NzA1Mzc1OTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mNGEwZDlmYzEwMmU0ZDM0OGQyNjhiNWFlNGRhY2E0NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTA1MDEyMTQ2NjgsLTEyMi40MTk2NzE3ODAyOTZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jMThhYmE3M2M5N2Y0Y2E5YWY0OTQzNjZlZTdmMTZiMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfY2UyYTZiMGU5Yjg0NGI3ODkxNWVhNGRiMzc0YWFlYzggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA4Nzg5MzYwMjE0LC0xMjIuNDA1NzIxNDU0NTY3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNmYyOGZhYTdmYjhiNGE4ZDhjZmQ0MDlmYzA2NTVhMGUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM5ODA1NTkyNjM0LC0xMjIuNDExNzc4Mjk1OTkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTBkM2QyYTRkYWQ5NDEyOTg1MGFmNjkyOGJiZTU2NzEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82MGRhNDBkMWJiNDY0ZDM1OTc2Njk3NDYxNjNhZmNjOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mYWZlYmUwYmFjZTY0YWRiYThiYWJjNTM5MDc1NjJjNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQ3ODE1Nzg2OTUwNSwtMTIyLjQ3NzM3NjUyNDAwMjk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDFiMmVmYTAyY2NjNGJjZGJmOTUwMjZlMjkwOTFmNWIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDU3Mzg5NDI5NjU0OTUsLTEyMi40Nzc5NjAzMjcyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jZWI4NDZhNjMzOTk0NjliYWRjNzEyNTA5ZGU1YTk4ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTI4MzJhYWIxNzM1NDVjODhiODVkMDQ1MTQzZDNiNjMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyNzA1MTk5NTkyLC0xMjIuNDMyMzI1ODcxMDI4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGRlZjRhZjE1OTAzNDUyMmFkMTg0NjQxYzRjZTc4NzEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTE2NDI5ODIzODQsLTEyMi40MDA5MDg2OTg4ODk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzNkMTNjM2E0ZTYwMjQ2Y2NiYzE1YjA4YmI1ZjgzYmM5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNzA2OTMwMTU0NSwtMTIyLjQwODU5NTExMDg2OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M1MTg5YjA3MjNmMjQ2OWY5MjBmZTBjMTRlNzdmN2E1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU3Mjg5NTkwNDU3Nzk1LC0xMjIuNDA2ODcwNDAyMDgyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjgxNGE4NTIyNDM4NGY5YTg4NGMzOTc0ZjRlYjdmM2QgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDg5MDYzMDUxODI5LC0xMjIuNDIwMzU0NzgwODYwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wMGI1ZmM5ZjI4ZWE0MDRmYWQ5MGYwYjY1MzhlZDEwOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxNTc2NTQyNjk5NSwtMTIyLjQzOTkwOTc2Njc3Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2NhYTVlZjE5ZjlhYTQwOGRhN2JmYzdmYmJiOGFiYWM3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNTY5OTM4NjkxOCwtMTIyLjQwODQyMTExNjkyMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzViNjI2NzFjYTVlYjRmMDlhMDk2Yzg3YTE4NDFhOTdkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczNjE4NjI3NjQ1NjA0LC0xMjIuNDIyMzE1NjcwNzQ5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWNkZmRhMmJmZWQ4NGFiZDhlZTNiNzk1M2YxNWFjM2IgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTI4NDEyODQwNDQ3MDUsLTEyMi40MjQ1MTk4MzUwMDkwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y0MWIzNzViMWY5NTRkMjk5MzY1NDk1ZmJhMDhmNmUwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU0MDk4Njg4MjA2Nzk1LC0xMjIuNDE0MjMzODQ5MDM3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81OWY2NGQ0OWU1Njk0ODZkOWRhYTY1MGVjYWY0ODM4ZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMGJkMThkNjg2ZmE3NDIyMmE4NTNhMDdkY2ZiZjY4MDQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzE0OTM5OTY5NDE2LC0xMjIuNTA3NzUwMTMxMDA0MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82OGM3MjY4YmVlOWI0ZDNkOTQxNTYxNzQzMGVjZmQ3NSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxODMwMjIwNDc2NjAwNSwtMTIyLjQ3NDQ0NDYzOTU5NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTBlMmJjMjUxNDE5NDI4NjljMzhlZWIxYzM5YzFlMDIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDdlZjVlNmI0YmM0NDRiYmE4NWM2M2MwMDUzM2I3NTUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOWFkZWJiMWMxMmI4NDc0MTkxODdiYzE1NDhjZDhmNjkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkzNjg4Mjg0NTMyLC0xMjIuNDEyNjkwMTQyMzA4MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zZmY1OGFjZjM2Nzg0ODlmYTY2MmVmNWRjYzE3OWZhMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81NDcxMmM1MmYzMmE0YzRjYjhhNGY2MzVhMGZiZDU3MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzkyMDkzNzU1MzI5NSwtMTIyLjQxMDg4MjgyNTU1MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2IwNWEyMmMwY2E1YzQ0MzQ5MDc2OWVlMjRiNDQxZTk1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuODAwNDU2NjQ3MTAzODksLTEyMi40MDE0MzI3NTQ3MjIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRmNTFmNTQ0NjE4YTQxYzY4YjM4MGI0ZmVjNDA3YTYwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQzNTU1MDU0MjI2NSwtMTIyLjQyMTEyODAyOTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FhZTFjNGU0ZmU3ZjQzNjdiZTgyOWM0ZTQ4Yjk5M2ZiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg2NTY0NzYwNzY4NSwtMTIyLjQwNzI0NDA4NzAzMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU3ODhlNjg4YTJjZDQ2MDc5YjY4N2MyMGJmOTI0NjY3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDhlN2EwNDA4ZmIzNDZkMWFhOTQyM2Q1NDNlOWJlNTYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85NTBmOWFjNWRhOTY0YTI5OWQ1YjgxMTQwYWVjNDJlNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzcyNWIwYjQyMWQzYTQ0ZGViODU1OWM0YmE0MDkzYmUzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2EzMzFhMjY1NTgyOTRhZjc5MzU4NWRkNGZjY2RmY2E4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NTI4MDYyNzQ2NSwtMTIyLjQ3NTY0NzQ2MDc4NTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDA5ODU0YTg4NzAwNGNjNmFlMTU2YzQ2YmFjODJlMWQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDI4NTE3Mzc0NDQ4OTQsLTEyMi40MjA5Njc0NDA1NjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81YTA0NTBkN2JmZjU0MzhjYTExODczNTc3M2U2ZGU0NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83Y2VjNGM5ZjZjODE0OGEyYmU4MmRmY2Q5NzQzNTI4YiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3OTE2NzQyMTg5NjMsLTEyMi40MDYzNDY0MjU2MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yOGZjNGM0ZTgwYTE0MjNkODA3YTJiYjU3MmQwOTEzYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTcxODQzOTUyODIsLTEyMi40MDk1Mjk5MTMyNzhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lMzJiODNkZDE4ZDc0MTA1YWI5YTQxYTkyMWVhNzM0YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTJmZTU1OGI1YTE2NGVjNGEzYjQ1MWM3MzZjZmZlYjcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jMmI3Mzc4MzgzYWY0NWVhYTRlNTRhMmIzYjI1Njg3YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NzUyNDMwODc4MywtMTIyLjQxMDczODA5NzMxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIzZDEzYTU2MTViYTQ2MTliMjVhY2RkMGVjN2NjM2MwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2EyZWNiOThkZWYwZTRmODJhZGViNTY3YjFmOTU3NzE1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FlNzFmZTBlOGM2NDQ3MjlhYzMxZDFlYzBhZTlhZTM2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2YzM2VmNTE4OGM2ZDQwMGY5YzFhNjQyODhkMDhhMDBhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJlNjg3ZmFiNTA4NTQ1MDRhMzg2YzcwNjE4ODFiNmQ2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNmEwZDgwZDg2MTU4NDg5ZmEwOWUxMjYwMDVjNzlkMzcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzYyMzEwNDA0NzU4LC0xMjIuNDE0NzE0Mjk1NTc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wZjBiOWVjYTcxODk0Yjk2ODA4ZjY3NzBhY2E5MDk3ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzUxMTg4OTU2OTUsLTEyMi40MTgwNDU0NTI3NjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84MzI1YTJkZTc0OWM0NTI1YWU1YTI1MDljNzIwYmFmOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjAyMzg0Nzg5NzUsLTEyMi40MDExNjE1NTU2MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zYzFjMWZhZTM0YjQ0Y2Q5ODVlYzRjZmI5NTYzOTE2OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyNzAwNTMxOTYyOTk5NSwtMTIyLjQwMzQwODY2OTE5MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzY3MDY3YzQ4YjkwZDRhNzY5OTk1MDJmM2E4OGExODhkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzkyNjZlNTk4NTVhNjRhNGU4MGQxZWM0YjBkZmNkYjE3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzUzMDE4NjUzNzQ0NjA0LC0xMjIuNDE4NTg3MTcyMjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWEyZDdkNWYzNjEyNDAxN2I2Y2Y4OTZiZjg0ZTM3NWQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODJhMGViMDliZDYzNDYxNjlmNmMzNjJiNzA4ZmI2YzUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTA1Mzg5OTM3MjUsLTEyMi40MDM5MTU2ODE1NzEwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhhZWQwNjBlMWNmMTRkZjA4Y2EyNTVlNTRjNThkNTljID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzMDk5ODI0NDU5MjEsLTEyMi40MTkxODMwOTYzNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wODZmZjlkNmE2YjA0YzBlYmQ3ODZhM2U1ZWM3YWNmMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0MDczNjA1NDgzNTc5LC0xMjIuMzg4NzUzMDQ2OTk3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGQxMTAzNTIyNDUyNGUwN2FlMzhjZGY4M2I0ZjUwNmYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ5OTEyOTQ0MzY2LC0xMjIuNDM3Nzk5NzAzNDY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjcwNDgxZjNkZDYxNDg1YThiNDlhZWFmZjQ5NjlkNDMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDExYWNkNmRmM2FiNDg1NDlkNDAzM2VhMTM0YmJkYzggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjE5MWQwZDMyZDg1NGUwZTk5ZjdjZDFhZTAxOGJiYzQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMmE2MzViMjJjZTkzNDNjMDhiN2IzNWU4NGU1MGIwNTcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzAwMzc5OTk1MTI3OTUsLTEyMi40MDQ1OTQxNDA2MzRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jYzQwMzQ5MDBmZTU0NmI1YTQ3YmE5ZjNiODU2YjExMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5NTMzMzgyNjc0MzYsLTEyMi4zOTczNzM3NDAwNjZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mYTA3YjhlYmViYmY0MTE0OWIwYTE4ZDhkZDViNzRlYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzUxNTg3NDE2MjI5NSwtMTIyLjQwNzQzNDk4OTUyM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzljMWJmMzI3M2MxNjQ4OWI4NjM4NGUwZTVmMTk0YTVkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzNlY2ZlZThjYjYyMTRlZjJhZWNmMTY1MDk3OGUwNDJiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzc0YWY5Nzc5MDk3MTRlNjY5OThhNzQwNjA4NjY2YTg4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zZjVlMzk4YWE3YjI0MzIyOGQwNGI1OTA0MTBlYmY4OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzExNjJiNmM0ODY2NGM4NmFhNjY1NDIxMTY0NGU3NWMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA1Mjc1Nzg1MDksLTEyMi4zOTY4NDkwMTUxNzIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg2ZjE0NmQ3OGVjMDQzOTU5NjgwMmRjYmQ5MDk5NDlmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDY2MDRkNzc1ZjFkNGNlMDk4NjYzMzdkNGZiNzQ5ODMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGU2MGE1YmVjYjg4NDg3YzhmODY5MGUzZThhYWYxYmUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84YTBmYzBjODZkOWI0NmZiOGJmMzFiMzA5OGRlYjA2NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMzk3NDgyNDE2MDksLTEyMi4zOTQ5Mjg0NzU4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzg2ZmU2M2JhODM3NGY5ZDg3Mzc5OWNiYTY3ODFmNDEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2MwNmJhZWFjY2ZiOTRjZjE5ZGU0M2MwNzk3MmE0OTQ0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jZmVjYTMzNThjMjA0NWNkYTgyYzBmM2UwNTFmNmY1MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODMyMzU0NDk5MDQsLTEyMi40MTE4NTcwMzI1NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzljNzBiMjJiMDFjMzRlZmFhMGYzNjg2ODc2MzljNmRiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU1OTk3NzMzOTg1NiwtMTIyLjQwOTQzNTYxNzEwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAzMThjYWRjODdjNjQwNmRiNGZhNzI1NGJhZDEwNjA2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3MDc5ODE0NDQ0MywtMTIyLjQyNTg4MzM1ODE0OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FiZDdmMWE3NGZmZDRmZDk5ZjhhN2RjZDU5Mzc0NWJkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM2MDM3NDQ2Njg2MjA0LC0xMjIuNDE1MTI2NTQzMDAxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81NjAxNmIwMjFiMDI0ZjhiOGIyYmExZjc3NzM5Mjc2YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMjc2Nzg4NDgyMSwtMTIyLjQzMTkyODAxMTA4OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2IzYWI2YjExNDkyOTRlYjVhMjU1ZTMxOGI4MDVlMGU4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg5NTcxMDI1NTg2MywtMTIyLjQwMjE2MzcxMzYxOF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIyN2QxYjgwZjhkMTRkMTBhZWQ0MTcwMzRiMDE3ZmYxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FhZDhjOGYyNTI1ZDRiNzJiNjA4ZjJhMzIwNGE2MTViID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM2NTU2NTM0Nzk0LC0xMjIuNDEzNzkwOTcyNzgwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85ZTZkYmM0NzY0NDc0NDU3YTI2OTg4NTFmYTU4ZjUyNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80ZjkzYzc0NGE3YWI0NTQ5YTE3ZmE5NzY0ODE2MWExZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNzM2MjM2MDUyMTI5NiwtMTIyLjQyMjA2NzE4NDkzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZmZjFiZDVlYzc0OTQ3MDJhNzkxNmI2ZjMyODVhNzY4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWQ3MjUxNDM0YmY0NDZiMmE1NjcxMWFhMjRmMjY3OTcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODU5OTg4MzIzNzk3OTYsLTEyMi40MTE3NDczNzE5MjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84ZjFiNmM0Mzk1NTM0ODFlOWE4NjlkMzMxNmZmZGU4OCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhhOGVkYzUyZjA4ZjQ2ZDhhYzk2NWFhOGMzNTgzMzYzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1MDIyNjYyMjc4NiwtMTIyLjQxMTk4NzY0MzU5NTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjQ0MWUyMjk4Mzk4NDg1YzgzNDNiNGExZWNiZWFhZTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ2MjA2NDkxMDY0OTUsLTEyMi41MDAzODA0Mjc5MTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85N2RjNzFmZTc5YzA0NzdhYjNhNGNkODQ5ZmFmOGY5MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTE5MTgyNjcyMTcsLTEyMi40NjY1NTg3ODA2ODNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lODFkMDNjZjhkMzE0YzMxYTYwYWM0MTIyZDYwODUyNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTA4NDE3MjkwMjgsLTEyMi40ODY5MjU5NjAxMTQwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9lZTQ2NWY1ZjRmMzA0OTUyYmIyODYzMWNjYjc1MjI4NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzMyN2M5NTQzZTRjZjQ2M2Y4MzVhMTIyZGMwZDgxNWZhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY4NTM2MDEyMzU4MywtMTIyLjQxNTYxNjMzODMxOTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDY4MTgzYWI5MDhiNGIzZWIwNGEyMmRjZGFjOGUyYzMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDUzMTExZDljNGE4NDkyOGJlMWY1NGExMTM4NmFjNDAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2VlNDY1ZjVmNGYzMDQ5NTJiYjI4NjMxY2NiNzUyMjg1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMmE0ZTRjY2RjNDIwNDQ0Zjg0Y2VhYmRlZDI2Y2Q2ZDUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzUyNjgxNDY5MDgzOTYsLTEyMi40NzI3MTU3NTk2MzFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZWU0NjVmNWY0ZjMwNDk1MmJiMjg2MzFjY2I3NTIyODUpOwogICAgICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jMDY0YTZkMDY2YjE0ZWUzYWVkOWY1MTRiZDBlMzRkNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfY2E4ODM0N2VhN2U2NDNhZmJjNzI2YWZiYjEzMDdlMjUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYmJlZWRhOWM1YjY0NGI1OWFkNjZiYjY3ZDc1ZjFmYjkgPSAkKCc8ZGl2IGlkPSJodG1sX2JiZWVkYTljNWI2NDRiNTlhZDY2YmI2N2Q3NWYxZmI5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XRUFQT04gTEFXUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfY2E4ODM0N2VhN2U2NDNhZmJjNzI2YWZiYjEzMDdlMjUuc2V0Q29udGVudChodG1sX2JiZWVkYTljNWI2NDRiNTlhZDY2YmI2N2Q3NWYxZmI5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYzA2NGE2ZDA2NmIxNGVlM2FlZDlmNTE0YmQwZTM0ZDUuYmluZFBvcHVwKHBvcHVwX2NhODgzNDdlYTdlNjQzYWZiYzcyNmFmYmIxMzA3ZTI1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2I1MTBmODE1MzNhNDRlNDlhYzdmOTU4ZTJhYzdkMjA2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hZTczYzQyMWFjOGE0NDVkYTIzODE3ZTYzNWI2MjdlZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jYTUzNmE5MGI1MzI0ZWY2YjZmOGMyZjgzMTYwOTFhNCA9ICQoJzxkaXYgaWQ9Imh0bWxfY2E1MzZhOTBiNTMyNGVmNmI2ZjhjMmY4MzE2MDkxYTQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldFQVBPTiBMQVdTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hZTczYzQyMWFjOGE0NDVkYTIzODE3ZTYzNWI2MjdlZS5zZXRDb250ZW50KGh0bWxfY2E1MzZhOTBiNTMyNGVmNmI2ZjhjMmY4MzE2MDkxYTQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iNTEwZjgxNTMzYTQ0ZTQ5YWM3Zjk1OGUyYWM3ZDIwNi5iaW5kUG9wdXAocG9wdXBfYWU3M2M0MjFhYzhhNDQ1ZGEyMzgxN2U2MzViNjI3ZWUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfODlmMmQyNjYwODgxNDMzMTg2MDM0MzQ2MmIxMzY0OTQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Mjk5ODA5NjcyOTk1OTYsLTEyMi4zODg4NTYyMDQyOTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wMzdmNmI3MDYwNmU0ZDZjYjM0MTM4MGM2Y2VmNzQ0YSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82NTMwYjk1ZTUwMzM0MjYxODFhY2M0YTQyZDc2YjVmNiA9ICQoJzxkaXYgaWQ9Imh0bWxfNjUzMGI5NWU1MDMzNDI2MTgxYWNjNGE0MmQ3NmI1ZjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wMzdmNmI3MDYwNmU0ZDZjYjM0MTM4MGM2Y2VmNzQ0YS5zZXRDb250ZW50KGh0bWxfNjUzMGI5NWU1MDMzNDI2MTgxYWNjNGE0MmQ3NmI1ZjYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84OWYyZDI2NjA4ODE0MzMxODYwMzQzNDYyYjEzNjQ5NC5iaW5kUG9wdXAocG9wdXBfMDM3ZjZiNzA2MDZlNGQ2Y2IzNDEzODBjNmNlZjc0NGEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYmU4ZTIxZjk2ZTdkNDE3ZTgzMTJmMTI0MTY2ZDM2MmQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODU3ODgzNzY2ODg3OSwtMTIyLjQxMjk3MDUzNzU5MV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzY0MTcwNTRhZDRlODQ5ZmQ5OTUxNjU5NTJmZjc1ZGE1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNjMWMzZmZiMzYwZDQ1N2M5OWNlMmY1NDg1ODcwYjYxID0gJCgnPGRpdiBpZD0iaHRtbF8zYzFjM2ZmYjM2MGQ0NTdjOTljZTJmNTQ4NTg3MGI2MSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82NDE3MDU0YWQ0ZTg0OWZkOTk1MTY1OTUyZmY3NWRhNS5zZXRDb250ZW50KGh0bWxfM2MxYzNmZmIzNjBkNDU3Yzk5Y2UyZjU0ODU4NzBiNjEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iZThlMjFmOTZlN2Q0MTdlODMxMmYxMjQxNjZkMzYyZC5iaW5kUG9wdXAocG9wdXBfNjQxNzA1NGFkNGU4NDlmZDk5NTE2NTk1MmZmNzVkYTUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOWVhYjQzMTExMDY1NGY5ZGExOTE4MmFiMjljOWYxODEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjUwNTAxMjE0NjY4LC0xMjIuNDE5NjcxNzgwMjk2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzg1NGIxMDE4ZjNlNGFlZWIwMzgwMGM3MGM1ZjBhOGUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDJhY2VjNzMxMzhjNGVlMGExYWNhZmQzNGE4ODdiZTMgPSAkKCc8ZGl2IGlkPSJodG1sXzQyYWNlYzczMTM4YzRlZTBhMWFjYWZkMzRhODg3YmUzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2M4NTRiMTAxOGYzZTRhZWViMDM4MDBjNzBjNWYwYThlLnNldENvbnRlbnQoaHRtbF80MmFjZWM3MzEzOGM0ZWUwYTFhY2FmZDM0YTg4N2JlMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzllYWI0MzExMTA2NTRmOWRhMTkxODJhYjI5YzlmMTgxLmJpbmRQb3B1cChwb3B1cF9jODU0YjEwMThmM2U0YWVlYjAzODAwYzcwYzVmMGE4ZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82ZWM5MGRhNmU1ZjM0YmEyOTk4Nzc0YjVlZmUyNTUwMiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYWM5ODdiNDQyNjQxNDM0N2JkMGEyOWU3MGQ0NTRhNzcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODY3YTRiZGFmMGJkNDg3ZWJkYzFkMjMxY2M1Y2QwYmYgPSAkKCc8ZGl2IGlkPSJodG1sXzg2N2E0YmRhZjBiZDQ4N2ViZGMxZDIzMWNjNWNkMGJmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hYzk4N2I0NDI2NDE0MzQ3YmQwYTI5ZTcwZDQ1NGE3Ny5zZXRDb250ZW50KGh0bWxfODY3YTRiZGFmMGJkNDg3ZWJkYzFkMjMxY2M1Y2QwYmYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82ZWM5MGRhNmU1ZjM0YmEyOTk4Nzc0YjVlZmUyNTUwMi5iaW5kUG9wdXAocG9wdXBfYWM5ODdiNDQyNjQxNDM0N2JkMGEyOWU3MGQ0NTRhNzcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOThhM2U1MDYxZTJlNDcyZThjOTM4Njc5ZWU4NjU3ODUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA4Nzg5MzYwMjE0LC0xMjIuNDA1NzIxNDU0NTY3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTZiZDMxM2U0MDJkNDY4NTk3OTkzNjY1ZTRmYjY2ZjEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDUwNmNhZjFjM2M5NDhmOTgxMWZkMDVmNmJkYzg3MDkgPSAkKCc8ZGl2IGlkPSJodG1sXzA1MDZjYWYxYzNjOTQ4Zjk4MTFmZDA1ZjZiZGM4NzA5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTZiZDMxM2U0MDJkNDY4NTk3OTkzNjY1ZTRmYjY2ZjEuc2V0Q29udGVudChodG1sXzA1MDZjYWYxYzNjOTQ4Zjk4MTFmZDA1ZjZiZGM4NzA5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOThhM2U1MDYxZTJlNDcyZThjOTM4Njc5ZWU4NjU3ODUuYmluZFBvcHVwKHBvcHVwXzE2YmQzMTNlNDAyZDQ2ODU5Nzk5MzY2NWU0ZmI2NmYxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2RiYTA0YzAxYjE0ZDQzNDI4YTg5OTdiZjA2OWU5MTZlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzOTgwNTU5MjYzNCwtMTIyLjQxMTc3ODI5NTk5Ml0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc2MjBhNDVmYWUwNzQ3NjU4MDdkYWQ1YTVlOWEzMjFiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2I0Y2Q4OTYzYTkwNzQzMGI5YmMwOTZjNjhmMDIzYWQyID0gJCgnPGRpdiBpZD0iaHRtbF9iNGNkODk2M2E5MDc0MzBiOWJjMDk2YzY4ZjAyM2FkMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83NjIwYTQ1ZmFlMDc0NzY1ODA3ZGFkNWE1ZTlhMzIxYi5zZXRDb250ZW50KGh0bWxfYjRjZDg5NjNhOTA3NDMwYjliYzA5NmM2OGYwMjNhZDIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kYmEwNGMwMWIxNGQ0MzQyOGE4OTk3YmYwNjllOTE2ZS5iaW5kUG9wdXAocG9wdXBfNzYyMGE0NWZhZTA3NDc2NTgwN2RhZDVhNWU5YTMyMWIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZWNkMGZiNjZjY2ZmNGZiNDlhOGRhZjNhOWU3OTcwN2QgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yZTUwZTI4ZWQ4MTg0N2E1YjZmNTdhZjhkNjU1YTY2MyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83NjEyODQxMzQyOWU0NWJmYTQ1YTIxZTc1OTQ4ZjlhOCA9ICQoJzxkaXYgaWQ9Imh0bWxfNzYxMjg0MTM0MjllNDViZmE0NWEyMWU3NTk0OGY5YTgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yZTUwZTI4ZWQ4MTg0N2E1YjZmNTdhZjhkNjU1YTY2My5zZXRDb250ZW50KGh0bWxfNzYxMjg0MTM0MjllNDViZmE0NWEyMWU3NTk0OGY5YTgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lY2QwZmI2NmNjZmY0ZmI0OWE4ZGFmM2E5ZTc5NzA3ZC5iaW5kUG9wdXAocG9wdXBfMmU1MGUyOGVkODE4NDdhNWI2ZjU3YWY4ZDY1NWE2NjMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOTYwYTg1ZGZjNjc0NDY1NmJiNTUxNzFkOTlhMmYwNDcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjA5NjY5NjE1NDk5LC0xMjIuMzg3MTgxNjM1OTk1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzNhYTQyM2NmMzI1NGY1MTlmZDkwYWJlMjVhNjU3YzQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjc3NjFlMTgzNmQyNDUwMGEyZGNlZDE4OWM0MmRhNzggPSAkKCc8ZGl2IGlkPSJodG1sXzI3NzYxZTE4MzZkMjQ1MDBhMmRjZWQxODljNDJkYTc4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzNhYTQyM2NmMzI1NGY1MTlmZDkwYWJlMjVhNjU3YzQuc2V0Q29udGVudChodG1sXzI3NzYxZTE4MzZkMjQ1MDBhMmRjZWQxODljNDJkYTc4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOTYwYTg1ZGZjNjc0NDY1NmJiNTUxNzFkOTlhMmYwNDcuYmluZFBvcHVwKHBvcHVwXzczYWE0MjNjZjMyNTRmNTE5ZmQ5MGFiZTI1YTY1N2M0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2YyODM0NWI1MjQwMjQ5YTRiYWU2ZjY2YzQwNGU5OGMzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NDc4MTU3ODY5NTA1LC0xMjIuNDc3Mzc2NTI0MDAyOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lMzY3MzY0MDAxZWQ0YjllYTI0Yzk4MjZkMGFmYThkYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hMTI3ZTI3MjNlMjA0NGE3ODkxYjFlM2ZiNTBmOTFlZSA9ICQoJzxkaXYgaWQ9Imh0bWxfYTEyN2UyNzIzZTIwNDRhNzg5MWIxZTNmYjUwZjkxZWUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2UzNjczNjQwMDFlZDRiOWVhMjRjOTgyNmQwYWZhOGRjLnNldENvbnRlbnQoaHRtbF9hMTI3ZTI3MjNlMjA0NGE3ODkxYjFlM2ZiNTBmOTFlZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2YyODM0NWI1MjQwMjQ5YTRiYWU2ZjY2YzQwNGU5OGMzLmJpbmRQb3B1cChwb3B1cF9lMzY3MzY0MDAxZWQ0YjllYTI0Yzk4MjZkMGFmYThkYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85OTFlNDVjNjcxMjE0NWVhYmE5YzZlMjJmMjY4ZGE2YiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NTczODk0Mjk2NTQ5NSwtMTIyLjQ3Nzk2MDMyNzI5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2ZjZTUxOGJjOGNiYzRkYjhiYzk1ZDc0M2NiMjcxOGVmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2NmMTI5NzNlOWQ1YjQ5Y2ViYjU1MDNkOWYzMzU1ZjVlID0gJCgnPGRpdiBpZD0iaHRtbF9jZjEyOTczZTlkNWI0OWNlYmI1NTAzZDlmMzM1NWY1ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mY2U1MThiYzhjYmM0ZGI4YmM5NWQ3NDNjYjI3MThlZi5zZXRDb250ZW50KGh0bWxfY2YxMjk3M2U5ZDViNDljZWJiNTUwM2Q5ZjMzNTVmNWUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl85OTFlNDVjNjcxMjE0NWVhYmE5YzZlMjJmMjY4ZGE2Yi5iaW5kUG9wdXAocG9wdXBfZmNlNTE4YmM4Y2JjNGRiOGJjOTVkNzQzY2IyNzE4ZWYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYTlhYjVlZjg3ZGRkNDA5NDg1OGQwNjQ5MDQwNGI0M2UgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzU2OTcwMjc1NDgyMDYsLTEyMi4zNzY3NTc2NTU1MzAwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzk0MjVlMGQ1NzNkMzQ3YjdiYjc2ZDE2MzYxMzM5NjgyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQyYWFlM2U4N2Q3NDQyMDc5MmY5MzhkNDY3NDJjMjFkID0gJCgnPGRpdiBpZD0iaHRtbF80MmFhZTNlODdkNzQ0MjA3OTJmOTM4ZDQ2NzQyYzIxZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzk0MjVlMGQ1NzNkMzQ3YjdiYjc2ZDE2MzYxMzM5NjgyLnNldENvbnRlbnQoaHRtbF80MmFhZTNlODdkNzQ0MjA3OTJmOTM4ZDQ2NzQyYzIxZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2E5YWI1ZWY4N2RkZDQwOTQ4NThkMDY0OTA0MDRiNDNlLmJpbmRQb3B1cChwb3B1cF85NDI1ZTBkNTczZDM0N2I3YmI3NmQxNjM2MTMzOTY4Mik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8zOGUxYjA5YjUwZjU0MTVlOWUwOTFlZmUzMGM2YzYxZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTI3MDUxOTk1OTIsLTEyMi40MzIzMjU4NzEwMjhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yMjM5MmI2ODY5OGE0NmM4ODUzZjIzMDY4M2RlMGU0OCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kY2M4NGYxYzc4YzM0ZmFlODEyODZmZTljMTE4NmE2NyA9ICQoJzxkaXYgaWQ9Imh0bWxfZGNjODRmMWM3OGMzNGZhZTgxMjg2ZmU5YzExODZhNjciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzIyMzkyYjY4Njk4YTQ2Yzg4NTNmMjMwNjgzZGUwZTQ4LnNldENvbnRlbnQoaHRtbF9kY2M4NGYxYzc4YzM0ZmFlODEyODZmZTljMTE4NmE2Nyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzM4ZTFiMDliNTBmNTQxNWU5ZTA5MWVmZTMwYzZjNjFlLmJpbmRQb3B1cChwb3B1cF8yMjM5MmI2ODY5OGE0NmM4ODUzZjIzMDY4M2RlMGU0OCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kYWU2MzM2OGUzZDI0MTJmYjkzMzQ1ZjlhMmQ3OWI2ZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5MTY0Mjk4MjM4NCwtMTIyLjQwMDkwODY5ODg4OTk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjRmMTI1YTZlZGI0NDFlNzk4YmE5NDlhMWY3YjkwZmIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTg5YmUwOWQ3NjU3NDQ0Njg3N2E2YThhOGIxMjdiZmYgPSAkKCc8ZGl2IGlkPSJodG1sXzU4OWJlMDlkNzY1NzQ0NDY4NzdhNmE4YThiMTI3YmZmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CVVJHTEFSWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjRmMTI1YTZlZGI0NDFlNzk4YmE5NDlhMWY3YjkwZmIuc2V0Q29udGVudChodG1sXzU4OWJlMDlkNzY1NzQ0NDY4NzdhNmE4YThiMTI3YmZmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZGFlNjMzNjhlM2QyNDEyZmI5MzM0NWY5YTJkNzliNmYuYmluZFBvcHVwKHBvcHVwXzY0ZjEyNWE2ZWRiNDQxZTc5OGJhOTQ5YTFmN2I5MGZiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzIxMWRhZWQ4ZDA5NTQzNzY4ZTIyMmU5NTc0NTgzNGZjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNzA2OTMwMTU0NSwtMTIyLjQwODU5NTExMDg2OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzAyMjAwNTIzYjJlNTQ2ZTZiMDM1YzcwMmNmMDNmNWYyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RlNzMzNDNiMjQ4ZjQ5ZjhiMjRiNjk1Mjk3OTYxMjg0ID0gJCgnPGRpdiBpZD0iaHRtbF9kZTczMzQzYjI0OGY0OWY4YjI0YjY5NTI5Nzk2MTI4NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U1RPTEVOIFBST1BFUlRZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wMjIwMDUyM2IyZTU0NmU2YjAzNWM3MDJjZjAzZjVmMi5zZXRDb250ZW50KGh0bWxfZGU3MzM0M2IyNDhmNDlmOGIyNGI2OTUyOTc5NjEyODQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yMTFkYWVkOGQwOTU0Mzc2OGUyMjJlOTU3NDU4MzRmYy5iaW5kUG9wdXAocG9wdXBfMDIyMDA1MjNiMmU1NDZlNmIwMzVjNzAyY2YwM2Y1ZjIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZmFlYmYyMTgxNDVlNDFmY2JiNmIyMTRjODg2NjBjY2IgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTcyODk1OTA0NTc3OTUsLTEyMi40MDY4NzA0MDIwODJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82YjI3MWI4NzQwZjU0NmNmYjY1ZGQ2YThiOGZmMmIzOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mYmNhYjU2NDE0ZTc0ZjE1YjUzMjJkY2I5ZjA1ZTgxZiA9ICQoJzxkaXYgaWQ9Imh0bWxfZmJjYWI1NjQxNGU3NGYxNWI1MzIyZGNiOWYwNWU4MWYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJPQkJFUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZiMjcxYjg3NDBmNTQ2Y2ZiNjVkZDZhOGI4ZmYyYjM5LnNldENvbnRlbnQoaHRtbF9mYmNhYjU2NDE0ZTc0ZjE1YjUzMjJkY2I5ZjA1ZTgxZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2ZhZWJmMjE4MTQ1ZTQxZmNiYjZiMjE0Yzg4NjYwY2NiLmJpbmRQb3B1cChwb3B1cF82YjI3MWI4NzQwZjU0NmNmYjY1ZGQ2YThiOGZmMmIzOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9lMDhkZmMzNTNlNzE0MGMxYTU5NzdiMzQ5MDE2YmU5ZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0ODkwNjMwNTE4MjksLTEyMi40MjAzNTQ3ODA4NjA5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzA0ZjI5OTExZDlmZTQ0MTFhMWY1ZTdmNzg3Yzc3ODFhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNlZDkxNWIxMjRhMzQ0Yzc4ZTYyMTEzZjEwZjk4ZDdlID0gJCgnPGRpdiBpZD0iaHRtbF8zZWQ5MTViMTI0YTM0NGM3OGU2MjExM2YxMGY5OGQ3ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDRmMjk5MTFkOWZlNDQxMWExZjVlN2Y3ODdjNzc4MWEuc2V0Q29udGVudChodG1sXzNlZDkxNWIxMjRhMzQ0Yzc4ZTYyMTEzZjEwZjk4ZDdlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZTA4ZGZjMzUzZTcxNDBjMWE1OTc3YjM0OTAxNmJlOWYuYmluZFBvcHVwKHBvcHVwXzA0ZjI5OTExZDlmZTQ0MTFhMWY1ZTdmNzg3Yzc3ODFhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2IxYjRiOTFmNzBkNzRiNmE5NzljYTUxODljZTQ0NWY3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzE1NzY1NDI2OTk1LC0xMjIuNDM5OTA5NzY2NzcyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYmM0NjIxMzAxZGM4NDdhODgzMGJkZGIyMDE2MWRkNmEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYmFlOWY5ZDAzNmM3NGY0M2FmNDEzYzRmY2NkYjBhMjMgPSAkKCc8ZGl2IGlkPSJodG1sX2JhZTlmOWQwMzZjNzRmNDNhZjQxM2M0ZmNjZGIwYTIzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iYzQ2MjEzMDFkYzg0N2E4ODMwYmRkYjIwMTYxZGQ2YS5zZXRDb250ZW50KGh0bWxfYmFlOWY5ZDAzNmM3NGY0M2FmNDEzYzRmY2NkYjBhMjMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iMWI0YjkxZjcwZDc0YjZhOTc5Y2E1MTg5Y2U0NDVmNy5iaW5kUG9wdXAocG9wdXBfYmM0NjIxMzAxZGM4NDdhODgzMGJkZGIyMDE2MWRkNmEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYmMxZWE2NDNkMDZjNGRkOWE4OTQ4ZWI4NWI2ZGQyNTYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM1Njk5Mzg2OTE4LC0xMjIuNDA4NDIxMTE2OTIyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjJlZmI4NDZjMThiNDEwYWEyYzY4MjliZWIxNmM0NTggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDE1OGNlNjc2YTY5NGU3MWIxYTAwZjA4YWY2NzdmZDggPSAkKCc8ZGl2IGlkPSJodG1sXzAxNThjZTY3NmE2OTRlNzFiMWEwMGYwOGFmNjc3ZmQ4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82MmVmYjg0NmMxOGI0MTBhYTJjNjgyOWJlYjE2YzQ1OC5zZXRDb250ZW50KGh0bWxfMDE1OGNlNjc2YTY5NGU3MWIxYTAwZjA4YWY2NzdmZDgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iYzFlYTY0M2QwNmM0ZGQ5YTg5NDhlYjg1YjZkZDI1Ni5iaW5kUG9wdXAocG9wdXBfNjJlZmI4NDZjMThiNDEwYWEyYzY4MjliZWIxNmM0NTgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNDVjMjllNjgyZGY4NDdkOTg0ZGYxMDMwOWZlZDExM2EgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzM2MTg2Mjc2NDU2MDQsLTEyMi40MjIzMTU2NzA3NDldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83MzBhNWUwMzRkZmI0YjA0YmU1OTBiOTAwM2Y4ZjJmYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xMGE5ZmI0NDM5NGY0ZGQ2OWZjOGM4MTgzMGQ1YmY2OSA9ICQoJzxkaXYgaWQ9Imh0bWxfMTBhOWZiNDQzOTRmNGRkNjlmYzhjODE4MzBkNWJmNjkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkZSQVVEPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83MzBhNWUwMzRkZmI0YjA0YmU1OTBiOTAwM2Y4ZjJmYy5zZXRDb250ZW50KGh0bWxfMTBhOWZiNDQzOTRmNGRkNjlmYzhjODE4MzBkNWJmNjkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80NWMyOWU2ODJkZjg0N2Q5ODRkZjEwMzA5ZmVkMTEzYS5iaW5kUG9wdXAocG9wdXBfNzMwYTVlMDM0ZGZiNGIwNGJlNTkwYjkwMDNmOGYyZmMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNGI0ZGMyZjJmMWIyNGM4Mzk3YWEzMWIxMGQ4ZDFjNTQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTI4NDEyODQwNDQ3MDUsLTEyMi40MjQ1MTk4MzUwMDkwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzIyNjNmMDE4YzBkNTQ3MTU4ZTRlZjYyYzJiMzU0Yzc5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2IzMmI2YTBkY2E1NjRlZjU5NjgxYjQwNDVhYzg1NmE0ID0gJCgnPGRpdiBpZD0iaHRtbF9iMzJiNmEwZGNhNTY0ZWY1OTY4MWI0MDQ1YWM4NTZhNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzIyNjNmMDE4YzBkNTQ3MTU4ZTRlZjYyYzJiMzU0Yzc5LnNldENvbnRlbnQoaHRtbF9iMzJiNmEwZGNhNTY0ZWY1OTY4MWI0MDQ1YWM4NTZhNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzRiNGRjMmYyZjFiMjRjODM5N2FhMzFiMTBkOGQxYzU0LmJpbmRQb3B1cChwb3B1cF8yMjYzZjAxOGMwZDU0NzE1OGU0ZWY2MmMyYjM1NGM3OSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mYTQzNjVjNDAxNDk0NmUwODY3OGIyMjRjNzY1ZWEzYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTM0ZjI3NTY2MGYwNGQ0NzhiYjY3MmI5MDU5MWJkYTcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTk0NGIxMjU0MjQ4NDRhMDg0N2I1Y2JmNjBkYjlmZDEgPSAkKCc8ZGl2IGlkPSJodG1sXzU5NDRiMTI1NDI0ODQ0YTA4NDdiNWNiZjYwZGI5ZmQxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xMzRmMjc1NjYwZjA0ZDQ3OGJiNjcyYjkwNTkxYmRhNy5zZXRDb250ZW50KGh0bWxfNTk0NGIxMjU0MjQ4NDRhMDg0N2I1Y2JmNjBkYjlmZDEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mYTQzNjVjNDAxNDk0NmUwODY3OGIyMjRjNzY1ZWEzYS5iaW5kUG9wdXAocG9wdXBfMTM0ZjI3NTY2MGYwNGQ0NzhiYjY3MmI5MDU5MWJkYTcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZWEyOTA4MmRmZDA0NGZkMGE0ZTQ3OTJlNWIzNmRlNmYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTQwOTg2ODgyMDY3OTUsLTEyMi40MTQyMzM4NDkwMzc5OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2ZhZjMwNzQ3MDNlZDQwMDBhM2I5ZjZjNjgwMmVkZjc1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM2MTI2ODExZjQzZTQ3ODNiY2EzNGFmYThmZmUwNjJlID0gJCgnPGRpdiBpZD0iaHRtbF8zNjEyNjgxMWY0M2U0NzgzYmNhMzRhZmE4ZmZlMDYyZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ZhZjMwNzQ3MDNlZDQwMDBhM2I5ZjZjNjgwMmVkZjc1LnNldENvbnRlbnQoaHRtbF8zNjEyNjgxMWY0M2U0NzgzYmNhMzRhZmE4ZmZlMDYyZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2VhMjkwODJkZmQwNDRmZDBhNGU0NzkyZTViMzZkZTZmLmJpbmRQb3B1cChwb3B1cF9mYWYzMDc0NzAzZWQ0MDAwYTNiOWY2YzY4MDJlZGY3NSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xNjgzOTE5NWM4OGI0NDhmODBkNDg3NTI1MmQ1MTU3MiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3MTQ5Mzk5Njk0MTYsLTEyMi41MDc3NTAxMzEwMDQwMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2NiMzAxOGVjNjFiNzQzYzI4NDQ4ZjcwZmJlYTIxYjAyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2NjYjQyODZlNzA2YTQ0ZDBhNjg3YzVlYWZjMTMzMjczID0gJCgnPGRpdiBpZD0iaHRtbF9jY2I0Mjg2ZTcwNmE0NGQwYTY4N2M1ZWFmYzEzMzI3MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfY2IzMDE4ZWM2MWI3NDNjMjg0NDhmNzBmYmVhMjFiMDIuc2V0Q29udGVudChodG1sX2NjYjQyODZlNzA2YTQ0ZDBhNjg3YzVlYWZjMTMzMjczKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMTY4MzkxOTVjODhiNDQ4ZjgwZDQ4NzUyNTJkNTE1NzIuYmluZFBvcHVwKHBvcHVwX2NiMzAxOGVjNjFiNzQzYzI4NDQ4ZjcwZmJlYTIxYjAyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzcxMjMyM2QzNjExMDQzMjE5Zjg4MGVkN2MzMWViY2U2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzE4MzAyMjA0NzY2MDA1LC0xMjIuNDc0NDQ0NjM5NTk0OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82NWY1MDRkNjdmYTE0Yzc2YjU1MzlkODhlMGZkYmY0ZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83YzBjMzUyZDFkOGU0ZDVhYTFlMGNjOWYyNzA3MmY1MyA9ICQoJzxkaXYgaWQ9Imh0bWxfN2MwYzM1MmQxZDhlNGQ1YWExZTBjYzlmMjcwNzJmNTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82NWY1MDRkNjdmYTE0Yzc2YjU1MzlkODhlMGZkYmY0ZS5zZXRDb250ZW50KGh0bWxfN2MwYzM1MmQxZDhlNGQ1YWExZTBjYzlmMjcwNzJmNTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83MTIzMjNkMzYxMTA0MzIxOWY4ODBlZDdjMzFlYmNlNi5iaW5kUG9wdXAocG9wdXBfNjVmNTA0ZDY3ZmExNGM3NmI1NTM5ZDg4ZTBmZGJmNGUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNGZmOGY2MDEwMjg1NGJiN2IzOTNlZDkyYjA1ZGM3YzIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYmU5YjYwYzU3NDIxNDQ4MGJkN2E5Mjk2ODljM2I0MWUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZmYzYTkyZjc4OTBhNGVhYjk3ZDUxMjc5ODAzMzhjZTQgPSAkKCc8ZGl2IGlkPSJodG1sX2ZmM2E5MmY3ODkwYTRlYWI5N2Q1MTI3OTgwMzM4Y2U0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYmU5YjYwYzU3NDIxNDQ4MGJkN2E5Mjk2ODljM2I0MWUuc2V0Q29udGVudChodG1sX2ZmM2E5MmY3ODkwYTRlYWI5N2Q1MTI3OTgwMzM4Y2U0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNGZmOGY2MDEwMjg1NGJiN2IzOTNlZDkyYjA1ZGM3YzIuYmluZFBvcHVwKHBvcHVwX2JlOWI2MGM1NzQyMTQ0ODBiZDdhOTI5Njg5YzNiNDFlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzAxODhhMmE4YzY1MjQ1NWM4MmRiYjM5N2YyODM3ZmE4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3NDM3ODMwOTExMiwtMTIyLjQxOTIwMzAwNDI2OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Q0NGQ0NWZlZDUzMzQzMGU4NWMxOGRlNzQwODk0MDc1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2NhZTJmNzc3YmI3MjQ1Y2RhM2NkM2UyN2NjYjI3NTA1ID0gJCgnPGRpdiBpZD0iaHRtbF9jYWUyZjc3N2JiNzI0NWNkYTNjZDNlMjdjY2IyNzUwNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Q0NGQ0NWZlZDUzMzQzMGU4NWMxOGRlNzQwODk0MDc1LnNldENvbnRlbnQoaHRtbF9jYWUyZjc3N2JiNzI0NWNkYTNjZDNlMjdjY2IyNzUwNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzAxODhhMmE4YzY1MjQ1NWM4MmRiYjM5N2YyODM3ZmE4LmJpbmRQb3B1cChwb3B1cF9kNDRkNDVmZWQ1MzM0MzBlODVjMThkZTc0MDg5NDA3NSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iMDNlZjU4OWIxODM0YzYzOWNmZmEzZWQ2MzkzYTUzOSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTM2ODgyODQ1MzIsLTEyMi40MTI2OTAxNDIzMDgwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzExMWE2ZTY4NWQ2ODQ1YzdiMjhmNTY5M2YwOGVkYjhlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2UyZWRkODRlZTZlYzQ1YWNiNTVkMzcwMzVjMzYyNjY1ID0gJCgnPGRpdiBpZD0iaHRtbF9lMmVkZDg0ZWU2ZWM0NWFjYjU1ZDM3MDM1YzM2MjY2NSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzExMWE2ZTY4NWQ2ODQ1YzdiMjhmNTY5M2YwOGVkYjhlLnNldENvbnRlbnQoaHRtbF9lMmVkZDg0ZWU2ZWM0NWFjYjU1ZDM3MDM1YzM2MjY2NSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2IwM2VmNTg5YjE4MzRjNjM5Y2ZmYTNlZDYzOTNhNTM5LmJpbmRQb3B1cChwb3B1cF8xMTFhNmU2ODVkNjg0NWM3YjI4ZjU2OTNmMDhlZGI4ZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iZjkwMjVmZmNlNDk0MTU5Yjg3ZjlkMTlmZWIyZDI4YSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kNGYxNDVkMWM2ODY0YTFkODNlZGRlNzgwZDY2NTZjMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yNjhlODg0MWYyMjk0OTNkOTQyMDY2OTJlMTdhZWQzZiA9ICQoJzxkaXYgaWQ9Imh0bWxfMjY4ZTg4NDFmMjI5NDkzZDk0MjA2NjkyZTE3YWVkM2YiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZDRmMTQ1ZDFjNjg2NGExZDgzZWRkZTc4MGQ2NjU2YzMuc2V0Q29udGVudChodG1sXzI2OGU4ODQxZjIyOTQ5M2Q5NDIwNjY5MmUxN2FlZDNmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYmY5MDI1ZmZjZTQ5NDE1OWI4N2Y5ZDE5ZmViMmQyOGEuYmluZFBvcHVwKHBvcHVwX2Q0ZjE0NWQxYzY4NjRhMWQ4M2VkZGU3ODBkNjY1NmMzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzBjNzZmMWYwYWZkODRkM2RiNDYxM2JhNTQyYTk5YWJmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3OTIwOTM3NTUzMjk1LC0xMjIuNDEwODgyODI1NTUxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzJlMGM0NDU0NDgxNDA2ODhhYWI5MThhNTVkMjMxY2UgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDgyMjEzZmZkYTAwNDc0Zjk2NDVmNDJhYTk1YzUxYmIgPSAkKCc8ZGl2IGlkPSJodG1sXzA4MjIxM2ZmZGEwMDQ3NGY5NjQ1ZjQyYWE5NWM1MWJiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zMmUwYzQ0NTQ0ODE0MDY4OGFhYjkxOGE1NWQyMzFjZS5zZXRDb250ZW50KGh0bWxfMDgyMjEzZmZkYTAwNDc0Zjk2NDVmNDJhYTk1YzUxYmIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wYzc2ZjFmMGFmZDg0ZDNkYjQ2MTNiYTU0MmE5OWFiZi5iaW5kUG9wdXAocG9wdXBfMzJlMGM0NDU0NDgxNDA2ODhhYWI5MThhNTVkMjMxY2UpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOTA3ZmYwNDA2ZjM3NDJiYzg1NmE2YTk2M2ExNDJhOWUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy44MDA0NTY2NDcxMDM4OSwtMTIyLjQwMTQzMjc1NDcyMjAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODNlZGVlYjYwYWI4NGQzOWIyMzExOTY3MmFmOTFiODEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMGMzMDJjNGVjNDhiNGFlY2I5ZDZiNDhhMWEzNThiYzUgPSAkKCc8ZGl2IGlkPSJodG1sXzBjMzAyYzRlYzQ4YjRhZWNiOWQ2YjQ4YTFhMzU4YmM1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84M2VkZWViNjBhYjg0ZDM5YjIzMTE5NjcyYWY5MWI4MS5zZXRDb250ZW50KGh0bWxfMGMzMDJjNGVjNDhiNGFlY2I5ZDZiNDhhMWEzNThiYzUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl85MDdmZjA0MDZmMzc0MmJjODU2YTZhOTYzYTE0MmE5ZS5iaW5kUG9wdXAocG9wdXBfODNlZGVlYjYwYWI4NGQzOWIyMzExOTY3MmFmOTFiODEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYjM5ZmRiMjQ2ZGZmNGIyMDhjYTZlOTYzNjYxZTc4YjMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDM1NTUwNTQyMjY1LC0xMjIuNDIxMTI4MDI5NTA1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZmE2NTRmOGY4YjRlNGY5MDllMjNiY2JlNWNhZGE2OTcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTk4NmNiZDY5Mjc3NDA2ZDhjOGE3YTYxNjY0MDNlODkgPSAkKCc8ZGl2IGlkPSJodG1sX2E5ODZjYmQ2OTI3NzQwNmQ4YzhhN2E2MTY2NDAzZTg5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mYTY1NGY4ZjhiNGU0ZjkwOWUyM2JjYmU1Y2FkYTY5Ny5zZXRDb250ZW50KGh0bWxfYTk4NmNiZDY5Mjc3NDA2ZDhjOGE3YTYxNjY0MDNlODkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iMzlmZGIyNDZkZmY0YjIwOGNhNmU5NjM2NjFlNzhiMy5iaW5kUG9wdXAocG9wdXBfZmE2NTRmOGY4YjRlNGY5MDllMjNiY2JlNWNhZGE2OTcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZWI3MTg2MGFlOWQwNDgxZTkzMDBiZDhlZGM4ZDgyMWYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODY1NjQ3NjA3Njg1LC0xMjIuNDA3MjQ0MDg3MDMyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDgwNDZlMDEzNTMzNGFlY2FkNzNhZmQ5ZGU3MjEwYzAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfN2FmZjA5Y2RlMDA1NGZlNmI1MGZjMWY1ODg0YWM3MjAgPSAkKCc8ZGl2IGlkPSJodG1sXzdhZmYwOWNkZTAwNTRmZTZiNTBmYzFmNTg4NGFjNzIwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wODA0NmUwMTM1MzM0YWVjYWQ3M2FmZDlkZTcyMTBjMC5zZXRDb250ZW50KGh0bWxfN2FmZjA5Y2RlMDA1NGZlNmI1MGZjMWY1ODg0YWM3MjApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lYjcxODYwYWU5ZDA0ODFlOTMwMGJkOGVkYzhkODIxZi5iaW5kUG9wdXAocG9wdXBfMDgwNDZlMDEzNTMzNGFlY2FkNzNhZmQ5ZGU3MjEwYzApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZWI1MGM5MGQ5NmIwNDQxMzk2NTk1ZGNmMzg3YTE3MDQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hMzlkNTk4YTg3ZDM0ZTRjODkwYTExZDVhODk1YzUwZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mMThkY2ExMGQ3ODg0YzkyYTY2Y2JmYzM0NTgwNWI1ZCA9ICQoJzxkaXYgaWQ9Imh0bWxfZjE4ZGNhMTBkNzg4NGM5MmE2NmNiZmMzNDU4MDViNWQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJFQ09WRVJFRCBWRUhJQ0xFPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hMzlkNTk4YTg3ZDM0ZTRjODkwYTExZDVhODk1YzUwZi5zZXRDb250ZW50KGh0bWxfZjE4ZGNhMTBkNzg4NGM5MmE2NmNiZmMzNDU4MDViNWQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lYjUwYzkwZDk2YjA0NDEzOTY1OTVkY2YzODdhMTcwNC5iaW5kUG9wdXAocG9wdXBfYTM5ZDU5OGE4N2QzNGU0Yzg5MGExMWQ1YTg5NWM1MGYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDVhZGIxMGFjYTBmNDk3NTlkMGJiMDUwN2UxNjVkMGMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84ZGZlYzAwYmU2Njg0MDE1YmU3MWI2MjViZDk3ZmNmMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mNDAyYTgyZDllMzY0MDM2YTIxNzc4YTc5ZGVmOTg0ZiA9ICQoJzxkaXYgaWQ9Imh0bWxfZjQwMmE4MmQ5ZTM2NDAzNmEyMTc3OGE3OWRlZjk4NGYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84ZGZlYzAwYmU2Njg0MDE1YmU3MWI2MjViZDk3ZmNmMi5zZXRDb250ZW50KGh0bWxfZjQwMmE4MmQ5ZTM2NDAzNmEyMTc3OGE3OWRlZjk4NGYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kNWFkYjEwYWNhMGY0OTc1OWQwYmIwNTA3ZTE2NWQwYy5iaW5kUG9wdXAocG9wdXBfOGRmZWMwMGJlNjY4NDAxNWJlNzFiNjI1YmQ5N2ZjZjIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzAzMDU4MmNkYjFkNDhjYzllOTEwOTY2MmM3OTM2ZDMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDQxOTI3NTA4OTMyMDUsLTEyMi40NDQ2ODU0ODIyNzNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81NjgzYTdlZDk1OGY0OGQyODJmNTQyOTZlZDk2NmEzYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81ZjcxZDRmNTg0N2E0Mjg2YjI3Y2YyYjg2MGUzOTVmOSA9ICQoJzxkaXYgaWQ9Imh0bWxfNWY3MWQ0ZjU4NDdhNDI4NmIyN2NmMmI4NjBlMzk1ZjkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTY4M2E3ZWQ5NThmNDhkMjgyZjU0Mjk2ZWQ5NjZhM2Iuc2V0Q29udGVudChodG1sXzVmNzFkNGY1ODQ3YTQyODZiMjdjZjJiODYwZTM5NWY5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYzAzMDU4MmNkYjFkNDhjYzllOTEwOTY2MmM3OTM2ZDMuYmluZFBvcHVwKHBvcHVwXzU2ODNhN2VkOTU4ZjQ4ZDI4MmY1NDI5NmVkOTY2YTNiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzkyNjg5ZTJmZmI5NTQ3MTFiNDNkYzJjMDY0MmU5YTQ4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzFmYjI2ZmJlZTQ5MjRiZTdiNTg5ZjFjOTRmMWVhZjMzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzJiZDhhYzg3NTRlNzRkMWU4Mjg2MzI2YTQ3OTRhZTAxID0gJCgnPGRpdiBpZD0iaHRtbF8yYmQ4YWM4NzU0ZTc0ZDFlODI4NjMyNmE0Nzk0YWUwMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xZmIyNmZiZWU0OTI0YmU3YjU4OWYxYzk0ZjFlYWYzMy5zZXRDb250ZW50KGh0bWxfMmJkOGFjODc1NGU3NGQxZTgyODYzMjZhNDc5NGFlMDEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl85MjY4OWUyZmZiOTU0NzExYjQzZGMyYzA2NDJlOWE0OC5iaW5kUG9wdXAocG9wdXBfMWZiMjZmYmVlNDkyNGJlN2I1ODlmMWM5NGYxZWFmMzMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMTAyNDUzOTE4Yjc5NGEzZmEzZDU3ZDFkMjQzZWE2ZTUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Mjg1MjgwNjI3NDY1LC0xMjIuNDc1NjQ3NDYwNzg1OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wM2RlNzMwNGQwYzc0ZTBmYTBmOTgxZDYxNWVjY2IxMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hMTU4Mzc2YzFhMDY0MjQyYjJmOTYxNTMyMDZkYjNmOCA9ICQoJzxkaXYgaWQ9Imh0bWxfYTE1ODM3NmMxYTA2NDI0MmIyZjk2MTUzMjA2ZGIzZjgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJPQkJFUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzAzZGU3MzA0ZDBjNzRlMGZhMGY5ODFkNjE1ZWNjYjEwLnNldENvbnRlbnQoaHRtbF9hMTU4Mzc2YzFhMDY0MjQyYjJmOTYxNTMyMDZkYjNmOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzEwMjQ1MzkxOGI3OTRhM2ZhM2Q1N2QxZDI0M2VhNmU1LmJpbmRQb3B1cChwb3B1cF8wM2RlNzMwNGQwYzc0ZTBmYTBmOTgxZDYxNWVjY2IxMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85OTEyZTRkMDViMjM0YzA5YjNjYjlmNWFhMjYyYjYyNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0Mjg1MTczNzQ0NDg5NCwtMTIyLjQyMDk2NzQ0MDU2NF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzZjNjliZTBmYTNlMDRlNmVhOGVkNzI3YTFmZmEwMzRiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzAyYThmYzdiMDFhYzQ1YjE5OWUwZDRjMTQ3YTRhZDY3ID0gJCgnPGRpdiBpZD0iaHRtbF8wMmE4ZmM3YjAxYWM0NWIxOTllMGQ0YzE0N2E0YWQ2NyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZjNjliZTBmYTNlMDRlNmVhOGVkNzI3YTFmZmEwMzRiLnNldENvbnRlbnQoaHRtbF8wMmE4ZmM3YjAxYWM0NWIxOTllMGQ0YzE0N2E0YWQ2Nyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzk5MTJlNGQwNWIyMzRjMDliM2NiOWY1YWEyNjJiNjI1LmJpbmRQb3B1cChwb3B1cF82YzY5YmUwZmEzZTA0ZTZlYThlZDcyN2ExZmZhMDM0Yik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80MTQ3NWYwZGMyN2M0OGMyOTA5ZDBmOGJlN2U3Y2IwYyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85OWQzNmM3NDAwYWY0ZGIwOGNiM2IyODAwNDJmZjExOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iZWY0Yzk1MTVlNmQ0OWEyYjE2MDg0OTQ4YmFiNzg0OCA9ICQoJzxkaXYgaWQ9Imh0bWxfYmVmNGM5NTE1ZTZkNDlhMmIxNjA4NDk0OGJhYjc4NDgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTlkMzZjNzQwMGFmNGRiMDhjYjNiMjgwMDQyZmYxMTkuc2V0Q29udGVudChodG1sX2JlZjRjOTUxNWU2ZDQ5YTJiMTYwODQ5NDhiYWI3ODQ4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDE0NzVmMGRjMjdjNDhjMjkwOWQwZjhiZTdlN2NiMGMuYmluZFBvcHVwKHBvcHVwXzk5ZDM2Yzc0MDBhZjRkYjA4Y2IzYjI4MDA0MmZmMTE5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2I0ZTk0OTkwOGU1YzQ5YTY5Y2IwNDYwOWJjN2MyODY4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc5MTY3NDIxODk2MywtMTIyLjQwNjM0NjQyNTYzMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzlmOTdhMjg3ZGY1NjQ5NDBiNTk4NGQ0OGU2ZTAyMTUwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhkZmE4OGIyYWI3NTRlOGNhZjA1OTdmZTMyYmRkYjdiID0gJCgnPGRpdiBpZD0iaHRtbF84ZGZhODhiMmFiNzU0ZThjYWYwNTk3ZmUzMmJkZGI3YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOWY5N2EyODdkZjU2NDk0MGI1OTg0ZDQ4ZTZlMDIxNTAuc2V0Q29udGVudChodG1sXzhkZmE4OGIyYWI3NTRlOGNhZjA1OTdmZTMyYmRkYjdiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYjRlOTQ5OTA4ZTVjNDlhNjljYjA0NjA5YmM3YzI4NjguYmluZFBvcHVwKHBvcHVwXzlmOTdhMjg3ZGY1NjQ5NDBiNTk4NGQ0OGU2ZTAyMTUwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzBiN2Q4YjY1OTYwNTRiYjQ4YzRjZDdlMTk5ODI1NzNiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY1NzE4NDM5NTI4MiwtMTIyLjQwOTUyOTkxMzI3OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FiZmNmMjEwYjgyMTQ3NmI4NTZjOGIzNjc0ZTk1NTBhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzU2ZTFkMGQzZGNkZDQ5ZjdiZTY3M2IyMzUwYTg2Nzg5ID0gJCgnPGRpdiBpZD0iaHRtbF81NmUxZDBkM2RjZGQ0OWY3YmU2NzNiMjM1MGE4Njc4OSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYWJmY2YyMTBiODIxNDc2Yjg1NmM4YjM2NzRlOTU1MGEuc2V0Q29udGVudChodG1sXzU2ZTFkMGQzZGNkZDQ5ZjdiZTY3M2IyMzUwYTg2Nzg5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMGI3ZDhiNjU5NjA1NGJiNDhjNGNkN2UxOTk4MjU3M2IuYmluZFBvcHVwKHBvcHVwX2FiZmNmMjEwYjgyMTQ3NmI4NTZjOGIzNjc0ZTk1NTBhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzZmNmE2NGY0Y2MxYTQ2MWFiZDcwODk4ZGQzNDY1NDU2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hMDlhY2MzZTJjMDQ0ODIyODM0M2JlYmVmNGJkNDQwOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81Y2ViZGE0MTA4ZGQ0MDE0ODM0NjYyOWRkOTNjYjMwMCA9ICQoJzxkaXYgaWQ9Imh0bWxfNWNlYmRhNDEwOGRkNDAxNDgzNDY2MjlkZDkzY2IzMDAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTA5YWNjM2UyYzA0NDgyMjgzNDNiZWJlZjRiZDQ0MDguc2V0Q29udGVudChodG1sXzVjZWJkYTQxMDhkZDQwMTQ4MzQ2NjI5ZGQ5M2NiMzAwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNmY2YTY0ZjRjYzFhNDYxYWJkNzA4OThkZDM0NjU0NTYuYmluZFBvcHVwKHBvcHVwX2EwOWFjYzNlMmMwNDQ4MjI4MzQzYmViZWY0YmQ0NDA4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2ZiODBhNmE5NWRiYzQ3YTE4Y2ZiMGY4MWRiMjdmNzdhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY3NTI0MzA4NzgzLC0xMjIuNDEwNzM4MDk3MzE1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODAwY2E4MGU5NGU0NGY1YWFjYWExN2E5ZmE3YmYyZGQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjgzODgyMmY0MDkwNGI4OGJmOGEyZjE0N2VkNWJhNzMgPSAkKCc8ZGl2IGlkPSJodG1sX2I4Mzg4MjJmNDA5MDRiODhiZjhhMmYxNDdlZDViYTczIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CVVJHTEFSWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODAwY2E4MGU5NGU0NGY1YWFjYWExN2E5ZmE3YmYyZGQuc2V0Q29udGVudChodG1sX2I4Mzg4MjJmNDA5MDRiODhiZjhhMmYxNDdlZDViYTczKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZmI4MGE2YTk1ZGJjNDdhMThjZmIwZjgxZGIyN2Y3N2EuYmluZFBvcHVwKHBvcHVwXzgwMGNhODBlOTRlNDRmNWFhY2FhMTdhOWZhN2JmMmRkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2NiYjlkYWZhN2JmZDQ0MTM5ZjZiNTBmZDlkYTRiZTJmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY3NTI0MzA4NzgzLC0xMjIuNDEwNzM4MDk3MzE1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfM2M4MmJhMTVkODU1NDNiYTg2ODM5Mjk3NDkxMzkyNGIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfY2JhMWVlNTkwMDMzNDgzYTljNmM1NGY5NzkxNzFmOWIgPSAkKCc8ZGl2IGlkPSJodG1sX2NiYTFlZTU5MDAzMzQ4M2E5YzZjNTRmOTc5MTcxZjliIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfM2M4MmJhMTVkODU1NDNiYTg2ODM5Mjk3NDkxMzkyNGIuc2V0Q29udGVudChodG1sX2NiYTFlZTU5MDAzMzQ4M2E5YzZjNTRmOTc5MTcxZjliKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfY2JiOWRhZmE3YmZkNDQxMzlmNmI1MGZkOWRhNGJlMmYuYmluZFBvcHVwKHBvcHVwXzNjODJiYTE1ZDg1NTQzYmE4NjgzOTI5NzQ5MTM5MjRiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2Y1YTgzNzcwYzJjMDQwYjk5Y2NlYmMwM2M0YmIyM2NiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2QxZGNlYjMzNjI2ZjRmNzQ4ZTVlMGI0MjQ0MzM5N2U2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzFiMTBkNmRlOTliMDRlNGY5Mzk0MjEyMGZiN2M3OTRhID0gJCgnPGRpdiBpZD0iaHRtbF8xYjEwZDZkZTk5YjA0ZTRmOTM5NDIxMjBmYjdjNzk0YSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2QxZGNlYjMzNjI2ZjRmNzQ4ZTVlMGI0MjQ0MzM5N2U2LnNldENvbnRlbnQoaHRtbF8xYjEwZDZkZTk5YjA0ZTRmOTM5NDIxMjBmYjdjNzk0YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2Y1YTgzNzcwYzJjMDQwYjk5Y2NlYmMwM2M0YmIyM2NiLmJpbmRQb3B1cChwb3B1cF9kMWRjZWIzMzYyNmY0Zjc0OGU1ZTBiNDI0NDMzOTdlNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wYTFmYTNjZTAyNjQ0NTg2YTU4NjVjOGJkNGM3ZDJlYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMzEwODM0MzMyNjQsLTEyMi40NDQzMTQwMjUxODhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lMDMwNDFmOTVlYWM0MTljYmEzNDJhOWU2YmI2MWFkZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80OTgyZDgwMjY3YTM0NzRhOWZmNTRkNzI5NzYzMTJmMyA9ICQoJzxkaXYgaWQ9Imh0bWxfNDk4MmQ4MDI2N2EzNDc0YTlmZjU0ZDcyOTc2MzEyZjMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkRSVUcvTkFSQ09USUM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2UwMzA0MWY5NWVhYzQxOWNiYTM0MmE5ZTZiYjYxYWRlLnNldENvbnRlbnQoaHRtbF80OTgyZDgwMjY3YTM0NzRhOWZmNTRkNzI5NzYzMTJmMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzBhMWZhM2NlMDI2NDQ1ODZhNTg2NWM4YmQ0YzdkMmVhLmJpbmRQb3B1cChwb3B1cF9lMDMwNDFmOTVlYWM0MTljYmEzNDJhOWU2YmI2MWFkZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl81MTIyMmMwMGExYzI0Mzk5ODM2YjAzZmM2ZmNhMDk3MSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NjAxNjAxMTQxMDMsLTEyMi40MDM2NDQ2MjA0MzldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iY2Q0Nzk1ZmVmNDE0Yzk5OGVjODJlNjhiYjNmMGY2YSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iMDhkNTY5ZjAzYjk0ZGIyOTg2ZGJmYmYxZTlmZjY1MSA9ICQoJzxkaXYgaWQ9Imh0bWxfYjA4ZDU2OWYwM2I5NGRiMjk4NmRiZmJmMWU5ZmY2NTEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iY2Q0Nzk1ZmVmNDE0Yzk5OGVjODJlNjhiYjNmMGY2YS5zZXRDb250ZW50KGh0bWxfYjA4ZDU2OWYwM2I5NGRiMjk4NmRiZmJmMWU5ZmY2NTEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81MTIyMmMwMGExYzI0Mzk5ODM2YjAzZmM2ZmNhMDk3MS5iaW5kUG9wdXAocG9wdXBfYmNkNDc5NWZlZjQxNGM5OThlYzgyZTY4YmIzZjBmNmEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZWZkY2Q5MDg0ZGMyNGNmMmI4MGVhZDAxMjdjOWY3ODMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjYwMTYwMTE0MTAzLC0xMjIuNDAzNjQ0NjIwNDM5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWE1NmRmMDI5MDA3NDk4Zjg3ZThjNjM0NTZkNDQxMmIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjdmMDBkMzI5ODA0NDRjOTgxMzRjNjkyMTUzZjdmOTAgPSAkKCc8ZGl2IGlkPSJodG1sX2I3ZjAwZDMyOTgwNDQ0Yzk4MTM0YzY5MjE1M2Y3ZjkwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMWE1NmRmMDI5MDA3NDk4Zjg3ZThjNjM0NTZkNDQxMmIuc2V0Q29udGVudChodG1sX2I3ZjAwZDMyOTgwNDQ0Yzk4MTM0YzY5MjE1M2Y3ZjkwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZWZkY2Q5MDg0ZGMyNGNmMmI4MGVhZDAxMjdjOWY3ODMuYmluZFBvcHVwKHBvcHVwXzFhNTZkZjAyOTAwNzQ5OGY4N2U4YzYzNDU2ZDQ0MTJiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2MxZmRjNjM5NDY0OTQ1YzhiZDA4ZTFmMGNkMjhjODJjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWRlODU3MjdiZmI2NGJlNWI1YTkyMzM2YzM2NTAyYWMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTQ5MDg4ZDc4YzkyNDQ4NmE5MmUwOGMyMDBiOTAzZGEgPSAkKCc8ZGl2IGlkPSJodG1sXzU0OTA4OGQ3OGM5MjQ0ODZhOTJlMDhjMjAwYjkwM2RhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xZGU4NTcyN2JmYjY0YmU1YjVhOTIzMzZjMzY1MDJhYy5zZXRDb250ZW50KGh0bWxfNTQ5MDg4ZDc4YzkyNDQ4NmE5MmUwOGMyMDBiOTAzZGEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jMWZkYzYzOTQ2NDk0NWM4YmQwOGUxZjBjZDI4YzgyYy5iaW5kUG9wdXAocG9wdXBfMWRlODU3MjdiZmI2NGJlNWI1YTkyMzM2YzM2NTAyYWMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNmU1NmUzZDNhYWU2NDAyZGI3Yzc0YjQ1NDJlNjVlZGIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzYyMzEwNDA0NzU4LC0xMjIuNDE0NzE0Mjk1NTc4OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84MTQzNGM1MmJiMWU0NGM5YWU3YzExNzQzNjliZDg4MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zMmE4YTRmM2M2ZmU0OTdlOGIwNzg0M2I1OGQxMWNlYyA9ICQoJzxkaXYgaWQ9Imh0bWxfMzJhOGE0ZjNjNmZlNDk3ZThiMDc4NDNiNThkMTFjZWMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84MTQzNGM1MmJiMWU0NGM5YWU3YzExNzQzNjliZDg4Mi5zZXRDb250ZW50KGh0bWxfMzJhOGE0ZjNjNmZlNDk3ZThiMDc4NDNiNThkMTFjZWMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82ZTU2ZTNkM2FhZTY0MDJkYjdjNzRiNDU0MmU2NWVkYi5iaW5kUG9wdXAocG9wdXBfODE0MzRjNTJiYjFlNDRjOWFlN2MxMTc0MzY5YmQ4ODIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZjNlODZhZjM4NDcyNGZjOWEzYWNiZWU0YmRmMmY5MzEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Nzc1MTE4ODk1Njk1LC0xMjIuNDE4MDQ1NDUyNzY4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTdjNjYxYTMxOWE2NGZmOGIxNmI2NDE5MzQwMWMxMTIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZmM4ZTkzYzNiY2Y5NDI1ZmE4YTIyNGFiMjI0MjRiZTUgPSAkKCc8ZGl2IGlkPSJodG1sX2ZjOGU5M2MzYmNmOTQyNWZhOGEyMjRhYjIyNDI0YmU1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xN2M2NjFhMzE5YTY0ZmY4YjE2YjY0MTkzNDAxYzExMi5zZXRDb250ZW50KGh0bWxfZmM4ZTkzYzNiY2Y5NDI1ZmE4YTIyNGFiMjI0MjRiZTUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mM2U4NmFmMzg0NzI0ZmM5YTNhY2JlZTRiZGYyZjkzMS5iaW5kUG9wdXAocG9wdXBfMTdjNjYxYTMxOWE2NGZmOGIxNmI2NDE5MzQwMWMxMTIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDI1NDg4OTdiYzkwNDkzNmEwNGQyNWY3NjBhMDNmNjUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIwMjM4NDc4OTc1LC0xMjIuNDAxMTYxNTU1NjAyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDZhMjkzYTBmZmE4NDQxMTgxNDJiZGIzOWExMTk4YjkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDQ0NzZlOTQzYzVhNDA1NzhlMzI3YmJkOTk5YzljNjQgPSAkKCc8ZGl2IGlkPSJodG1sXzA0NDc2ZTk0M2M1YTQwNTc4ZTMyN2JiZDk5OWM5YzY0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZDZhMjkzYTBmZmE4NDQxMTgxNDJiZGIzOWExMTk4Yjkuc2V0Q29udGVudChodG1sXzA0NDc2ZTk0M2M1YTQwNTc4ZTMyN2JiZDk5OWM5YzY0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZDI1NDg4OTdiYzkwNDkzNmEwNGQyNWY3NjBhMDNmNjUuYmluZFBvcHVwKHBvcHVwX2Q2YTI5M2EwZmZhODQ0MTE4MTQyYmRiMzlhMTE5OGI5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzA5NWZhNzhkOTZlZTRjYTI5Y2RmZTk2Yzg2ODIzNGVjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI3MDA1MzE5NjI5OTk1LC0xMjIuNDAzNDA4NjY5MTkxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNGU2MWNlMjk1ZWQ3NDIyN2IzOTc2NDJlZDUyYzBmOGMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTgwNzg4MzliMTQ3NDgyMDk5MTA2YWMyYjNkYmJhNzkgPSAkKCc8ZGl2IGlkPSJodG1sXzE4MDc4ODM5YjE0NzQ4MjA5OTEwNmFjMmIzZGJiYTc5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNGU2MWNlMjk1ZWQ3NDIyN2IzOTc2NDJlZDUyYzBmOGMuc2V0Q29udGVudChodG1sXzE4MDc4ODM5YjE0NzQ4MjA5OTEwNmFjMmIzZGJiYTc5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMDk1ZmE3OGQ5NmVlNGNhMjljZGZlOTZjODY4MjM0ZWMuYmluZFBvcHVwKHBvcHVwXzRlNjFjZTI5NWVkNzQyMjdiMzk3NjQyZWQ1MmMwZjhjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzY1ZWYxYmUyNjRlZDRhOWRiODg0MWFmOGEwMmIwNzRhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzVlZjA2ZWUzMWZhYTQ2NjQ5OTFkZWI4OWRjOWIwYjRhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzZkZGQ0YTk5MzYwMjQxYWI4M2RlZjAyZTUyYmU3ZWMyID0gJCgnPGRpdiBpZD0iaHRtbF82ZGRkNGE5OTM2MDI0MWFiODNkZWYwMmU1MmJlN2VjMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81ZWYwNmVlMzFmYWE0NjY0OTkxZGViODlkYzliMGI0YS5zZXRDb250ZW50KGh0bWxfNmRkZDRhOTkzNjAyNDFhYjgzZGVmMDJlNTJiZTdlYzIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82NWVmMWJlMjY0ZWQ0YTlkYjg4NDFhZjhhMDJiMDc0YS5iaW5kUG9wdXAocG9wdXBfNWVmMDZlZTMxZmFhNDY2NDk5MWRlYjg5ZGM5YjBiNGEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfY2QwN2Y4YzU2ODFlNDUwYTkyNTU0MzlmMDQyZjM5MDkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTMwMTg2NTM3NDQ2MDQsLTEyMi40MTg1ODcxNzIyMTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jMWM1ZjhiZGU4NDk0MDBiYmJkMmM1MjU3NDk2Y2E5YiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85NTRhM2ViMzExMjg0Mjg0YWRmNTdhODA1ZTk2OTdiMiA9ICQoJzxkaXYgaWQ9Imh0bWxfOTU0YTNlYjMxMTI4NDI4NGFkZjU3YTgwNWU5Njk3YjIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzFjNWY4YmRlODQ5NDAwYmJiZDJjNTI1NzQ5NmNhOWIuc2V0Q29udGVudChodG1sXzk1NGEzZWIzMTEyODQyODRhZGY1N2E4MDVlOTY5N2IyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfY2QwN2Y4YzU2ODFlNDUwYTkyNTU0MzlmMDQyZjM5MDkuYmluZFBvcHVwKHBvcHVwX2MxYzVmOGJkZTg0OTQwMGJiYmQyYzUyNTc0OTZjYTliKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzY2NWRlYTliNjBkMzQ1YWJhZjEyNzYzM2E0YjViZjIzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc0MDQxODM4NTA0MSwtMTIyLjQxNDM3MDYyNzQ5NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Y5OWFiMzc2ZDE3YjQyOGY4YWI5MjFjODBjZjMyYThlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzkwNThlODQwNWM5NDQ5ZmViOTQ4ODc4YjNlZWMwZTQxID0gJCgnPGRpdiBpZD0iaHRtbF85MDU4ZTg0MDVjOTQ0OWZlYjk0ODg3OGIzZWVjMGU0MSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RlJBVUQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Y5OWFiMzc2ZDE3YjQyOGY4YWI5MjFjODBjZjMyYThlLnNldENvbnRlbnQoaHRtbF85MDU4ZTg0MDVjOTQ0OWZlYjk0ODg3OGIzZWVjMGU0MSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzY2NWRlYTliNjBkMzQ1YWJhZjEyNzYzM2E0YjViZjIzLmJpbmRQb3B1cChwb3B1cF9mOTlhYjM3NmQxN2I0MjhmOGFiOTIxYzgwY2YzMmE4ZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mNTE4ZDNhNTllYzA0YzYzOWE2ZWY4ZmM2ZDRhNWViZCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5MDUzODk5MzcyNSwtMTIyLjQwMzkxNTY4MTU3MTAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzEyZTllOWU0Yjc2NDgzZjhjODA3YTA5M2FmNDQxZmIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTk2YTYzNDcxYzZjNDYwNjgwMzhkNzhjNzEyYmY0MTcgPSAkKCc8ZGl2IGlkPSJodG1sX2E5NmE2MzQ3MWM2YzQ2MDY4MDM4ZDc4YzcxMmJmNDE3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zMTJlOWU5ZTRiNzY0ODNmOGM4MDdhMDkzYWY0NDFmYi5zZXRDb250ZW50KGh0bWxfYTk2YTYzNDcxYzZjNDYwNjgwMzhkNzhjNzEyYmY0MTcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mNTE4ZDNhNTllYzA0YzYzOWE2ZWY4ZmM2ZDRhNWViZC5iaW5kUG9wdXAocG9wdXBfMzEyZTllOWU0Yjc2NDgzZjhjODA3YTA5M2FmNDQxZmIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMjI3YTk0MmI5Mjc3NDlhMmFkMDdlYmQyODU0MzVjYWQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODMwOTk4MjQ0NTkyMSwtMTIyLjQxOTE4MzA5NjM2Ml0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2QxNjgxYThkYWM3NDQyNzA5MGE1YzQ0Mzc3MDUyMmU1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzIzNTlmNTZmYTYwMDQxZmM5ZTAwZTViMDZkZjM4Y2JkID0gJCgnPGRpdiBpZD0iaHRtbF8yMzU5ZjU2ZmE2MDA0MWZjOWUwMGU1YjA2ZGYzOGNiZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2QxNjgxYThkYWM3NDQyNzA5MGE1YzQ0Mzc3MDUyMmU1LnNldENvbnRlbnQoaHRtbF8yMzU5ZjU2ZmE2MDA0MWZjOWUwMGU1YjA2ZGYzOGNiZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzIyN2E5NDJiOTI3NzQ5YTJhZDA3ZWJkMjg1NDM1Y2FkLmJpbmRQb3B1cChwb3B1cF9kMTY4MWE4ZGFjNzQ0MjcwOTBhNWM0NDM3NzA1MjJlNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8zNzBkMzhiMzA4Mjc0MTM4OTIwZTI3OGNlZmE2YjY1NSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0MDczNjA1NDgzNTc5LC0xMjIuMzg4NzUzMDQ2OTk3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYWNiNmNhMDYwZTIwNDE4YWI0MGFlN2Y3NmZlNTMwMDEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzM3OTdhMTUxMDEzNDNhZjllNzEwOTMxZTQ3YThhMTMgPSAkKCc8ZGl2IGlkPSJodG1sX2MzNzk3YTE1MTAxMzQzYWY5ZTcxMDkzMWU0N2E4YTEzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYWNiNmNhMDYwZTIwNDE4YWI0MGFlN2Y3NmZlNTMwMDEuc2V0Q29udGVudChodG1sX2MzNzk3YTE1MTAxMzQzYWY5ZTcxMDkzMWU0N2E4YTEzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMzcwZDM4YjMwODI3NDEzODkyMGUyNzhjZWZhNmI2NTUuYmluZFBvcHVwKHBvcHVwX2FjYjZjYTA2MGUyMDQxOGFiNDBhZTdmNzZmZTUzMDAxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQwYmY3MDliY2NhNjQwZDBiM2MzM2I2YzQxZDRlMWVhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc0OTkxMjk0NDM2NiwtMTIyLjQzNzc5OTcwMzQ2OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzI1ZGVkMzAwYzYxNDQyM2U5NjJjNjIwOWIxNDlhOGQ5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2ZjNWU0OGFhMjcxZjRmODM5MjU4YzM1ZDNjMzdhNDhmID0gJCgnPGRpdiBpZD0iaHRtbF9mYzVlNDhhYTI3MWY0ZjgzOTI1OGMzNWQzYzM3YTQ4ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjVkZWQzMDBjNjE0NDIzZTk2MmM2MjA5YjE0OWE4ZDkuc2V0Q29udGVudChodG1sX2ZjNWU0OGFhMjcxZjRmODM5MjU4YzM1ZDNjMzdhNDhmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDBiZjcwOWJjY2E2NDBkMGIzYzMzYjZjNDFkNGUxZWEuYmluZFBvcHVwKHBvcHVwXzI1ZGVkMzAwYzYxNDQyM2U5NjJjNjIwOWIxNDlhOGQ5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzY4MmZhNWEwYjNiNDQxOWFiNDk1ZmVjZGEyZjg4NWM3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3MDkwMjc0MzY2OSwtMTIyLjQyMTMzMjY4NDYzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzBmYzY3NmFkZDA2NTQ2M2RhN2M2NDdjMzRhZTgyMzhjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzgwM2U1M2FjMGMyNDRkNmZiZjNmZmE0YTE1N2Y3MjU2ID0gJCgnPGRpdiBpZD0iaHRtbF84MDNlNTNhYzBjMjQ0ZDZmYmYzZmZhNGExNTdmNzI1NiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzBmYzY3NmFkZDA2NTQ2M2RhN2M2NDdjMzRhZTgyMzhjLnNldENvbnRlbnQoaHRtbF84MDNlNTNhYzBjMjQ0ZDZmYmYzZmZhNGExNTdmNzI1Nik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzY4MmZhNWEwYjNiNDQxOWFiNDk1ZmVjZGEyZjg4NWM3LmJpbmRQb3B1cChwb3B1cF8wZmM2NzZhZGQwNjU0NjNkYTdjNjQ3YzM0YWU4MjM4Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9lOWM5M2EzMThhOTY0ZjlkYWU2ZjEzZmU0ZWNmYTg0ZCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzA5MDI3NDM2NjksLTEyMi40MjEzMzI2ODQ2MzNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84Y2FiMThiNjE3MDM0MGQxYWI1ZTI4ZjY2ZWUzYThhZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83M2YwZmE0NjgwODI0NDRlOGM3NmUzODk5NmViOTJlYiA9ICQoJzxkaXYgaWQ9Imh0bWxfNzNmMGZhNDY4MDgyNDQ0ZThjNzZlMzg5OTZlYjkyZWIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84Y2FiMThiNjE3MDM0MGQxYWI1ZTI4ZjY2ZWUzYThhZS5zZXRDb250ZW50KGh0bWxfNzNmMGZhNDY4MDgyNDQ0ZThjNzZlMzg5OTZlYjkyZWIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lOWM5M2EzMThhOTY0ZjlkYWU2ZjEzZmU0ZWNmYTg0ZC5iaW5kUG9wdXAocG9wdXBfOGNhYjE4YjYxNzAzNDBkMWFiNWUyOGY2NmVlM2E4YWUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfY2QzZTQyNGM5NWI2NDAxNThlNDRjNmY2MWQ1OTk4ZDggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMmIxZWNkNTc1NDAyNDMzN2I4NDI3ODY1M2QyZTZkODEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTY2OTcxMmFlM2IxNDNiMDg5ZTEwMzllYTNkYzA1ZGIgPSAkKCc8ZGl2IGlkPSJodG1sX2U2Njk3MTJhZTNiMTQzYjA4OWUxMDM5ZWEzZGMwNWRiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMmIxZWNkNTc1NDAyNDMzN2I4NDI3ODY1M2QyZTZkODEuc2V0Q29udGVudChodG1sX2U2Njk3MTJhZTNiMTQzYjA4OWUxMDM5ZWEzZGMwNWRiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfY2QzZTQyNGM5NWI2NDAxNThlNDRjNmY2MWQ1OTk4ZDguYmluZFBvcHVwKHBvcHVwXzJiMWVjZDU3NTQwMjQzMzdiODQyNzg2NTNkMmU2ZDgxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2U0ZDRiM2M3M2I3MzQ3MTk5NGFhY2FiZDNlZDA2NmRiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwMDM3OTk5NTEyNzk1LC0xMjIuNDA0NTk0MTQwNjM0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjY5NGViZTQwZjQwNGUyNThiYWY3YzlmYTQ0MzNmN2YgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDA0OWNhOTZlYWY2NDUxYTk1N2IwM2VjNjRmNjg4NTAgPSAkKCc8ZGl2IGlkPSJodG1sX2QwNDljYTk2ZWFmNjQ1MWE5NTdiMDNlYzY0ZjY4ODUwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzY2OTRlYmU0MGY0MDRlMjU4YmFmN2M5ZmE0NDMzZjdmLnNldENvbnRlbnQoaHRtbF9kMDQ5Y2E5NmVhZjY0NTFhOTU3YjAzZWM2NGY2ODg1MCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2U0ZDRiM2M3M2I3MzQ3MTk5NGFhY2FiZDNlZDA2NmRiLmJpbmRQb3B1cChwb3B1cF82Njk0ZWJlNDBmNDA0ZTI1OGJhZjdjOWZhNDQzM2Y3Zik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82M2YwMzNjYmQ4Mjc0MDMzYjI2YTgwNmEyMDI5MDAwMSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5NTMzMzgyNjc0MzYsLTEyMi4zOTczNzM3NDAwNjZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iM2NmZjdiZTQ3NzY0YmQzOWM0YjE2NzVlODEzMDAzOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yYmM4YmNlZDFkMTg0MzQ2OWRiYTk4NzVkOGJjZmEwOSA9ICQoJzxkaXYgaWQ9Imh0bWxfMmJjOGJjZWQxZDE4NDM0NjlkYmE5ODc1ZDhiY2ZhMDkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjNjZmY3YmU0Nzc2NGJkMzljNGIxNjc1ZTgxMzAwMzguc2V0Q29udGVudChodG1sXzJiYzhiY2VkMWQxODQzNDY5ZGJhOTg3NWQ4YmNmYTA5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNjNmMDMzY2JkODI3NDAzM2IyNmE4MDZhMjAyOTAwMDEuYmluZFBvcHVwKHBvcHVwX2IzY2ZmN2JlNDc3NjRiZDM5YzRiMTY3NWU4MTMwMDM4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzhjYTk4YzRlZTEzMTQ4ZGJhNmM1MWZmODJhZDVlM2Q5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3NTE1ODc0MTYyMjk1LC0xMjIuNDA3NDM0OTg5NTIzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzBlMWIwNmUzMjNkNGU4NTk1ZjFhODZlNTBiNDUyNjcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDgzOTI3YTAyYzlmNDNmNTk5NDU0ZTRmN2VhMzc2NWMgPSAkKCc8ZGl2IGlkPSJodG1sXzQ4MzkyN2EwMmM5ZjQzZjU5OTQ1NGU0ZjdlYTM3NjVjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzBlMWIwNmUzMjNkNGU4NTk1ZjFhODZlNTBiNDUyNjcuc2V0Q29udGVudChodG1sXzQ4MzkyN2EwMmM5ZjQzZjU5OTQ1NGU0ZjdlYTM3NjVjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOGNhOThjNGVlMTMxNDhkYmE2YzUxZmY4MmFkNWUzZDkuYmluZFBvcHVwKHBvcHVwX2MwZTFiMDZlMzIzZDRlODU5NWYxYTg2ZTUwYjQ1MjY3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzRkODUyYmViOTI4NjRiY2FiMjY4ZTAwYjBiZjI4ZGIwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Q2MTEwM2RiZmMyODQ3N2ViNjI4NGQwYmM0NjNhOGM2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNjZjYxZWZlYmQ5ZDRjZjc5OWZiY2E4Zjg1N2E4OWI1ID0gJCgnPGRpdiBpZD0iaHRtbF8zY2Y2MWVmZWJkOWQ0Y2Y3OTlmYmNhOGY4NTdhODliNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UFJPU1RJVFVUSU9OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kNjExMDNkYmZjMjg0NzdlYjYyODRkMGJjNDYzYThjNi5zZXRDb250ZW50KGh0bWxfM2NmNjFlZmViZDlkNGNmNzk5ZmJjYThmODU3YTg5YjUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80ZDg1MmJlYjkyODY0YmNhYjI2OGUwMGIwYmYyOGRiMC5iaW5kUG9wdXAocG9wdXBfZDYxMTAzZGJmYzI4NDc3ZWI2Mjg0ZDBiYzQ2M2E4YzYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOGQwMjZlYjFkMzRjNGQzZTkxYWIxODE4MTRhYTM4ZWYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Nzg1MjMzNzc2MDMyLC0xMjIuNDAzNDY0MDgwMDMzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWM0ZjhlMWZhODhhNDhiYWI3ODUwNGZlMTBjYTFiOTEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODllMzdiZjQ3MmJjNGEzM2I3ZDM1MmJjNjdlNDQ0YTAgPSAkKCc8ZGl2IGlkPSJodG1sXzg5ZTM3YmY0NzJiYzRhMzNiN2QzNTJiYzY3ZTQ0NGEwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMWM0ZjhlMWZhODhhNDhiYWI3ODUwNGZlMTBjYTFiOTEuc2V0Q29udGVudChodG1sXzg5ZTM3YmY0NzJiYzRhMzNiN2QzNTJiYzY3ZTQ0NGEwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOGQwMjZlYjFkMzRjNGQzZTkxYWIxODE4MTRhYTM4ZWYuYmluZFBvcHVwKHBvcHVwXzFjNGY4ZTFmYTg4YTQ4YmFiNzg1MDRmZTEwY2ExYjkxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2Y0Mjg0OWRiOTgzZDQ5MDY4ZmQ4OTYwZGI2ZWJiNWQyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81NTdmNTNhMWI2YzI0NjIyYWJhOTMwNDQ3MThjMWNlYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81NjNlMmM3NmZjMWE0NjZiYWQwZjE2MjE0OTgwOWU1MyA9ICQoJzxkaXYgaWQ9Imh0bWxfNTYzZTJjNzZmYzFhNDY2YmFkMGYxNjIxNDk4MDllNTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTU3ZjUzYTFiNmMyNDYyMmFiYTkzMDQ0NzE4YzFjZWIuc2V0Q29udGVudChodG1sXzU2M2UyYzc2ZmMxYTQ2NmJhZDBmMTYyMTQ5ODA5ZTUzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZjQyODQ5ZGI5ODNkNDkwNjhmZDg5NjBkYjZlYmI1ZDIuYmluZFBvcHVwKHBvcHVwXzU1N2Y1M2ExYjZjMjQ2MjJhYmE5MzA0NDcxOGMxY2ViKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzc0OWUwMmNhMTYwZTRhMjZiMDAwN2I4NTAyNzYzYTNjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgwNTI3NTc4NTA5LC0xMjIuMzk2ODQ5MDE1MTcyMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84ZTMwNmZkMDA2N2U0ZDU2YTAwODdlYjZkYjA5ZjE1YyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wNzEyNTYzZjM3YTQ0MmNlOWY0MzUxZWQxYmUyYjU1ZCA9ICQoJzxkaXYgaWQ9Imh0bWxfMDcxMjU2M2YzN2E0NDJjZTlmNDM1MWVkMWJlMmI1NWQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkRSVUcvTkFSQ09USUM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzhlMzA2ZmQwMDY3ZTRkNTZhMDA4N2ViNmRiMDlmMTVjLnNldENvbnRlbnQoaHRtbF8wNzEyNTYzZjM3YTQ0MmNlOWY0MzUxZWQxYmUyYjU1ZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzc0OWUwMmNhMTYwZTRhMjZiMDAwN2I4NTAyNzYzYTNjLmJpbmRQb3B1cChwb3B1cF84ZTMwNmZkMDA2N2U0ZDU2YTAwODdlYjZkYjA5ZjE1Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82YWMxMjkzNzUzYzk0YTM1YWRhNmIyYTVhNjhhYTUyYyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfM2NjNTZhODkzOGQ2NDQwNWFmMzc3YTFjYTc0NTIwYTUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjE5NjY5NjVlNDFlNDNlNjhiYmQ5MWI5ZDhmMTYyMjYgPSAkKCc8ZGl2IGlkPSJodG1sXzYxOTY2OTY1ZTQxZTQzZTY4YmJkOTFiOWQ4ZjE2MjI2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfM2NjNTZhODkzOGQ2NDQwNWFmMzc3YTFjYTc0NTIwYTUuc2V0Q29udGVudChodG1sXzYxOTY2OTY1ZTQxZTQzZTY4YmJkOTFiOWQ4ZjE2MjI2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNmFjMTI5Mzc1M2M5NGEzNWFkYTZiMmE1YTY4YWE1MmMuYmluZFBvcHVwKHBvcHVwXzNjYzU2YTg5MzhkNjQ0MDVhZjM3N2ExY2E3NDUyMGE1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQxNTE3ZmMyMmFjNTQwMjBhY2Q1OTk4N2Q2M2M3ODIyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjY2M2I5YWQ5M2FkNGY4OGI0YzMwNTI2MjExODRhY2IgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYmU1YTcwODZjMmEzNDU3NDkyZjE3NGRkZmUyZGM0NDIgPSAkKCc8ZGl2IGlkPSJodG1sX2JlNWE3MDg2YzJhMzQ1NzQ5MmYxNzRkZGZlMmRjNDQyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iNjYzYjlhZDkzYWQ0Zjg4YjRjMzA1MjYyMTE4NGFjYi5zZXRDb250ZW50KGh0bWxfYmU1YTcwODZjMmEzNDU3NDkyZjE3NGRkZmUyZGM0NDIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80MTUxN2ZjMjJhYzU0MDIwYWNkNTk5ODdkNjNjNzgyMi5iaW5kUG9wdXAocG9wdXBfYjY2M2I5YWQ5M2FkNGY4OGI0YzMwNTI2MjExODRhY2IpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYmQzNGM5OTcwYmRiNGI2MTllYzE5ZWU0MzFjZjY1ZDkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZTc5MTFjY2FkMWQ0NDdjYThlM2IzMTUzOGQzOTcwYzIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjk5ODg0MTA0NWE1NDc0NWE4NDg0MzVmYjc1ZTg1ZTggPSAkKCc8ZGl2IGlkPSJodG1sXzI5OTg4NDEwNDVhNTQ3NDVhODQ4NDM1ZmI3NWU4NWU4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTc5MTFjY2FkMWQ0NDdjYThlM2IzMTUzOGQzOTcwYzIuc2V0Q29udGVudChodG1sXzI5OTg4NDEwNDVhNTQ3NDVhODQ4NDM1ZmI3NWU4NWU4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYmQzNGM5OTcwYmRiNGI2MTllYzE5ZWU0MzFjZjY1ZDkuYmluZFBvcHVwKHBvcHVwX2U3OTExY2NhZDFkNDQ3Y2E4ZTNiMzE1MzhkMzk3MGMyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzA2ODc4ZDRlYTUzYzRkNGVhYjU5ZDUzMzVjYTZiZThlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg4MDA2NTMyNDM5MjA1LC0xMjIuMzk5ODAyMTQ1Nzk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDljNDEyNDBlNmExNDVmODgxMThjY2RkNTdjYmJlYTEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzFiN2FhNjdlMDgyNGQ2NjgxZWY4MDQyYWZmOTRlZDkgPSAkKCc8ZGl2IGlkPSJodG1sX2MxYjdhYTY3ZTA4MjRkNjY4MWVmODA0MmFmZjk0ZWQ5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kOWM0MTI0MGU2YTE0NWY4ODExOGNjZGQ1N2NiYmVhMS5zZXRDb250ZW50KGh0bWxfYzFiN2FhNjdlMDgyNGQ2NjgxZWY4MDQyYWZmOTRlZDkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wNjg3OGQ0ZWE1M2M0ZDRlYWI1OWQ1MzM1Y2E2YmU4ZS5iaW5kUG9wdXAocG9wdXBfZDljNDEyNDBlNmExNDVmODgxMThjY2RkNTdjYmJlYTEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOGFhYzdlZWE3YmUwNDdhYjg0OGU5MzE1NjdhNzQ1MGMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzhjNDAxMDE5Y2NkYzRjZjhiYjQ1NmJiMjNiNTE3ODU4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2E5MDRiZTMxZjE5NDQ2ODk5MDBiNDVjOTE3MzYxYTgwID0gJCgnPGRpdiBpZD0iaHRtbF9hOTA0YmUzMWYxOTQ0Njg5OTAwYjQ1YzkxNzM2MWE4MCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U0VDT05EQVJZIENPREVTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84YzQwMTAxOWNjZGM0Y2Y4YmI0NTZiYjIzYjUxNzg1OC5zZXRDb250ZW50KGh0bWxfYTkwNGJlMzFmMTk0NDY4OTkwMGI0NWM5MTczNjFhODApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84YWFjN2VlYTdiZTA0N2FiODQ4ZTkzMTU2N2E3NDUwYy5iaW5kUG9wdXAocG9wdXBfOGM0MDEwMTljY2RjNGNmOGJiNDU2YmIyM2I1MTc4NTgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMDJjMjgxZDI0ODhjNDYyOWJkYWU5ODRlMjk4N2NjYjAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzhmYjI1NGM3MTdhYTRkNzViMGM1ZGQ4NDY4ZWU1ZGI4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2VmNzg2ZWFiZTBiNDRmMTNhOTYyMmM4YjNjZTEyZTUxID0gJCgnPGRpdiBpZD0iaHRtbF9lZjc4NmVhYmUwYjQ0ZjEzYTk2MjJjOGIzY2UxMmU1MSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U1VTUElDSU9VUyBPQ0M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzhmYjI1NGM3MTdhYTRkNzViMGM1ZGQ4NDY4ZWU1ZGI4LnNldENvbnRlbnQoaHRtbF9lZjc4NmVhYmUwYjQ0ZjEzYTk2MjJjOGIzY2UxMmU1MSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzAyYzI4MWQyNDg4YzQ2MjliZGFlOTg0ZTI5ODdjY2IwLmJpbmRQb3B1cChwb3B1cF84ZmIyNTRjNzE3YWE0ZDc1YjBjNWRkODQ2OGVlNWRiOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yNmIxOWQ1M2NlYmM0MDI4OWI1ZjFhYTBmODVkMzZlNCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMzk3NDgyNDE2MDksLTEyMi4zOTQ5Mjg0NzU4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjBmYzQ4ZmVmYjExNDE4MGJhYWU1ODBlMTNmZjU2ZmMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZmJkZWY5NTQ3MTcyNDNjNTk5ODBkMDBmZjExNjk2MzggPSAkKCc8ZGl2IGlkPSJodG1sX2ZiZGVmOTU0NzE3MjQzYzU5OTgwZDAwZmYxMTY5NjM4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjBmYzQ4ZmVmYjExNDE4MGJhYWU1ODBlMTNmZjU2ZmMuc2V0Q29udGVudChodG1sX2ZiZGVmOTU0NzE3MjQzYzU5OTgwZDAwZmYxMTY5NjM4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMjZiMTlkNTNjZWJjNDAyODliNWYxYWEwZjg1ZDM2ZTQuYmluZFBvcHVwKHBvcHVwX2YwZmM0OGZlZmIxMTQxODBiYWFlNTgwZTEzZmY1NmZjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzBmMzBiNDI1ZTk4ZDQxZTk4Y2EyZmE5NGU1MTNkMWM3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg4MzIzNTQ0OTkwNCwtMTIyLjQxMTg1NzAzMjU0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZGU4NWYwZjFhYzY3NGEyN2E2YzBjNjYwMmRhYmU1NWQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTAwNzgzMDkzNGQxNDkzZDljYmIzZWZiMTYxMmRiMTkgPSAkKCc8ZGl2IGlkPSJodG1sXzUwMDc4MzA5MzRkMTQ5M2Q5Y2JiM2VmYjE2MTJkYjE5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kZTg1ZjBmMWFjNjc0YTI3YTZjMGM2NjAyZGFiZTU1ZC5zZXRDb250ZW50KGh0bWxfNTAwNzgzMDkzNGQxNDkzZDljYmIzZWZiMTYxMmRiMTkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wZjMwYjQyNWU5OGQ0MWU5OGNhMmZhOTRlNTEzZDFjNy5iaW5kUG9wdXAocG9wdXBfZGU4NWYwZjFhYzY3NGEyN2E2YzBjNjYwMmRhYmU1NWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNTZjOGNkNGE4NDU2NGU4Y2E4YjBiNDIzOWJmYzE4NDEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTU5OTc3MzM5ODU2LC0xMjIuNDA5NDM1NjE3MTA2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMThhNDQ1N2E2NDVhNDkwN2I3ZDk3OTRlODZiMzZlNTcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjA5MjllNTIzYmRkNDNkYWI3MzMyOTNjMDU2ZDIyMjMgPSAkKCc8ZGl2IGlkPSJodG1sX2IwOTI5ZTUyM2JkZDQzZGFiNzMzMjkzYzA1NmQyMjIzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMThhNDQ1N2E2NDVhNDkwN2I3ZDk3OTRlODZiMzZlNTcuc2V0Q29udGVudChodG1sX2IwOTI5ZTUyM2JkZDQzZGFiNzMzMjkzYzA1NmQyMjIzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNTZjOGNkNGE4NDU2NGU4Y2E4YjBiNDIzOWJmYzE4NDEuYmluZFBvcHVwKHBvcHVwXzE4YTQ0NTdhNjQ1YTQ5MDdiN2Q5Nzk0ZTg2YjM2ZTU3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQ0ZWQ4ZGEzYjlkYTRkNGZhMDEzYTJkNGRiYjJmZTMxID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3MDc5ODE0NDQ0MywtMTIyLjQyNTg4MzM1ODE0OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzY1MTkwMzc0NGZlZjQ4YzA4ZjBmMDQwNGM3ZjQxZTgxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc3ZjBmMWQwNDc2ODQ2NmI5M2FiNmFkMWM1ODg4ZmE3ID0gJCgnPGRpdiBpZD0iaHRtbF83N2YwZjFkMDQ3Njg0NjZiOTNhYjZhZDFjNTg4OGZhNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82NTE5MDM3NDRmZWY0OGMwOGYwZjA0MDRjN2Y0MWU4MS5zZXRDb250ZW50KGh0bWxfNzdmMGYxZDA0NzY4NDY2YjkzYWI2YWQxYzU4ODhmYTcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80NGVkOGRhM2I5ZGE0ZDRmYTAxM2EyZDRkYmIyZmUzMS5iaW5kUG9wdXAocG9wdXBfNjUxOTAzNzQ0ZmVmNDhjMDhmMGYwNDA0YzdmNDFlODEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYTc4OTg0NjE5MWRkNGRmODkzMjNiOGM3MDk4ZDhhNmUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzYwMzc0NDY2ODYyMDQsLTEyMi40MTUxMjY1NDMwMDEwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQwMWE0YWUzNjhmMTQyNGU4YWI0MzRjN2I5MTdlN2FkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2JiYTQyMTY5MWNiZjQ5OTZiMmIwZDkyYjljZmY1NjNhID0gJCgnPGRpdiBpZD0iaHRtbF9iYmE0MjE2OTFjYmY0OTk2YjJiMGQ5MmI5Y2ZmNTYzYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80MDFhNGFlMzY4ZjE0MjRlOGFiNDM0YzdiOTE3ZTdhZC5zZXRDb250ZW50KGh0bWxfYmJhNDIxNjkxY2JmNDk5NmIyYjBkOTJiOWNmZjU2M2EpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hNzg5ODQ2MTkxZGQ0ZGY4OTMyM2I4YzcwOThkOGE2ZS5iaW5kUG9wdXAocG9wdXBfNDAxYTRhZTM2OGYxNDI0ZThhYjQzNGM3YjkxN2U3YWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzNlMWQzNjQ4YmMzNGE0YjgyYTQ2NmVmZjIxMWRkMjggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTI3Njc4ODQ4MjEsLTEyMi40MzE5MjgwMTEwODldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iZmJiMzcwOGIyYWY0NGI4YjlmZGE2NTdhZTZmZjUyYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kNjE3N2ExMjMyMzk0MTFkOWE0YTYzOWRkNDRkNjczMCA9ICQoJzxkaXYgaWQ9Imh0bWxfZDYxNzdhMTIzMjM5NDExZDlhNGE2MzlkZDQ0ZDY3MzAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iZmJiMzcwOGIyYWY0NGI4YjlmZGE2NTdhZTZmZjUyYi5zZXRDb250ZW50KGh0bWxfZDYxNzdhMTIzMjM5NDExZDlhNGE2MzlkZDQ0ZDY3MzApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8zM2UxZDM2NDhiYzM0YTRiODJhNDY2ZWZmMjExZGQyOC5iaW5kUG9wdXAocG9wdXBfYmZiYjM3MDhiMmFmNDRiOGI5ZmRhNjU3YWU2ZmY1MmIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYmEwYjFiNjkzN2U4NDkzMTg0MzM0ZTg1NzQwYmRhYjggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODk1NzEwMjU1ODYzLC0xMjIuNDAyMTYzNzEzNjE4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZTU2OTEwODZjMDhkNGI4MjhhMzkxYmRmMjZlNzk0NDAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzliNjczMzdjYjJiNGFhMGJhNzU0YTYyYjgwNWU3NmUgPSAkKCc8ZGl2IGlkPSJodG1sXzM5YjY3MzM3Y2IyYjRhYTBiYTc1NGE2MmI4MDVlNzZlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVOS0VOTkVTUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTU2OTEwODZjMDhkNGI4MjhhMzkxYmRmMjZlNzk0NDAuc2V0Q29udGVudChodG1sXzM5YjY3MzM3Y2IyYjRhYTBiYTc1NGE2MmI4MDVlNzZlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYmEwYjFiNjkzN2U4NDkzMTg0MzM0ZTg1NzQwYmRhYjguYmluZFBvcHVwKHBvcHVwX2U1NjkxMDg2YzA4ZDRiODI4YTM5MWJkZjI2ZTc5NDQwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzhmMTVhYjFlZjkzOTQ4NjFhMTU4ZjY5YTVkMzUwMzlhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U4OTc3NjY3ZDVmZjQwZGU4NDAxNGRjNThhY2RjYjMzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2YxY2Q1NjUwOTM0YTRlNzM5ZDU2NzZjNTQ0ZDQ2NTZlID0gJCgnPGRpdiBpZD0iaHRtbF9mMWNkNTY1MDkzNGE0ZTczOWQ1Njc2YzU0NGQ0NjU2ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U4OTc3NjY3ZDVmZjQwZGU4NDAxNGRjNThhY2RjYjMzLnNldENvbnRlbnQoaHRtbF9mMWNkNTY1MDkzNGE0ZTczOWQ1Njc2YzU0NGQ0NjU2ZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzhmMTVhYjFlZjkzOTQ4NjFhMTU4ZjY5YTVkMzUwMzlhLmJpbmRQb3B1cChwb3B1cF9lODk3NzY2N2Q1ZmY0MGRlODQwMTRkYzU4YWNkY2IzMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80MTY5OTBhOGZmM2I0OWZmOWU1YmY3ZDQ4NDZkODI1YiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MzgzNjU1NjUzNDc5NCwtMTIyLjQxMzc5MDk3Mjc4MDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfM2M0NDViM2VhMTMzNDJlY2I3NTdhNmZjMmViOTc3NTEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOWUxOWNjZTQxOGI5NDIxODk2MWZlYTQ5NDk5NzhjMTggPSAkKCc8ZGl2IGlkPSJodG1sXzllMTljY2U0MThiOTQyMTg5NjFmZWE0OTQ5OTc4YzE4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WQU5EQUxJU008L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzNjNDQ1YjNlYTEzMzQyZWNiNzU3YTZmYzJlYjk3NzUxLnNldENvbnRlbnQoaHRtbF85ZTE5Y2NlNDE4Yjk0MjE4OTYxZmVhNDk0OTk3OGMxOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzQxNjk5MGE4ZmYzYjQ5ZmY5ZTViZjdkNDg0NmQ4MjViLmJpbmRQb3B1cChwb3B1cF8zYzQ0NWIzZWExMzM0MmVjYjc1N2E2ZmMyZWI5Nzc1MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl81MTEwMzBhNDA0MzQ0ZDU5OTZiODQ2MjU5MTY0NDgyNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83OTc0Zjc0Y2Q4YWQ0ZmJkODQ0ZTUzMGI3ZGM1ZGYxNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83MmI5ZWNmYWI2ZTI0NmVkODA2ZGQyYTljMGE4NjMyNCA9ICQoJzxkaXYgaWQ9Imh0bWxfNzJiOWVjZmFiNmUyNDZlZDgwNmRkMmE5YzBhODYzMjQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83OTc0Zjc0Y2Q4YWQ0ZmJkODQ0ZTUzMGI3ZGM1ZGYxNi5zZXRDb250ZW50KGh0bWxfNzJiOWVjZmFiNmUyNDZlZDgwNmRkMmE5YzBhODYzMjQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81MTEwMzBhNDA0MzQ0ZDU5OTZiODQ2MjU5MTY0NDgyNS5iaW5kUG9wdXAocG9wdXBfNzk3NGY3NGNkOGFkNGZiZDg0NGU1MzBiN2RjNWRmMTYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZWNlN2E4ZTY1YzY1NDA2MmIwOTE4MTMzNjVmMmQ0YjYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzczNjIzNjA1MjEyOTYsLTEyMi40MjIwNjcxODQ5MzddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mMDFkMmRiZGVmYTQ0YzdjOTA1NmE4ZDM2YzU0MTEyYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jZTVhMWY4ODlkZDY0NWZjOTVlMGM0ODc5MDhlNTYwMiA9ICQoJzxkaXYgaWQ9Imh0bWxfY2U1YTFmODg5ZGQ2NDVmYzk1ZTBjNDg3OTA4ZTU2MDIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNFQ09OREFSWSBDT0RFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjAxZDJkYmRlZmE0NGM3YzkwNTZhOGQzNmM1NDExMmMuc2V0Q29udGVudChodG1sX2NlNWExZjg4OWRkNjQ1ZmM5NWUwYzQ4NzkwOGU1NjAyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZWNlN2E4ZTY1YzY1NDA2MmIwOTE4MTMzNjVmMmQ0YjYuYmluZFBvcHVwKHBvcHVwX2YwMWQyZGJkZWZhNDRjN2M5MDU2YThkMzZjNTQxMTJjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2E5ZjYxOWQ1MjRhMzQyYzBiYzc2NTRkODYyYjE5NTk5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDEwYWNkNGRiZjlhNGIwMGJlOTk5ZjljZWIyMDg1YWIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjEwOGFlMDZhOTQ2NGU1ZWFmZTZjY2M3NTA0MmQwZGEgPSAkKCc8ZGl2IGlkPSJodG1sX2YxMDhhZTA2YTk0NjRlNWVhZmU2Y2NjNzUwNDJkMGRhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WQU5EQUxJU008L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2QxMGFjZDRkYmY5YTRiMDBiZTk5OWY5Y2ViMjA4NWFiLnNldENvbnRlbnQoaHRtbF9mMTA4YWUwNmE5NDY0ZTVlYWZlNmNjYzc1MDQyZDBkYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2E5ZjYxOWQ1MjRhMzQyYzBiYzc2NTRkODYyYjE5NTk5LmJpbmRQb3B1cChwb3B1cF9kMTBhY2Q0ZGJmOWE0YjAwYmU5OTlmOWNlYjIwODVhYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83YmYyNWU3MTAwZTc0YWZjYTg5YTEzMWQyZDRkY2RlZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTk5ODgzMjM3OTc5NiwtMTIyLjQxMTc0NzM3MTkyNF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2ZhMTRhY2E1M2QyMDQ3NDQ4M2JjMGUzYzc0OTcxYjYwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2NmMGI5ZDAwNTIxYjRiMGI5MDczODYzZGQ1OGViOTdlID0gJCgnPGRpdiBpZD0iaHRtbF9jZjBiOWQwMDUyMWI0YjBiOTA3Mzg2M2RkNThlYjk3ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U1VTUElDSU9VUyBPQ0M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ZhMTRhY2E1M2QyMDQ3NDQ4M2JjMGUzYzc0OTcxYjYwLnNldENvbnRlbnQoaHRtbF9jZjBiOWQwMDUyMWI0YjBiOTA3Mzg2M2RkNThlYjk3ZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzdiZjI1ZTcxMDBlNzRhZmNhODlhMTMxZDJkNGRjZGVmLmJpbmRQb3B1cChwb3B1cF9mYTE0YWNhNTNkMjA0NzQ0ODNiYzBlM2M3NDk3MWI2MCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8zZTFkNWI4OTA1MzM0MDdjOGY3Mjc4ODMxY2UyOTU2YSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2I5ODE0YzU5MGExYzRjODg4MjA3YTIzYjljOGQwMzA1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2I5ZmE0OTg0NzViOTQ1ODk5NjUyMGUxNDBlMGEyZDA4ID0gJCgnPGRpdiBpZD0iaHRtbF9iOWZhNDk4NDc1Yjk0NTg5OTY1MjBlMTQwZTBhMmQwOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2I5ODE0YzU5MGExYzRjODg4MjA3YTIzYjljOGQwMzA1LnNldENvbnRlbnQoaHRtbF9iOWZhNDk4NDc1Yjk0NTg5OTY1MjBlMTQwZTBhMmQwOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzNlMWQ1Yjg5MDUzMzQwN2M4ZjcyNzg4MzFjZTI5NTZhLmJpbmRQb3B1cChwb3B1cF9iOTgxNGM1OTBhMWM0Yzg4ODIwN2EyM2I5YzhkMDMwNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9lOTE4M2Q3NGQ2ZTk0NGE2YjRmMjI1YmNmNjcwY2U3MyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTAyMjY2MjI3ODYsLTEyMi40MTE5ODc2NDM1OTUwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzhkZDdiMjVkZjY2MTRlYzhhZTUyZjI4ZDg0MTY2MTBhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzYyOGRmMDQzMmVmYTRjNWNiZGJkYTIyNWJiODg0ZGYzID0gJCgnPGRpdiBpZD0iaHRtbF82MjhkZjA0MzJlZmE0YzVjYmRiZGEyMjViYjg4NGRmMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84ZGQ3YjI1ZGY2NjE0ZWM4YWU1MmYyOGQ4NDE2NjEwYS5zZXRDb250ZW50KGh0bWxfNjI4ZGYwNDMyZWZhNGM1Y2JkYmRhMjI1YmI4ODRkZjMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lOTE4M2Q3NGQ2ZTk0NGE2YjRmMjI1YmNmNjcwY2U3My5iaW5kUG9wdXAocG9wdXBfOGRkN2IyNWRmNjYxNGVjOGFlNTJmMjhkODQxNjYxMGEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYTcwZDk4MGI4YTdjNGQ4OWFjMTBiYjNkOGEyNjJlNDEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ2MjA2NDkxMDY0OTUsLTEyMi41MDAzODA0Mjc5MTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85N2JjMDUxMmM2ZDA0MjI0YWFkZjgwMDllNjQ2NWM5ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hMTAxODA5YWNhNTI0N2RmOTE3MDk4MWJlZTBlYmE4NiA9ICQoJzxkaXYgaWQ9Imh0bWxfYTEwMTgwOWFjYTUyNDdkZjkxNzA5ODFiZWUwZWJhODYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85N2JjMDUxMmM2ZDA0MjI0YWFkZjgwMDllNjQ2NWM5ZC5zZXRDb250ZW50KGh0bWxfYTEwMTgwOWFjYTUyNDdkZjkxNzA5ODFiZWUwZWJhODYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hNzBkOTgwYjhhN2M0ZDg5YWMxMGJiM2Q4YTI2MmU0MS5iaW5kUG9wdXAocG9wdXBfOTdiYzA1MTJjNmQwNDIyNGFhZGY4MDA5ZTY0NjVjOWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYTZiZTIyNjQ5ZTAwNDg5OWIyMzVhYjkwOGI3M2FkZGIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzUxOTE4MjY3MjE3LC0xMjIuNDY2NTU4NzgwNjgzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZWQxNTY0NWE4OTY1NDRjOTgyZjgwNTMyNjJkYWZhZTUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDQzMWE1MjEyMGY4NDkyYzlhYTUzOTYzZWY5MWU3NzggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzcwYmFjYTU1MGJhNGE1MzhhMGVlODEzOWNhZmZiZDMgPSAkKCc8ZGl2IGlkPSJodG1sX2M3MGJhY2E1NTBiYTRhNTM4YTBlZTgxMzljYWZmYmQzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5ST0JCRVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kNDMxYTUyMTIwZjg0OTJjOWFhNTM5NjNlZjkxZTc3OC5zZXRDb250ZW50KGh0bWxfYzcwYmFjYTU1MGJhNGE1MzhhMGVlODEzOWNhZmZiZDMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hNmJlMjI2NDllMDA0ODk5YjIzNWFiOTA4YjczYWRkYi5iaW5kUG9wdXAocG9wdXBfZDQzMWE1MjEyMGY4NDkyYzlhYTUzOTYzZWY5MWU3NzgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNTIyMjVhNWRiM2IyNDU4OGE0NTYwODUzZGZjMThlMGEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkwODQxNzI5MDI4LC0xMjIuNDg2OTI1OTYwMTE0MDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83OWQ2OWFlZGJiNDg0Y2JiODcwOTFmNTFkZjcxMDgxYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iMTMzZmJkNTBjYWI0OGRhOGMyNTRlOTBmNmMzMGFjZiA9ICQoJzxkaXYgaWQ9Imh0bWxfYjEzM2ZiZDUwY2FiNDhkYThjMjU0ZTkwZjZjMzBhY2YiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83OWQ2OWFlZGJiNDg0Y2JiODcwOTFmNTFkZjcxMDgxYi5zZXRDb250ZW50KGh0bWxfYjEzM2ZiZDUwY2FiNDhkYThjMjU0ZTkwZjZjMzBhY2YpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81MjIyNWE1ZGIzYjI0NTg4YTQ1NjA4NTNkZmMxOGUwYS5iaW5kUG9wdXAocG9wdXBfNzlkNjlhZWRiYjQ4NGNiYjg3MDkxZjUxZGY3MTA4MWIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOTE5YmM2OWMwMDk3NDJlY2JlNmI1ODRjYTExY2ZkOGYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njg1MzYwMTIzNTgzLC0xMjIuNDE1NjE2MzM4MzE5OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xNzZjMjgwMTFlZmE0NTU1YWNkNGRmNjIzYTE0NGZiMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jNjU5YjliN2FlYjI0OTM3ODUxOGRlOWI2OGM4ODNlOCA9ICQoJzxkaXYgaWQ9Imh0bWxfYzY1OWI5YjdhZWIyNDkzNzg1MThkZTliNjhjODgzZTgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTc2YzI4MDExZWZhNDU1NWFjZDRkZjYyM2ExNDRmYjIuc2V0Q29udGVudChodG1sX2M2NTliOWI3YWViMjQ5Mzc4NTE4ZGU5YjY4Yzg4M2U4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOTE5YmM2OWMwMDk3NDJlY2JlNmI1ODRjYTExY2ZkOGYuYmluZFBvcHVwKHBvcHVwXzE3NmMyODAxMWVmYTQ1NTVhY2Q0ZGY2MjNhMTQ0ZmIyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzZiYTBmMjY1YWM3MDRiMTVhODljYzU1NmQzNTM2MmZiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NDI5NzcxNDA3NCwtMTIyLjQ0OTc1MTY1MjU2M10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzNmOWY4MGRlNWUyNDQxMDg4YTBlNmYyNzllZDM1YTFhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzYzNTMyYWMzNWE1NTRkMzNhMjJiMDZlZDJhOTcyMWI3ID0gJCgnPGRpdiBpZD0iaHRtbF82MzUzMmFjMzVhNTU0ZDMzYTIyYjA2ZWQyYTk3MjFiNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzNmOWY4MGRlNWUyNDQxMDg4YTBlNmYyNzllZDM1YTFhLnNldENvbnRlbnQoaHRtbF82MzUzMmFjMzVhNTU0ZDMzYTIyYjA2ZWQyYTk3MjFiNyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzZiYTBmMjY1YWM3MDRiMTVhODljYzU1NmQzNTM2MmZiLmJpbmRQb3B1cChwb3B1cF8zZjlmODBkZTVlMjQ0MTA4OGEwZTZmMjc5ZWQzNWExYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wYWYyMGFkYmViNDk0YzQ2YjQ0MmI0MmY5ODFjNTUxYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQyOTc3MTQwNzQsLTEyMi40NDk3NTE2NTI1NjNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jM2VkYTkxZTMwYzg0ZDQ3OTE0MmNjZGZkYjNkZTBiNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82YTY4ZGVhYjRkZTA0OGM3ODUyNGFmMTc2ZDE4N2MxYyA9ICQoJzxkaXYgaWQ9Imh0bWxfNmE2OGRlYWI0ZGUwNDhjNzg1MjRhZjE3NmQxODdjMWMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2MzZWRhOTFlMzBjODRkNDc5MTQyY2NkZmRiM2RlMGI3LnNldENvbnRlbnQoaHRtbF82YTY4ZGVhYjRkZTA0OGM3ODUyNGFmMTc2ZDE4N2MxYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzBhZjIwYWRiZWI0OTRjNDZiNDQyYjQyZjk4MWM1NTFhLmJpbmRQb3B1cChwb3B1cF9jM2VkYTkxZTMwYzg0ZDQ3OTE0MmNjZGZkYjNkZTBiNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kMzk5ZTNiNmNhYTc0YTEzOWU5NThlNDM2NDg2YWZlNiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTI2ODE0NjkwODM5NiwtMTIyLjQ3MjcxNTc1OTYzMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2VkMTU2NDVhODk2NTQ0Yzk4MmY4MDUzMjYyZGFmYWU1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc5Nzg1NzJlN2RmZjRlYmNhZjczMzRlMzJkYjgyNzYwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzViZWZiYzMwMjE2ODRlNmJiMzE1N2U1ZGQ0MzQ1MTU0ID0gJCgnPGRpdiBpZD0iaHRtbF81YmVmYmMzMDIxNjg0ZTZiYjMxNTdlNWRkNDM0NTE1NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzk3ODU3MmU3ZGZmNGViY2FmNzMzNGUzMmRiODI3NjAuc2V0Q29udGVudChodG1sXzViZWZiYzMwMjE2ODRlNmJiMzE1N2U1ZGQ0MzQ1MTU0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZDM5OWUzYjZjYWE3NGExMzllOTU4ZTQzNjQ4NmFmZTYuYmluZFBvcHVwKHBvcHVwXzc5Nzg1NzJlN2RmZjRlYmNhZjczMzRlMzJkYjgyNzYwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9lZDE1NjQ1YTg5NjU0NGM5ODJmODA1MzI2MmRhZmFlNSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfN2RjM2M4NjA1YmQwNDJiMWIzZDMyNDBhZjBlMTRiOGUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU0MjA3MDY3MTEsLTEyMi40MDM0MDQ3OTE0Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdjMmU4ZjA0ZDFlMzQ5MjE4MjE4YzI4YzdkNTc3NWYyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xYjBiOGMzOTM5Mjg0ZGFlODllN2UxNGViMmYyYzU5ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTk4MDk2NzI5OTU5NiwtMTIyLjM4ODg1NjIwNDI5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzFhN2Q1ZGIyNmRlZDQ5ODY4MTE0Y2M3YmU0MTYwNGE5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1Nzg4Mzc2Njg4NzksLTEyMi40MTI5NzA1Mzc1OTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82OTc2MmU0YTQ1NTg0ZDNlOGM4NGJkOTlkN2Y0OWViOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTA1MDEyMTQ2NjgsLTEyMi40MTk2NzE3ODAyOTZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zMTRjMTFmNTdkYWI0MDdjYTViNzViMWIzY2IxZmIwZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmUzMWY5OWI5NDEyNDY4MWJkYWFjMmFhY2RlZWU2YmQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA4Nzg5MzYwMjE0LC0xMjIuNDA1NzIxNDU0NTY3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzRiOTExMGE2NWU4NDgwZTljYzAxZTBlNWJiNTdiZmIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM5ODA1NTkyNjM0LC0xMjIuNDExNzc4Mjk1OTkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNThjMDllZDE4NGIzNGQyY2FhMmExMTFkMjM1YjA0YmMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80ZjZkNThiOTRjYTE0MTZiOTJiYTBkNThmOGU1NTM1NSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yNDNhMzlmMjAyOWQ0MWJiOWE5MzYxZWM4MjdmYTRiMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQ3ODE1Nzg2OTUwNSwtMTIyLjQ3NzM3NjUyNDAwMjk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmRhOWY4NDhmMDBkNDYxYTk4NWQ1Y2Q3MzgzMjQwNDMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDU3Mzg5NDI5NjU0OTUsLTEyMi40Nzc5NjAzMjcyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zNmM5Y2YzYmJmNWM0ZjlkOTNlZjIzN2M5NTE0MTFmZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWZlYTA1MjI4NjZhNDc1OThlZjk3NzI1MmM0N2JjNjkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyNzA1MTk5NTkyLC0xMjIuNDMyMzI1ODcxMDI4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjExYzliY2Q1NTdjNDM1NDliODYyMTZlOGIyNDJjMTMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTE2NDI5ODIzODQsLTEyMi40MDA5MDg2OTg4ODk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU4ZmQwMTg2N2NhYTRlMDA5ZWMyMDc0ZDUzZGY0ZjZiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNzA2OTMwMTU0NSwtMTIyLjQwODU5NTExMDg2OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2UyMWEzNzQ1NmFkOTQ2NTA4M2Q1ZjNjMzliYzI4YWU0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU3Mjg5NTkwNDU3Nzk1LC0xMjIuNDA2ODcwNDAyMDgyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTZmMGIzOTcxZWJlNGMwNzkyMGIxNmI5NTZiYzg3MmQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDg5MDYzMDUxODI5LC0xMjIuNDIwMzU0NzgwODYwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lZmIxYmY4Mzc0MzA0NDBhYWQzYzBiNjE1OWVkMjA2MyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxNTc2NTQyNjk5NSwtMTIyLjQzOTkwOTc2Njc3Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJjN2I4YmEzNDAxZTQ1ODM4NTJjOWQwYjBmZGQ1MTUxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNTY5OTM4NjkxOCwtMTIyLjQwODQyMTExNjkyMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzczYmFjNDM4OWZiNDRlNDViNzFlZTNhYjlkNmVmOWVlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczNjE4NjI3NjQ1NjA0LC0xMjIuNDIyMzE1NjcwNzQ5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTNkNDk4NDczZjY3NDViNzlmMzE4MTc0YTJmZDFiYTQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTI4NDEyODQwNDQ3MDUsLTEyMi40MjQ1MTk4MzUwMDkwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FlZWQxM2IwZTI2MTRhOGZhODEzZDMyNmVjMjA2MGRmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU0MDk4Njg4MjA2Nzk1LC0xMjIuNDE0MjMzODQ5MDM3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84NmM0NmM1YzRkZmU0OGE2YWYxMWNlZGZmMjc2MTQ4YiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfY2YxMjQyZjc4MGNlNDc2NjgxMTJlODU3NGFiMGQ3ODUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzE0OTM5OTY5NDE2LC0xMjIuNTA3NzUwMTMxMDA0MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80ZDY4OGY1MDEyMjc0YWZlYjQyMmNhOWI4MmNhM2ZhZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxODMwMjIwNDc2NjAwNSwtMTIyLjQ3NDQ0NDYzOTU5NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmFlZjQzNDk5NDFhNDMwZWEyZDZmYThmZDBkOTBkNjAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWUyYTk5NDM4YzNjNDRiMjkwZDZhNzFiZGJhOTMxMGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDNiMjk1YWNhMTU0NGQ1YmJiZGE3YTI3MTQzMzMyMmMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkzNjg4Mjg0NTMyLC0xMjIuNDEyNjkwMTQyMzA4MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kNjcyYTM0YzZjZDE0ZGU1YWMxZDllMmVhZTkyNzE2MCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zNDg4NzY3MGM0YTM0NTRlOTgzMWFiZmZjYzJkZTFmZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzkyMDkzNzU1MzI5NSwtMTIyLjQxMDg4MjgyNTU1MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FlODAyNTAxYWQyNTRmNzQ4MDJmMTBhZWM2OTNkZGZkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuODAwNDU2NjQ3MTAzODksLTEyMi40MDE0MzI3NTQ3MjIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RhMTkwYzMxNGZjMzQ2ZjRhNTQ3N2I3NGJjNTQ2NTQ1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQzNTU1MDU0MjI2NSwtMTIyLjQyMTEyODAyOTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Q4ZTc0Y2JmZjE2YTRmZjA4YjhjNTJkOWJjZWNmNjhkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg2NTY0NzYwNzY4NSwtMTIyLjQwNzI0NDA4NzAzMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzcyZTNjODI1OWYzNjRhZmU5NDkwM2E5MjIwYTllZjEyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNThlMzc1MjkzMDc4NDQ1OWI0MWVmMzhmOGEwNTEwNWIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80ZTRmMjQzYzg5ZTk0MmZhYmNjOTFkMjUwZjBmNWE1ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U4NTM5OTdiZTE4ZjQzNTI4YmQ3MjY4Y2MwMDc4NmY1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FiZWM0Y2U5M2I2ZDQ5ZTliMzEyMTBiMzE0OTkyZDczID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NTI4MDYyNzQ2NSwtMTIyLjQ3NTY0NzQ2MDc4NTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMGU0NTFhZmNiMTQwNGY4OWE5YWU4MjkzYjhlNzAzNGEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDI4NTE3Mzc0NDQ4OTQsLTEyMi40MjA5Njc0NDA1NjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zNzRmOTk3NzIwNDA0NmNiYTlhZjIwMzJlMTIyMDczNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81NzFlMGM3ZjY3M2Y0ODRiOTlmYjk3N2M1ZTkxNWVlMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3OTE2NzQyMTg5NjMsLTEyMi40MDYzNDY0MjU2MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wM2FmYzVlYmIwOTc0ZWVjYWY5YmRiOGM1Yjc4MWUyZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTcxODQzOTUyODIsLTEyMi40MDk1Mjk5MTMyNzhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mY2ZkYjIzOGJlZGE0YTc4YmEyMmM2M2FjMjU4YTQ3NSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDNlODRkYjA4NGE1NDVhZDg0ZmUzODU4YjdkMzVkNzUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85OTQ4NmE3MjkxNGQ0MmIyYThjZjkyNTdkOWRiZWFjNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NzUyNDMwODc4MywtMTIyLjQxMDczODA5NzMxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2VhYjc5YTcxYzM3OTQ3ZGI5ODFkOGVlZjlhYTZlYWRlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzEzOWI0ZmRkOGFlOTRmZDg4NDhkNDhkNWZlNmFiMWNjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhhM2JlMTZlZWFkODQyOGY5ZTkwZjljOGQxNGFjZDJhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2EyMDhjNDYyOWFmYTQyMWM5N2E0OWVlMjYyMjJiODlkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RhYzViYjAxYWFiNjRhYjBhNWYzMGNhMzk5YzUzOTEyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjExNTA5OTMzZDE3NDE2ZTllYzFkNDE3MjVkZjE3YTAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzYyMzEwNDA0NzU4LC0xMjIuNDE0NzE0Mjk1NTc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xZDZiZjkyODMwMTE0N2NjYjk4ZDdjODg0NDliMzZjMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzUxMTg4OTU2OTUsLTEyMi40MTgwNDU0NTI3NjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81YjE2ZDYxZTQ1ZmQ0MGZmYjQ0YzBkY2JkM2JmODkwYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjAyMzg0Nzg5NzUsLTEyMi40MDExNjE1NTU2MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iMmNkZmZlZTYxNTg0MjUyOTI4ZDFmYjAwOGU5ZTJiMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyNzAwNTMxOTYyOTk5NSwtMTIyLjQwMzQwODY2OTE5MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzY2YTc1NTk0YmM4NzQxOTRhZDgwZWIzMzg5NGFkNTljID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RmZGU1Njg5OWI5MzQ1OTBiOTRlZGJmNTUwZWZlZjkzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzUzMDE4NjUzNzQ0NjA0LC0xMjIuNDE4NTg3MTcyMjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWFlMDdmODU3MGYxNDg4MmE0MzY2YWFmMjFkMDkzYWQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDIxYWI2MDFiYzViNGJhNjk0NjY2YzgxYTJkN2YxNzQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTA1Mzg5OTM3MjUsLTEyMi40MDM5MTU2ODE1NzEwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ExOTIxOTg1ZTMyOTQ0NGM5N2Q2MDg2ZjM1ZDAxMjhjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzMDk5ODI0NDU5MjEsLTEyMi40MTkxODMwOTYzNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iMmRlNzQ0MzQ0ZmU0ZmJjYjllNzYzZmQ2MDU3N2MwZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0MDczNjA1NDgzNTc5LC0xMjIuMzg4NzUzMDQ2OTk3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfY2QwZGE2YjllYTc1NDkxOGJiNTgwZTdhNGU2NmY5ZTQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ5OTEyOTQ0MzY2LC0xMjIuNDM3Nzk5NzAzNDY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWVkM2IwOGE1ZTExNGU5OTkzNThlMGQwNTNmNGViY2QgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTg1ZDhkY2ZiNzI3NGZlNzliYWVlNzM3NmNjY2YzZDIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjU1ODcyZjkwNzBjNGJkZWFhZjE1NGYzYTJjODcyZGQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOWM3YzgzYTQ3ZWNjNDhlOGIwYjg5NTc5ODJkY2MyNjQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzAwMzc5OTk1MTI3OTUsLTEyMi40MDQ1OTQxNDA2MzRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mNGY3NDZiNWIxYmM0ODU0YTZmNTk0ZTgzYTg1Mzg1NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5NTMzMzgyNjc0MzYsLTEyMi4zOTczNzM3NDAwNjZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hMjgwNDE1NDkyMDk0YWQ4YTI1ZTNmNzg4Y2JkMzMxMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzUxNTg3NDE2MjI5NSwtMTIyLjQwNzQzNDk4OTUyM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Q4NjdlZGVhNTQxNzRiZWQ4YTZkODFlODdjZGMwNGJkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI2NmExOTFhODFjZTQxN2ZhYTZjMzYxYWZmMDgwNGU4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJmYmRjNjBhZWE3ZDQzYzc5ZDlmMGNhMWVmNzBmNDliID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yNjU3MDY4YjM2MDM0ZTBjODJhMmRlNDBlMzljOTJkMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfY2JiY2Q5NzY5ODRjNDQwMjgzOThjMjFmNzdlNWYzYmUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA1Mjc1Nzg1MDksLTEyMi4zOTY4NDkwMTUxNzIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzgxZDlmODliNmU1MTQ1MWVhYmUyYjk2NDFhMWEwMzQwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNWJkNTIxYTcyODc3NGFlZTlkODM4MGE1MDFhY2NlMWMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNWQ0MTQ2MjAyMTBmNGY4MWI2OGQ2ZjEwNjU3Y2VlMzYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jMDQyOTg3ZjI0OGM0MDkwYjVjYWFjOGVjZWE2MzM3MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMzk3NDgyNDE2MDksLTEyMi4zOTQ5Mjg0NzU4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNmYwMjhhYTI1OTQ4NGIzNWE0OTMxN2MyZGRiYzZlOTUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzE4YjViMDUyZTI0OTQ0NzhhMWU3Y2Y4ZTcwNDc2N2I1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yNDlkMDRiOTMxNzY0M2RjYmFiYTgwOTc2ZmYzMzE4MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODMyMzU0NDk5MDQsLTEyMi40MTE4NTcwMzI1NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZhMmU5Nzc4OTBiMzRiYWRiOWY1ZGQyMTk3MDUzY2ZlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU1OTk3NzMzOTg1NiwtMTIyLjQwOTQzNTYxNzEwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U2YTI4NzNmZTBhZDQ2YTE5NTdmYWQzZGE4MTgwODEyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3MDc5ODE0NDQ0MywtMTIyLjQyNTg4MzM1ODE0OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2UyYzBiMzI1NTQ3ZDRmNjk5MjlkNGE1ZmFkYjU0ZDBhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM2MDM3NDQ2Njg2MjA0LC0xMjIuNDE1MTI2NTQzMDAxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wNDZiMGMwNTQ1NjE0NzNiYjgzY2ExMDQ1MTg3NGEzZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMjc2Nzg4NDgyMSwtMTIyLjQzMTkyODAxMTA4OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU3OWY0NDI1ODkyNjQwMmNhMzE5OWM4MDI2M2IzMjc0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg5NTcxMDI1NTg2MywtMTIyLjQwMjE2MzcxMzYxOF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U3NzJiOWYzMzU1NDQyZGY4ZGQ1MTI0NTQxODliYWQ4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzM0OGQxNzE4YzgxYjQ1YzlhOGZiODNjMjI1Yjg1MjI2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM2NTU2NTM0Nzk0LC0xMjIuNDEzNzkwOTcyNzgwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mMTBjZDM5OTNmNjc0YWQzYmI5Y2ZhOTMxYjAwNGQ4NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hZDBmOTE3ZTk5NTg0ZGJlOTI3NDNlNGUzYWQ5ZWMyZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNzM2MjM2MDUyMTI5NiwtMTIyLjQyMjA2NzE4NDkzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzY2MjI2MTlkNmQ0MjQ5NjA5MzIyMzUyNWU3NzhlNTE3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTY0OTQ2MGFmZThiNDg0NWI4N2IxMjE3ZmE0ZjQwOTMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODU5OTg4MzIzNzk3OTYsLTEyMi40MTE3NDczNzE5MjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80NmJlMWRiODJjOTQ0MTA4YTQ0Yzg0MGYyNTI5MWYwNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FiZDViMTYxMGZkNjQ4MDhhYjhkOWJmZjlkOGYxZWM5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1MDIyNjYyMjc4NiwtMTIyLjQxMTk4NzY0MzU5NTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfM2UzZWI5MTM3ZmNjNGRjNzk0YzRjZjU3NmQ1YTdiNTMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ2MjA2NDkxMDY0OTUsLTEyMi41MDAzODA0Mjc5MTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wM2QyODg4Mzg2YTA0YjRhODIyYTBkYzZiZGFjOGMxMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTE5MTgyNjcyMTcsLTEyMi40NjY1NTg3ODA2ODNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84NmU3OWFmZTg3YmI0OGUxYjQzMjEzMjc0N2Q2MzU1NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTA4NDE3MjkwMjgsLTEyMi40ODY5MjU5NjAxMTQwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jMjE1YjQ1Njc3YWE0ZDBlYWRkNzdmMGU2OTRlNTIxMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y4MTQzZTMxMTMxNjQ1ZjlhMTE1NTVkZTRlMDk3ZDk0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY4NTM2MDEyMzU4MywtMTIyLjQxNTYxNjMzODMxOTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfM2EwOTY4MmFkODExNGZjY2I4ZDNlNTZiNDE3ZTU1OTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfY2Q3OTUyMzJhNWZhNDI0MDlkMzI4ZmU2MDgzODI4NWUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2MyMTViNDU2NzdhYTRkMGVhZGQ3N2YwZTY5NGU1MjEyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTY0NjA3ZmM3ZDI5NGRmMWJiYjdjZmI5OGM5MGFlMzYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzUyNjgxNDY5MDgzOTYsLTEyMi40NzI3MTU3NTk2MzFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfYzIxNWI0NTY3N2FhNGQwZWFkZDc3ZjBlNjk0ZTUyMTIpOwogICAgICAgICAgICAKPC9zY3JpcHQ+\" 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 0x7f0e345836a0>"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# instantiate a feature group for the incidents in the dataframe\n",
"incidents = folium.map.FeatureGroup()\n",
"\n",
"# loop through the 100 crimes and add each to the incidents feature group\n",
"for lat, lng, in zip(df_incidents.Y, df_incidents.X):\n",
" incidents.add_child(\n",
" folium.features.CircleMarker(\n",
" [lat, lng],\n",
" radius=5, # define how big you want the circle markers to be\n",
" color='yellow',\n",
" fill=True,\n",
" fill_color='blue',\n",
" fill_opacity=0.6\n",
" )\n",
" )\n",
"\n",
"# add pop-up text to each marker on the map\n",
"latitudes = list(df_incidents.Y)\n",
"longitudes = list(df_incidents.X)\n",
"labels = list(df_incidents.Category)\n",
"\n",
"for lat, lng, label in zip(latitudes, longitudes, labels):\n",
" folium.Marker([lat, lng], popup=label).add_to(sanfran_map) \n",
" \n",
"# add incidents to map\n",
"sanfran_map.add_child(incidents)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Isn't this really cool? Now you are able to know what crime category occurred at each marker.\n",
"\n",
"If you find the map to be so congested will all these markers, there are two remedies to this problem. The simpler solution is to remove these location markers and just add the text to the circle markers themselves as follows:"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"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+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzcuNzcsLTEyMi40Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfYjc1NTJiYmZmNWM3NGU2OThkMmNlNDI0NGIwZTMwMmYgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Q5OWUyYWJlZmUwOTQxNzRiOGRkNDU2MWE5MzIzMWIzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xNTQ3ZjA4ZjQ3Y2U0M2QxYmU2YjNmZjYwZGMxZmY4YyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81N2E4NjYzZWE3OTM0MTM3YTY1YWQ3N2Q2MDRjOTVhMyA9ICQoJzxkaXYgaWQ9Imh0bWxfNTdhODY2M2VhNzkzNDEzN2E2NWFkNzdkNjA0Yzk1YTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldFQVBPTiBMQVdTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xNTQ3ZjA4ZjQ3Y2U0M2QxYmU2YjNmZjYwZGMxZmY4Yy5zZXRDb250ZW50KGh0bWxfNTdhODY2M2VhNzkzNDEzN2E2NWFkNzdkNjA0Yzk1YTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZDk5ZTJhYmVmZTA5NDE3NGI4ZGQ0NTYxYTkzMjMxYjMuYmluZFBvcHVwKHBvcHVwXzE1NDdmMDhmNDdjZTQzZDFiZTZiM2ZmNjBkYzFmZjhjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzM0ZjczNTcyNjA3MDQzYWJhMzdlNWQyYWQzMDc4Y2Y2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iYTUxNTgwY2FiOTg0NTAxYWFkNmJjNzQ3MjI2OWY3OCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jNDhkZTIzYTk3NjE0NmU5OTVjMDY4YmExZDA1OTk5YiA9ICQoJzxkaXYgaWQ9Imh0bWxfYzQ4ZGUyM2E5NzYxNDZlOTk1YzA2OGJhMWQwNTk5OWIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldFQVBPTiBMQVdTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iYTUxNTgwY2FiOTg0NTAxYWFkNmJjNzQ3MjI2OWY3OC5zZXRDb250ZW50KGh0bWxfYzQ4ZGUyM2E5NzYxNDZlOTk1YzA2OGJhMWQwNTk5OWIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMzRmNzM1NzI2MDcwNDNhYmEzN2U1ZDJhZDMwNzhjZjYuYmluZFBvcHVwKHBvcHVwX2JhNTE1ODBjYWI5ODQ1MDFhYWQ2YmM3NDcyMjY5Zjc4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2E3Y2E3MTgxOWIyNjRlNjViNTBhNTZhZjhkY2MxM2EzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI5OTgwOTY3Mjk5NTk2LC0xMjIuMzg4ODU2MjA0MjkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWE3MjI5ZGEwYmQyNGJhZTgwNGIxNGJhMTU5ODFlMTIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTU2NTkyNjdjOGJkNGIxMmFjNTc0YmMyMGY0ZGFhMmUgPSAkKCc8ZGl2IGlkPSJodG1sXzE1NjU5MjY3YzhiZDRiMTJhYzU3NGJjMjBmNGRhYTJlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMWE3MjI5ZGEwYmQyNGJhZTgwNGIxNGJhMTU5ODFlMTIuc2V0Q29udGVudChodG1sXzE1NjU5MjY3YzhiZDRiMTJhYzU3NGJjMjBmNGRhYTJlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2E3Y2E3MTgxOWIyNjRlNjViNTBhNTZhZjhkY2MxM2EzLmJpbmRQb3B1cChwb3B1cF8xYTcyMjlkYTBiZDI0YmFlODA0YjE0YmExNTk4MWUxMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mNzgzYmQxNDc2MWI0OGQ3OGE2NjVhYzY5NTQ4OTg3OCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTc4ODM3NjY4ODc5LC0xMjIuNDEyOTcwNTM3NTkxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDE1MTExZjFmMjljNDBhNTk5ZDE3NmZlMGU4OGEyZjMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMmU1MzA2NTJhMzA3NDQ0Njg5ZjZjM2Q4ZmE0MWYyOGYgPSAkKCc8ZGl2IGlkPSJodG1sXzJlNTMwNjUyYTMwNzQ0NDY4OWY2YzNkOGZhNDFmMjhmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzAxNTExMWYxZjI5YzQwYTU5OWQxNzZmZTBlODhhMmYzLnNldENvbnRlbnQoaHRtbF8yZTUzMDY1MmEzMDc0NDQ2ODlmNmMzZDhmYTQxZjI4Zik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mNzgzYmQxNDc2MWI0OGQ3OGE2NjVhYzY5NTQ4OTg3OC5iaW5kUG9wdXAocG9wdXBfMDE1MTExZjFmMjljNDBhNTk5ZDE3NmZlMGU4OGEyZjMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMmI3OTI5NjgxMWQxNDAzMjgxNTY4YmUwY2I0ZmU2YWIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjUwNTAxMjE0NjY4LC0xMjIuNDE5NjcxNzgwMjk2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTdlMzk5ZDUwY2JiNDZkZWI2NDk0NjMxZWYxNjAxZTYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjdhY2NmOTRmYjg4NDM2NDhiY2IwNTUzMDZlMDIxMDQgPSAkKCc8ZGl2IGlkPSJodG1sX2Y3YWNjZjk0ZmI4ODQzNjQ4YmNiMDU1MzA2ZTAyMTA0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzk3ZTM5OWQ1MGNiYjQ2ZGViNjQ5NDYzMWVmMTYwMWU2LnNldENvbnRlbnQoaHRtbF9mN2FjY2Y5NGZiODg0MzY0OGJjYjA1NTMwNmUwMjEwNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yYjc5Mjk2ODExZDE0MDMyODE1NjhiZTBjYjRmZTZhYi5iaW5kUG9wdXAocG9wdXBfOTdlMzk5ZDUwY2JiNDZkZWI2NDk0NjMxZWYxNjAxZTYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjc0ZDNkOGJhZmMxNDcxNTkzZmEzZTUxYWYyOWFmMDcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMTg1NTU4MjksLTEyMi40MjYwNzcxNzczNzQ5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzljNTdmOGRhYzE5NzQ4NjdiZjI5NjJlODhiNjg0ZTBiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzI3NzFhNzdiNjgwMDQ4NTY5ZGFlNzExODc1ODRiM2JjID0gJCgnPGRpdiBpZD0iaHRtbF8yNzcxYTc3YjY4MDA0ODU2OWRhZTcxMTg3NTg0YjNiYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOWM1N2Y4ZGFjMTk3NDg2N2JmMjk2MmU4OGI2ODRlMGIuc2V0Q29udGVudChodG1sXzI3NzFhNzdiNjgwMDQ4NTY5ZGFlNzExODc1ODRiM2JjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2Y3NGQzZDhiYWZjMTQ3MTU5M2ZhM2U1MWFmMjlhZjA3LmJpbmRQb3B1cChwb3B1cF85YzU3ZjhkYWMxOTc0ODY3YmYyOTYyZTg4YjY4NGUwYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xOGZjZjVhZTZjMGE0MDI4YjIxZTM4OTljZGIwMzg2ZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDg3ODkzNjAyMTQsLTEyMi40MDU3MjE0NTQ1NjddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wYzVkMWI0NjVlM2E0ODU1YThiZTUwNGJkY2FiMmZjZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zMWJkMzIwOGI4NjU0NDI2YTg0YmI3MzQyNDUxNzM0MyA9ICQoJzxkaXYgaWQ9Imh0bWxfMzFiZDMyMDhiODY1NDQyNmE4NGJiNzM0MjQ1MTczNDMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wYzVkMWI0NjVlM2E0ODU1YThiZTUwNGJkY2FiMmZjZC5zZXRDb250ZW50KGh0bWxfMzFiZDMyMDhiODY1NDQyNmE4NGJiNzM0MjQ1MTczNDMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMThmY2Y1YWU2YzBhNDAyOGIyMWUzODk5Y2RiMDM4NmQuYmluZFBvcHVwKHBvcHVwXzBjNWQxYjQ2NWUzYTQ4NTVhOGJlNTA0YmRjYWIyZmNkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRkMzA2NTQ1MDgxMjQ0ZTViNjllNDQxMGRhNTkzYTUyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzOTgwNTU5MjYzNCwtMTIyLjQxMTc3ODI5NTk5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2VlZDFkN2Y0M2QwYzRiMzRiMTIyY2EyNjVmODM5ZTIxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzUxM2FmODYzMjk2NDQ2NjhhN2ZhNWI0NWY4ODllMDI0ID0gJCgnPGRpdiBpZD0iaHRtbF81MTNhZjg2MzI5NjQ0NjY4YTdmYTViNDVmODg5ZTAyNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lZWQxZDdmNDNkMGM0YjM0YjEyMmNhMjY1ZjgzOWUyMS5zZXRDb250ZW50KGh0bWxfNTEzYWY4NjMyOTY0NDY2OGE3ZmE1YjQ1Zjg4OWUwMjQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNGQzMDY1NDUwODEyNDRlNWI2OWU0NDEwZGE1OTNhNTIuYmluZFBvcHVwKHBvcHVwX2VlZDFkN2Y0M2QwYzRiMzRiMTIyY2EyNjVmODM5ZTIxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JhZDkxMTNlMzZiNTRlMjU5MTcyNzM0MWE5ZWYzOWZmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1Nzg3NjIxODI5Mjk1LC0xMjIuMzkzMzU3MjQxNDUxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZGM1MTU0ZDVhNjljNDZjNGEzZWYwOTY1MDA3MzIxNGQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTdkNmFiN2MzNWQzNDU4YTk1YWQ2ZTQ5OWE4NzE4ZWYgPSAkKCc8ZGl2IGlkPSJodG1sX2E3ZDZhYjdjMzVkMzQ1OGE5NWFkNmU0OTlhODcxOGVmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZGM1MTU0ZDVhNjljNDZjNGEzZWYwOTY1MDA3MzIxNGQuc2V0Q29udGVudChodG1sX2E3ZDZhYjdjMzVkMzQ1OGE5NWFkNmU0OTlhODcxOGVmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2JhZDkxMTNlMzZiNTRlMjU5MTcyNzM0MWE5ZWYzOWZmLmJpbmRQb3B1cChwb3B1cF9kYzUxNTRkNWE2OWM0NmM0YTNlZjA5NjUwMDczMjE0ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lOGEzYjM3Y2FmZjc0YTAyYmNhZjQ2OGU5NDhmY2M2NyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jYjEyYTdhZGI0MTc0OTRiYjBjNmEzNDdkYzdlMmZlYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85YzFmODM1ZmQzNDY0NjY3OTBiOTg5YWNhMzU0ZTZhNCA9ICQoJzxkaXYgaWQ9Imh0bWxfOWMxZjgzNWZkMzQ2NDY2NzkwYjk4OWFjYTM1NGU2YTQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jYjEyYTdhZGI0MTc0OTRiYjBjNmEzNDdkYzdlMmZlYy5zZXRDb250ZW50KGh0bWxfOWMxZjgzNWZkMzQ2NDY2NzkwYjk4OWFjYTM1NGU2YTQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZThhM2IzN2NhZmY3NGEwMmJjYWY0NjhlOTQ4ZmNjNjcuYmluZFBvcHVwKHBvcHVwX2NiMTJhN2FkYjQxNzQ5NGJiMGM2YTM0N2RjN2UyZmVjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzYxMjMzYzZlZmE4ZjQ4OTE5MmU1YWI3YzMzM2I5ZjQ5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NDc4MTU3ODY5NTA1LC0xMjIuNDc3Mzc2NTI0MDAyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iYWEyMmY2NmFlY2Y0ZGQxOGJiMWM1Mzk1ZGQyMzMzZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jZWNkNTZmNWM3MTg0ODBjOTBhZDc4ZjM5MmQwN2MzYSA9ICQoJzxkaXYgaWQ9Imh0bWxfY2VjZDU2ZjVjNzE4NDgwYzkwYWQ3OGYzOTJkMDdjM2EiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2JhYTIyZjY2YWVjZjRkZDE4YmIxYzUzOTVkZDIzMzNkLnNldENvbnRlbnQoaHRtbF9jZWNkNTZmNWM3MTg0ODBjOTBhZDc4ZjM5MmQwN2MzYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82MTIzM2M2ZWZhOGY0ODkxOTJlNWFiN2MzMzNiOWY0OS5iaW5kUG9wdXAocG9wdXBfYmFhMjJmNjZhZWNmNGRkMThiYjFjNTM5NWRkMjMzM2QpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWM0YTRiOGRjMmUzNGZmNjlhZTdlYTA3MjgzOGMxNTggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDU3Mzg5NDI5NjU0OTUsLTEyMi40Nzc5NjAzMjcyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jMjM1NTNkOGY4NWY0NDA3OGQ2M2Y4NWI0YTZmMWI2YyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82ZGRlM2U3YzYzMTQ0ZDljOTJmYmY3ZjIzMGNlNDQ2YSA9ICQoJzxkaXYgaWQ9Imh0bWxfNmRkZTNlN2M2MzE0NGQ5YzkyZmJmN2YyMzBjZTQ0NmEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzIzNTUzZDhmODVmNDQwNzhkNjNmODViNGE2ZjFiNmMuc2V0Q29udGVudChodG1sXzZkZGUzZTdjNjMxNDRkOWM5MmZiZjdmMjMwY2U0NDZhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzFjNGE0YjhkYzJlMzRmZjY5YWU3ZWEwNzI4MzhjMTU4LmJpbmRQb3B1cChwb3B1cF9jMjM1NTNkOGY4NWY0NDA3OGQ2M2Y4NWI0YTZmMWI2Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yMzM0MDMzZjMwZjc0ZWFjOTkwNzFiOGVkMDcyMTI4MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTI1N2ZjYTY5YmI3NDhmOTk5M2EzYzE5YWY4OThlYzcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZmQ4ZGQ2OWNmMmQ0NDZjYTkzY2E1OWM4YmU5M2YyMTIgPSAkKCc8ZGl2IGlkPSJodG1sX2ZkOGRkNjljZjJkNDQ2Y2E5M2NhNTljOGJlOTNmMjEyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTI1N2ZjYTY5YmI3NDhmOTk5M2EzYzE5YWY4OThlYzcuc2V0Q29udGVudChodG1sX2ZkOGRkNjljZjJkNDQ2Y2E5M2NhNTljOGJlOTNmMjEyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzIzMzQwMzNmMzBmNzRlYWM5OTA3MWI4ZWQwNzIxMjgxLmJpbmRQb3B1cChwb3B1cF8xMjU3ZmNhNjliYjc0OGY5OTkzYTNjMTlhZjg5OGVjNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85ZWQxODllYmYxNjc0NzYzYmRmMDJhYjIwYWFiMjRlYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTI3MDUxOTk1OTIsLTEyMi40MzIzMjU4NzEwMjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82YTQwMmZiZTNiZDI0OTlkOGJkYzU4YTFlYzM3Y2QwYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xZjM4MDlkYjc4Yjc0MDkwYmEyN2I3MzNlZGFkNTE5NSA9ICQoJzxkaXYgaWQ9Imh0bWxfMWYzODA5ZGI3OGI3NDA5MGJhMjdiNzMzZWRhZDUxOTUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZhNDAyZmJlM2JkMjQ5OWQ4YmRjNThhMWVjMzdjZDBiLnNldENvbnRlbnQoaHRtbF8xZjM4MDlkYjc4Yjc0MDkwYmEyN2I3MzNlZGFkNTE5NSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85ZWQxODllYmYxNjc0NzYzYmRmMDJhYjIwYWFiMjRlYy5iaW5kUG9wdXAocG9wdXBfNmE0MDJmYmUzYmQyNDk5ZDhiZGM1OGExZWMzN2NkMGIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzg1ZWUxOWI1ZTkzNDcyNmE0MWNkNTc5MTVlZjhjYjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTE2NDI5ODIzODQsLTEyMi40MDA5MDg2OTg4ODk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JiZWU0NzMxY2Q5ZTRjNzM5MWY2NjljZWFjZGEzYTYxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzMzMzkxNGRlZmE2NDQ5N2ViODdkZTJlNTI2YzU3NjBjID0gJCgnPGRpdiBpZD0iaHRtbF8zMzM5MTRkZWZhNjQ0OTdlYjg3ZGUyZTUyNmM1NzYwYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2JiZWU0NzMxY2Q5ZTRjNzM5MWY2NjljZWFjZGEzYTYxLnNldENvbnRlbnQoaHRtbF8zMzM5MTRkZWZhNjQ0OTdlYjg3ZGUyZTUyNmM1NzYwYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl83ODVlZTE5YjVlOTM0NzI2YTQxY2Q1NzkxNWVmOGNiMi5iaW5kUG9wdXAocG9wdXBfYmJlZTQ3MzFjZDllNGM3MzkxZjY2OWNlYWNkYTNhNjEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmM1N2Q4ZmU4NzhmNGMyNWFkMWQzOWFhOTUyZDMwYTggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM3MDY5MzAxNTQ1LC0xMjIuNDA4NTk1MTEwODY5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjQ0ZTg2MWQ3MTY3NDEzYWI3ZGMwZTY3Njc3MmM0ZDcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMWU4YWZlMjNkZjkyNDc3ZmE3YzcxZGVhMDZkNjIyODEgPSAkKCc8ZGl2IGlkPSJodG1sXzFlOGFmZTIzZGY5MjQ3N2ZhN2M3MWRlYTA2ZDYyMjgxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TVE9MRU4gUFJPUEVSVFk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzI0NGU4NjFkNzE2NzQxM2FiN2RjMGU2NzY3NzJjNGQ3LnNldENvbnRlbnQoaHRtbF8xZThhZmUyM2RmOTI0NzdmYTdjNzFkZWEwNmQ2MjI4MSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iYzU3ZDhmZTg3OGY0YzI1YWQxZDM5YWE5NTJkMzBhOC5iaW5kUG9wdXAocG9wdXBfMjQ0ZTg2MWQ3MTY3NDEzYWI3ZGMwZTY3Njc3MmM0ZDcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzJiMDMwM2Q0NDMwNGU3NmEyNzhkM2NjYTliNzQ5NDIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTcyODk1OTA0NTc3OTUsLTEyMi40MDY4NzA0MDIwODJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jMzMzYmQyZWZjZDU0NzAyOWZlZTRmZjllMjg3NmYzNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80ZGQzMTJhZjBlNjg0ZGQ5OWFiYWVjOTIzZjRkZDYxZiA9ICQoJzxkaXYgaWQ9Imh0bWxfNGRkMzEyYWYwZTY4NGRkOTlhYmFlYzkyM2Y0ZGQ2MWYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJPQkJFUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2MzMzNiZDJlZmNkNTQ3MDI5ZmVlNGZmOWUyODc2ZjM3LnNldENvbnRlbnQoaHRtbF80ZGQzMTJhZjBlNjg0ZGQ5OWFiYWVjOTIzZjRkZDYxZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl83MmIwMzAzZDQ0MzA0ZTc2YTI3OGQzY2NhOWI3NDk0Mi5iaW5kUG9wdXAocG9wdXBfYzMzM2JkMmVmY2Q1NDcwMjlmZWU0ZmY5ZTI4NzZmMzcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOWE0OTgwMDUxMGNhNGY1MWI1ZmY4MzRhZDQxNWIzYmUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDg5MDYzMDUxODI5LC0xMjIuNDIwMzU0NzgwODYwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mZjcyZjViZjlkYzU0OTJmYTE5ZDg4NGY2MmVkYmE4MCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hY2IyZGRkN2E4ZTE0MGI0YWQ3MTgzYzk2ODViYWE0MyA9ICQoJzxkaXYgaWQ9Imh0bWxfYWNiMmRkZDdhOGUxNDBiNGFkNzE4M2M5Njg1YmFhNDMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ZmNzJmNWJmOWRjNTQ5MmZhMTlkODg0ZjYyZWRiYTgwLnNldENvbnRlbnQoaHRtbF9hY2IyZGRkN2E4ZTE0MGI0YWQ3MTgzYzk2ODViYWE0Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85YTQ5ODAwNTEwY2E0ZjUxYjVmZjgzNGFkNDE1YjNiZS5iaW5kUG9wdXAocG9wdXBfZmY3MmY1YmY5ZGM1NDkyZmExOWQ4ODRmNjJlZGJhODApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTFiZmRhMTA2ZmY5NDI1ZTljOGE2MzYwMjEzYzRkM2UgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTU3NjU0MjY5OTUsLTEyMi40Mzk5MDk3NjY3NzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83MTljODZkZGQ5ODQ0MjI0YjMxNDhiOTBhMTk1NTA1YiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jOWQyMTllYmQ0ZDE0N2I1ODg4OWVlMjVlYjgxNzc4OCA9ICQoJzxkaXYgaWQ9Imh0bWxfYzlkMjE5ZWJkNGQxNDdiNTg4ODllZTI1ZWI4MTc3ODgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzcxOWM4NmRkZDk4NDQyMjRiMzE0OGI5MGExOTU1MDViLnNldENvbnRlbnQoaHRtbF9jOWQyMTllYmQ0ZDE0N2I1ODg4OWVlMjVlYjgxNzc4OCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xMWJmZGExMDZmZjk0MjVlOWM4YTYzNjAyMTNjNGQzZS5iaW5kUG9wdXAocG9wdXBfNzE5Yzg2ZGRkOTg0NDIyNGIzMTQ4YjkwYTE5NTUwNWIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTA2M2I1MmUwODdmNGI2MTgwNmNkNDYzNTI3NjU2ZmUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM1Njk5Mzg2OTE4LC0xMjIuNDA4NDIxMTE2OTIyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOGE3ZGRiY2VmZWQ2NDY2MmE2MTNlMDhhNDRhN2Y2MTcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNWZkMzUwYmU2NDUxNGIxOWFlZmQ0NWEzYTlmZjhlNmMgPSAkKCc8ZGl2IGlkPSJodG1sXzVmZDM1MGJlNjQ1MTRiMTlhZWZkNDVhM2E5ZmY4ZTZjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84YTdkZGJjZWZlZDY0NjYyYTYxM2UwOGE0NGE3ZjYxNy5zZXRDb250ZW50KGh0bWxfNWZkMzUwYmU2NDUxNGIxOWFlZmQ0NWEzYTlmZjhlNmMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZTA2M2I1MmUwODdmNGI2MTgwNmNkNDYzNTI3NjU2ZmUuYmluZFBvcHVwKHBvcHVwXzhhN2RkYmNlZmVkNjQ2NjJhNjEzZTA4YTQ0YTdmNjE3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzA4MWRmMjg0YTg2MDRkYWI4MzRkMjdlNWFhZjExN2U0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczNjE4NjI3NjQ1NjA0LC0xMjIuNDIyMzE1NjcwNzQ5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTgzOTdkZjA0OTM2NGU1YzhkOTU2YzM5Y2E2MDk4ZmQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTUwYWM0ZTE2M2JhNDFiM2IxOGI1Njk2ZTcxYTcxMzkgPSAkKCc8ZGl2IGlkPSJodG1sX2E1MGFjNGUxNjNiYTQxYjNiMThiNTY5NmU3MWE3MTM5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5GUkFVRDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTgzOTdkZjA0OTM2NGU1YzhkOTU2YzM5Y2E2MDk4ZmQuc2V0Q29udGVudChodG1sX2E1MGFjNGUxNjNiYTQxYjNiMThiNTY5NmU3MWE3MTM5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzA4MWRmMjg0YTg2MDRkYWI4MzRkMjdlNWFhZjExN2U0LmJpbmRQb3B1cChwb3B1cF8xODM5N2RmMDQ5MzY0ZTVjOGQ5NTZjMzljYTYwOThmZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81YzlhN2EzYjhjNTI0NTMzOTkxZDYxNTE2OWQyOTVjZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5Mjg0MTI4NDA0NDcwNSwtMTIyLjQyNDUxOTgzNTAwOTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTI3YmYzODA4NmZkNDI1YmIyNmE1Mjg5YjI4Njg1YzkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYmQwYjJkMTE5ODVjNDExNGE4ODE4MzlkOWYyZGE2OWEgPSAkKCc8ZGl2IGlkPSJodG1sX2JkMGIyZDExOTg1YzQxMTRhODgxODM5ZDlmMmRhNjlhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTI3YmYzODA4NmZkNDI1YmIyNmE1Mjg5YjI4Njg1Yzkuc2V0Q29udGVudChodG1sX2JkMGIyZDExOTg1YzQxMTRhODgxODM5ZDlmMmRhNjlhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzVjOWE3YTNiOGM1MjQ1MzM5OTFkNjE1MTY5ZDI5NWNlLmJpbmRQb3B1cChwb3B1cF8xMjdiZjM4MDg2ZmQ0MjViYjI2YTUyODliMjg2ODVjOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82OTE4MmNhZWI1ZGY0NmZlOGRhZDg2ZTFlZDBjNzgzNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTA5YWZkYTIxMTUzNDgyZGFkMmYxOTJmMTg3Zjk2YTggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjU2Yjg3NmI1YTdiNGNhZTgzOGFjNTM1YTQxNzg0OWMgPSAkKCc8ZGl2IGlkPSJodG1sX2I1NmI4NzZiNWE3YjRjYWU4MzhhYzUzNWE0MTc4NDljIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81MDlhZmRhMjExNTM0ODJkYWQyZjE5MmYxODdmOTZhOC5zZXRDb250ZW50KGh0bWxfYjU2Yjg3NmI1YTdiNGNhZTgzOGFjNTM1YTQxNzg0OWMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNjkxODJjYWViNWRmNDZmZThkYWQ4NmUxZWQwYzc4MzcuYmluZFBvcHVwKHBvcHVwXzUwOWFmZGEyMTE1MzQ4MmRhZDJmMTkyZjE4N2Y5NmE4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzM1NGE2YzRmZjY4MzQ0ZDFiYTU0NjZkZGZmZjdhZGM5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU0MDk4Njg4MjA2Nzk1LC0xMjIuNDE0MjMzODQ5MDM3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iZDhlOTI2OTdiNDg0Y2M2YTkzZGNjMjJhYWRjMjUwNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mOGE4ZjIxZDQ5MTU0YzhjYWY4YThiNTc4OGNlZmQzYSA9ICQoJzxkaXYgaWQ9Imh0bWxfZjhhOGYyMWQ0OTE1NGM4Y2FmOGE4YjU3ODhjZWZkM2EiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iZDhlOTI2OTdiNDg0Y2M2YTkzZGNjMjJhYWRjMjUwNi5zZXRDb250ZW50KGh0bWxfZjhhOGYyMWQ0OTE1NGM4Y2FmOGE4YjU3ODhjZWZkM2EpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMzU0YTZjNGZmNjgzNDRkMWJhNTQ2NmRkZmZmN2FkYzkuYmluZFBvcHVwKHBvcHVwX2JkOGU5MjY5N2I0ODRjYzZhOTNkY2MyMmFhZGMyNTA2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2VlZWVhM2Y4ODhjMTQ4MThiZDg2MWVmYjk3ODQxYjEzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzcxNDkzOTk2OTQxNiwtMTIyLjUwNzc1MDEzMTAwNDAyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTdhZDQwMjQ3YWE2NGNlMjkyMjUzYjEwNmZhZGQzNTAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMmEzNTEyYzJjNDBjNGMzZjhlMmEwY2MxOTFmNDAyZTggPSAkKCc8ZGl2IGlkPSJodG1sXzJhMzUxMmMyYzQwYzRjM2Y4ZTJhMGNjMTkxZjQwMmU4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hN2FkNDAyNDdhYTY0Y2UyOTIyNTNiMTA2ZmFkZDM1MC5zZXRDb250ZW50KGh0bWxfMmEzNTEyYzJjNDBjNGMzZjhlMmEwY2MxOTFmNDAyZTgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZWVlZWEzZjg4OGMxNDgxOGJkODYxZWZiOTc4NDFiMTMuYmluZFBvcHVwKHBvcHVwX2E3YWQ0MDI0N2FhNjRjZTI5MjI1M2IxMDZmYWRkMzUwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzNjNDFlZTg1ZGEwZTQ3NGY5NTE0ODQyOWQxYmI2NzdjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzE4MzAyMjA0NzY2MDA1LC0xMjIuNDc0NDQ0NjM5NTk0OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83ZTc1OGEyZWNmZTI0OWJmODBmNmExNTQ2NTQzNDk1ZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82MTRkOGE2YWRhNDg0YmI5ODAzNjM1NzdjYjI3ZWFjMyA9ICQoJzxkaXYgaWQ9Imh0bWxfNjE0ZDhhNmFkYTQ4NGJiOTgwMzYzNTc3Y2IyN2VhYzMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83ZTc1OGEyZWNmZTI0OWJmODBmNmExNTQ2NTQzNDk1ZS5zZXRDb250ZW50KGh0bWxfNjE0ZDhhNmFkYTQ4NGJiOTgwMzYzNTc3Y2IyN2VhYzMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfM2M0MWVlODVkYTBlNDc0Zjk1MTQ4NDI5ZDFiYjY3N2MuYmluZFBvcHVwKHBvcHVwXzdlNzU4YTJlY2ZlMjQ5YmY4MGY2YTE1NDY1NDM0OTVlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RhNTZmYTM5YTU4YTQ5Y2VhYjQ1ZjYwYmMyOGRjNWVkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NTc1MjMxNzYxNSwtMTIyLjQyNzU2MjU5Njk4NV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JmYTFiN2JkZWI0YjQzNzNiYTc3MzEyODFhNDQyOWU5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzExZmMzNzczNGE5ZTQ4OWRiMWZmMDE3N2JiODUxYWFlID0gJCgnPGRpdiBpZD0iaHRtbF8xMWZjMzc3MzRhOWU0ODlkYjFmZjAxNzdiYjg1MWFhZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2JmYTFiN2JkZWI0YjQzNzNiYTc3MzEyODFhNDQyOWU5LnNldENvbnRlbnQoaHRtbF8xMWZjMzc3MzRhOWU0ODlkYjFmZjAxNzdiYjg1MWFhZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kYTU2ZmEzOWE1OGE0OWNlYWI0NWY2MGJjMjhkYzVlZC5iaW5kUG9wdXAocG9wdXBfYmZhMWI3YmRlYjRiNDM3M2JhNzczMTI4MWE0NDI5ZTkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGU3NjBlYWYzNTZlNGY4ZjgzOTRjMGExYzk2ZTU5NTYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDdmMjRmMjlmZWVlNGVjZjkxNGE3M2U0MTk4YWUzMGEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfY2I0MzUwM2I1YzNiNGRiYmE0OGM4YjUxYmI4OTU3YzEgPSAkKCc8ZGl2IGlkPSJodG1sX2NiNDM1MDNiNWMzYjRkYmJhNDhjOGI1MWJiODk1N2MxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CVVJHTEFSWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDdmMjRmMjlmZWVlNGVjZjkxNGE3M2U0MTk4YWUzMGEuc2V0Q29udGVudChodG1sX2NiNDM1MDNiNWMzYjRkYmJhNDhjOGI1MWJiODk1N2MxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzhlNzYwZWFmMzU2ZTRmOGY4Mzk0YzBhMWM5NmU1OTU2LmJpbmRQb3B1cChwb3B1cF8wN2YyNGYyOWZlZWU0ZWNmOTE0YTczZTQxOThhZTMwYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81MDc4OTk1OTQwZmU0YTBhOTA5NGYwYmZhN2U5NGEzYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTM2ODgyODQ1MzIsLTEyMi40MTI2OTAxNDIzMDgwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzFjMGRkNjc4M2QwZTQ3YzA4YmFhYzZhZTA4NGQwMDBkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzYwNzExYWIxMjk4NTRiZDc4MzJhNTUxZGZjNWZhZmY2ID0gJCgnPGRpdiBpZD0iaHRtbF82MDcxMWFiMTI5ODU0YmQ3ODMyYTU1MWRmYzVmYWZmNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFjMGRkNjc4M2QwZTQ3YzA4YmFhYzZhZTA4NGQwMDBkLnNldENvbnRlbnQoaHRtbF82MDcxMWFiMTI5ODU0YmQ3ODMyYTU1MWRmYzVmYWZmNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81MDc4OTk1OTQwZmU0YTBhOTA5NGYwYmZhN2U5NGEzYS5iaW5kUG9wdXAocG9wdXBfMWMwZGQ2NzgzZDBlNDdjMDhiYWFjNmFlMDg0ZDAwMGQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzcyNmFkYWY3ZTIyNGQyNDkzMjk4MjE2N2RmNDFmMzggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MDkyMDEwNDYyMzc5LC0xMjIuNDM0NjA5MjgwMzUyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzY3ZTllNjIwN2Q0NDQ0NjhjNjU0ZTczNjAxNDRkZmMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDI3MTAwNTc4OGEwNGE0ZTkxYTU4OTU4YTRlNDBlM2YgPSAkKCc8ZGl2IGlkPSJodG1sX2QyNzEwMDU3ODhhMDRhNGU5MWE1ODk1OGE0ZTQwZTNmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2M2N2U5ZTYyMDdkNDQ0NDY4YzY1NGU3MzYwMTQ0ZGZjLnNldENvbnRlbnQoaHRtbF9kMjcxMDA1Nzg4YTA0YTRlOTFhNTg5NThhNGU0MGUzZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jNzI2YWRhZjdlMjI0ZDI0OTMyOTgyMTY3ZGY0MWYzOC5iaW5kUG9wdXAocG9wdXBfYzY3ZTllNjIwN2Q0NDQ0NjhjNjU0ZTczNjAxNDRkZmMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDA1N2YwNWU4NjQyNDQ5Yzg0OGI0NDNkMzViZDk4Y2IgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc5MjA5Mzc1NTMyOTUsLTEyMi40MTA4ODI4MjU1NTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zYTQ5YzFlOWY5MTY0NDkzOGY2YjVhZGVkMmM4MmNmOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84N2I5NDQ2MGZlNjQ0NjY3ODE2MzMxMjNkMGVjZjE4YSA9ICQoJzxkaXYgaWQ9Imh0bWxfODdiOTQ0NjBmZTY0NDY2NzgxNjMzMTIzZDBlY2YxOGEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZFSElDTEUgVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzNhNDljMWU5ZjkxNjQ0OTM4ZjZiNWFkZWQyYzgyY2Y5LnNldENvbnRlbnQoaHRtbF84N2I5NDQ2MGZlNjQ0NjY3ODE2MzMxMjNkMGVjZjE4YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kMDU3ZjA1ZTg2NDI0NDljODQ4YjQ0M2QzNWJkOThjYi5iaW5kUG9wdXAocG9wdXBfM2E0OWMxZTlmOTE2NDQ5MzhmNmI1YWRlZDJjODJjZjkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjQ2YTJiMDg5YTIxNDNkZjg0YzgyOWQ4OGJiNDUzZWIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy44MDA0NTY2NDcxMDM4OSwtMTIyLjQwMTQzMjc1NDcyMjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOWJlZWNiZDcyODUzNDFjMjhiNjQ1NDA2YzMxYjBmNWMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMmVmMTk0YzBiNWU3NGU0MDkxYTcwMDJiNjY2MTZiMDggPSAkKCc8ZGl2IGlkPSJodG1sXzJlZjE5NGMwYjVlNzRlNDA5MWE3MDAyYjY2NjE2YjA4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85YmVlY2JkNzI4NTM0MWMyOGI2NDU0MDZjMzFiMGY1Yy5zZXRDb250ZW50KGh0bWxfMmVmMTk0YzBiNWU3NGU0MDkxYTcwMDJiNjY2MTZiMDgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZjQ2YTJiMDg5YTIxNDNkZjg0YzgyOWQ4OGJiNDUzZWIuYmluZFBvcHVwKHBvcHVwXzliZWVjYmQ3Mjg1MzQxYzI4YjY0NTQwNmMzMWIwZjVjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQ4Zjk5MjNiYmU2NTQxNjE5MTNjMzBhY2M1MGEwM2NlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQzNTU1MDU0MjI2NSwtMTIyLjQyMTEyODAyOTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FlNDVjNGU2NjI2OTQzZDRhMmQzNzJkOTlkMjUzY2M1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzcyYTljOWRmYWIzMzQwZTdiZjA4MjMyMGNlNDBmNDNlID0gJCgnPGRpdiBpZD0iaHRtbF83MmE5YzlkZmFiMzM0MGU3YmYwODIzMjBjZTQwZjQzZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYWU0NWM0ZTY2MjY5NDNkNGEyZDM3MmQ5OWQyNTNjYzUuc2V0Q29udGVudChodG1sXzcyYTljOWRmYWIzMzQwZTdiZjA4MjMyMGNlNDBmNDNlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzQ4Zjk5MjNiYmU2NTQxNjE5MTNjMzBhY2M1MGEwM2NlLmJpbmRQb3B1cChwb3B1cF9hZTQ1YzRlNjYyNjk0M2Q0YTJkMzcyZDk5ZDI1M2NjNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84MjNiNTcxMTEyMjE0ZTA2ODIwZjFmZDJjZGEyNTZlNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NjU2NDc2MDc2ODUsLTEyMi40MDcyNDQwODcwMzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84NWYyMGQ1ODNmZTA0NmJlODNkMjFkMDJiZmM3NjgyMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wYzgyZDczMzU4Zjc0MGFhYjI1ZmQyZTViZWU4Y2UyNSA9ICQoJzxkaXYgaWQ9Imh0bWxfMGM4MmQ3MzM1OGY3NDBhYWIyNWZkMmU1YmVlOGNlMjUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzg1ZjIwZDU4M2ZlMDQ2YmU4M2QyMWQwMmJmYzc2ODIwLnNldENvbnRlbnQoaHRtbF8wYzgyZDczMzU4Zjc0MGFhYjI1ZmQyZTViZWU4Y2UyNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl84MjNiNTcxMTEyMjE0ZTA2ODIwZjFmZDJjZGEyNTZlNi5iaW5kUG9wdXAocG9wdXBfODVmMjBkNTgzZmUwNDZiZTgzZDIxZDAyYmZjNzY4MjApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzg1ZDg3NTE1Yjg0NGIzYmI5NDBjNmE5YjFjM2Y4ZWEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84ZDYxMGE5OGFiMzk0NjFkYTFlZWE2NDM2ZTRmNzFkNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lM2YwZTE4NjBkYzA0OTZmYjA1OTNkYWMyYjU1MTg3YiA9ICQoJzxkaXYgaWQ9Imh0bWxfZTNmMGUxODYwZGMwNDk2ZmIwNTkzZGFjMmI1NTE4N2IiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJFQ09WRVJFRCBWRUhJQ0xFPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84ZDYxMGE5OGFiMzk0NjFkYTFlZWE2NDM2ZTRmNzFkNi5zZXRDb250ZW50KGh0bWxfZTNmMGUxODYwZGMwNDk2ZmIwNTkzZGFjMmI1NTE4N2IpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNzg1ZDg3NTE1Yjg0NGIzYmI5NDBjNmE5YjFjM2Y4ZWEuYmluZFBvcHVwKHBvcHVwXzhkNjEwYTk4YWIzOTQ2MWRhMWVlYTY0MzZlNGY3MWQ2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzBhMzMxN2Y3NGZmOTQwZDc4NzUxZDczMDYwZDJhYzY2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjkxMWE2NjA2YzRjNDVmYmI0MWUwNDA5Mjg5Y2Y4M2YgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNmFkMzhkM2EyNjc4NGEwNWJhNTM3MzdjYzdhNzgwYmEgPSAkKCc8ZGl2IGlkPSJodG1sXzZhZDM4ZDNhMjY3ODRhMDViYTUzNzM3Y2M3YTc4MGJhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjkxMWE2NjA2YzRjNDVmYmI0MWUwNDA5Mjg5Y2Y4M2Yuc2V0Q29udGVudChodG1sXzZhZDM4ZDNhMjY3ODRhMDViYTUzNzM3Y2M3YTc4MGJhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzBhMzMxN2Y3NGZmOTQwZDc4NzUxZDczMDYwZDJhYzY2LmJpbmRQb3B1cChwb3B1cF82OTExYTY2MDZjNGM0NWZiYjQxZTA0MDkyODljZjgzZik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iZmUyZmRiZWQ5YTE0NTE2OTJlYTQ1YjgwMzczZjRlOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzY1ZmFiNzYxNjFjNTQyODZiNjQ0MmRlZWRjN2I0ZThjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RhOWExYzZjMDQ2NTQ4N2ViOWM5OWYxMzZjZGRjZmY4ID0gJCgnPGRpdiBpZD0iaHRtbF9kYTlhMWM2YzA0NjU0ODdlYjljOTlmMTM2Y2RkY2ZmOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82NWZhYjc2MTYxYzU0Mjg2YjY0NDJkZWVkYzdiNGU4Yy5zZXRDb250ZW50KGh0bWxfZGE5YTFjNmMwNDY1NDg3ZWI5Yzk5ZjEzNmNkZGNmZjgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYmZlMmZkYmVkOWExNDUxNjkyZWE0NWI4MDM3M2Y0ZTguYmluZFBvcHVwKHBvcHVwXzY1ZmFiNzYxNjFjNTQyODZiNjQ0MmRlZWRjN2I0ZThjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhmNDdkNDdkOGZlOTQxNjRiZGU5MTZhN2YxZDEwMDZiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc5ZDgxNGM1YTlmODRkMTM5OGI0YjBiNmM5YzE4MmFmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Q5ODc5YjI4YWJhZTQ2ZDNiZGE3NGQwNzE5MTFhM2IxID0gJCgnPGRpdiBpZD0iaHRtbF9kOTg3OWIyOGFiYWU0NmQzYmRhNzRkMDcxOTExYTNiMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83OWQ4MTRjNWE5Zjg0ZDEzOThiNGIwYjZjOWMxODJhZi5zZXRDb250ZW50KGh0bWxfZDk4NzliMjhhYmFlNDZkM2JkYTc0ZDA3MTkxMWEzYjEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOGY0N2Q0N2Q4ZmU5NDE2NGJkZTkxNmE3ZjFkMTAwNmIuYmluZFBvcHVwKHBvcHVwXzc5ZDgxNGM1YTlmODRkMTM5OGI0YjBiNmM5YzE4MmFmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhkZjg2NDU3MTcwMjRiY2JiYTUyNzZjMWEwZDgyZDcyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NTI4MDYyNzQ2NSwtMTIyLjQ3NTY0NzQ2MDc4NTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfY2NhZGZhNjgzNDUzNGQ4NDg5MTAxYzU1YjFlMTlmOWQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNWEzZWJmMjA5MjEwNGI0ODhkYjBjNTM0Y2VkMjE5YWUgPSAkKCc8ZGl2IGlkPSJodG1sXzVhM2ViZjIwOTIxMDRiNDg4ZGIwYzUzNGNlZDIxOWFlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5ST0JCRVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jY2FkZmE2ODM0NTM0ZDg0ODkxMDFjNTViMWUxOWY5ZC5zZXRDb250ZW50KGh0bWxfNWEzZWJmMjA5MjEwNGI0ODhkYjBjNTM0Y2VkMjE5YWUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOGRmODY0NTcxNzAyNGJjYmJhNTI3NmMxYTBkODJkNzIuYmluZFBvcHVwKHBvcHVwX2NjYWRmYTY4MzQ1MzRkODQ4OTEwMWM1NWIxZTE5ZjlkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAwZWNkZGU0YjA5OTRhZmI4ZDgzNjQzYjAwNWQwMDViID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQyODUxNzM3NDQ0ODk0LC0xMjIuNDIwOTY3NDQwNTY0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDA5OGQ3NzVjNzQ1NDdjMzhhMDdiOTZmZjE4NzNjNmMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZGRkZjhhYjM4YzQ5NDBkZTgxYmY0ZmIyMGIwMjM4YzkgPSAkKCc8ZGl2IGlkPSJodG1sX2RkZGY4YWIzOGM0OTQwZGU4MWJmNGZiMjBiMDIzOGM5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZDA5OGQ3NzVjNzQ1NDdjMzhhMDdiOTZmZjE4NzNjNmMuc2V0Q29udGVudChodG1sX2RkZGY4YWIzOGM0OTQwZGU4MWJmNGZiMjBiMDIzOGM5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzAwZWNkZGU0YjA5OTRhZmI4ZDgzNjQzYjAwNWQwMDViLmJpbmRQb3B1cChwb3B1cF9kMDk4ZDc3NWM3NDU0N2MzOGEwN2I5NmZmMTg3M2M2Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jYzVhZjRiZmZiMWU0YTk2OWQwOWU5NDU1NjY1ZjFkYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mYzAzZDhiZjNiN2E0MDRlOTRkZGJiOThiM2I1Yzc2MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yMGU1NDEwMmM5OTE0MzNhYmRhZGM2MTUwYWViNTgzOCA9ICQoJzxkaXYgaWQ9Imh0bWxfMjBlNTQxMDJjOTkxNDMzYWJkYWRjNjE1MGFlYjU4MzgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZmMwM2Q4YmYzYjdhNDA0ZTk0ZGRiYjk4YjNiNWM3NjEuc2V0Q29udGVudChodG1sXzIwZTU0MTAyYzk5MTQzM2FiZGFkYzYxNTBhZWI1ODM4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2NjNWFmNGJmZmIxZTRhOTY5ZDA5ZTk0NTU2NjVmMWRhLmJpbmRQb3B1cChwb3B1cF9mYzAzZDhiZjNiN2E0MDRlOTRkZGJiOThiM2I1Yzc2MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xNGRlZmYyMmE0MTc0MDkwYTM1Y2M1MjEzZmNlMmM3OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3OTE2NzQyMTg5NjMsLTEyMi40MDYzNDY0MjU2MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82ODQ0OTAxYzU1YWE0NzYwOTU5MjRmOGM5MWQzMzRlNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84MjJmNjUzNDdhODY0NjRmOTkxNTg2OGUxZThlNzUzYiA9ICQoJzxkaXYgaWQ9Imh0bWxfODIyZjY1MzQ3YTg2NDY0Zjk5MTU4NjhlMWU4ZTc1M2IiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzY4NDQ5MDFjNTVhYTQ3NjA5NTkyNGY4YzkxZDMzNGU3LnNldENvbnRlbnQoaHRtbF84MjJmNjUzNDdhODY0NjRmOTkxNTg2OGUxZThlNzUzYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xNGRlZmYyMmE0MTc0MDkwYTM1Y2M1MjEzZmNlMmM3OS5iaW5kUG9wdXAocG9wdXBfNjg0NDkwMWM1NWFhNDc2MDk1OTI0ZjhjOTFkMzM0ZTcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDJkMWRhNTBiNTVjNDIzYjkwODFmZGI4YjJlZDJmZjggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjU3MTg0Mzk1MjgyLC0xMjIuNDA5NTI5OTEzMjc4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzEwNmY2NGY3Yzk1NGVkZThiNWE0OWEzZjEwMzc3NDYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzNjZjQyZDI0OTgzNGMxNGFjNmYwYWRhMThhYjI5NmIgPSAkKCc8ZGl2IGlkPSJodG1sXzczY2Y0MmQyNDk4MzRjMTRhYzZmMGFkYTE4YWIyOTZiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83MTA2ZjY0ZjdjOTU0ZWRlOGI1YTQ5YTNmMTAzNzc0Ni5zZXRDb250ZW50KGh0bWxfNzNjZjQyZDI0OTgzNGMxNGFjNmYwYWRhMThhYjI5NmIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZDJkMWRhNTBiNTVjNDIzYjkwODFmZGI4YjJlZDJmZjguYmluZFBvcHVwKHBvcHVwXzcxMDZmNjRmN2M5NTRlZGU4YjVhNDlhM2YxMDM3NzQ2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JhM2U4YWJjNDlhZjQ2Yzk5ZmFkMTI0NzY3MTJmY2NjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mODQxMzMzMmVmMGU0ZGU2ODNhMzUzOTdjYzI4MGY0YiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wNzUyZjY5MTRjYWY0Mzk4YTFjOTc1ZDUyOTQxYzlhMiA9ICQoJzxkaXYgaWQ9Imh0bWxfMDc1MmY2OTE0Y2FmNDM5OGExYzk3NWQ1Mjk0MWM5YTIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjg0MTMzMzJlZjBlNGRlNjgzYTM1Mzk3Y2MyODBmNGIuc2V0Q29udGVudChodG1sXzA3NTJmNjkxNGNhZjQzOThhMWM5NzVkNTI5NDFjOWEyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2JhM2U4YWJjNDlhZjQ2Yzk5ZmFkMTI0NzY3MTJmY2NjLmJpbmRQb3B1cChwb3B1cF9mODQxMzMzMmVmMGU0ZGU2ODNhMzUzOTdjYzI4MGY0Yik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zODAxZjY2NzAwNzI0MjRjOGM3ZTU0NjZhOTY5N2JmMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NzUyNDMwODc4MywtMTIyLjQxMDczODA5NzMxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2E4MTQ0MGRiMWY3MzQ1YTQ4NjIwNzk0MGZmZDE4ZmE3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2JiNTIyZWQxN2VkNTRiZGY5ZjVmMzRlYTc0ZmE0ODI4ID0gJCgnPGRpdiBpZD0iaHRtbF9iYjUyMmVkMTdlZDU0YmRmOWY1ZjM0ZWE3NGZhNDgyOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2E4MTQ0MGRiMWY3MzQ1YTQ4NjIwNzk0MGZmZDE4ZmE3LnNldENvbnRlbnQoaHRtbF9iYjUyMmVkMTdlZDU0YmRmOWY1ZjM0ZWE3NGZhNDgyOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zODAxZjY2NzAwNzI0MjRjOGM3ZTU0NjZhOTY5N2JmMy5iaW5kUG9wdXAocG9wdXBfYTgxNDQwZGIxZjczNDVhNDg2MjA3OTQwZmZkMThmYTcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDI3ZjhmMDZkMDJhNDlkYjhjZDM0MGY1YTgzMmVhMzQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82ZjdiN2YxZWQ2NDk0OTdiYjFlNmQ3ZmU4ZDcxZmRiNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85NDQ0YjJkMGIxZDY0N2FlODA3YjBiOGM2ZTJhNmJjYyA9ICQoJzxkaXYgaWQ9Imh0bWxfOTQ0NGIyZDBiMWQ2NDdhZTgwN2IwYjhjNmUyYTZiY2MiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82ZjdiN2YxZWQ2NDk0OTdiYjFlNmQ3ZmU4ZDcxZmRiNy5zZXRDb250ZW50KGh0bWxfOTQ0NGIyZDBiMWQ2NDdhZTgwN2IwYjhjNmUyYTZiY2MpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMDI3ZjhmMDZkMDJhNDlkYjhjZDM0MGY1YTgzMmVhMzQuYmluZFBvcHVwKHBvcHVwXzZmN2I3ZjFlZDY0OTQ5N2JiMWU2ZDdmZThkNzFmZGI3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzYzNWYwYzVlMGIxOTRhOWJhNGNkMzcwMjk4MTQzNTMyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JmMDRmMGM1N2JjYTRiYzNhODQzNWUxY2FiYTA4NzNiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Q1ZmQxNTM0ZjgxODQwYTVhNDc1NmEzMTE3NWZlMWUzID0gJCgnPGRpdiBpZD0iaHRtbF9kNWZkMTUzNGY4MTg0MGE1YTQ3NTZhMzExNzVmZTFlMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2JmMDRmMGM1N2JjYTRiYzNhODQzNWUxY2FiYTA4NzNiLnNldENvbnRlbnQoaHRtbF9kNWZkMTUzNGY4MTg0MGE1YTQ3NTZhMzExNzVmZTFlMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82MzVmMGM1ZTBiMTk0YTliYTRjZDM3MDI5ODE0MzUzMi5iaW5kUG9wdXAocG9wdXBfYmYwNGYwYzU3YmNhNGJjM2E4NDM1ZTFjYWJhMDg3M2IpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjVhMDBkMzkwNzI0NDM2MGIyOTJlNDgxZTkyNzlhZGYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTMxMDgzNDMzMjY0LC0xMjIuNDQ0MzE0MDI1MTg4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzgxMjM2MDA3M2VlNGMxY2FmM2RkOGE0ZWI1ODM5MjAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTU5ZWE5ZmVkMDIyNGYzMmI1NmI5N2FjMWZjOTlhNjMgPSAkKCc8ZGl2IGlkPSJodG1sXzU1OWVhOWZlZDAyMjRmMzJiNTZiOTdhYzFmYzk5YTYzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83ODEyMzYwMDczZWU0YzFjYWYzZGQ4YTRlYjU4MzkyMC5zZXRDb250ZW50KGh0bWxfNTU5ZWE5ZmVkMDIyNGYzMmI1NmI5N2FjMWZjOTlhNjMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMjVhMDBkMzkwNzI0NDM2MGIyOTJlNDgxZTkyNzlhZGYuYmluZFBvcHVwKHBvcHVwXzc4MTIzNjAwNzNlZTRjMWNhZjNkZDhhNGViNTgzOTIwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJiZGI5M2M5MmMwZjQ3MjBiYzZiZTI4ZDVjY2ZiY2IxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JmNWQ2MGI1ZWU2MTQ1OGFhMTAwYjA4MmM4YjU3ODgxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2IwYWU3MjZjMDI4YTQ5Zjk5NDIzMzdmODM0ODU1NjgyID0gJCgnPGRpdiBpZD0iaHRtbF9iMGFlNzI2YzAyOGE0OWY5OTQyMzM3ZjgzNDg1NTY4MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2JmNWQ2MGI1ZWU2MTQ1OGFhMTAwYjA4MmM4YjU3ODgxLnNldENvbnRlbnQoaHRtbF9iMGFlNzI2YzAyOGE0OWY5OTQyMzM3ZjgzNDg1NTY4Mik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yYmRiOTNjOTJjMGY0NzIwYmM2YmUyOGQ1Y2NmYmNiMS5iaW5kUG9wdXAocG9wdXBfYmY1ZDYwYjVlZTYxNDU4YWExMDBiMDgyYzhiNTc4ODEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzRhYjBjOGE4N2I5NGY1MmI5MTIwNGIwYThlZmE3MjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjYwMTYwMTE0MTAzLC0xMjIuNDAzNjQ0NjIwNDM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTQyYjIwY2UzMGJhNGQ5ZThhOTNkMDk4NDJjNjM2OTUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTA3YWIzMGQ3MjZmNDI1ODgzMGEyNjQ1MjliNDc5YTYgPSAkKCc8ZGl2IGlkPSJodG1sX2EwN2FiMzBkNzI2ZjQyNTg4MzBhMjY0NTI5YjQ3OWE2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTQyYjIwY2UzMGJhNGQ5ZThhOTNkMDk4NDJjNjM2OTUuc2V0Q29udGVudChodG1sX2EwN2FiMzBkNzI2ZjQyNTg4MzBhMjY0NTI5YjQ3OWE2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2M0YWIwYzhhODdiOTRmNTJiOTEyMDRiMGE4ZWZhNzIyLmJpbmRQb3B1cChwb3B1cF9hNDJiMjBjZTMwYmE0ZDllOGE5M2QwOTg0MmM2MzY5NSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kODEyZDI2MzRhNDM0YjZiOWVlOGEyM2E5NWQ5NzAyMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NjIzMTA0MDQ3NTgsLTEyMi40MTQ3MTQyOTU1Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2EzNmY4NjBlMjU2NzQzMjM4MDIyZjBjZWVkNTQwN2ZjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Q1MzY0MWM0ODI1NzQ2OGI4YjdlYjgwMDBjYWY0ZjZkID0gJCgnPGRpdiBpZD0iaHRtbF9kNTM2NDFjNDgyNTc0NjhiOGI3ZWI4MDAwY2FmNGY2ZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTM2Zjg2MGUyNTY3NDMyMzgwMjJmMGNlZWQ1NDA3ZmMuc2V0Q29udGVudChodG1sX2Q1MzY0MWM0ODI1NzQ2OGI4YjdlYjgwMDBjYWY0ZjZkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2Q4MTJkMjYzNGE0MzRiNmI5ZWU4YTIzYTk1ZDk3MDIwLmJpbmRQb3B1cChwb3B1cF9hMzZmODYwZTI1Njc0MzIzODAyMmYwY2VlZDU0MDdmYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83NmIyMzU4NjA2OTg0NTA4YTA5MGM4YjljMzE4YzlkNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NjIzMTA0MDQ3NTgsLTEyMi40MTQ3MTQyOTU1Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzE5YTA2MDMzYzMzMDQzZjRhMDRkZGY0ZmUwMzJiMTIxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U5MTYwODAzMTZkZjQ0OTViNTBmOWMxZTRjZGEyZWJkID0gJCgnPGRpdiBpZD0iaHRtbF9lOTE2MDgwMzE2ZGY0NDk1YjUwZjljMWU0Y2RhMmViZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzE5YTA2MDMzYzMzMDQzZjRhMDRkZGY0ZmUwMzJiMTIxLnNldENvbnRlbnQoaHRtbF9lOTE2MDgwMzE2ZGY0NDk1YjUwZjljMWU0Y2RhMmViZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl83NmIyMzU4NjA2OTg0NTA4YTA5MGM4YjljMzE4YzlkNC5iaW5kUG9wdXAocG9wdXBfMTlhMDYwMzNjMzMwNDNmNGEwNGRkZjRmZTAzMmIxMjEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWUwZWVjY2M0ZDhlNDdmZGI0YWVhYjRmYjg4ZGQzYTYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Nzc1MTE4ODk1Njk1LC0xMjIuNDE4MDQ1NDUyNzY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjllNjkwYmIxOTAyNDI2MjkyZWYxNjI4OGYxMjYzNjYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjk0ZGFjODZjZDg4NDE4Nzg5Nzg5ZWRiZmNjMDk2MDYgPSAkKCc8ZGl2IGlkPSJodG1sX2Y5NGRhYzg2Y2Q4ODQxODc4OTc4OWVkYmZjYzA5NjA2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iOWU2OTBiYjE5MDI0MjYyOTJlZjE2Mjg4ZjEyNjM2Ni5zZXRDb250ZW50KGh0bWxfZjk0ZGFjODZjZDg4NDE4Nzg5Nzg5ZWRiZmNjMDk2MDYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMWUwZWVjY2M0ZDhlNDdmZGI0YWVhYjRmYjg4ZGQzYTYuYmluZFBvcHVwKHBvcHVwX2I5ZTY5MGJiMTkwMjQyNjI5MmVmMTYyODhmMTI2MzY2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAwYWY2NDQ5ZDkxMDRjYzQ4YjcxMTNlYzRkMDg1NDgwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgyMDIzODQ3ODk3NSwtMTIyLjQwMTE2MTU1NTYwMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc3MjM2YzM2ZDgyMjRmMDBiYTkzMDMwOTZhMDc1NTQzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzJiYzBlMWVjYWRmNTQwY2M5M2I1NDcwYmU3MGY2MDE2ID0gJCgnPGRpdiBpZD0iaHRtbF8yYmMwZTFlY2FkZjU0MGNjOTNiNTQ3MGJlNzBmNjAxNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc3MjM2YzM2ZDgyMjRmMDBiYTkzMDMwOTZhMDc1NTQzLnNldENvbnRlbnQoaHRtbF8yYmMwZTFlY2FkZjU0MGNjOTNiNTQ3MGJlNzBmNjAxNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wMGFmNjQ0OWQ5MTA0Y2M0OGI3MTEzZWM0ZDA4NTQ4MC5iaW5kUG9wdXAocG9wdXBfNzcyMzZjMzZkODIyNGYwMGJhOTMwMzA5NmEwNzU1NDMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjJlOTZhODA4NjY1NDIxMDlkOTdlMjE3YTM4ZmI3NTEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjcwMDUzMTk2Mjk5OTUsLTEyMi40MDM0MDg2NjkxOTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yNmY3ZDEyZGZkNzM0OTc0YjY4MzVjMzQ4OTQ4MDZiNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kMzlkNjg4NWFlNGU0NDJmYjM5ZDA3OTdmNWYzZGVmZiA9ICQoJzxkaXYgaWQ9Imh0bWxfZDM5ZDY4ODVhZTRlNDQyZmIzOWQwNzk3ZjVmM2RlZmYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yNmY3ZDEyZGZkNzM0OTc0YjY4MzVjMzQ4OTQ4MDZiNS5zZXRDb250ZW50KGh0bWxfZDM5ZDY4ODVhZTRlNDQyZmIzOWQwNzk3ZjVmM2RlZmYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNjJlOTZhODA4NjY1NDIxMDlkOTdlMjE3YTM4ZmI3NTEuYmluZFBvcHVwKHBvcHVwXzI2ZjdkMTJkZmQ3MzQ5NzRiNjgzNWMzNDg5NDgwNmI1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzc1NzNhZmNmZDU4ODRhNWViMDhkNTM1ZTFiMTk0MTJkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzIyOGE2NzU2MWQzYTQ2NzViZWQ3ZTBiODgyMjQwOGU5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2JkNWEzNjAxMTMzYzQxY2Q4OTEzODk2Y2YwYWZhYmY4ID0gJCgnPGRpdiBpZD0iaHRtbF9iZDVhMzYwMTEzM2M0MWNkODkxMzg5NmNmMGFmYWJmOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yMjhhNjc1NjFkM2E0Njc1YmVkN2UwYjg4MjI0MDhlOS5zZXRDb250ZW50KGh0bWxfYmQ1YTM2MDExMzNjNDFjZDg5MTM4OTZjZjBhZmFiZjgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNzU3M2FmY2ZkNTg4NGE1ZWIwOGQ1MzVlMWIxOTQxMmQuYmluZFBvcHVwKHBvcHVwXzIyOGE2NzU2MWQzYTQ2NzViZWQ3ZTBiODgyMjQwOGU5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U1YzMwZmM4OWIwZTQ5OWRiNmFmYTA0ZTRhNWVlMWRmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzUzMDE4NjUzNzQ0NjA0LC0xMjIuNDE4NTg3MTcyMjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2RhOWI3ZDhmMjU1NDIwNTgwOTY4MjcxNDAyZDM0YTEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTUwYWY3NTE0YTI5NDdlODkwNzJlZGIzN2M4YzRiNzIgPSAkKCc8ZGl2IGlkPSJodG1sX2E1MGFmNzUxNGEyOTQ3ZTg5MDcyZWRiMzdjOGM0YjcyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdkYTliN2Q4ZjI1NTQyMDU4MDk2ODI3MTQwMmQzNGExLnNldENvbnRlbnQoaHRtbF9hNTBhZjc1MTRhMjk0N2U4OTA3MmVkYjM3YzhjNGI3Mik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9lNWMzMGZjODliMGU0OTlkYjZhZmEwNGU0YTVlZTFkZi5iaW5kUG9wdXAocG9wdXBfN2RhOWI3ZDhmMjU1NDIwNTgwOTY4MjcxNDAyZDM0YTEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMGMzMmU0ZjY3YzNkNDdhZWE2MTdhMjU2OGZhZDY4Y2EgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODRhY2NhNWI5NzgyNDcwNTk0YWJmMDUyNmJiMTdiYmYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjQyZjM3YTkyNzBhNGM5MGE5NzM4YTU3YzcyY2E1ZjggPSAkKCc8ZGl2IGlkPSJodG1sX2Y0MmYzN2E5MjcwYTRjOTBhOTczOGE1N2M3MmNhNWY4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5GUkFVRDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODRhY2NhNWI5NzgyNDcwNTk0YWJmMDUyNmJiMTdiYmYuc2V0Q29udGVudChodG1sX2Y0MmYzN2E5MjcwYTRjOTBhOTczOGE1N2M3MmNhNWY4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzBjMzJlNGY2N2MzZDQ3YWVhNjE3YTI1NjhmYWQ2OGNhLmJpbmRQb3B1cChwb3B1cF84NGFjY2E1Yjk3ODI0NzA1OTRhYmYwNTI2YmIxN2JiZik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jOTVkNTk2NDk2ZDM0YzZjYWUzZTY2NDhjZmJlNTExMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5MDUzODk5MzcyNSwtMTIyLjQwMzkxNTY4MTU3MTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDkxYjM3NDBkYjM3NGEzZWEzZjQ0YjY1MzQ2YmJmYzAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfY2E5OWZhNzRkMGFhNGIzZTkzMTQyZDNiMWM5MmUxYmIgPSAkKCc8ZGl2IGlkPSJodG1sX2NhOTlmYTc0ZDBhYTRiM2U5MzE0MmQzYjFjOTJlMWJiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80OTFiMzc0MGRiMzc0YTNlYTNmNDRiNjUzNDZiYmZjMC5zZXRDb250ZW50KGh0bWxfY2E5OWZhNzRkMGFhNGIzZTkzMTQyZDNiMWM5MmUxYmIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYzk1ZDU5NjQ5NmQzNGM2Y2FlM2U2NjQ4Y2ZiZTUxMTIuYmluZFBvcHVwKHBvcHVwXzQ5MWIzNzQwZGIzNzRhM2VhM2Y0NGI2NTM0NmJiZmMwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZjOTAxZDVhZDU3MTQ3ZTg4M2I0ZWU4ODI1Y2UyOGUxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzMDk5ODI0NDU5MjEsLTEyMi40MTkxODMwOTYzNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81NDYyNzEyZTgzYjQ0NTVmYWFiMjBhYThkMWMzODFjYSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iZDhiMGVmMDFmOWM0MDBkYTFhYTkwMTc4NDBhMDFiNyA9ICQoJzxkaXYgaWQ9Imh0bWxfYmQ4YjBlZjAxZjljNDAwZGExYWE5MDE3ODQwYTAxYjciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81NDYyNzEyZTgzYjQ0NTVmYWFiMjBhYThkMWMzODFjYS5zZXRDb250ZW50KGh0bWxfYmQ4YjBlZjAxZjljNDAwZGExYWE5MDE3ODQwYTAxYjcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNmM5MDFkNWFkNTcxNDdlODgzYjRlZTg4MjVjZTI4ZTEuYmluZFBvcHVwKHBvcHVwXzU0NjI3MTJlODNiNDQ1NWZhYWIyMGFhOGQxYzM4MWNhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzM5ZGRjNzk0ODFiODQyMTJhMTg3Njg4MTE4MmEwYWQzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQwNzM2MDU0ODM1NzksLTEyMi4zODg3NTMwNDY5OTddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81MjMxYTY4MTgwNzk0ZDljYjA4MzZmZjViMmZiMzk2NiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82MWI1NjdkYzEzOWM0MDk4OWI0MGU5Mzg2ZWIxNWIxYyA9ICQoJzxkaXYgaWQ9Imh0bWxfNjFiNTY3ZGMxMzljNDA5ODliNDBlOTM4NmViMTViMWMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81MjMxYTY4MTgwNzk0ZDljYjA4MzZmZjViMmZiMzk2Ni5zZXRDb250ZW50KGh0bWxfNjFiNTY3ZGMxMzljNDA5ODliNDBlOTM4NmViMTViMWMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMzlkZGM3OTQ4MWI4NDIxMmExODc2ODgxMTgyYTBhZDMuYmluZFBvcHVwKHBvcHVwXzUyMzFhNjgxODA3OTRkOWNiMDgzNmZmNWIyZmIzOTY2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ViY2Q4M2FiMThlOTQxY2NiNzdkYTc4MTA3MzNlMDNmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc0OTkxMjk0NDM2NiwtMTIyLjQzNzc5OTcwMzQ2OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzUwNzdiMDY0MTA5MTRiYTJiOTU0N2E3MDgyMmIxYTNlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2I0ZjkwNGE2MjM0YzQ0MWY4MTIyZWFiNDEwNzhhYWQ4ID0gJCgnPGRpdiBpZD0iaHRtbF9iNGY5MDRhNjIzNGM0NDFmODEyMmVhYjQxMDc4YWFkOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTA3N2IwNjQxMDkxNGJhMmI5NTQ3YTcwODIyYjFhM2Uuc2V0Q29udGVudChodG1sX2I0ZjkwNGE2MjM0YzQ0MWY4MTIyZWFiNDEwNzhhYWQ4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2ViY2Q4M2FiMThlOTQxY2NiNzdkYTc4MTA3MzNlMDNmLmJpbmRQb3B1cChwb3B1cF81MDc3YjA2NDEwOTE0YmEyYjk1NDdhNzA4MjJiMWEzZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83MjAwZmIzYTBiYWM0YWRiOWVlZGI4ZmRmYzA3MTA0NyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzA5MDI3NDM2NjksLTEyMi40MjEzMzI2ODQ2MzNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80YjI0NzAyZTNiNjU0M2MyYmIzMWVhOGUxODdlNzlhZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kOTc5MzFlYTA1NzU0ZjI2ODE5YWI2MDM1ZDQ5YjVmMyA9ICQoJzxkaXYgaWQ9Imh0bWxfZDk3OTMxZWEwNTc1NGYyNjgxOWFiNjAzNWQ0OWI1ZjMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80YjI0NzAyZTNiNjU0M2MyYmIzMWVhOGUxODdlNzlhZi5zZXRDb250ZW50KGh0bWxfZDk3OTMxZWEwNTc1NGYyNjgxOWFiNjAzNWQ0OWI1ZjMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNzIwMGZiM2EwYmFjNGFkYjllZWRiOGZkZmMwNzEwNDcuYmluZFBvcHVwKHBvcHVwXzRiMjQ3MDJlM2I2NTQzYzJiYjMxZWE4ZTE4N2U3OWFmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzYyNTMxNjA3MmIyZDRiMjliNzczYTY0NDQ5NDhjNTNlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3MDkwMjc0MzY2OSwtMTIyLjQyMTMzMjY4NDYzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2E2Mzc1NWY3NjRlNjRlYzk4ZDlkNDYwZWE1YjljOWRmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzY5YTQ2MjExMmU3YTQ3YjlhMWMwZDEwNWE0ZTZmZmMyID0gJCgnPGRpdiBpZD0iaHRtbF82OWE0NjIxMTJlN2E0N2I5YTFjMGQxMDVhNGU2ZmZjMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2E2Mzc1NWY3NjRlNjRlYzk4ZDlkNDYwZWE1YjljOWRmLnNldENvbnRlbnQoaHRtbF82OWE0NjIxMTJlN2E0N2I5YTFjMGQxMDVhNGU2ZmZjMik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82MjUzMTYwNzJiMmQ0YjI5Yjc3M2E2NDQ0OTQ4YzUzZS5iaW5kUG9wdXAocG9wdXBfYTYzNzU1Zjc2NGU2NGVjOThkOWQ0NjBlYTViOWM5ZGYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWY2Nzc2N2Y0OWFmNDM5NTlkNzZjMTNjMTkzNDM0YmYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjdkYzNhYzI0OWQ0NDNlN2IwMTYxNWEzYjI5Y2RhMWMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZWJkYWE1ZGMzNDU4NDY3NTk3YmQ1MWU0MDU4NzQwZTMgPSAkKCc8ZGl2IGlkPSJodG1sX2ViZGFhNWRjMzQ1ODQ2NzU5N2JkNTFlNDA1ODc0MGUzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjdkYzNhYzI0OWQ0NDNlN2IwMTYxNWEzYjI5Y2RhMWMuc2V0Q29udGVudChodG1sX2ViZGFhNWRjMzQ1ODQ2NzU5N2JkNTFlNDA1ODc0MGUzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzFmNjc3NjdmNDlhZjQzOTU5ZDc2YzEzYzE5MzQzNGJmLmJpbmRQb3B1cChwb3B1cF82N2RjM2FjMjQ5ZDQ0M2U3YjAxNjE1YTNiMjljZGExYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hODAxYTczMmExZDA0MGZhODJmMTM1YmZlMjExMDY2MyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDAzNzk5OTUxMjc5NSwtMTIyLjQwNDU5NDE0MDYzNF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzYwN2I3ZjM2MDE0MTQ0ZDk5Zjk0MzFhNTgzOWYwOTJiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM2OTM5MzIyMTMzMjQ4YjBhMzA5ZGQ0Y2MxMTJiZjIyID0gJCgnPGRpdiBpZD0iaHRtbF8zNjkzOTMyMjEzMzI0OGIwYTMwOWRkNGNjMTEyYmYyMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82MDdiN2YzNjAxNDE0NGQ5OWY5NDMxYTU4MzlmMDkyYi5zZXRDb250ZW50KGh0bWxfMzY5MzkzMjIxMzMyNDhiMGEzMDlkZDRjYzExMmJmMjIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYTgwMWE3MzJhMWQwNDBmYTgyZjEzNWJmZTIxMTA2NjMuYmluZFBvcHVwKHBvcHVwXzYwN2I3ZjM2MDE0MTQ0ZDk5Zjk0MzFhNTgzOWYwOTJiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U4MzkxMzJmMjYxMDQ1N2JhMmY0MmM5NDQ1NGVjMzU3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzk1MzMzODI2NzQzNiwtMTIyLjM5NzM3Mzc0MDA2Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Y3NjE1YTdjY2QwOTQ2MDVhMGY3YWE0MTViZmVhN2Y1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2FlZmU1MjRkMzUwNjQ1ZjViNmNjZTFlZGZkOTg3ZjEzID0gJCgnPGRpdiBpZD0iaHRtbF9hZWZlNTI0ZDM1MDY0NWY1YjZjY2UxZWRmZDk4N2YxMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mNzYxNWE3Y2NkMDk0NjA1YTBmN2FhNDE1YmZlYTdmNS5zZXRDb250ZW50KGh0bWxfYWVmZTUyNGQzNTA2NDVmNWI2Y2NlMWVkZmQ5ODdmMTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZTgzOTEzMmYyNjEwNDU3YmEyZjQyYzk0NDU0ZWMzNTcuYmluZFBvcHVwKHBvcHVwX2Y3NjE1YTdjY2QwOTQ2MDVhMGY3YWE0MTViZmVhN2Y1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzViODk5NzQxNTBhOTRhZjk5NDZiYjAzZjVkZTUzODRiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3NTE1ODc0MTYyMjk1LC0xMjIuNDA3NDM0OTg5NTIzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOGQ4ZDYxYTBlODdmNGNiZmFkNGFkMTlmNzk2MzI3YmEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDg2MmI1YTkzNWJkNGYxNGEyZTc1Y2Q2ZGVmNzZjNDAgPSAkKCc8ZGl2IGlkPSJodG1sXzQ4NjJiNWE5MzViZDRmMTRhMmU3NWNkNmRlZjc2YzQwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOGQ4ZDYxYTBlODdmNGNiZmFkNGFkMTlmNzk2MzI3YmEuc2V0Q29udGVudChodG1sXzQ4NjJiNWE5MzViZDRmMTRhMmU3NWNkNmRlZjc2YzQwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzViODk5NzQxNTBhOTRhZjk5NDZiYjAzZjVkZTUzODRiLmJpbmRQb3B1cChwb3B1cF84ZDhkNjFhMGU4N2Y0Y2JmYWQ0YWQxOWY3OTYzMjdiYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80YzkyMGEyNDU2MWE0NGNjODg1MTI0MWM2MDZhNzRjMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3ODUyMzM3NzYwMzIsLTEyMi40MDM0NjQwODAwMzNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80MzFjMjViMGI2MGI0YmVlOTYzOGRjNTY0Njk4YzhkMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81NzBmOTg2NTY2MzI0OTA5YTE4MjUzYTMxNmI5MjcyOSA9ICQoJzxkaXYgaWQ9Imh0bWxfNTcwZjk4NjU2NjMyNDkwOWExODI1M2EzMTZiOTI3MjkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlBST1NUSVRVVElPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDMxYzI1YjBiNjBiNGJlZTk2MzhkYzU2NDY5OGM4ZDEuc2V0Q29udGVudChodG1sXzU3MGY5ODY1NjYzMjQ5MDlhMTgyNTNhMzE2YjkyNzI5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzRjOTIwYTI0NTYxYTQ0Y2M4ODUxMjQxYzYwNmE3NGMwLmJpbmRQb3B1cChwb3B1cF80MzFjMjViMGI2MGI0YmVlOTYzOGRjNTY0Njk4YzhkMSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80MGQwYTkwZmQ0NDE0MmM4OGMyM2I3NmVlYmE0NzY0MCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3ODUyMzM3NzYwMzIsLTEyMi40MDM0NjQwODAwMzNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83ZjI1ODc5MDMzNzY0OWEwOTJiODIxODM3YWY5ZGUwZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83MTVlYjMyNmI0NDU0ZWRlODhmNWM4YWJjNjg2NDEzMCA9ICQoJzxkaXYgaWQ9Imh0bWxfNzE1ZWIzMjZiNDQ1NGVkZTg4ZjVjOGFiYzY4NjQxMzAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83ZjI1ODc5MDMzNzY0OWEwOTJiODIxODM3YWY5ZGUwZS5zZXRDb250ZW50KGh0bWxfNzE1ZWIzMjZiNDQ1NGVkZTg4ZjVjOGFiYzY4NjQxMzApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNDBkMGE5MGZkNDQxNDJjODhjMjNiNzZlZWJhNDc2NDAuYmluZFBvcHVwKHBvcHVwXzdmMjU4NzkwMzM3NjQ5YTA5MmI4MjE4MzdhZjlkZTBlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzlkODVhNTkwNTVjNTRlNWNiODVmZDQ4M2I2NmM2MjFjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80YjAxMThhNzZlMGU0ODY4Yjg3OTUxMTM5ZDZjMmE2MCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84Y2Q3ZTc1NDNhOTE0ZWUwOWE5YjVlMDFmMTMwYzhlZiA9ICQoJzxkaXYgaWQ9Imh0bWxfOGNkN2U3NTQzYTkxNGVlMDlhOWI1ZTAxZjEzMGM4ZWYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNGIwMTE4YTc2ZTBlNDg2OGI4Nzk1MTEzOWQ2YzJhNjAuc2V0Q29udGVudChodG1sXzhjZDdlNzU0M2E5MTRlZTA5YTliNWUwMWYxMzBjOGVmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzlkODVhNTkwNTVjNTRlNWNiODVmZDQ4M2I2NmM2MjFjLmJpbmRQb3B1cChwb3B1cF80YjAxMThhNzZlMGU0ODY4Yjg3OTUxMTM5ZDZjMmE2MCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hMjA4NDBhNjRiNTU0NTlhOWM4MjAxZDMzNDM2ZmFlZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjBjODM5ODEzZjk5NGZjNzgyZWEwNzk1NDljOGUwMGEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTE3YmEyYTQ2YzNhNDZmYjk3MTAzMjUzMDk2MjlmODcgPSAkKCc8ZGl2IGlkPSJodG1sX2ExN2JhMmE0NmMzYTQ2ZmI5NzEwMzI1MzA5NjI5Zjg3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iMGM4Mzk4MTNmOTk0ZmM3ODJlYTA3OTU0OWM4ZTAwYS5zZXRDb250ZW50KGh0bWxfYTE3YmEyYTQ2YzNhNDZmYjk3MTAzMjUzMDk2MjlmODcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYTIwODQwYTY0YjU1NDU5YTljODIwMWQzMzQzNmZhZWQuYmluZFBvcHVwKHBvcHVwX2IwYzgzOTgxM2Y5OTRmYzc4MmVhMDc5NTQ5YzhlMDBhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzcyZjgzY2Y3ZTNiNjQxNGJiYmUxZjZkYTcwM2ViYzYzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgwNTI3NTc4NTA5LC0xMjIuMzk2ODQ5MDE1MTcyMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zMDhmYzZlMTI5ZDI0OTc0OTZhYTdjOWVjYTEzMmQzOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81OTdiMTk2ZWZjYzM0Nzk2YWIzNTk1ZTdhOWQwMzdkYiA9ICQoJzxkaXYgaWQ9Imh0bWxfNTk3YjE5NmVmY2MzNDc5NmFiMzU5NWU3YTlkMDM3ZGIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zMDhmYzZlMTI5ZDI0OTc0OTZhYTdjOWVjYTEzMmQzOC5zZXRDb250ZW50KGh0bWxfNTk3YjE5NmVmY2MzNDc5NmFiMzU5NWU3YTlkMDM3ZGIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNzJmODNjZjdlM2I2NDE0YmJiZTFmNmRhNzAzZWJjNjMuYmluZFBvcHVwKHBvcHVwXzMwOGZjNmUxMjlkMjQ5NzQ5NmFhN2M5ZWNhMTMyZDM4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2NhNWYyMDNjMDZhZDQ1Zjc4NjQ5MzYzODNlYzI5MDUyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTUzYTFhNzkzZDM2NDIwYTg0YTRiZTExYmRmZTEyOGEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMGQwMzE0MzU2YTU0NDNlMDgwNzEzZmZhMzc0ODE4NjYgPSAkKCc8ZGl2IGlkPSJodG1sXzBkMDMxNDM1NmE1NDQzZTA4MDcxM2ZmYTM3NDgxODY2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81NTNhMWE3OTNkMzY0MjBhODRhNGJlMTFiZGZlMTI4YS5zZXRDb250ZW50KGh0bWxfMGQwMzE0MzU2YTU0NDNlMDgwNzEzZmZhMzc0ODE4NjYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfY2E1ZjIwM2MwNmFkNDVmNzg2NDkzNjM4M2VjMjkwNTIuYmluZFBvcHVwKHBvcHVwXzU1M2ExYTc5M2QzNjQyMGE4NGE0YmUxMWJkZmUxMjhhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2QxZjJlYjQ0YjllOTQyMTY4MDZkMjYwYWFlMDYwY2RjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI5MjExNDY0NzM1OSwtMTIyLjQwMDgzNDI4MzAzMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzdmMTU1NGMzNTZiYjQ0NjY4NTZjZWM0NzhjMzNhMjNiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQ0NTA5MTMxMzkxNjQyOGY4YjJkMDI4NzBiYTY1YWQzID0gJCgnPGRpdiBpZD0iaHRtbF80NDUwOTEzMTM5MTY0MjhmOGIyZDAyODcwYmE2NWFkMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdmMTU1NGMzNTZiYjQ0NjY4NTZjZWM0NzhjMzNhMjNiLnNldENvbnRlbnQoaHRtbF80NDUwOTEzMTM5MTY0MjhmOGIyZDAyODcwYmE2NWFkMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kMWYyZWI0NGI5ZTk0MjE2ODA2ZDI2MGFhZTA2MGNkYy5iaW5kUG9wdXAocG9wdXBfN2YxNTU0YzM1NmJiNDQ2Njg1NmNlYzQ3OGMzM2EyM2IpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNmQ0YmIzOTI5ZDU1NDA0NjliZGVjOTJhNDlmOTM3NTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82MjdjZTIxNTBmYmE0MGFjYjA5ZmRlM2JjOTJhYzY0NCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84ZDQ5ODc5OTAzNDg0NTcwYTkxYmM3YzFiZWM3YjVlNiA9ICQoJzxkaXYgaWQ9Imh0bWxfOGQ0OTg3OTkwMzQ4NDU3MGE5MWJjN2MxYmVjN2I1ZTYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzYyN2NlMjE1MGZiYTQwYWNiMDlmZGUzYmM5MmFjNjQ0LnNldENvbnRlbnQoaHRtbF84ZDQ5ODc5OTAzNDg0NTcwYTkxYmM3YzFiZWM3YjVlNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82ZDRiYjM5MjlkNTU0MDQ2OWJkZWM5MmE0OWY5Mzc1OS5iaW5kUG9wdXAocG9wdXBfNjI3Y2UyMTUwZmJhNDBhY2IwOWZkZTNiYzkyYWM2NDQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjJlZmZkNjI4MGRkNDM5NmFmNDg2MGZkYjM5ZjA3OWIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzkzNzE2MDJiY2FiNDQ4ZDc4ZGNlNmQ2NjFlMmVhN2IzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzY2ZWQ5NzMwMGJhMDQ3ZjRhYzliZjFiYjYzNDZlMWVkID0gJCgnPGRpdiBpZD0iaHRtbF82NmVkOTczMDBiYTA0N2Y0YWM5YmYxYmI2MzQ2ZTFlZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U0VDT05EQVJZIENPREVTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85MzcxNjAyYmNhYjQ0OGQ3OGRjZTZkNjYxZTJlYTdiMy5zZXRDb250ZW50KGh0bWxfNjZlZDk3MzAwYmEwNDdmNGFjOWJmMWJiNjM0NmUxZWQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZjJlZmZkNjI4MGRkNDM5NmFmNDg2MGZkYjM5ZjA3OWIuYmluZFBvcHVwKHBvcHVwXzkzNzE2MDJiY2FiNDQ4ZDc4ZGNlNmQ2NjFlMmVhN2IzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk2YmNjMmRkMzg5YTQyNzU4NmU1Yjk1YmViZmQ2YWY4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lOGMxNGNhMGE2NWI0YWQxYWU3MDc1MDVmZjMyZjdjYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xYjhmY2FjNWM4NTg0ZTc5OWVjMmVhMjdhYzMyMTU4ZiA9ICQoJzxkaXYgaWQ9Imh0bWxfMWI4ZmNhYzVjODU4NGU3OTllYzJlYTI3YWMzMjE1OGYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNVU1BJQ0lPVVMgT0NDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lOGMxNGNhMGE2NWI0YWQxYWU3MDc1MDVmZjMyZjdjYi5zZXRDb250ZW50KGh0bWxfMWI4ZmNhYzVjODU4NGU3OTllYzJlYTI3YWMzMjE1OGYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTZiY2MyZGQzODlhNDI3NTg2ZTViOTViZWJmZDZhZjguYmluZFBvcHVwKHBvcHVwX2U4YzE0Y2EwYTY1YjRhZDFhZTcwNzUwNWZmMzJmN2NiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzE3YzA5YjU4NjllMzQ0OWFhYWUxNDAwZTkxOGE1NTE3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iYmQ4N2E4OWE1ZDQ0MWQzYWFjM2ZhYjI0OTI1Y2M4ZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kMzc4MzQyYWNmNjk0OTU5YThjZjM3Y2U4OThiNGE5NSA9ICQoJzxkaXYgaWQ9Imh0bWxfZDM3ODM0MmFjZjY5NDk1OWE4Y2YzN2NlODk4YjRhOTUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iYmQ4N2E4OWE1ZDQ0MWQzYWFjM2ZhYjI0OTI1Y2M4ZS5zZXRDb250ZW50KGh0bWxfZDM3ODM0MmFjZjY5NDk1OWE4Y2YzN2NlODk4YjRhOTUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMTdjMDliNTg2OWUzNDQ5YWFhZTE0MDBlOTE4YTU1MTcuYmluZFBvcHVwKHBvcHVwX2JiZDg3YTg5YTVkNDQxZDNhYWMzZmFiMjQ5MjVjYzhlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2VjOTE4ODcyNzhjODQ4YTk5NjkzMDFhNGVlMzI3NGZhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg4MzIzNTQ0OTkwNCwtMTIyLjQxMTg1NzAzMjU0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjcyZDM4MmY4NzNkNDE5MmExZTIzNTBkZmUxOTlmMDYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZWFmMzk2ODQ5MzVmNDAxN2IzM2NkZmZjZTkxY2I2ZmEgPSAkKCc8ZGl2IGlkPSJodG1sX2VhZjM5Njg0OTM1ZjQwMTdiMzNjZGZmY2U5MWNiNmZhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mNzJkMzgyZjg3M2Q0MTkyYTFlMjM1MGRmZTE5OWYwNi5zZXRDb250ZW50KGh0bWxfZWFmMzk2ODQ5MzVmNDAxN2IzM2NkZmZjZTkxY2I2ZmEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZWM5MTg4NzI3OGM4NDhhOTk2OTMwMWE0ZWUzMjc0ZmEuYmluZFBvcHVwKHBvcHVwX2Y3MmQzODJmODczZDQxOTJhMWUyMzUwZGZlMTk5ZjA2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RiMWQ1OTRkNDMzZDQwYzc4ZjdhYTY5OGFkOTUzZDE3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU1OTk3NzMzOTg1NiwtMTIyLjQwOTQzNTYxNzEwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JiNTBkMGVmYzM1NjQxNmY5ZDI0YzQxNmFjMTU5MmI2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2JhMGM1YTY1YmYzOTQ5NDc5ZmVmOTI5YTcwYWU2YzU0ID0gJCgnPGRpdiBpZD0iaHRtbF9iYTBjNWE2NWJmMzk0OTQ3OWZlZjkyOWE3MGFlNmM1NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2JiNTBkMGVmYzM1NjQxNmY5ZDI0YzQxNmFjMTU5MmI2LnNldENvbnRlbnQoaHRtbF9iYTBjNWE2NWJmMzk0OTQ3OWZlZjkyOWE3MGFlNmM1NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kYjFkNTk0ZDQzM2Q0MGM3OGY3YWE2OThhZDk1M2QxNy5iaW5kUG9wdXAocG9wdXBfYmI1MGQwZWZjMzU2NDE2ZjlkMjRjNDE2YWMxNTkyYjYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMGVjZTI3YWM5MjNjNDdjYmJlYmI4ODk0NTQ1OTY3MjkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODcwNzk4MTQ0NDQzLC0xMjIuNDI1ODgzMzU4MTQ4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDQ2NWQyODkyOWU5NDUxNTkwN2ZhZDg1Y2NiNTg1ZGYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMWM5YTRjZTU1MDcwNDIyZDkwMjFlZDVlMzE1ODI0YzYgPSAkKCc8ZGl2IGlkPSJodG1sXzFjOWE0Y2U1NTA3MDQyMmQ5MDIxZWQ1ZTMxNTgyNGM2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Q0NjVkMjg5MjllOTQ1MTU5MDdmYWQ4NWNjYjU4NWRmLnNldENvbnRlbnQoaHRtbF8xYzlhNGNlNTUwNzA0MjJkOTAyMWVkNWUzMTU4MjRjNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wZWNlMjdhYzkyM2M0N2NiYmViYjg4OTQ1NDU5NjcyOS5iaW5kUG9wdXAocG9wdXBfZDQ2NWQyODkyOWU5NDUxNTkwN2ZhZDg1Y2NiNTg1ZGYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTRjNmVjZjg3YzA2NGMzYTgxNWRlMmNmYWNiZGMzNDYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzYwMzc0NDY2ODYyMDQsLTEyMi40MTUxMjY1NDMwMDEwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RmZGMxZmJiM2RlYjQyY2VhMjZmOTYzYmZjOWM2ZGY2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Y3ZjA5MWY1YTdmZTRmM2M5OTE4NWM0MzY0M2U5ZjFiID0gJCgnPGRpdiBpZD0iaHRtbF9mN2YwOTFmNWE3ZmU0ZjNjOTkxODVjNDM2NDNlOWYxYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kZmRjMWZiYjNkZWI0MmNlYTI2Zjk2M2JmYzljNmRmNi5zZXRDb250ZW50KGh0bWxfZjdmMDkxZjVhN2ZlNGYzYzk5MTg1YzQzNjQzZTlmMWIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYTRjNmVjZjg3YzA2NGMzYTgxNWRlMmNmYWNiZGMzNDYuYmluZFBvcHVwKHBvcHVwX2RmZGMxZmJiM2RlYjQyY2VhMjZmOTYzYmZjOWM2ZGY2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAyODY3YzIzNWQ2NzQ3ZTZiODQzYzdhODY5YmIzMDIzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEyNzY3ODg0ODIxLC0xMjIuNDMxOTI4MDExMDg5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzljNjdlZjZiMWFkNDM3YmI4MjI2ZmJhZGE1OTk1M2MgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjhlYzlhZjYxMWEyNDYxZjg0NGI1MTdlZjE1ZmI2NzAgPSAkKCc8ZGl2IGlkPSJodG1sXzI4ZWM5YWY2MTFhMjQ2MWY4NDRiNTE3ZWYxNWZiNjcwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzljNjdlZjZiMWFkNDM3YmI4MjI2ZmJhZGE1OTk1M2Muc2V0Q29udGVudChodG1sXzI4ZWM5YWY2MTFhMjQ2MWY4NDRiNTE3ZWYxNWZiNjcwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzAyODY3YzIzNWQ2NzQ3ZTZiODQzYzdhODY5YmIzMDIzLmJpbmRQb3B1cChwb3B1cF9jOWM2N2VmNmIxYWQ0MzdiYjgyMjZmYmFkYTU5OTUzYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wMzE2YmEwNzljZDI0ODQ4OGZlMmI3NGU2MGE0YmFlNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4OTU3MTAyNTU4NjMsLTEyMi40MDIxNjM3MTM2MThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iNGM1ZTgzMTU3NGE0OTcxYTI3YTk3NTY2YTE3MzNmNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yNDQyMjM5ZDJmMzY0ZWVhYjA1NTU4MDQ4ZjhkZTFmNCA9ICQoJzxkaXYgaWQ9Imh0bWxfMjQ0MjIzOWQyZjM2NGVlYWIwNTU1ODA0OGY4ZGUxZjQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkRSVU5LRU5ORVNTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iNGM1ZTgzMTU3NGE0OTcxYTI3YTk3NTY2YTE3MzNmNS5zZXRDb250ZW50KGh0bWxfMjQ0MjIzOWQyZjM2NGVlYWIwNTU1ODA0OGY4ZGUxZjQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMDMxNmJhMDc5Y2QyNDg0ODhmZTJiNzRlNjBhNGJhZTUuYmluZFBvcHVwKHBvcHVwX2I0YzVlODMxNTc0YTQ5NzFhMjdhOTc1NjZhMTczM2Y1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzMzMWYxMzY4YmNkMDQ5YmJhN2VkMzExMThjMTE4NzA3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2NhNWI2YmU4ZjhhNjRhMjRiNDQ5NTZlOWRjMDhiZTVlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2NkM2RkYzc2ZDAyNTQ4OTJiY2M3MjE5Nzg2ZTBhNTRmID0gJCgnPGRpdiBpZD0iaHRtbF9jZDNkZGM3NmQwMjU0ODkyYmNjNzIxOTc4NmUwYTU0ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NhNWI2YmU4ZjhhNjRhMjRiNDQ5NTZlOWRjMDhiZTVlLnNldENvbnRlbnQoaHRtbF9jZDNkZGM3NmQwMjU0ODkyYmNjNzIxOTc4NmUwYTU0Zik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zMzFmMTM2OGJjZDA0OWJiYTdlZDMxMTE4YzExODcwNy5iaW5kUG9wdXAocG9wdXBfY2E1YjZiZThmOGE2NGEyNGI0NDk1NmU5ZGMwOGJlNWUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODQwNGEyN2Q3NjNiNDFiOThkNzhmMzhjNGY1MWM3OTUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM4MzY1NTY1MzQ3OTQsLTEyMi40MTM3OTA5NzI3ODA5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzZjYThiMWE4NjMxMDQ1NjM4ZTNkYzJiZjE1NGY2MGNjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzAwMWVlZTFmOTgyMjQ5YzJhZmQzYWNjNWY5Yzc3MWQzID0gJCgnPGRpdiBpZD0iaHRtbF8wMDFlZWUxZjk4MjI0OWMyYWZkM2FjYzVmOWM3NzFkMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82Y2E4YjFhODYzMTA0NTYzOGUzZGMyYmYxNTRmNjBjYy5zZXRDb250ZW50KGh0bWxfMDAxZWVlMWY5ODIyNDljMmFmZDNhY2M1ZjljNzcxZDMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfODQwNGEyN2Q3NjNiNDFiOThkNzhmMzhjNGY1MWM3OTUuYmluZFBvcHVwKHBvcHVwXzZjYThiMWE4NjMxMDQ1NjM4ZTNkYzJiZjE1NGY2MGNjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2E2ZjBiZWFiOGM1MzQ1NzZiZmFjNTlmNzI1NGYyZDM3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2YwNDRhYmQ5MmE4ZDQ0M2M4YTMxMTY2NTU2ZWZmYThmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzk1ZjA2ZWFhNTIxMDRmNzY4MjFiNjNhZTFlMWUxM2FkID0gJCgnPGRpdiBpZD0iaHRtbF85NWYwNmVhYTUyMTA0Zjc2ODIxYjYzYWUxZTFlMTNhZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2YwNDRhYmQ5MmE4ZDQ0M2M4YTMxMTY2NTU2ZWZmYThmLnNldENvbnRlbnQoaHRtbF85NWYwNmVhYTUyMTA0Zjc2ODIxYjYzYWUxZTFlMTNhZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9hNmYwYmVhYjhjNTM0NTc2YmZhYzU5ZjcyNTRmMmQzNy5iaW5kUG9wdXAocG9wdXBfZjA0NGFiZDkyYThkNDQzYzhhMzExNjY1NTZlZmZhOGYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGVmYWUyZjExYzQ0NGI3Yzg2MjQxOWE3NjZmZjdmMzkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzczNjIzNjA1MjEyOTYsLTEyMi40MjIwNjcxODQ5MzddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80YTEwOTM5MTc0MzI0MmYzOWM0ZGE4ODJkYmMzMjUzYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82ZDA3NmJlYTE1NTc0ZjUyYmIzOTE5OWQzZTVkNTcxZiA9ICQoJzxkaXYgaWQ9Imh0bWxfNmQwNzZiZWExNTU3NGY1MmJiMzkxOTlkM2U1ZDU3MWYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNFQ09OREFSWSBDT0RFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNGExMDkzOTE3NDMyNDJmMzljNGRhODgyZGJjMzI1M2Muc2V0Q29udGVudChodG1sXzZkMDc2YmVhMTU1NzRmNTJiYjM5MTk5ZDNlNWQ1NzFmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzhlZmFlMmYxMWM0NDRiN2M4NjI0MTlhNzY2ZmY3ZjM5LmJpbmRQb3B1cChwb3B1cF80YTEwOTM5MTc0MzI0MmYzOWM0ZGE4ODJkYmMzMjUzYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80N2Y4MmJiNGJlNGY0YWQ2YTM0NWFlMGM1YmM1MzE5YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNzM2MjM2MDUyMTI5NiwtMTIyLjQyMjA2NzE4NDkzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzhjMDU1ZTVhNmNkODRiZmFhNTViNWIxMzZlZmRkOTQxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzkzNjY2ZGY3Nzc5YjRhOWViZjdmZGIxNjRmMDNjZWQ4ID0gJCgnPGRpdiBpZD0iaHRtbF85MzY2NmRmNzc3OWI0YTllYmY3ZmRiMTY0ZjAzY2VkOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84YzA1NWU1YTZjZDg0YmZhYTU1YjViMTM2ZWZkZDk0MS5zZXRDb250ZW50KGh0bWxfOTM2NjZkZjc3NzliNGE5ZWJmN2ZkYjE2NGYwM2NlZDgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNDdmODJiYjRiZTRmNGFkNmEzNDVhZTBjNWJjNTMxOWEuYmluZFBvcHVwKHBvcHVwXzhjMDU1ZTVhNmNkODRiZmFhNTViNWIxMzZlZmRkOTQxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U4ZmEyNGQ1Y2MwZDQ0YWFiYTExMTA1ZGVhYzg2ZWQxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1OTk4ODMyMzc5Nzk2LC0xMjIuNDExNzQ3MzcxOTI0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNWM5ZTg4ODA2NTNkNDJjODk5YjI1Y2MxMDZmYzhlNjIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDczNWY0OTM4ZTA3NGI0YjlkOWRlNjExMjQyNzg1MzEgPSAkKCc8ZGl2IGlkPSJodG1sXzQ3MzVmNDkzOGUwNzRiNGI5ZDlkZTYxMTI0Mjc4NTMxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TVVNQSUNJT1VTIE9DQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNWM5ZTg4ODA2NTNkNDJjODk5YjI1Y2MxMDZmYzhlNjIuc2V0Q29udGVudChodG1sXzQ3MzVmNDkzOGUwNzRiNGI5ZDlkZTYxMTI0Mjc4NTMxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2U4ZmEyNGQ1Y2MwZDQ0YWFiYTExMTA1ZGVhYzg2ZWQxLmJpbmRQb3B1cChwb3B1cF81YzllODg4MDY1M2Q0MmM4OTliMjVjYzEwNmZjOGU2Mik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hOWQ4ZDIwNjkyYzA0M2FkYjY0NGU5NTExYmQ2NTliOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzBmOTUxMzY0YTI4YzRiMGU4YTMzMDJkNWExZTE2Y2M4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzkzNmU4MmQ4OGY3YjQ3ZTBiOTAwOTU5NjMyMTE0N2M4ID0gJCgnPGRpdiBpZD0iaHRtbF85MzZlODJkODhmN2I0N2UwYjkwMDk1OTYzMjExNDdjOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzBmOTUxMzY0YTI4YzRiMGU4YTMzMDJkNWExZTE2Y2M4LnNldENvbnRlbnQoaHRtbF85MzZlODJkODhmN2I0N2UwYjkwMDk1OTYzMjExNDdjOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9hOWQ4ZDIwNjkyYzA0M2FkYjY0NGU5NTExYmQ2NTliOC5iaW5kUG9wdXAocG9wdXBfMGY5NTEzNjRhMjhjNGIwZThhMzMwMmQ1YTFlMTZjYzgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWNjNDY0Y2YxM2YzNDNjYmI4NWIxNmM4ZjJmZDFmOWYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODUwMjI2NjIyNzg2LC0xMjIuNDExOTg3NjQzNTk1MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8yNmQ1YzAyOWMyM2U0NTNmOWM5NTViNjc1ZTI5MzM4OSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82MjA5YTFjODQyYjQ0NTJhYTJlNmU4NjgzZTUxNTBhNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mYzA3MjdhOWUzOTg0MWU0YmI3NjQzNmYyYmRhZGY4NyA9ICQoJzxkaXYgaWQ9Imh0bWxfZmMwNzI3YTllMzk4NDFlNGJiNzY0MzZmMmJkYWRmODciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjIwOWExYzg0MmI0NDUyYWEyZTZlODY4M2U1MTUwYTQuc2V0Q29udGVudChodG1sX2ZjMDcyN2E5ZTM5ODQxZTRiYjc2NDM2ZjJiZGFkZjg3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2VjYzQ2NGNmMTNmMzQzY2JiODViMTZjOGYyZmQxZjlmLmJpbmRQb3B1cChwb3B1cF82MjA5YTFjODQyYjQ0NTJhYTJlNmU4NjgzZTUxNTBhNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84YWQ3MDlkNWVhMmM0Yzc0ODZmOGNkNjUwNWNkNTQyYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NDYyMDY0OTEwNjQ5NSwtMTIyLjUwMDM4MDQyNzkxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzFhNDM2MmZjZmE1MzRjNjBhMTYzY2Q0YzhjODE0YjliID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Y3MWU5OWQzOWFhOTRkNzE5Y2M0OWQ0YmQwNGYzZjE0ID0gJCgnPGRpdiBpZD0iaHRtbF9mNzFlOTlkMzlhYTk0ZDcxOWNjNDlkNGJkMDRmM2YxNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFhNDM2MmZjZmE1MzRjNjBhMTYzY2Q0YzhjODE0YjliLnNldENvbnRlbnQoaHRtbF9mNzFlOTlkMzlhYTk0ZDcxOWNjNDlkNGJkMDRmM2YxNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl84YWQ3MDlkNWVhMmM0Yzc0ODZmOGNkNjUwNWNkNTQyYy5iaW5kUG9wdXAocG9wdXBfMWE0MzYyZmNmYTUzNGM2MGExNjNjZDRjOGM4MTRiOWIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNmViZTRkZmQ2YzU0NDU2YThiODM4MTIyMzFmNjc4MWIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzUxOTE4MjY3MjE3LC0xMjIuNDY2NTU4NzgwNjgzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjc5ZGJhNjEzY2Q2NGM2NDk4YTIxYjY2NzNhMzg3OTAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzgwNTMwMWI1MzgwNDc5N2EwMDQ4YWU3YWZjOGMxNmUgPSAkKCc8ZGl2IGlkPSJodG1sXzM4MDUzMDFiNTM4MDQ3OTdhMDA0OGFlN2FmYzhjMTZlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5ST0JCRVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82NzlkYmE2MTNjZDY0YzY0OThhMjFiNjY3M2EzODc5MC5zZXRDb250ZW50KGh0bWxfMzgwNTMwMWI1MzgwNDc5N2EwMDQ4YWU3YWZjOGMxNmUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNmViZTRkZmQ2YzU0NDU2YThiODM4MTIyMzFmNjc4MWIuYmluZFBvcHVwKHBvcHVwXzY3OWRiYTYxM2NkNjRjNjQ5OGEyMWI2NjczYTM4NzkwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2MxMjI0YWEyZTk2ZjQxYjBhMjA2OGFmMjliODcyM2FlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQ5MDg0MTcyOTAyOCwtMTIyLjQ4NjkyNTk2MDExNDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODI4Mjc2M2M4M2VjNDY3MTk4NDZlNWE0M2E4ZWIzMjEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjY1OGU2YzI5ZDViNDY3Njk2ZDg5ODFmMDc4MzQ0ZDAgPSAkKCc8ZGl2IGlkPSJodG1sXzI2NThlNmMyOWQ1YjQ2NzY5NmQ4OTgxZjA3ODM0NGQwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODI4Mjc2M2M4M2VjNDY3MTk4NDZlNWE0M2E4ZWIzMjEuc2V0Q29udGVudChodG1sXzI2NThlNmMyOWQ1YjQ2NzY5NmQ4OTgxZjA3ODM0NGQwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2MxMjI0YWEyZTk2ZjQxYjBhMjA2OGFmMjliODcyM2FlLmJpbmRQb3B1cChwb3B1cF84MjgyNzYzYzgzZWM0NjcxOTg0NmU1YTQzYThlYjMyMSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yN2M4YmE4YWE4Njg0ODg0OTcxYzI2M2MxNjM3Yzk4NyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2ODUzNjAxMjM1ODMsLTEyMi40MTU2MTYzMzgzMTk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U3OGRlODE5NzU1NjRmZGI5NzQxYTZlYmNjODU1OGVjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2MwNzNlNGE4NjVhNTQ5YWJiZTgzNDliODNlNjNmNWY0ID0gJCgnPGRpdiBpZD0iaHRtbF9jMDczZTRhODY1YTU0OWFiYmU4MzQ5YjgzZTYzZjVmNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lNzhkZTgxOTc1NTY0ZmRiOTc0MWE2ZWJjYzg1NThlYy5zZXRDb250ZW50KGh0bWxfYzA3M2U0YTg2NWE1NDlhYmJlODM0OWI4M2U2M2Y1ZjQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMjdjOGJhOGFhODY4NDg4NDk3MWMyNjNjMTYzN2M5ODcuYmluZFBvcHVwKHBvcHVwX2U3OGRlODE5NzU1NjRmZGI5NzQxYTZlYmNjODU1OGVjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhlY2Q5YmIxZjkzMTQ0MWRiMzY0Mjk3MmE0MGY4OGI4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NDI5NzcxNDA3NCwtMTIyLjQ0OTc1MTY1MjU2M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzI2ZDVjMDI5YzIzZTQ1M2Y5Yzk1NWI2NzVlMjkzMzg5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzFiNTgyZmJkY2EyYTRhMmZhNmEyYTQ0Y2UzOGQ2MWM4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzFlOGU3ZjRiNTc4OTRmNWQ4MzBlNWRlMGE3OTA1ZDlkID0gJCgnPGRpdiBpZD0iaHRtbF8xZThlN2Y0YjU3ODk0ZjVkODMwZTVkZTBhNzkwNWQ5ZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFiNTgyZmJkY2EyYTRhMmZhNmEyYTQ0Y2UzOGQ2MWM4LnNldENvbnRlbnQoaHRtbF8xZThlN2Y0YjU3ODk0ZjVkODMwZTVkZTBhNzkwNWQ5ZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl84ZWNkOWJiMWY5MzE0NDFkYjM2NDI5NzJhNDBmODhiOC5iaW5kUG9wdXAocG9wdXBfMWI1ODJmYmRjYTJhNGEyZmE2YTJhNDRjZTM4ZDYxYzgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOWFhYTdkNDdhZmZkNGNkYmI3ZThjMmE2NmYyNDBjZjYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMmVmMDQ2Y2Y2Mjc4NGEwM2IyNjhmMGI0ZjQ4ZTc4NzcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDRhNTYwZDkzMTc2NDFjOThjYWQ4M2ViZmMyY2Q0Y2MgPSAkKCc8ZGl2IGlkPSJodG1sXzA0YTU2MGQ5MzE3NjQxYzk4Y2FkODNlYmZjMmNkNGNjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yZWYwNDZjZjYyNzg0YTAzYjI2OGYwYjRmNDhlNzg3Ny5zZXRDb250ZW50KGh0bWxfMDRhNTYwZDkzMTc2NDFjOThjYWQ4M2ViZmMyY2Q0Y2MpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOWFhYTdkNDdhZmZkNGNkYmI3ZThjMmE2NmYyNDBjZjYuYmluZFBvcHVwKHBvcHVwXzJlZjA0NmNmNjI3ODRhMDNiMjY4ZjBiNGY0OGU3ODc3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2MyNGFmMWMwYjNkNjQwNjU5YzA2YTUyZDMwOTAxMzBhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM1MjY4MTQ2OTA4Mzk2LC0xMjIuNDcyNzE1NzU5NjMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMjZkNWMwMjljMjNlNDUzZjljOTU1YjY3NWUyOTMzODkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTI1YmJiMmZmZTljNGNmZWE2MWEzZTIxMzU4M2I2MTYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjNjZDIyOTFjY2U3NDg2OTg5NjQ4MzA4MzdjMDU0MWQgPSAkKCc8ZGl2IGlkPSJodG1sXzYzY2QyMjkxY2NlNzQ4Njk4OTY0ODMwODM3YzA1NDFkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81MjViYmIyZmZlOWM0Y2ZlYTYxYTNlMjEzNTgzYjYxNi5zZXRDb250ZW50KGh0bWxfNjNjZDIyOTFjY2U3NDg2OTg5NjQ4MzA4MzdjMDU0MWQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYzI0YWYxYzBiM2Q2NDA2NTljMDZhNTJkMzA5MDEzMGEuYmluZFBvcHVwKHBvcHVwXzUyNWJiYjJmZmU5YzRjZmVhNjFhM2UyMTM1ODNiNjE2KTsKCiAgICAgICAgICAgIAogICAgICAgIAo8L3NjcmlwdD4=\" 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 0x7f0e2e287400>"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create map and display it\n",
"sanfran_map = folium.Map(location=[latitude, longitude], zoom_start=12)\n",
"\n",
"# loop through the 100 crimes and add each to the map\n",
"for lat, lng, label in zip(df_incidents.Y, df_incidents.X, df_incidents.Category):\n",
" folium.features.CircleMarker(\n",
" [lat, lng],\n",
" radius=5, # define how big you want the circle markers to be\n",
" color='yellow',\n",
" fill=True,\n",
" popup=label,\n",
" fill_color='blue',\n",
" fill_opacity=0.6\n",
" ).add_to(sanfran_map)\n",
"\n",
"# show map\n",
"sanfran_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"The other proper remedy is to group the markers into different clusters. Each cluster is then represented by the number of crimes in each neighborhood. These clusters can be thought of as pockets of San Francisco which you can then analyze separately.\n",
"\n",
"To implement this, we start off by instantiating a *MarkerCluster* object and adding all the data points in the dataframe to this object."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"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+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfZjc3MTY1N2QxNGYyNDAxZjgxY2Q1OGEwYTA4MjYyMWEgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2xlYWZsZXQubWFya2VyY2x1c3Rlci8xLjEuMC9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIvMS4xLjAvTWFya2VyQ2x1c3Rlci5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbGVhZmxldC5tYXJrZXJjbHVzdGVyLzEuMS4wL01hcmtlckNsdXN0ZXIuRGVmYXVsdC5jc3MiLz4KPC9oZWFkPgo8Ym9keT4gICAgCiAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9saXVtLW1hcCIgaWQ9Im1hcF9mNzcxNjU3ZDE0ZjI0MDFmODFjZDU4YTBhMDgyNjIxYSIgPjwvZGl2PgogICAgICAgIAo8L2JvZHk+CjxzY3JpcHQ+ICAgIAogICAgCgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBib3VuZHMgPSBudWxsOwogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXBfZjc3MTY1N2QxNGYyNDAxZjgxY2Q1OGEwYTA4MjYyMWEgPSBMLm1hcCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXBfZjc3MTY1N2QxNGYyNDAxZjgxY2Q1OGEwYTA4MjYyMWEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NlbnRlcjogWzM3Ljc3LC0xMjIuNDJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogMTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZENvcHlKdW1wOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyXzAzMTQ1NmY2OTJhNzRhOWI5YWI3YTdiNTgxNGJiYzNmID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAnaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLAogICAgICAgICAgICAgICAgewogICJhdHRyaWJ1dGlvbiI6IG51bGwsCiAgImRldGVjdFJldGluYSI6IGZhbHNlLAogICJtYXhab29tIjogMTgsCiAgIm1pblpvb20iOiAxLAogICJub1dyYXAiOiBmYWxzZSwKICAic3ViZG9tYWlucyI6ICJhYmMiCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y3NzE2NTdkMTRmMjQwMWY4MWNkNThhMGEwODI2MjFhKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUgPSBMLm1hcmtlckNsdXN0ZXJHcm91cCh7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIG1hcF9mNzcxNjU3ZDE0ZjI0MDFmODFjZDU4YTBhMDgyNjIxYS5hZGRMYXllcihtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2MyNGU4ZjkxZWRmZDRkNjFiZTg0YzcwNjk4MmI0NjQwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzUxMzE0NWM3ZjBjYjRlN2M4NWI1NDg2Y2RhNjUwMWVjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzJkZTY5ZjhiNjg5OTQ5YTQ4ZTFlY2U0OWUzNjZhODFhID0gJCgnPGRpdiBpZD0iaHRtbF8yZGU2OWY4YjY4OTk0OWE0OGUxZWNlNDllMzY2YTgxYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0VBUE9OIExBV1M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzUxMzE0NWM3ZjBjYjRlN2M4NWI1NDg2Y2RhNjUwMWVjLnNldENvbnRlbnQoaHRtbF8yZGU2OWY4YjY4OTk0OWE0OGUxZWNlNDllMzY2YTgxYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2MyNGU4ZjkxZWRmZDRkNjFiZTg0YzcwNjk4MmI0NjQwLmJpbmRQb3B1cChwb3B1cF81MTMxNDVjN2YwY2I0ZTdjODViNTQ4NmNkYTY1MDFlYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85OGE5MGMwNTYxYjQ0YjkxYmIwNWE1MGRkZTU3YzIyZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84Yjc5ZjVmZGExZDM0YzAyYmFkZGI1NWRkNTM3ZTQ3YiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80YzgyNmEyODAzMTg0OTRjYTRiZTAxNDBmMTNlYTI0NCA9ICQoJzxkaXYgaWQ9Imh0bWxfNGM4MjZhMjgwMzE4NDk0Y2E0YmUwMTQwZjEzZWEyNDQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldFQVBPTiBMQVdTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84Yjc5ZjVmZGExZDM0YzAyYmFkZGI1NWRkNTM3ZTQ3Yi5zZXRDb250ZW50KGh0bWxfNGM4MjZhMjgwMzE4NDk0Y2E0YmUwMTQwZjEzZWEyNDQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl85OGE5MGMwNTYxYjQ0YjkxYmIwNWE1MGRkZTU3YzIyZi5iaW5kUG9wdXAocG9wdXBfOGI3OWY1ZmRhMWQzNGMwMmJhZGRiNTVkZDUzN2U0N2IpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfM2Y2NWFlZmJmZWRmNDlmOGE5YTI2OTA2N2ZkMzI3ZjQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Mjk5ODA5NjcyOTk1OTYsLTEyMi4zODg4NTYyMDQyOTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzI0MjdjYWM3MDFhNjQ5ZjI4ZTYwZjIzNjBiODFiYjIyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzMxM2NjMjM1YjlhZjRhODJiMWVhY2NhNGY0YWI1YzhiID0gJCgnPGRpdiBpZD0iaHRtbF8zMTNjYzIzNWI5YWY0YTgyYjFlYWNjYTRmNGFiNWM4YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzI0MjdjYWM3MDFhNjQ5ZjI4ZTYwZjIzNjBiODFiYjIyLnNldENvbnRlbnQoaHRtbF8zMTNjYzIzNWI5YWY0YTgyYjFlYWNjYTRmNGFiNWM4Yik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzNmNjVhZWZiZmVkZjQ5ZjhhOWEyNjkwNjdmZDMyN2Y0LmJpbmRQb3B1cChwb3B1cF8yNDI3Y2FjNzAxYTY0OWYyOGU2MGYyMzYwYjgxYmIyMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xYTNiNGJiNjYxNTY0NmVkYmFhNjAzMDFkNjU1MTEyYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTc4ODM3NjY4ODc5LC0xMjIuNDEyOTcwNTM3NTkxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83MDMwOGMzMjRkZjA0MmJiOGI2NzE5NWQ0MzU4YWJmYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wNTA0OTYzOTBlNzA0MzQyOTUzMDJlNTI3ZjE5NmRjOCA9ICQoJzxkaXYgaWQ9Imh0bWxfMDUwNDk2MzkwZTcwNDM0Mjk1MzAyZTUyN2YxOTZkYzgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzAzMDhjMzI0ZGYwNDJiYjhiNjcxOTVkNDM1OGFiZmIuc2V0Q29udGVudChodG1sXzA1MDQ5NjM5MGU3MDQzNDI5NTMwMmU1MjdmMTk2ZGM4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMWEzYjRiYjY2MTU2NDZlZGJhYTYwMzAxZDY1NTExMmEuYmluZFBvcHVwKHBvcHVwXzcwMzA4YzMyNGRmMDQyYmI4YjY3MTk1ZDQzNThhYmZiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2I1OWNlZjU4OWRhODQxNWVhNDUzMjI4MDk1YWE3YTlkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY1MDUwMTIxNDY2OCwtMTIyLjQxOTY3MTc4MDI5Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDYwNjA1NzUzOTM2NDMyMGI3NDMyMDViYzgyZjA1OTUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTczN2Y4OWE1OWYwNGUwZWJkMWY2ZTZkN2IwYjk4ZTMgPSAkKCc8ZGl2IGlkPSJodG1sX2E3MzdmODlhNTlmMDRlMGViZDFmNmU2ZDdiMGI5OGUzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Q2MDYwNTc1MzkzNjQzMjBiNzQzMjA1YmM4MmYwNTk1LnNldENvbnRlbnQoaHRtbF9hNzM3Zjg5YTU5ZjA0ZTBlYmQxZjZlNmQ3YjBiOThlMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2I1OWNlZjU4OWRhODQxNWVhNDUzMjI4MDk1YWE3YTlkLmJpbmRQb3B1cChwb3B1cF9kNjA2MDU3NTM5MzY0MzIwYjc0MzIwNWJjODJmMDU5NSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hMzcyYzg5ZGEwOGY0OThlOTA2OWE0OGYxZjkxZDhmNyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iYzBkY2M4NTYxYTA0M2UwODEzYjgwOTg4ZGQ4MWEyZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80NDU1ZTkxMGU4YWU0MzBiODcyZjgxNTc5NjVmNmRhYSA9ICQoJzxkaXYgaWQ9Imh0bWxfNDQ1NWU5MTBlOGFlNDMwYjg3MmY4MTU3OTY1ZjZkYWEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2JjMGRjYzg1NjFhMDQzZTA4MTNiODA5ODhkZDgxYTJlLnNldENvbnRlbnQoaHRtbF80NDU1ZTkxMGU4YWU0MzBiODcyZjgxNTc5NjVmNmRhYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2EzNzJjODlkYTA4ZjQ5OGU5MDY5YTQ4ZjFmOTFkOGY3LmJpbmRQb3B1cChwb3B1cF9iYzBkY2M4NTYxYTA0M2UwODEzYjgwOTg4ZGQ4MWEyZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82NGFhMTY5MmIxM2I0Y2VlODIyZjFmYTlhOGY0NTY3YyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDg3ODkzNjAyMTQsLTEyMi40MDU3MjE0NTQ1NjddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2QwNmQ4YWZmZjcyMzRjM2I5NTM4ZDU5M2RhNWE5NGYyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzI1MjQyNjgyY2E5MDQyYTJiZThlMjJmNDg5OTc2NmFlID0gJCgnPGRpdiBpZD0iaHRtbF8yNTI0MjY4MmNhOTA0MmEyYmU4ZTIyZjQ4OTk3NjZhZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2QwNmQ4YWZmZjcyMzRjM2I5NTM4ZDU5M2RhNWE5NGYyLnNldENvbnRlbnQoaHRtbF8yNTI0MjY4MmNhOTA0MmEyYmU4ZTIyZjQ4OTk3NjZhZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzY0YWExNjkyYjEzYjRjZWU4MjJmMWZhOWE4ZjQ1NjdjLmJpbmRQb3B1cChwb3B1cF9kMDZkOGFmZmY3MjM0YzNiOTUzOGQ1OTNkYTVhOTRmMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82ZDkxY2EzZDU3ODc0OTZmOTZjNzJhMjU1NTA0MTUyYyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4Mzk4MDU1OTI2MzQsLTEyMi40MTE3NzgyOTU5OTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzgzZjA0NGUxM2U5NDQ0YzE5NmM4ODVkODAzZDgzN2NmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzI1N2NmZDFkNzU4YzQ2OWQ5ZTRhM2EzNjY2ZDI1MjU3ID0gJCgnPGRpdiBpZD0iaHRtbF8yNTdjZmQxZDc1OGM0NjlkOWU0YTNhMzY2NmQyNTI1NyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84M2YwNDRlMTNlOTQ0NGMxOTZjODg1ZDgwM2Q4MzdjZi5zZXRDb250ZW50KGh0bWxfMjU3Y2ZkMWQ3NThjNDY5ZDllNGEzYTM2NjZkMjUyNTcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82ZDkxY2EzZDU3ODc0OTZmOTZjNzJhMjU1NTA0MTUyYy5iaW5kUG9wdXAocG9wdXBfODNmMDQ0ZTEzZTk0NDRjMTk2Yzg4NWQ4MDNkODM3Y2YpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfODBiYjQwZDllN2RmNGQyYmFlYmFkM2VhMzFmNWMxNjkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM1ZmFiMjExNWQ3NDQzMDFhY2Y3YzdmYjlmYTViNzQ4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc3ZDVjYWFmMGI1NTRjMDViYTI1YTVhMTBlYTAzNWRlID0gJCgnPGRpdiBpZD0iaHRtbF83N2Q1Y2FhZjBiNTU0YzA1YmEyNWE1YTEwZWEwMzVkZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM1ZmFiMjExNWQ3NDQzMDFhY2Y3YzdmYjlmYTViNzQ4LnNldENvbnRlbnQoaHRtbF83N2Q1Y2FhZjBiNTU0YzA1YmEyNWE1YTEwZWEwMzVkZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzgwYmI0MGQ5ZTdkZjRkMmJhZWJhZDNlYTMxZjVjMTY5LmJpbmRQb3B1cChwb3B1cF8zNWZhYjIxMTVkNzQ0MzAxYWNmN2M3ZmI5ZmE1Yjc0OCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yN2QxODJhY2VhZjA0MDE0YWJlZDE4ODU5ZTg0Yjc0MyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzVjMmU0NmNmZGEyODQ0Zjg4MjMxMjMxMGZmYjg0NWFkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Y5ZWNmNmQ1OGI4YjRiNGU4ODM1NGZjZDg5Y2M3ZTQwID0gJCgnPGRpdiBpZD0iaHRtbF9mOWVjZjZkNThiOGI0YjRlODgzNTRmY2Q4OWNjN2U0MCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzVjMmU0NmNmZGEyODQ0Zjg4MjMxMjMxMGZmYjg0NWFkLnNldENvbnRlbnQoaHRtbF9mOWVjZjZkNThiOGI0YjRlODgzNTRmY2Q4OWNjN2U0MCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzI3ZDE4MmFjZWFmMDQwMTRhYmVkMTg4NTllODRiNzQzLmJpbmRQb3B1cChwb3B1cF81YzJlNDZjZmRhMjg0NGY4ODIzMTIzMTBmZmI4NDVhZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yOTRkMmQ0OWZhODE0OWI0ODg4MTQxOTkwOGVhMjBmMyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQ3ODE1Nzg2OTUwNSwtMTIyLjQ3NzM3NjUyNDAwMjk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xNzliNGMzYjEwNDA0ZTQ4YTc5MWNlMTA1ZGY1ZmQ4ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xMmU3NDY5YzBkNDM0NmNjOGQxYzU2OGU5MzJhODQ4MiA9ICQoJzxkaXYgaWQ9Imh0bWxfMTJlNzQ2OWMwZDQzNDZjYzhkMWM1NjhlOTMyYTg0ODIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzE3OWI0YzNiMTA0MDRlNDhhNzkxY2UxMDVkZjVmZDhkLnNldENvbnRlbnQoaHRtbF8xMmU3NDY5YzBkNDM0NmNjOGQxYzU2OGU5MzJhODQ4Mik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzI5NGQyZDQ5ZmE4MTQ5YjQ4ODgxNDE5OTA4ZWEyMGYzLmJpbmRQb3B1cChwb3B1cF8xNzliNGMzYjEwNDA0ZTQ4YTc5MWNlMTA1ZGY1ZmQ4ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kN2U5ZjhmYzVkZDc0ZjZlOTI1YjQ3Mzk1MDY1NTM0NyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NTczODk0Mjk2NTQ5NSwtMTIyLjQ3Nzk2MDMyNzI5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDRiYmYzYjQxNzljNDA3Mzk1NzQ1ZmNlNTZkNTc1NWEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTY5M2EyOGQxYzMxNDU0OWI3Yjg2MTRmYmM0Zjk4NDMgPSAkKCc8ZGl2IGlkPSJodG1sX2E2OTNhMjhkMWMzMTQ1NDliN2I4NjE0ZmJjNGY5ODQzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQ0YmJmM2I0MTc5YzQwNzM5NTc0NWZjZTU2ZDU3NTVhLnNldENvbnRlbnQoaHRtbF9hNjkzYTI4ZDFjMzE0NTQ5YjdiODYxNGZiYzRmOTg0Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2Q3ZTlmOGZjNWRkNzRmNmU5MjViNDczOTUwNjU1MzQ3LmJpbmRQb3B1cChwb3B1cF80NGJiZjNiNDE3OWM0MDczOTU3NDVmY2U1NmQ1NzU1YSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kMmZiYTgyZDQ3MWY0Y2E2YTRjYWM2YmI5Y2Q3MjE2MSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hOWY4MzM3MmMzZTE0YTc2OTA5ZTA2YjA5NDg3NGI0NSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wMmVhOTVkMzEwYmM0MGU5YjkwOTkzOGVjOGMzNGQ4YSA9ICQoJzxkaXYgaWQ9Imh0bWxfMDJlYTk1ZDMxMGJjNDBlOWI5MDk5MzhlYzhjMzRkOGEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hOWY4MzM3MmMzZTE0YTc2OTA5ZTA2YjA5NDg3NGI0NS5zZXRDb250ZW50KGh0bWxfMDJlYTk1ZDMxMGJjNDBlOWI5MDk5MzhlYzhjMzRkOGEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kMmZiYTgyZDQ3MWY0Y2E2YTRjYWM2YmI5Y2Q3MjE2MS5iaW5kUG9wdXAocG9wdXBfYTlmODMzNzJjM2UxNGE3NjkwOWUwNmIwOTQ4NzRiNDUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfODY2ZTQ1NTYyY2E5NGUxOWIwOTljMTE5MTc1YTg1NzMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyNzA1MTk5NTkyLC0xMjIuNDMyMzI1ODcxMDI4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84NzQxOTViMmEwYjI0NGE4OGQ3MzVlZWY0ZmY4NTljOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80NTRmYWYzYjQ0ZjM0N2EwYTY1ZmQ5MjcyYmQ3NDM0MyA9ICQoJzxkaXYgaWQ9Imh0bWxfNDU0ZmFmM2I0NGYzNDdhMGE2NWZkOTI3MmJkNzQzNDMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzg3NDE5NWIyYTBiMjQ0YTg4ZDczNWVlZjRmZjg1OWM4LnNldENvbnRlbnQoaHRtbF80NTRmYWYzYjQ0ZjM0N2EwYTY1ZmQ5MjcyYmQ3NDM0Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzg2NmU0NTU2MmNhOTRlMTliMDk5YzExOTE3NWE4NTczLmJpbmRQb3B1cChwb3B1cF84NzQxOTViMmEwYjI0NGE4OGQ3MzVlZWY0ZmY4NTljOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kOWI5NGViMTgzYTg0ZGZmYTVjOGY1MjFmNmY4YWIxNiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5MTY0Mjk4MjM4NCwtMTIyLjQwMDkwODY5ODg4OTk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82ZTdlZGQxMDcyNjA0Yjg5YjVhN2NjNWNmMmVlMmIwMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81MTRhZDAwOWE4ZDg0MjNkYWI3NTM4YWZhOTQyOTk2OSA9ICQoJzxkaXYgaWQ9Imh0bWxfNTE0YWQwMDlhOGQ4NDIzZGFiNzUzOGFmYTk0Mjk5NjkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJVUkdMQVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82ZTdlZGQxMDcyNjA0Yjg5YjVhN2NjNWNmMmVlMmIwMS5zZXRDb250ZW50KGh0bWxfNTE0YWQwMDlhOGQ4NDIzZGFiNzUzOGFmYTk0Mjk5NjkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kOWI5NGViMTgzYTg0ZGZmYTVjOGY1MjFmNmY4YWIxNi5iaW5kUG9wdXAocG9wdXBfNmU3ZWRkMTA3MjYwNGI4OWI1YTdjYzVjZjJlZTJiMDEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZjc0M2U3MzQ3MGE2NGMzYzkwNGM3ZDJlZGYyZjQ4YWUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM3MDY5MzAxNTQ1LC0xMjIuNDA4NTk1MTEwODY5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wZWViNjIxZGJkNTI0NjllYjFkYTVhZjg1MDUzMDNmZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yYzY2ZTBiODM5NTc0MjU3YTFkOTE5ZTExY2JmYjAzOCA9ICQoJzxkaXYgaWQ9Imh0bWxfMmM2NmUwYjgzOTU3NDI1N2ExZDkxOWUxMWNiZmIwMzgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNUT0xFTiBQUk9QRVJUWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMGVlYjYyMWRiZDUyNDY5ZWIxZGE1YWY4NTA1MzAzZmYuc2V0Q29udGVudChodG1sXzJjNjZlMGI4Mzk1NzQyNTdhMWQ5MTllMTFjYmZiMDM4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZjc0M2U3MzQ3MGE2NGMzYzkwNGM3ZDJlZGYyZjQ4YWUuYmluZFBvcHVwKHBvcHVwXzBlZWI2MjFkYmQ1MjQ2OWViMWRhNWFmODUwNTMwM2ZmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzJiZjE5YzZlZTJiZTQ5ODU4YWE5M2NmYmE0MzEyOWZkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU3Mjg5NTkwNDU3Nzk1LC0xMjIuNDA2ODcwNDAyMDgyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lZTcxMGRjYmQzZGE0OTU3ODgzNTkwOWNmYmUwYzE2MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yYjE5NjNiNDExMTQ0ZWU5YmVmMWNlMzA1OTI5MjUxZiA9ICQoJzxkaXYgaWQ9Imh0bWxfMmIxOTYzYjQxMTE0NGVlOWJlZjFjZTMwNTkyOTI1MWYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJPQkJFUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2VlNzEwZGNiZDNkYTQ5NTc4ODM1OTA5Y2ZiZTBjMTYxLnNldENvbnRlbnQoaHRtbF8yYjE5NjNiNDExMTQ0ZWU5YmVmMWNlMzA1OTI5MjUxZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzJiZjE5YzZlZTJiZTQ5ODU4YWE5M2NmYmE0MzEyOWZkLmJpbmRQb3B1cChwb3B1cF9lZTcxMGRjYmQzZGE0OTU3ODgzNTkwOWNmYmUwYzE2MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iYzNlZGJjYjExOGM0NDEyYTA1NTc3YjU5YTdmMjczYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0ODkwNjMwNTE4MjksLTEyMi40MjAzNTQ3ODA4NjA5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMmFlM2RiZDY1MzIyNDQ3NjhmODk0Yjg0NWNmYjI3ODUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTQ1NDc4ZWY2NWJiNDY3MmE2N2QxODBlMzA0YmY3NGQgPSAkKCc8ZGl2IGlkPSJodG1sXzk0NTQ3OGVmNjViYjQ2NzJhNjdkMTgwZTMwNGJmNzRkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yYWUzZGJkNjUzMjI0NDc2OGY4OTRiODQ1Y2ZiMjc4NS5zZXRDb250ZW50KGh0bWxfOTQ1NDc4ZWY2NWJiNDY3MmE2N2QxODBlMzA0YmY3NGQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iYzNlZGJjYjExOGM0NDEyYTA1NTc3YjU5YTdmMjczYS5iaW5kUG9wdXAocG9wdXBfMmFlM2RiZDY1MzIyNDQ3NjhmODk0Yjg0NWNmYjI3ODUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfY2Y2MTQwZGUzNzdiNDNjMGFmMzMyOGVjMzBhNGZkZjUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTU3NjU0MjY5OTUsLTEyMi40Mzk5MDk3NjY3NzJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2UxNGQxYzNmMDNkODRkZWQ4NmUwYmViYWJkMmNhNzVkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzkyOWU5MTRkYTcxYzQ4ZGU5OWEzZjUxZDkzMTU1YjJkID0gJCgnPGRpdiBpZD0iaHRtbF85MjllOTE0ZGE3MWM0OGRlOTlhM2Y1MWQ5MzE1NWIyZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTE0ZDFjM2YwM2Q4NGRlZDg2ZTBiZWJhYmQyY2E3NWQuc2V0Q29udGVudChodG1sXzkyOWU5MTRkYTcxYzQ4ZGU5OWEzZjUxZDkzMTU1YjJkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfY2Y2MTQwZGUzNzdiNDNjMGFmMzMyOGVjMzBhNGZkZjUuYmluZFBvcHVwKHBvcHVwX2UxNGQxYzNmMDNkODRkZWQ4NmUwYmViYWJkMmNhNzVkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzEyOGM4MWQ1NjFjYzQ2NWI5NDUzOTg1ZjcxNjVkNjNlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNTY5OTM4NjkxOCwtMTIyLjQwODQyMTExNjkyMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjVlNGQ5MGJlZTQ2NGM4Y2E3YTIzYWZmYjJlYTNiYjggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMmIzNTU1M2ExYjA2NGJmNjg3NWYyZTE3NzUyYTQ5YjggPSAkKCc8ZGl2IGlkPSJodG1sXzJiMzU1NTNhMWIwNjRiZjY4NzVmMmUxNzc1MmE0OWI4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yNWU0ZDkwYmVlNDY0YzhjYTdhMjNhZmZiMmVhM2JiOC5zZXRDb250ZW50KGh0bWxfMmIzNTU1M2ExYjA2NGJmNjg3NWYyZTE3NzUyYTQ5YjgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8xMjhjODFkNTYxY2M0NjViOTQ1Mzk4NWY3MTY1ZDYzZS5iaW5kUG9wdXAocG9wdXBfMjVlNGQ5MGJlZTQ2NGM4Y2E3YTIzYWZmYjJlYTNiYjgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYWJjNGM2YzY5NjNiNGY1ZmI4M2RkMmQ2ZTM3ZTQ5MjkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzM2MTg2Mjc2NDU2MDQsLTEyMi40MjIzMTU2NzA3NDldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2NhZDhiZjEwYzA4ZDRjMmNiNGExODkwZTE2MWRlMzFkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzY2M2MxMTI0MmJiZTQyZTY4ZWRlNDEzODJjNzUwOWFlID0gJCgnPGRpdiBpZD0iaHRtbF82NjNjMTEyNDJiYmU0MmU2OGVkZTQxMzgyYzc1MDlhZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RlJBVUQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NhZDhiZjEwYzA4ZDRjMmNiNGExODkwZTE2MWRlMzFkLnNldENvbnRlbnQoaHRtbF82NjNjMTEyNDJiYmU0MmU2OGVkZTQxMzgyYzc1MDlhZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2FiYzRjNmM2OTYzYjRmNWZiODNkZDJkNmUzN2U0OTI5LmJpbmRQb3B1cChwb3B1cF9jYWQ4YmYxMGMwOGQ0YzJjYjRhMTg5MGUxNjFkZTMxZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hYmY0MThkNWUzM2U0MjFlOTIyMTFjNWVhYjA0YmVkZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5Mjg0MTI4NDA0NDcwNSwtMTIyLjQyNDUxOTgzNTAwOTAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mMTFjNThhNzgwOWU0OTdlOWE4NGFjYzVmOGEwZTJlMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84NmZhMmE1YmFhYWQ0N2YyYTc2OTM0NTFhYTQzMWI3NyA9ICQoJzxkaXYgaWQ9Imh0bWxfODZmYTJhNWJhYWFkNDdmMmE3NjkzNDUxYWE0MzFiNzciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mMTFjNThhNzgwOWU0OTdlOWE4NGFjYzVmOGEwZTJlMy5zZXRDb250ZW50KGh0bWxfODZmYTJhNWJhYWFkNDdmMmE3NjkzNDUxYWE0MzFiNzcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hYmY0MThkNWUzM2U0MjFlOTIyMTFjNWVhYjA0YmVkZi5iaW5kUG9wdXAocG9wdXBfZjExYzU4YTc4MDllNDk3ZTlhODRhY2M1ZjhhMGUyZTMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDYwYWViZTI2OTNiNGI3MmEzZGM3ODc2YTg5YjkxNTQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTQwOTg2ODgyMDY3OTUsLTEyMi40MTQyMzM4NDkwMzc5OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzk4ZTlhYmRmYjFlNDhjYTlhYmI4YTk1YTczNGM1YzcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOGMwYWExOTNlYjlmNGY2OWEzZTg2Y2E1MTUyNTJkYzkgPSAkKCc8ZGl2IGlkPSJodG1sXzhjMGFhMTkzZWI5ZjRmNjlhM2U4NmNhNTE1MjUyZGM5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zOThlOWFiZGZiMWU0OGNhOWFiYjhhOTVhNzM0YzVjNy5zZXRDb250ZW50KGh0bWxfOGMwYWExOTNlYjlmNGY2OWEzZTg2Y2E1MTUyNTJkYzkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kNjBhZWJlMjY5M2I0YjcyYTNkYzc4NzZhODliOTE1NC5iaW5kUG9wdXAocG9wdXBfMzk4ZTlhYmRmYjFlNDhjYTlhYmI4YTk1YTczNGM1YzcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfY2IxOTdmODM2M2NmNDhhNGE3MDQ1OWUzMGNmNjU5NDUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTQwOTg2ODgyMDY3OTUsLTEyMi40MTQyMzM4NDkwMzc5OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjE5N2YyYWRlMzdhNGY1MjhiZGMwMDY0NzZkNzRhM2UgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTVkZmZjN2M0ZjhiNGJmYWI3YzlmMGQ1ODg4YjQxOTggPSAkKCc8ZGl2IGlkPSJodG1sXzU1ZGZmYzdjNGY4YjRiZmFiN2M5ZjBkNTg4OGI0MTk4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjE5N2YyYWRlMzdhNGY1MjhiZGMwMDY0NzZkNzRhM2Uuc2V0Q29udGVudChodG1sXzU1ZGZmYzdjNGY4YjRiZmFiN2M5ZjBkNTg4OGI0MTk4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfY2IxOTdmODM2M2NmNDhhNGE3MDQ1OWUzMGNmNjU5NDUuYmluZFBvcHVwKHBvcHVwX2YxOTdmMmFkZTM3YTRmNTI4YmRjMDA2NDc2ZDc0YTNlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzEzNzAwODlkY2JiMTQwZTA4NmNiMWM5MzA2N2JkYjMxID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzcxNDkzOTk2OTQxNiwtMTIyLjUwNzc1MDEzMTAwNDAyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zNTVjNjBkOGM1ODk0YmFhODE3ODRmMmNhZWYwNzQxMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zNGIwZDJiMTYyZTI0ODY2YWM5YjJlZWIxNDk1ZTRiYiA9ICQoJzxkaXYgaWQ9Imh0bWxfMzRiMGQyYjE2MmUyNDg2NmFjOWIyZWViMTQ5NWU0YmIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM1NWM2MGQ4YzU4OTRiYWE4MTc4NGYyY2FlZjA3NDEyLnNldENvbnRlbnQoaHRtbF8zNGIwZDJiMTYyZTI0ODY2YWM5YjJlZWIxNDk1ZTRiYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzEzNzAwODlkY2JiMTQwZTA4NmNiMWM5MzA2N2JkYjMxLmJpbmRQb3B1cChwb3B1cF8zNTVjNjBkOGM1ODk0YmFhODE3ODRmMmNhZWYwNzQxMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yNDJjOTFlODBmOTc0MjAwOGRkYjEzNjM4OTVmMWEyMCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxODMwMjIwNDc2NjAwNSwtMTIyLjQ3NDQ0NDYzOTU5NDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yM2I4YTljZWUwOTM0M2I2OTljODMzYWNiNGZlNTRkNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lZjIxYmFiNTdkNDI0OTk5OGFkNTJiNDliMzk2MDU5NyA9ICQoJzxkaXYgaWQ9Imh0bWxfZWYyMWJhYjU3ZDQyNDk5OThhZDUyYjQ5YjM5NjA1OTciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yM2I4YTljZWUwOTM0M2I2OTljODMzYWNiNGZlNTRkNC5zZXRDb250ZW50KGh0bWxfZWYyMWJhYjU3ZDQyNDk5OThhZDUyYjQ5YjM5NjA1OTcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yNDJjOTFlODBmOTc0MjAwOGRkYjEzNjM4OTVmMWEyMC5iaW5kUG9wdXAocG9wdXBfMjNiOGE5Y2VlMDkzNDNiNjk5YzgzM2FjYjRmZTU0ZDQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDI3ZmZmMjhkMTM4NDVkYjlhNDNmODgzNzQzMWUxMzYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84YzcwNTRhMDgyM2U0NDE3YmI3MTA2MDgwYzkxMzUwMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hYzU5NzYzMjVhYWQ0YTJkODViZWYyZTFhODA5YzRhNyA9ICQoJzxkaXYgaWQ9Imh0bWxfYWM1OTc2MzI1YWFkNGEyZDg1YmVmMmUxYTgwOWM0YTciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84YzcwNTRhMDgyM2U0NDE3YmI3MTA2MDgwYzkxMzUwMS5zZXRDb250ZW50KGh0bWxfYWM1OTc2MzI1YWFkNGEyZDg1YmVmMmUxYTgwOWM0YTcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kMjdmZmYyOGQxMzg0NWRiOWE0M2Y4ODM3NDMxZTEzNi5iaW5kUG9wdXAocG9wdXBfOGM3MDU0YTA4MjNlNDQxN2JiNzEwNjA4MGM5MTM1MDEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMjZhNGZjN2YwMzA1NDI0OGJkOGM0MzY1MDhkY2Q0OTMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lNGU1Y2FlNmM1Njc0ZmYwYTVjZmJkODk0ZGJiOTA2OSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yNGQ1MzA2ODY3ZWU0MTlkYTA5MTNjNTczMmMxZjc2OCA9ICQoJzxkaXYgaWQ9Imh0bWxfMjRkNTMwNjg2N2VlNDE5ZGEwOTEzYzU3MzJjMWY3NjgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJVUkdMQVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lNGU1Y2FlNmM1Njc0ZmYwYTVjZmJkODk0ZGJiOTA2OS5zZXRDb250ZW50KGh0bWxfMjRkNTMwNjg2N2VlNDE5ZGEwOTEzYzU3MzJjMWY3NjgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yNmE0ZmM3ZjAzMDU0MjQ4YmQ4YzQzNjUwOGRjZDQ5My5iaW5kUG9wdXAocG9wdXBfZTRlNWNhZTZjNTY3NGZmMGE1Y2ZiZDg5NGRiYjkwNjkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMDBiODE0Mzc5ZmM0NDUwY2IyMTQxZTZmNzM1ZDQwNWYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkzNjg4Mjg0NTMyLC0xMjIuNDEyNjkwMTQyMzA4MDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzRiYjgxMGI5ZDNhMTQwMjU5ZDE2MjMyM2NhNWQzYTAwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2M3OTM2NDUzYjVmNzRjZjJiNGVjNDdlODhjNjU5OTdiID0gJCgnPGRpdiBpZD0iaHRtbF9jNzkzNjQ1M2I1Zjc0Y2YyYjRlYzQ3ZTg4YzY1OTk3YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzRiYjgxMGI5ZDNhMTQwMjU5ZDE2MjMyM2NhNWQzYTAwLnNldENvbnRlbnQoaHRtbF9jNzkzNjQ1M2I1Zjc0Y2YyYjRlYzQ3ZTg4YzY1OTk3Yik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzAwYjgxNDM3OWZjNDQ1MGNiMjE0MWU2ZjczNWQ0MDVmLmJpbmRQb3B1cChwb3B1cF80YmI4MTBiOWQzYTE0MDI1OWQxNjIzMjNjYTVkM2EwMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl81ODExZjliNmE5YTE0ODg1OGMyZjI3MGNhMTUyMThhOSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzdkMzFmNDYzMjQzMjQ0YTJhM2VjMTkwY2U3OTg4MGY2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2ZjODAwMTY4NWY1ZTRiZWNiNjdiMGRlOGQ2M2QzOTg1ID0gJCgnPGRpdiBpZD0iaHRtbF9mYzgwMDE2ODVmNWU0YmVjYjY3YjBkZThkNjNkMzk4NSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83ZDMxZjQ2MzI0MzI0NGEyYTNlYzE5MGNlNzk4ODBmNi5zZXRDb250ZW50KGh0bWxfZmM4MDAxNjg1ZjVlNGJlY2I2N2IwZGU4ZDYzZDM5ODUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81ODExZjliNmE5YTE0ODg1OGMyZjI3MGNhMTUyMThhOS5iaW5kUG9wdXAocG9wdXBfN2QzMWY0NjMyNDMyNDRhMmEzZWMxOTBjZTc5ODgwZjYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOGJmYmJmZmRjMDg5NGJkZTk1OWRkZmFkZDI4OGQ4ZDIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc5MjA5Mzc1NTMyOTUsLTEyMi40MTA4ODI4MjU1NTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzgzNGViYjhkZDg2MjRmZmZhMTEyY2QzMTU0Njc4MjdkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzU5NjM4MTczOWQzZTQxNjI4MjBhNGQzMmYzODA1ZGFhID0gJCgnPGRpdiBpZD0iaHRtbF81OTYzODE3MzlkM2U0MTYyODIwYTRkMzJmMzgwNWRhYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkVISUNMRSBUSEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODM0ZWJiOGRkODYyNGZmZmExMTJjZDMxNTQ2NzgyN2Quc2V0Q29udGVudChodG1sXzU5NjM4MTczOWQzZTQxNjI4MjBhNGQzMmYzODA1ZGFhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOGJmYmJmZmRjMDg5NGJkZTk1OWRkZmFkZDI4OGQ4ZDIuYmluZFBvcHVwKHBvcHVwXzgzNGViYjhkZDg2MjRmZmZhMTEyY2QzMTU0Njc4MjdkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzNlNjc1M2M3YjE4YzRkNWE4YWMwMjFjNjc1ZGNmMGI4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuODAwNDU2NjQ3MTAzODksLTEyMi40MDE0MzI3NTQ3MjIwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTZjODBjYmE3Y2NkNGJlYjlmNzhkNjU3ZmNlYTk2YmIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMmZhMjhiNTE4MzYwNGVkNmFhM2I2MjU0OWQ0ZmJiNWYgPSAkKCc8ZGl2IGlkPSJodG1sXzJmYTI4YjUxODM2MDRlZDZhYTNiNjI1NDlkNGZiYjVmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hNmM4MGNiYTdjY2Q0YmViOWY3OGQ2NTdmY2VhOTZiYi5zZXRDb250ZW50KGh0bWxfMmZhMjhiNTE4MzYwNGVkNmFhM2I2MjU0OWQ0ZmJiNWYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8zZTY3NTNjN2IxOGM0ZDVhOGFjMDIxYzY3NWRjZjBiOC5iaW5kUG9wdXAocG9wdXBfYTZjODBjYmE3Y2NkNGJlYjlmNzhkNjU3ZmNlYTk2YmIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzQxMDIzYjg1OTQ0NDZiZDgzMmRkMjU2MGJkMzdlM2MgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDM1NTUwNTQyMjY1LC0xMjIuNDIxMTI4MDI5NTA1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xYzlkOTExZGE4Nzg0ODBiODVkYTNjMzMzYTRjYjhiMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yOWFmYjJmMzU3NGU0YWEzODkyY2RlMmMyZTQ2OGMxOSA9ICQoJzxkaXYgaWQ9Imh0bWxfMjlhZmIyZjM1NzRlNGFhMzg5MmNkZTJjMmU0NjhjMTkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFjOWQ5MTFkYTg3ODQ4MGI4NWRhM2MzMzNhNGNiOGIyLnNldENvbnRlbnQoaHRtbF8yOWFmYjJmMzU3NGU0YWEzODkyY2RlMmMyZTQ2OGMxOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzM0MTAyM2I4NTk0NDQ2YmQ4MzJkZDI1NjBiZDM3ZTNjLmJpbmRQb3B1cChwb3B1cF8xYzlkOTExZGE4Nzg0ODBiODVkYTNjMzMzYTRjYjhiMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9lMzE0OGY4ZWZkMzk0Njc2YTIxYjQ4NzM0MjVlMTBjZCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NjU2NDc2MDc2ODUsLTEyMi40MDcyNDQwODcwMzJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzVlMjFhZTg1MmI2ZjQ1NDhhYTI1Y2I1MTAwNWYzOWVkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2UxMGY5OTNhYzc0NDRjNzZhYTU0ZGY1ZTY5MWNhMmNlID0gJCgnPGRpdiBpZD0iaHRtbF9lMTBmOTkzYWM3NDQ0Yzc2YWE1NGRmNWU2OTFjYTJjZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNWUyMWFlODUyYjZmNDU0OGFhMjVjYjUxMDA1ZjM5ZWQuc2V0Q29udGVudChodG1sX2UxMGY5OTNhYzc0NDRjNzZhYTU0ZGY1ZTY5MWNhMmNlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZTMxNDhmOGVmZDM5NDY3NmEyMWI0ODczNDI1ZTEwY2QuYmluZFBvcHVwKHBvcHVwXzVlMjFhZTg1MmI2ZjQ1NDhhYTI1Y2I1MTAwNWYzOWVkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzhiYmFhYjc0OTc2MzQ1M2E5NzMzNjAzZmQxOWVkYjBlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81ZmZmOGJmNjZlM2I0NTUzODI3MzgzODM0N2IyMTNlMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zOTU2OWM2MTllNzg0N2U3OWFjYjVmMGY5ODQxMmNjNiA9ICQoJzxkaXYgaWQ9Imh0bWxfMzk1NjljNjE5ZTc4NDdlNzlhY2I1ZjBmOTg0MTJjYzYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJFQ09WRVJFRCBWRUhJQ0xFPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81ZmZmOGJmNjZlM2I0NTUzODI3MzgzODM0N2IyMTNlMy5zZXRDb250ZW50KGh0bWxfMzk1NjljNjE5ZTc4NDdlNzlhY2I1ZjBmOTg0MTJjYzYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84YmJhYWI3NDk3NjM0NTNhOTczMzYwM2ZkMTllZGIwZS5iaW5kUG9wdXAocG9wdXBfNWZmZjhiZjY2ZTNiNDU1MzgyNzM4MzgzNDdiMjEzZTMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDk0MThjMDkzMTlmNDBhYTgxYzMyMjA5MTRhMDZhNmIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2VhOTBjZDhlNGUwNDRkMDY4MDljZGI5YWZjNzFiZDg5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzE3MjJlOTc5ZTc3NzRjYTc5OTVkYzE5YmNhZGZhZjc5ID0gJCgnPGRpdiBpZD0iaHRtbF8xNzIyZTk3OWU3Nzc0Y2E3OTk1ZGMxOWJjYWRmYWY3OSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2VhOTBjZDhlNGUwNDRkMDY4MDljZGI5YWZjNzFiZDg5LnNldENvbnRlbnQoaHRtbF8xNzIyZTk3OWU3Nzc0Y2E3OTk1ZGMxOWJjYWRmYWY3OSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2Q5NDE4YzA5MzE5ZjQwYWE4MWMzMjIwOTE0YTA2YTZiLmJpbmRQb3B1cChwb3B1cF9lYTkwY2Q4ZTRlMDQ0ZDA2ODA5Y2RiOWFmYzcxYmQ4OSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8zNjQ1YWI1MmM4N2U0MWJkYjZmYmNkMWMwZWEyYjJlNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjYxODBiMmM2MTViNDgxMWExMzQ0YWE5MWQ3MzE0OWUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjUxNzM1Y2U3YjMxNDY0YmFiZDEwYTM5OTY0M2FlYjMgPSAkKCc8ZGl2IGlkPSJodG1sXzY1MTczNWNlN2IzMTQ2NGJhYmQxMGEzOTk2NDNhZWIzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzI2MTgwYjJjNjE1YjQ4MTFhMTM0NGFhOTFkNzMxNDllLnNldENvbnRlbnQoaHRtbF82NTE3MzVjZTdiMzE0NjRiYWJkMTBhMzk5NjQzYWViMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzM2NDVhYjUyYzg3ZTQxYmRiNmZiY2QxYzBlYTJiMmU1LmJpbmRQb3B1cChwb3B1cF8yNjE4MGIyYzYxNWI0ODExYTEzNDRhYTkxZDczMTQ5ZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jODk3YTlkNTYyYTA0OGZiYWNjOGEyN2ViYTdlY2RkMSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQ2OTI4MjAwNDEsLTEyMi40MTU3NTcwMzkxOTZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzI0MmFmMWVmZGRmZjRkN2RhZjIzOGQ3YjE0ZDIxY2RlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2M5ZmVhZGNkYjE1ZTQ2YzliZDAwYzBkZDAzMGEyNjdiID0gJCgnPGRpdiBpZD0iaHRtbF9jOWZlYWRjZGIxNWU0NmM5YmQwMGMwZGQwMzBhMjY3YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yNDJhZjFlZmRkZmY0ZDdkYWYyMzhkN2IxNGQyMWNkZS5zZXRDb250ZW50KGh0bWxfYzlmZWFkY2RiMTVlNDZjOWJkMDBjMGRkMDMwYTI2N2IpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jODk3YTlkNTYyYTA0OGZiYWNjOGEyN2ViYTdlY2RkMS5iaW5kUG9wdXAocG9wdXBfMjQyYWYxZWZkZGZmNGQ3ZGFmMjM4ZDdiMTRkMjFjZGUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNDg5YWI1ZGMwMmJmNDAwOWFiYmFlYjhiMTc0NjMyOWQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Mjg1MjgwNjI3NDY1LC0xMjIuNDc1NjQ3NDYwNzg1OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2NjNmE2NGVhNmRkZDQ0MDViNzcwMDE5NDM2MGNmNzk1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM5YWM0Zjg1NTI3NDRjYjZiZjllYTQzNGQxODM4ZjMzID0gJCgnPGRpdiBpZD0iaHRtbF8zOWFjNGY4NTUyNzQ0Y2I2YmY5ZWE0MzRkMTgzOGYzMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Uk9CQkVSWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfY2M2YTY0ZWE2ZGRkNDQwNWI3NzAwMTk0MzYwY2Y3OTUuc2V0Q29udGVudChodG1sXzM5YWM0Zjg1NTI3NDRjYjZiZjllYTQzNGQxODM4ZjMzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDg5YWI1ZGMwMmJmNDAwOWFiYmFlYjhiMTc0NjMyOWQuYmluZFBvcHVwKHBvcHVwX2NjNmE2NGVhNmRkZDQ0MDViNzcwMDE5NDM2MGNmNzk1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzJiOWViZjQ5ZTA0MjRjMzBhZWYwZTc2YmUyMTViYzhmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQyODUxNzM3NDQ0ODk0LC0xMjIuNDIwOTY3NDQwNTY0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jOGM2MGZiM2ZmMWM0MDIxOTVlOWRlNWUxMzQzYjE5NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85MTdjNGI5MTdkMWU0ZThkOTg3N2Q5ZTRhNzI4ZmJhZCA9ICQoJzxkaXYgaWQ9Imh0bWxfOTE3YzRiOTE3ZDFlNGU4ZDk4NzdkOWU0YTcyOGZiYWQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jOGM2MGZiM2ZmMWM0MDIxOTVlOWRlNWUxMzQzYjE5Ny5zZXRDb250ZW50KGh0bWxfOTE3YzRiOTE3ZDFlNGU4ZDk4NzdkOWU0YTcyOGZiYWQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yYjllYmY0OWUwNDI0YzMwYWVmMGU3NmJlMjE1YmM4Zi5iaW5kUG9wdXAocG9wdXBfYzhjNjBmYjNmZjFjNDAyMTk1ZTlkZTVlMTM0M2IxOTcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzQ1OWY5YTY5MDNkNGQ2MjljNmU4MjdmNzFlZjU2OTIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIxMTk4NDg4OTMxLC0xMjIuNDE1NjY5NjYxNDQzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83MDRlODBiMTViNjM0MjdjOWY1NzI1ZjU2OGEwNzYxMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iNjM1ZTlmMGU4NWQ0YmIyYWQxMDI5MjU0ODRiMTkyMiA9ICQoJzxkaXYgaWQ9Imh0bWxfYjYzNWU5ZjBlODVkNGJiMmFkMTAyOTI1NDg0YjE5MjIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzA0ZTgwYjE1YjYzNDI3YzlmNTcyNWY1NjhhMDc2MTAuc2V0Q29udGVudChodG1sX2I2MzVlOWYwZTg1ZDRiYjJhZDEwMjkyNTQ4NGIxOTIyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYzQ1OWY5YTY5MDNkNGQ2MjljNmU4MjdmNzFlZjU2OTIuYmluZFBvcHVwKHBvcHVwXzcwNGU4MGIxNWI2MzQyN2M5ZjU3MjVmNTY4YTA3NjEwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzc5YzAxMGJkZWM4MDQ3NmE4OTkxNzhiNGZkZjkzMjRjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc5MTY3NDIxODk2MywtMTIyLjQwNjM0NjQyNTYzMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDgwNTc0ZmI0ZGU1NGVhZWE4N2E5YTg1OTg4NzBhY2EgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDhkZDE2NzM5MDYyNDYyYmJjZDI4NmQxNGU0MWE5YzYgPSAkKCc8ZGl2IGlkPSJodG1sXzA4ZGQxNjczOTA2MjQ2MmJiY2QyODZkMTRlNDFhOWM2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wODA1NzRmYjRkZTU0ZWFlYTg3YTlhODU5ODg3MGFjYS5zZXRDb250ZW50KGh0bWxfMDhkZDE2NzM5MDYyNDYyYmJjZDI4NmQxNGU0MWE5YzYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83OWMwMTBiZGVjODA0NzZhODk5MTc4YjRmZGY5MzI0Yy5iaW5kUG9wdXAocG9wdXBfMDgwNTc0ZmI0ZGU1NGVhZWE4N2E5YTg1OTg4NzBhY2EpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZTdjYWEzNjgwNGQxNGUzNDk3NTYzMmE1MmEyNGFjZjUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjU3MTg0Mzk1MjgyLC0xMjIuNDA5NTI5OTEzMjc4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83OTY2NjlmNzUzYWI0ZmFmYmU3NzFjYWFiYWZiZjIyNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iNzc2NGZiNmM5MDk0ODc3ODk3ZWIzYzAwMjQxYWVjMSA9ICQoJzxkaXYgaWQ9Imh0bWxfYjc3NjRmYjZjOTA5NDg3Nzg5N2ViM2MwMDI0MWFlYzEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc5NjY2OWY3NTNhYjRmYWZiZTc3MWNhYWJhZmJmMjI0LnNldENvbnRlbnQoaHRtbF9iNzc2NGZiNmM5MDk0ODc3ODk3ZWIzYzAwMjQxYWVjMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2U3Y2FhMzY4MDRkMTRlMzQ5NzU2MzJhNTJhMjRhY2Y1LmJpbmRQb3B1cChwb3B1cF83OTY2NjlmNzUzYWI0ZmFmYmU3NzFjYWFiYWZiZjIyNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yMjA3M2I0MmRmZmU0MGUwYjA2OWMyYjQwZmNiNmU0MyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wYzkzNWI5ZjFjYTQ0MjJhOWYwNDU4NWY1ZTI5ZmNhMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84NjY3NzRkODA2YTg0YjIwYmQxNGY3MTI4ZDJlODVlMiA9ICQoJzxkaXYgaWQ9Imh0bWxfODY2Nzc0ZDgwNmE4NGIyMGJkMTRmNzEyOGQyZTg1ZTIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMGM5MzViOWYxY2E0NDIyYTlmMDQ1ODVmNWUyOWZjYTMuc2V0Q29udGVudChodG1sXzg2Njc3NGQ4MDZhODRiMjBiZDE0ZjcxMjhkMmU4NWUyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMjIwNzNiNDJkZmZlNDBlMGIwNjljMmI0MGZjYjZlNDMuYmluZFBvcHVwKHBvcHVwXzBjOTM1YjlmMWNhNDQyMmE5ZjA0NTg1ZjVlMjlmY2EzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzg5MzRlMmZjMmYwNTQ1NDFhZmYwOTkzMWEyNDdlZWI1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY3NTI0MzA4NzgzLC0xMjIuNDEwNzM4MDk3MzE1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80ZDQ4NjE0ZThmZDk0MTY1ODM4YTIwMzgxOTE4Y2VjMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hMTUwNDY5NTFhYmU0NGZkODJlZjU1OWYzYjUyM2FkNCA9ICQoJzxkaXYgaWQ9Imh0bWxfYTE1MDQ2OTUxYWJlNDRmZDgyZWY1NTlmM2I1MjNhZDQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJVUkdMQVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80ZDQ4NjE0ZThmZDk0MTY1ODM4YTIwMzgxOTE4Y2VjMy5zZXRDb250ZW50KGh0bWxfYTE1MDQ2OTUxYWJlNDRmZDgyZWY1NTlmM2I1MjNhZDQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84OTM0ZTJmYzJmMDU0NTQxYWZmMDk5MzFhMjQ3ZWViNS5iaW5kUG9wdXAocG9wdXBfNGQ0ODYxNGU4ZmQ5NDE2NTgzOGEyMDM4MTkxOGNlYzMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzM1M2NkYjk0OWU2NDY3YWIyZDMxNmE1OTU1ZDU1MTIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg5MWVmZDQyYjE2MDQ5M2E5MzQ4YTIzNGFkNzkyZjZjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2QxODIwNWMyY2M4YjQ0M2I5ODFmNGQxNjkzY2Q0YmI1ID0gJCgnPGRpdiBpZD0iaHRtbF9kMTgyMDVjMmNjOGI0NDNiOTgxZjRkMTY5M2NkNGJiNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzg5MWVmZDQyYjE2MDQ5M2E5MzQ4YTIzNGFkNzkyZjZjLnNldENvbnRlbnQoaHRtbF9kMTgyMDVjMmNjOGI0NDNiOTgxZjRkMTY5M2NkNGJiNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzMzNTNjZGI5NDllNjQ2N2FiMmQzMTZhNTk1NWQ1NTEyLmJpbmRQb3B1cChwb3B1cF84OTFlZmQ0MmIxNjA0OTNhOTM0OGEyMzRhZDc5MmY2Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82OTA5ZWVmZDU2MjQ0OGFlOTk0ODI1NGExMzE3ZjNkMSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMzEwODM0MzMyNjQsLTEyMi40NDQzMTQwMjUxODhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc1OWEwY2Q0MjMyMzQ4ZTU4OTM1YTBmMzNlZmE5ODg0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2I5NWMzMTQ3MzVmZTRhZjY4MjRjYjA1ZjEyZjg2NzBiID0gJCgnPGRpdiBpZD0iaHRtbF9iOTVjMzE0NzM1ZmU0YWY2ODI0Y2IwNWYxMmY4NjcwYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc1OWEwY2Q0MjMyMzQ4ZTU4OTM1YTBmMzNlZmE5ODg0LnNldENvbnRlbnQoaHRtbF9iOTVjMzE0NzM1ZmU0YWY2ODI0Y2IwNWYxMmY4NjcwYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzY5MDllZWZkNTYyNDQ4YWU5OTQ4MjU0YTEzMTdmM2QxLmJpbmRQb3B1cChwb3B1cF83NTlhMGNkNDIzMjM0OGU1ODkzNWEwZjMzZWZhOTg4NCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80NDMxYWE4MzAxMTQ0ZGM3YmVkNDg5OTEyNGNjZmUyNiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMzEwODM0MzMyNjQsLTEyMi40NDQzMTQwMjUxODhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U2ZDM3MDBmOTgxYTRlM2ZhMTFmYjA0NmNlMzJhOTBiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2JhN2E1MGJjZjFhNzQ1ZTU5ZGYwN2IwZGRjYjQzODk1ID0gJCgnPGRpdiBpZD0iaHRtbF9iYTdhNTBiY2YxYTc0NWU1OWRmMDdiMGRkY2I0Mzg5NSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RFJVRy9OQVJDT1RJQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTZkMzcwMGY5ODFhNGUzZmExMWZiMDQ2Y2UzMmE5MGIuc2V0Q29udGVudChodG1sX2JhN2E1MGJjZjFhNzQ1ZTU5ZGYwN2IwZGRjYjQzODk1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDQzMWFhODMwMTE0NGRjN2JlZDQ4OTkxMjRjY2ZlMjYuYmluZFBvcHVwKHBvcHVwX2U2ZDM3MDBmOTgxYTRlM2ZhMTFmYjA0NmNlMzJhOTBiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzdjNjQzZjI0MmQxNDQzYzFhYmVlMzNiOTg0MTI1YTA0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTI3OGYxZmZiYTg3NDdmN2FlMWJiZjk4Njc4ZWY4NzUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYWM5ODk0ZmQxYTlhNGJlNWJjMGNiY2EzNzk5M2Q4MGYgPSAkKCc8ZGl2IGlkPSJodG1sX2FjOTg5NGZkMWE5YTRiZTViYzBjYmNhMzc5OTNkODBmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTI3OGYxZmZiYTg3NDdmN2FlMWJiZjk4Njc4ZWY4NzUuc2V0Q29udGVudChodG1sX2FjOTg5NGZkMWE5YTRiZTViYzBjYmNhMzc5OTNkODBmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfN2M2NDNmMjQyZDE0NDNjMWFiZWUzM2I5ODQxMjVhMDQuYmluZFBvcHVwKHBvcHVwXzUyNzhmMWZmYmE4NzQ3ZjdhZTFiYmY5ODY3OGVmODc1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzg2MDAzNWJlYzBlMTRiNDlhZDVlODI2ZmZlOWU3ZjRmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWZjNDE4MzI5YjkyNGFiMDgxYjJkMmY3NjNlYTJhMDAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjhkNjU5MTQzMDYxNDE0ZmIyM2UwYTAwOTYxNGYyM2MgPSAkKCc8ZGl2IGlkPSJodG1sXzY4ZDY1OTE0MzA2MTQxNGZiMjNlMGEwMDk2MTRmMjNjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMWZjNDE4MzI5YjkyNGFiMDgxYjJkMmY3NjNlYTJhMDAuc2V0Q29udGVudChodG1sXzY4ZDY1OTE0MzA2MTQxNGZiMjNlMGEwMDk2MTRmMjNjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfODYwMDM1YmVjMGUxNGI0OWFkNWU4MjZmZmU5ZTdmNGYuYmluZFBvcHVwKHBvcHVwXzFmYzQxODMyOWI5MjRhYjA4MWIyZDJmNzYzZWEyYTAwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2ZiY2I0ODNjYzNjMjQ1MjQ5ZTU5MWYyODMxZDMxODY1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xY2Y1OTExOGVhMDI0NzUwYmQ1NDY4OTczNzdhZjY0ZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kY2M2M2RhNTdiMTY0ODRlOTk4N2NhODBkYzVjY2FiZiA9ICQoJzxkaXYgaWQ9Imh0bWxfZGNjNjNkYTU3YjE2NDg0ZTk5ODdjYTgwZGM1Y2NhYmYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFjZjU5MTE4ZWEwMjQ3NTBiZDU0Njg5NzM3N2FmNjRmLnNldENvbnRlbnQoaHRtbF9kY2M2M2RhNTdiMTY0ODRlOTk4N2NhODBkYzVjY2FiZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2ZiY2I0ODNjYzNjMjQ1MjQ5ZTU5MWYyODMxZDMxODY1LmJpbmRQb3B1cChwb3B1cF8xY2Y1OTExOGVhMDI0NzUwYmQ1NDY4OTczNzdhZjY0Zik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85MzkyZDBkZGYwN2I0MTU3OGJjNTU0YjEyZjU5NDBiNyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NjIzMTA0MDQ3NTgsLTEyMi40MTQ3MTQyOTU1Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYWVhMjVmNjc2OGIwNGFhMjg4ZjVmODI4NjRhYjE3MjcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTkxN2VkZjUyYzQxNDBhOWE1YThlM2EzMDBjZjJiOGYgPSAkKCc8ZGl2IGlkPSJodG1sX2E5MTdlZGY1MmM0MTQwYTlhNWE4ZTNhMzAwY2YyYjhmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYWVhMjVmNjc2OGIwNGFhMjg4ZjVmODI4NjRhYjE3Mjcuc2V0Q29udGVudChodG1sX2E5MTdlZGY1MmM0MTQwYTlhNWE4ZTNhMzAwY2YyYjhmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOTM5MmQwZGRmMDdiNDE1NzhiYzU1NGIxMmY1OTQwYjcuYmluZFBvcHVwKHBvcHVwX2FlYTI1ZjY3NjhiMDRhYTI4OGY1ZjgyODY0YWIxNzI3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2QyNDQ4YzUxM2QyYTRlYTNiZDAyZTBkMTQ4MmMyYzEyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3NTExODg5NTY5NSwtMTIyLjQxODA0NTQ1Mjc2OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODQ0ZTBjN2Y5YjkzNDllNTgxMzM4Y2IwNjgwYzNkOTIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzNjNmRjNzNiOGUyNDU1Nzg4MjYxODA3NGQ5ZWE4Y2YgPSAkKCc8ZGl2IGlkPSJodG1sXzMzYzZkYzczYjhlMjQ1NTc4ODI2MTgwNzRkOWVhOGNmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84NDRlMGM3ZjliOTM0OWU1ODEzMzhjYjA2ODBjM2Q5Mi5zZXRDb250ZW50KGh0bWxfMzNjNmRjNzNiOGUyNDU1Nzg4MjYxODA3NGQ5ZWE4Y2YpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kMjQ0OGM1MTNkMmE0ZWEzYmQwMmUwZDE0ODJjMmMxMi5iaW5kUG9wdXAocG9wdXBfODQ0ZTBjN2Y5YjkzNDllNTgxMzM4Y2IwNjgwYzNkOTIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzNiYTlhMjIzNzM1NDc3NDk2ZWY4Nzc5NTAzMjI3YmUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIwMjM4NDc4OTc1LC0xMjIuNDAxMTYxNTU1NjAyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jOTA4NjYzN2NlNTE0ZDdmODA5MDgzMjAzY2U3N2I3NiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jNDJjYjQ3Yjc3ZTM0Y2RkYWYwYWQxZTQwZWI1ZTFkMiA9ICQoJzxkaXYgaWQ9Imh0bWxfYzQyY2I0N2I3N2UzNGNkZGFmMGFkMWU0MGViNWUxZDIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jOTA4NjYzN2NlNTE0ZDdmODA5MDgzMjAzY2U3N2I3Ni5zZXRDb250ZW50KGh0bWxfYzQyY2I0N2I3N2UzNGNkZGFmMGFkMWU0MGViNWUxZDIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8zM2JhOWEyMjM3MzU0Nzc0OTZlZjg3Nzk1MDMyMjdiZS5iaW5kUG9wdXAocG9wdXBfYzkwODY2MzdjZTUxNGQ3ZjgwOTA4MzIwM2NlNzdiNzYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfY2YxMmQzYzA4YTg3NGRiMjk3OTlhMDFhZDQyZWJjOWIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjcwMDUzMTk2Mjk5OTUsLTEyMi40MDM0MDg2NjkxOTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2E3OTY2NGM3Y2JmZjRjODJhYjc2YmE1ZjFlYjQwNDMzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RjZGFhNWUyYmM2ZDQ4MmFiN2U1ZTVjZDdlMDQxMTg2ID0gJCgnPGRpdiBpZD0iaHRtbF9kY2RhYTVlMmJjNmQ0ODJhYjdlNWU1Y2Q3ZTA0MTE4NiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2E3OTY2NGM3Y2JmZjRjODJhYjc2YmE1ZjFlYjQwNDMzLnNldENvbnRlbnQoaHRtbF9kY2RhYTVlMmJjNmQ0ODJhYjdlNWU1Y2Q3ZTA0MTE4Nik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2NmMTJkM2MwOGE4NzRkYjI5Nzk5YTAxYWQ0MmViYzliLmJpbmRQb3B1cChwb3B1cF9hNzk2NjRjN2NiZmY0YzgyYWI3NmJhNWYxZWI0MDQzMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9lMzZlNjAwMzRmN2Q0ZDY1ODNlMTZhZGMyNzc3NjYyZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MzgzNDQzNzQxNDEsLTEyMi40MTI5MzA1MjIwNTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzA5OGYwNjA4ZWZlNzQ2NjVhMGFjOTY4YjQxMGU1YmEzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2E0Nzc3NTViNzRlZjQ0MDI4ZTQyMmVkMzhhMzM3MTEwID0gJCgnPGRpdiBpZD0iaHRtbF9hNDc3NzU1Yjc0ZWY0NDAyOGU0MjJlZDM4YTMzNzExMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wOThmMDYwOGVmZTc0NjY1YTBhYzk2OGI0MTBlNWJhMy5zZXRDb250ZW50KGh0bWxfYTQ3Nzc1NWI3NGVmNDQwMjhlNDIyZWQzOGEzMzcxMTApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lMzZlNjAwMzRmN2Q0ZDY1ODNlMTZhZGMyNzc3NjYyZS5iaW5kUG9wdXAocG9wdXBfMDk4ZjA2MDhlZmU3NDY2NWEwYWM5NjhiNDEwZTViYTMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYjZiOGU2YzlhMmY3NGE0MWI5YzRjMDA3NWNmMTJiOGYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTMwMTg2NTM3NDQ2MDQsLTEyMi40MTg1ODcxNzIyMTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2ZhMjcxMTEzOTU3YjRiMTZhZGUyZGM3OTY0MjQyZGFmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzAxMTBjZDE2ZTI0OTQ2YzhiZDkwNTU2NTc1NmJmYmQxID0gJCgnPGRpdiBpZD0iaHRtbF8wMTEwY2QxNmUyNDk0NmM4YmQ5MDU1NjU3NTZiZmJkMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mYTI3MTExMzk1N2I0YjE2YWRlMmRjNzk2NDI0MmRhZi5zZXRDb250ZW50KGh0bWxfMDExMGNkMTZlMjQ5NDZjOGJkOTA1NTY1NzU2YmZiZDEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iNmI4ZTZjOWEyZjc0YTQxYjljNGMwMDc1Y2YxMmI4Zi5iaW5kUG9wdXAocG9wdXBfZmEyNzExMTM5NTdiNGIxNmFkZTJkYzc5NjQyNDJkYWYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZTY0MDI1ODE3NzA3NGU2NjlmMjdkY2VkZDQzMmY1YTQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mYWYxZWI0NjY3NzA0OGIzODBiNjEzNmUxZmFjNDNkYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83ZDJhOTNiNTFjZGY0ODk0OTM4ZjA2ZDAwOGNmOWEzNiA9ICQoJzxkaXYgaWQ9Imh0bWxfN2QyYTkzYjUxY2RmNDg5NDkzOGYwNmQwMDhjZjlhMzYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkZSQVVEPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mYWYxZWI0NjY3NzA0OGIzODBiNjEzNmUxZmFjNDNkYi5zZXRDb250ZW50KGh0bWxfN2QyYTkzYjUxY2RmNDg5NDkzOGYwNmQwMDhjZjlhMzYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lNjQwMjU4MTc3MDc0ZTY2OWYyN2RjZWRkNDMyZjVhNC5iaW5kUG9wdXAocG9wdXBfZmFmMWViNDY2NzcwNDhiMzgwYjYxMzZlMWZhYzQzZGIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfM2Y5MmIxMDBjZjhiNDJmZTgxOWEyZWM3ODc3NzdmYmYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTA1Mzg5OTM3MjUsLTEyMi40MDM5MTU2ODE1NzEwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZTkwMjFlMGZlNGY4NGFjZmI4NWI0NzhjZTI0Yjc4ODAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjRhM2I1NGE2NWUxNGY3NWFiYTIwNjQzMjY1OWQwOGYgPSAkKCc8ZGl2IGlkPSJodG1sXzY0YTNiNTRhNjVlMTRmNzVhYmEyMDY0MzI2NTlkMDhmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lOTAyMWUwZmU0Zjg0YWNmYjg1YjQ3OGNlMjRiNzg4MC5zZXRDb250ZW50KGh0bWxfNjRhM2I1NGE2NWUxNGY3NWFiYTIwNjQzMjY1OWQwOGYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8zZjkyYjEwMGNmOGI0MmZlODE5YTJlYzc4Nzc3N2ZiZi5iaW5kUG9wdXAocG9wdXBfZTkwMjFlMGZlNGY4NGFjZmI4NWI0NzhjZTI0Yjc4ODApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMTViZjU3YzBmYjEwNDhkNjk5MDhlYzlkYzg0Njc3N2IgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODMwOTk4MjQ0NTkyMSwtMTIyLjQxOTE4MzA5NjM2Ml0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfY2QzN2YyNTIyOGE5NDhmMWIwYmYyMzI3NGQ0OWE2MzAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOWQxNDUzNTY3MjgxNDFkZGI2ZGNiNDYxYWM2MmM4OWYgPSAkKCc8ZGl2IGlkPSJodG1sXzlkMTQ1MzU2NzI4MTQxZGRiNmRjYjQ2MWFjNjJjODlmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfY2QzN2YyNTIyOGE5NDhmMWIwYmYyMzI3NGQ0OWE2MzAuc2V0Q29udGVudChodG1sXzlkMTQ1MzU2NzI4MTQxZGRiNmRjYjQ2MWFjNjJjODlmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMTViZjU3YzBmYjEwNDhkNjk5MDhlYzlkYzg0Njc3N2IuYmluZFBvcHVwKHBvcHVwX2NkMzdmMjUyMjhhOTQ4ZjFiMGJmMjMyNzRkNDlhNjMwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQ3MzE3ZGE0N2M0ZjRjODU5ZWNhZDRhOTNkMTU3N2MyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQwNzM2MDU0ODM1NzksLTEyMi4zODg3NTMwNDY5OTddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JjNDQ2ZTExZjc1YzQ5ODg5NGUyYjIzMWU1YjkzYmFiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc0MmE3MzhiZjU4ODQ0ZTRiNzQwYzY4OWY1MjdiYjUxID0gJCgnPGRpdiBpZD0iaHRtbF83NDJhNzM4YmY1ODg0NGU0Yjc0MGM2ODlmNTI3YmI1MSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2JjNDQ2ZTExZjc1YzQ5ODg5NGUyYjIzMWU1YjkzYmFiLnNldENvbnRlbnQoaHRtbF83NDJhNzM4YmY1ODg0NGU0Yjc0MGM2ODlmNTI3YmI1MSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzQ3MzE3ZGE0N2M0ZjRjODU5ZWNhZDRhOTNkMTU3N2MyLmJpbmRQb3B1cChwb3B1cF9iYzQ0NmUxMWY3NWM0OTg4OTRlMmIyMzFlNWI5M2JhYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8zNjIyNTU5ZjY1ZGI0NTY2YWU2MWRhMDBmNjg2NzM5MSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NDk5MTI5NDQzNjYsLTEyMi40Mzc3OTk3MDM0NjhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc5Yjg0YzA2MDRjOTQ4ZWY4YmEzMWMxNmZlMDJmNGU2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2E5ODUzN2FiOTc0NzQ0Y2ZhZDNjZWRjNzhlZDY3MDNiID0gJCgnPGRpdiBpZD0iaHRtbF9hOTg1MzdhYjk3NDc0NGNmYWQzY2VkYzc4ZWQ2NzAzYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzliODRjMDYwNGM5NDhlZjhiYTMxYzE2ZmUwMmY0ZTYuc2V0Q29udGVudChodG1sX2E5ODUzN2FiOTc0NzQ0Y2ZhZDNjZWRjNzhlZDY3MDNiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMzYyMjU1OWY2NWRiNDU2NmFlNjFkYTAwZjY4NjczOTEuYmluZFBvcHVwKHBvcHVwXzc5Yjg0YzA2MDRjOTQ4ZWY4YmEzMWMxNmZlMDJmNGU2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2YxMTRkY2Q3ZmYzZDQ1M2ViNjUyNTU0MGM5ZmVlZGExID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3MDkwMjc0MzY2OSwtMTIyLjQyMTMzMjY4NDYzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOWVlZWRlNTc1M2Y5NDMwNGI0ZmFlNjRjNWU5ZDBmN2YgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMmUxZjU3OTkxYzU3NGJkMGIzYmU1N2VlNGYyNzA2MTYgPSAkKCc8ZGl2IGlkPSJodG1sXzJlMWY1Nzk5MWM1NzRiZDBiM2JlNTdlZTRmMjcwNjE2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOWVlZWRlNTc1M2Y5NDMwNGI0ZmFlNjRjNWU5ZDBmN2Yuc2V0Q29udGVudChodG1sXzJlMWY1Nzk5MWM1NzRiZDBiM2JlNTdlZTRmMjcwNjE2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZjExNGRjZDdmZjNkNDUzZWI2NTI1NTQwYzlmZWVkYTEuYmluZFBvcHVwKHBvcHVwXzllZWVkZTU3NTNmOTQzMDRiNGZhZTY0YzVlOWQwZjdmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzI5ODhiNTcyNWZkYzQ5MzA4YjMzZjFkZTRhYTIxYjM2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3MDkwMjc0MzY2OSwtMTIyLjQyMTMzMjY4NDYzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTZjNDRkNTI4YzdhNGQzNmIyZTNjYmQxYmViNzBhMzEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfN2QyMDc5ODE5YTkyNDAxNGJiZWU2MTEyMTM3YjRmODQgPSAkKCc8ZGl2IGlkPSJodG1sXzdkMjA3OTgxOWE5MjQwMTRiYmVlNjExMjEzN2I0Zjg0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTZjNDRkNTI4YzdhNGQzNmIyZTNjYmQxYmViNzBhMzEuc2V0Q29udGVudChodG1sXzdkMjA3OTgxOWE5MjQwMTRiYmVlNjExMjEzN2I0Zjg0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMjk4OGI1NzI1ZmRjNDkzMDhiMzNmMWRlNGFhMjFiMzYuYmluZFBvcHVwKHBvcHVwXzk2YzQ0ZDUyOGM3YTRkMzZiMmUzY2JkMWJlYjcwYTMxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2Y0OTIzMjQ2NGJkODRmYmU4Y2U2ZGE2YjY3ZDIxMmFkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgyMjQ1ODIyMzkxNywtMTIyLjQ0NjYxMjk3ODgzOV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNWU0YTkzZmFiYzRkNDU0YTgzNjI2YTMzOWEwYzk4OGQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTBlNDBjMzAwODBjNDAzMTk5ZDczMmJlOGQyYmVhODMgPSAkKCc8ZGl2IGlkPSJodG1sXzkwZTQwYzMwMDgwYzQwMzE5OWQ3MzJiZThkMmJlYTgzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNWU0YTkzZmFiYzRkNDU0YTgzNjI2YTMzOWEwYzk4OGQuc2V0Q29udGVudChodG1sXzkwZTQwYzMwMDgwYzQwMzE5OWQ3MzJiZThkMmJlYTgzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZjQ5MjMyNDY0YmQ4NGZiZThjZTZkYTZiNjdkMjEyYWQuYmluZFBvcHVwKHBvcHVwXzVlNGE5M2ZhYmM0ZDQ1NGE4MzYyNmEzMzlhMGM5ODhkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQzNDc4MWYyMjBjNDQ3ZDdiZjVhZDhhNDZhNGU5NzE5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwMDM3OTk5NTEyNzk1LC0xMjIuNDA0NTk0MTQwNjM0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kYTQ3NTljYmFjZWM0YTAxYjY5MzkyYzQ2YTliOTQ0ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yYjBjYWJiYTg2MDY0Y2U3YTAyY2VjNmFlNWNiN2E3OCA9ICQoJzxkaXYgaWQ9Imh0bWxfMmIwY2FiYmE4NjA2NGNlN2EwMmNlYzZhZTVjYjdhNzgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZGE0NzU5Y2JhY2VjNGEwMWI2OTM5MmM0NmE5Yjk0NGQuc2V0Q29udGVudChodG1sXzJiMGNhYmJhODYwNjRjZTdhMDJjZWM2YWU1Y2I3YTc4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDM0NzgxZjIyMGM0NDdkN2JmNWFkOGE0NmE0ZTk3MTkuYmluZFBvcHVwKHBvcHVwX2RhNDc1OWNiYWNlYzRhMDFiNjkzOTJjNDZhOWI5NDRkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2I0OGE5YWM2ZjUxZjQ1NjlhZGNhNDFmODkwMzZlYjg2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzk1MzMzODI2NzQzNiwtMTIyLjM5NzM3Mzc0MDA2Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2RmMDVmOWE1YzJhNGRlNzliOWM4ODUxMzFlODk3MTcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTY5YjQxODZmN2FhNDE5YThlY2MzYWFiNzE2OThmYzcgPSAkKCc8ZGl2IGlkPSJodG1sXzk2OWI0MTg2ZjdhYTQxOWE4ZWNjM2FhYjcxNjk4ZmM3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdkZjA1ZjlhNWMyYTRkZTc5YjljODg1MTMxZTg5NzE3LnNldENvbnRlbnQoaHRtbF85NjliNDE4NmY3YWE0MTlhOGVjYzNhYWI3MTY5OGZjNyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2I0OGE5YWM2ZjUxZjQ1NjlhZGNhNDFmODkwMzZlYjg2LmJpbmRQb3B1cChwb3B1cF83ZGYwNWY5YTVjMmE0ZGU3OWI5Yzg4NTEzMWU4OTcxNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xYjdhODI5M2U5MDg0YmUxYWNjN2JhMzk4ZDU0ZDM3MiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzUxNTg3NDE2MjI5NSwtMTIyLjQwNzQzNDk4OTUyM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOWQ3MTA1N2VhMDJiNDIzMmJmNTFmYWJiZGY5YzA2M2YgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOGZiOTUwNzE3NjhlNGNlMWI5ZTUwZDllYjA0NzY4MDkgPSAkKCc8ZGl2IGlkPSJodG1sXzhmYjk1MDcxNzY4ZTRjZTFiOWU1MGQ5ZWIwNDc2ODA5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOWQ3MTA1N2VhMDJiNDIzMmJmNTFmYWJiZGY5YzA2M2Yuc2V0Q29udGVudChodG1sXzhmYjk1MDcxNzY4ZTRjZTFiOWU1MGQ5ZWIwNDc2ODA5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMWI3YTgyOTNlOTA4NGJlMWFjYzdiYTM5OGQ1NGQzNzIuYmluZFBvcHVwKHBvcHVwXzlkNzEwNTdlYTAyYjQyMzJiZjUxZmFiYmRmOWMwNjNmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzk2NDc2YTQyNTIxNjQzYTY4M2FiYTYwZjBhZDJkNjAxID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfY2E4MTA4NTI2MGU5NDM3ZmJkZTE3ZDlkMWVlYjkwZDMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTQ4MDczYTgxOTdmNDJkNWI3ZGUzNzQ2ZTA3OGYzNTkgPSAkKCc8ZGl2IGlkPSJodG1sXzk0ODA3M2E4MTk3ZjQyZDViN2RlMzc0NmUwNzhmMzU5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5QUk9TVElUVVRJT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NhODEwODUyNjBlOTQzN2ZiZGUxN2Q5ZDFlZWI5MGQzLnNldENvbnRlbnQoaHRtbF85NDgwNzNhODE5N2Y0MmQ1YjdkZTM3NDZlMDc4ZjM1OSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzk2NDc2YTQyNTIxNjQzYTY4M2FiYTYwZjBhZDJkNjAxLmJpbmRQb3B1cChwb3B1cF9jYTgxMDg1MjYwZTk0MzdmYmRlMTdkOWQxZWViOTBkMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl81MDVlZGNkNTE2NzE0NjI4YjcxNTA3MTM0MTM4NmYxYiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3ODUyMzM3NzYwMzIsLTEyMi40MDM0NjQwODAwMzNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RhZTE3OWIzNmVlYjRhMmJhMjA4Nzc0NDdjMTViNWM4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2YzOTg2ZjdlMWU4MTRhNGY5Njc5NWY1YzQ5ZDIyM2Y1ID0gJCgnPGRpdiBpZD0iaHRtbF9mMzk4NmY3ZTFlODE0YTRmOTY3OTVmNWM0OWQyMjNmNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2RhZTE3OWIzNmVlYjRhMmJhMjA4Nzc0NDdjMTViNWM4LnNldENvbnRlbnQoaHRtbF9mMzk4NmY3ZTFlODE0YTRmOTY3OTVmNWM0OWQyMjNmNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzUwNWVkY2Q1MTY3MTQ2MjhiNzE1MDcxMzQxMzg2ZjFiLmJpbmRQb3B1cChwb3B1cF9kYWUxNzliMzZlZWI0YTJiYTIwODc3NDQ3YzE1YjVjOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yY2M3ZTlkNjA1MzU0OTE2OWIyN2Q5NDUyMDBmOGUzYiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3MzI5MTgwNjkwMjk5NiwtMTIyLjQzNjYxNDE4MTMzMTAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83OWNmZjI3ZmJjMGY0MjU2YmU2NDBmMjg1MDgwNDk3NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wY2M0OGUzODdlOWE0NjU3YjA1ZWNlYzNmNWNjZjRkOCA9ICQoJzxkaXYgaWQ9Imh0bWxfMGNjNDhlMzg3ZTlhNDY1N2IwNWVjZWMzZjVjY2Y0ZDgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzljZmYyN2ZiYzBmNDI1NmJlNjQwZjI4NTA4MDQ5Nzcuc2V0Q29udGVudChodG1sXzBjYzQ4ZTM4N2U5YTQ2NTdiMDVlY2VjM2Y1Y2NmNGQ4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMmNjN2U5ZDYwNTM1NDkxNjliMjdkOTQ1MjAwZjhlM2IuYmluZFBvcHVwKHBvcHVwXzc5Y2ZmMjdmYmMwZjQyNTZiZTY0MGYyODUwODA0OTc3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzY3OGY3MmRkNDE3NDRkMzk4ZDllMTRjNWFmZTVhMzcyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgwNTI3NTc4NTA5LC0xMjIuMzk2ODQ5MDE1MTcyMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2QzMDdjNGU5Y2Y0OTQ4NGE5Y2JiZjVhZDM3NTFhZjdlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQxOGU0ODI3MzYwOTRjNTQ5ODQ0ZTE3YTg5ZTQyN2Q5ID0gJCgnPGRpdiBpZD0iaHRtbF80MThlNDgyNzM2MDk0YzU0OTg0NGUxN2E4OWU0MjdkOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RFJVRy9OQVJDT1RJQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZDMwN2M0ZTljZjQ5NDg0YTljYmJmNWFkMzc1MWFmN2Uuc2V0Q29udGVudChodG1sXzQxOGU0ODI3MzYwOTRjNTQ5ODQ0ZTE3YTg5ZTQyN2Q5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNjc4ZjcyZGQ0MTc0NGQzOThkOWUxNGM1YWZlNWEzNzIuYmluZFBvcHVwKHBvcHVwX2QzMDdjNGU5Y2Y0OTQ4NGE5Y2JiZjVhZDM3NTFhZjdlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQ4M2Y5MjQ5YmVhMzRhYTQ5NTBkNzg4YWI0MGY0NDdlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgwNTI3NTc4NTA5LC0xMjIuMzk2ODQ5MDE1MTcyMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2YyMjhlMzVhMTkwYzRiZDQ5NWM5OGFjYmI0MDc1ZGIzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzE5ZmM2YmZiMTcxNzQyZmViYTA1ZjViOTkwZWI1MjUxID0gJCgnPGRpdiBpZD0iaHRtbF8xOWZjNmJmYjE3MTc0MmZlYmEwNWY1Yjk5MGViNTI1MSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2YyMjhlMzVhMTkwYzRiZDQ5NWM5OGFjYmI0MDc1ZGIzLnNldENvbnRlbnQoaHRtbF8xOWZjNmJmYjE3MTc0MmZlYmEwNWY1Yjk5MGViNTI1MSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzQ4M2Y5MjQ5YmVhMzRhYTQ5NTBkNzg4YWI0MGY0NDdlLmJpbmRQb3B1cChwb3B1cF9mMjI4ZTM1YTE5MGM0YmQ0OTVjOThhY2JiNDA3NWRiMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yMDA4MjhiOWRiMGE0NzIwYTg2YTkxMDI3NDIxYTA1ZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyODQxODA3MDY2MDIwNCwtMTIyLjQ1MDAwMDc5MDQ0NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODYxMTM3YTlmOTE0NDBmZGIxYTE4Yjc0OWMzMzNjY2MgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTYxOTUyMTVkYmE2NGU0NWJiNDYxYmRmNzcxODY2MmQgPSAkKCc8ZGl2IGlkPSJodG1sX2E2MTk1MjE1ZGJhNjRlNDViYjQ2MWJkZjc3MTg2NjJkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84NjExMzdhOWY5MTQ0MGZkYjFhMThiNzQ5YzMzM2NjYy5zZXRDb250ZW50KGh0bWxfYTYxOTUyMTVkYmE2NGU0NWJiNDYxYmRmNzcxODY2MmQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yMDA4MjhiOWRiMGE0NzIwYTg2YTkxMDI3NDIxYTA1Zi5iaW5kUG9wdXAocG9wdXBfODYxMTM3YTlmOTE0NDBmZGIxYTE4Yjc0OWMzMzNjY2MpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYTcxODE5Y2E2N2JkNDY1ZmIwMjY0ZGQ3NWE2M2RhY2MgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81NDQ0OWUyMzM1MmY0ZDFmODVlNWUyYmFhYzNhNWNiYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jNzFhOWQ5YjhiYjc0NTQ0YjhlZTlmN2Q2M2ViMzQ4MiA9ICQoJzxkaXYgaWQ9Imh0bWxfYzcxYTlkOWI4YmI3NDU0NGI4ZWU5ZjdkNjNlYjM0ODIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81NDQ0OWUyMzM1MmY0ZDFmODVlNWUyYmFhYzNhNWNiYy5zZXRDb250ZW50KGh0bWxfYzcxYTlkOWI4YmI3NDU0NGI4ZWU5ZjdkNjNlYjM0ODIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hNzE4MTljYTY3YmQ0NjVmYjAyNjRkZDc1YTYzZGFjYy5iaW5kUG9wdXAocG9wdXBfNTQ0NDllMjMzNTJmNGQxZjg1ZTVlMmJhYWMzYTVjYmMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZWYwNjk0ZmU1YmZmNDBlYWJjN2NiYTQ3MzJhYmJkMWIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2I2MGU4ODNhZTYwZDQ1MTQ4MmE5MTI0MDMzODMwMTRhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhkMmEwODhjYmNmMTRjNjJiNTEyYjZhYzA5MjNlYzE1ID0gJCgnPGRpdiBpZD0iaHRtbF84ZDJhMDg4Y2JjZjE0YzYyYjUxMmI2YWMwOTIzZWMxNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjYwZTg4M2FlNjBkNDUxNDgyYTkxMjQwMzM4MzAxNGEuc2V0Q29udGVudChodG1sXzhkMmEwODhjYmNmMTRjNjJiNTEyYjZhYzA5MjNlYzE1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZWYwNjk0ZmU1YmZmNDBlYWJjN2NiYTQ3MzJhYmJkMWIuYmluZFBvcHVwKHBvcHVwX2I2MGU4ODNhZTYwZDQ1MTQ4MmE5MTI0MDMzODMwMTRhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzFhZGE4NDQ0YzY5YzQ4YzQ4ZTUzMzQ4MGIxYzE5NzlmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzA0YTI1ZjFiNWQyMDRiNGI4NDJmMzllM2NiYzViMjcyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RmOTdhYjJkMzA3NjRmODViYmQyYTNiMjE5YThjYjM1ID0gJCgnPGRpdiBpZD0iaHRtbF9kZjk3YWIyZDMwNzY0Zjg1YmJkMmEzYjIxOWE4Y2IzNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U0VDT05EQVJZIENPREVTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wNGEyNWYxYjVkMjA0YjRiODQyZjM5ZTNjYmM1YjI3Mi5zZXRDb250ZW50KGh0bWxfZGY5N2FiMmQzMDc2NGY4NWJiZDJhM2IyMTlhOGNiMzUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8xYWRhODQ0NGM2OWM0OGM0OGU1MzM0ODBiMWMxOTc5Zi5iaW5kUG9wdXAocG9wdXBfMDRhMjVmMWI1ZDIwNGI0Yjg0MmYzOWUzY2JjNWIyNzIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOWJhYzA5ZWFhZTU4NGM5MzhjNmY4N2Y2YTAzMjBlOTAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTU3Mzk5ZTUyZjExNDZmYmIxMDk3MWUwYmJjMDA3NzMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjY2YjU4MzhiZWM1NDZlNWIzMDVlZWNkZTE5MTlmYTkgPSAkKCc8ZGl2IGlkPSJodG1sX2I2NmI1ODM4YmVjNTQ2ZTViMzA1ZWVjZGUxOTE5ZmE5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TVVNQSUNJT1VTIE9DQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTU3Mzk5ZTUyZjExNDZmYmIxMDk3MWUwYmJjMDA3NzMuc2V0Q29udGVudChodG1sX2I2NmI1ODM4YmVjNTQ2ZTViMzA1ZWVjZGUxOTE5ZmE5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOWJhYzA5ZWFhZTU4NGM5MzhjNmY4N2Y2YTAzMjBlOTAuYmluZFBvcHVwKHBvcHVwXzk1NzM5OWU1MmYxMTQ2ZmJiMTA5NzFlMGJiYzAwNzczKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2VlNTEwNTY0Yjg0YTQxMzQ4MDliYTVhOWRlOTkxMWViID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc0OGY3NWViYTIzNjRhZjlhNzQ5YjUwMmMzZWE1NmNiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhkZDY3MWM5NWRkMjQ2NTJhNDg3Y2M3ZjQ0ZDg1NTE5ID0gJCgnPGRpdiBpZD0iaHRtbF84ZGQ2NzFjOTVkZDI0NjUyYTQ4N2NjN2Y0NGQ4NTUxOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc0OGY3NWViYTIzNjRhZjlhNzQ5YjUwMmMzZWE1NmNiLnNldENvbnRlbnQoaHRtbF84ZGQ2NzFjOTVkZDI0NjUyYTQ4N2NjN2Y0NGQ4NTUxOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2VlNTEwNTY0Yjg0YTQxMzQ4MDliYTVhOWRlOTkxMWViLmJpbmRQb3B1cChwb3B1cF83NDhmNzVlYmEyMzY0YWY5YTc0OWI1MDJjM2VhNTZjYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yNjlhZjFiZjU5MGI0YzY4OWZhOGI2ZGRkNTczOWFmMyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODMyMzU0NDk5MDQsLTEyMi40MTE4NTcwMzI1NF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZTUxMjEzYTQ4ZGY3NGY4MGE4ZjY3YjFlNzc5ZDgwMDQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfY2I5NjMxNGY5MmQ0NDY1OTlkNjZmMDIyOTVmMDM1NDMgPSAkKCc8ZGl2IGlkPSJodG1sX2NiOTYzMTRmOTJkNDQ2NTk5ZDY2ZjAyMjk1ZjAzNTQzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lNTEyMTNhNDhkZjc0ZjgwYThmNjdiMWU3NzlkODAwNC5zZXRDb250ZW50KGh0bWxfY2I5NjMxNGY5MmQ0NDY1OTlkNjZmMDIyOTVmMDM1NDMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yNjlhZjFiZjU5MGI0YzY4OWZhOGI2ZGRkNTczOWFmMy5iaW5kUG9wdXAocG9wdXBfZTUxMjEzYTQ4ZGY3NGY4MGE4ZjY3YjFlNzc5ZDgwMDQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZTc0NWY4OWNlZGY2NGVlYzliMjFiNTBjYjNmMWM5MDUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTU5OTc3MzM5ODU2LC0xMjIuNDA5NDM1NjE3MTA2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yZjcwZDA3MjNmMDM0OTZhYjg3Y2VkZWRlNGQ4N2Q5MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83ZmNmMTliNjhlOGE0MmIwYmUxZTE5OGJmMjM3OGQ0MyA9ICQoJzxkaXYgaWQ9Imh0bWxfN2ZjZjE5YjY4ZThhNDJiMGJlMWUxOThiZjIzNzhkNDMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yZjcwZDA3MjNmMDM0OTZhYjg3Y2VkZWRlNGQ4N2Q5Mi5zZXRDb250ZW50KGh0bWxfN2ZjZjE5YjY4ZThhNDJiMGJlMWUxOThiZjIzNzhkNDMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lNzQ1Zjg5Y2VkZjY0ZWVjOWIyMWI1MGNiM2YxYzkwNS5iaW5kUG9wdXAocG9wdXBfMmY3MGQwNzIzZjAzNDk2YWI4N2NlZGVkZTRkODdkOTIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDE3OWMyMzYyMWM5NDcyMTlhNGUxMzUzNTZjZjZiOWEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODcwNzk4MTQ0NDQzLC0xMjIuNDI1ODgzMzU4MTQ4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jM2E1MjMyZmI2NTE0OWNmOWI1ODQzN2UwMGNlZjMwNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84MDg1OGUwZjEwMTA0YmY2OWJmZDIxMWU1YTYzYmZmNSA9ICQoJzxkaXYgaWQ9Imh0bWxfODA4NThlMGYxMDEwNGJmNjliZmQyMTFlNWE2M2JmZjUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzNhNTIzMmZiNjUxNDljZjliNTg0MzdlMDBjZWYzMDQuc2V0Q29udGVudChodG1sXzgwODU4ZTBmMTAxMDRiZjY5YmZkMjExZTVhNjNiZmY1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZDE3OWMyMzYyMWM5NDcyMTlhNGUxMzUzNTZjZjZiOWEuYmluZFBvcHVwKHBvcHVwX2MzYTUyMzJmYjY1MTQ5Y2Y5YjU4NDM3ZTAwY2VmMzA0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzk1ODJhNWRiMjI1MTRiZmI5MTU0MmFiZjA3NGFhYmZjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM2MDM3NDQ2Njg2MjA0LC0xMjIuNDE1MTI2NTQzMDAxMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2UyZGE4ZTk4NmNiZjQ1N2VhZDEyZTYwYWQzYWY5MGVjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U2MGUxNWE5MTdkZDRhMGJiOWQyNThiNGFhMzRjNDczID0gJCgnPGRpdiBpZD0iaHRtbF9lNjBlMTVhOTE3ZGQ0YTBiYjlkMjU4YjRhYTM0YzQ3MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lMmRhOGU5ODZjYmY0NTdlYWQxMmU2MGFkM2FmOTBlYy5zZXRDb250ZW50KGh0bWxfZTYwZTE1YTkxN2RkNGEwYmI5ZDI1OGI0YWEzNGM0NzMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl85NTgyYTVkYjIyNTE0YmZiOTE1NDJhYmYwNzRhYWJmYy5iaW5kUG9wdXAocG9wdXBfZTJkYThlOTg2Y2JmNDU3ZWFkMTJlNjBhZDNhZjkwZWMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMTg1YmQxOGE2NmRmNDA2MzliN2JkOGZlNGFiN2YyZDYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTI3Njc4ODQ4MjEsLTEyMi40MzE5MjgwMTEwODldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzBlN2NlOTg0MTAyYzRiZWM5MzA0ZjljOTAyOWMyYTI0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzJjYmM3YzFhZDI4YzRlNWRhMDlmMGZkNjA3MDNjMTQ1ID0gJCgnPGRpdiBpZD0iaHRtbF8yY2JjN2MxYWQyOGM0ZTVkYTA5ZjBmZDYwNzAzYzE0NSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzBlN2NlOTg0MTAyYzRiZWM5MzA0ZjljOTAyOWMyYTI0LnNldENvbnRlbnQoaHRtbF8yY2JjN2MxYWQyOGM0ZTVkYTA5ZjBmZDYwNzAzYzE0NSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzE4NWJkMThhNjZkZjQwNjM5YjdiZDhmZTRhYjdmMmQ2LmJpbmRQb3B1cChwb3B1cF8wZTdjZTk4NDEwMmM0YmVjOTMwNGY5YzkwMjljMmEyNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85ZTE5MjhiNTFiZjY0MmRhYjc1YzFhZmFlYWRiYjI0ZCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4OTU3MTAyNTU4NjMsLTEyMi40MDIxNjM3MTM2MThdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2VkN2ExYjFiMzJhODQ0MTc4MGNiZGQxODQxMTIyMDJlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc3MGI0MTJiNWFiYjQwN2ViMDFiYjA2YzhiYWI2Yjk3ID0gJCgnPGRpdiBpZD0iaHRtbF83NzBiNDEyYjVhYmI0MDdlYjAxYmIwNmM4YmFiNmI5NyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RFJVTktFTk5FU1M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2VkN2ExYjFiMzJhODQ0MTc4MGNiZGQxODQxMTIyMDJlLnNldENvbnRlbnQoaHRtbF83NzBiNDEyYjVhYmI0MDdlYjAxYmIwNmM4YmFiNmI5Nyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzllMTkyOGI1MWJmNjQyZGFiNzVjMWFmYWVhZGJiMjRkLmJpbmRQb3B1cChwb3B1cF9lZDdhMWIxYjMyYTg0NDE3ODBjYmRkMTg0MTEyMjAyZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80NDhmZmEwY2JhYWY0NWY2YmVkODBmMjRjNzVjNGM2NCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQxOWI1NGE3ZjYxMTRkZGM4Nzg2OTc3ZWQxY2RkOGYyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2VmMDliODdkMjNlNjRhZDY4NmU0NWNhYWVmOGM4M2ExID0gJCgnPGRpdiBpZD0iaHRtbF9lZjA5Yjg3ZDIzZTY0YWQ2ODZlNDVjYWFlZjhjODNhMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQxOWI1NGE3ZjYxMTRkZGM4Nzg2OTc3ZWQxY2RkOGYyLnNldENvbnRlbnQoaHRtbF9lZjA5Yjg3ZDIzZTY0YWQ2ODZlNDVjYWFlZjhjODNhMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzQ0OGZmYTBjYmFhZjQ1ZjZiZWQ4MGYyNGM3NWM0YzY0LmJpbmRQb3B1cChwb3B1cF80MTliNTRhN2Y2MTE0ZGRjODc4Njk3N2VkMWNkZDhmMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82NzkwOTZjZjRhOGE0ZDkwOTg1NDQyZjExOGNiYmVkMyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MzgzNjU1NjUzNDc5NCwtMTIyLjQxMzc5MDk3Mjc4MDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yNmI2MzFjNzcwOTU0YTUyODkzZGJhMTc5NDA2ZTEyMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80MjI0MTg5MjZjYTI0Mjg3YmIwOGJlZjI3YmIwN2I0NyA9ICQoJzxkaXYgaWQ9Imh0bWxfNDIyNDE4OTI2Y2EyNDI4N2JiMDhiZWYyN2JiMDdiNDciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjZiNjMxYzc3MDk1NGE1Mjg5M2RiYTE3OTQwNmUxMjEuc2V0Q29udGVudChodG1sXzQyMjQxODkyNmNhMjQyODdiYjA4YmVmMjdiYjA3YjQ3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNjc5MDk2Y2Y0YThhNGQ5MDk4NTQ0MmYxMThjYmJlZDMuYmluZFBvcHVwKHBvcHVwXzI2YjYzMWM3NzA5NTRhNTI4OTNkYmExNzk0MDZlMTIxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2ZlZTlmZGY2NmJhZjQ1YWU5MDZkODI2OWMzZTJkNDNlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYmFkZjE4NjE3YjBjNDQ1ZmI2Y2I0NTdiMDYwMzBlOGMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMWMxNGY1OGRhZDk4NDJjYzgzNmRlMDdlYjIxNmRiM2UgPSAkKCc8ZGl2IGlkPSJodG1sXzFjMTRmNThkYWQ5ODQyY2M4MzZkZTA3ZWIyMTZkYjNlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYmFkZjE4NjE3YjBjNDQ1ZmI2Y2I0NTdiMDYwMzBlOGMuc2V0Q29udGVudChodG1sXzFjMTRmNThkYWQ5ODQyY2M4MzZkZTA3ZWIyMTZkYjNlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZmVlOWZkZjY2YmFmNDVhZTkwNmQ4MjY5YzNlMmQ0M2UuYmluZFBvcHVwKHBvcHVwX2JhZGYxODYxN2IwYzQ0NWZiNmNiNDU3YjA2MDMwZThjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2U3Zjg1MzVhNmQ1NjQyYjJiMzY0MmUzNTZjYjQyZjk1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xNGNkYzAwOGFmNTg0ZDkyOGUzNmNiMGI3YTExMGQ4YSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yODdkNWE5MzBiMzM0YTUyODE3Y2I1ZGRiYWNhNDAzZiA9ICQoJzxkaXYgaWQ9Imh0bWxfMjg3ZDVhOTMwYjMzNGE1MjgxN2NiNWRkYmFjYTQwM2YiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNFQ09OREFSWSBDT0RFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTRjZGMwMDhhZjU4NGQ5MjhlMzZjYjBiN2ExMTBkOGEuc2V0Q29udGVudChodG1sXzI4N2Q1YTkzMGIzMzRhNTI4MTdjYjVkZGJhY2E0MDNmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZTdmODUzNWE2ZDU2NDJiMmIzNjQyZTM1NmNiNDJmOTUuYmluZFBvcHVwKHBvcHVwXzE0Y2RjMDA4YWY1ODRkOTI4ZTM2Y2IwYjdhMTEwZDhhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzE5ZDJkMGE2ZWRkZDQ3Y2ZiMzgzNWQ3ZDcwMmQxNjA5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81NmQ2OTg5Y2RhM2E0MDZkODk5YTcyMmNhZGRiN2M3NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jNzJhMzI2ZDM4ODA0MWViOGQ0NTY2Mjg3ZDNlZTQ5ZSA9ICQoJzxkaXYgaWQ9Imh0bWxfYzcyYTMyNmQzODgwNDFlYjhkNDU2NjI4N2QzZWU0OWUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTZkNjk4OWNkYTNhNDA2ZDg5OWE3MjJjYWRkYjdjNzcuc2V0Q29udGVudChodG1sX2M3MmEzMjZkMzg4MDQxZWI4ZDQ1NjYyODdkM2VlNDllKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMTlkMmQwYTZlZGRkNDdjZmIzODM1ZDdkNzAyZDE2MDkuYmluZFBvcHVwKHBvcHVwXzU2ZDY5ODljZGEzYTQwNmQ4OTlhNzIyY2FkZGI3Yzc3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2MzYThhYTQ5ZGJhYjQ4N2FiYzI5YzE5ZDhiOTIwNmUzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1OTk4ODMyMzc5Nzk2LC0xMjIuNDExNzQ3MzcxOTI0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xNGE3MDQ0MGFhNzk0NzkzOTRjZjNlYmYxYjE2NDgzZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mYzMyOTk4ZTE4MzU0MmEzOGM4NDMyMDVmN2Q2N2I4OSA9ICQoJzxkaXYgaWQ9Imh0bWxfZmMzMjk5OGUxODM1NDJhMzhjODQzMjA1ZjdkNjdiODkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNVU1BJQ0lPVVMgT0NDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xNGE3MDQ0MGFhNzk0NzkzOTRjZjNlYmYxYjE2NDgzZi5zZXRDb250ZW50KGh0bWxfZmMzMjk5OGUxODM1NDJhMzhjODQzMjA1ZjdkNjdiODkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jM2E4YWE0OWRiYWI0ODdhYmMyOWMxOWQ4YjkyMDZlMy5iaW5kUG9wdXAocG9wdXBfMTRhNzA0NDBhYTc5NDc5Mzk0Y2YzZWJmMWIxNjQ4M2YpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNjA3NmZiM2YxYmNjNDM3MTllZWY1MDU4N2U1NDQzNGIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjMzNzU4MDU4MDU5LC0xMjIuNDIwNDM0NzI0NTUyOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzhlODE4ZmU1Yjc3NTRmOGI4ZmFkOGVhOWEyY2MwYjc3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2E3YWFhMDJjN2Q5YjRlNjNiZmE3NmNmMTAxZDBjOWE1ID0gJCgnPGRpdiBpZD0iaHRtbF9hN2FhYTAyYzdkOWI0ZTYzYmZhNzZjZjEwMWQwYzlhNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzhlODE4ZmU1Yjc3NTRmOGI4ZmFkOGVhOWEyY2MwYjc3LnNldENvbnRlbnQoaHRtbF9hN2FhYTAyYzdkOWI0ZTYzYmZhNzZjZjEwMWQwYzlhNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzYwNzZmYjNmMWJjYzQzNzE5ZWVmNTA1ODdlNTQ0MzRiLmJpbmRQb3B1cChwb3B1cF84ZTgxOGZlNWI3NzU0ZjhiOGZhZDhlYTlhMmNjMGI3Nyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iYjMzZGU5YTg3ZDc0MWUzYWUyNzExZGQ3MWQzMTZkMyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTAyMjY2MjI3ODYsLTEyMi40MTE5ODc2NDM1OTUwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNGNhNzBjZjMxYzJmNDMxZGFhZmMzNjAzODgzYmMxZDQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzA3MGI3Y2FkMTZkNGMwMGFkNjMwNzgyMTQwMTU4YTYgPSAkKCc8ZGl2IGlkPSJodG1sXzMwNzBiN2NhZDE2ZDRjMDBhZDYzMDc4MjE0MDE1OGE2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzRjYTcwY2YzMWMyZjQzMWRhYWZjMzYwMzg4M2JjMWQ0LnNldENvbnRlbnQoaHRtbF8zMDcwYjdjYWQxNmQ0YzAwYWQ2MzA3ODIxNDAxNThhNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2JiMzNkZTlhODdkNzQxZTNhZTI3MTFkZDcxZDMxNmQzLmJpbmRQb3B1cChwb3B1cF80Y2E3MGNmMzFjMmY0MzFkYWFmYzM2MDM4ODNiYzFkNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xYmQ5YTdmYzQ1NzM0NThiOGYyNWUyZWVjNDM2MGVlMiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NDYyMDY0OTEwNjQ5NSwtMTIyLjUwMDM4MDQyNzkxNV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjk1ODk5YzIzZTZmNDYzNTgwMTY1MGMwYWE4MDQ2N2IgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzAyMzdjZGYzZTBhNGM1ZTliNjZlMDAxNDkzMzgyMWUgPSAkKCc8ZGl2IGlkPSJodG1sXzMwMjM3Y2RmM2UwYTRjNWU5YjY2ZTAwMTQ5MzM4MjFlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjk1ODk5YzIzZTZmNDYzNTgwMTY1MGMwYWE4MDQ2N2Iuc2V0Q29udGVudChodG1sXzMwMjM3Y2RmM2UwYTRjNWU5YjY2ZTAwMTQ5MzM4MjFlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMWJkOWE3ZmM0NTczNDU4YjhmMjVlMmVlYzQzNjBlZTIuYmluZFBvcHVwKHBvcHVwXzI5NTg5OWMyM2U2ZjQ2MzU4MDE2NTBjMGFhODA0NjdiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQ0MjFlYTc2ZTUyMTQ2NTQ5MzA5MTYzMzkzYjlkYzdmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1MTkxODI2NzIxNywtMTIyLjQ2NjU1ODc4MDY4M10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzA2YmQyYTVmNjI5NDdlNzk1ZjViYTE3MmJkMDhhNDggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDBmOGZiZTViYzE2NDc1ZmJjZjI0MDRlZjRmYjBkZGYgPSAkKCc8ZGl2IGlkPSJodG1sX2QwZjhmYmU1YmMxNjQ3NWZiY2YyNDA0ZWY0ZmIwZGRmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5ST0JCRVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83MDZiZDJhNWY2Mjk0N2U3OTVmNWJhMTcyYmQwOGE0OC5zZXRDb250ZW50KGh0bWxfZDBmOGZiZTViYzE2NDc1ZmJjZjI0MDRlZjRmYjBkZGYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80NDIxZWE3NmU1MjE0NjU0OTMwOTE2MzM5M2I5ZGM3Zi5iaW5kUG9wdXAocG9wdXBfNzA2YmQyYTVmNjI5NDdlNzk1ZjViYTE3MmJkMDhhNDgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMDczNTg3M2RkODZhNDk2OWEwYzE2OWJjMGM1NDJjMmYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkwODQxNzI5MDI4LC0xMjIuNDg2OTI1OTYwMTE0MDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2M3MGI3MWI0NjM5NzRlNTJhN2I4MjIwOGQwMjdjNTUxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzAyYzNhOGJhY2FhYTQ5NzM4NjM0YzNiNDI5YzY0MDE5ID0gJCgnPGRpdiBpZD0iaHRtbF8wMmMzYThiYWNhYWE0OTczODYzNGMzYjQyOWM2NDAxOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2M3MGI3MWI0NjM5NzRlNTJhN2I4MjIwOGQwMjdjNTUxLnNldENvbnRlbnQoaHRtbF8wMmMzYThiYWNhYWE0OTczODYzNGMzYjQyOWM2NDAxOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzA3MzU4NzNkZDg2YTQ5NjlhMGMxNjliYzBjNTQyYzJmLmJpbmRQb3B1cChwb3B1cF9jNzBiNzFiNDYzOTc0ZTUyYTdiODIyMDhkMDI3YzU1MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83OWU5ODU2YzMxMzc0YTEzOGJiNThkZThlNmE1ZDcxNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2ODUzNjAxMjM1ODMsLTEyMi40MTU2MTYzMzgzMTk5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfODIxNzJlNjY1OGRlNGUwMmJlMjQ0N2E0Y2JlMzUxNzUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzhmOTI1Yzc2YjUwNGJlNWI2ZTZjMmQ2N2E4ODhjNmEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzkxN2M0MzZiODU2NDQ3OWI1YTI4MThmODczMTAxNTQgPSAkKCc8ZGl2IGlkPSJodG1sXzc5MTdjNDM2Yjg1NjQ0NzliNWEyODE4Zjg3MzEwMTU0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM4ZjkyNWM3NmI1MDRiZTViNmU2YzJkNjdhODg4YzZhLnNldENvbnRlbnQoaHRtbF83OTE3YzQzNmI4NTY0NDc5YjVhMjgxOGY4NzMxMDE1NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzc5ZTk4NTZjMzEzNzRhMTM4YmI1OGRlOGU2YTVkNzE1LmJpbmRQb3B1cChwb3B1cF8zOGY5MjVjNzZiNTA0YmU1YjZlNmMyZDY3YTg4OGM2YSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8zN2E3NzYzN2QxZmM0NzE0YmQ4N2FiMjQ5MGVlZTFhZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQyOTc3MTQwNzQsLTEyMi40NDk3NTE2NTI1NjNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2NlNzRkYjBmZTg0MTQ1ZGU5MjI1YmQ3NzkyYjg1MWUyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2ExNjdiZDI3MWQ2NjQ1M2M5ZjJjNDI3MmM2NDBiY2I3ID0gJCgnPGRpdiBpZD0iaHRtbF9hMTY3YmQyNzFkNjY0NTNjOWYyYzQyNzJjNjQwYmNiNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NlNzRkYjBmZTg0MTQ1ZGU5MjI1YmQ3NzkyYjg1MWUyLnNldENvbnRlbnQoaHRtbF9hMTY3YmQyNzFkNjY0NTNjOWYyYzQyNzJjNjQwYmNiNyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzM3YTc3NjM3ZDFmYzQ3MTRiZDg3YWIyNDkwZWVlMWFlLmJpbmRQb3B1cChwb3B1cF9jZTc0ZGIwZmU4NDE0NWRlOTIyNWJkNzc5MmI4NTFlMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9lNTY1YTYyNjA4ZDc0ODZjOGFmZWNjYjg0ZWU5NTdhMSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQyOTc3MTQwNzQsLTEyMi40NDk3NTE2NTI1NjNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzgyMTcyZTY2NThkZTRlMDJiZTI0NDdhNGNiZTM1MTc1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RlYmIyNzE3ZTY0YzQyOWRhNzIwODIwMDNkNjc2NjI1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc4MzdlNjFmMDc3ZDRjMDQ4NTI3MjNmYWI1NGRjYjNiID0gJCgnPGRpdiBpZD0iaHRtbF83ODM3ZTYxZjA3N2Q0YzA0ODUyNzIzZmFiNTRkY2IzYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZGViYjI3MTdlNjRjNDI5ZGE3MjA4MjAwM2Q2NzY2MjUuc2V0Q29udGVudChodG1sXzc4MzdlNjFmMDc3ZDRjMDQ4NTI3MjNmYWI1NGRjYjNiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZTU2NWE2MjYwOGQ3NDg2YzhhZmVjY2I4NGVlOTU3YTEuYmluZFBvcHVwKHBvcHVwX2RlYmIyNzE3ZTY0YzQyOWRhNzIwODIwMDNkNjc2NjI1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzBlYThiMzIyOTIxZDRjNmI4YWFjYzkzNDQ3MWE4ZDhhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM1MjY4MTQ2OTA4Mzk2LC0xMjIuNDcyNzE1NzU5NjMxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl84MjE3MmU2NjU4ZGU0ZTAyYmUyNDQ3YTRjYmUzNTE3NSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82OTg0MWNmODkwY2U0MGJlYTJiYzYwNzY4ZGZiNTBiZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yMzdhNzhiODk2OTI0NzViYjYwNDlmMTU4NTExOGY2NyA9ICQoJzxkaXYgaWQ9Imh0bWxfMjM3YTc4Yjg5NjkyNDc1YmI2MDQ5ZjE1ODUxMThmNjciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzY5ODQxY2Y4OTBjZTQwYmVhMmJjNjA3NjhkZmI1MGJlLnNldENvbnRlbnQoaHRtbF8yMzdhNzhiODk2OTI0NzViYjYwNDlmMTU4NTExOGY2Nyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzBlYThiMzIyOTIxZDRjNmI4YWFjYzkzNDQ3MWE4ZDhhLmJpbmRQb3B1cChwb3B1cF82OTg0MWNmODkwY2U0MGJlYTJiYzYwNzY4ZGZiNTBiZSk7CgogICAgICAgICAgICAKICAgICAgICAKPC9zY3JpcHQ+\" 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 0x7f0e2e0d4588>"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from folium import plugins\n",
"\n",
"# let's start again with a clean copy of the map of San Francisco\n",
"sanfran_map = folium.Map(location = [latitude, longitude], zoom_start = 12)\n",
"\n",
"# instantiate a mark cluster object for the incidents in the dataframe\n",
"incidents = plugins.MarkerCluster().add_to(sanfran_map)\n",
"\n",
"# loop through the dataframe and add each data point to the mark cluster\n",
"for lat, lng, label, in zip(df_incidents.Y, df_incidents.X, df_incidents.Category):\n",
" folium.Marker(\n",
" location=[lat, lng],\n",
" icon=None,\n",
" popup=label,\n",
" ).add_to(incidents)\n",
"\n",
"# display map\n",
"sanfran_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Notice how when you zoom out all the way, all markers are grouped into one cluster, *the global cluster*, of 100 markers or crimes, which is the total number of crimes in our dataframe. Once you start zooming in, the *global cluster* will start breaking up into smaller clusters. Zooming in all the way will result in individual markers."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"# Choropleth Maps <a id=\"8\"></a>\n",
"\n",
"A `Choropleth` map is a thematic map in which areas are shaded or patterned in proportion to the measurement of the statistical variable being displayed on the map, such as population density or per-capita income. The choropleth map provides an easy way to visualize how a measurement varies across a geographic area or it shows the level of variability within a region. Below is a `Choropleth` map of the US depicting the population by square mile per state.\n",
"\n",
"<img src = \"https://ibm.box.com/shared/static/2kzaknzdf6crt3n5rx6haskg3wiaklxl.png\" width = 600> "
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Now, let's create our own `Choropleth` map of the world depicting immigration from various countries to Canada.\n",
"\n",
"Let's first download and import our primary Canadian immigration dataset using *pandas* `read_excel()` method. Normally, before we can do that, we would need to download a module which *pandas* requires to read in excel files. This module is **xlrd**. For your convenience, we have pre-installed this module, so you would not have to worry about that. Otherwise, you would need to run the following line of code to install the **xlrd** module:\n",
"```\n",
"!conda install -c anaconda xlrd --yes\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Download the dataset and read it into a *pandas* dataframe:"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Data downloaded and read into a dataframe!\n"
]
}
],
"source": [
"df_can = pd.read_excel('https://ibm.box.com/shared/static/lw190pt9zpy5bd1ptyg2aw15awomz9pu.xlsx',\n",
" sheet_name='Canada by Citizenship',\n",
" skiprows=range(20),\n",
" skipfooter=2)\n",
"\n",
"print('Data downloaded and read into a dataframe!')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's take a look at the first five items in our dataset."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Type</th>\n",
" <th>Coverage</th>\n",
" <th>OdName</th>\n",
" <th>AREA</th>\n",
" <th>AreaName</th>\n",
" <th>REG</th>\n",
" <th>RegName</th>\n",
" <th>DEV</th>\n",
" <th>DevName</th>\n",
" <th>1980</th>\n",
" <th>...</th>\n",
" <th>2004</th>\n",
" <th>2005</th>\n",
" <th>2006</th>\n",
" <th>2007</th>\n",
" <th>2008</th>\n",
" <th>2009</th>\n",
" <th>2010</th>\n",
" <th>2011</th>\n",
" <th>2012</th>\n",
" <th>2013</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Immigrants</td>\n",
" <td>Foreigners</td>\n",
" <td>Afghanistan</td>\n",
" <td>935</td>\n",
" <td>Asia</td>\n",
" <td>5501</td>\n",
" <td>Southern Asia</td>\n",
" <td>902</td>\n",
" <td>Developing regions</td>\n",
" <td>16</td>\n",
" <td>...</td>\n",
" <td>2978</td>\n",
" <td>3436</td>\n",
" <td>3009</td>\n",
" <td>2652</td>\n",
" <td>2111</td>\n",
" <td>1746</td>\n",
" <td>1758</td>\n",
" <td>2203</td>\n",
" <td>2635</td>\n",
" <td>2004</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Immigrants</td>\n",
" <td>Foreigners</td>\n",
" <td>Albania</td>\n",
" <td>908</td>\n",
" <td>Europe</td>\n",
" <td>925</td>\n",
" <td>Southern Europe</td>\n",
" <td>901</td>\n",
" <td>Developed regions</td>\n",
" <td>1</td>\n",
" <td>...</td>\n",
" <td>1450</td>\n",
" <td>1223</td>\n",
" <td>856</td>\n",
" <td>702</td>\n",
" <td>560</td>\n",
" <td>716</td>\n",
" <td>561</td>\n",
" <td>539</td>\n",
" <td>620</td>\n",
" <td>603</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Immigrants</td>\n",
" <td>Foreigners</td>\n",
" <td>Algeria</td>\n",
" <td>903</td>\n",
" <td>Africa</td>\n",
" <td>912</td>\n",
" <td>Northern Africa</td>\n",
" <td>902</td>\n",
" <td>Developing regions</td>\n",
" <td>80</td>\n",
" <td>...</td>\n",
" <td>3616</td>\n",
" <td>3626</td>\n",
" <td>4807</td>\n",
" <td>3623</td>\n",
" <td>4005</td>\n",
" <td>5393</td>\n",
" <td>4752</td>\n",
" <td>4325</td>\n",
" <td>3774</td>\n",
" <td>4331</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Immigrants</td>\n",
" <td>Foreigners</td>\n",
" <td>American Samoa</td>\n",
" <td>909</td>\n",
" <td>Oceania</td>\n",
" <td>957</td>\n",
" <td>Polynesia</td>\n",
" <td>902</td>\n",
" <td>Developing regions</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Immigrants</td>\n",
" <td>Foreigners</td>\n",
" <td>Andorra</td>\n",
" <td>908</td>\n",
" <td>Europe</td>\n",
" <td>925</td>\n",
" <td>Southern Europe</td>\n",
" <td>901</td>\n",
" <td>Developed regions</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 43 columns</p>\n",
"</div>"
],
"text/plain": [
" Type Coverage OdName AREA AreaName REG \\\n",
"0 Immigrants Foreigners Afghanistan 935 Asia 5501 \n",
"1 Immigrants Foreigners Albania 908 Europe 925 \n",
"2 Immigrants Foreigners Algeria 903 Africa 912 \n",
"3 Immigrants Foreigners American Samoa 909 Oceania 957 \n",
"4 Immigrants Foreigners Andorra 908 Europe 925 \n",
"\n",
" RegName DEV DevName 1980 ... 2004 2005 2006 \\\n",
"0 Southern Asia 902 Developing regions 16 ... 2978 3436 3009 \n",
"1 Southern Europe 901 Developed regions 1 ... 1450 1223 856 \n",
"2 Northern Africa 902 Developing regions 80 ... 3616 3626 4807 \n",
"3 Polynesia 902 Developing regions 0 ... 0 0 1 \n",
"4 Southern Europe 901 Developed regions 0 ... 0 0 1 \n",
"\n",
" 2007 2008 2009 2010 2011 2012 2013 \n",
"0 2652 2111 1746 1758 2203 2635 2004 \n",
"1 702 560 716 561 539 620 603 \n",
"2 3623 4005 5393 4752 4325 3774 4331 \n",
"3 0 0 0 0 0 0 0 \n",
"4 1 0 0 0 0 1 1 \n",
"\n",
"[5 rows x 43 columns]"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_can.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's find out how many entries there are in our dataset."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(195, 43)\n"
]
}
],
"source": [
"# print the dimensions of the dataframe\n",
"print(df_can.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Clean up data. We will make some modifications to the original dataset to make it easier to create our visualizations. Refer to *Introduction to Matplotlib and Line Plots* and *Area Plots, Histograms, and Bar Plots* notebooks for a detailed description of this preprocessing."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"data dimensions: (195, 39)\n"
]
}
],
"source": [
"# clean up the dataset to remove unnecessary columns (eg. REG) \n",
"df_can.drop(['AREA','REG','DEV','Type','Coverage'], axis=1, inplace=True)\n",
"\n",
"# let's rename the columns so that they make sense\n",
"df_can.rename(columns={'OdName':'Country', 'AreaName':'Continent','RegName':'Region'}, inplace=True)\n",
"\n",
"# for sake of consistency, let's also make all column labels of type string\n",
"df_can.columns = list(map(str, df_can.columns))\n",
"\n",
"# add total column\n",
"df_can['Total'] = df_can.sum(axis=1)\n",
"\n",
"# years that we will be using in this lesson - useful for plotting later on\n",
"years = list(map(str, range(1980, 2014)))\n",
"print ('data dimensions:', df_can.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's take a look at the first five items of our cleaned dataframe."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Country</th>\n",
" <th>Continent</th>\n",
" <th>Region</th>\n",
" <th>DevName</th>\n",
" <th>1980</th>\n",
" <th>1981</th>\n",
" <th>1982</th>\n",
" <th>1983</th>\n",
" <th>1984</th>\n",
" <th>1985</th>\n",
" <th>...</th>\n",
" <th>2005</th>\n",
" <th>2006</th>\n",
" <th>2007</th>\n",
" <th>2008</th>\n",
" <th>2009</th>\n",
" <th>2010</th>\n",
" <th>2011</th>\n",
" <th>2012</th>\n",
" <th>2013</th>\n",
" <th>Total</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Afghanistan</td>\n",
" <td>Asia</td>\n",
" <td>Southern Asia</td>\n",
" <td>Developing regions</td>\n",
" <td>16</td>\n",
" <td>39</td>\n",
" <td>39</td>\n",
" <td>47</td>\n",
" <td>71</td>\n",
" <td>340</td>\n",
" <td>...</td>\n",
" <td>3436</td>\n",
" <td>3009</td>\n",
" <td>2652</td>\n",
" <td>2111</td>\n",
" <td>1746</td>\n",
" <td>1758</td>\n",
" <td>2203</td>\n",
" <td>2635</td>\n",
" <td>2004</td>\n",
" <td>58639</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Albania</td>\n",
" <td>Europe</td>\n",
" <td>Southern Europe</td>\n",
" <td>Developed regions</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>1223</td>\n",
" <td>856</td>\n",
" <td>702</td>\n",
" <td>560</td>\n",
" <td>716</td>\n",
" <td>561</td>\n",
" <td>539</td>\n",
" <td>620</td>\n",
" <td>603</td>\n",
" <td>15699</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Algeria</td>\n",
" <td>Africa</td>\n",
" <td>Northern Africa</td>\n",
" <td>Developing regions</td>\n",
" <td>80</td>\n",
" <td>67</td>\n",
" <td>71</td>\n",
" <td>69</td>\n",
" <td>63</td>\n",
" <td>44</td>\n",
" <td>...</td>\n",
" <td>3626</td>\n",
" <td>4807</td>\n",
" <td>3623</td>\n",
" <td>4005</td>\n",
" <td>5393</td>\n",
" <td>4752</td>\n",
" <td>4325</td>\n",
" <td>3774</td>\n",
" <td>4331</td>\n",
" <td>69439</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>American Samoa</td>\n",
" <td>Oceania</td>\n",
" <td>Polynesia</td>\n",
" <td>Developing regions</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Andorra</td>\n",
" <td>Europe</td>\n",
" <td>Southern Europe</td>\n",
" <td>Developed regions</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>15</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 39 columns</p>\n",
"</div>"
],
"text/plain": [
" Country Continent Region DevName 1980 1981 \\\n",
"0 Afghanistan Asia Southern Asia Developing regions 16 39 \n",
"1 Albania Europe Southern Europe Developed regions 1 0 \n",
"2 Algeria Africa Northern Africa Developing regions 80 67 \n",
"3 American Samoa Oceania Polynesia Developing regions 0 1 \n",
"4 Andorra Europe Southern Europe Developed regions 0 0 \n",
"\n",
" 1982 1983 1984 1985 ... 2005 2006 2007 2008 2009 2010 2011 \\\n",
"0 39 47 71 340 ... 3436 3009 2652 2111 1746 1758 2203 \n",
"1 0 0 0 0 ... 1223 856 702 560 716 561 539 \n",
"2 71 69 63 44 ... 3626 4807 3623 4005 5393 4752 4325 \n",
"3 0 0 0 0 ... 0 1 0 0 0 0 0 \n",
"4 0 0 0 0 ... 0 1 1 0 0 0 0 \n",
"\n",
" 2012 2013 Total \n",
"0 2635 2004 58639 \n",
"1 620 603 15699 \n",
"2 3774 4331 69439 \n",
"3 0 0 6 \n",
"4 1 1 15 \n",
"\n",
"[5 rows x 39 columns]"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_can.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"In order to create a `Choropleth` map, we need a GeoJSON file that defines the areas/boundaries of the state, county, or country that we are interested in. In our case, since we are endeavoring to create a world map, we want a GeoJSON that defines the boundaries of all world countries. For your convenience, we will be providing you with this file, so let's go ahead and download it. Let's name it **world_countries.json**."
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"GeoJSON file downloaded!\n"
]
}
],
"source": [
"# download countries geojson file\n",
"!wget --quiet https://ibm.box.com/shared/static/cto2qv7nx6yq19logfcissyy4euo8lho.json -O world_countries.json\n",
" \n",
"print('GeoJSON file downloaded!')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Now that we have the GeoJSON file, let's create a world map, centered around **[0, 0]** *latitude* and *longitude* values, with an intial zoom level of 2, and using *Mapbox Bright* style."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"world_geo = r'world_countries.json' # geojson file\n",
"\n",
"# create a plain world map\n",
"world_map = folium.Map(location=[0, 0], zoom_start=2, tiles='Mapbox Bright')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And now to create a `Choropleth` map, we will use the *choropleth* method with the following main parameters:\n",
"\n",
"1. geo_data, which is the GeoJSON file.\n",
"2. data, which is the dataframe containing the data.\n",
"3. columns, which represents the columns in the dataframe that will be used to create the `Choropleth` map.\n",
"4. key_on, which is the key or variable in the GeoJSON file that contains the name of the variable of interest. To determine that, you will need to open the GeoJSON file using any text editor and note the name of the key or variable that contains the name of the countries, since the countries are our variable of interest. In this case, **name** is the key in the GeoJSON file that contains the name of the countries. Note that this key is case_sensitive, so you need to pass exactly as it exists in the GeoJSON file."
]
},
{
"cell_type": "code",
"execution_count": 30,
"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+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfNDFmNmQzNTc2MDE2NGIwZTg5MTgwZWE1NzhkYmQwY2YgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2QzLzMuNS41L2QzLm1pbi5qcyI+PC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvbGl1bS1tYXAiIGlkPSJtYXBfNDFmNmQzNTc2MDE2NGIwZTg5MTgwZWE1NzhkYmQwY2YiID48L2Rpdj4KICAgICAgICAKPC9ib2R5Pgo8c2NyaXB0PiAgICAKICAgIAoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgYm91bmRzID0gbnVsbDsKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFwXzQxZjZkMzU3NjAxNjRiMGU4OTE4MGVhNTc4ZGJkMGNmID0gTC5tYXAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFwXzQxZjZkMzU3NjAxNjRiMGU4OTE4MGVhNTc4ZGJkMGNmJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjZW50ZXI6IFswLDBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfYzAzZWRhNzE4MzUyNDgwNmJlMjQxZjFkZTI3ZDRkMzkgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlcy5tYXBib3guY29tL3YzL21hcGJveC53b3JsZC1icmlnaHQve3p9L3t4fS97eX0ucG5nJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80MWY2ZDM1NzYwMTY0YjBlODkxODBlYTU3OGRiZDBjZik7CiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBnZW9fanNvbl8yOTFkNmUyNjczMGU0ZTlmYjJhNDI4ODBjZmQyNzE4YyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbNjEuMjEwODE3LCAzNS42NTAwNzJdLCBbNjIuMjMwNjUxLCAzNS4yNzA2NjRdLCBbNjIuOTg0NjYyLCAzNS40MDQwNDFdLCBbNjMuMTkzNTM4LCAzNS44NTcxNjZdLCBbNjMuOTgyODk2LCAzNi4wMDc5NTddLCBbNjQuNTQ2NDc5LCAzNi4zMTIwNzNdLCBbNjQuNzQ2MTA1LCAzNy4xMTE4MThdLCBbNjUuNTg4OTQ4LCAzNy4zMDUyMTddLCBbNjUuNzQ1NjMxLCAzNy42NjExNjRdLCBbNjYuMjE3Mzg1LCAzNy4zOTM3OV0sIFs2Ni41MTg2MDcsIDM3LjM2Mjc4NF0sIFs2Ny4wNzU3ODIsIDM3LjM1NjE0NF0sIFs2Ny44MywgMzcuMTQ0OTk0XSwgWzY4LjEzNTU2MiwgMzcuMDIzMTE1XSwgWzY4Ljg1OTQ0NiwgMzcuMzQ0MzM2XSwgWzY5LjE5NjI3MywgMzcuMTUxMTQ0XSwgWzY5LjUxODc4NSwgMzcuNjA4OTk3XSwgWzcwLjExNjU3OCwgMzcuNTg4MjIzXSwgWzcwLjI3MDU3NCwgMzcuNzM1MTY1XSwgWzcwLjM3NjMwNCwgMzguMTM4Mzk2XSwgWzcwLjgwNjgyMSwgMzguNDg2MjgyXSwgWzcxLjM0ODEzMSwgMzguMjU4OTA1XSwgWzcxLjIzOTQwNCwgMzcuOTUzMjY1XSwgWzcxLjU0MTkxOCwgMzcuOTA1Nzc0XSwgWzcxLjQ0ODY5MywgMzcuMDY1NjQ1XSwgWzcxLjg0NDYzOCwgMzYuNzM4MTcxXSwgWzcyLjE5MzA0MSwgMzYuOTQ4Mjg4XSwgWzcyLjYzNjg5LCAzNy4wNDc1NThdLCBbNzMuMjYwMDU2LCAzNy40OTUyNTddLCBbNzMuOTQ4Njk2LCAzNy40MjE1NjZdLCBbNzQuOTgwMDAyLCAzNy40MTk5OV0sIFs3NS4xNTgwMjgsIDM3LjEzMzAzMV0sIFs3NC41NzU4OTMsIDM3LjAyMDg0MV0sIFs3NC4wNjc1NTIsIDM2LjgzNjE3Nl0sIFs3Mi45MjAwMjUsIDM2LjcyMDAwN10sIFs3MS44NDYyOTIsIDM2LjUwOTk0Ml0sIFs3MS4yNjIzNDgsIDM2LjA3NDM4OF0sIFs3MS40OTg3NjgsIDM1LjY1MDU2M10sIFs3MS42MTMwNzYsIDM1LjE1MzIwM10sIFs3MS4xMTUwMTksIDM0LjczMzEyNl0sIFs3MS4xNTY3NzMsIDM0LjM0ODkxMV0sIFs3MC44ODE4MDMsIDMzLjk4ODg1Nl0sIFs2OS45MzA1NDMsIDM0LjAyMDEyXSwgWzcwLjMyMzU5NCwgMzMuMzU4NTMzXSwgWzY5LjY4NzE0NywgMzMuMTA1NDk5XSwgWzY5LjI2MjUyMiwgMzIuNTAxOTQ0XSwgWzY5LjMxNzc2NCwgMzEuOTAxNDEyXSwgWzY4LjkyNjY3NywgMzEuNjIwMTg5XSwgWzY4LjU1NjkzMiwgMzEuNzEzMzFdLCBbNjcuNzkyNjg5LCAzMS41ODI5M10sIFs2Ny42ODMzOTQsIDMxLjMwMzE1NF0sIFs2Ni45Mzg4OTEsIDMxLjMwNDkxMV0sIFs2Ni4zODE0NTgsIDMwLjczODg5OV0sIFs2Ni4zNDY0NzMsIDI5Ljg4Nzk0M10sIFs2NS4wNDY4NjIsIDI5LjQ3MjE4MV0sIFs2NC4zNTA0MTksIDI5LjU2MDAzMV0sIFs2NC4xNDgwMDIsIDI5LjM0MDgxOV0sIFs2My41NTAyNjEsIDI5LjQ2ODMzMV0sIFs2Mi41NDk4NTcsIDI5LjMxODU3Ml0sIFs2MC44NzQyNDgsIDI5LjgyOTIzOV0sIFs2MS43ODEyMjIsIDMwLjczNTg1XSwgWzYxLjY5OTMxNCwgMzEuMzc5NTA2XSwgWzYwLjk0MTk0NSwgMzEuNTQ4MDc1XSwgWzYwLjg2MzY1NSwgMzIuMTgyOTJdLCBbNjAuNTM2MDc4LCAzMi45ODEyNjldLCBbNjAuOTYzNywgMzMuNTI4ODMyXSwgWzYwLjUyODQzLCAzMy42NzY0NDZdLCBbNjAuODAzMTkzLCAzNC40MDQxMDJdLCBbNjEuMjEwODE3LCAzNS42NTAwNzJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkFGRyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQWZnaGFuaXN0YW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxNi4zMjY1MjgsIC01Ljg3NzQ3XSwgWzE2LjU3MzE4LCAtNi42MjI2NDVdLCBbMTYuODYwMTkxLCAtNy4yMjIyOThdLCBbMTcuMDg5OTk2LCAtNy41NDU2ODldLCBbMTcuNDcyOTcsIC04LjA2ODU1MV0sIFsxOC4xMzQyMjIsIC03Ljk4NzY3OF0sIFsxOC40NjQxNzYsIC03Ljg0NzAxNF0sIFsxOS4wMTY3NTIsIC03Ljk4ODI0Nl0sIFsxOS4xNjY2MTMsIC03LjczODE4NF0sIFsxOS40MTc1MDIsIC03LjE1NTQyOV0sIFsyMC4wMzc3MjMsIC03LjExNjM2MV0sIFsyMC4wOTE2MjIsIC02Ljk0MzA5XSwgWzIwLjYwMTgyMywgLTYuOTM5MzE4XSwgWzIwLjUxNDc0OCwgLTcuMjk5NjA2XSwgWzIxLjcyODExMSwgLTcuMjkwODcyXSwgWzIxLjc0NjQ1NiwgLTcuOTIwMDg1XSwgWzIxLjk0OTEzMSwgLTguMzA1OTAxXSwgWzIxLjgwMTgwMSwgLTguOTA4NzA3XSwgWzIxLjg3NTE4MiwgLTkuNTIzNzA4XSwgWzIyLjIwODc1MywgLTkuODk0Nzk2XSwgWzIyLjE1NTI2OCwgLTExLjA4NDgwMV0sIFsyMi40MDI3OTgsIC0xMC45OTMwNzVdLCBbMjIuODM3MzQ1LCAtMTEuMDE3NjIyXSwgWzIzLjQ1Njc5MSwgLTEwLjg2Nzg2M10sIFsyMy45MTIyMTUsIC0xMC45MjY4MjZdLCBbMjQuMDE3ODk0LCAtMTEuMjM3Mjk4XSwgWzIzLjkwNDE1NCwgLTExLjcyMjI4Ml0sIFsyNC4wNzk5MDUsIC0xMi4xOTEyOTddLCBbMjMuOTMwOTIyLCAtMTIuNTY1ODQ4XSwgWzI0LjAxNjEzNywgLTEyLjkxMTA0Nl0sIFsyMS45MzM4ODYsIC0xMi44OTg0MzddLCBbMjEuODg3ODQzLCAtMTYuMDgwMzFdLCBbMjIuNTYyNDc4LCAtMTYuODk4NDUxXSwgWzIzLjIxNTA0OCwgLTE3LjUyMzExNl0sIFsyMS4zNzcxNzYsIC0xNy45MzA2MzZdLCBbMTguOTU2MTg3LCAtMTcuNzg5MDk1XSwgWzE4LjI2MzMwOSwgLTE3LjMwOTk1MV0sIFsxNC4yMDk3MDcsIC0xNy4zNTMxMDFdLCBbMTQuMDU4NTAxLCAtMTcuNDIzMzgxXSwgWzEzLjQ2MjM2MiwgLTE2Ljk3MTIxMl0sIFsxMi44MTQwODEsIC0xNi45NDEzNDNdLCBbMTIuMjE1NDYxLCAtMTcuMTExNjY4XSwgWzExLjczNDE5OSwgLTE3LjMwMTg4OV0sIFsxMS42NDAwOTYsIC0xNi42NzMxNDJdLCBbMTEuNzc4NTM3LCAtMTUuNzkzODE2XSwgWzEyLjEyMzU4MSwgLTE0Ljg3ODMxNl0sIFsxMi4xNzU2MTksIC0xNC40NDkxNDRdLCBbMTIuNTAwMDk1LCAtMTMuNTQ3N10sIFsxMi43Mzg0NzksIC0xMy4xMzc5MDZdLCBbMTMuMzEyOTE0LCAtMTIuNDgzNjNdLCBbMTMuNjMzNzIxLCAtMTIuMDM4NjQ1XSwgWzEzLjczODcyOCwgLTExLjI5Nzg2M10sIFsxMy42ODYzNzksIC0xMC43MzEwNzZdLCBbMTMuMzg3MzI4LCAtMTAuMzczNTc4XSwgWzEzLjEyMDk4OCwgLTkuNzY2ODk3XSwgWzEyLjg3NTM3LCAtOS4xNjY5MzRdLCBbMTIuOTI5MDYxLCAtOC45NTkwOTFdLCBbMTMuMjM2NDMzLCAtOC41NjI2MjldLCBbMTIuOTMzMDQsIC03LjU5NjUzOV0sIFsxMi43MjgyOTgsIC02LjkyNzEyMl0sIFsxMi4yMjczNDcsIC02LjI5NDQ0OF0sIFsxMi4zMjI0MzIsIC02LjEwMDA5Ml0sIFsxMi43MzUxNzEsIC01Ljk2NTY4Ml0sIFsxMy4wMjQ4NjksIC01Ljk4NDM4OV0sIFsxMy4zNzU1OTcsIC01Ljg2NDI0MV0sIFsxNi4zMjY1MjgsIC01Ljg3NzQ3XV1dLCBbW1sxMi40MzY2ODgsIC01LjY4NDMwNF0sIFsxMi4xODIzMzcsIC01Ljc4OTkzMV0sIFsxMS45MTQ5NjMsIC01LjAzNzk4N10sIFsxMi4zMTg2MDgsIC00LjYwNjIzXSwgWzEyLjYyMDc2LCAtNC40MzgwMjNdLCBbMTIuOTk1NTE3LCAtNC43ODExMDNdLCBbMTIuNjMxNjEyLCAtNC45OTEyNzFdLCBbMTIuNDY4MDA0LCAtNS4yNDgzNjJdLCBbMTIuNDM2Njg4LCAtNS42ODQzMDRdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkFHTyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQW5nb2xhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1syMC41OTAyNDcsIDQxLjg1NTQwNF0sIFsyMC40NjMxNzUsIDQxLjUxNTA4OV0sIFsyMC42MDUxODIsIDQxLjA4NjIyNl0sIFsyMS4wMjAwNCwgNDAuODQyNzI3XSwgWzIwLjk5OTk5LCA0MC41ODAwMDRdLCBbMjAuNjc0OTk3LCA0MC40MzVdLCBbMjAuNjE1LCA0MC4xMTAwMDddLCBbMjAuMTUwMDE2LCAzOS42MjQ5OThdLCBbMTkuOTgsIDM5LjY5NDk5M10sIFsxOS45NjAwMDIsIDM5LjkxNTAwNl0sIFsxOS40MDYwODIsIDQwLjI1MDc3M10sIFsxOS4zMTkwNTksIDQwLjcyNzIzXSwgWzE5LjQwMzU1LCA0MS40MDk1NjZdLCBbMTkuNTQwMDI3LCA0MS43MTk5ODZdLCBbMTkuMzcxNzY5LCA0MS44Nzc1NDhdLCBbMTkuMzA0NDg2LCA0Mi4xOTU3NDVdLCBbMTkuNzM4MDUxLCA0Mi42ODgyNDddLCBbMTkuODAxNjEzLCA0Mi41MDAwOTNdLCBbMjAuMDcwNywgNDIuNTg4NjNdLCBbMjAuMjgzNzU1LCA0Mi4zMjAyNl0sIFsyMC41MjI5NSwgNDIuMjE3ODddLCBbMjAuNTkwMjQ3LCA0MS44NTU0MDRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkFMQiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQWxiYW5pYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbNTEuNTc5NTE5LCAyNC4yNDU0OTddLCBbNTEuNzU3NDQxLCAyNC4yOTQwNzNdLCBbNTEuNzk0Mzg5LCAyNC4wMTk4MjZdLCBbNTIuNTc3MDgxLCAyNC4xNzc0MzldLCBbNTMuNDA0MDA3LCAyNC4xNTEzMTddLCBbNTQuMDA4MDAxLCAyNC4xMjE3NThdLCBbNTQuNjkzMDI0LCAyNC43OTc4OTJdLCBbNTUuNDM5MDI1LCAyNS40MzkxNDVdLCBbNTYuMDcwODIxLCAyNi4wNTU0NjRdLCBbNTYuMjYxMDQyLCAyNS43MTQ2MDZdLCBbNTYuMzk2ODQ3LCAyNC45MjQ3MzJdLCBbNTUuODg2MjMzLCAyNC45MjA4MzFdLCBbNTUuODA0MTE5LCAyNC4yNjk2MDRdLCBbNTUuOTgxMjE0LCAyNC4xMzA1NDNdLCBbNTUuNTI4NjMyLCAyMy45MzM2MDRdLCBbNTUuNTI1ODQxLCAyMy41MjQ4NjldLCBbNTUuMjM0NDg5LCAyMy4xMTA5OTNdLCBbNTUuMjA4MzQxLCAyMi43MDgzM10sIFs1NS4wMDY4MDMsIDIyLjQ5Njk0OF0sIFs1Mi4wMDA3MzMsIDIzLjAwMTE1NF0sIFs1MS42MTc3MDgsIDI0LjAxNDIxOV0sIFs1MS41Nzk1MTksIDI0LjI0NTQ5N11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQVJFIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJVbml0ZWQgQXJhYiBFbWlyYXRlcyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWy02NS41LCAtNTUuMl0sIFstNjYuNDUsIC01NS4yNV0sIFstNjYuOTU5OTIsIC01NC44OTY4MV0sIFstNjcuNTYyNDQsIC01NC44NzAwMV0sIFstNjguNjMzMzUsIC01NC44Njk1XSwgWy02OC42MzQwMSwgLTUyLjYzNjM3XSwgWy02OC4yNSwgLTUzLjFdLCBbLTY3Ljc1LCAtNTMuODVdLCBbLTY2LjQ1LCAtNTQuNDVdLCBbLTY1LjA1LCAtNTQuN10sIFstNjUuNSwgLTU1LjJdXV0sIFtbWy02NC45NjQ4OTIsIC0yMi4wNzU4NjJdLCBbLTY0LjM3NzAyMSwgLTIyLjc5ODA5MV0sIFstNjMuOTg2ODM4LCAtMjEuOTkzNjQ0XSwgWy02Mi44NDY0NjgsIC0yMi4wMzQ5ODVdLCBbLTYyLjY4NTA1NywgLTIyLjI0OTAyOV0sIFstNjAuODQ2NTY1LCAtMjMuODgwNzEzXSwgWy02MC4wMjg5NjYsIC0yNC4wMzI3OTZdLCBbLTU4LjgwNzEyOCwgLTI0Ljc3MTQ1OV0sIFstNTcuNzc3MjE3LCAtMjUuMTYyMzRdLCBbLTU3LjYzMzY2LCAtMjUuNjAzNjU3XSwgWy01OC42MTgxNzQsIC0yNy4xMjM3MTldLCBbLTU3LjYwOTc2LCAtMjcuMzk1ODk5XSwgWy01Ni40ODY3MDIsIC0yNy41NDg0OTldLCBbLTU1LjY5NTg0NiwgLTI3LjM4NzgzN10sIFstNTQuNzg4Nzk1LCAtMjYuNjIxNzg2XSwgWy01NC42MjUyOTEsIC0yNS43MzkyNTVdLCBbLTU0LjEzMDA1LCAtMjUuNTQ3NjM5XSwgWy01My42MjgzNDksIC0yNi4xMjQ4NjVdLCBbLTUzLjY0ODczNSwgLTI2LjkyMzQ3M10sIFstNTQuNDkwNzI1LCAtMjcuNDc0NzU3XSwgWy01NS4xNjIyODYsIC0yNy44ODE5MTVdLCBbLTU2LjI5MDksIC0yOC44NTI3NjFdLCBbLTU3LjYyNTEzMywgLTMwLjIxNjI5NV0sIFstNTcuODc0OTM3LCAtMzEuMDE2NTU2XSwgWy01OC4xNDI0NCwgLTMyLjA0NDUwNF0sIFstNTguMTMyNjQ4LCAtMzMuMDQwNTY3XSwgWy01OC4zNDk2MTEsIC0zMy4yNjMxODldLCBbLTU4LjQyNzA3NCwgLTMzLjkwOTQ1NF0sIFstNTguNDk1NDQyLCAtMzQuNDMxNDldLCBbLTU3LjIyNTgzLCAtMzUuMjg4MDI3XSwgWy01Ny4zNjIzNTksIC0zNS45NzczOV0sIFstNTYuNzM3NDg3LCAtMzYuNDEzMTI2XSwgWy01Ni43ODgyODUsIC0zNi45MDE1NzJdLCBbLTU3Ljc0OTE1NywgLTM4LjE4Mzg3MV0sIFstNTkuMjMxODU3LCAtMzguNzIwMjJdLCBbLTYxLjIzNzQ0NSwgLTM4LjkyODQyNV0sIFstNjIuMzM1OTU3LCAtMzguODI3NzA3XSwgWy02Mi4xMjU3NjMsIC0zOS40MjQxMDVdLCBbLTYyLjMzMDUzMSwgLTQwLjE3MjU4Nl0sIFstNjIuMTQ1OTk0LCAtNDAuNjc2ODk3XSwgWy02Mi43NDU4MDMsIC00MS4wMjg3NjFdLCBbLTYzLjc3MDQ5NSwgLTQxLjE2Njc4OV0sIFstNjQuNzMyMDksIC00MC44MDI2NzddLCBbLTY1LjExODAzNSwgLTQxLjA2NDMxNV0sIFstNjQuOTc4NTYxLCAtNDIuMDU4MDAxXSwgWy02NC4zMDM0MDgsIC00Mi4zNTkwMTZdLCBbLTYzLjc1NTk0OCwgLTQyLjA0MzY4N10sIFstNjMuNDU4MDU5LCAtNDIuNTYzMTM4XSwgWy02NC4zNzg4MDQsIC00Mi44NzM1NThdLCBbLTY1LjE4MTgwNCwgLTQzLjQ5NTM4MV0sIFstNjUuMzI4ODIzLCAtNDQuNTAxMzY2XSwgWy02NS41NjUyNjksIC00NS4wMzY3ODZdLCBbLTY2LjUwOTk2NiwgLTQ1LjAzOTYyOF0sIFstNjcuMjkzNzk0LCAtNDUuNTUxODk2XSwgWy02Ny41ODA1NDYsIC00Ni4zMDE3NzNdLCBbLTY2LjU5NzA2NiwgLTQ3LjAzMzkyNV0sIFstNjUuNjQxMDI3LCAtNDcuMjM2MTM1XSwgWy02NS45ODUwODgsIC00OC4xMzMyODldLCBbLTY3LjE2NjE3OSwgLTQ4LjY5NzMzN10sIFstNjcuODE2MDg4LCAtNDkuODY5NjY5XSwgWy02OC43Mjg3NDUsIC01MC4yNjQyMThdLCBbLTY5LjEzODUzOSwgLTUwLjczMjUxXSwgWy02OC44MTU1NjEsIC01MS43NzExMDRdLCBbLTY4LjE0OTk5NSwgLTUyLjM0OTk4M10sIFstNjguNTcxNTQ1LCAtNTIuMjk5NDQ0XSwgWy02OS40OTgzNjIsIC01Mi4xNDI3NjFdLCBbLTcxLjkxNDgwNCwgLTUyLjAwOTAyMl0sIFstNzIuMzI5NDA0LCAtNTEuNDI1OTU2XSwgWy03Mi4zMDk5NzQsIC01MC42NzcwMV0sIFstNzIuOTc1NzQ3LCAtNTAuNzQxNDVdLCBbLTczLjMyODA1MSwgLTUwLjM3ODc4NV0sIFstNzMuNDE1NDM2LCAtNDkuMzE4NDM2XSwgWy03Mi42NDgyNDcsIC00OC44Nzg2MThdLCBbLTcyLjMzMTE2MSwgLTQ4LjI0NDIzOF0sIFstNzIuNDQ3MzU1LCAtNDcuNzM4NTMzXSwgWy03MS45MTcyNTgsIC00Ni44ODQ4MzhdLCBbLTcxLjU1MjAwOSwgLTQ1LjU2MDczM10sIFstNzEuNjU5MzE2LCAtNDQuOTczNjg5XSwgWy03MS4yMjI3NzksIC00NC43ODQyNDNdLCBbLTcxLjMyOTgwMSwgLTQ0LjQwNzUyMl0sIFstNzEuNzkzNjIzLCAtNDQuMjA3MTcyXSwgWy03MS40NjQwNTYsIC00My43ODc2MTFdLCBbLTcxLjkxNTQyNCwgLTQzLjQwODU2NV0sIFstNzIuMTQ4ODk4LCAtNDIuMjU0ODg4XSwgWy03MS43NDY4MDQsIC00Mi4wNTEzODZdLCBbLTcxLjkxNTczNCwgLTQwLjgzMjMzOV0sIFstNzEuNjgwNzYxLCAtMzkuODA4MTY0XSwgWy03MS40MTM1MTcsIC0zOC45MTYwMjJdLCBbLTcwLjgxNDY2NCwgLTM4LjU1Mjk5NV0sIFstNzEuMTE4NjI1LCAtMzcuNTc2ODI3XSwgWy03MS4xMjE4ODEsIC0zNi42NTgxMjRdLCBbLTcwLjM2NDc2OSwgLTM2LjAwNTA4OV0sIFstNzAuMzg4MDQ5LCAtMzUuMTY5Njg4XSwgWy02OS44MTczMDksIC0zNC4xOTM1NzFdLCBbLTY5LjgxNDc3NywgLTMzLjI3Mzg4Nl0sIFstNzAuMDc0Mzk5LCAtMzMuMDkxMjFdLCBbLTcwLjUzNTA2OSwgLTMxLjM2NTAxXSwgWy02OS45MTkwMDgsIC0zMC4zMzYzMzldLCBbLTcwLjAxMzU1LCAtMjkuMzY3OTIzXSwgWy02OS42NTYxMywgLTI4LjQ1OTE0MV0sIFstNjkuMDAxMjM1LCAtMjcuNTIxMjE0XSwgWy02OC4yOTU1NDIsIC0yNi44OTkzNF0sIFstNjguNTk0OCwgLTI2LjUwNjkwOV0sIFstNjguMzg2MDAxLCAtMjYuMTg1MDE2XSwgWy02OC40MTc2NTMsIC0yNC41MTg1NTVdLCBbLTY3LjMyODQ0MywgLTI0LjAyNTMwM10sIFstNjYuOTg1MjM0LCAtMjIuOTg2MzQ5XSwgWy02Ny4xMDY2NzQsIC0yMi43MzU5MjVdLCBbLTY2LjI3MzMzOSwgLTIxLjgzMjMxXSwgWy02NC45NjQ4OTIsIC0yMi4wNzU4NjJdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkFSRyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQXJnZW50aW5hIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s0My41ODI3NDYsIDQxLjA5MjE0M10sIFs0NC45NzI0OCwgNDEuMjQ4MTI5XSwgWzQ1LjE3OTQ5NiwgNDAuOTg1MzU0XSwgWzQ1LjU2MDM1MSwgNDAuODEyMjldLCBbNDUuMzU5MTc1LCA0MC41NjE1MDRdLCBbNDUuODkxOTA3LCA0MC4yMTg0NzZdLCBbNDUuNjEwMDEyLCAzOS44OTk5OTRdLCBbNDYuMDM0NTM0LCAzOS42MjgwMjFdLCBbNDYuNDgzNDk5LCAzOS40NjQxNTVdLCBbNDYuNTA1NzIsIDM4Ljc3MDYwNV0sIFs0Ni4xNDM2MjMsIDM4Ljc0MTIwMV0sIFs0NS43MzUzNzksIDM5LjMxOTcxOV0sIFs0NS43Mzk5NzgsIDM5LjQ3Mzk5OV0sIFs0NS4yOTgxNDUsIDM5LjQ3MTc1MV0sIFs0NS4wMDE5ODcsIDM5Ljc0MDAwNF0sIFs0NC43OTM5OSwgMzkuNzEzMDAzXSwgWzQ0LjQwMDAwOSwgNDAuMDA1XSwgWzQzLjY1NjQzNiwgNDAuMjUzNTY0XSwgWzQzLjc1MjY1OCwgNDAuNzQwMjAxXSwgWzQzLjU4Mjc0NiwgNDEuMDkyMTQzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJBUk0iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkFybWVuaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1stNTkuNTcyMDk1LCAtODAuMDQwMTc5XSwgWy01OS44NjU4NDksIC04MC41NDk2NTddLCBbLTYwLjE1OTY1NiwgLTgxLjAwMDMyN10sIFstNjIuMjU1MzkzLCAtODAuODYzMTc4XSwgWy02NC40ODgxMjUsIC04MC45MjE5MzRdLCBbLTY1Ljc0MTY2NiwgLTgwLjU4ODgyN10sIFstNjUuNzQxNjY2LCAtODAuNTQ5NjU3XSwgWy02Ni4yOTAwMzEsIC04MC4yNTU3NzNdLCBbLTY0LjAzNzY4OCwgLTgwLjI5NDk0NF0sIFstNjEuODgzMjQ2LCAtODAuMzkyODddLCBbLTYxLjEzODk3NiwgLTc5Ljk4MTM3MV0sIFstNjAuNjEwMTE5LCAtNzkuNjI4Njc5XSwgWy01OS41NzIwOTUsIC04MC4wNDAxNzldXV0sIFtbWy0xNTkuMjA4MTg0LCAtNzkuNDk3MDU5XSwgWy0xNjEuMTI3NjAxLCAtNzkuNjM0MjA5XSwgWy0xNjIuNDM5ODQ3LCAtNzkuMjgxNDY1XSwgWy0xNjMuMDI3NDA4LCAtNzguOTI4Nzc0XSwgWy0xNjMuMDY2NjA0LCAtNzguODY5OTY2XSwgWy0xNjMuNzEyODk2LCAtNzguNTk1NjY3XSwgWy0xNjMuNzEyODk2LCAtNzguNTk1NjY3XSwgWy0xNjMuMTA1ODAxLCAtNzguMjIzMzM4XSwgWy0xNjEuMjQ1MTEzLCAtNzguMzgwMTc2XSwgWy0xNjAuMjQ2MjA4LCAtNzguNjkzNjQ1XSwgWy0xNTkuNDgyNDA1LCAtNzkuMDQ2MzM4XSwgWy0xNTkuMjA4MTg0LCAtNzkuNDk3MDU5XV1dLCBbW1stNDUuMTU0NzU4LCAtNzguMDQ3MDddLCBbLTQzLjkyMDgyOCwgLTc4LjQ3ODEwM10sIFstNDMuNDg5OTUsIC03OS4wODU1Nl0sIFstNDMuMzcyNDM4LCAtNzkuNTE2NjQ1XSwgWy00My4zMzMyNjcsIC04MC4wMjYxMjNdLCBbLTQ0Ljg4MDUzNywgLTgwLjMzOTY0NF0sIFstNDYuNTA2MTc0LCAtODAuNTk0MzU3XSwgWy00OC4zODY0MjEsIC04MC44Mjk0ODVdLCBbLTUwLjQ4MjEwNywgLTgxLjAyNTQ0Ml0sIFstNTIuODUxOTg4LCAtODAuOTY2Njg1XSwgWy01NC4xNjQyNTksIC04MC42MzM1MjhdLCBbLTUzLjk4Nzk5MSwgLTgwLjIyMjAyOF0sIFstNTEuODUzMTM0LCAtNzkuOTQ3NzNdLCBbLTUwLjk5MTMyNiwgLTc5LjYxNDYyM10sIFstNTAuMzY0NTk1LCAtNzkuMTgzNDg3XSwgWy00OS45MTQxMzEsIC03OC44MTEyMDldLCBbLTQ5LjMwNjk1OSwgLTc4LjQ1ODU2OV0sIFstNDguNjYwNjE2LCAtNzguMDQ3MDE4XSwgWy00OC42NjA2MTYsIC03OC4wNDcwMTldLCBbLTQ4LjE1MTM5NiwgLTc4LjA0NzA3XSwgWy00Ni42NjI4NTcsIC03Ny44MzE0NzZdLCBbLTQ1LjE1NDc1OCwgLTc4LjA0NzA3XV1dLCBbW1stMTIxLjIxMTUxMSwgLTczLjUwMDk5XSwgWy0xMTkuOTE4ODUxLCAtNzMuNjU3NzI1XSwgWy0xMTguNzI0MTQzLCAtNzMuNDgxMzUzXSwgWy0xMTkuMjkyMTE5LCAtNzMuODM0MDk3XSwgWy0xMjAuMjMyMjE3LCAtNzQuMDg4ODFdLCBbLTEyMS42MjI4MywgLTc0LjAxMDQ2OF0sIFstMTIyLjYyMTczNSwgLTczLjY1Nzc3OF0sIFstMTIyLjYyMTczNSwgLTczLjY1Nzc3N10sIFstMTIyLjQwNjI0NSwgLTczLjMyNDYxOV0sIFstMTIxLjIxMTUxMSwgLTczLjUwMDk5XV1dLCBbW1stMTI1LjU1OTU2NiwgLTczLjQ4MTM1M10sIFstMTI0LjAzMTg4MiwgLTczLjg3MzI2OF0sIFstMTI0LjYxOTQ2OSwgLTczLjgzNDA5N10sIFstMTI1LjkxMjE4MSwgLTczLjczNjExOF0sIFstMTI3LjI4MzEzLCAtNzMuNDYxNzY5XSwgWy0xMjcuMjgzMTMsIC03My40NjE3NjhdLCBbLTEyNi41NTg0NzIsIC03My4yNDYyMjZdLCBbLTEyNS41NTk1NjYsIC03My40ODEzNTNdXV0sIFtbWy05OC45ODE1NSwgLTcxLjkzMzMzNF0sIFstOTcuODg0NzQzLCAtNzIuMDcwNTM1XSwgWy05Ni43ODc5MzcsIC03MS45NTI5NzFdLCBbLTk2LjIwMDM1LCAtNzIuNTIxMjA1XSwgWy05Ni45ODM3NjUsIC03Mi40NDI4NjRdLCBbLTk4LjE5ODA4MywgLTcyLjQ4MjAzNV0sIFstOTkuNDMyMDEzLCAtNzIuNDQyODY0XSwgWy0xMDAuNzgzNDU1LCAtNzIuNTAxNjJdLCBbLTEwMS44MDE4NjgsIC03Mi4zMDU2NjNdLCBbLTEwMi4zMzA3MjUsIC03MS44OTQxNjRdLCBbLTEwMi4zMzA3MjUsIC03MS44OTQxNjRdLCBbLTEwMS43MDM5NjcsIC03MS43MTc3OTJdLCBbLTEwMC40MzA5MTksIC03MS44NTQ5OTNdLCBbLTk4Ljk4MTU1LCAtNzEuOTMzMzM0XV1dLCBbW1stNjguNDUxMzQ2LCAtNzAuOTU1ODIzXSwgWy02OC4zMzM4MzQsIC03MS40MDY0OTNdLCBbLTY4LjUxMDEyOCwgLTcxLjc5ODQwN10sIFstNjguNzg0Mjk3LCAtNzIuMTcwNzM2XSwgWy02OS45NTk0NzEsIC03Mi4zMDc4ODVdLCBbLTcxLjA3NTg4OSwgLTcyLjUwMzg0Ml0sIFstNzIuMzg4MTM0LCAtNzIuNDg0MjU3XSwgWy03MS44OTg1LCAtNzIuMDkyMzQzXSwgWy03My4wNzM2MjIsIC03Mi4yMjk0OTJdLCBbLTc0LjE5MDA0LCAtNzIuMzY2NjkzXSwgWy03NC45NTM4OTUsIC03Mi4wNzI3NTddLCBbLTc1LjAxMjYyNSwgLTcxLjY2MTI1OF0sIFstNzMuOTE1ODE5LCAtNzEuMjY5MzQ1XSwgWy03My45MTU4MTksIC03MS4yNjkzNDRdLCBbLTczLjIzMDMzMSwgLTcxLjE1MTc4XSwgWy03Mi4wNzQ3MTcsIC03MS4xOTA5NTFdLCBbLTcxLjc4MDk2MiwgLTcwLjY4MTQ3M10sIFstNzEuNzIyMTgsIC03MC4zMDkxOTZdLCBbLTcxLjc0MTc5MSwgLTY5LjUwNTc4Ml0sIFstNzEuMTczODE1LCAtNjkuMDM1NDc1XSwgWy03MC4yNTMyNTIsIC02OC44Nzg3NF0sIFstNjkuNzI0NDQ3LCAtNjkuMjUxMDE3XSwgWy02OS40ODk0MjIsIC02OS42MjMzNDZdLCBbLTY5LjA1ODUxOCwgLTcwLjA3NDAxNl0sIFstNjguNzI1NTQxLCAtNzAuNTA1MTUzXSwgWy02OC40NTEzNDYsIC03MC45NTU4MjNdXV0sIFtbWy01OC42MTQxNDMsIC02NC4xNTI0NjddLCBbLTU5LjA0NTA3MywgLTY0LjM2ODAxXSwgWy01OS43ODkzNDIsIC02NC4yMTEyMjNdLCBbLTYwLjYxMTkyOCwgLTY0LjMwOTIwMl0sIFstNjEuMjk3NDE2LCAtNjQuNTQ0MzNdLCBbLTYyLjAyMjEsIC02NC43OTkwOTRdLCBbLTYyLjUxMTc2LCAtNjUuMDkzMDNdLCBbLTYyLjY0ODg1OCwgLTY1LjQ4NDk0Ml0sIFstNjIuNTkwMTI4LCAtNjUuODU3MjE5XSwgWy02Mi4xMjAwNzksIC02Ni4xOTAzMjZdLCBbLTYyLjgwNTU2NywgLTY2LjQyNTUwNV0sIFstNjMuNzQ1NjksIC02Ni41MDM4NDddLCBbLTY0LjI5NDEwNiwgLTY2LjgzNzAwNF0sIFstNjQuODgxNjkzLCAtNjcuMTUwNDc0XSwgWy02NS41MDg0MjUsIC02Ny41ODE2MV0sIFstNjUuNjY1MDgyLCAtNjcuOTUzODg3XSwgWy02NS4zMTI1NDUsIC02OC4zNjUzMzVdLCBbLTY0Ljc4MzcxNSwgLTY4LjY3ODkwOF0sIFstNjMuOTYxMTAzLCAtNjguOTEzOTg0XSwgWy02My4xOTczLCAtNjkuMjI3NTU2XSwgWy02Mi43ODU5NTUsIC02OS42MTk0MTldLCBbLTYyLjU3MDUxNiwgLTY5Ljk5MTc0N10sIFstNjIuMjc2NzM2LCAtNzAuMzgzNjYxXSwgWy02MS44MDY2NjEsIC03MC43MTY3NjhdLCBbLTYxLjUxMjkwNiwgLTcxLjA4OTA0NV0sIFstNjEuMzc1ODA5LCAtNzIuMDEwMDc0XSwgWy02MS4wODE5NzcsIC03Mi4zODIzNTFdLCBbLTYxLjAwMzY2MSwgLTcyLjc3NDI2NV0sIFstNjAuNjkwMjY5LCAtNzMuMTY2MTc5XSwgWy02MC44MjczNjcsIC03My42OTUyNDJdLCBbLTYxLjM3NTgwOSwgLTc0LjEwNjc0Ml0sIFstNjEuOTYzMzcsIC03NC40Mzk4NDhdLCBbLTYzLjI5NTIwMSwgLTc0LjU3Njk5N10sIFstNjMuNzQ1NjksIC03NC45Mjk3NF0sIFstNjQuMzUyODM2LCAtNzUuMjYyODQ3XSwgWy02NS44NjA5ODcsIC03NS42MzUxMjRdLCBbLTY3LjE5MjgxOCwgLTc1Ljc5MTkxXSwgWy02OC40NDYyODIsIC03Ni4wMDc0NTJdLCBbLTY5Ljc5NzcyNCwgLTc2LjIyMjk5NV0sIFstNzAuNjAwNzI0LCAtNzYuNjM0NDk0XSwgWy03Mi4yMDY3NzYsIC03Ni42NzM2NjVdLCBbLTczLjk2OTUzNiwgLTc2LjYzNDQ5NF0sIFstNzUuNTU1OTc3LCAtNzYuNzEyODg3XSwgWy03Ny4yNDAzNywgLTc2LjcxMjg4N10sIFstNzYuOTI2OTc5LCAtNzcuMTA0ODAyXSwgWy03NS4zOTkyOTQsIC03Ny4yODEwN10sIFstNzQuMjgyODc2LCAtNzcuNTU1NDJdLCBbLTczLjY1NjExOSwgLTc3LjkwODExMl0sIFstNzQuNzcyNTM2LCAtNzguMjIxNjMzXSwgWy03Ni40OTYxLCAtNzguMTIzNjU0XSwgWy03Ny45MjU4NTgsIC03OC4zNzg0MTldLCBbLTc3Ljk4NDY2NiwgLTc4Ljc4OTkxOF0sIFstNzguMDIzNzg1LCAtNzkuMTgxODMzXSwgWy03Ni44NDg2MzcsIC03OS41MTQ5MzldLCBbLTc2LjYzMzIyNCwgLTc5Ljg4NzIxNl0sIFstNzUuMzYwMDk3LCAtODAuMjU5NTQ1XSwgWy03My4yNDQ4NTIsIC04MC40MTYzMzFdLCBbLTcxLjQ0Mjk0NiwgLTgwLjY5MDYzXSwgWy03MC4wMTMxNjMsIC04MS4wMDQxNTFdLCBbLTY4LjE5MTY0NiwgLTgxLjMxNzY3Ml0sIFstNjUuNzA0Mjc5LCAtODEuNDc0NDU4XSwgWy02My4yNTYwMywgLTgxLjc0ODc1N10sIFstNjEuNTUyMDI2LCAtODIuMDQyNjkyXSwgWy01OS42OTE0MTYsIC04Mi4zNzU4NV0sIFstNTguNzEyMTIxLCAtODIuODQ2MTA2XSwgWy01OC4yMjI0ODcsIC04My4yMTg0MzRdLCBbLTU3LjAwODExNywgLTgyLjg2NTY5MV0sIFstNTUuMzYyODk0LCAtODIuNTcxNzU1XSwgWy01My42MTk3NzEsIC04Mi4yNTgyMzVdLCBbLTUxLjU0MzY0NCwgLTgyLjAwMzUyMV0sIFstNDkuNzYxMzUsIC04MS43MjkxNzFdLCBbLTQ3LjI3MzkzMSwgLTgxLjcwOTU4Nl0sIFstNDQuODI1NzA4LCAtODEuODQ2NzM1XSwgWy00Mi44MDgzNjMsIC04Mi4wODE5MTVdLCBbLTQyLjE2MjAyLCAtODEuNjUwODNdLCBbLTQwLjc3MTQzMywgLTgxLjM1Njg5NF0sIFstMzguMjQ0ODE4LCAtODEuMzM3MzA5XSwgWy0zNi4yNjY2NywgLTgxLjEyMTcxNV0sIFstMzQuMzg2Mzk3LCAtODAuOTA2MTcyXSwgWy0zMi4zMTAyOTYsIC04MC43NjkwMjNdLCBbLTMwLjA5NzA5OCwgLTgwLjU5MjY1MV0sIFstMjguNTQ5ODAyLCAtODAuMzM3OTM4XSwgWy0yOS4yNTQ5MDEsIC03OS45ODUxOTVdLCBbLTI5LjY4NTgwNSwgLTc5LjYzMjUwM10sIFstMjkuNjg1ODA1LCAtNzkuMjYwMjI2XSwgWy0zMS42MjQ4MDgsIC03OS4yOTkzOTddLCBbLTMzLjY4MTMyNCwgLTc5LjQ1NjEzMl0sIFstMzUuNjM5OTEyLCAtNzkuNDU2MTMyXSwgWy0zNS45MTQxMDcsIC03OS4wODM4NTVdLCBbLTM1Ljc3NzAxLCAtNzguMzM5MjQ4XSwgWy0zNS4zMjY1NDYsIC03OC4xMjM2NTRdLCBbLTMzLjg5Njc2MywgLTc3Ljg4ODUyNl0sIFstMzIuMjEyMzY5LCAtNzcuNjUzNDVdLCBbLTMwLjk5ODA1MSwgLTc3LjM1OTUxNV0sIFstMjkuNzgzNzMyLCAtNzcuMDY1NTc5XSwgWy0yOC44ODI3NzksIC03Ni42NzM2NjVdLCBbLTI3LjUxMTc1MiwgLTc2LjQ5NzM0NV0sIFstMjYuMTYwMzM2LCAtNzYuMzYwMTQ0XSwgWy0yNS40NzQ4MjIsIC03Ni4yODE4MDNdLCBbLTIzLjkyNzU1MiwgLTc2LjI0MjU4XSwgWy0yMi40NTg1OTgsIC03Ni4xMDU0MzFdLCBbLTIxLjIyNDY5NCwgLTc1LjkwOTQ3NF0sIFstMjAuMDEwMzc1LCAtNzUuNjc0MzQ2XSwgWy0xOC45MTM1NDMsIC03NS40MzkyMThdLCBbLTE3LjUyMjk4MiwgLTc1LjEyNTY5OF0sIFstMTYuNjQxNTg5LCAtNzQuNzkyNTRdLCBbLTE1LjcwMTQ5MSwgLTc0LjQ5ODYwNF0sIFstMTUuNDA3NzEsIC03NC4xMDY3NDJdLCBbLTE2LjQ2NTMyLCAtNzMuODcxNjE0XSwgWy0xNi4xMTI3ODQsIC03My40NjAxMTRdLCBbLTE1LjQ0Njg1NSwgLTczLjE0NjU0Ml0sIFstMTQuNDA4ODA1LCAtNzIuOTUwNTg1XSwgWy0xMy4zMTE5NzMsIC03Mi43MTU0NTddLCBbLTEyLjI5MzUwOCwgLTcyLjQwMTkzNl0sIFstMTEuNTEwMDY3LCAtNzIuMDEwMDc0XSwgWy0xMS4wMjA0MzMsIC03MS41Mzk3NjddLCBbLTEwLjI5NTc3NCwgLTcxLjI2NTQxNl0sIFstOS4xMDEwMTUsIC03MS4zMjQyMjRdLCBbLTguNjExMzgxLCAtNzEuNjU3MzNdLCBbLTcuNDE2NjIyLCAtNzEuNjk2NTAxXSwgWy03LjM3NzQ1MSwgLTcxLjMyNDIyNF0sIFstNi44NjgyMzIsIC03MC45MzIzMV0sIFstNS43OTA5ODUsIC03MS4wMzAyODldLCBbLTUuNTM2Mzc1LCAtNzEuNDAyNjE3XSwgWy00LjM0MTY2NywgLTcxLjQ2MTM3M10sIFstMy4wNDg5ODEsIC03MS4yODUwNTNdLCBbLTEuNzk1NDkyLCAtNzEuMTY3NDM4XSwgWy0wLjY1OTQ4OSwgLTcxLjIyNjI0Nl0sIFstMC4yMjg2MzcsIC03MS42Mzc3NDVdLCBbMC44NjgxOTUsIC03MS4zMDQ2MzldLCBbMS44ODY2ODYsIC03MS4xMjgyNjddLCBbMy4wMjI2MzgsIC03MC45OTExMThdLCBbNC4xMzkwNTUsIC03MC44NTM5MTddLCBbNS4xNTc1NDYsIC03MC42MTg3ODldLCBbNi4yNzM5MTIsIC03MC40NjIwNTVdLCBbNy4xMzU3MiwgLTcwLjI0NjUxMl0sIFs3Ljc0Mjg2NiwgLTY5Ljg5Mzc2OV0sIFs4LjQ4NzExLCAtNzAuMTQ4NTM0XSwgWzkuNTI1MTM1LCAtNzAuMDExMzMzXSwgWzEwLjI0OTg0NSwgLTcwLjQ4MTY0XSwgWzEwLjgxNzgyMSwgLTcwLjgzNDMzMl0sIFsxMS45NTM4MjQsIC03MC42MzgzNzVdLCBbMTIuNDA0Mjg3LCAtNzAuMjQ2NTEyXSwgWzEzLjQyMjc3OCwgLTY5Ljk3MjE2Ml0sIFsxNC43MzQ5OTgsIC03MC4wMzA5MThdLCBbMTUuMTI2NzU3LCAtNzAuNDAzMjQ3XSwgWzE1Ljk0OTM0MiwgLTcwLjAzMDkxOF0sIFsxNy4wMjY1ODksIC02OS45MTMzNTRdLCBbMTguMjAxNzExLCAtNjkuODc0MTgzXSwgWzE5LjI1OTM3MywgLTY5Ljg5Mzc2OV0sIFsyMC4zNzU3MzksIC03MC4wMTEzMzNdLCBbMjEuNDUyOTg1LCAtNzAuMDcwMTRdLCBbMjEuOTIzMDM0LCAtNzAuNDAzMjQ3XSwgWzIyLjU2OTQwMywgLTcwLjY5NzE4Ml0sIFsyMy42NjYxODQsIC03MC41MjA4MTFdLCBbMjQuODQxMzU3LCAtNzAuNDgxNjRdLCBbMjUuOTc3MzA5LCAtNzAuNDgxNjRdLCBbMjcuMDkzNzI2LCAtNzAuNDYyMDU1XSwgWzI4LjA5MjU4LCAtNzAuMzI0ODU0XSwgWzI5LjE1MDI0MiwgLTcwLjIwNzI5XSwgWzMwLjAzMTU4MywgLTY5LjkzMjk0XSwgWzMwLjk3MTczMywgLTY5Ljc1NjYyXSwgWzMxLjk5MDE3MiwgLTY5LjY1ODY0MV0sIFszMi43NTQwNTMsIC02OS4zODQyOTFdLCBbMzMuMzAyNDQzLCAtNjguODM1NjQyXSwgWzMzLjg3MDQxOSwgLTY4LjUwMjU4OF0sIFszNC45MDg0OTUsIC02OC42NTkyNzFdLCBbMzUuMzAwMjAyLCAtNjkuMDEyMDE0XSwgWzM2LjE2MjAxLCAtNjkuMjQ3MTQyXSwgWzM3LjIwMDAzNSwgLTY5LjE2ODc0OF0sIFszNy45MDUxMDgsIC02OS41MjE0NF0sIFszOC42NDk0MDQsIC02OS43NzYyMDVdLCBbMzkuNjY3ODk0LCAtNjkuNTQxMDc3XSwgWzQwLjAyMDQzMSwgLTY5LjEwOTk0MV0sIFs0MC45MjEzNTgsIC02OC45MzM2MjFdLCBbNDEuOTU5NDM0LCAtNjguNjAwNTE0XSwgWzQyLjkzODcwMiwgLTY4LjQ2MzMxM10sIFs0NC4xMTM4NzYsIC02OC4yNjc0MDhdLCBbNDQuODk3MjkxLCAtNjguMDUxODY2XSwgWzQ1LjcxOTkyOCwgLTY3LjgxNjczOF0sIFs0Ni41MDMzNDMsIC02Ny42MDExOTZdLCBbNDcuNDQzNDQsIC02Ny43MTg3NTldLCBbNDguMzQ0NDE5LCAtNjcuMzY2MDY4XSwgWzQ4Ljk5MDczNiwgLTY3LjA5MTcxOF0sIFs0OS45MzA4ODUsIC02Ny4xMTEzMDNdLCBbNTAuNzUzNDcxLCAtNjYuODc2MTc1XSwgWzUwLjk0OTMyNSwgLTY2LjUyMzQ4NF0sIFs1MS43OTE1NDcsIC02Ni4yNDkxMzNdLCBbNTIuNjE0MTMzLCAtNjYuMDUzMTc2XSwgWzUzLjYxMzAzOCwgLTY1Ljg5NjM5XSwgWzU0LjUzMzU1LCAtNjUuODE4MDQ5XSwgWzU1LjQxNDk0MywgLTY1Ljg3NjgwNV0sIFs1Ni4zNTUwNDEsIC02NS45NzQ3ODNdLCBbNTcuMTU4MDkzLCAtNjYuMjQ5MTMzXSwgWzU3LjI1NTk2OCwgLTY2LjY4MDIxOF0sIFs1OC4xMzczNjEsIC02Ny4wMTMzMjRdLCBbNTguNzQ0NTA4LCAtNjcuMjg3Njc1XSwgWzU5LjkzOTMxOCwgLTY3LjQwNTIzOV0sIFs2MC42MDUyMjEsIC02Ny42Nzk1ODldLCBbNjEuNDI3ODA2LCAtNjcuOTUzODg3XSwgWzYyLjM4NzQ4OSwgLTY4LjAxMjY5NV0sIFs2My4xOTA0OSwgLTY3LjgxNjczOF0sIFs2NC4wNTIzNDksIC02Ny40MDUyMzldLCBbNjQuOTkyNDQ3LCAtNjcuNjIwNzI5XSwgWzY1Ljk3MTcxNSwgLTY3LjczODM0NV0sIFs2Ni45MTE4NjQsIC02Ny44NTU5MDldLCBbNjcuODkxMTMzLCAtNjcuOTM0MzAyXSwgWzY4Ljg5MDAzOCwgLTY3LjkzNDMwMl0sIFs2OS43MTI2MjQsIC02OC45NzI3OTFdLCBbNjkuNjczNDUzLCAtNjkuMjI3NTU2XSwgWzY5LjU1NTk0MSwgLTY5LjY3ODIyNl0sIFs2OC41OTYyNTgsIC02OS45MzI5NF0sIFs2Ny44MTI3NCwgLTcwLjMwNTI2OF0sIFs2Ny45NDk4ODksIC03MC42OTcxODJdLCBbNjkuMDY2MzA3LCAtNzAuNjc3NTQ1XSwgWzY4LjkyOTE1NywgLTcxLjA2OTQ1OV0sIFs2OC40MTk5ODksIC03MS40NDE3ODhdLCBbNjcuOTQ5ODg5LCAtNzEuODUzMjg3XSwgWzY4LjcxMzc3LCAtNzIuMTY2ODA4XSwgWzY5Ljg2OTMwNywgLTcyLjI2NDc4N10sIFs3MS4wMjQ4OTUsIC03Mi4wODg0MTVdLCBbNzEuNTczMjg1LCAtNzEuNjk2NTAxXSwgWzcxLjkwNjI4OCwgLTcxLjMyNDIyNF0sIFs3Mi40NTQ2MjcsIC03MS4wMTA3MDNdLCBbNzMuMDgxNDEsIC03MC43MTY3NjhdLCBbNzMuMzM2MDIsIC03MC4zNjQwMjRdLCBbNzMuODY0ODc3LCAtNjkuODc0MTgzXSwgWzc0LjQ5MTU1NywgLTY5Ljc3NjIwNV0sIFs3NS42Mjc1NiwgLTY5LjczNzAzNF0sIFs3Ni42MjY0NjUsIC02OS42MTk0MTldLCBbNzcuNjQ0OTA0LCAtNjkuNDYyNjg0XSwgWzc4LjEzNDUzOSwgLTY5LjA3MDc3XSwgWzc4LjQyODM3MSwgLTY4LjY5ODQ0MV0sIFs3OS4xMTM4NTksIC02OC4zMjYyMTZdLCBbODAuMDkzMTI3LCAtNjguMDcxNTAzXSwgWzgwLjkzNTM1LCAtNjcuODc1NTQ2XSwgWzgxLjQ4Mzc5MiwgLTY3LjU0MjM4OF0sIFs4Mi4wNTE3NjcsIC02Ny4zNjYwNjhdLCBbODIuNzc2NDI2LCAtNjcuMjA5MjgyXSwgWzgzLjc3NTMzMSwgLTY3LjMwNzI2XSwgWzg0LjY3NjIwNiwgLTY3LjIwOTI4Ml0sIFs4NS42NTU1MjcsIC02Ny4wOTE3MThdLCBbODYuNzUyMzU5LCAtNjcuMTUwNDc0XSwgWzg3LjQ3NzAxNywgLTY2Ljg3NjE3NV0sIFs4Ny45ODYyODksIC02Ni4yMDk5MTFdLCBbODguMzU4NDExLCAtNjYuNDg0MjYxXSwgWzg4LjgyODQwOCwgLTY2Ljk1NDU2OF0sIFs4OS42NzA2MywgLTY3LjE1MDQ3NF0sIFs5MC42MzAzNjUsIC02Ny4yMjg4NjddLCBbOTEuNTkwMSwgLTY3LjExMTMwM10sIFs5Mi42MDg1MzksIC02Ny4xODk2OTZdLCBbOTMuNTQ4NjM3LCAtNjcuMjA5MjgyXSwgWzk0LjE3NTQyLCAtNjcuMTExMzAzXSwgWzk1LjAxNzU5MSwgLTY3LjE3MDExMV0sIFs5NS43ODE0NzIsIC02Ny4zODU2NTNdLCBbOTYuNjgyMzk5LCAtNjcuMjQ4NTA0XSwgWzk3Ljc1OTY0NiwgLTY3LjI0ODUwNF0sIFs5OC42ODAyMSwgLTY3LjExMTMwM10sIFs5OS43MTgxODIsIC02Ny4yNDg1MDRdLCBbMTAwLjM4NDE4OCwgLTY2LjkxNTM0Nl0sIFsxMDAuODkzMzU2LCAtNjYuNTgyMjRdLCBbMTAxLjU3ODg5NiwgLTY2LjMwNzg5XSwgWzEwMi44MzI0MTEsIC02NS41NjMyODRdLCBbMTAzLjQ3ODY3NiwgLTY1LjcwMDQ4NV0sIFsxMDQuMjQyNTU3LCAtNjUuOTc0NzgzXSwgWzEwNC45MDg0NiwgLTY2LjMyNzUyN10sIFsxMDYuMTgxNTYxLCAtNjYuOTM0OTMxXSwgWzEwNy4xNjA4ODEsIC02Ni45NTQ1NjhdLCBbMTA4LjA4MTM5MywgLTY2Ljk1NDU2OF0sIFsxMDkuMTU4NjQsIC02Ni44MzcwMDRdLCBbMTEwLjIzNTgzNSwgLTY2LjY5OTgwNF0sIFsxMTEuMDU4NDcyLCAtNjYuNDI1NTA1XSwgWzExMS43NDM5NiwgLTY2LjEzMTU3XSwgWzExMi44NjAzNzgsIC02Ni4wOTIzNDddLCBbMTEzLjYwNDY3MywgLTY1Ljg3NjgwNV0sIFsxMTQuMzg4MDg4LCAtNjYuMDcyNzYyXSwgWzExNC44OTczMDgsIC02Ni4zODYyODNdLCBbMTE1LjYwMjM4MSwgLTY2LjY5OTgwNF0sIFsxMTYuNjk5MTYxLCAtNjYuNjYwNjMzXSwgWzExNy4zODQ3MDEsIC02Ni45MTUzNDZdLCBbMTE4LjU3OTQ2LCAtNjcuMTcwMTExXSwgWzExOS44MzI5MjQsIC02Ny4yNjgwODldLCBbMTIwLjg3MSwgLTY3LjE4OTY5Nl0sIFsxMjEuNjU0NDE1LCAtNjYuODc2MTc1XSwgWzEyMi4zMjAzNjksIC02Ni41NjI2NTRdLCBbMTIzLjIyMTI5NiwgLTY2LjQ4NDI2MV0sIFsxMjQuMTIyMjc0LCAtNjYuNjIxNDYyXSwgWzEyNS4xNjAyNDcsIC02Ni43MTkzODldLCBbMTI2LjEwMDM5NiwgLTY2LjU2MjY1NF0sIFsxMjcuMDAxNDI3LCAtNjYuNTYyNjU0XSwgWzEyNy44ODI3NjgsIC02Ni42NjA2MzNdLCBbMTI4LjgwMzI4LCAtNjYuNzU4NjExXSwgWzEyOS43MDQyNTksIC02Ni41ODIyNF0sIFsxMzAuNzgxNDU0LCAtNjYuNDI1NTA1XSwgWzEzMS43OTk5NDUsIC02Ni4zODYyODNdLCBbMTMyLjkzNTg5NiwgLTY2LjM4NjI4M10sIFsxMzMuODU2NDYsIC02Ni4yODgzMDRdLCBbMTM0Ljc1NzM4NywgLTY2LjIwOTk2M10sIFsxMzUuMDMxNTgyLCAtNjUuNzIwMDddLCBbMTM1LjA3MDc1MywgLTY1LjMwODU3MV0sIFsxMzUuNjk3NDg1LCAtNjUuNTgyODY5XSwgWzEzNS44NzM4MDUsIC02Ni4wMzM1OTFdLCBbMTM2LjIwNjcwNSwgLTY2LjQ0NTA5XSwgWzEzNi42MTgwNDksIC02Ni43NzgxOTddLCBbMTM3LjQ2MDI3MSwgLTY2Ljk1NDU2OF0sIFsxMzguNTk2MjIzLCAtNjYuODk1NzYxXSwgWzEzOS45MDg0NDIsIC02Ni44NzYxNzVdLCBbMTQwLjgwOTQyMSwgLTY2LjgxNzM2N10sIFsxNDIuMTIxNjkyLCAtNjYuODE3MzY3XSwgWzE0My4wNjE4NDIsIC02Ni43OTc3ODJdLCBbMTQ0LjM3NDA2MSwgLTY2LjgzNzAwNF0sIFsxNDUuNDkwNDI3LCAtNjYuOTE1MzQ2XSwgWzE0Ni4xOTU1NTIsIC02Ny4yMjg4NjddLCBbMTQ1Ljk5OTY5OSwgLTY3LjYwMTE5Nl0sIFsxNDYuNjQ2MDY3LCAtNjcuODk1MTMxXSwgWzE0Ny43MjMyNjMsIC02OC4xMzAyNTldLCBbMTQ4LjgzOTYyOSwgLTY4LjM4NTAyNF0sIFsxNTAuMTMyMzE0LCAtNjguNTYxMjkyXSwgWzE1MS40ODM3MDUsIC02OC43MTgxM10sIFsxNTIuNTAyMjQ3LCAtNjguODc0ODEzXSwgWzE1My42MzgxOTksIC02OC44OTQ1MDJdLCBbMTU0LjI4NDU2NywgLTY4LjU2MTI5Ml0sIFsxNTUuMTY1ODU3LCAtNjguODM1NjQyXSwgWzE1NS45Mjk3OSwgLTY5LjE0OTIxNV0sIFsxNTYuODExMTMyLCAtNjkuMzg0MjkxXSwgWzE1OC4wMjU1MjgsIC02OS40ODIyNjldLCBbMTU5LjE4MTAxMywgLTY5LjU5OTgzM10sIFsxNTkuNjcwNjk5LCAtNjkuOTkxNzQ3XSwgWzE2MC44MDY2NSwgLTcwLjIyNjg3NV0sIFsxNjEuNTcwNDc5LCAtNzAuNTc5NjE4XSwgWzE2Mi42ODY4OTcsIC03MC43MzYzNTNdLCBbMTYzLjg0MjQzNCwgLTcwLjcxNjc2OF0sIFsxNjQuOTE5NjgxLCAtNzAuNzc1NTI0XSwgWzE2Ni4xMTQ0NCwgLTcwLjc1NTkzOF0sIFsxNjcuMzA5MDk1LCAtNzAuODM0MzMyXSwgWzE2OC40MjU2MTYsIC03MC45NzE0ODFdLCBbMTY5LjQ2MzU4OSwgLTcxLjIwNjY2XSwgWzE3MC41MDE2NjUsIC03MS40MDI2MTddLCBbMTcxLjIwNjc5LCAtNzEuNjk2NTAxXSwgWzE3MS4wODkyMjcsIC03Mi4wODg0MTVdLCBbMTcwLjU2MDQyMiwgLTcyLjQ0MTE1OV0sIFsxNzAuMTA5OTU4LCAtNzIuODkxODI5XSwgWzE2OS43NTczNywgLTczLjI0NDUyXSwgWzE2OS4yODczMjEsIC03My42NTYwMl0sIFsxNjcuOTc1MTAxLCAtNzMuODEyODA2XSwgWzE2Ny4zODc0ODksIC03NC4xNjU0OThdLCBbMTY2LjA5NDgwMywgLTc0LjM4MTA0XSwgWzE2NS42NDQzOTEsIC03NC43NzI5NTRdLCBbMTY0Ljk1ODg1MSwgLTc1LjE0NTI4M10sIFsxNjQuMjM0MTkzLCAtNzUuNDU4ODA0XSwgWzE2My44MjI3OTcsIC03NS44NzAzMDNdLCBbMTYzLjU2ODIzOSwgLTc2LjI0MjU4XSwgWzE2My40NzAyNiwgLTc2LjY5MzMwMl0sIFsxNjMuNDg5ODk3LCAtNzcuMDY1NTc5XSwgWzE2NC4wNTc4NzMsIC03Ny40NTc0NDJdLCBbMTY0LjI3MzM2MywgLTc3LjgyOTc3XSwgWzE2NC43NDM0NjQsIC03OC4xODI1MTRdLCBbMTY2LjYwNDEyNiwgLTc4LjMxOTYxMV0sIFsxNjYuOTk1NzgxLCAtNzguNzUwNzQ4XSwgWzE2NS4xOTM4NzYsIC03OC45MDc0ODNdLCBbMTYzLjY2NjIxNywgLTc5LjEyMzAyNV0sIFsxNjEuNzY2Mzg1LCAtNzkuMTYyMjQ4XSwgWzE2MC45MjQxNjIsIC03OS43MzA0ODJdLCBbMTYwLjc0Nzg5NCwgLTgwLjIwMDczN10sIFsxNjAuMzE2OTY0LCAtODAuNTczMDY2XSwgWzE1OS43ODgyMTEsIC04MC45NDUzOTVdLCBbMTYxLjEyMDAxNiwgLTgxLjI3ODUwMV0sIFsxNjEuNjI5Mjg3LCAtODEuNjkwMDAxXSwgWzE2Mi40OTA5OTIsIC04Mi4wNjIyNzhdLCBbMTYzLjcwNTMzNiwgLTgyLjM5NTQzNV0sIFsxNjUuMDk1OTQ5LCAtODIuNzA4OTU2XSwgWzE2Ni42MDQxMjYsIC04My4wMjI0NzddLCBbMTY4Ljg5NTY2NSwgLTgzLjMzNTk5OF0sIFsxNjkuNDA0NzgyLCAtODMuODI1ODkxXSwgWzE3Mi4yODM5MzQsIC04NC4wNDE0MzNdLCBbMTcyLjQ3NzA0OSwgLTg0LjExNzkxNF0sIFsxNzMuMjI0MDgzLCAtODQuNDEzNzFdLCBbMTc1Ljk4NTY3MiwgLTg0LjE1ODk5N10sIFsxNzguMjc3MjEyLCAtODQuNDcyNTE4XSwgWzE4MCwgLTg0LjcxMzM4XSwgWy0xNzkuOTQyNDk5LCAtODQuNzIxNDQzXSwgWy0xNzkuMDU4Njc3LCAtODQuMTM5NDEyXSwgWy0xNzcuMjU2NzcyLCAtODQuNDUyOTMzXSwgWy0xNzcuMTQwODA3LCAtODQuNDE3OTQxXSwgWy0xNzYuMDg0NjczLCAtODQuMDk5MjU5XSwgWy0xNzUuOTQ3MjM1LCAtODQuMTEwNDQ5XSwgWy0xNzUuODI5ODgyLCAtODQuMTE3OTE0XSwgWy0xNzQuMzgyNTAzLCAtODQuNTM0MzIzXSwgWy0xNzMuMTE2NTU5LCAtODQuMTE3OTE0XSwgWy0xNzIuODg5MTA2LCAtODQuMDYxMDE5XSwgWy0xNjkuOTUxMjIzLCAtODMuODg0NjQ3XSwgWy0xNjguOTk5OTg5LCAtODQuMTE3OTE0XSwgWy0xNjguNTMwMTk5LCAtODQuMjM3MzldLCBbLTE2Ny4wMjIwOTksIC04NC41NzA0OTddLCBbLTE2NC4xODIxNDQsIC04NC44MjUyMV0sIFstMTYxLjkyOTc3NSwgLTg1LjEzODczMV0sIFstMTU4LjA3MTM4LCAtODUuMzczOTFdLCBbLTE1NS4xOTIyNTMsIC04NS4wOTk1Nl0sIFstMTUwLjk0MjA5OSwgLTg1LjI5NTUxN10sIFstMTQ4LjUzMzA3MywgLTg1LjYwOTAzOF0sIFstMTQ1Ljg4ODkxOCwgLTg1LjMxNTEwMl0sIFstMTQzLjEwNzcxOCwgLTg1LjA0MDc1Ml0sIFstMTQyLjg5MjI3OSwgLTg0LjU3MDQ5N10sIFstMTQ2LjgyOTA2OCwgLTg0LjUzMTI3NF0sIFstMTUwLjA2MDczMiwgLTg0LjI5NjE0Nl0sIFstMTUwLjkwMjkyOCwgLTgzLjkwNDIzMl0sIFstMTUzLjU4NjIwMSwgLTgzLjY4ODY5XSwgWy0xNTMuNDA5OTA3LCAtODMuMjM4MDJdLCBbLTE1My4wMzc3NTksIC04Mi44MjY1Ml0sIFstMTUyLjY2NTYzNywgLTgyLjQ1NDE5Ml0sIFstMTUyLjg2MTUxNywgLTgyLjA0MjY5Ml0sIFstMTU0LjUyNjI5OSwgLTgxLjc2ODM5NF0sIFstMTU1LjI5MDE4LCAtODEuNDE1NjVdLCBbLTE1Ni44Mzc0NSwgLTgxLjEwMjEyOV0sIFstMTU0LjQwODc4NywgLTgxLjE2MDkzN10sIFstMTUyLjA5NzY2MiwgLTgxLjAwNDE1MV0sIFstMTUwLjY0ODI5MywgLTgxLjMzNzMwOV0sIFstMTQ4Ljg2NTk5OCwgLTgxLjA0MzM3M10sIFstMTQ3LjIyMDc1LCAtODAuNjcxMDQ1XSwgWy0xNDYuNDE3NzQ5LCAtODAuMzM3OTM4XSwgWy0xNDYuNzcwMjg2LCAtNzkuOTI2NDM5XSwgWy0xNDguMDYyOTQ3LCAtNzkuNjUyMDg5XSwgWy0xNDkuNTMxOTAxLCAtNzkuMzU4MjA1XSwgWy0xNTEuNTg4NDE2LCAtNzkuMjk5Mzk3XSwgWy0xNTMuMzkwMzIyLCAtNzkuMTYyMjQ4XSwgWy0xNTUuMzI5Mzc2LCAtNzkuMDY0MjY5XSwgWy0xNTUuOTc1NjY4LCAtNzguNjkxOTRdLCBbLTE1Ny4yNjgzMDIsIC03OC4zNzg0MTldLCBbLTE1OC4wNTE3NjgsIC03OC4wMjU2NzZdLCBbLTE1OC4zNjUxMzQsIC03Ni44ODkyMDddLCBbLTE1Ny44NzU0NzQsIC03Ni45ODcyMzhdLCBbLTE1Ni45NzQ1NzMsIC03Ny4zMDA3NTldLCBbLTE1NS4zMjkzNzYsIC03Ny4yMDI3MjhdLCBbLTE1My43NDI4MzIsIC03Ny4wNjU1NzldLCBbLTE1Mi45MjAyNDcsIC03Ny40OTY2NjRdLCBbLTE1MS4zMzM3OCwgLTc3LjM5ODczN10sIFstMTUwLjAwMTk1LCAtNzcuMTgzMTQzXSwgWy0xNDguNzQ4NDg2LCAtNzYuOTA4ODQ1XSwgWy0xNDcuNjEyNDgzLCAtNzYuNTc1NzM4XSwgWy0xNDYuMTA0NDA5LCAtNzYuNDc3NzZdLCBbLTE0Ni4xNDM1MjgsIC03Ni4xMDU0MzFdLCBbLTE0Ni40OTYwOTEsIC03NS43MzMxNTRdLCBbLTE0Ni4yMDIzMSwgLTc1LjM4MDQxMV0sIFstMTQ0LjkwOTYyNCwgLTc1LjIwNDAzOV0sIFstMTQ0LjMyMjAzNywgLTc1LjUzNzE5N10sIFstMTQyLjc5NDM1MywgLTc1LjM0MTI0XSwgWy0xNDEuNjM4NzY0LCAtNzUuMDg2NDc1XSwgWy0xNDAuMjA5MDA3LCAtNzUuMDY2ODldLCBbLTEzOC44NTc1OSwgLTc0Ljk2ODkxMV0sIFstMTM3LjUwNjIsIC03NC43MzM3ODNdLCBbLTEzNi40Mjg5MDEsIC03NC41MTgyNDFdLCBbLTEzNS4yMTQ1ODMsIC03NC4zMDI2OTldLCBbLTEzNC40MzExOTQsIC03NC4zNjE0NTVdLCBbLTEzMy43NDU2NTQsIC03NC40Mzk4NDhdLCBbLTEzMi4yNTcxNjgsIC03NC4zMDI2OTldLCBbLTEzMC45MjUzMTEsIC03NC40NzkwMTldLCBbLTEyOS41NTQyODQsIC03NC40NTk0MzNdLCBbLTEyOC4yNDIwMzgsIC03NC4zMjIyODRdLCBbLTEyNi44OTA2MjIsIC03NC40MjAyNjNdLCBbLTEyNS40MDIwODIsIC03NC41MTgyNDFdLCBbLTEyNC4wMTE0OTYsIC03NC40NzkwMTldLCBbLTEyMi41NjIxNTIsIC03NC40OTg2MDRdLCBbLTEyMS4wNzM2MTMsIC03NC41MTgyNDFdLCBbLTExOS43MDI1NiwgLTc0LjQ3OTAxOV0sIFstMTE4LjY4NDE0NSwgLTc0LjE4NTA4M10sIFstMTE3LjQ2OTgwMSwgLTc0LjAyODM0OF0sIFstMTE2LjIxNjMxMiwgLTc0LjI0Mzg5MV0sIFstMTE1LjAyMTU1MiwgLTc0LjA2NzUxOV0sIFstMTEzLjk0NDMzMSwgLTczLjcxNDgyOF0sIFstMTEzLjI5Nzk4OCwgLTc0LjAyODM0OF0sIFstMTEyLjk0NTQ1MiwgLTc0LjM4MTA0XSwgWy0xMTIuMjk5MDgzLCAtNzQuNzE0MTk4XSwgWy0xMTEuMjYxMDU5LCAtNzQuNDIwMjYzXSwgWy0xMTAuMDY2MzI1LCAtNzQuNzkyNTRdLCBbLTEwOC43MTQ5MDksIC03NC45MTAxMDNdLCBbLTEwNy41NTkzNDYsIC03NS4xODQ0NTRdLCBbLTEwNi4xNDkxNDgsIC03NS4xMjU2OThdLCBbLTEwNC44NzYwNzQsIC03NC45NDkzMjZdLCBbLTEwMy4zNjc5NDksIC03NC45ODg0OTddLCBbLTEwMi4wMTY1MDcsIC03NS4xMjU2OThdLCBbLTEwMC42NDU1MzEsIC03NS4zMDIwMThdLCBbLTEwMC4xMTY3LCAtNzQuODcwOTMzXSwgWy0xMDAuNzYzMDQzLCAtNzQuNTM3ODI2XSwgWy0xMDEuMjUyNzAzLCAtNzQuMTg1MDgzXSwgWy0xMDIuNTQ1MzM3LCAtNzQuMTA2NzQyXSwgWy0xMDMuMTEzMzEzLCAtNzMuNzM0NDEzXSwgWy0xMDMuMzI4NzUyLCAtNzMuMzYyMDg0XSwgWy0xMDMuNjgxMjg5LCAtNzIuNjE3NTNdLCBbLTEwMi45MTc0ODUsIC03Mi43NTQ2NzldLCBbLTEwMS42MDUyNCwgLTcyLjgxMzQzNl0sIFstMTAwLjMxMjUyOCwgLTcyLjc1NDY3OV0sIFstOTkuMTM3MzgsIC03Mi45MTE0MTRdLCBbLTk4LjExODg4OSwgLTczLjIwNTM1XSwgWy05Ny42ODgwMzcsIC03My41NTgwNDFdLCBbLTk2LjMzNjU5NSwgLTczLjYxNjg0OV0sIFstOTUuMDQzOTYxLCAtNzMuNDc5N10sIFstOTMuNjcyOTA3LCAtNzMuMjgzNzQzXSwgWy05Mi40MzkwMDMsIC03My4xNjYxNzldLCBbLTkxLjQyMDU2NCwgLTczLjQwMTMwN10sIFstOTAuMDg4NzMzLCAtNzMuMzIyOTE0XSwgWy04OS4yMjY5NTEsIC03Mi41NTg3MjJdLCBbLTg4LjQyMzk1MSwgLTczLjAwOTM5M10sIFstODcuMjY4MzM3LCAtNzMuMTg1NzY0XSwgWy04Ni4wMTQ4MjIsIC03My4wODc3ODZdLCBbLTg1LjE5MjIzNiwgLTczLjQ3OTddLCBbLTgzLjg3OTk5MSwgLTczLjUxODg3MV0sIFstODIuNjY1NjQ2LCAtNzMuNjM2NDM0XSwgWy04MS40NzA5MTMsIC03My44NTE5NzddLCBbLTgwLjY4NzQ0NywgLTczLjQ3OTddLCBbLTgwLjI5NTc5MSwgLTczLjEyNjk1Nl0sIFstNzkuMjk2ODg2LCAtNzMuNTE4ODcxXSwgWy03Ny45MjU4NTgsIC03My40MjA4OTJdLCBbLTc2LjkwNzM2NywgLTczLjYzNjQzNF0sIFstNzYuMjIxODc5LCAtNzMuOTY5NTQxXSwgWy03NC44OTAwNDksIC03My44NzE2MTRdLCBbLTczLjg1MjAyNCwgLTczLjY1NjAyXSwgWy03Mi44MzM1MzMsIC03My40MDEzMDddLCBbLTcxLjYxOTIxNSwgLTczLjI2NDE1N10sIFstNzAuMjA5MDQyLCAtNzMuMTQ2NTQyXSwgWy02OC45MzU5MTYsIC03My4wMDkzOTNdLCBbLTY3Ljk1NjYyMiwgLTcyLjc5Mzg1XSwgWy02Ny4zNjkwNjEsIC03Mi40ODAzMjldLCBbLTY3LjEzNDAzNiwgLTcyLjA0OTI0NF0sIFstNjcuMjUxNTQ4LCAtNzEuNjM3NzQ1XSwgWy02Ny41NjQ5NCwgLTcxLjI0NTgzMV0sIFstNjcuOTE3NDc3LCAtNzAuODUzOTE3XSwgWy02OC4yMzA4NDMsIC03MC40NjIwNTVdLCBbLTY4LjQ4NTQ1MiwgLTcwLjEwOTMxMV0sIFstNjguNTQ0MjA5LCAtNjkuNzE3Mzk3XSwgWy02OC40NDYyODIsIC02OS4zMjU1MzVdLCBbLTY3Ljk3NjIzMywgLTY4Ljk1MzIwNl0sIFstNjcuNTg0NSwgLTY4LjU0MTcwN10sIFstNjcuNDI3ODQzLCAtNjguMTQ5ODQ0XSwgWy02Ny42MjM2NywgLTY3LjcxODc1OV0sIFstNjcuNzQxMTgzLCAtNjcuMzI2ODQ1XSwgWy02Ny4yNTE1NDgsIC02Ni44NzYxNzVdLCBbLTY2LjcwMzE4NCwgLTY2LjU4MjI0XSwgWy02Ni4wNTY4MTUsIC02Ni4yMDk5NjNdLCBbLTY1LjM3MTMyNywgLTY1Ljg5NjM5XSwgWy02NC41NjgyNzYsIC02NS42MDI1MDZdLCBbLTY0LjE3NjU0MiwgLTY1LjE3MTQyM10sIFstNjMuNjI4MTUyLCAtNjQuODk3MDczXSwgWy02My4wMDEzOTQsIC02NC42NDIzMDhdLCBbLTYyLjA0MTY4NiwgLTY0LjU4MzU1Ml0sIFstNjEuNDE0OTI4LCAtNjQuMjcwMDMxXSwgWy02MC43MDk4NTUsIC02NC4wNzQwNzRdLCBbLTU5Ljg4NzI2OSwgLTYzLjk1NjUxXSwgWy01OS4xNjI1ODUsIC02My43MDE3NDVdLCBbLTU4LjU5NDU1NywgLTYzLjM4ODIyNF0sIFstNTcuODExMTQzLCAtNjMuMjcwNjZdLCBbLTU3LjIyMzU4MiwgLTYzLjUyNTQyNV0sIFstNTcuNTk1NzMsIC02My44NTg1MzJdLCBbLTU4LjYxNDE0MywgLTY0LjE1MjQ2N11dXV0sICJ0eXBlIjogIk11bHRpUG9seWdvbiJ9LCAiaWQiOiAiQVRBIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJBbnRhcmN0aWNhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s2OC45MzUsIC00OC42MjVdLCBbNjkuNTgsIC00OC45NF0sIFs3MC41MjUsIC00OS4wNjVdLCBbNzAuNTYsIC00OS4yNTVdLCBbNzAuMjgsIC00OS43MV0sIFs2OC43NDUsIC00OS43NzVdLCBbNjguNzIsIC00OS4yNDI1XSwgWzY4Ljg2NzUsIC00OC44M10sIFs2OC45MzUsIC00OC42MjVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkFURiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRnJlbmNoIFNvdXRoZXJuIGFuZCBBbnRhcmN0aWMgTGFuZHMiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxNDUuMzk3OTc4LCAtNDAuNzkyNTQ5XSwgWzE0Ni4zNjQxMjEsIC00MS4xMzc2OTVdLCBbMTQ2LjkwODU4NCwgLTQxLjAwMDU0Nl0sIFsxNDcuNjg5MjU5LCAtNDAuODA4MjU4XSwgWzE0OC4yODkwNjgsIC00MC44NzU0MzhdLCBbMTQ4LjM1OTg2NSwgLTQyLjA2MjQ0NV0sIFsxNDguMDE3MzAxLCAtNDIuNDA3MDI0XSwgWzE0Ny45MTQwNTIsIC00My4yMTE1MjJdLCBbMTQ3LjU2NDU2NCwgLTQyLjkzNzY4OV0sIFsxNDYuODcwMzQzLCAtNDMuNjM0NTk3XSwgWzE0Ni42NjMzMjcsIC00My41ODA4NTRdLCBbMTQ2LjA0ODM3OCwgLTQzLjU0OTc0NV0sIFsxNDUuNDMxOTMsIC00Mi42OTM3NzZdLCBbMTQ1LjI5NTA5LCAtNDIuMDMzNjFdLCBbMTQ0LjcxODA3MSwgLTQxLjE2MjU1Ml0sIFsxNDQuNzQzNzU1LCAtNDAuNzAzOTc1XSwgWzE0NS4zOTc5NzgsIC00MC43OTI1NDldXV0sIFtbWzE0My41NjE4MTEsIC0xMy43NjM2NTZdLCBbMTQzLjkyMjA5OSwgLTE0LjU0ODMxMV0sIFsxNDQuNTYzNzE0LCAtMTQuMTcxMTc2XSwgWzE0NC44OTQ5MDgsIC0xNC41OTQ0NThdLCBbMTQ1LjM3NDcyNCwgLTE0Ljk4NDk3Nl0sIFsxNDUuMjcxOTkxLCAtMTUuNDI4MjA1XSwgWzE0NS40ODUyNiwgLTE2LjI4NTY3Ml0sIFsxNDUuNjM3MDMzLCAtMTYuNzg0OTE4XSwgWzE0NS44ODg5MDQsIC0xNi45MDY5MjZdLCBbMTQ2LjE2MDMwOSwgLTE3Ljc2MTY1NV0sIFsxNDYuMDYzNjc0LCAtMTguMjgwMDczXSwgWzE0Ni4zODc0NzgsIC0xOC45NTgyNzRdLCBbMTQ3LjQ3MTA4MiwgLTE5LjQ4MDcyM10sIFsxNDguMTc3NjAyLCAtMTkuOTU1OTM5XSwgWzE0OC44NDg0MTQsIC0yMC4zOTEyMV0sIFsxNDguNzE3NDY1LCAtMjAuNjMzNDY5XSwgWzE0OS4yODk0MiwgLTIxLjI2MDUxMV0sIFsxNDkuNjc4MzM3LCAtMjIuMzQyNTEyXSwgWzE1MC4wNzczODIsIC0yMi4xMjI3ODRdLCBbMTUwLjQ4MjkzOSwgLTIyLjU1NjE0Ml0sIFsxNTAuNzI3MjY1LCAtMjIuNDAyNDA1XSwgWzE1MC44OTk1NTQsIC0yMy40NjIyMzddLCBbMTUxLjYwOTE3NSwgLTI0LjA3NjI1Nl0sIFsxNTIuMDczNTQsIC0yNC40NTc4ODddLCBbMTUyLjg1NTE5NywgLTI1LjI2NzUwMV0sIFsxNTMuMTM2MTYyLCAtMjYuMDcxMTczXSwgWzE1My4xNjE5NDksIC0yNi42NDEzMTldLCBbMTUzLjA5MjkwOSwgLTI3LjI2MDNdLCBbMTUzLjU2OTQ2OSwgLTI4LjExMDA2N10sIFsxNTMuNTEyMTA4LCAtMjguOTk1MDc3XSwgWzE1My4zMzkwOTUsIC0yOS40NTgyMDJdLCBbMTUzLjA2OTI0MSwgLTMwLjM1MDI0XSwgWzE1My4wODk2MDIsIC0zMC45MjM2NDJdLCBbMTUyLjg5MTU3OCwgLTMxLjY0MDQ0Nl0sIFsxNTIuNDUwMDAyLCAtMzIuNTUwMDAzXSwgWzE1MS43MDkxMTcsIC0zMy4wNDEzNDJdLCBbMTUxLjM0Mzk3MiwgLTMzLjgxNjAyM10sIFsxNTEuMDEwNTU1LCAtMzQuMzEwMzZdLCBbMTUwLjcxNDEzOSwgLTM1LjE3MzQ2XSwgWzE1MC4zMjgyMiwgLTM1LjY3MTg3OV0sIFsxNTAuMDc1MjEyLCAtMzYuNDIwMjA2XSwgWzE0OS45NDYxMjQsIC0zNy4xMDkwNTJdLCBbMTQ5Ljk5NzI4NCwgLTM3LjQyNTI2MV0sIFsxNDkuNDIzODgyLCAtMzcuNzcyNjgxXSwgWzE0OC4zMDQ2MjIsIC0zNy44MDkwNjFdLCBbMTQ3LjM4MTczMywgLTM4LjIxOTIxN10sIFsxNDYuOTIyMTIzLCAtMzguNjA2NTMyXSwgWzE0Ni4zMTc5MjIsIC0zOS4wMzU3NTddLCBbMTQ1LjQ4OTY1MiwgLTM4LjU5Mzc2OF0sIFsxNDQuODc2OTc2LCAtMzguNDE3NDQ4XSwgWzE0NS4wMzIyMTIsIC0zNy44OTYxODhdLCBbMTQ0LjQ4NTY4MiwgLTM4LjA4NTMyNF0sIFsxNDMuNjA5OTc0LCAtMzguODA5NDY1XSwgWzE0Mi43NDU0MjcsIC0zOC41MzgyNjhdLCBbMTQyLjE3ODMzLCAtMzguMzgwMDM0XSwgWzE0MS42MDY1ODIsIC0zOC4zMDg1MTRdLCBbMTQwLjYzODU3OSwgLTM4LjAxOTMzM10sIFsxMzkuOTkyMTU4LCAtMzcuNDAyOTM2XSwgWzEzOS44MDY1ODgsIC0zNi42NDM2MDNdLCBbMTM5LjU3NDE0OCwgLTM2LjEzODM2Ml0sIFsxMzkuMDgyODA4LCAtMzUuNzMyNzU0XSwgWzEzOC4xMjA3NDgsIC0zNS42MTIyOTZdLCBbMTM4LjQ0OTQ2MiwgLTM1LjEyNzI2MV0sIFsxMzguMjA3NTY0LCAtMzQuMzg0NzIzXSwgWzEzNy43MTkxNywgLTM1LjA3NjgyNV0sIFsxMzYuODI5NDA2LCAtMzUuMjYwNTM1XSwgWzEzNy4zNTIzNzEsIC0zNC43MDczMzldLCBbMTM3LjUwMzg4NiwgLTM0LjEzMDI2OF0sIFsxMzcuODkwMTE2LCAtMzMuNjQwNDc5XSwgWzEzNy44MTAzMjgsIC0zMi45MDAwMDddLCBbMTM2Ljk5NjgzNywgLTMzLjc1Mjc3MV0sIFsxMzYuMzcyMDY5LCAtMzQuMDk0NzY2XSwgWzEzNS45ODkwNDMsIC0zNC44OTAxMThdLCBbMTM1LjIwODIxMywgLTM0LjQ3ODY3XSwgWzEzNS4yMzkyMTgsIC0zMy45NDc5NTNdLCBbMTM0LjYxMzQxNywgLTMzLjIyMjc3OF0sIFsxMzQuMDg1OTA0LCAtMzIuODQ4MDcyXSwgWzEzNC4yNzM5MDMsIC0zMi42MTcyMzRdLCBbMTMyLjk5MDc3NywgLTMyLjAxMTIyNF0sIFsxMzIuMjg4MDgxLCAtMzEuOTgyNjQ3XSwgWzEzMS4zMjYzMzEsIC0zMS40OTU4MDNdLCBbMTI5LjUzNTc5NCwgLTMxLjU5MDQyM10sIFsxMjguMjQwOTM4LCAtMzEuOTQ4NDg5XSwgWzEyNy4xMDI4NjcsIC0zMi4yODIyNjddLCBbMTI2LjE0ODcxNCwgLTMyLjIxNTk2Nl0sIFsxMjUuMDg4NjIzLCAtMzIuNzI4NzUxXSwgWzEyNC4yMjE2NDgsIC0zMi45NTk0ODddLCBbMTI0LjAyODk0NywgLTMzLjQ4Mzg0N10sIFsxMjMuNjU5NjY3LCAtMzMuODkwMTc5XSwgWzEyMi44MTEwMzYsIC0zMy45MTQ0NjddLCBbMTIyLjE4MzA2NCwgLTM0LjAwMzQwMl0sIFsxMjEuMjk5MTkxLCAtMzMuODIxMDM2XSwgWzEyMC41ODAyNjgsIC0zMy45MzAxNzddLCBbMTE5Ljg5MzY5NSwgLTMzLjk3NjA2NV0sIFsxMTkuMjk4ODk5LCAtMzQuNTA5MzY2XSwgWzExOS4wMDczNDEsIC0zNC40NjQxNDldLCBbMTE4LjUwNTcxOCwgLTM0Ljc0NjgxOV0sIFsxMTguMDI0OTcyLCAtMzUuMDY0NzMzXSwgWzExNy4yOTU1MDcsIC0zNS4wMjU0NTldLCBbMTE2LjYyNTEwOSwgLTM1LjAyNTA5N10sIFsxMTUuNTY0MzQ3LCAtMzQuMzg2NDI4XSwgWzExNS4wMjY4MDksIC0zNC4xOTY1MTddLCBbMTE1LjA0ODYxNiwgLTMzLjYyMzQyNV0sIFsxMTUuNTQ1MTIzLCAtMzMuNDg3MjU4XSwgWzExNS43MTQ2NzQsIC0zMy4yNTk1NzJdLCBbMTE1LjY3OTM3OSwgLTMyLjkwMDM2OV0sIFsxMTUuODAxNjQ1LCAtMzIuMjA1MDYyXSwgWzExNS42ODk2MTEsIC0zMS42MTI0MzddLCBbMTE1LjE2MDkwOSwgLTMwLjYwMTU5NF0sIFsxMTQuOTk3MDQzLCAtMzAuMDMwNzI1XSwgWzExNS4wNDAwMzgsIC0yOS40NjEwOTVdLCBbMTE0LjY0MTk3NCwgLTI4LjgxMDIzMV0sIFsxMTQuNjE2NDk4LCAtMjguNTE2Mzk5XSwgWzExNC4xNzM1NzksIC0yOC4xMTgwNzddLCBbMTE0LjA0ODg4NCwgLTI3LjMzNDc2NV0sIFsxMTMuNDc3NDk4LCAtMjYuNTQzMTM0XSwgWzExMy4zMzg5NTMsIC0yNi4xMTY1NDVdLCBbMTEzLjc3ODM1OCwgLTI2LjU0OTAyNV0sIFsxMTMuNDQwOTYyLCAtMjUuNjIxMjc4XSwgWzExMy45MzY5MDEsIC0yNS45MTEyMzVdLCBbMTE0LjIzMjg1MiwgLTI2LjI5ODQ0Nl0sIFsxMTQuMjE2MTYxLCAtMjUuNzg2MjgxXSwgWzExMy43MjEyNTUsIC0yNC45OTg5MzldLCBbMTEzLjYyNTM0NCwgLTI0LjY4Mzk3MV0sIFsxMTMuMzkzNTIzLCAtMjQuMzg0NzY0XSwgWzExMy41MDIwNDQsIC0yMy44MDYzNV0sIFsxMTMuNzA2OTkzLCAtMjMuNTYwMjE1XSwgWzExMy44NDM0MTgsIC0yMy4wNTk5ODddLCBbMTEzLjczNjU1MiwgLTIyLjQ3NTQ3NV0sIFsxMTQuMTQ5NzU2LCAtMjEuNzU1ODgxXSwgWzExNC4yMjUzMDcsIC0yMi41MTc0ODhdLCBbMTE0LjY0Nzc2MiwgLTIxLjgyOTUyXSwgWzExNS40NjAxNjcsIC0yMS40OTUxNzNdLCBbMTE1Ljk0NzM3MywgLTIxLjA2ODY4OF0sIFsxMTYuNzExNjE1LCAtMjAuNzAxNjgyXSwgWzExNy4xNjYzMTYsIC0yMC42MjM1OTldLCBbMTE3LjQ0MTU0NSwgLTIwLjc0Njg5OV0sIFsxMTguMjI5NTU5LCAtMjAuMzc0MjA4XSwgWzExOC44MzYwODUsIC0yMC4yNjMzMTFdLCBbMTE4Ljk4NzgwNywgLTIwLjA0NDIwM10sIFsxMTkuMjUyNDk0LCAtMTkuOTUyOTQyXSwgWzExOS44MDUyMjUsIC0xOS45NzY1MDZdLCBbMTIwLjg1NjIyLCAtMTkuNjgzNzA4XSwgWzEyMS4zOTk4NTYsIC0xOS4yMzk3NTZdLCBbMTIxLjY1NTEzOCwgLTE4LjcwNTMxOF0sIFsxMjIuMjQxNjY1LCAtMTguMTk3NjQ5XSwgWzEyMi4yODY2MjQsIC0xNy43OTg2MDNdLCBbMTIyLjMxMjc3MiwgLTE3LjI1NDk2N10sIFsxMjMuMDEyNTc0LCAtMTYuNDA1Ml0sIFsxMjMuNDMzNzg5LCAtMTcuMjY4NTU4XSwgWzEyMy44NTkzNDUsIC0xNy4wNjkwMzVdLCBbMTIzLjUwMzI0MiwgLTE2LjU5NjUwNl0sIFsxMjMuODE3MDczLCAtMTYuMTExMzE2XSwgWzEyNC4yNTgyODcsIC0xNi4zMjc5NDRdLCBbMTI0LjM3OTcyNiwgLTE1LjU2NzA2XSwgWzEyNC45MjYxNTMsIC0xNS4wNzUxXSwgWzEyNS4xNjcyNzUsIC0xNC42ODAzOTZdLCBbMTI1LjY3MDA4NywgLTE0LjUxMDA3XSwgWzEyNS42ODU3OTYsIC0xNC4yMzA2NTZdLCBbMTI2LjEyNTE0OSwgLTE0LjM0NzM0MV0sIFsxMjYuMTQyODIzLCAtMTQuMDk1OTg3XSwgWzEyNi41ODI1ODksIC0xMy45NTI3OTFdLCBbMTI3LjA2NTg2NywgLTEzLjgxNzk2OF0sIFsxMjcuODA0NjMzLCAtMTQuMjc2OTA2XSwgWzEyOC4zNTk2OSwgLTE0Ljg2OTE3XSwgWzEyOC45ODU1NDMsIC0xNC44NzU5OTFdLCBbMTI5LjYyMTQ3MywgLTE0Ljk2OTc4NF0sIFsxMjkuNDA5NiwgLTE0LjQyMDY3XSwgWzEyOS44ODg2NDEsIC0xMy42MTg3MDNdLCBbMTMwLjMzOTQ2NiwgLTEzLjM1NzM3Nl0sIFsxMzAuMTgzNTA2LCAtMTMuMTA3NTJdLCBbMTMwLjYxNzc5NSwgLTEyLjUzNjM5Ml0sIFsxMzEuMjIzNDk1LCAtMTIuMTgzNjQ5XSwgWzEzMS43MzUwOTEsIC0xMi4zMDI0NTNdLCBbMTMyLjU3NTI5OCwgLTEyLjExNDA0MV0sIFsxMzIuNTU3MjEyLCAtMTEuNjAzMDEyXSwgWzEzMS44MjQ2OTgsIC0xMS4yNzM3ODJdLCBbMTMyLjM1NzIyNCwgLTExLjEyODUxOV0sIFsxMzMuMDE5NTYxLCAtMTEuMzc2NDExXSwgWzEzMy41NTA4NDYsIC0xMS43ODY1MTVdLCBbMTM0LjM5MzA2OCwgLTEyLjA0MjM2NV0sIFsxMzQuNjc4NjMyLCAtMTEuOTQxMTgzXSwgWzEzNS4yOTg0OTEsIC0xMi4yNDg2MDZdLCBbMTM1Ljg4MjY5MywgLTExLjk2MjI2N10sIFsxMzYuMjU4MzgxLCAtMTIuMDQ5MzQyXSwgWzEzNi40OTI0NzUsIC0xMS44NTcyMDldLCBbMTM2Ljk1MTYyLCAtMTIuMzUxOTU5XSwgWzEzNi42ODUxMjUsIC0xMi44ODcyMjNdLCBbMTM2LjMwNTQwNywgLTEzLjI5MTIzXSwgWzEzNS45NjE3NTgsIC0xMy4zMjQ1MDldLCBbMTM2LjA3NzYxNywgLTEzLjcyNDI3OF0sIFsxMzUuNzgzODM2LCAtMTQuMjIzOTg5XSwgWzEzNS40Mjg2NjQsIC0xNC43MTU0MzJdLCBbMTM1LjUwMDE4NCwgLTE0Ljk5Nzc0MV0sIFsxMzYuMjk1MTc1LCAtMTUuNTUwMjY1XSwgWzEzNy4wNjUzNiwgLTE1Ljg3MDc2Ml0sIFsxMzcuNTgwNDcxLCAtMTYuMjE1MDgyXSwgWzEzOC4zMDMyMTcsIC0xNi44MDc2MDRdLCBbMTM4LjU4NTE2NCwgLTE2LjgwNjYyMl0sIFsxMzkuMTA4NTQzLCAtMTcuMDYyNjc5XSwgWzEzOS4yNjA1NzUsIC0xNy4zNzE2MDFdLCBbMTQwLjIxNTI0NSwgLTE3LjcxMDgwNV0sIFsxNDAuODc1NDYzLCAtMTcuMzY5MDY5XSwgWzE0MS4wNzExMSwgLTE2LjgzMjA0N10sIFsxNDEuMjc0MDk1LCAtMTYuMzg4ODddLCBbMTQxLjM5ODIyMiwgLTE1Ljg0MDUzMl0sIFsxNDEuNzAyMTgzLCAtMTUuMDQ0OTIxXSwgWzE0MS41NjMzOCwgLTE0LjU2MTMzM10sIFsxNDEuNjM1NTIsIC0xNC4yNzAzOTVdLCBbMTQxLjUxOTg2OSwgLTEzLjY5ODA3OF0sIFsxNDEuNjUwOTIsIC0xMi45NDQ2ODhdLCBbMTQxLjg0MjY5MSwgLTEyLjc0MTU0OF0sIFsxNDEuNjg2OTksIC0xMi40MDc2MTRdLCBbMTQxLjkyODYyOSwgLTExLjg3NzQ2Nl0sIFsxNDIuMTE4NDg4LCAtMTEuMzI4MDQyXSwgWzE0Mi4xNDM3MDYsIC0xMS4wNDI3MzddLCBbMTQyLjUxNTI2LCAtMTAuNjY4MTg2XSwgWzE0Mi43OTczMSwgLTExLjE1NzM1NV0sIFsxNDIuODY2NzYzLCAtMTEuNzg0NzA3XSwgWzE0My4xMTU5NDcsIC0xMS45MDU2M10sIFsxNDMuMTU4NjMyLCAtMTIuMzI1NjU2XSwgWzE0My41MjIxMjQsIC0xMi44MzQzNThdLCBbMTQzLjU5NzE1OCwgLTEzLjQwMDQyMl0sIFsxNDMuNTYxODExLCAtMTMuNzYzNjU2XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJBVVMiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkF1c3RyYWxpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTYuOTc5NjY3LCA0OC4xMjM0OTddLCBbMTYuOTAzNzU0LCA0Ny43MTQ4NjZdLCBbMTYuMzQwNTg0LCA0Ny43MTI5MDJdLCBbMTYuNTM0MjY4LCA0Ny40OTYxNzFdLCBbMTYuMjAyMjk4LCA0Ni44NTIzODZdLCBbMTYuMDExNjY0LCA0Ni42ODM2MTFdLCBbMTUuMTM3MDkyLCA0Ni42NTg3MDNdLCBbMTQuNjMyNDcyLCA0Ni40MzE4MTddLCBbMTMuODA2NDc1LCA0Ni41MDkzMDZdLCBbMTIuMzc2NDg1LCA0Ni43Njc1NTldLCBbMTIuMTUzMDg4LCA0Ny4xMTUzOTNdLCBbMTEuMTY0ODI4LCA0Ni45NDE1NzldLCBbMTEuMDQ4NTU2LCA0Ni43NTEzNTldLCBbMTAuNDQyNzAxLCA0Ni44OTM1NDZdLCBbOS45MzI0NDgsIDQ2LjkyMDcyOF0sIFs5LjQ3OTk3LCA0Ny4xMDI4MV0sIFs5LjYzMjkzMiwgNDcuMzQ3NjAxXSwgWzkuNTk0MjI2LCA0Ny41MjUwNThdLCBbOS44OTYwNjgsIDQ3LjU4MDE5N10sIFsxMC40MDIwODQsIDQ3LjMwMjQ4OF0sIFsxMC41NDQ1MDQsIDQ3LjU2NjM5OV0sIFsxMS40MjY0MTQsIDQ3LjUyMzc2Nl0sIFsxMi4xNDEzNTcsIDQ3LjcwMzA4M10sIFsxMi42MjA3NiwgNDcuNjcyMzg4XSwgWzEyLjkzMjYyNywgNDcuNDY3NjQ2XSwgWzEzLjAyNTg1MSwgNDcuNjM3NTg0XSwgWzEyLjg4NDEwMywgNDguMjg5MTQ2XSwgWzEzLjI0MzM1NywgNDguNDE2MTE1XSwgWzEzLjU5NTk0NiwgNDguODc3MTcyXSwgWzE0LjMzODg5OCwgNDguNTU1MzA1XSwgWzE0LjkwMTQ0NywgNDguOTY0NDAyXSwgWzE1LjI1MzQxNiwgNDkuMDM5MDc0XSwgWzE2LjAyOTY0NywgNDguNzMzODk5XSwgWzE2LjQ5OTI4MywgNDguNzg1ODA4XSwgWzE2Ljk2MDI4OCwgNDguNTk2OTgyXSwgWzE2Ljg3OTk4MywgNDguNDcwMDEzXSwgWzE2Ljk3OTY2NywgNDguMTIzNDk3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJBVVQiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkF1c3RyaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1s0NS4wMDE5ODcsIDM5Ljc0MDAwNF0sIFs0NS4yOTgxNDUsIDM5LjQ3MTc1MV0sIFs0NS43Mzk5NzgsIDM5LjQ3Mzk5OV0sIFs0NS43MzUzNzksIDM5LjMxOTcxOV0sIFs0Ni4xNDM2MjMsIDM4Ljc0MTIwMV0sIFs0NS40NTc3MjIsIDM4Ljg3NDEzOV0sIFs0NC45NTI2ODgsIDM5LjMzNTc2NV0sIFs0NC43OTM5OSwgMzkuNzEzMDAzXSwgWzQ1LjAwMTk4NywgMzkuNzQwMDA0XV1dLCBbW1s0Ny4zNzMzMTUsIDQxLjIxOTczMl0sIFs0Ny44MTU2NjYsIDQxLjE1MTQxNl0sIFs0Ny45ODcyODMsIDQxLjQwNTgxOV0sIFs0OC41ODQzNTMsIDQxLjgwODg3XSwgWzQ5LjExMDI2NCwgNDEuMjgyMjg3XSwgWzQ5LjYxODkxNSwgNDAuNTcyOTI0XSwgWzUwLjA4NDgzLCA0MC41MjYxNTddLCBbNTAuMzkyODIxLCA0MC4yNTY1NjFdLCBbNDkuNTY5MjAyLCA0MC4xNzYxMDFdLCBbNDkuMzk1MjU5LCAzOS4zOTk0ODJdLCBbNDkuMjIzMjI4LCAzOS4wNDkyMTldLCBbNDguODU2NTMyLCAzOC44MTU0ODZdLCBbNDguODgzMjQ5LCAzOC4zMjAyNDVdLCBbNDguNjM0Mzc1LCAzOC4yNzAzNzhdLCBbNDguMDEwNzQ0LCAzOC43OTQwMTVdLCBbNDguMzU1NTI5LCAzOS4yODg3NjVdLCBbNDguMDYwMDk1LCAzOS41ODIyMzVdLCBbNDcuNjg1MDc5LCAzOS41MDgzNjRdLCBbNDYuNTA1NzIsIDM4Ljc3MDYwNV0sIFs0Ni40ODM0OTksIDM5LjQ2NDE1NV0sIFs0Ni4wMzQ1MzQsIDM5LjYyODAyMV0sIFs0NS42MTAwMTIsIDM5Ljg5OTk5NF0sIFs0NS44OTE5MDcsIDQwLjIxODQ3Nl0sIFs0NS4zNTkxNzUsIDQwLjU2MTUwNF0sIFs0NS41NjAzNTEsIDQwLjgxMjI5XSwgWzQ1LjE3OTQ5NiwgNDAuOTg1MzU0XSwgWzQ0Ljk3MjQ4LCA0MS4yNDgxMjldLCBbNDUuMjE3NDI2LCA0MS40MTE0NTJdLCBbNDUuOTYyNjAxLCA0MS4xMjM4NzNdLCBbNDYuNTAxNjM3LCA0MS4wNjQ0NDVdLCBbNDYuNjM3OTA4LCA0MS4xODE2NzNdLCBbNDYuMTQ1NDMyLCA0MS43MjI4MDJdLCBbNDYuNDA0OTUxLCA0MS44NjA2NzVdLCBbNDYuNjg2MDcxLCA0MS44MjcxMzddLCBbNDcuMzczMzE1LCA0MS4yMTk3MzJdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkFaRSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQXplcmJhaWphbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMjkuMzM5OTk4LCAtNC40OTk5ODNdLCBbMjkuMjc2Mzg0LCAtMy4yOTM5MDddLCBbMjkuMDI0OTI2LCAtMi44MzkyNThdLCBbMjkuNjMyMTc2LCAtMi45MTc4NThdLCBbMjkuOTM4MzU5LCAtMi4zNDg0ODddLCBbMzAuNDY5Njk2LCAtMi40MTM4NThdLCBbMzAuNTI3Njc3LCAtMi44MDc2MzJdLCBbMzAuNzQzMDEzLCAtMy4wMzQyODVdLCBbMzAuNzUyMjYzLCAtMy4zNTkzM10sIFszMC41MDU1NiwgLTMuNTY4NTY3XSwgWzMwLjExNjMzMywgLTQuMDkwMTM4XSwgWzI5Ljc1MzUxMiwgLTQuNDUyMzg5XSwgWzI5LjMzOTk5OCwgLTQuNDk5OTgzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCREkiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJ1cnVuZGkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzMuMzE0OTcxLCA1MS4zNDU3ODFdLCBbNC4wNDcwNzEsIDUxLjI2NzI1OV0sIFs0Ljk3Mzk5MSwgNTEuNDc1MDI0XSwgWzUuNjA2OTc2LCA1MS4wMzcyOThdLCBbNi4xNTY2NTgsIDUwLjgwMzcyMV0sIFs2LjA0MzA3MywgNTAuMTI4MDUyXSwgWzUuNzgyNDE3LCA1MC4wOTAzMjhdLCBbNS42NzQwNTIsIDQ5LjUyOTQ4NF0sIFs0Ljc5OTIyMiwgNDkuOTg1MzczXSwgWzQuMjg2MDIzLCA0OS45MDc0OTddLCBbMy41ODgxODQsIDUwLjM3ODk5Ml0sIFszLjEyMzI1MiwgNTAuNzgwMzYzXSwgWzIuNjU4NDIyLCA1MC43OTY4NDhdLCBbMi41MTM1NzMsIDUxLjE0ODUwNl0sIFszLjMxNDk3MSwgNTEuMzQ1NzgxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCRUwiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJlbGdpdW0iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzIuNjkxNzAyLCA2LjI1ODgxN10sIFsxLjg2NTI0MSwgNi4xNDIxNThdLCBbMS42MTg5NTEsIDYuODMyMDM4XSwgWzEuNjY0NDc4LCA5LjEyODU5XSwgWzEuNDYzMDQzLCA5LjMzNDYyNF0sIFsxLjQyNTA2MSwgOS44MjUzOTVdLCBbMS4wNzc3OTUsIDEwLjE3NTYwN10sIFswLjc3MjMzNiwgMTAuNDcwODA4XSwgWzAuODk5NTYzLCAxMC45OTczMzldLCBbMS4yNDM0NywgMTEuMTEwNTExXSwgWzEuNDQ3MTc4LCAxMS41NDc3MTldLCBbMS45MzU5ODYsIDExLjY0MTE1XSwgWzIuMTU0NDc0LCAxMS45NDAxNV0sIFsyLjQ5MDE2NCwgMTIuMjMzMDUyXSwgWzIuODQ4NjQzLCAxMi4yMzU2MzZdLCBbMy42MTExOCwgMTEuNjYwMTY3XSwgWzMuNTcyMjE2LCAxMS4zMjc5MzldLCBbMy43OTcxMTIsIDEwLjczNDc0Nl0sIFszLjYwMDA3LCAxMC4zMzIxODZdLCBbMy43MDU0MzgsIDEwLjA2MzIxXSwgWzMuMjIwMzUyLCA5LjQ0NDE1M10sIFsyLjkxMjMwOCwgOS4xMzc2MDhdLCBbMi43MjM3OTMsIDguNTA2ODQ1XSwgWzIuNzQ5MDYzLCA3Ljg3MDczNF0sIFsyLjY5MTcwMiwgNi4yNTg4MTddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkJFTiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQmVuaW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjgyNzQ5NiwgOS42NDI0NjFdLCBbLTMuNTExODk5LCA5LjkwMDMyNl0sIFstMy45ODA0NDksIDkuODYyMzQ0XSwgWy00LjMzMDI0NywgOS42MTA4MzVdLCBbLTQuNzc5ODg0LCA5LjgyMTk4NV0sIFstNC45NTQ2NTMsIDEwLjE1MjcxNF0sIFstNS40MDQzNDIsIDEwLjM3MDczN10sIFstNS40NzA1NjUsIDEwLjk1MTI3XSwgWy01LjE5Nzg0MywgMTEuMzc1MTQ2XSwgWy01LjIyMDk0MiwgMTEuNzEzODU5XSwgWy00LjQyNzE2NiwgMTIuNTQyNjQ2XSwgWy00LjI4MDQwNSwgMTMuMjI4NDQ0XSwgWy00LjAwNjM5MSwgMTMuNDcyNDg1XSwgWy0zLjUyMjgwMywgMTMuMzM3NjYyXSwgWy0zLjEwMzcwNywgMTMuNTQxMjY3XSwgWy0yLjk2NzY5NCwgMTMuNzk4MTVdLCBbLTIuMTkxODI1LCAxNC4yNDY0MThdLCBbLTIuMDAxMDM1LCAxNC41NTkwMDhdLCBbLTEuMDY2MzYzLCAxNC45NzM4MTVdLCBbLTAuNTE1ODU0LCAxNS4xMTYxNThdLCBbLTAuMjY2MjU3LCAxNC45MjQzMDldLCBbMC4zNzQ4OTIsIDE0LjkyODkwOF0sIFswLjI5NTY0NiwgMTQuNDQ0MjM1XSwgWzAuNDI5OTI4LCAxMy45ODg3MzNdLCBbMC45OTMwNDYsIDEzLjMzNTc1XSwgWzEuMDI0MTAzLCAxMi44NTE4MjZdLCBbMi4xNzcxMDgsIDEyLjYyNTAxOF0sIFsyLjE1NDQ3NCwgMTEuOTQwMTVdLCBbMS45MzU5ODYsIDExLjY0MTE1XSwgWzEuNDQ3MTc4LCAxMS41NDc3MTldLCBbMS4yNDM0NywgMTEuMTEwNTExXSwgWzAuODk5NTYzLCAxMC45OTczMzldLCBbMC4wMjM4MDMsIDExLjAxODY4Ml0sIFstMC40Mzg3MDIsIDExLjA5ODM0MV0sIFstMC43NjE1NzYsIDEwLjkzNjkzXSwgWy0xLjIwMzM1OCwgMTEuMDA5ODE5XSwgWy0yLjk0MDQwOSwgMTAuOTYyNjldLCBbLTIuOTYzODk2LCAxMC4zOTUzMzVdLCBbLTIuODI3NDk2LCA5LjY0MjQ2MV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQkZBIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCdXJraW5hIEZhc28iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzkyLjY3MjcyMSwgMjIuMDQxMjM5XSwgWzkyLjY1MjI1NywgMjEuMzI0MDQ4XSwgWzkyLjMwMzIzNCwgMjEuNDc1NDg1XSwgWzkyLjM2ODU1NCwgMjAuNjcwODgzXSwgWzkyLjA4Mjg4NiwgMjEuMTkyMTk1XSwgWzkyLjAyNTIxNSwgMjEuNzAxNTddLCBbOTEuODM0ODkxLCAyMi4xODI5MzZdLCBbOTEuNDE3MDg3LCAyMi43NjUwMTldLCBbOTAuNDk2MDA2LCAyMi44MDUwMTddLCBbOTAuNTg2OTU3LCAyMi4zOTI3OTRdLCBbOTAuMjcyOTcxLCAyMS44MzYzNjhdLCBbODkuODQ3NDY3LCAyMi4wMzkxNDZdLCBbODkuNzAyMDUsIDIxLjg1NzExNl0sIFs4OS40MTg4NjMsIDIxLjk2NjE3OV0sIFs4OS4wMzE5NjEsIDIyLjA1NTcwOF0sIFs4OC44NzYzMTIsIDIyLjg3OTE0Nl0sIFs4OC41Mjk3NywgMjMuNjMxMTQyXSwgWzg4LjY5OTk0LCAyNC4yMzM3MTVdLCBbODguMDg0NDIyLCAyNC41MDE2NTddLCBbODguMzA2MzczLCAyNC44NjYwNzldLCBbODguOTMxNTU0LCAyNS4yMzg2OTJdLCBbODguMjA5Nzg5LCAyNS43NjgwNjZdLCBbODguNTYzMDQ5LCAyNi40NDY1MjZdLCBbODkuMzU1MDk0LCAyNi4wMTQ0MDddLCBbODkuODMyNDgxLCAyNS45NjUwODJdLCBbODkuOTIwNjkzLCAyNS4yNjk3NV0sIFs5MC44NzIyMTEsIDI1LjEzMjYwMV0sIFs5MS43OTk1OTYsIDI1LjE0NzQzMl0sIFs5Mi4zNzYyMDIsIDI0Ljk3NjY5M10sIFs5MS45MTUwOTMsIDI0LjEzMDQxNF0sIFs5MS40Njc3MywgMjQuMDcyNjM5XSwgWzkxLjE1ODk2MywgMjMuNTAzNTI3XSwgWzkxLjcwNjQ3NSwgMjIuOTg1MjY0XSwgWzkxLjg2OTkyOCwgMjMuNjI0MzQ2XSwgWzkyLjE0NjAzNSwgMjMuNjI3NDk5XSwgWzkyLjY3MjcyMSwgMjIuMDQxMjM5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCR0QiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJhbmdsYWRlc2giLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzIyLjY1NzE1LCA0NC4yMzQ5MjNdLCBbMjIuOTQ0ODMyLCA0My44MjM3ODVdLCBbMjMuMzMyMzAyLCA0My44OTcwMTFdLCBbMjQuMTAwNjc5LCA0My43NDEwNTFdLCBbMjUuNTY5MjcyLCA0My42ODg0NDVdLCBbMjYuMDY1MTU5LCA0My45NDM0OTRdLCBbMjcuMjQyNCwgNDQuMTc1OTg2XSwgWzI3Ljk3MDEwNywgNDMuODEyNDY4XSwgWzI4LjU1ODA4MSwgNDMuNzA3NDYyXSwgWzI4LjAzOTA5NSwgNDMuMjkzMTcyXSwgWzI3LjY3Mzg5OCwgNDIuNTc3ODkyXSwgWzI3Ljk5NjcyLCA0Mi4wMDczNTldLCBbMjcuMTM1NzM5LCA0Mi4xNDE0ODVdLCBbMjYuMTE3MDQyLCA0MS44MjY5MDVdLCBbMjYuMTA2MTM4LCA0MS4zMjg4OTldLCBbMjUuMTk3MjAxLCA0MS4yMzQ0ODZdLCBbMjQuNDkyNjQ1LCA0MS41ODM4OTZdLCBbMjMuNjkyMDc0LCA0MS4zMDkwODFdLCBbMjIuOTUyMzc3LCA0MS4zMzc5OTRdLCBbMjIuODgxMzc0LCA0MS45OTkyOTddLCBbMjIuMzgwNTI2LCA0Mi4zMjAyNl0sIFsyMi41NDUwMTIsIDQyLjQ2MTM2Ml0sIFsyMi40MzY1OTUsIDQyLjU4MDMyMV0sIFsyMi42MDQ4MDEsIDQyLjg5ODUxOV0sIFsyMi45ODYwMTksIDQzLjIxMTE2MV0sIFsyMi41MDAxNTcsIDQzLjY0MjgxNF0sIFsyMi40MTA0NDYsIDQ0LjAwODA2M10sIFsyMi42NTcxNSwgNDQuMjM0OTIzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCR1IiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJ1bGdhcmlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbLTc3LjUzNDY2LCAyMy43NTk3NV0sIFstNzcuNzgsIDIzLjcxXSwgWy03OC4wMzQwNSwgMjQuMjg2MTVdLCBbLTc4LjQwODQ4LCAyNC41NzU2NF0sIFstNzguMTkwODcsIDI1LjIxMDNdLCBbLTc3Ljg5LCAyNS4xN10sIFstNzcuNTQsIDI0LjM0XSwgWy03Ny41MzQ2NiwgMjMuNzU5NzVdXV0sIFtbWy03Ny44MiwgMjYuNThdLCBbLTc4LjkxLCAyNi40Ml0sIFstNzguOTgsIDI2Ljc5XSwgWy03OC41MSwgMjYuODddLCBbLTc3Ljg1LCAyNi44NF0sIFstNzcuODIsIDI2LjU4XV1dLCBbW1stNzcsIDI2LjU5XSwgWy03Ny4xNzI1NSwgMjUuODc5MThdLCBbLTc3LjM1NjQxLCAyNi4wMDczNV0sIFstNzcuMzQsIDI2LjUzXSwgWy03Ny43ODgwMiwgMjYuOTI1MTZdLCBbLTc3Ljc5LCAyNy4wNF0sIFstNzcsIDI2LjU5XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJCSFMiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIlRoZSBCYWhhbWFzIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxOS4wMDU0ODYsIDQ0Ljg2MDIzNF0sIFsxOS4zNjgwMywgNDQuODYzXSwgWzE5LjExNzYxLCA0NC40MjMwN10sIFsxOS41OTk3NiwgNDQuMDM4NDddLCBbMTkuNDU0LCA0My41NjgxXSwgWzE5LjIxODUyLCA0My41MjM4NF0sIFsxOS4wMzE2NSwgNDMuNDMyNTNdLCBbMTguNzA2NDgsIDQzLjIwMDExXSwgWzE4LjU2LCA0Mi42NV0sIFsxNy42NzQ5MjIsIDQzLjAyODU2M10sIFsxNy4yOTczNzMsIDQzLjQ0NjM0MV0sIFsxNi45MTYxNTYsIDQzLjY2NzcyMl0sIFsxNi40NTY0NDMsIDQ0LjA0MTI0XSwgWzE2LjIzOTY2LCA0NC4zNTExNDNdLCBbMTUuNzUwMDI2LCA0NC44MTg3MTJdLCBbMTUuOTU5MzY3LCA0NS4yMzM3NzddLCBbMTYuMzE4MTU3LCA0NS4wMDQxMjddLCBbMTYuNTM0OTM5LCA0NS4yMTE2MDhdLCBbMTcuMDAyMTQ2LCA0NS4yMzM3NzddLCBbMTcuODYxNzgzLCA0NS4wNjc3NF0sIFsxOC41NTMyMTQsIDQ1LjA4MTU5XSwgWzE5LjAwNTQ4NiwgNDQuODYwMjM0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCSUgiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJvc25pYSBhbmQgSGVyemVnb3ZpbmEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzIzLjQ4NDEyOCwgNTMuOTEyNDk4XSwgWzI0LjQ1MDY4NCwgNTMuOTA1NzAyXSwgWzI1LjUzNjM1NCwgNTQuMjgyNDIzXSwgWzI1Ljc2ODQzMywgNTQuODQ2OTYzXSwgWzI2LjU4ODI3OSwgNTUuMTY3MTc2XSwgWzI2LjQ5NDMzMSwgNTUuNjE1MTA3XSwgWzI3LjEwMjQ2LCA1NS43ODMzMTRdLCBbMjguMTc2NzA5LCA1Ni4xNjkxM10sIFsyOS4yMjk1MTMsIDU1LjkxODM0NF0sIFsyOS4zNzE1NzIsIDU1LjY3MDA5MV0sIFsyOS44OTYyOTQsIDU1Ljc4OTQ2M10sIFszMC44NzM5MDksIDU1LjU1MDk3Nl0sIFszMC45NzE4MzYsIDU1LjA4MTU0OF0sIFszMC43NTc1MzQsIDU0LjgxMTc3MV0sIFszMS4zODQ0NzIsIDU0LjE1NzA1Nl0sIFszMS43OTE0MjQsIDUzLjk3NDYzOV0sIFszMS43MzEyNzMsIDUzLjc5NDAyOV0sIFszMi40MDU1OTksIDUzLjYxODA0NV0sIFszMi42OTM2NDMsIDUzLjM1MTQyMV0sIFszMi4zMDQ1MTksIDUzLjEzMjcyNl0sIFszMS40OTc2NDQsIDUzLjE2NzQyN10sIFszMS4zMDUyMDEsIDUzLjA3Mzk5Nl0sIFszMS41NDAwMTgsIDUyLjc0MjA1Ml0sIFszMS43ODU5OTgsIDUyLjEwMTY3OF0sIFszMC45Mjc1NDksIDUyLjA0MjM1M10sIFszMC42MTk0NTQsIDUxLjgyMjgwNl0sIFszMC41NTUxMTcsIDUxLjMxOTUwM10sIFszMC4xNTczNjQsIDUxLjQxNjEzOF0sIFsyOS4yNTQ5MzgsIDUxLjM2ODIzNF0sIFsyOC45OTI4MzUsIDUxLjYwMjA0NF0sIFsyOC42MTc2MTMsIDUxLjQyNzcxNF0sIFsyOC4yNDE2MTUsIDUxLjU3MjIyN10sIFsyNy40NTQwNjYsIDUxLjU5MjMwM10sIFsyNi4zMzc5NTksIDUxLjgzMjI4OV0sIFsyNS4zMjc3ODgsIDUxLjkxMDY1Nl0sIFsyNC41NTMxMDYsIDUxLjg4ODQ2MV0sIFsyNC4wMDUwNzgsIDUxLjYxNzQ0NF0sIFsyMy41MjcwNzEsIDUxLjU3ODQ1NF0sIFsyMy41MDgwMDIsIDUyLjAyMzY0N10sIFsyMy4xOTk0OTQsIDUyLjQ4Njk3N10sIFsyMy43OTkxOTksIDUyLjY5MTA5OV0sIFsyMy44MDQ5MzUsIDUzLjA4OTczMV0sIFsyMy41Mjc1MzYsIDUzLjQ3MDEyMl0sIFsyMy40ODQxMjgsIDUzLjkxMjQ5OF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQkxSIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCZWxhcnVzIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stODkuMTQzMDgsIDE3LjgwODMxOV0sIFstODkuMTUwOTA5LCAxNy45NTU0NjhdLCBbLTg5LjAyOTg1NywgMTguMDAxNTExXSwgWy04OC44NDgzNDQsIDE3Ljg4MzE5OF0sIFstODguNDkwMTIzLCAxOC40ODY4MzFdLCBbLTg4LjMwMDAzMSwgMTguNDk5OTgyXSwgWy04OC4yOTYzMzYsIDE4LjM1MzI3M10sIFstODguMTA2ODEzLCAxOC4zNDg2NzRdLCBbLTg4LjEyMzQ3OSwgMTguMDc2Njc1XSwgWy04OC4yODUzNTUsIDE3LjY0NDE0M10sIFstODguMTk3ODY3LCAxNy40ODk0NzVdLCBbLTg4LjMwMjY0MSwgMTcuMTMxNjk0XSwgWy04OC4yMzk1MTgsIDE3LjAzNjA2Nl0sIFstODguMzU1NDI4LCAxNi41MzA3NzRdLCBbLTg4LjU1MTgyNSwgMTYuMjY1NDY3XSwgWy04OC43MzI0MzQsIDE2LjIzMzYzNV0sIFstODguOTMwNjEzLCAxNS44ODcyNzNdLCBbLTg5LjIyOTEyMiwgMTUuODg2OTM4XSwgWy04OS4xNTA4MDYsIDE3LjAxNTU3N10sIFstODkuMTQzMDgsIDE3LjgwODMxOV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQkxaIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCZWxpemUiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy02Mi44NDY0NjgsIC0yMi4wMzQ5ODVdLCBbLTYzLjk4NjgzOCwgLTIxLjk5MzY0NF0sIFstNjQuMzc3MDIxLCAtMjIuNzk4MDkxXSwgWy02NC45NjQ4OTIsIC0yMi4wNzU4NjJdLCBbLTY2LjI3MzMzOSwgLTIxLjgzMjMxXSwgWy02Ny4xMDY2NzQsIC0yMi43MzU5MjVdLCBbLTY3LjgyODE4LCAtMjIuODcyOTE5XSwgWy02OC4yMTk5MTMsIC0yMS40OTQzNDddLCBbLTY4Ljc1NzE2NywgLTIwLjM3MjY1OF0sIFstNjguNDQyMjI1LCAtMTkuNDA1MDY4XSwgWy02OC45NjY4MTgsIC0xOC45ODE2ODNdLCBbLTY5LjEwMDI0NywgLTE4LjI2MDEyNV0sIFstNjkuNTkwNDI0LCAtMTcuNTgwMDEyXSwgWy02OC45NTk2MzUsIC0xNi41MDA2OThdLCBbLTY5LjM4OTc2NCwgLTE1LjY2MDEyOV0sIFstNjkuMTYwMzQ3LCAtMTUuMzIzOTc0XSwgWy02OS4zMzk1MzUsIC0xNC45NTMxOTVdLCBbLTY4Ljk0ODg4NywgLTE0LjQ1MzYzOV0sIFstNjguOTI5MjI0LCAtMTMuNjAyNjg0XSwgWy02OC44ODAwOCwgLTEyLjg5OTcyOV0sIFstNjguNjY1MDgsIC0xMi41NjEzXSwgWy02OS41Mjk2NzgsIC0xMC45NTE3MzRdLCBbLTY4Ljc4NjE1OCwgLTExLjAzNjM4XSwgWy02OC4yNzEyNTQsIC0xMS4wMTQ1MjFdLCBbLTY4LjA0ODE5MiwgLTEwLjcxMjA1OV0sIFstNjcuMTczODAxLCAtMTAuMzA2ODEyXSwgWy02Ni42NDY5MDgsIC05LjkzMTMzMV0sIFstNjUuMzM4NDM1LCAtOS43NjE5ODhdLCBbLTY1LjQ0NDgzNywgLTEwLjUxMTQ1MV0sIFstNjUuMzIxODk5LCAtMTAuODk1ODcyXSwgWy02NS40MDIyODEsIC0xMS41NjYyN10sIFstNjQuMzE2MzUzLCAtMTIuNDYxOTc4XSwgWy02My4xOTY0OTksIC0xMi42MjcwMzNdLCBbLTYyLjgwMzA2LCAtMTMuMDAwNjUzXSwgWy02Mi4xMjcwODEsIC0xMy4xOTg3ODFdLCBbLTYxLjcxMzIwNCwgLTEzLjQ4OTIwMl0sIFstNjEuMDg0MTIxLCAtMTMuNDc5Mzg0XSwgWy02MC41MDMzMDQsIC0xMy43NzU5NTVdLCBbLTYwLjQ1OTE5OCwgLTE0LjM1NDAwN10sIFstNjAuMjY0MzI2LCAtMTQuNjQ1OTc5XSwgWy02MC4yNTExNDksIC0xNS4wNzcyMTldLCBbLTYwLjU0Mjk2NiwgLTE1LjA5MzkxXSwgWy02MC4xNTgzOSwgLTE2LjI1ODI4NF0sIFstNTguMjQxMjIsIC0xNi4yOTk1NzNdLCBbLTU4LjM4ODA1OCwgLTE2Ljg3NzEwOV0sIFstNTguMjgwODA0LCAtMTcuMjcxNzFdLCBbLTU3LjczNDU1OCwgLTE3LjU1MjQ2OF0sIFstNTcuNDk4MzcxLCAtMTguMTc0MTg4XSwgWy01Ny42NzYwMDksIC0xOC45NjE4NF0sIFstNTcuOTQ5OTk3LCAtMTkuNDAwMDA0XSwgWy01Ny44NTM4MDIsIC0xOS45Njk5OTVdLCBbLTU4LjE2NjM5MiwgLTIwLjE3NjcwMV0sIFstNTguMTgzNDcxLCAtMTkuODY4Mzk5XSwgWy01OS4xMTUwNDIsIC0xOS4zNTY5MDZdLCBbLTYwLjA0MzU2NSwgLTE5LjM0Mjc0N10sIFstNjEuNzg2MzI2LCAtMTkuNjMzNzM3XSwgWy02Mi4yNjU5NjEsIC0yMC41MTM3MzVdLCBbLTYyLjI5MTE3OSwgLTIxLjA1MTYzNV0sIFstNjIuNjg1MDU3LCAtMjIuMjQ5MDI5XSwgWy02Mi44NDY0NjgsIC0yMi4wMzQ5ODVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkJPTCIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQm9saXZpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZmZmYjIiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTU3LjYyNTEzMywgLTMwLjIxNjI5NV0sIFstNTYuMjkwOSwgLTI4Ljg1Mjc2MV0sIFstNTUuMTYyMjg2LCAtMjcuODgxOTE1XSwgWy01NC40OTA3MjUsIC0yNy40NzQ3NTddLCBbLTUzLjY0ODczNSwgLTI2LjkyMzQ3M10sIFstNTMuNjI4MzQ5LCAtMjYuMTI0ODY1XSwgWy01NC4xMzAwNSwgLTI1LjU0NzYzOV0sIFstNTQuNjI1MjkxLCAtMjUuNzM5MjU1XSwgWy01NC40Mjg5NDYsIC0yNS4xNjIxODVdLCBbLTU0LjI5MzQ3NiwgLTI0LjU3MDhdLCBbLTU0LjI5Mjk2LCAtMjQuMDIxMDE0XSwgWy01NC42NTI4MzQsIC0yMy44Mzk1NzhdLCBbLTU1LjAyNzkwMiwgLTI0LjAwMTI3NF0sIFstNTUuNDAwNzQ3LCAtMjMuOTU2OTM1XSwgWy01NS41MTc2MzksIC0yMy41NzE5OThdLCBbLTU1LjYxMDY4MywgLTIyLjY1NTYxOV0sIFstNTUuNzk3OTU4LCAtMjIuMzU2OTNdLCBbLTU2LjQ3MzMxNywgLTIyLjA4NjNdLCBbLTU2Ljg4MTUxLCAtMjIuMjgyMTU0XSwgWy01Ny45MzcxNTYsIC0yMi4wOTAxNzZdLCBbLTU3Ljg3MDY3NCwgLTIwLjczMjY4OF0sIFstNTguMTY2MzkyLCAtMjAuMTc2NzAxXSwgWy01Ny44NTM4MDIsIC0xOS45Njk5OTVdLCBbLTU3Ljk0OTk5NywgLTE5LjQwMDAwNF0sIFstNTcuNjc2MDA5LCAtMTguOTYxODRdLCBbLTU3LjQ5ODM3MSwgLTE4LjE3NDE4OF0sIFstNTcuNzM0NTU4LCAtMTcuNTUyNDY4XSwgWy01OC4yODA4MDQsIC0xNy4yNzE3MV0sIFstNTguMzg4MDU4LCAtMTYuODc3MTA5XSwgWy01OC4yNDEyMiwgLTE2LjI5OTU3M10sIFstNjAuMTU4MzksIC0xNi4yNTgyODRdLCBbLTYwLjU0Mjk2NiwgLTE1LjA5MzkxXSwgWy02MC4yNTExNDksIC0xNS4wNzcyMTldLCBbLTYwLjI2NDMyNiwgLTE0LjY0NTk3OV0sIFstNjAuNDU5MTk4LCAtMTQuMzU0MDA3XSwgWy02MC41MDMzMDQsIC0xMy43NzU5NTVdLCBbLTYxLjA4NDEyMSwgLTEzLjQ3OTM4NF0sIFstNjEuNzEzMjA0LCAtMTMuNDg5MjAyXSwgWy02Mi4xMjcwODEsIC0xMy4xOTg3ODFdLCBbLTYyLjgwMzA2LCAtMTMuMDAwNjUzXSwgWy02My4xOTY0OTksIC0xMi42MjcwMzNdLCBbLTY0LjMxNjM1MywgLTEyLjQ2MTk3OF0sIFstNjUuNDAyMjgxLCAtMTEuNTY2MjddLCBbLTY1LjMyMTg5OSwgLTEwLjg5NTg3Ml0sIFstNjUuNDQ0ODM3LCAtMTAuNTExNDUxXSwgWy02NS4zMzg0MzUsIC05Ljc2MTk4OF0sIFstNjYuNjQ2OTA4LCAtOS45MzEzMzFdLCBbLTY3LjE3MzgwMSwgLTEwLjMwNjgxMl0sIFstNjguMDQ4MTkyLCAtMTAuNzEyMDU5XSwgWy02OC4yNzEyNTQsIC0xMS4wMTQ1MjFdLCBbLTY4Ljc4NjE1OCwgLTExLjAzNjM4XSwgWy02OS41Mjk2NzgsIC0xMC45NTE3MzRdLCBbLTcwLjA5Mzc1MiwgLTExLjEyMzk3Ml0sIFstNzAuNTQ4Njg2LCAtMTEuMDA5MTQ3XSwgWy03MC40ODE4OTQsIC05LjQ5MDExOF0sIFstNzEuMzAyNDEyLCAtMTAuMDc5NDM2XSwgWy03Mi4xODQ4OTEsIC0xMC4wNTM1OThdLCBbLTcyLjU2MzAzMywgLTkuNTIwMTk0XSwgWy03My4yMjY3MTMsIC05LjQ2MjIxM10sIFstNzMuMDE1MzgzLCAtOS4wMzI4MzNdLCBbLTczLjU3MTA1OSwgLTguNDI0NDQ3XSwgWy03My45ODcyMzUsIC03LjUyMzgzXSwgWy03My43MjM0MDEsIC03LjM0MDk5OV0sIFstNzMuNzI0NDg3LCAtNi45MTg1OTVdLCBbLTczLjEyMDAyNywgLTYuNjI5OTMxXSwgWy03My4yMTk3MTEsIC02LjA4OTE4OV0sIFstNzIuOTY0NTA3LCAtNS43NDEyNTFdLCBbLTcyLjg5MTkyOCwgLTUuMjc0NTYxXSwgWy03MS43NDg0MDYsIC00LjU5Mzk4M10sIFstNzAuOTI4ODQzLCAtNC40MDE1OTFdLCBbLTcwLjc5NDc2OSwgLTQuMjUxMjY1XSwgWy02OS44OTM2MzUsIC00LjI5ODE4N10sIFstNjkuNDQ0MTAyLCAtMS41NTYyODddLCBbLTY5LjQyMDQ4NiwgLTEuMTIyNjE5XSwgWy02OS41NzcwNjUsIC0wLjU0OTk5Ml0sIFstNzAuMDIwNjU2LCAtMC4xODUxNTZdLCBbLTcwLjAxNTU2NiwgMC41NDE0MTRdLCBbLTY5LjQ1MjM5NiwgMC43MDYxNTldLCBbLTY5LjI1MjQzNCwgMC42MDI2NTFdLCBbLTY5LjIxODYzOCwgMC45ODU2NzddLCBbLTY5LjgwNDU5NywgMS4wODkwODFdLCBbLTY5LjgxNjk3MywgMS43MTQ4MDVdLCBbLTY3Ljg2ODU2NSwgMS42OTI0NTVdLCBbLTY3LjUzNzgxLCAyLjAzNzE2M10sIFstNjcuMjU5OTk4LCAxLjcxOTk5OV0sIFstNjcuMDY1MDQ4LCAxLjEzMDExMl0sIFstNjYuODc2MzI2LCAxLjI1MzM2MV0sIFstNjYuMzI1NzY1LCAwLjcyNDQ1Ml0sIFstNjUuNTQ4MjY3LCAwLjc4OTI1NF0sIFstNjUuMzU0NzEzLCAxLjA5NTI4Ml0sIFstNjQuNjExMDEyLCAxLjMyODczMV0sIFstNjQuMTk5MzA2LCAxLjQ5Mjg1NV0sIFstNjQuMDgzMDg1LCAxLjkxNjM2OV0sIFstNjMuMzY4Nzg4LCAyLjIwMDldLCBbLTYzLjQyMjg2NywgMi40MTEwNjhdLCBbLTY0LjI2OTk5OSwgMi40OTcwMDZdLCBbLTY0LjQwODgyOCwgMy4xMjY3ODZdLCBbLTY0LjM2ODQ5NCwgMy43OTcyMV0sIFstNjQuODE2MDY0LCA0LjA1NjQ0NV0sIFstNjQuNjI4NjU5LCA0LjE0ODQ4MV0sIFstNjMuODg4MzQzLCA0LjAyMDUzXSwgWy02My4wOTMxOTgsIDMuNzcwNTcxXSwgWy02Mi44MDQ1MzMsIDQuMDA2OTY1XSwgWy02Mi4wODU0MywgNC4xNjIxMjRdLCBbLTYwLjk2Njg5MywgNC41MzY0NjhdLCBbLTYwLjYwMTE3OSwgNC45MTgwOThdLCBbLTYwLjczMzU3NCwgNS4yMDAyNzddLCBbLTYwLjIxMzY4MywgNS4yNDQ0ODZdLCBbLTU5Ljk4MDk1OSwgNS4wMTQwNjFdLCBbLTYwLjExMTAwMiwgNC41NzQ5NjddLCBbLTU5Ljc2NzQwNiwgNC40MjM1MDNdLCBbLTU5LjUzODA0LCAzLjk1ODgwM10sIFstNTkuODE1NDEzLCAzLjYwNjQ5OV0sIFstNTkuOTc0NTI1LCAyLjc1NTIzM10sIFstNTkuNzE4NTQ2LCAyLjI0OTYzXSwgWy01OS42NDYwNDQsIDEuNzg2ODk0XSwgWy01OS4wMzA4NjIsIDEuMzE3Njk4XSwgWy01OC41NDAwMTMsIDEuMjY4MDg4XSwgWy01OC40Mjk0NzcsIDEuNDYzOTQyXSwgWy01OC4xMTM0NSwgMS41MDcxOTVdLCBbLTU3LjY2MDk3MSwgMS42ODI1ODVdLCBbLTU3LjMzNTgyMywgMS45NDg1MzhdLCBbLTU2Ljc4MjcwNCwgMS44NjM3MTFdLCBbLTU2LjUzOTM4NiwgMS44OTk1MjNdLCBbLTU1Ljk5NTY5OCwgMS44MTc2NjddLCBbLTU1LjkwNTYsIDIuMDIxOTk2XSwgWy01Ni4wNzMzNDIsIDIuMjIwNzk1XSwgWy01NS45NzMzMjIsIDIuNTEwMzY0XSwgWy01NS41Njk3NTUsIDIuNDIxNTA2XSwgWy01NS4wOTc1ODcsIDIuNTIzNzQ4XSwgWy01NC41MjQ3NTQsIDIuMzExODQ5XSwgWy01NC4wODgwNjMsIDIuMTA1NTU3XSwgWy01My43Nzg1MjEsIDIuMzc2NzAzXSwgWy01My41NTQ4MzksIDIuMzM0ODk3XSwgWy01My40MTg0NjUsIDIuMDUzMzg5XSwgWy01Mi45Mzk2NTcsIDIuMTI0ODU4XSwgWy01Mi41NTY0MjUsIDIuNTA0NzA1XSwgWy01Mi4yNDkzMzgsIDMuMjQxMDk0XSwgWy01MS42NTc3OTcsIDQuMTU2MjMyXSwgWy01MS4zMTcxNDYsIDQuMjAzNDkxXSwgWy01MS4wNjk3NzEsIDMuNjUwMzk4XSwgWy01MC41MDg4NzUsIDEuOTAxNTY0XSwgWy00OS45NzQwNzYsIDEuNzM2NDgzXSwgWy00OS45NDcxMDEsIDEuMDQ2MTldLCBbLTUwLjY5OTI1MSwgMC4yMjI5ODRdLCBbLTUwLjM4ODIxMSwgLTAuMDc4NDQ1XSwgWy00OC42MjA1NjcsIC0wLjIzNTQ4OV0sIFstNDguNTg0NDk3LCAtMS4yMzc4MDVdLCBbLTQ3LjgyNDk1NiwgLTAuNTgxNjE4XSwgWy00Ni41NjY1ODQsIC0wLjk0MTAyOF0sIFstNDQuOTA1NzAzLCAtMS41NTE3NF0sIFstNDQuNDE3NjE5LCAtMi4xMzc3NV0sIFstNDQuNTgxNTg5LCAtMi42OTEzMDhdLCBbLTQzLjQxODc5MSwgLTIuMzgzMTFdLCBbLTQxLjQ3MjY1NywgLTIuOTEyMDE4XSwgWy0zOS45Nzg2NjUsIC0yLjg3MzA1NF0sIFstMzguNTAwMzgzLCAtMy43MDA2NTJdLCBbLTM3LjIyMzI1MiwgLTQuODIwOTQ2XSwgWy0zNi40NTI5MzcsIC01LjEwOTQwNF0sIFstMzUuNTk3Nzk2LCAtNS4xNDk1MDRdLCBbLTM1LjIzNTM4OSwgLTUuNDY0OTM3XSwgWy0zNC44OTYwMywgLTYuNzM4MTkzXSwgWy0zNC43Mjk5OTMsIC03LjM0MzIyMV0sIFstMzUuMTI4MjEyLCAtOC45OTY0MDFdLCBbLTM1LjYzNjk2NywgLTkuNjQ5MjgyXSwgWy0zNy4wNDY1MTksIC0xMS4wNDA3MjFdLCBbLTM3LjY4MzYxMiwgLTEyLjE3MTE5NV0sIFstMzguNDIzODc3LCAtMTMuMDM4MTE5XSwgWy0zOC42NzM4ODcsIC0xMy4wNTc2NTJdLCBbLTM4Ljk1MzI3NiwgLTEzLjc5MzM3XSwgWy0zOC44ODIyOTgsIC0xNS42NjcwNTRdLCBbLTM5LjE2MTA5MiwgLTE3LjIwODQwN10sIFstMzkuMjY3MzM5LCAtMTcuODY3NzQ2XSwgWy0zOS41ODM1MjEsIC0xOC4yNjIyOTZdLCBbLTM5Ljc2MDgyMywgLTE5LjU5OTExM10sIFstNDAuNzc0NzQxLCAtMjAuOTA0NTEyXSwgWy00MC45NDQ3NTYsIC0yMS45MzczMTddLCBbLTQxLjc1NDE2NCwgLTIyLjM3MDY3Nl0sIFstNDEuOTg4Mjg0LCAtMjIuOTcwMDddLCBbLTQzLjA3NDcwNCwgLTIyLjk2NzY5M10sIFstNDQuNjQ3ODEyLCAtMjMuMzUxOTU5XSwgWy00NS4zNTIxMzYsIC0yMy43OTY4NDJdLCBbLTQ2LjQ3MjA5MywgLTI0LjA4ODk2OV0sIFstNDcuNjQ4OTcyLCAtMjQuODg1MTk5XSwgWy00OC40OTU0NTgsIC0yNS44NzcwMjVdLCBbLTQ4LjY0MTAwNSwgLTI2LjYyMzY5OF0sIFstNDguNDc0NzM2LCAtMjcuMTc1OTEyXSwgWy00OC42NjE1MiwgLTI4LjE4NjEzNV0sIFstNDguODg4NDU3LCAtMjguNjc0MTE1XSwgWy00OS41ODczMjksIC0yOS4yMjQ0NjldLCBbLTUwLjY5Njg3NCwgLTMwLjk4NDQ2NV0sIFstNTEuNTc2MjI2LCAtMzEuNzc3Njk4XSwgWy01Mi4yNTYwODEsIC0zMi4yNDUzN10sIFstNTIuNzEyMSwgLTMzLjE5NjU3OF0sIFstNTMuMzczNjYyLCAtMzMuNzY4Mzc4XSwgWy01My42NTA1NDQsIC0zMy4yMDIwMDRdLCBbLTUzLjIwOTU4OSwgLTMyLjcyNzY2Nl0sIFstNTMuNzg3OTUyLCAtMzIuMDQ3MjQzXSwgWy01NC41NzI0NTIsIC0zMS40OTQ1MTFdLCBbLTU1LjYwMTUxLCAtMzAuODUzODc5XSwgWy01NS45NzMyNDUsIC0zMC44ODMwNzZdLCBbLTU2Ljk3NjAyNiwgLTMwLjEwOTY4Nl0sIFstNTcuNjI1MTMzLCAtMzAuMjE2Mjk1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCUkEiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJyYXppbCIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTE0LjIwNDAxNywgNC41MjU4NzRdLCBbMTE0LjU5OTk2MSwgNC45MDAwMTFdLCBbMTE1LjQ1MDcxLCA1LjQ0NzczXSwgWzExNS40MDU3LCA0Ljk1NTIyOF0sIFsxMTUuMzQ3NDYxLCA0LjMxNjYzNl0sIFsxMTQuODY5NTU3LCA0LjM0ODMxNF0sIFsxMTQuNjU5NTk2LCA0LjAwNzYzN10sIFsxMTQuMjA0MDE3LCA0LjUyNTg3NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQlJOIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCcnVuZWkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzkxLjY5NjY1NywgMjcuNzcxNzQyXSwgWzkyLjEwMzcxMiwgMjcuNDUyNjE0XSwgWzkyLjAzMzQ4NCwgMjYuODM4MzFdLCBbOTEuMjE3NTEzLCAyNi44MDg2NDhdLCBbOTAuMzczMjc1LCAyNi44NzU3MjRdLCBbODkuNzQ0NTI4LCAyNi43MTk0MDNdLCBbODguODM1NjQzLCAyNy4wOTg5NjZdLCBbODguODE0MjQ4LCAyNy4yOTkzMTZdLCBbODkuNDc1ODEsIDI4LjA0Mjc1OV0sIFs5MC4wMTU4MjksIDI4LjI5NjQzOV0sIFs5MC43MzA1MTQsIDI4LjA2NDk1NF0sIFs5MS4yNTg4NTQsIDI4LjA0MDYxNF0sIFs5MS42OTY2NTcsIDI3Ljc3MTc0Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQlROIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCaHV0YW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzI1LjY0OTE2MywgLTE4LjUzNjAyNl0sIFsyNS44NTAzOTEsIC0xOC43MTQ0MTNdLCBbMjYuMTY0NzkxLCAtMTkuMjkzMDg2XSwgWzI3LjI5NjUwNSwgLTIwLjM5MTUyXSwgWzI3LjcyNDc0NywgLTIwLjQ5OTA1OV0sIFsyNy43MjcyMjgsIC0yMC44NTE4MDJdLCBbMjguMDIxMzcsIC0yMS40ODU5NzVdLCBbMjguNzk0NjU2LCAtMjEuNjM5NDU0XSwgWzI5LjQzMjE4OCwgLTIyLjA5MTMxM10sIFsyOC4wMTcyMzYsIC0yMi44Mjc3NTRdLCBbMjcuMTE5NDEsIC0yMy41NzQzMjNdLCBbMjYuNzg2NDA3LCAtMjQuMjQwNjkxXSwgWzI2LjQ4NTc1MywgLTI0LjYxNjMyN10sIFsyNS45NDE2NTIsIC0yNC42OTYzNzNdLCBbMjUuNzY1ODQ5LCAtMjUuMTc0ODQ1XSwgWzI1LjY2NDY2NiwgLTI1LjQ4NjgxNl0sIFsyNS4wMjUxNzEsIC0yNS43MTk2N10sIFsyNC4yMTEyNjcsIC0yNS42NzAyMTZdLCBbMjMuNzMzNTcsIC0yNS4zOTAxMjldLCBbMjMuMzEyMDk3LCAtMjUuMjY4NjldLCBbMjIuODI0MjcxLCAtMjUuNTAwNDU5XSwgWzIyLjU3OTUzMiwgLTI1Ljk3OTQ0OF0sIFsyMi4xMDU5NjksIC0yNi4yODAyNTZdLCBbMjEuNjA1ODk2LCAtMjYuNzI2NTM0XSwgWzIwLjg4OTYwOSwgLTI2LjgyODU0M10sIFsyMC42NjY0NywgLTI2LjQ3NzQ1M10sIFsyMC43NTg2MDksIC0yNS44NjgxMzZdLCBbMjAuMTY1NzI2LCAtMjQuOTE3OTYyXSwgWzE5Ljg5NTc2OCwgLTI0Ljc2Nzc5XSwgWzE5Ljg5NTQ1OCwgLTIxLjg0OTE1N10sIFsyMC44ODExMzQsIC0yMS44MTQzMjddLCBbMjAuOTEwNjQxLCAtMTguMjUyMjE5XSwgWzIxLjY1NTA0LCAtMTguMjE5MTQ2XSwgWzIzLjE5Njg1OCwgLTE3Ljg2OTAzOF0sIFsyMy41NzkwMDYsIC0xOC4yODEyNjFdLCBbMjQuMjE3MzY1LCAtMTcuODg5MzQ3XSwgWzI0LjUyMDcwNSwgLTE3Ljg4NzEyNV0sIFsyNS4wODQ0NDMsIC0xNy42NjE4MTZdLCBbMjUuMjY0MjI2LCAtMTcuNzM2NTRdLCBbMjUuNjQ5MTYzLCAtMTguNTM2MDI2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCV0EiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJvdHN3YW5hIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxNS4yNzk0NiwgNy40MjE5MjVdLCBbMTYuMTA2MjMyLCA3LjQ5NzA4OF0sIFsxNi4yOTA1NjIsIDcuNzU0MzA3XSwgWzE2LjQ1NjE4NSwgNy43MzQ3NzRdLCBbMTYuNzA1OTg4LCA3LjUwODMyOF0sIFsxNy45NjQ5MywgNy44OTA5MTRdLCBbMTguMzg5NTU1LCA4LjI4MTMwNF0sIFsxOC45MTEwMjIsIDguNjMwODk1XSwgWzE4LjgxMjAxLCA4Ljk4MjkxNV0sIFsxOS4wOTQwMDgsIDkuMDc0ODQ3XSwgWzIwLjA1OTY4NSwgOS4wMTI3MDZdLCBbMjEuMDAwODY4LCA5LjQ3NTk4NV0sIFsyMS43MjM4MjIsIDEwLjU2NzA1Nl0sIFsyMi4yMzExMjksIDEwLjk3MTg4OV0sIFsyMi44NjQxNjUsIDExLjE0MjM5NV0sIFsyMi45Nzc1NDQsIDEwLjcxNDQ2M10sIFsyMy41NTQzMDQsIDEwLjA4OTI1NV0sIFsyMy41NTcyNSwgOS42ODEyMThdLCBbMjMuMzk0Nzc5LCA5LjI2NTA2OF0sIFsyMy40NTkwMTMsIDguOTU0Mjg2XSwgWzIzLjgwNTgxMywgOC42NjYzMTldLCBbMjQuNTY3MzY5LCA4LjIyOTE4OF0sIFsyNS4xMTQ5MzIsIDcuODI1MTA0XSwgWzI1LjEyNDEzMSwgNy41MDAwODVdLCBbMjUuNzk2NjQ4LCA2Ljk3OTMxNl0sIFsyNi4yMTM0MTgsIDYuNTQ2NjAzXSwgWzI2LjQ2NTkwOSwgNS45NDY3MTddLCBbMjcuMjEzNDA5LCA1LjU1MDk1M10sIFsyNy4zNzQyMjYsIDUuMjMzOTQ0XSwgWzI3LjA0NDA2NSwgNS4xMjc4NTNdLCBbMjYuNDAyNzYxLCA1LjE1MDg3NV0sIFsyNS42NTA0NTUsIDUuMjU2MDg4XSwgWzI1LjI3ODc5OCwgNS4xNzA0MDhdLCBbMjUuMTI4ODMzLCA0LjkyNzI0NV0sIFsyNC44MDUwMjksIDQuODk3MjQ3XSwgWzI0LjQxMDUzMSwgNS4xMDg3ODRdLCBbMjMuMjk3MjE0LCA0LjYwOTY5M10sIFsyMi44NDE0OCwgNC43MTAxMjZdLCBbMjIuNzA0MTI0LCA0LjYzMzA1MV0sIFsyMi40MDUxMjQsIDQuMDI5MTZdLCBbMjEuNjU5MTIzLCA0LjIyNDM0Ml0sIFsyMC45Mjc1OTEsIDQuMzIyNzg2XSwgWzIwLjI5MDY3OSwgNC42OTE2NzhdLCBbMTkuNDY3Nzg0LCA1LjAzMTUyOF0sIFsxOC45MzIzMTIsIDQuNzA5NTA2XSwgWzE4LjU0Mjk4MiwgNC4yMDE3ODVdLCBbMTguNDUzMDY1LCAzLjUwNDM4Nl0sIFsxNy44MDk5LCAzLjU2MDE5Nl0sIFsxNy4xMzMwNDIsIDMuNzI4MTk3XSwgWzE2LjUzNzA1OCwgMy4xOTgyNTVdLCBbMTYuMDEyODUyLCAyLjI2NzY0XSwgWzE1LjkwNzM4MSwgMi41NTczODldLCBbMTUuODYyNzMyLCAzLjAxMzUzN10sIFsxNS40MDUzOTYsIDMuMzM1MzAxXSwgWzE1LjAzNjIyLCAzLjg1MTM2N10sIFsxNC45NTA5NTMsIDQuMjEwMzg5XSwgWzE0LjQ3ODM3MiwgNC43MzI2MDVdLCBbMTQuNTU4OTM2LCA1LjAzMDU5OF0sIFsxNC40NTk0MDcsIDUuNDUxNzYxXSwgWzE0LjUzNjU2LCA2LjIyNjk1OV0sIFsxNC43NzY1NDUsIDYuNDA4NDk4XSwgWzE1LjI3OTQ2LCA3LjQyMTkyNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ0FGIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDZW50cmFsIEFmcmljYW4gUmVwdWJsaWMiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1stNjMuNjY0NSwgNDYuNTUwMDFdLCBbLTYyLjkzOTMsIDQ2LjQxNTg3XSwgWy02Mi4wMTIwOCwgNDYuNDQzMTRdLCBbLTYyLjUwMzkxLCA0Ni4wMzMzOV0sIFstNjIuODc0MzMsIDQ1Ljk2ODE4XSwgWy02NC4xNDI4LCA0Ni4zOTI2NV0sIFstNjQuMzkyNjEsIDQ2LjcyNzQ3XSwgWy02NC4wMTQ4NiwgNDcuMDM2MDFdLCBbLTYzLjY2NDUsIDQ2LjU1MDAxXV1dLCBbW1stNjEuODA2MzA1LCA0OS4xMDUwNl0sIFstNjIuMjkzMTgsIDQ5LjA4NzE3XSwgWy02My41ODkyNiwgNDkuNDAwNjldLCBbLTY0LjUxOTEyLCA0OS44NzMwNF0sIFstNjQuMTczMjIsIDQ5Ljk1NzE4XSwgWy02Mi44NTgyOSwgNDkuNzA2NDFdLCBbLTYxLjgzNTU4NSwgNDkuMjg4NTVdLCBbLTYxLjgwNjMwNSwgNDkuMTA1MDZdXV0sIFtbWy0xMjMuNTEwMDAyLCA0OC41MTAwMTFdLCBbLTEyNC4wMTI4OTEsIDQ4LjM3MDg0Nl0sIFstMTI1LjY1NTAxMywgNDguODI1MDA1XSwgWy0xMjUuOTU0OTk0LCA0OS4xNzk5OTZdLCBbLTEyNi44NTAwMDQsIDQ5LjUzXSwgWy0xMjcuMDI5OTkzLCA0OS44MTQ5OTZdLCBbLTEyOC4wNTkzMzYsIDQ5Ljk5NDk1OV0sIFstMTI4LjQ0NDU4NCwgNTAuNTM5MTM4XSwgWy0xMjguMzU4NDE0LCA1MC43NzA2NDhdLCBbLTEyNy4zMDg1ODEsIDUwLjU1MjU3NF0sIFstMTI2LjY5NTAwMSwgNTAuNDAwOTAzXSwgWy0xMjUuNzU1MDA3LCA1MC4yOTUwMThdLCBbLTEyNS40MTUwMDIsIDQ5Ljk1MDAwMV0sIFstMTI0LjkyMDc2OCwgNDkuNDc1Mjc1XSwgWy0xMjMuOTIyNTA5LCA0OS4wNjI0ODRdLCBbLTEyMy41MTAwMDIsIDQ4LjUxMDAxMV1dXSwgW1tbLTU2LjEzNDAzNiwgNTAuNjg3MDFdLCBbLTU2Ljc5NTg4MiwgNDkuODEyMzA5XSwgWy01Ni4xNDMxMDUsIDUwLjE1MDExN10sIFstNTUuNDcxNDkyLCA0OS45MzU4MTVdLCBbLTU1LjgyMjQwMSwgNDkuNTg3MTI5XSwgWy01NC45MzUxNDMsIDQ5LjMxMzAxMV0sIFstNTQuNDczNzc1LCA0OS41NTY2OTFdLCBbLTUzLjQ3NjU0OSwgNDkuMjQ5MTM5XSwgWy01My43ODYwMTQsIDQ4LjUxNjc4MV0sIFstNTMuMDg2MTM0LCA0OC42ODc4MDRdLCBbLTUyLjk1ODY0OCwgNDguMTU3MTY0XSwgWy01Mi42NDgwOTksIDQ3LjUzNTU0OF0sIFstNTMuMDY5MTU4LCA0Ni42NTU0OTldLCBbLTUzLjUyMTQ1NiwgNDYuNjE4MjkyXSwgWy01NC4xNzg5MzYsIDQ2LjgwNzA2Nl0sIFstNTMuOTYxODY5LCA0Ny42MjUyMDddLCBbLTU0LjI0MDQ4MiwgNDcuNzUyMjc5XSwgWy01NS40MDA3NzMsIDQ2Ljg4NDk5NF0sIFstNTUuOTk3NDgxLCA0Ni45MTk3Ml0sIFstNTUuMjkxMjE5LCA0Ny4zODk1NjJdLCBbLTU2LjI1MDc5OSwgNDcuNjMyNTQ1XSwgWy01Ny4zMjUyMjksIDQ3LjU3MjgwN10sIFstNTkuMjY2MDE1LCA0Ny42MDMzNDhdLCBbLTU5LjQxOTQ5NCwgNDcuODk5NDU0XSwgWy01OC43OTY1ODYsIDQ4LjI1MTUyNV0sIFstNTkuMjMxNjI1LCA0OC41MjMxODhdLCBbLTU4LjM5MTgwNSwgNDkuMTI1NTgxXSwgWy01Ny4zNTg2OSwgNTAuNzE4Mjc0XSwgWy01Ni43Mzg2NSwgNTEuMjg3NDM4XSwgWy01NS44NzA5NzcsIDUxLjYzMjA5NF0sIFstNTUuNDA2OTc0LCA1MS41ODgyNzNdLCBbLTU1LjYwMDIxOCwgNTEuMzE3MDc1XSwgWy01Ni4xMzQwMzYsIDUwLjY4NzAxXV1dLCBbW1stMTMyLjcxMDAwOCwgNTQuMDQwMDA5XSwgWy0xMzIuNzEwMDA5LCA1NC4wNDAwMDldLCBbLTEzMi43MTAwMDgsIDU0LjA0MDAwOV0sIFstMTMyLjcxMDAwOCwgNTQuMDQwMDA5XSwgWy0xMzEuNzQ5OTksIDU0LjEyMDAwNF0sIFstMTMyLjA0OTQ4LCA1Mi45ODQ2MjFdLCBbLTEzMS4xNzkwNDMsIDUyLjE4MDQzM10sIFstMTMxLjU3NzgzLCA1Mi4xODIzNzFdLCBbLTEzMi4xODA0MjgsIDUyLjYzOTcwN10sIFstMTMyLjU0OTk5MiwgNTMuMTAwMDE1XSwgWy0xMzMuMDU0NjExLCA1My40MTE0NjldLCBbLTEzMy4yMzk2NjQsIDUzLjg1MTA4XSwgWy0xMzMuMTgwMDA0LCA1NC4xNjk5NzVdLCBbLTEzMi43MTAwMDgsIDU0LjA0MDAwOV1dXSwgW1tbLTc5LjI2NTgyLCA2Mi4xNTg2NzVdLCBbLTc5LjY1NzUyLCA2MS42MzMwOF0sIFstODAuMDk5NTYsIDYxLjcxODFdLCBbLTgwLjM2MjE1LCA2Mi4wMTY0OV0sIFstODAuMzE1Mzk1LCA2Mi4wODU1NjVdLCBbLTc5LjkyOTM5LCA2Mi4zODU2XSwgWy03OS41MjAwMiwgNjIuMzYzNzFdLCBbLTc5LjI2NTgyLCA2Mi4xNTg2NzVdXV0sIFtbWy04MS44OTgyNSwgNjIuNzEwOF0sIFstODMuMDY4NTcsIDYyLjE1OTIyXSwgWy04My43NzQ2MiwgNjIuMTgyMzFdLCBbLTgzLjk5MzY3LCA2Mi40NTI4XSwgWy04My4yNTA0OCwgNjIuOTE0MDldLCBbLTgxLjg3Njk5LCA2Mi45MDQ1OF0sIFstODEuODk4MjUsIDYyLjcxMDhdXV0sIFtbWy04NS4xNjEzMDgsIDY1LjY1NzI4NV0sIFstODQuOTc1NzY0LCA2NS4yMTc1MThdLCBbLTg0LjQ2NDAxMiwgNjUuMzcxNzcyXSwgWy04My44ODI2MjYsIDY1LjEwOTYxOF0sIFstODIuNzg3NTc3LCA2NC43NjY2OTNdLCBbLTgxLjY0MjAxNCwgNjQuNDU1MTM2XSwgWy04MS41NTM0NCwgNjMuOTc5NjA5XSwgWy04MC44MTczNjEsIDY0LjA1NzQ4Nl0sIFstODAuMTAzNDUxLCA2My43MjU5ODFdLCBbLTgwLjk5MTAyLCA2My40MTEyNDZdLCBbLTgyLjU0NzE3OCwgNjMuNjUxNzIyXSwgWy04My4xMDg3OTgsIDY0LjEwMTg3Nl0sIFstODQuMTAwNDE3LCA2My41Njk3MTJdLCBbLTg1LjUyMzQwNSwgNjMuMDUyMzc5XSwgWy04NS44NjY3NjksIDYzLjYzNzI1M10sIFstODcuMjIxOTgzLCA2My41NDEyMzhdLCBbLTg2LjM1Mjc2LCA2NC4wMzU4MzNdLCBbLTg2LjIyNDg4NiwgNjQuODIyOTE3XSwgWy04NS44ODM4NDgsIDY1LjczODc3OF0sIFstODUuMTYxMzA4LCA2NS42NTcyODVdXV0sIFtbWy03NS44NjU4OCwgNjcuMTQ4ODZdLCBbLTc2Ljk4Njg3LCA2Ny4wOTg3M10sIFstNzcuMjM2NCwgNjcuNTg4MDldLCBbLTc2LjgxMTY2LCA2OC4xNDg1Nl0sIFstNzUuODk1MjEsIDY4LjI4NzIxXSwgWy03NS4xMTQ1LCA2OC4wMTAzNl0sIFstNzUuMTAzMzMsIDY3LjU4MjAyXSwgWy03NS4yMTU5NywgNjcuNDQ0MjVdLCBbLTc1Ljg2NTg4LCA2Ny4xNDg4Nl1dXSwgW1tbLTk1LjY0NzY4MSwgNjkuMTA3NjldLCBbLTk2LjI2OTUyMSwgNjguNzU3MDRdLCBbLTk3LjYxNzQwMSwgNjkuMDYwMDNdLCBbLTk4LjQzMTgwMSwgNjguOTUwN10sIFstOTkuNzk3NDAxLCA2OS40MDAwM10sIFstOTguOTE3NDAxLCA2OS43MTAwM10sIFstOTguMjE4MjYxLCA3MC4xNDM1NF0sIFstOTcuMTU3NDAxLCA2OS44NjAwM10sIFstOTYuNTU3NDAxLCA2OS42ODAwM10sIFstOTYuMjU3NDAxLCA2OS40OTAwM10sIFstOTUuNjQ3NjgxLCA2OS4xMDc2OV1dXSwgW1tbLTkwLjU0NzEsIDY5LjQ5NzY2XSwgWy05MC41NTE1MSwgNjguNDc0OTldLCBbLTg5LjIxNTE1LCA2OS4yNTg3M10sIFstODguMDE5NjYsIDY4LjYxNTA4XSwgWy04OC4zMTc0OSwgNjcuODczMzhdLCBbLTg3LjM1MDE3LCA2Ny4xOTg3Ml0sIFstODYuMzA2MDcsIDY3LjkyMTQ2XSwgWy04NS41NzY2NCwgNjguNzg0NTZdLCBbLTg1LjUyMTk3LCA2OS44ODIxMV0sIFstODQuMTAwODEsIDY5LjgwNTM5XSwgWy04Mi42MjI1OCwgNjkuNjU4MjZdLCBbLTgxLjI4MDQzLCA2OS4xNjIwMl0sIFstODEuMjIwMiwgNjguNjY1NjddLCBbLTgxLjk2NDM2LCA2OC4xMzI1M10sIFstODEuMjU5MjgsIDY3LjU5NzE2XSwgWy04MS4zODY1MywgNjcuMTEwNzhdLCBbLTgzLjM0NDU2LCA2Ni40MTE1NF0sIFstODQuNzM1NDIsIDY2LjI1NzNdLCBbLTg1Ljc2OTQzLCA2Ni41NTgzM10sIFstODYuMDY3NiwgNjYuMDU2MjVdLCBbLTg3LjAzMTQzLCA2NS4yMTI5N10sIFstODcuMzIzMjQsIDY0Ljc3NTYzXSwgWy04OC40ODI5NiwgNjQuMDk4OTddLCBbLTg5LjkxNDQ0LCA2NC4wMzI3M10sIFstOTAuNzAzOTgsIDYzLjYxMDE3XSwgWy05MC43NzAwNCwgNjIuOTYwMjFdLCBbLTkxLjkzMzQyLCA2Mi44MzUwOF0sIFstOTMuMTU2OTgsIDYyLjAyNDY5XSwgWy05NC4yNDE1MywgNjAuODk4NjVdLCBbLTk0LjYyOTMxLCA2MC4xMTAyMV0sIFstOTQuNjg0NiwgNTguOTQ4ODJdLCBbLTkzLjIxNTAyLCA1OC43ODIxMl0sIFstOTIuNzY0NjIsIDU3Ljg0NTcxXSwgWy05Mi4yOTcwMywgNTcuMDg3MDldLCBbLTkwLjg5NzY5LCA1Ny4yODQ2OF0sIFstODkuMDM5NTMsIDU2Ljg1MTcyXSwgWy04OC4wMzk3OCwgNTYuNDcxNjJdLCBbLTg3LjMyNDIxLCA1NS45OTkxNF0sIFstODYuMDcxMjEsIDU1LjcyMzgzXSwgWy04NS4wMTE4MSwgNTUuMzAyNl0sIFstODMuMzYwNTUsIDU1LjI0NDg5XSwgWy04Mi4yNzI4NSwgNTUuMTQ4MzJdLCBbLTgyLjQzNjIsIDU0LjI4MjI3XSwgWy04Mi4xMjUwMiwgNTMuMjc3MDNdLCBbLTgxLjQwMDc1LCA1Mi4xNTc4OF0sIFstNzkuOTEyODksIDUxLjIwODQyXSwgWy03OS4xNDMwMSwgNTEuNTMzOTNdLCBbLTc4LjYwMTkxLCA1Mi41NjIwOF0sIFstNzkuMTI0MjEsIDU0LjE0MTQ1XSwgWy03OS44Mjk1OCwgNTQuNjY3NzJdLCBbLTc4LjIyODc0LCA1NS4xMzY0NV0sIFstNzcuMDk1NiwgNTUuODM3NDFdLCBbLTc2LjU0MTM3LCA1Ni41MzQyM10sIFstNzYuNjIzMTksIDU3LjIwMjYzXSwgWy03Ny4zMDIyNiwgNTguMDUyMDldLCBbLTc4LjUxNjg4LCA1OC44MDQ1OF0sIFstNzcuMzM2NzYsIDU5Ljg1MjYxXSwgWy03Ny43NzI3MiwgNjAuNzU3ODhdLCBbLTc4LjEwNjg3LCA2Mi4zMTk2NF0sIFstNzcuNDEwNjcsIDYyLjU1MDUzXSwgWy03NS42OTYyMSwgNjIuMjc4NF0sIFstNzQuNjY4MiwgNjIuMTgxMTFdLCBbLTczLjgzOTg4LCA2Mi40NDM4XSwgWy03Mi45MDg1MywgNjIuMTA1MDddLCBbLTcxLjY3NzA4LCA2MS41MjUzNV0sIFstNzEuMzczNjksIDYxLjEzNzE3XSwgWy02OS41OTA0MiwgNjEuMDYxNDFdLCBbLTY5LjYyMDMzLCA2MC4yMjEyNV0sIFstNjkuMjg3OSwgNTguOTU3MzZdLCBbLTY4LjM3NDU1LCA1OC44MDEwNl0sIFstNjcuNjQ5NzYsIDU4LjIxMjA2XSwgWy02Ni4yMDE3OCwgNTguNzY3MzFdLCBbLTY1LjI0NTE3LCA1OS44NzA3MV0sIFstNjQuNTgzNTIsIDYwLjMzNTU4XSwgWy02My44MDQ3NSwgNTkuNDQyNl0sIFstNjIuNTAyMzYsIDU4LjE2NzA4XSwgWy02MS4zOTY1NSwgNTYuOTY3NDVdLCBbLTYxLjc5ODY2LCA1Ni4zMzk0NV0sIFstNjAuNDY4NTMsIDU1Ljc3NTQ4XSwgWy01OS41Njk2MiwgNTUuMjA0MDddLCBbLTU3Ljk3NTA4LCA1NC45NDU0OV0sIFstNTcuMzMzMiwgNTQuNjI2NV0sIFstNTYuOTM2ODksIDUzLjc4MDMyXSwgWy01Ni4xNTgxMSwgNTMuNjQ3NDldLCBbLTU1Ljc1NjMyLCA1My4yNzAzNl0sIFstNTUuNjgzMzgsIDUyLjE0NjY0XSwgWy01Ni40MDkxNiwgNTEuNzcwN10sIFstNTcuMTI2OTEsIDUxLjQxOTcyXSwgWy01OC43NzQ4MiwgNTEuMDY0M10sIFstNjAuMDMzMDksIDUwLjI0Mjc3XSwgWy02MS43MjM2NiwgNTAuMDgwNDZdLCBbLTYzLjg2MjUxLCA1MC4yOTA5OV0sIFstNjUuMzYzMzEsIDUwLjI5ODJdLCBbLTY2LjM5OTA1LCA1MC4yMjg5N10sIFstNjcuMjM2MzEsIDQ5LjUxMTU2XSwgWy02OC41MTExNCwgNDkuMDY4MzZdLCBbLTY5Ljk1MzYyLCA0Ny43NDQ4OF0sIFstNzEuMTA0NTgsIDQ2LjgyMTcxXSwgWy03MC4yNTUyMiwgNDYuOTg2MDZdLCBbLTY4LjY1LCA0OC4zXSwgWy02Ni41NTI0MywgNDkuMTMzMV0sIFstNjUuMDU2MjYsIDQ5LjIzMjc4XSwgWy02NC4xNzA5OSwgNDguNzQyNDhdLCBbLTY1LjExNTQ1LCA0OC4wNzA4NV0sIFstNjQuNzk4NTQsIDQ2Ljk5Mjk3XSwgWy02NC40NzIxOSwgNDYuMjM4NDldLCBbLTYzLjE3MzI5LCA0NS43MzkwMl0sIFstNjEuNTIwNzIsIDQ1Ljg4Mzc3XSwgWy02MC41MTgxNSwgNDcuMDA3OTNdLCBbLTYwLjQ0ODYsIDQ2LjI4MjY0XSwgWy01OS44MDI4NywgNDUuOTIwNF0sIFstNjEuMDM5ODgsIDQ1LjI2NTI1XSwgWy02My4yNTQ3MSwgNDQuNjcwMTRdLCBbLTY0LjI0NjU2LCA0NC4yNjU1M10sIFstNjUuMzY0MDYsIDQzLjU0NTIzXSwgWy02Ni4xMjM0LCA0My42MTg2N10sIFstNjYuMTYxNzMsIDQ0LjQ2NTEyXSwgWy02NC40MjU0OSwgNDUuMjkyMDRdLCBbLTY2LjAyNjA1LCA0NS4yNTkzMV0sIFstNjcuMTM3NDEsIDQ1LjEzNzUzXSwgWy02Ny43OTEzNCwgNDUuNzAyODFdLCBbLTY3Ljc5MDQ2LCA0Ny4wNjYzNl0sIFstNjguMjM0NDQsIDQ3LjM1NDg2XSwgWy02OC45MDUsIDQ3LjE4NV0sIFstNjkuMjM3MjE2LCA0Ny40NDc3ODFdLCBbLTY5Ljk5OTk3LCA0Ni42OTMwN10sIFstNzAuMzA1LCA0NS45MTVdLCBbLTcwLjY2LCA0NS40Nl0sIFstNzEuMDg0ODIsIDQ1LjMwNTI0XSwgWy03MS40MDUsIDQ1LjI1NV0sIFstNzEuNTA1MDYsIDQ1LjAwODJdLCBbLTczLjM0NzgzLCA0NS4wMDczOF0sIFstNzQuODY3LCA0NS4wMDA0OF0sIFstNzUuMzE4MjEsIDQ0LjgxNjQ1XSwgWy03Ni4zNzUsIDQ0LjA5NjMxXSwgWy03Ni41LCA0NC4wMTg0NTldLCBbLTc2LjgyMDAzNCwgNDMuNjI4Nzg0XSwgWy03Ny43Mzc4ODUsIDQzLjYyOTA1Nl0sIFstNzguNzIwMjgsIDQzLjYyNTA4OV0sIFstNzkuMTcxNjc0LCA0My40NjYzMzldLCBbLTc5LjAxLCA0My4yN10sIFstNzguOTIsIDQyLjk2NV0sIFstNzguOTM5MzYyLCA0Mi44NjM2MTFdLCBbLTgwLjI0NzQ0OCwgNDIuMzY2Ml0sIFstODEuMjc3NzQ3LCA0Mi4yMDkwMjZdLCBbLTgyLjQzOTI3OCwgNDEuNjc1MTA1XSwgWy04Mi42OTAwODksIDQxLjY3NTEwNV0sIFstODMuMDI5ODEsIDQxLjgzMjc5Nl0sIFstODMuMTQyLCA0MS45NzU2ODFdLCBbLTgzLjEyLCA0Mi4wOF0sIFstODIuOSwgNDIuNDNdLCBbLTgyLjQzLCA0Mi45OF0sIFstODIuMTM3NjQyLCA0My41NzEwODhdLCBbLTgyLjMzNzc2MywgNDQuNDRdLCBbLTgyLjU1MDkyNSwgNDUuMzQ3NTE3XSwgWy04My41OTI4NTEsIDQ1LjgxNjg5NF0sIFstODMuNDY5NTUxLCA0NS45OTQ2ODZdLCBbLTgzLjYxNjEzMSwgNDYuMTE2OTI3XSwgWy04My44OTA3NjUsIDQ2LjExNjkyN10sIFstODQuMDkxODUxLCA0Ni4yNzU0MTldLCBbLTg0LjE0MjEyLCA0Ni41MTIyMjZdLCBbLTg0LjMzNjcsIDQ2LjQwODc3XSwgWy04NC42MDQ5LCA0Ni40Mzk2XSwgWy04NC41NDM3NDksIDQ2LjUzODY4NF0sIFstODQuNzc5MjM4LCA0Ni42MzcxMDJdLCBbLTg0Ljg3NjA4LCA0Ni45MDAwODNdLCBbLTg1LjY1MjM2MywgNDcuMjIwMjE5XSwgWy04Ni40NjE5OTEsIDQ3LjU1MzMzOF0sIFstODcuNDM5NzkzLCA0Ny45NF0sIFstODguMzc4MTE0LCA0OC4zMDI5MThdLCBbLTg5LjI3MjkxNywgNDguMDE5ODA4XSwgWy04OS42LCA0OC4wMV0sIFstOTAuODMsIDQ4LjI3XSwgWy05MS42NCwgNDguMTRdLCBbLTkyLjYxLCA0OC40NV0sIFstOTMuNjMwODcsIDQ4LjYwOTI2XSwgWy05NC4zMjkxNCwgNDguNjcwNzRdLCBbLTk0LjY0LCA0OC44NF0sIFstOTQuODE3NTgsIDQ5LjM4OTA1XSwgWy05NS4xNTYwOSwgNDkuMzg0MjVdLCBbLTk1LjE1OTA3LCA0OV0sIFstOTcuMjI4NzIsIDQ5LjAwMDddLCBbLTEwMC42NSwgNDldLCBbLTEwNC4wNDgyNiwgNDguOTk5ODZdLCBbLTEwNy4wNSwgNDldLCBbLTExMC4wNSwgNDldLCBbLTExMywgNDldLCBbLTExNi4wNDgxOCwgNDldLCBbLTExNy4wMzEyMSwgNDldLCBbLTEyMCwgNDldLCBbLTEyMi44NCwgNDldLCBbLTEyMi45NzQyMSwgNDkuMDAyNTM4XSwgWy0xMjQuOTEwMjQsIDQ5Ljk4NDU2XSwgWy0xMjUuNjI0NjEsIDUwLjQxNjU2XSwgWy0xMjcuNDM1NjEsIDUwLjgzMDYxXSwgWy0xMjcuOTkyNzYsIDUxLjcxNTgzXSwgWy0xMjcuODUwMzIsIDUyLjMyOTYxXSwgWy0xMjkuMTI5NzksIDUyLjc1NTM4XSwgWy0xMjkuMzA1MjMsIDUzLjU2MTU5XSwgWy0xMzAuNTE0OTcsIDU0LjI4NzU3XSwgWy0xMzAuNTM2MTEsIDU0LjgwMjc4XSwgWy0xMjkuOTgsIDU1LjI4NV0sIFstMTMwLjAwNzc4LCA1NS45MTU4M10sIFstMTMxLjcwNzgxLCA1Ni41NTIxMl0sIFstMTMyLjczMDQyLCA1Ny42OTI4OV0sIFstMTMzLjM1NTU2LCA1OC40MTAyOF0sIFstMTM0LjI3MTExLCA1OC44NjExMV0sIFstMTM0Ljk0NSwgNTkuMjcwNTZdLCBbLTEzNS40NzU4MywgNTkuNzg3NzhdLCBbLTEzNi40Nzk3MiwgNTkuNDYzODldLCBbLTEzNy40NTI1LCA1OC45MDVdLCBbLTEzOC4zNDA4OSwgNTkuNTYyMTFdLCBbLTEzOS4wMzksIDYwXSwgWy0xNDAuMDEzLCA2MC4yNzY4Ml0sIFstMTQwLjk5Nzc4LCA2MC4zMDYzOV0sIFstMTQwLjk5MjUsIDY2LjAwMDAzXSwgWy0xNDAuOTg2LCA2OS43MTJdLCBbLTEzOS4xMjA1MiwgNjkuNDcxMDJdLCBbLTEzNy41NDYzNiwgNjguOTkwMDJdLCBbLTEzNi41MDM1OCwgNjguODk4MDRdLCBbLTEzNS42MjU3NiwgNjkuMzE1MTJdLCBbLTEzNC40MTQ2NCwgNjkuNjI3NDNdLCBbLTEzMi45MjkyNSwgNjkuNTA1MzRdLCBbLTEzMS40MzEzNiwgNjkuOTQ0NTFdLCBbLTEyOS43OTQ3MSwgNzAuMTkzNjldLCBbLTEyOS4xMDc3MywgNjkuNzc5MjddLCBbLTEyOC4zNjE1NiwgNzAuMDEyODZdLCBbLTEyOC4xMzgxNywgNzAuNDgzODRdLCBbLTEyNy40NDcxMiwgNzAuMzc3MjFdLCBbLTEyNS43NTYzMiwgNjkuNDgwNThdLCBbLTEyNC40MjQ4MywgNzAuMTU4NF0sIFstMTI0LjI4OTY4LCA2OS4zOTk2OV0sIFstMTIzLjA2MTA4LCA2OS41NjM3Ml0sIFstMTIyLjY4MzUsIDY5Ljg1NTUzXSwgWy0xMjEuNDcyMjYsIDY5Ljc5Nzc4XSwgWy0xMTkuOTQyODgsIDY5LjM3Nzg2XSwgWy0xMTcuNjAyNjgsIDY5LjAxMTI4XSwgWy0xMTYuMjI2NDMsIDY4Ljg0MTUxXSwgWy0xMTUuMjQ2OSwgNjguOTA1OTFdLCBbLTExMy44OTc5NCwgNjguMzk4OV0sIFstMTE1LjMwNDg5LCA2Ny45MDI2MV0sIFstMTEzLjQ5NzI3LCA2Ny42ODgxNV0sIFstMTEwLjc5OCwgNjcuODA2MTJdLCBbLTEwOS45NDYxOSwgNjcuOTgxMDRdLCBbLTEwOC44ODAyLCA2Ny4zODE0NF0sIFstMTA3Ljc5MjM5LCA2Ny44ODczNl0sIFstMTA4LjgxMjk5LCA2OC4zMTE2NF0sIFstMTA4LjE2NzIxLCA2OC42NTM5Ml0sIFstMTA2Ljk1LCA2OC43XSwgWy0xMDYuMTUsIDY4LjhdLCBbLTEwNS4zNDI4MiwgNjguNTYxMjJdLCBbLTEwNC4zMzc5MSwgNjguMDE4XSwgWy0xMDMuMjIxMTUsIDY4LjA5Nzc1XSwgWy0xMDEuNDU0MzMsIDY3LjY0Njg5XSwgWy05OS45MDE5NSwgNjcuODA1NjZdLCBbLTk4LjQ0MzIsIDY3Ljc4MTY1XSwgWy05OC41NTg2LCA2OC40MDM5NF0sIFstOTcuNjY5NDgsIDY4LjU3ODY0XSwgWy05Ni4xMTk5MSwgNjguMjM5MzldLCBbLTk2LjEyNTg4LCA2Ny4yOTMzOF0sIFstOTUuNDg5NDMsIDY4LjA5MDddLCBbLTk0LjY4NSwgNjguMDYzODNdLCBbLTk0LjIzMjgyLCA2OS4wNjkwM10sIFstOTUuMzA0MDgsIDY5LjY4NTcxXSwgWy05Ni40NzEzMSwgNzAuMDg5NzZdLCBbLTk2LjM5MTE1LCA3MS4xOTQ4Ml0sIFstOTUuMjA4OCwgNzEuOTIwNTNdLCBbLTkzLjg4OTk3LCA3MS43NjAxNV0sIFstOTIuODc4MTgsIDcxLjMxODY5XSwgWy05MS41MTk2NCwgNzAuMTkxMjldLCBbLTkyLjQwNjkyLCA2OS42OTk5N10sIFstOTAuNTQ3MSwgNjkuNDk3NjZdXV0sIFtbWy0xMTQuMTY3MTcsIDczLjEyMTQ1XSwgWy0xMTQuNjY2MzQsIDcyLjY1Mjc3XSwgWy0xMTIuNDQxMDIsIDcyLjk1NTRdLCBbLTExMS4wNTAzOSwgNzIuNDUwNF0sIFstMTA5LjkyMDM1LCA3Mi45NjExM10sIFstMTA5LjAwNjU0LCA3Mi42MzMzNV0sIFstMTA4LjE4ODM1LCA3MS42NTA4OV0sIFstMTA3LjY4NTk5LCA3Mi4wNjU0OF0sIFstMTA4LjM5NjM5LCA3My4wODk1M10sIFstMTA3LjUxNjQ1LCA3My4yMzU5OF0sIFstMTA2LjUyMjU5LCA3My4wNzYwMV0sIFstMTA1LjQwMjQ2LCA3Mi42NzI1OV0sIFstMTA0Ljc3NDg0LCA3MS42OTg0XSwgWy0xMDQuNDY0NzYsIDcwLjk5Mjk3XSwgWy0xMDIuNzg1MzcsIDcwLjQ5Nzc2XSwgWy0xMDAuOTgwNzgsIDcwLjAyNDMyXSwgWy0xMDEuMDg5MjksIDY5LjU4NDQ3XSwgWy0xMDIuNzMxMTYsIDY5LjUwNDAyXSwgWy0xMDIuMDkzMjksIDY5LjExOTYyXSwgWy0xMDIuNDMwMjQsIDY4Ljc1MjgyXSwgWy0xMDQuMjQsIDY4LjkxXSwgWy0xMDUuOTYsIDY5LjE4XSwgWy0xMDcuMTIyNTQsIDY5LjExOTIyXSwgWy0xMDksIDY4Ljc4XSwgWy0xMTEuNTM0MTQ5LCA2OC42MzAwNTldLCBbLTExMy4zMTMyLCA2OC41MzU1NF0sIFstMTEzLjg1NDk2LCA2OS4wMDc0NF0sIFstMTE1LjIyLCA2OS4yOF0sIFstMTE2LjEwNzk0LCA2OS4xNjgyMV0sIFstMTE3LjM0LCA2OS45Nl0sIFstMTE2LjY3NDczLCA3MC4wNjY1NV0sIFstMTE1LjEzMTEyLCA3MC4yMzczXSwgWy0xMTMuNzIxNDEsIDcwLjE5MjM3XSwgWy0xMTIuNDE2MSwgNzAuMzY2MzhdLCBbLTExNC4zNSwgNzAuNl0sIFstMTE2LjQ4Njg0LCA3MC41MjA0NV0sIFstMTE3LjkwNDgsIDcwLjU0MDU2XSwgWy0xMTguNDMyMzgsIDcwLjkwOTJdLCBbLTExNi4xMTMxMSwgNzEuMzA5MThdLCBbLTExNy42NTU2OCwgNzEuMjk1Ml0sIFstMTE5LjQwMTk5LCA3MS41NTg1OV0sIFstMTE4LjU2MjY3LCA3Mi4zMDc4NV0sIFstMTE3Ljg2NjQyLCA3Mi43MDU5NF0sIFstMTE1LjE4OTA5LCA3My4zMTQ1OV0sIFstMTE0LjE2NzE3LCA3My4xMjE0NV1dXSwgW1tbLTEwNC41LCA3My40Ml0sIFstMTA1LjM4LCA3Mi43Nl0sIFstMTA2Ljk0LCA3My40Nl0sIFstMTA2LjYsIDczLjZdLCBbLTEwNS4yNiwgNzMuNjRdLCBbLTEwNC41LCA3My40Ml1dXSwgW1tbLTc2LjM0LCA3My4xMDI2ODVdLCBbLTc2LjI1MTQwNCwgNzIuODI2Mzg1XSwgWy03Ny4zMTQ0MzgsIDcyLjg1NTU0NV0sIFstNzguMzkxNjcsIDcyLjg3NjY1Nl0sIFstNzkuNDg2MjUyLCA3Mi43NDIyMDNdLCBbLTc5Ljc3NTgzMywgNzIuODAyOTAyXSwgWy04MC44NzYwOTksIDczLjMzMzE4M10sIFstODAuODMzODg1LCA3My42OTMxODRdLCBbLTgwLjM1MzA1OCwgNzMuNzU5NzJdLCBbLTc4LjA2NDQzOCwgNzMuNjUxOTMyXSwgWy03Ni4zNCwgNzMuMTAyNjg1XV1dLCBbW1stODYuNTYyMTc5LCA3My4xNTc0NDddLCBbLTg1Ljc3NDM3MSwgNzIuNTM0MTI2XSwgWy04NC44NTAxMTIsIDczLjM0MDI3OF0sIFstODIuMzE1NTksIDczLjc1MDk1MV0sIFstODAuNjAwMDg4LCA3Mi43MTY1NDRdLCBbLTgwLjc0ODk0MiwgNzIuMDYxOTA3XSwgWy03OC43NzA2MzksIDcyLjM1MjE3M10sIFstNzcuODI0NjI0LCA3Mi43NDk2MTddLCBbLTc1LjYwNTg0NSwgNzIuMjQzNjc4XSwgWy03NC4yMjg2MTYsIDcxLjc2NzE0NF0sIFstNzQuMDk5MTQxLCA3MS4zMzA4NF0sIFstNzIuMjQyMjI2LCA3MS41NTY5MjVdLCBbLTcxLjIwMDAxNSwgNzAuOTIwMDEzXSwgWy02OC43ODYwNTQsIDcwLjUyNTAyNF0sIFstNjcuOTE0OTcsIDcwLjEyMTk0OF0sIFstNjYuOTY5MDMzLCA2OS4xODYwODddLCBbLTY4LjgwNTEyMywgNjguNzIwMTk4XSwgWy02Ni40NDk4NjYsIDY4LjA2NzE2M10sIFstNjQuODYyMzE0LCA2Ny44NDc1MzldLCBbLTYzLjQyNDkzNCwgNjYuOTI4NDczXSwgWy02MS44NTE5ODEsIDY2Ljg2MjEyMV0sIFstNjIuMTYzMTc3LCA2Ni4xNjAyNTFdLCBbLTYzLjkxODQ0NCwgNjQuOTk4NjY5XSwgWy02NS4xNDg4NiwgNjUuNDI2MDMzXSwgWy02Ni43MjEyMTksIDY2LjM4ODA0MV0sIFstNjguMDE1MDE2LCA2Ni4yNjI3MjZdLCBbLTY4LjE0MTI4NywgNjUuNjg5Nzg5XSwgWy02Ny4wODk2NDYsIDY1LjEwODQ1NV0sIFstNjUuNzMyMDgsIDY0LjY0ODQwNl0sIFstNjUuMzIwMTY4LCA2NC4zODI3MzddLCBbLTY0LjY2OTQwNiwgNjMuMzkyOTI3XSwgWy02NS4wMTM4MDQsIDYyLjY3NDE4NV0sIFstNjYuMjc1MDQ1LCA2Mi45NDUwOTldLCBbLTY4Ljc4MzE4NiwgNjMuNzQ1NjddLCBbLTY3LjM2OTY4MSwgNjIuODgzOTY2XSwgWy02Ni4zMjgyOTcsIDYyLjI4MDA3NV0sIFstNjYuMTY1NTY4LCA2MS45MzA4OTddLCBbLTY4Ljg3NzM2NywgNjIuMzMwMTQ5XSwgWy03MS4wMjM0MzcsIDYyLjkxMDcwOF0sIFstNzIuMjM1Mzc5LCA2My4zOTc4MzZdLCBbLTcxLjg4NjI3OCwgNjMuNjc5OTg5XSwgWy03My4zNzgzMDYsIDY0LjE5Mzk2M10sIFstNzQuODM0NDE5LCA2NC42NzkwNzZdLCBbLTc0LjgxODUwMywgNjQuMzg5MDkzXSwgWy03Ny43MDk5OCwgNjQuMjI5NTQyXSwgWy03OC41NTU5NDksIDY0LjU3MjkwNl0sIFstNzcuODk3MjgxLCA2NS4zMDkxOTJdLCBbLTc2LjAxODI3NCwgNjUuMzI2OTY5XSwgWy03My45NTk3OTUsIDY1LjQ1NDc2NV0sIFstNzQuMjkzODgzLCA2NS44MTE3NzFdLCBbLTczLjk0NDkxMiwgNjYuMzEwNTc4XSwgWy03Mi42NTExNjcsIDY3LjI4NDU3Nl0sIFstNzIuOTI2MDYsIDY3LjcyNjkyNl0sIFstNzMuMzExNjE4LCA2OC4wNjk0MzddLCBbLTc0Ljg0MzMwNywgNjguNTU0NjI3XSwgWy03Ni44NjkxMDEsIDY4Ljg5NDczNl0sIFstNzYuMjI4NjQ5LCA2OS4xNDc3NjldLCBbLTc3LjI4NzM3LCA2OS43Njk1NF0sIFstNzguMTY4NjM0LCA2OS44MjY0ODhdLCBbLTc4Ljk1NzI0MiwgNzAuMTY2ODhdLCBbLTc5LjQ5MjQ1NSwgNjkuODcxODA4XSwgWy04MS4zMDU0NzEsIDY5Ljc0MzE4NV0sIFstODQuOTQ0NzA2LCA2OS45NjY2MzRdLCBbLTg3LjA2MDAwMywgNzAuMjYwMDAxXSwgWy04OC42ODE3MTMsIDcwLjQxMDc0MV0sIFstODkuNTEzNDIsIDcwLjc2MjAzOF0sIFstODguNDY3NzIxLCA3MS4yMTgxODZdLCBbLTg5Ljg4ODE1MSwgNzEuMjIyNTUyXSwgWy05MC4yMDUxNiwgNzIuMjM1MDc0XSwgWy04OS40MzY1NzcsIDczLjEyOTQ2NF0sIFstODguNDA4MjQyLCA3My41Mzc4ODldLCBbLTg1LjgyNjE1MSwgNzMuODAzODE2XSwgWy04Ni41NjIxNzksIDczLjE1NzQ0N11dXSwgW1tbLTEwMC4zNTY0MiwgNzMuODQzODldLCBbLTk5LjE2Mzg3LCA3My42MzMzOV0sIFstOTcuMzgsIDczLjc2XSwgWy05Ny4xMiwgNzMuNDddLCBbLTk4LjA1MzU5LCA3Mi45OTA1Ml0sIFstOTYuNTQsIDcyLjU2XSwgWy05Ni43MiwgNzEuNjZdLCBbLTk4LjM1OTY2LCA3MS4yNzI4NV0sIFstOTkuMzIyODYsIDcxLjM1NjM5XSwgWy0xMDAuMDE0ODIsIDcxLjczODI3XSwgWy0xMDIuNSwgNzIuNTFdLCBbLTEwMi40OCwgNzIuODNdLCBbLTEwMC40MzgzNiwgNzIuNzA1ODhdLCBbLTEwMS41NCwgNzMuMzZdLCBbLTEwMC4zNTY0MiwgNzMuODQzODldXV0sIFtbWy05My4xOTYyOTYsIDcyLjc3MTk5Ml0sIFstOTQuMjY5MDQ3LCA3Mi4wMjQ1OTZdLCBbLTk1LjQwOTg1NiwgNzIuMDYxODgxXSwgWy05Ni4wMzM3NDUsIDcyLjk0MDI3N10sIFstOTYuMDE4MjY4LCA3My40Mzc0M10sIFstOTUuNDk1NzkzLCA3My44NjI0MTddLCBbLTk0LjUwMzY1OCwgNzQuMTM0OTA3XSwgWy05Mi40MjAwMTIsIDc0LjEwMDAyNV0sIFstOTAuNTA5NzkzLCA3My44NTY3MzJdLCBbLTkyLjAwMzk2NSwgNzIuOTY2MjQ0XSwgWy05My4xOTYyOTYsIDcyLjc3MTk5Ml1dXSwgW1tbLTEyMC40NiwgNzEuMzgzNjAyXSwgWy0xMjMuMDkyMTksIDcwLjkwMTY0XSwgWy0xMjMuNjIsIDcxLjM0XSwgWy0xMjUuOTI4OTQ5LCA3MS44Njg2ODhdLCBbLTEyNS41LCA3Mi4yOTIyNjFdLCBbLTEyNC44MDcyOSwgNzMuMDIyNTZdLCBbLTEyMy45NCwgNzMuNjhdLCBbLTEyNC45MTc3NSwgNzQuMjkyNzVdLCBbLTEyMS41Mzc4OCwgNzQuNDQ4OTNdLCBbLTEyMC4xMDk3OCwgNzQuMjQxMzVdLCBbLTExNy41NTU2NCwgNzQuMTg1NzddLCBbLTExNi41ODQ0MiwgNzMuODk2MDddLCBbLTExNS41MTA4MSwgNzMuNDc1MTldLCBbLTExNi43Njc5NCwgNzMuMjIyOTJdLCBbLTExOS4yMiwgNzIuNTJdLCBbLTEyMC40NiwgNzEuODJdLCBbLTEyMC40NiwgNzEuMzgzNjAyXV1dLCBbW1stOTMuNjEyNzU2LCA3NC45Nzk5OTddLCBbLTk0LjE1NjkwOSwgNzQuNTkyMzQ3XSwgWy05NS42MDg2ODEsIDc0LjY2Njg2NF0sIFstOTYuODIwOTMyLCA3NC45Mjc2MjNdLCBbLTk2LjI4ODU4NywgNzUuMzc3ODI4XSwgWy05NC44NTA4MiwgNzUuNjQ3MjE4XSwgWy05My45Nzc3NDcsIDc1LjI5NjQ5XSwgWy05My42MTI3NTYsIDc0Ljk3OTk5N11dXSwgW1tbLTk4LjUsIDc2LjcyXSwgWy05Ny43MzU1ODUsIDc2LjI1NjU2XSwgWy05Ny43MDQ0MTUsIDc1Ljc0MzQ0XSwgWy05OC4xNiwgNzVdLCBbLTk5LjgwODc0LCA3NC44OTc0NF0sIFstMTAwLjg4MzY2LCA3NS4wNTczNl0sIFstMTAwLjg2MjkyLCA3NS42NDA3NV0sIFstMTAyLjUwMjA5LCA3NS41NjM4XSwgWy0xMDIuNTY1NTIsIDc2LjMzNjZdLCBbLTEwMS40ODk3MywgNzYuMzA1MzddLCBbLTk5Ljk4MzQ5LCA3Ni42NDYzNF0sIFstOTguNTc2OTksIDc2LjU4ODU5XSwgWy05OC41LCA3Ni43Ml1dXSwgW1tbLTEwOC4yMTE0MSwgNzYuMjAxNjhdLCBbLTEwNy44MTk0MywgNzUuODQ1NTJdLCBbLTEwNi45Mjg5MywgNzYuMDEyODJdLCBbLTEwNS44ODEsIDc1Ljk2OTRdLCBbLTEwNS43MDQ5OCwgNzUuNDc5NTFdLCBbLTEwNi4zMTM0NywgNzUuMDA1MjddLCBbLTEwOS43LCA3NC44NV0sIFstMTEyLjIyMzA3LCA3NC40MTY5Nl0sIFstMTEzLjc0MzgxLCA3NC4zOTQyN10sIFstMTEzLjg3MTM1LCA3NC43MjAyOV0sIFstMTExLjc5NDIxLCA3NS4xNjI1XSwgWy0xMTYuMzEyMjEsIDc1LjA0MzQzXSwgWy0xMTcuNzEwNCwgNzUuMjIyMl0sIFstMTE2LjM0NjAyLCA3Ni4xOTkwM10sIFstMTE1LjQwNDg3LCA3Ni40Nzg4N10sIFstMTEyLjU5MDU2LCA3Ni4xNDEzNF0sIFstMTEwLjgxNDIyLCA3NS41NDkxOV0sIFstMTA5LjA2NzEsIDc1LjQ3MzIxXSwgWy0xMTAuNDk3MjYsIDc2LjQyOTgyXSwgWy0xMDkuNTgxMSwgNzYuNzk0MTddLCBbLTEwOC41NDg1OSwgNzYuNjc4MzJdLCBbLTEwOC4yMTE0MSwgNzYuMjAxNjhdXV0sIFtbWy05NC42ODQwODYsIDc3LjA5Nzg3OF0sIFstOTMuNTczOTIxLCA3Ni43NzYyOTZdLCBbLTkxLjYwNTAyMywgNzYuNzc4NTE4XSwgWy05MC43NDE4NDYsIDc2LjQ0OTU5N10sIFstOTAuOTY5NjYxLCA3Ni4wNzQwMTNdLCBbLTg5LjgyMjIzOCwgNzUuODQ3Nzc0XSwgWy04OS4xODcwODMsIDc1LjYxMDE2Nl0sIFstODcuODM4Mjc2LCA3NS41NjYxODldLCBbLTg2LjM3OTE5MiwgNzUuNDgyNDIxXSwgWy04NC43ODk2MjUsIDc1LjY5OTIwNF0sIFstODIuNzUzNDQ1LCA3NS43ODQzMTVdLCBbLTgxLjEyODUzMSwgNzUuNzEzOTgzXSwgWy04MC4wNTc1MTEsIDc1LjMzNjg0OV0sIFstNzkuODMzOTMzLCA3NC45MjMxMjddLCBbLTgwLjQ1Nzc3MSwgNzQuNjU3MzA0XSwgWy04MS45NDg4NDMsIDc0LjQ0MjQ1OV0sIFstODMuMjI4ODk0LCA3NC41NjQwMjhdLCBbLTg2LjA5NzQ1MiwgNzQuNDEwMDMyXSwgWy04OC4xNTAzNSwgNzQuMzkyMzA3XSwgWy04OS43NjQ3MjIsIDc0LjUxNTU1NV0sIFstOTIuNDIyNDQxLCA3NC44Mzc3NThdLCBbLTkyLjc2ODI4NSwgNzUuMzg2ODJdLCBbLTkyLjg4OTkwNiwgNzUuODgyNjU1XSwgWy05My44OTM4MjQsIDc2LjMxOTI0NF0sIFstOTUuOTYyNDU3LCA3Ni40NDEzODFdLCBbLTk3LjEyMTM3OSwgNzYuNzUxMDc4XSwgWy05Ni43NDUxMjMsIDc3LjE2MTM4OV0sIFstOTQuNjg0MDg2LCA3Ny4wOTc4NzhdXV0sIFtbWy0xMTYuMTk4NTg3LCA3Ny42NDUyODddLCBbLTExNi4zMzU4MTMsIDc2Ljg3Njk2Ml0sIFstMTE3LjEwNjA1MSwgNzYuNTMwMDMyXSwgWy0xMTguMDQwNDEyLCA3Ni40ODExNzJdLCBbLTExOS44OTkzMTgsIDc2LjA1MzIxM10sIFstMTIxLjQ5OTk5NSwgNzUuOTAwMDE5XSwgWy0xMjIuODU0OTI0LCA3Ni4xMTY1NDNdLCBbLTEyMi44NTQ5MjUsIDc2LjExNjU0M10sIFstMTIxLjE1NzUzNSwgNzYuODY0NTA4XSwgWy0xMTkuMTAzOTM5LCA3Ny41MTIyMl0sIFstMTE3LjU3MDEzMSwgNzcuNDk4MzE5XSwgWy0xMTYuMTk4NTg3LCA3Ny42NDUyODddXV0sIFtbWy05My44NDAwMDMsIDc3LjUxOTk5N10sIFstOTQuMjk1NjA4LCA3Ny40OTEzNDNdLCBbLTk2LjE2OTY1NCwgNzcuNTU1MTExXSwgWy05Ni40MzYzMDQsIDc3LjgzNDYyOV0sIFstOTQuNDIyNTc3LCA3Ny44MjAwMDVdLCBbLTkzLjcyMDY1NiwgNzcuNjM0MzMxXSwgWy05My44NDAwMDMsIDc3LjUxOTk5N11dXSwgW1tbLTExMC4xODY5MzgsIDc3LjY5NzAxNV0sIFstMTEyLjA1MTE5MSwgNzcuNDA5MjI5XSwgWy0xMTMuNTM0Mjc5LCA3Ny43MzIyMDddLCBbLTExMi43MjQ1ODcsIDc4LjA1MTA1XSwgWy0xMTEuMjY0NDQzLCA3OC4xNTI5NTZdLCBbLTEwOS44NTQ0NTIsIDc3Ljk5NjMyNV0sIFstMTEwLjE4NjkzOCwgNzcuNjk3MDE1XV1dLCBbW1stMTA5LjY2MzE0NiwgNzguNjAxOTczXSwgWy0xMTAuODgxMzE0LCA3OC40MDY5Ml0sIFstMTEyLjU0MjA5MSwgNzguNDA3OTAyXSwgWy0xMTIuNTI1ODkxLCA3OC41NTA1NTVdLCBbLTExMS41MDAwMSwgNzguODQ5OTk0XSwgWy0xMTAuOTYzNjYxLCA3OC44MDQ0NDFdLCBbLTEwOS42NjMxNDYsIDc4LjYwMTk3M11dXSwgW1tbLTk1LjgzMDI5NSwgNzguMDU2OTQxXSwgWy05Ny4zMDk4NDMsIDc3Ljg1MDU5N10sIFstOTguMTI0Mjg5LCA3OC4wODI4NTddLCBbLTk4LjU1Mjg2OCwgNzguNDU4MTA1XSwgWy05OC42MzE5ODQsIDc4Ljg3MTkzXSwgWy05Ny4zMzcyMzEsIDc4LjgzMTk4NF0sIFstOTYuNzU0Mzk5LCA3OC43NjU4MTNdLCBbLTk1LjU1OTI3OCwgNzguNDE4MzE1XSwgWy05NS44MzAyOTUsIDc4LjA1Njk0MV1dXSwgW1tbLTEwMC4wNjAxOTIsIDc4LjMyNDc1NF0sIFstOTkuNjcwOTM5LCA3Ny45MDc1NDVdLCBbLTEwMS4zMDM5NCwgNzguMDE4OTg1XSwgWy0xMDIuOTQ5ODA5LCA3OC4zNDMyMjldLCBbLTEwNS4xNzYxMzMsIDc4LjM4MDMzMl0sIFstMTA0LjIxMDQyOSwgNzguNjc3NDJdLCBbLTEwNS40MTk1OCwgNzguOTE4MzM2XSwgWy0xMDUuNDkyMjg5LCA3OS4zMDE1OTRdLCBbLTEwMy41MjkyODIsIDc5LjE2NTM0OV0sIFstMTAwLjgyNTE1OCwgNzguODAwNDYyXSwgWy0xMDAuMDYwMTkyLCA3OC4zMjQ3NTRdXV0sIFtbWy04Ny4wMiwgNzkuNjZdLCBbLTg1LjgxNDM1LCA3OS4zMzY5XSwgWy04Ny4xODc1NiwgNzkuMDM5M10sIFstODkuMDM1MzUsIDc4LjI4NzIzXSwgWy05MC44MDQzNiwgNzguMjE1MzNdLCBbLTkyLjg3NjY5LCA3OC4zNDMzM10sIFstOTMuOTUxMTYsIDc4Ljc1MDk5XSwgWy05My45MzU3NCwgNzkuMTEzNzNdLCBbLTkzLjE0NTI0LCA3OS4zODAxXSwgWy05NC45NzQsIDc5LjM3MjQ4XSwgWy05Ni4wNzYxNCwgNzkuNzA1MDJdLCBbLTk2LjcwOTcyLCA4MC4xNTc3N10sIFstOTYuMDE2NDQsIDgwLjYwMjMzXSwgWy05NS4zMjM0NSwgODAuOTA3MjldLCBbLTk0LjI5ODQzLCA4MC45NzcyN10sIFstOTQuNzM1NDIsIDgxLjIwNjQ2XSwgWy05Mi40MDk4NCwgODEuMjU3MzldLCBbLTkxLjEzMjg5LCA4MC43MjM0NV0sIFstODkuNDUsIDgwLjUwOTMyMl0sIFstODcuODEsIDgwLjMyXSwgWy04Ny4wMiwgNzkuNjZdXV0sIFtbWy02OC41LCA4My4xMDYzMjJdLCBbLTY1LjgyNzM1LCA4My4wMjgwMV0sIFstNjMuNjgsIDgyLjldLCBbLTYxLjg1LCA4Mi42Mjg2XSwgWy02MS44OTM4OCwgODIuMzYxNjVdLCBbLTY0LjMzNCwgODEuOTI3NzVdLCBbLTY2Ljc1MzQyLCA4MS43MjUyN10sIFstNjcuNjU3NTUsIDgxLjUwMTQxXSwgWy02NS40ODAzMSwgODEuNTA2NTddLCBbLTY3Ljg0LCA4MC45XSwgWy02OS40Njk3LCA4MC42MTY4M10sIFstNzEuMTgsIDc5LjhdLCBbLTczLjI0MjgsIDc5LjYzNDE1XSwgWy03My44OCwgNzkuNDMwMTYyXSwgWy03Ni45MDc3MywgNzkuMzIzMDldLCBbLTc1LjUyOTI0LCA3OS4xOTc2Nl0sIFstNzYuMjIwNDYsIDc5LjAxOTA3XSwgWy03NS4zOTM0NSwgNzguNTI1ODFdLCBbLTc2LjM0MzU0LCA3OC4xODI5Nl0sIFstNzcuODg4NTEsIDc3Ljg5OTkxXSwgWy03OC4zNjI2OSwgNzcuNTA4NTldLCBbLTc5Ljc1OTUxLCA3Ny4yMDk2OF0sIFstNzkuNjE5NjUsIDc2Ljk4MzM2XSwgWy03Ny45MTA4OSwgNzcuMDIyMDQ1XSwgWy03Ny44ODkxMSwgNzYuNzc3OTU1XSwgWy04MC41NjEyNSwgNzYuMTc4MTJdLCBbLTgzLjE3NDM5LCA3Ni40NTQwM10sIFstODYuMTExODQsIDc2LjI5OTAxXSwgWy04Ny42LCA3Ni40Ml0sIFstODkuNDkwNjgsIDc2LjQ3MjM5XSwgWy04OS42MTYxLCA3Ni45NTIxM10sIFstODcuNzY3MzksIDc3LjE3ODMzXSwgWy04OC4yNiwgNzcuOV0sIFstODcuNjUsIDc3Ljk3MDIyMl0sIFstODQuOTc2MzQsIDc3LjUzODczXSwgWy04Ni4zNCwgNzguMThdLCBbLTg3Ljk2MTkyLCA3OC4zNzE4MV0sIFstODcuMTUxOTgsIDc4Ljc1ODY3XSwgWy04NS4zNzg2OCwgNzguOTk2OV0sIFstODUuMDk0OTUsIDc5LjM0NTQzXSwgWy04Ni41MDczNCwgNzkuNzM2MjRdLCBbLTg2LjkzMTc5LCA4MC4yNTE0NV0sIFstODQuMTk4NDQsIDgwLjIwODM2XSwgWy04My40MDg2OTYsIDgwLjFdLCBbLTgxLjg0ODIzLCA4MC40NjQ0Ml0sIFstODQuMSwgODAuNThdLCBbLTg3LjU5ODk1LCA4MC41MTYyN10sIFstODkuMzY2NjMsIDgwLjg1NTY5XSwgWy05MC4yLCA4MS4yNl0sIFstOTEuMzY3ODYsIDgxLjU1MzFdLCBbLTkxLjU4NzAyLCA4MS44OTQyOV0sIFstOTAuMSwgODIuMDg1XSwgWy04OC45MzIyNywgODIuMTE3NTFdLCBbLTg2Ljk3MDI0LCA4Mi4yNzk2MV0sIFstODUuNSwgODIuNjUyMjczXSwgWy04NC4yNjAwMDUsIDgyLjZdLCBbLTgzLjE4LCA4Mi4zMl0sIFstODIuNDIsIDgyLjg2XSwgWy04MS4xLCA4My4wMl0sIFstNzkuMzA2NjQsIDgzLjEzMDU2XSwgWy03Ni4yNSwgODMuMTcyMDU5XSwgWy03NS43MTg3OCwgODMuMDY0MDRdLCBbLTcyLjgzMTUzLCA4My4yMzMyNF0sIFstNzAuNjY1NzY1LCA4My4xNjk3ODFdLCBbLTY4LjUsIDgzLjEwNjMyMl1dXV0sICJ0eXBlIjogIk11bHRpUG9seWdvbiJ9LCAiaWQiOiAiQ0FOIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDYW5hZGEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzkuNTk0MjI2LCA0Ny41MjUwNThdLCBbOS42MzI5MzIsIDQ3LjM0NzYwMV0sIFs5LjQ3OTk3LCA0Ny4xMDI4MV0sIFs5LjkzMjQ0OCwgNDYuOTIwNzI4XSwgWzEwLjQ0MjcwMSwgNDYuODkzNTQ2XSwgWzEwLjM2MzM3OCwgNDYuNDgzNTcxXSwgWzkuOTIyODM3LCA0Ni4zMTQ4OTldLCBbOS4xODI4ODIsIDQ2LjQ0MDIxNV0sIFs4Ljk2NjMwNiwgNDYuMDM2OTMyXSwgWzguNDg5OTUyLCA0Ni4wMDUxNTFdLCBbOC4zMTY2MywgNDYuMTYzNjQyXSwgWzcuNzU1OTkyLCA0NS44MjQ0OV0sIFs3LjI3Mzg1MSwgNDUuNzc2OTQ4XSwgWzYuODQzNTkzLCA0NS45OTExNDddLCBbNi41MDAxLCA0Ni40Mjk2NzNdLCBbNi4wMjI2MDksIDQ2LjI3Mjk5XSwgWzYuMDM3Mzg5LCA0Ni43MjU3NzldLCBbNi43Njg3MTQsIDQ3LjI4NzcwOF0sIFs2LjczNjU3MSwgNDcuNTQxODAxXSwgWzcuMTkyMjAyLCA0Ny40NDk3NjZdLCBbNy40NjY3NTksIDQ3LjYyMDU4Ml0sIFs4LjMxNzMwMSwgNDcuNjEzNThdLCBbOC41MjI2MTIsIDQ3LjgzMDgyOF0sIFs5LjU5NDIyNiwgNDcuNTI1MDU4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDSEUiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIlN3aXR6ZXJsYW5kIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbLTY4LjYzNDAxLCAtNTIuNjM2MzddLCBbLTY4LjYzMzM1LCAtNTQuODY5NV0sIFstNjcuNTYyNDQsIC01NC44NzAwMV0sIFstNjYuOTU5OTIsIC01NC44OTY4MV0sIFstNjcuMjkxMDMsIC01NS4zMDEyNF0sIFstNjguMTQ4NjMsIC01NS42MTE4M10sIFstNjguNjM5OTkxLCAtNTUuNTgwMDE4XSwgWy02OS4yMzIxLCAtNTUuNDk5MDZdLCBbLTY5Ljk1ODA5LCAtNTUuMTk4NDNdLCBbLTcxLjAwNTY4LCAtNTUuMDUzODNdLCBbLTcyLjI2MzksIC01NC40OTUxNF0sIFstNzMuMjg1MiwgLTUzLjk1NzUyXSwgWy03NC42NjI1MywgLTUyLjgzNzQ5XSwgWy03My44MzgxLCAtNTMuMDQ3NDNdLCBbLTcyLjQzNDE4LCAtNTMuNzE1NF0sIFstNzEuMTA3NzMsIC01NC4wNzQzM10sIFstNzAuNTkxNzgsIC01My42MTU4M10sIFstNzAuMjY3NDgsIC01Mi45MzEyM10sIFstNjkuMzQ1NjUsIC01Mi41MTgzXSwgWy02OC42MzQwMSwgLTUyLjYzNjM3XV1dLCBbW1stNjguMjE5OTEzLCAtMjEuNDk0MzQ3XSwgWy02Ny44MjgxOCwgLTIyLjg3MjkxOV0sIFstNjcuMTA2Njc0LCAtMjIuNzM1OTI1XSwgWy02Ni45ODUyMzQsIC0yMi45ODYzNDldLCBbLTY3LjMyODQ0MywgLTI0LjAyNTMwM10sIFstNjguNDE3NjUzLCAtMjQuNTE4NTU1XSwgWy02OC4zODYwMDEsIC0yNi4xODUwMTZdLCBbLTY4LjU5NDgsIC0yNi41MDY5MDldLCBbLTY4LjI5NTU0MiwgLTI2Ljg5OTM0XSwgWy02OS4wMDEyMzUsIC0yNy41MjEyMTRdLCBbLTY5LjY1NjEzLCAtMjguNDU5MTQxXSwgWy03MC4wMTM1NSwgLTI5LjM2NzkyM10sIFstNjkuOTE5MDA4LCAtMzAuMzM2MzM5XSwgWy03MC41MzUwNjksIC0zMS4zNjUwMV0sIFstNzAuMDc0Mzk5LCAtMzMuMDkxMjFdLCBbLTY5LjgxNDc3NywgLTMzLjI3Mzg4Nl0sIFstNjkuODE3MzA5LCAtMzQuMTkzNTcxXSwgWy03MC4zODgwNDksIC0zNS4xNjk2ODhdLCBbLTcwLjM2NDc2OSwgLTM2LjAwNTA4OV0sIFstNzEuMTIxODgxLCAtMzYuNjU4MTI0XSwgWy03MS4xMTg2MjUsIC0zNy41NzY4MjddLCBbLTcwLjgxNDY2NCwgLTM4LjU1Mjk5NV0sIFstNzEuNDEzNTE3LCAtMzguOTE2MDIyXSwgWy03MS42ODA3NjEsIC0zOS44MDgxNjRdLCBbLTcxLjkxNTczNCwgLTQwLjgzMjMzOV0sIFstNzEuNzQ2ODA0LCAtNDIuMDUxMzg2XSwgWy03Mi4xNDg4OTgsIC00Mi4yNTQ4ODhdLCBbLTcxLjkxNTQyNCwgLTQzLjQwODU2NV0sIFstNzEuNDY0MDU2LCAtNDMuNzg3NjExXSwgWy03MS43OTM2MjMsIC00NC4yMDcxNzJdLCBbLTcxLjMyOTgwMSwgLTQ0LjQwNzUyMl0sIFstNzEuMjIyNzc5LCAtNDQuNzg0MjQzXSwgWy03MS42NTkzMTYsIC00NC45NzM2ODldLCBbLTcxLjU1MjAwOSwgLTQ1LjU2MDczM10sIFstNzEuOTE3MjU4LCAtNDYuODg0ODM4XSwgWy03Mi40NDczNTUsIC00Ny43Mzg1MzNdLCBbLTcyLjMzMTE2MSwgLTQ4LjI0NDIzOF0sIFstNzIuNjQ4MjQ3LCAtNDguODc4NjE4XSwgWy03My40MTU0MzYsIC00OS4zMTg0MzZdLCBbLTczLjMyODA1MSwgLTUwLjM3ODc4NV0sIFstNzIuOTc1NzQ3LCAtNTAuNzQxNDVdLCBbLTcyLjMwOTk3NCwgLTUwLjY3NzAxXSwgWy03Mi4zMjk0MDQsIC01MS40MjU5NTZdLCBbLTcxLjkxNDgwNCwgLTUyLjAwOTAyMl0sIFstNjkuNDk4MzYyLCAtNTIuMTQyNzYxXSwgWy02OC41NzE1NDUsIC01Mi4yOTk0NDRdLCBbLTY5LjQ2MTI4NCwgLTUyLjI5MTk1MV0sIFstNjkuOTQyNzgsIC01Mi41Mzc5MzFdLCBbLTcwLjg0NTEwMiwgLTUyLjg5OTIwMV0sIFstNzEuMDA2MzMyLCAtNTMuODMzMjUyXSwgWy03MS40Mjk3OTUsIC01My44NTY0NTVdLCBbLTcyLjU1Nzk0MywgLTUzLjUzMTQxXSwgWy03My43MDI3NTcsIC01Mi44MzUwNjldLCBbLTczLjcwMjc1NywgLTUyLjgzNTA3XSwgWy03NC45NDY3NjMsIC01Mi4yNjI3NTRdLCBbLTc1LjI2MDAyNiwgLTUxLjYyOTM1NV0sIFstNzQuOTc2NjMyLCAtNTEuMDQzMzk2XSwgWy03NS40Nzk3NTQsIC01MC4zNzgzNzJdLCBbLTc1LjYwODAxNSwgLTQ4LjY3Mzc3M10sIFstNzUuMTgyNzcsIC00Ny43MTE5MTldLCBbLTc0LjEyNjU4MSwgLTQ2LjkzOTI1M10sIFstNzUuNjQ0Mzk1LCAtNDYuNjQ3NjQzXSwgWy03NC42OTIxNTQsIC00NS43NjM5NzZdLCBbLTc0LjM1MTcwOSwgLTQ0LjEwMzA0NF0sIFstNzMuMjQwMzU2LCAtNDQuNDU0OTYxXSwgWy03Mi43MTc4MDQsIC00Mi4zODMzNTZdLCBbLTczLjM4ODksIC00Mi4xMTc1MzJdLCBbLTczLjcwMTMzNiwgLTQzLjM2NTc3Nl0sIFstNzQuMzMxOTQzLCAtNDMuMjI0OTU4XSwgWy03NC4wMTc5NTcsIC00MS43OTQ4MTNdLCBbLTczLjY3NzA5OSwgLTM5Ljk0MjIxM10sIFstNzMuMjE3NTkzLCAtMzkuMjU4Njg5XSwgWy03My41MDU1NTksIC0zOC4yODI4ODNdLCBbLTczLjU4ODA2MSwgLTM3LjE1NjI4NV0sIFstNzMuMTY2NzE3LCAtMzcuMTIzNzhdLCBbLTcyLjU1MzEzNywgLTM1LjUwODg0XSwgWy03MS44NjE3MzIsIC0zMy45MDkwOTNdLCBbLTcxLjQzODQ1LCAtMzIuNDE4ODk5XSwgWy03MS42Njg3MjEsIC0zMC45MjA2NDVdLCBbLTcxLjM3MDA4MywgLTMwLjA5NTY4Ml0sIFstNzEuNDg5ODk0LCAtMjguODYxNDQyXSwgWy03MC45MDUxMjQsIC0yNy42NDAzOF0sIFstNzAuNzI0OTU0LCAtMjUuNzA1OTI0XSwgWy03MC40MDM5NjYsIC0yMy42Mjg5OTddLCBbLTcwLjA5MTI0NiwgLTIxLjM5MzMxOV0sIFstNzAuMTY0NDIsIC0xOS43NTY0NjhdLCBbLTcwLjM3MjU3MiwgLTE4LjM0Nzk3NV0sIFstNjkuODU4NDQ0LCAtMTguMDkyNjk0XSwgWy02OS41OTA0MjQsIC0xNy41ODAwMTJdLCBbLTY5LjEwMDI0NywgLTE4LjI2MDEyNV0sIFstNjguOTY2ODE4LCAtMTguOTgxNjgzXSwgWy02OC40NDIyMjUsIC0xOS40MDUwNjhdLCBbLTY4Ljc1NzE2NywgLTIwLjM3MjY1OF0sIFstNjguMjE5OTEzLCAtMjEuNDk0MzQ3XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJDSEwiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkNoaWxlIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbMTEwLjMzOTE4OCwgMTguNjc4Mzk1XSwgWzEwOS40NzUyMSwgMTguMTk3NzAxXSwgWzEwOC42NTUyMDgsIDE4LjUwNzY4Ml0sIFsxMDguNjI2MjE3LCAxOS4zNjc4ODhdLCBbMTA5LjExOTA1NiwgMTkuODIxMDM5XSwgWzExMC4yMTE1OTksIDIwLjEwMTI1NF0sIFsxMTAuNzg2NTUxLCAyMC4wNzc1MzRdLCBbMTExLjAxMDA1MSwgMTkuNjk1OTNdLCBbMTEwLjU3MDY0NywgMTkuMjU1ODc5XSwgWzExMC4zMzkxODgsIDE4LjY3ODM5NV1dXSwgW1tbMTI3LjY1NzQwNywgNDkuNzYwMjddLCBbMTI5LjM5NzgxOCwgNDkuNDQwNl0sIFsxMzAuNTgyMjkzLCA0OC43Mjk2ODddLCBbMTMwLjk4NzI4MiwgNDcuNzkwMTMyXSwgWzEzMi41MDY2NzIsIDQ3Ljc4ODk3XSwgWzEzMy4zNzM1OTYsIDQ4LjE4MzQ0Ml0sIFsxMzUuMDI2MzExLCA0OC40NzgyM10sIFsxMzQuNTAwODE0LCA0Ny41Nzg0NF0sIFsxMzQuMTEyMzYyLCA0Ny4yMTI0NjddLCBbMTMzLjc2OTY0NCwgNDYuMTE2OTI3XSwgWzEzMy4wOTcxMjcsIDQ1LjE0NDA2Nl0sIFsxMzEuODgzNDU0LCA0NS4zMjExNjJdLCBbMTMxLjAyNTIxMiwgNDQuOTY3OTUzXSwgWzEzMS4yODg1NTUsIDQ0LjExMTUyXSwgWzEzMS4xNDQ2ODgsIDQyLjkyOTk5XSwgWzEzMC42MzM4NjYsIDQyLjkwMzAxNV0sIFsxMzAuNjQwMDE2LCA0Mi4zOTUwMDldLCBbMTI5Ljk5NDI2NywgNDIuOTg1Mzg3XSwgWzEyOS41OTY2NjksIDQyLjQyNDk4Ml0sIFsxMjguMDUyMjE1LCA0MS45OTQyODVdLCBbMTI4LjIwODQzMywgNDEuNDY2NzcyXSwgWzEyNy4zNDM3ODMsIDQxLjUwMzE1Ml0sIFsxMjYuODY5MDgzLCA0MS44MTY1NjldLCBbMTI2LjE4MjA0NSwgNDEuMTA3MzM2XSwgWzEyNS4wNzk5NDIsIDQwLjU2OTgyNF0sIFsxMjQuMjY1NjI1LCAzOS45Mjg0OTNdLCBbMTIyLjg2NzU3LCAzOS42Mzc3ODhdLCBbMTIyLjEzMTM4OCwgMzkuMTcwNDUyXSwgWzEyMS4wNTQ1NTQsIDM4Ljg5NzQ3MV0sIFsxMjEuNTg1OTk1LCAzOS4zNjA4NTRdLCBbMTIxLjM3Njc1NywgMzkuNzUwMjYxXSwgWzEyMi4xNjg1OTUsIDQwLjQyMjQ0M10sIFsxMjEuNjQwMzU5LCA0MC45NDYzOV0sIFsxMjAuNzY4NjI5LCA0MC41OTMzODhdLCBbMTE5LjYzOTYwMiwgMzkuODk4MDU2XSwgWzExOS4wMjM0NjQsIDM5LjI1MjMzM10sIFsxMTguMDQyNzQ5LCAzOS4yMDQyNzRdLCBbMTE3LjUzMjcwMiwgMzguNzM3NjM2XSwgWzExOC4wNTk2OTksIDM4LjA2MTQ3Nl0sIFsxMTguODc4MTUsIDM3Ljg5NzMyNV0sIFsxMTguOTExNjM2LCAzNy40NDg0NjRdLCBbMTE5LjcwMjgwMiwgMzcuMTU2Mzg5XSwgWzEyMC44MjM0NTcsIDM3Ljg3MDQyOF0sIFsxMjEuNzExMjU5LCAzNy40ODExMjNdLCBbMTIyLjM1NzkzNywgMzcuNDU0NDg0XSwgWzEyMi41MTk5OTUsIDM2LjkzMDYxNF0sIFsxMjEuMTA0MTY0LCAzNi42NTEzMjldLCBbMTIwLjYzNzAwOSwgMzYuMTExNDRdLCBbMTE5LjY2NDU2MiwgMzUuNjA5NzkxXSwgWzExOS4xNTEyMDgsIDM0LjkwOTg1OV0sIFsxMjAuMjI3NTI1LCAzNC4zNjAzMzJdLCBbMTIwLjYyMDM2OSwgMzMuMzc2NzIzXSwgWzEyMS4yMjkwMTQsIDMyLjQ2MDMxOV0sIFsxMjEuOTA4MTQ2LCAzMS42OTIxNzRdLCBbMTIxLjg5MTkxOSwgMzAuOTQ5MzUyXSwgWzEyMS4yNjQyNTcsIDMwLjY3NjI2N10sIFsxMjEuNTAzNTE5LCAzMC4xNDI5MTVdLCBbMTIyLjA5MjExNCwgMjkuODMyNTJdLCBbMTIxLjkzODQyOCwgMjkuMDE4MDIyXSwgWzEyMS42ODQ0MzksIDI4LjIyNTUxM10sIFsxMjEuMTI1NjYxLCAyOC4xMzU2NzNdLCBbMTIwLjM5NTQ3MywgMjcuMDUzMjA3XSwgWzExOS41ODU0OTcsIDI1Ljc0MDc4MV0sIFsxMTguNjU2ODcxLCAyNC41NDczOTFdLCBbMTE3LjI4MTYwNiwgMjMuNjI0NTAxXSwgWzExNS44OTA3MzUsIDIyLjc4Mjg3M10sIFsxMTQuNzYzODI3LCAyMi42NjgwNzRdLCBbMTE0LjE1MjU0NywgMjIuMjIzNzZdLCBbMTEzLjgwNjc4LCAyMi41NDgzNF0sIFsxMTMuMjQxMDc4LCAyMi4wNTEzNjddLCBbMTExLjg0MzU5MiwgMjEuNTUwNDk0XSwgWzExMC43ODU0NjYsIDIxLjM5NzE0NF0sIFsxMTAuNDQ0MDM5LCAyMC4zNDEwMzNdLCBbMTA5Ljg4OTg2MSwgMjAuMjgyNDU3XSwgWzEwOS42Mjc2NTUsIDIxLjAwODIyN10sIFsxMDkuODY0NDg4LCAyMS4zOTUwNTFdLCBbMTA4LjUyMjgxMywgMjEuNzE1MjEyXSwgWzEwOC4wNTAxOCwgMjEuNTUyMzhdLCBbMTA3LjA0MzQyLCAyMS44MTE4OTldLCBbMTA2LjU2NzI3MywgMjIuMjE4MjA1XSwgWzEwNi43MjU0MDMsIDIyLjc5NDI2OF0sIFsxMDUuODExMjQ3LCAyMi45NzY4OTJdLCBbMTA1LjMyOTIwOSwgMjMuMzUyMDYzXSwgWzEwNC40NzY4NTgsIDIyLjgxOTE1XSwgWzEwMy41MDQ1MTUsIDIyLjcwMzc1N10sIFsxMDIuNzA2OTkyLCAyMi43MDg3OTVdLCBbMTAyLjE3MDQzNiwgMjIuNDY0NzUzXSwgWzEwMS42NTIwMTgsIDIyLjMxODE5OV0sIFsxMDEuODAzMTIsIDIxLjE3NDM2N10sIFsxMDEuMjcwMDI2LCAyMS4yMDE2NTJdLCBbMTAxLjE4MDAwNSwgMjEuNDM2NTczXSwgWzEwMS4xNTAwMzMsIDIxLjg0OTk4NF0sIFsxMDAuNDE2NTM4LCAyMS41NTg4MzldLCBbOTkuOTgzNDg5LCAyMS43NDI5MzddLCBbOTkuMjQwODk5LCAyMi4xMTgzMTRdLCBbOTkuNTMxOTkyLCAyMi45NDkwMzldLCBbOTguODk4NzQ5LCAyMy4xNDI3MjJdLCBbOTguNjYwMjYyLCAyNC4wNjMyODZdLCBbOTcuNjA0NzIsIDIzLjg5NzQwNV0sIFs5Ny43MjQ2MDksIDI1LjA4MzYzN10sIFs5OC42NzE4MzgsIDI1LjkxODcwM10sIFs5OC43MTIwOTQsIDI2Ljc0MzUzNl0sIFs5OC42ODI2OSwgMjcuNTA4ODEyXSwgWzk4LjI0NjIzMSwgMjcuNzQ3MjIxXSwgWzk3LjkxMTk4OCwgMjguMzM1OTQ1XSwgWzk3LjMyNzExNCwgMjguMjYxNTgzXSwgWzk2LjI0ODgzMywgMjguNDExMDMxXSwgWzk2LjU4NjU5MSwgMjguODMwOThdLCBbOTYuMTE3Njc5LCAyOS40NTI4MDJdLCBbOTUuNDA0ODAyLCAyOS4wMzE3MTddLCBbOTQuNTY1OTksIDI5LjI3NzQzOF0sIFs5My40MTMzNDgsIDI4LjY0MDYyOV0sIFs5Mi41MDMxMTksIDI3Ljg5Njg3Nl0sIFs5MS42OTY2NTcsIDI3Ljc3MTc0Ml0sIFs5MS4yNTg4NTQsIDI4LjA0MDYxNF0sIFs5MC43MzA1MTQsIDI4LjA2NDk1NF0sIFs5MC4wMTU4MjksIDI4LjI5NjQzOV0sIFs4OS40NzU4MSwgMjguMDQyNzU5XSwgWzg4LjgxNDI0OCwgMjcuMjk5MzE2XSwgWzg4LjczMDMyNiwgMjguMDg2ODY1XSwgWzg4LjEyMDQ0MSwgMjcuODc2NTQyXSwgWzg2Ljk1NDUxNywgMjcuOTc0MjYyXSwgWzg1LjgyMzMyLCAyOC4yMDM1NzZdLCBbODUuMDExNjM4LCAyOC42NDI3NzRdLCBbODQuMjM0NTgsIDI4LjgzOTg5NF0sIFs4My44OTg5OTMsIDI5LjMyMDIyNl0sIFs4My4zMzcxMTUsIDI5LjQ2MzczMl0sIFs4Mi4zMjc1MTMsIDMwLjExNTI2OF0sIFs4MS41MjU4MDQsIDMwLjQyMjcxN10sIFs4MS4xMTEyNTYsIDMwLjE4MzQ4MV0sIFs3OS43MjEzNjcsIDMwLjg4MjcxNV0sIFs3OC43Mzg4OTQsIDMxLjUxNTkwNl0sIFs3OC40NTg0NDYsIDMyLjYxODE2NF0sIFs3OS4xNzYxMjksIDMyLjQ4Mzc4XSwgWzc5LjIwODg5MiwgMzIuOTk0Mzk1XSwgWzc4LjgxMTA4NiwgMzMuNTA2MTk4XSwgWzc4LjkxMjI2OSwgMzQuMzIxOTM2XSwgWzc3LjgzNzQ1MSwgMzUuNDk0MDFdLCBbNzYuMTkyODQ4LCAzNS44OTg0MDNdLCBbNzUuODk2ODk3LCAzNi42NjY4MDZdLCBbNzUuMTU4MDI4LCAzNy4xMzMwMzFdLCBbNzQuOTgwMDAyLCAzNy40MTk5OV0sIFs3NC44Mjk5ODYsIDM3Ljk5MDAwN10sIFs3NC44NjQ4MTYsIDM4LjM3ODg0Nl0sIFs3NC4yNTc1MTQsIDM4LjYwNjUwN10sIFs3My45Mjg4NTIsIDM4LjUwNTgxNV0sIFs3My42NzUzNzksIDM5LjQzMTIzN10sIFs3My45NjAwMTMsIDM5LjY2MDAwOF0sIFs3My44MjIyNDQsIDM5Ljg5Mzk3M10sIFs3NC43NzY4NjIsIDQwLjM2NjQyNV0sIFs3NS40Njc4MjgsIDQwLjU2MjA3Ml0sIFs3Ni41MjYzNjgsIDQwLjQyNzk0Nl0sIFs3Ni45MDQ0ODQsIDQxLjA2NjQ4Nl0sIFs3OC4xODcxOTcsIDQxLjE4NTMxNl0sIFs3OC41NDM2NjEsIDQxLjU4MjI0M10sIFs4MC4xMTk0MywgNDIuMTIzOTQxXSwgWzgwLjI1OTk5LCA0Mi4zNDk5OTldLCBbODAuMTgwMTUsIDQyLjkyMDA2OF0sIFs4MC44NjYyMDYsIDQzLjE4MDM2Ml0sIFs3OS45NjYxMDYsIDQ0LjkxNzUxN10sIFs4MS45NDcwNzEsIDQ1LjMxNzAyN10sIFs4Mi40NTg5MjYsIDQ1LjUzOTY1XSwgWzgzLjE4MDQ4NCwgNDcuMzMwMDMxXSwgWzg1LjE2NDI5LCA0Ny4wMDA5NTZdLCBbODUuNzIwNDg0LCA0Ny40NTI5NjldLCBbODUuNzY4MjMzLCA0OC40NTU3NTFdLCBbODYuNTk4Nzc2LCA0OC41NDkxODJdLCBbODcuMzU5OTcsIDQ5LjIxNDk4MV0sIFs4Ny43NTEyNjQsIDQ5LjI5NzE5OF0sIFs4OC4wMTM4MzIsIDQ4LjU5OTQ2M10sIFs4OC44NTQyOTgsIDQ4LjA2OTA4Ml0sIFs5MC4yODA4MjYsIDQ3LjY5MzU0OV0sIFs5MC45NzA4MDksIDQ2Ljg4ODE0Nl0sIFs5MC41ODU3NjgsIDQ1LjcxOTcxNl0sIFs5MC45NDU1NCwgNDUuMjg2MDczXSwgWzkyLjEzMzg5MSwgNDUuMTE1MDc2XSwgWzkzLjQ4MDczNCwgNDQuOTc1NDcyXSwgWzk0LjY4ODkyOSwgNDQuMzUyMzMyXSwgWzk1LjMwNjg3NSwgNDQuMjQxMzMxXSwgWzk1Ljc2MjQ1NSwgNDMuMzE5NDQ5XSwgWzk2LjM0OTM5NiwgNDIuNzI1NjM1XSwgWzk3LjQ1MTc1NywgNDIuNzQ4ODldLCBbOTkuNTE1ODE3LCA0Mi41MjQ2OTFdLCBbMTAwLjg0NTg2NiwgNDIuNjYzODA0XSwgWzEwMS44MzMwNCwgNDIuNTE0ODczXSwgWzEwMy4zMTIyNzgsIDQxLjkwNzQ2OF0sIFsxMDQuNTIyMjgyLCA0MS45MDgzNDddLCBbMTA0Ljk2NDk5NCwgNDEuNTk3NDFdLCBbMTA2LjEyOTMxNiwgNDIuMTM0MzI4XSwgWzEwNy43NDQ3NzMsIDQyLjQ4MTUxNl0sIFsxMDkuMjQzNTk2LCA0Mi41MTk0NDZdLCBbMTEwLjQxMjEwMywgNDIuODcxMjM0XSwgWzExMS4xMjk2ODIsIDQzLjQwNjgzNF0sIFsxMTEuODI5NTg4LCA0My43NDMxMThdLCBbMTExLjY2NzczNywgNDQuMDczMTc2XSwgWzExMS4zNDgzNzcsIDQ0LjQ1NzQ0Ml0sIFsxMTEuODczMzA2LCA0NS4xMDIwNzldLCBbMTEyLjQzNjA2MiwgNDUuMDExNjQ2XSwgWzExMy40NjM5MDcsIDQ0LjgwODg5M10sIFsxMTQuNDYwMzMyLCA0NS4zMzk4MTddLCBbMTE1Ljk4NTA5NiwgNDUuNzI3MjM1XSwgWzExNi43MTc4NjgsIDQ2LjM4ODIwMl0sIFsxMTcuNDIxNzAxLCA0Ni42NzI3MzNdLCBbMTE4Ljg3NDMyNiwgNDYuODA1NDEyXSwgWzExOS42NjMyNywgNDYuNjkyNjhdLCBbMTE5Ljc3MjgyNCwgNDcuMDQ4MDU5XSwgWzExOC44NjY1NzQsIDQ3Ljc0NzA2XSwgWzExOC4wNjQxNDMsIDQ4LjA2NjczXSwgWzExNy4yOTU1MDcsIDQ3LjY5NzcwOV0sIFsxMTYuMzA4OTUzLCA0Ny44NTM0MV0sIFsxMTUuNzQyODM3LCA0Ny43MjY1NDVdLCBbMTE1LjQ4NTI4MiwgNDguMTM1MzgzXSwgWzExNi4xOTE4MDIsIDQ5LjEzNDU5OF0sIFsxMTYuNjc4ODAxLCA0OS44ODg1MzFdLCBbMTE3Ljg3OTI0NCwgNDkuNTEwOTgzXSwgWzExOS4yODg0NjEsIDUwLjE0Mjg4M10sIFsxMTkuMjc5MzY2LCA1MC41ODI5MDhdLCBbMTIwLjE4MjA1LCA1MS42NDM1NjZdLCBbMTIwLjczODE5MSwgNTEuOTY0MTE1XSwgWzEyMC43MjU3ODksIDUyLjUxNjIyNl0sIFsxMjAuMTc3MDg5LCA1Mi43NTM4ODZdLCBbMTIxLjAwMzA4NSwgNTMuMjUxNDAxXSwgWzEyMi4yNDU3NDgsIDUzLjQzMTcyNl0sIFsxMjMuNTcxNTA3LCA1My40NTg4MDRdLCBbMTI1LjA2ODIxMSwgNTMuMTYxMDQ1XSwgWzEyNS45NDYzNDksIDUyLjc5Mjc5OV0sIFsxMjYuNTY0Mzk5LCA1MS43ODQyNTVdLCBbMTI2LjkzOTE1NywgNTEuMzUzODk0XSwgWzEyNy4yODc0NTYsIDUwLjczOTc5N10sIFsxMjcuNjU3NDA3LCA0OS43NjAyN11dXV0sICJ0eXBlIjogIk11bHRpUG9seWdvbiJ9LCAiaWQiOiAiQ0hOIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDaGluYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNiMTAwMjYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuODU2MTI1LCA0Ljk5NDQ3Nl0sIFstMy4zMTEwODQsIDQuOTg0Mjk2XSwgWy00LjAwODgyLCA1LjE3OTgxM10sIFstNC42NDk5MTcsIDUuMTY4MjY0XSwgWy01LjgzNDQ5NiwgNC45OTM3MDFdLCBbLTYuNTI4NzY5LCA0LjcwNTA4OF0sIFstNy41MTg5NDEsIDQuMzM4Mjg4XSwgWy03LjcxMjE1OSwgNC4zNjQ1NjZdLCBbLTcuNjM1MzY4LCA1LjE4ODE1OV0sIFstNy41Mzk3MTUsIDUuMzEzMzQ1XSwgWy03LjU3MDE1MywgNS43MDczNTJdLCBbLTcuOTkzNjkzLCA2LjEyNjE5XSwgWy04LjMxMTM0OCwgNi4xOTMwMzNdLCBbLTguNjAyODgsIDYuNDY3NTY0XSwgWy04LjM4NTQ1MiwgNi45MTE4MDFdLCBbLTguNDg1NDQ2LCA3LjM5NTIwOF0sIFstOC40MzkyOTgsIDcuNjg2MDQzXSwgWy04LjI4MDcwMywgNy42ODcxOF0sIFstOC4yMjE3OTIsIDguMTIzMzI5XSwgWy04LjI5OTA0OSwgOC4zMTY0NDRdLCBbLTguMjAzNDk5LCA4LjQ1NTQ1M10sIFstNy44MzIxLCA4LjU3NTcwNF0sIFstOC4wNzkxMTQsIDkuMzc2MjI0XSwgWy04LjMwOTYxNiwgOS43ODk1MzJdLCBbLTguMjI5MzM3LCAxMC4xMjkwMl0sIFstOC4wMjk5NDQsIDEwLjIwNjUzNV0sIFstNy44OTk1OSwgMTAuMjk3MzgyXSwgWy03LjYyMjc1OSwgMTAuMTQ3MjM2XSwgWy02Ljg1MDUwNywgMTAuMTM4OTk0XSwgWy02LjY2NjQ2MSwgMTAuNDMwODExXSwgWy02LjQ5Mzk2NSwgMTAuNDExMzAzXSwgWy02LjIwNTIyMywgMTAuNTI0MDYxXSwgWy02LjA1MDQ1MiwgMTAuMDk2MzYxXSwgWy01LjgxNjkyNiwgMTAuMjIyNTU1XSwgWy01LjQwNDM0MiwgMTAuMzcwNzM3XSwgWy00Ljk1NDY1MywgMTAuMTUyNzE0XSwgWy00Ljc3OTg4NCwgOS44MjE5ODVdLCBbLTQuMzMwMjQ3LCA5LjYxMDgzNV0sIFstMy45ODA0NDksIDkuODYyMzQ0XSwgWy0zLjUxMTg5OSwgOS45MDAzMjZdLCBbLTIuODI3NDk2LCA5LjY0MjQ2MV0sIFstMi41NjIxOSwgOC4yMTk2MjhdLCBbLTIuOTgzNTg1LCA3LjM3OTcwNV0sIFstMy4yNDQzNywgNi4yNTA0NzJdLCBbLTIuODEwNzAxLCA1LjM4OTA1MV0sIFstMi44NTYxMjUsIDQuOTk0NDc2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDSVYiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkl2b3J5IENvYXN0IiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxMy4wNzU4MjIsIDIuMjY3MDk3XSwgWzEyLjk1MTMzNCwgMi4zMjE2MTZdLCBbMTIuMzU5MzgsIDIuMTkyODEyXSwgWzExLjc1MTY2NSwgMi4zMjY3NThdLCBbMTEuMjc2NDQ5LCAyLjI2MTA1MV0sIFs5LjY0OTE1OCwgMi4yODM4NjZdLCBbOS43OTUxOTYsIDMuMDczNDA0XSwgWzkuNDA0MzY3LCAzLjczNDUyN10sIFs4Ljk0ODExNiwgMy45MDQxMjldLCBbOC43NDQ5MjQsIDQuMzUyMjE1XSwgWzguNDg4ODE2LCA0LjQ5NTYxN10sIFs4LjUwMDI4OCwgNC43NzE5ODNdLCBbOC43NTc1MzMsIDUuNDc5NjY2XSwgWzkuMjMzMTYzLCA2LjQ0NDQ5MV0sIFs5LjUyMjcwNiwgNi40NTM0ODJdLCBbMTAuMTE4Mjc3LCA3LjAzODc3XSwgWzEwLjQ5NzM3NSwgNy4wNTUzNThdLCBbMTEuMDU4Nzg4LCA2LjY0NDQyN10sIFsxMS43NDU3NzQsIDYuOTgxMzgzXSwgWzExLjgzOTMwOSwgNy4zOTcwNDJdLCBbMTIuMDYzOTQ2LCA3Ljc5OTgwOF0sIFsxMi4yMTg4NzIsIDguMzA1ODI0XSwgWzEyLjc1MzY3MiwgOC43MTc3NjNdLCBbMTIuOTU1NDY4LCA5LjQxNzc3Ml0sIFsxMy4xNjc2LCA5LjY0MDYyNl0sIFsxMy4zMDg2NzYsIDEwLjE2MDM2Ml0sIFsxMy41NzI5NSwgMTAuNzk4NTY2XSwgWzE0LjQxNTM3OSwgMTEuNTcyMzY5XSwgWzE0LjQ2ODE5MiwgMTEuOTA0NzUyXSwgWzE0LjU3NzE3OCwgMTIuMDg1MzYxXSwgWzE0LjE4MTMzNiwgMTIuNDgzNjU3XSwgWzE0LjIxMzUzMSwgMTIuODAyMDM1XSwgWzE0LjQ5NTc4NywgMTIuODU5Mzk2XSwgWzE0Ljg5MzM4NiwgMTIuMjE5MDQ4XSwgWzE0Ljk2MDE1MiwgMTEuNTU1NTc0XSwgWzE0LjkyMzU2NSwgMTAuODkxMzI1XSwgWzE1LjQ2Nzg3MywgOS45ODIzMzddLCBbMTQuOTA5MzU0LCA5Ljk5MjEyOV0sIFsxNC42MjcyMDEsIDkuOTIwOTE5XSwgWzE0LjE3MTQ2NiwgMTAuMDIxMzc4XSwgWzEzLjk1NDIxOCwgOS41NDk0OTVdLCBbMTQuNTQ0NDY3LCA4Ljk2NTg2MV0sIFsxNC45Nzk5OTYsIDguNzk2MTA0XSwgWzE1LjEyMDg2NiwgOC4zODIxNV0sIFsxNS40MzYwOTIsIDcuNjkyODEyXSwgWzE1LjI3OTQ2LCA3LjQyMTkyNV0sIFsxNC43NzY1NDUsIDYuNDA4NDk4XSwgWzE0LjUzNjU2LCA2LjIyNjk1OV0sIFsxNC40NTk0MDcsIDUuNDUxNzYxXSwgWzE0LjU1ODkzNiwgNS4wMzA1OThdLCBbMTQuNDc4MzcyLCA0LjczMjYwNV0sIFsxNC45NTA5NTMsIDQuMjEwMzg5XSwgWzE1LjAzNjIyLCAzLjg1MTM2N10sIFsxNS40MDUzOTYsIDMuMzM1MzAxXSwgWzE1Ljg2MjczMiwgMy4wMTM1MzddLCBbMTUuOTA3MzgxLCAyLjU1NzM4OV0sIFsxNi4wMTI4NTIsIDIuMjY3NjRdLCBbMTUuOTQwOTE5LCAxLjcyNzY3M10sIFsxNS4xNDYzNDIsIDEuOTY0MDE1XSwgWzE0LjMzNzgxMywgMi4yMjc4NzVdLCBbMTMuMDc1ODIyLCAyLjI2NzA5N11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ01SIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDYW1lcm9vbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMzAuODMzODYsIDMuNTA5MTY2XSwgWzMwLjc3MzM0NywgMi4zMzk4ODNdLCBbMzEuMTc0MTQ5LCAyLjIwNDQ2NV0sIFszMC44NTI2NywgMS44NDkzOTZdLCBbMzAuNDY4NTA4LCAxLjU4MzgwNV0sIFszMC4wODYxNTQsIDEuMDYyMzEzXSwgWzI5Ljg3NTc3OSwgMC41OTczOF0sIFsyOS44MTk1MDMsIC0wLjIwNTMxXSwgWzI5LjU4NzgzOCwgLTAuNTg3NDA2XSwgWzI5LjU3OTQ2NiwgLTEuMzQxMzEzXSwgWzI5LjI5MTg4NywgLTEuNjIwMDU2XSwgWzI5LjI1NDgzNSwgLTIuMjE1MTFdLCBbMjkuMTE3NDc5LCAtMi4yOTIyMTFdLCBbMjkuMDI0OTI2LCAtMi44MzkyNThdLCBbMjkuMjc2Mzg0LCAtMy4yOTM5MDddLCBbMjkuMzM5OTk4LCAtNC40OTk5ODNdLCBbMjkuNTE5OTg3LCAtNS40MTk5NzldLCBbMjkuNDE5OTkzLCAtNS45Mzk5OTldLCBbMjkuNjIwMDMyLCAtNi41MjAwMTVdLCBbMzAuMTk5OTk3LCAtNy4wNzk5ODFdLCBbMzAuNzQwMDE1LCAtOC4zNDAwMDddLCBbMzAuMzQ2MDg2LCAtOC4yMzgyNTddLCBbMjkuMDAyOTEyLCAtOC40MDcwMzJdLCBbMjguNzM0ODY3LCAtOC41MjY1NTldLCBbMjguNDQ5ODcxLCAtOS4xNjQ5MThdLCBbMjguNjczNjgyLCAtOS42MDU5MjVdLCBbMjguNDk2MDcsIC0xMC43ODk4ODRdLCBbMjguMzcyMjUzLCAtMTEuNzkzNjQ3XSwgWzI4LjY0MjQxNywgLTExLjk3MTU2OV0sIFsyOS4zNDE1NDgsIC0xMi4zNjA3NDRdLCBbMjkuNjE2MDAxLCAtMTIuMTc4ODk1XSwgWzI5LjY5OTYxNCwgLTEzLjI1NzIyN10sIFsyOC45MzQyODYsIC0xMy4yNDg5NThdLCBbMjguNTIzNTYyLCAtMTIuNjk4NjA0XSwgWzI4LjE1NTEwOSwgLTEyLjI3MjQ4MV0sIFsyNy4zODg3OTksIC0xMi4xMzI3NDddLCBbMjcuMTY0NDIsIC0xMS42MDg3NDhdLCBbMjYuNTUzMDg4LCAtMTEuOTI0NDRdLCBbMjUuNzUyMzEsIC0xMS43ODQ5NjVdLCBbMjUuNDE4MTE4LCAtMTEuMzMwOTM2XSwgWzI0Ljc4MzE3LCAtMTEuMjM4Njk0XSwgWzI0LjMxNDUxNiwgLTExLjI2MjgyNl0sIFsyNC4yNTcxNTUsIC0xMC45NTE5OTNdLCBbMjMuOTEyMjE1LCAtMTAuOTI2ODI2XSwgWzIzLjQ1Njc5MSwgLTEwLjg2Nzg2M10sIFsyMi44MzczNDUsIC0xMS4wMTc2MjJdLCBbMjIuNDAyNzk4LCAtMTAuOTkzMDc1XSwgWzIyLjE1NTI2OCwgLTExLjA4NDgwMV0sIFsyMi4yMDg3NTMsIC05Ljg5NDc5Nl0sIFsyMS44NzUxODIsIC05LjUyMzcwOF0sIFsyMS44MDE4MDEsIC04LjkwODcwN10sIFsyMS45NDkxMzEsIC04LjMwNTkwMV0sIFsyMS43NDY0NTYsIC03LjkyMDA4NV0sIFsyMS43MjgxMTEsIC03LjI5MDg3Ml0sIFsyMC41MTQ3NDgsIC03LjI5OTYwNl0sIFsyMC42MDE4MjMsIC02LjkzOTMxOF0sIFsyMC4wOTE2MjIsIC02Ljk0MzA5XSwgWzIwLjAzNzcyMywgLTcuMTE2MzYxXSwgWzE5LjQxNzUwMiwgLTcuMTU1NDI5XSwgWzE5LjE2NjYxMywgLTcuNzM4MTg0XSwgWzE5LjAxNjc1MiwgLTcuOTg4MjQ2XSwgWzE4LjQ2NDE3NiwgLTcuODQ3MDE0XSwgWzE4LjEzNDIyMiwgLTcuOTg3Njc4XSwgWzE3LjQ3Mjk3LCAtOC4wNjg1NTFdLCBbMTcuMDg5OTk2LCAtNy41NDU2ODldLCBbMTYuODYwMTkxLCAtNy4yMjIyOThdLCBbMTYuNTczMTgsIC02LjYyMjY0NV0sIFsxNi4zMjY1MjgsIC01Ljg3NzQ3XSwgWzEzLjM3NTU5NywgLTUuODY0MjQxXSwgWzEzLjAyNDg2OSwgLTUuOTg0Mzg5XSwgWzEyLjczNTE3MSwgLTUuOTY1NjgyXSwgWzEyLjMyMjQzMiwgLTYuMTAwMDkyXSwgWzEyLjE4MjMzNywgLTUuNzg5OTMxXSwgWzEyLjQzNjY4OCwgLTUuNjg0MzA0XSwgWzEyLjQ2ODAwNCwgLTUuMjQ4MzYyXSwgWzEyLjYzMTYxMiwgLTQuOTkxMjcxXSwgWzEyLjk5NTUxNywgLTQuNzgxMTAzXSwgWzEzLjI1ODI0LCAtNC44ODI5NTddLCBbMTMuNjAwMjM1LCAtNC41MDAxMzhdLCBbMTQuMTQ0OTU2LCAtNC41MTAwMDldLCBbMTQuMjA5MDM1LCAtNC43OTMwOTJdLCBbMTQuNTgyNjA0LCAtNC45NzAyMzldLCBbMTUuMTcwOTkyLCAtNC4zNDM1MDddLCBbMTUuNzUzNTQsIC0zLjg1NTE2NV0sIFsxNi4wMDYyOSwgLTMuNTM1MTMzXSwgWzE1Ljk3MjgwMywgLTIuNzEyMzkyXSwgWzE2LjQwNzA5MiwgLTEuNzQwOTI3XSwgWzE2Ljg2NTMwNywgLTEuMjI1ODE2XSwgWzE3LjUyMzcxNiwgLTAuNzQzODNdLCBbMTcuNjM4NjQ1LCAtMC40MjQ4MzJdLCBbMTcuNjYzNTUzLCAtMC4wNTgwODRdLCBbMTcuODI2NTQsIDAuMjg4OTIzXSwgWzE3Ljc3NDE5MiwgMC44NTU2NTldLCBbMTcuODk4ODM1LCAxLjc0MTgzMl0sIFsxOC4wOTQyNzYsIDIuMzY1NzIyXSwgWzE4LjM5Mzc5MiwgMi45MDA0NDNdLCBbMTguNDUzMDY1LCAzLjUwNDM4Nl0sIFsxOC41NDI5ODIsIDQuMjAxNzg1XSwgWzE4LjkzMjMxMiwgNC43MDk1MDZdLCBbMTkuNDY3Nzg0LCA1LjAzMTUyOF0sIFsyMC4yOTA2NzksIDQuNjkxNjc4XSwgWzIwLjkyNzU5MSwgNC4zMjI3ODZdLCBbMjEuNjU5MTIzLCA0LjIyNDM0Ml0sIFsyMi40MDUxMjQsIDQuMDI5MTZdLCBbMjIuNzA0MTI0LCA0LjYzMzA1MV0sIFsyMi44NDE0OCwgNC43MTAxMjZdLCBbMjMuMjk3MjE0LCA0LjYwOTY5M10sIFsyNC40MTA1MzEsIDUuMTA4Nzg0XSwgWzI0LjgwNTAyOSwgNC44OTcyNDddLCBbMjUuMTI4ODMzLCA0LjkyNzI0NV0sIFsyNS4yNzg3OTgsIDUuMTcwNDA4XSwgWzI1LjY1MDQ1NSwgNS4yNTYwODhdLCBbMjYuNDAyNzYxLCA1LjE1MDg3NV0sIFsyNy4wNDQwNjUsIDUuMTI3ODUzXSwgWzI3LjM3NDIyNiwgNS4yMzM5NDRdLCBbMjcuOTc5OTc3LCA0LjQwODQxM10sIFsyOC40Mjg5OTQsIDQuMjg3MTU1XSwgWzI4LjY5NjY3OCwgNC40NTUwNzddLCBbMjkuMTU5MDc4LCA0LjM4OTI2N10sIFsyOS43MTU5OTUsIDQuNjAwODA1XSwgWzI5Ljk1MzUsIDQuMTczNjk5XSwgWzMwLjgzMzg2LCAzLjUwOTE2Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ09EIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJEZW1vY3JhdGljIFJlcHVibGljIG9mIHRoZSBDb25nbyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTIuOTk1NTE3LCAtNC43ODExMDNdLCBbMTIuNjIwNzYsIC00LjQzODAyM10sIFsxMi4zMTg2MDgsIC00LjYwNjIzXSwgWzExLjkxNDk2MywgLTUuMDM3OTg3XSwgWzExLjA5Mzc3MywgLTMuOTc4ODI3XSwgWzExLjg1NTEyMiwgLTMuNDI2ODcxXSwgWzExLjQ3ODAzOSwgLTIuNzY1NjE5XSwgWzExLjgyMDk2NCwgLTIuNTE0MTYxXSwgWzEyLjQ5NTcwMywgLTIuMzkxNjg4XSwgWzEyLjU3NTI4NCwgLTEuOTQ4NTExXSwgWzEzLjEwOTYxOSwgLTIuNDI4NzRdLCBbMTMuOTkyNDA3LCAtMi40NzA4MDVdLCBbMTQuMjk5MjEsIC0xLjk5ODI3Nl0sIFsxNC40MjU0NTYsIC0xLjMzMzQwN10sIFsxNC4zMTY0MTgsIC0wLjU1MjYyN10sIFsxMy44NDMzMjEsIDAuMDM4NzU4XSwgWzE0LjI3NjI2NiwgMS4xOTY5M10sIFsxNC4wMjY2NjksIDEuMzk1Njc3XSwgWzEzLjI4MjYzMSwgMS4zMTQxODRdLCBbMTMuMDAzMTE0LCAxLjgzMDg5Nl0sIFsxMy4wNzU4MjIsIDIuMjY3MDk3XSwgWzE0LjMzNzgxMywgMi4yMjc4NzVdLCBbMTUuMTQ2MzQyLCAxLjk2NDAxNV0sIFsxNS45NDA5MTksIDEuNzI3NjczXSwgWzE2LjAxMjg1MiwgMi4yNjc2NF0sIFsxNi41MzcwNTgsIDMuMTk4MjU1XSwgWzE3LjEzMzA0MiwgMy43MjgxOTddLCBbMTcuODA5OSwgMy41NjAxOTZdLCBbMTguNDUzMDY1LCAzLjUwNDM4Nl0sIFsxOC4zOTM3OTIsIDIuOTAwNDQzXSwgWzE4LjA5NDI3NiwgMi4zNjU3MjJdLCBbMTcuODk4ODM1LCAxLjc0MTgzMl0sIFsxNy43NzQxOTIsIDAuODU1NjU5XSwgWzE3LjgyNjU0LCAwLjI4ODkyM10sIFsxNy42NjM1NTMsIC0wLjA1ODA4NF0sIFsxNy42Mzg2NDUsIC0wLjQyNDgzMl0sIFsxNy41MjM3MTYsIC0wLjc0MzgzXSwgWzE2Ljg2NTMwNywgLTEuMjI1ODE2XSwgWzE2LjQwNzA5MiwgLTEuNzQwOTI3XSwgWzE1Ljk3MjgwMywgLTIuNzEyMzkyXSwgWzE2LjAwNjI5LCAtMy41MzUxMzNdLCBbMTUuNzUzNTQsIC0zLjg1NTE2NV0sIFsxNS4xNzA5OTIsIC00LjM0MzUwN10sIFsxNC41ODI2MDQsIC00Ljk3MDIzOV0sIFsxNC4yMDkwMzUsIC00Ljc5MzA5Ml0sIFsxNC4xNDQ5NTYsIC00LjUxMDAwOV0sIFsxMy42MDAyMzUsIC00LjUwMDEzOF0sIFsxMy4yNTgyNCwgLTQuODgyOTU3XSwgWzEyLjk5NTUxNywgLTQuNzgxMTAzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDT0ciLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIlJlcHVibGljIG9mIHRoZSBDb25nbyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZmZmYjIiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTc1LjM3MzIyMywgLTAuMTUyMDMyXSwgWy03NS44MDE0NjYsIDAuMDg0ODAxXSwgWy03Ni4yOTIzMTQsIDAuNDE2MDQ3XSwgWy03Ni41NzYzOCwgMC4yNTY5MzZdLCBbLTc3LjQyNDk4NCwgMC4zOTU2ODddLCBbLTc3LjY2ODYxMywgMC44MjU4OTNdLCBbLTc3Ljg1NTA2MSwgMC44MDk5MjVdLCBbLTc4Ljg1NTI1OSwgMS4zODA5MjRdLCBbLTc4Ljk5MDkzNSwgMS42OTEzN10sIFstNzguNjE3ODMxLCAxLjc2NjQwNF0sIFstNzguNjYyMTE4LCAyLjI2NzM1NV0sIFstNzguNDI3NjEsIDIuNjI5NTU2XSwgWy03Ny45MzE1NDMsIDIuNjk2NjA2XSwgWy03Ny41MTA0MzEsIDMuMzI1MDE3XSwgWy03Ny4xMjc2OSwgMy44NDk2MzZdLCBbLTc3LjQ5NjI3MiwgNC4wODc2MDZdLCBbLTc3LjMwNzYwMSwgNC42Njc5ODRdLCBbLTc3LjUzMzIyMSwgNS41ODI4MTJdLCBbLTc3LjMxODgxNSwgNS44NDUzNTRdLCBbLTc3LjQ3NjY2MSwgNi42OTExMTZdLCBbLTc3Ljg4MTU3MSwgNy4yMjM3NzFdLCBbLTc3Ljc1MzQxNCwgNy43MDk4NF0sIFstNzcuNDMxMTA4LCA3LjYzODA2MV0sIFstNzcuMjQyNTY2LCA3LjkzNTI3OF0sIFstNzcuNDc0NzIzLCA4LjUyNDI4Nl0sIFstNzcuMzUzMzYxLCA4LjY3MDUwNV0sIFstNzYuODM2Njc0LCA4LjYzODc0OV0sIFstNzYuMDg2Mzg0LCA5LjMzNjgyMV0sIFstNzUuNjc0NiwgOS40NDMyNDhdLCBbLTc1LjY2NDcwNCwgOS43NzQwMDNdLCBbLTc1LjQ4MDQyNiwgMTAuNjE4OTldLCBbLTc0LjkwNjg5NSwgMTEuMDgzMDQ1XSwgWy03NC4yNzY3NTMsIDExLjEwMjAzNl0sIFstNzQuMTk3MjIzLCAxMS4zMTA0NzNdLCBbLTczLjQxNDc2NCwgMTEuMjI3MDE1XSwgWy03Mi42Mjc4MzUsIDExLjczMTk3Ml0sIFstNzIuMjM4MTk1LCAxMS45NTU1NV0sIFstNzEuNzU0MDksIDEyLjQzNzMwM10sIFstNzEuMzk5ODIyLCAxMi4zNzYwNDFdLCBbLTcxLjEzNzQ2MSwgMTIuMTEyOTgyXSwgWy03MS4zMzE1ODQsIDExLjc3NjI4NF0sIFstNzEuOTczOTIyLCAxMS42MDg2NzJdLCBbLTcyLjIyNzU3NSwgMTEuMTA4NzAyXSwgWy03Mi42MTQ2NTgsIDEwLjgyMTk3NV0sIFstNzIuOTA1Mjg2LCAxMC40NTAzNDRdLCBbLTczLjAyNzYwNCwgOS43MzY3N10sIFstNzMuMzA0OTUyLCA5LjE1Ml0sIFstNzIuNzg4NzMsIDkuMDg1MDI3XSwgWy03Mi42NjA0OTUsIDguNjI1Mjg4XSwgWy03Mi40Mzk4NjIsIDguNDA1Mjc1XSwgWy03Mi4zNjA5MDEsIDguMDAyNjM4XSwgWy03Mi40Nzk2NzksIDcuNjMyNTA2XSwgWy03Mi40NDQ0ODcsIDcuNDIzNzg1XSwgWy03Mi4xOTgzNTIsIDcuMzQwNDMxXSwgWy03MS45NjAxNzYsIDYuOTkxNjE1XSwgWy03MC42NzQyMzQsIDcuMDg3Nzg1XSwgWy03MC4wOTMzMTMsIDYuOTYwMzc2XSwgWy02OS4zODk0OCwgNi4wOTk4NjFdLCBbLTY4Ljk4NTMxOSwgNi4yMDY4MDVdLCBbLTY4LjI2NTA1MiwgNi4xNTMyNjhdLCBbLTY3LjY5NTA4NywgNi4yNjczMThdLCBbLTY3LjM0MTQ0LCA2LjA5NTQ2OF0sIFstNjcuNTIxNTMyLCA1LjU1Njg3XSwgWy02Ny43NDQ2OTcsIDUuMjIxMTI5XSwgWy02Ny44MjMwMTIsIDQuNTAzOTM3XSwgWy02Ny42MjE4MzYsIDMuODM5NDgyXSwgWy02Ny4zMzc1NjQsIDMuNTQyMzQyXSwgWy02Ny4zMDMxNzMsIDMuMzE4NDU0XSwgWy02Ny44MDk5MzgsIDIuODIwNjU1XSwgWy02Ny40NDcwOTIsIDIuNjAwMjgxXSwgWy02Ny4xODEyOTQsIDIuMjUwNjM4XSwgWy02Ni44NzYzMjYsIDEuMjUzMzYxXSwgWy02Ny4wNjUwNDgsIDEuMTMwMTEyXSwgWy02Ny4yNTk5OTgsIDEuNzE5OTk5XSwgWy02Ny41Mzc4MSwgMi4wMzcxNjNdLCBbLTY3Ljg2ODU2NSwgMS42OTI0NTVdLCBbLTY5LjgxNjk3MywgMS43MTQ4MDVdLCBbLTY5LjgwNDU5NywgMS4wODkwODFdLCBbLTY5LjIxODYzOCwgMC45ODU2NzddLCBbLTY5LjI1MjQzNCwgMC42MDI2NTFdLCBbLTY5LjQ1MjM5NiwgMC43MDYxNTldLCBbLTcwLjAxNTU2NiwgMC41NDE0MTRdLCBbLTcwLjAyMDY1NiwgLTAuMTg1MTU2XSwgWy02OS41NzcwNjUsIC0wLjU0OTk5Ml0sIFstNjkuNDIwNDg2LCAtMS4xMjI2MTldLCBbLTY5LjQ0NDEwMiwgLTEuNTU2Mjg3XSwgWy02OS44OTM2MzUsIC00LjI5ODE4N10sIFstNzAuMzk0MDQ0LCAtMy43NjY1OTFdLCBbLTcwLjY5MjY4MiwgLTMuNzQyODcyXSwgWy03MC4wNDc3MDksIC0yLjcyNTE1Nl0sIFstNzAuODEzNDc2LCAtMi4yNTY4NjVdLCBbLTcxLjQxMzY0NiwgLTIuMzQyODAyXSwgWy03MS43NzQ3NjEsIC0yLjE2OTc5XSwgWy03Mi4zMjU3ODcsIC0yLjQzNDIxOF0sIFstNzMuMDcwMzkyLCAtMi4zMDg5NTRdLCBbLTczLjY1OTUwNCwgLTEuMjYwNDkxXSwgWy03NC4xMjIzOTUsIC0xLjAwMjgzM10sIFstNzQuNDQxNjAxLCAtMC41MzA4Ml0sIFstNzUuMTA2NjI1LCAtMC4wNTcyMDVdLCBbLTc1LjM3MzIyMywgLTAuMTUyMDMyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDT0wiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkNvbG9tYmlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stODIuOTY1NzgzLCA4LjIyNTAyOF0sIFstODMuNTA4NDM3LCA4LjQ0NjkyN10sIFstODMuNzExNDc0LCA4LjY1NjgzNl0sIFstODMuNTk2MzEzLCA4LjgzMDQ0M10sIFstODMuNjMyNjQyLCA5LjA1MTM4Nl0sIFstODMuOTA5ODg2LCA5LjI5MDgwM10sIFstODQuMzAzNDAyLCA5LjQ4NzM1NF0sIFstODQuNjQ3NjQ0LCA5LjYxNTUzN10sIFstODQuNzEzMzUxLCA5LjkwODA1Ml0sIFstODQuOTc1NjYsIDEwLjA4NjcyM10sIFstODQuOTExMzc1LCA5Ljc5NTk5Ml0sIFstODUuMTEwOTIzLCA5LjU1NzA0XSwgWy04NS4zMzk0ODgsIDkuODM0NTQyXSwgWy04NS42NjA3ODcsIDkuOTMzMzQ3XSwgWy04NS43OTc0NDUsIDEwLjEzNDg4Nl0sIFstODUuNzkxNzA5LCAxMC40MzkzMzddLCBbLTg1LjY1OTMxNCwgMTAuNzU0MzMxXSwgWy04NS45NDE3MjUsIDEwLjg5NTI3OF0sIFstODUuNzEyNTQsIDExLjA4ODQ0NV0sIFstODUuNTYxODUyLCAxMS4yMTcxMTldLCBbLTg0LjkwMzAwMywgMTAuOTUyMzAzXSwgWy04NC42NzMwNjksIDExLjA4MjY1N10sIFstODQuMzU1OTMxLCAxMC45OTkyMjZdLCBbLTg0LjE5MDE3OSwgMTAuNzkzNDVdLCBbLTgzLjg5NTA1NCwgMTAuNzI2ODM5XSwgWy04My42NTU2MTIsIDEwLjkzODc2NF0sIFstODMuNDAyMzIsIDEwLjM5NTQzOF0sIFstODMuMDE1Njc3LCA5Ljk5Mjk4Ml0sIFstODIuNTQ2MTk2LCA5LjU2NjEzNV0sIFstODIuOTMyODkxLCA5LjQ3NjgxMl0sIFstODIuOTI3MTU1LCA5LjA3NDMzXSwgWy04Mi43MTkxODMsIDguOTI1NzA5XSwgWy04Mi44Njg2NTcsIDguODA3MjY2XSwgWy04Mi44Mjk3NzEsIDguNjI2Mjk1XSwgWy04Mi45MTMxNzYsIDguNDIzNTE3XSwgWy04Mi45NjU3ODMsIDguMjI1MDI4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDUkkiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkNvc3RhIFJpY2EiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy04Mi4yNjgxNTEsIDIzLjE4ODYxMV0sIFstODEuNDA0NDU3LCAyMy4xMTcyNzFdLCBbLTgwLjYxODc2OSwgMjMuMTA1OThdLCBbLTc5LjY3OTUyNCwgMjIuNzY1MzAzXSwgWy03OS4yODE0ODYsIDIyLjM5OTIwMl0sIFstNzguMzQ3NDM0LCAyMi41MTIxNjZdLCBbLTc3Ljk5MzI5NiwgMjIuMjc3MTk0XSwgWy03Ny4xNDY0MjIsIDIxLjY1Nzg1MV0sIFstNzYuNTIzODI1LCAyMS4yMDY4Ml0sIFstNzYuMTk0NjIsIDIxLjIyMDU2NV0sIFstNzUuNTk4MjIyLCAyMS4wMTY2MjRdLCBbLTc1LjY3MTA2LCAyMC43MzUwOTFdLCBbLTc0LjkzMzg5NiwgMjAuNjkzOTA1XSwgWy03NC4xNzgwMjUsIDIwLjI4NDYyOF0sIFstNzQuMjk2NjQ4LCAyMC4wNTAzNzldLCBbLTc0Ljk2MTU5NSwgMTkuOTIzNDM1XSwgWy03NS42MzQ2OCwgMTkuODczNzc0XSwgWy03Ni4zMjM2NTYsIDE5Ljk1Mjg5MV0sIFstNzcuNzU1NDgxLCAxOS44NTU0ODFdLCBbLTc3LjA4NTEwOCwgMjAuNDEzMzU0XSwgWy03Ny40OTI2NTUsIDIwLjY3MzEwNV0sIFstNzguMTM3MjkyLCAyMC43Mzk5NDldLCBbLTc4LjQ4MjgyNywgMjEuMDI4NjEzXSwgWy03OC43MTk4NjcsIDIxLjU5ODExNF0sIFstNzkuMjg1LCAyMS41NTkxNzVdLCBbLTgwLjIxNzQ3NSwgMjEuODI3MzI0XSwgWy04MC41MTc1MzUsIDIyLjAzNzA3OV0sIFstODEuODIwOTQzLCAyMi4xOTIwNTddLCBbLTgyLjE2OTk5MiwgMjIuMzg3MTA5XSwgWy04MS43OTUwMDIsIDIyLjYzNjk2NV0sIFstODIuNzc1ODk4LCAyMi42ODgxNV0sIFstODMuNDk0NDU5LCAyMi4xNjg1MThdLCBbLTgzLjkwODgsIDIyLjE1NDU2NV0sIFstODQuMDUyMTUxLCAyMS45MTA1NzVdLCBbLTg0LjU0NzAzLCAyMS44MDEyMjhdLCBbLTg0Ljk3NDkxMSwgMjEuODk2MDI4XSwgWy04NC40NDcwNjIsIDIyLjIwNDk1XSwgWy04NC4yMzAzNTcsIDIyLjU2NTc1NV0sIFstODMuNzc4MjQsIDIyLjc4ODExOF0sIFstODMuMjY3NTQ4LCAyMi45ODMwNDJdLCBbLTgyLjUxMDQzNiwgMjMuMDc4NzQ3XSwgWy04Mi4yNjgxNTEsIDIzLjE4ODYxMV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ1VCIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDdWJhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1szMi43MzE3OCwgMzUuMTQwMDI2XSwgWzMyLjgwMjQ3NCwgMzUuMTQ1NTA0XSwgWzMyLjk0Njk2MSwgMzUuMzg2NzAzXSwgWzMzLjY2NzIyNywgMzUuMzczMjE2XSwgWzM0LjU3NjQ3NCwgMzUuNjcxNTk2XSwgWzMzLjkwMDgwNCwgMzUuMjQ1NzU2XSwgWzMzLjk3MzYxNywgMzUuMDU4NTA2XSwgWzMzLjg2NjQ0LCAzNS4wOTM1OTVdLCBbMzMuNjc1MzkyLCAzNS4wMTc4NjNdLCBbMzMuNTI1Njg1LCAzNS4wMzg2ODhdLCBbMzMuNDc1ODE3LCAzNS4wMDAzNDVdLCBbMzMuNDU1OTIyLCAzNS4xMDE0MjRdLCBbMzMuMzgzODMzLCAzNS4xNjI3MTJdLCBbMzMuMTkwOTc3LCAzNS4xNzMxMjVdLCBbMzIuOTE5NTcyLCAzNS4wODc4MzNdLCBbMzIuNzMxNzgsIDM1LjE0MDAyNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiLTk5IiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJOb3J0aGVybiBDeXBydXMiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzMzLjk3MzYxNywgMzUuMDU4NTA2XSwgWzM0LjAwNDg4MSwgMzQuOTc4MDk4XSwgWzMyLjk3OTgyNywgMzQuNTcxODY5XSwgWzMyLjQ5MDI5NiwgMzQuNzAxNjU1XSwgWzMyLjI1NjY2NywgMzUuMTAzMjMyXSwgWzMyLjczMTc4LCAzNS4xNDAwMjZdLCBbMzIuOTE5NTcyLCAzNS4wODc4MzNdLCBbMzMuMTkwOTc3LCAzNS4xNzMxMjVdLCBbMzMuMzgzODMzLCAzNS4xNjI3MTJdLCBbMzMuNDU1OTIyLCAzNS4xMDE0MjRdLCBbMzMuNDc1ODE3LCAzNS4wMDAzNDVdLCBbMzMuNTI1Njg1LCAzNS4wMzg2ODhdLCBbMzMuNjc1MzkyLCAzNS4wMTc4NjNdLCBbMzMuODY2NDQsIDM1LjA5MzU5NV0sIFszMy45NzM2MTcsIDM1LjA1ODUwNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ1lQIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDeXBydXMiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzE2Ljk2MDI4OCwgNDguNTk2OTgyXSwgWzE2LjQ5OTI4MywgNDguNzg1ODA4XSwgWzE2LjAyOTY0NywgNDguNzMzODk5XSwgWzE1LjI1MzQxNiwgNDkuMDM5MDc0XSwgWzE0LjkwMTQ0NywgNDguOTY0NDAyXSwgWzE0LjMzODg5OCwgNDguNTU1MzA1XSwgWzEzLjU5NTk0NiwgNDguODc3MTcyXSwgWzEzLjAzMTMyOSwgNDkuMzA3MDY4XSwgWzEyLjUyMTAyNCwgNDkuNTQ3NDE1XSwgWzEyLjQxNTE5MSwgNDkuOTY5MTIxXSwgWzEyLjI0MDExMSwgNTAuMjY2MzM4XSwgWzEyLjk2NjgzNywgNTAuNDg0MDc2XSwgWzEzLjMzODEzMiwgNTAuNzMzMjM0XSwgWzE0LjA1NjIyOCwgNTAuOTI2OTE4XSwgWzE0LjMwNzAxMywgNTEuMTE3MjY4XSwgWzE0LjU3MDcxOCwgNTEuMDAyMzM5XSwgWzE1LjAxNjk5NiwgNTEuMTA2Njc0XSwgWzE1LjQ5MDk3MiwgNTAuNzg0NzNdLCBbMTYuMjM4NjI3LCA1MC42OTc3MzNdLCBbMTYuMTc2MjUzLCA1MC40MjI2MDddLCBbMTYuNzE5NDc2LCA1MC4yMTU3NDddLCBbMTYuODY4NzY5LCA1MC40NzM5NzRdLCBbMTcuNTU0NTY3LCA1MC4zNjIxNDZdLCBbMTcuNjQ5NDQ1LCA1MC4wNDkwMzhdLCBbMTguMzkyOTE0LCA0OS45ODg2MjldLCBbMTguODUzMTQ0LCA0OS40OTYyM10sIFsxOC41NTQ5NzEsIDQ5LjQ5NTAxNV0sIFsxOC4zOTk5OTQsIDQ5LjMxNTAwMV0sIFsxOC4xNzA0OTgsIDQ5LjI3MTUxNV0sIFsxOC4xMDQ5NzMsIDQ5LjA0Mzk4M10sIFsxNy45MTM1MTIsIDQ4Ljk5NjQ5M10sIFsxNy44ODY0ODUsIDQ4LjkwMzQ3NV0sIFsxNy41NDUwMDcsIDQ4LjgwMDAxOV0sIFsxNy4xMDE5ODUsIDQ4LjgxNjk2OV0sIFsxNi45NjAyODgsIDQ4LjU5Njk4Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ1pFIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDemVjaCBSZXB1YmxpYyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbOS45MjE5MDYsIDU0Ljk4MzEwNF0sIFs5LjkzOTU4LCA1NC41OTY2NDJdLCBbMTAuOTUwMTEyLCA1NC4zNjM2MDddLCBbMTAuOTM5NDY3LCA1NC4wMDg2OTNdLCBbMTEuOTU2MjUyLCA1NC4xOTY0ODZdLCBbMTIuNTE4NDQsIDU0LjQ3MDM3MV0sIFsxMy42NDc0NjcsIDU0LjA3NTUxMV0sIFsxNC4xMTk2ODYsIDUzLjc1NzAyOV0sIFsxNC4zNTMzMTUsIDUzLjI0ODE3MV0sIFsxNC4wNzQ1MjEsIDUyLjk4MTI2M10sIFsxNC40Mzc2LCA1Mi42MjQ4NV0sIFsxNC42ODUwMjYsIDUyLjA4OTk0N10sIFsxNC42MDcwOTgsIDUxLjc0NTE4OF0sIFsxNS4wMTY5OTYsIDUxLjEwNjY3NF0sIFsxNC41NzA3MTgsIDUxLjAwMjMzOV0sIFsxNC4zMDcwMTMsIDUxLjExNzI2OF0sIFsxNC4wNTYyMjgsIDUwLjkyNjkxOF0sIFsxMy4zMzgxMzIsIDUwLjczMzIzNF0sIFsxMi45NjY4MzcsIDUwLjQ4NDA3Nl0sIFsxMi4yNDAxMTEsIDUwLjI2NjMzOF0sIFsxMi40MTUxOTEsIDQ5Ljk2OTEyMV0sIFsxMi41MjEwMjQsIDQ5LjU0NzQxNV0sIFsxMy4wMzEzMjksIDQ5LjMwNzA2OF0sIFsxMy41OTU5NDYsIDQ4Ljg3NzE3Ml0sIFsxMy4yNDMzNTcsIDQ4LjQxNjExNV0sIFsxMi44ODQxMDMsIDQ4LjI4OTE0Nl0sIFsxMy4wMjU4NTEsIDQ3LjYzNzU4NF0sIFsxMi45MzI2MjcsIDQ3LjQ2NzY0Nl0sIFsxMi42MjA3NiwgNDcuNjcyMzg4XSwgWzEyLjE0MTM1NywgNDcuNzAzMDgzXSwgWzExLjQyNjQxNCwgNDcuNTIzNzY2XSwgWzEwLjU0NDUwNCwgNDcuNTY2Mzk5XSwgWzEwLjQwMjA4NCwgNDcuMzAyNDg4XSwgWzkuODk2MDY4LCA0Ny41ODAxOTddLCBbOS41OTQyMjYsIDQ3LjUyNTA1OF0sIFs4LjUyMjYxMiwgNDcuODMwODI4XSwgWzguMzE3MzAxLCA0Ny42MTM1OF0sIFs3LjQ2Njc1OSwgNDcuNjIwNTgyXSwgWzcuNTkzNjc2LCA0OC4zMzMwMTldLCBbOC4wOTkyNzksIDQ5LjAxNzc4NF0sIFs2LjY1ODIzLCA0OS4yMDE5NThdLCBbNi4xODYzMiwgNDkuNDYzODAzXSwgWzYuMjQyNzUxLCA0OS45MDIyMjZdLCBbNi4wNDMwNzMsIDUwLjEyODA1Ml0sIFs2LjE1NjY1OCwgNTAuODAzNzIxXSwgWzUuOTg4NjU4LCA1MS44NTE2MTZdLCBbNi41ODkzOTcsIDUxLjg1MjAyOV0sIFs2Ljg0Mjg3LCA1Mi4yMjg0NF0sIFs3LjA5MjA1MywgNTMuMTQ0MDQzXSwgWzYuOTA1MTQsIDUzLjQ4MjE2Ml0sIFs3LjEwMDQyNSwgNTMuNjkzOTMyXSwgWzcuOTM2MjM5LCA1My43NDgyOTZdLCBbOC4xMjE3MDYsIDUzLjUyNzc5Ml0sIFs4LjgwMDczNCwgNTQuMDIwNzg2XSwgWzguNTcyMTE4LCA1NC4zOTU2NDZdLCBbOC41MjYyMjksIDU0Ljk2Mjc0NF0sIFs5LjI4MjA0OSwgNTQuODMwODY1XSwgWzkuOTIxOTA2LCA1NC45ODMxMDRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkRFVSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiR2VybWFueSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbNDMuMDgxMjI2LCAxMi42OTk2MzldLCBbNDMuMzE3ODUyLCAxMi4zOTAxNDhdLCBbNDMuMjg2MzgxLCAxMS45NzQ5MjhdLCBbNDIuNzE1ODc0LCAxMS43MzU2NDFdLCBbNDMuMTQ1MzA1LCAxMS40NjIwNF0sIFs0Mi43NzY4NTIsIDEwLjkyNjg3OV0sIFs0Mi41NTQ5MywgMTEuMTA1MTFdLCBbNDIuMzE0MTQsIDExLjAzNDJdLCBbNDEuNzU1NTcsIDExLjA1MDkxXSwgWzQxLjczOTU5LCAxMS4zNTUxMV0sIFs0MS42NjE3NiwgMTEuNjMxMl0sIFs0MiwgMTIuMV0sIFs0Mi4zNTE1NiwgMTIuNTQyMjNdLCBbNDIuNzc5NjQyLCAxMi40NTU0MTZdLCBbNDMuMDgxMjI2LCAxMi42OTk2MzldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkRKSSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRGppYm91dGkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxMi42OTAwMDYsIDU1LjYwOTk5MV0sIFsxMi4wODk5OTEsIDU0LjgwMDAxNV0sIFsxMS4wNDM1NDMsIDU1LjM2NDg2NF0sIFsxMC45MDM5MTQsIDU1Ljc3OTk1NV0sIFsxMi4zNzA5MDQsIDU2LjExMTQwN10sIFsxMi42OTAwMDYsIDU1LjYwOTk5MV1dXSwgW1tbMTAuOTEyMTgyLCA1Ni40NTg2MjFdLCBbMTAuNjY3ODA0LCA1Ni4wODEzODNdLCBbMTAuMzY5OTkzLCA1Ni4xOTAwMDddLCBbOS42NDk5ODUsIDU1LjQ2OTk5OV0sIFs5LjkyMTkwNiwgNTQuOTgzMTA0XSwgWzkuMjgyMDQ5LCA1NC44MzA4NjVdLCBbOC41MjYyMjksIDU0Ljk2Mjc0NF0sIFs4LjEyMDMxMSwgNTUuNTE3NzIzXSwgWzguMDg5OTc3LCA1Ni41NDAwMTJdLCBbOC4yNTY1ODIsIDU2LjgwOTk2OV0sIFs4LjU0MzQzOCwgNTcuMTEwMDAzXSwgWzkuNDI0NDY5LCA1Ny4xNzIwNjZdLCBbOS43NzU1NTksIDU3LjQ0Nzk0MV0sIFsxMC41ODAwMDYsIDU3LjczMDAxN10sIFsxMC41NDYxMDYsIDU3LjIxNTczM10sIFsxMC4yNSwgNTYuODkwMDE2XSwgWzEwLjM2OTk5MywgNTYuNjA5OTgyXSwgWzEwLjkxMjE4MiwgNTYuNDU4NjIxXV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJETksiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkRlbm1hcmsiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy03MS43MTIzNjEsIDE5LjcxNDQ1Nl0sIFstNzEuNTg3MzA0LCAxOS44ODQ5MTFdLCBbLTcwLjgwNjcwNiwgMTkuODgwMjg2XSwgWy03MC4yMTQzNjUsIDE5LjYyMjg4NV0sIFstNjkuOTUwODE1LCAxOS42NDhdLCBbLTY5Ljc2OTI1LCAxOS4yOTMyNjddLCBbLTY5LjIyMjEyNiwgMTkuMzEzMjE0XSwgWy02OS4yNTQzNDYsIDE5LjAxNTE5Nl0sIFstNjguODA5NDEyLCAxOC45NzkwNzRdLCBbLTY4LjMxNzk0MywgMTguNjEyMTk4XSwgWy02OC42ODkzMTYsIDE4LjIwNTE0Ml0sIFstNjkuMTY0OTQ2LCAxOC40MjI2NDhdLCBbLTY5LjYyMzk4OCwgMTguMzgwNzEzXSwgWy02OS45NTI5MzQsIDE4LjQyODMwN10sIFstNzAuMTMzMjMzLCAxOC4yNDU5MTVdLCBbLTcwLjUxNzEzNywgMTguMTg0MjkxXSwgWy03MC42NjkyOTgsIDE4LjQyNjg4Nl0sIFstNzAuOTk5OTUsIDE4LjI4MzMyOV0sIFstNzEuNDAwMjEsIDE3LjU5ODU2NF0sIFstNzEuNjU3NjYyLCAxNy43NTc1NzNdLCBbLTcxLjcwODMwNSwgMTguMDQ0OTk3XSwgWy03MS42ODc3MzgsIDE4LjMxNjY2XSwgWy03MS45NDUxMTIsIDE4LjYxNjldLCBbLTcxLjcwMTMwMywgMTguNzg1NDE3XSwgWy03MS42MjQ4NzMsIDE5LjE2OTgzOF0sIFstNzEuNzEyMzYxLCAxOS43MTQ0NTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkRPTSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRG9taW5pY2FuIFJlcHVibGljIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxMS45OTk1MDYsIDIzLjQ3MTY2OF0sIFs4LjU3Mjg5MywgMjEuNTY1NjYxXSwgWzUuNjc3NTY2LCAxOS42MDEyMDddLCBbNC4yNjc0MTksIDE5LjE1NTI2NV0sIFszLjE1ODEzMywgMTkuMDU3MzY0XSwgWzMuMTQ2NjYxLCAxOS42OTM1NzldLCBbMi42ODM1ODgsIDE5Ljg1NjIzXSwgWzIuMDYwOTkxLCAyMC4xNDIyMzNdLCBbMS44MjMyMjgsIDIwLjYxMDgwOV0sIFstMS41NTAwNTUsIDIyLjc5MjY2Nl0sIFstNC45MjMzMzcsIDI0Ljk3NDU3NF0sIFstOC42ODQ0LCAyNy4zOTU3NDRdLCBbLTguNjY1MTI0LCAyNy41ODk0NzldLCBbLTguNjY1NTksIDI3LjY1NjQyNl0sIFstOC42NzQxMTYsIDI4Ljg0MTI4OV0sIFstNy4wNTkyMjgsIDI5LjU3OTIyOF0sIFstNi4wNjA2MzIsIDI5LjczMTddLCBbLTUuMjQyMTI5LCAzMC4wMDA0NDNdLCBbLTQuODU5NjQ2LCAzMC41MDExODhdLCBbLTMuNjkwNDQxLCAzMC44OTY5NTJdLCBbLTMuNjQ3NDk4LCAzMS42MzcyOTRdLCBbLTMuMDY4OTgsIDMxLjcyNDQ5OF0sIFstMi42MTY2MDUsIDMyLjA5NDM0Nl0sIFstMS4zMDc4OTksIDMyLjI2Mjg4OV0sIFstMS4xMjQ1NTEsIDMyLjY1MTUyMl0sIFstMS4zODgwNDksIDMyLjg2NDAxNV0sIFstMS43MzM0NTUsIDMzLjkxOTcxM10sIFstMS43OTI5ODYsIDM0LjUyNzkxOV0sIFstMi4xNjk5MTQsIDM1LjE2ODM5Nl0sIFstMS4yMDg2MDMsIDM1LjcxNDg0OV0sIFstMC4xMjc0NTQsIDM1Ljg4ODY2Ml0sIFswLjUwMzg3NywgMzYuMzAxMjczXSwgWzEuNDY2OTE5LCAzNi42MDU2NDddLCBbMy4xNjE2OTksIDM2Ljc4MzkwNV0sIFs0LjgxNTc1OCwgMzYuODY1MDM3XSwgWzUuMzIwMTIsIDM2LjcxNjUxOV0sIFs2LjI2MTgyLCAzNy4xMTA2NTVdLCBbNy4zMzAzODUsIDM3LjExODM4MV0sIFs3LjczNzA3OCwgMzYuODg1NzA4XSwgWzguNDIwOTY0LCAzNi45NDY0MjddLCBbOC4yMTc4MjQsIDM2LjQzMzE3N10sIFs4LjM3NjM2OCwgMzUuNDc5ODc2XSwgWzguMTQwOTgxLCAzNC42NTUxNDZdLCBbNy41MjQ0ODIsIDM0LjA5NzM3Nl0sIFs3LjYxMjY0MiwgMzMuMzQ0MTE1XSwgWzguNDMwNDczLCAzMi43NDgzMzddLCBbOC40MzkxMDMsIDMyLjUwNjI4NV0sIFs5LjA1NTYwMywgMzIuMTAyNjkyXSwgWzkuNDgyMTQsIDMwLjMwNzU1Nl0sIFs5LjgwNTYzNCwgMjkuNDI0NjM4XSwgWzkuODU5OTk4LCAyOC45NTk5OV0sIFs5LjY4Mzg4NSwgMjguMTQ0MTc0XSwgWzkuNzU2MTI4LCAyNy42ODgyNTldLCBbOS42MjkwNTYsIDI3LjE0MDk1M10sIFs5LjcxNjI4NiwgMjYuNTEyMjA2XSwgWzkuMzE5NDExLCAyNi4wOTQzMjVdLCBbOS45MTA2OTMsIDI1LjM2NTQ1NV0sIFs5Ljk0ODI2MSwgMjQuOTM2OTU0XSwgWzEwLjMwMzg0NywgMjQuMzc5MzEzXSwgWzEwLjc3MTM2NCwgMjQuNTYyNTMyXSwgWzExLjU2MDY2OSwgMjQuMDk3OTA5XSwgWzExLjk5OTUwNiwgMjMuNDcxNjY4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJEWkEiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkFsZ2VyaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy04MC4zMDI1NjEsIC0zLjQwNDg1Nl0sIFstNzkuNzcwMjkzLCAtMi42NTc1MTJdLCBbLTc5Ljk4NjU1OSwgLTIuMjIwNzk0XSwgWy04MC4zNjg3ODQsIC0yLjY4NTE1OV0sIFstODAuOTY3NzY1LCAtMi4yNDY5NDNdLCBbLTgwLjc2NDgwNiwgLTEuOTY1MDQ4XSwgWy04MC45MzM2NTksIC0xLjA1NzQ1NV0sIFstODAuNTgzMzcsIC0wLjkwNjY2M10sIFstODAuMzk5MzI1LCAtMC4yODM3MDNdLCBbLTgwLjAyMDg5OCwgMC4zNjAzNF0sIFstODAuMDkwNjEsIDAuNzY4NDI5XSwgWy03OS41NDI3NjIsIDAuOTgyOTM4XSwgWy03OC44NTUyNTksIDEuMzgwOTI0XSwgWy03Ny44NTUwNjEsIDAuODA5OTI1XSwgWy03Ny42Njg2MTMsIDAuODI1ODkzXSwgWy03Ny40MjQ5ODQsIDAuMzk1Njg3XSwgWy03Ni41NzYzOCwgMC4yNTY5MzZdLCBbLTc2LjI5MjMxNCwgMC40MTYwNDddLCBbLTc1LjgwMTQ2NiwgMC4wODQ4MDFdLCBbLTc1LjM3MzIyMywgLTAuMTUyMDMyXSwgWy03NS4yMzM3MjMsIC0wLjkxMTQxN10sIFstNzUuNTQ0OTk2LCAtMS41NjE2MV0sIFstNzYuNjM1Mzk0LCAtMi42MDg2NzhdLCBbLTc3LjgzNzkwNSwgLTMuMDAzMDIxXSwgWy03OC40NTA2ODQsIC0zLjg3MzA5N10sIFstNzguNjM5ODk3LCAtNC41NDc3ODRdLCBbLTc5LjIwNTI4OSwgLTQuOTU5MTI5XSwgWy03OS42MjQ5NzksIC00LjQ1NDE5OF0sIFstODAuMDI4OTA4LCAtNC4zNDYwOTFdLCBbLTgwLjQ0MjI0MiwgLTQuNDI1NzI0XSwgWy04MC40NjkyOTUsIC00LjA1OTI4N10sIFstODAuMTg0MDE1LCAtMy44MjExNjJdLCBbLTgwLjMwMjU2MSwgLTMuNDA0ODU2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJFQ1UiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkVjdWFkb3IiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzM0LjkyMjYsIDI5LjUwMTMzXSwgWzM0LjY0MTc0LCAyOS4wOTk0Ml0sIFszNC40MjY1NSwgMjguMzQzOTldLCBbMzQuMTU0NTEsIDI3LjgyMzNdLCBbMzMuOTIxMzYsIDI3LjY0ODddLCBbMzMuNTg4MTEsIDI3Ljk3MTM2XSwgWzMzLjEzNjc2LCAyOC40MTc2NV0sIFszMi40MjMyMywgMjkuODUxMDhdLCBbMzIuMzIwNDYsIDI5Ljc2MDQzXSwgWzMyLjczNDgyLCAyOC43MDUyM10sIFszMy4zNDg3NiwgMjcuNjk5ODldLCBbMzQuMTA0NTUsIDI2LjE0MjI3XSwgWzM0LjQ3Mzg3LCAyNS41OTg1Nl0sIFszNC43OTUwNywgMjUuMDMzNzVdLCBbMzUuNjkyNDEsIDIzLjkyNjcxXSwgWzM1LjQ5MzcyLCAyMy43NTIzN10sIFszNS41MjU5OCwgMjMuMTAyNDRdLCBbMzYuNjkwNjksIDIyLjIwNDg1XSwgWzM2Ljg2NjIzLCAyMl0sIFszMi45LCAyMl0sIFsyOS4wMiwgMjJdLCBbMjUsIDIyXSwgWzI1LCAyNS42ODI1XSwgWzI1LCAyOS4yMzg2NTVdLCBbMjQuNzAwMDcsIDMwLjA0NDE5XSwgWzI0Ljk1NzYyLCAzMC42NjE2XSwgWzI0LjgwMjg3LCAzMS4wODkyOV0sIFsyNS4xNjQ4MiwgMzEuNTY5MTVdLCBbMjYuNDk1MzMsIDMxLjU4NTY4XSwgWzI3LjQ1NzYyLCAzMS4zMjEyNl0sIFsyOC40NTA0OCwgMzEuMDI1NzddLCBbMjguOTEzNTMsIDMwLjg3MDA1XSwgWzI5LjY4MzQyLCAzMS4xODY4Nl0sIFszMC4wOTUwMywgMzEuNDczNF0sIFszMC45NzY5MywgMzEuNTU1ODZdLCBbMzEuNjg3OTYsIDMxLjQyOTZdLCBbMzEuOTYwNDEsIDMwLjkzMzZdLCBbMzIuMTkyNDcsIDMxLjI2MDM0XSwgWzMyLjk5MzkyLCAzMS4wMjQwN10sIFszMy43NzM0LCAzMC45Njc0Nl0sIFszNC4yNjU0NCwgMzEuMjE5MzZdLCBbMzQuOTIyNiwgMjkuNTAxMzNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkVHWSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRWd5cHQiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzQyLjM1MTU2LCAxMi41NDIyM10sIFs0Mi4wMDk3NSwgMTIuODY1ODJdLCBbNDEuNTk4NTYsIDEzLjQ1MjA5XSwgWzQxLjE1NTE5NCwgMTMuNzczMzJdLCBbNDAuODk2NiwgMTQuMTE4NjRdLCBbNDAuMDI2MjE5LCAxNC41MTk1NzldLCBbMzkuMzQwNjEsIDE0LjUzMTU1XSwgWzM5LjA5OTQsIDE0Ljc0MDY0XSwgWzM4LjUxMjk1LCAxNC41MDU0N10sIFszNy45MDYwNywgMTQuOTU5NDNdLCBbMzcuNTkzNzcsIDE0LjIxMzFdLCBbMzYuNDI5NTEsIDE0LjQyMjExXSwgWzM2LjMyMzE4OSwgMTQuODIyNDgxXSwgWzM2Ljc1Mzg2LCAxNi4yOTE4NzRdLCBbMzYuODUyNTMsIDE2Ljk1NjU1XSwgWzM3LjE2NzQ3LCAxNy4yNjMxNF0sIFszNy45MDQsIDE3LjQyNzU0XSwgWzM4LjQxMDA5LCAxNy45OTgzMDddLCBbMzguOTkwNjIzLCAxNi44NDA2MjZdLCBbMzkuMjY2MTEsIDE1LjkyMjcyM10sIFszOS44MTQyOTQsIDE1LjQzNTY0N10sIFs0MS4xNzkyNzUsIDE0LjQ5MTA4XSwgWzQxLjczNDk1MiwgMTMuOTIxMDM3XSwgWzQyLjI3NjgzMSwgMTMuMzQzOTkyXSwgWzQyLjU4OTU3NiwgMTMuMDAwNDIxXSwgWzQzLjA4MTIyNiwgMTIuNjk5NjM5XSwgWzQyLjc3OTY0MiwgMTIuNDU1NDE2XSwgWzQyLjM1MTU2LCAxMi41NDIyM11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiRVJJIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJFcml0cmVhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stOS4wMzQ4MTgsIDQxLjg4MDU3MV0sIFstOC45ODQ0MzMsIDQyLjU5Mjc3NV0sIFstOS4zOTI4ODQsIDQzLjAyNjYyNV0sIFstNy45NzgxOSwgNDMuNzQ4MzM4XSwgWy02Ljc1NDQ5MiwgNDMuNTY3OTA5XSwgWy01LjQxMTg4NiwgNDMuNTc0MjRdLCBbLTQuMzQ3ODQzLCA0My40MDM0NDldLCBbLTMuNTE3NTMyLCA0My40NTU5MDFdLCBbLTEuOTAxMzUxLCA0My40MjI4MDJdLCBbLTEuNTAyNzcxLCA0My4wMzQwMTRdLCBbMC4zMzgwNDcsIDQyLjU3OTU0Nl0sIFswLjcwMTU5MSwgNDIuNzk1NzM0XSwgWzEuODI2NzkzLCA0Mi4zNDMzODVdLCBbMi45ODU5OTksIDQyLjQ3MzAxNV0sIFszLjAzOTQ4NCwgNDEuODkyMTJdLCBbMi4wOTE4NDIsIDQxLjIyNjA4OV0sIFswLjgxMDUyNSwgNDEuMDE0NzMyXSwgWzAuNzIxMzMxLCA0MC42NzgzMThdLCBbMC4xMDY2OTIsIDQwLjEyMzkzNF0sIFstMC4yNzg3MTEsIDM5LjMwOTk3OF0sIFswLjExMTI5MSwgMzguNzM4NTE0XSwgWy0wLjQ2NzEyNCwgMzguMjkyMzY2XSwgWy0wLjY4MzM4OSwgMzcuNjQyMzU0XSwgWy0xLjQzODM4MiwgMzcuNDQzMDY0XSwgWy0yLjE0NjQ1MywgMzYuNjc0MTQ0XSwgWy0zLjQxNTc4MSwgMzYuNjU4OV0sIFstNC4zNjg5MDEsIDM2LjY3NzgzOV0sIFstNC45OTUyMTksIDM2LjMyNDcwOF0sIFstNS4zNzcxNiwgMzUuOTQ2ODVdLCBbLTUuODY2NDMyLCAzNi4wMjk4MTddLCBbLTYuMjM2Njk0LCAzNi4zNjc2NzddLCBbLTYuNTIwMTkxLCAzNi45NDI5MTNdLCBbLTcuNDUzNzI2LCAzNy4wOTc3ODhdLCBbLTcuNTM3MTA1LCAzNy40Mjg5MDRdLCBbLTcuMTY2NTA4LCAzNy44MDM4OTRdLCBbLTcuMDI5MjgxLCAzOC4wNzU3NjRdLCBbLTcuMzc0MDkyLCAzOC4zNzMwNTldLCBbLTcuMDk4MDM3LCAzOS4wMzAwNzNdLCBbLTcuNDk4NjMyLCAzOS42Mjk1NzFdLCBbLTcuMDY2NTkyLCAzOS43MTE4OTJdLCBbLTcuMDI2NDEzLCA0MC4xODQ1MjRdLCBbLTYuODY0MDIsIDQwLjMzMDg3Ml0sIFstNi44NTExMjcsIDQxLjExMTA4M10sIFstNi4zODkwODgsIDQxLjM4MTgxNV0sIFstNi42Njg2MDYsIDQxLjg4MzM4N10sIFstNy4yNTEzMDksIDQxLjkxODM0Nl0sIFstNy40MjI1MTMsIDQxLjc5MjA3NV0sIFstOC4wMTMxNzUsIDQxLjc5MDg4Nl0sIFstOC4yNjM4NTcsIDQyLjI4MDQ2OV0sIFstOC42NzE5NDYsIDQyLjEzNDY4OV0sIFstOS4wMzQ4MTgsIDQxLjg4MDU3MV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiRVNQIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJTcGFpbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMjQuMzEyODYzLCA1Ny43OTM0MjRdLCBbMjQuNDI4OTI4LCA1OC4zODM0MTNdLCBbMjQuMDYxMTk4LCA1OC4yNTczNzVdLCBbMjMuNDI2NTYsIDU4LjYxMjc1M10sIFsyMy4zMzk3OTUsIDU5LjE4NzI0XSwgWzI0LjYwNDIxNCwgNTkuNDY1ODU0XSwgWzI1Ljg2NDE4OSwgNTkuNjExMDldLCBbMjYuOTQ5MTM2LCA1OS40NDU4MDNdLCBbMjcuOTgxMTE0LCA1OS40NzUzODhdLCBbMjguMTMxNjk5LCA1OS4zMDA4MjVdLCBbMjcuNDIwMTY2LCA1OC43MjQ1ODFdLCBbMjcuNzE2Njg2LCA1Ny43OTE4OTldLCBbMjcuMjg4MTg1LCA1Ny40NzQ1MjhdLCBbMjYuNDYzNTMyLCA1Ny40NzYzODldLCBbMjUuNjAyODEsIDU3Ljg0NzUyOV0sIFsyNS4xNjQ1OTQsIDU3Ljk3MDE1N10sIFsyNC4zMTI4NjMsIDU3Ljc5MzQyNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiRVNUIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJFc3RvbmlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1szNy45MDYwNywgMTQuOTU5NDNdLCBbMzguNTEyOTUsIDE0LjUwNTQ3XSwgWzM5LjA5OTQsIDE0Ljc0MDY0XSwgWzM5LjM0MDYxLCAxNC41MzE1NV0sIFs0MC4wMjYyNSwgMTQuNTE5NTldLCBbNDAuODk2NiwgMTQuMTE4NjRdLCBbNDEuMTU1MiwgMTMuNzczMzNdLCBbNDEuNTk4NTYsIDEzLjQ1MjA5XSwgWzQyLjAwOTc1LCAxMi44NjU4Ml0sIFs0Mi4zNTE1NiwgMTIuNTQyMjNdLCBbNDIsIDEyLjFdLCBbNDEuNjYxNzYsIDExLjYzMTJdLCBbNDEuNzM5NTksIDExLjM1NTExXSwgWzQxLjc1NTU3LCAxMS4wNTA5MV0sIFs0Mi4zMTQxNCwgMTEuMDM0Ml0sIFs0Mi41NTQ5MywgMTEuMTA1MTFdLCBbNDIuNzc2ODUyLCAxMC45MjY4NzldLCBbNDIuNTU4NzYsIDEwLjU3MjU4XSwgWzQyLjkyODEyLCAxMC4wMjE5NF0sIFs0My4yOTY5OSwgOS41NDA0OF0sIFs0My42Nzg3NSwgOS4xODM1OF0sIFs0Ni45NDgzNCwgNy45OTY4OF0sIFs0Ny43ODk0MiwgOC4wMDNdLCBbNDQuOTYzNiwgNS4wMDE2Ml0sIFs0My42NjA4NywgNC45NTc1NV0sIFs0Mi43Njk2NywgNC4yNTI1OV0sIFs0Mi4xMjg2MSwgNC4yMzQxM10sIFs0MS44NTUwODMsIDMuOTE4OTEyXSwgWzQxLjE3MTgsIDMuOTE5MDldLCBbNDAuNzY4NDgsIDQuMjU3MDJdLCBbMzkuODU0OTQsIDMuODM4NzldLCBbMzkuNTU5Mzg0LCAzLjQyMjA2XSwgWzM4Ljg5MjUxLCAzLjUwMDc0XSwgWzM4LjY3MTE0LCAzLjYxNjA3XSwgWzM4LjQzNjk3LCAzLjU4ODUxXSwgWzM4LjEyMDkxNSwgMy41OTg2MDVdLCBbMzYuODU1MDkzLCA0LjQ0Nzg2NF0sIFszNi4xNTkwNzksIDQuNDQ3ODY0XSwgWzM1LjgxNzQ0OCwgNC43NzY5NjZdLCBbMzUuODE3NDQ4LCA1LjMzODIzMl0sIFszNS4yOTgwMDcsIDUuNTA2XSwgWzM0LjcwNzAyLCA2LjU5NDIyXSwgWzM0LjI1MDMyLCA2LjgyNjA3XSwgWzM0LjA3NTEsIDcuMjI1OTVdLCBbMzMuNTY4MjksIDcuNzEzMzRdLCBbMzIuOTU0MTgsIDcuNzg0OTddLCBbMzMuMjk0OCwgOC4zNTQ1OF0sIFszMy44MjU1LCA4LjM3OTE2XSwgWzMzLjk3NDk4LCA4LjY4NDU2XSwgWzMzLjk2MTYyLCA5LjU4MzU4XSwgWzM0LjI1NzQ1LCAxMC42MzAwOV0sIFszNC43MzExNSwgMTAuOTEwMTddLCBbMzQuODMxNjMsIDExLjMxODk2XSwgWzM1LjI2MDQ5LCAxMi4wODI4Nl0sIFszNS44NjM2MywgMTIuNTc4MjhdLCBbMzYuMjcwMjIsIDEzLjU2MzMzXSwgWzM2LjQyOTUxLCAxNC40MjIxMV0sIFszNy41OTM3NywgMTQuMjEzMV0sIFszNy45MDYwNywgMTQuOTU5NDNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkVUSCIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRXRoaW9waWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzI4LjU5MTkzLCA2OS4wNjQ3NzddLCBbMjguNDQ1OTQ0LCA2OC4zNjQ2MTNdLCBbMjkuOTc3NDI2LCA2Ny42OTgyOTddLCBbMjkuMDU0NTg5LCA2Ni45NDQyODZdLCBbMzAuMjE3NjUsIDY1LjgwNTk4XSwgWzI5LjU0NDQzLCA2NC45NDg2NzJdLCBbMzAuNDQ0Njg1LCA2NC4yMDQ0NTNdLCBbMzAuMDM1ODcyLCA2My41NTI4MTRdLCBbMzEuNTE2MDkyLCA2Mi44Njc2ODddLCBbMzEuMTM5OTkxLCA2Mi4zNTc2OTNdLCBbMzAuMjExMTA3LCA2MS43ODAwMjhdLCBbMjguMDY5OTk4LCA2MC41MDM1MTddLCBbMjYuMjU1MTczLCA2MC40MjM5NjFdLCBbMjQuNDk2NjI0LCA2MC4wNTczMTZdLCBbMjIuODY5Njk1LCA1OS44NDYzNzNdLCBbMjIuMjkwNzY0LCA2MC4zOTE5MjFdLCBbMjEuMzIyMjQ0LCA2MC43MjAxN10sIFsyMS41NDQ4NjYsIDYxLjcwNTMyOV0sIFsyMS4wNTkyMTEsIDYyLjYwNzM5M10sIFsyMS41MzYwMjksIDYzLjE4OTczNV0sIFsyMi40NDI3NDQsIDYzLjgxNzgxXSwgWzI0LjczMDUxMiwgNjQuOTAyMzQ0XSwgWzI1LjM5ODA2OCwgNjUuMTExNDI3XSwgWzI1LjI5NDA0MywgNjUuNTM0MzQ2XSwgWzIzLjkwMzM3OSwgNjYuMDA2OTI3XSwgWzIzLjU2NTg4LCA2Ni4zOTYwNTFdLCBbMjMuNTM5NDczLCA2Ny45MzYwMDldLCBbMjEuOTc4NTM1LCA2OC42MTY4NDZdLCBbMjAuNjQ1NTkzLCA2OS4xMDYyNDddLCBbMjEuMjQ0OTM2LCA2OS4zNzA0NDNdLCBbMjIuMzU2MjM4LCA2OC44NDE3NDFdLCBbMjMuNjYyMDUsIDY4Ljg5MTI0N10sIFsyNC43MzU2NzksIDY4LjY0OTU1N10sIFsyNS42ODkyMTMsIDY5LjA5MjExNF0sIFsyNi4xNzk2MjIsIDY5LjgyNTI5OV0sIFsyNy43MzIyOTIsIDcwLjE2NDE5M10sIFsyOS4wMTU1NzMsIDY5Ljc2NjQ5MV0sIFsyOC41OTE5MywgNjkuMDY0Nzc3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJGSU4iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkZpbmxhbmQiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxNzguMzczNiwgLTE3LjMzOTkyXSwgWzE3OC43MTgwNiwgLTE3LjYyODQ2XSwgWzE3OC41NTI3MSwgLTE4LjE1MDU5XSwgWzE3Ny45MzI2NiwgLTE4LjI4Nzk5XSwgWzE3Ny4zODE0NiwgLTE4LjE2NDMyXSwgWzE3Ny4yODUwNCwgLTE3LjcyNDY1XSwgWzE3Ny42NzA4NywgLTE3LjM4MTE0XSwgWzE3OC4xMjU1NywgLTE3LjUwNDgxXSwgWzE3OC4zNzM2LCAtMTcuMzM5OTJdXV0sIFtbWzE3OS4zNjQxNDMsIC0xNi44MDEzNTRdLCBbMTc4LjcyNTA1OSwgLTE3LjAxMjA0Ml0sIFsxNzguNTk2ODM5LCAtMTYuNjM5MTVdLCBbMTc5LjA5NjYwOSwgLTE2LjQzMzk4NF0sIFsxNzkuNDEzNTA5LCAtMTYuMzc5MDU0XSwgWzE4MCwgLTE2LjA2NzEzM10sIFsxODAsIC0xNi41NTUyMTddLCBbMTc5LjM2NDE0MywgLTE2LjgwMTM1NF1dXSwgW1tbLTE3OS45MTczNjksIC0xNi41MDE3ODNdLCBbLTE4MCwgLTE2LjU1NTIxN10sIFstMTgwLCAtMTYuMDY3MTMzXSwgWy0xNzkuNzkzMzIsIC0xNi4wMjA4ODJdLCBbLTE3OS45MTczNjksIC0xNi41MDE3ODNdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkZKSSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRmlqaSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTYxLjIsIC01MS44NV0sIFstNjAsIC01MS4yNV0sIFstNTkuMTUsIC01MS41XSwgWy01OC41NSwgLTUxLjFdLCBbLTU3Ljc1LCAtNTEuNTVdLCBbLTU4LjA1LCAtNTEuOV0sIFstNTkuNCwgLTUyLjJdLCBbLTU5Ljg1LCAtNTEuODVdLCBbLTYwLjcsIC01Mi4zXSwgWy02MS4yLCAtNTEuODVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkZMSyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRmFsa2xhbmQgSXNsYW5kcyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZmZmYjIiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWy01Mi41NTY0MjUsIDIuNTA0NzA1XSwgWy01Mi45Mzk2NTcsIDIuMTI0ODU4XSwgWy01My40MTg0NjUsIDIuMDUzMzg5XSwgWy01My41NTQ4MzksIDIuMzM0ODk3XSwgWy01My43Nzg1MjEsIDIuMzc2NzAzXSwgWy01NC4wODgwNjMsIDIuMTA1NTU3XSwgWy01NC41MjQ3NTQsIDIuMzExODQ5XSwgWy01NC4yNzEyMywgMi43Mzg3NDhdLCBbLTU0LjE4NDI4NCwgMy4xOTQxNzJdLCBbLTU0LjAxMTUwNCwgMy42MjI1N10sIFstNTQuMzk5NTQyLCA0LjIxMjYxMV0sIFstNTQuNDc4NjMzLCA0Ljg5Njc1Nl0sIFstNTMuOTU4MDQ1LCA1Ljc1NjU0OF0sIFstNTMuNjE4NDUzLCA1LjY0NjUyOV0sIFstNTIuODgyMTQxLCA1LjQwOTg1MV0sIFstNTEuODIzMzQzLCA0LjU2NTc2OF0sIFstNTEuNjU3Nzk3LCA0LjE1NjIzMl0sIFstNTIuMjQ5MzM4LCAzLjI0MTA5NF0sIFstNTIuNTU2NDI1LCAyLjUwNDcwNV1dXSwgW1tbOS41NjAwMTYsIDQyLjE1MjQ5Ml0sIFs5LjIyOTc1MiwgNDEuMzgwMDA3XSwgWzguNzc1NzIzLCA0MS41ODM2MTJdLCBbOC41NDQyMTMsIDQyLjI1NjUxN10sIFs4Ljc0NjAwOSwgNDIuNjI4MTIyXSwgWzkuMzkwMDAxLCA0My4wMDk5ODVdLCBbOS41NjAwMTYsIDQyLjE1MjQ5Ml1dXSwgW1tbMy41ODgxODQsIDUwLjM3ODk5Ml0sIFs0LjI4NjAyMywgNDkuOTA3NDk3XSwgWzQuNzk5MjIyLCA0OS45ODUzNzNdLCBbNS42NzQwNTIsIDQ5LjUyOTQ4NF0sIFs1Ljg5Nzc1OSwgNDkuNDQyNjY3XSwgWzYuMTg2MzIsIDQ5LjQ2MzgwM10sIFs2LjY1ODIzLCA0OS4yMDE5NThdLCBbOC4wOTkyNzksIDQ5LjAxNzc4NF0sIFs3LjU5MzY3NiwgNDguMzMzMDE5XSwgWzcuNDY2NzU5LCA0Ny42MjA1ODJdLCBbNy4xOTIyMDIsIDQ3LjQ0OTc2Nl0sIFs2LjczNjU3MSwgNDcuNTQxODAxXSwgWzYuNzY4NzE0LCA0Ny4yODc3MDhdLCBbNi4wMzczODksIDQ2LjcyNTc3OV0sIFs2LjAyMjYwOSwgNDYuMjcyOTldLCBbNi41MDAxLCA0Ni40Mjk2NzNdLCBbNi44NDM1OTMsIDQ1Ljk5MTE0N10sIFs2LjgwMjM1NSwgNDUuNzA4NThdLCBbNy4wOTY2NTIsIDQ1LjMzMzA5OV0sIFs2Ljc0OTk1NSwgNDUuMDI4NTE4XSwgWzcuMDA3NTYyLCA0NC4yNTQ3NjddLCBbNy41NDk1OTYsIDQ0LjEyNzkwMV0sIFs3LjQzNTE4NSwgNDMuNjkzODQ1XSwgWzYuNTI5MjQ1LCA0My4xMjg4OTJdLCBbNC41NTY5NjMsIDQzLjM5OTY1MV0sIFszLjEwMDQxMSwgNDMuMDc1MjAxXSwgWzIuOTg1OTk5LCA0Mi40NzMwMTVdLCBbMS44MjY3OTMsIDQyLjM0MzM4NV0sIFswLjcwMTU5MSwgNDIuNzk1NzM0XSwgWzAuMzM4MDQ3LCA0Mi41Nzk1NDZdLCBbLTEuNTAyNzcxLCA0My4wMzQwMTRdLCBbLTEuOTAxMzUxLCA0My40MjI4MDJdLCBbLTEuMzg0MjI1LCA0NC4wMjI2MV0sIFstMS4xOTM3OTgsIDQ2LjAxNDkxOF0sIFstMi4yMjU3MjQsIDQ3LjA2NDM2M10sIFstMi45NjMyNzYsIDQ3LjU3MDMyN10sIFstNC40OTE1NTUsIDQ3Ljk1NDk1NF0sIFstNC41OTIzNSwgNDguNjg0MTZdLCBbLTMuMjk1ODE0LCA0OC45MDE2OTJdLCBbLTEuNjE2NTExLCA0OC42NDQ0MjFdLCBbLTEuOTMzNDk0LCA0OS43NzYzNDJdLCBbLTAuOTg5NDY5LCA0OS4zNDczNzZdLCBbMS4zMzg3NjEsIDUwLjEyNzE3M10sIFsxLjYzOTAwMSwgNTAuOTQ2NjA2XSwgWzIuNTEzNTczLCA1MS4xNDg1MDZdLCBbMi42NTg0MjIsIDUwLjc5Njg0OF0sIFszLjEyMzI1MiwgNTAuNzgwMzYzXSwgWzMuNTg4MTg0LCA1MC4zNzg5OTJdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkZSQSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRnJhbmNlIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxMS4wOTM3NzMsIC0zLjk3ODgyN10sIFsxMC4wNjYxMzUsIC0yLjk2OTQ4M10sIFs5LjQwNTI0NSwgLTIuMTQ0MzEzXSwgWzguNzk3OTk2LCAtMS4xMTEzMDFdLCBbOC44MzAwODcsIC0wLjc3OTA3NF0sIFs5LjA0ODQyLCAtMC40NTkzNTFdLCBbOS4yOTEzNTEsIDAuMjY4NjY2XSwgWzkuNDkyODg5LCAxLjAxMDEyXSwgWzkuODMwMjg0LCAxLjA2Nzg5NF0sIFsxMS4yODUwNzksIDEuMDU3NjYyXSwgWzExLjI3NjQ0OSwgMi4yNjEwNTFdLCBbMTEuNzUxNjY1LCAyLjMyNjc1OF0sIFsxMi4zNTkzOCwgMi4xOTI4MTJdLCBbMTIuOTUxMzM0LCAyLjMyMTYxNl0sIFsxMy4wNzU4MjIsIDIuMjY3MDk3XSwgWzEzLjAwMzExNCwgMS44MzA4OTZdLCBbMTMuMjgyNjMxLCAxLjMxNDE4NF0sIFsxNC4wMjY2NjksIDEuMzk1Njc3XSwgWzE0LjI3NjI2NiwgMS4xOTY5M10sIFsxMy44NDMzMjEsIDAuMDM4NzU4XSwgWzE0LjMxNjQxOCwgLTAuNTUyNjI3XSwgWzE0LjQyNTQ1NiwgLTEuMzMzNDA3XSwgWzE0LjI5OTIxLCAtMS45OTgyNzZdLCBbMTMuOTkyNDA3LCAtMi40NzA4MDVdLCBbMTMuMTA5NjE5LCAtMi40Mjg3NF0sIFsxMi41NzUyODQsIC0xLjk0ODUxMV0sIFsxMi40OTU3MDMsIC0yLjM5MTY4OF0sIFsxMS44MjA5NjQsIC0yLjUxNDE2MV0sIFsxMS40NzgwMzksIC0yLjc2NTYxOV0sIFsxMS44NTUxMjIsIC0zLjQyNjg3MV0sIFsxMS4wOTM3NzMsIC0zLjk3ODgyN11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiR0FCIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJHYWJvbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWy01LjY2MTk0OSwgNTQuNTU0NjAzXSwgWy02LjE5Nzg4NSwgNTMuODY3NTY1XSwgWy02Ljk1MzczLCA1NC4wNzM3MDJdLCBbLTcuNTcyMTY4LCA1NC4wNTk5NTZdLCBbLTcuMzY2MDMxLCA1NC41OTU4NDFdLCBbLTcuNTcyMTY4LCA1NS4xMzE2MjJdLCBbLTYuNzMzODQ3LCA1NS4xNzI4Nl0sIFstNS42NjE5NDksIDU0LjU1NDYwM11dXSwgW1tbLTMuMDA1MDA1LCA1OC42MzVdLCBbLTQuMDczODI4LCA1Ny41NTMwMjVdLCBbLTMuMDU1MDAyLCA1Ny42OTAwMTldLCBbLTEuOTU5MjgxLCA1Ny42ODQ4XSwgWy0yLjIxOTk4OCwgNTYuODcwMDE3XSwgWy0zLjExOTAwMywgNTUuOTczNzkzXSwgWy0yLjA4NTAwOSwgNTUuOTA5OTk4XSwgWy0yLjAwNTY3NiwgNTUuODA0OTAzXSwgWy0xLjExNDk5MSwgNTQuNjI0OTg2XSwgWy0wLjQzMDQ4NSwgNTQuNDY0Mzc2XSwgWzAuMTg0OTgxLCA1My4zMjUwMTRdLCBbMC40Njk5NzcsIDUyLjkyOTk5OV0sIFsxLjY4MTUzMSwgNTIuNzM5NTJdLCBbMS41NTk5ODgsIDUyLjA5OTk5OF0sIFsxLjA1MDU2MiwgNTEuODA2NzYxXSwgWzEuNDQ5ODY1LCA1MS4yODk0MjhdLCBbMC41NTAzMzQsIDUwLjc2NTczOV0sIFstMC43ODc1MTcsIDUwLjc3NDk4OV0sIFstMi40ODk5OTgsIDUwLjUwMDAxOV0sIFstMi45NTYyNzQsIDUwLjY5Njg4XSwgWy0zLjYxNzQ0OCwgNTAuMjI4MzU2XSwgWy00LjU0MjUwOCwgNTAuMzQxODM3XSwgWy01LjI0NTAyMywgNDkuOTZdLCBbLTUuNzc2NTY3LCA1MC4xNTk2NzhdLCBbLTQuMzA5OTksIDUxLjIxMDAwMV0sIFstMy40MTQ4NTEsIDUxLjQyNjAwOV0sIFstMy40MjI3MTksIDUxLjQyNjg0OF0sIFstNC45ODQzNjcsIDUxLjU5MzQ2Nl0sIFstNS4yNjcyOTYsIDUxLjk5MTRdLCBbLTQuMjIyMzQ3LCA1Mi4zMDEzNTZdLCBbLTQuNzcwMDEzLCA1Mi44NDAwMDVdLCBbLTQuNTc5OTk5LCA1My40OTUwMDRdLCBbLTMuMDkzODMxLCA1My40MDQ1NDddLCBbLTMuMDkyMDgsIDUzLjQwNDQ0MV0sIFstMi45NDUwMDksIDUzLjk4NV0sIFstMy42MTQ3MDEsIDU0LjYwMDkzN10sIFstMy42MzAwMDUsIDU0LjYxNTAxM10sIFstNC44NDQxNjksIDU0Ljc5MDk3MV0sIFstNS4wODI1MjcsIDU1LjA2MTYwMV0sIFstNC43MTkxMTIsIDU1LjUwODQ3M10sIFstNS4wNDc5ODEsIDU1Ljc4Mzk4Nl0sIFstNS41ODYzOTgsIDU1LjMxMTE0Nl0sIFstNS42NDQ5OTksIDU2LjI3NTAxNV0sIFstNi4xNDk5ODEsIDU2Ljc4NTAxXSwgWy01Ljc4NjgyNSwgNTcuODE4ODQ4XSwgWy01LjAwOTk5OSwgNTguNjMwMDEzXSwgWy00LjIxMTQ5NSwgNTguNTUwODQ1XSwgWy0zLjAwNTAwNSwgNTguNjM1XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJHQlIiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIlVuaXRlZCBLaW5nZG9tIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s0MS41NTQwODQsIDQxLjUzNTY1Nl0sIFs0MS43MDMxNzEsIDQxLjk2Mjk0M10sIFs0MS40NTM0NywgNDIuNjQ1MTIzXSwgWzQwLjg3NTQ2OSwgNDMuMDEzNjI4XSwgWzQwLjMyMTM5NCwgNDMuMTI4NjM0XSwgWzM5Ljk1NTAwOSwgNDMuNDM0OTk4XSwgWzQwLjA3Njk2NSwgNDMuNTUzMTA0XSwgWzQwLjkyMjE4NSwgNDMuMzgyMTU5XSwgWzQyLjM5NDM5NSwgNDMuMjIwMzA4XSwgWzQzLjc1NjAxNywgNDIuNzQwODI4XSwgWzQzLjkzMTIsIDQyLjU1NDk3NF0sIFs0NC41Mzc2MjMsIDQyLjcxMTk5M10sIFs0NS40NzAyNzksIDQyLjUwMjc4MV0sIFs0NS43NzY0MSwgNDIuMDkyNDQ0XSwgWzQ2LjQwNDk1MSwgNDEuODYwNjc1XSwgWzQ2LjE0NTQzMiwgNDEuNzIyODAyXSwgWzQ2LjYzNzkwOCwgNDEuMTgxNjczXSwgWzQ2LjUwMTYzNywgNDEuMDY0NDQ1XSwgWzQ1Ljk2MjYwMSwgNDEuMTIzODczXSwgWzQ1LjIxNzQyNiwgNDEuNDExNDUyXSwgWzQ0Ljk3MjQ4LCA0MS4yNDgxMjldLCBbNDMuNTgyNzQ2LCA0MS4wOTIxNDNdLCBbNDIuNjE5NTQ5LCA0MS41ODMxNzNdLCBbNDEuNTU0MDg0LCA0MS41MzU2NTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkdFTyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiR2VvcmdpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMS4wNjAxMjIsIDUuOTI4ODM3XSwgWy0wLjUwNzYzOCwgNS4zNDM0NzNdLCBbLTEuMDYzNjI1LCA1LjAwMDU0OF0sIFstMS45NjQ3MDcsIDQuNzEwNDYyXSwgWy0yLjg1NjEyNSwgNC45OTQ0NzZdLCBbLTIuODEwNzAxLCA1LjM4OTA1MV0sIFstMy4yNDQzNywgNi4yNTA0NzJdLCBbLTIuOTgzNTg1LCA3LjM3OTcwNV0sIFstMi41NjIxOSwgOC4yMTk2MjhdLCBbLTIuODI3NDk2LCA5LjY0MjQ2MV0sIFstMi45NjM4OTYsIDEwLjM5NTMzNV0sIFstMi45NDA0MDksIDEwLjk2MjY5XSwgWy0xLjIwMzM1OCwgMTEuMDA5ODE5XSwgWy0wLjc2MTU3NiwgMTAuOTM2OTNdLCBbLTAuNDM4NzAyLCAxMS4wOTgzNDFdLCBbMC4wMjM4MDMsIDExLjAxODY4Ml0sIFstMC4wNDk3ODUsIDEwLjcwNjkxOF0sIFswLjM2NzU4LCAxMC4xOTEyMTNdLCBbMC4zNjU5MDEsIDkuNDY1MDA0XSwgWzAuNDYxMTkyLCA4LjY3NzIyM10sIFswLjcxMjAyOSwgOC4zMTI0NjVdLCBbMC40OTA5NTcsIDcuNDExNzQ0XSwgWzAuNTcwMzg0LCA2LjkxNDM1OV0sIFswLjgzNjkzMSwgNi4yNzk5NzldLCBbMS4wNjAxMjIsIDUuOTI4ODM3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJHSEEiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkdoYW5hIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stOC40MzkyOTgsIDcuNjg2MDQzXSwgWy04LjcyMjEyNCwgNy43MTE2NzRdLCBbLTguOTI2MDY1LCA3LjMwOTAzN10sIFstOS4yMDg3ODYsIDcuMzEzOTIxXSwgWy05LjQwMzM0OCwgNy41MjY5MDVdLCBbLTkuMzM3MjgsIDcuOTI4NTM0XSwgWy05Ljc1NTM0MiwgOC41NDEwNTVdLCBbLTEwLjAxNjU2NywgOC40Mjg1MDRdLCBbLTEwLjIzMDA5NCwgOC40MDYyMDZdLCBbLTEwLjUwNTQ3NywgOC4zNDg4OTZdLCBbLTEwLjQ5NDMxNSwgOC43MTU1NDFdLCBbLTEwLjY1NDc3LCA4Ljk3NzE3OF0sIFstMTAuNjIyMzk1LCA5LjI2NzkxXSwgWy0xMC44MzkxNTIsIDkuNjg4MjQ2XSwgWy0xMS4xMTc0ODEsIDEwLjA0NTg3M10sIFstMTEuOTE3Mjc3LCAxMC4wNDY5ODRdLCBbLTEyLjE1MDMzOCwgOS44NTg1NzJdLCBbLTEyLjQyNTkyOSwgOS44MzU4MzRdLCBbLTEyLjU5NjcxOSwgOS42MjAxODhdLCBbLTEyLjcxMTk1OCwgOS4zNDI3MTJdLCBbLTEzLjI0NjU1LCA4LjkwMzA0OV0sIFstMTMuNjg1MTU0LCA5LjQ5NDc0NF0sIFstMTQuMDc0MDQ1LCA5Ljg4NjE2N10sIFstMTQuMzMwMDc2LCAxMC4wMTU3Ml0sIFstMTQuNTc5Njk5LCAxMC4yMTQ0NjddLCBbLTE0LjY5MzIzMiwgMTAuNjU2MzAxXSwgWy0xNC44Mzk1NTQsIDEwLjg3NjU3Ml0sIFstMTUuMTMwMzExLCAxMS4wNDA0MTJdLCBbLTE0LjY4NTY4NywgMTEuNTI3ODI0XSwgWy0xNC4zODIxOTIsIDExLjUwOTI3Ml0sIFstMTQuMTIxNDA2LCAxMS42NzcxMTddLCBbLTEzLjkwMDgsIDExLjY3ODcxOV0sIFstMTMuNzQzMTYxLCAxMS44MTEyNjldLCBbLTEzLjgyODI3MiwgMTIuMTQyNjQ0XSwgWy0xMy43MTg3NDQsIDEyLjI0NzE4Nl0sIFstMTMuNzAwNDc2LCAxMi41ODYxODNdLCBbLTEzLjIxNzgxOCwgMTIuNTc1ODc0XSwgWy0xMi40OTkwNTEsIDEyLjMzMjA5XSwgWy0xMi4yNzg1OTksIDEyLjM1NDQ0XSwgWy0xMi4yMDM1NjUsIDEyLjQ2NTY0OF0sIFstMTEuNjU4MzAxLCAxMi4zODY1ODNdLCBbLTExLjUxMzk0MywgMTIuNDQyOTg4XSwgWy0xMS40NTYxNjksIDEyLjA3NjgzNF0sIFstMTEuMjk3NTc0LCAxMi4wNzc5NzFdLCBbLTExLjAzNjU1NiwgMTIuMjExMjQ1XSwgWy0xMC44NzA4MywgMTIuMTc3ODg3XSwgWy0xMC41OTMyMjQsIDExLjkyMzk3NV0sIFstMTAuMTY1MjE0LCAxMS44NDQwODRdLCBbLTkuODkwOTkzLCAxMi4wNjA0NzldLCBbLTkuNTY3OTEyLCAxMi4xOTQyNDNdLCBbLTkuMzI3NjE2LCAxMi4zMzQyODZdLCBbLTkuMTI3NDc0LCAxMi4zMDgwNl0sIFstOC45MDUyNjUsIDEyLjA4ODM1OF0sIFstOC43ODYwOTksIDExLjgxMjU2MV0sIFstOC4zNzYzMDUsIDExLjM5MzY0Nl0sIFstOC41ODEzMDUsIDExLjEzNjI0Nl0sIFstOC42MjAzMjEsIDEwLjgxMDg5MV0sIFstOC40MDczMTEsIDEwLjkwOTI1N10sIFstOC4yODIzNTcsIDEwLjc5MjU5N10sIFstOC4zMzUzNzcsIDEwLjQ5NDgxMl0sIFstOC4wMjk5NDQsIDEwLjIwNjUzNV0sIFstOC4yMjkzMzcsIDEwLjEyOTAyXSwgWy04LjMwOTYxNiwgOS43ODk1MzJdLCBbLTguMDc5MTE0LCA5LjM3NjIyNF0sIFstNy44MzIxLCA4LjU3NTcwNF0sIFstOC4yMDM0OTksIDguNDU1NDUzXSwgWy04LjI5OTA0OSwgOC4zMTY0NDRdLCBbLTguMjIxNzkyLCA4LjEyMzMyOV0sIFstOC4yODA3MDMsIDcuNjg3MThdLCBbLTguNDM5Mjk4LCA3LjY4NjA0M11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiR0lOIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJHdWluZWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xNi44NDE1MjUsIDEzLjE1MTM5NF0sIFstMTYuNzEzNzI5LCAxMy41OTQ5NTldLCBbLTE1LjYyNDU5NiwgMTMuNjIzNTg3XSwgWy0xNS4zOTg3NywgMTMuODYwMzY5XSwgWy0xNS4wODE3MzUsIDEzLjg3NjQ5Ml0sIFstMTQuNjg3MDMxLCAxMy42MzAzNTddLCBbLTE0LjM3NjcxNCwgMTMuNjI1NjhdLCBbLTE0LjA0Njk5MiwgMTMuNzk0MDY4XSwgWy0xMy44NDQ5NjMsIDEzLjUwNTA0Ml0sIFstMTQuMjc3NzAyLCAxMy4yODA1ODVdLCBbLTE0LjcxMjE5NywgMTMuMjk4MjA3XSwgWy0xNS4xNDExNjMsIDEzLjUwOTUxMl0sIFstMTUuNTExODEzLCAxMy4yNzg1N10sIFstMTUuNjkxMDAxLCAxMy4yNzAzNTNdLCBbLTE1LjkzMTI5NiwgMTMuMTMwMjg0XSwgWy0xNi44NDE1MjUsIDEzLjE1MTM5NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiR01CIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJHYW1iaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xNS4xMzAzMTEsIDExLjA0MDQxMl0sIFstMTUuNjY0MTgsIDExLjQ1ODQ3NF0sIFstMTYuMDg1MjE0LCAxMS41MjQ1OTRdLCBbLTE2LjMxNDc4NywgMTEuODA2NTE1XSwgWy0xNi4zMDg5NDcsIDExLjk1ODcwMl0sIFstMTYuNjEzODM4LCAxMi4xNzA5MTFdLCBbLTE2LjY3NzQ1MiwgMTIuMzg0ODUyXSwgWy0xNi4xNDc3MTcsIDEyLjU0Nzc2Ml0sIFstMTUuODE2NTc0LCAxMi41MTU1NjddLCBbLTE1LjU0ODQ3NywgMTIuNjI4MTddLCBbLTEzLjcwMDQ3NiwgMTIuNTg2MTgzXSwgWy0xMy43MTg3NDQsIDEyLjI0NzE4Nl0sIFstMTMuODI4MjcyLCAxMi4xNDI2NDRdLCBbLTEzLjc0MzE2MSwgMTEuODExMjY5XSwgWy0xMy45MDA4LCAxMS42Nzg3MTldLCBbLTE0LjEyMTQwNiwgMTEuNjc3MTE3XSwgWy0xNC4zODIxOTIsIDExLjUwOTI3Ml0sIFstMTQuNjg1Njg3LCAxMS41Mjc4MjRdLCBbLTE1LjEzMDMxMSwgMTEuMDQwNDEyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJHTkIiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkd1aW5lYSBCaXNzYXUiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzkuNDkyODg5LCAxLjAxMDEyXSwgWzkuMzA1NjEzLCAxLjE2MDkxMV0sIFs5LjY0OTE1OCwgMi4yODM4NjZdLCBbMTEuMjc2NDQ5LCAyLjI2MTA1MV0sIFsxMS4yODUwNzksIDEuMDU3NjYyXSwgWzkuODMwMjg0LCAxLjA2Nzg5NF0sIFs5LjQ5Mjg4OSwgMS4wMTAxMl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiR05RIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJFcXVhdG9yaWFsIEd1aW5lYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWzIzLjY5OTk4LCAzNS43MDUwMDRdLCBbMjQuMjQ2NjY1LCAzNS4zNjgwMjJdLCBbMjUuMDI1MDE1LCAzNS40MjQ5OTZdLCBbMjUuNzY5MjA4LCAzNS4zNTQwMThdLCBbMjUuNzQ1MDIzLCAzNS4xNzk5OThdLCBbMjYuMjkwMDAzLCAzNS4yOTk5OV0sIFsyNi4xNjQ5OTgsIDM1LjAwNDk5NV0sIFsyNC43MjQ5ODIsIDM0LjkxOTk4OF0sIFsyNC43MzUwMDcsIDM1LjA4NDk5MV0sIFsyMy41MTQ5NzgsIDM1LjI3OTk5Ml0sIFsyMy42OTk5OCwgMzUuNzA1MDA0XV1dLCBbW1syNi42MDQxOTYsIDQxLjU2MjExNV0sIFsyNi4yOTQ2MDIsIDQwLjkzNjI2MV0sIFsyNi4wNTY5NDIsIDQwLjgyNDEyM10sIFsyNS40NDc2NzcsIDQwLjg1MjU0NV0sIFsyNC45MjU4NDgsIDQwLjk0NzA2Ml0sIFsyMy43MTQ4MTEsIDQwLjY4NzEyOV0sIFsyNC40MDc5OTksIDQwLjEyNDk5M10sIFsyMy44OTk5NjgsIDM5Ljk2MjAwNl0sIFsyMy4zNDI5OTksIDM5Ljk2MDk5OF0sIFsyMi44MTM5ODgsIDQwLjQ3NjAwNV0sIFsyMi42MjYyOTksIDQwLjI1NjU2MV0sIFsyMi44NDk3NDgsIDM5LjY1OTMxMV0sIFsyMy4zNTAwMjcsIDM5LjE5MDAxMV0sIFsyMi45NzMwOTksIDM4Ljk3MDkwM10sIFsyMy41MzAwMTYsIDM4LjUxMDAwMV0sIFsyNC4wMjUwMjUsIDM4LjIxOTk5M10sIFsyNC4wNDAwMTEsIDM3LjY1NTAxNV0sIFsyMy4xMTUwMDMsIDM3LjkyMDAxMV0sIFsyMy40MDk5NzIsIDM3LjQwOTk5MV0sIFsyMi43NzQ5NzIsIDM3LjMwNTAxXSwgWzIzLjE1NDIyNSwgMzYuNDIyNTA2XSwgWzIyLjQ5MDAyOCwgMzYuNDFdLCBbMjEuNjcwMDI2LCAzNi44NDQ5ODZdLCBbMjEuMjk1MDExLCAzNy42NDQ5ODldLCBbMjEuMTIwMDM0LCAzOC4zMTAzMjNdLCBbMjAuNzMwMDMyLCAzOC43Njk5ODVdLCBbMjAuMjE3NzEyLCAzOS4zNDAyMzVdLCBbMjAuMTUwMDE2LCAzOS42MjQ5OThdLCBbMjAuNjE1LCA0MC4xMTAwMDddLCBbMjAuNjc0OTk3LCA0MC40MzVdLCBbMjAuOTk5OTksIDQwLjU4MDAwNF0sIFsyMS4wMjAwNCwgNDAuODQyNzI3XSwgWzIxLjY3NDE2MSwgNDAuOTMxMjc1XSwgWzIyLjA1NTM3OCwgNDEuMTQ5ODY2XSwgWzIyLjU5NzMwOCwgNDEuMTMwNDg3XSwgWzIyLjc2MTc3LCA0MS4zMDQ4XSwgWzIyLjk1MjM3NywgNDEuMzM3OTk0XSwgWzIzLjY5MjA3NCwgNDEuMzA5MDgxXSwgWzI0LjQ5MjY0NSwgNDEuNTgzODk2XSwgWzI1LjE5NzIwMSwgNDEuMjM0NDg2XSwgWzI2LjEwNjEzOCwgNDEuMzI4ODk5XSwgWzI2LjExNzA0MiwgNDEuODI2OTA1XSwgWzI2LjYwNDE5NiwgNDEuNTYyMTE1XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJHUkMiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkdyZWVjZSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQ2Ljc2Mzc5LCA4Mi42Mjc5Nl0sIFstNDMuNDA2NDQsIDgzLjIyNTE2XSwgWy0zOS44OTc1MywgODMuMTgwMThdLCBbLTM4LjYyMjE0LCA4My41NDkwNV0sIFstMzUuMDg3ODcsIDgzLjY0NTEzXSwgWy0yNy4xMDA0NiwgODMuNTE5NjZdLCBbLTIwLjg0NTM5LCA4Mi43MjY2OV0sIFstMjIuNjkxODIsIDgyLjM0MTY1XSwgWy0yNi41MTc1MywgODIuMjk3NjVdLCBbLTMxLjksIDgyLjJdLCBbLTMxLjM5NjQ2LCA4Mi4wMjE1NF0sIFstMjcuODU2NjYsIDgyLjEzMTc4XSwgWy0yNC44NDQ0OCwgODEuNzg2OTddLCBbLTIyLjkwMzI4LCA4Mi4wOTMxN10sIFstMjIuMDcxNzUsIDgxLjczNDQ5XSwgWy0yMy4xNjk2MSwgODEuMTUyNzFdLCBbLTIwLjYyMzYzLCA4MS41MjQ2Ml0sIFstMTUuNzY4MTgsIDgxLjkxMjQ1XSwgWy0xMi43NzAxOCwgODEuNzE4ODVdLCBbLTEyLjIwODU1LCA4MS4yOTE1NF0sIFstMTYuMjg1MzMsIDgwLjU4MDA0XSwgWy0xNi44NSwgODAuMzVdLCBbLTIwLjA0NjI0LCA4MC4xNzcwOF0sIFstMTcuNzMwMzUsIDgwLjEyOTEyXSwgWy0xOC45LCA3OS40XSwgWy0xOS43MDQ5OSwgNzguNzUxMjhdLCBbLTE5LjY3MzUzLCA3Ny42Mzg1OV0sIFstMTguNDcyODUsIDc2Ljk4NTY1XSwgWy0yMC4wMzUwMywgNzYuOTQ0MzRdLCBbLTIxLjY3OTQ0LCA3Ni42Mjc5NV0sIFstMTkuODM0MDcsIDc2LjA5ODA4XSwgWy0xOS41OTg5NiwgNzUuMjQ4MzhdLCBbLTIwLjY2ODE4LCA3NS4xNTU4NV0sIFstMTkuMzcyODEsIDc0LjI5NTYxXSwgWy0yMS41OTQyMiwgNzQuMjIzODJdLCBbLTIwLjQzNDU0LCA3My44MTcxM10sIFstMjAuNzYyMzQsIDczLjQ2NDM2XSwgWy0yMi4xNzIyMSwgNzMuMzA5NTVdLCBbLTIzLjU2NTkzLCA3My4zMDY2M10sIFstMjIuMzEzMTEsIDcyLjYyOTI4XSwgWy0yMi4yOTk1NCwgNzIuMTg0MDldLCBbLTI0LjI3ODM0LCA3Mi41OTc4OF0sIFstMjQuNzkyOTYsIDcyLjMzMDJdLCBbLTIzLjQ0Mjk2LCA3Mi4wODAxNl0sIFstMjIuMTMyODEsIDcxLjQ2ODk4XSwgWy0yMS43NTM1NiwgNzAuNjYzNjldLCBbLTIzLjUzNjAzLCA3MC40NzFdLCBbLTI0LjMwNzAyLCA3MC44NTY0OV0sIFstMjUuNTQzNDEsIDcxLjQzMDk0XSwgWy0yNS4yMDEzNSwgNzAuNzUyMjZdLCBbLTI2LjM2Mjc2LCA3MC4yMjY0Nl0sIFstMjMuNzI3NDIsIDcwLjE4NDAxXSwgWy0yMi4zNDkwMiwgNzAuMTI5NDZdLCBbLTI1LjAyOTI3LCA2OS4yNTg4XSwgWy0yNy43NDczNywgNjguNDcwNDZdLCBbLTMwLjY3MzcxLCA2OC4xMjUwM10sIFstMzEuNzc2NjUsIDY4LjEyMDc4XSwgWy0zMi44MTEwNSwgNjcuNzM1NDddLCBbLTM0LjIwMTk2LCA2Ni42Nzk3NF0sIFstMzYuMzUyODQsIDY1Ljk3ODldLCBbLTM3LjA0Mzc4LCA2NS45Mzc2OF0sIFstMzguMzc1MDUsIDY1LjY5MjEzXSwgWy0zOS44MTIyMiwgNjUuNDU4NDhdLCBbLTQwLjY2ODk5LCA2NC44Mzk5N10sIFstNDAuNjgyODEsIDY0LjEzOTAyXSwgWy00MS4xODg3LCA2My40ODI0Nl0sIFstNDIuODE5MzgsIDYyLjY4MjMzXSwgWy00Mi40MTY2NiwgNjEuOTAwOTNdLCBbLTQyLjg2NjE5LCA2MS4wNzQwNF0sIFstNDMuMzc4NCwgNjAuMDk3NzJdLCBbLTQ0Ljc4NzUsIDYwLjAzNjc2XSwgWy00Ni4yNjM2NCwgNjAuODUzMjhdLCBbLTQ4LjI2Mjk0LCA2MC44NTg0M10sIFstNDkuMjMzMDgsIDYxLjQwNjgxXSwgWy00OS45MDAzOSwgNjIuMzgzMzZdLCBbLTUxLjYzMzI1LCA2My42MjY5MV0sIFstNTIuMTQwMTQsIDY0LjI3ODQyXSwgWy01Mi4yNzY1OSwgNjUuMTc2N10sIFstNTMuNjYxNjYsIDY2LjA5OTU3XSwgWy01My4zMDE2MSwgNjYuODM2NV0sIFstNTMuOTY5MTEsIDY3LjE4ODk5XSwgWy01Mi45ODA0LCA2OC4zNTc1OV0sIFstNTEuNDc1MzYsIDY4LjcyOTU4XSwgWy01MS4wODA0MSwgNjkuMTQ3ODFdLCBbLTUwLjg3MTIyLCA2OS45MjkxXSwgWy01Mi4wMTM1ODUsIDY5LjU3NDkyNV0sIFstNTIuNTU3OTIsIDY5LjQyNjE2XSwgWy01My40NTYyOSwgNjkuMjgzNjI1XSwgWy01NC42ODMzNiwgNjkuNjEwMDNdLCBbLTU0Ljc1MDAxLCA3MC4yODkzMl0sIFstNTQuMzU4ODQsIDcwLjgyMTMxNV0sIFstNTMuNDMxMzE1LCA3MC44MzU3NTVdLCBbLTUxLjM5MDE0LCA3MC41Njk3OF0sIFstNTMuMTA5MzcsIDcxLjIwNDg1XSwgWy01NC4wMDQyMiwgNzEuNTQ3MTldLCBbLTU1LCA3MS40MDY1MzddLCBbLTU1LjgzNDY4LCA3MS42NTQ0NF0sIFstNTQuNzE4MTksIDcyLjU4NjI1XSwgWy01NS4zMjYzNCwgNzIuOTU4NjFdLCBbLTU2LjEyMDAzLCA3My42NDk3N10sIFstNTcuMzIzNjMsIDc0LjcxMDI2XSwgWy01OC41OTY3OSwgNzUuMDk4NjFdLCBbLTU4LjU4NTE2LCA3NS41MTcyN10sIFstNjEuMjY4NjEsIDc2LjEwMjM4XSwgWy02My4zOTE2NSwgNzYuMTc1Ml0sIFstNjYuMDY0MjcsIDc2LjEzNDg2XSwgWy02OC41MDQzOCwgNzYuMDYxNDFdLCBbLTY5LjY2NDg1LCA3Ni4zNzk3NV0sIFstNzEuNDAyNTcsIDc3LjAwODU3XSwgWy02OC43NzY3MSwgNzcuMzIzMTJdLCBbLTY2Ljc2Mzk3LCA3Ny4zNzU5NV0sIFstNzEuMDQyOTMsIDc3LjYzNTk1XSwgWy03My4yOTcsIDc4LjA0NDE5XSwgWy03My4xNTkzOCwgNzguNDMyNzFdLCBbLTY5LjM3MzQ1LCA3OC45MTM4OF0sIFstNjUuNzEwNywgNzkuMzk0MzZdLCBbLTY1LjMyMzksIDc5Ljc1ODE0XSwgWy02OC4wMjI5OCwgODAuMTE3MjFdLCBbLTY3LjE1MTI5LCA4MC41MTU4Ml0sIFstNjMuNjg5MjUsIDgxLjIxMzk2XSwgWy02Mi4yMzQ0NCwgODEuMzIxMV0sIFstNjIuNjUxMTYsIDgxLjc3MDQyXSwgWy02MC4yODI0OSwgODIuMDMzNjNdLCBbLTU3LjIwNzQ0LCA4Mi4xOTA3NF0sIFstNTQuMTM0NDIsIDgyLjE5OTYyXSwgWy01My4wNDMyOCwgODEuODg4MzNdLCBbLTUwLjM5MDYxLCA4Mi40Mzg4M10sIFstNDguMDAzODYsIDgyLjA2NDgxXSwgWy00Ni41OTk4NCwgODEuOTg1OTQ1XSwgWy00NC41MjMsIDgxLjY2MDddLCBbLTQ2LjkwMDcsIDgyLjE5OTc5XSwgWy00Ni43NjM3OSwgODIuNjI3OTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkdSTCIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiR3JlZW5sYW5kIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stOTAuMDk1NTU1LCAxMy43MzUzMzhdLCBbLTkwLjYwODYyNCwgMTMuOTA5NzcxXSwgWy05MS4yMzI0MSwgMTMuOTI3ODMyXSwgWy05MS42ODk3NDcsIDE0LjEyNjIxOF0sIFstOTIuMjI3NzUsIDE0LjUzODgyOV0sIFstOTIuMjAzMjMsIDE0LjgzMDEwM10sIFstOTIuMDg3MjE2LCAxNS4wNjQ1ODVdLCBbLTkyLjIyOTI0OSwgMTUuMjUxNDQ3XSwgWy05MS43NDc5NiwgMTYuMDY2NTY1XSwgWy05MC40NjQ0NzMsIDE2LjA2OTU2Ml0sIFstOTAuNDM4ODY3LCAxNi40MTAxMV0sIFstOTAuNjAwODQ3LCAxNi40NzA3NzhdLCBbLTkwLjcxMTgyMiwgMTYuNjg3NDgzXSwgWy05MS4wODE2NywgMTYuOTE4NDc3XSwgWy05MS40NTM5MjEsIDE3LjI1MjE3N10sIFstOTEuMDAyMjY5LCAxNy4yNTQ2NThdLCBbLTkxLjAwMTUyLCAxNy44MTc1OTVdLCBbLTkwLjA2NzkzNCwgMTcuODE5MzI2XSwgWy04OS4xNDMwOCwgMTcuODA4MzE5XSwgWy04OS4xNTA4MDYsIDE3LjAxNTU3N10sIFstODkuMjI5MTIyLCAxNS44ODY5MzhdLCBbLTg4LjkzMDYxMywgMTUuODg3MjczXSwgWy04OC42MDQ1ODYsIDE1LjcwNjM4XSwgWy04OC41MTgzNjQsIDE1Ljg1NTM4OV0sIFstODguMjI1MDIzLCAxNS43Mjc3MjJdLCBbLTg4LjY4MDY4LCAxNS4zNDYyNDddLCBbLTg5LjE1NDgxMSwgMTUuMDY2NDE5XSwgWy04OS4yMjUyMiwgMTQuODc0Mjg2XSwgWy04OS4xNDU1MzUsIDE0LjY3ODAxOV0sIFstODkuMzUzMzI2LCAxNC40MjQxMzNdLCBbLTg5LjU4NzM0MywgMTQuMzYyNTg2XSwgWy04OS41MzQyMTksIDE0LjI0NDgxNl0sIFstODkuNzIxOTM0LCAxNC4xMzQyMjhdLCBbLTkwLjA2NDY3OCwgMTMuODgxOTddLCBbLTkwLjA5NTU1NSwgMTMuNzM1MzM4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJHVE0iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkd1YXRlbWFsYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTU5Ljc1ODI4NSwgOC4zNjcwMzVdLCBbLTU5LjEwMTY4NCwgNy45OTkyMDJdLCBbLTU4LjQ4Mjk2MiwgNy4zNDc2OTFdLCBbLTU4LjQ1NDg3NiwgNi44MzI3ODddLCBbLTU4LjA3ODEwMywgNi44MDkwOTRdLCBbLTU3LjU0MjIxOSwgNi4zMjEyNjhdLCBbLTU3LjE0NzQzNiwgNS45NzMxNV0sIFstNTcuMzA3MjQ2LCA1LjA3MzU2N10sIFstNTcuOTE0Mjg5LCA0LjgxMjYyNl0sIFstNTcuODYwMjEsIDQuNTc2ODAxXSwgWy01OC4wNDQ2OTQsIDQuMDYwODY0XSwgWy01Ny42MDE1NjksIDMuMzM0NjU1XSwgWy01Ny4yODE0MzMsIDMuMzMzNDkyXSwgWy01Ny4xNTAwOTgsIDIuNzY4OTI3XSwgWy01Ni41MzkzODYsIDEuODk5NTIzXSwgWy01Ni43ODI3MDQsIDEuODYzNzExXSwgWy01Ny4zMzU4MjMsIDEuOTQ4NTM4XSwgWy01Ny42NjA5NzEsIDEuNjgyNTg1XSwgWy01OC4xMTM0NSwgMS41MDcxOTVdLCBbLTU4LjQyOTQ3NywgMS40NjM5NDJdLCBbLTU4LjU0MDAxMywgMS4yNjgwODhdLCBbLTU5LjAzMDg2MiwgMS4zMTc2OThdLCBbLTU5LjY0NjA0NCwgMS43ODY4OTRdLCBbLTU5LjcxODU0NiwgMi4yNDk2M10sIFstNTkuOTc0NTI1LCAyLjc1NTIzM10sIFstNTkuODE1NDEzLCAzLjYwNjQ5OV0sIFstNTkuNTM4MDQsIDMuOTU4ODAzXSwgWy01OS43Njc0MDYsIDQuNDIzNTAzXSwgWy02MC4xMTEwMDIsIDQuNTc0OTY3XSwgWy01OS45ODA5NTksIDUuMDE0MDYxXSwgWy02MC4yMTM2ODMsIDUuMjQ0NDg2XSwgWy02MC43MzM1NzQsIDUuMjAwMjc3XSwgWy02MS40MTAzMDMsIDUuOTU5MDY4XSwgWy02MS4xMzk0MTUsIDYuMjM0Mjk3XSwgWy02MS4xNTkzMzYsIDYuNjk2MDc3XSwgWy02MC41NDM5OTksIDYuODU2NTg0XSwgWy02MC4yOTU2NjgsIDcuMDQzOTExXSwgWy02MC42Mzc5NzMsIDcuNDE1XSwgWy02MC41NTA1ODgsIDcuNzc5NjAzXSwgWy01OS43NTgyODUsIDguMzY3MDM1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJHVVkiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkd1eWFuYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTg3LjMxNjY1NCwgMTIuOTg0Njg2XSwgWy04Ny40ODk0MDksIDEzLjI5NzUzNV0sIFstODcuNzkzMTExLCAxMy4zODQ0OF0sIFstODcuNzIzNTAzLCAxMy43ODUwNV0sIFstODcuODU5NTE1LCAxMy44OTMzMTJdLCBbLTg4LjA2NTM0MywgMTMuOTY0NjI2XSwgWy04OC41MDM5OTgsIDEzLjg0NTQ4Nl0sIFstODguNTQxMjMxLCAxMy45ODAxNTVdLCBbLTg4Ljg0MzA3MywgMTQuMTQwNTA3XSwgWy04OS4wNTg1MTIsIDE0LjM0MDAyOV0sIFstODkuMzUzMzI2LCAxNC40MjQxMzNdLCBbLTg5LjE0NTUzNSwgMTQuNjc4MDE5XSwgWy04OS4yMjUyMiwgMTQuODc0Mjg2XSwgWy04OS4xNTQ4MTEsIDE1LjA2NjQxOV0sIFstODguNjgwNjgsIDE1LjM0NjI0N10sIFstODguMjI1MDIzLCAxNS43Mjc3MjJdLCBbLTg4LjEyMTE1MywgMTUuNjg4NjU1XSwgWy04Ny45MDE4MTMsIDE1Ljg2NDQ1OF0sIFstODcuNjE1NjgsIDE1Ljg3ODc5OV0sIFstODcuNTIyOTIxLCAxNS43OTcyNzldLCBbLTg3LjM2Nzc2MiwgMTUuODQ2OTRdLCBbLTg2LjkwMzE5MSwgMTUuNzU2NzEzXSwgWy04Ni40NDA5NDYsIDE1Ljc4MjgzNV0sIFstODYuMTE5MjM0LCAxNS44OTM0NDldLCBbLTg2LjAwMTk1NCwgMTYuMDA1NDA2XSwgWy04NS42ODMzMTcsIDE1Ljk1MzY1Ml0sIFstODUuNDQ0MDA0LCAxNS44ODU3NDldLCBbLTg1LjE4MjQ0NCwgMTUuOTA5MTU4XSwgWy04NC45ODM3MjIsIDE1Ljk5NTkyM10sIFstODQuNTI2OTgsIDE1Ljg1NzIyNF0sIFstODQuMzY4MjU2LCAxNS44MzUxNThdLCBbLTg0LjA2MzA1NSwgMTUuNjQ4MjQ0XSwgWy04My43NzM5NzcsIDE1LjQyNDA3Ml0sIFstODMuNDEwMzgxLCAxNS4yNzA5MDNdLCBbLTgzLjE0NzIxOSwgMTQuOTk1ODI5XSwgWy04My40ODk5ODksIDE1LjAxNjI2N10sIFstODMuNjI4NTg1LCAxNC44ODAwNzRdLCBbLTgzLjk3NTcyMSwgMTQuNzQ5NDM2XSwgWy04NC4yMjgzNDIsIDE0Ljc0ODc2NF0sIFstODQuNDQ5MzM2LCAxNC42MjE2MTRdLCBbLTg0LjY0OTU4MiwgMTQuNjY2ODA1XSwgWy04NC44MjAwMzcsIDE0LjgxOTU4N10sIFstODQuOTI0NTAxLCAxNC43OTA0OTNdLCBbLTg1LjA1Mjc4NywgMTQuNTUxNTQxXSwgWy04NS4xNDg3NTEsIDE0LjU2MDE5N10sIFstODUuMTY1MzY1LCAxNC4zNTQzN10sIFstODUuNTE0NDEzLCAxNC4wNzkwMTJdLCBbLTg1LjY5ODY2NSwgMTMuOTYwMDc4XSwgWy04NS44MDEyOTUsIDEzLjgzNjA1NV0sIFstODYuMDk2MjY0LCAxNC4wMzgxODddLCBbLTg2LjMxMjE0MiwgMTMuNzcxMzU2XSwgWy04Ni41MjA3MDgsIDEzLjc3ODQ4N10sIFstODYuNzU1MDg3LCAxMy43NTQ4NDVdLCBbLTg2LjczMzgyMiwgMTMuMjYzMDkzXSwgWy04Ni44ODA1NTcsIDEzLjI1NDIwNF0sIFstODcuMDA1NzY5LCAxMy4wMjU3OTRdLCBbLTg3LjMxNjY1NCwgMTIuOTg0Njg2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJITkQiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkhvbmR1cmFzIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxOC44Mjk4MzgsIDQ1LjkwODg3OF0sIFsxOS4wNzI3NjksIDQ1LjUyMTUxMV0sIFsxOS4zOTA0NzYsIDQ1LjIzNjUxNl0sIFsxOS4wMDU0ODYsIDQ0Ljg2MDIzNF0sIFsxOC41NTMyMTQsIDQ1LjA4MTU5XSwgWzE3Ljg2MTc4MywgNDUuMDY3NzRdLCBbMTcuMDAyMTQ2LCA0NS4yMzM3NzddLCBbMTYuNTM0OTM5LCA0NS4yMTE2MDhdLCBbMTYuMzE4MTU3LCA0NS4wMDQxMjddLCBbMTUuOTU5MzY3LCA0NS4yMzM3NzddLCBbMTUuNzUwMDI2LCA0NC44MTg3MTJdLCBbMTYuMjM5NjYsIDQ0LjM1MTE0M10sIFsxNi40NTY0NDMsIDQ0LjA0MTI0XSwgWzE2LjkxNjE1NiwgNDMuNjY3NzIyXSwgWzE3LjI5NzM3MywgNDMuNDQ2MzQxXSwgWzE3LjY3NDkyMiwgNDMuMDI4NTYzXSwgWzE4LjU2LCA0Mi42NV0sIFsxOC40NTAwMTYsIDQyLjQ3OTk5MV0sIFsxNy41MDk5NywgNDIuODQ5OTk1XSwgWzE2LjkzMDAwNiwgNDMuMjA5OTk4XSwgWzE2LjAxNTM4NSwgNDMuNTA3MjE1XSwgWzE1LjE3NDQ1NCwgNDQuMjQzMTkxXSwgWzE1LjM3NjI1LCA0NC4zMTc5MTVdLCBbMTQuOTIwMzA5LCA0NC43Mzg0ODRdLCBbMTQuOTAxNjAyLCA0NS4wNzYwNl0sIFsxNC4yNTg3NDgsIDQ1LjIzMzc3N10sIFsxMy45NTIyNTUsIDQ0LjgwMjEyNF0sIFsxMy42NTY5NzYsIDQ1LjEzNjkzNV0sIFsxMy42Nzk0MDMsIDQ1LjQ4NDE0OV0sIFsxMy43MTUwNiwgNDUuNTAwMzI0XSwgWzE0LjQxMTk2OCwgNDUuNDY2MTY2XSwgWzE0LjU5NTEwOSwgNDUuNjM0OTQxXSwgWzE0LjkzNTI0NCwgNDUuNDcxNjk1XSwgWzE1LjMyNzY3NSwgNDUuNDUyMzE2XSwgWzE1LjMyMzk1NCwgNDUuNzMxNzgzXSwgWzE1LjY3MTUzLCA0NS44MzQxNTRdLCBbMTUuNzY4NzMzLCA0Ni4yMzgxMDhdLCBbMTYuNTY0ODA4LCA0Ni41MDM3NTFdLCBbMTYuODgyNTE1LCA0Ni4zODA2MzJdLCBbMTcuNjMwMDY2LCA0NS45NTE3NjldLCBbMTguNDU2MDYyLCA0NS43NTk0ODFdLCBbMTguODI5ODM4LCA0NS45MDg4NzhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkhSViIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQ3JvYXRpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTczLjE4OTc5MSwgMTkuOTE1Njg0XSwgWy03Mi41Nzk2NzMsIDE5Ljg3MTUwMV0sIFstNzEuNzEyMzYxLCAxOS43MTQ0NTZdLCBbLTcxLjYyNDg3MywgMTkuMTY5ODM4XSwgWy03MS43MDEzMDMsIDE4Ljc4NTQxN10sIFstNzEuOTQ1MTEyLCAxOC42MTY5XSwgWy03MS42ODc3MzgsIDE4LjMxNjY2XSwgWy03MS43MDgzMDUsIDE4LjA0NDk5N10sIFstNzIuMzcyNDc2LCAxOC4yMTQ5NjFdLCBbLTcyLjg0NDQxMSwgMTguMTQ1NjExXSwgWy03My40NTQ1NTUsIDE4LjIxNzkwNl0sIFstNzMuOTIyNDMzLCAxOC4wMzA5OTNdLCBbLTc0LjQ1ODAzNCwgMTguMzQyNTVdLCBbLTc0LjM2OTkyNSwgMTguNjY0OTA4XSwgWy03My40NDk1NDIsIDE4LjUyNjA1M10sIFstNzIuNjk0OTM3LCAxOC40NDU3OTldLCBbLTcyLjMzNDg4MiwgMTguNjY4NDIyXSwgWy03Mi43OTE2NSwgMTkuMTAxNjI1XSwgWy03Mi43ODQxMDUsIDE5LjQ4MzU5MV0sIFstNzMuNDE1MDIyLCAxOS42Mzk1NTFdLCBbLTczLjE4OTc5MSwgMTkuOTE1Njg0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJIVEkiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkhhaXRpIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxNi4yMDIyOTgsIDQ2Ljg1MjM4Nl0sIFsxNi41MzQyNjgsIDQ3LjQ5NjE3MV0sIFsxNi4zNDA1ODQsIDQ3LjcxMjkwMl0sIFsxNi45MDM3NTQsIDQ3LjcxNDg2Nl0sIFsxNi45Nzk2NjcsIDQ4LjEyMzQ5N10sIFsxNy40ODg0NzMsIDQ3Ljg2NzQ2Nl0sIFsxNy44NTcxMzMsIDQ3Ljc1ODQyOV0sIFsxOC42OTY1MTMsIDQ3Ljg4MDk1NF0sIFsxOC43NzcwMjUsIDQ4LjA4MTc2OF0sIFsxOS4xNzQzNjUsIDQ4LjExMTM3OV0sIFsxOS42NjEzNjQsIDQ4LjI2NjYxNV0sIFsxOS43Njk0NzEsIDQ4LjIwMjY5MV0sIFsyMC4yMzkwNTQsIDQ4LjMyNzU2N10sIFsyMC40NzM1NjIsIDQ4LjU2Mjg1XSwgWzIwLjgwMTI5NCwgNDguNjIzODU0XSwgWzIxLjg3MjIzNiwgNDguMzE5OTcxXSwgWzIyLjA4NTYwOCwgNDguNDIyMjY0XSwgWzIyLjY0MDgyLCA0OC4xNTAyNF0sIFsyMi43MTA1MzEsIDQ3Ljg4MjE5NF0sIFsyMi4wOTk3NjgsIDQ3LjY3MjQzOV0sIFsyMS42MjY1MTUsIDQ2Ljk5NDIzOF0sIFsyMS4wMjE5NTIsIDQ2LjMxNjA4OF0sIFsyMC4yMjAxOTIsIDQ2LjEyNzQ2OV0sIFsxOS41OTYwNDUsIDQ2LjE3MTczXSwgWzE4LjgyOTgzOCwgNDUuOTA4ODc4XSwgWzE4LjQ1NjA2MiwgNDUuNzU5NDgxXSwgWzE3LjYzMDA2NiwgNDUuOTUxNzY5XSwgWzE2Ljg4MjUxNSwgNDYuMzgwNjMyXSwgWzE2LjU2NDgwOCwgNDYuNTAzNzUxXSwgWzE2LjM3MDUwNSwgNDYuODQxMzI3XSwgWzE2LjIwMjI5OCwgNDYuODUyMzg2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJIVU4iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkh1bmdhcnkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxMjAuNzE1NjA5LCAtMTAuMjM5NTgxXSwgWzEyMC4yOTUwMTQsIC0xMC4yNTg2NV0sIFsxMTguOTY3ODA4LCAtOS41NTc5NjldLCBbMTE5LjkwMDMxLCAtOS4zNjEzNF0sIFsxMjAuNDI1NzU2LCAtOS42NjU5MjFdLCBbMTIwLjc3NTUwMiwgLTkuOTY5Njc1XSwgWzEyMC43MTU2MDksIC0xMC4yMzk1ODFdXV0sIFtbWzEyNC40MzU5NSwgLTEwLjE0MDAwMV0sIFsxMjMuNTc5OTgyLCAtMTAuMzU5OTg3XSwgWzEyMy40NTk5ODksIC0xMC4yMzk5OTVdLCBbMTIzLjU1MDAwOSwgLTkuOTAwMDE2XSwgWzEyMy45ODAwMDksIC05LjI5MDAyN10sIFsxMjQuOTY4NjgyLCAtOC44OTI3OV0sIFsxMjUuMDcwMDIsIC05LjA4OTk4N10sIFsxMjUuMDg4NTIsIC05LjM5MzE3M10sIFsxMjQuNDM1OTUsIC0xMC4xNDAwMDFdXV0sIFtbWzExNy45MDAwMTgsIC04LjA5NTY4MV0sIFsxMTguMjYwNjE2LCAtOC4zNjIzODNdLCBbMTE4Ljg3ODQ2LCAtOC4yODA2ODNdLCBbMTE5LjEyNjUwNywgLTguNzA1ODI1XSwgWzExNy45NzA0MDIsIC04LjkwNjYzOV0sIFsxMTcuMjc3NzMxLCAtOS4wNDA4OTVdLCBbMTE2Ljc0MDE0MSwgLTkuMDMyOTM3XSwgWzExNy4wODM3MzcsIC04LjQ1NzE1OF0sIFsxMTcuNjMyMDI0LCAtOC40NDkzMDNdLCBbMTE3LjkwMDAxOCwgLTguMDk1NjgxXV1dLCBbW1sxMjIuOTAzNTM3LCAtOC4wOTQyMzRdLCBbMTIyLjc1Njk4MywgLTguNjQ5ODA4XSwgWzEyMS4yNTQ0OTEsIC04LjkzMzY2Nl0sIFsxMTkuOTI0MzkxLCAtOC44MTA0MThdLCBbMTE5LjkyMDkyOSwgLTguNDQ0ODU5XSwgWzEyMC43MTUwOTIsIC04LjIzNjk2NV0sIFsxMjEuMzQxNjY5LCAtOC41MzY3NF0sIFsxMjIuMDA3MzY1LCAtOC40NjA2Ml0sIFsxMjIuOTAzNTM3LCAtOC4wOTQyMzRdXV0sIFtbWzEwOC42MjM0NzksIC02Ljc3NzY3NF0sIFsxMTAuNTM5MjI3LCAtNi44NzczNThdLCBbMTEwLjc1OTU3NiwgLTYuNDY1MTg2XSwgWzExMi42MTQ4MTEsIC02Ljk0NjAzNl0sIFsxMTIuOTc4NzY4LCAtNy41OTQyMTNdLCBbMTE0LjQ3ODkzNSwgLTcuNzc2NTI4XSwgWzExNS43MDU1MjcsIC04LjM3MDgwN10sIFsxMTQuNTY0NTExLCAtOC43NTE4MTddLCBbMTEzLjQ2NDczNCwgLTguMzQ4OTQ3XSwgWzExMi41NTk2NzIsIC04LjM3NjE4MV0sIFsxMTEuNTIyMDYxLCAtOC4zMDIxMjldLCBbMTEwLjU4NjE1LCAtOC4xMjI2MDVdLCBbMTA5LjQyNzY2NywgLTcuNzQwNjY0XSwgWzEwOC42OTM2NTUsIC03LjY0MTZdLCBbMTA4LjI3Nzc2MywgLTcuNzY2NjU3XSwgWzEwNi40NTQxMDIsIC03LjM1NDldLCBbMTA2LjI4MDYyNCwgLTYuOTI0OV0sIFsxMDUuMzY1NDg2LCAtNi44NTE0MTZdLCBbMTA2LjA1MTY0NiwgLTUuODk1OTE5XSwgWzEwNy4yNjUwMDksIC01Ljk1NDk4NV0sIFsxMDguMDcyMDkxLCAtNi4zNDU3NjJdLCBbMTA4LjQ4Njg0NiwgLTYuNDIxOTg1XSwgWzEwOC42MjM0NzksIC02Ljc3NzY3NF1dXSwgW1tbMTM0LjcyNDYyNCwgLTYuMjE0NDAxXSwgWzEzNC4yMTAxMzQsIC02Ljg5NTIzOF0sIFsxMzQuMTEyNzc2LCAtNi4xNDI0NjddLCBbMTM0LjI5MDMzNiwgLTUuNzgzMDU4XSwgWzEzNC40OTk2MjUsIC01LjQ0NTA0Ml0sIFsxMzQuNzI3MDAyLCAtNS43Mzc1ODJdLCBbMTM0LjcyNDYyNCwgLTYuMjE0NDAxXV1dLCBbW1sxMjcuMjQ5MjE1LCAtMy40NTkwNjVdLCBbMTI2Ljg3NDkyMywgLTMuNzkwOTgzXSwgWzEyNi4xODM4MDIsIC0zLjYwNzM3Nl0sIFsxMjUuOTg5MDM0LCAtMy4xNzcyNzNdLCBbMTI3LjAwMDY1MSwgLTMuMTI5MzE4XSwgWzEyNy4yNDkyMTUsIC0zLjQ1OTA2NV1dXSwgW1tbMTMwLjQ3MTM0NCwgLTMuMDkzNzY0XSwgWzEzMC44MzQ4MzYsIC0zLjg1ODQ3Ml0sIFsxMjkuOTkwNTQ3LCAtMy40NDYzMDFdLCBbMTI5LjE1NTI0OSwgLTMuMzYyNjM3XSwgWzEyOC41OTA2ODQsIC0zLjQyODY3OV0sIFsxMjcuODk4ODkxLCAtMy4zOTM0MzZdLCBbMTI4LjEzNTg3OSwgLTIuODQzNjVdLCBbMTI5LjM3MDk5OCwgLTIuODAyMTU0XSwgWzEzMC40NzEzNDQsIC0zLjA5Mzc2NF1dXSwgW1tbMTM0LjE0MzM2OCwgLTEuMTUxODY3XSwgWzEzNC40MjI2MjcsIC0yLjc2OTE4NV0sIFsxMzUuNDU3NjAzLCAtMy4zNjc3NTNdLCBbMTM2LjI5MzMxNCwgLTIuMzA3MDQyXSwgWzEzNy40NDA3MzgsIC0xLjcwMzUxM10sIFsxMzguMzI5NzI3LCAtMS43MDI2ODZdLCBbMTM5LjE4NDkyMSwgLTIuMDUxMjk2XSwgWzEzOS45MjY2ODQsIC0yLjQwOTA1Ml0sIFsxNDEuMDAwMjEsIC0yLjYwMDE1MV0sIFsxNDEuMDE3MDU3LCAtNS44NTkwMjJdLCBbMTQxLjAzMzg1MiwgLTkuMTE3ODkzXSwgWzE0MC4xNDM0MTUsIC04LjI5NzE2OF0sIFsxMzkuMTI3NzY3LCAtOC4wOTYwNDNdLCBbMTM4Ljg4MTQ3NywgLTguMzgwOTM1XSwgWzEzNy42MTQ0NzQsIC04LjQxMTY4M10sIFsxMzguMDM5MDk5LCAtNy41OTc4ODJdLCBbMTM4LjY2ODYyMSwgLTcuMzIwMjI1XSwgWzEzOC40MDc5MTQsIC02LjIzMjg0OV0sIFsxMzcuOTI3ODQsIC01LjM5MzM2Nl0sIFsxMzUuOTg5MjUsIC00LjU0NjU0NF0sIFsxMzUuMTY0NTk4LCAtNC40NjI5MzFdLCBbMTMzLjY2Mjg4LCAtMy41Mzg4NTNdLCBbMTMzLjM2NzcwNSwgLTQuMDI0ODE5XSwgWzEzMi45ODM5NTYsIC00LjExMjk3OV0sIFsxMzIuNzU2OTQxLCAtMy43NDYyODNdLCBbMTMyLjc1Mzc4OSwgLTMuMzExNzg3XSwgWzEzMS45ODk4MDQsIC0yLjgyMDU1MV0sIFsxMzMuMDY2ODQ1LCAtMi40NjA0MThdLCBbMTMzLjc4MDAzMSwgLTIuNDc5ODQ4XSwgWzEzMy42OTYyMTIsIC0yLjIxNDU0Ml0sIFsxMzIuMjMyMzczLCAtMi4yMTI1MjZdLCBbMTMxLjgzNjIyMiwgLTEuNjE3MTYyXSwgWzEzMC45NDI4NCwgLTEuNDMyNTIyXSwgWzEzMC41MTk1NTgsIC0wLjkzNzcyXSwgWzEzMS44Njc1MzgsIC0wLjY5NTQ2MV0sIFsxMzIuMzgwMTE2LCAtMC4zNjk1MzhdLCBbMTMzLjk4NTU0OCwgLTAuNzgwMjFdLCBbMTM0LjE0MzM2OCwgLTEuMTUxODY3XV1dLCBbW1sxMjUuMjQwNTAxLCAxLjQxOTgzNl0sIFsxMjQuNDM3MDM1LCAwLjQyNzg4MV0sIFsxMjMuNjg1NTA1LCAwLjIzNTU5M10sIFsxMjIuNzIzMDgzLCAwLjQzMTEzN10sIFsxMjEuMDU2NzI1LCAwLjM4MTIxN10sIFsxMjAuMTgzMDgzLCAwLjIzNzI0N10sIFsxMjAuMDQwODcsIC0wLjUxOTY1OF0sIFsxMjAuOTM1OTA1LCAtMS40MDg5MDZdLCBbMTIxLjQ3NTgyMSwgLTAuOTU1OTYyXSwgWzEyMy4zNDA1NjUsIC0wLjYxNTY3M10sIFsxMjMuMjU4Mzk5LCAtMS4wNzYyMTNdLCBbMTIyLjgyMjcxNSwgLTAuOTMwOTUxXSwgWzEyMi4zODg1MywgLTEuNTE2ODU4XSwgWzEyMS41MDgyNzQsIC0xLjkwNDQ4M10sIFsxMjIuNDU0NTcyLCAtMy4xODYwNThdLCBbMTIyLjI3MTg5NiwgLTMuNTI5NV0sIFsxMjMuMTcwOTYzLCAtNC42ODM2OTNdLCBbMTIzLjE2MjMzMywgLTUuMzQwNjA0XSwgWzEyMi42Mjg1MTUsIC01LjYzNDU5MV0sIFsxMjIuMjM2Mzk0LCAtNS4yODI5MzNdLCBbMTIyLjcxOTU2OSwgLTQuNDY0MTcyXSwgWzEyMS43MzgyMzQsIC00Ljg1MTMzMV0sIFsxMjEuNDg5NDYzLCAtNC41NzQ1NTNdLCBbMTIxLjYxOTE3MSwgLTQuMTg4NDc4XSwgWzEyMC44OTgxODIsIC0zLjYwMjEwNV0sIFsxMjAuOTcyMzg5LCAtMi42Mjc2NDNdLCBbMTIwLjMwNTQ1MywgLTIuOTMxNjA0XSwgWzEyMC4zOTAwNDcsIC00LjA5NzU3OV0sIFsxMjAuNDMwNzE3LCAtNS41MjgyNDFdLCBbMTE5Ljc5NjU0MywgLTUuNjczNF0sIFsxMTkuMzY2OTA2LCAtNS4zNzk4NzhdLCBbMTE5LjY1MzYwNiwgLTQuNDU5NDE3XSwgWzExOS40OTg4MzUsIC0zLjQ5NDQxMl0sIFsxMTkuMDc4MzQ0LCAtMy40ODcwMjJdLCBbMTE4Ljc2Nzc2OSwgLTIuODAxOTk5XSwgWzExOS4xODA5NzQsIC0yLjE0NzEwNF0sIFsxMTkuMzIzMzk0LCAtMS4zNTMxNDddLCBbMTE5LjgyNTk5OSwgMC4xNTQyNTRdLCBbMTIwLjAzNTcwMiwgMC41NjY0NzddLCBbMTIwLjg4NTc3OSwgMS4zMDkyMjNdLCBbMTIxLjY2NjgxNywgMS4wMTM5NDRdLCBbMTIyLjkyNzU2NywgMC44NzUxOTJdLCBbMTI0LjA3NzUyMiwgMC45MTcxMDJdLCBbMTI1LjA2NTk4OSwgMS42NDMyNTldLCBbMTI1LjI0MDUwMSwgMS40MTk4MzZdXV0sIFtbWzEyOC42ODgyNDksIDEuMTMyMzg2XSwgWzEyOC42MzU5NTIsIDAuMjU4NDg2XSwgWzEyOC4xMjAxNywgMC4zNTY0MTNdLCBbMTI3Ljk2ODAzNCwgLTAuMjUyMDc3XSwgWzEyOC4zNzk5OTksIC0wLjc4MDAwNF0sIFsxMjguMTAwMDE2LCAtMC44OTk5OTZdLCBbMTI3LjY5NjQ3NSwgLTAuMjY2NTk4XSwgWzEyNy4zOTk0OSwgMS4wMTE3MjJdLCBbMTI3LjYwMDUxMiwgMS44MTA2OTFdLCBbMTI3LjkzMjM3OCwgMi4xNzQ1OTZdLCBbMTI4LjAwNDE1NiwgMS42Mjg1MzFdLCBbMTI4LjU5NDU1OSwgMS41NDA4MTFdLCBbMTI4LjY4ODI0OSwgMS4xMzIzODZdXV0sIFtbWzExNy44NzU2MjcsIDEuODI3NjQxXSwgWzExOC45OTY3NDcsIDAuOTAyMjE5XSwgWzExNy44MTE4NTgsIDAuNzg0MjQyXSwgWzExNy40NzgzMzksIDAuMTAyNDc1XSwgWzExNy41MjE2NDQsIC0wLjgwMzcyM10sIFsxMTYuNTYwMDQ4LCAtMS40ODc2NjFdLCBbMTE2LjUzMzc5NywgLTIuNDgzNTE3XSwgWzExNi4xNDgwODQsIC00LjAxMjcyNl0sIFsxMTYuMDAwODU4LCAtMy42NTcwMzddLCBbMTE0Ljg2NDgwMywgLTQuMTA2OTg0XSwgWzExNC40Njg2NTIsIC0zLjQ5NTcwNF0sIFsxMTMuNzU1NjcyLCAtMy40MzkxN10sIFsxMTMuMjU2OTk0LCAtMy4xMTg3NzZdLCBbMTEyLjA2ODEyNiwgLTMuNDc4MzkyXSwgWzExMS43MDMyOTEsIC0yLjk5NDQ0Ml0sIFsxMTEuMDQ4MjQsIC0zLjA0OTQyNl0sIFsxMTAuMjIzODQ2LCAtMi45MzQwMzJdLCBbMTEwLjA3MDkzNiwgLTEuNTkyODc0XSwgWzEwOS41NzE5NDgsIC0xLjMxNDkwN10sIFsxMDkuMDkxODc0LCAtMC40NTk1MDddLCBbMTA4Ljk1MjY1OCwgMC40MTUzNzVdLCBbMTA5LjA2OTEzNiwgMS4zNDE5MzRdLCBbMTA5LjY2MzI2LCAyLjAwNjQ2N10sIFsxMDkuODMwMjI3LCAxLjMzODEzNl0sIFsxMTAuNTE0MDYxLCAwLjc3MzEzMV0sIFsxMTEuMTU5MTM4LCAwLjk3NjQ3OF0sIFsxMTEuNzk3NTQ4LCAwLjkwNDQ0MV0sIFsxMTIuMzgwMjUyLCAxLjQxMDEyMV0sIFsxMTIuODU5ODA5LCAxLjQ5Nzc5XSwgWzExMy44MDU4NSwgMS4yMTc1NDldLCBbMTE0LjYyMTM1NSwgMS40MzA2ODhdLCBbMTE1LjEzNDAzNywgMi44MjE0ODJdLCBbMTE1LjUxOTA3OCwgMy4xNjkyMzhdLCBbMTE1Ljg2NTUxNywgNC4zMDY1NTldLCBbMTE3LjAxNTIxNCwgNC4zMDYwOTRdLCBbMTE3Ljg4MjAzNSwgNC4xMzc1NTFdLCBbMTE3LjMxMzIzMiwgMy4yMzQ0MjhdLCBbMTE4LjA0ODMzLCAyLjI4NzY5XSwgWzExNy44NzU2MjcsIDEuODI3NjQxXV1dLCBbW1sxMDUuODE3NjU1LCAtNS44NTIzNTZdLCBbMTA0LjcxMDM4NCwgLTUuODczMjg1XSwgWzEwMy44NjgyMTMsIC01LjAzNzMxNV0sIFsxMDIuNTg0MjYxLCAtNC4yMjAyNTldLCBbMTAyLjE1NjE3MywgLTMuNjE0MTQ2XSwgWzEwMS4zOTkxMTMsIC0yLjc5OTc3N10sIFsxMDAuOTAyNTAzLCAtMi4wNTAyNjJdLCBbMTAwLjE0MTk4MSwgLTAuNjUwMzQ4XSwgWzk5LjI2Mzc0LCAwLjE4MzE0Ml0sIFs5OC45NzAwMTEsIDEuMDQyODgyXSwgWzk4LjYwMTM1MSwgMS44MjM1MDddLCBbOTcuNjk5NTk4LCAyLjQ1MzE4NF0sIFs5Ny4xNzY5NDIsIDMuMzA4NzkxXSwgWzk2LjQyNDAxNywgMy44Njg4Nl0sIFs5NS4zODA4NzYsIDQuOTcwNzgyXSwgWzk1LjI5MzAyNiwgNS40Nzk4MjFdLCBbOTUuOTM2ODYzLCA1LjQzOTUxM10sIFs5Ny40ODQ4ODIsIDUuMjQ2MzIxXSwgWzk4LjM2OTE2OSwgNC4yNjgzN10sIFs5OS4xNDI1NTksIDMuNTkwMzVdLCBbOTkuNjkzOTk4LCAzLjE3NDMyOV0sIFsxMDAuNjQxNDM0LCAyLjA5OTM4MV0sIFsxMDEuNjU4MDEyLCAyLjA4MzY5N10sIFsxMDIuNDk4MjcxLCAxLjM5ODddLCBbMTAzLjA3Njg0LCAwLjU2MTM2MV0sIFsxMDMuODM4Mzk2LCAwLjEwNDU0Ml0sIFsxMDMuNDM3NjQ1LCAtMC43MTE5NDZdLCBbMTA0LjAxMDc4OSwgLTEuMDU5MjEyXSwgWzEwNC4zNjk5OTEsIC0xLjA4NDg0M10sIFsxMDQuNTM5NDksIC0xLjc4MjM3Ml0sIFsxMDQuODg3ODkzLCAtMi4zNDA0MjVdLCBbMTA1LjYyMjExMSwgLTIuNDI4ODQ0XSwgWzEwNi4xMDg1OTMsIC0zLjA2MTc3N10sIFsxMDUuODU3NDQ2LCAtNC4zMDU1MjVdLCBbMTA1LjgxNzY1NSwgLTUuODUyMzU2XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJJRE4iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkluZG9uZXNpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbNzcuODM3NDUxLCAzNS40OTQwMV0sIFs3OC45MTIyNjksIDM0LjMyMTkzNl0sIFs3OC44MTEwODYsIDMzLjUwNjE5OF0sIFs3OS4yMDg4OTIsIDMyLjk5NDM5NV0sIFs3OS4xNzYxMjksIDMyLjQ4Mzc4XSwgWzc4LjQ1ODQ0NiwgMzIuNjE4MTY0XSwgWzc4LjczODg5NCwgMzEuNTE1OTA2XSwgWzc5LjcyMTM2NywgMzAuODgyNzE1XSwgWzgxLjExMTI1NiwgMzAuMTgzNDgxXSwgWzgwLjQ3NjcyMSwgMjkuNzI5ODY1XSwgWzgwLjA4ODQyNSwgMjguNzk0NDddLCBbODEuMDU3MjAzLCAyOC40MTYwOTVdLCBbODEuOTk5OTg3LCAyNy45MjU0NzldLCBbODMuMzA0MjQ5LCAyNy4zNjQ1MDZdLCBbODQuNjc1MDE4LCAyNy4yMzQ5MDFdLCBbODUuMjUxNzc5LCAyNi43MjYxOThdLCBbODYuMDI0MzkzLCAyNi42MzA5ODVdLCBbODcuMjI3NDcyLCAyNi4zOTc4OThdLCBbODguMDYwMjM4LCAyNi40MTQ2MTVdLCBbODguMTc0ODA0LCAyNi44MTA0MDVdLCBbODguMDQzMTMzLCAyNy40NDU4MTldLCBbODguMTIwNDQxLCAyNy44NzY1NDJdLCBbODguNzMwMzI2LCAyOC4wODY4NjVdLCBbODguODE0MjQ4LCAyNy4yOTkzMTZdLCBbODguODM1NjQzLCAyNy4wOTg5NjZdLCBbODkuNzQ0NTI4LCAyNi43MTk0MDNdLCBbOTAuMzczMjc1LCAyNi44NzU3MjRdLCBbOTEuMjE3NTEzLCAyNi44MDg2NDhdLCBbOTIuMDMzNDg0LCAyNi44MzgzMV0sIFs5Mi4xMDM3MTIsIDI3LjQ1MjYxNF0sIFs5MS42OTY2NTcsIDI3Ljc3MTc0Ml0sIFs5Mi41MDMxMTksIDI3Ljg5Njg3Nl0sIFs5My40MTMzNDgsIDI4LjY0MDYyOV0sIFs5NC41NjU5OSwgMjkuMjc3NDM4XSwgWzk1LjQwNDgwMiwgMjkuMDMxNzE3XSwgWzk2LjExNzY3OSwgMjkuNDUyODAyXSwgWzk2LjU4NjU5MSwgMjguODMwOThdLCBbOTYuMjQ4ODMzLCAyOC40MTEwMzFdLCBbOTcuMzI3MTE0LCAyOC4yNjE1ODNdLCBbOTcuNDAyNTYxLCAyNy44ODI1MzZdLCBbOTcuMDUxOTg5LCAyNy42OTkwNTldLCBbOTcuMTMzOTk5LCAyNy4wODM3NzRdLCBbOTYuNDE5MzY2LCAyNy4yNjQ1ODldLCBbOTUuMTI0NzY4LCAyNi41NzM1NzJdLCBbOTUuMTU1MTUzLCAyNi4wMDEzMDddLCBbOTQuNjAzMjQ5LCAyNS4xNjI0OTVdLCBbOTQuNTUyNjU4LCAyNC42NzUyMzhdLCBbOTQuMTA2NzQyLCAyMy44NTA3NDFdLCBbOTMuMzI1MTg4LCAyNC4wNzg1NTZdLCBbOTMuMjg2MzI3LCAyMy4wNDM2NThdLCBbOTMuMDYwMjk0LCAyMi43MDMxMTFdLCBbOTMuMTY2MTI4LCAyMi4yNzg0Nl0sIFs5Mi42NzI3MjEsIDIyLjA0MTIzOV0sIFs5Mi4xNDYwMzUsIDIzLjYyNzQ5OV0sIFs5MS44Njk5MjgsIDIzLjYyNDM0Nl0sIFs5MS43MDY0NzUsIDIyLjk4NTI2NF0sIFs5MS4xNTg5NjMsIDIzLjUwMzUyN10sIFs5MS40Njc3MywgMjQuMDcyNjM5XSwgWzkxLjkxNTA5MywgMjQuMTMwNDE0XSwgWzkyLjM3NjIwMiwgMjQuOTc2NjkzXSwgWzkxLjc5OTU5NiwgMjUuMTQ3NDMyXSwgWzkwLjg3MjIxMSwgMjUuMTMyNjAxXSwgWzg5LjkyMDY5MywgMjUuMjY5NzVdLCBbODkuODMyNDgxLCAyNS45NjUwODJdLCBbODkuMzU1MDk0LCAyNi4wMTQ0MDddLCBbODguNTYzMDQ5LCAyNi40NDY1MjZdLCBbODguMjA5Nzg5LCAyNS43NjgwNjZdLCBbODguOTMxNTU0LCAyNS4yMzg2OTJdLCBbODguMzA2MzczLCAyNC44NjYwNzldLCBbODguMDg0NDIyLCAyNC41MDE2NTddLCBbODguNjk5OTQsIDI0LjIzMzcxNV0sIFs4OC41Mjk3NywgMjMuNjMxMTQyXSwgWzg4Ljg3NjMxMiwgMjIuODc5MTQ2XSwgWzg5LjAzMTk2MSwgMjIuMDU1NzA4XSwgWzg4Ljg4ODc2NiwgMjEuNjkwNTg4XSwgWzg4LjIwODQ5NywgMjEuNzAzMTcyXSwgWzg2Ljk3NTcwNCwgMjEuNDk1NTYyXSwgWzg3LjAzMzE2OSwgMjAuNzQzMzA4XSwgWzg2LjQ5OTM1MSwgMjAuMTUxNjM4XSwgWzg1LjA2MDI2NiwgMTkuNDc4NTc5XSwgWzgzLjk0MTAwNiwgMTguMzAyMDFdLCBbODMuMTg5MjE3LCAxNy42NzEyMjFdLCBbODIuMTkyNzkyLCAxNy4wMTY2MzZdLCBbODIuMTkxMjQyLCAxNi41NTY2NjRdLCBbODEuNjkyNzE5LCAxNi4zMTAyMTldLCBbODAuNzkxOTk5LCAxNS45NTE5NzJdLCBbODAuMzI0ODk2LCAxNS44OTkxODVdLCBbODAuMDI1MDY5LCAxNS4xMzY0MTVdLCBbODAuMjMzMjc0LCAxMy44MzU3NzFdLCBbODAuMjg2Mjk0LCAxMy4wMDYyNjFdLCBbNzkuODYyNTQ3LCAxMi4wNTYyMTVdLCBbNzkuODU3OTk5LCAxMC4zNTcyNzVdLCBbNzkuMzQwNTEyLCAxMC4zMDg4NTRdLCBbNzguODg1MzQ1LCA5LjU0NjEzNl0sIFs3OS4xODk3MiwgOS4yMTY1NDRdLCBbNzguMjc3OTQxLCA4LjkzMzA0N10sIFs3Ny45NDExNjUsIDguMjUyOTU5XSwgWzc3LjUzOTg5OCwgNy45NjU1MzVdLCBbNzYuNTkyOTc5LCA4Ljg5OTI3Nl0sIFs3Ni4xMzAwNjEsIDEwLjI5OTYzXSwgWzc1Ljc0NjQ2NywgMTEuMzA4MjUxXSwgWzc1LjM5NjEwMSwgMTEuNzgxMjQ1XSwgWzc0Ljg2NDgxNiwgMTIuNzQxOTM2XSwgWzc0LjYxNjcxNywgMTMuOTkyNTgzXSwgWzc0LjQ0Mzg1OSwgMTQuNjE3MjIyXSwgWzczLjUzNDE5OSwgMTUuOTkwNjUyXSwgWzczLjExOTkwOSwgMTcuOTI4NTddLCBbNzIuODIwOTA5LCAxOS4yMDgyMzRdLCBbNzIuODI0NDc1LCAyMC40MTk1MDNdLCBbNzIuNjMwNTMzLCAyMS4zNTYwMDldLCBbNzEuMTc1MjczLCAyMC43NTc0NDFdLCBbNzAuNDcwNDU5LCAyMC44NzczMzFdLCBbNjkuMTY0MTMsIDIyLjA4OTI5OF0sIFs2OS42NDQ5MjgsIDIyLjQ1MDc3NV0sIFs2OS4zNDk1OTcsIDIyLjg0MzE4XSwgWzY4LjE3NjY0NSwgMjMuNjkxOTY1XSwgWzY4Ljg0MjU5OSwgMjQuMzU5MTM0XSwgWzcxLjA0MzI0LCAyNC4zNTY1MjRdLCBbNzAuODQ0Njk5LCAyNS4yMTUxMDJdLCBbNzAuMjgyODczLCAyNS43MjIyMjldLCBbNzAuMTY4OTI3LCAyNi40OTE4NzJdLCBbNjkuNTE0MzkzLCAyNi45NDA5NjZdLCBbNzAuNjE2NDk2LCAyNy45ODkxOTZdLCBbNzEuNzc3NjY2LCAyNy45MTMxOF0sIFs3Mi44MjM3NTIsIDI4Ljk2MTU5Ml0sIFs3My40NTA2MzgsIDI5Ljk3NjQxM10sIFs3NC40MjEzOCwgMzAuOTc5ODE1XSwgWzc0LjQwNTkyOSwgMzEuNjkyNjM5XSwgWzc1LjI1ODY0MiwgMzIuMjcxMTA1XSwgWzc0LjQ1MTU1OSwgMzIuNzY0OV0sIFs3NC4xMDQyOTQsIDMzLjQ0MTQ3M10sIFs3My43NDk5NDgsIDM0LjMxNzY5OV0sIFs3NC4yNDAyMDMsIDM0Ljc0ODg4N10sIFs3NS43NTcwNjEsIDM0LjUwNDkyM10sIFs3Ni44NzE3MjIsIDM0LjY1MzU0NF0sIFs3Ny44Mzc0NTEsIDM1LjQ5NDAxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJTkQiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkluZGlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2IxMDAyNiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNi4xOTc4ODUsIDUzLjg2NzU2NV0sIFstNi4wMzI5ODUsIDUzLjE1MzE2NF0sIFstNi43ODg4NTcsIDUyLjI2MDExOF0sIFstOC41NjE2MTcsIDUxLjY2OTMwMV0sIFstOS45NzcwODYsIDUxLjgyMDQ1NV0sIFstOS4xNjYyODMsIDUyLjg2NDYyOV0sIFstOS42ODg1MjUsIDUzLjg4MTM2M10sIFstOC4zMjc5ODcsIDU0LjY2NDUxOV0sIFstNy41NzIxNjgsIDU1LjEzMTYyMl0sIFstNy4zNjYwMzEsIDU0LjU5NTg0MV0sIFstNy41NzIxNjgsIDU0LjA1OTk1Nl0sIFstNi45NTM3MywgNTQuMDczNzAyXSwgWy02LjE5Nzg4NSwgNTMuODY3NTY1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJUkwiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIklyZWxhbmQiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzUzLjkyMTU5OCwgMzcuMTk4OTE4XSwgWzU0LjgwMDMwNCwgMzcuMzkyNDIxXSwgWzU1LjUxMTU3OCwgMzcuOTY0MTE3XSwgWzU2LjE4MDM3NSwgMzcuOTM1MTI3XSwgWzU2LjYxOTM2NiwgMzguMTIxMzk0XSwgWzU3LjMzMDQzNCwgMzguMDI5MjI5XSwgWzU4LjQzNjE1NCwgMzcuNTIyMzA5XSwgWzU5LjIzNDc2MiwgMzcuNDEyOTg4XSwgWzYwLjM3NzYzOCwgMzYuNTI3MzgzXSwgWzYxLjEyMzA3MSwgMzYuNDkxNTk3XSwgWzYxLjIxMDgxNywgMzUuNjUwMDcyXSwgWzYwLjgwMzE5MywgMzQuNDA0MTAyXSwgWzYwLjUyODQzLCAzMy42NzY0NDZdLCBbNjAuOTYzNywgMzMuNTI4ODMyXSwgWzYwLjUzNjA3OCwgMzIuOTgxMjY5XSwgWzYwLjg2MzY1NSwgMzIuMTgyOTJdLCBbNjAuOTQxOTQ1LCAzMS41NDgwNzVdLCBbNjEuNjk5MzE0LCAzMS4zNzk1MDZdLCBbNjEuNzgxMjIyLCAzMC43MzU4NV0sIFs2MC44NzQyNDgsIDI5LjgyOTIzOV0sIFs2MS4zNjkzMDksIDI5LjMwMzI3Nl0sIFs2MS43NzE4NjgsIDI4LjY5OTMzNF0sIFs2Mi43Mjc4MywgMjguMjU5NjQ1XSwgWzYyLjc1NTQyNiwgMjcuMzc4OTIzXSwgWzYzLjIzMzg5OCwgMjcuMjE3MDQ3XSwgWzYzLjMxNjYzMiwgMjYuNzU2NTMyXSwgWzYxLjg3NDE4NywgMjYuMjM5OTc1XSwgWzYxLjQ5NzM2MywgMjUuMDc4MjM3XSwgWzU5LjYxNjEzNCwgMjUuMzgwMTU3XSwgWzU4LjUyNTc2MSwgMjUuNjA5OTYyXSwgWzU3LjM5NzI1MSwgMjUuNzM5OTAyXSwgWzU2Ljk3MDc2NiwgMjYuOTY2MTA2XSwgWzU2LjQ5MjEzOSwgMjcuMTQzMzA1XSwgWzU1LjcyMzcxLCAyNi45NjQ2MzNdLCBbNTQuNzE1MDksIDI2LjQ4MDY1OF0sIFs1My40OTMwOTcsIDI2LjgxMjM2OV0sIFs1Mi40ODM1OTgsIDI3LjU4MDg0OV0sIFs1MS41MjA3NjMsIDI3Ljg2NTY5XSwgWzUwLjg1Mjk0OCwgMjguODE0NTIxXSwgWzUwLjExNTAwOSwgMzAuMTQ3NzczXSwgWzQ5LjU3Njg1LCAyOS45ODU3MTVdLCBbNDguOTQxMzMzLCAzMC4zMTcwOV0sIFs0OC41Njc5NzEsIDI5LjkyNjc3OF0sIFs0OC4wMTQ1NjgsIDMwLjQ1MjQ1N10sIFs0OC4wMDQ2OTgsIDMwLjk4NTEzN10sIFs0Ny42ODUyODYsIDMwLjk4NDg1M10sIFs0Ny44NDkyMDQsIDMxLjcwOTE3Nl0sIFs0Ny4zMzQ2NjEsIDMyLjQ2OTE1NV0sIFs0Ni4xMDkzNjIsIDMzLjAxNzI4N10sIFs0NS40MTY2OTEsIDMzLjk2Nzc5OF0sIFs0NS42NDg0NiwgMzQuNzQ4MTM4XSwgWzQ2LjE1MTc4OCwgMzUuMDkzMjU5XSwgWzQ2LjA3NjM0LCAzNS42NzczODNdLCBbNDUuNDIwNjE4LCAzNS45Nzc1NDZdLCBbNDQuNzcyNjcsIDM3LjE3MDQ1XSwgWzQ0LjIyNTc1NiwgMzcuOTcxNTg0XSwgWzQ0LjQyMTQwMywgMzguMjgxMjgxXSwgWzQ0LjEwOTIyNSwgMzkuNDI4MTM2XSwgWzQ0Ljc5Mzk5LCAzOS43MTMwMDNdLCBbNDQuOTUyNjg4LCAzOS4zMzU3NjVdLCBbNDUuNDU3NzIyLCAzOC44NzQxMzldLCBbNDYuMTQzNjIzLCAzOC43NDEyMDFdLCBbNDYuNTA1NzIsIDM4Ljc3MDYwNV0sIFs0Ny42ODUwNzksIDM5LjUwODM2NF0sIFs0OC4wNjAwOTUsIDM5LjU4MjIzNV0sIFs0OC4zNTU1MjksIDM5LjI4ODc2NV0sIFs0OC4wMTA3NDQsIDM4Ljc5NDAxNV0sIFs0OC42MzQzNzUsIDM4LjI3MDM3OF0sIFs0OC44ODMyNDksIDM4LjMyMDI0NV0sIFs0OS4xOTk2MTIsIDM3LjU4Mjg3NF0sIFs1MC4xNDc3NzEsIDM3LjM3NDU2N10sIFs1MC44NDIzNTQsIDM2Ljg3MjgxNF0sIFs1Mi4yNjQwMjUsIDM2LjcwMDQyMl0sIFs1My44MjU3OSwgMzYuOTY1MDMxXSwgWzUzLjkyMTU5OCwgMzcuMTk4OTE4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJUk4iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIklyYW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzQ1LjQyMDYxOCwgMzUuOTc3NTQ2XSwgWzQ2LjA3NjM0LCAzNS42NzczODNdLCBbNDYuMTUxNzg4LCAzNS4wOTMyNTldLCBbNDUuNjQ4NDYsIDM0Ljc0ODEzOF0sIFs0NS40MTY2OTEsIDMzLjk2Nzc5OF0sIFs0Ni4xMDkzNjIsIDMzLjAxNzI4N10sIFs0Ny4zMzQ2NjEsIDMyLjQ2OTE1NV0sIFs0Ny44NDkyMDQsIDMxLjcwOTE3Nl0sIFs0Ny42ODUyODYsIDMwLjk4NDg1M10sIFs0OC4wMDQ2OTgsIDMwLjk4NTEzN10sIFs0OC4wMTQ1NjgsIDMwLjQ1MjQ1N10sIFs0OC41Njc5NzEsIDI5LjkyNjc3OF0sIFs0Ny45NzQ1MTksIDI5Ljk3NTgxOV0sIFs0Ny4zMDI2MjIsIDMwLjA1OTA3XSwgWzQ2LjU2ODcxMywgMjkuMDk5MDI1XSwgWzQ0LjcwOTQ5OSwgMjkuMTc4ODkxXSwgWzQxLjg4OTk4MSwgMzEuMTkwMDA5XSwgWzQwLjM5OTk5NCwgMzEuODg5OTkyXSwgWzM5LjE5NTQ2OCwgMzIuMTYxMDA5XSwgWzM4Ljc5MjM0MSwgMzMuMzc4Njg2XSwgWzQxLjAwNjE1OSwgMzQuNDE5MzcyXSwgWzQxLjM4Mzk2NSwgMzUuNjI4MzE3XSwgWzQxLjI4OTcwNywgMzYuMzU4ODE1XSwgWzQxLjgzNzA2NCwgMzYuNjA1ODU0XSwgWzQyLjM0OTU5MSwgMzcuMjI5ODczXSwgWzQyLjc3OTEyNiwgMzcuMzg1MjY0XSwgWzQzLjk0MjI1OSwgMzcuMjU2MjI4XSwgWzQ0LjI5MzQ1MiwgMzcuMDAxNTE0XSwgWzQ0Ljc3MjY5OSwgMzcuMTcwNDQ1XSwgWzQ1LjQyMDYxOCwgMzUuOTc3NTQ2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJUlEiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIklyYXEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xNC41MDg2OTUsIDY2LjQ1NTg5Ml0sIFstMTQuNzM5NjM3LCA2NS44MDg3NDhdLCBbLTEzLjYwOTczMiwgNjUuMTI2NjcxXSwgWy0xNC45MDk4MzQsIDY0LjM2NDA4Ml0sIFstMTcuNzk0NDM4LCA2My42Nzg3NDldLCBbLTE4LjY1NjI0NiwgNjMuNDk2MzgzXSwgWy0xOS45NzI3NTUsIDYzLjY0MzYzNV0sIFstMjIuNzYyOTcyLCA2My45NjAxNzldLCBbLTIxLjc3ODQ4NCwgNjQuNDAyMTE2XSwgWy0yMy45NTUwNDQsIDY0Ljg5MTEzXSwgWy0yMi4xODQ0MDMsIDY1LjA4NDk2OF0sIFstMjIuMjI3NDIzLCA2NS4zNzg1OTRdLCBbLTI0LjMyNjE4NCwgNjUuNjExMTg5XSwgWy0yMy42NTA1MTUsIDY2LjI2MjUxOV0sIFstMjIuMTM0OTIyLCA2Ni40MTA0NjldLCBbLTIwLjU3NjI4NCwgNjUuNzMyMTEyXSwgWy0xOS4wNTY4NDIsIDY2LjI3NjYwMV0sIFstMTcuNzk4NjI0LCA2NS45OTM4NTNdLCBbLTE2LjE2NzgxOSwgNjYuNTI2NzkyXSwgWy0xNC41MDg2OTUsIDY2LjQ1NTg5Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiSVNMIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJJY2VsYW5kIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1szNS43MTk5MTgsIDMyLjcwOTE5Ml0sIFszNS41NDU2NjUsIDMyLjM5Mzk5Ml0sIFszNS4xODM5MywgMzIuNTMyNTExXSwgWzM0Ljk3NDY0MSwgMzEuODY2NTgyXSwgWzM1LjIyNTg5MiwgMzEuNzU0MzQxXSwgWzM0Ljk3MDUwNywgMzEuNjE2Nzc4XSwgWzM0LjkyNzQwOCwgMzEuMzUzNDM1XSwgWzM1LjM5NzU2MSwgMzEuNDg5MDg2XSwgWzM1LjQyMDkxOCwgMzEuMTAwMDY2XSwgWzM0LjkyMjYwMywgMjkuNTAxMzI2XSwgWzM0LjI2NTQzMywgMzEuMjE5MzYxXSwgWzM0LjU1NjM3MiwgMzEuNTQ4ODI0XSwgWzM0LjQ4ODEwNywgMzEuNjA1NTM5XSwgWzM0Ljc1MjU4NywgMzIuMDcyOTI2XSwgWzM0Ljk1NTQxNywgMzIuODI3Mzc2XSwgWzM1LjA5ODQ1NywgMzMuMDgwNTM5XSwgWzM1LjEyNjA1MywgMzMuMDkwOV0sIFszNS40NjA3MDksIDMzLjA4OTA0XSwgWzM1LjU1Mjc5NywgMzMuMjY0Mjc1XSwgWzM1LjgyMTEwMSwgMzMuMjc3NDI2XSwgWzM1LjgzNjM5NywgMzIuODY4MTIzXSwgWzM1LjcwMDc5OCwgMzIuNzE2MDE0XSwgWzM1LjcxOTkxOCwgMzIuNzA5MTkyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJU1IiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIklzcmFlbCIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWzE1LjUyMDM3NiwgMzguMjMxMTU1XSwgWzE1LjE2MDI0MywgMzcuNDQ0MDQ2XSwgWzE1LjMwOTg5OCwgMzcuMTM0MjE5XSwgWzE1LjA5OTk4OCwgMzYuNjE5OTg3XSwgWzE0LjMzNTIyOSwgMzYuOTk2NjMxXSwgWzEzLjgyNjczMywgMzcuMTA0NTMxXSwgWzEyLjQzMTAwNCwgMzcuNjEyOTVdLCBbMTIuNTcwOTQ0LCAzOC4xMjYzODFdLCBbMTMuNzQxMTU2LCAzOC4wMzQ5NjZdLCBbMTQuNzYxMjQ5LCAzOC4xNDM4NzRdLCBbMTUuNTIwMzc2LCAzOC4yMzExNTVdXV0sIFtbWzkuMjEwMDEyLCA0MS4yMDk5OTFdLCBbOS44MDk5NzUsIDQwLjUwMDAwOV0sIFs5LjY2OTUxOSwgMzkuMTc3Mzc2XSwgWzkuMjE0ODE4LCAzOS4yNDA0NzNdLCBbOC44MDY5MzYsIDM4LjkwNjYxOF0sIFs4LjQyODMwMiwgMzkuMTcxODQ3XSwgWzguMzg4MjUzLCA0MC4zNzgzMTFdLCBbOC4xNTk5OTgsIDQwLjk1MDAwN10sIFs4LjcwOTk5MSwgNDAuODk5OTg0XSwgWzkuMjEwMDEyLCA0MS4yMDk5OTFdXV0sIFtbWzEyLjM3NjQ4NSwgNDYuNzY3NTU5XSwgWzEzLjgwNjQ3NSwgNDYuNTA5MzA2XSwgWzEzLjY5ODExLCA0Ni4wMTY3NzhdLCBbMTMuOTM3NjMsIDQ1LjU5MTAxNl0sIFsxMy4xNDE2MDYsIDQ1LjczNjY5Ml0sIFsxMi4zMjg1ODEsIDQ1LjM4MTc3OF0sIFsxMi4zODM4NzUsIDQ0Ljg4NTM3NF0sIFsxMi4yNjE0NTMsIDQ0LjYwMDQ4Ml0sIFsxMi41ODkyMzcsIDQ0LjA5MTM2Nl0sIFsxMy41MjY5MDYsIDQzLjU4NzcyN10sIFsxNC4wMjk4MjEsIDQyLjc2MTAwOF0sIFsxNS4xNDI1NywgNDEuOTU1MTRdLCBbMTUuOTI2MTkxLCA0MS45NjEzMTVdLCBbMTYuMTY5ODk3LCA0MS43NDAyOTVdLCBbMTUuODg5MzQ2LCA0MS41NDEwODJdLCBbMTYuNzg1MDAyLCA0MS4xNzk2MDZdLCBbMTcuNTE5MTY5LCA0MC44NzcxNDNdLCBbMTguMzc2Njg3LCA0MC4zNTU2MjVdLCBbMTguNDgwMjQ3LCA0MC4xNjg4NjZdLCBbMTguMjkzMzg1LCAzOS44MTA3NzRdLCBbMTcuNzM4MzgsIDQwLjI3NzY3MV0sIFsxNi44Njk1OTYsIDQwLjQ0MjIzNV0sIFsxNi40NDg3NDMsIDM5Ljc5NTQwMV0sIFsxNy4xNzE0OSwgMzkuNDI0N10sIFsxNy4wNTI4NDEsIDM4LjkwMjg3MV0sIFsxNi42MzUwODgsIDM4Ljg0MzU3Ml0sIFsxNi4xMDA5NjEsIDM3Ljk4NTg5OV0sIFsxNS42ODQwODcsIDM3LjkwODg0OV0sIFsxNS42ODc5NjMsIDM4LjIxNDU5M10sIFsxNS44OTE5ODEsIDM4Ljc1MDk0Ml0sIFsxNi4xMDkzMzIsIDM4Ljk2NDU0N10sIFsxNS43MTg4MTQsIDM5LjU0NDA3Ml0sIFsxNS40MTM2MTMsIDQwLjA0ODM1N10sIFsxNC45OTg0OTYsIDQwLjE3Mjk0OV0sIFsxNC43MDMyNjgsIDQwLjYwNDU1XSwgWzE0LjA2MDY3MiwgNDAuNzg2MzQ4XSwgWzEzLjYyNzk4NSwgNDEuMTg4Mjg3XSwgWzEyLjg4ODA4MiwgNDEuMjUzMDldLCBbMTIuMTA2NjgzLCA0MS43MDQ1MzVdLCBbMTEuMTkxOTA2LCA0Mi4zNTU0MjVdLCBbMTAuNTExOTQ4LCA0Mi45MzE0NjNdLCBbMTAuMjAwMDI5LCA0My45MjAwMDddLCBbOS43MDI0ODgsIDQ0LjAzNjI3OV0sIFs4Ljg4ODk0NiwgNDQuMzY2MzM2XSwgWzguNDI4NTYxLCA0NC4yMzEyMjhdLCBbNy44NTA3NjcsIDQzLjc2NzE0OF0sIFs3LjQzNTE4NSwgNDMuNjkzODQ1XSwgWzcuNTQ5NTk2LCA0NC4xMjc5MDFdLCBbNy4wMDc1NjIsIDQ0LjI1NDc2N10sIFs2Ljc0OTk1NSwgNDUuMDI4NTE4XSwgWzcuMDk2NjUyLCA0NS4zMzMwOTldLCBbNi44MDIzNTUsIDQ1LjcwODU4XSwgWzYuODQzNTkzLCA0NS45OTExNDddLCBbNy4yNzM4NTEsIDQ1Ljc3Njk0OF0sIFs3Ljc1NTk5MiwgNDUuODI0NDldLCBbOC4zMTY2MywgNDYuMTYzNjQyXSwgWzguNDg5OTUyLCA0Ni4wMDUxNTFdLCBbOC45NjYzMDYsIDQ2LjAzNjkzMl0sIFs5LjE4Mjg4MiwgNDYuNDQwMjE1XSwgWzkuOTIyODM3LCA0Ni4zMTQ4OTldLCBbMTAuMzYzMzc4LCA0Ni40ODM1NzFdLCBbMTAuNDQyNzAxLCA0Ni44OTM1NDZdLCBbMTEuMDQ4NTU2LCA0Ni43NTEzNTldLCBbMTEuMTY0ODI4LCA0Ni45NDE1NzldLCBbMTIuMTUzMDg4LCA0Ny4xMTUzOTNdLCBbMTIuMzc2NDg1LCA0Ni43Njc1NTldXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIklUQSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiSXRhbHkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy03Ny41Njk2MDEsIDE4LjQ5MDUyNV0sIFstNzYuODk2NjE5LCAxOC40MDA4NjddLCBbLTc2LjM2NTM1OSwgMTguMTYwNzAxXSwgWy03Ni4xOTk2NTksIDE3Ljg4Njg2N10sIFstNzYuOTAyNTYxLCAxNy44NjgyMzhdLCBbLTc3LjIwNjM0MSwgMTcuNzAxMTE2XSwgWy03Ny43NjYwMjMsIDE3Ljg2MTU5N10sIFstNzguMzM3NzE5LCAxOC4yMjU5NjhdLCBbLTc4LjIxNzcyNywgMTguNDU0NTMzXSwgWy03Ny43OTczNjUsIDE4LjUyNDIxOF0sIFstNzcuNTY5NjAxLCAxOC40OTA1MjVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkpBTSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiSmFtYWljYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMzUuNTQ1NjY1LCAzMi4zOTM5OTJdLCBbMzUuNzE5OTE4LCAzMi43MDkxOTJdLCBbMzYuODM0MDYyLCAzMi4zMTI5MzhdLCBbMzguNzkyMzQxLCAzMy4zNzg2ODZdLCBbMzkuMTk1NDY4LCAzMi4xNjEwMDldLCBbMzkuMDA0ODg2LCAzMi4wMTAyMTddLCBbMzcuMDAyMTY2LCAzMS41MDg0MTNdLCBbMzcuOTk4ODQ5LCAzMC41MDg1XSwgWzM3LjY2ODEyLCAzMC4zMzg2NjVdLCBbMzcuNTAzNTgyLCAzMC4wMDM3NzZdLCBbMzYuNzQwNTI4LCAyOS44NjUyODNdLCBbMzYuNTAxMjE0LCAyOS41MDUyNTRdLCBbMzYuMDY4OTQxLCAyOS4xOTc0OTVdLCBbMzQuOTU2MDM3LCAyOS4zNTY1NTVdLCBbMzQuOTIyNjAzLCAyOS41MDEzMjZdLCBbMzUuNDIwOTE4LCAzMS4xMDAwNjZdLCBbMzUuMzk3NTYxLCAzMS40ODkwODZdLCBbMzUuNTQ1MjUyLCAzMS43ODI1MDVdLCBbMzUuNTQ1NjY1LCAzMi4zOTM5OTJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkpPUiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiSm9yZGFuIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbMTM0LjYzODQyOCwgMzQuMTQ5MjM0XSwgWzEzNC43NjYzNzksIDMzLjgwNjMzNV0sIFsxMzQuMjAzNDE2LCAzMy4yMDExNzhdLCBbMTMzLjc5Mjk1LCAzMy41MjE5ODVdLCBbMTMzLjI4MDI2OCwgMzMuMjg5NTddLCBbMTMzLjAxNDg1OCwgMzIuNzA0NTY3XSwgWzEzMi4zNjMxMTUsIDMyLjk4OTM4Ml0sIFsxMzIuMzcxMTc2LCAzMy40NjM2NDJdLCBbMTMyLjkyNDM3MywgMzQuMDYwMjk5XSwgWzEzMy40OTI5NjgsIDMzLjk0NDYyMV0sIFsxMzMuOTA0MTA2LCAzNC4zNjQ5MzFdLCBbMTM0LjYzODQyOCwgMzQuMTQ5MjM0XV1dLCBbW1sxNDAuOTc2Mzg4LCAzNy4xNDIwNzRdLCBbMTQwLjU5OTc3LCAzNi4zNDM5ODNdLCBbMTQwLjc3NDA3NCwgMzUuODQyODc3XSwgWzE0MC4yNTMyNzksIDM1LjEzODExNF0sIFsxMzguOTc1NTI4LCAzNC42Njc2XSwgWzEzNy4yMTc1OTksIDM0LjYwNjI4Nl0sIFsxMzUuNzkyOTgzLCAzMy40NjQ4MDVdLCBbMTM1LjEyMDk4MywgMzMuODQ5MDcxXSwgWzEzNS4wNzk0MzUsIDM0LjU5NjU0NV0sIFsxMzMuMzQwMzE2LCAzNC4zNzU5MzhdLCBbMTMyLjE1Njc3MSwgMzMuOTA0OTMzXSwgWzEzMC45ODYxNDUsIDMzLjg4NTc2MV0sIFsxMzIuMDAwMDM2LCAzMy4xNDk5OTJdLCBbMTMxLjMzMjc5LCAzMS40NTAzNTVdLCBbMTMwLjY4NjMxOCwgMzEuMDI5NTc5XSwgWzEzMC4yMDI0MiwgMzEuNDE4MjM4XSwgWzEzMC40NDc2NzYsIDMyLjMxOTQ3NV0sIFsxMjkuODE0NjkyLCAzMi42MTAzMV0sIFsxMjkuNDA4NDYzLCAzMy4yOTYwNTZdLCBbMTMwLjM1MzkzNSwgMzMuNjA0MTUxXSwgWzEzMC44Nzg0NTEsIDM0LjIzMjc0M10sIFsxMzEuODg0MjI5LCAzNC43NDk3MTRdLCBbMTMyLjYxNzY3MywgMzUuNDMzMzkzXSwgWzEzNC42MDgzMDEsIDM1LjczMTYxOF0sIFsxMzUuNjc3NTM4LCAzNS41MjcxMzRdLCBbMTM2LjcyMzgzMSwgMzcuMzA0OTg0XSwgWzEzNy4zOTA2MTIsIDM2LjgyNzM5MV0sIFsxMzguODU3NjAyLCAzNy44Mjc0ODVdLCBbMTM5LjQyNjQwNSwgMzguMjE1OTYyXSwgWzE0MC4wNTQ3OSwgMzkuNDM4ODA3XSwgWzEzOS44ODMzNzksIDQwLjU2MzMxMl0sIFsxNDAuMzA1NzgzLCA0MS4xOTUwMDVdLCBbMTQxLjM2ODk3MywgNDEuMzc4NTZdLCBbMTQxLjkxNDI2MywgMzkuOTkxNjE2XSwgWzE0MS44ODQ2MDEsIDM5LjE4MDg2NV0sIFsxNDAuOTU5NDg5LCAzOC4xNzQwMDFdLCBbMTQwLjk3NjM4OCwgMzcuMTQyMDc0XV1dLCBbW1sxNDMuOTEwMTYyLCA0NC4xNzQxXSwgWzE0NC42MTM0MjcsIDQzLjk2MDg4M10sIFsxNDUuMzIwODI1LCA0NC4zODQ3MzNdLCBbMTQ1LjU0MzEzNywgNDMuMjYyMDg4XSwgWzE0NC4wNTk2NjIsIDQyLjk4ODM1OF0sIFsxNDMuMTgzODUsIDQxLjk5NTIxNV0sIFsxNDEuNjExNDkxLCA0Mi42Nzg3OTFdLCBbMTQxLjA2NzI4NiwgNDEuNTg0NTk0XSwgWzEzOS45NTUxMDYsIDQxLjU2OTU1Nl0sIFsxMzkuODE3NTQ0LCA0Mi41NjM3NTldLCBbMTQwLjMxMjA4NywgNDMuMzMzMjczXSwgWzE0MS4zODA1NDksIDQzLjM4ODgyNV0sIFsxNDEuNjcxOTUyLCA0NC43NzIxMjVdLCBbMTQxLjk2NzY0NSwgNDUuNTUxNDgzXSwgWzE0My4xNDI4NywgNDQuNTEwMzU4XSwgWzE0My45MTAxNjIsIDQ0LjE3NDFdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkpQTiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiSmFwYW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzcwLjk2MjMxNSwgNDIuMjY2MTU0XSwgWzcwLjM4ODk2NSwgNDIuMDgxMzA4XSwgWzY5LjA3MDAyNywgNDEuMzg0MjQ0XSwgWzY4LjYzMjQ4MywgNDAuNjY4NjgxXSwgWzY4LjI1OTg5NiwgNDAuNjYyMzI1XSwgWzY3Ljk4NTg1NiwgNDEuMTM1OTkxXSwgWzY2LjcxNDA0NywgNDEuMTY4NDQ0XSwgWzY2LjUxMDY0OSwgNDEuOTg3NjQ0XSwgWzY2LjAyMzM5MiwgNDEuOTk0NjQ2XSwgWzY2LjA5ODAxMiwgNDIuOTk3NjZdLCBbNjQuOTAwODI0LCA0My43MjgwODFdLCBbNjMuMTg1Nzg3LCA0My42NTAwNzVdLCBbNjIuMDEzMywgNDMuNTA0NDc3XSwgWzYxLjA1ODMyLCA0NC40MDU4MTddLCBbNjAuMjM5OTcyLCA0NC43ODQwMzddLCBbNTguNjg5OTg5LCA0NS41MDAwMTRdLCBbNTguNTAzMTI3LCA0NS41ODY4MDRdLCBbNTUuOTI4OTE3LCA0NC45OTU4NThdLCBbNTUuOTY4MTkxLCA0MS4zMDg2NDJdLCBbNTUuNDU1MjUxLCA0MS4yNTk4NTldLCBbNTQuNzU1MzQ1LCA0Mi4wNDM5NzFdLCBbNTQuMDc5NDE4LCA0Mi4zMjQxMDldLCBbNTIuOTQ0MjkzLCA0Mi4xMTYwMzRdLCBbNTIuNTAyNDYsIDQxLjc4MzMxNl0sIFs1Mi40NDYzMzksIDQyLjAyNzE1MV0sIFs1Mi42OTIxMTIsIDQyLjQ0Mzg5NV0sIFs1Mi41MDE0MjYsIDQyLjc5MjI5OF0sIFs1MS4zNDI0MjcsIDQzLjEzMjk3NV0sIFs1MC44OTEyOTIsIDQ0LjAzMTAzNF0sIFs1MC4zMzkxMjksIDQ0LjI4NDAxNl0sIFs1MC4zMDU2NDMsIDQ0LjYwOTgzNl0sIFs1MS4yNzg1MDMsIDQ0LjUxNDg1NF0sIFs1MS4zMTY4OTksIDQ1LjI0NTk5OF0sIFs1Mi4xNjczOSwgNDUuNDA4MzkxXSwgWzUzLjA0MDg3NiwgNDUuMjU5MDQ3XSwgWzUzLjIyMDg2NiwgNDYuMjM0NjQ2XSwgWzUzLjA0MjczNywgNDYuODUzMDA2XSwgWzUyLjA0MjAyMywgNDYuODA0NjM3XSwgWzUxLjE5MTk0NSwgNDcuMDQ4NzA1XSwgWzUwLjAzNDA4MywgNDYuNjA4OTldLCBbNDkuMTAxMTYsIDQ2LjM5OTMzXSwgWzQ4LjU5MzI0MSwgNDYuNTYxMDM0XSwgWzQ4LjY5NDczNCwgNDcuMDc1NjI4XSwgWzQ4LjA1NzI1MywgNDcuNzQzNzUzXSwgWzQ3LjMxNTIzMSwgNDcuNzE1ODQ3XSwgWzQ2LjQ2NjQ0NiwgNDguMzk0MTUyXSwgWzQ3LjA0MzY3MiwgNDkuMTUyMDM5XSwgWzQ2Ljc1MTU5NiwgNDkuMzU2MDA2XSwgWzQ3LjU0OTQ4LCA1MC40NTQ2OThdLCBbNDguNTc3ODQxLCA0OS44NzQ3Nl0sIFs0OC43MDIzODIsIDUwLjYwNTEyOF0sIFs1MC43NjY2NDgsIDUxLjY5Mjc2Ml0sIFs1Mi4zMjg3MjQsIDUxLjcxODY1Ml0sIFs1NC41MzI4NzgsIDUxLjAyNjI0XSwgWzU1LjcxNjk0MSwgNTAuNjIxNzE3XSwgWzU2Ljc3Nzk2MSwgNTEuMDQzNTUxXSwgWzU4LjM2MzI5MSwgNTEuMDYzNjUzXSwgWzU5LjY0MjI4MiwgNTAuNTQ1NDQyXSwgWzU5LjkzMjgwNywgNTAuODQyMTk0XSwgWzYxLjMzNzQyNCwgNTAuNzk5MDddLCBbNjEuNTg4MDAzLCA1MS4yNzI2NTldLCBbNTkuOTY3NTM0LCA1MS45NjA0Ml0sIFs2MC45MjcyNjksIDUyLjQ0NzU0OF0sIFs2MC43Mzk5OTMsIDUyLjcxOTk4Nl0sIFs2MS42OTk5ODYsIDUyLjk3OTk5Nl0sIFs2MC45NzgwNjYsIDUzLjY2NDk5M10sIFs2MS40MzY1OTEsIDU0LjAwNjI2NV0sIFs2NS4xNzg1MzQsIDU0LjM1NDIyOF0sIFs2NS42NjY4NzYsIDU0LjYwMTI2N10sIFs2OC4xNjkxLCA1NC45NzAzOTJdLCBbNjkuMDY4MTY3LCA1NS4zODUyNV0sIFs3MC44NjUyNjcsIDU1LjE2OTczNF0sIFs3MS4xODAxMzEsIDU0LjEzMzI4NV0sIFs3Mi4yMjQxNSwgNTQuMzc2NjU1XSwgWzczLjUwODUxNiwgNTQuMDM1NjE3XSwgWzczLjQyNTY3OSwgNTMuNDg5ODFdLCBbNzQuMzg0ODQ1LCA1My41NDY4NjFdLCBbNzYuODkxMSwgNTQuNDkwNTI0XSwgWzc2LjUyNTE3OSwgNTQuMTc3MDAzXSwgWzc3LjgwMDkxNiwgNTMuNDA0NDE1XSwgWzgwLjAzNTU2LCA1MC44NjQ3NTFdLCBbODAuNTY4NDQ3LCA1MS4zODgzMzZdLCBbODEuOTQ1OTg2LCA1MC44MTIxOTZdLCBbODMuMzgzMDA0LCA1MS4wNjkxODNdLCBbODMuOTM1MTE1LCA1MC44ODkyNDZdLCBbODQuNDE2Mzc3LCA1MC4zMTE0XSwgWzg1LjExNTU2LCA1MC4xMTczMDNdLCBbODUuNTQxMjcsIDQ5LjY5Mjg1OV0sIFs4Ni44MjkzNTcsIDQ5LjgyNjY3NV0sIFs4Ny4zNTk5NywgNDkuMjE0OTgxXSwgWzg2LjU5ODc3NiwgNDguNTQ5MTgyXSwgWzg1Ljc2ODIzMywgNDguNDU1NzUxXSwgWzg1LjcyMDQ4NCwgNDcuNDUyOTY5XSwgWzg1LjE2NDI5LCA0Ny4wMDA5NTZdLCBbODMuMTgwNDg0LCA0Ny4zMzAwMzFdLCBbODIuNDU4OTI2LCA0NS41Mzk2NV0sIFs4MS45NDcwNzEsIDQ1LjMxNzAyN10sIFs3OS45NjYxMDYsIDQ0LjkxNzUxN10sIFs4MC44NjYyMDYsIDQzLjE4MDM2Ml0sIFs4MC4xODAxNSwgNDIuOTIwMDY4XSwgWzgwLjI1OTk5LCA0Mi4zNDk5OTldLCBbNzkuNjQzNjQ1LCA0Mi40OTY2ODNdLCBbNzkuMTQyMTc3LCA0Mi44NTYwOTJdLCBbNzcuNjU4MzkyLCA0Mi45NjA2ODZdLCBbNzYuMDAwMzU0LCA0Mi45ODgwMjJdLCBbNzUuNjM2OTY1LCA0Mi44Nzc5XSwgWzc0LjIxMjg2NiwgNDMuMjk4MzM5XSwgWzczLjY0NTMwNCwgNDMuMDkxMjcyXSwgWzczLjQ4OTc1OCwgNDIuNTAwODk0XSwgWzcxLjg0NDYzOCwgNDIuODQ1Mzk1XSwgWzcxLjE4NjI4MSwgNDIuNzA0MjkzXSwgWzcwLjk2MjMxNSwgNDIuMjY2MTU0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJLQVoiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkthemFraHN0YW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzQwLjk5MywgLTAuODU4MjldLCBbNDEuNTg1MTMsIC0xLjY4MzI1XSwgWzQwLjg4NDc3LCAtMi4wODI1NV0sIFs0MC42Mzc4NSwgLTIuNDk5NzldLCBbNDAuMjYzMDQsIC0yLjU3MzA5XSwgWzQwLjEyMTE5LCAtMy4yNzc2OF0sIFszOS44MDAwNiwgLTMuNjgxMTZdLCBbMzkuNjA0ODksIC00LjM0NjUzXSwgWzM5LjIwMjIyLCAtNC42NzY3N10sIFszNy43NjY5LCAtMy42NzcxMl0sIFszNy42OTg2OSwgLTMuMDk2OTldLCBbMzQuMDcyNjIsIC0xLjA1OTgyXSwgWzMzLjkwMzcxMSwgLTAuOTVdLCBbMzMuODkzNTY5LCAwLjEwOTgxNF0sIFszNC4xOCwgMC41MTVdLCBbMzQuNjcyMSwgMS4xNzY5NF0sIFszNS4wMzU5OSwgMS45MDU4NF0sIFszNC41OTYwNywgMy4wNTM3NF0sIFszNC40NzkxMywgMy41NTU2XSwgWzM0LjAwNSwgNC4yNDk4ODVdLCBbMzQuNjIwMTk2LCA0Ljg0NzEyM10sIFszNS4yOTgwMDcsIDUuNTA2XSwgWzM1LjgxNzQ0OCwgNS4zMzgyMzJdLCBbMzUuODE3NDQ4LCA0Ljc3Njk2Nl0sIFszNi4xNTkwNzksIDQuNDQ3ODY0XSwgWzM2Ljg1NTA5MywgNC40NDc4NjRdLCBbMzguMTIwOTE1LCAzLjU5ODYwNV0sIFszOC40MzY5NywgMy41ODg1MV0sIFszOC42NzExNCwgMy42MTYwN10sIFszOC44OTI1MSwgMy41MDA3NF0sIFszOS41NTkzODQsIDMuNDIyMDZdLCBbMzkuODU0OTQsIDMuODM4NzldLCBbNDAuNzY4NDgsIDQuMjU3MDJdLCBbNDEuMTcxOCwgMy45MTkwOV0sIFs0MS44NTUwODMsIDMuOTE4OTEyXSwgWzQwLjk4MTA1LCAyLjc4NDUyXSwgWzQwLjk5MywgLTAuODU4MjldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIktFTiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiS2VueWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzcwLjk2MjMxNSwgNDIuMjY2MTU0XSwgWzcxLjE4NjI4MSwgNDIuNzA0MjkzXSwgWzcxLjg0NDYzOCwgNDIuODQ1Mzk1XSwgWzczLjQ4OTc1OCwgNDIuNTAwODk0XSwgWzczLjY0NTMwNCwgNDMuMDkxMjcyXSwgWzc0LjIxMjg2NiwgNDMuMjk4MzM5XSwgWzc1LjYzNjk2NSwgNDIuODc3OV0sIFs3Ni4wMDAzNTQsIDQyLjk4ODAyMl0sIFs3Ny42NTgzOTIsIDQyLjk2MDY4Nl0sIFs3OS4xNDIxNzcsIDQyLjg1NjA5Ml0sIFs3OS42NDM2NDUsIDQyLjQ5NjY4M10sIFs4MC4yNTk5OSwgNDIuMzQ5OTk5XSwgWzgwLjExOTQzLCA0Mi4xMjM5NDFdLCBbNzguNTQzNjYxLCA0MS41ODIyNDNdLCBbNzguMTg3MTk3LCA0MS4xODUzMTZdLCBbNzYuOTA0NDg0LCA0MS4wNjY0ODZdLCBbNzYuNTI2MzY4LCA0MC40Mjc5NDZdLCBbNzUuNDY3ODI4LCA0MC41NjIwNzJdLCBbNzQuNzc2ODYyLCA0MC4zNjY0MjVdLCBbNzMuODIyMjQ0LCAzOS44OTM5NzNdLCBbNzMuOTYwMDEzLCAzOS42NjAwMDhdLCBbNzMuNjc1Mzc5LCAzOS40MzEyMzddLCBbNzEuNzg0Njk0LCAzOS4yNzk0NjNdLCBbNzAuNTQ5MTYyLCAzOS42MDQxOThdLCBbNjkuNDY0ODg3LCAzOS41MjY2ODNdLCBbNjkuNTU5NjEsIDQwLjEwMzIxMV0sIFs3MC42NDgwMTksIDM5LjkzNTc1NF0sIFs3MS4wMTQxOTgsIDQwLjI0NDM2Nl0sIFs3MS43NzQ4NzUsIDQwLjE0NTg0NF0sIFs3My4wNTU0MTcsIDQwLjg2NjAzM10sIFs3MS44NzAxMTUsIDQxLjM5MjldLCBbNzEuMTU3ODU5LCA0MS4xNDM1ODddLCBbNzAuNDIwMDIyLCA0MS41MTk5OThdLCBbNzEuMjU5MjQ4LCA0Mi4xNjc3MTFdLCBbNzAuOTYyMzE1LCA0Mi4yNjYxNTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIktHWiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiS3lyZ3l6c3RhbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTAzLjQ5NzI4LCAxMC42MzI1NTVdLCBbMTAzLjA5MDY5LCAxMS4xNTM2NjFdLCBbMTAyLjU4NDkzMiwgMTIuMTg2NTk1XSwgWzEwMi4zNDgwOTksIDEzLjM5NDI0N10sIFsxMDIuOTg4NDIyLCAxNC4yMjU3MjFdLCBbMTA0LjI4MTQxOCwgMTQuNDE2NzQzXSwgWzEwNS4yMTg3NzcsIDE0LjI3MzIxMl0sIFsxMDYuMDQzOTQ2LCAxMy44ODEwOTFdLCBbMTA2LjQ5NjM3MywgMTQuNTcwNTg0XSwgWzEwNy4zODI3MjcsIDE0LjIwMjQ0MV0sIFsxMDcuNjE0NTQ4LCAxMy41MzU1MzFdLCBbMTA3LjQ5MTQwMywgMTIuMzM3MjA2XSwgWzEwNS44MTA1MjQsIDExLjU2NzYxNV0sIFsxMDYuMjQ5NjcsIDEwLjk2MTgxMl0sIFsxMDUuMTk5OTE1LCAxMC44ODkzMV0sIFsxMDQuMzM0MzM1LCAxMC40ODY1NDRdLCBbMTAzLjQ5NzI4LCAxMC42MzI1NTVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIktITSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQ2FtYm9kaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzEyOC4zNDk3MTYsIDM4LjYxMjI0M10sIFsxMjkuMjEyOTIsIDM3LjQzMjM5Ml0sIFsxMjkuNDYwNDUsIDM2Ljc4NDE4OV0sIFsxMjkuNDY4MzA0LCAzNS42MzIxNDFdLCBbMTI5LjA5MTM3NywgMzUuMDgyNDg0XSwgWzEyOC4xODU4NSwgMzQuODkwMzc3XSwgWzEyNy4zODY1MTksIDM0LjQ3NTY3NF0sIFsxMjYuNDg1NzQ4LCAzNC4zOTAwNDZdLCBbMTI2LjM3MzkyLCAzNC45MzQ1Nl0sIFsxMjYuNTU5MjMxLCAzNS42ODQ1NDFdLCBbMTI2LjExNzM5OCwgMzYuNzI1NDg1XSwgWzEyNi44NjAxNDMsIDM2Ljg5MzkyNF0sIFsxMjYuMTc0NzU5LCAzNy43NDk2ODZdLCBbMTI2LjIzNzMzOSwgMzcuODQwMzc4XSwgWzEyNi42ODM3MiwgMzcuODA0NzczXSwgWzEyNy4wNzMzMDksIDM4LjI1NjExNV0sIFsxMjcuNzgwMDM1LCAzOC4zMDQ1MzZdLCBbMTI4LjIwNTc0NiwgMzguMzcwMzk3XSwgWzEyOC4zNDk3MTYsIDM4LjYxMjI0M11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiS09SIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJTb3V0aCBLb3JlYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZmZmYjIiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMjAuNzYyMTYsIDQyLjA1MTg2XSwgWzIwLjcxNzMxLCA0MS44NDcxMV0sIFsyMC41OTAyMywgNDEuODU1NDFdLCBbMjAuNTIyOTUsIDQyLjIxNzg3XSwgWzIwLjI4Mzc0LCA0Mi4zMjAyNV0sIFsyMC4wNzA3LCA0Mi41ODg2M10sIFsyMC4yNTc1OCwgNDIuODEyNzVdLCBbMjAuNDk2NzksIDQyLjg4NDY5XSwgWzIwLjYzNTA4LCA0My4yMTY3MV0sIFsyMC44MTQ0OCwgNDMuMjcyMDVdLCBbMjAuOTU2NTEsIDQzLjEzMDk0XSwgWzIxLjE0MzM5NSwgNDMuMDY4Njg1XSwgWzIxLjI3NDIxLCA0Mi45MDk1OV0sIFsyMS40Mzg2NiwgNDIuODYyNTVdLCBbMjEuNjMzMDIsIDQyLjY3NzE3XSwgWzIxLjc3NTA1LCA0Mi42ODI3XSwgWzIxLjY2MjkyLCA0Mi40MzkyMl0sIFsyMS41NDMzMiwgNDIuMzIwMjVdLCBbMjEuNTc2NjM2LCA0Mi4yNDUyMjRdLCBbMjEuMzUyNywgNDIuMjA2OF0sIFsyMC43NjIxNiwgNDIuMDUxODZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIi05OSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiS29zb3ZvIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s0Ny45NzQ1MTksIDI5Ljk3NTgxOV0sIFs0OC4xODMxODksIDI5LjUzNDQ3N10sIFs0OC4wOTM5NDMsIDI5LjMwNjI5OV0sIFs0OC40MTYwOTQsIDI4LjU1MjAwNF0sIFs0Ny43MDg4NTEsIDI4LjUyNjA2M10sIFs0Ny40NTk4MjIsIDI5LjAwMjUxOV0sIFs0Ni41Njg3MTMsIDI5LjA5OTAyNV0sIFs0Ny4zMDI2MjIsIDMwLjA1OTA3XSwgWzQ3Ljk3NDUxOSwgMjkuOTc1ODE5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJLV1QiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkt1d2FpdCIsICJzdH
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment