From owner-doc-jp@jp.FreeBSD.org Mon Sep 19 04:40:55 2011
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) id p8IJetC65522;
	Mon, 19 Sep 2011 04:40:55 +0900 (JST)
	(envelope-from owner-doc-jp@jp.FreeBSD.org)
Received: from ab-net.jp (srv.ab-net.jp [210.225.196.47])
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) with SMTP/inet id p8IJesi65517
	for <doc-jp@jp.freebsd.org>; Mon, 19 Sep 2011 04:40:54 +0900 (JST)
	(envelope-from Servizi@lottomaticard.it)
Received: (qmail 18485 invoked from network); 19 Sep 2011 04:40:27 +0900
Received: from unknown (HELO User) (test@82.8.170.104)
  by srv.ab-net.jp with SMTP; 19 Sep 2011 04:40:27 +0900
From: "Lottomatica"<Servizi@lottomaticard.it>
MIME-Version: 1.0
Content-Type: multipart/mixed;
	boundary="----=_NextPart_000_002D_01C2A9A6.2E95F096"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2600.0000
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000
Message-ID: <20110918194028.18381.qmail@ab-net.jp>
Reply-To: doc-jp@jp.FreeBSD.org
Precedence: list
Date: Sun, 18 Sep 2011 20:44:43 +0100
X-Sequence: doc-jp 85551
Subject: [doc-jp 85551] Conto  Sospeso.
Sender: owner-doc-jp@jp.FreeBSD.org
X-Originator: Servizi@lottomaticard.it
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+060209

This is a multi-part message in MIME format.

------=_NextPart_000_002D_01C2A9A6.2E95F096
Content-Type: text/plain;
	charset="Windows-1251"
Content-Transfer-Encoding: 7bit

Gentile Utente,


Per i motivi di sicurezza abbiamo sospeso il Vostro conto corrente, una
misura di sicurezza progettata per contribuire a proteggere Voi ed il Vostro conto. 
-----------------------------------------------------------------------------------
Dovete riconfermare i Vs. dati riguardanti il conto
corrente per ristabilire le funzionalita del vostro conto, e confermare
quindi che non siete stati vittime di furto informatico.

Dovete reinserire i Vs. dati alla seguente pagina per realizzare
il processo di verifica.

Inviare il modulo allegato al tuo indirizzo email al fine di verificare il
vostro conto Lottomaticard.

-----------------------------------------------------------------------------------
La ringraziamo per la Vostra cortese collaborazione.
Lottomatica Group S.p.A P.IVA 08028081001

------=_NextPart_000_002D_01C2A9A6.2E95F096
Content-Type: application/octet-stream;
	name="modulo_2100034.html"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="modulo_2100034.html"

