From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Okamsn via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#67611: [PATCH] Add a Pcase pattern `cl-lambda` equivalent to `cl-destructuring-bind` Date: Mon, 25 Dec 2023 21:30:07 +0000 Message-ID: <30f1bf76-1cf1-493e-be4f-38e405d0ecf6@protonmail.com> References: <277dd49a-e96d-4faf-a22e-aca952354a37@protonmail.com> Reply-To: Okamsn Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_zK7jswiu7zFIyB0mc7Of1fDganPK9zM5sPGTRMaSZA" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="13828"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 67611@debbugs.gnu.org, joaotavora@gmail.com To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon Dec 25 22:32:16 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1rHsYa-0003O2-Bz for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 25 Dec 2023 22:32:16 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rHsYH-0002ho-Dr; Mon, 25 Dec 2023 16:31:57 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rHsYG-0002hR-2F for bug-gnu-emacs@gnu.org; Mon, 25 Dec 2023 16:31:56 -0500 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rHsYF-0005eY-Py for bug-gnu-emacs@gnu.org; Mon, 25 Dec 2023 16:31:55 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rHsYM-0002wv-9q for bug-gnu-emacs@gnu.org; Mon, 25 Dec 2023 16:32:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Okamsn Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 25 Dec 2023 21:32:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 67611 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-Cc: bug-gnu-emacs@gnu.org, =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Original-Received: via spool by submit@debbugs.gnu.org id=B.170353988511115 (code B ref -1); Mon, 25 Dec 2023 21:32:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 25 Dec 2023 21:31:25 +0000 Original-Received: from localhost ([127.0.0.1]:55465 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rHsXi-0002rS-Nj for submit@debbugs.gnu.org; Mon, 25 Dec 2023 16:31:25 -0500 Original-Received: from lists.gnu.org ([2001:470:142::17]:50148) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rHsXd-0002gg-HI for submit@debbugs.gnu.org; Mon, 25 Dec 2023 16:31:21 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rHsXQ-0002e9-Fc for bug-gnu-emacs@gnu.org; Mon, 25 Dec 2023 16:31:04 -0500 Original-Received: from mail-4322.protonmail.ch ([185.70.43.22]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rHsXL-0005YV-A4 for bug-gnu-emacs@gnu.org; Mon, 25 Dec 2023 16:31:04 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1703539842; x=1703799042; bh=du/Rnv1ZEkIGuWOXmBT6l5oOzz65zmNgeKUILGazc4s=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=H4YoG/z+UbwpHfB4kKJAxBnn6c4z9jMRW/BG8LYmvoHA+0m20mHRrchkBk838hxgq zusqvXHLjFlStsSawOjHPUbkZtcO4CwsNqXlDohUZFMqJFgW9tl2lclg+AKSijFpIA lg+k+OQBqGN9cAb8uaAZlQzc4oUfPSaVmqX5ZVG6QHf9yBlLuA1r20Pi8vCJNQ1w+K /6Nz3yRlTzsulg9+UNgjPZ0/cT3KMjFTKG1dK9huav+GaK+94kvGd2pVI7ruEXZo2R RivGJLwc7xLIeF3CKI3I9KHQ9Ac9o9QaFLI9qbFQ632Fajtt43b9KgSYeVO/OSpWN5 iDTz/7cJcFk4w== In-Reply-To: Feedback-ID: 25935600:user:proton Received-SPF: pass client-ip=185.70.43.22; envelope-from=okamsn@protonmail.com; helo=mail-4322.protonmail.ch X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:276893 Archived-At: This is a multi-part message in MIME format. --b1_zK7jswiu7zFIyB0mc7Of1fDganPK9zM5sPGTRMaSZA Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Stefan Monnier wrote: >> The attached patch adds the pattern `cl-lambda` for Pcase, which works >> like `cl-destructuring-bind`. There are two differences with the lambda >> lists: >=20 > Hmm... I'm not sure mixing the CL destructuring patterns with the Pcase > patterns (both of which are rather featureful and complex) will help > their popularity. >=20 > Beside that problem (which means I'm not very favorable to the > addition), the name should be changed because "lambda" is misleading. > It suggests this has to do with a function (I had to read the code to > understand what this is doing). >=20 >> The pattern is useful when one wants to combine the features of `pcase` >> and `cl-destructuring-bind`, such combining the optional values with the >> `pred` or `guard` patterns. >=20 > Do you have examples uses? >=20 > Maybe we could introduce a different Pcase pattern which covers those > needs but stays closer to the Pcase pattern syntax? >=20 >=20 > Stefan >=20 Hello, Because I wrote this patch with the thought that others might want it, I=20 don't have any nontrivial examples to share right now. The best example=20 I have for the use of the optional arguments is for the implementing of=20 the optional arguments, which isn't very convincing. I've updated the patch to rename the pattern to `cl-arglist` and to=20 avoid creating intermediate variables using the `let` pattern, but I'm=20 fine with resting the discussion here until a stronger argument can be=20 made in favor of the patch. Thank you. --b1_zK7jswiu7zFIyB0mc7Of1fDganPK9zM5sPGTRMaSZA Content-Type: text/x-patch; charset=UTF-8; name=v2-0001-Add-the-Pcase-pattern-cl-arglist-for-matching-a-C.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0001-Add-the-Pcase-pattern-cl-arglist-for-matching-a-C.patch RnJvbSBlMTc1MmRhODYzYjQ0YzkzZDEzOWNhODhiZjhjN2Y2NTQ5MjI5ZDE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFYXJsIEh5YXR0IDxva2Ftc25AcHJvdG9ubWFpbC5jb20+CkRh dGU6IFNhdCwgMjUgTm92IDIwMjMgMTM6MDA6MDMgLTA1MDAKU3ViamVjdDogW1BBVENIIHYyXSBB ZGQgdGhlIFBjYXNlIHBhdHRlcm4gYGNsLWFyZ2xpc3QnIGZvciBtYXRjaGluZyBhIENMCiBhcmd1 bWVudCBsaXN0LgoKVGhpcyBwYXR0ZXJuIG1hdGNoZXMgZnVuY3Rpb24gYXJndW1lbnQgbGlzdHMg YXMgZGVzY3JpYmVkIGluIHRoZSBJbmZvCm5vZGUgYChjbClBcmd1bWVudCBMaXN0cycuCgoqIGxp c3AvZW1hY3MtbGlzcC9jbC1tYWNzLmVsIChjbC1hcmdsaXN0LS1wY2FzZS1tYWNyb2V4cGFuZGVy KQooY2wtYXJnbGlzdCwgY2wtLXBjYXNlLWFyZ2xpc3QtbGlzdC1nZXQtdmFyLWdyb3VwcykKKGNs LS1wY2FzZS1jbC1hcmdsaXN0LXBvc2l0aW9uYWwtcGF0dGVybikKKGNsLS1wY2FzZS1jbC1hcmds aXN0LXBsaXN0LWtleXMpCihjbC0tcGNhc2UtY2wtYXJnbGlzdC0ma2V5LXBhdHRlcm4pCihjbC0t cGNhc2UtY2wtYXJnbGlzdC0mYXV4LXBhdHRlcm4pOgpBZGQgcGF0dGVybiBhbmQgc3VwcG9ydGlu ZyBmdW5jdGlvbnMuCgoqIHRlc3QvbGlzcC9lbWFjcy1saXNwL3BjYXNlLXRlc3RzLmVsOgoocGNh c2UtdGVzdHMtY2wtYXJnbGlzdC0md2hvbGUtc2hvdWxkLWVycm9yKQoocGNhc2UtdGVzdHMtY2wt YXJnbGlzdC0md2hvbGUpCihwY2FzZS10ZXN0cy1jbC1hcmdsaXN0LXBvcywgcGNhc2UtdGVzdHMt Y2wtYXJnbGlzdC1wb3Mtc3ViLXBhdHRlcm5zKQoocGNhc2UtdGVzdHMtY2wtYXJnbGlzdC0mb3B0 aW9uYWwtc2hvdWxkLWVycm9yKQoocGNhc2UtdGVzdHMtY2wtYXJnbGlzdC0mb3B0aW9uYWwpCihw Y2FzZS10ZXN0cy1jbC1hcmdsaXN0LSZvcHRpb25hbC1zdWItcGF0dGVybnMpCihwY2FzZS10ZXN0 cy1jbC1hcmdsaXN0LSZyZXN0LXNob3VsZC1lcnJvcikKKHBjYXNlLXRlc3RzLWNsLWFyZ2xpc3Qt JnJlc3Qtbm9ubGlzdC1jZHIpCihwY2FzZS10ZXN0cy1jbC1hcmdsaXN0LSZyZXN0LXdpdGgtJndo b2xlKQoocGNhc2UtdGVzdHMtY2wtYXJnbGlzdC0mcmVzdC1vbmx5KQoocGNhc2UtdGVzdHMtY2wt YXJnbGlzdC0mcmVzdC1hZnRlci0mb3B0aW9uYWwpCihwY2FzZS10ZXN0cy1jbC1hcmdsaXN0LSZy ZXN0LXN1Yi1wYXR0ZXJucykKKHBjYXNlLXRlc3RzLWNsLWFyZ2xpc3QtJmtleS1zaG91bGQtZXJy b3IpCihwY2FzZS10ZXN0cy1jbC1hcmdsaXN0LSZrZXktZXhhY3QpCihwY2FzZS10ZXN0cy1jbC1h cmdsaXN0LSZrZXktcGVybWlzc2l2ZSkKKHBjYXNlLXRlc3RzLWNsLWFyZ2xpc3QtJmtleS1ub3Qt Zmlyc3QpCihwY2FzZS10ZXN0cy1jbC1hcmdsaXN0LSZrZXktZnVsbC1mb3JtKQoocGNhc2UtdGVz dHMtY2wtYXJnbGlzdC0ma2V5LXN1Yi1wYXR0ZXJucykKKHBjYXNlLXRlc3RzLWNsLWFyZ2xpc3Qt JmF1eC1zaG91bGQtZXJyb3IpCihwY2FzZS10ZXN0cy1jbC1hcmdsaXN0LSZhdXgpCihwY2FzZS10 ZXN0cy1jbC1hcmdsaXN0LSZhdXgtc3ViLXBhdHRlcm5zKQoocGNhc2UtdGVzdHMtY2wtYXJnbGlz dC1hbGwpOgpBZGQgdGVzdHMuCi0tLQogbGlzcC9lbWFjcy1saXNwL2NsLW1hY3MuZWwgICAgICAg ICAgfCAzNDMgKysrKysrKysrKysrKysrKysrCiB0ZXN0L2xpc3AvZW1hY3MtbGlzcC9wY2FzZS10 ZXN0cy5lbCB8IDUxNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5n ZWQsIDg1OCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbGlzcC9lbWFjcy1saXNwL2NsLW1h Y3MuZWwgYi9saXNwL2VtYWNzLWxpc3AvY2wtbWFjcy5lbAppbmRleCA3YzIwN2QzNzJmYy4uMGUx MDAxMWE1MDYgMTAwNjQ0Ci0tLSBhL2xpc3AvZW1hY3MtbGlzcC9jbC1tYWNzLmVsCisrKyBiL2xp c3AvZW1hY3MtbGlzcC9jbC1tYWNzLmVsCkBAIC0zODI1LDYgKzM4MjUsMzQ5IEBAIGNsLXR5cGUK IFRZUEUgaXMgYSB0eXBlIGRlc2NyaXB0b3IgYXMgYWNjZXB0ZWQgYnkgYGNsLXR5cGVwJywgd2hp Y2ggc2VlLiIKICAgYChwcmVkIChwY2FzZS0tZmxpcCBjbC10eXBlcCAnLHR5cGUpKSkKIAorOzs7 IFBjYXNlIGxhbWJkYS1saXN0IHBhdHRlcm4KKworOzsgVGhpcyBwYXR0ZXJuIGlzIGxpa2UgYGNs LWRlc3RydWN0dXJpbmctYmluZCcsIGJ1dCB3aXRoIGBwY2FzZScuICBXZQorOzsgY2FuJ3QgdXNl IGBjbC0tZG8tYXJnbGlzdCcgZm9yIHRoaXMsIGJlY2F1c2UgYGNsLS1kby1hcmdsaXN0JyB1c2Vz Cis7OyBgcG9wJyB0byBtb2RpZnkgZWFybGllciB2YXJpYWJsZXMgd2hpbGUgc2V0dGluZyBsYXRl ciBvbmVzLCB3aGljaAorOzsgZG9lc24ndCBzZWVtIHRvIHdvcmsgd2l0aCBgcGNhc2UnLgorCiso ZGVmaW5lLWVycm9yICdjbC0tcGNhc2UtY2wtYXJnbGlzdC1pbnZhbGlkLWFyZy1saXN0CisgICAg ICAgICAgICAgICJJbnZhbGlkIGFyZ3VtZW50IGxpc3QgdXNlZCBpbiBgY2wtYXJnbGlzdCcgcGF0 dGVybi4iKQorCisoZGVmdW4gY2wtLXBjYXNlLWNsLWFyZ2xpc3QtdmFyLWdyb3VwcyAobGFtYmRh LWxpc3QpCisgICJSZXR1cm4gdGhlIGFsaXN0IG9mIHZhcmlhYmxlIGdyb3VwcyBpbiBMQU1CREEt TElTVC4KKworTGlzdHMgYXJlIG9mIHRoZSBmb3JtCitgKFsmd2hvbGUgV0hPTEUtVkFSXSBbUE9T LVZBUlNdIFsmb3B0aW9uYWwgT1BULVZBUlNdIFsmcmVzdCBSRVNULVZBUl0KK1sma2V5IEtFWS1W QVJTXSBbJmF1eCBBVVgtVkFSU10pJy4iCisgIChsZXQgKCh3aG9sZS12YXIpIChwcm9jZXNzaW5n LXdob2xlKQorICAgICAgICAocG9zLXZhcikKKyAgICAgICAgKG9wdC12YXIpIChwcm9jZXNzaW5n LW9wdHMpCisgICAgICAgIChyZXN0LXZhcikgKHByb2Nlc3NpbmctcmVzdCkgKGRvdHRlZC1yZXN0 LXZhcikKKyAgICAgICAgKGtleS12YXIpIChwcm9jZXNzaW5nLWtleXMpIChhbGxvdy1vdGhlci1r ZXlzKQorICAgICAgICAoYXV4LXZhcikgKHByb2Nlc3NpbmctYXV4cykKKyAgICAgICAgKHJlbWFp bmluZy1saXN0IChjbC1jb3B5LWxpc3QgbGFtYmRhLWxpc3QpKSkKKworICAgICh3aGVuIChub3Qg KHByb3Blci1saXN0LXAgcmVtYWluaW5nLWxpc3QpKQorICAgICAgKGNsLXNoaWZ0ZiBkb3R0ZWQt cmVzdC12YXIKKyAgICAgICAgICAgICAgICAgKGNkciAobGFzdCByZW1haW5pbmctbGlzdCkpCisg ICAgICAgICAgICAgICAgIG5pbCkpCisKKyAgICAoY2wtZmxldCAoKG1pc3NpbmctYWZ0ZXIgKGNk cikgKG9yIChudWxsIGNkcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChtZW1xIChjYXIgY2RyKSBjbC0tbGFtYmRhLWxpc3Qta2V5d29yZHMpKSkKKyAgICAgICAgICAg ICAgKHN0b3AtcHJvY2Vzc2luZyAoKSAoc2V0cSBwcm9jZXNzaW5nLXdob2xlIG5pbAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Npbmctb3B0cyBuaWwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzaW5nLXJlc3Qgbmls CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZy1rZXlz IG5pbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Npbmct YXV4cyBuaWwpKSkKKworICAgICAgKGNsLWxvb3AKKyAgICAgICBmb3IgKGZpcnN0IC4gcmVzdCkg b24gcmVtYWluaW5nLWxpc3QKKyAgICAgICBkbworICAgICAgIChwY2FzZSBmaXJzdAorICAgICAg ICAgKCcmd2hvbGUKKyAgICAgICAgICAoaWYgKG9yIChtaXNzaW5nLWFmdGVyIHJlc3QpCisgICAg ICAgICAgICAgICAgICB3aG9sZS12YXIgcG9zLXZhciBvcHQtdmFyCisgICAgICAgICAgICAgICAg ICByZXN0LXZhciBrZXktdmFyIGFsbG93LW90aGVyLWtleXMgYXV4LXZhcikKKyAgICAgICAgICAg ICAgKHNpZ25hbCAnY2wtLXBjYXNlLWNsLWFyZ2xpc3QtaW52YWxpZC1hcmctbGlzdCAobGlzdCBs YW1iZGEtbGlzdCkpCisgICAgICAgICAgICAoc3RvcC1wcm9jZXNzaW5nKQorICAgICAgICAgICAg KHNldHEgcHJvY2Vzc2luZy13aG9sZSB0KSkpCisKKyAgICAgICAgICgnJm9wdGlvbmFsCisgICAg ICAgICAgKGlmIChvciAobWlzc2luZy1hZnRlciByZXN0KQorICAgICAgICAgICAgICAgICAgb3B0 LXZhciByZXN0LXZhciBrZXktdmFyIGFsbG93LW90aGVyLWtleXMgYXV4LXZhcikKKyAgICAgICAg ICAgICAgKHNpZ25hbCAnY2wtLXBjYXNlLWNsLWFyZ2xpc3QtaW52YWxpZC1hcmctbGlzdAorICAg ICAgICAgICAgICAgICAgICAgIChsaXN0IGxhbWJkYS1saXN0KSkKKyAgICAgICAgICAgIChzdG9w LXByb2Nlc3NpbmcpCisgICAgICAgICAgICAoc2V0cSBwcm9jZXNzaW5nLW9wdHMgdCkpKQorCisg ICAgICAgICAoKG9yICcmcmVzdCAnJmJvZHkpCisgICAgICAgICAgKGlmIChvciAobWlzc2luZy1h ZnRlciByZXN0KQorICAgICAgICAgICAgICAgICAgcmVzdC12YXIga2V5LXZhciBhbGxvdy1vdGhl ci1rZXlzIGF1eC12YXIKKyAgICAgICAgICAgICAgICAgIGRvdHRlZC1yZXN0LXZhcikKKyAgICAg ICAgICAgICAgKHNpZ25hbCAnY2wtLXBjYXNlLWNsLWFyZ2xpc3QtaW52YWxpZC1hcmctbGlzdAor ICAgICAgICAgICAgICAgICAgICAgIChsaXN0IGxhbWJkYS1saXN0KSkKKyAgICAgICAgICAgIChz dG9wLXByb2Nlc3NpbmcpCisgICAgICAgICAgICAoc2V0cSBwcm9jZXNzaW5nLXJlc3QgdCkpKQor CisgICAgICAgICAoJyZrZXkKKyAgICAgICAgICAoaWYgKG9yIChtaXNzaW5nLWFmdGVyIHJlc3Qp CisgICAgICAgICAgICAgICAgICBrZXktdmFyIGFsbG93LW90aGVyLWtleXMgYXV4LXZhcgorICAg ICAgICAgICAgICAgICAgZG90dGVkLXJlc3QtdmFyKQorICAgICAgICAgICAgICAoc2lnbmFsICdj bC0tcGNhc2UtY2wtYXJnbGlzdC1pbnZhbGlkLWFyZy1saXN0CisgICAgICAgICAgICAgICAgICAg ICAgKGxpc3QgbGFtYmRhLWxpc3QpKQorICAgICAgICAgICAgKHN0b3AtcHJvY2Vzc2luZykKKyAg ICAgICAgICAgIChzZXRxIHByb2Nlc3Npbmcta2V5cyB0KSkpCisKKyAgICAgICAgICgnJmFsbG93 LW90aGVyLWtleXMKKyAgICAgICAgICAoaWYgKG9yIChub3QgcHJvY2Vzc2luZy1rZXlzKQorICAg ICAgICAgICAgICAgICAgYWxsb3ctb3RoZXIta2V5cworICAgICAgICAgICAgICAgICAgZG90dGVk LXJlc3QtdmFyKQorICAgICAgICAgICAgICAoc2lnbmFsICdjbC0tcGNhc2UtY2wtYXJnbGlzdC1p bnZhbGlkLWFyZy1saXN0CisgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgbGFtYmRhLWxpc3Qp KQorICAgICAgICAgICAgKHN0b3AtcHJvY2Vzc2luZykKKyAgICAgICAgICAgIChzZXRxIGFsbG93 LW90aGVyLWtleXMgdCkpKQorCisgICAgICAgICAoJyZhdXgKKyAgICAgICAgICAoaWYgKG9yICht aXNzaW5nLWFmdGVyIHJlc3QpCisgICAgICAgICAgICAgICAgICBhdXgtdmFyCisgICAgICAgICAg ICAgICAgICBkb3R0ZWQtcmVzdC12YXIpCisgICAgICAgICAgICAgIChzaWduYWwgJ2NsLS1wY2Fz ZS1jbC1hcmdsaXN0LWludmFsaWQtYXJnLWxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAobGlz dCBsYW1iZGEtbGlzdCkpCisgICAgICAgICAgICAoc3RvcC1wcm9jZXNzaW5nKQorICAgICAgICAg ICAgKHNldHEgcHJvY2Vzc2luZy1hdXhzIHQpKSkKKworICAgICAgICAgKChndWFyZCBwcm9jZXNz aW5nLXdob2xlKQorICAgICAgICAgIChzZXRxIHdob2xlLXZhciBmaXJzdAorICAgICAgICAgICAg ICAgIHByb2Nlc3Npbmctd2hvbGUgbmlsKSkKKworICAgICAgICAgKChndWFyZCBwcm9jZXNzaW5n LXJlc3QpCisgICAgICAgICAgKHNldHEgcmVzdC12YXIgZmlyc3QKKyAgICAgICAgICAgICAgICBw cm9jZXNzaW5nLXJlc3QgbmlsKSkKKworICAgICAgICAgKChndWFyZCBwcm9jZXNzaW5nLW9wdHMp CisgICAgICAgICAgKHB1c2ggZmlyc3Qgb3B0LXZhcikpCisKKyAgICAgICAgICgoZ3VhcmQgcHJv Y2Vzc2luZy1rZXlzKQorICAgICAgICAgIChwdXNoIGZpcnN0IGtleS12YXIpKQorCisgICAgICAg ICAoKGd1YXJkIHByb2Nlc3NpbmctYXV4cykKKyAgICAgICAgICAocHVzaCBmaXJzdCBhdXgtdmFy KSkKKworICAgICAgICAgKCcmZW52aXJvbm1lbnQKKyAgICAgICAgICAoc2lnbmFsICdjbC0tcGNh c2UtY2wtYXJnbGlzdC1pbnZhbGlkLWFyZy1saXN0CisgICAgICAgICAgICAgICAgICAobGlzdCBs YW1iZGEtbGlzdCkpKQorCisgICAgICAgICAoXworICAgICAgICAgIChpZiAob3Igb3B0LXZhciBy ZXN0LXZhciBrZXktdmFyIGF1eC12YXIKKyAgICAgICAgICAgICAgICAgIGFsbG93LW90aGVyLWtl eXMpCisgICAgICAgICAgICAgIChzaWduYWwgJ2NsLS1wY2FzZS1jbC1hcmdsaXN0LWludmFsaWQt YXJnLWxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAobGlzdCBsYW1iZGEtbGlzdCkpCisgICAg ICAgICAgICAocHVzaCBmaXJzdCBwb3MtdmFyKSkpKSkpCisKKyAgICBgKCh3aG9sZSAuICx3aG9s ZS12YXIpCisgICAgICAocG9zIC4gLChucmV2ZXJzZSBwb3MtdmFyKSkKKyAgICAgIChvcHQgLiAs KG5yZXZlcnNlIG9wdC12YXIpKQorICAgICAgKHJlc3QgLiAsKG9yIGRvdHRlZC1yZXN0LXZhciBy ZXN0LXZhcikpCisgICAgICAoa2V5IC4gLChucmV2ZXJzZSBrZXktdmFyKSkKKyAgICAgIChhbGxv dy1vdGhlci1rZXlzIC4gLGFsbG93LW90aGVyLWtleXMpCisgICAgICAoYXV4IC4gLChucmV2ZXJz ZSBhdXgtdmFyKSkpKSkKKworKGRlZnVuIGNsLS1wY2FzZS1jbC1hcmdsaXN0LXBvc2l0aW9uYWwt cGF0dGVybiAocG9zLXZhcnMgb3B0LXZhcnMgcmVzdC12YXIga2V5LXZhcnMpCisgICJCdWlsZCBh IHBhdHRlcm4gZm9yIHRoZSBwb3NpdGlvbmFsLCBgJm9wdGlvbmFsJywgYW5kIGAmcmVzdCcgdmFy aWFibGVzLgorCitQT1MtVkFSUyBpcyB0aGUgbGlzdCBvZiB0aGUgcG9zaXRpb25hbCB2YXJpYWJs ZXMuICBPUFQtVkFSUyBpcyB0aGUgbGlzdCBvZgordGhlIG9wdGlvbmFsIHZhcmlhYmxlcy4gIFJF U1QtVkFSIGlzIHRoZSBgJnJlc3QnIHZhcmlhYmxlLiIKKyAgOzsgQSBtb2RpZmllZCB2ZXJzaW9u IG9mIHRoZSBiYWNrLXF1b3RlIHBhdHRlcm4gdG8gYmV0dGVyIHdvcmsgd2l0aAorICA7OyBvcHRp b25hbCB2YWx1ZXMuCisgIChjb25kCisgICAocG9zLXZhcnMgYChhbmQgKHByZWQgY29uc3ApCisg ICAgICAgICAgICAgICAgICAgKGFwcCBjYXItc2FmZSAsKGNhciBwb3MtdmFycykpCisgICAgICAg ICAgICAgICAgICAgKGFwcCBjZHItc2FmZSAsKGNsLS1wY2FzZS1jbC1hcmdsaXN0LXBvc2l0aW9u YWwtcGF0dGVybgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2RyIHBvcy12 YXJzKSBvcHQtdmFycworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0LXZh ciBrZXktdmFycykpKSkKKyAgIChvcHQtdmFycyAocGNhc2UtbGV0ICgoKG9yIGAoLHZhciAsZGVm YXVsdCAsc3VwcGxpZWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgKCx2YXIgLGRl ZmF1bHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgKCx2YXIpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB2YXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChjYXIg b3B0LXZhcnMpKSkKKyAgICAgICAgICAgICAgIGAoYW5kIChwcmVkIGxpc3RwKQorICAgICAgICAg ICAgICAgICAgICAgKGFwcCBjYXItc2FmZSAob3IgKGFuZCAocHJlZCBudWxsKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsQCh3aGVuIHN1cHBsaWVkIGAoKGxl dCAsc3VwcGxpZWQgbmlsKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICxAKHdoZW4gZGVmYXVsdCBgKChsZXQgLHZhciAsZGVmYXVsdCkpKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwoaWYgc3VwcGxpZWQKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYChhbmQgKGxldCAsc3VwcGxpZWQgdCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLHZhcikK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcikpKQorICAgICAg ICAgICAgICAgICAgICAgKGFwcCBjZHItc2FmZSAsKGNsLS1wY2FzZS1jbC1hcmdsaXN0LXBvc2l0 aW9uYWwtcGF0dGVybgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbCAo Y2RyIG9wdC12YXJzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Qt dmFyIGtleS12YXJzKSkpKSkKKyAgIChyZXN0LXZhciByZXN0LXZhcikKKyAgIDs7IGBwY2FzZScg YWxsb3dzIGAoLGEgLGIpIHRvIG1hdGNoICgxIDIgMyksIHNvIHdlIG5lZWQgdG8gbWFrZQorICAg Ozsgc3VyZSB0aGVyZSBhcmVuJ3QgbW9yZSB2YWx1ZXMgbGVmdC4gIEhvd2V2ZXIsIGlmIHdlIGFy ZSB1c2luZworICAgOzsgYCZrZXknLCB0aGVuIHdlIGFsbG93IG1vcmUgdmFsdWVzLgorICAgKGtl eS12YXJzICdfKQorICAgKHQgJyhwcmVkIG51bGwpKSkpCisKKyhkZWZ1biBjbC0tcGNhc2UtY2wt YXJnbGlzdC0ma2V5LXBhdHRlcm4gKGtleS12YXJzIGFsbG93LW90aGVyLWtleXMpCisgICJCdWls ZCBhIGBwY2FzZScgcGF0dGVybiBmb3IgdGhlIGAma2V5JyB2YXJpYWJsZXMuCisKK0tFWS1WQVJT IGFyZSB0aGUgZm9ybXMgb2YgdGhlIGtleSB2YXJpYWJsZXMuICBBTExPVy1PVEhFUi1LRVlTIGlz Cit3aGV0aGVyIGAmYWxsb3ctb3RoZXIta2V5cycgd2FzIHVzZWQuICBQTElTVC1WQVIgaXMgdGhl IHZhcmlhYmxlCitob2xkaW5nIHRoZSBwcm9wZXJ0eSBsaXN0LiIKKyAgOzsgSWYgd2UgYXJlbid0 IGNoZWNraW5nIHdoZXRoZXIgYWxsIGtleXMgaW4gRVhQVkFMIHdlcmUgZ2l2ZW4sCisgIDs7IHRo ZW4gd2UgY2FuIHVzZSBzaW1wbGVyIHBhdHRlcm5zIHNpbmNlIHdlIGRvbid0IG5lZWQgdG8gc3Rv cmUgdGhlCisgIDs7IHZhbHVlIG9mIHRoZSBrZXkuCisgIChjbC1mbGV0ICgoZ2V0LXZhci1kYXRh ICh2YXItZm9ybSkKKyAgICAgICAgICAgICAgKHBjYXNlLWxldCAoKChvciAob3IgYCgoLGtleSAs dmFyKSAsZGVmYXVsdCAsc3VwcGxpZWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGAoKCxrZXkgLHZhcikgLGRlZmF1bHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGAoKCxrZXkgLHZhcikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChh bmQgKG9yIGAoLHZhciAsZGVmYXVsdCAsc3VwcGxpZWQpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYCgsdmFyICxkZWZhdWx0KQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGAoLHZhcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoYW5kIChwcmVkIHN5bWJvbHApCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB2YXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOzsgU3RyaXAgYSBsZWFkaW5nIHVuZGVyc2NvcmUsIHNpbmNlIGl0CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBvbmx5IG1lYW5zIHRoYXQgdGhpcyBhcmd1bWVu dCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgdW51c2VkLCBidXQg c2hvdWxkbid0IGFmZmVjdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDs7IGtleSdzIG5hbWUgKGJ1ZyMxMjM2NykuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAobGV0IGtleSAoaW50ZXJuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGZvcm1hdCAiOiVzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKG5hbWUgKHN5bWJvbC1uYW1lIHZhcikp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoaWYgKGVxID9fIChhcmVmIG5hbWUgMCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3Vic3RyaW5nIG5hbWUgMSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1l KSkpKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyLWZvcm0pKQorICAgICAgICAg ICAgICAgIChsaXN0IGtleSB2YXIgZGVmYXVsdCBzdXBwbGllZCkpKSkKKyAgICAoaWYgYWxsb3ct b3RoZXIta2V5cworICAgICAgICBgKGFuZCAsQChtYXBjYXIgKGxhbWJkYSAodmFyLWZvcm0pCisg ICAgICAgICAgICAgICAgICAgICAgICAgIChwY2FzZS1sZXQgKChgKCxrZXkgLHZhciAsZGVmYXVs dCAsc3VwcGxpZWQpIChnZXQtdmFyLWRhdGEgdmFyLWZvcm0pKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoa2V5LWZvdW5kIChnZW5zeW0gImtleS1mb3VuZCIpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxpc3QgKGdlbnN5bSAicGxpc3Qi KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmQgKHN1cHBsaWVkCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoYXBwIChsYW1iZGEgKCxwbGlzdCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgoLGtleS1mb3VuZCAo cGxpc3QtbWVtYmVyICxwbGlzdCAsa2V5KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoaWYgLGtleS1mb3VuZAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zIHQgKGNhZHIgLHBsaXN0KSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMgbmlsICxkZWZhdWx0 KSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLCdcYCAoKCwn XCwgLHN1cHBsaWVkKSAuICgsJ1wsICx2YXIpKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAo YXBwIChsYW1iZGEgKCxwbGlzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAobGV0ICgoLGtleS1mb3VuZCAocGxpc3QtbWVtYmVyICxwbGlzdCAsa2V5KSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgLGtleS1mb3Vu ZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYWRy ICxwbGlzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LGRlZmF1bHQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLHZh cikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYChhcHAgKHBjYXNlLS1mbGlwIHBsaXN0LWdldCAsa2V5KQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsdmFyKSkpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgIGtleS12YXJzKSkKKyAgICAgIDs7IElmIHdlIGFyZSBjaGVja2lu ZyB3aGV0aGVyIHRoZXJlIGFyZSBubyBvdGhlciBrZXlzIGluIEVYUFZBTCwKKyAgICAgIDs7IHRo ZW4gd2UgdXNlIGEgc2luZ2xlIGZ1bmN0aW9uIGZvciBleHRyYWN0aW5nIHRoZSBhc3NvY2lhdGVk CisgICAgICA7OyB2YWx1ZXMgYW5kIHBlcmZvcm1pbmcgdGhlIGNoZWNrLCB3aG9zZSBvdXRwdXQg d2UgbWF0Y2ggYWdhaW5zdAorICAgICAgOzsgYSBsaXN0IG9mIHBhdHRlcm5zLgorICAgICAgKGxl dCAoKHJlcyAoZ2Vuc3ltICJyZXMiKSkKKyAgICAgICAgICAgIChrZXlzIChnZW5zeW0gImtleXMi KSkKKyAgICAgICAgICAgIChwbGlzdCAoZ2Vuc3ltICJwbGlzdCIpKQorICAgICAgICAgICAgKHBh dHMgbmlsKSkKKyAgICAgICAgYChhcHAgKGxhbWJkYSAoLHBsaXN0KQorICAgICAgICAgICAgICAg IChsZXQgKCgscmVzIG5pbCkKKyAgICAgICAgICAgICAgICAgICAgICAoLGtleXMgbmlsKSkKKyAg ICAgICAgICAgICAgICAgICxAKGNsLWxvb3AKKyAgICAgICAgICAgICAgICAgICAgIGZvciAoa2V5 IHZhciBkZWZhdWx0IHN1cHBsaWVkKSBpbiAobWFwY2FyICMnZ2V0LXZhci1kYXRhIGtleS12YXJz KQorICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCAobWFjcm9leHAtbGV0MiogKChrZXl2YWwg a2V5KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGAocHJvZ24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAocHVzaCAsa2V5dmFsICxrZXlzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICwoY29uZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1cHBsaWVk CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggc3VwcGxpZWQgcGF0 cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHVzaCB2YXIgcGF0cykK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2wtb25jZS1vbmx5ICgoa2V5 LWZvdW5kIGAocGxpc3QtbWVtYmVyICxwbGlzdCAsa2V5dmFsKSkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBgKGlmICxrZXktZm91bmQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2duCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggdCAscmVzKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIChjYWRyICxrZXktZm91bmQpICxyZXMp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggbmlsICxy ZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHVzaCAsZGVm YXVsdCAscmVzKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1 bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHVzaCB2YXIgcGF0cykK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2wtb25jZS1vbmx5ICgoa2V5 LWZvdW5kIGAocGxpc3QtbWVtYmVyICxwbGlzdCAsa2V5dmFsKSkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBgKGlmICxrZXktZm91bmQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggKGNhZHIgLGtleS1mb3VuZCkgLHJlcykK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoICxkZWZhdWx0 ICxyZXMpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIHZhciBwYXRzKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAocHVzaCAocGxpc3QtZ2V0ICxwbGlzdCAsa2V5 dmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAscmVzKSkp KSkpCisgICAgICAgICAgICAgICAgICAocHVzaCAob3IgKHBsaXN0LWdldCAscGxpc3QgOmFsbG93 LW90aGVyLWtleXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsLWxvb3AgZm9yIChr ZXkgX3ZhbCkgb24gLHBsaXN0IGJ5ICMnY2RkcgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGFsd2F5cyAobWVtcSBrZXkgLGtleXMpKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICxyZXMpCisgICAgICAgICAgICAgICAgICA7OyBSZXZlcnNlIGluIGNhc2UgYSBsYXR0ZXIg cGF0dGVybiB1c2UgYSB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgOzsgZnJvbSBhbiBlYXJs aWVyIHBhdHRlcm4uCisgICAgICAgICAgICAgICAgICAobnJldmVyc2UgLHJlcykpKQorICAgICAg ICAgICAgICAoLCdcYCAsKGNsLWxvb3AgZm9yIHBhdCBpbiAocmV2ZXJzZSAoY29ucyAnKHByZWQg KG5vdCBudWxsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGF0cykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0 IGAoLCdcLCAscGF0KSkpKSkpKSkKKworKGRlZnVuIGNsLS1wY2FzZS1jbC1hcmdsaXN0LSZhdXgt cGF0dGVybiAoYXV4LXZhcnMpCisgICJCdWlsZCBgcGNhc2UnIHBhdHRlcm4gZm9yIGAmYXV4JyB2 YXJpYWJsZXMuCisKK0FVWC1WQVJTIGlzIHRoZSBsaXN0IG9mIGJpbmRpbmdzLiIKKyAgYChhbmQg LEAoY2wtbG9vcCBmb3IgYmluZCBpbiBhdXgtdmFycworICAgICAgICAgICAgICAgICAgIGNvbGxl Y3QgKHBjYXNlLWxldCAoKChvciBgKCx2YXIgLHZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYCgsdmFyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB2YXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYmluZCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAobGV0ICx2YXIgLHZh bCkpKSkpCisKKzs7OyMjI2F1dG9sb2FkCisocGNhc2UtZGVmbWFjcm8gY2wtYXJnbGlzdCAoYXJn bGlzdCkKKyAgIk1hdGNoIGEgQ0wgYXJndW1lbnQgbGlzdCwgYXMgaW4gYGNsLWRlZnVuJyBhbmQg YGNsLWRlZm1hY3JvJy4KKworU2VlIHRoZSBJbmZvIG5vZGUgYChjbClBcmd1bWVudCBMaXN0cycu CisKK1RoaXMgcGF0dGVybiBkb2VzIG5vdCBzdXBwb3J0IGAmZW52aXJvbm1lbnQnLgorCitgJmtl eScgd2lsbCBmYWlsIHRvIG1hdGNoIGlmIHRoZXJlIGFyZSBtb3JlIGtleXMgaW4gdGhlIHBsaXN0 Cit0aGVuIHNwZWNpZmllZCwgdW5sZXNzIGAmYWxsb3ctb3RoZXIta2V5cycgaXMgZ2l2ZW4gb3Ig dW5sZXNzIHRoZQorcGxpc3QgYXNzb2NpYXRlcyB0aGUga2V5IGA6YWxsb3ctb3RoZXIta2V5cycg d2l0aCBhIG5vbi1uaWwKK3ZhbHVlLiAgVW5saWtlIGBjbC1kZXN0cnVjdHVyaW5nLWJpbmQnLCB0 aGlzIHBhdHRlcm4gZG9lcyBub3QKK3NpZ25hbCBhbiBlcnJvciBpZiB0aGVyZSBhcmUgdW5tYXRj aGVkIGtleXMgaW4gdGhlIHBsaXN0LgorCitVbmxpa2UgdGhlIGJhY2stcXVvdGUgcGF0dGVybiwg dGhlIHBhdHRlcm4gd2lsbCBmYWlsIHRvIG1hdGNoIGlmIHRoZQorbm9uLW9wdGlvbmFsIHBhcnQg b2YgQVJHTElTVCBpcyBzaG9ydGVyIHRoYW4gRVhQVkFMLgorCitGb3IgdGhpcyBgcGNhc2UnIHBh dHRlcm4sIHRoZSB2YXJpYWJsZXMgaW4gQVJHTElTVCBjYW4KK3RoZW1zZWx2ZXMgYmUgYHBjYXNl JyBwYXR0ZXJucywgaW5zdGVhZCBvZiBqdXN0IHN5bWJvbHMgYXMgaW4gYQorbm9ybWFsIENMIGxh bWJkYSBsaXN0LiAgSG93ZXZlciwgYXJndW1lbnQtbGlzdCBjb25zdHJ1Y3RzIGxpa2UKK2Amb3B0 aW9uYWwnLCBgJmtleScsIGFuZCBgJmF1eCcgdXNlIHN1Yi1saXN0cyB0byBzcGVjaWZ5IGRlZmF1 bHQKK3ZhbHVlcyBhbmQgb3RoZXIgZmVhdHVyZXMuICBGb3IgZXhhbXBsZSwKKworICAgIChjbC1h cmdsaXN0ICgmb3B0aW9uYWwgKG9wdDEgZGVmYXVsdDEgb3B0MS1zdXBwbGllZCkpKQorCitUaGVy ZWZvcmUsIHRvIGF2b2lkIGFtYmlndWl0eSwgdGhlIHVzZSBvZiBzdWItcGF0dGVybnMgY2FuIG9u bHkKK2JlIGRvbmUgd2l0aGluIHRoZSBzdWItbGlzdCBmb3IgdGhvc2UgY29uc3RydWN0cy4gIEZv ciBleGFtcGxlLAorCisgICAgKGNsLWFyZ2xpc3QgKCZvcHRpb25hbCAoKGFuZCBvcHQxIChndWFy ZCAobGlzdHAgb3B0MSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsKSkpCisKK0Zv ciBzaW1pbGFyIHJlYXNvbnMsIHRoZSBjZHIgb2YgYSBkb3R0ZWQgbGlzdCAoYXMgb3Bwb3NlZCB0 byB0aGUKK2VsZW1lbnQgZm9sbG93aW5nIGAmcmVzdCcpIGZvciB0aGUgcmVtYWluZGVyIG9mIGEg bGlzdCBjYW5ub3QgYmUKK2Egc3ViLXBhdHRlcm4uIgorICAobGV0KiAoKGdyb3VwcyAoY2wtLXBj YXNlLWNsLWFyZ2xpc3QtdmFyLWdyb3VwcyBhcmdsaXN0KSkKKyAgICAgICAgICh3aG9sZS12YXIg KGFsaXN0LWdldCAnd2hvbGUgZ3JvdXBzKSkKKyAgICAgICAgIChwb3MtdmFycyAoYWxpc3QtZ2V0 ICdwb3MgZ3JvdXBzKSkKKyAgICAgICAgIChvcHQtdmFycyAoYWxpc3QtZ2V0ICdvcHQgZ3JvdXBz KSkKKyAgICAgICAgIChyZXN0LXZhciAoYWxpc3QtZ2V0ICdyZXN0IGdyb3VwcykpCisgICAgICAg ICAoa2V5LXZhcnMgKGFsaXN0LWdldCAna2V5IGdyb3VwcykpCisgICAgICAgICAoYWxsb3ctb3Ro ZXIta2V5cyAoYWxpc3QtZ2V0ICdhbGxvdy1vdGhlci1rZXlzIGdyb3VwcykpCisgICAgICAgICAo YXV4LXZhcnMgKGFsaXN0LWdldCAnYXV4IGdyb3VwcykpKQorICAgIChyZW1xIG5pbAorICAgICAg ICAgIGAoYW5kIChwcmVkIGxpc3RwKQorICAgICAgICAgICAgICAgICwod2hlbiB3aG9sZS12YXIK KyAgICAgICAgICAgICAgICAgICB3aG9sZS12YXIpCisgICAgICAgICAgICAgICAgLCh3aGVuIChv ciBwb3MtdmFycyBvcHQtdmFycyByZXN0LXZhcikKKyAgICAgICAgICAgICAgICAgICAoY2wtLXBj YXNlLWNsLWFyZ2xpc3QtcG9zaXRpb25hbC1wYXR0ZXJuCisgICAgICAgICAgICAgICAgICAgIHBv cy12YXJzIG9wdC12YXJzCisgICAgICAgICAgICAgICAgICAgIHJlc3QtdmFyIGtleS12YXJzKSkK KyAgICAgICAgICAgICAgICAsKHdoZW4ga2V5LXZhcnMKKyAgICAgICAgICAgICAgICAgICAoY29u ZAorICAgICAgICAgICAgICAgICAgICAocmVzdC12YXIgYChhcHAgKGxhbWJkYSAoXykgLHJlc3Qt dmFyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLChjbC0tcGNhc2UtY2wt YXJnbGlzdC0ma2V5LXBhdHRlcm4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAga2V5LXZhcnMgYWxsb3ctb3RoZXIta2V5cykpKQorICAgICAgICAgICAgICAgICAgICAoKG9y IHBvcy12YXJzIG9wdC12YXJzKQorICAgICAgICAgICAgICAgICAgICAgYChhcHAgKG50aGNkciAs KCsgKGxlbmd0aCBwb3MtdmFycykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChsZW5ndGggb3B0LXZhcnMpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICwoY2wt LXBjYXNlLWNsLWFyZ2xpc3QtJmtleS1wYXR0ZXJuCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGtleS12YXJzIGFsbG93LW90aGVyLWtleXMpKSkKKyAgICAgICAgICAgICAgICAgICAgKHQg KGNsLS1wY2FzZS1jbC1hcmdsaXN0LSZrZXktcGF0dGVybgorICAgICAgICAgICAgICAgICAgICAg ICAga2V5LXZhcnMgYWxsb3ctb3RoZXIta2V5cykpKSkKKyAgICAgICAgICAgICAgICAsKHdoZW4g YXV4LXZhcnMKKyAgICAgICAgICAgICAgICAgICAoY2wtLXBjYXNlLWNsLWFyZ2xpc3QtJmF1eC1w YXR0ZXJuIGF1eC12YXJzKSkpKSkpCisKIDs7IExvY2FsIHZhcmlhYmxlczoKIDs7IGdlbmVyYXRl ZC1hdXRvbG9hZC1maWxlOiAiY2wtbG9hZGRlZnMuZWwiCiA7OyBFbmQ6CmRpZmYgLS1naXQgYS90 ZXN0L2xpc3AvZW1hY3MtbGlzcC9wY2FzZS10ZXN0cy5lbCBiL3Rlc3QvbGlzcC9lbWFjcy1saXNw L3BjYXNlLXRlc3RzLmVsCmluZGV4IDc5OWU4ZDM2NjQ3Li4xMDhlNGI5NmQwNCAxMDA2NDQKLS0t IGEvdGVzdC9saXNwL2VtYWNzLWxpc3AvcGNhc2UtdGVzdHMuZWwKKysrIGIvdGVzdC9saXNwL2Vt YWNzLWxpc3AvcGNhc2UtdGVzdHMuZWwKQEAgLTE2MCw0ICsxNjAsNTE5IEBAIHBjYXNlLXRlc3Rz LXNldHEKICAgKHNob3VsZC1lcnJvciAocGNhc2Utc2V0cSBhKQogICAgICAgICAgICAgICAgIDp0 eXBlICcod3JvbmctbnVtYmVyLW9mLWFyZ3VtZW50cykpKQogCis7Ozs7IFRlc3RzIGZvciB0aGUg YGNsLWFyZ2xpc3QnIGBwY2FzZScgcGF0dGVybi4KKworKGVydC1kZWZ0ZXN0IHBjYXNlLXRlc3Rz LWNsLWFyZ2xpc3QtJndob2xlLXNob3VsZC1lcnJvciAoKQorICAiYCZ3aG9sZScgbXVzdCBjb21l IGZpcnN0IGlmIGdpdmVuLCBhbmQgbXVzdCBiZSBmb2xsb3dlZCBieSBhIHBhdHRlci4iCisgIChz aG91bGQtZXJyb3IgKHBjYXNlIChsaXN0IDEgMiAzKQorICAgICAgICAgICAgICAgICAgKChjbC1h cmdsaXN0ICgmd2hvbGUpKQorICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjKSkpCisgICAg ICAgICAgICAgICAgOnR5cGUgJ2NsLS1wY2FzZS1jbC1hcmdsaXN0LWludmFsaWQtYXJnLWxpc3Qp CisKKyAgKHNob3VsZC1lcnJvciAocGNhc2UgKGxpc3QgMSAyIDMpCisgICAgICAgICAgICAgICAg ICAoKGNsLWFyZ2xpc3QgKGEgYiAmd2hvbGUgYykpCisgICAgICAgICAgICAgICAgICAgKGxpc3Qg YSBiIGMpKSkKKyAgICAgICAgICAgICAgICA6dHlwZSAnY2wtLXBjYXNlLWNsLWFyZ2xpc3QtaW52 YWxpZC1hcmctbGlzdCkKKworICAoc2hvdWxkLWVycm9yIChwY2FzZSAobGlzdCAxIDIgMykKKyAg ICAgICAgICAgICAgICAgICgoY2wtYXJnbGlzdCAoJnJlc3QgYSAmd2hvbGUgYykpCisgICAgICAg ICAgICAgICAgICAgKGxpc3QgYSBiIGMpKSkKKyAgICAgICAgICAgICAgICA6dHlwZSAnY2wtLXBj YXNlLWNsLWFyZ2xpc3QtaW52YWxpZC1hcmctbGlzdCkKKworICAoc2hvdWxkLWVycm9yIChwY2Fz ZSAobGlzdCAxIDIgMykKKyAgICAgICAgICAgICAgICAgICgoY2wtYXJnbGlzdCAoJmtleSBhICZ3 aG9sZSBjKSkKKyAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIgYykpKQorICAgICAgICAgICAg ICAgIDp0eXBlICdjbC0tcGNhc2UtY2wtYXJnbGlzdC1pbnZhbGlkLWFyZy1saXN0KQorCisgIChz aG91bGQtZXJyb3IgKHBjYXNlIChsaXN0IDEgMiAzKQorICAgICAgICAgICAgICAgICAgKChjbC1h cmdsaXN0ICgmYXV4IChhIDEpICZ3aG9sZSBjKSkKKyAgICAgICAgICAgICAgICAgICAobGlzdCBh IGIgYykpKQorICAgICAgICAgICAgICAgIDp0eXBlICdjbC0tcGNhc2UtY2wtYXJnbGlzdC1pbnZh bGlkLWFyZy1saXN0KQorCisgIChzaG91bGQtZXJyb3IgKHBjYXNlIChsaXN0IDEgMiAzKQorICAg ICAgICAgICAgICAgICAgKChjbC1hcmdsaXN0ICgmb3B0aW9uYWwgKGEgMSkgJndob2xlIGMpKQor ICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjKSkpCisgICAgICAgICAgICAgICAgOnR5cGUg J2NsLS1wY2FzZS1jbC1hcmdsaXN0LWludmFsaWQtYXJnLWxpc3QpCisKKyAgKHNob3VsZC1lcnJv ciAocGNhc2UgKGxpc3QgMSAyIDMpCisgICAgICAgICAgICAgICAgICAoKGNsLWFyZ2xpc3QgKCZ3 aG9sZSB3aG9sZTEgJndob2xlIHdob2xlMikpCisgICAgICAgICAgICAgICAgICAgKGxpc3Qgd2hv bGUxIHdob2xlMikpKQorICAgICAgICAgICAgICAgIDp0eXBlICdjbC0tcGNhc2UtY2wtYXJnbGlz dC1pbnZhbGlkLWFyZy1saXN0KSkKKworKGVydC1kZWZ0ZXN0IHBjYXNlLXRlc3RzLWNsLWFyZ2xp c3QtJndob2xlICgpCisgICJgJndob2xlJyBjYW4gYmUgYSBgcGNhc2UnIHBhdHRlcm4uIgorICAo c2hvdWxkIChlcXVhbCAobGlzdCAobGlzdCAxIDIgMykgMSAyIDMpCisgICAgICAgICAgICAgICAg IChwY2FzZSAobGlzdCAxIDIgMykKKyAgICAgICAgICAgICAgICAgICAoKGNsLWFyZ2xpc3QgKCZ3 aG9sZSB3aG9sZSBhIGIgYykpCisgICAgICAgICAgICAgICAgICAgIChsaXN0IHdob2xlIGEgYiBj KSkpKSkKKworICAoc2hvdWxkIChlcXVhbCAobGlzdCAxIDIgMyAxIDIgMykKKyAgICAgICAgICAg ICAgICAgKHBjYXNlIChsaXN0IDEgMiAzKQorICAgICAgICAgICAgICAgICAgICgoY2wtYXJnbGlz dCAoJndob2xlIGAoLGEwICxiMCAsYzApIGEgYiBjKSkKKyAgICAgICAgICAgICAgICAgICAgKGxp c3QgYTAgYjAgYzAgYSBiIGMpKSkpKSkKKworKGVydC1kZWZ0ZXN0IHBjYXNlLXRlc3RzLWNsLWFy Z2xpc3QtcG9zICgpCisgICJQb3NpdGlvbmFsIHZhcmlhYmxlcyBtdXN0IG1hdGNoIHRoZSBsZW5n dGggb2YgRVhQVkFMLiIKKyAgKHNob3VsZCAoZXF1YWwgKGxpc3QgMSAyIDMpCisgICAgICAgICAg ICAgICAgIChwY2FzZSAobGlzdCAxIDIgMykKKyAgICAgICAgICAgICAgICAgICAoKGNsLWFyZ2xp c3QgKGEgYiBjKSkKKyAgICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiIGMpKSkpKQorCisgIChz aG91bGQgKGVxdWFsIG5pbAorICAgICAgICAgICAgICAgICAocGNhc2UgKGxpc3QgKGxpc3QgMSkp CisgICAgICAgICAgICAgICAgICAgKChjbC1hcmdsaXN0IChhIGIpKQorICAgICAgICAgICAgICAg ICAgICAobGlzdCBhIGIpKSkpKQorCisgIChzaG91bGQgKGVxdWFsIG5pbAorICAgICAgICAgICAg ICAgICAocGNhc2UgKGxpc3QgKGxpc3QgMSAyIDMpKQorICAgICAgICAgICAgICAgICAgICgoY2wt YXJnbGlzdCAoYSBiKSkKKyAgICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiKSkpKSkpCisKKyhl cnQtZGVmdGVzdCBwY2FzZS10ZXN0cy1jbC1hcmdsaXN0LXBvcy1zdWItcGF0dGVybnMgKCkKKyAg KHNob3VsZCAoZXF1YWwgKGxpc3QgMSAyIDMgNCkKKyAgICAgICAgICAgICAgICAgKHBjYXNlIChs aXN0IDEgMiAobGlzdCAzIDQpKQorICAgICAgICAgICAgICAgICAgICgoY2wtYXJnbGlzdCAoYSBi IChjbC1hcmdsaXN0IChjIGQpKSkpCisgICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjIGQp KSkpKQorCisgIChzaG91bGQgKGVxdWFsIChsaXN0IDEgMikKKyAgICAgICAgICAgICAgICAgKHBj YXNlIChsaXN0IChsaXN0IDEgMikpCisgICAgICAgICAgICAgICAgICAgKChjbC1hcmdsaXN0IChg KCxhICxiKSkpCisgICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYikpKSkpKQorCisoZXJ0LWRl ZnRlc3QgcGNhc2UtdGVzdHMtY2wtYXJnbGlzdC0mb3B0aW9uYWwtc2hvdWxkLWVycm9yICgpCisg ICJgJm9wdGlvbmFsJyBjYW5ub3QgYmUgdXNlZCBhZnRlciBgJm9wdGlvbmFsJywgYCZyZXN0Jywg YCZrZXknLCBhbmQgYCZhdXgnLiIKKyAgKHNob3VsZC1lcnJvciAoZXF1YWwgKGxpc3QgMSAyIDMp CisgICAgICAgICAgICAgICAgICAgICAgIChwY2FzZSAobGlzdCAxIDIgMykKKyAgICAgICAgICAg ICAgICAgICAgICAgICAoKGNsLWFyZ2xpc3QgKCZyZXN0IGEgJm9wdGlvbmFsIGIgYykpCisgICAg ICAgICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjKSkpKQorICAgICAgICAgICAgICAgIDp0 eXBlICdjbC0tcGNhc2UtY2wtYXJnbGlzdC1pbnZhbGlkLWFyZy1saXN0KQorCisgIChzaG91bGQt ZXJyb3IgKHBjYXNlIChsaXN0IDEgMiAzKQorICAgICAgICAgICAgICAgICAgKChjbC1hcmdsaXN0 ICgmYm9keSBhICZvcHRpb25hbCBiIGMpKQorICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBj KSkpCisgICAgICAgICAgICAgICAgOnR5cGUgJ2NsLS1wY2FzZS1jbC1hcmdsaXN0LWludmFsaWQt YXJnLWxpc3QpCisKKyAgKHNob3VsZC1lcnJvciAocGNhc2UgKGxpc3QgMSAyIDMpCisgICAgICAg ICAgICAgICAgICAoKGNsLWFyZ2xpc3QgKCZrZXkgYSAmb3B0aW9uYWwgYiBjKSkKKyAgICAgICAg ICAgICAgICAgICAobGlzdCBhIGIgYykpKQorICAgICAgICAgICAgICAgIDp0eXBlICdjbC0tcGNh c2UtY2wtYXJnbGlzdC1pbnZhbGlkLWFyZy1saXN0KQorCisgIChzaG91bGQtZXJyb3IgKHBjYXNl IChsaXN0IDEgMiAzKQorICAgICAgICAgICAgICAgICAgKChjbC1hcmdsaXN0ICgmYWxsb3ctb3Ro ZXIta2V5cyAmb3B0aW9uYWwgYiBjKSkKKyAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIgYykp KQorICAgICAgICAgICAgICAgIDp0eXBlICdjbC0tcGNhc2UtY2wtYXJnbGlzdC1pbnZhbGlkLWFy Zy1saXN0KQorCisgIChzaG91bGQtZXJyb3IgKHBjYXNlIChsaXN0IDEgMiAzKQorICAgICAgICAg ICAgICAgICAgKChjbC1hcmdsaXN0ICgmYXV4IChhIDEpICZvcHRpb25hbCBiIGMpKQorICAgICAg ICAgICAgICAgICAgIChsaXN0IGEgYiBjKSkpCisgICAgICAgICAgICAgICAgOnR5cGUgJ2NsLS1w Y2FzZS1jbC1hcmdsaXN0LWludmFsaWQtYXJnLWxpc3QpCisKKyAgKHNob3VsZC1lcnJvciAocGNh c2UgKGxpc3QgMSAyIDMpCisgICAgICAgICAgICAgICAgICAoKGNsLWFyZ2xpc3QgKCZvcHRpb25h bCBhICZvcHRpb25hbCBiIGMpKQorICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjKSkpCisg ICAgICAgICAgICAgICAgOnR5cGUgJ2NsLS1wY2FzZS1jbC1hcmdsaXN0LWludmFsaWQtYXJnLWxp c3QpKQorCisoZXJ0LWRlZnRlc3QgcGNhc2UtdGVzdHMtY2wtYXJnbGlzdC0mb3B0aW9uYWwgKCkK KyAgKHNob3VsZCAoZXF1YWwgKGxpc3QgMSAyIDMpCisgICAgICAgICAgICAgICAgIChwY2FzZSAo bGlzdCAxIDIgMykKKyAgICAgICAgICAgICAgICAgICAoKGNsLWFyZ2xpc3QgKGEgYiAmb3B0aW9u YWwgYykpCisgICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjKSkpKSkKKworICAoc2hvdWxk IChlcXVhbCAobGlzdCAxIDIgbmlsKQorICAgICAgICAgICAgICAgICAocGNhc2UgKGxpc3QgMSAy KQorICAgICAgICAgICAgICAgICAgICgoY2wtYXJnbGlzdCAoYSBiICZvcHRpb25hbCBjKSkKKyAg ICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiIGMpKSkpKQorCisgIChzaG91bGQgKGVxdWFsIChs aXN0IDEgMiAxMykKKyAgICAgICAgICAgICAgICAgKHBjYXNlIChsaXN0IDEgMikKKyAgICAgICAg ICAgICAgICAgICAoKGNsLWFyZ2xpc3QgKGEgYiAmb3B0aW9uYWwgKGMgMTMpKSkKKyAgICAgICAg ICAgICAgICAgICAgKGxpc3QgYSBiIGMpKSkpKQorCisgIChzaG91bGQgKGVxdWFsIChsaXN0IDEg MiAxMyBuaWwpCisgICAgICAgICAgICAgICAgIChwY2FzZSAobGlzdCAxIDIpCisgICAgICAgICAg ICAgICAgICAgKChjbC1hcmdsaXN0IChhIGIgJm9wdGlvbmFsIChjIDEzIGMtc3VwcGxpZWQpKSkK KyAgICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiIGMgYy1zdXBwbGllZCkpKSkpCisKKyAgKHNo b3VsZCAoZXF1YWwgKGxpc3QgMSAyIDMgdCkKKyAgICAgICAgICAgICAgICAgKHBjYXNlIChsaXN0 IDEgMiAzKQorICAgICAgICAgICAgICAgICAgICgoY2wtYXJnbGlzdCAoYSBiICZvcHRpb25hbCAo YyAxMyBjLXN1cHBsaWVkKSkpCisgICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjIGMtc3Vw cGxpZWQpKSkpKSkKKworKGVydC1kZWZ0ZXN0IHBjYXNlLXRlc3RzLWNsLWFyZ2xpc3QtJm9wdGlv bmFsLXN1Yi1wYXR0ZXJucyAoKQorICAiVGVzdCB1c2luZyBzdWItcGF0dGVybnMgaW4gYGNsLWFy Z2xpc3QnIHBhdHRlcm4uCitTdWItcGF0dGVybnMgbXVzdCBiZSBjb250YWluZWQgd2l0aGluIGEg c3ViLWxpc3QsIHNpbmNlIGEgc3ViLWxpc3QKK2Fsc28gcHJvdmlkZXMgYSBkZWZhdWx0IHZhbHVl LiIKKyAgKHNob3VsZC1lcnJvciAocGNhc2UgKGxpc3QgMSAyIChsaXN0IDMgNCkpCisgICAgICAg ICAgICAgICAgICAoKGNsLWFyZ2xpc3QgKGEgYiAmb3B0aW9uYWwgYCgsYyAsZCkpKQorICAgICAg ICAgICAgICAgICAgIChsaXN0IGEgYiBjIGQpKSkpCisKKyAgKHNob3VsZCAoZXF1YWwgKGxpc3Qg MSAyIDMzKQorICAgICAgICAgICAgICAgICAocGNhc2UgKGxpc3QgMSAyKQorICAgICAgICAgICAg ICAgICAgICgoY2wtYXJnbGlzdCAoYSBiICZvcHRpb25hbCAoKGFuZCBvcHQxCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGd1YXJkIChudW1iZXJw IG9wdDEpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MzMpKSkKKyAgICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiIG9wdDEpKSkpKQorCisgIChzaG91 bGQgKGVxdWFsIG5pbAorICAgICAgICAgICAgICAgICAocGNhc2UgKGxpc3QgMSAyICdub3QtbnVt KQorICAgICAgICAgICAgICAgICAgICgoY2wtYXJnbGlzdCAoYSBiICZvcHRpb25hbCAoKGFuZCBv cHQxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGd1YXJkIChudW1iZXJwIG9wdDEpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMzMpKSkKKyAgICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiIG9wdDEp KSkpKQorCisgIChzaG91bGQgKGVxdWFsIG5pbAorICAgICAgICAgICAgICAgICAocGNhc2UgKGxp c3QgMSAyIG5pbCkKKyAgICAgICAgICAgICAgICAgICAoKGNsLWFyZ2xpc3QgKGEgYiAmb3B0aW9u YWwgKChhbmQgb3B0MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChndWFyZCAobnVtYmVycCBvcHQxKSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdub3QtbnVtKSkpCisgICAgICAgICAgICAgICAgICAg IChsaXN0IGEgYiBvcHQxKSkpKSkKKworICAoc2hvdWxkIChlcXVhbCAobGlzdCAxIDIgMyA0KQor ICAgICAgICAgICAgICAgICAocGNhc2UgKGxpc3QgMSAyIChsaXN0IDMgNCkpCisgICAgICAgICAg ICAgICAgICAgKChjbC1hcmdsaXN0IChhIGIgJm9wdGlvbmFsIChgKCxjICxkKSkpKQorICAgICAg ICAgICAgICAgICAgICAobGlzdCBhIGIgYyBkKSkpKSkKKworICAoc2hvdWxkIChlcXVhbCAobGlz dCAxIDIgbmlsIG5pbCkKKyAgICAgICAgICAgICAgICAgKHBjYXNlIChsaXN0IDEgMikKKyAgICAg ICAgICAgICAgICAgICAoKGNsLWFyZ2xpc3QgKGEgYiAmb3B0aW9uYWwgKGAoLGMgLGQpKSkpCisg ICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjIGQpKSkpKQorCisgIChzaG91bGQgKGVxdWFs IChsaXN0IDEgMiAxMyAxNCkKKyAgICAgICAgICAgICAgICAgKHBjYXNlIChsaXN0IDEgMikKKyAg ICAgICAgICAgICAgICAgICAoKGNsLWFyZ2xpc3QgKGEgYiAmb3B0aW9uYWwgKGAoLGMgLGQpIChs aXN0IDEzIDE0KSkpKQorICAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIgYyBkKSkpKSkKKwor ICAoc2hvdWxkIChlcXVhbCAobGlzdCAxIDIgMTMgMTQpCisgICAgICAgICAgICAgICAgIChwY2Fz ZSAobGlzdCAxIDIpCisgICAgICAgICAgICAgICAgICAgKChjbC1hcmdsaXN0ICggYSBiCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwgKChjbC1hcmdsaXN0IChjICZv cHRpb25hbCAoZCAxNCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAobGlzdCAxMykpKSkKKyAgICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiIGMgZCkpKSkp CisKKyAgKHNob3VsZCAoZXF1YWwgKGxpc3QgMSAyIDEzIDE0IG5pbCkKKyAgICAgICAgICAgICAg ICAgKHBjYXNlIChsaXN0IDEgMikKKyAgICAgICAgICAgICAgICAgICAoKGNsLWFyZ2xpc3QgKGEg YiAmb3B0aW9uYWwgKGAoLGMgLGQpIChsaXN0IDEzIDE0KSBjZC1zdXBwbGllZCkpKQorICAgICAg ICAgICAgICAgICAgICAobGlzdCBhIGIgYyBkIGNkLXN1cHBsaWVkKSkpKSkKKworICAoc2hvdWxk IChlcXVhbCAobGlzdCAxIDIgMTMgMTQgbmlsIHQgbmlsKQorICAgICAgICAgICAgICAgICAocGNh c2UgKGxpc3QgMSAyKQorICAgICAgICAgICAgICAgICAgICgoY2wtYXJnbGlzdCAoIGEgYgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wdGlvbmFsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoKGNsLWFyZ2xpc3QgKCZvcHRpb25hbCAoYyAyNyBjLXN1Yi1zdXAp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChkIDE0IGQtc3ViLXN1cCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChs aXN0IDEzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNkLXN1cHBsaWVkKSkp CisgICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjIGQgY2Qtc3VwcGxpZWQgYy1zdWItc3Vw IGQtc3ViLXN1cCkpKSkpKQorCisoZXJ0LWRlZnRlc3QgcGNhc2UtdGVzdHMtY2wtYXJnbGlzdC0m cmVzdC1zaG91bGQtZXJyb3IgKCkKKyAgImAmcmVzdCcgKGAmYm9keScsIGAuJykgY2Fubm90IGJl IHVzZWQgYWZ0ZXIgYCZyZXN0JywgYCZib2R5JywgYCZrZXknLGFuZCBgJmF1eCcuIgorICAoc2hv dWxkLWVycm9yIChlcXVhbCAobGlzdCAxIDIgMykKKyAgICAgICAgICAgICAgICAgICAgICAgKHBj YXNlIChsaXN0IDEgMiAzKQorICAgICAgICAgICAgICAgICAgICAgICAgICgoY2wtYXJnbGlzdCAo JnJlc3QgYSAmcmVzdCBiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiIGMp KSkpCisgICAgICAgICAgICAgICAgOnR5cGUgJ2NsLS1wY2FzZS1jbC1hcmdsaXN0LWludmFsaWQt YXJnLWxpc3QpCisKKyAgKHNob3VsZC1lcnJvciAoZXF1YWwgKGxpc3QgMSAyIDMpCisgICAgICAg ICAgICAgICAgICAgICAgIChwY2FzZSAobGlzdCAxIDIgMykKKyAgICAgICAgICAgICAgICAgICAg ICAgICAoKGNsLWFyZ2xpc3QgKCZib2R5IGEgJmJvZHkgYikpCisgICAgICAgICAgICAgICAgICAg ICAgICAgIChsaXN0IGEgYiBjKSkpKQorICAgICAgICAgICAgICAgIDp0eXBlICdjbC0tcGNhc2Ut Y2wtYXJnbGlzdC1pbnZhbGlkLWFyZy1saXN0KQorCisgIChzaG91bGQtZXJyb3IgKGVxdWFsIChs aXN0IDEgMiAzKQorICAgICAgICAgICAgICAgICAgICAgICAocGNhc2UgKGxpc3QgMSAyIDMpCisg ICAgICAgICAgICAgICAgICAgICAgICAgKChjbC1hcmdsaXN0ICgmYm9keSBhIC4gYikpCisgICAg ICAgICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjKSkpKQorICAgICAgICAgICAgICAgIDp0 eXBlICdjbC0tcGNhc2UtY2wtYXJnbGlzdC1pbnZhbGlkLWFyZy1saXN0KQorCisgIChzaG91bGQt ZXJyb3IgKHBjYXNlIChsaXN0IDEgMiAzKQorICAgICAgICAgICAgICAgICAgKChjbC1hcmdsaXN0 ICgmYm9keSBhICZyZXN0IGIpKQorICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjKSkpCisg ICAgICAgICAgICAgICAgOnR5cGUgJ2NsLS1wY2FzZS1jbC1hcmdsaXN0LWludmFsaWQtYXJnLWxp c3QpCisKKyAgKHNob3VsZC1lcnJvciAocGNhc2UgKGxpc3QgMSAyIDMpCisgICAgICAgICAgICAg ICAgICAoKGNsLWFyZ2xpc3QgKCZyZXN0IGEgJmJvZHkgYikpCisgICAgICAgICAgICAgICAgICAg KGxpc3QgYSBiIGMpKSkKKyAgICAgICAgICAgICAgICA6dHlwZSAnY2wtLXBjYXNlLWNsLWFyZ2xp c3QtaW52YWxpZC1hcmctbGlzdCkKKworICAoc2hvdWxkLWVycm9yIChwY2FzZSAobGlzdCAxIDIg MykKKyAgICAgICAgICAgICAgICAgICgoY2wtYXJnbGlzdCAoJmtleSBhICZyZXN0IGIpKQorICAg ICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjKSkpCisgICAgICAgICAgICAgICAgOnR5cGUgJ2Ns LS1wY2FzZS1jbC1hcmdsaXN0LWludmFsaWQtYXJnLWxpc3QpCisKKyAgKHNob3VsZC1lcnJvciAo cGNhc2UgKGxpc3QgMSAyIDMpCisgICAgICAgICAgICAgICAgICAoKGNsLWFyZ2xpc3QgKCZrZXkg YSAmYm9keSBiKSkKKyAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIgYykpKQorICAgICAgICAg ICAgICAgIDp0eXBlICdjbC0tcGNhc2UtY2wtYXJnbGlzdC1pbnZhbGlkLWFyZy1saXN0KQorCisg IChzaG91bGQtZXJyb3IgKHBjYXNlIChsaXN0IDEgMiAzKQorICAgICAgICAgICAgICAgICAgKChj bC1hcmdsaXN0ICgma2V5IGEgLiBiKSkKKyAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIgYykp KQorICAgICAgICAgICAgICAgIDp0eXBlICdjbC0tcGNhc2UtY2wtYXJnbGlzdC1pbnZhbGlkLWFy Zy1saXN0KQorCisgIChzaG91bGQtZXJyb3IgKHBjYXNlIChsaXN0IDEgMiAzKQorICAgICAgICAg ICAgICAgICAgKChjbC1hcmdsaXN0ICgmYWxsb3ctb3RoZXIta2V5cyAmcmVzdCBiKSkKKyAgICAg ICAgICAgICAgICAgICAobGlzdCBhIGIgYykpKQorICAgICAgICAgICAgICAgIDp0eXBlICdjbC0t cGNhc2UtY2wtYXJnbGlzdC1pbnZhbGlkLWFyZy1saXN0KQorCisgIChzaG91bGQtZXJyb3IgKHBj YXNlIChsaXN0IDEgMiAzKQorICAgICAgICAgICAgICAgICAgKChjbC1hcmdsaXN0ICgmYWxsb3ct b3RoZXIta2V5cyAmYm9keSBiKSkKKyAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIgYykpKQor ICAgICAgICAgICAgICAgIDp0eXBlICdjbC0tcGNhc2UtY2wtYXJnbGlzdC1pbnZhbGlkLWFyZy1s aXN0KQorCisgIChzaG91bGQtZXJyb3IgKHBjYXNlIChsaXN0IDEgMiAzKQorICAgICAgICAgICAg ICAgICAgKChjbC1hcmdsaXN0ICgmYWxsb3ctb3RoZXIta2V5cyAuIGIpKQorICAgICAgICAgICAg ICAgICAgIChsaXN0IGEgYiBjKSkpCisgICAgICAgICAgICAgICAgOnR5cGUgJ2NsLS1wY2FzZS1j bC1hcmdsaXN0LWludmFsaWQtYXJnLWxpc3QpCisKKyAgKHNob3VsZC1lcnJvciAocGNhc2UgKGxp c3QgMSAyIDMpCisgICAgICAgICAgICAgICAgICAoKGNsLWFyZ2xpc3QgKCZhdXggKGEgMSkgJnJl c3QgYikpCisgICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiIGMpKSkKKyAgICAgICAgICAgICAg ICA6dHlwZSAnY2wtLXBjYXNlLWNsLWFyZ2xpc3QtaW52YWxpZC1hcmctbGlzdCkKKworICAoc2hv dWxkLWVycm9yIChwY2FzZSAobGlzdCAxIDIgMykKKyAgICAgICAgICAgICAgICAgICgoY2wtYXJn bGlzdCAoJmF1eCAoYSAxKSAmYm9keSBiKSkKKyAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIg YykpKQorICAgICAgICAgICAgICAgIDp0eXBlICdjbC0tcGNhc2UtY2wtYXJnbGlzdC1pbnZhbGlk LWFyZy1saXN0KQorCisgIChzaG91bGQtZXJyb3IgKHBjYXNlIChsaXN0IDEgMiAzKQorICAgICAg ICAgICAgICAgICAgKChjbC1hcmdsaXN0ICgmYXV4IChhIDEpIC4gYikpCisgICAgICAgICAgICAg ICAgICAgKGxpc3QgYSBiIGMpKSkKKyAgICAgICAgICAgICAgICA6dHlwZSAnY2wtLXBjYXNlLWNs LWFyZ2xpc3QtaW52YWxpZC1hcmctbGlzdCkpCisKKyhlcnQtZGVmdGVzdCBwY2FzZS10ZXN0cy1j bC1hcmdsaXN0LSZyZXN0LW5vbmxpc3QtY2RyICgpCisgIChzaG91bGQgKGVxdWFsIChsaXN0IDEg MikKKyAgICAgICAgICAgICAgICAgKHBjYXNlIChjb25zIDEgMikKKyAgICAgICAgICAgICAgICAg ICAoKGNsLWFyZ2xpc3QgKGEgJnJlc3QgYikpCisgICAgICAgICAgICAgICAgICAgIChsaXN0IGEg YikpKSkpCisKKyAgKHNob3VsZCAoZXF1YWwgKGxpc3QgMSAyKQorICAgICAgICAgICAgICAgICAo cGNhc2UgKGNvbnMgMSAyKQorICAgICAgICAgICAgICAgICAgICgoY2wtYXJnbGlzdCAoYSAmYm9k eSBiKSkKKyAgICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiKSkpKSkKKworICAoc2hvdWxkIChl cXVhbCAobGlzdCAxIDIpCisgICAgICAgICAgICAgICAgIChwY2FzZSAoY29ucyAxIDIpCisgICAg ICAgICAgICAgICAgICAgKChjbC1hcmdsaXN0IChhIC4gYikpCisgICAgICAgICAgICAgICAgICAg IChsaXN0IGEgYikpKSkpKQorCisoZXJ0LWRlZnRlc3QgcGNhc2UtdGVzdHMtY2wtYXJnbGlzdC0m cmVzdC13aXRoLSZ3aG9sZSAoKQorICAoc2hvdWxkIChlcXVhbCAobGlzdCAoY29ucyAxIDIpIDEg MikKKyAgICAgICAgICAgICAgICAgKHBjYXNlIChjb25zIDEgMikKKyAgICAgICAgICAgICAgICAg ICAoKGNsLWFyZ2xpc3QgKCZ3aG9sZSB3aG9sZSBhICZyZXN0IGIpKQorICAgICAgICAgICAgICAg ICAgICAobGlzdCB3aG9sZSBhIGIpKSkpKQorCisgIChzaG91bGQgKGVxdWFsIChsaXN0IChjb25z IDEgMikgMSAyKQorICAgICAgICAgICAgICAgICAocGNhc2UgKGNvbnMgMSAyKQorICAgICAgICAg ICAgICAgICAgICgoY2wtYXJnbGlzdCAoJndob2xlIHdob2xlIGEgJmJvZHkgYikpCisgICAgICAg ICAgICAgICAgICAgIChsaXN0IHdob2xlIGEgYikpKSkpCisKKyAgKHNob3VsZCAoZXF1YWwgKGxp c3QgKGNvbnMgMSAyKSAxIDIpCisgICAgICAgICAgICAgICAgIChwY2FzZSAoY29ucyAxIDIpCisg ICAgICAgICAgICAgICAgICAgKChjbC1hcmdsaXN0ICgmd2hvbGUgd2hvbGUgYSAuIGIpKQorICAg ICAgICAgICAgICAgICAgICAobGlzdCB3aG9sZSBhIGIpKSkpKSkKKworKGVydC1kZWZ0ZXN0IHBj YXNlLXRlc3RzLWNsLWFyZ2xpc3QtJnJlc3Qtb25seSAoKQorICAiVXNpbmcgb25seSBgJnJlc3Qn IHNob3VsZCB3b3JrIGxpa2UgYCZ3aG9sZScuIgorICAoc2hvdWxkIChlcXVhbCAobGlzdCAobGlz dCAxIDIpKQorICAgICAgICAgICAgICAgICAocGNhc2UgKGxpc3QgMSAyKQorICAgICAgICAgICAg ICAgICAgICgoY2wtYXJnbGlzdCAoJnJlc3QgYSkpCisgICAgICAgICAgICAgICAgICAgIChsaXN0 IGEpKSkpKQorCisgIChzaG91bGQgKGVxdWFsIChsaXN0IChjb25zIDEgMikpCisgICAgICAgICAg ICAgICAgIChwY2FzZSAoY29ucyAxIDIpCisgICAgICAgICAgICAgICAgICAgKChjbC1hcmdsaXN0 ICgmYm9keSBhKSkKKyAgICAgICAgICAgICAgICAgICAgKGxpc3QgYSkpKSkpKQorCisoZXJ0LWRl ZnRlc3QgcGNhc2UtdGVzdHMtY2wtYXJnbGlzdC0mcmVzdC1hZnRlci0mb3B0aW9uYWwgKCkKKyAg KHNob3VsZCAoZXF1YWwgKGxpc3QgMSAyIDMgKGxpc3QgNCA1KSkKKyAgICAgICAgICAgICAgICAg KHBjYXNlIChsaXN0IDEgMiAzIDQgNSkKKyAgICAgICAgICAgICAgICAgICAoKGNsLWFyZ2xpc3Qg KCZvcHRpb25hbCBhIGIgYyAmcmVzdCBkKSkKKyAgICAgICAgICAgICAgICAgICAgKGxpc3QgYSBi IGMgZCkpKSkpCisKKyAgKHNob3VsZCAoZXF1YWwgKGxpc3QgMSAyIDMgKGxpc3QgNCA1KSkKKyAg ICAgICAgICAgICAgICAgKHBjYXNlIChsaXN0IDEgMiAzIDQgNSkKKyAgICAgICAgICAgICAgICAg ICAoKGNsLWFyZ2xpc3QgKCZvcHRpb25hbCBhIGIgYyAmYm9keSBkKSkKKyAgICAgICAgICAgICAg ICAgICAgKGxpc3QgYSBiIGMgZCkpKSkpCisKKyAgKHNob3VsZCAoZXF1YWwgKGxpc3QgMSAyIDMg KGxpc3QgNCA1KSkKKyAgICAgICAgICAgICAgICAgKHBjYXNlIChsaXN0IDEgMiAzIDQgNSkKKyAg ICAgICAgICAgICAgICAgICAoKGNsLWFyZ2xpc3QgKCZvcHRpb25hbCBhIGIgYyAuIGQpKQorICAg ICAgICAgICAgICAgICAgICAobGlzdCBhIGIgYyBkKSkpKSkpCisKKyhlcnQtZGVmdGVzdCBwY2Fz ZS10ZXN0cy1jbC1hcmdsaXN0LSZyZXN0LXN1Yi1wYXR0ZXJucyAoKQorICA7OyBXZSBjYW4ndCBk byAoYSAuIGAoLGIgLiAsYykpLCBzbyB3ZSBkb24ndCB0ZXN0IHRoYXQuCisgIChzaG91bGQgKGVx dWFsIChsaXN0IDEgMiAzKQorICAgICAgICAgICAgICAgICAocGNhc2UgKGxpc3QgMSAyIDMpCisg ICAgICAgICAgICAgICAgICAgKChjbC1hcmdsaXN0IChhICZyZXN0IChjbC1hcmdsaXN0IChiIGMp KSkpCisgICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjKSkpKSkKKworICAoc2hvdWxkIChl cXVhbCAobGlzdCAxIDIgMykKKyAgICAgICAgICAgICAgICAgKHBjYXNlIChsaXN0IDEgMiAzKQor ICAgICAgICAgICAgICAgICAgICgoY2wtYXJnbGlzdCAoYSAmYm9keSBgKCxiICxjKSkpCisgICAg ICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjKSkpKSkpCisKKyhlcnQtZGVmdGVzdCBwY2FzZS10 ZXN0cy1jbC1hcmdsaXN0LSZrZXktc2hvdWxkLWVycm9yICgpCisgICJgJmtleScgY2Fubm90IGJl IHVzZWQgYWZ0ZXIgYCZrZXknLCBgJmFsbG93LW90aGVyLWtleXMnLCBhbmQgYCZhdXgnLiIKKyAg KHNob3VsZC1lcnJvciAocGNhc2UgKGxpc3QgOmEgMSA6YiAyKQorICAgICAgICAgICAgICAgICAg KChjbC1hcmdsaXN0ICgma2V5IGEgJmtleSBiKSkKKyAgICAgICAgICAgICAgICAgICAobGlzdCBh IGIpKSkKKyAgICAgICAgICAgICAgICA6dHlwZSAnY2wtLXBjYXNlLWNsLWFyZ2xpc3QtaW52YWxp ZC1hcmctbGlzdCkKKworICAoc2hvdWxkLWVycm9yIChwY2FzZSAobGlzdCA6YSAxIDpiIDIpCisg ICAgICAgICAgICAgICAgICAoKGNsLWFyZ2xpc3QgKCZhdXggKGEgMSkgJmtleSBiKSkKKyAgICAg ICAgICAgICAgICAgICAobGlzdCBhIGIpKSkKKyAgICAgICAgICAgICAgICA6dHlwZSAnY2wtLXBj YXNlLWNsLWFyZ2xpc3QtaW52YWxpZC1hcmctbGlzdCkKKworICAoc2hvdWxkLWVycm9yIChwY2Fz ZSAobGlzdCA6YSAxIDpiIDIpCisgICAgICAgICAgICAgICAgICAoKGNsLWFyZ2xpc3QgKCZhbGxv dy1vdGhlci1rZXlzICZrZXkgYikpCisgICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiKSkpCisg ICAgICAgICAgICAgICAgOnR5cGUgJ2NsLS1wY2FzZS1jbC1hcmdsaXN0LWludmFsaWQtYXJnLWxp c3QpKQorCisoZXJ0LWRlZnRlc3QgcGNhc2UtdGVzdHMtY2wtYXJnbGlzdC0ma2V5LWV4YWN0ICgp CisgICJgJmtleScgZG9lc24ndCBtYXRjaCB1bnNwZWNpZmllZCBrZXlzIHVubGVzcyBgJmFsbG93 LW90aGVyLWtleXMnIG9yIGA6YWxsb3ctb3RoZXIta2V5cycgaXMgZ2l2ZW4uIgorICAoc2hvdWxk IChlcXVhbCAobGlzdCAxIDIpCisgICAgICAgICAgICAgICAgIChwY2FzZSAobGlzdCA6YSAxIDpi IDIpCisgICAgICAgICAgICAgICAgICAgKChjbC1hcmdsaXN0ICgma2V5IGEgYikpCisgICAgICAg ICAgICAgICAgICAgIChsaXN0IGEgYikpKSkpCisKKyAgKHNob3VsZCAoZXF1YWwgbmlsCisgICAg ICAgICAgICAgICAgIChwY2FzZSAobGlzdCA6YSAxIDpiIDIgOmMgMykKKyAgICAgICAgICAgICAg ICAgICAoKGNsLWFyZ2xpc3QgKCZrZXkgYSBiKSkKKyAgICAgICAgICAgICAgICAgICAgKGxpc3Qg YSBiKSkpKSkKKworICAoc2hvdWxkIChlcXVhbCAobGlzdCAxIDIgbmlsKQorICAgICAgICAgICAg ICAgICAocGNhc2UgKGxpc3QgOmEgMSA6YiAyKQorICAgICAgICAgICAgICAgICAgICgoY2wtYXJn bGlzdCAoJmtleSBhIGIgYykpCisgICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjKSkpKSkp CisKKyhlcnQtZGVmdGVzdCBwY2FzZS10ZXN0cy1jbC1hcmdsaXN0LSZrZXktcGVybWlzc2l2ZSAo KQorICAiYCZrZXknIGRvZXNuJ3QgbWF0Y2ggdW5zcGVjaWZpZWQga2V5cyB1bmxlc3MgYCZhbGxv dy1vdGhlci1rZXlzJyBvciBgOmFsbG93LW90aGVyLWtleXMnIGlzIGdpdmVuLiIKKyAgKHNob3Vs ZCAoZXF1YWwgKGxpc3QgMSAyKQorICAgICAgICAgICAgICAgICAocGNhc2UgKGxpc3QgOmEgMSA6 YiAyIDpjIDMpCisgICAgICAgICAgICAgICAgICAgKChjbC1hcmdsaXN0ICgma2V5IGEgYiAmYWxs b3ctb3RoZXIta2V5cykpCisgICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYikpKSkpCisKKyAg KHNob3VsZCAoZXF1YWwgKGxpc3QgMSAyKQorICAgICAgICAgICAgICAgICAocGNhc2UgKGxpc3Qg OmEgMSA6YiAyIDpjIDMgOmFsbG93LW90aGVyLWtleXMgdCkKKyAgICAgICAgICAgICAgICAgICAo KGNsLWFyZ2xpc3QgKCZrZXkgYSBiKSkKKyAgICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiKSkp KSkpCisKKyhlcnQtZGVmdGVzdCBwY2FzZS10ZXN0cy1jbC1hcmdsaXN0LSZrZXktbm90LWZpcnN0 ICgpCisgICJUaGUgcGxpc3Qgc2hvdWxkIGJlIGFmdGVyIHBvc2l0aW9uYWwgdmFsdWVzIGFuZCBl cXVhbCB0byBgJnJlc3QnLiIKKyAgKHNob3VsZCAoZXF1YWwgKGxpc3QgMSAyIDMgMTEgMjIpCisg ICAgICAgICAgICAgICAgIChwY2FzZSAobGlzdCAxIDIgMyA6azEgMTEgOmsyIDIyKQorICAgICAg ICAgICAgICAgICAgICgoY2wtYXJnbGlzdCAoYSBiIGMgJmtleSBrMSBrMikpCisgICAgICAgICAg ICAgICAgICAgIChsaXN0IGEgYiBjIGsxIGsyKSkpKSkKKworICAoc2hvdWxkIChlcXVhbCAobGlz dCAxIDIgMyAobGlzdCA6azEgMTEgOmsyIDIyKSAxMSAyMikKKyAgICAgICAgICAgICAgICAgKHBj YXNlIChsaXN0IDEgMiAzIDprMSAxMSA6azIgMjIpCisgICAgICAgICAgICAgICAgICAgKChjbC1h cmdsaXN0IChhIGIgYyAmcmVzdCByMSAma2V5IGsxIGsyKSkKKyAgICAgICAgICAgICAgICAgICAg KGxpc3QgYSBiIGMgcjEgazEgazIpKSkpKSkKKworKGVydC1kZWZ0ZXN0IHBjYXNlLXRlc3RzLWNs LWFyZ2xpc3QtJmtleS1mdWxsLWZvcm0gKCkKKyAgKHNob3VsZCAoZXF1YWwgKGxpc3QgMSAyKQor ICAgICAgICAgICAgICAgICAocGNhc2UgKGxpc3QgOmEgMSA6YiAyKQorICAgICAgICAgICAgICAg ICAgICgoY2wtYXJnbGlzdCAoJmtleSBhIChiIDEzKSkpCisgICAgICAgICAgICAgICAgICAgIChs aXN0IGEgYikpKSkpCisKKyAgKHNob3VsZCAoZXF1YWwgKGxpc3QgMSAxMykKKyAgICAgICAgICAg ICAgICAgKHBjYXNlIChsaXN0IDphIDEpCisgICAgICAgICAgICAgICAgICAgKChjbC1hcmdsaXN0 ICgma2V5IGEgKGIgMTMpKSkKKyAgICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiKSkpKSkKKwor ICAoc2hvdWxkIChlcXVhbCAobGlzdCAxIDEzIG5pbCkKKyAgICAgICAgICAgICAgICAgKHBjYXNl IChsaXN0IDphIDEpCisgICAgICAgICAgICAgICAgICAgKChjbC1hcmdsaXN0ICgma2V5IGEgKGIg MTMgYi1zdXBwbGllZCkpKQorICAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIgYi1zdXBwbGll ZCkpKSkpCisKKyAgKHNob3VsZCAoZXF1YWwgKGxpc3QgMSAyIHQpCisgICAgICAgICAgICAgICAg IChwY2FzZSAobGlzdCA6YSAxIDpiIDIpCisgICAgICAgICAgICAgICAgICAgKChjbC1hcmdsaXN0 ICgma2V5IGEgKGIgMTMgYi1zdXBwbGllZCkpKQorICAgICAgICAgICAgICAgICAgICAobGlzdCBh IGIgYi1zdXBwbGllZCkpKSkpCisKKyAgKHNob3VsZCAoZXF1YWwgKGxpc3QgMSAyIHQpCisgICAg ICAgICAgICAgICAgIChwY2FzZSAobGlzdCA6YSAxIDpiYXQgMikKKyAgICAgICAgICAgICAgICAg ICAoKGNsLWFyZ2xpc3QgKCZrZXkgYSAoKDpiYXQgYikgMTMgYi1zdXBwbGllZCkpKQorICAgICAg ICAgICAgICAgICAgICAobGlzdCBhIGIgYi1zdXBwbGllZCkpKSkpCisKKyAgKHNob3VsZCAoZXF1 YWwgKGxpc3QgMSAyIHQpCisgICAgICAgICAgICAgICAgIChsZXQgKChrZXkgOmJhdCkpCisgICAg ICAgICAgICAgICAgICAgKHBjYXNlIChsaXN0IDphIDEgOmJhdCAyKQorICAgICAgICAgICAgICAg ICAgICAgKChjbC1hcmdsaXN0ICgma2V5IGEgKChrZXkgYikgMTMgYi1zdXBwbGllZCkpKQorICAg ICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBiLXN1cHBsaWVkKSkpKSkpKQorCisoZXJ0LWRl ZnRlc3QgcGNhc2UtdGVzdHMtY2wtYXJnbGlzdC0ma2V5LXN1Yi1wYXR0ZXJucyAoKQorICAoc2hv dWxkIChlcXVhbCAnKDEgMiAoOmMgNzcgOmUgc2hvdWxkLWlnbm9yZSkgbmlsIDc3IHQgOTkgbmls KQorICAgICAgICAgICAgICAgICAocGNhc2UgJyg6YWIgKDEgMikpCisgICAgICAgICAgICAgICAg ICAgKChjbC1hcmdsaXN0ICgma2V5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo KDphYiBgKCxhICxiKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKDpjZCAo Y2wtYXJnbGlzdCAoICZ3aG9sZSBjZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAma2V5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChjIDg4IGMtc3VwcCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCg6ZCBkKSA5OSBkLXN1cHApCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhbGxvdy1v dGhlci1rZXlzKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgOmMg NzcgOmUgJ3Nob3VsZC1pZ25vcmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2Qtc3VwcCkpKQorICAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIgY2QgY2Qtc3VwcCBjIGMt c3VwcCBkIGQtc3VwcCkpKSkpCisKKyAgKHNob3VsZCAoZXF1YWwgJyggMSAyICg6YyA3NyA6ZSBz aG91bGQtaWdub3JlIDphbGxvdy1vdGhlci1rZXlzIHQpIG5pbAorICAgICAgICAgICAgICAgICAg ICA3NyB0IDk5IG5pbCkKKyAgICAgICAgICAgICAgICAgKHBjYXNlICcoOmFiICgxIDIpKQorICAg ICAgICAgICAgICAgICAgICgoY2wtYXJnbGlzdCAoJmtleQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKCg6YWIgYCgsYSAsYikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKCg6Y2QgKGNsLWFyZ2xpc3QgKCAmd2hvbGUgY2QKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmtleQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYyA4OCBjLXN1cHApCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoOmQgZCkgOTkg ZC1zdXBwKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0IDpjIDc3 IDplICdzaG91bGQtaWdub3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOmFsbG93LW90aGVyLWtleXMgdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjZC1zdXBwKSkpCisgICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjZCBjZC1zdXBwIGMg Yy1zdXBwIGQgZC1zdXBwKSkpKSkKKworICAoc2hvdWxkIChlcXVhbCBuaWwKKyAgICAgICAgICAg ICAgICAgKHBjYXNlICcoOmFiICgxIDIpKQorICAgICAgICAgICAgICAgICAgICgoY2wtYXJnbGlz dCAoJmtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCg6YWIgYCgsYSAsYikp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCg6Y2QgKGNsLWFyZ2xpc3QgKCAm d2hvbGUgY2QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJmtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoYyA4OCBjLXN1cHApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgoOmQgZCkgOTkgZC1zdXBwKSkpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChsaXN0IDpjIDc3IDplICdzaG91bGQtZmFpbCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjZC1zdXBwKSkpCisgICAgICAgICAgICAgICAgICAg IChsaXN0IGEgYiBjZCBjZC1zdXBwIGMgYy1zdXBwIGQgZC1zdXBwKSkpKSkpCisKKyhlcnQtZGVm dGVzdCBwY2FzZS10ZXN0cy1jbC1hcmdsaXN0LSZhdXgtc2hvdWxkLWVycm9yICgpCisgICJgJmF1 eCcgY2Fubm90IGJlIHVzZWQgYWZ0ZXIgYCZhdXgnLiIKKyAgKHNob3VsZC1lcnJvciAocGNhc2Ug bmlsCisgICAgICAgICAgICAgICAgICAoKGNsLWFyZ2xpc3QgKCZhdXggYSAmYXV4IGIpKQorICAg ICAgICAgICAgICAgICAgIChsaXN0IGEgYikpKQorICAgICAgICAgICAgICAgIDp0eXBlICdjbC0t cGNhc2UtY2wtYXJnbGlzdC1pbnZhbGlkLWFyZy1saXN0KSkKKworKGVydC1kZWZ0ZXN0IHBjYXNl LXRlc3RzLWNsLWFyZ2xpc3QtJmF1eCAoKQorICAoc2hvdWxkIChlcXVhbCAobGlzdCAxIDIgbmls IG5pbCkKKyAgICAgICAgICAgICAgICAgKHBjYXNlIG5pbAorICAgICAgICAgICAgICAgICAgICgo Y2wtYXJnbGlzdCAoJmF1eCAoYSAxKSAoYiAyKSAoYykgZCkpCisgICAgICAgICAgICAgICAgICAg IChsaXN0IGEgYiBjIGQpKSkpKQorCisgIChzaG91bGQgKGVxdWFsIChsaXN0IDAgMSAyIG5pbCBu aWwpCisgICAgICAgICAgICAgICAgIChwY2FzZSAobGlzdCAwKQorICAgICAgICAgICAgICAgICAg ICgoY2wtYXJnbGlzdCAoejAgJmF1eCAoYSAxKSAoYiAyKSAoYykgZCkpCisgICAgICAgICAgICAg ICAgICAgIChsaXN0IHowIGEgYiBjIGQpKSkpKSkKKworKGVydC1kZWZ0ZXN0IHBjYXNlLXRlc3Rz LWNsLWFyZ2xpc3QtJmF1eC1zdWItcGF0dGVybnMgKCkKKyAgKHNob3VsZCAoZXF1YWwgKGxpc3Qg MSAyKQorICAgICAgICAgICAgICAgICAocGNhc2UgbmlsCisgICAgICAgICAgICAgICAgICAgKChj bC1hcmdsaXN0ICgmYXV4IChgKCxhICxiKSAobGlzdCAxIDIpKSkpCisgICAgICAgICAgICAgICAg ICAgIChsaXN0IGEgYiApKSkpKSkKKworKGVydC1kZWZ0ZXN0IHBjYXNlLXRlc3RzLWNsLWFyZ2xp c3QtYWxsICgpCisgIChzaG91bGQgKGVxdWFsICcoMSAyIDMgNCA1ICg6azEgMTExIDprMiAyMjIp IDExMSAyMjIgMzMzIDQ0NCkKKyAgICAgICAgICAgICAgICAgKHBjYXNlIChsaXN0IDEgMiAzIDQg NSA6azEgMTExIDprMiAyMjIpCisgICAgICAgICAgICAgICAgICAgKChjbC1hcmdsaXN0ICggYSBi IGMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwgZCBlCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3QgcgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZrZXkgazEgazIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmYXV4ICh4MSAzMzMpICh4MiA0NDQpKSkKKyAgICAgICAgICAgICAgICAgICAgKGxpc3Qg YSBiIGMgZCBlIHIgazEgazIgeDEgeDIpKSkpKSkKKwogOzs7IHBjYXNlLXRlc3RzLmVsIGVuZHMg aGVyZS4KLS0gCjIuMzQuMQoK --b1_zK7jswiu7zFIyB0mc7Of1fDganPK9zM5sPGTRMaSZA--