From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Liu Hui Newsgroups: gmane.emacs.bugs Subject: bug#68559: [PATCH] Improve Python shell completion Date: Fri, 26 Jan 2024 18:12:19 +0800 Message-ID: References: <83zfx39mcy.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000ba4f8b060fd68849" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="38037"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Eli Zaretskii , 68559@debbugs.gnu.org To: kobarity Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Jan 26 11:13:10 2024 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 1rTJCv-0009ik-3H for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 26 Jan 2024 11:13:09 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rTJCk-0005LH-CK; Fri, 26 Jan 2024 05:12:58 -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 1rTJCj-0005Ku-Cy for bug-gnu-emacs@gnu.org; Fri, 26 Jan 2024 05:12:57 -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 1rTJCj-0005l2-3m for bug-gnu-emacs@gnu.org; Fri, 26 Jan 2024 05:12:57 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rTJCo-0000t8-J1 for bug-gnu-emacs@gnu.org; Fri, 26 Jan 2024 05:13:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Liu Hui Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 26 Jan 2024 10:13:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 68559 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 68559-submit@debbugs.gnu.org id=B68559.17062639683389 (code B ref 68559); Fri, 26 Jan 2024 10:13:02 +0000 Original-Received: (at 68559) by debbugs.gnu.org; 26 Jan 2024 10:12:48 +0000 Original-Received: from localhost ([127.0.0.1]:50494 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rTJCY-0000sZ-UV for submit@debbugs.gnu.org; Fri, 26 Jan 2024 05:12:48 -0500 Original-Received: from mail-vs1-xe30.google.com ([2607:f8b0:4864:20::e30]:53379) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rTJCV-0000sL-Ks for 68559@debbugs.gnu.org; Fri, 26 Jan 2024 05:12:45 -0500 Original-Received: by mail-vs1-xe30.google.com with SMTP id ada2fe7eead31-46b20b23ff7so35119137.2 for <68559@debbugs.gnu.org>; Fri, 26 Jan 2024 02:12:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706263951; x=1706868751; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=iyWHULdN5if/Eq3F9yV7erjZFbvpzBBhClr9jUBrghE=; b=P5z2TB76wBFOTJV7F0cEYSSAhL81uXlVuoj9Uo5jMSSyMt6UPh9Algd+dZzHiNnsaA 2W0Lv7+n7cJ1y/Vvo1ALOb88b1hMavKxXy+sLpT66Tn3QCBwtCI5vCltgNiaCzcHwjLd 3FvyP6X3LXLYwglPF4dfR+riWJt5QnLeIc+URxE5qA6MyBA7jLL7MWmusFYqPgdv/nYW cMPAhib6Aw/gfPvNMklVluzFrdY8eGQI8gzVoIQHGvnLqFsREhoPo08IhtHuvlFHCt+5 dJSbDqVnljJ94+fkt7pL3fQFHzsAS1dXw9puyqwxInTwqgHzDNtP5cKSis+BsUHrhH// /vlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706263951; x=1706868751; h=cc: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=iyWHULdN5if/Eq3F9yV7erjZFbvpzBBhClr9jUBrghE=; b=IrUk4od1KqCnQZb4Gn46NSDRDuJ1WXfzZ18RteJy0N+iwhRRhi6lCMx8A2f2BeSInF zMB4rOvMnox005vHo1K8DSfgJJur7UljEHZlvZLx20WpHDd68YEV/AFN/7bsV+piMjAV FjJTQuzzrEV7fGfTgeYZYv3FrJgx4trwksZz2TpaKPxmuxoICow1TU7gpE6Lfs21UF/b 7hOj2nvapN+tiXE+xMUiobCRwmP2oSnbB1MFagjaU+a1BiILXLeL1a9i/RnZ6j9MUFHh l0nw60d+5BIKXPtkA/ZmsyR30fw0dwcSn7THw7JzRUznxIfPtfi3sE4afmFBasbphakX 990g== X-Gm-Message-State: AOJu0Yw2rqOkKnxX4147yup0dc7Gk1CvDlLYE2AdPrUbYsxzkJq0W/GU bH5ESWKTuk+BiHFS5q93BfaK2bD9qYSggUOjwd1mP/ABL6j398Px8NxCjP6y6tyQxmcVIoT0fJ0 oXXdbRWK3BVBChJw5Q/587cULk6o= X-Google-Smtp-Source: AGHT+IEJzz/ycMwbn/0lk7G09HciMc2Bw0lA4tVXuAcvjaa592Qeb+00E3EAs3Od/fC2JqmC/e44D0Ylo7MOFt7TGcA= X-Received: by 2002:a05:6102:32cc:b0:46b:159e:bf04 with SMTP id o12-20020a05610232cc00b0046b159ebf04mr973711vss.2.1706263951585; Fri, 26 Jan 2024 02:12:31 -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-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:278910 Archived-At: --000000000000ba4f8b060fd68849 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable kobarity =E4=BA=8E2024=E5=B9=B41=E6=9C=8825=E6=97=A5= =E5=91=A8=E5=9B=9B 23:38=E5=86=99=E9=81=93=EF=BC=9A > > Liu Hui wrote: > > kobarity =E4=BA=8E2024=E5=B9=B41=E6=9C=8823=E6=97= =A5=E5=91=A8=E4=BA=8C 22:15=E5=86=99=E9=81=93=EF=BC=9A > > > Thank you. I tried the new patch and confirmed that the Python Shell > > > buffer allows keyword argument completion on multi-line function > > > calls. However, my expectation is that it can be done in Python > > > buffer as well (after calling `python-shell-send-buffer'). Is this > > > also possible? > > Thank you for the feedback. I have updated the patch to add support in > > Python buffer. > > Thank you. It's working very nice. > > I apologize for reporting in the piecemeal fashion, but I have noticed > the following differences from the current completion. No worries. I appreciate your valuable feedback for improving the quality of the patch. > 1. Module names cannot be completed in Python buffer. Can you elaborate? The completion of module names never worked for me except using IPython with non-native completion mechanism. Because module names cannot be completed using vanilla python interpreter in the terminal, they are also not completed even with the patch, unless jedi is available. > 2. Completion is not working in comments. > > I'm not sure if the completion should work in comments, but some > people might want it because the current python-mode allows it in both > Python buffer and Python Shell buffer. Thanks for pointing it out. The attached patch should now restore previous basic completion behavior in comments. --000000000000ba4f8b060fd68849 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Improve-Python-shell-completion-bug-68559.patch" Content-Disposition: attachment; filename="0001-Improve-Python-shell-completion-bug-68559.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lruhgpuf0 RnJvbSA3NzBiMzA2ZmM5YWMyNDA2NTE3NTM2ZTUyNzY2NDk1NzhhMTg5NTVhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMaXUgSHVpIDxsaXVodWkxNjEwQGdtYWlsLmNvbT4KRGF0ZTog VGh1LCAxOCBKYW4gMjAyNCAxMjowMDowMCArMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEltcHJvdmUg UHl0aG9uIHNoZWxsIGNvbXBsZXRpb24gKGJ1ZyM2ODU1OSkKCiogbGlzcC9wcm9nbW9kZXMvcHl0 aG9uLmVsIChweXRob24tc2hlbGwtY29tcGxldGlvbi1zZXR1cC1jb2RlKTogRml4CnRoZSBjb21w bGV0aW9uIGNvZGUgb2YgSVB5dGhvbi4gIENoYW5nZSB0aGUgcmV0dXJuIHZhbHVlIHRvIEpTT04K c3RyaW5nIGFuZCAuLi4KKHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLWdldC1jb21wbGV0aW9ucyk6 IC4uLiBzaW1wbGlmeSBwYXJzaW5nLgooaW5mZXJpb3ItcHl0aG9uLW1vZGUpOiBVcGRhdGUgZG9j c3RyaW5nLgoocHl0aG9uLXNoZWxsLXJlYWRsaW5lLWNvbXBsZXRlcik6IE5ldyBvcHRpb24uCihw eXRob24tc2hlbGwtcmVhZGxpbmUtY29tcGxldGVyLWRlbGltcyk6IE5ldyB2YXJpYWJsZSBpbmRp Y2F0aW5nIHRoZQp3b3JkIGRlbGltaXRlcnMgb2YgcmVhZGxpbmUgY29tcGxldGVyLgoocHl0aG9u LXNoZWxsLS1yZWFkbGluZS1qZWRpLXNldHVwLWNvZGUpCihweXRob24tc2hlbGwtLXJlYWRsaW5l LWlweXRob24tc2V0dXAtY29kZSk6IE5ldyBpbnRlcm5hbCB2YXJpYWJsZXMuCihweXRob24tc2hl bGwtY29tcGxldGlvbi1uYXRpdmUtc2V0dXApOiBTZXR1cCBhIHN1aXRhYmxlIHJlYWRsaW5lCmNv bXBsZXRlciBhbmQgc2V0IHRoZSBjb21wbGV0ZXIgZGVsaW1pdGVyLgoocHl0aG9uLXNoZWxsLWNv bXBsZXRpb24tbmF0aXZlLWdldC1jb21wbGV0aW9ucyk6IENvbnZlcnQgb3V0cHV0CnN0cmluZyB0 byBjb21wbGV0aW9ucyBwcm9wZXJseS4KKHB5dGhvbi1zaGVsbC0tZ2V0LW11bHRpbGluZS1pbnB1 dCkKKHB5dGhvbi1zaGVsbC0tZXh0cmEtY29tcGxldGlvbi1jb250ZXh0KQoocHl0aG9uLXNoZWxs LWNvbXBsZXRpb24tZXh0cmEtY29udGV4dCk6IE5ldyBmdW5jdGlvbnMuCihweXRob24tc2hlbGwt Y29tcGxldGlvbi1hdC1wb2ludCk6IFNlbmQgdGV4dCBiZWdpbm5pbmcgZnJvbSB0aGUgbGluZQpz dGFydCBpZiB0aGUgY29tcGxldGlvbiBiYWNrZW5kIGRvZXMgbm90IG5lZWQgd29yZCBzcGxpdHRp bmcuICBSZW1vdmUKdGhlIGRldGVjdGlvbiBvZiBpbXBvcnQgc3RhdGVtZW50IGJlY2F1c2UgaXQg aXMgbm90IG5lZWRlZCBhbnltb3JlLgpDcmVhdGUgcHJvcGVyIGNvbXBsZXRpb24gdGFibGUgYmFz ZWQgb24gY29tcGxldGlvbnMgcmV0dXJuZWQgZnJvbQpkaWZmZXJlbnQgYmFja2VuZHMuCgoqIHRl c3QvbGlzcC9wcm9nbW9kZXMvcHl0aG9uLXRlc3RzLmVsIChweXRob24tdGVzdHMtLWNvbXBsZXRp b24tbW9kdWxlKToKKHB5dGhvbi10ZXN0cy0tY29tcGxldGlvbi1wYXJhbWV0ZXJzKToKKHB5dGhv bi10ZXN0cy0tY29tcGxldGlvbi1leHRyYS1jb250ZXh0KTogTmV3IGhlbHBlciBmdW5jdGlvbnMu CihweXRob24tc2hlbGwtY29tcGxldGlvbi1hdC1wb2ludC1qZWRpLWNvbXBsZXRlcik6CihweXRo b24tc2hlbGwtY29tcGxldGlvbi1hdC1wb2ludC1pcHl0aG9uKTogTmV3IHRlc3RzLgoKKiBldGMv TkVXUzogQW5ub3VuY2UgdGhlIGNoYW5nZS4KLS0tCiBldGMvTkVXUyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgNiArCiBsaXNwL3Byb2dtb2Rlcy9weXRob24uZWwgICAgICAgICAgICB8 IDMwOSArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiB0ZXN0L2xpc3AvcHJvZ21vZGVzL3B5 dGhvbi10ZXN0cy5lbCB8ICA3OCArKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDM0MSBpbnNlcnRp b25zKCspLCA1MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ldGMvTkVXUyBiL2V0Yy9ORVdT CmluZGV4IGExODc0MzEzNTAyLi45ZjA1YmRmNDcwNSAxMDA2NDQKLS0tIGEvZXRjL05FV1MKKysr IGIvZXRjL05FV1MKQEAgLTEwNDcsNiArMTA0NywxMiBAQCBpbnN0ZWFkIG9mOgogVGhpcyBhbGxv d3MgdGhlIHVzZXIgdG8gc3BlY2lmeSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIHRvIHRoZSBub24K IGludGVyYWN0aXZlIFB5dGhvbiBpbnRlcnByZXRlciBzcGVjaWZpZWQgYnkgJ3B5dGhvbi1pbnRl cnByZXRlcicuCiAKKyoqKiBOZXcgdXNlciBvcHRpb24gJ3B5dGhvbi1zaGVsbC1yZWFkbGluZS1j b21wbGV0ZXInLgorVGhpcyBhbGxvd3MgdGhlIHVzZXIgdG8gc3BlY2lmeSB0aGUgcmVhZGxpbmUg Y29tcGxldGVyIHVzZWQgZm9yIFB5dGhvbgorc2hlbGwgY29tcGxldGlvbi4gIFRoZSBkZWZhdWx0 IGlzICdhdXRvJywgd2hpY2ggbWVhbnMgYSBzdWl0YWJsZQorY29tcGxldGVyIHdpbGwgYmUgY29u ZmlndXJlZCBhdXRvbWF0aWNhbGx5IGFjY29yZGluZyB0byB0aGUgUHl0aG9uCitpbnRlcnByZXRl ci4KKwogKiogdXNlLXBhY2thZ2UKIAogKysrCmRpZmYgLS1naXQgYS9saXNwL3Byb2dtb2Rlcy9w eXRob24uZWwgYi9saXNwL3Byb2dtb2Rlcy9weXRob24uZWwKaW5kZXggZmY3OTllMWU2NjIuLjhl Nzk5OGVlOGY2IDEwMDY0NAotLS0gYS9saXNwL3Byb2dtb2Rlcy9weXRob24uZWwKKysrIGIvbGlz cC9wcm9nbW9kZXMvcHl0aG9uLmVsCkBAIC0xMjgsOSArMTI4LDkgQEAKIDs7IHJlY2VpdmluZyBl c2NhcGUgc2VxdWVuY2VzICh3aXRoIHNvbWUgbGltaXRhdGlvbnMsIGkuZS4gY29tcGxldGlvbgog OzsgaW4gYmxvY2tzIGRvZXMgbm90IHdvcmspLiAgVGhlIGNvZGUgZXhlY3V0ZWQgZm9yIHRoZSAi ZmFsbGJhY2siCiA7OyBjb21wbGV0aW9uIGNhbiBiZSBmb3VuZCBpbiBgcHl0aG9uLXNoZWxsLWNv bXBsZXRpb24tc2V0dXAtY29kZScgYW5kCi07OyBgcHl0aG9uLXNoZWxsLWNvbXBsZXRpb24tc3Ry aW5nLWNvZGUnIHZhcmlhYmxlcy4gIFRoZWlyIGRlZmF1bHQKLTs7IHZhbHVlcyBlbmFibGUgY29t cGxldGlvbiBmb3IgYm90aCBDUHl0aG9uIGFuZCBJUHl0aG9uLCBhbmQgcHJvYmFibHkKLTs7IGFu eSByZWFkbGluZSBiYXNlZCBzaGVsbCAoaXQncyBrbm93biB0byB3b3JrIHdpdGggUHlQeSkuICBJ ZiB5b3VyCis7OyBgcHl0aG9uLXNoZWxsLWNvbXBsZXRpb24tZ2V0LWNvbXBsZXRpb25zJy4gIFRo ZWlyIGRlZmF1bHQgdmFsdWVzCis7OyBlbmFibGUgY29tcGxldGlvbiBmb3IgYm90aCBDUHl0aG9u IGFuZCBJUHl0aG9uLCBhbmQgcHJvYmFibHkgYW55Cis7OyByZWFkbGluZSBiYXNlZCBzaGVsbCAo aXQncyBrbm93biB0byB3b3JrIHdpdGggUHlQeSkuICBJZiB5b3VyCiA7OyBQeXRob24gaW5zdGFs bGF0aW9uIGxhY2tzIHJlYWRsaW5lIChsaWtlIENQeXRob24gZm9yIFdpbmRvd3MpLAogOzsgaW5z dGFsbGluZyBweXJlYWRsaW5lIChVUkwgYGh0dHBzOi8vaXB5dGhvbi5vcmcvcHlyZWFkbGluZS5o dG1sJykKIDs7IHNob3VsZCBzdWZmaWNlLiAgVG8gdHJvdWJsZXNob290IHdoeSB5b3UgYXJlIG5v dCBnZXR0aW5nIGFueQpAQCAtMzYwMSw3ICszNjAxLDYgQEAgaW5mZXJpb3ItcHl0aG9uLW1vZGUK IGBweXRob24tc2hlbGwtcHJvbXB0LWJsb2NrLXJlZ2V4cCcsCiBgcHl0aG9uLXNoZWxsLWZvbnQt bG9jay1lbmFibGUnLAogYHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLXNldHVwLWNvZGUnLAotYHB5 dGhvbi1zaGVsbC1jb21wbGV0aW9uLXN0cmluZy1jb2RlJywKIGBweXRob24tZWxkb2Mtc2V0dXAt Y29kZScsCiBgcHl0aG9uLWZmYXAtc2V0dXAtY29kZScgY2FuCiBjdXN0b21pemUgdGhpcyBtb2Rl IGZvciBkaWZmZXJlbnQgUHl0aG9uIGludGVycHJldGVycy4KQEAgLTQzMTksOCArNDMxOCw5IEBA IHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLXNldHVwLWNvZGUKICAgICBjb21wbGV0aW9ucyA9IFtd CiAgICAgY29tcGxldGVyID0gTm9uZQogCisgICAgaW1wb3J0IGpzb24KICAgICB0cnk6Ci0gICAg ICAgIGltcG9ydCByZWFkbGluZQorICAgICAgICBpbXBvcnQgcmVhZGxpbmUsIHJlCiAKICAgICAg ICAgdHJ5OgogICAgICAgICAgICAgaW1wb3J0IF9fYnVpbHRpbl9fCkBAIC00MzMxLDE2ICs0MzMx LDI5IEBAIHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLXNldHVwLWNvZGUKIAogICAgICAgICBpc19p cHl0aG9uID0gKCdfX0lQWVRIT05fXycgaW4gYnVpbHRpbnMgb3IKICAgICAgICAgICAgICAgICAg ICAgICAnX19JUFlUSE9OX19hY3RpdmUnIGluIGJ1aWx0aW5zKQotICAgICAgICBzcGxpdHMgPSB0 ZXh0LnNwbGl0KCkKLSAgICAgICAgaXNfbW9kdWxlID0gc3BsaXRzIGFuZCBzcGxpdHNbMF0gaW4g KCdmcm9tJywgJ2ltcG9ydCcpCi0KLSAgICAgICAgaWYgaXNfaXB5dGhvbiBhbmQgaXNfbW9kdWxl OgotICAgICAgICAgICAgZnJvbSBJUHl0aG9uLmNvcmUuY29tcGxldGVybGliIGltcG9ydCBtb2R1 bGVfY29tcGxldGlvbgotICAgICAgICAgICAgY29tcGxldGlvbnMgPSBtb2R1bGVfY29tcGxldGlv bih0ZXh0LnN0cmlwKCkpCi0gICAgICAgIGVsaWYgaXNfaXB5dGhvbiBhbmQgJ19fSVAnIGluIGJ1 aWx0aW5zOgotICAgICAgICAgICAgY29tcGxldGlvbnMgPSBfX0lQLmNvbXBsZXRlKHRleHQpCi0g ICAgICAgIGVsaWYgaXNfaXB5dGhvbiBhbmQgJ2dldF9pcHl0aG9uJyBpbiBidWlsdGluczoKLSAg ICAgICAgICAgIGNvbXBsZXRpb25zID0gZ2V0X2lweXRob24oKS5Db21wbGV0ZXIuYWxsX2NvbXBs ZXRpb25zKHRleHQpCisKKyAgICAgICAgaWYgaXNfaXB5dGhvbiBhbmQgJ2dldF9pcHl0aG9uJyBp biBidWlsdGluczoKKyAgICAgICAgICAgIGRlZiBmaWx0ZXJfYyhwcmVmaXgsIGMpOgorICAgICAg ICAgICAgICAgIGlmIHJlLm1hdGNoKCdfKyhpP1swLTldKyk/JCcsIGMpOgorICAgICAgICAgICAg ICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICBlbGlmIGNbMF0gPT0gJyUnIGFu ZCBub3QgcmUubWF0Y2goJ1slYS16QS1aXSskJywgcHJlZml4KToKKyAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICAg ICAgaW1wb3J0IElQeXRob24KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBJ UHl0aG9uLnZlcnNpb25faW5mb1swXSA+PSA2OgorICAgICAgICAgICAgICAgICAgICBmcm9tIElQ eXRob24uY29yZS5jb21wbGV0ZXIgaW1wb3J0IHByb3Zpc2lvbmFsY29tcGxldGVyCisgICAgICAg ICAgICAgICAgICAgIHdpdGggcHJvdmlzaW9uYWxjb21wbGV0ZXIoKToKKyAgICAgICAgICAgICAg ICAgICAgICAgIGNvbXBsZXRpb25zID0gWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtj LnRleHQsIGMuc3RhcnQsIGMuZW5kLCBjLnR5cGUgb3IgJz8nLCBjLnNpZ25hdHVyZSBvciAnJ10K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gZ2V0X2lweXRob24oKS5Db21w bGV0ZXIuY29tcGxldGlvbnModGV4dCwgbGVuKHRleHQpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpZiBmaWx0ZXJfYyh0ZXh0LCBjLnRleHQpXQorICAgICAgICAgICAgICAgIGVsc2U6 CisgICAgICAgICAgICAgICAgICAgIHBhcnQsIG1hdGNoZXMgPSBnZXRfaXB5dGhvbigpLkNvbXBs ZXRlci5jb21wbGV0ZShsaW5lX2J1ZmZlcj10ZXh0KQorICAgICAgICAgICAgICAgICAgICBjb21w bGV0aW9ucyA9IFt0ZXh0ICsgbVtsZW4ocGFydCk6XSBmb3IgbSBpbiBtYXRjaGVzIGlmIGZpbHRl cl9jKHRleHQsIG0pXQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHBhc3MK ICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgVHJ5IHRvIHJldXNlIGN1cnJlbnQgY29tcGxl dGVyLgogICAgICAgICAgICAgY29tcGxldGVyID0gcmVhZGxpbmUuZ2V0X2NvbXBsZXRlcigpCkBA IC00MzYzLDcgKzQzNzYsNyBAQCBweXRob24tc2hlbGwtY29tcGxldGlvbi1zZXR1cC1jb2RlCiAg ICAgZmluYWxseToKICAgICAgICAgaWYgZ2V0YXR0cihjb21wbGV0ZXIsICdQWVRIT05fRUxfV1JB UFBFRCcsIEZhbHNlKToKICAgICAgICAgICAgIGNvbXBsZXRlci5wcmludF9tb2RlID0gVHJ1ZQot ICAgIHJldHVybiBjb21wbGV0aW9ucyIKKyAgICByZXR1cm4ganNvbi5kdW1wcyhjb21wbGV0aW9u cykiCiAgICJDb2RlIHVzZWQgdG8gc2V0dXAgY29tcGxldGlvbiBpbiBpbmZlcmlvciBQeXRob24g cHJvY2Vzc2VzLiIKICAgOnR5cGUgJ3N0cmluZykKIApAQCAtNDQwNCw2ICs0NDE3LDc4IEBAIHB5 dGhvbi1zaGVsbC1jb21wbGV0aW9uLW5hdGl2ZS10cnktb3V0cHV0LXRpbWVvdXQKICAgOnZlcnNp b24gIjI1LjEiCiAgIDp0eXBlICdmbG9hdCkKIAorKGRlZmN1c3RvbSBweXRob24tc2hlbGwtcmVh ZGxpbmUtY29tcGxldGVyICdhdXRvCisgICJUaGUgcmVhZGxpbmUgY29tcGxldGVyIHVzZWQgZm9y IFB5dGhvbiBzaGVsbCBjb21wbGV0aW9uLgorSWYgdGhlIHZhbHVlIGlzIG5vbi1uaWwsIFB5dGhv biBzaGVsbCB3aWxsIHNldHVwIHRoZSByZWFkbGluZQorY29tcGxldGVyIHVubGVzcyBpdCBoYXMg YmVlbiBzZXQgZWxzZXdoZXJlIChlLmcuIGluIHRoZQorUFlUSE9OU1RBUlRVUCBmaWxlKS4gIEJl bG93IGFyZSBwb3NzaWJsZSB2YWx1ZXM6CistIGBhdXRvJzogdGhlIGNvbXBsZXRlciBpcyBkZXRl cm1pbmVkIGFjY29yZGluZyB0byB0aGUKK2ludGVycHJldGVyLiAgU3BlY2lmaWNhbGx5LCB0aGUg SVB5dGhvbiBjb21wbGV0ZXIsIGRlZmluZWQgaW4KK2BweXRob24tc2hlbGwtLXJlYWRsaW5lLWlw eXRob24tc2V0dXAtY29kZScsIGlzIHVzZWQgd2hlbiB0aGUKK2ludGVycHJldGVyIGlzIGlweXRo b24sIG90aGVyd2lzZSB0aGUgSmVkaSBjb21wbGV0ZXIgaXMgdXNlZC4KKy0gYSBzdHJpbmc6IFB5 dGhvbiBjb2RlIHRvIHNldHVwIHRoZSByZWFkbGluZS4gIFNlZQorYHB5dGhvbi1zaGVsbC0tcmVh ZGxpbmUtamVkaS1zZXR1cC1jb2RlJyBmb3IgcmVmZXJlbmNlLgorLSBgbmlsJzogUHl0aG9uIHNo ZWxsIHdpbGwgZG8gbm90aGluZy4KKworSW4gYW55IGNhc2UsIGlmIHRoZSBjb21wbGV0ZXIgaXMg bm90IHNldCBzdWNjZXNzZnVsbHkgaW4gdGhlIGVuZCwKK2ZhbGxiYWNrIHRvIHRoZSBidWlsdC1p biBybGNvbXBsZXRlci4iCisgIDp0eXBlICcoY2hvaWNlIChjb25zdCAgOnRhZyAiQXV0b21hdGlj IiBhdXRvKQorICAgICAgICAgICAgICAgICAoY29uc3QgIDp0YWcgIk5vIGNvbmZpZ3VyYXRpb24i IG5pbCkKKyAgICAgICAgICAgICAgICAgKHN0cmluZyA6dGFnICJQeXRob24gc2V0dXAgY29kZSIp KQorICA6dmVyc2lvbiAiMzAuMSIpCisKKyhkZWZ2YXIgcHl0aG9uLXNoZWxsLXJlYWRsaW5lLWNv bXBsZXRlci1kZWxpbXMgbmlsCisgICJXb3JkIGRlbGltaXRlcnMgdXNlZCBieSB0aGUgcmVhZGxp bmUgY29tcGxldGVyLgorSXQgaXMgYXV0b21hdGljYWxseSBzZXQgYnkgUHl0aG9uIHNoZWxsLiIp CisKKyhkZWZjb25zdCBweXRob24tc2hlbGwtLXJlYWRsaW5lLWplZGktc2V0dXAtY29kZQorICAi CitkZWYgX19QWVRIT05fRUxfc2V0dXBfcmVhZGxpbmVfY29tcGxldGVyKCk6CisgICAgZnJvbSBq ZWRpLnV0aWxzIGltcG9ydCBzZXR1cF9yZWFkbGluZQorICAgIHNldHVwX3JlYWRsaW5lKCkiCisg ICJDb2RlIHVzZWQgdG8gc2V0dXAgcmVhZGxpbmUgY29tcGxldGVyIHdpdGggSmVkaS4iKQorCiso ZGVmY29uc3QgcHl0aG9uLXNoZWxsLS1yZWFkbGluZS1pcHl0aG9uLXNldHVwLWNvZGUKKyAgIgor ZGVmIF9fUFlUSE9OX0VMX3NldHVwX3JlYWRsaW5lX2NvbXBsZXRlcigpOgorICAgIGltcG9ydCBy ZWFkbGluZSwgcmUsIGpzb24sIElQeXRob24KKworICAgIGNsYXNzIF9faXB5dGhvbl9STDoKKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHYpOgorICAgICAgICAgICAgc2VsZi52ZXJzaW9uID0g dgorCisgICAgICAgIGRlZiBmaWx0ZXIoc2VsZiwgcHJlZml4LCBjKToKKyAgICAgICAgICAgIGlm IHJlLm1hdGNoKCdfKyhpP1swLTldKyk/JCcsIGMpOgorICAgICAgICAgICAgICAgIHJldHVybiBG YWxzZQorICAgICAgICAgICAgZWxpZiBjWzBdID09ICclJyBhbmQgbm90IHJlLm1hdGNoKCdbJWEt ekEtWl0rJCcsIHByZWZpeCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAg ICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIGRlZiBjb21wbGV0ZShzZWxmLCB0ZXh0LCBzdGF0 ZSk6CisgICAgICAgICAgICBpZiBzdGF0ZSA9PSAwOgorICAgICAgICAgICAgICAgIHRyeToKKyAg ICAgICAgICAgICAgICAgICAgaWYgc2VsZi52ZXJzaW9uID49IDY6CisgICAgICAgICAgICAgICAg ICAgICAgICBmcm9tIElQeXRob24uY29yZS5jb21wbGV0ZXIgaW1wb3J0IHByb3Zpc2lvbmFsY29t cGxldGVyCisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHByb3Zpc2lvbmFsY29tcGxldGVy KCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaGVzID0gW2pzb24uZHVt cHMoWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYy50ZXh0LCBjLnN0YXJ0LCBj LmVuZCwgYy50eXBlIG9yICc/JywgYy5zaWduYXR1cmUgb3IgJyddCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGZvciBjIGluIGdldF9pcHl0aG9uKCkuQ29tcGxldGVyLmNvbXBsZXRp b25zKHRleHQsIGxlbih0ZXh0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg c2VsZi5maWx0ZXIodGV4dCwgYy50ZXh0KV0pXQorICAgICAgICAgICAgICAgICAgICBlbHNlOgor ICAgICAgICAgICAgICAgICAgICAgICAgcGFydCwgbWF0Y2hlcyA9IGdldF9pcHl0aG9uKCkuQ29t cGxldGVyLmNvbXBsZXRlKGxpbmVfYnVmZmVyPXRleHQpCisgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoZXMgPSBbdGV4dCArIG1bbGVuKHBhcnQpOl0gZm9yIG0gaW4gbWF0Y2hlcwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZmlsdGVyKHRl eHQsIG0pXQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAg ICAgICAgIHBhc3MKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5tYXRjaGVzW3N0YXRlXQorICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CisgICAgICAg ICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIHJlYWRsaW5lLnNldF9jb21wbGV0ZXIoX19pcHl0 aG9uX1JMKElQeXRob24udmVyc2lvbl9pbmZvWzBdKS5jb21wbGV0ZSkKKyAgICByZWFkbGluZS5z ZXRfY29tcGxldGVyX2RlbGltcygnJykiCisgICJDb2RlIHVzZWQgdG8gc2V0dXAgcmVhZGxpbmUg Y29tcGxldGVyIGZvciBJUHl0aG9uLiIpCisKIChkZWZ2YXIgcHl0aG9uLXNoZWxsLWNvbXBsZXRp b24tbmF0aXZlLXJlZGlyZWN0LWJ1ZmZlcgogICAiICpQeXRob24gY29tcGxldGlvbnMgcmVkaXJl Y3QqIgogICAiQnVmZmVyIHRvIGJlIHVzZWQgdG8gcmVkaXJlY3Qgb3V0cHV0IG9mIHJlYWRsaW5l IGNvbW1hbmRzLiIpCkBAIC00NDI3LDcgKzQ1MTIsMjAgQEAgcHl0aG9uLXNoZWxsLWNvbXBsZXRp b24tbmF0aXZlLXRyeQogKGRlZnVuIHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLW5hdGl2ZS1zZXR1 cCAoKQogICAiVHJ5IHRvIHNldHVwIG5hdGl2ZSBjb21wbGV0aW9uLCByZXR1cm4gbm9uLW5pbCBv biBzdWNjZXNzLiIKICAgKGxldCogKChwcm9jZXNzIChweXRob24tc2hlbGwtZ2V0LXByb2Nlc3Mp KQotICAgICAgICAgKG91dHB1dCAocHl0aG9uLXNoZWxsLXNlbmQtc3RyaW5nLW5vLW91dHB1dCAi CisgICAgICAgICAoY29tcGxldGVyIChwY2FzZSBweXRob24tc2hlbGwtcmVhZGxpbmUtY29tcGxl dGVyCisgICAgICAgICAgICAgICAgICAgICAgKCdhdXRvCisgICAgICAgICAgICAgICAgICAgICAg IChpZiAoc3RyaW5nLW1hdGNoLXAgImlweXRob25bMjNdP1xcJyIgcHl0aG9uLXNoZWxsLWludGVy cHJldGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uLXNoZWxsLS1yZWFkbGlu ZS1pcHl0aG9uLXNldHVwLWNvZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICBweXRob24tc2hl bGwtLXJlYWRsaW5lLWplZGktc2V0dXAtY29kZSkpCisgICAgICAgICAgICAgICAgICAgICAgKChw cmVkIHN0cmluZ3ApIHB5dGhvbi1zaGVsbC1yZWFkbGluZS1jb21wbGV0ZXIpCisgICAgICAgICAg ICAgICAgICAgICAgKF8gIiIpKSkKKyAgICAgICAgIChvdXRwdXQgKHB5dGhvbi1zaGVsbC1zZW5k LXN0cmluZy1uby1vdXRwdXQKKyAgICAgICAgICAgICAgICAgIChjb25jYXQgIgordHJ5OgorICAg IGRlbCBfX1BZVEhPTl9FTF9zZXR1cF9yZWFkbGluZV9jb21wbGV0ZXIKK2V4Y2VwdDoKKyAgICBw YXNzCisiIGNvbXBsZXRlciAiCiBkZWYgX19QWVRIT05fRUxfbmF0aXZlX2NvbXBsZXRpb25fc2V0 dXAoKToKICAgICB0cnk6CiAgICAgICAgIGltcG9ydCByZWFkbGluZQpAQCAtNDUwMCwxMSArNDU5 OCwyMyBAQCBweXRob24tc2hlbGwtY29tcGxldGlvbi1uYXRpdmUtc2V0dXAKICAgICAgICAgICAg ICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbgogCisgICAg ICAgIGRlZiBpc19ybGNvbXBsZXRlcihjb21wbGV0ZXIpOgorICAgICAgICAgICAgdHJ5OgorICAg ICAgICAgICAgICAgIGlmIGNvbXBsZXRlci5fX3NlbGZfXy5fX21vZHVsZV9fID09ICdybGNvbXBs ZXRlcic6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICAgICAg ZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICBleGNl cHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCiAgICAgICAgIGNv bXBsZXRlciA9IHJlYWRsaW5lLmdldF9jb21wbGV0ZXIoKQogCi0gICAgICAgIGlmIG5vdCBjb21w bGV0ZXI6Ci0gICAgICAgICAgICAjIFVzZWQgYXMgbGFzdCByZXNvcnQgdG8gYXZvaWQgYnJlYWtp bmcgY3VzdG9taXphdGlvbnMuCi0gICAgICAgICAgICBpbXBvcnQgcmxjb21wbGV0ZXIKKyAgICAg ICAgaWYgbm90IGNvbXBsZXRlciBvciBpc19ybGNvbXBsZXRlcihjb21wbGV0ZXIpOgorICAgICAg ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIF9fUFlUSE9OX0VMX3NldHVwX3JlYWRsaW5lX2Nv bXBsZXRlcigpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgIyBVc2VkIGFz IGxhc3QgcmVzb3J0IHRvIGF2b2lkIGJyZWFraW5nIGN1c3RvbWl6YXRpb25zLgorICAgICAgICAg ICAgICAgIGltcG9ydCBybGNvbXBsZXRlcgogICAgICAgICAgICAgY29tcGxldGVyID0gcmVhZGxp bmUuZ2V0X2NvbXBsZXRlcigpCiAKICAgICAgICAgaWYgY29tcGxldGVyIGFuZCBub3QgZ2V0YXR0 cihjb21wbGV0ZXIsICdQWVRIT05fRUxfV1JBUFBFRCcsIEZhbHNlKToKQEAgLTQ1MzksOSArNDY0 OSwxMyBAQCBweXRob24tc2hlbGwtY29tcGxldGlvbi1uYXRpdmUtc2V0dXAKICAgICAgICAgcHJp bnQgKCdweXRob24uZWw6IG5hdGl2ZSBjb21wbGV0aW9uIHNldHVwIGZhaWxlZCwgJXM6ICVzJwog ICAgICAgICAgICAgICAgJSBzeXMuZXhjX2luZm8oKVs6Ml0pCiAKLV9fUFlUSE9OX0VMX25hdGl2 ZV9jb21wbGV0aW9uX3NldHVwKCkiIHByb2Nlc3MpKSkKK19fUFlUSE9OX0VMX25hdGl2ZV9jb21w bGV0aW9uX3NldHVwKCkiKSBwcm9jZXNzKSkpCiAgICAgKHdoZW4gKHN0cmluZy1tYXRjaC1wICJw eXRob25cXC5lbDogbmF0aXZlIGNvbXBsZXRpb24gc2V0dXAgbG9hZGVkIgogICAgICAgICAgICAg ICAgICAgICAgICAgICBvdXRwdXQpCisgICAgICAoc2V0cS1sb2NhbCBweXRob24tc2hlbGwtcmVh ZGxpbmUtY29tcGxldGVyLWRlbGltcworICAgICAgICAgICAgICAgICAgKHN0cmluZy10cmltLXJp Z2h0CisgICAgICAgICAgICAgICAgICAgKHB5dGhvbi1zaGVsbC1zZW5kLXN0cmluZy1uby1vdXRw dXQKKyAgICAgICAgICAgICAgICAgICAgImltcG9ydCByZWFkbGluZTsgcHJpbnQocmVhZGxpbmUu Z2V0X2NvbXBsZXRlcl9kZWxpbXMoKSkiKSkpCiAgICAgICAocHl0aG9uLXNoZWxsLWNvbXBsZXRp b24tbmF0aXZlLXRyeSkpKSkKIAogKGRlZnVuIHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLW5hdGl2 ZS10dXJuLW9mZiAoJm9wdGlvbmFsIG1zZykKQEAgLTQ2MDksNiArNDcyMyw4IEBAIHB5dGhvbi1z aGVsbC1jb21wbGV0aW9uLW5hdGl2ZS1nZXQtY29tcGxldGlvbnMKICAgICAobGV0KiAoKG9yaWdp bmFsLWZpbHRlci1mbiAocHJvY2Vzcy1maWx0ZXIgcHJvY2VzcykpCiAgICAgICAgICAgIChyZWRp cmVjdC1idWZmZXIgKGdldC1idWZmZXItY3JlYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLW5hdGl2ZS1yZWRpcmVjdC1idWZmZXIpKQorICAg ICAgICAgICAoc2VwIChpZiAoc3RyaW5nPSBweXRob24tc2hlbGwtcmVhZGxpbmUtY29tcGxldGVy LWRlbGltcyAiIikKKyAgICAgICAgICAgICAgICAgICAgIltcblxyXSsiICJbIFxmXHRcblxyXHYo KV0rIikpCiAgICAgICAgICAgICh0cmlnZ2VyICJcdCIpCiAgICAgICAgICAgIChuZXctaW5wdXQg KGNvbmNhdCBpbnB1dCB0cmlnZ2VyKSkKICAgICAgICAgICAgKGlucHV0LWxlbmd0aApAQCAtNDY1 MSwyOCArNDc2Nyw3MiBAQCBweXRob24tc2hlbGwtY29tcGxldGlvbi1uYXRpdmUtZ2V0LWNvbXBs ZXRpb25zCiAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzIHB5dGhvbi1zaGVsbC1jb21wbGV0 aW9uLW5hdGl2ZS1vdXRwdXQtdGltZW91dAogICAgICAgICAgICAgICAgICAgICAgY29taW50LXJl ZGlyZWN0LWZpbmlzaGVkLXJlZ2V4cCkKICAgICAgICAgICAgICAgICAocmUtc2VhcmNoLWJhY2t3 YXJkICIwX19kdW1teV9jb21wbGV0aW9uX18iIG5pbCB0KQotICAgICAgICAgICAgICAgIChjbC1y ZW1vdmUtZHVwbGljYXRlcwotICAgICAgICAgICAgICAgICAoc3BsaXQtc3RyaW5nCi0gICAgICAg ICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzCi0gICAgICAgICAgICAg ICAgICAgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSAocG9pbnQtbWluKSkKLSAgICAgICAgICAg ICAgICAgICJbIFxmXHRcblxyXHYoKV0rIiB0KQotICAgICAgICAgICAgICAgICA6dGVzdCAjJ3N0 cmluZz0pKSkpCisgICAgICAgICAgICAgICAgKGxldCAoKHN0ciAoYnVmZmVyLXN1YnN0cmluZy1u by1wcm9wZXJ0aWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmUtYmVnaW5uaW5n LXBvc2l0aW9uKSAocG9pbnQtbWluKSkpKQorICAgICAgICAgICAgICAgICAgKGlmIChzdHJpbmc9 ICJbIiAoc3Vic3RyaW5nIHN0ciAwIDEpKQorICAgICAgICAgICAgICAgICAgICAgIChjb25kaXRp b24tY2FzZSBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHB5dGhvbi0tcGFyc2UtanNv bi1hcnJheSBzdHIpCisgICAgICAgICAgICAgICAgICAgICAgICAodCAoY2wtcmVtb3ZlLWR1cGxp Y2F0ZXMgKHNwbGl0LXN0cmluZyBzdHIgc2VwIHQpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOnRlc3QgIydzdHJpbmc9KSkpCisgICAgICAgICAgICAg ICAgICAgIChjbC1yZW1vdmUtZHVwbGljYXRlcyAoc3BsaXQtc3RyaW5nIHN0ciBzZXAgdCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDp0ZXN0ICMnc3RyaW5nPSkp KSkpKQogICAgICAgICAoc2V0LXByb2Nlc3MtZmlsdGVyIHByb2Nlc3Mgb3JpZ2luYWwtZmlsdGVy LWZuKSkpKSkKIAogKGRlZnVuIHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLWdldC1jb21wbGV0aW9u cyAocHJvY2VzcyBpbnB1dCkKICAgIkdldCBjb21wbGV0aW9ucyBvZiBJTlBVVCB1c2luZyBQUk9D RVNTLiIKICAgKHdpdGgtY3VycmVudC1idWZmZXIgKHByb2Nlc3MtYnVmZmVyIHByb2Nlc3MpCi0g ICAgKGxldCAoKGNvbXBsZXRpb25zCi0gICAgICAgICAgIChweXRob24tdXRpbC1zdHJpcC1zdHJp bmcKLSAgICAgICAgICAgIChweXRob24tc2hlbGwtc2VuZC1zdHJpbmctbm8tb3V0cHV0Ci0gICAg ICAgICAgICAgKGZvcm1hdAotICAgICAgICAgICAgICAiJXNcbnByaW50KCc7Jy5qb2luKF9fUFlU SE9OX0VMX2dldF9jb21wbGV0aW9ucyglcykpKSIKKyAgICAocHl0aG9uLS1wYXJzZS1qc29uLWFy cmF5CisgICAgIChweXRob24tc2hlbGwtc2VuZC1zdHJpbmctbm8tb3V0cHV0CisgICAgICAoZm9y bWF0ICIlc1xucHJpbnQoX19QWVRIT05fRUxfZ2V0X2NvbXBsZXRpb25zKCVzKSkiCiAgICAgICAg ICAgICAgIHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLXNldHVwLWNvZGUKICAgICAgICAgICAgICAg KHB5dGhvbi1zaGVsbC0tZW5jb2RlLXN0cmluZyBpbnB1dCkpCi0gICAgICAgICAgICAgcHJvY2Vz cykpKSkKLSAgICAgICh3aGVuICg+IChsZW5ndGggY29tcGxldGlvbnMpIDIpCi0gICAgICAgIChz cGxpdC1zdHJpbmcgY29tcGxldGlvbnMKLSAgICAgICAgICAgICAgICAgICAgICAiXidcXHxeXCJc XHw7XFx8JyRcXHxcIiQiIHQpKSkpKQorICAgICAgcHJvY2VzcykpKSkKKworKGRlZnVuIHB5dGhv bi1zaGVsbC0tZ2V0LW11bHRpbGluZS1pbnB1dCAoKQorICAiUmV0dXJuIGxpbmVzIGF0IGEgbXVs dGktbGluZSBpbnB1dCBpbiBQeXRob24gc2hlbGwuIgorICAoc2F2ZS1leGN1cnNpb24KKyAgICAo bGV0ICgocCAocG9pbnQpKSBsaW5lcykKKyAgICAgICh3aGVuIChwcm9nbgorICAgICAgICAgICAg ICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAgICAgICAgICAgIChsb29raW5nLWJhY2sgcHl0aG9u LXNoZWxsLXByb21wdC1ibG9jay1yZWdleHAgKHBvcy1ib2wpKSkKKyAgICAgICAgKHB1c2ggKGJ1 ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAocG9pbnQpIHApIGxpbmVzKQorICAgICAgICAo d2hpbGUgKHByb2duIChjb21pbnQtcHJldmlvdXMtcHJvbXB0IDEpCisgICAgICAgICAgICAgICAg ICAgICAgKGxvb2tpbmctYmFjayBweXRob24tc2hlbGwtcHJvbXB0LWJsb2NrLXJlZ2V4cCAocG9z LWJvbCkpKQorICAgICAgICAgIChwdXNoIChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMg KHBvaW50KSAocG9zLWVvbCkpIGxpbmVzKSkKKyAgICAgICAgKHB1c2ggKGJ1ZmZlci1zdWJzdHJp bmctbm8tcHJvcGVydGllcyAocG9pbnQpIChwb3MtZW9sKSkgbGluZXMpKQorICAgICAgbGluZXMp KSkKKworKGRlZnVuIHB5dGhvbi1zaGVsbC0tZXh0cmEtY29tcGxldGlvbi1jb250ZXh0ICgpCisg ICJHZXQgZXh0cmEgY29tcGxldGlvbiBjb250ZXh0IG9mIGN1cnJlbnQgaW5wdXQgaW4gUHl0aG9u IHNoZWxsLiIKKyAgKGxldCAoKGxpbmVzIChweXRob24tc2hlbGwtLWdldC1tdWx0aWxpbmUtaW5w dXQpKQorICAgICAgICAocHl0aG9uLWluZGVudC1ndWVzcy1pbmRlbnQtb2Zmc2V0IG5pbCkpCisg ICAgKHdoZW4gKG5vdCAoemVyb3AgKGxlbmd0aCBsaW5lcykpKQorICAgICAgKHdpdGgtdGVtcC1i dWZmZXIKKyAgICAgICAgKGRlbGF5LW1vZGUtaG9va3MKKyAgICAgICAgICAoaW5zZXJ0IChzdHJp bmctam9pbiBsaW5lcyAiXG4iKSkKKyAgICAgICAgICAocHl0aG9uLW1vZGUpCisgICAgICAgICAg KHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLWV4dHJhLWNvbnRleHQpKSkpKSkKKworKGRlZnVuIHB5 dGhvbi1zaGVsbC1jb21wbGV0aW9uLWV4dHJhLWNvbnRleHQgKCZvcHRpb25hbCBwb3MpCisgICJH ZXQgZXh0cmEgY29tcGxldGlvbiBjb250ZXh0IGF0IHBvc2l0aW9uIFBPUyBpbiBQeXRob24gYnVm ZmVyLgorSWYgb3B0aW9uYWwgYXJndW1lbnQgUE9TIGlzIG5pbCwgdXNlIGN1cnJlbnQgcG9zaXRp b24uCisKK1JlYWRsaW5lIGNvbXBsZXRlcnMgY291bGQgdXNlIGN1cnJlbnQgbGluZSBhcyB0aGUg Y29tcGxldGlvbgorY29udGV4dCwgd2hpY2ggbWF5IGJlIGluc3VmZmljaWVudC4gIEluIHRoaXMg ZnVuY3Rpb24sIGV4dHJhCitjb250ZXh0IChlLmcuIG11bHRpLWxpbmUgZnVuY3Rpb24gY2FsbCkg aXMgZm91bmQgYW5kIHJlZm9ybWF0dGVkCithcyBvbmUgbGluZSwgd2hpY2ggaXMgcmVxdWlyZWQg YnkgbmF0aXZlIGNvbXBsZXRpb24uIgorICAobGV0IChib3VuZCBwKQorICAgIChzYXZlLWV4Y3Vy c2lvbgorICAgICAgKGFuZCBwb3MgKGdvdG8tY2hhciBwb3MpKQorICAgICAgKHNldHEgYm91bmQg KHBvcy1ib2wpKQorICAgICAgKHB5dGhvbi1uYXYtdXAtbGlzdCAtMSkKKyAgICAgICh3aGVuIChh bmQgKDwgKHBvaW50KSBib3VuZCkKKyAgICAgICAgICAgICAgICAgKGxvb2tpbmctYmFjaworICAg ICAgICAgICAgICAgICAgKHB5dGhvbi1yeCAoKyAob3IgIi4iIHN5bWJvbC1uYW1lKSkpIChwb3Mt Ym9sKSB0KSkKKyAgICAgICAgKHNldHEgcCAobWF0Y2gtYmVnaW5uaW5nIDApKSkpCisgICAgKHdo ZW4gcAorICAgICAgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZworICAgICAgICJcblsgXHRdKiIg IiIgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyBwICgxLSBib3VuZCkpKSkpKQogCiAo ZGVmdmFyLWxvY2FsIHB5dGhvbi1zaGVsbC0tY2FwZi1jYWNoZSBuaWwKICAgIlZhcmlhYmxlIHRv IHN0b3JlIGNhY2hlZCBjb21wbGV0aW9ucyBhbmQgaW52YWxpZGF0aW9uIGtleXMuIikKQEAgLTQ2 ODcsMjEgKzQ4NDcsMjYgQEAgcHl0aG9uLXNoZWxsLWNvbXBsZXRpb24tYXQtcG9pbnQKICAgICAg ICAgICAgICAgICAgICAgICAgICA7OyBXb3JraW5nIG9uIGEgc2hlbGwgYnVmZmVyOiB1c2UgcHJv bXB0IGVuZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAoY2RyIChweXRob24tdXRpbC1jb21p bnQtbGFzdC1wcm9tcHQpKQogICAgICAgICAgICAgICAgICAgICAgICAobGluZS1iZWdpbm5pbmct cG9zaXRpb24pKSkKLSAgICAgICAgIChpbXBvcnQtc3RhdGVtZW50Ci0gICAgICAgICAgKHdoZW4g KHN0cmluZy1tYXRjaC1wCi0gICAgICAgICAgICAgICAgIChyeCAoKiBzcGFjZSkgd29yZC1zdGFy dCAob3IgImZyb20iICJpbXBvcnQiKSB3b3JkLWVuZCBzcGFjZSkKLSAgICAgICAgICAgICAgICAg KGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyBsaW5lLXN0YXJ0IChwb2ludCkpKQotICAg ICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyBsaW5lLXN0YXJ0IChwb2lu dCkpKSkKKyAgICAgICAgIChuby1kZWxpbXMKKyAgICAgICAgICAoYW5kIChub3QgKGlmIGlzLXNo ZWxsLWJ1ZmZlcgorICAgICAgICAgICAgICAgICAgICAgICAgKGVxICdmb250LWxvY2stY29tbWVu dC1mYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdldC10ZXh0LXByb3BlcnR5ICgx LSAocG9pbnQpKSAnZmFjZSkpCisgICAgICAgICAgICAgICAgICAgICAgKHB5dGhvbi1zeW50YXgt Y29udGV4dCAnY29tbWVudCkpKQorICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIg KHByb2Nlc3MtYnVmZmVyIHByb2Nlc3MpCisgICAgICAgICAgICAgICAgIChpZiBweXRob24tc2hl bGwtY29tcGxldGlvbi1uYXRpdmUtZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAoc3RyaW5n PSBweXRob24tc2hlbGwtcmVhZGxpbmUtY29tcGxldGVyLWRlbGltcyAiIikKKyAgICAgICAgICAg ICAgICAgICAoc3RyaW5nLW1hdGNoLXAgImlweXRob25bMjNdP1xcJyIgcHl0aG9uLXNoZWxsLWlu dGVycHJldGVyKSkpKSkKICAgICAgICAgIChzdGFydAogICAgICAgICAgIChpZiAoPCAocG9pbnQp IGxpbmUtc3RhcnQpCiAgICAgICAgICAgICAgIChwb2ludCkKICAgICAgICAgICAgIChzYXZlLWV4 Y3Vyc2lvbgotICAgICAgICAgICAgICAoaWYgKG5vdCAocmUtc2VhcmNoLWJhY2t3YXJkCi0gICAg ICAgICAgICAgICAgICAgICAgICAocHl0aG9uLXJ4Ci0gICAgICAgICAgICAgICAgICAgICAgICAg KG9yIHdoaXRlc3BhY2Ugb3Blbi1wYXJlbiBjbG9zZS1wYXJlbgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJpbmctZGVsaW1pdGVyIHNpbXBsZS1vcGVyYXRvcikpCi0gICAgICAgICAg ICAgICAgICAgICAgICBsaW5lLXN0YXJ0Ci0gICAgICAgICAgICAgICAgICAgICAgICB0IDEpKQor ICAgICAgICAgICAgICAoaWYgKG9yIG5vLWRlbGltcworICAgICAgICAgICAgICAgICAgICAgIChu b3QgKHJlLXNlYXJjaC1iYWNrd2FyZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChweXRo b24tcngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHdoaXRlc3BhY2Ugb3Blbi1w YXJlbiBjbG9zZS1wYXJlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5n LWRlbGltaXRlciBzaW1wbGUtb3BlcmF0b3IpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxpbmUtc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0IDEpKSkKICAgICAgICAg ICAgICAgICAgIGxpbmUtc3RhcnQKICAgICAgICAgICAgICAgICAoZm9yd2FyZC1jaGFyIChsZW5n dGggKG1hdGNoLXN0cmluZy1uby1wcm9wZXJ0aWVzIDApKSkKICAgICAgICAgICAgICAgICAocG9p bnQpKSkpKQpAQCAtNDc0MSwxOCArNDkwNiw1OCBAQCBweXRob24tc2hlbGwtY29tcGxldGlvbi1h dC1wb2ludAogICAgICAgICAgICAgICAgICAgKHQgIydweXRob24tc2hlbGwtY29tcGxldGlvbi1u YXRpdmUtZ2V0LWNvbXBsZXRpb25zKSkpKQogICAgICAgICAgKHByZXYtcHJvbXB0IChjYXIgcHl0 aG9uLXNoZWxsLS1jYXBmLWNhY2hlKSkKICAgICAgICAgIChyZSAob3IgKGNhZHIgcHl0aG9uLXNo ZWxsLS1jYXBmLWNhY2hlKSByZWdleHAtdW5tYXRjaGFibGUpKQotICAgICAgICAgKHByZWZpeCAo YnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIHN0YXJ0IGVuZCkpKQorICAgICAgICAgKHBy ZWZpeCAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIHN0YXJ0IGVuZCkpCisgICAgICAg ICAocHJlZml4LW9mZnNldCAwKQorICAgICAgICAgKGV4dHJhLWNvbnRleHQgKHdoZW4gbm8tZGVs aW1zCisgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBpcy1zaGVsbC1idWZmZXIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChweXRob24tc2hlbGwtLWV4dHJhLWNvbXBsZXRpb24t Y29udGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHl0aG9uLXNoZWxsLWNvbXBs ZXRpb24tZXh0cmEtY29udGV4dCkpKSkKKyAgICAgICAgIChleHRyYS1vZmZzZXQgKGxlbmd0aCBl eHRyYS1jb250ZXh0KSkpCisgICAgKHVubGVzcyAoemVyb3AgZXh0cmEtb2Zmc2V0KQorICAgICAg KHNldHEgcHJlZml4IChjb25jYXQgZXh0cmEtY29udGV4dCBwcmVmaXgpKSkKICAgICA7OyBUbyBp bnZhbGlkYXRlIHRoZSBjYWNoZSwgd2UgY2hlY2sgaWYgdGhlIHByb21wdCBwb3NpdGlvbiBvciB0 aGUKICAgICA7OyBjb21wbGV0aW9uIHByZWZpeCBjaGFuZ2VkLgogICAgICh1bmxlc3MgKGFuZCAo ZXF1YWwgcHJldi1wcm9tcHQgKGNhciBwcm9tcHQtYm91bmRhcmllcykpCi0gICAgICAgICAgICAg ICAgIChzdHJpbmctbWF0Y2ggcmUgcHJlZml4KSkKKyAgICAgICAgICAgICAgICAgKHN0cmluZy1t YXRjaCByZSBwcmVmaXgpCisgICAgICAgICAgICAgICAgIChzZXRxIHByZWZpeC1vZmZzZXQgKC0g KGxlbmd0aCBwcmVmaXgpIChtYXRjaC1lbmQgMSkpKSkKICAgICAgIChzZXRxIHB5dGhvbi1zaGVs bC0tY2FwZi1jYWNoZQogICAgICAgICAgICAgYCgsKGNhciBwcm9tcHQtYm91bmRhcmllcykKICAg ICAgICAgICAgICAgLChpZiAoc3RyaW5nLWVtcHR5LXAgcHJlZml4KQogICAgICAgICAgICAgICAg ICAgIHJlZ2V4cC11bm1hdGNoYWJsZQotICAgICAgICAgICAgICAgICAoY29uY2F0ICJcXGAiIChy ZWdleHAtcXVvdGUgcHJlZml4KSAiXFwoPzpcXHN3XFx8XFxzX1xcKSpcXCciKSkKLSAgICAgICAg ICAgICAgLEAoZnVuY2FsbCBjb21wbGV0aW9uLWZuIHByb2Nlc3MgKG9yIGltcG9ydC1zdGF0ZW1l bnQgcHJlZml4KSkpKSkKLSAgICAobGlzdCBzdGFydCBlbmQgKGNkZHIgcHl0aG9uLXNoZWxsLS1j YXBmLWNhY2hlKSkpKQorICAgICAgICAgICAgICAgICAoY29uY2F0ICJcXGBcXCgiIChyZWdleHAt cXVvdGUgcHJlZml4KSAiXFwpXFwoPzpcXHN3XFx8XFxzX1xcKSpcXCciKSkKKyAgICAgICAgICAg ICAgLEAoZnVuY2FsbCBjb21wbGV0aW9uLWZuIHByb2Nlc3MgcHJlZml4KSkpKQorICAgIChsZXQg KChjYW5kcyAoY2RkciBweXRob24tc2hlbGwtLWNhcGYtY2FjaGUpKSkKKyAgICAgIChjb25kCisg ICAgICAgKChzdHJpbmdwIChjYXIgY2FuZHMpKQorICAgICAgICAoaWYgbm8tZGVsaW1zCisgICAg ICAgICAgICA7OyBSZWR1Y2UgY29tcGxldGlvbiBjYW5kaWRhdGVzIGR1ZSB0byBsb25nIHByZWZp eC4KKyAgICAgICAgICAgIChpZi1sZXQgKChMcCAobGVuZ3RoIHByZWZpeCkpCisgICAgICAgICAg ICAgICAgICAgICAoKHN0cmluZy1tYXRjaCAiXFwoXFxzd1xcfFxcc19cXCkrXFwnIiBwcmVmaXgp KQorICAgICAgICAgICAgICAgICAgICAgKEwgKG1hdGNoLWJlZ2lubmluZyAwKSkpCisgICAgICAg ICAgICAgICAgOzsgSWYgZXh0cmEtb2Zmc2V0IGlzIG5vdCB6ZXJvOgorICAgICAgICAgICAgICAg IDs7ICAgICAgICAgICAgICAgICAgc3RhcnQgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAg ICAgIDs7IG8tLS0tLS0tLS0tLS0tLS0tLS1vLS0tLS0tLS0tby0tLS0tLS1vCisgICAgICAgICAg ICAgICAgOzsgfDwtIGV4dHJhLW9mZnNldCAtPnwKKyAgICAgICAgICAgICAgICA7OyB8PC0tLS0t LS0tLS0tIEwgLS0tLS0tLS0tLS0tPnwKKyAgICAgICAgICAgICAgICA7OyAgICAgICAgICAgICAg ICAgICAgICAgICAgbmV3LXN0YXJ0CisgICAgICAgICAgICAgICAgKGxpc3QgKCsgc3RhcnQgTCAo LSBleHRyYS1vZmZzZXQpKSBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAobWFwY2FyIChsYW1i ZGEgKHMpIChzdWJzdHJpbmcgcyBMKSkgY2FuZHMpKQorICAgICAgICAgICAgICAobGlzdCBlbmQg ZW5kIChtYXBjYXIgKGxhbWJkYSAocykgKHN1YnN0cmluZyBzIExwKSkgY2FuZHMpKSkKKyAgICAg ICAgICAobGlzdCBzdGFydCBlbmQgY2FuZHMpKSkKKyAgICAgICA7OyBweXRob24tc2hlbGwtY29t cGxldGlvbigtbmF0aXZlKS1nZXQtY29tcGxldGlvbnMgbWF5IHByb2R1Y2UKKyAgICAgICA7OyBh IGxpc3Qgb2YgKHRleHQgc3RhcnQgZW5kIHR5cGUgc2lnbmF0dXJlKSBmb3IgY29tcGxldGlvbi4K KyAgICAgICA7OyBTZWUgYHB5dGhvbi1zaGVsbC0tcmVhZGxpbmUtaXB5dGhvbi1zZXR1cC1jb2Rl JyBhbmQKKyAgICAgICA7OyBgcHl0aG9uLXNoZWxsLWNvbXBsZXRpb24tc2V0dXAtY29kZScuCisg ICAgICAgKChjb25zcCAoY2FyIGNhbmRzKSkKKyAgICAgICAgKGxpc3QgKCsgc3RhcnQgKG50aCAx IChjYXIgY2FuZHMpKSAoLSBleHRyYS1vZmZzZXQpKQorICAgICAgICAgICAgICA7OyBDYW5kaWRh dGVzIG1heSBiZSBjYWNoZWQsIHNvIHRoZSBlbmQgcG9zaXRpb24gc2hvdWxkCisgICAgICAgICAg ICAgIDs7IGJlIGFkanVzdGVkIGFjY29yZGluZyB0byBjdXJyZW50IGNvbXBsZXRpb24gcHJlZml4 LgorICAgICAgICAgICAgICAoKyBzdGFydCAobnRoIDIgKGNhciBjYW5kcykpICgtIGV4dHJhLW9m ZnNldCkgcHJlZml4LW9mZnNldCkKKyAgICAgICAgICAgICAgY2FuZHMKKyAgICAgICAgICAgICAg OmFubm90YXRpb24tZnVuY3Rpb24KKyAgICAgICAgICAgICAgKGxhbWJkYSAoYykgKGNvbmNhdCAi ICIgKG50aCAzIChhc3NvYyBjIGNhbmRzKSkpKQorICAgICAgICAgICAgICA6Y29tcGFueS1kb2Nz aWcKKyAgICAgICAgICAgICAgKGxhbWJkYSAoYykgKG50aCA0IChhc3NvYyBjIGNhbmRzKSkpKSkp KSkpCiAKIChkZWZpbmUtb2Jzb2xldGUtZnVuY3Rpb24tYWxpYXMKICAgJ3B5dGhvbi1zaGVsbC1j b21wbGV0aW9uLWNvbXBsZXRlLWF0LXBvaW50CmRpZmYgLS1naXQgYS90ZXN0L2xpc3AvcHJvZ21v ZGVzL3B5dGhvbi10ZXN0cy5lbCBiL3Rlc3QvbGlzcC9wcm9nbW9kZXMvcHl0aG9uLXRlc3RzLmVs CmluZGV4IDk3ZmZkNWZlMjBmLi5hZTIzZmY4ZWJlMiAxMDA2NDQKLS0tIGEvdGVzdC9saXNwL3By b2dtb2Rlcy9weXRob24tdGVzdHMuZWwKKysrIGIvdGVzdC9saXNwL3Byb2dtb2Rlcy9weXRob24t dGVzdHMuZWwKQEAgLTQ3ODcsNiArNDc4Nyw4NCBAQCBweXRob24tc2hlbGwtY29tcGxldGlvbi1h dC1wb2ludC1uYXRpdmUtMQogICAgICAoZW5kLW9mLWxpbmUgMCkKICAgICAgKHNob3VsZC1ub3Qg KG50aCAyIChweXRob24tc2hlbGwtY29tcGxldGlvbi1hdC1wb2ludCkpKSkpKQogCisoZGVmdW4g cHl0aG9uLXRlc3RzLS1jb21wbGV0aW9uLW1vZHVsZSAoKQorICAiQ2hlY2sgaWYgbW9kdWxlcyBj YW4gYmUgY29tcGxldGVkIGluIFB5dGhvbiBzaGVsbC4iCisgIChpbnNlcnQgImltcG9ydCBkYXRl dCIpCisgIChjb21wbGV0aW9uLWF0LXBvaW50KQorICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgIChz aG91bGQgKGxvb2tpbmctYXQtcCAiaW1wb3J0IGRhdGV0aW1lIikpCisgIChraWxsLWxpbmUpCisg IChpbnNlcnQgImZyb20gZGF0ZXQiKQorICAoY29tcGxldGlvbi1hdC1wb2ludCkKKyAgKGJlZ2lu bmluZy1vZi1saW5lKQorICAoc2hvdWxkIChsb29raW5nLWF0LXAgImZyb20gZGF0ZXRpbWUiKSkK KyAgKGVuZC1vZi1saW5lKQorICAoaW5zZXJ0ICIgaW1wb3J0IHRpbWVkIikKKyAgKGNvbXBsZXRp b24tYXQtcG9pbnQpCisgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgKHNob3VsZCAobG9va2luZy1h dC1wICJmcm9tIGRhdGV0aW1lIGltcG9ydCB0aW1lZGVsdGEiKSkKKyAgKGtpbGwtbGluZSkpCisK KyhkZWZ1biBweXRob24tdGVzdHMtLWNvbXBsZXRpb24tcGFyYW1ldGVycyAoKQorICAiQ2hlY2sg aWYgcGFyYW1ldGVycyBjYW4gYmUgY29tcGxldGVkIGluIFB5dGhvbiBzaGVsbC4iCisgIChpbnNl cnQgImltcG9ydCByZSIpCisgIChjb21pbnQtc2VuZC1pbnB1dCkKKyAgKHB5dGhvbi10ZXN0cy1z aGVsbC13YWl0LWZvci1wcm9tcHQpCisgIChpbnNlcnQgInJlLnNwbGl0KCdiJywgJ2FiYycsIG1h eHMiKQorICAoY29tcGxldGlvbi1hdC1wb2ludCkKKyAgKHNob3VsZCAoc3RyaW5nPSAicmUuc3Bs aXQoJ2InLCAnYWJjJywgbWF4c3BsaXQ9IgorICAgICAgICAgICAgICAgICAgIChidWZmZXItc3Vi c3RyaW5nIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikgKHBvaW50KSkpKQorICAoaW5zZXJ0ICIw LCAiKQorICAoc2hvdWxkIChweXRob24tc2hlbGwtY29tcGxldGlvbi1hdC1wb2ludCkpCisgIDs7 IFRlc3QgaWYgY2FjaGUgaXMgdXNlZC4KKyAgKGNsLWxldGYgKCgoc3ltYm9sLWZ1bmN0aW9uICdw eXRob24tc2hlbGwtY29tcGxldGlvbi1nZXQtY29tcGxldGlvbnMpCisgICAgICAgICAgICAgJ2ln bm9yZSkKKyAgICAgICAgICAgICgoc3ltYm9sLWZ1bmN0aW9uICdweXRob24tc2hlbGwtY29tcGxl dGlvbi1uYXRpdmUtZ2V0LWNvbXBsZXRpb25zKQorICAgICAgICAgICAgICdpZ25vcmUpKQorICAg IChpbnNlcnQgImZsYSIpCisgICAgKGNvbXBsZXRpb24tYXQtcG9pbnQpCisgICAgKHNob3VsZCAo c3RyaW5nPSAicmUuc3BsaXQoJ2InLCAnYWJjJywgbWF4c3BsaXQ9MCwgZmxhZ3M9IgorICAgICAg ICAgICAgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmcgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9u KSAocG9pbnQpKSkpKQorICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgIChraWxsLWxpbmUpKQorCiso ZGVmdW4gcHl0aG9uLXRlc3RzLS1jb21wbGV0aW9uLWV4dHJhLWNvbnRleHQgKCkKKyAgIkNoZWNr IGlmIGV4dHJhIGNvbnRleHQgaXMgdXNlZCBmb3IgY29tcGxldGlvbi4iCisgIChpbnNlcnQgInJl LnNwbGl0KCdiJywgJ2FiYycsIikKKyAgKGNvbWludC1zZW5kLWlucHV0KQorICAocHl0aG9uLXRl c3RzLXNoZWxsLXdhaXQtZm9yLXByb21wdCkKKyAgKGluc2VydCAibWF4cyIpCisgIChjb21wbGV0 aW9uLWF0LXBvaW50KQorICAoc2hvdWxkIChzdHJpbmc9ICJtYXhzcGxpdD0iCisgICAgICAgICAg ICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmcgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSAocG9p bnQpKSkpKQorCisoZXJ0LWRlZnRlc3QgcHl0aG9uLXNoZWxsLWNvbXBsZXRpb24tYXQtcG9pbnQt amVkaS1jb21wbGV0ZXIgKCkKKyAgIkNoZWNrIGlmIFB5dGhvbiBzaGVsbCBjb21wbGV0aW9uIHdv cmtzIHdpdGggSmVkaS4iCisgIChza2lwLXVubGVzcyAoZXhlY3V0YWJsZS1maW5kIHB5dGhvbi10 ZXN0cy1zaGVsbC1pbnRlcnByZXRlcikpCisgIChweXRob24tdGVzdHMtd2l0aC10ZW1wLWJ1ZmZl ci13aXRoLXNoZWxsCisgICAiIgorICAgKHB5dGhvbi1zaGVsbC13aXRoLXNoZWxsLWJ1ZmZlcgor ICAgICAocHl0aG9uLXNoZWxsLWNvbXBsZXRpb24tbmF0aXZlLXR1cm4tb24pCisgICAgIChza2lw LXVubGVzcyAoc3RyaW5nPSBweXRob24tc2hlbGwtcmVhZGxpbmUtY29tcGxldGVyLWRlbGltcyAi IikpCisgICAgIChweXRob24tdGVzdHMtLWNvbXBsZXRpb24tbW9kdWxlKQorICAgICAocHl0aG9u LXRlc3RzLS1jb21wbGV0aW9uLXBhcmFtZXRlcnMpCisgICAgIChweXRob24tdGVzdHMtLWNvbXBs ZXRpb24tZXh0cmEtY29udGV4dCkpKSkKKworKGVydC1kZWZ0ZXN0IHB5dGhvbi1zaGVsbC1jb21w bGV0aW9uLWF0LXBvaW50LWlweXRob24gKCkKKyAgIkNoZWNrIGlmIFB5dGhvbiBzaGVsbCBjb21w bGV0aW9uIHdvcmtzIGZvciBJUHl0aG9uLiIKKyAgKGxldCAoKHB5dGhvbi1zaGVsbC1pbnRlcnBy ZXRlciAiaXB5dGhvbiIpCisgICAgICAgIChweXRob24tc2hlbGwtaW50ZXJwcmV0ZXItYXJncyAi LWkgLS1zaW1wbGUtcHJvbXB0IikpCisgICAgKHNraXAtdW5sZXNzIChleGVjdXRhYmxlLWZpbmQg cHl0aG9uLXNoZWxsLWludGVycHJldGVyKSkKKyAgICAocHl0aG9uLXRlc3RzLXdpdGgtdGVtcC1i dWZmZXItd2l0aC1zaGVsbAorICAgICAiIgorICAgICAocHl0aG9uLXNoZWxsLXdpdGgtc2hlbGwt YnVmZmVyCisgICAgICAgKHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLW5hdGl2ZS10dXJuLW9mZikK KyAgICAgICAocHl0aG9uLXRlc3RzLS1jb21wbGV0aW9uLW1vZHVsZSkKKyAgICAgICAocHl0aG9u LXRlc3RzLS1jb21wbGV0aW9uLXBhcmFtZXRlcnMpCisgICAgICAgKHB5dGhvbi1zaGVsbC1jb21w bGV0aW9uLW5hdGl2ZS10dXJuLW9uKQorICAgICAgIChweXRob24tdGVzdHMtLWNvbXBsZXRpb24t bW9kdWxlKQorICAgICAgIChweXRob24tdGVzdHMtLWNvbXBsZXRpb24tcGFyYW1ldGVycykKKyAg ICAgICAocHl0aG9uLXRlc3RzLS1jb21wbGV0aW9uLWV4dHJhLWNvbnRleHQpKSkpKQogCiAMCiA7 OzsgUERCIFRyYWNrIGludGVncmF0aW9uCi0tIAoyLjI1LjEKCg== --000000000000ba4f8b060fd68849--