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: Wed, 24 Jan 2024 18:07:30 +0800 Message-ID: References: <83zfx39mcy.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000d09a70060fae3b8a" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="21800"; 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 Wed Jan 24 11:08:09 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 1rSaAz-0005Pe-C0 for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 24 Jan 2024 11:08:09 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rSaAo-0008Cf-HH; Wed, 24 Jan 2024 05:07: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 1rSaAn-0008CD-0g for bug-gnu-emacs@gnu.org; Wed, 24 Jan 2024 05:07: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 1rSaAm-0001rz-ND for bug-gnu-emacs@gnu.org; Wed, 24 Jan 2024 05:07:56 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rSaAr-0004Ir-PG for bug-gnu-emacs@gnu.org; Wed, 24 Jan 2024 05:08:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Liu Hui Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 24 Jan 2024 10:08:01 +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.170609087816531 (code B ref 68559); Wed, 24 Jan 2024 10:08:01 +0000 Original-Received: (at 68559) by debbugs.gnu.org; 24 Jan 2024 10:07:58 +0000 Original-Received: from localhost ([127.0.0.1]:44487 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rSaAm-0004IY-Q0 for submit@debbugs.gnu.org; Wed, 24 Jan 2024 05:07:58 -0500 Original-Received: from mail-vs1-xe32.google.com ([2607:f8b0:4864:20::e32]:42006) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rSaAj-0004IH-DK for 68559@debbugs.gnu.org; Wed, 24 Jan 2024 05:07:54 -0500 Original-Received: by mail-vs1-xe32.google.com with SMTP id ada2fe7eead31-467010c1c72so3217653137.0 for <68559@debbugs.gnu.org>; Wed, 24 Jan 2024 02:07:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706090862; x=1706695662; 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=jyxxdWTFkRyRajIWGneJ5bO+YeSDbHKvPBr5cr3AORo=; b=jJ5PVDOhB/p1MjeP+tC1d99537B3FcdUtJVOBSWkqzwsEQWo7DaeYjIgV7SnmskDJ+ Rd3p0J8qvbxMa9lKqgimIC6dG/7m//qovvyJT8WzmwtSykMFuIYzxBzapVSCRZoBzGzU lHbqV7TyhA2ZWwmjr4ITR53pmoFg2tuC3pXWW/Lr/MICRc/H1cCV9BNFl177A6hmSKZS EE/cjFgZSAcWtlTzR/BEoRn/WypnXygW4dQqTIcrjmfjuLHhrswyIZVnMcc55KbAZU3j 3R0UOxoT82M2MmDusmfohwvDnwhCIB8Ri4FQpMHIbI6fva1+CGdXgIfSEVRfbuv1srDv j0xA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706090862; x=1706695662; 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=jyxxdWTFkRyRajIWGneJ5bO+YeSDbHKvPBr5cr3AORo=; b=wO+N9tgNESMdDmWa+nkX2zTv/8xwMpIar8pPqIcx3Z767trXTMiun8Mzdwy7SB+zWK ZPcnbyPtmUHfJvNIdCFjPZo3zwP0ruKeTH8DH8k20vWBPsB/YRlthpiTjaAE5o4gZ8ST 0veKlLmkOWmUajbwN2YlFZizDhs20jc1JNqtBB2hSNIQEtXE7cROK/Ln7UeuWkk3vNNu DEMK2vQDJU9V3pB/7/FeTR7FQ7G4qfzyuQt3t3MWIJlGYmKldzqCWmLyUrGmhph0p1+R JGO36Edbm/Fo2LANetCCIL+M8TKD4BirErTW5Mphv9Sqez5ifmF+kFHViuiLxkVDueW9 77aA== X-Gm-Message-State: AOJu0YxeuR7MHI/kAz9OA1jHHlJnvKMLNSdaLn8AfjFJveAAtiCnPOcs z851D2SZxnJVswQCn5NYUWYxyXc78LKyc3L0pwEB43WMxxoXGTs4oz+PiMqOG2moIqob+T3Q2du fQKh8a6y2yWZ7RNHWKmnYroFiOCQ= X-Google-Smtp-Source: AGHT+IGHraavSnTAR56kLxAISB9A9pi9C4p9oD/mubcnZmeRY2hBrGziRR1vjWkvXHeqg1hJyErHoP5ZV2Pq+NL61zw= X-Received: by 2002:a05:6102:3950:b0:46a:fec8:b072 with SMTP id f16-20020a056102395000b0046afec8b072mr453533vsu.23.1706090862508; Wed, 24 Jan 2024 02:07:42 -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:278771 Archived-At: --000000000000d09a70060fae3b8a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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. > > > I am not sure if Python snippets should be separated. Do other > > > language supports keep them separate? > > > > I think it allows to reduce code duplication (e.g. the IPython support > > code existing in both python-shell-completion-setup-code and > > python-shell-readline-ipython-setup-code) and make code more simple. > > It seems other languages do not contain as many code snippets as > > python.el. > > Sorry, I misunderstood that snippets meant skeletons. I agree that > python.el has long Python codes, which is not easy to maintain. Are > you proposing to separate the snippets into .py file? If it's > acceptable from the Emacs' source code management perspective, I think > that is a good approach. Yes, I'd like to at least put some flags and functions shared by python-shell-completion-native-setup and python-*-setup-code in a separate .py file. On the other hand, they are not changed frequently, so it is not in urgent need. --000000000000d09a70060fae3b8a 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_lrrmejpn0 RnJvbSBhYmVmZWMxMWQ1Mjg3NWE3NjcwM2MyNWMwOTk4YjVkNzc1NDQyYTdhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMaXUgSHVpIDxsaXVodWkxNjEwQGdtYWlsLmNvbT4KRGF0ZTog VGh1LCAxOCBKYW4gMjAyNCAxMjowMDowMCArMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEltcHJvdmUg UHl0aG9uIHNoZWxsIGNvbXBsZXRpb24gKGJ1ZyM2ODU1OSkKCiogbGlzcC9wcm9nbW9kZXMvcHl0 aG9uLmVsIChweXRob24tc2hlbGwtY29tcGxldGlvbi1zZXR1cC1jb2RlKTogRml4CnRoZSBjb21w bGV0aW9uIGNvZGUgb2YgSVB5dGhvbi4gIENoYW5nZSB0aGUgcmV0dXJuIHZhbHVlIHRvIEpTT04K c3RyaW5nIGFuZCAuLi4KKHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLWdldC1jb21wbGV0aW9ucyk6 IC4uLiBzaW1wbGlmeSBwYXJzaW5nLgooaW5mZXJpb3ItcHl0aG9uLW1vZGUpOiBVcGRhdGUgZG9j c3RyaW5nLgoocHl0aG9uLXNoZWxsLXJlYWRsaW5lLWNvbXBsZXRlcik6IE5ldyBvcHRpb24uCihw eXRob24tc2hlbGwtcmVhZGxpbmUtY29tcGxldGVyLWRlbGltcykKKHB5dGhvbi1zaGVsbC0tcmVh ZGxpbmUtamVkaS1zZXR1cC1jb2RlKQoocHl0aG9uLXNoZWxsLS1yZWFkbGluZS1pcHl0aG9uLXNl dHVwLWNvZGUpOiBOZXcgdmFyaWFibGVzLgoocHl0aG9uLXNoZWxsLWNvbXBsZXRpb24tbmF0aXZl LXNldHVwKTogU2V0dXAgYSBzdWl0YWJsZSByZWFkbGluZQpjb21wbGV0ZXIgYW5kIHNldCB0aGUg Y29tcGxldGVyIGRlbGltaXRlci4KKHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLW5hdGl2ZS1nZXQt Y29tcGxldGlvbnMpOiBDb252ZXJ0IG91dHB1dApzdHJpbmcgdG8gY29tcGxldGlvbnMgcHJvcGVy bHkuCihweXRob24tc2hlbGwtLWdldC1tdWx0aWxpbmUtaW5wdXQpCihweXRob24tc2hlbGwtLWV4 dHJhLWNvbXBsZXRpb24tY29udGV4dCkKKHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLWV4dHJhLWNv bnRleHQpOiBOZXcgZnVuY3Rpb25zLgoocHl0aG9uLXNoZWxsLWNvbXBsZXRpb24tYXQtcG9pbnQp OiBTZW5kIHRleHQgYmVnaW5uaW5nIGZyb20gdGhlIGxpbmUKc3RhcnQgaWYgdGhlIGNvbXBsZXRp b24gYmFja2VuZCBkb2VzIG5vdCBuZWVkIHdvcmQgc3BsaXR0aW5nLiAgUmVtb3ZlCnRoZSBkZXRl Y3Rpb24gb2YgaW1wb3J0IHN0YXRlbWVudCBiZWNhdXNlIGl0IGlzIG5vdCBuZWVkZWQgYW55bW9y ZS4KQ3JlYXRlIHByb3BlciBjb21wbGV0aW9uIHRhYmxlIGJhc2VkIG9uIGNvbXBsZXRpb25zIHJl dHVybmVkIGZyb20KZGlmZmVyZW50IGJhY2tlbmRzLgoKKiB0ZXN0L2xpc3AvcHJvZ21vZGVzL3B5 dGhvbi10ZXN0cy5lbCAocHl0aG9uLXRlc3RzLS1jb21wbGV0aW9uLW1vZHVsZSk6CihweXRob24t dGVzdHMtLWNvbXBsZXRpb24tcGFyYW1ldGVycyk6CihweXRob24tdGVzdHMtLWNvbXBsZXRpb24t ZXh0cmEtY29udGV4dCk6IE5ldyBoZWxwZXIgZnVuY3Rpb25zLgoocHl0aG9uLXNoZWxsLWNvbXBs ZXRpb24tYXQtcG9pbnQtamVkaS1jb21wbGV0ZXIpOgoocHl0aG9uLXNoZWxsLWNvbXBsZXRpb24t YXQtcG9pbnQtaXB5dGhvbik6IE5ldyB0ZXN0cy4KCiogZXRjL05FV1M6IEFubm91bmNlIHRoZSBj aGFuZ2UuCi0tLQogZXRjL05FV1MgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKwog bGlzcC9wcm9nbW9kZXMvcHl0aG9uLmVsICAgICAgICAgICAgfCAzMDQgKysrKysrKysrKysrKysr KysrKysrKystLS0tLQogdGVzdC9saXNwL3Byb2dtb2Rlcy9weXRob24tdGVzdHMuZWwgfCAgNzgg KysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAzMzYgaW5zZXJ0aW9ucygrKSwgNTIgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZXRjL05FV1MgYi9ldGMvTkVXUwppbmRleCAwM2I4YzNiNTE3YS4u NmZkMzM3NzI3YzUgMTAwNjQ0Ci0tLSBhL2V0Yy9ORVdTCisrKyBiL2V0Yy9ORVdTCkBAIC0xMDI5 LDYgKzEwMjksMTIgQEAgaW5zdGVhZCBvZjoKIFRoaXMgYWxsb3dzIHRoZSB1c2VyIHRvIHNwZWNp ZnkgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyB0byB0aGUgbm9uCiBpbnRlcmFjdGl2ZSBQeXRob24g aW50ZXJwcmV0ZXIgc3BlY2lmaWVkIGJ5ICdweXRob24taW50ZXJwcmV0ZXInLgogCisqKiogTmV3 IHVzZXIgb3B0aW9uICdweXRob24tc2hlbGwtcmVhZGxpbmUtY29tcGxldGVyJy4KK1RoaXMgYWxs b3dzIHRoZSB1c2VyIHRvIHNwZWNpZnkgdGhlIHJlYWRsaW5lIGNvbXBsZXRlciB1c2VkIGZvciBQ eXRob24KK3NoZWxsIGNvbXBsZXRpb24uICBUaGUgZGVmYXVsdCBpcyAnYXV0bycsIHdoaWNoIG1l YW5zIGEgc3VpdGFibGUKK2NvbXBsZXRlciB3aWxsIGJlIGNvbmZpZ3VyZWQgYXV0b21hdGljYWxs eSBhY2NvcmRpbmcgdG8gdGhlIFB5dGhvbgoraW50ZXJwcmV0ZXIuCisKICoqIHVzZS1wYWNrYWdl CiAKICsrKwpkaWZmIC0tZ2l0IGEvbGlzcC9wcm9nbW9kZXMvcHl0aG9uLmVsIGIvbGlzcC9wcm9n bW9kZXMvcHl0aG9uLmVsCmluZGV4IGZmNzk5ZTFlNjYyLi42MzQ0NWFiMGU1MCAxMDA2NDQKLS0t IGEvbGlzcC9wcm9nbW9kZXMvcHl0aG9uLmVsCisrKyBiL2xpc3AvcHJvZ21vZGVzL3B5dGhvbi5l bApAQCAtMTI4LDkgKzEyOCw5IEBACiA7OyByZWNlaXZpbmcgZXNjYXBlIHNlcXVlbmNlcyAod2l0 aCBzb21lIGxpbWl0YXRpb25zLCBpLmUuIGNvbXBsZXRpb24KIDs7IGluIGJsb2NrcyBkb2VzIG5v dCB3b3JrKS4gIFRoZSBjb2RlIGV4ZWN1dGVkIGZvciB0aGUgImZhbGxiYWNrIgogOzsgY29tcGxl dGlvbiBjYW4gYmUgZm91bmQgaW4gYHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLXNldHVwLWNvZGUn IGFuZAotOzsgYHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLXN0cmluZy1jb2RlJyB2YXJpYWJsZXMu ICBUaGVpciBkZWZhdWx0Ci07OyB2YWx1ZXMgZW5hYmxlIGNvbXBsZXRpb24gZm9yIGJvdGggQ1B5 dGhvbiBhbmQgSVB5dGhvbiwgYW5kIHByb2JhYmx5Ci07OyBhbnkgcmVhZGxpbmUgYmFzZWQgc2hl bGwgKGl0J3Mga25vd24gdG8gd29yayB3aXRoIFB5UHkpLiAgSWYgeW91cgorOzsgYHB5dGhvbi1z aGVsbC1jb21wbGV0aW9uLWdldC1jb21wbGV0aW9ucycuICBUaGVpciBkZWZhdWx0IHZhbHVlcwor OzsgZW5hYmxlIGNvbXBsZXRpb24gZm9yIGJvdGggQ1B5dGhvbiBhbmQgSVB5dGhvbiwgYW5kIHBy b2JhYmx5IGFueQorOzsgcmVhZGxpbmUgYmFzZWQgc2hlbGwgKGl0J3Mga25vd24gdG8gd29yayB3 aXRoIFB5UHkpLiAgSWYgeW91cgogOzsgUHl0aG9uIGluc3RhbGxhdGlvbiBsYWNrcyByZWFkbGlu ZSAobGlrZSBDUHl0aG9uIGZvciBXaW5kb3dzKSwKIDs7IGluc3RhbGxpbmcgcHlyZWFkbGluZSAo VVJMIGBodHRwczovL2lweXRob24ub3JnL3B5cmVhZGxpbmUuaHRtbCcpCiA7OyBzaG91bGQgc3Vm ZmljZS4gIFRvIHRyb3VibGVzaG9vdCB3aHkgeW91IGFyZSBub3QgZ2V0dGluZyBhbnkKQEAgLTM2 MDEsNyArMzYwMSw2IEBAIGluZmVyaW9yLXB5dGhvbi1tb2RlCiBgcHl0aG9uLXNoZWxsLXByb21w dC1ibG9jay1yZWdleHAnLAogYHB5dGhvbi1zaGVsbC1mb250LWxvY2stZW5hYmxlJywKIGBweXRo b24tc2hlbGwtY29tcGxldGlvbi1zZXR1cC1jb2RlJywKLWBweXRob24tc2hlbGwtY29tcGxldGlv bi1zdHJpbmctY29kZScsCiBgcHl0aG9uLWVsZG9jLXNldHVwLWNvZGUnLAogYHB5dGhvbi1mZmFw LXNldHVwLWNvZGUnIGNhbgogY3VzdG9taXplIHRoaXMgbW9kZSBmb3IgZGlmZmVyZW50IFB5dGhv biBpbnRlcnByZXRlcnMuCkBAIC00MzE5LDggKzQzMTgsOSBAQCBweXRob24tc2hlbGwtY29tcGxl dGlvbi1zZXR1cC1jb2RlCiAgICAgY29tcGxldGlvbnMgPSBbXQogICAgIGNvbXBsZXRlciA9IE5v bmUKIAorICAgIGltcG9ydCBqc29uCiAgICAgdHJ5OgotICAgICAgICBpbXBvcnQgcmVhZGxpbmUK KyAgICAgICAgaW1wb3J0IHJlYWRsaW5lLCByZQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAg IGltcG9ydCBfX2J1aWx0aW5fXwpAQCAtNDMzMSwxNiArNDMzMSwyOSBAQCBweXRob24tc2hlbGwt Y29tcGxldGlvbi1zZXR1cC1jb2RlCiAKICAgICAgICAgaXNfaXB5dGhvbiA9ICgnX19JUFlUSE9O X18nIGluIGJ1aWx0aW5zIG9yCiAgICAgICAgICAgICAgICAgICAgICAgJ19fSVBZVEhPTl9fYWN0 aXZlJyBpbiBidWlsdGlucykKLSAgICAgICAgc3BsaXRzID0gdGV4dC5zcGxpdCgpCi0gICAgICAg IGlzX21vZHVsZSA9IHNwbGl0cyBhbmQgc3BsaXRzWzBdIGluICgnZnJvbScsICdpbXBvcnQnKQot Ci0gICAgICAgIGlmIGlzX2lweXRob24gYW5kIGlzX21vZHVsZToKLSAgICAgICAgICAgIGZyb20g SVB5dGhvbi5jb3JlLmNvbXBsZXRlcmxpYiBpbXBvcnQgbW9kdWxlX2NvbXBsZXRpb24KLSAgICAg ICAgICAgIGNvbXBsZXRpb25zID0gbW9kdWxlX2NvbXBsZXRpb24odGV4dC5zdHJpcCgpKQotICAg ICAgICBlbGlmIGlzX2lweXRob24gYW5kICdfX0lQJyBpbiBidWlsdGluczoKLSAgICAgICAgICAg IGNvbXBsZXRpb25zID0gX19JUC5jb21wbGV0ZSh0ZXh0KQotICAgICAgICBlbGlmIGlzX2lweXRo b24gYW5kICdnZXRfaXB5dGhvbicgaW4gYnVpbHRpbnM6Ci0gICAgICAgICAgICBjb21wbGV0aW9u cyA9IGdldF9pcHl0aG9uKCkuQ29tcGxldGVyLmFsbF9jb21wbGV0aW9ucyh0ZXh0KQorCisgICAg ICAgIGlmIGlzX2lweXRob24gYW5kICdnZXRfaXB5dGhvbicgaW4gYnVpbHRpbnM6CisgICAgICAg ICAgICBkZWYgZmlsdGVyX2MocHJlZml4LCBjKToKKyAgICAgICAgICAgICAgICBpZiByZS5tYXRj aCgnXysoaT9bMC05XSspPyQnLCBjKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNl CisgICAgICAgICAgICAgICAgZWxpZiBjWzBdID09ICclJyBhbmQgbm90IHJlLm1hdGNoKCdbJWEt ekEtWl0rJCcsIHByZWZpeCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAg ICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgICAgIGltcG9ydCBJUHl0aG9uCisg ICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgSVB5dGhvbi52ZXJzaW9uX2luZm9b MF0gPj0gNjoKKyAgICAgICAgICAgICAgICAgICAgZnJvbSBJUHl0aG9uLmNvcmUuY29tcGxldGVy IGltcG9ydCBwcm92aXNpb25hbGNvbXBsZXRlcgorICAgICAgICAgICAgICAgICAgICB3aXRoIHBy b3Zpc2lvbmFsY29tcGxldGVyKCk6CisgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9u cyA9IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYy50ZXh0LCBjLnN0YXJ0LCBjLmVu ZCwgYy50eXBlIG9yICc/JywgYy5zaWduYXR1cmUgb3IgJyddCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZvciBjIGluIGdldF9pcHl0aG9uKCkuQ29tcGxldGVyLmNvbXBsZXRpb25zKHRl eHQsIGxlbih0ZXh0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmlsdGVyX2Mo dGV4dCwgYy50ZXh0KV0KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAg ICBwYXJ0LCBtYXRjaGVzID0gZ2V0X2lweXRob24oKS5Db21wbGV0ZXIuY29tcGxldGUobGluZV9i dWZmZXI9dGV4dCkKKyAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbnMgPSBbdGV4dCArIG1b bGVuKHBhcnQpOl0gZm9yIG0gaW4gbWF0Y2hlcyBpZiBmaWx0ZXJfYyh0ZXh0LCBtKV0KKyAgICAg ICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGVsc2U6CiAgICAg ICAgICAgICAjIFRyeSB0byByZXVzZSBjdXJyZW50IGNvbXBsZXRlci4KICAgICAgICAgICAgIGNv bXBsZXRlciA9IHJlYWRsaW5lLmdldF9jb21wbGV0ZXIoKQpAQCAtNDM2Myw3ICs0Mzc2LDcgQEAg cHl0aG9uLXNoZWxsLWNvbXBsZXRpb24tc2V0dXAtY29kZQogICAgIGZpbmFsbHk6CiAgICAgICAg IGlmIGdldGF0dHIoY29tcGxldGVyLCAnUFlUSE9OX0VMX1dSQVBQRUQnLCBGYWxzZSk6CiAgICAg ICAgICAgICBjb21wbGV0ZXIucHJpbnRfbW9kZSA9IFRydWUKLSAgICByZXR1cm4gY29tcGxldGlv bnMiCisgICAgcmV0dXJuIGpzb24uZHVtcHMoY29tcGxldGlvbnMpIgogICAiQ29kZSB1c2VkIHRv IHNldHVwIGNvbXBsZXRpb24gaW4gaW5mZXJpb3IgUHl0aG9uIHByb2Nlc3Nlcy4iCiAgIDp0eXBl ICdzdHJpbmcpCiAKQEAgLTQ0MDQsNiArNDQxNyw3OCBAQCBweXRob24tc2hlbGwtY29tcGxldGlv bi1uYXRpdmUtdHJ5LW91dHB1dC10aW1lb3V0CiAgIDp2ZXJzaW9uICIyNS4xIgogICA6dHlwZSAn ZmxvYXQpCiAKKyhkZWZjdXN0b20gcHl0aG9uLXNoZWxsLXJlYWRsaW5lLWNvbXBsZXRlciAnYXV0 bworICAiVGhlIHJlYWRsaW5lIGNvbXBsZXRlciB1c2VkIGZvciBQeXRob24gc2hlbGwgY29tcGxl dGlvbi4KK0lmIHRoZSB2YWx1ZSBpcyBub24tbmlsLCBQeXRob24gc2hlbGwgd2lsbCBzZXR1cCB0 aGUgcmVhZGxpbmUKK2NvbXBsZXRlciB1bmxlc3MgaXQgaGFzIGJlZW4gc2V0IGVsc2V3aGVyZSAo ZS5nLiBpbiB0aGUKK1BZVEhPTlNUQVJUVVAgZmlsZSkuICBCZWxvdyBhcmUgcG9zc2libGUgdmFs dWVzOgorLSBgYXV0byc6IHRoZSBjb21wbGV0ZXIgaXMgZGV0ZXJtaW5lZCBhY2NvcmRpbmcgdG8g dGhlCitpbnRlcnByZXRlci4gIFNwZWNpZmljYWxseSwgdGhlIElQeXRob24gY29tcGxldGVyLCBk ZWZpbmVkIGluCitgcHl0aG9uLXNoZWxsLS1yZWFkbGluZS1pcHl0aG9uLXNldHVwLWNvZGUnLCBp cyB1c2VkIHdoZW4gdGhlCitpbnRlcnByZXRlciBpcyBpcHl0aG9uLCBvdGhlcndpc2UgdGhlIEpl ZGkgY29tcGxldGVyIGlzIHVzZWQuCistIGEgc3RyaW5nOiBQeXRob24gY29kZSB0byBzZXR1cCB0 aGUgcmVhZGxpbmUuICBTZWUKK2BweXRob24tc2hlbGwtLXJlYWRsaW5lLWplZGktc2V0dXAtY29k ZScgZm9yIHJlZmVyZW5jZS4KKy0gYG5pbCc6IFB5dGhvbiBzaGVsbCB3aWxsIGRvIG5vdGhpbmcu CisKK0luIGFueSBjYXNlLCBpZiB0aGUgY29tcGxldGVyIGlzIG5vdCBzZXQgc3VjY2Vzc2Z1bGx5 IGluIHRoZSBlbmQsCitmYWxsYmFjayB0byB0aGUgYnVpbHQtaW4gcmxjb21wbGV0ZXIuIgorICA6 dHlwZSAnKGNob2ljZSAoY29uc3QgIDp0YWcgIkF1dG9tYXRpYyIgYXV0bykKKyAgICAgICAgICAg ICAgICAgKGNvbnN0ICA6dGFnICJObyBjb25maWd1cmF0aW9uIiBuaWwpCisgICAgICAgICAgICAg ICAgIChzdHJpbmcgOnRhZyAiUHl0aG9uIHNldHVwIGNvZGUiKSkKKyAgOnZlcnNpb24gIjMwLjEi KQorCisoZGVmdmFyIHB5dGhvbi1zaGVsbC1yZWFkbGluZS1jb21wbGV0ZXItZGVsaW1zIG5pbAor ICAiV29yZCBkZWxpbWl0ZXJzIHVzZWQgYnkgdGhlIHJlYWRsaW5lIGNvbXBsZXRlci4KK0l0IGlz IGF1dG9tYXRpY2FsbHkgc2V0IGJ5IFB5dGhvbiBzaGVsbC4iKQorCisoZGVmY29uc3QgcHl0aG9u LXNoZWxsLS1yZWFkbGluZS1qZWRpLXNldHVwLWNvZGUKKyAgIgorZGVmIF9fUFlUSE9OX0VMX3Nl dHVwX3JlYWRsaW5lX2NvbXBsZXRlcigpOgorICAgIGZyb20gamVkaS51dGlscyBpbXBvcnQgc2V0 dXBfcmVhZGxpbmUKKyAgICBzZXR1cF9yZWFkbGluZSgpIgorICAiQ29kZSB1c2VkIHRvIHNldHVw IHJlYWRsaW5lIGNvbXBsZXRlciB3aXRoIEplZGkuIikKKworKGRlZmNvbnN0IHB5dGhvbi1zaGVs bC0tcmVhZGxpbmUtaXB5dGhvbi1zZXR1cC1jb2RlCisgICIKK2RlZiBfX1BZVEhPTl9FTF9zZXR1 cF9yZWFkbGluZV9jb21wbGV0ZXIoKToKKyAgICBpbXBvcnQgcmVhZGxpbmUsIHJlLCBqc29uLCBJ UHl0aG9uCisKKyAgICBjbGFzcyBfX2lweXRob25fUkw6CisgICAgICAgIGRlZiBfX2luaXRfXyhz ZWxmLCB2KToKKyAgICAgICAgICAgIHNlbGYudmVyc2lvbiA9IHYKKworICAgICAgICBkZWYgZmls dGVyKHNlbGYsIHByZWZpeCwgYyk6CisgICAgICAgICAgICBpZiByZS5tYXRjaCgnXysoaT9bMC05 XSspPyQnLCBjKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGVs aWYgY1swXSA9PSAnJScgYW5kIG5vdCByZS5tYXRjaCgnWyVhLXpBLVpdKyQnLCBwcmVmaXgpOgor ICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKwor ICAgICAgICBkZWYgY29tcGxldGUoc2VsZiwgdGV4dCwgc3RhdGUpOgorICAgICAgICAgICAgaWYg c3RhdGUgPT0gMDoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGlm IHNlbGYudmVyc2lvbiA+PSA2OgorICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBJUHl0aG9u LmNvcmUuY29tcGxldGVyIGltcG9ydCBwcm92aXNpb25hbGNvbXBsZXRlcgorICAgICAgICAgICAg ICAgICAgICAgICAgd2l0aCBwcm92aXNpb25hbGNvbXBsZXRlcigpOgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2hlcyA9IFtqc29uLmR1bXBzKFsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgW2MudGV4dCwgYy5zdGFydCwgYy5lbmQsIGMudHlwZSBvciAnPycs IGMuc2lnbmF0dXJlIG9yICcnXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Ig YyBpbiBnZXRfaXB5dGhvbigpLkNvbXBsZXRlci5jb21wbGV0aW9ucyh0ZXh0LCBsZW4odGV4dCkp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZmlsdGVyKHRleHQsIGMu dGV4dCldKV0KKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAg ICAgIHBhcnQsIG1hdGNoZXMgPSBnZXRfaXB5dGhvbigpLkNvbXBsZXRlci5jb21wbGV0ZShsaW5l X2J1ZmZlcj10ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaGVzID0gW3Rl eHQgKyBtW2xlbihwYXJ0KTpdIGZvciBtIGluIG1hdGNoZXMKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmZpbHRlcih0ZXh0LCBtKV0KKyAgICAgICAgICAg ICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAg ICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYubWF0Y2hlc1tzdGF0ZV0KKyAg ICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25l CisKKyAgICByZWFkbGluZS5zZXRfY29tcGxldGVyKF9faXB5dGhvbl9STChJUHl0aG9uLnZlcnNp b25faW5mb1swXSkuY29tcGxldGUpCisgICAgcmVhZGxpbmUuc2V0X2NvbXBsZXRlcl9kZWxpbXMo JycpIgorICAiQ29kZSB1c2VkIHRvIHNldHVwIHJlYWRsaW5lIGNvbXBsZXRlciBmb3IgSVB5dGhv bi4iKQorCiAoZGVmdmFyIHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLW5hdGl2ZS1yZWRpcmVjdC1i dWZmZXIKICAgIiAqUHl0aG9uIGNvbXBsZXRpb25zIHJlZGlyZWN0KiIKICAgIkJ1ZmZlciB0byBi ZSB1c2VkIHRvIHJlZGlyZWN0IG91dHB1dCBvZiByZWFkbGluZSBjb21tYW5kcy4iKQpAQCAtNDQy Nyw3ICs0NTEyLDIwIEBAIHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLW5hdGl2ZS10cnkKIChkZWZ1 biBweXRob24tc2hlbGwtY29tcGxldGlvbi1uYXRpdmUtc2V0dXAgKCkKICAgIlRyeSB0byBzZXR1 cCBuYXRpdmUgY29tcGxldGlvbiwgcmV0dXJuIG5vbi1uaWwgb24gc3VjY2Vzcy4iCiAgIChsZXQq ICgocHJvY2VzcyAocHl0aG9uLXNoZWxsLWdldC1wcm9jZXNzKSkKLSAgICAgICAgIChvdXRwdXQg KHB5dGhvbi1zaGVsbC1zZW5kLXN0cmluZy1uby1vdXRwdXQgIgorICAgICAgICAgKGNvbXBsZXRl ciAocGNhc2UgcHl0aG9uLXNoZWxsLXJlYWRsaW5lLWNvbXBsZXRlcgorICAgICAgICAgICAgICAg ICAgICAgICgnYXV0bworICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHN0cmluZy1tYXRjaC1w ICJpcHl0aG9uWzIzXT9cXCciIHB5dGhvbi1zaGVsbC1pbnRlcnByZXRlcikKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIHB5dGhvbi1zaGVsbC0tcmVhZGxpbmUtaXB5dGhvbi1zZXR1cC1jb2Rl CisgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uLXNoZWxsLS1yZWFkbGluZS1qZWRpLXNl dHVwLWNvZGUpKQorICAgICAgICAgICAgICAgICAgICAgICgocHJlZCBzdHJpbmdwKSBweXRob24t c2hlbGwtcmVhZGxpbmUtY29tcGxldGVyKQorICAgICAgICAgICAgICAgICAgICAgIChfICIiKSkp CisgICAgICAgICAob3V0cHV0IChweXRob24tc2hlbGwtc2VuZC1zdHJpbmctbm8tb3V0cHV0Cisg ICAgICAgICAgICAgICAgICAoY29uY2F0ICIKK3RyeToKKyAgICBkZWwgX19QWVRIT05fRUxfc2V0 dXBfcmVhZGxpbmVfY29tcGxldGVyCitleGNlcHQ6CisgICAgcGFzcworIiBjb21wbGV0ZXIgIgog ZGVmIF9fUFlUSE9OX0VMX25hdGl2ZV9jb21wbGV0aW9uX3NldHVwKCk6CiAgICAgdHJ5OgogICAg ICAgICBpbXBvcnQgcmVhZGxpbmUKQEAgLTQ1MDAsMTEgKzQ1OTgsMjMgQEAgcHl0aG9uLXNoZWxs LWNvbXBsZXRpb24tbmF0aXZlLXNldHVwCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb24KIAorICAgICAgICBkZWYgaXNfcmxjb21wbGV0 ZXIoY29tcGxldGVyKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBjb21w bGV0ZXIuX19zZWxmX18uX19tb2R1bGVfXyA9PSAncmxjb21wbGV0ZXInOgorICAgICAgICAgICAg ICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg ICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAg ICAgICAgICAgICByZXR1cm4gRmFsc2UKKwogICAgICAgICBjb21wbGV0ZXIgPSByZWFkbGluZS5n ZXRfY29tcGxldGVyKCkKIAotICAgICAgICBpZiBub3QgY29tcGxldGVyOgotICAgICAgICAgICAg IyBVc2VkIGFzIGxhc3QgcmVzb3J0IHRvIGF2b2lkIGJyZWFraW5nIGN1c3RvbWl6YXRpb25zLgot ICAgICAgICAgICAgaW1wb3J0IHJsY29tcGxldGVyCisgICAgICAgIGlmIG5vdCBjb21wbGV0ZXIg b3IgaXNfcmxjb21wbGV0ZXIoY29tcGxldGVyKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAg ICAgICAgICBfX1BZVEhPTl9FTF9zZXR1cF9yZWFkbGluZV9jb21wbGV0ZXIoKQorICAgICAgICAg ICAgZXhjZXB0OgorICAgICAgICAgICAgICAgICMgVXNlZCBhcyBsYXN0IHJlc29ydCB0byBhdm9p ZCBicmVha2luZyBjdXN0b21pemF0aW9ucy4KKyAgICAgICAgICAgICAgICBpbXBvcnQgcmxjb21w bGV0ZXIKICAgICAgICAgICAgIGNvbXBsZXRlciA9IHJlYWRsaW5lLmdldF9jb21wbGV0ZXIoKQog CiAgICAgICAgIGlmIGNvbXBsZXRlciBhbmQgbm90IGdldGF0dHIoY29tcGxldGVyLCAnUFlUSE9O X0VMX1dSQVBQRUQnLCBGYWxzZSk6CkBAIC00NTM5LDkgKzQ2NDksMTMgQEAgcHl0aG9uLXNoZWxs LWNvbXBsZXRpb24tbmF0aXZlLXNldHVwCiAgICAgICAgIHByaW50ICgncHl0aG9uLmVsOiBuYXRp dmUgY29tcGxldGlvbiBzZXR1cCBmYWlsZWQsICVzOiAlcycKICAgICAgICAgICAgICAgICUgc3lz LmV4Y19pbmZvKClbOjJdKQogCi1fX1BZVEhPTl9FTF9uYXRpdmVfY29tcGxldGlvbl9zZXR1cCgp IiBwcm9jZXNzKSkpCitfX1BZVEhPTl9FTF9uYXRpdmVfY29tcGxldGlvbl9zZXR1cCgpIikgcHJv Y2VzcykpKQogICAgICh3aGVuIChzdHJpbmctbWF0Y2gtcCAicHl0aG9uXFwuZWw6IG5hdGl2ZSBj b21wbGV0aW9uIHNldHVwIGxvYWRlZCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0 KQorICAgICAgKHNldHEtbG9jYWwgcHl0aG9uLXNoZWxsLXJlYWRsaW5lLWNvbXBsZXRlci1kZWxp bXMKKyAgICAgICAgICAgICAgICAgIChzdHJpbmctdHJpbS1yaWdodAorICAgICAgICAgICAgICAg ICAgIChweXRob24tc2hlbGwtc2VuZC1zdHJpbmctbm8tb3V0cHV0CisgICAgICAgICAgICAgICAg ICAgICJpbXBvcnQgcmVhZGxpbmU7IHByaW50KHJlYWRsaW5lLmdldF9jb21wbGV0ZXJfZGVsaW1z KCkpIikpKQogICAgICAgKHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLW5hdGl2ZS10cnkpKSkpCiAK IChkZWZ1biBweXRob24tc2hlbGwtY29tcGxldGlvbi1uYXRpdmUtdHVybi1vZmYgKCZvcHRpb25h bCBtc2cpCkBAIC00NjA5LDYgKzQ3MjMsOCBAQCBweXRob24tc2hlbGwtY29tcGxldGlvbi1uYXRp dmUtZ2V0LWNvbXBsZXRpb25zCiAgICAgKGxldCogKChvcmlnaW5hbC1maWx0ZXItZm4gKHByb2Nl c3MtZmlsdGVyIHByb2Nlc3MpKQogICAgICAgICAgICAocmVkaXJlY3QtYnVmZmVyIChnZXQtYnVm ZmVyLWNyZWF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweXRob24tc2hlbGwtY29t cGxldGlvbi1uYXRpdmUtcmVkaXJlY3QtYnVmZmVyKSkKKyAgICAgICAgICAgKHNlcCAoaWYgKHN0 cmluZz0gcHl0aG9uLXNoZWxsLXJlYWRsaW5lLWNvbXBsZXRlci1kZWxpbXMgIiIpCisgICAgICAg ICAgICAgICAgICAgICJbXG5ccl0rIiAiWyBcZlx0XG5cclx2KCldKyIpKQogICAgICAgICAgICAo dHJpZ2dlciAiXHQiKQogICAgICAgICAgICAobmV3LWlucHV0IChjb25jYXQgaW5wdXQgdHJpZ2dl cikpCiAgICAgICAgICAgIChpbnB1dC1sZW5ndGgKQEAgLTQ2NTEsMjggKzQ3NjcsNzIgQEAgcHl0 aG9uLXNoZWxsLWNvbXBsZXRpb24tbmF0aXZlLWdldC1jb21wbGV0aW9ucwogICAgICAgICAgICAg ICAgICAgICAgcHJvY2VzcyBweXRob24tc2hlbGwtY29tcGxldGlvbi1uYXRpdmUtb3V0cHV0LXRp bWVvdXQKICAgICAgICAgICAgICAgICAgICAgIGNvbWludC1yZWRpcmVjdC1maW5pc2hlZC1yZWdl eHApCiAgICAgICAgICAgICAgICAgKHJlLXNlYXJjaC1iYWNrd2FyZCAiMF9fZHVtbXlfY29tcGxl dGlvbl9fIiBuaWwgdCkKLSAgICAgICAgICAgICAgICAoY2wtcmVtb3ZlLWR1cGxpY2F0ZXMKLSAg ICAgICAgICAgICAgICAgKHNwbGl0LXN0cmluZwotICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1z dWJzdHJpbmctbm8tcHJvcGVydGllcwotICAgICAgICAgICAgICAgICAgIChsaW5lLWJlZ2lubmlu Zy1wb3NpdGlvbikgKHBvaW50LW1pbikpCi0gICAgICAgICAgICAgICAgICAiWyBcZlx0XG5cclx2 KCldKyIgdCkKLSAgICAgICAgICAgICAgICAgOnRlc3QgIydzdHJpbmc9KSkpKQorICAgICAgICAg ICAgICAgIChsZXQgKChzdHIgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcworICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikgKHBvaW50LW1p bikpKSkKKyAgICAgICAgICAgICAgICAgIChpZiAoc3RyaW5nPSAiWyIgKHN1YnN0cmluZyBzdHIg MCAxKSkKKyAgICAgICAgICAgICAgICAgICAgICAoY29uZGl0aW9uLWNhc2UgbmlsCisgICAgICAg ICAgICAgICAgICAgICAgICAgIChweXRob24tLXBhcnNlLWpzb24tYXJyYXkgc3RyKQorICAgICAg ICAgICAgICAgICAgICAgICAgKHQgKGNsLXJlbW92ZS1kdXBsaWNhdGVzIChzcGxpdC1zdHJpbmcg c3RyIHNlcCB0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDp0ZXN0ICMnc3RyaW5nPSkpKQorICAgICAgICAgICAgICAgICAgICAoY2wtcmVtb3ZlLWR1 cGxpY2F0ZXMgKHNwbGl0LXN0cmluZyBzdHIgc2VwIHQpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6dGVzdCAjJ3N0cmluZz0pKSkpKSkKICAgICAgICAgKHNldC1w cm9jZXNzLWZpbHRlciBwcm9jZXNzIG9yaWdpbmFsLWZpbHRlci1mbikpKSkpCiAKIChkZWZ1biBw eXRob24tc2hlbGwtY29tcGxldGlvbi1nZXQtY29tcGxldGlvbnMgKHByb2Nlc3MgaW5wdXQpCiAg ICJHZXQgY29tcGxldGlvbnMgb2YgSU5QVVQgdXNpbmcgUFJPQ0VTUy4iCiAgICh3aXRoLWN1cnJl bnQtYnVmZmVyIChwcm9jZXNzLWJ1ZmZlciBwcm9jZXNzKQotICAgIChsZXQgKChjb21wbGV0aW9u cwotICAgICAgICAgICAocHl0aG9uLXV0aWwtc3RyaXAtc3RyaW5nCi0gICAgICAgICAgICAocHl0 aG9uLXNoZWxsLXNlbmQtc3RyaW5nLW5vLW91dHB1dAotICAgICAgICAgICAgIChmb3JtYXQKLSAg ICAgICAgICAgICAgIiVzXG5wcmludCgnOycuam9pbihfX1BZVEhPTl9FTF9nZXRfY29tcGxldGlv bnMoJXMpKSkiCisgICAgKHB5dGhvbi0tcGFyc2UtanNvbi1hcnJheQorICAgICAocHl0aG9uLXNo ZWxsLXNlbmQtc3RyaW5nLW5vLW91dHB1dAorICAgICAgKGZvcm1hdCAiJXNcbnByaW50KF9fUFlU SE9OX0VMX2dldF9jb21wbGV0aW9ucyglcykpIgogICAgICAgICAgICAgICBweXRob24tc2hlbGwt Y29tcGxldGlvbi1zZXR1cC1jb2RlCiAgICAgICAgICAgICAgIChweXRob24tc2hlbGwtLWVuY29k ZS1zdHJpbmcgaW5wdXQpKQotICAgICAgICAgICAgIHByb2Nlc3MpKSkpCi0gICAgICAod2hlbiAo PiAobGVuZ3RoIGNvbXBsZXRpb25zKSAyKQotICAgICAgICAoc3BsaXQtc3RyaW5nIGNvbXBsZXRp b25zCi0gICAgICAgICAgICAgICAgICAgICAgIl4nXFx8XlwiXFx8O1xcfCckXFx8XCIkIiB0KSkp KSkKKyAgICAgIHByb2Nlc3MpKSkpCisKKyhkZWZ1biBweXRob24tc2hlbGwtLWdldC1tdWx0aWxp bmUtaW5wdXQgKCkKKyAgIlJldHVybiBsaW5lcyBhdCBhIG11bHRpLWxpbmUgaW5wdXQgaW4gUHl0 aG9uIHNoZWxsLiIKKyAgKHNhdmUtZXhjdXJzaW9uCisgICAgKGxldCAoKHAgKHBvaW50KSkgbGlu ZXMpCisgICAgICAod2hlbiAocHJvZ24KKyAgICAgICAgICAgICAgKGJlZ2lubmluZy1vZi1saW5l KQorICAgICAgICAgICAgICAobG9va2luZy1iYWNrIHB5dGhvbi1zaGVsbC1wcm9tcHQtYmxvY2st cmVnZXhwIChwb3MtYm9sKSkpCisgICAgICAgIChwdXNoIChidWZmZXItc3Vic3RyaW5nLW5vLXBy b3BlcnRpZXMgKHBvaW50KSBwKSBsaW5lcykKKyAgICAgICAgKHdoaWxlIChwcm9nbiAoY29taW50 LXByZXZpb3VzLXByb21wdCAxKQorICAgICAgICAgICAgICAgICAgICAgIChsb29raW5nLWJhY2sg cHl0aG9uLXNoZWxsLXByb21wdC1ibG9jay1yZWdleHAgKHBvcy1ib2wpKSkKKyAgICAgICAgICAo cHVzaCAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIChwb2ludCkgKHBvcy1lb2wpKSBs aW5lcykpCisgICAgICAgIChwdXNoIChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgKHBv aW50KSAocG9zLWVvbCkpIGxpbmVzKSkKKyAgICAgIGxpbmVzKSkpCisKKyhkZWZ1biBweXRob24t c2hlbGwtLWV4dHJhLWNvbXBsZXRpb24tY29udGV4dCAoKQorICAiR2V0IGV4dHJhIGNvbXBsZXRp b24gY29udGV4dCBvZiBjdXJyZW50IGlucHV0IGluIFB5dGhvbiBzaGVsbC4iCisgIChsZXQgKChs aW5lcyAocHl0aG9uLXNoZWxsLS1nZXQtbXVsdGlsaW5lLWlucHV0KSkKKyAgICAgICAgKHB5dGhv bi1pbmRlbnQtZ3Vlc3MtaW5kZW50LW9mZnNldCBuaWwpKQorICAgICh3aGVuIChub3QgKHplcm9w IChsZW5ndGggbGluZXMpKSkKKyAgICAgICh3aXRoLXRlbXAtYnVmZmVyCisgICAgICAgIChkZWxh eS1tb2RlLWhvb2tzCisgICAgICAgICAgKGluc2VydCAoc3RyaW5nLWpvaW4gbGluZXMgIlxuIikp CisgICAgICAgICAgKHB5dGhvbi1tb2RlKQorICAgICAgICAgIChweXRob24tc2hlbGwtY29tcGxl dGlvbi1leHRyYS1jb250ZXh0KSkpKSkpCisKKyhkZWZ1biBweXRob24tc2hlbGwtY29tcGxldGlv bi1leHRyYS1jb250ZXh0ICgmb3B0aW9uYWwgcG9zKQorICAiR2V0IGV4dHJhIGNvbXBsZXRpb24g Y29udGV4dCBhdCBwb3NpdGlvbiBQT1MgaW4gUHl0aG9uIGJ1ZmZlci4KK0lmIG9wdGlvbmFsIGFy Z3VtZW50IFBPUyBpcyBuaWwsIHVzZSBjdXJyZW50IHBvc2l0aW9uLgorCitSZWFkbGluZSBjb21w bGV0ZXJzIGNvdWxkIHVzZSBjdXJyZW50IGxpbmUgYXMgdGhlIGNvbXBsZXRpb24KK2NvbnRleHQs IHdoaWNoIG1heSBiZSBpbnN1ZmZpY2llbnQuICBJbiB0aGlzIGZ1bmN0aW9uLCBleHRyYQorY29u dGV4dCAoZS5nLiBtdWx0aS1saW5lIGZ1bmN0aW9uIGNhbGwpIGlzIGZvdW5kIGFuZCByZWZvcm1h dHRlZAorYXMgb25lIGxpbmUsIHdoaWNoIGlzIHJlcXVpcmVkIGJ5IG5hdGl2ZSBjb21wbGV0aW9u LiIKKyAgKGxldCAoYm91bmQgcCkKKyAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgIChhbmQgcG9z IChnb3RvLWNoYXIgcG9zKSkKKyAgICAgIChzZXRxIGJvdW5kIChwb3MtYm9sKSkKKyAgICAgIChw eXRob24tbmF2LXVwLWxpc3QgLTEpCisgICAgICAod2hlbiAoYW5kICg8IChwb2ludCkgYm91bmQp CisgICAgICAgICAgICAgICAgIChsb29raW5nLWJhY2sKKyAgICAgICAgICAgICAgICAgIChweXRo b24tcnggKCsgKG9yICIuIiBzeW1ib2wtbmFtZSkpKSAocG9zLWJvbCkgdCkpCisgICAgICAgIChz ZXRxIHAgKG1hdGNoLWJlZ2lubmluZyAwKSkpKQorICAgICh3aGVuIHAKKyAgICAgIChyZXBsYWNl LXJlZ2V4cC1pbi1zdHJpbmcKKyAgICAgICAiXG5bIFx0XSoiICIiIChidWZmZXItc3Vic3RyaW5n LW5vLXByb3BlcnRpZXMgcCAoMS0gYm91bmQpKSkpKSkKIAogKGRlZnZhci1sb2NhbCBweXRob24t c2hlbGwtLWNhcGYtY2FjaGUgbmlsCiAgICJWYXJpYWJsZSB0byBzdG9yZSBjYWNoZWQgY29tcGxl dGlvbnMgYW5kIGludmFsaWRhdGlvbiBrZXlzLiIpCkBAIC00Njg3LDIxICs0ODQ3LDIxIEBAIHB5 dGhvbi1zaGVsbC1jb21wbGV0aW9uLWF0LXBvaW50CiAgICAgICAgICAgICAgICAgICAgICAgICAg OzsgV29ya2luZyBvbiBhIHNoZWxsIGJ1ZmZlcjogdXNlIHByb21wdCBlbmQuCiAgICAgICAgICAg ICAgICAgICAgICAgICAgKGNkciAocHl0aG9uLXV0aWwtY29taW50LWxhc3QtcHJvbXB0KSkKICAg ICAgICAgICAgICAgICAgICAgICAgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkpCi0gICAgICAg ICAoaW1wb3J0LXN0YXRlbWVudAotICAgICAgICAgICh3aGVuIChzdHJpbmctbWF0Y2gtcAotICAg ICAgICAgICAgICAgICAocnggKCogc3BhY2UpIHdvcmQtc3RhcnQgKG9yICJmcm9tIiAiaW1wb3J0 Iikgd29yZC1lbmQgc3BhY2UpCi0gICAgICAgICAgICAgICAgIChidWZmZXItc3Vic3RyaW5nLW5v LXByb3BlcnRpZXMgbGluZS1zdGFydCAocG9pbnQpKSkKLSAgICAgICAgICAgIChidWZmZXItc3Vi c3RyaW5nLW5vLXByb3BlcnRpZXMgbGluZS1zdGFydCAocG9pbnQpKSkpCisgICAgICAgICAobm8t ZGVsaW1zICh3aXRoLWN1cnJlbnQtYnVmZmVyIChwcm9jZXNzLWJ1ZmZlciBwcm9jZXNzKQorICAg ICAgICAgICAgICAgICAgICAgIChpZiBweXRob24tc2hlbGwtY29tcGxldGlvbi1uYXRpdmUtZW5h YmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmc9IHB5dGhvbi1zaGVsbC1yZWFk bGluZS1jb21wbGV0ZXItZGVsaW1zICIiKQorICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmlu Zy1tYXRjaC1wICJpcHl0aG9uWzIzXT9cXCciIHB5dGhvbi1zaGVsbC1pbnRlcnByZXRlcikpKSkK ICAgICAgICAgIChzdGFydAogICAgICAgICAgIChpZiAoPCAocG9pbnQpIGxpbmUtc3RhcnQpCiAg ICAgICAgICAgICAgIChwb2ludCkKICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgotICAgICAg ICAgICAgICAoaWYgKG5vdCAocmUtc2VhcmNoLWJhY2t3YXJkCi0gICAgICAgICAgICAgICAgICAg ICAgICAocHl0aG9uLXJ4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHdoaXRlc3BhY2Ug b3Blbi1wYXJlbiBjbG9zZS1wYXJlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJp bmctZGVsaW1pdGVyIHNpbXBsZS1vcGVyYXRvcikpCi0gICAgICAgICAgICAgICAgICAgICAgICBs aW5lLXN0YXJ0Ci0gICAgICAgICAgICAgICAgICAgICAgICB0IDEpKQorICAgICAgICAgICAgICAo aWYgKG9yIG5vLWRlbGltcworICAgICAgICAgICAgICAgICAgICAgIChub3QgKHJlLXNlYXJjaC1i YWNrd2FyZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChweXRob24tcngKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKG9yIHdoaXRlc3BhY2Ugb3Blbi1wYXJlbiBjbG9zZS1wYXJl bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nLWRlbGltaXRlciBzaW1w bGUtb3BlcmF0b3IpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUtc3RhcnQKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0IDEpKSkKICAgICAgICAgICAgICAgICAgIGxpbmUt c3RhcnQKICAgICAgICAgICAgICAgICAoZm9yd2FyZC1jaGFyIChsZW5ndGggKG1hdGNoLXN0cmlu Zy1uby1wcm9wZXJ0aWVzIDApKSkKICAgICAgICAgICAgICAgICAocG9pbnQpKSkpKQpAQCAtNDc0 MSwxOCArNDkwMSw1OCBAQCBweXRob24tc2hlbGwtY29tcGxldGlvbi1hdC1wb2ludAogICAgICAg ICAgICAgICAgICAgKHQgIydweXRob24tc2hlbGwtY29tcGxldGlvbi1uYXRpdmUtZ2V0LWNvbXBs ZXRpb25zKSkpKQogICAgICAgICAgKHByZXYtcHJvbXB0IChjYXIgcHl0aG9uLXNoZWxsLS1jYXBm LWNhY2hlKSkKICAgICAgICAgIChyZSAob3IgKGNhZHIgcHl0aG9uLXNoZWxsLS1jYXBmLWNhY2hl KSByZWdleHAtdW5tYXRjaGFibGUpKQotICAgICAgICAgKHByZWZpeCAoYnVmZmVyLXN1YnN0cmlu Zy1uby1wcm9wZXJ0aWVzIHN0YXJ0IGVuZCkpKQorICAgICAgICAgKHByZWZpeCAoYnVmZmVyLXN1 YnN0cmluZy1uby1wcm9wZXJ0aWVzIHN0YXJ0IGVuZCkpCisgICAgICAgICAocHJlZml4LW9mZnNl dCAwKQorICAgICAgICAgKGV4dHJhLWNvbnRleHQgKHdoZW4gbm8tZGVsaW1zCisgICAgICAgICAg ICAgICAgICAgICAgICAgIChpZiBpcy1zaGVsbC1idWZmZXIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChweXRob24tc2hlbGwtLWV4dHJhLWNvbXBsZXRpb24tY29udGV4dCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAocHl0aG9uLXNoZWxsLWNvbXBsZXRpb24tZXh0cmEtY29u dGV4dCkpKSkKKyAgICAgICAgIChleHRyYS1vZmZzZXQgKGxlbmd0aCBleHRyYS1jb250ZXh0KSkp CisgICAgKHVubGVzcyAoemVyb3AgZXh0cmEtb2Zmc2V0KQorICAgICAgKHNldHEgcHJlZml4IChj b25jYXQgZXh0cmEtY29udGV4dCBwcmVmaXgpKSkKICAgICA7OyBUbyBpbnZhbGlkYXRlIHRoZSBj YWNoZSwgd2UgY2hlY2sgaWYgdGhlIHByb21wdCBwb3NpdGlvbiBvciB0aGUKICAgICA7OyBjb21w bGV0aW9uIHByZWZpeCBjaGFuZ2VkLgogICAgICh1bmxlc3MgKGFuZCAoZXF1YWwgcHJldi1wcm9t cHQgKGNhciBwcm9tcHQtYm91bmRhcmllcykpCi0gICAgICAgICAgICAgICAgIChzdHJpbmctbWF0 Y2ggcmUgcHJlZml4KSkKKyAgICAgICAgICAgICAgICAgKHN0cmluZy1tYXRjaCByZSBwcmVmaXgp CisgICAgICAgICAgICAgICAgIChzZXRxIHByZWZpeC1vZmZzZXQgKC0gKGxlbmd0aCBwcmVmaXgp IChtYXRjaC1lbmQgMSkpKSkKICAgICAgIChzZXRxIHB5dGhvbi1zaGVsbC0tY2FwZi1jYWNoZQog ICAgICAgICAgICAgYCgsKGNhciBwcm9tcHQtYm91bmRhcmllcykKICAgICAgICAgICAgICAgLChp ZiAoc3RyaW5nLWVtcHR5LXAgcHJlZml4KQogICAgICAgICAgICAgICAgICAgIHJlZ2V4cC11bm1h dGNoYWJsZQotICAgICAgICAgICAgICAgICAoY29uY2F0ICJcXGAiIChyZWdleHAtcXVvdGUgcHJl Zml4KSAiXFwoPzpcXHN3XFx8XFxzX1xcKSpcXCciKSkKLSAgICAgICAgICAgICAgLEAoZnVuY2Fs bCBjb21wbGV0aW9uLWZuIHByb2Nlc3MgKG9yIGltcG9ydC1zdGF0ZW1lbnQgcHJlZml4KSkpKSkK LSAgICAobGlzdCBzdGFydCBlbmQgKGNkZHIgcHl0aG9uLXNoZWxsLS1jYXBmLWNhY2hlKSkpKQor ICAgICAgICAgICAgICAgICAoY29uY2F0ICJcXGBcXCgiIChyZWdleHAtcXVvdGUgcHJlZml4KSAi XFwpXFwoPzpcXHN3XFx8XFxzX1xcKSpcXCciKSkKKyAgICAgICAgICAgICAgLEAoZnVuY2FsbCBj b21wbGV0aW9uLWZuIHByb2Nlc3MgcHJlZml4KSkpKQorICAgIChsZXQgKChjYW5kcyAoY2RkciBw eXRob24tc2hlbGwtLWNhcGYtY2FjaGUpKSkKKyAgICAgIChjb25kCisgICAgICAgKChzdHJpbmdw IChjYXIgY2FuZHMpKQorICAgICAgICAoaWYgbm8tZGVsaW1zCisgICAgICAgICAgICA7OyBSZWR1 Y2UgY29tcGxldGlvbiBjYW5kaWRhdGVzIGR1ZSB0byBsb25nIHByZWZpeC4KKyAgICAgICAgICAg IChpZi1sZXQgKChMcCAobGVuZ3RoIHByZWZpeCkpCisgICAgICAgICAgICAgICAgICAgICAoKHN0 cmluZy1tYXRjaCAiXFwoXFxzd1xcfFxcc19cXCkrXFwnIiBwcmVmaXgpKQorICAgICAgICAgICAg ICAgICAgICAgKEwgKG1hdGNoLWJlZ2lubmluZyAwKSkpCisgICAgICAgICAgICAgICAgOzsgSWYg ZXh0cmEtb2Zmc2V0IGlzIG5vdCB6ZXJvOgorICAgICAgICAgICAgICAgIDs7ICAgICAgICAgICAg ICAgICAgc3RhcnQgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIDs7IG8tLS0tLS0t LS0tLS0tLS0tLS1vLS0tLS0tLS0tby0tLS0tLS1vCisgICAgICAgICAgICAgICAgOzsgfDwtIGV4 dHJhLW9mZnNldCAtPnwKKyAgICAgICAgICAgICAgICA7OyB8PC0tLS0tLS0tLS0tIEwgLS0tLS0t LS0tLS0tPnwKKyAgICAgICAgICAgICAgICA7OyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3 LXN0YXJ0CisgICAgICAgICAgICAgICAgKGxpc3QgKCsgc3RhcnQgTCAoLSBleHRyYS1vZmZzZXQp KSBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAobWFwY2FyIChsYW1iZGEgKHMpIChzdWJzdHJp bmcgcyBMKSkgY2FuZHMpKQorICAgICAgICAgICAgICAobGlzdCBlbmQgZW5kIChtYXBjYXIgKGxh bWJkYSAocykgKHN1YnN0cmluZyBzIExwKSkgY2FuZHMpKSkKKyAgICAgICAgICAobGlzdCBzdGFy dCBlbmQgY2FuZHMpKSkKKyAgICAgICA7OyBweXRob24tc2hlbGwtY29tcGxldGlvbigtbmF0aXZl KS1nZXQtY29tcGxldGlvbnMgbWF5IHByb2R1Y2UKKyAgICAgICA7OyBhIGxpc3Qgb2YgKHRleHQg c3RhcnQgZW5kIHR5cGUgc2lnbmF0dXJlKSBmb3IgY29tcGxldGlvbi4KKyAgICAgICA7OyBTZWUg YHB5dGhvbi1zaGVsbC1yZWFkbGluZS1pcHl0aG9uLXNldHVwLWNvZGUnIGFuZAorICAgICAgIDs7 IGBweXRob24tc2hlbGwtY29tcGxldGlvbi1zZXR1cC1jb2RlJy4KKyAgICAgICAoKGNvbnNwIChj YXIgY2FuZHMpKQorICAgICAgICAobGlzdCAoKyBzdGFydCAobnRoIDEgKGNhciBjYW5kcykpICgt IGV4dHJhLW9mZnNldCkpCisgICAgICAgICAgICAgIDs7IENhbmRpZGF0ZXMgbWF5IGJlIGNhY2hl ZCwgc28gdGhlIGVuZCBwb3NpdGlvbiBzaG91bGQKKyAgICAgICAgICAgICAgOzsgYmUgYWRqdXN0 ZWQgYWNjb3JkaW5nIHRvIGN1cnJlbnQgY29tcGxldGlvbiBwcmVmaXguCisgICAgICAgICAgICAg ICgrIHN0YXJ0IChudGggMiAoY2FyIGNhbmRzKSkgKC0gZXh0cmEtb2Zmc2V0KSBwcmVmaXgtb2Zm c2V0KQorICAgICAgICAgICAgICBjYW5kcworICAgICAgICAgICAgICA6YW5ub3RhdGlvbi1mdW5j dGlvbgorICAgICAgICAgICAgICAobGFtYmRhIChjKSAoY29uY2F0ICIgIiAobnRoIDMgKGFzc29j IGMgY2FuZHMpKSkpCisgICAgICAgICAgICAgIDpjb21wYW55LWRvY3NpZworICAgICAgICAgICAg ICAobGFtYmRhIChjKSAobnRoIDQgKGFzc29jIGMgY2FuZHMpKSkpKSkpKSkKIAogKGRlZmluZS1v YnNvbGV0ZS1mdW5jdGlvbi1hbGlhcwogICAncHl0aG9uLXNoZWxsLWNvbXBsZXRpb24tY29tcGxl dGUtYXQtcG9pbnQKZGlmZiAtLWdpdCBhL3Rlc3QvbGlzcC9wcm9nbW9kZXMvcHl0aG9uLXRlc3Rz LmVsIGIvdGVzdC9saXNwL3Byb2dtb2Rlcy9weXRob24tdGVzdHMuZWwKaW5kZXggOTdmZmQ1ZmUy MGYuLmFlMjNmZjhlYmUyIDEwMDY0NAotLS0gYS90ZXN0L2xpc3AvcHJvZ21vZGVzL3B5dGhvbi10 ZXN0cy5lbAorKysgYi90ZXN0L2xpc3AvcHJvZ21vZGVzL3B5dGhvbi10ZXN0cy5lbApAQCAtNDc4 Nyw2ICs0Nzg3LDg0IEBAIHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLWF0LXBvaW50LW5hdGl2ZS0x CiAgICAgIChlbmQtb2YtbGluZSAwKQogICAgICAoc2hvdWxkLW5vdCAobnRoIDIgKHB5dGhvbi1z aGVsbC1jb21wbGV0aW9uLWF0LXBvaW50KSkpKSkpCiAKKyhkZWZ1biBweXRob24tdGVzdHMtLWNv bXBsZXRpb24tbW9kdWxlICgpCisgICJDaGVjayBpZiBtb2R1bGVzIGNhbiBiZSBjb21wbGV0ZWQg aW4gUHl0aG9uIHNoZWxsLiIKKyAgKGluc2VydCAiaW1wb3J0IGRhdGV0IikKKyAgKGNvbXBsZXRp b24tYXQtcG9pbnQpCisgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgKHNob3VsZCAobG9va2luZy1h dC1wICJpbXBvcnQgZGF0ZXRpbWUiKSkKKyAgKGtpbGwtbGluZSkKKyAgKGluc2VydCAiZnJvbSBk YXRldCIpCisgIChjb21wbGV0aW9uLWF0LXBvaW50KQorICAoYmVnaW5uaW5nLW9mLWxpbmUpCisg IChzaG91bGQgKGxvb2tpbmctYXQtcCAiZnJvbSBkYXRldGltZSIpKQorICAoZW5kLW9mLWxpbmUp CisgIChpbnNlcnQgIiBpbXBvcnQgdGltZWQiKQorICAoY29tcGxldGlvbi1hdC1wb2ludCkKKyAg KGJlZ2lubmluZy1vZi1saW5lKQorICAoc2hvdWxkIChsb29raW5nLWF0LXAgImZyb20gZGF0ZXRp bWUgaW1wb3J0IHRpbWVkZWx0YSIpKQorICAoa2lsbC1saW5lKSkKKworKGRlZnVuIHB5dGhvbi10 ZXN0cy0tY29tcGxldGlvbi1wYXJhbWV0ZXJzICgpCisgICJDaGVjayBpZiBwYXJhbWV0ZXJzIGNh biBiZSBjb21wbGV0ZWQgaW4gUHl0aG9uIHNoZWxsLiIKKyAgKGluc2VydCAiaW1wb3J0IHJlIikK KyAgKGNvbWludC1zZW5kLWlucHV0KQorICAocHl0aG9uLXRlc3RzLXNoZWxsLXdhaXQtZm9yLXBy b21wdCkKKyAgKGluc2VydCAicmUuc3BsaXQoJ2InLCAnYWJjJywgbWF4cyIpCisgIChjb21wbGV0 aW9uLWF0LXBvaW50KQorICAoc2hvdWxkIChzdHJpbmc9ICJyZS5zcGxpdCgnYicsICdhYmMnLCBt YXhzcGxpdD0iCisgICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmcgKGxpbmUtYmVn aW5uaW5nLXBvc2l0aW9uKSAocG9pbnQpKSkpCisgIChpbnNlcnQgIjAsICIpCisgIChzaG91bGQg KHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLWF0LXBvaW50KSkKKyAgOzsgVGVzdCBpZiBjYWNoZSBp cyB1c2VkLgorICAoY2wtbGV0ZiAoKChzeW1ib2wtZnVuY3Rpb24gJ3B5dGhvbi1zaGVsbC1jb21w bGV0aW9uLWdldC1jb21wbGV0aW9ucykKKyAgICAgICAgICAgICAnaWdub3JlKQorICAgICAgICAg ICAgKChzeW1ib2wtZnVuY3Rpb24gJ3B5dGhvbi1zaGVsbC1jb21wbGV0aW9uLW5hdGl2ZS1nZXQt Y29tcGxldGlvbnMpCisgICAgICAgICAgICAgJ2lnbm9yZSkpCisgICAgKGluc2VydCAiZmxhIikK KyAgICAoY29tcGxldGlvbi1hdC1wb2ludCkKKyAgICAoc2hvdWxkIChzdHJpbmc9ICJyZS5zcGxp dCgnYicsICdhYmMnLCBtYXhzcGxpdD0wLCBmbGFncz0iCisgICAgICAgICAgICAgICAgICAgICAo YnVmZmVyLXN1YnN0cmluZyAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pIChwb2ludCkpKSkpCisg IChiZWdpbm5pbmctb2YtbGluZSkKKyAgKGtpbGwtbGluZSkpCisKKyhkZWZ1biBweXRob24tdGVz dHMtLWNvbXBsZXRpb24tZXh0cmEtY29udGV4dCAoKQorICAiQ2hlY2sgaWYgZXh0cmEgY29udGV4 dCBpcyB1c2VkIGZvciBjb21wbGV0aW9uLiIKKyAgKGluc2VydCAicmUuc3BsaXQoJ2InLCAnYWJj JywiKQorICAoY29taW50LXNlbmQtaW5wdXQpCisgIChweXRob24tdGVzdHMtc2hlbGwtd2FpdC1m b3ItcHJvbXB0KQorICAoaW5zZXJ0ICJtYXhzIikKKyAgKGNvbXBsZXRpb24tYXQtcG9pbnQpCisg IChzaG91bGQgKHN0cmluZz0gIm1heHNwbGl0PSIKKyAgICAgICAgICAgICAgICAgICAoYnVmZmVy LXN1YnN0cmluZyAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pIChwb2ludCkpKSkpCisKKyhlcnQt ZGVmdGVzdCBweXRob24tc2hlbGwtY29tcGxldGlvbi1hdC1wb2ludC1qZWRpLWNvbXBsZXRlciAo KQorICAiQ2hlY2sgaWYgUHl0aG9uIHNoZWxsIGNvbXBsZXRpb24gd29ya3Mgd2l0aCBKZWRpLiIK KyAgKHNraXAtdW5sZXNzIChleGVjdXRhYmxlLWZpbmQgcHl0aG9uLXRlc3RzLXNoZWxsLWludGVy cHJldGVyKSkKKyAgKHB5dGhvbi10ZXN0cy13aXRoLXRlbXAtYnVmZmVyLXdpdGgtc2hlbGwKKyAg ICIiCisgICAocHl0aG9uLXNoZWxsLXdpdGgtc2hlbGwtYnVmZmVyCisgICAgIChweXRob24tc2hl bGwtY29tcGxldGlvbi1uYXRpdmUtdHVybi1vbikKKyAgICAgKHNraXAtdW5sZXNzIChzdHJpbmc9 IHB5dGhvbi1zaGVsbC1yZWFkbGluZS1jb21wbGV0ZXItZGVsaW1zICIiKSkKKyAgICAgKHB5dGhv bi10ZXN0cy0tY29tcGxldGlvbi1tb2R1bGUpCisgICAgIChweXRob24tdGVzdHMtLWNvbXBsZXRp b24tcGFyYW1ldGVycykKKyAgICAgKHB5dGhvbi10ZXN0cy0tY29tcGxldGlvbi1leHRyYS1jb250 ZXh0KSkpKQorCisoZXJ0LWRlZnRlc3QgcHl0aG9uLXNoZWxsLWNvbXBsZXRpb24tYXQtcG9pbnQt aXB5dGhvbiAoKQorICAiQ2hlY2sgaWYgUHl0aG9uIHNoZWxsIGNvbXBsZXRpb24gd29ya3MgZm9y IElQeXRob24uIgorICAobGV0ICgocHl0aG9uLXNoZWxsLWludGVycHJldGVyICJpcHl0aG9uIikK KyAgICAgICAgKHB5dGhvbi1zaGVsbC1pbnRlcnByZXRlci1hcmdzICItaSAtLXNpbXBsZS1wcm9t cHQiKSkKKyAgICAoc2tpcC11bmxlc3MgKGV4ZWN1dGFibGUtZmluZCBweXRob24tc2hlbGwtaW50 ZXJwcmV0ZXIpKQorICAgIChweXRob24tdGVzdHMtd2l0aC10ZW1wLWJ1ZmZlci13aXRoLXNoZWxs CisgICAgICIiCisgICAgIChweXRob24tc2hlbGwtd2l0aC1zaGVsbC1idWZmZXIKKyAgICAgICAo cHl0aG9uLXNoZWxsLWNvbXBsZXRpb24tbmF0aXZlLXR1cm4tb2ZmKQorICAgICAgIChweXRob24t dGVzdHMtLWNvbXBsZXRpb24tbW9kdWxlKQorICAgICAgIChweXRob24tdGVzdHMtLWNvbXBsZXRp b24tcGFyYW1ldGVycykKKyAgICAgICAocHl0aG9uLXNoZWxsLWNvbXBsZXRpb24tbmF0aXZlLXR1 cm4tb24pCisgICAgICAgKHB5dGhvbi10ZXN0cy0tY29tcGxldGlvbi1tb2R1bGUpCisgICAgICAg KHB5dGhvbi10ZXN0cy0tY29tcGxldGlvbi1wYXJhbWV0ZXJzKQorICAgICAgIChweXRob24tdGVz dHMtLWNvbXBsZXRpb24tZXh0cmEtY29udGV4dCkpKSkpCiAKIAwKIDs7OyBQREIgVHJhY2sgaW50 ZWdyYXRpb24KLS0gCjIuMjUuMQoK --000000000000d09a70060fae3b8a--