From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pierre-Antoine Rouby Subject: Re: [PATCH 0/1] Go importer Date: Mon, 4 Jun 2018 10:18:53 +0200 (CEST) Message-ID: <1994571664.21912258.1528100333726.JavaMail.zimbra@inria.fr> References: <20180426162238.12573-1-pierre-antoine.rouby@inria.fr> <20180502200428.GB5223@jasmine.lan> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_21912256_1593154459.1528100333725" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:53699) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fPkhh-0007cQ-8z for guix-devel@gnu.org; Mon, 04 Jun 2018 04:19:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fPkhd-0001I9-S5 for guix-devel@gnu.org; Mon, 04 Jun 2018 04:19:01 -0400 Received: from mail3-relais-sop.national.inria.fr ([192.134.164.104]:14041) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fPkhd-0001HE-7E for guix-devel@gnu.org; Mon, 04 Jun 2018 04:18:57 -0400 In-Reply-To: <20180502200428.GB5223@jasmine.lan> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Leo Famulari Cc: guix-devel@gnu.org ------=_Part_21912256_1593154459.1528100333725 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Hi, Leo > From: "Leo Famulari" > I've noticed several different dependency manifest formats for Go > software "in the wild". So, this one is specific to Go software using > the Gopkg tool? Yes, Gopkg it's specific for Go software, it's not used by all Go projects, but lot of big project use it. Attached an update of importer. Thanks for comments. P-A ------=_Part_21912256_1593154459.1528100333725 Content-Type: text/x-patch; name=0001-import-Add-gopkg-importer.patch Content-Disposition: attachment; filename=0001-import-Add-gopkg-importer.patch Content-Transfer-Encoding: base64 RnJvbSAzZTliNGZhMTI4MTE0MzJmZGQ3YTRkNjMzMGY5MDkzZGNjNzJkMjVhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSb3VieSBQaWVycmUtQW50b2luZSA8cGllcnJlLWFudG9pbmUu cm91YnlAaW5yaWEuZnI+CkRhdGU6IFRodSwgMjYgQXByIDIwMTggMTU6MDU6MjMgKzAyMDAKU3Vi amVjdDogW1BBVENIXSBpbXBvcnQ6IEFkZCBnb3BrZyBpbXBvcnRlci4KCiogZ3VpeC9pbXBvcnQv Z29wa2cuc2NtOiBOZXcgZmlsZS4KKiBndWl4L3NjcmlwdHMvaW1wb3J0L2dvcGtnLnNjbTogTmV3 IGZpbGUuCiogZ3VpeC9zY3JpcHRzL2ltcG9ydC5zY206IEFkZCAnZ29wa2cnLgoqIE1ha2VmaWxl LmFtOiBBZGQgJ2dvcGtnJyBpbXBvcnRlciBpbiBtb2R1bGVzIGxpc3QuCi0tLQogTWFrZWZpbGUu YW0gICAgICAgICAgICAgICAgICAgfCAgIDEgKwogZ3VpeC9pbXBvcnQvZ29wa2cuc2NtICAgICAg ICAgfCAzODQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZ3VpeC9zY3JpcHRz L2ltcG9ydC5zY20gICAgICAgfCAgIDIgKy0KIGd1aXgvc2NyaXB0cy9pbXBvcnQvZ29wa2cuc2Nt IHwgIDk5ICsrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCA0ODUgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGd1aXgvaW1wb3J0L2dvcGtnLnNjbQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGd1aXgvc2NyaXB0cy9pbXBvcnQvZ29wa2cuc2NtCgpkaWZmIC0tZ2l0 IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQppbmRleCA5ZjEzNGM5NzAuLmUxMDM1MTdmYyAx MDA2NDQKLS0tIGEvTWFrZWZpbGUuYW0KKysrIGIvTWFrZWZpbGUuYW0KQEAgLTE4Myw2ICsxODMs NyBAQCBNT0RVTEVTID0JCQkJCVwKICAgZ3VpeC9pbXBvcnQvaGFja2FnZS5zY20JCQlcCiAgIGd1 aXgvaW1wb3J0L2VscGEuc2NtICAgCQkJXAogICBndWl4L2ltcG9ydC90ZXhsaXZlLnNjbSAgIAkJ CVwKKyAgZ3VpeC9pbXBvcnQvZ29wa2cuc2NtICAgCQkJXAogICBndWl4L3NjcmlwdHMuc2NtCQkJ CVwKICAgZ3VpeC9zY3JpcHRzL2Rvd25sb2FkLnNjbQkJCVwKICAgZ3VpeC9zY3JpcHRzL3BlcmZv cm0tZG93bmxvYWQuc2NtCQlcCmRpZmYgLS1naXQgYS9ndWl4L2ltcG9ydC9nb3BrZy5zY20gYi9n dWl4L2ltcG9ydC9nb3BrZy5zY20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw Li4yMDBkOWZmZDMKLS0tIC9kZXYvbnVsbAorKysgYi9ndWl4L2ltcG9ydC9nb3BrZy5zY20KQEAg LTAsMCArMSwzODQgQEAKKzs7OyBHTlUgR3VpeCAtLS0gRnVuY3Rpb25hbCBwYWNrYWdlIG1hbmFn ZW1lbnQgZm9yIEdOVQorOzs7IENvcHlyaWdodCDCqSAyMDE4IFBpZXJyZS1BbnRvaW5lIFJvdWJ5 IDxwaWVycmUtYW50b2luZS5yb3VieUBpbnJpYS5mcj4KKzs7OworOzs7IFRoaXMgZmlsZSBpcyBw YXJ0IG9mIEdOVSBHdWl4LgorOzs7Cis7OzsgR05VIEd1aXggaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorOzs7IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7Ozsg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IgKGF0Cis7OzsgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorOzs7Cis7 OzsgR05VIEd1aXggaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwgYnV0Cis7OzsgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorOzs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKzs7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorOzs7Cis7OzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKzs7OyBhbG9uZyB3aXRoIEdO VSBHdWl4LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCiso ZGVmaW5lLW1vZHVsZSAoZ3VpeCBpbXBvcnQgZ29wa2cpCisgICM6dXNlLW1vZHVsZSAoaWNlLTkg bWF0Y2gpCisgICM6dXNlLW1vZHVsZSAoaWNlLTkgcmVnZXgpCisgICM6dXNlLW1vZHVsZSAoKGlj ZS05IHJkZWxpbSkgIzpzZWxlY3QgKHJlYWQtbGluZSkpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBz cmZpLTExKQorICAjOnVzZS1tb2R1bGUgKHRleGluZm8gc3RyaW5nLXV0aWxzKSA7IHRyYW5zZm9y bS1zdHJpbmcKKyAgIzp1c2UtbW9kdWxlIChndWl4IGhhc2gpCisgICM6dXNlLW1vZHVsZSAoZ3Vp eCBiYXNlMzIpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBzZXJpYWxpemF0aW9uKQorICAjOnVzZS1t b2R1bGUgKGd1aXggdXRpbHMpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBidWlsZCB1dGlscykKKyAg Izp1c2UtbW9kdWxlICgoZ3VpeCBsaWNlbnNlcykgIzpwcmVmaXggbGljZW5zZTopCisgICM6ZXhw b3J0IChnb3BrZy0+Z3VpeC1wYWNrYWdlKSkKKworOzsKKzs7IERpcmVjdG9yeS4KKzs7CisKKyhk ZWZpbmUgKGdldC1uZXctdG1wLWRpcikKKyAgIlJldHVybiBuZXcgdGVtcCBkaXJlY3RvcnkuIgor ICAobGV0ICgodG1wICIvdG1wL2d1aXgtaW1wb3J0LWdvcGtnIikpCisgICAgKGRlZmluZSAobmV3 IG51bSkKKyAgICAgIChsZXQgKChuZXctZGlyIChzdHJpbmctYXBwZW5kIHRtcCAiLSIgKG51bWJl ci0+c3RyaW5nIG51bSkpKSkKKyAgICAgICAgKGlmIChmaWxlLWV4aXN0cz8gbmV3LWRpcikKKyAg ICAgICAgICAgIChuZXcgKCsgbnVtIDEpKQorICAgICAgICAgICAgbmV3LWRpcikpKQorICAgIChp ZiAoZmlsZS1leGlzdHM/IHRtcCkKKyAgICAgICAgKG5ldyAwKQorICAgICAgICB0bXApKSkKKwor KGRlZmluZSB0bXAtZGlyIChnZXQtbmV3LXRtcC1kaXIpKQorCis7OworOzsgR2l0LgorOzsKKwor KGRlZmluZSAodmNzLWZpbGU/IGZpbGUgc3RhdCkKKyAgKGNhc2UgKHN0YXQ6dHlwZSBzdGF0KQor ICAgICgoZGlyZWN0b3J5KQorICAgICAobWVtYmVyIChiYXNlbmFtZSBmaWxlKSAnKCIuYnpyIiAi LmdpdCIgIi5oZyIgIi5zdm4iICJDVlMiKSkpCisgICAgKChyZWd1bGFyKQorICAgICA7OyBHaXQg c3ViLW1vZHVsZXMgaGF2ZSBhICcuZ2l0JyBmaWxlIHRoYXQgaXMgYSByZWd1bGFyIHRleHQgZmls ZS4KKyAgICAgKHN0cmluZz0/IChiYXNlbmFtZSBmaWxlKSAiLmdpdCIpKQorICAgIChlbHNlCisg ICAgICNmKSkpCisKKyhkZWZpbmUgKGZpbGUtPmhhc2gtYmFzZTMyIGZpbGUpCisgICJSZXR1cm4g aGFzaCBvZiBGSUxFIGluIG5peCBiYXNlMzIgc2hhMjU2IGZvcm1hdC4gIElmIEZJTEUgaXMgYSBk aXJlY3RvcnksCitleGNsdWRlIHZjcyBmaWxlcy4iCisgIChsZXQtdmFsdWVzICgoKHBvcnQgZ2V0 LWhhc2gpIChvcGVuLXNoYTI1Ni1wb3J0KSkpCisgICAgKHdyaXRlLWZpbGUgZmlsZSBwb3J0ICM6 c2VsZWN0PyAobmVnYXRlIHZjcy1maWxlPykpCisgICAgKGZvcmNlLW91dHB1dCBwb3J0KQorICAg IChieXRldmVjdG9yLT5uaXgtYmFzZTMyLXN0cmluZyAoZ2V0LWhhc2gpKSkpCisKKyhkZWZpbmUg KGdpdC0+aGFzaCB1cmwgY29tbWl0IGZpbGUpCisgICJDbG9uZSBnaXQgcmVwb3NpdG9yeSBhbmQg cmV0dXJuIEZJTEUgaGFzaCBpbiBuaXggYmFzZTMyIHNoYTI1NiBmb3JtYXQuIgorICAoaWYgKG5v dCAoZmlsZS1leGlzdHM/IGZpbGUpKQorICAgICAgKGdpdC1mZXRjaCB1cmwgY29tbWl0IGZpbGUg IzpyZWN1cnNpdmU/ICNmKSkKKyAgKGZpbGUtPmhhc2gtYmFzZTMyIGZpbGUpKQorCisoZGVmaW5l IChnaXQtcmVmLT5jb21taXQgcGF0aCB0YWcpCisgICJSZXR1cm4gY29tbWl0IG51bWJlciBjb3Jl c3BvbmRpbmcgdG8gZ2l0IFRBRy4gIFJldHVybiBcIlhYWFwiIGlmIHRhZyBpcyBub3QKK2ZvdW5k LiIKKyAgKGRlZmluZSAobG9vcCBwb3J0KQorICAgIChsZXQgKChsaW5lIChyZWFkLWxpbmUgcG9y dCkpKQorICAgICAgKGNvbmQgCisgICAgICAgKChlb2Ytb2JqZWN0PyBsaW5lKSAgICAgICAgICAg ICAgOyBFT0YKKyAgICAgICAgKGJlZ2luCisgICAgICAgICAgKGNsb3NlLXBvcnQgcG9ydCkKKyAg ICAgICAgICAiWFhYIikpCisgICAgICAgKChzdHJpbmctbWF0Y2ggdGFnIGxpbmUpICAgICAgICAg OyBNYXRjaCB0YWcKKyAgICAgICAgKGxldCAoKGNvbW1pdCAoY2FyIChzdHJpbmctc3BsaXQgKHRy YW5zZm9ybS1zdHJpbmcgbGluZSAjXHRhYiAiICIpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICNcICkpKSkKKyAgICAgICAgICBjb21taXQpKQorICAgICAgIChlbHNl ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgRWxzZQorICAgICAgICAobG9vcCBwb3J0KSkp KSkKKworICAobGV0ICgoZmlsZSAoaWYgKGZpbGUtZXhpc3RzPyAoc3RyaW5nLWFwcGVuZCBwYXRo ICIvLmdpdC9wYWNrZWQtcmVmcyIpKQorICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQg cGF0aCAiLy5naXQvcGFja2VkLXJlZnMiKQorICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBl bmQgcGF0aCAiLy5naXQvRkVUQ0hfSEVBRCIpKSkpCisgICAgKGxvb3AgKG9wZW4taW5wdXQtZmls ZSBmaWxlKSkpKQorCisoZGVmaW5lKiAoZ2l0LWZldGNoIHVybCBjb21taXQgZGlyZWN0b3J5Cisg ICAgICAgICAgICAgICAgICAgICM6a2V5IChnaXQtY29tbWFuZCAiZ2l0IikgcmVjdXJzaXZlPykK KyAgIkZldGNoIENPTU1JVCBmcm9tIFVSTCBpbnRvIERJUkVDVE9SWS4gIENPTU1JVCBtdXN0IGJl IGEgdmFsaWQgR2l0IGNvbW1pdAoraWRlbnRpZmllci4gIFdoZW4gUkVDVVJTSVZFPyBpcyB0cnVl LCBhbGwgdGhlIHN1Yi1tb2R1bGVzIG9mIFVSTCBhcmUgZmV0Y2hlZCwKK3JlY3Vyc2l2ZWx5LiAg UmV0dXJuICN0IG9uIHN1Y2Nlc3MsICNmIG90aGVyd2lzZS4iCisgIDs7IERpc2FibGUgVExTIGNl cnRpZmljYXRlIHZlcmlmaWNhdGlvbi4gIFRoZSBoYXNoIG9mIHRoZSBjaGVja291dCBpcyBrbm93 bgorICA7OyBpbiBhZHZhbmNlIGFueXdheS4KKyAgKHNldGVudiAiR0lUX1NTTF9OT19WRVJJRlki ICJ0cnVlIikKKworICAobWtkaXItcCBkaXJlY3RvcnkpCisKKyAgKHdpdGgtZGlyZWN0b3J5LWV4 Y3Vyc2lvbiBkaXJlY3RvcnkKKyAgICAoaW52b2tlIGdpdC1jb21tYW5kICJpbml0IikKKyAgICAo aW52b2tlIGdpdC1jb21tYW5kICJyZW1vdGUiICJhZGQiICJvcmlnaW4iIHVybCkKKyAgICAoaWYg KHplcm8/IChzeXN0ZW0qIGdpdC1jb21tYW5kICJmZXRjaCIgIi0tZGVwdGgiICIxIiAib3JpZ2lu IiBjb21taXQpKQorICAgICAgICAoaW52b2tlIGdpdC1jb21tYW5kICJjaGVja291dCIgIkZFVENI X0hFQUQiKQorICAgICAgICAoYmVnaW4KKyAgICAgICAgICAoaW52b2tlIGdpdC1jb21tYW5kICJm ZXRjaCIgIm9yaWdpbiIpCisgICAgICAgICAgKGlmIChub3QgKHplcm8/IChzeXN0ZW0qIGdpdC1j b21tYW5kICJjaGVja291dCIgY29tbWl0KSkpCisgICAgICAgICAgICAgIChsZXQgKChjb21taXQt aGFzaCAoZ2l0LXJlZi0+Y29tbWl0IGRpcmVjdG9yeSBjb21taXQpKSkKKyAgICAgICAgICAgICAg ICAoaW52b2tlIGdpdC1jb21tYW5kICJjaGVja291dCIgIm1hc3RlciIpCisgICAgICAgICAgICAg ICAgKGlmIChub3QgKGVxdWFsPyAiWFhYIiBjb21taXQtaGFzaCkpIDtIQUNLIGVsc2Ugc3RheSBv biBtYXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgKHplcm8/IChzeXN0ZW0qIGdpdC1jb21tYW5k ICJjaGVja291dCIgY29tbWl0LWhhc2gpKSkpCisgICAgICAgICAgICAgICN0KSkpKSkKKworOzsK Kzs7IEFwcGVuZCBhdHRyaWJ1dGVzLgorOzsKKworKGRlZmluZSAoYXBwZW5kLWlucHV0cyBpbnB1 dHMgbmFtZSkKKyAgIlJldHVybiBsaXN0IHdpdGggbmV3IGlucHV0IGNvcnJlc3BvbmRpbmcgdG8g cGFja2FnZSBOQU1FLiIKKyAgKGxldCAoKHVucXVvdGUtbmFtZSAobGlzdCAndW5xdW90ZSAoc3Ry aW5nLT5zeW1ib2wgbmFtZSkpKSkKKyAgICAoYXBwZW5kIGlucHV0cyAobGlzdCAobGlzdCBuYW1l IHVucXVvdGUtbmFtZSkpKSkpCisKKzs7Cis7OyBQYXJzZSBhdHRyaWJ1dGVzLgorOzsKKworKGRl ZmluZSAodXJsLT5wYWNrYWdlLW5hbWUgdXJsKQorICAiQ29tcHV0ZSBVUkwgYW5kIHJldHVybiBw YWNrYWdlIG5hbWUuIgorICAobGV0KiAoKHVybC1uby1zbGFzaCAoc3RyaW5nLXJlcGxhY2Utc3Vi c3RyaW5nIHVybCAiLyIgIi0iKSkKKyAgICAgICAgICh1cmwtbm8tc2xhc2gtbm8tZG90IChzdHJp bmctcmVwbGFjZS1zdWJzdHJpbmcgdXJsLW5vLXNsYXNoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuIiAiLSIpKSkKKyAgICAoc3RyaW5n LWRvd25jYXNlIChzdHJpbmctYXBwZW5kICJnby0iIHVybC1uby1zbGFzaC1uby1kb3QpKSkpCisK KyhkZWZpbmUgKGN1dC11cmwgdXJsKQorICAiUmV0dXJuIFVSTCB3aXRob3V0IHByb3RvY29sIHBy ZWZpeCBhbmQgZ2l0IGZpbGUgZXh0ZW5zaW9uLiIKKyAgKHN0cmluZy1yZXBsYWNlLXN1YnN0cmlu ZworICAgKGNvbmQKKyAgICAoKHN0cmluZy1tYXRjaCAiaHR0cDovLyIgIHVybCkKKyAgICAgKHN0 cmluZy1yZXBsYWNlLXN1YnN0cmluZyB1cmwgImh0dHA6Ly8iICIiKSkKKyAgICAoKHN0cmluZy1t YXRjaCAiaHR0cHM6Ly8iIHVybCkKKyAgICAgKHN0cmluZy1yZXBsYWNlLXN1YnN0cmluZyB1cmwg Imh0dHBzOi8vIiAiIikpCisgICAgKChzdHJpbmctbWF0Y2ggImdpdDovLyIgICB1cmwpCisgICAg IChzdHJpbmctcmVwbGFjZS1zdWJzdHJpbmcgdXJsICJnaXQ6Ly8iICIiKSkKKyAgICAoZWxzZQor ICAgICB1cmwpKQorICAgIi5naXQiICIiKSkKKworKGRlZmluZSAodXJsLT5wYXRoIHVybCkKKyAg IlJldHVybiBkaXJlY3RvcnkgcGF0aCBjb3JyZXNwb25kaW5nIHRvIFVSTC4iCisgIChzdHJpbmct cmVwbGFjZS1zdWJzdHJpbmcKKyAgIChzdHJpbmctYXBwZW5kIHRtcC1kaXIgIi8iCisgICAgICAg ICAgICAgICAgICAoY3V0LXVybCB1cmwpKQorICAgIi4iICItIikpCisKKyhkZWZpbmUgKHVybC0+ ZG4gdXJsKQorICAiUmV0dXJuIHRoZSB3ZWIgc2l0ZSBETiBmb3JtIHVybCAnZ251Lm9yZy9zb2Z0 d2FyZS9ndWl4JyAtLT4gJ2dudS5vcmcnIgorICAoY2FyIChzdHJpbmctc3BsaXQgdXJsICNcLykp KQorCisoZGVmaW5lICh1cmwtPmdpdC11cmwgdXJsKQorICAoc3RyaW5nLWFwcGVuZCAiaHR0cHM6 Ly8iIHVybCAiLmdpdCIpKQorCisoZGVmaW5lIChjb21tZW50PyBsaW5lKQorICAiUmV0dXJuICN0 IGlmIExJTkUgc3RhcnQgd2l0aCBjb21tZW50IGRlbGltaXRlciwgZWxzZSByZXR1cm4gI2YuIgor ICAoZXE/IChzdHJpbmctcmVmIChzdHJpbmctdHJpbSBsaW5lKSAwKSAjXCMpKQorCisoZGVmaW5l IChlbXB0eS1saW5lPyBsaW5lKQorICAiUmV0dXJuICN0IGlmIExJTkUgaXMgZW1wdHksIGVsc2Ug I2YuIgorICAoc3RyaW5nLW51bGw/IChzdHJpbmctdHJpbSBsaW5lKSkpCisKKyhkZWZpbmUgKGF0 dHJpYnV0ZT8gbGluZSBhdHRyaWJ1dGUpCisgICJSZXR1cm4gI3QgaWYgTElORSBjb250YWluIEFU VFJJQlVURS4iCisgIChlcXVhbD8gKHN0cmluZy10cmltLXJpZ2h0CisgICAgICAgICAgIChzdHJp bmctdHJpbQorICAgICAgICAgICAgKGNhciAoc3RyaW5nLXNwbGl0IGxpbmUgI1w9KSkpKSBhdHRy aWJ1dGUpKQorCisoZGVmaW5lIChhdHRyaWJ1dGUtYnktbmFtZSBsaW5lIG5hbWUpCisgICJSZXR1 cm4gYXR0cmlidXRlIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gTkFNRS4iCisgIChsZXQqICgobGlu ZS1uby1hdHRyaWJ1dC1uYW1lIChzdHJpbmctcmVwbGFjZS1zdWJzdHJpbmcKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChzdHJpbmctYXBwZW5kIG5hbWUgIiA9ICIpICIiKSkKKyAgICAgICAgICh2YWx1ZS1uby1k b3VibGUtcXVvdGUgKHN0cmluZy1yZXBsYWNlLXN1YnN0cmluZworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGluZS1uby1hdHRyaWJ1dC1uYW1lCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiXCIiICIiKSkpCisgICAgKHN0cmluZy10cmltIHZhbHVlLW5vLWRvdWJs ZS1xdW90ZSkpKQorCis7OworOzsgUGFja2FnZXMgZnVuY3Rpb25zLgorOzsKKworKGRlZmluZSAo bWFrZS1nby1zZXhwLT5wYWNrYWdlIHBhY2thZ2VzIGRlcGVuZGVuY2llcworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5hbWUgdXJsIHZlcnNpb24gcmV2aXNpb24KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb21taXQgc3RyLWxpY2Vuc2UgaG9tZS1wYWdlCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ2l0LXVybCBpcy1kZXA/IGhhc2gpCisgICJDcmVhdGUg R3VpeCBzZXhwIHBhY2thZ2UgZm9yIEdvIHNvZnR3YXJlIE5BTUUuIFJldHVybiBuZXcgcGFja2Fn ZSBzZXhwLiIKKyAgKGRlZmluZSAocGFja2FnZS1pbnB1dHMpCisgICAgKGlmIChub3QgaXMtZGVw PykKKyAgICAgICAgYCgobmF0aXZlLWlucHV0cyAsKGxpc3QgJ3F1YXNpcXVvdGUgZGVwZW5kZW5j aWVzKSkpCisgICAgICAgICcoKSkpCisKKyAgKHZhbHVlcworICAgYChkZWZpbmUtcHVibGljICwo c3RyaW5nLT5zeW1ib2wgbmFtZSkKKyAgICAgIChsZXQgKChjb21taXQgLGNvbW1pdCkKKyAgICAg ICAgICAgIChyZXZpc2lvbiAscmV2aXNpb24pKQorICAgICAgICAocGFja2FnZQorICAgICAgICAg IChuYW1lICxuYW1lKQorICAgICAgICAgICh2ZXJzaW9uIChnaXQtdmVyc2lvbiAsdmVyc2lvbiBy ZXZpc2lvbiBjb21taXQpKQorICAgICAgICAgIChzb3VyY2UgKG9yaWdpbgorICAgICAgICAgICAg ICAgICAgICAobWV0aG9kIGdpdC1mZXRjaCkKKyAgICAgICAgICAgICAgICAgICAgKHVyaSAoZ2l0 LXJlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAodXJsICxnaXQtdXJsKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAoY29tbWl0IGNvbW1pdCkpKQorICAgICAgICAgICAgICAg ICAgICAoZmlsZS1uYW1lIChnaXQtZmlsZS1uYW1lIG5hbWUgdmVyc2lvbikpCisgICAgICAgICAg ICAgICAgICAgIChzaGEyNTYKKyAgICAgICAgICAgICAgICAgICAgIChiYXNlMzIKKyAgICAgICAg ICAgICAgICAgICAgICAsaGFzaCkpKSkKKyAgICAgICAgICAoYnVpbGQtc3lzdGVtIGdvLWJ1aWxk LXN5c3RlbSkKKyAgICAgICAgICAoYXJndW1lbnRzCisgICAgICAgICAgICcoIzppbXBvcnQtcGF0 aCAsdXJsKSkKKyAgICAgICAgICAsQChwYWNrYWdlLWlucHV0cykKKyAgICAgICAgICAoaG9tZS1w YWdlICxob21lLXBhZ2UpCisgICAgICAgICAgKHN5bm9wc2lzICJYWFgiKQorICAgICAgICAgIChk ZXNjcmlwdGlvbiAiWFhYIikKKyAgICAgICAgICAobGljZW5zZSAjZikpKSkpKQorCisoZGVmaW5l IChjcmVhdGUtcGFja2FnZS0+cGFja2FnZXMrZGVwZW5kZW5jaWVzIHBhY2thZ2VzIGRlcGVuZGVu Y2llcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwg dmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXZpc2lvbiBjb21taXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3RyYWludD8gaXMtZGVwPykKKyAgIlJldHVybiBwYWNrYWdlcyBhbmQgZGVwZW5k ZW5jaWVzIHdpdGggbmV3IHBhY2thZ2Ugc2V4cCBjb3JyZXNwb25kaW5nIHRvCitVUkwuIgorICAo bGV0ICgobmFtZSAodXJsLT5wYWNrYWdlLW5hbWUgdXJsKSkKKyAgICAgICAgKGhvbWUtcGFnZSAo c3RyaW5nLWFwcGVuZCAiaHR0cHM6Ly8iIHVybCkpCisgICAgICAgIChnaXQtdXJsICh1cmwtPmdp dC11cmwgdXJsKSkKKyAgICAgICAgKHN5bm9wc2lzICJYWFgiKQorICAgICAgICAoZGVzY3JpcHRp b24gIlhYWCIpCisgICAgICAgIChsaWNlbnNlICJYWFgiKSkKKyAgICAobGV0ICgoaGFzaCAoZ2l0 LT5oYXNoICh1cmwtPmdpdC11cmwgdXJsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29t bWl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAodXJsLT5wYXRoIGdpdC11cmwpKSkKKyAg ICAgICAgICAoY29tbWl0LWhhc2ggKGlmICg8IChzdHJpbmctbGVuZ3RoIGNvbW1pdCkgNDApCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2l0LXJlZi0+Y29tbWl0ICh1cmwtPnBhdGgKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1cmwtPmdpdC11cmwg dXJsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0 KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0KSkpCisgICAgICAodmFsdWVzCisg ICAgICAgKGFwcGVuZCBwYWNrYWdlcworICAgICAgICAgICAgICAgKGxpc3QKKyAgICAgICAgICAg ICAgICAobWFrZS1nby1zZXhwLT5wYWNrYWdlIHBhY2thZ2VzIGRlcGVuZGVuY2llcworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSB1cmwgdmVyc2lvbgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb24gY29tbWl0LWhhc2gKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpY2Vuc2UgaG9tZS1wYWdlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXQtdXJsIGlzLWRlcD8gaGFz aCkpKQorICAgICAgIChpZiBjb25zdHJhaW50PworICAgICAgICAgICAoYXBwZW5kLWlucHV0cyBk ZXBlbmRlbmNpZXMgbmFtZSkKKyAgICAgICAgICAgZGVwZW5kZW5jaWVzKSkpKSkKKworKGRlZmlu ZSAocGFyc2UtZGVwZW5kZW5jaWVzLT5wYWNrYWdlcytkZXBlbmRlbmNpZXMgcG9ydCBjb25zdHJh aW50PworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGFja2FnZXMgZGVwZW5kZW5jaWVzKQorICAiUGFyc2Ugb25lIGRlcGVuZGVuY2llcyBpbiBQT1JU LCBhbmQgcmV0dXJuIHBhY2thZ2VzIGFuZCBkZXBlbmRlbmNpZXMgbGlzdC4iCisgIChsZXQgKCh1 cmwgIlhYWCIpCisgICAgICAgICh2ZXJzaW9uICIwLjAuMCIpCisgICAgICAgIChyZXZpc2lvbiAi MCIpCisgICAgICAgIChjb21taXQgIlhYWCIpKQorICAgIChkZWZpbmUgKGxvb3AgcG9ydCB1cmwg Y29tbWl0IHBhY2thZ2VzIGRlcGVuZGVuY2llcykKKyAgICAgIChsZXQgKChsaW5lIChyZWFkLWxp bmUgcG9ydCkpKQorICAgICAgICAoY29uZAorICAgICAgICAgKChlb2Ytb2JqZWN0PyBsaW5lKSAg ICAgICAgICAgIDsgRU9GCisgICAgICAgICAgKHZhbHVlcyBwYWNrYWdlcyBkZXBlbmRlbmNpZXMp KQorICAgICAgICAgKChlbXB0eS1saW5lPyBsaW5lKSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA7IEVtcHR5IGxpbmUKKyAgICAgICAgICAoaWYgKG5vdCAob3IgKGVxdWFsPyAiazhzLmlv IiAodXJsLT5kbiB1cmwpKSAgICAgOyBIQUNLIGJ5cGFzcyBrOHMKKyAgICAgICAgICAgICAgICAg ICAgICAgKGVxdWFsPyAiZ29sYW5nLm9yZyIgKHVybC0+ZG4gdXJsKSkgOyBIQUNLIGJ5cGFzcyBn b2xhbmcKKyAgICAgICAgICAgICAgICAgICAgICAgKGVxdWFsPyAiY2xvdWQuZ29vZ2xlLmNvbSIg KHVybC0+ZG4gdXJsKSkpKSA7IEhBQ0sgYnlwYXNzIGNsb3VkLmdvb2dsZQorICAgICAgICAgICAg ICAoY3JlYXRlLXBhY2thZ2UtPnBhY2thZ2VzK2RlcGVuZGVuY2llcyBwYWNrYWdlcyBkZXBlbmRl bmNpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdXJsIHZlcnNpb24gcmV2aXNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29tbWl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnQ/ICN0KQorICAgICAgICAgICAgICAo dmFsdWVzIHBhY2thZ2VzIGRlcGVuZGVuY2llcykpKQorICAgICAgICAgKChjb21tZW50PyBsaW5l KSAgICAgICAgICAgICAgIDsgQ29tbWVudAorICAgICAgICAgIChsb29wIHBvcnQgdXJsIGNvbW1p dAorICAgICAgICAgICAgICAgIHBhY2thZ2VzIGRlcGVuZGVuY2llcykpCisgICAgICAgICAoKGF0 dHJpYnV0ZT8gbGluZSAibmFtZSIpICAgICAgOyBOYW1lCisgICAgICAgICAgKGxvb3AgcG9ydAor ICAgICAgICAgICAgICAgIChhdHRyaWJ1dGUtYnktbmFtZSBsaW5lICJuYW1lIikKKyAgICAgICAg ICAgICAgICBjb21taXQKKyAgICAgICAgICAgICAgICBwYWNrYWdlcyBkZXBlbmRlbmNpZXMpKQor ICAgICAgICAgKChhdHRyaWJ1dGU/IGxpbmUgInJldmlzaW9uIikgIDsgUmV2aXNpb24KKyAgICAg ICAgICAobG9vcCBwb3J0CisgICAgICAgICAgICAgICAgdXJsCisgICAgICAgICAgICAgICAgKGF0 dHJpYnV0ZS1ieS1uYW1lIGxpbmUgInJldmlzaW9uIikKKyAgICAgICAgICAgICAgICBwYWNrYWdl cyBkZXBlbmRlbmNpZXMpKQorICAgICAgICAgKChhdHRyaWJ1dGU/IGxpbmUgInZlcnNpb24iKSAg IDsgVmVyc2lvbgorICAgICAgICAgIChsb29wIHBvcnQKKyAgICAgICAgICAgICAgICB1cmwKKyAg ICAgICAgICAgICAgICAoYXR0cmlidXRlLWJ5LW5hbWUgbGluZSAidmVyc2lvbiIpCisgICAgICAg ICAgICAgICAgcGFja2FnZXMgZGVwZW5kZW5jaWVzKSkKKyAgICAgICAgICgoYXR0cmlidXRlPyBs aW5lICJicmFuY2giKSAgICA7IEJyYW5jaAorICAgICAgICAgIChsb29wIHBvcnQKKyAgICAgICAg ICAgICAgICB1cmwKKyAgICAgICAgICAgICAgICAoYXR0cmlidXRlLWJ5LW5hbWUgbGluZSAiYnJh bmNoIikKKyAgICAgICAgICAgICAgICBwYWNrYWdlcyBkZXBlbmRlbmNpZXMpKQorICAgICAgICAg KChzdHJpbmctbWF0Y2ggIj0iIGxpbmUpICAgICAgIDsgT3RoZXIgb3B0aW9ucworICAgICAgICAg IChsb29wIHBvcnQgdXJsIGNvbW1pdAorICAgICAgICAgICAgICAgIHBhY2thZ2VzIGRlcGVuZGVu Y2llcykpCisgICAgICAgICAoZWxzZSAobG9vcCBwb3J0IHVybCBjb21taXQKKyAgICAgICAgICAg ICAgICAgICAgIHBhY2thZ2VzIGRlcGVuZGVuY2llcykpKSkpCisgICAgKGxvb3AgcG9ydCB1cmwg Y29tbWl0CisgICAgICAgICAgcGFja2FnZXMgZGVwZW5kZW5jaWVzKSkpCisKKyhkZWZpbmUgKHBh cnNlLXRvbWwtPnBhY2thZ2VzK2RlcGVuZGVuY2llcyBwb3J0IHBhY2thZ2VzIGRlcGVuZGVuY2ll cykKKyAgIlJlYWQgdG9tbCBmaWxlIG9uIFBPUlQgYW5kIHJldHVybiBhbGwgZGVwZW5kZW5jaWVz IHBhY2thZ2VzIHNleHAgYW5kIGxpc3QKK29mIGNvbnN0cmFpbnQgZGVwZW5kZW5jaWVzLiIKKyAg KGRlZmluZSAobG9vcCBwb3J0IHBhY2thZ2VzIGRlcGVuZGVuY2llcykKKyAgICAobGV0ICgobGlu ZSAocmVhZC1saW5lIHBvcnQpKSkKKyAgICAgIChjb25kCisgICAgICAgKChlb2Ytb2JqZWN0PyBs aW5lKSAgICAgICAgICAgICAgOyBFT0YKKyAgICAgICAgKHZhbHVlcyBwYWNrYWdlcyBkZXBlbmRl bmNpZXMpKQorICAgICAgICgoZW1wdHktbGluZT8gbGluZSkgICAgICAgICAgICAgIDsgRW1wdHkg bGluZQorICAgICAgICAobG9vcCBwb3J0IHBhY2thZ2VzIGRlcGVuZGVuY2llcykpCisgICAgICAg KChjb21tZW50PyBsaW5lKSAgICAgICAgICAgICAgICAgOyBDb21tZW50CisgICAgICAgIChsb29w IHBvcnQgcGFja2FnZXMgZGVwZW5kZW5jaWVzKSkKKyAgICAgICAoKGVxdWFsPyBsaW5lICJbcHJ1 bmVdIikgICAgICAgICA7IElnbm9yZWQKKyAgICAgICAgKGxvb3AgcG9ydCBwYWNrYWdlcyBkZXBl bmRlbmNpZXMpKSAKKyAgICAgICAoKGVxdWFsPyAiW1tjb25zdHJhaW50XV0iIGxpbmUpICA7IERp cmVjdCBkZXBlbmRlbmNpZXMKKyAgICAgICAgKGxldC12YWx1ZXMgKCgocGFja2FnZXMgZGVwZW5k ZW5jaWVzKQorICAgICAgICAgICAgICAgICAgICAgIChwYXJzZS1kZXBlbmRlbmNpZXMtPnBhY2th Z2VzK2RlcGVuZGVuY2llcyBwb3J0ICN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVu ZGVuY2llcykpKQorICAgICAgICAgIChsb29wIHBvcnQgcGFja2FnZXMgZGVwZW5kZW5jaWVzKSkp CisgICAgICAgKChlcXVhbD8gIltbb3ZlcnJpZGVdXSIgbGluZSkgICAgOyBEZXBlbmRlbmNpZXMg b2YgZGVwZW5kZW5jaWVzCisgICAgICAgIChsZXQtdmFsdWVzICgoKHBhY2thZ2VzIGRlcGVuZGVu Y2llcykKKyAgICAgICAgICAgICAgICAgICAgICAocGFyc2UtZGVwZW5kZW5jaWVzLT5wYWNrYWdl cytkZXBlbmRlbmNpZXMgcG9ydCAjZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRl bmNpZXMpKSkKKyAgICAgICAgICAobG9vcCBwb3J0IHBhY2thZ2VzIGRlcGVuZGVuY2llcykpKQor ICAgICAgIChlbHNlIChsb29wIHBvcnQgcGFja2FnZXMgZGVwZW5kZW5jaWVzKSkpKSkKKyAgKGxv b3AgcG9ydCBwYWNrYWdlcyBkZXBlbmRlbmNpZXMpKQorCisoZGVmaW5lIChnb3BrZy1kZXAtPnBh Y2thZ2VzK2RlcGVuZGVuY2llcyBwYXRoKQorICAiT3BlbiB0b21sIGZpbGUgaWYgZXhpc3QgYW5k IHBhcnNlIGl0IGFuZCByZXR1cm4gcGFja2FnZXMgc2V4cCBhbmQKK2RlcGVuZGVuY2llcyBsaXN0 LiBPciByZXR1cm4gdHdvIGVtcHR5IGxpc3QgaWYgZmlsZSBub3QgZm91bmQuIgorICAoaWYgKGZp bGUtZXhpc3RzPyBwYXRoKQorICAgICAgKGxldCAoKHBvcnQgKG9wZW4taW5wdXQtZmlsZSBwYXRo KSkpCisgICAgICAgIChsZXQtdmFsdWVzICgoKHBhY2thZ2VzIGRlcGVuZGVuY2llcykKKyAgICAg ICAgICAgICAgICAgICAgICAocGFyc2UtdG9tbC0+cGFja2FnZXMrZGVwZW5kZW5jaWVzIHBvcnQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICcoKSAnKCkpKSkKKyAgICAgICAgICAoY2xvc2UtcG9ydCBwb3J0KQorICAgICAgICAgICh2YWx1 ZXMgcGFja2FnZXMgZGVwZW5kZW5jaWVzKSkpCisgICAgICAodmFsdWVzICcoKSAnKCkpKSkKKwor OzsKKzs7IEVudHJ5IHBvaW50LgorOzsKKworKGRlZmluZSAoZ29wa2ctPmd1aXgtcGFja2FnZSB1 cmwgYnJhbmNoKQorICAiQ3JlYXRlIHBhY2thZ2UgZm9yIGdpdCByZXBvc2l0b3J5IGRhbnMgYnJh bmNoIHZlcmlzb24gYW5kIGFsbCBkZXBlbmRlbmNpZXMKK3NleHAgcGFja2FnZXMgd2l0aCBHb3Br Zy50b21sIGZpbGUuIgorICAobGV0ICgob3V0cHV0ICh1cmwtPnBhdGggdXJsKSkgCisgICAgICAg IChuYW1lICh1cmwtPnBhY2thZ2UtbmFtZSAoY3V0LXVybCB1cmwpKSkKKyAgICAgICAgKHZlcnNp b24gIjAuMC4wIikKKyAgICAgICAgKHJldmlzaW9uICIwIikpCisgICAgKGdpdC1mZXRjaCB1cmwg YnJhbmNoIG91dHB1dCAjOnJlY3Vyc2l2ZT8gI2YpCisgICAgCisgICAgKGxldC12YWx1ZXMgKCgo cGFja2FnZXMgZGVwZW5kZW5jaWVzKQorICAgICAgICAgICAgICAgICAgKGdvcGtnLWRlcC0+cGFj a2FnZXMrZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgb3V0 cHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9Hb3BrZy50b21sIikpKSkK KyAgICAgIChsZXQtdmFsdWVzICgoKHBhY2thZ2VzIGRlcGVuZGVuY2llcykKKyAgICAgICAgICAg ICAgICAgICAgKGNyZWF0ZS1wYWNrYWdlLT5wYWNrYWdlcytkZXBlbmRlbmNpZXMgcGFja2FnZXMg ZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChjdXQtdXJsIHVybCkgdmVyc2lvbgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZpc2lvbiBicmFuY2gK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgI2YgI2YpKSkKKyAgICAgICAgKHZhbHVlcyBwYWNrYWdlcykpKSkpCmRpZmYgLS1naXQgYS9n dWl4L3NjcmlwdHMvaW1wb3J0LnNjbSBiL2d1aXgvc2NyaXB0cy9pbXBvcnQuc2NtCmluZGV4IDY3 YmM3YTc1NS4uM2M1NWJmYWZmIDEwMDY0NAotLS0gYS9ndWl4L3NjcmlwdHMvaW1wb3J0LnNjbQor KysgYi9ndWl4L3NjcmlwdHMvaW1wb3J0LnNjbQpAQCAtNzQsNyArNzQsNyBAQCByYXRoZXIgdGhh biBcXG4uIgogOzs7CiAKIChkZWZpbmUgaW1wb3J0ZXJzICcoImdudSIgIm5peCIgInB5cGkiICJj cGFuIiAiaGFja2FnZSIgInN0YWNrYWdlIiAiZWxwYSIgImdlbSIKLSAgICAgICAgICAgICAgICAg ICAgImNyYW4iICJjcmF0ZSIgInRleGxpdmUiICJqc29uIikpCisgICAgICAgICAgICAgICAgICAg ICJjcmFuIiAiY3JhdGUiICJ0ZXhsaXZlIiAianNvbiIgImdvcGtnIikpCiAKIChkZWZpbmUgKHJl c29sdmUtaW1wb3J0ZXIgbmFtZSkKICAgKGxldCAoKG1vZHVsZSAocmVzb2x2ZS1pbnRlcmZhY2UK ZGlmZiAtLWdpdCBhL2d1aXgvc2NyaXB0cy9pbXBvcnQvZ29wa2cuc2NtIGIvZ3VpeC9zY3JpcHRz L2ltcG9ydC9nb3BrZy5zY20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5m NTEzNzc5ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9ndWl4L3NjcmlwdHMvaW1wb3J0L2dvcGtnLnNj bQpAQCAtMCwwICsxLDk5IEBACis7OzsgR05VIEd1aXggLS0tIEZ1bmN0aW9uYWwgcGFja2FnZSBt YW5hZ2VtZW50IGZvciBHTlUKKzs7OyBDb3B5cmlnaHQgwqkgMjAxOCBQaWVycmUtQW50b2luZSBS b3VieSA8cGllcnJlLWFudG9pbmUucm91YnlAaW5yaWEuZnI+Cis7OzsKKzs7OyBUaGlzIGZpbGUg aXMgcGFydCBvZiBHTlUgR3VpeC4KKzs7OworOzs7IEdOVSBHdWl4IGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKzs7OyB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor Ozs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yIChhdAorOzs7IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKzs7 OworOzs7IEdOVSBHdWl4IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsIGJ1dAorOzs7IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKzs7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCis7OzsgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKzs7OworOzs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCis7OzsgYWxvbmcgd2l0 aCBHTlUgR3VpeC4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K KworKGRlZmluZS1tb2R1bGUgKGd1aXggc2NyaXB0cyBpbXBvcnQgZ29wa2cpCisgICM6dXNlLW1v ZHVsZSAoZ3VpeCB1aSkKKyAgIzp1c2UtbW9kdWxlIChndWl4IHV0aWxzKQorICAjOnVzZS1tb2R1 bGUgKGd1aXggc2NyaXB0cykKKyAgIzp1c2UtbW9kdWxlIChndWl4IGltcG9ydCBnb3BrZykKKyAg Izp1c2UtbW9kdWxlIChndWl4IHNjcmlwdHMgaW1wb3J0KQorICAjOnVzZS1tb2R1bGUgKHNyZmkg c3JmaS0xKQorICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xMSkKKyAgIzp1c2UtbW9kdWxlIChz cmZpIHNyZmktMzcpCisgICM6dXNlLW1vZHVsZSAoaWNlLTkgbWF0Y2gpCisgICM6dXNlLW1vZHVs ZSAoaWNlLTkgZm9ybWF0KQorICAjOmV4cG9ydCAoZ3VpeC1pbXBvcnQtZ29wa2cpKQorCisMCis7 OzsKKzs7OyBDb21tYW5kLWxpbmUgb3B0aW9ucy4KKzs7OworCisoZGVmaW5lICVkZWZhdWx0LW9w dGlvbnMKKyAgJygpKQorCisoZGVmaW5lIChzaG93LWhlbHApCisgIChkaXNwbGF5IChHXyAiVXNh Z2U6IGd1aXggaW1wb3J0IGdvcGtnIFBBQ0tBR0UtVVJMIEJSQU5DSAorSW1wb3J0IGFuZCBjb252 ZXJ0IHRoZSBnaXQgcmVwbyB3aXRoIHRvbWwgZmlsZSB0byBndWl4IHBhY2thZ2UgdXNpbmcKK1BB Q0tBR0UtVVJMIGFuZCBtYXRjaGluZyBCUkFOQ0guXG4iKSkKKyAgKGRpc3BsYXkgKEdfICIKKyAg LWgsIC0taGVscCAgICAgICAgICAgICBkaXNwbGF5IHRoaXMgaGVscCBhbmQgZXhpdCIpKQorICAo ZGlzcGxheSAoR18gIgorICAtViwgLS12ZXJzaW9uICAgICAgICAgIGRpc3BsYXkgdmVyc2lvbiBp bmZvcm1hdGlvbiBhbmQgZXhpdCIpKQorICAobmV3bGluZSkKKyAgKHNob3ctYnVnLXJlcG9ydC1p bmZvcm1hdGlvbikpCisKKyhkZWZpbmUgJW9wdGlvbnMKKyAgOzsgU3BlY2lmaWNhdGlvbiBvZiB0 aGUgY29tbWFuZC1saW5lIG9wdGlvbnMuCisgIChjb25zKiAob3B0aW9uICcoI1xoICJoZWxwIikg I2YgI2YKKyAgICAgICAgICAgICAgICAgKGxhbWJkYSBhcmdzCisgICAgICAgICAgICAgICAgICAg KHNob3ctaGVscCkKKyAgICAgICAgICAgICAgICAgICAoZXhpdCAwKSkpCisgICAgICAgICAob3B0 aW9uICcoI1xWICJ2ZXJzaW9uIikgI2YgI2YKKyAgICAgICAgICAgICAgICAgKGxhbWJkYSBhcmdz CisgICAgICAgICAgICAgICAgICAgKHNob3ctdmVyc2lvbi1hbmQtZXhpdCAiZ3VpeCBpbXBvcnQg Z29wa2ciKSkpCisgICAgICAgICAlc3RhbmRhcmQtaW1wb3J0LW9wdGlvbnMpKQorCisMCis7OzsK Kzs7OyBFbnRyeSBwb2ludC4KKzs7OworCisoZGVmaW5lIChndWl4LWltcG9ydC1nb3BrZyAuIGFy Z3MpCisgIChkZWZpbmUgKHBhcnNlLW9wdGlvbnMpCisgICAgOzsgUmV0dXJuIHRoZSBhbGlzdCBv ZiBvcHRpb24gdmFsdWVzLgorICAgIChhcmdzLWZvbGQqIGFyZ3MgJW9wdGlvbnMKKyAgICAgICAg ICAgICAgICAobGFtYmRhIChvcHQgbmFtZSBhcmcgcmVzdWx0KQorICAgICAgICAgICAgICAgICAg KGxlYXZlIChHXyAifkE6IHVucmVjb2duaXplZCBvcHRpb25+JSIpIG5hbWUpKQorICAgICAgICAg ICAgICAgIChsYW1iZGEgKGFyZyByZXN1bHQpCisgICAgICAgICAgICAgICAgICAoYWxpc3QtY29u cyAnYXJndW1lbnQgYXJnIHJlc3VsdCkpCisgICAgICAgICAgICAgICAgJWRlZmF1bHQtb3B0aW9u cykpCisKKyAgKGxldCogKChvcHRzIChwYXJzZS1vcHRpb25zKSkKKyAgICAgICAgIChhcmdzIChm aWx0ZXItbWFwIChtYXRjaC1sYW1iZGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCdh cmd1bWVudCAuIHZhbHVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoXyAjZikpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAocmV2ZXJzZSBvcHRzKSkpKQorICAgIChtYXRjaCBhcmdzCisgICAgICAoKHBhY2thZ2Ut dXJsIGJyYW5jaCkKKyAgICAgICAobGV0ICgoc2V4cCAoZ29wa2ctPmd1aXgtcGFja2FnZSBwYWNr YWdlLXVybCBicmFuY2gpKSkKKyAgICAgICAgICh1bmxlc3Mgc2V4cAorICAgICAgICAgICAobGVh dmUgKEdfICJmYWlsZWQgdG8gZG93bmxvYWQgbWV0YS1kYXRhIGZvciBwYWNrYWdlICd+YSd+JSIp CisgICAgICAgICAgICAgICAgICBwYWNrYWdlLXVybCkpCisgICAgICAgICBzZXhwKSkKKyAgICAg ICgocGFja2FnZS11cmwpCisgICAgICAgKGxldCAoKHNleHAgKGdvcGtnLT5ndWl4LXBhY2thZ2Ug cGFja2FnZS11cmwgIm1hc3RlciIpKSkKKyAgICAgICAgICh1bmxlc3Mgc2V4cAorICAgICAgICAg ICAobGVhdmUgKEdfICJmYWlsZWQgdG8gZG93bmxvYWQgbWV0YS1kYXRhIGZvciBwYWNrYWdlICd+ YSd+JSIpCisgICAgICAgICAgICAgICAgICBwYWNrYWdlLXVybCkpCisgICAgICAgICBzZXhwKSkK KyAgICAgICgoKQorICAgICAgIChsZWF2ZSAoR18gInRvbyBmZXcgYXJndW1lbnRzfiUiKSkpCisg ICAgICAoKG1hbnkgLi4uKQorICAgICAgIChsZWF2ZSAoR18gInRvbyBtYW55IGFyZ3VtZW50c34l IikpKSkpKQotLSAKMi4xNy4wCgo= ------=_Part_21912256_1593154459.1528100333725--