From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Pip Cet Newsgroups: gmane.emacs.bugs Subject: bug#46670: 28.0.50; [feature/native-comp] possible miscompilation affecting lsp-mode Date: Tue, 23 Feb 2021 07:59:32 +0000 Message-ID: References: <87a6ry46uc.fsf@collares.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000a5273005bbfc4e5e" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="39043"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 46670@debbugs.gnu.org, Mauricio Collares To: Andrea Corallo Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Feb 23 09:01:25 2021 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 1lESdI-0009yX-Pn for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 23 Feb 2021 09:01:24 +0100 Original-Received: from localhost ([::1]:36060 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lESdH-0001Gv-Ri for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 23 Feb 2021 03:01:23 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:56638) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lEScw-0001G5-Qu for bug-gnu-emacs@gnu.org; Tue, 23 Feb 2021 03:01:06 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:46665) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lEScv-0006xr-UN for bug-gnu-emacs@gnu.org; Tue, 23 Feb 2021 03:01:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1lEScv-0001az-TS for bug-gnu-emacs@gnu.org; Tue, 23 Feb 2021 03:01:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Pip Cet Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 23 Feb 2021 08:01:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 46670 X-GNU-PR-Package: emacs Original-Received: via spool by 46670-submit@debbugs.gnu.org id=B46670.16140672186064 (code B ref 46670); Tue, 23 Feb 2021 08:01:01 +0000 Original-Received: (at 46670) by debbugs.gnu.org; 23 Feb 2021 08:00:18 +0000 Original-Received: from localhost ([127.0.0.1]:58211 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lEScD-0001Zj-CJ for submit@debbugs.gnu.org; Tue, 23 Feb 2021 03:00:18 -0500 Original-Received: from mail-ot1-f42.google.com ([209.85.210.42]:36803) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lEScA-0001ZQ-Oo for 46670@debbugs.gnu.org; Tue, 23 Feb 2021 03:00:15 -0500 Original-Received: by mail-ot1-f42.google.com with SMTP id 105so8306235otd.3 for <46670@debbugs.gnu.org>; Tue, 23 Feb 2021 00:00:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=IhkouAR4Tj5yq0ROW9+U7+Xth5DlFUHMuQCKRjQAx9M=; b=PAsla8/cp3hvd5zp55Z3a1bh+Pid6ol9TMNzlKyas5KC593zjcvM6aTWxspNdc5ZJo +puxxbugTL8u3PGfKL+aVks/wd6tCJScpmdH3ZfNocwXs766yFFdfQ4ifY7Fq91lRF+s 9N2Fqcv1vXyZZTCj0VHBYr13EbeL/9SeXecj1XT5dSn0+nVHDuPhzPYBqX/HMRD13yX7 S2VgTwX2hVSDR6iIbOP/vzgq1SU3CLjrAolbGzjFfPOCgDOjGjCtpKdDay86GuNlP3uh 6yO+qmDuvXCKCQ4ySrRawQD/Nhc8I2a9N9yAT/Skhcw6WMdgkGaiAriOC9nXdAMKXrSA qafg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=IhkouAR4Tj5yq0ROW9+U7+Xth5DlFUHMuQCKRjQAx9M=; b=IAQfVGzrJVUSpRw/adoTW1W7mS6kA0djBhFtVOynuxCHc05dOXaNvXvDxzVtanu1LX wuDV8PY+atbKWWGTQUCCWL65q/908AKnP8lF1N4FvaX24GEdXRGJvpAZ/LH0Vk4mLlvx ikGaqFMrFSDLqz+vokw2s7eiBeAHIPs2a8V2F9SsNoUU1o1muhQK+Cow46GfOv7TTdm8 flE/RH8SP0lOnjH+jm1uj9NpwX/1Fg8Ir0wuRSI3+qEw3WVmacD6OrFu9BpIrFhni8lQ u9v3fdZ8M+IqRLXM1PBLIXo8UwFhw2b7EGL2wIFCqJmCumr/6t9BYNqJtgb93BF0yoT2 cqFA== X-Gm-Message-State: AOAM5339+uJvfh9crlPFOvBmgOy5HF5UWwaJbhg6izXmcPSWrq+yYLXe UDMyJHm8oQgw+oZAs228yHx00e3k8tvhg8iLloc= X-Google-Smtp-Source: ABdhPJzybcQo+YUzZUMS9Czd3fluXlrTSF8ZXnYjjuRs2HXeC+sMz2HvMyd+Yaom6U9A4hCSfAjrydvDhbo4UJn2oew= X-Received: by 2002:a05:6830:249a:: with SMTP id u26mr14469318ots.287.1614067209137; Tue, 23 Feb 2021 00:00:09 -0800 (PST) In-Reply-To: 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" Xref: news.gmane.io gmane.emacs.bugs:200645 Archived-At: --000000000000a5273005bbfc4e5e Content-Type: text/plain; charset="UTF-8" On Mon, Feb 22, 2021 at 1:12 PM Andrea Corallo wrote: > Good catch thanks! :) Should be fixed by d6227f6edc. I'm also confused by the use of NEGATED in comp-emit-assume: if RHS is a constraint, it emits the complementary constraint. However, the code in comp-add-cond-cstrs uses NEGATED to express a much weaker constraint: that two mvars aren't strictly equal. If x /= y and y in SET, we can't conclude that x not in SET (unless SET is a singleton, an important special case). So it all works right now because emit-assume NEGATED=t RHS=mvar means "LHS isn't equal to RHS" but NEGATED=t RHS=cstr means "LHS can't satisfy RHS". My code changed the call to pass a constraint instead of the mvar, and then things broke :-) We should be consistent about what NEGATED means, I think. But apart from such problems, my code appears to be working. I'm attaching it for the sake of completeness, not because I expect you to read it all before it's cleaned up. --000000000000a5273005bbfc4e5e Content-Type: text/x-patch; charset="US-ASCII"; name="emacs-bug46670-001.diff" Content-Disposition: attachment; filename="emacs-bug46670-001.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_klhpwpto0 ZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9jb21wLmVsIGIvbGlzcC9lbWFjcy1saXNwL2Nv bXAuZWwKaW5kZXggNjBjMDQwOTI2ZTU0Yy4uM2NiNzgxMmI1YTg3NCAxMDA2NDQKLS0tIGEvbGlz cC9lbWFjcy1saXNwL2NvbXAuZWwKKysrIGIvbGlzcC9lbWFjcy1saXNwL2NvbXAuZWwKQEAgLTY5 MCw2ICs2OTAsMTYgQEAgY29tcC1hcmdzLWJhc2UKICAgICAgICAgICAgICA6ZG9jdW1lbnRhdGlv biAiVGhpcyBpcyBhIGNvcHkgb2YgdGhlIGZyYW1lIHdoZW4gbGVhdmluZyB0aGUgYmxvY2suCiBJ cyBpbiB1c2UgdG8gaGVscCB0aGUgU1NBIHJlbmFtZSBwYXNzLiIpKQogCisoZGVmdW4gY29tcC1i bG9jay1pbnNucy1yZXZlcnNlIChiYiAmb3B0aW9uYWwgc3RhcnQpCisgICJSZXR1cm4gdGhlIGlu c25zIGluIEJCIGluIHJldmVyc2Ugb3JkZXIsIHN0YXJ0aW5nIHdpdGggdGhlIG9uZSBiZWZvcmUK K1NUQVJULiIKKyAgKGxldCAoKGluc25zIChjb21wLWJsb2NrLWluc25zIGJiKSkKKyAgICAgICAg cmVzKQorICAgICh3aGlsZSAobm90IChlcSAoY2FyIGluc25zKSBzdGFydCkpCisgICAgICAocHVz aCAoY2FyIGluc25zKSByZXMpCisgICAgICAoc2V0cSBpbnNucyAoY2RyIGluc25zKSkpCisgICAg cmVzKSkKKwogKGNsLWRlZnN0cnVjdCAoY29tcC1ibG9jay1sYXAgKDpjb3BpZXIgbmlsKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKDppbmNsdWRlIGNvbXAtYmxvY2spCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoOmNvbnN0cnVjdG9yIG1ha2UtLWNvbXAtYmxvY2stbGFw CkBAIC04MjYsNyArODM2LDcgQEAgY29tcC1tdmFyLXZhbHVlLXZsZC1wCiAoZGVmdW4gY29tcC1t dmFyLXZhbHVlIChtdmFyKQogICAiUmV0dXJuIHRoZSBjb25zdGFudCB2YWx1ZSBvZiBNVkFSLgog YGNvbXAtbXZhci12YWx1ZS12bGQtcCcgKm11c3QqIGJlIHNhdGlzZmllZCBiZWZvcmUgY2FsbGlu ZwotYGNvbXAtbXZhci1jb25zdCcuIgorYGNvbXAtbXZhci12YWx1ZScuIgogICAoZGVjbGFyZSAo Z3Ytc2V0dGVyCiAgICAgICAgICAgICAobGFtYmRhICh2YWwpCiAgICAgICAgICAgICAgIGAoaWYg KGludGVnZXJwICx2YWwpCkBAIC05MDMsNiArOTEzLDEwIEBAIGNvbXAtYXNzaWduLW9wLXAKICAg IkFzc2lnbm1lbnQgcHJlZGljYXRlIGZvciBPUC4iCiAgICh3aGVuIChtZW1xIG9wIGNvbXAtbGlt cGxlLWFzc2lnbm1lbnRzKSB0KSkKIAorKGRlZnVuIGNvbXAtY2xvYmJlcmluZy1hc3NpZ24tb3At cCAob3ApCisgICJUZXN0IGlmIE9QIGlzIGEgY2xvYmJlcmluZyBhc3NpZ25tZW50LiIKKyAgKGFu ZCAoY29tcC1hc3NpZ24tb3AtcCBvcCkgKG5vdCAoZXEgb3AgJ2Fzc3VtZSkpKSkKKwogKGRlZnVu IGNvbXAtY2FsbC1vcC1wIChvcCkKICAgIkNhbGwgcHJlZGljYXRlIGZvciBPUC4iCiAgICh3aGVu IChtZW1xIG9wIGNvbXAtbGltcGxlLWNhbGxzKSB0KSkKQEAgLTIyMDIsNyArMjIxNiw3IEBAIGNv bXAtbGltcGxpZnkKIAogCiAoZGVmc3Vic3QgY29tcC1tdmFyLXVzZWQtcCAobXZhcikKLSAgIk5v bi1uaWwgd2hlbiBNVkFSIGlzIHVzZWQgYXMgbGhzIGluIHRoZSBjdXJyZW50IGZ1bmNpdG9uLiIK KyAgIk5vbi1uaWwgd2hlbiBNVkFSIGlzIHVzZWQgYXMgcmhzIGluIHRoZSBjdXJyZW50IGZ1bmN0 aW9uLiIKICAgKGRlY2xhcmUgKGd2LXNldHRlciAobGFtYmRhICh2YWwpCiAJCQlgKHB1dGhhc2gg LG12YXIgLHZhbCBjb21wLXBhc3MpKSkpCiAgIChnZXRoYXNoIG12YXIgY29tcC1wYXNzKSkKQEAg LTIyMTcsNyArMjIzMSw3IEBAIGNvbXAtY29sbGVjdC1tdmFycwogICAgICAgICAgICAgICAgZG8g KHNldGYgKGNvbXAtbXZhci11c2VkLXAgeCkgdCkpKQogCiAoZGVmdW4gY29tcC1jb2xsZWN0LXJo cyAoKQotICAiQ29sbGVjdCBhbGwgbGhzIG12YXJzIGludG8gYGNvbXAtcGFzcycuIgorICAiQ29s bGVjdCBhbGwgcmhzIG12YXJzIGludG8gYGNvbXAtcGFzcycuIgogICAoY2wtbG9vcAogICAgZm9y IGIgYmVpbmcgZWFjaCBoYXNoLXZhbHVlIG9mIChjb21wLWZ1bmMtYmxvY2tzIGNvbXAtZnVuYykK ICAgIGRvIChjbC1sb29wCkBAIC0yMjQ1LDcgKzIyNTksMTQgQEAgY29tcC1yZXZlcnNlLWNtcC1m dW4KICAgICAoPD0gJz49KQogICAgICh0IGZ1bmN0aW9uKSkpCiAKLShkZWZ1biBjb21wLWVtaXQt YXNzdW1lIChraW5kIGxocyByaHMgYmIgbmVnYXRlZCkKKyhkZWZ1biBjb21wLWNzdHItc2luZ2xl dG9uLXAgKGNzdHIpCisgIChvciAoYW5kIChjb21wLWNzdHItdmFsc2V0IGNzdHIpCisgICAgICAg ICAgIChsZW5ndGg9IChjb21wLWNzdHItdmFsc2V0IGNzdHIpIDEpKQorICAgICAgKGFuZCAoY29t cC1jc3RyLXJhbmdlIGNzdHIpCisgICAgICAgICAgIChlcXVhbCAoY2FyIChjb21wLWNzdHItcmFu Z2UgY3N0cikpCisgICAgICAgICAgICAgICAgICAoY2RyIChjb21wLWNzdHItcmFuZ2UgY3N0cikp KSkpKQorCisoZGVmdW4gY29tcC1lbWl0LWFzc3VtZSAoa2luZCBsaHMgcmhzIGJiIG5lZ2F0ZWQg Jm9wdGlvbmFsIHN0cmljdGx5KQogICAiRW1pdCBhbiBhc3N1bWUgb2Yga2luZCBLSU5EIGZvciBt dmFyIExIUyBiZWluZyBSSFMuCiBXaGVuIE5FR0FURUQgaXMgbm9uLW5pbCB0aGUgYXNzdW1wdGlv biBpcyBuZWdhdGVkLgogVGhlIGFzc3VtZSBpcyBlbWl0dGVkIGF0IHRoZSBiZWdpbm5pbmcgb2Yg dGhlIGJsb2NrIEJCLiIKQEAgLTIyNTMsNiArMjI3NCw3IEBAIGNvbXAtZW1pdC1hc3N1bWUKICAg ICAoY2wtYXNzZXJ0IGxocy1zbG90KQogICAgIChwY2FzZSBraW5kCiAgICAgICAoJ2FuZAorICAg ICAgIChjb21wLWxvZyAoZm9ybWF0ICJhc3N1bWluZzQgJVMgJVMgJVMiIGxocyByaHMgbmVnYXRl ZCkpCiAgICAgICAgKGlmIChjb21wLW12YXItcCByaHMpCiAgICAgICAgICAgIChsZXQgKCh0bXAt bXZhciAoaWYgbmVnYXRlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWtlLWNv bXAtbXZhciA6c2xvdCAoY29tcC1tdmFyLXNsb3QgcmhzKSkKQEAgLTIyNjMsMjkgKzIyODUsNDcg QEAgY29tcC1lbWl0LWFzc3VtZQogICAgICAgICAgICAgIChpZiBuZWdhdGVkCiAgICAgICAgICAg ICAgICAgIChwdXNoIGAoYXNzdW1lICx0bXAtbXZhciAobm90ICxyaHMpKQogCSAgICAgICAgICAg ICAgIChjb21wLWJsb2NrLWluc25zIGJiKSkpKQotICAgICAgICAgOzsgSWYgaXMgb25seSBhIGNv bnN0cmFpbnQgd2UgY2FuIG5lZ2F0ZSBpdCBkaXJlY3RseS4KLSAgICAgICAgIChwdXNoIGAoYXNz dW1lICwobWFrZS1jb21wLW12YXIgOnNsb3QgbGhzLXNsb3QpCi0gICAgICAgICAgICAgICAgICAg ICAgICAoYW5kICxsaHMgLChpZiBuZWdhdGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoY29tcC1jc3RyLW5lZ2F0aW9uLW1ha2UgcmhzKQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJocykpKQotCSAgICAgICAoY29tcC1ibG9jay1pbnNucyBi YikpKSkKKyAgICAgICAgIDs7IElmIFJIUyBpcyBhIGNvbnN0cmFpbnQgd2UgY2FuIG5lZ2F0ZSBp dCBkaXJlY3RseS4KKyAgICAgICAgIChjb21wLWxvZyAoZm9ybWF0ICJhc3N1bWluZzMgJVMgJVMi IGxocyByaHMpKQorICAgICAgICAgKHdoZW4gKG9yIHN0cmljdGx5IChub3QgbmVnYXRlZCkpCisg ICAgICAgICAgIChwdXNoIGAoYXNzdW1lICwobWFrZS1jb21wLW12YXIgOnNsb3QgbGhzLXNsb3Qp CisgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgLGxocyAsKGlmIG5lZ2F0ZWQKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbXAtY3N0ci1uZWdhdGlvbi1t YWtlIHJocykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJocykpKQor CSAgICAgICAgIChjb21wLWJsb2NrLWluc25zIGJiKSkpKSkKICAgICAgICgocHJlZCBjb21wLXJh bmdlLWNtcC1mdW4tcCkKLSAgICAgICAobGV0ICgoa2luZCAoaWYgbmVnYXRlZAotICAgICAgICAg ICAgICAgICAgICAgICAoY29tcC1uZWdhdGUtcmFuZ2UtY21wLWZ1biBraW5kKQotICAgICAgICAg ICAgICAgICAgICAga2luZCkpKQotICAgICAgICAgKHB1c2ggYChhc3N1bWUgLChtYWtlLWNvbXAt bXZhciA6c2xvdCBsaHMtc2xvdCkKLSAgICAgICAgICAgICAgICAgICAgICAgICgsa2luZCAsbGhz Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLChpZi1sZXQqICgodmxkIChjb21wLW12 YXItdmFsdWUtdmxkLXAgcmhzKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh2YWwgKGNvbXAtbXZhci12YWx1ZSByaHMpKQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKG9rIChpbnRlZ2VycCB2YWwpKSkKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHZhbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChtYWtlLWNvbXAtbXZhciA6c2xvdCAoY29tcC1tdmFyLXNsb3QgcmhzKSkpKSkKLQkgICAg ICAgKGNvbXAtYmxvY2staW5zbnMgYmIpKSkpCisgICAgICAgKHdoZW4gKG9yIHN0cmljdGx5IChu b3QgbmVnYXRlZCkgKGNvbXAtbXZhci1wIHJocykKKyAgICAgICAgICAgICAgICAgICAoY29tcC1j c3RyLXNpbmdsZXRvbi1wIHJocykpCisgICAgICAgICAobGV0ICgoa2luZCAoaWYgbmVnYXRlZAor ICAgICAgICAgICAgICAgICAgICAgICAgIChjb21wLW5lZ2F0ZS1yYW5nZS1jbXAtZnVuIGtpbmQp CisgICAgICAgICAgICAgICAgICAgICAgIGtpbmQpKSkKKyAgICAgICAgICAgKGNvbXAtbG9nIChm b3JtYXQgImFzc3VtaW5nMiAlUyAlUyIgbGhzIHJocykpCisgICAgICAgICAgIChwdXNoIGAoYXNz dW1lICwobWFrZS1jb21wLW12YXIgOnNsb3QgbGhzLXNsb3QpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICgsa2luZCAsbGhzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsKGlm IChjb21wLW12YXItcCByaHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChpZi1sZXQqICgodmxkIChjb21wLW12YXItdmFsdWUtdmxkLXAgcmhzKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YWwgKGNvbXAtbXZhci12YWx1 ZSByaHMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KG9rIChpbnRlZ2VycCB2YWwpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWtl LWNvbXAtbXZhciA6c2xvdCAoY29tcC1tdmFyLXNsb3QgcmhzKSkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoY29tcC1jc3RyLWNvcHkgcmhzKSkpKQorCSAgICAgICAgIChj b21wLWJsb2NrLWluc25zIGJiKSkpKSkKICAgICAgIChfIChjbC1hc3NlcnQgbmlsKSkpCiAgICAg KHNldGYgKGNvbXAtZnVuYy1zc2Etc3RhdHVzIGNvbXAtZnVuYykgJ2RpcnR5KSkpCiAKKyhkZWZ1 biBjb21wLWVtaXQtYXNzdW1lcyAoa2luZCBsaHNsIHJoc2wgYmFzaWMtYmxvY2sgbmVnYXRlZCAm b3B0aW9uYWwgc3RyaWN0bHkpCisgICJFbWl0IGFzc3VtZSBpbnNucyBzdGF0aW5nIHRoYXQgYWxs IGVsZW1lbnRzIG9mIExIU0wgcmVsYXRlIHRvCithbGwgZWxlbWVudHMgb2YgUkhTTCBhcyBLSU5E LCB3aGljaCBtYXkgYmUgTkVHQVRFRC4gIFRoZSBpbnNucworYXJhIGFkZGVkIHRvIEJBU0lDLUJM T0NLLiIKKyAgKGNvbXAtbG9nIChmb3JtYXQgImFzc3VtZXMgJVMgJVMiIGxoc2wgcmhzbCkpCisg IChkb2xpc3QgKGxocyBsaHNsKQorICAgIChhbmQgKGNvbXAtbXZhci1wIGxocykKKyAgICAgICAg IChjb21wLW12YXItc2xvdCBsaHMpCisgICAgICAgICAoZG9saXN0IChyaHMgcmhzbCkKKyAgICAg ICAgICAgKGNvbXAtZW1pdC1hc3N1bWUga2luZCBsaHMgcmhzIGJhc2ljLWJsb2NrIG5lZ2F0ZWQg c3RyaWN0bHkpKSkpKQorCiAoZGVmdW4gY29tcC1hZGQtbmV3LWJsb2NrLWJldHdlZW4gKGJiLXN5 bWJvbCBiYi1hIGJiLWIpCi0gICJDcmVhdGUgYSBuZXcgYmFzaWMtYmxvY2sgbmFtZWQgQkItU1lN Qk9MIGFuZCBhZGQgaXQgYmV0d2VlbiBCQi1BIGFuZCBCQi1CLiIKKyAgIkNyZWF0ZSBhIG5ldyBi YXNpYyBibG9jayBuYW1lZCBCQi1TWU1CT0wgYW5kIGFkZCBpdCBiZXR3ZWVuIEJCLUEgYW5kIEJC LUIuIgogICAoY2wtbG9vcAogICAgd2l0aCBuZXctYmIgPSAobWFrZS1jb21wLWJsb2NrLWNzdHIg Om5hbWUgYmItc3ltYm9sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6 aW5zbnMgYCgoanVtcCAsKGNvbXAtYmxvY2stbmFtZSBiYi1iKSkpKQpAQCAtMjMwNSwyNCArMjM0 NSw4NCBAQCBjb21wLWFkZC1uZXctYmxvY2stYmV0d2VlbgogICAgOzsgQWRkIGBuZXctZWRnZScg dG8gdGhlIGN1cnJlbnQgZnVuY3Rpb24gYW5kIHJldHVybiBpdC4KICAgIChjbC1yZXR1cm4gKHB1 dGhhc2ggYmItc3ltYm9sIG5ldy1iYiAoY29tcC1mdW5jLWJsb2NrcyBjb21wLWZ1bmMpKSkKICAg IGZpbmFsbHkgKGNsLWFzc2VydCBuaWwpKSkKLQotOzsgQ2hlYXAgc3Vic3RpdHV0ZSB0byBhIGNv cHkgcHJvcGFnYXRpb24gcGFzcy4uLgotKGRlZnVuIGNvbXAtY29uZC1jc3Rycy10YXJnZXQtbXZh ciAobXZhciBleGl0LWluc24gYmIpCi0gICJHaXZlbiBNVkFSIHNlYXJjaCBpbiBCQiB0aGUgb3Jp Z2luYWwgbXZhciBNVkFSIGdvdCBhc3NpZ25lZCBmcm9tLgotS2VlcCBvbiBzZWFyY2hpbmcgdGls bCBFWElULUlOU04gaXMgZW5jb3VudGVyZWQuIgotICAoY2wtZmxldCAoKHRhcmdldHAgKHgpCi0g ICAgICAgICAgICAgIDs7IFJldCB0IGlmIHggaXMgYW4gbXZhciBhbmQgdGFyZ2V0IHRoZSBjb3Jy ZWN0IHNsb3QgbnVtYmVyLgotICAgICAgICAgICAgICAoYW5kIChjb21wLW12YXItcCB4KQotICAg ICAgICAgICAgICAgICAgIChlcWwgKGNvbXAtbXZhci1zbG90IG12YXIpIChjb21wLW12YXItc2xv dCB4KSkpKSkKLSAgICAoY2wtbG9vcAotICAgICB3aXRoIHJlcyA9IG5pbAotICAgICBmb3IgaW5z biBpbiAoY29tcC1ibG9jay1pbnNucyBiYikKLSAgICAgd2hlbiAoZXEgaW5zbiBleGl0LWluc24p Ci0gICAgIGRvIChjbC1yZXR1cm4gKGFuZCAoY29tcC1tdmFyLXAgcmVzKSByZXMpKQotICAgICBk byAocGNhc2UgaW5zbgotICAgICAgICAgIChgKCwocHJlZCBjb21wLWFzc2lnbi1vcC1wKSAsKHBy ZWQgdGFyZ2V0cCkgLHJocykKLSAgICAgICAgICAgKHNldGYgcmVzIHJocykpKQotICAgICBmaW5h bGx5IChjbC1hc3NlcnQgbmlsKSkpKQorOzsgIkNoZWFwIiBzdWJzdGl0dXRlIGZvciBhIGNvcHkg cHJvcGFnYXRpb24gcGFzcy4uLgorKGRlZnVuIGNvbXAtY29uZC1jc3Rycy1pZGVudGljYWwtdmFy cyAobXZhcnMgYmIgaW5zbikKKyAgIlNlYXJjaCBCQiBmb3IgbXZhcnMga25vd24gdG8gYmUgYGVx JyB0byBhbGwgb2YgdGhlIE1WQVJTIGF0IHRoZSB0aW1lIElOU04KK2lzIGV4ZWN1dGVkLiIKKyAg KGNsLWFzc2VydCAoY2wtZXZlcnkgIydjb21wLW12YXItcCBtdmFycykpCisgIChjbC1sb29wCisg ICB3aXRoIHNsb3RzID0gKGRlbHEgbmlsIChtYXBjYXIgIydjb21wLW12YXItc2xvdCBtdmFycykp CisgICB3aXRoIHJlcyA9IChjb3B5LXNlcXVlbmNlIG12YXJzKQorICAgd2l0aCBjbG9iYmVyZWQg PSBuaWwKKyAgIGZvciBpbnNuIGluIChjb21wLWJsb2NrLWluc25zLXJldmVyc2UgYmIgaW5zbikK KyAgIGRvIChwcm9nbgorICAgICAgICAoY29tcC1sb2cgKGZvcm1hdCAiaW5zbiAlUyBzbG90cyAl UyByZXMgJVMgY2xvYmJlcmVkICVTIgorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNuIHNs b3RzIHJlcyBjbG9iYmVyZWQpKQorICAgICAgICAocGNhc2UgaW5zbgorICAgICAgICAoYCgsKGFu ZCBvcCAocHJlZCBjb21wLWFzc2lnbi1vcC1wKSkKKyAgICAgICAgICAgLChhbmQgKHByZWQgY29t cC1tdmFyLXApIChwcmVkIGNvbXAtbXZhci1zbG90KSBsaHMpCisgICAgICAgICAgICwoYW5kIChw cmVkIGNvbXAtbXZhci1wKSAocHJlZCBjb21wLW12YXItc2xvdCkgcmhzKSkKKyAgICAgICAgIChs ZXQgKChsaHMtcCAobWVtYmVyIChjb21wLW12YXItc2xvdCBsaHMpIHNsb3RzKSkKKyAgICAgICAg ICAgICAgIChyaHMtcCAobWVtYmVyIChjb21wLW12YXItc2xvdCByaHMpIHNsb3RzKSkpCisgICAg ICAgICAgIChhbmQgbGhzLXAgKG5vdCByaHMtcCkKKyAgICAgICAgICAgICAgICAocHVzaCAoY29t cC1tdmFyLXNsb3QgcmhzKSBzbG90cykKKyAgICAgICAgICAgICAgICAodW5sZXNzIChvciAobWVt YmVyIChjb21wLW12YXItc2xvdCBsaHMpIGNsb2JiZXJlZCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAobWVtcSByaHMgcmVzKSkKKyAgICAgICAgICAgICAgICAgIChwdXNoIHJocyByZXMp KSkKKyAgICAgICAgICAgKGFuZCByaHMtcCAobm90IGxocy1wKQorICAgICAgICAgICAgICAgIChw dXNoIChjb21wLW12YXItc2xvdCBsaHMpIHNsb3RzKQorICAgICAgICAgICAgICAgICh1bmxlc3Mg KG9yIChtZW1iZXIgKGNvbXAtbXZhci1zbG90IHJocykgY2xvYmJlcmVkKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChtZW1xIGxocyByZXMpKQorICAgICAgICAgICAgICAgICAgKHB1c2gg bGhzIHJlcykpKQorICAgICAgICAgICAoYW5kIChjb21wLWNsb2JiZXJpbmctYXNzaWduLW9wLXAg b3ApCisgICAgICAgICAgICAgICAgKG5vdCBsaHMtcCkKKyAgICAgICAgICAgICAgICAobm90IHJo cy1wKQorICAgICAgICAgICAgICAgIChzZXRxIHNsb3RzIChkZWxldGUgKGNvbXAtbXZhci1zbG90 IGxocykgc2xvdHMpKQorICAgICAgICAgICAgICAgICh1bmxlc3MgKG1lbWJlciAoY29tcC1tdmFy LXNsb3QgbGhzKSBjbG9iYmVyZWQpCisgICAgICAgICAgICAgICAgICAocHVzaCAoY29tcC1tdmFy LXNsb3QgbGhzKSBjbG9iYmVyZWQpKSkpCisgICAgICAgICAoY29tcC1sb2cgKGZvcm1hdCAicG9z dCBpbnNuICVTIHNsb3RzICVTIHJlcyAlUyBjbG9iYmVyZWQgJVMiCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnNuIHNsb3RzIHJlcyBjbG9iYmVyZWQpKSkKKyAgICAgICAgKGAoLChwcmVk IGNvbXAtY2xvYmJlcmluZy1hc3NpZ24tb3AtcCkKKyAgICAgICAgICAgLChhbmQgKHByZWQgY29t cC1tdmFyLXNsb3QpIGxocykKKyAgICAgICAgICAgXykKKyAgICAgICAgICh1bmxlc3MgKG1lbWJl ciAoY29tcC1tdmFyLXNsb3QgbGhzKSBjbG9iYmVyZWQpCisgICAgICAgICAgIChwdXNoIChjb21w LW12YXItc2xvdCBsaHMpIGNsb2JiZXJlZCkpCisgICAgICAgICAoc2V0cSBzbG90cyAoZGVsZXRl IChjb21wLW12YXItc2xvdCBsaHMpIHNsb3RzKSkpKSkKKyAgIGZpbmFsbHkgKHByb2duCisgICAg ICAgICAgICAgKGNsLXJldHVybiByZXMpKSkpCisKKzs7ICJDaGVhcCIgc3Vic3RpdHV0ZSBmb3Ig YSBjb3B5IHByb3BhZ2F0aW9uIHBhc3MuLi4KKyhkZWZ1biBjb21wLWNvbmQtY3N0cnMtaWRlbnRp Y2FsLXZhcnMtYnl2YXIgKG12YXJzIGJiIGluc24pCisgICJTZWFyY2ggQkIgZm9yIG12YXJzIGtu b3duIHRvIGJlIGBlcScgdG8gYWxsIG9mIHRoZSBNVkFSUyBhdCB0aGUgdGltZSBJTlNOCitpcyBl eGVjdXRlZC4gRXhjbHVkZSB0aGUgTVZBUlMgdGhlbXNlbHZlcyBmcm9tIHRoZSByZXN1bHQuIgor ICAoY2wtYXNzZXJ0IChjbC1ldmVyeSAjJ2NvbXAtbXZhci1wIG12YXJzKSkKKyAgKGNsLWxvb3AK KyAgIHdpdGggdmFycyA9IChjb3B5LXNlcXVlbmNlIG12YXJzKQorICAgd2l0aCByZXMgPSBuaWwK KyAgIHdpdGggY2xvYmJlcmVkID0gbmlsCisgICBmb3IgaW5zbiBpbiAoY29tcC1ibG9jay1pbnNu cy1yZXZlcnNlIGJiIGluc24pCisgICBkbyAocGNhc2UgaW5zbgorICAgICAgICAoYCgsKGFuZCBv cCAocHJlZCBjb21wLWFzc2lnbi1vcC1wKSkKKyAgICAgICAgICAgLGxocworICAgICAgICAgICAs KGFuZCAocHJlZCBjb21wLW12YXItcCkgcmhzKSkKKyAgICAgICAgIChsZXQgKChsaHMtcCAobWVt cSBsaHMgdmFycykpCisgICAgICAgICAgICAgICAocmhzLXAgKG1lbXEgcmhzIHZhcnMpKSkKKyAg ICAgICAgICAgKGNvbmQKKyAgICAgICAgICAgICgoYW5kIChub3QgbGhzLXApIHJocy1wKQorICAg ICAgICAgICAgIChwdXNoIGxocyB2YXJzKQorICAgICAgICAgICAgICh1bmxlc3MgKG9yIChtZW1x IGxocyBjbG9iYmVyZWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbXEgbGhzIHJlcykp CisgICAgICAgICAgICAgICAocHVzaCBsaHMgcmVzKSkpCisgICAgICAgICAgICAoKG9yIHJocy1w IChub3QgKGNvbXAtY2xvYmJlcmluZy1hc3NpZ24tb3AtcCBvcCkpKSkKKyAgICAgICAgICAgICgo c2V0cSB2YXJzIChkZWxxIGxocyB2YXJzKSkKKyAgICAgICAgICAgICAodW5sZXNzIChtZW1xIGxo cyBjbG9iYmVyZWQpIChwdXNoIGxocyBjbG9iYmVyZWQpKSkpKSkKKyAgICAgICAgKGAoLChwcmVk IGNvbXAtY2xvYmJlcmluZy1hc3NpZ24tb3AtcCkgLGxocyBfKQorICAgICAgICAgKHVubGVzcyAo bWVtcSBsaHMgY2xvYmJlcmVkKSAocHVzaCBsaHMgY2xvYmJlcmVkKSkKKyAgICAgICAgIChzZXRx IHZhcnMgKGRlbHEgbGhzIHZhcnMpKSkpCisgICBmaW5hbGx5IChwcm9nbgorICAgICAgICAgICAg IChjb21wLWxvZyAoZm9ybWF0ICJtdmFycyAlUyByZXMgJVMiCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbXZhcnMgcmVzKSkKKyAgICAgICAgICAgICAoY2wtcmV0dXJuIHJlcykpKSkK IAogKGRlZnVuIGNvbXAtYWRkLWNvbmQtY3N0cnMtdGFyZ2V0LWJsb2NrIChjdXJyLWJiIHRhcmdl dC1iYi1zeW0pCiAgICJSZXR1cm4gdGhlIGFwcHJvcHJpYXRlIGJhc2ljIGJsb2NrIHRvIGFkZCBj b25zdHJhaW50IGFzc3VtcHRpb25zIGludG8uCkBAIC0yNDAxLDIzICsyNTAxLDQ0IEBAIGNvbXAt YWRkLWNvbmQtY3N0cnMKIAkgOzsgKGNvbW1lbnQgLF9jb21tZW50LXN0cikKIAkgKGNvbmQtanVt cCAsY21wLXJlcyAsKHByZWQgY29tcC1tdmFyLXApIC4gLGJsb2NrcykpCiAgICAgICAgKGNsLWxv b3AKLSAgICAgICAgd2l0aCB0YXJnZXQtbXZhcjEgPSAoY29tcC1jb25kLWNzdHJzLXRhcmdldC1t dmFyIG9wMSAoY2FyIGluc25zLXNlcSkgYikKLSAgICAgICAgd2l0aCB0YXJnZXQtbXZhcjIgPSAo Y29tcC1jb25kLWNzdHJzLXRhcmdldC1tdmFyIG9wMiAoY2FyIGluc25zLXNlcSkgYikKKyAgICAg ICAgd2l0aCB0YXJnZXQtbXZhcnMxID0gKGNvbXAtY29uZC1jc3Rycy1pZGVudGljYWwtdmFycwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0IG9wMSkgYiAoY2FyIGluc25zLXNl cSkpCisgICAgICAgIHdpdGggdGFyZ2V0LW12YXJzMiA9IChjb21wLWNvbmQtY3N0cnMtaWRlbnRp Y2FsLXZhcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdCBvcDIpIGIgKGNh ciBpbnNucy1zZXEpKQogICAgICAgICB3aXRoIGVxdWFsaXR5ID0gKGNvbXAtZXF1YWxpdHktZnVu LXAgZnVuKQogICAgICAgICBmb3IgYnJhbmNoLXRhcmdldC1jZWxsIG9uIGJsb2NrcwogICAgICAg ICBmb3IgYnJhbmNoLXRhcmdldCA9IChjYXIgYnJhbmNoLXRhcmdldC1jZWxsKQogICAgICAgICBm b3IgbmVnYXRlZCBpbiAnKHQgbmlsKQogICAgICAgICBmb3Iga2luZCA9IChpZiBlcXVhbGl0eSAn YW5kIGZ1bikKLSAgICAgICAgd2hlbiAob3IgKGNvbXAtbXZhci11c2VkLXAgdGFyZ2V0LW12YXIx KQotICAgICAgICAgICAgICAgICAoY29tcC1tdmFyLXVzZWQtcCB0YXJnZXQtbXZhcjIpKQogICAg ICAgICBkbworICAgICAgICAoY29tcC1sb2cgKGZvcm1hdCAidGFyZ2V0IG12YXJzICVTICVTIgor ICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQtbXZhcnMxIHRhcmdldC1tdmFyczIpKQor ICAgICAgICAoc2V0cSB0YXJnZXQtbXZhcnMxCisgICAgICAgICAgICAgIChtYXBjYXIKKyAgICAg ICAgICAgICAgIChsYW1iZGEgKG12YXIpCisgICAgICAgICAgICAgICAgIChpZiAoYW5kCisgICAg ICAgICAgICAgICAgICAgICAgKGNvbXAtbXZhci1wIG12YXIpCisgICAgICAgICAgICAgICAgICAg ICAgKGVxdWFsIChjb21wLW12YXItc2xvdCBtdmFyKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoY29tcC1tdmFyLXNsb3QgY21wLXJlcykpKQorICAgICAgICAgICAgICAgICAgICAgKGNv bXAtY3N0ci1jb3B5IG12YXIpCisgICAgICAgICAgICAgICAgICAgbXZhcikpCisgICAgICAgICAg ICAgICB0YXJnZXQtbXZhcnMxKSkKKyAgICAgICAgKHNldHEgdGFyZ2V0LW12YXJzMgorICAgICAg ICAgICAgICAobWFwY2FyCisgICAgICAgICAgICAgICAobGFtYmRhIChtdmFyKQorICAgICAgICAg ICAgICAgICAoaWYgKGFuZAorICAgICAgICAgICAgICAgICAgICAgIChjb21wLW12YXItcCBtdmFy KQorICAgICAgICAgICAgICAgICAgICAgIChlcXVhbCAoY29tcC1tdmFyLXNsb3QgbXZhcikKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbXAtbXZhci1zbG90IGNtcC1yZXMpKSkKKyAg ICAgICAgICAgICAgICAgICAgIChjb21wLWNzdHItY29weSBtdmFyKQorICAgICAgICAgICAgICAg ICAgIG12YXIpKQorICAgICAgICAgICAgICAgdGFyZ2V0LW12YXJzMikpCiAgICAgICAgIChsZXQg KChibG9jay10YXJnZXQgKGNvbXAtYWRkLWNvbmQtY3N0cnMtdGFyZ2V0LWJsb2NrIGIgYnJhbmNo LXRhcmdldCkpKQogICAgICAgICAgIChzZXRmIChjYXIgYnJhbmNoLXRhcmdldC1jZWxsKSAoY29t cC1ibG9jay1uYW1lIGJsb2NrLXRhcmdldCkpCi0gICAgICAgICAgKHdoZW4gKGNvbXAtbXZhci11 c2VkLXAgdGFyZ2V0LW12YXIxKQotICAgICAgICAgICAgKGNvbXAtZW1pdC1hc3N1bWUga2luZCB0 YXJnZXQtbXZhcjEgb3AyIGJsb2NrLXRhcmdldCBuZWdhdGVkKSkKLSAgICAgICAgICAod2hlbiAo Y29tcC1tdmFyLXVzZWQtcCB0YXJnZXQtbXZhcjIpCi0gICAgICAgICAgICAoY29tcC1lbWl0LWFz c3VtZSAoY29tcC1yZXZlcnNlLWNtcC1mdW4ga2luZCkKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRhcmdldC1tdmFyMiBvcDEgYmxvY2stdGFyZ2V0IG5lZ2F0ZWQpKSkKKyAgICAgICAg ICAoY29tcC1lbWl0LWFzc3VtZXMga2luZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 YXJnZXQtbXZhcnMxIHRhcmdldC1tdmFyczIgYmxvY2stdGFyZ2V0IG5lZ2F0ZWQpCisgICAgICAg ICAgKGNvbXAtZW1pdC1hc3N1bWVzIChjb21wLXJldmVyc2UtY21wLWZ1biBraW5kKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQtbXZhcnMyIHRhcmdldC1tdmFyczEgYmxvY2st dGFyZ2V0IG5lZ2F0ZWQpKQogICAgICAgICBmaW5hbGx5IChjbC1yZXR1cm4tZnJvbSBpbi10aGUt YmFzaWMtYmxvY2spKSkKICAgICAgIChgKChzZXQgLChhbmQgKHByZWQgY29tcC1tdmFyLXApIGNt cC1yZXMpCiAgICAgICAgICAgICAgICgsKHByZWQgY29tcC1jYWxsLW9wLXApCkBAIC0yNDI2LDE2 ICsyNTQ3LDI2IEBAIGNvbXAtYWRkLWNvbmQtY3N0cnMKIAkgOzsgKGNvbW1lbnQgLF9jb21tZW50 LXN0cikKIAkgKGNvbmQtanVtcCAsY21wLXJlcyAsKHByZWQgY29tcC1tdmFyLXApIC4gLGJsb2Nr cykpCiAgICAgICAgKGNsLWxvb3AKLSAgICAgICAgd2l0aCB0YXJnZXQtbXZhciA9IChjb21wLWNv bmQtY3N0cnMtdGFyZ2V0LW12YXIgb3AgKGNhciBpbnNucy1zZXEpIGIpCisgICAgICAgIHdpdGgg dGFyZ2V0LW12YXJzID0gKGNvbXAtY29uZC1jc3Rycy1pZGVudGljYWwtdmFycworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobGlzdCBvcCkgYiAoY2FyIGluc25zLXNlcSkpCiAgICAgICAg IHdpdGggY3N0ciA9IChjb21wLXByZWQtdG8tY3N0ciBmdW4pCiAgICAgICAgIGZvciBicmFuY2gt dGFyZ2V0LWNlbGwgb24gYmxvY2tzCiAgICAgICAgIGZvciBicmFuY2gtdGFyZ2V0ID0gKGNhciBi cmFuY2gtdGFyZ2V0LWNlbGwpCiAgICAgICAgIGZvciBuZWdhdGVkIGluICcodCBuaWwpCi0gICAg ICAgIHdoZW4gKGNvbXAtbXZhci11c2VkLXAgdGFyZ2V0LW12YXIpCisgICAgICAgIHdoZW4gdGFy Z2V0LW12YXJzCiAgICAgICAgIGRvCisgICAgICAgIChzZXRxIHRhcmdldC1tdmFycworICAgICAg ICAgICAgICAobWFwY2FyIChsYW1iZGEgKG12YXIpCisgICAgICAgICAgICAgICAgICAgICAgICAo aWYgKGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29tcC1tdmFyLXAgbXZhcikK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxdWFsIChjb21wLW12YXItc2xvdCBtdmFy KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbXAtbXZhci1zbG90IGNt cC1yZXMpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29tcC1jc3RyLWNvcHkgbXZh cikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbXZhcikpCisgICAgICAgICAgICAgICAgICAg ICAgdGFyZ2V0LW12YXJzKSkKICAgICAgICAgKGxldCAoKGJsb2NrLXRhcmdldCAoY29tcC1hZGQt Y29uZC1jc3Rycy10YXJnZXQtYmxvY2sgYiBicmFuY2gtdGFyZ2V0KSkpCiAgICAgICAgICAgKHNl dGYgKGNhciBicmFuY2gtdGFyZ2V0LWNlbGwpIChjb21wLWJsb2NrLW5hbWUgYmxvY2stdGFyZ2V0 KSkKLSAgICAgICAgICAoY29tcC1lbWl0LWFzc3VtZSAnYW5kIHRhcmdldC1tdmFyIGNzdHIgYmxv Y2stdGFyZ2V0IG5lZ2F0ZWQpKQorICAgICAgICAgIChjb21wLWVtaXQtYXNzdW1lcyAnYW5kIHRh cmdldC1tdmFycyAobGlzdCBjc3RyKSBibG9jay10YXJnZXQgbmVnYXRlZCB0KSkKICAgICAgICAg ZmluYWxseSAoY2wtcmV0dXJuLWZyb20gaW4tdGhlLWJhc2ljLWJsb2NrKSkpCiAgICAgICA7OyBN YXRjaCBwcmVkaWNhdGUgb24gdGhlIG5lZ2F0ZWQgYnJhbmNoICh1bmxlc3MpLgogICAgICAgKGAo KHNldCAsKGFuZCAocHJlZCBjb21wLW12YXItcCkgY21wLXJlcykKQEAgLTI0NDUsMTYgKzI1NzYs MjcgQEAgY29tcC1hZGQtY29uZC1jc3RycwogICAgICAgICAgKHNldCAsbmVnLWNtcC1yZXMgKGNh bGwgZXEgLGNtcC1yZXMgLChwcmVkIGNvbXAtY3N0ci1udWxsLXApKSkKIAkgKGNvbmQtanVtcCAs bmVnLWNtcC1yZXMgLChwcmVkIGNvbXAtbXZhci1wKSAuICxibG9ja3MpKQogICAgICAgIChjbC1s b29wCi0gICAgICAgIHdpdGggdGFyZ2V0LW12YXIgPSAoY29tcC1jb25kLWNzdHJzLXRhcmdldC1t dmFyIG9wIChjYXIgaW5zbnMtc2VxKSBiKQorICAgICAgICB3aXRoIHRhcmdldC1tdmFycyA9IChj b21wLWNvbmQtY3N0cnMtaWRlbnRpY2FsLXZhcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGxpc3Qgb3ApIGIgKGNhciBpbnNucy1zZXEpKQogICAgICAgICB3aXRoIGNzdHIgPSAoY29t cC1wcmVkLXRvLWNzdHIgZnVuKQogICAgICAgICBmb3IgYnJhbmNoLXRhcmdldC1jZWxsIG9uIGJs b2NrcwogICAgICAgICBmb3IgYnJhbmNoLXRhcmdldCA9IChjYXIgYnJhbmNoLXRhcmdldC1jZWxs KQogICAgICAgICBmb3IgbmVnYXRlZCBpbiAnKG5pbCB0KQotICAgICAgICB3aGVuIChjb21wLW12 YXItdXNlZC1wIHRhcmdldC1tdmFyKQorICAgICAgICB3aGVuIHRhcmdldC1tdmFycwogICAgICAg ICBkbworICAgICAgICAoc2V0cSB0YXJnZXQtbXZhcnMKKyAgICAgICAgICAgICAgKG1hcGNhcgor ICAgICAgICAgICAgICAgKGxhbWJkYSAobXZhcikKKyAgICAgICAgICAgICAgICAgKGlmIChhbmQK KyAgICAgICAgICAgICAgICAgICAgICAoY29tcC1tdmFyLXAgbXZhcikKKyAgICAgICAgICAgICAg ICAgICAgICAoZXF1YWwgKGNvbXAtbXZhci1zbG90IG12YXIpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjb21wLW12YXItc2xvdCBjbXAtcmVzKSkpCisgICAgICAgICAgICAgICAgICAg ICAoY29tcC1jc3RyLWNvcHkgbXZhcikKKyAgICAgICAgICAgICAgICAgICBtdmFyKSkKKyAgICAg ICAgICAgICAgIHRhcmdldC1tdmFycykpCiAgICAgICAgIChsZXQgKChibG9jay10YXJnZXQgKGNv bXAtYWRkLWNvbmQtY3N0cnMtdGFyZ2V0LWJsb2NrIGIgYnJhbmNoLXRhcmdldCkpKQogICAgICAg ICAgIChzZXRmIChjYXIgYnJhbmNoLXRhcmdldC1jZWxsKSAoY29tcC1ibG9jay1uYW1lIGJsb2Nr LXRhcmdldCkpCi0gICAgICAgICAgKGNvbXAtZW1pdC1hc3N1bWUgJ2FuZCB0YXJnZXQtbXZhciBj c3RyIGJsb2NrLXRhcmdldCBuZWdhdGVkKSkKKyAgICAgICAgICAoY29tcC1lbWl0LWFzc3VtZXMg J2FuZCB0YXJnZXQtbXZhcnMgKGxpc3QgY3N0cikgYmxvY2stdGFyZ2V0IG5lZ2F0ZWQgdCkpCiAg ICAgICAgIGZpbmFsbHkgKGNsLXJldHVybi1mcm9tIGluLXRoZS1iYXNpYy1ibG9jaykpKSkpKSkK IAogKGRlZnN1YnN0IGNvbXAtaW5zZXJ0LWluc24gKGluc24gaW5zbi1jZWxsKQpAQCAtMjQ2NSwx MyArMjYwNywxNCBAQCBjb21wLWluc2VydC1pbnNuCiAgICAgICAgICAgKGNkciBuZXctY2VsbCkg bmV4dC1jZWxsCiAgICAgICAgICAgKGNvbXAtZnVuYy1zc2Etc3RhdHVzIGNvbXAtZnVuYykgJ2Rp cnR5KSkpCiAKLShkZWZ1biBjb21wLWVtaXQtY2FsbC1jc3RyIChtdmFyIGNhbGwtY2VsbCBjc3Ry KQorKGRlZnVuIGNvbXAtZW1pdC1jYWxsLWNzdHJzIChtdmFycyBjYWxsLWNlbGwgY3N0cikKICAg IkVtaXQgYSBjb25zdHJhaW50IENTVFIgZm9yIE1WQVIgYWZ0ZXIgQ0FMTC1DRUxMLiIKLSAgKGxl dCogKChuZXctbXZhciAobWFrZS1jb21wLW12YXIgOnNsb3QgKGNvbXAtbXZhci1zbG90IG12YXIp KSkKLSAgICAgICAgIDs7IEhhdmUgbmV3LW12YXIgYXMgTEhTICphbmQqIFJIUyB0byBlbnN1cmUg bW9ub3RvbmljaXR5IGFuZAotICAgICAgICAgOzsgZndwcm9wIGNvbnZlcmdlbmNlISEKLSAgICAg ICAgIChpbnNuIGAoYXNzdW1lICxuZXctbXZhciAoYW5kICxuZXctbXZhciAsbXZhciAsY3N0cikp KSkKLSAgICAoY29tcC1pbnNlcnQtaW5zbiBpbnNuIGNhbGwtY2VsbCkpKQorICAoZG9saXN0ICht dmFyIChjbC1yZW1vdmUtaWYtbm90ICMnY29tcC1tdmFyLXAgbXZhcnMpKQorICAgIChsZXQqICgo bmV3LW12YXIgKG1ha2UtY29tcC1tdmFyIDpzbG90IChjb21wLW12YXItc2xvdCBtdmFyKSkpCisg ICAgICAgICAgIDs7IEhhdmUgbmV3LW12YXIgYXMgTEhTICphbmQqIFJIUyB0byBlbnN1cmUgbW9u b3RvbmljaXR5IGFuZAorICAgICAgICAgICA7OyBmd3Byb3AgY29udmVyZ2VuY2UhIQorICAgICAg ICAgICAoaW5zbiBgKGFzc3VtZSAsbmV3LW12YXIgKGFuZCAsbmV3LW12YXIgLG12YXIgLGNzdHIp KSkpCisgICAgICAoY29tcC1pbnNlcnQtaW5zbiBpbnNuIGNhbGwtY2VsbCkpKSkKIAogKGRlZnVu IGNvbXAtbGFtYmRhLWxpc3QtZ2VuIChsYW1iZGEtbGlzdCkKICAgIlJldHVybiBhIGdlbmVyYXRv ciB0byBpdGVyYXRlIG92ZXIgTEFNQkRBLUxJU1QuIgpAQCAtMjUwOCwxOCArMjY1MSwyNCBAQCBj b21wLWFkZC1jYWxsLWNzdHIKICAgICAgICAgICB3aXRoIGdlbiA9IChjb21wLWxhbWJkYS1saXN0 LWdlbiAoY29tcC1jc3RyLWYtYXJncyBjc3RyLWYpKQogICAgICAgICAgIGZvciBhcmcgaW4gYXJn cwogICAgICAgICAgIGZvciBjc3RyID0gKGZ1bmNhbGwgZ2VuKQotICAgICAgICAgIGZvciB0YXJn ZXQgPSAoY29tcC1jb25kLWNzdHJzLXRhcmdldC1tdmFyIGFyZyBpbnNuIGJiKQorICAgICAgICAg IGZvciB0YXJnZXQtdmFycyA9IChjb21wLWNvbmQtY3N0cnMtaWRlbnRpY2FsLXZhcnMgKGxpc3Qg YXJnKSBiYiBpbnNuKQogICAgICAgICAgIHVubGVzcyAoY29tcC1jc3RyLXAgY3N0cikKICAgICAg ICAgICAgIGRvIChzaWduYWwgJ25hdGl2ZS1pY2UKICAgICAgICAgICAgICAgICAgICAgICAgKGxp c3QgIkluY29oZXJlbnQgdHlwZSBzcGVjaWZpZXIgZm9yIGZ1bmN0aW9uIiBmKSkKLSAgICAgICAg ICB3aGVuIChhbmQgdGFyZ2V0CisgICAgICAgICAgZG8gKHNldHEgdGFyZ2V0LXZhcnMgKG1hcGNh cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChtdmFyKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoYW5kCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoY29tcC1tdmFyLXAgbXZhcikKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChlcXVhbCAoY29tcC1tdmFyLXNsb3QgbXZhcikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29tcC1tdmFyLXNsb3Qg bGhzKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb21wLWNzdHIt Y29weSBtdmFyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXZhcikpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC12YXJzKSkKKyAgICAgICAgICB3 aGVuIChhbmQgdGFyZ2V0LXZhcnMKICAgICAgICAgICAgICAgICAgICAgOzsgTm8gbmVlZCB0byBh ZGQgY2FsbCBjb25zdHJhaW50cyBpZiB0aGlzIGlzIHQKICAgICAgICAgICAgICAgICAgICAgOzsg KGJ1ZyM0NTgxMiBidWcjNDU3MDUgYnVnIzQ1NzUxKS4KLSAgICAgICAgICAgICAgICAgICAgKG5v dCAoZXF1YWwgY29tcC1jc3RyLXQgY3N0cikpCi0gICAgICAgICAgICAgICAgICAgIChvciAobnVs bCBsaHMpCi0gICAgICAgICAgICAgICAgICAgICAgICAobm90IChlcWwgKGNvbXAtbXZhci1zbG90 IGxocykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29tcC1tdmFyLXNsb3Qg dGFyZ2V0KSkpKSkKLSAgICAgICAgICAgIGRvIChjb21wLWVtaXQtY2FsbC1jc3RyIHRhcmdldCBp bnNuLWNlbGwgY3N0cikpKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgKG5vdCAoZXF1YWwgY29t cC1jc3RyLXQgY3N0cikpKQorICAgICAgICAgICAgZG8gKGNvbXAtZW1pdC1jYWxsLWNzdHJzIHRh cmdldC12YXJzIGluc24tY2VsbCBjc3RyKSkpKSkpKQogCiAoZGVmdW4gY29tcC1hZGQtY3N0cnMg KF8pCiAgICJSZXdyaXRlIGNvbmRpdGlvbmFsIGJyYW5jaGVzIGFkZGluZyBhcHByb3ByaWF0ZSAn YXNzdW1lJyBpbnNucy4KQEAgLTI1MjksNyArMjY3OCw3IEBAIGNvbXAtYWRkLWNzdHJzCiAgICht YXBoYXNoIChsYW1iZGEgKF8gZikKICAgICAgICAgICAgICAod2hlbiAoYW5kICg+PSAoY29tcC1m dW5jLXNwZWVkIGYpIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICA7OyBObyBwb2ludCB0byBy dW4gdGhpcyBvbiBkeW5hbWljIHNjb3BlIGFzCi0gICAgICAgICAgICAgICAgICAgICAgICA7OyB0 aGlzIHBhc3MgaXMgZWZmZWNpdmUgb25seSBvbiBsb2NhbAorICAgICAgICAgICAgICAgICAgICAg ICAgOzsgdGhpcyBwYXNzIGlzIGVmZmVjdGl2ZSBvbmx5IG9uIGxvY2FsCiAgICAgICAgICAgICAg ICAgICAgICAgICA7OyB2YXJpYWJsZXMuCiAJCQkoY29tcC1mdW5jLWwtcCBmKQogICAgICAgICAg ICAgICAgICAgICAgICAgKG5vdCAoY29tcC1mdW5jLWhhcy1ub24tbG9jYWwgZikpKQo= --000000000000a5273005bbfc4e5e--