Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save iateadonut/21b99f4aefb32db589a704a99ac3a1dc to your computer and use it in GitHub Desktop.
Save iateadonut/21b99f4aefb32db589a704a99ac3a1dc 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: \\ \n",
"The environment is inconsistent, please check the package plan carefully\n",
"The following packages are causing the inconsistency:\n",
"\n",
" - defaults/linux-64::anaconda==5.3.1=py37_0\n",
" - defaults/linux-64::astropy==3.0.4=py37h14c3975_0\n",
" - defaults/linux-64::bkcharts==0.2=py37_0\n",
" - defaults/linux-64::blaze==0.11.3=py37_0\n",
" - defaults/linux-64::bokeh==0.13.0=py37_0\n",
" - defaults/linux-64::bottleneck==1.2.1=py37h035aef0_1\n",
" - defaults/linux-64::dask==0.19.1=py37_0\n",
" - defaults/linux-64::datashape==0.5.4=py37_1\n",
" - defaults/linux-64::mkl-service==1.1.2=py37h90e4bf4_5\n",
" - defaults/linux-64::numba==0.39.0=py37h04863e7_0\n",
" - defaults/linux-64::numexpr==2.6.8=py37hd89afb7_0\n",
" - defaults/linux-64::odo==0.5.1=py37_0\n",
" - defaults/linux-64::pytables==3.4.4=py37ha205bf6_0\n",
" - defaults/linux-64::pytest-arraydiff==0.2=py37h39e3cac_0\n",
" - defaults/linux-64::pytest-astropy==0.4.0=py37_0\n",
" - defaults/linux-64::pytest-doctestplus==0.1.3=py37_0\n",
" - defaults/linux-64::pywavelets==1.0.0=py37hdd07704_0\n",
" - defaults/linux-64::scikit-image==0.14.0=py37hf484d3e_1\n",
"done\n",
"\n",
"## Package Plan ##\n",
"\n",
" environment location: /home/jupyterlab/conda\n",
"\n",
" added / updated specs:\n",
" - folium=0.5.0\n",
"\n",
"\n",
"The following packages will be downloaded:\n",
"\n",
" package | build\n",
" ---------------------------|-----------------\n",
" certifi-2019.3.9 | py36_0 149 KB conda-forge\n",
" conda-4.6.14 | py36_0 2.1 MB conda-forge\n",
" ------------------------------------------------------------\n",
" Total: 2.2 MB\n",
"\n",
"The following packages will be UPDATED:\n",
"\n",
" ca-certificates anaconda::ca-certificates-2019.1.23-0 --> conda-forge::ca-certificates-2019.3.9-hecc5488_0\n",
"\n",
"The following packages will be SUPERSEDED by a higher-priority channel:\n",
"\n",
" certifi anaconda --> conda-forge\n",
" conda anaconda --> conda-forge\n",
" openssl anaconda::openssl-1.1.1-h7b6447c_0 --> conda-forge::openssl-1.1.1b-h14c3975_1\n",
"\n",
"\n",
"\n",
"Downloading and Extracting Packages\n",
"certifi-2019.3.9 | 149 KB | ##################################### | 100% \n",
"conda-4.6.14 | 2.1 MB | ##################################### | 100% \n",
"Preparing transaction: done\n",
"Verifying transaction: done\n",
"Executing transaction: done\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+ICNtYXBfMDJlMWMwNDYwMGIzNGQ0ODlhZmEyYzlhNThmYzMyY2EgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzAyZTFjMDQ2MDBiMzRkNDg5YWZhMmM5YTU4ZmMzMmNhIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF8wMmUxYzA0NjAwYjM0ZDQ4OWFmYTJjOWE1OGZjMzJjYSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF8wMmUxYzA0NjAwYjM0ZDQ4OWFmYTJjOWE1OGZjMzJjYScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMCwwXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvb206IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZENvcHlKdW1wOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyXzVlY2Y2MDRmYTViNDRkZWQ5YTRlMjkwZTViODM3NTU0ID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAnaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLAogICAgICAgICAgICAgICAgewogICJhdHRyaWJ1dGlvbiI6IG51bGwsCiAgImRldGVjdFJldGluYSI6IGZhbHNlLAogICJtYXhab29tIjogMTgsCiAgIm1pblpvb20iOiAxLAogICJub1dyYXAiOiBmYWxzZSwKICAic3ViZG9tYWlucyI6ICJhYmMiCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzAyZTFjMDQ2MDBiMzRkNDg5YWZhMmM5YTU4ZmMzMmNhKTsKICAgICAgICAKPC9zY3JpcHQ+\" 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 0x7fc4582b4eb8>"
]
},
"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+ICNtYXBfMzlkMGRhY2MyMGIzNDRkYmJlZWZiNzEzODkwNTJkYTMgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzM5ZDBkYWNjMjBiMzQ0ZGJiZWVmYjcxMzg5MDUyZGEzIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF8zOWQwZGFjYzIwYjM0NGRiYmVlZmI3MTM4OTA1MmRhMyA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF8zOWQwZGFjYzIwYjM0NGRiYmVlZmI3MTM4OTA1MmRhMycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTYuMTMsLTEwNi4zNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl8wYWRhNzAzNjY3MmU0YzBiYTBlZjA3MWFlZTJlNDBlZCA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zOWQwZGFjYzIwYjM0NGRiYmVlZmI3MTM4OTA1MmRhMyk7CiAgICAgICAgCjwvc2NyaXB0Pg==\" 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 0x7fc452c907f0>"
]
},
"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+ICNtYXBfMzAzYWI4MzNiZmM5NGZlNmI1MDcyOWE0N2RhMTAzY2YgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzMwM2FiODMzYmZjOTRmZTZiNTA3MjlhNDdkYTEwM2NmIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF8zMDNhYjgzM2JmYzk0ZmU2YjUwNzI5YTQ3ZGExMDNjZiA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF8zMDNhYjgzM2JmYzk0ZmU2YjUwNzI5YTQ3ZGExMDNjZicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTYuMTMsLTEwNi4zNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl9hYzk5NWU2ZjA3OTE0MDhiOTVkZDA2ZGNkZGM5NGViMCA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zMDNhYjgzM2JmYzk0ZmU2YjUwNzI5YTQ3ZGExMDNjZik7CiAgICAgICAgCjwvc2NyaXB0Pg==\" 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 0x7fc452ce3cc0>"
]
},
"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": 7,
"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+ICNtYXBfYjBmYzBjZDI5ZTAzNGEwOTk4ZGE2NTM0NjVmY2ViYjggewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2IwZmMwY2QyOWUwMzRhMDk5OGRhNjUzNDY1ZmNlYmI4IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9iMGZjMGNkMjllMDM0YTA5OThkYTY1MzQ2NWZjZWJiOCA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9iMGZjMGNkMjllMDM0YTA5OThkYTY1MzQ2NWZjZWJiOCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMjMuNjM0NSwtMTAyLjU1MjhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfZTBiMWY3MDY5MDZmNDNlMjlmMmM2Y2Y1MWIxMWUwZjYgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjBmYzBjZDI5ZTAzNGEwOTk4ZGE2NTM0NjVmY2ViYjgpOwogICAgICAgIAo8L3NjcmlwdD4=\" 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 0x7fc452ceb0b8>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"### type your answer here\n",
"\n",
"mexico = folium.Map(location=[23.6345, -102.5528], zoom_start=4)\n",
"mexico\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=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": 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+ICNtYXBfZjM1NjRkN2RmNzZmNDc2YzllNjJjODNiYjZiNzVhNzYgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2YzNTY0ZDdkZjc2ZjQ3NmM5ZTYyYzgzYmI2Yjc1YTc2IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9mMzU2NGQ3ZGY3NmY0NzZjOWU2MmM4M2JiNmI3NWE3NiA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9mMzU2NGQ3ZGY3NmY0NzZjOWU2MmM4M2JiNmI3NWE3NicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTYuMTMsLTEwNi4zNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl9kNGRmZGEwZTIyNDU0NTJhYmYzNDg2OWVkZTM3MDc4MiA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8vc3RhbWVuLXRpbGVzLXtzfS5hLnNzbC5mYXN0bHkubmV0L3RvbmVyL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjM1NjRkN2RmNzZmNDc2YzllNjJjODNiYjZiNzVhNzYpOwogICAgICAgIAo8L3NjcmlwdD4=\" 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 0x7fc452ca91d0>"
]
},
"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 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": 9,
"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+ICNtYXBfMWFhOWFjYmIwNDMwNDdkNjkzZjI4ZTA5ZjI5NmUxODcgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzFhYTlhY2JiMDQzMDQ3ZDY5M2YyOGUwOWYyOTZlMTg3IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF8xYWE5YWNiYjA0MzA0N2Q2OTNmMjhlMDlmMjk2ZTE4NyA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF8xYWE5YWNiYjA0MzA0N2Q2OTNmMjhlMDlmMjk2ZTE4NycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTYuMTMsLTEwNi4zNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl8xMTE2NzU1ZmFiMDY0MTM3OWQ3M2E4NTRmZGYzMjY4YyA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8vc3RhbWVuLXRpbGVzLXtzfS5hLnNzbC5mYXN0bHkubmV0L3RlcnJhaW4ve3p9L3t4fS97eX0uanBnJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8xYWE5YWNiYjA0MzA0N2Q2OTNmMjhlMDlmMjk2ZTE4Nyk7CiAgICAgICAgCjwvc2NyaXB0Pg==\" 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 0x7fc452cb4128>"
]
},
"execution_count": 9,
"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": 12,
"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+ICNtYXBfNmE4M2ZhNTNhNjcxNGExM2E3MjMxOTZkZGM3M2E5NzEgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzZhODNmYTUzYTY3MTRhMTNhNzIzMTk2ZGRjNzNhOTcxIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF82YTgzZmE1M2E2NzE0YTEzYTcyMzE5NmRkYzczYTk3MSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF82YTgzZmE1M2E2NzE0YTEzYTcyMzE5NmRkYzczYTk3MScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMCwwXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvb206IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZENvcHlKdW1wOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyX2NlOTEyMWJjYWI5YzQ0OWFiNWI1MGYyMDlhMDllYTViID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAnaHR0cHM6Ly97c30udGlsZXMubWFwYm94LmNvbS92My9tYXBib3gud29ybGQtYnJpZ2h0L3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNmE4M2ZhNTNhNjcxNGExM2E3MjMxOTZkZGM3M2E5NzEpOwogICAgICAgIAo8L3NjcmlwdD4=\" 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 0x7fc452c943c8>"
]
},
"execution_count": 12,
"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": 13,
"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+ICNtYXBfYmU0NTQyMzljNWM5NGFmYzhkYzNiYTZkMDEwZTJiNmIgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2JlNDU0MjM5YzVjOTRhZmM4ZGMzYmE2ZDAxMGUyYjZiIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9iZTQ1NDIzOWM1Yzk0YWZjOGRjM2JhNmQwMTBlMmI2YiA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9iZTQ1NDIzOWM1Yzk0YWZjOGRjM2JhNmQwMTBlMmI2YicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMjMuNjM0NSwtMTAyLjU1MjhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfOWYwN2U1NDBiNTk4NDJjN2JmOWM4MjkzZDE4NDUwOWIgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3N0YW1lbi10aWxlcy17c30uYS5zc2wuZmFzdGx5Lm5ldC90ZXJyYWluL3t6fS97eH0ve3l9LmpwZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmU0NTQyMzljNWM5NGFmYzhkYzNiYTZkMDEwZTJiNmIpOwogICAgICAgIAo8L3NjcmlwdD4=\" 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 0x7fc452c43a90>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"### type your answer here\n",
"\n",
"mexico = folium.Map(location=[23.6345, -102.5528], zoom_start=4, tiles='Stamen Terrain')\n",
"mexico\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": 14,
"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://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DV0101EN/labs/Data_Files/Police_Department_Incidents_-_Previous_Year__2016_.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": 15,
"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": 15,
"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": 16,
"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": 16,
"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": 17,
"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": 18,
"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": 18,
"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": 19,
"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": 20,
"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+ICNtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzcuNzcsLTEyMi40Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfNjJkYzZkMTUwNGJmNDI1OGEwODFiMDlhNjU5YjI0ODggPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgIAo8L3NjcmlwdD4=\" 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 0x7fc4500940b8>"
]
},
"execution_count": 20,
"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": 21,
"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+ICNtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzcuNzcsLTEyMi40Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfNjJkYzZkMTUwNGJmNDI1OGEwODFiMDlhNjU5YjI0ODggPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzU2MTE5YTI3NjZkNGU3ODg1MjIwZTRmMGNiNDQ0Y2IgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU0MjA3MDY3MTEsLTEyMi40MDM0MDQ3OTE0Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzExZDgyYWQ0N2NjOTQ5MWI5OGMzY2Q5OTliZTg3OTRlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82ZTMwMDIxY2IzNzk0ZTlhOTRiN2Q1NDRkMzZjM2Y3NSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTk4MDk2NzI5OTU5NiwtMTIyLjM4ODg1NjIwNDI5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU3MzNhNDkxNjgxYjRkMjVhMjIyMjI3NzM0MDFmYTM3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1Nzg4Mzc2Njg4NzksLTEyMi40MTI5NzA1Mzc1OTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80NzVhMWMyYmNmYzk0YTNhYjYwMDhlNTk0YTcyYTBhZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTA1MDEyMTQ2NjgsLTEyMi40MTk2NzE3ODAyOTZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xMjJjYTEwNTQwZTM0ZDRjOWM2NmI3ZmU4ZjYxNDk5ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTA5YTYwYjc2YWU5NDUzOWIxM2U3MmRjMTljZWQ0MjkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA4Nzg5MzYwMjE0LC0xMjIuNDA1NzIxNDU0NTY3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODkyZjIwZmZiYjFmNDFjZGE1MTc0NzcwMjE0MzlhNjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM5ODA1NTkyNjM0LC0xMjIuNDExNzc4Mjk1OTkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODhhZDQxODY1NDM3NGM2NGEyMDRhZmRmZTljODhlMGQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zOTEyNDQ3NGUyYmY0YzI3ODY2OTYxMDFmZmFkOWI4YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80ODg4YWQ3YjRlYjM0NzZjYTRmZWNlZWM2MGZlYTA4NSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQ3ODE1Nzg2OTUwNSwtMTIyLjQ3NzM3NjUyNDAwMjk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDBmZWVmODkzNDU4NGNiYmJmNTVkYmIxMzQ5OTZhZmMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDU3Mzg5NDI5NjU0OTUsLTEyMi40Nzc5NjAzMjcyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81ZTFiZGYxMjgxNGM0OTE5YTQ1MDBjMTM5ZWFjOTZhYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfY2IzMmY0NjliYzRmNDljYmIxZGNkMWJlNjQ4Njc4MmQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyNzA1MTk5NTkyLC0xMjIuNDMyMzI1ODcxMDI4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzBjZmFlNzQ1ZDk2NDc4Yjk1MmZkZDIzYTZiZjgxYjAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTE2NDI5ODIzODQsLTEyMi40MDA5MDg2OTg4ODk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdiMDU2OWFhMTMyNTRhYmI4MjU4M2FlYmUzZGQ1YTBlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNzA2OTMwMTU0NSwtMTIyLjQwODU5NTExMDg2OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg4Y2UzNzBhNmU4YzQ4YWNhZWU4YjE2NTZiYTU5ZWMwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU3Mjg5NTkwNDU3Nzk1LC0xMjIuNDA2ODcwNDAyMDgyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODA0NDBjYTY0ZWIyNDMxMTg4NGEyYzZkMTNlNGU2N2QgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDg5MDYzMDUxODI5LC0xMjIuNDIwMzU0NzgwODYwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wODdjOWE1ZjNjNGY0MmIxOTllZDkxMjdjMmNjMTllOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxNTc2NTQyNjk5NSwtMTIyLjQzOTkwOTc2Njc3Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2I1MzBlYTA3NDg4MjQwZmU4ZGNjZjdlNWVkNTZjOWVjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNTY5OTM4NjkxOCwtMTIyLjQwODQyMTExNjkyMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQ4YTIyZWVjZmE2OTQ4M2ZhOTY5MDRiY2YyMzg0NDM5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczNjE4NjI3NjQ1NjA0LC0xMjIuNDIyMzE1NjcwNzQ5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTllZDIxZWE3NjExNGVkMzhlNDhmMThlZmVmYzU4NjEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTI4NDEyODQwNDQ3MDUsLTEyMi40MjQ1MTk4MzUwMDkwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U3ZDc4NmYxMWVkNzQ1NzY5MDQwMTE2YmYzM2ViZDdkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU0MDk4Njg4MjA2Nzk1LC0xMjIuNDE0MjMzODQ5MDM3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iMzgwZjQyYjZlNzY0Y2I2YWJjNmE5MzVkYWE0MzFmNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfM2EwYTIwYjBiYWZmNDIzNzk2NDQwOGVlNDNlMjc5NGQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzE0OTM5OTY5NDE2LC0xMjIuNTA3NzUwMTMxMDA0MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83YTc3MmYxOTc4MTQ0NWUzODhmYTZhNWY4YjIyNmNhNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxODMwMjIwNDc2NjAwNSwtMTIyLjQ3NDQ0NDYzOTU5NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODFmYjFiNGNiNjFkNDE4YmJlOGRkYTZjZWMyOGJiZDggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjIyNDIwMzYzNzg2NDA0OGIxMjRhNGYzOTk5ZDllOGUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODA3OTI2ZWU5M2Q0NGRkOWE0N2Y2MjQwYTA4NGRiYmEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkzNjg4Mjg0NTMyLC0xMjIuNDEyNjkwMTQyMzA4MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wMDQ5MzVhZmM3NjA0ZDUyYmMyZWY0YzE4NjlhNmY4OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82OWYwM2JkYWQyOGE0MDA4YjZhNzgxMzgwNjgzNjBhNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzkyMDkzNzU1MzI5NSwtMTIyLjQxMDg4MjgyNTU1MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2I3ZWUyZGQ0MDg0ZDQzZGU5NTBhOWQwYTA5MzJjZWEyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuODAwNDU2NjQ3MTAzODksLTEyMi40MDE0MzI3NTQ3MjIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2QyMjg4ZTk1ZTI0NjRhODlhZGQ0MTVhZmYyMWIxNzY2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQzNTU1MDU0MjI2NSwtMTIyLjQyMTEyODAyOTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzExZmJjNThlY2YzZTQzZWNiYjU0ODg3NGUwODFmZTM2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg2NTY0NzYwNzY4NSwtMTIyLjQwNzI0NDA4NzAzMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJjYWEyMDkwY2JkNzRmNGU4NmUwYzU4YTI2MTEyY2QwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjA0N2Q2OTY0NzBkNGUwZjk0MDgwMTFjMDNhMzc3N2UgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lOGY1ZTA1MzJkNmU0NTE1ODlhZDA2YzRlMjVhZWVjYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzc2NWYwNzY5ZTk1ZjQxOTI5MjU3MDg1MDQ0ZTNmMDdjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIyMDc3YzdlOTdlNDQwMTQ4MjZmODljOWFkNWNmYWJlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NTI4MDYyNzQ2NSwtMTIyLjQ3NTY0NzQ2MDc4NTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDk0MzNlYzNmMzk2NDJmODhjNzRjZmM2MmY2NzNlMWUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDI4NTE3Mzc0NDQ4OTQsLTEyMi40MjA5Njc0NDA1NjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mYmI0Yjg4ZmVhYzI0YWYxOWI2MWE3MWVjZmNkYmY3NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kYWM0MmJhMmYyN2E0MmYzOWYxOTQ3YmNhMzY0Y2RlMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3OTE2NzQyMTg5NjMsLTEyMi40MDYzNDY0MjU2MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yMTYxMWZhYzk4ZWM0NmZlYmMxODFiNzczYjgyMmVjYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTcxODQzOTUyODIsLTEyMi40MDk1Mjk5MTMyNzhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jYjdiNWVmMDI2MTE0ZTExOWJhYjMzYmRhYWQ2M2RhMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWYxYjMyYWM5YjhiNGY3YWFjMThmNDJhNGQwM2JkNTYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jODk1YzUwYjMwYmU0YmNiYWViMDU3YWY2ZmVlYTE0NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NzUyNDMwODc4MywtMTIyLjQxMDczODA5NzMxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzYyYTgyNThlZDkwMjQzNmU5MzA5M2NlYjNiZDk1YWY3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQ1YTg3NjUzOWI2YjRhZjRiZmNhNzNjNjQ0NTFmNWUyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg0NDcxMmNlZDg2NTQzMTZhOTM5M2M5YWVkZWY3ZTE4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdkOTUwODczMTExMTQ2NzVhOWIzOTAzMDZiZDAxOWQxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzcxY2Q1YzU1Mzc0ZjRlODBhYTIzNjM2MDE2MTQ4YjlhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODE3ZjIwNWE2NzlhNDhmMTljMThlNzc5MjAwM2RkZGEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzYyMzEwNDA0NzU4LC0xMjIuNDE0NzE0Mjk1NTc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82OWE5YzA0OTM4MjY0Y2E4OTg0NmE1N2YzODZkMDUxNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzUxMTg4OTU2OTUsLTEyMi40MTgwNDU0NTI3NjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83NzU3MWY0NWUwNjE0MWU3OWRiOTMxOTBjZGEzNTUzOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjAyMzg0Nzg5NzUsLTEyMi40MDExNjE1NTU2MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jOTJkNWQwZjEwYzM0MmI2YTU2ZWVkZDA0ZTEyMTZhMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyNzAwNTMxOTYyOTk5NSwtMTIyLjQwMzQwODY2OTE5MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzc2ZTM2YjU2YTA1YTQ2YjFhN2QzYzcwNDVjOTNkZGI5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y1MmU2ODc0ZDBmNTRiNDdhZmRiYzRmNTEzNzVlZWRhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzUzMDE4NjUzNzQ0NjA0LC0xMjIuNDE4NTg3MTcyMjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmZiNmQ2YmYwMmYxNDlhOWEwZTZlMDQzMWMzNTA0ZTEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjMyM2FkNGNiYTY1NDViMTg0OWRhZDc4YjFjNjdmZDQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTA1Mzg5OTM3MjUsLTEyMi40MDM5MTU2ODE1NzEwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg1ODNlZWJkMDg5YTQ2YmRhZGUxMjVkMzEyZGE0ODI1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzMDk5ODI0NDU5MjEsLTEyMi40MTkxODMwOTYzNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84MjNjNzcyZDA3ZmM0MzZiYmJjNjQ2ODU4OGZiMTQ4YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0MDczNjA1NDgzNTc5LC0xMjIuMzg4NzUzMDQ2OTk3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjU5NWM0ZDMyYzEwNDlhMmFjOWU2M2I1MTdhZTI3ZGIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ5OTEyOTQ0MzY2LC0xMjIuNDM3Nzk5NzAzNDY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjU4YjVmOTI1NjE4NDgyNWJiNTY0M2FjNTkwYTAzODYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzk0NjFiOTNlYWE0NDdkYjlmMzNiNTg0NzU3NWZjZGQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfY2VlN2U0ZTZkMDkzNGZkZjhkNmI0M2NiMjMwNzFmODIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmViZmVlMTE5ODFhNDY4YTg5ZWQ1NzM3YjY3ZWEwYmMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzAwMzc5OTk1MTI3OTUsLTEyMi40MDQ1OTQxNDA2MzRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wN2E2MjQxMmEwZjA0YTg1OTdhNjhiOTVkMDEzZjcwYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5NTMzMzgyNjc0MzYsLTEyMi4zOTczNzM3NDAwNjZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iZDk3YzA5YTkwM2I0NzRiYmVlZGZhY2U5ZjhiZjgxNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzUxNTg3NDE2MjI5NSwtMTIyLjQwNzQzNDk4OTUyM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2VlZmIzNTY0MWE3ODQ1MjZhMGE5ODFjYzk2MjM2MDcwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk3NTlkYzA1ZDNhMzQwY2JiMDU5MjYwYTFlZTZjODU1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U5NzI0ZTJmNmVmNzQ5MGFhMDdhYTNlMTZiNTc5ZjE5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lNDhmN2U2YmMzZjI0OGRhOTFiMzRhNzdiOTI0YjI5ZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfN2E0MmI0NmNiZTE2NDVjMjllYjEzZDQxOTFiNjcxYTYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA1Mjc1Nzg1MDksLTEyMi4zOTY4NDkwMTUxNzIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2NmYWE3ZWE3OTdjODRlOGU4NDhjOWM1NTg0OTc1ZjhlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzUzZGU2MWMzOWJmNDcyMGFhNjU0YzcyMGNlZDJjZTEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGExOWFlYTNmMDcyNGE3Zjg0ZDlhZGQ0ZDdkZWMzNGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yZjQ3OWRmMjk0ODI0YzI5Yjk2OWI4NzE2YzU5MGUxNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMzk3NDgyNDE2MDksLTEyMi4zOTQ5Mjg0NzU4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjljZTc5OTVjZDU0NGYwYzhmNWZhMjc5YWU3MzJmOGUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzE3M2IzMzBhYjNiOTQ3ZDJiZTk0ZDJkYjUzODM0ZTBmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wYmE2Njg3OWFlZDI0NjY1OTI0OWYyOWQwMjBhNjEwZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODMyMzU0NDk5MDQsLTEyMi40MTE4NTcwMzI1NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIxZTYzY2IzYWU5ZjRmYTBhNmJhZjBmNGYwNjUxNjZiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU1OTk3NzMzOTg1NiwtMTIyLjQwOTQzNTYxNzEwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzYzNWMwYzI3YzZiYjRkOGQ5MzhkNWFlYzdmZTNkODQwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3MDc5ODE0NDQ0MywtMTIyLjQyNTg4MzM1ODE0OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RhYWFhMzVmZDhmNjQ3Y2ZhZDkwNjEzZDhiNzlmYmQ4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM2MDM3NDQ2Njg2MjA0LC0xMjIuNDE1MTI2NTQzMDAxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hZmU2NTg4YjRlNmE0NDQ1YWE1YWUxNGE4ZjYzMTllZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMjc2Nzg4NDgyMSwtMTIyLjQzMTkyODAxMTA4OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ZiMWIwYmZiOWRjNzQxNDQ5MTc3MDg3MjlhMmUxZWVjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg5NTcxMDI1NTg2MywtMTIyLjQwMjE2MzcxMzYxOF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2IwYjIwMGQ0YzM1YTRlMDliYjYyZDFmNDI5NTZjNGMxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzllZWEwYmY4YTJkNjRlMDFiMGIwOWZkNjlmNDAxNzFlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM2NTU2NTM0Nzk0LC0xMjIuNDEzNzkwOTcyNzgwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82NDkzNGU2M2Y0MzY0MzYyODQ1ZjRkZmQzMzdiNmJjNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yODBmMzczMjJmYTE0YmRiODQzZTJmMTQ3Y2RjNDU0ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNzM2MjM2MDUyMTI5NiwtMTIyLjQyMjA2NzE4NDkzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2I0YzIwYzAyZTQ5YTQzYzk5Yzk3YzU3ZjQyZTQ4NjlmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjhiYjM2MGFjMTdiNDBjYzhiMDRiMTNmOTlhZDY4MmYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODU5OTg4MzIzNzk3OTYsLTEyMi40MTE3NDczNzE5MjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81NGQ2YmQ5MzI0ZjM0ZDNkYjY5NGEzNWNjODY0ZTY3ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2E1ZTVlOWY4MWYyNDQ0MDZiNjk0ZjdjODA2MzU3ZTc1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1MDIyNjYyMjc4NiwtMTIyLjQxMTk4NzY0MzU5NTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDY5OThhY2I4NzM2NGRhY2FiMzgyZTllMTY5NWFkZDUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ2MjA2NDkxMDY0OTUsLTEyMi41MDAzODA0Mjc5MTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kM2Y3ODhhNjUyMGE0ZGVlOTc0MmZjMzAxYmUzYmE0MyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTE5MTgyNjcyMTcsLTEyMi40NjY1NTg3ODA2ODNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hYmMzMzMxMzViODM0ZjA2YjA3NDIzYTZjZDM1NjY1OCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTA4NDE3MjkwMjgsLTEyMi40ODY5MjU5NjAxMTQwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk0ZDU0N2ZkZmQ1NjQ1ZWViNWMyYjNkMjZmMDFmNDNiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY4NTM2MDEyMzU4MywtMTIyLjQxNTYxNjMzODMxOTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNmQ0YmIxNGY0MjQzNGNmMDljZjk1YTg2NDExZGM5OTUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNWUzNjdjOTQ0OTliNDc5Yjg3YmVmOGE3MDVhNDE2OWUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmRiOWMxYWYzMDA0NDJiZmE2MWZmODE2YzI5Y2E2YzEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzUyNjgxNDY5MDgzOTYsLTEyMi40NzI3MTU3NTk2MzFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKPC9zY3JpcHQ+\" 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 0x7fc4500940b8>"
]
},
"execution_count": 21,
"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": 22,
"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+ICNtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzcuNzcsLTEyMi40Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfNjJkYzZkMTUwNGJmNDI1OGEwODFiMDlhNjU5YjI0ODggPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzU2MTE5YTI3NjZkNGU3ODg1MjIwZTRmMGNiNDQ0Y2IgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU0MjA3MDY3MTEsLTEyMi40MDM0MDQ3OTE0Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzExZDgyYWQ0N2NjOTQ5MWI5OGMzY2Q5OTliZTg3OTRlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82ZTMwMDIxY2IzNzk0ZTlhOTRiN2Q1NDRkMzZjM2Y3NSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTk4MDk2NzI5OTU5NiwtMTIyLjM4ODg1NjIwNDI5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU3MzNhNDkxNjgxYjRkMjVhMjIyMjI3NzM0MDFmYTM3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1Nzg4Mzc2Njg4NzksLTEyMi40MTI5NzA1Mzc1OTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80NzVhMWMyYmNmYzk0YTNhYjYwMDhlNTk0YTcyYTBhZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTA1MDEyMTQ2NjgsLTEyMi40MTk2NzE3ODAyOTZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xMjJjYTEwNTQwZTM0ZDRjOWM2NmI3ZmU4ZjYxNDk5ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTA5YTYwYjc2YWU5NDUzOWIxM2U3MmRjMTljZWQ0MjkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA4Nzg5MzYwMjE0LC0xMjIuNDA1NzIxNDU0NTY3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODkyZjIwZmZiYjFmNDFjZGE1MTc0NzcwMjE0MzlhNjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM5ODA1NTkyNjM0LC0xMjIuNDExNzc4Mjk1OTkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODhhZDQxODY1NDM3NGM2NGEyMDRhZmRmZTljODhlMGQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zOTEyNDQ3NGUyYmY0YzI3ODY2OTYxMDFmZmFkOWI4YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80ODg4YWQ3YjRlYjM0NzZjYTRmZWNlZWM2MGZlYTA4NSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQ3ODE1Nzg2OTUwNSwtMTIyLjQ3NzM3NjUyNDAwMjk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDBmZWVmODkzNDU4NGNiYmJmNTVkYmIxMzQ5OTZhZmMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDU3Mzg5NDI5NjU0OTUsLTEyMi40Nzc5NjAzMjcyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81ZTFiZGYxMjgxNGM0OTE5YTQ1MDBjMTM5ZWFjOTZhYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfY2IzMmY0NjliYzRmNDljYmIxZGNkMWJlNjQ4Njc4MmQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyNzA1MTk5NTkyLC0xMjIuNDMyMzI1ODcxMDI4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzBjZmFlNzQ1ZDk2NDc4Yjk1MmZkZDIzYTZiZjgxYjAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTE2NDI5ODIzODQsLTEyMi40MDA5MDg2OTg4ODk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdiMDU2OWFhMTMyNTRhYmI4MjU4M2FlYmUzZGQ1YTBlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNzA2OTMwMTU0NSwtMTIyLjQwODU5NTExMDg2OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg4Y2UzNzBhNmU4YzQ4YWNhZWU4YjE2NTZiYTU5ZWMwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU3Mjg5NTkwNDU3Nzk1LC0xMjIuNDA2ODcwNDAyMDgyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODA0NDBjYTY0ZWIyNDMxMTg4NGEyYzZkMTNlNGU2N2QgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDg5MDYzMDUxODI5LC0xMjIuNDIwMzU0NzgwODYwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wODdjOWE1ZjNjNGY0MmIxOTllZDkxMjdjMmNjMTllOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxNTc2NTQyNjk5NSwtMTIyLjQzOTkwOTc2Njc3Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2I1MzBlYTA3NDg4MjQwZmU4ZGNjZjdlNWVkNTZjOWVjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNTY5OTM4NjkxOCwtMTIyLjQwODQyMTExNjkyMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQ4YTIyZWVjZmE2OTQ4M2ZhOTY5MDRiY2YyMzg0NDM5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczNjE4NjI3NjQ1NjA0LC0xMjIuNDIyMzE1NjcwNzQ5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTllZDIxZWE3NjExNGVkMzhlNDhmMThlZmVmYzU4NjEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTI4NDEyODQwNDQ3MDUsLTEyMi40MjQ1MTk4MzUwMDkwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U3ZDc4NmYxMWVkNzQ1NzY5MDQwMTE2YmYzM2ViZDdkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU0MDk4Njg4MjA2Nzk1LC0xMjIuNDE0MjMzODQ5MDM3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iMzgwZjQyYjZlNzY0Y2I2YWJjNmE5MzVkYWE0MzFmNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfM2EwYTIwYjBiYWZmNDIzNzk2NDQwOGVlNDNlMjc5NGQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzE0OTM5OTY5NDE2LC0xMjIuNTA3NzUwMTMxMDA0MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83YTc3MmYxOTc4MTQ0NWUzODhmYTZhNWY4YjIyNmNhNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxODMwMjIwNDc2NjAwNSwtMTIyLjQ3NDQ0NDYzOTU5NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODFmYjFiNGNiNjFkNDE4YmJlOGRkYTZjZWMyOGJiZDggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjIyNDIwMzYzNzg2NDA0OGIxMjRhNGYzOTk5ZDllOGUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODA3OTI2ZWU5M2Q0NGRkOWE0N2Y2MjQwYTA4NGRiYmEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkzNjg4Mjg0NTMyLC0xMjIuNDEyNjkwMTQyMzA4MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wMDQ5MzVhZmM3NjA0ZDUyYmMyZWY0YzE4NjlhNmY4OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82OWYwM2JkYWQyOGE0MDA4YjZhNzgxMzgwNjgzNjBhNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzkyMDkzNzU1MzI5NSwtMTIyLjQxMDg4MjgyNTU1MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2I3ZWUyZGQ0MDg0ZDQzZGU5NTBhOWQwYTA5MzJjZWEyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuODAwNDU2NjQ3MTAzODksLTEyMi40MDE0MzI3NTQ3MjIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2QyMjg4ZTk1ZTI0NjRhODlhZGQ0MTVhZmYyMWIxNzY2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQzNTU1MDU0MjI2NSwtMTIyLjQyMTEyODAyOTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzExZmJjNThlY2YzZTQzZWNiYjU0ODg3NGUwODFmZTM2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg2NTY0NzYwNzY4NSwtMTIyLjQwNzI0NDA4NzAzMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJjYWEyMDkwY2JkNzRmNGU4NmUwYzU4YTI2MTEyY2QwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjA0N2Q2OTY0NzBkNGUwZjk0MDgwMTFjMDNhMzc3N2UgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lOGY1ZTA1MzJkNmU0NTE1ODlhZDA2YzRlMjVhZWVjYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzc2NWYwNzY5ZTk1ZjQxOTI5MjU3MDg1MDQ0ZTNmMDdjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIyMDc3YzdlOTdlNDQwMTQ4MjZmODljOWFkNWNmYWJlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NTI4MDYyNzQ2NSwtMTIyLjQ3NTY0NzQ2MDc4NTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDk0MzNlYzNmMzk2NDJmODhjNzRjZmM2MmY2NzNlMWUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDI4NTE3Mzc0NDQ4OTQsLTEyMi40MjA5Njc0NDA1NjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mYmI0Yjg4ZmVhYzI0YWYxOWI2MWE3MWVjZmNkYmY3NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kYWM0MmJhMmYyN2E0MmYzOWYxOTQ3YmNhMzY0Y2RlMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3OTE2NzQyMTg5NjMsLTEyMi40MDYzNDY0MjU2MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yMTYxMWZhYzk4ZWM0NmZlYmMxODFiNzczYjgyMmVjYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTcxODQzOTUyODIsLTEyMi40MDk1Mjk5MTMyNzhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jYjdiNWVmMDI2MTE0ZTExOWJhYjMzYmRhYWQ2M2RhMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWYxYjMyYWM5YjhiNGY3YWFjMThmNDJhNGQwM2JkNTYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jODk1YzUwYjMwYmU0YmNiYWViMDU3YWY2ZmVlYTE0NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NzUyNDMwODc4MywtMTIyLjQxMDczODA5NzMxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzYyYTgyNThlZDkwMjQzNmU5MzA5M2NlYjNiZDk1YWY3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQ1YTg3NjUzOWI2YjRhZjRiZmNhNzNjNjQ0NTFmNWUyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg0NDcxMmNlZDg2NTQzMTZhOTM5M2M5YWVkZWY3ZTE4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdkOTUwODczMTExMTQ2NzVhOWIzOTAzMDZiZDAxOWQxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzcxY2Q1YzU1Mzc0ZjRlODBhYTIzNjM2MDE2MTQ4YjlhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODE3ZjIwNWE2NzlhNDhmMTljMThlNzc5MjAwM2RkZGEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzYyMzEwNDA0NzU4LC0xMjIuNDE0NzE0Mjk1NTc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82OWE5YzA0OTM4MjY0Y2E4OTg0NmE1N2YzODZkMDUxNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzUxMTg4OTU2OTUsLTEyMi40MTgwNDU0NTI3NjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83NzU3MWY0NWUwNjE0MWU3OWRiOTMxOTBjZGEzNTUzOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjAyMzg0Nzg5NzUsLTEyMi40MDExNjE1NTU2MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jOTJkNWQwZjEwYzM0MmI2YTU2ZWVkZDA0ZTEyMTZhMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyNzAwNTMxOTYyOTk5NSwtMTIyLjQwMzQwODY2OTE5MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzc2ZTM2YjU2YTA1YTQ2YjFhN2QzYzcwNDVjOTNkZGI5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y1MmU2ODc0ZDBmNTRiNDdhZmRiYzRmNTEzNzVlZWRhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzUzMDE4NjUzNzQ0NjA0LC0xMjIuNDE4NTg3MTcyMjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmZiNmQ2YmYwMmYxNDlhOWEwZTZlMDQzMWMzNTA0ZTEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjMyM2FkNGNiYTY1NDViMTg0OWRhZDc4YjFjNjdmZDQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTA1Mzg5OTM3MjUsLTEyMi40MDM5MTU2ODE1NzEwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg1ODNlZWJkMDg5YTQ2YmRhZGUxMjVkMzEyZGE0ODI1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzMDk5ODI0NDU5MjEsLTEyMi40MTkxODMwOTYzNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84MjNjNzcyZDA3ZmM0MzZiYmJjNjQ2ODU4OGZiMTQ4YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0MDczNjA1NDgzNTc5LC0xMjIuMzg4NzUzMDQ2OTk3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjU5NWM0ZDMyYzEwNDlhMmFjOWU2M2I1MTdhZTI3ZGIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ5OTEyOTQ0MzY2LC0xMjIuNDM3Nzk5NzAzNDY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjU4YjVmOTI1NjE4NDgyNWJiNTY0M2FjNTkwYTAzODYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzk0NjFiOTNlYWE0NDdkYjlmMzNiNTg0NzU3NWZjZGQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfY2VlN2U0ZTZkMDkzNGZkZjhkNmI0M2NiMjMwNzFmODIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmViZmVlMTE5ODFhNDY4YTg5ZWQ1NzM3YjY3ZWEwYmMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzAwMzc5OTk1MTI3OTUsLTEyMi40MDQ1OTQxNDA2MzRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wN2E2MjQxMmEwZjA0YTg1OTdhNjhiOTVkMDEzZjcwYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5NTMzMzgyNjc0MzYsLTEyMi4zOTczNzM3NDAwNjZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iZDk3YzA5YTkwM2I0NzRiYmVlZGZhY2U5ZjhiZjgxNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzUxNTg3NDE2MjI5NSwtMTIyLjQwNzQzNDk4OTUyM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2VlZmIzNTY0MWE3ODQ1MjZhMGE5ODFjYzk2MjM2MDcwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk3NTlkYzA1ZDNhMzQwY2JiMDU5MjYwYTFlZTZjODU1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U5NzI0ZTJmNmVmNzQ5MGFhMDdhYTNlMTZiNTc5ZjE5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lNDhmN2U2YmMzZjI0OGRhOTFiMzRhNzdiOTI0YjI5ZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfN2E0MmI0NmNiZTE2NDVjMjllYjEzZDQxOTFiNjcxYTYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA1Mjc1Nzg1MDksLTEyMi4zOTY4NDkwMTUxNzIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2NmYWE3ZWE3OTdjODRlOGU4NDhjOWM1NTg0OTc1ZjhlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzUzZGU2MWMzOWJmNDcyMGFhNjU0YzcyMGNlZDJjZTEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGExOWFlYTNmMDcyNGE3Zjg0ZDlhZGQ0ZDdkZWMzNGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yZjQ3OWRmMjk0ODI0YzI5Yjk2OWI4NzE2YzU5MGUxNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMzk3NDgyNDE2MDksLTEyMi4zOTQ5Mjg0NzU4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjljZTc5OTVjZDU0NGYwYzhmNWZhMjc5YWU3MzJmOGUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzE3M2IzMzBhYjNiOTQ3ZDJiZTk0ZDJkYjUzODM0ZTBmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wYmE2Njg3OWFlZDI0NjY1OTI0OWYyOWQwMjBhNjEwZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODMyMzU0NDk5MDQsLTEyMi40MTE4NTcwMzI1NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIxZTYzY2IzYWU5ZjRmYTBhNmJhZjBmNGYwNjUxNjZiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU1OTk3NzMzOTg1NiwtMTIyLjQwOTQzNTYxNzEwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzYzNWMwYzI3YzZiYjRkOGQ5MzhkNWFlYzdmZTNkODQwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3MDc5ODE0NDQ0MywtMTIyLjQyNTg4MzM1ODE0OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RhYWFhMzVmZDhmNjQ3Y2ZhZDkwNjEzZDhiNzlmYmQ4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM2MDM3NDQ2Njg2MjA0LC0xMjIuNDE1MTI2NTQzMDAxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hZmU2NTg4YjRlNmE0NDQ1YWE1YWUxNGE4ZjYzMTllZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMjc2Nzg4NDgyMSwtMTIyLjQzMTkyODAxMTA4OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ZiMWIwYmZiOWRjNzQxNDQ5MTc3MDg3MjlhMmUxZWVjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg5NTcxMDI1NTg2MywtMTIyLjQwMjE2MzcxMzYxOF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2IwYjIwMGQ0YzM1YTRlMDliYjYyZDFmNDI5NTZjNGMxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzllZWEwYmY4YTJkNjRlMDFiMGIwOWZkNjlmNDAxNzFlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM2NTU2NTM0Nzk0LC0xMjIuNDEzNzkwOTcyNzgwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82NDkzNGU2M2Y0MzY0MzYyODQ1ZjRkZmQzMzdiNmJjNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yODBmMzczMjJmYTE0YmRiODQzZTJmMTQ3Y2RjNDU0ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNzM2MjM2MDUyMTI5NiwtMTIyLjQyMjA2NzE4NDkzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2I0YzIwYzAyZTQ5YTQzYzk5Yzk3YzU3ZjQyZTQ4NjlmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjhiYjM2MGFjMTdiNDBjYzhiMDRiMTNmOTlhZDY4MmYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODU5OTg4MzIzNzk3OTYsLTEyMi40MTE3NDczNzE5MjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81NGQ2YmQ5MzI0ZjM0ZDNkYjY5NGEzNWNjODY0ZTY3ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2E1ZTVlOWY4MWYyNDQ0MDZiNjk0ZjdjODA2MzU3ZTc1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1MDIyNjYyMjc4NiwtMTIyLjQxMTk4NzY0MzU5NTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDY5OThhY2I4NzM2NGRhY2FiMzgyZTllMTY5NWFkZDUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ2MjA2NDkxMDY0OTUsLTEyMi41MDAzODA0Mjc5MTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kM2Y3ODhhNjUyMGE0ZGVlOTc0MmZjMzAxYmUzYmE0MyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTE5MTgyNjcyMTcsLTEyMi40NjY1NTg3ODA2ODNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hYmMzMzMxMzViODM0ZjA2YjA3NDIzYTZjZDM1NjY1OCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTA4NDE3MjkwMjgsLTEyMi40ODY5MjU5NjAxMTQwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8xZWMyZDM0ODE5MDg0NDU0ODkxYTRkN2E4N2QwMzUzZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk0ZDU0N2ZkZmQ1NjQ1ZWViNWMyYjNkMjZmMDFmNDNiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY4NTM2MDEyMzU4MywtMTIyLjQxNTYxNjMzODMxOTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNmQ0YmIxNGY0MjQzNGNmMDljZjk1YTg2NDExZGM5OTUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNWUzNjdjOTQ0OTliNDc5Yjg3YmVmOGE3MDVhNDE2OWUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzFlYzJkMzQ4MTkwODQ0NTQ4OTFhNGQ3YTg3ZDAzNTNlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmRiOWMxYWYzMDA0NDJiZmE2MWZmODE2YzI5Y2E2YzEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzUyNjgxNDY5MDgzOTYsLTEyMi40NzI3MTU3NTk2MzFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMWVjMmQzNDgxOTA4NDQ1NDg5MWE0ZDdhODdkMDM1M2UpOwogICAgICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84NzNiMWRkZTUxNzA0ODQ4YjE4NzI5NGYwZDk0ZDYyMCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTI3MjdjMWFlMDdiNGZhYjk4MTdlODZhZGExZmQxYWMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDhhMWM3MzQ5ODUzNGE0N2E0ZjBmNDM1MGRkMTlmNTQgPSAkKCc8ZGl2IGlkPSJodG1sX2Q4YTFjNzM0OTg1MzRhNDdhNGYwZjQzNTBkZDE5ZjU0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XRUFQT04gTEFXUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTI3MjdjMWFlMDdiNGZhYjk4MTdlODZhZGExZmQxYWMuc2V0Q29udGVudChodG1sX2Q4YTFjNzM0OTg1MzRhNDdhNGYwZjQzNTBkZDE5ZjU0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfODczYjFkZGU1MTcwNDg0OGIxODcyOTRmMGQ5NGQ2MjAuYmluZFBvcHVwKHBvcHVwXzkyNzI3YzFhZTA3YjRmYWI5ODE3ZTg2YWRhMWZkMWFjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2M3MzQyMzI2MjFhOTQ1ZTNhNTk0ZmY0MDQyNjRhYTUyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hYTEyMWJjZmYzODA0NGFmODg1MjVkZTIzN2JkNDVlNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xZTBhZGRkOGY3Yjg0MzU4OTRhNTQ5NTcwN2E3NjFiMyA9ICQoJzxkaXYgaWQ9Imh0bWxfMWUwYWRkZDhmN2I4NDM1ODk0YTU0OTU3MDdhNzYxYjMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldFQVBPTiBMQVdTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hYTEyMWJjZmYzODA0NGFmODg1MjVkZTIzN2JkNDVlNy5zZXRDb250ZW50KGh0bWxfMWUwYWRkZDhmN2I4NDM1ODk0YTU0OTU3MDdhNzYxYjMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jNzM0MjMyNjIxYTk0NWUzYTU5NGZmNDA0MjY0YWE1Mi5iaW5kUG9wdXAocG9wdXBfYWExMjFiY2ZmMzgwNDRhZjg4NTI1ZGUyMzdiZDQ1ZTcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNjQxZWEzMWM5OGM5NDAyNjgxYjU4YjFkNjMzZjhmNDcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Mjk5ODA5NjcyOTk1OTYsLTEyMi4zODg4NTYyMDQyOTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81YmQxNDM5ZTEwMDM0ODY4OWJjZDI5NmFiMjNhOWQ5OSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hYjBkYjkxMmFiZWI0NmQwYjgzOWRiNGM4ZGM3NTkzOSA9ICQoJzxkaXYgaWQ9Imh0bWxfYWIwZGI5MTJhYmViNDZkMGI4MzlkYjRjOGRjNzU5MzkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81YmQxNDM5ZTEwMDM0ODY4OWJjZDI5NmFiMjNhOWQ5OS5zZXRDb250ZW50KGh0bWxfYWIwZGI5MTJhYmViNDZkMGI4MzlkYjRjOGRjNzU5MzkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82NDFlYTMxYzk4Yzk0MDI2ODFiNThiMWQ2MzNmOGY0Ny5iaW5kUG9wdXAocG9wdXBfNWJkMTQzOWUxMDAzNDg2ODliY2QyOTZhYjIzYTlkOTkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzA3YTE1OGY0ZWRkNDhkMzgyNWE3NTU3YWYwMmY2ZmQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODU3ODgzNzY2ODg3OSwtMTIyLjQxMjk3MDUzNzU5MV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzkxODljNjEyYTMwOTQyNGU4MDNiYWM2YjdmMTgyMDk2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzVkMzVlY2Y3NjQxMzRhMjVhYzFiMzM0NTdmNzBkM2UxID0gJCgnPGRpdiBpZD0iaHRtbF81ZDM1ZWNmNzY0MTM0YTI1YWMxYjMzNDU3ZjcwZDNlMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85MTg5YzYxMmEzMDk0MjRlODAzYmFjNmI3ZjE4MjA5Ni5zZXRDb250ZW50KGh0bWxfNWQzNWVjZjc2NDEzNGEyNWFjMWIzMzQ1N2Y3MGQzZTEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83MDdhMTU4ZjRlZGQ0OGQzODI1YTc1NTdhZjAyZjZmZC5iaW5kUG9wdXAocG9wdXBfOTE4OWM2MTJhMzA5NDI0ZTgwM2JhYzZiN2YxODIwOTYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMmNiYzU1OTFjNjBkNGIwYjhmODg1ZDllZTgwZjQ1NWYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjUwNTAxMjE0NjY4LC0xMjIuNDE5NjcxNzgwMjk2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODRiZTJhM2VjZGM0NGMzMjk0Y2U5ZjU4MDYzMmEzNDYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYWM4Mzg1ODc3ZDMwNDY2NmE4YzQxNTE3Y2UxNmMyYzEgPSAkKCc8ZGl2IGlkPSJodG1sX2FjODM4NTg3N2QzMDQ2NjZhOGM0MTUxN2NlMTZjMmMxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzg0YmUyYTNlY2RjNDRjMzI5NGNlOWY1ODA2MzJhMzQ2LnNldENvbnRlbnQoaHRtbF9hYzgzODU4NzdkMzA0NjY2YThjNDE1MTdjZTE2YzJjMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzJjYmM1NTkxYzYwZDRiMGI4Zjg4NWQ5ZWU4MGY0NTVmLmJpbmRQb3B1cChwb3B1cF84NGJlMmEzZWNkYzQ0YzMyOTRjZTlmNTgwNjMyYTM0Nik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82NzQ2YTM1NmYxN2Q0Njk5ODBmOWVlZjFiMjQyZTZjMCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmZlNWMwZTM0YTExNDVlZWFjZDQyMjM0NWU5Nzc0MjIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNmY3M2VmMTJkMGZkNDMzZjk0YjhmODA1M2QxMjA1MmYgPSAkKCc8ZGl2IGlkPSJodG1sXzZmNzNlZjEyZDBmZDQzM2Y5NGI4ZjgwNTNkMTIwNTJmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82ZmU1YzBlMzRhMTE0NWVlYWNkNDIyMzQ1ZTk3NzQyMi5zZXRDb250ZW50KGh0bWxfNmY3M2VmMTJkMGZkNDMzZjk0YjhmODA1M2QxMjA1MmYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82NzQ2YTM1NmYxN2Q0Njk5ODBmOWVlZjFiMjQyZTZjMC5iaW5kUG9wdXAocG9wdXBfNmZlNWMwZTM0YTExNDVlZWFjZDQyMjM0NWU5Nzc0MjIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzBiMzQ4ZWUxY2M4NGRmNjg5MzBkZWFlYjU4YTY2ZjggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA4Nzg5MzYwMjE0LC0xMjIuNDA1NzIxNDU0NTY3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfY2EyMWRiYTE1NmI2NGQ3MmFhY2ZjMDMzZTZjMWVhYjYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfY2ZlMTI0MWYyYThjNGViYThhMjk4NzJmNjIxOWFmMDAgPSAkKCc8ZGl2IGlkPSJodG1sX2NmZTEyNDFmMmE4YzRlYmE4YTI5ODcyZjYyMTlhZjAwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfY2EyMWRiYTE1NmI2NGQ3MmFhY2ZjMDMzZTZjMWVhYjYuc2V0Q29udGVudChodG1sX2NmZTEyNDFmMmE4YzRlYmE4YTI5ODcyZjYyMTlhZjAwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNzBiMzQ4ZWUxY2M4NGRmNjg5MzBkZWFlYjU4YTY2ZjguYmluZFBvcHVwKHBvcHVwX2NhMjFkYmExNTZiNjRkNzJhYWNmYzAzM2U2YzFlYWI2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2NmZTg4MjU2NzEyZDQyYzhiZjFlMTk5N2MzYWJiOTQ0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzOTgwNTU5MjYzNCwtMTIyLjQxMTc3ODI5NTk5Ml0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2MzODIxNDUwZDhmNjRlMzBiYWU2YmEyYWQwMTk5MGVmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzU2MzgzMzZiMDU1ZTRlNzg5MjM1MjJlOTc4MzY4MDBiID0gJCgnPGRpdiBpZD0iaHRtbF81NjM4MzM2YjA1NWU0ZTc4OTIzNTIyZTk3ODM2ODAwYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jMzgyMTQ1MGQ4ZjY0ZTMwYmFlNmJhMmFkMDE5OTBlZi5zZXRDb250ZW50KGh0bWxfNTYzODMzNmIwNTVlNGU3ODkyMzUyMmU5NzgzNjgwMGIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jZmU4ODI1NjcxMmQ0MmM4YmYxZTE5OTdjM2FiYjk0NC5iaW5kUG9wdXAocG9wdXBfYzM4MjE0NTBkOGY2NGUzMGJhZTZiYTJhZDAxOTkwZWYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNmNiYmUxMDE1ODJmNGRjZjliZDA1Y2QzMDcwYTFhMjQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lYjRjNjUzMDBjNWE0MDE5YmU3YjM3Y2I2OTRhODYzMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85YzI4YWVlNWYxZWY0ZmI4YWMzOTVkZmJlZWIzMmMwMCA9ICQoJzxkaXYgaWQ9Imh0bWxfOWMyOGFlZTVmMWVmNGZiOGFjMzk1ZGZiZWViMzJjMDAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lYjRjNjUzMDBjNWE0MDE5YmU3YjM3Y2I2OTRhODYzMi5zZXRDb250ZW50KGh0bWxfOWMyOGFlZTVmMWVmNGZiOGFjMzk1ZGZiZWViMzJjMDApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82Y2JiZTEwMTU4MmY0ZGNmOWJkMDVjZDMwNzBhMWEyNC5iaW5kUG9wdXAocG9wdXBfZWI0YzY1MzAwYzVhNDAxOWJlN2IzN2NiNjk0YTg2MzIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMTE0NDQ5MzllMTA1NGFmOWE1NWJmNTY5NzkxZjMxOTEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjA5NjY5NjE1NDk5LC0xMjIuMzg3MTgxNjM1OTk1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjcyZTc1MWRmMjFmNGMwMmIyMTgyMGYwNTkyMzEyZWUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjc5MDQ2YzMyODY4NDk4ZmI4MGYzNjE0YzVjMjcyYzEgPSAkKCc8ZGl2IGlkPSJodG1sXzY3OTA0NmMzMjg2ODQ5OGZiODBmMzYxNGM1YzI3MmMxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjcyZTc1MWRmMjFmNGMwMmIyMTgyMGYwNTkyMzEyZWUuc2V0Q29udGVudChodG1sXzY3OTA0NmMzMjg2ODQ5OGZiODBmMzYxNGM1YzI3MmMxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMTE0NDQ5MzllMTA1NGFmOWE1NWJmNTY5NzkxZjMxOTEuYmluZFBvcHVwKHBvcHVwXzI3MmU3NTFkZjIxZjRjMDJiMjE4MjBmMDU5MjMxMmVlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2Q3NTFkOTI4MTEyYjRkZWJiZDQ0MzViMWE3NmI1YTQ3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NDc4MTU3ODY5NTA1LC0xMjIuNDc3Mzc2NTI0MDAyOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lY2I3OTUyZWQ4Mzk0Nzc4YTY4MDU2Y2Y4Njk1ZGUwMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lN2U4ZTM3MmIwMWI0NWM5YTk3YTQxYjU1OWQ1YzQyNiA9ICQoJzxkaXYgaWQ9Imh0bWxfZTdlOGUzNzJiMDFiNDVjOWE5N2E0MWI1NTlkNWM0MjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2VjYjc5NTJlZDgzOTQ3NzhhNjgwNTZjZjg2OTVkZTAwLnNldENvbnRlbnQoaHRtbF9lN2U4ZTM3MmIwMWI0NWM5YTk3YTQxYjU1OWQ1YzQyNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2Q3NTFkOTI4MTEyYjRkZWJiZDQ0MzViMWE3NmI1YTQ3LmJpbmRQb3B1cChwb3B1cF9lY2I3OTUyZWQ4Mzk0Nzc4YTY4MDU2Y2Y4Njk1ZGUwMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hZDNjYmYzYmY5ZmM0Y2I5YmZkZDhjYWMzMWZmZTk0ZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NTczODk0Mjk2NTQ5NSwtMTIyLjQ3Nzk2MDMyNzI5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2UzZDRkMTBjZDY1ZDQ4MDA5NGNjYTM1YTUwMjU3YTk0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzViZDMyMzYyNzNjZDQyNDg5YTdhZjRhNjQ4YTU2ZDM4ID0gJCgnPGRpdiBpZD0iaHRtbF81YmQzMjM2MjczY2Q0MjQ4OWE3YWY0YTY0OGE1NmQzOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lM2Q0ZDEwY2Q2NWQ0ODAwOTRjY2EzNWE1MDI1N2E5NC5zZXRDb250ZW50KGh0bWxfNWJkMzIzNjI3M2NkNDI0ODlhN2FmNGE2NDhhNTZkMzgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hZDNjYmYzYmY5ZmM0Y2I5YmZkZDhjYWMzMWZmZTk0Zi5iaW5kUG9wdXAocG9wdXBfZTNkNGQxMGNkNjVkNDgwMDk0Y2NhMzVhNTAyNTdhOTQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZTZkYWU4NWQ1OTAxNDU2NWE4OGZmNzJhODZhZmQ4ZmUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzU2OTcwMjc1NDgyMDYsLTEyMi4zNzY3NTc2NTU1MzAwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2I0Mjc4ODdhMTlmYzQzMzc5NjllZWIyMzI4NDExMTMwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RiNTRjYjZmZjQ0ZDRkYzhiNzBhYzA5MDJkZDYyOTk0ID0gJCgnPGRpdiBpZD0iaHRtbF9kYjU0Y2I2ZmY0NGQ0ZGM4YjcwYWMwOTAyZGQ2Mjk5NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2I0Mjc4ODdhMTlmYzQzMzc5NjllZWIyMzI4NDExMTMwLnNldENvbnRlbnQoaHRtbF9kYjU0Y2I2ZmY0NGQ0ZGM4YjcwYWMwOTAyZGQ2Mjk5NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2U2ZGFlODVkNTkwMTQ1NjVhODhmZjcyYTg2YWZkOGZlLmJpbmRQb3B1cChwb3B1cF9iNDI3ODg3YTE5ZmM0MzM3OTY5ZWViMjMyODQxMTEzMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xMzZjNzQ1ZDg1YzU0YzdhYTE1OTEwZmQ2M2UxZGI5OSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTI3MDUxOTk1OTIsLTEyMi40MzIzMjU4NzEwMjhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lYjM4NWRjY2Q0NjY0NzAxOGQ0NjYzZGIwMjE1Y2Y1NSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iMjUzNDBhMGU4NGQ0OWYyOTA1ZGM5ZmM0ZjVhMDM1OSA9ICQoJzxkaXYgaWQ9Imh0bWxfYjI1MzQwYTBlODRkNDlmMjkwNWRjOWZjNGY1YTAzNTkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ViMzg1ZGNjZDQ2NjQ3MDE4ZDQ2NjNkYjAyMTVjZjU1LnNldENvbnRlbnQoaHRtbF9iMjUzNDBhMGU4NGQ0OWYyOTA1ZGM5ZmM0ZjVhMDM1OSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzEzNmM3NDVkODVjNTRjN2FhMTU5MTBmZDYzZTFkYjk5LmJpbmRQb3B1cChwb3B1cF9lYjM4NWRjY2Q0NjY0NzAxOGQ0NjYzZGIwMjE1Y2Y1NSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yZTNkY2NjYjc3ZWI0NmE3Yjc1ZjYzM2ZlODhkZWFjMyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5MTY0Mjk4MjM4NCwtMTIyLjQwMDkwODY5ODg4OTk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfM2Y0ZDUyNTE0MjliNDQ4ODk3ZDRkYzc4Yzc3YWE2MzIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTRmZmM0MTJmMDc0NDY0Njk2MDUzZmMwM2E1NmQzYWMgPSAkKCc8ZGl2IGlkPSJodG1sX2E0ZmZjNDEyZjA3NDQ2NDY5NjA1M2ZjMDNhNTZkM2FjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CVVJHTEFSWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfM2Y0ZDUyNTE0MjliNDQ4ODk3ZDRkYzc4Yzc3YWE2MzIuc2V0Q29udGVudChodG1sX2E0ZmZjNDEyZjA3NDQ2NDY5NjA1M2ZjMDNhNTZkM2FjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMmUzZGNjY2I3N2ViNDZhN2I3NWY2MzNmZTg4ZGVhYzMuYmluZFBvcHVwKHBvcHVwXzNmNGQ1MjUxNDI5YjQ0ODg5N2Q0ZGM3OGM3N2FhNjMyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzEwOWU1NmQyNjhiZjRkZTc5OTczYzVjY2Y5OWYwNDk5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNzA2OTMwMTU0NSwtMTIyLjQwODU5NTExMDg2OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzMyZGZiMDVmODczYTQxNDdiY2RmZjk1YzA5MDNhZjY1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQyMjAwMmEwZjdiYzRiNDJiNTQ2YTEwNWUyMmM1NTIxID0gJCgnPGRpdiBpZD0iaHRtbF80MjIwMDJhMGY3YmM0YjQyYjU0NmExMDVlMjJjNTUyMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U1RPTEVOIFBST1BFUlRZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zMmRmYjA1Zjg3M2E0MTQ3YmNkZmY5NWMwOTAzYWY2NS5zZXRDb250ZW50KGh0bWxfNDIyMDAyYTBmN2JjNGI0MmI1NDZhMTA1ZTIyYzU1MjEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8xMDllNTZkMjY4YmY0ZGU3OTk3M2M1Y2NmOTlmMDQ5OS5iaW5kUG9wdXAocG9wdXBfMzJkZmIwNWY4NzNhNDE0N2JjZGZmOTVjMDkwM2FmNjUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfY2IxNDg0MDliYzQxNDFiYjg1MjIxM2NhMDI5ZjRjMGIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTcyODk1OTA0NTc3OTUsLTEyMi40MDY4NzA0MDIwODJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81NzkxNWJlODYzN2Q0NDczYmZlYTY0MDM5NmVlZGNhNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84M2UyZDk1M2NkYjg0Mjc2YjJlMGRkMmRjMzZhNjZmNiA9ICQoJzxkaXYgaWQ9Imh0bWxfODNlMmQ5NTNjZGI4NDI3NmIyZTBkZDJkYzM2YTY2ZjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJPQkJFUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzU3OTE1YmU4NjM3ZDQ0NzNiZmVhNjQwMzk2ZWVkY2E1LnNldENvbnRlbnQoaHRtbF84M2UyZDk1M2NkYjg0Mjc2YjJlMGRkMmRjMzZhNjZmNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2NiMTQ4NDA5YmM0MTQxYmI4NTIyMTNjYTAyOWY0YzBiLmJpbmRQb3B1cChwb3B1cF81NzkxNWJlODYzN2Q0NDczYmZlYTY0MDM5NmVlZGNhNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85Yzc3NzUzNzcyNTA0NjFjODljYjQyOWU5ZWMzZDhhOSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0ODkwNjMwNTE4MjksLTEyMi40MjAzNTQ3ODA4NjA5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzk5N2MxZmFlZGYxZTRmZmE4MTk5ODkwMzM4ZDk3ODVhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzExMTljMmNkMjdhZDRmYzViMGM3NjllN2JmMjVhZDU1ID0gJCgnPGRpdiBpZD0iaHRtbF8xMTE5YzJjZDI3YWQ0ZmM1YjBjNzY5ZTdiZjI1YWQ1NSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTk3YzFmYWVkZjFlNGZmYTgxOTk4OTAzMzhkOTc4NWEuc2V0Q29udGVudChodG1sXzExMTljMmNkMjdhZDRmYzViMGM3NjllN2JmMjVhZDU1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOWM3Nzc1Mzc3MjUwNDYxYzg5Y2I0MjllOWVjM2Q4YTkuYmluZFBvcHVwKHBvcHVwXzk5N2MxZmFlZGYxZTRmZmE4MTk5ODkwMzM4ZDk3ODVhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2VlNmFjNTQzOWE4MzRjYjA5ZGE0ODFhNWQ0NDI3ODlhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzE1NzY1NDI2OTk1LC0xMjIuNDM5OTA5NzY2NzcyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjEzYjk3MGYwMjhmNDU4YTg5ZmI1ZGYxNDVlNjQ1MjYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfY2ViZDg1MDY3ZjlhNDI2YWIzODVmOTk4NjkyY2VjZTMgPSAkKCc8ZGl2IGlkPSJodG1sX2NlYmQ4NTA2N2Y5YTQyNmFiMzg1Zjk5ODY5MmNlY2UzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mMTNiOTcwZjAyOGY0NThhODlmYjVkZjE0NWU2NDUyNi5zZXRDb250ZW50KGh0bWxfY2ViZDg1MDY3ZjlhNDI2YWIzODVmOTk4NjkyY2VjZTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lZTZhYzU0MzlhODM0Y2IwOWRhNDgxYTVkNDQyNzg5YS5iaW5kUG9wdXAocG9wdXBfZjEzYjk3MGYwMjhmNDU4YTg5ZmI1ZGYxNDVlNjQ1MjYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzMxYTVhNGE5NjUxNDI2N2I3YTJjYzY5MjM2ZmNmYTUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM1Njk5Mzg2OTE4LC0xMjIuNDA4NDIxMTE2OTIyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfM2NjZjQ2NGFkNjFkNDFhZmIyODljNDA0ZTcxOWQwMDggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZWVjMTc2M2MyMjIxNGQ0M2EyMzQ0ZWE1MWVlOGI4MjcgPSAkKCc8ZGl2IGlkPSJodG1sX2VlYzE3NjNjMjIyMTRkNDNhMjM0NGVhNTFlZThiODI3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zY2NmNDY0YWQ2MWQ0MWFmYjI4OWM0MDRlNzE5ZDAwOC5zZXRDb250ZW50KGh0bWxfZWVjMTc2M2MyMjIxNGQ0M2EyMzQ0ZWE1MWVlOGI4MjcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8zMzFhNWE0YTk2NTE0MjY3YjdhMmNjNjkyMzZmY2ZhNS5iaW5kUG9wdXAocG9wdXBfM2NjZjQ2NGFkNjFkNDFhZmIyODljNDA0ZTcxOWQwMDgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzJlMDEzN2JjM2RkNGJjNGIzOGM0ZWVmMzg1YzI5ZGIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzM2MTg2Mjc2NDU2MDQsLTEyMi40MjIzMTU2NzA3NDldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80OTZmZmJjNmQ4ODU0OWM4OTYzMjkyNDgzNmM2NDNmZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kZmVkOTc4MmNhZmU0NWNkOWYwNGViZDIzOTgxZTJmMCA9ICQoJzxkaXYgaWQ9Imh0bWxfZGZlZDk3ODJjYWZlNDVjZDlmMDRlYmQyMzk4MWUyZjAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkZSQVVEPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80OTZmZmJjNmQ4ODU0OWM4OTYzMjkyNDgzNmM2NDNmZC5zZXRDb250ZW50KGh0bWxfZGZlZDk3ODJjYWZlNDVjZDlmMDRlYmQyMzk4MWUyZjApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83MmUwMTM3YmMzZGQ0YmM0YjM4YzRlZWYzODVjMjlkYi5iaW5kUG9wdXAocG9wdXBfNDk2ZmZiYzZkODg1NDljODk2MzI5MjQ4MzZjNjQzZmQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNGMyMjNiNDFiNGVjNDQ0NGFiNjYwMGFkMjRhYmFkNjkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTI4NDEyODQwNDQ3MDUsLTEyMi40MjQ1MTk4MzUwMDkwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzY3NGZhYjgxZjk1MTQ4OTg4YWZhZWIzNTM0MDZjYzQ4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzUzYTNlYWU4YzQyMTRjYzE5Y2EyODJmMGFlMmMzYWRmID0gJCgnPGRpdiBpZD0iaHRtbF81M2EzZWFlOGM0MjE0Y2MxOWNhMjgyZjBhZTJjM2FkZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzY3NGZhYjgxZjk1MTQ4OTg4YWZhZWIzNTM0MDZjYzQ4LnNldENvbnRlbnQoaHRtbF81M2EzZWFlOGM0MjE0Y2MxOWNhMjgyZjBhZTJjM2FkZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzRjMjIzYjQxYjRlYzQ0NDRhYjY2MDBhZDI0YWJhZDY5LmJpbmRQb3B1cChwb3B1cF82NzRmYWI4MWY5NTE0ODk4OGFmYWViMzUzNDA2Y2M0OCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82MGQ4NzU0NDEyOGM0MjBjYWIyZDM5YTAyN2I4YjdhZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfM2M3N2ZiYTliNmM4NDdmMjgzNWEyOWZlNzk4YTQ0ZWYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjM0MmJlYTA4YWE1NDFjY2E2ZmU5MmM5ZmY5NjMyNTQgPSAkKCc8ZGl2IGlkPSJodG1sX2IzNDJiZWEwOGFhNTQxY2NhNmZlOTJjOWZmOTYzMjU0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zYzc3ZmJhOWI2Yzg0N2YyODM1YTI5ZmU3OThhNDRlZi5zZXRDb250ZW50KGh0bWxfYjM0MmJlYTA4YWE1NDFjY2E2ZmU5MmM5ZmY5NjMyNTQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82MGQ4NzU0NDEyOGM0MjBjYWIyZDM5YTAyN2I4YjdhZS5iaW5kUG9wdXAocG9wdXBfM2M3N2ZiYTliNmM4NDdmMjgzNWEyOWZlNzk4YTQ0ZWYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfODIwZWQxOWVkYTdmNDkzMGFlMTIyYjYxNThjNDE3YjYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTQwOTg2ODgyMDY3OTUsLTEyMi40MTQyMzM4NDkwMzc5OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzI1NTBiZDJjM2I3YTRhZjRhN2UwNjgxYjM2NDhkNzljID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzFmMjNmZTNkZTU2NjRlODA5Nzc1MTgwYjQwZTU2MmNkID0gJCgnPGRpdiBpZD0iaHRtbF8xZjIzZmUzZGU1NjY0ZTgwOTc3NTE4MGI0MGU1NjJjZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzI1NTBiZDJjM2I3YTRhZjRhN2UwNjgxYjM2NDhkNzljLnNldENvbnRlbnQoaHRtbF8xZjIzZmUzZGU1NjY0ZTgwOTc3NTE4MGI0MGU1NjJjZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzgyMGVkMTllZGE3ZjQ5MzBhZTEyMmI2MTU4YzQxN2I2LmJpbmRQb3B1cChwb3B1cF8yNTUwYmQyYzNiN2E0YWY0YTdlMDY4MWIzNjQ4ZDc5Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jMDA2Mjc0NmE1MjA0ZjBlOGQwZWVkYzdkYWEzODdkYiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3MTQ5Mzk5Njk0MTYsLTEyMi41MDc3NTAxMzEwMDQwMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2E4YTJiNjEzYzFlMTRkN2Y4YTU0MmI5OWE5Y2Q0ZWQ1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2YxMjM1ODAyOTJjMzQ4ZjliYWRhZDVjNDE2NmNiOTIzID0gJCgnPGRpdiBpZD0iaHRtbF9mMTIzNTgwMjkyYzM0OGY5YmFkYWQ1YzQxNjZjYjkyMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYThhMmI2MTNjMWUxNGQ3ZjhhNTQyYjk5YTljZDRlZDUuc2V0Q29udGVudChodG1sX2YxMjM1ODAyOTJjMzQ4ZjliYWRhZDVjNDE2NmNiOTIzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYzAwNjI3NDZhNTIwNGYwZThkMGVlZGM3ZGFhMzg3ZGIuYmluZFBvcHVwKHBvcHVwX2E4YTJiNjEzYzFlMTRkN2Y4YTU0MmI5OWE5Y2Q0ZWQ1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzE0ZTkyNzZmMmIyNjQ5YjJhODFjZmMzNGNmMTA3ZWM3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzE4MzAyMjA0NzY2MDA1LC0xMjIuNDc0NDQ0NjM5NTk0OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hNWYyZDM1ZjliMzA0YWYwYmU0NmE4ZGM2OTVjOTg2OSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jYjQ0NmVkZWFiNWE0YjE5OWRiMDZhYTgzMGE3NWY0NyA9ICQoJzxkaXYgaWQ9Imh0bWxfY2I0NDZlZGVhYjVhNGIxOTlkYjA2YWE4MzBhNzVmNDciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hNWYyZDM1ZjliMzA0YWYwYmU0NmE4ZGM2OTVjOTg2OS5zZXRDb250ZW50KGh0bWxfY2I0NDZlZGVhYjVhNGIxOTlkYjA2YWE4MzBhNzVmNDcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8xNGU5Mjc2ZjJiMjY0OWIyYTgxY2ZjMzRjZjEwN2VjNy5iaW5kUG9wdXAocG9wdXBfYTVmMmQzNWY5YjMwNGFmMGJlNDZhOGRjNjk1Yzk4NjkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNWIxMWJkYmE5NmE2NDc0MTgxZjU5MDg2MjUzMTc5NjAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2UzMGQ3MGU5YWQxNDVlM2FmZjhjYTgyNmIzYTc0NDQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfN2Y1NzQwMGQzZGU2NDAwN2EwMDI2OTZhZDc4MTc4YjkgPSAkKCc8ZGl2IGlkPSJodG1sXzdmNTc0MDBkM2RlNjQwMDdhMDAyNjk2YWQ3ODE3OGI5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfN2UzMGQ3MGU5YWQxNDVlM2FmZjhjYTgyNmIzYTc0NDQuc2V0Q29udGVudChodG1sXzdmNTc0MDBkM2RlNjQwMDdhMDAyNjk2YWQ3ODE3OGI5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNWIxMWJkYmE5NmE2NDc0MTgxZjU5MDg2MjUzMTc5NjAuYmluZFBvcHVwKHBvcHVwXzdlMzBkNzBlOWFkMTQ1ZTNhZmY4Y2E4MjZiM2E3NDQ0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzVhM2YzMTVmNjZlMjQ4NmE5MThhZDc0YjM1YmZlMGM0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3NDM3ODMwOTExMiwtMTIyLjQxOTIwMzAwNDI2OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2M0YjIwMjE2YzQ0MDQ5M2NhMjhmZWZmOTVlYjEzOGU2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc5NDA0OGQ2NmI5MDQ4N2E5MzkzYjI2MjMyNTc5YjUyID0gJCgnPGRpdiBpZD0iaHRtbF83OTQwNDhkNjZiOTA0ODdhOTM5M2IyNjIzMjU3OWI1MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2M0YjIwMjE2YzQ0MDQ5M2NhMjhmZWZmOTVlYjEzOGU2LnNldENvbnRlbnQoaHRtbF83OTQwNDhkNjZiOTA0ODdhOTM5M2IyNjIzMjU3OWI1Mik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzVhM2YzMTVmNjZlMjQ4NmE5MThhZDc0YjM1YmZlMGM0LmJpbmRQb3B1cChwb3B1cF9jNGIyMDIxNmM0NDA0OTNjYTI4ZmVmZjk1ZWIxMzhlNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83OTEyN2E4ODVmNWU0MzM1OThhZGNhN2M2NGQyMTMwYiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTM2ODgyODQ1MzIsLTEyMi40MTI2OTAxNDIzMDgwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzdkZDA4ODU1Y2JhZDQwMjk5NzBhMTkwMDNjZDU2ZjFhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzI1YmIzMjQ5MzdhZjRjZDg4ZWU5ZTJkNjMyMGEyNzMxID0gJCgnPGRpdiBpZD0iaHRtbF8yNWJiMzI0OTM3YWY0Y2Q4OGVlOWUyZDYzMjBhMjczMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdkZDA4ODU1Y2JhZDQwMjk5NzBhMTkwMDNjZDU2ZjFhLnNldENvbnRlbnQoaHRtbF8yNWJiMzI0OTM3YWY0Y2Q4OGVlOWUyZDYzMjBhMjczMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzc5MTI3YTg4NWY1ZTQzMzU5OGFkY2E3YzY0ZDIxMzBiLmJpbmRQb3B1cChwb3B1cF83ZGQwODg1NWNiYWQ0MDI5OTcwYTE5MDAzY2Q1NmYxYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84ZDU2Mjc5NjBhZGU0OGZiOGU2MGFiYjNhMWRiMmQxYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lOWIyMGQzZWJiYTQ0Nzg2YWMwN2NlOTc1NmY5MTM3YiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85NWJmZDNhMmNkOGY0NzYzODNlZTVjOGUxODVhNmE5ZSA9ICQoJzxkaXYgaWQ9Imh0bWxfOTViZmQzYTJjZDhmNDc2MzgzZWU1YzhlMTg1YTZhOWUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTliMjBkM2ViYmE0NDc4NmFjMDdjZTk3NTZmOTEzN2Iuc2V0Q29udGVudChodG1sXzk1YmZkM2EyY2Q4ZjQ3NjM4M2VlNWM4ZTE4NWE2YTllKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOGQ1NjI3OTYwYWRlNDhmYjhlNjBhYmIzYTFkYjJkMWEuYmluZFBvcHVwKHBvcHVwX2U5YjIwZDNlYmJhNDQ3ODZhYzA3Y2U5NzU2ZjkxMzdiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2FmZWYzYTkwNGViYjQyZDg5OTZiZjM1MjM4YjNlYjQzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3OTIwOTM3NTUzMjk1LC0xMjIuNDEwODgyODI1NTUxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZGIxZjRiMzlhNzllNDcwN2E0ZWIxYzBmYTQwOWU5NTEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTA4MTc4OWM2YzIzNDUzOWJhMzZkMDVlZDlmNzExMTkgPSAkKCc8ZGl2IGlkPSJodG1sXzkwODE3ODljNmMyMzQ1MzliYTM2ZDA1ZWQ5ZjcxMTE5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kYjFmNGIzOWE3OWU0NzA3YTRlYjFjMGZhNDA5ZTk1MS5zZXRDb250ZW50KGh0bWxfOTA4MTc4OWM2YzIzNDUzOWJhMzZkMDVlZDlmNzExMTkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hZmVmM2E5MDRlYmI0MmQ4OTk2YmYzNTIzOGIzZWI0My5iaW5kUG9wdXAocG9wdXBfZGIxZjRiMzlhNzllNDcwN2E0ZWIxYzBmYTQwOWU5NTEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZWIwMTliYTQ2MWE3NGQ4YTlkZmI2OGZjYTE2YWNjYjkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy44MDA0NTY2NDcxMDM4OSwtMTIyLjQwMTQzMjc1NDcyMjAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzRjMmQ3N2I4MjQ1NGExNTg4N2UzY2U5ZWU3Mjk4M2MgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTE5Yzg4MTE5MGQwNGRkYzk0M2YyNTViZmIwNWYwOWIgPSAkKCc8ZGl2IGlkPSJodG1sXzkxOWM4ODExOTBkMDRkZGM5NDNmMjU1YmZiMDVmMDliIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zNGMyZDc3YjgyNDU0YTE1ODg3ZTNjZTllZTcyOTgzYy5zZXRDb250ZW50KGh0bWxfOTE5Yzg4MTE5MGQwNGRkYzk0M2YyNTViZmIwNWYwOWIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lYjAxOWJhNDYxYTc0ZDhhOWRmYjY4ZmNhMTZhY2NiOS5iaW5kUG9wdXAocG9wdXBfMzRjMmQ3N2I4MjQ1NGExNTg4N2UzY2U5ZWU3Mjk4M2MpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZTNhMGJhY2M4M2VlNGQwOTgxMmI5ZjJhOWZkNTJkZGYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDM1NTUwNTQyMjY1LC0xMjIuNDIxMTI4MDI5NTA1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDZmYzg5ZjM4MWM5NDdmZWFjYzExMDQyM2FjNzkxN2EgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDYyZDVmMzk4MGFmNGEwZGJiZjhkZWJkYmNmOGVmZDMgPSAkKCc8ZGl2IGlkPSJodG1sXzQ2MmQ1ZjM5ODBhZjRhMGRiYmY4ZGViZGJjZjhlZmQzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80NmZjODlmMzgxYzk0N2ZlYWNjMTEwNDIzYWM3OTE3YS5zZXRDb250ZW50KGh0bWxfNDYyZDVmMzk4MGFmNGEwZGJiZjhkZWJkYmNmOGVmZDMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lM2EwYmFjYzgzZWU0ZDA5ODEyYjlmMmE5ZmQ1MmRkZi5iaW5kUG9wdXAocG9wdXBfNDZmYzg5ZjM4MWM5NDdmZWFjYzExMDQyM2FjNzkxN2EpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMjBkMjhhMjUzN2VlNDJmM2JhZmVhY2E5YTQ4NDVmN2MgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODY1NjQ3NjA3Njg1LC0xMjIuNDA3MjQ0MDg3MDMyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNWRkZjY5YWI3OWZmNGRkZGJkOTU0MTZkYTZmMzEwMjIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjMwNzAxOTZhMTIzNDllZmFhYTE2ZTZlMzgxNDFlYTMgPSAkKCc8ZGl2IGlkPSJodG1sXzYzMDcwMTk2YTEyMzQ5ZWZhYWExNmU2ZTM4MTQxZWEzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81ZGRmNjlhYjc5ZmY0ZGRkYmQ5NTQxNmRhNmYzMTAyMi5zZXRDb250ZW50KGh0bWxfNjMwNzAxOTZhMTIzNDllZmFhYTE2ZTZlMzgxNDFlYTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yMGQyOGEyNTM3ZWU0MmYzYmFmZWFjYTlhNDg0NWY3Yy5iaW5kUG9wdXAocG9wdXBfNWRkZjY5YWI3OWZmNGRkZGJkOTU0MTZkYTZmMzEwMjIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNTQzN2JjZThkOWZlNDhiZWE4MTczNjM4M2NiOTViYjEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80ZDMxZjAyZDA1YmY0MDA1OTY4NGFiZDVlYTY2NmYwNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80YTFkZmQyZDk2YmQ0MGJlOWFiZDczY2EwMDdhN2YzMyA9ICQoJzxkaXYgaWQ9Imh0bWxfNGExZGZkMmQ5NmJkNDBiZTlhYmQ3M2NhMDA3YTdmMzMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJFQ09WRVJFRCBWRUhJQ0xFPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80ZDMxZjAyZDA1YmY0MDA1OTY4NGFiZDVlYTY2NmYwNC5zZXRDb250ZW50KGh0bWxfNGExZGZkMmQ5NmJkNDBiZTlhYmQ3M2NhMDA3YTdmMzMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81NDM3YmNlOGQ5ZmU0OGJlYTgxNzM2MzgzY2I5NWJiMS5iaW5kUG9wdXAocG9wdXBfNGQzMWYwMmQwNWJmNDAwNTk2ODRhYmQ1ZWE2NjZmMDQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzAyMWMzZWNmYjljNDAyMGEzZTRiMzUzN2RlN2U3OTcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81MDQ5NDI1MTY2Mzk0ZmI4ODRiZDA2NjEyYTdmYzk0NSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84Njc5ZDUxNDdhOTM0NjIyODM2MjIzZDBkZGY5NzNkOSA9ICQoJzxkaXYgaWQ9Imh0bWxfODY3OWQ1MTQ3YTkzNDYyMjgzNjIyM2QwZGRmOTczZDkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81MDQ5NDI1MTY2Mzk0ZmI4ODRiZDA2NjEyYTdmYzk0NS5zZXRDb250ZW50KGh0bWxfODY3OWQ1MTQ3YTkzNDYyMjgzNjIyM2QwZGRmOTczZDkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jMDIxYzNlY2ZiOWM0MDIwYTNlNGIzNTM3ZGU3ZTc5Ny5iaW5kUG9wdXAocG9wdXBfNTA0OTQyNTE2NjM5NGZiODg0YmQwNjYxMmE3ZmM5NDUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMjY0NWI0NzE0ZTg5NGU3OTllOTRkNjM1OWE4NTNiMGEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDQxOTI3NTA4OTMyMDUsLTEyMi40NDQ2ODU0ODIyNzNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85OWU4OTRmZmNjYzc0NWY2OWQ0NDdiMDM5NmFiMTFhYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iODJmZGVlMWQ1MDk0YmEyYTZhZjYwZDhmNDczODY3ZSA9ICQoJzxkaXYgaWQ9Imh0bWxfYjgyZmRlZTFkNTA5NGJhMmE2YWY2MGQ4ZjQ3Mzg2N2UiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTllODk0ZmZjY2M3NDVmNjlkNDQ3YjAzOTZhYjExYWIuc2V0Q29udGVudChodG1sX2I4MmZkZWUxZDUwOTRiYTJhNmFmNjBkOGY0NzM4NjdlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMjY0NWI0NzE0ZTg5NGU3OTllOTRkNjM1OWE4NTNiMGEuYmluZFBvcHVwKHBvcHVwXzk5ZTg5NGZmY2NjNzQ1ZjY5ZDQ0N2IwMzk2YWIxMWFiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzAzMzE4NzU1NjUzZTQ2MDBiMDY0NmE1ZDA1ZWNiNzI0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzkyNjYyZGE3MGM4MDRmMmQ4YWM5Nzk0N2IwZmU1OGRkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzVhNDU0YzBjNzVlOTRlNmU4YzlmOWQ5NDk1NGRiMDNhID0gJCgnPGRpdiBpZD0iaHRtbF81YTQ1NGMwYzc1ZTk0ZTZlOGM5ZjlkOTQ5NTRkYjAzYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85MjY2MmRhNzBjODA0ZjJkOGFjOTc5NDdiMGZlNThkZC5zZXRDb250ZW50KGh0bWxfNWE0NTRjMGM3NWU5NGU2ZThjOWY5ZDk0OTU0ZGIwM2EpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wMzMxODc1NTY1M2U0NjAwYjA2NDZhNWQwNWVjYjcyNC5iaW5kUG9wdXAocG9wdXBfOTI2NjJkYTcwYzgwNGYyZDhhYzk3OTQ3YjBmZTU4ZGQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMGM5ZTgwOTJjNTdkNDU4MGI0OTUyZWM1M2I2YjgyMjAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Mjg1MjgwNjI3NDY1LC0xMjIuNDc1NjQ3NDYwNzg1OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jZjM5YTdiOGQ2NTY0NTlhOTI4ZGQ5ZWE4NzkxMzIxYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85NmZhMzVhNzFiMDE0YzI0YWYwYTQ5Njg4NWEyNGM2ZiA9ICQoJzxkaXYgaWQ9Imh0bWxfOTZmYTM1YTcxYjAxNGMyNGFmMGE0OTY4ODVhMjRjNmYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJPQkJFUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NmMzlhN2I4ZDY1NjQ1OWE5MjhkZDllYTg3OTEzMjFjLnNldENvbnRlbnQoaHRtbF85NmZhMzVhNzFiMDE0YzI0YWYwYTQ5Njg4NWEyNGM2Zik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzBjOWU4MDkyYzU3ZDQ1ODBiNDk1MmVjNTNiNmI4MjIwLmJpbmRQb3B1cChwb3B1cF9jZjM5YTdiOGQ2NTY0NTlhOTI4ZGQ5ZWE4NzkxMzIxYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82YWYzMzMzN2JiN2Q0MjMxOTllZGYxOGU5M2JhNjFkYiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0Mjg1MTczNzQ0NDg5NCwtMTIyLjQyMDk2NzQ0MDU2NF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQyZmU0MzM5ODYxMTQ2N2ZiZmU3ZGY4NzlkYWU4ZjM4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2IwOWRjN2EyNWVmMzQ0Njg4YWI2YWI5MDg2NGZhZmJhID0gJCgnPGRpdiBpZD0iaHRtbF9iMDlkYzdhMjVlZjM0NDY4OGFiNmFiOTA4NjRmYWZiYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQyZmU0MzM5ODYxMTQ2N2ZiZmU3ZGY4NzlkYWU4ZjM4LnNldENvbnRlbnQoaHRtbF9iMDlkYzdhMjVlZjM0NDY4OGFiNmFiOTA4NjRmYWZiYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzZhZjMzMzM3YmI3ZDQyMzE5OWVkZjE4ZTkzYmE2MWRiLmJpbmRQb3B1cChwb3B1cF80MmZlNDMzOTg2MTE0NjdmYmZlN2RmODc5ZGFlOGYzOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82MmI1OTJjZGEyMmY0MTVlOGRkZDAzZmUyZjU0MGNlZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80OWVkMDc5Y2U0ZDA0OTI3OThhMjliZTE4OTViMGEyZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84MDA4YzZkMDM5NjU0MTI2YjE0MjczZDQyMDQzYjg3YyA9ICQoJzxkaXYgaWQ9Imh0bWxfODAwOGM2ZDAzOTY1NDEyNmIxNDI3M2Q0MjA0M2I4N2MiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDllZDA3OWNlNGQwNDkyNzk4YTI5YmUxODk1YjBhMmUuc2V0Q29udGVudChodG1sXzgwMDhjNmQwMzk2NTQxMjZiMTQyNzNkNDIwNDNiODdjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNjJiNTkyY2RhMjJmNDE1ZThkZGQwM2ZlMmY1NDBjZWYuYmluZFBvcHVwKHBvcHVwXzQ5ZWQwNzljZTRkMDQ5Mjc5OGEyOWJlMTg5NWIwYTJlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzk0NWJiMmFkMDg3MTRhOTQ4ZjRlMjg1NzllMDI0ZTkzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc5MTY3NDIxODk2MywtMTIyLjQwNjM0NjQyNTYzMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzYwYTlkNjc3YWFjZjRkYzA5MTQ2YTFkOGIxMjA0ZmUxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2UwZWNlMDQ1YmFmMzRmMTY5M2ZiNjllYWIzNmQ2Y2JhID0gJCgnPGRpdiBpZD0iaHRtbF9lMGVjZTA0NWJhZjM0ZjE2OTNmYjY5ZWFiMzZkNmNiYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjBhOWQ2NzdhYWNmNGRjMDkxNDZhMWQ4YjEyMDRmZTEuc2V0Q29udGVudChodG1sX2UwZWNlMDQ1YmFmMzRmMTY5M2ZiNjllYWIzNmQ2Y2JhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOTQ1YmIyYWQwODcxNGE5NDhmNGUyODU3OWUwMjRlOTMuYmluZFBvcHVwKHBvcHVwXzYwYTlkNjc3YWFjZjRkYzA5MTQ2YTFkOGIxMjA0ZmUxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2UxMzBhZWVhOTU1MDRkODRhNzA5MmE5OTRjN2U4NDQ5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY1NzE4NDM5NTI4MiwtMTIyLjQwOTUyOTkxMzI3OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzFhYjg3NmUyN2EzOTQ2ZGY5ZWZiYmRhMGI2NmM2ODFkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzA2MDQwYjA2MjExODRlZWJiOWFkODAxNWE2OWMwMDkyID0gJCgnPGRpdiBpZD0iaHRtbF8wNjA0MGIwNjIxMTg0ZWViYjlhZDgwMTVhNjljMDA5MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMWFiODc2ZTI3YTM5NDZkZjllZmJiZGEwYjY2YzY4MWQuc2V0Q29udGVudChodG1sXzA2MDQwYjA2MjExODRlZWJiOWFkODAxNWE2OWMwMDkyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZTEzMGFlZWE5NTUwNGQ4NGE3MDkyYTk5NGM3ZTg0NDkuYmluZFBvcHVwKHBvcHVwXzFhYjg3NmUyN2EzOTQ2ZGY5ZWZiYmRhMGI2NmM2ODFkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2YyZDJkZmM5NGJiMjQ2OGY5MDRiMDQzOGE2NWRkMzFlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81N2MwYTA5NjRmNzQ0ODVmODQzMWE5YzhkOWVmMDg1MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iZGE0NTdiOWYwYWM0OWIxYWVmMjJlOTc1NWI3NGVmNiA9ICQoJzxkaXYgaWQ9Imh0bWxfYmRhNDU3YjlmMGFjNDliMWFlZjIyZTk3NTViNzRlZjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTdjMGEwOTY0Zjc0NDg1Zjg0MzFhOWM4ZDllZjA4NTIuc2V0Q29udGVudChodG1sX2JkYTQ1N2I5ZjBhYzQ5YjFhZWYyMmU5NzU1Yjc0ZWY2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZjJkMmRmYzk0YmIyNDY4ZjkwNGIwNDM4YTY1ZGQzMWUuYmluZFBvcHVwKHBvcHVwXzU3YzBhMDk2NGY3NDQ4NWY4NDMxYTljOGQ5ZWYwODUyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzkyMDk4YTZjMDNiMjQ4OTg5MTBlNjBmZGMwZjE4ZTZiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY3NTI0MzA4NzgzLC0xMjIuNDEwNzM4MDk3MzE1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDQ4YjI5MTk5OGU0NDFhY2E4MTQxNWJkZTJhNmUxNDMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzFhNDY0ODViMDc0NDY2OTljYWVhODQ0NWYzOThhNDIgPSAkKCc8ZGl2IGlkPSJodG1sX2MxYTQ2NDg1YjA3NDQ2Njk5Y2FlYTg0NDVmMzk4YTQyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CVVJHTEFSWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDQ4YjI5MTk5OGU0NDFhY2E4MTQxNWJkZTJhNmUxNDMuc2V0Q29udGVudChodG1sX2MxYTQ2NDg1YjA3NDQ2Njk5Y2FlYTg0NDVmMzk4YTQyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOTIwOThhNmMwM2IyNDg5ODkxMGU2MGZkYzBmMThlNmIuYmluZFBvcHVwKHBvcHVwXzQ0OGIyOTE5OThlNDQxYWNhODE0MTViZGUyYTZlMTQzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2JiMzU1MTVkZDlmMzQ2MTdiMWEyNmI4NDg4MDI2ZGY3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY3NTI0MzA4NzgzLC0xMjIuNDEwNzM4MDk3MzE1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzljOTI1YWJmNmJjNGI1NWI3NTBjZjZkNDliZjE2NjMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDRiYzExMTE4NTI3NGU5YTg5NDQ5MWFjMzg5NjRlNjMgPSAkKCc8ZGl2IGlkPSJodG1sXzQ0YmMxMTExODUyNzRlOWE4OTQ0OTFhYzM4OTY0ZTYzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzljOTI1YWJmNmJjNGI1NWI3NTBjZjZkNDliZjE2NjMuc2V0Q29udGVudChodG1sXzQ0YmMxMTExODUyNzRlOWE4OTQ0OTFhYzM4OTY0ZTYzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYmIzNTUxNWRkOWYzNDYxN2IxYTI2Yjg0ODgwMjZkZjcuYmluZFBvcHVwKHBvcHVwXzc5YzkyNWFiZjZiYzRiNTViNzUwY2Y2ZDQ5YmYxNjYzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzdjYWY2MzU5NGZlZDRiNDJiZjljZTA2YTcwN2M2MjhjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzZiNjFjYWFlZWFiOTQxZTY5NjAwMjA5ZWQyZDUwYThjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzYzYjg5MmRmYmZkZjQ1MTg4MGJhZDFlMjA4MDkzN2UxID0gJCgnPGRpdiBpZD0iaHRtbF82M2I4OTJkZmJmZGY0NTE4ODBiYWQxZTIwODA5MzdlMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZiNjFjYWFlZWFiOTQxZTY5NjAwMjA5ZWQyZDUwYThjLnNldENvbnRlbnQoaHRtbF82M2I4OTJkZmJmZGY0NTE4ODBiYWQxZTIwODA5MzdlMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzdjYWY2MzU5NGZlZDRiNDJiZjljZTA2YTcwN2M2MjhjLmJpbmRQb3B1cChwb3B1cF82YjYxY2FhZWVhYjk0MWU2OTYwMDIwOWVkMmQ1MGE4Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82ZTFiZDc0MDUzMWY0ZWI0ODZmMDcxNjFiOWZlZjI4MSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMzEwODM0MzMyNjQsLTEyMi40NDQzMTQwMjUxODhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81NDU3M2U0ZTFlMzU0Nzg4YTE0NGI4N2YwNTk3NjZmZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81NzM5ODMyOWI5YzM0ZDUzYjdlYWE4YWQ2YzM5ZTBlYiA9ICQoJzxkaXYgaWQ9Imh0bWxfNTczOTgzMjliOWMzNGQ1M2I3ZWFhOGFkNmMzOWUwZWIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkRSVUcvTkFSQ09USUM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzU0NTczZTRlMWUzNTQ3ODhhMTQ0Yjg3ZjA1OTc2NmZkLnNldENvbnRlbnQoaHRtbF81NzM5ODMyOWI5YzM0ZDUzYjdlYWE4YWQ2YzM5ZTBlYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzZlMWJkNzQwNTMxZjRlYjQ4NmYwNzE2MWI5ZmVmMjgxLmJpbmRQb3B1cChwb3B1cF81NDU3M2U0ZTFlMzU0Nzg4YTE0NGI4N2YwNTk3NjZmZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mNjdlNjUwYTcwZTU0YzNkYmUzYmVjMmFjMDBiM2QyYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NjAxNjAxMTQxMDMsLTEyMi40MDM2NDQ2MjA0MzldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jMmVkYWUyN2MxNDM0NDhlYTQxYjA0N2RlMTNkNGRiOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xZTEyM2Q3MWRjYTE0OTI0YWIzNmQyZTM5NWQyMTY3NyA9ICQoJzxkaXYgaWQ9Imh0bWxfMWUxMjNkNzFkY2ExNDkyNGFiMzZkMmUzOTVkMjE2NzciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jMmVkYWUyN2MxNDM0NDhlYTQxYjA0N2RlMTNkNGRiOC5zZXRDb250ZW50KGh0bWxfMWUxMjNkNzFkY2ExNDkyNGFiMzZkMmUzOTVkMjE2NzcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mNjdlNjUwYTcwZTU0YzNkYmUzYmVjMmFjMDBiM2QyYS5iaW5kUG9wdXAocG9wdXBfYzJlZGFlMjdjMTQzNDQ4ZWE0MWIwNDdkZTEzZDRkYjgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMmE4NjkyYmUzZTdkNGFkOTk5Mjk1ODEzMGExOTRlMGYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjYwMTYwMTE0MTAzLC0xMjIuNDAzNjQ0NjIwNDM5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTUwZmM5NGFiYjRmNDIyZjhkMWZlY2UwMWExZjlhNGMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZGRiZTQ4MjhlOTA4NGJiNTg5MDQ3Y2JmZjhkZmM5YmUgPSAkKCc8ZGl2IGlkPSJodG1sX2RkYmU0ODI4ZTkwODRiYjU4OTA0N2NiZmY4ZGZjOWJlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTUwZmM5NGFiYjRmNDIyZjhkMWZlY2UwMWExZjlhNGMuc2V0Q29udGVudChodG1sX2RkYmU0ODI4ZTkwODRiYjU4OTA0N2NiZmY4ZGZjOWJlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMmE4NjkyYmUzZTdkNGFkOTk5Mjk1ODEzMGExOTRlMGYuYmluZFBvcHVwKHBvcHVwXzU1MGZjOTRhYmI0ZjQyMmY4ZDFmZWNlMDFhMWY5YTRjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzY5MmZiY2JkNDhhYTRmNTU5NDViMTY1ZDQ4NDg4MGZiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzExMzQyZjQwZmM1NGEyOTliN2MwZGFjYWE1Yjg3OGYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfY2MyMTQ1MDVhNmM3NDRhNWIwYWJiOTljNjRhZmY0YWYgPSAkKCc8ZGl2IGlkPSJodG1sX2NjMjE0NTA1YTZjNzQ0YTViMGFiYjk5YzY0YWZmNGFmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83MTEzNDJmNDBmYzU0YTI5OWI3YzBkYWNhYTViODc4Zi5zZXRDb250ZW50KGh0bWxfY2MyMTQ1MDVhNmM3NDRhNWIwYWJiOTljNjRhZmY0YWYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82OTJmYmNiZDQ4YWE0ZjU1OTQ1YjE2NWQ0ODQ4ODBmYi5iaW5kUG9wdXAocG9wdXBfNzExMzQyZjQwZmM1NGEyOTliN2MwZGFjYWE1Yjg3OGYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNTUyYzMxNDE0OGZmNGEwMmIwZjQ5ZmUxNTJlNDMzMjYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzYyMzEwNDA0NzU4LC0xMjIuNDE0NzE0Mjk1NTc4OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wNTExYjEyZGViNmE0NWRhOWE4ZjQ0ZmY4NzBiZmYyZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xNGI3OTg2MTY3M2E0MGI3YWEyOTA2NzM1ZjZjZDY2ZCA9ICQoJzxkaXYgaWQ9Imh0bWxfMTRiNzk4NjE2NzNhNDBiN2FhMjkwNjczNWY2Y2Q2NmQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wNTExYjEyZGViNmE0NWRhOWE4ZjQ0ZmY4NzBiZmYyZS5zZXRDb250ZW50KGh0bWxfMTRiNzk4NjE2NzNhNDBiN2FhMjkwNjczNWY2Y2Q2NmQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81NTJjMzE0MTQ4ZmY0YTAyYjBmNDlmZTE1MmU0MzMyNi5iaW5kUG9wdXAocG9wdXBfMDUxMWIxMmRlYjZhNDVkYTlhOGY0NGZmODcwYmZmMmUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYjdlYWQyNGFlMTZlNDQ1N2I5YjM5MjU4NWE0M2YzYTUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Nzc1MTE4ODk1Njk1LC0xMjIuNDE4MDQ1NDUyNzY4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTJhODRlMGFkYWQzNDg4N2FlZjMzYzNhYzRkNjI5MDQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTZmMzhhZDE5Mzc5NDJkNDk5ZWRhMTU4MTg3MTgwNTIgPSAkKCc8ZGl2IGlkPSJodG1sXzE2ZjM4YWQxOTM3OTQyZDQ5OWVkYTE1ODE4NzE4MDUyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xMmE4NGUwYWRhZDM0ODg3YWVmMzNjM2FjNGQ2MjkwNC5zZXRDb250ZW50KGh0bWxfMTZmMzhhZDE5Mzc5NDJkNDk5ZWRhMTU4MTg3MTgwNTIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iN2VhZDI0YWUxNmU0NDU3YjliMzkyNTg1YTQzZjNhNS5iaW5kUG9wdXAocG9wdXBfMTJhODRlMGFkYWQzNDg4N2FlZjMzYzNhYzRkNjI5MDQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMjRhOWVlM2JmYjQ1NDZmOWIzYWNkYzVhODJjOTc5ODUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIwMjM4NDc4OTc1LC0xMjIuNDAxMTYxNTU1NjAyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDE4YzA5MTk0NjY0NDMyMDlkNDg1NTk4MTU2ZjhlNTYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGQwZTVkZTA0MzdjNDE1YWE3ZGU5NTY2YTQyZjRhNTMgPSAkKCc8ZGl2IGlkPSJodG1sXzRkMGU1ZGUwNDM3YzQxNWFhN2RlOTU2NmE0MmY0YTUzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDE4YzA5MTk0NjY0NDMyMDlkNDg1NTk4MTU2ZjhlNTYuc2V0Q29udGVudChodG1sXzRkMGU1ZGUwNDM3YzQxNWFhN2RlOTU2NmE0MmY0YTUzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMjRhOWVlM2JmYjQ1NDZmOWIzYWNkYzVhODJjOTc5ODUuYmluZFBvcHVwKHBvcHVwXzAxOGMwOTE5NDY2NDQzMjA5ZDQ4NTU5ODE1NmY4ZTU2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2JmYTQ1YjRjNjQ4NzQ5NjY4NDIzYmM1ZGI3YTdmOTdjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI3MDA1MzE5NjI5OTk1LC0xMjIuNDAzNDA4NjY5MTkxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTM2MTFiNDE5YWJhNGRiNzlkYTAxN2EzM2FhZjk1MjggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTBkZGE0OWQ2ZjgxNGM3YmIzYjVhNTFmYmFiNTgyNDAgPSAkKCc8ZGl2IGlkPSJodG1sX2UwZGRhNDlkNmY4MTRjN2JiM2I1YTUxZmJhYjU4MjQwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTM2MTFiNDE5YWJhNGRiNzlkYTAxN2EzM2FhZjk1Mjguc2V0Q29udGVudChodG1sX2UwZGRhNDlkNmY4MTRjN2JiM2I1YTUxZmJhYjU4MjQwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYmZhNDViNGM2NDg3NDk2Njg0MjNiYzVkYjdhN2Y5N2MuYmluZFBvcHVwKHBvcHVwXzEzNjExYjQxOWFiYTRkYjc5ZGEwMTdhMzNhYWY5NTI4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2VhNjY1YjRjZmYxZjQ5MGFhODA1MjYzMzI1YTUzM2RiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2M3YzdlNjg3MWU1ZDQ4NTM4Zjc4Y2U4NDgyNDU1MjA0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQyNzdiNDgzOTg0YjQ5YzFhNmQ5YTUwODM4NzU0MTIwID0gJCgnPGRpdiBpZD0iaHRtbF80Mjc3YjQ4Mzk4NGI0OWMxYTZkOWE1MDgzODc1NDEyMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jN2M3ZTY4NzFlNWQ0ODUzOGY3OGNlODQ4MjQ1NTIwNC5zZXRDb250ZW50KGh0bWxfNDI3N2I0ODM5ODRiNDljMWE2ZDlhNTA4Mzg3NTQxMjApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lYTY2NWI0Y2ZmMWY0OTBhYTgwNTI2MzMyNWE1MzNkYi5iaW5kUG9wdXAocG9wdXBfYzdjN2U2ODcxZTVkNDg1MzhmNzhjZTg0ODI0NTUyMDQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzA2N2FlODVhYjA1NGQ3Nzg1NDI5ZjBjZjUyNDMwMTIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTMwMTg2NTM3NDQ2MDQsLTEyMi40MTg1ODcxNzIyMTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83MDk0MzRmM2Q0NTQ0YWRiYmJjODNhNWM0MjkwODNkYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82ODkzYjZkNWM2NjM0YzRkOWFhOWMyMjc3NjhiMDQ0ZiA9ICQoJzxkaXYgaWQ9Imh0bWxfNjg5M2I2ZDVjNjYzNGM0ZDlhYTljMjI3NzY4YjA0NGYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzA5NDM0ZjNkNDU0NGFkYmJiYzgzYTVjNDI5MDgzZGIuc2V0Q29udGVudChodG1sXzY4OTNiNmQ1YzY2MzRjNGQ5YWE5YzIyNzc2OGIwNDRmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYzA2N2FlODVhYjA1NGQ3Nzg1NDI5ZjBjZjUyNDMwMTIuYmluZFBvcHVwKHBvcHVwXzcwOTQzNGYzZDQ1NDRhZGJiYmM4M2E1YzQyOTA4M2RiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2IyMTBmZmUzZDYwNDQyNjU4NTkxYzVmMzVjYzM3ZjgyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc0MDQxODM4NTA0MSwtMTIyLjQxNDM3MDYyNzQ5NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzExYjMxODE4NGRjMzRhNjFhMGRmMDg2ZmE2ZWEyMDI5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2IwNzY0OTU5YmU5MDRlYWE5MDE4OGE1MTQ1YzFlOWIwID0gJCgnPGRpdiBpZD0iaHRtbF9iMDc2NDk1OWJlOTA0ZWFhOTAxODhhNTE0NWMxZTliMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RlJBVUQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzExYjMxODE4NGRjMzRhNjFhMGRmMDg2ZmE2ZWEyMDI5LnNldENvbnRlbnQoaHRtbF9iMDc2NDk1OWJlOTA0ZWFhOTAxODhhNTE0NWMxZTliMCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2IyMTBmZmUzZDYwNDQyNjU4NTkxYzVmMzVjYzM3ZjgyLmJpbmRQb3B1cChwb3B1cF8xMWIzMTgxODRkYzM0YTYxYTBkZjA4NmZhNmVhMjAyOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8zZGQ0YmViMWYzMDQ0YjdkOWUzNTRhOGI3NzNiOGU1YiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5MDUzODk5MzcyNSwtMTIyLjQwMzkxNTY4MTU3MTAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzkzN2NiZmNlYzk1NGQwNjkyOTk4OWMyMDYzNDMxZjcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZWFlNTkzN2JjNDhhNDRiYjhkNGFhMDk2NDUwMmRjYjEgPSAkKCc8ZGl2IGlkPSJodG1sX2VhZTU5MzdiYzQ4YTQ0YmI4ZDRhYTA5NjQ1MDJkY2IxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83OTM3Y2JmY2VjOTU0ZDA2OTI5OTg5YzIwNjM0MzFmNy5zZXRDb250ZW50KGh0bWxfZWFlNTkzN2JjNDhhNDRiYjhkNGFhMDk2NDUwMmRjYjEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8zZGQ0YmViMWYzMDQ0YjdkOWUzNTRhOGI3NzNiOGU1Yi5iaW5kUG9wdXAocG9wdXBfNzkzN2NiZmNlYzk1NGQwNjkyOTk4OWMyMDYzNDMxZjcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYTg1ZDI1OWZlNzAwNGEwMmJmNzg5Mzg5NjA2YmNkNjcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODMwOTk4MjQ0NTkyMSwtMTIyLjQxOTE4MzA5NjM2Ml0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2UyOWMyNWM1MzcyZTQ3NDI4YmU1NjAyNDAyZWZhODE5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzVkZGU4YWJkMDE4NzQwNWM5MjEzYzRmNzNiMjI4OGZhID0gJCgnPGRpdiBpZD0iaHRtbF81ZGRlOGFiZDAxODc0MDVjOTIxM2M0ZjczYjIyODhmYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2UyOWMyNWM1MzcyZTQ3NDI4YmU1NjAyNDAyZWZhODE5LnNldENvbnRlbnQoaHRtbF81ZGRlOGFiZDAxODc0MDVjOTIxM2M0ZjczYjIyODhmYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2E4NWQyNTlmZTcwMDRhMDJiZjc4OTM4OTYwNmJjZDY3LmJpbmRQb3B1cChwb3B1cF9lMjljMjVjNTM3MmU0NzQyOGJlNTYwMjQwMmVmYTgxOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84MmI5YTliYjA2YWI0YjIyOTBkOGRmNTM4MWY4NjNlYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0MDczNjA1NDgzNTc5LC0xMjIuMzg4NzUzMDQ2OTk3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDk2ZDZmMGZjZDE3NGViOThiZTI5YzVhOTI3Mzc2MWUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzc3MmQ1NmJkNjViNDg0ZWJhN2EyZWEyOGJiZmQzYzIgPSAkKCc8ZGl2IGlkPSJodG1sX2M3NzJkNTZiZDY1YjQ4NGViYTdhMmVhMjhiYmZkM2MyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDk2ZDZmMGZjZDE3NGViOThiZTI5YzVhOTI3Mzc2MWUuc2V0Q29udGVudChodG1sX2M3NzJkNTZiZDY1YjQ4NGViYTdhMmVhMjhiYmZkM2MyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfODJiOWE5YmIwNmFiNGIyMjkwZDhkZjUzODFmODYzZWEuYmluZFBvcHVwKHBvcHVwXzQ5NmQ2ZjBmY2QxNzRlYjk4YmUyOWM1YTkyNzM3NjFlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2FlNDQ0Y2Y2ZjE2NDQ5YTBhZWJhNTU1N2M3NDgyNGIyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc0OTkxMjk0NDM2NiwtMTIyLjQzNzc5OTcwMzQ2OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2MwMmY3YWY4OGFjNDQ1NzY4ZGFhMDZlOGZhNjY0OWYyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RjODRhNTRmZmRkNzRmOThhZjhhNDFkOGI3ODhkNWFkID0gJCgnPGRpdiBpZD0iaHRtbF9kYzg0YTU0ZmZkZDc0Zjk4YWY4YTQxZDhiNzg4ZDVhZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzAyZjdhZjg4YWM0NDU3NjhkYWEwNmU4ZmE2NjQ5ZjIuc2V0Q29udGVudChodG1sX2RjODRhNTRmZmRkNzRmOThhZjhhNDFkOGI3ODhkNWFkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYWU0NDRjZjZmMTY0NDlhMGFlYmE1NTU3Yzc0ODI0YjIuYmluZFBvcHVwKHBvcHVwX2MwMmY3YWY4OGFjNDQ1NzY4ZGFhMDZlOGZhNjY0OWYyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzRhZTQyNDIwMDc3MzQyMzZhOWFiODFkOWFkNzY0Zjc0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3MDkwMjc0MzY2OSwtMTIyLjQyMTMzMjY4NDYzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzFmNDhhNTZlZjM5ODQ3OWQ4NWQxOTk3MDJmNjBjMTkwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM4ZmRiN2Y1ZmIwYTRiMTk4MzQzMzhiNjk2Y2M3OTYzID0gJCgnPGRpdiBpZD0iaHRtbF8zOGZkYjdmNWZiMGE0YjE5ODM0MzM4YjY5NmNjNzk2MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFmNDhhNTZlZjM5ODQ3OWQ4NWQxOTk3MDJmNjBjMTkwLnNldENvbnRlbnQoaHRtbF8zOGZkYjdmNWZiMGE0YjE5ODM0MzM4YjY5NmNjNzk2Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzRhZTQyNDIwMDc3MzQyMzZhOWFiODFkOWFkNzY0Zjc0LmJpbmRQb3B1cChwb3B1cF8xZjQ4YTU2ZWYzOTg0NzlkODVkMTk5NzAyZjYwYzE5MCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80MzZjZjRhMGU1ZjA0ZmUyYmNiMzRiODQzMjc1MTAxYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzA5MDI3NDM2NjksLTEyMi40MjEzMzI2ODQ2MzNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kMmZhNGRlZDBmOWE0NGUwYjIwOTA0N2UzZGEyYjc4NSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iZjVmMjZhODZjM2Q0OTAxODUzYmMyOGUyYmE5YWFkMCA9ICQoJzxkaXYgaWQ9Imh0bWxfYmY1ZjI2YTg2YzNkNDkwMTg1M2JjMjhlMmJhOWFhZDAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kMmZhNGRlZDBmOWE0NGUwYjIwOTA0N2UzZGEyYjc4NS5zZXRDb250ZW50KGh0bWxfYmY1ZjI2YTg2YzNkNDkwMTg1M2JjMjhlMmJhOWFhZDApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80MzZjZjRhMGU1ZjA0ZmUyYmNiMzRiODQzMjc1MTAxYS5iaW5kUG9wdXAocG9wdXBfZDJmYTRkZWQwZjlhNDRlMGIyMDkwNDdlM2RhMmI3ODUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDczMjljYjZmMDUyNGI2M2EzNWExZjZhZjYxOTM4ODkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOGExNWZlYzIzYTY2NDhhNjgyYjU4NjdhOTkzNGM0ZTUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZmIyMGQxNTBjMjEwNGQ4MDg4ZWNiYTI5N2RjYzQ0NzQgPSAkKCc8ZGl2IGlkPSJodG1sX2ZiMjBkMTUwYzIxMDRkODA4OGVjYmEyOTdkY2M0NDc0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOGExNWZlYzIzYTY2NDhhNjgyYjU4NjdhOTkzNGM0ZTUuc2V0Q29udGVudChodG1sX2ZiMjBkMTUwYzIxMDRkODA4OGVjYmEyOTdkY2M0NDc0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZDczMjljYjZmMDUyNGI2M2EzNWExZjZhZjYxOTM4ODkuYmluZFBvcHVwKHBvcHVwXzhhMTVmZWMyM2E2NjQ4YTY4MmI1ODY3YTk5MzRjNGU1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzg3YmQ0NDU0OTVjODQ5NjRhOWM0M2M3MDFlNjRjZWUyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwMDM3OTk5NTEyNzk1LC0xMjIuNDA0NTk0MTQwNjM0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTQ0MDVkMWViYjVjNDcxNzliODMxNDdhNGE3Y2IyMTEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNWU5NzdkMTg1ZjI1NDc2ZTlkYjc2OWYwOTNlZjBiYjUgPSAkKCc8ZGl2IGlkPSJodG1sXzVlOTc3ZDE4NWYyNTQ3NmU5ZGI3NjlmMDkzZWYwYmI1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzk0NDA1ZDFlYmI1YzQ3MTc5YjgzMTQ3YTRhN2NiMjExLnNldENvbnRlbnQoaHRtbF81ZTk3N2QxODVmMjU0NzZlOWRiNzY5ZjA5M2VmMGJiNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzg3YmQ0NDU0OTVjODQ5NjRhOWM0M2M3MDFlNjRjZWUyLmJpbmRQb3B1cChwb3B1cF85NDQwNWQxZWJiNWM0NzE3OWI4MzE0N2E0YTdjYjIxMSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9lNTY2ZWVjMDBmOTk0ODhmYjI0NWNjODMzOWU4MjBjNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5NTMzMzgyNjc0MzYsLTEyMi4zOTczNzM3NDAwNjZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kMzZlZTY2NDY2M2U0ZjhmOTBlZGVkMmU4ZDEwMzA0OCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85Y2U4ZGY4MDU1MTM0MTdjOTUwMzcyYTgxMmJiMWU2MCA9ICQoJzxkaXYgaWQ9Imh0bWxfOWNlOGRmODA1NTEzNDE3Yzk1MDM3MmE4MTJiYjFlNjAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZDM2ZWU2NjQ2NjNlNGY4ZjkwZWRlZDJlOGQxMDMwNDguc2V0Q29udGVudChodG1sXzljZThkZjgwNTUxMzQxN2M5NTAzNzJhODEyYmIxZTYwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZTU2NmVlYzAwZjk5NDg4ZmIyNDVjYzgzMzllODIwYzUuYmluZFBvcHVwKHBvcHVwX2QzNmVlNjY0NjYzZTRmOGY5MGVkZWQyZThkMTAzMDQ4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzA3ZDlhNTAyZjc1ZDQwZjA4M2M1MzE3NGRjMDczZDZmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3NTE1ODc0MTYyMjk1LC0xMjIuNDA3NDM0OTg5NTIzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZmRhZjNjZjgyMjEyNDc2YWJjNDNhOTM5YzczZjA5MjAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGNjZjU1YmY0YWI5NGFhN2ExOTYzZTk1NmI0MDY4YTAgPSAkKCc8ZGl2IGlkPSJodG1sXzRjY2Y1NWJmNGFiOTRhYTdhMTk2M2U5NTZiNDA2OGEwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZmRhZjNjZjgyMjEyNDc2YWJjNDNhOTM5YzczZjA5MjAuc2V0Q29udGVudChodG1sXzRjY2Y1NWJmNGFiOTRhYTdhMTk2M2U5NTZiNDA2OGEwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMDdkOWE1MDJmNzVkNDBmMDgzYzUzMTc0ZGMwNzNkNmYuYmluZFBvcHVwKHBvcHVwX2ZkYWYzY2Y4MjIxMjQ3NmFiYzQzYTkzOWM3M2YwOTIwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2ZkMDJhODE0Y2U1YzQwZjM5NGI3ZTAyZjgwODA1OWU0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzE5ZTNjNzI3YTE4YTQ0MTg4OTdlNTRkMDRiM2VhMDNkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzMwYWI1ZGY4N2JkMTRhZTM5YzMyZWEyOWQ1MTFiMTMyID0gJCgnPGRpdiBpZD0iaHRtbF8zMGFiNWRmODdiZDE0YWUzOWMzMmVhMjlkNTExYjEzMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UFJPU1RJVFVUSU9OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xOWUzYzcyN2ExOGE0NDE4ODk3ZTU0ZDA0YjNlYTAzZC5zZXRDb250ZW50KGh0bWxfMzBhYjVkZjg3YmQxNGFlMzljMzJlYTI5ZDUxMWIxMzIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mZDAyYTgxNGNlNWM0MGYzOTRiN2UwMmY4MDgwNTllNC5iaW5kUG9wdXAocG9wdXBfMTllM2M3MjdhMThhNDQxODg5N2U1NGQwNGIzZWEwM2QpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNGFhYTRkYTNkOTIwNDViYmE0NjMxMjQ0YjQ4MDE5NDQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Nzg1MjMzNzc2MDMyLC0xMjIuNDAzNDY0MDgwMDMzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODJjOWZmZTMwN2RhNDdlMWI1MjAzZGI5OWYyYTI0NjQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjI3YTZiNjM2OTQ5NDYwMGIyNjA2MDg1ZjUyYmU1NjMgPSAkKCc8ZGl2IGlkPSJodG1sXzIyN2E2YjYzNjk0OTQ2MDBiMjYwNjA4NWY1MmJlNTYzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODJjOWZmZTMwN2RhNDdlMWI1MjAzZGI5OWYyYTI0NjQuc2V0Q29udGVudChodG1sXzIyN2E2YjYzNjk0OTQ2MDBiMjYwNjA4NWY1MmJlNTYzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNGFhYTRkYTNkOTIwNDViYmE0NjMxMjQ0YjQ4MDE5NDQuYmluZFBvcHVwKHBvcHVwXzgyYzlmZmUzMDdkYTQ3ZTFiNTIwM2RiOTlmMmEyNDY0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2QyNDU0ZjFhYWY4ZjQxOWQ4ZDZlNDlmMzlhYTMxMTdjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jZTFkOTI3OGQzOTY0ZTA2ODRjZDEyNWMzYjZiNGU4YyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81Mjk4N2I0ZTM3ZGY0ZWEzYmIwMTNkNzYwMzNmNjNmZCA9ICQoJzxkaXYgaWQ9Imh0bWxfNTI5ODdiNGUzN2RmNGVhM2JiMDEzZDc2MDMzZjYzZmQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfY2UxZDkyNzhkMzk2NGUwNjg0Y2QxMjVjM2I2YjRlOGMuc2V0Q29udGVudChodG1sXzUyOTg3YjRlMzdkZjRlYTNiYjAxM2Q3NjAzM2Y2M2ZkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZDI0NTRmMWFhZjhmNDE5ZDhkNmU0OWYzOWFhMzExN2MuYmluZFBvcHVwKHBvcHVwX2NlMWQ5Mjc4ZDM5NjRlMDY4NGNkMTI1YzNiNmI0ZThjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzNkOGRlYzgwZTIwMDRhMmU5NWUwNWJmMDYwMjEzNmRmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgwNTI3NTc4NTA5LC0xMjIuMzk2ODQ5MDE1MTcyMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84ZTg2NmY2OTUyOTI0OGFhYTVmYmRhMmMzZDNhMzk4MCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83M2FiMmRlNTNjMGM0OTAwODhkZWE1NGE5ZmJmZGFkZSA9ICQoJzxkaXYgaWQ9Imh0bWxfNzNhYjJkZTUzYzBjNDkwMDg4ZGVhNTRhOWZiZmRhZGUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkRSVUcvTkFSQ09USUM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzhlODY2ZjY5NTI5MjQ4YWFhNWZiZGEyYzNkM2EzOTgwLnNldENvbnRlbnQoaHRtbF83M2FiMmRlNTNjMGM0OTAwODhkZWE1NGE5ZmJmZGFkZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzNkOGRlYzgwZTIwMDRhMmU5NWUwNWJmMDYwMjEzNmRmLmJpbmRQb3B1cChwb3B1cF84ZTg2NmY2OTUyOTI0OGFhYTVmYmRhMmMzZDNhMzk4MCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jODZlNzc3NjBkZjM0OTYyODE2N2UxODUyNzQ1OWZiMiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2U4NWIyYWY0NDUxNDk0Zjg4Mjc3NjRlYWFhZTlmOTQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDc5NjdkNDgxNGIwNDg1Mjg3ODE5NDc5MmI1NzZiMmUgPSAkKCc8ZGl2IGlkPSJodG1sXzQ3OTY3ZDQ4MTRiMDQ4NTI4NzgxOTQ3OTJiNTc2YjJlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfN2U4NWIyYWY0NDUxNDk0Zjg4Mjc3NjRlYWFhZTlmOTQuc2V0Q29udGVudChodG1sXzQ3OTY3ZDQ4MTRiMDQ4NTI4NzgxOTQ3OTJiNTc2YjJlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYzg2ZTc3NzYwZGYzNDk2MjgxNjdlMTg1Mjc0NTlmYjIuYmluZFBvcHVwKHBvcHVwXzdlODViMmFmNDQ1MTQ5NGY4ODI3NzY0ZWFhYWU5Zjk0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzhmM2NmZDg3MTFhMzQ4OTA5MmJiYjJiZDkyNGEyMWVhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzA2NDIwZGEzMzgyNGQ5M2IxNGEyOWJlY2M4ZTZiMTcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTU0Y2EwMmFjNTNiNDQ3MWJlYTMwOGUyNjZjMmZmYzQgPSAkKCc8ZGl2IGlkPSJodG1sX2U1NGNhMDJhYzUzYjQ0NzFiZWEzMDhlMjY2YzJmZmM0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jMDY0MjBkYTMzODI0ZDkzYjE0YTI5YmVjYzhlNmIxNy5zZXRDb250ZW50KGh0bWxfZTU0Y2EwMmFjNTNiNDQ3MWJlYTMwOGUyNjZjMmZmYzQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84ZjNjZmQ4NzExYTM0ODkwOTJiYmIyYmQ5MjRhMjFlYS5iaW5kUG9wdXAocG9wdXBfYzA2NDIwZGEzMzgyNGQ5M2IxNGEyOWJlY2M4ZTZiMTcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDg4YzkwMzliMmI0NDU1YTlkYzI0MDk0NTg0MDZkOWIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODVlN2NjZmY0ZmQ4NGU2MGJiODczZGM4NTNiNzFlODYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjBiNzFlODEzYjY3NGFlNmI4YzAzNzE0MTJlMDBhZGMgPSAkKCc8ZGl2IGlkPSJodG1sXzYwYjcxZTgxM2I2NzRhZTZiOGMwMzcxNDEyZTAwYWRjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODVlN2NjZmY0ZmQ4NGU2MGJiODczZGM4NTNiNzFlODYuc2V0Q29udGVudChodG1sXzYwYjcxZTgxM2I2NzRhZTZiOGMwMzcxNDEyZTAwYWRjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZDg4YzkwMzliMmI0NDU1YTlkYzI0MDk0NTg0MDZkOWIuYmluZFBvcHVwKHBvcHVwXzg1ZTdjY2ZmNGZkODRlNjBiYjg3M2RjODUzYjcxZTg2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2E5YTg1M2Y2MGJhMzQzMDZiZjA3ZWZjMjRmZjEwY2NlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg4MDA2NTMyNDM5MjA1LC0xMjIuMzk5ODAyMTQ1Nzk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfY2FjMjIwOTQ1MWE0NDNkYzkzMTNjNDM4OGZjMjQwZWEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjI1MDFmMjljMWI3NDEyMGJhMTg2NWY0NTRkNDQ2YjYgPSAkKCc8ZGl2IGlkPSJodG1sXzYyNTAxZjI5YzFiNzQxMjBiYTE4NjVmNDU0ZDQ0NmI2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jYWMyMjA5NDUxYTQ0M2RjOTMxM2M0Mzg4ZmMyNDBlYS5zZXRDb250ZW50KGh0bWxfNjI1MDFmMjljMWI3NDEyMGJhMTg2NWY0NTRkNDQ2YjYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hOWE4NTNmNjBiYTM0MzA2YmYwN2VmYzI0ZmYxMGNjZS5iaW5kUG9wdXAocG9wdXBfY2FjMjIwOTQ1MWE0NDNkYzkzMTNjNDM4OGZjMjQwZWEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNWMzZjBiMDE4OTI2NGJlOWEyMzM3NzdiOWYwNzk0NTMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RjMWUxMTEzNWQ0ZTRlMGZhNTc3ZjIwYjg5OWEwMzNkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzBmYzU1YzZkZmVkZTRkMmFiN2Q5ZGRlODNlYzU0NDUyID0gJCgnPGRpdiBpZD0iaHRtbF8wZmM1NWM2ZGZlZGU0ZDJhYjdkOWRkZTgzZWM1NDQ1MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U0VDT05EQVJZIENPREVTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kYzFlMTExMzVkNGU0ZTBmYTU3N2YyMGI4OTlhMDMzZC5zZXRDb250ZW50KGh0bWxfMGZjNTVjNmRmZWRlNGQyYWI3ZDlkZGU4M2VjNTQ0NTIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81YzNmMGIwMTg5MjY0YmU5YTIzMzc3N2I5ZjA3OTQ1My5iaW5kUG9wdXAocG9wdXBfZGMxZTExMTM1ZDRlNGUwZmE1NzdmMjBiODk5YTAzM2QpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMjRhOGY4ZWEyMDU2NDgyYmEzOGRmZWU3Y2RhYjc3NjcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzBhYjJiNzg5ZWZkZjQyOTI5ZDJlYTQ4MzkzNTNjMmRiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzdlN2I4OWYzY2Y5ODRmNWNiZjM3MjgxYWRjMzM3NzliID0gJCgnPGRpdiBpZD0iaHRtbF83ZTdiODlmM2NmOTg0ZjVjYmYzNzI4MWFkYzMzNzc5YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U1VTUElDSU9VUyBPQ0M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzBhYjJiNzg5ZWZkZjQyOTI5ZDJlYTQ4MzkzNTNjMmRiLnNldENvbnRlbnQoaHRtbF83ZTdiODlmM2NmOTg0ZjVjYmYzNzI4MWFkYzMzNzc5Yik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzI0YThmOGVhMjA1NjQ4MmJhMzhkZmVlN2NkYWI3NzY3LmJpbmRQb3B1cChwb3B1cF8wYWIyYjc4OWVmZGY0MjkyOWQyZWE0ODM5MzUzYzJkYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xOTFkNzczZmQ2ZGU0MTZmODk4NDhjYjAyNWE1OWNiOSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMzk3NDgyNDE2MDksLTEyMi4zOTQ5Mjg0NzU4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDUxNWY1ZjhjMmEyNDUxNDkwODliNGVhODE4OWExN2UgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGY4MGIyNjkwYTNiNDU5YTk4YmMzMGJjYmVlNGY4ZmUgPSAkKCc8ZGl2IGlkPSJodG1sXzRmODBiMjY5MGEzYjQ1OWE5OGJjMzBiY2JlZTRmOGZlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDUxNWY1ZjhjMmEyNDUxNDkwODliNGVhODE4OWExN2Uuc2V0Q29udGVudChodG1sXzRmODBiMjY5MGEzYjQ1OWE5OGJjMzBiY2JlZTRmOGZlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMTkxZDc3M2ZkNmRlNDE2Zjg5ODQ4Y2IwMjVhNTljYjkuYmluZFBvcHVwKHBvcHVwXzA1MTVmNWY4YzJhMjQ1MTQ5MDg5YjRlYTgxODlhMTdlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzViNDMyODU2ODkyNzRmNDc5MDc4ZGE1MzNlMWNhZGQ4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg4MzIzNTQ0OTkwNCwtMTIyLjQxMTg1NzAzMjU0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOGM2OTQ4Zjg2ZWZkNDljM2IxNjM1ZTk1YmI5MmI3NzggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMGMwOGVjZDMxZjYwNDhiMmE2Njc4MDdjMTE4YjQyYjQgPSAkKCc8ZGl2IGlkPSJodG1sXzBjMDhlY2QzMWY2MDQ4YjJhNjY3ODA3YzExOGI0MmI0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84YzY5NDhmODZlZmQ0OWMzYjE2MzVlOTViYjkyYjc3OC5zZXRDb250ZW50KGh0bWxfMGMwOGVjZDMxZjYwNDhiMmE2Njc4MDdjMTE4YjQyYjQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81YjQzMjg1Njg5Mjc0ZjQ3OTA3OGRhNTMzZTFjYWRkOC5iaW5kUG9wdXAocG9wdXBfOGM2OTQ4Zjg2ZWZkNDljM2IxNjM1ZTk1YmI5MmI3NzgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZGYyMTkwZWM1ZWZiNDNhZmIxNGM0YjUxYmIwMDY2NGEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTU5OTc3MzM5ODU2LC0xMjIuNDA5NDM1NjE3MTA2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2I4ZTI1OTU0MGViNDljNmJhMmE5YmNhOTQ2N2U3Y2MgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGQ5YWFhNDUyM2U0NDI0NDg1ZWIxODI0MjE5ZjAxZTEgPSAkKCc8ZGl2IGlkPSJodG1sXzRkOWFhYTQ1MjNlNDQyNDQ4NWViMTgyNDIxOWYwMWUxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfN2I4ZTI1OTU0MGViNDljNmJhMmE5YmNhOTQ2N2U3Y2Muc2V0Q29udGVudChodG1sXzRkOWFhYTQ1MjNlNDQyNDQ4NWViMTgyNDIxOWYwMWUxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZGYyMTkwZWM1ZWZiNDNhZmIxNGM0YjUxYmIwMDY2NGEuYmluZFBvcHVwKHBvcHVwXzdiOGUyNTk1NDBlYjQ5YzZiYTJhOWJjYTk0NjdlN2NjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2ViZGM4ZmFhOGZiODRjYWY4NmI0NGZmM2E5MDlmNTA1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3MDc5ODE0NDQ0MywtMTIyLjQyNTg4MzM1ODE0OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzFhZTBlNDEyMjkyZjQzZmJiYmQwYjE3NzE1NGRjZTZiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc4ZWFhZTM2NmQ5NjRkYjU4ZjUyOGYzODA0YjI2MGNiID0gJCgnPGRpdiBpZD0iaHRtbF83OGVhYWUzNjZkOTY0ZGI1OGY1MjhmMzgwNGIyNjBjYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xYWUwZTQxMjI5MmY0M2ZiYmJkMGIxNzcxNTRkY2U2Yi5zZXRDb250ZW50KGh0bWxfNzhlYWFlMzY2ZDk2NGRiNThmNTI4ZjM4MDRiMjYwY2IpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lYmRjOGZhYThmYjg0Y2FmODZiNDRmZjNhOTA5ZjUwNS5iaW5kUG9wdXAocG9wdXBfMWFlMGU0MTIyOTJmNDNmYmJiZDBiMTc3MTU0ZGNlNmIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMjVkZmE1MWY3OTE0NDZkN2I4ODA4ZmE4MTkxYzg1N2EgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzYwMzc0NDY2ODYyMDQsLTEyMi40MTUxMjY1NDMwMDEwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzBiYmQ4ZmY1MDJiODQ0OTRiZjQ4NGU0YzAyYWMyYWY5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzk5NmRiMzk0MzUzMjRiYWViNDlkZjA3YzA2ZDZiNWNhID0gJCgnPGRpdiBpZD0iaHRtbF85OTZkYjM5NDM1MzI0YmFlYjQ5ZGYwN2MwNmQ2YjVjYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wYmJkOGZmNTAyYjg0NDk0YmY0ODRlNGMwMmFjMmFmOS5zZXRDb250ZW50KGh0bWxfOTk2ZGIzOTQzNTMyNGJhZWI0OWRmMDdjMDZkNmI1Y2EpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yNWRmYTUxZjc5MTQ0NmQ3Yjg4MDhmYTgxOTFjODU3YS5iaW5kUG9wdXAocG9wdXBfMGJiZDhmZjUwMmI4NDQ5NGJmNDg0ZTRjMDJhYzJhZjkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMWQ2MzVlMjJiYTFkNGYwOTlmNDM4NGRhNjYxNWI0MzEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTI3Njc4ODQ4MjEsLTEyMi40MzE5MjgwMTEwODldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mYWIxZmQyNTczMWY0MTUwYTAwNTFmMTAzMmE0MGUzZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jZjQ2MDVkMzc2NDM0ZWZlOGZkYzI4ZDE5OThhYjFlYiA9ICQoJzxkaXYgaWQ9Imh0bWxfY2Y0NjA1ZDM3NjQzNGVmZThmZGMyOGQxOTk4YWIxZWIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mYWIxZmQyNTczMWY0MTUwYTAwNTFmMTAzMmE0MGUzZS5zZXRDb250ZW50KGh0bWxfY2Y0NjA1ZDM3NjQzNGVmZThmZGMyOGQxOTk4YWIxZWIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8xZDYzNWUyMmJhMWQ0ZjA5OWY0Mzg0ZGE2NjE1YjQzMS5iaW5kUG9wdXAocG9wdXBfZmFiMWZkMjU3MzFmNDE1MGEwMDUxZjEwMzJhNDBlM2UpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMDE5YzJlZGVhYjc5NDI1ZWFiM2E5YjAxYmI0OTdmZWQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODk1NzEwMjU1ODYzLC0xMjIuNDAyMTYzNzEzNjE4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTFiMDY5ZmY0YjBjNGQ2M2IwOGMyYjYxYTZkOTM3M2UgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDhjYTNkODIzOWM3NDVkMWE1ZDFhYzU0Yjc2YmVkNzAgPSAkKCc8ZGl2IGlkPSJodG1sXzQ4Y2EzZDgyMzljNzQ1ZDFhNWQxYWM1NGI3NmJlZDcwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVOS0VOTkVTUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTFiMDY5ZmY0YjBjNGQ2M2IwOGMyYjYxYTZkOTM3M2Uuc2V0Q29udGVudChodG1sXzQ4Y2EzZDgyMzljNzQ1ZDFhNWQxYWM1NGI3NmJlZDcwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMDE5YzJlZGVhYjc5NDI1ZWFiM2E5YjAxYmI0OTdmZWQuYmluZFBvcHVwKHBvcHVwXzExYjA2OWZmNGIwYzRkNjNiMDhjMmI2MWE2ZDkzNzNlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzVhNmMzNWVhNDA4ZjQ4NGRiZTcxOWEwNDZiYzIxNmIxID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Y0ZjMzOTZlYTllOTQ1NzU4YjI3N2QyZDkxNjVlMmE0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U5Y2M3ZGJiMTc1YTRiM2Y5Yjc4M2U3NWYzNmNmY2M4ID0gJCgnPGRpdiBpZD0iaHRtbF9lOWNjN2RiYjE3NWE0YjNmOWI3ODNlNzVmMzZjZmNjOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Y0ZjMzOTZlYTllOTQ1NzU4YjI3N2QyZDkxNjVlMmE0LnNldENvbnRlbnQoaHRtbF9lOWNjN2RiYjE3NWE0YjNmOWI3ODNlNzVmMzZjZmNjOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzVhNmMzNWVhNDA4ZjQ4NGRiZTcxOWEwNDZiYzIxNmIxLmJpbmRQb3B1cChwb3B1cF9mNGYzMzk2ZWE5ZTk0NTc1OGIyNzdkMmQ5MTY1ZTJhNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xYjFlNzRmY2FhZDU0ZjdiYWEzMGYwNTIzNjlkZjM5NyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MzgzNjU1NjUzNDc5NCwtMTIyLjQxMzc5MDk3Mjc4MDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjliNWE5ZTZkMjI5NGY1NmE5MDgwYTdiNjE1Y2NhYWEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjJjMjg1NzFkYmFiNDdjMmJjY2IwMGZiMDA2YWYyNzggPSAkKCc8ZGl2IGlkPSJodG1sXzYyYzI4NTcxZGJhYjQ3YzJiY2NiMDBmYjAwNmFmMjc4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WQU5EQUxJU008L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2I5YjVhOWU2ZDIyOTRmNTZhOTA4MGE3YjYxNWNjYWFhLnNldENvbnRlbnQoaHRtbF82MmMyODU3MWRiYWI0N2MyYmNjYjAwZmIwMDZhZjI3OCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzFiMWU3NGZjYWFkNTRmN2JhYTMwZjA1MjM2OWRmMzk3LmJpbmRQb3B1cChwb3B1cF9iOWI1YTllNmQyMjk0ZjU2YTkwODBhN2I2MTVjY2FhYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wYTFlM2U2MGRhYmI0NGIwYjdlN2I5MmQzZGYyM2I1MyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yMGI0MTYwNTgzMDU0OTdmYmQxNWRlZTY0YjdkYzlmNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lOWMxZDdkYzQwMTM0N2Y4YjQ0N2Q3OTc1MGQ4YjE1YyA9ICQoJzxkaXYgaWQ9Imh0bWxfZTljMWQ3ZGM0MDEzNDdmOGI0NDdkNzk3NTBkOGIxNWMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yMGI0MTYwNTgzMDU0OTdmYmQxNWRlZTY0YjdkYzlmNC5zZXRDb250ZW50KGh0bWxfZTljMWQ3ZGM0MDEzNDdmOGI0NDdkNzk3NTBkOGIxNWMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wYTFlM2U2MGRhYmI0NGIwYjdlN2I5MmQzZGYyM2I1My5iaW5kUG9wdXAocG9wdXBfMjBiNDE2MDU4MzA1NDk3ZmJkMTVkZWU2NGI3ZGM5ZjQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMmE4NDk5MmYwMzc2NDJhNThmM2MyMGQ1MjQ3ODVmODggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzczNjIzNjA1MjEyOTYsLTEyMi40MjIwNjcxODQ5MzddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81M2MwMDE3NGE2ZWM0ZjhjYjNmZTU2N2MyMDZjNTUzZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82ZGU2NjNjODQ2MTY0MDJhYThjNmRjNGQ5NTk4NDA2ZCA9ICQoJzxkaXYgaWQ9Imh0bWxfNmRlNjYzYzg0NjE2NDAyYWE4YzZkYzRkOTU5ODQwNmQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNFQ09OREFSWSBDT0RFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTNjMDAxNzRhNmVjNGY4Y2IzZmU1NjdjMjA2YzU1M2Quc2V0Q29udGVudChodG1sXzZkZTY2M2M4NDYxNjQwMmFhOGM2ZGM0ZDk1OTg0MDZkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMmE4NDk5MmYwMzc2NDJhNThmM2MyMGQ1MjQ3ODVmODguYmluZFBvcHVwKHBvcHVwXzUzYzAwMTc0YTZlYzRmOGNiM2ZlNTY3YzIwNmM1NTNkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2U2YzczOTI4YmE1NjRlMzlhZjFjZGQzZjNiM2E4OWQ1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTVkZmQ1YzY2OWRlNGMxN2IzNWJmZmNjNzRkYzc1OTAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjUwZmY0YzE2YWNkNDkwMzhhYTY4MjIxZDRiMGFiZmYgPSAkKCc8ZGl2IGlkPSJodG1sXzY1MGZmNGMxNmFjZDQ5MDM4YWE2ODIyMWQ0YjBhYmZmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WQU5EQUxJU008L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzE1ZGZkNWM2NjlkZTRjMTdiMzViZmZjYzc0ZGM3NTkwLnNldENvbnRlbnQoaHRtbF82NTBmZjRjMTZhY2Q0OTAzOGFhNjgyMjFkNGIwYWJmZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2U2YzczOTI4YmE1NjRlMzlhZjFjZGQzZjNiM2E4OWQ1LmJpbmRQb3B1cChwb3B1cF8xNWRmZDVjNjY5ZGU0YzE3YjM1YmZmY2M3NGRjNzU5MCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jMGQ5ZTg3ODIwMzM0ZmVhYmJmN2U1ZDk5ZGZhMTMzYiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTk5ODgzMjM3OTc5NiwtMTIyLjQxMTc0NzM3MTkyNF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzZiYTBkNGFkNzQwNTQ3YzRhZjAyNTAwZGEzMjNmMTczID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzI1YjJlMTg3MTM0NTQwMGJiMWY4OGQyODI4YzRhYzA5ID0gJCgnPGRpdiBpZD0iaHRtbF8yNWIyZTE4NzEzNDU0MDBiYjFmODhkMjgyOGM0YWMwOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U1VTUElDSU9VUyBPQ0M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZiYTBkNGFkNzQwNTQ3YzRhZjAyNTAwZGEzMjNmMTczLnNldENvbnRlbnQoaHRtbF8yNWIyZTE4NzEzNDU0MDBiYjFmODhkMjgyOGM0YWMwOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2MwZDllODc4MjAzMzRmZWFiYmY3ZTVkOTlkZmExMzNiLmJpbmRQb3B1cChwb3B1cF82YmEwZDRhZDc0MDU0N2M0YWYwMjUwMGRhMzIzZjE3Myk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jZTYwZDJmZjUzZjY0OTY2YmE1MjA0NDViN2FlNTBmZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2NlNjY2MGNhYzRlZTRmZGJhMjg3M2Y1MTM4ODBkNGM1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2I5ZTljNDI3NDU5YzQ3ZmY4ZDkzYTYxNjBhZmIyYjg5ID0gJCgnPGRpdiBpZD0iaHRtbF9iOWU5YzQyNzQ1OWM0N2ZmOGQ5M2E2MTYwYWZiMmI4OSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NlNjY2MGNhYzRlZTRmZGJhMjg3M2Y1MTM4ODBkNGM1LnNldENvbnRlbnQoaHRtbF9iOWU5YzQyNzQ1OWM0N2ZmOGQ5M2E2MTYwYWZiMmI4OSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2NlNjBkMmZmNTNmNjQ5NjZiYTUyMDQ0NWI3YWU1MGZlLmJpbmRQb3B1cChwb3B1cF9jZTY2NjBjYWM0ZWU0ZmRiYTI4NzNmNTEzODgwZDRjNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8zODUzOGI2NjM4NTE0MzM3ODdjZGQxN2U2NjA4ZDA0NiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTAyMjY2MjI3ODYsLTEyMi40MTE5ODc2NDM1OTUwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzFjYWUzY2EyNzM2NDRkOTViN2JjZDQzOTRhZTRhYzhiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQxYWE2YWRmMmNkNjRiY2FhYjNmODZlNjY0OTFlOTdjID0gJCgnPGRpdiBpZD0iaHRtbF80MWFhNmFkZjJjZDY0YmNhYWIzZjg2ZTY2NDkxZTk3YyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xY2FlM2NhMjczNjQ0ZDk1YjdiY2Q0Mzk0YWU0YWM4Yi5zZXRDb250ZW50KGh0bWxfNDFhYTZhZGYyY2Q2NGJjYWFiM2Y4NmU2NjQ5MWU5N2MpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8zODUzOGI2NjM4NTE0MzM3ODdjZGQxN2U2NjA4ZDA0Ni5iaW5kUG9wdXAocG9wdXBfMWNhZTNjYTI3MzY0NGQ5NWI3YmNkNDM5NGFlNGFjOGIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzQyMzMxN2QwZDQ0NDAyZmFmZjJmNTMwY2NkYzA1MDggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ2MjA2NDkxMDY0OTUsLTEyMi41MDAzODA0Mjc5MTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yZDAzNDA3NTc1ZGQ0Y2IyOWIwZmE2NzYyZDFmODdkYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82OTgzZGI3OTExNjY0NTU2YmU0MWQ1ZGUyNGJmMTc0NiA9ICQoJzxkaXYgaWQ9Imh0bWxfNjk4M2RiNzkxMTY2NDU1NmJlNDFkNWRlMjRiZjE3NDYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yZDAzNDA3NTc1ZGQ0Y2IyOWIwZmE2NzYyZDFmODdkYi5zZXRDb250ZW50KGh0bWxfNjk4M2RiNzkxMTY2NDU1NmJlNDFkNWRlMjRiZjE3NDYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83NDIzMzE3ZDBkNDQ0MDJmYWZmMmY1MzBjY2RjMDUwOC5iaW5kUG9wdXAocG9wdXBfMmQwMzQwNzU3NWRkNGNiMjliMGZhNjc2MmQxZjg3ZGIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNDYwZTJiNGQ4ZmNlNDdkYmE5ODQ4MTUxNTY2NjhiZTkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzUxOTE4MjY3MjE3LC0xMjIuNDY2NTU4NzgwNjgzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfNDlkNDQwNmRmMDU3NDdkMDgzMjA4NjIxM2YzN2ZhYTkpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNWIwYTc2YjEzMWZiNGM0MGE4N2RhODk5NmE4M2I4MWEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDIzOGRmYTcwYThhNGI2ZmJmMmYzYmE4NmIxNmQzZTEgPSAkKCc8ZGl2IGlkPSJodG1sXzQyMzhkZmE3MGE4YTRiNmZiZjJmM2JhODZiMTZkM2UxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5ST0JCRVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81YjBhNzZiMTMxZmI0YzQwYTg3ZGE4OTk2YTgzYjgxYS5zZXRDb250ZW50KGh0bWxfNDIzOGRmYTcwYThhNGI2ZmJmMmYzYmE4NmIxNmQzZTEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80NjBlMmI0ZDhmY2U0N2RiYTk4NDgxNTE1NjY2OGJlOS5iaW5kUG9wdXAocG9wdXBfNWIwYTc2YjEzMWZiNGM0MGE4N2RhODk5NmE4M2I4MWEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzE1OTJkZTNhYTI1NGIwM2FlYzhiOGZkZjcyNzcyM2UgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkwODQxNzI5MDI4LC0xMjIuNDg2OTI1OTYwMTE0MDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mODhkNmFkNWE5ZmY0NTVlOTM4MzgyYjVjZWQ0Mjc0NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84M2YxNzVlNjViY2Y0MzNhODRkNjdkMzY0MGVjODEwNiA9ICQoJzxkaXYgaWQ9Imh0bWxfODNmMTc1ZTY1YmNmNDMzYTg0ZDY3ZDM2NDBlYzgxMDYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mODhkNmFkNWE5ZmY0NTVlOTM4MzgyYjVjZWQ0Mjc0Ny5zZXRDb250ZW50KGh0bWxfODNmMTc1ZTY1YmNmNDMzYTg0ZDY3ZDM2NDBlYzgxMDYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83MTU5MmRlM2FhMjU0YjAzYWVjOGI4ZmRmNzI3NzIzZS5iaW5kUG9wdXAocG9wdXBfZjg4ZDZhZDVhOWZmNDU1ZTkzODM4MmI1Y2VkNDI3NDcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOGM0YWE1OWRmNTcwNDQ4ODg5MzYwNTRhMWVkMmRmOTIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njg1MzYwMTIzNTgzLC0xMjIuNDE1NjE2MzM4MzE5OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hMzEzODNkNTE3YzE0Yzg1YjFlZTgzZGFkMzFlNTViNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hZDk5OWFkNTMyYjk0MWIxYjUyZTFkMzExMTlkOGQ3NCA9ICQoJzxkaXYgaWQ9Imh0bWxfYWQ5OTlhZDUzMmI5NDFiMWI1MmUxZDMxMTE5ZDhkNzQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTMxMzgzZDUxN2MxNGM4NWIxZWU4M2RhZDMxZTU1YjYuc2V0Q29udGVudChodG1sX2FkOTk5YWQ1MzJiOTQxYjFiNTJlMWQzMTExOWQ4ZDc0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOGM0YWE1OWRmNTcwNDQ4ODg5MzYwNTRhMWVkMmRmOTIuYmluZFBvcHVwKHBvcHVwX2EzMTM4M2Q1MTdjMTRjODViMWVlODNkYWQzMWU1NWI2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzFhYmI5NzIwNzk2ZjQ3MWI5YWM0Y2Y3ODIwODZhYTU3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NDI5NzcxNDA3NCwtMTIyLjQ0OTc1MTY1MjU2M10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM5ZGFjZGZmNmE5YTRjMTY4MWJiNDRlMDZmYjVhN2NkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzU5ZGIyYmJjODQyMjQ3ZTNhNjRlZjlmNjViNjg5YTYzID0gJCgnPGRpdiBpZD0iaHRtbF81OWRiMmJiYzg0MjI0N2UzYTY0ZWY5ZjY1YjY4OWE2MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM5ZGFjZGZmNmE5YTRjMTY4MWJiNDRlMDZmYjVhN2NkLnNldENvbnRlbnQoaHRtbF81OWRiMmJiYzg0MjI0N2UzYTY0ZWY5ZjY1YjY4OWE2Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzFhYmI5NzIwNzk2ZjQ3MWI5YWM0Y2Y3ODIwODZhYTU3LmJpbmRQb3B1cChwb3B1cF8zOWRhY2RmZjZhOWE0YzE2ODFiYjQ0ZTA2ZmI1YTdjZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83MjZjYTMwNzZlOGU0NjJkOWI4MDZkOGVlNzQxOTYwZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQyOTc3MTQwNzQsLTEyMi40NDk3NTE2NTI1NjNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82ZGI1ZmEwOThmYzk0M2JiODIzZWMzZmE2OTA1ZDI2MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yMDNmMDIwYmRjOTc0NTA5YjE0NjEzNTRhZTIwYjYwOSA9ICQoJzxkaXYgaWQ9Imh0bWxfMjAzZjAyMGJkYzk3NDUwOWIxNDYxMzU0YWUyMGI2MDkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZkYjVmYTA5OGZjOTQzYmI4MjNlYzNmYTY5MDVkMjYyLnNldENvbnRlbnQoaHRtbF8yMDNmMDIwYmRjOTc0NTA5YjE0NjEzNTRhZTIwYjYwOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzcyNmNhMzA3NmU4ZTQ2MmQ5YjgwNmQ4ZWU3NDE5NjBmLmJpbmRQb3B1cChwb3B1cF82ZGI1ZmEwOThmYzk0M2JiODIzZWMzZmE2OTA1ZDI2Mik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84NjAxY2U5NTY5YTg0NTkxOTkzMjNkYjVjMjMyYjA5ZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTI2ODE0NjkwODM5NiwtMTIyLjQ3MjcxNTc1OTYzMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzQ5ZDQ0MDZkZjA1NzQ3ZDA4MzIwODYyMTNmMzdmYWE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzU1OTQ1NDFiNmZmOTQ4ODRhZmRjYzhiY2UxMWY0NzMwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2E4OWViMjI4OTQ5OTQ4ODM5YjBlYTM3NTMxYjE5MDY0ID0gJCgnPGRpdiBpZD0iaHRtbF9hODllYjIyODk0OTk0ODgzOWIwZWEzNzUzMWIxOTA2NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTU5NDU0MWI2ZmY5NDg4NGFmZGNjOGJjZTExZjQ3MzAuc2V0Q29udGVudChodG1sX2E4OWViMjI4OTQ5OTQ4ODM5YjBlYTM3NTMxYjE5MDY0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfODYwMWNlOTU2OWE4NDU5MTk5MzIzZGI1YzIzMmIwOWYuYmluZFBvcHVwKHBvcHVwXzU1OTQ1NDFiNmZmOTQ4ODRhZmRjYzhiY2UxMWY0NzMwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80OWQ0NDA2ZGYwNTc0N2QwODMyMDg2MjEzZjM3ZmFhOSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTQwMDBkZWJmZWJiNGMzMzk1N2Q2YmFjYmQ5YmRmNjkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU0MjA3MDY3MTEsLTEyMi40MDM0MDQ3OTE0Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2EzOTE3ZGNjNzBlNjQ1ZGNiYThmZjhhNzFlZmY4YmFkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80NDMwYWE1ZTNkMjE0ZTBmYjUyOWM3OTkxOGZmMWYyNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTk4MDk2NzI5OTU5NiwtMTIyLjM4ODg1NjIwNDI5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQwNWM4NGUwMjk3MjQ0ZDE4N2RhODhlMjA3NzFiMjY5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1Nzg4Mzc2Njg4NzksLTEyMi40MTI5NzA1Mzc1OTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yZThkZmNkZjM1MTk0MTUxYWEyYzUxMjA3ZTYyYmU4ZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTA1MDEyMTQ2NjgsLTEyMi40MTk2NzE3ODAyOTZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xMGQ1NzcwN2ZmOGE0OWJhODdiZDZjZGU1NjczNDgwZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNGJjMWE2OWJhNjM5NGNkODk1YmU2NDE0NmIwNmNhZjYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA4Nzg5MzYwMjE0LC0xMjIuNDA1NzIxNDU0NTY3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDg1OWI2MDFlNjYwNDU2MmIyNGJkZDkzNmZjMTIzZWUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM5ODA1NTkyNjM0LC0xMjIuNDExNzc4Mjk1OTkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDQyMWQzNDFhY2FmNGZhNGEyZmY5ZjE3ZWY0MGJkMTQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xMzBjZjA0ODBiYTU0NGMxOTNmYjRjYTUxOWFkYWE5NyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wZmRkYjUyZmEzZDg0YmVlODA4OWJjYTViNjJlMmE1YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQ3ODE1Nzg2OTUwNSwtMTIyLjQ3NzM3NjUyNDAwMjk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDg3OTliMzJiNmNhNDY4MGFjNTFhMjJlMTcxN2JlMDIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDU3Mzg5NDI5NjU0OTUsLTEyMi40Nzc5NjAzMjcyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xM2Y2MWVmNjhhYTk0MGQwYTg0ZGQxMTIxNjY2OGE5YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzczNDgzODFmNDJmNDdkZTg5NmIwN2ExOTE4ZDJhYTggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyNzA1MTk5NTkyLC0xMjIuNDMyMzI1ODcxMDI4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTRmMTNjZWUwNWI4NGFkMzliY2FjYjU0MTk3OTU3OTcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTE2NDI5ODIzODQsLTEyMi40MDA5MDg2OTg4ODk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U3YjQ0ZWQ1ZThlNTQyNzY5MThkMjk5OGRkN2E5NjBlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNzA2OTMwMTU0NSwtMTIyLjQwODU5NTExMDg2OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdmYjc3YTFlNTQ4YTRkM2Y5MmE0NzYxZDQ2NjA5NjcyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU3Mjg5NTkwNDU3Nzk1LC0xMjIuNDA2ODcwNDAyMDgyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDNjYjdiM2NlOTc4NDFiZGI2MDA3ZTNmY2EzOTI3MDMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDg5MDYzMDUxODI5LC0xMjIuNDIwMzU0NzgwODYwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mMDliMTBiYWI0ODc0YTYyOGUyODA3NmMwMTdhOTUzOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxNTc2NTQyNjk5NSwtMTIyLjQzOTkwOTc2Njc3Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZjMWVlNzJmZjUzMDQ1ZTY4Yzc5OGZiMTZkNzI2MjQzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNTY5OTM4NjkxOCwtMTIyLjQwODQyMTExNjkyMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzY1OTI1OTA4NmQ4ZjQ4ZDliMTNhODYwZmM2Nzg4NTZhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczNjE4NjI3NjQ1NjA0LC0xMjIuNDIyMzE1NjcwNzQ5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfN2U2YzA1ZDM5MmVmNGUyOGJhY2RlZWVlZDRmN2U4ZTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTI4NDEyODQwNDQ3MDUsLTEyMi40MjQ1MTk4MzUwMDkwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2I0MzJiNzAyNTcwZjRhZDI5YWVjN2Y0YmNhZTI3Y2FiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU0MDk4Njg4MjA2Nzk1LC0xMjIuNDE0MjMzODQ5MDM3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kZDRhODZmMzI2OGM0ZjcyYjkyMGNjNmI2ZjRiYzIxZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODgxODM0YmJjYmQ1NDdlY2EzZDM4MWI3NTA1MGJlNTggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzE0OTM5OTY5NDE2LC0xMjIuNTA3NzUwMTMxMDA0MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zN2JhNTIyOGExZTA0ZDk5ODRkYzc2OWY1YTI3ZWI2OCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxODMwMjIwNDc2NjAwNSwtMTIyLjQ3NDQ0NDYzOTU5NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYWZlZDNjZDRiN2MwNGNkYWI2OTc5OWNmNTY3M2Y2YTUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTc1MDkzM2Y4ZGVlNDdmMDgyN2EwMmVkYWJmMmIwZmEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjZjYTc5YTBiZDA3NDFmYmE0ZTI0M2ZlZTU0MWIwZmIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkzNjg4Mjg0NTMyLC0xMjIuNDEyNjkwMTQyMzA4MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yNmU4NTk2MGMxZWU0OWY0ODE2OTJlOTdkNjAyMTY4NyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lYzk0NzQyNzYzZjE0NDFmOTUxZjY3NzQ4OTEyYWYzNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzkyMDkzNzU1MzI5NSwtMTIyLjQxMDg4MjgyNTU1MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzc4OGFlYjgxZjYxZjQ0ODlhMDkxZTIzODVkMDU0NTgyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuODAwNDU2NjQ3MTAzODksLTEyMi40MDE0MzI3NTQ3MjIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2E3N2FhODNmYTUwODQ2NzM5OTgzYjc3N2JiMDA0M2I1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQzNTU1MDU0MjI2NSwtMTIyLjQyMTEyODAyOTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk5NWUzMTc3YTQ5ZjQ5NzU4YmRiOTM2M2U5ZWUwMGU3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg2NTY0NzYwNzY4NSwtMTIyLjQwNzI0NDA4NzAzMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzA2ZDM0Mzc5YjU0ZTQzYzk5NjhiY2VlZjlkN2NkMzgwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjg2OGRhNDNjODU1NGNjZWJmN2E5ZTc2MTRhYzQ1MTcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mM2NlMjBjYmRlNjg0NTgzYTVkYTcyMDQwY2I5MTJkNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2MxZjk0ODdiYzA3ODQ1MTRhNjRmMmQyNjMxMTZlYjcyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJiYmEwODYyMmIxODQyOTA5NWU2YTg4MGUzZTA2MGI3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NTI4MDYyNzQ2NSwtMTIyLjQ3NTY0NzQ2MDc4NTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDQ2ZDM2OTJmODI0NDIxMGI3ZGI2YjBhMjhlMjk0MmIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDI4NTE3Mzc0NDQ4OTQsLTEyMi40MjA5Njc0NDA1NjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82Y2FkMzIyYTAyYjI0NGY1OWFlZDRiZTNhYmE2MWZkOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84MDBkN2QzOWVmYzk0NmUxYjg1NGZiMTRjZGRiMGM1YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3OTE2NzQyMTg5NjMsLTEyMi40MDYzNDY0MjU2MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hMzUzNjAwZjYyYTQ0YTUzODhhOWQwYTFlZTFiNTQyYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTcxODQzOTUyODIsLTEyMi40MDk1Mjk5MTMyNzhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85OGE2ODg1YTQ1M2Y0ODMzOWE1OGNkMDgzOGQzYzQ2NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNmE1ZTk0NTE4MmFiNDdlOGE3MmFjOWFmMzc3YjQyMDAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wNWY3YmEyOTIwZTc0OTJkYjljNTQ0ODEyZDE5YzA4MCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NzUyNDMwODc4MywtMTIyLjQxMDczODA5NzMxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2IyYzQzN2EyMWJhNTQxM2NhMjM0NTc1MmNhMmMxZGE2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2VhZGYzN2EyMDlkYzRhODY4M2Y5MTY5MjFkNDJmZTFhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU2NjBiYjFhNjhhNzRkN2Q5NGFhNDI3OTViMmVmM2Y3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI2YWQyNzYzZTExODQ5MmY5MTkyMTk4YWZkODg1NGQ2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZiNWMyMDlhYzBjMTRmOWJhNjg0OGE2Y2IzNjdlMDljID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTI2YTgwYjAxZTkzNGJmZWE5NGQ2Njg3MGJhZGU5MDggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzYyMzEwNDA0NzU4LC0xMjIuNDE0NzE0Mjk1NTc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wNmQ3ZmI1YjFhYzI0MmQ3OWNkYzVjYzIzZGE0YzllYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzUxMTg4OTU2OTUsLTEyMi40MTgwNDU0NTI3NjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iNjc2ODIxNmExNmQ0NGJhYmY4YzMzOThhNmNkMzM4MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjAyMzg0Nzg5NzUsLTEyMi40MDExNjE1NTU2MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lODg2YzFhOTJlNDg0NzBkOGI4ZDRjOTlhMWQ4YmUwOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyNzAwNTMxOTYyOTk5NSwtMTIyLjQwMzQwODY2OTE5MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2I5MWIzMzkyMWFjMTRiOGJiZmI1ZDk5NDlmNWFmYTI1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2E2Mjk1YTA5NTFhZjQwODZiNTZlYTMxZWFlNzliYjI2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzUzMDE4NjUzNzQ0NjA0LC0xMjIuNDE4NTg3MTcyMjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODlmOWY1NGUxOWY4NGQ2Zjg1ZGYzNmY2ZTYxOWZjZmUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmVmMjUxZGM3YTRhNGZiZThkMWVlZjhkYWI2OGYwYWYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTA1Mzg5OTM3MjUsLTEyMi40MDM5MTU2ODE1NzEwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzBmYTMzOGIwZTYyYTQ3MDQ5YTdmMTRiN2MzMTlkNTRiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzMDk5ODI0NDU5MjEsLTEyMi40MTkxODMwOTYzNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83NDJjMzgxM2FmMDQ0ZWEyYjdjMmY4ZmM2ZDc4ZWFlYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0MDczNjA1NDgzNTc5LC0xMjIuMzg4NzUzMDQ2OTk3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWJjMDU2NzFiNTM0NDMzMDg2YjljY2IxZjExYTA0NzAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ5OTEyOTQ0MzY2LC0xMjIuNDM3Nzk5NzAzNDY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTQ0NDE1NzFkNjY0NGI0YjlhNTZjYjZiMjNlMzA2N2MgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmUxZjg5YmU0MzhlNGVhMDkzMzgwMjk5ODY4YjFiMDYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDQwM2UyNzYwOGUyNGI1NDkxNzM1ZDQzODhhYWQ2ZTQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjBlNzY1MDA4ZDU2NDQ0MWFmZWE2MWQ4Y2Y0MTRlMGIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzAwMzc5OTk1MTI3OTUsLTEyMi40MDQ1OTQxNDA2MzRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lNTQ2MmJmNDA4NDU0ZmYzYmNkMDM2MTZjOGJlNjE4NyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5NTMzMzgyNjc0MzYsLTEyMi4zOTczNzM3NDAwNjZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85NGM4MGY4MTA0ODk0NDRkYjM5ZTFiYmU3YWQ0ZjVlOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzUxNTg3NDE2MjI5NSwtMTIyLjQwNzQzNDk4OTUyM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzY4NTMxZTU5MWExODQ4MDFiNmY1ZDcyYTI2ZDA0YWE1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ZlOTBkNDEyMTFiNTRlZWJiMDFmNTkyNmZmMzM4ZjVmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg3NmYzYWRlOWJiODQzMzliNWJjY2MzNDA3YTlhNTAzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xZDlkNWNiNGE4OWI0YTU3YTY3ZTFlMDEzZWRhMmYxYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDRlMTM2MzQzYzAwNDU3YzlmZDdmOWQyZGJmZjk1ODcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA1Mjc1Nzg1MDksLTEyMi4zOTY4NDkwMTUxNzIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzA3NTJhODEyYWRiNDQ3ZjNhNGQwZDdlZTkyYmFkOWU2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmYwNzBjODEwODdlNDAwN2JkNGZmNTExYWM5YTkzNzEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjhjNTExZjMxMWMwNDc1MDlmY2I5ODBhZTljOTkwY2EgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iMmM2ODNjZWY4MmE0ZWU3OGUyMzMyYzNmZjEzZjgxNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMzk3NDgyNDE2MDksLTEyMi4zOTQ5Mjg0NzU4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjI2ZjdiNjNjZDRmNDBiZjk2MjM1MzQ4NzVlNWVjMGIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzNkMWM5MGQyYmEyNjQxZGZhZTgyYjJkNzA2NGFiYjBjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wNjg4NzJmZTEyMjU0N2I3OGY0ZWUxZDE0NGZjYjU5NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODMyMzU0NDk5MDQsLTEyMi40MTE4NTcwMzI1NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRiNWQ1ODA1YWViMzQ0NDM4NTI4Zjg1ZjU2Y2Q2ODlkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU1OTk3NzMzOTg1NiwtMTIyLjQwOTQzNTYxNzEwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzM3ZGY0M2JlMDhlZjQ2NjNhYWRlNDFhYzBlYWQxYzQ0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3MDc5ODE0NDQ0MywtMTIyLjQyNTg4MzM1ODE0OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI2Zjk3NWIxN2RmMTQ1NDE4N2FlYWRkZTE5YzQxOGM2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM2MDM3NDQ2Njg2MjA0LC0xMjIuNDE1MTI2NTQzMDAxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wNDFhNTRmYTNmOTY0M2MzYmQ1MjM4MDc4MzQ0ZTY2MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMjc2Nzg4NDgyMSwtMTIyLjQzMTkyODAxMTA4OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M4YjE4ODkxOGRjNzRkYzc5MTcwY2Q3YzBiN2RmYTJjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg5NTcxMDI1NTg2MywtMTIyLjQwMjE2MzcxMzYxOF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzY3MTVkMmZlM2UzNTQ4ZGE4ZDE3MTQyZjQ2NjlhZTdhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRiYTMxN2FjNDA2MTRkOTU5M2YxMDI3OTlhN2U2YmJmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM2NTU2NTM0Nzk0LC0xMjIuNDEzNzkwOTcyNzgwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jMGRkMDIzNzVjNWQ0MmJiYWE0YjU5NmVmM2YxNjQ1YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kNTczYWQwM2E2ZTA0Nzk2YTM1NjQ3ZDgxYjJmYTdmNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNzM2MjM2MDUyMTI5NiwtMTIyLjQyMjA2NzE4NDkzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M1MWRkNzgwODEyNjQ0MmI5ZTMwZmZiMDkwZjg0ZWE2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjNhYWNhMzYxY2Y1NDAxY2FjZGE2NTdlYzAzY2VmOTEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODU5OTg4MzIzNzk3OTYsLTEyMi40MTE3NDczNzE5MjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yMmFiOTViMTNmYzE0ZDg2YmIyNDVkNTQxYmMzZGM2ZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI4ZDllZGZmMThlYTQ5NDY5ODdhNjU2NTc4YmEyNGUxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1MDIyNjYyMjc4NiwtMTIyLjQxMTk4NzY0MzU5NTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjMyNWVjNmRkNzk0NGZmZDk3N2VkNDQyMmJmM2NkODUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ2MjA2NDkxMDY0OTUsLTEyMi41MDAzODA0Mjc5MTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jNzAxMzAxMzkyN2M0MzY2YTJmZTU0NDlhMzhjNjI5YiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTE5MTgyNjcyMTcsLTEyMi40NjY1NTg3ODA2ODNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yMjI4MDVlMmZjODM0NjhhOTIyMWIwODU4NzRmYTdmMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTA4NDE3MjkwMjgsLTEyMi40ODY5MjU5NjAxMTQwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF8yZmQ5ZDk4ZjFiZjI0NTU3ODQxZWI4YjE3MTJkNzQwZCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y2ZDJmMWU0ZDNjMzRjMDE5ODc3YmJmNzVkOTA0MzZkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY4NTM2MDEyMzU4MywtMTIyLjQxNTYxNjMzODMxOTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDUwMWU1MjA3ZGQwNDliNmI0MGZmYTY3NjIxMjk1ZGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjE2OTBkY2ZiMjc5NGE3MjliNGE0NzA5NTBhNzlkNWIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzJmZDlkOThmMWJmMjQ1NTc4NDFlYjhiMTcxMmQ3NDBkKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjQxZTBhYWY3YmI1NDhjMjljZjc2ZWRlYjhmZWUwZjAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzUyNjgxNDY5MDgzOTYsLTEyMi40NzI3MTU3NTk2MzFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfMmZkOWQ5OGYxYmYyNDU1Nzg0MWViOGIxNzEyZDc0MGQpOwogICAgICAgICAgICAKPC9zY3JpcHQ+\" 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 0x7fc4500940b8>"
]
},
"execution_count": 22,
"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": 23,
"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+ICNtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMiA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzcuNzcsLTEyMi40Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfMGIwNjdlZmMwZmRjNDljYmEzN2U4M2YxNTRkMzE0ZjggPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2VjYmY0OTc3MWQ4MTRjNTdhMjBjYTcwZjhiYTZlOTI0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83NTkwMTc2NGFhMmM0NDY3OTZkN2Q1ZWRmZjdkNDg2MCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kYzM0ZjJkYWM1ODQ0NjZmOWRlM2RiODkwMjRlYjc0MSA9ICQoJzxkaXYgaWQ9Imh0bWxfZGMzNGYyZGFjNTg0NDY2ZjlkZTNkYjg5MDI0ZWI3NDEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldFQVBPTiBMQVdTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83NTkwMTc2NGFhMmM0NDY3OTZkN2Q1ZWRmZjdkNDg2MC5zZXRDb250ZW50KGh0bWxfZGMzNGYyZGFjNTg0NDY2ZjlkZTNkYjg5MDI0ZWI3NDEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZWNiZjQ5NzcxZDgxNGM1N2EyMGNhNzBmOGJhNmU5MjQuYmluZFBvcHVwKHBvcHVwXzc1OTAxNzY0YWEyYzQ0Njc5NmQ3ZDVlZGZmN2Q0ODYwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzBlYWQ1OWVhMjgwMjQ1ODU4NjIwYTM0NzNlMmYzNzY0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84NTdkNWEzNGI4N2E0ZGRmOTRiNDZiNTc0YWNhZWU1NCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82ZjJlODA0YmYzNzg0MzI2OThjYjkxNDA1NWMyMDYxOSA9ICQoJzxkaXYgaWQ9Imh0bWxfNmYyZTgwNGJmMzc4NDMyNjk4Y2I5MTQwNTVjMjA2MTkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldFQVBPTiBMQVdTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84NTdkNWEzNGI4N2E0ZGRmOTRiNDZiNTc0YWNhZWU1NC5zZXRDb250ZW50KGh0bWxfNmYyZTgwNGJmMzc4NDMyNjk4Y2I5MTQwNTVjMjA2MTkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMGVhZDU5ZWEyODAyNDU4NTg2MjBhMzQ3M2UyZjM3NjQuYmluZFBvcHVwKHBvcHVwXzg1N2Q1YTM0Yjg3YTRkZGY5NGI0NmI1NzRhY2FlZTU0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdiZWYxZTYyZGJlYTRiZGI5NmU0ZDE5ZmY3NDYxOWE4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI5OTgwOTY3Mjk5NTk2LC0xMjIuMzg4ODU2MjA0MjkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNWE0NmFjMzVmZmIyNGYyM2FiYzRiZTQzN2Q4YWQ3Y2MgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjZkMDJkNzcxODY4NDllNmI5MzEwMTEwMmNhMDhiZjIgPSAkKCc8ZGl2IGlkPSJodG1sX2Y2ZDAyZDc3MTg2ODQ5ZTZiOTMxMDExMDJjYTA4YmYyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNWE0NmFjMzVmZmIyNGYyM2FiYzRiZTQzN2Q4YWQ3Y2Muc2V0Q29udGVudChodG1sX2Y2ZDAyZDc3MTg2ODQ5ZTZiOTMxMDExMDJjYTA4YmYyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzdiZWYxZTYyZGJlYTRiZGI5NmU0ZDE5ZmY3NDYxOWE4LmJpbmRQb3B1cChwb3B1cF81YTQ2YWMzNWZmYjI0ZjIzYWJjNGJlNDM3ZDhhZDdjYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85YWQwYjg4ZTM2Y2Y0MzU1YTdhMjM3ZWJlMTVlMDgwMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTc4ODM3NjY4ODc5LC0xMjIuNDEyOTcwNTM3NTkxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmQwZWMyNjA2NTg1NDcyY2IxNDAzNmI0NjM3YWIyYzcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2NkZTY3OTUwZmUxNDBmNDkyN2IxZjVhODhkOTI3ZmUgPSAkKCc8ZGl2IGlkPSJodG1sXzNjZGU2Nzk1MGZlMTQwZjQ5MjdiMWY1YTg4ZDkyN2ZlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZkMGVjMjYwNjU4NTQ3MmNiMTQwMzZiNDYzN2FiMmM3LnNldENvbnRlbnQoaHRtbF8zY2RlNjc5NTBmZTE0MGY0OTI3YjFmNWE4OGQ5MjdmZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85YWQwYjg4ZTM2Y2Y0MzU1YTdhMjM3ZWJlMTVlMDgwMC5iaW5kUG9wdXAocG9wdXBfNmQwZWMyNjA2NTg1NDcyY2IxNDAzNmI0NjM3YWIyYzcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjNlNTI2MDRkYjllNDVkMjkzMzE2ZGU4YmNmMmI3ZWIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjUwNTAxMjE0NjY4LC0xMjIuNDE5NjcxNzgwMjk2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDU0ZTQ4MzQzZDkxNGRlMjg3NjgxNTkxYjYxZDIyNGQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2RmMGIzMTU2MDI4NDAxZWE0MjY2ZTJhYTFiZmZjYmQgPSAkKCc8ZGl2IGlkPSJodG1sXzNkZjBiMzE1NjAyODQwMWVhNDI2NmUyYWExYmZmY2JkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Q1NGU0ODM0M2Q5MTRkZTI4NzY4MTU5MWI2MWQyMjRkLnNldENvbnRlbnQoaHRtbF8zZGYwYjMxNTYwMjg0MDFlYTQyNjZlMmFhMWJmZmNiZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iM2U1MjYwNGRiOWU0NWQyOTMzMTZkZThiY2YyYjdlYi5iaW5kUG9wdXAocG9wdXBfZDU0ZTQ4MzQzZDkxNGRlMjg3NjgxNTkxYjYxZDIyNGQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzE2MDU2NjVjYmU2NDgxZGEzMGY2MDQ2MGE1YjM1NTUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMTg1NTU4MjksLTEyMi40MjYwNzcxNzczNzQ5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Q3MzRjZDFmOTg2MTRiYTliZTQyZWU4YWViODY4YjU1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2UzNTVlNTVkZWFkMjQyZmY5Nzk2MTVhMTgzOTA5NjFmID0gJCgnPGRpdiBpZD0iaHRtbF9lMzU1ZTU1ZGVhZDI0MmZmOTc5NjE1YTE4MzkwOTYxZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZDczNGNkMWY5ODYxNGJhOWJlNDJlZThhZWI4NjhiNTUuc2V0Q29udGVudChodG1sX2UzNTVlNTVkZWFkMjQyZmY5Nzk2MTVhMTgzOTA5NjFmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2MxNjA1NjY1Y2JlNjQ4MWRhMzBmNjA0NjBhNWIzNTU1LmJpbmRQb3B1cChwb3B1cF9kNzM0Y2QxZjk4NjE0YmE5YmU0MmVlOGFlYjg2OGI1NSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yYjQxMWFiNDkzM2M0ZmNmOGJkMmI5MDA3NzZhOTI3NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDg3ODkzNjAyMTQsLTEyMi40MDU3MjE0NTQ1NjddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81YjY0MjYwNThjNDI0ZGFkOWI4OTkzYTFmNzZiNzQ5ZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81MDEyZDQ4NDczZTQ0NmEyYWQwYzBjZjAwNjE0MWQ1MSA9ICQoJzxkaXYgaWQ9Imh0bWxfNTAxMmQ0ODQ3M2U0NDZhMmFkMGMwY2YwMDYxNDFkNTEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81YjY0MjYwNThjNDI0ZGFkOWI4OTkzYTFmNzZiNzQ5ZS5zZXRDb250ZW50KGh0bWxfNTAxMmQ0ODQ3M2U0NDZhMmFkMGMwY2YwMDYxNDFkNTEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMmI0MTFhYjQ5MzNjNGZjZjhiZDJiOTAwNzc2YTkyNzYuYmluZFBvcHVwKHBvcHVwXzViNjQyNjA1OGM0MjRkYWQ5Yjg5OTNhMWY3NmI3NDllKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RlNGEzYWJmODUxNDQ5NTQ5ZWY3MjRjYTg1MzJiNmM1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzOTgwNTU5MjYzNCwtMTIyLjQxMTc3ODI5NTk5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2EwNzYzZmYyMjRiZTRlNmVhYjgwMGNlMGFmYTIyNmJhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2JmMWMxYmU0YzI0NjQ3MjU5ZDYzY2RkMzdjZTkzNWZjID0gJCgnPGRpdiBpZD0iaHRtbF9iZjFjMWJlNGMyNDY0NzI1OWQ2M2NkZDM3Y2U5MzVmYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hMDc2M2ZmMjI0YmU0ZTZlYWI4MDBjZTBhZmEyMjZiYS5zZXRDb250ZW50KGh0bWxfYmYxYzFiZTRjMjQ2NDcyNTlkNjNjZGQzN2NlOTM1ZmMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZGU0YTNhYmY4NTE0NDk1NDllZjcyNGNhODUzMmI2YzUuYmluZFBvcHVwKHBvcHVwX2EwNzYzZmYyMjRiZTRlNmVhYjgwMGNlMGFmYTIyNmJhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2NhM2RjMGFkYmRiMjQ3NDViNmExYjkzNTBjYjQ4ZWU3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1Nzg3NjIxODI5Mjk1LC0xMjIuMzkzMzU3MjQxNDUxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjEwYjRhZjVhOTRjNDg5NGJjZGM1NjI1MWNhZGZkY2EgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMWNlZjg4YmJiM2I0NGQ0YmE1YjBmZDc3MjJjMzc4ODAgPSAkKCc8ZGl2IGlkPSJodG1sXzFjZWY4OGJiYjNiNDRkNGJhNWIwZmQ3NzIyYzM3ODgwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjEwYjRhZjVhOTRjNDg5NGJjZGM1NjI1MWNhZGZkY2Euc2V0Q29udGVudChodG1sXzFjZWY4OGJiYjNiNDRkNGJhNWIwZmQ3NzIyYzM3ODgwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2NhM2RjMGFkYmRiMjQ3NDViNmExYjkzNTBjYjQ4ZWU3LmJpbmRQb3B1cChwb3B1cF9iMTBiNGFmNWE5NGM0ODk0YmNkYzU2MjUxY2FkZmRjYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hYTA2YjgwZTc4OGI0Zjc2OWIxZWI2Y2QyYjdjMWM5NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82ZGY2NWYzMDUwMzM0ZmFhODIyMDM0ZDRkZGYwNmQyYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83NDc1N2E0NjQ4MzA0MDJlOWExNWU3ZDI4YWJjZTJkZCA9ICQoJzxkaXYgaWQ9Imh0bWxfNzQ3NTdhNDY0ODMwNDAyZTlhMTVlN2QyOGFiY2UyZGQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82ZGY2NWYzMDUwMzM0ZmFhODIyMDM0ZDRkZGYwNmQyYy5zZXRDb250ZW50KGh0bWxfNzQ3NTdhNDY0ODMwNDAyZTlhMTVlN2QyOGFiY2UyZGQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYWEwNmI4MGU3ODhiNGY3NjliMWViNmNkMmI3YzFjOTQuYmluZFBvcHVwKHBvcHVwXzZkZjY1ZjMwNTAzMzRmYWE4MjIwMzRkNGRkZjA2ZDJjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2EyYTc1NzVkOWIxNTRiNDJiOGY2ZGU3ZjY5NjYxZGRjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NDc4MTU3ODY5NTA1LC0xMjIuNDc3Mzc2NTI0MDAyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mZTBlYTUyNTA2YWM0NjNhYmFjYzQ5NGYwNTVmY2E0YSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wYTE4MTBjZGY1MjE0YWQ5ODJiNjg1MzcxY2EzZTNmZSA9ICQoJzxkaXYgaWQ9Imh0bWxfMGExODEwY2RmNTIxNGFkOTgyYjY4NTM3MWNhM2UzZmUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ZlMGVhNTI1MDZhYzQ2M2FiYWNjNDk0ZjA1NWZjYTRhLnNldENvbnRlbnQoaHRtbF8wYTE4MTBjZGY1MjE0YWQ5ODJiNjg1MzcxY2EzZTNmZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9hMmE3NTc1ZDliMTU0YjQyYjhmNmRlN2Y2OTY2MWRkYy5iaW5kUG9wdXAocG9wdXBfZmUwZWE1MjUwNmFjNDYzYWJhY2M0OTRmMDU1ZmNhNGEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjYwMmMyODc5MjYwNDUwN2FhM2ZhYzg4NjFjZTU4YzIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDU3Mzg5NDI5NjU0OTUsLTEyMi40Nzc5NjAzMjcyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84MjE2MDlkZjY3MDE0MjQ5OTU3Y2I4MDBmYzE1NTc3YiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zYjA3YTgzMGRiNWU0OThlOGY2NDM4ODEzYTA1Y2I4OSA9ICQoJzxkaXYgaWQ9Imh0bWxfM2IwN2E4MzBkYjVlNDk4ZThmNjQzODgxM2EwNWNiODkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODIxNjA5ZGY2NzAxNDI0OTk1N2NiODAwZmMxNTU3N2Iuc2V0Q29udGVudChodG1sXzNiMDdhODMwZGI1ZTQ5OGU4ZjY0Mzg4MTNhMDVjYjg5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2I2MDJjMjg3OTI2MDQ1MDdhYTNmYWM4ODYxY2U1OGMyLmJpbmRQb3B1cChwb3B1cF84MjE2MDlkZjY3MDE0MjQ5OTU3Y2I4MDBmYzE1NTc3Yik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hOTNkZTllYmZmMGI0NzYzYjNhZTUzOTBkYzg3NWJmOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMGQ2YTFiYzJjOTUwNGRlYWI2NjdjZTU5NWI1NzQ5OTUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGFmYzA4YWM1NmM3NDNmZmFiNmVkNDdmNmY4MGJkYTMgPSAkKCc8ZGl2IGlkPSJodG1sXzRhZmMwOGFjNTZjNzQzZmZhYjZlZDQ3ZjZmODBiZGEzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMGQ2YTFiYzJjOTUwNGRlYWI2NjdjZTU5NWI1NzQ5OTUuc2V0Q29udGVudChodG1sXzRhZmMwOGFjNTZjNzQzZmZhYjZlZDQ3ZjZmODBiZGEzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2E5M2RlOWViZmYwYjQ3NjNiM2FlNTM5MGRjODc1YmY4LmJpbmRQb3B1cChwb3B1cF8wZDZhMWJjMmM5NTA0ZGVhYjY2N2NlNTk1YjU3NDk5NSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kN2Q3ZTdhODYzZjI0YjY5OTkzOTg0MGEyZTNjMzc3YiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTI3MDUxOTk1OTIsLTEyMi40MzIzMjU4NzEwMjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kMjgxNWIzOWU3MmQ0N2U2YWY0NGViMTk0ZDJiYWEzYSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82ZWYwZDljZGIyYTE0MWU5YWZiNjg1ZGE1MWNjNzM1ZCA9ICQoJzxkaXYgaWQ9Imh0bWxfNmVmMGQ5Y2RiMmExNDFlOWFmYjY4NWRhNTFjYzczNWQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2QyODE1YjM5ZTcyZDQ3ZTZhZjQ0ZWIxOTRkMmJhYTNhLnNldENvbnRlbnQoaHRtbF82ZWYwZDljZGIyYTE0MWU5YWZiNjg1ZGE1MWNjNzM1ZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kN2Q3ZTdhODYzZjI0YjY5OTkzOTg0MGEyZTNjMzc3Yi5iaW5kUG9wdXAocG9wdXBfZDI4MTViMzllNzJkNDdlNmFmNDRlYjE5NGQyYmFhM2EpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGViYjc0Nzg3NWIyNDNlYWFlMjE5MjY5MzQ5OWE0YzcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTE2NDI5ODIzODQsLTEyMi40MDA5MDg2OTg4ODk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U1NzlkY2NmMDBkMTRmM2Y5OWViMzkyODgzZTA3MzRkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RjNTI2ZGRlZjQyOTQ3NTM4OTIwNGIyMDU0Yjg0MDA1ID0gJCgnPGRpdiBpZD0iaHRtbF9kYzUyNmRkZWY0Mjk0NzUzODkyMDRiMjA1NGI4NDAwNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U1NzlkY2NmMDBkMTRmM2Y5OWViMzkyODgzZTA3MzRkLnNldENvbnRlbnQoaHRtbF9kYzUyNmRkZWY0Mjk0NzUzODkyMDRiMjA1NGI4NDAwNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kZWJiNzQ3ODc1YjI0M2VhYWUyMTkyNjkzNDk5YTRjNy5iaW5kUG9wdXAocG9wdXBfZTU3OWRjY2YwMGQxNGYzZjk5ZWIzOTI4ODNlMDczNGQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGU4NzljY2IyYWJkNDdkMWJkNjQ0MzZjMzM4ZmM2NDUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM3MDY5MzAxNTQ1LC0xMjIuNDA4NTk1MTEwODY5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTkzM2I1OTZhOTg2NDI2ZGEzZGY0OGZmNWFiZjMyOGIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODM0ZGEyODRhZGNiNDhmOTgzYmNmYzI5ZDdkZmVkNTEgPSAkKCc8ZGl2IGlkPSJodG1sXzgzNGRhMjg0YWRjYjQ4Zjk4M2JjZmMyOWQ3ZGZlZDUxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TVE9MRU4gUFJPUEVSVFk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2E5MzNiNTk2YTk4NjQyNmRhM2RmNDhmZjVhYmYzMjhiLnNldENvbnRlbnQoaHRtbF84MzRkYTI4NGFkY2I0OGY5ODNiY2ZjMjlkN2RmZWQ1MSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kZTg3OWNjYjJhYmQ0N2QxYmQ2NDQzNmMzMzhmYzY0NS5iaW5kUG9wdXAocG9wdXBfYTkzM2I1OTZhOTg2NDI2ZGEzZGY0OGZmNWFiZjMyOGIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjY1NGIzOTNmZDIyNDE3ZGFhN2YxMDcxYWYwMDdlMzIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTcyODk1OTA0NTc3OTUsLTEyMi40MDY4NzA0MDIwODJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82ODQxYTUwMDI5OWE0NDYyYmIzNTNlYWI4OTQ4NGU4ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jNzNlODE1MzU0MmE0NjhmOTE5YzM2YmYyMDFmYzhlOCA9ICQoJzxkaXYgaWQ9Imh0bWxfYzczZTgxNTM1NDJhNDY4ZjkxOWMzNmJmMjAxZmM4ZTgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJPQkJFUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzY4NDFhNTAwMjk5YTQ0NjJiYjM1M2VhYjg5NDg0ZThkLnNldENvbnRlbnQoaHRtbF9jNzNlODE1MzU0MmE0NjhmOTE5YzM2YmYyMDFmYzhlOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iNjU0YjM5M2ZkMjI0MTdkYWE3ZjEwNzFhZjAwN2UzMi5iaW5kUG9wdXAocG9wdXBfNjg0MWE1MDAyOTlhNDQ2MmJiMzUzZWFiODk0ODRlOGQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjVkNmZiMTJkZTJhNDBhMDk5YTlhZGIzZTRlZjdlZjUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDg5MDYzMDUxODI5LC0xMjIuNDIwMzU0NzgwODYwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kY2VkNmE5NjJlNTM0MWJmOGZkZWVlYzViM2M4ZGYzYSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85MTcxZGMyNTMzMGE0MmJmYTU3NTZkNDc5OGZlODNjNiA9ICQoJzxkaXYgaWQ9Imh0bWxfOTE3MWRjMjUzMzBhNDJiZmE1NzU2ZDQ3OThmZTgzYzYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2RjZWQ2YTk2MmU1MzQxYmY4ZmRlZWVjNWIzYzhkZjNhLnNldENvbnRlbnQoaHRtbF85MTcxZGMyNTMzMGE0MmJmYTU3NTZkNDc5OGZlODNjNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mNWQ2ZmIxMmRlMmE0MGEwOTlhOWFkYjNlNGVmN2VmNS5iaW5kUG9wdXAocG9wdXBfZGNlZDZhOTYyZTUzNDFiZjhmZGVlZWM1YjNjOGRmM2EpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTE5NmVkYmIwMjhiNDAwZGI2ODM3YzFhZDE4YjY2NWMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTU3NjU0MjY5OTUsLTEyMi40Mzk5MDk3NjY3NzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wNTVjZjQ3OTk0ZTc0NTQ1YWFjN2Q3ZTg0Yzc0YjdkZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82N2UxMjZiMWIyMTY0Y2ZjOTUxZjc0Mzk0MDBlYjliNyA9ICQoJzxkaXYgaWQ9Imh0bWxfNjdlMTI2YjFiMjE2NGNmYzk1MWY3NDM5NDAwZWI5YjciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzA1NWNmNDc5OTRlNzQ1NDVhYWM3ZDdlODRjNzRiN2RmLnNldENvbnRlbnQoaHRtbF82N2UxMjZiMWIyMTY0Y2ZjOTUxZjc0Mzk0MDBlYjliNyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81MTk2ZWRiYjAyOGI0MDBkYjY4MzdjMWFkMThiNjY1Yy5iaW5kUG9wdXAocG9wdXBfMDU1Y2Y0Nzk5NGU3NDU0NWFhYzdkN2U4NGM3NGI3ZGYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjg1YTE1NjBmYTkyNGY2Mjk4NjY2Y2I4MzI5NmRhN2MgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM1Njk5Mzg2OTE4LC0xMjIuNDA4NDIxMTE2OTIyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDM3NThhNjExZmM4NDE0MWFiMjYxNTQxYTA5NDc1NDAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTFiNDIzMDM3YzhiNDIxOTk3MzM0NTY2OGNmOGU1MmMgPSAkKCc8ZGl2IGlkPSJodG1sXzExYjQyMzAzN2M4YjQyMTk5NzMzNDU2NjhjZjhlNTJjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kMzc1OGE2MTFmYzg0MTQxYWIyNjE1NDFhMDk0NzU0MC5zZXRDb250ZW50KGh0bWxfMTFiNDIzMDM3YzhiNDIxOTk3MzM0NTY2OGNmOGU1MmMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNjg1YTE1NjBmYTkyNGY2Mjk4NjY2Y2I4MzI5NmRhN2MuYmluZFBvcHVwKHBvcHVwX2QzNzU4YTYxMWZjODQxNDFhYjI2MTU0MWEwOTQ3NTQwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2MwNGFlODc5NGMyMTQ2OTg4YmNmOWIyYTAwMDMzNWVkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczNjE4NjI3NjQ1NjA0LC0xMjIuNDIyMzE1NjcwNzQ5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjIxODdhNmY0MjQxNGFkNThmYWQwYTY4OGFlNWNhNjQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzUxMDEzNDA2Zjk5NDI3MTg3MTVkMmI1ODQzY2I4ZWUgPSAkKCc8ZGl2IGlkPSJodG1sX2M1MTAxMzQwNmY5OTQyNzE4NzE1ZDJiNTg0M2NiOGVlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5GUkFVRDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjIxODdhNmY0MjQxNGFkNThmYWQwYTY4OGFlNWNhNjQuc2V0Q29udGVudChodG1sX2M1MTAxMzQwNmY5OTQyNzE4NzE1ZDJiNTg0M2NiOGVlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2MwNGFlODc5NGMyMTQ2OTg4YmNmOWIyYTAwMDMzNWVkLmJpbmRQb3B1cChwb3B1cF9iMjE4N2E2ZjQyNDE0YWQ1OGZhZDBhNjg4YWU1Y2E2NCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iZDU3ODE5MjZiYmU0YWMyOTZjODYwMDc5ZTcyOTY4MyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5Mjg0MTI4NDA0NDcwNSwtMTIyLjQyNDUxOTgzNTAwOTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODZlNjcyZWQ0YzBiNGM1YWExNmIwNTQ3YTNlZDEwZDYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTA0Mjk2MDc3YjRiNDJlZDgxMWJiMTViNjZiNjVkNzYgPSAkKCc8ZGl2IGlkPSJodG1sX2UwNDI5NjA3N2I0YjQyZWQ4MTFiYjE1YjY2YjY1ZDc2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODZlNjcyZWQ0YzBiNGM1YWExNmIwNTQ3YTNlZDEwZDYuc2V0Q29udGVudChodG1sX2UwNDI5NjA3N2I0YjQyZWQ4MTFiYjE1YjY2YjY1ZDc2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2JkNTc4MTkyNmJiZTRhYzI5NmM4NjAwNzllNzI5NjgzLmJpbmRQb3B1cChwb3B1cF84NmU2NzJlZDRjMGI0YzVhYTE2YjA1NDdhM2VkMTBkNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mODM2ZDJmZDdlZTI0YjY0OTU1Yjc5OTJhNjUyZGQ2NyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTEzNzUyNWZiMWE1NDJhYThlZTNlYjY1M2MzMTcyYTUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjFkNmExYjBhYzM3NGQ5OWEwYTk1ZGQwMmFkN2I3M2UgPSAkKCc8ZGl2IGlkPSJodG1sXzYxZDZhMWIwYWMzNzRkOTlhMGE5NWRkMDJhZDdiNzNlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xMTM3NTI1ZmIxYTU0MmFhOGVlM2ViNjUzYzMxNzJhNS5zZXRDb250ZW50KGh0bWxfNjFkNmExYjBhYzM3NGQ5OWEwYTk1ZGQwMmFkN2I3M2UpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZjgzNmQyZmQ3ZWUyNGI2NDk1NWI3OTkyYTY1MmRkNjcuYmluZFBvcHVwKHBvcHVwXzExMzc1MjVmYjFhNTQyYWE4ZWUzZWI2NTNjMzE3MmE1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2UxMDVhZTA0MjJjNTQ0YTU5MzUxNTc3NTg0MWU5MjAyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU0MDk4Njg4MjA2Nzk1LC0xMjIuNDE0MjMzODQ5MDM3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wNzRmYjQwNjc2YTk0MjQ0ODA0M2YwYTMwODQzNjA1NSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xYTUyZDU4Y2RkNzY0MWNmYWM1MmVlNWRhOGJkZmRiNCA9ICQoJzxkaXYgaWQ9Imh0bWxfMWE1MmQ1OGNkZDc2NDFjZmFjNTJlZTVkYThiZGZkYjQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wNzRmYjQwNjc2YTk0MjQ0ODA0M2YwYTMwODQzNjA1NS5zZXRDb250ZW50KGh0bWxfMWE1MmQ1OGNkZDc2NDFjZmFjNTJlZTVkYThiZGZkYjQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZTEwNWFlMDQyMmM1NDRhNTkzNTE1Nzc1ODQxZTkyMDIuYmluZFBvcHVwKHBvcHVwXzA3NGZiNDA2NzZhOTQyNDQ4MDQzZjBhMzA4NDM2MDU1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk4ZGZiM2QwYmNmNzQ4MjZiMmEzMWFlNDNjMzFlNTZjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzcxNDkzOTk2OTQxNiwtMTIyLjUwNzc1MDEzMTAwNDAyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZWFmMTk3MTI2Yzk3NDg4ZDkyMzMxNDg5MDEwYzIyZDIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZGRmZTBhMTFiMzNlNDg4OTgwYzEwMjhmY2MyNTVhYTUgPSAkKCc8ZGl2IGlkPSJodG1sX2RkZmUwYTExYjMzZTQ4ODk4MGMxMDI4ZmNjMjU1YWE1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lYWYxOTcxMjZjOTc0ODhkOTIzMzE0ODkwMTBjMjJkMi5zZXRDb250ZW50KGh0bWxfZGRmZTBhMTFiMzNlNDg4OTgwYzEwMjhmY2MyNTVhYTUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOThkZmIzZDBiY2Y3NDgyNmIyYTMxYWU0M2MzMWU1NmMuYmluZFBvcHVwKHBvcHVwX2VhZjE5NzEyNmM5NzQ4OGQ5MjMzMTQ4OTAxMGMyMmQyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU0YmJiMzQzMmJlZTQ5YTk4NjA5NWY2NDI4NzY0YWY4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzE4MzAyMjA0NzY2MDA1LC0xMjIuNDc0NDQ0NjM5NTk0OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84NmFiZjAyNjk0ZDk0NGMwOGE3NTRlMDgyMzRkNTk4MCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85NzA0Mzc0ZGUxZTc0OGMzYjhhZWQzYTE4ZTA5NzlmMCA9ICQoJzxkaXYgaWQ9Imh0bWxfOTcwNDM3NGRlMWU3NDhjM2I4YWVkM2ExOGUwOTc5ZjAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84NmFiZjAyNjk0ZDk0NGMwOGE3NTRlMDgyMzRkNTk4MC5zZXRDb250ZW50KGh0bWxfOTcwNDM3NGRlMWU3NDhjM2I4YWVkM2ExOGUwOTc5ZjApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNTRiYmIzNDMyYmVlNDlhOTg2MDk1ZjY0Mjg3NjRhZjguYmluZFBvcHVwKHBvcHVwXzg2YWJmMDI2OTRkOTQ0YzA4YTc1NGUwODIzNGQ1OTgwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZkODcxNjJkZWM3OTQ2ZTM5ZjFlZDdmNzU1YTk0NmI1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NTc1MjMxNzYxNSwtMTIyLjQyNzU2MjU5Njk4NV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzBkMDkxN2IzYzg3MzQ4YTBiNjVmMzNmYTQ3MTUwZjRhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM5MjVmNmMwMWEzYzQ5NDA5Y2NlZTQwMTM1NWY5ODIzID0gJCgnPGRpdiBpZD0iaHRtbF8zOTI1ZjZjMDFhM2M0OTQwOWNjZWU0MDEzNTVmOTgyMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzBkMDkxN2IzYzg3MzQ4YTBiNjVmMzNmYTQ3MTUwZjRhLnNldENvbnRlbnQoaHRtbF8zOTI1ZjZjMDFhM2M0OTQwOWNjZWU0MDEzNTVmOTgyMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82ZDg3MTYyZGVjNzk0NmUzOWYxZWQ3Zjc1NWE5NDZiNS5iaW5kUG9wdXAocG9wdXBfMGQwOTE3YjNjODczNDhhMGI2NWYzM2ZhNDcxNTBmNGEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjkzYjRjN2E4OTMzNDc2YzhkYjMxMjlkNjA1ZWFjNGEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODM5YjllOWU0YWI1NGE2NTljOGU2Y2M4MWRjMGU2NDcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMWNjNTdiZDIyYTk1NDU1MWJiNjc1MWRkMzk2OTRlNWYgPSAkKCc8ZGl2IGlkPSJodG1sXzFjYzU3YmQyMmE5NTQ1NTFiYjY3NTFkZDM5Njk0ZTVmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CVVJHTEFSWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODM5YjllOWU0YWI1NGE2NTljOGU2Y2M4MWRjMGU2NDcuc2V0Q29udGVudChodG1sXzFjYzU3YmQyMmE5NTQ1NTFiYjY3NTFkZDM5Njk0ZTVmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2I5M2I0YzdhODkzMzQ3NmM4ZGIzMTI5ZDYwNWVhYzRhLmJpbmRQb3B1cChwb3B1cF84MzliOWU5ZTRhYjU0YTY1OWM4ZTZjYzgxZGMwZTY0Nyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wMzIyODlhNGM3MDA0Y2UxOWE3NDlkNjVlOTA5NDY1YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTM2ODgyODQ1MzIsLTEyMi40MTI2OTAxNDIzMDgwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzZlNDViMDc2MmEwZTQzYmE4MGYzMmE5MDk4Y2U2NTBjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzYwNTcyYzI5ZDM2NjQwZDM5OTMyMjZmYWUyMTdmNzMxID0gJCgnPGRpdiBpZD0iaHRtbF82MDU3MmMyOWQzNjY0MGQzOTkzMjI2ZmFlMjE3ZjczMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZlNDViMDc2MmEwZTQzYmE4MGYzMmE5MDk4Y2U2NTBjLnNldENvbnRlbnQoaHRtbF82MDU3MmMyOWQzNjY0MGQzOTkzMjI2ZmFlMjE3ZjczMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wMzIyODlhNGM3MDA0Y2UxOWE3NDlkNjVlOTA5NDY1Yy5iaW5kUG9wdXAocG9wdXBfNmU0NWIwNzYyYTBlNDNiYTgwZjMyYTkwOThjZTY1MGMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODVmYjZkYzA2NDRlNGExZDgzMzg5OWNlYzhhMDY1YWQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MDkyMDEwNDYyMzc5LC0xMjIuNDM0NjA5MjgwMzUyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTU1ZTFiMjk1MzEyNDY4NTgyNDUzMzFjMzA2NmQzNmEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2JjODI4YmUwYzFmNGFhNjhmZjRlNjNiNGMyODI1ZjIgPSAkKCc8ZGl2IGlkPSJodG1sXzNiYzgyOGJlMGMxZjRhYTY4ZmY0ZTYzYjRjMjgyNWYyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2E1NWUxYjI5NTMxMjQ2ODU4MjQ1MzMxYzMwNjZkMzZhLnNldENvbnRlbnQoaHRtbF8zYmM4MjhiZTBjMWY0YWE2OGZmNGU2M2I0YzI4MjVmMik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl84NWZiNmRjMDY0NGU0YTFkODMzODk5Y2VjOGEwNjVhZC5iaW5kUG9wdXAocG9wdXBfYTU1ZTFiMjk1MzEyNDY4NTgyNDUzMzFjMzA2NmQzNmEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTYyNWU5MmY3OTNlNDZlZTliNDY5NTBhYjI0NmNkYTUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc5MjA5Mzc1NTMyOTUsLTEyMi40MTA4ODI4MjU1NTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jYTM5NjBlNTBmMWE0MzFmYTkxNDRiNjllZmE2NThiMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xOWFkYjVhOTk1Njg0NTQ2YTg2MGRlMmYxOTE0NWFhNSA9ICQoJzxkaXYgaWQ9Imh0bWxfMTlhZGI1YTk5NTY4NDU0NmE4NjBkZTJmMTkxNDVhYTUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZFSElDTEUgVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NhMzk2MGU1MGYxYTQzMWZhOTE0NGI2OWVmYTY1OGIyLnNldENvbnRlbnQoaHRtbF8xOWFkYjVhOTk1Njg0NTQ2YTg2MGRlMmYxOTE0NWFhNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9lNjI1ZTkyZjc5M2U0NmVlOWI0Njk1MGFiMjQ2Y2RhNS5iaW5kUG9wdXAocG9wdXBfY2EzOTYwZTUwZjFhNDMxZmE5MTQ0YjY5ZWZhNjU4YjIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzMzMTcxMWFkNmE5NDdhNmI2ZjRjOTI1NmEzMGQyNzIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy44MDA0NTY2NDcxMDM4OSwtMTIyLjQwMTQzMjc1NDcyMjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODRhYTJjOWIyZjg5NDg4ZmE5ZDVmMjhmYTYzMjdiNTkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzc3ZmU4MmZiYzcxNGNjNzgxMTlkYTQxZTYzYTQzZGEgPSAkKCc8ZGl2IGlkPSJodG1sXzc3N2ZlODJmYmM3MTRjYzc4MTE5ZGE0MWU2M2E0M2RhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84NGFhMmM5YjJmODk0ODhmYTlkNWYyOGZhNjMyN2I1OS5zZXRDb250ZW50KGh0bWxfNzc3ZmU4MmZiYzcxNGNjNzgxMTlkYTQxZTYzYTQzZGEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYzMzMTcxMWFkNmE5NDdhNmI2ZjRjOTI1NmEzMGQyNzIuYmluZFBvcHVwKHBvcHVwXzg0YWEyYzliMmY4OTQ4OGZhOWQ1ZjI4ZmE2MzI3YjU5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRlMTJkMjNiYTllNjQwNWU4NTdiZWJjZDlhNTlhZjExID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQzNTU1MDU0MjI2NSwtMTIyLjQyMTEyODAyOTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM3NmM1NTBjZjJlNTQyNDU4NmIxNmJhNzdkNWMzYTZjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2UzODZhZWJkMzdkZjRlMWFhZTQxZDA3MjM1YzAwMTI0ID0gJCgnPGRpdiBpZD0iaHRtbF9lMzg2YWViZDM3ZGY0ZTFhYWU0MWQwNzIzNWMwMDEyNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzc2YzU1MGNmMmU1NDI0NTg2YjE2YmE3N2Q1YzNhNmMuc2V0Q29udGVudChodG1sX2UzODZhZWJkMzdkZjRlMWFhZTQxZDA3MjM1YzAwMTI0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzRlMTJkMjNiYTllNjQwNWU4NTdiZWJjZDlhNTlhZjExLmJpbmRQb3B1cChwb3B1cF8zNzZjNTUwY2YyZTU0MjQ1ODZiMTZiYTc3ZDVjM2E2Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85OGJlMGRmMGEwNGY0YWMyOTUyNjYyN2E5YjhiMGIwMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NjU2NDc2MDc2ODUsLTEyMi40MDcyNDQwODcwMzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hMGY1YjVkMmJiNjc0NjhmOTg1OTYzMTNiOTY1MTY0ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wNjkwMmJiZTZhMzI0NzkwYWEyOTc5ZTcwNmNhYzNiNCA9ICQoJzxkaXYgaWQ9Imh0bWxfMDY5MDJiYmU2YTMyNDc5MGFhMjk3OWU3MDZjYWMzYjQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2EwZjViNWQyYmI2NzQ2OGY5ODU5NjMxM2I5NjUxNjRkLnNldENvbnRlbnQoaHRtbF8wNjkwMmJiZTZhMzI0NzkwYWEyOTc5ZTcwNmNhYzNiNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85OGJlMGRmMGEwNGY0YWMyOTUyNjYyN2E5YjhiMGIwMy5iaW5kUG9wdXAocG9wdXBfYTBmNWI1ZDJiYjY3NDY4Zjk4NTk2MzEzYjk2NTE2NGQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjRhM2I1NDBkYzdlNGFkYmEwZDZhYzVhZmQyNWNhYzUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lODIwY2NkN2M5YmM0ZTY5YTRjZDc4YzJhMTFkZmVlYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82MDQ0YjE2ZmQyMjg0MzAxOTA5YzM5NTk1YjY4OTk3MiA9ICQoJzxkaXYgaWQ9Imh0bWxfNjA0NGIxNmZkMjI4NDMwMTkwOWMzOTU5NWI2ODk5NzIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJFQ09WRVJFRCBWRUhJQ0xFPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lODIwY2NkN2M5YmM0ZTY5YTRjZDc4YzJhMTFkZmVlYy5zZXRDb250ZW50KGh0bWxfNjA0NGIxNmZkMjI4NDMwMTkwOWMzOTU5NWI2ODk5NzIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZjRhM2I1NDBkYzdlNGFkYmEwZDZhYzVhZmQyNWNhYzUuYmluZFBvcHVwKHBvcHVwX2U4MjBjY2Q3YzliYzRlNjlhNGNkNzhjMmExMWRmZWVjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzlmMmI1ODYwYTg3NjQ0MDBhOGE1YWMzZGQ0YjcyMzQ2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOGU4OGIxODAwYWJkNGEwNmJlNTUyMzRjM2NmODYxYzggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfY2JiOTE3NTc4YmJkNDIxODk2ODViNDZiMDc0YmJlYWYgPSAkKCc8ZGl2IGlkPSJodG1sX2NiYjkxNzU3OGJiZDQyMTg5Njg1YjQ2YjA3NGJiZWFmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOGU4OGIxODAwYWJkNGEwNmJlNTUyMzRjM2NmODYxYzguc2V0Q29udGVudChodG1sX2NiYjkxNzU3OGJiZDQyMTg5Njg1YjQ2YjA3NGJiZWFmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzlmMmI1ODYwYTg3NjQ0MDBhOGE1YWMzZGQ0YjcyMzQ2LmJpbmRQb3B1cChwb3B1cF84ZTg4YjE4MDBhYmQ0YTA2YmU1NTIzNGMzY2Y4NjFjOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81ZWY3NzY2MzUwNjI0NmFmYWJmY2U2OGRiYWQ3ZmQ1YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzgwYWUzM2Y4M2VmZjRlYzFhY2EzODJlZGUwZTEyMDIwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2ExYzJmYWNhNDg5MTQwNzY5YWFhMTIzZjE4ZDFiZmEyID0gJCgnPGRpdiBpZD0iaHRtbF9hMWMyZmFjYTQ4OTE0MDc2OWFhYTEyM2YxOGQxYmZhMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84MGFlMzNmODNlZmY0ZWMxYWNhMzgyZWRlMGUxMjAyMC5zZXRDb250ZW50KGh0bWxfYTFjMmZhY2E0ODkxNDA3NjlhYWExMjNmMThkMWJmYTIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNWVmNzc2NjM1MDYyNDZhZmFiZmNlNjhkYmFkN2ZkNWMuYmluZFBvcHVwKHBvcHVwXzgwYWUzM2Y4M2VmZjRlYzFhY2EzODJlZGUwZTEyMDIwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzY0NzEwMWNlODQ3YTQzNDA5MTdhYzdlY2Q4YWRkYjkxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzVjYWU4YWExMmEwYTRhZWE5YzYxY2RmYWYyMTU5ZjMyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2NmN2Q5YjI1ODY0ZTQ0NWU5YjIyNjM3M2EwZWM3Yzg4ID0gJCgnPGRpdiBpZD0iaHRtbF9jZjdkOWIyNTg2NGU0NDVlOWIyMjYzNzNhMGVjN2M4OCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81Y2FlOGFhMTJhMGE0YWVhOWM2MWNkZmFmMjE1OWYzMi5zZXRDb250ZW50KGh0bWxfY2Y3ZDliMjU4NjRlNDQ1ZTliMjI2MzczYTBlYzdjODgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNjQ3MTAxY2U4NDdhNDM0MDkxN2FjN2VjZDhhZGRiOTEuYmluZFBvcHVwKHBvcHVwXzVjYWU4YWExMmEwYTRhZWE5YzYxY2RmYWYyMTU5ZjMyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzBlOTlkNTdlZDQwZDRjNGRiZGZlODAwNDgwNDkxNjUwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NTI4MDYyNzQ2NSwtMTIyLjQ3NTY0NzQ2MDc4NTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZWVmYzdjYjVjZjkxNGQ5OGE4NWE4NTg1MWU5NGVhZTUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTJiNmJmOTE5MGYwNDAzODhlNGYzMTRhNDdhNzU0ODAgPSAkKCc8ZGl2IGlkPSJodG1sX2UyYjZiZjkxOTBmMDQwMzg4ZTRmMzE0YTQ3YTc1NDgwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5ST0JCRVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lZWZjN2NiNWNmOTE0ZDk4YTg1YTg1ODUxZTk0ZWFlNS5zZXRDb250ZW50KGh0bWxfZTJiNmJmOTE5MGYwNDAzODhlNGYzMTRhNDdhNzU0ODApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMGU5OWQ1N2VkNDBkNGM0ZGJkZmU4MDA0ODA0OTE2NTAuYmluZFBvcHVwKHBvcHVwX2VlZmM3Y2I1Y2Y5MTRkOThhODVhODU4NTFlOTRlYWU1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2E2MTAxNDdiOWQ3YzQ5YWFiMGI1ZThiMDViMDk2NmMzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQyODUxNzM3NDQ0ODk0LC0xMjIuNDIwOTY3NDQwNTY0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzliNzUxZjFlZDVjNGM5MTliN2Q2ZDE2YTY0YWE0M2UgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZWViODRkMjIxMGM5NDE3ZjhjNTQzNTliNDczOTRhNjIgPSAkKCc8ZGl2IGlkPSJodG1sX2VlYjg0ZDIyMTBjOTQxN2Y4YzU0MzU5YjQ3Mzk0YTYyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzliNzUxZjFlZDVjNGM5MTliN2Q2ZDE2YTY0YWE0M2Uuc2V0Q29udGVudChodG1sX2VlYjg0ZDIyMTBjOTQxN2Y4YzU0MzU5YjQ3Mzk0YTYyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2E2MTAxNDdiOWQ3YzQ5YWFiMGI1ZThiMDViMDk2NmMzLmJpbmRQb3B1cChwb3B1cF9jOWI3NTFmMWVkNWM0YzkxOWI3ZDZkMTZhNjRhYTQzZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kNmY5NzI3MzE1MWQ0MjIxYWE3MTVlYzRhZTU0NjIyYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83NzAyNWE2ZTM3NGE0NWVhOGU4MDlhZDc2ZDNkZDQyMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85YjhmMzA3YWZkNzc0YzBmYjJiODYxZjZkNTAwODk1MiA9ICQoJzxkaXYgaWQ9Imh0bWxfOWI4ZjMwN2FmZDc3NGMwZmIyYjg2MWY2ZDUwMDg5NTIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzcwMjVhNmUzNzRhNDVlYThlODA5YWQ3NmQzZGQ0MjMuc2V0Q29udGVudChodG1sXzliOGYzMDdhZmQ3NzRjMGZiMmI4NjFmNmQ1MDA4OTUyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2Q2Zjk3MjczMTUxZDQyMjFhYTcxNWVjNGFlNTQ2MjJjLmJpbmRQb3B1cChwb3B1cF83NzAyNWE2ZTM3NGE0NWVhOGU4MDlhZDc2ZDNkZDQyMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wMDkxNjViY2QxNmE0MDAzOTJhNmM1OTdlOGE2NzA3MCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3OTE2NzQyMTg5NjMsLTEyMi40MDYzNDY0MjU2MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kNDMzNzJlMGY5ZTg0MWJmODk0NzBiOWM0ZTg3YjAwOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xNjFiOWY1NjY1Njc0OTQwODgyYThkZjNlYmM2YzlmNyA9ICQoJzxkaXYgaWQ9Imh0bWxfMTYxYjlmNTY2NTY3NDk0MDg4MmE4ZGYzZWJjNmM5ZjciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Q0MzM3MmUwZjllODQxYmY4OTQ3MGI5YzRlODdiMDA4LnNldENvbnRlbnQoaHRtbF8xNjFiOWY1NjY1Njc0OTQwODgyYThkZjNlYmM2YzlmNyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wMDkxNjViY2QxNmE0MDAzOTJhNmM1OTdlOGE2NzA3MC5iaW5kUG9wdXAocG9wdXBfZDQzMzcyZTBmOWU4NDFiZjg5NDcwYjljNGU4N2IwMDgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTFiMmVjZGFhYjNlNDUwNWJhYjQzMTFmYWZiMjliY2UgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjU3MTg0Mzk1MjgyLC0xMjIuNDA5NTI5OTEzMjc4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDMxNjNjZjExMDUxNGUwMThlNGRkMjA1OTI5ZjE4MTkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzFhMDI4YTdiMzRiNDQwMTg3NmYyZmIwZjJiOGYwMjQgPSAkKCc8ZGl2IGlkPSJodG1sX2MxYTAyOGE3YjM0YjQ0MDE4NzZmMmZiMGYyYjhmMDI0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kMzE2M2NmMTEwNTE0ZTAxOGU0ZGQyMDU5MjlmMTgxOS5zZXRDb250ZW50KGh0bWxfYzFhMDI4YTdiMzRiNDQwMTg3NmYyZmIwZjJiOGYwMjQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZTFiMmVjZGFhYjNlNDUwNWJhYjQzMTFmYWZiMjliY2UuYmluZFBvcHVwKHBvcHVwX2QzMTYzY2YxMTA1MTRlMDE4ZTRkZDIwNTkyOWYxODE5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg1MzVhYmUyYjliMjRkNjdhMTQxYTRiY2Q2NWU0ZGRjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yMjczNjk4NDU3Njc0MThiYWEwZGFhMmZkOTkzYjA5NCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84MzkwYzg0NTA5Mjk0YzY2ODM1ZTMxNThjNTU4NzJjMiA9ICQoJzxkaXYgaWQ9Imh0bWxfODM5MGM4NDUwOTI5NGM2NjgzNWUzMTU4YzU1ODcyYzIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjI3MzY5ODQ1NzY3NDE4YmFhMGRhYTJmZDk5M2IwOTQuc2V0Q29udGVudChodG1sXzgzOTBjODQ1MDkyOTRjNjY4MzVlMzE1OGM1NTg3MmMyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzg1MzVhYmUyYjliMjRkNjdhMTQxYTRiY2Q2NWU0ZGRjLmJpbmRQb3B1cChwb3B1cF8yMjczNjk4NDU3Njc0MThiYWEwZGFhMmZkOTkzYjA5NCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mYzc0YWVlOGFkZGE0MzZmOWU4NzcyZjdiMzEzZDI5YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NzUyNDMwODc4MywtMTIyLjQxMDczODA5NzMxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2E2YjNmYmQ4OThiMTRlNTliNzE3ZWE4YTgyOThjYzIyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQ0ZDk2NjE2NTA3YzQ5Y2I5ODMwNTZmYTk4OTM0OTBkID0gJCgnPGRpdiBpZD0iaHRtbF80NGQ5NjYxNjUwN2M0OWNiOTgzMDU2ZmE5ODkzNDkwZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2E2YjNmYmQ4OThiMTRlNTliNzE3ZWE4YTgyOThjYzIyLnNldENvbnRlbnQoaHRtbF80NGQ5NjYxNjUwN2M0OWNiOTgzMDU2ZmE5ODkzNDkwZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mYzc0YWVlOGFkZGE0MzZmOWU4NzcyZjdiMzEzZDI5YS5iaW5kUG9wdXAocG9wdXBfYTZiM2ZiZDg5OGIxNGU1OWI3MTdlYThhODI5OGNjMjIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzg0ZmM0YWM0ZDJmNDcyMDg1ZDllZTdiY2JlNzFjOWEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lYjliZGE0ZTgwNGY0NjVjYmYwYzcyYjg4YTRlYjE4MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mZWRjMjNhMjM3YTA0NzNkYjYyNmI2ZmFiNWI4MTUyZCA9ICQoJzxkaXYgaWQ9Imh0bWxfZmVkYzIzYTIzN2EwNDczZGI2MjZiNmZhYjViODE1MmQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lYjliZGE0ZTgwNGY0NjVjYmYwYzcyYjg4YTRlYjE4Mi5zZXRDb250ZW50KGh0bWxfZmVkYzIzYTIzN2EwNDczZGI2MjZiNmZhYjViODE1MmQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNzg0ZmM0YWM0ZDJmNDcyMDg1ZDllZTdiY2JlNzFjOWEuYmluZFBvcHVwKHBvcHVwX2ViOWJkYTRlODA0ZjQ2NWNiZjBjNzJiODhhNGViMTgyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzFmNzdmYjZmZDI1ZjRkOTQ5NjAyNDc4OTU5NmUyMTM5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzAwMjllMThmMjZiNDRmZjk5ZDliMzI3ODUwYjJiMTVjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RkYjhiOWYzOGFjZDRjY2FiODgyMTY5MjE3MGJkYjQ1ID0gJCgnPGRpdiBpZD0iaHRtbF9kZGI4YjlmMzhhY2Q0Y2NhYjg4MjE2OTIxNzBiZGI0NSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzAwMjllMThmMjZiNDRmZjk5ZDliMzI3ODUwYjJiMTVjLnNldENvbnRlbnQoaHRtbF9kZGI4YjlmMzhhY2Q0Y2NhYjg4MjE2OTIxNzBiZGI0NSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xZjc3ZmI2ZmQyNWY0ZDk0OTYwMjQ3ODk1OTZlMjEzOS5iaW5kUG9wdXAocG9wdXBfMDAyOWUxOGYyNmI0NGZmOTlkOWIzMjc4NTBiMmIxNWMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfM2Y3MmQ5NGJjNmU2NGI0YTlkNTczYjdiMDhiYWY3MTIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTMxMDgzNDMzMjY0LC0xMjIuNDQ0MzE0MDI1MTg4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfY2UxOGI1NTM4MTUzNGI3NmI0OTYxYTBkZGI4YzkyODkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDkxOTU1NzQ4MTIzNGQyZjlmMDg2NTBjMGUyOGY1MWMgPSAkKCc8ZGl2IGlkPSJodG1sX2Q5MTk1NTc0ODEyMzRkMmY5ZjA4NjUwYzBlMjhmNTFjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jZTE4YjU1MzgxNTM0Yjc2YjQ5NjFhMGRkYjhjOTI4OS5zZXRDb250ZW50KGh0bWxfZDkxOTU1NzQ4MTIzNGQyZjlmMDg2NTBjMGUyOGY1MWMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfM2Y3MmQ5NGJjNmU2NGI0YTlkNTczYjdiMDhiYWY3MTIuYmluZFBvcHVwKHBvcHVwX2NlMThiNTUzODE1MzRiNzZiNDk2MWEwZGRiOGM5Mjg5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJjYjJmZTM5MzU2NDRhMGM4ZDNjODJjN2E3NzY2YmI3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2I5ZDRhY2ZkNDYzZjQyMWU5ZWQwZmM5MzdkM2M2MTBlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzU1MTRjZGExZWE2NTRjN2M4OTIwNmRiZmQ5MTBlZjViID0gJCgnPGRpdiBpZD0iaHRtbF81NTE0Y2RhMWVhNjU0YzdjODkyMDZkYmZkOTEwZWY1YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2I5ZDRhY2ZkNDYzZjQyMWU5ZWQwZmM5MzdkM2M2MTBlLnNldENvbnRlbnQoaHRtbF81NTE0Y2RhMWVhNjU0YzdjODkyMDZkYmZkOTEwZWY1Yik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yY2IyZmUzOTM1NjQ0YTBjOGQzYzgyYzdhNzc2NmJiNy5iaW5kUG9wdXAocG9wdXBfYjlkNGFjZmQ0NjNmNDIxZTllZDBmYzkzN2QzYzYxMGUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNmE2YjkwNjcwMmViNDJkZWJhZDMzY2U4ZGRjYzE2ZjggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjYwMTYwMTE0MTAzLC0xMjIuNDAzNjQ0NjIwNDM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDk5YWYxMGRmMjFmNGNjMjhjYzMyMWUxN2Q3OGRjYjkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZmJjMDI1NjQ4ZjI0NDQyMmEwOTRiMmNmMGUyZmRkNmUgPSAkKCc8ZGl2IGlkPSJodG1sX2ZiYzAyNTY0OGYyNDQ0MjJhMDk0YjJjZjBlMmZkZDZlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZDk5YWYxMGRmMjFmNGNjMjhjYzMyMWUxN2Q3OGRjYjkuc2V0Q29udGVudChodG1sX2ZiYzAyNTY0OGYyNDQ0MjJhMDk0YjJjZjBlMmZkZDZlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzZhNmI5MDY3MDJlYjQyZGViYWQzM2NlOGRkY2MxNmY4LmJpbmRQb3B1cChwb3B1cF9kOTlhZjEwZGYyMWY0Y2MyOGNjMzIxZTE3ZDc4ZGNiOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kYTc4ZWI4MGVmNWQ0YTVmYmM5ZTk5ZmRjMzliMzgwMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NjIzMTA0MDQ3NTgsLTEyMi40MTQ3MTQyOTU1Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc3MzgzYjZhYTRjOTRhOWFhNzhiZTZhNGY5ODhhMDZjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2JiZDliMGU4YmEzNTQzOTI5ZGNmZTZmNTcxODE1NGY5ID0gJCgnPGRpdiBpZD0iaHRtbF9iYmQ5YjBlOGJhMzU0MzkyOWRjZmU2ZjU3MTgxNTRmOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzczODNiNmFhNGM5NGE5YWE3OGJlNmE0Zjk4OGEwNmMuc2V0Q29udGVudChodG1sX2JiZDliMGU4YmEzNTQzOTI5ZGNmZTZmNTcxODE1NGY5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2RhNzhlYjgwZWY1ZDRhNWZiYzllOTlmZGMzOWIzODAwLmJpbmRQb3B1cChwb3B1cF83NzM4M2I2YWE0Yzk0YTlhYTc4YmU2YTRmOTg4YTA2Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jMDA1YzZjODQ3MDY0MWIwODVkZTViYzZhMWJmYzZkZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NjIzMTA0MDQ3NTgsLTEyMi40MTQ3MTQyOTU1Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQzZWU4YTg2ZGFhMTQ5MGI5ODNkNWE0NWYyYTgyZDJmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Q0ZDE2NTU3OTNjMjRkZmQ4Mjk2ZWY1OTJmYjAwNThjID0gJCgnPGRpdiBpZD0iaHRtbF9kNGQxNjU1NzkzYzI0ZGZkODI5NmVmNTkyZmIwMDU4YyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQzZWU4YTg2ZGFhMTQ5MGI5ODNkNWE0NWYyYTgyZDJmLnNldENvbnRlbnQoaHRtbF9kNGQxNjU1NzkzYzI0ZGZkODI5NmVmNTkyZmIwMDU4Yyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jMDA1YzZjODQ3MDY0MWIwODVkZTViYzZhMWJmYzZkZi5iaW5kUG9wdXAocG9wdXBfNDNlZThhODZkYWExNDkwYjk4M2Q1YTQ1ZjJhODJkMmYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjM5YjFmYmRmNjkyNGNlMWFlM2ZiZjFlMDE1OGFjYjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Nzc1MTE4ODk1Njk1LC0xMjIuNDE4MDQ1NDUyNzY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTcyMGRlYWNjZmE5NGM5NGEwY2I4ODVhNDM1MWRiZDAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOGVhMmI3NWRlYTFmNDJmNDgzNzhiNjRmYmI2Zjk5N2EgPSAkKCc8ZGl2IGlkPSJodG1sXzhlYTJiNzVkZWExZjQyZjQ4Mzc4YjY0ZmJiNmY5OTdhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81NzIwZGVhY2NmYTk0Yzk0YTBjYjg4NWE0MzUxZGJkMC5zZXRDb250ZW50KGh0bWxfOGVhMmI3NWRlYTFmNDJmNDgzNzhiNjRmYmI2Zjk5N2EpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYjM5YjFmYmRmNjkyNGNlMWFlM2ZiZjFlMDE1OGFjYjIuYmluZFBvcHVwKHBvcHVwXzU3MjBkZWFjY2ZhOTRjOTRhMGNiODg1YTQzNTFkYmQwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzgyZDcyOTU0NTNlMzRmYWRhZmUyZjQ2ZWYyM2Y0OGQyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgyMDIzODQ3ODk3NSwtMTIyLjQwMTE2MTU1NTYwMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Y4MDlmMGMyNGNjMTQ0OGM4YzQyYWRmMjQyNzU5YmRlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2NhZWM0ZjA3MTJiMzQ0NzI4ZmFmY2FlYjM2MzJkZTkzID0gJCgnPGRpdiBpZD0iaHRtbF9jYWVjNGYwNzEyYjM0NDcyOGZhZmNhZWIzNjMyZGU5MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Y4MDlmMGMyNGNjMTQ0OGM4YzQyYWRmMjQyNzU5YmRlLnNldENvbnRlbnQoaHRtbF9jYWVjNGYwNzEyYjM0NDcyOGZhZmNhZWIzNjMyZGU5Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl84MmQ3Mjk1NDUzZTM0ZmFkYWZlMmY0NmVmMjNmNDhkMi5iaW5kUG9wdXAocG9wdXBfZjgwOWYwYzI0Y2MxNDQ4YzhjNDJhZGYyNDI3NTliZGUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfN2IwNmRlMDFmMmQyNGEzOWJkN2ViNDE5ZmI3MWJkZGIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjcwMDUzMTk2Mjk5OTUsLTEyMi40MDM0MDg2NjkxOTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82ODU1MzZjN2Y1Nzc0ZWEyOGM2ZDg0NmIyNWY5ZmE3ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xMDY4MTdkYjI3N2Y0YzcxOWE4YjJjZmFlYTJkOWJlNSA9ICQoJzxkaXYgaWQ9Imh0bWxfMTA2ODE3ZGIyNzdmNGM3MTlhOGIyY2ZhZWEyZDliZTUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82ODU1MzZjN2Y1Nzc0ZWEyOGM2ZDg0NmIyNWY5ZmE3ZC5zZXRDb250ZW50KGh0bWxfMTA2ODE3ZGIyNzdmNGM3MTlhOGIyY2ZhZWEyZDliZTUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfN2IwNmRlMDFmMmQyNGEzOWJkN2ViNDE5ZmI3MWJkZGIuYmluZFBvcHVwKHBvcHVwXzY4NTUzNmM3ZjU3NzRlYTI4YzZkODQ2YjI1ZjlmYTdkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg4ODRlM2UwYTU5ZjQxNWZhZjdkMzY1ODAwMWNlMTU3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzA3ZTFjZjVjNjJjODRjN2JhYTg1MWU3ODdmNTMxYTYzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2VjNzM0Y2IyYjM2MTQ0ZTI5Mjg2ZDBkNzVkZThkZWMxID0gJCgnPGRpdiBpZD0iaHRtbF9lYzczNGNiMmIzNjE0NGUyOTI4NmQwZDc1ZGU4ZGVjMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wN2UxY2Y1YzYyYzg0YzdiYWE4NTFlNzg3ZjUzMWE2My5zZXRDb250ZW50KGh0bWxfZWM3MzRjYjJiMzYxNDRlMjkyODZkMGQ3NWRlOGRlYzEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfODg4NGUzZTBhNTlmNDE1ZmFmN2QzNjU4MDAxY2UxNTcuYmluZFBvcHVwKHBvcHVwXzA3ZTFjZjVjNjJjODRjN2JhYTg1MWU3ODdmNTMxYTYzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2EwYmMzM2Y1OWM0MDQwNWM4NmVmYjA1OTEwMTYwM2Q0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzUzMDE4NjUzNzQ0NjA0LC0xMjIuNDE4NTg3MTcyMjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZmJhZjYzYjY5ZTJmNGIwMTg5MzA1MjdiY2E4Y2E3ZTcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDVkNjc2YTI1MDczNGQ0NzkwM2QzOWNlYzQwMGM3MDEgPSAkKCc8ZGl2IGlkPSJodG1sXzQ1ZDY3NmEyNTA3MzRkNDc5MDNkMzljZWM0MDBjNzAxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ZiYWY2M2I2OWUyZjRiMDE4OTMwNTI3YmNhOGNhN2U3LnNldENvbnRlbnQoaHRtbF80NWQ2NzZhMjUwNzM0ZDQ3OTAzZDM5Y2VjNDAwYzcwMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9hMGJjMzNmNTljNDA0MDVjODZlZmIwNTkxMDE2MDNkNC5iaW5kUG9wdXAocG9wdXBfZmJhZjYzYjY5ZTJmNGIwMTg5MzA1MjdiY2E4Y2E3ZTcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTRmM2Y5ZTY5YTkzNGYwYzhhMjJmOWNjNDVjZTRmMDcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOWQ1YzkzMmE1MDQ4NDk4Zjk0MTYwMTk4MDI3ZjkxYTYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYWNlY2E3OTExZDhkNDFmOWJiY2FhNDJjMTQxNzAxNWUgPSAkKCc8ZGl2IGlkPSJodG1sX2FjZWNhNzkxMWQ4ZDQxZjliYmNhYTQyYzE0MTcwMTVlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5GUkFVRDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOWQ1YzkzMmE1MDQ4NDk4Zjk0MTYwMTk4MDI3ZjkxYTYuc2V0Q29udGVudChodG1sX2FjZWNhNzkxMWQ4ZDQxZjliYmNhYTQyYzE0MTcwMTVlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2E0ZjNmOWU2OWE5MzRmMGM4YTIyZjljYzQ1Y2U0ZjA3LmJpbmRQb3B1cChwb3B1cF85ZDVjOTMyYTUwNDg0OThmOTQxNjAxOTgwMjdmOTFhNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jOTNhNTkzNDFkYjE0NjIwOTcyY2FiMTJmNzBiMDM4OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5MDUzODk5MzcyNSwtMTIyLjQwMzkxNTY4MTU3MTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZGQ2NmI3NTJkYWVhNGYzZDg3OWI2NzQ4NDk5M2UzOTYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTkwN2JlZTQwNTRjNGU4Y2I3YjQzMzc4ZWNiODNmYTAgPSAkKCc8ZGl2IGlkPSJodG1sXzk5MDdiZWU0MDU0YzRlOGNiN2I0MzM3OGVjYjgzZmEwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kZDY2Yjc1MmRhZWE0ZjNkODc5YjY3NDg0OTkzZTM5Ni5zZXRDb250ZW50KGh0bWxfOTkwN2JlZTQwNTRjNGU4Y2I3YjQzMzc4ZWNiODNmYTApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYzkzYTU5MzQxZGIxNDYyMDk3MmNhYjEyZjcwYjAzODkuYmluZFBvcHVwKHBvcHVwX2RkNjZiNzUyZGFlYTRmM2Q4NzliNjc0ODQ5OTNlMzk2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzlkNmYwNWQ2ZGQ0ZDQ1MzY4ZmQyMmViYmNiY2VkY2Q5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzMDk5ODI0NDU5MjEsLTEyMi40MTkxODMwOTYzNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80MWJkNDdhYjZmMTM0YzFmYmRmYTQzN2Y5ZjJmZWRmMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wMDcwMjRmMzA3ODc0YmNjOTViY2VkMzAzNGYyZWNiNSA9ICQoJzxkaXYgaWQ9Imh0bWxfMDA3MDI0ZjMwNzg3NGJjYzk1YmNlZDMwMzRmMmVjYjUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80MWJkNDdhYjZmMTM0YzFmYmRmYTQzN2Y5ZjJmZWRmMi5zZXRDb250ZW50KGh0bWxfMDA3MDI0ZjMwNzg3NGJjYzk1YmNlZDMwMzRmMmVjYjUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOWQ2ZjA1ZDZkZDRkNDUzNjhmZDIyZWJiY2JjZWRjZDkuYmluZFBvcHVwKHBvcHVwXzQxYmQ0N2FiNmYxMzRjMWZiZGZhNDM3ZjlmMmZlZGYyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzA1NzY1Y2E1YTA5NTRmNDdhOWE3YjNjZTA0MzZiOTFkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQwNzM2MDU0ODM1NzksLTEyMi4zODg3NTMwNDY5OTddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jNTVkYTM5MWU0ODU0NWViOGJhNmJlOGVkNTNiN2IxNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80YTZjY2JlNzgxN2Q0MWRjODgxMjg5NWYwNWRiMjM2YyA9ICQoJzxkaXYgaWQ9Imh0bWxfNGE2Y2NiZTc4MTdkNDFkYzg4MTI4OTVmMDVkYjIzNmMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jNTVkYTM5MWU0ODU0NWViOGJhNmJlOGVkNTNiN2IxNS5zZXRDb250ZW50KGh0bWxfNGE2Y2NiZTc4MTdkNDFkYzg4MTI4OTVmMDVkYjIzNmMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMDU3NjVjYTVhMDk1NGY0N2E5YTdiM2NlMDQzNmI5MWQuYmluZFBvcHVwKHBvcHVwX2M1NWRhMzkxZTQ4NTQ1ZWI4YmE2YmU4ZWQ1M2I3YjE1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdhY2M1NmJjNzAyNTQ5ZmY4Y2UyYjllOGM4ZGUxNTEzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc0OTkxMjk0NDM2NiwtMTIyLjQzNzc5OTcwMzQ2OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzY0NmY2MWVhNDk2NTQ2OWFiMjY2NDdmZGM4NmFiY2E4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2M2NjU4Y2Y3M2ZkMDRkOTU5NGViOTJlM2MzZDMzZjlkID0gJCgnPGRpdiBpZD0iaHRtbF9jNjY1OGNmNzNmZDA0ZDk1OTRlYjkyZTNjM2QzM2Y5ZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjQ2ZjYxZWE0OTY1NDY5YWIyNjY0N2ZkYzg2YWJjYTguc2V0Q29udGVudChodG1sX2M2NjU4Y2Y3M2ZkMDRkOTU5NGViOTJlM2MzZDMzZjlkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzdhY2M1NmJjNzAyNTQ5ZmY4Y2UyYjllOGM4ZGUxNTEzLmJpbmRQb3B1cChwb3B1cF82NDZmNjFlYTQ5NjU0NjlhYjI2NjQ3ZmRjODZhYmNhOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mZmRhZmI1NzYwMWE0NzUzYmNlMmVhZWM5NjMxNzJjZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzA5MDI3NDM2NjksLTEyMi40MjEzMzI2ODQ2MzNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85OGQ0MjM5MGIwNTM0YjQwYmQ3ZmRlODY3NTRhMjEwMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zNjk3Y2RiMTU2MWY0Mzc3OTZiY2M3M2YxMTliZWZmZCA9ICQoJzxkaXYgaWQ9Imh0bWxfMzY5N2NkYjE1NjFmNDM3Nzk2YmNjNzNmMTE5YmVmZmQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85OGQ0MjM5MGIwNTM0YjQwYmQ3ZmRlODY3NTRhMjEwMC5zZXRDb250ZW50KGh0bWxfMzY5N2NkYjE1NjFmNDM3Nzk2YmNjNzNmMTE5YmVmZmQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZmZkYWZiNTc2MDFhNDc1M2JjZTJlYWVjOTYzMTcyY2QuYmluZFBvcHVwKHBvcHVwXzk4ZDQyMzkwYjA1MzRiNDBiZDdmZGU4Njc1NGEyMTAwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2QzZjI5NzJkMjY4NTRkOTRhYjIxNWY2ZTgxZWE1Mzc3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3MDkwMjc0MzY2OSwtMTIyLjQyMTMzMjY4NDYzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzMyNmU2MzJhYTc5ZjQxYzVhYjM5YjJlNzk1OTUzZWQ0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2QwMzBkNDliZmJkNjRlYWNhOTgxMzgxNzg3ZTYzMjlhID0gJCgnPGRpdiBpZD0iaHRtbF9kMDMwZDQ5YmZiZDY0ZWFjYTk4MTM4MTc4N2U2MzI5YSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzMyNmU2MzJhYTc5ZjQxYzVhYjM5YjJlNzk1OTUzZWQ0LnNldENvbnRlbnQoaHRtbF9kMDMwZDQ5YmZiZDY0ZWFjYTk4MTM4MTc4N2U2MzI5YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kM2YyOTcyZDI2ODU0ZDk0YWIyMTVmNmU4MWVhNTM3Ny5iaW5kUG9wdXAocG9wdXBfMzI2ZTYzMmFhNzlmNDFjNWFiMzliMmU3OTU5NTNlZDQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWViOTY4OTlkMmQwNDU2M2I2NDVhODM5M2ExNDBiNDEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTdiZjRiY2ViOWVhNDA1ZDljNjc4YTMzNDg3Mzk4MTYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDk3YTQ5YjhkNGRkNGFmZTkxNmFjOTU2YzZmZmQ4MDYgPSAkKCc8ZGl2IGlkPSJodG1sXzA5N2E0OWI4ZDRkZDRhZmU5MTZhYzk1NmM2ZmZkODA2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTdiZjRiY2ViOWVhNDA1ZDljNjc4YTMzNDg3Mzk4MTYuc2V0Q29udGVudChodG1sXzA5N2E0OWI4ZDRkZDRhZmU5MTZhYzk1NmM2ZmZkODA2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2VlYjk2ODk5ZDJkMDQ1NjNiNjQ1YTgzOTNhMTQwYjQxLmJpbmRQb3B1cChwb3B1cF81N2JmNGJjZWI5ZWE0MDVkOWM2NzhhMzM0ODczOTgxNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80MmUyMzFmODM5MGI0ZWJiOTUwYTVjMmI1ZGVjODRjMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDAzNzk5OTUxMjc5NSwtMTIyLjQwNDU5NDE0MDYzNF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2E5YTBkYmVjNjYxOTQ4OTk5ZDEyYWQ2YzRmM2MzZWFlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhhOWQ5MDc1MjIyYzQzMmU4MjFkMWMyY2RmZTA1ZTZjID0gJCgnPGRpdiBpZD0iaHRtbF84YTlkOTA3NTIyMmM0MzJlODIxZDFjMmNkZmUwNWU2YyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hOWEwZGJlYzY2MTk0ODk5OWQxMmFkNmM0ZjNjM2VhZS5zZXRDb250ZW50KGh0bWxfOGE5ZDkwNzUyMjJjNDMyZTgyMWQxYzJjZGZlMDVlNmMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNDJlMjMxZjgzOTBiNGViYjk1MGE1YzJiNWRlYzg0YzAuYmluZFBvcHVwKHBvcHVwX2E5YTBkYmVjNjYxOTQ4OTk5ZDEyYWQ2YzRmM2MzZWFlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRhMGE5MDFmMDNkNzQ3MDlhM2M2NTI5OTZjOGQwZTQ3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzk1MzMzODI2NzQzNiwtMTIyLjM5NzM3Mzc0MDA2Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FlYzgwYmNhYjc1MzRhYzZiMzg2MzU4NjM5MjJhNGRhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzE5NGNmNGRlYWUyYjRjNzk5ZDg3OWJmM2M1ZDBhOTQwID0gJCgnPGRpdiBpZD0iaHRtbF8xOTRjZjRkZWFlMmI0Yzc5OWQ4NzliZjNjNWQwYTk0MCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hZWM4MGJjYWI3NTM0YWM2YjM4NjM1ODYzOTIyYTRkYS5zZXRDb250ZW50KGh0bWxfMTk0Y2Y0ZGVhZTJiNGM3OTlkODc5YmYzYzVkMGE5NDApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNGEwYTkwMWYwM2Q3NDcwOWEzYzY1Mjk5NmM4ZDBlNDcuYmluZFBvcHVwKHBvcHVwX2FlYzgwYmNhYjc1MzRhYzZiMzg2MzU4NjM5MjJhNGRhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2QwZDcyYTI1MjAzZjQxODViYTVhMThiNTYwYzYxMmEyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3NTE1ODc0MTYyMjk1LC0xMjIuNDA3NDM0OTg5NTIzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODUyNGVlZTFmNThlNDhjMmEyM2NjMzc5OWMzZGM1MTQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYWU4MTE3OGY2OTVlNDc4YWEwZjE4MTNlNWFhNGFiNTIgPSAkKCc8ZGl2IGlkPSJodG1sX2FlODExNzhmNjk1ZTQ3OGFhMGYxODEzZTVhYTRhYjUyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODUyNGVlZTFmNThlNDhjMmEyM2NjMzc5OWMzZGM1MTQuc2V0Q29udGVudChodG1sX2FlODExNzhmNjk1ZTQ3OGFhMGYxODEzZTVhYTRhYjUyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2QwZDcyYTI1MjAzZjQxODViYTVhMThiNTYwYzYxMmEyLmJpbmRQb3B1cChwb3B1cF84NTI0ZWVlMWY1OGU0OGMyYTIzY2MzNzk5YzNkYzUxNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lNzBjODYzNTM0MWM0MDA3OWYxMGIwYmU4NGJkMDA4MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3ODUyMzM3NzYwMzIsLTEyMi40MDM0NjQwODAwMzNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zMTM2MmQwMzM1ZGU0YWEwYjJkMWQwYTg3MjEyOThkMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84NjE5ZjBiNjBkZDM0NzJjYjJiNDA2ZTE0Yzc1MGU5ZiA9ICQoJzxkaXYgaWQ9Imh0bWxfODYxOWYwYjYwZGQzNDcyY2IyYjQwNmUxNGM3NTBlOWYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlBST1NUSVRVVElPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzEzNjJkMDMzNWRlNGFhMGIyZDFkMGE4NzIxMjk4ZDAuc2V0Q29udGVudChodG1sXzg2MTlmMGI2MGRkMzQ3MmNiMmI0MDZlMTRjNzUwZTlmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2U3MGM4NjM1MzQxYzQwMDc5ZjEwYjBiZTg0YmQwMDgyLmJpbmRQb3B1cChwb3B1cF8zMTM2MmQwMzM1ZGU0YWEwYjJkMWQwYTg3MjEyOThkMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zZDI5NDBmN2NjMzE0ODk1ODY0OWJmMjE3Mjc5YWVjZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3ODUyMzM3NzYwMzIsLTEyMi40MDM0NjQwODAwMzNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84MTJlYjczMzFkYzE0MzE1ODQ0NTMzMWIzNWQxYmIxOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jMDRlZjNjZDhmNDg0NmViYThmZDdjM2ZjY2YyYjE2MyA9ICQoJzxkaXYgaWQ9Imh0bWxfYzA0ZWYzY2Q4ZjQ4NDZlYmE4ZmQ3YzNmY2NmMmIxNjMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84MTJlYjczMzFkYzE0MzE1ODQ0NTMzMWIzNWQxYmIxOC5zZXRDb250ZW50KGh0bWxfYzA0ZWYzY2Q4ZjQ4NDZlYmE4ZmQ3YzNmY2NmMmIxNjMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfM2QyOTQwZjdjYzMxNDg5NTg2NDliZjIxNzI3OWFlY2YuYmluZFBvcHVwKHBvcHVwXzgxMmViNzMzMWRjMTQzMTU4NDQ1MzMxYjM1ZDFiYjE4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzcyOTY5YTlhOGI4NzRhMzViOTY5NTRmNzBjN2U3ZTNiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yNGQ0M2U2M2U0MzA0ZTRkYmE4MzIwOGRlNzhkMDFiMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84YjdiZjAzMDM3MmI0Zjc4YTRmMTEwOTk1N2FmODE1YiA9ICQoJzxkaXYgaWQ9Imh0bWxfOGI3YmYwMzAzNzJiNGY3OGE0ZjExMDk5NTdhZjgxNWIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjRkNDNlNjNlNDMwNGU0ZGJhODMyMDhkZTc4ZDAxYjIuc2V0Q29udGVudChodG1sXzhiN2JmMDMwMzcyYjRmNzhhNGYxMTA5OTU3YWY4MTViKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzcyOTY5YTlhOGI4NzRhMzViOTY5NTRmNzBjN2U3ZTNiLmJpbmRQb3B1cChwb3B1cF8yNGQ0M2U2M2U0MzA0ZTRkYmE4MzIwOGRlNzhkMDFiMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iMTY3YWY0ODk4ZWI0NjUxOTEzY2U2MmJkYTBkMGRhMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDEyNTU4Y2UzYmUzNGRlYTk1MmVlY2Q4NDYzNGEwNmUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzhkMjRlMzc2NDM1NGIwOGIyMzI4MTQ3YmU1MDBhZDEgPSAkKCc8ZGl2IGlkPSJodG1sXzc4ZDI0ZTM3NjQzNTRiMDhiMjMyODE0N2JlNTAwYWQxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kMTI1NThjZTNiZTM0ZGVhOTUyZWVjZDg0NjM0YTA2ZS5zZXRDb250ZW50KGh0bWxfNzhkMjRlMzc2NDM1NGIwOGIyMzI4MTQ3YmU1MDBhZDEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYjE2N2FmNDg5OGViNDY1MTkxM2NlNjJiZGEwZDBkYTMuYmluZFBvcHVwKHBvcHVwX2QxMjU1OGNlM2JlMzRkZWE5NTJlZWNkODQ2MzRhMDZlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRmYjY0YmE1ZGM0MDQ1NzY4MWU0ZDg5Y2Q2YTlhNThjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgwNTI3NTc4NTA5LC0xMjIuMzk2ODQ5MDE1MTcyMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81MTM2NmY2MTAxOTY0ZDA3ODU5MjY3NDZmYjJmZmQ3MCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xNjBkOWE5MGVjZjA0MzM5OWZjNzgzZGU3OTVhMDc1MSA9ICQoJzxkaXYgaWQ9Imh0bWxfMTYwZDlhOTBlY2YwNDMzOTlmYzc4M2RlNzk1YTA3NTEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81MTM2NmY2MTAxOTY0ZDA3ODU5MjY3NDZmYjJmZmQ3MC5zZXRDb250ZW50KGh0bWxfMTYwZDlhOTBlY2YwNDMzOTlmYzc4M2RlNzk1YTA3NTEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNGZiNjRiYTVkYzQwNDU3NjgxZTRkODljZDZhOWE1OGMuYmluZFBvcHVwKHBvcHVwXzUxMzY2ZjYxMDE5NjRkMDc4NTkyNjc0NmZiMmZmZDcwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZlZDgzYWFhODMwNDRhNzQ4OTBhMTYwOGIxZGU4NzBmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOWZmZTJkMzljNjc0NDVhMDg3MTEyN2ZiMTgyZGEzNTcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDNiNGNhMTJkODhiNDkwMmJiOWNlM2M0YTc5NjVkOTEgPSAkKCc8ZGl2IGlkPSJodG1sXzAzYjRjYTEyZDg4YjQ5MDJiYjljZTNjNGE3OTY1ZDkxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85ZmZlMmQzOWM2NzQ0NWEwODcxMTI3ZmIxODJkYTM1Ny5zZXRDb250ZW50KGh0bWxfMDNiNGNhMTJkODhiNDkwMmJiOWNlM2M0YTc5NjVkOTEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNmVkODNhYWE4MzA0NGE3NDg5MGExNjA4YjFkZTg3MGYuYmluZFBvcHVwKHBvcHVwXzlmZmUyZDM5YzY3NDQ1YTA4NzExMjdmYjE4MmRhMzU3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdjOTA1NDQzMmYwMTQ4ZDJhMzBkNGViZDAyZjg5YmYzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI5MjExNDY0NzM1OSwtMTIyLjQwMDgzNDI4MzAzMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzcxOTE1MjkxM2YzYzQzNDViNzc1ZmI5Yjc1ZWIyNTc2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc3ZTA0YjdjMWQ1MDRiNDNiNmQ3NTg2OTk2NzQyNTA2ID0gJCgnPGRpdiBpZD0iaHRtbF83N2UwNGI3YzFkNTA0YjQzYjZkNzU4Njk5Njc0MjUwNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzcxOTE1MjkxM2YzYzQzNDViNzc1ZmI5Yjc1ZWIyNTc2LnNldENvbnRlbnQoaHRtbF83N2UwNGI3YzFkNTA0YjQzYjZkNzU4Njk5Njc0MjUwNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl83YzkwNTQ0MzJmMDE0OGQyYTMwZDRlYmQwMmY4OWJmMy5iaW5kUG9wdXAocG9wdXBfNzE5MTUyOTEzZjNjNDM0NWI3NzVmYjliNzVlYjI1NzYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGUyMTg5NjkyY2RiNDM5MmFjZmNmZDNlNjRmMThjOWIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hNjMwMGVkYmMzNWI0Y2NiYTcwMWZmNjRmNzhhNzYzMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wMmFmMDg0ZDY0MmM0N2NlODllN2I1ODg4YzY1YjYxZiA9ICQoJzxkaXYgaWQ9Imh0bWxfMDJhZjA4NGQ2NDJjNDdjZTg5ZTdiNTg4OGM2NWI2MWYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2E2MzAwZWRiYzM1YjRjY2JhNzAxZmY2NGY3OGE3NjMxLnNldENvbnRlbnQoaHRtbF8wMmFmMDg0ZDY0MmM0N2NlODllN2I1ODg4YzY1YjYxZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kZTIxODk2OTJjZGI0MzkyYWNmY2ZkM2U2NGYxOGM5Yi5iaW5kUG9wdXAocG9wdXBfYTYzMDBlZGJjMzViNGNjYmE3MDFmZjY0Zjc4YTc2MzEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjQ4YTI0YzBjNWQ3NDE5M2FlZDA1MjkyODRjZTExMGYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc5YTZhNGJkMTY4YzRlMDI5MGJlYmRiMTA5YzMzZTMxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2ZhNWU4OTNmMjRmMDRmYmNiY2M1MDExOTM1YTQ4ODNmID0gJCgnPGRpdiBpZD0iaHRtbF9mYTVlODkzZjI0ZjA0ZmJjYmNjNTAxMTkzNWE0ODgzZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U0VDT05EQVJZIENPREVTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83OWE2YTRiZDE2OGM0ZTAyOTBiZWJkYjEwOWMzM2UzMS5zZXRDb250ZW50KGh0bWxfZmE1ZTg5M2YyNGYwNGZiY2JjYzUwMTE5MzVhNDg4M2YpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYjQ4YTI0YzBjNWQ3NDE5M2FlZDA1MjkyODRjZTExMGYuYmluZFBvcHVwKHBvcHVwXzc5YTZhNGJkMTY4YzRlMDI5MGJlYmRiMTA5YzMzZTMxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI3ZWE0YjRmYjI3ZDQ1OTNiODc4ODgzYzE4MjNlMzkxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83ODEzYTY0ODQ3YzQ0NTA1YTE5ZmNhMmJjOWY5ZmQ3ZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80ZDRkZDBmODBlOWY0N2FjYTFmMTI4NzM5YTI5MDI0ZiA9ICQoJzxkaXYgaWQ9Imh0bWxfNGQ0ZGQwZjgwZTlmNDdhY2ExZjEyODczOWEyOTAyNGYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNVU1BJQ0lPVVMgT0NDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83ODEzYTY0ODQ3YzQ0NTA1YTE5ZmNhMmJjOWY5ZmQ3ZS5zZXRDb250ZW50KGh0bWxfNGQ0ZGQwZjgwZTlmNDdhY2ExZjEyODczOWEyOTAyNGYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMjdlYTRiNGZiMjdkNDU5M2I4Nzg4ODNjMTgyM2UzOTEuYmluZFBvcHVwKHBvcHVwXzc4MTNhNjQ4NDdjNDQ1MDVhMTlmY2EyYmM5ZjlmZDdlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAyNDI5YjZiMDhiZDQ2OTE5MGI2YzA3MGQzYTU5ZGY2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xZTFiYTY2ZjIwNTA0OTg5OTdjN2JhNjU3ZmUyYjg1ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wNTZkNjJjNjFmYjM0NWVhOGVmMzgyZjgzOTJlNzE4NiA9ICQoJzxkaXYgaWQ9Imh0bWxfMDU2ZDYyYzYxZmIzNDVlYThlZjM4MmY4MzkyZTcxODYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xZTFiYTY2ZjIwNTA0OTg5OTdjN2JhNjU3ZmUyYjg1ZC5zZXRDb250ZW50KGh0bWxfMDU2ZDYyYzYxZmIzNDVlYThlZjM4MmY4MzkyZTcxODYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMDI0MjliNmIwOGJkNDY5MTkwYjZjMDcwZDNhNTlkZjYuYmluZFBvcHVwKHBvcHVwXzFlMWJhNjZmMjA1MDQ5ODk5N2M3YmE2NTdmZTJiODVkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U2OTZkYzBhMTE4NzQxN2VhNzhiMzk2MGM3NDVmYmU3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg4MzIzNTQ0OTkwNCwtMTIyLjQxMTg1NzAzMjU0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWYwYjJlNDIxNDExNGMzN2JjZTUxYzI5M2IyNGYxMzQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTk0NmVlZTA3OGZlNDYxYjg2ZWNmNWU3ZDhiZWVhMzggPSAkKCc8ZGl2IGlkPSJodG1sXzE5NDZlZWUwNzhmZTQ2MWI4NmVjZjVlN2Q4YmVlYTM4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xZjBiMmU0MjE0MTE0YzM3YmNlNTFjMjkzYjI0ZjEzNC5zZXRDb250ZW50KGh0bWxfMTk0NmVlZTA3OGZlNDYxYjg2ZWNmNWU3ZDhiZWVhMzgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZTY5NmRjMGExMTg3NDE3ZWE3OGIzOTYwYzc0NWZiZTcuYmluZFBvcHVwKHBvcHVwXzFmMGIyZTQyMTQxMTRjMzdiY2U1MWMyOTNiMjRmMTM0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk0ZTIxYzc4N2Q1YzQ0MzQ5MDk5ZGNlMDg5NWIzNGVjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU1OTk3NzMzOTg1NiwtMTIyLjQwOTQzNTYxNzEwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM3ZDZhNTA5YzI5NDQwZTViMjU0M2QxYmM3OTdhNDRjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzMxOWExMzk0MWYzOTQ0MWFiMDdjMjU5ZjVhZmNiMzMxID0gJCgnPGRpdiBpZD0iaHRtbF8zMTlhMTM5NDFmMzk0NDFhYjA3YzI1OWY1YWZjYjMzMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM3ZDZhNTA5YzI5NDQwZTViMjU0M2QxYmM3OTdhNDRjLnNldENvbnRlbnQoaHRtbF8zMTlhMTM5NDFmMzk0NDFhYjA3YzI1OWY1YWZjYjMzMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85NGUyMWM3ODdkNWM0NDM0OTA5OWRjZTA4OTViMzRlYy5iaW5kUG9wdXAocG9wdXBfMzdkNmE1MDljMjk0NDBlNWIyNTQzZDFiYzc5N2E0NGMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjJlMTczNDkxZmEwNDUyNGJjNTNjYmUyMDExOGRkM2YgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODcwNzk4MTQ0NDQzLC0xMjIuNDI1ODgzMzU4MTQ4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYmY1NWUwYzZhZDZhNDY5NjkzMGJhMDhkMjNkNzYyNzYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYmVlZjA3ZDM3ZDQyNDZkMDllODUzNDQ4YmZjYmFjOTEgPSAkKCc8ZGl2IGlkPSJodG1sX2JlZWYwN2QzN2Q0MjQ2ZDA5ZTg1MzQ0OGJmY2JhYzkxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2JmNTVlMGM2YWQ2YTQ2OTY5MzBiYTA4ZDIzZDc2Mjc2LnNldENvbnRlbnQoaHRtbF9iZWVmMDdkMzdkNDI0NmQwOWU4NTM0NDhiZmNiYWM5MSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yMmUxNzM0OTFmYTA0NTI0YmM1M2NiZTIwMTE4ZGQzZi5iaW5kUG9wdXAocG9wdXBfYmY1NWUwYzZhZDZhNDY5NjkzMGJhMDhkMjNkNzYyNzYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfN2JmMTE1OGYwOGYwNDU2ZWEyMzk5M2I0MGFjZTViZmEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzYwMzc0NDY2ODYyMDQsLTEyMi40MTUxMjY1NDMwMDEwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzUxNzg4M2VhMDg4YjQ2OGViMTY0MzFhNzc2MGZiNDhlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzFlYmFlYWMyMjk1YTQ5Mjc4Y2Q1MTg2MGYyMDBkMDNkID0gJCgnPGRpdiBpZD0iaHRtbF8xZWJhZWFjMjI5NWE0OTI3OGNkNTE4NjBmMjAwZDAzZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81MTc4ODNlYTA4OGI0NjhlYjE2NDMxYTc3NjBmYjQ4ZS5zZXRDb250ZW50KGh0bWxfMWViYWVhYzIyOTVhNDkyNzhjZDUxODYwZjIwMGQwM2QpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfN2JmMTE1OGYwOGYwNDU2ZWEyMzk5M2I0MGFjZTViZmEuYmluZFBvcHVwKHBvcHVwXzUxNzg4M2VhMDg4YjQ2OGViMTY0MzFhNzc2MGZiNDhlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZmOGJmMzQwZGM1NTRhZTJhOGE5NjExNmMzZjMzODMwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEyNzY3ODg0ODIxLC0xMjIuNDMxOTI4MDExMDg5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTI2Y2E4NjYxOGJmNGQwMzhlNzVjYzQ4MTY2OWY0YzQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTZkYjMyNGQ2ZTY4NDY0Nzk2NWI2YjRhMDg3YTY5OWMgPSAkKCc8ZGl2IGlkPSJodG1sX2E2ZGIzMjRkNmU2ODQ2NDc5NjViNmI0YTA4N2E2OTljIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTI2Y2E4NjYxOGJmNGQwMzhlNzVjYzQ4MTY2OWY0YzQuc2V0Q29udGVudChodG1sX2E2ZGIzMjRkNmU2ODQ2NDc5NjViNmI0YTA4N2E2OTljKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzZmOGJmMzQwZGM1NTRhZTJhOGE5NjExNmMzZjMzODMwLmJpbmRQb3B1cChwb3B1cF81MjZjYTg2NjE4YmY0ZDAzOGU3NWNjNDgxNjY5ZjRjNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yZGJlYzM1NTFhMmI0NTFjYmEwOTZmYTc2YzE0YjQyNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4OTU3MTAyNTU4NjMsLTEyMi40MDIxNjM3MTM2MThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84ODU2NzYwZDM0YTU0YWM2YWU1YTRhNGZhNjE3NWRjYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kYWE0ZjQzZjkwMGE0N2NiODBjOGFjYzJjNDkyMjQ1MiA9ICQoJzxkaXYgaWQ9Imh0bWxfZGFhNGY0M2Y5MDBhNDdjYjgwYzhhY2MyYzQ5MjI0NTIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkRSVU5LRU5ORVNTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84ODU2NzYwZDM0YTU0YWM2YWU1YTRhNGZhNjE3NWRjYi5zZXRDb250ZW50KGh0bWxfZGFhNGY0M2Y5MDBhNDdjYjgwYzhhY2MyYzQ5MjI0NTIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMmRiZWMzNTUxYTJiNDUxY2JhMDk2ZmE3NmMxNGI0MjUuYmluZFBvcHVwKHBvcHVwXzg4NTY3NjBkMzRhNTRhYzZhZTVhNGE0ZmE2MTc1ZGNiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQ5MzZkMzFiZDI4YzRlNGQ4MGRiN2NkOWFkMTMwYjVmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RkODNhZTE3YmRjMzRmNWZhYjQzZGNlYTY1NTk4MTBkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzk0MzlmYjg5NGM5MjQxM2I5MTdkNzM1ODJlZTZkZjE2ID0gJCgnPGRpdiBpZD0iaHRtbF85NDM5ZmI4OTRjOTI0MTNiOTE3ZDczNTgyZWU2ZGYxNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2RkODNhZTE3YmRjMzRmNWZhYjQzZGNlYTY1NTk4MTBkLnNldENvbnRlbnQoaHRtbF85NDM5ZmI4OTRjOTI0MTNiOTE3ZDczNTgyZWU2ZGYxNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl80OTM2ZDMxYmQyOGM0ZTRkODBkYjdjZDlhZDEzMGI1Zi5iaW5kUG9wdXAocG9wdXBfZGQ4M2FlMTdiZGMzNGY1ZmFiNDNkY2VhNjU1OTgxMGQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjhkMzU0NDY5ZWNlNDFiMmIxMTllZTcwNDY4NmIzYmMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM4MzY1NTY1MzQ3OTQsLTEyMi40MTM3OTA5NzI3ODA5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzk0NTk4OGQwNGI2ODQ3ZDBiODRlNzEwNTczNTcyNjQzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNhMzQ3NWE2N2M5OTQ5MjA5ODcwNGY5MjI3NTYzNmM4ID0gJCgnPGRpdiBpZD0iaHRtbF8zYTM0NzVhNjdjOTk0OTIwOTg3MDRmOTIyNzU2MzZjOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85NDU5ODhkMDRiNjg0N2QwYjg0ZTcxMDU3MzU3MjY0My5zZXRDb250ZW50KGh0bWxfM2EzNDc1YTY3Yzk5NDkyMDk4NzA0ZjkyMjc1NjM2YzgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZjhkMzU0NDY5ZWNlNDFiMmIxMTllZTcwNDY4NmIzYmMuYmluZFBvcHVwKHBvcHVwXzk0NTk4OGQwNGI2ODQ3ZDBiODRlNzEwNTczNTcyNjQzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzNlZmY4Nzk5MWRkMDQ1ZjJhZDViYzNkNmQ0YTJkMTU0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzY0MzE1MjgzNDJhODQxNmZhNmNiNjkwOTg0OWM4M2Y2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2M4MGEzY2Q4ZDc5NTQ5YjhhOGY0OGRjMGMwMjJlNjhmID0gJCgnPGRpdiBpZD0iaHRtbF9jODBhM2NkOGQ3OTU0OWI4YThmNDhkYzBjMDIyZTY4ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzY0MzE1MjgzNDJhODQxNmZhNmNiNjkwOTg0OWM4M2Y2LnNldENvbnRlbnQoaHRtbF9jODBhM2NkOGQ3OTU0OWI4YThmNDhkYzBjMDIyZTY4Zik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zZWZmODc5OTFkZDA0NWYyYWQ1YmMzZDZkNGEyZDE1NC5iaW5kUG9wdXAocG9wdXBfNjQzMTUyODM0MmE4NDE2ZmE2Y2I2OTA5ODQ5YzgzZjYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTc4NGE0YmRiNTdhNGRiN2I4MDAwOTg0NmRiNjczNjkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzczNjIzNjA1MjEyOTYsLTEyMi40MjIwNjcxODQ5MzddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iNzFiMzhkYjNhMmY0YWY2OTJkYTFkOWQzMTg0ZTM5OCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80MmQwZWMzODhiNTY0YWU4OThlZWNhZjZiYmIyMmY2NCA9ICQoJzxkaXYgaWQ9Imh0bWxfNDJkMGVjMzg4YjU2NGFlODk4ZWVjYWY2YmJiMjJmNjQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNFQ09OREFSWSBDT0RFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjcxYjM4ZGIzYTJmNGFmNjkyZGExZDlkMzE4NGUzOTguc2V0Q29udGVudChodG1sXzQyZDBlYzM4OGI1NjRhZTg5OGVlY2FmNmJiYjIyZjY0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzk3ODRhNGJkYjU3YTRkYjdiODAwMDk4NDZkYjY3MzY5LmJpbmRQb3B1cChwb3B1cF9iNzFiMzhkYjNhMmY0YWY2OTJkYTFkOWQzMTg0ZTM5OCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kNWUzOTBhZWUyOTA0ZjRjYTBhYjU2N2Q3NDI0ZTc1MCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNzM2MjM2MDUyMTI5NiwtMTIyLjQyMjA2NzE4NDkzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U2NzZiM2RlMzQzYjQxOTFiNDJlM2Y5ZTU3NDI2NzY4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Q1YTQ1ZjY4OTQzZDQ1ZDQ4MWNiZTg1YjhmM2VhZmIzID0gJCgnPGRpdiBpZD0iaHRtbF9kNWE0NWY2ODk0M2Q0NWQ0ODFjYmU4NWI4ZjNlYWZiMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lNjc2YjNkZTM0M2I0MTkxYjQyZTNmOWU1NzQyNjc2OC5zZXRDb250ZW50KGh0bWxfZDVhNDVmNjg5NDNkNDVkNDgxY2JlODViOGYzZWFmYjMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZDVlMzkwYWVlMjkwNGY0Y2EwYWI1NjdkNzQyNGU3NTAuYmluZFBvcHVwKHBvcHVwX2U2NzZiM2RlMzQzYjQxOTFiNDJlM2Y5ZTU3NDI2NzY4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2NkYTJkMjFjZGIzMTQ5OTI4ODcwMDEwNTFmMWFmODQwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1OTk4ODMyMzc5Nzk2LC0xMjIuNDExNzQ3MzcxOTI0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjY4NmFkNzg3NGJjNDc4ZjlkYmM3YjE5ZWUxNjE3MTcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfY2YwMmU1OTAxNTk5NDk5MDkzMzVhMTFjZWEzMGE4YWQgPSAkKCc8ZGl2IGlkPSJodG1sX2NmMDJlNTkwMTU5OTQ5OTA5MzM1YTExY2VhMzBhOGFkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TVVNQSUNJT1VTIE9DQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjY4NmFkNzg3NGJjNDc4ZjlkYmM3YjE5ZWUxNjE3MTcuc2V0Q29udGVudChodG1sX2NmMDJlNTkwMTU5OTQ5OTA5MzM1YTExY2VhMzBhOGFkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2NkYTJkMjFjZGIzMTQ5OTI4ODcwMDEwNTFmMWFmODQwLmJpbmRQb3B1cChwb3B1cF9mNjg2YWQ3ODc0YmM0NzhmOWRiYzdiMTllZTE2MTcxNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zY2VjNjkxNzUxYTE0OTI1YjYzZDRhMzhmMDNmZmI1MCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzFhODZkM2JmZGMzODQzYTBhZmFhZTFiMGFmNjc0YWM0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzRhMDc1MTBmZDdjZDQ4ZTZhZTkyOWIyM2I2OGIxOWYyID0gJCgnPGRpdiBpZD0iaHRtbF80YTA3NTEwZmQ3Y2Q0OGU2YWU5MjliMjNiNjhiMTlmMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFhODZkM2JmZGMzODQzYTBhZmFhZTFiMGFmNjc0YWM0LnNldENvbnRlbnQoaHRtbF80YTA3NTEwZmQ3Y2Q0OGU2YWU5MjliMjNiNjhiMTlmMik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zY2VjNjkxNzUxYTE0OTI1YjYzZDRhMzhmMDNmZmI1MC5iaW5kUG9wdXAocG9wdXBfMWE4NmQzYmZkYzM4NDNhMGFmYWFlMWIwYWY2NzRhYzQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMGM3MThkYzgwMTFhNDkyOWI5YTNiMWJkNzhhMDcyOTEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODUwMjI2NjIyNzg2LC0xMjIuNDExOTg3NjQzNTk1MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDg2YzdjZTQ2ODM0MzkzODQzMTMyNTRkZGUxNDIzMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83MTYwMGM3OGZkN2Q0ZmI5YjkwYzBjN2VhNWI2YWNhYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hNjBhOTAzYzM1MGQ0MjE3OGQ4NWZhZjk4NzRkNmZhMiA9ICQoJzxkaXYgaWQ9Imh0bWxfYTYwYTkwM2MzNTBkNDIxNzhkODVmYWY5ODc0ZDZmYTIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzE2MDBjNzhmZDdkNGZiOWI5MGMwYzdlYTViNmFjYWMuc2V0Q29udGVudChodG1sX2E2MGE5MDNjMzUwZDQyMTc4ZDg1ZmFmOTg3NGQ2ZmEyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzBjNzE4ZGM4MDExYTQ5MjliOWEzYjFiZDc4YTA3MjkxLmJpbmRQb3B1cChwb3B1cF83MTYwMGM3OGZkN2Q0ZmI5YjkwYzBjN2VhNWI2YWNhYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85Zjc2NjRjZDgyZjU0M2IzOTBkOWYxYmQ2MjBjMDVjMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NDYyMDY0OTEwNjQ5NSwtMTIyLjUwMDM4MDQyNzkxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzk0ZTQ4NjQ2ZjNhYjQ4MjI5ZjMwZmJhMjE4Nzc2NTVkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzg4MWIxYzhmNjA2YzQ0NmQ5YTg3MTdlYjczZGM0NDk4ID0gJCgnPGRpdiBpZD0iaHRtbF84ODFiMWM4ZjYwNmM0NDZkOWE4NzE3ZWI3M2RjNDQ5OCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzk0ZTQ4NjQ2ZjNhYjQ4MjI5ZjMwZmJhMjE4Nzc2NTVkLnNldENvbnRlbnQoaHRtbF84ODFiMWM4ZjYwNmM0NDZkOWE4NzE3ZWI3M2RjNDQ5OCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85Zjc2NjRjZDgyZjU0M2IzOTBkOWYxYmQ2MjBjMDVjMi5iaW5kUG9wdXAocG9wdXBfOTRlNDg2NDZmM2FiNDgyMjlmMzBmYmEyMTg3NzY1NWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTc5NjM5MzI0MTU1NDY3OTg3YWMxMmJmZDE1YjU0ZGYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzUxOTE4MjY3MjE3LC0xMjIuNDY2NTU4NzgwNjgzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzc5Nzg1NzRkOGI4NGNiZWEyZDEwOTg1OGZmNDBhZWEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNWYwNDIwMjZmODAxNGNjZjk1YzI1NWFjYzBjMWU5MDUgPSAkKCc8ZGl2IGlkPSJodG1sXzVmMDQyMDI2ZjgwMTRjY2Y5NWMyNTVhY2MwYzFlOTA1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5ST0JCRVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83Nzk3ODU3NGQ4Yjg0Y2JlYTJkMTA5ODU4ZmY0MGFlYS5zZXRDb250ZW50KGh0bWxfNWYwNDIwMjZmODAxNGNjZjk1YzI1NWFjYzBjMWU5MDUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMTc5NjM5MzI0MTU1NDY3OTg3YWMxMmJmZDE1YjU0ZGYuYmluZFBvcHVwKHBvcHVwXzc3OTc4NTc0ZDhiODRjYmVhMmQxMDk4NThmZjQwYWVhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzcyMzI3MmFkZWNjYzQ2MTc5NGEyYTlkOGU1YzlmYTU2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQ5MDg0MTcyOTAyOCwtMTIyLjQ4NjkyNTk2MDExNDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMGQxNmUzNTRhYmJjNGUzMjliZjdjZDIxYTRmZWM3NzEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjM4ZWMwMDQyMGUwNDFhMjk0Y2MxYWQ3YThjNGQ4MTkgPSAkKCc8ZGl2IGlkPSJodG1sXzYzOGVjMDA0MjBlMDQxYTI5NGNjMWFkN2E4YzRkODE5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMGQxNmUzNTRhYmJjNGUzMjliZjdjZDIxYTRmZWM3NzEuc2V0Q29udGVudChodG1sXzYzOGVjMDA0MjBlMDQxYTI5NGNjMWFkN2E4YzRkODE5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzcyMzI3MmFkZWNjYzQ2MTc5NGEyYTlkOGU1YzlmYTU2LmJpbmRQb3B1cChwb3B1cF8wZDE2ZTM1NGFiYmM0ZTMyOWJmN2NkMjFhNGZlYzc3MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hNGIzNjFmNzk0Zjk0NTczOWNmMjNjNDRiZGEzOWViNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2ODUzNjAxMjM1ODMsLTEyMi40MTU2MTYzMzgzMTk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JmYWQ1YWRiMTgyODQ5MGI4NDQ0N2ZjMDIwYjhiYzdhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzJiZDQwYmUwM2I1OTQ1MzdiOWMyYmFhM2M1ZDZhMThiID0gJCgnPGRpdiBpZD0iaHRtbF8yYmQ0MGJlMDNiNTk0NTM3YjljMmJhYTNjNWQ2YTE4YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iZmFkNWFkYjE4Mjg0OTBiODQ0NDdmYzAyMGI4YmM3YS5zZXRDb250ZW50KGh0bWxfMmJkNDBiZTAzYjU5NDUzN2I5YzJiYWEzYzVkNmExOGIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYTRiMzYxZjc5NGY5NDU3MzljZjIzYzQ0YmRhMzllYjQuYmluZFBvcHVwKHBvcHVwX2JmYWQ1YWRiMTgyODQ5MGI4NDQ0N2ZjMDIwYjhiYzdhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzYzOGZhZTRmMDAxZjQ3Y2Y4MDJjMzNiYmU1MTc1MDgxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NDI5NzcxNDA3NCwtMTIyLjQ0OTc1MTY1MjU2M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0ODZjN2NlNDY4MzQzOTM4NDMxMzI1NGRkZTE0MjMyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM4NjhkYzQwMzc0NjRjMGU4ZGVlZDZmMmQxYWM0MDgwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhkMTBhM2JjMDRiMTQwYjQ5Yjk2MjUxNDFkNGQ0MzcyID0gJCgnPGRpdiBpZD0iaHRtbF84ZDEwYTNiYzA0YjE0MGI0OWI5NjI1MTQxZDRkNDM3MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM4NjhkYzQwMzc0NjRjMGU4ZGVlZDZmMmQxYWM0MDgwLnNldENvbnRlbnQoaHRtbF84ZDEwYTNiYzA0YjE0MGI0OWI5NjI1MTQxZDRkNDM3Mik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82MzhmYWU0ZjAwMWY0N2NmODAyYzMzYmJlNTE3NTA4MS5iaW5kUG9wdXAocG9wdXBfMzg2OGRjNDAzNzQ2NGMwZThkZWVkNmYyZDFhYzQwODApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzkxZDk2YzM2ZWJiNDExMGJlMzQyMzljM2U1YzIyNjcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOGE5YzBhOTkyMjhjNDQ1ZmFjZWU2OTJiZWZjY2Y1NzUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfY2VjZWU4ZjI4NGU3NDYyZmI1MmY2YzI0MWIyYWIyZWEgPSAkKCc8ZGl2IGlkPSJodG1sX2NlY2VlOGYyODRlNzQ2MmZiNTJmNmMyNDFiMmFiMmVhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84YTljMGE5OTIyOGM0NDVmYWNlZTY5MmJlZmNjZjU3NS5zZXRDb250ZW50KGh0bWxfY2VjZWU4ZjI4NGU3NDYyZmI1MmY2YzI0MWIyYWIyZWEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMzkxZDk2YzM2ZWJiNDExMGJlMzQyMzljM2U1YzIyNjcuYmluZFBvcHVwKHBvcHVwXzhhOWMwYTk5MjI4YzQ0NWZhY2VlNjkyYmVmY2NmNTc1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRkNjMxMzVjOWYwNjQ0MDM5MGY3YTgzZmQyNDg2MTEzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM1MjY4MTQ2OTA4Mzk2LC0xMjIuNDcyNzE1NzU5NjMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ4NmM3Y2U0NjgzNDM5Mzg0MzEzMjU0ZGRlMTQyMzIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOWFiODgyOTA0ZTE3NGM4Njg2ZTExYWY3ODY3NWViNjUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZmI3MjlhMmU0NWUzNGQxODgzYWM3NDIzMzM4YmVjMzMgPSAkKCc8ZGl2IGlkPSJodG1sX2ZiNzI5YTJlNDVlMzRkMTg4M2FjNzQyMzMzOGJlYzMzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85YWI4ODI5MDRlMTc0Yzg2ODZlMTFhZjc4Njc1ZWI2NS5zZXRDb250ZW50KGh0bWxfZmI3MjlhMmU0NWUzNGQxODgzYWM3NDIzMzM4YmVjMzMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNGQ2MzEzNWM5ZjA2NDQwMzkwZjdhODNmZDI0ODYxMTMuYmluZFBvcHVwKHBvcHVwXzlhYjg4MjkwNGUxNzRjODY4NmUxMWFmNzg2NzVlYjY1KTsKCiAgICAgICAgICAgIAogICAgICAgIAo8L3NjcmlwdD4=\" 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 0x7fc4526ab160>"
]
},
"execution_count": 23,
"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": 24,
"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+ICNtYXBfNzMzOWFiYWJhOTM5NDk4NGIwNzE1Mzg2ZjY4YTFkNGQgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2xlYWZsZXQubWFya2VyY2x1c3Rlci8xLjEuMC9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIvMS4xLjAvTWFya2VyQ2x1c3Rlci5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbGVhZmxldC5tYXJrZXJjbHVzdGVyLzEuMS4wL01hcmtlckNsdXN0ZXIuRGVmYXVsdC5jc3MiLz4KPC9oZWFkPgo8Ym9keT4gICAgCiAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9saXVtLW1hcCIgaWQ9Im1hcF83MzM5YWJhYmE5Mzk0OTg0YjA3MTUzODZmNjhhMWQ0ZCIgPjwvZGl2PgogICAgICAgIAo8L2JvZHk+CjxzY3JpcHQ+ICAgIAogICAgCgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBib3VuZHMgPSBudWxsOwogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXBfNzMzOWFiYWJhOTM5NDk4NGIwNzE1Mzg2ZjY4YTFkNGQgPSBMLm1hcCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXBfNzMzOWFiYWJhOTM5NDk4NGIwNzE1Mzg2ZjY4YTFkNGQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NlbnRlcjogWzM3Ljc3LC0xMjIuNDJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogMTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZENvcHlKdW1wOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyXzcxMzYzODc1NWM3YTQxMDRiNzc3MGEyZDEyMjAxMmQ4ID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAnaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLAogICAgICAgICAgICAgICAgewogICJhdHRyaWJ1dGlvbiI6IG51bGwsCiAgImRldGVjdFJldGluYSI6IGZhbHNlLAogICJtYXhab29tIjogMTgsCiAgIm1pblpvb20iOiAxLAogICJub1dyYXAiOiBmYWxzZSwKICAic3ViZG9tYWlucyI6ICJhYmMiCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzczMzlhYmFiYTkzOTQ5ODRiMDcxNTM4NmY2OGExZDRkKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIgPSBMLm1hcmtlckNsdXN0ZXJHcm91cCh7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIG1hcF83MzM5YWJhYmE5Mzk0OTg0YjA3MTUzODZmNjhhMWQ0ZC5hZGRMYXllcihtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2UyMGFjZDEyMTM1NzQxM2U5MWMwODQzY2M0MzU1ZmU3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzY3ZGRiOGRhM2RiZDQzODhhYTRjY2E4NGVkMzMzMWJkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U3OTE3Zjc1OTY0YTQ0ZDNiNzliMjYzYzBkNDRkNDhhID0gJCgnPGRpdiBpZD0iaHRtbF9lNzkxN2Y3NTk2NGE0NGQzYjc5YjI2M2MwZDQ0ZDQ4YSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0VBUE9OIExBV1M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzY3ZGRiOGRhM2RiZDQzODhhYTRjY2E4NGVkMzMzMWJkLnNldENvbnRlbnQoaHRtbF9lNzkxN2Y3NTk2NGE0NGQzYjc5YjI2M2MwZDQ0ZDQ4YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2UyMGFjZDEyMTM1NzQxM2U5MWMwODQzY2M0MzU1ZmU3LmJpbmRQb3B1cChwb3B1cF82N2RkYjhkYTNkYmQ0Mzg4YWE0Y2NhODRlZDMzMzFiZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jZjcwZjJiYjgzYTI0ODFkOGE5M2IwYjg1ZDAxZjE3MCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81NzIxMzc2Y2ZiODE0Y2Q4YTYxYTg0YjBmMjEzMDA1ZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81ZTU1NGNjNjAzMDk0NDdkYjllNDJkMzA2NTExNGIwZSA9ICQoJzxkaXYgaWQ9Imh0bWxfNWU1NTRjYzYwMzA5NDQ3ZGI5ZTQyZDMwNjUxMTRiMGUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldFQVBPTiBMQVdTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81NzIxMzc2Y2ZiODE0Y2Q4YTYxYTg0YjBmMjEzMDA1Zi5zZXRDb250ZW50KGh0bWxfNWU1NTRjYzYwMzA5NDQ3ZGI5ZTQyZDMwNjUxMTRiMGUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jZjcwZjJiYjgzYTI0ODFkOGE5M2IwYjg1ZDAxZjE3MC5iaW5kUG9wdXAocG9wdXBfNTcyMTM3NmNmYjgxNGNkOGE2MWE4NGIwZjIxMzAwNWYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZGFlMTZmMGI5MDFmNDgzZWExMjEyZTA4NTU0NTBkZjggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Mjk5ODA5NjcyOTk1OTYsLTEyMi4zODg4NTYyMDQyOTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RkZWUyY2I4NzM4ZTQ0ZDc4Y2EyNjM5NmVmODZkYmIzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc4Y2M3ZjJlMmNkMjQzZGRhYzc1NDMwOTU0Y2MwYjFkID0gJCgnPGRpdiBpZD0iaHRtbF83OGNjN2YyZTJjZDI0M2RkYWM3NTQzMDk1NGNjMGIxZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2RkZWUyY2I4NzM4ZTQ0ZDc4Y2EyNjM5NmVmODZkYmIzLnNldENvbnRlbnQoaHRtbF83OGNjN2YyZTJjZDI0M2RkYWM3NTQzMDk1NGNjMGIxZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2RhZTE2ZjBiOTAxZjQ4M2VhMTIxMmUwODU1NDUwZGY4LmJpbmRQb3B1cChwb3B1cF9kZGVlMmNiODczOGU0NGQ3OGNhMjYzOTZlZjg2ZGJiMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kMDM5ODc2NDYyYWM0ODUxOGE5NzJlMDI3NWJjYjc1ZCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTc4ODM3NjY4ODc5LC0xMjIuNDEyOTcwNTM3NTkxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84NzVhNTljZWEwNWQ0MGI1YjBjMjU5MTMxYzgwMTA4ZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85NTRiMzllYjFlNjY0NWJhYTdlYjRlM2E4YjZjOGI5MyA9ICQoJzxkaXYgaWQ9Imh0bWxfOTU0YjM5ZWIxZTY2NDViYWE3ZWI0ZTNhOGI2YzhiOTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODc1YTU5Y2VhMDVkNDBiNWIwYzI1OTEzMWM4MDEwOGUuc2V0Q29udGVudChodG1sXzk1NGIzOWViMWU2NjQ1YmFhN2ViNGUzYThiNmM4YjkzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZDAzOTg3NjQ2MmFjNDg1MThhOTcyZTAyNzViY2I3NWQuYmluZFBvcHVwKHBvcHVwXzg3NWE1OWNlYTA1ZDQwYjViMGMyNTkxMzFjODAxMDhlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQ1MTQ1NWQ1ZDQ4YzQyMjliNGY2YTkxYThjNjNmYjY4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY1MDUwMTIxNDY2OCwtMTIyLjQxOTY3MTc4MDI5Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTgzOTdjNWI1M2I2NGUwZmI1ZmZmOTNhYmJlMjU1YWIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfN2RiZDA1MGY0Mjg4NDg2ZjgxYTJhM2E2ZTY5YTJmZDMgPSAkKCc8ZGl2IGlkPSJodG1sXzdkYmQwNTBmNDI4ODQ4NmY4MWEyYTNhNmU2OWEyZmQzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzU4Mzk3YzViNTNiNjRlMGZiNWZmZjkzYWJiZTI1NWFiLnNldENvbnRlbnQoaHRtbF83ZGJkMDUwZjQyODg0ODZmODFhMmEzYTZlNjlhMmZkMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzQ1MTQ1NWQ1ZDQ4YzQyMjliNGY2YTkxYThjNjNmYjY4LmJpbmRQb3B1cChwb3B1cF81ODM5N2M1YjUzYjY0ZTBmYjVmZmY5M2FiYmUyNTVhYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jYjBhODhkZWNmZGU0ZWNkOGEzNThmMTIwNmNkZDY5MiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83ZTBiMGU1MmNhYTc0MjU5YTJmZjIwYWNhNGZjYTY3OCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mNmJlYWFhZTViOTY0YTFiYjMzYmY5ZjIxNjRlMWZkOSA9ICQoJzxkaXYgaWQ9Imh0bWxfZjZiZWFhYWU1Yjk2NGExYmIzM2JmOWYyMTY0ZTFmZDkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdlMGIwZTUyY2FhNzQyNTlhMmZmMjBhY2E0ZmNhNjc4LnNldENvbnRlbnQoaHRtbF9mNmJlYWFhZTViOTY0YTFiYjMzYmY5ZjIxNjRlMWZkOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2NiMGE4OGRlY2ZkZTRlY2Q4YTM1OGYxMjA2Y2RkNjkyLmJpbmRQb3B1cChwb3B1cF83ZTBiMGU1MmNhYTc0MjU5YTJmZjIwYWNhNGZjYTY3OCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84NzUyYmEyNmU0OTI0M2Y5OWQwZDhjMTdlZjZjYjYyOSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDg3ODkzNjAyMTQsLTEyMi40MDU3MjE0NTQ1NjddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzJiYTdlM2M4YzQ5MjQ3Y2ZiYjNmMGI1ZjgzN2Q1NTU0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2M2ZGIyN2I0MDMxMDRmMzlhN2UwY2RlNDc0MGQ0MmU4ID0gJCgnPGRpdiBpZD0iaHRtbF9jNmRiMjdiNDAzMTA0ZjM5YTdlMGNkZTQ3NDBkNDJlOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzJiYTdlM2M4YzQ5MjQ3Y2ZiYjNmMGI1ZjgzN2Q1NTU0LnNldENvbnRlbnQoaHRtbF9jNmRiMjdiNDAzMTA0ZjM5YTdlMGNkZTQ3NDBkNDJlOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzg3NTJiYTI2ZTQ5MjQzZjk5ZDBkOGMxN2VmNmNiNjI5LmJpbmRQb3B1cChwb3B1cF8yYmE3ZTNjOGM0OTI0N2NmYmIzZjBiNWY4MzdkNTU1NCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iOWQyMjVlMTI1YTI0ZTg2OWVjNTVhODBiZWIxOGFhMyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4Mzk4MDU1OTI2MzQsLTEyMi40MTE3NzgyOTU5OTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2I0NWU1MjAxYWJhZDQ5MDM5OTk4Mzg0ODMyYTJiMWM3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzFkOGZlNTE1NmFhZTQ5MDhhYzg2NDIxZmJkZWU5ZTBmID0gJCgnPGRpdiBpZD0iaHRtbF8xZDhmZTUxNTZhYWU0OTA4YWM4NjQyMWZiZGVlOWUwZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iNDVlNTIwMWFiYWQ0OTAzOTk5ODM4NDgzMmEyYjFjNy5zZXRDb250ZW50KGh0bWxfMWQ4ZmU1MTU2YWFlNDkwOGFjODY0MjFmYmRlZTllMGYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iOWQyMjVlMTI1YTI0ZTg2OWVjNTVhODBiZWIxOGFhMy5iaW5kUG9wdXAocG9wdXBfYjQ1ZTUyMDFhYmFkNDkwMzk5OTgzODQ4MzJhMmIxYzcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNjhmZGI1OTA4YWI2NDUzMmE5YjJkZGM5MDFmODE4MzggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzJhNTM3NGI5Y2YzYTRjMmQ5NzA0MmNhZDEzY2ZjMTgwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzFiMGQwMmRjYmE5ODRlOWM5ZTcwMGIxYWYwNGQ3MzY3ID0gJCgnPGRpdiBpZD0iaHRtbF8xYjBkMDJkY2JhOTg0ZTljOWU3MDBiMWFmMDRkNzM2NyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzJhNTM3NGI5Y2YzYTRjMmQ5NzA0MmNhZDEzY2ZjMTgwLnNldENvbnRlbnQoaHRtbF8xYjBkMDJkY2JhOTg0ZTljOWU3MDBiMWFmMDRkNzM2Nyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzY4ZmRiNTkwOGFiNjQ1MzJhOWIyZGRjOTAxZjgxODM4LmJpbmRQb3B1cChwb3B1cF8yYTUzNzRiOWNmM2E0YzJkOTcwNDJjYWQxM2NmYzE4MCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hZjVmMjBmMjAyZTA0YTgyOGE4YzE5MzAxMzNjNDhkZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQxNzljYzE0Mzc0ZDQ0YjFhYmU0YmM2NDIwZWFhZDA0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Y3YjYzYWFhMzI0YjQ1ZjI4YmJkODQzMDRhNDk1YmY5ID0gJCgnPGRpdiBpZD0iaHRtbF9mN2I2M2FhYTMyNGI0NWYyOGJiZDg0MzA0YTQ5NWJmOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQxNzljYzE0Mzc0ZDQ0YjFhYmU0YmM2NDIwZWFhZDA0LnNldENvbnRlbnQoaHRtbF9mN2I2M2FhYTMyNGI0NWYyOGJiZDg0MzA0YTQ5NWJmOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2FmNWYyMGYyMDJlMDRhODI4YThjMTkzMDEzM2M0OGRlLmJpbmRQb3B1cChwb3B1cF80MTc5Y2MxNDM3NGQ0NGIxYWJlNGJjNjQyMGVhYWQwNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80OTE5NWFkOTMxNTk0MzJmOWI4MTlmZDc1NWZhM2I4OCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQ3ODE1Nzg2OTUwNSwtMTIyLjQ3NzM3NjUyNDAwMjk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81NjU3M2U2YmVmNzg0MGRjODQ5NzY3NWVmMTI3M2E0ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zOGJjNDg2ZjZkNmQ0NGY1YTEyM2U3N2JmZmNkNWUzYyA9ICQoJzxkaXYgaWQ9Imh0bWxfMzhiYzQ4NmY2ZDZkNDRmNWExMjNlNzdiZmZjZDVlM2MiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzU2NTczZTZiZWY3ODQwZGM4NDk3Njc1ZWYxMjczYTRkLnNldENvbnRlbnQoaHRtbF8zOGJjNDg2ZjZkNmQ0NGY1YTEyM2U3N2JmZmNkNWUzYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzQ5MTk1YWQ5MzE1OTQzMmY5YjgxOWZkNzU1ZmEzYjg4LmJpbmRQb3B1cChwb3B1cF81NjU3M2U2YmVmNzg0MGRjODQ5NzY3NWVmMTI3M2E0ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9lNDFhMGZhOTZlOTU0YzczOGFiZTI5NzZkNDhlZTk4MCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NTczODk0Mjk2NTQ5NSwtMTIyLjQ3Nzk2MDMyNzI5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZmYzY2Y1NzYyNzA5NDc3ZTkyMDQ5NzAwNThmYzY4NjcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjEwMjEyYjdkZWU1NDFkYzkwZTM4N2RlYjM4Nzk4MjMgPSAkKCc8ZGl2IGlkPSJodG1sX2IxMDIxMmI3ZGVlNTQxZGM5MGUzODdkZWIzODc5ODIzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ZmM2NmNTc2MjcwOTQ3N2U5MjA0OTcwMDU4ZmM2ODY3LnNldENvbnRlbnQoaHRtbF9iMTAyMTJiN2RlZTU0MWRjOTBlMzg3ZGViMzg3OTgyMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2U0MWEwZmE5NmU5NTRjNzM4YWJlMjk3NmQ0OGVlOTgwLmJpbmRQb3B1cChwb3B1cF9mZjNjZjU3NjI3MDk0NzdlOTIwNDk3MDA1OGZjNjg2Nyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8zNzBjOTlhODM3Y2M0NTEzYmIzOWE4NDZkNWQ4YmNjMCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80ZGZlNzFjMWFmYTU0YTgwYTFjNGU1MThmMTcxZTM3MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84MzZkZWMwZmYxZjM0ZmY3YTQxYzgwYjFiNDk2MjYyZCA9ICQoJzxkaXYgaWQ9Imh0bWxfODM2ZGVjMGZmMWYzNGZmN2E0MWM4MGIxYjQ5NjI2MmQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80ZGZlNzFjMWFmYTU0YTgwYTFjNGU1MThmMTcxZTM3MS5zZXRDb250ZW50KGh0bWxfODM2ZGVjMGZmMWYzNGZmN2E0MWM4MGIxYjQ5NjI2MmQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8zNzBjOTlhODM3Y2M0NTEzYmIzOWE4NDZkNWQ4YmNjMC5iaW5kUG9wdXAocG9wdXBfNGRmZTcxYzFhZmE1NGE4MGExYzRlNTE4ZjE3MWUzNzEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOTcxZTdhNDEwYmI3NDg2NjkwZTBjMzc1MjExNjI3MjMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyNzA1MTk5NTkyLC0xMjIuNDMyMzI1ODcxMDI4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xYzRlZmRkYWUzZmE0NjQ1OTQzMzlmNGY3ZGY0MWFjOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hYzA1ZDNiYWUxZmM0YTY5YmU3MTc0OGQzMTVkZjNhYSA9ICQoJzxkaXYgaWQ9Imh0bWxfYWMwNWQzYmFlMWZjNGE2OWJlNzE3NDhkMzE1ZGYzYWEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFjNGVmZGRhZTNmYTQ2NDU5NDMzOWY0ZjdkZjQxYWM5LnNldENvbnRlbnQoaHRtbF9hYzA1ZDNiYWUxZmM0YTY5YmU3MTc0OGQzMTVkZjNhYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzk3MWU3YTQxMGJiNzQ4NjY5MGUwYzM3NTIxMTYyNzIzLmJpbmRQb3B1cChwb3B1cF8xYzRlZmRkYWUzZmE0NjQ1OTQzMzlmNGY3ZGY0MWFjOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85MWRiMzAwMGU2ZmY0ZGFmYjIxNzg1NzJjOWE3ZTY3OCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5MTY0Mjk4MjM4NCwtMTIyLjQwMDkwODY5ODg4OTk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83ZmViNGQxYjcxNzU0MWFjYmVlNzdiNzA5NjA4ZjRlMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82YTIxOWE2NWE4NGM0ZTVlYmE2Y2JlNjlmMDQ2NmUyNSA9ICQoJzxkaXYgaWQ9Imh0bWxfNmEyMTlhNjVhODRjNGU1ZWJhNmNiZTY5ZjA0NjZlMjUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJVUkdMQVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83ZmViNGQxYjcxNzU0MWFjYmVlNzdiNzA5NjA4ZjRlMi5zZXRDb250ZW50KGh0bWxfNmEyMTlhNjVhODRjNGU1ZWJhNmNiZTY5ZjA0NjZlMjUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl85MWRiMzAwMGU2ZmY0ZGFmYjIxNzg1NzJjOWE3ZTY3OC5iaW5kUG9wdXAocG9wdXBfN2ZlYjRkMWI3MTc1NDFhY2JlZTc3YjcwOTYwOGY0ZTIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOTY3Mjk4MzhjYWU0NDkyMjgyMDQ4ZjBmYWNjZmEzMDcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM3MDY5MzAxNTQ1LC0xMjIuNDA4NTk1MTEwODY5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lNDM4YTYxNzY0OWY0MTIzYWFhMTkyYWJiYzAyZjA3MyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mODdmY2YwMGQ2NjQ0ZDI4YmIxY2NmMjcwYTM1ZTA2OCA9ICQoJzxkaXYgaWQ9Imh0bWxfZjg3ZmNmMDBkNjY0NGQyOGJiMWNjZjI3MGEzNWUwNjgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNUT0xFTiBQUk9QRVJUWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTQzOGE2MTc2NDlmNDEyM2FhYTE5MmFiYmMwMmYwNzMuc2V0Q29udGVudChodG1sX2Y4N2ZjZjAwZDY2NDRkMjhiYjFjY2YyNzBhMzVlMDY4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOTY3Mjk4MzhjYWU0NDkyMjgyMDQ4ZjBmYWNjZmEzMDcuYmluZFBvcHVwKHBvcHVwX2U0MzhhNjE3NjQ5ZjQxMjNhYWExOTJhYmJjMDJmMDczKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzUyYTRhZDg0ZDEzNTQ3ODhiMDc4OTcwYjZiMzgyMDNmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU3Mjg5NTkwNDU3Nzk1LC0xMjIuNDA2ODcwNDAyMDgyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wYjRkMjI1MzcxMTA0ZjM4YWRkN2YyMzFkMmQ3MWRjYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iYmViZWY2NjViNTQ0YWU4OTI3MjExMjBmYzUxOGQxMSA9ICQoJzxkaXYgaWQ9Imh0bWxfYmJlYmVmNjY1YjU0NGFlODkyNzIxMTIwZmM1MThkMTEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJPQkJFUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzBiNGQyMjUzNzExMDRmMzhhZGQ3ZjIzMWQyZDcxZGNjLnNldENvbnRlbnQoaHRtbF9iYmViZWY2NjViNTQ0YWU4OTI3MjExMjBmYzUxOGQxMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzUyYTRhZDg0ZDEzNTQ3ODhiMDc4OTcwYjZiMzgyMDNmLmJpbmRQb3B1cChwb3B1cF8wYjRkMjI1MzcxMTA0ZjM4YWRkN2YyMzFkMmQ3MWRjYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wY2I0YzIxODk0YjI0MmFlODdmZTYxNjExYzFjNTkyYyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0ODkwNjMwNTE4MjksLTEyMi40MjAzNTQ3ODA4NjA5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDc0MDgwYjk0ZmQxNGY2MmJkMmE3NDNkZTdiY2E0NTAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDBiYjExZWQ0Yzk5NGU5ZjhjYjBiMzlmZTYzZjMyYTcgPSAkKCc8ZGl2IGlkPSJodG1sXzAwYmIxMWVkNGM5OTRlOWY4Y2IwYjM5ZmU2M2YzMmE3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kNzQwODBiOTRmZDE0ZjYyYmQyYTc0M2RlN2JjYTQ1MC5zZXRDb250ZW50KGh0bWxfMDBiYjExZWQ0Yzk5NGU5ZjhjYjBiMzlmZTYzZjMyYTcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wY2I0YzIxODk0YjI0MmFlODdmZTYxNjExYzFjNTkyYy5iaW5kUG9wdXAocG9wdXBfZDc0MDgwYjk0ZmQxNGY2MmJkMmE3NDNkZTdiY2E0NTApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfODI3ZDAzYzRhNzQzNDVjN2ExM2RlM2JjMDBmYmQ3MGEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTU3NjU0MjY5OTUsLTEyMi40Mzk5MDk3NjY3NzJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg4MDg5ZTA2YTg4ZjQ3ZDU5NGZlODYwM2ZlOWIwNDg3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzZmZjBhNjdmZDY1YzRkZTBhOGM4ZmQ5M2YxNjc4OWYzID0gJCgnPGRpdiBpZD0iaHRtbF82ZmYwYTY3ZmQ2NWM0ZGUwYThjOGZkOTNmMTY3ODlmMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODgwODllMDZhODhmNDdkNTk0ZmU4NjAzZmU5YjA0ODcuc2V0Q29udGVudChodG1sXzZmZjBhNjdmZDY1YzRkZTBhOGM4ZmQ5M2YxNjc4OWYzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfODI3ZDAzYzRhNzQzNDVjN2ExM2RlM2JjMDBmYmQ3MGEuYmluZFBvcHVwKHBvcHVwXzg4MDg5ZTA2YTg4ZjQ3ZDU5NGZlODYwM2ZlOWIwNDg3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2NmM2U2MzFhYWNkMDQ4ZTQ4YjZmNWZhOTUzMTU3OTU5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNTY5OTM4NjkxOCwtMTIyLjQwODQyMTExNjkyMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTQ1Y2ExNmYwNjM2NGU1ZGI4YmRjNDBjMDg3ZDhhYmEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMmI2NmYwZjVlMjllNDNhNTgzZWNkOTA4YTRhM2QxMzYgPSAkKCc8ZGl2IGlkPSJodG1sXzJiNjZmMGY1ZTI5ZTQzYTU4M2VjZDkwOGE0YTNkMTM2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81NDVjYTE2ZjA2MzY0ZTVkYjhiZGM0MGMwODdkOGFiYS5zZXRDb250ZW50KGh0bWxfMmI2NmYwZjVlMjllNDNhNTgzZWNkOTA4YTRhM2QxMzYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jZjNlNjMxYWFjZDA0OGU0OGI2ZjVmYTk1MzE1Nzk1OS5iaW5kUG9wdXAocG9wdXBfNTQ1Y2ExNmYwNjM2NGU1ZGI4YmRjNDBjMDg3ZDhhYmEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOTFiNjc0OGY2OGMxNDkwMzkzMzliYjE2ODYxZWNkNTkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzM2MTg2Mjc2NDU2MDQsLTEyMi40MjIzMTU2NzA3NDldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzcyOWQ1YjlhMTJlZDQxYWU4MzBkYzZlMGQ2MzIzNWFhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzU0MDhiZTZhZjk5YjRjNzI5YzEzYjNmNWFmMWMwOWIzID0gJCgnPGRpdiBpZD0iaHRtbF81NDA4YmU2YWY5OWI0YzcyOWMxM2IzZjVhZjFjMDliMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RlJBVUQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzcyOWQ1YjlhMTJlZDQxYWU4MzBkYzZlMGQ2MzIzNWFhLnNldENvbnRlbnQoaHRtbF81NDA4YmU2YWY5OWI0YzcyOWMxM2IzZjVhZjFjMDliMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzkxYjY3NDhmNjhjMTQ5MDM5MzM5YmIxNjg2MWVjZDU5LmJpbmRQb3B1cChwb3B1cF83MjlkNWI5YTEyZWQ0MWFlODMwZGM2ZTBkNjMyMzVhYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82ZDlmMzYzOWVjYzY0MmYxOTFhZTBmZWZkMWQxZTg1ZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5Mjg0MTI4NDA0NDcwNSwtMTIyLjQyNDUxOTgzNTAwOTAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yNzRmNmQ0NmI2Mzc0N2UwYmU4NjE0NWM1YWIyNmZmMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lZWM4MjMyOWY5MWQ0ODQ2YTMxNzdjZGMxOGQ2MWFmNiA9ICQoJzxkaXYgaWQ9Imh0bWxfZWVjODIzMjlmOTFkNDg0NmEzMTc3Y2RjMThkNjFhZjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yNzRmNmQ0NmI2Mzc0N2UwYmU4NjE0NWM1YWIyNmZmMS5zZXRDb250ZW50KGh0bWxfZWVjODIzMjlmOTFkNDg0NmEzMTc3Y2RjMThkNjFhZjYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82ZDlmMzYzOWVjYzY0MmYxOTFhZTBmZWZkMWQxZTg1ZS5iaW5kUG9wdXAocG9wdXBfMjc0ZjZkNDZiNjM3NDdlMGJlODYxNDVjNWFiMjZmZjEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMjU3NDkwZTc1NjJkNDhmOTg3MGQ1MGNhZTdhYmFmOGUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTQwOTg2ODgyMDY3OTUsLTEyMi40MTQyMzM4NDkwMzc5OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZmEzYjk1ZjZiZTVmNGI5ZDhmYWFmNTRjZDBhN2VjMWMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfY2MxNDM4NmQwODFkNDc4Y2E1NTM0N2Y0ZDJhYjZlZDggPSAkKCc8ZGl2IGlkPSJodG1sX2NjMTQzODZkMDgxZDQ3OGNhNTUzNDdmNGQyYWI2ZWQ4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mYTNiOTVmNmJlNWY0YjlkOGZhYWY1NGNkMGE3ZWMxYy5zZXRDb250ZW50KGh0bWxfY2MxNDM4NmQwODFkNDc4Y2E1NTM0N2Y0ZDJhYjZlZDgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yNTc0OTBlNzU2MmQ0OGY5ODcwZDUwY2FlN2FiYWY4ZS5iaW5kUG9wdXAocG9wdXBfZmEzYjk1ZjZiZTVmNGI5ZDhmYWFmNTRjZDBhN2VjMWMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMTc2ZDc3ODA0YjczNGU3NmI0NmVmYTkxMDE3YjNhY2IgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTQwOTg2ODgyMDY3OTUsLTEyMi40MTQyMzM4NDkwMzc5OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjExMTFhNTBmMWM2NDVhYmFjMDgzZTFlMzlhZjYxYTQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOWJiNGRkMzI3ZTZjNDllNDkyNjk5NWFhNTBjMDA1ZDYgPSAkKCc8ZGl2IGlkPSJodG1sXzliYjRkZDMyN2U2YzQ5ZTQ5MjY5OTVhYTUwYzAwNWQ2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjExMTFhNTBmMWM2NDVhYmFjMDgzZTFlMzlhZjYxYTQuc2V0Q29udGVudChodG1sXzliYjRkZDMyN2U2YzQ5ZTQ5MjY5OTVhYTUwYzAwNWQ2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMTc2ZDc3ODA0YjczNGU3NmI0NmVmYTkxMDE3YjNhY2IuYmluZFBvcHVwKHBvcHVwX2IxMTExYTUwZjFjNjQ1YWJhYzA4M2UxZTM5YWY2MWE0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2I4OTM2Y2YxMWQ4NDQ5YmRiMTdlZGMzZDlhNGMxZjY4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzcxNDkzOTk2OTQxNiwtMTIyLjUwNzc1MDEzMTAwNDAyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kZDA1MjU0ODZjNWI0YTQxYjE0OGNhYjZhYjg1NDVkOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85ZGNhNzI3YzAxNTI0NjE5OGM4ZTJjNDM4NzNmNTYxZCA9ICQoJzxkaXYgaWQ9Imh0bWxfOWRjYTcyN2MwMTUyNDYxOThjOGUyYzQzODczZjU2MWQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2RkMDUyNTQ4NmM1YjRhNDFiMTQ4Y2FiNmFiODU0NWQ5LnNldENvbnRlbnQoaHRtbF85ZGNhNzI3YzAxNTI0NjE5OGM4ZTJjNDM4NzNmNTYxZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2I4OTM2Y2YxMWQ4NDQ5YmRiMTdlZGMzZDlhNGMxZjY4LmJpbmRQb3B1cChwb3B1cF9kZDA1MjU0ODZjNWI0YTQxYjE0OGNhYjZhYjg1NDVkOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mNDIxYmI3NjIzZWE0YWQwYThiMDZlMmNkYTY2OTE1YSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxODMwMjIwNDc2NjAwNSwtMTIyLjQ3NDQ0NDYzOTU5NDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zMjNmNzdlYzA0Njk0M2UzOTQ4Y2ZkNWFiZDkxNjAwNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hYjAzMGVkMWU2Y2U0Njg4OTUzMWNiMTFiMDA1ZTcwYSA9ICQoJzxkaXYgaWQ9Imh0bWxfYWIwMzBlZDFlNmNlNDY4ODk1MzFjYjExYjAwNWU3MGEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zMjNmNzdlYzA0Njk0M2UzOTQ4Y2ZkNWFiZDkxNjAwNS5zZXRDb250ZW50KGh0bWxfYWIwMzBlZDFlNmNlNDY4ODk1MzFjYjExYjAwNWU3MGEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mNDIxYmI3NjIzZWE0YWQwYThiMDZlMmNkYTY2OTE1YS5iaW5kUG9wdXAocG9wdXBfMzIzZjc3ZWMwNDY5NDNlMzk0OGNmZDVhYmQ5MTYwMDUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzU2Y2ZkMzhlNzY2NGNhZGEwZjA0MzYwYzdmM2RhMDAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iNGFjODk3YTI1NTE0MzkwYTM5ZTNlZDhkM2IxYjI0YSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kMjEyYjUyOTljMmM0NmUwYmRjYTQ0MjE1Yzk1ZGNkZiA9ICQoJzxkaXYgaWQ9Imh0bWxfZDIxMmI1Mjk5YzJjNDZlMGJkY2E0NDIxNWM5NWRjZGYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iNGFjODk3YTI1NTE0MzkwYTM5ZTNlZDhkM2IxYjI0YS5zZXRDb250ZW50KGh0bWxfZDIxMmI1Mjk5YzJjNDZlMGJkY2E0NDIxNWM5NWRjZGYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jNTZjZmQzOGU3NjY0Y2FkYTBmMDQzNjBjN2YzZGEwMC5iaW5kUG9wdXAocG9wdXBfYjRhYzg5N2EyNTUxNDM5MGEzOWUzZWQ4ZDNiMWIyNGEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfN2UwYjlmYThmZWQ5NGZlMTgzYzc3ODBmMzQxNzZhNjkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zMDA0MmFlZjhhNzA0NGU0YTkyNjk3YjNlN2Q1YWFiNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lYmRmZmVkNTU1ZDY0ZWY4OGY2YTQ1NTRlYmRlOWU3MSA9ICQoJzxkaXYgaWQ9Imh0bWxfZWJkZmZlZDU1NWQ2NGVmODhmNmE0NTU0ZWJkZTllNzEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJVUkdMQVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zMDA0MmFlZjhhNzA0NGU0YTkyNjk3YjNlN2Q1YWFiNy5zZXRDb250ZW50KGh0bWxfZWJkZmZlZDU1NWQ2NGVmODhmNmE0NTU0ZWJkZTllNzEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83ZTBiOWZhOGZlZDk0ZmUxODNjNzc4MGYzNDE3NmE2OS5iaW5kUG9wdXAocG9wdXBfMzAwNDJhZWY4YTcwNDRlNGE5MjY5N2IzZTdkNWFhYjcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzQ0MTU3ZWY3ZGI4NDAwNTllMjk3YjNhMzhhZjlkZjIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkzNjg4Mjg0NTMyLC0xMjIuNDEyNjkwMTQyMzA4MDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2QyMTJhZTkxNTlkZDRlZTBiMTQ2YWZmYmZiNDFmMWFjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U5OTA3MTNiYmZiYzRjMWM4YWY5YWRiNDk1ZjllNzE3ID0gJCgnPGRpdiBpZD0iaHRtbF9lOTkwNzEzYmJmYmM0YzFjOGFmOWFkYjQ5NWY5ZTcxNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2QyMTJhZTkxNTlkZDRlZTBiMTQ2YWZmYmZiNDFmMWFjLnNldENvbnRlbnQoaHRtbF9lOTkwNzEzYmJmYmM0YzFjOGFmOWFkYjQ5NWY5ZTcxNyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzc0NDE1N2VmN2RiODQwMDU5ZTI5N2IzYTM4YWY5ZGYyLmJpbmRQb3B1cChwb3B1cF9kMjEyYWU5MTU5ZGQ0ZWUwYjE0NmFmZmJmYjQxZjFhYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9lMTA5MTUyNzVmMTQ0NzhjYjk0OTJkZDhhY2NjNjAyMiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzExMzlhYWFlOWEyYjRlZTViNGEwMDVmYjVkZDc2MmRiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhkY2Y4ZWMxMzRhZTQ4NzNiNTQ5NDY2YTM0NzFlYzMyID0gJCgnPGRpdiBpZD0iaHRtbF84ZGNmOGVjMTM0YWU0ODczYjU0OTQ2NmEzNDcxZWMzMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xMTM5YWFhZTlhMmI0ZWU1YjRhMDA1ZmI1ZGQ3NjJkYi5zZXRDb250ZW50KGh0bWxfOGRjZjhlYzEzNGFlNDg3M2I1NDk0NjZhMzQ3MWVjMzIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lMTA5MTUyNzVmMTQ0NzhjYjk0OTJkZDhhY2NjNjAyMi5iaW5kUG9wdXAocG9wdXBfMTEzOWFhYWU5YTJiNGVlNWI0YTAwNWZiNWRkNzYyZGIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNDcyMjIyMzY1MGRkNGY5YTk3Njg2MzRiZTJjNmE4YjMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc5MjA5Mzc1NTMyOTUsLTEyMi40MTA4ODI4MjU1NTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzk1NjFkZjNiNTdlMzRiMzc5OTA2ZjBlNjU1MjU3YTM5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzUyNTY3OWM3MzQ0MTRjYzJhYmFjNTI3NWFkMGYyMjY2ID0gJCgnPGRpdiBpZD0iaHRtbF81MjU2NzljNzM0NDE0Y2MyYWJhYzUyNzVhZDBmMjI2NiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkVISUNMRSBUSEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTU2MWRmM2I1N2UzNGIzNzk5MDZmMGU2NTUyNTdhMzkuc2V0Q29udGVudChodG1sXzUyNTY3OWM3MzQ0MTRjYzJhYmFjNTI3NWFkMGYyMjY2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDcyMjIyMzY1MGRkNGY5YTk3Njg2MzRiZTJjNmE4YjMuYmluZFBvcHVwKHBvcHVwXzk1NjFkZjNiNTdlMzRiMzc5OTA2ZjBlNjU1MjU3YTM5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2EzNmZmZmIwZDNiMDRmZDhhNzFiNTRkNzhlMGNiN2VmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuODAwNDU2NjQ3MTAzODksLTEyMi40MDE0MzI3NTQ3MjIwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjU5OTk2MGZhYWExNGViNmI3YzczYmVkZWE0NjdmYTYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGQ0MzQ0MGUyNzc3NDc0YmJjZWI3NTU1NTEyYWQ0ZmIgPSAkKCc8ZGl2IGlkPSJodG1sXzRkNDM0NDBlMjc3NzQ3NGJiY2ViNzU1NTUxMmFkNGZiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82NTk5OTYwZmFhYTE0ZWI2YjdjNzNiZWRlYTQ2N2ZhNi5zZXRDb250ZW50KGh0bWxfNGQ0MzQ0MGUyNzc3NDc0YmJjZWI3NTU1NTEyYWQ0ZmIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hMzZmZmZiMGQzYjA0ZmQ4YTcxYjU0ZDc4ZTBjYjdlZi5iaW5kUG9wdXAocG9wdXBfNjU5OTk2MGZhYWExNGViNmI3YzczYmVkZWE0NjdmYTYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOGU5ZDU0ODE4YzkyNGZkNWI2OGY1MDcyZDhhNGYyNjYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDM1NTUwNTQyMjY1LC0xMjIuNDIxMTI4MDI5NTA1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lOTgwNmFlNmZlY2I0ZWQ4YmQxMDM0MGIzZTViOGM5OCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81ZTNjMzg1Y2ViNjY0YTBjYTRmMjQzYzZhN2E1OGJiZiA9ICQoJzxkaXYgaWQ9Imh0bWxfNWUzYzM4NWNlYjY2NGEwY2E0ZjI0M2M2YTdhNThiYmYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U5ODA2YWU2ZmVjYjRlZDhiZDEwMzQwYjNlNWI4Yzk4LnNldENvbnRlbnQoaHRtbF81ZTNjMzg1Y2ViNjY0YTBjYTRmMjQzYzZhN2E1OGJiZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzhlOWQ1NDgxOGM5MjRmZDViNjhmNTA3MmQ4YTRmMjY2LmJpbmRQb3B1cChwb3B1cF9lOTgwNmFlNmZlY2I0ZWQ4YmQxMDM0MGIzZTViOGM5OCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85ZTNjMDUwMTIzOWI0MjI2OTQ1MmQ4NDg2ZGM5NGZmZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NjU2NDc2MDc2ODUsLTEyMi40MDcyNDQwODcwMzJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzExYzc2MWQ0NzFhOTQxYmNhZGUwZDdkODcxZWJhNjA3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2FmZmYwYmZhYzk2MzQ5ZTM5MTc2ZjBjMzRlMzdhYmRlID0gJCgnPGRpdiBpZD0iaHRtbF9hZmZmMGJmYWM5NjM0OWUzOTE3NmYwYzM0ZTM3YWJkZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTFjNzYxZDQ3MWE5NDFiY2FkZTBkN2Q4NzFlYmE2MDcuc2V0Q29udGVudChodG1sX2FmZmYwYmZhYzk2MzQ5ZTM5MTc2ZjBjMzRlMzdhYmRlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOWUzYzA1MDEyMzliNDIyNjk0NTJkODQ4NmRjOTRmZmYuYmluZFBvcHVwKHBvcHVwXzExYzc2MWQ0NzFhOTQxYmNhZGUwZDdkODcxZWJhNjA3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2U3NTZlMTliNDcxNTQ0ZWI5YjY1ZTE2MWMyODUyMmQ5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85YzBhOTgwMzM0M2E0NDIyYTU4Yzg3ODA4ZTRkOTM3OSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83N2M0Y2Y1ZGJlZDk0MjNjYjEzMmY1Y2NlZmZiZDMzNSA9ICQoJzxkaXYgaWQ9Imh0bWxfNzdjNGNmNWRiZWQ5NDIzY2IxMzJmNWNjZWZmYmQzMzUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJFQ09WRVJFRCBWRUhJQ0xFPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85YzBhOTgwMzM0M2E0NDIyYTU4Yzg3ODA4ZTRkOTM3OS5zZXRDb250ZW50KGh0bWxfNzdjNGNmNWRiZWQ5NDIzY2IxMzJmNWNjZWZmYmQzMzUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lNzU2ZTE5YjQ3MTU0NGViOWI2NWUxNjFjMjg1MjJkOS5iaW5kUG9wdXAocG9wdXBfOWMwYTk4MDMzNDNhNDQyMmE1OGM4NzgwOGU0ZDkzNzkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZGYxNGE3ZWJhNzVjNDVjMGI4ODIzMjRlNThiN2RjMDMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQyNDFlOWZjZjZkYjQ1ZjI5NTUzNjIxNjNkMjZkNzIyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzU2ZTgwN2I0YmFhNDRhN2Y4ZDQ1ZWIzYTljMzY5YmI2ID0gJCgnPGRpdiBpZD0iaHRtbF81NmU4MDdiNGJhYTQ0YTdmOGQ0NWViM2E5YzM2OWJiNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQyNDFlOWZjZjZkYjQ1ZjI5NTUzNjIxNjNkMjZkNzIyLnNldENvbnRlbnQoaHRtbF81NmU4MDdiNGJhYTQ0YTdmOGQ0NWViM2E5YzM2OWJiNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2RmMTRhN2ViYTc1YzQ1YzBiODgyMzI0ZTU4YjdkYzAzLmJpbmRQb3B1cChwb3B1cF80MjQxZTlmY2Y2ZGI0NWYyOTU1MzYyMTYzZDI2ZDcyMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wYzA1NGE2NjczZmM0OTMzOTA1Yjg4MTZjZjFiY2VhOCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYThhOTNkMzU4ZTkyNGVmODk3MDUxZmRkZjQ1YTY3YTcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfN2ZjMWJmZDE2OGI1NDk5M2E1NDZkMDUxYmU2OTk0ZTUgPSAkKCc8ZGl2IGlkPSJodG1sXzdmYzFiZmQxNjhiNTQ5OTNhNTQ2ZDA1MWJlNjk5NGU1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2E4YTkzZDM1OGU5MjRlZjg5NzA1MWZkZGY0NWE2N2E3LnNldENvbnRlbnQoaHRtbF83ZmMxYmZkMTY4YjU0OTkzYTU0NmQwNTFiZTY5OTRlNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzBjMDU0YTY2NzNmYzQ5MzM5MDViODgxNmNmMWJjZWE4LmJpbmRQb3B1cChwb3B1cF9hOGE5M2QzNThlOTI0ZWY4OTcwNTFmZGRmNDVhNjdhNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wNTg5YTdjYzY0N2M0MDJkYWEwN2Q0OTUyODFlZTNlMSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQ2OTI4MjAwNDEsLTEyMi40MTU3NTcwMzkxOTZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RiMDU1ODBiZGRiMTQxMzc4ZmE3NjljYzc2NmJiMTA0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzgwOTJlMTc3ZjM1MDQ3NGFhZjA2MDFkNGEyZWNkOTZjID0gJCgnPGRpdiBpZD0iaHRtbF84MDkyZTE3N2YzNTA0NzRhYWYwNjAxZDRhMmVjZDk2YyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kYjA1NTgwYmRkYjE0MTM3OGZhNzY5Y2M3NjZiYjEwNC5zZXRDb250ZW50KGh0bWxfODA5MmUxNzdmMzUwNDc0YWFmMDYwMWQ0YTJlY2Q5NmMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wNTg5YTdjYzY0N2M0MDJkYWEwN2Q0OTUyODFlZTNlMS5iaW5kUG9wdXAocG9wdXBfZGIwNTU4MGJkZGIxNDEzNzhmYTc2OWNjNzY2YmIxMDQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNTE0ZDM5OTkxY2YyNDQ2MjhiZjlhMmE3NGZkODBjZmEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Mjg1MjgwNjI3NDY1LC0xMjIuNDc1NjQ3NDYwNzg1OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzgwYWI2NTI1MzZlZTRkYTRhMGQzZDIzMjQzYzYzYTU0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNmZDZiMDAxZDE3MjRiZTdhODZkNjZhY2NiZWZhNTgyID0gJCgnPGRpdiBpZD0iaHRtbF8zZmQ2YjAwMWQxNzI0YmU3YTg2ZDY2YWNjYmVmYTU4MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Uk9CQkVSWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODBhYjY1MjUzNmVlNGRhNGEwZDNkMjMyNDNjNjNhNTQuc2V0Q29udGVudChodG1sXzNmZDZiMDAxZDE3MjRiZTdhODZkNjZhY2NiZWZhNTgyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNTE0ZDM5OTkxY2YyNDQ2MjhiZjlhMmE3NGZkODBjZmEuYmluZFBvcHVwKHBvcHVwXzgwYWI2NTI1MzZlZTRkYTRhMGQzZDIzMjQzYzYzYTU0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzAzNzQwN2FkYTdiYzQzODc4NTdhNDI1YTI0OTA4NTQ2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQyODUxNzM3NDQ0ODk0LC0xMjIuNDIwOTY3NDQwNTY0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mODg0MTFlMGYxYWU0ODVmYjlmY2FjYWY2MGZkNjJmNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hZjUyNzM5NDUxYzY0YWYwYTBhMDUxMjA2NjA4ZTdlOCA9ICQoJzxkaXYgaWQ9Imh0bWxfYWY1MjczOTQ1MWM2NGFmMGEwYTA1MTIwNjYwOGU3ZTgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mODg0MTFlMGYxYWU0ODVmYjlmY2FjYWY2MGZkNjJmNy5zZXRDb250ZW50KGh0bWxfYWY1MjczOTQ1MWM2NGFmMGEwYTA1MTIwNjYwOGU3ZTgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wMzc0MDdhZGE3YmM0Mzg3ODU3YTQyNWEyNDkwODU0Ni5iaW5kUG9wdXAocG9wdXBfZjg4NDExZTBmMWFlNDg1ZmI5ZmNhY2FmNjBmZDYyZjcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfY2ZjMmIyZGMzNzg3NGIzMGIzMDBiMzk5ZWJkODE3YTkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIxMTk4NDg4OTMxLC0xMjIuNDE1NjY5NjYxNDQzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xYTI4MDkzNWZmZmE0MGZlYTEwNTJmZjc0MTc5NzRhYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iYmNmZmViOGEwMTk0MDkyOTQ3YTljNjRiODNkNzIzYyA9ICQoJzxkaXYgaWQ9Imh0bWxfYmJjZmZlYjhhMDE5NDA5Mjk0N2E5YzY0YjgzZDcyM2MiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMWEyODA5MzVmZmZhNDBmZWExMDUyZmY3NDE3OTc0YWMuc2V0Q29udGVudChodG1sX2JiY2ZmZWI4YTAxOTQwOTI5NDdhOWM2NGI4M2Q3MjNjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfY2ZjMmIyZGMzNzg3NGIzMGIzMDBiMzk5ZWJkODE3YTkuYmluZFBvcHVwKHBvcHVwXzFhMjgwOTM1ZmZmYTQwZmVhMTA1MmZmNzQxNzk3NGFjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQ5N2EwYTkzYjdkMDQ5N2NiN2FlNGU3N2YwYzA5N2EyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc5MTY3NDIxODk2MywtMTIyLjQwNjM0NjQyNTYzMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzI1OTQ3MWM5MWEzNGNmNGIzN2FhYWMyMWJmNjRmOGMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTc1ZDZkMDdmODc2NDA0ODk5MDIwNGZhY2M5MzAzMzQgPSAkKCc8ZGl2IGlkPSJodG1sXzk3NWQ2ZDA3Zjg3NjQwNDg5OTAyMDRmYWNjOTMwMzM0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83MjU5NDcxYzkxYTM0Y2Y0YjM3YWFhYzIxYmY2NGY4Yy5zZXRDb250ZW50KGh0bWxfOTc1ZDZkMDdmODc2NDA0ODk5MDIwNGZhY2M5MzAzMzQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80OTdhMGE5M2I3ZDA0OTdjYjdhZTRlNzdmMGMwOTdhMi5iaW5kUG9wdXAocG9wdXBfNzI1OTQ3MWM5MWEzNGNmNGIzN2FhYWMyMWJmNjRmOGMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOTk3MTRhNDU0MmMxNDljZmFlNzg3ZTFlNmYyNTliOGYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjU3MTg0Mzk1MjgyLC0xMjIuNDA5NTI5OTEzMjc4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wNDVhMWQ2MTc1Njg0MjgwYmJiYTdiODEwYmNhZjg0NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wZjcxMzVmN2E4NDE0MTE2OTA2ODQ2ZjJjY2M1ODE2NiA9ICQoJzxkaXYgaWQ9Imh0bWxfMGY3MTM1ZjdhODQxNDExNjkwNjg0NmYyY2NjNTgxNjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzA0NWExZDYxNzU2ODQyODBiYmJhN2I4MTBiY2FmODQ3LnNldENvbnRlbnQoaHRtbF8wZjcxMzVmN2E4NDE0MTE2OTA2ODQ2ZjJjY2M1ODE2Nik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzk5NzE0YTQ1NDJjMTQ5Y2ZhZTc4N2UxZTZmMjU5YjhmLmJpbmRQb3B1cChwb3B1cF8wNDVhMWQ2MTc1Njg0MjgwYmJiYTdiODEwYmNhZjg0Nyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wZTcxNzI0M2EwMTE0MjU5YTZlMTgzNmViM2RlYWVmYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wZTZmMjBiYzYyMTY0MDZhOTY0YjAyNzQxNTYyZGExMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wMjljNDYyNjA4NDA0YzRkYmExMWI4Zjc5YjcwYzQ0ZiA9ICQoJzxkaXYgaWQ9Imh0bWxfMDI5YzQ2MjYwODQwNGM0ZGJhMTFiOGY3OWI3MGM0NGYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMGU2ZjIwYmM2MjE2NDA2YTk2NGIwMjc0MTU2MmRhMTIuc2V0Q29udGVudChodG1sXzAyOWM0NjI2MDg0MDRjNGRiYTExYjhmNzliNzBjNDRmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMGU3MTcyNDNhMDExNDI1OWE2ZTE4MzZlYjNkZWFlZmEuYmluZFBvcHVwKHBvcHVwXzBlNmYyMGJjNjIxNjQwNmE5NjRiMDI3NDE1NjJkYTEyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2FkZjRkNmZjYTYyNzQ5NDU5OGUzZjM0ZjRjMDFiYWZkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY3NTI0MzA4NzgzLC0xMjIuNDEwNzM4MDk3MzE1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85MzBhZWFhOThkNGY0YmQwODk2NDdhZjIxNTA3YjQwNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kN2U1NjMzNjM2YTk0OGRiYjRkZmExZTJmZWQzNTQ3ZiA9ICQoJzxkaXYgaWQ9Imh0bWxfZDdlNTYzMzYzNmE5NDhkYmI0ZGZhMWUyZmVkMzU0N2YiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJVUkdMQVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85MzBhZWFhOThkNGY0YmQwODk2NDdhZjIxNTA3YjQwNC5zZXRDb250ZW50KGh0bWxfZDdlNTYzMzYzNmE5NDhkYmI0ZGZhMWUyZmVkMzU0N2YpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hZGY0ZDZmY2E2Mjc0OTQ1OThlM2YzNGY0YzAxYmFmZC5iaW5kUG9wdXAocG9wdXBfOTMwYWVhYTk4ZDRmNGJkMDg5NjQ3YWYyMTUwN2I0MDQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMjNmMmQ5YzcwYTZlNDA1YThlMDFjM2ExZmFiMjdjNjUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U2MjFhNjJkNTQ0YzQzNGJhYjAwMWJhZDQ4YTFlNjI0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhiNGRiMjUzNDI2MTRlM2U4MGFmZTM2ZDgwNGI3ODI2ID0gJCgnPGRpdiBpZD0iaHRtbF84YjRkYjI1MzQyNjE0ZTNlODBhZmUzNmQ4MDRiNzgyNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U2MjFhNjJkNTQ0YzQzNGJhYjAwMWJhZDQ4YTFlNjI0LnNldENvbnRlbnQoaHRtbF84YjRkYjI1MzQyNjE0ZTNlODBhZmUzNmQ4MDRiNzgyNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzIzZjJkOWM3MGE2ZTQwNWE4ZTAxYzNhMWZhYjI3YzY1LmJpbmRQb3B1cChwb3B1cF9lNjIxYTYyZDU0NGM0MzRiYWIwMDFiYWQ0OGExZTYyNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8zYzY2YjZjN2NjMzM0NjJjOTU2YzQ3ZTkxNTk1YTRhMSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMzEwODM0MzMyNjQsLTEyMi40NDQzMTQwMjUxODhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc2MmI5ZTI2ODY1MzRlZDU5NGE4ZDYyNTM3YzZmNzJmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzRmOTY0MWQxY2I5NDQyNDRiMTZiZWJkNjA3MmQ0ZjU4ID0gJCgnPGRpdiBpZD0iaHRtbF80Zjk2NDFkMWNiOTQ0MjQ0YjE2YmViZDYwNzJkNGY1OCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc2MmI5ZTI2ODY1MzRlZDU5NGE4ZDYyNTM3YzZmNzJmLnNldENvbnRlbnQoaHRtbF80Zjk2NDFkMWNiOTQ0MjQ0YjE2YmViZDYwNzJkNGY1OCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzNjNjZiNmM3Y2MzMzQ2MmM5NTZjNDdlOTE1OTVhNGExLmJpbmRQb3B1cChwb3B1cF83NjJiOWUyNjg2NTM0ZWQ1OTRhOGQ2MjUzN2M2ZjcyZik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80NWE5Y2E4MTI3ZWE0YjA3YTM3MjJmYmExYzQ4MmY0NSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMzEwODM0MzMyNjQsLTEyMi40NDQzMTQwMjUxODhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzlkMzNjZWFmZGVlYjQ5NTA5ZTk0YjhiMjVjMjQxOTQ0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2YxNTYxMDQ1NjI0OTQyZDBhZmJiOTA0NTMyNTA1ZGEzID0gJCgnPGRpdiBpZD0iaHRtbF9mMTU2MTA0NTYyNDk0MmQwYWZiYjkwNDUzMjUwNWRhMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RFJVRy9OQVJDT1RJQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOWQzM2NlYWZkZWViNDk1MDllOTRiOGIyNWMyNDE5NDQuc2V0Q29udGVudChodG1sX2YxNTYxMDQ1NjI0OTQyZDBhZmJiOTA0NTMyNTA1ZGEzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDVhOWNhODEyN2VhNGIwN2EzNzIyZmJhMWM0ODJmNDUuYmluZFBvcHVwKHBvcHVwXzlkMzNjZWFmZGVlYjQ5NTA5ZTk0YjhiMjVjMjQxOTQ0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzcyZWNiN2FjZjkzZjRlZmM5OWI1NTU3MzUwMDA1ZjJjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDEwYjkzZTA4NmQzNGQ3ZThjY2JlMjE3ZjA0YjY2YTEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYWU2MGRmZWY3MjE0NGM0ZjlhZGI3OThhMDg1MzFhNmQgPSAkKCc8ZGl2IGlkPSJodG1sX2FlNjBkZmVmNzIxNDRjNGY5YWRiNzk4YTA4NTMxYTZkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDEwYjkzZTA4NmQzNGQ3ZThjY2JlMjE3ZjA0YjY2YTEuc2V0Q29udGVudChodG1sX2FlNjBkZmVmNzIxNDRjNGY5YWRiNzk4YTA4NTMxYTZkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNzJlY2I3YWNmOTNmNGVmYzk5YjU1NTczNTAwMDVmMmMuYmluZFBvcHVwKHBvcHVwXzAxMGI5M2UwODZkMzRkN2U4Y2NiZTIxN2YwNGI2NmExKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzVlY2Y2OGRlNjNkZDQ2NmZhYTY0OGVkZjJhMzRjNjE4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZGM3NzgyNmZjMmNmNGViYTg1ZDgyMTMyNTgyMGU5ZWEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzcxNjkwZjAzODNlNDNkOThhYWRkY2ZkM2QxYTk3NzQgPSAkKCc8ZGl2IGlkPSJodG1sXzM3MTY5MGYwMzgzZTQzZDk4YWFkZGNmZDNkMWE5Nzc0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZGM3NzgyNmZjMmNmNGViYTg1ZDgyMTMyNTgyMGU5ZWEuc2V0Q29udGVudChodG1sXzM3MTY5MGYwMzgzZTQzZDk4YWFkZGNmZDNkMWE5Nzc0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNWVjZjY4ZGU2M2RkNDY2ZmFhNjQ4ZWRmMmEzNGM2MTguYmluZFBvcHVwKHBvcHVwX2RjNzc4MjZmYzJjZjRlYmE4NWQ4MjEzMjU4MjBlOWVhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzFlNTc5OGRkMTZhMjQzZGM5Yjk0NmZkZGRjMmJlOGRiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yNjhhZTQ1OGI2NmQ0NWE2YTkyNTU3NmM0N2E3YmM3MyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yNTE0OTU3MzFkYTI0N2MyYTRjNzU1ZTNkZjM5MjA0MiA9ICQoJzxkaXYgaWQ9Imh0bWxfMjUxNDk1NzMxZGEyNDdjMmE0Yzc1NWUzZGYzOTIwNDIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzI2OGFlNDU4YjY2ZDQ1YTZhOTI1NTc2YzQ3YTdiYzczLnNldENvbnRlbnQoaHRtbF8yNTE0OTU3MzFkYTI0N2MyYTRjNzU1ZTNkZjM5MjA0Mik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzFlNTc5OGRkMTZhMjQzZGM5Yjk0NmZkZGRjMmJlOGRiLmJpbmRQb3B1cChwb3B1cF8yNjhhZTQ1OGI2NmQ0NWE2YTkyNTU3NmM0N2E3YmM3Myk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80MjllYjRlMjRmNWM0NDQwYTMyZDkxOGVlZDdlMTYxZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NjIzMTA0MDQ3NTgsLTEyMi40MTQ3MTQyOTU1Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTlkZGMyNDhiNTA3NGZkNTk5ZTMzZmU4NjY3ODU5MzIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTMxZTI2MTA1NzI2NDI0MWIwMjRkYzUxMzYyNWEzYTQgPSAkKCc8ZGl2IGlkPSJodG1sXzEzMWUyNjEwNTcyNjQyNDFiMDI0ZGM1MTM2MjVhM2E0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTlkZGMyNDhiNTA3NGZkNTk5ZTMzZmU4NjY3ODU5MzIuc2V0Q29udGVudChodG1sXzEzMWUyNjEwNTcyNjQyNDFiMDI0ZGM1MTM2MjVhM2E0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDI5ZWI0ZTI0ZjVjNDQ0MGEzMmQ5MThlZWQ3ZTE2MWYuYmluZFBvcHVwKHBvcHVwXzU5ZGRjMjQ4YjUwNzRmZDU5OWUzM2ZlODY2Nzg1OTMyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzI4MGYxYmI3YzIxMjQ4MDBiYTY4MTcxYmRlNjkzMzQyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3NTExODg5NTY5NSwtMTIyLjQxODA0NTQ1Mjc2OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTAwMjViZGJhYzM2NGY3ZDg2ZTQ0YzNmYWJkZjM2ZDggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTY1ZDk3OTkzYzE1NDZjYzlhNTA5NThhN2U5ODRlOWEgPSAkKCc8ZGl2IGlkPSJodG1sXzk2NWQ5Nzk5M2MxNTQ2Y2M5YTUwOTU4YTdlOTg0ZTlhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hMDAyNWJkYmFjMzY0ZjdkODZlNDRjM2ZhYmRmMzZkOC5zZXRDb250ZW50KGh0bWxfOTY1ZDk3OTkzYzE1NDZjYzlhNTA5NThhN2U5ODRlOWEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yODBmMWJiN2MyMTI0ODAwYmE2ODE3MWJkZTY5MzM0Mi5iaW5kUG9wdXAocG9wdXBfYTAwMjViZGJhYzM2NGY3ZDg2ZTQ0YzNmYWJkZjM2ZDgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzkwZjZkNjhiMTM5NDJjNmI1YWVlZTcwZTQ2YzQxZjIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIwMjM4NDc4OTc1LC0xMjIuNDAxMTYxNTU1NjAyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80YjFlYWYzMGRlMzg0OGI4YWMyMzljYzBlZjcwYzdhNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80MTk4NTM0YmY1ZTE0YTM5YmQ1MGUzNTkxZGQ0OTQ2YSA9ICQoJzxkaXYgaWQ9Imh0bWxfNDE5ODUzNGJmNWUxNGEzOWJkNTBlMzU5MWRkNDk0NmEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80YjFlYWYzMGRlMzg0OGI4YWMyMzljYzBlZjcwYzdhNi5zZXRDb250ZW50KGh0bWxfNDE5ODUzNGJmNWUxNGEzOWJkNTBlMzU5MWRkNDk0NmEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83OTBmNmQ2OGIxMzk0MmM2YjVhZWVlNzBlNDZjNDFmMi5iaW5kUG9wdXAocG9wdXBfNGIxZWFmMzBkZTM4NDhiOGFjMjM5Y2MwZWY3MGM3YTYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNTE4ZWYwM2M3ZTA5NGFmYzkxOTkxZjFkNmNjZjYzOTQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjcwMDUzMTk2Mjk5OTUsLTEyMi40MDM0MDg2NjkxOTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U4YmQxOGFkYTM5NTQ4N2E5M2MzZTU4NTdmY2ZmOTFkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzA5NGI4YmYxZjVlZTQyNTBiN2I2NDJiYTFjMjQxYmRmID0gJCgnPGRpdiBpZD0iaHRtbF8wOTRiOGJmMWY1ZWU0MjUwYjdiNjQyYmExYzI0MWJkZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U4YmQxOGFkYTM5NTQ4N2E5M2MzZTU4NTdmY2ZmOTFkLnNldENvbnRlbnQoaHRtbF8wOTRiOGJmMWY1ZWU0MjUwYjdiNjQyYmExYzI0MWJkZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzUxOGVmMDNjN2UwOTRhZmM5MTk5MWYxZDZjY2Y2Mzk0LmJpbmRQb3B1cChwb3B1cF9lOGJkMThhZGEzOTU0ODdhOTNjM2U1ODU3ZmNmZjkxZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kOTgzNjE2OWFhNzc0ODBmOWY5ZGQxYTAxNDdhYmZlYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MzgzNDQzNzQxNDEsLTEyMi40MTI5MzA1MjIwNTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQyNDI4MDM5ZmQ3MzRkMTBiZDhhNDVjZTZkNmViZjdjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNmNTg0N2FhODQyNzQ1YjM5ZDAzOWNkMDY2YjQ0YmUxID0gJCgnPGRpdiBpZD0iaHRtbF8zZjU4NDdhYTg0Mjc0NWIzOWQwMzljZDA2NmI0NGJlMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80MjQyODAzOWZkNzM0ZDEwYmQ4YTQ1Y2U2ZDZlYmY3Yy5zZXRDb250ZW50KGh0bWxfM2Y1ODQ3YWE4NDI3NDViMzlkMDM5Y2QwNjZiNDRiZTEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kOTgzNjE2OWFhNzc0ODBmOWY5ZGQxYTAxNDdhYmZlYS5iaW5kUG9wdXAocG9wdXBfNDI0MjgwMzlmZDczNGQxMGJkOGE0NWNlNmQ2ZWJmN2MpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNGY0ZDc0ZDhkNjgwNDI1MmJmOTBkNmUxYzk5NmVkN2QgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTMwMTg2NTM3NDQ2MDQsLTEyMi40MTg1ODcxNzIyMTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2IwZDk2OGM1YzM2NTQ3ZTc5OGM2NmViOGVkMDFkZDBjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzVkZDM2ZmZjOGFjMDQ3YjM5NjFjNWRlMDlmZTAyZWVkID0gJCgnPGRpdiBpZD0iaHRtbF81ZGQzNmZmYzhhYzA0N2IzOTYxYzVkZTA5ZmUwMmVlZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iMGQ5NjhjNWMzNjU0N2U3OThjNjZlYjhlZDAxZGQwYy5zZXRDb250ZW50KGh0bWxfNWRkMzZmZmM4YWMwNDdiMzk2MWM1ZGUwOWZlMDJlZWQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80ZjRkNzRkOGQ2ODA0MjUyYmY5MGQ2ZTFjOTk2ZWQ3ZC5iaW5kUG9wdXAocG9wdXBfYjBkOTY4YzVjMzY1NDdlNzk4YzY2ZWI4ZWQwMWRkMGMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzc5ZDJhMTIwMzZmNDZjYTg3Mzk3NDYwOTJmZGQyOGEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84N2IyZDI1MDcxYmI0ODZjODQyNzBkMGQ2NmRjNjJhYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iZjJjODYxMDM0NzQ0MTI1ODA0YWQ0YmI4MGEwYWIxZSA9ICQoJzxkaXYgaWQ9Imh0bWxfYmYyYzg2MTAzNDc0NDEyNTgwNGFkNGJiODBhMGFiMWUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkZSQVVEPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84N2IyZDI1MDcxYmI0ODZjODQyNzBkMGQ2NmRjNjJhYy5zZXRDb250ZW50KGh0bWxfYmYyYzg2MTAzNDc0NDEyNTgwNGFkNGJiODBhMGFiMWUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8zNzlkMmExMjAzNmY0NmNhODczOTc0NjA5MmZkZDI4YS5iaW5kUG9wdXAocG9wdXBfODdiMmQyNTA3MWJiNDg2Yzg0MjcwZDBkNjZkYzYyYWMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNDYzMmJlNjcyMjBhNDc4M2IyOTY5YTIzMWU2ZGVjZTkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTA1Mzg5OTM3MjUsLTEyMi40MDM5MTU2ODE1NzEwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMGVhY2RhN2JmODM1NDk0MjllNmExOTNkMmQyZTk4NmYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfN2FlYjExYjIwODM0NDdmNWEyMzQyZTcxY2JhZjlmYTcgPSAkKCc8ZGl2IGlkPSJodG1sXzdhZWIxMWIyMDgzNDQ3ZjVhMjM0MmU3MWNiYWY5ZmE3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wZWFjZGE3YmY4MzU0OTQyOWU2YTE5M2QyZDJlOTg2Zi5zZXRDb250ZW50KGh0bWxfN2FlYjExYjIwODM0NDdmNWEyMzQyZTcxY2JhZjlmYTcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80NjMyYmU2NzIyMGE0NzgzYjI5NjlhMjMxZTZkZWNlOS5iaW5kUG9wdXAocG9wdXBfMGVhY2RhN2JmODM1NDk0MjllNmExOTNkMmQyZTk4NmYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOTgwZGQxZmUxNzA4NDMyZmExNTM4MDM0Mzk4ODlhY2IgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODMwOTk4MjQ0NTkyMSwtMTIyLjQxOTE4MzA5NjM2Ml0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzYwZGUwODMxNzk4NDgyNzliZjVkN2Y5NjY1MjY4NzUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGNmOWMyZGUxMjQ1NDZmNGIwZjQyMDJkMDA1OTc5NTggPSAkKCc8ZGl2IGlkPSJodG1sXzRjZjljMmRlMTI0NTQ2ZjRiMGY0MjAyZDAwNTk3OTU4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzYwZGUwODMxNzk4NDgyNzliZjVkN2Y5NjY1MjY4NzUuc2V0Q29udGVudChodG1sXzRjZjljMmRlMTI0NTQ2ZjRiMGY0MjAyZDAwNTk3OTU4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOTgwZGQxZmUxNzA4NDMyZmExNTM4MDM0Mzk4ODlhY2IuYmluZFBvcHVwKHBvcHVwX2M2MGRlMDgzMTc5ODQ4Mjc5YmY1ZDdmOTY2NTI2ODc1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzU3ZDJlNzQxMGU2YTRmN2Q4ZDE3YTczNjQ4ODYxZmJlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQwNzM2MDU0ODM1NzksLTEyMi4zODg3NTMwNDY5OTddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzBiZjYzYTU0NmQ0MjQxNDdiMDgzNGE3NjdlMDM2NDRiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzExODg5NDk1YmQxYjQ0NTdiMzQ2Y2ZhMGE4OTRkOTkxID0gJCgnPGRpdiBpZD0iaHRtbF8xMTg4OTQ5NWJkMWI0NDU3YjM0NmNmYTBhODk0ZDk5MSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzBiZjYzYTU0NmQ0MjQxNDdiMDgzNGE3NjdlMDM2NDRiLnNldENvbnRlbnQoaHRtbF8xMTg4OTQ5NWJkMWI0NDU3YjM0NmNmYTBhODk0ZDk5MSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzU3ZDJlNzQxMGU2YTRmN2Q4ZDE3YTczNjQ4ODYxZmJlLmJpbmRQb3B1cChwb3B1cF8wYmY2M2E1NDZkNDI0MTQ3YjA4MzRhNzY3ZTAzNjQ0Yik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yNGE1OGQxYTlmMGI0ODM3OWE5MWM4ZWQzYzg5NTQyMCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NDk5MTI5NDQzNjYsLTEyMi40Mzc3OTk3MDM0NjhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2EzMzVmNThiZTZmYTRiNTJiYTIwMTJkNWJhYjhkYWMyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzczNGU4NjJmODNkMzRlY2E5ZjVkOTA1MTcxMTU4YTY5ID0gJCgnPGRpdiBpZD0iaHRtbF83MzRlODYyZjgzZDM0ZWNhOWY1ZDkwNTE3MTE1OGE2OSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTMzNWY1OGJlNmZhNGI1MmJhMjAxMmQ1YmFiOGRhYzIuc2V0Q29udGVudChodG1sXzczNGU4NjJmODNkMzRlY2E5ZjVkOTA1MTcxMTU4YTY5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMjRhNThkMWE5ZjBiNDgzNzlhOTFjOGVkM2M4OTU0MjAuYmluZFBvcHVwKHBvcHVwX2EzMzVmNThiZTZmYTRiNTJiYTIwMTJkNWJhYjhkYWMyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2NmMGEwZjcxOTg5YzQ0MmY5NWI2YmViNGVhMDUwNjQxID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3MDkwMjc0MzY2OSwtMTIyLjQyMTMzMjY4NDYzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDAxMzMxMTA3MWQxNGFmMWE0Y2UyOTk4MGMxOTFkNzcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNWViYTQ1MjJlOTQzNGJkNTliNzYyNDA1MjU3M2E4NjIgPSAkKCc8ZGl2IGlkPSJodG1sXzVlYmE0NTIyZTk0MzRiZDU5Yjc2MjQwNTI1NzNhODYyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDAxMzMxMTA3MWQxNGFmMWE0Y2UyOTk4MGMxOTFkNzcuc2V0Q29udGVudChodG1sXzVlYmE0NTIyZTk0MzRiZDU5Yjc2MjQwNTI1NzNhODYyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfY2YwYTBmNzE5ODljNDQyZjk1YjZiZWI0ZWEwNTA2NDEuYmluZFBvcHVwKHBvcHVwXzQwMTMzMTEwNzFkMTRhZjFhNGNlMjk5ODBjMTkxZDc3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQxZDA0MTNiMDIwNTQ3MTJiZjQ2OTkwNjIxOGJhZDQ5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3MDkwMjc0MzY2OSwtMTIyLjQyMTMzMjY4NDYzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzJhODE1NzNlY2Y4NDVkNGJlOTNlNGNjNzljY2UzOWYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2FhMzcwMWQ4NWIyNDMyOWFkMjc4NmI5ZjM3NTk5NTcgPSAkKCc8ZGl2IGlkPSJodG1sXzNhYTM3MDFkODViMjQzMjlhZDI3ODZiOWYzNzU5OTU3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzJhODE1NzNlY2Y4NDVkNGJlOTNlNGNjNzljY2UzOWYuc2V0Q29udGVudChodG1sXzNhYTM3MDFkODViMjQzMjlhZDI3ODZiOWYzNzU5OTU3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDFkMDQxM2IwMjA1NDcxMmJmNDY5OTA2MjE4YmFkNDkuYmluZFBvcHVwKHBvcHVwXzMyYTgxNTczZWNmODQ1ZDRiZTkzZTRjYzc5Y2NlMzlmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzk2OGExNzY3ZGJjNjQ0ZTg4ZDhjY2QwMjM4Yzc5NTViID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgyMjQ1ODIyMzkxNywtMTIyLjQ0NjYxMjk3ODgzOV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZWUzZGMwMzMyZTc2NGRlNDgzYmM5MWMxYWY2NjIyMTggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMmI3ZjgxMDlmNjkyNDZmODgyOTdhNWNiOTUxMjUyNWMgPSAkKCc8ZGl2IGlkPSJodG1sXzJiN2Y4MTA5ZjY5MjQ2Zjg4Mjk3YTVjYjk1MTI1MjVjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZWUzZGMwMzMyZTc2NGRlNDgzYmM5MWMxYWY2NjIyMTguc2V0Q29udGVudChodG1sXzJiN2Y4MTA5ZjY5MjQ2Zjg4Mjk3YTVjYjk1MTI1MjVjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOTY4YTE3NjdkYmM2NDRlODhkOGNjZDAyMzhjNzk1NWIuYmluZFBvcHVwKHBvcHVwX2VlM2RjMDMzMmU3NjRkZTQ4M2JjOTFjMWFmNjYyMjE4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzgzYzJkZTJmNDM0YjQxZTVhNjE1Y2Y5ZjdlYzQxNTY5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwMDM3OTk5NTEyNzk1LC0xMjIuNDA0NTk0MTQwNjM0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jNTJhODNkOWVkM2Q0MTkxYjNjZWRiNjY5ZDZlZmZhMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wOWNmOTI4NDEwNjg0NDQ0OThkMDhhYzQ1Nzk5YjdmZSA9ICQoJzxkaXYgaWQ9Imh0bWxfMDljZjkyODQxMDY4NDQ0NDk4ZDA4YWM0NTc5OWI3ZmUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzUyYTgzZDllZDNkNDE5MWIzY2VkYjY2OWQ2ZWZmYTIuc2V0Q29udGVudChodG1sXzA5Y2Y5Mjg0MTA2ODQ0NDQ5OGQwOGFjNDU3OTliN2ZlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfODNjMmRlMmY0MzRiNDFlNWE2MTVjZjlmN2VjNDE1NjkuYmluZFBvcHVwKHBvcHVwX2M1MmE4M2Q5ZWQzZDQxOTFiM2NlZGI2NjlkNmVmZmEyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzIxODM0MjZlM2Q3YTQ5ODRhZGE2N2VjMDdhODYzMTRiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzk1MzMzODI2NzQzNiwtMTIyLjM5NzM3Mzc0MDA2Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjIwN2NhM2FlZjAxNGQ2ZWFlNDZjYTdkZGNkNDMwNzQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTYxNGRhZWRjNmMwNDFiZGJlZTFhZTQ3Y2QwODc5M2YgPSAkKCc8ZGl2IGlkPSJodG1sX2U2MTRkYWVkYzZjMDQxYmRiZWUxYWU0N2NkMDg3OTNmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2IyMDdjYTNhZWYwMTRkNmVhZTQ2Y2E3ZGRjZDQzMDc0LnNldENvbnRlbnQoaHRtbF9lNjE0ZGFlZGM2YzA0MWJkYmVlMWFlNDdjZDA4NzkzZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzIxODM0MjZlM2Q3YTQ5ODRhZGE2N2VjMDdhODYzMTRiLmJpbmRQb3B1cChwb3B1cF9iMjA3Y2EzYWVmMDE0ZDZlYWU0NmNhN2RkY2Q0MzA3NCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8zMjgwMzg4NWZiZmE0MzU0OGI2ODZkMjlhZGU3YTNkYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzUxNTg3NDE2MjI5NSwtMTIyLjQwNzQzNDk4OTUyM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWMxNGFhYmIxNDFmNDk5YWE3NjU3MDk3ZTc1MDE5YzggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTkyNTIxZjIzN2M3NGJjN2E4YjY5YzVhYTY3YWZmN2MgPSAkKCc8ZGl2IGlkPSJodG1sXzk5MjUyMWYyMzdjNzRiYzdhOGI2OWM1YWE2N2FmZjdjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMWMxNGFhYmIxNDFmNDk5YWE3NjU3MDk3ZTc1MDE5Yzguc2V0Q29udGVudChodG1sXzk5MjUyMWYyMzdjNzRiYzdhOGI2OWM1YWE2N2FmZjdjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMzI4MDM4ODVmYmZhNDM1NDhiNjg2ZDI5YWRlN2EzZGEuYmluZFBvcHVwKHBvcHVwXzFjMTRhYWJiMTQxZjQ5OWFhNzY1NzA5N2U3NTAxOWM4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzA3N2JmMjNhYTZlZTQ2MDg5ZGJkMmNmNmYyMGRhMjc2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjE5NWJhYTgyNzM2NDZhYjg5ZTlkOGExMmNjZmNmMmUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjFmNjlhOTc0YWI4NDBkZGExYjljM2UxNzkxZTEzY2QgPSAkKCc8ZGl2IGlkPSJodG1sXzYxZjY5YTk3NGFiODQwZGRhMWI5YzNlMTc5MWUxM2NkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5QUk9TVElUVVRJT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzYxOTViYWE4MjczNjQ2YWI4OWU5ZDhhMTJjY2ZjZjJlLnNldENvbnRlbnQoaHRtbF82MWY2OWE5NzRhYjg0MGRkYTFiOWMzZTE3OTFlMTNjZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzA3N2JmMjNhYTZlZTQ2MDg5ZGJkMmNmNmYyMGRhMjc2LmJpbmRQb3B1cChwb3B1cF82MTk1YmFhODI3MzY0NmFiODllOWQ4YTEyY2NmY2YyZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kNGUxZjA4YzJmZmU0ZDE4YjdjMjc2Y2YwMDRhOWRhYyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3ODUyMzM3NzYwMzIsLTEyMi40MDM0NjQwODAwMzNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzhmZjQ0ZDcxYWMyMTQ1MzRhMjY0NzU2NjdlYmQxZWRlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzYxM2QxYmRjZmJiYzQ4NWE5MTJlYjNlZTA2NmU4MTk0ID0gJCgnPGRpdiBpZD0iaHRtbF82MTNkMWJkY2ZiYmM0ODVhOTEyZWIzZWUwNjZlODE5NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzhmZjQ0ZDcxYWMyMTQ1MzRhMjY0NzU2NjdlYmQxZWRlLnNldENvbnRlbnQoaHRtbF82MTNkMWJkY2ZiYmM0ODVhOTEyZWIzZWUwNjZlODE5NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2Q0ZTFmMDhjMmZmZTRkMThiN2MyNzZjZjAwNGE5ZGFjLmJpbmRQb3B1cChwb3B1cF84ZmY0NGQ3MWFjMjE0NTM0YTI2NDc1NjY3ZWJkMWVkZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl81Mzg5ZDc5YjUzZmE0MDVhOTQ5MzEwOWEyNjZiZjFmNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3MzI5MTgwNjkwMjk5NiwtMTIyLjQzNjYxNDE4MTMzMTAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83Y2E0NWNiMGY3MjM0ZmEzYmRlMWI1M2YyYTBkNmIxNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iY2IzZjI5ODJhNWU0OGViOTAxNzlhNmNjZjM5ODExNyA9ICQoJzxkaXYgaWQ9Imh0bWxfYmNiM2YyOTgyYTVlNDhlYjkwMTc5YTZjY2YzOTgxMTciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfN2NhNDVjYjBmNzIzNGZhM2JkZTFiNTNmMmEwZDZiMTQuc2V0Q29udGVudChodG1sX2JjYjNmMjk4MmE1ZTQ4ZWI5MDE3OWE2Y2NmMzk4MTE3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNTM4OWQ3OWI1M2ZhNDA1YTk0OTMxMDlhMjY2YmYxZjUuYmluZFBvcHVwKHBvcHVwXzdjYTQ1Y2IwZjcyMzRmYTNiZGUxYjUzZjJhMGQ2YjE0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzZiYzcyZTc2OTNmZjQwZTJiMWQ5MGIyMjYxZmI5N2Q1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgwNTI3NTc4NTA5LC0xMjIuMzk2ODQ5MDE1MTcyMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzRjZDIwOTIxZTRmMjQ0MjdhOWM2OGJkMzQ4YTE1MzUxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzk5NWY5YWJmZDQ1MDRkOTk4MWVjMDMzMjRhYzgxY2VmID0gJCgnPGRpdiBpZD0iaHRtbF85OTVmOWFiZmQ0NTA0ZDk5ODFlYzAzMzI0YWM4MWNlZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RFJVRy9OQVJDT1RJQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNGNkMjA5MjFlNGYyNDQyN2E5YzY4YmQzNDhhMTUzNTEuc2V0Q29udGVudChodG1sXzk5NWY5YWJmZDQ1MDRkOTk4MWVjMDMzMjRhYzgxY2VmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNmJjNzJlNzY5M2ZmNDBlMmIxZDkwYjIyNjFmYjk3ZDUuYmluZFBvcHVwKHBvcHVwXzRjZDIwOTIxZTRmMjQ0MjdhOWM2OGJkMzQ4YTE1MzUxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2Y1NDhiZGQxZGMwMjRlNjQ5NGY0YmFhYTVkYzkzMzExID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgwNTI3NTc4NTA5LC0xMjIuMzk2ODQ5MDE1MTcyMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2YwZTYwN2UxNjg3NDQyM2NiZThiNWVkNmI0NjU2OGIwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzU1MTFhZGY1YjZhMzRiOWM5YTMyNTg3NjMwNDIwMmQxID0gJCgnPGRpdiBpZD0iaHRtbF81NTExYWRmNWI2YTM0YjljOWEzMjU4NzYzMDQyMDJkMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2YwZTYwN2UxNjg3NDQyM2NiZThiNWVkNmI0NjU2OGIwLnNldENvbnRlbnQoaHRtbF81NTExYWRmNWI2YTM0YjljOWEzMjU4NzYzMDQyMDJkMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2Y1NDhiZGQxZGMwMjRlNjQ5NGY0YmFhYTVkYzkzMzExLmJpbmRQb3B1cChwb3B1cF9mMGU2MDdlMTY4NzQ0MjNjYmU4YjVlZDZiNDY1NjhiMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yZDBlNzNkZTczYjI0MWQ1YmVlZjlmNzk4N2I3Njc1MiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyODQxODA3MDY2MDIwNCwtMTIyLjQ1MDAwMDc5MDQ0NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDQ4ZmU2YTIyZjNjNDI4MmFjYTExODQ1MGE1N2IzZDAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTczN2Y1Y2Q2YThhNDRmN2JhMTYzN2UzMmI2NjRhMTQgPSAkKCc8ZGl2IGlkPSJodG1sX2U3MzdmNWNkNmE4YTQ0ZjdiYTE2MzdlMzJiNjY0YTE0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kNDhmZTZhMjJmM2M0MjgyYWNhMTE4NDUwYTU3YjNkMC5zZXRDb250ZW50KGh0bWxfZTczN2Y1Y2Q2YThhNDRmN2JhMTYzN2UzMmI2NjRhMTQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yZDBlNzNkZTczYjI0MWQ1YmVlZjlmNzk4N2I3Njc1Mi5iaW5kUG9wdXAocG9wdXBfZDQ4ZmU2YTIyZjNjNDI4MmFjYTExODQ1MGE1N2IzZDApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDk0MzEwYmQ5ZWFlNDE5ODlhNjc4ZTY2NWFmNjFjMzggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80NGYzOTZiM2U1NjE0Mjg5OTlmY2E5M2I4NThmNzM5MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zNTI3ZTAzZTdiNWI0OWNmYWY4OWJlMWE4OWJhMzc4MiA9ICQoJzxkaXYgaWQ9Imh0bWxfMzUyN2UwM2U3YjViNDljZmFmODliZTFhODliYTM3ODIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80NGYzOTZiM2U1NjE0Mjg5OTlmY2E5M2I4NThmNzM5MS5zZXRDb250ZW50KGh0bWxfMzUyN2UwM2U3YjViNDljZmFmODliZTFhODliYTM3ODIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kOTQzMTBiZDllYWU0MTk4OWE2NzhlNjY1YWY2MWMzOC5iaW5kUG9wdXAocG9wdXBfNDRmMzk2YjNlNTYxNDI4OTk5ZmNhOTNiODU4ZjczOTEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMDQ0ZTEzOGNlMGJmNDZlZjk2NTUxMTIwZmUzYTBjYWQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JmNjNmMzgxMmNjODQyMDdhZjc5ODBkNDdkMWFjNmYwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzA0MTA0MjNmNDFmODQ1M2I4ZGVhYjdjNWIyMjI5ZmFhID0gJCgnPGRpdiBpZD0iaHRtbF8wNDEwNDIzZjQxZjg0NTNiOGRlYWI3YzViMjIyOWZhYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYmY2M2YzODEyY2M4NDIwN2FmNzk4MGQ0N2QxYWM2ZjAuc2V0Q29udGVudChodG1sXzA0MTA0MjNmNDFmODQ1M2I4ZGVhYjdjNWIyMjI5ZmFhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMDQ0ZTEzOGNlMGJmNDZlZjk2NTUxMTIwZmUzYTBjYWQuYmluZFBvcHVwKHBvcHVwX2JmNjNmMzgxMmNjODQyMDdhZjc5ODBkNDdkMWFjNmYwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2FkYzhmYjE3NTMwOTQ3NWI4ZDY1MjU5MWRlNTI3MmQ3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2E3ZjY2ZDJjMTIzNTQxMjJhOWM5OWY1MDFmZTBlNjFhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2VkYWE4MDA1YWMxODQwZGQ4NDEyYzkzMWMxZGM2OGY5ID0gJCgnPGRpdiBpZD0iaHRtbF9lZGFhODAwNWFjMTg0MGRkODQxMmM5MzFjMWRjNjhmOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U0VDT05EQVJZIENPREVTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hN2Y2NmQyYzEyMzU0MTIyYTljOTlmNTAxZmUwZTYxYS5zZXRDb250ZW50KGh0bWxfZWRhYTgwMDVhYzE4NDBkZDg0MTJjOTMxYzFkYzY4ZjkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hZGM4ZmIxNzUzMDk0NzViOGQ2NTI1OTFkZTUyNzJkNy5iaW5kUG9wdXAocG9wdXBfYTdmNjZkMmMxMjM1NDEyMmE5Yzk5ZjUwMWZlMGU2MWEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMWJjODM5Njk4ZjViNGM3YTk0MGE4NjY4ODgyZmNmNmYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjZmNWNkMWNmODNkNDMzMDhkYWM4Njg3MjdjNGFhNTYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzEyN2IyNzRkNzYxNGJiMzk5MDZkNzgyOGYwOGYyZDcgPSAkKCc8ZGl2IGlkPSJodG1sXzMxMjdiMjc0ZDc2MTRiYjM5OTA2ZDc4MjhmMDhmMmQ3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TVVNQSUNJT1VTIE9DQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjZmNWNkMWNmODNkNDMzMDhkYWM4Njg3MjdjNGFhNTYuc2V0Q29udGVudChodG1sXzMxMjdiMjc0ZDc2MTRiYjM5OTA2ZDc4MjhmMDhmMmQ3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMWJjODM5Njk4ZjViNGM3YTk0MGE4NjY4ODgyZmNmNmYuYmluZFBvcHVwKHBvcHVwX2Y2ZjVjZDFjZjgzZDQzMzA4ZGFjODY4NzI3YzRhYTU2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzA4MjRiZmVhNjY0NTQxOTk4OTMzYmQzZDA1MmFjMTI2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM3MGQ5NTI3OWMxNDQ1YTFiYjdhMDE5OGQ3NDhlMDMxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzFlY2IwZTU3MTg2YjQ0OTA4NGMxOTQzZjM3ODZhNTI1ID0gJCgnPGRpdiBpZD0iaHRtbF8xZWNiMGU1NzE4NmI0NDkwODRjMTk0M2YzNzg2YTUyNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM3MGQ5NTI3OWMxNDQ1YTFiYjdhMDE5OGQ3NDhlMDMxLnNldENvbnRlbnQoaHRtbF8xZWNiMGU1NzE4NmI0NDkwODRjMTk0M2YzNzg2YTUyNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzA4MjRiZmVhNjY0NTQxOTk4OTMzYmQzZDA1MmFjMTI2LmJpbmRQb3B1cChwb3B1cF8zNzBkOTUyNzljMTQ0NWExYmI3YTAxOThkNzQ4ZTAzMSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wMDlkMmJiYTVkNGQ0ZWIzYWMxMGY4ZGY1Yzc0ZTdlMiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODMyMzU0NDk5MDQsLTEyMi40MTE4NTcwMzI1NF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDBhZTExOTRhM2NmNDIyNTk3M2Q1NzQzZDllMDlmM2UgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfY2I4ZTYxNjJjZTJmNGYxY2E4YWJkZmYzM2QxYzUwZWEgPSAkKCc8ZGl2IGlkPSJodG1sX2NiOGU2MTYyY2UyZjRmMWNhOGFiZGZmMzNkMWM1MGVhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wMGFlMTE5NGEzY2Y0MjI1OTczZDU3NDNkOWUwOWYzZS5zZXRDb250ZW50KGh0bWxfY2I4ZTYxNjJjZTJmNGYxY2E4YWJkZmYzM2QxYzUwZWEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wMDlkMmJiYTVkNGQ0ZWIzYWMxMGY4ZGY1Yzc0ZTdlMi5iaW5kUG9wdXAocG9wdXBfMDBhZTExOTRhM2NmNDIyNTk3M2Q1NzQzZDllMDlmM2UpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDJhZTMzNWZhYWM3NDg3ZGE0MWUyMDhlZmIzZWZlMTEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTU5OTc3MzM5ODU2LC0xMjIuNDA5NDM1NjE3MTA2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84ZjcwODNiOTM4NDU0MWMwOTUyNjAyNDliYmE4MjdhMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jMjc5YmM3YjU0NDc0N2Q4OTc1ZGI2ZmIxYzY5MjhjMiA9ICQoJzxkaXYgaWQ9Imh0bWxfYzI3OWJjN2I1NDQ3NDdkODk3NWRiNmZiMWM2OTI4YzIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84ZjcwODNiOTM4NDU0MWMwOTUyNjAyNDliYmE4MjdhMi5zZXRDb250ZW50KGh0bWxfYzI3OWJjN2I1NDQ3NDdkODk3NWRiNmZiMWM2OTI4YzIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kMmFlMzM1ZmFhYzc0ODdkYTQxZTIwOGVmYjNlZmUxMS5iaW5kUG9wdXAocG9wdXBfOGY3MDgzYjkzODQ1NDFjMDk1MjYwMjQ5YmJhODI3YTIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZTJlODE0NzMyMjE5NDMwOTlhOTZiYzBkNzIyNjQxODkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODcwNzk4MTQ0NDQzLC0xMjIuNDI1ODgzMzU4MTQ4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xMDRhNDEwYThjZTI0MjM1YWMzOGVjOGRlZjRmY2I0ZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81M2VmN2I0M2I4MDM0ZTVmOTExMGQyOWJjY2ZmMTRiNSA9ICQoJzxkaXYgaWQ9Imh0bWxfNTNlZjdiNDNiODAzNGU1ZjkxMTBkMjliY2NmZjE0YjUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTA0YTQxMGE4Y2UyNDIzNWFjMzhlYzhkZWY0ZmNiNGYuc2V0Q29udGVudChodG1sXzUzZWY3YjQzYjgwMzRlNWY5MTEwZDI5YmNjZmYxNGI1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZTJlODE0NzMyMjE5NDMwOTlhOTZiYzBkNzIyNjQxODkuYmluZFBvcHVwKHBvcHVwXzEwNGE0MTBhOGNlMjQyMzVhYzM4ZWM4ZGVmNGZjYjRmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzhlMDkyNGQxZTA3ODQ3OThhNmVlNTYxOThkNzFiYWQzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM2MDM3NDQ2Njg2MjA0LC0xMjIuNDE1MTI2NTQzMDAxMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2M5ZjUyZjFiYTQxZTRjYWNhNDNlNjVmZGMyNDU3MjYyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U1NzRjYmVkN2RiMzQwNzhhZWU2ZDNkNmZmN2U4YmQxID0gJCgnPGRpdiBpZD0iaHRtbF9lNTc0Y2JlZDdkYjM0MDc4YWVlNmQzZDZmZjdlOGJkMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jOWY1MmYxYmE0MWU0Y2FjYTQzZTY1ZmRjMjQ1NzI2Mi5zZXRDb250ZW50KGh0bWxfZTU3NGNiZWQ3ZGIzNDA3OGFlZTZkM2Q2ZmY3ZThiZDEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84ZTA5MjRkMWUwNzg0Nzk4YTZlZTU2MTk4ZDcxYmFkMy5iaW5kUG9wdXAocG9wdXBfYzlmNTJmMWJhNDFlNGNhY2E0M2U2NWZkYzI0NTcyNjIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzk0NmRkN2UxOWNkNDRmODkxY2YwZDBiZDRiNTMwMTAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTI3Njc4ODQ4MjEsLTEyMi40MzE5MjgwMTEwODldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQ4NjM2ZGM3NDdjMjRiZDVhMjQxMjRkYmU1YTFlMjJkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U0OWE5OGNjZTdmZTQ4MTJhZDJmNGQ0Y2ZmODUzZWVhID0gJCgnPGRpdiBpZD0iaHRtbF9lNDlhOThjY2U3ZmU0ODEyYWQyZjRkNGNmZjg1M2VlYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQ4NjM2ZGM3NDdjMjRiZDVhMjQxMjRkYmU1YTFlMjJkLnNldENvbnRlbnQoaHRtbF9lNDlhOThjY2U3ZmU0ODEyYWQyZjRkNGNmZjg1M2VlYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzM5NDZkZDdlMTljZDQ0Zjg5MWNmMGQwYmQ0YjUzMDEwLmJpbmRQb3B1cChwb3B1cF80ODYzNmRjNzQ3YzI0YmQ1YTI0MTI0ZGJlNWExZTIyZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9lNjJlNzg1NjY1M2Y0ZDhkYTM1Yzk1ZjRhNmNjOTA0ZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4OTU3MTAyNTU4NjMsLTEyMi40MDIxNjM3MTM2MThdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2UyYzQ5NTRhYzUxMDQwMzk4MjkyZjVhNjE4NDY4NWU0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzEwYmU1MzVlYzI1YzQ0ZmZhZDczYjFlMDNjNWQxODE2ID0gJCgnPGRpdiBpZD0iaHRtbF8xMGJlNTM1ZWMyNWM0NGZmYWQ3M2IxZTAzYzVkMTgxNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RFJVTktFTk5FU1M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2UyYzQ5NTRhYzUxMDQwMzk4MjkyZjVhNjE4NDY4NWU0LnNldENvbnRlbnQoaHRtbF8xMGJlNTM1ZWMyNWM0NGZmYWQ3M2IxZTAzYzVkMTgxNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2U2MmU3ODU2NjUzZjRkOGRhMzVjOTVmNGE2Y2M5MDRlLmJpbmRQb3B1cChwb3B1cF9lMmM0OTU0YWM1MTA0MDM5ODI5MmY1YTYxODQ2ODVlNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9lNjI2YWJkNGZlZTE0NzhkYWRkYmM5ZDRjYTk4ZWIyYiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzRlZjk1N2VhMjU3ODQyYjA4MWZjZTg5MDc5MDkzZDgzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2UxM2JhZTNkZGYzYTRkNDZhZTJhYTZlNDBkZTkxZmM0ID0gJCgnPGRpdiBpZD0iaHRtbF9lMTNiYWUzZGRmM2E0ZDQ2YWUyYWE2ZTQwZGU5MWZjNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzRlZjk1N2VhMjU3ODQyYjA4MWZjZTg5MDc5MDkzZDgzLnNldENvbnRlbnQoaHRtbF9lMTNiYWUzZGRmM2E0ZDQ2YWUyYWE2ZTQwZGU5MWZjNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2U2MjZhYmQ0ZmVlMTQ3OGRhZGRiYzlkNGNhOThlYjJiLmJpbmRQb3B1cChwb3B1cF80ZWY5NTdlYTI1Nzg0MmIwODFmY2U4OTA3OTA5M2Q4Myk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jZGRmNzRjNDQ5NGY0MzgzYWY2YzViODg2YmNkZmYyOCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MzgzNjU1NjUzNDc5NCwtMTIyLjQxMzc5MDk3Mjc4MDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jZjdkOThiN2ExMTg0OWVmYWE0NjIwMDBlMDdhZjk0OSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lYTgxYTE1MjNlMmE0Njc2YjYwZDJiNDgxYThhYmRlOSA9ICQoJzxkaXYgaWQ9Imh0bWxfZWE4MWExNTIzZTJhNDY3NmI2MGQyYjQ4MWE4YWJkZTkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfY2Y3ZDk4YjdhMTE4NDllZmFhNDYyMDAwZTA3YWY5NDkuc2V0Q29udGVudChodG1sX2VhODFhMTUyM2UyYTQ2NzZiNjBkMmI0ODFhOGFiZGU5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfY2RkZjc0YzQ0OTRmNDM4M2FmNmM1Yjg4NmJjZGZmMjguYmluZFBvcHVwKHBvcHVwX2NmN2Q5OGI3YTExODQ5ZWZhYTQ2MjAwMGUwN2FmOTQ5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzg0YjAyN2FkYjEyMzQ5MjQ4NWViNTY3Y2ViMDc1ZDI1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDgyMzgxOTc1ZjgyNDA1NzlkMzMyZDZkNTZhMjI3YjIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjM1NDkyNGQ0NDAxNDhhOTg1NzRlNTRiNmY4MzA0ZGYgPSAkKCc8ZGl2IGlkPSJodG1sXzIzNTQ5MjRkNDQwMTQ4YTk4NTc0ZTU0YjZmODMwNGRmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDgyMzgxOTc1ZjgyNDA1NzlkMzMyZDZkNTZhMjI3YjIuc2V0Q29udGVudChodG1sXzIzNTQ5MjRkNDQwMTQ4YTk4NTc0ZTU0YjZmODMwNGRmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfODRiMDI3YWRiMTIzNDkyNDg1ZWI1NjdjZWIwNzVkMjUuYmluZFBvcHVwKHBvcHVwXzQ4MjM4MTk3NWY4MjQwNTc5ZDMzMmQ2ZDU2YTIyN2IyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQ0ZGUxYWExOTE4YTRlYzlhMWUyNmNhNGI3MzlkOTAzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kYjQ4NzFkMjY4ZTU0OTRjYmYwYjhiMDRhYmRhYTdjNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jNTUxMzNmZjk3ZmU0ZDE4YmMyZGRkOWEyMjA5ZjljYyA9ICQoJzxkaXYgaWQ9Imh0bWxfYzU1MTMzZmY5N2ZlNGQxOGJjMmRkZDlhMjIwOWY5Y2MiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNFQ09OREFSWSBDT0RFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZGI0ODcxZDI2OGU1NDk0Y2JmMGI4YjA0YWJkYWE3YzQuc2V0Q29udGVudChodG1sX2M1NTEzM2ZmOTdmZTRkMThiYzJkZGQ5YTIyMDlmOWNjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDRkZTFhYTE5MThhNGVjOWExZTI2Y2E0YjczOWQ5MDMuYmluZFBvcHVwKHBvcHVwX2RiNDg3MWQyNjhlNTQ5NGNiZjBiOGIwNGFiZGFhN2M0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2ZiOTY5ODcwNGU1ZTQ3NzA5ODg2NDhiNjBmYjc5MjRlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zM2NlNTRlMTM1MmE0Yzk1ODJlOGI2ZTFmM2VmMWY4ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81MzU1NzA4NWY0NjA0ZmRiOGIzODhhZjljNDk3N2IzMCA9ICQoJzxkaXYgaWQ9Imh0bWxfNTM1NTcwODVmNDYwNGZkYjhiMzg4YWY5YzQ5NzdiMzAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzNjZTU0ZTEzNTJhNGM5NTgyZThiNmUxZjNlZjFmOGQuc2V0Q29udGVudChodG1sXzUzNTU3MDg1ZjQ2MDRmZGI4YjM4OGFmOWM0OTc3YjMwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZmI5Njk4NzA0ZTVlNDc3MDk4ODY0OGI2MGZiNzkyNGUuYmluZFBvcHVwKHBvcHVwXzMzY2U1NGUxMzUyYTRjOTU4MmU4YjZlMWYzZWYxZjhkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzI1ODM4YzVlYjczOTQ1NTk5YWIwMjU1ODQ1N2ZhM2JkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1OTk4ODMyMzc5Nzk2LC0xMjIuNDExNzQ3MzcxOTI0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85NTMyNjI5NDU4YjM0ZWY2YWQzNTVhYjJiZjJjMTg5NSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83NTg4ZDdiMjk3YTg0NjQ3ODI5YzkyNDUxNGFhODVlMiA9ICQoJzxkaXYgaWQ9Imh0bWxfNzU4OGQ3YjI5N2E4NDY0NzgyOWM5MjQ1MTRhYTg1ZTIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNVU1BJQ0lPVVMgT0NDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85NTMyNjI5NDU4YjM0ZWY2YWQzNTVhYjJiZjJjMTg5NS5zZXRDb250ZW50KGh0bWxfNzU4OGQ3YjI5N2E4NDY0NzgyOWM5MjQ1MTRhYTg1ZTIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yNTgzOGM1ZWI3Mzk0NTU5OWFiMDI1NTg0NTdmYTNiZC5iaW5kUG9wdXAocG9wdXBfOTUzMjYyOTQ1OGIzNGVmNmFkMzU1YWIyYmYyYzE4OTUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOGI3NmU4YzFkMmY2NDVhNzhjYmU3M2FiYmY3MWFlYmIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjMzNzU4MDU4MDU5LC0xMjIuNDIwNDM0NzI0NTUyOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JmMGRjOWUwZmU1MDRjYTRhZDU4Zjg5MzcxZmI5NjdkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2FmM2Q4NGIwODYzNjQ1ZGE4YWFlYjQwNmJjOTNiYzVlID0gJCgnPGRpdiBpZD0iaHRtbF9hZjNkODRiMDg2MzY0NWRhOGFhZWI0MDZiYzkzYmM1ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2JmMGRjOWUwZmU1MDRjYTRhZDU4Zjg5MzcxZmI5NjdkLnNldENvbnRlbnQoaHRtbF9hZjNkODRiMDg2MzY0NWRhOGFhZWI0MDZiYzkzYmM1ZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzhiNzZlOGMxZDJmNjQ1YTc4Y2JlNzNhYmJmNzFhZWJiLmJpbmRQb3B1cChwb3B1cF9iZjBkYzllMGZlNTA0Y2E0YWQ1OGY4OTM3MWZiOTY3ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83YjUyNDBkYjQxYmE0ODc1YWVmYWI5ZjkyZjlmZDMwNyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTAyMjY2MjI3ODYsLTEyMi40MTE5ODc2NDM1OTUwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTM4N2I2Y2MwMzBjNDJmODlhNzM1ODY5Yjg4MzRhZDIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjI2MmMxMGU0ZTg1NGQ4MWFkMmQ2ZmU3MDA2MzE4ZTkgPSAkKCc8ZGl2IGlkPSJodG1sX2IyNjJjMTBlNGU4NTRkODFhZDJkNmZlNzAwNjMxOGU5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzEzODdiNmNjMDMwYzQyZjg5YTczNTg2OWI4ODM0YWQyLnNldENvbnRlbnQoaHRtbF9iMjYyYzEwZTRlODU0ZDgxYWQyZDZmZTcwMDYzMThlOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzdiNTI0MGRiNDFiYTQ4NzVhZWZhYjlmOTJmOWZkMzA3LmJpbmRQb3B1cChwb3B1cF8xMzg3YjZjYzAzMGM0MmY4OWE3MzU4NjliODgzNGFkMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kODg1Y2ZmZDAzYWM0ZGVhOTIwYzY2YzIyMTIzMTlmYiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NDYyMDY0OTEwNjQ5NSwtMTIyLjUwMDM4MDQyNzkxNV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMmMzM2E5MzJmZDBkNDE3YWFhZDQ5NTNjZGFiYjUyMzQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGUxYTc2MDk4MDMzNGZkYmJmNjM5YzlmNDk4YWEwMDUgPSAkKCc8ZGl2IGlkPSJodG1sXzRlMWE3NjA5ODAzMzRmZGJiZjYzOWM5ZjQ5OGFhMDA1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMmMzM2E5MzJmZDBkNDE3YWFhZDQ5NTNjZGFiYjUyMzQuc2V0Q29udGVudChodG1sXzRlMWE3NjA5ODAzMzRmZGJiZjYzOWM5ZjQ5OGFhMDA1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZDg4NWNmZmQwM2FjNGRlYTkyMGM2NmMyMjEyMzE5ZmIuYmluZFBvcHVwKHBvcHVwXzJjMzNhOTMyZmQwZDQxN2FhYWQ0OTUzY2RhYmI1MjM0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzI1NTAyYzExNThmZjQ0Mjc5YzU3YTU3NDkzZDgzNTUyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1MTkxODI2NzIxNywtMTIyLjQ2NjU1ODc4MDY4M10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZTc0YjA0ZmE0MmNlNDdiYmJkYzY5N2FkMTZmYzg4ZjMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTU4M2UxNmUxMzM2NDBhZmFjNmRlZWI4MTlmODc0MWUgPSAkKCc8ZGl2IGlkPSJodG1sXzE1ODNlMTZlMTMzNjQwYWZhYzZkZWViODE5Zjg3NDFlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5ST0JCRVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lNzRiMDRmYTQyY2U0N2JiYmRjNjk3YWQxNmZjODhmMy5zZXRDb250ZW50KGh0bWxfMTU4M2UxNmUxMzM2NDBhZmFjNmRlZWI4MTlmODc0MWUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yNTUwMmMxMTU4ZmY0NDI3OWM1N2E1NzQ5M2Q4MzU1Mi5iaW5kUG9wdXAocG9wdXBfZTc0YjA0ZmE0MmNlNDdiYmJkYzY5N2FkMTZmYzg4ZjMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZTZjNWJkMmVjZDllNDcxYWExOTgxNmNlMGM3Y2IzYzYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkwODQxNzI5MDI4LC0xMjIuNDg2OTI1OTYwMTE0MDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U4YmRhYTM4NDI4OTQyYTVhZDU1YmZhZDYyOTk4YTBlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzAwNWNlNWVjMTdiNDQ4ZDdiNTM0NTBlMmQyYWVmZDlhID0gJCgnPGRpdiBpZD0iaHRtbF8wMDVjZTVlYzE3YjQ0OGQ3YjUzNDUwZTJkMmFlZmQ5YSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U4YmRhYTM4NDI4OTQyYTVhZDU1YmZhZDYyOTk4YTBlLnNldENvbnRlbnQoaHRtbF8wMDVjZTVlYzE3YjQ0OGQ3YjUzNDUwZTJkMmFlZmQ5YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2U2YzViZDJlY2Q5ZTQ3MWFhMTk4MTZjZTBjN2NiM2M2LmJpbmRQb3B1cChwb3B1cF9lOGJkYWEzODQyODk0MmE1YWQ1NWJmYWQ2Mjk5OGEwZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85YmEwM2FiYTYxNWY0MGFjOWJlNTIwNWVkZmQ3MzdlMiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2ODUzNjAxMjM1ODMsLTEyMi40MTU2MTYzMzgzMTk5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMDExNThmNDk1MGY1NDk1MTk4YjgzZTg5NDI2YTg2OGIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfY2ViOGIzYzE3MmJmNGEwYzkxNzA3MzZkYWZhYTExYWIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYWJiZWZmZjc5Y2E2NDA4NWJjZGJhOTA2OTFjY2IwNWIgPSAkKCc8ZGl2IGlkPSJodG1sX2FiYmVmZmY3OWNhNjQwODViY2RiYTkwNjkxY2NiMDViIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NlYjhiM2MxNzJiZjRhMGM5MTcwNzM2ZGFmYWExMWFiLnNldENvbnRlbnQoaHRtbF9hYmJlZmZmNzljYTY0MDg1YmNkYmE5MDY5MWNjYjA1Yik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzliYTAzYWJhNjE1ZjQwYWM5YmU1MjA1ZWRmZDczN2UyLmJpbmRQb3B1cChwb3B1cF9jZWI4YjNjMTcyYmY0YTBjOTE3MDczNmRhZmFhMTFhYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85Y2RiYjM2OGRjNTI0ZWNjYTg5YjhmN2FmYzU2MWEzMCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQyOTc3MTQwNzQsLTEyMi40NDk3NTE2NTI1NjNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzhkOGExZmE5NTE3YzQ1N2FhZmM2OTlhZWNjYWEzNmQzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhjN2E1ZDdhYThiYzQ0M2U5OGFjYjkxZWMyMTA2ZWYxID0gJCgnPGRpdiBpZD0iaHRtbF84YzdhNWQ3YWE4YmM0NDNlOThhY2I5MWVjMjEwNmVmMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzhkOGExZmE5NTE3YzQ1N2FhZmM2OTlhZWNjYWEzNmQzLnNldENvbnRlbnQoaHRtbF84YzdhNWQ3YWE4YmM0NDNlOThhY2I5MWVjMjEwNmVmMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzljZGJiMzY4ZGM1MjRlY2NhODliOGY3YWZjNTYxYTMwLmJpbmRQb3B1cChwb3B1cF84ZDhhMWZhOTUxN2M0NTdhYWZjNjk5YWVjY2FhMzZkMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iYTdkYmJhMzdkNjg0OWFlYjA5YzYxOTAyNWRkNDY4YiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQyOTc3MTQwNzQsLTEyMi40NDk3NTE2NTI1NjNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzAxMTU4ZjQ5NTBmNTQ5NTE5OGI4M2U4OTQyNmE4NjhiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2M0NjdjZTk1OGVjMDQwOGI5NGI5YzE0NWRhZGEyN2U4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2E5MTQwMDZhMzhlZDQzMDlhZDAwZTgyNTA3MjdlNWRlID0gJCgnPGRpdiBpZD0iaHRtbF9hOTE0MDA2YTM4ZWQ0MzA5YWQwMGU4MjUwNzI3ZTVkZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzQ2N2NlOTU4ZWMwNDA4Yjk0YjljMTQ1ZGFkYTI3ZTguc2V0Q29udGVudChodG1sX2E5MTQwMDZhMzhlZDQzMDlhZDAwZTgyNTA3MjdlNWRlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYmE3ZGJiYTM3ZDY4NDlhZWIwOWM2MTkwMjVkZDQ2OGIuYmluZFBvcHVwKHBvcHVwX2M0NjdjZTk1OGVjMDQwOGI5NGI5YzE0NWRhZGEyN2U4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQ3NTVkNjdlNTAxMDQ4MTlhOWVjZmY4NjUwYTQyZGNiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM1MjY4MTQ2OTA4Mzk2LC0xMjIuNDcyNzE1NzU5NjMxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8wMTE1OGY0OTUwZjU0OTUxOThiODNlODk0MjZhODY4Yik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jYzc4ZTM2MjAxZGE0Yjc4OWI5ZjMwZTFkY2M0NDQ1NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83NmU5ZDZmZTUwZGQ0ZTMyYTFjNGY5NjhmNzJiNGI5ZSA9ICQoJzxkaXYgaWQ9Imh0bWxfNzZlOWQ2ZmU1MGRkNGUzMmExYzRmOTY4ZjcyYjRiOWUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NjNzhlMzYyMDFkYTRiNzg5YjlmMzBlMWRjYzQ0NDU3LnNldENvbnRlbnQoaHRtbF83NmU5ZDZmZTUwZGQ0ZTMyYTFjNGY5NjhmNzJiNGI5ZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzQ3NTVkNjdlNTAxMDQ4MTlhOWVjZmY4NjUwYTQyZGNiLmJpbmRQb3B1cChwb3B1cF9jYzc4ZTM2MjAxZGE0Yjc4OWI5ZjMwZTFkY2M0NDQ1Nyk7CgogICAgICAgICAgICAKICAgICAgICAKPC9zY3JpcHQ+\" 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 0x7fc450a40d30>"
]
},
"execution_count": 24,
"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://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DV0101EN/labs/Images/2000_census_population_density_map_by_state.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": 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": [
"Data downloaded and read into a dataframe!\n"
]
}
],
"source": [
"df_can = pd.read_excel('https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DV0101EN/labs/Data_Files/Canada.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": 26,
"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": 26,
"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": 27,
"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": 28,
"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": 29,
"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": 29,
"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": 30,
"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://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DV0101EN/labs/Data_Files/world_countries.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": 31,
"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": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"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": 32,
"metadata": {
"button": false,
"collapsed": true,
"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+ICNtYXBfYzdkNzQ5ZTYyYjQwNDg1Yzk0M2JiOGI0OTE1NDg1YTEgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2QzLzMuNS41L2QzLm1pbi5qcyI+PC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvbGl1bS1tYXAiIGlkPSJtYXBfYzdkNzQ5ZTYyYjQwNDg1Yzk0M2JiOGI0OTE1NDg1YTEiID48L2Rpdj4KICAgICAgICAKPC9ib2R5Pgo8c2NyaXB0PiAgICAKICAgIAoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgYm91bmRzID0gbnVsbDsKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFwX2M3ZDc0OWU2MmI0MDQ4NWM5NDNiYjhiNDkxNTQ4NWExID0gTC5tYXAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFwX2M3ZDc0OWU2MmI0MDQ4NWM5NDNiYjhiNDkxNTQ4NWExJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjZW50ZXI6IFswLDBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfYWEwMWQ3NDI1ZTRmNDQ4ZmJkNTUwNzM1MDRlNTMwNzYgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlcy5tYXBib3guY29tL3YzL21hcGJveC53b3JsZC1icmlnaHQve3p9L3t4fS97eX0ucG5nJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9jN2Q3NDllNjJiNDA0ODVjOTQzYmI4YjQ5MTU0ODVhMSk7CiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBnZW9fanNvbl9hM2M2OTA0YzMzNTQ0OTc5OTZjOGM3MGM5MDMzMGZkZiA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbNjEuMjEwODE3LCAzNS42NTAwNzJdLCBbNjIuMjMwNjUxLCAzNS4yNzA2NjRdLCBbNjIuOTg0NjYyLCAzNS40MDQwNDFdLCBbNjMuMTkzNTM4LCAzNS44NTcxNjZdLCBbNjMuOTgyODk2LCAzNi4wMDc5NTddLCBbNjQuNTQ2NDc5LCAzNi4zMTIwNzNdLCBbNjQuNzQ2MTA1LCAzNy4xMTE4MThdLCBbNjUuNTg4OTQ4LCAzNy4zMDUyMTddLCBbNjUuNzQ1NjMxLCAzNy42NjExNjRdLCBbNjYuMjE3Mzg1LCAzNy4zOTM3OV0sIFs2Ni41MTg2MDcsIDM3LjM2Mjc4NF0sIFs2Ny4wNzU3ODIsIDM3LjM1NjE0NF0sIFs2Ny44MywgMzcuMTQ0OTk0XSwgWzY4LjEzNTU2MiwgMzcuMDIzMTE1XSwgWzY4Ljg1OTQ0NiwgMzcuMzQ0MzM2XSwgWzY5LjE5NjI3MywgMzcuMTUxMTQ0XSwgWzY5LjUxODc4NSwgMzcuNjA4OTk3XSwgWzcwLjExNjU3OCwgMzcuNTg4MjIzXSwgWzcwLjI3MDU3NCwgMzcuNzM1MTY1XSwgWzcwLjM3NjMwNCwgMzguMTM4Mzk2XSwgWzcwLjgwNjgyMSwgMzguNDg2MjgyXSwgWzcxLjM0ODEzMSwgMzguMjU4OTA1XSwgWzcxLjIzOTQwNCwgMzcuOTUzMjY1XSwgWzcxLjU0MTkxOCwgMzcuOTA1Nzc0XSwgWzcxLjQ0ODY5MywgMzcuMDY1NjQ1XSwgWzcxLjg0NDYzOCwgMzYuNzM4MTcxXSwgWzcyLjE5MzA0MSwgMzYuOTQ4Mjg4XSwgWzcyLjYzNjg5LCAzNy4wNDc1NThdLCBbNzMuMjYwMDU2LCAzNy40OTUyNTddLCBbNzMuOTQ4Njk2LCAzNy40MjE1NjZdLCBbNzQuOTgwMDAyLCAzNy40MTk5OV0sIFs3NS4xNTgwMjgsIDM3LjEzMzAzMV0sIFs3NC41NzU4OTMsIDM3LjAyMDg0MV0sIFs3NC4wNjc1NTIsIDM2LjgzNjE3Nl0sIFs3Mi45MjAwMjUsIDM2LjcyMDAwN10sIFs3MS44NDYyOTIsIDM2LjUwOTk0Ml0sIFs3MS4yNjIzNDgsIDM2LjA3NDM4OF0sIFs3MS40OTg3NjgsIDM1LjY1MDU2M10sIFs3MS42MTMwNzYsIDM1LjE1MzIwM10sIFs3MS4xMTUwMTksIDM0LjczMzEyNl0sIFs3MS4xNTY3NzMsIDM0LjM0ODkxMV0sIFs3MC44ODE4MDMsIDMzLjk4ODg1Nl0sIFs2OS45MzA1NDMsIDM0LjAyMDEyXSwgWzcwLjMyMzU5NCwgMzMuMzU4NTMzXSwgWzY5LjY4NzE0NywgMzMuMTA1NDk5XSwgWzY5LjI2MjUyMiwgMzIuNTAxOTQ0XSwgWzY5LjMxNzc2NCwgMzEuOTAxNDEyXSwgWzY4LjkyNjY3NywgMzEuNjIwMTg5XSwgWzY4LjU1NjkzMiwgMzEuNzEzMzFdLCBbNjcuNzkyNjg5LCAzMS41ODI5M10sIFs2Ny42ODMzOTQsIDMxLjMwMzE1NF0sIFs2Ni45Mzg4OTEsIDMxLjMwNDkxMV0sIFs2Ni4zODE0NTgsIDMwLjczODg5OV0sIFs2Ni4zNDY0NzMsIDI5Ljg4Nzk0M10sIFs2NS4wNDY4NjIsIDI5LjQ3MjE4MV0sIFs2NC4zNTA0MTksIDI5LjU2MDAzMV0sIFs2NC4xNDgwMDIsIDI5LjM0MDgxOV0sIFs2My41NTAyNjEsIDI5LjQ2ODMzMV0sIFs2Mi41NDk4NTcsIDI5LjMxODU3Ml0sIFs2MC44NzQyNDgsIDI5LjgyOTIzOV0sIFs2MS43ODEyMjIsIDMwLjczNTg1XSwgWzYxLjY5OTMxNCwgMzEuMzc5NTA2XSwgWzYwLjk0MTk0NSwgMzEuNTQ4MDc1XSwgWzYwLjg2MzY1NSwgMzIuMTgyOTJdLCBbNjAuNTM2MDc4LCAzMi45ODEyNjldLCBbNjAuOTYzNywgMzMuNTI4ODMyXSwgWzYwLjUyODQzLCAzMy42NzY0NDZdLCBbNjAuODAzMTkzLCAzNC40MDQxMDJdLCBbNjEuMjEwODE3LCAzNS42NTAwNzJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkFGRyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQWZnaGFuaXN0YW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxNi4zMjY1MjgsIC01Ljg3NzQ3XSwgWzE2LjU3MzE4LCAtNi42MjI2NDVdLCBbMTYuODYwMTkxLCAtNy4yMjIyOThdLCBbMTcuMDg5OTk2LCAtNy41NDU2ODldLCBbMTcuNDcyOTcsIC04LjA2ODU1MV0sIFsxOC4xMzQyMjIsIC03Ljk4NzY3OF0sIFsxOC40NjQxNzYsIC03Ljg0NzAxNF0sIFsxOS4wMTY3NTIsIC03Ljk4ODI0Nl0sIFsxOS4xNjY2MTMsIC03LjczODE4NF0sIFsxOS40MTc1MDIsIC03LjE1NTQyOV0sIFsyMC4wMzc3MjMsIC03LjExNjM2MV0sIFsyMC4wOTE2MjIsIC02Ljk0MzA5XSwgWzIwLjYwMTgyMywgLTYuOTM5MzE4XSwgWzIwLjUxNDc0OCwgLTcuMjk5NjA2XSwgWzIxLjcyODExMSwgLTcuMjkwODcyXSwgWzIxLjc0NjQ1NiwgLTcuOTIwMDg1XSwgWzIxLjk0OTEzMSwgLTguMzA1OTAxXSwgWzIxLjgwMTgwMSwgLTguOTA4NzA3XSwgWzIxLjg3NTE4MiwgLTkuNTIzNzA4XSwgWzIyLjIwODc1MywgLTkuODk0Nzk2XSwgWzIyLjE1NTI2OCwgLTExLjA4NDgwMV0sIFsyMi40MDI3OTgsIC0xMC45OTMwNzVdLCBbMjIuODM3MzQ1LCAtMTEuMDE3NjIyXSwgWzIzLjQ1Njc5MSwgLTEwLjg2Nzg2M10sIFsyMy45MTIyMTUsIC0xMC45MjY4MjZdLCBbMjQuMDE3ODk0LCAtMTEuMjM3Mjk4XSwgWzIzLjkwNDE1NCwgLTExLjcyMjI4Ml0sIFsyNC4wNzk5MDUsIC0xMi4xOTEyOTddLCBbMjMuOTMwOTIyLCAtMTIuNTY1ODQ4XSwgWzI0LjAxNjEzNywgLTEyLjkxMTA0Nl0sIFsyMS45MzM4ODYsIC0xMi44OTg0MzddLCBbMjEuODg3ODQzLCAtMTYuMDgwMzFdLCBbMjIuNTYyNDc4LCAtMTYuODk4NDUxXSwgWzIzLjIxNTA0OCwgLTE3LjUyMzExNl0sIFsyMS4zNzcxNzYsIC0xNy45MzA2MzZdLCBbMTguOTU2MTg3LCAtMTcuNzg5MDk1XSwgWzE4LjI2MzMwOSwgLTE3LjMwOTk1MV0sIFsxNC4yMDk3MDcsIC0xNy4zNTMxMDFdLCBbMTQuMDU4NTAxLCAtMTcuNDIzMzgxXSwgWzEzLjQ2MjM2MiwgLTE2Ljk3MTIxMl0sIFsxMi44MTQwODEsIC0xNi45NDEzNDNdLCBbMTIuMjE1NDYxLCAtMTcuMTExNjY4XSwgWzExLjczNDE5OSwgLTE3LjMwMTg4OV0sIFsxMS42NDAwOTYsIC0xNi42NzMxNDJdLCBbMTEuNzc4NTM3LCAtMTUuNzkzODE2XSwgWzEyLjEyMzU4MSwgLTE0Ljg3ODMxNl0sIFsxMi4xNzU2MTksIC0xNC40NDkxNDRdLCBbMTIuNTAwMDk1LCAtMTMuNTQ3N10sIFsxMi43Mzg0NzksIC0xMy4xMzc5MDZdLCBbMTMuMzEyOTE0LCAtMTIuNDgzNjNdLCBbMTMuNjMzNzIxLCAtMTIuMDM4NjQ1XSwgWzEzLjczODcyOCwgLTExLjI5Nzg2M10sIFsxMy42ODYzNzksIC0xMC43MzEwNzZdLCBbMTMuMzg3MzI4LCAtMTAuMzczNTc4XSwgWzEzLjEyMDk4OCwgLTkuNzY2ODk3XSwgWzEyLjg3NTM3LCAtOS4xNjY5MzRdLCBbMTIuOTI5MDYxLCAtOC45NTkwOTFdLCBbMTMuMjM2NDMzLCAtOC41NjI2MjldLCBbMTIuOTMzMDQsIC03LjU5NjUzOV0sIFsxMi43MjgyOTgsIC02LjkyNzEyMl0sIFsxMi4yMjczNDcsIC02LjI5NDQ0OF0sIFsxMi4zMjI0MzIsIC02LjEwMDA5Ml0sIFsxMi43MzUxNzEsIC01Ljk2NTY4Ml0sIFsxMy4wMjQ4NjksIC01Ljk4NDM4OV0sIFsxMy4zNzU1OTcsIC01Ljg2NDI0MV0sIFsxNi4zMjY1MjgsIC01Ljg3NzQ3XV1dLCBbW1sxMi40MzY2ODgsIC01LjY4NDMwNF0sIFsxMi4xODIzMzcsIC01Ljc4OTkzMV0sIFsxMS45MTQ5NjMsIC01LjAzNzk4N10sIFsxMi4zMTg2MDgsIC00LjYwNjIzXSwgWzEyLjYyMDc2LCAtNC40MzgwMjNdLCBbMTIuOTk1NTE3LCAtNC43ODExMDNdLCBbMTIuNjMxNjEyLCAtNC45OTEyNzFdLCBbMTIuNDY4MDA0LCAtNS4yNDgzNjJdLCBbMTIuNDM2Njg4LCAtNS42ODQzMDRdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkFHTyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQW5nb2xhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1syMC41OTAyNDcsIDQxLjg1NTQwNF0sIFsyMC40NjMxNzUsIDQxLjUxNTA4OV0sIFsyMC42MDUxODIsIDQxLjA4NjIyNl0sIFsyMS4wMjAwNCwgNDAuODQyNzI3XSwgWzIwLjk5OTk5LCA0MC41ODAwMDRdLCBbMjAuNjc0OTk3LCA0MC40MzVdLCBbMjAuNjE1LCA0MC4xMTAwMDddLCBbMjAuMTUwMDE2LCAzOS42MjQ5OThdLCBbMTkuOTgsIDM5LjY5NDk5M10sIFsxOS45NjAwMDIsIDM5LjkxNTAwNl0sIFsxOS40MDYwODIsIDQwLjI1MDc3M10sIFsxOS4zMTkwNTksIDQwLjcyNzIzXSwgWzE5LjQwMzU1LCA0MS40MDk1NjZdLCBbMTkuNTQwMDI3LCA0MS43MTk5ODZdLCBbMTkuMzcxNzY5LCA0MS44Nzc1NDhdLCBbMTkuMzA0NDg2LCA0Mi4xOTU3NDVdLCBbMTkuNzM4MDUxLCA0Mi42ODgyNDddLCBbMTkuODAxNjEzLCA0Mi41MDAwOTNdLCBbMjAuMDcwNywgNDIuNTg4NjNdLCBbMjAuMjgzNzU1LCA0Mi4zMjAyNl0sIFsyMC41MjI5NSwgNDIuMjE3ODddLCBbMjAuNTkwMjQ3LCA0MS44NTU0MDRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkFMQiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQWxiYW5pYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbNTEuNTc5NTE5LCAyNC4yNDU0OTddLCBbNTEuNzU3NDQxLCAyNC4yOTQwNzNdLCBbNTEuNzk0Mzg5LCAyNC4wMTk4MjZdLCBbNTIuNTc3MDgxLCAyNC4xNzc0MzldLCBbNTMuNDA0MDA3LCAyNC4xNTEzMTddLCBbNTQuMDA4MDAxLCAyNC4xMjE3NThdLCBbNTQuNjkzMDI0LCAyNC43OTc4OTJdLCBbNTUuNDM5MDI1LCAyNS40MzkxNDVdLCBbNTYuMDcwODIxLCAyNi4wNTU0NjRdLCBbNTYuMjYxMDQyLCAyNS43MTQ2MDZdLCBbNTYuMzk2ODQ3LCAyNC45MjQ3MzJdLCBbNTUuODg2MjMzLCAyNC45MjA4MzFdLCBbNTUuODA0MTE5LCAyNC4yNjk2MDRdLCBbNTUuOTgxMjE0LCAyNC4xMzA1NDNdLCBbNTUuNTI4NjMyLCAyMy45MzM2MDRdLCBbNTUuNTI1ODQxLCAyMy41MjQ4NjldLCBbNTUuMjM0NDg5LCAyMy4xMTA5OTNdLCBbNTUuMjA4MzQxLCAyMi43MDgzM10sIFs1NS4wMDY4MDMsIDIyLjQ5Njk0OF0sIFs1Mi4wMDA3MzMsIDIzLjAwMTE1NF0sIFs1MS42MTc3MDgsIDI0LjAxNDIxOV0sIFs1MS41Nzk1MTksIDI0LjI0NTQ5N11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQVJFIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJVbml0ZWQgQXJhYiBFbWlyYXRlcyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWy02NS41LCAtNTUuMl0sIFstNjYuNDUsIC01NS4yNV0sIFstNjYuOTU5OTIsIC01NC44OTY4MV0sIFstNjcuNTYyNDQsIC01NC44NzAwMV0sIFstNjguNjMzMzUsIC01NC44Njk1XSwgWy02OC42MzQwMSwgLTUyLjYzNjM3XSwgWy02OC4yNSwgLTUzLjFdLCBbLTY3Ljc1LCAtNTMuODVdLCBbLTY2LjQ1LCAtNTQuNDVdLCBbLTY1LjA1LCAtNTQuN10sIFstNjUuNSwgLTU1LjJdXV0sIFtbWy02NC45NjQ4OTIsIC0yMi4wNzU4NjJdLCBbLTY0LjM3NzAyMSwgLTIyLjc5ODA5MV0sIFstNjMuOTg2ODM4LCAtMjEuOTkzNjQ0XSwgWy02Mi44NDY0NjgsIC0yMi4wMzQ5ODVdLCBbLTYyLjY4NTA1NywgLTIyLjI0OTAyOV0sIFstNjAuODQ2NTY1LCAtMjMuODgwNzEzXSwgWy02MC4wMjg5NjYsIC0yNC4wMzI3OTZdLCBbLTU4LjgwNzEyOCwgLTI0Ljc3MTQ1OV0sIFstNTcuNzc3MjE3LCAtMjUuMTYyMzRdLCBbLTU3LjYzMzY2LCAtMjUuNjAzNjU3XSwgWy01OC42MTgxNzQsIC0yNy4xMjM3MTldLCBbLTU3LjYwOTc2LCAtMjcuMzk1ODk5XSwgWy01Ni40ODY3MDIsIC0yNy41NDg0OTldLCBbLTU1LjY5NTg0NiwgLTI3LjM4NzgzN10sIFstNTQuNzg4Nzk1LCAtMjYuNjIxNzg2XSwgWy01NC42MjUyOTEsIC0yNS43MzkyNTVdLCBbLTU0LjEzMDA1LCAtMjUuNTQ3NjM5XSwgWy01My42MjgzNDksIC0yNi4xMjQ4NjVdLCBbLTUzLjY0ODczNSwgLTI2LjkyMzQ3M10sIFstNTQuNDkwNzI1LCAtMjcuNDc0NzU3XSwgWy01NS4xNjIyODYsIC0yNy44ODE5MTVdLCBbLTU2LjI5MDksIC0yOC44NTI3NjFdLCBbLTU3LjYyNTEzMywgLTMwLjIxNjI5NV0sIFstNTcuODc0OTM3LCAtMzEuMDE2NTU2XSwgWy01OC4xNDI0NCwgLTMyLjA0NDUwNF0sIFstNTguMTMyNjQ4LCAtMzMuMDQwNTY3XSwgWy01OC4zNDk2MTEsIC0zMy4yNjMxODldLCBbLTU4LjQyNzA3NCwgLTMzLjkwOTQ1NF0sIFstNTguNDk1NDQyLCAtMzQuNDMxNDldLCBbLTU3LjIyNTgzLCAtMzUuMjg4MDI3XSwgWy01Ny4zNjIzNTksIC0zNS45NzczOV0sIFstNTYuNzM3NDg3LCAtMzYuNDEzMTI2XSwgWy01Ni43ODgyODUsIC0zNi45MDE1NzJdLCBbLTU3Ljc0OTE1NywgLTM4LjE4Mzg3MV0sIFstNTkuMjMxODU3LCAtMzguNzIwMjJdLCBbLTYxLjIzNzQ0NSwgLTM4LjkyODQyNV0sIFstNjIuMzM1OTU3LCAtMzguODI3NzA3XSwgWy02Mi4xMjU3NjMsIC0zOS40MjQxMDVdLCBbLTYyLjMzMDUzMSwgLTQwLjE3MjU4Nl0sIFstNjIuMTQ1OTk0LCAtNDAuNjc2ODk3XSwgWy02Mi43NDU4MDMsIC00MS4wMjg3NjFdLCBbLTYzLjc3MDQ5NSwgLTQxLjE2Njc4OV0sIFstNjQuNzMyMDksIC00MC44MDI2NzddLCBbLTY1LjExODAzNSwgLTQxLjA2NDMxNV0sIFstNjQuOTc4NTYxLCAtNDIuMDU4MDAxXSwgWy02NC4zMDM0MDgsIC00Mi4zNTkwMTZdLCBbLTYzLjc1NTk0OCwgLTQyLjA0MzY4N10sIFstNjMuNDU4MDU5LCAtNDIuNTYzMTM4XSwgWy02NC4zNzg4MDQsIC00Mi44NzM1NThdLCBbLTY1LjE4MTgwNCwgLTQzLjQ5NTM4MV0sIFstNjUuMzI4ODIzLCAtNDQuNTAxMzY2XSwgWy02NS41NjUyNjksIC00NS4wMzY3ODZdLCBbLTY2LjUwOTk2NiwgLTQ1LjAzOTYyOF0sIFstNjcuMjkzNzk0LCAtNDUuNTUxODk2XSwgWy02Ny41ODA1NDYsIC00Ni4zMDE3NzNdLCBbLTY2LjU5NzA2NiwgLTQ3LjAzMzkyNV0sIFstNjUuNjQxMDI3LCAtNDcuMjM2MTM1XSwgWy02NS45ODUwODgsIC00OC4xMzMyODldLCBbLTY3LjE2NjE3OSwgLTQ4LjY5NzMzN10sIFstNjcuODE2MDg4LCAtNDkuODY5NjY5XSwgWy02OC43Mjg3NDUsIC01MC4yNjQyMThdLCBbLTY5LjEzODUzOSwgLTUwLjczMjUxXSwgWy02OC44MTU1NjEsIC01MS43NzExMDRdLCBbLTY4LjE0OTk5NSwgLTUyLjM0OTk4M10sIFstNjguNTcxNTQ1LCAtNTIuMjk5NDQ0XSwgWy02OS40OTgzNjIsIC01Mi4xNDI3NjFdLCBbLTcxLjkxNDgwNCwgLTUyLjAwOTAyMl0sIFstNzIuMzI5NDA0LCAtNTEuNDI1OTU2XSwgWy03Mi4zMDk5NzQsIC01MC42NzcwMV0sIFstNzIuOTc1NzQ3LCAtNTAuNzQxNDVdLCBbLTczLjMyODA1MSwgLTUwLjM3ODc4NV0sIFstNzMuNDE1NDM2LCAtNDkuMzE4NDM2XSwgWy03Mi42NDgyNDcsIC00OC44Nzg2MThdLCBbLTcyLjMzMTE2MSwgLTQ4LjI0NDIzOF0sIFstNzIuNDQ3MzU1LCAtNDcuNzM4NTMzXSwgWy03MS45MTcyNTgsIC00Ni44ODQ4MzhdLCBbLTcxLjU1MjAwOSwgLTQ1LjU2MDczM10sIFstNzEuNjU5MzE2LCAtNDQuOTczNjg5XSwgWy03MS4yMjI3NzksIC00NC43ODQyNDNdLCBbLTcxLjMyOTgwMSwgLTQ0LjQwNzUyMl0sIFstNzEuNzkzNjIzLCAtNDQuMjA3MTcyXSwgWy03MS40NjQwNTYsIC00My43ODc2MTFdLCBbLTcxLjkxNTQyNCwgLTQzLjQwODU2NV0sIFstNzIuMTQ4ODk4LCAtNDIuMjU0ODg4XSwgWy03MS43NDY4MDQsIC00Mi4wNTEzODZdLCBbLTcxLjkxNTczNCwgLTQwLjgzMjMzOV0sIFstNzEuNjgwNzYxLCAtMzkuODA4MTY0XSwgWy03MS40MTM1MTcsIC0zOC45MTYwMjJdLCBbLTcwLjgxNDY2NCwgLTM4LjU1Mjk5NV0sIFstNzEuMTE4NjI1LCAtMzcuNTc2ODI3XSwgWy03MS4xMjE4ODEsIC0zNi42NTgxMjRdLCBbLTcwLjM2NDc2OSwgLTM2LjAwNTA4OV0sIFstNzAuMzg4MDQ5LCAtMzUuMTY5Njg4XSwgWy02OS44MTczMDksIC0zNC4xOTM1NzFdLCBbLTY5LjgxNDc3NywgLTMzLjI3Mzg4Nl0sIFstNzAuMDc0Mzk5LCAtMzMuMDkxMjFdLCBbLTcwLjUzNTA2OSwgLTMxLjM2NTAxXSwgWy02OS45MTkwMDgsIC0zMC4zMzYzMzldLCBbLTcwLjAxMzU1LCAtMjkuMzY3OTIzXSwgWy02OS42NTYxMywgLTI4LjQ1OTE0MV0sIFstNjkuMDAxMjM1LCAtMjcuNTIxMjE0XSwgWy02OC4yOTU1NDIsIC0yNi44OTkzNF0sIFstNjguNTk0OCwgLTI2LjUwNjkwOV0sIFstNjguMzg2MDAxLCAtMjYuMTg1MDE2XSwgWy02OC40MTc2NTMsIC0yNC41MTg1NTVdLCBbLTY3LjMyODQ0MywgLTI0LjAyNTMwM10sIFstNjYuOTg1MjM0LCAtMjIuOTg2MzQ5XSwgWy02Ny4xMDY2NzQsIC0yMi43MzU5MjVdLCBbLTY2LjI3MzMzOSwgLTIxLjgzMjMxXSwgWy02NC45NjQ4OTIsIC0yMi4wNzU4NjJdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkFSRyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQXJnZW50aW5hIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s0My41ODI3NDYsIDQxLjA5MjE0M10sIFs0NC45NzI0OCwgNDEuMjQ4MTI5XSwgWzQ1LjE3OTQ5NiwgNDAuOTg1MzU0XSwgWzQ1LjU2MDM1MSwgNDAuODEyMjldLCBbNDUuMzU5MTc1LCA0MC41NjE1MDRdLCBbNDUuODkxOTA3LCA0MC4yMTg0NzZdLCBbNDUuNjEwMDEyLCAzOS44OTk5OTRdLCBbNDYuMDM0NTM0LCAzOS42MjgwMjFdLCBbNDYuNDgzNDk5LCAzOS40NjQxNTVdLCBbNDYuNTA1NzIsIDM4Ljc3MDYwNV0sIFs0Ni4xNDM2MjMsIDM4Ljc0MTIwMV0sIFs0NS43MzUzNzksIDM5LjMxOTcxOV0sIFs0NS43Mzk5NzgsIDM5LjQ3Mzk5OV0sIFs0NS4yOTgxNDUsIDM5LjQ3MTc1MV0sIFs0NS4wMDE5ODcsIDM5Ljc0MDAwNF0sIFs0NC43OTM5OSwgMzkuNzEzMDAzXSwgWzQ0LjQwMDAwOSwgNDAuMDA1XSwgWzQzLjY1NjQzNiwgNDAuMjUzNTY0XSwgWzQzLjc1MjY1OCwgNDAuNzQwMjAxXSwgWzQzLjU4Mjc0NiwgNDEuMDkyMTQzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJBUk0iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkFybWVuaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1stNTkuNTcyMDk1LCAtODAuMDQwMTc5XSwgWy01OS44NjU4NDksIC04MC41NDk2NTddLCBbLTYwLjE1OTY1NiwgLTgxLjAwMDMyN10sIFstNjIuMjU1MzkzLCAtODAuODYzMTc4XSwgWy02NC40ODgxMjUsIC04MC45MjE5MzRdLCBbLTY1Ljc0MTY2NiwgLTgwLjU4ODgyN10sIFstNjUuNzQxNjY2LCAtODAuNTQ5NjU3XSwgWy02Ni4yOTAwMzEsIC04MC4yNTU3NzNdLCBbLTY0LjAzNzY4OCwgLTgwLjI5NDk0NF0sIFstNjEuODgzMjQ2LCAtODAuMzkyODddLCBbLTYxLjEzODk3NiwgLTc5Ljk4MTM3MV0sIFstNjAuNjEwMTE5LCAtNzkuNjI4Njc5XSwgWy01OS41NzIwOTUsIC04MC4wNDAxNzldXV0sIFtbWy0xNTkuMjA4MTg0LCAtNzkuNDk3MDU5XSwgWy0xNjEuMTI3NjAxLCAtNzkuNjM0MjA5XSwgWy0xNjIuNDM5ODQ3LCAtNzkuMjgxNDY1XSwgWy0xNjMuMDI3NDA4LCAtNzguOTI4Nzc0XSwgWy0xNjMuMDY2NjA0LCAtNzguODY5OTY2XSwgWy0xNjMuNzEyODk2LCAtNzguNTk1NjY3XSwgWy0xNjMuNzEyODk2LCAtNzguNTk1NjY3XSwgWy0xNjMuMTA1ODAxLCAtNzguMjIzMzM4XSwgWy0xNjEuMjQ1MTEzLCAtNzguMzgwMTc2XSwgWy0xNjAuMjQ2MjA4LCAtNzguNjkzNjQ1XSwgWy0xNTkuNDgyNDA1LCAtNzkuMDQ2MzM4XSwgWy0xNTkuMjA4MTg0LCAtNzkuNDk3MDU5XV1dLCBbW1stNDUuMTU0NzU4LCAtNzguMDQ3MDddLCBbLTQzLjkyMDgyOCwgLTc4LjQ3ODEwM10sIFstNDMuNDg5OTUsIC03OS4wODU1Nl0sIFstNDMuMzcyNDM4LCAtNzkuNTE2NjQ1XSwgWy00My4zMzMyNjcsIC04MC4wMjYxMjNdLCBbLTQ0Ljg4MDUzNywgLTgwLjMzOTY0NF0sIFstNDYuNTA2MTc0LCAtODAuNTk0MzU3XSwgWy00OC4zODY0MjEsIC04MC44Mjk0ODVdLCBbLTUwLjQ4MjEwNywgLTgxLjAyNTQ0Ml0sIFstNTIuODUxOTg4LCAtODAuOTY2Njg1XSwgWy01NC4xNjQyNTksIC04MC42MzM1MjhdLCBbLTUzLjk4Nzk5MSwgLTgwLjIyMjAyOF0sIFstNTEuODUzMTM0LCAtNzkuOTQ3NzNdLCBbLTUwLjk5MTMyNiwgLTc5LjYxNDYyM10sIFstNTAuMzY0NTk1LCAtNzkuMTgzNDg3XSwgWy00OS45MTQxMzEsIC03OC44MTEyMDldLCBbLTQ5LjMwNjk1OSwgLTc4LjQ1ODU2OV0sIFstNDguNjYwNjE2LCAtNzguMDQ3MDE4XSwgWy00OC42NjA2MTYsIC03OC4wNDcwMTldLCBbLTQ4LjE1MTM5NiwgLTc4LjA0NzA3XSwgWy00Ni42NjI4NTcsIC03Ny44MzE0NzZdLCBbLTQ1LjE1NDc1OCwgLTc4LjA0NzA3XV1dLCBbW1stMTIxLjIxMTUxMSwgLTczLjUwMDk5XSwgWy0xMTkuOTE4ODUxLCAtNzMuNjU3NzI1XSwgWy0xMTguNzI0MTQzLCAtNzMuNDgxMzUzXSwgWy0xMTkuMjkyMTE5LCAtNzMuODM0MDk3XSwgWy0xMjAuMjMyMjE3LCAtNzQuMDg4ODFdLCBbLTEyMS42MjI4MywgLTc0LjAxMDQ2OF0sIFstMTIyLjYyMTczNSwgLTczLjY1Nzc3OF0sIFstMTIyLjYyMTczNSwgLTczLjY1Nzc3N10sIFstMTIyLjQwNjI0NSwgLTczLjMyNDYxOV0sIFstMTIxLjIxMTUxMSwgLTczLjUwMDk5XV1dLCBbW1stMTI1LjU1OTU2NiwgLTczLjQ4MTM1M10sIFstMTI0LjAzMTg4MiwgLTczLjg3MzI2OF0sIFstMTI0LjYxOTQ2OSwgLTczLjgzNDA5N10sIFstMTI1LjkxMjE4MSwgLTczLjczNjExOF0sIFstMTI3LjI4MzEzLCAtNzMuNDYxNzY5XSwgWy0xMjcuMjgzMTMsIC03My40NjE3NjhdLCBbLTEyNi41NTg0NzIsIC03My4yNDYyMjZdLCBbLTEyNS41NTk1NjYsIC03My40ODEzNTNdXV0sIFtbWy05OC45ODE1NSwgLTcxLjkzMzMzNF0sIFstOTcuODg0NzQzLCAtNzIuMDcwNTM1XSwgWy05Ni43ODc5MzcsIC03MS45NTI5NzFdLCBbLTk2LjIwMDM1LCAtNzIuNTIxMjA1XSwgWy05Ni45ODM3NjUsIC03Mi40NDI4NjRdLCBbLTk4LjE5ODA4MywgLTcyLjQ4MjAzNV0sIFstOTkuNDMyMDEzLCAtNzIuNDQyODY0XSwgWy0xMDAuNzgzNDU1LCAtNzIuNTAxNjJdLCBbLTEwMS44MDE4NjgsIC03Mi4zMDU2NjNdLCBbLTEwMi4zMzA3MjUsIC03MS44OTQxNjRdLCBbLTEwMi4zMzA3MjUsIC03MS44OTQxNjRdLCBbLTEwMS43MDM5NjcsIC03MS43MTc3OTJdLCBbLTEwMC40MzA5MTksIC03MS44NTQ5OTNdLCBbLTk4Ljk4MTU1LCAtNzEuOTMzMzM0XV1dLCBbW1stNjguNDUxMzQ2LCAtNzAuOTU1ODIzXSwgWy02OC4zMzM4MzQsIC03MS40MDY0OTNdLCBbLTY4LjUxMDEyOCwgLTcxLjc5ODQwN10sIFstNjguNzg0Mjk3LCAtNzIuMTcwNzM2XSwgWy02OS45NTk0NzEsIC03Mi4zMDc4ODVdLCBbLTcxLjA3NTg4OSwgLTcyLjUwMzg0Ml0sIFstNzIuMzg4MTM0LCAtNzIuNDg0MjU3XSwgWy03MS44OTg1LCAtNzIuMDkyMzQzXSwgWy03My4wNzM2MjIsIC03Mi4yMjk0OTJdLCBbLTc0LjE5MDA0LCAtNzIuMzY2NjkzXSwgWy03NC45NTM4OTUsIC03Mi4wNzI3NTddLCBbLTc1LjAxMjYyNSwgLTcxLjY2MTI1OF0sIFstNzMuOTE1ODE5LCAtNzEuMjY5MzQ1XSwgWy03My45MTU4MTksIC03MS4yNjkzNDRdLCBbLTczLjIzMDMzMSwgLTcxLjE1MTc4XSwgWy03Mi4wNzQ3MTcsIC03MS4xOTA5NTFdLCBbLTcxLjc4MDk2MiwgLTcwLjY4MTQ3M10sIFstNzEuNzIyMTgsIC03MC4zMDkxOTZdLCBbLTcxLjc0MTc5MSwgLTY5LjUwNTc4Ml0sIFstNzEuMTczODE1LCAtNjkuMDM1NDc1XSwgWy03MC4yNTMyNTIsIC02OC44Nzg3NF0sIFstNjkuNzI0NDQ3LCAtNjkuMjUxMDE3XSwgWy02OS40ODk0MjIsIC02OS42MjMzNDZdLCBbLTY5LjA1ODUxOCwgLTcwLjA3NDAxNl0sIFstNjguNzI1NTQxLCAtNzAuNTA1MTUzXSwgWy02OC40NTEzNDYsIC03MC45NTU4MjNdXV0sIFtbWy01OC42MTQxNDMsIC02NC4xNTI0NjddLCBbLTU5LjA0NTA3MywgLTY0LjM2ODAxXSwgWy01OS43ODkzNDIsIC02NC4yMTEyMjNdLCBbLTYwLjYxMTkyOCwgLTY0LjMwOTIwMl0sIFstNjEuMjk3NDE2LCAtNjQuNTQ0MzNdLCBbLTYyLjAyMjEsIC02NC43OTkwOTRdLCBbLTYyLjUxMTc2LCAtNjUuMDkzMDNdLCBbLTYyLjY0ODg1OCwgLTY1LjQ4NDk0Ml0sIFstNjIuNTkwMTI4LCAtNjUuODU3MjE5XSwgWy02Mi4xMjAwNzksIC02Ni4xOTAzMjZdLCBbLTYyLjgwNTU2NywgLTY2LjQyNTUwNV0sIFstNjMuNzQ1NjksIC02Ni41MDM4NDddLCBbLTY0LjI5NDEwNiwgLTY2LjgzNzAwNF0sIFstNjQuODgxNjkzLCAtNjcuMTUwNDc0XSwgWy02NS41MDg0MjUsIC02Ny41ODE2MV0sIFstNjUuNjY1MDgyLCAtNjcuOTUzODg3XSwgWy02NS4zMTI1NDUsIC02OC4zNjUzMzVdLCBbLTY0Ljc4MzcxNSwgLTY4LjY3ODkwOF0sIFstNjMuOTYxMTAzLCAtNjguOTEzOTg0XSwgWy02My4xOTczLCAtNjkuMjI3NTU2XSwgWy02Mi43ODU5NTUsIC02OS42MTk0MTldLCBbLTYyLjU3MDUxNiwgLTY5Ljk5MTc0N10sIFstNjIuMjc2NzM2LCAtNzAuMzgzNjYxXSwgWy02MS44MDY2NjEsIC03MC43MTY3NjhdLCBbLTYxLjUxMjkwNiwgLTcxLjA4OTA0NV0sIFstNjEuMzc1ODA5LCAtNzIuMDEwMDc0XSwgWy02MS4wODE5NzcsIC03Mi4zODIzNTFdLCBbLTYxLjAwMzY2MSwgLTcyLjc3NDI2NV0sIFstNjAuNjkwMjY5LCAtNzMuMTY2MTc5XSwgWy02MC44MjczNjcsIC03My42OTUyNDJdLCBbLTYxLjM3NTgwOSwgLTc0LjEwNjc0Ml0sIFstNjEuOTYzMzcsIC03NC40Mzk4NDhdLCBbLTYzLjI5NTIwMSwgLTc0LjU3Njk5N10sIFstNjMuNzQ1NjksIC03NC45Mjk3NF0sIFstNjQuMzUyODM2LCAtNzUuMjYyODQ3XSwgWy02NS44NjA5ODcsIC03NS42MzUxMjRdLCBbLTY3LjE5MjgxOCwgLTc1Ljc5MTkxXSwgWy02OC40NDYyODIsIC03Ni4wMDc0NTJdLCBbLTY5Ljc5NzcyNCwgLTc2LjIyMjk5NV0sIFstNzAuNjAwNzI0LCAtNzYuNjM0NDk0XSwgWy03Mi4yMDY3NzYsIC03Ni42NzM2NjVdLCBbLTczLjk2OTUzNiwgLTc2LjYzNDQ5NF0sIFstNzUuNTU1OTc3LCAtNzYuNzEyODg3XSwgWy03Ny4yNDAzNywgLTc2LjcxMjg4N10sIFstNzYuOTI2OTc5LCAtNzcuMTA0ODAyXSwgWy03NS4zOTkyOTQsIC03Ny4yODEwN10sIFstNzQuMjgyODc2LCAtNzcuNTU1NDJdLCBbLTczLjY1NjExOSwgLTc3LjkwODExMl0sIFstNzQuNzcyNTM2LCAtNzguMjIxNjMzXSwgWy03Ni40OTYxLCAtNzguMTIzNjU0XSwgWy03Ny45MjU4NTgsIC03OC4zNzg0MTldLCBbLTc3Ljk4NDY2NiwgLTc4Ljc4OTkxOF0sIFstNzguMDIzNzg1LCAtNzkuMTgxODMzXSwgWy03Ni44NDg2MzcsIC03OS41MTQ5MzldLCBbLTc2LjYzMzIyNCwgLTc5Ljg4NzIxNl0sIFstNzUuMzYwMDk3LCAtODAuMjU5NTQ1XSwgWy03My4yNDQ4NTIsIC04MC40MTYzMzFdLCBbLTcxLjQ0Mjk0NiwgLTgwLjY5MDYzXSwgWy03MC4wMTMxNjMsIC04MS4wMDQxNTFdLCBbLTY4LjE5MTY0NiwgLTgxLjMxNzY3Ml0sIFstNjUuNzA0Mjc5LCAtODEuNDc0NDU4XSwgWy02My4yNTYwMywgLTgxLjc0ODc1N10sIFstNjEuNTUyMDI2LCAtODIuMDQyNjkyXSwgWy01OS42OTE0MTYsIC04Mi4zNzU4NV0sIFstNTguNzEyMTIxLCAtODIuODQ2MTA2XSwgWy01OC4yMjI0ODcsIC04My4yMTg0MzRdLCBbLTU3LjAwODExNywgLTgyLjg2NTY5MV0sIFstNTUuMzYyODk0LCAtODIuNTcxNzU1XSwgWy01My42MTk3NzEsIC04Mi4yNTgyMzVdLCBbLTUxLjU0MzY0NCwgLTgyLjAwMzUyMV0sIFstNDkuNzYxMzUsIC04MS43MjkxNzFdLCBbLTQ3LjI3MzkzMSwgLTgxLjcwOTU4Nl0sIFstNDQuODI1NzA4LCAtODEuODQ2NzM1XSwgWy00Mi44MDgzNjMsIC04Mi4wODE5MTVdLCBbLTQyLjE2MjAyLCAtODEuNjUwODNdLCBbLTQwLjc3MTQzMywgLTgxLjM1Njg5NF0sIFstMzguMjQ0ODE4LCAtODEuMzM3MzA5XSwgWy0zNi4yNjY2NywgLTgxLjEyMTcxNV0sIFstMzQuMzg2Mzk3LCAtODAuOTA2MTcyXSwgWy0zMi4zMTAyOTYsIC04MC43NjkwMjNdLCBbLTMwLjA5NzA5OCwgLTgwLjU5MjY1MV0sIFstMjguNTQ5ODAyLCAtODAuMzM3OTM4XSwgWy0yOS4yNTQ5MDEsIC03OS45ODUxOTVdLCBbLTI5LjY4NTgwNSwgLTc5LjYzMjUwM10sIFstMjkuNjg1ODA1LCAtNzkuMjYwMjI2XSwgWy0zMS42MjQ4MDgsIC03OS4yOTkzOTddLCBbLTMzLjY4MTMyNCwgLTc5LjQ1NjEzMl0sIFstMzUuNjM5OTEyLCAtNzkuNDU2MTMyXSwgWy0zNS45MTQxMDcsIC03OS4wODM4NTVdLCBbLTM1Ljc3NzAxLCAtNzguMzM5MjQ4XSwgWy0zNS4zMjY1NDYsIC03OC4xMjM2NTRdLCBbLTMzLjg5Njc2MywgLTc3Ljg4ODUyNl0sIFstMzIuMjEyMzY5LCAtNzcuNjUzNDVdLCBbLTMwLjk5ODA1MSwgLTc3LjM1OTUxNV0sIFstMjkuNzgzNzMyLCAtNzcuMDY1NTc5XSwgWy0yOC44ODI3NzksIC03Ni42NzM2NjVdLCBbLTI3LjUxMTc1MiwgLTc2LjQ5NzM0NV0sIFstMjYuMTYwMzM2LCAtNzYuMzYwMTQ0XSwgWy0yNS40NzQ4MjIsIC03Ni4yODE4MDNdLCBbLTIzLjkyNzU1MiwgLTc2LjI0MjU4XSwgWy0yMi40NTg1OTgsIC03Ni4xMDU0MzFdLCBbLTIxLjIyNDY5NCwgLTc1LjkwOTQ3NF0sIFstMjAuMDEwMzc1LCAtNzUuNjc0MzQ2XSwgWy0xOC45MTM1NDMsIC03NS40MzkyMThdLCBbLTE3LjUyMjk4MiwgLTc1LjEyNTY5OF0sIFstMTYuNjQxNTg5LCAtNzQuNzkyNTRdLCBbLTE1LjcwMTQ5MSwgLTc0LjQ5ODYwNF0sIFstMTUuNDA3NzEsIC03NC4xMDY3NDJdLCBbLTE2LjQ2NTMyLCAtNzMuODcxNjE0XSwgWy0xNi4xMTI3ODQsIC03My40NjAxMTRdLCBbLTE1LjQ0Njg1NSwgLTczLjE0NjU0Ml0sIFstMTQuNDA4ODA1LCAtNzIuOTUwNTg1XSwgWy0xMy4zMTE5NzMsIC03Mi43MTU0NTddLCBbLTEyLjI5MzUwOCwgLTcyLjQwMTkzNl0sIFstMTEuNTEwMDY3LCAtNzIuMDEwMDc0XSwgWy0xMS4wMjA0MzMsIC03MS41Mzk3NjddLCBbLTEwLjI5NTc3NCwgLTcxLjI2NTQxNl0sIFstOS4xMDEwMTUsIC03MS4zMjQyMjRdLCBbLTguNjExMzgxLCAtNzEuNjU3MzNdLCBbLTcuNDE2NjIyLCAtNzEuNjk2NTAxXSwgWy03LjM3NzQ1MSwgLTcxLjMyNDIyNF0sIFstNi44NjgyMzIsIC03MC45MzIzMV0sIFstNS43OTA5ODUsIC03MS4wMzAyODldLCBbLTUuNTM2Mzc1LCAtNzEuNDAyNjE3XSwgWy00LjM0MTY2NywgLTcxLjQ2MTM3M10sIFstMy4wNDg5ODEsIC03MS4yODUwNTNdLCBbLTEuNzk1NDkyLCAtNzEuMTY3NDM4XSwgWy0wLjY1OTQ4OSwgLTcxLjIyNjI0Nl0sIFstMC4yMjg2MzcsIC03MS42Mzc3NDVdLCBbMC44NjgxOTUsIC03MS4zMDQ2MzldLCBbMS44ODY2ODYsIC03MS4xMjgyNjddLCBbMy4wMjI2MzgsIC03MC45OTExMThdLCBbNC4xMzkwNTUsIC03MC44NTM5MTddLCBbNS4xNTc1NDYsIC03MC42MTg3ODldLCBbNi4yNzM5MTIsIC03MC40NjIwNTVdLCBbNy4xMzU3MiwgLTcwLjI0NjUxMl0sIFs3Ljc0Mjg2NiwgLTY5Ljg5Mzc2OV0sIFs4LjQ4NzExLCAtNzAuMTQ4NTM0XSwgWzkuNTI1MTM1LCAtNzAuMDExMzMzXSwgWzEwLjI0OTg0NSwgLTcwLjQ4MTY0XSwgWzEwLjgxNzgyMSwgLTcwLjgzNDMzMl0sIFsxMS45NTM4MjQsIC03MC42MzgzNzVdLCBbMTIuNDA0Mjg3LCAtNzAuMjQ2NTEyXSwgWzEzLjQyMjc3OCwgLTY5Ljk3MjE2Ml0sIFsxNC43MzQ5OTgsIC03MC4wMzA5MThdLCBbMTUuMTI2NzU3LCAtNzAuNDAzMjQ3XSwgWzE1Ljk0OTM0MiwgLTcwLjAzMDkxOF0sIFsxNy4wMjY1ODksIC02OS45MTMzNTRdLCBbMTguMjAxNzExLCAtNjkuODc0MTgzXSwgWzE5LjI1OTM3MywgLTY5Ljg5Mzc2OV0sIFsyMC4zNzU3MzksIC03MC4wMTEzMzNdLCBbMjEuNDUyOTg1LCAtNzAuMDcwMTRdLCBbMjEuOTIzMDM0LCAtNzAuNDAzMjQ3XSwgWzIyLjU2OTQwMywgLTcwLjY5NzE4Ml0sIFsyMy42NjYxODQsIC03MC41MjA4MTFdLCBbMjQuODQxMzU3LCAtNzAuNDgxNjRdLCBbMjUuOTc3MzA5LCAtNzAuNDgxNjRdLCBbMjcuMDkzNzI2LCAtNzAuNDYyMDU1XSwgWzI4LjA5MjU4LCAtNzAuMzI0ODU0XSwgWzI5LjE1MDI0MiwgLTcwLjIwNzI5XSwgWzMwLjAzMTU4MywgLTY5LjkzMjk0XSwgWzMwLjk3MTczMywgLTY5Ljc1NjYyXSwgWzMxLjk5MDE3MiwgLTY5LjY1ODY0MV0sIFszMi43NTQwNTMsIC02OS4zODQyOTFdLCBbMzMuMzAyNDQzLCAtNjguODM1NjQyXSwgWzMzLjg3MDQxOSwgLTY4LjUwMjU4OF0sIFszNC45MDg0OTUsIC02OC42NTkyNzFdLCBbMzUuMzAwMjAyLCAtNjkuMDEyMDE0XSwgWzM2LjE2MjAxLCAtNjkuMjQ3MTQyXSwgWzM3LjIwMDAzNSwgLTY5LjE2ODc0OF0sIFszNy45MDUxMDgsIC02OS41MjE0NF0sIFszOC42NDk0MDQsIC02OS43NzYyMDVdLCBbMzkuNjY3ODk0LCAtNjkuNTQxMDc3XSwgWzQwLjAyMDQzMSwgLTY5LjEwOTk0MV0sIFs0MC45MjEzNTgsIC02OC45MzM2MjFdLCBbNDEuOTU5NDM0LCAtNjguNjAwNTE0XSwgWzQyLjkzODcwMiwgLTY4LjQ2MzMxM10sIFs0NC4xMTM4NzYsIC02OC4yNjc0MDhdLCBbNDQuODk3MjkxLCAtNjguMDUxODY2XSwgWzQ1LjcxOTkyOCwgLTY3LjgxNjczOF0sIFs0Ni41MDMzNDMsIC02Ny42MDExOTZdLCBbNDcuNDQzNDQsIC02Ny43MTg3NTldLCBbNDguMzQ0NDE5LCAtNjcuMzY2MDY4XSwgWzQ4Ljk5MDczNiwgLTY3LjA5MTcxOF0sIFs0OS45MzA4ODUsIC02Ny4xMTEzMDNdLCBbNTAuNzUzNDcxLCAtNjYuODc2MTc1XSwgWzUwLjk0OTMyNSwgLTY2LjUyMzQ4NF0sIFs1MS43OTE1NDcsIC02Ni4yNDkxMzNdLCBbNTIuNjE0MTMzLCAtNjYuMDUzMTc2XSwgWzUzLjYxMzAzOCwgLTY1Ljg5NjM5XSwgWzU0LjUzMzU1LCAtNjUuODE4MDQ5XSwgWzU1LjQxNDk0MywgLTY1Ljg3NjgwNV0sIFs1Ni4zNTUwNDEsIC02NS45NzQ3ODNdLCBbNTcuMTU4MDkzLCAtNjYuMjQ5MTMzXSwgWzU3LjI1NTk2OCwgLTY2LjY4MDIxOF0sIFs1OC4xMzczNjEsIC02Ny4wMTMzMjRdLCBbNTguNzQ0NTA4LCAtNjcuMjg3Njc1XSwgWzU5LjkzOTMxOCwgLTY3LjQwNTIzOV0sIFs2MC42MDUyMjEsIC02Ny42Nzk1ODldLCBbNjEuNDI3ODA2LCAtNjcuOTUzODg3XSwgWzYyLjM4NzQ4OSwgLTY4LjAxMjY5NV0sIFs2My4xOTA0OSwgLTY3LjgxNjczOF0sIFs2NC4wNTIzNDksIC02Ny40MDUyMzldLCBbNjQuOTkyNDQ3LCAtNjcuNjIwNzI5XSwgWzY1Ljk3MTcxNSwgLTY3LjczODM0NV0sIFs2Ni45MTE4NjQsIC02Ny44NTU5MDldLCBbNjcuODkxMTMzLCAtNjcuOTM0MzAyXSwgWzY4Ljg5MDAzOCwgLTY3LjkzNDMwMl0sIFs2OS43MTI2MjQsIC02OC45NzI3OTFdLCBbNjkuNjczNDUzLCAtNjkuMjI3NTU2XSwgWzY5LjU1NTk0MSwgLTY5LjY3ODIyNl0sIFs2OC41OTYyNTgsIC02OS45MzI5NF0sIFs2Ny44MTI3NCwgLTcwLjMwNTI2OF0sIFs2Ny45NDk4ODksIC03MC42OTcxODJdLCBbNjkuMDY2MzA3LCAtNzAuNjc3NTQ1XSwgWzY4LjkyOTE1NywgLTcxLjA2OTQ1OV0sIFs2OC40MTk5ODksIC03MS40NDE3ODhdLCBbNjcuOTQ5ODg5LCAtNzEuODUzMjg3XSwgWzY4LjcxMzc3LCAtNzIuMTY2ODA4XSwgWzY5Ljg2OTMwNywgLTcyLjI2NDc4N10sIFs3MS4wMjQ4OTUsIC03Mi4wODg0MTVdLCBbNzEuNTczMjg1LCAtNzEuNjk2NTAxXSwgWzcxLjkwNjI4OCwgLTcxLjMyNDIyNF0sIFs3Mi40NTQ2MjcsIC03MS4wMTA3MDNdLCBbNzMuMDgxNDEsIC03MC43MTY3NjhdLCBbNzMuMzM2MDIsIC03MC4zNjQwMjRdLCBbNzMuODY0ODc3LCAtNjkuODc0MTgzXSwgWzc0LjQ5MTU1NywgLTY5Ljc3NjIwNV0sIFs3NS42Mjc1NiwgLTY5LjczNzAzNF0sIFs3Ni42MjY0NjUsIC02OS42MTk0MTldLCBbNzcuNjQ0OTA0LCAtNjkuNDYyNjg0XSwgWzc4LjEzNDUzOSwgLTY5LjA3MDc3XSwgWzc4LjQyODM3MSwgLTY4LjY5ODQ0MV0sIFs3OS4xMTM4NTksIC02OC4zMjYyMTZdLCBbODAuMDkzMTI3LCAtNjguMDcxNTAzXSwgWzgwLjkzNTM1LCAtNjcuODc1NTQ2XSwgWzgxLjQ4Mzc5MiwgLTY3LjU0MjM4OF0sIFs4Mi4wNTE3NjcsIC02Ny4zNjYwNjhdLCBbODIuNzc2NDI2LCAtNjcuMjA5MjgyXSwgWzgzLjc3NTMzMSwgLTY3LjMwNzI2XSwgWzg0LjY3NjIwNiwgLTY3LjIwOTI4Ml0sIFs4NS42NTU1MjcsIC02Ny4wOTE3MThdLCBbODYuNzUyMzU5LCAtNjcuMTUwNDc0XSwgWzg3LjQ3NzAxNywgLTY2Ljg3NjE3NV0sIFs4Ny45ODYyODksIC02Ni4yMDk5MTFdLCBbODguMzU4NDExLCAtNjYuNDg0MjYxXSwgWzg4LjgyODQwOCwgLTY2Ljk1NDU2OF0sIFs4OS42NzA2MywgLTY3LjE1MDQ3NF0sIFs5MC42MzAzNjUsIC02Ny4yMjg4NjddLCBbOTEuNTkwMSwgLTY3LjExMTMwM10sIFs5Mi42MDg1MzksIC02Ny4xODk2OTZdLCBbOTMuNTQ4NjM3LCAtNjcuMjA5MjgyXSwgWzk0LjE3NTQyLCAtNjcuMTExMzAzXSwgWzk1LjAxNzU5MSwgLTY3LjE3MDExMV0sIFs5NS43ODE0NzIsIC02Ny4zODU2NTNdLCBbOTYuNjgyMzk5LCAtNjcuMjQ4NTA0XSwgWzk3Ljc1OTY0NiwgLTY3LjI0ODUwNF0sIFs5OC42ODAyMSwgLTY3LjExMTMwM10sIFs5OS43MTgxODIsIC02Ny4yNDg1MDRdLCBbMTAwLjM4NDE4OCwgLTY2LjkxNTM0Nl0sIFsxMDAuODkzMzU2LCAtNjYuNTgyMjRdLCBbMTAxLjU3ODg5NiwgLTY2LjMwNzg5XSwgWzEwMi44MzI0MTEsIC02NS41NjMyODRdLCBbMTAzLjQ3ODY3NiwgLTY1LjcwMDQ4NV0sIFsxMDQuMjQyNTU3LCAtNjUuOTc0NzgzXSwgWzEwNC45MDg0NiwgLTY2LjMyNzUyN10sIFsxMDYuMTgxNTYxLCAtNjYuOTM0OTMxXSwgWzEwNy4xNjA4ODEsIC02Ni45NTQ1NjhdLCBbMTA4LjA4MTM5MywgLTY2Ljk1NDU2OF0sIFsxMDkuMTU4NjQsIC02Ni44MzcwMDRdLCBbMTEwLjIzNTgzNSwgLTY2LjY5OTgwNF0sIFsxMTEuMDU4NDcyLCAtNjYuNDI1NTA1XSwgWzExMS43NDM5NiwgLTY2LjEzMTU3XSwgWzExMi44NjAzNzgsIC02Ni4wOTIzNDddLCBbMTEzLjYwNDY3MywgLTY1Ljg3NjgwNV0sIFsxMTQuMzg4MDg4LCAtNjYuMDcyNzYyXSwgWzExNC44OTczMDgsIC02Ni4zODYyODNdLCBbMTE1LjYwMjM4MSwgLTY2LjY5OTgwNF0sIFsxMTYuNjk5MTYxLCAtNjYuNjYwNjMzXSwgWzExNy4zODQ3MDEsIC02Ni45MTUzNDZdLCBbMTE4LjU3OTQ2LCAtNjcuMTcwMTExXSwgWzExOS44MzI5MjQsIC02Ny4yNjgwODldLCBbMTIwLjg3MSwgLTY3LjE4OTY5Nl0sIFsxMjEuNjU0NDE1LCAtNjYuODc2MTc1XSwgWzEyMi4zMjAzNjksIC02Ni41NjI2NTRdLCBbMTIzLjIyMTI5NiwgLTY2LjQ4NDI2MV0sIFsxMjQuMTIyMjc0LCAtNjYuNjIxNDYyXSwgWzEyNS4xNjAyNDcsIC02Ni43MTkzODldLCBbMTI2LjEwMDM5NiwgLTY2LjU2MjY1NF0sIFsxMjcuMDAxNDI3LCAtNjYuNTYyNjU0XSwgWzEyNy44ODI3NjgsIC02Ni42NjA2MzNdLCBbMTI4LjgwMzI4LCAtNjYuNzU4NjExXSwgWzEyOS43MDQyNTksIC02Ni41ODIyNF0sIFsxMzAuNzgxNDU0LCAtNjYuNDI1NTA1XSwgWzEzMS43OTk5NDUsIC02Ni4zODYyODNdLCBbMTMyLjkzNTg5NiwgLTY2LjM4NjI4M10sIFsxMzMuODU2NDYsIC02Ni4yODgzMDRdLCBbMTM0Ljc1NzM4NywgLTY2LjIwOTk2M10sIFsxMzUuMDMxNTgyLCAtNjUuNzIwMDddLCBbMTM1LjA3MDc1MywgLTY1LjMwODU3MV0sIFsxMzUuNjk3NDg1LCAtNjUuNTgyODY5XSwgWzEzNS44NzM4MDUsIC02Ni4wMzM1OTFdLCBbMTM2LjIwNjcwNSwgLTY2LjQ0NTA5XSwgWzEzNi42MTgwNDksIC02Ni43NzgxOTddLCBbMTM3LjQ2MDI3MSwgLTY2Ljk1NDU2OF0sIFsxMzguNTk2MjIzLCAtNjYuODk1NzYxXSwgWzEzOS45MDg0NDIsIC02Ni44NzYxNzVdLCBbMTQwLjgwOTQyMSwgLTY2LjgxNzM2N10sIFsxNDIuMTIxNjkyLCAtNjYuODE3MzY3XSwgWzE0My4wNjE4NDIsIC02Ni43OTc3ODJdLCBbMTQ0LjM3NDA2MSwgLTY2LjgzNzAwNF0sIFsxNDUuNDkwNDI3LCAtNjYuOTE1MzQ2XSwgWzE0Ni4xOTU1NTIsIC02Ny4yMjg4NjddLCBbMTQ1Ljk5OTY5OSwgLTY3LjYwMTE5Nl0sIFsxNDYuNjQ2MDY3LCAtNjcuODk1MTMxXSwgWzE0Ny43MjMyNjMsIC02OC4xMzAyNTldLCBbMTQ4LjgzOTYyOSwgLTY4LjM4NTAyNF0sIFsxNTAuMTMyMzE0LCAtNjguNTYxMjkyXSwgWzE1MS40ODM3MDUsIC02OC43MTgxM10sIFsxNTIuNTAyMjQ3LCAtNjguODc0ODEzXSwgWzE1My42MzgxOTksIC02OC44OTQ1MDJdLCBbMTU0LjI4NDU2NywgLTY4LjU2MTI5Ml0sIFsxNTUuMTY1ODU3LCAtNjguODM1NjQyXSwgWzE1NS45Mjk3OSwgLTY5LjE0OTIxNV0sIFsxNTYuODExMTMyLCAtNjkuMzg0MjkxXSwgWzE1OC4wMjU1MjgsIC02OS40ODIyNjldLCBbMTU5LjE4MTAxMywgLTY5LjU5OTgzM10sIFsxNTkuNjcwNjk5LCAtNjkuOTkxNzQ3XSwgWzE2MC44MDY2NSwgLTcwLjIyNjg3NV0sIFsxNjEuNTcwNDc5LCAtNzAuNTc5NjE4XSwgWzE2Mi42ODY4OTcsIC03MC43MzYzNTNdLCBbMTYzLjg0MjQzNCwgLTcwLjcxNjc2OF0sIFsxNjQuOTE5NjgxLCAtNzAuNzc1NTI0XSwgWzE2Ni4xMTQ0NCwgLTcwLjc1NTkzOF0sIFsxNjcuMzA5MDk1LCAtNzAuODM0MzMyXSwgWzE2OC40MjU2MTYsIC03MC45NzE0ODFdLCBbMTY5LjQ2MzU4OSwgLTcxLjIwNjY2XSwgWzE3MC41MDE2NjUsIC03MS40MDI2MTddLCBbMTcxLjIwNjc5LCAtNzEuNjk2NTAxXSwgWzE3MS4wODkyMjcsIC03Mi4wODg0MTVdLCBbMTcwLjU2MDQyMiwgLTcyLjQ0MTE1OV0sIFsxNzAuMTA5OTU4LCAtNzIuODkxODI5XSwgWzE2OS43NTczNywgLTczLjI0NDUyXSwgWzE2OS4yODczMjEsIC03My42NTYwMl0sIFsxNjcuOTc1MTAxLCAtNzMuODEyODA2XSwgWzE2Ny4zODc0ODksIC03NC4xNjU0OThdLCBbMTY2LjA5NDgwMywgLTc0LjM4MTA0XSwgWzE2NS42NDQzOTEsIC03NC43NzI5NTRdLCBbMTY0Ljk1ODg1MSwgLTc1LjE0NTI4M10sIFsxNjQuMjM0MTkzLCAtNzUuNDU4ODA0XSwgWzE2My44MjI3OTcsIC03NS44NzAzMDNdLCBbMTYzLjU2ODIzOSwgLTc2LjI0MjU4XSwgWzE2My40NzAyNiwgLTc2LjY5MzMwMl0sIFsxNjMuNDg5ODk3LCAtNzcuMDY1NTc5XSwgWzE2NC4wNTc4NzMsIC03Ny40NTc0NDJdLCBbMTY0LjI3MzM2MywgLTc3LjgyOTc3XSwgWzE2NC43NDM0NjQsIC03OC4xODI1MTRdLCBbMTY2LjYwNDEyNiwgLTc4LjMxOTYxMV0sIFsxNjYuOTk1NzgxLCAtNzguNzUwNzQ4XSwgWzE2NS4xOTM4NzYsIC03OC45MDc0ODNdLCBbMTYzLjY2NjIxNywgLTc5LjEyMzAyNV0sIFsxNjEuNzY2Mzg1LCAtNzkuMTYyMjQ4XSwgWzE2MC45MjQxNjIsIC03OS43MzA0ODJdLCBbMTYwLjc0Nzg5NCwgLTgwLjIwMDczN10sIFsxNjAuMzE2OTY0LCAtODAuNTczMDY2XSwgWzE1OS43ODgyMTEsIC04MC45NDUzOTVdLCBbMTYxLjEyMDAxNiwgLTgxLjI3ODUwMV0sIFsxNjEuNjI5Mjg3LCAtODEuNjkwMDAxXSwgWzE2Mi40OTA5OTIsIC04Mi4wNjIyNzhdLCBbMTYzLjcwNTMzNiwgLTgyLjM5NTQzNV0sIFsxNjUuMDk1OTQ5LCAtODIuNzA4OTU2XSwgWzE2Ni42MDQxMjYsIC04My4wMjI0NzddLCBbMTY4Ljg5NTY2NSwgLTgzLjMzNTk5OF0sIFsxNjkuNDA0NzgyLCAtODMuODI1ODkxXSwgWzE3Mi4yODM5MzQsIC04NC4wNDE0MzNdLCBbMTcyLjQ3NzA0OSwgLTg0LjExNzkxNF0sIFsxNzMuMjI0MDgzLCAtODQuNDEzNzFdLCBbMTc1Ljk4NTY3MiwgLTg0LjE1ODk5N10sIFsxNzguMjc3MjEyLCAtODQuNDcyNTE4XSwgWzE4MCwgLTg0LjcxMzM4XSwgWy0xNzkuOTQyNDk5LCAtODQuNzIxNDQzXSwgWy0xNzkuMDU4Njc3LCAtODQuMTM5NDEyXSwgWy0xNzcuMjU2NzcyLCAtODQuNDUyOTMzXSwgWy0xNzcuMTQwODA3LCAtODQuNDE3OTQxXSwgWy0xNzYuMDg0NjczLCAtODQuMDk5MjU5XSwgWy0xNzUuOTQ3MjM1LCAtODQuMTEwNDQ5XSwgWy0xNzUuODI5ODgyLCAtODQuMTE3OTE0XSwgWy0xNzQuMzgyNTAzLCAtODQuNTM0MzIzXSwgWy0xNzMuMTE2NTU5LCAtODQuMTE3OTE0XSwgWy0xNzIuODg5MTA2LCAtODQuMDYxMDE5XSwgWy0xNjkuOTUxMjIzLCAtODMuODg0NjQ3XSwgWy0xNjguOTk5OTg5LCAtODQuMTE3OTE0XSwgWy0xNjguNTMwMTk5LCAtODQuMjM3MzldLCBbLTE2Ny4wMjIwOTksIC04NC41NzA0OTddLCBbLTE2NC4xODIxNDQsIC04NC44MjUyMV0sIFstMTYxLjkyOTc3NSwgLTg1LjEzODczMV0sIFstMTU4LjA3MTM4LCAtODUuMzczOTFdLCBbLTE1NS4xOTIyNTMsIC04NS4wOTk1Nl0sIFstMTUwLjk0MjA5OSwgLTg1LjI5NTUxN10sIFstMTQ4LjUzMzA3MywgLTg1LjYwOTAzOF0sIFstMTQ1Ljg4ODkxOCwgLTg1LjMxNTEwMl0sIFstMTQzLjEwNzcxOCwgLTg1LjA0MDc1Ml0sIFstMTQyLjg5MjI3OSwgLTg0LjU3MDQ5N10sIFstMTQ2LjgyOTA2OCwgLTg0LjUzMTI3NF0sIFstMTUwLjA2MDczMiwgLTg0LjI5NjE0Nl0sIFstMTUwLjkwMjkyOCwgLTgzLjkwNDIzMl0sIFstMTUzLjU4NjIwMSwgLTgzLjY4ODY5XSwgWy0xNTMuNDA5OTA3LCAtODMuMjM4MDJdLCBbLTE1My4wMzc3NTksIC04Mi44MjY1Ml0sIFstMTUyLjY2NTYzNywgLTgyLjQ1NDE5Ml0sIFstMTUyLjg2MTUxNywgLTgyLjA0MjY5Ml0sIFstMTU0LjUyNjI5OSwgLTgxLjc2ODM5NF0sIFstMTU1LjI5MDE4LCAtODEuNDE1NjVdLCBbLTE1Ni44Mzc0NSwgLTgxLjEwMjEyOV0sIFstMTU0LjQwODc4NywgLTgxLjE2MDkzN10sIFstMTUyLjA5NzY2MiwgLTgxLjAwNDE1MV0sIFstMTUwLjY0ODI5MywgLTgxLjMzNzMwOV0sIFstMTQ4Ljg2NTk5OCwgLTgxLjA0MzM3M10sIFstMTQ3LjIyMDc1LCAtODAuNjcxMDQ1XSwgWy0xNDYuNDE3NzQ5LCAtODAuMzM3OTM4XSwgWy0xNDYuNzcwMjg2LCAtNzkuOTI2NDM5XSwgWy0xNDguMDYyOTQ3LCAtNzkuNjUyMDg5XSwgWy0xNDkuNTMxOTAxLCAtNzkuMzU4MjA1XSwgWy0xNTEuNTg4NDE2LCAtNzkuMjk5Mzk3XSwgWy0xNTMuMzkwMzIyLCAtNzkuMTYyMjQ4XSwgWy0xNTUuMzI5Mzc2LCAtNzkuMDY0MjY5XSwgWy0xNTUuOTc1NjY4LCAtNzguNjkxOTRdLCBbLTE1Ny4yNjgzMDIsIC03OC4zNzg0MTldLCBbLTE1OC4wNTE3NjgsIC03OC4wMjU2NzZdLCBbLTE1OC4zNjUxMzQsIC03Ni44ODkyMDddLCBbLTE1Ny44NzU0NzQsIC03Ni45ODcyMzhdLCBbLTE1Ni45NzQ1NzMsIC03Ny4zMDA3NTldLCBbLTE1NS4zMjkzNzYsIC03Ny4yMDI3MjhdLCBbLTE1My43NDI4MzIsIC03Ny4wNjU1NzldLCBbLTE1Mi45MjAyNDcsIC03Ny40OTY2NjRdLCBbLTE1MS4zMzM3OCwgLTc3LjM5ODczN10sIFstMTUwLjAwMTk1LCAtNzcuMTgzMTQzXSwgWy0xNDguNzQ4NDg2LCAtNzYuOTA4ODQ1XSwgWy0xNDcuNjEyNDgzLCAtNzYuNTc1NzM4XSwgWy0xNDYuMTA0NDA5LCAtNzYuNDc3NzZdLCBbLTE0Ni4xNDM1MjgsIC03Ni4xMDU0MzFdLCBbLTE0Ni40OTYwOTEsIC03NS43MzMxNTRdLCBbLTE0Ni4yMDIzMSwgLTc1LjM4MDQxMV0sIFstMTQ0LjkwOTYyNCwgLTc1LjIwNDAzOV0sIFstMTQ0LjMyMjAzNywgLTc1LjUzNzE5N10sIFstMTQyLjc5NDM1MywgLTc1LjM0MTI0XSwgWy0xNDEuNjM4NzY0LCAtNzUuMDg2NDc1XSwgWy0xNDAuMjA5MDA3LCAtNzUuMDY2ODldLCBbLTEzOC44NTc1OSwgLTc0Ljk2ODkxMV0sIFstMTM3LjUwNjIsIC03NC43MzM3ODNdLCBbLTEzNi40Mjg5MDEsIC03NC41MTgyNDFdLCBbLTEzNS4yMTQ1ODMsIC03NC4zMDI2OTldLCBbLTEzNC40MzExOTQsIC03NC4zNjE0NTVdLCBbLTEzMy43NDU2NTQsIC03NC40Mzk4NDhdLCBbLTEzMi4yNTcxNjgsIC03NC4zMDI2OTldLCBbLTEzMC45MjUzMTEsIC03NC40NzkwMTldLCBbLTEyOS41NTQyODQsIC03NC40NTk0MzNdLCBbLTEyOC4yNDIwMzgsIC03NC4zMjIyODRdLCBbLTEyNi44OTA2MjIsIC03NC40MjAyNjNdLCBbLTEyNS40MDIwODIsIC03NC41MTgyNDFdLCBbLTEyNC4wMTE0OTYsIC03NC40NzkwMTldLCBbLTEyMi41NjIxNTIsIC03NC40OTg2MDRdLCBbLTEyMS4wNzM2MTMsIC03NC41MTgyNDFdLCBbLTExOS43MDI1NiwgLTc0LjQ3OTAxOV0sIFstMTE4LjY4NDE0NSwgLTc0LjE4NTA4M10sIFstMTE3LjQ2OTgwMSwgLTc0LjAyODM0OF0sIFstMTE2LjIxNjMxMiwgLTc0LjI0Mzg5MV0sIFstMTE1LjAyMTU1MiwgLTc0LjA2NzUxOV0sIFstMTEzLjk0NDMzMSwgLTczLjcxNDgyOF0sIFstMTEzLjI5Nzk4OCwgLTc0LjAyODM0OF0sIFstMTEyLjk0NTQ1MiwgLTc0LjM4MTA0XSwgWy0xMTIuMjk5MDgzLCAtNzQuNzE0MTk4XSwgWy0xMTEuMjYxMDU5LCAtNzQuNDIwMjYzXSwgWy0xMTAuMDY2MzI1LCAtNzQuNzkyNTRdLCBbLTEwOC43MTQ5MDksIC03NC45MTAxMDNdLCBbLTEwNy41NTkzNDYsIC03NS4xODQ0NTRdLCBbLTEwNi4xNDkxNDgsIC03NS4xMjU2OThdLCBbLTEwNC44NzYwNzQsIC03NC45NDkzMjZdLCBbLTEwMy4zNjc5NDksIC03NC45ODg0OTddLCBbLTEwMi4wMTY1MDcsIC03NS4xMjU2OThdLCBbLTEwMC42NDU1MzEsIC03NS4zMDIwMThdLCBbLTEwMC4xMTY3LCAtNzQuODcwOTMzXSwgWy0xMDAuNzYzMDQzLCAtNzQuNTM3ODI2XSwgWy0xMDEuMjUyNzAzLCAtNzQuMTg1MDgzXSwgWy0xMDIuNTQ1MzM3LCAtNzQuMTA2NzQyXSwgWy0xMDMuMTEzMzEzLCAtNzMuNzM0NDEzXSwgWy0xMDMuMzI4NzUyLCAtNzMuMzYyMDg0XSwgWy0xMDMuNjgxMjg5LCAtNzIuNjE3NTNdLCBbLTEwMi45MTc0ODUsIC03Mi43NTQ2NzldLCBbLTEwMS42MDUyNCwgLTcyLjgxMzQzNl0sIFstMTAwLjMxMjUyOCwgLTcyLjc1NDY3OV0sIFstOTkuMTM3MzgsIC03Mi45MTE0MTRdLCBbLTk4LjExODg4OSwgLTczLjIwNTM1XSwgWy05Ny42ODgwMzcsIC03My41NTgwNDFdLCBbLTk2LjMzNjU5NSwgLTczLjYxNjg0OV0sIFstOTUuMDQzOTYxLCAtNzMuNDc5N10sIFstOTMuNjcyOTA3LCAtNzMuMjgzNzQzXSwgWy05Mi40MzkwMDMsIC03My4xNjYxNzldLCBbLTkxLjQyMDU2NCwgLTczLjQwMTMwN10sIFstOTAuMDg4NzMzLCAtNzMuMzIyOTE0XSwgWy04OS4yMjY5NTEsIC03Mi41NTg3MjJdLCBbLTg4LjQyMzk1MSwgLTczLjAwOTM5M10sIFstODcuMjY4MzM3LCAtNzMuMTg1NzY0XSwgWy04Ni4wMTQ4MjIsIC03My4wODc3ODZdLCBbLTg1LjE5MjIzNiwgLTczLjQ3OTddLCBbLTgzLjg3OTk5MSwgLTczLjUxODg3MV0sIFstODIuNjY1NjQ2LCAtNzMuNjM2NDM0XSwgWy04MS40NzA5MTMsIC03My44NTE5NzddLCBbLTgwLjY4NzQ0NywgLTczLjQ3OTddLCBbLTgwLjI5NTc5MSwgLTczLjEyNjk1Nl0sIFstNzkuMjk2ODg2LCAtNzMuNTE4ODcxXSwgWy03Ny45MjU4NTgsIC03My40MjA4OTJdLCBbLTc2LjkwNzM2NywgLTczLjYzNjQzNF0sIFstNzYuMjIxODc5LCAtNzMuOTY5NTQxXSwgWy03NC44OTAwNDksIC03My44NzE2MTRdLCBbLTczLjg1MjAyNCwgLTczLjY1NjAyXSwgWy03Mi44MzM1MzMsIC03My40MDEzMDddLCBbLTcxLjYxOTIxNSwgLTczLjI2NDE1N10sIFstNzAuMjA5MDQyLCAtNzMuMTQ2NTQyXSwgWy02OC45MzU5MTYsIC03My4wMDkzOTNdLCBbLTY3Ljk1NjYyMiwgLTcyLjc5Mzg1XSwgWy02Ny4zNjkwNjEsIC03Mi40ODAzMjldLCBbLTY3LjEzNDAzNiwgLTcyLjA0OTI0NF0sIFstNjcuMjUxNTQ4LCAtNzEuNjM3NzQ1XSwgWy02Ny41NjQ5NCwgLTcxLjI0NTgzMV0sIFstNjcuOTE3NDc3LCAtNzAuODUzOTE3XSwgWy02OC4yMzA4NDMsIC03MC40NjIwNTVdLCBbLTY4LjQ4NTQ1MiwgLTcwLjEwOTMxMV0sIFstNjguNTQ0MjA5LCAtNjkuNzE3Mzk3XSwgWy02OC40NDYyODIsIC02OS4zMjU1MzVdLCBbLTY3Ljk3NjIzMywgLTY4Ljk1MzIwNl0sIFstNjcuNTg0NSwgLTY4LjU0MTcwN10sIFstNjcuNDI3ODQzLCAtNjguMTQ5ODQ0XSwgWy02Ny42MjM2NywgLTY3LjcxODc1OV0sIFstNjcuNzQxMTgzLCAtNjcuMzI2ODQ1XSwgWy02Ny4yNTE1NDgsIC02Ni44NzYxNzVdLCBbLTY2LjcwMzE4NCwgLTY2LjU4MjI0XSwgWy02Ni4wNTY4MTUsIC02Ni4yMDk5NjNdLCBbLTY1LjM3MTMyNywgLTY1Ljg5NjM5XSwgWy02NC41NjgyNzYsIC02NS42MDI1MDZdLCBbLTY0LjE3NjU0MiwgLTY1LjE3MTQyM10sIFstNjMuNjI4MTUyLCAtNjQuODk3MDczXSwgWy02My4wMDEzOTQsIC02NC42NDIzMDhdLCBbLTYyLjA0MTY4NiwgLTY0LjU4MzU1Ml0sIFstNjEuNDE0OTI4LCAtNjQuMjcwMDMxXSwgWy02MC43MDk4NTUsIC02NC4wNzQwNzRdLCBbLTU5Ljg4NzI2OSwgLTYzLjk1NjUxXSwgWy01OS4xNjI1ODUsIC02My43MDE3NDVdLCBbLTU4LjU5NDU1NywgLTYzLjM4ODIyNF0sIFstNTcuODExMTQzLCAtNjMuMjcwNjZdLCBbLTU3LjIyMzU4MiwgLTYzLjUyNTQyNV0sIFstNTcuNTk1NzMsIC02My44NTg1MzJdLCBbLTU4LjYxNDE0MywgLTY0LjE1MjQ2N11dXV0sICJ0eXBlIjogIk11bHRpUG9seWdvbiJ9LCAiaWQiOiAiQVRBIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJBbnRhcmN0aWNhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s2OC45MzUsIC00OC42MjVdLCBbNjkuNTgsIC00OC45NF0sIFs3MC41MjUsIC00OS4wNjVdLCBbNzAuNTYsIC00OS4yNTVdLCBbNzAuMjgsIC00OS43MV0sIFs2OC43NDUsIC00OS43NzVdLCBbNjguNzIsIC00OS4yNDI1XSwgWzY4Ljg2NzUsIC00OC44M10sIFs2OC45MzUsIC00OC42MjVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkFURiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRnJlbmNoIFNvdXRoZXJuIGFuZCBBbnRhcmN0aWMgTGFuZHMiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxNDUuMzk3OTc4LCAtNDAuNzkyNTQ5XSwgWzE0Ni4zNjQxMjEsIC00MS4xMzc2OTVdLCBbMTQ2LjkwODU4NCwgLTQxLjAwMDU0Nl0sIFsxNDcuNjg5MjU5LCAtNDAuODA4MjU4XSwgWzE0OC4yODkwNjgsIC00MC44NzU0MzhdLCBbMTQ4LjM1OTg2NSwgLTQyLjA2MjQ0NV0sIFsxNDguMDE3MzAxLCAtNDIuNDA3MDI0XSwgWzE0Ny45MTQwNTIsIC00My4yMTE1MjJdLCBbMTQ3LjU2NDU2NCwgLTQyLjkzNzY4OV0sIFsxNDYuODcwMzQzLCAtNDMuNjM0NTk3XSwgWzE0Ni42NjMzMjcsIC00My41ODA4NTRdLCBbMTQ2LjA0ODM3OCwgLTQzLjU0OTc0NV0sIFsxNDUuNDMxOTMsIC00Mi42OTM3NzZdLCBbMTQ1LjI5NTA5LCAtNDIuMDMzNjFdLCBbMTQ0LjcxODA3MSwgLTQxLjE2MjU1Ml0sIFsxNDQuNzQzNzU1LCAtNDAuNzAzOTc1XSwgWzE0NS4zOTc5NzgsIC00MC43OTI1NDldXV0sIFtbWzE0My41NjE4MTEsIC0xMy43NjM2NTZdLCBbMTQzLjkyMjA5OSwgLTE0LjU0ODMxMV0sIFsxNDQuNTYzNzE0LCAtMTQuMTcxMTc2XSwgWzE0NC44OTQ5MDgsIC0xNC41OTQ0NThdLCBbMTQ1LjM3NDcyNCwgLTE0Ljk4NDk3Nl0sIFsxNDUuMjcxOTkxLCAtMTUuNDI4MjA1XSwgWzE0NS40ODUyNiwgLTE2LjI4NTY3Ml0sIFsxNDUuNjM3MDMzLCAtMTYuNzg0OTE4XSwgWzE0NS44ODg5MDQsIC0xNi45MDY5MjZdLCBbMTQ2LjE2MDMwOSwgLTE3Ljc2MTY1NV0sIFsxNDYuMDYzNjc0LCAtMTguMjgwMDczXSwgWzE0Ni4zODc0NzgsIC0xOC45NTgyNzRdLCBbMTQ3LjQ3MTA4MiwgLTE5LjQ4MDcyM10sIFsxNDguMTc3NjAyLCAtMTkuOTU1OTM5XSwgWzE0OC44NDg0MTQsIC0yMC4zOTEyMV0sIFsxNDguNzE3NDY1LCAtMjAuNjMzNDY5XSwgWzE0OS4yODk0MiwgLTIxLjI2MDUxMV0sIFsxNDkuNjc4MzM3LCAtMjIuMzQyNTEyXSwgWzE1MC4wNzczODIsIC0yMi4xMjI3ODRdLCBbMTUwLjQ4MjkzOSwgLTIyLjU1NjE0Ml0sIFsxNTAuNzI3MjY1LCAtMjIuNDAyNDA1XSwgWzE1MC44OTk1NTQsIC0yMy40NjIyMzddLCBbMTUxLjYwOTE3NSwgLTI0LjA3NjI1Nl0sIFsxNTIuMDczNTQsIC0yNC40NTc4ODddLCBbMTUyLjg1NTE5NywgLTI1LjI2NzUwMV0sIFsxNTMuMTM2MTYyLCAtMjYuMDcxMTczXSwgWzE1My4xNjE5NDksIC0yNi42NDEzMTldLCBbMTUzLjA5MjkwOSwgLTI3LjI2MDNdLCBbMTUzLjU2OTQ2OSwgLTI4LjExMDA2N10sIFsxNTMuNTEyMTA4LCAtMjguOTk1MDc3XSwgWzE1My4zMzkwOTUsIC0yOS40NTgyMDJdLCBbMTUzLjA2OTI0MSwgLTMwLjM1MDI0XSwgWzE1My4wODk2MDIsIC0zMC45MjM2NDJdLCBbMTUyLjg5MTU3OCwgLTMxLjY0MDQ0Nl0sIFsxNTIuNDUwMDAyLCAtMzIuNTUwMDAzXSwgWzE1MS43MDkxMTcsIC0zMy4wNDEzNDJdLCBbMTUxLjM0Mzk3MiwgLTMzLjgxNjAyM10sIFsxNTEuMDEwNTU1LCAtMzQuMzEwMzZdLCBbMTUwLjcxNDEzOSwgLTM1LjE3MzQ2XSwgWzE1MC4zMjgyMiwgLTM1LjY3MTg3OV0sIFsxNTAuMDc1MjEyLCAtMzYuNDIwMjA2XSwgWzE0OS45NDYxMjQsIC0zNy4xMDkwNTJdLCBbMTQ5Ljk5NzI4NCwgLTM3LjQyNTI2MV0sIFsxNDkuNDIzODgyLCAtMzcuNzcyNjgxXSwgWzE0OC4zMDQ2MjIsIC0zNy44MDkwNjFdLCBbMTQ3LjM4MTczMywgLTM4LjIxOTIxN10sIFsxNDYuOTIyMTIzLCAtMzguNjA2NTMyXSwgWzE0Ni4zMTc5MjIsIC0zOS4wMzU3NTddLCBbMTQ1LjQ4OTY1MiwgLTM4LjU5Mzc2OF0sIFsxNDQuODc2OTc2LCAtMzguNDE3NDQ4XSwgWzE0NS4wMzIyMTIsIC0zNy44OTYxODhdLCBbMTQ0LjQ4NTY4MiwgLTM4LjA4NTMyNF0sIFsxNDMuNjA5OTc0LCAtMzguODA5NDY1XSwgWzE0Mi43NDU0MjcsIC0zOC41MzgyNjhdLCBbMTQyLjE3ODMzLCAtMzguMzgwMDM0XSwgWzE0MS42MDY1ODIsIC0zOC4zMDg1MTRdLCBbMTQwLjYzODU3OSwgLTM4LjAxOTMzM10sIFsxMzkuOTkyMTU4LCAtMzcuNDAyOTM2XSwgWzEzOS44MDY1ODgsIC0zNi42NDM2MDNdLCBbMTM5LjU3NDE0OCwgLTM2LjEzODM2Ml0sIFsxMzkuMDgyODA4LCAtMzUuNzMyNzU0XSwgWzEzOC4xMjA3NDgsIC0zNS42MTIyOTZdLCBbMTM4LjQ0OTQ2MiwgLTM1LjEyNzI2MV0sIFsxMzguMjA3NTY0LCAtMzQuMzg0NzIzXSwgWzEzNy43MTkxNywgLTM1LjA3NjgyNV0sIFsxMzYuODI5NDA2LCAtMzUuMjYwNTM1XSwgWzEzNy4zNTIzNzEsIC0zNC43MDczMzldLCBbMTM3LjUwMzg4NiwgLTM0LjEzMDI2OF0sIFsxMzcuODkwMTE2LCAtMzMuNjQwNDc5XSwgWzEzNy44MTAzMjgsIC0zMi45MDAwMDddLCBbMTM2Ljk5NjgzNywgLTMzLjc1Mjc3MV0sIFsxMzYuMzcyMDY5LCAtMzQuMDk0NzY2XSwgWzEzNS45ODkwNDMsIC0zNC44OTAxMThdLCBbMTM1LjIwODIxMywgLTM0LjQ3ODY3XSwgWzEzNS4yMzkyMTgsIC0zMy45NDc5NTNdLCBbMTM0LjYxMzQxNywgLTMzLjIyMjc3OF0sIFsxMzQuMDg1OTA0LCAtMzIuODQ4MDcyXSwgWzEzNC4yNzM5MDMsIC0zMi42MTcyMzRdLCBbMTMyLjk5MDc3NywgLTMyLjAxMTIyNF0sIFsxMzIuMjg4MDgxLCAtMzEuOTgyNjQ3XSwgWzEzMS4zMjYzMzEsIC0zMS40OTU4MDNdLCBbMTI5LjUzNTc5NCwgLTMxLjU5MDQyM10sIFsxMjguMjQwOTM4LCAtMzEuOTQ4NDg5XSwgWzEyNy4xMDI4NjcsIC0zMi4yODIyNjddLCBbMTI2LjE0ODcxNCwgLTMyLjIxNTk2Nl0sIFsxMjUuMDg4NjIzLCAtMzIuNzI4NzUxXSwgWzEyNC4yMjE2NDgsIC0zMi45NTk0ODddLCBbMTI0LjAyODk0NywgLTMzLjQ4Mzg0N10sIFsxMjMuNjU5NjY3LCAtMzMuODkwMTc5XSwgWzEyMi44MTEwMzYsIC0zMy45MTQ0NjddLCBbMTIyLjE4MzA2NCwgLTM0LjAwMzQwMl0sIFsxMjEuMjk5MTkxLCAtMzMuODIxMDM2XSwgWzEyMC41ODAyNjgsIC0zMy45MzAxNzddLCBbMTE5Ljg5MzY5NSwgLTMzLjk3NjA2NV0sIFsxMTkuMjk4ODk5LCAtMzQuNTA5MzY2XSwgWzExOS4wMDczNDEsIC0zNC40NjQxNDldLCBbMTE4LjUwNTcxOCwgLTM0Ljc0NjgxOV0sIFsxMTguMDI0OTcyLCAtMzUuMDY0NzMzXSwgWzExNy4yOTU1MDcsIC0zNS4wMjU0NTldLCBbMTE2LjYyNTEwOSwgLTM1LjAyNTA5N10sIFsxMTUuNTY0MzQ3LCAtMzQuMzg2NDI4XSwgWzExNS4wMjY4MDksIC0zNC4xOTY1MTddLCBbMTE1LjA0ODYxNiwgLTMzLjYyMzQyNV0sIFsxMTUuNTQ1MTIzLCAtMzMuNDg3MjU4XSwgWzExNS43MTQ2NzQsIC0zMy4yNTk1NzJdLCBbMTE1LjY3OTM3OSwgLTMyLjkwMDM2OV0sIFsxMTUuODAxNjQ1LCAtMzIuMjA1MDYyXSwgWzExNS42ODk2MTEsIC0zMS42MTI0MzddLCBbMTE1LjE2MDkwOSwgLTMwLjYwMTU5NF0sIFsxMTQuOTk3MDQzLCAtMzAuMDMwNzI1XSwgWzExNS4wNDAwMzgsIC0yOS40NjEwOTVdLCBbMTE0LjY0MTk3NCwgLTI4LjgxMDIzMV0sIFsxMTQuNjE2NDk4LCAtMjguNTE2Mzk5XSwgWzExNC4xNzM1NzksIC0yOC4xMTgwNzddLCBbMTE0LjA0ODg4NCwgLTI3LjMzNDc2NV0sIFsxMTMuNDc3NDk4LCAtMjYuNTQzMTM0XSwgWzExMy4zMzg5NTMsIC0yNi4xMTY1NDVdLCBbMTEzLjc3ODM1OCwgLTI2LjU0OTAyNV0sIFsxMTMuNDQwOTYyLCAtMjUuNjIxMjc4XSwgWzExMy45MzY5MDEsIC0yNS45MTEyMzVdLCBbMTE0LjIzMjg1MiwgLTI2LjI5ODQ0Nl0sIFsxMTQuMjE2MTYxLCAtMjUuNzg2MjgxXSwgWzExMy43MjEyNTUsIC0yNC45OTg5MzldLCBbMTEzLjYyNTM0NCwgLTI0LjY4Mzk3MV0sIFsxMTMuMzkzNTIzLCAtMjQuMzg0NzY0XSwgWzExMy41MDIwNDQsIC0yMy44MDYzNV0sIFsxMTMuNzA2OTkzLCAtMjMuNTYwMjE1XSwgWzExMy44NDM0MTgsIC0yMy4wNTk5ODddLCBbMTEzLjczNjU1MiwgLTIyLjQ3NTQ3NV0sIFsxMTQuMTQ5NzU2LCAtMjEuNzU1ODgxXSwgWzExNC4yMjUzMDcsIC0yMi41MTc0ODhdLCBbMTE0LjY0Nzc2MiwgLTIxLjgyOTUyXSwgWzExNS40NjAxNjcsIC0yMS40OTUxNzNdLCBbMTE1Ljk0NzM3MywgLTIxLjA2ODY4OF0sIFsxMTYuNzExNjE1LCAtMjAuNzAxNjgyXSwgWzExNy4xNjYzMTYsIC0yMC42MjM1OTldLCBbMTE3LjQ0MTU0NSwgLTIwLjc0Njg5OV0sIFsxMTguMjI5NTU5LCAtMjAuMzc0MjA4XSwgWzExOC44MzYwODUsIC0yMC4yNjMzMTFdLCBbMTE4Ljk4NzgwNywgLTIwLjA0NDIwM10sIFsxMTkuMjUyNDk0LCAtMTkuOTUyOTQyXSwgWzExOS44MDUyMjUsIC0xOS45NzY1MDZdLCBbMTIwLjg1NjIyLCAtMTkuNjgzNzA4XSwgWzEyMS4zOTk4NTYsIC0xOS4yMzk3NTZdLCBbMTIxLjY1NTEzOCwgLTE4LjcwNTMxOF0sIFsxMjIuMjQxNjY1LCAtMTguMTk3NjQ5XSwgWzEyMi4yODY2MjQsIC0xNy43OTg2MDNdLCBbMTIyLjMxMjc3MiwgLTE3LjI1NDk2N10sIFsxMjMuMDEyNTc0LCAtMTYuNDA1Ml0sIFsxMjMuNDMzNzg5LCAtMTcuMjY4NTU4XSwgWzEyMy44NTkzNDUsIC0xNy4wNjkwMzVdLCBbMTIzLjUwMzI0MiwgLTE2LjU5NjUwNl0sIFsxMjMuODE3MDczLCAtMTYuMTExMzE2XSwgWzEyNC4yNTgyODcsIC0xNi4zMjc5NDRdLCBbMTI0LjM3OTcyNiwgLTE1LjU2NzA2XSwgWzEyNC45MjYxNTMsIC0xNS4wNzUxXSwgWzEyNS4xNjcyNzUsIC0xNC42ODAzOTZdLCBbMTI1LjY3MDA4NywgLTE0LjUxMDA3XSwgWzEyNS42ODU3OTYsIC0xNC4yMzA2NTZdLCBbMTI2LjEyNTE0OSwgLTE0LjM0NzM0MV0sIFsxMjYuMTQyODIzLCAtMTQuMDk1OTg3XSwgWzEyNi41ODI1ODksIC0xMy45NTI3OTFdLCBbMTI3LjA2NTg2NywgLTEzLjgxNzk2OF0sIFsxMjcuODA0NjMzLCAtMTQuMjc2OTA2XSwgWzEyOC4zNTk2OSwgLTE0Ljg2OTE3XSwgWzEyOC45ODU1NDMsIC0xNC44NzU5OTFdLCBbMTI5LjYyMTQ3MywgLTE0Ljk2OTc4NF0sIFsxMjkuNDA5NiwgLTE0LjQyMDY3XSwgWzEyOS44ODg2NDEsIC0xMy42MTg3MDNdLCBbMTMwLjMzOTQ2NiwgLTEzLjM1NzM3Nl0sIFsxMzAuMTgzNTA2LCAtMTMuMTA3NTJdLCBbMTMwLjYxNzc5NSwgLTEyLjUzNjM5Ml0sIFsxMzEuMjIzNDk1LCAtMTIuMTgzNjQ5XSwgWzEzMS43MzUwOTEsIC0xMi4zMDI0NTNdLCBbMTMyLjU3NTI5OCwgLTEyLjExNDA0MV0sIFsxMzIuNTU3MjEyLCAtMTEuNjAzMDEyXSwgWzEzMS44MjQ2OTgsIC0xMS4yNzM3ODJdLCBbMTMyLjM1NzIyNCwgLTExLjEyODUxOV0sIFsxMzMuMDE5NTYxLCAtMTEuMzc2NDExXSwgWzEzMy41NTA4NDYsIC0xMS43ODY1MTVdLCBbMTM0LjM5MzA2OCwgLTEyLjA0MjM2NV0sIFsxMzQuNjc4NjMyLCAtMTEuOTQxMTgzXSwgWzEzNS4yOTg0OTEsIC0xMi4yNDg2MDZdLCBbMTM1Ljg4MjY5MywgLTExLjk2MjI2N10sIFsxMzYuMjU4MzgxLCAtMTIuMDQ5MzQyXSwgWzEzNi40OTI0NzUsIC0xMS44NTcyMDldLCBbMTM2Ljk1MTYyLCAtMTIuMzUxOTU5XSwgWzEzNi42ODUxMjUsIC0xMi44ODcyMjNdLCBbMTM2LjMwNTQwNywgLTEzLjI5MTIzXSwgWzEzNS45NjE3NTgsIC0xMy4zMjQ1MDldLCBbMTM2LjA3NzYxNywgLTEzLjcyNDI3OF0sIFsxMzUuNzgzODM2LCAtMTQuMjIzOTg5XSwgWzEzNS40Mjg2NjQsIC0xNC43MTU0MzJdLCBbMTM1LjUwMDE4NCwgLTE0Ljk5Nzc0MV0sIFsxMzYuMjk1MTc1LCAtMTUuNTUwMjY1XSwgWzEzNy4wNjUzNiwgLTE1Ljg3MDc2Ml0sIFsxMzcuNTgwNDcxLCAtMTYuMjE1MDgyXSwgWzEzOC4zMDMyMTcsIC0xNi44MDc2MDRdLCBbMTM4LjU4NTE2NCwgLTE2LjgwNjYyMl0sIFsxMzkuMTA4NTQzLCAtMTcuMDYyNjc5XSwgWzEzOS4yNjA1NzUsIC0xNy4zNzE2MDFdLCBbMTQwLjIxNTI0NSwgLTE3LjcxMDgwNV0sIFsxNDAuODc1NDYzLCAtMTcuMzY5MDY5XSwgWzE0MS4wNzExMSwgLTE2LjgzMjA0N10sIFsxNDEuMjc0MDk1LCAtMTYuMzg4ODddLCBbMTQxLjM5ODIyMiwgLTE1Ljg0MDUzMl0sIFsxNDEuNzAyMTgzLCAtMTUuMDQ0OTIxXSwgWzE0MS41NjMzOCwgLTE0LjU2MTMzM10sIFsxNDEuNjM1NTIsIC0xNC4yNzAzOTVdLCBbMTQxLjUxOTg2OSwgLTEzLjY5ODA3OF0sIFsxNDEuNjUwOTIsIC0xMi45NDQ2ODhdLCBbMTQxLjg0MjY5MSwgLTEyLjc0MTU0OF0sIFsxNDEuNjg2OTksIC0xMi40MDc2MTRdLCBbMTQxLjkyODYyOSwgLTExLjg3NzQ2Nl0sIFsxNDIuMTE4NDg4LCAtMTEuMzI4MDQyXSwgWzE0Mi4xNDM3MDYsIC0xMS4wNDI3MzddLCBbMTQyLjUxNTI2LCAtMTAuNjY4MTg2XSwgWzE0Mi43OTczMSwgLTExLjE1NzM1NV0sIFsxNDIuODY2NzYzLCAtMTEuNzg0NzA3XSwgWzE0My4xMTU5NDcsIC0xMS45MDU2M10sIFsxNDMuMTU4NjMyLCAtMTIuMzI1NjU2XSwgWzE0My41MjIxMjQsIC0xMi44MzQzNThdLCBbMTQzLjU5NzE1OCwgLTEzLjQwMDQyMl0sIFsxNDMuNTYxODExLCAtMTMuNzYzNjU2XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJBVVMiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkF1c3RyYWxpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTYuOTc5NjY3LCA0OC4xMjM0OTddLCBbMTYuOTAzNzU0LCA0Ny43MTQ4NjZdLCBbMTYuMzQwNTg0LCA0Ny43MTI5MDJdLCBbMTYuNTM0MjY4LCA0Ny40OTYxNzFdLCBbMTYuMjAyMjk4LCA0Ni44NTIzODZdLCBbMTYuMDExNjY0LCA0Ni42ODM2MTFdLCBbMTUuMTM3MDkyLCA0Ni42NTg3MDNdLCBbMTQuNjMyNDcyLCA0Ni40MzE4MTddLCBbMTMuODA2NDc1LCA0Ni41MDkzMDZdLCBbMTIuMzc2NDg1LCA0Ni43Njc1NTldLCBbMTIuMTUzMDg4LCA0Ny4xMTUzOTNdLCBbMTEuMTY0ODI4LCA0Ni45NDE1NzldLCBbMTEuMDQ4NTU2LCA0Ni43NTEzNTldLCBbMTAuNDQyNzAxLCA0Ni44OTM1NDZdLCBbOS45MzI0NDgsIDQ2LjkyMDcyOF0sIFs5LjQ3OTk3LCA0Ny4xMDI4MV0sIFs5LjYzMjkzMiwgNDcuMzQ3NjAxXSwgWzkuNTk0MjI2LCA0Ny41MjUwNThdLCBbOS44OTYwNjgsIDQ3LjU4MDE5N10sIFsxMC40MDIwODQsIDQ3LjMwMjQ4OF0sIFsxMC41NDQ1MDQsIDQ3LjU2NjM5OV0sIFsxMS40MjY0MTQsIDQ3LjUyMzc2Nl0sIFsxMi4xNDEzNTcsIDQ3LjcwMzA4M10sIFsxMi42MjA3NiwgNDcuNjcyMzg4XSwgWzEyLjkzMjYyNywgNDcuNDY3NjQ2XSwgWzEzLjAyNTg1MSwgNDcuNjM3NTg0XSwgWzEyLjg4NDEwMywgNDguMjg5MTQ2XSwgWzEzLjI0MzM1NywgNDguNDE2MTE1XSwgWzEzLjU5NTk0NiwgNDguODc3MTcyXSwgWzE0LjMzODg5OCwgNDguNTU1MzA1XSwgWzE0LjkwMTQ0NywgNDguOTY0NDAyXSwgWzE1LjI1MzQxNiwgNDkuMDM5MDc0XSwgWzE2LjAyOTY0NywgNDguNzMzODk5XSwgWzE2LjQ5OTI4MywgNDguNzg1ODA4XSwgWzE2Ljk2MDI4OCwgNDguNTk2OTgyXSwgWzE2Ljg3OTk4MywgNDguNDcwMDEzXSwgWzE2Ljk3OTY2NywgNDguMTIzNDk3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJBVVQiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkF1c3RyaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1s0NS4wMDE5ODcsIDM5Ljc0MDAwNF0sIFs0NS4yOTgxNDUsIDM5LjQ3MTc1MV0sIFs0NS43Mzk5NzgsIDM5LjQ3Mzk5OV0sIFs0NS43MzUzNzksIDM5LjMxOTcxOV0sIFs0Ni4xNDM2MjMsIDM4Ljc0MTIwMV0sIFs0NS40NTc3MjIsIDM4Ljg3NDEzOV0sIFs0NC45NTI2ODgsIDM5LjMzNTc2NV0sIFs0NC43OTM5OSwgMzkuNzEzMDAzXSwgWzQ1LjAwMTk4NywgMzkuNzQwMDA0XV1dLCBbW1s0Ny4zNzMzMTUsIDQxLjIxOTczMl0sIFs0Ny44MTU2NjYsIDQxLjE1MTQxNl0sIFs0Ny45ODcyODMsIDQxLjQwNTgxOV0sIFs0OC41ODQzNTMsIDQxLjgwODg3XSwgWzQ5LjExMDI2NCwgNDEuMjgyMjg3XSwgWzQ5LjYxODkxNSwgNDAuNTcyOTI0XSwgWzUwLjA4NDgzLCA0MC41MjYxNTddLCBbNTAuMzkyODIxLCA0MC4yNTY1NjFdLCBbNDkuNTY5MjAyLCA0MC4xNzYxMDFdLCBbNDkuMzk1MjU5LCAzOS4zOTk0ODJdLCBbNDkuMjIzMjI4LCAzOS4wNDkyMTldLCBbNDguODU2NTMyLCAzOC44MTU0ODZdLCBbNDguODgzMjQ5LCAzOC4zMjAyNDVdLCBbNDguNjM0Mzc1LCAzOC4yNzAzNzhdLCBbNDguMDEwNzQ0LCAzOC43OTQwMTVdLCBbNDguMzU1NTI5LCAzOS4yODg3NjVdLCBbNDguMDYwMDk1LCAzOS41ODIyMzVdLCBbNDcuNjg1MDc5LCAzOS41MDgzNjRdLCBbNDYuNTA1NzIsIDM4Ljc3MDYwNV0sIFs0Ni40ODM0OTksIDM5LjQ2NDE1NV0sIFs0Ni4wMzQ1MzQsIDM5LjYyODAyMV0sIFs0NS42MTAwMTIsIDM5Ljg5OTk5NF0sIFs0NS44OTE5MDcsIDQwLjIxODQ3Nl0sIFs0NS4zNTkxNzUsIDQwLjU2MTUwNF0sIFs0NS41NjAzNTEsIDQwLjgxMjI5XSwgWzQ1LjE3OTQ5NiwgNDAuOTg1MzU0XSwgWzQ0Ljk3MjQ4LCA0MS4yNDgxMjldLCBbNDUuMjE3NDI2LCA0MS40MTE0NTJdLCBbNDUuOTYyNjAxLCA0MS4xMjM4NzNdLCBbNDYuNTAxNjM3LCA0MS4wNjQ0NDVdLCBbNDYuNjM3OTA4LCA0MS4xODE2NzNdLCBbNDYuMTQ1NDMyLCA0MS43MjI4MDJdLCBbNDYuNDA0OTUxLCA0MS44NjA2NzVdLCBbNDYuNjg2MDcxLCA0MS44MjcxMzddLCBbNDcuMzczMzE1LCA0MS4yMTk3MzJdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkFaRSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQXplcmJhaWphbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMjkuMzM5OTk4LCAtNC40OTk5ODNdLCBbMjkuMjc2Mzg0LCAtMy4yOTM5MDddLCBbMjkuMDI0OTI2LCAtMi44MzkyNThdLCBbMjkuNjMyMTc2LCAtMi45MTc4NThdLCBbMjkuOTM4MzU5LCAtMi4zNDg0ODddLCBbMzAuNDY5Njk2LCAtMi40MTM4NThdLCBbMzAuNTI3Njc3LCAtMi44MDc2MzJdLCBbMzAuNzQzMDEzLCAtMy4wMzQyODVdLCBbMzAuNzUyMjYzLCAtMy4zNTkzM10sIFszMC41MDU1NiwgLTMuNTY4NTY3XSwgWzMwLjExNjMzMywgLTQuMDkwMTM4XSwgWzI5Ljc1MzUxMiwgLTQuNDUyMzg5XSwgWzI5LjMzOTk5OCwgLTQuNDk5OTgzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCREkiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJ1cnVuZGkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzMuMzE0OTcxLCA1MS4zNDU3ODFdLCBbNC4wNDcwNzEsIDUxLjI2NzI1OV0sIFs0Ljk3Mzk5MSwgNTEuNDc1MDI0XSwgWzUuNjA2OTc2LCA1MS4wMzcyOThdLCBbNi4xNTY2NTgsIDUwLjgwMzcyMV0sIFs2LjA0MzA3MywgNTAuMTI4MDUyXSwgWzUuNzgyNDE3LCA1MC4wOTAzMjhdLCBbNS42NzQwNTIsIDQ5LjUyOTQ4NF0sIFs0Ljc5OTIyMiwgNDkuOTg1MzczXSwgWzQuMjg2MDIzLCA0OS45MDc0OTddLCBbMy41ODgxODQsIDUwLjM3ODk5Ml0sIFszLjEyMzI1MiwgNTAuNzgwMzYzXSwgWzIuNjU4NDIyLCA1MC43OTY4NDhdLCBbMi41MTM1NzMsIDUxLjE0ODUwNl0sIFszLjMxNDk3MSwgNTEuMzQ1NzgxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCRUwiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJlbGdpdW0iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzIuNjkxNzAyLCA2LjI1ODgxN10sIFsxLjg2NTI0MSwgNi4xNDIxNThdLCBbMS42MTg5NTEsIDYuODMyMDM4XSwgWzEuNjY0NDc4LCA5LjEyODU5XSwgWzEuNDYzMDQzLCA5LjMzNDYyNF0sIFsxLjQyNTA2MSwgOS44MjUzOTVdLCBbMS4wNzc3OTUsIDEwLjE3NTYwN10sIFswLjc3MjMzNiwgMTAuNDcwODA4XSwgWzAuODk5NTYzLCAxMC45OTczMzldLCBbMS4yNDM0NywgMTEuMTEwNTExXSwgWzEuNDQ3MTc4LCAxMS41NDc3MTldLCBbMS45MzU5ODYsIDExLjY0MTE1XSwgWzIuMTU0NDc0LCAxMS45NDAxNV0sIFsyLjQ5MDE2NCwgMTIuMjMzMDUyXSwgWzIuODQ4NjQzLCAxMi4yMzU2MzZdLCBbMy42MTExOCwgMTEuNjYwMTY3XSwgWzMuNTcyMjE2LCAxMS4zMjc5MzldLCBbMy43OTcxMTIsIDEwLjczNDc0Nl0sIFszLjYwMDA3LCAxMC4zMzIxODZdLCBbMy43MDU0MzgsIDEwLjA2MzIxXSwgWzMuMjIwMzUyLCA5LjQ0NDE1M10sIFsyLjkxMjMwOCwgOS4xMzc2MDhdLCBbMi43MjM3OTMsIDguNTA2ODQ1XSwgWzIuNzQ5MDYzLCA3Ljg3MDczNF0sIFsyLjY5MTcwMiwgNi4yNTg4MTddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkJFTiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQmVuaW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjgyNzQ5NiwgOS42NDI0NjFdLCBbLTMuNTExODk5LCA5LjkwMDMyNl0sIFstMy45ODA0NDksIDkuODYyMzQ0XSwgWy00LjMzMDI0NywgOS42MTA4MzVdLCBbLTQuNzc5ODg0LCA5LjgyMTk4NV0sIFstNC45NTQ2NTMsIDEwLjE1MjcxNF0sIFstNS40MDQzNDIsIDEwLjM3MDczN10sIFstNS40NzA1NjUsIDEwLjk1MTI3XSwgWy01LjE5Nzg0MywgMTEuMzc1MTQ2XSwgWy01LjIyMDk0MiwgMTEuNzEzODU5XSwgWy00LjQyNzE2NiwgMTIuNTQyNjQ2XSwgWy00LjI4MDQwNSwgMTMuMjI4NDQ0XSwgWy00LjAwNjM5MSwgMTMuNDcyNDg1XSwgWy0zLjUyMjgwMywgMTMuMzM3NjYyXSwgWy0zLjEwMzcwNywgMTMuNTQxMjY3XSwgWy0yLjk2NzY5NCwgMTMuNzk4MTVdLCBbLTIuMTkxODI1LCAxNC4yNDY0MThdLCBbLTIuMDAxMDM1LCAxNC41NTkwMDhdLCBbLTEuMDY2MzYzLCAxNC45NzM4MTVdLCBbLTAuNTE1ODU0LCAxNS4xMTYxNThdLCBbLTAuMjY2MjU3LCAxNC45MjQzMDldLCBbMC4zNzQ4OTIsIDE0LjkyODkwOF0sIFswLjI5NTY0NiwgMTQuNDQ0MjM1XSwgWzAuNDI5OTI4LCAxMy45ODg3MzNdLCBbMC45OTMwNDYsIDEzLjMzNTc1XSwgWzEuMDI0MTAzLCAxMi44NTE4MjZdLCBbMi4xNzcxMDgsIDEyLjYyNTAxOF0sIFsyLjE1NDQ3NCwgMTEuOTQwMTVdLCBbMS45MzU5ODYsIDExLjY0MTE1XSwgWzEuNDQ3MTc4LCAxMS41NDc3MTldLCBbMS4yNDM0NywgMTEuMTEwNTExXSwgWzAuODk5NTYzLCAxMC45OTczMzldLCBbMC4wMjM4MDMsIDExLjAxODY4Ml0sIFstMC40Mzg3MDIsIDExLjA5ODM0MV0sIFstMC43NjE1NzYsIDEwLjkzNjkzXSwgWy0xLjIwMzM1OCwgMTEuMDA5ODE5XSwgWy0yLjk0MDQwOSwgMTAuOTYyNjldLCBbLTIuOTYzODk2LCAxMC4zOTUzMzVdLCBbLTIuODI3NDk2LCA5LjY0MjQ2MV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQkZBIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCdXJraW5hIEZhc28iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzkyLjY3MjcyMSwgMjIuMDQxMjM5XSwgWzkyLjY1MjI1NywgMjEuMzI0MDQ4XSwgWzkyLjMwMzIzNCwgMjEuNDc1NDg1XSwgWzkyLjM2ODU1NCwgMjAuNjcwODgzXSwgWzkyLjA4Mjg4NiwgMjEuMTkyMTk1XSwgWzkyLjAyNTIxNSwgMjEuNzAxNTddLCBbOTEuODM0ODkxLCAyMi4xODI5MzZdLCBbOTEuNDE3MDg3LCAyMi43NjUwMTldLCBbOTAuNDk2MDA2LCAyMi44MDUwMTddLCBbOTAuNTg2OTU3LCAyMi4zOTI3OTRdLCBbOTAuMjcyOTcxLCAyMS44MzYzNjhdLCBbODkuODQ3NDY3LCAyMi4wMzkxNDZdLCBbODkuNzAyMDUsIDIxLjg1NzExNl0sIFs4OS40MTg4NjMsIDIxLjk2NjE3OV0sIFs4OS4wMzE5NjEsIDIyLjA1NTcwOF0sIFs4OC44NzYzMTIsIDIyLjg3OTE0Nl0sIFs4OC41Mjk3NywgMjMuNjMxMTQyXSwgWzg4LjY5OTk0LCAyNC4yMzM3MTVdLCBbODguMDg0NDIyLCAyNC41MDE2NTddLCBbODguMzA2MzczLCAyNC44NjYwNzldLCBbODguOTMxNTU0LCAyNS4yMzg2OTJdLCBbODguMjA5Nzg5LCAyNS43NjgwNjZdLCBbODguNTYzMDQ5LCAyNi40NDY1MjZdLCBbODkuMzU1MDk0LCAyNi4wMTQ0MDddLCBbODkuODMyNDgxLCAyNS45NjUwODJdLCBbODkuOTIwNjkzLCAyNS4yNjk3NV0sIFs5MC44NzIyMTEsIDI1LjEzMjYwMV0sIFs5MS43OTk1OTYsIDI1LjE0NzQzMl0sIFs5Mi4zNzYyMDIsIDI0Ljk3NjY5M10sIFs5MS45MTUwOTMsIDI0LjEzMDQxNF0sIFs5MS40Njc3MywgMjQuMDcyNjM5XSwgWzkxLjE1ODk2MywgMjMuNTAzNTI3XSwgWzkxLjcwNjQ3NSwgMjIuOTg1MjY0XSwgWzkxLjg2OTkyOCwgMjMuNjI0MzQ2XSwgWzkyLjE0NjAzNSwgMjMuNjI3NDk5XSwgWzkyLjY3MjcyMSwgMjIuMDQxMjM5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCR0QiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJhbmdsYWRlc2giLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzIyLjY1NzE1LCA0NC4yMzQ5MjNdLCBbMjIuOTQ0ODMyLCA0My44MjM3ODVdLCBbMjMuMzMyMzAyLCA0My44OTcwMTFdLCBbMjQuMTAwNjc5LCA0My43NDEwNTFdLCBbMjUuNTY5MjcyLCA0My42ODg0NDVdLCBbMjYuMDY1MTU5LCA0My45NDM0OTRdLCBbMjcuMjQyNCwgNDQuMTc1OTg2XSwgWzI3Ljk3MDEwNywgNDMuODEyNDY4XSwgWzI4LjU1ODA4MSwgNDMuNzA3NDYyXSwgWzI4LjAzOTA5NSwgNDMuMjkzMTcyXSwgWzI3LjY3Mzg5OCwgNDIuNTc3ODkyXSwgWzI3Ljk5NjcyLCA0Mi4wMDczNTldLCBbMjcuMTM1NzM5LCA0Mi4xNDE0ODVdLCBbMjYuMTE3MDQyLCA0MS44MjY5MDVdLCBbMjYuMTA2MTM4LCA0MS4zMjg4OTldLCBbMjUuMTk3MjAxLCA0MS4yMzQ0ODZdLCBbMjQuNDkyNjQ1LCA0MS41ODM4OTZdLCBbMjMuNjkyMDc0LCA0MS4zMDkwODFdLCBbMjIuOTUyMzc3LCA0MS4zMzc5OTRdLCBbMjIuODgxMzc0LCA0MS45OTkyOTddLCBbMjIuMzgwNTI2LCA0Mi4zMjAyNl0sIFsyMi41NDUwMTIsIDQyLjQ2MTM2Ml0sIFsyMi40MzY1OTUsIDQyLjU4MDMyMV0sIFsyMi42MDQ4MDEsIDQyLjg5ODUxOV0sIFsyMi45ODYwMTksIDQzLjIxMTE2MV0sIFsyMi41MDAxNTcsIDQzLjY0MjgxNF0sIFsyMi40MTA0NDYsIDQ0LjAwODA2M10sIFsyMi42NTcxNSwgNDQuMjM0OTIzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCR1IiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJ1bGdhcmlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbLTc3LjUzNDY2LCAyMy43NTk3NV0sIFstNzcuNzgsIDIzLjcxXSwgWy03OC4wMzQwNSwgMjQuMjg2MTVdLCBbLTc4LjQwODQ4LCAyNC41NzU2NF0sIFstNzguMTkwODcsIDI1LjIxMDNdLCBbLTc3Ljg5LCAyNS4xN10sIFstNzcuNTQsIDI0LjM0XSwgWy03Ny41MzQ2NiwgMjMuNzU5NzVdXV0sIFtbWy03Ny44MiwgMjYuNThdLCBbLTc4LjkxLCAyNi40Ml0sIFstNzguOTgsIDI2Ljc5XSwgWy03OC41MSwgMjYuODddLCBbLTc3Ljg1LCAyNi44NF0sIFstNzcuODIsIDI2LjU4XV1dLCBbW1stNzcsIDI2LjU5XSwgWy03Ny4xNzI1NSwgMjUuODc5MThdLCBbLTc3LjM1NjQxLCAyNi4wMDczNV0sIFstNzcuMzQsIDI2LjUzXSwgWy03Ny43ODgwMiwgMjYuOTI1MTZdLCBbLTc3Ljc5LCAyNy4wNF0sIFstNzcsIDI2LjU5XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJCSFMiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIlRoZSBCYWhhbWFzIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxOS4wMDU0ODYsIDQ0Ljg2MDIzNF0sIFsxOS4zNjgwMywgNDQuODYzXSwgWzE5LjExNzYxLCA0NC40MjMwN10sIFsxOS41OTk3NiwgNDQuMDM4NDddLCBbMTkuNDU0LCA0My41NjgxXSwgWzE5LjIxODUyLCA0My41MjM4NF0sIFsxOS4wMzE2NSwgNDMuNDMyNTNdLCBbMTguNzA2NDgsIDQzLjIwMDExXSwgWzE4LjU2LCA0Mi42NV0sIFsxNy42NzQ5MjIsIDQzLjAyODU2M10sIFsxNy4yOTczNzMsIDQzLjQ0NjM0MV0sIFsxNi45MTYxNTYsIDQzLjY2NzcyMl0sIFsxNi40NTY0NDMsIDQ0LjA0MTI0XSwgWzE2LjIzOTY2LCA0NC4zNTExNDNdLCBbMTUuNzUwMDI2LCA0NC44MTg3MTJdLCBbMTUuOTU5MzY3LCA0NS4yMzM3NzddLCBbMTYuMzE4MTU3LCA0NS4wMDQxMjddLCBbMTYuNTM0OTM5LCA0NS4yMTE2MDhdLCBbMTcuMDAyMTQ2LCA0NS4yMzM3NzddLCBbMTcuODYxNzgzLCA0NS4wNjc3NF0sIFsxOC41NTMyMTQsIDQ1LjA4MTU5XSwgWzE5LjAwNTQ4NiwgNDQuODYwMjM0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCSUgiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJvc25pYSBhbmQgSGVyemVnb3ZpbmEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzIzLjQ4NDEyOCwgNTMuOTEyNDk4XSwgWzI0LjQ1MDY4NCwgNTMuOTA1NzAyXSwgWzI1LjUzNjM1NCwgNTQuMjgyNDIzXSwgWzI1Ljc2ODQzMywgNTQuODQ2OTYzXSwgWzI2LjU4ODI3OSwgNTUuMTY3MTc2XSwgWzI2LjQ5NDMzMSwgNTUuNjE1MTA3XSwgWzI3LjEwMjQ2LCA1NS43ODMzMTRdLCBbMjguMTc2NzA5LCA1Ni4xNjkxM10sIFsyOS4yMjk1MTMsIDU1LjkxODM0NF0sIFsyOS4zNzE1NzIsIDU1LjY3MDA5MV0sIFsyOS44OTYyOTQsIDU1Ljc4OTQ2M10sIFszMC44NzM5MDksIDU1LjU1MDk3Nl0sIFszMC45NzE4MzYsIDU1LjA4MTU0OF0sIFszMC43NTc1MzQsIDU0LjgxMTc3MV0sIFszMS4zODQ0NzIsIDU0LjE1NzA1Nl0sIFszMS43OTE0MjQsIDUzLjk3NDYzOV0sIFszMS43MzEyNzMsIDUzLjc5NDAyOV0sIFszMi40MDU1OTksIDUzLjYxODA0NV0sIFszMi42OTM2NDMsIDUzLjM1MTQyMV0sIFszMi4zMDQ1MTksIDUzLjEzMjcyNl0sIFszMS40OTc2NDQsIDUzLjE2NzQyN10sIFszMS4zMDUyMDEsIDUzLjA3Mzk5Nl0sIFszMS41NDAwMTgsIDUyLjc0MjA1Ml0sIFszMS43ODU5OTgsIDUyLjEwMTY3OF0sIFszMC45Mjc1NDksIDUyLjA0MjM1M10sIFszMC42MTk0NTQsIDUxLjgyMjgwNl0sIFszMC41NTUxMTcsIDUxLjMxOTUwM10sIFszMC4xNTczNjQsIDUxLjQxNjEzOF0sIFsyOS4yNTQ5MzgsIDUxLjM2ODIzNF0sIFsyOC45OTI4MzUsIDUxLjYwMjA0NF0sIFsyOC42MTc2MTMsIDUxLjQyNzcxNF0sIFsyOC4yNDE2MTUsIDUxLjU3MjIyN10sIFsyNy40NTQwNjYsIDUxLjU5MjMwM10sIFsyNi4zMzc5NTksIDUxLjgzMjI4OV0sIFsyNS4zMjc3ODgsIDUxLjkxMDY1Nl0sIFsyNC41NTMxMDYsIDUxLjg4ODQ2MV0sIFsyNC4wMDUwNzgsIDUxLjYxNzQ0NF0sIFsyMy41MjcwNzEsIDUxLjU3ODQ1NF0sIFsyMy41MDgwMDIsIDUyLjAyMzY0N10sIFsyMy4xOTk0OTQsIDUyLjQ4Njk3N10sIFsyMy43OTkxOTksIDUyLjY5MTA5OV0sIFsyMy44MDQ5MzUsIDUzLjA4OTczMV0sIFsyMy41Mjc1MzYsIDUzLjQ3MDEyMl0sIFsyMy40ODQxMjgsIDUzLjkxMjQ5OF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQkxSIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCZWxhcnVzIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stODkuMTQzMDgsIDE3LjgwODMxOV0sIFstODkuMTUwOTA5LCAxNy45NTU0NjhdLCBbLTg5LjAyOTg1NywgMTguMDAxNTExXSwgWy04OC44NDgzNDQsIDE3Ljg4MzE5OF0sIFstODguNDkwMTIzLCAxOC40ODY4MzFdLCBbLTg4LjMwMDAzMSwgMTguNDk5OTgyXSwgWy04OC4yOTYzMzYsIDE4LjM1MzI3M10sIFstODguMTA2ODEzLCAxOC4zNDg2NzRdLCBbLTg4LjEyMzQ3OSwgMTguMDc2Njc1XSwgWy04OC4yODUzNTUsIDE3LjY0NDE0M10sIFstODguMTk3ODY3LCAxNy40ODk0NzVdLCBbLTg4LjMwMjY0MSwgMTcuMTMxNjk0XSwgWy04OC4yMzk1MTgsIDE3LjAzNjA2Nl0sIFstODguMzU1NDI4LCAxNi41MzA3NzRdLCBbLTg4LjU1MTgyNSwgMTYuMjY1NDY3XSwgWy04OC43MzI0MzQsIDE2LjIzMzYzNV0sIFstODguOTMwNjEzLCAxNS44ODcyNzNdLCBbLTg5LjIyOTEyMiwgMTUuODg2OTM4XSwgWy04OS4xNTA4MDYsIDE3LjAxNTU3N10sIFstODkuMTQzMDgsIDE3LjgwODMxOV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQkxaIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCZWxpemUiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy02Mi44NDY0NjgsIC0yMi4wMzQ5ODVdLCBbLTYzLjk4NjgzOCwgLTIxLjk5MzY0NF0sIFstNjQuMzc3MDIxLCAtMjIuNzk4MDkxXSwgWy02NC45NjQ4OTIsIC0yMi4wNzU4NjJdLCBbLTY2LjI3MzMzOSwgLTIxLjgzMjMxXSwgWy02Ny4xMDY2NzQsIC0yMi43MzU5MjVdLCBbLTY3LjgyODE4LCAtMjIuODcyOTE5XSwgWy02OC4yMTk5MTMsIC0yMS40OTQzNDddLCBbLTY4Ljc1NzE2NywgLTIwLjM3MjY1OF0sIFstNjguNDQyMjI1LCAtMTkuNDA1MDY4XSwgWy02OC45NjY4MTgsIC0xOC45ODE2ODNdLCBbLTY5LjEwMDI0NywgLTE4LjI2MDEyNV0sIFstNjkuNTkwNDI0LCAtMTcuNTgwMDEyXSwgWy02OC45NTk2MzUsIC0xNi41MDA2OThdLCBbLTY5LjM4OTc2NCwgLTE1LjY2MDEyOV0sIFstNjkuMTYwMzQ3LCAtMTUuMzIzOTc0XSwgWy02OS4zMzk1MzUsIC0xNC45NTMxOTVdLCBbLTY4Ljk0ODg4NywgLTE0LjQ1MzYzOV0sIFstNjguOTI5MjI0LCAtMTMuNjAyNjg0XSwgWy02OC44ODAwOCwgLTEyLjg5OTcyOV0sIFstNjguNjY1MDgsIC0xMi41NjEzXSwgWy02OS41Mjk2NzgsIC0xMC45NTE3MzRdLCBbLTY4Ljc4NjE1OCwgLTExLjAzNjM4XSwgWy02OC4yNzEyNTQsIC0xMS4wMTQ1MjFdLCBbLTY4LjA0ODE5MiwgLTEwLjcxMjA1OV0sIFstNjcuMTczODAxLCAtMTAuMzA2ODEyXSwgWy02Ni42NDY5MDgsIC05LjkzMTMzMV0sIFstNjUuMzM4NDM1LCAtOS43NjE5ODhdLCBbLTY1LjQ0NDgzNywgLTEwLjUxMTQ1MV0sIFstNjUuMzIxODk5LCAtMTAuODk1ODcyXSwgWy02NS40MDIyODEsIC0xMS41NjYyN10sIFstNjQuMzE2MzUzLCAtMTIuNDYxOTc4XSwgWy02My4xOTY0OTksIC0xMi42MjcwMzNdLCBbLTYyLjgwMzA2LCAtMTMuMDAwNjUzXSwgWy02Mi4xMjcwODEsIC0xMy4xOTg3ODFdLCBbLTYxLjcxMzIwNCwgLTEzLjQ4OTIwMl0sIFstNjEuMDg0MTIxLCAtMTMuNDc5Mzg0XSwgWy02MC41MDMzMDQsIC0xMy43NzU5NTVdLCBbLTYwLjQ1OTE5OCwgLTE0LjM1NDAwN10sIFstNjAuMjY0MzI2LCAtMTQuNjQ1OTc5XSwgWy02MC4yNTExNDksIC0xNS4wNzcyMTldLCBbLTYwLjU0Mjk2NiwgLTE1LjA5MzkxXSwgWy02MC4xNTgzOSwgLTE2LjI1ODI4NF0sIFstNTguMjQxMjIsIC0xNi4yOTk1NzNdLCBbLTU4LjM4ODA1OCwgLTE2Ljg3NzEwOV0sIFstNTguMjgwODA0LCAtMTcuMjcxNzFdLCBbLTU3LjczNDU1OCwgLTE3LjU1MjQ2OF0sIFstNTcuNDk4MzcxLCAtMTguMTc0MTg4XSwgWy01Ny42NzYwMDksIC0xOC45NjE4NF0sIFstNTcuOTQ5OTk3LCAtMTkuNDAwMDA0XSwgWy01Ny44NTM4MDIsIC0xOS45Njk5OTVdLCBbLTU4LjE2NjM5MiwgLTIwLjE3NjcwMV0sIFstNTguMTgzNDcxLCAtMTkuODY4Mzk5XSwgWy01OS4xMTUwNDIsIC0xOS4zNTY5MDZdLCBbLTYwLjA0MzU2NSwgLTE5LjM0Mjc0N10sIFstNjEuNzg2MzI2LCAtMTkuNjMzNzM3XSwgWy02Mi4yNjU5NjEsIC0yMC41MTM3MzVdLCBbLTYyLjI5MTE3OSwgLTIxLjA1MTYzNV0sIFstNjIuNjg1MDU3LCAtMjIuMjQ5MDI5XSwgWy02Mi44NDY0NjgsIC0yMi4wMzQ5ODVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkJPTCIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQm9saXZpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZmZmYjIiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTU3LjYyNTEzMywgLTMwLjIxNjI5NV0sIFstNTYuMjkwOSwgLTI4Ljg1Mjc2MV0sIFstNTUuMTYyMjg2LCAtMjcuODgxOTE1XSwgWy01NC40OTA3MjUsIC0yNy40NzQ3NTddLCBbLTUzLjY0ODczNSwgLTI2LjkyMzQ3M10sIFstNTMuNjI4MzQ5LCAtMjYuMTI0ODY1XSwgWy01NC4xMzAwNSwgLTI1LjU0NzYzOV0sIFstNTQuNjI1MjkxLCAtMjUuNzM5MjU1XSwgWy01NC40Mjg5NDYsIC0yNS4xNjIxODVdLCBbLTU0LjI5MzQ3NiwgLTI0LjU3MDhdLCBbLTU0LjI5Mjk2LCAtMjQuMDIxMDE0XSwgWy01NC42NTI4MzQsIC0yMy44Mzk1NzhdLCBbLTU1LjAyNzkwMiwgLTI0LjAwMTI3NF0sIFstNTUuNDAwNzQ3LCAtMjMuOTU2OTM1XSwgWy01NS41MTc2MzksIC0yMy41NzE5OThdLCBbLTU1LjYxMDY4MywgLTIyLjY1NTYxOV0sIFstNTUuNzk3OTU4LCAtMjIuMzU2OTNdLCBbLTU2LjQ3MzMxNywgLTIyLjA4NjNdLCBbLTU2Ljg4MTUxLCAtMjIuMjgyMTU0XSwgWy01Ny45MzcxNTYsIC0yMi4wOTAxNzZdLCBbLTU3Ljg3MDY3NCwgLTIwLjczMjY4OF0sIFstNTguMTY2MzkyLCAtMjAuMTc2NzAxXSwgWy01Ny44NTM4MDIsIC0xOS45Njk5OTVdLCBbLTU3Ljk0OTk5NywgLTE5LjQwMDAwNF0sIFstNTcuNjc2MDA5LCAtMTguOTYxODRdLCBbLTU3LjQ5ODM3MSwgLTE4LjE3NDE4OF0sIFstNTcuNzM0NTU4LCAtMTcuNTUyNDY4XSwgWy01OC4yODA4MDQsIC0xNy4yNzE3MV0sIFstNTguMzg4MDU4LCAtMTYuODc3MTA5XSwgWy01OC4yNDEyMiwgLTE2LjI5OTU3M10sIFstNjAuMTU4MzksIC0xNi4yNTgyODRdLCBbLTYwLjU0Mjk2NiwgLTE1LjA5MzkxXSwgWy02MC4yNTExNDksIC0xNS4wNzcyMTldLCBbLTYwLjI2NDMyNiwgLTE0LjY0NTk3OV0sIFstNjAuNDU5MTk4LCAtMTQuMzU0MDA3XSwgWy02MC41MDMzMDQsIC0xMy43NzU5NTVdLCBbLTYxLjA4NDEyMSwgLTEzLjQ3OTM4NF0sIFstNjEuNzEzMjA0LCAtMTMuNDg5MjAyXSwgWy02Mi4xMjcwODEsIC0xMy4xOTg3ODFdLCBbLTYyLjgwMzA2LCAtMTMuMDAwNjUzXSwgWy02My4xOTY0OTksIC0xMi42MjcwMzNdLCBbLTY0LjMxNjM1MywgLTEyLjQ2MTk3OF0sIFstNjUuNDAyMjgxLCAtMTEuNTY2MjddLCBbLTY1LjMyMTg5OSwgLTEwLjg5NTg3Ml0sIFstNjUuNDQ0ODM3LCAtMTAuNTExNDUxXSwgWy02NS4zMzg0MzUsIC05Ljc2MTk4OF0sIFstNjYuNjQ2OTA4LCAtOS45MzEzMzFdLCBbLTY3LjE3MzgwMSwgLTEwLjMwNjgxMl0sIFstNjguMDQ4MTkyLCAtMTAuNzEyMDU5XSwgWy02OC4yNzEyNTQsIC0xMS4wMTQ1MjFdLCBbLTY4Ljc4NjE1OCwgLTExLjAzNjM4XSwgWy02OS41Mjk2NzgsIC0xMC45NTE3MzRdLCBbLTcwLjA5Mzc1MiwgLTExLjEyMzk3Ml0sIFstNzAuNTQ4Njg2LCAtMTEuMDA5MTQ3XSwgWy03MC40ODE4OTQsIC05LjQ5MDExOF0sIFstNzEuMzAyNDEyLCAtMTAuMDc5NDM2XSwgWy03Mi4xODQ4OTEsIC0xMC4wNTM1OThdLCBbLTcyLjU2MzAzMywgLTkuNTIwMTk0XSwgWy03My4yMjY3MTMsIC05LjQ2MjIxM10sIFstNzMuMDE1MzgzLCAtOS4wMzI4MzNdLCBbLTczLjU3MTA1OSwgLTguNDI0NDQ3XSwgWy03My45ODcyMzUsIC03LjUyMzgzXSwgWy03My43MjM0MDEsIC03LjM0MDk5OV0sIFstNzMuNzI0NDg3LCAtNi45MTg1OTVdLCBbLTczLjEyMDAyNywgLTYuNjI5OTMxXSwgWy03My4yMTk3MTEsIC02LjA4OTE4OV0sIFstNzIuOTY0NTA3LCAtNS43NDEyNTFdLCBbLTcyLjg5MTkyOCwgLTUuMjc0NTYxXSwgWy03MS43NDg0MDYsIC00LjU5Mzk4M10sIFstNzAuOTI4ODQzLCAtNC40MDE1OTFdLCBbLTcwLjc5NDc2OSwgLTQuMjUxMjY1XSwgWy02OS44OTM2MzUsIC00LjI5ODE4N10sIFstNjkuNDQ0MTAyLCAtMS41NTYyODddLCBbLTY5LjQyMDQ4NiwgLTEuMTIyNjE5XSwgWy02OS41NzcwNjUsIC0wLjU0OTk5Ml0sIFstNzAuMDIwNjU2LCAtMC4xODUxNTZdLCBbLTcwLjAxNTU2NiwgMC41NDE0MTRdLCBbLTY5LjQ1MjM5NiwgMC43MDYxNTldLCBbLTY5LjI1MjQzNCwgMC42MDI2NTFdLCBbLTY5LjIxODYzOCwgMC45ODU2NzddLCBbLTY5LjgwNDU5NywgMS4wODkwODFdLCBbLTY5LjgxNjk3MywgMS43MTQ4MDVdLCBbLTY3Ljg2ODU2NSwgMS42OTI0NTVdLCBbLTY3LjUzNzgxLCAyLjAzNzE2M10sIFstNjcuMjU5OTk4LCAxLjcxOTk5OV0sIFstNjcuMDY1MDQ4LCAxLjEzMDExMl0sIFstNjYuODc2MzI2LCAxLjI1MzM2MV0sIFstNjYuMzI1NzY1LCAwLjcyNDQ1Ml0sIFstNjUuNTQ4MjY3LCAwLjc4OTI1NF0sIFstNjUuMzU0NzEzLCAxLjA5NTI4Ml0sIFstNjQuNjExMDEyLCAxLjMyODczMV0sIFstNjQuMTk5MzA2LCAxLjQ5Mjg1NV0sIFstNjQuMDgzMDg1LCAxLjkxNjM2OV0sIFstNjMuMzY4Nzg4LCAyLjIwMDldLCBbLTYzLjQyMjg2NywgMi40MTEwNjhdLCBbLTY0LjI2OTk5OSwgMi40OTcwMDZdLCBbLTY0LjQwODgyOCwgMy4xMjY3ODZdLCBbLTY0LjM2ODQ5NCwgMy43OTcyMV0sIFstNjQuODE2MDY0LCA0LjA1NjQ0NV0sIFstNjQuNjI4NjU5LCA0LjE0ODQ4MV0sIFstNjMuODg4MzQzLCA0LjAyMDUzXSwgWy02My4wOTMxOTgsIDMuNzcwNTcxXSwgWy02Mi44MDQ1MzMsIDQuMDA2OTY1XSwgWy02Mi4wODU0MywgNC4xNjIxMjRdLCBbLTYwLjk2Njg5MywgNC41MzY0NjhdLCBbLTYwLjYwMTE3OSwgNC45MTgwOThdLCBbLTYwLjczMzU3NCwgNS4yMDAyNzddLCBbLTYwLjIxMzY4MywgNS4yNDQ0ODZdLCBbLTU5Ljk4MDk1OSwgNS4wMTQwNjFdLCBbLTYwLjExMTAwMiwgNC41NzQ5NjddLCBbLTU5Ljc2NzQwNiwgNC40MjM1MDNdLCBbLTU5LjUzODA0LCAzLjk1ODgwM10sIFstNTkuODE1NDEzLCAzLjYwNjQ5OV0sIFstNTkuOTc0NTI1LCAyLjc1NTIzM10sIFstNTkuNzE4NTQ2LCAyLjI0OTYzXSwgWy01OS42NDYwNDQsIDEuNzg2ODk0XSwgWy01OS4wMzA4NjIsIDEuMzE3Njk4XSwgWy01OC41NDAwMTMsIDEuMjY4MDg4XSwgWy01OC40Mjk0NzcsIDEuNDYzOTQyXSwgWy01OC4xMTM0NSwgMS41MDcxOTVdLCBbLTU3LjY2MDk3MSwgMS42ODI1ODVdLCBbLTU3LjMzNTgyMywgMS45NDg1MzhdLCBbLTU2Ljc4MjcwNCwgMS44NjM3MTFdLCBbLTU2LjUzOTM4NiwgMS44OTk1MjNdLCBbLTU1Ljk5NTY5OCwgMS44MTc2NjddLCBbLTU1LjkwNTYsIDIuMDIxOTk2XSwgWy01Ni4wNzMzNDIsIDIuMjIwNzk1XSwgWy01NS45NzMzMjIsIDIuNTEwMzY0XSwgWy01NS41Njk3NTUsIDIuNDIxNTA2XSwgWy01NS4wOTc1ODcsIDIuNTIzNzQ4XSwgWy01NC41MjQ3NTQsIDIuMzExODQ5XSwgWy01NC4wODgwNjMsIDIuMTA1NTU3XSwgWy01My43Nzg1MjEsIDIuMzc2NzAzXSwgWy01My41NTQ4MzksIDIuMzM0ODk3XSwgWy01My40MTg0NjUsIDIuMDUzMzg5XSwgWy01Mi45Mzk2NTcsIDIuMTI0ODU4XSwgWy01Mi41NTY0MjUsIDIuNTA0NzA1XSwgWy01Mi4yNDkzMzgsIDMuMjQxMDk0XSwgWy01MS42NTc3OTcsIDQuMTU2MjMyXSwgWy01MS4zMTcxNDYsIDQuMjAzNDkxXSwgWy01MS4wNjk3NzEsIDMuNjUwMzk4XSwgWy01MC41MDg4NzUsIDEuOTAxNTY0XSwgWy00OS45NzQwNzYsIDEuNzM2NDgzXSwgWy00OS45NDcxMDEsIDEuMDQ2MTldLCBbLTUwLjY5OTI1MSwgMC4yMjI5ODRdLCBbLTUwLjM4ODIxMSwgLTAuMDc4NDQ1XSwgWy00OC42MjA1NjcsIC0wLjIzNTQ4OV0sIFstNDguNTg0NDk3LCAtMS4yMzc4MDVdLCBbLTQ3LjgyNDk1NiwgLTAuNTgxNjE4XSwgWy00Ni41NjY1ODQsIC0wLjk0MTAyOF0sIFstNDQuOTA1NzAzLCAtMS41NTE3NF0sIFstNDQuNDE3NjE5LCAtMi4xMzc3NV0sIFstNDQuNTgxNTg5LCAtMi42OTEzMDhdLCBbLTQzLjQxODc5MSwgLTIuMzgzMTFdLCBbLTQxLjQ3MjY1NywgLTIuOTEyMDE4XSwgWy0zOS45Nzg2NjUsIC0yLjg3MzA1NF0sIFstMzguNTAwMzgzLCAtMy43MDA2NTJdLCBbLTM3LjIyMzI1MiwgLTQuODIwOTQ2XSwgWy0zNi40NTI5MzcsIC01LjEwOTQwNF0sIFstMzUuNTk3Nzk2LCAtNS4xNDk1MDRdLCBbLTM1LjIzNTM4OSwgLTUuNDY0OTM3XSwgWy0zNC44OTYwMywgLTYuNzM4MTkzXSwgWy0zNC43Mjk5OTMsIC03LjM0MzIyMV0sIFstMzUuMTI4MjEyLCAtOC45OTY0MDFdLCBbLTM1LjYzNjk2NywgLTkuNjQ5MjgyXSwgWy0zNy4wNDY1MTksIC0xMS4wNDA3MjFdLCBbLTM3LjY4MzYxMiwgLTEyLjE3MTE5NV0sIFstMzguNDIzODc3LCAtMTMuMDM4MTE5XSwgWy0zOC42NzM4ODcsIC0xMy4wNTc2NTJdLCBbLTM4Ljk1MzI3NiwgLTEzLjc5MzM3XSwgWy0zOC44ODIyOTgsIC0xNS42NjcwNTRdLCBbLTM5LjE2MTA5MiwgLTE3LjIwODQwN10sIFstMzkuMjY3MzM5LCAtMTcuODY3NzQ2XSwgWy0zOS41ODM1MjEsIC0xOC4yNjIyOTZdLCBbLTM5Ljc2MDgyMywgLTE5LjU5OTExM10sIFstNDAuNzc0NzQxLCAtMjAuOTA0NTEyXSwgWy00MC45NDQ3NTYsIC0yMS45MzczMTddLCBbLTQxLjc1NDE2NCwgLTIyLjM3MDY3Nl0sIFstNDEuOTg4Mjg0LCAtMjIuOTcwMDddLCBbLTQzLjA3NDcwNCwgLTIyLjk2NzY5M10sIFstNDQuNjQ3ODEyLCAtMjMuMzUxOTU5XSwgWy00NS4zNTIxMzYsIC0yMy43OTY4NDJdLCBbLTQ2LjQ3MjA5MywgLTI0LjA4ODk2OV0sIFstNDcuNjQ4OTcyLCAtMjQuODg1MTk5XSwgWy00OC40OTU0NTgsIC0yNS44NzcwMjVdLCBbLTQ4LjY0MTAwNSwgLTI2LjYyMzY5OF0sIFstNDguNDc0NzM2LCAtMjcuMTc1OTEyXSwgWy00OC42NjE1MiwgLTI4LjE4NjEzNV0sIFstNDguODg4NDU3LCAtMjguNjc0MTE1XSwgWy00OS41ODczMjksIC0yOS4yMjQ0NjldLCBbLTUwLjY5Njg3NCwgLTMwLjk4NDQ2NV0sIFstNTEuNTc2MjI2LCAtMzEuNzc3Njk4XSwgWy01Mi4yNTYwODEsIC0zMi4yNDUzN10sIFstNTIuNzEyMSwgLTMzLjE5NjU3OF0sIFstNTMuMzczNjYyLCAtMzMuNzY4Mzc4XSwgWy01My42NTA1NDQsIC0zMy4yMDIwMDRdLCBbLTUzLjIwOTU4OSwgLTMyLjcyNzY2Nl0sIFstNTMuNzg3OTUyLCAtMzIuMDQ3MjQzXSwgWy01NC41NzI0NTIsIC0zMS40OTQ1MTFdLCBbLTU1LjYwMTUxLCAtMzAuODUzODc5XSwgWy01NS45NzMyNDUsIC0zMC44ODMwNzZdLCBbLTU2Ljk3NjAyNiwgLTMwLjEwOTY4Nl0sIFstNTcuNjI1MTMzLCAtMzAuMjE2Mjk1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCUkEiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJyYXppbCIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTE0LjIwNDAxNywgNC41MjU4NzRdLCBbMTE0LjU5OTk2MSwgNC45MDAwMTFdLCBbMTE1LjQ1MDcxLCA1LjQ0NzczXSwgWzExNS40MDU3LCA0Ljk1NTIyOF0sIFsxMTUuMzQ3NDYxLCA0LjMxNjYzNl0sIFsxMTQuODY5NTU3LCA0LjM0ODMxNF0sIFsxMTQuNjU5NTk2LCA0LjAwNzYzN10sIFsxMTQuMjA0MDE3LCA0LjUyNTg3NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQlJOIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCcnVuZWkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzkxLjY5NjY1NywgMjcuNzcxNzQyXSwgWzkyLjEwMzcxMiwgMjcuNDUyNjE0XSwgWzkyLjAzMzQ4NCwgMjYuODM4MzFdLCBbOTEuMjE3NTEzLCAyNi44MDg2NDhdLCBbOTAuMzczMjc1LCAyNi44NzU3MjRdLCBbODkuNzQ0NTI4LCAyNi43MTk0MDNdLCBbODguODM1NjQzLCAyNy4wOTg5NjZdLCBbODguODE0MjQ4LCAyNy4yOTkzMTZdLCBbODkuNDc1ODEsIDI4LjA0Mjc1OV0sIFs5MC4wMTU4MjksIDI4LjI5NjQzOV0sIFs5MC43MzA1MTQsIDI4LjA2NDk1NF0sIFs5MS4yNTg4NTQsIDI4LjA0MDYxNF0sIFs5MS42OTY2NTcsIDI3Ljc3MTc0Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQlROIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCaHV0YW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzI1LjY0OTE2MywgLTE4LjUzNjAyNl0sIFsyNS44NTAzOTEsIC0xOC43MTQ0MTNdLCBbMjYuMTY0NzkxLCAtMTkuMjkzMDg2XSwgWzI3LjI5NjUwNSwgLTIwLjM5MTUyXSwgWzI3LjcyNDc0NywgLTIwLjQ5OTA1OV0sIFsyNy43MjcyMjgsIC0yMC44NTE4MDJdLCBbMjguMDIxMzcsIC0yMS40ODU5NzVdLCBbMjguNzk0NjU2LCAtMjEuNjM5NDU0XSwgWzI5LjQzMjE4OCwgLTIyLjA5MTMxM10sIFsyOC4wMTcyMzYsIC0yMi44Mjc3NTRdLCBbMjcuMTE5NDEsIC0yMy41NzQzMjNdLCBbMjYuNzg2NDA3LCAtMjQuMjQwNjkxXSwgWzI2LjQ4NTc1MywgLTI0LjYxNjMyN10sIFsyNS45NDE2NTIsIC0yNC42OTYzNzNdLCBbMjUuNzY1ODQ5LCAtMjUuMTc0ODQ1XSwgWzI1LjY2NDY2NiwgLTI1LjQ4NjgxNl0sIFsyNS4wMjUxNzEsIC0yNS43MTk2N10sIFsyNC4yMTEyNjcsIC0yNS42NzAyMTZdLCBbMjMuNzMzNTcsIC0yNS4zOTAxMjldLCBbMjMuMzEyMDk3LCAtMjUuMjY4NjldLCBbMjIuODI0MjcxLCAtMjUuNTAwNDU5XSwgWzIyLjU3OTUzMiwgLTI1Ljk3OTQ0OF0sIFsyMi4xMDU5NjksIC0yNi4yODAyNTZdLCBbMjEuNjA1ODk2LCAtMjYuNzI2NTM0XSwgWzIwLjg4OTYwOSwgLTI2LjgyODU0M10sIFsyMC42NjY0NywgLTI2LjQ3NzQ1M10sIFsyMC43NTg2MDksIC0yNS44NjgxMzZdLCBbMjAuMTY1NzI2LCAtMjQuOTE3OTYyXSwgWzE5Ljg5NTc2OCwgLTI0Ljc2Nzc5XSwgWzE5Ljg5NTQ1OCwgLTIxLjg0OTE1N10sIFsyMC44ODExMzQsIC0yMS44MTQzMjddLCBbMjAuOTEwNjQxLCAtMTguMjUyMjE5XSwgWzIxLjY1NTA0LCAtMTguMjE5MTQ2XSwgWzIzLjE5Njg1OCwgLTE3Ljg2OTAzOF0sIFsyMy41NzkwMDYsIC0xOC4yODEyNjFdLCBbMjQuMjE3MzY1LCAtMTcuODg5MzQ3XSwgWzI0LjUyMDcwNSwgLTE3Ljg4NzEyNV0sIFsyNS4wODQ0NDMsIC0xNy42NjE4MTZdLCBbMjUuMjY0MjI2LCAtMTcuNzM2NTRdLCBbMjUuNjQ5MTYzLCAtMTguNTM2MDI2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCV0EiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJvdHN3YW5hIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxNS4yNzk0NiwgNy40MjE5MjVdLCBbMTYuMTA2MjMyLCA3LjQ5NzA4OF0sIFsxNi4yOTA1NjIsIDcuNzU0MzA3XSwgWzE2LjQ1NjE4NSwgNy43MzQ3NzRdLCBbMTYuNzA1OTg4LCA3LjUwODMyOF0sIFsxNy45NjQ5MywgNy44OTA5MTRdLCBbMTguMzg5NTU1LCA4LjI4MTMwNF0sIFsxOC45MTEwMjIsIDguNjMwODk1XSwgWzE4LjgxMjAxLCA4Ljk4MjkxNV0sIFsxOS4wOTQwMDgsIDkuMDc0ODQ3XSwgWzIwLjA1OTY4NSwgOS4wMTI3MDZdLCBbMjEuMDAwODY4LCA5LjQ3NTk4NV0sIFsyMS43MjM4MjIsIDEwLjU2NzA1Nl0sIFsyMi4yMzExMjksIDEwLjk3MTg4OV0sIFsyMi44NjQxNjUsIDExLjE0MjM5NV0sIFsyMi45Nzc1NDQsIDEwLjcxNDQ2M10sIFsyMy41NTQzMDQsIDEwLjA4OTI1NV0sIFsyMy41NTcyNSwgOS42ODEyMThdLCBbMjMuMzk0Nzc5LCA5LjI2NTA2OF0sIFsyMy40NTkwMTMsIDguOTU0Mjg2XSwgWzIzLjgwNTgxMywgOC42NjYzMTldLCBbMjQuNTY3MzY5LCA4LjIyOTE4OF0sIFsyNS4xMTQ5MzIsIDcuODI1MTA0XSwgWzI1LjEyNDEzMSwgNy41MDAwODVdLCBbMjUuNzk2NjQ4LCA2Ljk3OTMxNl0sIFsyNi4yMTM0MTgsIDYuNTQ2NjAzXSwgWzI2LjQ2NTkwOSwgNS45NDY3MTddLCBbMjcuMjEzNDA5LCA1LjU1MDk1M10sIFsyNy4zNzQyMjYsIDUuMjMzOTQ0XSwgWzI3LjA0NDA2NSwgNS4xMjc4NTNdLCBbMjYuNDAyNzYxLCA1LjE1MDg3NV0sIFsyNS42NTA0NTUsIDUuMjU2MDg4XSwgWzI1LjI3ODc5OCwgNS4xNzA0MDhdLCBbMjUuMTI4ODMzLCA0LjkyNzI0NV0sIFsyNC44MDUwMjksIDQuODk3MjQ3XSwgWzI0LjQxMDUzMSwgNS4xMDg3ODRdLCBbMjMuMjk3MjE0LCA0LjYwOTY5M10sIFsyMi44NDE0OCwgNC43MTAxMjZdLCBbMjIuNzA0MTI0LCA0LjYzMzA1MV0sIFsyMi40MDUxMjQsIDQuMDI5MTZdLCBbMjEuNjU5MTIzLCA0LjIyNDM0Ml0sIFsyMC45Mjc1OTEsIDQuMzIyNzg2XSwgWzIwLjI5MDY3OSwgNC42OTE2NzhdLCBbMTkuNDY3Nzg0LCA1LjAzMTUyOF0sIFsxOC45MzIzMTIsIDQuNzA5NTA2XSwgWzE4LjU0Mjk4MiwgNC4yMDE3ODVdLCBbMTguNDUzMDY1LCAzLjUwNDM4Nl0sIFsxNy44MDk5LCAzLjU2MDE5Nl0sIFsxNy4xMzMwNDIsIDMuNzI4MTk3XSwgWzE2LjUzNzA1OCwgMy4xOTgyNTVdLCBbMTYuMDEyODUyLCAyLjI2NzY0XSwgWzE1LjkwNzM4MSwgMi41NTczODldLCBbMTUuODYyNzMyLCAzLjAxMzUzN10sIFsxNS40MDUzOTYsIDMuMzM1MzAxXSwgWzE1LjAzNjIyLCAzLjg1MTM2N10sIFsxNC45NTA5NTMsIDQuMjEwMzg5XSwgWzE0LjQ3ODM3MiwgNC43MzI2MDVdLCBbMTQuNTU4OTM2LCA1LjAzMDU5OF0sIFsxNC40NTk0MDcsIDUuNDUxNzYxXSwgWzE0LjUzNjU2LCA2LjIyNjk1OV0sIFsxNC43NzY1NDUsIDYuNDA4NDk4XSwgWzE1LjI3OTQ2LCA3LjQyMTkyNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ0FGIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDZW50cmFsIEFmcmljYW4gUmVwdWJsaWMiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1stNjMuNjY0NSwgNDYuNTUwMDFdLCBbLTYyLjkzOTMsIDQ2LjQxNTg3XSwgWy02Mi4wMTIwOCwgNDYuNDQzMTRdLCBbLTYyLjUwMzkxLCA0Ni4wMzMzOV0sIFstNjIuODc0MzMsIDQ1Ljk2ODE4XSwgWy02NC4xNDI4LCA0Ni4zOTI2NV0sIFstNjQuMzkyNjEsIDQ2LjcyNzQ3XSwgWy02NC4wMTQ4NiwgNDcuMDM2MDFdLCBbLTYzLjY2NDUsIDQ2LjU1MDAxXV1dLCBbW1stNjEuODA2MzA1LCA0OS4xMDUwNl0sIFstNjIuMjkzMTgsIDQ5LjA4NzE3XSwgWy02My41ODkyNiwgNDkuNDAwNjldLCBbLTY0LjUxOTEyLCA0OS44NzMwNF0sIFstNjQuMTczMjIsIDQ5Ljk1NzE4XSwgWy02Mi44NTgyOSwgNDkuNzA2NDFdLCBbLTYxLjgzNTU4NSwgNDkuMjg4NTVdLCBbLTYxLjgwNjMwNSwgNDkuMTA1MDZdXV0sIFtbWy0xMjMuNTEwMDAyLCA0OC41MTAwMTFdLCBbLTEyNC4wMTI4OTEsIDQ4LjM3MDg0Nl0sIFstMTI1LjY1NTAxMywgNDguODI1MDA1XSwgWy0xMjUuOTU0OTk0LCA0OS4xNzk5OTZdLCBbLTEyNi44NTAwMDQsIDQ5LjUzXSwgWy0xMjcuMDI5OTkzLCA0OS44MTQ5OTZdLCBbLTEyOC4wNTkzMzYsIDQ5Ljk5NDk1OV0sIFstMTI4LjQ0NDU4NCwgNTAuNTM5MTM4XSwgWy0xMjguMzU4NDE0LCA1MC43NzA2NDhdLCBbLTEyNy4zMDg1ODEsIDUwLjU1MjU3NF0sIFstMTI2LjY5NTAwMSwgNTAuNDAwOTAzXSwgWy0xMjUuNzU1MDA3LCA1MC4yOTUwMThdLCBbLTEyNS40MTUwMDIsIDQ5Ljk1MDAwMV0sIFstMTI0LjkyMDc2OCwgNDkuNDc1Mjc1XSwgWy0xMjMuOTIyNTA5LCA0OS4wNjI0ODRdLCBbLTEyMy41MTAwMDIsIDQ4LjUxMDAxMV1dXSwgW1tbLTU2LjEzNDAzNiwgNTAuNjg3MDFdLCBbLTU2Ljc5NTg4MiwgNDkuODEyMzA5XSwgWy01Ni4xNDMxMDUsIDUwLjE1MDExN10sIFstNTUuNDcxNDkyLCA0OS45MzU4MTVdLCBbLTU1LjgyMjQwMSwgNDkuNTg3MTI5XSwgWy01NC45MzUxNDMsIDQ5LjMxMzAxMV0sIFstNTQuNDczNzc1LCA0OS41NTY2OTFdLCBbLTUzLjQ3NjU0OSwgNDkuMjQ5MTM5XSwgWy01My43ODYwMTQsIDQ4LjUxNjc4MV0sIFstNTMuMDg2MTM0LCA0OC42ODc4MDRdLCBbLTUyLjk1ODY0OCwgNDguMTU3MTY0XSwgWy01Mi42NDgwOTksIDQ3LjUzNTU0OF0sIFstNTMuMDY5MTU4LCA0Ni42NTU0OTldLCBbLTUzLjUyMTQ1NiwgNDYuNjE4MjkyXSwgWy01NC4xNzg5MzYsIDQ2LjgwNzA2Nl0sIFstNTMuOTYxODY5LCA0Ny42MjUyMDddLCBbLTU0LjI0MDQ4MiwgNDcuNzUyMjc5XSwgWy01NS40MDA3NzMsIDQ2Ljg4NDk5NF0sIFstNTUuOTk3NDgxLCA0Ni45MTk3Ml0sIFstNTUuMjkxMjE5LCA0Ny4zODk1NjJdLCBbLTU2LjI1MDc5OSwgNDcuNjMyNTQ1XSwgWy01Ny4zMjUyMjksIDQ3LjU3MjgwN10sIFstNTkuMjY2MDE1LCA0Ny42MDMzNDhdLCBbLTU5LjQxOTQ5NCwgNDcuODk5NDU0XSwgWy01OC43OTY1ODYsIDQ4LjI1MTUyNV0sIFstNTkuMjMxNjI1LCA0OC41MjMxODhdLCBbLTU4LjM5MTgwNSwgNDkuMTI1NTgxXSwgWy01Ny4zNTg2OSwgNTAuNzE4Mjc0XSwgWy01Ni43Mzg2NSwgNTEuMjg3NDM4XSwgWy01NS44NzA5NzcsIDUxLjYzMjA5NF0sIFstNTUuNDA2OTc0LCA1MS41ODgyNzNdLCBbLTU1LjYwMDIxOCwgNTEuMzE3MDc1XSwgWy01Ni4xMzQwMzYsIDUwLjY4NzAxXV1dLCBbW1stMTMyLjcxMDAwOCwgNTQuMDQwMDA5XSwgWy0xMzIuNzEwMDA5LCA1NC4wNDAwMDldLCBbLTEzMi43MTAwMDgsIDU0LjA0MDAwOV0sIFstMTMyLjcxMDAwOCwgNTQuMDQwMDA5XSwgWy0xMzEuNzQ5OTksIDU0LjEyMDAwNF0sIFstMTMyLjA0OTQ4LCA1Mi45ODQ2MjFdLCBbLTEzMS4xNzkwNDMsIDUyLjE4MDQzM10sIFstMTMxLjU3NzgzLCA1Mi4xODIzNzFdLCBbLTEzMi4xODA0MjgsIDUyLjYzOTcwN10sIFstMTMyLjU0OTk5MiwgNTMuMTAwMDE1XSwgWy0xMzMuMDU0NjExLCA1My40MTE0NjldLCBbLTEzMy4yMzk2NjQsIDUzLjg1MTA4XSwgWy0xMzMuMTgwMDA0LCA1NC4xNjk5NzVdLCBbLTEzMi43MTAwMDgsIDU0LjA0MDAwOV1dXSwgW1tbLTc5LjI2NTgyLCA2Mi4xNTg2NzVdLCBbLTc5LjY1NzUyLCA2MS42MzMwOF0sIFstODAuMDk5NTYsIDYxLjcxODFdLCBbLTgwLjM2MjE1LCA2Mi4wMTY0OV0sIFstODAuMzE1Mzk1LCA2Mi4wODU1NjVdLCBbLTc5LjkyOTM5LCA2Mi4zODU2XSwgWy03OS41MjAwMiwgNjIuMzYzNzFdLCBbLTc5LjI2NTgyLCA2Mi4xNTg2NzVdXV0sIFtbWy04MS44OTgyNSwgNjIuNzEwOF0sIFstODMuMDY4NTcsIDYyLjE1OTIyXSwgWy04My43NzQ2MiwgNjIuMTgyMzFdLCBbLTgzLjk5MzY3LCA2Mi40NTI4XSwgWy04My4yNTA0OCwgNjIuOTE0MDldLCBbLTgxLjg3Njk5LCA2Mi45MDQ1OF0sIFstODEuODk4MjUsIDYyLjcxMDhdXV0sIFtbWy04NS4xNjEzMDgsIDY1LjY1NzI4NV0sIFstODQuOTc1NzY0LCA2NS4yMTc1MThdLCBbLTg0LjQ2NDAxMiwgNjUuMzcxNzcyXSwgWy04My44ODI2MjYsIDY1LjEwOTYxOF0sIFstODIuNzg3NTc3LCA2NC43NjY2OTNdLCBbLTgxLjY0MjAxNCwgNjQuNDU1MTM2XSwgWy04MS41NTM0NCwgNjMuOTc5NjA5XSwgWy04MC44MTczNjEsIDY0LjA1NzQ4Nl0sIFstODAuMTAzNDUxLCA2My43MjU5ODFdLCBbLTgwLjk5MTAyLCA2My40MTEyNDZdLCBbLTgyLjU0NzE3OCwgNjMuNjUxNzIyXSwgWy04My4xMDg3OTgsIDY0LjEwMTg3Nl0sIFstODQuMTAwNDE3LCA2My41Njk3MTJdLCBbLTg1LjUyMzQwNSwgNjMuMDUyMzc5XSwgWy04NS44NjY3NjksIDYzLjYzNzI1M10sIFstODcuMjIxOTgzLCA2My41NDEyMzhdLCBbLTg2LjM1Mjc2LCA2NC4wMzU4MzNdLCBbLTg2LjIyNDg4NiwgNjQuODIyOTE3XSwgWy04NS44ODM4NDgsIDY1LjczODc3OF0sIFstODUuMTYxMzA4LCA2NS42NTcyODVdXV0sIFtbWy03NS44NjU4OCwgNjcuMTQ4ODZdLCBbLTc2Ljk4Njg3LCA2Ny4wOTg3M10sIFstNzcuMjM2NCwgNjcuNTg4MDldLCBbLTc2LjgxMTY2LCA2OC4xNDg1Nl0sIFstNzUuODk1MjEsIDY4LjI4NzIxXSwgWy03NS4xMTQ1LCA2OC4wMTAzNl0sIFstNzUuMTAzMzMsIDY3LjU4MjAyXSwgWy03NS4yMTU5NywgNjcuNDQ0MjVdLCBbLTc1Ljg2NTg4LCA2Ny4xNDg4Nl1dXSwgW1tbLTk1LjY0NzY4MSwgNjkuMTA3NjldLCBbLTk2LjI2OTUyMSwgNjguNzU3MDRdLCBbLTk3LjYxNzQwMSwgNjkuMDYwMDNdLCBbLTk4LjQzMTgwMSwgNjguOTUwN10sIFstOTkuNzk3NDAxLCA2OS40MDAwM10sIFstOTguOTE3NDAxLCA2OS43MTAwM10sIFstOTguMjE4MjYxLCA3MC4xNDM1NF0sIFstOTcuMTU3NDAxLCA2OS44NjAwM10sIFstOTYuNTU3NDAxLCA2OS42ODAwM10sIFstOTYuMjU3NDAxLCA2OS40OTAwM10sIFstOTUuNjQ3NjgxLCA2OS4xMDc2OV1dXSwgW1tbLTkwLjU0NzEsIDY5LjQ5NzY2XSwgWy05MC41NTE1MSwgNjguNDc0OTldLCBbLTg5LjIxNTE1LCA2OS4yNTg3M10sIFstODguMDE5NjYsIDY4LjYxNTA4XSwgWy04OC4zMTc0OSwgNjcuODczMzhdLCBbLTg3LjM1MDE3LCA2Ny4xOTg3Ml0sIFstODYuMzA2MDcsIDY3LjkyMTQ2XSwgWy04NS41NzY2NCwgNjguNzg0NTZdLCBbLTg1LjUyMTk3LCA2OS44ODIxMV0sIFstODQuMTAwODEsIDY5LjgwNTM5XSwgWy04Mi42MjI1OCwgNjkuNjU4MjZdLCBbLTgxLjI4MDQzLCA2OS4xNjIwMl0sIFstODEuMjIwMiwgNjguNjY1NjddLCBbLTgxLjk2NDM2LCA2OC4xMzI1M10sIFstODEuMjU5MjgsIDY3LjU5NzE2XSwgWy04MS4zODY1MywgNjcuMTEwNzhdLCBbLTgzLjM0NDU2LCA2Ni40MTE1NF0sIFstODQuNzM1NDIsIDY2LjI1NzNdLCBbLTg1Ljc2OTQzLCA2Ni41NTgzM10sIFstODYuMDY3NiwgNjYuMDU2MjVdLCBbLTg3LjAzMTQzLCA2NS4yMTI5N10sIFstODcuMzIzMjQsIDY0Ljc3NTYzXSwgWy04OC40ODI5NiwgNjQuMDk4OTddLCBbLTg5LjkxNDQ0LCA2NC4wMzI3M10sIFstOTAuNzAzOTgsIDYzLjYxMDE3XSwgWy05MC43NzAwNCwgNjIuOTYwMjFdLCBbLTkxLjkzMzQyLCA2Mi44MzUwOF0sIFstOTMuMTU2OTgsIDYyLjAyNDY5XSwgWy05NC4yNDE1MywgNjAuODk4NjVdLCBbLTk0LjYyOTMxLCA2MC4xMTAyMV0sIFstOTQuNjg0NiwgNTguOTQ4ODJdLCBbLTkzLjIxNTAyLCA1OC43ODIxMl0sIFstOTIuNzY0NjIsIDU3Ljg0NTcxXSwgWy05Mi4yOTcwMywgNTcuMDg3MDldLCBbLTkwLjg5NzY5LCA1Ny4yODQ2OF0sIFstODkuMDM5NTMsIDU2Ljg1MTcyXSwgWy04OC4wMzk3OCwgNTYuNDcxNjJdLCBbLTg3LjMyNDIxLCA1NS45OTkxNF0sIFstODYuMDcxMjEsIDU1LjcyMzgzXSwgWy04NS4wMTE4MSwgNTUuMzAyNl0sIFstODMuMzYwNTUsIDU1LjI0NDg5XSwgWy04Mi4yNzI4NSwgNTUuMTQ4MzJdLCBbLTgyLjQzNjIsIDU0LjI4MjI3XSwgWy04Mi4xMjUwMiwgNTMuMjc3MDNdLCBbLTgxLjQwMDc1LCA1Mi4xNTc4OF0sIFstNzkuOTEyODksIDUxLjIwODQyXSwgWy03OS4xNDMwMSwgNTEuNTMzOTNdLCBbLTc4LjYwMTkxLCA1Mi41NjIwOF0sIFstNzkuMTI0MjEsIDU0LjE0MTQ1XSwgWy03OS44Mjk1OCwgNTQuNjY3NzJdLCBbLTc4LjIyODc0LCA1NS4xMzY0NV0sIFstNzcuMDk1NiwgNTUuODM3NDFdLCBbLTc2LjU0MTM3LCA1Ni41MzQyM10sIFstNzYuNjIzMTksIDU3LjIwMjYzXSwgWy03Ny4zMDIyNiwgNTguMDUyMDldLCBbLTc4LjUxNjg4LCA1OC44MDQ1OF0sIFstNzcuMzM2NzYsIDU5Ljg1MjYxXSwgWy03Ny43NzI3MiwgNjAuNzU3ODhdLCBbLTc4LjEwNjg3LCA2Mi4zMTk2NF0sIFstNzcuNDEwNjcsIDYyLjU1MDUzXSwgWy03NS42OTYyMSwgNjIuMjc4NF0sIFstNzQuNjY4MiwgNjIuMTgxMTFdLCBbLTczLjgzOTg4LCA2Mi40NDM4XSwgWy03Mi45MDg1MywgNjIuMTA1MDddLCBbLTcxLjY3NzA4LCA2MS41MjUzNV0sIFstNzEuMzczNjksIDYxLjEzNzE3XSwgWy02OS41OTA0MiwgNjEuMDYxNDFdLCBbLTY5LjYyMDMzLCA2MC4yMjEyNV0sIFstNjkuMjg3OSwgNTguOTU3MzZdLCBbLTY4LjM3NDU1LCA1OC44MDEwNl0sIFstNjcuNjQ5NzYsIDU4LjIxMjA2XSwgWy02Ni4yMDE3OCwgNTguNzY3MzFdLCBbLTY1LjI0NTE3LCA1OS44NzA3MV0sIFstNjQuNTgzNTIsIDYwLjMzNTU4XSwgWy02My44MDQ3NSwgNTkuNDQyNl0sIFstNjIuNTAyMzYsIDU4LjE2NzA4XSwgWy02MS4zOTY1NSwgNTYuOTY3NDVdLCBbLTYxLjc5ODY2LCA1Ni4zMzk0NV0sIFstNjAuNDY4NTMsIDU1Ljc3NTQ4XSwgWy01OS41Njk2MiwgNTUuMjA0MDddLCBbLTU3Ljk3NTA4LCA1NC45NDU0OV0sIFstNTcuMzMzMiwgNTQuNjI2NV0sIFstNTYuOTM2ODksIDUzLjc4MDMyXSwgWy01Ni4xNTgxMSwgNTMuNjQ3NDldLCBbLTU1Ljc1NjMyLCA1My4yNzAzNl0sIFstNTUuNjgzMzgsIDUyLjE0NjY0XSwgWy01Ni40MDkxNiwgNTEuNzcwN10sIFstNTcuMTI2OTEsIDUxLjQxOTcyXSwgWy01OC43NzQ4MiwgNTEuMDY0M10sIFstNjAuMDMzMDksIDUwLjI0Mjc3XSwgWy02MS43MjM2NiwgNTAuMDgwNDZdLCBbLTYzLjg2MjUxLCA1MC4yOTA5OV0sIFstNjUuMzYzMzEsIDUwLjI5ODJdLCBbLTY2LjM5OTA1LCA1MC4yMjg5N10sIFstNjcuMjM2MzEsIDQ5LjUxMTU2XSwgWy02OC41MTExNCwgNDkuMDY4MzZdLCBbLTY5Ljk1MzYyLCA0Ny43NDQ4OF0sIFstNzEuMTA0NTgsIDQ2LjgyMTcxXSwgWy03MC4yNTUyMiwgNDYuOTg2MDZdLCBbLTY4LjY1LCA0OC4zXSwgWy02Ni41NTI0MywgNDkuMTMzMV0sIFstNjUuMDU2MjYsIDQ5LjIzMjc4XSwgWy02NC4xNzA5OSwgNDguNzQyNDhdLCBbLTY1LjExNTQ1LCA0OC4wNzA4NV0sIFstNjQuNzk4NTQsIDQ2Ljk5Mjk3XSwgWy02NC40NzIxOSwgNDYuMjM4NDldLCBbLTYzLjE3MzI5LCA0NS43MzkwMl0sIFstNjEuNTIwNzIsIDQ1Ljg4Mzc3XSwgWy02MC41MTgxNSwgNDcuMDA3OTNdLCBbLTYwLjQ0ODYsIDQ2LjI4MjY0XSwgWy01OS44MDI4NywgNDUuOTIwNF0sIFstNjEuMDM5ODgsIDQ1LjI2NTI1XSwgWy02My4yNTQ3MSwgNDQuNjcwMTRdLCBbLTY0LjI0NjU2LCA0NC4yNjU1M10sIFstNjUuMzY0MDYsIDQzLjU0NTIzXSwgWy02Ni4xMjM0LCA0My42MTg2N10sIFstNjYuMTYxNzMsIDQ0LjQ2NTEyXSwgWy02NC40MjU0OSwgNDUuMjkyMDRdLCBbLTY2LjAyNjA1LCA0NS4yNTkzMV0sIFstNjcuMTM3NDEsIDQ1LjEzNzUzXSwgWy02Ny43OTEzNCwgNDUuNzAyODFdLCBbLTY3Ljc5MDQ2LCA0Ny4wNjYzNl0sIFstNjguMjM0NDQsIDQ3LjM1NDg2XSwgWy02OC45MDUsIDQ3LjE4NV0sIFstNjkuMjM3MjE2LCA0Ny40NDc3ODFdLCBbLTY5Ljk5OTk3LCA0Ni42OTMwN10sIFstNzAuMzA1LCA0NS45MTVdLCBbLTcwLjY2LCA0NS40Nl0sIFstNzEuMDg0ODIsIDQ1LjMwNTI0XSwgWy03MS40MDUsIDQ1LjI1NV0sIFstNzEuNTA1MDYsIDQ1LjAwODJdLCBbLTczLjM0NzgzLCA0NS4wMDczOF0sIFstNzQuODY3LCA0NS4wMDA0OF0sIFstNzUuMzE4MjEsIDQ0LjgxNjQ1XSwgWy03Ni4zNzUsIDQ0LjA5NjMxXSwgWy03Ni41LCA0NC4wMTg0NTldLCBbLTc2LjgyMDAzNCwgNDMuNjI4Nzg0XSwgWy03Ny43Mzc4ODUsIDQzLjYyOTA1Nl0sIFstNzguNzIwMjgsIDQzLjYyNTA4OV0sIFstNzkuMTcxNjc0LCA0My40NjYzMzldLCBbLTc5LjAxLCA0My4yN10sIFstNzguOTIsIDQyLjk2NV0sIFstNzguOTM5MzYyLCA0Mi44NjM2MTFdLCBbLTgwLjI0NzQ0OCwgNDIuMzY2Ml0sIFstODEuMjc3NzQ3LCA0Mi4yMDkwMjZdLCBbLTgyLjQzOTI3OCwgNDEuNjc1MTA1XSwgWy04Mi42OTAwODksIDQxLjY3NTEwNV0sIFstODMuMDI5ODEsIDQxLjgzMjc5Nl0sIFstODMuMTQyLCA0MS45NzU2ODFdLCBbLTgzLjEyLCA0Mi4wOF0sIFstODIuOSwgNDIuNDNdLCBbLTgyLjQzLCA0Mi45OF0sIFstODIuMTM3NjQyLCA0My41NzEwODhdLCBbLTgyLjMzNzc2MywgNDQuNDRdLCBbLTgyLjU1MDkyNSwgNDUuMzQ3NTE3XSwgWy04My41OTI4NTEsIDQ1LjgxNjg5NF0sIFstODMuNDY5NTUxLCA0NS45OTQ2ODZdLCBbLTgzLjYxNjEzMSwgNDYuMTE2OTI3XSwgWy04My44OTA3NjUsIDQ2LjExNjkyN10sIFstODQuMDkxODUxLCA0Ni4yNzU0MTldLCBbLTg0LjE0MjEyLCA0Ni41MTIyMjZdLCBbLTg0LjMzNjcsIDQ2LjQwODc3XSwgWy04NC42MDQ5LCA0Ni40Mzk2XSwgWy04NC41NDM3NDksIDQ2LjUzODY4NF0sIFstODQuNzc5MjM4LCA0Ni42MzcxMDJdLCBbLTg0Ljg3NjA4LCA0Ni45MDAwODNdLCBbLTg1LjY1MjM2MywgNDcuMjIwMjE5XSwgWy04Ni40NjE5OTEsIDQ3LjU1MzMzOF0sIFstODcuNDM5NzkzLCA0Ny45NF0sIFstODguMzc4MTE0LCA0OC4zMDI5MThdLCBbLTg5LjI3MjkxNywgNDguMDE5ODA4XSwgWy04OS42LCA0OC4wMV0sIFstOTAuODMsIDQ4LjI3XSwgWy05MS42NCwgNDguMTRdLCBbLTkyLjYxLCA0OC40NV0sIFstOTMuNjMwODcsIDQ4LjYwOTI2XSwgWy05NC4zMjkxNCwgNDguNjcwNzRdLCBbLTk0LjY0LCA0OC44NF0sIFstOTQuODE3NTgsIDQ5LjM4OTA1XSwgWy05NS4xNTYwOSwgNDkuMzg0MjVdLCBbLTk1LjE1OTA3LCA0OV0sIFstOTcuMjI4NzIsIDQ5LjAwMDddLCBbLTEwMC42NSwgNDldLCBbLTEwNC4wNDgyNiwgNDguOTk5ODZdLCBbLTEwNy4wNSwgNDldLCBbLTExMC4wNSwgNDldLCBbLTExMywgNDldLCBbLTExNi4wNDgxOCwgNDldLCBbLTExNy4wMzEyMSwgNDldLCBbLTEyMCwgNDldLCBbLTEyMi44NCwgNDldLCBbLTEyMi45NzQyMSwgNDkuMDAyNTM4XSwgWy0xMjQuOTEwMjQsIDQ5Ljk4NDU2XSwgWy0xMjUuNjI0NjEsIDUwLjQxNjU2XSwgWy0xMjcuNDM1NjEsIDUwLjgzMDYxXSwgWy0xMjcuOTkyNzYsIDUxLjcxNTgzXSwgWy0xMjcuODUwMzIsIDUyLjMyOTYxXSwgWy0xMjkuMTI5NzksIDUyLjc1NTM4XSwgWy0xMjkuMzA1MjMsIDUzLjU2MTU5XSwgWy0xMzAuNTE0OTcsIDU0LjI4NzU3XSwgWy0xMzAuNTM2MTEsIDU0LjgwMjc4XSwgWy0xMjkuOTgsIDU1LjI4NV0sIFstMTMwLjAwNzc4LCA1NS45MTU4M10sIFstMTMxLjcwNzgxLCA1Ni41NTIxMl0sIFstMTMyLjczMDQyLCA1Ny42OTI4OV0sIFstMTMzLjM1NTU2LCA1OC40MTAyOF0sIFstMTM0LjI3MTExLCA1OC44NjExMV0sIFstMTM0Ljk0NSwgNTkuMjcwNTZdLCBbLTEzNS40NzU4MywgNTkuNzg3NzhdLCBbLTEzNi40Nzk3MiwgNTkuNDYzODldLCBbLTEzNy40NTI1LCA1OC45MDVdLCBbLTEzOC4zNDA4OSwgNTkuNTYyMTFdLCBbLTEzOS4wMzksIDYwXSwgWy0xNDAuMDEzLCA2MC4yNzY4Ml0sIFstMTQwLjk5Nzc4LCA2MC4zMDYzOV0sIFstMTQwLjk5MjUsIDY2LjAwMDAzXSwgWy0xNDAuOTg2LCA2OS43MTJdLCBbLTEzOS4xMjA1MiwgNjkuNDcxMDJdLCBbLTEzNy41NDYzNiwgNjguOTkwMDJdLCBbLTEzNi41MDM1OCwgNjguODk4MDRdLCBbLTEzNS42MjU3NiwgNjkuMzE1MTJdLCBbLTEzNC40MTQ2NCwgNjkuNjI3NDNdLCBbLTEzMi45MjkyNSwgNjkuNTA1MzRdLCBbLTEzMS40MzEzNiwgNjkuOTQ0NTFdLCBbLTEyOS43OTQ3MSwgNzAuMTkzNjldLCBbLTEyOS4xMDc3MywgNjkuNzc5MjddLCBbLTEyOC4zNjE1NiwgNzAuMDEyODZdLCBbLTEyOC4xMzgxNywgNzAuNDgzODRdLCBbLTEyNy40NDcxMiwgNzAuMzc3MjFdLCBbLTEyNS43NTYzMiwgNjkuNDgwNThdLCBbLTEyNC40MjQ4MywgNzAuMTU4NF0sIFstMTI0LjI4OTY4LCA2OS4zOTk2OV0sIFstMTIzLjA2MTA4LCA2OS41NjM3Ml0sIFstMTIyLjY4MzUsIDY5Ljg1NTUzXSwgWy0xMjEuNDcyMjYsIDY5Ljc5Nzc4XSwgWy0xMTkuOTQyODgsIDY5LjM3Nzg2XSwgWy0xMTcuNjAyNjgsIDY5LjAxMTI4XSwgWy0xMTYuMjI2NDMsIDY4Ljg0MTUxXSwgWy0xMTUuMjQ2OSwgNjguOTA1OTFdLCBbLTExMy44OTc5NCwgNjguMzk4OV0sIFstMTE1LjMwNDg5LCA2Ny45MDI2MV0sIFstMTEzLjQ5NzI3LCA2Ny42ODgxNV0sIFstMTEwLjc5OCwgNjcuODA2MTJdLCBbLTEwOS45NDYxOSwgNjcuOTgxMDRdLCBbLTEwOC44ODAyLCA2Ny4zODE0NF0sIFstMTA3Ljc5MjM5LCA2Ny44ODczNl0sIFstMTA4LjgxMjk5LCA2OC4zMTE2NF0sIFstMTA4LjE2NzIxLCA2OC42NTM5Ml0sIFstMTA2Ljk1LCA2OC43XSwgWy0xMDYuMTUsIDY4LjhdLCBbLTEwNS4zNDI4MiwgNjguNTYxMjJdLCBbLTEwNC4zMzc5MSwgNjguMDE4XSwgWy0xMDMuMjIxMTUsIDY4LjA5Nzc1XSwgWy0xMDEuNDU0MzMsIDY3LjY0Njg5XSwgWy05OS45MDE5NSwgNjcuODA1NjZdLCBbLTk4LjQ0MzIsIDY3Ljc4MTY1XSwgWy05OC41NTg2LCA2OC40MDM5NF0sIFstOTcuNjY5NDgsIDY4LjU3ODY0XSwgWy05Ni4xMTk5MSwgNjguMjM5MzldLCBbLTk2LjEyNTg4LCA2Ny4yOTMzOF0sIFstOTUuNDg5NDMsIDY4LjA5MDddLCBbLTk0LjY4NSwgNjguMDYzODNdLCBbLTk0LjIzMjgyLCA2OS4wNjkwM10sIFstOTUuMzA0MDgsIDY5LjY4NTcxXSwgWy05Ni40NzEzMSwgNzAuMDg5NzZdLCBbLTk2LjM5MTE1LCA3MS4xOTQ4Ml0sIFstOTUuMjA4OCwgNzEuOTIwNTNdLCBbLTkzLjg4OTk3LCA3MS43NjAxNV0sIFstOTIuODc4MTgsIDcxLjMxODY5XSwgWy05MS41MTk2NCwgNzAuMTkxMjldLCBbLTkyLjQwNjkyLCA2OS42OTk5N10sIFstOTAuNTQ3MSwgNjkuNDk3NjZdXV0sIFtbWy0xMTQuMTY3MTcsIDczLjEyMTQ1XSwgWy0xMTQuNjY2MzQsIDcyLjY1Mjc3XSwgWy0xMTIuNDQxMDIsIDcyLjk1NTRdLCBbLTExMS4wNTAzOSwgNzIuNDUwNF0sIFstMTA5LjkyMDM1LCA3Mi45NjExM10sIFstMTA5LjAwNjU0LCA3Mi42MzMzNV0sIFstMTA4LjE4ODM1LCA3MS42NTA4OV0sIFstMTA3LjY4NTk5LCA3Mi4wNjU0OF0sIFstMTA4LjM5NjM5LCA3My4wODk1M10sIFstMTA3LjUxNjQ1LCA3My4yMzU5OF0sIFstMTA2LjUyMjU5LCA3My4wNzYwMV0sIFstMTA1LjQwMjQ2LCA3Mi42NzI1OV0sIFstMTA0Ljc3NDg0LCA3MS42OTg0XSwgWy0xMDQuNDY0NzYsIDcwLjk5Mjk3XSwgWy0xMDIuNzg1MzcsIDcwLjQ5Nzc2XSwgWy0xMDAuOTgwNzgsIDcwLjAyNDMyXSwgWy0xMDEuMDg5MjksIDY5LjU4NDQ3XSwgWy0xMDIuNzMxMTYsIDY5LjUwNDAyXSwgWy0xMDIuMDkzMjksIDY5LjExOTYyXSwgWy0xMDIuNDMwMjQsIDY4Ljc1MjgyXSwgWy0xMDQuMjQsIDY4LjkxXSwgWy0xMDUuOTYsIDY5LjE4XSwgWy0xMDcuMTIyNTQsIDY5LjExOTIyXSwgWy0xMDksIDY4Ljc4XSwgWy0xMTEuNTM0MTQ5LCA2OC42MzAwNTldLCBbLTExMy4zMTMyLCA2OC41MzU1NF0sIFstMTEzLjg1NDk2LCA2OS4wMDc0NF0sIFstMTE1LjIyLCA2OS4yOF0sIFstMTE2LjEwNzk0LCA2OS4xNjgyMV0sIFstMTE3LjM0LCA2OS45Nl0sIFstMTE2LjY3NDczLCA3MC4wNjY1NV0sIFstMTE1LjEzMTEyLCA3MC4yMzczXSwgWy0xMTMuNzIxNDEsIDcwLjE5MjM3XSwgWy0xMTIuNDE2MSwgNzAuMzY2MzhdLCBbLTExNC4zNSwgNzAuNl0sIFstMTE2LjQ4Njg0LCA3MC41MjA0NV0sIFstMTE3LjkwNDgsIDcwLjU0MDU2XSwgWy0xMTguNDMyMzgsIDcwLjkwOTJdLCBbLTExNi4xMTMxMSwgNzEuMzA5MThdLCBbLTExNy42NTU2OCwgNzEuMjk1Ml0sIFstMTE5LjQwMTk5LCA3MS41NTg1OV0sIFstMTE4LjU2MjY3LCA3Mi4zMDc4NV0sIFstMTE3Ljg2NjQyLCA3Mi43MDU5NF0sIFstMTE1LjE4OTA5LCA3My4zMTQ1OV0sIFstMTE0LjE2NzE3LCA3My4xMjE0NV1dXSwgW1tbLTEwNC41LCA3My40Ml0sIFstMTA1LjM4LCA3Mi43Nl0sIFstMTA2Ljk0LCA3My40Nl0sIFstMTA2LjYsIDczLjZdLCBbLTEwNS4yNiwgNzMuNjRdLCBbLTEwNC41LCA3My40Ml1dXSwgW1tbLTc2LjM0LCA3My4xMDI2ODVdLCBbLTc2LjI1MTQwNCwgNzIuODI2Mzg1XSwgWy03Ny4zMTQ0MzgsIDcyLjg1NTU0NV0sIFstNzguMzkxNjcsIDcyLjg3NjY1Nl0sIFstNzkuNDg2MjUyLCA3Mi43NDIyMDNdLCBbLTc5Ljc3NTgzMywgNzIuODAyOTAyXSwgWy04MC44NzYwOTksIDczLjMzMzE4M10sIFstODAuODMzODg1LCA3My42OTMxODRdLCBbLTgwLjM1MzA1OCwgNzMuNzU5NzJdLCBbLTc4LjA2NDQzOCwgNzMuNjUxOTMyXSwgWy03Ni4zNCwgNzMuMTAyNjg1XV1dLCBbW1stODYuNTYyMTc5LCA3My4xNTc0NDddLCBbLTg1Ljc3NDM3MSwgNzIuNTM0MTI2XSwgWy04NC44NTAxMTIsIDczLjM0MDI3OF0sIFstODIuMzE1NTksIDczLjc1MDk1MV0sIFstODAuNjAwMDg4LCA3Mi43MTY1NDRdLCBbLTgwLjc0ODk0MiwgNzIuMDYxOTA3XSwgWy03OC43NzA2MzksIDcyLjM1MjE3M10sIFstNzcuODI0NjI0LCA3Mi43NDk2MTddLCBbLTc1LjYwNTg0NSwgNzIuMjQzNjc4XSwgWy03NC4yMjg2MTYsIDcxLjc2NzE0NF0sIFstNzQuMDk5MTQxLCA3MS4zMzA4NF0sIFstNzIuMjQyMjI2LCA3MS41NTY5MjVdLCBbLTcxLjIwMDAxNSwgNzAuOTIwMDEzXSwgWy02OC43ODYwNTQsIDcwLjUyNTAyNF0sIFstNjcuOTE0OTcsIDcwLjEyMTk0OF0sIFstNjYuOTY5MDMzLCA2OS4xODYwODddLCBbLTY4LjgwNTEyMywgNjguNzIwMTk4XSwgWy02Ni40NDk4NjYsIDY4LjA2NzE2M10sIFstNjQuODYyMzE0LCA2Ny44NDc1MzldLCBbLTYzLjQyNDkzNCwgNjYuOTI4NDczXSwgWy02MS44NTE5ODEsIDY2Ljg2MjEyMV0sIFstNjIuMTYzMTc3LCA2Ni4xNjAyNTFdLCBbLTYzLjkxODQ0NCwgNjQuOTk4NjY5XSwgWy02NS4xNDg4NiwgNjUuNDI2MDMzXSwgWy02Ni43MjEyMTksIDY2LjM4ODA0MV0sIFstNjguMDE1MDE2LCA2Ni4yNjI3MjZdLCBbLTY4LjE0MTI4NywgNjUuNjg5Nzg5XSwgWy02Ny4wODk2NDYsIDY1LjEwODQ1NV0sIFstNjUuNzMyMDgsIDY0LjY0ODQwNl0sIFstNjUuMzIwMTY4LCA2NC4zODI3MzddLCBbLTY0LjY2OTQwNiwgNjMuMzkyOTI3XSwgWy02NS4wMTM4MDQsIDYyLjY3NDE4NV0sIFstNjYuMjc1MDQ1LCA2Mi45NDUwOTldLCBbLTY4Ljc4MzE4NiwgNjMuNzQ1NjddLCBbLTY3LjM2OTY4MSwgNjIuODgzOTY2XSwgWy02Ni4zMjgyOTcsIDYyLjI4MDA3NV0sIFstNjYuMTY1NTY4LCA2MS45MzA4OTddLCBbLTY4Ljg3NzM2NywgNjIuMzMwMTQ5XSwgWy03MS4wMjM0MzcsIDYyLjkxMDcwOF0sIFstNzIuMjM1Mzc5LCA2My4zOTc4MzZdLCBbLTcxLjg4NjI3OCwgNjMuNjc5OTg5XSwgWy03My4zNzgzMDYsIDY0LjE5Mzk2M10sIFstNzQuODM0NDE5LCA2NC42NzkwNzZdLCBbLTc0LjgxODUwMywgNjQuMzg5MDkzXSwgWy03Ny43MDk5OCwgNjQuMjI5NTQyXSwgWy03OC41NTU5NDksIDY0LjU3MjkwNl0sIFstNzcuODk3MjgxLCA2NS4zMDkxOTJdLCBbLTc2LjAxODI3NCwgNjUuMzI2OTY5XSwgWy03My45NTk3OTUsIDY1LjQ1NDc2NV0sIFstNzQuMjkzODgzLCA2NS44MTE3NzFdLCBbLTczLjk0NDkxMiwgNjYuMzEwNTc4XSwgWy03Mi42NTExNjcsIDY3LjI4NDU3Nl0sIFstNzIuOTI2MDYsIDY3LjcyNjkyNl0sIFstNzMuMzExNjE4LCA2OC4wNjk0MzddLCBbLTc0Ljg0MzMwNywgNjguNTU0NjI3XSwgWy03Ni44NjkxMDEsIDY4Ljg5NDczNl0sIFstNzYuMjI4NjQ5LCA2OS4xNDc3NjldLCBbLTc3LjI4NzM3LCA2OS43Njk1NF0sIFstNzguMTY4NjM0LCA2OS44MjY0ODhdLCBbLTc4Ljk1NzI0MiwgNzAuMTY2ODhdLCBbLTc5LjQ5MjQ1NSwgNjkuODcxODA4XSwgWy04MS4zMDU0NzEsIDY5Ljc0MzE4NV0sIFstODQuOTQ0NzA2LCA2OS45NjY2MzRdLCBbLTg3LjA2MDAwMywgNzAuMjYwMDAxXSwgWy04OC42ODE3MTMsIDcwLjQxMDc0MV0sIFstODkuNTEzNDIsIDcwLjc2MjAzOF0sIFstODguNDY3NzIxLCA3MS4yMTgxODZdLCBbLTg5Ljg4ODE1MSwgNzEuMjIyNTUyXSwgWy05MC4yMDUxNiwgNzIuMjM1MDc0XSwgWy04OS40MzY1NzcsIDczLjEyOTQ2NF0sIFstODguNDA4MjQyLCA3My41Mzc4ODldLCBbLTg1LjgyNjE1MSwgNzMuODAzODE2XSwgWy04Ni41NjIxNzksIDczLjE1NzQ0N11dXSwgW1tbLTEwMC4zNTY0MiwgNzMuODQzODldLCBbLTk5LjE2Mzg3LCA3My42MzMzOV0sIFstOTcuMzgsIDczLjc2XSwgWy05Ny4xMiwgNzMuNDddLCBbLTk4LjA1MzU5LCA3Mi45OTA1Ml0sIFstOTYuNTQsIDcyLjU2XSwgWy05Ni43MiwgNzEuNjZdLCBbLTk4LjM1OTY2LCA3MS4yNzI4NV0sIFstOTkuMzIyODYsIDcxLjM1NjM5XSwgWy0xMDAuMDE0ODIsIDcxLjczODI3XSwgWy0xMDIuNSwgNzIuNTFdLCBbLTEwMi40OCwgNzIuODNdLCBbLTEwMC40MzgzNiwgNzIuNzA1ODhdLCBbLTEwMS41NCwgNzMuMzZdLCBbLTEwMC4zNTY0MiwgNzMuODQzODldXV0sIFtbWy05My4xOTYyOTYsIDcyLjc3MTk5Ml0sIFstOTQuMjY5MDQ3LCA3Mi4wMjQ1OTZdLCBbLTk1LjQwOTg1NiwgNzIuMDYxODgxXSwgWy05Ni4wMzM3NDUsIDcyLjk0MDI3N10sIFstOTYuMDE4MjY4LCA3My40Mzc0M10sIFstOTUuNDk1NzkzLCA3My44NjI0MTddLCBbLTk0LjUwMzY1OCwgNzQuMTM0OTA3XSwgWy05Mi40MjAwMTIsIDc0LjEwMDAyNV0sIFstOTAuNTA5NzkzLCA3My44NTY3MzJdLCBbLTkyLjAwMzk2NSwgNzIuOTY2MjQ0XSwgWy05My4xOTYyOTYsIDcyLjc3MTk5Ml1dXSwgW1tbLTEyMC40NiwgNzEuMzgzNjAyXSwgWy0xMjMuMDkyMTksIDcwLjkwMTY0XSwgWy0xMjMuNjIsIDcxLjM0XSwgWy0xMjUuOTI4OTQ5LCA3MS44Njg2ODhdLCBbLTEyNS41LCA3Mi4yOTIyNjFdLCBbLTEyNC44MDcyOSwgNzMuMDIyNTZdLCBbLTEyMy45NCwgNzMuNjhdLCBbLTEyNC45MTc3NSwgNzQuMjkyNzVdLCBbLTEyMS41Mzc4OCwgNzQuNDQ4OTNdLCBbLTEyMC4xMDk3OCwgNzQuMjQxMzVdLCBbLTExNy41NTU2NCwgNzQuMTg1NzddLCBbLTExNi41ODQ0MiwgNzMuODk2MDddLCBbLTExNS41MTA4MSwgNzMuNDc1MTldLCBbLTExNi43Njc5NCwgNzMuMjIyOTJdLCBbLTExOS4yMiwgNzIuNTJdLCBbLTEyMC40NiwgNzEuODJdLCBbLTEyMC40NiwgNzEuMzgzNjAyXV1dLCBbW1stOTMuNjEyNzU2LCA3NC45Nzk5OTddLCBbLTk0LjE1NjkwOSwgNzQuNTkyMzQ3XSwgWy05NS42MDg2ODEsIDc0LjY2Njg2NF0sIFstOTYuODIwOTMyLCA3NC45Mjc2MjNdLCBbLTk2LjI4ODU4NywgNzUuMzc3ODI4XSwgWy05NC44NTA4MiwgNzUuNjQ3MjE4XSwgWy05My45Nzc3NDcsIDc1LjI5NjQ5XSwgWy05My42MTI3NTYsIDc0Ljk3OTk5N11dXSwgW1tbLTk4LjUsIDc2LjcyXSwgWy05Ny43MzU1ODUsIDc2LjI1NjU2XSwgWy05Ny43MDQ0MTUsIDc1Ljc0MzQ0XSwgWy05OC4xNiwgNzVdLCBbLTk5LjgwODc0LCA3NC44OTc0NF0sIFstMTAwLjg4MzY2LCA3NS4wNTczNl0sIFstMTAwLjg2MjkyLCA3NS42NDA3NV0sIFstMTAyLjUwMjA5LCA3NS41NjM4XSwgWy0xMDIuNTY1NTIsIDc2LjMzNjZdLCBbLTEwMS40ODk3MywgNzYuMzA1MzddLCBbLTk5Ljk4MzQ5LCA3Ni42NDYzNF0sIFstOTguNTc2OTksIDc2LjU4ODU5XSwgWy05OC41LCA3Ni43Ml1dXSwgW1tbLTEwOC4yMTE0MSwgNzYuMjAxNjhdLCBbLTEwNy44MTk0MywgNzUuODQ1NTJdLCBbLTEwNi45Mjg5MywgNzYuMDEyODJdLCBbLTEwNS44ODEsIDc1Ljk2OTRdLCBbLTEwNS43MDQ5OCwgNzUuNDc5NTFdLCBbLTEwNi4zMTM0NywgNzUuMDA1MjddLCBbLTEwOS43LCA3NC44NV0sIFstMTEyLjIyMzA3LCA3NC40MTY5Nl0sIFstMTEzLjc0MzgxLCA3NC4zOTQyN10sIFstMTEzLjg3MTM1LCA3NC43MjAyOV0sIFstMTExLjc5NDIxLCA3NS4xNjI1XSwgWy0xMTYuMzEyMjEsIDc1LjA0MzQzXSwgWy0xMTcuNzEwNCwgNzUuMjIyMl0sIFstMTE2LjM0NjAyLCA3Ni4xOTkwM10sIFstMTE1LjQwNDg3LCA3Ni40Nzg4N10sIFstMTEyLjU5MDU2LCA3Ni4xNDEzNF0sIFstMTEwLjgxNDIyLCA3NS41NDkxOV0sIFstMTA5LjA2NzEsIDc1LjQ3MzIxXSwgWy0xMTAuNDk3MjYsIDc2LjQyOTgyXSwgWy0xMDkuNTgxMSwgNzYuNzk0MTddLCBbLTEwOC41NDg1OSwgNzYuNjc4MzJdLCBbLTEwOC4yMTE0MSwgNzYuMjAxNjhdXV0sIFtbWy05NC42ODQwODYsIDc3LjA5Nzg3OF0sIFstOTMuNTczOTIxLCA3Ni43NzYyOTZdLCBbLTkxLjYwNTAyMywgNzYuNzc4NTE4XSwgWy05MC43NDE4NDYsIDc2LjQ0OTU5N10sIFstOTAuOTY5NjYxLCA3Ni4wNzQwMTNdLCBbLTg5LjgyMjIzOCwgNzUuODQ3Nzc0XSwgWy04OS4xODcwODMsIDc1LjYxMDE2Nl0sIFstODcuODM4Mjc2LCA3NS41NjYxODldLCBbLTg2LjM3OTE5MiwgNzUuNDgyNDIxXSwgWy04NC43ODk2MjUsIDc1LjY5OTIwNF0sIFstODIuNzUzNDQ1LCA3NS43ODQzMTVdLCBbLTgxLjEyODUzMSwgNzUuNzEzOTgzXSwgWy04MC4wNTc1MTEsIDc1LjMzNjg0OV0sIFstNzkuODMzOTMzLCA3NC45MjMxMjddLCBbLTgwLjQ1Nzc3MSwgNzQuNjU3MzA0XSwgWy04MS45NDg4NDMsIDc0LjQ0MjQ1OV0sIFstODMuMjI4ODk0LCA3NC41NjQwMjhdLCBbLTg2LjA5NzQ1MiwgNzQuNDEwMDMyXSwgWy04OC4xNTAzNSwgNzQuMzkyMzA3XSwgWy04OS43NjQ3MjIsIDc0LjUxNTU1NV0sIFstOTIuNDIyNDQxLCA3NC44Mzc3NThdLCBbLTkyLjc2ODI4NSwgNzUuMzg2ODJdLCBbLTkyLjg4OTkwNiwgNzUuODgyNjU1XSwgWy05My44OTM4MjQsIDc2LjMxOTI0NF0sIFstOTUuOTYyNDU3LCA3Ni40NDEzODFdLCBbLTk3LjEyMTM3OSwgNzYuNzUxMDc4XSwgWy05Ni43NDUxMjMsIDc3LjE2MTM4OV0sIFstOTQuNjg0MDg2LCA3Ny4wOTc4NzhdXV0sIFtbWy0xMTYuMTk4NTg3LCA3Ny42NDUyODddLCBbLTExNi4zMzU4MTMsIDc2Ljg3Njk2Ml0sIFstMTE3LjEwNjA1MSwgNzYuNTMwMDMyXSwgWy0xMTguMDQwNDEyLCA3Ni40ODExNzJdLCBbLTExOS44OTkzMTgsIDc2LjA1MzIxM10sIFstMTIxLjQ5OTk5NSwgNzUuOTAwMDE5XSwgWy0xMjIuODU0OTI0LCA3Ni4xMTY1NDNdLCBbLTEyMi44NTQ5MjUsIDc2LjExNjU0M10sIFstMTIxLjE1NzUzNSwgNzYuODY0NTA4XSwgWy0xMTkuMTAzOTM5LCA3Ny41MTIyMl0sIFstMTE3LjU3MDEzMSwgNzcuNDk4MzE5XSwgWy0xMTYuMTk4NTg3LCA3Ny42NDUyODddXV0sIFtbWy05My44NDAwMDMsIDc3LjUxOTk5N10sIFstOTQuMjk1NjA4LCA3Ny40OTEzNDNdLCBbLTk2LjE2OTY1NCwgNzcuNTU1MTExXSwgWy05Ni40MzYzMDQsIDc3LjgzNDYyOV0sIFstOTQuNDIyNTc3LCA3Ny44MjAwMDVdLCBbLTkzLjcyMDY1NiwgNzcuNjM0MzMxXSwgWy05My44NDAwMDMsIDc3LjUxOTk5N11dXSwgW1tbLTExMC4xODY5MzgsIDc3LjY5NzAxNV0sIFstMTEyLjA1MTE5MSwgNzcuNDA5MjI5XSwgWy0xMTMuNTM0Mjc5LCA3Ny43MzIyMDddLCBbLTExMi43MjQ1ODcsIDc4LjA1MTA1XSwgWy0xMTEuMjY0NDQzLCA3OC4xNTI5NTZdLCBbLTEwOS44NTQ0NTIsIDc3Ljk5NjMyNV0sIFstMTEwLjE4NjkzOCwgNzcuNjk3MDE1XV1dLCBbW1stMTA5LjY2MzE0NiwgNzguNjAxOTczXSwgWy0xMTAuODgxMzE0LCA3OC40MDY5Ml0sIFstMTEyLjU0MjA5MSwgNzguNDA3OTAyXSwgWy0xMTIuNTI1ODkxLCA3OC41NTA1NTVdLCBbLTExMS41MDAwMSwgNzguODQ5OTk0XSwgWy0xMTAuOTYzNjYxLCA3OC44MDQ0NDFdLCBbLTEwOS42NjMxNDYsIDc4LjYwMTk3M11dXSwgW1tbLTk1LjgzMDI5NSwgNzguMDU2OTQxXSwgWy05Ny4zMDk4NDMsIDc3Ljg1MDU5N10sIFstOTguMTI0Mjg5LCA3OC4wODI4NTddLCBbLTk4LjU1Mjg2OCwgNzguNDU4MTA1XSwgWy05OC42MzE5ODQsIDc4Ljg3MTkzXSwgWy05Ny4zMzcyMzEsIDc4LjgzMTk4NF0sIFstOTYuNzU0Mzk5LCA3OC43NjU4MTNdLCBbLTk1LjU1OTI3OCwgNzguNDE4MzE1XSwgWy05NS44MzAyOTUsIDc4LjA1Njk0MV1dXSwgW1tbLTEwMC4wNjAxOTIsIDc4LjMyNDc1NF0sIFstOTkuNjcwOTM5LCA3Ny45MDc1NDVdLCBbLTEwMS4zMDM5NCwgNzguMDE4OTg1XSwgWy0xMDIuOTQ5ODA5LCA3OC4zNDMyMjldLCBbLTEwNS4xNzYxMzMsIDc4LjM4MDMzMl0sIFstMTA0LjIxMDQyOSwgNzguNjc3NDJdLCBbLTEwNS40MTk1OCwgNzguOTE4MzM2XSwgWy0xMDUuNDkyMjg5LCA3OS4zMDE1OTRdLCBbLTEwMy41MjkyODIsIDc5LjE2NTM0OV0sIFstMTAwLjgyNTE1OCwgNzguODAwNDYyXSwgWy0xMDAuMDYwMTkyLCA3OC4zMjQ3NTRdXV0sIFtbWy04Ny4wMiwgNzkuNjZdLCBbLTg1LjgxNDM1LCA3OS4zMzY5XSwgWy04Ny4xODc1NiwgNzkuMDM5M10sIFstODkuMDM1MzUsIDc4LjI4NzIzXSwgWy05MC44MDQzNiwgNzguMjE1MzNdLCBbLTkyLjg3NjY5LCA3OC4zNDMzM10sIFstOTMuOTUxMTYsIDc4Ljc1MDk5XSwgWy05My45MzU3NCwgNzkuMTEzNzNdLCBbLTkzLjE0NTI0LCA3OS4zODAxXSwgWy05NC45NzQsIDc5LjM3MjQ4XSwgWy05Ni4wNzYxNCwgNzkuNzA1MDJdLCBbLTk2LjcwOTcyLCA4MC4xNTc3N10sIFstOTYuMDE2NDQsIDgwLjYwMjMzXSwgWy05NS4zMjM0NSwgODAuOTA3MjldLCBbLTk0LjI5ODQzLCA4MC45NzcyN10sIFstOTQuNzM1NDIsIDgxLjIwNjQ2XSwgWy05Mi40MDk4NCwgODEuMjU3MzldLCBbLTkxLjEzMjg5LCA4MC43MjM0NV0sIFstODkuNDUsIDgwLjUwOTMyMl0sIFstODcuODEsIDgwLjMyXSwgWy04Ny4wMiwgNzkuNjZdXV0sIFtbWy02OC41LCA4My4xMDYzMjJdLCBbLTY1LjgyNzM1LCA4My4wMjgwMV0sIFstNjMuNjgsIDgyLjldLCBbLTYxLjg1LCA4Mi42Mjg2XSwgWy02MS44OTM4OCwgODIuMzYxNjVdLCBbLTY0LjMzNCwgODEuOTI3NzVdLCBbLTY2Ljc1MzQyLCA4MS43MjUyN10sIFstNjcuNjU3NTUsIDgxLjUwMTQxXSwgWy02NS40ODAzMSwgODEuNTA2NTddLCBbLTY3Ljg0LCA4MC45XSwgWy02OS40Njk3LCA4MC42MTY4M10sIFstNzEuMTgsIDc5LjhdLCBbLTczLjI0MjgsIDc5LjYzNDE1XSwgWy03My44OCwgNzkuNDMwMTYyXSwgWy03Ni45MDc3MywgNzkuMzIzMDldLCBbLTc1LjUyOTI0LCA3OS4xOTc2Nl0sIFstNzYuMjIwNDYsIDc5LjAxOTA3XSwgWy03NS4zOTM0NSwgNzguNTI1ODFdLCBbLTc2LjM0MzU0LCA3OC4xODI5Nl0sIFstNzcuODg4NTEsIDc3Ljg5OTkxXSwgWy03OC4zNjI2OSwgNzcuNTA4NTldLCBbLTc5Ljc1OTUxLCA3Ny4yMDk2OF0sIFstNzkuNjE5NjUsIDc2Ljk4MzM2XSwgWy03Ny45MTA4OSwgNzcuMDIyMDQ1XSwgWy03Ny44ODkxMSwgNzYuNzc3OTU1XSwgWy04MC41NjEyNSwgNzYuMTc4MTJdLCBbLTgzLjE3NDM5LCA3Ni40NTQwM10sIFstODYuMTExODQsIDc2LjI5OTAxXSwgWy04Ny42LCA3Ni40Ml0sIFstODkuNDkwNjgsIDc2LjQ3MjM5XSwgWy04OS42MTYxLCA3Ni45NTIxM10sIFstODcuNzY3MzksIDc3LjE3ODMzXSwgWy04OC4yNiwgNzcuOV0sIFstODcuNjUsIDc3Ljk3MDIyMl0sIFstODQuOTc2MzQsIDc3LjUzODczXSwgWy04Ni4zNCwgNzguMThdLCBbLTg3Ljk2MTkyLCA3OC4zNzE4MV0sIFstODcuMTUxOTgsIDc4Ljc1ODY3XSwgWy04NS4zNzg2OCwgNzguOTk2OV0sIFstODUuMDk0OTUsIDc5LjM0NTQzXSwgWy04Ni41MDczNCwgNzkuNzM2MjRdLCBbLTg2LjkzMTc5LCA4MC4yNTE0NV0sIFstODQuMTk4NDQsIDgwLjIwODM2XSwgWy04My40MDg2OTYsIDgwLjFdLCBbLTgxLjg0ODIzLCA4MC40NjQ0Ml0sIFstODQuMSwgODAuNThdLCBbLTg3LjU5ODk1LCA4MC41MTYyN10sIFstODkuMzY2NjMsIDgwLjg1NTY5XSwgWy05MC4yLCA4MS4yNl0sIFstOTEuMzY3ODYsIDgxLjU1MzFdLCBbLTkxLjU4NzAyLCA4MS44OTQyOV0sIFstOTAuMSwgODIuMDg1XSwgWy04OC45MzIyNywgODIuMTE3NTFdLCBbLTg2Ljk3MDI0LCA4Mi4yNzk2MV0sIFstODUuNSwgODIuNjUyMjczXSwgWy04NC4yNjAwMDUsIDgyLjZdLCBbLTgzLjE4LCA4Mi4zMl0sIFstODIuNDIsIDgyLjg2XSwgWy04MS4xLCA4My4wMl0sIFstNzkuMzA2NjQsIDgzLjEzMDU2XSwgWy03Ni4yNSwgODMuMTcyMDU5XSwgWy03NS43MTg3OCwgODMuMDY0MDRdLCBbLTcyLjgzMTUzLCA4My4yMzMyNF0sIFstNzAuNjY1NzY1LCA4My4xNjk3ODFdLCBbLTY4LjUsIDgzLjEwNjMyMl1dXV0sICJ0eXBlIjogIk11bHRpUG9seWdvbiJ9LCAiaWQiOiAiQ0FOIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDYW5hZGEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzkuNTk0MjI2LCA0Ny41MjUwNThdLCBbOS42MzI5MzIsIDQ3LjM0NzYwMV0sIFs5LjQ3OTk3LCA0Ny4xMDI4MV0sIFs5LjkzMjQ0OCwgNDYuOTIwNzI4XSwgWzEwLjQ0MjcwMSwgNDYuODkzNTQ2XSwgWzEwLjM2MzM3OCwgNDYuNDgzNTcxXSwgWzkuOTIyODM3LCA0Ni4zMTQ4OTldLCBbOS4xODI4ODIsIDQ2LjQ0MDIxNV0sIFs4Ljk2NjMwNiwgNDYuMDM2OTMyXSwgWzguNDg5OTUyLCA0Ni4wMDUxNTFdLCBbOC4zMTY2MywgNDYuMTYzNjQyXSwgWzcuNzU1OTkyLCA0NS44MjQ0OV0sIFs3LjI3Mzg1MSwgNDUuNzc2OTQ4XSwgWzYuODQzNTkzLCA0NS45OTExNDddLCBbNi41MDAxLCA0Ni40Mjk2NzNdLCBbNi4wMjI2MDksIDQ2LjI3Mjk5XSwgWzYuMDM3Mzg5LCA0Ni43MjU3NzldLCBbNi43Njg3MTQsIDQ3LjI4NzcwOF0sIFs2LjczNjU3MSwgNDcuNTQxODAxXSwgWzcuMTkyMjAyLCA0Ny40NDk3NjZdLCBbNy40NjY3NTksIDQ3LjYyMDU4Ml0sIFs4LjMxNzMwMSwgNDcuNjEzNThdLCBbOC41MjI2MTIsIDQ3LjgzMDgyOF0sIFs5LjU5NDIyNiwgNDcuNTI1MDU4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDSEUiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIlN3aXR6ZXJsYW5kIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbLTY4LjYzNDAxLCAtNTIuNjM2MzddLCBbLTY4LjYzMzM1LCAtNTQuODY5NV0sIFstNjcuNTYyNDQsIC01NC44NzAwMV0sIFstNjYuOTU5OTIsIC01NC44OTY4MV0sIFstNjcuMjkxMDMsIC01NS4zMDEyNF0sIFstNjguMTQ4NjMsIC01NS42MTE4M10sIFstNjguNjM5OTkxLCAtNTUuNTgwMDE4XSwgWy02OS4yMzIxLCAtNTUuNDk5MDZdLCBbLTY5Ljk1ODA5LCAtNTUuMTk4NDNdLCBbLTcxLjAwNTY4LCAtNTUuMDUzODNdLCBbLTcyLjI2MzksIC01NC40OTUxNF0sIFstNzMuMjg1MiwgLTUzLjk1NzUyXSwgWy03NC42NjI1MywgLTUyLjgzNzQ5XSwgWy03My44MzgxLCAtNTMuMDQ3NDNdLCBbLTcyLjQzNDE4LCAtNTMuNzE1NF0sIFstNzEuMTA3NzMsIC01NC4wNzQzM10sIFstNzAuNTkxNzgsIC01My42MTU4M10sIFstNzAuMjY3NDgsIC01Mi45MzEyM10sIFstNjkuMzQ1NjUsIC01Mi41MTgzXSwgWy02OC42MzQwMSwgLTUyLjYzNjM3XV1dLCBbW1stNjguMjE5OTEzLCAtMjEuNDk0MzQ3XSwgWy02Ny44MjgxOCwgLTIyLjg3MjkxOV0sIFstNjcuMTA2Njc0LCAtMjIuNzM1OTI1XSwgWy02Ni45ODUyMzQsIC0yMi45ODYzNDldLCBbLTY3LjMyODQ0MywgLTI0LjAyNTMwM10sIFstNjguNDE3NjUzLCAtMjQuNTE4NTU1XSwgWy02OC4zODYwMDEsIC0yNi4xODUwMTZdLCBbLTY4LjU5NDgsIC0yNi41MDY5MDldLCBbLTY4LjI5NTU0MiwgLTI2Ljg5OTM0XSwgWy02OS4wMDEyMzUsIC0yNy41MjEyMTRdLCBbLTY5LjY1NjEzLCAtMjguNDU5MTQxXSwgWy03MC4wMTM1NSwgLTI5LjM2NzkyM10sIFstNjkuOTE5MDA4LCAtMzAuMzM2MzM5XSwgWy03MC41MzUwNjksIC0zMS4zNjUwMV0sIFstNzAuMDc0Mzk5LCAtMzMuMDkxMjFdLCBbLTY5LjgxNDc3NywgLTMzLjI3Mzg4Nl0sIFstNjkuODE3MzA5LCAtMzQuMTkzNTcxXSwgWy03MC4zODgwNDksIC0zNS4xNjk2ODhdLCBbLTcwLjM2NDc2OSwgLTM2LjAwNTA4OV0sIFstNzEuMTIxODgxLCAtMzYuNjU4MTI0XSwgWy03MS4xMTg2MjUsIC0zNy41NzY4MjddLCBbLTcwLjgxNDY2NCwgLTM4LjU1Mjk5NV0sIFstNzEuNDEzNTE3LCAtMzguOTE2MDIyXSwgWy03MS42ODA3NjEsIC0zOS44MDgxNjRdLCBbLTcxLjkxNTczNCwgLTQwLjgzMjMzOV0sIFstNzEuNzQ2ODA0LCAtNDIuMDUxMzg2XSwgWy03Mi4xNDg4OTgsIC00Mi4yNTQ4ODhdLCBbLTcxLjkxNTQyNCwgLTQzLjQwODU2NV0sIFstNzEuNDY0MDU2LCAtNDMuNzg3NjExXSwgWy03MS43OTM2MjMsIC00NC4yMDcxNzJdLCBbLTcxLjMyOTgwMSwgLTQ0LjQwNzUyMl0sIFstNzEuMjIyNzc5LCAtNDQuNzg0MjQzXSwgWy03MS42NTkzMTYsIC00NC45NzM2ODldLCBbLTcxLjU1MjAwOSwgLTQ1LjU2MDczM10sIFstNzEuOTE3MjU4LCAtNDYuODg0ODM4XSwgWy03Mi40NDczNTUsIC00Ny43Mzg1MzNdLCBbLTcyLjMzMTE2MSwgLTQ4LjI0NDIzOF0sIFstNzIuNjQ4MjQ3LCAtNDguODc4NjE4XSwgWy03My40MTU0MzYsIC00OS4zMTg0MzZdLCBbLTczLjMyODA1MSwgLTUwLjM3ODc4NV0sIFstNzIuOTc1NzQ3LCAtNTAuNzQxNDVdLCBbLTcyLjMwOTk3NCwgLTUwLjY3NzAxXSwgWy03Mi4zMjk0MDQsIC01MS40MjU5NTZdLCBbLTcxLjkxNDgwNCwgLTUyLjAwOTAyMl0sIFstNjkuNDk4MzYyLCAtNTIuMTQyNzYxXSwgWy02OC41NzE1NDUsIC01Mi4yOTk0NDRdLCBbLTY5LjQ2MTI4NCwgLTUyLjI5MTk1MV0sIFstNjkuOTQyNzgsIC01Mi41Mzc5MzFdLCBbLTcwLjg0NTEwMiwgLTUyLjg5OTIwMV0sIFstNzEuMDA2MzMyLCAtNTMuODMzMjUyXSwgWy03MS40Mjk3OTUsIC01My44NTY0NTVdLCBbLTcyLjU1Nzk0MywgLTUzLjUzMTQxXSwgWy03My43MDI3NTcsIC01Mi44MzUwNjldLCBbLTczLjcwMjc1NywgLTUyLjgzNTA3XSwgWy03NC45NDY3NjMsIC01Mi4yNjI3NTRdLCBbLTc1LjI2MDAyNiwgLTUxLjYyOTM1NV0sIFstNzQuOTc2NjMyLCAtNTEuMDQzMzk2XSwgWy03NS40Nzk3NTQsIC01MC4zNzgzNzJdLCBbLTc1LjYwODAxNSwgLTQ4LjY3Mzc3M10sIFstNzUuMTgyNzcsIC00Ny43MTE5MTldLCBbLTc0LjEyNjU4MSwgLTQ2LjkzOTI1M10sIFstNzUuNjQ0Mzk1LCAtNDYuNjQ3NjQzXSwgWy03NC42OTIxNTQsIC00NS43NjM5NzZdLCBbLTc0LjM1MTcwOSwgLTQ0LjEwMzA0NF0sIFstNzMuMjQwMzU2LCAtNDQuNDU0OTYxXSwgWy03Mi43MTc4MDQsIC00Mi4zODMzNTZdLCBbLTczLjM4ODksIC00Mi4xMTc1MzJdLCBbLTczLjcwMTMzNiwgLTQzLjM2NTc3Nl0sIFstNzQuMzMxOTQzLCAtNDMuMjI0OTU4XSwgWy03NC4wMTc5NTcsIC00MS43OTQ4MTNdLCBbLTczLjY3NzA5OSwgLTM5Ljk0MjIxM10sIFstNzMuMjE3NTkzLCAtMzkuMjU4Njg5XSwgWy03My41MDU1NTksIC0zOC4yODI4ODNdLCBbLTczLjU4ODA2MSwgLTM3LjE1NjI4NV0sIFstNzMuMTY2NzE3LCAtMzcuMTIzNzhdLCBbLTcyLjU1MzEzNywgLTM1LjUwODg0XSwgWy03MS44NjE3MzIsIC0zMy45MDkwOTNdLCBbLTcxLjQzODQ1LCAtMzIuNDE4ODk5XSwgWy03MS42Njg3MjEsIC0zMC45MjA2NDVdLCBbLTcxLjM3MDA4MywgLTMwLjA5NTY4Ml0sIFstNzEuNDg5ODk0LCAtMjguODYxNDQyXSwgWy03MC45MDUxMjQsIC0yNy42NDAzOF0sIFstNzAuNzI0OTU0LCAtMjUuNzA1OTI0XSwgWy03MC40MDM5NjYsIC0yMy42Mjg5OTddLCBbLTcwLjA5MTI0NiwgLTIxLjM5MzMxOV0sIFstNzAuMTY0NDIsIC0xOS43NTY0NjhdLCBbLTcwLjM3MjU3MiwgLTE4LjM0Nzk3NV0sIFstNjkuODU4NDQ0LCAtMTguMDkyNjk0XSwgWy02OS41OTA0MjQsIC0xNy41ODAwMTJdLCBbLTY5LjEwMDI0NywgLTE4LjI2MDEyNV0sIFstNjguOTY2ODE4LCAtMTguOTgxNjgzXSwgWy02OC40NDIyMjUsIC0xOS40MDUwNjhdLCBbLTY4Ljc1NzE2NywgLTIwLjM3MjY1OF0sIFstNjguMjE5OTEzLCAtMjEuNDk0MzQ3XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJDSEwiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkNoaWxlIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbMTEwLjMzOTE4OCwgMTguNjc4Mzk1XSwgWzEwOS40NzUyMSwgMTguMTk3NzAxXSwgWzEwOC42NTUyMDgsIDE4LjUwNzY4Ml0sIFsxMDguNjI2MjE3LCAxOS4zNjc4ODhdLCBbMTA5LjExOTA1NiwgMTkuODIxMDM5XSwgWzExMC4yMTE1OTksIDIwLjEwMTI1NF0sIFsxMTAuNzg2NTUxLCAyMC4wNzc1MzRdLCBbMTExLjAxMDA1MSwgMTkuNjk1OTNdLCBbMTEwLjU3MDY0NywgMTkuMjU1ODc5XSwgWzExMC4zMzkxODgsIDE4LjY3ODM5NV1dXSwgW1tbMTI3LjY1NzQwNywgNDkuNzYwMjddLCBbMTI5LjM5NzgxOCwgNDkuNDQwNl0sIFsxMzAuNTgyMjkzLCA0OC43Mjk2ODddLCBbMTMwLjk4NzI4MiwgNDcuNzkwMTMyXSwgWzEzMi41MDY2NzIsIDQ3Ljc4ODk3XSwgWzEzMy4zNzM1OTYsIDQ4LjE4MzQ0Ml0sIFsxMzUuMDI2MzExLCA0OC40NzgyM10sIFsxMzQuNTAwODE0LCA0Ny41Nzg0NF0sIFsxMzQuMTEyMzYyLCA0Ny4yMTI0NjddLCBbMTMzLjc2OTY0NCwgNDYuMTE2OTI3XSwgWzEzMy4wOTcxMjcsIDQ1LjE0NDA2Nl0sIFsxMzEuODgzNDU0LCA0NS4zMjExNjJdLCBbMTMxLjAyNTIxMiwgNDQuOTY3OTUzXSwgWzEzMS4yODg1NTUsIDQ0LjExMTUyXSwgWzEzMS4xNDQ2ODgsIDQyLjkyOTk5XSwgWzEzMC42MzM4NjYsIDQyLjkwMzAxNV0sIFsxMzAuNjQwMDE2LCA0Mi4zOTUwMDldLCBbMTI5Ljk5NDI2NywgNDIuOTg1Mzg3XSwgWzEyOS41OTY2NjksIDQyLjQyNDk4Ml0sIFsxMjguMDUyMjE1LCA0MS45OTQyODVdLCBbMTI4LjIwODQzMywgNDEuNDY2NzcyXSwgWzEyNy4zNDM3ODMsIDQxLjUwMzE1Ml0sIFsxMjYuODY5MDgzLCA0MS44MTY1NjldLCBbMTI2LjE4MjA0NSwgNDEuMTA3MzM2XSwgWzEyNS4wNzk5NDIsIDQwLjU2OTgyNF0sIFsxMjQuMjY1NjI1LCAzOS45Mjg0OTNdLCBbMTIyLjg2NzU3LCAzOS42Mzc3ODhdLCBbMTIyLjEzMTM4OCwgMzkuMTcwNDUyXSwgWzEyMS4wNTQ1NTQsIDM4Ljg5NzQ3MV0sIFsxMjEuNTg1OTk1LCAzOS4zNjA4NTRdLCBbMTIxLjM3Njc1NywgMzkuNzUwMjYxXSwgWzEyMi4xNjg1OTUsIDQwLjQyMjQ0M10sIFsxMjEuNjQwMzU5LCA0MC45NDYzOV0sIFsxMjAuNzY4NjI5LCA0MC41OTMzODhdLCBbMTE5LjYzOTYwMiwgMzkuODk4MDU2XSwgWzExOS4wMjM0NjQsIDM5LjI1MjMzM10sIFsxMTguMDQyNzQ5LCAzOS4yMDQyNzRdLCBbMTE3LjUzMjcwMiwgMzguNzM3NjM2XSwgWzExOC4wNTk2OTksIDM4LjA2MTQ3Nl0sIFsxMTguODc4MTUsIDM3Ljg5NzMyNV0sIFsxMTguOTExNjM2LCAzNy40NDg0NjRdLCBbMTE5LjcwMjgwMiwgMzcuMTU2Mzg5XSwgWzEyMC44MjM0NTcsIDM3Ljg3MDQyOF0sIFsxMjEuNzExMjU5LCAzNy40ODExMjNdLCBbMTIyLjM1NzkzNywgMzcuNDU0NDg0XSwgWzEyMi41MTk5OTUsIDM2LjkzMDYxNF0sIFsxMjEuMTA0MTY0LCAzNi42NTEzMjldLCBbMTIwLjYzNzAwOSwgMzYuMTExNDRdLCBbMTE5LjY2NDU2MiwgMzUuNjA5NzkxXSwgWzExOS4xNTEyMDgsIDM0LjkwOTg1OV0sIFsxMjAuMjI3NTI1LCAzNC4zNjAzMzJdLCBbMTIwLjYyMDM2OSwgMzMuMzc2NzIzXSwgWzEyMS4yMjkwMTQsIDMyLjQ2MDMxOV0sIFsxMjEuOTA4MTQ2LCAzMS42OTIxNzRdLCBbMTIxLjg5MTkxOSwgMzAuOTQ5MzUyXSwgWzEyMS4yNjQyNTcsIDMwLjY3NjI2N10sIFsxMjEuNTAzNTE5LCAzMC4xNDI5MTVdLCBbMTIyLjA5MjExNCwgMjkuODMyNTJdLCBbMTIxLjkzODQyOCwgMjkuMDE4MDIyXSwgWzEyMS42ODQ0MzksIDI4LjIyNTUxM10sIFsxMjEuMTI1NjYxLCAyOC4xMzU2NzNdLCBbMTIwLjM5NTQ3MywgMjcuMDUzMjA3XSwgWzExOS41ODU0OTcsIDI1Ljc0MDc4MV0sIFsxMTguNjU2ODcxLCAyNC41NDczOTFdLCBbMTE3LjI4MTYwNiwgMjMuNjI0NTAxXSwgWzExNS44OTA3MzUsIDIyLjc4Mjg3M10sIFsxMTQuNzYzODI3LCAyMi42NjgwNzRdLCBbMTE0LjE1MjU0NywgMjIuMjIzNzZdLCBbMTEzLjgwNjc4LCAyMi41NDgzNF0sIFsxMTMuMjQxMDc4LCAyMi4wNTEzNjddLCBbMTExLjg0MzU5MiwgMjEuNTUwNDk0XSwgWzExMC43ODU0NjYsIDIxLjM5NzE0NF0sIFsxMTAuNDQ0MDM5LCAyMC4zNDEwMzNdLCBbMTA5Ljg4OTg2MSwgMjAuMjgyNDU3XSwgWzEwOS42Mjc2NTUsIDIxLjAwODIyN10sIFsxMDkuODY0NDg4LCAyMS4zOTUwNTFdLCBbMTA4LjUyMjgxMywgMjEuNzE1MjEyXSwgWzEwOC4wNTAxOCwgMjEuNTUyMzhdLCBbMTA3LjA0MzQyLCAyMS44MTE4OTldLCBbMTA2LjU2NzI3MywgMjIuMjE4MjA1XSwgWzEwNi43MjU0MDMsIDIyLjc5NDI2OF0sIFsxMDUuODExMjQ3LCAyMi45NzY4OTJdLCBbMTA1LjMyOTIwOSwgMjMuMzUyMDYzXSwgWzEwNC40NzY4NTgsIDIyLjgxOTE1XSwgWzEwMy41MDQ1MTUsIDIyLjcwMzc1N10sIFsxMDIuNzA2OTkyLCAyMi43MDg3OTVdLCBbMTAyLjE3MDQzNiwgMjIuNDY0NzUzXSwgWzEwMS42NTIwMTgsIDIyLjMxODE5OV0sIFsxMDEuODAzMTIsIDIxLjE3NDM2N10sIFsxMDEuMjcwMDI2LCAyMS4yMDE2NTJdLCBbMTAxLjE4MDAwNSwgMjEuNDM2NTczXSwgWzEwMS4xNTAwMzMsIDIxLjg0OTk4NF0sIFsxMDAuNDE2NTM4LCAyMS41NTg4MzldLCBbOTkuOTgzNDg5LCAyMS43NDI5MzddLCBbOTkuMjQwODk5LCAyMi4xMTgzMTRdLCBbOTkuNTMxOTkyLCAyMi45NDkwMzldLCBbOTguODk4NzQ5LCAyMy4xNDI3MjJdLCBbOTguNjYwMjYyLCAyNC4wNjMyODZdLCBbOTcuNjA0NzIsIDIzLjg5NzQwNV0sIFs5Ny43MjQ2MDksIDI1LjA4MzYzN10sIFs5OC42NzE4MzgsIDI1LjkxODcwM10sIFs5OC43MTIwOTQsIDI2Ljc0MzUzNl0sIFs5OC42ODI2OSwgMjcuNTA4ODEyXSwgWzk4LjI0NjIzMSwgMjcuNzQ3MjIxXSwgWzk3LjkxMTk4OCwgMjguMzM1OTQ1XSwgWzk3LjMyNzExNCwgMjguMjYxNTgzXSwgWzk2LjI0ODgzMywgMjguNDExMDMxXSwgWzk2LjU4NjU5MSwgMjguODMwOThdLCBbOTYuMTE3Njc5LCAyOS40NTI4MDJdLCBbOTUuNDA0ODAyLCAyOS4wMzE3MTddLCBbOTQuNTY1OTksIDI5LjI3NzQzOF0sIFs5My40MTMzNDgsIDI4LjY0MDYyOV0sIFs5Mi41MDMxMTksIDI3Ljg5Njg3Nl0sIFs5MS42OTY2NTcsIDI3Ljc3MTc0Ml0sIFs5MS4yNTg4NTQsIDI4LjA0MDYxNF0sIFs5MC43MzA1MTQsIDI4LjA2NDk1NF0sIFs5MC4wMTU4MjksIDI4LjI5NjQzOV0sIFs4OS40NzU4MSwgMjguMDQyNzU5XSwgWzg4LjgxNDI0OCwgMjcuMjk5MzE2XSwgWzg4LjczMDMyNiwgMjguMDg2ODY1XSwgWzg4LjEyMDQ0MSwgMjcuODc2NTQyXSwgWzg2Ljk1NDUxNywgMjcuOTc0MjYyXSwgWzg1LjgyMzMyLCAyOC4yMDM1NzZdLCBbODUuMDExNjM4LCAyOC42NDI3NzRdLCBbODQuMjM0NTgsIDI4LjgzOTg5NF0sIFs4My44OTg5OTMsIDI5LjMyMDIyNl0sIFs4My4zMzcxMTUsIDI5LjQ2MzczMl0sIFs4Mi4zMjc1MTMsIDMwLjExNTI2OF0sIFs4MS41MjU4MDQsIDMwLjQyMjcxN10sIFs4MS4xMTEyNTYsIDMwLjE4MzQ4MV0sIFs3OS43MjEzNjcsIDMwLjg4MjcxNV0sIFs3OC43Mzg4OTQsIDMxLjUxNTkwNl0sIFs3OC40NTg0NDYsIDMyLjYxODE2NF0sIFs3OS4xNzYxMjksIDMyLjQ4Mzc4XSwgWzc5LjIwODg5MiwgMzIuOTk0Mzk1XSwgWzc4LjgxMTA4NiwgMzMuNTA2MTk4XSwgWzc4LjkxMjI2OSwgMzQuMzIxOTM2XSwgWzc3LjgzNzQ1MSwgMzUuNDk0MDFdLCBbNzYuMTkyODQ4LCAzNS44OTg0MDNdLCBbNzUuODk2ODk3LCAzNi42NjY4MDZdLCBbNzUuMTU4MDI4LCAzNy4xMzMwMzFdLCBbNzQuOTgwMDAyLCAzNy40MTk5OV0sIFs3NC44Mjk5ODYsIDM3Ljk5MDAwN10sIFs3NC44NjQ4MTYsIDM4LjM3ODg0Nl0sIFs3NC4yNTc1MTQsIDM4LjYwNjUwN10sIFs3My45Mjg4NTIsIDM4LjUwNTgxNV0sIFs3My42NzUzNzksIDM5LjQzMTIzN10sIFs3My45NjAwMTMsIDM5LjY2MDAwOF0sIFs3My44MjIyNDQsIDM5Ljg5Mzk3M10sIFs3NC43NzY4NjIsIDQwLjM2NjQyNV0sIFs3NS40Njc4MjgsIDQwLjU2MjA3Ml0sIFs3Ni41MjYzNjgsIDQwLjQyNzk0Nl0sIFs3Ni45MDQ0ODQsIDQxLjA2NjQ4Nl0sIFs3OC4xODcxOTcsIDQxLjE4NTMxNl0sIFs3OC41NDM2NjEsIDQxLjU4MjI0M10sIFs4MC4xMTk0MywgNDIuMTIzOTQxXSwgWzgwLjI1OTk5LCA0Mi4zNDk5OTldLCBbODAuMTgwMTUsIDQyLjkyMDA2OF0sIFs4MC44NjYyMDYsIDQzLjE4MDM2Ml0sIFs3OS45NjYxMDYsIDQ0LjkxNzUxN10sIFs4MS45NDcwNzEsIDQ1LjMxNzAyN10sIFs4Mi40NTg5MjYsIDQ1LjUzOTY1XSwgWzgzLjE4MDQ4NCwgNDcuMzMwMDMxXSwgWzg1LjE2NDI5LCA0Ny4wMDA5NTZdLCBbODUuNzIwNDg0LCA0Ny40NTI5NjldLCBbODUuNzY4MjMzLCA0OC40NTU3NTFdLCBbODYuNTk4Nzc2LCA0OC41NDkxODJdLCBbODcuMzU5OTcsIDQ5LjIxNDk4MV0sIFs4Ny43NTEyNjQsIDQ5LjI5NzE5OF0sIFs4OC4wMTM4MzIsIDQ4LjU5OTQ2M10sIFs4OC44NTQyOTgsIDQ4LjA2OTA4Ml0sIFs5MC4yODA4MjYsIDQ3LjY5MzU0OV0sIFs5MC45NzA4MDksIDQ2Ljg4ODE0Nl0sIFs5MC41ODU3NjgsIDQ1LjcxOTcxNl0sIFs5MC45NDU1NCwgNDUuMjg2MDczXSwgWzkyLjEzMzg5MSwgNDUuMTE1MDc2XSwgWzkzLjQ4MDczNCwgNDQuOTc1NDcyXSwgWzk0LjY4ODkyOSwgNDQuMzUyMzMyXSwgWzk1LjMwNjg3NSwgNDQuMjQxMzMxXSwgWzk1Ljc2MjQ1NSwgNDMuMzE5NDQ5XSwgWzk2LjM0OTM5NiwgNDIuNzI1NjM1XSwgWzk3LjQ1MTc1NywgNDIuNzQ4ODldLCBbOTkuNTE1ODE3LCA0Mi41MjQ2OTFdLCBbMTAwLjg0NTg2NiwgNDIuNjYzODA0XSwgWzEwMS44MzMwNCwgNDIuNTE0ODczXSwgWzEwMy4zMTIyNzgsIDQxLjkwNzQ2OF0sIFsxMDQuNTIyMjgyLCA0MS45MDgzNDddLCBbMTA0Ljk2NDk5NCwgNDEuNTk3NDFdLCBbMTA2LjEyOTMxNiwgNDIuMTM0MzI4XSwgWzEwNy43NDQ3NzMsIDQyLjQ4MTUxNl0sIFsxMDkuMjQzNTk2LCA0Mi41MTk0NDZdLCBbMTEwLjQxMjEwMywgNDIuODcxMjM0XSwgWzExMS4xMjk2ODIsIDQzLjQwNjgzNF0sIFsxMTEuODI5NTg4LCA0My43NDMxMThdLCBbMTExLjY2NzczNywgNDQuMDczMTc2XSwgWzExMS4zNDgzNzcsIDQ0LjQ1NzQ0Ml0sIFsxMTEuODczMzA2LCA0NS4xMDIwNzldLCBbMTEyLjQzNjA2MiwgNDUuMDExNjQ2XSwgWzExMy40NjM5MDcsIDQ0LjgwODg5M10sIFsxMTQuNDYwMzMyLCA0NS4zMzk4MTddLCBbMTE1Ljk4NTA5NiwgNDUuNzI3MjM1XSwgWzExNi43MTc4NjgsIDQ2LjM4ODIwMl0sIFsxMTcuNDIxNzAxLCA0Ni42NzI3MzNdLCBbMTE4Ljg3NDMyNiwgNDYuODA1NDEyXSwgWzExOS42NjMyNywgNDYuNjkyNjhdLCBbMTE5Ljc3MjgyNCwgNDcuMDQ4MDU5XSwgWzExOC44NjY1NzQsIDQ3Ljc0NzA2XSwgWzExOC4wNjQxNDMsIDQ4LjA2NjczXSwgWzExNy4yOTU1MDcsIDQ3LjY5NzcwOV0sIFsxMTYuMzA4OTUzLCA0Ny44NTM0MV0sIFsxMTUuNzQyODM3LCA0Ny43MjY1NDVdLCBbMTE1LjQ4NTI4MiwgNDguMTM1MzgzXSwgWzExNi4xOTE4MDIsIDQ5LjEzNDU5OF0sIFsxMTYuNjc4ODAxLCA0OS44ODg1MzFdLCBbMTE3Ljg3OTI0NCwgNDkuNTEwOTgzXSwgWzExOS4yODg0NjEsIDUwLjE0Mjg4M10sIFsxMTkuMjc5MzY2LCA1MC41ODI5MDhdLCBbMTIwLjE4MjA1LCA1MS42NDM1NjZdLCBbMTIwLjczODE5MSwgNTEuOTY0MTE1XSwgWzEyMC43MjU3ODksIDUyLjUxNjIyNl0sIFsxMjAuMTc3MDg5LCA1Mi43NTM4ODZdLCBbMTIxLjAwMzA4NSwgNTMuMjUxNDAxXSwgWzEyMi4yNDU3NDgsIDUzLjQzMTcyNl0sIFsxMjMuNTcxNTA3LCA1My40NTg4MDRdLCBbMTI1LjA2ODIxMSwgNTMuMTYxMDQ1XSwgWzEyNS45NDYzNDksIDUyLjc5Mjc5OV0sIFsxMjYuNTY0Mzk5LCA1MS43ODQyNTVdLCBbMTI2LjkzOTE1NywgNTEuMzUzODk0XSwgWzEyNy4yODc0NTYsIDUwLjczOTc5N10sIFsxMjcuNjU3NDA3LCA0OS43NjAyN11dXV0sICJ0eXBlIjogIk11bHRpUG9seWdvbiJ9LCAiaWQiOiAiQ0hOIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDaGluYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNiMTAwMjYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuODU2MTI1LCA0Ljk5NDQ3Nl0sIFstMy4zMTEwODQsIDQuOTg0Mjk2XSwgWy00LjAwODgyLCA1LjE3OTgxM10sIFstNC42NDk5MTcsIDUuMTY4MjY0XSwgWy01LjgzNDQ5NiwgNC45OTM3MDFdLCBbLTYuNTI4NzY5LCA0LjcwNTA4OF0sIFstNy41MTg5NDEsIDQuMzM4Mjg4XSwgWy03LjcxMjE1OSwgNC4zNjQ1NjZdLCBbLTcuNjM1MzY4LCA1LjE4ODE1OV0sIFstNy41Mzk3MTUsIDUuMzEzMzQ1XSwgWy03LjU3MDE1MywgNS43MDczNTJdLCBbLTcuOTkzNjkzLCA2LjEyNjE5XSwgWy04LjMxMTM0OCwgNi4xOTMwMzNdLCBbLTguNjAyODgsIDYuNDY3NTY0XSwgWy04LjM4NTQ1MiwgNi45MTE4MDFdLCBbLTguNDg1NDQ2LCA3LjM5NTIwOF0sIFstOC40MzkyOTgsIDcuNjg2MDQzXSwgWy04LjI4MDcwMywgNy42ODcxOF0sIFstOC4yMjE3OTIsIDguMTIzMzI5XSwgWy04LjI5OTA0OSwgOC4zMTY0NDRdLCBbLTguMjAzNDk5LCA4LjQ1NTQ1M10sIFstNy44MzIxLCA4LjU3NTcwNF0sIFstOC4wNzkxMTQsIDkuMzc2MjI0XSwgWy04LjMwOTYxNiwgOS43ODk1MzJdLCBbLTguMjI5MzM3LCAxMC4xMjkwMl0sIFstOC4wMjk5NDQsIDEwLjIwNjUzNV0sIFstNy44OTk1OSwgMTAuMjk3MzgyXSwgWy03LjYyMjc1OSwgMTAuMTQ3MjM2XSwgWy02Ljg1MDUwNywgMTAuMTM4OTk0XSwgWy02LjY2NjQ2MSwgMTAuNDMwODExXSwgWy02LjQ5Mzk2NSwgMTAuNDExMzAzXSwgWy02LjIwNTIyMywgMTAuNTI0MDYxXSwgWy02LjA1MDQ1MiwgMTAuMDk2MzYxXSwgWy01LjgxNjkyNiwgMTAuMjIyNTU1XSwgWy01LjQwNDM0MiwgMTAuMzcwNzM3XSwgWy00Ljk1NDY1MywgMTAuMTUyNzE0XSwgWy00Ljc3OTg4NCwgOS44MjE5ODVdLCBbLTQuMzMwMjQ3LCA5LjYxMDgzNV0sIFstMy45ODA0NDksIDkuODYyMzQ0XSwgWy0zLjUxMTg5OSwgOS45MDAzMjZdLCBbLTIuODI3NDk2LCA5LjY0MjQ2MV0sIFstMi41NjIxOSwgOC4yMTk2MjhdLCBbLTIuOTgzNTg1LCA3LjM3OTcwNV0sIFstMy4yNDQzNywgNi4yNTA0NzJdLCBbLTIuODEwNzAxLCA1LjM4OTA1MV0sIFstMi44NTYxMjUsIDQuOTk0NDc2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDSVYiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkl2b3J5IENvYXN0IiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxMy4wNzU4MjIsIDIuMjY3MDk3XSwgWzEyLjk1MTMzNCwgMi4zMjE2MTZdLCBbMTIuMzU5MzgsIDIuMTkyODEyXSwgWzExLjc1MTY2NSwgMi4zMjY3NThdLCBbMTEuMjc2NDQ5LCAyLjI2MTA1MV0sIFs5LjY0OTE1OCwgMi4yODM4NjZdLCBbOS43OTUxOTYsIDMuMDczNDA0XSwgWzkuNDA0MzY3LCAzLjczNDUyN10sIFs4Ljk0ODExNiwgMy45MDQxMjldLCBbOC43NDQ5MjQsIDQuMzUyMjE1XSwgWzguNDg4ODE2LCA0LjQ5NTYxN10sIFs4LjUwMDI4OCwgNC43NzE5ODNdLCBbOC43NTc1MzMsIDUuNDc5NjY2XSwgWzkuMjMzMTYzLCA2LjQ0NDQ5MV0sIFs5LjUyMjcwNiwgNi40NTM0ODJdLCBbMTAuMTE4Mjc3LCA3LjAzODc3XSwgWzEwLjQ5NzM3NSwgNy4wNTUzNThdLCBbMTEuMDU4Nzg4LCA2LjY0NDQyN10sIFsxMS43NDU3NzQsIDYuOTgxMzgzXSwgWzExLjgzOTMwOSwgNy4zOTcwNDJdLCBbMTIuMDYzOTQ2LCA3Ljc5OTgwOF0sIFsxMi4yMTg4NzIsIDguMzA1ODI0XSwgWzEyLjc1MzY3MiwgOC43MTc3NjNdLCBbMTIuOTU1NDY4LCA5LjQxNzc3Ml0sIFsxMy4xNjc2LCA5LjY0MDYyNl0sIFsxMy4zMDg2NzYsIDEwLjE2MDM2Ml0sIFsxMy41NzI5NSwgMTAuNzk4NTY2XSwgWzE0LjQxNTM3OSwgMTEuNTcyMzY5XSwgWzE0LjQ2ODE5MiwgMTEuOTA0NzUyXSwgWzE0LjU3NzE3OCwgMTIuMDg1MzYxXSwgWzE0LjE4MTMzNiwgMTIuNDgzNjU3XSwgWzE0LjIxMzUzMSwgMTIuODAyMDM1XSwgWzE0LjQ5NTc4NywgMTIuODU5Mzk2XSwgWzE0Ljg5MzM4NiwgMTIuMjE5MDQ4XSwgWzE0Ljk2MDE1MiwgMTEuNTU1NTc0XSwgWzE0LjkyMzU2NSwgMTAuODkxMzI1XSwgWzE1LjQ2Nzg3MywgOS45ODIzMzddLCBbMTQuOTA5MzU0LCA5Ljk5MjEyOV0sIFsxNC42MjcyMDEsIDkuOTIwOTE5XSwgWzE0LjE3MTQ2NiwgMTAuMDIxMzc4XSwgWzEzLjk1NDIxOCwgOS41NDk0OTVdLCBbMTQuNTQ0NDY3LCA4Ljk2NTg2MV0sIFsxNC45Nzk5OTYsIDguNzk2MTA0XSwgWzE1LjEyMDg2NiwgOC4zODIxNV0sIFsxNS40MzYwOTIsIDcuNjkyODEyXSwgWzE1LjI3OTQ2LCA3LjQyMTkyNV0sIFsxNC43NzY1NDUsIDYuNDA4NDk4XSwgWzE0LjUzNjU2LCA2LjIyNjk1OV0sIFsxNC40NTk0MDcsIDUuNDUxNzYxXSwgWzE0LjU1ODkzNiwgNS4wMzA1OThdLCBbMTQuNDc4MzcyLCA0LjczMjYwNV0sIFsxNC45NTA5NTMsIDQuMjEwMzg5XSwgWzE1LjAzNjIyLCAzLjg1MTM2N10sIFsxNS40MDUzOTYsIDMuMzM1MzAxXSwgWzE1Ljg2MjczMiwgMy4wMTM1MzddLCBbMTUuOTA3MzgxLCAyLjU1NzM4OV0sIFsxNi4wMTI4NTIsIDIuMjY3NjRdLCBbMTUuOTQwOTE5LCAxLjcyNzY3M10sIFsxNS4xNDYzNDIsIDEuOTY0MDE1XSwgWzE0LjMzNzgxMywgMi4yMjc4NzVdLCBbMTMuMDc1ODIyLCAyLjI2NzA5N11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ01SIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDYW1lcm9vbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMzAuODMzODYsIDMuNTA5MTY2XSwgWzMwLjc3MzM0NywgMi4zMzk4ODNdLCBbMzEuMTc0MTQ5LCAyLjIwNDQ2NV0sIFszMC44NTI2NywgMS44NDkzOTZdLCBbMzAuNDY4NTA4LCAxLjU4MzgwNV0sIFszMC4wODYxNTQsIDEuMDYyMzEzXSwgWzI5Ljg3NTc3OSwgMC41OTczOF0sIFsyOS44MTk1MDMsIC0wLjIwNTMxXSwgWzI5LjU4NzgzOCwgLTAuNTg3NDA2XSwgWzI5LjU3OTQ2NiwgLTEuMzQxMzEzXSwgWzI5LjI5MTg4NywgLTEuNjIwMDU2XSwgWzI5LjI1NDgzNSwgLTIuMjE1MTFdLCBbMjkuMTE3NDc5LCAtMi4yOTIyMTFdLCBbMjkuMDI0OTI2LCAtMi44MzkyNThdLCBbMjkuMjc2Mzg0LCAtMy4yOTM5MDddLCBbMjkuMzM5OTk4LCAtNC40OTk5ODNdLCBbMjkuNTE5OTg3LCAtNS40MTk5NzldLCBbMjkuNDE5OTkzLCAtNS45Mzk5OTldLCBbMjkuNjIwMDMyLCAtNi41MjAwMTVdLCBbMzAuMTk5OTk3LCAtNy4wNzk5ODFdLCBbMzAuNzQwMDE1LCAtOC4zNDAwMDddLCBbMzAuMzQ2MDg2LCAtOC4yMzgyNTddLCBbMjkuMDAyOTEyLCAtOC40MDcwMzJdLCBbMjguNzM0ODY3LCAtOC41MjY1NTldLCBbMjguNDQ5ODcxLCAtOS4xNjQ5MThdLCBbMjguNjczNjgyLCAtOS42MDU5MjVdLCBbMjguNDk2MDcsIC0xMC43ODk4ODRdLCBbMjguMzcyMjUzLCAtMTEuNzkzNjQ3XSwgWzI4LjY0MjQxNywgLTExLjk3MTU2OV0sIFsyOS4zNDE1NDgsIC0xMi4zNjA3NDRdLCBbMjkuNjE2MDAxLCAtMTIuMTc4ODk1XSwgWzI5LjY5OTYxNCwgLTEzLjI1NzIyN10sIFsyOC45MzQyODYsIC0xMy4yNDg5NThdLCBbMjguNTIzNTYyLCAtMTIuNjk4NjA0XSwgWzI4LjE1NTEwOSwgLTEyLjI3MjQ4MV0sIFsyNy4zODg3OTksIC0xMi4xMzI3NDddLCBbMjcuMTY0NDIsIC0xMS42MDg3NDhdLCBbMjYuNTUzMDg4LCAtMTEuOTI0NDRdLCBbMjUuNzUyMzEsIC0xMS43ODQ5NjVdLCBbMjUuNDE4MTE4LCAtMTEuMzMwOTM2XSwgWzI0Ljc4MzE3LCAtMTEuMjM4Njk0XSwgWzI0LjMxNDUxNiwgLTExLjI2MjgyNl0sIFsyNC4yNTcxNTUsIC0xMC45NTE5OTNdLCBbMjMuOTEyMjE1LCAtMTAuOTI2ODI2XSwgWzIzLjQ1Njc5MSwgLTEwLjg2Nzg2M10sIFsyMi44MzczNDUsIC0xMS4wMTc2MjJdLCBbMjIuNDAyNzk4LCAtMTAuOTkzMDc1XSwgWzIyLjE1NTI2OCwgLTExLjA4NDgwMV0sIFsyMi4yMDg3NTMsIC05Ljg5NDc5Nl0sIFsyMS44NzUxODIsIC05LjUyMzcwOF0sIFsyMS44MDE4MDEsIC04LjkwODcwN10sIFsyMS45NDkxMzEsIC04LjMwNTkwMV0sIFsyMS43NDY0NTYsIC03LjkyMDA4NV0sIFsyMS43MjgxMTEsIC03LjI5MDg3Ml0sIFsyMC41MTQ3NDgsIC03LjI5OTYwNl0sIFsyMC42MDE4MjMsIC02LjkzOTMxOF0sIFsyMC4wOTE2MjIsIC02Ljk0MzA5XSwgWzIwLjAzNzcyMywgLTcuMTE2MzYxXSwgWzE5LjQxNzUwMiwgLTcuMTU1NDI5XSwgWzE5LjE2NjYxMywgLTcuNzM4MTg0XSwgWzE5LjAxNjc1MiwgLTcuOTg4MjQ2XSwgWzE4LjQ2NDE3NiwgLTcuODQ3MDE0XSwgWzE4LjEzNDIyMiwgLTcuOTg3Njc4XSwgWzE3LjQ3Mjk3LCAtOC4wNjg1NTFdLCBbMTcuMDg5OTk2LCAtNy41NDU2ODldLCBbMTYuODYwMTkxLCAtNy4yMjIyOThdLCBbMTYuNTczMTgsIC02LjYyMjY0NV0sIFsxNi4zMjY1MjgsIC01Ljg3NzQ3XSwgWzEzLjM3NTU5NywgLTUuODY0MjQxXSwgWzEzLjAyNDg2OSwgLTUuOTg0Mzg5XSwgWzEyLjczNTE3MSwgLTUuOTY1NjgyXSwgWzEyLjMyMjQzMiwgLTYuMTAwMDkyXSwgWzEyLjE4MjMzNywgLTUuNzg5OTMxXSwgWzEyLjQzNjY4OCwgLTUuNjg0MzA0XSwgWzEyLjQ2ODAwNCwgLTUuMjQ4MzYyXSwgWzEyLjYzMTYxMiwgLTQuOTkxMjcxXSwgWzEyLjk5NTUxNywgLTQuNzgxMTAzXSwgWzEzLjI1ODI0LCAtNC44ODI5NTddLCBbMTMuNjAwMjM1LCAtNC41MDAxMzhdLCBbMTQuMTQ0OTU2LCAtNC41MTAwMDldLCBbMTQuMjA5MDM1LCAtNC43OTMwOTJdLCBbMTQuNTgyNjA0LCAtNC45NzAyMzldLCBbMTUuMTcwOTkyLCAtNC4zNDM1MDddLCBbMTUuNzUzNTQsIC0zLjg1NTE2NV0sIFsxNi4wMDYyOSwgLTMuNTM1MTMzXSwgWzE1Ljk3MjgwMywgLTIuNzEyMzkyXSwgWzE2LjQwNzA5MiwgLTEuNzQwOTI3XSwgWzE2Ljg2NTMwNywgLTEuMjI1ODE2XSwgWzE3LjUyMzcxNiwgLTAuNzQzODNdLCBbMTcuNjM4NjQ1LCAtMC40MjQ4MzJdLCBbMTcuNjYzNTUzLCAtMC4wNTgwODRdLCBbMTcuODI2NTQsIDAuMjg4OTIzXSwgWzE3Ljc3NDE5MiwgMC44NTU2NTldLCBbMTcuODk4ODM1LCAxLjc0MTgzMl0sIFsxOC4wOTQyNzYsIDIuMzY1NzIyXSwgWzE4LjM5Mzc5MiwgMi45MDA0NDNdLCBbMTguNDUzMDY1LCAzLjUwNDM4Nl0sIFsxOC41NDI5ODIsIDQuMjAxNzg1XSwgWzE4LjkzMjMxMiwgNC43MDk1MDZdLCBbMTkuNDY3Nzg0LCA1LjAzMTUyOF0sIFsyMC4yOTA2NzksIDQuNjkxNjc4XSwgWzIwLjkyNzU5MSwgNC4zMjI3ODZdLCBbMjEuNjU5MTIzLCA0LjIyNDM0Ml0sIFsyMi40MDUxMjQsIDQuMDI5MTZdLCBbMjIuNzA0MTI0LCA0LjYzMzA1MV0sIFsyMi44NDE0OCwgNC43MTAxMjZdLCBbMjMuMjk3MjE0LCA0LjYwOTY5M10sIFsyNC40MTA1MzEsIDUuMTA4Nzg0XSwgWzI0LjgwNTAyOSwgNC44OTcyNDddLCBbMjUuMTI4ODMzLCA0LjkyNzI0NV0sIFsyNS4yNzg3OTgsIDUuMTcwNDA4XSwgWzI1LjY1MDQ1NSwgNS4yNTYwODhdLCBbMjYuNDAyNzYxLCA1LjE1MDg3NV0sIFsyNy4wNDQwNjUsIDUuMTI3ODUzXSwgWzI3LjM3NDIyNiwgNS4yMzM5NDRdLCBbMjcuOTc5OTc3LCA0LjQwODQxM10sIFsyOC40Mjg5OTQsIDQuMjg3MTU1XSwgWzI4LjY5NjY3OCwgNC40NTUwNzddLCBbMjkuMTU5MDc4LCA0LjM4OTI2N10sIFsyOS43MTU5OTUsIDQuNjAwODA1XSwgWzI5Ljk1MzUsIDQuMTczNjk5XSwgWzMwLjgzMzg2LCAzLjUwOTE2Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ09EIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJEZW1vY3JhdGljIFJlcHVibGljIG9mIHRoZSBDb25nbyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTIuOTk1NTE3LCAtNC43ODExMDNdLCBbMTIuNjIwNzYsIC00LjQzODAyM10sIFsxMi4zMTg2MDgsIC00LjYwNjIzXSwgWzExLjkxNDk2MywgLTUuMDM3OTg3XSwgWzExLjA5Mzc3MywgLTMuOTc4ODI3XSwgWzExLjg1NTEyMiwgLTMuNDI2ODcxXSwgWzExLjQ3ODAzOSwgLTIuNzY1NjE5XSwgWzExLjgyMDk2NCwgLTIuNTE0MTYxXSwgWzEyLjQ5NTcwMywgLTIuMzkxNjg4XSwgWzEyLjU3NTI4NCwgLTEuOTQ4NTExXSwgWzEzLjEwOTYxOSwgLTIuNDI4NzRdLCBbMTMuOTkyNDA3LCAtMi40NzA4MDVdLCBbMTQuMjk5MjEsIC0xLjk5ODI3Nl0sIFsxNC40MjU0NTYsIC0xLjMzMzQwN10sIFsxNC4zMTY0MTgsIC0wLjU1MjYyN10sIFsxMy44NDMzMjEsIDAuMDM4NzU4XSwgWzE0LjI3NjI2NiwgMS4xOTY5M10sIFsxNC4wMjY2NjksIDEuMzk1Njc3XSwgWzEzLjI4MjYzMSwgMS4zMTQxODRdLCBbMTMuMDAzMTE0LCAxLjgzMDg5Nl0sIFsxMy4wNzU4MjIsIDIuMjY3MDk3XSwgWzE0LjMzNzgxMywgMi4yMjc4NzVdLCBbMTUuMTQ2MzQyLCAxLjk2NDAxNV0sIFsxNS45NDA5MTksIDEuNzI3NjczXSwgWzE2LjAxMjg1MiwgMi4yNjc2NF0sIFsxNi41MzcwNTgsIDMuMTk4MjU1XSwgWzE3LjEzMzA0MiwgMy43MjgxOTddLCBbMTcuODA5OSwgMy41NjAxOTZdLCBbMTguNDUzMDY1LCAzLjUwNDM4Nl0sIFsxOC4zOTM3OTIsIDIuOTAwNDQzXSwgWzE4LjA5NDI3NiwgMi4zNjU3MjJdLCBbMTcuODk4ODM1LCAxLjc0MTgzMl0sIFsxNy43NzQxOTIsIDAuODU1NjU5XSwgWzE3LjgyNjU0LCAwLjI4ODkyM10sIFsxNy42NjM1NTMsIC0wLjA1ODA4NF0sIFsxNy42Mzg2NDUsIC0wLjQyNDgzMl0sIFsxNy41MjM3MTYsIC0wLjc0MzgzXSwgWzE2Ljg2NTMwNywgLTEuMjI1ODE2XSwgWzE2LjQwNzA5MiwgLTEuNzQwOTI3XSwgWzE1Ljk3MjgwMywgLTIuNzEyMzkyXSwgWzE2LjAwNjI5LCAtMy41MzUxMzNdLCBbMTUuNzUzNTQsIC0zLjg1NTE2NV0sIFsxNS4xNzA5OTIsIC00LjM0MzUwN10sIFsxNC41ODI2MDQsIC00Ljk3MDIzOV0sIFsxNC4yMDkwMzUsIC00Ljc5MzA5Ml0sIFsxNC4xNDQ5NTYsIC00LjUxMDAwOV0sIFsxMy42MDAyMzUsIC00LjUwMDEzOF0sIFsxMy4yNTgyNCwgLTQuODgyOTU3XSwgWzEyLjk5NTUxNywgLTQuNzgxMTAzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDT0ciLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIlJlcHVibGljIG9mIHRoZSBDb25nbyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZmZmYjIiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTc1LjM3MzIyMywgLTAuMTUyMDMyXSwgWy03NS44MDE0NjYsIDAuMDg0ODAxXSwgWy03Ni4yOTIzMTQsIDAuNDE2MDQ3XSwgWy03Ni41NzYzOCwgMC4yNTY5MzZdLCBbLTc3LjQyNDk4NCwgMC4zOTU2ODddLCBbLTc3LjY2ODYxMywgMC44MjU4OTNdLCBbLTc3Ljg1NTA2MSwgMC44MDk5MjVdLCBbLTc4Ljg1NTI1OSwgMS4zODA5MjRdLCBbLTc4Ljk5MDkzNSwgMS42OTEzN10sIFstNzguNjE3ODMxLCAxLjc2NjQwNF0sIFstNzguNjYyMTE4LCAyLjI2NzM1NV0sIFstNzguNDI3NjEsIDIuNjI5NTU2XSwgWy03Ny45MzE1NDMsIDIuNjk2NjA2XSwgWy03Ny41MTA0MzEsIDMuMzI1MDE3XSwgWy03Ny4xMjc2OSwgMy44NDk2MzZdLCBbLTc3LjQ5NjI3MiwgNC4wODc2MDZdLCBbLTc3LjMwNzYwMSwgNC42Njc5ODRdLCBbLTc3LjUzMzIyMSwgNS41ODI4MTJdLCBbLTc3LjMxODgxNSwgNS44NDUzNTRdLCBbLTc3LjQ3NjY2MSwgNi42OTExMTZdLCBbLTc3Ljg4MTU3MSwgNy4yMjM3NzFdLCBbLTc3Ljc1MzQxNCwgNy43MDk4NF0sIFstNzcuNDMxMTA4LCA3LjYzODA2MV0sIFstNzcuMjQyNTY2LCA3LjkzNTI3OF0sIFstNzcuNDc0NzIzLCA4LjUyNDI4Nl0sIFstNzcuMzUzMzYxLCA4LjY3MDUwNV0sIFstNzYuODM2Njc0LCA4LjYzODc0OV0sIFstNzYuMDg2Mzg0LCA5LjMzNjgyMV0sIFstNzUuNjc0NiwgOS40NDMyNDhdLCBbLTc1LjY2NDcwNCwgOS43NzQwMDNdLCBbLTc1LjQ4MDQyNiwgMTAuNjE4OTldLCBbLTc0LjkwNjg5NSwgMTEuMDgzMDQ1XSwgWy03NC4yNzY3NTMsIDExLjEwMjAzNl0sIFstNzQuMTk3MjIzLCAxMS4zMTA0NzNdLCBbLTczLjQxNDc2NCwgMTEuMjI3MDE1XSwgWy03Mi42Mjc4MzUsIDExLjczMTk3Ml0sIFstNzIuMjM4MTk1LCAxMS45NTU1NV0sIFstNzEuNzU0MDksIDEyLjQzNzMwM10sIFstNzEuMzk5ODIyLCAxMi4zNzYwNDFdLCBbLTcxLjEzNzQ2MSwgMTIuMTEyOTgyXSwgWy03MS4zMzE1ODQsIDExLjc3NjI4NF0sIFstNzEuOTczOTIyLCAxMS42MDg2NzJdLCBbLTcyLjIyNzU3NSwgMTEuMTA4NzAyXSwgWy03Mi42MTQ2NTgsIDEwLjgyMTk3NV0sIFstNzIuOTA1Mjg2LCAxMC40NTAzNDRdLCBbLTczLjAyNzYwNCwgOS43MzY3N10sIFstNzMuMzA0OTUyLCA5LjE1Ml0sIFstNzIuNzg4NzMsIDkuMDg1MDI3XSwgWy03Mi42NjA0OTUsIDguNjI1Mjg4XSwgWy03Mi40Mzk4NjIsIDguNDA1Mjc1XSwgWy03Mi4zNjA5MDEsIDguMDAyNjM4XSwgWy03Mi40Nzk2NzksIDcuNjMyNTA2XSwgWy03Mi40NDQ0ODcsIDcuNDIzNzg1XSwgWy03Mi4xOTgzNTIsIDcuMzQwNDMxXSwgWy03MS45NjAxNzYsIDYuOTkxNjE1XSwgWy03MC42NzQyMzQsIDcuMDg3Nzg1XSwgWy03MC4wOTMzMTMsIDYuOTYwMzc2XSwgWy02OS4zODk0OCwgNi4wOTk4NjFdLCBbLTY4Ljk4NTMxOSwgNi4yMDY4MDVdLCBbLTY4LjI2NTA1MiwgNi4xNTMyNjhdLCBbLTY3LjY5NTA4NywgNi4yNjczMThdLCBbLTY3LjM0MTQ0LCA2LjA5NTQ2OF0sIFstNjcuNTIxNTMyLCA1LjU1Njg3XSwgWy02Ny43NDQ2OTcsIDUuMjIxMTI5XSwgWy02Ny44MjMwMTIsIDQuNTAzOTM3XSwgWy02Ny42MjE4MzYsIDMuODM5NDgyXSwgWy02Ny4zMzc1NjQsIDMuNTQyMzQyXSwgWy02Ny4zMDMxNzMsIDMuMzE4NDU0XSwgWy02Ny44MDk5MzgsIDIuODIwNjU1XSwgWy02Ny40NDcwOTIsIDIuNjAwMjgxXSwgWy02Ny4xODEyOTQsIDIuMjUwNjM4XSwgWy02Ni44NzYzMjYsIDEuMjUzMzYxXSwgWy02Ny4wNjUwNDgsIDEuMTMwMTEyXSwgWy02Ny4yNTk5OTgsIDEuNzE5OTk5XSwgWy02Ny41Mzc4MSwgMi4wMzcxNjNdLCBbLTY3Ljg2ODU2NSwgMS42OTI0NTVdLCBbLTY5LjgxNjk3MywgMS43MTQ4MDVdLCBbLTY5LjgwNDU5NywgMS4wODkwODFdLCBbLTY5LjIxODYzOCwgMC45ODU2NzddLCBbLTY5LjI1MjQzNCwgMC42MDI2NTFdLCBbLTY5LjQ1MjM5NiwgMC43MDYxNTldLCBbLTcwLjAxNTU2NiwgMC41NDE0MTRdLCBbLTcwLjAyMDY1NiwgLTAuMTg1MTU2XSwgWy02OS41NzcwNjUsIC0wLjU0OTk5Ml0sIFstNjkuNDIwNDg2LCAtMS4xMjI2MTldLCBbLTY5LjQ0NDEwMiwgLTEuNTU2Mjg3XSwgWy02OS44OTM2MzUsIC00LjI5ODE4N10sIFstNzAuMzk0MDQ0LCAtMy43NjY1OTFdLCBbLTcwLjY5MjY4MiwgLTMuNzQyODcyXSwgWy03MC4wNDc3MDksIC0yLjcyNTE1Nl0sIFstNzAuODEzNDc2LCAtMi4yNTY4NjVdLCBbLTcxLjQxMzY0NiwgLTIuMzQyODAyXSwgWy03MS43NzQ3NjEsIC0yLjE2OTc5XSwgWy03Mi4zMjU3ODcsIC0yLjQzNDIxOF0sIFstNzMuMDcwMzkyLCAtMi4zMDg5NTRdLCBbLTczLjY1OTUwNCwgLTEuMjYwNDkxXSwgWy03NC4xMjIzOTUsIC0xLjAwMjgzM10sIFstNzQuNDQxNjAxLCAtMC41MzA4Ml0sIFstNzUuMTA2NjI1LCAtMC4wNTcyMDVdLCBbLTc1LjM3MzIyMywgLTAuMTUyMDMyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDT0wiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkNvbG9tYmlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stODIuOTY1NzgzLCA4LjIyNTAyOF0sIFstODMuNTA4NDM3LCA4LjQ0NjkyN10sIFstODMuNzExNDc0LCA4LjY1NjgzNl0sIFstODMuNTk2MzEzLCA4LjgzMDQ0M10sIFstODMuNjMyNjQyLCA5LjA1MTM4Nl0sIFstODMuOTA5ODg2LCA5LjI5MDgwM10sIFstODQuMzAzNDAyLCA5LjQ4NzM1NF0sIFstODQuNjQ3NjQ0LCA5LjYxNTUzN10sIFstODQuNzEzMzUxLCA5LjkwODA1Ml0sIFstODQuOTc1NjYsIDEwLjA4NjcyM10sIFstODQuOTExMzc1LCA5Ljc5NTk5Ml0sIFstODUuMTEwOTIzLCA5LjU1NzA0XSwgWy04NS4zMzk0ODgsIDkuODM0NTQyXSwgWy04NS42NjA3ODcsIDkuOTMzMzQ3XSwgWy04NS43OTc0NDUsIDEwLjEzNDg4Nl0sIFstODUuNzkxNzA5LCAxMC40MzkzMzddLCBbLTg1LjY1OTMxNCwgMTAuNzU0MzMxXSwgWy04NS45NDE3MjUsIDEwLjg5NTI3OF0sIFstODUuNzEyNTQsIDExLjA4ODQ0NV0sIFstODUuNTYxODUyLCAxMS4yMTcxMTldLCBbLTg0LjkwMzAwMywgMTAuOTUyMzAzXSwgWy04NC42NzMwNjksIDExLjA4MjY1N10sIFstODQuMzU1OTMxLCAxMC45OTkyMjZdLCBbLTg0LjE5MDE3OSwgMTAuNzkzNDVdLCBbLTgzLjg5NTA1NCwgMTAuNzI2ODM5XSwgWy04My42NTU2MTIsIDEwLjkzODc2NF0sIFstODMuNDAyMzIsIDEwLjM5NTQzOF0sIFstODMuMDE1Njc3LCA5Ljk5Mjk4Ml0sIFstODIuNTQ2MTk2LCA5LjU2NjEzNV0sIFstODIuOTMyODkxLCA5LjQ3NjgxMl0sIFstODIuOTI3MTU1LCA5LjA3NDMzXSwgWy04Mi43MTkxODMsIDguOTI1NzA5XSwgWy04Mi44Njg2NTcsIDguODA3MjY2XSwgWy04Mi44Mjk3NzEsIDguNjI2Mjk1XSwgWy04Mi45MTMxNzYsIDguNDIzNTE3XSwgWy04Mi45NjU3ODMsIDguMjI1MDI4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDUkkiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkNvc3RhIFJpY2EiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy04Mi4yNjgxNTEsIDIzLjE4ODYxMV0sIFstODEuNDA0NDU3LCAyMy4xMTcyNzFdLCBbLTgwLjYxODc2OSwgMjMuMTA1OThdLCBbLTc5LjY3OTUyNCwgMjIuNzY1MzAzXSwgWy03OS4yODE0ODYsIDIyLjM5OTIwMl0sIFstNzguMzQ3NDM0LCAyMi41MTIxNjZdLCBbLTc3Ljk5MzI5NiwgMjIuMjc3MTk0XSwgWy03Ny4xNDY0MjIsIDIxLjY1Nzg1MV0sIFstNzYuNTIzODI1LCAyMS4yMDY4Ml0sIFstNzYuMTk0NjIsIDIxLjIyMDU2NV0sIFstNzUuNTk4MjIyLCAyMS4wMTY2MjRdLCBbLTc1LjY3MTA2LCAyMC43MzUwOTFdLCBbLTc0LjkzMzg5NiwgMjAuNjkzOTA1XSwgWy03NC4xNzgwMjUsIDIwLjI4NDYyOF0sIFstNzQuMjk2NjQ4LCAyMC4wNTAzNzldLCBbLTc0Ljk2MTU5NSwgMTkuOTIzNDM1XSwgWy03NS42MzQ2OCwgMTkuODczNzc0XSwgWy03Ni4zMjM2NTYsIDE5Ljk1Mjg5MV0sIFstNzcuNzU1NDgxLCAxOS44NTU0ODFdLCBbLTc3LjA4NTEwOCwgMjAuNDEzMzU0XSwgWy03Ny40OTI2NTUsIDIwLjY3MzEwNV0sIFstNzguMTM3MjkyLCAyMC43Mzk5NDldLCBbLTc4LjQ4MjgyNywgMjEuMDI4NjEzXSwgWy03OC43MTk4NjcsIDIxLjU5ODExNF0sIFstNzkuMjg1LCAyMS41NTkxNzVdLCBbLTgwLjIxNzQ3NSwgMjEuODI3MzI0XSwgWy04MC41MTc1MzUsIDIyLjAzNzA3OV0sIFstODEuODIwOTQzLCAyMi4xOTIwNTddLCBbLTgyLjE2OTk5MiwgMjIuMzg3MTA5XSwgWy04MS43OTUwMDIsIDIyLjYzNjk2NV0sIFstODIuNzc1ODk4LCAyMi42ODgxNV0sIFstODMuNDk0NDU5LCAyMi4xNjg1MThdLCBbLTgzLjkwODgsIDIyLjE1NDU2NV0sIFstODQuMDUyMTUxLCAyMS45MTA1NzVdLCBbLTg0LjU0NzAzLCAyMS44MDEyMjhdLCBbLTg0Ljk3NDkxMSwgMjEuODk2MDI4XSwgWy04NC40NDcwNjIsIDIyLjIwNDk1XSwgWy04NC4yMzAzNTcsIDIyLjU2NTc1NV0sIFstODMuNzc4MjQsIDIyLjc4ODExOF0sIFstODMuMjY3NTQ4LCAyMi45ODMwNDJdLCBbLTgyLjUxMDQzNiwgMjMuMDc4NzQ3XSwgWy04Mi4yNjgxNTEsIDIzLjE4ODYxMV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ1VCIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDdWJhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1szMi43MzE3OCwgMzUuMTQwMDI2XSwgWzMyLjgwMjQ3NCwgMzUuMTQ1NTA0XSwgWzMyLjk0Njk2MSwgMzUuMzg2NzAzXSwgWzMzLjY2NzIyNywgMzUuMzczMjE2XSwgWzM0LjU3NjQ3NCwgMzUuNjcxNTk2XSwgWzMzLjkwMDgwNCwgMzUuMjQ1NzU2XSwgWzMzLjk3MzYxNywgMzUuMDU4NTA2XSwgWzMzLjg2NjQ0LCAzNS4wOTM1OTVdLCBbMzMuNjc1MzkyLCAzNS4wMTc4NjNdLCBbMzMuNTI1Njg1LCAzNS4wMzg2ODhdLCBbMzMuNDc1ODE3LCAzNS4wMDAzNDVdLCBbMzMuNDU1OTIyLCAzNS4xMDE0MjRdLCBbMzMuMzgzODMzLCAzNS4xNjI3MTJdLCBbMzMuMTkwOTc3LCAzNS4xNzMxMjVdLCBbMzIuOTE5NTcyLCAzNS4wODc4MzNdLCBbMzIuNzMxNzgsIDM1LjE0MDAyNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiLTk5IiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJOb3J0aGVybiBDeXBydXMiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzMzLjk3MzYxNywgMzUuMDU4NTA2XSwgWzM0LjAwNDg4MSwgMzQuOTc4MDk4XSwgWzMyLjk3OTgyNywgMzQuNTcxODY5XSwgWzMyLjQ5MDI5NiwgMzQuNzAxNjU1XSwgWzMyLjI1NjY2NywgMzUuMTAzMjMyXSwgWzMyLjczMTc4LCAzNS4xNDAwMjZdLCBbMzIuOTE5NTcyLCAzNS4wODc4MzNdLCBbMzMuMTkwOTc3LCAzNS4xNzMxMjVdLCBbMzMuMzgzODMzLCAzNS4xNjI3MTJdLCBbMzMuNDU1OTIyLCAzNS4xMDE0MjRdLCBbMzMuNDc1ODE3LCAzNS4wMDAzNDVdLCBbMzMuNTI1Njg1LCAzNS4wMzg2ODhdLCBbMzMuNjc1MzkyLCAzNS4wMTc4NjNdLCBbMzMuODY2NDQsIDM1LjA5MzU5NV0sIFszMy45NzM2MTcsIDM1LjA1ODUwNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ1lQIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDeXBydXMiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzE2Ljk2MDI4OCwgNDguNTk2OTgyXSwgWzE2LjQ5OTI4MywgNDguNzg1ODA4XSwgWzE2LjAyOTY0NywgNDguNzMzODk5XSwgWzE1LjI1MzQxNiwgNDkuMDM5MDc0XSwgWzE0LjkwMTQ0NywgNDguOTY0NDAyXSwgWzE0LjMzODg5OCwgNDguNTU1MzA1XSwgWzEzLjU5NTk0NiwgNDguODc3MTcyXSwgWzEzLjAzMTMyOSwgNDkuMzA3MDY4XSwgWzEyLjUyMTAyNCwgNDkuNTQ3NDE1XSwgWzEyLjQxNTE5MSwgNDkuOTY5MTIxXSwgWzEyLjI0MDExMSwgNTAuMjY2MzM4XSwgWzEyLjk2NjgzNywgNTAuNDg0MDc2XSwgWzEzLjMzODEzMiwgNTAuNzMzMjM0XSwgWzE0LjA1NjIyOCwgNTAuOTI2OTE4XSwgWzE0LjMwNzAxMywgNTEuMTE3MjY4XSwgWzE0LjU3MDcxOCwgNTEuMDAyMzM5XSwgWzE1LjAxNjk5NiwgNTEuMTA2Njc0XSwgWzE1LjQ5MDk3MiwgNTAuNzg0NzNdLCBbMTYuMjM4NjI3LCA1MC42OTc3MzNdLCBbMTYuMTc2MjUzLCA1MC40MjI2MDddLCBbMTYuNzE5NDc2LCA1MC4yMTU3NDddLCBbMTYuODY4NzY5LCA1MC40NzM5NzRdLCBbMTcuNTU0NTY3LCA1MC4zNjIxNDZdLCBbMTcuNjQ5NDQ1LCA1MC4wNDkwMzhdLCBbMTguMzkyOTE0LCA0OS45ODg2MjldLCBbMTguODUzMTQ0LCA0OS40OTYyM10sIFsxOC41NTQ5NzEsIDQ5LjQ5NTAxNV0sIFsxOC4zOTk5OTQsIDQ5LjMxNTAwMV0sIFsxOC4xNzA0OTgsIDQ5LjI3MTUxNV0sIFsxOC4xMDQ5NzMsIDQ5LjA0Mzk4M10sIFsxNy45MTM1MTIsIDQ4Ljk5NjQ5M10sIFsxNy44ODY0ODUsIDQ4LjkwMzQ3NV0sIFsxNy41NDUwMDcsIDQ4LjgwMDAxOV0sIFsxNy4xMDE5ODUsIDQ4LjgxNjk2OV0sIFsxNi45NjAyODgsIDQ4LjU5Njk4Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ1pFIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDemVjaCBSZXB1YmxpYyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbOS45MjE5MDYsIDU0Ljk4MzEwNF0sIFs5LjkzOTU4LCA1NC41OTY2NDJdLCBbMTAuOTUwMTEyLCA1NC4zNjM2MDddLCBbMTAuOTM5NDY3LCA1NC4wMDg2OTNdLCBbMTEuOTU2MjUyLCA1NC4xOTY0ODZdLCBbMTIuNTE4NDQsIDU0LjQ3MDM3MV0sIFsxMy42NDc0NjcsIDU0LjA3NTUxMV0sIFsxNC4xMTk2ODYsIDUzLjc1NzAyOV0sIFsxNC4zNTMzMTUsIDUzLjI0ODE3MV0sIFsxNC4wNzQ1MjEsIDUyLjk4MTI2M10sIFsxNC40Mzc2LCA1Mi42MjQ4NV0sIFsxNC42ODUwMjYsIDUyLjA4OTk0N10sIFsxNC42MDcwOTgsIDUxLjc0NTE4OF0sIFsxNS4wMTY5OTYsIDUxLjEwNjY3NF0sIFsxNC41NzA3MTgsIDUxLjAwMjMzOV0sIFsxNC4zMDcwMTMsIDUxLjExNzI2OF0sIFsxNC4wNTYyMjgsIDUwLjkyNjkxOF0sIFsxMy4zMzgxMzIsIDUwLjczMzIzNF0sIFsxMi45NjY4MzcsIDUwLjQ4NDA3Nl0sIFsxMi4yNDAxMTEsIDUwLjI2NjMzOF0sIFsxMi40MTUxOTEsIDQ5Ljk2OTEyMV0sIFsxMi41MjEwMjQsIDQ5LjU0NzQxNV0sIFsxMy4wMzEzMjksIDQ5LjMwNzA2OF0sIFsxMy41OTU5NDYsIDQ4Ljg3NzE3Ml0sIFsxMy4yNDMzNTcsIDQ4LjQxNjExNV0sIFsxMi44ODQxMDMsIDQ4LjI4OTE0Nl0sIFsxMy4wMjU4NTEsIDQ3LjYzNzU4NF0sIFsxMi45MzI2MjcsIDQ3LjQ2NzY0Nl0sIFsxMi42MjA3NiwgNDcuNjcyMzg4XSwgWzEyLjE0MTM1NywgNDcuNzAzMDgzXSwgWzExLjQyNjQxNCwgNDcuNTIzNzY2XSwgWzEwLjU0NDUwNCwgNDcuNTY2Mzk5XSwgWzEwLjQwMjA4NCwgNDcuMzAyNDg4XSwgWzkuODk2MDY4LCA0Ny41ODAxOTddLCBbOS41OTQyMjYsIDQ3LjUyNTA1OF0sIFs4LjUyMjYxMiwgNDcuODMwODI4XSwgWzguMzE3MzAxLCA0Ny42MTM1OF0sIFs3LjQ2Njc1OSwgNDcuNjIwNTgyXSwgWzcuNTkzNjc2LCA0OC4zMzMwMTldLCBbOC4wOTkyNzksIDQ5LjAxNzc4NF0sIFs2LjY1ODIzLCA0OS4yMDE5NThdLCBbNi4xODYzMiwgNDkuNDYzODAzXSwgWzYuMjQyNzUxLCA0OS45MDIyMjZdLCBbNi4wNDMwNzMsIDUwLjEyODA1Ml0sIFs2LjE1NjY1OCwgNTAuODAzNzIxXSwgWzUuOTg4NjU4LCA1MS44NTE2MTZdLCBbNi41ODkzOTcsIDUxLjg1MjAyOV0sIFs2Ljg0Mjg3LCA1Mi4yMjg0NF0sIFs3LjA5MjA1MywgNTMuMTQ0MDQzXSwgWzYuOTA1MTQsIDUzLjQ4MjE2Ml0sIFs3LjEwMDQyNSwgNTMuNjkzOTMyXSwgWzcuOTM2MjM5LCA1My43NDgyOTZdLCBbOC4xMjE3MDYsIDUzLjUyNzc5Ml0sIFs4LjgwMDczNCwgNTQuMDIwNzg2XSwgWzguNTcyMTE4LCA1NC4zOTU2NDZdLCBbOC41MjYyMjksIDU0Ljk2Mjc0NF0sIFs5LjI4MjA0OSwgNTQuODMwODY1XSwgWzkuOTIxOTA2LCA1NC45ODMxMDRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkRFVSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiR2VybWFueSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbNDMuMDgxMjI2LCAxMi42OTk2MzldLCBbNDMuMzE3ODUyLCAxMi4zOTAxNDhdLCBbNDMuMjg2MzgxLCAxMS45NzQ5MjhdLCBbNDIuNzE1ODc0LCAxMS43MzU2NDFdLCBbNDMuMTQ1MzA1LCAxMS40NjIwNF0sIFs0Mi43NzY4NTIsIDEwLjkyNjg3OV0sIFs0Mi41NTQ5MywgMTEuMTA1MTFdLCBbNDIuMzE0MTQsIDExLjAzNDJdLCBbNDEuNzU1NTcsIDExLjA1MDkxXSwgWzQxLjczOTU5LCAxMS4zNTUxMV0sIFs0MS42NjE3NiwgMTEuNjMxMl0sIFs0MiwgMTIuMV0sIFs0Mi4zNTE1NiwgMTIuNTQyMjNdLCBbNDIuNzc5NjQyLCAxMi40NTU0MTZdLCBbNDMuMDgxMjI2LCAxMi42OTk2MzldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkRKSSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRGppYm91dGkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxMi42OTAwMDYsIDU1LjYwOTk5MV0sIFsxMi4wODk5OTEsIDU0LjgwMDAxNV0sIFsxMS4wNDM1NDMsIDU1LjM2NDg2NF0sIFsxMC45MDM5MTQsIDU1Ljc3OTk1NV0sIFsxMi4zNzA5MDQsIDU2LjExMTQwN10sIFsxMi42OTAwMDYsIDU1LjYwOTk5MV1dXSwgW1tbMTAuOTEyMTgyLCA1Ni40NTg2MjFdLCBbMTAuNjY3ODA0LCA1Ni4wODEzODNdLCBbMTAuMzY5OTkzLCA1Ni4xOTAwMDddLCBbOS42NDk5ODUsIDU1LjQ2OTk5OV0sIFs5LjkyMTkwNiwgNTQuOTgzMTA0XSwgWzkuMjgyMDQ5LCA1NC44MzA4NjVdLCBbOC41MjYyMjksIDU0Ljk2Mjc0NF0sIFs4LjEyMDMxMSwgNTUuNTE3NzIzXSwgWzguMDg5OTc3LCA1Ni41NDAwMTJdLCBbOC4yNTY1ODIsIDU2LjgwOTk2OV0sIFs4LjU0MzQzOCwgNTcuMTEwMDAzXSwgWzkuNDI0NDY5LCA1Ny4xNzIwNjZdLCBbOS43NzU1NTksIDU3LjQ0Nzk0MV0sIFsxMC41ODAwMDYsIDU3LjczMDAxN10sIFsxMC41NDYxMDYsIDU3LjIxNTczM10sIFsxMC4yNSwgNTYuODkwMDE2XSwgWzEwLjM2OTk5MywgNTYuNjA5OTgyXSwgWzEwLjkxMjE4MiwgNTYuNDU4NjIxXV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJETksiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkRlbm1hcmsiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy03MS43MTIzNjEsIDE5LjcxNDQ1Nl0sIFstNzEuNTg3MzA0LCAxOS44ODQ5MTFdLCBbLTcwLjgwNjcwNiwgMTkuODgwMjg2XSwgWy03MC4yMTQzNjUsIDE5LjYyMjg4NV0sIFstNjkuOTUwODE1LCAxOS42NDhdLCBbLTY5Ljc2OTI1LCAxOS4yOTMyNjddLCBbLTY5LjIyMjEyNiwgMTkuMzEzMjE0XSwgWy02OS4yNTQzNDYsIDE5LjAxNTE5Nl0sIFstNjguODA5NDEyLCAxOC45NzkwNzRdLCBbLTY4LjMxNzk0MywgMTguNjEyMTk4XSwgWy02OC42ODkzMTYsIDE4LjIwNTE0Ml0sIFstNjkuMTY0OTQ2LCAxOC40MjI2NDhdLCBbLTY5LjYyMzk4OCwgMTguMzgwNzEzXSwgWy02OS45NTI5MzQsIDE4LjQyODMwN10sIFstNzAuMTMzMjMzLCAxOC4yNDU5MTVdLCBbLTcwLjUxNzEzNywgMTguMTg0MjkxXSwgWy03MC42NjkyOTgsIDE4LjQyNjg4Nl0sIFstNzAuOTk5OTUsIDE4LjI4MzMyOV0sIFstNzEuNDAwMjEsIDE3LjU5ODU2NF0sIFstNzEuNjU3NjYyLCAxNy43NTc1NzNdLCBbLTcxLjcwODMwNSwgMTguMDQ0OTk3XSwgWy03MS42ODc3MzgsIDE4LjMxNjY2XSwgWy03MS45NDUxMTIsIDE4LjYxNjldLCBbLTcxLjcwMTMwMywgMTguNzg1NDE3XSwgWy03MS42MjQ4NzMsIDE5LjE2OTgzOF0sIFstNzEuNzEyMzYxLCAxOS43MTQ0NTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkRPTSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRG9taW5pY2FuIFJlcHVibGljIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxMS45OTk1MDYsIDIzLjQ3MTY2OF0sIFs4LjU3Mjg5MywgMjEuNTY1NjYxXSwgWzUuNjc3NTY2LCAxOS42MDEyMDddLCBbNC4yNjc0MTksIDE5LjE1NTI2NV0sIFszLjE1ODEzMywgMTkuMDU3MzY0XSwgWzMuMTQ2NjYxLCAxOS42OTM1NzldLCBbMi42ODM1ODgsIDE5Ljg1NjIzXSwgWzIuMDYwOTkxLCAyMC4xNDIyMzNdLCBbMS44MjMyMjgsIDIwLjYxMDgwOV0sIFstMS41NTAwNTUsIDIyLjc5MjY2Nl0sIFstNC45MjMzMzcsIDI0Ljk3NDU3NF0sIFstOC42ODQ0LCAyNy4zOTU3NDRdLCBbLTguNjY1MTI0LCAyNy41ODk0NzldLCBbLTguNjY1NTksIDI3LjY1NjQyNl0sIFstOC42NzQxMTYsIDI4Ljg0MTI4OV0sIFstNy4wNTkyMjgsIDI5LjU3OTIyOF0sIFstNi4wNjA2MzIsIDI5LjczMTddLCBbLTUuMjQyMTI5LCAzMC4wMDA0NDNdLCBbLTQuODU5NjQ2LCAzMC41MDExODhdLCBbLTMuNjkwNDQxLCAzMC44OTY5NTJdLCBbLTMuNjQ3NDk4LCAzMS42MzcyOTRdLCBbLTMuMDY4OTgsIDMxLjcyNDQ5OF0sIFstMi42MTY2MDUsIDMyLjA5NDM0Nl0sIFstMS4zMDc4OTksIDMyLjI2Mjg4OV0sIFstMS4xMjQ1NTEsIDMyLjY1MTUyMl0sIFstMS4zODgwNDksIDMyLjg2NDAxNV0sIFstMS43MzM0NTUsIDMzLjkxOTcxM10sIFstMS43OTI5ODYsIDM0LjUyNzkxOV0sIFstMi4xNjk5MTQsIDM1LjE2ODM5Nl0sIFstMS4yMDg2MDMsIDM1LjcxNDg0OV0sIFstMC4xMjc0NTQsIDM1Ljg4ODY2Ml0sIFswLjUwMzg3NywgMzYuMzAxMjczXSwgWzEuNDY2OTE5LCAzNi42MDU2NDddLCBbMy4xNjE2OTksIDM2Ljc4MzkwNV0sIFs0LjgxNTc1OCwgMzYuODY1MDM3XSwgWzUuMzIwMTIsIDM2LjcxNjUxOV0sIFs2LjI2MTgyLCAzNy4xMTA2NTVdLCBbNy4zMzAzODUsIDM3LjExODM4MV0sIFs3LjczNzA3OCwgMzYuODg1NzA4XSwgWzguNDIwOTY0LCAzNi45NDY0MjddLCBbOC4yMTc4MjQsIDM2LjQzMzE3N10sIFs4LjM3NjM2OCwgMzUuNDc5ODc2XSwgWzguMTQwOTgxLCAzNC42NTUxNDZdLCBbNy41MjQ0ODIsIDM0LjA5NzM3Nl0sIFs3LjYxMjY0MiwgMzMuMzQ0MTE1XSwgWzguNDMwNDczLCAzMi43NDgzMzddLCBbOC40MzkxMDMsIDMyLjUwNjI4NV0sIFs5LjA1NTYwMywgMzIuMTAyNjkyXSwgWzkuNDgyMTQsIDMwLjMwNzU1Nl0sIFs5LjgwNTYzNCwgMjkuNDI0NjM4XSwgWzkuODU5OTk4LCAyOC45NTk5OV0sIFs5LjY4Mzg4NSwgMjguMTQ0MTc0XSwgWzkuNzU2MTI4LCAyNy42ODgyNTldLCBbOS42MjkwNTYsIDI3LjE0MDk1M10sIFs5LjcxNjI4NiwgMjYuNTEyMjA2XSwgWzkuMzE5NDExLCAyNi4wOTQzMjVdLCBbOS45MTA2OTMsIDI1LjM2NTQ1NV0sIFs5Ljk0ODI2MSwgMjQuOTM2OTU0XSwgWzEwLjMwMzg0NywgMjQuMzc5MzEzXSwgWzEwLjc3MTM2NCwgMjQuNTYyNTMyXSwgWzExLjU2MDY2OSwgMjQuMDk3OTA5XSwgWzExLjk5OTUwNiwgMjMuNDcxNjY4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJEWkEiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkFsZ2VyaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy04MC4zMDI1NjEsIC0zLjQwNDg1Nl0sIFstNzkuNzcwMjkzLCAtMi42NTc1MTJdLCBbLTc5Ljk4NjU1OSwgLTIuMjIwNzk0XSwgWy04MC4zNjg3ODQsIC0yLjY4NTE1OV0sIFstODAuOTY3NzY1LCAtMi4yNDY5NDNdLCBbLTgwLjc2NDgwNiwgLTEuOTY1MDQ4XSwgWy04MC45MzM2NTksIC0xLjA1NzQ1NV0sIFstODAuNTgzMzcsIC0wLjkwNjY2M10sIFstODAuMzk5MzI1LCAtMC4yODM3MDNdLCBbLTgwLjAyMDg5OCwgMC4zNjAzNF0sIFstODAuMDkwNjEsIDAuNzY4NDI5XSwgWy03OS41NDI3NjIsIDAuOTgyOTM4XSwgWy03OC44NTUyNTksIDEuMzgwOTI0XSwgWy03Ny44NTUwNjEsIDAuODA5OTI1XSwgWy03Ny42Njg2MTMsIDAuODI1ODkzXSwgWy03Ny40MjQ5ODQsIDAuMzk1Njg3XSwgWy03Ni41NzYzOCwgMC4yNTY5MzZdLCBbLTc2LjI5MjMxNCwgMC40MTYwNDddLCBbLTc1LjgwMTQ2NiwgMC4wODQ4MDFdLCBbLTc1LjM3MzIyMywgLTAuMTUyMDMyXSwgWy03NS4yMzM3MjMsIC0wLjkxMTQxN10sIFstNzUuNTQ0OTk2LCAtMS41NjE2MV0sIFstNzYuNjM1Mzk0LCAtMi42MDg2NzhdLCBbLTc3LjgzNzkwNSwgLTMuMDAzMDIxXSwgWy03OC40NTA2ODQsIC0zLjg3MzA5N10sIFstNzguNjM5ODk3LCAtNC41NDc3ODRdLCBbLTc5LjIwNTI4OSwgLTQuOTU5MTI5XSwgWy03OS42MjQ5NzksIC00LjQ1NDE5OF0sIFstODAuMDI4OTA4LCAtNC4zNDYwOTFdLCBbLTgwLjQ0MjI0MiwgLTQuNDI1NzI0XSwgWy04MC40NjkyOTUsIC00LjA1OTI4N10sIFstODAuMTg0MDE1LCAtMy44MjExNjJdLCBbLTgwLjMwMjU2MSwgLTMuNDA0ODU2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJFQ1UiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkVjdWFkb3IiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzM0LjkyMjYsIDI5LjUwMTMzXSwgWzM0LjY0MTc0LCAyOS4wOTk0Ml0sIFszNC40MjY1NSwgMjguMzQzOTldLCBbMzQuMTU0NTEsIDI3LjgyMzNdLCBbMzMuOTIxMzYsIDI3LjY0ODddLCBbMzMuNTg4MTEsIDI3Ljk3MTM2XSwgWzMzLjEzNjc2LCAyOC40MTc2NV0sIFszMi40MjMyMywgMjkuODUxMDhdLCBbMzIuMzIwNDYsIDI5Ljc2MDQzXSwgWzMyLjczNDgyLCAyOC43MDUyM10sIFszMy4zNDg3NiwgMjcuNjk5ODldLCBbMzQuMTA0NTUsIDI2LjE0MjI3XSwgWzM0LjQ3Mzg3LCAyNS41OTg1Nl0sIFszNC43OTUwNywgMjUuMDMzNzVdLCBbMzUuNjkyNDEsIDIzLjkyNjcxXSwgWzM1LjQ5MzcyLCAyMy43NTIzN10sIFszNS41MjU5OCwgMjMuMTAyNDRdLCBbMzYuNjkwNjksIDIyLjIwNDg1XSwgWzM2Ljg2NjIzLCAyMl0sIFszMi45LCAyMl0sIFsyOS4wMiwgMjJdLCBbMjUsIDIyXSwgWzI1LCAyNS42ODI1XSwgWzI1LCAyOS4yMzg2NTVdLCBbMjQuNzAwMDcsIDMwLjA0NDE5XSwgWzI0Ljk1NzYyLCAzMC42NjE2XSwgWzI0LjgwMjg3LCAzMS4wODkyOV0sIFsyNS4xNjQ4MiwgMzEuNTY5MTVdLCBbMjYuNDk1MzMsIDMxLjU4NTY4XSwgWzI3LjQ1NzYyLCAzMS4zMjEyNl0sIFsyOC40NTA0OCwgMzEuMDI1NzddLCBbMjguOTEzNTMsIDMwLjg3MDA1XSwgWzI5LjY4MzQyLCAzMS4xODY4Nl0sIFszMC4wOTUwMywgMzEuNDczNF0sIFszMC45NzY5MywgMzEuNTU1ODZdLCBbMzEuNjg3OTYsIDMxLjQyOTZdLCBbMzEuOTYwNDEsIDMwLjkzMzZdLCBbMzIuMTkyNDcsIDMxLjI2MDM0XSwgWzMyLjk5MzkyLCAzMS4wMjQwN10sIFszMy43NzM0LCAzMC45Njc0Nl0sIFszNC4yNjU0NCwgMzEuMjE5MzZdLCBbMzQuOTIyNiwgMjkuNTAxMzNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkVHWSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRWd5cHQiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzQyLjM1MTU2LCAxMi41NDIyM10sIFs0Mi4wMDk3NSwgMTIuODY1ODJdLCBbNDEuNTk4NTYsIDEzLjQ1MjA5XSwgWzQxLjE1NTE5NCwgMTMuNzczMzJdLCBbNDAuODk2NiwgMTQuMTE4NjRdLCBbNDAuMDI2MjE5LCAxNC41MTk1NzldLCBbMzkuMzQwNjEsIDE0LjUzMTU1XSwgWzM5LjA5OTQsIDE0Ljc0MDY0XSwgWzM4LjUxMjk1LCAxNC41MDU0N10sIFszNy45MDYwNywgMTQuOTU5NDNdLCBbMzcuNTkzNzcsIDE0LjIxMzFdLCBbMzYuNDI5NTEsIDE0LjQyMjExXSwgWzM2LjMyMzE4OSwgMTQuODIyNDgxXSwgWzM2Ljc1Mzg2LCAxNi4yOTE4NzRdLCBbMzYuODUyNTMsIDE2Ljk1NjU1XSwgWzM3LjE2NzQ3LCAxNy4yNjMxNF0sIFszNy45MDQsIDE3LjQyNzU0XSwgWzM4LjQxMDA5LCAxNy45OTgzMDddLCBbMzguOTkwNjIzLCAxNi44NDA2MjZdLCBbMzkuMjY2MTEsIDE1LjkyMjcyM10sIFszOS44MTQyOTQsIDE1LjQzNTY0N10sIFs0MS4xNzkyNzUsIDE0LjQ5MTA4XSwgWzQxLjczNDk1MiwgMTMuOTIxMDM3XSwgWzQyLjI3NjgzMSwgMTMuMzQzOTkyXSwgWzQyLjU4OTU3NiwgMTMuMDAwNDIxXSwgWzQzLjA4MTIyNiwgMTIuNjk5NjM5XSwgWzQyLjc3OTY0MiwgMTIuNDU1NDE2XSwgWzQyLjM1MTU2LCAxMi41NDIyM11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiRVJJIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJFcml0cmVhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stOS4wMzQ4MTgsIDQxLjg4MDU3MV0sIFstOC45ODQ0MzMsIDQyLjU5Mjc3NV0sIFstOS4zOTI4ODQsIDQzLjAyNjYyNV0sIFstNy45NzgxOSwgNDMuNzQ4MzM4XSwgWy02Ljc1NDQ5MiwgNDMuNTY3OTA5XSwgWy01LjQxMTg4NiwgNDMuNTc0MjRdLCBbLTQuMzQ3ODQzLCA0My40MDM0NDldLCBbLTMuNTE3NTMyLCA0My40NTU5MDFdLCBbLTEuOTAxMzUxLCA0My40MjI4MDJdLCBbLTEuNTAyNzcxLCA0My4wMzQwMTRdLCBbMC4zMzgwNDcsIDQyLjU3OTU0Nl0sIFswLjcwMTU5MSwgNDIuNzk1NzM0XSwgWzEuODI2NzkzLCA0Mi4zNDMzODVdLCBbMi45ODU5OTksIDQyLjQ3MzAxNV0sIFszLjAzOTQ4NCwgNDEuODkyMTJdLCBbMi4wOTE4NDIsIDQxLjIyNjA4OV0sIFswLjgxMDUyNSwgNDEuMDE0NzMyXSwgWzAuNzIxMzMxLCA0MC42NzgzMThdLCBbMC4xMDY2OTIsIDQwLjEyMzkzNF0sIFstMC4yNzg3MTEsIDM5LjMwOTk3OF0sIFswLjExMTI5MSwgMzguNzM4NTE0XSwgWy0wLjQ2NzEyNCwgMzguMjkyMzY2XSwgWy0wLjY4MzM4OSwgMzcuNjQyMzU0XSwgWy0xLjQzODM4MiwgMzcuNDQzMDY0XSwgWy0yLjE0NjQ1MywgMzYuNjc0MTQ0XSwgWy0zLjQxNTc4MSwgMzYuNjU4OV0sIFstNC4zNjg5MDEsIDM2LjY3NzgzOV0sIFstNC45OTUyMTksIDM2LjMyNDcwOF0sIFstNS4zNzcxNiwgMzUuOTQ2ODVdLCBbLTUuODY2NDMyLCAzNi4wMjk4MTddLCBbLTYuMjM2Njk0LCAzNi4zNjc2NzddLCBbLTYuNTIwMTkxLCAzNi45NDI5MTNdLCBbLTcuNDUzNzI2LCAzNy4wOTc3ODhdLCBbLTcuNTM3MTA1LCAzNy40Mjg5MDRdLCBbLTcuMTY2NTA4LCAzNy44MDM4OTRdLCBbLTcuMDI5MjgxLCAzOC4wNzU3NjRdLCBbLTcuMzc0MDkyLCAzOC4zNzMwNTldLCBbLTcuMDk4MDM3LCAzOS4wMzAwNzNdLCBbLTcuNDk4NjMyLCAzOS42Mjk1NzFdLCBbLTcuMDY2NTkyLCAzOS43MTE4OTJdLCBbLTcuMDI2NDEzLCA0MC4xODQ1MjRdLCBbLTYuODY0MDIsIDQwLjMzMDg3Ml0sIFstNi44NTExMjcsIDQxLjExMTA4M10sIFstNi4zODkwODgsIDQxLjM4MTgxNV0sIFstNi42Njg2MDYsIDQxLjg4MzM4N10sIFstNy4yNTEzMDksIDQxLjkxODM0Nl0sIFstNy40MjI1MTMsIDQxLjc5MjA3NV0sIFstOC4wMTMxNzUsIDQxLjc5MDg4Nl0sIFstOC4yNjM4NTcsIDQyLjI4MDQ2OV0sIFstOC42NzE5NDYsIDQyLjEzNDY4OV0sIFstOS4wMzQ4MTgsIDQxLjg4MDU3MV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiRVNQIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJTcGFpbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMjQuMzEyODYzLCA1Ny43OTM0MjRdLCBbMjQuNDI4OTI4LCA1OC4zODM0MTNdLCBbMjQuMDYxMTk4LCA1OC4yNTczNzVdLCBbMjMuNDI2NTYsIDU4LjYxMjc1M10sIFsyMy4zMzk3OTUsIDU5LjE4NzI0XSwgWzI0LjYwNDIxNCwgNTkuNDY1ODU0XSwgWzI1Ljg2NDE4OSwgNTkuNjExMDldLCBbMjYuOTQ5MTM2LCA1OS40NDU4MDNdLCBbMjcuOTgxMTE0LCA1OS40NzUzODhdLCBbMjguMTMxNjk5LCA1OS4zMDA4MjVdLCBbMjcuNDIwMTY2LCA1OC43MjQ1ODFdLCBbMjcuNzE2Njg2LCA1Ny43OTE4OTldLCBbMjcuMjg4MTg1LCA1Ny40NzQ1MjhdLCBbMjYuNDYzNTMyLCA1Ny40NzYzODldLCBbMjUuNjAyODEsIDU3Ljg0NzUyOV0sIFsyNS4xNjQ1OTQsIDU3Ljk3MDE1N10sIFsyNC4zMTI4NjMsIDU3Ljc5MzQyNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiRVNUIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJFc3RvbmlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1szNy45MDYwNywgMTQuOTU5NDNdLCBbMzguNTEyOTUsIDE0LjUwNTQ3XSwgWzM5LjA5OTQsIDE0Ljc0MDY0XSwgWzM5LjM0MDYxLCAxNC41MzE1NV0sIFs0MC4wMjYyNSwgMTQuNTE5NTldLCBbNDAuODk2NiwgMTQuMTE4NjRdLCBbNDEuMTU1MiwgMTMuNzczMzNdLCBbNDEuNTk4NTYsIDEzLjQ1MjA5XSwgWzQyLjAwOTc1LCAxMi44NjU4Ml0sIFs0Mi4zNTE1NiwgMTIuNTQyMjNdLCBbNDIsIDEyLjFdLCBbNDEuNjYxNzYsIDExLjYzMTJdLCBbNDEuNzM5NTksIDExLjM1NTExXSwgWzQxLjc1NTU3LCAxMS4wNTA5MV0sIFs0Mi4zMTQxNCwgMTEuMDM0Ml0sIFs0Mi41NTQ5MywgMTEuMTA1MTFdLCBbNDIuNzc2ODUyLCAxMC45MjY4NzldLCBbNDIuNTU4NzYsIDEwLjU3MjU4XSwgWzQyLjkyODEyLCAxMC4wMjE5NF0sIFs0My4yOTY5OSwgOS41NDA0OF0sIFs0My42Nzg3NSwgOS4xODM1OF0sIFs0Ni45NDgzNCwgNy45OTY4OF0sIFs0Ny43ODk0MiwgOC4wMDNdLCBbNDQuOTYzNiwgNS4wMDE2Ml0sIFs0My42NjA4NywgNC45NTc1NV0sIFs0Mi43Njk2NywgNC4yNTI1OV0sIFs0Mi4xMjg2MSwgNC4yMzQxM10sIFs0MS44NTUwODMsIDMuOTE4OTEyXSwgWzQxLjE3MTgsIDMuOTE5MDldLCBbNDAuNzY4NDgsIDQuMjU3MDJdLCBbMzkuODU0OTQsIDMuODM4NzldLCBbMzkuNTU5Mzg0LCAzLjQyMjA2XSwgWzM4Ljg5MjUxLCAzLjUwMDc0XSwgWzM4LjY3MTE0LCAzLjYxNjA3XSwgWzM4LjQzNjk3LCAzLjU4ODUxXSwgWzM4LjEyMDkxNSwgMy41OTg2MDVdLCBbMzYuODU1MDkzLCA0LjQ0Nzg2NF0sIFszNi4xNTkwNzksIDQuNDQ3ODY0XSwgWzM1LjgxNzQ0OCwgNC43NzY5NjZdLCBbMzUuODE3NDQ4LCA1LjMzODIzMl0sIFszNS4yOTgwMDcsIDUuNTA2XSwgWzM0LjcwNzAyLCA2LjU5NDIyXSwgWzM0LjI1MDMyLCA2LjgyNjA3XSwgWzM0LjA3NTEsIDcuMjI1OTVdLCBbMzMuNTY4MjksIDcuNzEzMzRdLCBbMzIuOTU0MTgsIDcuNzg0OTddLCBbMzMuMjk0OCwgOC4zNTQ1OF0sIFszMy44MjU1LCA4LjM3OTE2XSwgWzMzLjk3NDk4LCA4LjY4NDU2XSwgWzMzLjk2MTYyLCA5LjU4MzU4XSwgWzM0LjI1NzQ1LCAxMC42MzAwOV0sIFszNC43MzExNSwgMTAuOTEwMTddLCBbMzQuODMxNjMsIDExLjMxODk2XSwgWzM1LjI2MDQ5LCAxMi4wODI4Nl0sIFszNS44NjM2MywgMTIuNTc4MjhdLCBbMzYuMjcwMjIsIDEzLjU2MzMzXSwgWzM2LjQyOTUxLCAxNC40MjIxMV0sIFszNy41OTM3NywgMTQuMjEzMV0sIFszNy45MDYwNywgMTQuOTU5NDNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkVUSCIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRXRoaW9waWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzI4LjU5MTkzLCA2OS4wNjQ3NzddLCBbMjguNDQ1OTQ0LCA2OC4zNjQ2MTNdLCBbMjkuOTc3NDI2LCA2Ny42OTgyOTddLCBbMjkuMDU0NTg5LCA2Ni45NDQyODZdLCBbMzAuMjE3NjUsIDY1LjgwNTk4XSwgWzI5LjU0NDQzLCA2NC45NDg2NzJdLCBbMzAuNDQ0Njg1LCA2NC4yMDQ0NTNdLCBbMzAuMDM1ODcyLCA2My41NTI4MTRdLCBbMzEuNTE2MDkyLCA2Mi44Njc2ODddLCBbMzEuMTM5OTkxLCA2Mi4zNTc2OTNdLCBbMzAuMjExMTA3LCA2MS43ODAwMjhdLCBbMjguMDY5OTk4LCA2MC41MDM1MTddLCBbMjYuMjU1MTczLCA2MC40MjM5NjFdLCBbMjQuNDk2NjI0LCA2MC4wNTczMTZdLCBbMjIuODY5Njk1LCA1OS44NDYzNzNdLCBbMjIuMjkwNzY0LCA2MC4zOTE5MjFdLCBbMjEuMzIyMjQ0LCA2MC43MjAxN10sIFsyMS41NDQ4NjYsIDYxLjcwNTMyOV0sIFsyMS4wNTkyMTEsIDYyLjYwNzM5M10sIFsyMS41MzYwMjksIDYzLjE4OTczNV0sIFsyMi40NDI3NDQsIDYzLjgxNzgxXSwgWzI0LjczMDUxMiwgNjQuOTAyMzQ0XSwgWzI1LjM5ODA2OCwgNjUuMTExNDI3XSwgWzI1LjI5NDA0MywgNjUuNTM0MzQ2XSwgWzIzLjkwMzM3OSwgNjYuMDA2OTI3XSwgWzIzLjU2NTg4LCA2Ni4zOTYwNTFdLCBbMjMuNTM5NDczLCA2Ny45MzYwMDldLCBbMjEuOTc4NTM1LCA2OC42MTY4NDZdLCBbMjAuNjQ1NTkzLCA2OS4xMDYyNDddLCBbMjEuMjQ0OTM2LCA2OS4zNzA0NDNdLCBbMjIuMzU2MjM4LCA2OC44NDE3NDFdLCBbMjMuNjYyMDUsIDY4Ljg5MTI0N10sIFsyNC43MzU2NzksIDY4LjY0OTU1N10sIFsyNS42ODkyMTMsIDY5LjA5MjExNF0sIFsyNi4xNzk2MjIsIDY5LjgyNTI5OV0sIFsyNy43MzIyOTIsIDcwLjE2NDE5M10sIFsyOS4wMTU1NzMsIDY5Ljc2NjQ5MV0sIFsyOC41OTE5MywgNjkuMDY0Nzc3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJGSU4iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkZpbmxhbmQiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxNzguMzczNiwgLTE3LjMzOTkyXSwgWzE3OC43MTgwNiwgLTE3LjYyODQ2XSwgWzE3OC41NTI3MSwgLTE4LjE1MDU5XSwgWzE3Ny45MzI2NiwgLTE4LjI4Nzk5XSwgWzE3Ny4zODE0NiwgLTE4LjE2NDMyXSwgWzE3Ny4yODUwNCwgLTE3LjcyNDY1XSwgWzE3Ny42NzA4NywgLTE3LjM4MTE0XSwgWzE3OC4xMjU1NywgLTE3LjUwNDgxXSwgWzE3OC4zNzM2LCAtMTcuMzM5OTJdXV0sIFtbWzE3OS4zNjQxNDMsIC0xNi44MDEzNTRdLCBbMTc4LjcyNTA1OSwgLTE3LjAxMjA0Ml0sIFsxNzguNTk2ODM5LCAtMTYuNjM5MTVdLCBbMTc5LjA5NjYwOSwgLTE2LjQzMzk4NF0sIFsxNzkuNDEzNTA5LCAtMTYuMzc5MDU0XSwgWzE4MCwgLTE2LjA2NzEzM10sIFsxODAsIC0xNi41NTUyMTddLCBbMTc5LjM2NDE0MywgLTE2LjgwMTM1NF1dXSwgW1tbLTE3OS45MTczNjksIC0xNi41MDE3ODNdLCBbLTE4MCwgLTE2LjU1NTIxN10sIFstMTgwLCAtMTYuMDY3MTMzXSwgWy0xNzkuNzkzMzIsIC0xNi4wMjA4ODJdLCBbLTE3OS45MTczNjksIC0xNi41MDE3ODNdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkZKSSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRmlqaSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTYxLjIsIC01MS44NV0sIFstNjAsIC01MS4yNV0sIFstNTkuMTUsIC01MS41XSwgWy01OC41NSwgLTUxLjFdLCBbLTU3Ljc1LCAtNTEuNTVdLCBbLTU4LjA1LCAtNTEuOV0sIFstNTkuNCwgLTUyLjJdLCBbLTU5Ljg1LCAtNTEuODVdLCBbLTYwLjcsIC01Mi4zXSwgWy02MS4yLCAtNTEuODVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkZMSyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRmFsa2xhbmQgSXNsYW5kcyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZmZmYjIiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWy01Mi41NTY0MjUsIDIuNTA0NzA1XSwgWy01Mi45Mzk2NTcsIDIuMTI0ODU4XSwgWy01My40MTg0NjUsIDIuMDUzMzg5XSwgWy01My41NTQ4MzksIDIuMzM0ODk3XSwgWy01My43Nzg1MjEsIDIuMzc2NzAzXSwgWy01NC4wODgwNjMsIDIuMTA1NTU3XSwgWy01NC41MjQ3NTQsIDIuMzExODQ5XSwgWy01NC4yNzEyMywgMi43Mzg3NDhdLCBbLTU0LjE4NDI4NCwgMy4xOTQxNzJdLCBbLTU0LjAxMTUwNCwgMy42MjI1N10sIFstNTQuMzk5NTQyLCA0LjIxMjYxMV0sIFstNTQuNDc4NjMzLCA0Ljg5Njc1Nl0sIFstNTMuOTU4MDQ1LCA1Ljc1NjU0OF0sIFstNTMuNjE4NDUzLCA1LjY0NjUyOV0sIFstNTIuODgyMTQxLCA1LjQwOTg1MV0sIFstNTEuODIzMzQzLCA0LjU2NTc2OF0sIFstNTEuNjU3Nzk3LCA0LjE1NjIzMl0sIFstNTIuMjQ5MzM4LCAzLjI0MTA5NF0sIFstNTIuNTU2NDI1LCAyLjUwNDcwNV1dXSwgW1tbOS41NjAwMTYsIDQyLjE1MjQ5Ml0sIFs5LjIyOTc1MiwgNDEuMzgwMDA3XSwgWzguNzc1NzIzLCA0MS41ODM2MTJdLCBbOC41NDQyMTMsIDQyLjI1NjUxN10sIFs4Ljc0NjAwOSwgNDIuNjI4MTIyXSwgWzkuMzkwMDAxLCA0My4wMDk5ODVdLCBbOS41NjAwMTYsIDQyLjE1MjQ5Ml1dXSwgW1tbMy41ODgxODQsIDUwLjM3ODk5Ml0sIFs0LjI4NjAyMywgNDkuOTA3NDk3XSwgWzQuNzk5MjIyLCA0OS45ODUzNzNdLCBbNS42NzQwNTIsIDQ5LjUyOTQ4NF0sIFs1Ljg5Nzc1OSwgNDkuNDQyNjY3XSwgWzYuMTg2MzIsIDQ5LjQ2MzgwM10sIFs2LjY1ODIzLCA0OS4yMDE5NThdLCBbOC4wOTkyNzksIDQ5LjAxNzc4NF0sIFs3LjU5MzY3NiwgNDguMzMzMDE5XSwgWzcuNDY2NzU5LCA0Ny42MjA1ODJdLCBbNy4xOTIyMDIsIDQ3LjQ0OTc2Nl0sIFs2LjczNjU3MSwgNDcuNTQxODAxXSwgWzYuNzY4NzE0LCA0Ny4yODc3MDhdLCBbNi4wMzczODksIDQ2LjcyNTc3OV0sIFs2LjAyMjYwOSwgNDYuMjcyOTldLCBbNi41MDAxLCA0Ni40Mjk2NzNdLCBbNi44NDM1OTMsIDQ1Ljk5MTE0N10sIFs2LjgwMjM1NSwgNDUuNzA4NThdLCBbNy4wOTY2NTIsIDQ1LjMzMzA5OV0sIFs2Ljc0OTk1NSwgNDUuMDI4NTE4XSwgWzcuMDA3NTYyLCA0NC4yNTQ3NjddLCBbNy41NDk1OTYsIDQ0LjEyNzkwMV0sIFs3LjQzNTE4NSwgNDMuNjkzODQ1XSwgWzYuNTI5MjQ1LCA0My4xMjg4OTJdLCBbNC41NTY5NjMsIDQzLjM5OTY1MV0sIFszLjEwMDQxMSwgNDMuMDc1MjAxXSwgWzIuOTg1OTk5LCA0Mi40NzMwMTVdLCBbMS44MjY3OTMsIDQyLjM0MzM4NV0sIFswLjcwMTU5MSwgNDIuNzk1NzM0XSwgWzAuMzM4MDQ3LCA0Mi41Nzk1NDZdLCBbLTEuNTAyNzcxLCA0My4wMzQwMTRdLCBbLTEuOTAxMzUxLCA0My40MjI4MDJdLCBbLTEuMzg0MjI1LCA0NC4wMjI2MV0sIFstMS4xOTM3OTgsIDQ2LjAxNDkxOF0sIFstMi4yMjU3MjQsIDQ3LjA2NDM2M10sIFstMi45NjMyNzYsIDQ3LjU3MDMyN10sIFstNC40OTE1NTUsIDQ3Ljk1NDk1NF0sIFstNC41OTIzNSwgNDguNjg0MTZdLCBbLTMuMjk1ODE0LCA0OC45MDE2OTJdLCBbLTEuNjE2NTExLCA0OC42NDQ0MjFdLCBbLTEuOTMzNDk0LCA0OS43NzYzNDJdLCBbLTAuOTg5NDY5LCA0OS4zNDczNzZdLCBbMS4zMzg3NjEsIDUwLjEyNzE3M10sIFsxLjYzOTAwMSwgNTAuOTQ2NjA2XSwgWzIuNTEzNTczLCA1MS4xNDg1MDZdLCBbMi42NTg0MjIsIDUwLjc5Njg0OF0sIFszLjEyMzI1MiwgNTAuNzgwMzYzXSwgWzMuNTg4MTg0LCA1MC4zNzg5OTJdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkZSQSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRnJhbmNlIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxMS4wOTM3NzMsIC0zLjk3ODgyN10sIFsxMC4wNjYxMzUsIC0yLjk2OTQ4M10sIFs5LjQwNTI0NSwgLTIuMTQ0MzEzXSwgWzguNzk3OTk2LCAtMS4xMTEzMDFdLCBbOC44MzAwODcsIC0wLjc3OTA3NF0sIFs5LjA0ODQyLCAtMC40NTkzNTFdLCBbOS4yOTEzNTEsIDAuMjY4NjY2XSwgWzkuNDkyODg5LCAxLjAxMDEyXSwgWzkuODMwMjg0LCAxLjA2Nzg5NF0sIFsxMS4yODUwNzksIDEuMDU3NjYyXSwgWzExLjI3NjQ0OSwgMi4yNjEwNTFdLCBbMTEuNzUxNjY1LCAyLjMyNjc1OF0sIFsxMi4zNTkzOCwgMi4xOTI4MTJdLCBbMTIuOTUxMzM0LCAyLjMyMTYxNl0sIFsxMy4wNzU4MjIsIDIuMjY3MDk3XSwgWzEzLjAwMzExNCwgMS44MzA4OTZdLCBbMTMuMjgyNjMxLCAxLjMxNDE4NF0sIFsxNC4wMjY2NjksIDEuMzk1Njc3XSwgWzE0LjI3NjI2NiwgMS4xOTY5M10sIFsxMy44NDMzMjEsIDAuMDM4NzU4XSwgWzE0LjMxNjQxOCwgLTAuNTUyNjI3XSwgWzE0LjQyNTQ1NiwgLTEuMzMzNDA3XSwgWzE0LjI5OTIxLCAtMS45OTgyNzZdLCBbMTMuOTkyNDA3LCAtMi40NzA4MDVdLCBbMTMuMTA5NjE5LCAtMi40Mjg3NF0sIFsxMi41NzUyODQsIC0xLjk0ODUxMV0sIFsxMi40OTU3MDMsIC0yLjM5MTY4OF0sIFsxMS44MjA5NjQsIC0yLjUxNDE2MV0sIFsxMS40NzgwMzksIC0yLjc2NTYxOV0sIFsxMS44NTUxMjIsIC0zLjQyNjg3MV0sIFsxMS4wOTM3NzMsIC0zLjk3ODgyN11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiR0FCIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJHYWJvbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWy01LjY2MTk0OSwgNTQuNTU0NjAzXSwgWy02LjE5Nzg4NSwgNTMuODY3NTY1XSwgWy02Ljk1MzczLCA1NC4wNzM3MDJdLCBbLTcuNTcyMTY4LCA1NC4wNTk5NTZdLCBbLTcuMzY2MDMxLCA1NC41OTU4NDFdLCBbLTcuNTcyMTY4LCA1NS4xMzE2MjJdLCBbLTYuNzMzODQ3LCA1NS4xNzI4Nl0sIFstNS42NjE5NDksIDU0LjU1NDYwM11dXSwgW1tbLTMuMDA1MDA1LCA1OC42MzVdLCBbLTQuMDczODI4LCA1Ny41NTMwMjVdLCBbLTMuMDU1MDAyLCA1Ny42OTAwMTldLCBbLTEuOTU5MjgxLCA1Ny42ODQ4XSwgWy0yLjIxOTk4OCwgNTYuODcwMDE3XSwgWy0zLjExOTAwMywgNTUuOTczNzkzXSwgWy0yLjA4NTAwOSwgNTUuOTA5OTk4XSwgWy0yLjAwNTY3NiwgNTUuODA0OTAzXSwgWy0xLjExNDk5MSwgNTQuNjI0OTg2XSwgWy0wLjQzMDQ4NSwgNTQuNDY0Mzc2XSwgWzAuMTg0OTgxLCA1My4zMjUwMTRdLCBbMC40Njk5NzcsIDUyLjkyOTk5OV0sIFsxLjY4MTUzMSwgNTIuNzM5NTJdLCBbMS41NTk5ODgsIDUyLjA5OTk5OF0sIFsxLjA1MDU2MiwgNTEuODA2NzYxXSwgWzEuNDQ5ODY1LCA1MS4yODk0MjhdLCBbMC41NTAzMzQsIDUwLjc2NTczOV0sIFstMC43ODc1MTcsIDUwLjc3NDk4OV0sIFstMi40ODk5OTgsIDUwLjUwMDAxOV0sIFstMi45NTYyNzQsIDUwLjY5Njg4XSwgWy0zLjYxNzQ0OCwgNTAuMjI4MzU2XSwgWy00LjU0MjUwOCwgNTAuMzQxODM3XSwgWy01LjI0NTAyMywgNDkuOTZdLCBbLTUuNzc2NTY3LCA1MC4xNTk2NzhdLCBbLTQuMzA5OTksIDUxLjIxMDAwMV0sIFstMy40MTQ4NTEsIDUxLjQyNjAwOV0sIFstMy40MjI3MTksIDUxLjQyNjg0OF0sIFstNC45ODQzNjcsIDUxLjU5MzQ2Nl0sIFstNS4yNjcyOTYsIDUxLjk5MTRdLCBbLTQuMjIyMzQ3LCA1Mi4zMDEzNTZdLCBbLTQuNzcwMDEzLCA1Mi44NDAwMDVdLCBbLTQuNTc5OTk5LCA1My40OTUwMDRdLCBbLTMuMDkzODMxLCA1My40MDQ1NDddLCBbLTMuMDkyMDgsIDUzLjQwNDQ0MV0sIFstMi45NDUwMDksIDUzLjk4NV0sIFstMy42MTQ3MDEsIDU0LjYwMDkzN10sIFstMy42MzAwMDUsIDU0LjYxNTAxM10sIFstNC44NDQxNjksIDU0Ljc5MDk3MV0sIFstNS4wODI1MjcsIDU1LjA2MTYwMV0sIFstNC43MTkxMTIsIDU1LjUwODQ3M10sIFstNS4wNDc5ODEsIDU1Ljc4Mzk4Nl0sIFstNS41ODYzOTgsIDU1LjMxMTE0Nl0sIFstNS42NDQ5OTksIDU2LjI3NTAxNV0sIFstNi4xNDk5ODEsIDU2Ljc4NTAxXSwgWy01Ljc4NjgyNSwgNTcuODE4ODQ4XSwgWy01LjAwOTk5OSwgNTguNjMwMDEzXSwgWy00LjIxMTQ5NSwgNTguNTUwODQ1XSwgWy0zLjAwNTAwNSwgNTguNjM1XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJHQlIiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIlVuaXRlZCBLaW5nZG9tIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s0MS41NTQwODQsIDQxLjUzNTY1Nl0sIFs0MS43MDMxNzEsIDQxLjk2Mjk0M10sIFs0MS40NTM0NywgNDIuNjQ1MTIzXSwgWzQwLjg3NTQ2OSwgNDMuMDEzNjI4XSwgWzQwLjMyMTM5NCwgNDMuMTI4NjM0XSwgWzM5Ljk1NTAwOSwgNDMuNDM0OTk4XSwgWzQwLjA3Njk2NSwgNDMuNTUzMTA0XSwgWzQwLjkyMjE4NSwgNDMuMzgyMTU5XSwgWzQyLjM5NDM5NSwgNDMuMjIwMzA4XSwgWzQzLjc1NjAxNywgNDIuNzQwODI4XSwgWzQzLjkzMTIsIDQyLjU1NDk3NF0sIFs0NC41Mzc2MjMsIDQyLjcxMTk5M10sIFs0NS40NzAyNzksIDQyLjUwMjc4MV0sIFs0NS43NzY0MSwgNDIuMDkyNDQ0XSwgWzQ2LjQwNDk1MSwgNDEuODYwNjc1XSwgWzQ2LjE0NTQzMiwgNDEuNzIyODAyXSwgWzQ2LjYzNzkwOCwgNDEuMTgxNjczXSwgWzQ2LjUwMTYzNywgNDEuMDY0NDQ1XSwgWzQ1Ljk2MjYwMSwgNDEuMTIzODczXSwgWzQ1LjIxNzQyNiwgNDEuNDExNDUyXSwgWzQ0Ljk3MjQ4LCA0MS4yNDgxMjldLCBbNDMuNTgyNzQ2LCA0MS4wOTIxNDNdLCBbNDIuNjE5NTQ5LCA0MS41ODMxNzNdLCBbNDEuNTU0MDg0LCA0MS41MzU2NTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkdFTyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiR2VvcmdpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMS4wNjAxMjIsIDUuOTI4ODM3XSwgWy0wLjUwNzYzOCwgNS4zNDM0NzNdLCBbLTEuMDYzNjI1LCA1LjAwMDU0OF0sIFstMS45NjQ3MDcsIDQuNzEwNDYyXSwgWy0yLjg1NjEyNSwgNC45OTQ0NzZdLCBbLTIuODEwNzAxLCA1LjM4OTA1MV0sIFstMy4yNDQzNywgNi4yNTA0NzJdLCBbLTIuOTgzNTg1LCA3LjM3OTcwNV0sIFstMi41NjIxOSwgOC4yMTk2MjhdLCBbLTIuODI3NDk2LCA5LjY0MjQ2MV0sIFstMi45NjM4OTYsIDEwLjM5NTMzNV0sIFstMi45NDA0MDksIDEwLjk2MjY5XSwgWy0xLjIwMzM1OCwgMTEuMDA5ODE5XSwgWy0wLjc2MTU3NiwgMTAuOTM2OTNdLCBbLTAuNDM4NzAyLCAxMS4wOTgzNDFdLCBbMC4wMjM4MDMsIDExLjAxODY4Ml0sIFstMC4wNDk3ODUsIDEwLjcwNjkxOF0sIFswLjM2NzU4LCAxMC4xOTEyMTNdLCBbMC4zNjU5MDEsIDkuNDY1MDA0XSwgWzAuNDYxMTkyLCA4LjY3NzIyM10sIFswLjcxMjAyOSwgOC4zMTI0NjVdLCBbMC40OTA5NTcsIDcuNDExNzQ0XSwgWzAuNTcwMzg0LCA2LjkxNDM1OV0sIFswLjgzNjkzMSwgNi4yNzk5NzldLCBbMS4wNjAxMjIsIDUuOTI4ODM3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJHSEEiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkdoYW5hIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stOC40MzkyOTgsIDcuNjg2MDQzXSwgWy04LjcyMjEyNCwgNy43MTE2NzRdLCBbLTguOTI2MDY1LCA3LjMwOTAzN10sIFstOS4yMDg3ODYsIDcuMzEzOTIxXSwgWy05LjQwMzM0OCwgNy41MjY5MDVdLCBbLTkuMzM3MjgsIDcuOTI4NTM0XSwgWy05Ljc1NTM0MiwgOC41NDEwNTVdLCBbLTEwLjAxNjU2NywgOC40Mjg1MDRdLCBbLTEwLjIzMDA5NCwgOC40MDYyMDZdLCBbLTEwLjUwNTQ3NywgOC4zNDg4OTZdLCBbLTEwLjQ5NDMxNSwgOC43MTU1NDFdLCBbLTEwLjY1NDc3LCA4Ljk3NzE3OF0sIFstMTAuNjIyMzk1LCA5LjI2NzkxXSwgWy0xMC44MzkxNTIsIDkuNjg4MjQ2XSwgWy0xMS4xMTc0ODEsIDEwLjA0NTg3M10sIFstMTEuOTE3Mjc3LCAxMC4wNDY5ODRdLCBbLTEyLjE1MDMzOCwgOS44NTg1NzJdLCBbLTEyLjQyNTkyOSwgOS44MzU4MzRdLCBbLTEyLjU5NjcxOSwgOS42MjAxODhdLCBbLTEyLjcxMTk1OCwgOS4zNDI3MTJdLCBbLTEzLjI0NjU1LCA4LjkwMzA0OV0sIFstMTMuNjg1MTU0LCA5LjQ5NDc0NF0sIFstMTQuMDc0MDQ1LCA5Ljg4NjE2N10sIFstMTQuMzMwMDc2LCAxMC4wMTU3Ml0sIFstMTQuNTc5Njk5LCAxMC4yMTQ0NjddLCBbLTE0LjY5MzIzMiwgMTAuNjU2MzAxXSwgWy0xNC44Mzk1NTQsIDEwLjg3NjU3Ml0sIFstMTUuMTMwMzExLCAxMS4wNDA0MTJdLCBbLTE0LjY4NTY4NywgMTEuNTI3ODI0XSwgWy0xNC4zODIxOTIsIDExLjUwOTI3Ml0sIFstMTQuMTIxNDA2LCAxMS42NzcxMTddLCBbLTEzLjkwMDgsIDExLjY3ODcxOV0sIFstMTMuNzQzMTYxLCAxMS44MTEyNjldLCBbLTEzLjgyODI3MiwgMTIuMTQyNjQ0XSwgWy0xMy43MTg3NDQsIDEyLjI0NzE4Nl0sIFstMTMuNzAwNDc2LCAxMi41ODYxODNdLCBbLTEzLjIxNzgxOCwgMTIuNTc1ODc0XSwgWy0xMi40OTkwNTEsIDEyLjMzMjA5XSwgWy0xMi4yNzg1OTksIDEyLjM1NDQ0XSwgWy0xMi4yMDM1NjUsIDEyLjQ2NTY0OF0sIFstMTEuNjU4MzAxLCAxMi4zODY1ODNdLCBbLTExLjUxMzk0MywgMTIuNDQyOTg4XSwgWy0xMS40NTYxNjksIDEyLjA3NjgzNF0sIFstMTEuMjk3NTc0LCAxMi4wNzc5NzFdLCBbLTExLjAzNjU1NiwgMTIuMjExMjQ1XSwgWy0xMC44NzA4MywgMTIuMTc3ODg3XSwgWy0xMC41OTMyMjQsIDExLjkyMzk3NV0sIFstMTAuMTY1MjE0LCAxMS44NDQwODRdLCBbLTkuODkwOTkzLCAxMi4wNjA0NzldLCBbLTkuNTY3OTEyLCAxMi4xOTQyNDNdLCBbLTkuMzI3NjE2LCAxMi4zMzQyODZdLCBbLTkuMTI3NDc0LCAxMi4zMDgwNl0sIFstOC45MDUyNjUsIDEyLjA4ODM1OF0sIFstOC43ODYwOTksIDExLjgxMjU2MV0sIFstOC4zNzYzMDUsIDExLjM5MzY0Nl0sIFstOC41ODEzMDUsIDExLjEzNjI0Nl0sIFstOC42MjAzMjEsIDEwLjgxMDg5MV0sIFstOC40MDczMTEsIDEwLjkwOTI1N10sIFstOC4yODIzNTcsIDEwLjc5MjU5N10sIFstOC4zMzUzNzcsIDEwLjQ5NDgxMl0sIFstOC4wMjk5NDQsIDEwLjIwNjUzNV0sIFstOC4yMjkzMzcsIDEwLjEyOTAyXSwgWy04LjMwOTYxNiwgOS43ODk1MzJdLCBbLTguMDc5MTE0LCA5LjM3NjIyNF0sIFstNy44MzIxLCA4LjU3NTcwNF0sIFstOC4yMDM0OTksIDguNDU1NDUzXSwgWy04LjI5OTA0OSwgOC4zMTY0NDRdLCBbLTguMjIxNzkyLCA4LjEyMzMyOV0sIFstOC4yODA3MDMsIDcuNjg3MThdLCBbLTguNDM5Mjk4LCA3LjY4NjA0M11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiR0lOIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJHdWluZWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xNi44NDE1MjUsIDEzLjE1MTM5NF0sIFstMTYuNzEzNzI5LCAxMy41OTQ5NTldLCBbLTE1LjYyNDU5NiwgMTMuNjIzNTg3XSwgWy0xNS4zOTg3NywgMTMuODYwMzY5XSwgWy0xNS4wODE3MzUsIDEzLjg3NjQ5Ml0sIFstMTQuNjg3MDMxLCAxMy42MzAzNTddLCBbLTE0LjM3NjcxNCwgMTMuNjI1NjhdLCBbLTE0LjA0Njk5MiwgMTMuNzk0MDY4XSwgWy0xMy44NDQ5NjMsIDEzLjUwNTA0Ml0sIFstMTQuMjc3NzAyLCAxMy4yODA1ODVdLCBbLTE0LjcxMjE5NywgMTMuMjk4MjA3XSwgWy0xNS4xNDExNjMsIDEzLjUwOTUxMl0sIFstMTUuNTExODEzLCAxMy4yNzg1N10sIFstMTUuNjkxMDAxLCAxMy4yNzAzNTNdLCBbLTE1LjkzMTI5NiwgMTMuMTMwMjg0XSwgWy0xNi44NDE1MjUsIDEzLjE1MTM5NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiR01CIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJHYW1iaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xNS4xMzAzMTEsIDExLjA0MDQxMl0sIFstMTUuNjY0MTgsIDExLjQ1ODQ3NF0sIFstMTYuMDg1MjE0LCAxMS41MjQ1OTRdLCBbLTE2LjMxNDc4NywgMTEuODA2NTE1XSwgWy0xNi4zMDg5NDcsIDExLjk1ODcwMl0sIFstMTYuNjEzODM4LCAxMi4xNzA5MTFdLCBbLTE2LjY3NzQ1MiwgMTIuMzg0ODUyXSwgWy0xNi4xNDc3MTcsIDEyLjU0Nzc2Ml0sIFstMTUuODE2NTc0LCAxMi41MTU1NjddLCBbLTE1LjU0ODQ3NywgMTIuNjI4MTddLCBbLTEzLjcwMDQ3NiwgMTIuNTg2MTgzXSwgWy0xMy43MTg3NDQsIDEyLjI0NzE4Nl0sIFstMTMuODI4MjcyLCAxMi4xNDI2NDRdLCBbLTEzLjc0MzE2MSwgMTEuODExMjY5XSwgWy0xMy45MDA4LCAxMS42Nzg3MTldLCBbLTE0LjEyMTQwNiwgMTEuNjc3MTE3XSwgWy0xNC4zODIxOTIsIDExLjUwOTI3Ml0sIFstMTQuNjg1Njg3LCAxMS41Mjc4MjRdLCBbLTE1LjEzMDMxMSwgMTEuMDQwNDEyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJHTkIiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkd1aW5lYSBCaXNzYXUiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzkuNDkyODg5LCAxLjAxMDEyXSwgWzkuMzA1NjEzLCAxLjE2MDkxMV0sIFs5LjY0OTE1OCwgMi4yODM4NjZdLCBbMTEuMjc2NDQ5LCAyLjI2MTA1MV0sIFsxMS4yODUwNzksIDEuMDU3NjYyXSwgWzkuODMwMjg0LCAxLjA2Nzg5NF0sIFs5LjQ5Mjg4OSwgMS4wMTAxMl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiR05RIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJFcXVhdG9yaWFsIEd1aW5lYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWzIzLjY5OTk4LCAzNS43MDUwMDRdLCBbMjQuMjQ2NjY1LCAzNS4zNjgwMjJdLCBbMjUuMDI1MDE1LCAzNS40MjQ5OTZdLCBbMjUuNzY5MjA4LCAzNS4zNTQwMThdLCBbMjUuNzQ1MDIzLCAzNS4xNzk5OThdLCBbMjYuMjkwMDAzLCAzNS4yOTk5OV0sIFsyNi4xNjQ5OTgsIDM1LjAwNDk5NV0sIFsyNC43MjQ5ODIsIDM0LjkxOTk4OF0sIFsyNC43MzUwMDcsIDM1LjA4NDk5MV0sIFsyMy41MTQ5NzgsIDM1LjI3OTk5Ml0sIFsyMy42OTk5OCwgMzUuNzA1MDA0XV1dLCBbW1syNi42MDQxOTYsIDQxLjU2MjExNV0sIFsyNi4yOTQ2MDIsIDQwLjkzNjI2MV0sIFsyNi4wNTY5NDIsIDQwLjgyNDEyM10sIFsyNS40NDc2NzcsIDQwLjg1MjU0NV0sIFsyNC45MjU4NDgsIDQwLjk0NzA2Ml0sIFsyMy43MTQ4MTEsIDQwLjY4NzEyOV0sIFsyNC40MDc5OTksIDQwLjEyNDk5M10sIFsyMy44OTk5NjgsIDM5Ljk2MjAwNl0sIFsyMy4zNDI5OTksIDM5Ljk2MDk5OF0sIFsyMi44MTM5ODgsIDQwLjQ3NjAwNV0sIFsyMi42MjYyOTksIDQwLjI1NjU2MV0sIFsyMi44NDk3NDgsIDM5LjY1OTMxMV0sIFsyMy4zNTAwMjcsIDM5LjE5MDAxMV0sIFsyMi45NzMwOTksIDM4Ljk3MDkwM10sIFsyMy41MzAwMTYsIDM4LjUxMDAwMV0sIFsyNC4wMjUwMjUsIDM4LjIxOTk5M10sIFsyNC4wNDAwMTEsIDM3LjY1NTAxNV0sIFsyMy4xMTUwMDMsIDM3LjkyMDAxMV0sIFsyMy40MDk5NzIsIDM3LjQwOTk5MV0sIFsyMi43NzQ5NzIsIDM3LjMwNTAxXSwgWzIzLjE1NDIyNSwgMzYuNDIyNTA2XSwgWzIyLjQ5MDAyOCwgMzYuNDFdLCBbMjEuNjcwMDI2LCAzNi44NDQ5ODZdLCBbMjEuMjk1MDExLCAzNy42NDQ5ODldLCBbMjEuMTIwMDM0LCAzOC4zMTAzMjNdLCBbMjAuNzMwMDMyLCAzOC43Njk5ODVdLCBbMjAuMjE3NzEyLCAzOS4zNDAyMzVdLCBbMjAuMTUwMDE2LCAzOS42MjQ5OThdLCBbMjAuNjE1LCA0MC4xMTAwMDddLCBbMjAuNjc0OTk3LCA0MC40MzVdLCBbMjAuOTk5OTksIDQwLjU4MDAwNF0sIFsyMS4wMjAwNCwgNDAuODQyNzI3XSwgWzIxLjY3NDE2MSwgNDAuOTMxMjc1XSwgWzIyLjA1NTM3OCwgNDEuMTQ5ODY2XSwgWzIyLjU5NzMwOCwgNDEuMTMwNDg3XSwgWzIyLjc2MTc3LCA0MS4zMDQ4XSwgWzIyLjk1MjM3NywgNDEuMzM3OTk0XSwgWzIzLjY5MjA3NCwgNDEuMzA5MDgxXSwgWzI0LjQ5MjY0NSwgNDEuNTgzODk2XSwgWzI1LjE5NzIwMSwgNDEuMjM0NDg2XSwgWzI2LjEwNjEzOCwgNDEuMzI4ODk5XSwgWzI2LjExNzA0MiwgNDEuODI2OTA1XSwgWzI2LjYwNDE5NiwgNDEuNTYyMTE1XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJHUkMiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkdyZWVjZSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQ2Ljc2Mzc5LCA4Mi42Mjc5Nl0sIFstNDMuNDA2NDQsIDgzLjIyNTE2XSwgWy0zOS44OTc1MywgODMuMTgwMThdLCBbLTM4LjYyMjE0LCA4My41NDkwNV0sIFstMzUuMDg3ODcsIDgzLjY0NTEzXSwgWy0yNy4xMDA0NiwgODMuNTE5NjZdLCBbLTIwLjg0NTM5LCA4Mi43MjY2OV0sIFstMjIuNjkxODIsIDgyLjM0MTY1XSwgWy0yNi41MTc1MywgODIuMjk3NjVdLCBbLTMxLjksIDgyLjJdLCBbLTMxLjM5NjQ2LCA4Mi4wMjE1NF0sIFstMjcuODU2NjYsIDgyLjEzMTc4XSwgWy0yNC44NDQ0OCwgODEuNzg2OTddLCBbLTIyLjkwMzI4LCA4Mi4wOTMxN10sIFstMjIuMDcxNzUsIDgxLjczNDQ5XSwgWy0yMy4xNjk2MSwgODEuMTUyNzFdLCBbLTIwLjYyMzYzLCA4MS41MjQ2Ml0sIFstMTUuNzY4MTgsIDgxLjkxMjQ1XSwgWy0xMi43NzAxOCwgODEuNzE4ODVdLCBbLTEyLjIwODU1LCA4MS4yOTE1NF0sIFstMTYuMjg1MzMsIDgwLjU4MDA0XSwgWy0xNi44NSwgODAuMzVdLCBbLTIwLjA0NjI0LCA4MC4xNzcwOF0sIFstMTcuNzMwMzUsIDgwLjEyOTEyXSwgWy0xOC45LCA3OS40XSwgWy0xOS43MDQ5OSwgNzguNzUxMjhdLCBbLTE5LjY3MzUzLCA3Ny42Mzg1OV0sIFstMTguNDcyODUsIDc2Ljk4NTY1XSwgWy0yMC4wMzUwMywgNzYuOTQ0MzRdLCBbLTIxLjY3OTQ0LCA3Ni42Mjc5NV0sIFstMTkuODM0MDcsIDc2LjA5ODA4XSwgWy0xOS41OTg5NiwgNzUuMjQ4MzhdLCBbLTIwLjY2ODE4LCA3NS4xNTU4NV0sIFstMTkuMzcyODEsIDc0LjI5NTYxXSwgWy0yMS41OTQyMiwgNzQuMjIzODJdLCBbLTIwLjQzNDU0LCA3My44MTcxM10sIFstMjAuNzYyMzQsIDczLjQ2NDM2XSwgWy0yMi4xNzIyMSwgNzMuMzA5NTVdLCBbLTIzLjU2NTkzLCA3My4zMDY2M10sIFstMjIuMzEzMTEsIDcyLjYyOTI4XSwgWy0yMi4yOTk1NCwgNzIuMTg0MDldLCBbLTI0LjI3ODM0LCA3Mi41OTc4OF0sIFstMjQuNzkyOTYsIDcyLjMzMDJdLCBbLTIzLjQ0Mjk2LCA3Mi4wODAxNl0sIFstMjIuMTMyODEsIDcxLjQ2ODk4XSwgWy0yMS43NTM1NiwgNzAuNjYzNjldLCBbLTIzLjUzNjAzLCA3MC40NzFdLCBbLTI0LjMwNzAyLCA3MC44NTY0OV0sIFstMjUuNTQzNDEsIDcxLjQzMDk0XSwgWy0yNS4yMDEzNSwgNzAuNzUyMjZdLCBbLTI2LjM2Mjc2LCA3MC4yMjY0Nl0sIFstMjMuNzI3NDIsIDcwLjE4NDAxXSwgWy0yMi4zNDkwMiwgNzAuMTI5NDZdLCBbLTI1LjAyOTI3LCA2OS4yNTg4XSwgWy0yNy43NDczNywgNjguNDcwNDZdLCBbLTMwLjY3MzcxLCA2OC4xMjUwM10sIFstMzEuNzc2NjUsIDY4LjEyMDc4XSwgWy0zMi44MTEwNSwgNjcuNzM1NDddLCBbLTM0LjIwMTk2LCA2Ni42Nzk3NF0sIFstMzYuMzUyODQsIDY1Ljk3ODldLCBbLTM3LjA0Mzc4LCA2NS45Mzc2OF0sIFstMzguMzc1MDUsIDY1LjY5MjEzXSwgWy0zOS44MTIyMiwgNjUuNDU4NDhdLCBbLTQwLjY2ODk5LCA2NC44Mzk5N10sIFstNDAuNjgyODEsIDY0LjEzOTAyXSwgWy00MS4xODg3LCA2My40ODI0Nl0sIFstNDIuODE5MzgsIDYyLjY4MjMzXSwgWy00Mi40MTY2NiwgNjEuOTAwOTNdLCBbLTQyLjg2NjE5LCA2MS4wNzQwNF0sIFstNDMuMzc4NCwgNjAuMDk3NzJdLCBbLTQ0Ljc4NzUsIDYwLjAzNjc2XSwgWy00Ni4yNjM2NCwgNjAuODUzMjhdLCBbLTQ4LjI2Mjk0LCA2MC44NTg0M10sIFstNDkuMjMzMDgsIDYxLjQwNjgxXSwgWy00OS45MDAzOSwgNjIuMzgzMzZdLCBbLTUxLjYzMzI1LCA2My42MjY5MV0sIFstNTIuMTQwMTQsIDY0LjI3ODQyXSwgWy01Mi4yNzY1OSwgNjUuMTc2N10sIFstNTMuNjYxNjYsIDY2LjA5OTU3XSwgWy01My4zMDE2MSwgNjYuODM2NV0sIFstNTMuOTY5MTEsIDY3LjE4ODk5XSwgWy01Mi45ODA0LCA2OC4zNTc1OV0sIFstNTEuNDc1MzYsIDY4LjcyOTU4XSwgWy01MS4wODA0MSwgNjkuMTQ3ODFdLCBbLTUwLjg3MTIyLCA2OS45MjkxXSwgWy01Mi4wMTM1ODUsIDY5LjU3NDkyNV0sIFstNTIuNTU3OTIsIDY5LjQyNjE2XSwgWy01My40NTYyOSwgNjkuMjgzNjI1XSwgWy01NC42ODMzNiwgNjkuNjEwMDNdLCBbLTU0Ljc1MDAxLCA3MC4yODkzMl0sIFstNTQuMzU4ODQsIDcwLjgyMTMxNV0sIFstNTMuNDMxMzE1LCA3MC44MzU3NTVdLCBbLTUxLjM5MDE0LCA3MC41Njk3OF0sIFstNTMuMTA5MzcsIDcxLjIwNDg1XSwgWy01NC4wMDQyMiwgNzEuNTQ3MTldLCBbLTU1LCA3MS40MDY1MzddLCBbLTU1LjgzNDY4LCA3MS42NTQ0NF0sIFstNTQuNzE4MTksIDcyLjU4NjI1XSwgWy01NS4zMjYzNCwgNzIuOTU4NjFdLCBbLTU2LjEyMDAzLCA3My42NDk3N10sIFstNTcuMzIzNjMsIDc0LjcxMDI2XSwgWy01OC41OTY3OSwgNzUuMDk4NjFdLCBbLTU4LjU4NTE2LCA3NS41MTcyN10sIFstNjEuMjY4NjEsIDc2LjEwMjM4XSwgWy02My4zOTE2NSwgNzYuMTc1Ml0sIFstNjYuMDY0MjcsIDc2LjEzNDg2XSwgWy02OC41MDQzOCwgNzYuMDYxNDFdLCBbLTY5LjY2NDg1LCA3Ni4zNzk3NV0sIFstNzEuNDAyNTcsIDc3LjAwODU3XSwgWy02OC43NzY3MSwgNzcuMzIzMTJdLCBbLTY2Ljc2Mzk3LCA3Ny4zNzU5NV0sIFstNzEuMDQyOTMsIDc3LjYzNTk1XSwgWy03My4yOTcsIDc4LjA0NDE5XSwgWy03My4xNTkzOCwgNzguNDMyNzFdLCBbLTY5LjM3MzQ1LCA3OC45MTM4OF0sIFstNjUuNzEwNywgNzkuMzk0MzZdLCBbLTY1LjMyMzksIDc5Ljc1ODE0XSwgWy02OC4wMjI5OCwgODAuMTE3MjFdLCBbLTY3LjE1MTI5LCA4MC41MTU4Ml0sIFstNjMuNjg5MjUsIDgxLjIxMzk2XSwgWy02Mi4yMzQ0NCwgODEuMzIxMV0sIFstNjIuNjUxMTYsIDgxLjc3MDQyXSwgWy02MC4yODI0OSwgODIuMDMzNjNdLCBbLTU3LjIwNzQ0LCA4Mi4xOTA3NF0sIFstNTQuMTM0NDIsIDgyLjE5OTYyXSwgWy01My4wNDMyOCwgODEuODg4MzNdLCBbLTUwLjM5MDYxLCA4Mi40Mzg4M10sIFstNDguMDAzODYsIDgyLjA2NDgxXSwgWy00Ni41OTk4NCwgODEuOTg1OTQ1XSwgWy00NC41MjMsIDgxLjY2MDddLCBbLTQ2LjkwMDcsIDgyLjE5OTc5XSwgWy00Ni43NjM3OSwgODIuNjI3OTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkdSTCIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiR3JlZW5sYW5kIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stOTAuMDk1NTU1LCAxMy43MzUzMzhdLCBbLTkwLjYwODYyNCwgMTMuOTA5NzcxXSwgWy05MS4yMzI0MSwgMTMuOTI3ODMyXSwgWy05MS42ODk3NDcsIDE0LjEyNjIxOF0sIFstOTIuMjI3NzUsIDE0LjUzODgyOV0sIFstOTIuMjAzMjMsIDE0LjgzMDEwM10sIFstOTIuMDg3MjE2LCAxNS4wNjQ1ODVdLCBbLTkyLjIyOTI0OSwgMTUuMjUxNDQ3XSwgWy05MS43NDc5NiwgMTYuMDY2NTY1XSwgWy05MC40NjQ0NzMsIDE2LjA2OTU2Ml0sIFstOTAuNDM4ODY3LCAxNi40MTAxMV0sIFstOTAuNjAwODQ3LCAxNi40NzA3NzhdLCBbLTkwLjcxMTgyMiwgMTYuNjg3NDgzXSwgWy05MS4wODE2NywgMTYuOTE4NDc3XSwgWy05MS40NTM5MjEsIDE3LjI1MjE3N10sIFstOTEuMDAyMjY5LCAxNy4yNTQ2NThdLCBbLTkxLjAwMTUyLCAxNy44MTc1OTVdLCBbLTkwLjA2NzkzNCwgMTcuODE5MzI2XSwgWy04OS4xNDMwOCwgMTcuODA4MzE5XSwgWy04OS4xNTA4MDYsIDE3LjAxNTU3N10sIFstODkuMjI5MTIyLCAxNS44ODY5MzhdLCBbLTg4LjkzMDYxMywgMTUuODg3MjczXSwgWy04OC42MDQ1ODYsIDE1LjcwNjM4XSwgWy04OC41MTgzNjQsIDE1Ljg1NTM4OV0sIFstODguMjI1MDIzLCAxNS43Mjc3MjJdLCBbLTg4LjY4MDY4LCAxNS4zNDYyNDddLCBbLTg5LjE1NDgxMSwgMTUuMDY2NDE5XSwgWy04OS4yMjUyMiwgMTQuODc0Mjg2XSwgWy04OS4xNDU1MzUsIDE0LjY3ODAxOV0sIFstODkuMzUzMzI2LCAxNC40MjQxMzNdLCBbLTg5LjU4NzM0MywgMTQuMzYyNTg2XSwgWy04OS41MzQyMTksIDE0LjI0NDgxNl0sIFstODkuNzIxOTM0LCAxNC4xMzQyMjhdLCBbLTkwLjA2NDY3OCwgMTMuODgxOTddLCBbLTkwLjA5NTU1NSwgMTMuNzM1MzM4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJHVE0iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkd1YXRlbWFsYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTU5Ljc1ODI4NSwgOC4zNjcwMzVdLCBbLTU5LjEwMTY4NCwgNy45OTkyMDJdLCBbLTU4LjQ4Mjk2MiwgNy4zNDc2OTFdLCBbLTU4LjQ1NDg3NiwgNi44MzI3ODddLCBbLTU4LjA3ODEwMywgNi44MDkwOTRdLCBbLTU3LjU0MjIxOSwgNi4zMjEyNjhdLCBbLTU3LjE0NzQzNiwgNS45NzMxNV0sIFstNTcuMzA3MjQ2LCA1LjA3MzU2N10sIFstNTcuOTE0Mjg5LCA0LjgxMjYyNl0sIFstNTcuODYwMjEsIDQuNTc2ODAxXSwgWy01OC4wNDQ2OTQsIDQuMDYwODY0XSwgWy01Ny42MDE1NjksIDMuMzM0NjU1XSwgWy01Ny4yODE0MzMsIDMuMzMzNDkyXSwgWy01Ny4xNTAwOTgsIDIuNzY4OTI3XSwgWy01Ni41MzkzODYsIDEuODk5NTIzXSwgWy01Ni43ODI3MDQsIDEuODYzNzExXSwgWy01Ny4zMzU4MjMsIDEuOTQ4NTM4XSwgWy01Ny42NjA5NzEsIDEuNjgyNTg1XSwgWy01OC4xMTM0NSwgMS41MDcxOTVdLCBbLTU4LjQyOTQ3NywgMS40NjM5NDJdLCBbLTU4LjU0MDAxMywgMS4yNjgwODhdLCBbLTU5LjAzMDg2MiwgMS4zMTc2OThdLCBbLTU5LjY0NjA0NCwgMS43ODY4OTRdLCBbLTU5LjcxODU0NiwgMi4yNDk2M10sIFstNTkuOTc0NTI1LCAyLjc1NTIzM10sIFstNTkuODE1NDEzLCAzLjYwNjQ5OV0sIFstNTkuNTM4MDQsIDMuOTU4ODAzXSwgWy01OS43Njc0MDYsIDQuNDIzNTAzXSwgWy02MC4xMTEwMDIsIDQuNTc0OTY3XSwgWy01OS45ODA5NTksIDUuMDE0MDYxXSwgWy02MC4yMTM2ODMsIDUuMjQ0NDg2XSwgWy02MC43MzM1NzQsIDUuMjAwMjc3XSwgWy02MS40MTAzMDMsIDUuOTU5MDY4XSwgWy02MS4xMzk0MTUsIDYuMjM0Mjk3XSwgWy02MS4xNTkzMzYsIDYuNjk2MDc3XSwgWy02MC41NDM5OTksIDYuODU2NTg0XSwgWy02MC4yOTU2NjgsIDcuMDQzOTExXSwgWy02MC42Mzc5NzMsIDcuNDE1XSwgWy02MC41NTA1ODgsIDcuNzc5NjAzXSwgWy01OS43NTgyODUsIDguMzY3MDM1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJHVVkiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkd1eWFuYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTg3LjMxNjY1NCwgMTIuOTg0Njg2XSwgWy04Ny40ODk0MDksIDEzLjI5NzUzNV0sIFstODcuNzkzMTExLCAxMy4zODQ0OF0sIFstODcuNzIzNTAzLCAxMy43ODUwNV0sIFstODcuODU5NTE1LCAxMy44OTMzMTJdLCBbLTg4LjA2NTM0MywgMTMuOTY0NjI2XSwgWy04OC41MDM5OTgsIDEzLjg0NTQ4Nl0sIFstODguNTQxMjMxLCAxMy45ODAxNTVdLCBbLTg4Ljg0MzA3MywgMTQuMTQwNTA3XSwgWy04OS4wNTg1MTIsIDE0LjM0MDAyOV0sIFstODkuMzUzMzI2LCAxNC40MjQxMzNdLCBbLTg5LjE0NTUzNSwgMTQuNjc4MDE5XSwgWy04OS4yMjUyMiwgMTQuODc0Mjg2XSwgWy04OS4xNTQ4MTEsIDE1LjA2NjQxOV0sIFstODguNjgwNjgsIDE1LjM0NjI0N10sIFstODguMjI1MDIzLCAxNS43Mjc3MjJdLCBbLTg4LjEyMTE1MywgMTUuNjg4NjU1XSwgWy04Ny45MDE4MTMsIDE1Ljg2NDQ1OF0sIFstODcuNjE1NjgsIDE1Ljg3ODc5OV0sIFstODcuNTIyOTIxLCAxNS43OTcyNzldLCBbLTg3LjM2Nzc2MiwgMTUuODQ2OTRdLCBbLTg2LjkwMzE5MSwgMTUuNzU2NzEzXSwgWy04Ni40NDA5NDYsIDE1Ljc4MjgzNV0sIFstODYuMTE5MjM0LCAxNS44OTM0NDldLCBbLTg2LjAwMTk1NCwgMTYuMDA1NDA2XSwgWy04NS42ODMzMTcsIDE1Ljk1MzY1Ml0sIFstODUuNDQ0MDA0LCAxNS44ODU3NDldLCBbLTg1LjE4MjQ0NCwgMTUuOTA5MTU4XSwgWy04NC45ODM3MjIsIDE1Ljk5NTkyM10sIFstODQuNTI2OTgsIDE1Ljg1NzIyNF0sIFstODQuMzY4MjU2LCAxNS44MzUxNThdLCBbLTg0LjA2MzA1NSwgMTUuNjQ4MjQ0XSwgWy04My43NzM5NzcsIDE1LjQyNDA3Ml0sIFstODMuNDEwMzgxLCAxNS4yNzA5MDNdLCBbLTgzLjE0NzIxOSwgMTQuOTk1ODI5XSwgWy04My40ODk5ODksIDE1LjAxNjI2N10sIFstODMuNjI4NTg1LCAxNC44ODAwNzRdLCBbLTgzLjk3NTcyMSwgMTQuNzQ5NDM2XSwgWy04NC4yMjgzNDIsIDE0Ljc0ODc2NF0sIFstODQuNDQ5MzM2LCAxNC42MjE2MTRdLCBbLTg0LjY0OTU4MiwgMTQuNjY2ODA1XSwgWy04NC44MjAwMzcsIDE0LjgxOTU4N10sIFstODQuOTI0NTAxLCAxNC43OTA0OTNdLCBbLTg1LjA1Mjc4NywgMTQuNTUxNTQxXSwgWy04NS4xNDg3NTEsIDE0LjU2MDE5N10sIFstODUuMTY1MzY1LCAxNC4zNTQzN10sIFstODUuNTE0NDEzLCAxNC4wNzkwMTJdLCBbLTg1LjY5ODY2NSwgMTMuOTYwMDc4XSwgWy04NS44MDEyOTUsIDEzLjgzNjA1NV0sIFstODYuMDk2MjY0LCAxNC4wMzgxODddLCBbLTg2LjMxMjE0MiwgMTMuNzcxMzU2XSwgWy04Ni41MjA3MDgsIDEzLjc3ODQ4N10sIFstODYuNzU1MDg3LCAxMy43NTQ4NDVdLCBbLTg2LjczMzgyMiwgMTMuMjYzMDkzXSwgWy04Ni44ODA1NTcsIDEzLjI1NDIwNF0sIFstODcuMDA1NzY5LCAxMy4wMjU3OTRdLCBbLTg3LjMxNjY1NCwgMTIuOTg0Njg2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJITkQiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkhvbmR1cmFzIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxOC44Mjk4MzgsIDQ1LjkwODg3OF0sIFsxOS4wNzI3NjksIDQ1LjUyMTUxMV0sIFsxOS4zOTA0NzYsIDQ1LjIzNjUxNl0sIFsxOS4wMDU0ODYsIDQ0Ljg2MDIzNF0sIFsxOC41NTMyMTQsIDQ1LjA4MTU5XSwgWzE3Ljg2MTc4MywgNDUuMDY3NzRdLCBbMTcuMDAyMTQ2LCA0NS4yMzM3NzddLCBbMTYuNTM0OTM5LCA0NS4yMTE2MDhdLCBbMTYuMzE4MTU3LCA0NS4wMDQxMjddLCBbMTUuOTU5MzY3LCA0NS4yMzM3NzddLCBbMTUuNzUwMDI2LCA0NC44MTg3MTJdLCBbMTYuMjM5NjYsIDQ0LjM1MTE0M10sIFsxNi40NTY0NDMsIDQ0LjA0MTI0XSwgWzE2LjkxNjE1NiwgNDMuNjY3NzIyXSwgWzE3LjI5NzM3MywgNDMuNDQ2MzQxXSwgWzE3LjY3NDkyMiwgNDMuMDI4NTYzXSwgWzE4LjU2LCA0Mi42NV0sIFsxOC40NTAwMTYsIDQyLjQ3OTk5MV0sIFsxNy41MDk5NywgNDIuODQ5OTk1XSwgWzE2LjkzMDAwNiwgNDMuMjA5OTk4XSwgWzE2LjAxNTM4NSwgNDMuNTA3MjE1XSwgWzE1LjE3NDQ1NCwgNDQuMjQzMTkxXSwgWzE1LjM3NjI1LCA0NC4zMTc5MTVdLCBbMTQuOTIwMzA5LCA0NC43Mzg0ODRdLCBbMTQuOTAxNjAyLCA0NS4wNzYwNl0sIFsxNC4yNTg3NDgsIDQ1LjIzMzc3N10sIFsxMy45NTIyNTUsIDQ0LjgwMjEyNF0sIFsxMy42NTY5NzYsIDQ1LjEzNjkzNV0sIFsxMy42Nzk0MDMsIDQ1LjQ4NDE0OV0sIFsxMy43MTUwNiwgNDUuNTAwMzI0XSwgWzE0LjQxMTk2OCwgNDUuNDY2MTY2XSwgWzE0LjU5NTEwOSwgNDUuNjM0OTQxXSwgWzE0LjkzNTI0NCwgNDUuNDcxNjk1XSwgWzE1LjMyNzY3NSwgNDUuNDUyMzE2XSwgWzE1LjMyMzk1NCwgNDUuNzMxNzgzXSwgWzE1LjY3MTUzLCA0NS44MzQxNTRdLCBbMTUuNzY4NzMzLCA0Ni4yMzgxMDhdLCBbMTYuNTY0ODA4LCA0Ni41MDM3NTFdLCBbMTYuODgyNTE1LCA0Ni4zODA2MzJdLCBbMTcuNjMwMDY2LCA0NS45NTE3NjldLCBbMTguNDU2MDYyLCA0NS43NTk0ODFdLCBbMTguODI5ODM4LCA0NS45MDg4NzhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkhSViIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQ3JvYXRpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTczLjE4OTc5MSwgMTkuOTE1Njg0XSwgWy03Mi41Nzk2NzMsIDE5Ljg3MTUwMV0sIFstNzEuNzEyMzYxLCAxOS43MTQ0NTZdLCBbLTcxLjYyNDg3MywgMTkuMTY5ODM4XSwgWy03MS43MDEzMDMsIDE4Ljc4NTQxN10sIFstNzEuOTQ1MTEyLCAxOC42MTY5XSwgWy03MS42ODc3MzgsIDE4LjMxNjY2XSwgWy03MS43MDgzMDUsIDE4LjA0NDk5N10sIFstNzIuMzcyNDc2LCAxOC4yMTQ5NjFdLCBbLTcyLjg0NDQxMSwgMTguMTQ1NjExXSwgWy03My40NTQ1NTUsIDE4LjIxNzkwNl0sIFstNzMuOTIyNDMzLCAxOC4wMzA5OTNdLCBbLTc0LjQ1ODAzNCwgMTguMzQyNTVdLCBbLTc0LjM2OTkyNSwgMTguNjY0OTA4XSwgWy03My40NDk1NDIsIDE4LjUyNjA1M10sIFstNzIuNjk0OTM3LCAxOC40NDU3OTldLCBbLTcyLjMzNDg4MiwgMTguNjY4NDIyXSwgWy03Mi43OTE2NSwgMTkuMTAxNjI1XSwgWy03Mi43ODQxMDUsIDE5LjQ4MzU5MV0sIFstNzMuNDE1MDIyLCAxOS42Mzk1NTFdLCBbLTczLjE4OTc5MSwgMTkuOTE1Njg0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJIVEkiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkhhaXRpIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxNi4yMDIyOTgsIDQ2Ljg1MjM4Nl0sIFsxNi41MzQyNjgsIDQ3LjQ5NjE3MV0sIFsxNi4zNDA1ODQsIDQ3LjcxMjkwMl0sIFsxNi45MDM3NTQsIDQ3LjcxNDg2Nl0sIFsxNi45Nzk2NjcsIDQ4LjEyMzQ5N10sIFsxNy40ODg0NzMsIDQ3Ljg2NzQ2Nl0sIFsxNy44NTcxMzMsIDQ3Ljc1ODQyOV0sIFsxOC42OTY1MTMsIDQ3Ljg4MDk1NF0sIFsxOC43NzcwMjUsIDQ4LjA4MTc2OF0sIFsxOS4xNzQzNjUsIDQ4LjExMTM3OV0sIFsxOS42NjEzNjQsIDQ4LjI2NjYxNV0sIFsxOS43Njk0NzEsIDQ4LjIwMjY5MV0sIFsyMC4yMzkwNTQsIDQ4LjMyNzU2N10sIFsyMC40NzM1NjIsIDQ4LjU2Mjg1XSwgWzIwLjgwMTI5NCwgNDguNjIzODU0XSwgWzIxLjg3MjIzNiwgNDguMzE5OTcxXSwgWzIyLjA4NTYwOCwgNDguNDIyMjY0XSwgWzIyLjY0MDgyLCA0OC4xNTAyNF0sIFsyMi43MTA1MzEsIDQ3Ljg4MjE5NF0sIFsyMi4wOTk3NjgsIDQ3LjY3MjQzOV0sIFsyMS42MjY1MTUsIDQ2Ljk5NDIzOF0sIFsyMS4wMjE5NTIsIDQ2LjMxNjA4OF0sIFsyMC4yMjAxOTIsIDQ2LjEyNzQ2OV0sIFsxOS41OTYwNDUsIDQ2LjE3MTczXSwgWzE4LjgyOTgzOCwgNDUuOTA4ODc4XSwgWzE4LjQ1NjA2MiwgNDUuNzU5NDgxXSwgWzE3LjYzMDA2NiwgNDUuOTUxNzY5XSwgWzE2Ljg4MjUxNSwgNDYuMzgwNjMyXSwgWzE2LjU2NDgwOCwgNDYuNTAzNzUxXSwgWzE2LjM3MDUwNSwgNDYuODQxMzI3XSwgWzE2LjIwMjI5OCwgNDYuODUyMzg2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJIVU4iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkh1bmdhcnkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxMjAuNzE1NjA5LCAtMTAuMjM5NTgxXSwgWzEyMC4yOTUwMTQsIC0xMC4yNTg2NV0sIFsxMTguOTY3ODA4LCAtOS41NTc5NjldLCBbMTE5LjkwMDMxLCAtOS4zNjEzNF0sIFsxMjAuNDI1NzU2LCAtOS42NjU5MjFdLCBbMTIwLjc3NTUwMiwgLTkuOTY5Njc1XSwgWzEyMC43MTU2MDksIC0xMC4yMzk1ODFdXV0sIFtbWzEyNC40MzU5NSwgLTEwLjE0MDAwMV0sIFsxMjMuNTc5OTgyLCAtMTAuMzU5OTg3XSwgWzEyMy40NTk5ODksIC0xMC4yMzk5OTVdLCBbMTIzLjU1MDAwOSwgLTkuOTAwMDE2XSwgWzEyMy45ODAwMDksIC05LjI5MDAyN10sIFsxMjQuOTY4NjgyLCAtOC44OTI3OV0sIFsxMjUuMDcwMDIsIC05LjA4OTk4N10sIFsxMjUuMDg4NTIsIC05LjM5MzE3M10sIFsxMjQuNDM1OTUsIC0xMC4xNDAwMDFdXV0sIFtbWzExNy45MDAwMTgsIC04LjA5NTY4MV0sIFsxMTguMjYwNjE2LCAtOC4zNjIzODNdLCBbMTE4Ljg3ODQ2LCAtOC4yODA2ODNdLCBbMTE5LjEyNjUwNywgLTguNzA1ODI1XSwgWzExNy45NzA0MDIsIC04LjkwNjYzOV0sIFsxMTcuMjc3NzMxLCAtOS4wNDA4OTVdLCBbMTE2Ljc0MDE0MSwgLTkuMDMyOTM3XSwgWzExNy4wODM3MzcsIC04LjQ1NzE1OF0sIFsxMTcuNjMyMDI0LCAtOC40NDkzMDNdLCBbMTE3LjkwMDAxOCwgLTguMDk1NjgxXV1dLCBbW1sxMjIuOTAzNTM3LCAtOC4wOTQyMzRdLCBbMTIyLjc1Njk4MywgLTguNjQ5ODA4XSwgWzEyMS4yNTQ0OTEsIC04LjkzMzY2Nl0sIFsxMTkuOTI0MzkxLCAtOC44MTA0MThdLCBbMTE5LjkyMDkyOSwgLTguNDQ0ODU5XSwgWzEyMC43MTUwOTIsIC04LjIzNjk2NV0sIFsxMjEuMzQxNjY5LCAtOC41MzY3NF0sIFsxMjIuMDA3MzY1LCAtOC40NjA2Ml0sIFsxMjIuOTAzNTM3LCAtOC4wOTQyMzRdXV0sIFtbWzEwOC42MjM0NzksIC02Ljc3NzY3NF0sIFsxMTAuNTM5MjI3LCAtNi44NzczNThdLCBbMTEwLjc1OTU3NiwgLTYuNDY1MTg2XSwgWzExMi42MTQ4MTEsIC02Ljk0NjAzNl0sIFsxMTIuOTc4NzY4LCAtNy41OTQyMTNdLCBbMTE0LjQ3ODkzNSwgLTcuNzc2NTI4XSwgWzExNS43MDU1MjcsIC04LjM3MDgwN10sIFsxMTQuNTY0NTExLCAtOC43NTE4MTddLCBbMTEzLjQ2NDczNCwgLTguMzQ4OTQ3XSwgWzExMi41NTk2NzIsIC04LjM3NjE4MV0sIFsxMTEuNTIyMDYxLCAtOC4zMDIxMjldLCBbMTEwLjU4NjE1LCAtOC4xMjI2MDVdLCBbMTA5LjQyNzY2NywgLTcuNzQwNjY0XSwgWzEwOC42OTM2NTUsIC03LjY0MTZdLCBbMTA4LjI3Nzc2MywgLTcuNzY2NjU3XSwgWzEwNi40NTQxMDIsIC03LjM1NDldLCBbMTA2LjI4MDYyNCwgLTYuOTI0OV0sIFsxMDUuMzY1NDg2LCAtNi44NTE0MTZdLCBbMTA2LjA1MTY0NiwgLTUuODk1OTE5XSwgWzEwNy4yNjUwMDksIC01Ljk1NDk4NV0sIFsxMDguMDcyMDkxLCAtNi4zNDU3NjJdLCBbMTA4LjQ4Njg0NiwgLTYuNDIxOTg1XSwgWzEwOC42MjM0NzksIC02Ljc3NzY3NF1dXSwgW1tbMTM0LjcyNDYyNCwgLTYuMjE0NDAxXSwgWzEzNC4yMTAxMzQsIC02Ljg5NTIzOF0sIFsxMzQuMTEyNzc2LCAtNi4xNDI0NjddLCBbMTM0LjI5MDMzNiwgLTUuNzgzMDU4XSwgWzEzNC40OTk2MjUsIC01LjQ0NTA0Ml0sIFsxMzQuNzI3MDAyLCAtNS43Mzc1ODJdLCBbMTM0LjcyNDYyNCwgLTYuMjE0NDAxXV1dLCBbW1sxMjcuMjQ5MjE1LCAtMy40NTkwNjVdLCBbMTI2Ljg3NDkyMywgLTMuNzkwOTgzXSwgWzEyNi4xODM4MDIsIC0zLjYwNzM3Nl0sIFsxMjUuOTg5MDM0LCAtMy4xNzcyNzNdLCBbMTI3LjAwMDY1MSwgLTMuMTI5MzE4XSwgWzEyNy4yNDkyMTUsIC0zLjQ1OTA2NV1dXSwgW1tbMTMwLjQ3MTM0NCwgLTMuMDkzNzY0XSwgWzEzMC44MzQ4MzYsIC0zLjg1ODQ3Ml0sIFsxMjkuOTkwNTQ3LCAtMy40NDYzMDFdLCBbMTI5LjE1NTI0OSwgLTMuMzYyNjM3XSwgWzEyOC41OTA2ODQsIC0zLjQyODY3OV0sIFsxMjcuODk4ODkxLCAtMy4zOTM0MzZdLCBbMTI4LjEzNTg3OSwgLTIuODQzNjVdLCBbMTI5LjM3MDk5OCwgLTIuODAyMTU0XSwgWzEzMC40NzEzNDQsIC0zLjA5Mzc2NF1dXSwgW1tbMTM0LjE0MzM2OCwgLTEuMTUxODY3XSwgWzEzNC40MjI2MjcsIC0yLjc2OTE4NV0sIFsxMzUuNDU3NjAzLCAtMy4zNjc3NTNdLCBbMTM2LjI5MzMxNCwgLTIuMzA3MDQyXSwgWzEzNy40NDA3MzgsIC0xLjcwMzUxM10sIFsxMzguMzI5NzI3LCAtMS43MDI2ODZdLCBbMTM5LjE4NDkyMSwgLTIuMDUxMjk2XSwgWzEzOS45MjY2ODQsIC0yLjQwOTA1Ml0sIFsxNDEuMDAwMjEsIC0yLjYwMDE1MV0sIFsxNDEuMDE3MDU3LCAtNS44NTkwMjJdLCBbMTQxLjAzMzg1MiwgLTkuMTE3ODkzXSwgWzE0MC4xNDM0MTUsIC04LjI5NzE2OF0sIFsxMzkuMTI3NzY3LCAtOC4wOTYwNDNdLCBbMTM4Ljg4MTQ3NywgLTguMzgwOTM1XSwgWzEzNy42MTQ0NzQsIC04LjQxMTY4M10sIFsxMzguMDM5MDk5LCAtNy41OTc4ODJdLCBbMTM4LjY2ODYyMSwgLTcuMzIwMjI1XSwgWzEzOC40MDc5MTQsIC02LjIzMjg0OV0sIFsxMzcuOTI3ODQsIC01LjM5MzM2Nl0sIFsxMzUuOTg5MjUsIC00LjU0NjU0NF0sIFsxMzUuMTY0NTk4LCAtNC40NjI5MzFdLCBbMTMzLjY2Mjg4LCAtMy41Mzg4NTNdLCBbMTMzLjM2NzcwNSwgLTQuMDI0ODE5XSwgWzEzMi45ODM5NTYsIC00LjExMjk3OV0sIFsxMzIuNzU2OTQxLCAtMy43NDYyODNdLCBbMTMyLjc1Mzc4OSwgLTMuMzExNzg3XSwgWzEzMS45ODk4MDQsIC0yLjgyMDU1MV0sIFsxMzMuMDY2ODQ1LCAtMi40NjA0MThdLCBbMTMzLjc4MDAzMSwgLTIuNDc5ODQ4XSwgWzEzMy42OTYyMTIsIC0yLjIxNDU0Ml0sIFsxMzIuMjMyMzczLCAtMi4yMTI1MjZdLCBbMTMxLjgzNjIyMiwgLTEuNjE3MTYyXSwgWzEzMC45NDI4NCwgLTEuNDMyNTIyXSwgWzEzMC41MTk1NTgsIC0wLjkzNzcyXSwgWzEzMS44Njc1MzgsIC0wLjY5NTQ2MV0sIFsxMzIuMzgwMTE2LCAtMC4zNjk1MzhdLCBbMTMzLjk4NTU0OCwgLTAuNzgwMjFdLCBbMTM0LjE0MzM2OCwgLTEuMTUxODY3XV1dLCBbW1sxMjUuMjQwNTAxLCAxLjQxOTgzNl0sIFsxMjQuNDM3MDM1LCAwLjQyNzg4MV0sIFsxMjMuNjg1NTA1LCAwLjIzNTU5M10sIFsxMjIuNzIzMDgzLCAwLjQzMTEzN10sIFsxMjEuMDU2NzI1LCAwLjM4MTIxN10sIFsxMjAuMTgzMDgzLCAwLjIzNzI0N10sIFsxMjAuMDQwODcsIC0wLjUxOTY1OF0sIFsxMjAuOTM1OTA1LCAtMS40MDg5MDZdLCBbMTIxLjQ3NTgyMSwgLTAuOTU1OTYyXSwgWzEyMy4zNDA1NjUsIC0wLjYxNTY3M10sIFsxMjMuMjU4Mzk5LCAtMS4wNzYyMTNdLCBbMTIyLjgyMjcxNSwgLTAuOTMwOTUxXSwgWzEyMi4zODg1MywgLTEuNTE2ODU4XSwgWzEyMS41MDgyNzQsIC0xLjkwNDQ4M10sIFsxMjIuNDU0NTcyLCAtMy4xODYwNThdLCBbMTIyLjI3MTg5NiwgLTMuNTI5NV0sIFsxMjMuMTcwOTYzLCAtNC42ODM2OTNdLCBbMTIzLjE2MjMzMywgLTUuMzQwNjA0XSwgWzEyMi42Mjg1MTUsIC01LjYzNDU5MV0sIFsxMjIuMjM2Mzk0LCAtNS4yODI5MzNdLCBbMTIyLjcxOTU2OSwgLTQuNDY0MTcyXSwgWzEyMS43MzgyMzQsIC00Ljg1MTMzMV0sIFsxMjEuNDg5NDYzLCAtNC41NzQ1NTNdLCBbMTIxLjYxOTE3MSwgLTQuMTg4NDc4XSwgWzEyMC44OTgxODIsIC0zLjYwMjEwNV0sIFsxMjAuOTcyMzg5LCAtMi42Mjc2NDNdLCBbMTIwLjMwNTQ1MywgLTIuOTMxNjA0XSwgWzEyMC4zOTAwNDcsIC00LjA5NzU3OV0sIFsxMjAuNDMwNzE3LCAtNS41MjgyNDFdLCBbMTE5Ljc5NjU0MywgLTUuNjczNF0sIFsxMTkuMzY2OTA2LCAtNS4zNzk4NzhdLCBbMTE5LjY1MzYwNiwgLTQuNDU5NDE3XSwgWzExOS40OTg4MzUsIC0zLjQ5NDQxMl0sIFsxMTkuMDc4MzQ0LCAtMy40ODcwMjJdLCBbMTE4Ljc2Nzc2OSwgLTIuODAxOTk5XSwgWzExOS4xODA5NzQsIC0yLjE0NzEwNF0sIFsxMTkuMzIzMzk0LCAtMS4zNTMxNDddLCBbMTE5LjgyNTk5OSwgMC4xNTQyNTRdLCBbMTIwLjAzNTcwMiwgMC41NjY0NzddLCBbMTIwLjg4NTc3OSwgMS4zMDkyMjNdLCBbMTIxLjY2NjgxNywgMS4wMTM5NDRdLCBbMTIyLjkyNzU2NywgMC44NzUxOTJdLCBbMTI0LjA3NzUyMiwgMC45MTcxMDJdLCBbMTI1LjA2NTk4OSwgMS42NDMyNTldLCBbMTI1LjI0MDUwMSwgMS40MTk4MzZdXV0sIFtbWzEyOC42ODgyNDksIDEuMTMyMzg2XSwgWzEyOC42MzU5NTIsIDAuMjU4NDg2XSwgWzEyOC4xMjAxNywgMC4zNTY0MTNdLCBbMTI3Ljk2ODAzNCwgLTAuMjUyMDc3XSwgWzEyOC4zNzk5OTksIC0wLjc4MDAwNF0sIFsxMjguMTAwMDE2LCAtMC44OTk5OTZdLCBbMTI3LjY5NjQ3NSwgLTAuMjY2NTk4XSwgWzEyNy4zOTk0OSwgMS4wMTE3MjJdLCBbMTI3LjYwMDUxMiwgMS44MTA2OTFdLCBbMTI3LjkzMjM3OCwgMi4xNzQ1OTZdLCBbMTI4LjAwNDE1NiwgMS42Mjg1MzFdLCBbMTI4LjU5NDU1OSwgMS41NDA4MTFdLCBbMTI4LjY4ODI0OSwgMS4xMzIzODZdXV0sIFtbWzExNy44NzU2MjcsIDEuODI3NjQxXSwgWzExOC45OTY3NDcsIDAuOTAyMjE5XSwgWzExNy44MTE4NTgsIDAuNzg0MjQyXSwgWzExNy40NzgzMzksIDAuMTAyNDc1XSwgWzExNy41MjE2NDQsIC0wLjgwMzcyM10sIFsxMTYuNTYwMDQ4LCAtMS40ODc2NjFdLCBbMTE2LjUzMzc5NywgLTIuNDgzNTE3XSwgWzExNi4xNDgwODQsIC00LjAxMjcyNl0sIFsxMTYuMDAwODU4LCAtMy42NTcwMzddLCBbMTE0Ljg2NDgwMywgLTQuMTA2OTg0XSwgWzExNC40Njg2NTIsIC0zLjQ5NTcwNF0sIFsxMTMuNzU1NjcyLCAtMy40MzkxN10sIFsxMTMuMjU2OTk0LCAtMy4xMTg3NzZdLCBbMTEyLjA2ODEyNiwgLTMuNDc4MzkyXSwgWzExMS43MDMyOTEsIC0yLjk5NDQ0Ml0sIFsxMTEuMDQ4MjQsIC0zLjA0OTQyNl0sIFsxMTAuMjIzODQ2LCAtMi45MzQwMzJdLCBbMTEwLjA3MDkzNiwgLTEuNTkyODc0XSwgWzEwOS41NzE5NDgsIC0xLjMxNDkwN10sIFsxMDkuMDkxODc0LCAtMC40NTk1MDddLCBbMTA4Ljk1MjY1OCwgMC40MTUzNzVdLCBbMTA5LjA2OTEzNiwgMS4zNDE5MzRdLCBbMTA5LjY2MzI2LCAyLjAwNjQ2N10sIFsxMDkuODMwMjI3LCAxLjMzODEzNl0sIFsxMTAuNTE0MDYxLCAwLjc3MzEzMV0sIFsxMTEuMTU5MTM4LCAwLjk3NjQ3OF0sIFsxMTEuNzk3NTQ4LCAwLjkwNDQ0MV0sIFsxMTIuMzgwMjUyLCAxLjQxMDEyMV0sIFsxMTIuODU5ODA5LCAxLjQ5Nzc5XSwgWzExMy44MDU4NSwgMS4yMTc1NDldLCBbMTE0LjYyMTM1NSwgMS40MzA2ODhdLCBbMTE1LjEzNDAzNywgMi44MjE0ODJdLCBbMTE1LjUxOTA3OCwgMy4xNjkyMzhdLCBbMTE1Ljg2NTUxNywgNC4zMDY1NTldLCBbMTE3LjAxNTIxNCwgNC4zMDYwOTRdLCBbMTE3Ljg4MjAzNSwgNC4xMzc1NTFdLCBbMTE3LjMxMzIzMiwgMy4yMzQ0MjhdLCBbMTE4LjA0ODMzLCAyLjI4NzY5XSwgWzExNy44NzU2MjcsIDEuODI3NjQxXV1dLCBbW1sxMDUuODE3NjU1LCAtNS44NTIzNTZdLCBbMTA0LjcxMDM4NCwgLTUuODczMjg1XSwgWzEwMy44NjgyMTMsIC01LjAzNzMxNV0sIFsxMDIuNTg0MjYxLCAtNC4yMjAyNTldLCBbMTAyLjE1NjE3MywgLTMuNjE0MTQ2XSwgWzEwMS4zOTkxMTMsIC0yLjc5OTc3N10sIFsxMDAuOTAyNTAzLCAtMi4wNTAyNjJdLCBbMTAwLjE0MTk4MSwgLTAuNjUwMzQ4XSwgWzk5LjI2Mzc0LCAwLjE4MzE0Ml0sIFs5OC45NzAwMTEsIDEuMDQyODgyXSwgWzk4LjYwMTM1MSwgMS44MjM1MDddLCBbOTcuNjk5NTk4LCAyLjQ1MzE4NF0sIFs5Ny4xNzY5NDIsIDMuMzA4NzkxXSwgWzk2LjQyNDAxNywgMy44Njg4Nl0sIFs5NS4zODA4NzYsIDQuOTcwNzgyXSwgWzk1LjI5MzAyNiwgNS40Nzk4MjFdLCBbOTUuOTM2ODYzLCA1LjQzOTUxM10sIFs5Ny40ODQ4ODIsIDUuMjQ2MzIxXSwgWzk4LjM2OTE2OSwgNC4yNjgzN10sIFs5OS4xNDI1NTksIDMuNTkwMzVdLCBbOTkuNjkzOTk4LCAzLjE3NDMyOV0sIFsxMDAuNjQxNDM0LCAyLjA5OTM4MV0sIFsxMDEuNjU4MDEyLCAyLjA4MzY5N10sIFsxMDIuNDk4MjcxLCAxLjM5ODddLCBbMTAzLjA3Njg0LCAwLjU2MTM2MV0sIFsxMDMuODM4Mzk2LCAwLjEwNDU0Ml0sIFsxMDMuNDM3NjQ1LCAtMC43MTE5NDZdLCBbMTA0LjAxMDc4OSwgLTEuMDU5MjEyXSwgWzEwNC4zNjk5OTEsIC0xLjA4NDg0M10sIFsxMDQuNTM5NDksIC0xLjc4MjM3Ml0sIFsxMDQuODg3ODkzLCAtMi4zNDA0MjVdLCBbMTA1LjYyMjExMSwgLTIuNDI4ODQ0XSwgWzEwNi4xMDg1OTMsIC0zLjA2MTc3N10sIFsxMDUuODU3NDQ2LCAtNC4zMDU1MjVdLCBbMTA1LjgxNzY1NSwgLTUuODUyMzU2XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJJRE4iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkluZG9uZXNpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbNzcuODM3NDUxLCAzNS40OTQwMV0sIFs3OC45MTIyNjksIDM0LjMyMTkzNl0sIFs3OC44MTEwODYsIDMzLjUwNjE5OF0sIFs3OS4yMDg4OTIsIDMyLjk5NDM5NV0sIFs3OS4xNzYxMjksIDMyLjQ4Mzc4XSwgWzc4LjQ1ODQ0NiwgMzIuNjE4MTY0XSwgWzc4LjczODg5NCwgMzEuNTE1OTA2XSwgWzc5LjcyMTM2NywgMzAuODgyNzE1XSwgWzgxLjExMTI1NiwgMzAuMTgzNDgxXSwgWzgwLjQ3NjcyMSwgMjkuNzI5ODY1XSwgWzgwLjA4ODQyNSwgMjguNzk0NDddLCBbODEuMDU3MjAzLCAyOC40MTYwOTVdLCBbODEuOTk5OTg3LCAyNy45MjU0NzldLCBbODMuMzA0MjQ5LCAyNy4zNjQ1MDZdLCBbODQuNjc1MDE4LCAyNy4yMzQ5MDFdLCBbODUuMjUxNzc5LCAyNi43MjYxOThdLCBbODYuMDI0MzkzLCAyNi42MzA5ODVdLCBbODcuMjI3NDcyLCAyNi4zOTc4OThdLCBbODguMDYwMjM4LCAyNi40MTQ2MTVdLCBbODguMTc0ODA0LCAyNi44MTA0MDVdLCBbODguMDQzMTMzLCAyNy40NDU4MTldLCBbODguMTIwNDQxLCAyNy44NzY1NDJdLCBbODguNzMwMzI2LCAyOC4wODY4NjVdLCBbODguODE0MjQ4LCAyNy4yOTkzMTZdLCBbODguODM1NjQzLCAyNy4wOTg5NjZdLCBbODkuNzQ0NTI4LCAyNi43MTk0MDNdLCBbOTAuMzczMjc1LCAyNi44NzU3MjRdLCBbOTEuMjE3NTEzLCAyNi44MDg2NDhdLCBbOTIuMDMzNDg0LCAyNi44MzgzMV0sIFs5Mi4xMDM3MTIsIDI3LjQ1MjYxNF0sIFs5MS42OTY2NTcsIDI3Ljc3MTc0Ml0sIFs5Mi41MDMxMTksIDI3Ljg5Njg3Nl0sIFs5My40MTMzNDgsIDI4LjY0MDYyOV0sIFs5NC41NjU5OSwgMjkuMjc3NDM4XSwgWzk1LjQwNDgwMiwgMjkuMDMxNzE3XSwgWzk2LjExNzY3OSwgMjkuNDUyODAyXSwgWzk2LjU4NjU5MSwgMjguODMwOThdLCBbOTYuMjQ4ODMzLCAyOC40MTEwMzFdLCBbOTcuMzI3MTE0LCAyOC4yNjE1ODNdLCBbOTcuNDAyNTYxLCAyNy44ODI1MzZdLCBbOTcuMDUxOTg5LCAyNy42OTkwNTldLCBbOTcuMTMzOTk5LCAyNy4wODM3NzRdLCBbOTYuNDE5MzY2LCAyNy4yNjQ1ODldLCBbOTUuMTI0NzY4LCAyNi41NzM1NzJdLCBbOTUuMTU1MTUzLCAyNi4wMDEzMDddLCBbOTQuNjAzMjQ5LCAyNS4xNjI0OTVdLCBbOTQuNTUyNjU4LCAyNC42NzUyMzhdLCBbOTQuMTA2NzQyLCAyMy44NTA3NDFdLCBbOTMuMzI1MTg4LCAyNC4wNzg1NTZdLCBbOTMuMjg2MzI3LCAyMy4wNDM2NThdLCBbOTMuMDYwMjk0LCAyMi43MDMxMTFdLCBbOTMuMTY2MTI4LCAyMi4yNzg0Nl0sIFs5Mi42NzI3MjEsIDIyLjA0MTIzOV0sIFs5Mi4xNDYwMzUsIDIzLjYyNzQ5OV0sIFs5MS44Njk5MjgsIDIzLjYyNDM0Nl0sIFs5MS43MDY0NzUsIDIyLjk4NTI2NF0sIFs5MS4xNTg5NjMsIDIzLjUwMzUyN10sIFs5MS40Njc3MywgMjQuMDcyNjM5XSwgWzkxLjkxNTA5MywgMjQuMTMwNDE0XSwgWzkyLjM3NjIwMiwgMjQuOTc2NjkzXSwgWzkxLjc5OTU5NiwgMjUuMTQ3NDMyXSwgWzkwLjg3MjIxMSwgMjUuMTMyNjAxXSwgWzg5LjkyMDY5MywgMjUuMjY5NzVdLCBbODkuODMyNDgxLCAyNS45NjUwODJdLCBbODkuMzU1MDk0LCAyNi4wMTQ0MDddLCBbODguNTYzMDQ5LCAyNi40NDY1MjZdLCBbODguMjA5Nzg5LCAyNS43NjgwNjZdLCBbODguOTMxNTU0LCAyNS4yMzg2OTJdLCBbODguMzA2MzczLCAyNC44NjYwNzldLCBbODguMDg0NDIyLCAyNC41MDE2NTddLCBbODguNjk5OTQsIDI0LjIzMzcxNV0sIFs4OC41Mjk3NywgMjMuNjMxMTQyXSwgWzg4Ljg3NjMxMiwgMjIuODc5MTQ2XSwgWzg5LjAzMTk2MSwgMjIuMDU1NzA4XSwgWzg4Ljg4ODc2NiwgMjEuNjkwNTg4XSwgWzg4LjIwODQ5NywgMjEuNzAzMTcyXSwgWzg2Ljk3NTcwNCwgMjEuNDk1NTYyXSwgWzg3LjAzMzE2OSwgMjAuNzQzMzA4XSwgWzg2LjQ5OTM1MSwgMjAuMTUxNjM4XSwgWzg1LjA2MDI2NiwgMTkuNDc4NTc5XSwgWzgzLjk0MTAwNiwgMTguMzAyMDFdLCBbODMuMTg5MjE3LCAxNy42NzEyMjFdLCBbODIuMTkyNzkyLCAxNy4wMTY2MzZdLCBbODIuMTkxMjQyLCAxNi41NTY2NjRdLCBbODEuNjkyNzE5LCAxNi4zMTAyMTldLCBbODAuNzkxOTk5LCAxNS45NTE5NzJdLCBbODAuMzI0ODk2LCAxNS44OTkxODVdLCBbODAuMDI1MDY5LCAxNS4xMzY0MTVdLCBbODAuMjMzMjc0LCAxMy44MzU3NzFdLCBbODAuMjg2Mjk0LCAxMy4wMDYyNjFdLCBbNzkuODYyNTQ3LCAxMi4wNTYyMTVdLCBbNzkuODU3OTk5LCAxMC4zNTcyNzVdLCBbNzkuMzQwNTEyLCAxMC4zMDg4NTRdLCBbNzguODg1MzQ1LCA5LjU0NjEzNl0sIFs3OS4xODk3MiwgOS4yMTY1NDRdLCBbNzguMjc3OTQxLCA4LjkzMzA0N10sIFs3Ny45NDExNjUsIDguMjUyOTU5XSwgWzc3LjUzOTg5OCwgNy45NjU1MzVdLCBbNzYuNTkyOTc5LCA4Ljg5OTI3Nl0sIFs3Ni4xMzAwNjEsIDEwLjI5OTYzXSwgWzc1Ljc0NjQ2NywgMTEuMzA4MjUxXSwgWzc1LjM5NjEwMSwgMTEuNzgxMjQ1XSwgWzc0Ljg2NDgxNiwgMTIuNzQxOTM2XSwgWzc0LjYxNjcxNywgMTMuOTkyNTgzXSwgWzc0LjQ0Mzg1OSwgMTQuNjE3MjIyXSwgWzczLjUzNDE5OSwgMTUuOTkwNjUyXSwgWzczLjExOTkwOSwgMTcuOTI4NTddLCBbNzIuODIwOTA5LCAxOS4yMDgyMzRdLCBbNzIuODI0NDc1LCAyMC40MTk1MDNdLCBbNzIuNjMwNTMzLCAyMS4zNTYwMDldLCBbNzEuMTc1MjczLCAyMC43NTc0NDFdLCBbNzAuNDcwNDU5LCAyMC44NzczMzFdLCBbNjkuMTY0MTMsIDIyLjA4OTI5OF0sIFs2OS42NDQ5MjgsIDIyLjQ1MDc3NV0sIFs2OS4zNDk1OTcsIDIyLjg0MzE4XSwgWzY4LjE3NjY0NSwgMjMuNjkxOTY1XSwgWzY4Ljg0MjU5OSwgMjQuMzU5MTM0XSwgWzcxLjA0MzI0LCAyNC4zNTY1MjRdLCBbNzAuODQ0Njk5LCAyNS4yMTUxMDJdLCBbNzAuMjgyODczLCAyNS43MjIyMjldLCBbNzAuMTY4OTI3LCAyNi40OTE4NzJdLCBbNjkuNTE0MzkzLCAyNi45NDA5NjZdLCBbNzAuNjE2NDk2LCAyNy45ODkxOTZdLCBbNzEuNzc3NjY2LCAyNy45MTMxOF0sIFs3Mi44MjM3NTIsIDI4Ljk2MTU5Ml0sIFs3My40NTA2MzgsIDI5Ljk3NjQxM10sIFs3NC40MjEzOCwgMzAuOTc5ODE1XSwgWzc0LjQwNTkyOSwgMzEuNjkyNjM5XSwgWzc1LjI1ODY0MiwgMzIuMjcxMTA1XSwgWzc0LjQ1MTU1OSwgMzIuNzY0OV0sIFs3NC4xMDQyOTQsIDMzLjQ0MTQ3M10sIFs3My43NDk5NDgsIDM0LjMxNzY5OV0sIFs3NC4yNDAyMDMsIDM0Ljc0ODg4N10sIFs3NS43NTcwNjEsIDM0LjUwNDkyM10sIFs3Ni44NzE3MjIsIDM0LjY1MzU0NF0sIFs3Ny44Mzc0NTEsIDM1LjQ5NDAxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJTkQiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkluZGlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2IxMDAyNiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNi4xOTc4ODUsIDUzLjg2NzU2NV0sIFstNi4wMzI5ODUsIDUzLjE1MzE2NF0sIFstNi43ODg4NTcsIDUyLjI2MDExOF0sIFstOC41NjE2MTcsIDUxLjY2OTMwMV0sIFstOS45NzcwODYsIDUxLjgyMDQ1NV0sIFstOS4xNjYyODMsIDUyLjg2NDYyOV0sIFstOS42ODg1MjUsIDUzLjg4MTM2M10sIFstOC4zMjc5ODcsIDU0LjY2NDUxOV0sIFstNy41NzIxNjgsIDU1LjEzMTYyMl0sIFstNy4zNjYwMzEsIDU0LjU5NTg0MV0sIFstNy41NzIxNjgsIDU0LjA1OTk1Nl0sIFstNi45NTM3MywgNTQuMDczNzAyXSwgWy02LjE5Nzg4NSwgNTMuODY3NTY1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJUkwiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIklyZWxhbmQiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzUzLjkyMTU5OCwgMzcuMTk4OTE4XSwgWzU0LjgwMDMwNCwgMzcuMzkyNDIxXSwgWzU1LjUxMTU3OCwgMzcuOTY0MTE3XSwgWzU2LjE4MDM3NSwgMzcuOTM1MTI3XSwgWzU2LjYxOTM2NiwgMzguMTIxMzk0XSwgWzU3LjMzMDQzNCwgMzguMDI5MjI5XSwgWzU4LjQzNjE1NCwgMzcuNTIyMzA5XSwgWzU5LjIzNDc2MiwgMzcuNDEyOTg4XSwgWzYwLjM3NzYzOCwgMzYuNTI3MzgzXSwgWzYxLjEyMzA3MSwgMzYuNDkxNTk3XSwgWzYxLjIxMDgxNywgMzUuNjUwMDcyXSwgWzYwLjgwMzE5MywgMzQuNDA0MTAyXSwgWzYwLjUyODQzLCAzMy42NzY0NDZdLCBbNjAuOTYzNywgMzMuNTI4ODMyXSwgWzYwLjUzNjA3OCwgMzIuOTgxMjY5XSwgWzYwLjg2MzY1NSwgMzIuMTgyOTJdLCBbNjAuOTQxOTQ1LCAzMS41NDgwNzVdLCBbNjEuNjk5MzE0LCAzMS4zNzk1MDZdLCBbNjEuNzgxMjIyLCAzMC43MzU4NV0sIFs2MC44NzQyNDgsIDI5LjgyOTIzOV0sIFs2MS4zNjkzMDksIDI5LjMwMzI3Nl0sIFs2MS43NzE4NjgsIDI4LjY5OTMzNF0sIFs2Mi43Mjc4MywgMjguMjU5NjQ1XSwgWzYyLjc1NTQyNiwgMjcuMzc4OTIzXSwgWzYzLjIzMzg5OCwgMjcuMjE3MDQ3XSwgWzYzLjMxNjYzMiwgMjYuNzU2NTMyXSwgWzYxLjg3NDE4NywgMjYuMjM5OTc1XSwgWzYxLjQ5NzM2MywgMjUuMDc4MjM3XSwgWzU5LjYxNjEzNCwgMjUuMzgwMTU3XSwgWzU4LjUyNTc2MSwgMjUuNjA5OTYyXSwgWzU3LjM5NzI1MSwgMjUuNzM5OTAyXSwgWzU2Ljk3MDc2NiwgMjYuOTY2MTA2XSwgWzU2LjQ5MjEzOSwgMjcuMTQzMzA1XSwgWzU1LjcyMzcxLCAyNi45NjQ2MzNdLCBbNTQuNzE1MDksIDI2LjQ4MDY1OF0sIFs1My40OTMwOTcsIDI2LjgxMjM2OV0sIFs1Mi40ODM1OTgsIDI3LjU4MDg0OV0sIFs1MS41MjA3NjMsIDI3Ljg2NTY5XSwgWzUwLjg1Mjk0OCwgMjguODE0NTIxXSwgWzUwLjExNTAwOSwgMzAuMTQ3NzczXSwgWzQ5LjU3Njg1LCAyOS45ODU3MTVdLCBbNDguOTQxMzMzLCAzMC4zMTcwOV0sIFs0OC41Njc5NzEsIDI5LjkyNjc3OF0sIFs0OC4wMTQ1NjgsIDMwLjQ1MjQ1N10sIFs0OC4wMDQ2OTgsIDMwLjk4NTEzN10sIFs0Ny42ODUyODYsIDMwLjk4NDg1M10sIFs0Ny44NDkyMDQsIDMxLjcwOTE3Nl0sIFs0Ny4zMzQ2NjEsIDMyLjQ2OTE1NV0sIFs0Ni4xMDkzNjIsIDMzLjAxNzI4N10sIFs0NS40MTY2OTEsIDMzLjk2Nzc5OF0sIFs0NS42NDg0NiwgMzQuNzQ4MTM4XSwgWzQ2LjE1MTc4OCwgMzUuMDkzMjU5XSwgWzQ2LjA3NjM0LCAzNS42NzczODNdLCBbNDUuNDIwNjE4LCAzNS45Nzc1NDZdLCBbNDQuNzcyNjcsIDM3LjE3MDQ1XSwgWzQ0LjIyNTc1NiwgMzcuOTcxNTg0XSwgWzQ0LjQyMTQwMywgMzguMjgxMjgxXSwgWzQ0LjEwOTIyNSwgMzkuNDI4MTM2XSwgWzQ0Ljc5Mzk5LCAzOS43MTMwMDNdLCBbNDQuOTUyNjg4LCAzOS4zMzU3NjVdLCBbNDUuNDU3NzIyLCAzOC44NzQxMzldLCBbNDYuMTQzNjIzLCAzOC43NDEyMDFdLCBbNDYuNTA1NzIsIDM4Ljc3MDYwNV0sIFs0Ny42ODUwNzksIDM5LjUwODM2NF0sIFs0OC4wNjAwOTUsIDM5LjU4MjIzNV0sIFs0OC4zNTU1MjksIDM5LjI4ODc2NV0sIFs0OC4wMTA3NDQsIDM4Ljc5NDAxNV0sIFs0OC42MzQzNzUsIDM4LjI3MDM3OF0sIFs0OC44ODMyNDksIDM4LjMyMDI0NV0sIFs0OS4xOTk2MTIsIDM3LjU4Mjg3NF0sIFs1MC4xNDc3NzEsIDM3LjM3NDU2N10sIFs1MC44NDIzNTQsIDM2Ljg3MjgxNF0sIFs1Mi4yNjQwMjUsIDM2LjcwMDQyMl0sIFs1My44MjU3OSwgMzYuOTY1MDMxXSwgWzUzLjkyMTU5OCwgMzcuMTk4OTE4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJUk4iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIklyYW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzQ1LjQyMDYxOCwgMzUuOTc3NTQ2XSwgWzQ2LjA3NjM0LCAzNS42NzczODNdLCBbNDYuMTUxNzg4LCAzNS4wOTMyNTldLCBbNDUuNjQ4NDYsIDM0Ljc0ODEzOF0sIFs0NS40MTY2OTEsIDMzLjk2Nzc5OF0sIFs0Ni4xMDkzNjIsIDMzLjAxNzI4N10sIFs0Ny4zMzQ2NjEsIDMyLjQ2OTE1NV0sIFs0Ny44NDkyMDQsIDMxLjcwOTE3Nl0sIFs0Ny42ODUyODYsIDMwLjk4NDg1M10sIFs0OC4wMDQ2OTgsIDMwLjk4NTEzN10sIFs0OC4wMTQ1NjgsIDMwLjQ1MjQ1N10sIFs0OC41Njc5NzEsIDI5LjkyNjc3OF0sIFs0Ny45NzQ1MTksIDI5Ljk3NTgxOV0sIFs0Ny4zMDI2MjIsIDMwLjA1OTA3XSwgWzQ2LjU2ODcxMywgMjkuMDk5MDI1XSwgWzQ0LjcwOTQ5OSwgMjkuMTc4ODkxXSwgWzQxLjg4OTk4MSwgMzEuMTkwMDA5XSwgWzQwLjM5OTk5NCwgMzEuODg5OTkyXSwgWzM5LjE5NTQ2OCwgMzIuMTYxMDA5XSwgWzM4Ljc5MjM0MSwgMzMuMzc4Njg2XSwgWzQxLjAwNjE1OSwgMzQuNDE5MzcyXSwgWzQxLjM4Mzk2NSwgMzUuNjI4MzE3XSwgWzQxLjI4OTcwNywgMzYuMzU4ODE1XSwgWzQxLjgzNzA2NCwgMzYuNjA1ODU0XSwgWzQyLjM0OTU5MSwgMzcuMjI5ODczXSwgWzQyLjc3OTEyNiwgMzcuMzg1MjY0XSwgWzQzLjk0MjI1OSwgMzcuMjU2MjI4XSwgWzQ0LjI5MzQ1MiwgMzcuMDAxNTE0XSwgWzQ0Ljc3MjY5OSwgMzcuMTcwNDQ1XSwgWzQ1LjQyMDYxOCwgMzUuOTc3NTQ2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJUlEiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIklyYXEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xNC41MDg2OTUsIDY2LjQ1NTg5Ml0sIFstMTQuNzM5NjM3LCA2NS44MDg3NDhdLCBbLTEzLjYwOTczMiwgNjUuMTI2NjcxXSwgWy0xNC45MDk4MzQsIDY0LjM2NDA4Ml0sIFstMTcuNzk0NDM4LCA2My42Nzg3NDldLCBbLTE4LjY1NjI0NiwgNjMuNDk2MzgzXSwgWy0xOS45NzI3NTUsIDYzLjY0MzYzNV0sIFstMjIuNzYyOTcyLCA2My45NjAxNzldLCBbLTIxLjc3ODQ4NCwgNjQuNDAyMTE2XSwgWy0yMy45NTUwNDQsIDY0Ljg5MTEzXSwgWy0yMi4xODQ0MDMsIDY1LjA4NDk2OF0sIFstMjIuMjI3NDIzLCA2NS4zNzg1OTRdLCBbLTI0LjMyNjE4NCwgNjUuNjExMTg5XSwgWy0yMy42NTA1MTUsIDY2LjI2MjUxOV0sIFstMjIuMTM0OTIyLCA2Ni40MTA0NjldLCBbLTIwLjU3NjI4NCwgNjUuNzMyMTEyXSwgWy0xOS4wNTY4NDIsIDY2LjI3NjYwMV0sIFstMTcuNzk4NjI0LCA2NS45OTM4NTNdLCBbLTE2LjE2NzgxOSwgNjYuNTI2NzkyXSwgWy0xNC41MDg2OTUsIDY2LjQ1NTg5Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiSVNMIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJJY2VsYW5kIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1szNS43MTk5MTgsIDMyLjcwOTE5Ml0sIFszNS41NDU2NjUsIDMyLjM5Mzk5Ml0sIFszNS4xODM5MywgMzIuNTMyNTExXSwgWzM0Ljk3NDY0MSwgMzEuODY2NTgyXSwgWzM1LjIyNTg5MiwgMzEuNzU0MzQxXSwgWzM0Ljk3MDUwNywgMzEuNjE2Nzc4XSwgWzM0LjkyNzQwOCwgMzEuMzUzNDM1XSwgWzM1LjM5NzU2MSwgMzEuNDg5MDg2XSwgWzM1LjQyMDkxOCwgMzEuMTAwMDY2XSwgWzM0LjkyMjYwMywgMjkuNTAxMzI2XSwgWzM0LjI2NTQzMywgMzEuMjE5MzYxXSwgWzM0LjU1NjM3MiwgMzEuNTQ4ODI0XSwgWzM0LjQ4ODEwNywgMzEuNjA1NTM5XSwgWzM0Ljc1MjU4NywgMzIuMDcyOTI2XSwgWzM0Ljk1NTQxNywgMzIuODI3Mzc2XSwgWzM1LjA5ODQ1NywgMzMuMDgwNTM5XSwgWzM1LjEyNjA1MywgMzMuMDkwOV0sIFszNS40NjA3MDksIDMzLjA4OTA0XSwgWzM1LjU1Mjc5NywgMzMuMjY0Mjc1XSwgWzM1LjgyMTEwMSwgMzMuMjc3NDI2XSwgWzM1LjgzNjM5NywgMzIuODY4MTIzXSwgWzM1LjcwMDc5OCwgMzIuNzE2MDE0XSwgWzM1LjcxOTkxOCwgMzIuNzA5MTkyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJU1IiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIklzcmFlbCIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWzE1LjUyMDM3NiwgMzguMjMxMTU1XSwgWzE1LjE2MDI0MywgMzcuNDQ0MDQ2XSwgWzE1LjMwOTg5OCwgMzcuMTM0MjE5XSwgWzE1LjA5OTk4OCwgMzYuNjE5OTg3XSwgWzE0LjMzNTIyOSwgMzYuOTk2NjMxXSwgWzEzLjgyNjczMywgMzcuMTA0NTMxXSwgWzEyLjQzMTAwNCwgMzcuNjEyOTVdLCBbMTIuNTcwOTQ0LCAzOC4xMjYzODFdLCBbMTMuNzQxMTU2LCAzOC4wMzQ5NjZdLCBbMTQuNzYxMjQ5LCAzOC4xNDM4NzRdLCBbMTUuNTIwMzc2LCAzOC4yMzExNTVdXV0sIFtbWzkuMjEwMDEyLCA0MS4yMDk5OTFdLCBbOS44MDk5NzUsIDQwLjUwMDAwOV0sIFs5LjY2OTUxOSwgMzkuMTc3Mzc2XSwgWzkuMjE0ODE4LCAzOS4yNDA0NzNdLCBbOC44MDY5MzYsIDM4LjkwNjYxOF0sIFs4LjQyODMwMiwgMzkuMTcxODQ3XSwgWzguMzg4MjUzLCA0MC4zNzgzMTFdLCBbOC4xNTk5OTgsIDQwLjk1MDAwN10sIFs4LjcwOTk5MSwgNDAuODk5OTg0XSwgWzkuMjEwMDEyLCA0MS4yMDk5OTFdXV0sIFtbWzEyLjM3NjQ4NSwgNDYuNzY3NTU5XSwgWzEzLjgwNjQ3NSwgNDYuNTA5MzA2XSwgWzEzLjY5ODExLCA0Ni4wMTY3NzhdLCBbMTMuOTM3NjMsIDQ1LjU5MTAxNl0sIFsxMy4xNDE2MDYsIDQ1LjczNjY5Ml0sIFsxMi4zMjg1ODEsIDQ1LjM4MTc3OF0sIFsxMi4zODM4NzUsIDQ0Ljg4NTM3NF0sIFsxMi4yNjE0NTMsIDQ0LjYwMDQ4Ml0sIFsxMi41ODkyMzcsIDQ0LjA5MTM2Nl0sIFsxMy41MjY5MDYsIDQzLjU4NzcyN10sIFsxNC4wMjk4MjEsIDQyLjc2MTAwOF0sIFsxNS4xNDI1NywgNDEuOTU1MTRdLCBbMTUuOTI2MTkxLCA0MS45NjEzMTVdLCBbMTYuMTY5ODk3LCA0MS43NDAyOTVdLCBbMTUuODg5MzQ2LCA0MS41NDEwODJdLCBbMTYuNzg1MDAyLCA0MS4xNzk2MDZdLCBbMTcuNTE5MTY5LCA0MC44NzcxNDNdLCBbMTguMzc2Njg3LCA0MC4zNTU2MjVdLCBbMTguNDgwMjQ3LCA0MC4xNjg4NjZdLCBbMTguMjkzMzg1LCAzOS44MTA3NzRdLCBbMTcuNzM4MzgsIDQwLjI3NzY3MV0sIFsxNi44Njk1OTYsIDQwLjQ0MjIzNV0sIFsxNi40NDg3NDMsIDM5Ljc5NTQwMV0sIFsxNy4xNzE0OSwgMzkuNDI0N10sIFsxNy4wNTI4NDEsIDM4LjkwMjg3MV0sIFsxNi42MzUwODgsIDM4Ljg0MzU3Ml0sIFsxNi4xMDA5NjEsIDM3Ljk4NTg5OV0sIFsxNS42ODQwODcsIDM3LjkwODg0OV0sIFsxNS42ODc5NjMsIDM4LjIxNDU5M10sIFsxNS44OTE5ODEsIDM4Ljc1MDk0Ml0sIFsxNi4xMDkzMzIsIDM4Ljk2NDU0N10sIFsxNS43MTg4MTQsIDM5LjU0NDA3Ml0sIFsxNS40MTM2MTMsIDQwLjA0ODM1N10sIFsxNC45OTg0OTYsIDQwLjE3Mjk0OV0sIFsxNC43MDMyNjgsIDQwLjYwNDU1XSwgWzE0LjA2MDY3MiwgNDAuNzg2MzQ4XSwgWzEzLjYyNzk4NSwgNDEuMTg4Mjg3XSwgWzEyLjg4ODA4MiwgNDEuMjUzMDldLCBbMTIuMTA2NjgzLCA0MS43MDQ1MzVdLCBbMTEuMTkxOTA2LCA0Mi4zNTU0MjVdLCBbMTAuNTExOTQ4LCA0Mi45MzE0NjNdLCBbMTAuMjAwMDI5LCA0My45MjAwMDddLCBbOS43MDI0ODgsIDQ0LjAzNjI3OV0sIFs4Ljg4ODk0NiwgNDQuMzY2MzM2XSwgWzguNDI4NTYxLCA0NC4yMzEyMjhdLCBbNy44NTA3NjcsIDQzLjc2NzE0OF0sIFs3LjQzNTE4NSwgNDMuNjkzODQ1XSwgWzcuNTQ5NTk2LCA0NC4xMjc5MDFdLCBbNy4wMDc1NjIsIDQ0LjI1NDc2N10sIFs2Ljc0OTk1NSwgNDUuMDI4NTE4XSwgWzcuMDk2NjUyLCA0NS4zMzMwOTldLCBbNi44MDIzNTUsIDQ1LjcwODU4XSwgWzYuODQzNTkzLCA0NS45OTExNDddLCBbNy4yNzM4NTEsIDQ1Ljc3Njk0OF0sIFs3Ljc1NTk5MiwgNDUuODI0NDldLCBbOC4zMTY2MywgNDYuMTYzNjQyXSwgWzguNDg5OTUyLCA0Ni4wMDUxNTFdLCBbOC45NjYzMDYsIDQ2LjAzNjkzMl0sIFs5LjE4Mjg4MiwgNDYuNDQwMjE1XSwgWzkuOTIyODM3LCA0Ni4zMTQ4OTldLCBbMTAuMzYzMzc4LCA0Ni40ODM1NzFdLCBbMTAuNDQyNzAxLCA0Ni44OTM1NDZdLCBbMTEuMDQ4NTU2LCA0Ni43NTEzNTldLCBbMTEuMTY0ODI4LCA0Ni45NDE1NzldLCBbMTIuMTUzMDg4LCA0Ny4xMTUzOTNdLCBbMTIuMzc2NDg1LCA0Ni43Njc1NTldXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIklUQSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiSXRhbHkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy03Ny41Njk2MDEsIDE4LjQ5MDUyNV0sIFstNzYuODk2NjE5LCAxOC40MDA4NjddLCBbLTc2LjM2NTM1OSwgMTguMTYwNzAxXSwgWy03Ni4xOTk2NTksIDE3Ljg4Njg2N10sIFstNzYuOTAyNTYxLCAxNy44NjgyMzhdLCBbLTc3LjIwNjM0MSwgMTcuNzAxMTE2XSwgWy03Ny43NjYwMjMsIDE3Ljg2MTU5N10sIFstNzguMzM3NzE5LCAxOC4yMjU5NjhdLCBbLTc4LjIxNzcyNywgMTguNDU0NTMzXSwgWy03Ny43OTczNjUsIDE4LjUyNDIxOF0sIFstNzcuNTY5NjAxLCAxOC40OTA1MjVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkpBTSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiSmFtYWljYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMzUuNTQ1NjY1LCAzMi4zOTM5OTJdLCBbMzUuNzE5OTE4LCAzMi43MDkxOTJdLCBbMzYuODM0MDYyLCAzMi4zMTI5MzhdLCBbMzguNzkyMzQxLCAzMy4zNzg2ODZdLCBbMzkuMTk1NDY4LCAzMi4xNjEwMDldLCBbMzkuMDA0ODg2LCAzMi4wMTAyMTddLCBbMzcuMDAyMTY2LCAzMS41MDg0MTNdLCBbMzcuOTk4ODQ5LCAzMC41MDg1XSwgWzM3LjY2ODEyLCAzMC4zMzg2NjVdLCBbMzcuNTAzNTgyLCAzMC4wMDM3NzZdLCBbMzYuNzQwNTI4LCAyOS44NjUyODNdLCBbMzYuNTAxMjE0LCAyOS41MDUyNTRdLCBbMzYuMDY4OTQxLCAyOS4xOTc0OTVdLCBbMzQuOTU2MDM3LCAyOS4zNTY1NTVdLCBbMzQuOTIyNjAzLCAyOS41MDEzMjZdLCBbMzUuNDIwOTE4LCAzMS4xMDAwNjZdLCBbMzUuMzk3NTYxLCAzMS40ODkwODZdLCBbMzUuNTQ1MjUyLCAzMS43ODI1MDVdLCBbMzUuNTQ1NjY1LCAzMi4zOTM5OTJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkpPUiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiSm9yZGFuIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbMTM0LjYzODQyOCwgMzQuMTQ5MjM0XSwgWzEzNC43NjYzNzksIDMzLjgwNjMzNV0sIFsxMzQuMjAzNDE2LCAzMy4yMDExNzhdLCBbMTMzLjc5Mjk1LCAzMy41MjE5ODVdLCBbMTMzLjI4MDI2OCwgMzMuMjg5NTddLCBbMTMzLjAxNDg1OCwgMzIuNzA0NTY3XSwgWzEzMi4zNjMxMTUsIDMyLjk4OTM4Ml0sIFsxMzIuMzcxMTc2LCAzMy40NjM2NDJdLCBbMTMyLjkyNDM3MywgMzQuMDYwMjk5XSwgWzEzMy40OTI5NjgsIDMzLjk0NDYyMV0sIFsxMzMuOTA0MTA2LCAzNC4zNjQ5MzFdLCBbMTM0LjYzODQyOCwgMzQuMTQ5MjM0XV1dLCBbW1sxNDAuOTc2Mzg4LCAzNy4xNDIwNzRdLCBbMTQwLjU5OTc3LCAzNi4zNDM5ODNdLCBbMTQwLjc3NDA3NCwgMzUuODQyODc3XSwgWzE0MC4yNTMyNzksIDM1LjEzODExNF0sIFsxMzguOTc1NTI4LCAzNC42Njc2XSwgWzEzNy4yMTc1OTksIDM0LjYwNjI4Nl0sIFsxMzUuNzkyOTgzLCAzMy40NjQ4MDVdLCBbMTM1LjEyMDk4MywgMzMuODQ5MDcxXSwgWzEzNS4wNzk0MzUsIDM0LjU5NjU0NV0sIFsxMzMuMzQwMzE2LCAzNC4zNzU5MzhdLCBbMTMyLjE1Njc3MSwgMzMuOTA0OTMzXSwgWzEzMC45ODYxNDUsIDMzLjg4NTc2MV0sIFsxMzIuMDAwMDM2LCAzMy4xNDk5OTJdLCBbMTMxLjMzMjc5LCAzMS40NTAzNTVdLCBbMTMwLjY4NjMxOCwgMzEuMDI5NTc5XSwgWzEzMC4yMDI0MiwgMzEuNDE4MjM4XSwgWzEzMC40NDc2NzYsIDMyLjMxOTQ3NV0sIFsxMjkuODE0NjkyLCAzMi42MTAzMV0sIFsxMjkuNDA4NDYzLCAzMy4yOTYwNTZdLCBbMTMwLjM1MzkzNSwgMzMuNjA0MTUxXSwgWzEzMC44Nzg0NTEsIDM0LjIzMjc0M10sIFsxMzEuODg0MjI5LCAzNC43NDk3MTRdLCBbMTMyLjYxNzY3MywgMzUuNDMzMzkzXSwgWzEzNC42MDgzMDEsIDM1LjczMTYxOF0sIFsxMzUuNjc3NTM4LCAzNS41MjcxMzRdLCBbMTM2LjcyMzgzMSwgMzcuMzA0OTg0XSwgWzEzNy4zOTA2MTIsIDM2LjgyNzM5MV0sIFsxMzguODU3NjAyLCAzNy44Mjc0ODVdLCBbMTM5LjQyNjQwNSwgMzguMjE1OTYyXSwgWzE0MC4wNTQ3OSwgMzkuNDM4ODA3XSwgWzEzOS44ODMzNzksIDQwLjU2MzMxMl0sIFsxNDAuMzA1NzgzLCA0MS4xOTUwMDVdLCBbMTQxLjM2ODk3MywgNDEuMzc4NTZdLCBbMTQxLjkxNDI2MywgMzkuOTkxNjE2XSwgWzE0MS44ODQ2MDEsIDM5LjE4MDg2NV0sIFsxNDAuOTU5NDg5LCAzOC4xNzQwMDFdLCBbMTQwLjk3NjM4OCwgMzcuMTQyMDc0XV1dLCBbW1sxNDMuOTEwMTYyLCA0NC4xNzQxXSwgWzE0NC42MTM0MjcsIDQzLjk2MDg4M10sIFsxNDUuMzIwODI1LCA0NC4zODQ3MzNdLCBbMTQ1LjU0MzEzNywgNDMuMjYyMDg4XSwgWzE0NC4wNTk2NjIsIDQyLjk4ODM1OF0sIFsxNDMuMTgzODUsIDQxLjk5NTIxNV0sIFsxNDEuNjExNDkxLCA0Mi42Nzg3OTFdLCBbMTQxLjA2NzI4NiwgNDEuNTg0NTk0XSwgWzEzOS45NTUxMDYsIDQxLjU2OTU1Nl0sIFsxMzkuODE3NTQ0LCA0Mi41NjM3NTldLCBbMTQwLjMxMjA4NywgNDMuMzMzMjczXSwgWzE0MS4zODA1NDksIDQzLjM4ODgyNV0sIFsxNDEuNjcxOTUyLCA0NC43NzIxMjVdLCBbMTQxLjk2NzY0NSwgNDUuNTUxNDgzXSwgWzE0My4xNDI4NywgNDQuNTEwMzU4XSwgWzE0My45MTAxNjIsIDQ0LjE3NDFdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkpQTiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiSmFwYW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzcwLjk2MjMxNSwgNDIuMjY2MTU0XSwgWzcwLjM4ODk2NSwgNDIuMDgxMzA4XSwgWzY5LjA3MDAyNywgNDEuMzg0MjQ0XSwgWzY4LjYzMjQ4MywgNDAuNjY4NjgxXSwgWzY4LjI1OTg5NiwgNDAuNjYyMzI1XSwgWzY3Ljk4NTg1NiwgNDEuMTM1OTkxXSwgWzY2LjcxNDA0NywgNDEuMTY4NDQ0XSwgWzY2LjUxMDY0OSwgNDEuOTg3NjQ0XSwgWzY2LjAyMzM5MiwgNDEuOTk0NjQ2XSwgWzY2LjA5ODAxMiwgNDIuOTk3NjZdLCBbNjQuOTAwODI0LCA0My43MjgwODFdLCBbNjMuMTg1Nzg3LCA0My42NTAwNzVdLCBbNjIuMDEzMywgNDMuNTA0NDc3XSwgWzYxLjA1ODMyLCA0NC40MDU4MTddLCBbNjAuMjM5OTcyLCA0NC43ODQwMzddLCBbNTguNjg5OTg5LCA0NS41MDAwMTRdLCBbNTguNTAzMTI3LCA0NS41ODY4MDRdLCBbNTUuOTI4OTE3LCA0NC45OTU4NThdLCBbNTUuOTY4MTkxLCA0MS4zMDg2NDJdLCBbNTUuNDU1MjUxLCA0MS4yNTk4NTldLCBbNTQuNzU1MzQ1LCA0Mi4wNDM5NzFdLCBbNTQuMDc5NDE4LCA0Mi4zMjQxMDldLCBbNTIuOTQ0MjkzLCA0Mi4xMTYwMzRdLCBbNTIuNTAyNDYsIDQxLjc4MzMxNl0sIFs1Mi40NDYzMzksIDQyLjAyNzE1MV0sIFs1Mi42OTIxMTIsIDQyLjQ0Mzg5NV0sIFs1Mi41MDE0MjYsIDQyLjc5MjI5OF0sIFs1MS4zNDI0MjcsIDQzLjEzMjk3NV0sIFs1MC44OTEyOTIsIDQ0LjAzMTAzNF0sIFs1MC4zMzkxMjksIDQ0LjI4NDAxNl0sIFs1MC4zMDU2NDMsIDQ0LjYwOTgzNl0sIFs1MS4yNzg1MDMsIDQ0LjUxNDg1NF0sIFs1MS4zMTY4OTksIDQ1LjI0NTk5OF0sIFs1Mi4xNjczOSwgNDUuNDA4MzkxXSwgWzUzLjA0MDg3NiwgNDUuMjU5MDQ3XSwgWzUzLjIyMDg2NiwgNDYuMjM0NjQ2XSwgWzUzLjA0MjczNywgNDYuODUzMDA2XSwgWzUyLjA0MjAyMywgNDYuODA0NjM3XSwgWzUxLjE5MTk0NSwgNDcuMDQ4NzA1XSwgWzUwLjAzNDA4MywgNDYuNjA4OTldLCBbNDkuMTAxMTYsIDQ2LjM5OTMzXSwgWzQ4LjU5MzI0MSwgNDYuNTYxMDM0XSwgWzQ4LjY5NDczNCwgNDcuMDc1NjI4XSwgWzQ4LjA1NzI1MywgNDcuNzQzNzUzXSwgWzQ3LjMxNTIzMSwgNDcuNzE1ODQ3XSwgWzQ2LjQ2NjQ0NiwgNDguMzk0MTUyXSwgWzQ3LjA0MzY3MiwgNDkuMTUyMDM5XSwgWzQ2Ljc1MTU5NiwgNDkuMzU2MDA2XSwgWzQ3LjU0OTQ4LCA1MC40NTQ2OThdLCBbNDguNTc3ODQxLCA0OS44NzQ3Nl0sIFs0OC43MDIzODIsIDUwLjYwNTEyOF0sIFs1MC43NjY2NDgsIDUxLjY5Mjc2Ml0sIFs1Mi4zMjg3MjQsIDUxLjcxODY1Ml0sIFs1NC41MzI4NzgsIDUxLjAyNjI0XSwgWzU1LjcxNjk0MSwgNTAuNjIxNzE3XSwgWzU2Ljc3Nzk2MSwgNTEuMDQzNTUxXSwgWzU4LjM2MzI5MSwgNTEuMDYzNjUzXSwgWzU5LjY0MjI4MiwgNTAuNTQ1NDQyXSwgWzU5LjkzMjgwNywgNTAuODQyMTk0XSwgWzYxLjMzNzQyNCwgNTAuNzk5MDddLCBbNjEuNTg4MDAzLCA1MS4yNzI2NTldLCBbNTkuOTY3NTM0LCA1MS45NjA0Ml0sIFs2MC45MjcyNjksIDUyLjQ0NzU0OF0sIFs2MC43Mzk5OTMsIDUyLjcxOTk4Nl0sIFs2MS42OTk5ODYsIDUyLjk3OTk5Nl0sIFs2MC45NzgwNjYsIDUzLjY2NDk5M10sIFs2MS40MzY1OTEsIDU0LjAwNjI2NV0sIFs2NS4xNzg1MzQsIDU0LjM1NDIyOF0sIFs2NS42NjY4NzYsIDU0LjYwMTI2N10sIFs2OC4xNjkxLCA1NC45NzAzOTJdLCBbNjkuMDY4MTY3LCA1NS4zODUyNV0sIFs3MC44NjUyNjcsIDU1LjE2OTczNF0sIFs3MS4xODAxMzEsIDU0LjEzMzI4NV0sIFs3Mi4yMjQxNSwgNTQuMzc2NjU1XSwgWzczLjUwODUxNiwgNTQuMDM1NjE3XSwgWzczLjQyNTY3OSwgNTMuNDg5ODFdLCBbNzQuMzg0ODQ1LCA1My41NDY4NjFdLCBbNzYuODkxMSwgNTQuNDkwNTI0XSwgWzc2LjUyNTE3OSwgNTQuMTc3MDAzXSwgWzc3LjgwMDkxNiwgNTMuNDA0NDE1XSwgWzgwLjAzNTU2LCA1MC44NjQ3NTFdLCBbODAuNTY4NDQ3LCA1MS4zODgzMzZdLCBbODEuOTQ1OTg2LCA1MC44MTIxOTZdLCBbODMuMzgzMDA0LCA1MS4wNjkxODNdLCBbODMuOTM1MTE1LCA1MC44ODkyNDZdLCBbODQuNDE2Mzc3LCA1MC4zMTE0XSwgWzg1LjExNTU2LCA1MC4xMTczMDNdLCBbODUuNTQxMjcsIDQ5LjY5Mjg1OV0sIFs4Ni44MjkzNTcsIDQ5LjgyNjY3NV0sIFs4Ny4zNTk5NywgNDkuMjE0OTgxXSwgWzg2LjU5ODc3NiwgNDguNTQ5MTgyXSwgWzg1Ljc2ODIzMywgNDguNDU1NzUxXSwgWzg1LjcyMDQ4NCwgNDcuNDUyOTY5XSwgWzg1LjE2NDI5LCA0Ny4wMDA5NTZdLCBbODMuMTgwNDg0LCA0Ny4zMzAwMzFdLCBbODIuNDU4OTI2LCA0NS41Mzk2NV0sIFs4MS45NDcwNzEsIDQ1LjMxNzAyN10sIFs3OS45NjYxMDYsIDQ0LjkxNzUxN10sIFs4MC44NjYyMDYsIDQzLjE4MDM2Ml0sIFs4MC4xODAxNSwgNDIuOTIwMDY4XSwgWzgwLjI1OTk5LCA0Mi4zNDk5OTldLCBbNzkuNjQzNjQ1LCA0Mi40OTY2ODNdLCBbNzkuMTQyMTc3LCA0Mi44NTYwOTJdLCBbNzcuNjU4MzkyLCA0Mi45NjA2ODZdLCBbNzYuMDAwMzU0LCA0Mi45ODgwMjJdLCBbNzUuNjM2OTY1LCA0Mi44Nzc5XSwgWzc0LjIxMjg2NiwgNDMuMjk4MzM5XSwgWzczLjY0NTMwNCwgNDMuMDkxMjcyXSwgWzczLjQ4OTc1OCwgNDIuNTAwODk0XSwgWzcxLjg0NDYzOCwgNDIuODQ1Mzk1XSwgWzcxLjE4NjI4MSwgNDIuNzA0MjkzXSwgWzcwLjk2MjMxNSwgNDIuMjY2MTU0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJLQVoiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkthemFraHN0YW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzQwLjk5MywgLTAuODU4MjldLCBbNDEuNTg1MTMsIC0xLjY4MzI1XSwgWzQwLjg4NDc3LCAtMi4wODI1NV0sIFs0MC42Mzc4NSwgLTIuNDk5NzldLCBbNDAuMjYzMDQsIC0yLjU3MzA5XSwgWzQwLjEyMTE5LCAtMy4yNzc2OF0sIFszOS44MDAwNiwgLTMuNjgxMTZdLCBbMzkuNjA0ODksIC00LjM0NjUzXSwgWzM5LjIwMjIyLCAtNC42NzY3N10sIFszNy43NjY5LCAtMy42NzcxMl0sIFszNy42OTg2OSwgLTMuMDk2OTldLCBbMzQuMDcyNjIsIC0xLjA1OTgyXSwgWzMzLjkwMzcxMSwgLTAuOTVdLCBbMzMuODkzNTY5LCAwLjEwOTgxNF0sIFszNC4xOCwgMC41MTVdLCBbMzQuNjcyMSwgMS4xNzY5NF0sIFszNS4wMzU5OSwgMS45MDU4NF0sIFszNC41OTYwNywgMy4wNTM3NF0sIFszNC40NzkxMywgMy41NTU2XSwgWzM0LjAwNSwgNC4yNDk4ODVdLCBbMzQuNjIwMTk2LCA0Ljg0NzEyM10sIFszNS4yOTgwMDcsIDUuNTA2XSwgWzM1LjgxNzQ0OCwgNS4zMzgyMzJdLCBbMzUuODE3NDQ4LCA0Ljc3Njk2Nl0sIFszNi4xNTkwNzksIDQuNDQ3ODY0XSwgWzM2Ljg1NTA5MywgNC40NDc4NjRdLCBbMzguMTIwOTE1LCAzLjU5ODYwNV0sIFszOC40MzY5NywgMy41ODg1MV0sIFszOC42NzExNCwgMy42MTYwN10sIFszOC44OTI1MSwgMy41MDA3NF0sIFszOS41NTkzODQsIDMuNDIyMDZdLCBbMzkuODU0OTQsIDMuODM4NzldLCBbNDAuNzY4NDgsIDQuMjU3MDJdLCBbNDEuMTcxOCwgMy45MTkwOV0sIFs0MS44NTUwODMsIDMuOTE4OTEyXSwgWzQwLjk4MTA1LCAyLjc4NDUyXSwgWzQwLjk5MywgLTAuODU4MjldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIktFTiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiS2VueWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzcwLjk2MjMxNSwgNDIuMjY2MTU0XSwgWzcxLjE4NjI4MSwgNDIuNzA0MjkzXSwgWzcxLjg0NDYzOCwgNDIuODQ1Mzk1XSwgWzczLjQ4OTc1OCwgNDIuNTAwODk0XSwgWzczLjY0NTMwNCwgNDMuMDkxMjcyXSwgWzc0LjIxMjg2NiwgNDMuMjk4MzM5XSwgWzc1LjYzNjk2NSwgNDIuODc3OV0sIFs3Ni4wMDAzNTQsIDQyLjk4ODAyMl0sIFs3Ny42NTgzOTIsIDQyLjk2MDY4Nl0sIFs3OS4xNDIxNzcsIDQyLjg1NjA5Ml0sIFs3OS42NDM2NDUsIDQyLjQ5NjY4M10sIFs4MC4yNTk5OSwgNDIuMzQ5OTk5XSwgWzgwLjExOTQzLCA0Mi4xMjM5NDFdLCBbNzguNTQzNjYxLCA0MS41ODIyNDNdLCBbNzguMTg3MTk3LCA0MS4xODUzMTZdLCBbNzYuOTA0NDg0LCA0MS4wNjY0ODZdLCBbNzYuNTI2MzY4LCA0MC40Mjc5NDZdLCBbNzUuNDY3ODI4LCA0MC41NjIwNzJdLCBbNzQuNzc2ODYyLCA0MC4zNjY0MjVdLCBbNzMuODIyMjQ0LCAzOS44OTM5NzNdLCBbNzMuOTYwMDEzLCAzOS42NjAwMDhdLCBbNzMuNjc1Mzc5LCAzOS40MzEyMzddLCBbNzEuNzg0Njk0LCAzOS4yNzk0NjNdLCBbNzAuNTQ5MTYyLCAzOS42MDQxOThdLCBbNjkuNDY0ODg3LCAzOS41MjY2ODNdLCBbNjkuNTU5NjEsIDQwLjEwMzIxMV0sIFs3MC42NDgwMTksIDM5LjkzNTc1NF0sIFs3MS4wMTQxOTgsIDQwLjI0NDM2Nl0sIFs3MS43NzQ4NzUsIDQwLjE0NTg0NF0sIFs3My4wNTU0MTcsIDQwLjg2NjAzM10sIFs3MS44NzAxMTUsIDQxLjM5MjldLCBbNzEuMTU3ODU5LCA0MS4xNDM1ODddLCBbNzAuNDIwMDIyLCA0MS41MTk5OThdLCBbNzEuMjU5MjQ4LCA0Mi4xNjc3MTFdLCBbNzAuOTYyMzE1LCA0Mi4yNjYxNTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIktHWiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiS3lyZ3l6c3RhbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment