From mboxrd@z Thu Jan 1 00:00:00 1970 From: Adonay Felipe Nogueira Subject: Re: Continuing the work on the recipes related to GNU Ring Date: Thu, 20 Apr 2017 10:55:13 -0300 Message-ID: <871ssnuqta.fsf@openmailbox.org> References: <87shma18an.fsf@openmailbox.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:42676) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d1CYQ-0002Fr-St for guix-devel@gnu.org; Thu, 20 Apr 2017 09:55:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d1CYM-0006hU-Tm for guix-devel@gnu.org; Thu, 20 Apr 2017 09:55:26 -0400 Received: from lb1.openmailbox.org ([5.79.108.160]:57977 helo=mail.openmailbox.org) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d1CYM-0006ec-8o for guix-devel@gnu.org; Thu, 20 Apr 2017 09:55:22 -0400 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: guix-devel@gnu.org --=-=-= Content-Type: text/plain Hi all! :) I bring you a request: We might need "real" developers working on this --- because I don't know how to make programs in the languages being used by upstreams. Also, I'm somewhat "up to my ears" on study paperwork now. :) I have attached an improved set of recipes (in one .scm file, still not a patch), that take suggestions from [[https://lists.gnu.org/archive/html/ring/2017-03/msg00007.html]] --- the list archive item doesn't show it, but someone replied privately to me saying that msgpack must be made with "C++11" set. Here is the notes that I have made so far: - I did not test the changes I made yet, but I plan to once I can upgrade my packages installed through Guix. - Updated commit of ring-project.tar.gz still has lots of patches that are applied to their upstream. The attached set of recipes, however, doesn't have the updated version yet (due to lack of my time). - Also, I just tried contacting pjsip/pjproject on an old issue that relates to the "gnutls" patch: [[http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/2017-April/019937.html]]. - For the detailed questions of which license the patched *result* should have, I recommend you to talk to ssalenick and dkc in #ring channel at chat.freenode.net, because I already talked with them briefely. Also, if they don't remember, tell them that they were discussing this with "adfeno". - Other notes are in the .scm file. --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=ring.scm Content-Transfer-Encoding: base64 Ozs7IENvcHlyaWdodCDCqSAyMDE2IEx1a2FzIEdyYWRsCjs7OyBDb3B5cmlnaHQgwqkgMjAxNyBN YXJpdXMgQmFra2UKOzs7IENvcHlyaWdodCDCqSAyMDE3IEFkb25heSAiYWRmZW5vIiBGZWxpcGUg Tm9ndWVpcmEgPGh0dHBzOi8vbGlicmVwbGFuZXQub3JnL3dpa2kvVXNlcjpBZGZlbm8+IDxhZGZl bm9Ab3Blbm1haWxib3gub3JnPgoKOzs7IEJlZm9yZSBjcmVhdGluZyBwYXRjaGVzIG91dCBvZiB0 aGVzZSByZWNpcGVzLCBwbGVhc2UgZ3VhcmFudGVlIHRoYXQgdGhlcmUncyBjb250YWN0IGluZm9y bWF0aW9uIGZvciBNeC4gR3JhZGwgYW5kIE14LiBCYWtrZS4KCjs7OyBUT0RPIEZvciBvdGhlciBh dHJpYnV0aW9ucywgbG9vayBmb3I6Cjs7OyAtIDxodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZl L2h0bWwvZ3VpeC1kZXZlbC8yMDE2LTA5L21zZzAxNTQxLmh0bWw+Lgo7OzsgLSA8aHR0cDovL2xp c3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2d1aXgtZGV2ZWwvMjAxNi0wOS9tc2cwMTkzNy5odG1s Pi4KOzs7IC0gPGh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9ndWl4LWRldmVsLzIw MTYtMDkvbXNnMDE5MzguaHRtbD4uCjs7OyAtIDxodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZl L2h0bWwvZ3VpeC1kZXZlbC8yMDE3LTAxL21zZzAxMjE2Lmh0bWw+Lgo7OzsgLSA8aHR0cDovL2xp c3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2d1aXgtZGV2ZWwvMjAxNi0wOS9tc2cwMTA2MS5odG1s Pi4KOzs7IC0gPGh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9ndWl4LWRldmVsLzIw MTYtMDkvbXNnMDEwNjIuaHRtbD4uCjs7OyAtIDxodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZl L2h0bWwvZ3VpeC1kZXZlbC8yMDE2LTA5L21zZzAxMDYzLmh0bWw+LgoKKGRlZmluZS1tb2R1bGUg KHJpbmcpCiAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMpCiAgIzp1c2UtbW9kdWxlIChnbnUg cGFja2FnZXMgYWlkYykKICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBhdWRpbykKICAjOnVz ZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBhdXRvdG9vbHMpCiAgIzp1c2UtbW9kdWxlIChnbnUgcGFj a2FnZXMgYmFzZSkKICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBib29zdCkKICAjOnVzZS1t b2R1bGUgKGdudSBwYWNrYWdlcyBjaGVjaykKICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBj b21wcmVzc2lvbikKICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBjcnlwdG8pCiAgIzp1c2Ut bW9kdWxlIChnbnUgcGFja2FnZXMgZG9jdW1lbnRhdGlvbikKICAjOnVzZS1tb2R1bGUgKGdudSBw YWNrYWdlcyBnZXR0ZXh0KQogICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGdsaWIpCiAgIzp1 c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgZ25vbWUpCiAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2Fn ZXMgZ3RrKQogICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGxpYnVwbnApCiAgIzp1c2UtbW9k dWxlIChnbnUgcGFja2FnZXMgbGludXgpCiAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgbXVs dGlwcmVjaXNpb24pCiAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgbmV0dGxlKQogICM6dXNl LW1vZHVsZSAoZ251IHBhY2thZ2VzIHBjcmUpCiAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMg cGVybCkKICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBwa2ctY29uZmlnKQogICM6dXNlLW1v ZHVsZSAoZ251IHBhY2thZ2VzIHB5dGhvbikKICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBw dWxzZWF1ZGlvKQogICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIHF0KQogICM6dXNlLW1vZHVs ZSAoZ251IHBhY2thZ2VzIHJlYWRsaW5lKQogICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIHNl cmlhbGl6YXRpb24pCiAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgdGVsZXBob255KQogICM6 dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIHRscykKICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdl cyB2aWRlbykKICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyB3ZWJraXQpCiAgIzp1c2UtbW9k dWxlIChnbnUgcGFja2FnZXMgeGlwaCkKICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyB4b3Jn KQogICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIHppcCkKICAjOnVzZS1tb2R1bGUgKGd1aXgg YnVpbGQtc3lzdGVtIGdudSkKICAjOnVzZS1tb2R1bGUgKGd1aXggYnVpbGQtc3lzdGVtIGNtYWtl KQogICM6dXNlLW1vZHVsZSAoZ3VpeCBkb3dubG9hZCkKICAjOnVzZS1tb2R1bGUgKGd1aXggZ2l0 LWRvd25sb2FkKQogICM6dXNlLW1vZHVsZSAoKGd1aXggbGljZW5zZXMpICM6cHJlZml4IGxpY2Vu c2U6KQogICM6dXNlLW1vZHVsZSAoZ3VpeCBwYWNrYWdlcykKICAjOnVzZS1tb2R1bGUgKGd1aXgg dXRpbHMpCiAgIzp1c2UtbW9kdWxlIChpY2UtOSBtYXRjaCkpCgo7OzsgRklYTUUgQ29udmluY2Ug dXBzdHJlYW0sIFJpbmcsIHRvIHNlbmQgcGF0Y2hlcyB0byB0aGVpciB1cHN0cmVhbXMuCjs7OyBG SVhNRSBTZWUgaWYgdGhlIGNvbWJpbmF0aW9uIG9mIFNhdm9pci1mYWlyZSBMaW51eCdzIHBqcHJv amVjdCArCjs7OyByZXN0YmVkICsgUmluZyBkYWVtb24gaXMgT0suCgo7OzsgRGVwZW5kZW5jaWVz IG9uIE9wZW5TU0wgd2VyZSBkaXNhYmxlZCBkdWUgdG8gbGljZW5zaW5nIGlzc3Vlcy4KCjs7OyBC YXNlZCBvbgo7OzsgPGh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9ndWl4LWRldmVs LzIwMTYtMDkvbXNnMDE1NDEuaHRtbD4uCihkZWZpbmUtcHVibGljIHNhdm9pci1mYWlyZS1saW51 eC1wanByb2plY3QKICAobGV0ICgoc2F2b2lyLWZhaXJlLWxpbnV4LXBhdGNoZXMKCSAob3JpZ2lu CgkgIChtZXRob2QgdXJsLWZldGNoKQoJICAodXJpICJodHRwOi8vZGwucmluZy5jeC9yaW5nLXJl bGVhc2UvdGFyYmFsbHMvcmluZ18yMDE3MDMxNi4xLjA2YTNmMGIudGFyLmd6IikKCSAgKHNoYTI1 NgoJICAgKGJhc2UzMgoJICAgICIxbnFwcWwzMzQzZDdpY2pmYnpsd2ttOGFpNWhyeDU0eDAzdjcy Nmc1ZDZjMjRpeGx6ZHJiIikpKSkpCiAgICAocGFja2FnZQogICAgIChuYW1lICJwanByb2plY3Qi KQogICAgICh2ZXJzaW9uICIyLjUuNSIpCiAgICAgKHNvdXJjZQogICAgICAob3JpZ2luCiAgICAg ICAobWV0aG9kIHVybC1mZXRjaCkKICAgICAgICh1cmkgKHN0cmluZy1hcHBlbmQKCSAgICAgImh0 dHA6Ly93d3cucGpzaXAub3JnL3JlbGVhc2UvIjsKCSAgICAgdmVyc2lvbiAiLyIgbmFtZSAiLSIg dmVyc2lvbiAiLnRhci5iejIiKSkKICAgICAgIChtb2R1bGVzICcoKGd1aXggYnVpbGQgdXRpbHMp KSkKICAgICAgIChzbmlwcGV0CgknKGJlZ2luCgkgICAobGV0ICgodGhpcmQtcGFydHktZGlyZWN0 b3JpZXMKCQkgIChsaXN0ICJCYXNlQ2xhc3NlcyIgImJkc291bmQiICJiaW4iICJnNzIyMSIgImdz bSIKCQkJImlsYmMiICJsaWIiICJtaWxlbmFnZSIgIm1wMyIgInNwZWV4IiAic3J0cCIKCQkJInJl c2FtcGxlIgoJCQk7OyBLZWVwIG9ubHkgcmVzYW1wbGUsIGJ1aWxkIGFuZCBSRUFETUUudHh0LgoJ CQkiYnVpbGQvYmFzZWNsYXNzZXMiICJidWlsZC9nNzIyMSIgImJ1aWxkL2dzbSIKCQkJImJ1aWxk L2lsYmMiICJidWlsZC9taWxlbmFnZSIgImJ1aWxkL3NhbXBsZXJhdGUiCgkJCSJidWlsZC9zcGVl eCIgImJ1aWxkL3NydHAiCgkJCSJidWlsZC9yZXNhbXBsZSIgImJ1aWxkL3l1diIpKSkKCSAgICAg OzsgS2VlcCBvbmx5IE1ha2VmaWxlcyByZWxhdGVkIHRvIHJlc2FtcGxlLgoJICAgICAoZm9yLWVh Y2ggKGxhbWJkYSAoZmlsZSkKCQkJIChkZWxldGUtZmlsZS1yZWN1cnNpdmVseQoJCQkgIChzdHJp bmctYXBwZW5kICJ0aGlyZF9wYXJ0eS8iIGZpbGUpKSkKCQkgICAgICAgdGhpcmQtcGFydHktZGly ZWN0b3JpZXMpCgkgICAgICN0KQoJICAgKGxldCAoKHRoaXJkLXBhcnR5LWRpcnMKCQkgIChsaXN0 ICJnc20iICJpbGJjIiAic3BlZXgiICJnNzIyMSIgInNydHAiCgkJCSJwb3J0YXVkaW8iICJyZXNh bXBsZSIpKSkKCSAgICAgKGZvci1lYWNoCgkgICAgICAobGFtYmRhIChkaXJzKQoJCShzdWJzdGl0 dXRlKiAidGhpcmRfcGFydHkvYnVpbGQvb3MtbGludXgubWFrIgoJCQkgICAgICgoKHN0cmluZy1h cHBlbmQgIkRJUlMgKz0gIiBkaXJzKSkgIiIpKSkKCSAgICAgIHRoaXJkLXBhcnR5LWRpcnMpKSkp CiAgICAgICAoc2hhMjU2CgkoYmFzZTMyCgkgIjF3cThscGZjZDRkZnJibDdiZ3kyeXpncDNsZGp6 cTU0MzBmcWtoY3FhZDB4ZnJ4ajBmZGIiKSkpKQogICAgIChidWlsZC1zeXN0ZW0gZ251LWJ1aWxk LXN5c3RlbSkKICAgICAoaW5wdXRzCiAgICAgIGAoKCJwb3J0YXVkaW8iICxwb3J0YXVkaW8pKSkK ICAgICAocHJvcGFnYXRlZC1pbnB1dHMKICAgICAgOzsgVGhlc2UgcGFja2FnZXMgYXJlIHJlZmVy ZW5jZWQgaW4gdGhlIExpYnMgZmllbGQgb2YgdGhlIHBrZy1jb25maWcKICAgICAgOzsgZmlsZSB0 aGF0IHdpbGwgYmUgaW5zdGFsbGVkIGJ5IHBqcHJvamVjdC4KICAgICAgYCgoInNwZWV4IiAsc3Bl ZXgpCgkoImxpYnNydHAiICxsaWJzcnRwKQoJKCJnbnV0bHMiICxnbnV0bHMpCgkoInV0aWwtbGlu dXgiICx1dGlsLWxpbnV4KSkpCiAgICAgKG5hdGl2ZS1pbnB1dHMKICAgICAgYCgoInNhdm9pci1m YWlyZS1saW51eC1wYXRjaGVzIiAsc2F2b2lyLWZhaXJlLWxpbnV4LXBhdGNoZXMpCgkoImF1dG9j b25mIiAsYXV0b2NvbmYpCgkoImF1dG9tYWtlIiAsYXV0b21ha2UpCgkoInBrZy1jb25maWciICxw a2ctY29uZmlnKQoJKCJsaWJ0b29sIiAsbGlidG9vbCkpKQogICAgIChhcmd1bWVudHMKICAgICAg YCgjOnRlc3RzPyAjZiA7IEZJWE1FIG1ha2U6IE5vIHJ1bGUgdG8gbWFrZSB0YXJnZXQKCQkgICAg OyAncGpsaWItdGVzdC11bmtub3duLVtzb21ldGhpbmddLWdudScuCgk7OyAjOnRlc3QtdGFyZ2V0 ICJzZWxmdGVzdCIKCSM6Y29uZmlndXJlLWZsYWdzCgk7OyBUaGUgZGlzYWJsZWQgZmVhdHVyZXMg YXJlIG5vdCB1c2VkIGJ5IGxpYnJpbmcuICBDb21lcyBmcm9tCgk7OyAicmluZy1wcm9qZWN0L2Rh ZW1vbi9jb250cmliL3NyYy9wanByb2plY3QvcnVsZXMubWFrIi4KCTs7IE5PVEUgVGhpcyBkb2Vz bid0IHNlZW0gcmlnaHQsIG90aGVyIHBhY2thZ2VzIG1pZ2h0IHdhbnQKCTs7IHNvbWUgb2YgdGhl c2UuIFdlIG11c3QgdGFsayB0byBSaW5nIHByb2plY3QgYW5kIGFzayB3aHkgd2UKCTs7IG5lZWQg dGhpbmdzIHRvIGJlIGJ1aWx0IHRoaXMgd2F5LiBPbmUgd2F5IG91dCBvZiB0aGlzIHdvdWxkCgk7 OyBiZSB0byB0ZWxsIGl0IHRvIHVzZSBleHRlcm5hbCB0aGluZ3MgaW5zdGVhZCBvZiBkaXNhYmxp bmcuCgkobGlzdCAiLS1lbmFibGUtZXh0LXNvdW5kIgoJICAgICAgIi0tZW5hYmxlLXNzbD1nbnV0 bHMiCgkgICAgICAiLS1kaXNhYmxlLW9zcyIKCSAgICAgICItLWRpc2FibGUtc291bmQiCgkgICAg ICAiLS1kaXNhYmxlLXZpZGVvIgoJICAgICAgIi0tZGlzYWJsZS1zcGVleC1hZWMiCgkgICAgICAi LS1kaXNhYmxlLWc3MTEtY29kZWMiCgkgICAgICAiLS1kaXNhYmxlLWwxNi1jb2RlYyIKCSAgICAg ICItLWRpc2FibGUtZ3NtLWNvZGVjIgoJICAgICAgIi0tZGlzYWJsZS1nNzIyLWNvZGVjIgoJICAg ICAgIi0tZGlzYWJsZS1nNzIyMS1jb2RlYyIKCSAgICAgICItLWRpc2FibGUtc3BlZXgtY29kZWMi CgkgICAgICAiLS1kaXNhYmxlLWlsYmMtY29kZWMiCgkgICAgICAiLS1kaXNhYmxlLW9wZW5jb3Jl LWFtciIKCSAgICAgICItLWRpc2FibGUtc2lsayIKCSAgICAgICItLWRpc2FibGUtc2RsIgoJICAg ICAgIi0tZGlzYWJsZS1mZm1wZWciCgkgICAgICAiLS1kaXNhYmxlLXY0bDIiCgkgICAgICAiLS1k aXNhYmxlLW9wZW5oMjY0IgoJICAgICAgIi0tZGlzYWJsZS1yZXNhbXBsZSIKCSAgICAgIDs7IE5v dyBkZXZpYXRpbmcgZnJvbSB0aGUgcnVsZXMubWFrIGZpbGUuCgkgICAgICAiLS13aXRoLWV4dGVy bmFsLXNydHAiCgkgICAgICA7OyBOb3cgYmFjayB0byBmb2xsb3dpbmcgdGhlIHJ1bGVzLm1hayBm aWxlLgoJICAgICAgIkNGTEFHUz0tRFBKX0lDRV9NQVhfQ0FORD0zMiAtRFBKX0lDRV9NQVhfQ0hF Q0tTPTE1MCAtRFBKX0lDRV9DT01QX0JJVFM9MiAtRFBKX0lDRV9NQVhfU1RVTj0zIC1EUEpTSVBf TUFYX1BLVF9MRU49ODAwMCIpCgkjOnBoYXNlcwoJKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBo YXNlcwoJCSAgICAgICAoYWRkLWFmdGVyICd1bnBhY2sgJ2FwcGx5LXBhdGNoZXMKCQkJCSAgKGxh bWJkYSogKCM6a2V5IGlucHV0cyAjOmFsbG93LW90aGVyLWtleXMpCgkJCQkJICAgKGxldCAoKHNh dm9pci1mYWlyZS1saW51eC1wYXRjaGVzLWRpcmVjdG9yeSAiU2F2b2lyLWZhaXJlIExpbnV4IHBh dGNoZXMiKQoJCQkJCQkgOzsgQ29tZXMgZnJvbQoJCQkJCQkgOzsgInJpbmctcHJvamVjdC9kYWVt b24vY29udHJpYi9zcmMvcGpwcm9qZWN0L3J1bGVzLm1hayIuCgkJCQkJCSA7OyBXZSBhbHJlYWR5 IGFza2VkCgkJCQkJCSA7OyBSaW5nIHRvIGNvbnRyaWJ1dGUKCQkJCQkJIDs7IHVwc3RyZWEsIHBs ZWFzZQoJCQkJCQkgOzsgc2VlOgoJCQkJCQkgOzsgaHR0cHM6Ly90dWxlYXAucmluZy5jeC9wbHVn aW5zL3RyYWNrZXIvP2FpZD0xNTQ2LgoJCQkJCQkgOzsgTk9URSBUaGVzZSBhbW91bnQKCQkJCQkJ IDs7IGZvciBodWdlIGNoYW5nZXMKCQkJCQkJIDs7IGluIHBqcHJvamVjdC4KCQkJCQkJIDs7IFBh cnRpY3VsYXJseSwgdGhleQoJCQkJCQkgOzsgYWRkIHN1cHBvcnQgZm9yCgkJCQkJCSA7OyBHbnVU TFMsIHdoaWNoIGlzCgkJCQkJCSA7OyBjb21wbGV0ZWx5IGxhY2tpbmcKCQkJCQkJIDs7IGluIHBq cHJvamVjdAoJCQkJCQkgOzsgMi41LjUuCgkJCQkJCSAoc2F2b2lyLWZhaXJlLWxpbnV4LXBhdGNo ZXMKCQkJCQkJICAnKCJlbmRpYW5uZXNzIgoJCQkJCQkgICAgImdudXRscyIKCQkJCQkJICAgICJu b3Rlc3RzYXBwcyIKCQkJCQkJICAgICJpcHY2IgoJCQkJCQkgICAgImljZV9jb25maWciCgkJCQkJ CSAgICAibXVsdGlwbGVfbGlzdGVuZXJzIgoJCQkJCQkgICAgInBqX2ljZV9zZXNzIgoJCQkJCQkg ICAgImZpeF90dXJuX2ZhbGxiYWNrIgoJCQkJCQkgICAgImZpeF9pb3F1ZXVlX2lwdjZfc2VuZHRv IgoJCQkJCQkgICAgImFkZF9kdGxzX3RyYW5zcG9ydCIpKSkKCQkJCQkgICAgIChta2RpciBzYXZv aXItZmFpcmUtbGludXgtcGF0Y2hlcy1kaXJlY3RvcnkpCgkJCQkJICAgICAoc3lzdGVtKiAidGFy IiAiLXh2ZiIgKGFzc29jLXJlZiBpbnB1dHMgInNhdm9pci1mYWlyZS1saW51eC1wYXRjaGVzIikK CQkJCQkJICAgICAgIi1DIiBzYXZvaXItZmFpcmUtbGludXgtcGF0Y2hlcy1kaXJlY3RvcnkgIi0t c3RyaXAtY29tcG9uZW50cz01IiAicmluZy1wcm9qZWN0L2RhZW1vbi9jb250cmliL3NyYy9wanBy b2plY3QiKQoJCQkJCSAgICAgKGZvci1lYWNoCgkJCQkJICAgICAgKGxhbWJkYSAoZmlsZSkKCQkJ CQkJKHplcm8/CgkJCQkJCSAoc3lzdGVtKiAicGF0Y2giICItLWZvcmNlIiAiLXAxIiAiLWkiCgkJ CQkJCQkgIChzdHJpbmctYXBwZW5kIHNhdm9pci1mYWlyZS1saW51eC1wYXRjaGVzLWRpcmVjdG9y eSAiLyIKCQkJCQkJCQkJIGZpbGUgIi5wYXRjaCIpKSkpCgkJCQkJICAgICAgc2F2b2lyLWZhaXJl LWxpbnV4LXBhdGNoZXMpKSkpCgkJICAgICAgIChhZGQtYmVmb3JlICdidWlsZCAnYnVpbGQtZGVw CgkJCQkgICAobGFtYmRhIF8gKHplcm8/IChzeXN0ZW0qICJtYWtlIiAiZGVwIikpKSkKCQkgICAg ICAgKGFkZC1iZWZvcmUgJ3BhdGNoLXNvdXJjZS1zaGViYW5ncyAnYXV0b2NvbmYKCQkJCSAgIChs YW1iZGEgXwoJCQkJICAgICAoemVybz8KCQkJCSAgICAgIChzeXN0ZW0qICJhdXRvY29uZiIgIi12 IiAiLWYiICItaSIgIi1vIgoJCQkJCSAgICAgICAiYWNvbmZpZ3VyZSIgImFjb25maWd1cmUuYWMi KSkpKQoJCSAgICAgICAoYWRkLWJlZm9yZSAnYXV0b2NvbmYgJ2Rpc2FibGUtc29tZS10ZXN0cwoJ CQkJICAgOzsgVGhyZWUgb2YgdGhlIHNpeCB0ZXN0IHByb2dyYW1zIGZhaWwgZHVlIHRvIG1pc3Np bmcgbmV0d29yawoJCQkJICAgOzsgYWNjZXNzLgoJCQkJICAgKGxhbWJkYSBfCgkJCQkgICAgIChz dWJzdGl0dXRlKiAiTWFrZWZpbGUiCgkJCQkJCSAgKCgic2VsZnRlc3Q6IHBqbGliLXRlc3QgcGps aWI7M1ItdXRpbC10ZXN0IHBqbmF0aC10ZXN0IHBqbWVkaWEtdGVzdCBwanNpcC10ZXN0IHBqc3Vh LXRlc3QiKQoJCQkJCQkgICAic2VsZnRlc3Q6IHBqbGliLXRlc3QgcGpsaWItdXRpbC10ZXN0IHBq bWVkaWEtdGVzdCIpKSkpKSkpCQkgICAgICAgCiAgICAgKGhvbWUtcGFnZSAid3d3LnBqc2lwLm9y ZyIpCiAgICAgKHN5bm9wc2lzICJTZXNzaW9uIEluaXRpYXRpb24gUHJvdG9jb2wgKFNJUCkgc3Rh Y2siKQogICAgIChkZXNjcmlwdGlvbiAiUEpQcm9qZWN0IHByb3ZpZGVzIGFuIGltcGxlbWVudGF0 aW9uIG9mIHRoZSBTZXNzaW9uCkluaXRpYXRpb24gUHJvdG9jb2wgKFNJUCkgYW5kIGEgbXVsdGlt ZWRpYSBmcmFtZXdvcmsuIFRoaXMgcGFja2FnZSBpcyBpbnRlbmRlZApmb3IgdXNlIHdpdGggbGli cmluZy4gIFRoZXJlIGFyZSBzZXZlcmFsIGN1c3RvbSBwYXRjaGVzLCBtb3N0IG5vdGFibHkgdGhl IHVzZQpvZiBnbnV0bHMgaW5zdGVhZCBvZiBvcGVuc3NsIGZvciBlbmNyeXB0aW9uLiIpCiAgICAg OzsgV2Ugc2hvdWxkIG1ha2UgdGhlIGxpY2Vuc2Ugb25seSBvbmUsIHRoZSBvbmUgd2hpY2ggaXMK ICAgICA7OyBlZmZlY3RpdmUgYXMgcmVzdWx0IG9mIGFwcGx5aW5nIHNhdm9pci1mYWlyZS1saW51 eC1wYXRjaGVzLAogICAgIDs7IGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBzYXkgdGhhdCB0aGUg d2hvbGUgcGFja2FnZSBoYXMgdHdvCiAgICAgOzsgbGljZW5zZXMgZm9yIHdoaWNoIHRoZSB1c2Vy IGNhbiAiY2hvb3NlIiBmcm9tIChkdWFsIGxpY2Vuc2luZykuCiAgICAgKGxpY2Vuc2UgJyhsaWNl bnNlOmdwbDIrIDsgTkVXIHBqcHJvamVjdCBpcyB1bmRlciBHTlUgR1BMIDIrLCBub3QKCQkJICAg ICAgOyBHTlUgR1BMIDIgKG9ubHkpLgoJCWxpY2Vuc2U6Z3BsMykpKSkpIDsgTGFzdCB0aW1lIHdl IGNoZWNrZWQsIHRoZQoJCQkJICA7IFNhdm9pci1mYWlyZSBMaW51eCBwYXRjaGVzIHdlcmUKCQkJ CSAgOyB1bmRlciBHTlUgR1BMIDMgKG9ubHkpLiBJcyB0aGlzCgkJCQkgIDsgc3RpbGwgdHJ1ZT8K Cjs7OyBGcm9tIDxodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvZ3VpeC1kZXZlbC8y MDE2LTA5L21zZzAxOTM3Lmh0bWw+LgooZGVmaW5lLXB1YmxpYyBhcmdvbjIKICAocGFja2FnZQog ICAobmFtZSAiYXJnb24yIikKICAgKHZlcnNpb24gIjIwMTYxMDI5IikKICAgKHNvdXJjZQogICAg KG9yaWdpbgogICAgIChtZXRob2QgdXJsLWZldGNoKQogICAgICh1cmkKICAgICAgKHN0cmluZy1h cHBlbmQgImh0dHBzOi8vZ2l0aHViLmNvbS9QLUgtQy9waGMtd2lubmVyLWFyZ29uMi9hcmNoaXZl LyIKCQkgICAgIHZlcnNpb24gIi50YXIuZ3oiKSkKICAgICAoZmlsZS1uYW1lIChzdHJpbmctYXBw ZW5kIG5hbWUgIi0iIHZlcnNpb24gIi50YXIuZ3oiKSkKICAgICAoc25pcHBldAogICAgICA7OyBB cyB3ZSBhbHJlYWR5IGtub3csIHRoaXMgaXMgcHJvYmFibHkgYmV0dGVyIHRvIGJlIGFscmVhZHkK ICAgICAgOzsgaW5jbHVkZWQgaW4gYXJnb24yLgogICAgICAnKGxldCAoKHAgKG9wZW4tZmlsZSAi YXJnb24yLnBjIiAidyIpKSkKCSAoYmVnaW4KCSAgIChkaXNwbGF5CgkgICAgKHN0cmluZy1hcHBl bmQgInByZWZpeD0vdXNyL2xvY2FsXG4iCgkJCSAgICJleGVjX3ByZWZpeD0ke3ByZWZpeH1cbiIK CQkJICAgImluY2x1ZGVkaXI9JHtwcmVmaXh9L2luY2x1ZGVcbiIKCQkJICAgImxpYmRpcj0ke3By ZWZpeH0vbGliXG5cbiIKCQkJICAgIk5hbWU6IEFyZ29uMlxuIgoJCQkgICAiRGVzY3JpcHRpb246 ICIKCQkJICAgIlRoZSBBcmdvbjIgcGFzc3dvcmQgaGFzaGluZyBhbGdvcml0aG1cbiIKCQkJICAg IlZlcnNpb246IDEuMC4wXG4iCgkJCSAgICJDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfS9cbiIKCQkJ ICAgIkxpYnM6IC1MJHtsaWJkaXJ9IC1sYXJnb24yXG4iKSBwKQoJICAgKGNsb3NlLW91dHB1dC1w b3J0IHApKSkpCiAgICAgKHNoYTI1NgogICAgICAoYmFzZTMyCiAgICAgICAiMXJ5bWlrYnlzYXNk YWRtMzI1ang2OWkwcTE5ZDlzcnFrbnk2OWp3bWhzd2xpZHI0ajA3eSIpKSkpCiAgIChidWlsZC1z eXN0ZW0gZ251LWJ1aWxkLXN5c3RlbSkKICAgKGFyZ3VtZW50cwogICAgYCgjOnRlc3QtdGFyZ2V0 ICJ0ZXN0IgogICAgICAjOm1ha2UtZmxhZ3MgJygiQ0M9Z2NjIikKICAgICAgIzpwaGFzZXMKICAg ICAgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwoJCSAgICAgKGRlbGV0ZSAnY29uZmln dXJlKQoJCSAgICAgKGFkZC1hZnRlciAndW5wYWNrICdmaXgtcGtnLWNvbmZpZwoJCQkJKGxhbWJk YSBfCgkJCQkgIChzdWJzdGl0dXRlKiAiYXJnb24yLnBjIgoJCQkJCSAgICAgICAoKCIvdXNyL2xv Y2FsIikKCQkJCQkJKGFzc29jLXJlZiAlb3V0cHV0cyAib3V0IikpKSkpCgkJICAgICAocmVwbGFj ZSAnaW5zdGFsbAoJCQkgICAgICAobGFtYmRhIF8KCQkJCShsZXQgKChvdXQgKGFzc29jLXJlZiAl b3V0cHV0cyAib3V0IikpKQoJCQkJICAoaW5zdGFsbC1maWxlICJhcmdvbjIiIChzdHJpbmctYXBw ZW5kIG91dCAiL2JpbiIpKQoJCQkJICAoaW5zdGFsbC1maWxlICJsaWJhcmdvbjIuYSIgKHN0cmlu Zy1hcHBlbmQgb3V0ICIvbGliIikpCgkJCQkgIChpbnN0YWxsLWZpbGUgImxpYmFyZ29uMi5zbyIg KHN0cmluZy1hcHBlbmQgb3V0ICIvbGliIikpCgkJCQkgIChpbnN0YWxsLWZpbGUgImFyZ29uMi5w YyIKCQkJCQkJKHN0cmluZy1hcHBlbmQgb3V0ICIvbGliL3BrZ2NvbmZpZyIpKQoJCQkJICAoY29w eS1yZWN1cnNpdmVseSAiaW5jbHVkZSIKCQkJCQkJICAgIChzdHJpbmctYXBwZW5kIG91dCAiL2lu Y2x1ZGUiKSkKCQkJCSAgKHN5bWxpbmsgKHN0cmluZy1hcHBlbmQgb3V0ICIvbGliL2xpYmFyZ29u Mi5zbyIpCgkJCQkJICAgKHN0cmluZy1hcHBlbmQgb3V0ICIvbGliL2xpYmFyZ29uMi5zby4wIikp KSkpKSkpCiAgIChob21lLXBhZ2UgImh0dHBzOi8vd3d3LmFyZ29uMi5jb20vIikKICAgKHN5bm9w c2lzICJQYXNzd29yZCBoYXNoaW5nIGxpYnJhcnkiKQogICAoZGVzY3JpcHRpb24gIkFyZ29uMiBw cm92aWRlcyBhIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uIHRoYXQgd2FzIGRlY2xhcmVkCndpbm5l ciBvZiB0aGUgMjAxNSBQYXNzd29yZCBIYXNoaW5nIENvbXBldGl0aW9uLiIpCiAgIChsaWNlbnNl IGxpY2Vuc2U6Y2MwKSkpCgooZGVmaW5lLXB1YmxpYyBtc2dwYWNrLWMrKy0xMQogIChwYWNrYWdl IChpbmhlcml0IG1zZ3BhY2spCgkgICAobmFtZSAibXNncGFjay1jKystMTEiKQoJICAgKGFyZ3Vt ZW50cwoJICAgIChzdWJzdGl0dXRlLWtleXdvcmQtYXJndW1lbnRzIChwYWNrYWdlLWFyZ3VtZW50 cyBtc2dwYWNrKQoJCQkJCSAgKCgjOm1ha2UtZmxhZ3MgbXNncGFjay1tYWtlLWZsYWdzKQoJCQkJ CSAgIGAoYXBwZW5kICxtc2dwYWNrLW1ha2UtZmxhZ3MgJygiLURNU0dQQUNLX0NYWDExPU9OIikp KSkpKSkKCjs7OyBCYXNlZCBvbgo7OzsgPGh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRt bC9ndWl4LWRldmVsLzIwMTYtMDkvbXNnMDE5MzguaHRtbD4uCihkZWZpbmUtcHVibGljIG9wZW5k aHQKICAocGFja2FnZQogICAobmFtZSAib3BlbmRodCIpCiAgICh2ZXJzaW9uICIxLjMuMCIpCiAg IChzb3VyY2UKICAgIChvcmlnaW4KICAgICAobWV0aG9kIHVybC1mZXRjaCkKICAgICAodXJpCiAg ICAgIChzdHJpbmctYXBwZW5kCiAgICAgICAiaHR0cHM6Ly9naXRodWIuY29tL3Nhdm9pcmZhaXJl bGludXgvIiBuYW1lCiAgICAgICAiL2FyY2hpdmUvIiB2ZXJzaW9uICIudGFyLmd6IikpCiAgICAg KGZpbGUtbmFtZSAoc3RyaW5nLWFwcGVuZCBuYW1lICItIiB2ZXJzaW9uICIudGFyLmd6IikpCiAg ICAgKG1vZHVsZXMgJygoZ3VpeCBidWlsZCB1dGlscykpKQogICAgIChzbmlwcGV0CiAgICAgICco YmVnaW4KCSAoZGVsZXRlLWZpbGUtcmVjdXJzaXZlbHkgInNyYy9hcmdvbjIiKQoJIChzdWJzdGl0 dXRlKiAic3JjL01ha2VmaWxlLmFtIgoJCSAgICAgICgoIi4vYXJnb24yL2xpYmFyZ29uMi5sYSIp ICIiKQoJCSAgICAgICgoIlNVQkRJUlMgPSBhcmdvbjIiKSAiIikKCQkgICAgICAoKCJsaWJvcGVu ZGh0X2xhX0xERkxBR1MgPSBATERGTEFHU0AiIGFsbCkKCQkgICAgICAgKHN0cmluZy1hcHBlbmQg YWxsICIgQGFyZ29uMl9MSUJTQCIpKSkKCSAoc3Vic3RpdHV0ZSogInNyYy9jcnlwdG8uY3BwIgoJ CSAgICAgICgoImFyZ29uMi9hcmdvbjIuaCIpICJhcmdvbjIuaCIpKQoJIChzdWJzdGl0dXRlKiAi Y29uZmlndXJlLmFjIgoJCSAgICAgICgoInNyYy9hcmdvbjIvTWFrZWZpbGUiKSAiIikKCQkgICAg ICAoKCJQS0dfQ0hFQ0tfTU9EVUxFU1xcKFxcW1tHZ11bTm5dW1V1XVtUdF1bTGxdW1NzXVxcXSxb WzpibGFuazpdXStcXFtnbnV0bHMuKiQiIGFsbCkKCQkgICAgICAgKHN0cmluZy1hcHBlbmQgYWxs ICJQS0dfQ0hFQ0tfTU9EVUxFUyhbYXJnb24yXSwgW2FyZ29uMl0pXG4iKSkpCgkgKHN1YnN0aXR1 dGUqICJvcGVuZGh0LnBjLmluIgoJCSAgICAgICgoIkxpYnM6IC1MXFwkXFx7bGliZGlyXFx9IC1s b3BlbmRodCIgYWxsKQoJCSAgICAgICAoc3RyaW5nLWFwcGVuZCBhbGwgIlxuUmVxdWlyZXM6IGFy Z29uMiIpKSkpKQogICAgIChzaGEyNTYKICAgICAgKGJhc2UzMgogICAgICAgIjFncXN4amZ2N2w1 bTI1enhzeXh5cDcwYWJjZjNidnozaXFrdjVhYTFsajZmenoxcmxpd3MiKSkpKQogICAoYnVpbGQt c3lzdGVtIGdudS1idWlsZC1zeXN0ZW0pCiAgIChpbnB1dHMKICAgIGAoKCJnbnV0bHMiICxnbnV0 bHMpCiAgICAgICgibmV0dGxlIiAsbmV0dGxlKQogICAgICAoInJlYWRsaW5lIiAscmVhZGxpbmUp KSkKICAgKHByb3BhZ2F0ZWQtaW5wdXRzCiAgICBgKCgiYXJnb24yIiAsYXJnb24yKQogICAgICAo Im1zZ3BhY2siICxtc2dwYWNrKSkpIDsgaW5jbHVkZWQgaW4gc2V2ZXJhbCBpbnN0YWxsZWQgaGVh ZGVycwogICAobmF0aXZlLWlucHV0cwogICAgYCgoImF1dG9jb25mIiAsYXV0b2NvbmYpCiAgICAg ICgicGtnLWNvbmZpZyIgLHBrZy1jb25maWcpCiAgICAgICgiYXV0b21ha2UiICxhdXRvbWFrZSkK ICAgICAgKCJsaWJ0b29sIiAsbGlidG9vbCkpKQogICAoYXJndW1lbnRzCiAgICBgKDs7ICM6Y29u ZmlndXJlLWZsYWdzICcoIi0tZGlzYWJsZS10b29scyIKICAgICAgOzsgICAgICAgICAgICAgICAg ICAgICAiLS1kaXNhYmxlLXB5dGhvbiIpCiAgICAgICM6cGhhc2VzIChtb2RpZnktcGhhc2VzICVz dGFuZGFyZC1waGFzZXMKCQkJICAgICAgKGFkZC1iZWZvcmUgJ2NvbmZpZ3VyZSAnYXV0b2NvbmYK CQkJCQkgIChsYW1iZGEgXwoJCQkJCSAgICAoemVybz8gKHN5c3RlbSogImF1dG9yZWNvbmYiICIt dmZpIikpKSkpKSkKICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL3Nhdm9pcmZhaXJl bGludXgvb3BlbmRodC8iKQogICAoc3lub3BzaXMgIkRpc3RyaWJ1dGVkIEhhc2ggVGFibGUgKERI VCkgbGlicmFyeSIpCiAgIChkZXNjcmlwdGlvbiAiT3BlbkRIVCBpcyBhIERpc3RyaWJ1dGVkIEhh c2ggVGFibGUgKERIVCkgbGlicmFyeS4gIEl0IG1heQpiZSB1c2VkIHRvIG1hbmFnZSBwZWVyLXRv LXBlZXIgbmV0d29yayBjb25uZWN0aW9ucyBhcyBuZWVkZWQgZm9yIHJlYWwgdGltZQpjb21tdW5p Y2F0aW9uLiIpCiAgIChsaWNlbnNlIGxpY2Vuc2U6Z3BsMyspKSkgOyBORVcgSXQncyB1bmRlciBH TlUgR1BMMysuCgooZGVmaW5lLXB1YmxpYyBvcGVuZGh0LXdpdGgtbXNncGFjay1jKystMTEKICAo cGFja2FnZSAoaW5oZXJpdCBvcGVuZGh0KQoJICAgKG5hbWUgIm9wZW5kaHQtd2l0aC1tc2dwYWNr LWMrKy0xMSIpCgkgICAocHJvcGFnYXRlZC1pbnB1dHMKCSAgICBgKCgibXNncGFjay1jKystMTEi ICxtc2dwYWNrLWMrKy0xMSkKCSAgICAgICxAKGFsaXN0LWRlbGV0ZQoJCSAibXNncGFjayIKCQkg KHBhY2thZ2UtcHJvcGFnYXRlZC1pbnB1dHMgb3BlbmRodCkpKSkpKQoKKGRlZmluZS1wdWJsaWMg c2F2b2lyLWZhaXJlLWxpbnV4LWFzaW8KICAobGV0ICgoc2F2b2lyLWZhaXJlLWxpbnV4LXBhdGNo ZXMKCSAob3JpZ2luCgkgIChtZXRob2QgdXJsLWZldGNoKQoJICAodXJpICJodHRwOi8vZGwucmlu Zy5jeC9yaW5nLXJlbGVhc2UvdGFyYmFsbHMvcmluZ18yMDE3MDMxNi4xLjA2YTNmMGIudGFyLmd6 IikKCSAgKHNoYTI1NgoJICAgKGJhc2UzMgoJICAgICIxbnFwcWwzMzQzZDdpY2pmYnpsd2ttOGFp NWhyeDU0eDAzdjcyNmc1ZDZjMjRpeGx6ZHJiIikpKSkpCiAgICAocGFja2FnZQogICAgIChuYW1l ICJhc2lvIikKICAgICAodmVyc2lvbiAiMjhkOWI4ZCIpCiAgICAgKHNvdXJjZQogICAgICAob3Jp Z2luCiAgICAgICAobWV0aG9kIHVybC1mZXRjaCkKICAgICAgICh1cmkgImh0dHBzOi8vZ2l0aHVi LmNvbS9jaHJpc2tvaGxob2ZmL2FzaW8vYXJjaGl2ZS8yOGQ5YjhkNmRmNzA4MDI0YWY1MjI3YzU1 MTY3M2ZkYjI1MTlmNWJmLnRhci5neiIpCiAgICAgICAoZmlsZS1uYW1lIChzdHJpbmctYXBwZW5k IG5hbWUgIi0iIHZlcnNpb24gIi50YXIuZ3oiKSkKICAgICAgIChzaGEyNTYKCShiYXNlMzIgIjA3 d3A1NnZpYnFwMXFwOGNhMWFoYmhzOG1kN2syMmltN25tbHgwaGFxeGRnc3pwMXpjdmIiKSkpKQog ICAgIChidWlsZC1zeXN0ZW0gZ251LWJ1aWxkLXN5c3RlbSkKICAgICAoaW5wdXRzCiAgICAgIGAo KCJib29zdCIgLGJvb3N0KSkpCiAgICAgKG5hdGl2ZS1pbnB1dHMKICAgICAgYCgoImF1dG9jb25m IiAsYXV0b2NvbmYpCgkoImF1dG9tYWtlIiAsYXV0b21ha2UpCgkoInNhdm9pci1mYWlyZS1saW51 eC1wYXRjaGVzIiAsc2F2b2lyLWZhaXJlLWxpbnV4LXBhdGNoZXMpKSkKICAgICAoYXJndW1lbnRz CiAgICAgIDs7IENvbWVzIGZyb20gInJpbmctcHJvamVjdC9kYWVtb24vY29udHJpYi9zcmMvYXNp by9ydWxlcy5tYWsiLgogICAgICA7OyBXZSBtdXN0IHRhbGsgdG8gUmluZyB0byBrbm93IGlmIGRp c2FibGluZyBBc2lvIGludGVncmF0aW9uCiAgICAgIDs7IHdpdGggQm9vc3QgaXMgYSByZXF1aXJl bWVudC4KICAgICAgYCg7OyAjOmNvbmZpZ3VyZS1mbGFncyAnKCItLXdpdGhvdXQtYm9vc3QiKQoJ Izpjb25maWd1cmUtZmxhZ3MgJygoc3RyaW5nLWFwcGVuZCAiLS13aXRoLWJvb3N0PVwiIgoJCQkJ CSAgIChhc3NvYy1yZWYgaW5wdXRzICJib29zdCIpCgkJCQkJICAgIlwiIikpCgkjOnBoYXNlcwoJ KG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwoJCSAgICAgICAoYWRkLWFmdGVyICd1bnBh Y2sgJ2NoYW5nZS1kaXJlY3RvcnktYW5kLWFwcGx5LXBhdGNoZXMKCQkJCSAgKGxhbWJkYSogKCM6 a2V5IGlucHV0cyAjOmFsbG93LW90aGVyLWtleXMpCgkJCQkJICAgKGxldCAoKHNhdm9pci1mYWly ZS1saW51eC1wYXRjaGVzLWRpcmVjdG9yeSAiU2F2b2lyLWZhaXJlIExpbnV4IHBhdGNoZXMiKQoJ CQkJCQkgOzsgV2UgYXNrZWQgUmluZyB0bwoJCQkJCQkgOzsgc2VuZCBwYXRjaGVzIHRvCgkJCQkJ CSA7OyB0aGVpciB1cHN0cmVhbSwKCQkJCQkJIDs7IHN0YXR1cyBjYW4gYmUgc2VlbgoJCQkJCQkg OzsgYXQ6CgkJCQkJCSA7OyBodHRwczovL3R1bGVhcC5yaW5nLmN4L3BsdWdpbnMvdHJhY2tlci8/ YWlkPTE1NDYuCgkJCQkJCSA7OyBUaGVzZSBwYXRjaGVzIGp1c3QKCQkJCQkJIDs7IGRpc2FibGUg dGVzdHMgYW5kCgkJCQkJCSA7OyBleGFtcGxlcy4gIFdlCgkJCQkJCSA7OyBzaG91bGQgY29udmlu Y2UKCQkJCQkJIDs7IFJpbmcgdG8gc2VuZCB0aGVzZQoJCQkJCQkgOzsgcGF0Y2hlcyB0byB0aGVp cgoJCQkJCQkgOzsgdXBzdHJlYW0sIGFzaW8uCgkJCQkJCSAoc2F2b2lyLWZhaXJlLWxpbnV4LXBh dGNoZXMKCQkJCQkJICAnKCJub190ZXN0c19leGFtcGxlcyIpKSkKCQkJCQkgICAgIChjaGRpciAi YXNpbyIpCgkJCQkJICAgICAobWtkaXIgc2F2b2lyLWZhaXJlLWxpbnV4LXBhdGNoZXMtZGlyZWN0 b3J5KQoJCQkJCSAgICAgKHN5c3RlbSogInRhciIgIi14dmYiIChhc3NvYy1yZWYgaW5wdXRzICJz YXZvaXItZmFpcmUtbGludXgtcGF0Y2hlcyIpCgkJCQkJCSAgICAgICItQyIgc2F2b2lyLWZhaXJl LWxpbnV4LXBhdGNoZXMtZGlyZWN0b3J5ICItLXN0cmlwLWNvbXBvbmVudHM9NSIgInJpbmctcHJv amVjdC9kYWVtb24vY29udHJpYi9zcmMvYXNpbyIpCgkJCQkJICAgICAoZm9yLWVhY2gKCQkJCQkg ICAgICAobGFtYmRhIChmaWxlKQoJCQkJCQkoemVybz8KCQkJCQkJIChzeXN0ZW0qICJwYXRjaCIg Ii0tZm9yY2UiICItcDEiICItaSIKCQkJCQkJCSAgKHN0cmluZy1hcHBlbmQgc2F2b2lyLWZhaXJl LWxpbnV4LXBhdGNoZXMtZGlyZWN0b3J5ICIvIgoJCQkJCQkJCQkgZmlsZSAiLnBhdGNoIikpKSkK CQkJCQkgICAgICBzYXZvaXItZmFpcmUtbGludXgtcGF0Y2hlcykpKSkKCQkgICAgICAgKGFkZC1i ZWZvcmUgJ2NvbmZpZ3VyZSAncnVuLWF1dG9nZW4KCQkJCSAgKGxhbWJkYSBfCgkJCQkgICAgKHpl cm8/IChzeXN0ZW0qICIuL2F1dG9nZW4uc2giKSkpKSkpKQogICAgIChzeW5vcHNpcyAiQXN5bmNo cm9ub3VzIFJFU1RmdWwgZnVuY3Rpb25hbGl0eSB0byBDKysxMSBhcHBsaWNhdGlvbnMiKQogICAg IChkZXNjcmlwdGlvbiAiUmVzdGJlZCBpcyBhIGNvbXByZWhlbnNpdmUgYW5kIGNvbnNpc3RlbnQg cHJvZ3JhbW1pbmcKbW9kZWwgZm9yIGJ1aWxkaW5nIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUg c2VhbWxlc3MgYW5kIHNlY3VyZQpjb21tdW5pY2F0aW9uIG92ZXIgSFRUUC4iKQogICAgIChob21l LXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS9Db3J2dXNvZnQvcmVzdGJlZCIpCiAgICAgKGxpY2Vu c2UgbGljZW5zZTpib29zdDEuMCkpKSkKCihkZWZpbmUtcHVibGljIHNhdm9pci1mYWlyZS1saW51 eC1yZXN0YmVkCiAgKGxldCAoKHNhdm9pci1mYWlyZS1saW51eC1wYXRjaGVzCgkgKG9yaWdpbgoJ ICAobWV0aG9kIHVybC1mZXRjaCkKCSAgKHVyaSAiaHR0cDovL2RsLnJpbmcuY3gvcmluZy1yZWxl YXNlL3RhcmJhbGxzL3JpbmdfMjAxNzAzMTYuMS4wNmEzZjBiLnRhci5neiIpCgkgIChzaGEyNTYK CSAgIChiYXNlMzIKCSAgICAiMW5xcHFsMzM0M2Q3aWNqZmJ6bHdrbThhaTVocng1NHgwM3Y3MjZn NWQ2YzI0aXhsemRyYiIpKSkpKQogICAgKHBhY2thZ2UKICAgICAobmFtZSAicmVzdGJlZCIpCiAg ICAgKHZlcnNpb24gIjM0MTg3NTAiKQogICAgIChzb3VyY2UKICAgICAgKG9yaWdpbgogICAgICAg KG1ldGhvZCB1cmwtZmV0Y2gpCiAgICAgICAodXJpICJodHRwczovL2dpdGh1Yi5jb20vQ29ydnVz b2Z0L3Jlc3RiZWQvYXJjaGl2ZS8zNDE4NzUwMjY0MjE0NGFiOWY3NDlhYjQwZjVjZGJkOGNiMTdh NTRhLnRhci5neiIpCiAgICAgICAoZmlsZS1uYW1lIChzdHJpbmctYXBwZW5kIG5hbWUgIi0iIHZl cnNpb24gIi50YXIuZ3oiKSkKICAgICAgIChzaGEyNTYKCShiYXNlMzIgIjFjOTZ3ODN2MGl6NjFi cWQwc2FmemE2OThnODYyMmRoc3JyZjAxYWlnaWJqNGNtc2JqcGgiKSkpKQogICAgIChidWlsZC1z eXN0ZW0gY21ha2UtYnVpbGQtc3lzdGVtKQogICAgIChpbnB1dHMKICAgICAgYCgoImFzaW8iICxz YXZvaXItZmFpcmUtbGludXgtYXNpbykKCSgiY2F0Y2giICxjYXRjaC1mcmFtZXdvcmspCgkoImds aWJjIiAsZ2xpYmMpKSkKICAgICAobmF0aXZlLWlucHV0cwogICAgICBgKCgic2F2b2lyLWZhaXJl LWxpbnV4LXBhdGNoZXMiICxzYXZvaXItZmFpcmUtbGludXgtcGF0Y2hlcykpKQogICAgIChhcmd1 bWVudHMKICAgICAgYCgjOnRlc3RzPyAjZgoJOzsgQ29tZXMgZnJvbSAicmluZy1wcm9qZWN0L2Rh ZW1vbi9jb250cmliL3NyYy9yZXN0YmVkL3J1bGVzLm1hayIuCgkjOmNvbmZpZ3VyZS1mbGFncwoJ JygiLURCVUlMRF9URVNUUz1OTyIKCSAgIi1EQlVJTERfRVhBTVBMRVM9Tk8iCgkgICItREJVSUxE X1NTTD1OTyIKCSAgIi1EQlVJTERfU0hBUkVEPU5PIikKCSM6cGhhc2VzCgkobW9kaWZ5LXBoYXNl cyAlc3RhbmRhcmQtcGhhc2VzCgkJICAgICAgIChhZGQtYWZ0ZXIgJ3VucGFjayAnYXBwbHktcGF0 Y2hlcy1hbmQtZml4LXBhdGhzCgkJCQkgIChsYW1iZGEqICgjOmtleSBpbnB1dHMgIzphbGxvdy1v dGhlci1rZXlzKQoJCQkJCSAgIChsZXQgKChzYXZvaXItZmFpcmUtbGludXgtcGF0Y2hlcy1kaXJl Y3RvcnkgIlNhdm9pci1mYWlyZSBMaW51eCBwYXRjaGVzIikKCQkJCQkJIChhc2lvIChhc3NvYy1y ZWYgaW5wdXRzICJhc2lvIikpCgkJCQkJCSAoY2F0Y2ggKGFzc29jLXJlZiBpbnB1dHMgImNhdGNo IikpCgkJCQkJCSAoZ2xpYmMgKGFzc29jLXJlZiBpbnB1dHMgImdsaWJjIikpCgkJCQkJCSA7OyBX ZSBhc2tlZCBSaW5nIHRvCgkJCQkJCSA7OyBzZW5kIHBhdGNoZXMKCQkJCQkJIDs7IHVwc3RyZWFt LCBzdGF0dXMKCQkJCQkJIDs7IGNhbiBiZSBzZWVuIGF0OgoJCQkJCQkgOzsgaHR0cHM6Ly90dWxl YXAucmluZy5jeC9wbHVnaW5zL3RyYWNrZXIvP2FpZD0xNTQ2LgoJCQkJCQkgOzsgVGhlc2UgcGF0 Y2hlcyBkZWFsCgkJCQkJCSA7OyB3aXRoIG1pbm9yIGZpeGVzLgoJCQkJCQkgOzsgV2Ugc2hvdWxk IGNvbnZpbmNlCgkJCQkJCSA7OyBSaW5nIHVwc3RyZWFtIHRvCgkJCQkJCSA7OyBzZW5kIHRoZXNl IHBhdGNoZXMKCQkJCQkJIDs7IHRvIHRoZWlyIHVwc3RyZWFtLAoJCQkJCQkgOzsgcmVzdGJlZC4K CQkJCQkJIChzYXZvaXItZmFpcmUtbGludXgtcGF0Y2hlcwoJCQkJCQkgICcoIkNNYWtlTGlzdHMi CgkJCQkJCSAgICAic3RyYW5kIgoJCQkJCQkgICAgInVyaV9jcHAiKSkpCgkJCQkJICAgICAobWtk aXIgc2F2b2lyLWZhaXJlLWxpbnV4LXBhdGNoZXMtZGlyZWN0b3J5KQoJCQkJCSAgICAgKHN5c3Rl bSogInRhciIgIi14dmYiIChhc3NvYy1yZWYgaW5wdXRzICJzYXZvaXItZmFpcmUtbGludXgtcGF0 Y2hlcyIpCgkJCQkJCSAgICAgICItQyIgc2F2b2lyLWZhaXJlLWxpbnV4LXBhdGNoZXMtZGlyZWN0 b3J5ICItLXN0cmlwLWNvbXBvbmVudHM9NSIgInJpbmctcHJvamVjdC9kYWVtb24vY29udHJpYi9z cmMvcmVzdGJlZCIpCgkJCQkJICAgICAoZm9yLWVhY2gKCQkJCQkgICAgICAobGFtYmRhIChmaWxl KQoJCQkJCQkoemVybz8KCQkJCQkJIChzeXN0ZW0qICJwYXRjaCIgIi0tZm9yY2UiICItcDEiICIt aSIKCQkJCQkJCSAgKHN0cmluZy1hcHBlbmQgc2F2b2lyLWZhaXJlLWxpbnV4LXBhdGNoZXMtZGly ZWN0b3J5ICIvIgoJCQkJCQkJCQkgZmlsZSAiLnBhdGNoIikpKSkKCQkJCQkgICAgICBzYXZvaXIt ZmFpcmUtbGludXgtcGF0Y2hlcykKCQkJCQkgICAgIChzdWJzdGl0dXRlKiAiY21ha2UvbW9kdWxl cy9GaW5kYXNpby5jbWFrZSIKCQkJCQkJCSAoKCIoZmluZF9wYXRoXFwoIGFzaW9fSU5DTFVERSBh c2lvXFwuaHBwIEhJTlRTICkuKiQiIGFsbCBiZWdpbikKCQkJCQkJCSAgKHN0cmluZy1hcHBlbmQg YmVnaW4gIiBcIiIgYXNpbyAiL2luY2x1ZGVcIiApIikpKQoJCQkJCSAgICAgKHN1YnN0aXR1dGUq ICJjbWFrZS9tb2R1bGVzL0ZpbmRjYXRjaC5jbWFrZSIKCQkJCQkJCSAoKCIoZmluZF9wYXRoXFwo IGNhdGNoX0lOQ0xVREUgY2F0Y2hcXC5ocHAgSElOVFMgKS4qJCIgYWxsIGJlZ2luKQoJCQkJCQkJ ICAoc3RyaW5nLWFwcGVuZCBiZWdpbiAiIFwiIiBjYXRjaCAiL2luY2x1ZGVcIiApIikpKQoJCQkJ CSAgICAgKHN1YnN0aXR1dGUqICJjbWFrZS9tb2R1bGVzL0ZpbmRzeXNsb2cuY21ha2UiCgkJCQkJ CQkgKCgiKGZpbmRfcGF0aFxcKCBzeXNsb2dfSU5DTFVERSBzeXNsb2dcXC5oIEhJTlRTICkuKiQi IGFsbCBiZWdpbikKCQkJCQkJCSAgKHN0cmluZy1hcHBlbmQgYmVnaW4gIiBcIiIgZ2xpYmMgIi9p bmNsdWRlXCIgKSIpKSkpKSkpKSkKICAgICAoc3lub3BzaXMgIkFzeW5jaHJvbm91cyBSRVNUZnVs IGZ1bmN0aW9uYWxpdHkgdG8gQysrMTEgYXBwbGljYXRpb25zIikKICAgICAoZGVzY3JpcHRpb24g IlJlc3RiZWQgaXMgYSBjb21wcmVoZW5zaXZlIGFuZCBjb25zaXN0ZW50IHByb2dyYW1taW5nCm1v ZGVsIGZvciBidWlsZGluZyBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHNlYW1sZXNzIGFuZCBz ZWN1cmUKY29tbXVuaWNhdGlvbiBvdmVyIEhUVFAuIikKICAgICAoaG9tZS1wYWdlICJodHRwczov L2dpdGh1Yi5jb20vQ29ydnVzb2Z0L3Jlc3RiZWQiKQogICAgIChsaWNlbnNlIGxpY2Vuc2U6YWdw bDMrKSkpKQoKOzs7IEZyb20KOzs7IDxodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwv Z3VpeC1kZXZlbC8yMDE3LTAxL21zZzAxMjE2Lmh0bWw+Lgo7OzsgTm90IGluY2x1ZGluZwo7Ozsg PGh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9ndWl4LWRldmVsLzIwMTctMDEvbXNn MDEzOTIuaHRtbD4uCjs7OyBXaGVuIHByZWFyaW5nIHBhdGNoZXMsIG11c3QgaW5jbHVkZSB0aGlz IGF0dHJpYnV0aW9uLgooZGVmaW5lLXB1YmxpYyBjcnlwdG8rKwogIChwYWNrYWdlCiAgIChuYW1l ICJjcnlwdG8rKyIpCiAgICh2ZXJzaW9uICI1LjYuNSIpCiAgIChzb3VyY2UgKG9yaWdpbgoJICAg IChtZXRob2QgdXJsLWZldGNoKQoJICAgICh1cmkgKGxldCAoKG51bWVyaWMtdmVyc2lvbgoJCQko bWF0Y2ggKHN0cmluZy1zcGxpdCB2ZXJzaW9uICNcLikKCQkJICAgICAgICgoZmlyc3QtZGlnaXQg b3RoZXItZGlnaXRzIC4uLikKCQkJCShzdHJpbmctYXBwZW5kIGZpcnN0LWRpZ2l0CgkJCQkJICAg ICAgIChzdHJpbmctY29uY2F0ZW5hdGUKCQkJCQkJb3RoZXItZGlnaXRzKSkpKSkpCgkJICAgKHN0 cmluZy1hcHBlbmQgImh0dHBzOi8vY3J5cHRvcHAuY29tL2NyeXB0b3BwIjsKCQkJCSAgbnVtZXJp Yy12ZXJzaW9uICIuemlwIikpKQoJICAgIChzaGEyNTYKCSAgICAgKGJhc2UzMgoJICAgICAgIjBk MWNxZHozNjlpdmkwODJrNTkwMjV3dnh6eXd2a2l6dzdpMHBmNWgwYTFpenMzZzhwbTciKSkpKQog ICAoYnVpbGQtc3lzdGVtIGdudS1idWlsZC1zeXN0ZW0pCiAgIChhcmd1bWVudHMKICAgIGAoIzpt YWtlLWZsYWdzCiAgICAgIChsaXN0IChzdHJpbmctYXBwZW5kICJQUkVGSVg9IiAoYXNzb2MtcmVm ICVvdXRwdXRzICJvdXQiKSkKCSAgICAoc3RyaW5nLWFwcGVuZCAiQklORElSPSIgKGFzc29jLXJl ZiAlb3V0cHV0cyAiYmluIikgIi9iaW4iKQoJICAgIChzdHJpbmctYXBwZW5kICJEQVRBRElSPSIg KGFzc29jLXJlZiAlb3V0cHV0cyAiZG9jIikgIi9zaGFyZSIpCgkgICAgIkRJU0FCTEVfQ1hYRkxB R1NfT1BUSU1JWkFUSU9OUz0xIgoJICAgIDs7IE92ZXJyaWRlICIvc2Jpbi9sZGNvbmZpZyIgd2l0 aCBzaW1wbHkgImVjaG8iIHNpbmNlCgkgICAgOzsgd2UgZG9uJ3QgbmVlZCBsZGNvbmZpZyg4KS4K CSAgICAiTERDT05GPWVjaG8iKQogICAgICAjOnBoYXNlcwogICAgICAobW9kaWZ5LXBoYXNlcyAl c3RhbmRhcmQtcGhhc2VzCgkJICAgICAoYWRkLWFmdGVyICd1bnBhY2sgJ2VudGVyLXNvdXJjZQoJ CQkJOzsgPz8/IFdoeSBhcmUgd2UgaW4gdGhlIFRlc3REYXRhIGZvbGRlci4KCQkJCShsYW1iZGEg XyAoY2hkaXIgIi4uIikgI3QpKQoJCSAgICAgKGFkZC1hZnRlciAnZW50ZXItc291cmNlICdkaXNh YmxlLW9wdGltaXphdGlvbnMKCQkJCShsYW1iZGEgXwoJCQkJICA7OyBYWFg6IFRoZSBkaXNhYmxl IG9wdGltaXphdGlvbnMKCQkJCSAgOzsgZmxhZyBhYm92ZSBpcyBub3QgcmVjb2duaXplZCBpbgoJ CQkJICA7OyB0aGUgY3VycmVudCB2ZXJzaW9uLiBTZWUKCQkJCSAgOzsgaHR0cHM6Ly9naXRodWIu Y29tL3dlaWRhaTExL2NyeXB0b3BwL3B1bGwvMzU0LgoJCQkJICA7OyBGb3Igbm93LCBqdXN0IHJl bW92ZSBpdCB0aGUgZGlydHkKCQkJCSAgOzsgd2F5LgoJCQkJICAoc3Vic3RpdHV0ZSogIkdOVW1h a2VmaWxlIgoJCQkJCSAgICAgICAoKCItbWFyY2g9bmF0aXZlIikgIiIpKQoJCQkJICAjdCkpCgkJ ICAgICAoZGVsZXRlICdjb25maWd1cmUpCgkJICAgICAoYWRkLWFmdGVyICdidWlsZCAnYnVpbGQt c2hhcmVkCgkJCQkobGFtYmRhIF8KCQkJCSAgOzsgQnkgZGVmYXVsdCwgb25seSB0aGUgc3RhdGlj CgkJCQkgIDs7IGxpYnJhcnkgaXMgYnVpbHQuCgkJCQkgICh6ZXJvPyAoc3lzdGVtKiAibWFrZSIg InNoYXJlZCIpKSkpCgkJICAgICAoYWRkLWFmdGVyICdpbnN0YWxsICdtb3ZlLXN0YXRpYy1saWJy YXJ5CgkJCQkobGFtYmRhKiAoIzprZXkgb3V0cHV0cyAjOmFsbG93LW90aGVyLWtleXMpCgkJCQkJ IChsZXQqICgob3V0IChhc3NvYy1yZWYgb3V0cHV0cyAib3V0IikpCgkJCQkJCShsaWIgKHN0cmlu Zy1hcHBlbmQgb3V0ICIvbGliIikpCgkJCQkJCShzdGF0aWMgKGFzc29jLXJlZiBvdXRwdXRzICJz dGF0aWMiKSkKCQkJCQkJKHNsaWIgKHN0cmluZy1hcHBlbmQgc3RhdGljICIvbGliIikpKQoJCQkJ CSAgIChta2Rpci1wIHNsaWIpCgkJCQkJICAgKGZvci1lYWNoIChsYW1iZGEgKGZpbGUpCgkJCQkJ CSAgICAgICAoaW5zdGFsbC1maWxlIGZpbGUgc2xpYikKCQkJCQkJICAgICAgIChkZWxldGUtZmls ZSBmaWxlKSkKCQkJCQkJICAgICAoZmluZC1maWxlcyBsaWIgIlxcLmw/YSQiKSkKCQkJCQkgICAj dCkpKQoJCSAgICAgKGFkZC1hZnRlciAnbW92ZS1zdGF0aWMtbGlicmFyeSAnYWRkLXNvLXZlcnNp b24tc3ltbGluawoJCQkJOzsgVGhlIGxpYnJhcnkgaXMgbmFtZWQKCQkJCTs7IE1BSk9SLk1JTk9S LlBBVENITEVWRUwuIFNvbWUKCQkJCTs7IHByb2dyYW1zIGV4cGVjdCBhIE1BSk9SLk1JTk9SCgkJ CQk7OyBzeW1saW5rLgoJCQkJKGxhbWJkYSogKCM6a2V5IG91dHB1dHMgIzphbGxvdy1vdGhlci1r ZXlzKQoJCQkJCSAobGV0ICgob3V0IChhc3NvYy1yZWYgb3V0cHV0cyAib3V0IikpCgkJCQkJICAg ICAgIChtYWpvcittaW5vciAsKHZlcnNpb24tbWFqb3IrbWlub3IgdmVyc2lvbikpKQoJCQkJCSAg ICh3aXRoLWRpcmVjdG9yeS1leGN1cnNpb24gKHN0cmluZy1hcHBlbmQgb3V0ICIvbGliIikKCQkJ CQkJCQkgICAgIChzeW1saW5rIChzdHJpbmctYXBwZW5kICJsaWJjcnlwdG9wcC5zby4iICx2ZXJz aW9uKQoJCQkJCQkJCQkgICAgICAoc3RyaW5nLWFwcGVuZCAibGliY3J5cHRvcHAuc28uIiBtYWpv cittaW5vcikpCgkJCQkJCQkJICAgICAjdCkpKSkpKSkKICAgKG91dHB1dHMgJygib3V0IiA7IDYu NE0gc2hhcmVkIGxpYnJhcnkgYW5kIGhlYWRlcnMKCSAgICAgICJiaW4iIDsgNi4zTSBjcnlwdGVz dC5leGUKCSAgICAgICJkb2MiIDsgNi40TSBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlcwoJICAg ICAgInN0YXRpYyIpKSA7IDE1TSBzdGF0aWMgbGlicmFyeQogICAobmF0aXZlLWlucHV0cwogICAg YCgoInVuemlwIiAsdW56aXApKSkKICAgKHN5bm9wc2lzICJDKysgY2xhc3MgbGlicmFyeSBvZiBj cnlwdG9ncmFwaGljIHNjaGVtZXMiKQogICAoZGVzY3JpcHRpb24gIkNyeXB0bysrIGlzIGEgbGFy Z2UgY29sbGVjdGlvbiBvZiBjcnlwdG9ncmFoaWMgYWxnb3JpdGhtcyBhbmQgcmVsYXRlZCB1dGls aXRpZXMgZm9yIEMrKy4iKQogICAoaG9tZS1wYWdlICJodHRwczovL2NyeXB0b3BwLmNvbSIpCgkg ICAgICA7OyBUaGUgY29tcGlsYXRpb24gaXMgbGljZW5zZWQgdW5kZXIgQm9vc3QgMS4wLCB3aGls ZQoJICAgICAgOzsgbW9zdCBpbmRpdmlkdWFsIGZpbGVzIGFyZSBpbiB0aGUgcHVibGljIGRvbWFp bi4KCSAgICAgIDs7IFNob3VsZCB3ZSBhZGQgdHdvIGxpY2Vuc2VzPwogICAobGljZW5zZSAobGlz dCBsaWNlbnNlOmJvb3N0MS4wCgkJICBsaWNlbnNlOnB1YmxpYy1kb21haW4pKSkpCgo7OzsgQmFz ZWQgb24KOzs7IDxodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvZ3VpeC1kZXZlbC8y MDE2LTA5L21zZzAxMDYxLmh0bWw+LgooZGVmaW5lLXB1YmxpYyBsaWJyaW5nCiAgKHBhY2thZ2UK ICAgKG5hbWUgImxpYnJpbmciKQogICAodmVyc2lvbiAiMjAxNzAzMTYuMS4wNmEzZjBiIikKICAg KHNvdXJjZQogICAgKG9yaWdpbgogICAgIChtZXRob2QgdXJsLWZldGNoKQogICAgICh1cmkgImh0 dHA6Ly9kbC5yaW5nLmN4L3JpbmctcmVsZWFzZS90YXJiYWxscy9yaW5nXzIwMTcwMzE2LjEuMDZh M2YwYi50YXIuZ3oiKQogICAgIChtb2R1bGVzICcoKGd1aXggYnVpbGQgdXRpbHMpKSkKICAgICAo c25pcHBldAogICAgICAnKGJlZ2luCgkgKGRlbGV0ZS1maWxlLXJlY3Vyc2l2ZWx5ICJkYWVtb24v Y29udHJpYiIpKSkKICAgICAoc2hhMjU2CiAgICAgIChiYXNlMzIKICAgICAgICIxbnFwcWwzMzQz ZDdpY2pmYnpsd2ttOGFpNWhyeDU0eDAzdjcyNmc1ZDZjMjRpeGx6ZHJiIikpKSkKICAgKGJ1aWxk LXN5c3RlbSBnbnUtYnVpbGQtc3lzdGVtKQogICAoaW5wdXRzCiAgICBgKCgiYWxzYS1saWIiICxh bHNhLWxpYikKICAgICAgKCJib29zdCIgLGJvb3N0KQogICAgICAoImRidXMtYysrIiAsZGJ1cy1j KyspCiAgICAgICgiZXVkZXYiICxldWRldikKICAgICAgKCJmZm1wZWciICxmZm1wZWcpCiAgICAg ICgiZmxhYyIgLGZsYWMpCiAgICAgICgiZ21wIiAsZ21wKQogICAgICAoImdzbSIgLGdzbSkKICAg ICAgKCJqYWNrIiAsamFjay0xKQogICAgICAoImpzb25jcHAiICxqc29uY3BwKQogICAgICAoImxp Ym9nZyIgLGxpYm9nZykKICAgICAgKCJsaWJ2YSIgLGxpYnZhKQogICAgICA7OyAoIm9wZW5kaHQi ICxvcGVuZGh0KQogICAgICAoIm9wZW5kaHQtd2l0aC1tc2dwYWNrLWMrKy0xMSIgLG9wZW5kaHQt d2l0aC1tc2dwYWNrLWMrKy0xMSkKICAgICAgKCJvcHVzIiAsb3B1cykKICAgICAgKCJwY3JlIiAs cGNyZSkKICAgICAgKCJwanByb2plY3QiICxzYXZvaXItZmFpcmUtbGludXgtcGpwcm9qZWN0KQog ICAgICAoInB1bHNlYXVkaW8iICxwdWxzZWF1ZGlvKQogICAgICAoImxpYnNhbXBsZXJhdGUiICxs aWJzYW1wbGVyYXRlKQogICAgICAoImxpYnNuZGZpbGUiICxsaWJzbmRmaWxlKQogICAgICAoInNw ZWV4IiAsc3BlZXgpCiAgICAgICgibGlidXBucCIgLGxpYnVwbnApCiAgICAgICgibGlidm9yYmlz IiAsbGlidm9yYmlzKQogICAgICAoImxpYngyNjQiICxsaWJ4MjY0KQogICAgICAoInlhbWwtY3Bw IiAseWFtbC1jcHApCiAgICAgICgiemxpYiIgLHpsaWIpCiAgICAgIDs7IFRoZXNlIHdlcmUgYWRk ZWQgYnkgYWRmZW5vIGhlcmUgZm9yIG5vdywgcGxlYXNlIGZpeCB0aGlzIGlmCiAgICAgIDs7IHRo aXMgaXNuJ3QgdGhlIHJpZ2h0IHBsYWNlIGZvciB0aGVtLAogICAgICAoImNyeXB0bysrIiAsY3J5 cHRvKyspCiAgICAgICgicHl0aG9uIiAscHl0aG9uKQogICAgICAoInB5dGhvbi13cmFwcGVyIiAs cHl0aG9uLXdyYXBwZXIpCiAgICAgICgicmVzdGJlZCIgLHNhdm9pci1mYWlyZS1saW51eC1yZXN0 YmVkKQogICAgICAoImxpYngxMSIgLGxpYngxMSkpKQogICAobmF0aXZlLWlucHV0cwogICAgYCgo ImF1dG9jb25mIiAsYXV0b2NvbmYpCiAgICAgICgicGtnLWNvbmZpZyIgLHBrZy1jb25maWcpCiAg ICAgICgiYXV0b21ha2UiICxhdXRvbWFrZSkKICAgICAgKCJsaWJ0b29sIiAsbGlidG9vbCkKICAg ICAgKCJjcHB1bml0IiAsY3BwdW5pdCkKICAgICAgKCJwZXJsIiAscGVybCkpKSA7IE5lZWRlZCBm b3IgZG9jdW1lbnRhdGlvbi4KICAgKGFyZ3VtZW50cwogICAgYCgjOnRlc3RzPyAjZiA7IFRoZSB0 ZXN0cyBmYWlsIHRvIGNvbXBpbGUgZHVlIHRvIG1pc3NpbmcgaGVhZGVycy4KICAgICAgIzpwaGFz ZXMKICAgICAgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwoJCSAgICAgKGFkZC1hZnRl ciAndW5wYWNrICdjaGFuZ2UtZGlyZWN0b3J5CgkJCQkobGFtYmRhIF8KCQkJCSAgKGNoZGlyICJk YWVtb24iKSkpCgkJICAgICAoYWRkLWJlZm9yZSAnY29uZmlndXJlICdhdXRvY29uZgoJCQkJIChs YW1iZGEgXwoJCQkJICAgKHplcm8/IChzeXN0ZW0qICJhdXRvcmVjb25mIiAiLXZmaSIpKSkpCgkJ ICAgICAoYWRkLWJlZm9yZSAnYnVpbGQgJ2FkZC1saWItZGlyCgkJCQkgKGxhbWJkYSBfCgkJCQkg ICAobWtkaXIgInNyYy9saWIiKSkpKSkpCiAgIChzeW5vcHNpcyAiRGlzdHJpYnV0ZWQgbXVsdGlt ZWRpYSBjb21tdW5pY2F0aW9ucyBwbGF0Zm9ybSIpCiAgIChkZXNjcmlwdGlvbiAiUmluZyBpcyBh IHNlY3VyZSBhbmQgZGlzdHJpYnV0ZWQgdm9pY2UsIHZpZGVvIGFuZCBjaGF0CmNvbW11bmljYXRp b24gcGxhdGZvcm0gdGhhdCByZXF1aXJlcyBubyBjZW50cmFsaXplZCBzZXJ2ZXIgYW5kIGxlYXZl cyB0aGUKcG93ZXIgb2YgcHJpdmFjeSBpbiB0aGUgaGFuZHMgb2YgdGhlIHVzZXIuICBJdCBzdXBw b3J0cyB0aGUgU0lQIGFuZCBJQVgKcHJvdG9jb2xzLCBhcyB3ZWxsIGFzIGRlY2VudHJhbGl6ZWQg Y2FsbGluZyB1c2luZyBQMlAtREhULgoKVGhpcyBwYWNrYWdlIHByb3ZpZGVzIGEgbGlicmFyeSBh bmQgZGFlbW9uIGltcGxlbWVudGluZyB0aGUgUmluZyBjb3JlIApmdW5jdGlvbmFsaXR5LiIpCiAg IChob21lLXBhZ2UgImh0dHBzOi8vZ251Lm9yZy9zb2Z0d2FyZS9yaW5nIikKICAgKGxpY2Vuc2Ug bGljZW5zZTpncGwzKykpKQoKOzs7IEJhc2VkIG9uCjs7OyA8aHR0cDovL2xpc3RzLmdudS5vcmcv YXJjaGl2ZS9odG1sL2d1aXgtZGV2ZWwvMjAxNi0wOS9tc2cwMTA2Mi5odG1sPi4KKGRlZmluZS1w dWJsaWMgbGlicmluZ2NsaWVudAogIChwYWNrYWdlCiAgIChuYW1lICJsaWJyaW5nY2xpZW50IikK ICAgKHZlcnNpb24gIjIwMTcwMzE2LjEuMDZhM2YwYiIpCiAgIChzb3VyY2UKICAgIChvcmlnaW4K ICAgICAobWV0aG9kIHVybC1mZXRjaCkKICAgICAodXJpICJodHRwOi8vZGwucmluZy5jeC9yaW5n LXJlbGVhc2UvdGFyYmFsbHMvcmluZ18yMDE3MDMxNi4xLjA2YTNmMGIudGFyLmd6IikKICAgICAo c2hhMjU2CiAgICAgIChiYXNlMzIKICAgICAgICIxbnFwcWwzMzQzZDdpY2pmYnpsd2ttOGFpNWhy eDU0eDAzdjcyNmc1ZDZjMjRpeGx6ZHJiIikpKSkKICAgKGJ1aWxkLXN5c3RlbSBjbWFrZS1idWls ZC1zeXN0ZW0pCiAgIChwcm9wYWdhdGVkLWlucHV0cwogICAgYCgoImxpYnJpbmciICxsaWJyaW5n KSA7IEZvciAnZHJpbmcnLgogICAgICAoInF0YmFzZSIgLHF0YmFzZSkgOyBRdCBpcyBpbmNsdWRl ZCBpbiBzZXZlcmFsIGluc3RhbGxlZCBoZWFkZXJzLgogICAgICAoInF0dG9vbHMiICxxdHRvb2xz KSkpCiAgIChhcmd1bWVudHMKICAgIGAoIzp0ZXN0cz8gI2YgOyBUaGVyZSBpcyBubyB0ZXN0c3Vp dGUuCiAgICAgICM6Y29uZmlndXJlLWZsYWdzCiAgICAgIChsaXN0IChzdHJpbmctYXBwZW5kICIt RFJJTkdfQlVJTERfRElSPSIKCQkJICAgKGFzc29jLXJlZiAlYnVpbGQtaW5wdXRzICJsaWJyaW5n IikgIi9pbmNsdWRlIikpCgkJCSAgIDs7ICIvZGFlbW9uL2luY2x1ZGUiKSkKICAgICAgIzpwaGFz ZXMKICAgICAgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwoJCSAgICAgKGFkZC1hZnRl ciAndW5wYWNrICdjaGFuZ2UtZGlyZWN0b3J5CgkJCQkobGFtYmRhIF8KCQkJCSAgKGNoZGlyICJs cmMiKSkpCgkJICAgICAoYWRkLWJlZm9yZSAnY29uZmlndXJlICdmaXgtZGJ1cy1pbnRlcmZhY2Vz LXBhdGgKCQkJCShsYW1iZGEqICgjOmtleSBpbnB1dHMgIzphbGxvdy1vdGhlci1rZXlzKQoJCQkJ CSAoc3Vic3RpdHV0ZSogIkNNYWtlTGlzdHMudHh0IgoJCQkJCQkgICAgICAoKCJcXCRcXHtDTUFL RV9JTlNUQUxMX1BSRUZJWFxcfSgvc2hhcmUvZGJ1cy0xL2ludGVyZmFjZXMpIiBfIGRidXMtaW50 ZXJmYWNlcy1wYXRoLXN1ZmZpeCkKCQkJCQkJICAgICAgIChzdHJpbmctYXBwZW5kIChhc3NvYy1y ZWYgaW5wdXRzICJsaWJyaW5nIikKCQkJCQkJCQkgICAgICBkYnVzLWludGVyZmFjZXMtcGF0aC1z dWZmaXgpKSkpKSkpKQogICAoc3lub3BzaXMgIkRpc3RyaWJ1dGVkIG11bHRpbWVkaWEgY29tbXVu aWNhdGlvbnMgcGxhdGZvcm0iKQogICAoZGVzY3JpcHRpb24gIlJpbmcgaXMgYSBzZWN1cmUgYW5k IGRpc3RyaWJ1dGVkIHZvaWNlLCB2aWRlbyBhbmQgY2hhdApjb21tdW5pY2F0aW9uIHBsYXRmb3Jt IHRoYXQgcmVxdWlyZXMgbm8gY2VudHJhbGl6ZWQgc2VydmVyIGFuZCBsZWF2ZXMgdGhlCnBvd2Vy IG9mIHByaXZhY3kgaW4gdGhlIGhhbmRzIG9mIHRoZSB1c2VyLiAgSXQgc3VwcG9ydHMgdGhlIFNJ UCBhbmQgSUFYCnByb3RvY29scywgYXMgd2VsbCBhcyBkZWNlbnRyYWxpemVkIGNhbGxpbmcgdXNp bmcgUDJQLURIVC4KClRoaXMgcGFja2FnZSBwcm92aWRlcyBhIGxpYnJhcnkgY29tbW9uIHRvIGFs bCBSaW5nIGNsaWVudHMuIikKICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9nbnUub3JnL3NvZnR3YXJl L3JpbmciKQogICAobGljZW5zZSBsaWNlbnNlOmdwbDMrKSkpCgo7OzsgQmFzZWQgb24KOzs7IDxo dHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvZ3VpeC1kZXZlbC8yMDE2LTA5L21zZzAx MDYzLmh0bWw+LgooZGVmaW5lLXB1YmxpYyByaW5nLWNsaWVudC1nbm9tZQogIChwYWNrYWdlCiAg IChuYW1lICJyaW5nLWNsaWVudC1nbm9tZSIpCiAgICh2ZXJzaW9uICIyMDE3MDMxNi4xLjA2YTNm MGIiKQogICAoc291cmNlCiAgICAob3JpZ2luCiAgICAgKG1ldGhvZCB1cmwtZmV0Y2gpCiAgICAg KHVyaSAiaHR0cDovL2RsLnJpbmcuY3gvcmluZy1yZWxlYXNlL3RhcmJhbGxzL3JpbmdfMjAxNzAz MTYuMS4wNmEzZjBiLnRhci5neiIpCiAgICAgKHNoYTI1NgogICAgICAoYmFzZTMyCiAgICAgICAi MW5xcHFsMzM0M2Q3aWNqZmJ6bHdrbThhaTVocng1NHgwM3Y3MjZnNWQ2YzI0aXhsemRyYiIpKSkp CiAgIChidWlsZC1zeXN0ZW0gY21ha2UtYnVpbGQtc3lzdGVtKQogICAoaW5wdXRzCiAgICBgKCgi bGlicmluZ2NsaWVudCIgLGxpYnJpbmdjbGllbnQpCiAgICAgICgiZ3RrKyIgLGd0ayspCiAgICAg ICgiZ2xpYjpiaW4iICxnbGliICJiaW4iKQogICAgICAoInFyZW5jb2RlIiAscXJlbmNvZGUpCiAg ICAgICgibGlibm90aWZ5IiAsbGlibm90aWZ5KQogICAgICAoImNsdXR0ZXIiICxjbHV0dGVyKQog ICAgICAoImNsdXR0ZXItZ3RrIiAsY2x1dHRlci1ndGspCiAgICAgICgiZ2V0dGV4dCIgLGdudS1n ZXR0ZXh0KQogICAgICAoIndlYmtpdGd0ayIgLHdlYmtpdGd0aykpKQogICAobmF0aXZlLWlucHV0 cwogICAgYCgoInBrZy1jb25maWciICxwa2ctY29uZmlnKQogICAgICAoImRveHlnZW4iICxkb3h5 Z2VuKSkpCiAgIChwcm9wYWdhdGVkLWlucHV0cwogICAgYCgoImxpYnJpbmciICxsaWJyaW5nKSA7 IFRoaXMgaXMgbmVlZGVkIHRvIHJ1biBkcmluZy4KICAgICAgKCJhZHdhaXRhLWljb24tdGhlbWUi ICxhZHdhaXRhLWljb24tdGhlbWUpCiAgICAgICgiZXZvbHV0aW9uLWRhdGEtc2VydmVyIiAsZXZv bHV0aW9uLWRhdGEtc2VydmVyKSkpCiAgIChhcmd1bWVudHMKICAgIGAoIzp0ZXN0cz8gI2YgOyBU aGVyZSBpcyBubyB0ZXN0c3VpdGUuCiAgICAgICM6cGhhc2VzCiAgICAgIChtb2RpZnktcGhhc2Vz ICVzdGFuZGFyZC1waGFzZXMKCQkgICAgIChhZGQtYWZ0ZXIgJ3VucGFjayAnY2hhbmdlLWRpcmVj dG9yeQoJCQkJKGxhbWJkYSBfCgkJCQkgIChjaGRpciAiY2xpZW50LWdub21lIikpKSkpKQogICAo c3lub3BzaXMgIkRpc3RyaWJ1dGVkIG11bHRpbWVkaWEgY29tbXVuaWNhdGlvbnMgcGxhdGZvcm0i KQogICAoZGVzY3JpcHRpb24gIlJpbmcgaXMgYSBzZWN1cmUgYW5kIGRpc3RyaWJ1dGVkIHZvaWNl LCB2aWRlbyBhbmQgY2hhdApjb21tdW5pY2F0aW9uIHBsYXRmb3JtIHRoYXQgcmVxdWlyZXMgbm8g Y2VudHJhbGl6ZWQgc2VydmVyIGFuZCBsZWF2ZXMgdGhlCnBvd2VyIG9mIHByaXZhY3kgaW4gdGhl IGhhbmRzIG9mIHRoZSB1c2VyLiAgSXQgc3VwcG9ydHMgdGhlIFNJUCBhbmQgSUFYCnByb3RvY29s cywgYXMgd2VsbCBhcyBkZWNlbnRyYWxpemVkIGNhbGxpbmcgdXNpbmcgUDJQLURIVC4KClRoaXMg cGFja2FnZSBwcm92aWRlcyB0aGUgUmluZyBjbGllbnQgZm9yIHRoZSBHbm9tZSBEZXNrdG9wLiIp CiAgIChob21lLXBhZ2UgImh0dHBzOi8vZ251Lm9yZy9zb2Z0d2FyZS9yaW5nIikKICAgKGxpY2Vu c2UgbGljZW5zZTpncGwzKykpKQo= --=-=-=--