Content-Type: multipart/related; start=<op.mhtml.1402892097804.5da8e66e1462654a@192.168.1.27>; boundary=----------V6sUxPU46ZhOl9Jww3TAHT
Content-Location: http://www.tver.ru/news/announcement/5512/?print=true
Subject: =?utf-8?Q?=D0=98=D0=BD=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BE=20=D1=82=D0=B0=D1=80=D0=B8=D1=84=D0=B0=D1=85=20=D0=BD=D0=B0=20=D0=BA=D0=BE=D0=BC=D0=BC=D1=83=D0=BD=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D0=B5=20=D1=83=D1=81=D0=BB=D1=83=D0=B3=D0=B8=20=D0=B4=D0=BB=D1=8F=20=D0=B3=D1=80=D0=B0=D0=B6=D0=B4=D0=B0=D0=BD,=20=D0=BF=D1=80=D0=BE=D0=B6=D0=B8=D0=B2=D0=B0=D1=8E=D1=89=D0=B8=D1=85=20=D0=B2=20=D0=BC=D0=BD=D0=BE=D0=B3=D0=BE=D0=BA=D0=B2=D0=B0=D1=80=D1=82=D0=B8=D1=80=D0=BD=D1=8B=D1=85=20=D0=B4=D0=BE=D0=BC=D0=B0=D1=85=20=D0=B3=D0=BE=D1=80=D0=BE=D0=B4=D0=B0=20=D0=A2=D0=B2=D0=B5=D1=80=D0=B8=20=D0=BD=D0=B0=20=D0=BF=D0=B5=D1=80=D0=B8=D0=BE=D0=B4=20=D1=81=2001.07.202014=20=D0=BF=D0=BE=2031.12.2014=20=D0=B3.?=
MIME-Version: 1.0

------------V6sUxPU46ZhOl9Jww3TAHT
Content-Disposition: inline; filename=default.htm
Content-Type: text/html; charset=UTF-8; name=default.htm
Content-ID: <op.mhtml.1402892097804.5da8e66e1462654a@192.168.1.27>
Content-Location: http://www.tver.ru/news/announcement/5512/?print=true
Content-Transfer-Encoding: 8bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xml:lang="ru" lang="ru">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Информация о тарифах на коммунальные услуги для граждан, проживающих в многоквартирных домах города Твери на период с 01.07.202014 по 31.12.2014 г.</title>
<link rel="stylesheet" type="text/css" href="/css/main-common.css" media="all">
<link rel="stylesheet" type="text/css" href="/css/search.css" media="all">
<style></style>
<script type="text/javascript" src="/js/InputPlaceholder.js"></script><!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="/css/ie7.css" media="screen"/><![endif]--><!--[if lte IE 6]><link rel="stylesheet" type="text/css" href="/css/ie6.css" media="screen"/><![endif]--><script type="text/javascript" src="/js/jquery-1.4.2.min.js"></script><script type="text/javascript" src="/js/low_vision.js"></script><script type="text/javascript" src="/js/imageflow.js"></script>
</head>
<body><div id="container"><div id="content-wrapper" style="padding-top:0px"><div class="clearfix" id="main-content-wrapper" style="background-color:#FFFFFF"><div id="content" style="margin-left:0px;padding-top:0px">
<table width="100%" style="margin-bottom:0px;"><tr>
<td valign="middle" width="1%" style="padding-left:0px;vertical-align:middle"><img src="/img/logo_emblem.png"></td>
<td valign="middle" style="padding:0px;vertical-align:middle"><h2 style="padding:0px;margin:0px">
						Объявления Администрации города Твери
					</h2></td>
</tr></table>
<h3>Информация о тарифах на коммунальные услуги для граждан, проживающих в многоквартирных домах города Твери на период с 01.07.202014 по 31.12.2014 г.</h3>
<div><span style="background: none repeat scroll 0pt 0pt rgb(242, 240, 230); color: rgb(136, 136, 136); padding: 1px 4px;">11 июня</span></div>
<br><table style="margin-left:-18.6pt;border-collapse:collapse; border:none;">
<tr><td colspan="5" valign="top" width="720" style="width:540.0pt;border:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<p style="text-align: center"><strong>Информация о тарифах на
коммунальные услуги для граждан, проживающих в многоквартирных
домах города Твери на период с 01.07.202014 по 31.12.2014
г.</strong></p>
</td></tr>
<tr>
<td valign="top" width="228" style="width:170.9pt;border:solid windowtext 1.0pt; border-top:none; padding:0cm 5.4pt 0cm 5.4pt">
<div><strong>Наименование услуги</strong></div>
</td>
<td colspan="4" valign="top" width="492" style="width:369.1pt;border-top:none; border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<p style="text-align: center"><strong>Период действия тарифов с
01.07.2014 по 31.12.2014 год</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="228" style="width:170.9pt;border:solid windowtext 1.0pt; border-top:none; padding:0cm 5.4pt 0cm 5.4pt">
<div> </div>
</td>
<td valign="top" width="84" style="width:63.1pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<p style="text-align: center">Единицы измерения</p>
</td>
<td valign="top" width="72" style="width:54.0pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div style="text-align: center">Тариф</div>
</td>
<td valign="top" width="168" style="width:126.0pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<p style="text-align: center">Нормативный акт</p>
</td>
<td valign="top" width="168" style="width:126.0pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<p style="text-align: center">Поставщик услуги</p>
</td>
</tr>
<tr>
<td valign="top" width="228" style="width:170.9pt;border:solid windowtext 1.0pt; border-top:none; padding:0cm 5.4pt 0cm 5.4pt">
<div>Водоснабжение</div>
</td>
<td valign="top" width="84" style="width:63.1pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>руб./м3</div>
</td>
<td valign="top" width="72" style="width:54.0pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>19,33</div>
</td>
<td rowspan="2" valign="top" width="168" style="width:126.0pt;border-top:none; border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<p>Приказ ГУ РЭК Тверской области от 12.12.2013 № 523-нп</p>
</td>
<td rowspan="2" valign="top" width="168" style="width:126.0pt;border-top:none; border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>ООО «Тверь</div>
<div>Водоканал»</div>
</td>
</tr>
<tr>
<td valign="top" width="228" style="width:170.9pt;border:solid windowtext 1.0pt; border-top:none; padding:0cm 5.4pt 0cm 5.4pt">
<div>Водоотведение</div>
</td>
<td valign="top" width="84" style="width:63.1pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>руб./м3</div>
</td>
<td valign="top" width="72" style="width:54.0pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>19,75</div>
</td>
</tr>
<tr>
<td valign="top" width="228" style="width:170.9pt;border:solid windowtext 1.0pt; border-top:none; padding:0cm 5.4pt 0cm 5.4pt">
<div>Водоснабжение</div>
</td>
<td valign="top" width="84" style="width:63.1pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>руб./м3</div>
</td>
<td valign="top" width="72" style="width:54.0pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>14,87</div>
</td>
<td rowspan="2" valign="top" width="168" style="width:126.0pt;border-top:none; border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<p>Приказ ГУ РЭК Тверской области от 11.12.2013 № 423-нп</p>
</td>
<td rowspan="2" valign="top" width="168" style="width:126.0pt;border-top:none; border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>МУМ ЖКП «Сахарово»</div>
</td>
</tr>
<tr>
<td valign="top" width="228" style="width:170.9pt;border:solid windowtext 1.0pt; border-top:none; padding:0cm 5.4pt 0cm 5.4pt">
<div>Водоотведение</div>
</td>
<td valign="top" width="84" style="width:63.1pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>руб./м3</div>
</td>
<td valign="top" width="72" style="width:54.0pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>17,58</div>
</td>
</tr>
<tr>
<td valign="top" width="228" style="width:170.9pt;border:solid windowtext 1.0pt; border-top:none; padding:0cm 5.4pt 0cm 5.4pt">
<div>Водоснабжение</div>
</td>
<td valign="top" width="84" style="width:63.1pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>руб./м3</div>
</td>
<td valign="top" width="72" style="width:54.0pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>11,80</div>
</td>
<td valign="top" width="168" style="width:126.0pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<p>Приказ ГУ РЭК Тверской области от 11.12.2013 № 424-нп</p>
</td>
<td valign="top" width="168" style="width:126.0pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>ООО «Энергосервис»</div>
</td>
</tr>
<tr>
<td rowspan="5" valign="top" width="228" style="width:170.9pt;border:solid windowtext 1.0pt; border-top:none; padding:0cm 5.4pt 0cm 5.4pt">
<div>Тепловая энергия</div>
</td>
<td valign="top" width="84" style="width:63.1pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>руб./Гкал</div>
</td>
<td valign="top" width="72" style="width:54.0pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>1272,40</div>
</td>
<td valign="top" width="168" style="width:126.0pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<p>Приказ ГУ РЭК Тверской области от 19.12.2013 № 626-нп</p>
</td>
<td valign="top" width="168" style="width:126.0pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>ООО «Тверьтепло»</div>
</td>
</tr>
<tr>
<td valign="top" width="84" style="width:63.1pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>руб./Гкал</div>
</td>
<td valign="top" width="72" style="width:54.0pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>1342,27</div>
</td>
<td valign="top" width="168" style="width:126.0pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<p>Приказ ГУ РЭК Тверской области от 19.12.2013 № 640-нп</p>
</td>
<td valign="top" width="168" style="width:126.0pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>ООО «Тверьэнергогаз»</div>
</td>
</tr>
<tr>
<td valign="top" width="84" style="width:63.1pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>руб./Гкал</div>
</td>
<td valign="top" width="72" style="width:54.0pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>1272,40</div>
</td>
<td valign="top" width="168" style="width:126.0pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<p>Приказ ГУ РЭК Тверской области от 19.12.2013 № 636-нп</p>
</td>
<td valign="top" width="168" style="width:126.0pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>МУМ ЖКП «Сахарово»</div>
</td>
</tr>
<tr>
<td valign="top" width="84" style="width:63.1pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>руб./Гкал</div>
</td>
<td valign="top" width="72" style="width:54.0pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>1342,28</div>
</td>
<td valign="top" width="168" style="width:126.0pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<p>Приказ ГУ РЭК Тверской области от 20.12.2013 № 714-нп</p>
</td>
<td valign="top" width="168" style="width:126.0pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>ООО «Винея»</div>
</td>
</tr>
<tr>
<td valign="top" width="84" style="width:63.1pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>руб./Гкал</div>
</td>
<td valign="top" width="72" style="width:54.0pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>1272,41</div>
</td>
<td valign="top" width="168" style="width:126.0pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<p>Приказ ГУ РЭК Тверской области от 20.12.2013 № 693-нп</p>
</td>
<td valign="top" width="168" style="width:126.0pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>ООО «Волжский пекарь»</div>
</td>
</tr>
<tr>
<td valign="top" width="228" style="width:170.9pt;border:solid windowtext 1.0pt; border-top:none; padding:0cm 5.4pt 0cm 5.4pt">
<p style="line-height:normal;">Электрическая энергия для населения,
за исключением категорий указанных под * и **</p>
<p style="line-height:normal;">(одноставочный тариф)</p>
</td>
<td valign="top" width="84" style="width:63.1pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>руб./кВт.ч</div>
</td>
<td valign="top" width="72" style="width:54.0pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>3,62</div>
</td>
<td rowspan="3" width="168" style="width:126.0pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<p style="text-align: center">Приказ ГУ РЭК Тверской области от
20.12.2013 № 839-нп</p>
<div style="text-align: center"> </div>
</td>
<td rowspan="3" width="168" style="width:126.0pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<p style="text-align: center">филиал ОАО «МРСК
Центра»-«Тверьэнерго»</p>
</td>
</tr>
<tr>
<td valign="top" width="228" style="width:170.9pt;border:solid windowtext 1.0pt; border-top:none; padding:0cm 5.4pt 0cm 5.4pt">
<p>* Электрическая энергия (население, проживающее в городских
населенных пунктах в домах, оборудованных в установленном порядке
стационарными электроплитами (или) электроотопительными установками
(одноставочный тариф)</p>
</td>
<td valign="top" width="84" style="width:63.1pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>руб./кВт.ч</div>
</td>
<td valign="top" width="72" style="width:54.0pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>2,53</div>
</td>
</tr>
<tr>
<td valign="top" width="228" style="width:170.9pt;border:solid windowtext 1.0pt; border-top:none; padding:0cm 5.4pt 0cm 5.4pt">
<p style="line-height:normal;">**Электрическая энергия (население,
проживающее в сельских населенных пунктах)</p>
<p style="line-height:normal;">(одноставочный тариф)</p>
</td>
<td valign="top" width="84" style="width:63.1pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>руб./кВт.ч</div>
</td>
<td valign="top" width="72" style="width:54.0pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div>2,53</div>
</td>
</tr>
<tr>
<td valign="top" width="228" style="width:170.9pt;border:solid windowtext 1.0pt; border-top:none; padding:0cm 5.4pt 0cm 5.4pt">
<p>Сжиженный газ в баллонах</p>
<div>(Предельная цена)</div>
</td>
<td valign="top" width="84" style="width:63.1pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div style="text-align: center">руб./кг.</div>
</td>
<td valign="top" width="72" style="width:54.0pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div style="text-align: center">38,87</div>
</td>
<td valign="top" width="168" style="width:126.0pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<p style="line-height:normal;">Приказ ГУ РЭК Тверской области</p>
<div>от 27.12.2013 № 842-нп</div>
</td>
<td valign="top" width="168" style="width:126.0pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<p>ООО «Газпром распределение Тверь»</p>
</td>
</tr>
<tr>
<td valign="top" width="228" style="width:170.9pt;border:solid windowtext 1.0pt; border-top:none; padding:0cm 5.4pt 0cm 5.4pt">
<div>Сжиженный емкостной газ</div>
<div>(Розничная цена)</div>
</td>
<td valign="top" width="84" style="width:63.1pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div style="text-align: center">руб./кг.</div>
</td>
<td valign="top" width="72" style="width:54.0pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<div style="text-align: center">40,25</div>
</td>
<td valign="top" width="168" style="width:126.0pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<p style="line-height:normal;">Приказ ГУ РЭК Тверской области</p>
<p style="line-height:normal;">от 27.12.2013 № 843-нп</p>
<div> </div>
</td>
<td valign="top" width="168" style="width:126.0pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">
<p>ООО «Газпром распределение Тверь»</p>
</td>
</tr>
</table>


<div></div>
<p><em>Департамент жилищно-коммунального хозяйства и жилищной политики администрации города Твери</em></p>
</div></div></div></div></body>
</html>

------------V6sUxPU46ZhOl9Jww3TAHT
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://www.tver.ru/img/logo.png
Content-Transfer-Encoding: Base64

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

------------V6sUxPU46ZhOl9Jww3TAHT
Content-Disposition: inline; filename=main-common.css
Content-Type: text/css; charset=utf-8; name=main-common.css
Content-Location: http://www.tver.ru/css/main-common.css
Content-Transfer-Encoding: 8bit

﻿/*
 * big city dating main styles
 * Author: Zolotov Nikita (nikita at infolio.ru)
 *
 */

/* =Reset and base styles
----------------------------------------------*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td{
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 100%;
	vertical-align: baseline;
	background: transparent;
	}
input, textarea, select{
	font: 100% Tahoma, Arial, Helvetica, sans-serif;
	}
table{
	border-collapse: collapse;
	border-spacing: 0;
	}
blockquote, q{
	quotes: none;
	}
body{
	font: 14px/18px Tahoma, Arial, Helvetica, sans-serif;
	color: #333;
	background: #fff;
	}

a{ text-decoration: none; }
a:link		{ color: #069; border-bottom: 1px solid; }
a:visited	{ color: #661f6f; border-bottom: 1px solid; }
a:hover		{ color: #069; border-bottom: 1px dotted; } 
a:active	{ color: #069; }

#content a:link { border:0; }


h2{
	margin-bottom: 25px;
	font-size: 21px;
	font-weight: normal;
	color: #c43100;
	}
h3{
	margin: 26px 0 8px 0;
	font-size: 16px;
	font-family: Arial;
	}
h4{
	margin: 26px 0 6px 0;
	font-size: 14px;
	font-family: Arial;
	}
p, ul, ol, dl, table{
	margin-bottom: 18px;
	}
ul, ol{
	margin-left: 20px;
	}
ul ul, ul ol, ol ul, ol ol{
	margin-top: 9px;
	}
ul li, ol li{
	margin-bottom: 9px;
	}
th, td{
	/*padding: 8px 15px 9px 15px;*/
	border-bottom: 1px solid #d8d8d8;
	}
th{
	font-weight: bold;
	text-align: left;
	}

/* =Layout
----------------------------------------------*/
#main-page{
	background: url('/img/bg.png') no-repeat 247px 0;
	}
#container{
	width: 100%;
	min-width: 1180px;
	}
#content-wrapper{
	float: left;
	width: 80%;
	padding-top: 80px;
	}
.wide-page #content-wrapper{
	/*width: 970px;*/
	width: 100%;
	}
#main-page #content-wrapper{
	padding-top: 175px;
	}
	#main-content-wrapper{
		/*background: #f1e9db;*/
		background: #f1e5cf;
		width: 85%;
		}
	#main-content-wrapper-wide{
		/*background: #f1e9db;*/
		background: #f1e5cf;
		}
		#navigation{
			float: left;
			width: 194px;
			padding: 0 17px 20px 13px;
			}
		#content{
			/*float: left;
			width: 500px;*/
			padding: 30px 20px 20px 37px;
			margin-left: 204px;
			}
		.wide-page #content{
			/*width: 706px;*/
			}
		#main-page #content{
			/*width: 540px;*/
			min-width: 1180px;
			width: 80%;
			padding-left: 0;
			padding-right: 0;
			position:absolute;
			top:175px;
			left:0px;
			}
	#voting{
		float: left;
		width: 224px;
		}
	#see-also{
		float: left;
		width: 534px;
		}
	#see-also-single{
		padding: 29px 30px 44px 240px;
		}
#extra{
	float: left;
	/*width: 206px;*/
	width: 26%;
	padding: 151px 15px 20px 15px;
	font-size: 12px;
	margin-left: -12%;
	}
#main-page #extra{
	padding-top: 513px;
	}
#footer{
	clear: left;
	width: 100%;
	padding: 20px 0 60px 0;
	font-size: 12px;
	line-height: 16px;
	color: #676767;
	border-top: 7px solid #e7eaed;
	}

/* =Navigation
---------------------------------------------*/
.b-table-10 th,
.b-table-10 td {
	padding: 8px 10px 9px;
	}	
.main-navigation{
	position: relative;
	z-index: 100;
	margin: -103px 0 15px 0;
	padding: 11px;
	background: #7f98a3;
	}
#main-page .main-navigation{
	margin-top: -162px;
	}
.logo{
	position: relative;
	left: -2px;
	width: 100%;
	margin-bottom: 12px;
	}
	.logo h1{
		width: 100%;
		margin-bottom: 3px;
		font-size: 21px;
		font-weight: normal;
		line-height: 21px;
		text-shadow: 1px 1px 1px #000;
		}
		.logo a:link,
		.logo a:visited,
		.logo strong{
			display: block;
			padding: 67px 0 0 3px;
			font-weight: normal;
			color: #fff;
			border: none;
			background: url('/img/logo.png') no-repeat;
			}
			.logo .real{
				position: relative;
				}
			.logo .shadow{
				position: absolute;
				top: 68px;
				left: 4px;
				padding-bottom: 10px;
				color: #000;
				}
	.logo p{
		margin-bottom: 0;
		padding-left: 3px;
		font-size: 12px;
		}
.main-menu{
	margin: 0 -6px 0 -6px;
	padding: 7px 6px 6px 6px;
	font-size: 12px;
	color: #fff;
	border-top: 1px solid #9eb0b9;
	border-bottom: 1px solid #6a838f;
	}
	.main-menu li{
		margin-bottom: 6px;
		list-style: none;
		}
		.main-menu a:link,
		.main-menu a:visited{
			color: #fff;
			}
.main-menu-first{
	border-top: none;
	}
.main-menu-last{
	border-bottom: none;
	}
.person{
	margin-bottom: 27px;
	padding: 15px 11px;
	font-size: 12px;
	line-height: 16px;
	background: #7f98a3;
	}
	.person dl{
		margin-bottom: 5px;
		}
		.person dt{
			margin-left: -1px;
			font-weight: bold;
			}
			.person img{
				display: block;
				margin: 0 0 8px 1px;
				}
	.person ul{
		margin: 0;
		}
		.person li{
			margin-bottom: 3px;
			list-style: none;
			}
			.person a{
				color: #fff;
				}
.services{
	margin-top: -1px;
	padding: 11px;
	font-size: 12px;
	line-height: 14px;
	border: 1px solid #bec5c3;
	background: #f8f3ec;
	}
	.services ul{
		margin: 0;
		}
		.services li{
			margin-bottom: 10px;
			list-style: none;
			}
.sub-menu{
	margin: 0;
	font-size: 12px;
	line-height: 14px;
	}
	.sub-menu li{
		clear: left;
		margin: 0 0 10px 0;
		list-style: none;
		}
		.sub-menu strong{
			float: left;
			font-weight: normal;
			margin: 0 0 6px -6px;
			padding: 2px 6px 4px 6px;
			background: #ffeea7;
			}
.sub-menu-columns{
	margin-bottom: 40px;
	}
	.sub-menu-columns .sub-menu{
		float: left;
		padding-right: 20px;
		}
.see-also{
	margin: 0;
	}
	.see-also li{
		margin-bottom: 11px;
		padding-left: 28px;
		list-style: none;
		background: url('/img/list-item.gif') no-repeat 0 .7em;
		}
.copyright{
	float: left;
	width: 213px;
	padding: 0 26px;
	}
.development{
	width: 710px;
	overflow: hidden;
	}
	.development .stages{
		width: 100%;
		margin: 0 0 16px 0;
		overflow: hidden;
		}
		.development .stages li{
			float: left;
			margin: 0 40px 16px 0;
			list-style: none;
			
			}
			.development .stages a{
				color: #676767;
				}
	.development .service-links{
		margin: 0;
		overflow: hidden;
		}
		.development .service-links li{
			float: left;
			margin: 0 30px 0 0;
			list-style: none;
			}
			.development .service-links a{
				color: #333;
				}

/* =Content
---------------------------------------------*/
.promo{
	position: relative;
	height: 286px;
	margin: -30px 0px 19px -224px;
	padding: 33px 0 0 595px;
	font-size: 12px;
	line-height: 16px;
	background: #96c9db url('/img/bg-fake.png') no-repeat;
	}
	.promo .presentation{
		margin-bottom: 18px;
		overflow: hidden;
		}
		.promo h2{
			position: relative;
			width: 100%;
			margin-bottom: 18px;
			font-size: 20px;
			text-shadow: 1px 1px 1px #676767;
			color: #fff;
			}
			.promo h2 .real{
				position: relative;
				}
			.promo h2 .shadow{
				position: absolute;
				top: 1px;
				left: 1px;
				color: #676767;
				}
		/*.promo .presentation p{
			float: left;*/
			/*width: 232px;*/
			/*width: 60%;
			margin: 0;
			padding: 0 20px 0 0;
			border-right: 1px solid #85a6ac;
			}*/
		
		.promo .presentation p{
			float: left;
			width: 98%;
			margin: 0;
			padding: 0 20px 0 0;
			}

		.promo .presentation ul{
			margin: 0;
			padding-left: 14px;
			overflow: hidden;
			}
			.promo .presentation li{
				margin-bottom: 7px;
				list-style: none;
				}
				.promo .presentation a{
					color: #069;
					}
	.promo .image{
		position: absolute;
		left: 225px;
		top: 29px;
		}
	.promo .gallery{
		position: relative;
		zoom: 1;
		}
		.promo .gallery ul{
			margin: 0;
			padding: 0 10px 0 13px;
			}
			.promo .gallery li{
				float: left;
				margin: 0 3px 0 0;
				list-style: none;
				}
				.promo .gallery li a{
					display: block;
					border: 4px solid transparent;
					background: none;
					}
					.promo .gallery img{
						display: block;
						}
				.promo .gallery .selected{
					border-color: #fff;
					}
		.promo .gallery p{
			position: absolute;
			top: 21px;
			left: -2px;
			margin: 0;
			}
			.promo .gallery p a{
				display: block;
				width: 11px;
				height: 20px;
				text-indent: -9999px;
				outline: none;
				border: none;
				background: url('/img/buttons/index-gallery.gif') no-repeat;
				}
		.promo .gallery .next{
			left: auto;
			right: 11px;
			}
			.promo .gallery .next a{
				background-position: -11px 0;
				}
.breadcrumbs{
	position: relative;
	padding: 8px 20px 9px 244px;
	font-size: 12px;
	background: #d6d6ce;
	}
	.breadcrumbs p{
		width: 100%;
		margin: 0;
		}
		.breadcrumbs a{
			color: #069;
			}
		.breadcrumbs strong{
			position: relative;
			top: 1px;
			padding: 0 3px;
			font-weight: normal;
			font-size: 14px;
			}
.section-title{
	margin-bottom: 16px;
	font-size: 16px;
	font-weight: bold;
	color: #333;
	}
.section-title-enlarged{
	font-size: 18px;
	}
.city-diary{
	float: left;
	width: 40%;
	margin-top: -8px;
	padding: 8px 15px 28px 0;
	border-right: 1px solid #bec5c3;
	}
.announcements{
	margin: 0 0 20px 0;
	font-size: 12px;
	line-height: 14px;
	}
	.announcements li{
		list-style: none;
		}
		.announcements a{
			color: #333;
			border: none;
			}
		.announcements a:hover{
			color: #069;
			border-bottom: 1px solid;
			}
			.announcements em{
				position: relative;
				top: -.2em;
				color: #069;
				vertical-align: top;
				font: bold 18px Georgia, "Times New Roman", Times, serif;
				}
	.announcements .highlighted{
		margin: -5px 0 9px -7px;
		padding: 5px 7px 0 7px;
		background: #ffeea7;
		}
.news{
	margin-bottom: 16px;
	}
	.news li{
		overflow: hidden;
		padding-left: 42px;
		}
		.news img{
			float: left;
			margin: 0 10px 5px -42px;
			}
	.news .imaged{
		margin-bottom: 16px;
		}
.news-date{
	margin-top: 16px;
	font-size: 12px;
	font-weight: normal;
	color: #ce480d;
	}
	.news-date em{
		font-style: normal;
		padding-right: 16px;
		background: url('/img/ico/arrow-down.gif') no-repeat 100% .45em;
		}
.archive-link{
	margin: 0;
	font-size: 12px;
	}
	.archive-link a{
		color: #069;
		}
.partners{
	float: left;
	margin: 0;
	/*padding: 0 13px 15px 13px;*/
	text-align: center;
	width: 20%;
	}
	.partners-container li{
		margin-bottom: 6px;
		list-style: none;
		}
		.partners-container a{
			border: none;
			background: none;
			}
			.partners-container img{
				/*display: block;*/
				}
.article{
	padding: 0 10px 0 24px;
	}
	.article h2,
	.article img{
		margin-left: -24px;
		}
.signed-image{
	margin-left: -24px;
	}
	.signed-image img{
		display: block;
		margin: 0 0 5px 0;
		}
	.signed-image br{
		display: none;
		}
	.signed-image em{
		display: block;
		font-size: 12px;
		font-style: normal;
		line-height: 16px;
		}
.without-pointers{
	margin-left: 0;
	}
	.without-pointers li{
		list-style: none;
		}

img.rightimg{
	padding-right: 10px;
	padding-bottom: 10px;
}

img.leftimg{
	padding-left: 10px;
	padding-bottom: 10px;
}

img.bothimg{
	padding: 10px;
}


/* =Clearfix
---------------------------------------------*/
.clearfix:after{
	content: ".";
	display: block;
	height: 0;
	clear: both;
	visibility: hidden;
	}
.clearfix {
	display: inline-block;
	}
/* Holly Hack Targets IE Win only \*/
* html .clearfix {height: 1%;}
/*.clearfix {display: block;}*/
/* End Holly Hack */

/* Стили со старого сайта */
#content ul.pager { margin: 22px 0 22px -5px; padding: 0 }
#content ul.pager li { padding-left: 5px; display:inline; background-image: none }
.date { font-size: 80%; color: #999999 }

#content ul.ordinary { margin: 22px 0 22px -5px; padding: 0 }

#content ul.ordinary li {
	list-style-type: none;
	display: block;
	background: transparent url('/i/bg/li.gif') no-repeat left 1.4ex;
	padding: 0 0 0 32px;
	margin: 12px 0;
}
#content ul.no_list_type li { background-image: none; padding-left: 0 }

select#mfi_addressee { width: 39.6em }
textarea#mfi_message { font-size: 100%; width: 90%; //width: 27em }
small { font-size: 80% }
#content form.left fieldset div.group { margin: 0.5ex 0 1ex 0 }
fieldset { font-size: 100.1%; }

/*table.layout { margin: 0 }
table.layout td, td.layout { padding: 0; border-width: 0; margin: 0; vertical-align: middle; line-height:0.001px; }
table.layout td img { padding: 0; border-width: 0; margin: 0; vertical-align: middle; }*/

#newslent div.daily dl dd, #content dl.inner_newslent dd, #newslent div.announcement ul li { cursor: pointer; cursor: hand }
#content dl.inner_newslent dd.hover, #newslent div.daily dl dd.hover, #newslent div.announcement ul li.hover { color: #576B7C }
dl.inner_newslent, dl.inner_newslent dt, dl.inner_newslent dd { margin: 0; padding: 0 }
dl.inner_newslent dt span { white-space: nowrap; padding: 1px 4px; background: #F2F0E6; color: #888888; }
dl.inner_newslent dd { padding: 0 0 2em 0 }
dl.inner_newslent dt.img { margin-left: 115px }
dl.inner_newslent dd img {
	display: block;
	float: left;
	position: relative;
	top: -2.8ex;
	margin: 0 15px 0 0;
	padding: 0;
}

img.inner { display: block; float: left; margin: 0px 10px 10px 0; //margin-top: 20px } 
img { margin: 5px; }
div.noborder a { border-bottom: 0px; }

div.search ol li { padding-bottom: 10px; }

/* одноколоночная версия */
#single_column { clear: none; float:left; position: relative;}

table.townbuilding { margin: 0 }
table.townbuilding td, td.townbuilding { padding: 0; border-width: 0; margin: 0; vertical-align: middle; line-height:0.001px; }
table.townbuilding td img { padding: 0; border-width: 0; margin: 0; vertical-align: middle; }

/* всплывающие блоки */
.dashed {
	border-bottom: 1px dashed #2A5B9E;
	color: #2A5B9E;
	cursor: pointer;
	cursor: hand;
}
.predashed {
	font-weight: bold;
	display: block;
	margin-bottom: 5px;
	margin-top: -11px;
}
.hidden {
	padding-left: 20px;
	padding-top: 0px;
	display: none;
}

.hidden li {
	margin-bottom: 0px;
}



/* ImageFlow Settings
==================================== */
.imageflow {
		overflow:hidden;
		position:relative; 
		text-align:left;
		visibility:hidden;
		width:100%;
	}
	.imageflow img {
		border:none;
		position:absolute;
		top:0px;
		visibility:hidden;
		-ms-interpolation-mode:bicubic; /* Enables bicubic image resampling for the IE7 */
	}
	.imageflow p {
		margin:0 auto;
		text-align:center;
	}
	.imageflow .loading {
		border:1px solid white;
		height:15px;
		left:50%;
		margin-left:-106px;
		padding:5px;
		position:relative;
		visibility:visible;
		width:200px;
	}
	.imageflow .loading_bar {
		background:#fff;
		height:15px;
		visibility:visible;
		width:1%;
	}
	.imageflow .navigation{
		z-index:10000;
		margin-top: 66px
	}
	.imageflow .caption {
		font-weight:bold;
		position:relative; 
		text-align:center;
		z-index:10001;
	}
	.imageflow .scrollbar {
		border-bottom:1px solid #7F98A3;
		position:relative; 
		visibility:hidden;
		z-index:10002;
		height:1px;
	}
	.imageflow .slider {
		background:url(/img/slider.png) no-repeat;
		height:14px;
		margin:-6px 0 0 -7px;
		position:absolute;
		width:14px;
		z-index:10003;
	}
	.imageflow .slideshow {
		cursor:pointer;
		height:14px;
		margin:20px 0 0 20px;
		position:absolute;
		width:14px;
		z-index:10003;
	}
	.imageflow .slideshow.pause {
		background:url(/img/button_pause.png) no-repeat;
	}
	.imageflow .slideshow.play {
		background:url(/img/button_play.png) no-repeat;
	}
	.imageflow .images {
		overflow:hidden;
		white-space:nowrap;
	}
	.imageflow .button {
		cursor:pointer;
		height:17px;
		position:relative;
		width:17px;
	}
	.imageflow .previous {
		background: url(/img/button_left.png) top left no-repeat;
		float:left;
		margin: -7px 0 0 -30px;
	}
	.imageflow .next {
		background: url(/img/button_right.png) top left no-repeat;
		float:right;	
		margin:-7px -30px 0 30px;
	}
	
	
	
	.modalGallery {
	background: url('../img/bg_gallery.png') repeat;
    bottom: 0;
    left: 0;
	display: none;
    max-height: 100%;
    opacity: 1;
    position: fixed;
    right: 0;
    top: 0;
    z-index: 11000;
	}
	.modalGallery  .images {
		text-align: center;
		margin: 0 auto;
		position: relative;
		}
	.modalGallery .image {
		display: none;
		margin: 0;
		}
	.modalGallery .image_active {
		display: inline !impotant;
		}
	.modalGallery  .images_background {
		background: rgba(24, 24, 24, 0.9);
		}
		.modalGallery  .images .l_area,
		.modalGallery  .images .r_area {
			width: 30%;
			height: 100%;
			position: absolute;
			cursor: pointer;
			z-index: 120000;
			display:block;
			}
		.modalGallery .cursorDefault {
			cursor: default !important;
			}
		.modalGallery  .images .r_area {
			right: 0;
			}
		.modalGallery .images .l_arrow,
		.modalGallery .images .r_arrow {
			background: url('/img/d_arrows.png') no-repeat scroll 0 0 rgba(24, 24, 24, 0.9);
			height: 54px;
			position: absolute;
			width: 23px;
			z-index: 11000;
			top: 50%;
			margin-top: -27px;
			display: none;
			}
		.modalGallery  .images .l_arrow {
			background-position: 0 19px;
			border-radius: 0 5px 5px 0;
			left: 0;
			}
		.modalGallery  .images .r_arrow {
			border-radius: 5px 0 0 5px;
			right: 0;
			background-position: -18px 19px;
			}
	.modalGallery .loader {
		background-color: #181818;
		border-radius: 5px 5px 5px 5px;
		height: 40px;
		left: 50%;
		margin: -16px 0 0 -16px;
		position: absolute;
		top: 50%;
		width: 40px;
		}
		.modalGallery .loader .image {
			padding: 4px 0 0 4px;
			display: inline
			}
.filter {
	position: absolute;
    right: 10px;
    top: 34px;
	padding-right: 14px;
	}
.filter-top-0 {
	top: 0;
	}
.filter a:visited {
	color: #006699;
	}
	.filter .icon-arrow {
		display: block;
		height: 6px;
		position: absolute;
		right: 0;
		top: 8px;
		width: 10px;
		background: url("/img/ico/icons.png") no-repeat 0 0;
		}
	.filter .icon-arrow-opened {
		background-position: -10px 0;
		}
	.filter .link {
		border: none;
		}
		.filter .link .text {
			border-bottom: 1px solid;
			}
		.filter .link:hover .text {
			border-bottom: 1px dotted;
			}
.filter-block {
	display: none;
	background-color: #fff;
    margin-top: -12px;
    position: absolute;
	border: 1px solid #006699;
    right: 10px;
    z-index: 999;
	}
	.filter-block form {
		padding: 10px;
		}
.filter-block label {
	padding-bottom: 5px;
	vertical-align: top;
	}
.hidden-block {
	display: none;
	}


/*Added by Ivanova Elena. 15.01.2013*/
.b-menu-with-icons {
	list-style: none;
	margin-left: 0;
	font-size: 12px;
	line-height: 14px;
	overflow: hidden;
	min-width: 740px;
	max-width: 850px;
	padding-top: 10px;
}
	.b-menu-with-icons .item {
		float: left;
		margin: 0 39px 28px 0;
	}
	.b-menu-with-icons .item a {
		position: relative;
		display: block;
		border: 1px solid #DED5C3 !important;
		width: 195px;
		height: 127px;
		background: #FCF5E3;
		text-align: center;
	}
		.b-menu-with-icons .item .icons {
			display: block;
			width: 195px;
			height: 100px;
		}
			.b-menu-with-icons .item .icons .icon {
				display: inline-block;
				background: url("/img/icon_business.png") no-repeat 0 0;
			}
			.b-menu-with-icons .item .I .icon {
				margin-top: 14px;
				width: 43px;
				height: 75px;
				background-position: 0 -135px;
			}
			.b-menu-with-icons .item .I:hover .icon {
				background-position: -44px -135px;
			}
			.b-menu-with-icons .item .II .icon {
				margin-top: 16px;
				width: 75px;
				height: 74px;
				background-position: 0 -60px;
			}
			.b-menu-with-icons .item .II:hover .icon {
				background-position: -76px -60px;
			}
			.b-menu-with-icons .item .III .icon {
				margin-top: 27px;
				width: 77px;
				height: 59px;
				background-position: 0 0px;
			}
			.b-menu-with-icons .item .III:hover .icon {
				background-position: -78px 0px;
			}
			.b-menu-with-icons .item .IV .icons {
				text-align: left !important;
			}
			.b-menu-with-icons .item .IV .icon {
				margin: 14px 0 0 2px;
				width: 147px;
				height: 82px;
				background-position: 0 -623px;
			}
			.b-menu-with-icons .item .IV:hover .icon {
				background-position: -148px -623px;
			}
			.b-menu-with-icons .item .V .icon {
				margin-top: 7px;
				width: 45px;
				height: 87px;
				background-position: 0 -535px;
			}
			.b-menu-with-icons .item .V:hover .icon {
				background-position: -46px -535px;
			}
			.b-menu-with-icons .item .VI .icon {
				margin-top: 7px;
				width: 80px;
				height: 86px;
				background-position: 0 -448px;
			}
			.b-menu-with-icons .item .VI:hover .icon {
				background-position: -81px -448px;
			}
			.b-menu-with-icons .item .VII .icon {
				margin-top: 12px;
				width: 50px;
				height: 75px;
				background-position: 0 -211px;
			}
			.b-menu-with-icons .item .VII:hover .icon {
				background-position: -51px -211px;
			}
			.b-menu-with-icons .item .VIII .icon {
				margin-top: 14px;
				width: 72px;
				height: 77px;
				background-position: 0 -287px;
			}
			.b-menu-with-icons .item .VIII:hover .icon {
				background-position: -74px -287px;
			}
			.b-menu-with-icons .item .IX .icon {
				margin-top: 14px;
				width: 60px;
				height: 82px;
				background-position: 0 -365px;
			}
			.b-menu-with-icons .item .IX:hover .icon {
				background-position: -61px -366px;
			}
		.b-menu-with-icons .item a .text {

			border-bottom: 1px solid;
		}
		.b-menu-with-icons .item a:hover .text {
			border-bottom: none;
		}
		.b-menu-with-icons .item a:visited .text {
			color: #661f6f;
		}
		.b-menu-with-icons .item a .corner {
			display: block;
			position: absolute;
			width: 6px;
			height: 6px;
		}
		.b-menu-with-icons .item a .corner-l-t {
			top: -1px;
			left: -1px;
			border-left: 2px solid #DED5C3;
			border-top: 2px solid #DED5C3;
		}
		.b-menu-with-icons .item a .corner-r-t {
			top: -1px;
			right: -1px;
			border-right: 2px solid #DED5C3;
			border-top: 2px solid #DED5C3;
		}
		.b-menu-with-icons .item a .corner-r-b {
			bottom: -1px;
			right: -1px;
			border-right: 2px solid #DED5C3;
			border-bottom: 2px solid #DED5C3;
		}
		.b-menu-with-icons .item a .corner-l-b {
			bottom: -1px;
			left: -1px;
			border-left: 2px solid #DED5C3;
			border-bottom: 2px solid #DED5C3;
		}
		.b-menu-with-icons .item a:hover .corner-l-t {
			border-left: 2px solid #364958;
			border-top: 2px solid #364958;
		}
		.b-menu-with-icons .item a:hover .corner-r-t {
			border-right: 2px solid #364958;
			border-top: 2px solid #364958;
		}
		.b-menu-with-icons .item a:hover .corner-r-b {
			border-right: 2px solid #364958;
			border-bottom: 2px solid #364958;
		}
		.b-menu-with-icons .item a:hover .corner-l-b {
			border-left: 2px solid #364958;
			border-bottom: 2px solid #364958;
		}
ul.extra { margin: 0px; padding: 0 }
ul.extra li {
	list-style-type: none;
	display: block;
	padding: 0 0 0 25px;
	margin: 5px 0;
}
#extra small { font-size: 75%; }









------------V6sUxPU46ZhOl9Jww3TAHT
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://www.tver.ru/i/bg-search.png
Content-Transfer-Encoding: Base64

iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2Fy
ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAA
AAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5U
Y3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6
eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8w
Mi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpE
ZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRv
YmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv
bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20v
eGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRv
YmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9Inht
cC5paWQ6NzlGQjM2REJGMTYyMTFERkI0RThGRkFFNzlFRDUwREQiIHhtcE1NOkRv
Y3VtZW50SUQ9InhtcC5kaWQ6NzlGQjM2RENGMTYyMTFERkI0RThGRkFFNzlFRDUw
REQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlp
ZDo3OUZCMzZEOUYxNjIxMURGQjRFOEZGQUU3OUVENTBERCIgc3RSZWY6ZG9jdW1l
bnRJRD0ieG1wLmRpZDo3OUZCMzZEQUYxNjIxMURGQjRFOEZGQUU3OUVENTBERCIv
PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94
cGFja2V0IGVuZD0iciI/PmWtfocAAAAbSURBVHjaYjSIyJrHQARgYiASjCqkjkKA
AAMAjcYBpLwenL4AAAAASUVORK5CYII=

------------V6sUxPU46ZhOl9Jww3TAHT
Content-Disposition: inline; filename=search.css
Content-Type: text/css; name=search.css
Content-Location: http://www.tver.ru/css/search.css
Content-Transfer-Encoding: 8bit

/* начало кода для поиска */
.search-bar {
	position: absolute;
	right: 0;
	top: 0;
	}
	.search-bar a,
	.search-bar a:link,
	.search-bar a:active,
	.search-bar a:visited {
		color: #FFF;
		
		font-size: 11.5px;
		line-height: 26px;		
	}
	.search-bar a:hover {
		color: #CCC;
	}
	.search-bar input {
		font-size: 13px;
	}
	.search-bar__submit {
		position: relative;
		top: 3px;
		
		//top: 0;
	}
	.search-bar__item {
		display: block;
		float: left;
		
		height: 26px;
		overflow: hidden;
		
		background: transparent url('/i/bg-search.png');
		-background: #7D96A1;
		
		padding: 9px 11px;
		margin: 0 2px 0 0;
	}
	.search-bar__item_last {
		padding-left: 17px;
		padding-right: 17px;
	}
	.emptySearch {
		color: #666;
	}
.inner-filter {
	position: relative;
	margin-bottom: 20px;
}
.inner-filter:after {
	content: ".";
	display: block;
	height: 0;
	clear: both;
	visibility: hidden;
}
.inner-filter .filter {
	position: relative;
	float: right;
	top: 0 !important;
}
.inner-filter .link {

}
.inner-filter .filter-block {
	margin-top: 6px !important;
}
.inner-filter .archive-link {
	float: left;
	margin-right: 10px;
}
.inner-filter .filter-block {
	width: 285px;
}


/* конец кода для поиска */

/* форма поиска */
#search ul, #search form { margin: 0 0 0 8px; padding: 0; }

#search input.submit { display: none; }

#search ul li {
	display: block;
	float: left;
	clear: both;
	white-space: nowrap;
	margin: 3px 0;
	padding: 0;
	list-style-type: none;
	font-size: 65%;
}
#search ul li a {
	color: #666666;
	display: block;
	padding: 2px 0 0 19px;
	background-repeat: no-repeat;
	background-position: left bottom;
	text-decoration: underline;
}
#search ul li a.selected { color: #333333; text-decoration: none }

#search ul li.contacts a { background-image: url('/i/icons/mail.gif'); }
#search ul li.map a { background-image: url('/i/icons/map.gif'); }

#search p {
	clear: both;
	margin: 22px 0 0 0;
	padding: 0;
	font-size: 80%;
	white-space: nowrap;
}
#search div input.emptySearch { color: #CCCCCC }
#search div input { width: 100% }
/* все правила ниже не читаются Safari */
@media all {
@import url(dummy.css);
}
#search div input {
	display: block;
	border: 0;
	font-size: 14px;
	padding: 0 0 0px 22px;
	background: transparent url('/i/icons/search.gif') no-repeat 4px 2px;
}
#search form div { padding: 0 9px 0 0; background: transparent url('/i/bg/search.gif') no-repeat right center }
#search form div div { background-image: none; border-width: 1px 0 1px 1px; border-style: solid; border-color: #556C7E }
.b-low-vision {
	display: block;
	margin-left: 6px;
	text-align: right;
	
}
	.b-low-vision .link {
	
	}

.b-big-text,
.b-big-text h4 {
	font-size: 23px;
	line-height: 28px;
}
.b-big-text #extra, 
.b-big-text .main-menu, 
.b-big-text .logo p, 
.b-big-text .breadcrumbs, 
.b-big-text .sub-menu, 
.b-big-text .search-bar__item a, 
.b-big-text .search-bar input, 
.b-big-text #footer,
.b-big-text .b-low-vision a,
.b-big-text .promo,
.b-big-text .archive-link,
.b-big-text .announcements,
.b-big-text .news,
.b-big-text .person,
.b-big-text .services {
	font-size: 18px;
	line-height: 22px;
}
.b-big-text .inner-filter .filter-block {
	width: 397px;
}

.b-big-text table {
	font-size: 23px !important;
	line-height: 28px !important;
}
.b-big-text ul li {
	margin-bottom: 15px;
}
.b-big-text .main-menu li {
	margin-bottom: 10px;
}

.b-big-text H1 {
	font-size: 25px;
	line-height: 28px;
}
.b-big-text .promo {
	height: auto;
}
.b-big-text H2 {
	font-size: 32px;
	line-height: 36px;
}
.b-big-text H3 {
	font-size: 26px;
	line-height: 30px;
}
.b-big-text .search-bar__item {
	padding-bottom: 20px;
}

------------V6sUxPU46ZhOl9Jww3TAHT
Content-Disposition: inline; filename=InputPlaceholder.js
Content-Type: application/javascript; charset=windows-1251; name=InputPlaceholder.js
Content-Location: http://www.tver.ru/js/InputPlaceholder.js
Content-Transfer-Encoding: Base64

LyoKICoKICogKGMpIHd3dy5hcnRsZWJlZGV2LnJ1CiAqIOjx9e7k7fvpIOru5CDs
7uTo9Oj26PDu4uDtIMHu8Ojx7uL77CDA6+Xq8eDt5PDu7CAoYWlzaGVrQGdtYWls
LmNvbSksIOjx8u737ejqOiBodHRwOi8vd3d3LmFydGxlYmVkZXYucnUvanMvSW5w
dXRQbGFjZWhvbGRlci5qcwogKgogKi8KCi8qCdHi7unx8uLgCiAqCQlJbnB1dAkJ
Cd3r5ezl7fIg9O7w7PssIPEg6u7y7vD77CDw4OHu8uDl7AogKgkJVmFsdWUJCQnH
7eD35e3o5SDt4OTv6PHoIO/uIPPs7uv34O3o/gogKgkJQ3NzRmlsbGVkCQnI7P8g
Y3NzLerr4PHx4CDk6/8g7vLu4fDg5uXt6P8g5+Dv7uvt5e3u4+4g7+7r/wogKgkJ
Q3NzRW1wdHkJCcjs/yBjc3Mt6uvg8fHgIOTr/yDu8u7h8ODm5e3o/yDv8/Hy7uPu
IO/u6/8KICovCgovKgnK7u3x8vDz6vLu8AogKgnP4PDg7OXy8Ps6CiAqCQlpbnB1
dAkJCd3r5ezl7fIg9O7w7PsgKCBpbnB1dFtAdHlwZT0ndGV4dCddICksIPEg6u7y
7vD77CDw4OHu8uDl7AogKgkJdmFsdWUJCQnH7eD35e3o5SDt4OTv6PHoIO/uIPPs
7uv34O3o/iwg8i4g5S4g8u7yIPHg7PvpIHBsYWNlaG9sZGVyCiAqCQljc3NGaWxs
ZWQJCcjs/yBjc3Mt6uvg8fHgIOTr/yDu8u7h8ODm5e3o/yDn4O/u6+3l7e7j7iDv
7uv/ICjv8Ojs5e3/5fLx/yDqIGlucHV0KQogKgkJY3NzRW1wdHkJCcjs/yBjc3Mt
6uvg8fHgIOTr/yDu8u7h8ODm5e3o/yDv8/Hy7uPuIO/u6/8gKO/w6Ozl7f/l8vH/
IOogaW5wdXQpCiAqLwpmdW5jdGlvbiBJbnB1dFBsYWNlaG9sZGVyIChpbnB1dCwg
dmFsdWUsIGNzc0ZpbGxlZCwgY3NzRW1wdHkpCnsKCXZhciB0aGlzQ29weSA9IHRo
aXMKCQoJdGhpcy5JbnB1dCA9IGlucHV0Cgl0aGlzLlZhbHVlID0gdmFsdWUKCXRo
aXMuU2F2ZU9yaWdpbmFsID0gKGlucHV0LnZhbHVlID09IHZhbHVlKQoJdGhpcy5D
c3NGaWxsZWQgPSBjc3NGaWxsZWQKCXRoaXMuQ3NzRW1wdHkgPSBjc3NFbXB0eQoK
CXRoaXMuc2V0dXBFdmVudCAodGhpcy5JbnB1dCwgJ2ZvY3VzJywgZnVuY3Rpb24o
KSB7cmV0dXJuIHRoaXNDb3B5Lm9uRm9jdXMoKX0pCgl0aGlzLnNldHVwRXZlbnQg
KHRoaXMuSW5wdXQsICdibHVyJywgIGZ1bmN0aW9uKCkge3JldHVybiB0aGlzQ29w
eS5vbkJsdXIoKX0pCgl0aGlzLnNldHVwRXZlbnQgKHRoaXMuSW5wdXQsICdrZXlk
b3duJywgZnVuY3Rpb24oKSB7cmV0dXJuIHRoaXNDb3B5Lm9uS2V5RG93bigpfSkK
CglpZiAoaW5wdXQudmFsdWUgPT0gJycpIHRoaXMub25CbHVyKCk7CgoJcmV0dXJu
IHRoaXMKfQoKSW5wdXRQbGFjZWhvbGRlci5wcm90b3R5cGUuc2V0dXBFdmVudCA9
IGZ1bmN0aW9uIChlbGVtLCBldmVudFR5cGUsIGhhbmRsZXIpCnsKCWlmIChlbGVt
LmF0dGFjaEV2ZW50KQoJCWVsZW0uYXR0YWNoRXZlbnQgKCdvbicgKyBldmVudFR5
cGUsIGhhbmRsZXIpCgoJaWYgKGVsZW0uYWRkRXZlbnRMaXN0ZW5lcikKCQllbGVt
LmFkZEV2ZW50TGlzdGVuZXIgKGV2ZW50VHlwZSwgaGFuZGxlciwgZmFsc2UpCn0K
CklucHV0UGxhY2Vob2xkZXIucHJvdG90eXBlLm9uRm9jdXMgPSBmdW5jdGlvbigp
IHsKCWlmICghdGhpcy5TYXZlT3JpZ2luYWwgJiYgIHRoaXMuSW5wdXQudmFsdWUg
PT0gdGhpcy5WYWx1ZSkKCQl0aGlzLklucHV0LnZhbHVlID0gJycKCWVsc2UKCQl0
aGlzLklucHV0LmNsYXNzTmFtZSA9ICcnCn0KCklucHV0UGxhY2Vob2xkZXIucHJv
dG90eXBlLm9uS2V5RG93biA9IGZ1bmN0aW9uKCkgewoJdGhpcy5JbnB1dC5jbGFz
c05hbWUgPSAnJwp9CgpJbnB1dFBsYWNlaG9sZGVyLnByb3RvdHlwZS5vbkJsdXIg
PSBmdW5jdGlvbigpIHsKCWlmICh0aGlzLklucHV0LnZhbHVlID09ICcnIHx8IHRo
aXMuSW5wdXQudmFsdWUgPT0gdGhpcy5WYWx1ZSkKCXsKCQl0aGlzLklucHV0LnZh
bHVlID0gdGhpcy5WYWx1ZQoJCXRoaXMuSW5wdXQuY2xhc3NOYW1lID0gdGhpcy5D
c3NFbXB0eQoJfQoJZWxzZQoJCXRoaXMuSW5wdXQuY2xhc3NOYW1lID0gdGhpcy5D
c3NGaWxsZWQKfQo=

------------V6sUxPU46ZhOl9Jww3TAHT
Content-Disposition: inline; filename=jquery-1.4.2.min.js
Content-Type: application/javascript; name=jquery-1.4.2.min.js
Content-Location: http://www.tver.ru/js/jquery-1.4.2.min.js
Content-Transfer-Encoding: Base64

LyohCiAqIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkgdjEuNC4yCiAqIGh0dHA6
Ly9qcXVlcnkuY29tLwogKgogKiBDb3B5cmlnaHQgMjAxMCwgSm9obiBSZXNpZwog
KiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBs
aWNlbnNlcy4KICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogKgogKiBJbmNs
dWRlcyBTaXp6bGUuanMKICogaHR0cDovL3NpenpsZWpzLmNvbS8KICogQ29weXJp
Z2h0IDIwMTAsIFRoZSBEb2pvIEZvdW5kYXRpb24KICogUmVsZWFzZWQgdW5kZXIg
dGhlIE1JVCwgQlNELCBhbmQgR1BMIExpY2Vuc2VzLgogKgogKiBEYXRlOiBTYXQg
RmViIDEzIDIyOjMzOjQ4IDIwMTAgLTA1MDAKICovCihmdW5jdGlvbihBLHcpe2Z1
bmN0aW9uIG1hKCl7aWYoIWMuaXNSZWFkeSl7dHJ5e3MuZG9jdW1lbnRFbGVtZW50
LmRvU2Nyb2xsKCJsZWZ0Iil9Y2F0Y2goYSl7c2V0VGltZW91dChtYSwxKTtyZXR1
cm59Yy5yZWFkeSgpfX1mdW5jdGlvbiBRYShhLGIpe2Iuc3JjP2MuYWpheCh7dXJs
OmIuc3JjLGFzeW5jOmZhbHNlLGRhdGFUeXBlOiJzY3JpcHQifSk6Yy5nbG9iYWxF
dmFsKGIudGV4dHx8Yi50ZXh0Q29udGVudHx8Yi5pbm5lckhUTUx8fCIiKTtiLnBh
cmVudE5vZGUmJmIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKX1mdW5jdGlvbiBY
KGEsYixkLGYsZSxqKXt2YXIgaT1hLmxlbmd0aDtpZih0eXBlb2YgYj09PSJvYmpl
Y3QiKXtmb3IodmFyIG8gaW4gYilYKGEsbyxiW29dLGYsZSxkKTtyZXR1cm4gYX1p
ZihkIT09dyl7Zj0haiYmZiYmYy5pc0Z1bmN0aW9uKGQpO2ZvcihvPTA7bzxpO28r
KyllKGFbb10sYixmP2QuY2FsbChhW29dLG8sZShhW29dLGIpKTpkLGopO3JldHVy
biBhfXJldHVybiBpPwplKGFbMF0sYik6d31mdW5jdGlvbiBKKCl7cmV0dXJuKG5l
dyBEYXRlKS5nZXRUaW1lKCl9ZnVuY3Rpb24gWSgpe3JldHVybiBmYWxzZX1mdW5j
dGlvbiBaKCl7cmV0dXJuIHRydWV9ZnVuY3Rpb24gbmEoYSxiLGQpe2RbMF0udHlw
ZT1hO3JldHVybiBjLmV2ZW50LmhhbmRsZS5hcHBseShiLGQpfWZ1bmN0aW9uIG9h
KGEpe3ZhciBiLGQ9W10sZj1bXSxlPWFyZ3VtZW50cyxqLGksbyxrLG4scjtpPWMu
ZGF0YSh0aGlzLCJldmVudHMiKTtpZighKGEubGl2ZUZpcmVkPT09dGhpc3x8IWl8
fCFpLmxpdmV8fGEuYnV0dG9uJiZhLnR5cGU9PT0iY2xpY2siKSl7YS5saXZlRmly
ZWQ9dGhpczt2YXIgdT1pLmxpdmUuc2xpY2UoMCk7Zm9yKGs9MDtrPHUubGVuZ3Ro
O2srKyl7aT11W2tdO2kub3JpZ1R5cGUucmVwbGFjZShPLCIiKT09PWEudHlwZT9m
LnB1c2goaS5zZWxlY3Rvcik6dS5zcGxpY2Uoay0tLDEpfWo9YyhhLnRhcmdldCku
Y2xvc2VzdChmLGEuY3VycmVudFRhcmdldCk7bj0wO2ZvcihyPQpqLmxlbmd0aDtu
PHI7bisrKWZvcihrPTA7azx1Lmxlbmd0aDtrKyspe2k9dVtrXTtpZihqW25dLnNl
bGVjdG9yPT09aS5zZWxlY3Rvcil7bz1qW25dLmVsZW07Zj1udWxsO2lmKGkucHJl
VHlwZT09PSJtb3VzZWVudGVyInx8aS5wcmVUeXBlPT09Im1vdXNlbGVhdmUiKWY9
YyhhLnJlbGF0ZWRUYXJnZXQpLmNsb3Nlc3QoaS5zZWxlY3RvcilbMF07aWYoIWZ8
fGYhPT1vKWQucHVzaCh7ZWxlbTpvLGhhbmRsZU9iajppfSl9fW49MDtmb3Iocj1k
Lmxlbmd0aDtuPHI7bisrKXtqPWRbbl07YS5jdXJyZW50VGFyZ2V0PWouZWxlbTth
LmRhdGE9ai5oYW5kbGVPYmouZGF0YTthLmhhbmRsZU9iaj1qLmhhbmRsZU9iajtp
ZihqLmhhbmRsZU9iai5vcmlnSGFuZGxlci5hcHBseShqLmVsZW0sZSk9PT1mYWxz
ZSl7Yj1mYWxzZTticmVha319cmV0dXJuIGJ9fWZ1bmN0aW9uIHBhKGEsYil7cmV0
dXJuImxpdmUuIisoYSYmYSE9PSIqIj9hKyIuIjoiIikrYi5yZXBsYWNlKC9cLi9n
LCJgIikucmVwbGFjZSgvIC9nLAoiJiIpfWZ1bmN0aW9uIHFhKGEpe3JldHVybiFh
fHwhYS5wYXJlbnROb2RlfHxhLnBhcmVudE5vZGUubm9kZVR5cGU9PT0xMX1mdW5j
dGlvbiByYShhLGIpe3ZhciBkPTA7Yi5lYWNoKGZ1bmN0aW9uKCl7aWYodGhpcy5u
b2RlTmFtZT09PShhW2RdJiZhW2RdLm5vZGVOYW1lKSl7dmFyIGY9Yy5kYXRhKGFb
ZCsrXSksZT1jLmRhdGEodGhpcyxmKTtpZihmPWYmJmYuZXZlbnRzKXtkZWxldGUg
ZS5oYW5kbGU7ZS5ldmVudHM9e307Zm9yKHZhciBqIGluIGYpZm9yKHZhciBpIGlu
IGZbal0pYy5ldmVudC5hZGQodGhpcyxqLGZbal1baV0sZltqXVtpXS5kYXRhKX19
fSl9ZnVuY3Rpb24gc2EoYSxiLGQpe3ZhciBmLGUsajtiPWImJmJbMF0/YlswXS5v
d25lckRvY3VtZW50fHxiWzBdOnM7aWYoYS5sZW5ndGg9PT0xJiZ0eXBlb2YgYVsw
XT09PSJzdHJpbmciJiZhWzBdLmxlbmd0aDw1MTImJmI9PT1zJiYhdGEudGVzdChh
WzBdKSYmKGMuc3VwcG9ydC5jaGVja0Nsb25lfHwhdWEudGVzdChhWzBdKSkpe2U9
CnRydWU7aWYoaj1jLmZyYWdtZW50c1thWzBdXSlpZihqIT09MSlmPWp9aWYoIWYp
e2Y9Yi5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Yy5jbGVhbihhLGIsZixkKX1p
ZihlKWMuZnJhZ21lbnRzW2FbMF1dPWo/ZjoxO3JldHVybntmcmFnbWVudDpmLGNh
Y2hlYWJsZTplfX1mdW5jdGlvbiBLKGEsYil7dmFyIGQ9e307Yy5lYWNoKHZhLmNv
bmNhdC5hcHBseShbXSx2YS5zbGljZSgwLGIpKSxmdW5jdGlvbigpe2RbdGhpc109
YX0pO3JldHVybiBkfWZ1bmN0aW9uIHdhKGEpe3JldHVybiJzY3JvbGxUbyJpbiBh
JiZhLmRvY3VtZW50P2E6YS5ub2RlVHlwZT09PTk/YS5kZWZhdWx0Vmlld3x8YS5w
YXJlbnRXaW5kb3c6ZmFsc2V9dmFyIGM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3
IGMuZm4uaW5pdChhLGIpfSxSYT1BLmpRdWVyeSxTYT1BLiQscz1BLmRvY3VtZW50
LFQsVGE9L15bXjxdKig8W1x3XFddKz4pW14+XSokfF4jKFtcdy1dKykkLyxVYT0v
Xi5bXjojXFtcLixdKiQvLFZhPS9cUy8sCldhPS9eKFxzfFx1MDBBMCkrfChcc3xc
dTAwQTApKyQvZyxYYT0vXjwoXHcrKVxzKlwvPz4oPzo8XC9cMT4pPyQvLFA9bmF2
aWdhdG9yLnVzZXJBZ2VudCx4YT1mYWxzZSxRPVtdLEwsJD1PYmplY3QucHJvdG90
eXBlLnRvU3RyaW5nLGFhPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHks
YmE9QXJyYXkucHJvdG90eXBlLnB1c2gsUj1BcnJheS5wcm90b3R5cGUuc2xpY2Us
eWE9QXJyYXkucHJvdG90eXBlLmluZGV4T2Y7Yy5mbj1jLnByb3RvdHlwZT17aW5p
dDpmdW5jdGlvbihhLGIpe3ZhciBkLGY7aWYoIWEpcmV0dXJuIHRoaXM7aWYoYS5u
b2RlVHlwZSl7dGhpcy5jb250ZXh0PXRoaXNbMF09YTt0aGlzLmxlbmd0aD0xO3Jl
dHVybiB0aGlzfWlmKGE9PT0iYm9keSImJiFiKXt0aGlzLmNvbnRleHQ9czt0aGlz
WzBdPXMuYm9keTt0aGlzLnNlbGVjdG9yPSJib2R5Ijt0aGlzLmxlbmd0aD0xO3Jl
dHVybiB0aGlzfWlmKHR5cGVvZiBhPT09InN0cmluZyIpaWYoKGQ9VGEuZXhlYyhh
KSkmJgooZFsxXXx8IWIpKWlmKGRbMV0pe2Y9Yj9iLm93bmVyRG9jdW1lbnR8fGI6
cztpZihhPVhhLmV4ZWMoYSkpaWYoYy5pc1BsYWluT2JqZWN0KGIpKXthPVtzLmNy
ZWF0ZUVsZW1lbnQoYVsxXSldO2MuZm4uYXR0ci5jYWxsKGEsYix0cnVlKX1lbHNl
IGE9W2YuY3JlYXRlRWxlbWVudChhWzFdKV07ZWxzZXthPXNhKFtkWzFdXSxbZl0p
O2E9KGEuY2FjaGVhYmxlP2EuZnJhZ21lbnQuY2xvbmVOb2RlKHRydWUpOmEuZnJh
Z21lbnQpLmNoaWxkTm9kZXN9cmV0dXJuIGMubWVyZ2UodGhpcyxhKX1lbHNle2lm
KGI9cy5nZXRFbGVtZW50QnlJZChkWzJdKSl7aWYoYi5pZCE9PWRbMl0pcmV0dXJu
IFQuZmluZChhKTt0aGlzLmxlbmd0aD0xO3RoaXNbMF09Yn10aGlzLmNvbnRleHQ9
czt0aGlzLnNlbGVjdG9yPWE7cmV0dXJuIHRoaXN9ZWxzZSBpZighYiYmL15cdysk
Ly50ZXN0KGEpKXt0aGlzLnNlbGVjdG9yPWE7dGhpcy5jb250ZXh0PXM7YT1zLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKGEpO3JldHVybiBjLm1lcmdlKHRoaXMsCmEpfWVs
c2UgcmV0dXJuIWJ8fGIuanF1ZXJ5PyhifHxUKS5maW5kKGEpOmMoYikuZmluZChh
KTtlbHNlIGlmKGMuaXNGdW5jdGlvbihhKSlyZXR1cm4gVC5yZWFkeShhKTtpZihh
LnNlbGVjdG9yIT09dyl7dGhpcy5zZWxlY3Rvcj1hLnNlbGVjdG9yO3RoaXMuY29u
dGV4dD1hLmNvbnRleHR9cmV0dXJuIGMubWFrZUFycmF5KGEsdGhpcyl9LHNlbGVj
dG9yOiIiLGpxdWVyeToiMS40LjIiLGxlbmd0aDowLHNpemU6ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5sZW5ndGh9LHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gUi5j
YWxsKHRoaXMsMCl9LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD90aGlz
LnRvQXJyYXkoKTphPDA/dGhpcy5zbGljZShhKVswXTp0aGlzW2FdfSxwdXNoU3Rh
Y2s6ZnVuY3Rpb24oYSxiLGQpe3ZhciBmPWMoKTtjLmlzQXJyYXkoYSk/YmEuYXBw
bHkoZixhKTpjLm1lcmdlKGYsYSk7Zi5wcmV2T2JqZWN0PXRoaXM7Zi5jb250ZXh0
PXRoaXMuY29udGV4dDtpZihiPT09CiJmaW5kIilmLnNlbGVjdG9yPXRoaXMuc2Vs
ZWN0b3IrKHRoaXMuc2VsZWN0b3I/IiAiOiIiKStkO2Vsc2UgaWYoYilmLnNlbGVj
dG9yPXRoaXMuc2VsZWN0b3IrIi4iK2IrIigiK2QrIikiO3JldHVybiBmfSxlYWNo
OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGMuZWFjaCh0aGlzLGEsYil9LHJlYWR5OmZ1
bmN0aW9uKGEpe2MuYmluZFJlYWR5KCk7aWYoYy5pc1JlYWR5KWEuY2FsbChzLGMp
O2Vsc2UgUSYmUS5wdXNoKGEpO3JldHVybiB0aGlzfSxlcTpmdW5jdGlvbihhKXty
ZXR1cm4gYT09PS0xP3RoaXMuc2xpY2UoYSk6dGhpcy5zbGljZShhLCthKzEpfSxm
aXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0
aGlzLnB1c2hTdGFjayhSLmFwcGx5KHRoaXMsYXJndW1lbnRzKSwic2xpY2UiLFIu
Y2FsbChhcmd1bWVudHMpLmpvaW4oIiwiKSl9LG1hcDpmdW5jdGlvbihhKXtyZXR1
cm4gdGhpcy5wdXNoU3RhY2soYy5tYXAodGhpcywKZnVuY3Rpb24oYixkKXtyZXR1
cm4gYS5jYWxsKGIsZCxiKX0pKX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
cHJldk9iamVjdHx8YyhudWxsKX0scHVzaDpiYSxzb3J0OltdLnNvcnQsc3BsaWNl
OltdLnNwbGljZX07Yy5mbi5pbml0LnByb3RvdHlwZT1jLmZuO2MuZXh0ZW5kPWMu
Zm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzWzBdfHx7fSxiPTEs
ZD1hcmd1bWVudHMubGVuZ3RoLGY9ZmFsc2UsZSxqLGksbztpZih0eXBlb2YgYT09
PSJib29sZWFuIil7Zj1hO2E9YXJndW1lbnRzWzFdfHx7fTtiPTJ9aWYodHlwZW9m
IGEhPT0ib2JqZWN0IiYmIWMuaXNGdW5jdGlvbihhKSlhPXt9O2lmKGQ9PT1iKXth
PXRoaXM7LS1ifWZvcig7YjxkO2IrKylpZigoZT1hcmd1bWVudHNbYl0pIT1udWxs
KWZvcihqIGluIGUpe2k9YVtqXTtvPWVbal07aWYoYSE9PW8paWYoZiYmbyYmKGMu
aXNQbGFpbk9iamVjdChvKXx8Yy5pc0FycmF5KG8pKSl7aT1pJiYoYy5pc1BsYWlu
T2JqZWN0KGkpfHwKYy5pc0FycmF5KGkpKT9pOmMuaXNBcnJheShvKT9bXTp7fTth
W2pdPWMuZXh0ZW5kKGYsaSxvKX1lbHNlIGlmKG8hPT13KWFbal09b31yZXR1cm4g
YX07Yy5leHRlbmQoe25vQ29uZmxpY3Q6ZnVuY3Rpb24oYSl7QS4kPVNhO2lmKGEp
QS5qUXVlcnk9UmE7cmV0dXJuIGN9LGlzUmVhZHk6ZmFsc2UscmVhZHk6ZnVuY3Rp
b24oKXtpZighYy5pc1JlYWR5KXtpZighcy5ib2R5KXJldHVybiBzZXRUaW1lb3V0
KGMucmVhZHksMTMpO2MuaXNSZWFkeT10cnVlO2lmKFEpe2Zvcih2YXIgYSxiPTA7
YT1RW2IrK107KWEuY2FsbChzLGMpO1E9bnVsbH1jLmZuLnRyaWdnZXJIYW5kbGVy
JiZjKHMpLnRyaWdnZXJIYW5kbGVyKCJyZWFkeSIpfX0sYmluZFJlYWR5OmZ1bmN0
aW9uKCl7aWYoIXhhKXt4YT10cnVlO2lmKHMucmVhZHlTdGF0ZT09PSJjb21wbGV0
ZSIpcmV0dXJuIGMucmVhZHkoKTtpZihzLmFkZEV2ZW50TGlzdGVuZXIpe3MuYWRk
RXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsCkwsZmFsc2UpO0EuYWRk
RXZlbnRMaXN0ZW5lcigibG9hZCIsYy5yZWFkeSxmYWxzZSl9ZWxzZSBpZihzLmF0
dGFjaEV2ZW50KXtzLmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLEwp
O0EuYXR0YWNoRXZlbnQoIm9ubG9hZCIsYy5yZWFkeSk7dmFyIGE9ZmFsc2U7dHJ5
e2E9QS5mcmFtZUVsZW1lbnQ9PW51bGx9Y2F0Y2goYil7fXMuZG9jdW1lbnRFbGVt
ZW50LmRvU2Nyb2xsJiZhJiZtYSgpfX19LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7
cmV0dXJuICQuY2FsbChhKT09PSJbb2JqZWN0IEZ1bmN0aW9uXSJ9LGlzQXJyYXk6
ZnVuY3Rpb24oYSl7cmV0dXJuICQuY2FsbChhKT09PSJbb2JqZWN0IEFycmF5XSJ9
LGlzUGxhaW5PYmplY3Q6ZnVuY3Rpb24oYSl7aWYoIWF8fCQuY2FsbChhKSE9PSJb
b2JqZWN0IE9iamVjdF0ifHxhLm5vZGVUeXBlfHxhLnNldEludGVydmFsKXJldHVy
biBmYWxzZTtpZihhLmNvbnN0cnVjdG9yJiYhYWEuY2FsbChhLCJjb25zdHJ1Y3Rv
ciIpJiYhYWEuY2FsbChhLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwKImlzUHJvdG90
eXBlT2YiKSlyZXR1cm4gZmFsc2U7dmFyIGI7Zm9yKGIgaW4gYSk7cmV0dXJuIGI9
PT13fHxhYS5jYWxsKGEsYil9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oYSl7Zm9y
KHZhciBiIGluIGEpcmV0dXJuIGZhbHNlO3JldHVybiB0cnVlfSxlcnJvcjpmdW5j
dGlvbihhKXt0aHJvdyBhO30scGFyc2VKU09OOmZ1bmN0aW9uKGEpe2lmKHR5cGVv
ZiBhIT09InN0cmluZyJ8fCFhKXJldHVybiBudWxsO2E9Yy50cmltKGEpO2lmKC9e
W1xdLDp7fVxzXSokLy50ZXN0KGEucmVwbGFjZSgvXFwoPzpbIlxcXC9iZm5ydF18
dVswLTlhLWZBLUZdezR9KS9nLCJAIikucmVwbGFjZSgvIlteIlxcXG5ccl0qInx0
cnVlfGZhbHNlfG51bGx8LT9cZCsoPzpcLlxkKik/KD86W2VFXVsrXC1dP1xkKyk/
L2csIl0iKS5yZXBsYWNlKC8oPzpefDp8LCkoPzpccypcWykrL2csIiIpKSlyZXR1
cm4gQS5KU09OJiZBLkpTT04ucGFyc2U/QS5KU09OLnBhcnNlKGEpOihuZXcgRnVu
Y3Rpb24oInJldHVybiAiKwphKSkoKTtlbHNlIGMuZXJyb3IoIkludmFsaWQgSlNP
TjogIithKX0sbm9vcDpmdW5jdGlvbigpe30sZ2xvYmFsRXZhbDpmdW5jdGlvbihh
KXtpZihhJiZWYS50ZXN0KGEpKXt2YXIgYj1zLmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJoZWFkIilbMF18fHMuZG9jdW1lbnRFbGVtZW50LGQ9cy5jcmVhdGVFbGVtZW50
KCJzY3JpcHQiKTtkLnR5cGU9InRleHQvamF2YXNjcmlwdCI7aWYoYy5zdXBwb3J0
LnNjcmlwdEV2YWwpZC5hcHBlbmRDaGlsZChzLmNyZWF0ZVRleHROb2RlKGEpKTtl
bHNlIGQudGV4dD1hO2IuaW5zZXJ0QmVmb3JlKGQsYi5maXJzdENoaWxkKTtiLnJl
bW92ZUNoaWxkKGQpfX0sbm9kZU5hbWU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5u
b2RlTmFtZSYmYS5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpPT09Yi50b1VwcGVyQ2Fz
ZSgpfSxlYWNoOmZ1bmN0aW9uKGEsYixkKXt2YXIgZixlPTAsaj1hLmxlbmd0aCxp
PWo9PT13fHxjLmlzRnVuY3Rpb24oYSk7aWYoZClpZihpKWZvcihmIGluIGEpe2lm
KGIuYXBwbHkoYVtmXSwKZCk9PT1mYWxzZSlicmVha31lbHNlIGZvcig7ZTxqOyl7
aWYoYi5hcHBseShhW2UrK10sZCk9PT1mYWxzZSlicmVha31lbHNlIGlmKGkpZm9y
KGYgaW4gYSl7aWYoYi5jYWxsKGFbZl0sZixhW2ZdKT09PWZhbHNlKWJyZWFrfWVs
c2UgZm9yKGQ9YVswXTtlPGomJmIuY2FsbChkLGUsZCkhPT1mYWxzZTtkPWFbKytl
XSk7cmV0dXJuIGF9LHRyaW06ZnVuY3Rpb24oYSl7cmV0dXJuKGF8fCIiKS5yZXBs
YWNlKFdhLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGEsYil7Yj1ifHxbXTtpZihh
IT1udWxsKWEubGVuZ3RoPT1udWxsfHx0eXBlb2YgYT09PSJzdHJpbmcifHxjLmlz
RnVuY3Rpb24oYSl8fHR5cGVvZiBhIT09ImZ1bmN0aW9uIiYmYS5zZXRJbnRlcnZh
bD9iYS5jYWxsKGIsYSk6Yy5tZXJnZShiLGEpO3JldHVybiBifSxpbkFycmF5OmZ1
bmN0aW9uKGEsYil7aWYoYi5pbmRleE9mKXJldHVybiBiLmluZGV4T2YoYSk7Zm9y
KHZhciBkPTAsZj1iLmxlbmd0aDtkPGY7ZCsrKWlmKGJbZF09PT0KYSlyZXR1cm4g
ZDtyZXR1cm4tMX0sbWVyZ2U6ZnVuY3Rpb24oYSxiKXt2YXIgZD1hLmxlbmd0aCxm
PTA7aWYodHlwZW9mIGIubGVuZ3RoPT09Im51bWJlciIpZm9yKHZhciBlPWIubGVu
Z3RoO2Y8ZTtmKyspYVtkKytdPWJbZl07ZWxzZSBmb3IoO2JbZl0hPT13OylhW2Qr
K109YltmKytdO2EubGVuZ3RoPWQ7cmV0dXJuIGF9LGdyZXA6ZnVuY3Rpb24oYSxi
LGQpe2Zvcih2YXIgZj1bXSxlPTAsaj1hLmxlbmd0aDtlPGo7ZSsrKSFkIT09IWIo
YVtlXSxlKSYmZi5wdXNoKGFbZV0pO3JldHVybiBmfSxtYXA6ZnVuY3Rpb24oYSxi
LGQpe2Zvcih2YXIgZj1bXSxlLGo9MCxpPWEubGVuZ3RoO2o8aTtqKyspe2U9Yihh
W2pdLGosZCk7aWYoZSE9bnVsbClmW2YubGVuZ3RoXT1lfXJldHVybiBmLmNvbmNh
dC5hcHBseShbXSxmKX0sZ3VpZDoxLHByb3h5OmZ1bmN0aW9uKGEsYixkKXtpZihh
cmd1bWVudHMubGVuZ3RoPT09MilpZih0eXBlb2YgYj09PSJzdHJpbmciKXtkPWE7
YT1kW2JdO2I9d31lbHNlIGlmKGImJgohYy5pc0Z1bmN0aW9uKGIpKXtkPWI7Yj13
fWlmKCFiJiZhKWI9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShkfHx0aGlzLGFy
Z3VtZW50cyl9O2lmKGEpYi5ndWlkPWEuZ3VpZD1hLmd1aWR8fGIuZ3VpZHx8Yy5n
dWlkKys7cmV0dXJuIGJ9LHVhTWF0Y2g6ZnVuY3Rpb24oYSl7YT1hLnRvTG93ZXJD
YXNlKCk7YT0vKHdlYmtpdClbIFwvXShbXHcuXSspLy5leGVjKGEpfHwvKG9wZXJh
KSg/Oi4qdmVyc2lvbik/WyBcL10oW1x3Ll0rKS8uZXhlYyhhKXx8Lyhtc2llKSAo
W1x3Ll0rKS8uZXhlYyhhKXx8IS9jb21wYXRpYmxlLy50ZXN0KGEpJiYvKG1vemls
bGEpKD86Lio/IHJ2OihbXHcuXSspKT8vLmV4ZWMoYSl8fFtdO3JldHVybnticm93
c2VyOmFbMV18fCIiLHZlcnNpb246YVsyXXx8IjAifX0sYnJvd3Nlcjp7fX0pO1A9
Yy51YU1hdGNoKFApO2lmKFAuYnJvd3Nlcil7Yy5icm93c2VyW1AuYnJvd3Nlcl09
dHJ1ZTtjLmJyb3dzZXIudmVyc2lvbj1QLnZlcnNpb259aWYoYy5icm93c2VyLndl
YmtpdCljLmJyb3dzZXIuc2FmYXJpPQp0cnVlO2lmKHlhKWMuaW5BcnJheT1mdW5j
dGlvbihhLGIpe3JldHVybiB5YS5jYWxsKGIsYSl9O1Q9YyhzKTtpZihzLmFkZEV2
ZW50TGlzdGVuZXIpTD1mdW5jdGlvbigpe3MucmVtb3ZlRXZlbnRMaXN0ZW5lcigi
RE9NQ29udGVudExvYWRlZCIsTCxmYWxzZSk7Yy5yZWFkeSgpfTtlbHNlIGlmKHMu
YXR0YWNoRXZlbnQpTD1mdW5jdGlvbigpe2lmKHMucmVhZHlTdGF0ZT09PSJjb21w
bGV0ZSIpe3MuZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsTCk7Yy5y
ZWFkeSgpfX07KGZ1bmN0aW9uKCl7Yy5zdXBwb3J0PXt9O3ZhciBhPXMuZG9jdW1l
bnRFbGVtZW50LGI9cy5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxkPXMuY3JlYXRl
RWxlbWVudCgiZGl2IiksZj0ic2NyaXB0IitKKCk7ZC5zdHlsZS5kaXNwbGF5PSJu
b25lIjtkLmlubmVySFRNTD0iICAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhy
ZWY9Jy9hJyBzdHlsZT0nY29sb3I6cmVkO2Zsb2F0OmxlZnQ7b3BhY2l0eTouNTU7
Jz5hPC9hPjxpbnB1dCB0eXBlPSdjaGVja2JveCcvPiI7CnZhciBlPWQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoIioiKSxqPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEi
KVswXTtpZighKCFlfHwhZS5sZW5ndGh8fCFqKSl7Yy5zdXBwb3J0PXtsZWFkaW5n
V2hpdGVzcGFjZTpkLmZpcnN0Q2hpbGQubm9kZVR5cGU9PT0zLHRib2R5OiFkLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpLmxlbmd0aCxodG1sU2VyaWFsaXpl
OiEhZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxzdHlsZTov
cmVkLy50ZXN0KGouZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxocmVmTm9ybWFsaXpl
ZDpqLmdldEF0dHJpYnV0ZSgiaHJlZiIpPT09Ii9hIixvcGFjaXR5Oi9eMC41NSQv
LnRlc3Qoai5zdHlsZS5vcGFjaXR5KSxjc3NGbG9hdDohIWouc3R5bGUuY3NzRmxv
YXQsY2hlY2tPbjpkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdLnZh
bHVlPT09Im9uIixvcHRTZWxlY3RlZDpzLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIp
LmFwcGVuZENoaWxkKHMuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLnNlbGVjdGVk
LApwYXJlbnROb2RlOmQucmVtb3ZlQ2hpbGQoZC5hcHBlbmRDaGlsZChzLmNyZWF0
ZUVsZW1lbnQoImRpdiIpKSkucGFyZW50Tm9kZT09PW51bGwsZGVsZXRlRXhwYW5k
bzp0cnVlLGNoZWNrQ2xvbmU6ZmFsc2Usc2NyaXB0RXZhbDpmYWxzZSxub0Nsb25l
RXZlbnQ6dHJ1ZSxib3hNb2RlbDpudWxsfTtiLnR5cGU9InRleHQvamF2YXNjcmlw
dCI7dHJ5e2IuYXBwZW5kQ2hpbGQocy5jcmVhdGVUZXh0Tm9kZSgid2luZG93LiIr
ZisiPTE7IikpfWNhdGNoKGkpe31hLmluc2VydEJlZm9yZShiLGEuZmlyc3RDaGls
ZCk7aWYoQVtmXSl7Yy5zdXBwb3J0LnNjcmlwdEV2YWw9dHJ1ZTtkZWxldGUgQVtm
XX10cnl7ZGVsZXRlIGIudGVzdH1jYXRjaChvKXtjLnN1cHBvcnQuZGVsZXRlRXhw
YW5kbz1mYWxzZX1hLnJlbW92ZUNoaWxkKGIpO2lmKGQuYXR0YWNoRXZlbnQmJmQu
ZmlyZUV2ZW50KXtkLmF0dGFjaEV2ZW50KCJvbmNsaWNrIixmdW5jdGlvbiBrKCl7
Yy5zdXBwb3J0Lm5vQ2xvbmVFdmVudD0KZmFsc2U7ZC5kZXRhY2hFdmVudCgib25j
bGljayIsayl9KTtkLmNsb25lTm9kZSh0cnVlKS5maXJlRXZlbnQoIm9uY2xpY2si
KX1kPXMuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZC5pbm5lckhUTUw9IjxpbnB1dCB0
eXBlPSdyYWRpbycgbmFtZT0ncmFkaW90ZXN0JyBjaGVja2VkPSdjaGVja2VkJy8+
IjthPXMuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2EuYXBwZW5kQ2hpbGQoZC5m
aXJzdENoaWxkKTtjLnN1cHBvcnQuY2hlY2tDbG9uZT1hLmNsb25lTm9kZSh0cnVl
KS5jbG9uZU5vZGUodHJ1ZSkubGFzdENoaWxkLmNoZWNrZWQ7YyhmdW5jdGlvbigp
e3ZhciBrPXMuY3JlYXRlRWxlbWVudCgiZGl2Iik7ay5zdHlsZS53aWR0aD1rLnN0
eWxlLnBhZGRpbmdMZWZ0PSIxcHgiO3MuYm9keS5hcHBlbmRDaGlsZChrKTtjLmJv
eE1vZGVsPWMuc3VwcG9ydC5ib3hNb2RlbD1rLm9mZnNldFdpZHRoPT09MjtzLmJv
ZHkucmVtb3ZlQ2hpbGQoaykuc3R5bGUuZGlzcGxheT0ibm9uZSJ9KTthPWZ1bmN0
aW9uKGspe3ZhciBuPQpzLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2s9Im9uIitrO3Zh
ciByPWsgaW4gbjtpZighcil7bi5zZXRBdHRyaWJ1dGUoaywicmV0dXJuOyIpO3I9
dHlwZW9mIG5ba109PT0iZnVuY3Rpb24ifXJldHVybiByfTtjLnN1cHBvcnQuc3Vi
bWl0QnViYmxlcz1hKCJzdWJtaXQiKTtjLnN1cHBvcnQuY2hhbmdlQnViYmxlcz1h
KCJjaGFuZ2UiKTthPWI9ZD1lPWo9bnVsbH19KSgpO2MucHJvcHM9eyJmb3IiOiJo
dG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUiLHJlYWRvbmx5OiJyZWFkT25seSIs
bWF4bGVuZ3RoOiJtYXhMZW5ndGgiLGNlbGxzcGFjaW5nOiJjZWxsU3BhY2luZyIs
cm93c3Bhbjoicm93U3BhbiIsY29sc3BhbjoiY29sU3BhbiIsdGFiaW5kZXg6InRh
YkluZGV4Iix1c2VtYXA6InVzZU1hcCIsZnJhbWVib3JkZXI6ImZyYW1lQm9yZGVy
In07dmFyIEc9ImpRdWVyeSIrSigpLFlhPTAsemE9e307Yy5leHRlbmQoe2NhY2hl
Ont9LGV4cGFuZG86Ryxub0RhdGE6e2VtYmVkOnRydWUsb2JqZWN0OnRydWUsCmFw
cGxldDp0cnVlfSxkYXRhOmZ1bmN0aW9uKGEsYixkKXtpZighKGEubm9kZU5hbWUm
JmMubm9EYXRhW2Eubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pKXthPWE9PUE/emE6
YTt2YXIgZj1hW0ddLGU9Yy5jYWNoZTtpZighZiYmdHlwZW9mIGI9PT0ic3RyaW5n
IiYmZD09PXcpcmV0dXJuIG51bGw7Znx8KGY9KytZYSk7aWYodHlwZW9mIGI9PT0i
b2JqZWN0Iil7YVtHXT1mO2VbZl09Yy5leHRlbmQodHJ1ZSx7fSxiKX1lbHNlIGlm
KCFlW2ZdKXthW0ddPWY7ZVtmXT17fX1hPWVbZl07aWYoZCE9PXcpYVtiXT1kO3Jl
dHVybiB0eXBlb2YgYj09PSJzdHJpbmciP2FbYl06YX19LHJlbW92ZURhdGE6ZnVu
Y3Rpb24oYSxiKXtpZighKGEubm9kZU5hbWUmJmMubm9EYXRhW2Eubm9kZU5hbWUu
dG9Mb3dlckNhc2UoKV0pKXthPWE9PUE/emE6YTt2YXIgZD1hW0ddLGY9Yy5jYWNo
ZSxlPWZbZF07aWYoYil7aWYoZSl7ZGVsZXRlIGVbYl07Yy5pc0VtcHR5T2JqZWN0
KGUpJiZjLnJlbW92ZURhdGEoYSl9fWVsc2V7aWYoYy5zdXBwb3J0LmRlbGV0ZUV4
cGFuZG8pZGVsZXRlIGFbYy5leHBhbmRvXTsKZWxzZSBhLnJlbW92ZUF0dHJpYnV0
ZSYmYS5yZW1vdmVBdHRyaWJ1dGUoYy5leHBhbmRvKTtkZWxldGUgZltkXX19fX0p
O2MuZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsYil7aWYodHlwZW9mIGE9PT0i
dW5kZWZpbmVkIiYmdGhpcy5sZW5ndGgpcmV0dXJuIGMuZGF0YSh0aGlzWzBdKTtl
bHNlIGlmKHR5cGVvZiBhPT09Im9iamVjdCIpcmV0dXJuIHRoaXMuZWFjaChmdW5j
dGlvbigpe2MuZGF0YSh0aGlzLGEpfSk7dmFyIGQ9YS5zcGxpdCgiLiIpO2RbMV09
ZFsxXT8iLiIrZFsxXToiIjtpZihiPT09dyl7dmFyIGY9dGhpcy50cmlnZ2VySGFu
ZGxlcigiZ2V0RGF0YSIrZFsxXSsiISIsW2RbMF1dKTtpZihmPT09dyYmdGhpcy5s
ZW5ndGgpZj1jLmRhdGEodGhpc1swXSxhKTtyZXR1cm4gZj09PXcmJmRbMV0/dGhp
cy5kYXRhKGRbMF0pOmZ9ZWxzZSByZXR1cm4gdGhpcy50cmlnZ2VyKCJzZXREYXRh
IitkWzFdKyIhIixbZFswXSxiXSkuZWFjaChmdW5jdGlvbigpe2MuZGF0YSh0aGlz
LAphLGIpfSl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFj
aChmdW5jdGlvbigpe2MucmVtb3ZlRGF0YSh0aGlzLGEpfSl9fSk7Yy5leHRlbmQo
e3F1ZXVlOmZ1bmN0aW9uKGEsYixkKXtpZihhKXtiPShifHwiZngiKSsicXVldWUi
O3ZhciBmPWMuZGF0YShhLGIpO2lmKCFkKXJldHVybiBmfHxbXTtpZighZnx8Yy5p
c0FycmF5KGQpKWY9Yy5kYXRhKGEsYixjLm1ha2VBcnJheShkKSk7ZWxzZSBmLnB1
c2goZCk7cmV0dXJuIGZ9fSxkZXF1ZXVlOmZ1bmN0aW9uKGEsYil7Yj1ifHwiZngi
O3ZhciBkPWMucXVldWUoYSxiKSxmPWQuc2hpZnQoKTtpZihmPT09ImlucHJvZ3Jl
c3MiKWY9ZC5zaGlmdCgpO2lmKGYpe2I9PT0iZngiJiZkLnVuc2hpZnQoImlucHJv
Z3Jlc3MiKTtmLmNhbGwoYSxmdW5jdGlvbigpe2MuZGVxdWV1ZShhLGIpfSl9fX0p
O2MuZm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBhIT09
InN0cmluZyIpe2I9YTthPSJmeCJ9aWYoYj09PQp3KXJldHVybiBjLnF1ZXVlKHRo
aXNbMF0sYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWMucXVl
dWUodGhpcyxhLGIpO2E9PT0iZngiJiZkWzBdIT09ImlucHJvZ3Jlc3MiJiZjLmRl
cXVldWUodGhpcyxhKX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlz
LmVhY2goZnVuY3Rpb24oKXtjLmRlcXVldWUodGhpcyxhKX0pfSxkZWxheTpmdW5j
dGlvbihhLGIpe2E9Yy5meD9jLmZ4LnNwZWVkc1thXXx8YTphO2I9Ynx8ImZ4Ijty
ZXR1cm4gdGhpcy5xdWV1ZShiLGZ1bmN0aW9uKCl7dmFyIGQ9dGhpcztzZXRUaW1l
b3V0KGZ1bmN0aW9uKCl7Yy5kZXF1ZXVlKGQsYil9LGEpfSl9LGNsZWFyUXVldWU6
ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucXVldWUoYXx8ImZ4IixbXSl9fSk7dmFy
IEFhPS9bXG5cdF0vZyxjYT0vXHMrLyxaYT0vXHIvZywkYT0vaHJlZnxzcmN8c3R5
bGUvLGFiPS8oYnV0dG9ufGlucHV0KS9pLGJiPS8oYnV0dG9ufGlucHV0fG9iamVj
dHxzZWxlY3R8dGV4dGFyZWEpL2ksCmNiPS9eKGF8YXJlYSkkL2ksQmE9L3JhZGlv
fGNoZWNrYm94LztjLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIpe3JldHVy
biBYKHRoaXMsYSxiLHRydWUsYy5hdHRyKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihh
KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Yy5hdHRyKHRoaXMsYSwiIik7
dGhpcy5ub2RlVHlwZT09PTEmJnRoaXMucmVtb3ZlQXR0cmlidXRlKGEpfSl9LGFk
ZENsYXNzOmZ1bmN0aW9uKGEpe2lmKGMuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhp
cy5lYWNoKGZ1bmN0aW9uKG4pe3ZhciByPWModGhpcyk7ci5hZGRDbGFzcyhhLmNh
bGwodGhpcyxuLHIuYXR0cigiY2xhc3MiKSkpfSk7aWYoYSYmdHlwZW9mIGE9PT0i
c3RyaW5nIilmb3IodmFyIGI9KGF8fCIiKS5zcGxpdChjYSksZD0wLGY9dGhpcy5s
ZW5ndGg7ZDxmO2QrKyl7dmFyIGU9dGhpc1tkXTtpZihlLm5vZGVUeXBlPT09MSlp
ZihlLmNsYXNzTmFtZSl7Zm9yKHZhciBqPSIgIitlLmNsYXNzTmFtZSsiICIsCmk9
ZS5jbGFzc05hbWUsbz0wLGs9Yi5sZW5ndGg7bzxrO28rKylpZihqLmluZGV4T2Yo
IiAiK2Jbb10rIiAiKTwwKWkrPSIgIitiW29dO2UuY2xhc3NOYW1lPWMudHJpbShp
KX1lbHNlIGUuY2xhc3NOYW1lPWF9cmV0dXJuIHRoaXN9LHJlbW92ZUNsYXNzOmZ1
bmN0aW9uKGEpe2lmKGMuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1
bmN0aW9uKGspe3ZhciBuPWModGhpcyk7bi5yZW1vdmVDbGFzcyhhLmNhbGwodGhp
cyxrLG4uYXR0cigiY2xhc3MiKSkpfSk7aWYoYSYmdHlwZW9mIGE9PT0ic3RyaW5n
Inx8YT09PXcpZm9yKHZhciBiPShhfHwiIikuc3BsaXQoY2EpLGQ9MCxmPXRoaXMu
bGVuZ3RoO2Q8ZjtkKyspe3ZhciBlPXRoaXNbZF07aWYoZS5ub2RlVHlwZT09PTEm
JmUuY2xhc3NOYW1lKWlmKGEpe2Zvcih2YXIgaj0oIiAiK2UuY2xhc3NOYW1lKyIg
IikucmVwbGFjZShBYSwiICIpLGk9MCxvPWIubGVuZ3RoO2k8bztpKyspaj1qLnJl
cGxhY2UoIiAiK2JbaV0rIiAiLAoiICIpO2UuY2xhc3NOYW1lPWMudHJpbShqKX1l
bHNlIGUuY2xhc3NOYW1lPSIifXJldHVybiB0aGlzfSx0b2dnbGVDbGFzczpmdW5j
dGlvbihhLGIpe3ZhciBkPXR5cGVvZiBhLGY9dHlwZW9mIGI9PT0iYm9vbGVhbiI7
aWYoYy5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oZSl7
dmFyIGo9Yyh0aGlzKTtqLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLGUsai5hdHRy
KCJjbGFzcyIpLGIpLGIpfSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lm
KGQ9PT0ic3RyaW5nIilmb3IodmFyIGUsaj0wLGk9Yyh0aGlzKSxvPWIsaz1hLnNw
bGl0KGNhKTtlPWtbaisrXTspe289Zj9vOiFpLmhhc0NsYXNzKGUpO2lbbz8iYWRk
Q2xhc3MiOiJyZW1vdmVDbGFzcyJdKGUpfWVsc2UgaWYoZD09PSJ1bmRlZmluZWQi
fHxkPT09ImJvb2xlYW4iKXt0aGlzLmNsYXNzTmFtZSYmYy5kYXRhKHRoaXMsIl9f
Y2xhc3NOYW1lX18iLHRoaXMuY2xhc3NOYW1lKTt0aGlzLmNsYXNzTmFtZT0KdGhp
cy5jbGFzc05hbWV8fGE9PT1mYWxzZT8iIjpjLmRhdGEodGhpcywiX19jbGFzc05h
bWVfXyIpfHwiIn19KX0saGFzQ2xhc3M6ZnVuY3Rpb24oYSl7YT0iICIrYSsiICI7
Zm9yKHZhciBiPTAsZD10aGlzLmxlbmd0aDtiPGQ7YisrKWlmKCgiICIrdGhpc1ti
XS5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKEFhLCIgIikuaW5kZXhPZihhKT4tMSly
ZXR1cm4gdHJ1ZTtyZXR1cm4gZmFsc2V9LHZhbDpmdW5jdGlvbihhKXtpZihhPT09
dyl7dmFyIGI9dGhpc1swXTtpZihiKXtpZihjLm5vZGVOYW1lKGIsIm9wdGlvbiIp
KXJldHVybihiLmF0dHJpYnV0ZXMudmFsdWV8fHt9KS5zcGVjaWZpZWQ/Yi52YWx1
ZTpiLnRleHQ7aWYoYy5ub2RlTmFtZShiLCJzZWxlY3QiKSl7dmFyIGQ9Yi5zZWxl
Y3RlZEluZGV4LGY9W10sZT1iLm9wdGlvbnM7Yj1iLnR5cGU9PT0ic2VsZWN0LW9u
ZSI7aWYoZDwwKXJldHVybiBudWxsO3ZhciBqPWI/ZDowO2ZvcihkPWI/ZCsxOmUu
bGVuZ3RoO2o8ZDtqKyspe3ZhciBpPQplW2pdO2lmKGkuc2VsZWN0ZWQpe2E9Yyhp
KS52YWwoKTtpZihiKXJldHVybiBhO2YucHVzaChhKX19cmV0dXJuIGZ9aWYoQmEu
dGVzdChiLnR5cGUpJiYhYy5zdXBwb3J0LmNoZWNrT24pcmV0dXJuIGIuZ2V0QXR0
cmlidXRlKCJ2YWx1ZSIpPT09bnVsbD8ib24iOmIudmFsdWU7cmV0dXJuKGIudmFs
dWV8fCIiKS5yZXBsYWNlKFphLCIiKX1yZXR1cm4gd312YXIgbz1jLmlzRnVuY3Rp
b24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihrKXt2YXIgbj1jKHRoaXMp
LHI9YTtpZih0aGlzLm5vZGVUeXBlPT09MSl7aWYobylyPWEuY2FsbCh0aGlzLGss
bi52YWwoKSk7aWYodHlwZW9mIHI9PT0ibnVtYmVyIilyKz0iIjtpZihjLmlzQXJy
YXkocikmJkJhLnRlc3QodGhpcy50eXBlKSl0aGlzLmNoZWNrZWQ9Yy5pbkFycmF5
KG4udmFsKCkscik+PTA7ZWxzZSBpZihjLm5vZGVOYW1lKHRoaXMsInNlbGVjdCIp
KXt2YXIgdT1jLm1ha2VBcnJheShyKTtjKCJvcHRpb24iLHRoaXMpLmVhY2goZnVu
Y3Rpb24oKXt0aGlzLnNlbGVjdGVkPQpjLmluQXJyYXkoYyh0aGlzKS52YWwoKSx1
KT49MH0pO2lmKCF1Lmxlbmd0aCl0aGlzLnNlbGVjdGVkSW5kZXg9LTF9ZWxzZSB0
aGlzLnZhbHVlPXJ9fSl9fSk7Yy5leHRlbmQoe2F0dHJGbjp7dmFsOnRydWUsY3Nz
OnRydWUsaHRtbDp0cnVlLHRleHQ6dHJ1ZSxkYXRhOnRydWUsd2lkdGg6dHJ1ZSxo
ZWlnaHQ6dHJ1ZSxvZmZzZXQ6dHJ1ZX0sYXR0cjpmdW5jdGlvbihhLGIsZCxmKXtp
ZighYXx8YS5ub2RlVHlwZT09PTN8fGEubm9kZVR5cGU9PT04KXJldHVybiB3O2lm
KGYmJmIgaW4gYy5hdHRyRm4pcmV0dXJuIGMoYSlbYl0oZCk7Zj1hLm5vZGVUeXBl
IT09MXx8IWMuaXNYTUxEb2MoYSk7dmFyIGU9ZCE9PXc7Yj1mJiZjLnByb3BzW2Jd
fHxiO2lmKGEubm9kZVR5cGU9PT0xKXt2YXIgaj0kYS50ZXN0KGIpO2lmKGIgaW4g
YSYmZiYmIWope2lmKGUpe2I9PT0idHlwZSImJmFiLnRlc3QoYS5ub2RlTmFtZSkm
JmEucGFyZW50Tm9kZSYmYy5lcnJvcigidHlwZSBwcm9wZXJ0eSBjYW4ndCBiZSBj
aGFuZ2VkIik7CmFbYl09ZH1pZihjLm5vZGVOYW1lKGEsImZvcm0iKSYmYS5nZXRB
dHRyaWJ1dGVOb2RlKGIpKXJldHVybiBhLmdldEF0dHJpYnV0ZU5vZGUoYikubm9k
ZVZhbHVlO2lmKGI9PT0idGFiSW5kZXgiKXJldHVybihiPWEuZ2V0QXR0cmlidXRl
Tm9kZSgidGFiSW5kZXgiKSkmJmIuc3BlY2lmaWVkP2IudmFsdWU6YmIudGVzdChh
Lm5vZGVOYW1lKXx8Y2IudGVzdChhLm5vZGVOYW1lKSYmYS5ocmVmPzA6dztyZXR1
cm4gYVtiXX1pZighYy5zdXBwb3J0LnN0eWxlJiZmJiZiPT09InN0eWxlIil7aWYo
ZSlhLnN0eWxlLmNzc1RleHQ9IiIrZDtyZXR1cm4gYS5zdHlsZS5jc3NUZXh0fWUm
JmEuc2V0QXR0cmlidXRlKGIsIiIrZCk7YT0hYy5zdXBwb3J0LmhyZWZOb3JtYWxp
emVkJiZmJiZqP2EuZ2V0QXR0cmlidXRlKGIsMik6YS5nZXRBdHRyaWJ1dGUoYik7
cmV0dXJuIGE9PT1udWxsP3c6YX1yZXR1cm4gYy5zdHlsZShhLGIsZCl9fSk7dmFy
IE89L1wuKC4qKSQvLGRiPWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1te
XHdcc1wuXHxgXS9nLApmdW5jdGlvbihiKXtyZXR1cm4iXFwiK2J9KX07Yy5ldmVu
dD17YWRkOmZ1bmN0aW9uKGEsYixkLGYpe2lmKCEoYS5ub2RlVHlwZT09PTN8fGEu
bm9kZVR5cGU9PT04KSl7aWYoYS5zZXRJbnRlcnZhbCYmYSE9PUEmJiFhLmZyYW1l
RWxlbWVudClhPUE7dmFyIGUsajtpZihkLmhhbmRsZXIpe2U9ZDtkPWUuaGFuZGxl
cn1pZighZC5ndWlkKWQuZ3VpZD1jLmd1aWQrKztpZihqPWMuZGF0YShhKSl7dmFy
IGk9ai5ldmVudHM9ai5ldmVudHN8fHt9LG89ai5oYW5kbGU7aWYoIW8pai5oYW5k
bGU9bz1mdW5jdGlvbigpe3JldHVybiB0eXBlb2YgYyE9PSJ1bmRlZmluZWQiJiYh
Yy5ldmVudC50cmlnZ2VyZWQ/Yy5ldmVudC5oYW5kbGUuYXBwbHkoby5lbGVtLGFy
Z3VtZW50cyk6d307by5lbGVtPWE7Yj1iLnNwbGl0KCIgIik7Zm9yKHZhciBrLG49
MCxyO2s9YltuKytdOyl7aj1lP2MuZXh0ZW5kKHt9LGUpOntoYW5kbGVyOmQsZGF0
YTpmfTtpZihrLmluZGV4T2YoIi4iKT4tMSl7cj1rLnNwbGl0KCIuIik7Cms9ci5z
aGlmdCgpO2oubmFtZXNwYWNlPXIuc2xpY2UoMCkuc29ydCgpLmpvaW4oIi4iKX1l
bHNle3I9W107ai5uYW1lc3BhY2U9IiJ9ai50eXBlPWs7ai5ndWlkPWQuZ3VpZDt2
YXIgdT1pW2tdLHo9Yy5ldmVudC5zcGVjaWFsW2tdfHx7fTtpZighdSl7dT1pW2td
PVtdO2lmKCF6LnNldHVwfHx6LnNldHVwLmNhbGwoYSxmLHIsbyk9PT1mYWxzZSlp
ZihhLmFkZEV2ZW50TGlzdGVuZXIpYS5hZGRFdmVudExpc3RlbmVyKGssbyxmYWxz
ZSk7ZWxzZSBhLmF0dGFjaEV2ZW50JiZhLmF0dGFjaEV2ZW50KCJvbiIrayxvKX1p
Zih6LmFkZCl7ei5hZGQuY2FsbChhLGopO2lmKCFqLmhhbmRsZXIuZ3VpZClqLmhh
bmRsZXIuZ3VpZD1kLmd1aWR9dS5wdXNoKGopO2MuZXZlbnQuZ2xvYmFsW2tdPXRy
dWV9YT1udWxsfX19LGdsb2JhbDp7fSxyZW1vdmU6ZnVuY3Rpb24oYSxiLGQsZil7
aWYoIShhLm5vZGVUeXBlPT09M3x8YS5ub2RlVHlwZT09PTgpKXt2YXIgZSxqPTAs
aSxvLGssbixyLHUsej1jLmRhdGEoYSksCkM9eiYmei5ldmVudHM7aWYoeiYmQyl7
aWYoYiYmYi50eXBlKXtkPWIuaGFuZGxlcjtiPWIudHlwZX1pZighYnx8dHlwZW9m
IGI9PT0ic3RyaW5nIiYmYi5jaGFyQXQoMCk9PT0iLiIpe2I9Ynx8IiI7Zm9yKGUg
aW4gQyljLmV2ZW50LnJlbW92ZShhLGUrYil9ZWxzZXtmb3IoYj1iLnNwbGl0KCIg
Iik7ZT1iW2orK107KXtuPWU7aT1lLmluZGV4T2YoIi4iKTwwO289W107aWYoIWkp
e289ZS5zcGxpdCgiLiIpO2U9by5zaGlmdCgpO2s9bmV3IFJlZ0V4cCgiKF58XFwu
KSIrYy5tYXAoby5zbGljZSgwKS5zb3J0KCksZGIpLmpvaW4oIlxcLig/Oi4qXFwu
KT8iKSsiKFxcLnwkKSIpfWlmKHI9Q1tlXSlpZihkKXtuPWMuZXZlbnQuc3BlY2lh
bFtlXXx8e307Zm9yKEI9Znx8MDtCPHIubGVuZ3RoO0IrKyl7dT1yW0JdO2lmKGQu
Z3VpZD09PXUuZ3VpZCl7aWYoaXx8ay50ZXN0KHUubmFtZXNwYWNlKSl7Zj09bnVs
bCYmci5zcGxpY2UoQi0tLDEpO24ucmVtb3ZlJiZuLnJlbW92ZS5jYWxsKGEsdSl9
aWYoZiE9Cm51bGwpYnJlYWt9fWlmKHIubGVuZ3RoPT09MHx8ZiE9bnVsbCYmci5s
ZW5ndGg9PT0xKXtpZighbi50ZWFyZG93bnx8bi50ZWFyZG93bi5jYWxsKGEsbyk9
PT1mYWxzZSlDYShhLGUsei5oYW5kbGUpO2RlbGV0ZSBDW2VdfX1lbHNlIGZvcih2
YXIgQj0wO0I8ci5sZW5ndGg7QisrKXt1PXJbQl07aWYoaXx8ay50ZXN0KHUubmFt
ZXNwYWNlKSl7Yy5ldmVudC5yZW1vdmUoYSxuLHUuaGFuZGxlcixCKTtyLnNwbGlj
ZShCLS0sMSl9fX1pZihjLmlzRW1wdHlPYmplY3QoQykpe2lmKGI9ei5oYW5kbGUp
Yi5lbGVtPW51bGw7ZGVsZXRlIHouZXZlbnRzO2RlbGV0ZSB6LmhhbmRsZTtjLmlz
RW1wdHlPYmplY3QoeikmJmMucmVtb3ZlRGF0YShhKX19fX19LHRyaWdnZXI6ZnVu
Y3Rpb24oYSxiLGQsZil7dmFyIGU9YS50eXBlfHxhO2lmKCFmKXthPXR5cGVvZiBh
PT09Im9iamVjdCI/YVtHXT9hOmMuZXh0ZW5kKGMuRXZlbnQoZSksYSk6Yy5FdmVu
dChlKTtpZihlLmluZGV4T2YoIiEiKT49MCl7YS50eXBlPQplPWUuc2xpY2UoMCwt
MSk7YS5leGNsdXNpdmU9dHJ1ZX1pZighZCl7YS5zdG9wUHJvcGFnYXRpb24oKTtj
LmV2ZW50Lmdsb2JhbFtlXSYmYy5lYWNoKGMuY2FjaGUsZnVuY3Rpb24oKXt0aGlz
LmV2ZW50cyYmdGhpcy5ldmVudHNbZV0mJmMuZXZlbnQudHJpZ2dlcihhLGIsdGhp
cy5oYW5kbGUuZWxlbSl9KX1pZighZHx8ZC5ub2RlVHlwZT09PTN8fGQubm9kZVR5
cGU9PT04KXJldHVybiB3O2EucmVzdWx0PXc7YS50YXJnZXQ9ZDtiPWMubWFrZUFy
cmF5KGIpO2IudW5zaGlmdChhKX1hLmN1cnJlbnRUYXJnZXQ9ZDsoZj1jLmRhdGEo
ZCwiaGFuZGxlIikpJiZmLmFwcGx5KGQsYik7Zj1kLnBhcmVudE5vZGV8fGQub3du
ZXJEb2N1bWVudDt0cnl7aWYoIShkJiZkLm5vZGVOYW1lJiZjLm5vRGF0YVtkLm5v
ZGVOYW1lLnRvTG93ZXJDYXNlKCldKSlpZihkWyJvbiIrZV0mJmRbIm9uIitlXS5h
cHBseShkLGIpPT09ZmFsc2UpYS5yZXN1bHQ9ZmFsc2V9Y2F0Y2goail7fWlmKCFh
LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkmJgpmKWMuZXZlbnQudHJpZ2dlcihhLGIs
Zix0cnVlKTtlbHNlIGlmKCFhLmlzRGVmYXVsdFByZXZlbnRlZCgpKXtmPWEudGFy
Z2V0O3ZhciBpLG89Yy5ub2RlTmFtZShmLCJhIikmJmU9PT0iY2xpY2siLGs9Yy5l
dmVudC5zcGVjaWFsW2VdfHx7fTtpZigoIWsuX2RlZmF1bHR8fGsuX2RlZmF1bHQu
Y2FsbChkLGEpPT09ZmFsc2UpJiYhbyYmIShmJiZmLm5vZGVOYW1lJiZjLm5vRGF0
YVtmLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKSl7dHJ5e2lmKGZbZV0pe2lmKGk9
Zlsib24iK2VdKWZbIm9uIitlXT1udWxsO2MuZXZlbnQudHJpZ2dlcmVkPXRydWU7
ZltlXSgpfX1jYXRjaChuKXt9aWYoaSlmWyJvbiIrZV09aTtjLmV2ZW50LnRyaWdn
ZXJlZD1mYWxzZX19fSxoYW5kbGU6ZnVuY3Rpb24oYSl7dmFyIGIsZCxmLGU7YT1h
cmd1bWVudHNbMF09Yy5ldmVudC5maXgoYXx8QS5ldmVudCk7YS5jdXJyZW50VGFy
Z2V0PXRoaXM7Yj1hLnR5cGUuaW5kZXhPZigiLiIpPDAmJiFhLmV4Y2x1c2l2ZTsK
aWYoIWIpe2Q9YS50eXBlLnNwbGl0KCIuIik7YS50eXBlPWQuc2hpZnQoKTtmPW5l
dyBSZWdFeHAoIihefFxcLikiK2Quc2xpY2UoMCkuc29ydCgpLmpvaW4oIlxcLig/
Oi4qXFwuKT8iKSsiKFxcLnwkKSIpfWU9Yy5kYXRhKHRoaXMsImV2ZW50cyIpO2Q9
ZVthLnR5cGVdO2lmKGUmJmQpe2Q9ZC5zbGljZSgwKTtlPTA7Zm9yKHZhciBqPWQu
bGVuZ3RoO2U8ajtlKyspe3ZhciBpPWRbZV07aWYoYnx8Zi50ZXN0KGkubmFtZXNw
YWNlKSl7YS5oYW5kbGVyPWkuaGFuZGxlcjthLmRhdGE9aS5kYXRhO2EuaGFuZGxl
T2JqPWk7aT1pLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKGkhPT13
KXthLnJlc3VsdD1pO2lmKGk9PT1mYWxzZSl7YS5wcmV2ZW50RGVmYXVsdCgpO2Eu
c3RvcFByb3BhZ2F0aW9uKCl9fWlmKGEuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0
b3BwZWQoKSlicmVha319fXJldHVybiBhLnJlc3VsdH0scHJvcHM6ImFsdEtleSBh
dHRyQ2hhbmdlIGF0dHJOYW1lIGJ1YmJsZXMgYnV0dG9uIGNhbmNlbGFibGUgY2hh
ckNvZGUgY2xpZW50WCBjbGllbnRZIGN0cmxLZXkgY3VycmVudFRhcmdldCBkYXRh
IGRldGFpbCBldmVudFBoYXNlIGZyb21FbGVtZW50IGhhbmRsZXIga2V5Q29kZSBs
YXllclggbGF5ZXJZIG1ldGFLZXkgbmV3VmFsdWUgb2Zmc2V0WCBvZmZzZXRZIG9y
aWdpbmFsVGFyZ2V0IHBhZ2VYIHBhZ2VZIHByZXZWYWx1ZSByZWxhdGVkTm9kZSBy
ZWxhdGVkVGFyZ2V0IHNjcmVlblggc2NyZWVuWSBzaGlmdEtleSBzcmNFbGVtZW50
IHRhcmdldCB0b0VsZW1lbnQgdmlldyB3aGVlbERlbHRhIHdoaWNoIi5zcGxpdCgi
ICIpLApmaXg6ZnVuY3Rpb24oYSl7aWYoYVtHXSlyZXR1cm4gYTt2YXIgYj1hO2E9
Yy5FdmVudChiKTtmb3IodmFyIGQ9dGhpcy5wcm9wcy5sZW5ndGgsZjtkOyl7Zj10
aGlzLnByb3BzWy0tZF07YVtmXT1iW2ZdfWlmKCFhLnRhcmdldClhLnRhcmdldD1h
LnNyY0VsZW1lbnR8fHM7aWYoYS50YXJnZXQubm9kZVR5cGU9PT0zKWEudGFyZ2V0
PWEudGFyZ2V0LnBhcmVudE5vZGU7aWYoIWEucmVsYXRlZFRhcmdldCYmYS5mcm9t
RWxlbWVudClhLnJlbGF0ZWRUYXJnZXQ9YS5mcm9tRWxlbWVudD09PWEudGFyZ2V0
P2EudG9FbGVtZW50OmEuZnJvbUVsZW1lbnQ7aWYoYS5wYWdlWD09bnVsbCYmYS5j
bGllbnRYIT1udWxsKXtiPXMuZG9jdW1lbnRFbGVtZW50O2Q9cy5ib2R5O2EucGFn
ZVg9YS5jbGllbnRYKyhiJiZiLnNjcm9sbExlZnR8fGQmJmQuc2Nyb2xsTGVmdHx8
MCktKGImJmIuY2xpZW50TGVmdHx8ZCYmZC5jbGllbnRMZWZ0fHwwKTthLnBhZ2VZ
PWEuY2xpZW50WSsoYiYmYi5zY3JvbGxUb3B8fApkJiZkLnNjcm9sbFRvcHx8MCkt
KGImJmIuY2xpZW50VG9wfHxkJiZkLmNsaWVudFRvcHx8MCl9aWYoIWEud2hpY2gm
JihhLmNoYXJDb2RlfHxhLmNoYXJDb2RlPT09MD9hLmNoYXJDb2RlOmEua2V5Q29k
ZSkpYS53aGljaD1hLmNoYXJDb2RlfHxhLmtleUNvZGU7aWYoIWEubWV0YUtleSYm
YS5jdHJsS2V5KWEubWV0YUtleT1hLmN0cmxLZXk7aWYoIWEud2hpY2gmJmEuYnV0
dG9uIT09dylhLndoaWNoPWEuYnV0dG9uJjE/MTphLmJ1dHRvbiYyPzM6YS5idXR0
b24mND8yOjA7cmV0dXJuIGF9LGd1aWQ6MUU4LHByb3h5OmMucHJveHksc3BlY2lh
bDp7cmVhZHk6e3NldHVwOmMuYmluZFJlYWR5LHRlYXJkb3duOmMubm9vcH0sbGl2
ZTp7YWRkOmZ1bmN0aW9uKGEpe2MuZXZlbnQuYWRkKHRoaXMsYS5vcmlnVHlwZSxj
LmV4dGVuZCh7fSxhLHtoYW5kbGVyOm9hfSkpfSxyZW1vdmU6ZnVuY3Rpb24oYSl7
dmFyIGI9dHJ1ZSxkPWEub3JpZ1R5cGUucmVwbGFjZShPLCIiKTtjLmVhY2goYy5k
YXRhKHRoaXMsCiJldmVudHMiKS5saXZlfHxbXSxmdW5jdGlvbigpe2lmKGQ9PT10
aGlzLm9yaWdUeXBlLnJlcGxhY2UoTywiIikpcmV0dXJuIGI9ZmFsc2V9KTtiJiZj
LmV2ZW50LnJlbW92ZSh0aGlzLGEub3JpZ1R5cGUsb2EpfX0sYmVmb3JldW5sb2Fk
OntzZXR1cDpmdW5jdGlvbihhLGIsZCl7aWYodGhpcy5zZXRJbnRlcnZhbCl0aGlz
Lm9uYmVmb3JldW5sb2FkPWQ7cmV0dXJuIGZhbHNlfSx0ZWFyZG93bjpmdW5jdGlv
bihhLGIpe2lmKHRoaXMub25iZWZvcmV1bmxvYWQ9PT1iKXRoaXMub25iZWZvcmV1
bmxvYWQ9bnVsbH19fX07dmFyIENhPXMucmVtb3ZlRXZlbnRMaXN0ZW5lcj9mdW5j
dGlvbihhLGIsZCl7YS5yZW1vdmVFdmVudExpc3RlbmVyKGIsZCxmYWxzZSl9OmZ1
bmN0aW9uKGEsYixkKXthLmRldGFjaEV2ZW50KCJvbiIrYixkKX07Yy5FdmVudD1m
dW5jdGlvbihhKXtpZighdGhpcy5wcmV2ZW50RGVmYXVsdClyZXR1cm4gbmV3IGMu
RXZlbnQoYSk7aWYoYSYmYS50eXBlKXt0aGlzLm9yaWdpbmFsRXZlbnQ9CmE7dGhp
cy50eXBlPWEudHlwZX1lbHNlIHRoaXMudHlwZT1hO3RoaXMudGltZVN0YW1wPUoo
KTt0aGlzW0ddPXRydWV9O2MuRXZlbnQucHJvdG90eXBlPXtwcmV2ZW50RGVmYXVs
dDpmdW5jdGlvbigpe3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPVo7dmFyIGE9dGhp
cy5vcmlnaW5hbEV2ZW50O2lmKGEpe2EucHJldmVudERlZmF1bHQmJmEucHJldmVu
dERlZmF1bHQoKTthLnJldHVyblZhbHVlPWZhbHNlfX0sc3RvcFByb3BhZ2F0aW9u
OmZ1bmN0aW9uKCl7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1aO3ZhciBhPXRo
aXMub3JpZ2luYWxFdmVudDtpZihhKXthLnN0b3BQcm9wYWdhdGlvbiYmYS5zdG9w
UHJvcGFnYXRpb24oKTthLmNhbmNlbEJ1YmJsZT10cnVlfX0sc3RvcEltbWVkaWF0
ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0
aW9uU3RvcHBlZD1aO3RoaXMuc3RvcFByb3BhZ2F0aW9uKCl9LGlzRGVmYXVsdFBy
ZXZlbnRlZDpZLGlzUHJvcGFnYXRpb25TdG9wcGVkOlksCmlzSW1tZWRpYXRlUHJv
cGFnYXRpb25TdG9wcGVkOll9O3ZhciBEYT1mdW5jdGlvbihhKXt2YXIgYj1hLnJl
bGF0ZWRUYXJnZXQ7dHJ5e2Zvcig7YiYmYiE9PXRoaXM7KWI9Yi5wYXJlbnROb2Rl
O2lmKGIhPT10aGlzKXthLnR5cGU9YS5kYXRhO2MuZXZlbnQuaGFuZGxlLmFwcGx5
KHRoaXMsYXJndW1lbnRzKX19Y2F0Y2goZCl7fX0sRWE9ZnVuY3Rpb24oYSl7YS50
eXBlPWEuZGF0YTtjLmV2ZW50LmhhbmRsZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9
O2MuZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3Vz
ZW91dCJ9LGZ1bmN0aW9uKGEsYil7Yy5ldmVudC5zcGVjaWFsW2FdPXtzZXR1cDpm
dW5jdGlvbihkKXtjLmV2ZW50LmFkZCh0aGlzLGIsZCYmZC5zZWxlY3Rvcj9FYTpE
YSxhKX0sdGVhcmRvd246ZnVuY3Rpb24oZCl7Yy5ldmVudC5yZW1vdmUodGhpcyxi
LGQmJmQuc2VsZWN0b3I/RWE6RGEpfX19KTtpZighYy5zdXBwb3J0LnN1Ym1pdEJ1
YmJsZXMpYy5ldmVudC5zcGVjaWFsLnN1Ym1pdD0Ke3NldHVwOmZ1bmN0aW9uKCl7
aWYodGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIT09ImZvcm0iKXtjLmV2ZW50
LmFkZCh0aGlzLCJjbGljay5zcGVjaWFsU3VibWl0IixmdW5jdGlvbihhKXt2YXIg
Yj1hLnRhcmdldCxkPWIudHlwZTtpZigoZD09PSJzdWJtaXQifHxkPT09ImltYWdl
IikmJmMoYikuY2xvc2VzdCgiZm9ybSIpLmxlbmd0aClyZXR1cm4gbmEoInN1Ym1p
dCIsdGhpcyxhcmd1bWVudHMpfSk7Yy5ldmVudC5hZGQodGhpcywia2V5cHJlc3Mu
c3BlY2lhbFN1Ym1pdCIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQsZD1iLnR5
cGU7aWYoKGQ9PT0idGV4dCJ8fGQ9PT0icGFzc3dvcmQiKSYmYyhiKS5jbG9zZXN0
KCJmb3JtIikubGVuZ3RoJiZhLmtleUNvZGU9PT0xMylyZXR1cm4gbmEoInN1Ym1p
dCIsdGhpcyxhcmd1bWVudHMpfSl9ZWxzZSByZXR1cm4gZmFsc2V9LHRlYXJkb3du
OmZ1bmN0aW9uKCl7Yy5ldmVudC5yZW1vdmUodGhpcywiLnNwZWNpYWxTdWJtaXQi
KX19OwppZighYy5zdXBwb3J0LmNoYW5nZUJ1YmJsZXMpe3ZhciBkYT0vdGV4dGFy
ZWF8aW5wdXR8c2VsZWN0L2ksZWEsRmE9ZnVuY3Rpb24oYSl7dmFyIGI9YS50eXBl
LGQ9YS52YWx1ZTtpZihiPT09InJhZGlvInx8Yj09PSJjaGVja2JveCIpZD1hLmNo
ZWNrZWQ7ZWxzZSBpZihiPT09InNlbGVjdC1tdWx0aXBsZSIpZD1hLnNlbGVjdGVk
SW5kZXg+LTE/Yy5tYXAoYS5vcHRpb25zLGZ1bmN0aW9uKGYpe3JldHVybiBmLnNl
bGVjdGVkfSkuam9pbigiLSIpOiIiO2Vsc2UgaWYoYS5ub2RlTmFtZS50b0xvd2Vy
Q2FzZSgpPT09InNlbGVjdCIpZD1hLnNlbGVjdGVkSW5kZXg7cmV0dXJuIGR9LGZh
PWZ1bmN0aW9uKGEsYil7dmFyIGQ9YS50YXJnZXQsZixlO2lmKCEoIWRhLnRlc3Qo
ZC5ub2RlTmFtZSl8fGQucmVhZE9ubHkpKXtmPWMuZGF0YShkLCJfY2hhbmdlX2Rh
dGEiKTtlPUZhKGQpO2lmKGEudHlwZSE9PSJmb2N1c291dCJ8fGQudHlwZSE9PSJy
YWRpbyIpYy5kYXRhKGQsIl9jaGFuZ2VfZGF0YSIsCmUpO2lmKCEoZj09PXd8fGU9
PT1mKSlpZihmIT1udWxsfHxlKXthLnR5cGU9ImNoYW5nZSI7cmV0dXJuIGMuZXZl
bnQudHJpZ2dlcihhLGIsZCl9fX07Yy5ldmVudC5zcGVjaWFsLmNoYW5nZT17Zmls
dGVyczp7Zm9jdXNvdXQ6ZmEsY2xpY2s6ZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJn
ZXQsZD1iLnR5cGU7aWYoZD09PSJyYWRpbyJ8fGQ9PT0iY2hlY2tib3gifHxiLm5v
ZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0ic2VsZWN0IilyZXR1cm4gZmEuY2FsbCh0
aGlzLGEpfSxrZXlkb3duOmZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0LGQ9Yi50
eXBlO2lmKGEua2V5Q29kZT09PTEzJiZiLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkh
PT0idGV4dGFyZWEifHxhLmtleUNvZGU9PT0zMiYmKGQ9PT0iY2hlY2tib3gifHxk
PT09InJhZGlvIil8fGQ9PT0ic2VsZWN0LW11bHRpcGxlIilyZXR1cm4gZmEuY2Fs
bCh0aGlzLGEpfSxiZWZvcmVhY3RpdmF0ZTpmdW5jdGlvbihhKXthPWEudGFyZ2V0
O2MuZGF0YShhLAoiX2NoYW5nZV9kYXRhIixGYShhKSl9fSxzZXR1cDpmdW5jdGlv
bigpe2lmKHRoaXMudHlwZT09PSJmaWxlIilyZXR1cm4gZmFsc2U7Zm9yKHZhciBh
IGluIGVhKWMuZXZlbnQuYWRkKHRoaXMsYSsiLnNwZWNpYWxDaGFuZ2UiLGVhW2Fd
KTtyZXR1cm4gZGEudGVzdCh0aGlzLm5vZGVOYW1lKX0sdGVhcmRvd246ZnVuY3Rp
b24oKXtjLmV2ZW50LnJlbW92ZSh0aGlzLCIuc3BlY2lhbENoYW5nZSIpO3JldHVy
biBkYS50ZXN0KHRoaXMubm9kZU5hbWUpfX07ZWE9Yy5ldmVudC5zcGVjaWFsLmNo
YW5nZS5maWx0ZXJzfXMuYWRkRXZlbnRMaXN0ZW5lciYmYy5lYWNoKHtmb2N1czoi
Zm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9u
IGQoZil7Zj1jLmV2ZW50LmZpeChmKTtmLnR5cGU9YjtyZXR1cm4gYy5ldmVudC5o
YW5kbGUuY2FsbCh0aGlzLGYpfWMuZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVu
Y3Rpb24oKXt0aGlzLmFkZEV2ZW50TGlzdGVuZXIoYSwKZCx0cnVlKX0sdGVhcmRv
d246ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxkLHRydWUp
fX19KTtjLmVhY2goWyJiaW5kIiwib25lIl0sZnVuY3Rpb24oYSxiKXtjLmZuW2Jd
PWZ1bmN0aW9uKGQsZixlKXtpZih0eXBlb2YgZD09PSJvYmplY3QiKXtmb3IodmFy
IGogaW4gZCl0aGlzW2JdKGosZixkW2pdLGUpO3JldHVybiB0aGlzfWlmKGMuaXNG
dW5jdGlvbihmKSl7ZT1mO2Y9d312YXIgaT1iPT09Im9uZSI/Yy5wcm94eShlLGZ1
bmN0aW9uKGspe2ModGhpcykudW5iaW5kKGssaSk7cmV0dXJuIGUuYXBwbHkodGhp
cyxhcmd1bWVudHMpfSk6ZTtpZihkPT09InVubG9hZCImJmIhPT0ib25lIil0aGlz
Lm9uZShkLGYsZSk7ZWxzZXtqPTA7Zm9yKHZhciBvPXRoaXMubGVuZ3RoO2o8bztq
KyspYy5ldmVudC5hZGQodGhpc1tqXSxkLGksZil9cmV0dXJuIHRoaXN9fSk7Yy5m
bi5leHRlbmQoe3VuYmluZDpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBhPT09Im9i
amVjdCImJgohYS5wcmV2ZW50RGVmYXVsdClmb3IodmFyIGQgaW4gYSl0aGlzLnVu
YmluZChkLGFbZF0pO2Vsc2V7ZD0wO2Zvcih2YXIgZj10aGlzLmxlbmd0aDtkPGY7
ZCsrKWMuZXZlbnQucmVtb3ZlKHRoaXNbZF0sYSxiKX1yZXR1cm4gdGhpc30sZGVs
ZWdhdGU6ZnVuY3Rpb24oYSxiLGQsZil7cmV0dXJuIHRoaXMubGl2ZShiLGQsZixh
KX0sdW5kZWxlZ2F0ZTpmdW5jdGlvbihhLGIsZCl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg9PT0wP3RoaXMudW5iaW5kKCJsaXZlIik6dGhpcy5kaWUoYixudWxsLGQs
YSl9LHRyaWdnZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0
aW9uKCl7Yy5ldmVudC50cmlnZ2VyKGEsYix0aGlzKX0pfSx0cmlnZ2VySGFuZGxl
cjpmdW5jdGlvbihhLGIpe2lmKHRoaXNbMF0pe2E9Yy5FdmVudChhKTthLnByZXZl
bnREZWZhdWx0KCk7YS5zdG9wUHJvcGFnYXRpb24oKTtjLmV2ZW50LnRyaWdnZXIo
YSxiLHRoaXNbMF0pO3JldHVybiBhLnJlc3VsdH19LAp0b2dnbGU6ZnVuY3Rpb24o
YSl7Zm9yKHZhciBiPWFyZ3VtZW50cyxkPTE7ZDxiLmxlbmd0aDspYy5wcm94eShh
LGJbZCsrXSk7cmV0dXJuIHRoaXMuY2xpY2soYy5wcm94eShhLGZ1bmN0aW9uKGYp
e3ZhciBlPShjLmRhdGEodGhpcywibGFzdFRvZ2dsZSIrYS5ndWlkKXx8MCklZDtj
LmRhdGEodGhpcywibGFzdFRvZ2dsZSIrYS5ndWlkLGUrMSk7Zi5wcmV2ZW50RGVm
YXVsdCgpO3JldHVybiBiW2VdLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8ZmFsc2V9
KSl9LGhvdmVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMubW91c2VlbnRlcihh
KS5tb3VzZWxlYXZlKGJ8fGEpfX0pO3ZhciBHYT17Zm9jdXM6ImZvY3VzaW4iLGJs
dXI6ImZvY3Vzb3V0Iixtb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6
Im1vdXNlb3V0In07Yy5lYWNoKFsibGl2ZSIsImRpZSJdLGZ1bmN0aW9uKGEsYil7
Yy5mbltiXT1mdW5jdGlvbihkLGYsZSxqKXt2YXIgaSxvPTAsayxuLHI9anx8dGhp
cy5zZWxlY3RvciwKdT1qP3RoaXM6Yyh0aGlzLmNvbnRleHQpO2lmKGMuaXNGdW5j
dGlvbihmKSl7ZT1mO2Y9d31mb3IoZD0oZHx8IiIpLnNwbGl0KCIgIik7KGk9ZFtv
KytdKSE9bnVsbDspe2o9Ty5leGVjKGkpO2s9IiI7aWYoail7az1qWzBdO2k9aS5y
ZXBsYWNlKE8sIiIpfWlmKGk9PT0iaG92ZXIiKWQucHVzaCgibW91c2VlbnRlciIr
aywibW91c2VsZWF2ZSIrayk7ZWxzZXtuPWk7aWYoaT09PSJmb2N1cyJ8fGk9PT0i
Ymx1ciIpe2QucHVzaChHYVtpXStrKTtpKz1rfWVsc2UgaT0oR2FbaV18fGkpK2s7
Yj09PSJsaXZlIj91LmVhY2goZnVuY3Rpb24oKXtjLmV2ZW50LmFkZCh0aGlzLHBh
KGkscikse2RhdGE6ZixzZWxlY3RvcjpyLGhhbmRsZXI6ZSxvcmlnVHlwZTppLG9y
aWdIYW5kbGVyOmUscHJlVHlwZTpufSl9KTp1LnVuYmluZChwYShpLHIpLGUpfX1y
ZXR1cm4gdGhpc319KTtjLmVhY2goImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291
dCBsb2FkIHJlc2l6ZSBzY3JvbGwgdW5sb2FkIGNsaWNrIGRibGNsaWNrIG1vdXNl
ZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2Vl
bnRlciBtb3VzZWxlYXZlIGNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5
cHJlc3Mga2V5dXAgZXJyb3IiLnNwbGl0KCIgIiksCmZ1bmN0aW9uKGEsYil7Yy5m
bltiXT1mdW5jdGlvbihkKXtyZXR1cm4gZD90aGlzLmJpbmQoYixkKTp0aGlzLnRy
aWdnZXIoYil9O2lmKGMuYXR0ckZuKWMuYXR0ckZuW2JdPXRydWV9KTtBLmF0dGFj
aEV2ZW50JiYhQS5hZGRFdmVudExpc3RlbmVyJiZBLmF0dGFjaEV2ZW50KCJvbnVu
bG9hZCIsZnVuY3Rpb24oKXtmb3IodmFyIGEgaW4gYy5jYWNoZSlpZihjLmNhY2hl
W2FdLmhhbmRsZSl0cnl7Yy5ldmVudC5yZW1vdmUoYy5jYWNoZVthXS5oYW5kbGUu
ZWxlbSl9Y2F0Y2goYil7fX0pOyhmdW5jdGlvbigpe2Z1bmN0aW9uIGEoZyl7Zm9y
KHZhciBoPSIiLGwsbT0wO2dbbV07bSsrKXtsPWdbbV07aWYobC5ub2RlVHlwZT09
PTN8fGwubm9kZVR5cGU9PT00KWgrPWwubm9kZVZhbHVlO2Vsc2UgaWYobC5ub2Rl
VHlwZSE9PTgpaCs9YShsLmNoaWxkTm9kZXMpfXJldHVybiBofWZ1bmN0aW9uIGIo
ZyxoLGwsbSxxLHApe3E9MDtmb3IodmFyIHY9bS5sZW5ndGg7cTx2O3ErKyl7dmFy
IHQ9bVtxXTsKaWYodCl7dD10W2ddO2Zvcih2YXIgeT1mYWxzZTt0Oyl7aWYodC5z
aXpjYWNoZT09PWwpe3k9bVt0LnNpenNldF07YnJlYWt9aWYodC5ub2RlVHlwZT09
PTEmJiFwKXt0LnNpemNhY2hlPWw7dC5zaXpzZXQ9cX1pZih0Lm5vZGVOYW1lLnRv
TG93ZXJDYXNlKCk9PT1oKXt5PXQ7YnJlYWt9dD10W2ddfW1bcV09eX19fWZ1bmN0
aW9uIGQoZyxoLGwsbSxxLHApe3E9MDtmb3IodmFyIHY9bS5sZW5ndGg7cTx2O3Er
Kyl7dmFyIHQ9bVtxXTtpZih0KXt0PXRbZ107Zm9yKHZhciB5PWZhbHNlO3Q7KXtp
Zih0LnNpemNhY2hlPT09bCl7eT1tW3Quc2l6c2V0XTticmVha31pZih0Lm5vZGVU
eXBlPT09MSl7aWYoIXApe3Quc2l6Y2FjaGU9bDt0LnNpenNldD1xfWlmKHR5cGVv
ZiBoIT09InN0cmluZyIpe2lmKHQ9PT1oKXt5PXRydWU7YnJlYWt9fWVsc2UgaWYo
ay5maWx0ZXIoaCxbdF0pLmxlbmd0aD4wKXt5PXQ7YnJlYWt9fXQ9dFtnXX1tW3Fd
PXl9fX12YXIgZj0vKCg/OlwoKD86XChbXigpXStcKXxbXigpXSspK1wpfFxbKD86
XFtbXltcXV0qXF18WyciXVteJyJdKlsnIl18W15bXF0nIl0rKStcXXxcXC58W14g
Pit+LChcW1xcXSspK3xbPit+XSkoXHMqLFxzKik/KCg/Oi58XHJ8XG4pKikvZywK
ZT0wLGo9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxpPWZhbHNlLG89dHJ1ZTtb
MCwwXS5zb3J0KGZ1bmN0aW9uKCl7bz1mYWxzZTtyZXR1cm4gMH0pO3ZhciBrPWZ1
bmN0aW9uKGcsaCxsLG0pe2w9bHx8W107dmFyIHE9aD1ofHxzO2lmKGgubm9kZVR5
cGUhPT0xJiZoLm5vZGVUeXBlIT09OSlyZXR1cm5bXTtpZighZ3x8dHlwZW9mIGch
PT0ic3RyaW5nIilyZXR1cm4gbDtmb3IodmFyIHA9W10sdix0LHksUyxIPXRydWUs
TT14KGgpLEk9ZzsoZi5leGVjKCIiKSx2PWYuZXhlYyhJKSkhPT1udWxsOyl7ST12
WzNdO3AucHVzaCh2WzFdKTtpZih2WzJdKXtTPXZbM107YnJlYWt9fWlmKHAubGVu
Z3RoPjEmJnIuZXhlYyhnKSlpZihwLmxlbmd0aD09PTImJm4ucmVsYXRpdmVbcFsw
XV0pdD1nYShwWzBdK3BbMV0saCk7ZWxzZSBmb3IodD1uLnJlbGF0aXZlW3BbMF1d
P1toXTprKHAuc2hpZnQoKSxoKTtwLmxlbmd0aDspe2c9cC5zaGlmdCgpO2lmKG4u
cmVsYXRpdmVbZ10pZys9cC5zaGlmdCgpOwp0PWdhKGcsdCl9ZWxzZXtpZighbSYm
cC5sZW5ndGg+MSYmaC5ub2RlVHlwZT09PTkmJiFNJiZuLm1hdGNoLklELnRlc3Qo
cFswXSkmJiFuLm1hdGNoLklELnRlc3QocFtwLmxlbmd0aC0xXSkpe3Y9ay5maW5k
KHAuc2hpZnQoKSxoLE0pO2g9di5leHByP2suZmlsdGVyKHYuZXhwcix2LnNldClb
MF06di5zZXRbMF19aWYoaCl7dj1tP3tleHByOnAucG9wKCksc2V0OnoobSl9Omsu
ZmluZChwLnBvcCgpLHAubGVuZ3RoPT09MSYmKHBbMF09PT0ifiJ8fHBbMF09PT0i
KyIpJiZoLnBhcmVudE5vZGU/aC5wYXJlbnROb2RlOmgsTSk7dD12LmV4cHI/ay5m
aWx0ZXIodi5leHByLHYuc2V0KTp2LnNldDtpZihwLmxlbmd0aD4wKXk9eih0KTtl
bHNlIEg9ZmFsc2U7Zm9yKDtwLmxlbmd0aDspe3ZhciBEPXAucG9wKCk7dj1EO2lm
KG4ucmVsYXRpdmVbRF0pdj1wLnBvcCgpO2Vsc2UgRD0iIjtpZih2PT1udWxsKXY9
aDtuLnJlbGF0aXZlW0RdKHksdixNKX19ZWxzZSB5PVtdfXl8fCh5PXQpO3l8fGsu
ZXJyb3IoRHx8CmcpO2lmKGouY2FsbCh5KT09PSJbb2JqZWN0IEFycmF5XSIpaWYo
SClpZihoJiZoLm5vZGVUeXBlPT09MSlmb3IoZz0wO3lbZ10hPW51bGw7ZysrKXtp
Zih5W2ddJiYoeVtnXT09PXRydWV8fHlbZ10ubm9kZVR5cGU9PT0xJiZFKGgseVtn
XSkpKWwucHVzaCh0W2ddKX1lbHNlIGZvcihnPTA7eVtnXSE9bnVsbDtnKyspeVtn
XSYmeVtnXS5ub2RlVHlwZT09PTEmJmwucHVzaCh0W2ddKTtlbHNlIGwucHVzaC5h
cHBseShsLHkpO2Vsc2Ugeih5LGwpO2lmKFMpe2soUyxxLGwsbSk7ay51bmlxdWVT
b3J0KGwpfXJldHVybiBsfTtrLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oZyl7aWYoQil7
aT1vO2cuc29ydChCKTtpZihpKWZvcih2YXIgaD0xO2g8Zy5sZW5ndGg7aCsrKWdb
aF09PT1nW2gtMV0mJmcuc3BsaWNlKGgtLSwxKX1yZXR1cm4gZ307ay5tYXRjaGVz
PWZ1bmN0aW9uKGcsaCl7cmV0dXJuIGsoZyxudWxsLG51bGwsaCl9O2suZmluZD1m
dW5jdGlvbihnLGgsbCl7dmFyIG0scTtpZighZylyZXR1cm5bXTsKZm9yKHZhciBw
PTAsdj1uLm9yZGVyLmxlbmd0aDtwPHY7cCsrKXt2YXIgdD1uLm9yZGVyW3BdO2lm
KHE9bi5sZWZ0TWF0Y2hbdF0uZXhlYyhnKSl7dmFyIHk9cVsxXTtxLnNwbGljZSgx
LDEpO2lmKHkuc3Vic3RyKHkubGVuZ3RoLTEpIT09IlxcIil7cVsxXT0ocVsxXXx8
IiIpLnJlcGxhY2UoL1xcL2csIiIpO209bi5maW5kW3RdKHEsaCxsKTtpZihtIT1u
dWxsKXtnPWcucmVwbGFjZShuLm1hdGNoW3RdLCIiKTticmVha319fX1tfHwobT1o
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpO3JldHVybntzZXQ6bSxleHByOmd9
fTtrLmZpbHRlcj1mdW5jdGlvbihnLGgsbCxtKXtmb3IodmFyIHE9ZyxwPVtdLHY9
aCx0LHksUz1oJiZoWzBdJiZ4KGhbMF0pO2cmJmgubGVuZ3RoOyl7Zm9yKHZhciBI
IGluIG4uZmlsdGVyKWlmKCh0PW4ubGVmdE1hdGNoW0hdLmV4ZWMoZykpIT1udWxs
JiZ0WzJdKXt2YXIgTT1uLmZpbHRlcltIXSxJLEQ7RD10WzFdO3k9ZmFsc2U7dC5z
cGxpY2UoMSwxKTtpZihELnN1YnN0cihELmxlbmd0aC0KMSkhPT0iXFwiKXtpZih2
PT09cClwPVtdO2lmKG4ucHJlRmlsdGVyW0hdKWlmKHQ9bi5wcmVGaWx0ZXJbSF0o
dCx2LGwscCxtLFMpKXtpZih0PT09dHJ1ZSljb250aW51ZX1lbHNlIHk9ST10cnVl
O2lmKHQpZm9yKHZhciBVPTA7KEQ9dltVXSkhPW51bGw7VSsrKWlmKEQpe0k9TShE
LHQsVSx2KTt2YXIgSGE9bV4hIUk7aWYobCYmSSE9bnVsbClpZihIYSl5PXRydWU7
ZWxzZSB2W1VdPWZhbHNlO2Vsc2UgaWYoSGEpe3AucHVzaChEKTt5PXRydWV9fWlm
KEkhPT13KXtsfHwodj1wKTtnPWcucmVwbGFjZShuLm1hdGNoW0hdLCIiKTtpZigh
eSlyZXR1cm5bXTticmVha319fWlmKGc9PT1xKWlmKHk9PW51bGwpay5lcnJvcihn
KTtlbHNlIGJyZWFrO3E9Z31yZXR1cm4gdn07ay5lcnJvcj1mdW5jdGlvbihnKXt0
aHJvdyJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiAiK2c7
fTt2YXIgbj1rLnNlbGVjdG9ycz17b3JkZXI6WyJJRCIsIk5BTUUiLCJUQUciXSxt
YXRjaDp7SUQ6LyMoKD86W1x3XHUwMGMwLVx1RkZGRi1dfFxcLikrKS8sCkNMQVNT
Oi9cLigoPzpbXHdcdTAwYzAtXHVGRkZGLV18XFwuKSspLyxOQU1FOi9cW25hbWU9
WyciXSooKD86W1x3XHUwMGMwLVx1RkZGRi1dfFxcLikrKVsnIl0qXF0vLEFUVFI6
L1xbXHMqKCg/Oltcd1x1MDBjMC1cdUZGRkYtXXxcXC4pKylccyooPzooXFM/PSlc
cyooWyciXSopKC4qPylcM3wpXHMqXF0vLFRBRzovXigoPzpbXHdcdTAwYzAtXHVG
RkZGXCotXXxcXC4pKykvLENISUxEOi86KG9ubHl8bnRofGxhc3R8Zmlyc3QpLWNo
aWxkKD86XCgoZXZlbnxvZGR8W1xkbistXSopXCkpPy8sUE9TOi86KG50aHxlcXxn
dHxsdHxmaXJzdHxsYXN0fGV2ZW58b2RkKSg/OlwoKFxkKilcKSk/KD89W14tXXwk
KS8sUFNFVURPOi86KCg/Oltcd1x1MDBjMC1cdUZGRkYtXXxcXC4pKykoPzpcKChb
JyJdPykoKD86XChbXlwpXStcKXxbXlwoXCldKikrKVwyXCkpPy99LGxlZnRNYXRj
aDp7fSxhdHRyTWFwOnsiY2xhc3MiOiJjbGFzc05hbWUiLCJmb3IiOiJodG1sRm9y
In0sYXR0ckhhbmRsZTp7aHJlZjpmdW5jdGlvbihnKXtyZXR1cm4gZy5nZXRBdHRy
aWJ1dGUoImhyZWYiKX19LApyZWxhdGl2ZTp7IisiOmZ1bmN0aW9uKGcsaCl7dmFy
IGw9dHlwZW9mIGg9PT0ic3RyaW5nIixtPWwmJiEvXFcvLnRlc3QoaCk7bD1sJiYh
bTtpZihtKWg9aC50b0xvd2VyQ2FzZSgpO209MDtmb3IodmFyIHE9Zy5sZW5ndGgs
cDttPHE7bSsrKWlmKHA9Z1ttXSl7Zm9yKDsocD1wLnByZXZpb3VzU2libGluZykm
JnAubm9kZVR5cGUhPT0xOyk7Z1ttXT1sfHxwJiZwLm5vZGVOYW1lLnRvTG93ZXJD
YXNlKCk9PT1oP3B8fGZhbHNlOnA9PT1ofWwmJmsuZmlsdGVyKGgsZyx0cnVlKX0s
Ij4iOmZ1bmN0aW9uKGcsaCl7dmFyIGw9dHlwZW9mIGg9PT0ic3RyaW5nIjtpZihs
JiYhL1xXLy50ZXN0KGgpKXtoPWgudG9Mb3dlckNhc2UoKTtmb3IodmFyIG09MCxx
PWcubGVuZ3RoO208cTttKyspe3ZhciBwPWdbbV07aWYocCl7bD1wLnBhcmVudE5v
ZGU7Z1ttXT1sLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1oP2w6ZmFsc2V9fX1l
bHNle209MDtmb3IocT1nLmxlbmd0aDttPHE7bSsrKWlmKHA9Z1ttXSlnW21dPQps
P3AucGFyZW50Tm9kZTpwLnBhcmVudE5vZGU9PT1oO2wmJmsuZmlsdGVyKGgsZyx0
cnVlKX19LCIiOmZ1bmN0aW9uKGcsaCxsKXt2YXIgbT1lKysscT1kO2lmKHR5cGVv
ZiBoPT09InN0cmluZyImJiEvXFcvLnRlc3QoaCkpe3ZhciBwPWg9aC50b0xvd2Vy
Q2FzZSgpO3E9Yn1xKCJwYXJlbnROb2RlIixoLG0sZyxwLGwpfSwifiI6ZnVuY3Rp
b24oZyxoLGwpe3ZhciBtPWUrKyxxPWQ7aWYodHlwZW9mIGg9PT0ic3RyaW5nIiYm
IS9cVy8udGVzdChoKSl7dmFyIHA9aD1oLnRvTG93ZXJDYXNlKCk7cT1ifXEoInBy
ZXZpb3VzU2libGluZyIsaCxtLGcscCxsKX19LGZpbmQ6e0lEOmZ1bmN0aW9uKGcs
aCxsKXtpZih0eXBlb2YgaC5nZXRFbGVtZW50QnlJZCE9PSJ1bmRlZmluZWQiJiYh
bClyZXR1cm4oZz1oLmdldEVsZW1lbnRCeUlkKGdbMV0pKT9bZ106W119LE5BTUU6
ZnVuY3Rpb24oZyxoKXtpZih0eXBlb2YgaC5nZXRFbGVtZW50c0J5TmFtZSE9PSJ1
bmRlZmluZWQiKXt2YXIgbD1bXTsKaD1oLmdldEVsZW1lbnRzQnlOYW1lKGdbMV0p
O2Zvcih2YXIgbT0wLHE9aC5sZW5ndGg7bTxxO20rKyloW21dLmdldEF0dHJpYnV0
ZSgibmFtZSIpPT09Z1sxXSYmbC5wdXNoKGhbbV0pO3JldHVybiBsLmxlbmd0aD09
PTA/bnVsbDpsfX0sVEFHOmZ1bmN0aW9uKGcsaCl7cmV0dXJuIGguZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoZ1sxXSl9fSxwcmVGaWx0ZXI6e0NMQVNTOmZ1bmN0aW9uKGcs
aCxsLG0scSxwKXtnPSIgIitnWzFdLnJlcGxhY2UoL1xcL2csIiIpKyIgIjtpZihw
KXJldHVybiBnO3A9MDtmb3IodmFyIHY7KHY9aFtwXSkhPW51bGw7cCsrKWlmKHYp
aWYocV4odi5jbGFzc05hbWUmJigiICIrdi5jbGFzc05hbWUrIiAiKS5yZXBsYWNl
KC9bXHRcbl0vZywiICIpLmluZGV4T2YoZyk+PTApKWx8fG0ucHVzaCh2KTtlbHNl
IGlmKGwpaFtwXT1mYWxzZTtyZXR1cm4gZmFsc2V9LElEOmZ1bmN0aW9uKGcpe3Jl
dHVybiBnWzFdLnJlcGxhY2UoL1xcL2csIiIpfSxUQUc6ZnVuY3Rpb24oZyl7cmV0
dXJuIGdbMV0udG9Mb3dlckNhc2UoKX0sCkNISUxEOmZ1bmN0aW9uKGcpe2lmKGdb
MV09PT0ibnRoIil7dmFyIGg9LygtPykoXGQqKW4oKD86XCt8LSk/XGQqKS8uZXhl
YyhnWzJdPT09ImV2ZW4iJiYiMm4ifHxnWzJdPT09Im9kZCImJiIybisxInx8IS9c
RC8udGVzdChnWzJdKSYmIjBuKyIrZ1syXXx8Z1syXSk7Z1syXT1oWzFdKyhoWzJd
fHwxKS0wO2dbM109aFszXS0wfWdbMF09ZSsrO3JldHVybiBnfSxBVFRSOmZ1bmN0
aW9uKGcsaCxsLG0scSxwKXtoPWdbMV0ucmVwbGFjZSgvXFwvZywiIik7aWYoIXAm
Jm4uYXR0ck1hcFtoXSlnWzFdPW4uYXR0ck1hcFtoXTtpZihnWzJdPT09In49Iiln
WzRdPSIgIitnWzRdKyIgIjtyZXR1cm4gZ30sUFNFVURPOmZ1bmN0aW9uKGcsaCxs
LG0scSl7aWYoZ1sxXT09PSJub3QiKWlmKChmLmV4ZWMoZ1szXSl8fCIiKS5sZW5n
dGg+MXx8L15cdy8udGVzdChnWzNdKSlnWzNdPWsoZ1szXSxudWxsLG51bGwsaCk7
ZWxzZXtnPWsuZmlsdGVyKGdbM10saCxsLHRydWVecSk7bHx8bS5wdXNoLmFwcGx5
KG0sCmcpO3JldHVybiBmYWxzZX1lbHNlIGlmKG4ubWF0Y2guUE9TLnRlc3QoZ1sw
XSl8fG4ubWF0Y2guQ0hJTEQudGVzdChnWzBdKSlyZXR1cm4gdHJ1ZTtyZXR1cm4g
Z30sUE9TOmZ1bmN0aW9uKGcpe2cudW5zaGlmdCh0cnVlKTtyZXR1cm4gZ319LGZp
bHRlcnM6e2VuYWJsZWQ6ZnVuY3Rpb24oZyl7cmV0dXJuIGcuZGlzYWJsZWQ9PT1m
YWxzZSYmZy50eXBlIT09ImhpZGRlbiJ9LGRpc2FibGVkOmZ1bmN0aW9uKGcpe3Jl
dHVybiBnLmRpc2FibGVkPT09dHJ1ZX0sY2hlY2tlZDpmdW5jdGlvbihnKXtyZXR1
cm4gZy5jaGVja2VkPT09dHJ1ZX0sc2VsZWN0ZWQ6ZnVuY3Rpb24oZyl7cmV0dXJu
IGcuc2VsZWN0ZWQ9PT10cnVlfSxwYXJlbnQ6ZnVuY3Rpb24oZyl7cmV0dXJuISFn
LmZpcnN0Q2hpbGR9LGVtcHR5OmZ1bmN0aW9uKGcpe3JldHVybiFnLmZpcnN0Q2hp
bGR9LGhhczpmdW5jdGlvbihnLGgsbCl7cmV0dXJuISFrKGxbM10sZykubGVuZ3Ro
fSxoZWFkZXI6ZnVuY3Rpb24oZyl7cmV0dXJuL2hcZC9pLnRlc3QoZy5ub2RlTmFt
ZSl9LAp0ZXh0OmZ1bmN0aW9uKGcpe3JldHVybiJ0ZXh0Ij09PWcudHlwZX0scmFk
aW86ZnVuY3Rpb24oZyl7cmV0dXJuInJhZGlvIj09PWcudHlwZX0sY2hlY2tib3g6
ZnVuY3Rpb24oZyl7cmV0dXJuImNoZWNrYm94Ij09PWcudHlwZX0sZmlsZTpmdW5j
dGlvbihnKXtyZXR1cm4iZmlsZSI9PT1nLnR5cGV9LHBhc3N3b3JkOmZ1bmN0aW9u
KGcpe3JldHVybiJwYXNzd29yZCI9PT1nLnR5cGV9LHN1Ym1pdDpmdW5jdGlvbihn
KXtyZXR1cm4ic3VibWl0Ij09PWcudHlwZX0saW1hZ2U6ZnVuY3Rpb24oZyl7cmV0
dXJuImltYWdlIj09PWcudHlwZX0scmVzZXQ6ZnVuY3Rpb24oZyl7cmV0dXJuInJl
c2V0Ij09PWcudHlwZX0sYnV0dG9uOmZ1bmN0aW9uKGcpe3JldHVybiJidXR0b24i
PT09Zy50eXBlfHxnLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0iYnV0dG9uIn0s
aW5wdXQ6ZnVuY3Rpb24oZyl7cmV0dXJuL2lucHV0fHNlbGVjdHx0ZXh0YXJlYXxi
dXR0b24vaS50ZXN0KGcubm9kZU5hbWUpfX0sCnNldEZpbHRlcnM6e2ZpcnN0OmZ1
bmN0aW9uKGcsaCl7cmV0dXJuIGg9PT0wfSxsYXN0OmZ1bmN0aW9uKGcsaCxsLG0p
e3JldHVybiBoPT09bS5sZW5ndGgtMX0sZXZlbjpmdW5jdGlvbihnLGgpe3JldHVy
biBoJTI9PT0wfSxvZGQ6ZnVuY3Rpb24oZyxoKXtyZXR1cm4gaCUyPT09MX0sbHQ6
ZnVuY3Rpb24oZyxoLGwpe3JldHVybiBoPGxbM10tMH0sZ3Q6ZnVuY3Rpb24oZyxo
LGwpe3JldHVybiBoPmxbM10tMH0sbnRoOmZ1bmN0aW9uKGcsaCxsKXtyZXR1cm4g
bFszXS0wPT09aH0sZXE6ZnVuY3Rpb24oZyxoLGwpe3JldHVybiBsWzNdLTA9PT1o
fX0sZmlsdGVyOntQU0VVRE86ZnVuY3Rpb24oZyxoLGwsbSl7dmFyIHE9aFsxXSxw
PW4uZmlsdGVyc1txXTtpZihwKXJldHVybiBwKGcsbCxoLG0pO2Vsc2UgaWYocT09
PSJjb250YWlucyIpcmV0dXJuKGcudGV4dENvbnRlbnR8fGcuaW5uZXJUZXh0fHxh
KFtnXSl8fCIiKS5pbmRleE9mKGhbM10pPj0wO2Vsc2UgaWYocT09PSJub3QiKXto
PQpoWzNdO2w9MDtmb3IobT1oLmxlbmd0aDtsPG07bCsrKWlmKGhbbF09PT1nKXJl
dHVybiBmYWxzZTtyZXR1cm4gdHJ1ZX1lbHNlIGsuZXJyb3IoIlN5bnRheCBlcnJv
ciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrcSl9LENISUxEOmZ1bmN0aW9u
KGcsaCl7dmFyIGw9aFsxXSxtPWc7c3dpdGNoKGwpe2Nhc2UgIm9ubHkiOmNhc2Ug
ImZpcnN0Ijpmb3IoO209bS5wcmV2aW91c1NpYmxpbmc7KWlmKG0ubm9kZVR5cGU9
PT0xKXJldHVybiBmYWxzZTtpZihsPT09ImZpcnN0IilyZXR1cm4gdHJ1ZTttPWc7
Y2FzZSAibGFzdCI6Zm9yKDttPW0ubmV4dFNpYmxpbmc7KWlmKG0ubm9kZVR5cGU9
PT0xKXJldHVybiBmYWxzZTtyZXR1cm4gdHJ1ZTtjYXNlICJudGgiOmw9aFsyXTt2
YXIgcT1oWzNdO2lmKGw9PT0xJiZxPT09MClyZXR1cm4gdHJ1ZTtoPWhbMF07dmFy
IHA9Zy5wYXJlbnROb2RlO2lmKHAmJihwLnNpemNhY2hlIT09aHx8IWcubm9kZUlu
ZGV4KSl7dmFyIHY9MDtmb3IobT1wLmZpcnN0Q2hpbGQ7bTttPQptLm5leHRTaWJs
aW5nKWlmKG0ubm9kZVR5cGU9PT0xKW0ubm9kZUluZGV4PSsrdjtwLnNpemNhY2hl
PWh9Zz1nLm5vZGVJbmRleC1xO3JldHVybiBsPT09MD9nPT09MDpnJWw9PT0wJiZn
L2w+PTB9fSxJRDpmdW5jdGlvbihnLGgpe3JldHVybiBnLm5vZGVUeXBlPT09MSYm
Zy5nZXRBdHRyaWJ1dGUoImlkIik9PT1ofSxUQUc6ZnVuY3Rpb24oZyxoKXtyZXR1
cm4gaD09PSIqIiYmZy5ub2RlVHlwZT09PTF8fGcubm9kZU5hbWUudG9Mb3dlckNh
c2UoKT09PWh9LENMQVNTOmZ1bmN0aW9uKGcsaCl7cmV0dXJuKCIgIisoZy5jbGFz
c05hbWV8fGcuZ2V0QXR0cmlidXRlKCJjbGFzcyIpKSsiICIpLmluZGV4T2YoaCk+
LTF9LEFUVFI6ZnVuY3Rpb24oZyxoKXt2YXIgbD1oWzFdO2c9bi5hdHRySGFuZGxl
W2xdP24uYXR0ckhhbmRsZVtsXShnKTpnW2xdIT1udWxsP2dbbF06Zy5nZXRBdHRy
aWJ1dGUobCk7bD1nKyIiO3ZhciBtPWhbMl07aD1oWzRdO3JldHVybiBnPT1udWxs
P209PT0iIT0iOm09PT0KIj0iP2w9PT1oOm09PT0iKj0iP2wuaW5kZXhPZihoKT49
MDptPT09In49Ij8oIiAiK2wrIiAiKS5pbmRleE9mKGgpPj0wOiFoP2wmJmchPT1m
YWxzZTptPT09IiE9Ij9sIT09aDptPT09Il49Ij9sLmluZGV4T2YoaCk9PT0wOm09
PT0iJD0iP2wuc3Vic3RyKGwubGVuZ3RoLWgubGVuZ3RoKT09PWg6bT09PSJ8PSI/
bD09PWh8fGwuc3Vic3RyKDAsaC5sZW5ndGgrMSk9PT1oKyItIjpmYWxzZX0sUE9T
OmZ1bmN0aW9uKGcsaCxsLG0pe3ZhciBxPW4uc2V0RmlsdGVyc1toWzJdXTtpZihx
KXJldHVybiBxKGcsbCxoLG0pfX19LHI9bi5tYXRjaC5QT1M7Zm9yKHZhciB1IGlu
IG4ubWF0Y2gpe24ubWF0Y2hbdV09bmV3IFJlZ0V4cChuLm1hdGNoW3VdLnNvdXJj
ZSsvKD8hW15cW10qXF0pKD8hW15cKF0qXCkpLy5zb3VyY2UpO24ubGVmdE1hdGNo
W3VdPW5ldyBSZWdFeHAoLyheKD86LnxccnxcbikqPykvLnNvdXJjZStuLm1hdGNo
W3VdLnNvdXJjZS5yZXBsYWNlKC9cXChcZCspL2csZnVuY3Rpb24oZywKaCl7cmV0
dXJuIlxcIisoaC0wKzEpfSkpfXZhciB6PWZ1bmN0aW9uKGcsaCl7Zz1BcnJheS5w
cm90b3R5cGUuc2xpY2UuY2FsbChnLDApO2lmKGgpe2gucHVzaC5hcHBseShoLGcp
O3JldHVybiBofXJldHVybiBnfTt0cnl7QXJyYXkucHJvdG90eXBlLnNsaWNlLmNh
bGwocy5kb2N1bWVudEVsZW1lbnQuY2hpbGROb2RlcywwKX1jYXRjaChDKXt6PWZ1
bmN0aW9uKGcsaCl7aD1ofHxbXTtpZihqLmNhbGwoZyk9PT0iW29iamVjdCBBcnJh
eV0iKUFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGgsZyk7ZWxzZSBpZih0eXBl
b2YgZy5sZW5ndGg9PT0ibnVtYmVyIilmb3IodmFyIGw9MCxtPWcubGVuZ3RoO2w8
bTtsKyspaC5wdXNoKGdbbF0pO2Vsc2UgZm9yKGw9MDtnW2xdO2wrKyloLnB1c2go
Z1tsXSk7cmV0dXJuIGh9fXZhciBCO2lmKHMuZG9jdW1lbnRFbGVtZW50LmNvbXBh
cmVEb2N1bWVudFBvc2l0aW9uKUI9ZnVuY3Rpb24oZyxoKXtpZighZy5jb21wYXJl
RG9jdW1lbnRQb3NpdGlvbnx8CiFoLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKXtp
ZihnPT1oKWk9dHJ1ZTtyZXR1cm4gZy5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj8t
MToxfWc9Zy5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihoKSY0Py0xOmc9PT1oPzA6
MTtpZihnPT09MClpPXRydWU7cmV0dXJuIGd9O2Vsc2UgaWYoInNvdXJjZUluZGV4
ImluIHMuZG9jdW1lbnRFbGVtZW50KUI9ZnVuY3Rpb24oZyxoKXtpZighZy5zb3Vy
Y2VJbmRleHx8IWguc291cmNlSW5kZXgpe2lmKGc9PWgpaT10cnVlO3JldHVybiBn
LnNvdXJjZUluZGV4Py0xOjF9Zz1nLnNvdXJjZUluZGV4LWguc291cmNlSW5kZXg7
aWYoZz09PTApaT10cnVlO3JldHVybiBnfTtlbHNlIGlmKHMuY3JlYXRlUmFuZ2Up
Qj1mdW5jdGlvbihnLGgpe2lmKCFnLm93bmVyRG9jdW1lbnR8fCFoLm93bmVyRG9j
dW1lbnQpe2lmKGc9PWgpaT10cnVlO3JldHVybiBnLm93bmVyRG9jdW1lbnQ/LTE6
MX12YXIgbD1nLm93bmVyRG9jdW1lbnQuY3JlYXRlUmFuZ2UoKSxtPQpoLm93bmVy
RG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtsLnNldFN0YXJ0KGcsMCk7bC5zZXRFbmQo
ZywwKTttLnNldFN0YXJ0KGgsMCk7bS5zZXRFbmQoaCwwKTtnPWwuY29tcGFyZUJv
dW5kYXJ5UG9pbnRzKFJhbmdlLlNUQVJUX1RPX0VORCxtKTtpZihnPT09MClpPXRy
dWU7cmV0dXJuIGd9OyhmdW5jdGlvbigpe3ZhciBnPXMuY3JlYXRlRWxlbWVudCgi
ZGl2IiksaD0ic2NyaXB0IisobmV3IERhdGUpLmdldFRpbWUoKTtnLmlubmVySFRN
TD0iPGEgbmFtZT0nIitoKyInLz4iO3ZhciBsPXMuZG9jdW1lbnRFbGVtZW50O2wu
aW5zZXJ0QmVmb3JlKGcsbC5maXJzdENoaWxkKTtpZihzLmdldEVsZW1lbnRCeUlk
KGgpKXtuLmZpbmQuSUQ9ZnVuY3Rpb24obSxxLHApe2lmKHR5cGVvZiBxLmdldEVs
ZW1lbnRCeUlkIT09InVuZGVmaW5lZCImJiFwKXJldHVybihxPXEuZ2V0RWxlbWVu
dEJ5SWQobVsxXSkpP3EuaWQ9PT1tWzFdfHx0eXBlb2YgcS5nZXRBdHRyaWJ1dGVO
b2RlIT09InVuZGVmaW5lZCImJgpxLmdldEF0dHJpYnV0ZU5vZGUoImlkIikubm9k
ZVZhbHVlPT09bVsxXT9bcV06dzpbXX07bi5maWx0ZXIuSUQ9ZnVuY3Rpb24obSxx
KXt2YXIgcD10eXBlb2YgbS5nZXRBdHRyaWJ1dGVOb2RlIT09InVuZGVmaW5lZCIm
Jm0uZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gbS5ub2RlVHlwZT09PTEm
JnAmJnAubm9kZVZhbHVlPT09cX19bC5yZW1vdmVDaGlsZChnKTtsPWc9bnVsbH0p
KCk7KGZ1bmN0aW9uKCl7dmFyIGc9cy5jcmVhdGVFbGVtZW50KCJkaXYiKTtnLmFw
cGVuZENoaWxkKHMuY3JlYXRlQ29tbWVudCgiIikpO2lmKGcuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoIioiKS5sZW5ndGg+MCluLmZpbmQuVEFHPWZ1bmN0aW9uKGgsbCl7
bD1sLmdldEVsZW1lbnRzQnlUYWdOYW1lKGhbMV0pO2lmKGhbMV09PT0iKiIpe2g9
W107Zm9yKHZhciBtPTA7bFttXTttKyspbFttXS5ub2RlVHlwZT09PTEmJmgucHVz
aChsW21dKTtsPWh9cmV0dXJuIGx9O2cuaW5uZXJIVE1MPSI8YSBocmVmPScjJz48
L2E+IjsKaWYoZy5maXJzdENoaWxkJiZ0eXBlb2YgZy5maXJzdENoaWxkLmdldEF0
dHJpYnV0ZSE9PSJ1bmRlZmluZWQiJiZnLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRl
KCJocmVmIikhPT0iIyIpbi5hdHRySGFuZGxlLmhyZWY9ZnVuY3Rpb24oaCl7cmV0
dXJuIGguZ2V0QXR0cmlidXRlKCJocmVmIiwyKX07Zz1udWxsfSkoKTtzLnF1ZXJ5
U2VsZWN0b3JBbGwmJmZ1bmN0aW9uKCl7dmFyIGc9ayxoPXMuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7aC5pbm5lckhUTUw9IjxwIGNsYXNzPSdURVNUJz48L3A+IjtpZigh
KGgucXVlcnlTZWxlY3RvckFsbCYmaC5xdWVyeVNlbGVjdG9yQWxsKCIuVEVTVCIp
Lmxlbmd0aD09PTApKXtrPWZ1bmN0aW9uKG0scSxwLHYpe3E9cXx8cztpZighdiYm
cS5ub2RlVHlwZT09PTkmJiF4KHEpKXRyeXtyZXR1cm4geihxLnF1ZXJ5U2VsZWN0
b3JBbGwobSkscCl9Y2F0Y2godCl7fXJldHVybiBnKG0scSxwLHYpfTtmb3IodmFy
IGwgaW4gZylrW2xdPWdbbF07aD1udWxsfX0oKTsKKGZ1bmN0aW9uKCl7dmFyIGc9
cy5jcmVhdGVFbGVtZW50KCJkaXYiKTtnLmlubmVySFRNTD0iPGRpdiBjbGFzcz0n
dGVzdCBlJz48L2Rpdj48ZGl2IGNsYXNzPSd0ZXN0Jz48L2Rpdj4iO2lmKCEoIWcu
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZXx8Zy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KCJlIikubGVuZ3RoPT09MCkpe2cubGFzdENoaWxkLmNsYXNzTmFtZT0iZSI7aWYo
Zy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoIT09MSl7bi5vcmRl
ci5zcGxpY2UoMSwwLCJDTEFTUyIpO24uZmluZC5DTEFTUz1mdW5jdGlvbihoLGws
bSl7aWYodHlwZW9mIGwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSE9PSJ1bmRlZmlu
ZWQiJiYhbSlyZXR1cm4gbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGhbMV0pfTtn
PW51bGx9fX0pKCk7dmFyIEU9cy5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj9mdW5j
dGlvbihnLGgpe3JldHVybiEhKGcuY29tcGFyZURvY3VtZW50UG9zaXRpb24oaCkm
MTYpfToKZnVuY3Rpb24oZyxoKXtyZXR1cm4gZyE9PWgmJihnLmNvbnRhaW5zP2cu
Y29udGFpbnMoaCk6dHJ1ZSl9LHg9ZnVuY3Rpb24oZyl7cmV0dXJuKGc9KGc/Zy5v
d25lckRvY3VtZW50fHxnOjApLmRvY3VtZW50RWxlbWVudCk/Zy5ub2RlTmFtZSE9
PSJIVE1MIjpmYWxzZX0sZ2E9ZnVuY3Rpb24oZyxoKXt2YXIgbD1bXSxtPSIiLHE7
Zm9yKGg9aC5ub2RlVHlwZT9baF06aDtxPW4ubWF0Y2guUFNFVURPLmV4ZWMoZyk7
KXttKz1xWzBdO2c9Zy5yZXBsYWNlKG4ubWF0Y2guUFNFVURPLCIiKX1nPW4ucmVs
YXRpdmVbZ10/ZysiKiI6ZztxPTA7Zm9yKHZhciBwPWgubGVuZ3RoO3E8cDtxKysp
ayhnLGhbcV0sbCk7cmV0dXJuIGsuZmlsdGVyKG0sbCl9O2MuZmluZD1rO2MuZXhw
cj1rLnNlbGVjdG9ycztjLmV4cHJbIjoiXT1jLmV4cHIuZmlsdGVycztjLnVuaXF1
ZT1rLnVuaXF1ZVNvcnQ7Yy50ZXh0PWE7Yy5pc1hNTERvYz14O2MuY29udGFpbnM9
RX0pKCk7dmFyIGViPS9VbnRpbCQvLGZiPS9eKD86cGFyZW50c3xwcmV2VW50aWx8
cHJldkFsbCkvLApnYj0vLC87Uj1BcnJheS5wcm90b3R5cGUuc2xpY2U7dmFyIElh
PWZ1bmN0aW9uKGEsYixkKXtpZihjLmlzRnVuY3Rpb24oYikpcmV0dXJuIGMuZ3Jl
cChhLGZ1bmN0aW9uKGUsail7cmV0dXJuISFiLmNhbGwoZSxqLGUpPT09ZH0pO2Vs
c2UgaWYoYi5ub2RlVHlwZSlyZXR1cm4gYy5ncmVwKGEsZnVuY3Rpb24oZSl7cmV0
dXJuIGU9PT1iPT09ZH0pO2Vsc2UgaWYodHlwZW9mIGI9PT0ic3RyaW5nIil7dmFy
IGY9Yy5ncmVwKGEsZnVuY3Rpb24oZSl7cmV0dXJuIGUubm9kZVR5cGU9PT0xfSk7
aWYoVWEudGVzdChiKSlyZXR1cm4gYy5maWx0ZXIoYixmLCFkKTtlbHNlIGI9Yy5m
aWx0ZXIoYixmKX1yZXR1cm4gYy5ncmVwKGEsZnVuY3Rpb24oZSl7cmV0dXJuIGMu
aW5BcnJheShlLGIpPj0wPT09ZH0pfTtjLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlv
bihhKXtmb3IodmFyIGI9dGhpcy5wdXNoU3RhY2soIiIsImZpbmQiLGEpLGQ9MCxm
PTAsZT10aGlzLmxlbmd0aDtmPGU7ZisrKXtkPWIubGVuZ3RoOwpjLmZpbmQoYSx0
aGlzW2ZdLGIpO2lmKGY+MClmb3IodmFyIGo9ZDtqPGIubGVuZ3RoO2orKylmb3Io
dmFyIGk9MDtpPGQ7aSsrKWlmKGJbaV09PT1iW2pdKXtiLnNwbGljZShqLS0sMSk7
YnJlYWt9fXJldHVybiBifSxoYXM6ZnVuY3Rpb24oYSl7dmFyIGI9YyhhKTtyZXR1
cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGQ9MCxmPWIubGVuZ3Ro
O2Q8ZjtkKyspaWYoYy5jb250YWlucyh0aGlzLGJbZF0pKXJldHVybiB0cnVlfSl9
LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soSWEodGhpcyxh
LGZhbHNlKSwibm90IixhKX0sZmlsdGVyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlz
LnB1c2hTdGFjayhJYSh0aGlzLGEsdHJ1ZSksImZpbHRlciIsYSl9LGlzOmZ1bmN0
aW9uKGEpe3JldHVybiEhYSYmYy5maWx0ZXIoYSx0aGlzKS5sZW5ndGg+MH0sY2xv
c2VzdDpmdW5jdGlvbihhLGIpe2lmKGMuaXNBcnJheShhKSl7dmFyIGQ9W10sZj10
aGlzWzBdLGUsaj0Ke30saTtpZihmJiZhLmxlbmd0aCl7ZT0wO2Zvcih2YXIgbz1h
Lmxlbmd0aDtlPG87ZSsrKXtpPWFbZV07altpXXx8KGpbaV09Yy5leHByLm1hdGNo
LlBPUy50ZXN0KGkpP2MoaSxifHx0aGlzLmNvbnRleHQpOmkpfWZvcig7ZiYmZi5v
d25lckRvY3VtZW50JiZmIT09Yjspe2ZvcihpIGluIGope2U9altpXTtpZihlLmpx
dWVyeT9lLmluZGV4KGYpPi0xOmMoZikuaXMoZSkpe2QucHVzaCh7c2VsZWN0b3I6
aSxlbGVtOmZ9KTtkZWxldGUgaltpXX19Zj1mLnBhcmVudE5vZGV9fXJldHVybiBk
fXZhciBrPWMuZXhwci5tYXRjaC5QT1MudGVzdChhKT9jKGEsYnx8dGhpcy5jb250
ZXh0KTpudWxsO3JldHVybiB0aGlzLm1hcChmdW5jdGlvbihuLHIpe2Zvcig7ciYm
ci5vd25lckRvY3VtZW50JiZyIT09Yjspe2lmKGs/ay5pbmRleChyKT4tMTpjKHIp
LmlzKGEpKXJldHVybiByO3I9ci5wYXJlbnROb2RlfXJldHVybiBudWxsfSl9LGlu
ZGV4OmZ1bmN0aW9uKGEpe2lmKCFhfHx0eXBlb2YgYT09PQoic3RyaW5nIilyZXR1
cm4gYy5pbkFycmF5KHRoaXNbMF0sYT9jKGEpOnRoaXMucGFyZW50KCkuY2hpbGRy
ZW4oKSk7cmV0dXJuIGMuaW5BcnJheShhLmpxdWVyeT9hWzBdOmEsdGhpcyl9LGFk
ZDpmdW5jdGlvbihhLGIpe2E9dHlwZW9mIGE9PT0ic3RyaW5nIj9jKGEsYnx8dGhp
cy5jb250ZXh0KTpjLm1ha2VBcnJheShhKTtiPWMubWVyZ2UodGhpcy5nZXQoKSxh
KTtyZXR1cm4gdGhpcy5wdXNoU3RhY2socWEoYVswXSl8fHFhKGJbMF0pP2I6Yy51
bmlxdWUoYikpfSxhbmRTZWxmOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWRkKHRo
aXMucHJldk9iamVjdCl9fSk7Yy5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0
dXJuKGE9YS5wYXJlbnROb2RlKSYmYS5ub2RlVHlwZSE9PTExP2E6bnVsbH0scGFy
ZW50czpmdW5jdGlvbihhKXtyZXR1cm4gYy5kaXIoYSwicGFyZW50Tm9kZSIpfSxw
YXJlbnRzVW50aWw6ZnVuY3Rpb24oYSxiLGQpe3JldHVybiBjLmRpcihhLCJwYXJl
bnROb2RlIiwKZCl9LG5leHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGMubnRoKGEsMiwi
bmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihhKXtyZXR1cm4gYy5udGgoYSwy
LCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihhKXtyZXR1cm4g
Yy5kaXIoYSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihhKXtyZXR1
cm4gYy5kaXIoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlv
bihhLGIsZCl7cmV0dXJuIGMuZGlyKGEsIm5leHRTaWJsaW5nIixkKX0scHJldlVu
dGlsOmZ1bmN0aW9uKGEsYixkKXtyZXR1cm4gYy5kaXIoYSwicHJldmlvdXNTaWJs
aW5nIixkKX0sc2libGluZ3M6ZnVuY3Rpb24oYSl7cmV0dXJuIGMuc2libGluZyhh
LnBhcmVudE5vZGUuZmlyc3RDaGlsZCxhKX0sY2hpbGRyZW46ZnVuY3Rpb24oYSl7
cmV0dXJuIGMuc2libGluZyhhLmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlv
bihhKXtyZXR1cm4gYy5ub2RlTmFtZShhLCJpZnJhbWUiKT8KYS5jb250ZW50RG9j
dW1lbnR8fGEuY29udGVudFdpbmRvdy5kb2N1bWVudDpjLm1ha2VBcnJheShhLmNo
aWxkTm9kZXMpfX0sZnVuY3Rpb24oYSxiKXtjLmZuW2FdPWZ1bmN0aW9uKGQsZil7
dmFyIGU9Yy5tYXAodGhpcyxiLGQpO2ViLnRlc3QoYSl8fChmPWQpO2lmKGYmJnR5
cGVvZiBmPT09InN0cmluZyIpZT1jLmZpbHRlcihmLGUpO2U9dGhpcy5sZW5ndGg+
MT9jLnVuaXF1ZShlKTplO2lmKCh0aGlzLmxlbmd0aD4xfHxnYi50ZXN0KGYpKSYm
ZmIudGVzdChhKSllPWUucmV2ZXJzZSgpO3JldHVybiB0aGlzLnB1c2hTdGFjayhl
LGEsUi5jYWxsKGFyZ3VtZW50cykuam9pbigiLCIpKX19KTtjLmV4dGVuZCh7Zmls
dGVyOmZ1bmN0aW9uKGEsYixkKXtpZihkKWE9Ijpub3QoIithKyIpIjtyZXR1cm4g
Yy5maW5kLm1hdGNoZXMoYSxiKX0sZGlyOmZ1bmN0aW9uKGEsYixkKXt2YXIgZj1b
XTtmb3IoYT1hW2JdO2EmJmEubm9kZVR5cGUhPT05JiYoZD09PXd8fGEubm9kZVR5
cGUhPT0xfHwhYyhhKS5pcyhkKSk7KXthLm5vZGVUeXBlPT09CjEmJmYucHVzaChh
KTthPWFbYl19cmV0dXJuIGZ9LG50aDpmdW5jdGlvbihhLGIsZCl7Yj1ifHwxO2Zv
cih2YXIgZj0wO2E7YT1hW2RdKWlmKGEubm9kZVR5cGU9PT0xJiYrK2Y9PT1iKWJy
ZWFrO3JldHVybiBhfSxzaWJsaW5nOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBkPVtd
O2E7YT1hLm5leHRTaWJsaW5nKWEubm9kZVR5cGU9PT0xJiZhIT09YiYmZC5wdXNo
KGEpO3JldHVybiBkfX0pO3ZhciBKYT0vIGpRdWVyeVxkKz0iKD86XGQrfG51bGwp
Ii9nLFY9L15ccysvLEthPS8oPChbXHc6XSspW14+XSo/KVwvPi9nLGhiPS9eKD86
YXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkk
L2ksTGE9LzwoW1x3Ol0rKS8saWI9Lzx0Ym9keS9pLGpiPS88fCYjP1x3KzsvLHRh
PS88c2NyaXB0fDxvYmplY3R8PGVtYmVkfDxvcHRpb258PHN0eWxlL2ksdWE9L2No
ZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksTWE9ZnVuY3Rpb24oYSxi
LGQpe3JldHVybiBoYi50ZXN0KGQpPwphOmIrIj48LyIrZCsiPiJ9LEY9e29wdGlv
bjpbMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJd
LGxlZ2VuZDpbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il0sdGhlYWQ6WzEs
Ijx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwv
dGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90
cj48L3Rib2R5PjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJv
ZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSxhcmVhOlsxLCI8
bWFwPiIsIjwvbWFwPiJdLF9kZWZhdWx0OlswLCIiLCIiXX07Ri5vcHRncm91cD1G
Lm9wdGlvbjtGLnRib2R5PUYudGZvb3Q9Ri5jb2xncm91cD1GLmNhcHRpb249Ri50
aGVhZDtGLnRoPUYudGQ7aWYoIWMuc3VwcG9ydC5odG1sU2VyaWFsaXplKUYuX2Rl
ZmF1bHQ9WzEsImRpdjxkaXY+IiwiPC9kaXY+Il07Yy5mbi5leHRlbmQoe3RleHQ6
ZnVuY3Rpb24oYSl7aWYoYy5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2go
ZnVuY3Rpb24oYil7dmFyIGQ9CmModGhpcyk7ZC50ZXh0KGEuY2FsbCh0aGlzLGIs
ZC50ZXh0KCkpKX0pO2lmKHR5cGVvZiBhIT09Im9iamVjdCImJmEhPT13KXJldHVy
biB0aGlzLmVtcHR5KCkuYXBwZW5kKCh0aGlzWzBdJiZ0aGlzWzBdLm93bmVyRG9j
dW1lbnR8fHMpLmNyZWF0ZVRleHROb2RlKGEpKTtyZXR1cm4gYy50ZXh0KHRoaXMp
fSx3cmFwQWxsOmZ1bmN0aW9uKGEpe2lmKGMuaXNGdW5jdGlvbihhKSlyZXR1cm4g
dGhpcy5lYWNoKGZ1bmN0aW9uKGQpe2ModGhpcykud3JhcEFsbChhLmNhbGwodGhp
cyxkKSl9KTtpZih0aGlzWzBdKXt2YXIgYj1jKGEsdGhpc1swXS5vd25lckRvY3Vt
ZW50KS5lcSgwKS5jbG9uZSh0cnVlKTt0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5z
ZXJ0QmVmb3JlKHRoaXNbMF0pO2IubWFwKGZ1bmN0aW9uKCl7Zm9yKHZhciBkPXRo
aXM7ZC5maXJzdENoaWxkJiZkLmZpcnN0Q2hpbGQubm9kZVR5cGU9PT0xOylkPWQu
Zmlyc3RDaGlsZDtyZXR1cm4gZH0pLmFwcGVuZCh0aGlzKX1yZXR1cm4gdGhpc30s
CndyYXBJbm5lcjpmdW5jdGlvbihhKXtpZihjLmlzRnVuY3Rpb24oYSkpcmV0dXJu
IHRoaXMuZWFjaChmdW5jdGlvbihiKXtjKHRoaXMpLndyYXBJbm5lcihhLmNhbGwo
dGhpcyxiKSl9KTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9Yyh0
aGlzKSxkPWIuY29udGVudHMoKTtkLmxlbmd0aD9kLndyYXBBbGwoYSk6Yi5hcHBl
bmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0
aW9uKCl7Yyh0aGlzKS53cmFwQWxsKGEpfSl9LHVud3JhcDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLnBhcmVudCgpLmVhY2goZnVuY3Rpb24oKXtjLm5vZGVOYW1lKHRo
aXMsImJvZHkiKXx8Yyh0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMp
fSkuZW5kKCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlw
KGFyZ3VtZW50cyx0cnVlLGZ1bmN0aW9uKGEpe3RoaXMubm9kZVR5cGU9PT0xJiZ0
aGlzLmFwcGVuZENoaWxkKGEpfSl9LApwcmVwZW5kOmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLHRydWUsZnVuY3Rpb24oYSl7dGhpcy5u
b2RlVHlwZT09PTEmJnRoaXMuaW5zZXJ0QmVmb3JlKGEsdGhpcy5maXJzdENoaWxk
KX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtpZih0aGlzWzBdJiZ0aGlzWzBdLnBhcmVu
dE5vZGUpcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZhbHNlLGZ1bmN0
aW9uKGIpe3RoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYix0aGlzKX0pO2Vs
c2UgaWYoYXJndW1lbnRzLmxlbmd0aCl7dmFyIGE9Yyhhcmd1bWVudHNbMF0pO2Eu
cHVzaC5hcHBseShhLHRoaXMudG9BcnJheSgpKTtyZXR1cm4gdGhpcy5wdXNoU3Rh
Y2soYSwiYmVmb3JlIixhcmd1bWVudHMpfX0sYWZ0ZXI6ZnVuY3Rpb24oKXtpZih0
aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGUpcmV0dXJuIHRoaXMuZG9tTWFuaXAo
YXJndW1lbnRzLGZhbHNlLGZ1bmN0aW9uKGIpe3RoaXMucGFyZW50Tm9kZS5pbnNl
cnRCZWZvcmUoYiwKdGhpcy5uZXh0U2libGluZyl9KTtlbHNlIGlmKGFyZ3VtZW50
cy5sZW5ndGgpe3ZhciBhPXRoaXMucHVzaFN0YWNrKHRoaXMsImFmdGVyIixhcmd1
bWVudHMpO2EucHVzaC5hcHBseShhLGMoYXJndW1lbnRzWzBdKS50b0FycmF5KCkp
O3JldHVybiBhfX0scmVtb3ZlOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBkPTAsZjso
Zj10aGlzW2RdKSE9bnVsbDtkKyspaWYoIWF8fGMuZmlsdGVyKGEsW2ZdKS5sZW5n
dGgpe2lmKCFiJiZmLm5vZGVUeXBlPT09MSl7Yy5jbGVhbkRhdGEoZi5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiKiIpKTtjLmNsZWFuRGF0YShbZl0pfWYucGFyZW50Tm9k
ZSYmZi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGYpfXJldHVybiB0aGlzfSxlbXB0
eTpmdW5jdGlvbigpe2Zvcih2YXIgYT0wLGI7KGI9dGhpc1thXSkhPW51bGw7YSsr
KWZvcihiLm5vZGVUeXBlPT09MSYmYy5jbGVhbkRhdGEoYi5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiKiIpKTtiLmZpcnN0Q2hpbGQ7KWIucmVtb3ZlQ2hpbGQoYi5maXJz
dENoaWxkKTsKcmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEpe3ZhciBiPXRo
aXMubWFwKGZ1bmN0aW9uKCl7aWYoIWMuc3VwcG9ydC5ub0Nsb25lRXZlbnQmJiFj
LmlzWE1MRG9jKHRoaXMpKXt2YXIgZD10aGlzLm91dGVySFRNTCxmPXRoaXMub3du
ZXJEb2N1bWVudDtpZighZCl7ZD1mLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2QuYXBw
ZW5kQ2hpbGQodGhpcy5jbG9uZU5vZGUodHJ1ZSkpO2Q9ZC5pbm5lckhUTUx9cmV0
dXJuIGMuY2xlYW4oW2QucmVwbGFjZShKYSwiIikucmVwbGFjZSgvPShbXj0iJz5c
c10rXC8pPi9nLCc9IiQxIj4nKS5yZXBsYWNlKFYsIiIpXSxmKVswXX1lbHNlIHJl
dHVybiB0aGlzLmNsb25lTm9kZSh0cnVlKX0pO2lmKGE9PT10cnVlKXtyYSh0aGlz
LGIpO3JhKHRoaXMuZmluZCgiKiIpLGIuZmluZCgiKiIpKX1yZXR1cm4gYn0saHRt
bDpmdW5jdGlvbihhKXtpZihhPT09dylyZXR1cm4gdGhpc1swXSYmdGhpc1swXS5u
b2RlVHlwZT09PTE/dGhpc1swXS5pbm5lckhUTUwucmVwbGFjZShKYSwKIiIpOm51
bGw7ZWxzZSBpZih0eXBlb2YgYT09PSJzdHJpbmciJiYhdGEudGVzdChhKSYmKGMu
c3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZXx8IVYudGVzdChhKSkmJiFGWyhMYS5l
eGVjKGEpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSl7YT1hLnJlcGxhY2Uo
S2EsTWEpO3RyeXtmb3IodmFyIGI9MCxkPXRoaXMubGVuZ3RoO2I8ZDtiKyspaWYo
dGhpc1tiXS5ub2RlVHlwZT09PTEpe2MuY2xlYW5EYXRhKHRoaXNbYl0uZ2V0RWxl
bWVudHNCeVRhZ05hbWUoIioiKSk7dGhpc1tiXS5pbm5lckhUTUw9YX19Y2F0Y2go
Zil7dGhpcy5lbXB0eSgpLmFwcGVuZChhKX19ZWxzZSBjLmlzRnVuY3Rpb24oYSk/
dGhpcy5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBqPWModGhpcyksaT1qLmh0bWwoKTtq
LmVtcHR5KCkuYXBwZW5kKGZ1bmN0aW9uKCl7cmV0dXJuIGEuY2FsbCh0aGlzLGUs
aSl9KX0pOnRoaXMuZW1wdHkoKS5hcHBlbmQoYSk7cmV0dXJuIHRoaXN9LHJlcGxh
Y2VXaXRoOmZ1bmN0aW9uKGEpe2lmKHRoaXNbMF0mJgp0aGlzWzBdLnBhcmVudE5v
ZGUpe2lmKGMuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9u
KGIpe3ZhciBkPWModGhpcyksZj1kLmh0bWwoKTtkLnJlcGxhY2VXaXRoKGEuY2Fs
bCh0aGlzLGIsZikpfSk7aWYodHlwZW9mIGEhPT0ic3RyaW5nIilhPWMoYSkuZGV0
YWNoKCk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPXRoaXMubmV4
dFNpYmxpbmcsZD10aGlzLnBhcmVudE5vZGU7Yyh0aGlzKS5yZW1vdmUoKTtiP2Mo
YikuYmVmb3JlKGEpOmMoZCkuYXBwZW5kKGEpfSl9ZWxzZSByZXR1cm4gdGhpcy5w
dXNoU3RhY2soYyhjLmlzRnVuY3Rpb24oYSk/YSgpOmEpLCJyZXBsYWNlV2l0aCIs
YSl9LGRldGFjaDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yZW1vdmUoYSx0cnVl
KX0sZG9tTWFuaXA6ZnVuY3Rpb24oYSxiLGQpe2Z1bmN0aW9uIGYodSl7cmV0dXJu
IGMubm9kZU5hbWUodSwidGFibGUiKT91LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
Ym9keSIpWzBdfHwKdS5hcHBlbmRDaGlsZCh1Lm93bmVyRG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgidGJvZHkiKSk6dX12YXIgZSxqLGk9YVswXSxvPVtdLGs7aWYoIWMu
c3VwcG9ydC5jaGVja0Nsb25lJiZhcmd1bWVudHMubGVuZ3RoPT09MyYmdHlwZW9m
IGk9PT0ic3RyaW5nIiYmdWEudGVzdChpKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0
aW9uKCl7Yyh0aGlzKS5kb21NYW5pcChhLGIsZCx0cnVlKX0pO2lmKGMuaXNGdW5j
dGlvbihpKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKHUpe3ZhciB6PWModGhp
cyk7YVswXT1pLmNhbGwodGhpcyx1LGI/ei5odG1sKCk6dyk7ei5kb21NYW5pcChh
LGIsZCl9KTtpZih0aGlzWzBdKXtlPWkmJmkucGFyZW50Tm9kZTtlPWMuc3VwcG9y
dC5wYXJlbnROb2RlJiZlJiZlLm5vZGVUeXBlPT09MTEmJmUuY2hpbGROb2Rlcy5s
ZW5ndGg9PT10aGlzLmxlbmd0aD97ZnJhZ21lbnQ6ZX06c2EoYSx0aGlzLG8pO2s9
ZS5mcmFnbWVudDtpZihqPWsuY2hpbGROb2Rlcy5sZW5ndGg9PT0KMT8oaz1rLmZp
cnN0Q2hpbGQpOmsuZmlyc3RDaGlsZCl7Yj1iJiZjLm5vZGVOYW1lKGosInRyIik7
Zm9yKHZhciBuPTAscj10aGlzLmxlbmd0aDtuPHI7bisrKWQuY2FsbChiP2YodGhp
c1tuXSxqKTp0aGlzW25dLG4+MHx8ZS5jYWNoZWFibGV8fHRoaXMubGVuZ3RoPjE/
ay5jbG9uZU5vZGUodHJ1ZSk6ayl9by5sZW5ndGgmJmMuZWFjaChvLFFhKX1yZXR1
cm4gdGhpc319KTtjLmZyYWdtZW50cz17fTtjLmVhY2goe2FwcGVuZFRvOiJhcHBl
bmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGlu
c2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5j
dGlvbihhLGIpe2MuZm5bYV09ZnVuY3Rpb24oZCl7dmFyIGY9W107ZD1jKGQpO3Zh
ciBlPXRoaXMubGVuZ3RoPT09MSYmdGhpc1swXS5wYXJlbnROb2RlO2lmKGUmJmUu
bm9kZVR5cGU9PT0xMSYmZS5jaGlsZE5vZGVzLmxlbmd0aD09PTEmJmQubGVuZ3Ro
PT09MSl7ZFtiXSh0aGlzWzBdKTsKcmV0dXJuIHRoaXN9ZWxzZXtlPTA7Zm9yKHZh
ciBqPWQubGVuZ3RoO2U8ajtlKyspe3ZhciBpPShlPjA/dGhpcy5jbG9uZSh0cnVl
KTp0aGlzKS5nZXQoKTtjLmZuW2JdLmFwcGx5KGMoZFtlXSksaSk7Zj1mLmNvbmNh
dChpKX1yZXR1cm4gdGhpcy5wdXNoU3RhY2soZixhLGQuc2VsZWN0b3IpfX19KTtj
LmV4dGVuZCh7Y2xlYW46ZnVuY3Rpb24oYSxiLGQsZil7Yj1ifHxzO2lmKHR5cGVv
ZiBiLmNyZWF0ZUVsZW1lbnQ9PT0idW5kZWZpbmVkIiliPWIub3duZXJEb2N1bWVu
dHx8YlswXSYmYlswXS5vd25lckRvY3VtZW50fHxzO2Zvcih2YXIgZT1bXSxqPTAs
aTsoaT1hW2pdKSE9bnVsbDtqKyspe2lmKHR5cGVvZiBpPT09Im51bWJlciIpaSs9
IiI7aWYoaSl7aWYodHlwZW9mIGk9PT0ic3RyaW5nIiYmIWpiLnRlc3QoaSkpaT1i
LmNyZWF0ZVRleHROb2RlKGkpO2Vsc2UgaWYodHlwZW9mIGk9PT0ic3RyaW5nIil7
aT1pLnJlcGxhY2UoS2EsTWEpO3ZhciBvPShMYS5leGVjKGkpfHxbIiIsCiIiXSlb
MV0udG9Mb3dlckNhc2UoKSxrPUZbb118fEYuX2RlZmF1bHQsbj1rWzBdLHI9Yi5j
cmVhdGVFbGVtZW50KCJkaXYiKTtmb3Ioci5pbm5lckhUTUw9a1sxXStpK2tbMl07
bi0tOylyPXIubGFzdENoaWxkO2lmKCFjLnN1cHBvcnQudGJvZHkpe249aWIudGVz
dChpKTtvPW89PT0idGFibGUiJiYhbj9yLmZpcnN0Q2hpbGQmJnIuZmlyc3RDaGls
ZC5jaGlsZE5vZGVzOmtbMV09PT0iPHRhYmxlPiImJiFuP3IuY2hpbGROb2Rlczpb
XTtmb3Ioaz1vLmxlbmd0aC0xO2s+PTA7LS1rKWMubm9kZU5hbWUob1trXSwidGJv
ZHkiKSYmIW9ba10uY2hpbGROb2Rlcy5sZW5ndGgmJm9ba10ucGFyZW50Tm9kZS5y
ZW1vdmVDaGlsZChvW2tdKX0hYy5zdXBwb3J0LmxlYWRpbmdXaGl0ZXNwYWNlJiZW
LnRlc3QoaSkmJnIuaW5zZXJ0QmVmb3JlKGIuY3JlYXRlVGV4dE5vZGUoVi5leGVj
KGkpWzBdKSxyLmZpcnN0Q2hpbGQpO2k9ci5jaGlsZE5vZGVzfWlmKGkubm9kZVR5
cGUpZS5wdXNoKGkpO2Vsc2UgZT0KYy5tZXJnZShlLGkpfX1pZihkKWZvcihqPTA7
ZVtqXTtqKyspaWYoZiYmYy5ub2RlTmFtZShlW2pdLCJzY3JpcHQiKSYmKCFlW2pd
LnR5cGV8fGVbal0udHlwZS50b0xvd2VyQ2FzZSgpPT09InRleHQvamF2YXNjcmlw
dCIpKWYucHVzaChlW2pdLnBhcmVudE5vZGU/ZVtqXS5wYXJlbnROb2RlLnJlbW92
ZUNoaWxkKGVbal0pOmVbal0pO2Vsc2V7ZVtqXS5ub2RlVHlwZT09PTEmJmUuc3Bs
aWNlLmFwcGx5KGUsW2orMSwwXS5jb25jYXQoYy5tYWtlQXJyYXkoZVtqXS5nZXRF
bGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IikpKSk7ZC5hcHBlbmRDaGlsZChlW2pd
KX1yZXR1cm4gZX0sY2xlYW5EYXRhOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYixkLGY9
Yy5jYWNoZSxlPWMuZXZlbnQuc3BlY2lhbCxqPWMuc3VwcG9ydC5kZWxldGVFeHBh
bmRvLGk9MCxvOyhvPWFbaV0pIT1udWxsO2krKylpZihkPW9bYy5leHBhbmRvXSl7
Yj1mW2RdO2lmKGIuZXZlbnRzKWZvcih2YXIgayBpbiBiLmV2ZW50cyllW2tdPwpj
LmV2ZW50LnJlbW92ZShvLGspOkNhKG8sayxiLmhhbmRsZSk7aWYoailkZWxldGUg
b1tjLmV4cGFuZG9dO2Vsc2Ugby5yZW1vdmVBdHRyaWJ1dGUmJm8ucmVtb3ZlQXR0
cmlidXRlKGMuZXhwYW5kbyk7ZGVsZXRlIGZbZF19fX0pO3ZhciBrYj0vei0/aW5k
ZXh8Zm9udC0/d2VpZ2h0fG9wYWNpdHl8em9vbXxsaW5lLT9oZWlnaHQvaSxOYT0v
YWxwaGFcKFteKV0qXCkvLE9hPS9vcGFjaXR5PShbXildKikvLGhhPS9mbG9hdC9p
LGlhPS8tKFthLXpdKS9pZyxsYj0vKFtBLVpdKS9nLG1iPS9eLT9cZCsoPzpweCk/
JC9pLG5iPS9eLT9cZC8sb2I9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0
eToiaGlkZGVuIixkaXNwbGF5OiJibG9jayJ9LHBiPVsiTGVmdCIsIlJpZ2h0Il0s
cWI9WyJUb3AiLCJCb3R0b20iXSxyYj1zLmRlZmF1bHRWaWV3JiZzLmRlZmF1bHRW
aWV3LmdldENvbXB1dGVkU3R5bGUsUGE9Yy5zdXBwb3J0LmNzc0Zsb2F0PyJjc3NG
bG9hdCI6InN0eWxlRmxvYXQiLGphPQpmdW5jdGlvbihhLGIpe3JldHVybiBiLnRv
VXBwZXJDYXNlKCl9O2MuZm4uY3NzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFgodGhp
cyxhLGIsdHJ1ZSxmdW5jdGlvbihkLGYsZSl7aWYoZT09PXcpcmV0dXJuIGMuY3Vy
Q1NTKGQsZik7aWYodHlwZW9mIGU9PT0ibnVtYmVyIiYmIWtiLnRlc3QoZikpZSs9
InB4IjtjLnN0eWxlKGQsZixlKX0pfTtjLmV4dGVuZCh7c3R5bGU6ZnVuY3Rpb24o
YSxiLGQpe2lmKCFhfHxhLm5vZGVUeXBlPT09M3x8YS5ub2RlVHlwZT09PTgpcmV0
dXJuIHc7aWYoKGI9PT0id2lkdGgifHxiPT09ImhlaWdodCIpJiZwYXJzZUZsb2F0
KGQpPDApZD13O3ZhciBmPWEuc3R5bGV8fGEsZT1kIT09dztpZighYy5zdXBwb3J0
Lm9wYWNpdHkmJmI9PT0ib3BhY2l0eSIpe2lmKGUpe2Yuem9vbT0xO2I9cGFyc2VJ
bnQoZCwxMCkrIiI9PT0iTmFOIj8iIjoiYWxwaGEob3BhY2l0eT0iK2QqMTAwKyIp
IjthPWYuZmlsdGVyfHxjLmN1ckNTUyhhLCJmaWx0ZXIiKXx8IiI7Zi5maWx0ZXI9
Ck5hLnRlc3QoYSk/YS5yZXBsYWNlKE5hLGIpOmJ9cmV0dXJuIGYuZmlsdGVyJiZm
LmZpbHRlci5pbmRleE9mKCJvcGFjaXR5PSIpPj0wP3BhcnNlRmxvYXQoT2EuZXhl
YyhmLmZpbHRlcilbMV0pLzEwMCsiIjoiIn1pZihoYS50ZXN0KGIpKWI9UGE7Yj1i
LnJlcGxhY2UoaWEsamEpO2lmKGUpZltiXT1kO3JldHVybiBmW2JdfSxjc3M6ZnVu
Y3Rpb24oYSxiLGQsZil7aWYoYj09PSJ3aWR0aCJ8fGI9PT0iaGVpZ2h0Iil7dmFy
IGUsaj1iPT09IndpZHRoIj9wYjpxYjtmdW5jdGlvbiBpKCl7ZT1iPT09IndpZHRo
Ij9hLm9mZnNldFdpZHRoOmEub2Zmc2V0SGVpZ2h0O2YhPT0iYm9yZGVyIiYmYy5l
YWNoKGosZnVuY3Rpb24oKXtmfHwoZS09cGFyc2VGbG9hdChjLmN1ckNTUyhhLCJw
YWRkaW5nIit0aGlzLHRydWUpKXx8MCk7aWYoZj09PSJtYXJnaW4iKWUrPXBhcnNl
RmxvYXQoYy5jdXJDU1MoYSwibWFyZ2luIit0aGlzLHRydWUpKXx8MDtlbHNlIGUt
PXBhcnNlRmxvYXQoYy5jdXJDU1MoYSwKImJvcmRlciIrdGhpcysiV2lkdGgiLHRy
dWUpKXx8MH0pfWEub2Zmc2V0V2lkdGghPT0wP2koKTpjLnN3YXAoYSxvYixpKTty
ZXR1cm4gTWF0aC5tYXgoMCxNYXRoLnJvdW5kKGUpKX1yZXR1cm4gYy5jdXJDU1Mo
YSxiLGQpfSxjdXJDU1M6ZnVuY3Rpb24oYSxiLGQpe3ZhciBmLGU9YS5zdHlsZTtp
ZighYy5zdXBwb3J0Lm9wYWNpdHkmJmI9PT0ib3BhY2l0eSImJmEuY3VycmVudFN0
eWxlKXtmPU9hLnRlc3QoYS5jdXJyZW50U3R5bGUuZmlsdGVyfHwiIik/cGFyc2VG
bG9hdChSZWdFeHAuJDEpLzEwMCsiIjoiIjtyZXR1cm4gZj09PSIiPyIxIjpmfWlm
KGhhLnRlc3QoYikpYj1QYTtpZighZCYmZSYmZVtiXSlmPWVbYl07ZWxzZSBpZihy
Yil7aWYoaGEudGVzdChiKSliPSJmbG9hdCI7Yj1iLnJlcGxhY2UobGIsIi0kMSIp
LnRvTG93ZXJDYXNlKCk7ZT1hLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7aWYo
IWUpcmV0dXJuIG51bGw7aWYoYT1lLmdldENvbXB1dGVkU3R5bGUoYSxudWxsKSlm
PQphLmdldFByb3BlcnR5VmFsdWUoYik7aWYoYj09PSJvcGFjaXR5IiYmZj09PSIi
KWY9IjEifWVsc2UgaWYoYS5jdXJyZW50U3R5bGUpe2Q9Yi5yZXBsYWNlKGlhLGph
KTtmPWEuY3VycmVudFN0eWxlW2JdfHxhLmN1cnJlbnRTdHlsZVtkXTtpZighbWIu
dGVzdChmKSYmbmIudGVzdChmKSl7Yj1lLmxlZnQ7dmFyIGo9YS5ydW50aW1lU3R5
bGUubGVmdDthLnJ1bnRpbWVTdHlsZS5sZWZ0PWEuY3VycmVudFN0eWxlLmxlZnQ7
ZS5sZWZ0PWQ9PT0iZm9udFNpemUiPyIxZW0iOmZ8fDA7Zj1lLnBpeGVsTGVmdCsi
cHgiO2UubGVmdD1iO2EucnVudGltZVN0eWxlLmxlZnQ9an19cmV0dXJuIGZ9LHN3
YXA6ZnVuY3Rpb24oYSxiLGQpe3ZhciBmPXt9O2Zvcih2YXIgZSBpbiBiKXtmW2Vd
PWEuc3R5bGVbZV07YS5zdHlsZVtlXT1iW2VdfWQuY2FsbChhKTtmb3IoZSBpbiBi
KWEuc3R5bGVbZV09ZltlXX19KTtpZihjLmV4cHImJmMuZXhwci5maWx0ZXJzKXtj
LmV4cHIuZmlsdGVycy5oaWRkZW49ZnVuY3Rpb24oYSl7dmFyIGI9CmEub2Zmc2V0
V2lkdGgsZD1hLm9mZnNldEhlaWdodCxmPWEubm9kZU5hbWUudG9Mb3dlckNhc2Uo
KT09PSJ0ciI7cmV0dXJuIGI9PT0wJiZkPT09MCYmIWY/dHJ1ZTpiPjAmJmQ+MCYm
IWY/ZmFsc2U6Yy5jdXJDU1MoYSwiZGlzcGxheSIpPT09Im5vbmUifTtjLmV4cHIu
ZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFjLmV4cHIuZmlsdGVy
cy5oaWRkZW4oYSl9fXZhciBzYj1KKCksdGI9LzxzY3JpcHQoLnxccykqP1wvc2Ny
aXB0Pi9naSx1Yj0vc2VsZWN0fHRleHRhcmVhL2ksdmI9L2NvbG9yfGRhdGV8ZGF0
ZXRpbWV8ZW1haWx8aGlkZGVufG1vbnRofG51bWJlcnxwYXNzd29yZHxyYW5nZXxz
ZWFyY2h8dGVsfHRleHR8dGltZXx1cmx8d2Vlay9pLE49Lz1cPygmfCQpLyxrYT0v
XD8vLHdiPS8oXD98JilfPS4qPygmfCQpLyx4Yj0vXihcdys6KT9cL1wvKFteXC8/
I10rKS8seWI9LyUyMC9nLHpiPWMuZm4ubG9hZDtjLmZuLmV4dGVuZCh7bG9hZDpm
dW5jdGlvbihhLGIsZCl7aWYodHlwZW9mIGEhPT0KInN0cmluZyIpcmV0dXJuIHpi
LmNhbGwodGhpcyxhKTtlbHNlIGlmKCF0aGlzLmxlbmd0aClyZXR1cm4gdGhpczt2
YXIgZj1hLmluZGV4T2YoIiAiKTtpZihmPj0wKXt2YXIgZT1hLnNsaWNlKGYsYS5s
ZW5ndGgpO2E9YS5zbGljZSgwLGYpfWY9IkdFVCI7aWYoYilpZihjLmlzRnVuY3Rp
b24oYikpe2Q9YjtiPW51bGx9ZWxzZSBpZih0eXBlb2YgYj09PSJvYmplY3QiKXti
PWMucGFyYW0oYixjLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCk7Zj0iUE9TVCJ9
dmFyIGo9dGhpcztjLmFqYXgoe3VybDphLHR5cGU6ZixkYXRhVHlwZToiaHRtbCIs
ZGF0YTpiLGNvbXBsZXRlOmZ1bmN0aW9uKGksbyl7aWYobz09PSJzdWNjZXNzInx8
bz09PSJub3Rtb2RpZmllZCIpai5odG1sKGU/YygiPGRpdiAvPiIpLmFwcGVuZChp
LnJlc3BvbnNlVGV4dC5yZXBsYWNlKHRiLCIiKSkuZmluZChlKTppLnJlc3BvbnNl
VGV4dCk7ZCYmai5lYWNoKGQsW2kucmVzcG9uc2VUZXh0LG8saV0pfX0pO3JldHVy
biB0aGlzfSwKc2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIGMucGFyYW0odGhp
cy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50cz9j
Lm1ha2VBcnJheSh0aGlzLmVsZW1lbnRzKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMubmFtZSYmIXRoaXMuZGlzYWJsZWQmJih0aGlzLmNoZWNr
ZWR8fHViLnRlc3QodGhpcy5ub2RlTmFtZSl8fHZiLnRlc3QodGhpcy50eXBlKSl9
KS5tYXAoZnVuY3Rpb24oYSxiKXthPWModGhpcykudmFsKCk7cmV0dXJuIGE9PW51
bGw/bnVsbDpjLmlzQXJyYXkoYSk/Yy5tYXAoYSxmdW5jdGlvbihkKXtyZXR1cm57
bmFtZTpiLm5hbWUsdmFsdWU6ZH19KTp7bmFtZTpiLm5hbWUsdmFsdWU6YX19KS5n
ZXQoKX19KTtjLmVhY2goImFqYXhTdGFydCBhamF4U3RvcCBhamF4Q29tcGxldGUg
YWpheEVycm9yIGFqYXhTdWNjZXNzIGFqYXhTZW5kIi5zcGxpdCgiICIpLApmdW5j
dGlvbihhLGIpe2MuZm5bYl09ZnVuY3Rpb24oZCl7cmV0dXJuIHRoaXMuYmluZChi
LGQpfX0pO2MuZXh0ZW5kKHtnZXQ6ZnVuY3Rpb24oYSxiLGQsZil7aWYoYy5pc0Z1
bmN0aW9uKGIpKXtmPWZ8fGQ7ZD1iO2I9bnVsbH1yZXR1cm4gYy5hamF4KHt0eXBl
OiJHRVQiLHVybDphLGRhdGE6YixzdWNjZXNzOmQsZGF0YVR5cGU6Zn0pfSxnZXRT
Y3JpcHQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYy5nZXQoYSxudWxsLGIsInNjcmlw
dCIpfSxnZXRKU09OOmZ1bmN0aW9uKGEsYixkKXtyZXR1cm4gYy5nZXQoYSxiLGQs
Impzb24iKX0scG9zdDpmdW5jdGlvbihhLGIsZCxmKXtpZihjLmlzRnVuY3Rpb24o
Yikpe2Y9Znx8ZDtkPWI7Yj17fX1yZXR1cm4gYy5hamF4KHt0eXBlOiJQT1NUIix1
cmw6YSxkYXRhOmIsc3VjY2VzczpkLGRhdGFUeXBlOmZ9KX0sYWpheFNldHVwOmZ1
bmN0aW9uKGEpe2MuZXh0ZW5kKGMuYWpheFNldHRpbmdzLGEpfSxhamF4U2V0dGlu
Z3M6e3VybDpsb2NhdGlvbi5ocmVmLApnbG9iYWw6dHJ1ZSx0eXBlOiJHRVQiLGNv
bnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLHBy
b2Nlc3NEYXRhOnRydWUsYXN5bmM6dHJ1ZSx4aHI6QS5YTUxIdHRwUmVxdWVzdCYm
KEEubG9jYXRpb24ucHJvdG9jb2whPT0iZmlsZToifHwhQS5BY3RpdmVYT2JqZWN0
KT9mdW5jdGlvbigpe3JldHVybiBuZXcgQS5YTUxIdHRwUmVxdWVzdH06ZnVuY3Rp
b24oKXt0cnl7cmV0dXJuIG5ldyBBLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5Y
TUxIVFRQIil9Y2F0Y2goYSl7fX0sYWNjZXB0czp7eG1sOiJhcHBsaWNhdGlvbi94
bWwsIHRleHQveG1sIixodG1sOiJ0ZXh0L2h0bWwiLHNjcmlwdDoidGV4dC9qYXZh
c2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iixqc29uOiJhcHBsaWNhdGlv
bi9qc29uLCB0ZXh0L2phdmFzY3JpcHQiLHRleHQ6InRleHQvcGxhaW4iLF9kZWZh
dWx0OiIqLyoifX0sbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheDpmdW5jdGlv
bihhKXtmdW5jdGlvbiBiKCl7ZS5zdWNjZXNzJiYKZS5zdWNjZXNzLmNhbGwoayxv
LGkseCk7ZS5nbG9iYWwmJmYoImFqYXhTdWNjZXNzIixbeCxlXSl9ZnVuY3Rpb24g
ZCgpe2UuY29tcGxldGUmJmUuY29tcGxldGUuY2FsbChrLHgsaSk7ZS5nbG9iYWwm
JmYoImFqYXhDb21wbGV0ZSIsW3gsZV0pO2UuZ2xvYmFsJiYhLS1jLmFjdGl2ZSYm
Yy5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpfWZ1bmN0aW9uIGYocSxwKXsoZS5j
b250ZXh0P2MoZS5jb250ZXh0KTpjLmV2ZW50KS50cmlnZ2VyKHEscCl9dmFyIGU9
Yy5leHRlbmQodHJ1ZSx7fSxjLmFqYXhTZXR0aW5ncyxhKSxqLGksbyxrPWEmJmEu
Y29udGV4dHx8ZSxuPWUudHlwZS50b1VwcGVyQ2FzZSgpO2lmKGUuZGF0YSYmZS5w
cm9jZXNzRGF0YSYmdHlwZW9mIGUuZGF0YSE9PSJzdHJpbmciKWUuZGF0YT1jLnBh
cmFtKGUuZGF0YSxlLnRyYWRpdGlvbmFsKTtpZihlLmRhdGFUeXBlPT09Impzb25w
Iil7aWYobj09PSJHRVQiKU4udGVzdChlLnVybCl8fChlLnVybCs9KGthLnRlc3Qo
ZS51cmwpPwoiJiI6Ij8iKSsoZS5qc29ucHx8ImNhbGxiYWNrIikrIj0/Iik7ZWxz
ZSBpZighZS5kYXRhfHwhTi50ZXN0KGUuZGF0YSkpZS5kYXRhPShlLmRhdGE/ZS5k
YXRhKyImIjoiIikrKGUuanNvbnB8fCJjYWxsYmFjayIpKyI9PyI7ZS5kYXRhVHlw
ZT0ianNvbiJ9aWYoZS5kYXRhVHlwZT09PSJqc29uIiYmKGUuZGF0YSYmTi50ZXN0
KGUuZGF0YSl8fE4udGVzdChlLnVybCkpKXtqPWUuanNvbnBDYWxsYmFja3x8Impz
b25wIitzYisrO2lmKGUuZGF0YSllLmRhdGE9KGUuZGF0YSsiIikucmVwbGFjZShO
LCI9IitqKyIkMSIpO2UudXJsPWUudXJsLnJlcGxhY2UoTiwiPSIraisiJDEiKTtl
LmRhdGFUeXBlPSJzY3JpcHQiO0Fbal09QVtqXXx8ZnVuY3Rpb24ocSl7bz1xO2Io
KTtkKCk7QVtqXT13O3RyeXtkZWxldGUgQVtqXX1jYXRjaChwKXt9eiYmei5yZW1v
dmVDaGlsZChDKX19aWYoZS5kYXRhVHlwZT09PSJzY3JpcHQiJiZlLmNhY2hlPT09
bnVsbCllLmNhY2hlPWZhbHNlO2lmKGUuY2FjaGU9PT0KZmFsc2UmJm49PT0iR0VU
Iil7dmFyIHI9SigpLHU9ZS51cmwucmVwbGFjZSh3YiwiJDFfPSIrcisiJDIiKTtl
LnVybD11Kyh1PT09ZS51cmw/KGthLnRlc3QoZS51cmwpPyImIjoiPyIpKyJfPSIr
cjoiIil9aWYoZS5kYXRhJiZuPT09IkdFVCIpZS51cmwrPShrYS50ZXN0KGUudXJs
KT8iJiI6Ij8iKStlLmRhdGE7ZS5nbG9iYWwmJiFjLmFjdGl2ZSsrJiZjLmV2ZW50
LnRyaWdnZXIoImFqYXhTdGFydCIpO3I9KHI9eGIuZXhlYyhlLnVybCkpJiYoclsx
XSYmclsxXSE9PWxvY2F0aW9uLnByb3RvY29sfHxyWzJdIT09bG9jYXRpb24uaG9z
dCk7aWYoZS5kYXRhVHlwZT09PSJzY3JpcHQiJiZuPT09IkdFVCImJnIpe3ZhciB6
PXMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXXx8cy5kb2N1bWVudEVs
ZW1lbnQsQz1zLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO0Muc3JjPWUudXJsO2lm
KGUuc2NyaXB0Q2hhcnNldClDLmNoYXJzZXQ9ZS5zY3JpcHRDaGFyc2V0O2lmKCFq
KXt2YXIgQj0KZmFsc2U7Qy5vbmxvYWQ9Qy5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVu
Y3Rpb24oKXtpZighQiYmKCF0aGlzLnJlYWR5U3RhdGV8fHRoaXMucmVhZHlTdGF0
ZT09PSJsb2FkZWQifHx0aGlzLnJlYWR5U3RhdGU9PT0iY29tcGxldGUiKSl7Qj10
cnVlO2IoKTtkKCk7Qy5vbmxvYWQ9Qy5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbDt6
JiZDLnBhcmVudE5vZGUmJnoucmVtb3ZlQ2hpbGQoQyl9fX16Lmluc2VydEJlZm9y
ZShDLHouZmlyc3RDaGlsZCk7cmV0dXJuIHd9dmFyIEU9ZmFsc2UseD1lLnhocigp
O2lmKHgpe2UudXNlcm5hbWU/eC5vcGVuKG4sZS51cmwsZS5hc3luYyxlLnVzZXJu
YW1lLGUucGFzc3dvcmQpOngub3BlbihuLGUudXJsLGUuYXN5bmMpO3RyeXtpZihl
LmRhdGF8fGEmJmEuY29udGVudFR5cGUpeC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250
ZW50LVR5cGUiLGUuY29udGVudFR5cGUpO2lmKGUuaWZNb2RpZmllZCl7Yy5sYXN0
TW9kaWZpZWRbZS51cmxdJiZ4LnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVk
LVNpbmNlIiwKYy5sYXN0TW9kaWZpZWRbZS51cmxdKTtjLmV0YWdbZS51cmxdJiZ4
LnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLGMuZXRhZ1tlLnVybF0p
fXJ8fHguc2V0UmVxdWVzdEhlYWRlcigiWC1SZXF1ZXN0ZWQtV2l0aCIsIlhNTEh0
dHBSZXF1ZXN0Iik7eC5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLGUuZGF0YVR5
cGUmJmUuYWNjZXB0c1tlLmRhdGFUeXBlXT9lLmFjY2VwdHNbZS5kYXRhVHlwZV0r
IiwgKi8qIjplLmFjY2VwdHMuX2RlZmF1bHQpfWNhdGNoKGdhKXt9aWYoZS5iZWZv
cmVTZW5kJiZlLmJlZm9yZVNlbmQuY2FsbChrLHgsZSk9PT1mYWxzZSl7ZS5nbG9i
YWwmJiEtLWMuYWN0aXZlJiZjLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIik7eC5h
Ym9ydCgpO3JldHVybiBmYWxzZX1lLmdsb2JhbCYmZigiYWpheFNlbmQiLFt4LGVd
KTt2YXIgZz14Lm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbihxKXtpZigheHx8
eC5yZWFkeVN0YXRlPT09MHx8cT09PSJhYm9ydCIpe0V8fApkKCk7RT10cnVlO2lm
KHgpeC5vbnJlYWR5c3RhdGVjaGFuZ2U9Yy5ub29wfWVsc2UgaWYoIUUmJngmJih4
LnJlYWR5U3RhdGU9PT00fHxxPT09InRpbWVvdXQiKSl7RT10cnVlO3gub25yZWFk
eXN0YXRlY2hhbmdlPWMubm9vcDtpPXE9PT0idGltZW91dCI/InRpbWVvdXQiOiFj
Lmh0dHBTdWNjZXNzKHgpPyJlcnJvciI6ZS5pZk1vZGlmaWVkJiZjLmh0dHBOb3RN
b2RpZmllZCh4LGUudXJsKT8ibm90bW9kaWZpZWQiOiJzdWNjZXNzIjt2YXIgcDtp
ZihpPT09InN1Y2Nlc3MiKXRyeXtvPWMuaHR0cERhdGEoeCxlLmRhdGFUeXBlLGUp
fWNhdGNoKHYpe2k9InBhcnNlcmVycm9yIjtwPXZ9aWYoaT09PSJzdWNjZXNzInx8
aT09PSJub3Rtb2RpZmllZCIpanx8YigpO2Vsc2UgYy5oYW5kbGVFcnJvcihlLHgs
aSxwKTtkKCk7cT09PSJ0aW1lb3V0IiYmeC5hYm9ydCgpO2lmKGUuYXN5bmMpeD1u
dWxsfX07dHJ5e3ZhciBoPXguYWJvcnQ7eC5hYm9ydD1mdW5jdGlvbigpe3gmJmgu
Y2FsbCh4KTsKZygiYWJvcnQiKX19Y2F0Y2gobCl7fWUuYXN5bmMmJmUudGltZW91
dD4wJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7eCYmIUUmJmcoInRpbWVvdXQiKX0s
ZS50aW1lb3V0KTt0cnl7eC5zZW5kKG49PT0iUE9TVCJ8fG49PT0iUFVUInx8bj09
PSJERUxFVEUiP2UuZGF0YTpudWxsKX1jYXRjaChtKXtjLmhhbmRsZUVycm9yKGUs
eCxudWxsLG0pO2QoKX1lLmFzeW5jfHxnKCk7cmV0dXJuIHh9fSxoYW5kbGVFcnJv
cjpmdW5jdGlvbihhLGIsZCxmKXtpZihhLmVycm9yKWEuZXJyb3IuY2FsbChhLmNv
bnRleHR8fGEsYixkLGYpO2lmKGEuZ2xvYmFsKShhLmNvbnRleHQ/YyhhLmNvbnRl
eHQpOmMuZXZlbnQpLnRyaWdnZXIoImFqYXhFcnJvciIsW2IsYSxmXSl9LGFjdGl2
ZTowLGh0dHBTdWNjZXNzOmZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4hYS5zdGF0dXMm
JmxvY2F0aW9uLnByb3RvY29sPT09ImZpbGU6Inx8YS5zdGF0dXM+PTIwMCYmYS5z
dGF0dXM8MzAwfHxhLnN0YXR1cz09PTMwNHx8YS5zdGF0dXM9PT0KMTIyM3x8YS5z
dGF0dXM9PT0wfWNhdGNoKGIpe31yZXR1cm4gZmFsc2V9LGh0dHBOb3RNb2RpZmll
ZDpmdW5jdGlvbihhLGIpe3ZhciBkPWEuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3Qt
TW9kaWZpZWQiKSxmPWEuZ2V0UmVzcG9uc2VIZWFkZXIoIkV0YWciKTtpZihkKWMu
bGFzdE1vZGlmaWVkW2JdPWQ7aWYoZiljLmV0YWdbYl09ZjtyZXR1cm4gYS5zdGF0
dXM9PT0zMDR8fGEuc3RhdHVzPT09MH0saHR0cERhdGE6ZnVuY3Rpb24oYSxiLGQp
e3ZhciBmPWEuZ2V0UmVzcG9uc2VIZWFkZXIoImNvbnRlbnQtdHlwZSIpfHwiIixl
PWI9PT0ieG1sInx8IWImJmYuaW5kZXhPZigieG1sIik+PTA7YT1lP2EucmVzcG9u
c2VYTUw6YS5yZXNwb25zZVRleHQ7ZSYmYS5kb2N1bWVudEVsZW1lbnQubm9kZU5h
bWU9PT0icGFyc2VyZXJyb3IiJiZjLmVycm9yKCJwYXJzZXJlcnJvciIpO2lmKGQm
JmQuZGF0YUZpbHRlcilhPWQuZGF0YUZpbHRlcihhLGIpO2lmKHR5cGVvZiBhPT09
InN0cmluZyIpaWYoYj09PQoianNvbiJ8fCFiJiZmLmluZGV4T2YoImpzb24iKT49
MClhPWMucGFyc2VKU09OKGEpO2Vsc2UgaWYoYj09PSJzY3JpcHQifHwhYiYmZi5p
bmRleE9mKCJqYXZhc2NyaXB0Iik+PTApYy5nbG9iYWxFdmFsKGEpO3JldHVybiBh
fSxwYXJhbTpmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGQoaSxvKXtpZihjLmlzQXJy
YXkobykpYy5lYWNoKG8sZnVuY3Rpb24oayxuKXtifHwvXFtcXSQvLnRlc3QoaSk/
ZihpLG4pOmQoaSsiWyIrKHR5cGVvZiBuPT09Im9iamVjdCJ8fGMuaXNBcnJheShu
KT9rOiIiKSsiXSIsbil9KTtlbHNlIWImJm8hPW51bGwmJnR5cGVvZiBvPT09Im9i
amVjdCI/Yy5lYWNoKG8sZnVuY3Rpb24oayxuKXtkKGkrIlsiK2srIl0iLG4pfSk6
ZihpLG8pfWZ1bmN0aW9uIGYoaSxvKXtvPWMuaXNGdW5jdGlvbihvKT9vKCk6bztl
W2UubGVuZ3RoXT1lbmNvZGVVUklDb21wb25lbnQoaSkrIj0iK2VuY29kZVVSSUNv
bXBvbmVudChvKX12YXIgZT1bXTtpZihiPT09dyliPWMuYWpheFNldHRpbmdzLnRy
YWRpdGlvbmFsOwppZihjLmlzQXJyYXkoYSl8fGEuanF1ZXJ5KWMuZWFjaChhLGZ1
bmN0aW9uKCl7Zih0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcih2YXIg
aiBpbiBhKWQoaixhW2pdKTtyZXR1cm4gZS5qb2luKCImIikucmVwbGFjZSh5Yiwi
KyIpfX0pO3ZhciBsYT17fSxBYj0vdG9nZ2xlfHNob3d8aGlkZS8sQmI9L14oWyst
XT0pPyhbXGQrLS5dKykoLiopJC8sVyx2YT1bWyJoZWlnaHQiLCJtYXJnaW5Ub3Ai
LCJtYXJnaW5Cb3R0b20iLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSJdLFsi
d2lkdGgiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJwYWRkaW5nTGVmdCIs
InBhZGRpbmdSaWdodCJdLFsib3BhY2l0eSJdXTtjLmZuLmV4dGVuZCh7c2hvdzpm
dW5jdGlvbihhLGIpe2lmKGF8fGE9PT0wKXJldHVybiB0aGlzLmFuaW1hdGUoSygi
c2hvdyIsMyksYSxiKTtlbHNle2E9MDtmb3IoYj10aGlzLmxlbmd0aDthPGI7YSsr
KXt2YXIgZD1jLmRhdGEodGhpc1thXSwib2xkZGlzcGxheSIpOwp0aGlzW2FdLnN0
eWxlLmRpc3BsYXk9ZHx8IiI7aWYoYy5jc3ModGhpc1thXSwiZGlzcGxheSIpPT09
Im5vbmUiKXtkPXRoaXNbYV0ubm9kZU5hbWU7dmFyIGY7aWYobGFbZF0pZj1sYVtk
XTtlbHNle3ZhciBlPWMoIjwiK2QrIiAvPiIpLmFwcGVuZFRvKCJib2R5Iik7Zj1l
LmNzcygiZGlzcGxheSIpO2lmKGY9PT0ibm9uZSIpZj0iYmxvY2siO2UucmVtb3Zl
KCk7bGFbZF09Zn1jLmRhdGEodGhpc1thXSwib2xkZGlzcGxheSIsZil9fWE9MDtm
b3IoYj10aGlzLmxlbmd0aDthPGI7YSsrKXRoaXNbYV0uc3R5bGUuZGlzcGxheT1j
LmRhdGEodGhpc1thXSwib2xkZGlzcGxheSIpfHwiIjtyZXR1cm4gdGhpc319LGhp
ZGU6ZnVuY3Rpb24oYSxiKXtpZihhfHxhPT09MClyZXR1cm4gdGhpcy5hbmltYXRl
KEsoImhpZGUiLDMpLGEsYik7ZWxzZXthPTA7Zm9yKGI9dGhpcy5sZW5ndGg7YTxi
O2ErKyl7dmFyIGQ9Yy5kYXRhKHRoaXNbYV0sIm9sZGRpc3BsYXkiKTshZCYmZCE9
PSJub25lIiYmYy5kYXRhKHRoaXNbYV0sCiJvbGRkaXNwbGF5IixjLmNzcyh0aGlz
W2FdLCJkaXNwbGF5IikpfWE9MDtmb3IoYj10aGlzLmxlbmd0aDthPGI7YSsrKXRo
aXNbYV0uc3R5bGUuZGlzcGxheT0ibm9uZSI7cmV0dXJuIHRoaXN9fSxfdG9nZ2xl
OmMuZm4udG9nZ2xlLHRvZ2dsZTpmdW5jdGlvbihhLGIpe3ZhciBkPXR5cGVvZiBh
PT09ImJvb2xlYW4iO2lmKGMuaXNGdW5jdGlvbihhKSYmYy5pc0Z1bmN0aW9uKGIp
KXRoaXMuX3RvZ2dsZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZWxzZSBhPT1udWxs
fHxkP3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBmPWQ/YTpjKHRoaXMpLmlzKCI6
aGlkZGVuIik7Yyh0aGlzKVtmPyJzaG93IjoiaGlkZSJdKCl9KTp0aGlzLmFuaW1h
dGUoSygidG9nZ2xlIiwzKSxhLGIpO3JldHVybiB0aGlzfSxmYWRlVG86ZnVuY3Rp
b24oYSxiLGQpe3JldHVybiB0aGlzLmZpbHRlcigiOmhpZGRlbiIpLmNzcygib3Bh
Y2l0eSIsMCkuc2hvdygpLmVuZCgpLmFuaW1hdGUoe29wYWNpdHk6Yn0sYSxkKX0s
CmFuaW1hdGU6ZnVuY3Rpb24oYSxiLGQsZil7dmFyIGU9Yy5zcGVlZChiLGQsZik7
aWYoYy5pc0VtcHR5T2JqZWN0KGEpKXJldHVybiB0aGlzLmVhY2goZS5jb21wbGV0
ZSk7cmV0dXJuIHRoaXNbZS5xdWV1ZT09PWZhbHNlPyJlYWNoIjoicXVldWUiXShm
dW5jdGlvbigpe3ZhciBqPWMuZXh0ZW5kKHt9LGUpLGksbz10aGlzLm5vZGVUeXBl
PT09MSYmYyh0aGlzKS5pcygiOmhpZGRlbiIpLGs9dGhpcztmb3IoaSBpbiBhKXt2
YXIgbj1pLnJlcGxhY2UoaWEsamEpO2lmKGkhPT1uKXthW25dPWFbaV07ZGVsZXRl
IGFbaV07aT1ufWlmKGFbaV09PT0iaGlkZSImJm98fGFbaV09PT0ic2hvdyImJiFv
KXJldHVybiBqLmNvbXBsZXRlLmNhbGwodGhpcyk7aWYoKGk9PT0iaGVpZ2h0Inx8
aT09PSJ3aWR0aCIpJiZ0aGlzLnN0eWxlKXtqLmRpc3BsYXk9Yy5jc3ModGhpcywi
ZGlzcGxheSIpO2oub3ZlcmZsb3c9dGhpcy5zdHlsZS5vdmVyZmxvd31pZihjLmlz
QXJyYXkoYVtpXSkpeyhqLnNwZWNpYWxFYXNpbmc9Cmouc3BlY2lhbEVhc2luZ3x8
e30pW2ldPWFbaV1bMV07YVtpXT1hW2ldWzBdfX1pZihqLm92ZXJmbG93IT1udWxs
KXRoaXMuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiI7ai5jdXJBbmltPWMuZXh0ZW5k
KHt9LGEpO2MuZWFjaChhLGZ1bmN0aW9uKHIsdSl7dmFyIHo9bmV3IGMuZngoayxq
LHIpO2lmKEFiLnRlc3QodSkpelt1PT09InRvZ2dsZSI/bz8ic2hvdyI6ImhpZGUi
OnVdKGEpO2Vsc2V7dmFyIEM9QmIuZXhlYyh1KSxCPXouY3VyKHRydWUpfHwwO2lm
KEMpe3U9cGFyc2VGbG9hdChDWzJdKTt2YXIgRT1DWzNdfHwicHgiO2lmKEUhPT0i
cHgiKXtrLnN0eWxlW3JdPSh1fHwxKStFO0I9KHV8fDEpL3ouY3VyKHRydWUpKkI7
ay5zdHlsZVtyXT1CK0V9aWYoQ1sxXSl1PShDWzFdPT09Ii09Ij8tMToxKSp1K0I7
ei5jdXN0b20oQix1LEUpfWVsc2Ugei5jdXN0b20oQix1LCIiKX19KTtyZXR1cm4g
dHJ1ZX0pfSxzdG9wOmZ1bmN0aW9uKGEsYil7dmFyIGQ9Yy50aW1lcnM7YSYmdGhp
cy5xdWV1ZShbXSk7CnRoaXMuZWFjaChmdW5jdGlvbigpe2Zvcih2YXIgZj1kLmxl
bmd0aC0xO2Y+PTA7Zi0tKWlmKGRbZl0uZWxlbT09PXRoaXMpe2ImJmRbZl0odHJ1
ZSk7ZC5zcGxpY2UoZiwxKX19KTtifHx0aGlzLmRlcXVldWUoKTtyZXR1cm4gdGhp
c319KTtjLmVhY2goe3NsaWRlRG93bjpLKCJzaG93IiwxKSxzbGlkZVVwOksoImhp
ZGUiLDEpLHNsaWRlVG9nZ2xlOksoInRvZ2dsZSIsMSksZmFkZUluOntvcGFjaXR5
OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9fSxmdW5jdGlvbihhLGIp
e2MuZm5bYV09ZnVuY3Rpb24oZCxmKXtyZXR1cm4gdGhpcy5hbmltYXRlKGIsZCxm
KX19KTtjLmV4dGVuZCh7c3BlZWQ6ZnVuY3Rpb24oYSxiLGQpe3ZhciBmPWEmJnR5
cGVvZiBhPT09Im9iamVjdCI/YTp7Y29tcGxldGU6ZHx8IWQmJmJ8fGMuaXNGdW5j
dGlvbihhKSYmYSxkdXJhdGlvbjphLGVhc2luZzpkJiZifHxiJiYhYy5pc0Z1bmN0
aW9uKGIpJiZifTtmLmR1cmF0aW9uPWMuZngub2ZmPzA6dHlwZW9mIGYuZHVyYXRp
b249PT0KIm51bWJlciI/Zi5kdXJhdGlvbjpjLmZ4LnNwZWVkc1tmLmR1cmF0aW9u
XXx8Yy5meC5zcGVlZHMuX2RlZmF1bHQ7Zi5vbGQ9Zi5jb21wbGV0ZTtmLmNvbXBs
ZXRlPWZ1bmN0aW9uKCl7Zi5xdWV1ZSE9PWZhbHNlJiZjKHRoaXMpLmRlcXVldWUo
KTtjLmlzRnVuY3Rpb24oZi5vbGQpJiZmLm9sZC5jYWxsKHRoaXMpfTtyZXR1cm4g
Zn0sZWFzaW5nOntsaW5lYXI6ZnVuY3Rpb24oYSxiLGQsZil7cmV0dXJuIGQrZiph
fSxzd2luZzpmdW5jdGlvbihhLGIsZCxmKXtyZXR1cm4oLU1hdGguY29zKGEqTWF0
aC5QSSkvMiswLjUpKmYrZH19LHRpbWVyczpbXSxmeDpmdW5jdGlvbihhLGIsZCl7
dGhpcy5vcHRpb25zPWI7dGhpcy5lbGVtPWE7dGhpcy5wcm9wPWQ7aWYoIWIub3Jp
ZyliLm9yaWc9e319fSk7Yy5meC5wcm90b3R5cGU9e3VwZGF0ZTpmdW5jdGlvbigp
e3RoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMu
ZWxlbSx0aGlzLm5vdyx0aGlzKTsoYy5meC5zdGVwW3RoaXMucHJvcF18fApjLmZ4
LnN0ZXAuX2RlZmF1bHQpKHRoaXMpO2lmKCh0aGlzLnByb3A9PT0iaGVpZ2h0Inx8
dGhpcy5wcm9wPT09IndpZHRoIikmJnRoaXMuZWxlbS5zdHlsZSl0aGlzLmVsZW0u
c3R5bGUuZGlzcGxheT0iYmxvY2sifSxjdXI6ZnVuY3Rpb24oYSl7aWYodGhpcy5l
bGVtW3RoaXMucHJvcF0hPW51bGwmJighdGhpcy5lbGVtLnN0eWxlfHx0aGlzLmVs
ZW0uc3R5bGVbdGhpcy5wcm9wXT09bnVsbCkpcmV0dXJuIHRoaXMuZWxlbVt0aGlz
LnByb3BdO3JldHVybihhPXBhcnNlRmxvYXQoYy5jc3ModGhpcy5lbGVtLHRoaXMu
cHJvcCxhKSkpJiZhPi0xMDAwMD9hOnBhcnNlRmxvYXQoYy5jdXJDU1ModGhpcy5l
bGVtLHRoaXMucHJvcCkpfHwwfSxjdXN0b206ZnVuY3Rpb24oYSxiLGQpe2Z1bmN0
aW9uIGYoail7cmV0dXJuIGUuc3RlcChqKX10aGlzLnN0YXJ0VGltZT1KKCk7dGhp
cy5zdGFydD1hO3RoaXMuZW5kPWI7dGhpcy51bml0PWR8fHRoaXMudW5pdHx8InB4
Ijt0aGlzLm5vdz10aGlzLnN0YXJ0Owp0aGlzLnBvcz10aGlzLnN0YXRlPTA7dmFy
IGU9dGhpcztmLmVsZW09dGhpcy5lbGVtO2lmKGYoKSYmYy50aW1lcnMucHVzaChm
KSYmIVcpVz1zZXRJbnRlcnZhbChjLmZ4LnRpY2ssMTMpfSxzaG93OmZ1bmN0aW9u
KCl7dGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9wXT1jLnN0eWxlKHRoaXMuZWxl
bSx0aGlzLnByb3ApO3RoaXMub3B0aW9ucy5zaG93PXRydWU7dGhpcy5jdXN0b20o
dGhpcy5wcm9wPT09IndpZHRoInx8dGhpcy5wcm9wPT09ImhlaWdodCI/MTowLHRo
aXMuY3VyKCkpO2ModGhpcy5lbGVtKS5zaG93KCl9LGhpZGU6ZnVuY3Rpb24oKXt0
aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnByb3BdPWMuc3R5bGUodGhpcy5lbGVtLHRo
aXMucHJvcCk7dGhpcy5vcHRpb25zLmhpZGU9dHJ1ZTt0aGlzLmN1c3RvbSh0aGlz
LmN1cigpLDApfSxzdGVwOmZ1bmN0aW9uKGEpe3ZhciBiPUooKSxkPXRydWU7aWYo
YXx8Yj49dGhpcy5vcHRpb25zLmR1cmF0aW9uK3RoaXMuc3RhcnRUaW1lKXt0aGlz
Lm5vdz0KdGhpcy5lbmQ7dGhpcy5wb3M9dGhpcy5zdGF0ZT0xO3RoaXMudXBkYXRl
KCk7dGhpcy5vcHRpb25zLmN1ckFuaW1bdGhpcy5wcm9wXT10cnVlO2Zvcih2YXIg
ZiBpbiB0aGlzLm9wdGlvbnMuY3VyQW5pbSlpZih0aGlzLm9wdGlvbnMuY3VyQW5p
bVtmXSE9PXRydWUpZD1mYWxzZTtpZihkKXtpZih0aGlzLm9wdGlvbnMuZGlzcGxh
eSE9bnVsbCl7dGhpcy5lbGVtLnN0eWxlLm92ZXJmbG93PXRoaXMub3B0aW9ucy5v
dmVyZmxvdzthPWMuZGF0YSh0aGlzLmVsZW0sIm9sZGRpc3BsYXkiKTt0aGlzLmVs
ZW0uc3R5bGUuZGlzcGxheT1hP2E6dGhpcy5vcHRpb25zLmRpc3BsYXk7aWYoYy5j
c3ModGhpcy5lbGVtLCJkaXNwbGF5Iik9PT0ibm9uZSIpdGhpcy5lbGVtLnN0eWxl
LmRpc3BsYXk9ImJsb2NrIn10aGlzLm9wdGlvbnMuaGlkZSYmYyh0aGlzLmVsZW0p
LmhpZGUoKTtpZih0aGlzLm9wdGlvbnMuaGlkZXx8dGhpcy5vcHRpb25zLnNob3cp
Zm9yKHZhciBlIGluIHRoaXMub3B0aW9ucy5jdXJBbmltKWMuc3R5bGUodGhpcy5l
bGVtLAplLHRoaXMub3B0aW9ucy5vcmlnW2VdKTt0aGlzLm9wdGlvbnMuY29tcGxl
dGUuY2FsbCh0aGlzLmVsZW0pfXJldHVybiBmYWxzZX1lbHNle2U9Yi10aGlzLnN0
YXJ0VGltZTt0aGlzLnN0YXRlPWUvdGhpcy5vcHRpb25zLmR1cmF0aW9uO2E9dGhp
cy5vcHRpb25zLmVhc2luZ3x8KGMuZWFzaW5nLnN3aW5nPyJzd2luZyI6ImxpbmVh
ciIpO3RoaXMucG9zPWMuZWFzaW5nW3RoaXMub3B0aW9ucy5zcGVjaWFsRWFzaW5n
JiZ0aGlzLm9wdGlvbnMuc3BlY2lhbEVhc2luZ1t0aGlzLnByb3BdfHxhXSh0aGlz
LnN0YXRlLGUsMCwxLHRoaXMub3B0aW9ucy5kdXJhdGlvbik7dGhpcy5ub3c9dGhp
cy5zdGFydCsodGhpcy5lbmQtdGhpcy5zdGFydCkqdGhpcy5wb3M7dGhpcy51cGRh
dGUoKX1yZXR1cm4gdHJ1ZX19O2MuZXh0ZW5kKGMuZngse3RpY2s6ZnVuY3Rpb24o
KXtmb3IodmFyIGE9Yy50aW1lcnMsYj0wO2I8YS5sZW5ndGg7YisrKWFbYl0oKXx8
YS5zcGxpY2UoYi0tLDEpO2EubGVuZ3RofHwKYy5meC5zdG9wKCl9LHN0b3A6ZnVu
Y3Rpb24oKXtjbGVhckludGVydmFsKFcpO1c9bnVsbH0sc3BlZWRzOntzbG93OjYw
MCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LHN0ZXA6e29wYWNpdHk6ZnVuY3Rpb24o
YSl7Yy5zdHlsZShhLmVsZW0sIm9wYWNpdHkiLGEubm93KX0sX2RlZmF1bHQ6ZnVu
Y3Rpb24oYSl7aWYoYS5lbGVtLnN0eWxlJiZhLmVsZW0uc3R5bGVbYS5wcm9wXSE9
bnVsbClhLmVsZW0uc3R5bGVbYS5wcm9wXT0oYS5wcm9wPT09IndpZHRoInx8YS5w
cm9wPT09ImhlaWdodCI/TWF0aC5tYXgoMCxhLm5vdyk6YS5ub3cpK2EudW5pdDtl
bHNlIGEuZWxlbVthLnByb3BdPWEubm93fX19KTtpZihjLmV4cHImJmMuZXhwci5m
aWx0ZXJzKWMuZXhwci5maWx0ZXJzLmFuaW1hdGVkPWZ1bmN0aW9uKGEpe3JldHVy
biBjLmdyZXAoYy50aW1lcnMsZnVuY3Rpb24oYil7cmV0dXJuIGE9PT1iLmVsZW19
KS5sZW5ndGh9O2MuZm4ub2Zmc2V0PSJnZXRCb3VuZGluZ0NsaWVudFJlY3QiaW4g
cy5kb2N1bWVudEVsZW1lbnQ/CmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF07aWYo
YSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe2Mub2Zmc2V0LnNldE9mZnNl
dCh0aGlzLGEsZSl9KTtpZighYnx8IWIub3duZXJEb2N1bWVudClyZXR1cm4gbnVs
bDtpZihiPT09Yi5vd25lckRvY3VtZW50LmJvZHkpcmV0dXJuIGMub2Zmc2V0LmJv
ZHlPZmZzZXQoYik7dmFyIGQ9Yi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxmPWIu
b3duZXJEb2N1bWVudDtiPWYuYm9keTtmPWYuZG9jdW1lbnRFbGVtZW50O3JldHVy
bnt0b3A6ZC50b3ArKHNlbGYucGFnZVlPZmZzZXR8fGMuc3VwcG9ydC5ib3hNb2Rl
bCYmZi5zY3JvbGxUb3B8fGIuc2Nyb2xsVG9wKS0oZi5jbGllbnRUb3B8fGIuY2xp
ZW50VG9wfHwwKSxsZWZ0OmQubGVmdCsoc2VsZi5wYWdlWE9mZnNldHx8Yy5zdXBw
b3J0LmJveE1vZGVsJiZmLnNjcm9sbExlZnR8fGIuc2Nyb2xsTGVmdCktKGYuY2xp
ZW50TGVmdHx8Yi5jbGllbnRMZWZ0fHwwKX19OmZ1bmN0aW9uKGEpe3ZhciBiPQp0
aGlzWzBdO2lmKGEpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihyKXtjLm9mZnNl
dC5zZXRPZmZzZXQodGhpcyxhLHIpfSk7aWYoIWJ8fCFiLm93bmVyRG9jdW1lbnQp
cmV0dXJuIG51bGw7aWYoYj09PWIub3duZXJEb2N1bWVudC5ib2R5KXJldHVybiBj
Lm9mZnNldC5ib2R5T2Zmc2V0KGIpO2Mub2Zmc2V0LmluaXRpYWxpemUoKTt2YXIg
ZD1iLm9mZnNldFBhcmVudCxmPWIsZT1iLm93bmVyRG9jdW1lbnQsaixpPWUuZG9j
dW1lbnRFbGVtZW50LG89ZS5ib2R5O2Y9KGU9ZS5kZWZhdWx0Vmlldyk/ZS5nZXRD
b21wdXRlZFN0eWxlKGIsbnVsbCk6Yi5jdXJyZW50U3R5bGU7Zm9yKHZhciBrPWIu
b2Zmc2V0VG9wLG49Yi5vZmZzZXRMZWZ0OyhiPWIucGFyZW50Tm9kZSkmJmIhPT1v
JiZiIT09aTspe2lmKGMub2Zmc2V0LnN1cHBvcnRzRml4ZWRQb3NpdGlvbiYmZi5w
b3NpdGlvbj09PSJmaXhlZCIpYnJlYWs7aj1lP2UuZ2V0Q29tcHV0ZWRTdHlsZShi
LG51bGwpOmIuY3VycmVudFN0eWxlOwprLT1iLnNjcm9sbFRvcDtuLT1iLnNjcm9s
bExlZnQ7aWYoYj09PWQpe2srPWIub2Zmc2V0VG9wO24rPWIub2Zmc2V0TGVmdDtp
ZihjLm9mZnNldC5kb2VzTm90QWRkQm9yZGVyJiYhKGMub2Zmc2V0LmRvZXNBZGRC
b3JkZXJGb3JUYWJsZUFuZENlbGxzJiYvXnQoYWJsZXxkfGgpJC9pLnRlc3QoYi5u
b2RlTmFtZSkpKXtrKz1wYXJzZUZsb2F0KGouYm9yZGVyVG9wV2lkdGgpfHwwO24r
PXBhcnNlRmxvYXQoai5ib3JkZXJMZWZ0V2lkdGgpfHwwfWY9ZDtkPWIub2Zmc2V0
UGFyZW50fWlmKGMub2Zmc2V0LnN1YnRyYWN0c0JvcmRlckZvck92ZXJmbG93Tm90
VmlzaWJsZSYmai5vdmVyZmxvdyE9PSJ2aXNpYmxlIil7ays9cGFyc2VGbG9hdChq
LmJvcmRlclRvcFdpZHRoKXx8MDtuKz1wYXJzZUZsb2F0KGouYm9yZGVyTGVmdFdp
ZHRoKXx8MH1mPWp9aWYoZi5wb3NpdGlvbj09PSJyZWxhdGl2ZSJ8fGYucG9zaXRp
b249PT0ic3RhdGljIil7ays9by5vZmZzZXRUb3A7bis9by5vZmZzZXRMZWZ0fWlm
KGMub2Zmc2V0LnN1cHBvcnRzRml4ZWRQb3NpdGlvbiYmCmYucG9zaXRpb249PT0i
Zml4ZWQiKXtrKz1NYXRoLm1heChpLnNjcm9sbFRvcCxvLnNjcm9sbFRvcCk7bis9
TWF0aC5tYXgoaS5zY3JvbGxMZWZ0LG8uc2Nyb2xsTGVmdCl9cmV0dXJue3RvcDpr
LGxlZnQ6bn19O2Mub2Zmc2V0PXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7dmFyIGE9
cy5ib2R5LGI9cy5jcmVhdGVFbGVtZW50KCJkaXYiKSxkLGYsZSxqPXBhcnNlRmxv
YXQoYy5jdXJDU1MoYSwibWFyZ2luVG9wIix0cnVlKSl8fDA7Yy5leHRlbmQoYi5z
dHlsZSx7cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsbWFyZ2luOjAs
Ym9yZGVyOjAsd2lkdGg6IjFweCIsaGVpZ2h0OiIxcHgiLHZpc2liaWxpdHk6Imhp
ZGRlbiJ9KTtiLmlubmVySFRNTD0iPGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1
dGU7dG9wOjA7bGVmdDowO21hcmdpbjowO2JvcmRlcjo1cHggc29saWQgIzAwMDtw
YWRkaW5nOjA7d2lkdGg6MXB4O2hlaWdodDoxcHg7Jz48ZGl2PjwvZGl2PjwvZGl2
Pjx0YWJsZSBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO21h
cmdpbjowO2JvcmRlcjo1cHggc29saWQgIzAwMDtwYWRkaW5nOjA7d2lkdGg6MXB4
O2hlaWdodDoxcHg7JyBjZWxscGFkZGluZz0nMCcgY2VsbHNwYWNpbmc9JzAnPjx0
cj48dGQ+PC90ZD48L3RyPjwvdGFibGU+IjsKYS5pbnNlcnRCZWZvcmUoYixhLmZp
cnN0Q2hpbGQpO2Q9Yi5maXJzdENoaWxkO2Y9ZC5maXJzdENoaWxkO2U9ZC5uZXh0
U2libGluZy5maXJzdENoaWxkLmZpcnN0Q2hpbGQ7dGhpcy5kb2VzTm90QWRkQm9y
ZGVyPWYub2Zmc2V0VG9wIT09NTt0aGlzLmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFu
ZENlbGxzPWUub2Zmc2V0VG9wPT09NTtmLnN0eWxlLnBvc2l0aW9uPSJmaXhlZCI7
Zi5zdHlsZS50b3A9IjIwcHgiO3RoaXMuc3VwcG9ydHNGaXhlZFBvc2l0aW9uPWYu
b2Zmc2V0VG9wPT09MjB8fGYub2Zmc2V0VG9wPT09MTU7Zi5zdHlsZS5wb3NpdGlv
bj1mLnN0eWxlLnRvcD0iIjtkLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iO2Quc3R5
bGUucG9zaXRpb249InJlbGF0aXZlIjt0aGlzLnN1YnRyYWN0c0JvcmRlckZvck92
ZXJmbG93Tm90VmlzaWJsZT1mLm9mZnNldFRvcD09PS01O3RoaXMuZG9lc05vdElu
Y2x1ZGVNYXJnaW5JbkJvZHlPZmZzZXQ9YS5vZmZzZXRUb3AhPT1qO2EucmVtb3Zl
Q2hpbGQoYik7CmMub2Zmc2V0LmluaXRpYWxpemU9Yy5ub29wfSxib2R5T2Zmc2V0
OmZ1bmN0aW9uKGEpe3ZhciBiPWEub2Zmc2V0VG9wLGQ9YS5vZmZzZXRMZWZ0O2Mu
b2Zmc2V0LmluaXRpYWxpemUoKTtpZihjLm9mZnNldC5kb2VzTm90SW5jbHVkZU1h
cmdpbkluQm9keU9mZnNldCl7Yis9cGFyc2VGbG9hdChjLmN1ckNTUyhhLCJtYXJn
aW5Ub3AiLHRydWUpKXx8MDtkKz1wYXJzZUZsb2F0KGMuY3VyQ1NTKGEsIm1hcmdp
bkxlZnQiLHRydWUpKXx8MH1yZXR1cm57dG9wOmIsbGVmdDpkfX0sc2V0T2Zmc2V0
OmZ1bmN0aW9uKGEsYixkKXtpZigvc3RhdGljLy50ZXN0KGMuY3VyQ1NTKGEsInBv
c2l0aW9uIikpKWEuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIjt2YXIgZj1jKGEp
LGU9Zi5vZmZzZXQoKSxqPXBhcnNlSW50KGMuY3VyQ1NTKGEsInRvcCIsdHJ1ZSks
MTApfHwwLGk9cGFyc2VJbnQoYy5jdXJDU1MoYSwibGVmdCIsdHJ1ZSksMTApfHww
O2lmKGMuaXNGdW5jdGlvbihiKSliPWIuY2FsbChhLApkLGUpO2Q9e3RvcDpiLnRv
cC1lLnRvcCtqLGxlZnQ6Yi5sZWZ0LWUubGVmdCtpfTsidXNpbmciaW4gYj9iLnVz
aW5nLmNhbGwoYSxkKTpmLmNzcyhkKX19O2MuZm4uZXh0ZW5kKHtwb3NpdGlvbjpm
dW5jdGlvbigpe2lmKCF0aGlzWzBdKXJldHVybiBudWxsO3ZhciBhPXRoaXNbMF0s
Yj10aGlzLm9mZnNldFBhcmVudCgpLGQ9dGhpcy5vZmZzZXQoKSxmPS9eYm9keXxo
dG1sJC9pLnRlc3QoYlswXS5ub2RlTmFtZSk/e3RvcDowLGxlZnQ6MH06Yi5vZmZz
ZXQoKTtkLnRvcC09cGFyc2VGbG9hdChjLmN1ckNTUyhhLCJtYXJnaW5Ub3AiLHRy
dWUpKXx8MDtkLmxlZnQtPXBhcnNlRmxvYXQoYy5jdXJDU1MoYSwibWFyZ2luTGVm
dCIsdHJ1ZSkpfHwwO2YudG9wKz1wYXJzZUZsb2F0KGMuY3VyQ1NTKGJbMF0sImJv
cmRlclRvcFdpZHRoIix0cnVlKSl8fDA7Zi5sZWZ0Kz1wYXJzZUZsb2F0KGMuY3Vy
Q1NTKGJbMF0sImJvcmRlckxlZnRXaWR0aCIsdHJ1ZSkpfHwwO3JldHVybnt0b3A6
ZC50b3AtCmYudG9wLGxlZnQ6ZC5sZWZ0LWYubGVmdH19LG9mZnNldFBhcmVudDpm
dW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe2Zvcih2YXIgYT10
aGlzLm9mZnNldFBhcmVudHx8cy5ib2R5O2EmJiEvXmJvZHl8aHRtbCQvaS50ZXN0
KGEubm9kZU5hbWUpJiZjLmNzcyhhLCJwb3NpdGlvbiIpPT09InN0YXRpYyI7KWE9
YS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGF9KX19KTtjLmVhY2goWyJMZWZ0IiwiVG9w
Il0sZnVuY3Rpb24oYSxiKXt2YXIgZD0ic2Nyb2xsIitiO2MuZm5bZF09ZnVuY3Rp
b24oZil7dmFyIGU9dGhpc1swXSxqO2lmKCFlKXJldHVybiBudWxsO2lmKGYhPT13
KXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZihqPXdhKHRoaXMpKWouc2Ny
b2xsVG8oIWE/ZjpjKGopLnNjcm9sbExlZnQoKSxhP2Y6YyhqKS5zY3JvbGxUb3Ao
KSk7ZWxzZSB0aGlzW2RdPWZ9KTtlbHNlIHJldHVybihqPXdhKGUpKT8icGFnZVhP
ZmZzZXQiaW4gaj9qW2E/InBhZ2VZT2Zmc2V0IjoKInBhZ2VYT2Zmc2V0Il06Yy5z
dXBwb3J0LmJveE1vZGVsJiZqLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtkXXx8
ai5kb2N1bWVudC5ib2R5W2RdOmVbZF19fSk7Yy5lYWNoKFsiSGVpZ2h0IiwiV2lk
dGgiXSxmdW5jdGlvbihhLGIpe3ZhciBkPWIudG9Mb3dlckNhc2UoKTtjLmZuWyJp
bm5lciIrYl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1swXT9jLmNzcyh0aGlzWzBd
LGQsZmFsc2UsInBhZGRpbmciKTpudWxsfTtjLmZuWyJvdXRlciIrYl09ZnVuY3Rp
b24oZil7cmV0dXJuIHRoaXNbMF0/Yy5jc3ModGhpc1swXSxkLGZhbHNlLGY/Im1h
cmdpbiI6ImJvcmRlciIpOm51bGx9O2MuZm5bZF09ZnVuY3Rpb24oZil7dmFyIGU9
dGhpc1swXTtpZighZSlyZXR1cm4gZj09bnVsbD9udWxsOnRoaXM7aWYoYy5pc0Z1
bmN0aW9uKGYpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oail7dmFyIGk9Yyh0
aGlzKTtpW2RdKGYuY2FsbCh0aGlzLGosaVtkXSgpKSl9KTtyZXR1cm4ic2Nyb2xs
VG8iaW4KZSYmZS5kb2N1bWVudD9lLmRvY3VtZW50LmNvbXBhdE1vZGU9PT0iQ1NT
MUNvbXBhdCImJmUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJjbGllbnQiK2Jd
fHxlLmRvY3VtZW50LmJvZHlbImNsaWVudCIrYl06ZS5ub2RlVHlwZT09PTk/TWF0
aC5tYXgoZS5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrYl0sZS5ib2R5WyJzY3Jv
bGwiK2JdLGUuZG9jdW1lbnRFbGVtZW50WyJzY3JvbGwiK2JdLGUuYm9keVsib2Zm
c2V0IitiXSxlLmRvY3VtZW50RWxlbWVudFsib2Zmc2V0IitiXSk6Zj09PXc/Yy5j
c3MoZSxkKTp0aGlzLmNzcyhkLHR5cGVvZiBmPT09InN0cmluZyI/ZjpmKyJweCIp
fX0pO0EualF1ZXJ5PUEuJD1jfSkod2luZG93KTsK

------------V6sUxPU46ZhOl9Jww3TAHT
Content-Disposition: inline; filename=low_vision.js
Content-Type: application/javascript; name=low_vision.js
Content-Location: http://www.tver.ru/js/low_vision.js
Content-Transfer-Encoding: Base64

JChmdW5jdGlvbigpewoJdmFyIGNvb2tpZU5hbWUgPSAnbG93X3Zpc2lvbic7Cgl2
YXIgY29va2llT3B0aW9ucyA9IHtleHBpcmVzOiA3LCBwYXRoOiAnLyd9OwoKCXZh
ciBsb3dfdmlzaW9uID0gJCgnLmItbG93LXZpc2lvbicpCgkJbGluayA9ICQoJy5s
aW5rJywgbG93X3Zpc2lvbik7CgoJCgoKCWxpbmsuY2xpY2soZnVuY3Rpb24oZXZl
bnQpewoJCWlmKCQuY29va2llKGNvb2tpZU5hbWUpID09IHVuZGVmaW5lZCl7CgkJ
CSQuY29va2llKGNvb2tpZU5hbWUsIHRydWUsIHsgZXhwaXJlczogNywgcGF0aDog
Jy8nIH0pOwoJCQlsb3dfdmlzaW9uLmFkZENsYXNzKCdzZWxlY3RlZCcpOwoJCQlp
bnN0YWxsU2l6ZSgpOwoJCX0KCQllbHNlIGlmKCQuY29va2llKGNvb2tpZU5hbWUp
KXsKCQkJJC5yZW1vdmVDb29raWUoY29va2llTmFtZSwgeyBwYXRoOiAnLycgfSk7
CgkJCQoJCQlsb3dfdmlzaW9uLnJlbW92ZUNsYXNzKCdzZWxlY3RlZCcpOwoJCQkk
KCdib2R5JykucmVtb3ZlQ2xhc3MoJ2ItYmlnLXRleHQnKTsKCQkJbGluay50ZXh0
KCfQktC10YDRgdC40Y8g0LTQu9GPINGB0LvQsNCx0L7QstC40LTRj9GJ0LjRhScp
OwoJCX0KCgkJZXZlbnQucHJldmVudERlZmF1bHQoKTsKCX0pOwoJaWYoJC5jb29r
aWUoY29va2llTmFtZSkpewoJCWxvd192aXNpb24uYWRkQ2xhc3MoJ3NlbGVjdGVk
Jyk7CgkJaW5zdGFsbFNpemUoKTsKCX0KCWVsc2UgewoJCWxpbmsudGV4dCgn0JLQ
tdGA0YHQuNGPINC00LvRjyDRgdC70LDQsdC+0LLQuNC00Y/RidC40YUnKTsKCQls
b3dfdmlzaW9uLnJlbW92ZUNsYXNzKCdzZWxlY3RlZCcpOwoJfQoKCglpZihsb3df
dmlzaW9uLmhhc0NsYXNzKCdzZWxlY3RlZCcpKXsKCQlpbnN0YWxsU2l6ZSgpOwoJ
fQoJZnVuY3Rpb24gaW5zdGFsbFNpemUoKXsKCQlsaW5rLnRleHQoJ9Ce0LHRi9GH
0L3QsNGPINCy0LXRgNGB0LjRjycpOwoJCSQoJ2JvZHknKS5hZGRDbGFzcygnYi1i
aWctdGV4dCcpOwoJfQoKfSk7CgoKCi8qIQogKiBqUXVlcnkgQ29va2llIFBsdWdp
biB2MS4zLjEKICogaHR0cHM6Ly9naXRodWIuY29tL2NhcmhhcnRsL2pxdWVyeS1j
b29raWUKICoKICogQ29weXJpZ2h0IDIwMTMgS2xhdXMgSGFydGwKICogUmVsZWFz
ZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlCiAqLwooZnVuY3Rpb24gKGZhY3Rvcnkp
IHsKCWlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5h
bWQgJiYgZGVmaW5lLmFtZC5qUXVlcnkpIHsKCQkvLyBBTUQuIFJlZ2lzdGVyIGFz
IGFub255bW91cyBtb2R1bGUuCgkJZGVmaW5lKFsnanF1ZXJ5J10sIGZhY3Rvcnkp
OwoJfSBlbHNlIHsKCQkvLyBCcm93c2VyIGdsb2JhbHMuCgkJZmFjdG9yeShqUXVl
cnkpOwoJfQp9KGZ1bmN0aW9uICgkKSB7CgoJdmFyIHBsdXNlcyA9IC9cKy9nOwoK
CWZ1bmN0aW9uIHJhdyhzKSB7CgkJcmV0dXJuIHM7Cgl9CgoJZnVuY3Rpb24gZGVj
b2RlZChzKSB7CgkJcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChzLnJlcGxhY2Uo
cGx1c2VzLCAnICcpKTsKCX0KCglmdW5jdGlvbiBjb252ZXJ0ZWQocykgewoJCWlm
IChzLmluZGV4T2YoJyInKSA9PT0gMCkgewoJCQkvLyBUaGlzIGlzIGEgcXVvdGVk
IGNvb2tpZSBhcyBhY2NvcmRpbmcgdG8gUkZDMjA2OCwgdW5lc2NhcGUKCQkJcyA9
IHMuc2xpY2UoMSwgLTEpLnJlcGxhY2UoL1xcIi9nLCAnIicpLnJlcGxhY2UoL1xc
XFwvZywgJ1xcJyk7CgkJfQoJCXRyeSB7CgkJCXJldHVybiBjb25maWcuanNvbiA/
IEpTT04ucGFyc2UocykgOiBzOwoJCX0gY2F0Y2goZXIpIHt9Cgl9CgoJdmFyIGNv
bmZpZyA9ICQuY29va2llID0gZnVuY3Rpb24gKGtleSwgdmFsdWUsIG9wdGlvbnMp
IHsKCgkJLy8gd3JpdGUKCQlpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkgewoJCQlv
cHRpb25zID0gJC5leHRlbmQoe30sIGNvbmZpZy5kZWZhdWx0cywgb3B0aW9ucyk7
CgoJCQlpZiAodHlwZW9mIG9wdGlvbnMuZXhwaXJlcyA9PT0gJ251bWJlcicpIHsK
CQkJCXZhciBkYXlzID0gb3B0aW9ucy5leHBpcmVzLCB0ID0gb3B0aW9ucy5leHBp
cmVzID0gbmV3IERhdGUoKTsKCQkJCXQuc2V0RGF0ZSh0LmdldERhdGUoKSArIGRh
eXMpOwoJCQl9CgoJCQl2YWx1ZSA9IGNvbmZpZy5qc29uID8gSlNPTi5zdHJpbmdp
ZnkodmFsdWUpIDogU3RyaW5nKHZhbHVlKTsKCgkJCXJldHVybiAoZG9jdW1lbnQu
Y29va2llID0gWwoJCQkJZW5jb2RlVVJJQ29tcG9uZW50KGtleSksICc9JywgY29u
ZmlnLnJhdyA/IHZhbHVlIDogZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKSwKCQkJ
CW9wdGlvbnMuZXhwaXJlcyA/ICc7IGV4cGlyZXM9JyArIG9wdGlvbnMuZXhwaXJl
cy50b1VUQ1N0cmluZygpIDogJycsIC8vIHVzZSBleHBpcmVzIGF0dHJpYnV0ZSwg
bWF4LWFnZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IElFCgkJCQlvcHRpb25zLnBhdGgg
ICAgPyAnOyBwYXRoPScgKyBvcHRpb25zLnBhdGggOiAnJywKCQkJCW9wdGlvbnMu
ZG9tYWluICA/ICc7IGRvbWFpbj0nICsgb3B0aW9ucy5kb21haW4gOiAnJywKCQkJ
CW9wdGlvbnMuc2VjdXJlICA/ICc7IHNlY3VyZScgOiAnJwoJCQldLmpvaW4oJycp
KTsKCQl9CgoJCS8vIHJlYWQKCQl2YXIgZGVjb2RlID0gY29uZmlnLnJhdyA/IHJh
dyA6IGRlY29kZWQ7CgkJdmFyIGNvb2tpZXMgPSBkb2N1bWVudC5jb29raWUuc3Bs
aXQoJzsgJyk7CgkJdmFyIHJlc3VsdCA9IGtleSA/IHVuZGVmaW5lZCA6IHt9OwoJ
CWZvciAodmFyIGkgPSAwLCBsID0gY29va2llcy5sZW5ndGg7IGkgPCBsOyBpKysp
IHsKCQkJdmFyIHBhcnRzID0gY29va2llc1tpXS5zcGxpdCgnPScpOwoJCQl2YXIg
bmFtZSA9IGRlY29kZShwYXJ0cy5zaGlmdCgpKTsKCQkJdmFyIGNvb2tpZSA9IGRl
Y29kZShwYXJ0cy5qb2luKCc9JykpOwoKCQkJaWYgKGtleSAmJiBrZXkgPT09IG5h
bWUpIHsKCQkJCXJlc3VsdCA9IGNvbnZlcnRlZChjb29raWUpOwoJCQkJYnJlYWs7
CgkJCX0KCgkJCWlmICgha2V5KSB7CgkJCQlyZXN1bHRbbmFtZV0gPSBjb252ZXJ0
ZWQoY29va2llKTsKCQkJfQoJCX0KCgkJcmV0dXJuIHJlc3VsdDsKCX07CgoJY29u
ZmlnLmRlZmF1bHRzID0ge307CgoJJC5yZW1vdmVDb29raWUgPSBmdW5jdGlvbiAo
a2V5LCBvcHRpb25zKSB7CgkJaWYgKCQuY29va2llKGtleSkgIT09IHVuZGVmaW5l
ZCkgewoJCQkkLmNvb2tpZShrZXksICcnLCAkLmV4dGVuZChvcHRpb25zLCB7IGV4
cGlyZXM6IC0xIH0pKTsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxz
ZTsKCX07Cgp9KSk7

------------V6sUxPU46ZhOl9Jww3TAHT
Content-Disposition: inline; filename=imageflow.js
Content-Type: application/javascript; charset=utf-8; name=imageflow.js
Content-Location: http://www.tver.ru/js/imageflow.js
Content-Transfer-Encoding: Base64

77u/LyoNCk5hbWU6ICAgICAgIEltYWdlRmxvdw0KVmVyc2lvbjogICAgMS4zLjAg
KE1hcmNoIDkgMjAxMCkNCkF1dGhvcjogICAgIEZpbm4gUnVkb2xwaA0KU3VwcG9y
dDogICAgaHR0cDovL2Zpbm5ydWRvbHBoLmRlL0ltYWdlRmxvdw0KDQpMaWNlbnNl
OiAgICBJbWFnZUZsb3cgaXMgbGljZW5zZWQgdW5kZXIgYSBDcmVhdGl2ZSBDb21t
b25zDQogICAgICAgICAgICBBdHRyaWJ1dGlvbi1Ob25jb21tZXJjaWFsIDMuMCBV
bnBvcnRlZCBMaWNlbnNlDQogICAgICAgICAgICAoaHR0cDovL2NyZWF0aXZlY29t
bW9ucy5vcmcvbGljZW5zZXMvYnktbmMvMy4wLykuDQoNCiAgICAgICAgICAgIFlv
dSBhcmUgZnJlZToNCiAgICAgICAgICAgICAgICArIHRvIFNoYXJlIC0gdG8gY29w
eSwgZGlzdHJpYnV0ZSBhbmQgdHJhbnNtaXQgdGhlIHdvcmsNCiAgICAgICAgICAg
ICAgICArIHRvIFJlbWl4IC0gdG8gYWRhcHQgdGhlIHdvcmsNCg0KICAgICAgICAg
ICAgVW5kZXIgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KICAgICAgICAgICAg
ICAgICsgQXR0cmlidXRpb24uIFlvdSBtdXN0IGF0dHJpYnV0ZSB0aGUgd29yayBp
biB0aGUgbWFubmVyIHNwZWNpZmllZCBieSB0aGUgYXV0aG9yIG9yIGxpY2Vuc29y
DQogICAgICAgICAgICAgICAgICAoYnV0IG5vdCBpbiBhbnkgd2F5IHRoYXQgc3Vn
Z2VzdHMgdGhhdCB0aGV5IGVuZG9yc2UgeW91IG9yIHlvdXIgdXNlIG9mIHRoZSB3
b3JrKS4NCiAgICAgICAgICAgICAgICArIE5vbmNvbW1lcmNpYWwuIFlvdSBtYXkg
bm90IHVzZSB0aGlzIHdvcmsgZm9yIGNvbW1lcmNpYWwgcHVycG9zZXMuDQoNCiAg
ICAgICAgICAgICsgRm9yIGFueSByZXVzZSBvciBkaXN0cmlidXRpb24sIHlvdSBt
dXN0IG1ha2UgY2xlYXIgdG8gb3RoZXJzIHRoZSBsaWNlbnNlIHRlcm1zIG9mIHRo
aXMgd29yay4NCiAgICAgICAgICAgICsgQW55IG9mIHRoZSBhYm92ZSBjb25kaXRp
b25zIGNhbiBiZSB3YWl2ZWQgaWYgeW91IGdldCBwZXJtaXNzaW9uIGZyb20gdGhl
IGNvcHlyaWdodCBob2xkZXIuDQogICAgICAgICAgICArIE5vdGhpbmcgaW4gdGhp
cyBsaWNlbnNlIGltcGFpcnMgb3IgcmVzdHJpY3RzIHRoZSBhdXRob3IncyBtb3Jh
bCByaWdodHMuDQoNCkNyZWRpdHM6ICAgIFRoaXMgc2NyaXB0IGlzIGJhc2VkIG9u
IE1pY2hhZWwgTC4gUGVycnlzIENvdmVyIGZsb3cgaW4gSmF2YXNjcmlwdCBbMV0u
DQogICAgICAgICAgICBUaGUgcmVmbGVjdGlvbnMgYXJlIGdlbmVyYXRlZCBzZXJ2
ZXItc2lkZWQgYnkgYSBzbGlnaHRseSBoYWNrZWQgdmVyc2lvbg0KICAgICAgICAg
ICAgb2YgUmljaGFyZCBEYXZleXMgZWFzeXJlZmxlY3Rpb25zIFsyXSB3cml0dGVu
IGluIFBIUC4gVGhlIG1vdXNlIHdoZWVsDQogICAgICAgICAgICBzdXBwb3J0IGlz
IGFuIGltcGxlbWVudGF0aW9uIG9mIEFkb21hcyBQYWx0YW5hdmljaXVzIEphdmFT
Y3JpcHQgbW91c2UNCiAgICAgICAgICAgIHdoZWVsIGNvZGUgWzNdLiBJdCBhbHNv
IHVzZXMgdGhlIGRvbVJlYWR5RXZlbnQgZnJvbSBUYW5ueSBPJ0hhbGV5IFs0XS4N
Cg0KICAgICAgICAgICAgWzFdIGh0dHA6Ly93d3cuYWR2ZW50dXJlc2luc29mdHdh
cmUuY29tL2Jsb2cvP3A9MTA0I2NvbW1lbnQtMTk4MQ0KICAgICAgICAgICAgWzJd
IGh0dHA6Ly9yZWZsZWN0aW9uLmNvcmVwaHAuY28udWsvdjIucGhwDQogICAgICAg
ICAgICBbM10gaHR0cDovL2Fkb21hcy5vcmcvamF2YXNjcmlwdC1tb3VzZS13aGVl
bC8NCiAgICAgICAgICAgIFs0XSBodHRwOi8vdGFubnkuaWNhLmNvbS9JQ0EvVEtP
L3Rrb2Jsb2cubnNmL2R4L2RvbWNvbnRlbnRsb2FkZWQtZm9yLWJyb3dzZXJzLXBh
cnQtdg0KKi8NCg0KLyogSW1hZ2VGbG93IGNvbnN0cnVjdG9yICovDQpmdW5jdGlv
biBtb2RhbCh1cmwsIGltYWdlRmxvd0lEKXsNCgl2YXIgSFRNTCA9ICc8ZGl2IGNs
YXNzPSJtb2RhbEdhbGxlcnkiPiBcDQoJCQkJCTxkaXYgY2xhc3M9ImltYWdlc0Nv
bnRhaW5lciI+IFwNCgkJCQkJCTxkaXYgY2xhc3M9ImxvYWRlciI+PGltZyBjbGFz
cz0iaW1hZ2UiIGFsdD0iIiBzcmM9Ii9pbWcvYWpheC1sb2FkZXIuZ2lmIiAvPjwv
ZGl2PiBcDQoJCQkJCQk8ZGl2IGNsYXNzPSJpbWFnZXMiPiBcDQoJCQkJCQkJPGEg
Y2xhc3M9ImxfYXJlYSI+PHNwYW4gY2xhc3M9ImxfYXJyb3ciPjwvc3Bhbj48L2E+
IFwNCgkJCQkJCQk8YSBjbGFzcz0icl9hcmVhIj48c3BhbiBjbGFzcz0icl9hcnJv
dyI+PC9zcGFuPjwvYT4gXA0KCQkJCQkJPC9kaXY+IFwNCgkJCQkJPC9kaXY+IFwN
CgkJCQk8L2Rpdj4nOw0KCWlmKGltYWdlRmxvd0lEKXsNCgkJZG93bmxvYWRhYmxl
X2ltYWdlc19zdHJpbmcgPSAnI215SW1hZ2VGbG93XycgKyBpbWFnZUZsb3dJRCAr
ICdfaW1hZ2VzIGltZ1tsb25nZGVzY10nOw0KCX0gZWxzZSB7DQoJCWRvd25sb2Fk
YWJsZV9pbWFnZXNfc3RyaW5nID0gJyNteUltYWdlRmxvd19pbWFnZXMgaW1nW2xv
bmdkZXNjXSc7DQoJfQ0KCXZhciBnYWxsZXJ5ID0gew0KCQltb2RhbDogJy5tb2Rh
bEdhbGxlcnknLA0KCQlpbWFnZXM6ICcubW9kYWxHYWxsZXJ5IC5pbWFnZXMnLA0K
CQlkb3dubG9hZGFibGVfaW1hZ2VzOiBkb3dubG9hZGFibGVfaW1hZ2VzX3N0cmlu
ZywNCgkJbGVmdF9hbmltYXRpb246ICcubF9hcmVhJywNCgkJcmlnaHRfYW5pbWF0
aW9uOiAnLnJfYXJlYScNCgl9Ow0KCQ0KCXZhciBhbGxfaW1hZ2VzLCBpbmRleF9h
Y3RpdmVfZWxlbWVudDsgDQoJDQoJdmFyIHdpZHRoV2luZG93ID0gZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLCBoZWlnaHRXaW5kb3cgPSBkb2N1
bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0Ow0KCSQod2luZG93KS5y
ZXNpemUoZnVuY3Rpb24oKXsNCgkJd2lkdGhXaW5kb3cgPSBkb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7DQoJCWhlaWdodFdpbmRvdyA9IGRvY3Vt
ZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7CQ0KCX0pOw0KCQ0KCS8q
YWRkIGh0bWwgbW9kYWwqLw0KCSQoJ2JvZHknKS5hcHBlbmQoSFRNTCk7DQoJDQoJ
JChnYWxsZXJ5Lm1vZGFsKS5zaG93KCk7DQoJYWRkSW1hZ2UoKTsNCgljbG9zZU1v
ZGFsKCk7DQoJYW5pbWF0aW9uR2FsbGVyeSgpOw0KCWZ1bmN0aW9uIGFkZEltYWdl
KCl7DQoJCSQoZ2FsbGVyeS5kb3dubG9hZGFibGVfaW1hZ2VzKS5lYWNoKGZ1bmN0
aW9uKGluZGV4LCBlbGVtZW50KXsNCgkJCWlmKCQodGhpcykuYXR0cignbG9uZ2Rl
c2MnKSA9PSB1cmwpew0KCQkJCSQoZ2FsbGVyeS5pbWFnZXMpLmFwcGVuZCgnPGlt
ZyBjbGFzcz0iaW1hZ2UgaW1hZ2VfYWN0aXZlIiBzcmM9IicrJCh0aGlzKS5hdHRy
KCdsb25nZGVzYycpKyciIGFsdD0iIiAvPicpOw0KCQkJCWluZGV4X2FjdGl2ZV9l
bGVtZW50ID0gaW5kZXg7DQoJCQl9DQoJCQllbHNlICQoZ2FsbGVyeS5pbWFnZXMp
LmFwcGVuZCgnPGltZyBjbGFzcz0iaW1hZ2UiIHNyYz0iJyskKHRoaXMpLmF0dHIo
J2xvbmdkZXNjJykrJyIgYWx0PSIiIC8+Jyk7DQoJCX0pOw0KCQlhbGxfaW1hZ2Vz
ID0gJChnYWxsZXJ5LmltYWdlcykuZmluZCgnLmltYWdlJyk7DQoJCWFsbF9pbWFn
ZXMuZWFjaChmdW5jdGlvbigpeyQodGhpcykuaGlkZSgpO30pOw0KCQlsb2FkZXJJ
bWFnZXMoYWxsX2ltYWdlcyk7DQoJfQ0KCWZ1bmN0aW9uIGxvYWRlckltYWdlcyhp
bWFnZXMpew0KCQlpbWFnZXMuZWFjaChmdW5jdGlvbihpbmRleCxlbGVtZW50KXsN
CgkJCSQoZWxlbWVudCkubG9hZChmdW5jdGlvbigpew0KCQkJCXNpemVJbWFnZSgk
KGVsZW1lbnQpLCBpbmRleCk7DQoJCQl9KTsNCgkJCQ0KCQl9KTsNCgl9DQoJZnVu
Y3Rpb24gc2l6ZUltYWdlKGltYWdlLCBpbmRleCl7DQoJCXZhciB3aWR0aENvbnRh
aW5lciA9IHdpZHRoV2luZG93IC0gNDAsDQoJCQloZWlnaHRDb250YWluZXIgPSBo
ZWlnaHRXaW5kb3cgLSAyMDsNCgkJCQ0KCQl2YXIgaW1hZ2Vfd2lkdGggPSBpbWFn
ZS53aWR0aCgpLCANCgkJCWltZ193aWR0aCA9IGltYWdlLndpZHRoKCksDQoJCQlp
bWFnZV9oZWlnaHQgPSBpbWFnZS5oZWlnaHQoKSwgDQoJCQlpbWdfaGVpZ2h0ID0g
aW1hZ2UuaGVpZ2h0KCk7DQoNCgkJCWlmKGltYWdlX3dpZHRoID4gd2lkdGhDb250
YWluZXIgJiYgaW1hZ2VfaGVpZ2h0ID4gaGVpZ2h0Q29udGFpbmVyKSB7DQoJCQkJ
aW1hZ2UuaGVpZ2h0KGhlaWdodENvbnRhaW5lcik7DQoJCQkJaW1hZ2VfaGVpZ2h0
ID0gaW1hZ2UuaGVpZ2h0KCk7DQoJCQkJaW1hZ2Vfd2lkdGggPSBpbWFnZS53aWR0
aCgpOw0KCQkJfQ0KCQkJaWYoaW1hZ2Vfd2lkdGggPD0gd2lkdGhDb250YWluZXIg
JiYgaW1hZ2VfaGVpZ2h0ID4gaGVpZ2h0Q29udGFpbmVyKSBpbWFnZS5oZWlnaHQo
aGVpZ2h0Q29udGFpbmVyKTsNCgkJCWlmKGltYWdlX3dpZHRoID4gd2lkdGhDb250
YWluZXIgJiYgaW1hZ2VfaGVpZ2h0IDw9IGhlaWdodENvbnRhaW5lcikgaW1hZ2Uu
d2lkdGgod2lkdGhDb250YWluZXIpLmhlaWdodChpbWFnZV9oZWlnaHQqd2lkdGhD
b250YWluZXIvaW1hZ2Vfd2lkdGgpOw0KCQkJDQoJCQlzZW50ZXJpbmdJbWFnZShp
bWFnZSwgaW5kZXgpOw0KCX0NCglmdW5jdGlvbiBzZW50ZXJpbmdJbWFnZShpbWFn
ZSwgaW5kZXgpew0KCQl2YXIgaGVpZ2h0Q29udGFpbmVyID0gaGVpZ2h0V2luZG93
LA0KCQkJaGVpZ2h0SW1hZ2UgPSBpbWFnZS5oZWlnaHQoKSwNCgkJCXdpZHRoSW1h
Z2UgPSBpbWFnZS53aWR0aCgpOw0KCQkNCgkJaWYoaW5kZXggPT0gaW5kZXhfYWN0
aXZlX2VsZW1lbnQpIHsJDQoJCQkkKGdhbGxlcnkuaW1hZ2VzKS5jc3MoJ21hcmdp
bi10b3AnLChoZWlnaHRDb250YWluZXItaGVpZ2h0SW1hZ2UpLzIpOw0KCQkJJCgn
LmxvYWRlcicpLmhpZGUoKTsNCgkJCSQoZ2FsbGVyeS5pbWFnZXMpLndpZHRoKHdp
ZHRoSW1hZ2UpLmhlaWdodChoZWlnaHRJbWFnZSkuYWRkQ2xhc3MoJ2ltYWdlc19i
YWNrZ3JvdW5kJyk7DQoJCQlhbGxfaW1hZ2VzLmVxKGluZGV4X2FjdGl2ZV9lbGVt
ZW50KS5zaG93KCk7DQoJCX0NCgl9DQoJZnVuY3Rpb24gY2xvc2VNb2RhbCgpew0K
CQkkKGdhbGxlcnkubW9kYWwpLmNsaWNrKGZ1bmN0aW9uKGV2ZW50KXsNCgkJCXZh
ciBlbGVtZW50ID0gZXZlbnQudGFyZ2V0Lm5vZGVOYW1lOw0KCQkJaWYoZWxlbWVu
dCA9PSAnSU1HJyB8fCBlbGVtZW50ID09ICdBJykgcmV0dXJuIGZhbHNlOw0KCQkJ
JChnYWxsZXJ5Lm1vZGFsKS5yZW1vdmUoKTsNCgkJfSk7DQoJCSQod2luZG93KS5r
ZXl1cChmdW5jdGlvbihldmVudCkgeyANCgkJCWlmIChldmVudC5rZXlDb2RlID09
IDI3KSB7IA0KCQkJCSQoZ2FsbGVyeS5tb2RhbCkucmVtb3ZlKCk7DQoJCQl9IA0K
CQl9KTsNCgl9DQoJZnVuY3Rpb24gYW5pbWF0aW9uR2FsbGVyeSgpew0KCQkkKGdh
bGxlcnkubGVmdF9hbmltYXRpb24pDQoJCS5ob3ZlcihmdW5jdGlvbigpew0KCQkJ
aWYoaW5kZXhfYWN0aXZlX2VsZW1lbnQgIT0gMCkgeyANCgkJCQkkKHRoaXMpLmZp
bmQoJy5sX2Fycm93JykuZmFkZUluKDEwMCk7DQoJCQkJJCh0aGlzKS5yZW1vdmVD
bGFzcygnY3Vyc29yRGVmYXVsdCcpOw0KCQkJfQ0KCQkJZWxzZSAkKHRoaXMpLmFk
ZENsYXNzKCdjdXJzb3JEZWZhdWx0Jyk7DQoJCX0sZnVuY3Rpb24oKXskKHRoaXMp
LmZpbmQoJy5sX2Fycm93JykuZmFkZU91dCgxMDApfSkNCgkJLm1vdXNlZG93bihm
dW5jdGlvbigpew0KCQkJaWYoaW5kZXhfYWN0aXZlX2VsZW1lbnQgPT0gMSkgew0K
CQkJCSQodGhpcykuYWRkQ2xhc3MoJ2N1cnNvckRlZmF1bHQnKS5maW5kKCcubF9h
cnJvdycpLmZhZGVPdXQoMTAwKTsNCgkJCX0NCgkJfSkNCgkJLmNsaWNrKGZ1bmN0
aW9uKCl7DQoJCQlpZihpbmRleF9hY3RpdmVfZWxlbWVudCAhPSAwKXsNCgkJCQlh
bGxfaW1hZ2VzLmVxKGluZGV4X2FjdGl2ZV9lbGVtZW50KS5mYWRlT3V0KDUwLCBm
dW5jdGlvbigpew0KCQkJCQkkKHRoaXMpLnJlbW92ZUNsYXNzKCdpbWFnZV9hY3Rp
dmUnKQ0KCQkJCQluZXdfaW1hZ2UgPSBhbGxfaW1hZ2VzLmVxKGluZGV4X2FjdGl2
ZV9lbGVtZW50IC0gMSk7DQoJCQkJCSQoZ2FsbGVyeS5pbWFnZXMpLmFuaW1hdGUo
ew0KCQkJCQkJd2lkdGg6IG5ld19pbWFnZS53aWR0aCgpLA0KCQkJCQkJaGVpZ2h0
OiBuZXdfaW1hZ2UuaGVpZ2h0KCksDQoJCQkJCQltYXJnaW5Ub3A6IChoZWlnaHRX
aW5kb3ctbmV3X2ltYWdlLmhlaWdodCgpKS8yDQoJCQkJCX0sMzAwLCBmdW5jdGlv
bigpew0KCQkJCQkJbmV3X2ltYWdlLmZhZGVJbig1MCxmdW5jdGlvbigpeyQodGhp
cykuYWRkQ2xhc3MoJ2ltYWdlX2FjdGl2ZScpO30pDQoJCQkJCQlpbmRleF9hY3Rp
dmVfZWxlbWVudCA9IGluZGV4X2FjdGl2ZV9lbGVtZW50IC0gMTsNCgkJCQkJfSk7
DQoJCQkJfSk7DQoJCQl9DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0pOw0KCQkkKGdh
bGxlcnkucmlnaHRfYW5pbWF0aW9uKQ0KCQkuaG92ZXIoZnVuY3Rpb24oKXsNCgkJ
CWlmKGluZGV4X2FjdGl2ZV9lbGVtZW50ICE9IGFsbF9pbWFnZXMuc2l6ZSgpIC0g
MSl7IA0KCQkJCSQodGhpcykuZmluZCgnLnJfYXJyb3cnKS5mYWRlSW4oMTAwKTsN
CgkJCQkkKHRoaXMpLnJlbW92ZUNsYXNzKCdjdXJzb3JEZWZhdWx0Jyk7DQoJCQl9
DQoJCQllbHNlICQodGhpcykuYWRkQ2xhc3MoJ2N1cnNvckRlZmF1bHQnKTsNCgkJ
fSxmdW5jdGlvbigpeyQodGhpcykuZmluZCgnLnJfYXJyb3cnKS5mYWRlT3V0KDEw
MCl9KQ0KCQkubW91c2Vkb3duKGZ1bmN0aW9uKCl7DQoJCQlpZihpbmRleF9hY3Rp
dmVfZWxlbWVudCA9PSBhbGxfaW1hZ2VzLnNpemUoKSAtIDIpIHsNCgkJCQkkKHRo
aXMpLmFkZENsYXNzKCdjdXJzb3JEZWZhdWx0JykuZmluZCgnLnJfYXJyb3cnKS5m
YWRlT3V0KDEwMCk7DQoJCQl9DQoJCX0pDQoJCS5jbGljayhmdW5jdGlvbigpew0K
CQkJaWYoaW5kZXhfYWN0aXZlX2VsZW1lbnQrMSA8IGFsbF9pbWFnZXMuc2l6ZSgp
KXsNCgkJCQljb25zb2xlLmxvZyhpbmRleF9hY3RpdmVfZWxlbWVudCk7DQoJCQkJ
YWxsX2ltYWdlcy5lcShpbmRleF9hY3RpdmVfZWxlbWVudCkuZmFkZU91dCg1MCwg
ZnVuY3Rpb24oKXsNCgkJCQkJJCh0aGlzKS5yZW1vdmVDbGFzcygnaW1hZ2VfYWN0
aXZlJykNCgkJCQkJbmV3X2ltYWdlID0gYWxsX2ltYWdlcy5lcShpbmRleF9hY3Rp
dmVfZWxlbWVudCArIDEpOw0KCQkJCQkkKGdhbGxlcnkuaW1hZ2VzKS5hbmltYXRl
KHsNCgkJCQkJCXdpZHRoOiBuZXdfaW1hZ2Uud2lkdGgoKSwNCgkJCQkJCWhlaWdo
dDogbmV3X2ltYWdlLmhlaWdodCgpLA0KCQkJCQkJbWFyZ2luVG9wOiAoaGVpZ2h0
V2luZG93LW5ld19pbWFnZS5oZWlnaHQoKSkvMg0KCQkJCQl9LDMwMCwgZnVuY3Rp
b24oKXsNCgkJCQkJCW5ld19pbWFnZS5mYWRlSW4oNTAsZnVuY3Rpb24oKXskKHRo
aXMpLmFkZENsYXNzKCdpbWFnZV9hY3RpdmUnKTt9KQ0KCQkJCQkJaW5kZXhfYWN0
aXZlX2VsZW1lbnQgPSBpbmRleF9hY3RpdmVfZWxlbWVudCArIDE7DQoJCQkJCX0p
Ow0KCQkJCX0pOw0KCQkJfQ0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9KTsNCgl9DQp9
DQpmdW5jdGlvbiBJbWFnZUZsb3cgKCkNCnsNCgkvKiBTZXR0aW5nIG9wdGlvbiBk
ZWZhdWx0cyAqLw0KCXRoaXMuZGVmYXVsdHMgPQ0KCXsNCgkJYW5pbWF0aW9uU3Bl
ZWQ6ICAgICA1MCwgICAgICAgICAgICAgLyogQW5pbWF0aW9uIHNwZWVkIGluIG1z
ICovDQoJCWFzcGVjdFJhdGlvOiAgICAgICAgMS45NjQsICAgICAgICAgIC8qIEFz
cGVjdCByYXRpbyBvZiB0aGUgSW1hZ2VGbG93IGNvbnRhaW5lciAod2lkdGggZGl2
aWRlZCBieSBoZWlnaHQpICovDQoJCWJ1dHRvbnM6ICAgICAgICAgICAgdHJ1ZSwg
ICAgICAgICAgLyogVG9nZ2xlIG5hdmlnYXRpb24gYnV0dG9ucyAqLw0KCQljYXB0
aW9uczogICAgICAgICAgIGZhbHNlLCAgICAgICAgICAgLyogVG9nZ2xlIGNhcHRp
b25zICovDQoJCWNpcmN1bGFyOiAgICAgICAgICAgZmFsc2UsICAgICAgICAgIC8q
IFRvZ2dsZSBjaXJjdWxhciByb3RhdGlvbiAqLw0KCQlpbWFnZUN1cnNvcjogICAg
ICAgICdwb2ludGVyJywgICAgICAvKiBDdXJzb3IgdHlwZSBmb3IgYWxsIGltYWdl
cyAtIGRlZmF1bHQgaXMgJ2RlZmF1bHQnICovDQoJCUltYWdlRmxvd0lEOiAgICAg
ICAgJ2ltYWdlZmxvdycsICAgIC8qIERlZmF1bHQgaWQgb2YgdGhlIEltYWdlRmxv
dyBjb250YWluZXIgKi8NCgkJaW1hZ2VGb2N1c006ICAgICAgICAxLjAsICAgICAg
ICAgICAgLyogTXVsdGlwbGljYXRvciBmb3IgdGhlIGZvY3Vzc2VkIGltYWdlIHNp
emUgaW4gcGVyY2VudCAqLw0KCQlpbWFnZUZvY3VzTWF4OiAgICAgIDMsICAgICAg
ICAgICAgICAvKiBNYXggbnVtYmVyIG9mIGltYWdlcyBvbiBlYWNoIHNpZGUgb2Yg
dGhlIGZvY3Vzc2VkIG9uZSAqLw0KCQlpbWFnZVBhdGg6ICAgICAgICAgICcnLCAg
ICAgICAgICAgICAvKiBQYXRoIHRvIHRoZSBpbWFnZXMgcmVsYXRpdmUgdG8gdGhl
IHJlZmxlY3RfLnBocCBzY3JpcHQgKi8NCgkJaW1hZ2VTY2FsaW5nOiAgICAgICB0
cnVlLCAgICAgICAgICAgLyogVG9nZ2xlIGltYWdlIHNjYWxpbmcgKi8gDQoJCWlt
YWdlc0hlaWdodDogICAgICAgMC41MCwgICAgICAgICAgIC8qIEhlaWdodCBvZiB0
aGUgaW1hZ2VzIGRpdiBjb250YWluZXIgaW4gcGVyY2VudCAqLw0KCQlpbWFnZXNN
OiAgICAgICAgICAgIDEuMCwgICAgICAgICAgICAvKiBNdWx0aXBsaWNhdG9yIGZv
ciBhbGwgaW1hZ2VzIGluIHBlcmNlbnQgKi8NCgkJb25DbGljazogICAgICAgICAg
ICBmdW5jdGlvbigpIHttb2RhbCh0aGlzLnVybCwnJyk7IH0sICAgLyogT25jbGlj
ayBiZWhhdmlvdXIgKi8NCgkJb3BhY2l0eTogICAgICAgICAgICBmYWxzZSwgICAg
ICAgICAgLyogVG9nZ2xlIGltYWdlIG9wYWNpdHkgKi8NCgkJb3BhY2l0eUFycmF5
OiAgICAgICBbMTAsOCw2LDQsMl0sICAgLyogSW1hZ2Ugb3BhY2l0eSAocmFuZ2U6
IDAgdG8gMTApIGZpcnN0IHZhbHVlIGlzIGZvciB0aGUgZm9jdXNzZWQgaW1hZ2Ug
Ki8NCgkJcGVyY2VudExhbmRzY2FwZTogICAyMDAsICAgICAgICAgICAgLyogU2Nh
bGUgbGFuZHNjYXBlIGZvcm1hdCAqLw0KCQlwZXJjZW50T3RoZXI6ICAgICAgIDEw
MCwgICAgICAgICAgICAvKiBTY2FsZSBwb3J0cmFpdCBhbmQgc3F1YXJlIGZvcm1h
dCAqLw0KCQlwcmVsb2FkSW1hZ2VzOiAgICAgIHRydWUsICAgICAgICAgICAvKiBU
b2dnbGVzIGxvYWRpbmcgYmFyIChmYWxzZTogcmVxdWlyZXMgaW1nIGF0dHJpYnV0
ZXMgaGVpZ2h0IGFuZCB3aWR0aCkgKi8NCgkJcmVmbGVjdGlvbnM6ICAgICAgICB0
cnVlLCAgICAgICAgICAgLyogVG9nZ2xlIHJlZmxlY3Rpb25zICovDQoJCXJlZmxl
Y3Rpb25HRVQ6ICAgICAgJycsICAgICAgICAgICAgIC8qIFBhc3MgdmFyaWFibGVz
IHZpYSB0aGUgR0VUIG1ldGhvZCB0byB0aGUgcmVmbGVjdF8ucGhwIHNjcmlwdCAq
Lw0KCQlyZWZsZWN0aW9uUDogICAgICAgIDAuNSwgICAgICAgICAgICAvKiBIZWln
aHQgb2YgdGhlIHJlZmxlY3Rpb24gaW4gcGVyY2VudCBvZiB0aGUgc291cmNlIGlt
YWdlICovDQoJCXJlZmxlY3Rpb25QTkc6ICAgICAgdHJ1ZSwgICAgICAgICAgLyog
VG9nZ2xlIHJlZmxlY3QyLnBocCBvciByZWZsZWN0My5waHAgKi8NCgkJcmVmbGVj
dFBhdGg6ICAgICAgICAnJywgICAgICAgICAgICAgLyogUGF0aCB0byB0aGUgcmVm
bGVjdF8ucGhwIHNjcmlwdCAqLw0KCQlzY3JvbGxiYXJQOiAgICAgICAgIDAuNiwg
ICAgICAgICAgICAvKiBXaWR0aCBvZiB0aGUgc2Nyb2xsYmFyIGluIHBlcmNlbnQg
Ki8NCgkJc2xpZGVyOiAgICAgICAgICAgICB0cnVlLCAgICAgICAgICAgLyogVG9n
Z2xlIHNsaWRlciAqLw0KCQlzbGlkZXJDdXJzb3I6ICAgICAgICdwb2ludGVyJywg
ICAgIC8qIFNsaWRlciBjdXJzb3IgdHlwZSAtIGRlZmF1bHQgaXMgJ2RlZmF1bHQn
ICovDQoJCXNsaWRlcldpZHRoOiAgICAgICAgMTQsICAgICAgICAgICAgIC8qIFdp
ZHRoIG9mIHRoZSBzbGlkZXIgaW4gcHggKi8NCgkJc2xpZGVzaG93OiAgICAgICAg
ICBmYWxzZSwgICAgICAgICAgLyogVG9nZ2xlIHNsaWRlc2hvdyAqLw0KCQlzbGlk
ZXNob3dTcGVlZDogICAgIDE1MDAsICAgICAgICAgICAvKiBUaW1lIGJldHdlZW4g
c2xpZGVzIGluIG1zICovDQoJCXNsaWRlc2hvd0F1dG9wbGF5OiAgZmFsc2UsICAg
ICAgICAgIC8qIFRvZ2dsZSBhdXRvbWF0aWMgc2xpZGVzaG93IHBsYXkgb24gc3Rh
cnR1cCAqLw0KCQlzdGFydElEOiAgICAgICAgICAgIDEsICAgICAgICAgICAgICAv
KiBJbWFnZSBJRCB0byBiZWdpbiB3aXRoICovDQoJCWdsaWRlVG9TdGFydElEOiAg
ICAgdHJ1ZSwgICAgICAgICAgIC8qIFRvZ2dsZSBnbGlkZSBhbmltYXRpb24gdG8g
c3RhcnQgSUQgKi8NCgkJc3RhcnRBbmltYXRpb246ICAgICBmYWxzZSwgICAgICAg
ICAgLyogQW5pbWF0ZSBpbWFnZXMgbW92aW5nIGluIGZyb20gdGhlIHJpZ2h0IG9u
IHN0YXJ0dXAgKi8NCgkJeFN0ZXA6ICAgICAgICAgICAgICAxNTAgICAgICAgICAg
ICAgLyogU3RlcCB3aWR0aCBvbiB0aGUgeC1heGlzIGluIHB4ICovDQoJfTsNCg0K
DQoJLyogQ2xvc3VyZSBmb3IgdGhpcyAqLw0KCXZhciBteSA9IHRoaXM7DQoNCg0K
CS8qIEluaXRpYXRlIEltYWdlRmxvdyAqLw0KCXRoaXMuaW5pdCA9IGZ1bmN0aW9u
IChvcHRpb25zKQ0KCXsNCgkJLyogRXZhbHVhdGUgb3B0aW9ucyAqLw0KCQlmb3Io
dmFyIG5hbWUgaW4gbXkuZGVmYXVsdHMpIA0KCQl7DQoJCQl0aGlzW25hbWVdID0g
KG9wdGlvbnMgIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zW25hbWVdICE9PSB1bmRl
ZmluZWQpID8gb3B0aW9uc1tuYW1lXSA6IG15LmRlZmF1bHRzW25hbWVdOw0KCQl9
DQoNCgkJLyogVHJ5IHRvIGdldCBJbWFnZUZsb3cgZGl2IGVsZW1lbnQgKi8NCgkJ
dmFyIEltYWdlRmxvd0RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG15Lklt
YWdlRmxvd0lEKTsNCgkJaWYoSW1hZ2VGbG93RGl2KQ0KCQl7DQoJCQkvKiBTZXQg
aXQgZ2xvYmFsIHdpdGhpbiB0aGUgSW1hZ2VGbG93IHNjb3BlICovDQoJCQlJbWFn
ZUZsb3dEaXYuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJzsNCgkJCXRoaXMu
SW1hZ2VGbG93RGl2ID0gSW1hZ2VGbG93RGl2Ow0KDQoJCQkvKiBUcnkgdG8gY3Jl
YXRlIFhIVE1MIHN0cnVjdHVyZSAqLw0KCQkJaWYodGhpcy5jcmVhdGVTdHJ1Y3R1
cmUoKSkNCgkJCXsNCgkJCQl0aGlzLmltYWdlc0RpdiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKG15LkltYWdlRmxvd0lEKydfaW1hZ2VzJyk7DQoJCQkJdGhpcy5j
YXB0aW9uRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobXkuSW1hZ2VGbG93
SUQrJ19jYXB0aW9uJyk7DQoJCQkJdGhpcy5uYXZpZ2F0aW9uRGl2ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQobXkuSW1hZ2VGbG93SUQrJ19uYXZpZ2F0aW9uJyk7
DQoJCQkJdGhpcy5zY3JvbGxiYXJEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZChteS5JbWFnZUZsb3dJRCsnX3Njcm9sbGJhcicpOw0KCQkJCXRoaXMuc2xpZGVy
RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobXkuSW1hZ2VGbG93SUQrJ19z
bGlkZXInKTsNCgkJCQl0aGlzLmJ1dHRvbk5leHREaXYgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZChteS5JbWFnZUZsb3dJRCsnX25leHQnKTsNCgkJCQl0aGlzLmJ1
dHRvblByZXZpb3VzRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobXkuSW1h
Z2VGbG93SUQrJ19wcmV2aW91cycpOw0KCQkJCXRoaXMuYnV0dG9uU2xpZGVzaG93
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobXkuSW1hZ2VGbG93SUQrJ19zbGlk
ZXNob3cnKTsNCg0KCQkJCXRoaXMuaW5kZXhBcnJheSA9IFtdOw0KCQkJCXRoaXMu
Y3VycmVudCA9IDA7DQoJCQkJdGhpcy5pbWFnZUlEID0gMDsNCgkJCQl0aGlzLnRh
cmdldCA9IDA7DQoJCQkJdGhpcy5tZW1UYXJnZXQgPSAwOw0KCQkJCXRoaXMuZmly
c3RSZWZyZXNoID0gdHJ1ZTsNCgkJCQl0aGlzLmZpcnN0Q2hlY2sgPSB0cnVlOw0K
CQkJCXRoaXMuYnVzeSA9IGZhbHNlOw0KDQoJCQkJLyogU2V0IGhlaWdodCBvZiB0
aGUgSW1hZ2VGbG93IGNvbnRhaW5lciBhbmQgY2VudGVyIHRoZSBsb2FkaW5nIGJh
ciAqLw0KCQkJCXZhciB3aWR0aCA9IHRoaXMuSW1hZ2VGbG93RGl2Lm9mZnNldFdp
ZHRoOw0KCQkJCXZhciBoZWlnaHQgPSBNYXRoLnJvdW5kKHdpZHRoIC8gbXkuYXNw
ZWN0UmF0aW8pOw0KCQkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG15LkltYWdl
Rmxvd0lEKydfbG9hZGluZ190eHQnKS5zdHlsZS5wYWRkaW5nVG9wID0gKChoZWln
aHQgKiAwLjUpIC0yMikgKyAncHgnOw0KCQkJCUltYWdlRmxvd0Rpdi5zdHlsZS5o
ZWlnaHQgPSBoZWlnaHQgKyAncHgnOw0KDQoJCQkJLyogSW5pdCBsb2FkaW5nIHBy
b2dyZXNzICovDQoJCQkJdGhpcy5sb2FkaW5nUHJvZ3Jlc3MoKTsNCgkJCX0NCgkJ
fQ0KCX07DQoNCg0KCS8qIENyZWF0ZSBIVE1MIFN0cnVjdHVyZSAqLw0KCXRoaXMu
Y3JlYXRlU3RydWN0dXJlID0gZnVuY3Rpb24oKQ0KCXsNCgkJLyogQ3JlYXRlIGlt
YWdlcyBkaXYgY29udGFpbmVyICovDQoJCXZhciBpbWFnZXNEaXYgPSBteS5IZWxw
ZXIuY3JlYXRlRG9jdW1lbnRFbGVtZW50KCdkaXYnLCdpbWFnZXMnKTsNCg0KCQkv
KiBTaGlmdCBhbGwgaW1hZ2VzIGludG8gdGhlIGltYWdlcyBkaXYgKi8NCgkJdmFy
IG5vZGUsIHZlcnNpb24sIHNyYywgaW1hZ2VOb2RlOw0KCQl2YXIgbWF4ID0gbXku
SW1hZ2VGbG93RGl2LmNoaWxkTm9kZXMubGVuZ3RoOw0KCQlmb3IodmFyIGluZGV4
ID0gMDsgaW5kZXggPCBtYXg7IGluZGV4KyspDQoJCXsNCgkJCW5vZGUgPSBteS5J
bWFnZUZsb3dEaXYuY2hpbGROb2Rlc1tpbmRleF07DQoJCQlpZiAobm9kZSAmJiBu
b2RlLm5vZGVUeXBlID09IDEgJiYgbm9kZS5ub2RlTmFtZSA9PSAnSU1HJykNCgkJ
CXsNCgkJCQkvKiBBZGQgJ3JlZmxlY3QucGhwP2ltZz0nICovDQoJCQkJaWYobXku
cmVmbGVjdGlvbnMgPT09IHRydWUpDQoJCQkJew0KCQkJCQl2ZXJzaW9uID0gKG15
LnJlZmxlY3Rpb25QTkcpID8gJzMnIDogJzInOw0KCQkJCQlzcmMgPSBteS5pbWFn
ZVBhdGgrbm9kZS5nZXRBdHRyaWJ1dGUoJ3NyYycsMik7DQoJCQkJCXNyYyA9IHNy
YytteS5yZWZsZWN0aW9uR0VUOw0KCQkJCQlub2RlLnNldEF0dHJpYnV0ZSgnc3Jj
JyxzcmMpOw0KCQkJCX0NCg0KCQkJCS8qIENsb25lIGltYWdlIG5vZGVzIGFuZCBh
cHBlbmQgdGhlbSB0byB0aGUgaW1hZ2VzIGRpdiAqLw0KCQkJCWltYWdlTm9kZSA9
IG5vZGUuY2xvbmVOb2RlKHRydWUpOw0KCQkJCWltYWdlc0Rpdi5hcHBlbmRDaGls
ZChpbWFnZU5vZGUpOw0KCQkJfQ0KCQl9DQoNCgkJLyogQ2xvbmUgc29tZSBtb3Jl
IGltYWdlcyB0byBtYWtlIGEgY2lyY3VsYXIgYW5pbWF0aW9uIHBvc3NpYmxlICov
DQoJCWlmKG15LmNpcmN1bGFyKQ0KCQl7DQoJCQkvKiBDcmVhdGUgdGVtcG9yYXJ5
IGVsZW1lbnRzIHRvIGhvbGQgdGhlIGNsb25lZCBpbWFnZXMgKi8NCgkJCXZhciBm
aXJzdCA9IG15LkhlbHBlci5jcmVhdGVEb2N1bWVudEVsZW1lbnQoJ2RpdicsJ2lt
YWdlcycpOw0KCQkJdmFyIGxhc3QgPSBteS5IZWxwZXIuY3JlYXRlRG9jdW1lbnRF
bGVtZW50KCdkaXYnLCdpbWFnZXMnKTsNCgkJCQ0KCQkJLyogTWFrZSBzdXJlLCB0
aGF0IHRoZXJlIGFyZSBlbm91Z2ggaW1hZ2VzIHRvIHVzZSBjaXJjdWxhciBtb2Rl
ICovDQoJCQltYXggPSBpbWFnZXNEaXYuY2hpbGROb2Rlcy5sZW5ndGg7DQoJCQlp
ZihtYXggPCBteS5pbWFnZUZvY3VzTWF4KQ0KCQkJew0KCQkJCW15LmltYWdlRm9j
dXNNYXggPSBtYXg7DQoJCQl9DQoNCgkJCS8qIERvIG5vdCBjbG9uZSBhbnl0aGlu
ZyBpZiB0aGVyZSBpcyBvbmx5IG9uZSBpbWFnZSAqLw0KCQkJaWYobWF4ID4gMSkN
CgkJCXsNCgkJCQkvKiBDbG9uZSB0aGUgZmlyc3QgYW5kIGxhc3QgaW1hZ2VzICov
DQoJCQkJdmFyIGk7DQoJCQkJZm9yKGkgPSAwOyBpIDwgbWF4OyBpKyspDQoJCQkJ
ew0KCQkJCQkvKiBOdW1iZXIgb2YgY2xvbmVzIG9uIGVhY2ggc2lkZSBlcXVhbHMg
dGhlIGltYWdlRm9jdXNNYXggKi8NCgkJCQkJbm9kZSA9IGltYWdlc0Rpdi5jaGls
ZE5vZGVzW2ldOw0KCQkJCQlpZihpIDwgbXkuaW1hZ2VGb2N1c01heCkNCgkJCQkJ
ew0KCQkJCQkJaW1hZ2VOb2RlID0gbm9kZS5jbG9uZU5vZGUodHJ1ZSk7DQoJCQkJ
CQlmaXJzdC5hcHBlbmRDaGlsZChpbWFnZU5vZGUpOw0KCQkJCQl9DQoJCQkJCWlm
KG1heC1pIDwgbXkuaW1hZ2VGb2N1c01heCsxKQ0KCQkJCQl7DQoJCQkJCQlpbWFn
ZU5vZGUgPSBub2RlLmNsb25lTm9kZSh0cnVlKTsNCgkJCQkJCWxhc3QuYXBwZW5k
Q2hpbGQoaW1hZ2VOb2RlKTsNCgkJCQkJfQ0KCQkJCX0NCg0KCQkJCS8qIFNvcnQg
dGhlIGltYWdlIG5vZGVzIGluIHRoZSBmb2xsb3dpbmcgb3JkZXI6IGxhc3QgfCBv
cmlnaW5hbHMgfCBmaXJzdCAqLw0KCQkJCWZvcihpID0gMDsgaSA8IG1heDsgaSsr
KQ0KCQkJCXsNCgkJCQkJbm9kZSA9IGltYWdlc0Rpdi5jaGlsZE5vZGVzW2ldOw0K
CQkJCQlpbWFnZU5vZGUgPSBub2RlLmNsb25lTm9kZSh0cnVlKTsNCgkJCQkJbGFz
dC5hcHBlbmRDaGlsZChpbWFnZU5vZGUpOw0KCQkJCX0NCgkJCQlmb3IoaSA9IDA7
IGkgPCBteS5pbWFnZUZvY3VzTWF4OyBpKyspDQoJCQkJew0KCQkJCQlub2RlID0g
Zmlyc3QuY2hpbGROb2Rlc1tpXTsNCgkJCQkJaW1hZ2VOb2RlID0gbm9kZS5jbG9u
ZU5vZGUodHJ1ZSk7DQoJCQkJCWxhc3QuYXBwZW5kQ2hpbGQoaW1hZ2VOb2RlKTsN
CgkJCQl9DQoJCQkJDQoJCQkJLyogT3ZlcndyaXRlIHRoZSBpbWFnZXNEaXYgd2l0
aCB0aGUgbmV3IG9yZGVyICovDQoJCQkJaW1hZ2VzRGl2ID0gbGFzdDsNCgkJCX0N
CgkJfQ0KDQoJCS8qIENyZWF0ZSBzbGlkZXNob3cgYnV0dG9uIGRpdiBhbmQgYXBw
ZW5kIGl0IHRvIHRoZSBpbWFnZXMgZGl2ICovDQoJCWlmKG15LnNsaWRlc2hvdykN
CgkJew0KCQkJdmFyIHNsaWRlc2hvd0J1dHRvbiA9IG15LkhlbHBlci5jcmVhdGVE
b2N1bWVudEVsZW1lbnQoJ2RpdicsJ3NsaWRlc2hvdycpOw0KCQkJaW1hZ2VzRGl2
LmFwcGVuZENoaWxkKHNsaWRlc2hvd0J1dHRvbik7DQoJCX0NCg0KCQkvKiBDcmVh
dGUgbG9hZGluZyB0ZXh0IGNvbnRhaW5lciAqLw0KCQl2YXIgbG9hZGluZ1AgPSBt
eS5IZWxwZXIuY3JlYXRlRG9jdW1lbnRFbGVtZW50KCdwJywnbG9hZGluZ190eHQn
KTsNCgkJdmFyIGxvYWRpbmdUZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
JyAnKTsNCgkJbG9hZGluZ1AuYXBwZW5kQ2hpbGQobG9hZGluZ1RleHQpOw0KDQoJ
CS8qIENyZWF0ZSBsb2FkaW5nIGRpdiBjb250YWluZXIgKi8NCgkJdmFyIGxvYWRp
bmdEaXYgPSBteS5IZWxwZXIuY3JlYXRlRG9jdW1lbnRFbGVtZW50KCdkaXYnLCds
b2FkaW5nJyk7DQoNCgkJLyogQ3JlYXRlIGxvYWRpbmcgYmFyIGRpdiBjb250YWlu
ZXIgaW5zaWRlIHRoZSBsb2FkaW5nIGRpdiAqLw0KCQl2YXIgbG9hZGluZ0JhckRp
diA9IG15LkhlbHBlci5jcmVhdGVEb2N1bWVudEVsZW1lbnQoJ2RpdicsJ2xvYWRp
bmdfYmFyJyk7DQoJCWxvYWRpbmdEaXYuYXBwZW5kQ2hpbGQobG9hZGluZ0JhckRp
dik7DQoNCgkJLyogQ3JlYXRlIGNhcHRpb25zIGRpdiBjb250YWluZXIgKi8NCgkJ
dmFyIGNhcHRpb25EaXYgPSBteS5IZWxwZXIuY3JlYXRlRG9jdW1lbnRFbGVtZW50
KCdkaXYnLCdjYXB0aW9uJyk7DQoNCgkJLyogQ3JlYXRlIHNsaWRlciBhbmQgYnV0
dG9uIGRpdiBjb250YWluZXIgaW5zaWRlIHRoZSBzY3JvbGxiYXIgZGl2ICovDQoJ
CXZhciBzY3JvbGxiYXJEaXYgPSBteS5IZWxwZXIuY3JlYXRlRG9jdW1lbnRFbGVt
ZW50KCdkaXYnLCdzY3JvbGxiYXInKTsNCgkJdmFyIHNsaWRlckRpdiA9IG15Lkhl
bHBlci5jcmVhdGVEb2N1bWVudEVsZW1lbnQoJ2RpdicsJ3NsaWRlcicpOw0KCQlz
Y3JvbGxiYXJEaXYuYXBwZW5kQ2hpbGQoc2xpZGVyRGl2KTsNCgkJaWYobXkuYnV0
dG9ucykNCgkJew0KCQkJdmFyIGJ1dHRvblByZXZpb3VzRGl2ID0gbXkuSGVscGVy
LmNyZWF0ZURvY3VtZW50RWxlbWVudCgnZGl2JywncHJldmlvdXMnLCAnYnV0dG9u
Jyk7DQoJCQl2YXIgYnV0dG9uTmV4dERpdiA9IG15LkhlbHBlci5jcmVhdGVEb2N1
bWVudEVsZW1lbnQoJ2RpdicsJ25leHQnLCAnYnV0dG9uJyk7DQoJCQlzY3JvbGxi
YXJEaXYuYXBwZW5kQ2hpbGQoYnV0dG9uUHJldmlvdXNEaXYpOw0KCQkJc2Nyb2xs
YmFyRGl2LmFwcGVuZENoaWxkKGJ1dHRvbk5leHREaXYpOw0KCQl9DQoNCgkJLyog
Q3JlYXRlIG5hdmlnYXRpb24gZGl2IGNvbnRhaW5lciBiZW5lYXRoIGltYWdlcyBk
aXYgKi8NCgkJdmFyIG5hdmlnYXRpb25EaXYgPSBteS5IZWxwZXIuY3JlYXRlRG9j
dW1lbnRFbGVtZW50KCdkaXYnLCduYXZpZ2F0aW9uJyk7DQoJCW5hdmlnYXRpb25E
aXYuYXBwZW5kQ2hpbGQoY2FwdGlvbkRpdik7DQoJCW5hdmlnYXRpb25EaXYuYXBw
ZW5kQ2hpbGQoc2Nyb2xsYmFyRGl2KTsNCgkNCgkJLyogVXBkYXRlIGRvY3VtZW50
IHN0cnVjdHVyZSBhbmQgcmV0dXJuIHRydWUgb24gc3VjY2VzcyAqLw0KCQl2YXIg
c3VjY2VzcyA9IGZhbHNlOw0KCQlpZiAobXkuSW1hZ2VGbG93RGl2LmFwcGVuZENo
aWxkKGltYWdlc0RpdikgJiYNCgkJCW15LkltYWdlRmxvd0Rpdi5hcHBlbmRDaGls
ZChsb2FkaW5nUCkgJiYNCgkJCW15LkltYWdlRmxvd0Rpdi5hcHBlbmRDaGlsZChs
b2FkaW5nRGl2KSAmJg0KCQkJbXkuSW1hZ2VGbG93RGl2LmFwcGVuZENoaWxkKG5h
dmlnYXRpb25EaXYpKQ0KCQl7DQoJCQkvKiBSZW1vdmUgaW1hZ2Ugbm9kZXMgb3V0
c2lkZSB0aGUgaW1hZ2VzIGRpdiAqLw0KCQkJbWF4ID0gbXkuSW1hZ2VGbG93RGl2
LmNoaWxkTm9kZXMubGVuZ3RoOw0KCQkJZm9yKGluZGV4ID0gMDsgaW5kZXggPCBt
YXg7IGluZGV4KyspDQoJCQl7DQoJCQkJbm9kZSA9IG15LkltYWdlRmxvd0Rpdi5j
aGlsZE5vZGVzW2luZGV4XTsNCgkJCQlpZiAobm9kZSAmJiBub2RlLm5vZGVUeXBl
ID09IDEgJiYgbm9kZS5ub2RlTmFtZSA9PSAnSU1HJykNCgkJCQl7DQoJCQkJCW15
LkltYWdlRmxvd0Rpdi5yZW1vdmVDaGlsZChub2RlKTsNCgkJCQl9DQoJCQl9DQoJ
CQlzdWNjZXNzID0gdHJ1ZTsNCgkJfQ0KCQlyZXR1cm4gc3VjY2VzczsNCgl9Ow0K
DQoJLyogTWFuYWdlIGxvYWRpbmcgcHJvZ3Jlc3MgYW5kIGNhbGwgdGhlIHJlZnJl
c2ggZnVuY3Rpb24gKi8NCgl0aGlzLmxvYWRpbmdQcm9ncmVzcyA9IGZ1bmN0aW9u
KCkNCgl7DQoJCXZhciBwID0gbXkubG9hZGluZ1N0YXR1cygpOw0KCQlpZigocCA8
IDEwMCB8fCBteS5maXJzdENoZWNrKSAmJiBteS5wcmVsb2FkSW1hZ2VzKQ0KCQl7
DQoJCQkvKiBJbnNlcnQgYSBzaG9ydCBkZWxheSBpZiB0aGUgYnJvd3NlciBsb2Fk
cyByYXBpZGx5IGZyb20gaXRzIGNhY2hlICovDQoJCQlpZihteS5maXJzdENoZWNr
ICYmIHAgPT0gMTAwKQ0KCQkJew0KCQkJCW15LmZpcnN0Q2hlY2sgPSBmYWxzZTsN
CgkJCQl3aW5kb3cuc2V0VGltZW91dChteS5sb2FkaW5nUHJvZ3Jlc3MsIDEwMCk7
DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJd2luZG93LnNldFRpbWVvdXQobXku
bG9hZGluZ1Byb2dyZXNzLCA0MCk7DQoJCQl9DQoJCX0NCgkJZWxzZQ0KCQl7DQoJ
CQkvKiBIaWRlIGxvYWRpbmcgZWxlbWVudHMgKi8NCgkJCWRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKG15LkltYWdlRmxvd0lEKydfbG9hZGluZ190eHQnKS5zdHlsZS5k
aXNwbGF5ID0gJ25vbmUnOw0KCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobXku
SW1hZ2VGbG93SUQrJ19sb2FkaW5nJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsN
Cg0KCQkJLyogUmVmcmVzaCBJbWFnZUZsb3cgb24gd2luZG93IHJlc2l6ZSAtIGRl
bGF5IGFkZGluZyB0aGlzIGV2ZW50IGZvciB0aGUgSUUgKi8NCgkJCXdpbmRvdy5z
ZXRUaW1lb3V0KG15LkhlbHBlci5hZGRSZXNpemVFdmVudCwgMTAwMCk7DQoNCgkJ
CS8qIENhbGwgcmVmcmVzaCBvbmNlIG9uIHN0YXJ0dXAgdG8gZGlzcGxheSBpbWFn
ZXMgKi8NCgkJCW15LnJlZnJlc2goKTsNCg0KCQkJLyogT25seSBpbml0aWFsaXpl
IG5hdmlnYXRpb24gZWxlbWVudHMgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBp
bWFnZSAqLw0KCQkJaWYobXkubWF4ID4gMSkNCgkJCXsNCgkJCQkvKiBJbml0aWFs
aXplIG1vdXNlLCB0b3VjaCBhbmQga2V5IHN1cHBvcnQgKi8NCgkJCQlteS5Nb3Vz
ZVdoZWVsLmluaXQoKTsNCgkJCQlteS5Nb3VzZURyYWcuaW5pdCgpOw0KCQkJCW15
LlRvdWNoLmluaXQoKTsNCgkJCQlteS5LZXkuaW5pdCgpOw0KCQkJCQ0KCQkJCS8q
IFRvZ2dsZSBzbGlkZXNob3cgKi8NCgkJCQlpZihteS5zbGlkZXNob3cpDQoJCQkJ
ew0KCQkJCQlteS5TbGlkZXNob3cuaW5pdCgpOw0KCQkJCX0NCg0KCQkJCS8qIFRv
Z2dsZSBzY3JvbGxiYXIgdmlzaWJpbGl0eSAqLw0KCQkJCWlmKG15LnNsaWRlcikN
CgkJCQl7DQoJCQkJCW15LnNjcm9sbGJhckRpdi5zdHlsZS52aXNpYmlsaXR5ID0g
J3Zpc2libGUnOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX07DQoNCg0KCS8qIFJldHVy
biBsb2FkZWQgaW1hZ2VzIGluIHBlcmNlbnQsIHNldCBsb2FkaW5nIGJhciB3aWR0
aCBhbmQgbG9hZGluZyB0ZXh0ICovDQoJdGhpcy5sb2FkaW5nU3RhdHVzID0gZnVu
Y3Rpb24oKQ0KCXsNCgkJdmFyIG1heCA9IG15LmltYWdlc0Rpdi5jaGlsZE5vZGVz
Lmxlbmd0aDsNCgkJdmFyIGkgPSAwLCBjb21wbGV0ZWQgPSAwOw0KCQl2YXIgaW1h
Z2UgPSBudWxsOw0KCQlmb3IodmFyIGluZGV4ID0gMDsgaW5kZXggPCBtYXg7IGlu
ZGV4KyspDQoJCXsNCgkJCWltYWdlID0gbXkuaW1hZ2VzRGl2LmNoaWxkTm9kZXNb
aW5kZXhdOw0KCQkJaWYoaW1hZ2UgJiYgaW1hZ2Uubm9kZVR5cGUgPT0gMSAmJiBp
bWFnZS5ub2RlTmFtZSA9PSAnSU1HJykNCgkJCXsNCgkJCQlpZihpbWFnZS5jb21w
bGV0ZSkNCgkJCQl7DQoJCQkJCWNvbXBsZXRlZCsrOw0KCQkJCX0NCgkJCQlpKys7
DQoJCQl9DQoJCX0NCg0KCQl2YXIgZmluaXNoZWQgPSBNYXRoLnJvdW5kKChjb21w
bGV0ZWQvaSkqMTAwKTsNCgkJdmFyIGxvYWRpbmdCYXIgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZChteS5JbWFnZUZsb3dJRCsnX2xvYWRpbmdfYmFyJyk7DQoJCWxv
YWRpbmdCYXIuc3R5bGUud2lkdGggPSBmaW5pc2hlZCsnJSc7DQoNCgkJLyogRG8g
bm90IGNvdW50IHRoZSBjbG9uZWQgaW1hZ2VzICovDQoJCWlmKG15LmNpcmN1bGFy
KQ0KCQl7DQoJCQlpID0gaSAtIChteS5pbWFnZUZvY3VzTWF4KjIpOw0KCQkJY29t
cGxldGVkID0gKGZpbmlzaGVkIDwgMSkgPyAwIDogTWF0aC5yb3VuZCgoaS8xMDAp
KmZpbmlzaGVkKTsNCgkJfQ0KDQoJCXZhciBsb2FkaW5nUCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKG15LkltYWdlRmxvd0lEKydfbG9hZGluZ190eHQnKTsNCgkJ
dmFyIGxvYWRpbmdUeHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnbG9hZGlu
ZyBpbWFnZXMgJytjb21wbGV0ZWQrJy8nK2kpOw0KCQlsb2FkaW5nUC5yZXBsYWNl
Q2hpbGQobG9hZGluZ1R4dCxsb2FkaW5nUC5maXJzdENoaWxkKTsNCgkJcmV0dXJu
IGZpbmlzaGVkOw0KCX07DQoNCg0KCS8qIENhY2hlIEVWRVJZVEhJTkcgdGhhdCBv
bmx5IGNoYW5nZXMgb24gcmVmcmVzaCBvciByZXNpemUgb2YgdGhlIHdpbmRvdyAq
Lw0KCXRoaXMucmVmcmVzaCA9IGZ1bmN0aW9uKCkNCgl7DQoJCS8qIENhY2hlIGds
b2JhbCB2YXJpYWJsZXMgKi8NCgkJdGhpcy5pbWFnZXNEaXZXaWR0aCA9IG15Lmlt
YWdlc0Rpdi5vZmZzZXRXaWR0aCtteS5pbWFnZXNEaXYub2Zmc2V0TGVmdDsNCgkJ
dGhpcy5tYXhIZWlnaHQgPSBNYXRoLnJvdW5kKG15LmltYWdlc0RpdldpZHRoIC8g
bXkuYXNwZWN0UmF0aW8pOw0KCQl0aGlzLm1heEZvY3VzID0gbXkuaW1hZ2VGb2N1
c01heCAqIG15LnhTdGVwOw0KCQl0aGlzLnNpemUgPSBteS5pbWFnZXNEaXZXaWR0
aCAqIDAuNTsNCgkJdGhpcy5zbGlkZXJXaWR0aCA9IG15LnNsaWRlcldpZHRoICog
MC41Ow0KCQl0aGlzLnNjcm9sbGJhcldpZHRoID0gKG15LmltYWdlc0RpdldpZHRo
IC0gKCBNYXRoLnJvdW5kKG15LnNsaWRlcldpZHRoKSAqIDIpKSAqIG15LnNjcm9s
bGJhclA7DQoJCXRoaXMuaW1hZ2VzRGl2SGVpZ2h0ID0gTWF0aC5yb3VuZChteS5t
YXhIZWlnaHQgKiBteS5pbWFnZXNIZWlnaHQpOw0KDQoJCS8qIENoYW5nZSBpbWFn
ZWZsb3cgZGl2IHByb3BlcnRpZXMgKi8NCgkJbXkuSW1hZ2VGbG93RGl2LnN0eWxl
LmhlaWdodCA9IG15Lm1heEhlaWdodCArICdweCc7DQoNCgkJLyogQ2hhbmdlIGlt
YWdlcyBkaXYgcHJvcGVydGllcyAqLw0KCQlteS5pbWFnZXNEaXYuc3R5bGUuaGVp
Z2h0ID0gIG15LmltYWdlc0RpdkhlaWdodCArICdweCc7IA0KCQkNCgkJLyogQ2hh
bmdlIGltYWdlcyBkaXYgcHJvcGVydGllcyAqLw0KCQlteS5uYXZpZ2F0aW9uRGl2
LnN0eWxlLmhlaWdodCA9ICAobXkubWF4SGVpZ2h0IC0gbXkuaW1hZ2VzRGl2SGVp
Z2h0KSArICdweCc7IA0KDQoJCS8qIENoYW5nZSBjYXB0aW9ucyBkaXYgcHJvcGVy
dGllcyAqLw0KCQlteS5jYXB0aW9uRGl2LnN0eWxlLndpZHRoID0gbXkuaW1hZ2Vz
RGl2V2lkdGggKyAncHgnOw0KCQlteS5jYXB0aW9uRGl2LnN0eWxlLnBhZGRpbmdU
b3AgPSBNYXRoLnJvdW5kKG15LmltYWdlc0RpdldpZHRoICogMC4wMikgKyAncHgn
Ow0KDQoJCS8qIENoYW5nZSBzY3JvbGxiYXIgZGl2IHByb3BlcnRpZXMgKi8NCgkJ
bXkuc2Nyb2xsYmFyRGl2LnN0eWxlLndpZHRoID0gbXkuc2Nyb2xsYmFyV2lkdGgg
KyAncHgnOw0KCQlteS5zY3JvbGxiYXJEaXYuc3R5bGUubWFyZ2luVG9wID0gTWF0
aC5yb3VuZChteS5pbWFnZXNEaXZXaWR0aCAqIDAuMDIpICsgJ3B4JzsNCgkJbXku
c2Nyb2xsYmFyRGl2LnN0eWxlLm1hcmdpbkxlZnQgPSBNYXRoLnJvdW5kKG15LnNs
aWRlcldpZHRoICsgKChteS5pbWFnZXNEaXZXaWR0aCAtIG15LnNjcm9sbGJhcldp
ZHRoKS8yKSkgKyAncHgnOw0KDQoJCS8qIFNldCBzbGlkZXIgYXR0cmlidXRlcyAq
Lw0KCQlteS5zbGlkZXJEaXYuc3R5bGUuY3Vyc29yID0gbXkuc2xpZGVyQ3Vyc29y
Ow0KCQlteS5zbGlkZXJEaXYub25tb3VzZWRvd24gPSBmdW5jdGlvbiAoKSB7IG15
Lk1vdXNlRHJhZy5zdGFydCh0aGlzKTsgcmV0dXJuIGZhbHNlO307DQoNCgkJaWYo
bXkuYnV0dG9ucykNCgkJew0KCQkJbXkuYnV0dG9uUHJldmlvdXNEaXYub25jbGlj
ayA9IGZ1bmN0aW9uICgpIHsgbXkuTW91c2VXaGVlbC5oYW5kbGUoMSk7IH07DQoJ
CQlteS5idXR0b25OZXh0RGl2Lm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7IG15Lk1v
dXNlV2hlZWwuaGFuZGxlKC0xKTsgfTsNCgkJfQ0KDQoJCS8qIFNldCB0aGUgcmVm
bGVjdGlvbiBtdWx0aXBsaWNhdG9yICovDQoJCXZhciBtdWx0aSA9IChteS5yZWZs
ZWN0aW9ucyA9PT0gdHJ1ZSkgPyBteS5yZWZsZWN0aW9uUCArIDEgOiAxOw0KDQoJ
CS8qIFNldCBpbWFnZSBhdHRyaWJ1dGVzICovDQoJCXZhciBtYXggPSBteS5pbWFn
ZXNEaXYuY2hpbGROb2Rlcy5sZW5ndGg7DQoJCXZhciBpID0gMDsNCgkJdmFyIGlt
YWdlID0gbnVsbDsNCgkJZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IG1heDsg
aW5kZXgrKykNCgkJew0KCQkJaW1hZ2UgPSBteS5pbWFnZXNEaXYuY2hpbGROb2Rl
c1tpbmRleF07DQoJCQlpZihpbWFnZSAhPT0gbnVsbCAmJiBpbWFnZS5ub2RlVHlw
ZSA9PSAxICYmIGltYWdlLm5vZGVOYW1lID09ICdJTUcnKQ0KCQkJew0KCQkJCXRo
aXMuaW5kZXhBcnJheVtpXSA9IGluZGV4Ow0KDQoJCQkJLyogU2V0IGltYWdlIGF0
dHJpYnV0ZXMgdG8gc3RvcmUgdmFsdWVzICovDQoJCQkJaW1hZ2UudXJsID0gaW1h
Z2UuZ2V0QXR0cmlidXRlKCdsb25nZGVzYycpOw0KCQkJCWltYWdlLnhQb3NpdGlv
biA9ICgtaSAqIG15LnhTdGVwKTsNCgkJCQlpbWFnZS5pID0gaTsNCg0KCQkJCS8q
IEFkZCB3aWR0aCBhbmQgaGVpZ2h0IGFzIGF0dHJpYnV0ZXMgb25seSBvbmNlICov
DQoJCQkJaWYobXkuZmlyc3RSZWZyZXNoKQ0KCQkJCXsNCgkJCQkJaWYoaW1hZ2Uu
Z2V0QXR0cmlidXRlKCd3aWR0aCcpICE9PSBudWxsICYmIGltYWdlLmdldEF0dHJp
YnV0ZSgnaGVpZ2h0JykgIT09IG51bGwpDQoJCQkJCXsNCgkJCQkJCWltYWdlLncg
PSBpbWFnZS5nZXRBdHRyaWJ1dGUoJ3dpZHRoJyk7DQoJCQkJCQlpbWFnZS5oID0g
aW1hZ2UuZ2V0QXR0cmlidXRlKCdoZWlnaHQnKSAqIG11bHRpOw0KCQkJCQl9DQoJ
CQkJCWVsc2V7DQoJCQkJCQlpbWFnZS53ID0gaW1hZ2Uud2lkdGg7DQoJCQkJCQlp
bWFnZS5oID0gaW1hZ2UuaGVpZ2h0Ow0KCQkJCQl9DQoJCQkJfQ0KDQoJCQkJLyog
Q2hlY2sgc291cmNlIGltYWdlIGZvcm1hdC4gR2V0IGltYWdlIGhlaWdodCBtaW51
cyByZWZsZWN0aW9uIGhlaWdodCEgKi8NCgkJCQlpZigoaW1hZ2UudykgPiAoaW1h
Z2UuaCAvIChteS5yZWZsZWN0aW9uUCArIDEpKSkNCgkJCQl7DQoJCQkJCS8qIExh
bmRzY2FwZSBmb3JtYXQgKi8NCgkJCQkJaW1hZ2UucGMgPSBteS5wZXJjZW50TGFu
ZHNjYXBlOw0KCQkJCQlpbWFnZS5wY01lbSA9IG15LnBlcmNlbnRMYW5kc2NhcGU7
DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCS8qIFBvcnRyYWl0IGFuZCBz
cXVhcmUgZm9ybWF0ICovDQoJCQkJCWltYWdlLnBjID0gbXkucGVyY2VudE90aGVy
Ow0KCQkJCQlpbWFnZS5wY01lbSA9IG15LnBlcmNlbnRPdGhlcjsNCgkJCQl9DQoJ
CQkJDQoJCQkJLyogQ2hhbmdlIGltYWdlIHBvc2l0aW9uaW5nICovDQoJCQkJaWYo
bXkuaW1hZ2VTY2FsaW5nID09PSBmYWxzZSkNCgkJCQl7DQoJCQkJCWltYWdlLnN0
eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJzsNCgkJCQkJaW1hZ2Uuc3R5bGUuZGlz
cGxheSA9ICdpbmxpbmUnOw0KCQkJCX0NCg0KCQkJCS8qIFNldCBpbWFnZSBjdXJz
b3IgdHlwZSAqLw0KCQkJCWltYWdlLnN0eWxlLmN1cnNvciA9IG15LmltYWdlQ3Vy
c29yOw0KCQkJCWkrKzsNCgkJCX0NCgkJfQ0KCQl0aGlzLm1heCA9IG15LmluZGV4
QXJyYXkubGVuZ3RoOw0KDQoJCS8qIE92ZXJyaWRlIGR5bmFtaWMgc2l6ZXMgYmFz
ZWQgb24gdGhlIGZpcnN0IGltYWdlICovDQoJCWlmKG15LmltYWdlU2NhbGluZyA9
PT0gZmFsc2UpDQoJCXsNCgkJCWltYWdlID0gbXkuaW1hZ2VzRGl2LmNoaWxkTm9k
ZXNbbXkuaW5kZXhBcnJheVswXV07DQoNCgkJCS8qIFNldCBsZWZ0IHBhZGRpbmcg
Zm9yIHRoZSBmaXJzdCBpbWFnZSAqLw0KCQkJdGhpcy50b3RhbEltYWdlc1dpZHRo
ID0gaW1hZ2UudyAqIG15Lm1heDsNCgkJCWltYWdlLnN0eWxlLnBhZGRpbmdMZWZ0
ID0gKG15LmltYWdlc0RpdldpZHRoLzIpICsgKGltYWdlLncvMikgKyAncHgnOw0K
DQoJCQkvKiBPdmVycmlkZSBpbWFnZXMgYW5kIG5hdmlnYXRpb24gZGl2IGhlaWdo
dCAqLw0KCQkJbXkuaW1hZ2VzRGl2LnN0eWxlLmhlaWdodCA9ICBpbWFnZS5oICsg
J3B4JzsNCgkJCW15Lm5hdmlnYXRpb25EaXYuc3R5bGUuaGVpZ2h0ID0gIChteS5t
YXhIZWlnaHQgLSBpbWFnZS5oKSArICdweCc7IA0KCQl9DQoNCgkJLyogSGFuZGxl
IHN0YXJ0SUQgb24gdGhlIGZpcnN0IHJlZnJlc2ggKi8NCgkJaWYobXkuZmlyc3RS
ZWZyZXNoKQ0KCQl7DQoJCQkvKiBSZXNldCB2YXJpYWJsZSAqLw0KCQkJbXkuZmly
c3RSZWZyZXNoID0gZmFsc2U7DQoNCgkJCS8qIFNldCBpbWFnZUlEIHRvIHRoZSBz
dGFydElEICovDQoJCQlteS5pbWFnZUlEID0gbXkuc3RhcnRJRC0xOw0KCQkJaWYg
KG15LmltYWdlSUQgPCAwICkNCgkJCXsNCgkJCQlteS5pbWFnZUlEID0gMDsNCgkJ
CX0NCg0KCQkJLyogTWFwIGltYWdlIGlkIHJhbmdlIGluIGNpY3VsYXIgbW9kZSAo
aWdub3JlIHRoZSBjbG9uZWQgaW1hZ2VzKSAqLw0KCQkJaWYobXkuY2lyY3VsYXIp
DQoJCQl7CQ0KCQkJCW15LmltYWdlSUQgPSBteS5pbWFnZUlEICsgbXkuaW1hZ2VG
b2N1c01heDsNCgkJCX0NCg0KCQkJLyogTWFrZSBzdXJlLCB0aGF0IHRoZSBpZCBp
cyBzbWFsbGVyIHRoYW4gdGhlIGltYWdlIGNvdW50ICAqLw0KCQkJbWF4SWQgPSAo
bXkuY2lyY3VsYXIpID8gIChteS5tYXgtKG15LmltYWdlRm9jdXNNYXgpKS0xIDog
bXkubWF4LTE7DQoJCQlpZiAobXkuaW1hZ2VJRCA+IG1heElkKQ0KCQkJew0KCQkJ
CW15LmltYWdlSUQgPSBtYXhJZDsNCgkJCX0NCg0KCQkJLyogVG9nZ2xlIGdsaWRl
IGFuaW1hdGlvbiB0byBzdGFydCBJRCAqLw0KCQkJaWYobXkuZ2xpZGVUb1N0YXJ0
SUQgPT09IGZhbHNlKQ0KCQkJew0KCQkJCW15Lm1vdmVUbygtbXkuaW1hZ2VJRCAq
IG15LnhTdGVwKTsNCgkJCX0NCg0KCQkJLyogQW5pbWF0ZSBpbWFnZXMgbW92aW5n
IGluIGZyb20gdGhlIHJpZ2h0ICovDQoJCQlpZihteS5zdGFydEFuaW1hdGlvbikN
CgkJCXsNCgkJCQlteS5tb3ZlVG8oNTAwMCk7DQoJCQl9DQoJCX0NCg0KCQkvKiBP
bmx5IGFuaW1hdGUgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBpbWFnZSAqLw0K
CQlpZihteS5tYXggPiAxKQ0KCQl7DQoJCQlteS5nbGlkZVRvKG15LmltYWdlSUQp
Ow0KCQl9DQoNCgkJLyogRGlzcGxheSBpbWFnZXMgaW4gY3VycmVudCBvcmRlciAq
Lw0KCQlteS5tb3ZlVG8obXkuY3VycmVudCk7DQoJfTsNCg0KDQoJLyogTWFpbiBh
bmltYXRpb24gZnVuY3Rpb24gKi8NCgl0aGlzLm1vdmVUbyA9IGZ1bmN0aW9uKHgp
DQoJew0KCQl0aGlzLmN1cnJlbnQgPSB4Ow0KCQl0aGlzLnpJbmRleCA9IG15Lm1h
eDsNCg0KCQkvKiBNYWluIGxvb3AgKi8NCgkJZm9yICh2YXIgaW5kZXggPSAwOyBp
bmRleCA8IG15Lm1heDsgaW5kZXgrKykNCgkJew0KCQkJdmFyIGltYWdlID0gbXku
aW1hZ2VzRGl2LmNoaWxkTm9kZXNbbXkuaW5kZXhBcnJheVtpbmRleF1dOw0KCQkJ
dmFyIGN1cnJlbnRJbWFnZSA9IGluZGV4ICogLW15LnhTdGVwOw0KDQoJCQkvKiBF
bmFibGVkIGltYWdlIHNjYWxpbmcgKi8NCgkJCWlmKG15LmltYWdlU2NhbGluZykN
CgkJCXsNCgkJCQkvKiBEb24ndCBkaXNwbGF5IGltYWdlcyB0aGF0IGFyZSBub3Qg
Y29uZl9mb2N1c3NlZCAqLw0KCQkJCWlmICgoY3VycmVudEltYWdlICsgbXkubWF4
Rm9jdXMpIDwgbXkubWVtVGFyZ2V0IHx8IChjdXJyZW50SW1hZ2UgLSBteS5tYXhG
b2N1cykgPiBteS5tZW1UYXJnZXQpDQoJCQkJew0KCQkJCQlpbWFnZS5zdHlsZS52
aXNpYmlsaXR5ID0gJ2hpZGRlbic7DQoJCQkJCWltYWdlLnN0eWxlLmRpc3BsYXkg
PSAnbm9uZSc7DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCXZhciB6ID0g
KE1hdGguc3FydCgxMDAwMCArIHggKiB4KSArIDEwMCkgKiBteS5pbWFnZXNNOw0K
CQkJCQl2YXIgeHMgPSB4IC8geiAqIG15LnNpemUgKyBteS5zaXplOw0KDQoJCQkJ
CS8qIFN0aWxsIGhpZGUgaW1hZ2VzIHVudGlsIHRoZXkgYXJlIHByb2Nlc3NlZCwg
YnV0IHNldCBkaXNwbGF5IHN0eWxlIHRvIGJsb2NrICovDQoJCQkJCWltYWdlLnN0
eWxlLmRpc3BsYXkgPSAnYmxvY2snOw0KDQoJCQkJCS8qIFByb2Nlc3MgbmV3IGlt
YWdlIGhlaWdodCBhbmQgd2lkdGggKi8NCgkJCQkJdmFyIG5ld0ltYWdlSCA9IChp
bWFnZS5oIC8gaW1hZ2UudyAqIGltYWdlLnBjKSAvIHogKiBteS5zaXplOw0KCQkJ
CQl2YXIgbmV3SW1hZ2VXID0gMDsNCgkJCQkJc3dpdGNoIChuZXdJbWFnZUggPiBt
eS5tYXhIZWlnaHQpDQoJCQkJCXsNCgkJCQkJCWNhc2UgZmFsc2U6DQoJCQkJCQkJ
bmV3SW1hZ2VXID0gaW1hZ2UucGMgLyB6ICogbXkuc2l6ZTsNCgkJCQkJCQlicmVh
azsNCg0KCQkJCQkJZGVmYXVsdDoNCgkJCQkJCQluZXdJbWFnZUggPSBteS5tYXhI
ZWlnaHQ7DQoJCQkJCQkJbmV3SW1hZ2VXID0gaW1hZ2UudyAqIG5ld0ltYWdlSCAv
IGltYWdlLmg7DQoJCQkJCQkJYnJlYWs7DQoJCQkJCX0NCg0KCQkJCQl2YXIgbmV3
SW1hZ2VUb3AgPSAobXkuaW1hZ2VzRGl2SGVpZ2h0IC0gbmV3SW1hZ2VIKSArICgo
bmV3SW1hZ2VIIC8gKG15LnJlZmxlY3Rpb25QICsgMSkpICogbXkucmVmbGVjdGlv
blApOw0KDQoJCQkJCS8qIFNldCBuZXcgaW1hZ2UgcHJvcGVydGllcyAqLw0KCQkJ
CQlpbWFnZS5zdHlsZS5sZWZ0ID0geHMgLSAoaW1hZ2UucGMgLyAyKSAvIHogKiBt
eS5zaXplICsgJ3B4JzsNCgkJCQkJaWYobmV3SW1hZ2VXICYmIG5ld0ltYWdlSCkN
CgkJCQkJew0KCQkJCQkJaW1hZ2Uuc3R5bGUuaGVpZ2h0ID0gbmV3SW1hZ2VIICsg
J3B4JzsNCgkJCQkJCWltYWdlLnN0eWxlLndpZHRoID0gbmV3SW1hZ2VXICsgJ3B4
JzsNCgkJCQkJCWltYWdlLnN0eWxlLnRvcCA9IG5ld0ltYWdlVG9wICsgJ3B4JzsN
CgkJCQkJfQ0KCQkJCQlpbWFnZS5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUn
Ow0KDQoJCQkJCS8qIFNldCBpbWFnZSBsYXllciB0aHJvdWdoIHpJbmRleCAqLw0K
CQkJCQlzd2l0Y2ggKCB4IDwgMCApDQoJCQkJCXsNCgkJCQkJCWNhc2UgdHJ1ZToN
CgkJCQkJCQl0aGlzLnpJbmRleCsrOw0KCQkJCQkJCWJyZWFrOw0KDQoJCQkJCQlk
ZWZhdWx0Og0KCQkJCQkJCXRoaXMuekluZGV4ID0gbXkuekluZGV4IC0gMTsNCgkJ
CQkJCQlicmVhazsNCgkJCQkJfQ0KDQoJCQkJCS8qIENoYW5nZSB6SW5kZXggYW5k
IG9uY2xpY2sgZnVuY3Rpb24gb2YgdGhlIGZvY3Vzc2VkIGltYWdlICovDQoJCQkJ
CXN3aXRjaCAoIGltYWdlLmkgPT0gbXkuaW1hZ2VJRCApDQoJCQkJCXsNCgkJCQkJ
CWNhc2UgZmFsc2U6DQoJCQkJCQkJaW1hZ2Uub25jbGljayA9IGZ1bmN0aW9uKCkg
eyBteS5nbGlkZVRvKHRoaXMuaSk7fTsNCgkJCQkJCQlicmVhazsNCg0KCQkJCQkJ
ZGVmYXVsdDoNCgkJCQkJCQl0aGlzLnpJbmRleCA9IG15LnpJbmRleCArIDE7DQoJ
CQkJCQkJaWYoaW1hZ2UudXJsICE9PSAnJykNCgkJCQkJCQl7DQoJCQkJCQkJCWlt
YWdlLm9uY2xpY2sgPSBteS5vbkNsaWNrOw0KCQkJCQkJCX0NCgkJCQkJCQlicmVh
azsNCgkJCQkJfQ0KCQkJCQlpbWFnZS5zdHlsZS56SW5kZXggPSBteS56SW5kZXg7
DQoJCQkJfQ0KCQkJfQ0KDQoJCQkvKiBEaXNhYmxlZCBpbWFnZSBzY2FsaW5nICov
DQoJCQllbHNlDQoJCQl7DQoJCQkJaWYgKChjdXJyZW50SW1hZ2UgKyBteS5tYXhG
b2N1cykgPCBteS5tZW1UYXJnZXQgfHwgKGN1cnJlbnRJbWFnZSAtIG15Lm1heEZv
Y3VzKSA+IG15Lm1lbVRhcmdldCkNCgkJCQl7DQoJCQkJCWltYWdlLnN0eWxlLnZp
c2liaWxpdHkgPSAnaGlkZGVuJzsNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJ
CQkJaW1hZ2Uuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJzsNCg0KCQkJCQkv
KiBDaGFuZ2Ugb25jbGljayBmdW5jdGlvbiBvZiB0aGUgZm9jdXNzZWQgaW1hZ2Ug
Ki8NCgkJCQkJc3dpdGNoICggaW1hZ2UuaSA9PSBteS5pbWFnZUlEICkNCgkJCQkJ
ew0KCQkJCQkJY2FzZSBmYWxzZToNCgkJCQkJCQlpbWFnZS5vbmNsaWNrID0gZnVu
Y3Rpb24oKSB7IG15LmdsaWRlVG8odGhpcy5pKTt9Ow0KCQkJCQkJCWJyZWFrOw0K
DQoJCQkJCQlkZWZhdWx0Og0KCQkJCQkJCWlmKGltYWdlLnVybCAhPT0gJycpDQoJ
CQkJCQkJew0KCQkJCQkJCQlpbWFnZS5vbmNsaWNrID0gbXkub25DbGljazsNCgkJ
CQkJCQl9DQoJCQkJCQkJYnJlYWs7DQoJCQkJCX0NCgkJCQl9CQ0KCQkJCW15Lmlt
YWdlc0Rpdi5zdHlsZS5tYXJnaW5MZWZ0ID0gKHggLSBteS50b3RhbEltYWdlc1dp
ZHRoKSArICdweCc7DQoJCQl9DQoNCgkJCXggKz0gbXkueFN0ZXA7DQoJCX0NCgl9
Ow0KDQoNCgkvKiBJbml0aWFsaXplcyBpbWFnZSBnbGlkaW5nIGFuaW1hdGlvbiAq
Lw0KCXRoaXMuZ2xpZGVUbyA9IGZ1bmN0aW9uKGltYWdlSUQpDQoJew0KCQkvKiBD
aGVjayBmb3IganVtcHBvaW50cyAqLw0KCQl2YXIganVtcFRhcmdldCwgY2xvbmVk
SW1hZ2VJRDsNCgkJaWYobXkuY2lyY3VsYXIpDQoJCXsNCgkJCS8qIFRyaWdnZXIg
bGVmdCBqdW1wcG9pbnQgKi8NCgkJCWlmKGltYWdlSUQrMSA9PT0gbXkuaW1hZ2VG
b2N1c01heCkNCgkJCXsNCgkJCQkvKiBTZXQganVtcCB0YXJnZXQgdG8gdGhlIHNh
bWUgY2xvbmVkIGltYWdlIG9uIHRoZSByaWdodCAqLw0KCQkJCWNsb25lZEltYWdl
SUQgPSBteS5tYXggLSBteS5pbWFnZUZvY3VzTWF4Ow0KCQkJCWp1bXBUYXJnZXQg
PSAtY2xvbmVkSW1hZ2VJRCAqIG15LnhTdGVwOw0KDQoJCQkJLyogU2V0IHRoZSBp
bWFnZUlEIHRvIHRoZSBsYXN0IGltYWdlICovDQoJCQkJaW1hZ2VJRCA9IGNsb25l
ZEltYWdlSUQtMSA7DQoJCQl9DQoNCgkJCS8qIFRyaWdnZXIgcmlnaHQganVtcHBv
aW50ICovDQoJCQlpZihpbWFnZUlEID09PSAobXkubWF4IC0gbXkuaW1hZ2VGb2N1
c01heCkpDQoJCQl7DQoJCQkJLyogU2V0IGp1bXAgdGFyZ2V0IHRvIHRoZSBzYW1l
IGNsb25lZCBpbWFnZSBvbiB0aGUgbGVmdCAqLw0KCQkJCWNsb25lZEltYWdlSUQg
PSBteS5pbWFnZUZvY3VzTWF4LTE7DQoJCQkJanVtcFRhcmdldCA9IC1jbG9uZWRJ
bWFnZUlEICogbXkueFN0ZXA7DQoJCQkJDQoJCQkJLyogU2V0IHRoZSBpbWFnZUlE
IHRvIHRoZSBmaXJzdCBpbWFnZSAqLw0KCQkJCWltYWdlSUQgPSBjbG9uZWRJbWFn
ZUlEKzE7DQoJCQl9DQoJCX0NCg0KCQkvKiBDYWxjdWxhdGUgbmV3IGltYWdlIHBv
c2l0aW9uIHRhcmdldCAqLw0KCQl2YXIgeCA9IC1pbWFnZUlEICogbXkueFN0ZXA7
DQoJCXRoaXMudGFyZ2V0ID0geDsNCgkJdGhpcy5tZW1UYXJnZXQgPSB4Ow0KCQl0
aGlzLmltYWdlSUQgPSBpbWFnZUlEOw0KDQoJCS8qIERpc3BsYXkgbmV3IGNhcHRp
b24gKi8NCgkJdmFyIGNhcHRpb24gPSBteS5pbWFnZXNEaXYuY2hpbGROb2Rlc1tp
bWFnZUlEXS5nZXRBdHRyaWJ1dGUoJ2FsdCcpOw0KCQlpZiAoY2FwdGlvbiA9PT0g
JycgfHwgbXkuY2FwdGlvbnMgPT09IGZhbHNlKQ0KCQl7DQoJCQljYXB0aW9uID0g
JyZuYnNwOyc7DQoJCX0NCgkJbXkuY2FwdGlvbkRpdi5pbm5lckhUTUwgPSBjYXB0
aW9uOw0KDQoJCS8qIFNldCBzY3JvbGxiYXIgc2xpZGVyIHRvIG5ldyBwb3NpdGlv
biAqLw0KCQlpZiAobXkuTW91c2VEcmFnLmJ1c3kgPT09IGZhbHNlKQ0KCQl7DQoJ
CQlpZihteS5jaXJjdWxhcikNCgkJCXsNCgkJCQl0aGlzLm5ld1NsaWRlclggPSAo
KGltYWdlSUQtbXkuaW1hZ2VGb2N1c01heCkgKiBteS5zY3JvbGxiYXJXaWR0aCkg
LyAobXkubWF4LShteS5pbWFnZUZvY3VzTWF4KjIpLTEpIC0gbXkuTW91c2VEcmFn
Lm5ld1g7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJdGhpcy5uZXdTbGlkZXJY
ID0gKGltYWdlSUQgKiBteS5zY3JvbGxiYXJXaWR0aCkgLyAobXkubWF4LTEpIC0g
bXkuTW91c2VEcmFnLm5ld1g7DQoJCQl9DQoJCQlteS5zbGlkZXJEaXYuc3R5bGUu
bWFyZ2luTGVmdCA9IChteS5uZXdTbGlkZXJYIC0gbXkuc2xpZGVyV2lkdGgpICsg
J3B4JzsNCgkJfQ0KDQoJCS8qIE9ubHkgcHJvY2VzcyBpZiBvcGFjaXR5IG9yIGEg
bXVsdGlwbGljYXRvciBmb3IgdGhlIGZvY3Vzc2VkIGltYWdlIGhhcyBiZWVuIHNl
dCAqLw0KCQlpZihteS5vcGFjaXR5ID09PSB0cnVlIHx8IG15LmltYWdlRm9jdXNN
ICE9PSBteS5kZWZhdWx0cy5pbWFnZUZvY3VzTSkNCgkJew0KCQkJLyogU2V0IG9w
YWNpdHkgZm9yIGNlbnRlcmVkIGltYWdlICovDQoJCQlteS5IZWxwZXIuc2V0T3Bh
Y2l0eShteS5pbWFnZXNEaXYuY2hpbGROb2Rlc1tpbWFnZUlEXSwgbXkub3BhY2l0
eUFycmF5WzBdKTsNCgkJCW15LmltYWdlc0Rpdi5jaGlsZE5vZGVzW2ltYWdlSURd
LnBjID0gbXkuaW1hZ2VzRGl2LmNoaWxkTm9kZXNbaW1hZ2VJRF0ucGMgKiBteS5p
bWFnZUZvY3VzTTsNCg0KCQkJLyogU2V0IG9wYWNpdHkgZm9yIHRoZSBvdGhlciBp
bWFnZXMgdGhhdCBhcmUgZGlzcGxheWVkICovDQoJCQl2YXIgb3BhY2l0eVZhbHVl
ID0gMDsNCgkJCXZhciByaWdodElEID0gMDsNCgkJCXZhciBsZWZ0SUQgPSAwOw0K
CQkJdmFyIGxhc3QgPSBteS5vcGFjaXR5QXJyYXkubGVuZ3RoOw0KDQoJCQlmb3Ig
KHZhciBpID0gMTsgaSA8IChteS5pbWFnZUZvY3VzTWF4KzEpOyBpKyspDQoJCQl7
DQoJCQkJaWYoKGkrMSkgPiBsYXN0KQ0KCQkJCXsNCgkJCQkJb3BhY2l0eVZhbHVl
ID0gbXkub3BhY2l0eUFycmF5W2xhc3QtMV07DQoJCQkJfQ0KCQkJCWVsc2UNCgkJ
CQl7DQoJCQkJCW9wYWNpdHlWYWx1ZSA9IG15Lm9wYWNpdHlBcnJheVtpXTsNCgkJ
CQl9DQoNCgkJCQlyaWdodElEID0gaW1hZ2VJRCArIGk7DQoJCQkJbGVmdElEID0g
aW1hZ2VJRCAtIGk7DQoNCgkJCQlpZiAocmlnaHRJRCA8IG15Lm1heCkNCgkJCQl7
DQoJCQkJCW15LkhlbHBlci5zZXRPcGFjaXR5KG15LmltYWdlc0Rpdi5jaGlsZE5v
ZGVzW3JpZ2h0SURdLCBvcGFjaXR5VmFsdWUpOw0KCQkJCQlteS5pbWFnZXNEaXYu
Y2hpbGROb2Rlc1tyaWdodElEXS5wYyA9IG15LmltYWdlc0Rpdi5jaGlsZE5vZGVz
W3JpZ2h0SURdLnBjTWVtOw0KCQkJCX0NCgkJCQlpZiAobGVmdElEID49IDApDQoJ
CQkJew0KCQkJCQlteS5IZWxwZXIuc2V0T3BhY2l0eShteS5pbWFnZXNEaXYuY2hp
bGROb2Rlc1tsZWZ0SURdLCBvcGFjaXR5VmFsdWUpOw0KCQkJCQlteS5pbWFnZXNE
aXYuY2hpbGROb2Rlc1tsZWZ0SURdLnBjID0gbXkuaW1hZ2VzRGl2LmNoaWxkTm9k
ZXNbbGVmdElEXS5wY01lbTsNCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQkvKiBNb3Zl
IHRoZSBpbWFnZXMgdG8gdGhlIGp1bXAgdGFyZ2V0ICovDQoJCWlmKGp1bXBUYXJn
ZXQpDQoJCXsNCgkJCW15Lm1vdmVUbyhqdW1wVGFyZ2V0KTsNCgkJfQ0KDQoJCS8q
IEFuaW1hdGUgZ2xpZGluZyB0byBuZXcgeCBwb3NpdGlvbiAqLw0KCQlpZiAobXku
YnVzeSA9PT0gZmFsc2UpDQoJCXsNCgkJCW15LmJ1c3kgPSB0cnVlOw0KCQkJbXku
YW5pbWF0ZSgpOw0KCQl9DQoJfTsNCg0KDQoJLyogQW5pbWF0ZXMgaW1hZ2UgZ2xp
ZGluZyAqLw0KCXRoaXMuYW5pbWF0ZSA9IGZ1bmN0aW9uKCkNCgl7DQoJCXN3aXRj
aCAobXkudGFyZ2V0IDwgbXkuY3VycmVudC0xIHx8IG15LnRhcmdldCA+IG15LmN1
cnJlbnQrMSkNCgkJew0KCQkJY2FzZSB0cnVlOg0KCQkJCW15Lm1vdmVUbyhteS5j
dXJyZW50ICsgKG15LnRhcmdldC1teS5jdXJyZW50KS8zKTsNCgkJCQl3aW5kb3cu
c2V0VGltZW91dChteS5hbmltYXRlLCBteS5hbmltYXRpb25TcGVlZCk7DQoJCQkJ
bXkuYnVzeSA9IHRydWU7DQoJCQkJYnJlYWs7DQoNCgkJCWRlZmF1bHQ6DQoJCQkJ
bXkuYnVzeSA9IGZhbHNlOw0KCQkJCWJyZWFrOw0KCQl9DQoJfTsNCg0KDQoJLyog
VXNlZCBieSB1c2VyIGV2ZW50cyB0byBjYWxsIHRoZSBnbGlkZVRvIGZ1bmN0aW9u
ICovDQoJdGhpcy5nbGlkZU9uRXZlbnQgPSBmdW5jdGlvbihpbWFnZUlEKQ0KCXsN
CgkJLyogSW50ZXJydXB0IHNsaWRlc2hvdyBvbiBtb3VzZSB3aGVlbCwga2V5cHJl
c3MsIHRvdWNoIGFuZCBtb3VzZSBkcmFnICovDQoJCWlmKG15LnNsaWRlc2hvdykN
CgkJew0KCQkJbXkuU2xpZGVzaG93LmludGVycnVwdCgpOw0KCQl9DQoJCQ0KCQkv
KiBHbGlkZSB0byBuZXcgaW1hZ2VJRCAqLw0KCQlteS5nbGlkZVRvKGltYWdlSUQp
Ow0KCX07DQoNCg0KCS8qIFNsaWRlc2hvdyBmdW5jdGlvbiAqLw0KCXRoaXMuU2xp
ZGVzaG93ID0NCgl7DQoJCWRpcmVjdGlvbjogMSwNCgkJDQoJCWluaXQ6IGZ1bmN0
aW9uKCkNCgkJew0KCQkJLyogQ2FsbCBzdGFydCgpIGlmIGF1dG9wbGF5IGlzIGVu
YWJsZWQsIHN0b3AoKSBpZiBpdCBpcyBkaXNhYmxlZCAqLw0KCQkJKG15LnNsaWRl
c2hvd0F1dG9wbGF5KSA/IG15LlNsaWRlc2hvdy5zdGFydCgpIDogbXkuU2xpZGVz
aG93LnN0b3AoKTsJDQoJCX0sDQoNCgkJaW50ZXJydXB0OiBmdW5jdGlvbigpDQoJ
CXsJDQoJCQkvKiBSZW1vdmUgaW50ZXJydXB0IGV2ZW50ICovDQoJCQlteS5IZWxw
ZXIucmVtb3ZlRXZlbnQobXkuSW1hZ2VGbG93RGl2LCdjbGljaycsbXkuU2xpZGVz
aG93LmludGVycnVwdCk7DQoJCQkNCgkJCS8qIEludGVycnVwdCB0aGUgc2xpZGVz
aG93ICovDQoJCQlteS5TbGlkZXNob3cuc3RvcCgpOw0KCQl9LA0KDQoJCWFkZElu
dGVycnVwdEV2ZW50OiBmdW5jdGlvbigpDQoJCXsNCgkJCS8qIEEgY2xpY2sgYW55
d2hlcmUgaW5zaWRlIHRoZSBJbWFnZUZsb3cgZGl2IGludGVycnVwdHMgdGhlIHNs
aWRlc2hvdyAqLw0KCQkJbXkuSGVscGVyLmFkZEV2ZW50KG15LkltYWdlRmxvd0Rp
diwnY2xpY2snLG15LlNsaWRlc2hvdy5pbnRlcnJ1cHQpOw0KCQl9LA0KDQoJCXN0
YXJ0OiBmdW5jdGlvbigpDQoJCXsNCgkJCS8qIFNldCBidXR0b24gc3R5bGUgdG8g
cGF1c2UgKi8NCgkJCW15LkhlbHBlci5zZXRDbGFzc05hbWUobXkuYnV0dG9uU2xp
ZGVzaG93LCAnc2xpZGVzaG93IHBhdXNlJyk7DQoNCgkJCS8qIFNldCBvbmNsaWNr
IGJlaGF2aW91ciB0byBzdG9wICovDQoJCQlteS5idXR0b25TbGlkZXNob3cub25j
bGljayA9IGZ1bmN0aW9uICgpIHsgbXkuU2xpZGVzaG93LnN0b3AoKTsgfTsNCg0K
CQkJLyogU2V0IHNsaWRlIGludGVydmFsICovDQoJCQlteS5TbGlkZXNob3cuYWN0
aW9uID0gd2luZG93LnNldEludGVydmFsKG15LlNsaWRlc2hvdy5zbGlkZSwgbXku
c2xpZGVzaG93U3BlZWQpOw0KDQoJCQkvKiBBbGxvdyB0aGUgdXNlciB0byBhbHdh
eXMgaW50ZXJydXB0IHRoZSBzbGlkZXNob3cgKi8NCgkJCXdpbmRvdy5zZXRUaW1l
b3V0KG15LlNsaWRlc2hvdy5hZGRJbnRlcnJ1cHRFdmVudCwgMTAwKTsNCgkJfSwN
Cg0KCQlzdG9wOiBmdW5jdGlvbigpDQoJCXsNCgkJCS8qIFNldCBidXR0b24gc3R5
bGUgdG8gcGxheSAqLw0KCQkJbXkuSGVscGVyLnNldENsYXNzTmFtZShteS5idXR0
b25TbGlkZXNob3csICdzbGlkZXNob3cgcGxheScpOw0KCQkJDQoJCQkvKiBTZXQg
b25jbGljayBiZWhhdmlvdXIgdG8gc3RhcnQgKi8NCgkJCW15LmJ1dHRvblNsaWRl
c2hvdy5vbmNsaWNrID0gZnVuY3Rpb24gKCkgeyBteS5TbGlkZXNob3cuc3RhcnQo
KTsgfTsNCgkJCQ0KCQkJLyogQ2xlYXIgc2xpZGUgaW50ZXJ2YWwgKi8NCgkJCXdp
bmRvdy5jbGVhckludGVydmFsKG15LlNsaWRlc2hvdy5hY3Rpb24pOw0KCQl9LA0K
DQoJCXNsaWRlOiBmdW5jdGlvbigpDQoJCXsNCgkJCXZhciBuZXdJbWFnZUlEID0g
bXkuaW1hZ2VJRCArIG15LlNsaWRlc2hvdy5kaXJlY3Rpb247DQoJCQl2YXIgcmV2
ZXJzZURpcmVjdGlvbiA9IGZhbHNlOw0KCQkJDQoJCQkvKiBSZXZlcnNlIGRpcmVj
dGlvbiBhdCB0aGUgbGFzdCBpbWFnZSBvbiB0aGUgcmlnaHQgKi8NCgkJCWlmKG5l
d0ltYWdlSUQgPT09IG15Lm1heCkNCgkJCXsNCgkJCQlteS5TbGlkZXNob3cuZGly
ZWN0aW9uID0gLTE7DQoJCQkJcmV2ZXJzZURpcmVjdGlvbiA9IHRydWU7DQoJCQl9
DQoJCQkNCgkJCS8qIFJldmVyc2UgZGlyZWN0aW9uIGF0IHRoZSBsYXN0IGltYWdl
IG9uIHRoZSBsZWZ0ICovDQoJCQlpZihuZXdJbWFnZUlEIDwgMCkNCgkJCXsNCgkJ
CQlteS5TbGlkZXNob3cuZGlyZWN0aW9uID0gMTsNCgkJCQlyZXZlcnNlRGlyZWN0
aW9uID0gdHJ1ZTsNCgkJCX0NCgkJCQ0KCQkJLyogSWYgZGlyZWN0aW9uIGlzIHJl
dmVyc2VkIHJlY2FsbCB0aGlzIG1ldGhvZCwgZWxzZSBjYWxsIHRoZSBnbGlkZVRv
IG1ldGhvZCAqLw0KCQkJKHJldmVyc2VEaXJlY3Rpb24pID8gbXkuU2xpZGVzaG93
LnNsaWRlKCkgOiBteS5nbGlkZVRvKG5ld0ltYWdlSUQpOw0KCQl9DQoJfTsNCg0K
DQoJLyogTW91c2UgV2hlZWwgc3VwcG9ydCAqLw0KCXRoaXMuTW91c2VXaGVlbCA9
DQoJew0KCQlpbml0OiBmdW5jdGlvbigpDQoJCXsNCgkJCS8qIEluaXQgbW91c2Ug
d2hlZWwgbGlzdGVuZXIgKi8NCgkJCWlmKHdpbmRvdy5hZGRFdmVudExpc3RlbmVy
KQ0KCQkJew0KCQkJCW15LkltYWdlRmxvd0Rpdi5hZGRFdmVudExpc3RlbmVyKCdE
T01Nb3VzZVNjcm9sbCcsIG15Lk1vdXNlV2hlZWwuZ2V0LCBmYWxzZSk7DQoJCQl9
DQoJCQlteS5IZWxwZXIuYWRkRXZlbnQobXkuSW1hZ2VGbG93RGl2LCdtb3VzZXdo
ZWVsJyxteS5Nb3VzZVdoZWVsLmdldCk7DQoJCX0sDQoNCgkJZ2V0OiBmdW5jdGlv
bihldmVudCkNCgkJew0KCQkJdmFyIGRlbHRhID0gMDsNCgkJCWlmICghZXZlbnQp
DQoJCQl7DQoJCQkJZXZlbnQgPSB3aW5kb3cuZXZlbnQ7DQoJCQl9DQoJCQlpZiAo
ZXZlbnQud2hlZWxEZWx0YSkNCgkJCXsNCgkJCQlkZWx0YSA9IGV2ZW50LndoZWVs
RGVsdGEgLyAxMjA7DQoJCQl9DQoJCQllbHNlIGlmIChldmVudC5kZXRhaWwpDQoJ
CQl7DQoJCQkJZGVsdGEgPSAtZXZlbnQuZGV0YWlsIC8gMzsNCgkJCX0NCgkJCWlm
IChkZWx0YSkNCgkJCXsNCgkJCQlteS5Nb3VzZVdoZWVsLmhhbmRsZShkZWx0YSk7
DQoJCQl9DQoJCQlteS5IZWxwZXIuc3VwcHJlc3NCcm93c2VyRGVmYXVsdChldmVu
dCk7DQoJCX0sDQoNCgkJaGFuZGxlOiBmdW5jdGlvbihkZWx0YSkNCgkJew0KCQkJ
dmFyIGNoYW5nZSA9IGZhbHNlOw0KCQkJdmFyIG5ld0ltYWdlSUQgPSAwOw0KCQkJ
aWYoZGVsdGEgPiAwKQ0KCQkJew0KCQkJCWlmKG15LmltYWdlSUQgPj0gMSkNCgkJ
CQl7DQoJCQkJCW5ld0ltYWdlSUQgPSBteS5pbWFnZUlEIC0xOw0KCQkJCQljaGFu
Z2UgPSB0cnVlOw0KCQkJCX0NCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQlpZiht
eS5pbWFnZUlEIDwgKG15Lm1heC0xKSkNCgkJCQl7DQoJCQkJCW5ld0ltYWdlSUQg
PSBteS5pbWFnZUlEICsxOw0KCQkJCQljaGFuZ2UgPSB0cnVlOw0KCQkJCX0NCgkJ
CX0NCg0KCQkJLyogR2xpZGUgdG8gbmV4dCAobW91c2Ugd2hlZWwgZG93bikgLyBw
cmV2aW91cyAobW91c2Ugd2hlZWwgdXApIGltYWdlICAqLw0KCQkJaWYoY2hhbmdl
KQ0KCQkJew0KCQkJCW15LmdsaWRlT25FdmVudChuZXdJbWFnZUlEKTsNCgkJCX0N
CgkJfQ0KCX07DQoNCg0KCS8qIE1vdXNlIERyYWdnaW5nICovDQoJdGhpcy5Nb3Vz
ZURyYWcgPQ0KCXsNCgkJb2JqZWN0OiBudWxsLA0KCQlvYmplY3RYOiAwLA0KCQlt
b3VzZVg6IDAsDQoJCW5ld1g6IDAsDQoJCWJ1c3k6IGZhbHNlLA0KDQoJCS8qIElu
aXQgbW91c2UgZXZlbnQgbGlzdGVuZXIgKi8NCgkJaW5pdDogZnVuY3Rpb24oKQ0K
CQl7DQoJCQlteS5IZWxwZXIuYWRkRXZlbnQobXkuSW1hZ2VGbG93RGl2LCdtb3Vz
ZW1vdmUnLG15Lk1vdXNlRHJhZy5kcmFnKTsNCgkJCW15LkhlbHBlci5hZGRFdmVu
dChteS5JbWFnZUZsb3dEaXYsJ21vdXNldXAnLG15Lk1vdXNlRHJhZy5zdG9wKTsN
CgkJCW15LkhlbHBlci5hZGRFdmVudChkb2N1bWVudCwnbW91c2V1cCcsbXkuTW91
c2VEcmFnLnN0b3ApOw0KDQoJCQkvKiBBdm9pZCB0ZXh0IGFuZCBpbWFnZSBzZWxl
Y3Rpb24gd2hpbGUgZHJhZ2dpbmcgICovDQoJCQlteS5JbWFnZUZsb3dEaXYub25z
ZWxlY3RzdGFydCA9IGZ1bmN0aW9uICgpDQoJCQl7DQoJCQkJdmFyIHNlbGVjdGlv
biA9IHRydWU7DQoJCQkJaWYgKG15Lk1vdXNlRHJhZy5idXN5KQ0KCQkJCXsNCgkJ
CQkJc2VsZWN0aW9uID0gZmFsc2U7DQoJCQkJfQ0KCQkJCXJldHVybiBzZWxlY3Rp
b247DQoJCQl9Ow0KCQl9LA0KDQoJCXN0YXJ0OiBmdW5jdGlvbihvKQ0KCQl7DQoJ
CQlteS5Nb3VzZURyYWcub2JqZWN0ID0gbzsNCgkJCW15Lk1vdXNlRHJhZy5vYmpl
Y3RYID0gbXkuTW91c2VEcmFnLm1vdXNlWCAtIG8ub2Zmc2V0TGVmdCArIG15Lm5l
d1NsaWRlclg7DQoJCX0sDQoNCgkJc3RvcDogZnVuY3Rpb24oKQ0KCQl7DQoJCQlt
eS5Nb3VzZURyYWcub2JqZWN0ID0gbnVsbDsNCgkJCW15Lk1vdXNlRHJhZy5idXN5
ID0gZmFsc2U7DQoJCX0sDQoNCgkJZHJhZzogZnVuY3Rpb24oZSkNCgkJew0KCQkJ
dmFyIHBvc3ggPSAwOw0KCQkJaWYgKCFlKQ0KCQkJew0KCQkJCWUgPSB3aW5kb3cu
ZXZlbnQ7DQoJCQl9DQoJCQlpZiAoZS5wYWdlWCkNCgkJCXsNCgkJCQlwb3N4ID0g
ZS5wYWdlWDsNCgkJCX0NCgkJCWVsc2UgaWYgKGUuY2xpZW50WCkNCgkJCXsNCgkJ
CQlwb3N4ID0gZS5jbGllbnRYICsgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0CSsg
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQ7DQoJCQl9DQoJCQlt
eS5Nb3VzZURyYWcubW91c2VYID0gcG9zeDsNCg0KCQkJaWYobXkuTW91c2VEcmFn
Lm9iamVjdCAhPT0gbnVsbCkNCgkJCXsNCgkJCQl2YXIgbmV3WCA9IChteS5Nb3Vz
ZURyYWcubW91c2VYIC0gbXkuTW91c2VEcmFnLm9iamVjdFgpICsgbXkuc2xpZGVy
V2lkdGg7DQoNCgkJCQkvKiBNYWtlIHN1cmUsIHRoYXQgdGhlIHNsaWRlciBpcyBt
b3ZlZCBpbiBwcm9wZXIgcmVsYXRpb24gdG8gcHJldmlvdXMgbW92ZW1lbnRzIGJ5
IHRoZSBnbGlkZVRvIGZ1bmN0aW9uICovDQoJCQkJaWYobmV3WCA8ICggLSBteS5u
ZXdTbGlkZXJYKSkNCgkJCQl7DQoJCQkJCW5ld1ggPSAtIG15Lm5ld1NsaWRlclg7
DQoJCQkJfQ0KCQkJCWlmKG5ld1ggPiAobXkuc2Nyb2xsYmFyV2lkdGggLSBteS5u
ZXdTbGlkZXJYKSkNCgkJCQl7DQoJCQkJCW5ld1ggPSBteS5zY3JvbGxiYXJXaWR0
aCAtIG15Lm5ld1NsaWRlclg7DQoJCQkJfQ0KDQoJCQkJLyogU2V0IG5ldyBzbGlk
ZXIgcG9zaXRpb24gKi8NCgkJCQl2YXIgc3RlcCwgaW1hZ2VJRDsNCgkJCQlpZiht
eS5jaXJjdWxhcikNCgkJCQl7DQoJCQkJCXN0ZXAgPSAobmV3WCArIG15Lm5ld1Ns
aWRlclgpIC8gKG15LnNjcm9sbGJhcldpZHRoIC8gKG15Lm1heC0obXkuaW1hZ2VG
b2N1c01heCoyKS0xKSk7DQoJCQkJCWltYWdlSUQgPSBNYXRoLnJvdW5kKHN0ZXAp
K215LmltYWdlRm9jdXNNYXg7DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJ
CXN0ZXAgPSAobmV3WCArIG15Lm5ld1NsaWRlclgpIC8gKG15LnNjcm9sbGJhcldp
ZHRoIC8gKG15Lm1heC0xKSk7DQoJCQkJCWltYWdlSUQgPSBNYXRoLnJvdW5kKHN0
ZXApOw0KCQkJCX0NCgkJCQlteS5Nb3VzZURyYWcubmV3WCA9IG5ld1g7DQoJCQkJ
bXkuTW91c2VEcmFnLm9iamVjdC5zdHlsZS5sZWZ0ID0gbmV3WCArICdweCc7DQoJ
CQkJaWYobXkuaW1hZ2VJRCAhPT0gaW1hZ2VJRCkNCgkJCQl7DQoJCQkJCW15Lmds
aWRlT25FdmVudChpbWFnZUlEKTsNCgkJCQl9DQoJCQkJbXkuTW91c2VEcmFnLmJ1
c3kgPSB0cnVlOw0KCQkJfQ0KCQl9DQoJfTsNCg0KDQoJLyogU2FmYXJpIHRvdWNo
IGV2ZW50cyBvbiB0aGUgaVBob25lIGFuZCBpUG9kIFRvdWNoICovDQoJdGhpcy5U
b3VjaCA9DQoJew0KCQl4OiAwLA0KCQlzdGFydFg6IDAsDQoJCXN0b3BYOiAwLA0K
CQlidXN5OiBmYWxzZSwNCgkJZmlyc3Q6IHRydWUsDQoNCgkJLyogSW5pdCB0b3Vj
aCBldmVudCBsaXN0ZW5lciAqLw0KCQlpbml0OiBmdW5jdGlvbigpDQoJCXsNCgkJ
CW15LkhlbHBlci5hZGRFdmVudChteS5uYXZpZ2F0aW9uRGl2LCd0b3VjaHN0YXJ0
JyxteS5Ub3VjaC5zdGFydCk7DQoJCQlteS5IZWxwZXIuYWRkRXZlbnQoZG9jdW1l
bnQsJ3RvdWNobW92ZScsbXkuVG91Y2guaGFuZGxlKTsNCgkJCW15LkhlbHBlci5h
ZGRFdmVudChkb2N1bWVudCwndG91Y2hlbmQnLG15LlRvdWNoLnN0b3ApOwkNCgkJ
fSwNCgkJDQoJCWlzT25OYXZpZ2F0aW9uRGl2OiBmdW5jdGlvbihlKQ0KCQl7DQoJ
CQl2YXIgc3RhdGUgPSBmYWxzZTsNCgkJCWlmKGUudG91Y2hlcykNCgkJCXsNCgkJ
CQl2YXIgdGFyZ2V0ID0gZS50b3VjaGVzWzBdLnRhcmdldDsNCgkJCQlpZih0YXJn
ZXQgPT09IG15Lm5hdmlnYXRpb25EaXYgfHwgdGFyZ2V0ID09PSBteS5zbGlkZXJE
aXYgfHwgdGFyZ2V0ID09PSBteS5zY3JvbGxiYXJEaXYpDQoJCQkJew0KCQkJCQlz
dGF0ZSA9IHRydWU7DQoJCQkJfQ0KCQkJfQ0KCQkJcmV0dXJuIHN0YXRlOw0KCQl9
LA0KDQoJCWdldFg6IGZ1bmN0aW9uKGUpDQoJCXsNCgkJCXZhciB4ID0gMDsNCgkJ
CWlmKGUudG91Y2hlcykNCgkJCXsNCgkJCQl4ID0gZS50b3VjaGVzWzBdLnBhZ2VY
Ow0KCQkJfQ0KCQkJcmV0dXJuIHg7DQoJCX0sDQoNCgkJc3RhcnQ6IGZ1bmN0aW9u
KGUpDQoJCXsNCgkJCW15LlRvdWNoLnN0YXJ0WCA9IG15LlRvdWNoLmdldFgoZSk7
DQoJCQlteS5Ub3VjaC5idXN5ID0gdHJ1ZTsNCgkJCW15LkhlbHBlci5zdXBwcmVz
c0Jyb3dzZXJEZWZhdWx0KGUpOw0KCQl9LA0KDQoJCWlzQnVzeTogZnVuY3Rpb24o
KQ0KCQl7DQoJCQl2YXIgYnVzeSA9IGZhbHNlOw0KCQkJaWYobXkuVG91Y2guYnVz
eSkNCgkJCXsNCgkJCQlidXN5ID0gdHJ1ZTsNCgkJCX0NCgkJCXJldHVybiBidXN5
Ow0KCQl9LA0KDQoJCS8qIEhhbmRsZSB0b3VjaCBldmVudCBwb3NpdGlvbiB3aXRo
aW4gdGhlIG5hdmlnYXRpb24gZGl2ICovDQoJCWhhbmRsZTogZnVuY3Rpb24oZSkN
CgkJew0KCQkJaWYobXkuVG91Y2guaXNCdXN5ICYmIG15LlRvdWNoLmlzT25OYXZp
Z2F0aW9uRGl2KGUpKQ0KCQkJew0KCQkJCXZhciBtYXggPSAobXkuY2lyY3VsYXIp
ID8gKG15Lm1heC0obXkuaW1hZ2VGb2N1c01heCoyKS0xKSA6IChteS5tYXgtMSk7
DQoJCQkJaWYobXkuVG91Y2guZmlyc3QpDQoJCQkJew0KCQkJCQlteS5Ub3VjaC5z
dG9wWCA9IChtYXggLSBteS5pbWFnZUlEKSAqIChteS5pbWFnZXNEaXZXaWR0aCAv
IG1heCk7DQoJCQkJCW15LlRvdWNoLmZpcnN0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJ
CXZhciBuZXdYID0gLShteS5Ub3VjaC5nZXRYKGUpIC0gbXkuVG91Y2guc3RhcnRY
IC0gbXkuVG91Y2guc3RvcFgpOw0KDQoJCQkJLyogTWFwIHgtYXhpcyB0b3VjaCBj
b29yZGluYXRlcyBpbiByYW5nZSBvZiB0aGUgSW1hZ2VGbG93IHdpZHRoICovDQoJ
CQkJaWYobmV3WCA8IDApDQoJCQkJew0KCQkJCQluZXdYID0gMDsNCgkJCQl9DQoJ
CQkJaWYobmV3WCA+IG15LmltYWdlc0RpdldpZHRoKQ0KCQkJCXsNCgkJCQkJbmV3
WCA9IG15LmltYWdlc0RpdldpZHRoOw0KCQkJCX0NCg0KCQkJCW15LlRvdWNoLngg
PSBuZXdYOw0KCQkJCQ0KCQkJCXZhciBpbWFnZUlEID0gTWF0aC5yb3VuZChuZXdY
IC8gKG15LmltYWdlc0RpdldpZHRoIC8gbWF4KSk7DQoJCQkJaW1hZ2VJRCA9IG1h
eCAtIGltYWdlSUQ7DQoJCQkJaWYobXkuaW1hZ2VJRCAhPT0gaW1hZ2VJRCkNCgkJ
CQl7DQoJCQkJCWlmKG15LmNpcmN1bGFyKQ0KCQkJCQl7DQoJCQkJCQlpbWFnZUlE
ID0gaW1hZ2VJRCArIG15LmltYWdlRm9jdXNNYXg7DQoJCQkJCX0NCgkJCQkJbXku
Z2xpZGVPbkV2ZW50KGltYWdlSUQpOw0KCQkJCX0NCgkJCQlteS5IZWxwZXIuc3Vw
cHJlc3NCcm93c2VyRGVmYXVsdChlKTsNCgkJCX0NCgkJfSwNCg0KCQlzdG9wOiBm
dW5jdGlvbigpDQoJCXsNCgkJCW15LlRvdWNoLnN0b3BYID0gbXkuVG91Y2gueDsN
CgkJCW15LlRvdWNoLmJ1c3kgPSBmYWxzZTsNCgkJfQ0KCX07DQoNCg0KCS8qIEtl
eSBzdXBwb3J0ICovDQoJdGhpcy5LZXkgPQ0KCXsNCgkJLyogSW5pdCBrZXkgZXZl
bnQgbGlzdGVuZXIgKi8NCgkJaW5pdDogZnVuY3Rpb24oKQ0KCQl7DQoJCQlkb2N1
bWVudC5vbmtleWRvd24gPSBmdW5jdGlvbihldmVudCl7IG15LktleS5oYW5kbGUo
ZXZlbnQpOyB9Ow0KCQl9LA0KDQoJCS8qIEhhbmRsZSB0aGUgYXJyb3cga2V5cyAq
Lw0KCQloYW5kbGU6IGZ1bmN0aW9uKGV2ZW50KQ0KCQl7DQoJCQl2YXIgY2hhckNv
ZGUgID0gbXkuS2V5LmdldChldmVudCk7DQoJCQlzd2l0Y2ggKGNoYXJDb2RlKQ0K
CQkJew0KCQkJCS8qIFJpZ2h0IGFycm93IGtleSAqLw0KCQkJCWNhc2UgMzk6DQoJ
CQkJCW15Lk1vdXNlV2hlZWwuaGFuZGxlKC0xKTsNCgkJCQkJYnJlYWs7DQoNCgkJ
CQkvKiBMZWZ0IGFycm93IGtleSAqLw0KCQkJCWNhc2UgMzc6DQoJCQkJCW15Lk1v
dXNlV2hlZWwuaGFuZGxlKDEpOw0KCQkJCQlicmVhazsNCgkJCX0NCgkJfSwNCg0K
CQkvKiBHZXQgdGhlIGN1cnJlbnQga2V5Y29kZSAqLw0KCQlnZXQ6IGZ1bmN0aW9u
KGV2ZW50KQ0KCQl7DQoJCQlldmVudCA9IGV2ZW50IHx8IHdpbmRvdy5ldmVudDsN
CgkJCXJldHVybiBldmVudC5rZXlDb2RlOw0KCQl9DQoJfTsNCg0KDQoJLyogSGVs
cGVyIGZ1bmN0aW9ucyAqLw0KCXRoaXMuSGVscGVyID0NCgl7DQoJCS8qIEFkZCBl
dmVudHMgKi8NCgkJYWRkRXZlbnQ6IGZ1bmN0aW9uKG9iaiwgdHlwZSwgZm4pDQoJ
CXsNCgkJCWlmKG9iai5hZGRFdmVudExpc3RlbmVyKQ0KCQkJew0KCQkJCW9iai5h
ZGRFdmVudExpc3RlbmVyKHR5cGUsIGZuLCBmYWxzZSk7DQoJCQl9DQoJCQllbHNl
IGlmKG9iai5hdHRhY2hFdmVudCkNCgkJCXsNCgkJCQlvYmpbImUiK3R5cGUrZm5d
ID0gZm47DQoJCQkJb2JqW3R5cGUrZm5dID0gZnVuY3Rpb24oKSB7IG9ialsiZSIr
dHlwZStmbl0oIHdpbmRvdy5ldmVudCApOyB9Ow0KCQkJCW9iai5hdHRhY2hFdmVu
dCggIm9uIit0eXBlLCBvYmpbdHlwZStmbl0gKTsNCgkJCX0NCgkJfSwNCg0KCQkv
KiBSZW1vdmUgZXZlbnRzICovDQoJCXJlbW92ZUV2ZW50OiBmdW5jdGlvbiggb2Jq
LCB0eXBlLCBmbiApDQoJCXsNCgkJCWlmIChvYmoucmVtb3ZlRXZlbnRMaXN0ZW5l
cikNCgkJCXsNCgkJCQlvYmoucmVtb3ZlRXZlbnRMaXN0ZW5lciggdHlwZSwgZm4s
IGZhbHNlICk7DQoJCQl9DQoJCQllbHNlIGlmIChvYmouZGV0YWNoRXZlbnQpDQoJ
CQl7DQoJCQkJLyogVGhlIElFIGJyZWFrcyBpZiB5b3UncmUgdHJ5aW5nIHRvIGRl
dGFjaCBhbiB1bmF0dGFjaGVkIGV2ZW50IGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5j
b20vZW4tdXMvbGlicmFyeS9tczUzNjQxMShWUy44NSkuYXNweCAqLw0KCQkJCWlm
KG9ialt0eXBlK2ZuXSA9PT0gdW5kZWZpbmVkKQ0KCQkJCXsNCgkJCQkJYWxlcnQo
J0hlbHBlci5yZW1vdmVFdmVudCDCuyBQb2ludGVyIHRvIGRldGFjaCBldmVudCBp
cyB1bmRlZmluZWQgLSBwZXJoYXBzIHlvdSBhcmUgdHJ5aW5nIHRvIGRldGFjaCBh
biB1bmF0dGFjaGVkIGV2ZW50PycpOw0KCQkJCX0NCgkJCQlvYmouZGV0YWNoRXZl
bnQoICdvbicrdHlwZSwgb2JqW3R5cGUrZm5dICk7DQoJCQkJb2JqW3R5cGUrZm5d
ID0gbnVsbDsNCgkJCQlvYmpbJ2UnK3R5cGUrZm5dID0gbnVsbDsNCgkJCX0NCgkJ
fSwNCg0KCQkvKiBTZXQgaW1hZ2Ugb3BhY2l0eSAqLw0KCQlzZXRPcGFjaXR5OiBm
dW5jdGlvbihvYmplY3QsIHZhbHVlKQ0KCQl7DQoJCQlpZihteS5vcGFjaXR5ID09
PSB0cnVlKQ0KCQkJew0KCQkJCW9iamVjdC5zdHlsZS5vcGFjaXR5ID0gdmFsdWUv
MTA7DQoJCQkJb2JqZWN0LnN0eWxlLmZpbHRlciA9ICdhbHBoYShvcGFjaXR5PScg
KyB2YWx1ZSoxMCArICcpJzsNCgkJCX0NCgkJfSwNCg0KCQkvKiBDcmVhdGUgSFRN
TCBlbGVtZW50cyAqLw0KCQljcmVhdGVEb2N1bWVudEVsZW1lbnQ6IGZ1bmN0aW9u
KHR5cGUsIGlkLCBvcHRpb25hbENsYXNzKQ0KCQl7DQoJCQl2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodHlwZSk7DQoJCQllbGVtZW50LnNldEF0
dHJpYnV0ZSgnaWQnLCBteS5JbWFnZUZsb3dJRCsnXycraWQpOw0KCQkJaWYob3B0
aW9uYWxDbGFzcyAhPT0gdW5kZWZpbmVkKQ0KCQkJew0KCQkJCWlkICs9ICcgJytv
cHRpb25hbENsYXNzOw0KCQkJfQ0KCQkJbXkuSGVscGVyLnNldENsYXNzTmFtZShl
bGVtZW50LCBpZCk7DQoJCQlyZXR1cm4gZWxlbWVudDsNCgkJfSwNCg0KCQkvKiBT
ZXQgQ1NTIGNsYXNzICovDQoJCXNldENsYXNzTmFtZTogZnVuY3Rpb24oZWxlbWVu
dCwgY2xhc3NOYW1lKQ0KCQl7DQoJCQlpZihlbGVtZW50KQ0KCQkJew0KCQkJCWVs
ZW1lbnQuc2V0QXR0cmlidXRlKCdjbGFzcycsIGNsYXNzTmFtZSk7DQoJCQkJZWxl
bWVudC5zZXRBdHRyaWJ1dGUoJ2NsYXNzTmFtZScsIGNsYXNzTmFtZSk7DQoJCQl9
DQoJCX0sDQoNCgkJLyogU3VwcHJlc3MgZGVmYXVsdCBicm93c2VyIGJlaGF2aW91
ciB0byBhdm9pZCBpbWFnZS90ZXh0IHNlbGVjdGlvbiB3aGlsZSBkcmFnZ2luZyAq
Lw0KCQlzdXBwcmVzc0Jyb3dzZXJEZWZhdWx0OiBmdW5jdGlvbihlKQ0KCQl7DQoJ
CQlpZihlLnByZXZlbnREZWZhdWx0KQ0KCQkJew0KCQkJCWUucHJldmVudERlZmF1
bHQoKTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQllLnJldHVyblZhbHVlID0g
ZmFsc2U7DQoJCQl9DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0sDQoNCgkJLyogQWRk
IGZ1bmN0aW9ucyB0byB0aGUgd2luZG93Lm9ucmVzaXplIGV2ZW50IC0gY2FuIG5v
dCBiZSBkb25lIGJ5IGFkZEV2ZW50ICovDQoJCWFkZFJlc2l6ZUV2ZW50OiBmdW5j
dGlvbigpDQoJCXsNCgkJCXZhciBvdGhlckZ1bmN0aW9ucyA9IHdpbmRvdy5vbnJl
c2l6ZTsNCgkJCWlmKHR5cGVvZiB3aW5kb3cub25yZXNpemUgIT0gJ2Z1bmN0aW9u
JykNCgkJCXsNCgkJCQl3aW5kb3cub25yZXNpemUgPSBmdW5jdGlvbigpDQoJCQkJ
ew0KCQkJCQlteS5yZWZyZXNoKCk7DQoJCQkJfTsNCgkJCX0NCgkJCWVsc2UNCgkJ
CXsNCgkJCQl3aW5kb3cub25yZXNpemUgPSBmdW5jdGlvbigpew0KCQkJCQlpZiAo
b3RoZXJGdW5jdGlvbnMpDQoJCQkJCXsNCgkJCQkJCW90aGVyRnVuY3Rpb25zKCk7
DQoJCQkJCX0NCgkJCQkJbXkucmVmcmVzaCgpOw0KCQkJCX07DQoJCQl9DQoJCX0N
Cgl9Ow0KfQ0KDQovKiBET01Db250ZW50TG9hZGVkIGV2ZW50IGhhbmRsZXIgLSBi
eSBUYW5ueSBPJ0hhbGV5IFs0XSAqLw0KdmFyIGRvbVJlYWR5RXZlbnQgPQ0Kew0K
CW5hbWU6ICJkb21SZWFkeUV2ZW50IiwNCgkvKiBBcnJheSBvZiBET01Db250ZW50
TG9hZGVkIGV2ZW50IGhhbmRsZXJzLiovDQoJZXZlbnRzOiB7fSwNCglkb21SZWFk
eUlEOiAxLA0KCWJEb25lOiBmYWxzZSwNCglET01Db250ZW50TG9hZGVkQ3VzdG9t
OiBudWxsLA0KDQoJLyogRnVuY3Rpb24gdGhhdCBhZGRzIERPTUNvbnRlbnRMb2Fk
ZWQgbGlzdGVuZXJzIHRvIHRoZSBhcnJheS4qLw0KCWFkZDogZnVuY3Rpb24oaGFu
ZGxlcikNCgl7DQoJCS8qIEFzc2lnbiBlYWNoIGV2ZW50IGhhbmRsZXIgYSB1bmlx
dWUgSUQuIElmIHRoZSBoYW5kbGVyIGhhcyBhbiBJRCwgaXQgaGFzIGFscmVhZHkg
YmVlbiBhZGRlZCB0byB0aGUgZXZlbnRzIG9iamVjdCBvciBiZWVuIHJ1bi4qLw0K
CQlpZiAoIWhhbmRsZXIuJCRkb21SZWFkeUlEKQ0KCQl7DQoJCQloYW5kbGVyLiQk
ZG9tUmVhZHlJRCA9IHRoaXMuZG9tUmVhZHlJRCsrOw0KDQoJCQkvKiBJZiB0aGUg
RE9NQ29udGVudExvYWRlZCBldmVudCBoYXMgaGFwcGVuZWQsIHJ1biB0aGUgZnVu
Y3Rpb24uICovDQoJCQlpZih0aGlzLmJEb25lKQ0KCQkJew0KCQkJCWhhbmRsZXIo
KTsNCgkJCX0NCg0KCQkJLyogc3RvcmUgdGhlIGV2ZW50IGhhbmRsZXIgaW4gdGhl
IGhhc2ggdGFibGUgKi8NCgkJCXRoaXMuZXZlbnRzW2hhbmRsZXIuJCRkb21SZWFk
eUlEXSA9IGhhbmRsZXI7DQoJCX0NCgl9LA0KDQoJcmVtb3ZlOiBmdW5jdGlvbiho
YW5kbGVyKQ0KCXsNCgkJLyogRGVsZXRlIHRoZSBldmVudCBoYW5kbGVyIGZyb20g
dGhlIGhhc2ggdGFibGUgKi8NCgkJaWYgKGhhbmRsZXIuJCRkb21SZWFkeUlEKQ0K
CQl7DQoJCQlkZWxldGUgdGhpcy5ldmVudHNbaGFuZGxlci4kJGRvbVJlYWR5SURd
Ow0KCQl9DQoJfSwNCg0KCS8qIEZ1bmN0aW9uIHRvIHByb2Nlc3MgdGhlIERPTUNv
bnRlbnRMb2FkZWQgZXZlbnRzIGFycmF5LiAqLw0KCXJ1bjogZnVuY3Rpb24oKQ0K
CXsNCgkJLyogcXVpdCBpZiB0aGlzIGZ1bmN0aW9uIGhhcyBhbHJlYWR5IGJlZW4g
Y2FsbGVkICovDQoJCWlmICh0aGlzLmJEb25lKQ0KCQl7DQoJCQlyZXR1cm47DQoJ
CX0NCg0KCQkvKiBGbGFnIHRoaXMgZnVuY3Rpb24gc28gd2UgZG9uJ3QgZG8gdGhl
IHNhbWUgdGhpbmcgdHdpY2UgKi8NCgkJdGhpcy5iRG9uZSA9IHRydWU7DQoNCgkJ
LyogaXRlcmF0ZXMgdGhyb3VnaCBhcnJheSBvZiByZWdpc3RlcmVkIGZ1bmN0aW9u
cyAqLw0KCQlmb3IgKHZhciBpIGluIHRoaXMuZXZlbnRzKQ0KCQl7DQoJCQl0aGlz
LmV2ZW50c1tpXSgpOw0KCQl9DQoJfSwNCg0KCXNjaGVkdWxlOiBmdW5jdGlvbigp
DQoJew0KCQkvKiBRdWl0IGlmIHRoZSBpbml0IGZ1bmN0aW9uIGhhcyBhbHJlYWR5
IGJlZW4gY2FsbGVkKi8NCgkJaWYgKHRoaXMuYkRvbmUpDQoJCXsNCgkJCXJldHVy
bjsNCgkJfQ0KDQoJCS8qIEZpcnN0LCBjaGVjayBmb3IgU2FmYXJpIG9yIEtIVE1M
LiovDQoJCWlmKC9LSFRNTHxXZWJLaXQvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdl
bnQpKQ0KCQl7DQoJCQlpZigvbG9hZGVkfGNvbXBsZXRlLy50ZXN0KGRvY3VtZW50
LnJlYWR5U3RhdGUpKQ0KCQkJew0KCQkJCXRoaXMucnVuKCk7DQoJCQl9DQoJCQll
bHNlDQoJCQl7DQoJCQkJLyogTm90IHJlYWR5IHlldCwgd2FpdCBhIGxpdHRsZSBt
b3JlLiovDQoJCQkJc2V0VGltZW91dCh0aGlzLm5hbWUgKyAiLnNjaGVkdWxlKCki
LCAxMDApOw0KCQkJfQ0KCQl9DQoJCWVsc2UgaWYoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoIl9faWVfb25sb2FkIikpDQoJCXsNCgkJCS8qIFNlY29uZCwgY2hlY2sg
Zm9yIElFLiovDQoJCQlyZXR1cm4gdHJ1ZTsNCgkJfQ0KDQoJCS8qIENoZWNrIGZv
ciBjdXN0b20gZGV2ZWxvcGVyIHByb3ZpZGVkIGZ1bmN0aW9uLiovDQoJCWlmKHR5
cGVvZiB0aGlzLkRPTUNvbnRlbnRMb2FkZWRDdXN0b20gPT09ICJmdW5jdGlvbiIp
DQoJCXsNCgkJCS8qIGlmIERPTSBtZXRob2RzIGFyZSBzdXBwb3J0ZWQsIGFuZCB0
aGUgYm9keSBlbGVtZW50IGV4aXN0cyAodXNpbmcgYSBkb3VibGUtY2hlY2sNCgkJ
CWluY2x1ZGluZyBkb2N1bWVudC5ib2R5LCBmb3IgdGhlIGJlbmVmaXQgb2Ygb2xk
ZXIgbW96IGJ1aWxkcyBbZWcgbnM3LjFdIGluIHdoaWNoDQoJCQlnZXRFbGVtZW50
c0J5VGFnTmFtZSgnYm9keScpWzBdIGlzIHVuZGVmaW5lZCwgdW5sZXNzIHRoaXMg
c2NyaXB0IGlzIGluIHRoZSBib2R5IHNlY3Rpb24pICovDQoJCQlpZih0eXBlb2Yg
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09ICd1bmRlZmluZWQnICYm
IChkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdICE9PSBu
dWxsIHx8IGRvY3VtZW50LmJvZHkgIT09IG51bGwpKQ0KCQkJew0KCQkJCS8qIENh
bGwgY3VzdG9tIGZ1bmN0aW9uLiAqLw0KCQkJCWlmKHRoaXMuRE9NQ29udGVudExv
YWRlZEN1c3RvbSgpKQ0KCQkJCXsNCgkJCQkJdGhpcy5ydW4oKTsNCgkJCQl9DQoJ
CQkJZWxzZQ0KCQkJCXsNCgkJCQkJLyogTm90IHJlYWR5IHlldCwgd2FpdCBhIGxp
dHRsZSBtb3JlLiAqLw0KCQkJCQlzZXRUaW1lb3V0KHRoaXMubmFtZSArICIuc2No
ZWR1bGUoKSIsIDI1MCk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCXJldHVybiB0cnVl
Ow0KCX0sDQoNCglpbml0OiBmdW5jdGlvbigpDQoJew0KCQkvKiBJZiBhZGRFdmVu
dExpc3RlbmVyIHN1cHBvcnRzIHRoZSBET01Db250ZW50TG9hZGVkIGV2ZW50Liov
DQoJCWlmKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpDQoJCXsNCgkJCWRvY3Vt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBmdW5jdGlv
bigpIHsgZG9tUmVhZHlFdmVudC5ydW4oKTsgfSwgZmFsc2UpOw0KCQl9DQoNCgkJ
LyogU2NoZWR1bGUgdG8gcnVuIHRoZSBpbml0IGZ1bmN0aW9uLiovDQoJCXNldFRp
bWVvdXQoImRvbVJlYWR5RXZlbnQuc2NoZWR1bGUoKSIsIDEwMCk7DQoNCgkJZnVu
Y3Rpb24gcnVuKCkNCgkJew0KCQkJZG9tUmVhZHlFdmVudC5ydW4oKTsNCgkJfQ0K
DQoJCS8qIEp1c3QgaW4gY2FzZSB3aW5kb3cub25sb2FkIGhhcHBlbnMgZmlyc3Qs
IGFkZCBpdCB0byBvbmxvYWQgdXNpbmcgYW4gYXZhaWxhYmxlIG1ldGhvZC4qLw0K
CQlpZih0eXBlb2YgYWRkRXZlbnQgIT09ICJ1bmRlZmluZWQiKQ0KCQl7DQoJCQlh
ZGRFdmVudCh3aW5kb3csICJsb2FkIiwgcnVuKTsNCgkJfQ0KCQllbHNlIGlmKGRv
Y3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpDQoJCXsNCgkJCWRvY3VtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImxvYWQiLCBydW4sIGZhbHNlKTsNCgkJfQ0KCQllbHNlIGlm
KHR5cGVvZiB3aW5kb3cub25sb2FkID09PSAiZnVuY3Rpb24iKQ0KCQl7DQoJCQl2
YXIgb2xkb25sb2FkID0gd2luZG93Lm9ubG9hZDsNCgkJCXdpbmRvdy5vbmxvYWQg
PSBmdW5jdGlvbigpDQoJCQl7DQoJCQkJZG9tUmVhZHlFdmVudC5ydW4oKTsNCgkJ
CQlvbGRvbmxvYWQoKTsNCgkJCX07DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQl3aW5k
b3cub25sb2FkID0gcnVuOw0KCQl9DQoNCgkJLyogZm9yIEludGVybmV0IEV4cGxv
cmVyICovDQoJCS8qQGNjX29uDQoJCQlAaWYgKEBfd2luMzIgfHwgQF93aW42NCkN
CgkJCWRvY3VtZW50LndyaXRlKCI8c2NyaXB0IGlkPV9faWVfb25sb2FkIGRlZmVy
IHNyYz1cIi8vOlwiPjxcL3NjcmlwdD4iKTsNCgkJCXZhciBzY3JpcHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiX19pZV9vbmxvYWQiKTsNCgkJCXNjcmlwdC5v
bnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpDQoJCQl7DQoJCQkJaWYgKHRo
aXMucmVhZHlTdGF0ZSA9PSAiY29tcGxldGUiKQ0KCQkJCXsNCgkJCQkJZG9tUmVh
ZHlFdmVudC5ydW4oKTsgLy8gY2FsbCB0aGUgb25sb2FkIGhhbmRsZXINCgkJCQl9
DQoJCQl9Ow0KCQkJQGVuZA0KCQlAKi8NCgl9DQp9Ow0KDQp2YXIgZG9tUmVhZHkg
PSBmdW5jdGlvbihoYW5kbGVyKSB7IGRvbVJlYWR5RXZlbnQuYWRkKGhhbmRsZXIp
OyB9Ow0KZG9tUmVhZHlFdmVudC5pbml0KCk7DQoNCg0KLyogQ3JlYXRlIEltYWdl
RmxvdyBpbnN0YW5jZXMgd2hlbiB0aGUgRE9NIHN0cnVjdHVyZSBoYXMgYmVlbiBs
b2FkZWQgKi8NCmRvbVJlYWR5KGZ1bmN0aW9uKCkNCnsNCgl2YXIgaW5zdGFuY2VP
bmUgPSBuZXcgSW1hZ2VGbG93KCk7DQoJaW5zdGFuY2VPbmUuaW5pdCh7IEltYWdl
Rmxvd0lEOidteUltYWdlRmxvdycgfSk7DQp9KTs=

------------V6sUxPU46ZhOl9Jww3TAHT
Content-Disposition: inline; filename=logo_emblem.png
Content-Type: image/png; name=logo_emblem.png
Content-Location: http://www.tver.ru/img/logo_emblem.png
Content-Transfer-Encoding: Base64

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

------------V6sUxPU46ZhOl9Jww3TAHT--
