<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>crime on Jiri Stodulka</title><link>https://www.jiristodulka.com/tags/crime/</link><description>Recent content in crime on Jiri Stodulka</description><generator>Source Themes Academic (https://sourcethemes.com/academic/)</generator><language>en-us</language><copyright>&amp;copy; {year} Jiri Stodulka</copyright><lastBuildDate>Fri, 28 Jun 2019 19:26:32 -0400</lastBuildDate><atom:link href="https://www.jiristodulka.com/tags/crime/index.xml" rel="self" type="application/rss+xml"/><item><title>Toronto Crime and Folium</title><link>https://www.jiristodulka.com/post/toronto-crime/</link><pubDate>Fri, 28 Jun 2019 19:26:32 -0400</pubDate><guid>https://www.jiristodulka.com/post/toronto-crime/</guid><description>
&lt;p&gt;In this post, I will analyze major Crime Indicators in Toronto in years from 2014 to 2018. I obtained the publicly available data set from the Toronto Police Service. First, I will visually inspect the crime scene in the City. Specifically, I will use the Matplot library to demonstrate the composition of assaults. Additionally, I will mark the most criminal neighborhoods on the map while utilizing both the &lt;code&gt;MarkerCluster&lt;/code&gt; and &lt;code&gt;HeatMap&lt;/code&gt; as &lt;code&gt;plugins&lt;/code&gt; of folium package. Examining the criminal behavior on the map, shows the downtown as the area with the highest concentration of crime. On top of that, criminal neighborhoods can be easily clustered. Then, one can see that areas alongside the major routes exhibit high criminal activity as well.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-python&#34;&gt;#GitHub Repository
git clone https://github.com/jiristo/toronto-crime-folium.git
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;
&lt;div style=&#34;width:100%;&#34;&gt;&lt;div style=&#34;position:relative;width:100%;height:0;padding-bottom:60%;&#34;&gt;&lt;iframe src=&#34;data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVM9ZmFsc2U7IExfTk9fVE9VQ0g9ZmFsc2U7IExfRElTQUJMRV8zRD1mYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS40LjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS40LjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdjZG4uZ2l0aGFjay5jb20vcHl0aG9uLXZpc3VhbGl6YXRpb24vZm9saXVtL21hc3Rlci9mb2xpdW0vdGVtcGxhdGVzL2xlYWZsZXQuYXdlc29tZS5yb3RhdGUuY3NzIi8+CiAgICA8c3R5bGU+aHRtbCwgYm9keSB7d2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO21hcmdpbjogMDtwYWRkaW5nOiAwO308L3N0eWxlPgogICAgPHN0eWxlPiNtYXAge3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO3JpZ2h0OjA7bGVmdDowO308L3N0eWxlPgogICAgCiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLAogICAgICAgIGluaXRpYWwtc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubyIgLz4KICAgIDxzdHlsZT4jbWFwXzg0OGYzMjMyN2JiNTQ3YzJiYTI0MjU1MmYzODBlZGY5IHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2lkdGg6IDEwMC4wJTsKICAgICAgICBoZWlnaHQ6IDEwMC4wJTsKICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgIHRvcDogMC4wJTsKICAgICAgICB9CiAgICA8L3N0eWxlPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2xlYWZsZXQubWFya2VyY2x1c3Rlci8xLjEuMC9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIvMS4xLjAvTWFya2VyQ2x1c3Rlci5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbGVhZmxldC5tYXJrZXJjbHVzdGVyLzEuMS4wL01hcmtlckNsdXN0ZXIuRGVmYXVsdC5jc3MiLz4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2xlYWZsZXQuZ2l0aHViLmlvL0xlYWZsZXQuaGVhdC9kaXN0L2xlYWZsZXQtaGVhdC5qcyI+PC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzg0OGYzMjMyN2JiNTQ3YzJiYTI0MjU1MmYzODBlZGY5IiA+PC9kaXY+CjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKICAgIAogICAgICAgIHZhciBib3VuZHMgPSBudWxsOwogICAgCgogICAgdmFyIG1hcF84NDhmMzIzMjdiYjU0N2MyYmEyNDI1NTJmMzgwZWRmOSA9IEwubWFwKAogICAgICAgICdtYXBfODQ4ZjMyMzI3YmI1NDdjMmJhMjQyNTUyZjM4MGVkZjknLCB7CiAgICAgICAgY2VudGVyOiBbNDMuNzAyMjcsIC03OS4zNjYwNzRdLAogICAgICAgIHpvb206IDExLAogICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgIGxheWVyczogW10sCiAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NywKICAgICAgICB6b29tQ29udHJvbDogdHJ1ZSwKICAgICAgICB9KTsKCgogICAgCiAgICB2YXIgdGlsZV9sYXllcl80Nzc2YjliMWUyZDA0OTExYjg4OTYxNzhmOTdjNzI1NyA9IEwudGlsZUxheWVyKAogICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgewogICAgICAgICJhdHRyaWJ1dGlvbiI6IG51bGwsCiAgICAgICAgImRldGVjdFJldGluYSI6IGZhbHNlLAogICAgICAgICJtYXhOYXRpdmVab29tIjogMTgsCiAgICAgICAgIm1heFpvb20iOiAxOCwKICAgICAgICAibWluWm9vbSI6IDAsCiAgICAgICAgIm5vV3JhcCI6IGZhbHNlLAogICAgICAgICJvcGFjaXR5IjogMSwKICAgICAgICAic3ViZG9tYWlucyI6ICJhYmMiLAogICAgICAgICJ0bXMiOiBmYWxzZQp9KS5hZGRUbyhtYXBfODQ4ZjMyMzI3YmI1NDdjMmJhMjQyNTUyZjM4MGVkZjkpOwogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYiA9IEwubWFya2VyQ2x1c3Rlckdyb3VwKHt9KTsKICAgICAgICAgICAgbWFwXzg0OGYzMjMyN2JiNTQ3YzJiYTI0MjU1MmYzODBlZGY5LmFkZExheWVyKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzg0ZWYyM2JiMDE1ODRhNTM5YTMyYTg3MTY3MDQ1NzRhID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42Njg0NDk0LCAtNzkuMzQzMDkzOV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfYjc1ZWQwNzZlNjA4NDQ3NjkzODg4MDQ2YjVlYTIyMjUgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc1OTI4NSwgLTc5LjUwNzkyNjkwMDAwMDAyXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl81MjUwODc4MzRhM2M0NWRiODQ0ZDIyYWI1NDFlYzBhMSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjk3NTUxNzAwMDAwMDEsIC03OS41MDE2NjMyXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8xNWQyOTg3NGNmMjI0NjdiOGY0Njc0ZTA2MmY3NzEyOCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzIxNzAyNiwgLTc5LjU3MTUxMDNdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2EzYWRjMDJjMmIwOTQxMDlhNGI3YWQ2ZmFkYmRkMTliID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42NjM4OTA4LCAtNzkuNTAzNDg2NTk5OTk5OTldLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzk4OTg3NWUyN2FlNTQ3MDNiY2M0YjE0N2Y3OTA5ZTc2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42NTczMDY3MDAwMDAwMSwgLTc5LjM3MzQ1ODldLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzZiZDQ4YTc1ZTc1ZTQ2ZmY4YTIzYWEzYWZlYTI0MGNhID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42NjYzNjI4LCAtNzkuMzE2NjA0NTk5OTk5OThdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzBlZmM4MmQ4ZGI0OTQyN2I4NzVjZTg2YWMyOWYxZmE1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42NTgxMTE2MDAwMDAwMSwgLTc5LjQwMjAyMzNdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzNjOTc0YzJhMzE3MDQyNzI5MzdhZDE3ZWI1MTI3ZjQwID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43Njg4NTYsIC03OS40NjY5MjY2XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl85NjRlMTVlMjk4ZmM0MzA4ODBjODBjY2IwNGNmMDM4ZiA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuODA3ODA0MTAwMDAwMDEsIC03OS4yMTU1OTkwOTk5OTk5OF0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfYmNkMjY4YWM1NjM1NDE5Njg0ODY4MDcyZDI3NGJkZmYgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY0MTU1MiwgLTc5LjQ3NDU0MDddLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzgzYTFmNjczNDg4ZTQ2NzM5ZGNjNDVlMjg0NTNhM2M5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42OTUxMzMyMDAwMDAwMSwgLTc5LjMwMzQ4MjFdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2NmZGIyY2QwZTlmMTQ3MmI5YWZiNDdjMjYzYTJmNzFhID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42NTU4OCwgLTc5LjM2MzIyMDJdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2JiZDM1M2U2MDlmYTQ1NjU4MTYzNDMxMzdjNjlhMjllID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42NjM5MDYxLCAtNzkuMzg0MTU1Mjk5OTk5OTddLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzBjZTQzN2ZjYjZiYzRiYTRhOTBiYWQyZTQ5N2Y4ZGRiID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42NTAwNzAyLCAtNzkuMzk2ODgxMV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfN2Y3MjU5YjdkNTBhNDk4ODg0MjQ0Zjk4MzNjYzNhMjYgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY5OTEzMSwgLTc5LjI1NDMzMzVdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzA3NjY1ZDNiYmJmNjRjZDM4NzUwMjFiZWUxZmVkZDc0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43NDk0ODg4LCAtNzkuNTMyNzkxMV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfMDhiNzU3NDg4ODY1NDA3OWI2ZmIxOWNkZDU3MDY5OTAgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY3MjQzMTksIC03OS4zMzQxOTA0MDAwMDAwM10sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfYmYwMjg0MzZjYzk5NDc5Yjk5Mzk1MTMyOTdhNTMxY2UgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc3MzYxNjc5OTk5OTk5LCAtNzkuMjYxMTMxM10sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfNTgzNzllNzNkYjFmNDkyZmFhNDdhZjMwYWQxMDc5YTEgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY4NzgyMDQsIC03OS40MzQ5MzY0OTk5OTk5OF0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfMjQ4ZWVkYTJhZGM4NDUwNDk0NjcxNGZmYjZmZjk4ZGYgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY1ODA3NzIwMDAwMDAxLCAtNzkuMzg0NzEyMl0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfMzg4OWI2ZWZjYzg5NGNhN2FmZTk4MmUxN2YxZThhZTcgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY0NDk1NDcsIC03OS4zOTc2NDRdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2VjM2E2MTkyZDBkZTRlYWU5YjIzYTNhZDhmMWNkNmU4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43NTY0MzkyLCAtNzkuMzYwNzcxMl0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfNDdmMzA4Njk2YjNhNDU3ZWEzYmU3YWY3OTg0ZmZmNWUgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY2MzcyMywgLTc5LjM3MDUyMTVdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzdjZWQ4ZDUzYTU4ZTRkN2M4YTI3ZTk1OGI1NjA4ZDExID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43NjY2MDkyLCAtNzkuMTg1NjYxM10sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfMzdkZjA5MzZjMjNmNDY3NGI3NTVlZTg3YzI5OTM1NjcgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY5NDM2NjUsIC03OS4yNzM2NTExXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl80YjVkZGMzYWE5MmU0NzIzOGM0NjMzNzdlMjRmY2NkMCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzQzOTkxOSwgLTc5LjU5ODg2OTNdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzJhMTlkY2IxNTQwNTQ2MTFiZmZjODhmZjBmZmEyZTE5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43NjMwMjM0LCAtNzkuMzE3NTI3OF0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfODZiZGI3NDJhOWE3NGMzNDliYWVjNzQ2YTg3Yjk2NmYgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc2ODgzNywgLTc5LjM3ODM3OTc5OTk5OTk4XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl80ZDQzMzdkMGRmNDk0OTA4ODEwMTUxZTgwYzA1NDhmYiA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzQ2MDc4NSwgLTc5LjM4ODYyNjFdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzE1YjVkNjAzMDI3ODRjNTU4NzAzYmYxZmY0ZDdkMTE0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43NTY1OTk0LCAtNzkuNTEyMDY5N10sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfZjM0ZDUzNDhlMDdlNGY4Mzg2MjU1ZDAwNjI4Y2Y2YzggPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY2NTkxNjQsIC03OS40MDc0NzA3XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl84OTE4OGVmYzNiNDY0OWExYjJkOTViMzZiYjgxOTc3OCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzY4MzgzLCAtNzkuMzQ5MDM3Ml0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfOGZiZmEyNmM4YmNkNDJhYmE4M2UzMGI0OGIxZTk3NGYgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjczMzMzNzQsIC03OS4yNjMyOTA0MDAwMDAwMl0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfMTM0MDNkYThlNTFjNDkzY2I0ODRiYWVmMzAxZDU2MmEgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc2MjE4NDEsIC03OS4zMjExNTE3XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8yMDlhM2UzN2M0YWY0MjdmYjE2ZTBhMzA2MTYzODIyZSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuODExNTE5NiwgLTc5LjMxNDU0NDddLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2JjOTc4NzFjNTE1MjRjNTVhNmZhODllYjZhNmY5N2Q4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43NzY4NjY5LCAtNzkuMzE2MjIzMDk5OTk5OTldLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2MwYWRmMTM2NDlmODRjNmI4NmRkYWM2ZDA1MTAzOTAzID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43MzgzNTc1LCAtNzkuMzA5NzgzOV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfNDc4Y2E2ZjcxZTQ4NDM0MDg3YmM0MmNiOTUzNWI0Y2EgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc1MjQ3OTYsIC03OS41NjA3Mzc2XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl81MzE2NjJiOTU4Mzk0YzM4OTg4ZjU5ZjdmMjk0OGRiNCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzQyOTMxNCwgLTc5LjIxMTI5NjA5OTk5OTk4XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9hYWZmNmNmNGI2M2U0M2M1YjU2ZWZkM2IyYjg4ODkzZCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjgyMzM4NywgLTc5LjUyNjYwMzddLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2YwYTQ5NGNkZDEzYTRlMWZiMWJkNTAzYzNjZDQ3NWJmID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43NzUxNTc5LCAtNzkuNDE0MzgyOV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfYzcwOTg1YmFjMjFkNDFiYzkyMzljMTgxM2I3ODM0ZmUgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjcxMzA1MDgsIC03OS40MTE3NzM3MDAwMDAwM10sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfYjY0YWQyYjEyM2Y5NDE3NmJiOGFjOTZlMzFkMzM1YjkgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc3NzU5MTcsIC03OS4yMjY1Nzc3OTk5OTk5OV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfNTI0YTJhNTIzMzE0NGI4NmFhZWQ3N2E2MzczM2NhNjUgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjcxNzAyNTgsIC03OS41MzcyOTI1XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8yNTk3ZWI2MmYyNTQ0ZGM1OGU4ZTc1NzRkZTE5ODQ4ZCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzQxMjMzOCwgLTc5LjIzNzI2NjVdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzQzZjVjYWJhNzk1NzRlZTdiZGJlNGFkMjc1ODVkMGI0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43MDY4NjM0LCAtNzkuMzIwNjFdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2IzMTY4NzQ1YjhmYTRmOWQ5NDczNDk0YzQ4ZGIxZTJiID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42MDMwMDQ1LCAtNzkuNTA3NDg0NDAwMDAwMDJdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzAxZDMxNzNlY2I5YjQ2ZDNiYmRjZDFhN2U1NWZkYTBjID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43MTY1Nzk0LCAtNzkuMzMwMzc1N10sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfYmNiZjUyZDQyYWRmNGQ2MTkxYjA3ODBmNzkzNmRmOTMgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc5MTUxNTQsIC03OS4yOTgxMDMzXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9jOGQxNzdlOTZiOGE0Y2JhYjhiMzgxYjkwOGJhOGNmZCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjQxMjI3NywgLTc5LjQyNjY3MzkwMDAwMDAzXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl81NTRiYzg4ODkwYzA0ZjY2OWM4ZDNlYzI2MGNlMGY3YSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjkzMjQ0OSwgLTc5LjUwNDY2OTIwMDAwMDAyXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8zOWQzZmIzZDNlNTI0ZTFlOTUyZDNlYTFjMTk5NGU4NiA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjg0NDI5MiwgLTc5LjM0NjkyMzhdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzgxNThhNDEyYWRiODRjOGQ5M2MxZjc5Zjc4Y2IzNjI4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43ODk5MTMyLCAtNzkuMjE3NDUzXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9hM2VkNWE4ZDNlOGI0NjBiOWYyY2M0Y2VhYzdmNTExNSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjg1OTgxOCwgLTc5LjM1NjI5MjddLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2ZiMjEzOWFhNjIzNjQ5Nzg5NGExMTYwNzdiYWU2YzkzID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42OTg5OTM3LCAtNzkuNDM1MDM1NzAwMDAwMDFdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2I2M2RkYTRmMDNkYTQ5Zjc4OThmMWRlMmFkMDAwM2EzID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43MDcyMjU4LCAtNzkuMjk1MjgwNV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfZDdjMmFlZGI4MzdlNDRjOWEyYzI2MDZhZTkzYTdjOGEgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjczMzU4MTUsIC03OS40ODM3MjY1XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9kNDRiNWMxZDUxY2U0NmNlYTA4YzQ3OGRhMzQ2MjE0YiA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjQ0NjU3MSwgLTc5LjUzMDc5OTldLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2JhNjkxNjA1ZGRhYTRlMmE5ZmNkZjZmNjFjOTFiNTQ0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43Njg5MDE4LCAtNzkuMjg1NTUzMDAwMDAwMDJdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2Y2MTBlNjQyZjQ5NDRkMzViMjJiM2Q5ODMzMmU4ZGRkID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My44MDE5MzMzLCAtNzkuMzU5Mzk3OV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfMGRjOTY4YjU5Nzc0NGQ1Mzk2MGQxNTBlMTExNWMzMzMgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY5ODM0NTIwMDAwMDAxLCAtNzkuNTExMzE0NF0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfNWU2OGJmOGQ2ZTRlNGI5OTgwYWJmMDBlODlmMDY5NzcgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc3OTc2OTksIC03OS40MTU1NzMwOTk5OTk5N10sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfNzUzYTdmNTA0OTg2NDMwZmJjMjg0ZmE1ZjYxMThkN2MgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY5NjI2MjQsIC03OS40NDc2ODUyMDAwMDAwMl0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfMTNmOTg4NjRjNWViNGJhMjk3MmU3ZjA3MmQ4OGIwOTcgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjczMjM5NTIwMDAwMDAwNiwgLTc5LjQxOTQxMDcwMDAwMDAxXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9iY2Y0MzNhYTJjNTQ0MzM4YjVjYTE3ODIyOTFkNjgwZSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjUwNzgzNSwgLTc5LjQxMzQ5NzkwMDAwMDAyXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl85YzkzYWU3NzgzZTg0YzAyOWM2ZGFlNDQwNjU1Y2Q2MSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzAwMzEzNiwgLTc5LjM4Njk3MDQ5OTk5OTk4XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9mN2EyMThjYjE0Mjg0YTI4YWFhOTMzZDAyZGI5MzM3NCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuODAxMjY5NSwgLTc5LjI5NjYwMDMwMDAwMDAyXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9jMTE2Y2JhYmNhODA0ZWU5ODRjZGMxODVkZTgzZmJiMSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzA1NDYzNCwgLTc5LjQwMDA5MzA5OTk5OTk4XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl81ZGEwN2Q5NTVjYjM0NGEwYjZlMmRkMDJlMzMzNmFmYyA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjY4NDY4NSwgLTc5LjQzOTAzMzVdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzUwY2MyOTgxYTI1YTQyNGI5NGQwMTMyYzA4MDBjZGZiID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42OTI0OTczLCAtNzkuMzE1NzM0OTAwMDAwMDJdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzI3YzU1MzQyMTE0NjRkODc5MDFjYmQ5OTRhYzU4N2E1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My44MTEwODg2LCAtNzkuMjY2MDA2NDk5OTk5OTddLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2Q2M2E0OTY3OTg4MjRkMTZiYzVjNzZkY2Y2MTUxZTY1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42NjYxMDM0LCAtNzkuNTg3Njc3XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8xNDdjZjQxZDliZmU0ZjNmOTc3OGFmNmRhMmViNGM4NCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzAzNTkwNCwgLTc5LjQ1MjQyMzA5OTk5OTk4XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9mZDAxNDdhZjBlOWE0NTJiYTYyODRkM2JjYzAwMzc1OCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjgzMTcwMywgLTc5LjQxODMwNDQwMDAwMDAzXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9hM2Y1MGYyYTQ5YTA0MjQzOTU5ZjM5MDQxMzAyNjRmNCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjQwMzM1MSwgLTc5LjQzNzkxOTZdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzgzZTIyNTIyYmU3NjQ5Y2Q5ZTlmZjdiMjkwY2E4NDcxID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43Nzg1NjA2MDAwMDAwMSwgLTc5LjMyODcwNDhdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzZhZjFlM2E3YzkzZTQ4NDZiOTMyOTMxMWNkMTcyZjM4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42OTEyMjcwMDAwMDAwMSwgLTc5LjQ3MDM5NzkwMDAwMDAyXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8zOWJhMzE0YjVkOTY0NzUyOWIzYTQ5NDVmODRmMjM2ZCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjc4ODY3Mjk5OTk5OTksIC03OS4zMjY4MjA0XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl80YTA4ZmJmNThjZmQ0NmNmOGRjYWY3YmQ5NzRjYWQ2OSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzQ2ODE0NzAwMDAwMDEsIC03OS41ODM4MDg5MDAwMDAwMl0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfZjQ5MjViNzk4N2ZkNDc4N2E2NGM2NTg1ZmE0ZDE1ZmUgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc4NjU4MjksIC03OS4xODgzMDg3MDAwMDAwMl0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfMTUxNjZlZmQ5YTBmNDIyNzkzZGEwZjdiMjcyNWRjNDYgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY1MDgxMDIsIC03OS41MjIzNjE4XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl81NWI0MTEwMTc0ODQ0NTAxYTA4MmEzMmQ5YTEyNWE1YyA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzIwNTE2MiwgLTc5LjQ4MDcyODFdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzQ0ZjA3NDdmZWE5ZjQyZDdiZTBmOTgyMTg4MmZkZTk3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43ODU3NjI3OTk5OTk5OSwgLTc5LjI4OTQ1OTIwMDAwMDAyXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9hYzYwMTI4YmRiZTI0NGM4YWIyNDg4NzllNDJlMmJiNyA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzg3NjUxMSwgLTc5LjM1MTY1NDA5OTk5OTk4XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl80OTdmZTA0ZjRjOWU0MTE0OGI5M2FiZWEyYTViMzYxYiA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzczODYwOSwgLTc5LjQ0MzAwODRdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2I4MTc1OWY0Mzk5MTRmOTQ4ZmE0NmExNWZiOGY4YmQyID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42MzkwMjI3OTk5OTk5OSwgLTc5LjQxNTkxNjQwMDAwMDAxXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl82YTY4M2YwN2IwYjM0ZDU5YjJjZTRkY2Q3NGIxYWE3ZSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjcwMzM3NzAwMDAwMDEsIC03OS40NTU3OTUyOTk5OTk5OF0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfYjQwMDczYmI5YThlNGRmNmEyZDU4MTNiYTg5MTVlNjYgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjcyMjI4MjQsIC03OS4yNjIxMjMxXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8zNTI0YTg5NzRmNTU0MWJjOTRiNzVmZWQxOWUyNGY2MiA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzQwNzExMiwgLTc5LjQzODg3MzNdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzZlMDUwNGM4NWZjYTQ0YWFiYzVkMDVlNjlhZDE3N2EzID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42ODAxMTA5LCAtNzkuMjkyNTk0OV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfZmIyYTI2NTMwYWM5NGQ5NWJjOTQwZDkzMzJhMmUwOWUgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY5MTg5ODMsIC03OS40NTYyNTMxXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9mZTJiNGYyYTQ4ODg0YTllOGM4ZGM3MDFjNzIzNWUyOSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjg2MjMzNSwgLTc5LjM5MzMzMzRdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2RjOGQwNjNiYzI2NTQwZmM5YmY0NDU4MWQyMTc5YzAwID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43NDgyODM0LCAtNzkuMTk1ODMxM10sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfMDhkZDM0NmNmMjg5NDI0N2FiM2YxMGM5YmQzZmFkODEgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjgwNDIyNTksIC03OS4xNjg3ODUxXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8yOTViYjNmMmIyY2I0N2JjODBmZTc1ODAzZDU2NTlhMCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjY2NDMxNCwgLTc5LjM3NjUwM10sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfY2I0OTViZjUzZmNmNDg2NGIyZmQzYWMxMmQwMmM2ODUgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc0NjkzMywgLTc5LjQzNDQxNzddLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2IzNzZiZmQxNzc4ODQ0MTU4ZDY2NGNhMjk5NjQ0ZjM3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43MjkwNjExLCAtNzkuNDQ1OTkxNV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfZDUyOTNjY2JmYzJkNGE2OWJjMWI2ODAyY2M1OTM2Y2QgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY1OTIyOTI5OTk5OTk5LCAtNzkuNTE0MTM3M10sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfNmEwZWQ0NWU4NzI1NDM2NWE2ZjQ5YTliOTExNjZmMjUgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjczNTQxNjQsIC03OS4zNDcxMzc1XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl81M2FkM2EzZWMxYjk0ZWU3ODdhZDI3OGRlODdmOWFjZiA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjc0NDA4LCAtNzkuNDMzNzg0NV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfOWIzMDUwZjg3ZGYxNGNjMGFkYjg3ZTk4YjNmODNkNmEgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjYxNDIwNDQsIC03OS41MTcyNzI5MDAwMDAwMl0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfYzE1ZjUwMzM4ZTZhNGNiOGI4ZThjNmRjMWQyYTA0MDQgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY5NTgxNiwgLTc5LjU2MjczNjVdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzM0ZTYwMmEzYWRhMDRhMWZiMGI0MjU4MTFmMTgzMTM4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My41OTM2NjIzLCAtNzkuNTM3MDAyNl0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfM2NkZmMzNzdiYjMwNGE3MGFlNWJkMjQxMTc0ZTYyM2IgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc4MTYzOTEsIC03OS40NTUyOTk0XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl82ZDkxNzI0N2FlZWQ0YTYyYjUzMjQ3MjU5NzEwZmVlNCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzMzNjgwNywgLTc5LjIyNzAxMjZdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzNiMjA0NDliYmZjMzRmZjZiY2U0Mjk3MzA3NjE1MjI0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43Mjc2NTM1LCAtNzkuNTQ5NTM3N10sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfMzg5YzgwMjU3OTU1NGMzOTk2MzVkYjBlZTMyODljZDEgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY4NDI4OCwgLTc5LjMxOTIzNjhdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2RmNzE0N2M5MWM1NTQ5OWVhNTUxZTQyOTllMWFhZmRiID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42MDU2NDQyLCAtNzkuNTM4MjY5XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9jNzJkNmQwZWU2M2I0MGM5ODJjZThkOWRmYjYxMzE0ZSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjUxNjExMjk5OTk5OTksIC03OS40NzQwOTA2XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl83MmM1NjljOTRhZDM0ODY0OGMxZmQ4OGNlZjRkOTU0MiA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjc3NTI0NjAwMDAwMDEsIC03OS4zNTg2NTAyXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl85ZTY2NGJmMWU3YjQ0M2M4YTE0YzcyN2QwMDIxMDc4MyA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzc0MzUzMDAwMDAwMDEsIC03OS40OTk4MDE2XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9kNTY4ODBiMzBkYTU0OWYzYmU1ODBlMDEzNWRmNjUwMCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjMwOTczNzk5OTk5OTksIC03OS40ODE1MTRdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2VjYzQzMDJmMmYwMDQ5MWRiNGE3N2UxNzlhZDI0NmU0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43MDc0Nzc2LCAtNzkuMzQzNjI3OTAwMDAwMDJdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzJlZjkxNThlYzhiYjRjYmViNDYwNWNiMzc5NjQ1MWI0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42NzE2NzI4LCAtNzkuNDkzNzUxNV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfODdmMmIwYjIwYmEzNDRhZThlODhkNzZmMjIxZDRhN2EgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY3ODUzOTMsIC03OS41NDQ4OTE0MDAwMDAwM10sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfOWIxM2E3MDc3Y2U0NGMzNWFjZGE3YTI3YTdjMmFhYzMgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY5NzM3NjMsIC03OS4zOTY0NjkxXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9hYjk4NTRkOTJjOTQ0ZGRiYTNiNzc1NGI4N2EyZmVlYSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzA1MTA4NiwgLTc5LjM3NDkzMTNdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzE5YWRlYmNkNTQyZjQ4MDE5N2NiZmQ4ZWZiNTQwN2MzID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42MjczNDYsIC03OS41NjIzNzAzXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl80MDgyYWI2YmNmNDk0ZDc5OWNkZDQ3Y2Y1ZDg5YjA2YiA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjcwODU2NSwgLTc5LjQ3NTE5NjhdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzQzYTMzNWYzMmFlZjRjZjFiODg4NWE1YzNlOWNlZmQ3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42ODY4NzA2LCAtNzkuNDY4NTc0NV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfMmUzOWZmNGI2ZmNlNGM5ZGExMzkzYTQ3MDBkMTg3YjkgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc0MzYzMzMsIC03OS41NzY0NzcwOTk5OTk5OF0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfMzhiMzUyNmYxYzliNDEyNWJmNDc5YmJjMzEyZTAxNjYgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc2NjQwNywgLTc5LjQyNTc0MzA5OTk5OTk4XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl84Mjg2YWZlMjIwOTU0NWJkOTU3ZDI0OTM3ZTQyYjczZSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzI3NjY0OSwgLTc5LjQwNjIzNDcwMDAwMDAxXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9jMDlhNGZkMWJiNDU0NzQxOWFiMjJhMzc2MDg1MTVhMSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjc3NzgwMiwgLTc5LjQ1NTc5NTI5OTk5OTk4XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8wNDg2OTk3MzcxNzA0ZmNhYjU4YWRlZDFlN2NiYjljZSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjk0NTQ1NzAwMDAwMDA2LCAtNzkuMzM1MjY2MV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfNWFhZTdiMzYxYWUxNDY1MzhiYWQ2Y2QwOGQ3Y2RhYzQgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY3Mjk2OTgsIC03OS4zNDIzOTJdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2VkMTNkZjY5NDgxMTQ0M2JiMTQwZjEwYTFlNTlhNTY2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42ODU0MTM0LCAtNzkuNDE5MjM1Ml0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfOWU4ZGYxM2RkMjRiNDg0N2JlY2M2OGYwYzcyZDJiOWYgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjcwNzU1MzksIC03OS41MDUxMTE3MDAwMDAwMV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfNTQ2NmRkMWY2OWQ3NDRjZjhhOWI3ODFjMzllMDYyYzcgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY2NzczMjIsIC03OS4zMTAzMzMzXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl81YjY2YjJhNWZmYTk0ZDdmYjVlNzYzYjg5NzgxY2EzNCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjQ3MzA0NSwgLTc5LjQzMjcwODddLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2U4M2IzZGNmZDUxZjQwMDg4ZTQzM2NkOTliNWZmMmM1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42NTgzNDgxMDAwMDAwMSwgLTc5LjQzNDc3NjNdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzBiNjcyY2QzNTA4ZDQ2MTY4OWJlMjFlMmExZjA0OTRjID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42ODA5NTAyMDAwMDAwMSwgLTc5LjM5Mzc3NTkwMDAwMDAyXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9iYzE3MDMwZmQ4MzQ0YjcwOGI2M2QxMDJmYzg5OTM0YiA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjY1NTI3MywgLTc5LjQ5OTIwNjVdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2I4N2FhNzNmOGYyNjQyNWZiZDI1ZWNjMDcyZjE2ODkyID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43OTA3MTgxMDAwMDAwMSwgLTc5LjE1MjE0NTQwMDAwMDAyXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl80N2ZjZjQ4MTMxZjg0ZDc3OTk1OGE1ZjQ2NDE4ZTM2ZCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjg2MDU4LCAtNzkuNDI0Nzc0Ml0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZmM2U5Y2RlODAzZjQ5YTBiZTQ0NmFiMGEzZTI4OGZiKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfM2E1YmQ3ZDdiNjY2NDdhODhhNmM0YmViOTBmM2JmOTYgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY2MDUyNjMsIC03OS40MTQ2NjUyXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl83YmQ3NWViNzBhNzc0NTM0ODIwZGYxM2MyNmU3Y2FjYiA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjczMzAxNywgLTc5LjU1MTU0NDIwMDAwMDAyXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl84NTNhMzAzMjFjNjQ0NjA4YmE1MmM0NjAxZDUyODQ4YiA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjM4NDM1NCwgLTc5LjU2MDkyMDcwMDAwMDAzXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmYzZTljZGU4MDNmNDlhMGJlNDQ2YWIwYTNlMjg4ZmIpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl83YmI2ZDc4NGIyNGE0N2NkYWI1NzQxNmUzYmE0YjNhNSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzkxMTMwMSwgLTc5LjM5MzM1NjNdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzdjY2Y4OTFiZWZlZjRjNTBiMGY3ZmNlNWZlMGExODk0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42NTE1NzcsIC03OS42MDMwOTZdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mZjNlOWNkZTgwM2Y0OWEwYmU0NDZhYjBhM2UyODhmYik7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGhlYXRfbWFwXzc5ODk2YjZjYjhlMTRjNTliNDE4YmYwMDc0OWI1ZmEzID0gTC5oZWF0TGF5ZXIoCiAgICAgICAgICAgICAgICBbWzQzLjY2ODQ0OTQsIC03OS4zNDMwOTM5LCA1MTQuMF0sIFs0My43NTkyODUsIC03OS41MDc5MjY5MDAwMDAwMiwgMjAwNi4wXSwgWzQzLjY5NzU1MTcwMDAwMDAxLCAtNzkuNTAxNjYzMiwgODI5LjBdLCBbNDMuNzIxNzAyNiwgLTc5LjU3MTUxMDMsIDY5NC4wXSwgWzQzLjY2Mzg5MDgsIC03OS41MDM0ODY1OTk5OTk5OSwgMTkzLjBdLCBbNDMuNjU3MzA2NzAwMDAwMDEsIC03OS4zNzM0NTg5LCAzNjA5LjBdLCBbNDMuNjY2MzYyOCwgLTc5LjMxNjYwNDU5OTk5OTk4LCA2NDguMF0sIFs0My42NTgxMTE2MDAwMDAwMSwgLTc5LjQwMjAyMzMsIDEyOTMuMF0sIFs0My43Njg4NTYsIC03OS40NjY5MjY2LCA5NTEuMF0sIFs0My44MDc4MDQxMDAwMDAwMSwgLTc5LjIxNTU5OTA5OTk5OTk4LCAyMDI0LjBdLCBbNDMuNjQxNTUyLCAtNzkuNDc0NTQwNywgNjQ3LjBdLCBbNDMuNjk1MTMzMjAwMDAwMDEsIC03OS4zMDM0ODIxLCA4NTMuMF0sIFs0My42NTU4OCwgLTc5LjM2MzIyMDIsIDk4MC4wXSwgWzQzLjY2MzkwNjEsIC03OS4zODQxNTUyOTk5OTk5NywgNjMwMS4wXSwgWzQzLjY1MDA3MDIsIC03OS4zOTY4ODExLCAzMjYzLjBdLCBbNDMuNjk5MTMxLCAtNzkuMjU0MzMzNSwgMTQxMS4wXSwgWzQzLjc0OTQ4ODgsIC03OS41MzI3OTExLCA5NjguMF0sIFs0My42NzI0MzE5LCAtNzkuMzM0MTkwNDAwMDAwMDMsIDE5NDkuMF0sIFs0My43NzM2MTY3OTk5OTk5OSwgLTc5LjI2MTEzMTMsIDIyNzcuMF0sIFs0My42ODc4MjA0LCAtNzkuNDM0OTM2NDk5OTk5OTgsIDc4OC4wXSwgWzQzLjY1ODA3NzIwMDAwMDAxLCAtNzkuMzg0NzEyMiwgMzU2NC4wXSwgWzQzLjY0NDk1NDcsIC03OS4zOTc2NDQsIDU2NzQuMF0sIFs0My43NTY0MzkyLCAtNzkuMzYwNzcxMiwgOTE2LjBdLCBbNDMuNjYzNzIzLCAtNzkuMzcwNTIxNSwgMTExOS4wXSwgWzQzLjc2NjYwOTIsIC03OS4xODU2NjEzLCAyODU3LjBdLCBbNDMuNjk0MzY2NSwgLTc5LjI3MzY1MTEsIDE0MjcuMF0sIFs0My43NDM5OTE5LCAtNzkuNTk4ODY5MywgNDMzOC4wXSwgWzQzLjc2MzAyMzQsIC03OS4zMTc1Mjc4LCAyMzUwLjBdLCBbNDMuNzY4ODM3LCAtNzkuMzc4Mzc5Nzk5OTk5OTgsIDc5OC4wXSwgWzQzLjc0NjA3ODUsIC03OS4zODg2MjYxLCA0MjAuMF0sIFs0My43NTY1OTk0LCAtNzkuNTEyMDY5NywgMTk4MS4wXSwgWzQzLjY2NTkxNjQsIC03OS40MDc0NzA3LCAyOTA4LjBdLCBbNDMuNzY4MzgzLCAtNzkuMzQ5MDM3MiwgNDcyLjBdLCBbNDMuNzMzMzM3NCwgLTc5LjI2MzI5MDQwMDAwMDAyLCA4MDQuMF0sIFs0My43NjIxODQxLCAtNzkuMzIxMTUxNywgMTM3Ny4wXSwgWzQzLjgxMTUxOTYsIC03OS4zMTQ1NDQ3LCA2ODcuMF0sIFs0My43NzY4NjY5LCAtNzkuMzE2MjIzMDk5OTk5OTksIDEwMTYuMF0sIFs0My43MzgzNTc1LCAtNzkuMzA5NzgzOSwgNTk0LjBdLCBbNDMuNzUyNDc5NiwgLTc5LjU2MDczNzYsIDE1OTAuMF0sIFs0My43NDI5MzE0LCAtNzkuMjExMjk2MDk5OTk5OTgsIDEyNDEuMF0sIFs0My42ODIzMzg3LCAtNzkuNTI2NjAzNywgNTIxLjBdLCBbNDMuNzc1MTU3OSwgLTc5LjQxNDM4MjksIDE4NjcuMF0sIFs0My43MTMwNTA4LCAtNzkuNDExNzczNzAwMDAwMDMsIDQ2OC4wXSwgWzQzLjc3NzU5MTcsIC03OS4yMjY1Nzc3OTk5OTk5OSwgMzE1OC4wXSwgWzQzLjcxNzAyNTgsIC03OS41MzcyOTI1LCA2OTIuMF0sIFs0My43NDEyMzM4LCAtNzkuMjM3MjY2NSwgMTgwNC4wXSwgWzQzLjcwNjg2MzQsIC03OS4zMjA2MSwgOTcwLjBdLCBbNDMuNjAzMDA0NSwgLTc5LjUwNzQ4NDQwMDAwMDAyLCA4NDEuMF0sIFs0My43MTY1Nzk0LCAtNzkuMzMwMzc1NywgMTAwMS4wXSwgWzQzLjc5MTUxNTQsIC03OS4yOTgxMDMzLCAxNTcwLjBdLCBbNDMuNjQxMjI3NywgLTc5LjQyNjY3MzkwMDAwMDAzLCAxMjcyLjBdLCBbNDMuNjkzMjQ0OSwgLTc5LjUwNDY2OTIwMDAwMDAyLCA4NzAuMF0sIFs0My42ODQ0MjkyLCAtNzkuMzQ2OTIzOCwgNDY0LjBdLCBbNDMuNzg5OTEzMiwgLTc5LjIxNzQ1MywgODcxLjBdLCBbNDMuNjg1OTgxOCwgLTc5LjM1NjI5MjcsIDI5OS4wXSwgWzQzLjY5ODk5MzcsIC03OS40MzUwMzU3MDAwMDAwMSwgNTY4LjBdLCBbNDMuNzA3MjI1OCwgLTc5LjI5NTI4MDUsIDIxNjMuMF0sIFs0My43MzM1ODE1LCAtNzkuNDgzNzI2NSwgMjk3NC4wXSwgWzQzLjY0NDY1NzEsIC03OS41MzA3OTk5LCAyNTg5LjBdLCBbNDMuNzY4OTAxOCwgLTc5LjI4NTU1MzAwMDAwMDAyLCAxNzU2LjBdLCBbNDMuODAxOTMzMywgLTc5LjM1OTM5NzksIDY4Ny4wXSwgWzQzLjY5ODM0NTIwMDAwMDAxLCAtNzkuNTExMzE0NCwgMTQxMC4wXSwgWzQzLjc3OTc2OTksIC03OS40MTU1NzMwOTk5OTk5NywgMTI3NS4wXSwgWzQzLjY5NjI2MjQsIC03OS40NDc2ODUyMDAwMDAwMiwgMTExNy4wXSwgWzQzLjczMjM5NTIwMDAwMDAwNiwgLTc5LjQxOTQxMDcwMDAwMDAxLCAxMTM1LjBdLCBbNDMuNjUwNzgzNSwgLTc5LjQxMzQ5NzkwMDAwMDAyLCAxMjE3LjBdLCBbNDMuNzAwMzEzNiwgLTc5LjM4Njk3MDQ5OTk5OTk4LCA0MTMuMF0sIFs0My44MDEyNjk1LCAtNzkuMjk2NjAwMzAwMDAwMDIsIDE0MTQuMF0sIFs0My43MDU0NjM0LCAtNzkuNDAwMDkzMDk5OTk5OTgsIDMyNS4wXSwgWzQzLjY2ODQ2ODUsIC03OS40MzkwMzM1LCAyNDUwLjBdLCBbNDMuNjkyNDk3MywgLTc5LjMxNTczNDkwMDAwMDAyLCA0MzQuMF0sIFs0My44MTEwODg2LCAtNzkuMjY2MDA2NDk5OTk5OTcsIDEwMDguMF0sIFs0My42NjYxMDM0LCAtNzkuNTg3Njc3LCA2NzYuMF0sIFs0My43MDM1OTA0LCAtNzkuNDUyNDIzMDk5OTk5OTgsIDE1NzEuMF0sIFs0My42ODMxNzAzLCAtNzkuNDE4MzA0NDAwMDAwMDMsIDQ1Ny4wXSwgWzQzLjY0MDMzNTEsIC03OS40Mzc5MTk2LCAxNDE2LjBdLCBbNDMuNzc4NTYwNjAwMDAwMDEsIC03OS4zMjg3MDQ4LCA0MjEuMF0sIFs0My42OTEyMjcwMDAwMDAwMSwgLTc5LjQ3MDM5NzkwMDAwMDAyLCA2MTUuMF0sIFs0My42Nzg4NjcyOTk5OTk5OSwgLTc5LjMyNjgyMDQsIDg4NS4wXSwgWzQzLjc0NjgxNDcwMDAwMDAxLCAtNzkuNTgzODA4OTAwMDAwMDIsIDIyNTcuMF0sIFs0My43ODY1ODI5LCAtNzkuMTg4MzA4NzAwMDAwMDIsIDgxNi4wXSwgWzQzLjY1MDgxMDIsIC03OS41MjIzNjE4LCA0NTQuMF0sIFs0My43MjA1MTYyLCAtNzkuNDgwNzI4MSwgNDU5LjBdLCBbNDMuNzg1NzYyNzk5OTk5OTksIC03OS4yODk0NTkyMDAwMDAwMiwgMTMzMS4wXSwgWzQzLjc4NzY1MTEsIC03OS4zNTE2NTQwOTk5OTk5OCwgMTI4NS4wXSwgWzQzLjc3Mzg2MDksIC03OS40NDMwMDg0LCAxMDc4LjBdLCBbNDMuNjM5MDIyNzk5OTk5OTksIC03OS40MTU5MTY0MDAwMDAwMSwgMTMyNC4wXSwgWzQzLjY3MDMzNzcwMDAwMDAxLCAtNzkuNDU1Nzk1Mjk5OTk5OTgsIDcwNC4wXSwgWzQzLjcyMjI4MjQsIC03OS4yNjIxMjMxLCAxNTc3LjBdLCBbNDMuNzQwNzExMiwgLTc5LjQzODg3MzMsIDczNS4wXSwgWzQzLjY4MDExMDksIC03OS4yOTI1OTQ5LCAxNjkxLjBdLCBbNDMuNjkxODk4MywgLTc5LjQ1NjI1MzEsIDMyOC4wXSwgWzQzLjY4NjIzMzUsIC03OS4zOTMzMzM0LCAxNjI4LjBdLCBbNDMuNzQ4MjgzNCwgLTc5LjE5NTgzMTMsIDQwMi4wXSwgWzQzLjgwNDIyNTksIC03OS4xNjg3ODUxLCAxOTQwLjBdLCBbNDMuNjY2NDMxNCwgLTc5LjM3NjUwMywgMTUzMC4wXSwgWzQzLjc0NjkzMywgLTc5LjQzNDQxNzcsIDY0My4wXSwgWzQzLjcyOTA2MTEsIC03OS40NDU5OTE1LCA4NzMuMF0sIFs0My42NTkyMjkyOTk5OTk5OSwgLTc5LjUxNDEzNzMsIDQ3My4wXSwgWzQzLjczNTQxNjQsIC03OS4zNDcxMzc1LCA5MzguMF0sIFs0My42NzQ0MDgsIC03OS40MzM3ODQ1LCA2MjMuMF0sIFs0My42MTQyMDQ0LCAtNzkuNTE3MjcyOTAwMDAwMDIsIDIwNDAuMF0sIFs0My42OTU4MTYsIC03OS41NjI3MzY1LCAxMTE2LjBdLCBbNDMuNTkzNjYyMywgLTc5LjUzNzAwMjYsIDU1Ny4wXSwgWzQzLjc4MTYzOTEsIC03OS40NTUyOTk0LCA4MzcuMF0sIFs0My43MzM2ODA3LCAtNzkuMjI3MDEyNiwgMTAxNC4wXSwgWzQzLjcyNzY1MzUsIC03OS41NDk1Mzc3LCA1ODEuMF0sIFs0My42ODQyODgsIC03OS4zMTkyMzY4LCAxMTkxLjBdLCBbNDMuNjA1NjQ0MiwgLTc5LjUzODI2OSwgNDYwLjBdLCBbNDMuNjUxNjExMjk5OTk5OTksIC03OS40NzQwOTA2LCAxMDU3LjBdLCBbNDMuNjc3NTI0NjAwMDAwMDEsIC03OS4zNTg2NTAyLCA3MDkuMF0sIFs0My43NzQzNTMwMDAwMDAwMSwgLTc5LjQ5OTgwMTYsIDMxNDEuMF0sIFs0My42MzA5NzM3OTk5OTk5OSwgLTc5LjQ4MTUxNCwgOTQyLjBdLCBbNDMuNzA3NDc3NiwgLTc5LjM0MzYyNzkwMDAwMDAyLCA3NDYuMF0sIFs0My42NzE2NzI4LCAtNzkuNDkzNzUxNSwgMTIyNy4wXSwgWzQzLjY3ODUzOTMsIC03OS41NDQ4OTE0MDAwMDAwMywgMTA4MS4wXSwgWzQzLjY5NzM3NjMsIC03OS4zOTY0NjkxLCAxMjM1LjBdLCBbNDMuNzA1MTA4NiwgLTc5LjM3NDkzMTMsIDUwNy4wXSwgWzQzLjYyNzM0NiwgLTc5LjU2MjM3MDMsIDI5My4wXSwgWzQzLjY3MDg1NjUsIC03OS40NzUxOTY4LCAxMDQzLjBdLCBbNDMuNjg2ODcwNiwgLTc5LjQ2ODU3NDUsIDUwMy4wXSwgWzQzLjc0MzYzMzMsIC03OS41NzY0NzcwOTk5OTk5OCwgNjEyLjBdLCBbNDMuNzY2NDA3LCAtNzkuNDI1NzQzMDk5OTk5OTgsIDU0OC4wXSwgWzQzLjcyNzY2NDksIC03OS40MDYyMzQ3MDAwMDAwMSwgNDQ1LjBdLCBbNDMuNjc3NzgwMiwgLTc5LjQ1NTc5NTI5OTk5OTk4LCA4MTguMF0sIFs0My42OTQ1NDU3MDAwMDAwMDYsIC03OS4zMzUyNjYxLCA2MDAuMF0sIFs0My42NzI5Njk4LCAtNzkuMzQyMzkyLCA0MjUuMF0sIFs0My42ODU0MTM0LCAtNzkuNDE5MjM1MiwgMzYwLjBdLCBbNDMuNzA3NTUzOSwgLTc5LjUwNTExMTcwMDAwMDAxLCA3MTIuMF0sIFs0My42Njc3MzIyLCAtNzkuMzEwMzMzMywgODUzLjBdLCBbNDMuNjQ3MzA0NSwgLTc5LjQzMjcwODcsIDcwMy4wXSwgWzQzLjY1ODM0ODEwMDAwMDAxLCAtNzkuNDM0Nzc2MywgNjAyLjBdLCBbNDMuNjgwOTUwMjAwMDAwMDEsIC03OS4zOTM3NzU5MDAwMDAwMiwgMjM0LjBdLCBbNDMuNjY1NTI3MywgLTc5LjQ5OTIwNjUsIDUzNS4wXSwgWzQzLjc5MDcxODEwMDAwMDAxLCAtNzkuMTUyMTQ1NDAwMDAwMDIsIDMxMS4wXSwgWzQzLjY4NjA1OCwgLTc5LjQyNDc3NDIsIDM3MS4wXSwgWzQzLjY2MDUyNjMsIC03OS40MTQ2NjUyLCA3ODguMF0sIFs0My42NzMzMDE3LCAtNzkuNTUxNTQ0MjAwMDAwMDIsIDM2My4wXSwgWzQzLjYzODQzNTQsIC03OS41NjA5MjA3MDAwMDAwMywgNDUwLjBdLCBbNDMuNzkxMTMwMSwgLTc5LjM5MzM1NjMsIDQyOC4wXSwgWzQzLjY1MTU3NywgLTc5LjYwMzA5NiwgMjMuMF1dLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG1pbk9wYWNpdHk6IDAuMiwKICAgICAgICAgICAgICAgICAgICBtYXhab29tOiAxMSwKICAgICAgICAgICAgICAgICAgICBtYXg6IDYzMDEsCiAgICAgICAgICAgICAgICAgICAgcmFkaXVzOiAzMCwKICAgICAgICAgICAgICAgICAgICBibHVyOiAyMCwKICAgICAgICAgICAgICAgICAgICBncmFkaWVudDogbnVsbAogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwXzg0OGYzMjMyN2JiNTQ3YzJiYTI0MjU1MmYzODBlZGY5KTsKICAgICAgICAKPC9zY3JpcHQ+&#34; style=&#34;position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;&#34; allowfullscreen webkitallowfullscreen mozallowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-python&#34;&gt;import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import re #regular expression matching operations
import folium #maping crime on the map
from folium.plugins import HeatMap, MarkerCluster #making maping visually appealing
%matplotlib inline
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;loading-data&#34;&gt;Loading Data&lt;/h2&gt;
&lt;p&gt;I downloaded the original csv file &lt;code&gt;MCI_2014_to_2018.csv&lt;/code&gt;from &lt;a href=&#34;http://data.torontopolice.on.ca/datasets/mci-2014-to-2018&#34; target=&#34;_blank&#34;&gt;http://data.torontopolice.on.ca/datasets/mci-2014-to-2018&lt;/a&gt;. I preprocessed the data and selected only the variables of my interest and saved the file as &lt;code&gt;toronto_crime.csv&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-python&#34;&gt;crime = pd.read_csv(&#39;toronto_crime.csv&#39;)
crime = crime.drop(columns = &amp;quot;Unnamed: 0&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The original data set already breaks down the &lt;code&gt;occurrencedate&lt;/code&gt; (yyy-MM-dd HH”T”:mm:ss.SSS’Z’) into marginal time categories, i.e. year, month, hour, etc. However, I wanted to show how easily Python and pandas can generate these variables from the string format.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-python&#34;&gt;crime[&amp;quot;datetime&amp;quot;] = pd.to_datetime(crime[&amp;quot;occurrencedate&amp;quot;])
crime[&#39;year&#39;] = crime[&#39;datetime&#39;].dt.year
crime[&#39;month&#39;] = crime[&#39;datetime&#39;].dt.month
crime[&#39;dayofweek&#39;] = crime[&#39;datetime&#39;].dt.dayofweek
crime[&#39;hour&#39;] = crime[&#39;datetime&#39;].dt.hour
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&#34;language-python&#34;&gt;crime[&amp;quot;MCI&amp;quot;] = crime[&amp;quot;MCI&amp;quot;].astype(&#39;category&#39;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I am not presenting EDA of the date in this post. If you wish to see some of the methods I have used, I recommend you read my previous post on &lt;a href=&#34;https://www.jiristodulka.com/post/machine/&#34; target=&#34;_blank&#34;&gt;&lt;strong&gt;“Machine Learning and Diabetes”&lt;/strong&gt;&lt;/a&gt;, where I disclose some of the frequently used commands.&lt;/p&gt;
&lt;h1 id=&#34;crime-composition-in-toronto&#34;&gt;Crime Composition in Toronto&lt;/h1&gt;
&lt;p&gt;Technically, visualizing the crime composition in the City if Toronto was the most difficult part of my work. Initially, my aim was to make the following visualization of every &lt;code&gt;MCI&lt;/code&gt;. However, as you can see in the following code, this would take a lot of space. Therefore, I have decided to focus only on:
* Crime in general
* Different categories of assault in offence.&lt;/p&gt;
&lt;p&gt;Additionally, I wanted to share an appealing visualization rather than pie charts (I originally started with). I admit, I had a lot of fun while playing with the following code. &lt;strong&gt;The whole objective with preprocessing data was to store values and labels separately in the same order&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Therefore, the following section has three parts:
1. Generating values and labels for Crimes
2. Generating values and labels for Assaluts
3. &lt;strong&gt;Visualizing Crime and Assaults&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Since I am obsessed with writing neat and clean codes, or at least I always try my best, I wonder if you can come up with a more efficient solution? If so, can you kindly share it with me?&lt;/p&gt;
&lt;h2 id=&#34;1-values-and-labels-crime&#34;&gt;1. Values and Labels: Crime&lt;/h2&gt;
&lt;p&gt;Obtaining values and labels from crime was the easiest step and I do not think I need to explain the logic behind it. The process is as simple as &amp;ldquo;ask for values&amp;rdquo; and &amp;ldquo;ask for labels&amp;rdquo;.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-python&#34;&gt;values_crime = crime[&amp;quot;MCI&amp;quot;].value_counts()
labels_crime = crime[&amp;quot;MCI&amp;quot;].value_counts().keys()
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;2-values-and-labels-assault&#34;&gt;2. Values and Labels: Assault&lt;/h2&gt;
&lt;p&gt;However, coming up with the values and labels for assaults was a different story and it took me a while before I came up with and realized the &lt;strong&gt;Step 3.&lt;/strong&gt; .&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; I filtered for rows with any form of &amp;ldquo;ASSAULT&amp;rdquo; in &lt;code&gt;offence&lt;/code&gt; variable. I called the filtered df &lt;code&gt;crime_assault&lt;/code&gt;. You can notice that I specified the selection to be case insensitive by &lt;code&gt;flags=re.IGNORECASE&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; I counted the values in &lt;code&gt;crime_assault&lt;/code&gt;, i.e. &amp;ldquo;How many times each criminal act classified as assault appears in the data&amp;rdquo;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; This step was actually not necessary. However, when you look at the chart below, you should notice the category &lt;code&gt;other&lt;/code&gt;. In fact, it consolidates the other three types of assaults: *Peace Officer Wpn/Cbh, Force/Thrt/Impede, and Aggravated Assault Avails Pros in the range from 251 to 12. As you can see, the values are marginal (compared to Assaults of 62194). Since the categories were overlaying in the initial plot, I have decided to consolidate them. I iterated over the rows in &lt;code&gt;values_assault&lt;/code&gt; with the aim to &lt;strong&gt;rename&lt;/strong&gt; the key of the value in &lt;code&gt;offence&lt;/code&gt; smaller than 1500. I had to save it as &lt;code&gt;pd.DataFrame&lt;/code&gt; object because of the following step.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Since the purpose of the whole procedure was to plot the data with labels and values, it was essential to store the values in the exact index order as the labels: &lt;code&gt;sort_values(&amp;quot;offence&amp;quot;,ascending=False)&lt;/code&gt;. In this step, I was grouping the data according to &lt;code&gt;index&lt;/code&gt;. It is because &lt;code&gt;values_assault&lt;/code&gt; was originally a Series object. However, after I stored it as &lt;code&gt;pd.DataFrame&lt;/code&gt; object, I had to use &lt;code&gt;index&lt;/code&gt; because &lt;code&gt;key&lt;/code&gt; is strictly associated with Series objects.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Step 5:&lt;/strong&gt; I saved the index values, i.e. the categories of assault, as strings.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;To wrap it up, the goal of these 5 steps was to store the values and labels separately in the same order to facilitate visualization.&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-python&#34;&gt;crime_assault = crime[crime[&amp;quot;offence&amp;quot;].str.contains(&#39;ASSAULT&#39;, flags=re.IGNORECASE, regex=True)] #Step 1.
values_assault = crime_assault[&amp;quot;offence&amp;quot;].value_counts() #Step 2.
for key,value in values_assault.iteritems(): #Step 3.
if value &amp;lt; 1500:
values_assault= pd.DataFrame(values_assault.rename({key: &amp;quot;other&amp;quot;}))
values_assault=values_assault.groupby(values_assault.index).sum().sort_values(&amp;quot;offence&amp;quot;,ascending=False) #Step 4.
labels_assault = values_assault.index #Step 5.
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;visualization&#34;&gt;Visualization&lt;/h2&gt;
&lt;p&gt;As I already said, I wanted to generate an appealing visualization. I took inspiration from &lt;strong&gt;Kevin Amipara&lt;/strong&gt; and his article called &lt;a href=&#34;https://medium.com/@kvnamipara/a-better-visualisation-of-pie-charts-by-matplotlib-935b7667d77f&#34; target=&#34;_blank&#34;&gt;“A better visualization of Pie charts by MatPlotLib”&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The only changes I have made was to i.) plotting the two plots in subplots, and ii.) adding the legends.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-python&#34;&gt;plt.figure(num=None, figsize=(15, 12))
############################## Crime ################################
plt.subplot(1,2,1)
plt.pie(values_crime, autopct=&#39;%1.1f%%&#39;, pctdistance=0.85, startangle=90, explode = [0.05]*labels_crime.shape[0])
#draw circle
centre_circle = plt.Circle((0,0),0.70,fc=&#39;white&#39;)
fig = plt.gcf()
fig.gca().add_artist(centre_circle)
#title+legend
plt.title(&amp;quot;Share of Criminal Offences in Toronto&amp;quot;,size=20)
plt.legend(labels_crime,loc=2)
# Equal aspect ratio ensures that pie is drawn as a circle
plt.axis(&#39;equal&#39;)
plt.tight_layout()
############################## Assault ################################
plt.subplot(1,2,2)
plt.pie(values_assault, autopct=&#39;%1.1f%%&#39;,pctdistance=0.85, startangle=90, explode = [0.05]*labels_assault.shape[0])
#draw circle
centre_circle = plt.Circle((0,0),0.70,fc=&#39;white&#39;)
fig = plt.gcf()
fig.gca().add_artist(centre_circle)
#title+legend
plt.title(&amp;quot;Share of Assaults in Toronto&amp;quot;,size=20)
plt.legend(labels_assault,loc=1)
# Equal aspect ratio ensures that pie is drawn as a circle
plt.axis(&#39;equal&#39;)
plt.tight_layout()
plt.show()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;./2019-06-27-toronto-crime-and-folium_20_0.png&#34; alt=&#34;png&#34; /&gt;&lt;/p&gt;
&lt;p&gt;As you can see from the left chart (Criminal Offences), Torontians experience assaults most of the time. Assaults represent over 50% of the criminal activity in the city. Furthermore, “Break and Enter” represents 21% of the activity.&lt;/p&gt;
&lt;p&gt;Looking at the right plot (Assaults), you can infer more interesting facts. Firstly, 17% of the assaults are conducted with a weapon. Specifically, if you happened to be assaulted in Toronto, there is a 17% chance you were threaten by weapon. Unfortunately, I cannot infer the share of fire guns regarding these assaults. And according to “Assault Bodily Harm”, a person assaulted is 5% more likely to be bodily harmed.&lt;/p&gt;
&lt;h2 id=&#34;mapping-crime&#34;&gt;Mapping Crime&lt;/h2&gt;
&lt;p&gt;Since my family is visiting me soon from Europe, I was already concerned for their safety. I thought it would be effective to find places with high criminal density, so I can avoid them with my family. There are two ways in which you can do it:
* 1. Utilize longitude and latitude coordinates as axis
* 2. Use a model (e.g.f&lt;code&gt;folium&lt;/code&gt;) and plot crime on a map&lt;/p&gt;
&lt;h3 id=&#34;longitude-and-latitude-on-x-and-y-axis&#34;&gt;Longitude and Latitude on x and y Axis&lt;/h3&gt;
&lt;p&gt;This is the easiest method of how to inspect criminality in the map. Simply put, &lt;code&gt;Long&lt;/code&gt; and &lt;code&gt;Lat&lt;/code&gt; are nothing but the coordinates. Given the high density of crime in the last four years, plotting crimes on a scatter plot should form a coherent map of the City of Toronto. Notice that I played with the arguments in &lt;code&gt;plt.scatter()&lt;/code&gt;. The density was so high that I had to reduce dot sizes and decrease transparency as much as possible. The process required some trial and error method. Consequentially, one can infer several things from such simple mapping.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-python&#34;&gt;plt.figure(num=None, figsize=(10, 8))
plt.scatter(&amp;quot;Long&amp;quot;, &amp;quot;Lat&amp;quot;, data = crime, c = &#39;y&#39;,alpha = 0.1, edgecolor = &#39;black&#39;, s=2)
plt.grid()
plt.xlabel(&#39;long&#39;)
plt.ylabel(&#39;lat&#39;)
plt.title(&#39;Toronto Crime&#39;)
plt.tight_layout()
plt.axis(&#39;tight&#39;)
plt.show()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;./2019-06-27-toronto-crime-and-folium_25_0.png&#34; alt=&#34;png&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Firstly, there are a few high-density areas on the map. The most evident one is in the south of the City – downtown. The neighborhoods around also exhibit high criminal activity and there are also other spots suggesting criminal neighborhoods can be clustered. Contrary, the white spots are green - park - areas.
You can also infer that crime appears mostly alongside the major roads. Technically, you can observe every major street, avenue, and road in the City. Additionally, you can clearly see, the Young Street heading North from Downtown. Did you also know that Young St. is said to be the longest street in the world? Remember, these are just dots in the scatter plot.&lt;/p&gt;
&lt;h2 id=&#34;neighborhoods-you-should-avoid-in-toronto&#34;&gt;Neighborhoods You Should avoid in Toronto&lt;/h2&gt;
&lt;p&gt;The following section supports my previous statement that criminal neighborhoods can be clustered. In the following code, I grouped the data by &lt;code&gt;Neighbourhood&lt;/code&gt; (with 141 discrete values), and counted &lt;code&gt;MCI&lt;/code&gt; in each district, i.e. &lt;code&gt;top_N&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Then, I dropped the duplicates in &lt;code&gt;Neighbourhood&lt;/code&gt; in &lt;code&gt;crime&lt;/code&gt;, and got &lt;code&gt;Long&lt;/code&gt; and &lt;code&gt;Lat&lt;/code&gt; coordinates. I joined the data with &lt;code&gt;top_N&lt;/code&gt;. As a result, I obtained the &lt;code&gt;map_data&lt;/code&gt; DataFrame object, where each row (with &lt;code&gt;Neighbourhood&lt;/code&gt; index) records &lt;code&gt;Lat&lt;/code&gt;, &lt;code&gt;Lon&lt;/code&gt;, and &lt;code&gt;MCI&lt;/code&gt; accordingly.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-python&#34;&gt;# Top N Criminal Neighbourhoods in Toronto
top_N = crime.groupby(&#39;Neighbourhood&#39;)[[&#39;MCI&#39;]].count().sort_values(by=[&#39;MCI&#39;])
# Coordinates Criminal Neighbourhoods
map_data = crime[[&#39;Neighbourhood&#39;, &#39;Lat&#39;, &#39;Long&#39;]].drop_duplicates(&#39;Neighbourhood&#39;).set_index(&#39;Neighbourhood&#39;) \
.join(top_N, how=&#39;inner&#39;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;See the most criminal neighborhoods in Toronto bellow:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-python&#34;&gt;map_data.sort_values(by=[&#39;MCI&#39;], ascending=False).head(10)
&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;style scoped&gt;
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
&lt;/style&gt;
&lt;table border=&#34;1&#34; class=&#34;dataframe&#34;&gt;
&lt;thead&gt;
&lt;tr style=&#34;text-align: right;&#34;&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Lat&lt;/th&gt;
&lt;th&gt;Long&lt;/th&gt;
&lt;th&gt;MCI&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;Neighbourhood&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Church-Yonge Corridor (75)&lt;/th&gt;
&lt;td&gt;43.663906&lt;/td&gt;
&lt;td&gt;-79.384155&lt;/td&gt;
&lt;td&gt;6301&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;Waterfront Communities-The Island (77)&lt;/th&gt;
&lt;td&gt;43.644955&lt;/td&gt;
&lt;td&gt;-79.397644&lt;/td&gt;
&lt;td&gt;5674&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;West Humber-Clairville (1)&lt;/th&gt;
&lt;td&gt;43.743992&lt;/td&gt;
&lt;td&gt;-79.598869&lt;/td&gt;
&lt;td&gt;4338&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;Moss Park (73)&lt;/th&gt;
&lt;td&gt;43.657307&lt;/td&gt;
&lt;td&gt;-79.373459&lt;/td&gt;
&lt;td&gt;3609&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;Bay Street Corridor (76)&lt;/th&gt;
&lt;td&gt;43.658077&lt;/td&gt;
&lt;td&gt;-79.384712&lt;/td&gt;
&lt;td&gt;3564&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;Kensington-Chinatown (78)&lt;/th&gt;
&lt;td&gt;43.650070&lt;/td&gt;
&lt;td&gt;-79.396881&lt;/td&gt;
&lt;td&gt;3263&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;Woburn (137)&lt;/th&gt;
&lt;td&gt;43.777592&lt;/td&gt;
&lt;td&gt;-79.226578&lt;/td&gt;
&lt;td&gt;3158&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;York University Heights (27)&lt;/th&gt;
&lt;td&gt;43.774353&lt;/td&gt;
&lt;td&gt;-79.499802&lt;/td&gt;
&lt;td&gt;3141&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;Downsview-Roding-CFB (26)&lt;/th&gt;
&lt;td&gt;43.733581&lt;/td&gt;
&lt;td&gt;-79.483727&lt;/td&gt;
&lt;td&gt;2974&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;Annex (95)&lt;/th&gt;
&lt;td&gt;43.665916&lt;/td&gt;
&lt;td&gt;-79.407471&lt;/td&gt;
&lt;td&gt;2908&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;Finally, I could use &lt;code&gt;map_data&lt;/code&gt; DataFrame alongside with &lt;code&gt;folium&lt;/code&gt; and visualize criminality in neighborhoods as clusters with the heatmap.&lt;/p&gt;
&lt;p&gt;The process follows a certain logic:
1. create a Map (&lt;code&gt;m&lt;/code&gt;) with using longitude and latitude of the place of your interest.
2. if you want to add a marker or other feature from &lt;code&gt;folium.plugins&lt;/code&gt;, generate the object and use &lt;code&gt;add_to(M)&lt;/code&gt; where M usually represents &lt;code&gt;folium.Map()&lt;/code&gt; object or other module, e.g. &lt;code&gt;HeatMap()&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Step 1: Creating &amp;amp; adding clustering functionality, i.e. &lt;code&gt;MarkerCluster()&lt;/code&gt;, to the map (&lt;code&gt;m&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Step 2: Creating &amp;amp; adding &lt;code&gt;Marker&lt;/code&gt; for every row, i.e. neighborhood, based on &lt;code&gt;Long&lt;/code&gt; and &lt;code&gt;Lat&lt;/code&gt; to the cluster (&lt;code&gt;cluster&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Step 3: Creating &amp;amp; adding &lt;code&gt;HeatMap&lt;/code&gt;to the map (&lt;code&gt;m&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Finally, I could use &lt;code&gt;map_data&lt;/code&gt; DataFrame along with &lt;code&gt;folium&lt;/code&gt; and visualize criminality in the neighborhoods as clusters within the heatmap.&lt;/p&gt;
&lt;p&gt;The process follows a certain logic:
1. Create a Map (&lt;code&gt;m&lt;/code&gt;) with using longitude and latitude of the place of your interest.
2. If you want to add a marker or another feature from &lt;code&gt;folium.plugins&lt;/code&gt;, generate the object and use &lt;code&gt;add_to(M)&lt;/code&gt; where M usually represents &lt;code&gt;folium.Map()&lt;/code&gt; object or other module, e.g. &lt;code&gt;HeatMap()&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Step 1: Creating &amp;amp; adding clustering functionality, i.e. &lt;code&gt;MarkerCluster()&lt;/code&gt;, to the map (&lt;code&gt;m&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Step 2: Creating &amp;amp; adding Marker for every row, i.e. neighborhood, based on Long and Lat to the cluster (&lt;code&gt;cluster&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Step 3: Creating &amp;amp; adding &lt;code&gt;HeatMap&lt;/code&gt; to the map (&lt;code&gt;m&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&#34;language-python&#34;&gt;# Mapping Criminal Neighbourhoods
m = folium.Map(
location=[43.702270, -79.366074],
zoom_start=11
)
#Step 1: Clusters
cluster = MarkerCluster().add_to(m)
#Step 2: Clusters breaking into Markers
for x in map_data.iterrows():
folium.Marker([x[1].Lat, x[1].Long]).add_to(cluster)
#Step 3: Heat
max_crime = map_data[&#39;MCI&#39;].max() # max value as reference for the darkets shade
heat = HeatMap(map_data.values,
min_opacity=0.2,
max_val=max_crime,
radius=30, blur=20,
max_zoom=11)
heat.add_to(m)
m # call m to see the heat map with clusters
&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&#34;width:100%;&#34;&gt;&lt;div style=&#34;position:relative;width:100%;height:0;padding-bottom:60%;&#34;&gt;&lt;iframe src=&#34;data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVM9ZmFsc2U7IExfTk9fVE9VQ0g9ZmFsc2U7IExfRElTQUJMRV8zRD1mYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS40LjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS40LjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdjZG4uZ2l0aGFjay5jb20vcHl0aG9uLXZpc3VhbGl6YXRpb24vZm9saXVtL21hc3Rlci9mb2xpdW0vdGVtcGxhdGVzL2xlYWZsZXQuYXdlc29tZS5yb3RhdGUuY3NzIi8+CiAgICA8c3R5bGU+aHRtbCwgYm9keSB7d2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO21hcmdpbjogMDtwYWRkaW5nOiAwO308L3N0eWxlPgogICAgPHN0eWxlPiNtYXAge3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO3JpZ2h0OjA7bGVmdDowO308L3N0eWxlPgogICAgCiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLAogICAgICAgIGluaXRpYWwtc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubyIgLz4KICAgIDxzdHlsZT4jbWFwX2M4OTI3MWNmZGQ2YjQxY2FhZTJiODY4MjIxZjdhMDdiIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2lkdGg6IDEwMC4wJTsKICAgICAgICBoZWlnaHQ6IDEwMC4wJTsKICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgIHRvcDogMC4wJTsKICAgICAgICB9CiAgICA8L3N0eWxlPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2xlYWZsZXQubWFya2VyY2x1c3Rlci8xLjEuMC9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIvMS4xLjAvTWFya2VyQ2x1c3Rlci5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbGVhZmxldC5tYXJrZXJjbHVzdGVyLzEuMS4wL01hcmtlckNsdXN0ZXIuRGVmYXVsdC5jc3MiLz4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2xlYWZsZXQuZ2l0aHViLmlvL0xlYWZsZXQuaGVhdC9kaXN0L2xlYWZsZXQtaGVhdC5qcyI+PC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2M4OTI3MWNmZGQ2YjQxY2FhZTJiODY4MjIxZjdhMDdiIiA+PC9kaXY+CjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKICAgIAogICAgICAgIHZhciBib3VuZHMgPSBudWxsOwogICAgCgogICAgdmFyIG1hcF9jODkyNzFjZmRkNmI0MWNhYWUyYjg2ODIyMWY3YTA3YiA9IEwubWFwKAogICAgICAgICdtYXBfYzg5MjcxY2ZkZDZiNDFjYWFlMmI4NjgyMjFmN2EwN2InLCB7CiAgICAgICAgY2VudGVyOiBbNDMuNzAyMjcsIC03OS4zNjYwNzRdLAogICAgICAgIHpvb206IDExLAogICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgIGxheWVyczogW10sCiAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NywKICAgICAgICB6b29tQ29udHJvbDogdHJ1ZSwKICAgICAgICB9KTsKCgogICAgCiAgICB2YXIgdGlsZV9sYXllcl84MjhhN2NkMjMxMDM0NWM5YWQ1NmExZDU2MjM2M2JiNyA9IEwudGlsZUxheWVyKAogICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgewogICAgICAgICJhdHRyaWJ1dGlvbiI6IG51bGwsCiAgICAgICAgImRldGVjdFJldGluYSI6IGZhbHNlLAogICAgICAgICJtYXhOYXRpdmVab29tIjogMTgsCiAgICAgICAgIm1heFpvb20iOiAxOCwKICAgICAgICAibWluWm9vbSI6IDAsCiAgICAgICAgIm5vV3JhcCI6IGZhbHNlLAogICAgICAgICJvcGFjaXR5IjogMSwKICAgICAgICAic3ViZG9tYWlucyI6ICJhYmMiLAogICAgICAgICJ0bXMiOiBmYWxzZQp9KS5hZGRUbyhtYXBfYzg5MjcxY2ZkZDZiNDFjYWFlMmI4NjgyMjFmN2EwN2IpOwogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSA9IEwubWFya2VyQ2x1c3Rlckdyb3VwKHt9KTsKICAgICAgICAgICAgbWFwX2M4OTI3MWNmZGQ2YjQxY2FhZTJiODY4MjIxZjdhMDdiLmFkZExheWVyKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzgyOTM1OWNjZWYxMzQzOTliMDdkYWU5NDg2MDkxMGQ3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42Njg0NDk0LCAtNzkuMzQzMDkzOV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfN2IwYjdjNjkyZmM4NDViZjhkMDYxMTBkMjc0OGNjNDIgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc1OTI4NSwgLTc5LjUwNzkyNjkwMDAwMDAyXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9lNjEwODI1NGNiYzQ0YmI2OTZhZGEzNTA2OGY3NTBhZCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjk3NTUxNzAwMDAwMDEsIC03OS41MDE2NjMyXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl82NjM2NDk0MmU5Yzg0NmNiOTAyNWFkZGVhN2JiOWVkYyA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzIxNzAyNiwgLTc5LjU3MTUxMDNdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzc5NmNlOTNmMzYyMTRkMzliODNjMjlhYzc4ZTBlZGQ5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42NjM4OTA4LCAtNzkuNTAzNDg2NTk5OTk5OTldLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2U4YjIxNTY1Y2M5MzQ4ZTVhOWEyMjk4ODRlNDMxNzc5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42NTczMDY3MDAwMDAwMSwgLTc5LjM3MzQ1ODldLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzY5N2NjOTYxMmU1MTQ2ZmRiMzI2MWNkNDUxN2ViNzRkID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42NjYzNjI4LCAtNzkuMzE2NjA0NTk5OTk5OThdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2MzYmNkMWQ1NTYyNTRkZTJhZDJmNWQ2MzI3NGUyZmVmID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42NTgxMTE2MDAwMDAwMSwgLTc5LjQwMjAyMzNdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2QxNWM5ZGFlOTY1NjRmNzg5ZWUzZmE3MWU4N2E0YjQ0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43Njg4NTYsIC03OS40NjY5MjY2XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8wNjlkOGNlODk3YWM0M2Y5YjdlYmZhODU3NjhhZTYxYiA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuODA3ODA0MTAwMDAwMDEsIC03OS4yMTU1OTkwOTk5OTk5OF0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfZDU1N2I5YTc1NTg2NDc5ZWFjYWE0MzNmNmFkMzljNWYgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY0MTU1MiwgLTc5LjQ3NDU0MDddLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzhiNmI0NGQ0MWZhYTQ5NGU5YTdhYmRiNzc0ODlkYjI1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42OTUxMzMyMDAwMDAwMSwgLTc5LjMwMzQ4MjFdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzhjMzJkMDUwMmMxZTRlZGVhYjI1ZjY4NDExZjkzOTVlID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42NTU4OCwgLTc5LjM2MzIyMDJdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2FhYTZhZWIzYjZlMzRmOGI4MTBkZGIwMjU4OWZkYTE4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42NjM5MDYxLCAtNzkuMzg0MTU1Mjk5OTk5OTddLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzFlOWU1Y2Q4NWI2YzQ1MTI5ODBkMjVmOTNiZmQyMjI4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42NTAwNzAyLCAtNzkuMzk2ODgxMV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfZjM0NDBmNDRlNDI1NDcwYmExOTRiYWFhMTJlN2M5NDcgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY5OTEzMSwgLTc5LjI1NDMzMzVdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzkwNGI4OGIyNDliYTQzY2JhNzQwN2Y0N2IzYjYyOGE5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43NDk0ODg4LCAtNzkuNTMyNzkxMV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfNzMxMTUxYmYzYTA2NGM3ODg4NzQ4NTM1MDVlYWIwOGUgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY3MjQzMTksIC03OS4zMzQxOTA0MDAwMDAwM10sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfZTliNzJkNWY2OWRjNDQyM2FiOGNlYmIxYjYwNTQyNTYgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc3MzYxNjc5OTk5OTk5LCAtNzkuMjYxMTMxM10sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfMzFkY2MzMTFkYzdmNGIzZmFjOGE1OGYzZGQ3ZjA0NWUgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY4NzgyMDQsIC03OS40MzQ5MzY0OTk5OTk5OF0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfOGVkZTlkOTc2YWJkNDNiZGEzMzk0MmVmMWFhZjdjNTIgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY1ODA3NzIwMDAwMDAxLCAtNzkuMzg0NzEyMl0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfZjRlMDQ3YmI2YTY3NDRhYmEzMGIzMGRlMWE2NTgwNTQgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY0NDk1NDcsIC03OS4zOTc2NDRdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzY1YmEzYzQ5NTRkODQ3NWNiYjcyY2NhNjM2ZGIwYTE2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43NTY0MzkyLCAtNzkuMzYwNzcxMl0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfNWFhZTljNjMyODc3NGNjZjgxNTIzYTc0MjQxZDEwZjUgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY2MzcyMywgLTc5LjM3MDUyMTVdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzNiNjJiODVhMTczZDRiNjE5MTg0YWM3MGUxZjJlNWFmID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43NjY2MDkyLCAtNzkuMTg1NjYxM10sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfY2E4MzA5MTAwMTZkNDc1YTkxNzdmYmFkZTNhMjY1M2MgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY5NDM2NjUsIC03OS4yNzM2NTExXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9lZDFlNDUzZGM4MzM0ZjMzOTc3ZGE2YjgxZGIzNjU2NCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzQzOTkxOSwgLTc5LjU5ODg2OTNdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzNlMTMwZTBkOWRhODQwOGFhMjMzOTFlYWVhN2M4MmZlID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43NjMwMjM0LCAtNzkuMzE3NTI3OF0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfMDRiMzI5Mzc5ZjMyNDg2OTkwMjM5ZWYyOWRhZDA4YWIgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc2ODgzNywgLTc5LjM3ODM3OTc5OTk5OTk4XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9jNjMwMmEwZjQ4MTQ0MzNiYTU2ZGU5ZTE2OTM1MTA5MyA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzQ2MDc4NSwgLTc5LjM4ODYyNjFdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzRjOTA4NmI2YzJmZDQ4MDA4Zjk4ZTlkYjY4Y2M3MzkzID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43NTY1OTk0LCAtNzkuNTEyMDY5N10sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfMjhlZDNlYjExOTljNDY1MmEwYzM2NWNhMDllZmJiYjYgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY2NTkxNjQsIC03OS40MDc0NzA3XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8yNWZkNTA1NjVlOGU0ZmMwODg3MWU4NjM0NDlkZmJlZSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzY4MzgzLCAtNzkuMzQ5MDM3Ml0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfZGMwZGQxNDBlNzA4NGMyZjhlN2E4YTNlNjYzZTdiMDQgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjczMzMzNzQsIC03OS4yNjMyOTA0MDAwMDAwMl0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfZmMyNTQ0YjQyNzA3NDU0NWJjNTlkNGM0NzAxOWYzZTkgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc2MjE4NDEsIC03OS4zMjExNTE3XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9lMjc2OTUxY2NhYzg0MjljODA0YmFjZWRiMzc1ZTJjNiA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuODExNTE5NiwgLTc5LjMxNDU0NDddLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2I0YjQxYTVmY2NjMzRlYjliMDIzMDBjZGQ0ZTVhYTJlID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43NzY4NjY5LCAtNzkuMzE2MjIzMDk5OTk5OTldLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2Q0Zjc5NTk4Y2E2NTQ5YzNiNmI1ZWUxYmUwZDkzYmRkID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43MzgzNTc1LCAtNzkuMzA5NzgzOV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfYzljNTZmZjQzZmE2NDA0ZGE4NWM1MGY2OTc0MmFhZDQgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc1MjQ3OTYsIC03OS41NjA3Mzc2XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl82MWM3MWI1OGY3OTI0MDcxYjQ0NzFhNzNiM2M3Y2U4NSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzQyOTMxNCwgLTc5LjIxMTI5NjA5OTk5OTk4XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9kNzBhNzBkMDc3MTc0MjMyOTQ2NGI5ZjVjODc2MzZiOSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjgyMzM4NywgLTc5LjUyNjYwMzddLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzUzYTlhN2IxMjhiYTQyYjY5MmM1ZjZjNWYzYjRjNWVkID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43NzUxNTc5LCAtNzkuNDE0MzgyOV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfMGU2ZTljZWM1OWJhNGVlZTkzNDA1MjJjNTYyMzU1ZTQgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjcxMzA1MDgsIC03OS40MTE3NzM3MDAwMDAwM10sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfYWVjODJiMjc3MmMyNDAwZDk2OGU1MTJjODMxNjE4NWEgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc3NzU5MTcsIC03OS4yMjY1Nzc3OTk5OTk5OV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfNmNlODhkMjExNzFmNDIyOGFhMzRhMzVhNmY2N2QxZmIgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjcxNzAyNTgsIC03OS41MzcyOTI1XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8wNzMzYzYzODJlNTY0NzllYmNhNTkyNjE0MWMwZmM3MiA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzQxMjMzOCwgLTc5LjIzNzI2NjVdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2UyZjRjZTVjNmQ2ZjRiNTg4MDUzNTkxMDgwMTE5ZDliID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43MDY4NjM0LCAtNzkuMzIwNjFdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzcxYTM3ZmRhNDgyMTQ4ZmQ5NTk5ZTkwMWU0ZDQ1ZDQ1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42MDMwMDQ1LCAtNzkuNTA3NDg0NDAwMDAwMDJdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2MyYzdkMmY2NWZmMjRhZDFiOTZlYzUzYjU2NDE3NGVhID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43MTY1Nzk0LCAtNzkuMzMwMzc1N10sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfOTkzZWM1OWEwNzhmNDdiNjhhMGE0NjdkZDYzNGM2ODkgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc5MTUxNTQsIC03OS4yOTgxMDMzXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8xYTMyNmRlNGM1Y2M0MGUwYjEwNjM3NTFiNzc3OGRjOCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjQxMjI3NywgLTc5LjQyNjY3MzkwMDAwMDAzXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl80M2YxNDk1YThhYmM0NjQ3YmFlNzNiNjc2MzRiYTEzMyA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjkzMjQ0OSwgLTc5LjUwNDY2OTIwMDAwMDAyXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8yNjQ4ODZiMTk5OTE0MDllYWY5NzUwODhiODUwZTZmOSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjg0NDI5MiwgLTc5LjM0NjkyMzhdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2Y3YzA3ZDBkYWQ5ODRlYmE5ZGQ0YTZiODRlZTY4MDUwID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43ODk5MTMyLCAtNzkuMjE3NDUzXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9jMjU0NGQ1ZDk5ZWQ0MThkOGFiNTA1NmFlZDU4ZGJiMiA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjg1OTgxOCwgLTc5LjM1NjI5MjddLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzljZDA1N2M3ZDU5YzQzOGY4NDQwZDAzOTE0ZDIxZDgyID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42OTg5OTM3LCAtNzkuNDM1MDM1NzAwMDAwMDFdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2QwNGNjOTdhYzUxYjQ0NDFiZDZmMzMxOGVkMjFmNWNkID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43MDcyMjU4LCAtNzkuMjk1MjgwNV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfM2JiMTlhYWIyM2ZmNDBhZmI5ZGZiNjkxOGQ4OTBlMzIgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjczMzU4MTUsIC03OS40ODM3MjY1XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9mYTBkYzU3Yzc5NGY0NjdjOWNkMDFmYTU5OWI3ZDdlNCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjQ0NjU3MSwgLTc5LjUzMDc5OTldLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzJjZjAyZTM1NzUxNjQyMmViYWNjMjM4NzNhNGZjZjI4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43Njg5MDE4LCAtNzkuMjg1NTUzMDAwMDAwMDJdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzJiZDNhMDUxMzYwNTRkM2U5YTkyMTRjNDI5ZDRkMGI4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My44MDE5MzMzLCAtNzkuMzU5Mzk3OV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfOGQzMTEwMWNjOTQ5NGM0OWEwODgyY2Q2MzllNTA5MzAgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY5ODM0NTIwMDAwMDAxLCAtNzkuNTExMzE0NF0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfNGFlOWE2ODMwMzA4NGY2NmEyODc2NDNiOTgwNTk1MmEgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc3OTc2OTksIC03OS40MTU1NzMwOTk5OTk5N10sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfZTkxNGNiYzI2MTYxNGNmNWFmNTcxMTExYjEzNDBjMTkgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY5NjI2MjQsIC03OS40NDc2ODUyMDAwMDAwMl0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfMTEyNzQ3Zjc5NmNiNDUxZmI0YzRjNmEzOWMyMjdjZjAgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjczMjM5NTIwMDAwMDAwNiwgLTc5LjQxOTQxMDcwMDAwMDAxXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl81MDcxYzdlMmE5MmU0ZjZjODQyMjEzMTYxZjcyODNiYSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjUwNzgzNSwgLTc5LjQxMzQ5NzkwMDAwMDAyXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl80NmYyZTYyNDljNGE0YTAwYTNkNjUzMjlhMTdlYTcyOCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzAwMzEzNiwgLTc5LjM4Njk3MDQ5OTk5OTk4XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8wMjhlN2NlM2E4MjE0ODc3YWM2YWZhMGE4NzQxNTMwYSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuODAxMjY5NSwgLTc5LjI5NjYwMDMwMDAwMDAyXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8xZGIwNGNlOGRkZjQ0OGZmOWRmYmIyMGJkMWExYjUxOCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzA1NDYzNCwgLTc5LjQwMDA5MzA5OTk5OTk4XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9mNWRmYWNhMGE0MTk0ZWYxOWFmNzE2NjM1ZWU1Yjc2YyA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjY4NDY4NSwgLTc5LjQzOTAzMzVdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzEwYjUzNjNjN2NkNzQwZWJiNDU5MmMyZTQ5MGUwNDIxID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42OTI0OTczLCAtNzkuMzE1NzM0OTAwMDAwMDJdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzU5NzljZTAzNmQ2MzRjNjlhYmMxOWNjMmRjY2QwNzc4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My44MTEwODg2LCAtNzkuMjY2MDA2NDk5OTk5OTddLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2M0NTViZTQ1MTgwYjQwODliMzMzNDg4YzAzMjhkMTA0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42NjYxMDM0LCAtNzkuNTg3Njc3XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl80NzgzOGNiNjVmMzE0Mzg0YjQxNzJhNTA1Y2JjMWE3YiA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzAzNTkwNCwgLTc5LjQ1MjQyMzA5OTk5OTk4XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9lMzNjMWRmM2ZmOGM0MWFiYmIxNmE3OTlkYjA5ZjU0NCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjgzMTcwMywgLTc5LjQxODMwNDQwMDAwMDAzXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9kMTEwYjc5ZTM4Y2M0MWZkOTE3MTk2Nzk1YzM2MjlkZSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjQwMzM1MSwgLTc5LjQzNzkxOTZdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzM5YjNjZDcwMWU2MDRhMTZhODYxMmUyMmQ3NzA2YjZlID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43Nzg1NjA2MDAwMDAwMSwgLTc5LjMyODcwNDhdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzQyNzlhNGExYTU2ZjRiNzI4ZjQ0OGZhZGY5YWRlZTYwID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42OTEyMjcwMDAwMDAwMSwgLTc5LjQ3MDM5NzkwMDAwMDAyXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl80Mjk2NjhiZjYyOWY0NWM5ODBjMmU0MTdkMzgwMWM1OSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjc4ODY3Mjk5OTk5OTksIC03OS4zMjY4MjA0XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl83MDdmYTZhNDdiZDA0YWRmYmE1MWUzMmRmMjUzMmE2YiA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzQ2ODE0NzAwMDAwMDEsIC03OS41ODM4MDg5MDAwMDAwMl0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfZjBjNmE0ODZmNWIyNDg2MGE4MjlmNDYxMDVjM2EyNTkgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc4NjU4MjksIC03OS4xODgzMDg3MDAwMDAwMl0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfY2E0MWM3NWUxYjBhNDI2MjhkNDViMGJmYjY3Y2JhMTcgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY1MDgxMDIsIC03OS41MjIzNjE4XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8wODgzYWYzNmExYWU0MTc1YjkyMDFiOWI4MmM5MzZhNSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzIwNTE2MiwgLTc5LjQ4MDcyODFdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzFmN2Q5YTQzNThmYTRhODI5NDBjZDE1M2U5MmU5MDNiID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43ODU3NjI3OTk5OTk5OSwgLTc5LjI4OTQ1OTIwMDAwMDAyXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8zYWM2ZDVkMTU2MWI0M2Y1OWU5NTIwMmYzZmYwYjU2OCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzg3NjUxMSwgLTc5LjM1MTY1NDA5OTk5OTk4XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8yMWI3N2M5ODg3NGE0NmFiODllZDlmNGE1MjIzMWEwMiA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzczODYwOSwgLTc5LjQ0MzAwODRdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzhjMGI1MzRhMmQxZTQ0ODk4YzU1MTg0MmFlNTU5MmUzID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42MzkwMjI3OTk5OTk5OSwgLTc5LjQxNTkxNjQwMDAwMDAxXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9hZjMwMjUyZWZhNmQ0YWY1ODgwM2ZhODJjYTUzNThiZSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjcwMzM3NzAwMDAwMDEsIC03OS40NTU3OTUyOTk5OTk5OF0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfNWQ4YjBjNjkyOTE4NDJjNWE5OTE5M2Y1MTA3MDY1MjkgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjcyMjI4MjQsIC03OS4yNjIxMjMxXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl82YjBiNzQ0NGU1NTU0MzA5OTNhYTAwZjQ5MjBjZDU4YyA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzQwNzExMiwgLTc5LjQzODg3MzNdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2QwZjVkMGIyNDYxMDQzMmE5ZTI5NmZlNGM3YTIyNzYyID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42ODAxMTA5LCAtNzkuMjkyNTk0OV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfZTAzMjBjNWI3NjdhNDc3YWJkMGFkMGRiNWFhZWI1ZTIgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY5MTg5ODMsIC03OS40NTYyNTMxXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8yYzkxYTYxZTk2NWU0OWFiYjhhZDY1YzdkZmQxNWU5YyA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjg2MjMzNSwgLTc5LjM5MzMzMzRdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzdkZjM2OTE3ZmViMzRhY2NhOGM5ODRjOTYzOGU4MzUxID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43NDgyODM0LCAtNzkuMTk1ODMxM10sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfZmUwMWM0MDRmMjc3NGQ2NDgyMzJjZmQ3ODUzYWI3OGIgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjgwNDIyNTksIC03OS4xNjg3ODUxXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8zNjQ3NTEwMThjYjc0NWQzOGRkZmNjNmQxODAzNmU1YiA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjY2NDMxNCwgLTc5LjM3NjUwM10sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfYmFhNjFlYjI3ZGJkNDY2ZWIwOGViYzg3YzczZTZiZTUgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc0NjkzMywgLTc5LjQzNDQxNzddLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzhmMTU1YTAxYzQxZTRiNDg5YWRiMWRhMjg2N2EzOWRhID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43MjkwNjExLCAtNzkuNDQ1OTkxNV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfM2E4OTQxZjBhMTI4NDljMzljZGFiNjRjNzY5YjQ5M2IgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY1OTIyOTI5OTk5OTk5LCAtNzkuNTE0MTM3M10sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfNTBiZWY3YTc2NDExNDU1ZGEyYjZlMjA3NGRmNmY4NDUgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjczNTQxNjQsIC03OS4zNDcxMzc1XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9jZDQ4ZjQ0ODkyYjc0NzNiODlkZDJkYTYzZTQzOWQ0ZCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjc0NDA4LCAtNzkuNDMzNzg0NV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfYTcxYjkzMWJkMDIwNDFlY2E5YTMyYTQ0NmYyYzgzNTAgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjYxNDIwNDQsIC03OS41MTcyNzI5MDAwMDAwMl0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfYWIwNmNmZjA2ZTUwNDJlOWI3ZDhkNmJhYmE1ZTI4OTYgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY5NTgxNiwgLTc5LjU2MjczNjVdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzhiZWNkMmQ3NjIxYTQ3NDQ5N2NjYmYyZjQzOTkwYzQ1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My41OTM2NjIzLCAtNzkuNTM3MDAyNl0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfNmVhN2Q3Mzc1MDhjNDYwNzhkODE4MWZhNDc5MzdhMGIgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc4MTYzOTEsIC03OS40NTUyOTk0XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9hZmEzYjQyOGMzYjU0Y2EwOWI0MDdiMmQwZTZlMTVjZCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzMzNjgwNywgLTc5LjIyNzAxMjZdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2Q4OTVlZjdlMTcyMDQ4MDQ5M2E0NjQxZjY5NmE1MzI3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43Mjc2NTM1LCAtNzkuNTQ5NTM3N10sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfZmIyNTUxNDE2NWRiNDMxMjg2ODk3MGExODg4MGQ3NDQgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY4NDI4OCwgLTc5LjMxOTIzNjhdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2NhNDQ3YzdkZTkzYzQxMmM5Njg4ZjE2NzEzZDQ1MTNkID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42MDU2NDQyLCAtNzkuNTM4MjY5XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9kMTQ4Y2JmYjE5ZmY0Y2Q3OWUwYjQ3ZWU3M2FjNjAxYSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjUxNjExMjk5OTk5OTksIC03OS40NzQwOTA2XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8zYmMyMDk4NWJiMDY0MDRlODAwYjE2MDQ0NDBkYTVjMyA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjc3NTI0NjAwMDAwMDEsIC03OS4zNTg2NTAyXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl80ZmU4NWJlZDgxNzA0NjA1OTk4Njg0MjgyNzZjYTVmNyA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzc0MzUzMDAwMDAwMDEsIC03OS40OTk4MDE2XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9hZDJlMmU4MTgyMWU0NWVlOWIzMGFhN2M4MTZkYjVhOSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjMwOTczNzk5OTk5OTksIC03OS40ODE1MTRdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzFkZjU0ZGIxMzdiMzQ3NmRiMWYxMzljODgwZTFlMjJmID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43MDc0Nzc2LCAtNzkuMzQzNjI3OTAwMDAwMDJdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2Y3NzAxNWYzOWNmMTRiYjI4NGFiOTU4NGNhYjRhNDc4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42NzE2NzI4LCAtNzkuNDkzNzUxNV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfYmVkM2ExN2FjYmQyNGM1NzllYzUyMDM5MGI4N2QxZjAgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY3ODUzOTMsIC03OS41NDQ4OTE0MDAwMDAwM10sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfZTQ1YTgyMjgzMzM0NDFkYWJiMzI5MDVmNzVjYmNjMmUgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY5NzM3NjMsIC03OS4zOTY0NjkxXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl83MmRiZmFiMDAwMzQ0ZTQ3OGEyY2IzZTgwYTQxNzM4MiA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzA1MTA4NiwgLTc5LjM3NDkzMTNdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzJiZTM1ODRhNDg4YTQyOTlhOGY1YTRmY2JmZjNlYTQ5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42MjczNDYsIC03OS41NjIzNzAzXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8zM2I4ZTk4YzM3MTA0YTAyOWYzODlhYmFjMTA1NTA2OSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjcwODU2NSwgLTc5LjQ3NTE5NjhdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2VmZDgyMWM3ZmE3MzRkZTY4ZTc0ZDBhMGY2MzRkZjMzID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42ODY4NzA2LCAtNzkuNDY4NTc0NV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfYTIzYzZiM2MwNDllNGRlMzk0N2YyNmEwMjA2ZWUzYzQgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc0MzYzMzMsIC03OS41NzY0NzcwOTk5OTk5OF0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfZGM1NGViYmUwZTg0NDMxNDg3NWFiNGI4ODlhNmYzZDAgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjc2NjQwNywgLTc5LjQyNTc0MzA5OTk5OTk4XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8wNGU0N2YxYTYyMjA0YzUyOGY1YTg5NjI3ZTA3NjU4NSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzI3NjY0OSwgLTc5LjQwNjIzNDcwMDAwMDAxXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8yOWE4N2RmYjljNzA0ZWQ4OGZjYzAyYzgxMjNiZGIxZiA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjc3NzgwMiwgLTc5LjQ1NTc5NTI5OTk5OTk4XSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9jNDU2NmI1ZWY5MTI0YWI0ODhkOGRmOWVkNjAyNTViYSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjk0NTQ1NzAwMDAwMDA2LCAtNzkuMzM1MjY2MV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfYWZhYTBhOThkZDZiNDdlZGI5OTcwYWIxOTFjZWNkMDIgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY3Mjk2OTgsIC03OS4zNDIzOTJdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2Q4MmYwYzE4ZjNjYzQwYjJhYTllN2VhYTkzMDc2NmE2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42ODU0MTM0LCAtNzkuNDE5MjM1Ml0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfMjkyNDlhZGM2NDU5NDYyZGIyYjEyODMyMGMzNWVkMzcgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjcwNzU1MzksIC03OS41MDUxMTE3MDAwMDAwMV0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfZGMyZDQ4ZTEwNzhiNDYyMGFkNzlhYmQ4MmNlMjIxN2QgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY2NzczMjIsIC03OS4zMTAzMzMzXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl8yODg3YzY5MDc4Njc0Zjk0OGJkOGU4MjU1YzkwYzYzZCA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjQ3MzA0NSwgLTc5LjQzMjcwODddLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzM0N2FiMjI2YmY4OTQ0MmM5NTQwODliZThjNmMwMzdiID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42NTgzNDgxMDAwMDAwMSwgLTc5LjQzNDc3NjNdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyX2JjNWM0MzYyNWFmOTRhNDc4NDhjNjJhYWNjNTJhMzNkID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42ODA5NTAyMDAwMDAwMSwgLTc5LjM5Mzc3NTkwMDAwMDAyXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl81Mjk2ZmRkYWMxYjM0Mzk4YmNkNDBjNGVmYjUzMmVlNyA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjY1NTI3MywgLTc5LjQ5OTIwNjVdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzU2YmIyODFkZTJhNTQ5NWE5Mzk4MzI4ZDUxN2Y0Yzc2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My43OTA3MTgxMDAwMDAwMSwgLTc5LjE1MjE0NTQwMDAwMDAyXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl83MjFjYTQ2N2FlNGM0YTFmYjJmZTlhZjZhNGJiZTNiZSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjg2MDU4LCAtNzkuNDI0Nzc0Ml0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2FmMTdmNTg0ZTBkODQ2ZmNiYzA1MTVkMDY4MGUyZmE5KTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBtYXJrZXJfMTc2ZmMyYTM3YzViNGYxMzkxMjIxYjFjZmIxM2Q4YmMgPSBMLm1hcmtlcigKICAgICAgICAgICAgWzQzLjY2MDUyNjMsIC03OS40MTQ2NjUyXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl80Mzg3NmVjMDYxM2I0MmJhYjg4YWUwNmJlZTk5NTJkYSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjczMzAxNywgLTc5LjU1MTU0NDIwMDAwMDAyXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl9jMzc3MGExODA5NTg0YjQ5YmJiNzk2MTkzMTQzNDE1MiA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNjM4NDM1NCwgLTc5LjU2MDkyMDcwMDAwMDAzXSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkuYWRkVG8obWFya2VyX2NsdXN0ZXJfYWYxN2Y1ODRlMGQ4NDZmY2JjMDUxNWQwNjgwZTJmYTkpOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIG1hcmtlcl85ODcxMDY4ZmM3ZDU0MzY4YWI4NTc3ODhkOTYwNTlkOSA9IEwubWFya2VyKAogICAgICAgICAgICBbNDMuNzkxMTMwMSwgLTc5LjM5MzM1NjNdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgbWFya2VyXzg1NjIwNWYzZjExYzQ4MzU5ZjYxYjdlOTE1YmZlZTA4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgIFs0My42NTE1NzcsIC03OS42MDMwOTZdLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKS5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9hZjE3ZjU4NGUwZDg0NmZjYmMwNTE1ZDA2ODBlMmZhOSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGhlYXRfbWFwXzA2YTIwOTk1N2ZjMjQxNDg4Y2RlNTk1MTIwODQyOTM4ID0gTC5oZWF0TGF5ZXIoCiAgICAgICAgICAgICAgICBbWzQzLjY2ODQ0OTQsIC03OS4zNDMwOTM5LCA1MTQuMF0sIFs0My43NTkyODUsIC03OS41MDc5MjY5MDAwMDAwMiwgMjAwNi4wXSwgWzQzLjY5NzU1MTcwMDAwMDAxLCAtNzkuNTAxNjYzMiwgODI5LjBdLCBbNDMuNzIxNzAyNiwgLTc5LjU3MTUxMDMsIDY5NC4wXSwgWzQzLjY2Mzg5MDgsIC03OS41MDM0ODY1OTk5OTk5OSwgMTkzLjBdLCBbNDMuNjU3MzA2NzAwMDAwMDEsIC03OS4zNzM0NTg5LCAzNjA5LjBdLCBbNDMuNjY2MzYyOCwgLTc5LjMxNjYwNDU5OTk5OTk4LCA2NDguMF0sIFs0My42NTgxMTE2MDAwMDAwMSwgLTc5LjQwMjAyMzMsIDEyOTMuMF0sIFs0My43Njg4NTYsIC03OS40NjY5MjY2LCA5NTEuMF0sIFs0My44MDc4MDQxMDAwMDAwMSwgLTc5LjIxNTU5OTA5OTk5OTk4LCAyMDI0LjBdLCBbNDMuNjQxNTUyLCAtNzkuNDc0NTQwNywgNjQ3LjBdLCBbNDMuNjk1MTMzMjAwMDAwMDEsIC03OS4zMDM0ODIxLCA4NTMuMF0sIFs0My42NTU4OCwgLTc5LjM2MzIyMDIsIDk4MC4wXSwgWzQzLjY2MzkwNjEsIC03OS4zODQxNTUyOTk5OTk5NywgNjMwMS4wXSwgWzQzLjY1MDA3MDIsIC03OS4zOTY4ODExLCAzMjYzLjBdLCBbNDMuNjk5MTMxLCAtNzkuMjU0MzMzNSwgMTQxMS4wXSwgWzQzLjc0OTQ4ODgsIC03OS41MzI3OTExLCA5NjguMF0sIFs0My42NzI0MzE5LCAtNzkuMzM0MTkwNDAwMDAwMDMsIDE5NDkuMF0sIFs0My43NzM2MTY3OTk5OTk5OSwgLTc5LjI2MTEzMTMsIDIyNzcuMF0sIFs0My42ODc4MjA0LCAtNzkuNDM0OTM2NDk5OTk5OTgsIDc4OC4wXSwgWzQzLjY1ODA3NzIwMDAwMDAxLCAtNzkuMzg0NzEyMiwgMzU2NC4wXSwgWzQzLjY0NDk1NDcsIC03OS4zOTc2NDQsIDU2NzQuMF0sIFs0My43NTY0MzkyLCAtNzkuMzYwNzcxMiwgOTE2LjBdLCBbNDMuNjYzNzIzLCAtNzkuMzcwNTIxNSwgMTExOS4wXSwgWzQzLjc2NjYwOTIsIC03OS4xODU2NjEzLCAyODU3LjBdLCBbNDMuNjk0MzY2NSwgLTc5LjI3MzY1MTEsIDE0MjcuMF0sIFs0My43NDM5OTE5LCAtNzkuNTk4ODY5MywgNDMzOC4wXSwgWzQzLjc2MzAyMzQsIC03OS4zMTc1Mjc4LCAyMzUwLjBdLCBbNDMuNzY4ODM3LCAtNzkuMzc4Mzc5Nzk5OTk5OTgsIDc5OC4wXSwgWzQzLjc0NjA3ODUsIC03OS4zODg2MjYxLCA0MjAuMF0sIFs0My43NTY1OTk0LCAtNzkuNTEyMDY5NywgMTk4MS4wXSwgWzQzLjY2NTkxNjQsIC03OS40MDc0NzA3LCAyOTA4LjBdLCBbNDMuNzY4MzgzLCAtNzkuMzQ5MDM3MiwgNDcyLjBdLCBbNDMuNzMzMzM3NCwgLTc5LjI2MzI5MDQwMDAwMDAyLCA4MDQuMF0sIFs0My43NjIxODQxLCAtNzkuMzIxMTUxNywgMTM3Ny4wXSwgWzQzLjgxMTUxOTYsIC03OS4zMTQ1NDQ3LCA2ODcuMF0sIFs0My43NzY4NjY5LCAtNzkuMzE2MjIzMDk5OTk5OTksIDEwMTYuMF0sIFs0My43MzgzNTc1LCAtNzkuMzA5NzgzOSwgNTk0LjBdLCBbNDMuNzUyNDc5NiwgLTc5LjU2MDczNzYsIDE1OTAuMF0sIFs0My43NDI5MzE0LCAtNzkuMjExMjk2MDk5OTk5OTgsIDEyNDEuMF0sIFs0My42ODIzMzg3LCAtNzkuNTI2NjAzNywgNTIxLjBdLCBbNDMuNzc1MTU3OSwgLTc5LjQxNDM4MjksIDE4NjcuMF0sIFs0My43MTMwNTA4LCAtNzkuNDExNzczNzAwMDAwMDMsIDQ2OC4wXSwgWzQzLjc3NzU5MTcsIC03OS4yMjY1Nzc3OTk5OTk5OSwgMzE1OC4wXSwgWzQzLjcxNzAyNTgsIC03OS41MzcyOTI1LCA2OTIuMF0sIFs0My43NDEyMzM4LCAtNzkuMjM3MjY2NSwgMTgwNC4wXSwgWzQzLjcwNjg2MzQsIC03OS4zMjA2MSwgOTcwLjBdLCBbNDMuNjAzMDA0NSwgLTc5LjUwNzQ4NDQwMDAwMDAyLCA4NDEuMF0sIFs0My43MTY1Nzk0LCAtNzkuMzMwMzc1NywgMTAwMS4wXSwgWzQzLjc5MTUxNTQsIC03OS4yOTgxMDMzLCAxNTcwLjBdLCBbNDMuNjQxMjI3NywgLTc5LjQyNjY3MzkwMDAwMDAzLCAxMjcyLjBdLCBbNDMuNjkzMjQ0OSwgLTc5LjUwNDY2OTIwMDAwMDAyLCA4NzAuMF0sIFs0My42ODQ0MjkyLCAtNzkuMzQ2OTIzOCwgNDY0LjBdLCBbNDMuNzg5OTEzMiwgLTc5LjIxNzQ1MywgODcxLjBdLCBbNDMuNjg1OTgxOCwgLTc5LjM1NjI5MjcsIDI5OS4wXSwgWzQzLjY5ODk5MzcsIC03OS40MzUwMzU3MDAwMDAwMSwgNTY4LjBdLCBbNDMuNzA3MjI1OCwgLTc5LjI5NTI4MDUsIDIxNjMuMF0sIFs0My43MzM1ODE1LCAtNzkuNDgzNzI2NSwgMjk3NC4wXSwgWzQzLjY0NDY1NzEsIC03OS41MzA3OTk5LCAyNTg5LjBdLCBbNDMuNzY4OTAxOCwgLTc5LjI4NTU1MzAwMDAwMDAyLCAxNzU2LjBdLCBbNDMuODAxOTMzMywgLTc5LjM1OTM5NzksIDY4Ny4wXSwgWzQzLjY5ODM0NTIwMDAwMDAxLCAtNzkuNTExMzE0NCwgMTQxMC4wXSwgWzQzLjc3OTc2OTksIC03OS40MTU1NzMwOTk5OTk5NywgMTI3NS4wXSwgWzQzLjY5NjI2MjQsIC03OS40NDc2ODUyMDAwMDAwMiwgMTExNy4wXSwgWzQzLjczMjM5NTIwMDAwMDAwNiwgLTc5LjQxOTQxMDcwMDAwMDAxLCAxMTM1LjBdLCBbNDMuNjUwNzgzNSwgLTc5LjQxMzQ5NzkwMDAwMDAyLCAxMjE3LjBdLCBbNDMuNzAwMzEzNiwgLTc5LjM4Njk3MDQ5OTk5OTk4LCA0MTMuMF0sIFs0My44MDEyNjk1LCAtNzkuMjk2NjAwMzAwMDAwMDIsIDE0MTQuMF0sIFs0My43MDU0NjM0LCAtNzkuNDAwMDkzMDk5OTk5OTgsIDMyNS4wXSwgWzQzLjY2ODQ2ODUsIC03OS40MzkwMzM1LCAyNDUwLjBdLCBbNDMuNjkyNDk3MywgLTc5LjMxNTczNDkwMDAwMDAyLCA0MzQuMF0sIFs0My44MTEwODg2LCAtNzkuMjY2MDA2NDk5OTk5OTcsIDEwMDguMF0sIFs0My42NjYxMDM0LCAtNzkuNTg3Njc3LCA2NzYuMF0sIFs0My43MDM1OTA0LCAtNzkuNDUyNDIzMDk5OTk5OTgsIDE1NzEuMF0sIFs0My42ODMxNzAzLCAtNzkuNDE4MzA0NDAwMDAwMDMsIDQ1Ny4wXSwgWzQzLjY0MDMzNTEsIC03OS40Mzc5MTk2LCAxNDE2LjBdLCBbNDMuNzc4NTYwNjAwMDAwMDEsIC03OS4zMjg3MDQ4LCA0MjEuMF0sIFs0My42OTEyMjcwMDAwMDAwMSwgLTc5LjQ3MDM5NzkwMDAwMDAyLCA2MTUuMF0sIFs0My42Nzg4NjcyOTk5OTk5OSwgLTc5LjMyNjgyMDQsIDg4NS4wXSwgWzQzLjc0NjgxNDcwMDAwMDAxLCAtNzkuNTgzODA4OTAwMDAwMDIsIDIyNTcuMF0sIFs0My43ODY1ODI5LCAtNzkuMTg4MzA4NzAwMDAwMDIsIDgxNi4wXSwgWzQzLjY1MDgxMDIsIC03OS41MjIzNjE4LCA0NTQuMF0sIFs0My43MjA1MTYyLCAtNzkuNDgwNzI4MSwgNDU5LjBdLCBbNDMuNzg1NzYyNzk5OTk5OTksIC03OS4yODk0NTkyMDAwMDAwMiwgMTMzMS4wXSwgWzQzLjc4NzY1MTEsIC03OS4zNTE2NTQwOTk5OTk5OCwgMTI4NS4wXSwgWzQzLjc3Mzg2MDksIC03OS40NDMwMDg0LCAxMDc4LjBdLCBbNDMuNjM5MDIyNzk5OTk5OTksIC03OS40MTU5MTY0MDAwMDAwMSwgMTMyNC4wXSwgWzQzLjY3MDMzNzcwMDAwMDAxLCAtNzkuNDU1Nzk1Mjk5OTk5OTgsIDcwNC4wXSwgWzQzLjcyMjI4MjQsIC03OS4yNjIxMjMxLCAxNTc3LjBdLCBbNDMuNzQwNzExMiwgLTc5LjQzODg3MzMsIDczNS4wXSwgWzQzLjY4MDExMDksIC03OS4yOTI1OTQ5LCAxNjkxLjBdLCBbNDMuNjkxODk4MywgLTc5LjQ1NjI1MzEsIDMyOC4wXSwgWzQzLjY4NjIzMzUsIC03OS4zOTMzMzM0LCAxNjI4LjBdLCBbNDMuNzQ4MjgzNCwgLTc5LjE5NTgzMTMsIDQwMi4wXSwgWzQzLjgwNDIyNTksIC03OS4xNjg3ODUxLCAxOTQwLjBdLCBbNDMuNjY2NDMxNCwgLTc5LjM3NjUwMywgMTUzMC4wXSwgWzQzLjc0NjkzMywgLTc5LjQzNDQxNzcsIDY0My4wXSwgWzQzLjcyOTA2MTEsIC03OS40NDU5OTE1LCA4NzMuMF0sIFs0My42NTkyMjkyOTk5OTk5OSwgLTc5LjUxNDEzNzMsIDQ3My4wXSwgWzQzLjczNTQxNjQsIC03OS4zNDcxMzc1LCA5MzguMF0sIFs0My42NzQ0MDgsIC03OS40MzM3ODQ1LCA2MjMuMF0sIFs0My42MTQyMDQ0LCAtNzkuNTE3MjcyOTAwMDAwMDIsIDIwNDAuMF0sIFs0My42OTU4MTYsIC03OS41NjI3MzY1LCAxMTE2LjBdLCBbNDMuNTkzNjYyMywgLTc5LjUzNzAwMjYsIDU1Ny4wXSwgWzQzLjc4MTYzOTEsIC03OS40NTUyOTk0LCA4MzcuMF0sIFs0My43MzM2ODA3LCAtNzkuMjI3MDEyNiwgMTAxNC4wXSwgWzQzLjcyNzY1MzUsIC03OS41NDk1Mzc3LCA1ODEuMF0sIFs0My42ODQyODgsIC03OS4zMTkyMzY4LCAxMTkxLjBdLCBbNDMuNjA1NjQ0MiwgLTc5LjUzODI2OSwgNDYwLjBdLCBbNDMuNjUxNjExMjk5OTk5OTksIC03OS40NzQwOTA2LCAxMDU3LjBdLCBbNDMuNjc3NTI0NjAwMDAwMDEsIC03OS4zNTg2NTAyLCA3MDkuMF0sIFs0My43NzQzNTMwMDAwMDAwMSwgLTc5LjQ5OTgwMTYsIDMxNDEuMF0sIFs0My42MzA5NzM3OTk5OTk5OSwgLTc5LjQ4MTUxNCwgOTQyLjBdLCBbNDMuNzA3NDc3NiwgLTc5LjM0MzYyNzkwMDAwMDAyLCA3NDYuMF0sIFs0My42NzE2NzI4LCAtNzkuNDkzNzUxNSwgMTIyNy4wXSwgWzQzLjY3ODUzOTMsIC03OS41NDQ4OTE0MDAwMDAwMywgMTA4MS4wXSwgWzQzLjY5NzM3NjMsIC03OS4zOTY0NjkxLCAxMjM1LjBdLCBbNDMuNzA1MTA4NiwgLTc5LjM3NDkzMTMsIDUwNy4wXSwgWzQzLjYyNzM0NiwgLTc5LjU2MjM3MDMsIDI5My4wXSwgWzQzLjY3MDg1NjUsIC03OS40NzUxOTY4LCAxMDQzLjBdLCBbNDMuNjg2ODcwNiwgLTc5LjQ2ODU3NDUsIDUwMy4wXSwgWzQzLjc0MzYzMzMsIC03OS41NzY0NzcwOTk5OTk5OCwgNjEyLjBdLCBbNDMuNzY2NDA3LCAtNzkuNDI1NzQzMDk5OTk5OTgsIDU0OC4wXSwgWzQzLjcyNzY2NDksIC03OS40MDYyMzQ3MDAwMDAwMSwgNDQ1LjBdLCBbNDMuNjc3NzgwMiwgLTc5LjQ1NTc5NTI5OTk5OTk4LCA4MTguMF0sIFs0My42OTQ1NDU3MDAwMDAwMDYsIC03OS4zMzUyNjYxLCA2MDAuMF0sIFs0My42NzI5Njk4LCAtNzkuMzQyMzkyLCA0MjUuMF0sIFs0My42ODU0MTM0LCAtNzkuNDE5MjM1MiwgMzYwLjBdLCBbNDMuNzA3NTUzOSwgLTc5LjUwNTExMTcwMDAwMDAxLCA3MTIuMF0sIFs0My42Njc3MzIyLCAtNzkuMzEwMzMzMywgODUzLjBdLCBbNDMuNjQ3MzA0NSwgLTc5LjQzMjcwODcsIDcwMy4wXSwgWzQzLjY1ODM0ODEwMDAwMDAxLCAtNzkuNDM0Nzc2MywgNjAyLjBdLCBbNDMuNjgwOTUwMjAwMDAwMDEsIC03OS4zOTM3NzU5MDAwMDAwMiwgMjM0LjBdLCBbNDMuNjY1NTI3MywgLTc5LjQ5OTIwNjUsIDUzNS4wXSwgWzQzLjc5MDcxODEwMDAwMDAxLCAtNzkuMTUyMTQ1NDAwMDAwMDIsIDMxMS4wXSwgWzQzLjY4NjA1OCwgLTc5LjQyNDc3NDIsIDM3MS4wXSwgWzQzLjY2MDUyNjMsIC03OS40MTQ2NjUyLCA3ODguMF0sIFs0My42NzMzMDE3LCAtNzkuNTUxNTQ0MjAwMDAwMDIsIDM2My4wXSwgWzQzLjYzODQzNTQsIC03OS41NjA5MjA3MDAwMDAwMywgNDUwLjBdLCBbNDMuNzkxMTMwMSwgLTc5LjM5MzM1NjMsIDQyOC4wXSwgWzQzLjY1MTU3NywgLTc5LjYwMzA5NiwgMjMuMF1dLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG1pbk9wYWNpdHk6IDAuMiwKICAgICAgICAgICAgICAgICAgICBtYXhab29tOiAxMSwKICAgICAgICAgICAgICAgICAgICBtYXg6IDYzMDEsCiAgICAgICAgICAgICAgICAgICAgcmFkaXVzOiAzMCwKICAgICAgICAgICAgICAgICAgICBibHVyOiAyMCwKICAgICAgICAgICAgICAgICAgICBncmFkaWVudDogbnVsbAogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2M4OTI3MWNmZGQ2YjQxY2FhZTJiODY4MjIxZjdhMDdiKTsKICAgICAgICAKPC9zY3JpcHQ+&#34; style=&#34;position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;&#34; allowfullscreen webkitallowfullscreen mozallowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Consequently, I created both visually appealing and interactive map of the most dense criminal places in the city. It is possible to click on any cluster and zoom in and out to see places that you might want to avoid.&lt;/p&gt;</description></item></channel></rss>