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: Wed, 22 Mar 2017 16:20:02 -0300 Message-ID: <87a88d3yql.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]:56392) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cqlns-0007k9-Gr for guix-devel@gnu.org; Wed, 22 Mar 2017 15:20:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cqlno-0007Ed-D0 for guix-devel@gnu.org; Wed, 22 Mar 2017 15:20:16 -0400 Received: from lb1.openmailbox.org ([5.79.108.160]:36679 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 1cqlnn-0007Dd-RJ for guix-devel@gnu.org; Wed, 22 Mar 2017 15:20:12 -0400 In-Reply-To: <87shma18an.fsf@openmailbox.org> (Adonay Felipe Nogueira's message of "Sat, 18 Mar 2017 20:20:32 -0300") 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; charset=utf-8 Content-Transfer-Encoding: quoted-printable Today, I bring you some good and bad news! :) * The good news I'm attaching an improved version of my previous set of recipes. This should allow *GuixSD* users to use GNU Ring straight away. However, both Guix users (in foreign distributions) and GuixSD users, must be advised that this is a work-in-progress, and there are still untested parts, or parts that were overlooked due to my lack of experience as developer and all things related to "ld"-stuff and with other build and developer tools and practices. If you really want to help out, even if just for testing, please read on. * The bad news After installing at least ring-client-gnome, Guix now suggests the user to add a custom XDG_DATA_DIRS variable to his "~/.profile" file. For Guix users in foreign distributions, this might cause an unwanted log-in loop, described in Guix bug #26202 ([[http://lists.gnu.org/archive/html/bug-guix/2017-03/msg00200.html]] or [[https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D26202]]). * What was not tested - Everything, including integration with GNOME Evolution data server (for contact list and management), both for GNOME Evolution comming from Guix, from GuixSD, or from a foreign distribution (because I don't use GNOME Evolution, although it comes by default in Trisquel 7). * What might need improvement - Convince Ring to send their patches to their respective upstreams! :D - Talk to Ring project to see if so much customization is really needed. Perhaps they have patches and "rules.mak" files only so that their work "gets lighter", but that might not be a requirement. - For some reason, the Ring daemon (that is provided by "libring" package) doesn't come installed with Ring GNOME client (provided by "ring-client-gnome"). - Even after installed, the Ring daemon is actually located at "${HOME}/.guix-profile/lib/ring/dring". I guess this deosn't sound right for an executable. - Look in the source code of the newly added packages for things I have missed, that might need to be corrected, like bundled stuff, or paths that should be pointing to store references. - See section "What was not tested". - Split the Ring tarball (ring[something].tar.gz) into useful separated ones. - Or find a way to get each part separatedly from their git repositories, making sure that we are indeed getting the code corresponding to beta 2. - For more things to do, read the attached package definitions file. * Notes for package maintainers - All the packages are either new or heavily modified to follow patches and "rules.mak" files present inside "ring[something].tar.gz/ring-project/daemon/contrib/src". - The only packages that are upgrades to existing ones (but still heavily modified) are argon2 and opendht. * Notes for testers - When installing: - Disable grafts (use `--no-grafts` option), otherwise you might be getting the original argon2 and opendht recipes. - Install "libring" and "ring-client-gnome". - After installing: - If Guix tells you to change XDG_DATA_DIRS in your "~/.profile", don't do it, instead copy what is suggested to be done, and write it as a comment (prefixed with "#") to that file, and see the links I referenced so far. You'll still need what was suggested by Guix, so commenting it is an useful way to save it for later. - Before using (each time): - In a new terminal, do: 1. Take the line Guix suggested, and paste it (remove the "#" prefix, of course), and press Return (or Enter) to use it as command. 2. Now run: ".guix-profile/lib/ring/dring" -p - This will start the Ring daemon in persistent mode, and make the current terminal busy (unresponsible, ignoring almost all input). It'll only exit if you press Ctrl + C (or force it to terminate. 4. Do step 1 again in another terminal. 5. Finally, in this other terminal, run "gnome-ring" client. --=20 - [[https://libreplanet.org/wiki/User:Adfeno]] - Palestrante e consultor sobre /software/ livre (n=C3=A3o confundir com gratis). - "WhatsApp"? Ele n=C3=A3o =C3=A9 livre, por isso n=C3=A3o uso. Iguais a el= e prefiro Ring, ou Tox. Quer outras formas de contato? Adicione o vCard que est=C3=A1 no endere=C3=A7o acima aos teus contatos. - Pretende me enviar arquivos .doc, .ppt, .cdr, ou .mp3? OK, eu aceito, mas n=C3=A3o repasso. Entrego apenas em formatos favor=C3=A1veis = ao /software/ livre. Favor entrar em contato em caso de d=C3=BAvida. - "People said I should accept the world. Bullshit! I don't accept the world." --- Richard Stallman --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=ring.scm Content-Transfer-Encoding: base64 KGRlZmluZS1tb2R1bGUgKHJpbmcpCiAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMpCiAgIzp1 c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgYWlkYykKICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdl cyBhdWRpbykKICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBhdXRvdG9vbHMpCiAgIzp1c2Ut bW9kdWxlIChnbnUgcGFja2FnZXMgYmFzZSkKICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBi b29zdCkKICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBjaGVjaykKICAjOnVzZS1tb2R1bGUg KGdudSBwYWNrYWdlcyBjb21wcmVzc2lvbikKICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBj cnlwdG8pCiAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgZG9jdW1lbnRhdGlvbikKICAjOnVz ZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBnZXR0ZXh0KQogICM6dXNlLW1vZHVsZSAoZ251IHBhY2th Z2VzIGdsaWIpCiAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgZ25vbWUpCiAgIzp1c2UtbW9k dWxlIChnbnUgcGFja2FnZXMgZ3RrKQogICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGxpYnVw bnApCiAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgbGludXgpCiAgIzp1c2UtbW9kdWxlIChn bnUgcGFja2FnZXMgbXVsdGlwcmVjaXNpb24pCiAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMg bmV0dGxlKQogICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIHBjcmUpCiAgIzp1c2UtbW9kdWxl IChnbnUgcGFja2FnZXMgcGVybCkKICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBwa2ctY29u ZmlnKQogICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIHB5dGhvbikKICAjOnVzZS1tb2R1bGUg KGdudSBwYWNrYWdlcyBwdWxzZWF1ZGlvKQogICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIHF0 KQogICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIHJlYWRsaW5lKQogICM6dXNlLW1vZHVsZSAo Z251IHBhY2thZ2VzIHNlcmlhbGl6YXRpb24pCiAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMg dGVsZXBob255KQogICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIHRscykKICAjOnVzZS1tb2R1 bGUgKGdudSBwYWNrYWdlcyB2aWRlbykKICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyB3ZWJr aXQpCiAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgeGlwaCkKICAjOnVzZS1tb2R1bGUgKGdu dSBwYWNrYWdlcyB4b3JnKQogICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIHppcCkKICAjOnVz ZS1tb2R1bGUgKGd1aXggYnVpbGQtc3lzdGVtIGdudSkKICAjOnVzZS1tb2R1bGUgKGd1aXggYnVp bGQtc3lzdGVtIGNtYWtlKQogICM6dXNlLW1vZHVsZSAoZ3VpeCBkb3dubG9hZCkKICAjOnVzZS1t b2R1bGUgKGd1aXggZ2l0LWRvd25sb2FkKQogICM6dXNlLW1vZHVsZSAoKGd1aXggbGljZW5zZXMp ICM6cHJlZml4IGxpY2Vuc2U6KQogICM6dXNlLW1vZHVsZSAoZ3VpeCBwYWNrYWdlcykKICAjOnVz ZS1tb2R1bGUgKGd1aXggdXRpbHMpCiAgIzp1c2UtbW9kdWxlIChpY2UtOSBtYXRjaCkpCgo7Ozsg RklYTUUgQ29udmluY2UgdXBzdHJlYW0sIFJpbmcsIHRvIHNlbmQgcGF0Y2hlcyB0byB0aGVpciB1 cHN0cmVhbXMuCjs7OyBGSVhNRSBTZWUgaWYgdGhlIGNvbWJpbmF0aW9uIG9mIFNhdm9pci1mYWly ZSBMaW51eCdzIHBqcHJvamVjdCArCjs7OyByZXN0YmVkICsgUmluZyBkYWVtb24gaXMgT0suCgoo ZGVmaW5lLXB1YmxpYyBzYXZvaXItZmFpcmUtbGludXgtcGpwcm9qZWN0CiAgKGxldCAoKHNhdm9p ci1mYWlyZS1saW51eC1wYXRjaGVzCgkgKG9yaWdpbgoJICAobWV0aG9kIHVybC1mZXRjaCkKCSAg KHVyaSAiaHR0cDovL2RsLnJpbmcuY3gvcmluZy1yZWxlYXNlL3RhcmJhbGxzL3JpbmdfMjAxNzAz MTYuMS4wNmEzZjBiLnRhci5neiIpCgkgIChzaGEyNTYKCSAgIChiYXNlMzIKCSAgICAiMW5xcHFs MzM0M2Q3aWNqZmJ6bHdrbThhaTVocng1NHgwM3Y3MjZnNWQ2YzI0aXhsemRyYiIpKSkpKQogICAg KHBhY2thZ2UKICAgICAobmFtZSAicGpwcm9qZWN0IikKICAgICAodmVyc2lvbiAiMi41LjUiKQog ICAgIChzb3VyY2UKICAgICAgKG9yaWdpbgogICAgICAgKG1ldGhvZCB1cmwtZmV0Y2gpCiAgICAg ICAodXJpIChzdHJpbmctYXBwZW5kCgkgICAgICJodHRwOi8vd3d3LnBqc2lwLm9yZy9yZWxlYXNl LyI7CgkgICAgIHZlcnNpb24gIi8iIG5hbWUgIi0iIHZlcnNpb24gIi50YXIuYnoyIikpCiAgICAg ICAobW9kdWxlcyAnKChndWl4IGJ1aWxkIHV0aWxzKSkpCiAgICAgICAoc25pcHBldAoJJyhiZWdp bgoJICAgKGxldCAoKHRoaXJkLXBhcnR5LWRpcmVjdG9yaWVzCgkJICAobGlzdCAiQmFzZUNsYXNz ZXMiICJiZHNvdW5kIiAiYmluIiAiZzcyMjEiICJnc20iCgkJCSJpbGJjIiAibGliIiAibWlsZW5h Z2UiICJtcDMiICJzcGVleCIgInNydHAiCgkJCSJyZXNhbXBsZSIKCQkJOzsgS2VlcCBvbmx5IHJl c2FtcGxlLCBidWlsZCBhbmQgUkVBRE1FLnR4dC4KCQkJImJ1aWxkL2Jhc2VjbGFzc2VzIiAiYnVp bGQvZzcyMjEiICJidWlsZC9nc20iCgkJCSJidWlsZC9pbGJjIiAiYnVpbGQvbWlsZW5hZ2UiICJi dWlsZC9zYW1wbGVyYXRlIgoJCQkiYnVpbGQvc3BlZXgiICJidWlsZC9zcnRwIgoJCQkiYnVpbGQv cmVzYW1wbGUiICJidWlsZC95dXYiKSkpCgkgICAgIDs7IEtlZXAgb25seSBNYWtlZmlsZXMgcmVs YXRlZCB0byByZXNhbXBsZS4KCSAgICAgKGZvci1lYWNoIChsYW1iZGEgKGZpbGUpCgkJCSAoZGVs ZXRlLWZpbGUtcmVjdXJzaXZlbHkKCQkJICAoc3RyaW5nLWFwcGVuZCAidGhpcmRfcGFydHkvIiBm aWxlKSkpCgkJICAgICAgIHRoaXJkLXBhcnR5LWRpcmVjdG9yaWVzKQoJICAgICAjdCkKCSAgIChs ZXQgKCh0aGlyZC1wYXJ0eS1kaXJzCgkJICAobGlzdCAiZ3NtIiAiaWxiYyIgInNwZWV4IiAiZzcy MjEiICJzcnRwIgoJCQkicG9ydGF1ZGlvIiAicmVzYW1wbGUiKSkpCgkgICAgIChmb3ItZWFjaAoJ ICAgICAgKGxhbWJkYSAoZGlycykKCQkoc3Vic3RpdHV0ZSogInRoaXJkX3BhcnR5L2J1aWxkL29z LWxpbnV4Lm1hayIKCQkJICAgICAoKChzdHJpbmctYXBwZW5kICJESVJTICs9ICIgZGlycykpICIi KSkpCgkgICAgICB0aGlyZC1wYXJ0eS1kaXJzKSkpKQogICAgICAgKHNoYTI1NgoJKGJhc2UzMgoJ ICIxd3E4bHBmY2Q0ZGZyYmw3Ymd5Mnl6Z3AzbGRqenE1NDMwZnFraGNxYWQweGZyeGowZmRiIikp KSkKICAgICAoYnVpbGQtc3lzdGVtIGdudS1idWlsZC1zeXN0ZW0pCiAgICAgKGlucHV0cwogICAg ICBgKCgicG9ydGF1ZGlvIiAscG9ydGF1ZGlvKSkpCiAgICAgKHByb3BhZ2F0ZWQtaW5wdXRzCiAg ICAgIDs7IFRoZXNlIHBhY2thZ2VzIGFyZSByZWZlcmVuY2VkIGluIHRoZSBMaWJzIGZpZWxkIG9m IHRoZSBwa2ctY29uZmlnCiAgICAgIDs7IGZpbGUgdGhhdCB3aWxsIGJlIGluc3RhbGxlZCBieSBw anByb2plY3QuCiAgICAgIGAoKCJzcGVleCIgLHNwZWV4KQoJKCJsaWJzcnRwIiAsbGlic3J0cCkK CSgiZ251dGxzIiAsZ251dGxzKQoJKCJ1dGlsLWxpbnV4IiAsdXRpbC1saW51eCkpKQogICAgIChu YXRpdmUtaW5wdXRzCiAgICAgIGAoKCJzYXZvaXItZmFpcmUtbGludXgtcGF0Y2hlcyIgLHNhdm9p ci1mYWlyZS1saW51eC1wYXRjaGVzKQoJKCJhdXRvY29uZiIgLGF1dG9jb25mKQoJKCJhdXRvbWFr ZSIgLGF1dG9tYWtlKQoJKCJwa2ctY29uZmlnIiAscGtnLWNvbmZpZykKCSgibGlidG9vbCIgLGxp YnRvb2wpKSkKICAgICAoYXJndW1lbnRzCiAgICAgIGAoIzp0ZXN0cz8gI2YgOyBGSVhNRSBtYWtl OiBObyBydWxlIHRvIG1ha2UgdGFyZ2V0CgkJICAgIDsgJ3BqbGliLXRlc3QtdW5rbm93bi1bc29t ZXRoaW5nXS1nbnUnLgoJOzsgIzp0ZXN0LXRhcmdldCAic2VsZnRlc3QiCgkjOmNvbmZpZ3VyZS1m bGFncwoJOzsgVGhlIGRpc2FibGVkIGZlYXR1cmVzIGFyZSBub3QgdXNlZCBieSBsaWJyaW5nLiAg Q29tZXMgZnJvbQoJOzsgInJpbmctcHJvamVjdC9kYWVtb24vY29udHJpYi9zcmMvcGpwcm9qZWN0 L3J1bGVzLm1hayIuCgk7OyBOT1RFIFRoaXMgZG9lc24ndCBzZWVtIHJpZ2h0LCBvdGhlciBwYWNr YWdlcyBtaWdodCB3YW50Cgk7OyBzb21lIG9mIHRoZXNlLiBXZSBtdXN0IHRhbGsgdG8gUmluZyBw cm9qZWN0IGFuZCBhc2sgd2h5IHdlCgk7OyBuZWVkIHRoaW5ncyB0byBiZSBidWlsdCB0aGlzIHdh eS4gT25lIHdheSBvdXQgb2YgdGhpcyB3b3VsZAoJOzsgYmUgdG8gdGVsbCBpdCB0byB1c2UgZXh0 ZXJuYWwgdGhpbmdzIGluc3RlYWQgb2YgZGlzYWJsaW5nLgoJKGxpc3QgIi0tZW5hYmxlLWV4dC1z b3VuZCIKCSAgICAgICItLWVuYWJsZS1zc2w9Z251dGxzIgoJICAgICAgIi0tZGlzYWJsZS1vc3Mi CgkgICAgICAiLS1kaXNhYmxlLXNvdW5kIgoJICAgICAgIi0tZGlzYWJsZS12aWRlbyIKCSAgICAg ICItLWRpc2FibGUtc3BlZXgtYWVjIgoJICAgICAgIi0tZGlzYWJsZS1nNzExLWNvZGVjIgoJICAg ICAgIi0tZGlzYWJsZS1sMTYtY29kZWMiCgkgICAgICAiLS1kaXNhYmxlLWdzbS1jb2RlYyIKCSAg ICAgICItLWRpc2FibGUtZzcyMi1jb2RlYyIKCSAgICAgICItLWRpc2FibGUtZzcyMjEtY29kZWMi CgkgICAgICAiLS1kaXNhYmxlLXNwZWV4LWNvZGVjIgoJICAgICAgIi0tZGlzYWJsZS1pbGJjLWNv ZGVjIgoJICAgICAgIi0tZGlzYWJsZS1vcGVuY29yZS1hbXIiCgkgICAgICAiLS1kaXNhYmxlLXNp bGsiCgkgICAgICAiLS1kaXNhYmxlLXNkbCIKCSAgICAgICItLWRpc2FibGUtZmZtcGVnIgoJICAg ICAgIi0tZGlzYWJsZS12NGwyIgoJICAgICAgIi0tZGlzYWJsZS1vcGVuaDI2NCIKCSAgICAgICIt LWRpc2FibGUtcmVzYW1wbGUiCgkgICAgICA7OyBOb3cgZGV2aWF0aW5nIGZyb20gdGhlIHJ1bGVz Lm1hayBmaWxlLgoJICAgICAgIi0td2l0aC1leHRlcm5hbC1zcnRwIgoJICAgICAgOzsgTm93IGJh Y2sgdG8gZm9sbG93aW5nIHRoZSBydWxlcy5tYWsgZmlsZS4KCSAgICAgICJDRkxBR1M9LURQSl9J Q0VfTUFYX0NBTkQ9MzIgLURQSl9JQ0VfTUFYX0NIRUNLUz0xNTAgLURQSl9JQ0VfQ09NUF9CSVRT PTIgLURQSl9JQ0VfTUFYX1NUVU49MyAtRFBKU0lQX01BWF9QS1RfTEVOPTgwMDAiKQoJIzpwaGFz ZXMKCShtb2RpZnktcGhhc2VzICVzdGFuZGFyZC1waGFzZXMKCQkgICAgICAgKGFkZC1hZnRlciAn dW5wYWNrICdhcHBseS1wYXRjaGVzCgkJCQkgIChsYW1iZGEqICgjOmtleSBpbnB1dHMgIzphbGxv dy1vdGhlci1rZXlzKQoJCQkJCSAgIChsZXQgKChzYXZvaXItZmFpcmUtbGludXgtcGF0Y2hlcy1k aXJlY3RvcnkgIlNhdm9pci1mYWlyZSBMaW51eCBwYXRjaGVzIikKCQkJCQkJIDs7IENvbWVzIGZy b20KCQkJCQkJIDs7ICJyaW5nLXByb2plY3QvZGFlbW9uL2NvbnRyaWIvc3JjL3BqcHJvamVjdC9y dWxlcy5tYWsiLgoJCQkJCQkgOzsgTk9URSBUaGVzZSBhbW91bnQKCQkJCQkJIDs7IGZvciBodWdl IGNoYW5nZXMKCQkJCQkJIDs7IGluIHBqcHJvamVjdC4KCQkJCQkJIDs7IFBhcnRpY3VsYXJseSwg dGhleQoJCQkJCQkgOzsgYWRkIHN1cHBvcnQgZm9yCgkJCQkJCSA7OyBHbnVUTFMsIHdoaWNoIGlz CgkJCQkJCSA7OyBjb21wbGV0ZWx5IGxhY2tpbmcKCQkJCQkJIDs7IGluIHBqcHJvamVjdAoJCQkJ CQkgOzsgMi41LjUuCgkJCQkJCSAoc2F2b2lyLWZhaXJlLWxpbnV4LXBhdGNoZXMKCQkJCQkJICAn KCJlbmRpYW5uZXNzIgoJCQkJCQkgICAgImdudXRscyIKCQkJCQkJICAgICJub3Rlc3RzYXBwcyIK CQkJCQkJICAgICJpcHY2IgoJCQkJCQkgICAgImljZV9jb25maWciCgkJCQkJCSAgICAibXVsdGlw bGVfbGlzdGVuZXJzIgoJCQkJCQkgICAgInBqX2ljZV9zZXNzIgoJCQkJCQkgICAgImZpeF90dXJu X2ZhbGxiYWNrIgoJCQkJCQkgICAgImZpeF9pb3F1ZXVlX2lwdjZfc2VuZHRvIgoJCQkJCQkgICAg ImFkZF9kdGxzX3RyYW5zcG9ydCIpKSkKCQkJCQkgICAgIChta2RpciBzYXZvaXItZmFpcmUtbGlu dXgtcGF0Y2hlcy1kaXJlY3RvcnkpCgkJCQkJICAgICAoc3lzdGVtKiAidGFyIiAiLXh2ZiIgKGFz c29jLXJlZiBpbnB1dHMgInNhdm9pci1mYWlyZS1saW51eC1wYXRjaGVzIikKCQkJCQkJICAgICAg Ii1DIiBzYXZvaXItZmFpcmUtbGludXgtcGF0Y2hlcy1kaXJlY3RvcnkgIi0tc3RyaXAtY29tcG9u ZW50cz01IiAicmluZy1wcm9qZWN0L2RhZW1vbi9jb250cmliL3NyYy9wanByb2plY3QiKQoJCQkJ CSAgICAgKGZvci1lYWNoCgkJCQkJICAgICAgKGxhbWJkYSAoZmlsZSkKCQkJCQkJKHplcm8/CgkJ CQkJCSAoc3lzdGVtKiAicGF0Y2giICItLWZvcmNlIiAiLXAxIiAiLWkiCgkJCQkJCQkgIChzdHJp bmctYXBwZW5kIHNhdm9pci1mYWlyZS1saW51eC1wYXRjaGVzLWRpcmVjdG9yeSAiLyIKCQkJCQkJ CQkJIGZpbGUgIi5wYXRjaCIpKSkpCgkJCQkJICAgICAgc2F2b2lyLWZhaXJlLWxpbnV4LXBhdGNo ZXMpKSkpCgkJICAgICAgIChhZGQtYmVmb3JlICdidWlsZCAnYnVpbGQtZGVwCgkJCQkgICAobGFt YmRhIF8gKHplcm8/IChzeXN0ZW0qICJtYWtlIiAiZGVwIikpKSkKCQkgICAgICAgKGFkZC1iZWZv cmUgJ3BhdGNoLXNvdXJjZS1zaGViYW5ncyAnYXV0b2NvbmYKCQkJCSAgIChsYW1iZGEgXwoJCQkJ ICAgICAoemVybz8KCQkJCSAgICAgIChzeXN0ZW0qICJhdXRvY29uZiIgIi12IiAiLWYiICItaSIg Ii1vIgoJCQkJCSAgICAgICAiYWNvbmZpZ3VyZSIgImFjb25maWd1cmUuYWMiKSkpKQoJCSAgICAg ICAoYWRkLWJlZm9yZSAnYXV0b2NvbmYgJ2Rpc2FibGUtc29tZS10ZXN0cwoJCQkJICAgOzsgVGhy ZWUgb2YgdGhlIHNpeCB0ZXN0IHByb2dyYW1zIGZhaWwgZHVlIHRvIG1pc3NpbmcgbmV0d29yawoJ CQkJICAgOzsgYWNjZXNzLgoJCQkJICAgKGxhbWJkYSBfCgkJCQkgICAgIChzdWJzdGl0dXRlKiAi TWFrZWZpbGUiCgkJCQkJCSAgKCgic2VsZnRlc3Q6IHBqbGliLXRlc3QgcGpsaWItdXRpbC10ZXN0 IHBqbmF0aC10ZXN0IHBqbWVkaWEtdGVzdCBwanNpcC10ZXN0IHBqc3VhLXRlc3QiKQoJCQkJCQkg ICAic2VsZnRlc3Q6IHBqbGliLXRlc3QgcGpsaWItdXRpbC10ZXN0IHBqbWVkaWEtdGVzdCIpKSkp KSkpCQkgICAgICAgCiAgICAgKGhvbWUtcGFnZSAid3d3LnBqc2lwLm9yZyIpCiAgICAgKHN5bm9w c2lzICJTZXNzaW9uIEluaXRpYXRpb24gUHJvdG9jb2wgKFNJUCkgc3RhY2siKQogICAgIChkZXNj cmlwdGlvbiAiUEpQcm9qZWN0IHByb3ZpZGVzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTZXNz aW9uCkluaXRpYXRpb24gUHJvdG9jb2wgKFNJUCkgYW5kIGEgbXVsdGltZWRpYSBmcmFtZXdvcmsu IFRoaXMgcGFja2FnZSBpcyBpbnRlbmRlZApmb3IgdXNlIHdpdGggbGlicmluZy4gIFRoZXJlIGFy ZSBzZXZlcmFsIGN1c3RvbSBwYXRjaGVzLCBtb3N0IG5vdGFibHkgdGhlIHVzZQpvZiBnbnV0bHMg aW5zdGVhZCBvZiBvcGVuc3NsIGZvciBlbmNyeXB0aW9uLiIpCiAgICAgOzsgV2Ugc2hvdWxkIG1h a2UgdGhlIGxpY2Vuc2Ugb25seSBvbmUsIHRoZSBvbmUgd2hpY2ggaXMKICAgICA7OyBlZmZlY3Rp dmUgYXMgcmVzdWx0IG9mIGFwcGx5aW5nIHNhdm9pci1mYWlyZS1saW51eC1wYXRjaGVzLAogICAg IDs7IGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBzYXkgdGhhdCB0aGUgd2hvbGUgcGFja2FnZSBo YXMgdHdvCiAgICAgOzsgbGljZW5zZXMgZm9yIHdoaWNoIHRoZSB1c2VyIGNhbiAiY2hvb3NlIiBm cm9tIChkdWFsIGxpY2Vuc2luZykuCiAgICAgKGxpY2Vuc2UgJyhsaWNlbnNlOmdwbDIrIDsgTkVX IHBqcHJvamVjdCBpcyB1bmRlciBHTlUgR1BMIDIrLCBub3QKCQkJICAgICAgOyBHTlUgR1BMIDIg KG9ubHkpLgoJCWxpY2Vuc2U6Z3BsMykpKSkpIDsgTGFzdCB0aW1lIHdlIGNoZWNrZWQsIHRoZQoJ CQkJICA7IFNhdm9pci1mYWlyZSBMaW51eCBwYXRjaGVzIHdlcmUKCQkJCSAgOyB1bmRlciBHTlUg R1BMIDMgKG9ubHkpLiBJcyB0aGlzCgkJCQkgIDsgc3RpbGwgdHJ1ZT8KCihkZWZpbmUtcHVibGlj IGFyZ29uMgogIChwYWNrYWdlCiAgIChuYW1lICJhcmdvbjIiKQogICAodmVyc2lvbiAiMjAxNjEw MjkiKQogICAoc291cmNlCiAgICAob3JpZ2luCiAgICAgKG1ldGhvZCB1cmwtZmV0Y2gpCiAgICAg KHVyaQogICAgICAoc3RyaW5nLWFwcGVuZCAiaHR0cHM6Ly9naXRodWIuY29tL1AtSC1DL3BoYy13 aW5uZXItYXJnb24yL2FyY2hpdmUvIgoJCSAgICAgdmVyc2lvbiAiLnRhci5neiIpKQogICAgIChm aWxlLW5hbWUgKHN0cmluZy1hcHBlbmQgbmFtZSAiLSIgdmVyc2lvbiAiLnRhci5neiIpKQogICAg IChzbmlwcGV0CiAgICAgIDs7IEFzIHdlIGFscmVhZHkga25vdywgdGhpcyBpcyBwcm9iYWJseSBi ZXR0ZXIgdG8gYmUgYWxyZWFkeQogICAgICA7OyBpbmNsdWRlZCBpbiBhcmdvbjIuCiAgICAgICco bGV0ICgocCAob3Blbi1maWxlICJhcmdvbjIucGMiICJ3IikpKQoJIChiZWdpbgoJICAgKGRpc3Bs YXkKCSAgICAoc3RyaW5nLWFwcGVuZCAicHJlZml4PS91c3IvbG9jYWxcbiIKCQkJICAgImV4ZWNf cHJlZml4PSR7cHJlZml4fVxuIgoJCQkgICAiaW5jbHVkZWRpcj0ke3ByZWZpeH0vaW5jbHVkZVxu IgoJCQkgICAibGliZGlyPSR7cHJlZml4fS9saWJcblxuIgoJCQkgICAiTmFtZTogQXJnb24yXG4i CgkJCSAgICJEZXNjcmlwdGlvbjogIgoJCQkgICAiVGhlIEFyZ29uMiBwYXNzd29yZCBoYXNoaW5n IGFsZ29yaXRobVxuIgoJCQkgICAiVmVyc2lvbjogMS4wLjBcbiIKCQkJICAgIkNmbGFnczogLUkk e2luY2x1ZGVkaXJ9L1xuIgoJCQkgICAiTGliczogLUwke2xpYmRpcn0gLWxhcmdvbjJcbiIpIHAp CgkgICAoY2xvc2Utb3V0cHV0LXBvcnQgcCkpKSkKICAgICAoc2hhMjU2CiAgICAgIChiYXNlMzIK ICAgICAgICIxcnltaWtieXNhc2RhZG0zMjVqeDY5aTBxMTlkOXNycWtueTY5andtaHN3bGlkcjRq MDd5IikpKSkKICAgKGJ1aWxkLXN5c3RlbSBnbnUtYnVpbGQtc3lzdGVtKQogICAoYXJndW1lbnRz CiAgICBgKCM6dGVzdC10YXJnZXQgInRlc3QiCiAgICAgICM6bWFrZS1mbGFncyAnKCJDQz1nY2Mi KQogICAgICAjOnBoYXNlcwogICAgICAobW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCgkJ ICAgICAoZGVsZXRlICdjb25maWd1cmUpCgkJICAgICAoYWRkLWFmdGVyICd1bnBhY2sgJ2ZpeC1w a2ctY29uZmlnCgkJCQkobGFtYmRhIF8KCQkJCSAgKHN1YnN0aXR1dGUqICJhcmdvbjIucGMiCgkJ CQkJICAgICAgICgoIi91c3IvbG9jYWwiKQoJCQkJCQkoYXNzb2MtcmVmICVvdXRwdXRzICJvdXQi KSkpKSkKCQkgICAgIChyZXBsYWNlICdpbnN0YWxsCgkJCSAgICAgIChsYW1iZGEgXwoJCQkJKGxl dCAoKG91dCAoYXNzb2MtcmVmICVvdXRwdXRzICJvdXQiKSkpCgkJCQkgIChpbnN0YWxsLWZpbGUg ImFyZ29uMiIgKHN0cmluZy1hcHBlbmQgb3V0ICIvYmluIikpCgkJCQkgIChpbnN0YWxsLWZpbGUg ImxpYmFyZ29uMi5hIiAoc3RyaW5nLWFwcGVuZCBvdXQgIi9saWIiKSkKCQkJCSAgKGluc3RhbGwt ZmlsZSAibGliYXJnb24yLnNvIiAoc3RyaW5nLWFwcGVuZCBvdXQgIi9saWIiKSkKCQkJCSAgKGlu c3RhbGwtZmlsZSAiYXJnb24yLnBjIgoJCQkJCQkoc3RyaW5nLWFwcGVuZCBvdXQgIi9saWIvcGtn Y29uZmlnIikpCgkJCQkgIChjb3B5LXJlY3Vyc2l2ZWx5ICJpbmNsdWRlIgoJCQkJCQkgICAgKHN0 cmluZy1hcHBlbmQgb3V0ICIvaW5jbHVkZSIpKQoJCQkJICAoc3ltbGluayAoc3RyaW5nLWFwcGVu ZCBvdXQgIi9saWIvbGliYXJnb24yLnNvIikKCQkJCQkgICAoc3RyaW5nLWFwcGVuZCBvdXQgIi9s aWIvbGliYXJnb24yLnNvLjAiKSkpKSkpKSkKICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly93d3cuYXJn b24yLmNvbS8iKQogICAoc3lub3BzaXMgIlBhc3N3b3JkIGhhc2hpbmcgbGlicmFyeSIpCiAgIChk ZXNjcmlwdGlvbiAiQXJnb24yIHByb3ZpZGVzIGEga2V5IGRlcml2YXRpb24gZnVuY3Rpb24gdGhh dCB3YXMgZGVjbGFyZWQKd2lubmVyIG9mIHRoZSAyMDE1IFBhc3N3b3JkIEhhc2hpbmcgQ29tcGV0 aXRpb24uIikKICAgKGxpY2Vuc2UgbGljZW5zZTpjYzApKSkKCihkZWZpbmUtcHVibGljIG9wZW5k 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 ICAgICAgKCJsaWJ0b29sIiAsbGlidG9vbCkpKQogICAoYXJndW1lbnRzCiAgICBgKCM6Y29uZmln dXJlLWZsYWdzICcoIi0tZGlzYWJsZS10b29scyIKCQkJICAiLS1kaXNhYmxlLXB5dGhvbiIpCiAg ICAgICM6cGhhc2VzIChtb2RpZnktcGhhc2VzICVzdGFuZGFyZC1waGFzZXMKCQkJICAgICAgKGFk ZC1iZWZvcmUgJ2NvbmZpZ3VyZSAnYXV0b2NvbmYKCQkJCQkgIChsYW1iZGEgXwoJCQkJCSAgICAo emVybz8gKHN5c3RlbSogImF1dG9yZWNvbmYiICItdmZpIikpKSkpKSkKICAgKGhvbWUtcGFnZSAi aHR0cHM6Ly9naXRodWIuY29tL3Nhdm9pcmZhaXJlbGludXgvb3BlbmRodC8iKQogICAoc3lub3Bz aXMgIkRpc3RyaWJ1dGVkIEhhc2ggVGFibGUgKERIVCkgbGlicmFyeSIpCiAgIChkZXNjcmlwdGlv biAiT3BlbkRIVCBpcyBhIERpc3RyaWJ1dGVkIEhhc2ggVGFibGUgKERIVCkgbGlicmFyeS4gIEl0 IG1heQpiZSB1c2VkIHRvIG1hbmFnZSBwZWVyLXRvLXBlZXIgbmV0d29yayBjb25uZWN0aW9ucyBh cyBuZWVkZWQgZm9yIHJlYWwgdGltZQpjb21tdW5pY2F0aW9uLiIpCiAgIChsaWNlbnNlIGxpY2Vu c2U6Z3BsMyspKSkgOyBORVcgSXQncyB1bmRlciBHTlUgR1BMMysuCgooZGVmaW5lLXB1YmxpYyBz YXZvaXItZmFpcmUtbGludXgtYXNpbwogIChsZXQgKChzYXZvaXItZmFpcmUtbGludXgtcGF0Y2hl cwoJIChvcmlnaW4KCSAgKG1ldGhvZCB1cmwtZmV0Y2gpCgkgICh1cmkgImh0dHA6Ly9kbC5yaW5n LmN4L3JpbmctcmVsZWFzZS90YXJiYWxscy9yaW5nXzIwMTcwMzE2LjEuMDZhM2YwYi50YXIuZ3oi KQoJICAoc2hhMjU2CgkgICAoYmFzZTMyCgkgICAgIjFucXBxbDMzNDNkN2ljamZiemx3a204YWk1 aHJ4NTR4MDN2NzI2ZzVkNmMyNGl4bHpkcmIiKSkpKSkKICAgIChwYWNrYWdlCiAgICAgKG5hbWUg ImFzaW8iKQogICAgICh2ZXJzaW9uICIyOGQ5YjhkIikKICAgICAoc291cmNlCiAgICAgIChvcmln aW4KICAgICAgIChtZXRob2QgdXJsLWZldGNoKQogICAgICAgKHVyaSAiaHR0cHM6Ly9naXRodWIu Y29tL2Nocmlza29obGhvZmYvYXNpby9hcmNoaXZlLzI4ZDliOGQ2ZGY3MDgwMjRhZjUyMjdjNTUx NjczZmRiMjUxOWY1YmYudGFyLmd6IikKICAgICAgIChmaWxlLW5hbWUgKHN0cmluZy1hcHBlbmQg bmFtZSAiLSIgdmVyc2lvbiAiLnRhci5neiIpKQogICAgICAgKHNoYTI1NgoJKGJhc2UzMiAiMDd3 cDU2dmlicXAxcXA4Y2ExYWhiaHM4bWQ3azIyaW03bm1seDBoYXF4ZGdzenAxemN2YiIpKSkpCiAg ICAgKGJ1aWxkLXN5c3RlbSBnbnUtYnVpbGQtc3lzdGVtKQogICAgIChuYXRpdmUtaW5wdXRzCiAg ICAgIGAoKCJhdXRvY29uZiIgLGF1dG9jb25mKQoJKCJhdXRvbWFrZSIgLGF1dG9tYWtlKQoJKCJz YXZvaXItZmFpcmUtbGludXgtcGF0Y2hlcyIgLHNhdm9pci1mYWlyZS1saW51eC1wYXRjaGVzKSkp CiAgICAgKGFyZ3VtZW50cwogICAgICA7OyBDb21lcyBmcm9tICJyaW5nLXByb2plY3QvZGFlbW9u L2NvbnRyaWIvc3JjL2FzaW8vcnVsZXMubWFrIi4KICAgICAgOzsgV2UgbXVzdCB0YWxrIHRvIFJp bmcgdG8ga25vdyBpZiBkaXNhYmxpbmcgQXNpbyBpbnRlZ3JhdGlvbgogICAgICA7OyB3aXRoIEJv b3N0IGlzIGEgcmVxdWlyZW1lbnQuCiAgICAgIGAoIzpjb25maWd1cmUtZmxhZ3MgJygiLS13aXRo b3V0LWJvb3N0IikKCSM6cGhhc2VzCgkobW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCgkJ ICAgICAgIChhZGQtYWZ0ZXIgJ3VucGFjayAnY2hhbmdlLWRpcmVjdG9yeS1hbmQtYXBwbHktcGF0 Y2hlcwoJCQkJICAobGFtYmRhKiAoIzprZXkgaW5wdXRzICM6YWxsb3ctb3RoZXIta2V5cykKCQkJ CQkgICAobGV0ICgoc2F2b2lyLWZhaXJlLWxpbnV4LXBhdGNoZXMtZGlyZWN0b3J5ICJTYXZvaXIt ZmFpcmUgTGludXggcGF0Y2hlcyIpCgkJCQkJCSA7OyBUaGVzZSBwYXRjaGVzIGp1c3QKCQkJCQkJ IDs7IGRpc2FibGUgdGVzdHMgYW5kCgkJCQkJCSA7OyBleGFtcGxlcy4gIFdlCgkJCQkJCSA7OyBz aG91bGQgY29udmluY2UKCQkJCQkJIDs7IFJpbmcgdG8gc2VuZCB0aGVzZQoJCQkJCQkgOzsgcGF0 Y2hlcyB0byB0aGVpcgoJCQkJCQkgOzsgdXBzdHJlYW0sIGFzaW8uCgkJCQkJCSAoc2F2b2lyLWZh aXJlLWxpbnV4LXBhdGNoZXMKCQkJCQkJICAnKCJub190ZXN0c19leGFtcGxlcyIpKSkKCQkJCQkg ICAgIChjaGRpciAiYXNpbyIpCgkJCQkJICAgICAobWtkaXIgc2F2b2lyLWZhaXJlLWxpbnV4LXBh dGNoZXMtZGlyZWN0b3J5KQoJCQkJCSAgICAgKHN5c3RlbSogInRhciIgIi14dmYiIChhc3NvYy1y ZWYgaW5wdXRzICJzYXZvaXItZmFpcmUtbGludXgtcGF0Y2hlcyIpCgkJCQkJCSAgICAgICItQyIg c2F2b2lyLWZhaXJlLWxpbnV4LXBhdGNoZXMtZGlyZWN0b3J5ICItLXN0cmlwLWNvbXBvbmVudHM9 NSIgInJpbmctcHJvamVjdC9kYWVtb24vY29udHJpYi9zcmMvYXNpbyIpCgkJCQkJICAgICAoZm9y LWVhY2gKCQkJCQkgICAgICAobGFtYmRhIChmaWxlKQoJCQkJCQkoemVybz8KCQkJCQkJIChzeXN0 ZW0qICJwYXRjaCIgIi0tZm9yY2UiICItcDEiICItaSIKCQkJCQkJCSAgKHN0cmluZy1hcHBlbmQg c2F2b2lyLWZhaXJlLWxpbnV4LXBhdGNoZXMtZGlyZWN0b3J5ICIvIgoJCQkJCQkJCQkgZmlsZSAi LnBhdGNoIikpKSkKCQkJCQkgICAgICBzYXZvaXItZmFpcmUtbGludXgtcGF0Y2hlcykpKSkKCQkg ICAgICAgKGFkZC1iZWZvcmUgJ2NvbmZpZ3VyZSAncnVuLWF1dG9nZW4KCQkJCSAgKGxhbWJkYSBf CgkJCQkgICAgKHplcm8/IChzeXN0ZW0qICIuL2F1dG9nZW4uc2giKSkpKSkpKQogICAgIChzeW5v cHNpcyAiQXN5bmNocm9ub3VzIFJFU1RmdWwgZnVuY3Rpb25hbGl0eSB0byBDKysxMSBhcHBsaWNh dGlvbnMiKQogICAgIChkZXNjcmlwdGlvbiAiUmVzdGJlZCBpcyBhIGNvbXByZWhlbnNpdmUgYW5k IGNvbnNpc3RlbnQgcHJvZ3JhbW1pbmcKbW9kZWwgZm9yIGJ1aWxkaW5nIGFwcGxpY2F0aW9ucyB0 aGF0IHJlcXVpcmUgc2VhbWxlc3MgYW5kIHNlY3VyZQpjb21tdW5pY2F0aW9uIG92ZXIgSFRUUC4i KQogICAgIChob21lLXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS9Db3J2dXNvZnQvcmVzdGJlZCIp CiAgICAgKGxpY2Vuc2UgbGljZW5zZTpib29zdDEuMCkpKSkKCihkZWZpbmUtcHVibGljIHNhdm9p ci1mYWlyZS1saW51eC1yZXN0YmVkCiAgKGxldCAoKHNhdm9pci1mYWlyZS1saW51eC1wYXRjaGVz CgkgKG9yaWdpbgoJICAobWV0aG9kIHVybC1mZXRjaCkKCSAgKHVyaSAiaHR0cDovL2RsLnJpbmcu Y3gvcmluZy1yZWxlYXNlL3RhcmJhbGxzL3JpbmdfMjAxNzAzMTYuMS4wNmEzZjBiLnRhci5neiIp CgkgIChzaGEyNTYKCSAgIChiYXNlMzIKCSAgICAiMW5xcHFsMzM0M2Q3aWNqZmJ6bHdrbThhaTVo cng1NHgwM3Y3MjZnNWQ2YzI0aXhsemRyYiIpKSkpKQogICAgKHBhY2thZ2UKICAgICAobmFtZSAi cmVzdGJlZCIpCiAgICAgKHZlcnNpb24gIjM0MTg3NTAiKQogICAgIChzb3VyY2UKICAgICAgKG9y aWdpbgogICAgICAgKG1ldGhvZCB1cmwtZmV0Y2gpCiAgICAgICAodXJpICJodHRwczovL2dpdGh1 Yi5jb20vQ29ydnVzb2Z0L3Jlc3RiZWQvYXJjaGl2ZS8zNDE4NzUwMjY0MjE0NGFiOWY3NDlhYjQw ZjVjZGJkOGNiMTdhNTRhLnRhci5neiIpCiAgICAgICAoZmlsZS1uYW1lIChzdHJpbmctYXBwZW5k IG5hbWUgIi0iIHZlcnNpb24gIi50YXIuZ3oiKSkKICAgICAgIChzaGEyNTYKCShiYXNlMzIgIjFj OTZ3ODN2MGl6NjFicWQwc2FmemE2OThnODYyMmRoc3JyZjAxYWlnaWJqNGNtc2JqcGgiKSkpKQog ICAgIChidWlsZC1zeXN0ZW0gY21ha2UtYnVpbGQtc3lzdGVtKQogICAgIChpbnB1dHMKICAgICAg YCgoImFzaW8iICxzYXZvaXItZmFpcmUtbGludXgtYXNpbykKCSgiY2F0Y2giICxjYXRjaC1mcmFt ZXdvcmspCgkoImdsaWJjIiAsZ2xpYmMpCgkoIm9wZW5zc2wiICxvcGVuc3NsKSkpCiAgICAgKG5h dGl2ZS1pbnB1dHMKICAgICAgYCgoInNhdm9pci1mYWlyZS1saW51eC1wYXRjaGVzIiAsc2F2b2ly LWZhaXJlLWxpbnV4LXBhdGNoZXMpKSkKICAgICAoYXJndW1lbnRzCiAgICAgIGAoIzp0ZXN0cz8g I2YKCTs7IENvbWVzIGZyb20gInJpbmctcHJvamVjdC9kYWVtb24vY29udHJpYi9zcmMvcmVzdGJl ZC9ydWxlcy5tYWsiLgoJIzpjb25maWd1cmUtZmxhZ3MKCScoIi1EQlVJTERfVEVTVFM9Tk8iCgkg ICItREJVSUxEX0VYQU1QTEVTPU5PIgoJICAiLURCVUlMRF9TU0w9Tk8iCgkgICItREJVSUxEX1NI QVJFRD1OTyIpCgkjOnBoYXNlcwoJKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwoJCSAg ICAgICAoYWRkLWFmdGVyICd1bnBhY2sgJ2FwcGx5LXBhdGNoZXMtYW5kLWZpeC1wYXRocwoJCQkJ ICAobGFtYmRhKiAoIzprZXkgaW5wdXRzICM6YWxsb3ctb3RoZXIta2V5cykKCQkJCQkgICAobGV0 ICgoc2F2b2lyLWZhaXJlLWxpbnV4LXBhdGNoZXMtZGlyZWN0b3J5ICJTYXZvaXItZmFpcmUgTGlu dXggcGF0Y2hlcyIpCgkJCQkJCSAoYXNpbyAoYXNzb2MtcmVmIGlucHV0cyAiYXNpbyIpKQoJCQkJ CQkgKGNhdGNoIChhc3NvYy1yZWYgaW5wdXRzICJjYXRjaCIpKQoJCQkJCQkgKGdsaWJjIChhc3Nv Yy1yZWYgaW5wdXRzICJnbGliYyIpKQoJCQkJCQkgKG9wZW5zc2wgKGFzc29jLXJlZiBpbnB1dHMg Im9wZW5zc2wiKSkKCQkJCQkJIDs7IFRoZXNlIHBhdGNoZXMgZGVhbAoJCQkJCQkgOzsgd2l0aCBt aW5vciBmaXhlcy4KCQkJCQkJIDs7IFdlIHNob3VsZCBjb252aW5jZQoJCQkJCQkgOzsgUmluZyB1 cHN0cmVhbSB0bwoJCQkJCQkgOzsgc2VuZCB0aGVzZSBwYXRjaGVzCgkJCQkJCSA7OyB0byB0aGVp ciB1cHN0cmVhbSwKCQkJCQkJIDs7IHJlc3RiZWQuCgkJCQkJCSAoc2F2b2lyLWZhaXJlLWxpbnV4 LXBhdGNoZXMKCQkJCQkJICAnKCJDTWFrZUxpc3RzIgoJCQkJCQkgICAgInN0cmFuZCIKCQkJCQkJ ICAgICJ1cmlfY3BwIikpKQoJCQkJCSAgICAgKG1rZGlyIHNhdm9pci1mYWlyZS1saW51eC1wYXRj aGVzLWRpcmVjdG9yeSkKCQkJCQkgICAgIChzeXN0ZW0qICJ0YXIiICIteHZmIiAoYXNzb2MtcmVm IGlucHV0cyAic2F2b2lyLWZhaXJlLWxpbnV4LXBhdGNoZXMiKQoJCQkJCQkgICAgICAiLUMiIHNh dm9pci1mYWlyZS1saW51eC1wYXRjaGVzLWRpcmVjdG9yeSAiLS1zdHJpcC1jb21wb25lbnRzPTUi ICJyaW5nLXByb2plY3QvZGFlbW9uL2NvbnRyaWIvc3JjL3Jlc3RiZWQiKQoJCQkJCSAgICAgKGZv ci1lYWNoCgkJCQkJICAgICAgKGxhbWJkYSAoZmlsZSkKCQkJCQkJKHplcm8/CgkJCQkJCSAoc3lz dGVtKiAicGF0Y2giICItLWZvcmNlIiAiLXAxIiAiLWkiCgkJCQkJCQkgIChzdHJpbmctYXBwZW5k IHNhdm9pci1mYWlyZS1saW51eC1wYXRjaGVzLWRpcmVjdG9yeSAiLyIKCQkJCQkJCQkJIGZpbGUg Ii5wYXRjaCIpKSkpCgkJCQkJICAgICAgc2F2b2lyLWZhaXJlLWxpbnV4LXBhdGNoZXMpCgkJCQkJ ICAgICAoc3Vic3RpdHV0ZSogImNtYWtlL21vZHVsZXMvRmluZGFzaW8uY21ha2UiCgkJCQkJCQkg KCgiKGZpbmRfcGF0aFxcKCBhc2lvX0lOQ0xVREUgYXNpb1xcLmhwcCBISU5UUyApLiokIiBhbGwg YmVnaW4pCgkJCQkJCQkgIChzdHJpbmctYXBwZW5kIGJlZ2luICIgXCIiIGFzaW8gIi9pbmNsdWRl XCIgKSIpKSkKCQkJCQkgICAgIChzdWJzdGl0dXRlKiAiY21ha2UvbW9kdWxlcy9GaW5kY2F0Y2gu Y21ha2UiCgkJCQkJCQkgKCgiKGZpbmRfcGF0aFxcKCBjYXRjaF9JTkNMVURFIGNhdGNoXFwuaHBw IEhJTlRTICkuKiQiIGFsbCBiZWdpbikKCQkJCQkJCSAgKHN0cmluZy1hcHBlbmQgYmVnaW4gIiBc IiIgY2F0Y2ggIi9pbmNsdWRlXCIgKSIpKSkKCQkJCQkgICAgIChzdWJzdGl0dXRlKiAiY21ha2Uv bW9kdWxlcy9GaW5kb3BlbnNzbC5jbWFrZSIKCQkJCQkJCSAoKCIoZmluZF9saWJyYXJ5XFwoIHNz bF9MSUJSQVJZIHNzbCBzc2xlYXkzMiBISU5UUyApLiokIiBhbGwgYmVnaW4pCgkJCQkJCQkgIChz dHJpbmctYXBwZW5kIGJlZ2luICIgXCIiIG9wZW5zc2wgIi9saWJcIiApIikpCgkJCQkJCQkgKCgi KGZpbmRfbGlicmFyeVxcKCBjcnlwdG9fTElCUkFSWSBjcnlwdG8gbGliZWF5MzIgSElOVFMgKS4q JCIgYWxsIGJlZ2luKQoJCQkJCQkJICAoc3RyaW5nLWFwcGVuZCBiZWdpbiAiIFwiIiBvcGVuc3Ns ICIvbGliXCIgKSIpKQoJCQkJCQkJICgoIihmaW5kX3BhdGhcXCggc3NsX0lOQ0xVREUgb3BlbnNz bC9zc2xcXC5oIEhJTlRTICkuKiQiIGFsbCBiZWdpbikKCQkJCQkJCSAgKHN0cmluZy1hcHBlbmQg YmVnaW4gIiBcIiIgb3BlbnNzbCAiL2luY2x1ZGVcIiApIikpKQoJCQkJCSAgICAgKHN1YnN0aXR1 dGUqICJjbWFrZS9tb2R1bGVzL0ZpbmRzeXNsb2cuY21ha2UiCgkJCQkJCQkgKCgiKGZpbmRfcGF0 aFxcKCBzeXNsb2dfSU5DTFVERSBzeXNsb2dcXC5oIEhJTlRTICkuKiQiIGFsbCBiZWdpbikKCQkJ CQkJCSAgKHN0cmluZy1hcHBlbmQgYmVnaW4gIiBcIiIgZ2xpYmMgIi9pbmNsdWRlXCIgKSIpKSkp KSkpKSkKICAgICAoc3lub3BzaXMgIkFzeW5jaHJvbm91cyBSRVNUZnVsIGZ1bmN0aW9uYWxpdHkg dG8gQysrMTEgYXBwbGljYXRpb25zIikKICAgICAoZGVzY3JpcHRpb24gIlJlc3RiZWQgaXMgYSBj b21wcmVoZW5zaXZlIGFuZCBjb25zaXN0ZW50IHByb2dyYW1taW5nCm1vZGVsIGZvciBidWlsZGlu ZyBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHNlYW1sZXNzIGFuZCBzZWN1cmUKY29tbXVuaWNh dGlvbiBvdmVyIEhUVFAuIikKICAgICAoaG9tZS1wYWdlICJodHRwczovL2dpdGh1Yi5jb20vQ29y dnVzb2Z0L3Jlc3RiZWQiKQogICAgIChsaWNlbnNlIGxpY2Vuc2U6YWdwbDMrKSkpKQoKKGRlZmlu ZS1wdWJsaWMgY3J5cHRvKysKICAocGFja2FnZQogICAobmFtZSAiY3J5cHRvKysiKQogICAodmVy c2lvbiAiNS42LjUiKQogICAoc291cmNlIChvcmlnaW4KCSAgICAobWV0aG9kIHVybC1mZXRjaCkK CSAgICAodXJpIChsZXQgKChudW1lcmljLXZlcnNpb24KCQkJKG1hdGNoIChzdHJpbmctc3BsaXQg dmVyc2lvbiAjXC4pCgkJCSAgICAgICAoKGZpcnN0LWRpZ2l0IG90aGVyLWRpZ2l0cyAuLi4pCgkJ CQkoc3RyaW5nLWFwcGVuZCBmaXJzdC1kaWdpdAoJCQkJCSAgICAgICAoc3RyaW5nLWNvbmNhdGVu YXRlCgkJCQkJCW90aGVyLWRpZ2l0cykpKSkpKQoJCSAgIChzdHJpbmctYXBwZW5kICJodHRwczov L2NyeXB0b3BwLmNvbS9jcnlwdG9wcCI7CgkJCQkgIG51bWVyaWMtdmVyc2lvbiAiLnppcCIpKSkK CSAgICAoc2hhMjU2CgkgICAgIChiYXNlMzIKCSAgICAgICIwZDFjcWR6MzY5aXZpMDgyazU5MDI1 d3Z4enl3dmtpenc3aTBwZjVoMGExaXpzM2c4cG03IikpKSkKICAgKGJ1aWxkLXN5c3RlbSBnbnUt YnVpbGQtc3lzdGVtKQogICAoYXJndW1lbnRzCiAgICBgKCM6bWFrZS1mbGFncwogICAgICAobGlz dCAoc3RyaW5nLWFwcGVuZCAiUFJFRklYPSIgKGFzc29jLXJlZiAlb3V0cHV0cyAib3V0IikpCgkg ICAgKHN0cmluZy1hcHBlbmQgIkJJTkRJUj0iIChhc3NvYy1yZWYgJW91dHB1dHMgImJpbiIpICIv YmluIikKCSAgICAoc3RyaW5nLWFwcGVuZCAiREFUQURJUj0iIChhc3NvYy1yZWYgJW91dHB1dHMg ImRvYyIpICIvc2hhcmUiKQoJICAgICJESVNBQkxFX0NYWEZMQUdTX09QVElNSVpBVElPTlM9MSIK CSAgICA7OyBPdmVycmlkZSAiL3NiaW4vbGRjb25maWciIHdpdGggc2ltcGx5ICJlY2hvIiBzaW5j ZQoJICAgIDs7IHdlIGRvbid0IG5lZWQgbGRjb25maWcoOCkuCgkgICAgIkxEQ09ORj1lY2hvIikK ICAgICAgIzpwaGFzZXMKICAgICAgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwoJCSAg ICAgKGFkZC1hZnRlciAndW5wYWNrICdlbnRlci1zb3VyY2UKCQkJCTs7ID8/PyBXaHkgYXJlIHdl IGluIHRoZSBUZXN0RGF0YSBmb2xkZXIuCgkJCQkobGFtYmRhIF8gKGNoZGlyICIuLiIpICN0KSkK CQkgICAgIChhZGQtYWZ0ZXIgJ2VudGVyLXNvdXJjZSAnZGlzYWJsZS1vcHRpbWl6YXRpb25zCgkJ CQkobGFtYmRhIF8KCQkJCSAgOzsgWFhYOiBUaGUgZGlzYWJsZSBvcHRpbWl6YXRpb25zCgkJCQkg IDs7IGZsYWcgYWJvdmUgaXMgbm90IHJlY29nbml6ZWQgaW4KCQkJCSAgOzsgdGhlIGN1cnJlbnQg dmVyc2lvbi4gU2VlCgkJCQkgIDs7IGh0dHBzOi8vZ2l0aHViLmNvbS93ZWlkYWkxMS9jcnlwdG9w cC9wdWxsLzM1NC4KCQkJCSAgOzsgRm9yIG5vdywganVzdCByZW1vdmUgaXQgdGhlIGRpcnR5CgkJ CQkgIDs7IHdheS4KCQkJCSAgKHN1YnN0aXR1dGUqICJHTlVtYWtlZmlsZSIKCQkJCQkgICAgICAg KCgiLW1hcmNoPW5hdGl2ZSIpICIiKSkKCQkJCSAgI3QpKQoJCSAgICAgKGRlbGV0ZSAnY29uZmln dXJlKQoJCSAgICAgKGFkZC1hZnRlciAnYnVpbGQgJ2J1aWxkLXNoYXJlZAoJCQkJKGxhbWJkYSBf CgkJCQkgIDs7IEJ5IGRlZmF1bHQsIG9ubHkgdGhlIHN0YXRpYwoJCQkJICA7OyBsaWJyYXJ5IGlz IGJ1aWx0LgoJCQkJICAoemVybz8gKHN5c3RlbSogIm1ha2UiICJzaGFyZWQiKSkpKQoJCSAgICAg KGFkZC1hZnRlciAnaW5zdGFsbCAnbW92ZS1zdGF0aWMtbGlicmFyeQoJCQkJKGxhbWJkYSogKCM6 a2V5IG91dHB1dHMgIzphbGxvdy1vdGhlci1rZXlzKQoJCQkJCSAobGV0KiAoKG91dCAoYXNzb2Mt cmVmIG91dHB1dHMgIm91dCIpKQoJCQkJCQkobGliIChzdHJpbmctYXBwZW5kIG91dCAiL2xpYiIp KQoJCQkJCQkoc3RhdGljIChhc3NvYy1yZWYgb3V0cHV0cyAic3RhdGljIikpCgkJCQkJCShzbGli IChzdHJpbmctYXBwZW5kIHN0YXRpYyAiL2xpYiIpKSkKCQkJCQkgICAobWtkaXItcCBzbGliKQoJ CQkJCSAgIChmb3ItZWFjaCAobGFtYmRhIChmaWxlKQoJCQkJCQkgICAgICAgKGluc3RhbGwtZmls ZSBmaWxlIHNsaWIpCgkJCQkJCSAgICAgICAoZGVsZXRlLWZpbGUgZmlsZSkpCgkJCQkJCSAgICAg KGZpbmQtZmlsZXMgbGliICJcXC5sP2EkIikpCgkJCQkJICAgI3QpKSkKCQkgICAgIChhZGQtYWZ0 ZXIgJ21vdmUtc3RhdGljLWxpYnJhcnkgJ2FkZC1zby12ZXJzaW9uLXN5bWxpbmsKCQkJCTs7IFRo ZSBsaWJyYXJ5IGlzIG5hbWVkCgkJCQk7OyBNQUpPUi5NSU5PUi5QQVRDSExFVkVMLiBTb21lCgkJ CQk7OyBwcm9ncmFtcyBleHBlY3QgYSBNQUpPUi5NSU5PUgoJCQkJOzsgc3ltbGluay4KCQkJCShs YW1iZGEqICgjOmtleSBvdXRwdXRzICM6YWxsb3ctb3RoZXIta2V5cykKCQkJCQkgKGxldCAoKG91 dCAoYXNzb2MtcmVmIG91dHB1dHMgIm91dCIpKQoJCQkJCSAgICAgICAobWFqb3IrbWlub3IgLCh2 ZXJzaW9uLW1ham9yK21pbm9yIHZlcnNpb24pKSkKCQkJCQkgICAod2l0aC1kaXJlY3RvcnktZXhj dXJzaW9uIChzdHJpbmctYXBwZW5kIG91dCAiL2xpYiIpCgkJCQkJCQkJICAgICAoc3ltbGluayAo c3RyaW5nLWFwcGVuZCAibGliY3J5cHRvcHAuc28uIiAsdmVyc2lvbikKCQkJCQkJCQkJICAgICAg KHN0cmluZy1hcHBlbmQgImxpYmNyeXB0b3BwLnNvLiIgbWFqb3IrbWlub3IpKQoJCQkJCQkJCSAg ICAgI3QpKSkpKSkpCiAgIChvdXRwdXRzICcoIm91dCIgICAgICAgICAgICAgIDsgNi40TSBzaGFy ZWQgbGlicmFyeSBhbmQgaGVhZGVycwoJICAgICAgImJpbiIgICAgICAgICAgICAgIDsgNi4zTSBj cnlwdGVzdC5leGUKCSAgICAgICJkb2MiICAgICAgICAgICAgICA7IDYuNE0gZG9jdW1lbnRhdGlv biBhbmQgZXhhbXBsZXMKCSAgICAgICJzdGF0aWMiKSkgICAgICAgICA7IDE1TSBzdGF0aWMgbGli cmFyeQogICAobmF0aXZlLWlucHV0cwogICAgYCgoInVuemlwIiAsdW56aXApKSkKICAgKHN5bm9w c2lzICJDKysgY2xhc3MgbGlicmFyeSBvZiBjcnlwdG9ncmFwaGljIHNjaGVtZXMiKQogICAoZGVz Y3JpcHRpb24gIkNyeXB0bysrIGlzIGEgbGFyZ2UgY29sbGVjdGlvbiBvZiBjcnlwdG9ncmFoaWMg YWxnb3JpdGhtcyBhbmQgcmVsYXRlZCB1dGlsaXRpZXMgZm9yIEMrKy4iKQogICAoaG9tZS1wYWdl ICJodHRwczovL2NyeXB0b3BwLmNvbSIpCgkgICAgICA7OyBUaGUgY29tcGlsYXRpb24gaXMgbGlj ZW5zZWQgdW5kZXIgQm9vc3QgMS4wLCB3aGlsZQoJICAgICAgOzsgbW9zdCBpbmRpdmlkdWFsIGZp bGVzIGFyZSBpbiB0aGUgcHVibGljIGRvbWFpbi4KCSAgICAgIDs7IFNob3VsZCB3ZSBhZGQgdHdv IGxpY2Vuc2VzPwogICAobGljZW5zZSAobGlzdCBsaWNlbnNlOmJvb3N0MS4wCgkJICBsaWNlbnNl OnB1YmxpYy1kb21haW4pKSkpCgooZGVmaW5lLXB1YmxpYyBsaWJyaW5nCiAgKHBhY2thZ2UKICAg KG5hbWUgImxpYnJpbmciKQogICAodmVyc2lvbiAiMjAxNzAzMTYuMS4wNmEzZjBiIikKICAgKHNv dXJjZQogICAgKG9yaWdpbgogICAgIChtZXRob2QgdXJsLWZldGNoKQogICAgICh1cmkgImh0dHA6 Ly9kbC5yaW5nLmN4L3JpbmctcmVsZWFzZS90YXJiYWxscy9yaW5nXzIwMTcwMzE2LjEuMDZhM2Yw Yi50YXIuZ3oiKQogICAgIChtb2R1bGVzICcoKGd1aXggYnVpbGQgdXRpbHMpKSkKICAgICAoc25p cHBldAogICAgICAnKGJlZ2luCgkgKGRlbGV0ZS1maWxlLXJlY3Vyc2l2ZWx5ICJkYWVtb24vY29u dHJpYiIpKSkKICAgICAoc2hhMjU2CiAgICAgIChiYXNlMzIKICAgICAgICIxbnFwcWwzMzQzZDdp Y2pmYnpsd2ttOGFpNWhyeDU0eDAzdjcyNmc1ZDZjMjRpeGx6ZHJiIikpKSkKICAgKGJ1aWxkLXN5 c3RlbSBnbnUtYnVpbGQtc3lzdGVtKQogICAoaW5wdXRzCiAgICBgKCgiYWxzYS1saWIiICxhbHNh LWxpYikKICAgICAgKCJib29zdCIgLGJvb3N0KQogICAgICAoImRidXMtYysrIiAsZGJ1cy1jKysp CiAgICAgICgiZXVkZXYiICxldWRldikKICAgICAgKCJmZm1wZWciICxmZm1wZWcpCiAgICAgICgi ZmxhYyIgLGZsYWMpCiAgICAgICgiZ21wIiAsZ21wKQogICAgICAoImdzbSIgLGdzbSkKICAgICAg KCJqYWNrIiAsamFjay0xKQogICAgICAoImpzb25jcHAiICxqc29uY3BwKQogICAgICAoImxpYm9n ZyIgLGxpYm9nZykKICAgICAgKCJsaWJ2YSIgLGxpYnZhKQogICAgICAoIm9wZW5kaHQiICxvcGVu ZGh0KQogICAgICAoIm9wdXMiICxvcHVzKQogICAgICAoInBjcmUiICxwY3JlKQogICAgICAoInBq cHJvamVjdCIgLHNhdm9pci1mYWlyZS1saW51eC1wanByb2plY3QpCiAgICAgICgicHVsc2VhdWRp byIgLHB1bHNlYXVkaW8pCiAgICAgICgibGlic2FtcGxlcmF0ZSIgLGxpYnNhbXBsZXJhdGUpCiAg ICAgICgibGlic25kZmlsZSIgLGxpYnNuZGZpbGUpCiAgICAgICgic3BlZXgiICxzcGVleCkKICAg ICAgKCJsaWJ1cG5wIiAsbGlidXBucCkKICAgICAgKCJsaWJ2b3JiaXMiICxsaWJ2b3JiaXMpCiAg ICAgICgibGlieDI2NCIgLGxpYngyNjQpCiAgICAgICgieWFtbC1jcHAiICx5YW1sLWNwcCkKICAg ICAgKCJ6bGliIiAsemxpYikKICAgICAgOzsgVGhlc2Ugd2VyZSBhZGRlZCBieSBhZGZlbm8gaGVy ZSBmb3Igbm93LCBwbGVhc2UgZml4IHRoaXMgaWYKICAgICAgOzsgdGhpcyBpc24ndCB0aGUgcmln aHQgcGxhY2UgZm9yIHRoZW0sCiAgICAgICgiY3J5cHRvKysiICxjcnlwdG8rKykKICAgICAgKCJw eXRob24iICxweXRob24pCiAgICAgICgicHl0aG9uLXdyYXBwZXIiICxweXRob24td3JhcHBlcikK ICAgICAgKCJyZXN0YmVkIiAsc2F2b2lyLWZhaXJlLWxpbnV4LXJlc3RiZWQpCiAgICAgICgibGli eDExIiAsbGlieDExKSkpCiAgIChuYXRpdmUtaW5wdXRzCiAgICBgKCgiYXV0b2NvbmYiICxhdXRv Y29uZikKICAgICAgKCJwa2ctY29uZmlnIiAscGtnLWNvbmZpZykKICAgICAgKCJhdXRvbWFrZSIg LGF1dG9tYWtlKQogICAgICAoImxpYnRvb2wiICxsaWJ0b29sKQogICAgICAoImNwcHVuaXQiICxj cHB1bml0KQogICAgICAoInBlcmwiICxwZXJsKSkpIDsgTmVlZGVkIGZvciBkb2N1bWVudGF0aW9u LgogICAoYXJndW1lbnRzCiAgICBgKCM6dGVzdHM/ICNmIDsgVGhlIHRlc3RzIGZhaWwgdG8gY29t cGlsZSBkdWUgdG8gbWlzc2luZyBoZWFkZXJzLgogICAgICAjOnBoYXNlcwogICAgICAobW9kaWZ5 LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCgkJICAgICAoYWRkLWFmdGVyICd1bnBhY2sgJ2NoYW5n ZS1kaXJlY3RvcnkKCQkJCShsYW1iZGEgXwoJCQkJICAoY2hkaXIgImRhZW1vbiIpKSkKCQkgICAg IChhZGQtYmVmb3JlICdjb25maWd1cmUgJ2F1dG9jb25mCgkJCQkgKGxhbWJkYSBfCgkJCQkgICAo emVybz8gKHN5c3RlbSogImF1dG9yZWNvbmYiICItdmZpIikpKSkKCQkgICAgIChhZGQtYmVmb3Jl ICdidWlsZCAnYWRkLWxpYi1kaXIKCQkJCSAobGFtYmRhIF8KCQkJCSAgIChta2RpciAic3JjL2xp YiIpKSkpKSkKICAgKHN5bm9wc2lzICJEaXN0cmlidXRlZCBtdWx0aW1lZGlhIGNvbW11bmljYXRp b25zIHBsYXRmb3JtIikKICAgKGRlc2NyaXB0aW9uICJSaW5nIGlzIGEgc2VjdXJlIGFuZCBkaXN0 cmlidXRlZCB2b2ljZSwgdmlkZW8gYW5kIGNoYXQKY29tbXVuaWNhdGlvbiBwbGF0Zm9ybSB0aGF0 IHJlcXVpcmVzIG5vIGNlbnRyYWxpemVkIHNlcnZlciBhbmQgbGVhdmVzIHRoZQpwb3dlciBvZiBw cml2YWN5IGluIHRoZSBoYW5kcyBvZiB0aGUgdXNlci4gIEl0IHN1cHBvcnRzIHRoZSBTSVAgYW5k IElBWApwcm90b2NvbHMsIGFzIHdlbGwgYXMgZGVjZW50cmFsaXplZCBjYWxsaW5nIHVzaW5nIFAy UC1ESFQuCgpUaGlzIHBhY2thZ2UgcHJvdmlkZXMgYSBsaWJyYXJ5IGFuZCBkYWVtb24gaW1wbGVt ZW50aW5nIHRoZSBSaW5nIGNvcmUgCmZ1bmN0aW9uYWxpdHkuIikKICAgKGhvbWUtcGFnZSAiaHR0 cHM6Ly9nbnUub3JnL3NvZnR3YXJlL3JpbmciKQogICAobGljZW5zZSBsaWNlbnNlOmdwbDMrKSkp CgooZGVmaW5lLXB1YmxpYyBsaWJyaW5nY2xpZW50CiAgKHBhY2thZ2UKICAgKG5hbWUgImxpYnJp bmdjbGllbnQiKQogICAodmVyc2lvbiAiMjAxNzAzMTYuMS4wNmEzZjBiIikKICAgKHNvdXJjZQog ICAgKG9yaWdpbgogICAgIChtZXRob2QgdXJsLWZldGNoKQogICAgICh1cmkgImh0dHA6Ly9kbC5y aW5nLmN4L3JpbmctcmVsZWFzZS90YXJiYWxscy9yaW5nXzIwMTcwMzE2LjEuMDZhM2YwYi50YXIu Z3oiKQogICAgIChzaGEyNTYKICAgICAgKGJhc2UzMgogICAgICAgIjFucXBxbDMzNDNkN2ljamZi emx3a204YWk1aHJ4NTR4MDN2NzI2ZzVkNmMyNGl4bHpkcmIiKSkpKQogICAoYnVpbGQtc3lzdGVt IGNtYWtlLWJ1aWxkLXN5c3RlbSkKICAgKHByb3BhZ2F0ZWQtaW5wdXRzCiAgICBgKCgibGlicmlu ZyIgLGxpYnJpbmcpIDsgRm9yICdkcmluZycuCiAgICAgICgicXRiYXNlIiAscXRiYXNlKSA7IFF0 IGlzIGluY2x1ZGVkIGluIHNldmVyYWwgaW5zdGFsbGVkIGhlYWRlcnMuCiAgICAgICgicXR0b29s cyIgLHF0dG9vbHMpKSkKICAgKGFyZ3VtZW50cwogICAgYCgjOnRlc3RzPyAjZiA7IFRoZXJlIGlz IG5vIHRlc3RzdWl0ZS4KICAgICAgIzpjb25maWd1cmUtZmxhZ3MKICAgICAgKGxpc3QgKHN0cmlu Zy1hcHBlbmQgIi1EUklOR19CVUlMRF9ESVI9IgoJCQkgICAoYXNzb2MtcmVmICVidWlsZC1pbnB1 dHMgImxpYnJpbmciKSAiL2luY2x1ZGUiKSkKCQkJICAgOzsgIi9kYWVtb24vaW5jbHVkZSIpKQog ICAgICAjOnBoYXNlcwogICAgICAobW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCgkJICAg ICAoYWRkLWFmdGVyICd1bnBhY2sgJ2NoYW5nZS1kaXJlY3RvcnkKCQkJCShsYW1iZGEgXwoJCQkJ ICAoY2hkaXIgImxyYyIpKSkKCQkgICAgIChhZGQtYmVmb3JlICdjb25maWd1cmUgJ2ZpeC1kYnVz LWludGVyZmFjZXMtcGF0aAoJCQkJKGxhbWJkYSogKCM6a2V5IGlucHV0cyAjOmFsbG93LW90aGVy LWtleXMpCgkJCQkJIChzdWJzdGl0dXRlKiAiQ01ha2VMaXN0cy50eHQiCgkJCQkJCSAgICAgICgo IlxcJFxce0NNQUtFX0lOU1RBTExfUFJFRklYXFx9KC9zaGFyZS9kYnVzLTEvaW50ZXJmYWNlcyki IF8gZGJ1cy1pbnRlcmZhY2VzLXBhdGgtc3VmZml4KQoJCQkJCQkgICAgICAgKHN0cmluZy1hcHBl bmQgKGFzc29jLXJlZiBpbnB1dHMgImxpYnJpbmciKQoJCQkJCQkJCSAgICAgIGRidXMtaW50ZXJm YWNlcy1wYXRoLXN1ZmZpeCkpKSkpKSkpCiAgIChzeW5vcHNpcyAiRGlzdHJpYnV0ZWQgbXVsdGlt ZWRpYSBjb21tdW5pY2F0aW9ucyBwbGF0Zm9ybSIpCiAgIChkZXNjcmlwdGlvbiAiUmluZyBpcyBh IHNlY3VyZSBhbmQgZGlzdHJpYnV0ZWQgdm9pY2UsIHZpZGVvIGFuZCBjaGF0CmNvbW11bmljYXRp b24gcGxhdGZvcm0gdGhhdCByZXF1aXJlcyBubyBjZW50cmFsaXplZCBzZXJ2ZXIgYW5kIGxlYXZl cyB0aGUKcG93ZXIgb2YgcHJpdmFjeSBpbiB0aGUgaGFuZHMgb2YgdGhlIHVzZXIuICBJdCBzdXBw b3J0cyB0aGUgU0lQIGFuZCBJQVgKcHJvdG9jb2xzLCBhcyB3ZWxsIGFzIGRlY2VudHJhbGl6ZWQg Y2FsbGluZyB1c2luZyBQMlAtREhULgoKVGhpcyBwYWNrYWdlIHByb3ZpZGVzIGEgbGlicmFyeSBj b21tb24gdG8gYWxsIFJpbmcgY2xpZW50cy4iKQogICAoaG9tZS1wYWdlICJodHRwczovL2dudS5v cmcvc29mdHdhcmUvcmluZyIpCiAgIChsaWNlbnNlIGxpY2Vuc2U6Z3BsMyspKSkKCihkZWZpbmUt cHVibGljIHJpbmctY2xpZW50LWdub21lCiAgOzsgRklYTUUgRmluZCBhIHdheSB0byB0ZWxsIEd1 aXggdG8gb25seSBidWlsZCB3aGF0IGlzIGluc2lkZQogIDs7ICJjbGllbnQtZ25vbWUiIHBhdGgu CiAgKHBhY2thZ2UKICAgKG5hbWUgInJpbmctY2xpZW50LWdub21lIikKICAgKHZlcnNpb24gIjIw MTcwMzE2LjEuMDZhM2YwYiIpCiAgIChzb3VyY2UKICAgIChvcmlnaW4KICAgICAobWV0aG9kIHVy bC1mZXRjaCkKICAgICAodXJpICJodHRwOi8vZGwucmluZy5jeC9yaW5nLXJlbGVhc2UvdGFyYmFs bHMvcmluZ18yMDE3MDMxNi4xLjA2YTNmMGIudGFyLmd6IikKICAgICAoc2hhMjU2CiAgICAgIChi YXNlMzIKICAgICAgICIxbnFwcWwzMzQzZDdpY2pmYnpsd2ttOGFpNWhyeDU0eDAzdjcyNmc1ZDZj MjRpeGx6ZHJiIikpKSkKICAgKGJ1aWxkLXN5c3RlbSBjbWFrZS1idWlsZC1zeXN0ZW0pCiAgIChp bnB1dHMKICAgIGAoKCJsaWJyaW5nY2xpZW50IiAsbGlicmluZ2NsaWVudCkKICAgICAgKCJndGsr IiAsZ3RrKykKICAgICAgKCJnbGliOmJpbiIgLGdsaWIgImJpbiIpCiAgICAgICgicXJlbmNvZGUi ICxxcmVuY29kZSkKICAgICAgKCJsaWJub3RpZnkiICxsaWJub3RpZnkpCiAgICAgICgiY2x1dHRl ciIgLGNsdXR0ZXIpCiAgICAgICgiY2x1dHRlci1ndGsiICxjbHV0dGVyLWd0aykKICAgICAgKCJn ZXR0ZXh0IiAsZ251LWdldHRleHQpCiAgICAgICgid2Via2l0Z3RrIiAsd2Via2l0Z3RrKSkpCiAg IChuYXRpdmUtaW5wdXRzCiAgICBgKCgicGtnLWNvbmZpZyIgLHBrZy1jb25maWcpCiAgICAgICgi ZG94eWdlbiIgLGRveHlnZW4pKSkKICAgKHByb3BhZ2F0ZWQtaW5wdXRzCiAgICBgKCgibGlicmlu ZyIgLGxpYnJpbmcpIDsgVGhpcyBpcyBuZWVkZWQgdG8gcnVuIGRyaW5nLgogICAgICAoImFkd2Fp dGEtaWNvbi10aGVtZSIgLGFkd2FpdGEtaWNvbi10aGVtZSkKICAgICAgKCJldm9sdXRpb24tZGF0 YS1zZXJ2ZXIiICxldm9sdXRpb24tZGF0YS1zZXJ2ZXIpKSkKICAgKGFyZ3VtZW50cwogICAgYCgj OnRlc3RzPyAjZiA7IFRoZXJlIGlzIG5vIHRlc3RzdWl0ZS4KICAgICAgIzpwaGFzZXMKICAgICAg KG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwoJCSAgICAgKGFkZC1hZnRlciAndW5wYWNr ICdjaGFuZ2UtZGlyZWN0b3J5CgkJCQkobGFtYmRhIF8KCQkJCSAgKGNoZGlyICJjbGllbnQtZ25v bWUiKSkpKSkpCiAgIChzeW5vcHNpcyAiRGlzdHJpYnV0ZWQgbXVsdGltZWRpYSBjb21tdW5pY2F0 aW9ucyBwbGF0Zm9ybSIpCiAgIChkZXNjcmlwdGlvbiAiUmluZyBpcyBhIHNlY3VyZSBhbmQgZGlz dHJpYnV0ZWQgdm9pY2UsIHZpZGVvIGFuZCBjaGF0CmNvbW11bmljYXRpb24gcGxhdGZvcm0gdGhh dCByZXF1aXJlcyBubyBjZW50cmFsaXplZCBzZXJ2ZXIgYW5kIGxlYXZlcyB0aGUKcG93ZXIgb2Yg cHJpdmFjeSBpbiB0aGUgaGFuZHMgb2YgdGhlIHVzZXIuICBJdCBzdXBwb3J0cyB0aGUgU0lQIGFu ZCBJQVgKcHJvdG9jb2xzLCBhcyB3ZWxsIGFzIGRlY2VudHJhbGl6ZWQgY2FsbGluZyB1c2luZyBQ MlAtREhULgoKVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSBSaW5nIGNsaWVudCBmb3IgdGhlIEdu b21lIERlc2t0b3AuIikKICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9nbnUub3JnL3NvZnR3YXJlL3Jp bmciKQogICAobGljZW5zZSBsaWNlbnNlOmdwbDMrKSkpCg== --=-=-=--