From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Jean-Philippe Gravel Newsgroups: gmane.emacs.bugs Subject: bug#10580: 24.0.92; gdb initialization takes more than one minute at 100 Date: Thu, 28 Feb 2013 22:31:03 -0500 Message-ID: References: <87pq242gvz.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=0015175cf87813586404d6d4a32f X-Trace: ger.gmane.org 1362108731 10986 80.91.229.3 (1 Mar 2013 03:32:11 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 1 Mar 2013 03:32:11 +0000 (UTC) Cc: Chong Yidong To: 10580@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Mar 01 04:32:34 2013 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1UBGi1-0004Nx-EP for geb-bug-gnu-emacs@m.gmane.org; Fri, 01 Mar 2013 04:32:33 +0100 Original-Received: from localhost ([::1]:37490 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UBGhg-0008BN-8V for geb-bug-gnu-emacs@m.gmane.org; Thu, 28 Feb 2013 22:32:12 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:49693) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UBGhZ-00086I-WA for bug-gnu-emacs@gnu.org; Thu, 28 Feb 2013 22:32:08 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UBGhX-0007En-Jq for bug-gnu-emacs@gnu.org; Thu, 28 Feb 2013 22:32:05 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:51639) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UBGhX-0007Ei-GH for bug-gnu-emacs@gnu.org; Thu, 28 Feb 2013 22:32:03 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1UBGjS-0002Lx-Gl for bug-gnu-emacs@gnu.org; Thu, 28 Feb 2013 22:34:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Jean-Philippe Gravel Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 01 Mar 2013 03:34:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 10580 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 10580-submit@debbugs.gnu.org id=B10580.13621087898977 (code B ref 10580); Fri, 01 Mar 2013 03:34:02 +0000 Original-Received: (at 10580) by debbugs.gnu.org; 1 Mar 2013 03:33:09 +0000 Original-Received: from localhost ([127.0.0.1]:57103 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UBGia-0002Kk-VT for submit@debbugs.gnu.org; Thu, 28 Feb 2013 22:33:09 -0500 Original-Received: from mail-bk0-f42.google.com ([209.85.214.42]:59581) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UBGiW-0002Ka-OC for 10580@debbugs.gnu.org; Thu, 28 Feb 2013 22:33:05 -0500 Original-Received: by mail-bk0-f42.google.com with SMTP id jk7so1160969bkc.1 for <10580@debbugs.gnu.org>; Thu, 28 Feb 2013 19:31:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:x-received:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; bh=Y8UXjyAdbAbaWvOoxST+Uu2goV4iJKqkMyFgQfD/5LE=; b=nWlTiG1Rq+UIyxUDc8yfyREzRzoopNSV9htWht0XTWJ85cJg51dmhjqPEvgbGUFejZ MRhi9DOeI2IrbICua/NyY6ByQzkxMjfiJvriD/Cqd/6fUYZasdMBGT4FiG43xIU85cFi /ZbNjGwrNDp1RPejX1ZrfeQmrMQ4/clAC8d2fku+1gRtkkRcztavTd68hTJJF/tSbdYL YcnjrIpZcPPB4jEZ8/bDPTifsR5+KwO+cNw1FU3PjibhuhU5Q6bAfAz0cMG0+rV+qrid UZ5qEF6DYUUFk6sTvoIWzJgrfTkeoWC2wxJhR+4tJB34lDN6kEgm3QeaW9eBEjFdBYdW 4raA== X-Received: by 10.204.156.206 with SMTP id y14mr3260708bkw.34.1362108664193; Thu, 28 Feb 2013 19:31:04 -0800 (PST) Original-Received: by 10.204.195.71 with HTTP; Thu, 28 Feb 2013 19:31:03 -0800 (PST) In-Reply-To: <87pq242gvz.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:71969 Archived-At: --0015175cf87813586404d6d4a32f Content-Type: text/plain; charset=ISO-8859-1 > Thanks. This looks like a very good change indeed. In order for us to > include it in Emacs, we need a copyright assignment; I hope you will be > willing to sign one. I will contact you off-list about how to do this. My copyright assignment is finally complete. While I was waiting for that, I found a problem with my patch. If you use the gdb command "finish" to exit from a function, gdb replies with a dump of the returned value (even though gdb-mi will not show it). My previous patch was failing with a regexp overflow if the return value was too big. This new patch will solve this problem. --0015175cf87813586404d6d4a32f Content-Type: application/octet-stream; name="gdb-mi-optimization-2.patch" Content-Disposition: attachment; filename="gdb-mi-optimization-2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hdqs3axl0 KioqIHRydW5rL2xpc3AvcHJvZ21vZGVzL2dkYi1taS5lbAkyMDEzLTAxLTI1IDIzOjEyOjAwLjA2 NTc1ODI1NyAtMDUwMAotLS0gdHJ1bmstZGV2L2xpc3AvcHJvZ21vZGVzL2dkYi1taS5lbAkyMDEz LTAyLTI4IDIxOjI5OjE1LjYzNDA2MzY3NyAtMDUwMAoqKioqKioqKioqKioqKioKKioqIDUwNyw1 MTIgKioqKgotLS0gNTA3LDUxOSAtLS0tCiAgICA6Z3JvdXAgJ2dkYgogICAgOnZlcnNpb24gIjIy LjEiKQogIAorIChkZWZjdXN0b20gZ2RibWktZGVidWctbW9kZSBuaWwKKyAgICJXaGVuIG5vbi1u aWwsIGFsbCB0aGUgbWVzc2FnZXMgc2VudCBvciByZWNlaXZlZCBmcm9tIEdEQi9NSSBhcmUgcHJp bnRlZCBpbgorIHRoZSAqTWVzc2FnZXMqIGJ1ZmZlci4iCisgICA6dHlwZSAnYm9vbGVhbgorICAg Omdyb3VwICdndWQKKyAgIDp2ZXJzaW9uICIyNC4zIikKKyAKICAoZGVmdW4gZ2RiLWZvcmNlLW1v ZGUtbGluZS11cGRhdGUgKHN0YXR1cykKICAgIChsZXQgKChidWZmZXIgZ3VkLWNvbWludC1idWZm ZXIpKQogICAgICAoaWYgKGFuZCBidWZmZXIgKGJ1ZmZlci1uYW1lIGJ1ZmZlcikpCioqKioqKioq KioqKioqKgoqKiogODQ2LDg1MSAqKioqCi0tLSA4NTMsODYwIC0tLS0KICAgICAgICAgIGdkYi1y ZWdpc3Rlci1uYW1lcyAnKCkKICAgICAgICAgIGdkYi1ub24tc3RvcCBnZGItbm9uLXN0b3Atc2V0 dGluZykKICAgIDs7CisgICAoZ2RibWktYm5mLWluaXQpCisgICA7OwogICAgKHNldHEgZ2RiLWJ1 ZmZlci10eXBlICdnZGJtaSkKICAgIDs7CiAgICAoZ2RiLWZvcmNlLW1vZGUtbGluZS11cGRhdGUK KioqKioqKioqKioqKioqCioqKiAxNzM5LDE3NDQgKioqKgotLS0gMTc0OCwxNzU0IC0tLS0KICAg IChzZXRxIGdkYi10b2tlbi1udW1iZXIgKDErIGdkYi10b2tlbi1udW1iZXIpKQogICAgKHNldHEg Y29tbWFuZCAoY29uY2F0IChudW1iZXItdG8tc3RyaW5nIGdkYi10b2tlbi1udW1iZXIpIGNvbW1h bmQpKQogICAgKHB1c2ggKGNvbnMgZ2RiLXRva2VuLW51bWJlciBoYW5kbGVyLWZ1bmN0aW9uKSBn ZGItaGFuZGxlci1hbGlzdCkKKyAgIChpZiBnZGJtaS1kZWJ1Zy1tb2RlIChtZXNzYWdlICJnZGIt aW5wdXQ6ICVzIiBjb21tYW5kKSkKICAgIChwcm9jZXNzLXNlbmQtc3RyaW5nIChnZXQtYnVmZmVy LXByb2Nlc3MgZ3VkLWNvbWludC1idWZmZXIpCiAgCQkgICAgICAgKGNvbmNhdCBjb21tYW5kICJc biIpKSkKICAKKioqKioqKioqKioqKioqCioqKiAxODc0LDE4OTYgKioqKgogICAgICAgIChzZXQt d2luZG93LWJ1ZmZlciBzb3VyY2Utd2luZG93IGJ1ZmZlcikpCiAgICAgIHNvdXJjZS13aW5kb3cp KQogIAotIChkZWZ1biBnZGItY2FyPCAoYSBiKQotICAgKDwgKGNhciBhKSAoY2FyIGIpKSkKICAK ISAoZGVmdmFyIGdkYm1pLXJlY29yZC1saXN0CiEgICAnKChnZGItZ2RiIC4gIihnZGIpIFxuIikK ISAgICAgKGdkYi1kb25lIC4gIlxcKFswLTldKlxcKVxcXmRvbmUsP1xcKC4qP1xcKVxuIikKISAg ICAgKGdkYi1zdGFydGluZyAuICJcXChbMC05XSpcXClcXF5ydW5uaW5nXG4iKQohICAgICAoZ2Ri LWVycm9yIC4gIlxcKFswLTldKlxcKVxcXmVycm9yLFxcKC4qP1xcKVxuIikKISAgICAgKGdkYi1j b25zb2xlIC4gIn5cXChcIi4qP1wiXFwpXG4iKQohICAgICAoZ2RiLWludGVybmFscyAuICImXFwo XCIuKj9cIlxcKVxuIikKISAgICAgKGdkYi1zdG9wcGVkIC4gIlxcKnN0b3BwZWQsP1xcKC4qP1xc KVxuIikKISAgICAgKGdkYi1ydW5uaW5nIC4gIlxcKnJ1bm5pbmcsXFwoLio/XG5cXCkiKQohICAg ICAoZ2RiLXRocmVhZC1jcmVhdGVkIC4gIj10aHJlYWQtY3JlYXRlZCxcXCguKj9cblxcKSIpCiEg ICAgIChnZGItdGhyZWFkLXNlbGVjdGVkIC4gIj10aHJlYWQtc2VsZWN0ZWQsXFwoLio/XFwpXG4i KQohICAgICAoZ2RiLXRocmVhZC1leGl0ZWQgLiAiPXRocmVhZC1leGl0ZWQsXFwoLio/XG5cXCki KQohICAgICAoZ2RiLWlnbm9yZWQtbm90aWZpY2F0aW9uIC4gIj1bLVs6YWxwaGE6XV0rLD9cXCgu Kj9cXClcbiIpCiEgICAgIChnZGItc2hlbGwgLiAiXFwoXFwoPzpeLitcblxcKStcXCkiKSkpCiAg CiAgKGRlZnVuIGd1ZC1nZGJtaS1tYXJrZXItZmlsdGVyIChzdHJpbmcpCiAgICAiRmlsdGVyIEdE Qi9NSSBvdXRwdXQuIgotLS0gMTg4NCwyMjA1IC0tLS0KICAgICAgICAoc2V0LXdpbmRvdy1idWZm ZXIgc291cmNlLXdpbmRvdyBidWZmZXIpKQogICAgICBzb3VyY2Utd2luZG93KSkKICAKICAKISAo ZGVmdW4gZ2RibWktc3RhcnQtd2l0aCAoc3RyIG9mZnNldCBtYXRjaCkKISAgICJSZXR1cm5zIG5v bi1uaWwgaWYgc3RyaW5nIFNUUiBzdGFydHMgd2l0aCBNQVRDSCwgZWxzZSByZXR1cm5zIG5pbC4K ISBPRkZTRVQgaXMgdGhlIHBvc2l0aW9uIGluIFNUUiBhdCB3aGljaCB0aGUgY29tcGFyaXNvbiB0 YWtlcyBwbGFjZS4iCiEgICAobGV0ICgobWF0Y2gtbGVuZ3RoIChsZW5ndGggbWF0Y2gpKQohIAko c3RyLWxlbmd0aCAoLSAobGVuZ3RoIHN0cikgb2Zmc2V0KSkpCiEgICAgICh3aGVuICg+PSBzdHIt bGVuZ3RoIG1hdGNoLWxlbmd0aCkKISAgICAgICAoc3RyaW5nLWVxdWFsIG1hdGNoIChzdWJzdHJp bmcgc3RyIG9mZnNldCAoKyBvZmZzZXQgbWF0Y2gtbGVuZ3RoKSkpKSkpCiEgCiEgKGRlZnVuIGdk Ym1pLXNhbWUtc3RhcnQgKHN0ciBvZmZzZXQgbWF0Y2gpCiEgICAiUmV0dXJucyBub24tbmlsIGlm IFNUUiBhbmQgTUFUQ0ggYXJlIGVxdWFsIHVwIHRvIHRoZSBlbmQgb2YgZWl0aGVyIHN0cmluZ3Ms IGVsc2UgcmV0dXJucyBuaWwuCiEgT0ZGU0VUIGlzIHRoZSBwb3NpdGlvbiBpbiBTVFIgYXQgd2hp Y2ggdGhlIGNvbXBhcmlzb24gdGFrZXMgcGxhY2UuIgohICAgKGxldCogKChzdHItbGVuZ3RoICgt IChsZW5ndGggc3RyKSBvZmZzZXQpKQohIAkgKG1hdGNoLWxlbmd0aCAobGVuZ3RoIG1hdGNoKSkK ISAJIChjb21wYXJlLWxlbmd0aCAobWluIHN0ci1sZW5ndGggbWF0Y2gtbGVuZ3RoKSkpCiEgICAg ICh3aGVuICg+IGNvbXBhcmUtbGVuZ3RoIDApCiEgICAgICAgKHN0cmluZy1lcXVhbCAoc3Vic3Ry aW5nIHN0ciBvZmZzZXQgKCsgb2Zmc2V0IGNvbXBhcmUtbGVuZ3RoKSkKISAJCSAgICAoc3Vic3Ry aW5nIG1hdGNoIDAgY29tcGFyZS1sZW5ndGgpKSkpKQohIAohIChkZWZ1biBnZGJtaS1pcy1udW1i ZXIgKGNoYXJhY3RlcikKISAiUmV0dXJucyBub24tbmlsIGlmIENIQVJBQ1RFUiBpcyBhIG51bWVy aWNhbCBjaGFyYWN0ZXIgYmV0d2VlbiAwIGFuZCA5LAohIGVsc2UgcmV0dXJucyBuaWwuIgohICAg KGFuZCAoPj0gY2hhcmFjdGVyID8wKQohICAgICAgICAoPD0gY2hhcmFjdGVyID85KSkpCiEgCiEg CiEgKGRlZnZhciBnZGJtaS1ibmYtc3RhdGUgJ2dkYm1pLWJuZi1vdXRwdXQKISAgICJDdXJyZW50 IEdEQi9NSSBvdXRwdXQgcGFyc2VyIHN0YXRlLiAgVGhlIHBhcnNlciBpcyBwbGFjZWQgaW4gYQoh IGRpZmZlcmVudCBzdGF0ZSB3aGVuIGFuIGluY29tcGxldGUgZGF0YSBzdGVhbSBpcyByZWNlaXZl ZCBmcm9tIEdEQi4KISBUaGlzIHZhcmlhYmxlIHdpbGwgcHJlc2VydmUgdGhlIHN0YXRlIHJlcXVp cmVkIHRvIHJlc3VtZSB0aGUgcGFyc2luZwohIHdoZW4gbW9yZSBkYXRhIGFycml2ZXMuIikKISAo bWFrZS12YXJpYWJsZS1idWZmZXItbG9jYWwgJ2dkYm1pLWJuZi1zdGF0ZSkKISAKISAoZGVmdmFy IGdkYm1pLWJuZi1vZmZzZXQgMAohICAgIk9mZnNldCBpbiBndWQtbWFya2VyLWFjYyBhdCB3aGlj aCB0aGUgcGFyc2VyIGlzIHJlYWRpbmcuCiEgVGhpcyBvZmZzZXQgaXMgdXNlZCB0byBiZSBhYmxl IHRvIHBhcnNlIHRoZSBHREIvTUkgbWVzc2FnZQohIGluLXBsYWNlLCB3aXRob3V0IHRoZSBuZWVk IG9mIGNvcHlpbmcgdGhlIHN0cmluZyBpbiBhIHRlbXBvcmFyeSBidWZmZXIKISBvciBkaXNjYXJk aW5nIHBhcnNlZCB0b2tlbnMgYnkgc3Vic3RyaW5naW5nIHRoZSBtZXNzYWdlLiIpCiEgKG1ha2Ut dmFyaWFibGUtYnVmZmVyLWxvY2FsICdnZGJtaS1ibmYtb2Zmc2V0KQohIAohIChkZWZ1biBnZGJt aS1ibmYtaW5pdCAoKQohICAgIkluaXRpYWxpemVzIHRoZSBHREIvTUkgbWVzc2FnZSBwYXJzZXIi CiEgICAoc2V0cSBnZGJtaS1ibmYtc3RhdGUgJ2dkYm1pLWJuZi1vdXRwdXQpCiEgICAoc2V0cSBn ZGJtaS1ibmYtb2Zmc2V0IDApCiEgICAoc2V0cSBndWQtbWFya2VyLWFjYyAiIikpCiEgCiEgCiEg KGRlZnVuIGdkYm1pLWJuZi1vdXRwdXQgKCkKISAgICJJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZm9s bG93aW5nIEdEQi9NSSBvdXRwdXQgZ3JhbW1hciBydWxlOgohIAohICAgb3V0cHV0ID09PgohICAg ICAgICAoIG91dC1vZi1iYW5kLXJlY29yZCApKiBbIHJlc3VsdC1yZWNvcmQgXSBnZGItcHJvbXB0 IgohIAohICAgICAoZ2RibWktYm5mLXNraXAtdW5yZWNvZ25pemVkKQohICAgICAod2hpbGUgKGdk Ym1pLWJuZi1vdXQtb2YtYmFuZC1yZWNvcmQpKQohICAgICAoZ2RibWktYm5mLXJlc3VsdC1yZWNv cmQpCiEgICAgIChnZGJtaS1ibmYtZ2RiLXByb21wdCkpCiEgCiEgCiEgKGRlZnVuIGdkYm1pLWJu Zi1za2lwLXVucmVjb2duaXplZCAoKQohICJVc2VkIGFzIGEgcHJvdGVjdGlvbiBtZWNoYW5pc20g aW4gY2FzZSBzb21ldGhpbmcgZ29lcyB3cm9uZyB3aGVuIHBhcnNpbmcKISBhIEdEQi9NSSByZXBs eSBtZXNzYWdlLiAgVGhpcyBmdW5jdGlvbiB3aWxsIHNraXAgY2hhcmFjdGVycyB1bnRpbCBpcyBl bmNvdW50ZXJzCiEgdGhlIGJlZ2lubmluZyBvZiBhIHZhbGlkIHJlY29yZC4iCiEgICAobGV0ICgo YWNjLWxlbmd0aCAobGVuZ3RoIGd1ZC1tYXJrZXItYWNjKSkKISAJKHByZWZpeC1vZmZzZXQgZ2Ri bWktYm5mLW9mZnNldCkKISAJKHByb21wdCAiKGdkYikgXG4iKSkKISAKISAgICAgKHdoaWxlIChh bmQgKDwgcHJlZml4LW9mZnNldCBhY2MtbGVuZ3RoKQohICAgICAgICAgICAgICAgICAoZ2RibWkt aXMtbnVtYmVyIChhcmVmIGd1ZC1tYXJrZXItYWNjIHByZWZpeC1vZmZzZXQpKSkKISAgICAgICAo c2V0cSBwcmVmaXgtb2Zmc2V0ICgxKyBwcmVmaXgtb2Zmc2V0KSkpCiEgCiEgICAgIChpZiAoYW5k ICg8IHByZWZpeC1vZmZzZXQgYWNjLWxlbmd0aCkKISAgICAgICAgICAgICAgKG5vdCAobWVtYmVy IChhcmVmIGd1ZC1tYXJrZXItYWNjIHByZWZpeC1vZmZzZXQpICcoP14gPyogPysgPz0gP34gP0Ag PyYpKSkKISAgICAgICAgICAgICAgKG5vdCAoZ2RibWktc2FtZS1zdGFydCBndWQtbWFya2VyLWFj YyBnZGJtaS1ibmYtb2Zmc2V0IHByb21wdCkpCiEgICAgICAgICAgICAgIChzdHJpbmctbWF0Y2gg IlxcKFteXiorPX5AJl0rXFwpIiBndWQtbWFya2VyLWFjYyBnZGJtaS1ibmYtb2Zmc2V0KSkKISAg ICAgICAgIChsZXQgKCh1bnJlY29nbml6ZWQtc3RyIChtYXRjaC1zdHJpbmcgMCBndWQtbWFya2Vy LWFjYykpKQohICAgICAgICAgICAoc2V0cSBnZGJtaS1ibmYtb2Zmc2V0IChtYXRjaC1lbmQgMCkp CiEgCSAgKGlmIGdkYm1pLWRlYnVnLW1vZGUgKG1lc3NhZ2UgImdkYm1pLWJuZi1za2lwLXVucmVj b2duaXplZDogJXMiIHVucmVjb2duaXplZC1zdHIpKQohICAgICAgICAgICAoZ2RiLXNoZWxsIHVu cmVjb2duaXplZC1zdHIpCiEgCSAgdCkpKSkKISAKISAKISAoZGVmdW4gZ2RibWktYm5mLWdkYi1w cm9tcHQgKCkKISAgICJJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZm9sbG93aW5nIEdEQi9NSSBvdXRw dXQgZ3JhbW1hciBydWxlOgohICAgZ2RiLXByb21wdCA9PT4KISAgICAgICAgJyhnZGIpJyBubAoh IAohICAgbmwgPT0+CiEgICAgICAgIENSIHwgQ1ItTEYiCiEgCiEgICAobGV0ICgocHJvbXB0ICIo Z2RiKSBcbiIpKQohICAgICAod2hlbiAoZ2RibWktc3RhcnQtd2l0aCBndWQtbWFya2VyLWFjYyBn ZGJtaS1ibmYtb2Zmc2V0IHByb21wdCkKISAgICAgICAoaWYgZ2RibWktZGVidWctbW9kZSAobWVz c2FnZSAiZ2RibWktYm5mLWdkYi1wcm9tcHQ6ICVzIiBwcm9tcHQpKQohICAgICAgIChnZGItZ2Ri IHByb21wdCkKISAgICAgICAoc2V0cSBnZGJtaS1ibmYtb2Zmc2V0ICgrIGdkYm1pLWJuZi1vZmZz ZXQgKGxlbmd0aCBwcm9tcHQpKSkKISAKISAgICAgICA7OyBSZXR1cm5zIG5vbi1uaWwgdG8gdGVs bCBndWQtZ2RibWktbWFya2VyLWZpbHRlciB3ZSd2ZSByZWFjaGVkCiEgICAgICAgOzsgdGhlIGVu ZCBvZiBhIEdEQiByZXBseSBtZXNzYWdlLgohICAgICAgIHQpKSkKISAKISAKISAoZGVmdW4gZ2Ri bWktYm5mLXJlc3VsdC1yZWNvcmQgKCkKISAgICJJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZm9sbG93 aW5nIEdEQi9NSSBvdXRwdXQgZ3JhbW1hciBydWxlOgohIAohICAgcmVzdWx0LXJlY29yZCA9PT4K ISAgICAgICAgWyB0b2tlbiBdICdeJyByZXN1bHQtY2xhc3MgKCAnLCcgcmVzdWx0ICkqIG5sCiEg CiEgICB0b2tlbiA9PT4KISAgICAgICAgYW55IHNlcXVlbmNlIG9mIGRpZ2l0cy4iCiEgCiEgICAo Z2RibWktYm5mLXJlc3VsdC1hbmQtYXN5bmMtcmVjb3JkLWltcGwpKQohIAohIAohIChkZWZ1biBn ZGJtaS1ibmYtb3V0LW9mLWJhbmQtcmVjb3JkICgpCiEgICAiSW1wbGVtZW50YXRpb24gb2YgdGhl IGZvbGxvd2luZyBHREIvTUkgb3V0cHV0IGdyYW1tYXIgcnVsZToKISAKISAgIG91dC1vZi1iYW5k LXJlY29yZCA9PT4KISAgICAgICAgYXN5bmMtcmVjb3JkIHwgc3RyZWFtLXJlY29yZCIKISAKISAg IChvciAoZ2RibWktYm5mLWFzeW5jLXJlY29yZCkKISAgICAgICAoZ2RibWktYm5mLXN0cmVhbS1y ZWNvcmQpKSkKISAKISAKISAoZGVmdW4gZ2RibWktYm5mLWFzeW5jLXJlY29yZCAoKQohICAgIklt cGxlbWVudGF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgR0RCL01JIG91dHB1dCBncmFtbWFyIHJ1bGVz OgohIAohICAgYXN5bmMtcmVjb3JkID09PgohICAgICAgICBleGVjLWFzeW5jLW91dHB1dCB8IHN0 YXR1cy1hc3luYy1vdXRwdXQgfCBub3RpZnktYXN5bmMtb3V0cHV0CiEgCiEgICBleGVjLWFzeW5j LW91dHB1dCA9PT4KISAgICAgICAgWyB0b2tlbiBdICcqJyBhc3luYy1vdXRwdXQKISAKISAgIHN0 YXR1cy1hc3luYy1vdXRwdXQgPT0+CiEgICAgICAgIFsgdG9rZW4gXSAnKycgYXN5bmMtb3V0cHV0 CiEgCiEgICBub3RpZnktYXN5bmMtb3V0cHV0ID09PgohICAgICAgICBbIHRva2VuIF0gJz0nIGFz eW5jLW91dHB1dAohIAohICAgYXN5bmMtb3V0cHV0ID09PgohICAgICAgICBhc3luYy1jbGFzcyAo ICcsJyByZXN1bHQgKSogbmwiCiEgCiEgICAoZ2RibWktYm5mLXJlc3VsdC1hbmQtYXN5bmMtcmVj b3JkLWltcGwpKQohIAohIAohIChkZWZ1biBnZGJtaS1ibmYtc3RyZWFtLXJlY29yZCAoKQohICAg IkltcGxlbWVudCB0aGUgZm9sbG93aW5nIEdEQi9NSSBvdXRwdXQgZ3JhbW1hciBydWxlOgohICAg c3RyZWFtLXJlY29yZCA9PT4KISAgICAgICAgY29uc29sZS1zdHJlYW0tb3V0cHV0IHwgdGFyZ2V0 LXN0cmVhbS1vdXRwdXQgfCBsb2ctc3RyZWFtLW91dHB1dAohIAohICAgY29uc29sZS1zdHJlYW0t b3V0cHV0ID09PgohICAgICAgICAnficgYy1zdHJpbmcKISAKISAgIHRhcmdldC1zdHJlYW0tb3V0 cHV0ID09PgohICAgICAgICAnQCcgYy1zdHJpbmcKISAKISAgIGxvZy1zdHJlYW0tb3V0cHV0ID09 PgohICAgICAgICAnJicgYy1zdHJpbmciCiEgICAod2hlbiAoPCBnZGJtaS1ibmYtb2Zmc2V0IChs ZW5ndGggZ3VkLW1hcmtlci1hY2MpKQohICAgICAoaWYgKGFuZCAobWVtYmVyIChhcmVmIGd1ZC1t YXJrZXItYWNjIGdkYm1pLWJuZi1vZmZzZXQpICcoP34gP0AgPyYpKQohICAgICAgICAgICAgICAo c3RyaW5nLW1hdGNoICJcXChbfkAmXVxcKVxcKFwiLio/XCJcXClcbiIgZ3VkLW1hcmtlci1hY2Mg Z2RibWktYm5mLW9mZnNldCkpCiEgICAgICAgICAobGV0ICgocHJlZml4IChtYXRjaC1zdHJpbmcg MSBndWQtbWFya2VyLWFjYykpCiEgICAgICAgICAgICAgICAoYy1zdHJpbmcgKG1hdGNoLXN0cmlu ZyAyIGd1ZC1tYXJrZXItYWNjKSkpCiEgCiEgICAgICAgICAgIChzZXRxIGdkYm1pLWJuZi1vZmZz ZXQgKG1hdGNoLWVuZCAwKSkKISAgICAgICAgICAgKGlmIGdkYm1pLWRlYnVnLW1vZGUgKG1lc3Nh Z2UgImdkYm1pLWJuZi1zdHJlYW0tcmVjb3JkOiAlcyIgKG1hdGNoLXN0cmluZyAwIGd1ZC1tYXJr ZXItYWNjKSkpCiEgCiEgICAgICAgICAgIChjb25kICgoc3RyaW5nLWVxdWFsIHByZWZpeCAifiIp CiEgICAgICAgICAgICAgICAgICAoZ2RibWktYm5mLWNvbnNvbGUtc3RyZWFtLW91dHB1dCBjLXN0 cmluZykpCiEgICAgICAgICAgICAgICAgICgoc3RyaW5nLWVxdWFsIHByZWZpeCAiQCIpCiEgICAg ICAgICAgICAgICAgICAoZ2RibWktYm5mLXRhcmdldC1zdHJlYW0tb3V0cHV0IGMtc3RyaW5nKSkK ISAgICAgICAgICAgICAgICAgKChzdHJpbmctZXF1YWwgcHJlZml4ICImIikKISAgICAgICAgICAg ICAgICAgIChnZGJtaS1ibmYtbG9nLXN0cmVhbS1vdXRwdXQgYy1zdHJpbmcpKSkKISAJICB0KSkp KQohIAohIChkZWZ1biBnZGJtaS1ibmYtY29uc29sZS1zdHJlYW0tb3V0cHV0IChjLXN0cmluZykK ISAgICJIYW5kbGVyIGZvciB0aGUgY29uc29sZS1zdHJlYW0tb3V0cHV0IEdEQi9NSSBvdXRwdXQg Z3JhbW1hciBydWxlIgohICAgKGdkYi1jb25zb2xlIGMtc3RyaW5nKSkKISAKISAoZGVmdW4gZ2Ri bWktYm5mLXRhcmdldC1zdHJlYW0tb3V0cHV0IChjLXN0cmluZykKISAgICJIYW5kbGVyIGZvciB0 aGUgdGFyZ2V0LXN0cmVhbS1vdXRwdXQgR0RCL01JIG91dHB1dCBncmFtbWFyIHJ1bGUiCiEgICA7 OyBOb3QgY3VycmVudGx5IHVzZWQuCiEgICApCiEgCiEgKGRlZnVuIGdkYm1pLWJuZi1sb2ctc3Ry ZWFtLW91dHB1dCAoYy1zdHJpbmcpCiEgICAiSGFuZGxlciBmb3IgdGhlIGxvZy1zdHJlYW0tb3V0 cHV0IEdEQi9NSSBvdXRwdXQgZ3JhbW1hciBydWxlIgohICAgOzsgU3VwcHJlc3MgIk5vIHJlZ2lz dGVycy4iICBHREIgNi44IGFuZCBlYXJsaWVyCiEgICA7OyBkdXBsaWNhdGVzIE1JIGVycm9yIG1l c3NhZ2Ugb24gaW50ZXJuYWwgc3RyZWFtLgohICAgOzsgRG9uJ3QgcHJpbnQgdG8gR1VEIGJ1ZmZl ci4KISAgIChpZiAobm90IChzdHJpbmctZXF1YWwgKHJlYWQgYy1zdHJpbmcpICJObyByZWdpc3Rl cnMuXG4iKSkKISAgICAgICAoZ2RiLWludGVybmFscyBjLXN0cmluZykpKQohIAohIAohIChkZWZj b25zdCBnZGJtaS1ibmYtcmVzdWx0LXN0YXRlLWNvbmZpZ3MKISAgICcoKCJeIiAuICgoImRvbmUi IC4gKGdkYi1kb25lIC4gcHJvZ3Jlc3NpdmUpKQohICAgICAgICAgICAgICgiZXJyb3IiIC4gKGdk Yi1lcnJvciAuIHByb2dyZXNzaXZlKSkKISAgICAgICAgICAgICAoInJ1bm5pbmciIC4gKGdkYi1z dGFydGluZyAuIGF0b21pYykpKSkKISAgICAgKCIqIiAuICgoInN0b3BwZWQiIC4gKGdkYi1zdG9w cGVkIC4gYXRvbWljKSkKISAgICAgICAgICAgICAoInJ1bm5pbmciIC4gKGdkYi1ydW5uaW5nIC4g YXRvbWljKSkpKQohICAgICAoIisiIC4gKCkpCiEgICAgICgiPSIgLiAoKCJ0aHJlYWQtY3JlYXRl ZCIgLiAoZ2RiLXRocmVhZC1jcmVhdGVkIC4gYXRvbWljKSkKISAgICAgICAgICAgICAoInRocmVh ZC1zZWxlY3RlZCIgLiAoZ2RiLXRocmVhZC1zZWxlY3RlZCAuIGF0b21pYykpCiEgICAgICAgICAg ICAgKCJ0aHJlYWQtZXhpc3RlZCIgLiAoZ2RiLWlnbm9yZWQtbm90aWZpY2F0aW9uIC4gYXRvbWlj KSkKISAgICAgICAgICAgICAoJ2RlZmF1bHQgLiAoZ2RiLWlnbm9yZWQtbm90aWZpY2F0aW9uIC4g YXRvbWljKSkpKSkKISAgICJUd28gZGltZW5zaW9uYWwgYWxpc3QsIG1hcHBpbmcgdGhlIHR5cGUg YW5kIGNsYXNzIG9mIG1lc3NhZ2UgdG8gYSBoYW5kbGVyIGZ1bmN0aW9uLgohIEhhbmRsZXIgZnVu Y3Rpb25zIGFyZSBhbGwgZmxhZ2dlZCBhcyBlaXRoZXIgJ3Byb2dyZXNzaXZlJyBvciAnYXRvbWlj Jy4gICdwcm9ncmVzc2l2ZScKISBoYW5kbGVycyBhcmUgY2FwYWJsZSBvZiBwYXJzaW5nIGluY29t cGxldGUgbWVzc2FnZXMuICBUaGV5IGNhbiBiZSBjYWxsZWQgc2V2ZXJhbCB0aW1lCiEgd2l0aCBu ZXcgZGF0YSBjaHVuayBhcyB0aGV5IGFycml2ZSBmcm9tIEdEQi4gICdwcm9ncmVzc2l2ZScgaGFu ZGxlciBtdXN0IGhhdmUgYW4gZXh0cmEKISBhcmd1bWVudCB0aGF0IGlzIHNldCB0byBhIG5vbi1u aWwgdmFsdWUgd2hlbiB0aGUgbWVzc2FnZSBpcyBjb21wbGV0ZS4KISAKISBJbXBsZW1lbnQgdGhl IGZvbGxvd2luZyBHREIvTUkgb3V0cHV0IGdyYW1tYXIgcnVsZToKISAgIHJlc3VsdC1jbGFzcyA9 PT4KISAgICAgICAgJ2RvbmUnIHwgJ3J1bm5pbmcnIHwgJ2Nvbm5lY3RlZCcgfCAnZXJyb3InIHwg J2V4aXQnCiEgCiEgICBhc3luYy1jbGFzcyA9PT4KISAgICAgICAgJ3N0b3BwZWQnIHwgb3RoZXJz ICh3aGVyZSBvdGhlcnMgd2lsbCBiZSBhZGRlZCBkZXBlbmRpbmcgb24gdGhlIG5lZWRzLS10aGlz IGlzIHN0aWxsIGluIGRldmVsb3BtZW50KS4iKQohIAohIChkZWZ1biBnZGJtaS1ibmYtcmVzdWx0 LWFuZC1hc3luYy1yZWNvcmQtaW1wbCAoKQohICAgIkNvbW1vbiBpbXBsZW1lbnRhdGlvbiBvZiB0 aGUgcmVzdWx0LXJlY29yZCBhbmQgYXN5bmMtcmVjb3JkIHJ1bGUuICBCb3RoIHJ1bGUgc2hhcmUK ISB0aGUgc2FtZSBzeW50YXguICBUaG9zZSByZWNvcmRzIG1heSBiZSB2ZXJ5IGxhcmdlIGluIHNp emUuICBGb3IgdGhhdCByZWFzb24sIHRoZSAncmVzdWx0JwohIHBhcnQgb2YgdGhlICByZWNvcmQg aXMgcGFyc2VkIGJ5IGdkYm1pLWJuZi1pbmNvbXBsZXRlLXJlY29yZC1yZXN1bHQsIHdoaWNoIHdp bGwga2VlcAohIHJlY2VpdmluZyBjaGFyYWN0ZXJzIGFzIHRoZXkgYXJyaXZlIGZyb20gR0RCIHVu dGlsIHRoZSByZWNvcmQgaXMgY29tcGxldGUuIgohICAgKGxldCAoKGFjYy1sZW5ndGggKGxlbmd0 aCBndWQtbWFya2VyLWFjYykpCiEgCShwcmVmaXgtb2Zmc2V0IGdkYm1pLWJuZi1vZmZzZXQpKQoh IAohICAgICAod2hpbGUgKGFuZCAoPCBwcmVmaXgtb2Zmc2V0IGFjYy1sZW5ndGgpCiEgICAgICAg ICAgICAgICAgIChnZGJtaS1pcy1udW1iZXIgKGFyZWYgZ3VkLW1hcmtlci1hY2MgcHJlZml4LW9m ZnNldCkpKQohICAgICAgIChzZXRxIHByZWZpeC1vZmZzZXQgKDErIHByZWZpeC1vZmZzZXQpKSkK ISAKISAgICAgKGlmIChhbmQgKDwgcHJlZml4LW9mZnNldCBhY2MtbGVuZ3RoKQohICAgICAgICAg ICAgICAobWVtYmVyIChhcmVmIGd1ZC1tYXJrZXItYWNjIHByZWZpeC1vZmZzZXQpICcoPyogPysg Pz0gP14pKQohICAgICAgICAgICAgICAoc3RyaW5nLW1hdGNoICJcXChbMC05XSpcXClcXChbKis9 Xl1cXClcXCguKz9cXClcXChbLFxuXVxcKSIgZ3VkLW1hcmtlci1hY2MgZ2RibWktYm5mLW9mZnNl dCkpCiEgCiEgICAgICAgICAobGV0ICgodG9rZW4gKG1hdGNoLXN0cmluZyAxIGd1ZC1tYXJrZXIt YWNjKSkKISAJICAgICAgKHByZWZpeCAobWF0Y2gtc3RyaW5nIDIgZ3VkLW1hcmtlci1hY2MpKQoh IAkgICAgICAoY2xhc3MgKG1hdGNoLXN0cmluZyAzIGd1ZC1tYXJrZXItYWNjKSkKISAJICAgICAg KGNvbXBsZXRlIChzdHJpbmctZXF1YWwgKG1hdGNoLXN0cmluZyA0IGd1ZC1tYXJrZXItYWNjKSAi XG4iKSkKISAJICAgICAgY2xhc3MtYWxpc3QKISAJICAgICAgY2xhc3MtY29tbWFuZCkKISAKISAg ICAgICAgICAgKHNldHEgZ2RibWktYm5mLW9mZnNldCAobWF0Y2gtZW5kIDApKQohIAkgIChpZiBn ZGJtaS1kZWJ1Zy1tb2RlIChtZXNzYWdlICJnZGJtaS1ibmYtcmVzdWx0LXJlY29yZDogJXMiICht YXRjaC1zdHJpbmcgMCBndWQtbWFya2VyLWFjYykpKQohIAohICAgICAgICAgICAoc2V0cSBjbGFz cy1hbGlzdCAoY2RyIChhc3NvYyBwcmVmaXggZ2RibWktYm5mLXJlc3VsdC1zdGF0ZS1jb25maWdz KSkpCiEgICAgICAgICAgIChzZXRxIGNsYXNzLWNvbW1hbmQgKGNkciAoYXNzb2MgY2xhc3MgY2xh c3MtYWxpc3QpKSkKISAgICAgICAgICAgKGlmIChudWxsIGNsYXNzLWNvbW1hbmQpCiEgICAgICAg ICAgICAgICAoc2V0cSBjbGFzcy1jb21tYW5kIChjZHIgKGFzc29jICdkZWZhdWx0IGNsYXNzLWFs aXN0KSkpKQohIAohICAgICAgICAgICAoaWYgY29tcGxldGUKISAgICAgICAgICAgICAgIChpZiBj bGFzcy1jb21tYW5kCiEgICAgICAgICAgICAgICAgICAgKGlmIChlcXVhbCAoY2RyIGNsYXNzLWNv bW1hbmQpICdwcm9ncmVzc2l2ZSkKISAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgKGNh ciBjbGFzcy1jb21tYW5kKSB0b2tlbiAiIiBjb21wbGV0ZSkKISAgICAgICAgICAgICAgICAgICAg IChmdW5jYWxsIChjYXIgY2xhc3MtY29tbWFuZCkgdG9rZW4gIiIpKSkKISAgICAgICAgICAgICAo c2V0cSBnZGJtaS1ibmYtc3RhdGUgYChsYW1iZGEgKCkgKGdkYm1pLWJuZi1pbmNvbXBsZXRlLXJl Y29yZC1yZXN1bHQgLHRva2VuICcsY2xhc3MtY29tbWFuZCkpKQohICAgICAgICAgICAgIChmdW5j YWxsIGdkYm1pLWJuZi1zdGF0ZSkpCiEgCSAgdCkpKSkKISAKISAoZGVmdW4gZ2RibWktYm5mLWlu Y29tcGxldGUtcmVjb3JkLXJlc3VsdCAodG9rZW4gY2xhc3MtY29tbWFuZCkKISAgICJTdGF0ZSBv ZiB0aGUgcGFyc2VyIHVzZWQgdG8gcHJvZ3Jlc3NpdmVseSBwYXJzZSBhIHJlc3VsdC1yZWNvcmQg b3IgYXN5bmMtcmVjb3JkCiEgcnVsZSBmcm9tIGFuIGluY29tcGxldGUgZGF0YSBzdHJlYW0uICBU aGUgcGFyc2VyIHdpbGwgc3RheSBpbiB0aGlzIHN0YXRlIHVudGlsIHRoZSBlbmQKISBvZiB0aGUg Y3VycmVudCByZXN1bHQgb3IgYXN5bmMgcmVjb3JkIGlzIHJlYWNoZWQuIgohICAgKHdoZW4gKDwg Z2RibWktYm5mLW9mZnNldCAobGVuZ3RoIGd1ZC1tYXJrZXItYWNjKSkKISAgICAgOzsgU2VhcmNo IHRoZSBkYXRhIHN0cmVhbSBmb3IgdGhlIGVuZCBvZiB0aGUgY3VycmVudCByZWNvcmQ6CiEgICAg IChsZXQqICgobmV3bGluZS1wb3MgKHN0cmluZy1tYXRjaCAiXG4iIGd1ZC1tYXJrZXItYWNjIGdk Ym1pLWJuZi1vZmZzZXQpKQohIAkgICAoaXMtcHJvZ3Jlc3NpdmUgKGVxdWFsIChjZHIgY2xhc3Mt Y29tbWFuZCkgJ3Byb2dyZXNzaXZlKSkKISAJICAgKGlzLWNvbXBsZXRlIChub3QgKG51bGwgbmV3 bGluZS1wb3MpKSkKISAJICAgcmVzdWx0LXN0cikKISAKISAgICAgICA7OyBVcGRhdGUgdGhlIGdk Ym1pLWJuZi1vZmZzZXQgb25seSBpZiB0aGUgY3VycmVudCBjaHVuayBvZiBkYXRhIGNhbgohICAg ICAgIDs7IGJlIHByb2Nlc3NlZCBieSB0aGUgY2xhc3MtY29tbWFuZCBoYW5kbGVyOgohICAgICAg ICh3aGVuIChvciBpcy1jb21wbGV0ZSBpcy1wcm9ncmVzc2l2ZSkKISAJKHNldHEgcmVzdWx0LXN0 ciAoc3Vic3RyaW5nIGd1ZC1tYXJrZXItYWNjIGdkYm1pLWJuZi1vZmZzZXQgbmV3bGluZS1wb3Mp KQohIAkoc2V0cSBnZGJtaS1ibmYtb2Zmc2V0ICgrIDEgbmV3bGluZS1wb3MpKSkKISAKISAgICAg ICAoaWYgZ2RibWktZGVidWctbW9kZSAobWVzc2FnZSAiZ2RibWktYm5mLWluY29tcGxldGUtcmVj b3JkLXJlc3VsdDogJXMiIChzdWJzdHJpbmcgZ3VkLW1hcmtlci1hY2MgZ2RibWktYm5mLW9mZnNl dCBuZXdsaW5lLXBvcykpKQohIAohICAgICAgIDs7IFVwZGF0ZSB0aGUgcGFyc2luZyBzdGF0ZSBi ZWZvcmUgaW52b2tpbmcgdGhlIGhhbmRsZXIgaW4gY2xhc3MtY29tbWFuZAohICAgICAgIDs7IHRv IG1ha2Ugc3VyZSBpdCdzIG5vdCBsZWZ0IGluIGFuIGludmFsaWQgc3RhdGUgaWYgdGhlIGhhbmRs ZXIgd2FzCiEgICAgICAgOzsgdG8gZ2VuZXJhdGUgYW4gZXJyb3IuCiEgICAgICAgKGlmIGlzLWNv bXBsZXRlCiEgCSAgKHNldHEgZ2RibWktYm5mLXN0YXRlICdnZGJtaS1ibmYtb3V0cHV0KSkKISAK ISAgICAgICAoaWYgY2xhc3MtY29tbWFuZAohIAkgIChpZiBpcy1wcm9ncmVzc2l2ZQohIAkgICAg ICAoZnVuY2FsbCAoY2FyIGNsYXNzLWNvbW1hbmQpIHRva2VuIHJlc3VsdC1zdHIgaXMtY29tcGxl dGUpCiEgCSAgICAoaWYgaXMtY29tcGxldGUKISAJCShmdW5jYWxsIChjYXIgY2xhc3MtY29tbWFu ZCkgdG9rZW4gcmVzdWx0LXN0cikpKSkKISAKISAgICAgICAodW5sZXNzIGlzLWNvbXBsZXRlIDs7 IEluY29tcGxldGUgZ2RiIHJlc3BvbnNlOiBhYm9ydCB0aGUgcGFyc2luZyB1bnRpbCB3ZSByZWNl aXZlIG1vcmUgZGF0YS4KISAgICAgICAgIChpZiBnZGJtaS1kZWJ1Zy1tb2RlIChtZXNzYWdlICJn ZGJtaS1ibmYtaW5jb21wbGV0ZS1yZWNvcmQtcmVzdWx0LCBhYm9ydGluZzogaW5jb21wbGV0ZSBz dHJlYW0iKSkKISAgICAgICAgICh0aHJvdyAnZ2RibWktaW5jb21wbGV0ZS1zdHJlYW0gbmlsKSkK ISAKISAgICAgICBpcy1jb21wbGV0ZSkpKQohIAohIAohIDsgVGhlIGZvbGxvd2luZyBncmFtbWFy IHJ1bGVzIGFyZSBub3QgeWV0IGltcGxlbWVudGVkIGJ5IHRoaXMgR0RCTUktQk5GIHBhcnNlci4K ISA7IFRoZSBoYW5kbGluZyBvZiB0aG9zZSBydWxlcyBpcyBjdXJyZW50bHkgZG9uZSBieSB0aGUg aGFuZGxlcnMgcmVnaXN0ZXJlZAohIDsgaW4gZ2RibWktYm5mLXJlc3VsdC1zdGF0ZS1jb25maWdz CiEgOwohIDsgcmVzdWx0ID09PgohIDsgICAgICB2YXJpYWJsZSAiPSIgdmFsdWUKISA7CiEgOyB2 YXJpYWJsZSA9PT4KISA7ICAgICAgc3RyaW5nCiEgOwohIDsgdmFsdWUgPT0+CiEgOyAgICAgIGNv bnN0IHwgdHVwbGUgfCBsaXN0CiEgOwohIDsgY29uc3QgPT0+CiEgOyAgICAgIGMtc3RyaW5nCiEg OwohIDsgdHVwbGUgPT0+CiEgOyAgICAgICJ7fSIgfCAieyIgcmVzdWx0ICggIiwiIHJlc3VsdCAp KiAifSIKISA7CiEgOyBsaXN0ID09PgohIDsgICAgICAiW10iIHwgIlsiIHZhbHVlICggIiwiIHZh bHVlICkqICJdIiB8ICJbIiByZXN1bHQgKCAiLCIgcmVzdWx0ICkqICJdIgohIAogIAogIChkZWZ1 biBndWQtZ2RibWktbWFya2VyLWZpbHRlciAoc3RyaW5nKQogICAgIkZpbHRlciBHREIvTUkgb3V0 cHV0LiIKKioqKioqKioqKioqKioqCioqKiAxOTA3LDE5NTIgKioqKgogIAogICAgOzsgU3RhcnQg YWNjdW11bGF0aW5nIG91dHB1dCBmb3IgdGhlIEdVRCBidWZmZXIuCiAgICAoc2V0cSBnZGItZmls dGVyLW91dHB1dCAiIikKLSAgIChsZXQgKG91dHB1dC1yZWNvcmQtbGlzdCkKICAKISAgICAgOzsg UHJvY2VzcyBhbGwgdGhlIGNvbXBsZXRlIG1hcmtlcnMgaW4gdGhpcyBjaHVuay4KISAgICAgKGRv bGlzdCAoZ2RibWktcmVjb3JkIGdkYm1pLXJlY29yZC1saXN0KQohICAgICAgICh3aGlsZSAoc3Ry aW5nLW1hdGNoIChjZHIgZ2RibWktcmVjb3JkKSBndWQtbWFya2VyLWFjYykKISAJKHB1c2ggKGxp c3QgKG1hdGNoLWJlZ2lubmluZyAwKQohIAkJICAgIChjYXIgZ2RibWktcmVjb3JkKQohIAkJICAg IChtYXRjaC1zdHJpbmcgMSBndWQtbWFya2VyLWFjYykKISAJCSAgICAobWF0Y2gtc3RyaW5nIDIg Z3VkLW1hcmtlci1hY2MpCiEgCQkgICAgKG1hdGNoLWVuZCAwKSkKISAJICAgICAgb3V0cHV0LXJl Y29yZC1saXN0KQohIAkoc2V0cSBndWQtbWFya2VyLWFjYwohIAkgICAgICAoY29uY2F0IChzdWJz dHJpbmcgZ3VkLW1hcmtlci1hY2MgMCAobWF0Y2gtYmVnaW5uaW5nIDApKQohIAkJICAgICAgOzsg UGFkIHdpdGggc3BhY2VzIHRvIHByZXNlcnZlIHBvc2l0aW9uLgohIAkJICAgICAgKG1ha2Utc3Ry aW5nIChsZW5ndGggKG1hdGNoLXN0cmluZyAwIGd1ZC1tYXJrZXItYWNjKSkgMzIpCiEgCQkgICAg ICAoc3Vic3RyaW5nIGd1ZC1tYXJrZXItYWNjIChtYXRjaC1lbmQgMCkpKSkpKQohIAohICAgICAo c2V0cSBvdXRwdXQtcmVjb3JkLWxpc3QgKHNvcnQgb3V0cHV0LXJlY29yZC1saXN0ICdnZGItY2Fy PCkpCiEgCiEgICAgIChkb2xpc3QgKG91dHB1dC1yZWNvcmQgb3V0cHV0LXJlY29yZC1saXN0KQoh ICAgICAgIChsZXQgKChyZWNvcmQtdHlwZSAoY2FkciBvdXRwdXQtcmVjb3JkKSkKISAJICAgIChh cmcxIChudGggMiBvdXRwdXQtcmVjb3JkKSkKISAJICAgIChhcmcyIChudGggMyBvdXRwdXQtcmVj b3JkKSkpCiEgCShjb25kICgoZXEgcmVjb3JkLXR5cGUgJ2dkYi1lcnJvcikKISAJICAgICAgIChn ZGItZG9uZS1vci1lcnJvciBhcmcyIGFyZzEgJ2Vycm9yKSkKISAJICAgICAgKChlcSByZWNvcmQt dHlwZSAnZ2RiLWRvbmUpCiEgCSAgICAgICAoZ2RiLWRvbmUtb3ItZXJyb3IgYXJnMiBhcmcxICdk b25lKSkKISAJICAgICAgOzsgU3VwcHJlc3MgIk5vIHJlZ2lzdGVycy4iICBHREIgNi44IGFuZCBl YXJsaWVyCiEgCSAgICAgIDs7IGR1cGxpY2F0ZXMgTUkgZXJyb3IgbWVzc2FnZSBvbiBpbnRlcm5h bCBzdHJlYW0uCiEgCSAgICAgIDs7IERvbid0IHByaW50IHRvIEdVRCBidWZmZXIuCiEgCSAgICAg ICgobm90IChhbmQgKGVxIHJlY29yZC10eXBlICdnZGItaW50ZXJuYWxzKQohIAkJCSAoc3RyaW5n LWVxdWFsIChyZWFkIGFyZzEpICJObyByZWdpc3RlcnMuXG4iKSkpCiEgCSAgICAgICAoZnVuY2Fs bCByZWNvcmQtdHlwZSBhcmcxKSkpKSkKICAKISAgICAgKHNldHEgZ2RiLW91dHB1dC1zaW5rICd1 c2VyKQohICAgICA7OyBSZW1vdmUgcGFkZGluZy4KISAgICAgKHN0cmluZy1tYXRjaCAiXiAqIiBn dWQtbWFya2VyLWFjYykKISAgICAgKHNldHEgZ3VkLW1hcmtlci1hY2MgKHN1YnN0cmluZyBndWQt bWFya2VyLWFjYyAobWF0Y2gtZW5kIDApKSkKICAKISAgICAgZ2RiLWZpbHRlci1vdXRwdXQpKQog IAogIChkZWZ1biBnZGItZ2RiIChfb3V0cHV0LWZpZWxkKSkKICAKLS0tIDIyMTYsMjIzNSAtLS0t CiAgCiAgICA7OyBTdGFydCBhY2N1bXVsYXRpbmcgb3V0cHV0IGZvciB0aGUgR1VEIGJ1ZmZlci4K ICAgIChzZXRxIGdkYi1maWx0ZXItb3V0cHV0ICIiKQogIAohICAgKGxldCAoKGFjYy1sZW5ndGgg KGxlbmd0aCBndWQtbWFya2VyLWFjYykpKQohICAgICAoY2F0Y2ggJ2dkYm1pLWluY29tcGxldGUt c3RyZWFtCiEgICAgICAgKHdoaWxlIChhbmQgKDwgZ2RibWktYm5mLW9mZnNldCBhY2MtbGVuZ3Ro KQohIAkJICAoZnVuY2FsbCBnZGJtaS1ibmYtc3RhdGUpKSkpKQohIAohICAgKHdoZW4gKC89IGdk Ym1pLWJuZi1vZmZzZXQgMCkKISAgICAgKHNldHEgZ3VkLW1hcmtlci1hY2MgKHN1YnN0cmluZyBn dWQtbWFya2VyLWFjYyBnZGJtaS1ibmYtb2Zmc2V0KSkKISAgICAgKHNldHEgZ2RibWktYm5mLW9m ZnNldCAwKSkKICAKISAgICh3aGVuIChhbmQgZ2RibWktZGVidWctbW9kZSAoPiAobGVuZ3RoIGd1 ZC1tYXJrZXItYWNjKSAwKSkKISAgICAgKG1lc3NhZ2UgImd1ZC1nZGJtaS1tYXJrZXItZmlsdGVy LCB1bnBhcnNlZCBzdHJpbmc6ICVzIiBndWQtbWFya2VyLWFjYykpCiAgCiEgICBnZGItZmlsdGVy LW91dHB1dCkKICAKICAoZGVmdW4gZ2RiLWdkYiAoX291dHB1dC1maWVsZCkpCiAgCioqKioqKioq KioqKioqKgoqKiogMTk1NCwxOTY0ICoqKioKICAgIChzZXRxIGdkYi1maWx0ZXItb3V0cHV0CiAg ICAgICAgICAoY29uY2F0IG91dHB1dC1maWVsZCBnZGItZmlsdGVyLW91dHB1dCkpKQogIAohIChk ZWZ1biBnZGItaWdub3JlZC1ub3RpZmljYXRpb24gKF9vdXRwdXQtZmllbGQpKQogIAogIDs7IGdk Yi1pbnZhbGlkYXRlLXRocmVhZHMgaXMgZGVmaW5lZCB0byBhY2NlcHQgJ3VwZGF0ZS10aHJlYWRz IHNpZ25hbAohIChkZWZ1biBnZGItdGhyZWFkLWNyZWF0ZWQgKF9vdXRwdXQtZmllbGQpKQohIChk ZWZ1biBnZGItdGhyZWFkLWV4aXRlZCAob3V0cHV0LWZpZWxkKQogICAgIkhhbmRsZSA9dGhyZWFk LWV4aXRlZCBhc3luYyByZWNvcmQ6IHVuc2V0IGBnZGItdGhyZWFkLW51bWJlcicKICAgaWYgY3Vy cmVudCB0aHJlYWQgZXhpdGVkIGFuZCB1cGRhdGUgdGhyZWFkcyBsaXN0LiIKICAgIChsZXQqICgo dGhyZWFkLWlkIChiaW5kYXQtZ2V0LWZpZWxkIChnZGItanNvbi1zdHJpbmcgb3V0cHV0LWZpZWxk KSAnaWQpKSkKLS0tIDIyMzcsMjI0NyAtLS0tCiAgICAoc2V0cSBnZGItZmlsdGVyLW91dHB1dAog ICAgICAgICAgKGNvbmNhdCBvdXRwdXQtZmllbGQgZ2RiLWZpbHRlci1vdXRwdXQpKSkKICAKISAo ZGVmdW4gZ2RiLWlnbm9yZWQtbm90aWZpY2F0aW9uIChfdG9rZW4gX291dHB1dC1maWVsZCkpCiAg CiAgOzsgZ2RiLWludmFsaWRhdGUtdGhyZWFkcyBpcyBkZWZpbmVkIHRvIGFjY2VwdCAndXBkYXRl LXRocmVhZHMgc2lnbmFsCiEgKGRlZnVuIGdkYi10aHJlYWQtY3JlYXRlZCAoX3Rva2VuIF9vdXRw dXQtZmllbGQpKQohIChkZWZ1biBnZGItdGhyZWFkLWV4aXRlZCAoX3Rva2VuIG91dHB1dC1maWVs ZCkKICAgICJIYW5kbGUgPXRocmVhZC1leGl0ZWQgYXN5bmMgcmVjb3JkOiB1bnNldCBgZ2RiLXRo cmVhZC1udW1iZXInCiAgIGlmIGN1cnJlbnQgdGhyZWFkIGV4aXRlZCBhbmQgdXBkYXRlIHRocmVh ZHMgbGlzdC4iCiAgICAobGV0KiAoKHRocmVhZC1pZCAoYmluZGF0LWdldC1maWVsZCAoZ2RiLWpz b24tc3RyaW5nIG91dHB1dC1maWVsZCkgJ2lkKSkpCioqKioqKioqKioqKioqKgoqKiogMTk3MSwx OTc3ICoqKioKICAgICAgKGdkYi13YWl0LWZvci1wZW5kaW5nCiAgICAgICAoZ2RiLWVtaXQtc2ln bmFsIGdkYi1idWYtcHVibGlzaGVyICd1cGRhdGUtdGhyZWFkcykpKSkKICAKISAoZGVmdW4gZ2Ri LXRocmVhZC1zZWxlY3RlZCAob3V0cHV0LWZpZWxkKQogICAgIkhhbmRsZXIgZm9yID10aHJlYWQt c2VsZWN0ZWQgTUkgb3V0cHV0IHJlY29yZC4KICAKICBTZXRzIGBnZGItdGhyZWFkLW51bWJlcicg dG8gbmV3IGlkLiIKLS0tIDIyNTQsMjI2MCAtLS0tCiAgICAgIChnZGItd2FpdC1mb3ItcGVuZGlu ZwogICAgICAgKGdkYi1lbWl0LXNpZ25hbCBnZGItYnVmLXB1Ymxpc2hlciAndXBkYXRlLXRocmVh ZHMpKSkpCiAgCiEgKGRlZnVuIGdkYi10aHJlYWQtc2VsZWN0ZWQgKF90b2tlbiBvdXRwdXQtZmll bGQpCiAgICAiSGFuZGxlciBmb3IgPXRocmVhZC1zZWxlY3RlZCBNSSBvdXRwdXQgcmVjb3JkLgog IAogIFNldHMgYGdkYi10aHJlYWQtbnVtYmVyJyB0byBuZXcgaWQuIgoqKioqKioqKioqKioqKioK KioqIDE5ODgsMTk5NCAqKioqCiAgICAgIChnZGItd2FpdC1mb3ItcGVuZGluZwogICAgICAgKGdk Yi11cGRhdGUpKSkpCiAgCiEgKGRlZnVuIGdkYi1ydW5uaW5nIChvdXRwdXQtZmllbGQpCiAgICAo bGV0KiAoKHRocmVhZC1pZAogICAgICAgICAgICAoYmluZGF0LWdldC1maWVsZCAoZ2RiLWpzb24t c3RyaW5nIG91dHB1dC1maWVsZCkgJ3RocmVhZC1pZCkpKQogICAgICA7OyBXZSByZXNldCBnZGIt ZnJhbWUtbnVtYmVyIHRvIG5pbCBpZiBjdXJyZW50IHRocmVhZCBoYXMgZ29uZQotLS0gMjI3MSwy Mjc3IC0tLS0KICAgICAgKGdkYi13YWl0LWZvci1wZW5kaW5nCiAgICAgICAoZ2RiLXVwZGF0ZSkp KSkKICAKISAoZGVmdW4gZ2RiLXJ1bm5pbmcgKF90b2tlbiBvdXRwdXQtZmllbGQpCiAgICAobGV0 KiAoKHRocmVhZC1pZAogICAgICAgICAgICAoYmluZGF0LWdldC1maWVsZCAoZ2RiLWpzb24tc3Ry aW5nIG91dHB1dC1maWVsZCkgJ3RocmVhZC1pZCkpKQogICAgICA7OyBXZSByZXNldCBnZGItZnJh bWUtbnVtYmVyIHRvIG5pbCBpZiBjdXJyZW50IHRocmVhZCBoYXMgZ29uZQoqKioqKioqKioqKioq KioKKioqIDIwMDYsMjAxMiAqKioqCiAgICAoc2V0cSBnZGItYWN0aXZlLXByb2Nlc3MgdCkKICAg IChnZGItZW1pdC1zaWduYWwgZ2RiLWJ1Zi1wdWJsaXNoZXIgJ3VwZGF0ZS10aHJlYWRzKSkKICAK ISAoZGVmdW4gZ2RiLXN0YXJ0aW5nIChfb3V0cHV0LWZpZWxkKQogICAgOzsgQ0xJIGNvbW1hbmRz IGRvbid0IGVtaXQgXnJ1bm5pbmcgYXQgdGhlIG1vbWVudCBzbyB1c2UgZ2RiLXJ1bm5pbmcgdG9v LgogICAgKHNldHEgZ2RiLWluZmVyaW9yLXN0YXR1cyAicnVubmluZyIpCiAgICAoZ2RiLWZvcmNl LW1vZGUtbGluZS11cGRhdGUKLS0tIDIyODksMjI5NSAtLS0tCiAgICAoc2V0cSBnZGItYWN0aXZl LXByb2Nlc3MgdCkKICAgIChnZGItZW1pdC1zaWduYWwgZ2RiLWJ1Zi1wdWJsaXNoZXIgJ3VwZGF0 ZS10aHJlYWRzKSkKICAKISAoZGVmdW4gZ2RiLXN0YXJ0aW5nIChfb3V0cHV0LWZpZWxkIHJlc3Vs dCkKICAgIDs7IENMSSBjb21tYW5kcyBkb24ndCBlbWl0IF5ydW5uaW5nIGF0IHRoZSBtb21lbnQg c28gdXNlIGdkYi1ydW5uaW5nIHRvby4KICAgIChzZXRxIGdkYi1pbmZlcmlvci1zdGF0dXMgInJ1 bm5pbmciKQogICAgKGdkYi1mb3JjZS1tb2RlLWxpbmUtdXBkYXRlCioqKioqKioqKioqKioqKgoq KiogMjAyMCwyMDI2ICoqKioKICAKICA7OyAtYnJlYWstaW5zZXJ0IC10IGRpZG4ndCBnaXZlIGEg cmVhc29uIGJlZm9yZSBnZGIgNi45CiAgCiEgKGRlZnVuIGdkYi1zdG9wcGVkIChvdXRwdXQtZmll bGQpCiAgICAiR2l2ZW4gdGhlIGNvbnRlbnRzIG9mICpzdG9wcGVkIE1JIGFzeW5jIHJlY29yZCwg c2VsZWN0IG5ldwogIGN1cnJlbnQgdGhyZWFkIGFuZCB1cGRhdGUgR0RCIGJ1ZmZlcnMuIgogICAg OzsgUmVhc29uIGlzIGF2YWlsYWJsZSB3aXRoIHRhcmdldC1hc3luYyBvbmx5Ci0tLSAyMzAzLDIz MDkgLS0tLQogIAogIDs7IC1icmVhay1pbnNlcnQgLXQgZGlkbid0IGdpdmUgYSByZWFzb24gYmVm b3JlIGdkYiA2LjkKICAKISAoZGVmdW4gZ2RiLXN0b3BwZWQgKF90b2tlbiBvdXRwdXQtZmllbGQp CiAgICAiR2l2ZW4gdGhlIGNvbnRlbnRzIG9mICpzdG9wcGVkIE1JIGFzeW5jIHJlY29yZCwgc2Vs ZWN0IG5ldwogIGN1cnJlbnQgdGhyZWFkIGFuZCB1cGRhdGUgR0RCIGJ1ZmZlcnMuIgogICAgOzsg UmVhc29uIGlzIGF2YWlsYWJsZSB3aXRoIHRhcmdldC1hc3luYyBvbmx5CioqKioqKioqKioqKioq KgoqKiogMjEwNiwyMTEyICoqKioKICAgIChzZXRxIGdkYi1maWx0ZXItb3V0cHV0CiAgCShnZGIt Y29uY2F0LW91dHB1dCBnZGItZmlsdGVyLW91dHB1dCAocmVhZCBvdXRwdXQtZmllbGQpKSkpCiAg CiEgKGRlZnVuIGdkYi1kb25lLW9yLWVycm9yIChvdXRwdXQtZmllbGQgdG9rZW4tbnVtYmVyIHR5 cGUpCiAgICAoaWYgKHN0cmluZy1lcXVhbCB0b2tlbi1udW1iZXIgIiIpCiAgICAgICAgOzsgT3V0 cHV0IGZyb20gY29tbWFuZCBlbnRlcmVkIGJ5IHVzZXIKICAgICAgICAocHJvZ24KLS0tIDIzODks MjQwMSAtLS0tCiAgICAoc2V0cSBnZGItZmlsdGVyLW91dHB1dAogIAkoZ2RiLWNvbmNhdC1vdXRw dXQgZ2RiLWZpbHRlci1vdXRwdXQgKHJlYWQgb3V0cHV0LWZpZWxkKSkpKQogIAohIChkZWZ1biBn ZGItZG9uZSAodG9rZW4tbnVtYmVyIG91dHB1dC1maWVsZCBpcy1jb21wbGV0ZSkKISAgIChnZGIt ZG9uZS1vci1lcnJvciB0b2tlbi1udW1iZXIgJ2RvbmUgb3V0cHV0LWZpZWxkIGlzLWNvbXBsZXRl KSkKISAKISAoZGVmdW4gZ2RiLWVycm9yICh0b2tlbi1udW1iZXIgb3V0cHV0LWZpZWxkIGlzLWNv bXBsZXRlKQohICAgKGdkYi1kb25lLW9yLWVycm9yIHRva2VuLW51bWJlciAnZXJyb3Igb3V0cHV0 LWZpZWxkIGlzLWNvbXBsZXRlKSkKISAKISAoZGVmdW4gZ2RiLWRvbmUtb3ItZXJyb3IgKHRva2Vu LW51bWJlciB0eXBlIG91dHB1dC1maWVsZCBpcy1jb21wbGV0ZSkKICAgIChpZiAoc3RyaW5nLWVx dWFsIHRva2VuLW51bWJlciAiIikKICAgICAgICA7OyBPdXRwdXQgZnJvbSBjb21tYW5kIGVudGVy ZWQgYnkgdXNlcgogICAgICAgIChwcm9nbgoqKioqKioqKioqKioqKioKKioqIDIxMjIsMjEzNSAq KioqCiAgICAgIDs7IE91dHB1dCBmcm9tIGNvbW1hbmQgZnJvbSBmcm9udGVuZC4KICAgICAgKHNl dHEgZ2RiLW91dHB1dC1zaW5rICdlbWFjcykpCiAgCi0gICAoZ2RiLWNsZWFyLXBhcnRpYWwtb3V0 cHV0KQotIAogICAgOzsgVGhlIHByb2Nlc3MgbWF5IGFscmVhZHkgYmUgZGVhZCAoZS5nLiBDLWQg YXQgdGhlIGdkYiBwcm9tcHQpLgogICAgKGxldCogKChwcm9jIChnZXQtYnVmZmVyLXByb2Nlc3Mg Z3VkLWNvbWludC1idWZmZXIpKQogIAkgKG5vLXByb2MgKG9yIChudWxsIHByb2MpCiAgCQkgICAg ICAobWVtcSAocHJvY2Vzcy1zdGF0dXMgcHJvYykgJyhleGl0IHNpZ25hbCkpKSkpCiAgCiEgICAg ICh3aGVuIGdkYi1maXJzdC1kb25lLW9yLWVycm9yCiAgICAgICAgKHVubGVzcyAob3IgdG9rZW4t bnVtYmVyIGd1ZC1ydW5uaW5nIG5vLXByb2MpCiAgCShzZXRxIGdkYi1maWx0ZXItb3V0cHV0IChj b25jYXQgZ2RiLWZpbHRlci1vdXRwdXQgZ2RiLXByb21wdC1uYW1lKSkpCiAgICAgICAgKGdkYi11 cGRhdGUgbm8tcHJvYykKLS0tIDI0MTEsMjQyMiAtLS0tCiAgICAgIDs7IE91dHB1dCBmcm9tIGNv bW1hbmQgZnJvbSBmcm9udGVuZC4KICAgICAgKHNldHEgZ2RiLW91dHB1dC1zaW5rICdlbWFjcykp CiAgCiAgICA7OyBUaGUgcHJvY2VzcyBtYXkgYWxyZWFkeSBiZSBkZWFkIChlLmcuIEMtZCBhdCB0 aGUgZ2RiIHByb21wdCkuCiAgICAobGV0KiAoKHByb2MgKGdldC1idWZmZXItcHJvY2VzcyBndWQt Y29taW50LWJ1ZmZlcikpCiAgCSAobm8tcHJvYyAob3IgKG51bGwgcHJvYykKICAJCSAgICAgICht ZW1xIChwcm9jZXNzLXN0YXR1cyBwcm9jKSAnKGV4aXQgc2lnbmFsKSkpKSkKICAKISAgICAgKHdo ZW4gKGFuZCBpcy1jb21wbGV0ZSBnZGItZmlyc3QtZG9uZS1vci1lcnJvcikKICAgICAgICAodW5s ZXNzIChvciB0b2tlbi1udW1iZXIgZ3VkLXJ1bm5pbmcgbm8tcHJvYykKICAJKHNldHEgZ2RiLWZp bHRlci1vdXRwdXQgKGNvbmNhdCBnZGItZmlsdGVyLW91dHB1dCBnZGItcHJvbXB0LW5hbWUpKSkK ICAgICAgICAoZ2RiLXVwZGF0ZSBuby1wcm9jKQoqKioqKioqKioqKioqKioKKioqIDIxMzgsMjE1 MCAqKioqCiAgICAgIChzZXRxIGdkYi1maWx0ZXItb3V0cHV0CiAgCSAgKGdkYi1jb25jYXQtb3V0 cHV0IGdkYi1maWx0ZXItb3V0cHV0IG91dHB1dC1maWVsZCkpCiAgCiEgICAgICh3aGVuIHRva2Vu LW51bWJlcgogICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyCiAgCSAgKGdkYi1nZXQtYnVmZmVy LWNyZWF0ZSAnZ2RiLXBhcnRpYWwtb3V0cHV0LWJ1ZmZlcikKICAJKGZ1bmNhbGwKICAJIChjZHIg KGFzc29jIChzdHJpbmctdG8tbnVtYmVyIHRva2VuLW51bWJlcikgZ2RiLWhhbmRsZXItYWxpc3Qp KSkpCiAgICAgICAgKHNldHEgZ2RiLWhhbmRsZXItYWxpc3QKISAJICAgIChhc3NxLWRlbGV0ZS1h bGwgdG9rZW4tbnVtYmVyIGdkYi1oYW5kbGVyLWFsaXN0KSkpKSkKICAKICAoZGVmdW4gZ2RiLWNv bmNhdC1vdXRwdXQgKHNvLWZhciBuZXcpCiAgICAoY29uZAotLS0gMjQyNSwyNDQzIC0tLS0KICAg ICAgKHNldHEgZ2RiLWZpbHRlci1vdXRwdXQKICAJICAoZ2RiLWNvbmNhdC1vdXRwdXQgZ2RiLWZp bHRlci1vdXRwdXQgb3V0cHV0LWZpZWxkKSkKICAKISAgICAgOzsgV2UgYXJlIGRvbmUgY29uY2F0 ZW5hdGluZyB0byB0aGUgb3V0cHV0IHNpbmsuICBSZXN0b3JlIGl0IHRvIHVzZXIgc2luazoKISAg ICAgKHNldHEgZ2RiLW91dHB1dC1zaW5rICd1c2VyKQohIAohICAgICAod2hlbiAoYW5kIHRva2Vu LW51bWJlciBpcy1jb21wbGV0ZSkKICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlcgogIAkgIChn ZGItZ2V0LWJ1ZmZlci1jcmVhdGUgJ2dkYi1wYXJ0aWFsLW91dHB1dC1idWZmZXIpCiAgCShmdW5j YWxsCiAgCSAoY2RyIChhc3NvYyAoc3RyaW5nLXRvLW51bWJlciB0b2tlbi1udW1iZXIpIGdkYi1o YW5kbGVyLWFsaXN0KSkpKQogICAgICAgIChzZXRxIGdkYi1oYW5kbGVyLWFsaXN0CiEgICAgICAg ICAgICAgKGFzc3EtZGVsZXRlLWFsbCB0b2tlbi1udW1iZXIgZ2RiLWhhbmRsZXItYWxpc3QpKSkK ISAKISAgICh3aGVuIGlzLWNvbXBsZXRlCiEgICAgIChnZGItY2xlYXItcGFydGlhbC1vdXRwdXQp KSkpCiAgCiAgKGRlZnVuIGdkYi1jb25jYXQtb3V0cHV0IChzby1mYXIgbmV3KQogICAgKGNvbmQK --0015175cf87813586404d6d4a32f--