From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Keith David Bershatsky Newsgroups: gmane.emacs.bugs Subject: bug#31601: Dired/Wdired: Play nicely with recursive list of files and directories. Date: Mon, 28 May 2018 16:11:38 -0700 Message-ID: References: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart_Mon_May_28_16:11:38_2018-1" Content-Transfer-Encoding: 8bit X-Trace: blaine.gmane.org 1527549015 25246 195.159.176.226 (28 May 2018 23:10:15 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Mon, 28 May 2018 23:10:15 +0000 (UTC) Cc: 31601@debbugs.gnu.org To: Tino Calancha Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue May 29 01:10:10 2018 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1fNRHF-0006S4-2g for geb-bug-gnu-emacs@m.gmane.org; Tue, 29 May 2018 01:10:09 +0200 Original-Received: from localhost ([::1]:58128 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fNRJK-0005Aq-Hb for geb-bug-gnu-emacs@m.gmane.org; Mon, 28 May 2018 19:12:18 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:59280) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fNRJ8-0005Ak-Kq for bug-gnu-emacs@gnu.org; Mon, 28 May 2018 19:12:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fNRJ4-0006X0-L1 for bug-gnu-emacs@gnu.org; Mon, 28 May 2018 19:12:06 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:45004) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fNRJ4-0006Wi-8Z for bug-gnu-emacs@gnu.org; Mon, 28 May 2018 19:12:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1fNRJ4-00024e-2b for bug-gnu-emacs@gnu.org; Mon, 28 May 2018 19:12:02 -0400 X-Loop: help-debbugs@gnu.org In-Reply-To: Resent-From: Keith David Bershatsky Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 28 May 2018 23:12:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31601 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 31601-submit@debbugs.gnu.org id=B31601.15275491047940 (code B ref 31601); Mon, 28 May 2018 23:12:02 +0000 Original-Received: (at 31601) by debbugs.gnu.org; 28 May 2018 23:11:44 +0000 Original-Received: from localhost ([127.0.0.1]:52901 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fNRIm-000240-Bd for submit@debbugs.gnu.org; Mon, 28 May 2018 19:11:44 -0400 Original-Received: from gateway31.websitewelcome.com ([192.185.143.52]:12458) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fNRIj-00023p-0I for 31601@debbugs.gnu.org; Mon, 28 May 2018 19:11:42 -0400 Original-Received: from cm11.websitewelcome.com (cm11.websitewelcome.com [100.42.49.5]) by gateway31.websitewelcome.com (Postfix) with ESMTP id 552D5FCE2 for <31601@debbugs.gnu.org>; Mon, 28 May 2018 18:11:40 -0500 (CDT) Original-Received: from gator3053.hostgator.com ([50.87.144.69]) by cmsmtp with SMTP id NRIhfGFHQRPojNRIifxXid; Mon, 28 May 2018 18:11:40 -0500 X-Authority-Reason: nr=8 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com ; s=default; h=Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Cc :To:From:Message-ID:Date:Sender:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=3xI9YFan3hXVVEPg/DQbmA05uvahihdJ9VUvkL0OEo8=; b=KnF4ciS6VvXv9aHEYX++vgg7Iv 9qt54UVyt3+NaC6IcZh3+jYeO9TDr5s1gzPnkq3js0eqKzglUt6n7n0eO28R73UEVDhJ5Qi4ZQM2M 8U5HOgF5SOj2NmvA3j6thWvzu+OB/CUxenD6hHPGzykSt9n3TMF6cJhmUJ42om0fVV3j4oYcI4MEC gGMpWLSTNN1aNQZVfWy6lLHAOwIZIk/N6daiSQO2BWMsAQ8HVAoQIrHDjnhGorubm4x6TIzGaOkdh bnTYwZcGXV9eGysmE8pYkzQcbq/x+TAWcAB/OVVn8euslZj39aEcK9Um7L/2i0B4G9n2nPDJaoXPV aaKS2dsg==; Original-Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:53964 helo=server.local) by gator3053.hostgator.com with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.89_1) (envelope-from ) id 1fNRIh-002zJX-7l; Mon, 28 May 2018 18:11:39 -0500 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - gator3053.hostgator.com X-AntiAbuse: Original Domain - debbugs.gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - lawlist.com X-BWhitelist: no X-Source-IP: 45.48.239.195 X-Source-L: No X-Exim-ID: 1fNRIh-002zJX-7l X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: cpe-45-48-239-195.socal.res.rr.com (server.local) [45.48.239.195]:53964 X-Source-Auth: lawlist X-Email-Count: 1 X-Source-Cap: bGF3bGlzdDtsYXdsaXN0O2dhdG9yMzA1My5ob3N0Z2F0b3IuY29t X-Local-Domain: yes X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.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" Xref: news.gmane.org gmane.emacs.bugs:146665 Archived-At: --Multipart_Mon_May_28_16:11:38_2018-1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Attached is a draft/proof-concept patch.diff of my ideas regarding how to make dired/wdired play nicely with an arbitrary list of files and folders, including a recursive list. I asked for some help on emacs.stackexchange.com to implement these new approaches, and used the answers by @Drew, @Tobias and @Andreas Röhler. Citations to their answers are included in the draft/proof-concept patch. I would need some help regarding how to update the dired-directory variable when deleting a file in a regular dired-mode buffer, and I have added a FIXME notation in the likely spot of `dired.el` -- the approach would be similar to renaming a file (already implemented in the attached draft patch), but is a bit more complicated due to potential recursive deletions. The file-name-nondirectory components in wdired-mode now have read-only attributes so that a user no longer erroneously believes that he/she can modify them, and only latter see an error message when trying to commit the changes: file-error Renaming No such file or directory .... I have only done some basic renaming of files and directories in wdired mode using both `find-name-dired` and `dired-list-files-folders' to populate the dired- buffer. I did not spend any time implementing hash-tables to speed up the modification of the dired-directory variable, as that would likely involve modifying a few or more aspects of dired-mode. Thanks, Keith --Multipart_Mon_May_28_16:11:38_2018-1 Content-Type: application/diff; type=patch Content-Disposition: attachment; filename="patch.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpc3AvZGlyZWQtYXV4LmVsIGIvbGlzcC9kaXJlZC1hdXguZWwKaW5kZXgg ODIxYjdkNy4uYjk4YzAwOCAxMDA2NDQKLS0tIGEvbGlzcC9kaXJlZC1hdXguZWwKKysrIGIvbGlz cC9kaXJlZC1hdXguZWwKQEAgLTE1OTAsMTEgKzE1OTAsNjggQEAgSWYgYGFzaycsIGFzayBmb3Ig dXNlciBjb25maXJtYXRpb24uIgogCSAgICAgICBkaXJlZC1jcmVhdGUtZmlsZXMtZmFpbHVyZXMp CiAJIChkaXJlZC1sb2cgIkNhbid0IHNldCBkYXRlIG9uICVzOlxuJXNcbiIgZnJvbSBlcnIpKSkp KSkKIAorOzs7IChzZXRxIG15bGlzdCAnKCJhcHBsZSIgInBlYXIiICJwZWFjaCIgIm5lY3Rhcmlu ZSIgIndhdGVybWVsb24iKSkKKzs7OyAoYXItcmVwbGFjZS0taW4tbGlzdCAiYXBwbGUiICJjaGVy cnkiIG15bGlzdCkKKzs7OyBXcml0dGVuIGJ5IEBBbmRyZWFzIFLDtmhsZXI6ICBodHRwczovL2Vt YWNzLnN0YWNrZXhjaGFuZ2UuY29tL2EvNDE2MzEvMjI4NworKGRlZnVuIGFyLXJlcGxhY2UtLWlu LWxpc3QgKGVsZW0gcmVwbGFjZW1lbnQgbGlzdCkKKyAgIkV4cGVjdHMgYSBMSVNUIG9mIHN0cmlu Z3MuCitFTEVNOiBlbGVtZW50IHRvIHJlcGxhY2UgYnkgYXJnIFJFUExBQ0VNRU5UIgorICAobGV0 IChuZXdsaXN0KQorICAgIChkb2xpc3QgKGVsZSBsaXN0KQorICAgICAgKGlmIChzdHJpbmc9IGVs ZSBlbGVtKQorICAgICAgICAocHVzaCByZXBsYWNlbWVudCBuZXdsaXN0KQorICAgICAgICAocHVz aCBlbGUgbmV3bGlzdCkpKQorICAgIChucmV2ZXJzZSBuZXdsaXN0KSkpCisKKyhkZWZ1biByZXBs YWNlLWRpcmVjdG9yeS1uYW1lLWluLWZpbGVzIChvbGQgbmV3IGxpc3QpCisiUmVwbGFjZSBpbiBm aWxlLW5hbWVzL2RpcmVjdG9yeS1uYW1lcyBhbGwgb2NjdXJyZW5jZXMgb2YgT0xEIGRpcmVjdG9y eSBuYW1lCit3aXRoIE5FVyBkaXJlY3RvcnkgbmFtZSBpbiB0aGUgTElTVC4iCisgIChsZXQgKChy ZWdleHAtb2xkIChjb25jYXQgIl4iIChyZWdleHAtcXVvdGUgb2xkKSkpCisgICAgICAgIG5ld2xp c3QpCisgICAgKGRvbGlzdCAoZmlsZSBsaXN0KQorICAgICAgOzs7IGBkaXJlZC1ub3NlbGVjdCcg bWF5IHNldCB0aGUgZmlyc3QgZWxlbWVudCBvZiBgZGlyZWQtZGlyZWN0b3J5JyB3aXRoIGEgbGVh ZGluZyB+CisgICAgICA7OzsgICAoYWJicmV2aWF0ZS1maWxlLW5hbWUgKGV4cGFuZC1maWxlLW5h bWUgKGRpcmVjdG9yeS1maWxlLW5hbWUgIi9Vc2Vycy9Ib21lL2ZvbyIpKSkgPT4gIn4vZm9vIgor ICAgICAgOzs7CisgICAgICA7OzsgV2UgdXNlIE5FVyB0byB0ZXN0IGZvciBgZmlsZS1kaXJlY3Rv cnktcCcgYmVjYXVzZSB0aGUgZGlyZWN0b3J5CisgICAgICA7OzsgaGFzIGFscmVhZHkgYmVlbiBy ZW5hbWVkIGJ5IHRoZSB0aW1lIHdlIGdldCBoZXJlLiAgQWx0ZXJuYXRpdmVseSwKKyAgICAgIDs7 OyB3ZSBjb3VsZCB0ZXN0IHRoZSBPTEQgZmlsZW5hbWUgdG8gc2VlIGlmIGl0IGlzIGEgZGlyZWN0 b3J5IGF0IHRoZQorICAgICAgOzs7IHRoZSBvdXRzZXQgb2YgYGRpcmVkLXJlbmFtZS1maWxlJyBh bmQgc2F2ZSB0aGUgcmVzdWx0LgorICAgICAgOzs7CisgICAgICA7OzsgRklYTUU6ICBXZSBuZWVk IGFuIGFkZGl0aW9uYWwgdGVzdCBhbmQgdGhlbiBkZWFsIHdpdGggYSBob21lIGRpcmVjdG9yeSB+ LgorICAgICAgOzs7IFRoZSBjb2RlIGRvZXMgbm90IHByZXNlbnRseSBkZWFsIHdpdGggYSAifi9m b28vYmFyIiBmaWxlIHdoZW4gdGhlCisgICAgICA7OzsgZGlyZWN0b3J5IGBmb29gIGlzIHJlbmFt ZWQuICBgcmVuYW1lLWZpbGUnIHdpbGwgZXJyb3IuCisgICAgICAoaWYgKGFuZCAoZmlsZS1kaXJl Y3RvcnktcCBuZXcpCisgICAgICAgICAgICAgICAoc3RyaW5nLW1hdGNoIHJlZ2V4cC1vbGQgZmls ZSkKKyAgICAgICAgICAgICAgIDs7OyBCZWNhdXNlIHdlIGhhdmUgYWxyZWFkeSBwcm9jZXNzZWQg YGFyLXJlcGxhY2UtLWluLWxpc3QnLAorICAgICAgICAgICAgICAgOzs7IHRoZSBORVcgbmFtZSBp cyBhbHJlYWR5IGluIGBkaXJlZC1kaXJlY3RvcnknLgorICAgICAgICAgICAgICAgKG5vdCAoZXF1 YWwgbmV3IGZpbGUpKSkKKyAgICAgICAgIChwdXNoIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcg cmVnZXhwLW9sZCBuZXcgZmlsZSkgbmV3bGlzdCkKKyAgICAgICAgIChwdXNoIGZpbGUgbmV3bGlz dCkpKQorICAgIChucmV2ZXJzZSBuZXdsaXN0KSkpCisKIDs7OyMjI2F1dG9sb2FkCiAoZGVmdW4g ZGlyZWQtcmVuYW1lLWZpbGUgKGZpbGUgbmV3bmFtZSBvay1pZi1hbHJlYWR5LWV4aXN0cykKICAg KGRpcmVkLWhhbmRsZS1vdmVyd3JpdGUgbmV3bmFtZSkKICAgKGRpcmVkLW1heWJlLWNyZWF0ZS1k aXJzIChmaWxlLW5hbWUtZGlyZWN0b3J5IG5ld25hbWUpKQogICAocmVuYW1lLWZpbGUgZmlsZSBu ZXduYW1lIG9rLWlmLWFscmVhZHktZXhpc3RzKSA7IGVycm9yIGlzIGNhdWdodCBpbiAtY3JlYXRl LWZpbGVzCisgIDs7OyBJbiB0aGUgY29udGV4dCBvZiBgd2RpcmVkLWZpbmlzaC1lZGl0JywgaXQg Y2FsbHMgYHdkaXJlZC1kby1yZW5hbWVzJyBhbmQKKyAgOzs7IHRoYXQgZnVuY3Rpb24gY29udGFp bnMgYSBgY29uZGl0aW9uLWNhc2UnIHNlY3Rpb24gdGhhdCBjb3VudHMgdGhlIG51bWJlciBvZiBl cnJvcnMuCisgIDs7OyBGb3IgcHVycG9zZXMgb2YgYGRpcmVkLXJlbmFtZS1maWxlJywgdGhlIGZ1 bmN0aW9uIGV4aXN0cyBhcyBzb29uIGFzIGByZW5hbWUtZmlsZScKKyAgOzs7IHRocm93cyBhbiBl cnJvciwgc28gd2UgbmV2ZXIgZ2V0IHRvIHRoZSByZXN0IG9mIHRoaXMgZnVuY3Rpb24gYmVsb3cg d2hlbiBhIHJlbmFtaW5nIGVycm9yIG9jY3Vycy4KKyAgOzs7CisgIDs7OyBVcGRhdGUgdGhlIGBk aXJlZC1kaXJlY3RvcnknIGJ5IHJlcGxhY2luZyBGSUxFIHdpdGggTkVXTkFNRS4KKyAgKHdoZW4g KGFuZCAobGlzdHAgZGlyZWQtZGlyZWN0b3J5KQorICAgICAgICAgICAgIChtZW1iZXIgZmlsZSBk aXJlZC1kaXJlY3RvcnkpKQorICAgIChzZXRxIGRpcmVkLWRpcmVjdG9yeQorICAgICAgKGFyLXJl cGxhY2UtLWluLWxpc3QgZmlsZSBuZXduYW1lIGRpcmVkLWRpcmVjdG9yeSkpKQorICA7OzsgSWYg RklMRSBpcyBhIGRpcmVjdG9yeSwgdGhlbiB1cGRhdGUgdGhlIGBkaXJlZC1kaXJlY3RvcnknIGJ5 CisgIDs7OyByZXBsYWNpbmcgYWxsIG9jY3VycmVuY2VzIG9mIHRoYXQgZGlyZWN0b3J5IG5hbWUg d2l0aGluIGFueSBmaWxlbmFtZXMuCisgICh3aGVuIChhbmQgKGxpc3RwIGRpcmVkLWRpcmVjdG9y eSkKKyAgICAgICAgICAgICAgIDs7OyBCZWNhdXNlIHdlIGhhdmUgYWxyZWFkeSBwcm9jZXNzZWQg YGFyLXJlcGxhY2UtLWluLWxpc3QnLAorICAgICAgICAgICAgICAgOzs7IHRoZSBORVdOQU1FIGlz IGFscmVhZHkgaW4gYGRpcmVkLWRpcmVjdG9yeScuCisgICAgICAgICAgICAgKG1lbWJlciBuZXdu YW1lIGRpcmVkLWRpcmVjdG9yeSkpCisgICAgKHNldHEgZGlyZWQtZGlyZWN0b3J5CisgICAgICAg ICAgIChyZXBsYWNlLWRpcmVjdG9yeS1uYW1lLWluLWZpbGVzIGZpbGUgbmV3bmFtZSBkaXJlZC1k aXJlY3RvcnkpKSkKICAgOzsgU2lsZW50bHkgcmVuYW1lIHRoZSB2aXNpdGVkIGZpbGUgb2YgYW55 IGJ1ZmZlciB2aXNpdGluZyB0aGlzIGZpbGUuCiAgIChhbmQgKGdldC1maWxlLWJ1ZmZlciBmaWxl KQogICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIChnZXQtZmlsZS1idWZmZXIgZmlsZSkKZGlm ZiAtLWdpdCBhL2xpc3AvZGlyZWQuZWwgYi9saXNwL2RpcmVkLmVsCmluZGV4IDEzNDhkZjYuLjVj NDU3NjQgMTAwNjQ0Ci0tLSBhL2xpc3AvZGlyZWQuZWwKKysrIGIvbGlzcC9kaXJlZC5lbApAQCAt MzExOSw2ICszMTE5LDExIEBAIG5vbi1lbXB0eSBkaXJlY3RvcmllcyBpcyBhbGxvd2VkLiIKIAkg ICAgICAobGV0ICgoaW5oaWJpdC1yZWFkLW9ubHkgdCkpCiAJCShjb25kaXRpb24tY2FzZSBlcnIK IAkJICAgIChsZXQgKChmbiAoY2FyIChjYXIgbCkpKSkKKwkJICAgICAgOzs7IGh0dHA6Ly9kZWJi dWdzLmdudS5vcmcvY2dpL2J1Z3JlcG9ydC5jZ2k/YnVnPTMxNjAxCisJCSAgICAgIDs7OyBGSVhN RTogIEBsYXdsaXN0IGNvdWxkIHVzZSBzb21lIGhlbHAgZmlndXJpbmcgb3V0IGhvdy93aGVuIHRv CisJCSAgICAgIDs7OyB1cGRhdGUgdGhlIGBsYXdsaXN0LWRpcmVkLWRpcmVjdG9yeScgd2hlbiBp dCBpcyBhIGxpc3QuICBUaGVyZSBhcmUKKwkJICAgICAgOzs7IGEgZmV3IGRpZmZlcmVudCBvcHRp b25zIHRoYXQgQGxhd2xpc3QgZG9lcyBub3QgZnVsbHkgdW5kZXJzdGFuZAorCQkgICAgICA7Ozsg c3VjaCBhcyBSRUNVUlNJVkUgZGVsZXRpb25zLgogCQkgICAgICAoZGlyZWQtZGVsZXRlLWZpbGUg Zm4gZGlyZWQtcmVjdXJzaXZlLWRlbGV0ZXMgdHJhc2gpCiAJCSAgICAgIDs7IGlmIHdlIGdldCBo ZXJlLCByZW1vdmluZyB3b3JrZWQKIAkJICAgICAgKHNldHEgc3VjYyAoMSsgc3VjYykpCmRpZmYg LS1naXQgYS9saXNwL3dkaXJlZC5lbCBiL2xpc3Avd2RpcmVkLmVsCmluZGV4IGJiNjBlNzcuLmVk NzVhOGYgMTAwNjQ0Ci0tLSBhL2xpc3Avd2RpcmVkLmVsCisrKyBiL2xpc3Avd2RpcmVkLmVsCkBA IC03Niw2ICs3Niw2NyBAQAogKHJlcXVpcmUgJ2RpcmVkKQogKGF1dG9sb2FkICdkaXJlZC1kby1j cmVhdGUtZmlsZXMtcmVnZXhwICJkaXJlZC1hdXgiKQogCis7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 OzsKKzs7OyBodHRwOi8vZGViYnVncy5nbnUub3JnL2NnaS9idWdyZXBvcnQuY2dpP2J1Zz0zMTYw MQorCis7OzsgV3JpdHRlbiBieSBUaW5vIENhbGFuY2hhCis7OzsgaHR0cHM6Ly9kZWJidWdzLmdu dS5vcmcvY2dpL2J1Z3JlcG9ydC5jZ2k/YnVnPTMxNjAxIzgKKyhkZWZ1biB3ZGlyZWQtZmluZC1k aXJlZC1idWZmZXItcCAoKQorICAiUmV0dXJuIG5vbi1uaWwgaWYgdGhlIGRpcmVkIGJ1ZmZlciBj b21lcyBmcm9tIGEgYGZpbmQtZGlyZWQnIGNvbW1hbmQuIgorICAoc2F2ZS1leGN1cnNpb24KKyAg ICAoZ290by1jaGFyIChwb2ludC1taW4pKQorICAgIChmb3J3YXJkLWxpbmUgMSkKKyAgICA7Ozsg VGhlIGxpbmUgd2UgYXJlIGxvb2tpbmcgZm9yIGlzOiAgICAvdXNyL2Jpbi9maW5kIC4gXCggLWlu YW1lIFwqIFwpIC1scworICAgIChyZS1zZWFyY2gtZm9yd2FyZCAoZm9ybWF0ICJeXFxzLSolcyAi IGZpbmQtcHJvZ3JhbSkgbmlsIHQpKSkKKworKGRlZnVuIGRpcmVkLWxpc3QtZmlsZXMtZm9sZGVy cyAoKQorIlByb2R1Y2UgYSBkaXJlZC1tb2RlIGJ1ZmZlciBvZiBhbGwgZmlsZXMvZm9sZGVycyBy ZWN1cnNpdmVseS4iCisoaW50ZXJhY3RpdmUpCisgIChsZXQqICgocGF0aCAocmVhZC1kaXJlY3Rv cnktbmFtZSAiRGlyZWN0b3J5OiAgIikpCisgICAgICAgICAoZGlyZWN0b3J5IChmaWxlLW5hbWUt YXMtZGlyZWN0b3J5IHBhdGgpKSkKKyAgICAodW5sZXNzIChmaWxlLWRpcmVjdG9yeS1wIHBhdGgp CisgICAgICAobGV0ICgoZGVidWctb24tcXVpdCBuaWwpCisgICAgICAgICAgICAobXNnIChmb3Jt YXQgIk5vdCBhIGRpcmVjdG9yeTogJXMiIHBhdGgpKSkKKyAgICAgICAgKHNpZ25hbCAncXVpdCBg KCxtc2cpKSkpCisgICAgKGxldCogKChkZWZhdWx0LWRpcmVjdG9yeSBkaXJlY3RvcnkpCisgICAg ICAgICAgIChpbmNsdWRlLWRpcmVjdG9yaWVzICh3aGVuICh5LW9yLW4tcCAiSW5jbHVkZSBkaXJl Y3Rvcmllcz8iKSB0KSkKKyAgICAgICAgICAgKGxzdCAoZGlyZWN0b3J5LWZpbGVzLXJlY3Vyc2l2 ZWx5IGRlZmF1bHQtZGlyZWN0b3J5ICIiIGluY2x1ZGUtZGlyZWN0b3JpZXMpKSkKKyAgICAgIDs7 OyBUaGUgZmlyc3QgZWxlbWVudCBpcyB0YWtlbiBhcyB0aGUgZGlyZWN0b3J5IG5hbWUuCisgICAg ICAocHVzaCBkZWZhdWx0LWRpcmVjdG9yeSBsc3QpCisgICAgICAoZGlyZWQgbHN0KSkpKQorCis7 OzsgV3JpdHRlbiBieSBEcmV3IEFkYW1zIGZyb20gaGlzIGRpcmVkKyBsaWJyYXJ5OyBzZWUgYWxz byB0aGUgZXhhbXBsZSBwb3N0ZWQgdG8KKzs7OyBodHRwczovL2VtYWNzLnN0YWNrZXhjaGFuZ2Uu Y29tL2EvNDE2NjkvMjI4NworKGRlZnVuIGRpcmVkcC1yb290LWRpcmVjdG9yeS1wIChmaWxlKQor ICAiUmV0dXJuIG5vbi1uaWwgaWYgRklMRSBpcyBhIHJvb3QgZGlyZWN0b3J5LiIKKyAgKGlmIChm Ym91bmRwICdhbmdlLWZ0cC1yb290LWRpci1wKQorICAgICAgKGFuZ2UtZnRwLXJvb3QtZGlyLXAg KGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkgZmlsZSkpCisgICAgOzsgVGhpcyBpcyBlc3NlbnRpYWxs eSBgYW5nZS1mdHAtcm9vdC1kaXItcCcgYXBwbGllZCB0byBgZmlsZS1uYW1lLWFzLWRpcmVjdG9y eScuCisgICAgOzsgSWYgYGFuZ2UtZnRwLXJvb3QtZGlyLXAnIGNoYW5nZXMsIHVwZGF0ZSB0aGlz IGNvZGUuCisgICAgKG9yIChhbmQgKGVxIHN5c3RlbS10eXBlICd3aW5kb3dzLW50KQorICAgICAg ICAgICAgIChzdHJpbmctbWF0Y2gtcCAiXFxgW2EtekEtWl06Wy9cXF1cXCciIChmaWxlLW5hbWUt YXMtZGlyZWN0b3J5IGZpbGUpKSkKKyAgICAgICAgKHN0cmluZz0gIi8iIGZpbGUpKSkpCisKKzs7 OyBXcml0dGVuIGJ5IERyZXcgQWRhbXMgZnJvbSBoaXMgZGlyZWQrIGxpYnJhcnk7IHNlZSBhbHNv IHRoZSBleGFtcGxlIHBvc3RlZCB0bworOzs7IGh0dHBzOi8vZW1hY3Muc3RhY2tleGNoYW5nZS5j b20vYS80MTY2OS8yMjg3CisoZGVmdW4gZGlyZWRwLXBhcmVudC1kaXIgKGZpbGUgJm9wdGlvbmFs IHJlbGF0aXZlcCkKKyAgIlJldHVybiB0aGUgcGFyZW50IGRpcmVjdG9yeSBvZiBGSUxFLCBvciBu aWwgaWYgbm9uZS4KK09wdGlvbmFsIGFyZyBSRUxBVElWRVAgbm9uLW5pbCBtZWFucyByZXR1cm4g YSByZWxhdGl2ZSBuYW1lLCB0aGF0IGlzLAoranVzdCB0aGUgcGFyZW50IGNvbXBvbmVudC4iCisg IChsZXQgKChwYXJlbnQgIChmaWxlLW5hbWUtZGlyZWN0b3J5IChkaXJlY3RvcnktZmlsZS1uYW1l IChleHBhbmQtZmlsZS1uYW1lIGZpbGUpKSkpCisgICAgICAgIHJlbHBhcmVudCkKKyAgICAod2hl biByZWxhdGl2ZXAKKyAgICAgIChzZXRxIHJlbHBhcmVudCAgKGZpbGUtbmFtZS1ub25kaXJlY3Rv cnkgKGRpcmVjdG9yeS1maWxlLW5hbWUgcGFyZW50KSkpKQorICAgIChhbmQgKG5vdCAoZXF1YWwg cGFyZW50IGZpbGUpKSAgKG9yIHJlbHBhcmVudCAgcGFyZW50KSkpKQorCisoZGVmaW5lLWtleSBk aXJlZC1tb2RlLW1hcCAiciIgJ3dkaXJlZC1jaGFuZ2UtdG8td2RpcmVkLW1vZGUpCisKKyhkZWZp bmUta2V5IGN0bC14LW1hcCAiZiIgJ2RpcmVkLWxpc3QtZmlsZXMtZm9sZGVycykKKworKGRlZmlu ZS1rZXkgY3RsLXgtbWFwICJGIiAnZmluZC1uYW1lLWRpcmVkKQorCis7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7OzsKKwogKGRlZmdyb3VwIHdkaXJlZCBuaWwKICAgIk1vZGUgdG8gcmVuYW1lIGZpbGVz IGJ5IGVkaXRpbmcgdGhlaXIgbmFtZXMgaW4gZGlyZWQgYnVmZmVycy4iCiAgIDpncm91cCAnZGly ZWQpCkBAIC0yMDMsNyArMjY0LDcgQEAgbm9uZXhpc3RlbnQgZGlyZWN0b3J5IHdpbGwgZmFpbC4i CiAoZGVmdmFyIHdkaXJlZC1jb2wtcGVybSkgOzsgQ29sdW1uIHdoZXJlIHRoZSBwZXJtaXNzaW9u IGJpdHMgc3RhcnQKIChkZWZ2YXIgd2RpcmVkLW9sZC1jb250ZW50KQogKGRlZnZhciB3ZGlyZWQt b2xkLXBvaW50KQotKGRlZnZhciB3ZGlyZWQtb2xkLW1hcmtzKQorKGRlZnZhciB3ZGlyZWQtb2xk LW1hcmtzIG5pbCkKIAogKGRlZnVuIHdkaXJlZC1tb2RlICgpCiAgICJXcml0YWJsZSBEaXJlZCAo V0RpcmVkKSBtb2RlLgpAQCAtMjU3LDcgKzMxOCw4IEBAIFNlZSBgd2RpcmVkLW1vZGUnLiIKICAg KGFkZC1ob29rICdraWxsLWJ1ZmZlci1ob29rICd3ZGlyZWQtY2hlY2sta2lsbC1idWZmZXIgbmls IHQpCiAgIChzZXRxIG1ham9yLW1vZGUgJ3dkaXJlZC1tb2RlKQogICAoc2V0cSBtb2RlLW5hbWUg IkVkaXRhYmxlIERpcmVkIikKLSAgKHNldHEgcmV2ZXJ0LWJ1ZmZlci1mdW5jdGlvbiAnd2RpcmVk LXJldmVydCkKKyAgKHVubGVzcyAod2RpcmVkLWZpbmQtZGlyZWQtYnVmZmVyLXApCisgICAgKHNl dHEgcmV2ZXJ0LWJ1ZmZlci1mdW5jdGlvbiAnd2RpcmVkLXJldmVydCkpCiAgIDs7IEkgdGVtcCBk aXNhYmxlIHVuZG8gZm9yIHBlcmZvcm1hbmNlOiBzaW5jZSBJJ20gZ29pbmcgdG8gY2xlYXIgdGhl CiAgIDs7IHVuZG8gbGlzdCwgaXQgY2FuIHNhdmUgbW9yZSB0aGFuIGEgOSUgb2YgdGltZSB3aXRo IGJpZwogICA7OyBkaXJlY3RvcmllcyBiZWNhdXNlIHNldHRpbmcgcHJvcGVydGllcyBtb2RpZnkg dGhlIHVuZG8tbGlzdC4KQEAgLTI4NywxOSArMzQ5LDc5IEBAIG9yIFxcW3dkaXJlZC1hYm9ydC1j aGFuZ2VzXSB0byBhYm9ydCBjaGFuZ2VzIikpKQogICAoc2F2ZS1leGN1cnNpb24KICAgICAoZ290 by1jaGFyIChwb2ludC1taW4pKQogICAgIChsZXQgKChiLXByb3RlY3Rpb24gKHBvaW50KSkKLQkg IGZpbGVuYW1lKQorICAgICAgICAgIGZpbGVuYW1lIHAxIHAyIHAzIGZpbGUgYWJzb2x1dGUtcCkK ICAgICAgICh3aGlsZSAobm90IChlb2JwKSkKIAkoc2V0cSBmaWxlbmFtZSAoZGlyZWQtZ2V0LWZp bGVuYW1lIG5pbCB0KSkKICAgICAgICAgKHdoZW4gKGFuZCBmaWxlbmFtZQotCQkgICAobm90ICht ZW1iZXIgKGZpbGUtbmFtZS1ub25kaXJlY3RvcnkgZmlsZW5hbWUpICcoIi4iICIuLiIpKSkpCi0J ICAoZGlyZWQtbW92ZS10by1maWxlbmFtZSkKLQkgIDs7IFRoZSByZWFyLW5vbnN0aWNreSBwcm9w ZXJ0eSBiZWxvdyBzaGFsbCBlbnN1cmUgdGhhdCB0ZXh0IHByZWNlZGluZwotCSAgOzsgdGhlIGZp bGVuYW1lIGNhbid0IGJlIG1vZGlmaWVkLgotCSAgKGFkZC10ZXh0LXByb3BlcnRpZXMKLQkgICAo MS0gKHBvaW50KSkgKHBvaW50KSBgKG9sZC1uYW1lICxmaWxlbmFtZSByZWFyLW5vbnN0aWNreSAo cmVhZC1vbmx5KSkpCi0JICAocHV0LXRleHQtcHJvcGVydHkgYi1wcm90ZWN0aW9uIChwb2ludCkg J3JlYWQtb25seSB0KQotCSAgKHNldHEgYi1wcm90ZWN0aW9uIChkaXJlZC1tb3ZlLXRvLWVuZC1v Zi1maWxlbmFtZSB0KSkKLQkgIChwdXQtdGV4dC1wcm9wZXJ0eSAocG9pbnQpICgxKyAocG9pbnQp KSAnZW5kLW5hbWUgdCkpCisgICAgICAgICAgICAgICAgICAgKG5vdCAobWVtYmVyIChmaWxlLW5h bWUtbm9uZGlyZWN0b3J5IGZpbGVuYW1lKSAnKCIuIiAiLi4iKSkpKQorICAgICAgICAgIChzZXRx IHAxIChkaXJlZC1tb3ZlLXRvLWZpbGVuYW1lKQorICAgICAgICAgICAgICAgIHAzIChkaXJlZC1t b3ZlLXRvLWVuZC1vZi1maWxlbmFtZSAnbm8tZXJyb3IpCisgICAgICAgICAgICAgICAgZmlsZSAo YnVmZmVyLXN1YnN0cmluZyBwMSBwMykpCisgICAgICAgICAgOzs7IEJFR0lOIGNvZGUgYm9ycm93 ZWQgZnJvbSBgZGlyZWQtZ2V0LWZpbGVuYW1lJy4KKyAgICAgICAgICA7OyBVbnF1b3RlIG5hbWVz IHF1b3RlZCBieSBscyBvciBieSBkaXJlZC1pbnNlcnQtZGlyZWN0b3J5LgorICAgICAgICAgIDs7 IFRoaXMgY29kZSB3YXMgd3JpdHRlbiB1c2luZyBgcmVhZCcgdG8gdW5xdW90ZSwgYmVjYXVzZQor ICAgICAgICAgIDs7IGl0J3MgZmFzdGVyIHRoYW4gc3Vic3RpdHV0aW5nIFwwMDcgKDQgY2hhcnMp IC0+IF5HICgxCisgICAgICAgICAgOzsgY2hhcikgZXRjLiBpbiBhIGxpc3AgbG9vcC4gIFVuZm9y dHVuYXRlbHksIHRoaXMgZGVjaXNpb24KKyAgICAgICAgICA7OyBoYXMgbmVjZXNzaXRhdGVkIGhh Y2tzIHN1Y2ggYXMgZGVhbGluZyB3aXRoIGZpbGVuYW1lcworICAgICAgICAgIDs7IHdpdGggcXVv dGF0aW9uIG1hcmtzIGluIHRoZWlyIG5hbWVzLgorICAgICAgICAgICh3aGlsZSAoc3RyaW5nLW1h dGNoICJcXCg/OlteXFxdXFx8XFxgXFwpXFwoXCJcXCkiIGZpbGUpCisgICAgICAgICAgICAoc2V0 cSBmaWxlIChyZXBsYWNlLW1hdGNoICJcXFwiIiBuaWwgdCBmaWxlIDEpKSkKKyAgICAgICAgICA7 OyBVbmVzY2FwZSBhbnkgc3BhY2VzIGVzY2FwZWQgYnkgbHMgLWIgKGJ1ZyMxMDQ2OSkuCisgICAg ICAgICAgOzsgT3RoZXIgLWIgcXVvdGVzLCBlZyBcdCwgXG4sIHdvcmsgdHJhbnNwYXJlbnRseS4K KyAgICAgICAgICAoaWYgKGRpcmVkLXN3aXRjaGVzLWVzY2FwZS1wIGRpcmVkLWFjdHVhbC1zd2l0 Y2hlcykKKyAgICAgICAgICAgIChsZXQgKChzdGFydCAwKQorICAgICAgICAgICAgICAgICAgKHJl cCAiIikKKyAgICAgICAgICAgICAgICAgIChzaGlmdCAtMSkpCisgICAgICAgICAgICAgIDs7IChp ZiAoZXEgbG9jYWxwICd2ZXJiYXRpbSkKKyAgICAgICAgICAgICAgOzsgICAgIChzZXRxIHJlcCAi XFxcXCIKKyAgICAgICAgICAgICAgOzsgICAgICAgICAgIHNoaWZ0ICsxKSkKKyAgICAgICAgICAg ICAgKHdoaWxlIChzdHJpbmctbWF0Y2ggIlxcKFxcXFxcXCkgIiBmaWxlIHN0YXJ0KQorICAgICAg ICAgICAgICAgIChzZXRxIGZpbGUgKHJlcGxhY2UtbWF0Y2ggcmVwIG5pbCB0IGZpbGUgMSkKKyAg ICAgICAgICAgICAgICAgICAgICBzdGFydCAoKyBzaGlmdCAobWF0Y2gtZW5kIDApKSkpKSkKKyAg ICAgICAgICAod2hlbiAoZXEgc3lzdGVtLXR5cGUgJ3dpbmRvd3MtbnQpCisgICAgICAgICAgICAo c2F2ZS1tYXRjaC1kYXRhCisgICAgICAgICAgICAgIChsZXQgKChzdGFydCAwKSkKKyAgICAgICAg ICAgICAgICAod2hpbGUgKHN0cmluZy1tYXRjaCAiXFxcXCIgZmlsZSBzdGFydCkKKyAgICAgICAg ICAgICAgICAgIChhc2V0IGZpbGUgKG1hdGNoLWJlZ2lubmluZyAwKSA/LykKKyAgICAgICAgICAg ICAgICAgIChzZXRxIHN0YXJ0IChtYXRjaC1lbmQgMCkpKSkpKQorICAgICAgICAgIDs7IEhlbmNl IHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgY29udmVydGluZyBgXFwnIGJhY2sgdG8gYFwn LgorICAgICAgICAgIChzZXRxIGZpbGUgKHJlYWQgKGNvbmNhdCAiXCIiIGZpbGUgIlwiIikpKQor ICAgICAgICAgIDs7IFRoZSBhYm92ZSBgcmVhZCcgd2lsbCByZXR1cm4gYSB1bmlieXRlIHN0cmlu ZyBpZiBGSUxFCisgICAgICAgICAgOzsgY29udGFpbnMgZWlnaHQtYml0LWNvbnRyb2wvZ3JhcGhp YyBjaGFyYWN0ZXJzLgorICAgICAgICAgIChpZiAoYW5kIGVuYWJsZS1tdWx0aWJ5dGUtY2hhcmFj dGVycworICAgICAgICAgICAgICAgICAgIChub3QgKG11bHRpYnl0ZS1zdHJpbmctcCBmaWxlKSkp CisgICAgICAgICAgICAoc2V0cSBmaWxlIChzdHJpbmctdG8tbXVsdGlieXRlIGZpbGUpKSkKKyAg ICAgICAgICAoYW5kIGZpbGUKKyAgICAgICAgICAgICAgIChmaWxlLW5hbWUtYWJzb2x1dGUtcCBm aWxlKQorICAgICAgICAgICAgICAgOzsgQSByZWxhdGl2ZSBmaWxlIG5hbWUgY2FuIHN0YXJ0IHdp dGggfi4KKyAgICAgICAgICAgICAgIDs7IERvbid0IHRyZWF0IGl0IGFzIGFic29sdXRlIGluIHRo aXMgY29udGV4dC4KKyAgICAgICAgICAgICAgIChub3QgKGVxIChhcmVmIGZpbGUgMCkgP34pKQor ICAgICAgICAgICAgICAgKHNldHEgYWJzb2x1dGUtcCB0KSkKKyAgICAgICAgICA7OzsgRU5EIGNv ZGUgYm9ycm93ZWQgZnJvbSBgZGlyZWQtZ2V0LWZpbGVuYW1lJy4KKyAgICAgICAgICAoaWYgKGFu ZCBhYnNvbHV0ZS1wCisgICAgICAgICAgICAgICAgICAgOzsgVGVzdCB3aGV0aGVyIGFic29sdXRl IGZpbGUvZGlyZWN0b3J5IGlzIGluIHRoZSByb290IG9mIHRoZSBoYXJkIGRyaXZlLgorICAgICAg ICAgICAgICAgICAgIChub3QgKGRpcmVkcC1yb290LWRpcmVjdG9yeS1wIChkaXJlZHAtcGFyZW50 LWRpciBmaWxlKSkpKQorICAgICAgICAgICAgKHNldHEgcDIgKC0gcDMgKGxlbmd0aCAoZmlsZS1u YW1lLW5vbmRpcmVjdG9yeSBmaWxlKSkpKQorICAgICAgICAgICAgOzs7IEZJWE1FOiAgRmlyc3Qg YXR0ZW1wdCBhdCBkZWFsaW5nIHdpdGggcmVsYXRpdmUgcGF0aHMKKyAgICAgICAgICAgIDs7OyBX aWxsIHRoaXMgYWx3YXlzIGJlIHRoZSBzYW1lIGFzIHdoZW4gZGVhbGluZyB3aXRoIGFuIGFic29s dXRlIHBhdGggKGFib3ZlKT8KKyAgICAgICAgICAgIChzZXRxIHAyICgtIHAzIChsZW5ndGggKGZp bGUtbmFtZS1ub25kaXJlY3RvcnkgZmlsZSkpKSkpCisgICAgICAgICAgOzs7IGB3ZGlyZWQtZ2V0 LWZpbGVuYW1lJyByZWxpZXMgdXBvbiB0aGUgb3JpZ2luYWwgbG9jYXRpb24gb2YgdGhlCisgICAg ICAgICAgOzs7IG9mIHRoZSBPTEQtTkFNRSBhbmQgRklMRU5BTUUgdGV4dCBwcm9wZXJ0aWVzLgor ICAgICAgICAgIChhZGQtdGV4dC1wcm9wZXJ0aWVzICgxLSBwMSkgcDEgYChvbGQtbmFtZSAsZmls ZW5hbWUpKQorICAgICAgICAgIDs7OyBNYWtlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGBmaWxlLW5h bWUtbm9uZGlyZWN0b3J5JyB0aGUgcmVhZC1vbmx5IGJvdW5kYXJ5LgorICAgICAgICAgIDs7IFRo ZSByZWFyLW5vbnN0aWNreSBwcm9wZXJ0eSBiZWxvdyBzaGFsbCBlbnN1cmUgdGhhdCB0ZXh0IHBy ZWNlZGluZworICAgICAgICAgIDs7IHRoZSBmaWxlbmFtZSBjYW4ndCBiZSBtb2RpZmllZC4KKyAg ICAgICAgICAoYWRkLXRleHQtcHJvcGVydGllcyAoMS0gcDIpIHAyIGAocmVhci1ub25zdGlja3kg KHJlYWQtb25seSkpKQorICAgICAgICAgIDs7OyBFeGNlcHQgZm9yIHRoZSBpbml0aWFsIGxvb3Ag d2hlcmUgQi1QUk9URUNUSU9OIGlzIHNldCB0byBgcG9pbnQtbWluJywKKyAgICAgICAgICA7Ozsg Qi1QUk9URUNUSU9OIGlzIHRoZSBlbmQgb2YgdGhlIHByZWNlZGluZyBmaWxlbmFtZSBmcm9tIHRo ZSBwcmV2aW91cyBsb29wLgorICAgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBiLXByb3RlY3Rp b24gcDIgJ3JlYWQtb25seSB0KQorICAgICAgICAgIChpZiAoPSAocG9pbnQpIChwb2ludC1tYXgp KQorICAgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5ICgxLSBwMykgcDMgJ2VuZC1uYW1lIHQp CisgICAgICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgcDMgKDErIHAzKSAnZW5kLW5hbWUgdCkp KQorICAgICAgICA7OzsgRXhjZXB0IGZvciB0aGUgaW5pdGlhbCBsb29wIHdoZXJlIEItUFJPVEVD VElPTiBpcyBzZXQgdG8gYHBvaW50LW1pbicsCisgICAgICAgIDs7OyBCLVBST1RFQ1RJT04gaXMg dGhlIGVuZCBvZiB0aGUgcHJlY2VkaW5nIGZpbGVuYW1lIGZyb20gdGhlIHByZXZpb3VzIGxvb3Au CisgICAgICAgICh3aGVuIHAzCisgICAgICAgICAgKHNldHEgYi1wcm90ZWN0aW9uIHAzKSkKICAg ICAgICAgKGZvcndhcmQtbGluZSkpCiAgICAgICAocHV0LXRleHQtcHJvcGVydHkgYi1wcm90ZWN0 aW9uIChwb2ludC1tYXgpICdyZWFkLW9ubHkgdCkpKSkKIApAQCAtMzQ0LDkgKzQ2NiwxNyBAQCBu b24tbmlsIG1lYW5zIHJldHVybiBvbGQgZmlsZW5hbWUuIgogICAgICAgICAoYW5kIGZpbGUgKHNl dHEgZmlsZSAod2RpcmVkLW5vcm1hbGl6ZS1maWxlbmFtZSBmaWxlIChub3Qgb2xkKSkpKSkKICAg ICAgIChpZiAob3Igbm8tZGlyIG9sZCkKIAkgIGZpbGUKLQkoYW5kIGZpbGUgKD4gKGxlbmd0aCBm aWxlKSAwKQotICAgICAgICAgICAgIChjb25jYXQgKGRpcmVkLWN1cnJlbnQtZGlyZWN0b3J5KSBm aWxlKSkpKSkpCi0KKyAgICAgICAgKGNvbmQKKyAgICAgICAgICA7OzsgV2hlbiBGSUxFIGlzIHJl bGF0aXZlLCBjb25jYXRlbmF0ZSBkZWZhdWx0LWRpcmVjdG9yeSB0byBiZWdpbm5pbmcuCisgICAg ICAgICAgKChhbmQgZmlsZQorICAgICAgICAgICAgICAgICg+IChsZW5ndGggZmlsZSkgMCkKKyAg ICAgICAgICAgICAgICAobm90IChmaWxlLW5hbWUtYWJzb2x1dGUtcCBmaWxlKSkKKyAgICAgICAg ICAgICAgICAoY29uY2F0IChkaXJlZC1jdXJyZW50LWRpcmVjdG9yeSkgZmlsZSkpKQorICAgICAg ICAgIDs7OyBXaGVuIEZJTEUgaXMgYWJzb2x1dGUsIG5vIG5lZWQgdG8gY29uY2F0ZW5hdGUgdGhl IGRlZmF1bHQtZGlyZWN0b3J5LgorICAgICAgICAgICgoYW5kIGZpbGUKKyAgICAgICAgICAgICAg ICAoPiAobGVuZ3RoIGZpbGUpIDApCisgICAgICAgICAgICAgICAgKGZpbGUtbmFtZS1hYnNvbHV0 ZS1wIGZpbGUpCisgICAgICAgICAgICAgICAgZmlsZSkpKSkpKSkKIAogKGRlZnVuIHdkaXJlZC1j aGFuZ2UtdG8tZGlyZWQtbW9kZSAoKQogICAiQ2hhbmdlIHRoZSBtb2RlIGJhY2sgdG8gZGlyZWQu IgpAQCAtMzYzLDcgKzQ5Myw4IEBAIG5vbi1uaWwgbWVhbnMgcmV0dXJuIG9sZCBmaWxlbmFtZS4i CiAgIChzZXRxIG1vZGUtbmFtZSAiRGlyZWQiKQogICAoZGlyZWQtYWR2ZXJ0aXNlKQogICAocmVt b3ZlLWhvb2sgJ2tpbGwtYnVmZmVyLWhvb2sgJ3dkaXJlZC1jaGVjay1raWxsLWJ1ZmZlciB0KQot ICAoc2V0IChtYWtlLWxvY2FsLXZhcmlhYmxlICdyZXZlcnQtYnVmZmVyLWZ1bmN0aW9uKSAnZGly ZWQtcmV2ZXJ0KSkKKyAgKHVubGVzcyAod2RpcmVkLWZpbmQtZGlyZWQtYnVmZmVyLXApCisgICAg KHNldCAobWFrZS1sb2NhbC12YXJpYWJsZSAncmV2ZXJ0LWJ1ZmZlci1mdW5jdGlvbikgJ2RpcmVk LXJldmVydCkpKQogCiAKIChkZWZ1biB3ZGlyZWQtYWJvcnQtY2hhbmdlcyAoKQpAQCAtNDU3LDYg KzU4OCwxNiBAQCBub24tbmlsIG1lYW5zIHJldHVybiBvbGQgZmlsZW5hbWUuIgogICAgICAgICAo cHJvZ3Jlc3MgbmlsKQogICAgICAgICAoZXJyb3JzIDApCiAgICAgICAgIChvdmVyd3JpdGUgKG9y IChub3Qgd2RpcmVkLWNvbmZpcm0tb3ZlcndyaXRlKSAxKSkpCisgICAgOzs7IFdlIG11c3QgcHJv Y2VzcyB0aGUgZGVlcGVzdCBkaXJlY3RvcmllcyBmaXJzdCBpbiB0aW1lLCBhbmQgZ3JhZHVhbGx5 CisgICAgOzs7IHdvcmsgb3VyIHdheSBiYWNrd2FyZHMuICBTZWU6ICBodHRwczovL2VtYWNzLnN0 YWNrZXhjaGFuZ2UuY29tL2EvNDE2ODIvMjI4NworICAgIDs7OyBTb3J0aW5nIGZ1bmN0aW9uIHdy aXR0ZW4gYnkgQFRvYmlhcyBvbiBlbWFjcy5zdGFja2V4Y2hhbmdlLmNvbSAoc3VwcmEpCisgICAg Ozs7IFJFTkFNRVMgYXJlIGluIHRoZSBmb3JtYXQgb2YgKGNvbnMgZmlsZS1vbGQgKHN1YnN0aXR1 dGUtaW4tZmlsZS1uYW1lIGZpbGUtbmV3KSkKKyAgICA7OzsgRmlsZXMvZGlyZWN0b3JpZXMgd2l0 aCB0aGUgZ3JlYXRlc3QgZGVwdGggYXJlIHNvcnRlZCBmaXJzdCBpbiB0aW1lLgorICAgIDs7OyBU aGUgZnVuY3Rpb24gYHBvcCcgKHVzZWQgaGVyZWluYmVsb3cpIHVzZXMgdGhlIGZpcnN0IGVsZW1l bnQgb2YgdGhlIGxpc3QuCisgICAgKHJlcXVpcmUgJ2NsLXNlcSkKKyAgICAoc2V0cSByZW5hbWVz IChjbC1zdGFibGUtc29ydCByZW5hbWVzIChsYW1iZGEgKHBhdGgxIHBhdGgyKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKD4gKGNsLWNvdW50ID8vIChjYXIg cGF0aDEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGNsLWNvdW50ID8vIChjYXIgcGF0aDIpKSkpKSkKICAgICAod2hpbGUgKG9yIHJlbmFtZXMKICAg ICAgICAgICAgICAgIDs7IFdlJ3ZlIGRvbmUgb25lIHJvdW5kIHRocm91Z2ggdGhlIHJlbmFtZXMs IHdlIGhhdmUgZm91bmQKICAgICAgICAgICAgICAgIDs7IHNvbWUgcmVzaWR1ZSwgYnV0IHdlIGFs c28gbWFkZSBzb21lIHByb2dyZXNzLCBzbyBtYXliZQo= --Multipart_Mon_May_28_16:11:38_2018-1--