From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Damien Mattei Newsgroups: gmane.lisp.guile.user Subject: Re: Python slices in Scheme Date: Sun, 18 Jun 2023 22:20:05 +0200 Message-ID: References: <87pm5sd2nc.fsf@web.de> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="00000000000070c94b05fe6d2547" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="8078"; mail-complaints-to="usenet@ciao.gmane.io" To: guile-user@gnu.org Original-X-From: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Sun Jun 18 22:20:52 2023 Return-path: Envelope-to: guile-user@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 1qAytG-0001rQ-BP for guile-user@m.gmane-mx.org; Sun, 18 Jun 2023 22:20:50 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qAyst-00008o-67; Sun, 18 Jun 2023 16:20:27 -0400 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 1qAysn-00006q-1Z for guile-user@gnu.org; Sun, 18 Jun 2023 16:20:21 -0400 Original-Received: from mail-ed1-x536.google.com ([2a00:1450:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qAysl-0003VK-8N for guile-user@gnu.org; Sun, 18 Jun 2023 16:20:20 -0400 Original-Received: by mail-ed1-x536.google.com with SMTP id 4fb4d7f45d1cf-51a3f911135so3116591a12.2 for ; Sun, 18 Jun 2023 13:20:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1687119617; x=1689711617; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=88tRf+qBjT8015Ieudp5lih8KgiDBeQQHAscTTL20Lw=; b=K0wdfh6RbfWERkEJVDg1XbpWE1XbxleQhdFmGq1drf3g2JyTPkIZRjPPRQhLAjV6nM 0bDd5xFm5eE7hLp+N9qjVd+oLMfF/yTcEmFW6ay7+jQ98DmDx7ghbcxwyUclyPdpfQWC 6ZhJN3Xn0sXBFJxO8+CnwyRAFLc1waxwTdEfrYN9KnhyV9ukypyjXDndJIBQYpZQEHEI ik8n5aRJ9azn5E2bS4tmuNPCR7+NfeOw1lKGt5XMyFSiweAkA7dPnfq8E9x9POn+rXuu SFDg8VfJ9xf4EL399IYl/hTAEYeEjBP2ycUIC48O5HaqTIlBohPiguszcOb/vtMKvhvX hGFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687119617; x=1689711617; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=88tRf+qBjT8015Ieudp5lih8KgiDBeQQHAscTTL20Lw=; b=DlHqca+1CxNsaiDDWgLJV26hBQU0WPhL2E/VEjTBtR7iU2+yd4iBtJGYaBoRw6oQB1 qDtiZ3lZTJTaul7HsIfCOeW1Cnz8rZnuunNsDEmbRMUBI4VVO4moaOqHn6oyXrQkwT89 aE2YmqhsGhCKbYep2Kr3PymxK8r8Ci4yDsY0UmYLLic0zIMrA1xYtFIkdpFCVRgPg5iw syusRYOb3tfgK9iLnzsbNbtr5xn1LxUsGJIMraAKFAdeCbowdhz9GiMPd6f5GLY6G1Jx cnsfD93xHVcXvnoVILnL7k2csscewg7zA1TX7biVHpw7T660BKWwNk6pRtlqXuvOYoQf Wgpg== X-Gm-Message-State: AC+VfDwGKt57tflmEQJw4kVmSKoav3+YwUeIJvaJUFV9Nzyy+UNCtD93 dZWw8fsojomrn+fiHoevkb8V81m8ZWhmg964Kkbdpgm2 X-Google-Smtp-Source: ACHHUZ6NrJ1gGYIrAjRXrdSy2z6WJQyb+oYA/iyBa7TMQM5Ln+yhIXIIeC9lca1dfEmBWt0OBl6zGZaJJrbQ8yXqslI= X-Received: by 2002:aa7:c912:0:b0:518:a5e5:47b6 with SMTP id b18-20020aa7c912000000b00518a5e547b6mr5388394edt.24.1687119616563; Sun, 18 Jun 2023 13:20:16 -0700 (PDT) In-Reply-To: <87pm5sd2nc.fsf@web.de> Received-SPF: pass client-ip=2a00:1450:4864:20::536; envelope-from=damien.mattei@gmail.com; helo=mail-ed1-x536.google.com 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, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Original-Sender: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.lisp.guile.user:19048 Archived-At: --00000000000070c94b05fe6d2547 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hello Arne, yes it needs SRFI 105 Curly infix to allow full notation. It defines the optional $bracket-apply$ procedure or macro (here a macro) as described in SRFI 105. The code is in attachment (not in my github because there is a lot of work again to have the same powerful and easy affectation between 2 arrays than in Python) Best regards, Damien On Sun, Jun 18, 2023 at 8:52=E2=80=AFPM Dr. Arne Babenhauserheide wrote: > Hi Damien, > > > {#(1 2 3 4 5 6 7)[2 / 5]} > > #(3 4 5) > > that looks pretty interesting. Is it compatible to curly infix / SRFI-105= ? > > Best wishes, > Arne > -- > Unpolitisch sein > hei=C3=9Ft politisch sein, > ohne es zu merken. > draketo.de > --00000000000070c94b05fe6d2547 Content-Type: application/octet-stream; name="apply-square-brackets.scm" Content-Disposition: attachment; filename="apply-square-brackets.scm" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lj1vdb930 OzsgZm9yIGd1aWxlICh2ZXJzaW9uIGNvbXBhdGlibGUgd2l0aCBteSBncm93YWJsZSB2ZWN0b3Ig Y2xhc3MpCgo7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBTY2hlbWUrCgo7OyBDb3B5cmlnaHQgMjAy MS0yMDIzIERhbWllbiBNQVRURUkKCjs7IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cjs7IGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cjs7IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCjs7IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgo7OyBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK OzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQo7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgoKOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKOzsgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKCgo7OyBTUkZJIDEwNSA6IEN1 cmx5LWluZml4LWV4cHJlc3Npb25zIGluIGNvbmp1bmN0aW9uIHdpdGggc3BlY2lhbGl6ZWQgJGJy YWNrZXQtYXBwbHkkCjs7IG9mIFNjaGVtZSsgYWxsb3dzIGEgc3ludGF4IGxpa2Uge0NvbnRhaW5l cltpbmRleF19IHdpdGggdmVjdG9ycwo7OyBhbmQgYXJyYXlzIG9mIGFueSBkaW1lbnNpb25zLHNp emUgYW5kIHNoYXBlIGFuZCBoYXNoIHRhYmxlcwoKOzsgKGRlZmluZSBUIChtYWtlLXZlY3RvciA1 KSkKOzsgKHZlY3Rvci1zZXQhIFQgMyA3KQo7OyBzY2hlbWVAKGd1aWxlLXVzZXIpPiB7VFszXX0K OzsgJDMgPSA3Cjs7IHtUWzNdIDwtIDd9Cjs7IDcKCjs7IHNjaGVtZUAoZ3VpbGUtdXNlcik+IChk ZWZpbmUgYSAobWFrZS1hcnJheSA5OTkgJygxIDIpICcoMyA0KSkpCjs7IHNjaGVtZUAoZ3VpbGUt dXNlcik+IChhcnJheS1yZWYgYSAyIDQpCjs7ICQzID0gOTk5Cgo7OyBzY2hlbWVAKGd1aWxlLXVz ZXIpPiB7YVsyIDRdfQo7OyAkOSA9IDk5OQoKOzsgc2NoZW1lQChndWlsZS11c2VyKT4gKGRlZmlu ZSBiIChtYWtlLWFycmF5ICdobyAzKSkKOzsgc2NoZW1lQChndWlsZS11c2VyKT4gKGFycmF5LXJl ZiBiIDEpCjs7ICQxMyA9IGhvCgo7OyBzY2hlbWVAKGd1aWxlLXVzZXIpPiB7YlsyXX0KOzsgJDE1 ID0gaG8KCjs7IHNjaGVtZUAoZ3VpbGUtdXNlcik+ICd7YlsyXX0KOzsgKCRicmFja2V0LWFwcGx5 JCBiIDIpCgo7OyBzY2hlbWVAKGd1aWxlLXVzZXIpPiB7YVsyIDRdIDwtIDd9Cjs7IHNjaGVtZUAo Z3VpbGUtdXNlcik+IHthWzIgNF19Cjs7ICQxOSA9IDcKOzsgc2NoZW1lQChndWlsZS11c2VyKT4g e2FbMSAzXSA8LSA1fQo7OyBzY2hlbWVAKGd1aWxlLXVzZXIpPiB7YVsxIDNdIDwtIGFbMiA0XX0K Ozsgc2NoZW1lQChndWlsZS11c2VyKT4ge2FbMSAzXX0KOzsgJDIwID0gNwoKOzsgc2NoZW1lQChn dWlsZS11c2VyKT4gJ3thWzEgM10gPC0gYVsyIDRdfQo7OyAoPC0gKCRicmFja2V0LWFwcGx5JCBh IDEgMykgKCRicmFja2V0LWFwcGx5JCBhIDIgNCkpCgoKCjs7IChkZWZpbmUtc3ludGF4ICRicmFj a2V0LWFwcGx5JAo7OyAgIChzeW50YXgtcnVsZXMgKCkKICAgIAo7OyAgICAgKChfIGNvbnRhaW5l ciBpbmRleCkKOzsgICAgICA7KGJlZ2luIDs7KGRpc3BsYXkgIiRicmFja2V0LWFwcGx5JCIpIChu ZXdsaW5lKQo7OyAgICAgIChjb25kICh7KHZlY3Rvcj8gY29udGFpbmVyKSBvciAoZ3Jvd2FibGUt dmVjdG9yPyBjb250YWluZXIpfSAoaWYgKGVxdWFsPyAocXVvdGUgLi4pIChxdW90ZSBpbmRleCkp IDs7IFRbMS4uNV0gUGFzY2FsIHN5bnRheCA7LSkgIAo7OyAJCQkJCQkJCSAgICAgIGNvbnRhaW5l ciA7OyByZXR1cm4gdGhlIHZlY3Rvcgo7OyAJCQkJCQkJCSAgICAgICh2ZWN0b3ItcmVmIGNvbnRh aW5lciBpbmRleCkpKSA7OyByZXR1cm4gYW4gZWxlbWVudCBvZiB0aGUgdmVjdG9yCjs7IAkgICAo KGhhc2gtdGFibGU/IGNvbnRhaW5lcikgKGhhc2gtdGFibGUtcmVmIGNvbnRhaW5lciBpbmRleCkp Cjs7IAkgICAoKHN0cmluZz8gY29udGFpbmVyKSAoc3RyaW5nLXJlZiBjb250YWluZXIgaW5kZXgp KQo7OyAJICAgKGVsc2UgKGFycmF5LXJlZiBjb250YWluZXIgaW5kZXgpKSkpOykKICAgIAo7OyAg ICAgKChfIGFycmF5IGluZGV4MSBpbmRleDIgLi4uKQo7OyAgICAgIDsoYmVnaW4gOzsoZGlzcGxh eSAiJGJyYWNrZXQtYXBwbHkkIikgKG5ld2xpbmUpCjs7ICAgICAgKGlmICh2ZWN0b3I/IGFycmF5 KQo7OyAJIChmdW5jdGlvbi1hcnJheS1uLWRpbS1yZWYgYXJyYXkgKHJldmVyc2UgKGxpc3QgaW5k ZXgxIGluZGV4MiAuLi4pKSkgOzsoYXJyYXktbi1kaW0tcmVmIGFycmF5IGluZGV4MSBpbmRleDIg Li4uKQo7OyAJIChhcnJheS1yZWYgYXJyYXkgaW5kZXgxIGluZGV4MiAuLi4pKSkpKTspIAoKCgoo ZGVmaW5lIHNsaWNlIC8pIDs7Jy4uKQoKKGRlZmluZS1zeW50YXggJGJyYWNrZXQtYXBwbHkkCiAg CiAgKHN5bnRheC1ydWxlcyAoKQoKCiAgICA7OyAxIGFyZ3VtZW50IGluIFtdCiAgICA7OyBUW2lu ZGV4XQogICAgKChfIGNvbnRhaW5lciBpbmRleCkKCiAgICAgOzsgeyMoMSAyIDMgNCA1KVstMl19 CiAgICAgOzsgNAogICAgIAogICAgIChjb25kICgob3IgKHZlY3Rvcj8gY29udGFpbmVyKSAoZ3Jv d2FibGUtdmVjdG9yPyBjb250YWluZXIpKQoKCSAgICAoaWYgKGVxdWFsPyBzbGljZSBpbmRleCkg OzsgVFsuLl0gLiBUWzEgLi4gNV0gUGFzY2FsIHN5bnRheCA7LSkgIAoJCWNvbnRhaW5lciA7OyBy ZXR1cm4gdGhlIHZlY3RvcgoJCShpZiAoPCBpbmRleCAwKSA7OyBuZWdhdGl2ZSBpbmRleCBhcyBp biBQeXRob24KCQkgICAgKHZlY3Rvci1yZWYgY29udGFpbmVyICgrICh2ZWN0b3ItbGVuZ3RoIGNv bnRhaW5lcikgaW5kZXgpKSA7OyBuZWdhdGl2ZSBpbmRleGluZwoJCSAgICAodmVjdG9yLXJlZiBj b250YWluZXIgaW5kZXgpKSkpIDs7IHJldHVybiBhbiBlbGVtZW50IG9mIHRoZSB2ZWN0b3IKCSAg IAoJICAgKChoYXNoLXRhYmxlPyBjb250YWluZXIpIChoYXNoLXRhYmxlLXJlZiBjb250YWluZXIg aW5kZXgpKQoKCSAgIDs7IHNvbWV0aW1lcyBpJ20gaW1wcmVzcyBieSBTY2hlbWUgOm8KCSAgIDs7 ICB7InRvdG8iWzJdfQogICAgICAgICAgIDs7ICNcdAoJICAgOzsgeyJ0b3RvIlstMV19CgkgICA7 OyAjXG8KCSAgICgoc3RyaW5nPyBjb250YWluZXIpIChpZiAoZXF1YWw/IHNsaWNlIGluZGV4KSA7 OyBUWy4uXSAuIFRbMSAuLiA1XSBQYXNjYWwgc3ludGF4IDstKSAgCgkJCQkgICAgY29udGFpbmVy IDs7IHJldHVybiB0aGUgc3RyaW5nCgkJCQkgICAgKGlmICg8IGluZGV4IDApIDs7IG5lZ2F0aXZl IGluZGV4IGFzIGluIFB5dGhvbgoJCQkJCShzdHJpbmctcmVmIGNvbnRhaW5lciAoKyAoc3RyaW5n LWxlbmd0aCBjb250YWluZXIpIGluZGV4KSkgOzsgbmVnYXRpdmUgaW5kZXhpbmcKCQkJCQkoc3Ry aW5nLXJlZiBjb250YWluZXIgaW5kZXgpKSkpIDs7IHJldHVybiBhbiBlbGVtZW50IG9mIHRoZSBz dHJpbmcKCSAgIAoJICAgKGVsc2UgOzsgYXJyYXkgb2YgU1JGSSAyNQkgICAgIAoJICAgIChhcnJh eS1yZWYgY29udGFpbmVyIGluZGV4KSkpKSA7OyByZXR1cm4gdGhlIGVsZW1lbnQgb2YgdGhlIGFy cmF5CiAgICAgICAgICAgOzsgbm90ZSA6IGkgZG8gbm90IHVzZSBuZWdhdGl2ZSBpbmRleGVzIG9y IHNsaWNlcyBmb3IgYXJyYXkgYmVjYXVzZSB0aGV5IGNvdWxkIGJlIG5vdCBzdGFydGluZyBhdCB6 ZXJvCiAgICAKCiAgICA7OyAyIGFyZ3VtZW50cyBpbiBbXQogICAgOzsgZXg6IFRbaTEgLi5dICwg VFsuLiBpMl0sIFRbaTEgaTJdICwgVFsuLiAuLl0KICAgICgoXyBjb250YWluZXIgaW5kZXgxLW9y LWtleXdvcmQgaW5kZXgyLW9yLWtleXdvcmQpIAoKICAgICAoY29uZCAoKHZlY3Rvcj8gY29udGFp bmVyKSA7OyAyIGRpbWVuc2lvbiB2ZWN0b3IgPyBvciBUW2kxIC4uXSAsIFRbLi4gaTJdCgoKCSAg ICA7OyB7IygxIDIgMyA0IDUpWzIgL119CgkgICAgOzsgJyMoMyA0IDUpCgkgICAgOzsKCSAgICA7 OyB7IygxIDIgMyA0IDUpWy8gM119CgkgICAgOzsgJyMoMSAyIDMpCgkgICAgCgkgICAgKGNvbmQg KChhbmQgKGVxdWFsPyBzbGljZSBpbmRleDEtb3Ita2V5d29yZCkgOzsgVFsuLiAuLl0KCQkJKGVx dWFsPyBzbGljZSBpbmRleDItb3Ita2V5d29yZCkpCgkJICAgY29udGFpbmVyKQoJCSAgCgkJICAo KGVxdWFsPyBzbGljZSBpbmRleDEtb3Ita2V5d29yZCkgOzsgVFsuLiBpMl0KCQkgICAoaWYgKDwg aW5kZXgyLW9yLWtleXdvcmQgMCkgOzsgbmVnYXRpdmUgaW5kZXgKCQkgICAgICAgKHZlY3Rvci1j b3B5IGNvbnRhaW5lciAwICgrICh2ZWN0b3ItbGVuZ3RoIGNvbnRhaW5lcikgaW5kZXgyLW9yLWtl eXdvcmQpKQoJCSAgICAgICAodmVjdG9yLWNvcHkgY29udGFpbmVyIDAgaW5kZXgyLW9yLWtleXdv cmQpKSkKCQkgIAoJCSAgKChlcXVhbD8gc2xpY2UgaW5kZXgyLW9yLWtleXdvcmQpIDs7IFRbaTEg Li5dCgkJICAgKGlmICg8IGluZGV4MS1vci1rZXl3b3JkIDApIDs7IG5lZ2F0aXZlIGluZGV4CgkJ ICAgICAgICh2ZWN0b3ItY29weSBjb250YWluZXIgKCsgKHZlY3Rvci1sZW5ndGggY29udGFpbmVy KSBpbmRleDEtb3Ita2V5d29yZCkpCgkJICAgICAgICh2ZWN0b3ItY29weSBjb250YWluZXIgaW5k ZXgxLW9yLWtleXdvcmQpKSkKCQkgIAoJCSAgKGVsc2UgOzsgVFtpMSBpMl0gdmVjdG9yIG9mIHZl Y3RvcnMKCQkgICAoZnVuY3Rpb24tYXJyYXktbi1kaW0tcmVmIGNvbnRhaW5lciAocmV2ZXJzZSAo bGlzdCBpbmRleDEtb3Ita2V5d29yZCBpbmRleDItb3Ita2V5d29yZCkpKSkpKQoJICAgOzsoYXJy YXktbi1kaW0tcmVmIGNvbnRhaW5lciBpbmRleDEtb3Ita2V5d29yZCBpbmRleDItb3Ita2V5d29y ZCkKCgoJICAgOzsgeyJoZWxsbyJbLyAyXX0KCSAgIDs7ICJoZSIKCSAgIDs7IHsiaGVsbG8iWzMg L119CgkgICA7OyAibG8iCgoJICAgOzsgeyJoZWxsbyJbLyAvXX0KCSAgIDs7ICJoZWxsbyIKCSAg IDs7IHsiaGVsbG8iWy9dfQogICAgICAgICAgIDs7ICJoZWxsbyIKCSAgICgoc3RyaW5nPyBjb250 YWluZXIpIChjb25kICgoYW5kIChlcXVhbD8gc2xpY2UgaW5kZXgxLW9yLWtleXdvcmQpIDs7IFRb LyAvXQoJCQkJCSAgICAoZXF1YWw/IHNsaWNlIGluZGV4Mi1vci1rZXl3b3JkKSkKCQkJCSAgICAg ICBjb250YWluZXIpCgkJCQkgICAgICAgCgkJCQkgICAgICAgKChlcXVhbD8gc2xpY2UgaW5kZXgx LW9yLWtleXdvcmQpIDs7IFRbLyBpMl0KCQkJCQkoaWYgKDwgaW5kZXgyLW9yLWtleXdvcmQgMCkg OzsgbmVnYXRpdmUgaW5kZXgKCQkJCQkgICAgKHN1YnN0cmluZyBjb250YWluZXIgMCAoKyAoc3Ry aW5nLWxlbmd0aCBjb250YWluZXIpIGluZGV4Mi1vci1rZXl3b3JkKSkKCQkJCQkgICAgKHN1YnN0 cmluZyBjb250YWluZXIgMCBpbmRleDItb3Ita2V5d29yZCkpKQoKCQkJCSAgICAgICAoKGVxdWFs PyBzbGljZSBpbmRleDItb3Ita2V5d29yZCkgOzsgVFtpMSAvXQoJCQkJCShpZiAoPCBpbmRleDEt b3Ita2V5d29yZCAwKSA7OyBuZWdhdGl2ZSBpbmRleAoJCQkJCSAgICAoc3Vic3RyaW5nIGNvbnRh aW5lciAoKyAoc3RyaW5nLWxlbmd0aCBjb250YWluZXIpIGluZGV4MS1vci1rZXl3b3JkKSkKCQkJ CQkgICAgKHN1YnN0cmluZyBjb250YWluZXIgaW5kZXgxLW9yLWtleXdvcmQpKSkKCQkJCSAgICAg IAoJCQkJICAgICAgIChlbHNlIDs7IHN5bnRheCBlcnJvcgoJCQkJCShlcnJvciAiJGJyYWNrZXQt YXBwbHkkIDogYmFkIGFyZ3VtZW50cyBpbiBzdHJpbmcgY2FzZSxleHBlY3RpbmcgLyBpMiBvciBp MSAvLCBwcm92aWRlZCA6IiBpbmRleDEtb3Ita2V5d29yZCBpbmRleDItb3Ita2V5d29yZCkgKSkp CgkgICAKCSAgIAoJICAgKGVsc2UgOzsgVFtpMSBpMl0gLCAgMiBkaW1lbnNpb24gYXJyYXkKCSAg ICAoYXJyYXktcmVmIGNvbnRhaW5lciBpbmRleDEtb3Ita2V5d29yZCBpbmRleDItb3Ita2V5d29y ZCkpKSkgOzsgcmV0dXJuIHRoZSBlbGVtZW50IG9mIHRoZSBhcnJheQogICAgICAgICAgICA7OyBu b3RlIDogaSBkbyBub3QgdXNlIG5lZ2F0aXZlIGluZGV4ZXMgb3Igc2xpY2VzIGZvciBhcnJheSBi ZWNhdXNlIHRoZXkgY291bGQgYmUgbm90IHN0YXJ0aW5nIGF0IHplcm8KICAgIAoKICAgIDs7IDMg YXJndW1lbnRzIGluIFtdCiAgICA7OyBUW2kxIC8gaTJdICwgVFtpMSBpMiBpM10gLCBUWy8gLyBz XQogICAgKChfIGNvbnRhaW5lciBpbmRleDEtb3Ita2V5d29yZCBpbmRleDItb3Ita2V5d29yZCBp bmRleDMtb3Itc3RlcCkgCgogICAgIDs7IHsjKDEgMiAzIDQgNSA2IDcpWzIgLyA1XX0KICAgICA7 OyAnIygzIDQgNSkKICAgICAoY29uZCAoKHZlY3Rvcj8gY29udGFpbmVyKSA7OyAzIGRpbWVuc2lv biB2ZWN0b3IgVFtpMSBpMiBpM10/IG9yIFRbaTEgLyBpM10KCgkgICAgOzsgeyMoMSAyIDMgNCA1 IDYgNyA4KVsvIC8gM119CgkgICAgOzsgJyMoMSA0IDcpCgoJICAgIDs7IHsjKDEgMiAzIDQgNSA2 IDcgOClbLyAvIC0yXX0KCSAgICA7OyAnIyg4IDYgNCAyKQoJICAgIChjb25kICgoYW5kIChlcXVh bD8gc2xpY2UgaW5kZXgxLW9yLWtleXdvcmQpIDs7IFRbLyAvIHN0ZXBdCgkJCShlcXVhbD8gc2xp Y2UgaW5kZXgyLW9yLWtleXdvcmQpKQoKCQkgICAod2hlbiAoPSAwIGluZGV4My1vci1zdGVwKQoJ CQkgKGVycm9yICIkYnJhY2tldC1hcHBseSQgOiBzbGljZSBzdGVwIGNhbm5vdCBiZSB6ZXJvIikp CgkJICAgCgkJICAgKGxldCogKChzaXplLWlucHV0ICh2ZWN0b3ItbGVuZ3RoIGNvbnRhaW5lcikp CgkJCSAgKHNpemUgKHF1b3RpZW50IHNpemUtaW5wdXQgKGFicyBpbmRleDMtb3Itc3RlcCkpKQoJ CQkgIChyZXN1bHQgJygpKQoJCQkgIChpIDApKQoJCSAgICAgCgkJICAgICAod2hlbiAobm90ICg9 IChtb2R1bG8gc2l6ZS1pbnB1dCBpbmRleDMtb3Itc3RlcCkgMCkpCgkJCSAgIChzZXQhIHNpemUg KCsgMSBzaXplKSkpCgkJICAgICAoc2V0ISByZXN1bHQgKG1ha2UtdmVjdG9yIHNpemUpKQoKCQkg ICAgIChpZiAoPCBpbmRleDMtb3Itc3RlcCAwKSA7OyB3aXRoIG5lZ2F0aXZlIGluZGV4IHdlIHN0 YXJ0IGF0IGVuZCBvZiB2ZWN0b3IgKGxpa2UgaW4gUHl0aG9uKQoJCQkgKGZvciAoKGRlZmluZSBr ICgtIHNpemUtaW5wdXQgMSkpICg+PSBrIDApIChzZXQhIGsgKCsgayBpbmRleDMtb3Itc3RlcCkp KQoJCQkgICAgICAodmVjdG9yLXNldCEgcmVzdWx0CgkJCQkJICAgaQoJCQkJCSAgICh2ZWN0b3It cmVmIGNvbnRhaW5lciBrKSkKCQkJICAgICAgKHNldCEgaSAoKyAxIGkpKSkKCQkJIChmb3IgKChk ZWZpbmUgayAwKSAoPCBrIHNpemUtaW5wdXQpIChzZXQhIGsgKCsgayBpbmRleDMtb3Itc3RlcCkp KQoJCQkgICAgICAodmVjdG9yLXNldCEgcmVzdWx0CgkJCQkJICAgaQoJCQkJCSAgICh2ZWN0b3It cmVmIGNvbnRhaW5lciBrKSkKCQkJICAgICAgKHNldCEgaSAoKyAxIGkpKSkpCgkJICAgICAKCQkg ICAgIHJlc3VsdCkpCgkJICAKCgkJICAoKGVxdWFsPyBzbGljZSBpbmRleDItb3Ita2V5d29yZCkg OzsgVFtpMSAvIGkzXQoJCQoJCSAgIChsZXQgKChpMSBpbmRleDEtb3Ita2V5d29yZCkKCQkJIChp MyBpbmRleDMtb3Itc3RlcCkpCgkJICAgICAod2hlbiAoPCBpMSAwKSA7OyBuZWdhdGl2ZSBpbmRl eAoJCQkgICAoc2V0ISBpMSAoKyAodmVjdG9yLWxlbmd0aCBjb250YWluZXIpIGkxKSkpCgkJICAg ICAod2hlbiAoPCBpMyAwKSA7OyBuZWdhdGl2ZSBpbmRleAoJCQkgICAoc2V0ISBpMyAoKyAodmVj dG9yLWxlbmd0aCBjb250YWluZXIpIGkzKSkpCgkJICAgICAodmVjdG9yLWNvcHkgY29udGFpbmVy IGkxIGkzKSkpCgkJCgkJICA7OyBUW2kxIGkyIGkzXSB2ZWN0b3Igb2YgdmVjdG9ycyBvZiB2ZWN0 b3JzCgkJICAoZWxzZSAoZnVuY3Rpb24tYXJyYXktbi1kaW0tcmVmIGNvbnRhaW5lciAobGlzdCBp bmRleDMtb3Itc3RlcCBpbmRleDItb3Ita2V5d29yZCBpbmRleDEtb3Ita2V5d29yZCkpKSkpIDs7 IHdhcyByZXZlcnNlIGxpc3QgLi4uCgkgICAgICAgICAgOztvciB1c2UgYXJyYXktbi1kaW0tcmVm IG1hY3JvCgoKCSAgIAoJICAgOzsgeyJlbGVwaGFudCJbMiAvIDVdfQoJICAgOzsgImVwaCIKCSAg IDs7ICB7ImFiY2RlZmdoaWprbCJbLyAvIDJdfQoJICAgOzsgImFjZWdpayIKCSAgIDs7IHsiYWJj ZGVmZ2hpamtsIlsvIC8gLTNdfQoJICAgOzsgImxpZmMiCgkgICA7OyB7IjEyMzQ1Njc4OSJbIC8g IC8gLTFdfQoJICAgOzsgIjk4NzY1NDMyMSIKCSAgICgoc3RyaW5nPyBjb250YWluZXIpIDs7IFRb aTEgLyBpM10gb3IgZXJyb3IKCSAgICAKCSAgICAoY29uZCAoKGFuZCAoZXF1YWw/IHNsaWNlIGlu ZGV4MS1vci1rZXl3b3JkKSA7OyBUWy8gLyBzdGVwXQoJCQkoZXF1YWw/IHNsaWNlIGluZGV4Mi1v ci1rZXl3b3JkKSkKCgkJICAgKHdoZW4gKD0gMCBpbmRleDMtb3Itc3RlcCkKCQkJIChlcnJvciAi JGJyYWNrZXQtYXBwbHkkIDogc2xpY2Ugc3RlcCBjYW5ub3QgYmUgemVybyIpKQoJCSAgIAoJCSAg IChsZXQqICgoc2l6ZS1pbnB1dCAoc3RyaW5nLWxlbmd0aCBjb250YWluZXIpKQoJCQkgIChzaXpl IChxdW90aWVudCBzaXplLWlucHV0IChhYnMgaW5kZXgzLW9yLXN0ZXApKSkKCQkJICAocmVzdWx0 ICcoKSkKCQkJICAoaSAwKSkKCQkgICAgIAoJCSAgICAgKHdoZW4gKG5vdCAoPSAobW9kdWxvIHNp emUtaW5wdXQgaW5kZXgzLW9yLXN0ZXApIDApKQoJCQkgICAoc2V0ISBzaXplICgrIDEgc2l6ZSkp KQoJCSAgICAgCgkJICAgICAoc2V0ISByZXN1bHQgKG1ha2Utc3RyaW5nIHNpemUpKQoKCQkgICAg IChpZiAoPCBpbmRleDMtb3Itc3RlcCAwKSA7OyB3aXRoIG5lZ2F0aXZlIGluZGV4IHdlIHN0YXJ0 IGF0IGVuZCBvZiB2ZWN0b3IgKGxpa2UgaW4gUHl0aG9uKQoJCQkgKGZvciAoKGRlZmluZSBrICgt IHNpemUtaW5wdXQgMSkpICg+PSBrIDApIChzZXQhIGsgKCsgayBpbmRleDMtb3Itc3RlcCkpKQoJ CQkgICAgICAoc3RyaW5nLXNldCEgcmVzdWx0CgkJCQkJICAgaQoJCQkJCSAgIChzdHJpbmctcmVm IGNvbnRhaW5lciBrKSkKCQkJICAgICAgKHNldCEgaSAoKyAxIGkpKSkKCQkJIChmb3IgKChkZWZp bmUgayAwKSAoPCBrIHNpemUtaW5wdXQpIChzZXQhIGsgKCsgayBpbmRleDMtb3Itc3RlcCkpKQoJ CQkgICAgICAoc3RyaW5nLXNldCEgcmVzdWx0CgkJCQkJICAgaQoJCQkJCSAgIChzdHJpbmctcmVm IGNvbnRhaW5lciBrKSkKCQkJICAgICAgKHNldCEgaSAoKyAxIGkpKSkpCgkJICAgICAKCQkgICAg IHJlc3VsdCkpCgkJICAKCQkgICgoZXF1YWw/IHNsaWNlIGluZGV4Mi1vci1rZXl3b3JkKSA7OyBU W2kxIC8gaTNdCgkJCgkJICAgKGxldCAoKGkxIGluZGV4MS1vci1rZXl3b3JkKQoJCQkgKGkzIGlu ZGV4My1vci1zdGVwKSkKCQkgICAgICh3aGVuICg8IGkxIDApIDs7IG5lZ2F0aXZlIGluZGV4CgkJ CSAgIChzZXQhIGkxICgrICh2ZWN0b3ItbGVuZ3RoIGNvbnRhaW5lcikgaTEpKSkKCQkgICAgICh3 aGVuICg8IGkzIDApIDs7IG5lZ2F0aXZlIGluZGV4CgkJCSAgIChzZXQhIGkzICgrICh2ZWN0b3It bGVuZ3RoIGNvbnRhaW5lcikgaTMpKSkKCQkgICAgIChzdWJzdHJpbmcgY29udGFpbmVyIGkxIGkz KSkpCgoJCSAgKGVsc2UgKGVycm9yICIkYnJhY2tldC1hcHBseSQgOiBpbiBzdHJpbmcgY2FzZSwg cHJvdmlkZWQgdG9vIG11Y2ggYXJndW1lbnRzOiIgaW5kZXgxLW9yLWtleXdvcmQgaW5kZXgyLW9y LWtleXdvcmQgaW5kZXgzLW9yLXN0ZXApKSkpCgoKCSAgIAoJICAgKGVsc2UgOzsgVFtpMSBpMiBp M10gLCAgMyBkaW1lbnNpb24gYXJyYXkKCSAgICAoYXJyYXktcmVmIGNvbnRhaW5lciBpbmRleDEt b3Ita2V5d29yZCBpbmRleDItb3Ita2V5d29yZCBpbmRleDMtb3Itc3RlcCkpKSkgOzsgcmV0dXJu IHRoZSBlbGVtZW50IG9mIHRoZSBhcnJheQogICAgICAgICAgICA7OyBub3RlIDogaSBkbyBub3Qg dXNlIG5lZ2F0aXZlIGluZGV4ZXMgb3Igc2xpY2VzIGZvciBhcnJheSBiZWNhdXNlIHRoZXkgY291 bGQgYmUgbm90IHN0YXJ0aW5nIGF0IHplcm8KICAgIAoKICAgIDs7IDQgYXJndW1lbnRzIGluIFtd CiAgICA7OyBUWy8gaTIgLyBzXSAsIFRbaTEgLyAvIHNdICwgVFtpMSAvIGkzIC9dICwgVFtpMSBp MiBpMyBpNF0KICAgICgoXyBjb250YWluZXIgaW5kZXgxLW9yLWtleXdvcmQgaW5kZXgyLW9yLWtl eXdvcmQgaW5kZXgzLW9yLWtleXdvcmQgaW5kZXg0LW9yLWtleXdvcmQtb3Itc3RlcCkgCiAKICAg ICAoY29uZCAoKHZlY3Rvcj8gY29udGFpbmVyKQoKCSAgICA7OyB7IygxIDIgMyA0IDUgNiA3IDgg OSlbLyA3IC8gMl19CgkgICAgOzsgJyMoMSAzIDUgNykKCSAgICA7OyB7IygxIDIgMyA0IDUgNiA3 IDggOSlbLyA2IC8gLTFdfQoJICAgIDs7ICcjKDYgNSA0IDMgMiAxKQoJICAgIDs7IHsjKDEgMiAz IDQgNSA2IDcgOCA5KVsvIDYgLyAtMl19CgkgICAgOzsgJyMoNiA0IDIpCgkgICAgOzsgeyMoMSAy IDMgNCA1IDYgNyA4IDkpWy8gLTMgLyAtMl19CgkgICAgOzsgJyMoNiA0IDIpCgkgICAgKGNvbmQg KChhbmQgKGVxdWFsPyBzbGljZSBpbmRleDEtb3Ita2V5d29yZCkgIDs7IFRbLyBpMiAvIHNdCgkJ CShlcXVhbD8gc2xpY2UgaW5kZXgzLW9yLWtleXdvcmQpKQoJCSAgIAoJCSAgICh3aGVuICg9IDAg aW5kZXg0LW9yLWtleXdvcmQtb3Itc3RlcCkKCQkJIChlcnJvciAiJGJyYWNrZXQtYXBwbHkkIDog c2xpY2Ugc3RlcCBjYW5ub3QgYmUgemVybyIpKQoJCSAgICAKCQkgICAobGV0KiAoKHNpemUgMCkg OzsgcmVzdWx0IHNpemUKCQkJICAocmVzdWx0ICcoKSkKCQkJICAoaSAwKQoJCQkgIChpMiBpbmRl eDItb3Ita2V5d29yZCkpCgoJCSAgICAgKHdoZW4gKDwgaTIgMCkgOzsgbmVnYXRpdmUgaW5kZXgK CQkJICAgKHNldCEgaTIgKCsgKHZlY3Rvci1sZW5ndGggY29udGFpbmVyKSBpMikpKQoKCQkgICAg IChzZXQhIHNpemUgKHF1b3RpZW50IGkyIChhYnMgaW5kZXg0LW9yLWtleXdvcmQtb3Itc3RlcCkp KQoJCSAgICAgIAoJCSAgICAgOzsoZGlzcGxheWxuIHNpemUpCgkJICAgICAod2hlbiAobm90ICg9 IChtb2R1bG8gaTIgaW5kZXg0LW9yLWtleXdvcmQtb3Itc3RlcCkgMCkpCgkJCSAgIChzZXQhIHNp emUgKCsgMSBzaXplKSkpCgkJICAgICAgCgkJICAgICA7OyhkaXNwbGF5bG4gc2l6ZSkKCQkgICAg IChzZXQhIHJlc3VsdCAobWFrZS12ZWN0b3Igc2l6ZSkpCgkJICAgICAKCQkgICAgIChpZiAoPCBp bmRleDQtb3Ita2V5d29yZC1vci1zdGVwIDApIAoJCQkgIAoJCQkgKGZvciAoKGRlZmluZSBrICgt IGkyIDEpKSAoPj0gayAwKSAoc2V0ISBrICgrIGsgaW5kZXg0LW9yLWtleXdvcmQtb3Itc3RlcCkp KQoJCQkgICAgICAodmVjdG9yLXNldCEgcmVzdWx0CgkJCQkJICAgaQoJCQkJCSAgICh2ZWN0b3It cmVmIGNvbnRhaW5lciBrKSkKCQkJICAgICAgKHNldCEgaSAoKyAxIGkpKSkKCQkJICAKCQkJIChm b3IgKChkZWZpbmUgayAwKSAoPCBrIGkyKSAoc2V0ISBrICgrIGsgaW5kZXg0LW9yLWtleXdvcmQt b3Itc3RlcCkpKQoJCQkgICAgICAodmVjdG9yLXNldCEgcmVzdWx0CgkJCQkJICAgaQoJCQkJCSAg ICh2ZWN0b3ItcmVmIGNvbnRhaW5lciBrKSkKCQkJICAgICAgKHNldCEgaSAoKyAxIGkpKSkpCgkJ ICAgICAKCQkgICAgIHJlc3VsdCkpCgoKCgkJICA7OyB7IygxIDIgMyA0IDUgNiA3IDggOSlbMyAv IC8gMl19CgkJICA7OyAnIyg0IDYgOCkKCQkgIDs7ID4geyMoMSAyIDMgNCA1IDYgNyA4IDkpWzMg LyAvIC0yXX0KCQkgIDs7ICcjKDQgMikKCQkgIDs7ID4geyMoMSAyIDMgNCA1IDYgNyA4IDkpWy0z IC8gLyAyXX0KCQkgIDs7ICcjKDcgOSkKCQkgIDs7IHsjKDEgMiAzIDQgNSA2IDcgOCA5KVstMyAv IC8gLTJdfQoJCSAgOzsgJyMoNyA1IDMgMSkKCQkgICgoYW5kIChlcXVhbD8gaW5kZXgyLW9yLWtl eXdvcmQgc2xpY2UpICA7OyBUW2kxIC8gLyBzXQoJCQkoZXF1YWw/IGluZGV4My1vci1rZXl3b3Jk IHNsaWNlKSkKCQkgICAKCQkgICAgKHdoZW4gKD0gMCBpbmRleDQtb3Ita2V5d29yZC1vci1zdGVw KQoJCQkgIChlcnJvciAiJGJyYWNrZXQtYXBwbHkkIDogc2xpY2Ugc3RlcCBjYW5ub3QgYmUgemVy byIpKQoJCSAgIAoJCSAgICAobGV0KiAoKHNpemUtY29udGFpbmVyICh2ZWN0b3ItbGVuZ3RoIGNv bnRhaW5lcikpCgkJCSAgIChpMSAoaWYgKDwgaW5kZXgxLW9yLWtleXdvcmQgMCkgOzsgbmVnYXRp dmUgaW5kZXgKCQkJCSAgICgrIHNpemUtY29udGFpbmVyIGluZGV4MS1vci1rZXl3b3JkKQoJCQkJ ICAgaW5kZXgxLW9yLWtleXdvcmQpKQoJCQkgICAoc2l6ZS1pbnB1dCAoaWYgKD4gaW5kZXg0LW9y LWtleXdvcmQtb3Itc3RlcCAwKQoJCQkJCSAgICgtIHNpemUtY29udGFpbmVyIGkxKQoJCQkJCSAg ICgrIGkxIDEpKSkKCQkJICAgKHNpemUgKHF1b3RpZW50IHNpemUtaW5wdXQgKGFicyBpbmRleDQt b3Ita2V5d29yZC1vci1zdGVwKSkpIDs7IHJlc3VsdCBzaXplCgkJCSAgIChyZXN1bHQgJygpKQoJ CQkgICAoaSAwKSkKCQkgICAgICAKCQkgICAgICAod2hlbiAobm90ICg9IChtb2R1bG8gc2l6ZS1p bnB1dCBpbmRleDQtb3Ita2V5d29yZC1vci1zdGVwKSAwKSkKCQkJICAgIChzZXQhIHNpemUgKCsg MSBzaXplKSkpCgkJICAgICAgKHNldCEgcmVzdWx0IChtYWtlLXZlY3RvciBzaXplKSkKCgkJICAg ICAgKGlmICg8IGluZGV4NC1vci1rZXl3b3JkLW9yLXN0ZXAgMCkgCgkJCSAKCQkJICAoZm9yICgo ZGVmaW5lIGsgaTEpICg+PSBrIDApIChzZXQhIGsgKCsgayBpbmRleDQtb3Ita2V5d29yZC1vci1z dGVwKSkpCgkJCSAgICAgICAodmVjdG9yLXNldCEgcmVzdWx0CgkJCQkJICAgIGkKCQkJCQkgICAg KHZlY3Rvci1yZWYgY29udGFpbmVyIGspKQoJCQkgICAgICAgKHNldCEgaSAoKyAxIGkpKSkKCQkJ IAoJCQkgIChmb3IgKChkZWZpbmUgayBpMSkgKDwgayBzaXplLWNvbnRhaW5lcikgKHNldCEgayAo KyBrIGluZGV4NC1vci1rZXl3b3JkLW9yLXN0ZXApKSkKCQkJICAgICAgIDs7KGRpc3BsYXlsbiBr KQoJCQkgICAgICAgKHZlY3Rvci1zZXQhIHJlc3VsdAoJCQkJCSAgICBpCgkJCQkJICAgICh2ZWN0 b3ItcmVmIGNvbnRhaW5lciBrKSkKCQkJICAgICAgIChzZXQhIGkgKCsgMSBpKSkpKQoJCSAgICAg CgkJICAgICAgcmVzdWx0KSkKCgoJCSAgKChhbmQgKGVxdWFsPyBpbmRleDItb3Ita2V5d29yZCBz bGljZSkgOzsgVFtpMSAvIGkzIC9dCgkJCShlcXVhbD8gaW5kZXg0LW9yLWtleXdvcmQtb3Itc3Rl cCBzbGljZSkpCgoJCSAgIChsZXQgKChpMSBpbmRleDEtb3Ita2V5d29yZCkKCQkJIChpMyBpbmRl eDMtb3Ita2V5d29yZCkpCgkJICAgICAod2hlbiAoPCBpMSAwKSA7OyBuZWdhdGl2ZSBpbmRleAoJ CQkgICAoc2V0ISBpMSAoKyAodmVjdG9yLWxlbmd0aCBjb250YWluZXIpIGkxKSkpCgkJICAgICAo d2hlbiAoPCBpMyAwKSA7OyBuZWdhdGl2ZSBpbmRleAoJCQkgICAoc2V0ISBpMyAoKyAodmVjdG9y LWxlbmd0aCBjb250YWluZXIpIGkzKSkpCgkJICAgICAodmVjdG9yLWNvcHkgY29udGFpbmVyIGkx IGkzKSkpCgoJCSAgIAoJCSAgIDs7IFRbaTEgaTIgaTMgaTRdIHZlY3RvciBvZiB2ZWN0b3JzIG9m IHZlY3RvcnMgLi4uCgkJICAgKGVsc2UKCQkgICAgCgkJICAgIChmdW5jdGlvbi1hcnJheS1uLWRp bS1yZWYgY29udGFpbmVyIChsaXN0IGluZGV4NC1vci1rZXl3b3JkLW9yLXN0ZXAgaW5kZXgzLW9y LWtleXdvcmQgaW5kZXgyLW9yLWtleXdvcmQgaW5kZXgxLW9yLWtleXdvcmQpKSkpKSA7OyB3YXMg cmV2ZXJzZSBsaXN0IC4uLgoJICAgICAgICAgIDs7b3IgdXNlIGFycmF5LW4tZGltLXJlZiBtYWNy bwoKICAgICAgCgkgICAKCSAgIDs7IHsiMTIzNDU2Nzg5IlsvIC0zIC8gLTJdfQoJICAgOzsgIjY0 MiIKCSAgICgoc3RyaW5nPyBjb250YWluZXIpIAoKCSAgICA7OyB7ImFiY2RlZmdoaWprbG1ubyJb LyA3IC8gMl19CgkgICAgOzsgImFjZWciCgkgICAgOzsgPiB7IjEyMzQ1Njc4OSJbLyAtMyAvIC0y XX0KCSAgICA7OyAiNjQyIgoJICAgIChjb25kICgoYW5kIChlcXVhbD8gc2xpY2UgaW5kZXgxLW9y LWtleXdvcmQpIDs7IFRbLyBpMiAvIHNdCgkJCShlcXVhbD8gc2xpY2UgaW5kZXgzLW9yLWtleXdv cmQpKQoJCSAgIAoJCSAgICAod2hlbiAoPSAwIGluZGV4NC1vci1rZXl3b3JkLW9yLXN0ZXApCgkJ CSAgKGVycm9yICIkYnJhY2tldC1hcHBseSQgOiBzbGljZSBzdGVwIGNhbm5vdCBiZSB6ZXJvIikp CgkJICAgIAoJCSAgICAobGV0KiAoKHNpemUgMCkKCQkJICAgKHJlc3VsdCAnKCkpCgkJCSAgIChp IDApCgkJCSAgIChpMiBpbmRleDItb3Ita2V5d29yZCkpCgoJCSAgICAgICh3aGVuICg8IGkyIDAp IDs7IG5lZ2F0aXZlIGluZGV4CgkJCSAgICAoc2V0ISBpMiAoKyAoc3RyaW5nLWxlbmd0aCBjb250 YWluZXIpIGkyKSkpCgoJCSAgICAgIChzZXQhIHNpemUgKHF1b3RpZW50IGkyIChhYnMgaW5kZXg0 LW9yLWtleXdvcmQtb3Itc3RlcCkpKQoJCSAgICAgCgkJICAgICAgKHdoZW4gKG5vdCAoPSAobW9k dWxvIGkyIGluZGV4NC1vci1rZXl3b3JkLW9yLXN0ZXApIDApKQoJCQkgICAgKHNldCEgc2l6ZSAo KyAxIHNpemUpKSkKCQkgICAgICAoc2V0ISByZXN1bHQgKG1ha2Utc3RyaW5nIHNpemUpKQoKCQkg ICAgICAoaWYgKDwgaW5kZXg0LW9yLWtleXdvcmQtb3Itc3RlcCAwKQoJCQkgCgkJCSAoZm9yICgo ZGVmaW5lIGsgKC0gaTIgMSkpICg+PSBrIDApIChzZXQhIGsgKCsgayBpbmRleDQtb3Ita2V5d29y ZC1vci1zdGVwKSkpCgkJCSAgICAgIChzdHJpbmctc2V0ISByZXN1bHQKCQkJCQkgICBpCgkJCQkJ ICAgKHN0cmluZy1yZWYgY29udGFpbmVyIGspKQoJCQkgICAgICAoc2V0ISBpICgrIDEgaSkpKQoJ CQkgCgkJCSAoZm9yICgoZGVmaW5lIGsgMCkgKDwgayBpMikgKHNldCEgayAoKyBrIGluZGV4NC1v ci1rZXl3b3JkLW9yLXN0ZXApKSkKCQkJICAgICAgKHN0cmluZy1zZXQhIHJlc3VsdAoJCQkJCSAg IGkKCQkJCQkgICAoc3RyaW5nLXJlZiBjb250YWluZXIgaykpCgkJCSAgICAgIChzZXQhIGkgKCsg MSBpKSkpKQoJCSAgICAgCgkJICAgICByZXN1bHQpKQoKCgkJICA7OyB7ImFiY2RlZmdoaWprbG1u byJbMyAvIC8gMl19CgkJICA7OyAiZGZoamxuIgoJCSAgOzsgPiB7IjEyMzQ1Njc4OSJbMyAvICAv IDJdfQoJCSAgOzsgIjQ2OCIKCQkgIDs7ID4geyIxMjM0NTY3ODkiWzMgLyAgLyAtMl19CgkJICA7 OyAiNDIiCgkJICA7OyA+IHsiMTIzNDU2Nzg5IlstMyAvICAvIC0yXX0KCQkgIDs7ICI3NTMxIgoJ CSAgOzsgPiB7IjEyMzQ1Njc4OSJbLTMgLyAgLyAyXX0KCQkgIDs7ICI3OSIKCQkgICgoYW5kIChl cXVhbD8gaW5kZXgyLW9yLWtleXdvcmQgc2xpY2UpICA7OyBUW2kxIC8gLyBzXQoJCQkoZXF1YWw/ IGluZGV4My1vci1rZXl3b3JkIHNsaWNlKSkKCQkgICAKCQkgICAgKHdoZW4gKD0gMCBpbmRleDQt b3Ita2V5d29yZC1vci1zdGVwKQoJCQkgIChlcnJvciAiJGJyYWNrZXQtYXBwbHkkIDogc2xpY2Ug c3RlcCBjYW5ub3QgYmUgemVybyIpKQoJCSAgIAoJCSAgICAobGV0KiAoKHNpemUtY29udGFpbmVy IChzdHJpbmctbGVuZ3RoIGNvbnRhaW5lcikpCgkJCSAgIChpMSAoaWYgKDwgaW5kZXgxLW9yLWtl eXdvcmQgMCkgOzsgbmVnYXRpdmUgaW5kZXgKCQkJCSAgICgrIHNpemUtY29udGFpbmVyIGluZGV4 MS1vci1rZXl3b3JkKQoJCQkJICAgaW5kZXgxLW9yLWtleXdvcmQpKQoJCQkgICAoc2l6ZS1pbnB1 dCAoaWYgKD4gaW5kZXg0LW9yLWtleXdvcmQtb3Itc3RlcCAwKQoJCQkJCSAgICgtIHNpemUtY29u dGFpbmVyIGkxKQoJCQkJCSAgICgrIGkxIDEpKSkKCQkJICAgKHNpemUgKHF1b3RpZW50IHNpemUt aW5wdXQgKGFicyBpbmRleDQtb3Ita2V5d29yZC1vci1zdGVwKSkpCgkJCSAgIChyZXN1bHQgJygp KQoJCQkgICAoaSAwKSkKCQkgICAgICAKCQkgICAgICAod2hlbiAobm90ICg9IChtb2R1bG8gc2l6 ZS1pbnB1dCBpbmRleDQtb3Ita2V5d29yZC1vci1zdGVwKSAwKSkKCQkJICAgIChzZXQhIHNpemUg KCsgMSBzaXplKSkpCgkJICAgICAgKHNldCEgcmVzdWx0IChtYWtlLXN0cmluZyBzaXplKSkKCgkJ ICAgICAgKGlmICg8IGluZGV4NC1vci1rZXl3b3JkLW9yLXN0ZXAgMCkgCgkJCSAKCQkJICAoZm9y ICgoZGVmaW5lIGsgaTEpICg+PSBrIDApIChzZXQhIGsgKCsgayBpbmRleDQtb3Ita2V5d29yZC1v ci1zdGVwKSkpCgkJCSAgICAgICAoc3RyaW5nLXNldCEgcmVzdWx0CgkJCQkJICAgIGkKCQkJCQkg ICAgKHN0cmluZy1yZWYgY29udGFpbmVyIGspKQoJCQkgICAgICAgKHNldCEgaSAoKyAxIGkpKSkK CQkJIAoJCQkgIChmb3IgKChkZWZpbmUgayBpMSkgKDwgayBzaXplLWNvbnRhaW5lcikgKHNldCEg ayAoKyBrIGluZGV4NC1vci1rZXl3b3JkLW9yLXN0ZXApKSkKCQkJICAgICAgIDs7KGRpc3BsYXls biBrKQoJCQkgICAgICAgKHN0cmluZy1zZXQhIHJlc3VsdAoJCQkJCSAgICBpCgkJCQkJICAgIChz dHJpbmctcmVmIGNvbnRhaW5lciBrKSkKCQkJICAgICAgIChzZXQhIGkgKCsgMSBpKSkpKQoJCSAg ICAgCgkJICAgICAgcmVzdWx0KSkKCSAgCgkJIAoJCSAgICgoYW5kIChlcXVhbD8gc2xpY2UgaW5k ZXgyLW9yLWtleXdvcmQpIDs7IFRbaTEgLyBpMyAvXSAKCQkJIChlcXVhbD8gc2xpY2UgaW5kZXg0 LW9yLWtleXdvcmQtb3Itc3RlcCkpCgoJCSAgICAobGV0ICgoaTEgIGluZGV4MS1vci1rZXl3b3Jk KQoJCQkgIChpMyBpbmRleDMtb3Ita2V5d29yZCkpCgkJICAgICAgKHdoZW4gKDwgaTEgMCkgOzsg bmVnYXRpdmUgaW5kZXgKCQkJICAgIChzZXQhIGkxICgrIChzdHJpbmctbGVuZ3RoIGNvbnRhaW5l cikgaTEpKSkKCQkgICAgICAod2hlbiAoPCBpMyAwKSA7OyBuZWdhdGl2ZSBpbmRleAoJCQkgICAg KHNldCEgaTMgKCsgKHN0cmluZy1sZW5ndGggY29udGFpbmVyKSBpMykpKQoJCSAgICAgIChzdWJz dHJpbmcgY29udGFpbmVyIGkxIGkzKSkpCgoJCSAgIAoJCSAgIDs7IFRbaTEgaTIgaTMgaTRdIHZl Y3RvciBvZiB2ZWN0b3JzIG9mIHZlY3RvcnMgLi4uIGJ1dCB3ZSBhcmUgaW4gc3RyaW5nIGNvbnRl eHQgISEhCgkJICAgKGVsc2UKCSAgICAKCQkgICAgKGVycm9yICIkYnJhY2tldC1hcHBseSQgOiBp biBzdHJpbmcgY2FzZSwgcHJvdmlkZWQgdG9vIG11Y2ggYXJndW1lbnRzOiIgaW5kZXgxLW9yLWtl eXdvcmQgaW5kZXgyLW9yLWtleXdvcmQgaW5kZXgzLW9yLWtleXdvcmQgaW5kZXg0LW9yLWtleXdv cmQtb3Itc3RlcCkpKSkKCgkgICAKCSAgIChlbHNlIDs7IFRbaTEgaTIgaTMgaTRdICwgIDQgZGlt ZW5zaW9uIGFycmF5CgkgICAgKGFycmF5LXJlZiBjb250YWluZXIgaW5kZXgxLW9yLWtleXdvcmQg aW5kZXgyLW9yLWtleXdvcmQgaW5kZXgzLW9yLWtleXdvcmQgaW5kZXg0LW9yLWtleXdvcmQtb3It c3RlcCkpKSkgOzsgcmV0dXJuIHRoZSBlbGVtZW50IG9mIHRoZSBhcnJheQogICAgICAgICAgICA7 OyBub3RlIDogaSBkbyBub3QgdXNlIG5lZ2F0aXZlIGluZGV4ZXMgb3Igc2xpY2VzIGZvciBhcnJh eSBiZWNhdXNlIHRoZXkgY291bGQgYmUgbm90IHN0YXJ0aW5nIGF0IHplcm8KCgogICAgCgogICAg OzsgNSBhcmd1bWVudHMgaW4gW10KICAgIDs7IFRbaTEgLyBpMyAvIHNdICwgVFtpMSBpMiBpMyBp NCBpNV0KICAgICgoXyBjb250YWluZXIgaW5kZXgxIGluZGV4Mi1vci1rZXl3b3JkIGluZGV4MyBp bmRleDQtb3Ita2V5d29yZCBpbmRleDUtb3Itc3RlcCkgCgogICAgIDs7IHsjKDEgMiAzIDQgNSA2 IDcgOCA5KVsyIC8gNSAvIDFdfQogICAgIDs7ICcjKDMgNCA1KQogICAgIDs7IHsjKDEgMiAzIDQg NSA2IDcgOCA5KVs1IC8gMiAvIC0xXX0KICAgICA7OyAnIyg2IDUgNCkKICAgICA7OyB7IygxIDIg MyA0IDUgNiA3IDggOSlbMiAvIDUgLyAtMV19CiAgICAgOzsgJyMoKQogICAgIDs7IHsjKDEgMiAz IDQgNSA2IDcgOCA5KVstMSAvIDUgLyAtMV19CiAgICAgOzsgJyMoOSA4IDcpCiAgICAgOzsgeyMo MSAyIDMgNCA1IDYgNyA4IDkpWy0wIC8gNSAvIC0xXX0KICAgICA7OyAnIygpCiAgICAgKGNvbmQg KCh2ZWN0b3I/IGNvbnRhaW5lcikKCSAgICAKCSAgICAoaWYgKGFuZCAoZXF1YWw/IGluZGV4Mi1v ci1rZXl3b3JkIHNsaWNlKSAgOzsgVFtpMSAvIGkzIC8gc10KCQkgICAgIChlcXVhbD8gaW5kZXg0 LW9yLWtleXdvcmQgc2xpY2UpKQoKCQkoYmVnaW4KCQkgICAKCQkgICh3aGVuICg9IDAgaW5kZXg1 LW9yLXN0ZXApCgkJCShlcnJvciAiJGJyYWNrZXQtYXBwbHkkIDogc2xpY2Ugc3RlcCBjYW5ub3Qg YmUgemVybyIpKQoJCSAgCgkJICAobGV0KiAoKHNpemUtY29udGFpbmVyICh2ZWN0b3ItbGVuZ3Ro IGNvbnRhaW5lcikpCgkJCSAKCQkJIChpMSAoaWYgKDwgaW5kZXgxIDApIDs7IG5lZ2F0aXZlIGlu ZGV4CgkJCQkgKCsgc2l6ZS1jb250YWluZXIgaW5kZXgxKQoJCQkJIGluZGV4MSkpCgoJCQkgKGkz IChpZiAoPCBpbmRleDMgMCkgOzsgbmVnYXRpdmUgaW5kZXgKCQkJCSAoKyBzaXplLWNvbnRhaW5l ciBpbmRleDMpCgkJCQkgaW5kZXgzKSkKCQkJICAKCQkJIChzaXplLWlucHV0IChpZiAoPiBpbmRl eDUtb3Itc3RlcCAwKQoJCQkJCSAoLSBpMyBpMSkKCQkJCQkgKC0gaTEgaTMpKSkKCQkJICAKCQkJ IChzaXplIChxdW90aWVudCBzaXplLWlucHV0IChhYnMgaW5kZXg1LW9yLXN0ZXApKSkgOzsgcmVz dWx0IHNpemUKCQkJIChyZXN1bHQgJygpKQoJCQkgKGkgMCkpCgkJICAgICAgCgkJICAgICh3aGVu IChub3QgKD0gKG1vZHVsbyBzaXplLWlucHV0IGluZGV4NS1vci1zdGVwKSAwKSkKCQkJICAoc2V0 ISBzaXplICgrIDEgc2l6ZSkpKQoKCQkgICAgKGlmICg8PSBzaXplIDApCgkJCQoJCQkobWFrZS12 ZWN0b3IgMCkKCgkJCShiZWdpbgoJCQkgIChzZXQhIHJlc3VsdCAobWFrZS12ZWN0b3Igc2l6ZSkp CgkJCSAgCgkJCSAgKGlmICg8IGluZGV4NS1vci1zdGVwIDApIAoJCQkgICAgICAKCQkJICAgICAg KGZvciAoKGRlZmluZSBrIGkxKSAoPiBrIGkzKSAoc2V0ISBrICgrIGsgaW5kZXg1LW9yLXN0ZXAp KSkgOzsgd2UgZG8gbm90IGluY2x1ZGUgaTEtdGggZWxlbWVudAoJCQkJICAgOzsgaSBkbyBub3Qg YWxsb3cgUHl0aG9uIGluZGV4IG92ZXIgc2l6ZSBvZiB2ZWN0b3IKCQkJCSAgIDs7ICh3aGVuICg+ PSBrIHNpemUtY29udGFpbmVyKQoJCQkJICAgOzsgCSAoY29udGludWUpKQoJCQkJICAgCgkJCQkg ICAodmVjdG9yLXNldCEgcmVzdWx0CgkJCQkJCWkKCQkJCQkJKHZlY3Rvci1yZWYgY29udGFpbmVy IGspKQoJCQkJICAgKHNldCEgaSAoKyAxIGkpKSkKCQkJICAgICAgCgkJCSAgICAgIChmb3IgKChk ZWZpbmUgayBpMSkgKDwgayBpMykgKHNldCEgayAoKyBrIGluZGV4NS1vci1zdGVwKSkpCgkJCQkg ICA7OyhkaXNwbGF5bG4gaykKCQkJCSAgICh2ZWN0b3Itc2V0ISByZXN1bHQKCQkJCQkJaQoJCQkJ CQkodmVjdG9yLXJlZiBjb250YWluZXIgaykpCgkJCQkgICAoc2V0ISBpICgrIDEgaSkpKSkKCQkg ICAgIAoJCQkgIHJlc3VsdCkpKSkKCgoJCTs7IFRbaTEgaTIgaTMgaTQgaTVdIHZlY3RvciBvZiB2 ZWN0b3JzIG9mIHZlY3RvcnMgLi4uCgkJKGZ1bmN0aW9uLWFycmF5LW4tZGltLXJlZiBjb250YWlu ZXIgKGxpc3QgaW5kZXg1LW9yLXN0ZXAKCQkJCQkJCSAgaW5kZXg0LW9yLWtleXdvcmQKCQkJCQkJ CSAgaW5kZXgzCgkJCQkJCQkgIGluZGV4Mi1vci1rZXl3b3JkCgkJCQkJCQkgIGluZGV4MSkpKSkg Ozsgd2FzIHJldmVyc2UgbGlzdCAuLi4KICAgICAgICAgICAgICAgICAgICAgOztvciB1c2UgYXJy YXktbi1kaW0tcmVmIG1hY3JvCgogICAgICAKCSAgIAoJICAgOzsgeyIwMTIzNDU2Nzg5Ils1IC8g MiAvIC0xXX0KCSAgIDs7ICI1NDMiCgkgICA7OyB7IjAxMjM0NTY3ODkiWzUgLyAgLyAtMV19Cgkg ICA7OyAiNTQzMjEwIgoJICAgOzsgeyIwMTIzNDU2Nzg5Ils1IC8gMCAvIC0xXX0KCSAgIDs7ICI1 NDMyMSIKCSAgICgoc3RyaW5nPyBjb250YWluZXIpIAoKCSAgICAoaWYgKGFuZCAoZXF1YWw/IGlu ZGV4Mi1vci1rZXl3b3JkIHNsaWNlKSAgOzsgVFtpMSAvIGkzIC8gc10KCQkgICAgIChlcXVhbD8g aW5kZXg0LW9yLWtleXdvcmQgc2xpY2UpKQoKCQkoYmVnaW4KCQkgICAKCQkgICh3aGVuICg9IDAg aW5kZXg1LW9yLXN0ZXApCgkJCShlcnJvciAiJGJyYWNrZXQtYXBwbHkkIDogc2xpY2Ugc3RlcCBj YW5ub3QgYmUgemVybyIpKQoJCSAgCgkJICAobGV0KiAoKHNpemUtY29udGFpbmVyIChzdHJpbmct bGVuZ3RoIGNvbnRhaW5lcikpCgkJCSAKCQkJIChpMSAoaWYgKDwgaW5kZXgxIDApIDs7IG5lZ2F0 aXZlIGluZGV4CgkJCQkgKCsgc2l6ZS1jb250YWluZXIgaW5kZXgxKQoJCQkJIGluZGV4MSkpCgoJ CQkgKGkzIChpZiAoPCBpbmRleDMgMCkgOzsgbmVnYXRpdmUgaW5kZXgKCQkJCSAoKyBzaXplLWNv bnRhaW5lciBpbmRleDMpCgkJCQkgaW5kZXgzKSkKCQkJICAKCQkJIChzaXplLWlucHV0IChpZiAo PiBpbmRleDUtb3Itc3RlcCAwKQoJCQkJCSAoLSBpMyBpMSkKCQkJCQkgKC0gaTEgaTMpKSkKCQkJ ICAKCQkJIChzaXplIChxdW90aWVudCBzaXplLWlucHV0IChhYnMgaW5kZXg1LW9yLXN0ZXApKSkg OzsgcmVzdWx0IHNpemUKCQkJIChyZXN1bHQgJygpKQoJCQkgKGkgMCkpCgkJICAgICAgCgkJICAg ICh3aGVuIChub3QgKD0gKG1vZHVsbyBzaXplLWlucHV0IGluZGV4NS1vci1zdGVwKSAwKSkKCQkJ ICAoc2V0ISBzaXplICgrIDEgc2l6ZSkpKQoKCQkgICAgKGlmICg8PSBzaXplIDApCgkJCQoJCQko bWFrZS1zdHJpbmcgMCkKCgkJCShiZWdpbgoJCQkgIChzZXQhIHJlc3VsdCAobWFrZS1zdHJpbmcg c2l6ZSkpCgkJCSAgCgkJCSAgKGlmICg8IGluZGV4NS1vci1zdGVwIDApIAoJCQkgICAgICAKCQkJ ICAgICAgKGZvciAoKGRlZmluZSBrIGkxKSAoPiBrIGkzKSAoc2V0ISBrICgrIGsgaW5kZXg1LW9y LXN0ZXApKSkgOzsgd2UgZG8gbm90IGluY2x1ZGUgaTEtdGggZWxlbWVudAoJCQkJICAgOzsgaSBk byBub3QgYWxsb3cgUHl0aG9uIGluZGV4IG92ZXIgc2l6ZSBvZiBzdHJpbmcKCQkJCSAgIDs7ICh3 aGVuICg+PSBrIHNpemUtY29udGFpbmVyKQoJCQkJICAgOzsgCSAoY29udGludWUpKQoJCQkJICAg CgkJCQkgICAoc3RyaW5nLXNldCEgcmVzdWx0CgkJCQkJCWkKCQkJCQkJKHN0cmluZy1yZWYgY29u dGFpbmVyIGspKQoJCQkJICAgKHNldCEgaSAoKyAxIGkpKSkKCQkJICAgICAgCgkJCSAgICAgIChm b3IgKChkZWZpbmUgayBpMSkgKDwgayBpMykgKHNldCEgayAoKyBrIGluZGV4NS1vci1zdGVwKSkp CgkJCQkgICA7OyhkaXNwbGF5bG4gaykKCQkJCSAgIChzdHJpbmctc2V0ISByZXN1bHQKCQkJCQkJ aQoJCQkJCQkoc3RyaW5nLXJlZiBjb250YWluZXIgaykpCgkJCQkgICAoc2V0ISBpICgrIDEgaSkp KSkKCQkgICAgIAoJCQkgIHJlc3VsdCkpKSkKCgkgICAKCQk7OyBUW2kxIGkyIGkzIGk0IGk1XSB2 ZWN0b3Igb2YgdmVjdG9ycyBvZiB2ZWN0b3JzIC4uLiBidXQgd2UgYXJlIGluIHN0cmluZyBjb250 ZXh0ICEhIQoJCSAgCgkJKGVycm9yICIkYnJhY2tldC1hcHBseSQgOiBpbiBzdHJpbmcgY2FzZSwg cHJvdmlkZWQgdG9vIG11Y2ggYXJndW1lbnRzOiIgaW5kZXgxIGluZGV4Mi1vci1rZXl3b3JkIGlu ZGV4MyBpbmRleDQtb3Ita2V5d29yZCBpbmRleDUtb3Itc3RlcCkpKQoKCSAgIAoJICAgKGVsc2Ug OzsgVFtpMSBpMiBpMyBpNCBpNV0gLCAgNSBkaW1lbnNpb24gYXJyYXkKCgkgICAgKGFycmF5LXJl ZiBjb250YWluZXIgaW5kZXgxIGluZGV4Mi1vci1rZXl3b3JkIGluZGV4MyBpbmRleDQtb3Ita2V5 d29yZCBpbmRleDUtb3Itc3RlcCkpKSkgOzsgcmV0dXJuIHRoZSBlbGVtZW50IG9mIHRoZSBhcnJh eQogICAgICAgICAgICA7OyBub3RlIDogaSBkbyBub3QgdXNlIG5lZ2F0aXZlIGluZGV4ZXMgb3Ig c2xpY2VzIGZvciBhcnJheSBiZWNhdXNlIHRoZXkgY291bGQgYmUgbm90IHN0YXJ0aW5nIGF0IHpl cm8KCgogICAgCiAgICA7OyBtb3JlIHRoYW4gNSBhcmd1bWVudHMgaW4gW10KICAgIDs7IFRbaTEg aTIgaTMgaTQgaTUgLi4uXQogICAgKChfIGFycmF5IGluZGV4MSBpbmRleDIgaW5kZXgzIGluZGV4 NCBpbmRleDUgLi4uKQoJCQkJCQogICAgIChpZiAodmVjdG9yPyBhcnJheSkKCSAoZnVuY3Rpb24t YXJyYXktbi1kaW0tcmVmIGFycmF5IChyZXZlcnNlIChsaXN0IGluZGV4MSBpbmRleDIgaW5kZXgz IGluZGV4NCBpbmRleDUgLi4uKSkpIDs7KGFycmF5LW4tZGltLXJlZiBhcnJheSBpbmRleDEgaW5k ZXgyIC4uLikKCSAoYXJyYXktcmVmIGFycmF5IGluZGV4MSBpbmRleDIgaW5kZXgzIGluZGV4NCBp bmRleDUgLi4uKSkpKSkgICA7OyBhcnJheSBTUkZJIDI1CgoK --00000000000070c94b05fe6d2547--