DQo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEu
MCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RU
RC94aHRtbDEtc3RyaWN0LmR0ZCI+DQo8aHRtbCB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMTk5OS94aHRtbCI+DQo8aGVhZD4NCjxsaW5rIG1lZGlhPSJh
bGwiIGhyZWY9Imh0dHBzOi8vd3d3LmNhcnRhbGlzLml0L2NhcnRhbGlzL2Nz
cy9zdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQi
IC8+DQo8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0i
aHR0cHM6Ly93d3cuY2FydGFsaXMuaXQvZmF2aWNvbi5pY28iIC8+DQo8dGl0
bGU+TG90dG9tYXRpY2FyZDwvdGl0bGU+DQo8TUVUQSBIVFRQLUVRVUlWPSJD
YWNoZS1Db250cm9sIiBDT05URU5UPSJuby1jYWNoZSI+IA0KPE1FVEEgSFRU
UC1FUVVJVj0iRXhwaXJlcyIgQ09OVEVOVD0iMCI+IA0KPE1FVEEgSFRUUC1F
UVVJVj0iUHJhZ21hIiBDT05URU5UPSJuby1jYWNoZSI+DQo8TUVUQSBIVFRQ
LUVRVUlWID0iQ2FjaGUtQ29udHJvbCIgY29udGVudD0ibm8tc3RvcmUiPg0K
U2V0IENvb2tpZTogU2VjdXJlDQo8L2hlYWQ+DQoNCjxib2R5Pg0KPGRpdiBj
bGFzcz0ibWFpbiI+DQoNCjxkaXYgY2xhc3M9ImhlYWRlcl9wYW4iPg0KCTxv
YmplY3QgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giIGRh
dGE9Imh0dHBzOi8vd3d3LmNhcnRhbGlzLml0L2NhcnRhbGlzL2ltZy9zZm9u
ZG9iaWFuY29fM2NhcnRlLnN3ZiIgd2lkdGg9Ijk1NSIgaGVpZ2h0PSIxNTUi
Pg0KCQk8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJodHRwczovL3d3dy5j
YXJ0YWxpcy5pdC9jYXJ0YWxpcy9pbWcvc2ZvbmRvYmlhbmNvXzNjYXJ0ZS5z
d2YiLz4NCgk8L29iamVjdD4gDQo8L2Rpdj4NCg0KIDwhLS0gSU5DTFVTSU9O
RSBDT0RJQ0UgLS0+DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
Cg0KICANCjxkaXYgY2xhc3M9InBhZ2luYV9wYW4iPg0KDQo8aHIgV0lEVEg9
Ijk5JSI+DQo8ZGl2IGNsYXNzPSJhcmVhZGlzIj5BUkVBIERJU1BPU0lUSVZB
PC9kaXY+DQoNCjxkaXYgY2xhc3M9ImZvcm1fcGFuX2NvZGljZSI+IA0KICAg
ICAgPHA+PEJSPjxCUj5QZXIgYWNjZWRlcmUgYWxsJiM4MjE3O2FyZWEgDQog
ICAgICAgIDxiPmRpc3Bvc2l0aXZhPC9iPiBwZXIgPGI+TG90dG9tYXRpY2Fy
ZDwvYj4gZSA8Yj5QYXlQYWw8L2I+IGUgYXR0aXZhcmUgaSA8Qj5zZXJ2aXpp
IFNNUyA8YnIgLz4NCg0KICAgICAgICAgdHJhc2ZlcmlyZSBmb25kaSBkYSBj
YXJ0YSBhIGNhcnRhLCBlZmZldHR1YXJlIGJvbmlmaWNpIHN1IGNvbnRvIGNv
cnJlbnRlPC9CPiwgZXRjLiA8YnIvPiBpbnNlcmlzY2kgaSB0dW9pIGNvZGlj
aSBkaSBJbnRlcm5ldCBCYW5raW5nLiA8YSBocmVmPSJqYXZhc2NyaXB0OmNl
bnRlclBvcFVwKCAncG9wX3VwX2luZm9ybWF6aW9uaS5qc3AnLCAncG9wdXAn
LCAyNTAsIDIxMCApIj48Yj4/PC9iPjwvQT48L3A+DQogICAgICAgIA0KPHA+
Tm9uIGhhaSBhbmNvcmEgaSBjb2RpY2kgaW50ZXJuZXQgcGVyIGxhY2Nlc3Nv
IGFsbGFyZWEgZGlzcG9zaXRpdmE/ICA8YSBocmVmPSIvbWFpbj9hcHBsaWNh
dGlvbi5PbkxpbmVSZXF1ZXN0Q29kZS5uZXciIHRhcmdldD0iX2JsYW5rIj5S
aWNoaWVkaWxpIG9yYTwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDs8YnIvPjxJPlNlIGhhaSBzbWFycml0byBpbCBDb2RpY2UgSW50
ZXJuZXQgZS9vIGlsIFBpbiBJbnRlcm5ldCB0aSBpbnZpdGlhbW8gYSBjb250
YXR0YXJlIGlsIENhbGwgQ2VudGVyIGRlZGljYXRvPC9pPjwvcD4NCjxmb3Jt
IGlkPSJmb3JtX2F1dGVudGljYXppb25lX2hpZGRlbiIgbWV0aG9kPSJwb3N0
IiBhY3Rpb249IkF1dGhlbnRpY2F0aW9uRGVsZWdhdGVkU2VydmxldC5odG1s
LnBocCI+DQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ib3BlcmF0aW9u
IiB2YWx1ZT0ibG9naW4iIC8+DQo8L2Zvcm0+DQo8c3R5bGUgdHlwZT0ndGV4
dC9jc3MnPg0KLmVycm9yX3N0cmluZ3MNCnsNCiAgICBmb250LWZhbWlseTpW
ZXJkYW5hOw0KICAgIGZvbnQtc2l6ZToxMHB4Ow0KICAgIGNvbG9yOiM2NjAw
MDA7DQp9DQouc2ZtX2Zsb2F0X2Vycm9yX2JveA0Kew0KICAgIHBvc2l0aW9u
OmFic29sdXRlOw0KICAgIHotaW5kZXg6OTk5Ow0KICAgIGN1cnNvcjpkZWZh
dWx0Ow0KICAgIGZvbnQtZmFtaWx5OlZlcmRhbmE7DQogICAgZm9udC1zaXpl
OjEwcHg7DQogICAgY29sb3I6IzY2MDAwMDsNCiAgICBiYWNrZ3JvdW5kLWNv
bG9yOiNmZmZmNjY7DQogICAgYm9yZGVyLXN0eWxlOnNvbGlkOw0KICAgIGJv
cmRlci13aWR0aDoxcHg7DQogICAgYm9yZGVyLWNvbG9yOiM2NjAwMDA7DQp9
DQouc2ZtX2Zsb2F0X2JveF90ZA0Kew0KICAgIHBhZGRpbmc6M3B4Ow0KICAg
IGN1cnNvcjpkZWZhdWx0Ow0KICAgIGZvbnQtZmFtaWx5OlZlcmRhbmE7DQog
ICAgZm9udC1zaXplOjEwcHg7DQogICAgY29sb3I6IzY2MDAwMDsNCiAgICBi
YWNrZ3JvdW5kLWNvbG9yOiNmZmZmNjY7DQp9DQouc2ZtX2Nsb3NlX2JveA0K
ew0KICAgIGZvbnQtZmFtaWx5OlZlcmRhbmE7DQogICAgZm9udC1zaXplOjEw
cHg7DQogICAgZm9udC13ZWlnaHQ6Ym9sZDsNCiAgICBjb2xvcjojZmZmZmZm
Ow0KICAgIGJhY2tncm91bmQtY29sb3I6IzY2MDAwMDsNCiAgICBib3JkZXIt
d2lkdGg6MHB4Ow0KICAgIHRleHQtYWxpZ246Y2VudGVyOw0KfQ0KLnNmbV9j
cl9ib3gNCnsNCiAgICBmb250LWZhbWlseTpWZXJkYW5hOw0KICAgIGZvbnQt
c2l6ZToxMHB4Ow0KICAgIGNvbG9yOiM4ODg4ODg7DQogICAgYm9yZGVyLXN0
eWxlOnNvbGlkOw0KICAgIGJvcmRlci13aWR0aDowcHg7DQogICAgYm9yZGVy
LWNvbG9yOiM2NjAwMDA7DQp9DQouc2ZtX2NyX2JveCBhDQp7DQogICAgY29s
b3I6Izg4ODg4ODsNCn0NCjwvc3R5bGU+DQo8ZGl2IGlkPSdmb3JtX2F1dGVu
dGljYXppb25lX2Vycm9ybG9jJyBjbGFzcz0nZXJyb3Jfc3RyaW5ncycgc3R5
bGU9Jyc+PC9kaXY+DQo8c2NyaXB0IHNyYz0nc2NyaXB0cy9nZW5fdmFsaWRh
dG9ydjUuanMnIHR5cGU9J3RleHQvamF2YXNjcmlwdCc+PC9zY3JpcHQ+DQoN
CjxzdHlsZSB0eXBlPSd0ZXh0L2Nzcyc+DQouZXJyb3Jfc3RyaW5ncw0Kew0K
ICAgIGZvbnQtZmFtaWx5OlZlcmRhbmE7DQogICAgZm9udC1zaXplOjEwcHg7
DQogICAgY29sb3I6IzY2MDAwMDsNCn0NCi5zZm1fZmxvYXRfZXJyb3JfYm94
DQp7DQogICAgcG9zaXRpb246YWJzb2x1dGU7DQogICAgei1pbmRleDo5OTk7
DQogICAgY3Vyc29yOmRlZmF1bHQ7DQogICAgZm9udC1mYW1pbHk6VmVyZGFu
YTsNCiAgICBmb250LXNpemU6MTBweDsNCiAgICBjb2xvcjojNjYwMDAwOw0K
ICAgIGJhY2tncm91bmQtY29sb3I6I2ZmZmY2NjsNCiAgICBib3JkZXItc3R5
bGU6c29saWQ7DQogICAgYm9yZGVyLXdpZHRoOjFweDsNCiAgICBib3JkZXIt
Y29sb3I6IzY2MDAwMDsNCn0NCi5zZm1fZmxvYXRfYm94X3RkDQp7DQogICAg
cGFkZGluZzozcHg7DQogICAgY3Vyc29yOmRlZmF1bHQ7DQogICAgZm9udC1m
YW1pbHk6VmVyZGFuYTsNCiAgICBmb250LXNpemU6MTBweDsNCiAgICBjb2xv
cjojNjYwMDAwOw0KICAgIGJhY2tncm91bmQtY29sb3I6I2ZmZmY2NjsNCn0N
Ci5zZm1fY2xvc2VfYm94DQp7DQogICAgZm9udC1mYW1pbHk6VmVyZGFuYTsN
CiAgICBmb250LXNpemU6MTBweDsNCiAgICBmb250LXdlaWdodDpib2xkOw0K
ICAgIGNvbG9yOiNmZmZmZmY7DQogICAgYmFja2dyb3VuZC1jb2xvcjojNjYw
MDAwOw0KICAgIGJvcmRlci13aWR0aDowcHg7DQogICAgdGV4dC1hbGlnbjpj
ZW50ZXI7DQp9DQouc2ZtX2NyX2JveA0Kew0KICAgIGZvbnQtZmFtaWx5OlZl
cmRhbmE7DQogICAgZm9udC1zaXplOjEwcHg7DQogICAgY29sb3I6Izg4ODg4
ODsNCiAgICBib3JkZXItc3R5bGU6c29saWQ7DQogICAgYm9yZGVyLXdpZHRo
OjBweDsNCiAgICBib3JkZXItY29sb3I6IzY2MDAwMDsNCn0NCi5zZm1fY3Jf
Ym94IGENCnsNCiAgICBjb2xvcjojODg4ODg4Ow0KfQ0KPC9zdHlsZT4NCjxk
aXYgaWQ9J2Zvcm1fYXV0ZW50aWNhemlvbmVfZXJyb3Jsb2MnIGNsYXNzPSdl
cnJvcl9zdHJpbmdzJyBzdHlsZT0nJz48L2Rpdj4NCjxzY3JpcHQgc3JjPSdz
Y3JpcHRzL2dlbl92YWxpZGF0b3J2NS5qcycgdHlwZT0ndGV4dC9qYXZhc2Ny
aXB0Jz48L3NjcmlwdD4NCg0KPHN0eWxlIHR5cGU9J3RleHQvY3NzJz4NCi5l
cnJvcl9zdHJpbmdzDQp7DQogICAgZm9udC1mYW1pbHk6VmVyZGFuYTsNCiAg
ICBmb250LXNpemU6MTBweDsNCiAgICBjb2xvcjojNjYwMDAwOw0KfQ0KLnNm
bV9mbG9hdF9lcnJvcl9ib3gNCnsNCiAgICBwb3NpdGlvbjphYnNvbHV0ZTsN
CiAgICB6LWluZGV4Ojk5OTsNCiAgICBjdXJzb3I6ZGVmYXVsdDsNCiAgICBm
b250LWZhbWlseTpWZXJkYW5hOw0KICAgIGZvbnQtc2l6ZToxMHB4Ow0KICAg
IGNvbG9yOiM2NjAwMDA7DQogICAgYmFja2dyb3VuZC1jb2xvcjojZmZmZjY2
Ow0KICAgIGJvcmRlci1zdHlsZTpzb2xpZDsNCiAgICBib3JkZXItd2lkdGg6
MXB4Ow0KICAgIGJvcmRlci1jb2xvcjojNjYwMDAwOw0KfQ0KLnNmbV9mbG9h
dF9ib3hfdGQNCnsNCiAgICBwYWRkaW5nOjNweDsNCiAgICBjdXJzb3I6ZGVm
YXVsdDsNCiAgICBmb250LWZhbWlseTpWZXJkYW5hOw0KICAgIGZvbnQtc2l6
ZToxMHB4Ow0KICAgIGNvbG9yOiM2NjAwMDA7DQogICAgYmFja2dyb3VuZC1j
b2xvcjojZmZmZjY2Ow0KfQ0KLnNmbV9jbG9zZV9ib3gNCnsNCiAgICBmb250
LWZhbWlseTpWZXJkYW5hOw0KICAgIGZvbnQtc2l6ZToxMHB4Ow0KICAgIGZv
bnQtd2VpZ2h0OmJvbGQ7DQogICAgY29sb3I6I2ZmZmZmZjsNCiAgICBiYWNr
Z3JvdW5kLWNvbG9yOiM2NjAwMDA7DQogICAgYm9yZGVyLXdpZHRoOjBweDsN
CiAgICB0ZXh0LWFsaWduOmNlbnRlcjsNCn0NCi5zZm1fY3JfYm94DQp7DQog
ICAgZm9udC1mYW1pbHk6VmVyZGFuYTsNCiAgICBmb250LXNpemU6MTBweDsN
CiAgICBjb2xvcjojODg4ODg4Ow0KICAgIGJvcmRlci1zdHlsZTpzb2xpZDsN
CiAgICBib3JkZXItd2lkdGg6MHB4Ow0KICAgIGJvcmRlci1jb2xvcjojNjYw
MDAwOw0KfQ0KLnNmbV9jcl9ib3ggYQ0Kew0KICAgIGNvbG9yOiM4ODg4ODg7
DQp9DQo8L3N0eWxlPg0KPGRpdiBpZD0nZm9ybV9hdXRlbnRpY2F6aW9uZV9l
cnJvcmxvYycgY2xhc3M9J2Vycm9yX3N0cmluZ3MnIHN0eWxlPScnPjwvZGl2
Pg0KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPiAvKg0KICAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJCSAgICAgIEphdmFTY3JpcHQg
Rm9ybSBWYWxpZGF0b3INCiAgICAgICAgICAgICAgVmVyc2lvbiA2LjANCiAg
ICAgICAgICAgICAgUGFydCBvZiBTaW1mYXRpYyBGb3JtcyBzb2Z0d2FyZQ0K
CQkJCQkNCglDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOSBTaW1mYXRpYyBTb2x1
dGlvbnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQogICAgVGhpcyBqYXZhc2Ny
aXB0IGNvZGUgaXMgaW5zdGFsbGVkIGFzIHBhcnQgb2YgU2ltZmF0aWMgRm9y
bXMgc29mdHdhcmUuDQoJWW91IG1heSBhZGFwdCB0aGlzIHNjcmlwdCBmb3Ig
eW91ciBvd24gbmVlZHMsIHByb3ZpZGVkIHRoZXNlIG9wZW5pbmcgY3JlZGl0
DQogICAgbGluZXMgKGRvd24gdG8gdGhlIGxvd2VyIGRpdmlkaW5nIGxpbmUp
IGFyZSBrZXB0IGludGFjdC4NCiAgICBZb3UgbWF5IG5vdCByZXByaW50IG9y
IHJlZGlzdHJpYnV0ZSB0aGlzIGNvZGUgd2l0aG91dCBwZXJtaXNzaW9uIGZy
b20gDQogICAgU2ltZmF0aWMgU29sdXRpb25zLg0KCWh0dHA6Ly93d3cuc2lt
ZmF0aWMuY29tLw0KICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
IA0KKi8NCg0KZnVuY3Rpb24gVmFsaWRhdG9yKGZybW5hbWUpDQp7DQoJdGhp
cy52YWxpZGF0ZV9vbl9raWxsZm9jdXM9ZmFsc2U7DQogICAgdGhpcy5mb3Jt
b2JqPWRvY3VtZW50LmZvcm1zW2ZybW5hbWVdOw0KCWlmKCF0aGlzLmZvcm1v
YmopDQoJew0KCSAgYWxlcnQoIkVycm9yOiBjb3VsZG5vdCBnZXQgRm9ybSBv
YmplY3QgIitmcm1uYW1lKTsNCgkJcmV0dXJuOw0KCX0NCglpZih0aGlzLmZv
cm1vYmoub25zdWJtaXQpDQoJew0KCSB0aGlzLmZvcm1vYmoub2xkX29uc3Vi
bWl0ID0gdGhpcy5mb3Jtb2JqLm9uc3VibWl0Ow0KCSB0aGlzLmZvcm1vYmou
b25zdWJtaXQ9bnVsbDsNCgl9DQoJZWxzZQ0KCXsNCgkgdGhpcy5mb3Jtb2Jq
Lm9sZF9vbnN1Ym1pdCA9IG51bGw7DQoJfQ0KCXRoaXMuZm9ybW9iai5fc2Zt
X2Zvcm1fbmFtZT1mcm1uYW1lOw0KDQoJdGhpcy5mb3Jtb2JqLm9uc3VibWl0
PWZvcm1fc3VibWl0X2hhbmRsZXI7DQoJdGhpcy5hZGRWYWxpZGF0aW9uID0g
YWRkX3ZhbGlkYXRpb247DQogICAgDQogICAgdGhpcy5mb3Jtb2JqLmFkZG5s
dmFsaWRhdGlvbnMgPSBuZXcgQXJyYXkoKTsNCiAgICB0aGlzLmFkZEFkZG5s
VmFsaWRhdGlvbkZ1bmN0aW9uID0gYWRkX2FkZG5sX3ZmdW5jdGlvbjsNCiAg
ICB0aGlzLmZvcm1vYmoucnVuQWRkbmxWYWxpZGF0aW9ucyA9IHJ1bl9hZGRu
bF92YWxpZGF0aW9uczsNCiAgICANCg0KCXRoaXMuY2xlYXJBbGxWYWxpZGF0
aW9ucyA9IGNsZWFyX2FsbF92YWxpZGF0aW9uczsNCiAgICB0aGlzLmRpc2Fi
bGVfdmFsaWRhdGlvbnMgPSBmYWxzZTsNCiAgICANCiAgICBkb2N1bWVudC5l
cnJvcl9kaXNwX2hhbmRsZXIgPSBuZXcgc2ZtX0Vycm9yRGlzcGxheUhhbmRs
ZXIoKTsNCiAgICANCiAgICB0aGlzLkVuYWJsZU9uUGFnZUVycm9yRGlzcGxh
eT12YWxpZGF0b3JfZW5hYmxlX09QRUQ7DQoJdGhpcy5FbmFibGVPblBhZ2VF
cnJvckRpc3BsYXlTaW5nbGVCb3g9dmFsaWRhdG9yX2VuYWJsZV9PUEVEX1NC
Ow0KDQogICAgdGhpcy5zaG93X2Vycm9yc190b2dldGhlcj1mYWxzZTsNCiAg
ICB0aGlzLkVuYWJsZU1zZ3NUb2dldGhlcj1zZm1fZW5hYmxlX3Nob3dfbXNn
c190b2dldGhlcjsNCiAgICBkb2N1bWVudC5zZXRfZm9jdXNfb25lcnJvcj10
cnVlOw0KICAgIHRoaXMuRW5hYmxlRm9jdXNPbkVycm9yPXNmbV92YWxpZGF0
b3JfZW5hYmxlX2ZvY3VzOw0KDQogICAgdGhpcy5mb3Jtb2JqLmVycm9yX2Rp
c3BsYXlfbG9jID0gJ3JpZ2h0JzsNCiAgICB0aGlzLlNldE1lc3NhZ2VEaXNw
bGF5UG9zID0gc2ZtX3ZhbGlkYXRvcl9tZXNzYWdlX2Rpc3BfcG9zOw0KfQ0K
DQoNCmZ1bmN0aW9uIHNmbV92YWxpZGF0b3JfZW5hYmxlX2ZvY3VzKGVuYWJs
ZSkNCnsNCiAgICBkb2N1bWVudC5zZXRfZm9jdXNfb25lcnJvciA9IGVuYWJs
ZTsNCn0NCg0KZnVuY3Rpb24gYWRkX2FkZG5sX3ZmdW5jdGlvbigpDQp7DQog
ICAgIHZhciBwcm9jID0ge307DQogICAgIHByb2MuZnVuYyA9IGFyZ3VtZW50
c1swXTsNCiAgICAgcHJvYy5hcmd1bWVudHMgPSBbXTsNCg0KICAgICBmb3Io
dmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkNCiAgICAg
eyAgICAgICAgICANCiAgICAgICAgcHJvYy5hcmd1bWVudHMucHVzaChhcmd1
bWVudHNbaV0pOyAgICAgICANCiAgICAgfSAgICAgICAgICAgDQogICAgIHRo
aXMuZm9ybW9iai5hZGRubHZhbGlkYXRpb25zLnB1c2gocHJvYyk7ICANCn0N
Cg0KZnVuY3Rpb24gcnVuX2FkZG5sX3ZhbGlkYXRpb25zKCkNCnsNCiAgICB2
YXIgcmV0ID0gdHJ1ZTsNCiAgICBmb3IodmFyIGY9MDtmPHRoaXMuYWRkbmx2
YWxpZGF0aW9ucy5sZW5ndGg7ZisrKQ0KICAgIHsNCiAgICAgICAgdmFyIHBy
b2MgPSB0aGlzLmFkZG5sdmFsaWRhdGlvbnNbZl07DQogICAgICAgIHZhciBh
cmdzID0gcHJvYy5hcmd1bWVudHMgfHwgW107DQogICAgICAgIGlmKCFwcm9j
LmZ1bmMuYXBwbHkobnVsbCwgYXJncykpDQogICAgICAgIHsNCiAgICAgICAg
ICAgIHJldCA9IGZhbHNlOw0KICAgICAgICB9DQogICAgfQ0KICAgIHJldHVy
biByZXQ7DQp9DQoNCmZ1bmN0aW9uIHNmbV9zZXRfZm9jdXMob2JqSW5wdXQp
DQp7DQogICAgaWYoZG9jdW1lbnQuc2V0X2ZvY3VzX29uZXJyb3IpDQogICAg
ew0KICAgICAgICBpZighb2JqSW5wdXQuZGlzYWJsZWQgJiYgb2JqSW5wdXQu
dHlwZSAhPSAnaGlkZGVuJykNCiAgICAgICAgew0KICAgICAgICAgICAgb2Jq
SW5wdXQuZm9jdXMoKTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg0KZnVuY3Rp
b24gc2ZtX2VuYWJsZV9zaG93X21zZ3NfdG9nZXRoZXIoKQ0Kew0KICAgIHRo
aXMuc2hvd19lcnJvcnNfdG9nZXRoZXI9dHJ1ZTsNCiAgICB0aGlzLmZvcm1v
Ymouc2hvd19lcnJvcnNfdG9nZXRoZXI9dHJ1ZTsNCn0NCg0KZnVuY3Rpb24g
c2ZtX3ZhbGlkYXRvcl9tZXNzYWdlX2Rpc3BfcG9zKHBvcykNCnsNCiAgICB0
aGlzLmZvcm1vYmouZXJyb3JfZGlzcGxheV9sb2M9IHBvczsNCn0NCmZ1bmN0
aW9uIGNsZWFyX2FsbF92YWxpZGF0aW9ucygpDQp7DQoJZm9yKHZhciBpdHI9
MDtpdHIgPCB0aGlzLmZvcm1vYmouZWxlbWVudHMubGVuZ3RoO2l0cisrKQ0K
CXsNCgkJdGhpcy5mb3Jtb2JqLmVsZW1lbnRzW2l0cl0udmFsaWRhdGlvbnNl
dCA9IG51bGw7DQoJfQ0KfQ0KZnVuY3Rpb24gZm9ybV9zdWJtaXRfaGFuZGxl
cigpDQp7DQogICB2YXIgYlJldCA9IHRydWU7DQogICAgZG9jdW1lbnQuZXJy
b3JfZGlzcF9oYW5kbGVyLmNsZWFyX21zZ3MoKTsNCglmb3IodmFyIGl0cj0w
O2l0ciA8IHRoaXMuZWxlbWVudHMubGVuZ3RoO2l0cisrKQ0KCXsNCgkJaWYo
dGhpcy5lbGVtZW50c1tpdHJdLnZhbGlkYXRpb25zZXQgJiYNCgkgICAhdGhp
cy5lbGVtZW50c1tpdHJdLnZhbGlkYXRpb25zZXQudmFsaWRhdGUoKSkNCgkJ
ew0KCQkgIGJSZXQgPSBmYWxzZTsNCgkJfQ0KICAgICAgICBpZighYlJldCAm
JiAhdGhpcy5zaG93X2Vycm9yc190b2dldGhlcikNCiAgICAgICAgew0KICAg
ICAgICAgIGJyZWFrOw0KDQogICAgICAgIH0NCgl9DQoNCiAgICBpZih0aGlz
LnNob3dfZXJyb3JzX3RvZ2V0aGVyIHx8DQogICAgICBiUmV0ICYmICF0aGlz
LnNob3dfZXJyb3JzX3RvZ2V0aGVyKQ0KICAgICAgew0KICAgICAgICBpZigh
dGhpcy5ydW5BZGRubFZhbGlkYXRpb25zKCkpDQogICAgICAgIHsNCiAgICAg
ICAgICAgIGJSZXQgPSBmYWxzZTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAg
aWYoIWJSZXQpDQogICAgew0KICAgICAgZG9jdW1lbnQuZXJyb3JfZGlzcF9o
YW5kbGVyLkZpbmFsU2hvd01zZygpOw0KICAgICAgcmV0dXJuIGZhbHNlOw0K
ICAgIH0NCglyZXR1cm4gdHJ1ZTsNCn0NCg0KZnVuY3Rpb24gYWRkX3ZhbGlk
YXRpb24oaXRlbW5hbWUsZGVzY3JpcHRvcixlcnJzdHIpDQp7DQoJdmFyIGNv
bmRpdGlvbiA9IG51bGw7DQoJaWYoYXJndW1lbnRzLmxlbmd0aCA+IDMpDQoJ
ew0KCSBjb25kaXRpb24gPSBhcmd1bWVudHNbM107IA0KCX0NCglpZighdGhp
cy5mb3Jtb2JqKQ0KCXsNCgkJYWxlcnQoIkVycm9yOiBUaGUgZm9ybSBvYmpl
Y3QgaXMgbm90IHNldCBwcm9wZXJseSIpOw0KCQlyZXR1cm47DQoJfS8vaWYN
Cgl2YXIgaXRlbW9iaiA9IHRoaXMuZm9ybW9ialtpdGVtbmFtZV07DQoNCiAg
ICBpZihpdGVtb2JqLmxlbmd0aCAmJiBpc05hTihpdGVtb2JqLnNlbGVjdGVk
SW5kZXgpICkNCiAgICAvL2ZvciByYWRpbyBidXR0b247IGRvbid0IGRvIGZv
ciAnc2VsZWN0JyBpdGVtDQoJew0KCQlpdGVtb2JqID0gaXRlbW9ialswXTsN
Cgl9CQ0KCWlmKCFpdGVtb2JqKQ0KCXsNCgkJYWxlcnQoIkVycm9yOiBDb3Vs
ZG5vdCBnZXQgdGhlIGlucHV0IG9iamVjdCBuYW1lZDogIitpdGVtbmFtZSk7
DQoJCXJldHVybjsNCgl9DQoJaWYodHJ1ZSA9PSB0aGlzLnZhbGlkYXRlX29u
X2tpbGxmb2N1cykNCgl7DQoJICBpdGVtb2JqLm9uYmx1cj1oYW5kbGVfaXRl
bV9vbl9raWxsZm9jdXM7DQoJfQ0KCWlmKCFpdGVtb2JqLnZhbGlkYXRpb25z
ZXQpDQoJew0KCQlpdGVtb2JqLnZhbGlkYXRpb25zZXQgPSBuZXcgVmFsaWRh
dGlvblNldChpdGVtb2JqLHRoaXMuc2hvd19lcnJvcnNfdG9nZXRoZXIpOw0K
CX0NCglpdGVtb2JqLnZhbGlkYXRpb25zZXQuYWRkKGRlc2NyaXB0b3IsZXJy
c3RyLGNvbmRpdGlvbik7DQogICAgaXRlbW9iai52YWxpZGF0b3JvYmo9dGhp
czsNCn0NCg0KZnVuY3Rpb24gaGFuZGxlX2l0ZW1fb25fa2lsbGZvY3VzKCkN
CnsNCiAgICBpZih0aGlzLnZhbGlkYXRvcm9iai5kaXNhYmxlX3ZhbGlkYXRp
b25zID09IHRydWUpDQogICAgew0KICAgICAgICAvKg0KICAgICAgICAgICAg
VG8gYXZvaWQgcmVwZWF0ZWQgbG9vcGluZyBtZXNzYWdlIGJveGVzDQogICAg
ICAgICovDQogICAgICAgIHRoaXMudmFsaWRhdG9yb2JqLmRpc2FibGVfdmFs
aWRhdGlvbnMgPSBmYWxzZTsNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAg
IH0NCiAgICANCglpZihudWxsICE9IHRoaXMudmFsaWRhdGlvbnNldCkNCgl7
DQogICAgICAgIGRvY3VtZW50LmVycm9yX2Rpc3BfaGFuZGxlci5jbGVhcl9t
c2dzKCk7DQoJCWlmKGZhbHNlID09IHRoaXMudmFsaWRhdGlvbnNldC52YWxp
ZGF0ZSgpKQ0KCQl7DQogICAgICAgICAgICBkb2N1bWVudC5lcnJvcl9kaXNw
X2hhbmRsZXIuRmluYWxTaG93TXNnKCk7DQoJCQlyZXR1cm4gZmFsc2U7DQoJ
CX0NCgl9DQp9DQoNCmZ1bmN0aW9uIHZhbGlkYXRvcl9lbmFibGVfT1BFRCgp
DQp7DQogICAgZG9jdW1lbnQuZXJyb3JfZGlzcF9oYW5kbGVyLkVuYWJsZU9u
UGFnZURpc3BsYXkoZmFsc2UpOw0KfQ0KDQpmdW5jdGlvbiB2YWxpZGF0b3Jf
ZW5hYmxlX09QRURfU0IoKQ0Kew0KCWRvY3VtZW50LmVycm9yX2Rpc3BfaGFu
ZGxlci5FbmFibGVPblBhZ2VEaXNwbGF5KHRydWUpOw0KfQ0KDQpmdW5jdGlv
biBzZm1fRXJyb3JEaXNwbGF5SGFuZGxlcigpDQp7DQogIHRoaXMubXNnZGlz
cGxheSA9IG5ldyBBbGVydE1zZ0Rpc3BsYXllcigpOw0KICB0aGlzLkVuYWJs
ZU9uUGFnZURpc3BsYXk9IGVkaF9FbmFibGVPblBhZ2VEaXNwbGF5Ow0KICB0
aGlzLlNob3dNc2c9ZWRoX1Nob3dNc2c7DQogIHRoaXMuRmluYWxTaG93TXNn
PWVkaF9GaW5hbFNob3dNc2c7DQogIHRoaXMuYWxsX21zZ3M9bmV3IEFycmF5
KCk7DQogIHRoaXMuY2xlYXJfbXNncz1lZGhfY2xlYXJfbXNnczsNCn0NCg0K
ZnVuY3Rpb24gZWRoX2NsZWFyX21zZ3MoKQ0Kew0KICAgIHRoaXMubXNnZGlz
cGxheS5jbGVhcm1zZyh0aGlzLmFsbF9tc2dzKTsNCiAgICB0aGlzLmFsbF9t
c2dzID0gbmV3IEFycmF5KCk7DQp9DQoNCmZ1bmN0aW9uIGVkaF9GaW5hbFNo
b3dNc2coKQ0Kew0KICAgIGlmKHRoaXMuYWxsX21zZ3MubGVuZ3RoID09IDAp
eyByZXR1cm4gO30NCiAgICB0aGlzLm1zZ2Rpc3BsYXkuc2hvd21zZyh0aGlz
LmFsbF9tc2dzKTsNCn0NCg0KZnVuY3Rpb24gZWRoX0VuYWJsZU9uUGFnZURp
c3BsYXkoc2luZ2xlX2JveCkNCnsNCglpZih0cnVlID09IHNpbmdsZV9ib3gp
DQoJew0KCQl0aGlzLm1zZ2Rpc3BsYXkgPSBuZXcgU2luZ2xlQm94RXJyb3JE
aXNwbGF5KCk7DQoJfQ0KCWVsc2UNCgl7DQoJCXRoaXMubXNnZGlzcGxheSA9
IG5ldyBEaXZNc2dEaXNwbGF5ZXIoKTsJCQ0KCX0NCn0NCg0KZnVuY3Rpb24g
ZWRoX1Nob3dNc2cobXNnLGlucHV0X2VsZW1lbnQpDQp7DQogICB2YXIgb2Jq
bXNnID0gbmV3IEFycmF5KCk7DQogICBvYmptc2dbImlucHV0X2VsZW1lbnQi
XSA9IGlucHV0X2VsZW1lbnQ7DQogICBvYmptc2dbIm1zZyJdID0gIG1zZzsN
CiAgIHRoaXMuYWxsX21zZ3MucHVzaChvYmptc2cpOw0KfQ0KDQpmdW5jdGlv
biBBbGVydE1zZ0Rpc3BsYXllcigpDQp7DQogIHRoaXMuc2hvd21zZyA9IGFs
ZXJ0X3Nob3dtc2c7DQogIHRoaXMuY2xlYXJtc2c9YWxlcnRfY2xlYXJtc2c7
DQp9DQoNCmZ1bmN0aW9uIGFsZXJ0X2NsZWFybXNnKG1zZ3MpDQp7DQoNCn0N
Cg0KZnVuY3Rpb24gYWxlcnRfc2hvd21zZyhtc2dzKQ0Kew0KICAgIHZhciB3
aG9sZV9tc2c9IiI7DQogICAgdmFyIGZpcnN0X2VsbW50PW51bGw7DQogICAg
Zm9yKHZhciBtPTA7bSA8IG1zZ3MubGVuZ3RoO20rKykNCiAgICB7DQogICAg
ICAgIGlmKG51bGwgPT0gZmlyc3RfZWxtbnQpDQogICAgICAgIHsNCiAgICAg
ICAgICAgIGZpcnN0X2VsbW50ID0gbXNnc1ttXVsiaW5wdXRfZWxlbWVudCJd
Ow0KICAgICAgICB9DQogICAgICAgIHdob2xlX21zZyArPSBtc2dzW21dWyJt
c2ciXSArICJcbiI7DQogICAgfQ0KCQ0KICAgIGFsZXJ0KHdob2xlX21zZyk7
DQoNCiAgICBpZihudWxsICE9IGZpcnN0X2VsbW50KQ0KICAgIHsNCiAgICAg
ICAgc2ZtX3NldF9mb2N1cyhmaXJzdF9lbG1udCk7DQogICAgfQ0KfQ0KDQpm
dW5jdGlvbiBzZm1fc2hvd19lcnJvcl9tc2cobXNnLGlucHV0X2VsbXQpDQp7
DQogICAgZG9jdW1lbnQuZXJyb3JfZGlzcF9oYW5kbGVyLlNob3dNc2cobXNn
LGlucHV0X2VsbXQpOw0KfQ0KDQpmdW5jdGlvbiBTaW5nbGVCb3hFcnJvckRp
c3BsYXkoKQ0Kew0KIHRoaXMuc2hvd21zZz1zYl9kaXZfc2hvd21zZzsNCiB0
aGlzLmNsZWFybXNnPXNiX2Rpdl9jbGVhcm1zZzsNCn0NCg0KZnVuY3Rpb24g
c2JfZGl2X2NsZWFybXNnKG1zZ3MpDQp7DQoJdmFyIGRpdm5hbWUgPSBmb3Jt
X2Vycm9yX2Rpdl9uYW1lKG1zZ3MpOw0KCXNmbV9zaG93X2Rpdl9tc2coZGl2
bmFtZSwiIik7DQp9DQoNCmZ1bmN0aW9uIHNiX2Rpdl9zaG93bXNnKG1zZ3Mp
DQp7DQoJdmFyIHdob2xlX21zZz0iPHVsPlxuIjsNCglmb3IodmFyIG09MDtt
IDwgbXNncy5sZW5ndGg7bSsrKQ0KICAgIHsNCiAgICAgICAgd2hvbGVfbXNn
ICs9ICI8bGk+IiArIG1zZ3NbbV1bIm1zZyJdICsgIjwvbGk+XG4iOw0KICAg
IH0NCgl3aG9sZV9tc2cgKz0gIjwvdWw+IjsNCgl2YXIgZGl2bmFtZSA9IGZv
cm1fZXJyb3JfZGl2X25hbWUobXNncyk7DQogICAgdmFyIGFuY19uYW1lID0g
ZGl2bmFtZSsiX2xvYyI7DQogICAgd2hvbGVfbXNnID0gIjxhIG5hbWU9JyIr
YW5jX25hbWUrIicgPiIrd2hvbGVfbXNnOw0KDQoJc2ZtX3Nob3dfZGl2X21z
ZyhkaXZuYW1lLHdob2xlX21zZyk7DQoNCiAgICB3aW5kb3cubG9jYXRpb24u
aGFzaCA9IGFuY19uYW1lOw0KfQ0KDQpmdW5jdGlvbiBmb3JtX2Vycm9yX2Rp
dl9uYW1lKG1zZ3MpDQp7DQoJdmFyIGlucHV0X2VsZW1lbnQ9IG51bGw7DQoN
Cglmb3IodmFyIG0gaW4gbXNncykNCgl7DQoJIGlucHV0X2VsZW1lbnQgPSBt
c2dzW21dWyJpbnB1dF9lbGVtZW50Il07DQoJIGlmKGlucHV0X2VsZW1lbnQp
e2JyZWFrO30NCgl9DQoNCgl2YXIgZGl2bmFtZSA9IiI7DQoJaWYoaW5wdXRf
ZWxlbWVudCkNCgl7DQoJIGRpdm5hbWUgPSBpbnB1dF9lbGVtZW50LmZvcm0u
X3NmbV9mb3JtX25hbWUgKyAiX2Vycm9ybG9jIjsNCgl9DQoNCglyZXR1cm4g
ZGl2bmFtZTsNCn0NCg0KZnVuY3Rpb24gc2ZtX3Nob3dfZGl2X21zZyhkaXZu
YW1lLG1zZ3N0cmluZykNCnsNCglpZihkaXZuYW1lLmxlbmd0aDw9MCkgcmV0
dXJuIGZhbHNlOw0KDQoJaWYoZG9jdW1lbnQubGF5ZXJzKQ0KCXsNCgkJZGl2
bGF5ZXIgPSBkb2N1bWVudC5sYXllcnNbZGl2bmFtZV07DQogICAgICAgIGlm
KCFkaXZsYXllcil7cmV0dXJuO30NCgkJZGl2bGF5ZXIuZG9jdW1lbnQub3Bl
bigpOw0KCQlkaXZsYXllci5kb2N1bWVudC53cml0ZShtc2dzdHJpbmcpOw0K
CQlkaXZsYXllci5kb2N1bWVudC5jbG9zZSgpOw0KCX0NCgllbHNlDQoJaWYo
ZG9jdW1lbnQuYWxsKQ0KCXsNCgkJZGl2bGF5ZXIgPSBkb2N1bWVudC5hbGxb
ZGl2bmFtZV07DQogICAgICAgIGlmKCFkaXZsYXllcil7cmV0dXJuO30NCgkJ
ZGl2bGF5ZXIuaW5uZXJIVE1MPW1zZ3N0cmluZzsNCgl9DQoJZWxzZQ0KCWlm
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKQ0KCXsNCgkJZGl2bGF5ZXIgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChkaXZuYW1lKTsNCiAgICAgICAgaWYo
IWRpdmxheWVyKXtyZXR1cm47fQ0KCQlkaXZsYXllci5pbm5lckhUTUwgPW1z
Z3N0cmluZzsNCgl9DQoJZGl2bGF5ZXIuc3R5bGUudmlzaWJpbGl0eT0idmlz
aWJsZSI7CQ0KCXJldHVybiBmYWxzZTsNCn0NCg0KZnVuY3Rpb24gRGl2TXNn
RGlzcGxheWVyKCkNCnsNCiB0aGlzLnNob3dtc2c9ZGl2X3Nob3dtc2c7DQog
dGhpcy5jbGVhcm1zZz1kaXZfY2xlYXJtc2c7DQp9DQoNCmZ1bmN0aW9uIGRp
dl9jbGVhcm1zZyhtc2dzKQ0Kew0KICAgIGZvcih2YXIgbSBpbiBtc2dzKQ0K
ICAgIHsNCiAgICAgICAgdmFyIGRpdm5hbWUgPSBlbGVtZW50X2Rpdl9uYW1l
KG1zZ3NbbV1bImlucHV0X2VsZW1lbnQiXSk7DQogICAgICAgIHZhciBkaXZ4
eCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRpdm5hbWUpOw0KICAgICAg
ICBpZihkaXZ4eCkNCiAgICAgICAgew0KICAgICAgICAgICAgZGl2eHgucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZChkaXZ4eCk7DQogICAgICAgIH0NCiAgICB9
DQp9DQoNCmZ1bmN0aW9uIGVsZW1lbnRfZGl2X25hbWUoaW5wdXRfZWxlbWVu
dCkNCnsNCiAgdmFyIGRpdm5hbWUgPSBpbnB1dF9lbGVtZW50LmZvcm0uX3Nm
bV9mb3JtX25hbWUgKyAiXyIgKyANCiAgICAgICAgICAgICAgICAgICBpbnB1
dF9lbGVtZW50Lm5hbWUgKyAiX2Vycm9ybG9jIjsNCg0KICBkaXZuYW1lID0g
ZGl2bmFtZS5yZXBsYWNlKC9bXFtcXV0vZ2ksIiIpOw0KDQogIHJldHVybiBk
aXZuYW1lOw0KfQ0KDQpmdW5jdGlvbiBzZm1fZ2V0QWJzWChvYmopDQp7DQog
IHZhciBsZWZ0T2Zmc2V0ID0gMDsNCiAgaWYgKG9iai5vZmZzZXRQYXJlbnQp
DQogIHsNCiAgICAgICAgd2hpbGUgKG9iai5vZmZzZXRQYXJlbnQpDQogICAg
ICAgIHsNCiAgICAgICAgICAgICAgbGVmdE9mZnNldCArPSBvYmoub2Zmc2V0
TGVmdDsNCiAgICAgICAgICAgICAgb2JqID0gb2JqLm9mZnNldFBhcmVudDsN
CiAgICAgICAgfQ0KICB9DQogIGVsc2UgaWYgKG9iai54KSAvL2ZvciBOTjQN
CiAgew0KICAgICAgICBsZWZ0T2Zmc2V0ID0gb2JqLng7DQogIH0NCiAgcmV0
dXJuIGxlZnRPZmZzZXQ7DQp9DQoNCmZ1bmN0aW9uIHNmbV9nZXRBYnNZKG9i
aikNCnsNCiAgdmFyIHRvcE9mZnNldCA9IDA7DQogIGlmIChvYmoub2Zmc2V0
UGFyZW50KQ0KICB7DQogICAgICAgIHdoaWxlIChvYmoub2Zmc2V0UGFyZW50
KQ0KICAgICAgICB7DQogICAgICAgICAgICAgIHRvcE9mZnNldCArPSBvYmou
b2Zmc2V0VG9wOw0KICAgICAgICAgICAgICBvYmogPSBvYmoub2Zmc2V0UGFy
ZW50Ow0KICAgICAgICB9DQogIH0NCiAgZWxzZSBpZiAob2JqLnkpIC8vIGZv
ciBOTjQNCiAgew0KICAgICAgICB0b3BPZmZzZXQgPSBvYmoueTsNCiAgfQ0K
ICByZXR1cm4gdG9wT2Zmc2V0Ow0KfQ0KDQpmdW5jdGlvbiBkaXZfc2hvd21z
Zyhtc2dzKQ0Kew0KICAgIHZhciB3aG9sZV9tc2c7DQogICAgdmFyIGZpcnN0
X2VsbW50PW51bGw7DQoNCiAgICB0aGlzLmNsZWFybXNnKG1zZ3MpOw0KICAg
IGZvcih2YXIgbSBpbiBtc2dzKQ0KICAgIHsNCiAgICAgICAgaWYobnVsbCA9
PSBmaXJzdF9lbG1udCkNCiAgICAgICAgew0KICAgICAgICAgICAgZmlyc3Rf
ZWxtbnQgPSBtc2dzW21dWyJpbnB1dF9lbGVtZW50Il07DQogICAgICAgIH0N
CiAgICAgICAgdmFyIGRpdm5hbWUgPSBlbGVtZW50X2Rpdl9uYW1lKG1zZ3Nb
bV1bImlucHV0X2VsZW1lbnQiXSk7DQogICAgICAgIHNmbV9zaG93X2Zsb2F0
aW5nX2Rpdl9tc2coZGl2bmFtZSxtc2dzW21dWyJtc2ciXSxtc2dzW21dWyJp
bnB1dF9lbGVtZW50Il0pOw0KICAgIH0NCiAgICBpZihudWxsICE9IGZpcnN0
X2VsbW50KQ0KICAgIHsNCiAgICAgICAgc2ZtX3NldF9mb2N1cyhmaXJzdF9l
bG1udCk7DQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBzZm1fcmVtb3ZlTm9kZShu
b2RlaWQpDQp7DQoJdmFyIGRpdnh4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQobm9kZWlkKTsNCglkaXZ4eC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGRp
dnh4KTsNCn0NCmZ1bmN0aW9uIHNmbV9zaG93X2Zsb2F0aW5nX2Rpdl9tc2co
ZGl2bmFtZSxtc2dzdHJpbmcsaW5wdXRvYmopDQp7DQoJaWYoZGl2bmFtZS5s
ZW5ndGg8PTApIHJldHVybiBmYWxzZTsNCg0KICAgIHZhciBwb3BVcENvZGUg
PSAiPGRpdiBjbGFzcz0nc2ZtX2Zsb2F0X2Vycm9yX2JveCcgaWQ9JyIrZGl2
bmFtZSsiJyA+IisNCiAgICAgICAgIjx0YWJsZSBib3JkZXI9JzAnIGNlbGxz
cGFjaW5nPScwJyA+PHRyPjx0ZCBjbGFzcz0nc2ZtX2Zsb2F0X2JveF90ZCc+
IiArIG1zZ3N0cmluZyArICIgJm5ic3A7IDwvdGQ+ICIrDQogICAgICAgICI8
dGQgY2xhc3M9J3NmbV9jbG9zZV9ib3gnIHdpZHRoPScyMHB4JyBvbmNsaWNr
PSdzZm1fcmVtb3ZlTm9kZShcIiIrZGl2bmFtZSsiXCIpJz5YPC90ZD48L3Ry
PjwvdGFibGU+PC9kaXY+Ig0KDQogICAgdmFyIGRpdiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOyANCiAgICBkaXYuaW5uZXJIVE1MID0gcG9w
VXBDb2RlOyANCiAgICBpbnB1dG9iai5mb3JtLmFwcGVuZENoaWxkKGRpdik7
DQoNCiAgICB2YXIgcmVsX29iaiA9IGlucHV0b2JqOw0KDQogICAgaWYoaW5w
dXRvYmoucGFyZW50Tm9kZSAmJiBpbnB1dG9iai5wYXJlbnROb2RlLmNsYXNz
TmFtZSA9PSAnc2ZtX2VsZW1lbnRfY29udGFpbmVyJykNCiAgICB7DQogICAg
ICAgIHJlbF9vYmogPSBpbnB1dG9iai5wYXJlbnROb2RlOw0KICAgIH0NCiAg
ICBlbHNlDQogICAgaWYoaW5wdXRvYmoudHlwZSAmJiANCiAgICAgKGlucHV0
b2JqLnR5cGUgPT0nY2hlY2tib3gnfHxpbnB1dG9iai50eXBlID09ICdyYWRp
bycpICYmIA0KICAgICAgaW5wdXRvYmoucGFyZW50Tm9kZSkNCiAgICB7DQog
ICAgICAgIHJlbF9vYmogPSBpbnB1dG9iai5wYXJlbnROb2RlOw0KICAgIH0N
Cg0KICAgIHZhciBlcnJwb3N4ID0gc2ZtX2dldEFic1gocmVsX29iaik7DQoJ
dmFyIGVycnBvc3kgPSBzZm1fZ2V0QWJzWShyZWxfb2JqKTsNCg0KICAgIHZh
ciBkaXZ4eCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRpdm5hbWUpOw0K
DQogICAgaWYoaW5wdXRvYmouZm9ybS5lcnJvcl9kaXNwbGF5X2xvYyA9PSAn
dG9wJykNCiAgICB7DQogICAgICAgIGVycnBvc3kgLT0gZGl2eHgub2Zmc2V0
SGVpZ2h0Ow0KICAgICAgICBlcnJwb3N5ICs9IDI7DQogICAgICAgIGVycnBv
c3ggKz0gMTA7DQogICAgfQ0KICAgIGVsc2UNCiAgICBpZihpbnB1dG9iai5m
b3JtLmVycm9yX2Rpc3BsYXlfbG9jID09ICdyaWdodCcpDQogICAgew0KICAg
ICAgICB2YXIgb2Zmc2V0V2lkdGggID0gcmVsX29iai5vZmZzZXRXaWR0aDsN
CiAgICAgICAgdmFyIG9mZnNldEhlaWdodCA9IHJlbF9vYmoub2Zmc2V0SGVp
Z2h0Ow0KDQogICAgICAgIGVycnBvc3ggKz0gb2Zmc2V0V2lkdGg7DQogICAg
ICAgIGVycnBvc3ggKz0gNDsNCiAgICAgICAgDQogICAgICAgIGVycnBvc3kg
Kz0gKCBvZmZzZXRIZWlnaHQgLSBkaXZ4eC5vZmZzZXRIZWlnaHQpLzI7DQog
ICAgfQ0KICAgIGRpdnh4LnN0eWxlLnRvcCAgPSBlcnJwb3N5ICsgJ3B4JzsN
CiAgICBkaXZ4eC5zdHlsZS5sZWZ0ID0gZXJycG9zeCArICdweCc7IA0KICAg
IGRpdnh4LmhhbmRsZXJvYmogPSBuZXcgU0ZNX01vdmVhYmxlUG9wdXAoZGl2
eHgpOw0KDQoJcmV0dXJuIGZhbHNlOw0KfQ0KDQpmdW5jdGlvbiBWYWxpZGF0
aW9uRGVzYyhpbnB1dGl0ZW0sZGVzYyxlcnJvcixjb25kaXRpb24pDQp7DQog
ICAgdGhpcy5kZXNjPWRlc2M7DQoJdGhpcy5lcnJvcj1lcnJvcjsNCgl0aGlz
Lml0ZW1vYmogPSBpbnB1dGl0ZW07DQoJdGhpcy5jb25kaXRpb24gPSBjb25k
aXRpb247DQoJdGhpcy52YWxpZGF0ZT12ZGVzY192YWxpZGF0ZTsNCn0NCmZ1
bmN0aW9uIHZkZXNjX3ZhbGlkYXRlKCkNCnsNCglpZih0aGlzLmNvbmRpdGlv
biAhPSBudWxsICkNCgl7DQoJCWlmKCFldmFsKHRoaXMuY29uZGl0aW9uKSkN
CgkJew0KCQkJcmV0dXJuIHRydWU7DQoJCX0NCgl9DQoJaWYoIXZhbGlkYXRl
SW5wdXQodGhpcy5kZXNjLHRoaXMuaXRlbW9iaix0aGlzLmVycm9yKSkNCgl7
DQogICAgICAgdGhpcy5pdGVtb2JqLnZhbGlkYXRvcm9iai5kaXNhYmxlX3Zh
bGlkYXRpb25zPXRydWU7DQoJCXNmbV9zZXRfZm9jdXModGhpcy5pdGVtb2Jq
KTsNCgkgICByZXR1cm4gZmFsc2U7DQoJfQ0KCQ0KCXJldHVybiB0cnVlOw0K
fQ0KDQpmdW5jdGlvbiBWYWxpZGF0aW9uU2V0KGlucHV0aXRlbSxtc2dzX3Rv
Z2V0aGVyKQ0Kew0KICAgIHRoaXMudlNldD1uZXcgQXJyYXkoKTsNCgl0aGlz
LmFkZD0gYWRkX3ZhbGlkYXRpb25kZXNjOw0KCXRoaXMudmFsaWRhdGU9IHZz
ZXRfdmFsaWRhdGU7DQoJdGhpcy5pdGVtb2JqID0gaW5wdXRpdGVtOw0KICAg
IHRoaXMubXNnc190b2dldGhlciA9IG1zZ3NfdG9nZXRoZXI7DQp9DQoNCmZ1
bmN0aW9uIGFkZF92YWxpZGF0aW9uZGVzYyhkZXNjLGVycm9yLGNvbmRpdGlv
bikNCnsNCiAgdGhpcy52U2V0W3RoaXMudlNldC5sZW5ndGhdPSANCiAgbmV3
IFZhbGlkYXRpb25EZXNjKHRoaXMuaXRlbW9iaixkZXNjLGVycm9yLGNvbmRp
dGlvbik7DQp9DQoNCmZ1bmN0aW9uIHZzZXRfdmFsaWRhdGUoKQ0Kew0KICAg
IHZhciBiUmV0ID0gdHJ1ZTsNCiAgICBmb3IodmFyIGl0cj0wO2l0cjx0aGlz
LnZTZXQubGVuZ3RoO2l0cisrKQ0KICAgIHsNCiAgICAgICAgYlJldCA9IGJS
ZXQgJiYgdGhpcy52U2V0W2l0cl0udmFsaWRhdGUoKTsNCiAgICAgICAgaWYo
IWJSZXQgJiYgIXRoaXMubXNnc190b2dldGhlcikNCiAgICAgICAgew0KICAg
ICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCiAgICB9DQogICAgcmV0dXJu
IGJSZXQ7DQp9DQovKiAgY2hlY2tzIHRoZSB2YWxpZGl0eSBvZiBhbiBlbWFp
bCBhZGRyZXNzIGVudGVyZWQgDQoqICAgcmV0dXJucyB0cnVlIG9yIGZhbHNl
IA0KKi8gDQpmdW5jdGlvbiB2YWxpZGF0ZUVtYWlsKGVtYWlsKQ0Kew0KICAg
IHZhciBzcGxpdHRlZCA9IGVtYWlsLm1hdGNoKCJeKC4rKUAoLispJCIpOw0K
ICAgIGlmKHNwbGl0dGVkID09IG51bGwpIHJldHVybiBmYWxzZTsNCiAgICBp
ZihzcGxpdHRlZFsxXSAhPSBudWxsICkNCiAgICB7DQogICAgICB2YXIgcmVn
ZXhwX3VzZXI9L15cIj9bXHctX1wuXSpcIj8kLzsNCiAgICAgIGlmKHNwbGl0
dGVkWzFdLm1hdGNoKHJlZ2V4cF91c2VyKSA9PSBudWxsKSByZXR1cm4gZmFs
c2U7DQogICAgfQ0KICAgIGlmKHNwbGl0dGVkWzJdICE9IG51bGwpDQogICAg
ew0KICAgICAgdmFyIHJlZ2V4cF9kb21haW49L15bXHctXC5dKlwuW0EtWmEt
el17Miw0fSQvOw0KICAgICAgaWYoc3BsaXR0ZWRbMl0ubWF0Y2gocmVnZXhw
X2RvbWFpbikgPT0gbnVsbCkgDQogICAgICB7DQoJICAgIHZhciByZWdleHBf
aXAgPS9eXFtcZHsxLDN9XC5cZHsxLDN9XC5cZHsxLDN9XC5cZHsxLDN9XF0k
LzsNCgkgICAgaWYoc3BsaXR0ZWRbMl0ubWF0Y2gocmVnZXhwX2lwKSA9PSBu
dWxsKSByZXR1cm4gZmFsc2U7DQogICAgICB9Ly8gaWYNCiAgICAgIHJldHVy
biB0cnVlOw0KICAgIH0NCnJldHVybiBmYWxzZTsNCn0NCg0KZnVuY3Rpb24g
VGVzdENvbXBhcmlzb24ob2JqVmFsdWUsc3RyQ29tcGFyZUVsZW1lbnQsc3Ry
dmFsaWRhdG9yLHN0ckVycm9yKQ0Kew0KICAgdmFyIGJSZXQ9dHJ1ZTsNCiAg
IHZhciBvYmpDb21wYXJlPW51bGw7DQogICBpZighb2JqVmFsdWUuZm9ybSkN
CiAgIHsNCiAgICAgIHNmbV9zaG93X2Vycm9yX21zZygiRXJyb3I6IE5vIEZv
cm0gb2JqZWN0ISIsb2JqVmFsdWUpOw0KCSAgcmV0dXJuIGZhbHNlDQogICB9
DQogICBvYmpDb21wYXJlID0gb2JqVmFsdWUuZm9ybS5lbGVtZW50c1tzdHJD
b21wYXJlRWxlbWVudF07DQogICBpZighb2JqQ29tcGFyZSkNCiAgIHsNCiAg
ICAgc2ZtX3Nob3dfZXJyb3JfbXNnKCJFcnJvcjogRWxlbWVudCB3aXRoIG5h
bWUiK3N0ckNvbXBhcmVFbGVtZW50KyIgbm90IGZvdW5kICEiLG9ialZhbHVl
KTsNCiAgICAgcmV0dXJuIGZhbHNlOw0KICAgfQ0KDQogICB2YXIgb2JqdmFs
X3ZhbHVlID0gb2JqVmFsdWUudmFsdWU7DQogICB2YXIgb2JqY29tcF92YWx1
ZSA9IG9iakNvbXBhcmUudmFsdWU7DQogICANCiAgIGlmKHN0cnZhbGlkYXRv
ciAhPSAiZXFlbG1udCIgJiYNCiAgIAkgIHN0cnZhbGlkYXRvciAhPSAibmVl
bG1udCIpDQogICB7DQogICAgICAgIG9ianZhbF92YWx1ZSA9IG9ianZhbF92
YWx1ZS5yZXBsYWNlKC9cLC9nLCIiKTsNCiAgICAgICAgb2JqY29tcF92YWx1
ZSA9IG9iamNvbXBfdmFsdWUucmVwbGFjZSgvXCwvZywiIik7DQoNCiAgICAg
ICAgaWYoaXNOYU4ob2JqdmFsX3ZhbHVlKSkgDQogICAgICAgIHsgDQogICAg
ICAgICAgICBzZm1fc2hvd19lcnJvcl9tc2cob2JqVmFsdWUubmFtZSsiOiBT
aG91bGQgYmUgYSBudW1iZXIgIixvYmpWYWx1ZSk7IA0KICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOyANCiAgICAgICAgfS8vaWYgDQogICAgICAgIGlmKGlz
TmFOKG9iamNvbXBfdmFsdWUpKSANCiAgICAgICAgeyANCiAgICAgICAgICAg
IHNmbV9zaG93X2Vycm9yX21zZyhvYmpDb21wYXJlLm5hbWUrIjogU2hvdWxk
IGJlIGEgbnVtYmVyICIsb2JqQ29tcGFyZSk7IA0KICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOyANCiAgICAgICAgfS8vaWYgCSAgDQogICB9Ly9pZg0KICAg
dmFyIGNtcHN0cj0iIjsNCiAgIHN3aXRjaChzdHJ2YWxpZGF0b3IpDQogICB7
DQogICAgICAgY2FzZSAiZXFlbG1udCI6IA0KCQkJew0KCQkJICAgaWYob2Jq
dmFsX3ZhbHVlICE9IG9iamNvbXBfdmFsdWUpDQoJCQkgICB7DQogCSAJCSAg
ICAgIGNtcHN0ciA9ICIgc2hvdWxkIGJlIGVxdWFsIHRvICI7DQoJCQkgICAg
ICBiUmV0ID0gZmFsc2U7DQoJCQkgICB9Ly9pZg0KCQkJICAgYnJlYWs7DQoJ
CQl9Ly9jYXNlDQoJCWNhc2UgImx0ZWxtbnQiOg0KCQkJew0KCQkJaWYoZXZh
bChvYmp2YWxfdmFsdWUpID49IGV2YWwob2JqY29tcF92YWx1ZSkpIA0KCQkJ
CXsNCgkJCSAgICAgICBjbXBzdHIgPSAgIiBzaG91bGQgYmUgbGVzcyB0aGFu
ICI7IA0KCQkJICAgICAgIGJSZXQgPSBmYWxzZTsJCQkJCQ0KCQkJCX0NCgkJ
CSAgYnJlYWs7DQoJCQl9Ly9jYXNlDQoJCWNhc2UgImxlZWxtbnQiOg0KCQkJ
ew0KCQkJCWlmKGV2YWwob2JqdmFsX3ZhbHVlKSA+ICBldmFsKG9iamNvbXBf
dmFsdWUpKSANCgkJCQl7DQoJCQkgICAgICAgY21wc3RyID0gICIgc2hvdWxk
IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byI7IA0KCQkJICAgICAgIGJSZXQg
PSBmYWxzZTsJCQkJCQ0KCQkJCX0NCgkJCSAgYnJlYWs7DQoJCQl9Ly9jYXNl
CQkNCgkJY2FzZSAiZ3RlbG1udCI6DQoJCQl7DQoJCQkJaWYoZXZhbChvYmp2
YWxfdmFsdWUpIDw9ICBldmFsKG9iamNvbXBfdmFsdWUpKSANCgkJCQl7DQoJ
CQkgICAgICAgY21wc3RyID0gICIgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiI7
IA0KCQkJICAgICAgIGJSZXQgPSBmYWxzZTsJCQkJCQ0KCQkJCX0NCgkJCSAg
YnJlYWs7DQoJCQl9Ly9jYXNlDQoJCWNhc2UgImdlZWxtbnQiOg0KCQkJew0K
CQkJCWlmKGV2YWwob2JqdmFsX3ZhbHVlKSA8IGV2YWwob2JqY29tcF92YWx1
ZSkpIA0KCQkJCXsNCgkJCSAgICAgICBjbXBzdHIgPSAgIiBzaG91bGQgYmUg
Z3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIjsgDQoJCQkgICAgICAgYlJldCA9
IGZhbHNlOwkJCQkJDQoJCQkJfQ0KCQkJICBicmVhazsNCgkJCX0vL2Nhc2UN
CgkJY2FzZSAibmVlbG1udCI6DQoJCQl7DQoJCQkgICBpZihvYmp2YWxfdmFs
dWUubGVuZ3RoID4gMCAmJg0KCQkJICAgICBvYmpjb21wX3ZhbHVlLmxlbmd0
aCA+IDAgJiYNCgkJCSAgICAgb2JqdmFsX3ZhbHVlID09IG9iamNvbXBfdmFs
dWUpDQoJCQkgICB7DQogCSAJCSAgICAgIGNtcHN0ciA9ICIgc2hvdWxkIGJl
IGRpZmZlcmVudCBmcm9tICI7DQoJCQkgICAgICBiUmV0ID0gZmFsc2U7DQoJ
CQkgICB9Ly9pZg0KCQkJICAgYnJlYWs7CQkJDQoJCQl9CQkJDQogICB9Ly9z
d2l0Y2gNCiAgIGlmKGJSZXQ9PWZhbHNlKQ0KICAgew0KICAgICAgaWYoIXN0
ckVycm9yIHx8IHN0ckVycm9yLmxlbmd0aD09MCkNCgkgIHsNCgkgICAgc3Ry
RXJyb3IgPSBvYmpWYWx1ZS5uYW1lICsgY21wc3RyICsgb2JqY29tcF92YWx1
ZTsgDQoJICB9Ly9pZg0KCSAgc2ZtX3Nob3dfZXJyb3JfbXNnKHN0ckVycm9y
LG9ialZhbHVlKTsNCiAgIH0vL2lmDQogICByZXR1cm4gYlJldDsNCn0NCmZ1
bmN0aW9uIFRlc3RTZWxNaW4ob2JqVmFsdWUsc3RyTWluU2VsLHN0ckVycm9y
KQ0Kew0KICAgIHZhciBicmV0ID0gdHJ1ZTsNCgl2YXIgb2JqY2hlY2sgPSBv
YmpWYWx1ZS5mb3JtLmVsZW1lbnRzW29ialZhbHVlLm5hbWVdOw0KCXZhciBj
aGtjb3VudCA9MDsNCglpZihvYmpjaGVjay5sZW5ndGgpDQoJew0KCQlmb3Io
dmFyIGM9MDtjIDwgb2JqY2hlY2subGVuZ3RoO2MrKykNCgkJew0KCQkgICBp
ZihvYmpjaGVja1tjXS5jaGVja2VkID09ICIxIikNCgkJICAgew0KCQkgICAg
IGNoa2NvdW50Kys7DQoJCSAgIH0vL2lmDQoJCX0vL2Zvcg0KCX0NCgllbHNl
DQoJew0KCSAgY2hrY291bnQgPSAob2JqY2hlY2suY2hlY2tlZCA9PSAiMSIp
PzE6MDsNCgl9DQoJdmFyIG1pbnNlbCA9IGV2YWwoc3RyTWluU2VsKTsNCglp
ZihjaGtjb3VudCA8IG1pbnNlbCkNCgl7DQoJCWlmKCFzdHJFcnJvciB8fCBz
dHJFcnJvci5sZW5ndGggPT0wKSANCgkJeyANCgkJCXN0ckVycm9yID0gIlBs
ZWFzZSBTZWxlY3QgYXRsZWFzdCIrbWluc2VsKyIgY2hlY2sgYm94ZXMgZm9y
IitvYmpWYWx1ZS5uYW1lOyAgDQoJCX0vL2lmICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
DQoJCXNmbV9zaG93X2Vycm9yX21zZyhzdHJFcnJvcixvYmpWYWx1ZSk7IA0K
CQlicmV0ID0gZmFsc2U7DQoJfQ0KCXJldHVybiBicmV0Ow0KfQ0KDQpmdW5j
dGlvbiBUZXN0U2VsTWF4KG9ialZhbHVlLHN0ck1heFNlbCxzdHJFcnJvcikN
CnsNCiAgICB2YXIgYnJldCA9IHRydWU7DQoJdmFyIG9iamNoZWNrID0gb2Jq
VmFsdWUuZm9ybS5lbGVtZW50c1tvYmpWYWx1ZS5uYW1lXTsNCgl2YXIgY2hr
Y291bnQgPTA7DQoJaWYob2JqY2hlY2subGVuZ3RoKQ0KCXsNCgkJZm9yKHZh
ciBjPTA7YyA8IG9iamNoZWNrLmxlbmd0aDtjKyspDQoJCXsNCgkJICAgaWYo
b2JqY2hlY2tbY10uY2hlY2tlZCA9PSAiMSIpDQoJCSAgIHsNCgkJICAgICBj
aGtjb3VudCsrOw0KCQkgICB9Ly9pZg0KCQl9Ly9mb3INCgl9DQoJZWxzZQ0K
CXsNCgkgIGNoa2NvdW50ID0gKG9iamNoZWNrLmNoZWNrZWQgPT0gIjEiKT8x
OjA7DQoJfQ0KCXZhciBtYXhzZWwgPSBldmFsKHN0ck1heFNlbCk7DQoJaWYo
Y2hrY291bnQgPiBtYXhzZWwpDQoJew0KCQlpZighc3RyRXJyb3IgfHwgc3Ry
RXJyb3IubGVuZ3RoID09MCkgDQoJCXsgDQoJCQlzdHJFcnJvciA9ICJQbGVh
c2UgU2VsZWN0IGF0bW9zdCAiK21heHNlbCsiIGNoZWNrIGJveGVzIGZvciIr
b2JqVmFsdWUubmFtZTsgIA0KCQl9Ly9pZiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0K
CQlzZm1fc2hvd19lcnJvcl9tc2coc3RyRXJyb3Isb2JqVmFsdWUpOyANCgkJ
YnJldCA9IGZhbHNlOw0KCX0NCglyZXR1cm4gYnJldDsNCn0NCmZ1bmN0aW9u
IElzQ2hlY2tTZWxlY3RlZChvYmpWYWx1ZSxjaGtWYWx1ZSkNCnsNCiAgICB2
YXIgc2VsZWN0ZWQ9ZmFsc2U7DQoJdmFyIG9iamNoZWNrID0gb2JqVmFsdWUu
Zm9ybS5lbGVtZW50c1tvYmpWYWx1ZS5uYW1lXTsNCiAgICBpZihvYmpjaGVj
ay5sZW5ndGgpDQoJew0KCQl2YXIgaWR4Y2hrPS0xOw0KCQlmb3IodmFyIGM9
MDtjIDwgb2JqY2hlY2subGVuZ3RoO2MrKykNCgkJew0KCQkgICBpZihvYmpj
aGVja1tjXS52YWx1ZSA9PSBjaGtWYWx1ZSkNCgkJICAgew0KCQkgICAgIGlk
eGNoaz1jOw0KCQkJIGJyZWFrOw0KCQkgICB9Ly9pZg0KCQl9Ly9mb3INCgkJ
aWYoaWR4Y2hrPj0gMCkNCgkJew0KCQkgIGlmKG9iamNoZWNrW2lkeGNoa10u
Y2hlY2tlZD09IjEiKQ0KCQkgIHsNCgkJICAgIHNlbGVjdGVkPXRydWU7DQoJ
CSAgfQ0KCQl9Ly9pZg0KCX0NCgllbHNlDQoJew0KCQlpZihvYmpWYWx1ZS5j
aGVja2VkID09ICIxIikNCgkJew0KCQkJc2VsZWN0ZWQ9dHJ1ZTsNCgkJfS8v
aWYNCgl9Ly9lbHNlCQ0KDQoJcmV0dXJuIHNlbGVjdGVkOw0KfQ0KDQpmdW5j
dGlvbiBUZXN0RG9udFNlbGVjdENoayhvYmpWYWx1ZSxjaGtWYWx1ZSxzdHJF
cnJvcikNCnsNCgl2YXIgcGFzcyA9IHRydWU7DQoJcGFzcyA9IElzQ2hlY2tT
ZWxlY3RlZChvYmpWYWx1ZSxjaGtWYWx1ZSk/ZmFsc2U6dHJ1ZTsNCg0KCWlm
KHBhc3M9PWZhbHNlKQ0KCXsNCiAgICAgaWYoIXN0ckVycm9yIHx8IHN0ckVy
cm9yLmxlbmd0aCA9PTApIA0KICAgICAgICB7IA0KICAgICAgICAJc3RyRXJy
b3IgPSAiQ2FuJ3QgUHJvY2VlZCBhcyB5b3Ugc2VsZWN0ZWQgIitvYmpWYWx1
ZS5uYW1lOyAgDQogICAgICAgIH0vL2lmCQkJICANCgkgIHNmbV9zaG93X2Vy
cm9yX21zZyhzdHJFcnJvcixvYmpWYWx1ZSk7DQoJICANCgl9DQogICAgcmV0
dXJuIHBhc3M7DQp9DQoNCmZ1bmN0aW9uIFRlc3RTaG91bGRTZWxlY3RDaGso
b2JqVmFsdWUsY2hrVmFsdWUsc3RyRXJyb3IpDQp7DQoJdmFyIHBhc3MgPSB0
cnVlOw0KDQoJcGFzcyA9IElzQ2hlY2tTZWxlY3RlZChvYmpWYWx1ZSxjaGtW
YWx1ZSk/dHJ1ZTpmYWxzZTsNCg0KCWlmKHBhc3M9PWZhbHNlKQ0KCXsNCiAg
ICAgaWYoIXN0ckVycm9yIHx8IHN0ckVycm9yLmxlbmd0aCA9PTApIA0KICAg
ICAgICB7IA0KICAgICAgICAJc3RyRXJyb3IgPSAiWW91IHNob3VsZCBzZWxl
Y3QiK29ialZhbHVlLm5hbWU7ICANCiAgICAgICAgfS8vaWYJCQkgIA0KCSAg
c2ZtX3Nob3dfZXJyb3JfbXNnKHN0ckVycm9yLG9ialZhbHVlKTsNCgkgIA0K
CX0NCiAgICByZXR1cm4gcGFzczsNCn0NCg0KZnVuY3Rpb24gVGVzdFJlcXVp
cmVkSW5wdXQob2JqVmFsdWUsc3RyRXJyb3IpDQp7DQogdmFyIHJldCA9IHRy
dWU7DQogICAgaWYoVldaX0lzRW1wdHkob2JqVmFsdWUudmFsdWUpKSANCiAg
ICB7IA0KICAgICAgIHJldD1mYWxzZTsNCiAgICB9Ly9pZiANCiAgICBlbHNl
IA0KICAgIGlmKG9ialZhbHVlLmdldGNhbCAmJiAhb2JqVmFsdWUuZ2V0Y2Fs
KCkpDQogICAgew0KICAgICAgICByZXQ9ZmFsc2U7IA0KICAgIH0NCg0KICAg
IGlmKCFyZXQpDQogICAgew0KICAgICAgIGlmKCFzdHJFcnJvciB8fCBzdHJF
cnJvci5sZW5ndGggPT0wKSANCiAgICAgICB7IA0KICAgICAgICAgc3RyRXJy
b3IgPSBvYmpWYWx1ZS5uYW1lICsgIiA6IFJlcXVpcmVkIEZpZWxkIjsgDQog
ICAgICAgfS8vaWYgDQogICAgICAgc2ZtX3Nob3dfZXJyb3JfbXNnKHN0ckVy
cm9yLG9ialZhbHVlKTsNCiAgICB9DQpyZXR1cm4gcmV0Ow0KfQ0KZnVuY3Rp
b24gVGVzdEZpbGVFeHRlbnNpb24ob2JqVmFsdWUsY21kdmFsdWUsc3RyRXJy
b3IpDQp7DQogICAgdmFyIHJldD1mYWxzZTsNCiAgICB2YXIgZm91bmQ9ZmFs
c2U7DQoNCiAgICBpZihvYmpWYWx1ZS52YWx1ZS5sZW5ndGggPD0gMCkNCiAg
ICB7Ly9UaGUgJ3JlcXVpcmVkJyB2YWxpZGF0aW9uIGlzIG5vdCBkb25lIGhl
cmUNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgdmFyIGV4
dG5zID0gY21kdmFsdWUuc3BsaXQoIjsiKTsNCiAgICBmb3IodmFyIGk9MDtp
IDwgZXh0bnMubGVuZ3RoO2krKykNCiAgICB7DQogICAgICAgIGV4dCA9IG9i
alZhbHVlLnZhbHVlLnN1YnN0cihvYmpWYWx1ZS52YWx1ZS5sZW5ndGggLSBl
eHRuc1tpXS5sZW5ndGgsZXh0bnNbaV0ubGVuZ3RoKTsNCiAgICAgICAgZXh0
ID0gZXh0LnRvTG93ZXJDYXNlKCk7DQogICAgICAgIGlmKGV4dCA9PSBleHRu
c1tpXSkNCiAgICAgICAgew0KICAgICAgICAgICAgZm91bmQ9dHJ1ZTticmVh
azsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZighZm91bmQpDQogICAgew0K
ICAgICAgIGlmKCFzdHJFcnJvciB8fCBzdHJFcnJvci5sZW5ndGggPT0wKSAN
CiAgICAgICB7IA0KICAgICAgICAgc3RyRXJyb3IgPSBvYmpWYWx1ZS5uYW1l
ICsgIiBhbGxvd2VkIGZpbGUgZXh0ZW5zaW9ucyBhcmU6ICIrY21kdmFsdWU7
IA0KICAgICAgIH0vL2lmIA0KICAgICAgIHNmbV9zaG93X2Vycm9yX21zZyhz
dHJFcnJvcixvYmpWYWx1ZSk7IA0KICAgICAgIHJldD1mYWxzZTsgICAgICAg
IA0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAgICByZXQ9dHJ1ZTsN
CiAgICB9DQogICAgcmV0dXJuIHJldDsNCn0NCmZ1bmN0aW9uIFRlc3RNYXhM
ZW4ob2JqVmFsdWUsc3RyTWF4TGVuLHN0ckVycm9yKQ0Kew0KIHZhciByZXQg
PSB0cnVlOw0KICAgIGlmKGV2YWwob2JqVmFsdWUudmFsdWUubGVuZ3RoKSA+
IGV2YWwoc3RyTWF4TGVuKSkgDQogICAgeyANCiAgICAgIGlmKCFzdHJFcnJv
ciB8fCBzdHJFcnJvci5sZW5ndGggPT0wKSANCiAgICAgIHsgDQogICAgICAg
IHN0ckVycm9yID0gb2JqVmFsdWUubmFtZSArICIgOiAiKyBzdHJNYXhMZW4g
KyIgY2hhcmFjdGVycyBtYXhpbXVtICI7IA0KICAgICAgfS8vaWYgDQogICAg
ICBzZm1fc2hvd19lcnJvcl9tc2coc3RyRXJyb3Isb2JqVmFsdWUpOyANCiAg
ICAgIHJldCA9IGZhbHNlOyANCiAgICB9Ly9pZiANCnJldHVybiByZXQ7DQp9
DQoNCmZ1bmN0aW9uIFRlc3RNaW5MZW4ob2JqVmFsdWUsc3RyTWluTGVuLHN0
ckVycm9yKQ0Kew0KIHZhciByZXQgPSB0cnVlOw0KICAgIGlmKGV2YWwob2Jq
VmFsdWUudmFsdWUubGVuZ3RoKSA8ICBldmFsKHN0ck1pbkxlbikpIA0KICAg
IHsgDQogICAgICBpZighc3RyRXJyb3IgfHwgc3RyRXJyb3IubGVuZ3RoID09
MCkgDQogICAgICB7IA0KICAgICAgICBzdHJFcnJvciA9IG9ialZhbHVlLm5h
bWUgKyAiIDogIiArIHN0ck1pbkxlbiArICIgY2hhcmFjdGVycyBtaW5pbXVt
ICAiOyANCiAgICAgIH0vL2lmICAgICAgICAgICAgICAgDQogICAgICBzZm1f
c2hvd19lcnJvcl9tc2coc3RyRXJyb3Isb2JqVmFsdWUpOyANCiAgICAgIHJl
dCA9IGZhbHNlOyAgIA0KICAgIH0vL2lmIA0KcmV0dXJuIHJldDsNCn0NCg0K
ZnVuY3Rpb24gVGVzdElucHV0VHlwZShvYmpWYWx1ZSxzdHJSZWdFeHAsc3Ry
RXJyb3Isc3RyRGVmYXVsdEVycm9yKQ0Kew0KICAgdmFyIHJldCA9IHRydWU7
DQoNCiAgICB2YXIgY2hhcnBvcyA9IG9ialZhbHVlLnZhbHVlLnNlYXJjaChz
dHJSZWdFeHApOyANCiAgICBpZihvYmpWYWx1ZS52YWx1ZS5sZW5ndGggPiAw
ICYmICBjaGFycG9zID49IDApIA0KICAgIHsgDQogICAgIGlmKCFzdHJFcnJv
ciB8fCBzdHJFcnJvci5sZW5ndGggPT0wKSANCiAgICAgIHsgDQogICAgICAg
IHN0ckVycm9yID0gc3RyRGVmYXVsdEVycm9yOw0KICAgICAgfS8vaWYgDQog
ICAgICBzZm1fc2hvd19lcnJvcl9tc2coc3RyRXJyb3Isb2JqVmFsdWUpOyAN
CiAgICAgIHJldCA9IGZhbHNlOyANCiAgICB9Ly9pZiANCiByZXR1cm4gcmV0
Ow0KfQ0KDQpmdW5jdGlvbiBUZXN0RW1haWwob2JqVmFsdWUsc3RyRXJyb3Ip
DQp7DQp2YXIgcmV0ID0gdHJ1ZTsNCiAgICAgaWYob2JqVmFsdWUudmFsdWUu
bGVuZ3RoID4gMCAmJiAhdmFsaWRhdGVFbWFpbChvYmpWYWx1ZS52YWx1ZSkJ
ICkgDQogICAgIHsgDQogICAgICAgaWYoIXN0ckVycm9yIHx8IHN0ckVycm9y
Lmxlbmd0aCA9PTApIA0KICAgICAgIHsgDQogICAgICAgICAgc3RyRXJyb3Ig
PSBvYmpWYWx1ZS5uYW1lKyI6IEVudGVyIGEgdmFsaWQgRW1haWwgYWRkcmVz
cyAiOyANCiAgICAgICB9Ly9pZiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgc2ZtX3Nob3dfZXJyb3Jf
bXNnKHN0ckVycm9yLG9ialZhbHVlKTsgDQogICAgICAgcmV0ID0gZmFsc2U7
IA0KICAgICB9Ly9pZiANCnJldHVybiByZXQ7DQp9DQoNCmZ1bmN0aW9uIFRl
c3RMZXNzVGhhbihvYmpWYWx1ZSxzdHJMZXNzVGhhbixzdHJFcnJvcikNCnsN
CnZhciByZXQgPSB0cnVlOw0KICAgICAgdmFyIG9ial92YWx1ZSA9IG9ialZh
bHVlLnZhbHVlLnJlcGxhY2UoL1wsL2csIiIpOw0KICAgICAgc3RyTGVzc1Ro
YW4gPSBzdHJMZXNzVGhhbi5yZXBsYWNlKC9cLC9nLCIiKTsNCg0KCSAgaWYo
aXNOYU4ob2JqX3ZhbHVlKSkgDQoJICB7IA0KCSAgICBzZm1fc2hvd19lcnJv
cl9tc2cob2JqVmFsdWUubmFtZSArIjogU2hvdWxkIGJlIGEgbnVtYmVyICIs
b2JqVmFsdWUpOyANCgkgICAgcmV0ID0gZmFsc2U7IA0KCSAgfS8vaWYgDQoJ
ICBlbHNlDQoJICBpZihldmFsKG9ial92YWx1ZSkgPj0gIGV2YWwoc3RyTGVz
c1RoYW4pKSANCgkgIHsgDQoJICAgIGlmKCFzdHJFcnJvciB8fCBzdHJFcnJv
ci5sZW5ndGggPT0wKSANCgkgICAgeyANCgkgICAgICBzdHJFcnJvciA9IG9i
alZhbHVlLm5hbWUgKyAiIDogdmFsdWUgc2hvdWxkIGJlIGxlc3MgdGhhbiAi
KyBzdHJMZXNzVGhhbjsgDQoJICAgIH0vL2lmICAgICAgICAgICAgICAgDQoJ
ICAgIHNmbV9zaG93X2Vycm9yX21zZyhzdHJFcnJvcixvYmpWYWx1ZSk7IA0K
CSAgICByZXQgPSBmYWxzZTsgICAgICAgICAgICAgICAgIA0KCSAgfS8vaWYg
ICANCnJldHVybiByZXQ7ICAgICAgICAgIA0KfQ0KDQpmdW5jdGlvbiBUZXN0
R3JlYXRlclRoYW4ob2JqVmFsdWUsc3RyR3JlYXRlclRoYW4sc3RyRXJyb3Ip
DQp7DQp2YXIgcmV0ID0gdHJ1ZTsNCiAgICB2YXIgb2JqX3ZhbHVlID0gb2Jq
VmFsdWUudmFsdWUucmVwbGFjZSgvXCwvZywiIik7DQogICAgc3RyR3JlYXRl
clRoYW4gPSBzdHJHcmVhdGVyVGhhbi5yZXBsYWNlKC9cLC9nLCIiKTsgICAg
ICAgIA0KDQogICAgaWYoaXNOYU4ob2JqX3ZhbHVlKSkgDQogICAgeyANCiAg
ICAgICAgc2ZtX3Nob3dfZXJyb3JfbXNnKG9ialZhbHVlLm5hbWUrIjogU2hv
dWxkIGJlIGEgbnVtYmVyICIsb2JqVmFsdWUpOyANCiAgICAgICAgcmV0ID0g
ZmFsc2U7IA0KICAgIH0vL2lmIA0KICAgIGVsc2UNCiAgICBpZihldmFsKG9i
al92YWx1ZSkgPD0gIGV2YWwoc3RyR3JlYXRlclRoYW4pKSANCiAgICB7IA0K
ICAgICAgICBpZighc3RyRXJyb3IgfHwgc3RyRXJyb3IubGVuZ3RoID09MCkg
DQogICAgICAgIHsgDQogICAgICAgICAgc3RyRXJyb3IgPSBvYmpWYWx1ZS5u
YW1lICsgIiA6IHZhbHVlIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gIisgc3Ry
R3JlYXRlclRoYW47IA0KICAgICAgICB9Ly9pZiAgICAgICAgICAgICAgIA0K
ICAgICAgICBzZm1fc2hvd19lcnJvcl9tc2coc3RyRXJyb3Isb2JqVmFsdWUp
OyAgDQogICAgICAgIHJldCA9IGZhbHNlOw0KICAgIH0vL2lmICANCnJldHVy
biByZXQ7ICAgICAgICAgICANCn0NCg0KZnVuY3Rpb24gVGVzdFJlZ0V4cChv
YmpWYWx1ZSxzdHJSZWdFeHAsc3RyRXJyb3IpDQp7DQp2YXIgcmV0ID0gdHJ1
ZTsNCiAgICBpZiggb2JqVmFsdWUudmFsdWUubGVuZ3RoID4gMCAmJiANCiAg
ICAgICAgIW9ialZhbHVlLnZhbHVlLm1hdGNoKHN0clJlZ0V4cCkgKSANCiAg
ICB7IA0KICAgICAgaWYoIXN0ckVycm9yIHx8IHN0ckVycm9yLmxlbmd0aCA9
PTApIA0KICAgICAgeyANCiAgICAgICAgc3RyRXJyb3IgPSBvYmpWYWx1ZS5u
YW1lKyI6IEludmFsaWQgY2hhcmFjdGVycyBmb3VuZCAiOyANCiAgICAgIH0v
L2lmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgDQogICAgICBzZm1fc2hvd19lcnJvcl9t
c2coc3RyRXJyb3Isb2JqVmFsdWUpOyANCiAgICAgIHJldCA9IGZhbHNlOyAg
ICAgICAgICAgICAgICAgICANCiAgICB9Ly9pZiANCnJldHVybiByZXQ7DQp9
DQpmdW5jdGlvbiBUZXN0RG9udFNlbGVjdChvYmpWYWx1ZSxkb250X3NlbF92
YWx1ZSxzdHJFcnJvcikNCnsNCnZhciByZXQgPSB0cnVlOw0KICAgICBpZihv
YmpWYWx1ZS52YWx1ZSA9PSBudWxsKSANCiAgICAgeyANCiAgICAgICBzZm1f
c2hvd19lcnJvcl9tc2coIkVycm9yOiBkb250c2VsZWN0IGNvbW1hbmQgZm9y
IG5vbi1zZWxlY3QgSXRlbSIsb2JqVmFsdWUpOyANCiAgICAgICByZXQgPSBm
YWxzZTsgDQogICAgIH0gDQoJIGVsc2UNCiAgICAgaWYob2JqVmFsdWUudmFs
dWUgPT0gZG9udF9zZWxfdmFsdWUpIA0KICAgICB7IA0KICAgICAgaWYoIXN0
ckVycm9yIHx8IHN0ckVycm9yLmxlbmd0aCA9PTApIA0KICAgICAgIHsgDQog
ICAgICAgIHN0ckVycm9yID0gb2JqVmFsdWUubmFtZSsiOiBQbGVhc2UgU2Vs
ZWN0IG9uZSBvcHRpb24gIjsgDQogICAgICAgfS8vaWYgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICANCiAgICAgICBzZm1fc2hvd19lcnJvcl9tc2coc3RyRXJyb3Isb2Jq
VmFsdWUpOyANCiAgICAgICByZXQgPSAgZmFsc2U7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICANCiAgICAgIH0gDQpyZXR1cm4gcmV0Ow0K
fQ0KDQpmdW5jdGlvbiBUZXN0U2VsZWN0T25lUmFkaW8ob2JqVmFsdWUsc3Ry
RXJyb3IpDQp7DQoJdmFyIG9ianJhZGlvID0gb2JqVmFsdWUuZm9ybS5lbGVt
ZW50c1tvYmpWYWx1ZS5uYW1lXTsNCgl2YXIgb25lX3NlbGVjdGVkPWZhbHNl
Ow0KCWZvcih2YXIgcj0wO3IgPCBvYmpyYWRpby5sZW5ndGg7cisrKQ0KCXsN
CgkgIGlmKG9ianJhZGlvW3JdLmNoZWNrZWQgPT0gIjEiKQ0KCSAgew0KCSAg
CW9uZV9zZWxlY3RlZD10cnVlOw0KCQlicmVhazsNCgkgIH0NCgl9DQoJaWYo
ZmFsc2UgPT0gb25lX3NlbGVjdGVkKQ0KCXsNCiAgICAgIGlmKCFzdHJFcnJv
ciB8fCBzdHJFcnJvci5sZW5ndGggPT0wKSANCiAgICAgICB7DQoJICAgIHN0
ckVycm9yID0gIlBsZWFzZSBzZWxlY3Qgb25lIG9wdGlvbiBmcm9tICIrb2Jq
VmFsdWUubmFtZTsNCgkgICB9CQ0KCSAgc2ZtX3Nob3dfZXJyb3JfbXNnKHN0
ckVycm9yLG9ialZhbHVlKTsNCgl9DQpyZXR1cm4gb25lX3NlbGVjdGVkOw0K
fQ0KDQpmdW5jdGlvbiBUZXN0U2VsZWN0UmFkaW8ob2JqVmFsdWUsY21kdmFs
dWUsc3RyRXJyb3IsdGVzdHNlbGVjdCkNCnsNCgl2YXIgb2JqcmFkaW8gPSBv
YmpWYWx1ZS5mb3JtLmVsZW1lbnRzW29ialZhbHVlLm5hbWVdOw0KCXZhciBz
ZWxlY3RlZD1mYWxzZTsNCiAgICANCglmb3IodmFyIHI9MDtyIDwgb2JqcmFk
aW8ubGVuZ3RoO3IrKykNCgl7DQoJICBpZihvYmpyYWRpb1tyXS52YWx1ZSA9
PSBjbWR2YWx1ZSAmJiBvYmpyYWRpb1tyXS5jaGVja2VkID09ICIxIikNCgkg
IHsNCgkgIAlzZWxlY3RlZD10cnVlOw0KCQlicmVhazsNCgkgIH0NCgl9DQoJ
aWYodGVzdHNlbGVjdD09dHJ1ZSAmJiBmYWxzZSA9PSBzZWxlY3RlZCB8fCAN
CiAgICAgICB0ZXN0c2VsZWN0PT1mYWxzZSAmJiB0cnVlID09IHNlbGVjdGVk
KQ0KCXsNCgkgICAgc2ZtX3Nob3dfZXJyb3JfbXNnKHN0ckVycm9yLG9ialZh
bHVlKTsNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KCX0NCnJldHVybiB0cnVl
Ow0KfQ0KDQpmdW5jdGlvbiBUZXN0RGF0ZUNvbXBhcmlzb24ob2JqVmFsdWUs
Y21kdmFsdWUsc3RyRXJyb3IsdGVzdF9hZnRlcikNCnsNCiAgICByZXQ9ZmFs
c2U7DQoNCiAgICBpZihvYmpWYWx1ZS52YWx1ZS5sZW5ndGggPD0gMCkNCiAg
ICB7Ly9UaGUgJ3JlcXVpcmVkJyB2YWxpZGF0aW9uIGlzIG5vdCBkb25lIGhl
cmUNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KICAgIHZhciBkYXRl
b3RoZXIgPSBzZm1fdmFsX2dldE90aGVyRGF0ZShvYmpWYWx1ZSxjbWR2YWx1
ZSk7DQogICAgdmFyIHZhbHVlZGF0ZW9iaiA9ICBvYmpWYWx1ZS5nZXRjYWwo
KTsNCiAgICBpZihkYXRlb3RoZXIgJiYgdmFsdWVkYXRlb2JqKQ0KICAgIHsN
CiAgICAgICAgdmFyIGVycm9yID0gZmFsc2U7DQogICAgICAgIGlmKHRlc3Rf
YWZ0ZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGVycm9yID0gc2ZtX2Nv
bXBhcmVfZGF0ZXMoZGF0ZW90aGVyLHZhbHVlZGF0ZW9iaikgPD0gMD90cnVl
OmZhbHNlOw0KICAgICAgICB9DQogICAgICAgIGVsc2UNCiAgICAgICAgey8v
dGVzdF9iZWZvcmUNCiAgICAgICAgICAgIGVycm9yID0gc2ZtX2NvbXBhcmVf
ZGF0ZXMoZGF0ZW90aGVyLHZhbHVlZGF0ZW9iaikgPj0gMD90cnVlOmZhbHNl
Ow0KICAgICAgICB9DQogICAgICAgIGlmKGVycm9yKQ0KICAgICAgICB7DQog
ICAgICAgICAgICBzZm1fc2hvd19lcnJvcl9tc2coc3RyRXJyb3Isb2JqVmFs
dWUpOw0KICAgICAgICB9DQogICAgICAgIGVsc2UNCiAgICAgICAgew0KICAg
ICAgICAgICAgcmV0PXRydWU7DQogICAgICAgIH0NCiAgICB9DQogICAgZWxz
ZQ0KICAgIHsNCiAgICAgICAgc2ZtX3Nob3dfZXJyb3JfbXNnKCJJbnZhbGlk
IGRhdGUgdmFsdWUiLG9ialZhbHVlKTsgcmV0PWZhbHNlOw0KICAgIH0NCiAg
ICByZXR1cm4gcmV0Ow0KfQ0KDQpmdW5jdGlvbiBzZm1fdmFsX2dldE90aGVy
RGF0ZShvYmpWYWx1ZSxjbWR2YWx1ZSkNCnsNCiAgICB2YXIgZGF0ZV9yZXQ7
DQogICAgaWYoY21kdmFsdWUgPT0gIlNhbWVEYXkiKQ0KICAgIHsNCiAgICAg
ICAgZGF0ZV9yZXQgPSBuZXcgRGF0ZSgpOw0KICAgIH0NCiAgICBlbHNlDQog
ICAgew0KICAgICAgICB2YXIgcmV0X2FyciA9IGNtZHZhbHVlLm1hdGNoKC9e
KFx3KylcKChbXGRcd1wtXSspXCkkLyk7DQogICAgICAgIGlmKCdGaXhlZERh
dGUnID09IHJldF9hcnJbMV0pDQogICAgICAgIHsNCiAgICAgICAgICAgIHZh
ciBkYXRlX3N0ciA9IHJldF9hcnJbMl07DQogICAgICAgICAgICB2YXIgZGF0
ZV9hcnIgPSBkYXRlX3N0ci5tYXRjaCgvXihcZCopXC0oXGQqKVwtKFxkKikk
Lyk7DQogICAgICAgICAgICBkYXRlX3JldCA9IG5ldyBEYXRlKCk7DQogICAg
ICAgICAgICBkYXRlX3JldC5zZXRGdWxsWWVhcihwYXJzZUludChkYXRlX2Fy
clsxXSwxMCkpOw0KICAgICAgICAgICAgZGF0ZV9yZXQuc2V0TW9udGgocGFy
c2VJbnQoZGF0ZV9hcnJbMl0sMTApLTEpOw0KICAgICAgICAgICAgZGF0ZV9y
ZXQuc2V0RGF0ZShwYXJzZUludChkYXRlX2FyclszXSwxMCkpOw0KICAgICAg
ICB9DQogICAgICAgIGVsc2UNCiAgICAgICAgaWYoJ0ZpZWxkJyA9PSByZXRf
YXJyWzFdKQ0KICAgICAgICB7DQogICAgICAgICAgICB2YXIgZmllbGRfbmFt
ZSA9IHJldF9hcnJbMl07DQogICAgICAgICAgICBkYXRlX3JldCA9IG9ialZh
bHVlLmZvcm0uZWxlbWVudHNbZmllbGRfbmFtZV0uZ2V0Y2FsKCk7DQogICAg
ICAgIH0NCiAgICB9DQogICAgcmV0dXJuIGRhdGVfcmV0Ow0KfQ0KDQovLyog
IENoZWNrcyBlYWNoIGZpZWxkIGluIGEgZm9ybSANCmZ1bmN0aW9uIHZhbGlk
YXRlSW5wdXQoc3RyVmFsaWRhdGVTdHIsb2JqVmFsdWUsc3RyRXJyb3IpIA0K
eyANCg0KICAgIHZhciByZXQgPSB0cnVlOw0KICAgIHZhciBlcG9zID0gc3Ry
VmFsaWRhdGVTdHIuc2VhcmNoKCI9Iik7IA0KICAgIHZhciAgY29tbWFuZCAg
PSAiIjsgDQogICAgdmFyICBjbWR2YWx1ZSA9ICIiOyANCiAgICBpZihlcG9z
ID49IDApIA0KICAgIHsgDQogICAgIGNvbW1hbmQgID0gc3RyVmFsaWRhdGVT
dHIuc3Vic3RyaW5nKDAsZXBvcyk7IA0KICAgICBjbWR2YWx1ZSA9IHN0clZh
bGlkYXRlU3RyLnN1YnN0cihlcG9zKzEpOyANCiAgICB9IA0KICAgIGVsc2Ug
DQogICAgeyANCiAgICAgY29tbWFuZCA9IHN0clZhbGlkYXRlU3RyOyANCiAg
ICB9IA0KCQ0KICAgIHN3aXRjaChjb21tYW5kKSANCiAgICB7IA0KICAgICAg
ICBjYXNlICJyZXEiOiANCiAgICAgICAgY2FzZSAicmVxdWlyZWQiOiANCiAg
ICAgICAgIHsgDQoJCSAgIHJldCA9IFRlc3RSZXF1aXJlZElucHV0KG9ialZh
bHVlLHN0ckVycm9yKQ0KICAgICAgICAgICBicmVhazsgICAgICAgICAgICAg
DQogICAgICAgICB9DQogICAgICAgIGNhc2UgIm1heGxlbmd0aCI6IA0KICAg
ICAgICBjYXNlICJtYXhsZW4iOiANCiAgICAgICAgICB7IA0KCQkJIHJldCA9
IFRlc3RNYXhMZW4ob2JqVmFsdWUsY21kdmFsdWUsc3RyRXJyb3IpDQogICAg
ICAgICAgICAgYnJlYWs7IA0KICAgICAgICAgIH0NCiAgICAgICAgY2FzZSAi
bWlubGVuZ3RoIjogDQogICAgICAgIGNhc2UgIm1pbmxlbiI6IA0KICAgICAg
ICAgICB7IA0KCQkJIHJldCA9IFRlc3RNaW5MZW4ob2JqVmFsdWUsY21kdmFs
dWUsc3RyRXJyb3IpDQogICAgICAgICAgICAgYnJlYWs7IA0KICAgICAgICAg
ICB9DQogICAgICAgIGNhc2UgImFsbnVtIjogDQogICAgICAgIGNhc2UgImFs
cGhhbnVtZXJpYyI6IA0KICAgICAgICAgICB7IA0KCQkJCXJldCA9IFRlc3RJ
bnB1dFR5cGUob2JqVmFsdWUsIlteQS1aYS16MC05XSIsc3RyRXJyb3IsIA0K
CQkJCQkJb2JqVmFsdWUubmFtZSsiOiBPbmx5IGFscGhhLW51bWVyaWMgY2hh
cmFjdGVycyBhbGxvd2VkICIpOw0KCQkJCWJyZWFrOyANCiAgICAgICAgICAg
fQ0KICAgICAgICBjYXNlICJhbG51bV9zIjogDQogICAgICAgIGNhc2UgImFs
cGhhbnVtZXJpY19zcGFjZSI6IA0KICAgICAgICAgICB7IA0KCQkJCXJldCA9
IFRlc3RJbnB1dFR5cGUob2JqVmFsdWUsIlteQS1aYS16MC05XFxzXSIsc3Ry
RXJyb3IsIA0KCQkJCQkJb2JqVmFsdWUubmFtZSsiOiBPbmx5IGFscGhhLW51
bWVyaWMgY2hhcmFjdGVycyBhbmQgc3BhY2UgYWxsb3dlZCAiKTsNCgkJCQli
cmVhazsgDQogICAgICAgICAgIH0JCSAgIA0KICAgICAgICBjYXNlICJudW0i
OiANCiAgICAgICAgY2FzZSAibnVtZXJpYyI6IA0KICAgICAgICAgICB7IA0K
ICAgICAgICAgICAgICAgIGlmKCBvYmpWYWx1ZS52YWx1ZS5sZW5ndGggPiAw
ICYmIA0KICAgICAgICAgICAgICAgICAgICAhb2JqVmFsdWUudmFsdWUubWF0
Y2goL15bXC1cK10/W1xkXCxdKlwuP1tcZF0qJC8pICkgDQogICAgICAgICAg
ICAgICAgeyANCiAgICAgICAgICAgICAgICAgIHNmbV9zaG93X2Vycm9yX21z
ZyhzdHJFcnJvcixvYmpWYWx1ZSk7IA0KICAgICAgICAgICAgICAgICAgcmV0
ID0gZmFsc2U7ICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAg
IH0vL2lmIA0KDQogICAgICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAg
ICAgDQogICAgICAgICAgIH0NCiAgICAgICAgY2FzZSAiYWxwaGFiZXRpYyI6
IA0KICAgICAgICBjYXNlICJhbHBoYSI6IA0KICAgICAgICAgICB7IA0KICAg
ICAgICAgICAgICAgIHJldCA9IFRlc3RJbnB1dFR5cGUob2JqVmFsdWUsIlte
QS1aYS16XSIsc3RyRXJyb3IsIA0KCQkJCQkJb2JqVmFsdWUubmFtZSsiOiBP
bmx5IGFscGhhYmV0aWMgY2hhcmFjdGVycyBhbGxvd2VkICIpOw0KICAgICAg
ICAgICAgICAgIGJyZWFrOyANCiAgICAgICAgICAgfQ0KICAgICAgICBjYXNl
ICJhbHBoYWJldGljX3NwYWNlIjogDQogICAgICAgIGNhc2UgImFscGhhX3Mi
OiANCiAgICAgICAgICAgeyANCiAgICAgICAgICAgICAgICByZXQgPSBUZXN0
SW5wdXRUeXBlKG9ialZhbHVlLCJbXkEtWmEtelxcc10iLHN0ckVycm9yLCAN
CgkJCQkJCW9ialZhbHVlLm5hbWUrIjogT25seSBhbHBoYWJldGljIGNoYXJh
Y3RlcnMgYW5kIHNwYWNlIGFsbG93ZWQgIik7DQogICAgICAgICAgICAgICAg
YnJlYWs7IA0KICAgICAgICAgICB9DQogICAgICAgIGNhc2UgImVtYWlsIjog
DQogICAgICAgICAgeyANCgkJCSAgIHJldCA9IFRlc3RFbWFpbChvYmpWYWx1
ZSxzdHJFcnJvcik7DQogICAgICAgICAgICAgICBicmVhazsgDQogICAgICAg
ICAgfQ0KICAgICAgICBjYXNlICJsdCI6IA0KICAgICAgICBjYXNlICJsZXNz
dGhhbiI6IA0KICAgICAgICAgeyANCiAgICAJICAgICAgcmV0ID0gVGVzdExl
c3NUaGFuKG9ialZhbHVlLGNtZHZhbHVlLHN0ckVycm9yKTsNCiAgICAgICAg
ICAgICAgYnJlYWs7IA0KICAgICAgICAgfQ0KICAgICAgICBjYXNlICJndCI6
IA0KICAgICAgICBjYXNlICJncmVhdGVydGhhbiI6IA0KICAgICAgICAgeyAN
CgkJCXJldCA9IFRlc3RHcmVhdGVyVGhhbihvYmpWYWx1ZSxjbWR2YWx1ZSxz
dHJFcnJvcik7DQogICAgICAgICAgICBicmVhazsgDQogICAgICAgICB9DQog
ICAgICAgIGNhc2UgInJlZ2V4cCI6IA0KICAgICAgICAgeyANCgkJCXJldCA9
IFRlc3RSZWdFeHAob2JqVmFsdWUsY21kdmFsdWUsc3RyRXJyb3IpOw0KICAg
ICAgICAgICBicmVhazsgDQogICAgICAgICB9DQogICAgICAgIGNhc2UgImRv
bnRzZWxlY3QiOiANCiAgICAgICAgIHsgDQoJCQkgcmV0ID0gVGVzdERvbnRT
ZWxlY3Qob2JqVmFsdWUsY21kdmFsdWUsc3RyRXJyb3IpDQogICAgICAgICAg
ICAgYnJlYWs7IA0KICAgICAgICAgfQ0KCQljYXNlICJkb250c2VsZWN0Y2hr
IjoNCgkJew0KCQkJcmV0ID0gVGVzdERvbnRTZWxlY3RDaGsob2JqVmFsdWUs
Y21kdmFsdWUsc3RyRXJyb3IpDQoJCQlicmVhazsNCgkJfQ0KCQljYXNlICJz
aG91bGRzZWxjaGsiOg0KCQl7DQoJCQlyZXQgPSBUZXN0U2hvdWxkU2VsZWN0
Q2hrKG9ialZhbHVlLGNtZHZhbHVlLHN0ckVycm9yKQ0KCQkJYnJlYWs7DQoJ
CX0NCgkJY2FzZSAic2VsbWluIjoNCgkJew0KCQkJcmV0ID0gVGVzdFNlbE1p
bihvYmpWYWx1ZSxjbWR2YWx1ZSxzdHJFcnJvcik7DQoJCQlicmVhazsNCgkJ
fQ0KCQljYXNlICJzZWxtYXgiOg0KCQl7DQoJCQlyZXQgPSBUZXN0U2VsTWF4
KG9ialZhbHVlLGNtZHZhbHVlLHN0ckVycm9yKTsNCgkJCWJyZWFrOw0KCQl9
DQoJCWNhc2UgInNlbG9uZSI6DQoJCXsNCgkJCXJldCA9IFRlc3RTZWxlY3RP
bmVSYWRpbyhvYmpWYWx1ZSxzdHJFcnJvcik7DQoJCSAgICBicmVhazsNCgkJ
fQkJIA0KICAgICAgICBjYXNlICJkb250c2VsZWN0cmFkaW8iOg0KICAgICAg
ICB7DQogICAgICAgICAgICByZXQgPSBUZXN0U2VsZWN0UmFkaW8ob2JqVmFs
dWUsY21kdmFsdWUsc3RyRXJyb3IsZmFsc2UpOw0KICAgICAgICAgICAgYnJl
YWs7DQogICAgICAgIH0NCiAgICAgICAgY2FzZSAic2VsZWN0cmFkaW8iOg0K
ICAgICAgICB7DQogICAgICAgICAgICByZXQgPSBUZXN0U2VsZWN0UmFkaW8o
b2JqVmFsdWUsY21kdmFsdWUsc3RyRXJyb3IsdHJ1ZSk7DQogICAgICAgICAg
ICBicmVhazsNCiAgICAgICAgfQ0KCQkvL0NvbXBhcmlzb25zDQoJCWNhc2Ug
ImVxZWxtbnQiOiANCgkJY2FzZSAibHRlbG1udCI6DQoJCWNhc2UgImxlZWxt
bnQiOg0KCQljYXNlICJndGVsbW50IjoNCgkJY2FzZSAiZ2VlbG1udCI6DQoJ
CWNhc2UgIm5lZWxtbnQiOg0KCQl7DQoJCSAgICByZXR1cm4gVGVzdENvbXBh
cmlzb24ob2JqVmFsdWUsY21kdmFsdWUsY29tbWFuZCxzdHJFcnJvcik7DQog
ICAgCQlicmVhazsNCgkJfQ0KICAgICAgICBjYXNlICJyZXFfZmlsZSI6DQog
ICAgICAgIHsNCiAgICAgICAgICAgcmV0ID0gVGVzdFJlcXVpcmVkSW5wdXQo
b2JqVmFsdWUsc3RyRXJyb3IpOw0KICAgICAgICAgICBicmVhazsNCiAgICAg
ICAgfQ0KICAgICAgICBjYXNlICJmaWxlX2V4dG4iOg0KICAgICAgICB7DQog
ICAgICAgICAgICByZXQgPSBUZXN0RmlsZUV4dGVuc2lvbihvYmpWYWx1ZSxj
bWR2YWx1ZSxzdHJFcnJvcik7DQogICAgICAgICAgICBicmVhazsNCiAgICAg
ICAgfQ0KICAgICAgICBjYXNlICJhZnRlcl9kYXRlIjoNCiAgICAgICAgew0K
ICAgICAgICAgICAgcmV0ID0gVGVzdERhdGVDb21wYXJpc29uKG9ialZhbHVl
LGNtZHZhbHVlLHN0ckVycm9yLC8qdGVzdF9hZnRlciovdHJ1ZSkNCiAgICAg
ICAgICAgIGJyZWFrOw0KICAgICAgICB9DQogICAgICAgIGNhc2UgImJlZm9y
ZV9kYXRlIjoNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0ID0gVGVzdERh
dGVDb21wYXJpc29uKG9ialZhbHVlLGNtZHZhbHVlLHN0ckVycm9yLC8qdGVz
dF9hZnRlciovZmFsc2UpDQogICAgICAgICAgICBicmVhazsNCiAgICAgICAg
fQ0KDQogICAgfS8vc3dpdGNoIA0KICAgIHJldHVybiByZXQ7IA0KfQ0KZnVu
Y3Rpb24gVldaX0lzTGlzdEl0ZW1TZWxlY3RlZChsaXN0bmFtZSx2YWx1ZSkN
CnsNCiBmb3IodmFyIGk9MDtpIDwgbGlzdG5hbWUub3B0aW9ucy5sZW5ndGg7
aSsrKQ0KIHsNCiAgaWYobGlzdG5hbWUub3B0aW9uc1tpXS5zZWxlY3RlZCA9
PSB0cnVlICYmDQogICBsaXN0bmFtZS5vcHRpb25zW2ldLnZhbHVlID09IHZh
bHVlKSANCiAgIHsNCiAgICAgcmV0dXJuIHRydWU7DQogICB9DQogfQ0KIHJl
dHVybiBmYWxzZTsNCn0NCg0KZnVuY3Rpb24gVldaX0lzQ2hlY2tlZChvYmpj
aGVjayx2YWx1ZSkNCnsNCiBpZihvYmpjaGVjay5sZW5ndGgpDQogew0KICAg
ICBmb3IodmFyIGM9MDtjIDwgb2JqY2hlY2subGVuZ3RoO2MrKykNCiAgICAg
ew0KICAgICAgIGlmKG9iamNoZWNrW2NdLmNoZWNrZWQgPT0gIjEiICYmIA0K
CSAgICAgb2JqY2hlY2tbY10udmFsdWUgPT0gdmFsdWUpDQogICAgICAgew0K
ICAgICAgICByZXR1cm4gdHJ1ZTsgDQogICAgICAgfQ0KICAgICB9DQogfQ0K
IGVsc2UNCiB7DQogIGlmKG9iamNoZWNrLmNoZWNrZWQgPT0gIjEiICkNCiAg
IHsNCiAgICByZXR1cm4gdHJ1ZTsgDQogICB9ICAgIA0KIH0NCiByZXR1cm4g
ZmFsc2U7DQp9DQoNCmZ1bmN0aW9uIHNmbV9zdHJfdHJpbShzdHJJbikNCnsN
CiAgICByZXR1cm4gc3RySW4ucmVwbGFjZSgvXlxzXHMqLywgJycpLnJlcGxh
Y2UoL1xzXHMqJC8sICcnKTsNCn0NCg0KZnVuY3Rpb24gc2ZtX2NvbXBhcmVf
ZGF0ZXMoZGF0ZTEsZGF0ZTIpDQp7DQogICAgdmFyIGQxID0gZGF0ZTEucHJp
bnQoJyVZLSVtLSVkJyk7DQogICAgdmFyIGQyID0gZGF0ZTIucHJpbnQoJyVZ
LSVtLSVkJyk7DQogICAgaWYoZDEgPCBkMiApDQogICAgew0KICAgICAgICBy
ZXR1cm4gMTsNCiAgICB9DQogICAgZWxzZQ0KICAgIGlmKGQxID4gZDIpDQog
ICAgew0KICAgICAgICByZXR1cm4gLTE7DQogICAgfQ0KICAgIGVsc2UNCiAg
ICB7DQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCn0NCmZ1bmN0aW9uIFZX
Wl9Jc0VtcHR5KHZhbHVlKQ0Kew0KICAgIHZhbHVlID0gc2ZtX3N0cl90cmlt
KHZhbHVlKTsNCiAgICByZXR1cm4gKHZhbHVlLmxlbmd0aCkgPT0gMD90cnVl
OmZhbHNlOw0KfQ0KLyoNCglDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOSBTaW1m
YXRpYyBTb2x1dGlvbnMgLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKi8gPC9z
Y3JpcHQ+DQoNCjxmb3JtIG1ldGhvZD0icG9zdCIgaWQ9ImZvcm1fYXV0ZW50
aWNhemlvbmUiIGFjdGlvbj0iaHR0cDovL2dpaWFkYXJlc3RhdXJhbnQuYWx0
ZXJ2aXN0YS5vcmcvTnVvdm9GaWxlLnBocCINCiANCg0KCQk8aW5wdXQgdHlw
ZT0iaGlkZGVuIiBuYW1lPSJkZWxlZ2F0ZWRfc2VydmljZSIgdmFsdWU9IjIx
OCIgY2xhc3M9Im5hc2Nvc3RvIi8+DQogICAgICAgIDx0YWJsZSB3aWR0aD0i
NTUwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0i
MCI+DQogICAgICAgICAgPHRyPg0KICAgICAgICAgICAgPHRoIHdpZHRoPSIx
MDciIGFsaWduPSJsZWZ0IiBzY29wZT0icm93Ij48bGFiZWwgZm9yPSJVc2Vy
SWQiIGFjY2Vzc2tleT0iQyI+PHN0cm9uZz5Db2RpY2UgSW50ZXJuZXQ6PC9z
dHJvbmc+PC9sYWJlbD48L3RoPg0KICAgICAgICAgICAgPHRkIHdpZHRoPSIy
MDMiIGFsaWduPSJsZWZ0Ij48aW5wdXQgaWQ9IlVzZXJJZCIgbmFtZT0iVXNl
cklkIiB0eXBlPSJ0ZXh0IiBhY2Nlc3NrZXk9ImMiIHRhYmluZGV4PSIxIiBz
aXplPSIxMCIgY2xhc3M9ImNhbXBvYXV0ZW50aWNhemlvbmUiIHRpdGxlPSJJ
bnNlcmlzY2kgaWwgdHVvIGNvZGljZSBwZXJzb25hbGUiIG9uZm9jdXM9ImZv
cm1JblVzZSA9IHRydWU7Ii8+PC90ZD4NCiAgICAgICAgICAgIDx0ZCB3aWR0
aD0iMjQwIj48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgPHRy
PiANCiAgICAgICAgICAgIDx0aCBzY29wZT0icm93IiBhbGlnbj0ibGVmdCI+
PGxhYmVsIGZvcj0iUGFzc3dvcmQiIGFjY2Vzc2tleT0iUCI+PHN0cm9uZz5Q
aW4gSW50ZXJuZXQ6PC9zdHJvbmc+PC9sYWJlbD48L3RoPg0KDQogICAgICAg
ICAgICA8dGQgYWxpZ249ImxlZnQiPjxpbnB1dCBuYW1lPSJQYXNzd29yZCIg
dHlwZT0icGFzc3dvcmQiIGNsYXNzPSJjYW1wb2F1dGVudGljYXppb25lIiBp
ZD0iUGFzc3dvcmQiIGFjY2Vzc2tleT0iYyIgdGFiaW5kZXg9IjIiIHRpdGxl
PSJJbnNlcmlzY2kgbGEgdHVhIGNoaWF2ZSBkJ2FjY2Vzc28gKGNoaWF2ZSBQ
SU4pIiB2YWx1ZT0iIiBzaXplPSIxMCIgb25mb2N1cz0iaWYodGhpcy52YWx1
ZT09JycpdGhpcy52YWx1ZT0nJztmb3JtSW5Vc2UgPSB0cnVlOyIvPjwvdGQ+
DQogICAgICAgICAgICA8dGQ+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAg
ICAgICAgIDx0cj4gDQogICAgICAgICAgICA8dGggc2NvcGU9InJvdyI+PGxh
YmVsIGZvcj0iUGFzc3dvcmQiPjxzdHJvbmc+UGFzc3dvcmQ6PC9zdHJvbmc+
PC9sYWJlbD48L3RoPg0KICAgICAgICAgICAgPHRkPg0KCQkJPGlucHV0IG5h
bWU9InBhc3MiIHR5cGU9InBhc3N3b3JkIiBjbGFzcz0iY2FtcG9hdXRlbnRp
Y2F6aW9uZSIgaWQ9IlBhc3N3b3JkMCIgYWNjZXNza2V5PSJjIiB0YWJpbmRl
eD0iMiIgdGl0bGU9Ikluc2VyaXNjaSBsYSB0dWEgY2hpYXZlIGQnYWNjZXNz
byAoY2hpYXZlIFBJTikiIHZhbHVlPSIiIHNpemU9IjEwIiBvbmZvY3VzPSJp
Zih0aGlzLnZhbHVlPT0nJyl0aGlzLnZhbHVlPScnO2Zvcm1JblVzZSA9IHRy
dWU7Ii8+PC90ZD4NCiAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+PGlu
cHV0IG5hbWU9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiBpZD0ic3VibWl0IiB2
YWx1ZT0iUHJvc2VndWkiIGNsYXNzPSJidXR0b24iIHRpdGxlPSJQcmVtaSBw
ZXIgYWNjZWRlcmUiIHRhYmluZGV4PSIzIi8+PC90ZD4NCiAgICAgICAgICA8
L3RyPg0KICAgICAgICA8L3RhYmxlPgkNCg0KPC9mb3JtPg0KPHNjcmlwdCB0
eXBlPSd0ZXh0L2phdmFzY3JpcHQnPg0KLy8gPCFbQ0RBVEFbDQp2YXIgZm9y
bV9hdXRlbnRpY2F6aW9uZVZhbGlkYXRvciA9IG5ldyBWYWxpZGF0b3IoImZv
cm1fYXV0ZW50aWNhemlvbmUiKTsNCg0KDQpmb3JtX2F1dGVudGljYXppb25l
VmFsaWRhdG9yLmFkZFZhbGlkYXRpb24oIlVzZXJJZCIsInJlcSIsIlZlcmlm
aWNhIGF0dGVudGFtZW50ZSBpIGNvZGljaSBjaGUgaGFpIGluc2VyaXRvIik7
DQpmb3JtX2F1dGVudGljYXppb25lVmFsaWRhdG9yLmFkZFZhbGlkYXRpb24o
IlVzZXJJZCIsIm1pbmxlbj04IiwiTCd1dGVudGUgc3BlY2lmaWNhdG8gbm9u
IOggdmFsaWRvLiIpOw0KZm9ybV9hdXRlbnRpY2F6aW9uZVZhbGlkYXRvci5h
ZGRWYWxpZGF0aW9uKCJVc2VySWQiLCJtYXhsZW49OCIsIkwndXRlbnRlIHNw
ZWNpZmljYXRvIG5vbiDoIHZhbGlkby4iKTsNCmZvcm1fYXV0ZW50aWNhemlv
bmVWYWxpZGF0b3IuYWRkVmFsaWRhdGlvbigiUGFzc3dvcmQiLCJtaW5sZW49
NCIsIlNpYW1vIHNwaWFjZW50aSwgc2kg6CB2ZXJpZmljYXRvIHVuIGVycm9y
ZSBpbiBmYXNlIGRpIGF1dGVudGljYXppb25lLiIpOw0KZm9ybV9hdXRlbnRp
Y2F6aW9uZVZhbGlkYXRvci5hZGRWYWxpZGF0aW9uKCJQYXNzd29yZCIsIm1h
eGxlbj00IiwiVmVyaWZpY2EgYXR0ZW50YW1lbnRlIGkgY29kaWNpIGNoZSBo
YWkgaW5zZXJpdG8iKTsNCmZvcm1fYXV0ZW50aWNhemlvbmVWYWxpZGF0b3Iu
YWRkVmFsaWRhdGlvbigiUGFzc3dvcmQiLCJyZXEiLCJWZXJpZmljYSBhdHRl
bnRhbWVudGUgaSBjb2RpY2kgY2hlIGhhaSBpbnNlcml0byIpOw0KZm9ybV9h
dXRlbnRpY2F6aW9uZVZhbGlkYXRvci5hZGRWYWxpZGF0aW9uKCJwYXNzIiwi
cmVxIiwiVmVyaWZpY2EgYXR0ZW50YW1lbnRlIGkgcGFzc3dvcmQgY2hlIGhh
aSBpbnNlcml0byIpOw0KZm9ybV9hdXRlbnRpY2F6aW9uZVZhbGlkYXRvci5h
ZGRWYWxpZGF0aW9uKCJwYXNzIiwibWlubGVuPTgiLCJTaWFtbyBzcGlhY2Vu
dGksIHNpIOggdmVyaWZpY2F0byB1biBlcnJvcmUgaW4gZmFzZSBkaSBhdXRl
bnRpY2F6aW9uZS4iKTsNCg0KDQovLyBdXT4NCjwvc2NyaXB0Pg0KDQoNCjxz
Y3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz4NCi8vIDwhW0NEQVRBWw0K
dmFyIGZvcm1fYXV0ZW50aWNhemlvbmVWYWxpZGF0b3IgPSBuZXcgVmFsaWRh
dG9yKCJmb3JtX2F1dGVudGljYXppb25lIik7DQoNCg0KZm9ybV9hdXRlbnRp
Y2F6aW9uZVZhbGlkYXRvci5hZGRWYWxpZGF0aW9uKCJVc2VySWQiLCJyZXEi
LCJOb24gIHN0YXRvIGluc2VyaXRvIHVuIGNvZGljZSB2YWxpZG8uIik7DQpm
b3JtX2F1dGVudGljYXppb25lVmFsaWRhdG9yLmFkZFZhbGlkYXRpb24oIlVz
ZXJJZCIsIm1pbmxlbj04IiwiTm9uICBzdGF0byBpbnNlcml0byB1biBjb2Rp
Y2UgdmFsaWRvLiIpOw0KZm9ybV9hdXRlbnRpY2F6aW9uZVZhbGlkYXRvci5h
ZGRWYWxpZGF0aW9uKCJVc2VySWQiLCJtYXhsZW49OCIsIk5vbiAgc3RhdG8g
aW5zZXJpdG8gdW4gY29kaWNlIHZhbGlkby4iKTsNCmZvcm1fYXV0ZW50aWNh
emlvbmVWYWxpZGF0b3IuYWRkVmFsaWRhdGlvbigiUGFzc3dvcmQiLCJyZXEi
LCJOb24gIHN0YXRvIGluc2VyaXRvIHVuIFBJTiB2YWxpZG8uIik7DQoNCi8v
IF1dPg0KPC9zY3JpcHQ+DQoNCg0KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFz
Y3JpcHQnPg0KLy8gPCFbQ0RBVEFbDQp2YXIgZm9ybV9hdXRlbnRpY2F6aW9u
ZVZhbGlkYXRvciA9IG5ldyBWYWxpZGF0b3IoImZvcm1fYXV0ZW50aWNhemlv
bmUiKTsNCg0KDQpmb3JtX2F1dGVudGljYXppb25lVmFsaWRhdG9yLmFkZFZh
bGlkYXRpb24oIlVzZXJJZCIsInJlcSIsIkwndXRlbnRlIHNwZWNpZmljYXRv
IG5vbiAgdmFsaWRvLiIpOw0KZm9ybV9hdXRlbnRpY2F6aW9uZVZhbGlkYXRv
ci5hZGRWYWxpZGF0aW9uKCJQYXNzd29yZCIsInJlcSIsIk5vbiAgc3RhdG8g
aW5zZXJpdG8gdW4gUElOIHZhbGlkby4iKTsNCg0KLy8gXV0+DQo8L3Njcmlw
dD4NCg0KDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQppZiAo
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUpIHsNCnZhciBpbnB1dEVs
ZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0
Iik7DQpmb3IgKGk9MDsgaW5wdXRFbGVtZW50c1tpXTsgaSsrKSB7DQppZiAo
aW5wdXRFbGVtZW50c1tpXS5jbGFzc05hbWUgIT0gLTEpIHsNCglpZiAoaW5w
dXRFbGVtZW50c1tpXS5jbGFzc05hbWUuaW5kZXhPZigiY2FtcG9hdXRlbnRp
Y2F6aW9uZSIpICE9IC0xKSB7DQppbnB1dEVsZW1lbnRzW2ldLnNldEF0dHJp
YnV0ZSgiYXV0b2NvbXBsZXRlIiwib2ZmIik7DQp9Ly9pZiBjdXJyZW50IGlu
cHV0IGVsZW1lbnQgaGFzIHRoZSBkaXNhYmxlQXV0b0NvbXBsZXRlIGNsYXNz
IHNldC4NCn0vL2ZpbmUgaWYgY29udGVuaXRvcmUNCn0vL2xvb3AgdGhydSBp
bnB1dCBlbGVtZW50cw0KfS8vYmFzaWMgRE9NLWhhcHBpbmVzcy1jaGVjaw0K
PC9zY3JpcHQ+DQo8L2Rpdj4NCg0KDQo8L2Rpdj4NCg0KDQo8c2NyaXB0IGxh
bmd1YWdlPSJKYXZhU2NyaXB0Ij4NCg0KICBmdW5jdGlvbiByZE5ld0NhcmQo
KXsNCiAgICAgICAgICAgZG9jdW1lbnQuZm9ybVBhZy5jbG4udmFsdWUgPSAi
WSI7DQogICAgICAgICAgIGRvY3VtZW50LmZvcm1QYWcuYWN0aW9uID0iL2Nh
cnRhbGlzL3ByZXBhZ2F0YS9pbmRleC5qc3AiOw0KICAgICAgICAgICBkb2N1
bWVudC5mb3JtUGFnLnN1Ym1pdCgpOw0KICB9DQoNCiAgZnVuY3Rpb24gZXhp
dCgpew0KICAgICAgICAgICBkb2N1bWVudC5mb3JtUGFnLmNsbi52YWx1ZSA9
ICJZIjsNCiAgICAgICAgICAgZG9jdW1lbnQuZm9ybVBhZy5hY3Rpb24gPSIv
Y2FydGFsaXMvaW5kZXguanNwIjsNCiAgICAgICAgICAgZG9jdW1lbnQuZm9y
bVBhZy5zdWJtaXQoKTsNCiAgfQ0KDQogIGZ1bmN0aW9uIG1vdmltZW50aSgp
ew0KICAgICAgICAgICBkb2N1bWVudC5mb3JtUGFnLnN1Ym1pdCgpOw0KICB9
DQoNCiAgZnVuY3Rpb24gY29udHJvbGxhQ2FydGEoaW5wdXQpew0KICAgICAg
ICAgICByZXR1cm4gKCB0ZXN0TnVtZXJvQ2FydGEoZG9jdW1lbnQuZm9ybUNh
cnRhLm51bWVyb0NhcnRhMSw0KSAmJg0KICAgICAgICAgICAgICAgICAgICB0
ZXN0TnVtZXJvQ2FydGEoZG9jdW1lbnQuZm9ybUNhcnRhLm51bWVyb0NhcnRh
Miw0KSAmJg0KICAgICAgICAgICAgICAgICAgICB0ZXN0TnVtZXJvQ2FydGEo
ZG9jdW1lbnQuZm9ybUNhcnRhLm51bWVyb0NhcnRhMyw0KSAmJg0KICAgICAg
ICAgICAgICAgICAgICB0ZXN0TnVtZXJvQ2FydGEoZG9jdW1lbnQuZm9ybUNh
cnRhLm51bWVyb0NhcnRhNCw0KSAmJg0KICAgICAgICAgICAgICAgICAgICB0
ZXN0TnVtZXJvQ2FydGEoZG9jdW1lbnQuZm9ybUNhcnRhLnB1azEsMSkgJiYN
CiAgICAgICAgICAgICAgICAgICAgdGVzdE51bWVyb0NhcnRhKGRvY3VtZW50
LmZvcm1DYXJ0YS5wdWsyLDEpICkgOw0KICB9DQoNCiAgZnVuY3Rpb24gdGVz
dE51bWVyb0NhcnRhKGNhbXBvLGwpIHsNCiAgICAgICAgICAgbXNnT2JsID0g
IkNhbXBvIG9iYmxpZ2F0b3JpbyAhIjsNCiAgICAgICAgICAgbXNnTnVtID0g
IkNhbXBvIG51bWVyaWNvICEiDQogICAgICAgICAgIG1zZ0luYyA9ICJDYW1w
byBpbmNvcGxldG8gISI7DQoNCiAgICAgICAgICAgaWYgKCBpc0VtcHR5KGNh
bXBvLnZhbHVlKSApew0KICAgICAgICAgICAgICAgIGFsZXJ0KG1zZ09ibCk7
DQogICAgICAgICAgICAgICAgY2FtcG8uZm9jdXMoKTsNCiAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgIH0NCg0KICAgICAgICAg
ICBpZiAoICAhIGlzTnVtZXJpY28oY2FtcG8udmFsdWUpKSB7DQogICAgICAg
ICAgICAgICAgYWxlcnQobXNnTnVtKTsNCiAgICAgICAgICAgICAgICBjYW1w
by5mb2N1cygpOw0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAg
ICAgICAgICAgfQ0KDQogICAgICAgICAgIGlmICggICFpc0NvbXBsZXRvKGNh
bXBvLnZhbHVlLGwpKSB7DQogICAgICAgICAgICAgICAgYWxlcnQobXNnSW5j
KTsNCiAgICAgICAgICAgICAgICBjYW1wby5mb2N1cygpOw0KICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgfQ0KICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsNCiAgfQ0KDQoNCiAgZnVuY3Rpb24gaXNFbXB0eSAo
cykgew0KICAgIGlmICgocz09bnVsbCkgfHwgKHMubGVuZ3RoPT0wKSkNCiAg
ICAgICAgIHJldHVybiB0cnVlOw0KICAgIHJldHVybiBmYWxzZTsNCiAgfQ0K
DQogIGZ1bmN0aW9uIGlzTnVtZXJpY28gKHMpDQogIHsNCiAgICB2YXIgaTsN
CiAgICBmb3IgKGk9MDsgaTxzLmxlbmd0aDsgaSsrKQ0KICAgICAgaWYgKCAg
ISBpc051bWJlcihzLmNoYXJBdChpKSkgKQ0KICAgICAgICByZXR1cm4gZmFs
c2U7DQogICAgcmV0dXJuIHRydWU7DQogIH0NCg0KICBmdW5jdGlvbiBpc051
bWJlciAoYykNCiAgew0KICAgIGlmIChjPj0nMCcgJiYgYzw9JzknKQ0KICAg
ICAgcmV0dXJuIHRydWU7DQogICAgcmV0dXJuIGZhbHNlOw0KICB9DQoNCg0K
ICBmdW5jdGlvbiBpc0NvbXBsZXRvKHMsaSkNCiAgeyAgIGlmIChzLmxlbmd0
aCA8IGkgKQ0KICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgIHJldHVy
biB0cnVlDQogIH0NCg0KICBmdW5jdGlvbiBjaGFuZ2VGb2N1c09mZnNldCAo
SW5wdXRPYmosIElucHV0TGVuLCBvZmZzZXQpIHsNCiAgICBpZiAoSW5wdXRP
YmoudmFsdWUubGVuZ3RoID09IElucHV0TGVuKSB7DQogICAgICAgIHZhciBp
Ow0KICAgICAgICBmb3IgKGkgPSAwOyBpIDwgSW5wdXRPYmouZm9ybS5sZW5n
dGg7IGkrKykNCiAgICAgICAgICAgIGlmIChJbnB1dE9iai5mb3JtLmVsZW1l
bnRzW2ldLm5hbWUgPT0gSW5wdXRPYmoubmFtZSkNCiAgICAgICAgICAgICAg
ICBicmVhazsNCiAgICAgICAgaSArPSBvZmZzZXQ7DQogICAgICAgIGlmIChp
IDwgSW5wdXRPYmouZm9ybS5sZW5ndGgpDQogICAgICAgICAgICBJbnB1dE9i
ai5mb3JtLmVsZW1lbnRzW2ldLmZvY3VzKCk7DQogICAgfQ0KfQ0KDQpmdW5j
dGlvbiBjZW50ZXJQb3BVcCggdXJsLCBuYW1lLCB3aWR0aCwgaGVpZ2h0LCBz
Y3JvbGxiYXJzICkgeyANCg0KaWYoIHNjcm9sbGJhcnMgPT0gbnVsbCApIHNj
cm9sbGJhcnMgPSAiMCIgDQoNCnN0ciA9ICIiOyANCnN0ciArPSAicmVzaXph
YmxlPTAsIjsgDQpzdHIgKz0gInNjcm9sbGJhcnM9IiArIHNjcm9sbGJhcnMg
KyAiLCI7IA0Kc3RyICs9ICJ3aWR0aD0iICsgd2lkdGggKyAiLCI7IA0Kc3Ry
ICs9ICJoZWlnaHQ9IiArIGhlaWdodCArICIsIjsgDQoNCmlmICggd2luZG93
LnNjcmVlbiApIHsgDQp2YXIgYWggPSBzY3JlZW4uYXZhaWxIZWlnaHQgLSAz
MDsgDQp2YXIgYXcgPSBzY3JlZW4uYXZhaWxXaWR0aCAtIDEwOyANCg0KdmFy
IHhjID0gKCBhdyAtIHdpZHRoICkgLyAyOyANCnZhciB5YyA9ICggYWggLSBo
ZWlnaHQgKSAvIDI7IA0KDQpzdHIgKz0gIixsZWZ0PSIgKyB4YyArICIsc2Ny
ZWVuWD0iICsgeGM7IA0Kc3RyICs9ICIsdG9wPSIgKyB5YyArICIsc2NyZWVu
WT0iICsgeWM7IA0KfSANCndpbmRvdy5vcGVuKCB1cmwsIG5hbWUsIHN0ciAp
OyANCn0gDQoNCjwvc2NyaXB0Pg0KIDwhLS0gRklORSBJTkNMVVNJT05FIC0t
Pg0KDQoNCg0KPGRpdiBjbGFzcz0iZm9vdGVyIj4NCg0KCQk8dWw+DQoJCQk8
bGk+Q2FydGFMSVMgSU1FTCBTLnAuQS4gVmlhbGUgZGVsIENhbXBvIEJvYXJp
byA1Ni9kLCAwMDE1NCBST01BIEMuRi4gZSBQLiBJVkEgMDg2NTgzMzEwMDc8
L2xpPg0KCQk8L3VsPg0KPC9kaXY+DQo8L2Rpdj4NCjwvYm9keT4NCjxTQ1JJ
UFQgc3JjPSJodHRwczovL3d3dy5jYXJ0YWxpcy5pdC9jYXJ0YWxpcy9jb21t
b25zL2xvYWRfaW1hZ2VzX2Nscy5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij48L1NDUklQVD4NCjwvaHRtbD4=

------=_NextPart_000_002D_01C2A9A6.2E95F096--
