From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Tianxiang Xiong Newsgroups: gmane.emacs.devel Subject: Proposal: font lock for `describe-variable` Date: Sat, 24 Sep 2016 20:36:38 -0700 Message-ID: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a114e732c1a94f0053d4cb85e X-Trace: blaine.gmane.org 1474784525 449 195.159.176.226 (25 Sep 2016 06:22:05 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sun, 25 Sep 2016 06:22:05 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Sep 25 08:21:59 2016 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bo2ow-0006jg-IZ for ged-emacs-devel@m.gmane.org; Sun, 25 Sep 2016 08:21:51 +0200 Original-Received: from localhost ([::1]:36704 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bo2ou-0000VR-Nx for ged-emacs-devel@m.gmane.org; Sun, 25 Sep 2016 02:21:48 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:48452) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bo0FB-0007v2-Vg for emacs-devel@gnu.org; Sat, 24 Sep 2016 23:36:51 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bo0F6-0006l5-9E for emacs-devel@gnu.org; Sat, 24 Sep 2016 23:36:44 -0400 Original-Received: from mail-yw0-x22e.google.com ([2607:f8b0:4002:c05::22e]:34411) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bo0F5-0006l1-Vl for emacs-devel@gnu.org; Sat, 24 Sep 2016 23:36:40 -0400 Original-Received: by mail-yw0-x22e.google.com with SMTP id g192so139625785ywh.1 for ; Sat, 24 Sep 2016 20:36:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to; bh=Q5tjjpL/y7lvvviN98Tf/jckj4tMP8wX7pkA4dLOz/A=; b=TKfLLVmT3pFyeX1L9Ng2FGtJVZtVWWROnImMjuLpz+1JS9aPNnFe2E4ZMejm4jmaXY 3dpo91SJ0KqFpks/naCGEhEt9Vzz+oG5ix7uHpRyhRdjK5+USEwA0aOdeD84y8CWEVNd Y3i6D7yaJiOeiRstrX+stVGge2Aq/G6wRmxCKAzyIcEEeuqwDxRsODOH0o2LQ81RiuZ8 zmhCSazk4+Teil9rZpxK18oW1WkB78aRaHjLcnJPetXStLhIG6ty25Nc4gn7Y8QAUnY4 VNoNa1LkyXs2p+lA9NSmvbbq1KgVooCny8dEM2zGGBohf/pIMtBnmsTjDfHo7k7DmS2+ vUZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=Q5tjjpL/y7lvvviN98Tf/jckj4tMP8wX7pkA4dLOz/A=; b=Y6wQPvnxP1WMwzs01s4FkTvBay1I0KC17LWxukqMbswdTGNsBZmx3+W0YfTTCtW4Ov I45vrR+pAdgOcRkHNWCE1lUCFr0ED7son8+V0n40Ue3jzBgeEkkh+hE08PqT0GEuHbws MENnGkYM5MWKjiUoGPnqYa+dZbcXexlsaW3h09T013vSH+p4UuHB4j8gkIXJUP591AjK S+DFUJytx+pAuU57wcD1D/Uw1N4DhksP8bNEhTIH4laQOkh0KO0jTUDim0wMW4VyMlJd LvrLsXZ+sqU74npHMNzaU3S+Xsz0axf52ACKGCjbBEpCfZzdmi/WfdSAXxEAkaSFo+Ss kkhw== X-Gm-Message-State: AE9vXwNHjzZrJ/eAb4MMB3Z50AbnB7RWUoKcJAH+no9BwXnmDJ/xqsr7Aq0GYeTi0f6wYkUTd8TBgoQoakHpZw== X-Received: by 10.13.194.132 with SMTP id e126mr11908079ywd.140.1474774599102; Sat, 24 Sep 2016 20:36:39 -0700 (PDT) Original-Received: by 10.129.104.67 with HTTP; Sat, 24 Sep 2016 20:36:38 -0700 (PDT) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4002:c05::22e X-Mailman-Approved-At: Sun, 25 Sep 2016 02:21:03 -0400 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:207776 Archived-At: --001a114e732c1a94f0053d4cb85e Content-Type: multipart/alternative; boundary=001a114e732c1a94ed053d4cb85c --001a114e732c1a94ed053d4cb85c Content-Type: text/plain; charset=UTF-8 I've modified `describe-mode` to font-lock values as appropriate, and also cleaned up the code a bit. The changes should be self-evident. Right now I'm thinking about linking some of the more technical terms (e.g. "permanently local") to the Emacs Info manual. What is the right way to xref to Info manual nodes in the Help buffer? Thanks, Tianxiang Xiong --001a114e732c1a94ed053d4cb85c Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
I've modified `describe-mode` to font-lock values as a= ppropriate, and also cleaned up the code a bit. The changes should be self-= evident.

Right now I'm thinking about linking some o= f the more technical terms (e.g. "permanently local") to the Emac= s Info manual. What is the right way to xref to Info manual nodes in the He= lp buffer?

Thanks,

Tianxi= ang Xiong
--001a114e732c1a94ed053d4cb85c-- --001a114e732c1a94f0053d4cb85e Content-Type: text/x-patch; charset=US-ASCII; name="0001-Use-font-lock-for-describe-variable.patch" Content-Disposition: attachment; filename="0001-Use-font-lock-for-describe-variable.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iti2ndqd0 RnJvbSBkM2I5MjYxNmYzNWJlZjYxODAxNjIzNGJmMTU4MjM3YjU4YTVhNDEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaWFueGlhbmcgWGlvbmcgPHRpYW54aWFuZy54aW9uZ0BnbWFp bC5jb20+CkRhdGU6IFNhdCwgMjQgU2VwIDIwMTYgMTk6NTc6MjEgLTA3MDAKU3ViamVjdDogW1BB VENIXSBVc2UgZm9udC1sb2NrIGZvciBgZGVzY3JpYmUtdmFyaWFibGVgCgpBcyBhIHNpZGUgZWZm ZWN0LCBjbGVhbiB1cCBjb2RlLgotLS0KIGxpc3AvaGVscC1mbnMuZWwgfCAxMDUyICsrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNo YW5nZWQsIDUwNCBpbnNlcnRpb25zKCspLCA1NDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv bGlzcC9oZWxwLWZucy5lbCBiL2xpc3AvaGVscC1mbnMuZWwKaW5kZXggZTRlMjMzMy4uMDgzZGI1 ZiAxMDA2NDQKLS0tIGEvbGlzcC9oZWxwLWZucy5lbAorKysgYi9saXNwL2hlbHAtZm5zLmVsCkBA IC0zNSw2ICszNSw3IEBACiAocmVxdWlyZSAnY2wtbGliKQogKHJlcXVpcmUgJ2hlbHAtbW9kZSkK IChyZXF1aXJlICdyYWRpeC10cmVlKQorKHJlcXVpcmUgJ3N1YnIteCkKIAogKGRlZnZhciBoZWxw LWZucy1kZXNjcmliZS1mdW5jdGlvbi1mdW5jdGlvbnMgbmlsCiAgICJMaXN0IG9mIGZ1bmN0aW9u cyB0byBydW4gaW4gaGVscCBidWZmZXIgaW4gYGRlc2NyaWJlLWZ1bmN0aW9uJy4KQEAgLTEwOSwx NiArMTEwLDE2IEBAIGRlc2NyaWJlLWZ1bmN0aW9uCiAgICJEaXNwbGF5IHRoZSBmdWxsIGRvY3Vt ZW50YXRpb24gb2YgRlVOQ1RJT04gKGEgc3ltYm9sKS4iCiAgIChpbnRlcmFjdGl2ZQogICAgKGxl dCAoKGZuIChmdW5jdGlvbi1jYWxsZWQtYXQtcG9pbnQpKQotCSAoZW5hYmxlLXJlY3Vyc2l2ZS1t aW5pYnVmZmVycyB0KQotCSB2YWwpCisgICAgICAgICAoZW5hYmxlLXJlY3Vyc2l2ZS1taW5pYnVm ZmVycyB0KQorICAgICAgICAgdmFsKQogICAgICAoc2V0cSB2YWwgKGNvbXBsZXRpbmctcmVhZCAo aWYgZm4KLQkJCQkgICAgKGZvcm1hdCAiRGVzY3JpYmUgZnVuY3Rpb24gKGRlZmF1bHQgJXMpOiAi IGZuKQotCQkJCSAgIkRlc2NyaWJlIGZ1bmN0aW9uOiAiKQotCQkJCSMnaGVscC0tc3ltYm9sLWNv bXBsZXRpb24tdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3Jt YXQgIkRlc2NyaWJlIGZ1bmN0aW9uIChkZWZhdWx0ICVzKTogIiBmbikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiRGVzY3JpYmUgZnVuY3Rpb246ICIpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMnaGVscC0tc3ltYm9sLWNvbXBsZXRpb24tdGFibGUKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIydmYm91bmRwCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHQgbmlsIG5pbCAoYW5kIGZuIChzeW1ib2wtbmFtZSBmbikpKSkKICAgICAg KGxpc3QgKGlmIChlcXVhbCB2YWwgIiIpCi0JICAgICAgIGZuIChpbnRlcm4gdmFsKSkpKSkKKyAg ICAgICAgICAgICAgIGZuIChpbnRlcm4gdmFsKSkpKSkKICAgKG9yIChhbmQgZnVuY3Rpb24gKHN5 bWJvbHAgZnVuY3Rpb24pKQogICAgICAgKHVzZXItZXJyb3IgIllvdSBkaWRuJ3Qgc3BlY2lmeSBh IGZ1bmN0aW9uIHN5bWJvbCIpKQogICAob3IgKGZib3VuZHAgZnVuY3Rpb24pCkBAIC0xNTksMzYg KzE2MCwzNiBAQCBkZXNjcmliZS1mdW5jdGlvbgogOzsgICAiUmV0dXJuIHRoZSBuYW1lIG9mIHRo ZSBDIGZpbGUgd2hlcmUgU1VCUi1PUi1WQVIgaXMgZGVmaW5lZC4KIDs7IEtJTkQgc2hvdWxkIGJl IGB2YXInIGZvciBhIHZhcmlhYmxlIG9yIGBzdWJyJyBmb3IgYSBzdWJyb3V0aW5lLiIKIDs7ICAg KHN5bWJvbC1maWxlIChpZiAoc3ltYm9scCBzdWJyLW9yLXZhcikgc3Vici1vci12YXIKLTs7IAkJ IChzdWJyLW5hbWUgc3Vici1vci12YXIpKQotOzsgCSAgICAgICAoaWYgKGVxIGtpbmQgJ3Zhcikg J2RlZnZhciAnZGVmdW4pKSkKKzs7ICAgICAgICAgICAgICAgKHN1YnItbmFtZSBzdWJyLW9yLXZh cikpCis7OyAgICAgICAgICAgICAoaWYgKGVxIGtpbmQgJ3ZhcikgJ2RlZnZhciAnZGVmdW4pKSkK IDs7OyMjI2F1dG9sb2FkCiAoZGVmdW4gaGVscC1DLWZpbGUtbmFtZSAoc3Vici1vci12YXIga2lu ZCkKICAgIlJldHVybiB0aGUgbmFtZSBvZiB0aGUgQyBmaWxlIHdoZXJlIFNVQlItT1ItVkFSIGlz IGRlZmluZWQuCiBLSU5EIHNob3VsZCBiZSBgdmFyJyBmb3IgYSB2YXJpYWJsZSBvciBgc3Vicicg Zm9yIGEgc3Vicm91dGluZS4iCiAgIChsZXQgKChkb2NidWYgKGdldC1idWZmZXItY3JlYXRlICIg KkRPQyoiKSkKLQkobmFtZSAoaWYgKGVxICd2YXIga2luZCkKLQkJICAoY29uY2F0ICJWIiAoc3lt Ym9sLW5hbWUgc3Vici1vci12YXIpKQotCQkoY29uY2F0ICJGIiAoc3Vici1uYW1lIChhZHZpY2Ut LWNkKnIgc3Vici1vci12YXIpKSkpKSkKKyAgICAgICAgKG5hbWUgKGlmIChlcSAndmFyIGtpbmQp CisgICAgICAgICAgICAgICAgICAoY29uY2F0ICJWIiAoc3ltYm9sLW5hbWUgc3Vici1vci12YXIp KQorICAgICAgICAgICAgICAgIChjb25jYXQgIkYiIChzdWJyLW5hbWUgKGFkdmljZS0tY2QqciBz dWJyLW9yLXZhcikpKSkpKQogICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGRvY2J1ZgogICAgICAg KGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgIChpZiAoZW9icCkKLQkgIChpbnNlcnQtZmls ZS1jb250ZW50cy1saXRlcmFsbHkKLQkgICAoZXhwYW5kLWZpbGUtbmFtZSBpbnRlcm5hbC1kb2Mt ZmlsZS1uYW1lIGRvYy1kaXJlY3RvcnkpKSkKKyAgICAgICAgICAoaW5zZXJ0LWZpbGUtY29udGVu dHMtbGl0ZXJhbGx5CisgICAgICAgICAgIChleHBhbmQtZmlsZS1uYW1lIGludGVybmFsLWRvYy1m aWxlLW5hbWUgZG9jLWRpcmVjdG9yeSkpKQogICAgICAgKGxldCAoKGZpbGUgKGNhdGNoICdsb29w Ci0JCSAgICAod2hpbGUgdAotCQkgICAgICAobGV0ICgocG50IChzZWFyY2gtZm9yd2FyZCAoY29u Y2F0ICIfIiBuYW1lICJcbiIpKSkpCi0JCQkocmUtc2VhcmNoLWJhY2t3YXJkICIfU1xcKC4qXFwp IikKLQkJCShsZXQgKChmaWxlIChtYXRjaC1zdHJpbmcgMSkpKQotCQkJICAoaWYgKG1lbWJlciBm aWxlIGJ1aWxkLWZpbGVzKQotCQkJICAgICAgKHRocm93ICdsb29wIGZpbGUpCi0JCQkgICAgKGdv dG8tY2hhciBwbnQpKSkpKSkpKQotCShpZiAoc3RyaW5nLW1hdGNoICJebnMuKlxcKFxcLm9cXHxv YmpcXClcXCciIGZpbGUpCi0JICAgIChzZXRxIGZpbGUgKHJlcGxhY2UtbWF0Y2ggIi5tIiB0IHQg ZmlsZSAxKSkKLQkgIChpZiAoc3RyaW5nLW1hdGNoICJcXC5cXChvXFx8b2JqXFwpXFwnIiBmaWxl KQotCSAgICAgIChzZXRxIGZpbGUgKHJlcGxhY2UtbWF0Y2ggIi5jIiB0IHQgZmlsZSkpKSkKLQko aWYgKHN0cmluZy1tYXRjaCAiXFwuXFwoY1xcfG1cXClcXCciIGZpbGUpCi0JICAgIChjb25jYXQg InNyYy8iIGZpbGUpCi0JICBmaWxlKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgKHdoaWxlIHQK KyAgICAgICAgICAgICAgICAgICAgICAobGV0ICgocG50IChzZWFyY2gtZm9yd2FyZCAoY29uY2F0 ICIfIiBuYW1lICJcbiIpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAocmUtc2VhcmNoLWJh Y2t3YXJkICIfU1xcKC4qXFwpIikKKyAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChmaWxl IChtYXRjaC1zdHJpbmcgMSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKG1lbWJl ciBmaWxlIGJ1aWxkLWZpbGVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRocm93 ICdsb29wIGZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBwbnQp KSkpKSkpKQorICAgICAgICAoaWYgKHN0cmluZy1tYXRjaCAiXm5zLipcXChcXC5vXFx8b2JqXFwp XFwnIiBmaWxlKQorICAgICAgICAgICAgKHNldHEgZmlsZSAocmVwbGFjZS1tYXRjaCAiLm0iIHQg dCBmaWxlIDEpKQorICAgICAgICAgIChpZiAoc3RyaW5nLW1hdGNoICJcXC5cXChvXFx8b2JqXFwp XFwnIiBmaWxlKQorICAgICAgICAgICAgICAoc2V0cSBmaWxlIChyZXBsYWNlLW1hdGNoICIuYyIg dCB0IGZpbGUpKSkpCisgICAgICAgIChpZiAoc3RyaW5nLW1hdGNoICJcXC5cXChjXFx8bVxcKVxc JyIgZmlsZSkKKyAgICAgICAgICAgIChjb25jYXQgInNyYy8iIGZpbGUpCisgICAgICAgICAgZmls ZSkpKSkpCiAKIChkZWZjdXN0b20gaGVscC1kb3duY2FzZS1hcmd1bWVudHMgbmlsCiAgICJJZiBu b24tbmlsLCBhcmd1bWVudCBuYW1lcyBpbiAqSGVscCogYnVmZmVycyBhcmUgZG93bmNhc2VkLiIK QEAgLTIwMSw3ICsyMDIsNyBAQCBoZWxwLWhpZ2hsaWdodC1hcmcKIFJldHVybiBBUkcgaW4gZmFj ZSBgaGVscC1hcmd1bWVudC1uYW1lJzsgQVJHIGlzIGFsc28gZG93bmNhc2VkCiBpZiB0aGUgdmFy aWFibGUgYGhlbHAtZG93bmNhc2UtYXJndW1lbnRzJyBpcyBub24tbmlsLiIKICAgKHByb3BlcnRp emUgKGlmIGhlbHAtZG93bmNhc2UtYXJndW1lbnRzIChkb3duY2FzZSBhcmcpIGFyZykKLQkgICAg ICAnZmFjZSAnaGVscC1hcmd1bWVudC1uYW1lKSkKKyAgICAgICAgICAgICAgJ2ZhY2UgJ2hlbHAt YXJndW1lbnQtbmFtZSkpCiAKIChkZWZ1biBoZWxwLWRvLWFyZy1oaWdobGlnaHQgKGRvYyBhcmdz KQogICAod2l0aC1zeW50YXgtdGFibGUgKG1ha2Utc3ludGF4LXRhYmxlIGVtYWNzLWxpc3AtbW9k ZS1zeW50YXgtdGFibGUpCkBAIC0yNzUsNTAgKzI3Niw1MCBAQCBmaW5kLWxpc3Atb2JqZWN0LWZp bGUtbmFtZQogbWVhbnMgdGhhdCBPQkpFQ1QgaXMgYSBmdW5jdGlvbiBvciB2YXJpYWJsZSBkZWZp bmVkIGluIEMuICBJZiBubwogc3VpdGFibGUgZmlsZSBpcyBmb3VuZCwgcmV0dXJuIG5pbC4iCiAg IChsZXQqICgoYXV0b2xvYWRlZCAoYXV0b2xvYWRwIHR5cGUpKQotCSAoZmlsZS1uYW1lIChvciAo YW5kIGF1dG9sb2FkZWQgKG50aCAxIHR5cGUpKQotCQkJKHN5bWJvbC1maWxlCisgICAgICAgICAo ZmlsZS1uYW1lIChvciAoYW5kIGF1dG9sb2FkZWQgKG50aCAxIHR5cGUpKQorICAgICAgICAgICAg ICAgICAgICAgICAgKHN5bWJvbC1maWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgRklY TUU6IFdoeSBkbyB3ZSBoYXZlIHRoaXMgd2VpcmQgIklmIFRZUEUgaXMgdGhlCiAgICAgICAgICAg ICAgICAgICAgICAgICAgOzsgdmFsdWUgcmV0dXJuZWQgYnkgYHN5bWJvbC1mdW5jdGlvbicgZm9y IGEgZnVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBzeW1ib2wiIGV4Y2VwdGlv bj8KLQkJCSBvYmplY3QgKG9yIChpZiAoc3ltYm9scCB0eXBlKSB0eXBlKSAnZGVmdW4pKSkpKQor ICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdCAob3IgKGlmIChzeW1ib2xwIHR5cGUpIHR5 cGUpICdkZWZ1bikpKSkpCiAgICAgKGNvbmQKICAgICAgKGF1dG9sb2FkZWQKICAgICAgIDs7IEFu IGF1dG9sb2FkZWQgZnVuY3Rpb246IExvY2F0ZSB0aGUgZmlsZSBzaW5jZSBgc3ltYm9sLWZ1bmN0 aW9uJwogICAgICAgOzsgaGFzIG9ubHkgcmV0dXJuZWQgYSBiYXJlIHN0cmluZyBoZXJlLgogICAg ICAgKHNldHEgZmlsZS1uYW1lCi0JICAgIChsb2NhdGUtZmlsZSBmaWxlLW5hbWUgbG9hZC1wYXRo ICcoIi5lbCIgIi5lbGMiKSAncmVhZGFibGUpKSkKKyAgICAgICAgICAgIChsb2NhdGUtZmlsZSBm aWxlLW5hbWUgbG9hZC1wYXRoICcoIi5lbCIgIi5lbGMiKSAncmVhZGFibGUpKSkKICAgICAgKChh bmQgKHN0cmluZ3AgZmlsZS1uYW1lKQotCSAgIChzdHJpbmctbWF0Y2ggIlsuXSpsb2FkZGVmcy5l bFxcJyIgZmlsZS1uYW1lKSkKKyAgICAgICAgICAgKHN0cmluZy1tYXRjaCAiWy5dKmxvYWRkZWZz LmVsXFwnIiBmaWxlLW5hbWUpKQogICAgICAgOzsgQW4gYXV0b2xvYWRlZCB2YXJpYWJsZSBvciBm YWNlLiAgVmlzaXQgbG9hZGRlZnMuZWwgaW4gYSBidWZmZXIKICAgICAgIDs7IGFuZCB0cnkgdG8g ZXh0cmFjdCB0aGUgZGVmaW5pbmcgZmlsZS4gIFRoZSBmb2xsb3dpbmcgZm9ybSBpcwogICAgICAg OzsgZnJvbSBgZGVzY3JpYmUtZnVuY3Rpb24tMScgYW5kIGBkZXNjcmliZS12YXJpYWJsZScuCiAg ICAgICAobGV0ICgobG9jYXRpb24KLQkgICAgIChjb25kaXRpb24tY2FzZSBuaWwKLQkJIChmaW5k LWZ1bmN0aW9uLXNlYXJjaC1mb3Itc3ltYm9sIG9iamVjdCBuaWwgZmlsZS1uYW1lKQotCSAgICAg ICAoZXJyb3IgbmlsKSkpKQotCSh3aGVuIChjZHIgbG9jYXRpb24pCi0JICAod2l0aC1jdXJyZW50 LWJ1ZmZlciAoY2FyIGxvY2F0aW9uKQotCSAgICAoZ290by1jaGFyIChjZHIgbG9jYXRpb24pKQot CSAgICAod2hlbiAocmUtc2VhcmNoLWJhY2t3YXJkCi0JCSAgICJeOzs7IEdlbmVyYXRlZCBhdXRv bG9hZHMgZnJvbSBcXCguKlxcKSIgbmlsIHQpCi0JICAgICAgKHNldHEgZmlsZS1uYW1lCi0JCSAg ICAobG9jYXRlLWZpbGUKLQkJICAgICAoZmlsZS1uYW1lLXNhbnMtZXh0ZW5zaW9uCi0JCSAgICAg IChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyAxKSkKLQkJICAgICBsb2FkLXBhdGggJygiLmVs IiAiLmVsYyIpICdyZWFkYWJsZSkpKSkpKSkpCisgICAgICAgICAgICAgKGNvbmRpdGlvbi1jYXNl IG5pbAorICAgICAgICAgICAgICAgICAoZmluZC1mdW5jdGlvbi1zZWFyY2gtZm9yLXN5bWJvbCBv YmplY3QgbmlsIGZpbGUtbmFtZSkKKyAgICAgICAgICAgICAgIChlcnJvciBuaWwpKSkpCisgICAg ICAgICh3aGVuIChjZHIgbG9jYXRpb24pCisgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIg KGNhciBsb2NhdGlvbikKKyAgICAgICAgICAgIChnb3RvLWNoYXIgKGNkciBsb2NhdGlvbikpCisg ICAgICAgICAgICAod2hlbiAocmUtc2VhcmNoLWJhY2t3YXJkCisgICAgICAgICAgICAgICAgICAg Il47OzsgR2VuZXJhdGVkIGF1dG9sb2FkcyBmcm9tIFxcKC4qXFwpIiBuaWwgdCkKKyAgICAgICAg ICAgICAgKHNldHEgZmlsZS1uYW1lCisgICAgICAgICAgICAgICAgICAgIChsb2NhdGUtZmlsZQor ICAgICAgICAgICAgICAgICAgICAgKGZpbGUtbmFtZS1zYW5zLWV4dGVuc2lvbgorICAgICAgICAg ICAgICAgICAgICAgIChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyAxKSkKKyAgICAgICAgICAg ICAgICAgICAgIGxvYWQtcGF0aCAnKCIuZWwiICIuZWxjIikgJ3JlYWRhYmxlKSkpKSkpKSkKIAog ICAgIChjb25kCiAgICAgICgoYW5kIChub3QgZmlsZS1uYW1lKSAoc3VicnAgdHlwZSkpCiAgICAg ICA7OyBBIGJ1aWx0LWluIGZ1bmN0aW9uLiAgVGhlIGZvcm0gaXMgZnJvbSBgZGVzY3JpYmUtZnVu Y3Rpb24tMScuCiAgICAgICAoaWYgKGdldC1idWZmZXIgIiAqRE9DKiIpCi0JICAoaGVscC1DLWZp bGUtbmFtZSB0eXBlICdzdWJyKQotCSdDLXNvdXJjZSkpCisgICAgICAgICAgKGhlbHAtQy1maWxl LW5hbWUgdHlwZSAnc3VicikKKyAgICAgICAgJ0Mtc291cmNlKSkKICAgICAgKChhbmQgKG5vdCBm aWxlLW5hbWUpIChzeW1ib2xwIG9iamVjdCkKLQkgICAoaW50ZWdlcnAgKGdldCBvYmplY3QgJ3Zh cmlhYmxlLWRvY3VtZW50YXRpb24pKSkKKyAgICAgICAgICAgKGludGVnZXJwIChnZXQgb2JqZWN0 ICd2YXJpYWJsZS1kb2N1bWVudGF0aW9uKSkpCiAgICAgICA7OyBBIHZhcmlhYmxlIGRlZmluZWQg aW4gQy4gIFRoZSBmb3JtIGlzIGZyb20gYGRlc2NyaWJlLXZhcmlhYmxlJy4KICAgICAgIChpZiAo Z2V0LWJ1ZmZlciAiICpET0MqIikKLQkgIChoZWxwLUMtZmlsZS1uYW1lIG9iamVjdCAndmFyKQot CSdDLXNvdXJjZSkpCisgICAgICAgICAgKGhlbHAtQy1maWxlLW5hbWUgb2JqZWN0ICd2YXIpCisg ICAgICAgICdDLXNvdXJjZSkpCiAgICAgICgobm90IChzdHJpbmdwIGZpbGUtbmFtZSkpCiAgICAg ICA7OyBJZiB3ZSBkb24ndCBoYXZlIGEgZmlsZS1uYW1lIHN0cmluZyBieSBub3csIHdlIGxvc3Qu CiAgICAgICBuaWwpCkBAIC0zMjcsMzQgKzMyOCwzNCBAQCBmaW5kLWxpc3Atb2JqZWN0LWZpbGUt bmFtZQogICAgICA7OyBUaGlzIGFwcGxpZXMgdG8gY29uZmlnIGZpbGVzIGxpa2Ugfi8uZW1hY3Ms CiAgICAgIDs7IHdoaWNoIHBlb3BsZSBzb21ldGltZXMgY29tcGlsZS4KICAgICAgKChsZXQgKGZu KQotCShhbmQgKHN0cmluZy1tYXRjaCAiXFxgXFwuLipcXC5lbGNcXCciCi0JCQkgICAoZmlsZS1u YW1lLW5vbmRpcmVjdG9yeSBmaWxlLW5hbWUpKQotCSAgICAgKHN0cmluZy1lcXVhbCAoZmlsZS1u YW1lLWRpcmVjdG9yeSBmaWxlLW5hbWUpCi0JCQkgICAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSAo ZXhwYW5kLWZpbGUtbmFtZSAifiIpKSkKLQkgICAgIChmaWxlLXJlYWRhYmxlLXAgKHNldHEgZm4g KGZpbGUtbmFtZS1zYW5zLWV4dGVuc2lvbiBmaWxlLW5hbWUpKSkKLQkgICAgIGZuKSkpCisgICAg ICAgIChhbmQgKHN0cmluZy1tYXRjaCAiXFxgXFwuLipcXC5lbGNcXCciCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSBmaWxlLW5hbWUpKQorICAgICAg ICAgICAgIChzdHJpbmctZXF1YWwgKGZpbGUtbmFtZS1kaXJlY3RvcnkgZmlsZS1uYW1lKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkgKGV4cGFuZC1m aWxlLW5hbWUgIn4iKSkpCisgICAgICAgICAgICAgKGZpbGUtcmVhZGFibGUtcCAoc2V0cSBmbiAo ZmlsZS1uYW1lLXNhbnMtZXh0ZW5zaW9uIGZpbGUtbmFtZSkpKQorICAgICAgICAgICAgIGZuKSkp CiAgICAgIDs7IFdoZW4gdGhlIEVsaXNwIHNvdXJjZSBmaWxlIGNhbiBiZSBmb3VuZCBpbiB0aGUg aW5zdGFsbAogICAgICA7OyBkaXJlY3RvcnksIHJldHVybiB0aGUgbmFtZSBvZiB0aGF0IGZpbGUu CiAgICAgICgobGV0ICgobGliLW5hbWUKLQkgICAgIChpZiAoc3RyaW5nLW1hdGNoICJbLl1lbGNc XCciIGZpbGUtbmFtZSkKLQkJIChzdWJzdHJpbmctbm8tcHJvcGVydGllcyBmaWxlLW5hbWUgMCAt MSkKLQkgICAgICAgZmlsZS1uYW1lKSkpCi0JKG9yIChhbmQgKGZpbGUtcmVhZGFibGUtcCBsaWIt bmFtZSkgbGliLW5hbWUpCi0JICAgIDs7IFRoZSBsaWJyYXJ5IG1pZ2h0IGJlIGNvbXByZXNzZWQu Ci0JICAgIChhbmQgKGZpbGUtcmVhZGFibGUtcCAoY29uY2F0IGxpYi1uYW1lICIuZ3oiKSkgbGli LW5hbWUpKSkpCisgICAgICAgICAgICAgKGlmIChzdHJpbmctbWF0Y2ggIlsuXWVsY1xcJyIgZmls ZS1uYW1lKQorICAgICAgICAgICAgICAgICAoc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgZmlsZS1u YW1lIDAgLTEpCisgICAgICAgICAgICAgICBmaWxlLW5hbWUpKSkKKyAgICAgICAgKG9yIChhbmQg KGZpbGUtcmVhZGFibGUtcCBsaWItbmFtZSkgbGliLW5hbWUpCisgICAgICAgICAgICA7OyBUaGUg bGlicmFyeSBtaWdodCBiZSBjb21wcmVzc2VkLgorICAgICAgICAgICAgKGFuZCAoZmlsZS1yZWFk YWJsZS1wIChjb25jYXQgbGliLW5hbWUgIi5neiIpKSBsaWItbmFtZSkpKSkKICAgICAgKChsZXQq ICgobGliLW5hbWUgKGZpbGUtbmFtZS1ub25kaXJlY3RvcnkgZmlsZS1uYW1lKSkKLQkgICAgIDs7 IFRoZSBuZXh0IGZvcm0gaXMgZnJvbSBgZGVzY3JpYmUtc2ltcGxpZnktbGliLWZpbGUtbmFtZScu Ci0JICAgICAoZmlsZS1uYW1lCi0JICAgICAgOzsgVHJ5IGNvbnZlcnRpbmcgdGhlIGFic29sdXRl IGZpbGUgbmFtZSB0byBhIGxpYnJhcnkKLQkgICAgICA7OyBuYW1lLCBjb252ZXJ0IHRoYXQgYmFj ayB0byBhIGZpbGUgbmFtZSBhbmQgc2VlIGlmIHdlCi0JICAgICAgOzsgZ2V0IHRoZSBvcmlnaW5h bCBvbmUuICBJZiBzbywgdGhleSBhcmUgZXF1aXZhbGVudC4KLQkgICAgICAoaWYgKGVxdWFsIGZp bGUtbmFtZSAobG9jYXRlLWZpbGUgbGliLW5hbWUgbG9hZC1wYXRoICcoIiIpKSkKLQkJICAoaWYg KHN0cmluZy1tYXRjaCAiWy5dZWxjXFwnIiBsaWItbmFtZSkKLQkJICAgICAgKHN1YnN0cmluZy1u by1wcm9wZXJ0aWVzIGxpYi1uYW1lIDAgLTEpCi0JCSAgICBsaWItbmFtZSkKLQkJZmlsZS1uYW1l KSkKLQkgICAgIChzcmMtZmlsZSAobG9jYXRlLWxpYnJhcnkgZmlsZS1uYW1lIHQgbmlsICdyZWFk YWJsZSkpKQotCShhbmQgc3JjLWZpbGUgKGZpbGUtcmVhZGFibGUtcCBzcmMtZmlsZSkgc3JjLWZp bGUpKSkpKSkKKyAgICAgICAgICAgICA7OyBUaGUgbmV4dCBmb3JtIGlzIGZyb20gYGRlc2NyaWJl LXNpbXBsaWZ5LWxpYi1maWxlLW5hbWUnLgorICAgICAgICAgICAgIChmaWxlLW5hbWUKKyAgICAg ICAgICAgICAgOzsgVHJ5IGNvbnZlcnRpbmcgdGhlIGFic29sdXRlIGZpbGUgbmFtZSB0byBhIGxp YnJhcnkKKyAgICAgICAgICAgICAgOzsgbmFtZSwgY29udmVydCB0aGF0IGJhY2sgdG8gYSBmaWxl IG5hbWUgYW5kIHNlZSBpZiB3ZQorICAgICAgICAgICAgICA7OyBnZXQgdGhlIG9yaWdpbmFsIG9u ZS4gIElmIHNvLCB0aGV5IGFyZSBlcXVpdmFsZW50LgorICAgICAgICAgICAgICAoaWYgKGVxdWFs IGZpbGUtbmFtZSAobG9jYXRlLWZpbGUgbGliLW5hbWUgbG9hZC1wYXRoICcoIiIpKSkKKyAgICAg ICAgICAgICAgICAgIChpZiAoc3RyaW5nLW1hdGNoICJbLl1lbGNcXCciIGxpYi1uYW1lKQorICAg ICAgICAgICAgICAgICAgICAgIChzdWJzdHJpbmctbm8tcHJvcGVydGllcyBsaWItbmFtZSAwIC0x KQorICAgICAgICAgICAgICAgICAgICBsaWItbmFtZSkKKyAgICAgICAgICAgICAgICBmaWxlLW5h bWUpKQorICAgICAgICAgICAgIChzcmMtZmlsZSAobG9jYXRlLWxpYnJhcnkgZmlsZS1uYW1lIHQg bmlsICdyZWFkYWJsZSkpKQorICAgICAgICAoYW5kIHNyYy1maWxlIChmaWxlLXJlYWRhYmxlLXAg c3JjLWZpbGUpIHNyYy1maWxlKSkpKSkpCiAKIChkZWZ1biBoZWxwLWZucy0ta2V5LWJpbmRpbmdz IChmdW5jdGlvbikKICAgKHdoZW4gKGNvbW1hbmRwIGZ1bmN0aW9uKQpAQCAtMzc2LDcgKzM3Nyw3 IEBAIGhlbHAtZm5zLS1rZXktYmluZGluZ3MKICAgICAgICAgICAgICAgKHByaW5jICJJdHMga2V5 cyBhcmUgcmVtYXBwZWQgdG8gIikKICAgICAgICAgICAgICAgKHByaW5jIChpZiAoc3ltYm9scCBy ZW1hcHBlZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0LW1lc3NhZ2UgImAlcyci IHJlbWFwcGVkKQotCQkgICAgICAgImFuIGFub255bW91cyBjb21tYW5kIikpCisgICAgICAgICAg ICAgICAgICAgICAgICJhbiBhbm9ueW1vdXMgY29tbWFuZCIpKQogICAgICAgICAgICAgICAocHJp bmMgIi5cbiIpKQogCiAgICAgICAgICAgICAod2hlbiBrZXlzCkBAIC00ODksMTQgKzQ5MCwxNCBA QCBoZWxwLWZucy0tcGFyZW50LW1vZGUKIChkZWZ1biBoZWxwLWZucy0tb2Jzb2xldGUgKGZ1bmN0 aW9uKQogICA7OyBJZ25vcmUgbGFtYmRhIGNvbnN0cnVjdHMsIGtleWJvYXJkIG1hY3JvcywgZXRj LgogICAobGV0KiAoKG9ic29sZXRlIChhbmQgKHN5bWJvbHAgZnVuY3Rpb24pCi0JCQkoZ2V0IGZ1 bmN0aW9uICdieXRlLW9ic29sZXRlLWluZm8pKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChn ZXQgZnVuY3Rpb24gJ2J5dGUtb2Jzb2xldGUtaW5mbykpKQogICAgICAgICAgKHVzZSAoY2FyIG9i c29sZXRlKSkpCiAgICAgKHdoZW4gb2Jzb2xldGUKICAgICAgIChpbnNlcnQgIlxuVGhpcyAiCi0J ICAgICAgKGlmIChlcSAoY2FyLXNhZmUgKHN5bWJvbC1mdW5jdGlvbiBmdW5jdGlvbikpICdtYWNy bykKLQkJICAibWFjcm8iCi0JCSJmdW5jdGlvbiIpCi0JICAgICAgIiBpcyBvYnNvbGV0ZSIpCisg ICAgICAgICAgICAgIChpZiAoZXEgKGNhci1zYWZlIChzeW1ib2wtZnVuY3Rpb24gZnVuY3Rpb24p KSAnbWFjcm8pCisgICAgICAgICAgICAgICAgICAibWFjcm8iCisgICAgICAgICAgICAgICAgImZ1 bmN0aW9uIikKKyAgICAgICAgICAgICAgIiBpcyBvYnNvbGV0ZSIpCiAgICAgICAod2hlbiAobnRo IDIgb2Jzb2xldGUpCiAgICAgICAgIChpbnNlcnQgKGZvcm1hdCAiIHNpbmNlICVzIiAobnRoIDIg b2Jzb2xldGUpKSkpCiAgICAgICAoaW5zZXJ0IChjb25kICgoc3RyaW5ncCB1c2UpIChjb25jYXQg IjtcbiIgdXNlKSkKQEAgLTUwOSwxMyArNTEwLDEzIEBAIGhlbHAtZm5zLS1hdXRvbG9hZGVkLXAK ICAgIlJldHVybiBub24tbmlsIGlmIEZVTkNUSU9OIGhhcyBwcmV2aW91c2x5IGJlZW4gYXV0b2xv YWRlZC4KIEZJTEUgaXMgdGhlIGZpbGUgd2hlcmUgRlVOQ1RJT04gd2FzIHByb2JhYmx5IGRlZmlu ZWQuIgogICAobGV0KiAoKGZpbGUgKGZpbGUtbmFtZS1zYW5zLWV4dGVuc2lvbiAoZmlsZS10cnVl bmFtZSBmaWxlKSkpCi0JIChsb2FkLWhpc3QgbG9hZC1oaXN0b3J5KQotCSAodGFyZ2V0IChjb25z IHQgZnVuY3Rpb24pKQotCSBmb3VuZCkKKyAgICAgICAgIChsb2FkLWhpc3QgbG9hZC1oaXN0b3J5 KQorICAgICAgICAgKHRhcmdldCAoY29ucyB0IGZ1bmN0aW9uKSkKKyAgICAgICAgIGZvdW5kKQog ICAgICh3aGlsZSAoYW5kIGxvYWQtaGlzdCAobm90IGZvdW5kKSkKICAgICAgIChhbmQgKGNhYXIg bG9hZC1oaXN0KQotCSAgIChlcXVhbCAoZmlsZS1uYW1lLXNhbnMtZXh0ZW5zaW9uIChjYWFyIGxv YWQtaGlzdCkpIGZpbGUpCi0JICAgKHNldHEgZm91bmQgKG1lbWJlciB0YXJnZXQgKGNkYXIgbG9h ZC1oaXN0KSkpKQorICAgICAgICAgICAoZXF1YWwgKGZpbGUtbmFtZS1zYW5zLWV4dGVuc2lvbiAo Y2FhciBsb2FkLWhpc3QpKSBmaWxlKQorICAgICAgICAgICAoc2V0cSBmb3VuZCAobWVtYmVyIHRh cmdldCAoY2RhciBsb2FkLWhpc3QpKSkpCiAgICAgICAoc2V0cSBsb2FkLWhpc3QgKGNkciBsb2Fk LWhpc3QpKSkKICAgICBmb3VuZCkpCiAKQEAgLTU1NiwxMjggKzU1NywxMjggQEAgaGVscC1mbnMt c2hvcnQtZmlsZW5hbWUKIDs7OyMjI2F1dG9sb2FkCiAoZGVmdW4gZGVzY3JpYmUtZnVuY3Rpb24t MSAoZnVuY3Rpb24pCiAgIChsZXQqICgoYWR2aXNlZCAoYW5kIChzeW1ib2xwIGZ1bmN0aW9uKQot CQkgICAgICAgKGZlYXR1cmVwICduYWR2aWNlKQotCQkgICAgICAgKGFkdmljZS0tcCAoYWR2aWNl LS1zeW1ib2wtZnVuY3Rpb24gZnVuY3Rpb24pKSkpCi0JIDs7IElmIHRoZSBmdW5jdGlvbiBpcyBh ZHZpc2VkLCB1c2UgdGhlIHN5bWJvbCB0aGF0IGhhcyB0aGUKLQkgOzsgcmVhbCBkZWZpbml0aW9u LCBpZiB0aGF0IHN5bWJvbCBpcyBhbHJlYWR5IHNldCB1cC4KLQkgKHJlYWwtZnVuY3Rpb24KLQkg IChvciAoYW5kIGFkdmlzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgKGZlYXR1cmVwICduYWR2 aWNlKQorICAgICAgICAgICAgICAgICAgICAgICAoYWR2aWNlLS1wIChhZHZpY2UtLXN5bWJvbC1m dW5jdGlvbiBmdW5jdGlvbikpKSkKKyAgICAgICAgIDs7IElmIHRoZSBmdW5jdGlvbiBpcyBhZHZp c2VkLCB1c2UgdGhlIHN5bWJvbCB0aGF0IGhhcyB0aGUKKyAgICAgICAgIDs7IHJlYWwgZGVmaW5p dGlvbiwgaWYgdGhhdCBzeW1ib2wgaXMgYWxyZWFkeSBzZXQgdXAuCisgICAgICAgICAocmVhbC1m dW5jdGlvbgorICAgICAgICAgIChvciAoYW5kIGFkdmlzZWQKICAgICAgICAgICAgICAgICAgICAo YWR2aWNlLS1jZCpyIChhZHZpY2UtLXN5bWJvbC1mdW5jdGlvbiBmdW5jdGlvbikpKQotCSAgICAg IGZ1bmN0aW9uKSkKLQkgOzsgR2V0IHRoZSByZWFsIGRlZmluaXRpb24uCi0JIChkZWYgKGlmIChz eW1ib2xwIHJlYWwtZnVuY3Rpb24pCi0JCSAgKG9yIChzeW1ib2wtZnVuY3Rpb24gcmVhbC1mdW5j dGlvbikKLQkJICAgICAgKHNpZ25hbCAndm9pZC1mdW5jdGlvbiAobGlzdCByZWFsLWZ1bmN0aW9u KSkpCi0JCXJlYWwtZnVuY3Rpb24pKQotCSAoYWxpYXNlZCAob3IgKHN5bWJvbHAgZGVmKQotCQkg ICAgICA7OyBBZHZpc2VkICYgYWxpYXNlZCBmdW5jdGlvbi4KLQkJICAgICAgKGFuZCBhZHZpc2Vk IChzeW1ib2xwIHJlYWwtZnVuY3Rpb24pCi0JCQkgICAobm90IChlcSAnYXV0b2xvYWQgKGNhci1z YWZlIGRlZikpKSkKKyAgICAgICAgICAgICAgZnVuY3Rpb24pKQorICAgICAgICAgOzsgR2V0IHRo ZSByZWFsIGRlZmluaXRpb24uCisgICAgICAgICAoZGVmIChpZiAoc3ltYm9scCByZWFsLWZ1bmN0 aW9uKQorICAgICAgICAgICAgICAgICAgKG9yIChzeW1ib2wtZnVuY3Rpb24gcmVhbC1mdW5jdGlv bikKKyAgICAgICAgICAgICAgICAgICAgICAoc2lnbmFsICd2b2lkLWZ1bmN0aW9uIChsaXN0IHJl YWwtZnVuY3Rpb24pKSkKKyAgICAgICAgICAgICAgICByZWFsLWZ1bmN0aW9uKSkKKyAgICAgICAg IChhbGlhc2VkIChvciAoc3ltYm9scCBkZWYpCisgICAgICAgICAgICAgICAgICAgICAgOzsgQWR2 aXNlZCAmIGFsaWFzZWQgZnVuY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgKGFuZCBhZHZp c2VkIChzeW1ib2xwIHJlYWwtZnVuY3Rpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAo bm90IChlcSAnYXV0b2xvYWQgKGNhci1zYWZlIGRlZikpKSkKICAgICAgICAgICAgICAgICAgICAg ICAoYW5kIChzdWJycCBkZWYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChzdHJp bmc9IChzdWJyLW5hbWUgZGVmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoc3ltYm9sLW5hbWUgZnVuY3Rpb24pKSkpKSkKLQkgKHJlYWwtZGVmIChjb25kCisgICAg ICAgICAocmVhbC1kZWYgKGNvbmQKICAgICAgICAgICAgICAgICAgICAgKChhbmQgYWxpYXNlZCAo bm90IChzdWJycCBkZWYpKSkKICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChmIHJlYWwtZnVu Y3Rpb24pKQogICAgICAgICAgICAgICAgICAgICAgICAod2hpbGUgKGFuZCAoZmJvdW5kcCBmKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3ltYm9scCAoc3ltYm9sLWZ1bmN0 aW9uIGYpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBmIChzeW1ib2wtZnVuY3Rp b24gZikpKQogICAgICAgICAgICAgICAgICAgICAgICBmKSkKLQkJICAgICgoc3VicnAgZGVmKSAo aW50ZXJuIChzdWJyLW5hbWUgZGVmKSkpCi0JCSAgICAodCBkZWYpKSkKLQkgKHNpZy1rZXkgKGlm IChzdWJycCBkZWYpCisgICAgICAgICAgICAgICAgICAgICgoc3VicnAgZGVmKSAoaW50ZXJuIChz dWJyLW5hbWUgZGVmKSkpCisgICAgICAgICAgICAgICAgICAgICh0IGRlZikpKQorICAgICAgICAg KHNpZy1rZXkgKGlmIChzdWJycCBkZWYpCiAgICAgICAgICAgICAgICAgICAgICAgKGluZGlyZWN0 LWZ1bmN0aW9uIHJlYWwtZGVmKQogICAgICAgICAgICAgICAgICAgICByZWFsLWRlZikpCi0JIChm aWxlLW5hbWUgKGZpbmQtbGlzcC1vYmplY3QtZmlsZS1uYW1lIGZ1bmN0aW9uIChpZiBhbGlhc2Vk ICdkZWZ1bgorICAgICAgICAgKGZpbGUtbmFtZSAoZmluZC1saXNwLW9iamVjdC1maWxlLW5hbWUg ZnVuY3Rpb24gKGlmIGFsaWFzZWQgJ2RlZnVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZikpKQogICAgICAgICAgKHB0MSAod2l0 aC1jdXJyZW50LWJ1ZmZlciAoaGVscC1idWZmZXIpIChwb2ludCkpKQotCSAoYmVnIChpZiAoYW5k IChvciAoYnl0ZS1jb2RlLWZ1bmN0aW9uLXAgZGVmKQotCQkJICAgKGtleW1hcHAgZGVmKQotCQkJ ICAgKG1lbXEgKGNhci1zYWZlIGRlZikgJyhtYWNybyBsYW1iZGEgY2xvc3VyZSkpKQotCQkgICAg ICAgKHN0cmluZ3AgZmlsZS1uYW1lKQotCQkgICAgICAgKGhlbHAtZm5zLS1hdXRvbG9hZGVkLXAg ZnVuY3Rpb24gZmlsZS1uYW1lKSkKLQkJICAoaWYgKGNvbW1hbmRwIGRlZikKLQkJICAgICAgImFu IGludGVyYWN0aXZlIGF1dG9sb2FkZWQgIgotCQkgICAgImFuIGF1dG9sb2FkZWQgIikKLQkJKGlm IChjb21tYW5kcCBkZWYpICJhbiBpbnRlcmFjdGl2ZSAiICJhICIpKSkpCisgICAgICAgICAoYmVn IChpZiAoYW5kIChvciAoYnl0ZS1jb2RlLWZ1bmN0aW9uLXAgZGVmKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGtleW1hcHAgZGVmKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1l bXEgKGNhci1zYWZlIGRlZikgJyhtYWNybyBsYW1iZGEgY2xvc3VyZSkpKQorICAgICAgICAgICAg ICAgICAgICAgICAoc3RyaW5ncCBmaWxlLW5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICho ZWxwLWZucy0tYXV0b2xvYWRlZC1wIGZ1bmN0aW9uIGZpbGUtbmFtZSkpCisgICAgICAgICAgICAg ICAgICAoaWYgKGNvbW1hbmRwIGRlZikKKyAgICAgICAgICAgICAgICAgICAgICAiYW4gaW50ZXJh Y3RpdmUgYXV0b2xvYWRlZCAiCisgICAgICAgICAgICAgICAgICAgICJhbiBhdXRvbG9hZGVkICIp CisgICAgICAgICAgICAgICAgKGlmIChjb21tYW5kcCBkZWYpICJhbiBpbnRlcmFjdGl2ZSAiICJh ICIpKSkpCiAKICAgICA7OyBQcmludCB3aGF0IGtpbmQgb2YgZnVuY3Rpb24tbGlrZSBvYmplY3Qg RlVOQ1RJT04gaXMuCiAgICAgKHByaW5jIChjb25kICgob3IgKHN0cmluZ3AgZGVmKSAodmVjdG9y cCBkZWYpKQotCQkgICJhIGtleWJvYXJkIG1hY3JvIikKLQkJIDs7IEFsaWFzZXMgYXJlIExpc3Ag ZnVuY3Rpb25zLCBzbyB3ZSBuZWVkIHRvIGNoZWNrCi0JCSA7OyBhbGlhc2VzIGJlZm9yZSBmdW5j dGlvbnMuCi0JCSAoYWxpYXNlZAotCQkgIChmb3JtYXQtbWVzc2FnZSAiYW4gYWxpYXMgZm9yIGAl cyciIHJlYWwtZGVmKSkKLQkJICgoc3VicnAgZGVmKQotCQkgIChpZiAoZXEgJ3VuZXZhbGxlZCAo Y2RyIChzdWJyLWFyaXR5IGRlZikpKQotCQkgICAgICAoY29uY2F0IGJlZyAic3BlY2lhbCBmb3Jt IikKLQkJICAgIChjb25jYXQgYmVnICJidWlsdC1pbiBmdW5jdGlvbiIpKSkKLQkJICgoYXV0b2xv YWRwIGRlZikKLQkJICAoZm9ybWF0ICIlcyBhdXRvbG9hZGVkICVzIgotCQkJICAoaWYgKGNvbW1h bmRwIGRlZikgImFuIGludGVyYWN0aXZlIiAiYW4iKQotCQkJICAoaWYgKGVxIChudGggNCBkZWYp ICdrZXltYXApICJrZXltYXAiCi0JCQkgICAgKGlmIChudGggNCBkZWYpICJMaXNwIG1hY3JvIiAi TGlzcCBmdW5jdGlvbiIpKSkpCi0JCSAoKG9yIChlcSAoY2FyLXNhZmUgZGVmKSAnbWFjcm8pCi0J CSAgICAgIDs7IEZvciBhZHZpc2VkIG1hY3JvcywgZGVmIGlzIGEgbGFtYmRhCi0JCSAgICAgIDs7 IGV4cHJlc3Npb24gb3IgYSBieXRlLWNvZGUtZnVuY3Rpb24tcCwgc28gd2UKLQkJICAgICAgOzsg bmVlZCB0byBjaGVjayBtYWNyb3MgYmVmb3JlIGZ1bmN0aW9ucy4KLQkJICAgICAgKG1hY3JvcCBm dW5jdGlvbikpCi0JCSAgKGNvbmNhdCBiZWcgIkxpc3AgbWFjcm8iKSkKLQkJICgoYnl0ZS1jb2Rl LWZ1bmN0aW9uLXAgZGVmKQotCQkgIChjb25jYXQgYmVnICJjb21waWxlZCBMaXNwIGZ1bmN0aW9u IikpCi0JCSAoKGVxIChjYXItc2FmZSBkZWYpICdsYW1iZGEpCi0JCSAgKGNvbmNhdCBiZWcgIkxp c3AgZnVuY3Rpb24iKSkKLQkJICgoZXEgKGNhci1zYWZlIGRlZikgJ2Nsb3N1cmUpCi0JCSAgKGNv bmNhdCBiZWcgIkxpc3AgY2xvc3VyZSIpKQotCQkgKChrZXltYXBwIGRlZikKLQkJICAobGV0ICgo aXMtZnVsbCBuaWwpCi0JCQkoZWx0cyAoY2RyLXNhZmUgZGVmKSkpCi0JCSAgICAod2hpbGUgZWx0 cwotCQkgICAgICAoaWYgKGNoYXItdGFibGUtcCAoY2FyLXNhZmUgZWx0cykpCi0JCQkgIChzZXRx IGlzLWZ1bGwgdAotCQkJCWVsdHMgbmlsKSkKLQkJICAgICAgKHNldHEgZWx0cyAoY2RyLXNhZmUg ZWx0cykpKQotCQkgICAgKGNvbmNhdCBiZWcgKGlmIGlzLWZ1bGwgImtleW1hcCIgInNwYXJzZSBr ZXltYXAiKSkpKQotCQkgKHQgIiIpKSkKKyAgICAgICAgICAgICAgICAgICJhIGtleWJvYXJkIG1h Y3JvIikKKyAgICAgICAgICAgICAgICAgOzsgQWxpYXNlcyBhcmUgTGlzcCBmdW5jdGlvbnMsIHNv IHdlIG5lZWQgdG8gY2hlY2sKKyAgICAgICAgICAgICAgICAgOzsgYWxpYXNlcyBiZWZvcmUgZnVu Y3Rpb25zLgorICAgICAgICAgICAgICAgICAoYWxpYXNlZAorICAgICAgICAgICAgICAgICAgKGZv cm1hdC1tZXNzYWdlICJhbiBhbGlhcyBmb3IgYCVzJyIgcmVhbC1kZWYpKQorICAgICAgICAgICAg ICAgICAoKHN1YnJwIGRlZikKKyAgICAgICAgICAgICAgICAgIChpZiAoZXEgJ3VuZXZhbGxlZCAo Y2RyIChzdWJyLWFyaXR5IGRlZikpKQorICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQgYmVn ICJzcGVjaWFsIGZvcm0iKQorICAgICAgICAgICAgICAgICAgICAoY29uY2F0IGJlZyAiYnVpbHQt aW4gZnVuY3Rpb24iKSkpCisgICAgICAgICAgICAgICAgICgoYXV0b2xvYWRwIGRlZikKKyAgICAg ICAgICAgICAgICAgIChmb3JtYXQgIiVzIGF1dG9sb2FkZWQgJXMiCisgICAgICAgICAgICAgICAg ICAgICAgICAgIChpZiAoY29tbWFuZHAgZGVmKSAiYW4gaW50ZXJhY3RpdmUiICJhbiIpCisgICAg ICAgICAgICAgICAgICAgICAgICAgIChpZiAoZXEgKG50aCA0IGRlZikgJ2tleW1hcCkgImtleW1h cCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKG50aCA0IGRlZikgIkxpc3AgbWFj cm8iICJMaXNwIGZ1bmN0aW9uIikpKSkKKyAgICAgICAgICAgICAgICAgKChvciAoZXEgKGNhci1z YWZlIGRlZikgJ21hY3JvKQorICAgICAgICAgICAgICAgICAgICAgIDs7IEZvciBhZHZpc2VkIG1h Y3JvcywgZGVmIGlzIGEgbGFtYmRhCisgICAgICAgICAgICAgICAgICAgICAgOzsgZXhwcmVzc2lv biBvciBhIGJ5dGUtY29kZS1mdW5jdGlvbi1wLCBzbyB3ZQorICAgICAgICAgICAgICAgICAgICAg IDs7IG5lZWQgdG8gY2hlY2sgbWFjcm9zIGJlZm9yZSBmdW5jdGlvbnMuCisgICAgICAgICAgICAg ICAgICAgICAgKG1hY3JvcCBmdW5jdGlvbikpCisgICAgICAgICAgICAgICAgICAoY29uY2F0IGJl ZyAiTGlzcCBtYWNybyIpKQorICAgICAgICAgICAgICAgICAoKGJ5dGUtY29kZS1mdW5jdGlvbi1w IGRlZikKKyAgICAgICAgICAgICAgICAgIChjb25jYXQgYmVnICJjb21waWxlZCBMaXNwIGZ1bmN0 aW9uIikpCisgICAgICAgICAgICAgICAgICgoZXEgKGNhci1zYWZlIGRlZikgJ2xhbWJkYSkKKyAg ICAgICAgICAgICAgICAgIChjb25jYXQgYmVnICJMaXNwIGZ1bmN0aW9uIikpCisgICAgICAgICAg ICAgICAgICgoZXEgKGNhci1zYWZlIGRlZikgJ2Nsb3N1cmUpCisgICAgICAgICAgICAgICAgICAo Y29uY2F0IGJlZyAiTGlzcCBjbG9zdXJlIikpCisgICAgICAgICAgICAgICAgICgoa2V5bWFwcCBk ZWYpCisgICAgICAgICAgICAgICAgICAobGV0ICgoaXMtZnVsbCBuaWwpCisgICAgICAgICAgICAg ICAgICAgICAgICAoZWx0cyAoY2RyLXNhZmUgZGVmKSkpCisgICAgICAgICAgICAgICAgICAgICh3 aGlsZSBlbHRzCisgICAgICAgICAgICAgICAgICAgICAgKGlmIChjaGFyLXRhYmxlLXAgKGNhci1z YWZlIGVsdHMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBpcy1mdWxsIHQKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWx0cyBuaWwpKQorICAgICAgICAgICAgICAg ICAgICAgIChzZXRxIGVsdHMgKGNkci1zYWZlIGVsdHMpKSkKKyAgICAgICAgICAgICAgICAgICAg KGNvbmNhdCBiZWcgKGlmIGlzLWZ1bGwgImtleW1hcCIgInNwYXJzZSBrZXltYXAiKSkpKQorICAg ICAgICAgICAgICAgICAodCAiIikpKQogCiAgICAgKGlmIChhbmQgYWxpYXNlZCAobm90IChmYm91 bmRwIHJlYWwtZGVmKSkpCi0JKHByaW5jICIsXG53aGljaCBpcyBub3QgZGVmaW5lZC4gIFBsZWFz ZSBtYWtlIGEgYnVnIHJlcG9ydC4iKQorICAgICAgICAocHJpbmMgIixcbndoaWNoIGlzIG5vdCBk ZWZpbmVkLiAgUGxlYXNlIG1ha2UgYSBidWcgcmVwb3J0LiIpCiAgICAgICAod2l0aC1jdXJyZW50 LWJ1ZmZlciBzdGFuZGFyZC1vdXRwdXQKLQkoc2F2ZS1leGN1cnNpb24KLQkgIChzYXZlLW1hdGNo LWRhdGEKLQkgICAgKHdoZW4gKHJlLXNlYXJjaC1iYWNrd2FyZCAoc3Vic3RpdHV0ZS1jb21tYW5k LWtleXMKKyAgICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgKHNhdmUtbWF0Y2gtZGF0 YQorICAgICAgICAgICAgKHdoZW4gKHJlLXNlYXJjaC1iYWNrd2FyZCAoc3Vic3RpdHV0ZS1jb21t YW5kLWtleXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbGlhcyBm b3IgYFxcKFteYCddK1xcKSciKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBuaWwgdCkKLQkgICAgICAoaGVscC14cmVmLWJ1dHRvbiAxICdoZWxwLWZ1bmN0aW9uIHJlYWwt ZGVmKSkpKSkKKyAgICAgICAgICAgICAgKGhlbHAteHJlZi1idXR0b24gMSAnaGVscC1mdW5jdGlv biByZWFsLWRlZikpKSkpCiAKICAgICAgICh3aGVuIGZpbGUtbmFtZQotCTs7IFdlIHVzZWQgdG8g YWRkIC5lbCB0byB0aGUgZmlsZSBuYW1lLAotCTs7IGJ1dCB0aGF0J3MgY29tcGxldGVseSB3cm9u ZyB3aGVuIHRoZSB1c2VyIHVzZWQgbG9hZC1maWxlLgotCShwcmluYyAoZm9ybWF0LW1lc3NhZ2Ug IiBpbiBgJXMnIgorICAgICAgICA7OyBXZSB1c2VkIHRvIGFkZCAuZWwgdG8gdGhlIGZpbGUgbmFt ZSwKKyAgICAgICAgOzsgYnV0IHRoYXQncyBjb21wbGV0ZWx5IHdyb25nIHdoZW4gdGhlIHVzZXIg dXNlZCBsb2FkLWZpbGUuCisgICAgICAgIChwcmluYyAoZm9ybWF0LW1lc3NhZ2UgIiBpbiBgJXMn IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoZXEgZmlsZS1uYW1lICdDLXNv dXJjZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkMgc291cmNlIGNvZGUi CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGVscC1mbnMtc2hvcnQtZmlsZW5h bWUgZmlsZS1uYW1lKSkpKQotCTs7IE1ha2UgYSBoeXBlcmxpbmsgdG8gdGhlIGxpYnJhcnkuCi0J KHdpdGgtY3VycmVudC1idWZmZXIgc3RhbmRhcmQtb3V0cHV0Ci0JICAoc2F2ZS1leGN1cnNpb24K LQkgICAgKHJlLXNlYXJjaC1iYWNrd2FyZCAoc3Vic3RpdHV0ZS1jb21tYW5kLWtleXMgImBcXChb XmAnXStcXCknIikKKyAgICAgICAgOzsgTWFrZSBhIGh5cGVybGluayB0byB0aGUgbGlicmFyeS4K KyAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgc3RhbmRhcmQtb3V0cHV0CisgICAgICAgICAg KHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAocmUtc2VhcmNoLWJhY2t3YXJkIChzdWJzdGl0 dXRlLWNvbW1hbmQta2V5cyAiYFxcKFteYCddK1xcKSciKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBuaWwgdCkKLQkgICAgKGhlbHAteHJlZi1idXR0b24gMSAnaGVscC1mdW5jdGlv bi1kZWYgZnVuY3Rpb24gZmlsZS1uYW1lKSkpKQorICAgICAgICAgICAgKGhlbHAteHJlZi1idXR0 b24gMSAnaGVscC1mdW5jdGlvbi1kZWYgZnVuY3Rpb24gZmlsZS1uYW1lKSkpKQogICAgICAgKHBy aW5jICIuIikKICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIChoZWxwLWJ1ZmZlcikKLQkoZmls bC1yZWdpb24tYXMtcGFyYWdyYXBoIChzYXZlLWV4Y3Vyc2lvbiAoZ290by1jaGFyIHB0MSkgKGZv cndhcmQtbGluZSAwKSAocG9pbnQpKQotCQkJCSAgKHBvaW50KSkpCisgICAgICAgIChmaWxsLXJl Z2lvbi1hcy1wYXJhZ3JhcGggKHNhdmUtZXhjdXJzaW9uIChnb3RvLWNoYXIgcHQxKSAoZm9yd2Fy ZC1saW5lIDApIChwb2ludCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBv aW50KSkpCiAgICAgICAodGVycHJpKSh0ZXJwcmkpCiAKICAgICAgIChsZXQgKChkb2MtcmF3IChk b2N1bWVudGF0aW9uIGZ1bmN0aW9uIHQpKQogICAgICAgICAgICAgKGtleS1iaW5kaW5ncy1idWZm ZXIgKGN1cnJlbnQtYnVmZmVyKSkpCiAKLQk7OyBJZiB0aGUgZnVuY3Rpb24gaXMgYXV0b2xvYWRl ZCwgYW5kIGl0cyBkb2NzdHJpbmcgaGFzCi0JOzsga2V5IHN1YnN0aXR1dGlvbiBjb25zdHJ1Y3Rz LCBsb2FkIHRoZSBsaWJyYXJ5LgotCShhbmQgKGF1dG9sb2FkcCByZWFsLWRlZikgZG9jLXJhdwot CSAgICAgaGVscC1lbmFibGUtYXV0by1sb2FkCi0JICAgICAoc3RyaW5nLW1hdGNoICJcXChbXlxc XT1cXHxbXj1dXFx8XFxgXFwpXFxcXFtbezxdIiBkb2MtcmF3KQotCSAgICAgKGF1dG9sb2FkLWRv LWxvYWQgcmVhbC1kZWYpKQorICAgICAgICA7OyBJZiB0aGUgZnVuY3Rpb24gaXMgYXV0b2xvYWRl ZCwgYW5kIGl0cyBkb2NzdHJpbmcgaGFzCisgICAgICAgIDs7IGtleSBzdWJzdGl0dXRpb24gY29u c3RydWN0cywgbG9hZCB0aGUgbGlicmFyeS4KKyAgICAgICAgKGFuZCAoYXV0b2xvYWRwIHJlYWwt ZGVmKSBkb2MtcmF3CisgICAgICAgICAgICAgaGVscC1lbmFibGUtYXV0by1sb2FkCisgICAgICAg ICAgICAgKHN0cmluZy1tYXRjaCAiXFwoW15cXF09XFx8W149XVxcfFxcYFxcKVxcXFxbW3s8XSIg ZG9jLXJhdykKKyAgICAgICAgICAgICAoYXV0b2xvYWQtZG8tbG9hZCByZWFsLWRlZikpCiAKICAg ICAgICAgKGhlbHAtZm5zLS1rZXktYmluZGluZ3MgZnVuY3Rpb24pCiAgICAgICAgICh3aXRoLWN1 cnJlbnQtYnVmZmVyIHN0YW5kYXJkLW91dHB1dApAQCAtNzA4LDE1ICs3MDksMTUgQEAgdmFyaWFi bGUtYXQtcG9pbnQKIElmIEFOWS1TWU1CT0wgaXMgbm9uLW5pbCwgZG9uJ3QgaW5zaXN0IHRoZSBz eW1ib2wgYmUgYm91bmQuIgogICAod2l0aC1zeW50YXgtdGFibGUgZW1hY3MtbGlzcC1tb2RlLXN5 bnRheC10YWJsZQogICAgIChvciAoY29uZGl0aW9uLWNhc2UgKCkKLQkgICAgKHNhdmUtZXhjdXJz aW9uCi0JICAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiJyIpCi0JICAgICAgKG9yIChub3QgKHpl cm9wIChza2lwLXN5bnRheC1iYWNrd2FyZCAiX3ciKSkpCi0JCSAgKGVxIChjaGFyLXN5bnRheCAo Zm9sbG93aW5nLWNoYXIpKSA/dykKLQkJICAoZXEgKGNoYXItc3ludGF4IChmb2xsb3dpbmctY2hh cikpID9fKQotCQkgIChmb3J3YXJkLXNleHAgLTEpKQotCSAgICAgIChza2lwLWNoYXJzLWZvcndh cmQgIiciKQotCSAgICAgIChsZXQgKChvYmogKHJlYWQgKGN1cnJlbnQtYnVmZmVyKSkpKQotCQko YW5kIChzeW1ib2xwIG9iaikgKGJvdW5kcCBvYmopIG9iaikpKQorICAgICAgICAgICAgKHNhdmUt ZXhjdXJzaW9uCisgICAgICAgICAgICAgIChza2lwLWNoYXJzLWZvcndhcmQgIiciKQorICAgICAg ICAgICAgICAob3IgKG5vdCAoemVyb3AgKHNraXAtc3ludGF4LWJhY2t3YXJkICJfdyIpKSkKKyAg ICAgICAgICAgICAgICAgIChlcSAoY2hhci1zeW50YXggKGZvbGxvd2luZy1jaGFyKSkgP3cpCisg ICAgICAgICAgICAgICAgICAoZXEgKGNoYXItc3ludGF4IChmb2xsb3dpbmctY2hhcikpID9fKQor ICAgICAgICAgICAgICAgICAgKGZvcndhcmQtc2V4cCAtMSkpCisgICAgICAgICAgICAgIChza2lw LWNoYXJzLWZvcndhcmQgIiciKQorICAgICAgICAgICAgICAobGV0ICgob2JqIChyZWFkIChjdXJy ZW50LWJ1ZmZlcikpKSkKKyAgICAgICAgICAgICAgICAoYW5kIChzeW1ib2xwIG9iaikgKGJvdW5k cCBvYmopIG9iaikpKQogICAgICAgICAgIChlcnJvciBuaWwpKQogICAgICAgICAobGV0KiAoKHN0 ciAoZmluZC10YWctZGVmYXVsdCkpCiAgICAgICAgICAgICAgICAoc3ltIChpZiBzdHIgKGludGVy bi1zb2Z0IHN0cikpKSkKQEAgLTczMCwzMzcgKzczMSwyOTIgQEAgdmFyaWFibGUtYXQtcG9pbnQK IAogKGRlZnVuIGRlc2NyaWJlLXZhcmlhYmxlLWN1c3RvbS12ZXJzaW9uLWluZm8gKHZhcmlhYmxl KQogICAobGV0ICgoY3VzdG9tLXZlcnNpb24gKGdldCB2YXJpYWJsZSAnY3VzdG9tLXZlcnNpb24p KQotCShjcHYgKGdldCB2YXJpYWJsZSAnY3VzdG9tLXBhY2thZ2UtdmVyc2lvbikpCi0JKG91dHB1 dCBuaWwpKQorICAgICAgICAoY3B2IChnZXQgdmFyaWFibGUgJ2N1c3RvbS1wYWNrYWdlLXZlcnNp b24pKQorICAgICAgICAob3V0cHV0IG5pbCkpCiAgICAgKGlmIGN1c3RvbS12ZXJzaW9uCi0JKHNl dHEgb3V0cHV0Ci0JICAgICAgKGZvcm1hdCAiVGhpcyB2YXJpYWJsZSB3YXMgaW50cm9kdWNlZCwg b3IgaXRzIGRlZmF1bHQgdmFsdWUgd2FzIGNoYW5nZWQsIGluXG52ZXJzaW9uICVzIG9mIEVtYWNz LlxuIgotCQkgICAgICBjdXN0b20tdmVyc2lvbikpCisgICAgICAgIChzZXRxIG91dHB1dAorICAg ICAgICAgICAgICAoZm9ybWF0ICJUaGlzIHZhcmlhYmxlIHdhcyBpbnRyb2R1Y2VkLCBvciBpdHMg ZGVmYXVsdCB2YWx1ZSB3YXMgY2hhbmdlZCwgaW4gdmVyc2lvbiAlcyBvZiBFbWFjcy5cbiIKKyAg ICAgICAgICAgICAgICAgICAgICBjdXN0b20tdmVyc2lvbikpCiAgICAgICAod2hlbiBjcHYKLQko bGV0KiAoKHBhY2thZ2UgKGNhci1zYWZlIGNwdikpCi0JICAgICAgICh2ZXJzaW9uIChpZiAobGlz dHAgKGNkci1zYWZlIGNwdikpCi0JCQkgICAgKGNhciAoY2RyLXNhZmUgY3B2KSkKLQkJCSAgKGNk ci1zYWZlIGNwdikpKQotCSAgICAgICAocGtnLXZlcnNpb25zIChhc3NxIHBhY2thZ2UgY3VzdG9t aXplLXBhY2thZ2UtZW1hY3MtdmVyc2lvbi1hbGlzdCkpCi0JICAgICAgIChlbWFjc3YgKGNkciAo YXNzb2MgdmVyc2lvbiBwa2ctdmVyc2lvbnMpKSkpCi0JICAoaWYgKGFuZCBwYWNrYWdlIHZlcnNp b24pCi0JICAgICAgKHNldHEgb3V0cHV0Ci0JCSAgICAoZm9ybWF0IChjb25jYXQgIlRoaXMgdmFy aWFibGUgd2FzIGludHJvZHVjZWQsIG9yIGl0cyBkZWZhdWx0IHZhbHVlIHdhcyBjaGFuZ2VkLCBp blxudmVyc2lvbiAlcyBvZiB0aGUgJXMgcGFja2FnZSIKLQkJCQkgICAgKGlmIGVtYWNzdgotCQkJ CQkoZm9ybWF0ICIgdGhhdCBpcyBwYXJ0IG9mIEVtYWNzICVzIiBlbWFjc3YpKQotCQkJCSAgICAi LlxuIikKLQkJCSAgICB2ZXJzaW9uIHBhY2thZ2UpKSkpKSkKKyAgICAgICAgKGxldCogKChwYWNr YWdlIChjYXItc2FmZSBjcHYpKQorICAgICAgICAgICAgICAgKHZlcnNpb24gKGlmIChsaXN0cCAo Y2RyLXNhZmUgY3B2KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FyIChjZHItc2Fm ZSBjcHYpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoY2RyLXNhZmUgY3B2KSkpCisgICAg ICAgICAgICAgICAocGtnLXZlcnNpb25zIChhc3NxIHBhY2thZ2UgY3VzdG9taXplLXBhY2thZ2Ut ZW1hY3MtdmVyc2lvbi1hbGlzdCkpCisgICAgICAgICAgICAgICAoZW1hY3N2IChjZHIgKGFzc29j IHZlcnNpb24gcGtnLXZlcnNpb25zKSkpKQorICAgICAgICAgIChpZiAoYW5kIHBhY2thZ2UgdmVy c2lvbikKKyAgICAgICAgICAgICAgKHNldHEgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgIChm b3JtYXQgKGNvbmNhdCAiVGhpcyB2YXJpYWJsZSB3YXMgaW50cm9kdWNlZCwgb3IgaXRzIGRlZmF1 bHQgdmFsdWUgd2FzIGNoYW5nZWQsIGluIHZlcnNpb24gJXMgb2YgdGhlICVzIHBhY2thZ2UiCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgZW1hY3N2CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiIHRoYXQgaXMgcGFydCBvZiBF bWFjcyAlcyIgZW1hY3N2KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIu XG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gcGFja2FnZSkpKSkpKQog ICAgIG91dHB1dCkpCiAKIDs7OyMjI2F1dG9sb2FkCiAoZGVmdW4gZGVzY3JpYmUtdmFyaWFibGUg KHZhcmlhYmxlICZvcHRpb25hbCBidWZmZXIgZnJhbWUpCiAgICJEaXNwbGF5IHRoZSBmdWxsIGRv Y3VtZW50YXRpb24gb2YgVkFSSUFCTEUgKGEgc3ltYm9sKS4KLVJldHVybnMgdGhlIGRvY3VtZW50 YXRpb24gYXMgYSBzdHJpbmcsIGFsc28uCi1JZiBWQVJJQUJMRSBoYXMgYSBidWZmZXItbG9jYWwg dmFsdWUgaW4gQlVGRkVSIG9yIEZSQU1FCi1cKGRlZmF1bHQgdG8gdGhlIGN1cnJlbnQgYnVmZmVy IGFuZCBjdXJyZW50IGZyYW1lKSwKLWl0IGlzIGRpc3BsYXllZCBhbG9uZyB3aXRoIHRoZSBnbG9i YWwgdmFsdWUuIgorCitSZXR1cm5zIHRoZSBkb2N1bWVudGF0aW9uIGFzIGEgc3RyaW5nLgorCitJ ZiBWQVJJQUJMRSBoYXMgYSBidWZmZXItbG9jYWwgdmFsdWUgaW4gQlVGRkVSIG9yIEZSQU1FIChk ZWZhdWx0Cit0byB0aGUgY3VycmVudCBidWZmZXIgYW5kIGZyYW1lKSwgaXQgaXMgZGlzcGxheWVk IGFsb25nCit3aXRoIHRoZSBnbG9iYWwgdmFsdWUuIgogICAoaW50ZXJhY3RpdmUKLSAgIChsZXQg KCh2ICh2YXJpYWJsZS1hdC1wb2ludCkpCi0JIChlbmFibGUtcmVjdXJzaXZlLW1pbmlidWZmZXJz IHQpCi0gICAgICAgICAob3JpZy1idWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkKLQkgdmFsKQotICAg ICAoc2V0cSB2YWwgKGNvbXBsZXRpbmctcmVhZAorICAgKGxldCogKCh2ICh2YXJpYWJsZS1hdC1w b2ludCkpCisgICAgICAgICAgKGVuYWJsZS1yZWN1cnNpdmUtbWluaWJ1ZmZlcnMgdCkKKyAgICAg ICAgICAob3JpZy1idWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkKKyAgICAgICAgICAodmFsIChjb21w bGV0aW5nLXJlYWQKICAgICAgICAgICAgICAgICAoaWYgKHN5bWJvbHAgdikKICAgICAgICAgICAg ICAgICAgICAgKGZvcm1hdAogICAgICAgICAgICAgICAgICAgICAgIkRlc2NyaWJlIHZhcmlhYmxl IChkZWZhdWx0ICVzKTogIiB2KQogICAgICAgICAgICAgICAgICAgIkRlc2NyaWJlIHZhcmlhYmxl OiAiKQogICAgICAgICAgICAgICAgICMnaGVscC0tc3ltYm9sLWNvbXBsZXRpb24tdGFibGUKICAg ICAgICAgICAgICAgICAobGFtYmRhICh2dikKLSAgICAgICAgICAgICAgICAgIDs7IEluIGNhc2Ug dGhlIHZhcmlhYmxlIG9ubHkgZXhpc3RzIGluIHRoZSBidWZmZXIKLSAgICAgICAgICAgICAgICAg IDs7IHRoZSBjb21tYW5kIHdlIHN3aXRjaCBiYWNrIHRvIHRoYXQgYnVmZmVyIGJlZm9yZQotICAg ICAgICAgICAgICAgICAgOzsgd2UgZXhhbWluZSB0aGUgdmFyaWFibGUuCiAgICAgICAgICAgICAg ICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBvcmlnLWJ1ZmZlcgogICAgICAgICAgICAgICAgICAg ICAob3IgKGdldCB2diAndmFyaWFibGUtZG9jdW1lbnRhdGlvbikKICAgICAgICAgICAgICAgICAg ICAgICAgIChhbmQgKGJvdW5kcCB2dikgKG5vdCAoa2V5d29yZHAgdnYpKSkpKSkKLSAgICAgICAg ICAgICAgICB0IG5pbCBuaWwKLSAgICAgICAgICAgICAgICAoaWYgKHN5bWJvbHAgdikgKHN5bWJv bC1uYW1lIHYpKSkpCi0gICAgIChsaXN0IChpZiAoZXF1YWwgdmFsICIiKQotCSAgICAgICB2IChp bnRlcm4gdmFsKSkpKSkKLSAgKGxldCAoZmlsZS1uYW1lKQotICAgICh1bmxlc3MgKGJ1ZmZlci1s aXZlLXAgYnVmZmVyKSAoc2V0cSBidWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkpCi0gICAgKHVubGVz cyAoZnJhbWUtbGl2ZS1wIGZyYW1lKSAoc2V0cSBmcmFtZSAoc2VsZWN0ZWQtZnJhbWUpKSkKLSAg ICAoaWYgKG5vdCAoc3ltYm9scCB2YXJpYWJsZSkpCi0JKG1lc3NhZ2UgIllvdSBkaWQgbm90IHNw ZWNpZnkgYSB2YXJpYWJsZSIpCi0gICAgICAoc2F2ZS1leGN1cnNpb24KLQkobGV0ICgodmFsdm9p ZCAobm90ICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlciAoYm91bmRwIHZhcmlhYmxlKSkpKQot CSAgICAgIChwZXJtYW5lbnQtbG9jYWwgKGdldCB2YXJpYWJsZSAncGVybWFuZW50LWxvY2FsKSkK LQkgICAgICB2YWwgdmFsLXN0YXJ0LXBvcyBsb2N1cykKLQkgIDs7IEV4dHJhY3QgdGhlIHZhbHVl IGJlZm9yZSBzZXR0aW5nIHVwIHRoZSBvdXRwdXQgYnVmZmVyLAotCSAgOzsgaW4gY2FzZSBgYnVm ZmVyJyAqaXMqIHRoZSBvdXRwdXQgYnVmZmVyLgotCSAgKHVubGVzcyB2YWx2b2lkCi0JICAgICh3 aXRoLXNlbGVjdGVkLWZyYW1lIGZyYW1lCi0JICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgYnVm ZmVyCi0JCShzZXRxIHZhbCAoc3ltYm9sLXZhbHVlIHZhcmlhYmxlKQotCQkgICAgICBsb2N1cyAo dmFyaWFibGUtYmluZGluZy1sb2N1cyB2YXJpYWJsZSkpKSkpCi0JICAoaGVscC1zZXR1cC14cmVm IChsaXN0ICMnZGVzY3JpYmUtdmFyaWFibGUgdmFyaWFibGUgYnVmZmVyKQotCQkJICAgKGNhbGxl ZC1pbnRlcmFjdGl2ZWx5LXAgJ2ludGVyYWN0aXZlKSkKLQkgICh3aXRoLWhlbHAtd2luZG93ICho ZWxwLWJ1ZmZlcikKLQkgICAgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmZmVyCi0JICAgICAgKHBy aW4xIHZhcmlhYmxlKQotCSAgICAgIChzZXRxIGZpbGUtbmFtZSAoZmluZC1saXNwLW9iamVjdC1m aWxlLW5hbWUgdmFyaWFibGUgJ2RlZnZhcikpCi0KLQkgICAgICAoaWYgZmlsZS1uYW1lCi0JCSAg KHByb2duCi0JCSAgICAocHJpbmMgKGZvcm1hdC1tZXNzYWdlCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgIiBpcyBhIHZhcmlhYmxlIGRlZmluZWQgaW4gYCVzJy5cbiIKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoaWYgKGVxIGZpbGUtbmFtZSAnQy1zb3VyY2UpCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJDIHNvdXJjZSBjb2RlIgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGZpbGUtbmFtZS1ub25kaXJlY3RvcnkgZmlsZS1uYW1lKSkpKQotCQkgICAg KHdpdGgtY3VycmVudC1idWZmZXIgc3RhbmRhcmQtb3V0cHV0Ci0JCSAgICAgIChzYXZlLWV4Y3Vy c2lvbgotCQkJKHJlLXNlYXJjaC1iYWNrd2FyZCAoc3Vic3RpdHV0ZS1jb21tYW5kLWtleXMKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJgXFwoW15gJ10rXFwp JyIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbCB0KQot CQkJKGhlbHAteHJlZi1idXR0b24gMSAnaGVscC12YXJpYWJsZS1kZWYKLQkJCQkJICB2YXJpYWJs ZSBmaWxlLW5hbWUpKSkKLQkJICAgIChpZiB2YWx2b2lkCi0JCQkocHJpbmMgIkl0IGlzIHZvaWQg YXMgYSB2YXJpYWJsZS4iKQotCQkgICAgICAocHJpbmMgIkl0cyAiKSkpCi0JCShpZiB2YWx2b2lk Ci0JCSAgICAocHJpbmMgIiBpcyB2b2lkIGFzIGEgdmFyaWFibGUuIikKLQkJICAocHJpbmMgKHN1 YnN0aXR1dGUtY29tbWFuZC1rZXlzICIncyAiKSkpKSkKLQkgICAgKHVubGVzcyB2YWx2b2lkCi0J ICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgc3RhbmRhcmQtb3V0cHV0Ci0JCShzZXRxIHZhbC1z dGFydC1wb3MgKHBvaW50KSkKLQkJKHByaW5jICJ2YWx1ZSBpcyIpCi0JCShsZXQgKChsaW5lLWJl ZyAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pKQotCQkgICAgICAocHJpbnQtcmVwCi0JCSAgICAg ICAobGV0ICgocmVwCi0JCQkgICAgICAobGV0ICgocHJpbnQtcXVvdGVkIHQpKQotCQkJCShwcmlu MS10by1zdHJpbmcgdmFsKSkpKQotCQkJIChpZiAoYW5kIChzeW1ib2xwIHZhbCkgKG5vdCAoYm9v bGVhbnAgdmFsKSkpCi0JCQkgICAgIChmb3JtYXQtbWVzc2FnZSAiYCVzJyIgcmVwKQotCQkJICAg cmVwKSkpKQotCQkgIChpZiAoPCAoKyAobGVuZ3RoIHByaW50LXJlcCkgKHBvaW50KSAoLSBsaW5l LWJlZykpIDY4KQotCQkgICAgICAoaW5zZXJ0ICIgIiBwcmludC1yZXApCi0JCSAgICAodGVycHJp KQotCQkgICAgKHBwIHZhbCkKLSAgICAgICAgICAgICAgICAgICAgOzsgUmVtb3ZlIHRyYWlsaW5n IG5ld2xpbmUuCi0gICAgICAgICAgICAgICAgICAgIChkZWxldGUtY2hhciAtMSkpCi0JCSAgKGxl dCogKChzdiAoZ2V0IHZhcmlhYmxlICdzdGFuZGFyZC12YWx1ZSkpCi0JCQkgKG9yaWd2YWwgKGFu ZCAoY29uc3Agc3YpCi0JCQkJICAgICAgIChjb25kaXRpb24tY2FzZSBuaWwKLQkJCQkJICAgKGV2 YWwgKGNhciBzdikpCi0JCQkJCSAoZXJyb3IgOmhlbHAtZXZhbC1lcnJvcikpKSkKLSAgICAgICAg ICAgICAgICAgICAgICAgICBmcm9tKQotCQkgICAgKHdoZW4gKGFuZCAoY29uc3Agc3YpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZXF1YWwgb3JpZ3ZhbCB2YWwpKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKGVxdWFsIG9yaWd2YWwgOmhlbHAtZXZh bC1lcnJvcikpKQotCQkgICAgICAocHJpbmMgIlxuT3JpZ2luYWwgdmFsdWUgd2FzIFxuIikKLQkJ ICAgICAgKHNldHEgZnJvbSAocG9pbnQpKQotCQkgICAgICAocHAgb3JpZ3ZhbCkKLQkJICAgICAg KGlmICg8IChwb2ludCkgKCsgZnJvbSAyMCkpCi0JCQkgIChkZWxldGUtcmVnaW9uICgxLSBmcm9t KSBmcm9tKSkpKSkpKQotCSAgICAodGVycHJpKQotCSAgICAod2hlbiBsb2N1cwotCSAgICAgIChj b25kCisgICAgICAgICAgICAgICAgdAorICAgICAgICAgICAgICAgIG5pbAorICAgICAgICAgICAg ICAgIG5pbAorICAgICAgICAgICAgICAgICh3aGVuIChzeW1ib2xwIHYpIChzeW1ib2wtbmFtZSB2 KSkpKSkKKyAgICAgKGxpc3QgKGlmIChlcXVhbCB2YWwgIiIpIHYgKGludGVybiB2YWwpKSkpKQor ICAodW5sZXNzIChidWZmZXItbGl2ZS1wIGJ1ZmZlcikgKHNldHEgYnVmZmVyIChjdXJyZW50LWJ1 ZmZlcikpKQorICAodW5sZXNzIChmcmFtZS1saXZlLXAgZnJhbWUpIChzZXRxIGZyYW1lIChzZWxl Y3RlZC1mcmFtZSkpKQorCisgIDs7IEVycm9yIGlmIG5vIHZhcmlhYmxlIGlzIHNwZWNpZmllZAor ICAoaWYgKG5vdCAoc3ltYm9scCB2YXJpYWJsZSkpCisgICAgICAodXNlci1lcnJvciAiJXMiICJZ b3UgZGlkIG5vdCBzcGVjaWZ5IGEgdmFyaWFibGUiKSkKKworICAoc2F2ZS1leGN1cnNpb24KKyAg ICAobGV0KiAoKHZvaWQgKG5vdCAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWZmZXIgKGJvdW5kcCB2 YXJpYWJsZSkpKSkKKyAgICAgICAgICAgKHZhbCAoaWYgdm9pZCBuaWwgKHN5bWJvbC12YWx1ZSB2 YXJpYWJsZSkpKQorICAgICAgICAgICAobG9jdXMgKHZhcmlhYmxlLWJpbmRpbmctbG9jdXMgdmFy aWFibGUpKSkKKyAgICAgIChjbC1mbGV0ICgodmFsdWUtcHJldHR5IChsYW1iZGEgKHZhbCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgobGFyZ2UgKGFuZCAoc2VxdWVuY2VwIHZh bCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo PiAobGVuZ3RoIHZhbCkgNTAwKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGlmIGxhcmdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBy aW5jIHZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBwIHZhbCAo Y3VycmVudC1idWZmZXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo d2hlbiAoYW5kIChub3QgKG51bGwgdmFsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobm90IChzdHJpbmdwIHZhbCkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlcXVlbmNlcCB2YWwpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChraWxsLWJhY2t3YXJkLWNoYXJzIDEp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1hY3MtbGlzcC1tb2Rl KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHVybi1vbi1mb250LWxv Y2spCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb250LWxvY2stZW5z dXJlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidWZmZXItc3RyaW5n KSkpKSkpCisgICAgICAgIDs7IFNldHVwIHhyZWZzCisgICAgICAgIChoZWxwLXNldHVwLXhyZWYg KGxpc3QgIydkZXNjcmliZS12YXJpYWJsZSB2YXJpYWJsZSBidWZmZXIpCisgICAgICAgICAgICAg ICAgICAgICAgICAgKGNhbGxlZC1pbnRlcmFjdGl2ZWx5LXAgJ2ludGVyYWN0aXZlKSkKKworICAg ICAgICAod2l0aC1oZWxwLXdpbmRvdyAoaGVscC1idWZmZXIpCisgICAgICAgICAgKHdpdGgtY3Vy cmVudC1idWZmZXIgc3RhbmRhcmQtb3V0cHV0CisgICAgICAgICAgICA7OyBWYXJpYWJsZSBuYW1l CisgICAgICAgICAgICAoaW5zZXJ0IChwcm9wZXJ0aXplIChzeW1ib2wtbmFtZSB2YXJpYWJsZSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhY2UgZm9udC1sb2NrLXZhcmlhYmxl LW5hbWUtZmFjZSkpCisKKyAgICAgICAgICAgIDs7IERlZmluaXRpb24gZmlsZQorICAgICAgICAg ICAgKGlmLWxldCAoKGZpbGUtbmFtZSAoZmluZC1saXNwLW9iamVjdC1maWxlLW5hbWUgdmFyaWFi bGUgJ2RlZnZhcikpKQorICAgICAgICAgICAgICAgIChwcm9nbgorICAgICAgICAgICAgICAgICAg KGluc2VydCAiIGlzIGEgdmFyaWFibGUgZGVmaW5lZCBpbiAiKQorICAgICAgICAgICAgICAgICAg KGlmIChlcSBmaWxlLW5hbWUgJ0Mtc291cmNlKQorICAgICAgICAgICAgICAgICAgICAgIChpbnNl cnQgIkMgc291cmNlIGNvZGUuIikKKyAgICAgICAgICAgICAgICAgICAgKGhlbHAtaW5zZXJ0LXhy ZWYtYnV0dG9uIChmaWxlLW5hbWUtbm9uZGlyZWN0b3J5IGZpbGUtbmFtZSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWxwLXZhcmlhYmxlLWRlZiB2YXJp YWJsZSBmaWxlLW5hbWUpCisgICAgICAgICAgICAgICAgICAgIChpbnNlcnQgIi4iKSkpKQorICAg ICAgICAgICAgKGluc2VydCAiXG5cbiIpCisKKyAgICAgICAgICAgIDs7IFZhbHVlCisgICAgICAg ICAgICAoaWYgdm9pZAorICAgICAgICAgICAgICAgIChpbnNlcnQgIkl0IGlzIHZvaWQgYXMgYSB2 YXJpYWJsZS4iKQorICAgICAgICAgICAgICAoaWYgKGFuZCAob3IgKG51bGwgdmFsKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHN0cmluZ3AgdmFsKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG5vdCAoc2VxdWVuY2VwIHZhbCkpKQorICAgICAgICAgICAgICAgICAgICAgICAoPCAo bGVuZ3RoIChwcmluMS10by1zdHJpbmcgdmFsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg KC0gZmlsbC1jb2x1bW4gMTMpKSkKKyAgICAgICAgICAgICAgICAgIChpbnNlcnQgKGZvcm1hdC1t ZXNzYWdlICJJdHMgdmFsdWUgaXMgJXMuXG4iICh2YWx1ZS1wcmV0dHkgdmFsKSkpCisgICAgICAg ICAgICAgICAgKGluc2VydCAoZm9ybWF0LW1lc3NhZ2UgIkl0cyB2YWx1ZSBpczpcblxuJXNcbiIg KHZhbHVlLXByZXR0eSB2YWwpKSkpCisKKyAgICAgICAgICAgICAgOzsgT3JpZ2luYWwgdmFsdWUK KyAgICAgICAgICAgICAgKGxldCogKChzdiAoZ2V0IHZhcmlhYmxlICdzdGFuZGFyZC12YWx1ZSkp CisgICAgICAgICAgICAgICAgICAgICAob3JpZ3ZhbCAoYW5kIChjb25zcCBzdikKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmRpdGlvbi1jYXNlIG5pbAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2YWwgKGNhciBzdikpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yIDpoZWxwLWV2YWwtZXJyb3IpKSkpKQor ICAgICAgICAgICAgICAgICh3aGVuIChhbmQgKGNvbnNwIHN2KQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgKG5vdCAoZXF1YWwgb3JpZ3ZhbCB2YWwpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG5vdCAoZXF1YWwgb3JpZ3ZhbCA6aGVscC1ldmFsLWVycm9yKSkpCisgICAgICAgICAg ICAgICAgICAoaWYgKDwgKGxlbmd0aCAocHJpbjEtdG8tc3RyaW5nIG9yaWd2YWwpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICgtIGZpbGwtY29sdW1uIDE5KSkKKyAgICAgICAgICAgICAgICAg ICAgICAoaW5zZXJ0IChmb3JtYXQgIk9yaWdpbmFsIHZhbHVlIHdhcyAlcy5cbiIgKHZhbHVlLXBy ZXR0eSBvcmlndmFsKSkpCisgICAgICAgICAgICAgICAgICAgIChpbnNlcnQgKGZvcm1hdCAiT3Jp Z2luYWwgdmFsdWUgd2FzOiBcblxuJXMiICh2YWx1ZS1wcmV0dHkgb3JpZ3ZhbCkpKSkpKSkKKyAg ICAgICAgICAgIChpbnNlcnQgIlxuIikKKworICAgICAgICAgICAgOzsgTG9jdXMgKHdoZXJlIHZh cmlhYmxlJ3MgYmluZGluZyBjb21lcyBmcm9tKQorICAgICAgICAgICAgKHdoZW4gbG9jdXMKKyAg ICAgICAgICAgICAgKGNvbmQKICAgICAgICAgICAgICAgICgoYnVmZmVycCBsb2N1cykKLSAgICAg ICAgICAgICAgICAocHJpbmMgKGZvcm1hdCAiTG9jYWwgaW4gYnVmZmVyICVzOyAiCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1uYW1lIGJ1ZmZlcikpKSkKKyAgICAgICAg ICAgICAgICAoaW5zZXJ0IChmb3JtYXQgIkl0IGlzIGxvY2FsIHRvIGJ1ZmZlciAlczsgIgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLW5hbWUgbG9jdXMpKSkpCiAgICAg ICAgICAgICAgICAoKGZyYW1lcCBsb2N1cykKLSAgICAgICAgICAgICAgICAocHJpbmMgKGZvcm1h dCAiSXQgaXMgYSBmcmFtZS1sb2NhbCB2YXJpYWJsZTsgIikpKQorICAgICAgICAgICAgICAgIChp bnNlcnQgKGZvcm1hdCAiSXQgaXMgbG9jYWwgdG8gZnJhbWUgJXM7ICIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHByaW50MS10by1zdHJpbmcgbG9jdXMpKSkpCiAgICAgICAgICAg ICAgICAoKHRlcm1pbmFsLWxpdmUtcCBsb2N1cykKLSAgICAgICAgICAgICAgICAocHJpbmMgKGZv cm1hdCAiSXQgaXMgYSB0ZXJtaW5hbC1sb2NhbCB2YXJpYWJsZTsgIikpKQorICAgICAgICAgICAg ICAgIChpbnNlcnQgKGZvcm1hdCAiSXQgaXMgbG9jYWwgdG8gdGVybWluYWwgJXM7ICIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW4xLXRvLXN0cmluZyBsb2N1cykpKSkKICAg ICAgICAgICAgICAgICh0Ci0gICAgICAgICAgICAgICAgKHByaW5jIChmb3JtYXQgIkl0IGlzIGxv Y2FsIHRvICVTIiBsb2N1cykpKSkKLQkgICAgICAoaWYgKG5vdCAoZGVmYXVsdC1ib3VuZHAgdmFy aWFibGUpKQotCQkgIChwcmluYyAiZ2xvYmFsbHkgdm9pZCIpCi0JCShsZXQgKChnbG9iYWwtdmFs IChkZWZhdWx0LXZhbHVlIHZhcmlhYmxlKSkpCi0JCSAgKHdpdGgtY3VycmVudC1idWZmZXIgc3Rh bmRhcmQtb3V0cHV0Ci0JCSAgICAocHJpbmMgImdsb2JhbCB2YWx1ZSBpcyAiKQotCQkgICAgKGlm IChlcSB2YWwgZ2xvYmFsLXZhbCkKLQkJCShwcmluYyAidGhlIHNhbWUuIikKLQkJICAgICAgKHRl cnByaSkKLQkJICAgICAgOzsgRml4bWU6IHBwIGNhbiB0YWtlIGFuIGFnZSBpZiB5b3UgaGFwcGVu IHRvCi0JCSAgICAgIDs7IGFzayBmb3IgYSB2ZXJ5IGxhcmdlIGV4cHJlc3Npb24uICBXZSBzaG91 bGQKLQkJICAgICAgOzsgcHJvYmFibHkgcHJpbnQgaXQgcmF3IG9uY2UgYW5kIGNoZWNrIGl0J3Mg YQotCQkgICAgICA7OyBzZW5zaWJsZSBzaXplIGJlZm9yZSBwcmV0dHlwcmludGluZy4gIC0tIGZ4 Ci0JCSAgICAgIChsZXQgKChmcm9tIChwb2ludCkpKQotCQkJKHBwIGdsb2JhbC12YWwpCi0JCQk7 OyBTZWUgcHJldmlvdXMgY29tbWVudCBmb3IgdGhpcyBmdW5jdGlvbi4KLQkJCTs7IChoZWxwLXhy ZWYtb24tcHAgZnJvbSAocG9pbnQpKQotCQkJKGlmICg8IChwb2ludCkgKCsgZnJvbSAyMCkpCi0J CQkgICAgKGRlbGV0ZS1yZWdpb24gKDEtIGZyb20pIGZyb20pKSkpKSkpCi0gICAgICAgICAgICAg ICh0ZXJwcmkpKQotCi0JICAgIDs7IElmIHRoZSB2YWx1ZSBpcyBsYXJnZSwgbW92ZSBpdCB0byB0 aGUgZW5kLgotCSAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBzdGFuZGFyZC1vdXRwdXQKLQkgICAg ICAod2hlbiAoPiAoY291bnQtbGluZXMgKHBvaW50LW1pbikgKHBvaW50LW1heCkpIDEwKQotCQk7 OyBOb3RlIHRoYXQgc2V0dGluZyB0aGUgc3ludGF4IHRhYmxlIGxpa2UgYmVsb3cKLQkJOzsgbWFr ZXMgZm9yd2FyZC1zZXhwIG1vdmUgb3ZlciBhIGAncycgYXQgdGhlIGVuZAotCQk7OyBvZiBhIHN5 bWJvbC4KLQkJKHNldC1zeW50YXgtdGFibGUgZW1hY3MtbGlzcC1tb2RlLXN5bnRheC10YWJsZSkK LQkJKGdvdG8tY2hhciB2YWwtc3RhcnQtcG9zKQotCQk7OyBUaGUgbGluZSBiZWxvdyBwcmV2aW91 c2x5IHJlYWQgYXMKLQkJOzsgKGRlbGV0ZS1yZWdpb24gKHBvaW50KSAocHJvZ24gKGVuZC1vZi1s aW5lKSAocG9pbnQpKSkKLQkJOzsgd2hpY2ggc3VwcHJlc3NlZCBkaXNwbGF5IG9mIHRoZSBidWZm ZXIgbG9jYWwgdmFsdWUgZm9yCi0JCTs7IGxhcmdlIHZhbHVlcy4KLQkJKHdoZW4gKGxvb2tpbmct YXQgInZhbHVlIGlzIikgKHJlcGxhY2UtbWF0Y2ggIiIpKQotCQkoc2F2ZS1leGN1cnNpb24KLQkJ ICAoaW5zZXJ0ICJcblxuVmFsdWU6IikKLQkJICAoc2V0IChtYWtlLWxvY2FsLXZhcmlhYmxlICdo ZWxwLWJ1dHRvbi1jYWNoZSkKLQkJICAgICAgIChwb2ludC1tYXJrZXIpKSkKLQkJKGluc2VydCAi dmFsdWUgaXMgc2hvd24gIikKLQkJKGluc2VydC1idXR0b24gImJlbG93IgotCQkJICAgICAgICdh Y3Rpb24gaGVscC1idXR0b24tY2FjaGUKLQkJCSAgICAgICAnZm9sbG93LWxpbmsgdAotCQkJICAg ICAgICdoZWxwLWVjaG8gIm1vdXNlLTIsIFJFVDogc2hvdyB2YWx1ZSIpCi0JCShpbnNlcnQgIi5c biIpKSkKLSAgICAgICAgICAgICh0ZXJwcmkpCi0KLSAgICAgICAgICAgIChsZXQqICgoYWxpYXMg KGNvbmRpdGlvbi1jYXNlIG5pbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZGly ZWN0LXZhcmlhYmxlIHZhcmlhYmxlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJv ciB2YXJpYWJsZSkpKQotICAgICAgICAgICAgICAgICAgIChvYnNvbGV0ZSAoZ2V0IHZhcmlhYmxl ICdieXRlLW9ic29sZXRlLXZhcmlhYmxlKSkKLQkJICAgKHVzZSAoY2FyIG9ic29sZXRlKSkKLQkJ ICAgKHNhZmUtdmFyIChnZXQgdmFyaWFibGUgJ3NhZmUtbG9jYWwtdmFyaWFibGUpKQotICAgICAg ICAgICAgICAgICAgIChkb2MgKG9yIChkb2N1bWVudGF0aW9uLXByb3BlcnR5Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlICd2YXJpYWJsZS1kb2N1bWVudGF0aW9uKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChkb2N1bWVudGF0aW9uLXByb3BlcnR5Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFsaWFzICd2YXJpYWJsZS1kb2N1bWVudGF0aW9uKSkpCi0g ICAgICAgICAgICAgICAgICAgKGV4dHJhLWxpbmUgbmlsKSkKLQotCSAgICAgIDs7IE1lbnRpb24g aWYgaXQncyBhIGxvY2FsIHZhcmlhYmxlLgotCSAgICAgIChjb25kCi0JICAgICAgICgoYW5kIChs b2NhbC12YXJpYWJsZS1pZi1zZXQtcCB2YXJpYWJsZSkKLQkJICAgICAob3IgKG5vdCAobG9jYWwt dmFyaWFibGUtcCB2YXJpYWJsZSkpCi0JCQkgKHdpdGgtdGVtcC1idWZmZXIKLQkJCSAgIChsb2Nh bC12YXJpYWJsZS1pZi1zZXQtcCB2YXJpYWJsZSkpKSkKLSAgICAgICAgICAgICAgICAoc2V0cSBl eHRyYS1saW5lIHQpCi0gICAgICAgICAgICAgICAgKHByaW5jICIgIEF1dG9tYXRpY2FsbHkgYmVj b21lcyAiKQotCQkoaWYgcGVybWFuZW50LWxvY2FsCi0JCSAgICAocHJpbmMgInBlcm1hbmVudGx5 ICIpKQotCQkocHJpbmMgImJ1ZmZlci1sb2NhbCB3aGVuIHNldC5cbiIpKQotCSAgICAgICAoKG5v dCBwZXJtYW5lbnQtbG9jYWwpKQotCSAgICAgICAoKGJ1ZmZlcnAgbG9jdXMpCi0JCShzZXRxIGV4 dHJhLWxpbmUgdCkKLQkJKHByaW5jCi0JCSAoc3Vic3RpdHV0ZS1jb21tYW5kLWtleXMKLQkJICAi ICBUaGlzIHZhcmlhYmxlJ3MgYnVmZmVyLWxvY2FsIHZhbHVlIGlzIHBlcm1hbmVudC5cbiIpKSkK LQkgICAgICAgKHQKLQkJKHNldHEgZXh0cmEtbGluZSB0KQotICAgICAgICAgICAgICAgIChwcmlu YyAoc3Vic3RpdHV0ZS1jb21tYW5kLWtleXMKLQkJCSIgIFRoaXMgdmFyaWFibGUncyB2YWx1ZSBp cyBwZXJtYW5lbnQgXAotaWYgaXQgaXMgZ2l2ZW4gYSBsb2NhbCBiaW5kaW5nLlxuIikpKSkKLQot CSAgICAgIDs7IE1lbnRpb24gaWYgaXQncyBhbiBhbGlhcy4KKyAgICAgICAgICAgICAgICAoaW5z ZXJ0IChmb3JtYXQgIkl0IGlzIGxvY2FsIHRvICVzIiBsb2N1cykpKSkKKyAgICAgICAgICAgICAg KGlmIChub3QgKGRlZmF1bHQtYm91bmRwIHZhcmlhYmxlKSkKKyAgICAgICAgICAgICAgICAgIChp bnNlcnQgImdsb2JhbGx5IHZvaWQiKQorICAgICAgICAgICAgICAgIChsZXQgKChnbG9iYWwtdmFs IChkZWZhdWx0LXZhbHVlIHZhcmlhYmxlKSkpCisgICAgICAgICAgICAgICAgICAod2l0aC1jdXJy ZW50LWJ1ZmZlciBzdGFuZGFyZC1vdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgKGluc2VydCAi Z2xvYmFsIHZhbHVlIGlzICIpCisgICAgICAgICAgICAgICAgICAgIChpZiAoZXEgdmFsIGdsb2Jh bC12YWwpCisgICAgICAgICAgICAgICAgICAgICAgICAoaW5zZXJ0ICJ0aGUgc2FtZS4iKQorICAg ICAgICAgICAgICAgICAgICAgIChpbnNlcnQgIlxuIikKKyAgICAgICAgICAgICAgICAgICAgICA7 OyBGaXhtZTogcHAgY2FuIHRha2UgYW4gYWdlIGlmIHlvdSBoYXBwZW4gdG8KKyAgICAgICAgICAg ICAgICAgICAgICA7OyBhc2sgZm9yIGEgdmVyeSBsYXJnZSBleHByZXNzaW9uLiAgV2Ugc2hvdWxk CisgICAgICAgICAgICAgICAgICAgICAgOzsgcHJvYmFibHkgcHJpbnQgaXQgcmF3IG9uY2UgYW5k IGNoZWNrIGl0J3MgYQorICAgICAgICAgICAgICAgICAgICAgIDs7IHNlbnNpYmxlIHNpemUgYmVm b3JlIHByZXR0eXByaW50aW5nLiAgLS0gZngKKyAgICAgICAgICAgICAgICAgICAgICAobGV0ICgo ZnJvbSAocG9pbnQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChwcCBnbG9iYWwtdmFsKQor ICAgICAgICAgICAgICAgICAgICAgICAgOzsgU2VlIHByZXZpb3VzIGNvbW1lbnQgZm9yIHRoaXMg ZnVuY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA7OyAoaGVscC14cmVmLW9uLXBwIGZy b20gKHBvaW50KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoPCAocG9pbnQpICgrIGZy b20gMjApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWxldGUtcmVnaW9uICgxLSBm cm9tKSBmcm9tKSkpKSkpKSkKKworICAgICAgICAgICAgOzsgQnVmZmVyIGxvY2FsCisgICAgICAg ICAgICAoY29uZAorICAgICAgICAgICAgICgoYW5kIChsb2NhbC12YXJpYWJsZS1pZi1zZXQtcCB2 YXJpYWJsZSkKKyAgICAgICAgICAgICAgICAgICAob3IgKG5vdCAobG9jYWwtdmFyaWFibGUtcCB2 YXJpYWJsZSkpCisgICAgICAgICAgICAgICAgICAgICAgICh3aXRoLXRlbXAtYnVmZmVyCisgICAg ICAgICAgICAgICAgICAgICAgICAgKGxvY2FsLXZhcmlhYmxlLWlmLXNldC1wIHZhcmlhYmxlKSkp KQorICAgICAgICAgICAgICAoaW5zZXJ0ICJBdXRvbWF0aWNhbGx5IGJlY29tZXMgIikKKyAgICAg ICAgICAgICAgKGlmIChnZXQgdmFyaWFibGUgJ3Blcm1hbmVudC1sb2NhbCkKKyAgICAgICAgICAg ICAgICAgIChpbnNlcnQgInBlcm1hbmVudGx5ICIpKQorICAgICAgICAgICAgICAoaW5zZXJ0ICJi dWZmZXItbG9jYWwgd2hlbiBzZXQuXG5cbiIpKQorICAgICAgICAgICAgICgobm90IChnZXQgdmFy aWFibGUgJ3Blcm1hbmVudC1sb2NhbCkpKQorICAgICAgICAgICAgICgoYnVmZmVycCBsb2N1cykK KyAgICAgICAgICAgICAgKGluc2VydAorICAgICAgICAgICAgICAgKHN1YnN0aXR1dGUtY29tbWFu ZC1rZXlzCisgICAgICAgICAgICAgICAgIlRoaXMgdmFyaWFibGUncyBidWZmZXItbG9jYWwgdmFs dWUgaXMgcGVybWFuZW50LlxuXG4iKSkpCisgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAg KGluc2VydCAiVGhpcyB2YXJpYWJsZSdzIHZhbHVlIGlzIHBlcm1hbmVudCBpZiBpdCBpcyBnaXZl biBhIGxvY2FsIGJpbmRpbmcuXG5cbiIpKSkKKworICAgICAgICAgICAgOzsgQWxpYXMKKyAgICAg ICAgICAgIChsZXQgKChhbGlhcyAoY29uZGl0aW9uLWNhc2UgbmlsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChpbmRpcmVjdC12YXJpYWJsZSB2YXJpYWJsZSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIChlcnJvciB2YXJpYWJsZSkpKSkKICAgICAgICAgICAgICAgKHVubGVzcyAo ZXEgYWxpYXMgdmFyaWFibGUpCi0gICAgICAgICAgICAgICAgKHNldHEgZXh0cmEtbGluZSB0KQot ICAgICAgICAgICAgICAgIChwcmluYyAoZm9ybWF0LW1lc3NhZ2UKLSAgICAgICAgICAgICAgICAg ICAgICAgICIgIFRoaXMgdmFyaWFibGUgaXMgYW4gYWxpYXMgZm9yIGAlcycuXG4iCi0gICAgICAg ICAgICAgICAgICAgICAgICBhbGlhcykpKQotCi0gICAgICAgICAgICAgICh3aGVuIG9ic29sZXRl Ci0gICAgICAgICAgICAgICAgKHNldHEgZXh0cmEtbGluZSB0KQotICAgICAgICAgICAgICAgIChw cmluYyAiICBUaGlzIHZhcmlhYmxlIGlzIG9ic29sZXRlIikKLSAgICAgICAgICAgICAgICAoaWYg KG50aCAyIG9ic29sZXRlKQotICAgICAgICAgICAgICAgICAgICAocHJpbmMgKGZvcm1hdCAiIHNp bmNlICVzIiAobnRoIDIgb2Jzb2xldGUpKSkpCi0JCShwcmluYyAoY29uZCAoKHN0cmluZ3AgdXNl KSAoY29uY2F0ICI7XG4gICIgdXNlKSkKLQkJCSAgICAgKHVzZSAoZm9ybWF0LW1lc3NhZ2UgIjtc biAgdXNlIGAlcycgaW5zdGVhZC4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChjYXIgb2Jzb2xldGUpKSkKLQkJCSAgICAgKHQgIi4iKSkpCi0gICAg ICAgICAgICAgICAgKHRlcnByaSkpCi0KLQkgICAgICAod2hlbiAobWVtYmVyIChjb25zIHZhcmlh YmxlIHZhbCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZl ciBidWZmZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUtbG9jYWwtdmFyaWFi bGVzLWFsaXN0KSkKLQkJKHNldHEgZXh0cmEtbGluZSB0KQotCQkoaWYgKG1lbWJlciAoY29ucyB2 YXJpYWJsZSB2YWwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQt YnVmZmVyIGJ1ZmZlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpci1sb2NhbC12 YXJpYWJsZXMtYWxpc3QpKQotCQkgICAgKGxldCAoKGZpbGUgKGFuZCAoYnVmZmVyLWZpbGUtbmFt ZSBidWZmZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKGZp bGUtcmVtb3RlLXAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGJ1ZmZlci1maWxlLW5hbWUgYnVmZmVyKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChkaXItbG9jYWxzLWZpbmQtZmlsZQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGJ1ZmZlci1maWxlLW5hbWUgYnVmZmVyKSkpKQotICAgICAgICAgICAg ICAgICAgICAgICAgICAoaXMtZGlyZWN0b3J5IG5pbCkpCi0JCSAgICAgIChwcmluYyAoc3Vic3Rp dHV0ZS1jb21tYW5kLWtleXMKLQkJCSAgICAgICIgIFRoaXMgdmFyaWFibGUncyB2YWx1ZSBpcyBk aXJlY3RvcnktbG9jYWwiKSkKLSAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoY29uc3AgZmls ZSkgOyByZXN1bHQgZnJvbSBjYWNoZQotICAgICAgICAgICAgICAgICAgICAgICAgOzsgSWYgdGhl IGNhY2hlIGVsZW1lbnQgaGFzIGFuIG10aW1lLCB3ZQotICAgICAgICAgICAgICAgICAgICAgICAg OzsgYXNzdW1lIGl0IGNhbWUgZnJvbSBhIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAo aWYgKG50aCAyIGZpbGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgKGNhciBmaWxl KSBpcyBhIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBmaWxl IChkaXItbG9jYWxzLS1hbGwtZmlsZXMgKGNhciBmaWxlKSkpCi0gICAgICAgICAgICAgICAgICAg ICAgICAgIDs7IE90aGVyd2lzZSwgYXNzdW1lIGl0IHdhcyBzZXQgZGlyZWN0bHkuCi0gICAgICAg ICAgICAgICAgICAgICAgICAgIChzZXRxIGZpbGUgKGNhciBmaWxlKQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpcy1kaXJlY3RvcnkgdCkpKQotICAgICAgICAgICAgICAgICAgICAg IChpZiAobnVsbCBmaWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbmMgIi5cbiIp Ci0gICAgICAgICAgICAgICAgICAgICAgICAocHJpbmMgIiwgc2V0ICIpCi0gICAgICAgICAgICAg ICAgICAgICAgICAocHJpbmMgKHN1YnN0aXR1dGUtY29tbWFuZC1rZXlzCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChjb25kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoaXMtZGlyZWN0b3J5ICJmb3IgdGhlIGRpcmVjdG9yeVxuICBgIikKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDs7IE1hbnkgZmlsZXMgbWF0Y2hlZC4KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgoYW5kIChjb25zcCBmaWxlKSAoY2RyIGZpbGUpKQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGZpbGUgKGZpbGUtbmFtZS1kaXJlY3Rv cnkgKGNhciBmaWxlKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1h dCAiYnkgb25lIG9mIHRoZVxuICAlcyBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5XG4gIGAiCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXItbG9jYWxzLWZpbGUpKQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQgKHNldHEgZmlsZSAoY2FyIGZpbGUp KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ5IHRoZSBmaWxlXG4gIGAi KSkpKQotCQkJKHdpdGgtY3VycmVudC1idWZmZXIgc3RhbmRhcmQtb3V0cHV0Ci0JCQkgIChpbnNl cnQtdGV4dC1idXR0b24KLQkJCSAgIGZpbGUgJ3R5cGUgJ2hlbHAtZGlyLWxvY2FsLXZhci1kZWYK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlbHAtYXJncyAobGlzdCB2YXJpYWJsZSBm aWxlKSkpCi0JCQkocHJpbmMgKHN1YnN0aXR1dGUtY29tbWFuZC1rZXlzICInLlxuIikpKSkKLQkJ ICAocHJpbmMgKHN1YnN0aXR1dGUtY29tbWFuZC1rZXlzCi0JCQkgICIgIFRoaXMgdmFyaWFibGUn cyB2YWx1ZSBpcyBmaWxlLWxvY2FsLlxuIikpKSkKLQotCSAgICAgICh3aGVuIChtZW1xIHZhcmlh YmxlIGlnbm9yZWQtbG9jYWwtdmFyaWFibGVzKQotCQkoc2V0cSBleHRyYS1saW5lIHQpCi0JCShw cmluYyAiICBUaGlzIHZhcmlhYmxlIGlzIGlnbm9yZWQgYXMgYSBmaWxlLWxvY2FsIFwKLXZhcmlh YmxlLlxuIikpCi0KLQkgICAgICA7OyBDYW4gYmUgYm90aCByaXNreSBhbmQgc2FmZSwgZWcgYXV0 by1maWxsLWZ1bmN0aW9uLgotCSAgICAgICh3aGVuIChyaXNreS1sb2NhbC12YXJpYWJsZS1wIHZh cmlhYmxlKQotCQkoc2V0cSBleHRyYS1saW5lIHQpCi0JCShwcmluYyAiICBUaGlzIHZhcmlhYmxl IG1heSBiZSByaXNreSBpZiB1c2VkIGFzIGEgXAotZmlsZS1sb2NhbCB2YXJpYWJsZS5cbiIpCi0J CSh3aGVuIChhc3NxIHZhcmlhYmxlIHNhZmUtbG9jYWwtdmFyaWFibGUtdmFsdWVzKQotCQkgIChw cmluYyAoc3Vic3RpdHV0ZS1jb21tYW5kLWtleXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAg IiAgSG93ZXZlciwgeW91IGhhdmUgYWRkZWQgaXQgdG8gXAotYHNhZmUtbG9jYWwtdmFyaWFibGUt dmFsdWVzJy5cbiIpKSkpCi0KLQkgICAgICAod2hlbiBzYWZlLXZhcgotICAgICAgICAgICAgICAg IChzZXRxIGV4dHJhLWxpbmUgdCkKLQkJKHByaW5jICIgIFRoaXMgdmFyaWFibGUgaXMgc2FmZSBh cyBhIGZpbGUgbG9jYWwgdmFyaWFibGUgIikKLQkJKHByaW5jICJpZiBpdHMgdmFsdWVcbiAgc2F0 aXNmaWVzIHRoZSBwcmVkaWNhdGUgIikKLQkJKHByaW5jIChpZiAoYnl0ZS1jb2RlLWZ1bmN0aW9u LXAgc2FmZS12YXIpCi0JCQkgICAid2hpY2ggaXMgYSBieXRlLWNvbXBpbGVkIGV4cHJlc3Npb24u XG4iCi0JCQkgKGZvcm1hdC1tZXNzYWdlICJgJXMnLlxuIiBzYWZlLXZhcikpKSkKLQotICAgICAg ICAgICAgICAoaWYgZXh0cmEtbGluZSAodGVycHJpKSkKLQkgICAgICAocHJpbmMgIkRvY3VtZW50 YXRpb246XG4iKQotCSAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIHN0YW5kYXJkLW91dHB1dAot CQkoaW5zZXJ0IChvciBkb2MgIk5vdCBkb2N1bWVudGVkIGFzIGEgdmFyaWFibGUuIikpKSkKLQot CSAgICA7OyBNYWtlIGEgbGluayB0byBjdXN0b21pemUgaWYgdGhpcyB2YXJpYWJsZSBjYW4gYmUg Y3VzdG9taXplZC4KLQkgICAgKHdoZW4gKGN1c3RvbS12YXJpYWJsZS1wIHZhcmlhYmxlKQotCSAg ICAgIChsZXQgKChjdXN0b21pemUtbGFiZWwgImN1c3RvbWl6ZSIpKQotCQkodGVycHJpKQotCQko dGVycHJpKQotCQkocHJpbmMgKGNvbmNhdCAiWW91IGNhbiAiIGN1c3RvbWl6ZS1sYWJlbCAiIHRo aXMgdmFyaWFibGUuIikpCi0JCSh3aXRoLWN1cnJlbnQtYnVmZmVyIHN0YW5kYXJkLW91dHB1dAot CQkgIChzYXZlLWV4Y3Vyc2lvbgotCQkgICAgKHJlLXNlYXJjaC1iYWNrd2FyZAotCQkgICAgIChj b25jYXQgIlxcKCIgY3VzdG9taXplLWxhYmVsICJcXCkiKSBuaWwgdCkKLQkJICAgIChoZWxwLXhy ZWYtYnV0dG9uIDEgJ2hlbHAtY3VzdG9taXplLXZhcmlhYmxlIHZhcmlhYmxlKSkpKQotCSAgICAg IDs7IE5vdGUgdmFyaWFibGUncyB2ZXJzaW9uIG9yIHBhY2thZ2UgdmVyc2lvbi4KLQkgICAgICAo bGV0ICgob3V0cHV0IChkZXNjcmliZS12YXJpYWJsZS1jdXN0b20tdmVyc2lvbi1pbmZvIHZhcmlh YmxlKSkpCi0JCSh3aGVuIG91dHB1dAotCQkgICh0ZXJwcmkpCi0JCSAgKHRlcnByaSkKLQkJICAo cHJpbmMgb3V0cHV0KSkpKQotCi0JICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIHN0YW5kYXJkLW91 dHB1dAotCSAgICAgIDs7IFJldHVybiB0aGUgdGV4dCB3ZSBkaXNwbGF5ZWQuCi0JICAgICAgKGJ1 ZmZlci1zdHJpbmcpKSkpKSkpKQotCisgICAgICAgICAgICAgICAgKGluc2VydCAoZm9ybWF0LW1l c3NhZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyB2YXJpYWJsZSBpcyBhbiBhbGlh cyBmb3IgYCVzJy5cblxuIiBhbGlhcykpKSkKKworICAgICAgICAgICAgOzsgT2Jzb2xldGUKKyAg ICAgICAgICAgIChsZXQqICgob2Jzb2xldGUgKGdldCB2YXJpYWJsZSAnYnl0ZS1vYnNvbGV0ZS12 YXJpYWJsZSkpCisgICAgICAgICAgICAgICAgICAgKG9ic29sZXRlLXNpbmNlIChudGggMiBvYnNv bGV0ZSkpCisgICAgICAgICAgICAgICAgICAgKHVzZSAoY2FyIG9ic29sZXRlKSkpCisgICAgICAg ICAgICAgICh3aGVuIG9ic29sZXRlLXNpbmNlCisgICAgICAgICAgICAgICAgKGluc2VydCAocHJv cGVydGl6ZSAoZm9ybWF0LW1lc3NhZ2UgIlRoaXMgdmFyaWFibGUgaXMgb2Jzb2xldGUgc2luY2Ug JXMiIG9ic29sZXRlLXNpbmNlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J2ZhY2UgJ2Vycm9yKSkKKyAgICAgICAgICAgICAgICAoaW5zZXJ0IChwcm9wZXJ0aXplIChjb25k ICgoc3RyaW5ncCB1c2UpIChjb25jYXQgIjsgIiB1c2UgIlxuIikpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodXNlIChmb3JtYXQtbWVzc2FnZSAiOyB1c2UgYCVz JyBpbnN0ZWFkLlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGNhciBvYnNvbGV0ZSkpKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHQgIi5cbiIpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2ZhY2UgJ2Vycm9yKSkKKyAgICAgICAgICAgICAgICAoaW5zZXJ0ICJc biIpKSkKKworICAgICAgICAgICAgOzsgRmlsZSBvciBkaXJlY3RvcnkgbG9jYWwKKyAgICAgICAg ICAgICh3aGVuIChtZW1iZXIgKGNvbnMgdmFyaWFibGUgdmFsKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWZmZXIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmaWxlLWxvY2FsLXZhcmlhYmxlcy1hbGlzdCkpCisgICAgICAgICAgICAgIChzZXRx IGV4dHJhLWxpbmUgdCkKKyAgICAgICAgICAgICAgKGlmIChtZW1iZXIgKGNvbnMgdmFyaWFibGUg dmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWZm ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXItbG9jYWwtdmFyaWFibGVzLWFsaXN0 KSkKKyAgICAgICAgICAgICAgICAgIChsZXQgKChmaWxlIChhbmQgKGJ1ZmZlci1maWxlLW5hbWUg YnVmZmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChmaWxlLXJl bW90ZS1wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLWZp bGUtbmFtZSBidWZmZXIpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRp ci1sb2NhbHMtZmluZC1maWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo YnVmZmVyLWZpbGUtbmFtZSBidWZmZXIpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAoaXMt ZGlyZWN0b3J5IG5pbCkpCisgICAgICAgICAgICAgICAgICAgIChpbnNlcnQgIlRoaXMgdmFyaWFi bGUncyB2YWx1ZSBpcyBkaXJlY3RvcnktbG9jYWwiKQorICAgICAgICAgICAgICAgICAgICAod2hl biAoY29uc3AgZmlsZSkgIDsgcmVzdWx0IGZyb20gY2FjaGUKKyAgICAgICAgICAgICAgICAgICAg ICA7OyBJZiB0aGUgY2FjaGUgZWxlbWVudCBoYXMgYW4gbXRpbWUsIHdlCisgICAgICAgICAgICAg ICAgICAgICAgOzsgYXNzdW1lIGl0IGNhbWUgZnJvbSBhIGZpbGUuCisgICAgICAgICAgICAgICAg ICAgICAgKGlmIChudGggMiBmaWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgICA7OyAoY2Fy IGZpbGUpIGlzIGEgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBm aWxlIChkaXItbG9jYWxzLS1hbGwtZmlsZXMgKGNhciBmaWxlKSkpCisgICAgICAgICAgICAgICAg ICAgICAgICA7OyBPdGhlcndpc2UsIGFzc3VtZSBpdCB3YXMgc2V0IGRpcmVjdGx5LgorICAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgZmlsZSAoY2FyIGZpbGUpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpcy1kaXJlY3RvcnkgdCkpKQorICAgICAgICAgICAgICAgICAgICAoaWYg KG51bGwgZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChpbnNlcnQgIi5cbiIpCisgICAg ICAgICAgICAgICAgICAgICAgKGluc2VydCAiLCBzZXQgIikKKyAgICAgICAgICAgICAgICAgICAg ICAoaW5zZXJ0IChzdWJzdGl0dXRlLWNvbW1hbmQta2V5cworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjb25kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpcy1kaXJl Y3RvcnkgImZvciB0aGUgZGlyZWN0b3J5XG4gIGAiKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA7OyBNYW55IGZpbGVzIG1hdGNoZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgoYW5kIChjb25zcCBmaWxlKSAoY2RyIGZpbGUpKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHNldHEgZmlsZSAoZmlsZS1uYW1lLWRpcmVjdG9yeSAoY2FyIGZpbGUp KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgImJ5IG9uZSBvZiB0 aGVcbiAgJXMgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeVxuICBgIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkaXItbG9jYWxzLWZpbGUpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAodCAoc2V0cSBmaWxlIChjYXIgZmlsZSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJieSB0aGUgZmlsZVxuICBgIikpKSkKKyAgICAgICAgICAg ICAgICAgICAgICAoaGVscC1pbnNlcnQteHJlZi1idXR0b24gZmlsZSAnaGVscC1kaXItbG9jYWwt dmFyLWRlZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 YXJpYWJsZSBmaWxlKQorICAgICAgICAgICAgICAgICAgICAgIChpbnNlcnQgKHN1YnN0aXR1dGUt Y29tbWFuZC1rZXlzICInLlxuIikpKSkKKyAgICAgICAgICAgICAgICAoaW5zZXJ0ICJUaGlzIHZh cmlhYmxlJ3MgdmFsdWUgaXMgZmlsZS1sb2NhbC5cbiIpKSkKKworICAgICAgICAgICAgOzsgSWdu b3JlZCBsb2NhbAorICAgICAgICAgICAgKHdoZW4gKG1lbXEgdmFyaWFibGUgaWdub3JlZC1sb2Nh bC12YXJpYWJsZXMpCisgICAgICAgICAgICAgIChpbnNlcnQgIlRoaXMgdmFyaWFibGUgaXMgaWdu b3JlZCBhcyBhIGZpbGUtbG9jYWwgdmFyaWFibGUuXG5cbiIpKQorCisgICAgICAgICAgICA7OyBS aXNreSBsb2NhbAorICAgICAgICAgICAgKHdoZW4gKHJpc2t5LWxvY2FsLXZhcmlhYmxlLXAgdmFy aWFibGUpCisgICAgICAgICAgICAgIChpbnNlcnQgKHByb3BlcnRpemUgIlRoaXMgdmFyaWFibGUg bWF5IGJlIHJpc2t5IGlmIHVzZWQgYXMgYSBmaWxlLWxvY2FsIHZhcmlhYmxlIgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdmYWNlIGZvbnQtbG9jay13YXJuaW5nLWZhY2UpKQor ICAgICAgICAgICAgICAoaWYgKGFzc3EgdmFyaWFibGUgc2FmZS1sb2NhbC12YXJpYWJsZS12YWx1 ZXMpCisgICAgICAgICAgICAgICAgICAoaW5zZXJ0ICI7IGhvd2V2ZXIsIHlvdSBoYXZlIGFkZGVk IGl0IHRvIGBzYWZlLWxvY2FsLXZhcmlhYmxlLXZhbHVlcycuXG4iKSkKKyAgICAgICAgICAgICAg KGluc2VydCAiLlxuXG4iKSkKKworICAgICAgICAgICAgOzsgU2FmZSBsb2NhbAorICAgICAgICAg ICAgKHdoZW4tbGV0ICgoc2FmZS12YXIgKGdldCB2YXJpYWJsZSAnc2FmZS1sb2NhbC12YXJpYWJs ZSkpKQorICAgICAgICAgICAgICAoaW5zZXJ0ICJUaGlzIHZhcmlhYmxlIGlzIHNhZmUgYXMgYSBm aWxlIGxvY2FsIHZhcmlhYmxlICIpCisgICAgICAgICAgICAgIChpbnNlcnQgImlmIGl0cyB2YWx1 ZSBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZSAiKQorICAgICAgICAgICAgICAoaW5zZXJ0IChpZiAo Ynl0ZS1jb2RlLWZ1bmN0aW9uLXAgc2FmZS12YXIpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICJ3aGljaCBpcyBhIGJ5dGUtY29tcGlsZWQgZXhwcmVzc2lvbi5cblxuIgorICAgICAgICAgICAg ICAgICAgICAgICAgKGZvcm1hdC1tZXNzYWdlICJgJXMnLlxuXG4iIHNhZmUtdmFyKSkpKQorCisg ICAgICAgICAgICA7OyBEb2N1bWVudGF0aW9uCisgICAgICAgICAgICAodW5sZXNzIHZvaWQKKyAg ICAgICAgICAgICAgKGxldCogKChhbGlhcyAoY29uZGl0aW9uLWNhc2UgbmlsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChpbmRpcmVjdC12YXJpYWJsZSB2YXJpYWJsZSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciB2YXJpYWJsZSkpKQorICAgICAgICAgICAg ICAgICAgICAgKGRvYyAob3IgKGRvY3VtZW50YXRpb24tcHJvcGVydHkgdmFyaWFibGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YXJpYWJs ZS1kb2N1bWVudGF0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50 YXRpb24tcHJvcGVydHkgYWxpYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICd2YXJpYWJsZS1kb2N1bWVudGF0aW9uKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIk5vdCBkb2N1bWVudGVkIGFzIGEgdmFyaWFibGUuIikpKQorICAg ICAgICAgICAgICAgIChpbnNlcnQgIkRvY3VtZW50YXRpb246XG5cbiIpCisgICAgICAgICAgICAg ICAgKGluc2VydCAocHJvcGVydGl6ZSBkb2MgJ2ZhY2UgZm9udC1sb2NrLWRvYy1mYWNlKSkKKyAg ICAgICAgICAgICAgICAoaW5zZXJ0ICJcblxuIikpKQorCisgICAgICAgICAgICA7OyBNYWtlIGEg bGluayB0byBjdXN0b21pemUgaWYgdGhpcyB2YXJpYWJsZSBjYW4gYmUKKyAgICAgICAgICAgIDs7 IGN1c3RvbWl6ZWQuCisgICAgICAgICAgICAod2hlbiAoY3VzdG9tLXZhcmlhYmxlLXAgdmFyaWFi bGUpCisgICAgICAgICAgICAgIChpbnNlcnQgIllvdSBjYW4gIikKKyAgICAgICAgICAgICAgKGhl bHAtaW5zZXJ0LXhyZWYtYnV0dG9uICJjdXN0b21pemUiICdoZWxwLWN1c3RvbWl6ZS12YXJpYWJs ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUpCisgICAg ICAgICAgICAgIChpbnNlcnQgIiB0aGlzIHZhcmlhYmxlLiIpCisgICAgICAgICAgICAgIDs7IE5v dGUgdmFyaWFibGUncyB2ZXJzaW9uIG9yIHBhY2thZ2UgdmVyc2lvbi4KKyAgICAgICAgICAgICAg KHdoZW4tbGV0ICgob3V0cHV0IChkZXNjcmliZS12YXJpYWJsZS1jdXN0b20tdmVyc2lvbi1pbmZv IHZhcmlhYmxlKSkpCisgICAgICAgICAgICAgICAgKGluc2VydCAiXG5cbiIpCisgICAgICAgICAg ICAgICAgKGluc2VydCBvdXRwdXQpKSkKKworICAgICAgICAgICAgOzsgUmV0dXJuIHRoZSBIZWxw IGJ1ZmZlciBzdHJpbmcKKyAgICAgICAgICAgIChidWZmZXItc3RyaW5nKSkpKSkpKQogCiAoZGVm dmFyIGhlbHAteHJlZi1zdGFjay1pdGVtKQogCkBAIC0xMDc5LDE3ICsxMDM1LDE3IEBAIGRlc2Ny aWJlLXN5bWJvbAogICAgICAgICAgIChmb3VuZCAob3IgZm91bmQgdi1vci1mKSkKICAgICAgICAg ICAoZW5hYmxlLXJlY3Vyc2l2ZS1taW5pYnVmZmVycyB0KQogICAgICAgICAgICh2YWwgKGNvbXBs ZXRpbmctcmVhZCAoaWYgZm91bmQKLQkJCQkgICAgKGZvcm1hdAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGZvcm1hdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJEZXNjcmliZSBzeW1ib2wgKGRlZmF1bHQgJXMpOiAiIHYtb3ItZikKLQkJCQkgICJE ZXNjcmliZSBzeW1ib2w6ICIpCi0JCQkJb2JhcnJheQotCQkJCShsYW1iZGEgKHZ2KQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZXNjcmliZSBzeW1ib2w6ICIpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG9iYXJyYXkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxhbWJkYSAodnYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGNsLXNvbWUgKGxhbWJkYSAoeCkgKGZ1bmNhbGwgKG50aCAxIHgpIHZ2KSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmliZS1zeW1ib2wtYmFja2VuZHMp KQotCQkJCXQgbmlsIG5pbAotCQkJCShpZiBmb3VuZCAoc3ltYm9sLW5hbWUgdi1vci1mKSkpKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCBuaWwgbmlsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChpZiBmb3VuZCAoc3ltYm9sLW5hbWUgdi1vci1mKSkpKSkKICAg ICAgKGxpc3QgKGlmIChlcXVhbCB2YWwgIiIpCi0JICAgICAgIHYtb3ItZiAoaW50ZXJuIHZhbCkp KSkpCisgICAgICAgICAgICAgICB2LW9yLWYgKGludGVybiB2YWwpKSkpKQogICAoaWYgKG5vdCAo c3ltYm9scCBzeW1ib2wpKQogICAgICAgKHVzZXItZXJyb3IgIllvdSBkaWRuJ3Qgc3BlY2lmeSBh IGZ1bmN0aW9uIG9yIHZhcmlhYmxlIikpCiAgICh1bmxlc3MgKGJ1ZmZlci1saXZlLXAgYnVmZmVy KSAoc2V0cSBidWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkpCkBAIC0xMTM5LDIyICsxMDk1LDIyIEBA IGRlc2NyaWJlLXN5bnRheAogICAoaW50ZXJhY3RpdmUpCiAgIChzZXRxIGJ1ZmZlciAob3IgYnVm ZmVyIChjdXJyZW50LWJ1ZmZlcikpKQogICAoaGVscC1zZXR1cC14cmVmIChsaXN0ICMnZGVzY3Jp YmUtc3ludGF4IGJ1ZmZlcikKLQkJICAgKGNhbGxlZC1pbnRlcmFjdGl2ZWx5LXAgJ2ludGVyYWN0 aXZlKSkKKyAgICAgICAgICAgICAgICAgICAoY2FsbGVkLWludGVyYWN0aXZlbHktcCAnaW50ZXJh Y3RpdmUpKQogICAod2l0aC1oZWxwLXdpbmRvdyAoaGVscC1idWZmZXIpCiAgICAgKGxldCAoKHRh YmxlICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlciAoc3ludGF4LXRhYmxlKSkpKQogICAgICAg KHdpdGgtY3VycmVudC1idWZmZXIgc3RhbmRhcmQtb3V0cHV0Ci0JKGRlc2NyaWJlLXZlY3RvciB0 YWJsZSAnaW50ZXJuYWwtZGVzY3JpYmUtc3ludGF4LXZhbHVlKQotCSh3aGlsZSAoc2V0cSB0YWJs ZSAoY2hhci10YWJsZS1wYXJlbnQgdGFibGUpKQotCSAgKGluc2VydCAiXG5UaGUgcGFyZW50IHN5 bnRheCB0YWJsZSBpczoiKQotCSAgKGRlc2NyaWJlLXZlY3RvciB0YWJsZSAnaW50ZXJuYWwtZGVz Y3JpYmUtc3ludGF4LXZhbHVlKSkpKSkpCisgICAgICAgIChkZXNjcmliZS12ZWN0b3IgdGFibGUg J2ludGVybmFsLWRlc2NyaWJlLXN5bnRheC12YWx1ZSkKKyAgICAgICAgKHdoaWxlIChzZXRxIHRh YmxlIChjaGFyLXRhYmxlLXBhcmVudCB0YWJsZSkpCisgICAgICAgICAgKGluc2VydCAiXG5UaGUg cGFyZW50IHN5bnRheCB0YWJsZSBpczoiKQorICAgICAgICAgIChkZXNjcmliZS12ZWN0b3IgdGFi bGUgJ2ludGVybmFsLWRlc2NyaWJlLXN5bnRheC12YWx1ZSkpKSkpKQogCiAoZGVmdW4gaGVscC1k ZXNjcmliZS1jYXRlZ29yeS1zZXQgKHZhbHVlKQogICAoaW5zZXJ0IChjb25kCi0JICAgKChudWxs IHZhbHVlKSAiZGVmYXVsdCIpCi0JICAgKChjaGFyLXRhYmxlLXAgdmFsdWUpICJkZWVwZXIgY2hh ci10YWJsZSAuLi4iKQotCSAgICh0IChjb25kaXRpb24tY2FzZSBuaWwKLQkJICAoY2F0ZWdvcnkt c2V0LW1uZW1vbmljcyB2YWx1ZSkKLQkJKGVycm9yICJpbnZhbGlkIikpKSkpKQorICAgICAgICAg ICAoKG51bGwgdmFsdWUpICJkZWZhdWx0IikKKyAgICAgICAgICAgKChjaGFyLXRhYmxlLXAgdmFs dWUpICJkZWVwZXIgY2hhci10YWJsZSAuLi4iKQorICAgICAgICAgICAodCAoY29uZGl0aW9uLWNh c2UgbmlsCisgICAgICAgICAgICAgICAgICAoY2F0ZWdvcnktc2V0LW1uZW1vbmljcyB2YWx1ZSkK KyAgICAgICAgICAgICAgICAoZXJyb3IgImludmFsaWQiKSkpKSkpCiAKIDs7OyMjI2F1dG9sb2Fk CiAoZGVmdW4gZGVzY3JpYmUtY2F0ZWdvcmllcyAoJm9wdGlvbmFsIGJ1ZmZlcikKQEAgLTExNjUs NTcgKzExMjEsNTcgQEAgZGVzY3JpYmUtY2F0ZWdvcmllcwogICAoaW50ZXJhY3RpdmUpCiAgIChz ZXRxIGJ1ZmZlciAob3IgYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpKQogICAoaGVscC1zZXR1cC14 cmVmIChsaXN0ICMnZGVzY3JpYmUtY2F0ZWdvcmllcyBidWZmZXIpCi0JCSAgIChjYWxsZWQtaW50 ZXJhY3RpdmVseS1wICdpbnRlcmFjdGl2ZSkpCisgICAgICAgICAgICAgICAgICAgKGNhbGxlZC1p bnRlcmFjdGl2ZWx5LXAgJ2ludGVyYWN0aXZlKSkKICAgKHdpdGgtaGVscC13aW5kb3cgKGhlbHAt YnVmZmVyKQogICAgIChsZXQqICgodGFibGUgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmZmVyIChj YXRlZ29yeS10YWJsZSkpKQotCSAgIChkb2NzIChjaGFyLXRhYmxlLWV4dHJhLXNsb3QgdGFibGUg MCkpKQorICAgICAgICAgICAoZG9jcyAoY2hhci10YWJsZS1leHRyYS1zbG90IHRhYmxlIDApKSkK ICAgICAgIChpZiAob3IgKG5vdCAodmVjdG9ycCBkb2NzKSkgKC89IChsZW5ndGggZG9jcykgOTUp KQotCSAgKGVycm9yICJJbnZhbGlkIGZpcnN0IGV4dHJhIHNsb3QgaW4gdGhpcyBjYXRlZ29yeSB0 YWJsZVxuIikpCisgICAgICAgICAgKGVycm9yICJJbnZhbGlkIGZpcnN0IGV4dHJhIHNsb3QgaW4g dGhpcyBjYXRlZ29yeSB0YWJsZVxuIikpCiAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBzdGFu ZGFyZC1vdXRwdXQKICAgICAgICAgKHNldHEtZGVmYXVsdCBoZWxwLWJ1dHRvbi1jYWNoZSAobWFr ZS1tYXJrZXIpKQotCShpbnNlcnQgIkxlZ2VuZCBvZiBjYXRlZ29yeSBtbmVtb25pY3MgIikKKyAg ICAgICAgKGluc2VydCAiTGVnZW5kIG9mIGNhdGVnb3J5IG1uZW1vbmljcyAiKQogICAgICAgICAo aW5zZXJ0LWJ1dHRvbiAiKGxvbmdlciBkZXNjcmlwdGlvbnMgYXQgdGhlIGJvdHRvbSkiCiAgICAg ICAgICAgICAgICAgICAgICAgICdhY3Rpb24gaGVscC1idXR0b24tY2FjaGUKICAgICAgICAgICAg ICAgICAgICAgICAgJ2ZvbGxvdy1saW5rIHQKICAgICAgICAgICAgICAgICAgICAgICAgJ2hlbHAt ZWNobyAibW91c2UtMiwgUkVUOiBzaG93IGZ1bGwgbGVnZW5kIikKICAgICAgICAgKGluc2VydCAi XG4iKQotCShsZXQgKChwb3MgKHBvaW50KSkgKGl0ZW1zIDApIGxpbmVzIG4pCi0JICAoZG90aW1l cyAoaSA5NSkKLQkgICAgKGlmIChhcmVmIGRvY3MgaSkgKHNldHEgaXRlbXMgKDErIGl0ZW1zKSkp KQotCSAgKHNldHEgbGluZXMgKDErICgvICgxLSBpdGVtcykgNCkpKQotCSAgKHNldHEgbiAwKQot CSAgKGRvdGltZXMgKGkgOTUpCi0JICAgIChsZXQgKChlbHQgKGFyZWYgZG9jcyBpKSkpCi0JICAg ICAgKHdoZW4gZWx0Ci0JCShzdHJpbmctbWF0Y2ggIi4qIiBlbHQpCi0JCShzZXRxIGVsdCAobWF0 Y2gtc3RyaW5nIDAgZWx0KSkKLQkJKGlmICg+PSAobGVuZ3RoIGVsdCkgMTcpCi0JCSAgICAoc2V0 cSBlbHQgKGNvbmNhdCAoc3Vic3RyaW5nIGVsdCAwIDE0KSAiLi4uIikpKQotCQkoaWYgKDwgKHBv aW50KSAocG9pbnQtbWF4KSkKLQkJICAgIChtb3ZlLXRvLWNvbHVtbiAoKiAyMCAoLyBuIGxpbmVz KSkgdCkpCi0JCShpbnNlcnQgKCsgaSA/XHMpID86IGVsdCkKLQkJKGlmICg8IChwb2ludCkgKHBv aW50LW1heCkpCi0JCSAgICAoZm9yd2FyZC1saW5lIDEpCi0JCSAgKGluc2VydCAiXG4iKSkKLQkJ KHNldHEgbiAoMSsgbikpCi0JCShpZiAoPSAoJSBuIGxpbmVzKSAwKQotCQkgICAgKGdvdG8tY2hh ciBwb3MpKSkpKSkKLQkoZ290by1jaGFyIChwb2ludC1tYXgpKQotCShpbnNlcnQgIlxuIgotCQki Y2hhcmFjdGVyKHMpXHRjYXRlZ29yeSBtbmVtb25pY3NcbiIKLQkJIi0tLS0tLS0tLS0tLVx0LS0t LS0tLS0tLS0tLS0tLS0tIikKLQkoZGVzY3JpYmUtdmVjdG9yIHRhYmxlICdoZWxwLWRlc2NyaWJl LWNhdGVnb3J5LXNldCkKKyAgICAgICAgKGxldCAoKHBvcyAocG9pbnQpKSAoaXRlbXMgMCkgbGlu ZXMgbikKKyAgICAgICAgICAoZG90aW1lcyAoaSA5NSkKKyAgICAgICAgICAgIChpZiAoYXJlZiBk b2NzIGkpIChzZXRxIGl0ZW1zICgxKyBpdGVtcykpKSkKKyAgICAgICAgICAoc2V0cSBsaW5lcyAo MSsgKC8gKDEtIGl0ZW1zKSA0KSkpCisgICAgICAgICAgKHNldHEgbiAwKQorICAgICAgICAgIChk b3RpbWVzIChpIDk1KQorICAgICAgICAgICAgKGxldCAoKGVsdCAoYXJlZiBkb2NzIGkpKSkKKyAg ICAgICAgICAgICAgKHdoZW4gZWx0CisgICAgICAgICAgICAgICAgKHN0cmluZy1tYXRjaCAiLioi IGVsdCkKKyAgICAgICAgICAgICAgICAoc2V0cSBlbHQgKG1hdGNoLXN0cmluZyAwIGVsdCkpCisg ICAgICAgICAgICAgICAgKGlmICg+PSAobGVuZ3RoIGVsdCkgMTcpCisgICAgICAgICAgICAgICAg ICAgIChzZXRxIGVsdCAoY29uY2F0IChzdWJzdHJpbmcgZWx0IDAgMTQpICIuLi4iKSkpCisgICAg ICAgICAgICAgICAgKGlmICg8IChwb2ludCkgKHBvaW50LW1heCkpCisgICAgICAgICAgICAgICAg ICAgIChtb3ZlLXRvLWNvbHVtbiAoKiAyMCAoLyBuIGxpbmVzKSkgdCkpCisgICAgICAgICAgICAg ICAgKGluc2VydCAoKyBpID9ccykgPzogZWx0KQorICAgICAgICAgICAgICAgIChpZiAoPCAocG9p bnQpIChwb2ludC1tYXgpKQorICAgICAgICAgICAgICAgICAgICAoZm9yd2FyZC1saW5lIDEpCisg ICAgICAgICAgICAgICAgICAoaW5zZXJ0ICJcbiIpKQorICAgICAgICAgICAgICAgIChzZXRxIG4g KDErIG4pKQorICAgICAgICAgICAgICAgIChpZiAoPSAoJSBuIGxpbmVzKSAwKQorICAgICAgICAg ICAgICAgICAgICAoZ290by1jaGFyIHBvcykpKSkpKQorICAgICAgICAoZ290by1jaGFyIChwb2lu dC1tYXgpKQorICAgICAgICAoaW5zZXJ0ICJcbiIKKyAgICAgICAgICAgICAgICAiY2hhcmFjdGVy KHMpXHRjYXRlZ29yeSBtbmVtb25pY3NcbiIKKyAgICAgICAgICAgICAgICAiLS0tLS0tLS0tLS0t XHQtLS0tLS0tLS0tLS0tLS0tLS0iKQorICAgICAgICAoZGVzY3JpYmUtdmVjdG9yIHRhYmxlICdo ZWxwLWRlc2NyaWJlLWNhdGVnb3J5LXNldCkKICAgICAgICAgKHNldC1tYXJrZXIgaGVscC1idXR0 b24tY2FjaGUgKHBvaW50KSkKLQkoaW5zZXJ0ICJMZWdlbmQgb2YgY2F0ZWdvcnkgbW5lbW9uaWNz OlxuIikKLQkoZG90aW1lcyAoaSA5NSkKLQkgIChsZXQgKChlbHQgKGFyZWYgZG9jcyBpKSkpCi0J ICAgICh3aGVuIGVsdAotCSAgICAgIChpZiAoc3RyaW5nLW1hdGNoICJcbiIgZWx0KQotCQkgIChz ZXRxIGVsdCAoc3Vic3RyaW5nIGVsdCAobWF0Y2gtZW5kIDApKSkpCi0JICAgICAgKGluc2VydCAo KyBpID9ccykgIjogIiBlbHQgIlxuIikpKSkKLQkod2hpbGUgKHNldHEgdGFibGUgKGNoYXItdGFi bGUtcGFyZW50IHRhYmxlKSkKLQkgIChpbnNlcnQgIlxuVGhlIHBhcmVudCBjYXRlZ29yeSB0YWJs ZSBpczoiKQotCSAgKGRlc2NyaWJlLXZlY3RvciB0YWJsZSAnaGVscC1kZXNjcmliZS1jYXRlZ29y eS1zZXQpKSkpKSkKKyAgICAgICAgKGluc2VydCAiTGVnZW5kIG9mIGNhdGVnb3J5IG1uZW1vbmlj czpcbiIpCisgICAgICAgIChkb3RpbWVzIChpIDk1KQorICAgICAgICAgIChsZXQgKChlbHQgKGFy ZWYgZG9jcyBpKSkpCisgICAgICAgICAgICAod2hlbiBlbHQKKyAgICAgICAgICAgICAgKGlmIChz dHJpbmctbWF0Y2ggIlxuIiBlbHQpCisgICAgICAgICAgICAgICAgICAoc2V0cSBlbHQgKHN1YnN0 cmluZyBlbHQgKG1hdGNoLWVuZCAwKSkpKQorICAgICAgICAgICAgICAoaW5zZXJ0ICgrIGkgP1xz KSAiOiAiIGVsdCAiXG4iKSkpKQorICAgICAgICAod2hpbGUgKHNldHEgdGFibGUgKGNoYXItdGFi bGUtcGFyZW50IHRhYmxlKSkKKyAgICAgICAgICAoaW5zZXJ0ICJcblRoZSBwYXJlbnQgY2F0ZWdv cnkgdGFibGUgaXM6IikKKyAgICAgICAgICAoZGVzY3JpYmUtdmVjdG9yIHRhYmxlICdoZWxwLWRl c2NyaWJlLWNhdGVnb3J5LXNldCkpKSkpKQogCiAMCiA7OzsgUmVwbGFjZW1lbnRzIGZvciBvbGQg bGliLXNyYy8gcHJvZ3JhbXMuICBEb24ndCBzZWVtIGVzcGVjaWFsbHkgdXNlZnVsLgotLSAKMi43 LjQKCg== --001a114e732c1a94f0053d4cb85e--