From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jim Porter Newsgroups: gmane.emacs.bugs Subject: bug#72220: 31.0.50; [PATCH] Use 'unwind-protect' to ensure that Eshell always closes I/O handles Date: Sat, 20 Jul 2024 16:13:17 -0700 Message-ID: <96d456ea-0c97-70f0-d270-2870c9aad126@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------T6ZV1O3e8heuwQYy4wa2C0E0" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="37095"; mail-complaints-to="usenet@ciao.gmane.io" To: 72220@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Jul 21 01:14:18 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 1sVJHO-0009X3-6g for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 21 Jul 2024 01:14:18 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sVJH8-0004EQ-Hu; Sat, 20 Jul 2024 19:14:02 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sVJH7-0004EE-MN for bug-gnu-emacs@gnu.org; Sat, 20 Jul 2024 19:14:01 -0400 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 1sVJH7-0001jD-ET for bug-gnu-emacs@gnu.org; Sat, 20 Jul 2024 19:14:01 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1sVJH8-0002et-8M for bug-gnu-emacs@gnu.org; Sat, 20 Jul 2024 19:14:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Jim Porter Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 20 Jul 2024 23:14:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 72220 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.172151720910168 (code B ref -1); Sat, 20 Jul 2024 23:14:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 20 Jul 2024 23:13:29 +0000 Original-Received: from localhost ([127.0.0.1]:54315 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sVJGa-0002dv-F8 for submit@debbugs.gnu.org; Sat, 20 Jul 2024 19:13:29 -0400 Original-Received: from lists.gnu.org ([209.51.188.17]:59154) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sVJGX-0002dm-Mv for submit@debbugs.gnu.org; Sat, 20 Jul 2024 19:13:26 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sVJGW-0004AM-D5 for bug-gnu-emacs@gnu.org; Sat, 20 Jul 2024 19:13:24 -0400 Original-Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sVJGT-0001dW-Om for bug-gnu-emacs@gnu.org; Sat, 20 Jul 2024 19:13:24 -0400 Original-Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-2cb5243766dso1768268a91.0 for ; Sat, 20 Jul 2024 16:13:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1721517200; x=1722122000; darn=gnu.org; h=to:subject:from:content-language:mime-version:date:message-id:from :to:cc:subject:date:message-id:reply-to; bh=itYBX8Hmqge1DPytYK9aDkgssjuZLkXSQ8BC5j3Vyss=; b=N98ln2zwkWsv5krXfZBwbFb9xp3rq4zTq+48QXsKSLg44rs2Pf4on4TtblR2FM2Dem lGCU80POGRe79otuSNEapJ7IpvtouBuHVEOw3rUXKUXUDU/M4WO4tzCZZoWAxj8pbcgu +ffjH1IX/D3asdKsgfB7xuUPC9kYwDy7hdcQod+ynryEUz6kcrhh7P6Jy1QEugAORZEK 1hozCe1+k5eOYlZR6moNZKgB0BxKWYYGLIFNlhohkYdqoQxLbGiH573CsQF5F1hyKReV 9CDASDLxPvCgKDLJCwjs8EOnLFlXW/OHFd7ph+2j0b6o2aj5R4tai6RRsaPbDgeQsf48 EC8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721517200; x=1722122000; h=to:subject:from:content-language:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=itYBX8Hmqge1DPytYK9aDkgssjuZLkXSQ8BC5j3Vyss=; b=wCO8WKdfr7uvbJ6r5V/+ypAVgC/vbuwgClXePD4TaaahFcOHrI8HahoyaiqGqa0crS +JsyO5waGS/0GuT4sM5IDyQ+YxOu3xPZT1Q8nPvnpUViVhfFNsPOBjiwyEFeUSvLy4SY 6OTV7ZMoCXyo48BmM6cEizcTMI3Pqh9lZiUfMIG7+kfk7AIid0bp39/29/4zakkxaGLZ Zb04ik538VvBJEg8oPydCr9R7AIdCT9jwNPH2lDw9exYpubawDfizY77VMXf4Gksiy4o q7OZUIGjk9RS7GDWjYVUnGn14WBtbdYCDVR+Stj1ZKPXnSzFLe/Sdo4huJ/Z7GHaX18d Vuig== X-Gm-Message-State: AOJu0YzbBnN6///GdI3O7kPUJsDjBKq+Z4s1KLsguJVwPiWodII1FjID q7iMvAat2vJUXypawjMzMRV2geb+86eA+JN/cYz2A8NGQU2G0YlxJabukg== X-Google-Smtp-Source: AGHT+IFZygqskqF9eHBD3kW2VmMD9mFWbARjJ8mM6dzqAbfLIphMeN5t73KmvqbdMpjILn8IqfGTzg== X-Received: by 2002:a17:90a:f0ce:b0:2c9:7aa6:e15d with SMTP id 98e67ed59e1d1-2cd16071a3amr1819924a91.20.1721517199653; Sat, 20 Jul 2024 16:13:19 -0700 (PDT) Original-Received: from [192.168.1.2] (syn-023-240-098-037.res.spectrum.com. [23.240.98.37]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-2ccf7b56d76sm4154734a91.15.2024.07.20.16.13.17 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 20 Jul 2024 16:13:17 -0700 (PDT) X-Mozilla-News-Host: news://news.gmane.io:119 Content-Language: en-US Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=jporterbugs@gmail.com; helo=mail-pj1-x1033.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:289050 Archived-At: This is a multi-part message in MIME format. --------------T6ZV1O3e8heuwQYy4wa2C0E0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Eshell has long had difficult-to-diagnose issues with I/O handles closing when they shouldn't, or not closing when they should. This is because the handles are refcounted entirely manually, and the actual code is very easy to get wrong: the location in the source code that increments the refcount is often distant from where it's decremented. I've fixed many of these issues over the last couple years and added tests covering them, but it's time to solve this for once and for all. By using 'unwind-protect', we can always ensure that the handles are cleaned up at the right time without having to have a perfect understanding of every disparate part of Eshell's command evaluation. Luckily, thanks to the previous work here, we have a thorough suite of regression tests, which made developing this patch a lot easier. This also fixes some remaining issues with I/O handles (see the new regression test). --------------T6ZV1O3e8heuwQYy4wa2C0E0 Content-Type: text/plain; charset=UTF-8; name="0001-Improve-correctness-of-eshell-do-eval-in-some-edge-c.patch" Content-Disposition: attachment; filename*0="0001-Improve-correctness-of-eshell-do-eval-in-some-edge-c.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBmNmFkMjE4ZDhmY2U0NzdiOWI5N2FiMjQ3ZjkzMjU3N2E2ZDQ0MTg5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j b20+CkRhdGU6IEZyaSwgMTkgSnVsIDIwMjQgMTg6MDc6MzYgLTA3MDAKU3ViamVjdDogW1BB VENIIDEvMl0gOyBJbXByb3ZlIGNvcnJlY3RuZXNzIG9mICdlc2hlbGwtZG8tZXZhbCcgaW4g c29tZSBlZGdlCiBjYXNlcwoKKiBsaXNwL2VzaGVsbC9lc2gtY21kLmVsIChlc2hlbGwtZG8t ZXZhbCk6IE1ha2Ugc3VyZSB0aGF0IHJlcGxhY2luZyAnaWYnCmZvcm1zIHJldHVybnMgdGhl IGNvcnJlY3QgcmVzdWx0LCBhbmQgZXZhbHVhdGUgdG8gJ25pbCcgZm9yICdwcm9nbicKZm9y bXMgd2l0aCBubyBib2R5LgotLS0KIGxpc3AvZXNoZWxsL2VzaC1jbWQuZWwgfCA0ICsrLS0K IDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvbGlzcC9lc2hlbGwvZXNoLWNtZC5lbCBiL2xpc3AvZXNoZWxsL2VzaC1jbWQu ZWwKaW5kZXggMmI0Nzk2MjczNWEuLjQzZDUzNmFjNDYzIDEwMDY0NAotLS0gYS9saXNwL2Vz aGVsbC9lc2gtY21kLmVsCisrKyBiL2xpc3AvZXNoZWxsL2VzaC1jbWQuZWwKQEAgLTExNTks NyArMTE1OSw3IEBAIGVzaGVsbC1kby1ldmFsCiAgICAgICAgICAgICAgICAgICAodAogICAg ICAgICAgICAgICAgICAgIChjYWRkciBhcmdzKSkpKSkgICAgICAgIDsgWmVybyBvciBvbmUg RUxTRSBmb3JtcwogICAgICAgICAgICAgKHVubGVzcyAoY29uc3AgbmV3LWZvcm0pCi0gICAg ICAgICAgICAgIChzZXRxIG5ldy1mb3JtIChjb25zICdwcm9nbiBuZXctZm9ybSkpKQorICAg ICAgICAgICAgICAoc2V0cSBuZXctZm9ybSBgKHByb2duICxuZXctZm9ybSkpKQogICAgICAg ICAgICAgKHNldGNhciBmb3JtIChjYXIgbmV3LWZvcm0pKQogICAgICAgICAgICAgKHNldGNk ciBmb3JtIChjZHIgbmV3LWZvcm0pKSkpCiAgICAgICAgIChlc2hlbGwtZG8tZXZhbCBmb3Jt IHN5bmNocm9ub3VzLXApKQpAQCAtMTI2MSw3ICsxMjYxLDcgQEAgZXNoZWxsLWRvLWV2YWwK IAkJKHNldHEgYXJncyAoY2RyIGFyZ3MpKSkpKQogCShjb25kCiAJICgoZXEgKGNhciBmb3Jt KSAncHJvZ24pCi0JICAoY2FyIChsYXN0IGZvcm0pKSkKKwkgIChjYXIgKGxhc3QgKGNkciBm b3JtKSkpKQogCSAoKGVxIChjYXIgZm9ybSkgJ3Byb2cxKQogCSAgKGNhZHIgZm9ybSkpCiAJ ICh0Ci0tIAoyLjI1LjEKCg== --------------T6ZV1O3e8heuwQYy4wa2C0E0 Content-Type: text/plain; charset=UTF-8; name="0002-Use-unwind-protect-to-ensure-that-Eshell-always-clos.patch" Content-Disposition: attachment; filename*0="0002-Use-unwind-protect-to-ensure-that-Eshell-always-clos.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBiMjFmNGEzODIwYmU4ZmM1Nzk0MjdhOWRhZTIwMjcwYmZlYmNiY2M5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j b20+CkRhdGU6IEZyaSwgMTkgSnVsIDIwMjQgMTg6MDI6MTYgLTA3MDAKU3ViamVjdDogW1BB VENIIDIvMl0gVXNlICd1bndpbmQtcHJvdGVjdCcgdG8gZW5zdXJlIHRoYXQgRXNoZWxsIGFs d2F5cyBjbG9zZXMKIEkvTyBoYW5kbGVzCgoqIGxpc3AvZXNoZWxsL2VzaC1jbWQuZWwgKGVz aGVsbC13aXRoLWhhbmRsZXMpOiBOZXcgbWFjcm8uLi4KKGVzaGVsbC1jb21tYW5kcyk6IC4u LiB1c2UgaXQuCihlc2hlbGwtd2l0aC1jb3BpZWQtaGFuZGxlcyk6IFJlbW92ZSBTVEVBTC1Q IGFuZCBhbGxvdyBtdWx0aXBsZSBib2R5CmZvcm1zICh0aGlzIGlzIGFuIGluY29tcGF0aWJs ZSBjaGFuZ2UsIGJ1dCB0aGUgbWFjcm8gaXMgY3VycmVudGx5CmludGVybmFsIGRlc3BpdGUg dGhlIG5hbWUpLgooZXNoZWxsLXBhcnNlLWNvbW1hbmQsIGVzaGVsbC1kby1waXBlbGluZXMp Cihlc2hlbGwtZG8tcGlwZWxpbmVzLXN5bmNocm9ub3VzbHksIGVzaGVsbC0taW52b2tlLWNv bW1hbmQtZGlyZWN0bHktcCk6ClJlbW92ZSBoYW5kbGUgc3RlYWxpbmcuCihlc2hlbGwtc3Ry dWN0dXJlLWJhc2ljLWNvbW1hbmQsIGVzaGVsbC1kby1jb21tYW5kKQooZXNoZWxsLWxpc3At Y29tbWFuZCk6IFJlbW92ZSAnZXNoZWxsLWNsb3NlLWhhbmRsZXMnLgooZXNoZWxsLXByb3Rl Y3QpOiBNYWtlIG9ic29sZXRlLgooZXNoZWxsLXJld3JpdGUtZm9yLWNvbW1hbmQsIGVzaGVs bC1yZXdyaXRlLXdoaWxlLWNvbW1hbmQpCihlc2hlbGwtcmV3cml0ZS1pZi1jb21tYW5kLCAo ZXNoZWxsLXBhcnNlLXBpcGVsaW5lKTogUmVtb3ZlCidlc2hlbGwtcHJvdGVjdCcuCgoqIGxp c3AvZXNoZWxsL2VzaC1pby5lbCAoZXNoZWxsLWR1cGxpY2F0ZS1oYW5kbGVzKTogTWFrZSBT VEVBTC1QCm9ic29sZXRlLgoKKiBsaXNwL2VzaGVsbC9lc2gtcHJvYy5lbCAoZXNoZWxsLWdh dGhlci1wcm9jZXNzLW91dHB1dCk6IENhbGwKJ2VzaGVsbC1wcm90ZWN0LWhhbmRsZXMnIG9u ZSBtb3JlIHRpbWUuICBSZW1vdmUgJ2VzaGVsbC1jbG9zZS1oYW5kbGVzJy4KCiogbGlzcC9l c2hlbGwvZXNoLXZhci5lbCAoZXNoZWxsLXBhcnNlLXZhcmlhYmxlLXJlZik6IFJlaW1wbGVt ZW50CiQ8Q09NTUFORD4gZm9ybSB1c2luZyAnZXNoZWxsLXdpdGgtaGFuZGxlcycuCgoqIHRl c3QvbGlzcC9lc2hlbGwvZXNoLWNtZC10ZXN0cy5lbAooZXNoLWNtZC10ZXN0L2NvbW1hbmQt bm90LWZvdW5kL3BpcGVsaW5lKTogTmV3IHRlc3QuCgoqIHRlc3QvbGlzcC9lc2hlbGwvZW0t dHJhbXAtdGVzdHMuZWwKKGVtLXRyYW1wLXRlc3Qvc2hvdWxkLXJlcGxhY2UtY29tbWFuZCk6 IEFkanVzdCBjaGVjayBmb3IKJ2VzaGVsbC13aXRoLWNvcGllZC1oYW5kbGVzJy4KLS0tCiBs aXNwL2VzaGVsbC9lc2gtY21kLmVsICAgICAgICAgICAgIHwgOTIgKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0tCiBsaXNwL2VzaGVsbC9lc2gtaW8uZWwgICAgICAgICAgICAgIHwg IDggKy0tCiBsaXNwL2VzaGVsbC9lc2gtcHJvYy5lbCAgICAgICAgICAgIHwgIDIgKy0KIGxp c3AvZXNoZWxsL2VzaC12YXIuZWwgICAgICAgICAgICAgfCAzNCArKysrKystLS0tLQogdGVz dC9saXNwL2VzaGVsbC9lbS10cmFtcC10ZXN0cy5lbCB8ICAzICstCiB0ZXN0L2xpc3AvZXNo ZWxsL2VzaC1jbWQtdGVzdHMuZWwgIHwgMTEgKysrKwogNiBmaWxlcyBjaGFuZ2VkLCA3NiBp bnNlcnRpb25zKCspLCA3NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saXNwL2VzaGVs bC9lc2gtY21kLmVsIGIvbGlzcC9lc2hlbGwvZXNoLWNtZC5lbAppbmRleCA0M2Q1MzZhYzQ2 My4uMGE2ODg1OWZjMGEgMTAwNjQ0Ci0tLSBhL2xpc3AvZXNoZWxsL2VzaC1jbWQuZWwKKysr IGIvbGlzcC9lc2hlbGwvZXNoLWNtZC5lbApAQCAtNDE1LDcgKzQxNSw2IEBAIGVzaGVsbC1w YXJzZS1jb21tYW5kCiAgICAgIDs7IFRoZSBsYXN0IGNvbW1hbmQgKGZpcnN0IGluIG91ciBy ZXZlcnNlZCBsaXN0KSBpcyBpbXBsaWNpdGx5CiAgICAgIDs7IHRlcm1pbmF0ZWQgYnkgIjsi LgogICAgICAoc2VwLXRlcm1zIChjb25zICI7IiBzZXAtdGVybXMpKQotICAgICAoc3RlYWwt aGFuZGxlcyB0KQogICAgICAoY29tbWFuZHMKICAgICAgIChucmV2ZXJzZQogICAgICAgICht YXBjYW4KQEAgLTQyOCwxMSArNDI3LDggQEAgZXNoZWxsLXBhcnNlLWNvbW1hbmQKICAgICAg ICAgICAgICAgKHVubGVzcyBlc2hlbGwtaW4tcGlwZWxpbmUtcAogICAgICAgICAgICAgICAg IChzZXRxIGNtZCBgKGVzaGVsbC1kby1jb21tYW5kICxjbWQpKSkKICAgICAgICAgICAgICAg OzsgQ29weSBJL08gaGFuZGxlcyBzbyBlYWNoIGZ1bGwgc3RhdGVtZW50IGNhbiBtYW5pcHVs YXRlCi0gICAgICAgICAgICAgIDs7IHRoZW0gaWYgdGhleSBsaWtlLiAgU3RlYWwgdGhlIGhh bmRsZXMgZm9yIHRoZSBsYXN0Ci0gICAgICAgICAgICAgIDs7IGNvbW1hbmQgKGZpcnN0IGlu IG91ciByZXZlcnNlZCBsaXN0KTsgd2Ugd29uJ3QgdXNlIHRoZQotICAgICAgICAgICAgICA7 OyBvcmlnaW5hbHMgYWdhaW4gYW55d2F5LgotICAgICAgICAgICAgICAoc2V0cSBjbWQgYChl c2hlbGwtd2l0aC1jb3BpZWQtaGFuZGxlcyAsY21kICxzdGVhbC1oYW5kbGVzKQotICAgICAg ICAgICAgICAgICAgICBzdGVhbC1oYW5kbGVzIG5pbCkKKyAgICAgICAgICAgICAgOzsgdGhl bSBpZiB0aGV5IGxpa2UuCisgICAgICAgICAgICAgIChzZXRxIGNtZCBgKGVzaGVsbC13aXRo LWNvcGllZC1oYW5kbGVzICxjbWQpKQogICAgICAgICAgICAgICAod2hlbiAoZXF1YWwgc2Vw ICImIikKICAgICAgICAgICAgICAgICAoc2V0cSBjbWQgYChlc2hlbGwtZG8tc3Viam9iICxj bWQpKSkKICAgICAgICAgICAgICAgKGxpc3QgY21kKSkpKQpAQCAtNTQ3LDEwICs1NDMsOCBA QCBlc2hlbGwtcmV3cml0ZS1mb3ItY29tbWFuZAogICAgICAgICAgICAgIChsZXQgKCgsKGlu dGVybiAoY2FkciB0ZXJtcykpIChjYXIgLGZvci1pdGVtcykpCiAJCSAgIChlc2hlbGwtLWxv Y2FsLXZhcnMgKGNvbnMgJywoaW50ZXJuIChjYWRyIHRlcm1zKSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzaGVsbC0tbG9jYWwtdmFycykpKQot CSAgICAgICAoZXNoZWxsLXByb3RlY3QKLQkgICAJLChlc2hlbGwtaW52b2tpZnktYXJnIGJv ZHkgdCkpKQotICAgICAgICAgICAgIChzZXRxICxmb3ItaXRlbXMgKGNkciAsZm9yLWl0ZW1z KSkpCi0gICAgICAgICAgIChlc2hlbGwtY2xvc2UtaGFuZGxlcykpKSkpCisJICAgICAgICwo ZXNoZWxsLWludm9raWZ5LWFyZyBib2R5IHQpKQorICAgICAgICAgICAgIChzZXRxICxmb3It aXRlbXMgKGNkciAsZm9yLWl0ZW1zKSkpKSkpKQogCiAoZGVmdW4gZXNoZWxsLXN0cnVjdHVy ZS1iYXNpYy1jb21tYW5kIChmdW5jIG5hbWVzIGtleXdvcmQgdGVzdCBib2R5CiAJCQkJCSAg ICAmb3B0aW9uYWwgZWxzZSkKQEAgLTU3NywxMSArNTcxLDggQEAgZXNoZWxsLXN0cnVjdHVy ZS1iYXNpYy1jb21tYW5kCiAJICAgICAgIChzdHJpbmc9IGtleXdvcmQgKGNhZHIgbmFtZXMp KSkpCiAgICAgICAoc2V0cSB0ZXN0IGAobm90ICx0ZXN0KSkpCiAKLSAgOzsgZmluYWxseSwg Y3JlYXRlIHRoZSBmb3JtIHRoYXQgcmVwcmVzZW50cyB0aGlzIHN0cnVjdHVyZWQKLSAgOzsg Y29tbWFuZAotICBgKHByb2duCi0gICAgICgsZnVuYyAsdGVzdCAsYm9keSAsZWxzZSkKLSAg ICAgKGVzaGVsbC1jbG9zZS1oYW5kbGVzKSkpCisgIDs7IEZpbmFsbHksIGNyZWF0ZSB0aGUg Zm9ybSB0aGF0IHJlcHJlc2VudHMgdGhpcyBzdHJ1Y3R1cmVkIGNvbW1hbmQuCisgIGAoLGZ1 bmMgLHRlc3QgLGJvZHkgLGVsc2UpKQogCiAoZGVmdW4gZXNoZWxsLXJld3JpdGUtd2hpbGUt Y29tbWFuZCAodGVybXMpCiAgICJSZXdyaXRlIGEgYHdoaWxlJyBjb21tYW5kIGludG8gaXRz IGVxdWl2YWxlbnQgRXNoZWxsIGNvbW1hbmQgZm9ybS4KQEAgLTU5Myw4ICs1ODQsNyBAQCBl c2hlbGwtcmV3cml0ZS13aGlsZS1jb21tYW5kCiAgICAgICAoZXNoZWxsLXN0cnVjdHVyZS1i YXNpYy1jb21tYW5kCiAgICAgICAgJ3doaWxlICcoIndoaWxlIiAidW50aWwiKSAoY2FyIHRl cm1zKQogICAgICAgIChlc2hlbGwtaW52b2tpZnktYXJnIChjYWRyIHRlcm1zKSBuaWwgdCkK LSAgICAgICBgKGVzaGVsbC1wcm90ZWN0Ci0gICAgICAgICAsKGVzaGVsbC1pbnZva2lmeS1h cmcgKGNhciAobGFzdCB0ZXJtcykpIHQpKSkpKQorICAgICAgIChlc2hlbGwtaW52b2tpZnkt YXJnIChjYXIgKGxhc3QgdGVybXMpKSB0KSkpKQogCiAoZGVmdW4gZXNoZWxsLXJld3JpdGUt aWYtY29tbWFuZCAodGVybXMpCiAgICJSZXdyaXRlIGFuIGBpZicgY29tbWFuZCBpbnRvIGl0 cyBlcXVpdmFsZW50IEVzaGVsbCBjb21tYW5kIGZvcm0uCkBAIC02MDYsMTIgKzU5Niw5IEBA IGVzaGVsbC1yZXdyaXRlLWlmLWNvbW1hbmQKICAgICAgIChlc2hlbGwtc3RydWN0dXJlLWJh c2ljLWNvbW1hbmQKICAgICAgICAnaWYgJygiaWYiICJ1bmxlc3MiKSAoY2FyIHRlcm1zKQog ICAgICAgIChlc2hlbGwtaW52b2tpZnktYXJnIChjYWRyIHRlcm1zKSBuaWwgdCkKLSAgICAg ICBgKGVzaGVsbC1wcm90ZWN0Ci0gICAgICAgICAsKGVzaGVsbC1pbnZva2lmeS1hcmcgKGNh ciAobGFzdCB0ZXJtcyAoaWYgKD0gKGxlbmd0aCB0ZXJtcykgNCkgMikpKQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHQpKQotICAgICAgIChpZiAoPSAobGVuZ3RoIHRlcm1z KSA0KQotCSAgIGAoZXNoZWxsLXByb3RlY3QKLSAgICAgICAgICAgICAsKGVzaGVsbC1pbnZv a2lmeS1hcmcgKGNhciAobGFzdCB0ZXJtcykpIHQpKSkpKSkKKyAgICAgICAoZXNoZWxsLWlu dm9raWZ5LWFyZyAoY2FyIChsYXN0IHRlcm1zIChpZiAoPSAobGVuZ3RoIHRlcm1zKSA0KSAy KSkpIHQpCisgICAgICAgKHdoZW4gKD0gKGxlbmd0aCB0ZXJtcykgNCkKKyAgICAgICAgIChl c2hlbGwtaW52b2tpZnktYXJnIChjYXIgKGxhc3QgdGVybXMpKSB0KSkpKSkKIAogKGRlZnVu IGVzaGVsbC1zZXQtZXhpdC1pbmZvIChzdGF0dXMgJm9wdGlvbmFsIHJlc3VsdCkKICAgIlNl dCB0aGUgZXhpdCBzdGF0dXMgYW5kIHJlc3VsdCBmb3IgdGhlIGxhc3QgY29tbWFuZC4KQEAg LTY2Miw4ICs2NDksNyBAQCBlc2hlbGwtcGFyc2UtcGlwZWxpbmUKICAgICAgIChjbC1hc3Nl cnQgKGNhciBzZXAtdGVybXMpKQogICAgICAgKHNldHEgZmluYWwgKGVzaGVsbC1zdHJ1Y3R1 cmUtYmFzaWMtY29tbWFuZAogICAgICAgICAgICAgICAgICAgICdpZiAoc3RyaW5nPSAocG9w IHNlcC10ZXJtcykgIiYmIikgImlmIgotICAgICAgICAgICAgICAgICAgIGAoZXNoZWxsLXBy b3RlY3QgLChwb3AgcmVzdWx0cykpCi0gICAgICAgICAgICAgICAgICAgYChlc2hlbGwtcHJv dGVjdCAsZmluYWwpKSkpCisgICAgICAgICAgICAgICAgICAgKHBvcCByZXN1bHRzKSBmaW5h bCkpKQogICAgIGZpbmFsKSkKIAogKGRlZnVuIGVzaGVsbC1wYXJzZS1zdWJjb21tYW5kLWFy Z3VtZW50ICgpCkBAIC03NjIsNiArNzQ4LDI4IEBAIGVzaGVsbC1zZXBhcmF0ZS1jb21tYW5k cwogOzsgdGhhdCBgZXNoZWxsLWRvLWV2YWwnIHdpbGwgZXZhbHVhdGVkLCBzdWNoIGFzIGNv bW1hbmQgcmV3cml0aW5nCiA7OyBob29rcyAoc2VlIGBlc2hlbGwtcmV3cml0ZS1jb21tYW5k LWhvb2snIGFuZCBmcmllbmRzKS4KIAorKGRlZm1hY3JvIGVzaGVsbC13aXRoLWhhbmRsZXMg KGhhbmRsZS1hcmdzICZyZXN0IGJvZHkpCisgICJDcmVhdGUgYSBuZXcgc2V0IG9mIEkvTyBo YW5kbGVzIGFuZCBldmFsdWF0ZSBCT0RZLgorSEFORExFLUFSR1MgaXMgYSBsaXN0IG9mIGFy Z3VtZW50cyB0byBwYXNzIHRvIGBlc2hlbGwtY3JlYXRlLWhhbmRsZXMnLgorQWZ0ZXIgZXZh bHVhdGluZyBCT0RZLCBhdXRvbWF0aWNhbGx5IHJlbGVhc2UgdGhlIGhhbmRsZXMsIGFsbG93 aW5nIHRoZW0KK3RvIGNsb3NlLiIKKyAgKGRlY2xhcmUgKGluZGVudCAxKSkKKyAgYChsZXQg KChlc2hlbGwtY3VycmVudC1oYW5kbGVzIChlc2hlbGwtY3JlYXRlLWhhbmRsZXMgLEBoYW5k bGUtYXJncykpKQorICAgICAodW53aW5kLXByb3RlY3QKKyAgICAgICAgICwoaWYgKGxlbmd0 aD0gYm9keSAxKSAoY2FyIGJvZHkpIGAocHJvZ24gLEBib2R5KSkKKyAgICAgICAoZXNoZWxs LWNsb3NlLWhhbmRsZXMpKSkpCisKKyhkZWZtYWNybyBlc2hlbGwtd2l0aC1jb3BpZWQtaGFu ZGxlcyAoJnJlc3QgYm9keSkKKyAgIkNvcHkgdGhlIGN1cnJlbnQgSS9PIGhhbmRsZXMgYW5k IGV2YWx1YXRlIEJPRFkuCitBZnRlciBldmFsdWF0aW5nIEJPRFksIGF1dG9tYXRpY2FsbHkg cmVsZWFzZSB0aGUgaGFuZGxlcywgYWxsb3dpbmcgdGhlbQordG8gY2xvc2UuIgorICAoZGVj bGFyZSAoaW5kZW50IDApKQorICBgKGxldCAoKGVzaGVsbC1jdXJyZW50LWhhbmRsZXMKKyAg ICAgICAgICAoZXNoZWxsLWR1cGxpY2F0ZS1oYW5kbGVzIGVzaGVsbC1jdXJyZW50LWhhbmRs ZXMpKSkKKyAgICAgKHVud2luZC1wcm90ZWN0CisgICAgICAgICAsKGlmIChsZW5ndGg9IGJv ZHkgMSkgKGNhciBib2R5KSBgKHByb2duICxAYm9keSkpCisgICAgICAgKGVzaGVsbC1jbG9z ZS1oYW5kbGVzKSkpKQorCiAoZGVmbWFjcm8gZXNoZWxsLWRvLXN1YmpvYiAob2JqZWN0KQog ICAiRXZhbHVhdGUgYSBjb21tYW5kIE9CSkVDVCBhcyBhIHN1YmpvYi4KIFdlIGluZGljYXRl IHRoYXQgdGhlIHByb2Nlc3Mgd2FzIHJ1biBpbiB0aGUgYmFja2dyb3VuZCBieQpAQCAtNzc0 LDEwICs3ODIsOSBAQCBlc2hlbGwtZG8tc3Viam9iCiAKIChkZWZtYWNybyBlc2hlbGwtY29t bWFuZHMgKG9iamVjdCAmb3B0aW9uYWwgc2lsZW50KQogICAiUGxhY2UgYSB2YWxpZCBzZXQg b2YgaGFuZGxlcywgYW5kIGNvbnRleHQsIGFyb3VuZCBjb21tYW5kIE9CSkVDVC4iCi0gIGAo bGV0ICgoZXNoZWxsLWN1cnJlbnQtaGFuZGxlcwotCSAgKGVzaGVsbC1jcmVhdGUtaGFuZGxl cyAsKG5vdCBzaWxlbnQpICdhcHBlbmQpKQotCSBlc2hlbGwtY3VycmVudC1zdWJqb2ItcCkK LSAgICAgLG9iamVjdCkpCisgIGAobGV0IChlc2hlbGwtY3VycmVudC1zdWJqb2ItcCkKKyAg ICAgKGVzaGVsbC13aXRoLWhhbmRsZXMgKCwobm90IHNpbGVudCkgJ2FwcGVuZCkKKyAgICAg ICAsb2JqZWN0KSkpCiAKIChkZWZ2YXIgZXNoZWxsLXRoaXMtY29tbWFuZC1ob29rIG5pbCkK IApAQCAtNzk2LDggKzgwMyw3IEBAIGVzaGVsbC1kby1jb21tYW5kCiAgICAgICAgICAgICht YXBjICMnZnVuY2FsbCBlc2hlbGwtdGhpcy1jb21tYW5kLWhvb2spKSkKICAgICAgKGVycm9y CiAgICAgICAoZXNoZWxsLWVycm9ybiAoZXJyb3ItbWVzc2FnZS1zdHJpbmcgZXJyKSkKLSAg ICAgIChlc2hlbGwtc2V0LWV4aXQtaW5mbyAxKQotICAgICAgKGVzaGVsbC1jbG9zZS1oYW5k bGVzKSkpKQorICAgICAgKGVzaGVsbC1zZXQtZXhpdC1pbmZvIDEpKSkpCiAKIChkZWZpbmUt b2Jzb2xldGUtZnVuY3Rpb24tYWxpYXMgJ2VzaGVsbC10cmFwLWVycm9ycyAjJ2VzaGVsbC1k by1jb21tYW5kICIzMS4xIikKIApAQCAtODA2LDE5ICs4MTIsMTIgQEAgJ2VzaGVsbC1kZWZl cnJhYmxlCiBJZiB0aGUgd3JhcHBlZCBmb3JtIHJldHVybnMgYSBwcm9jZXNzIChvciBsaXN0 IHRoZXJlb2YpLCBFc2hlbGwgd2lsbAogd2FpdCBmb3IgY29tcGxldGlvbiBpbiB0aGUgYmFj a2dyb3VuZCBmb3IgdGhlIHByb2Nlc3MoZXMpIHRvIGNvbXBsZXRlLiIpCiAKLShkZWZtYWNy byBlc2hlbGwtd2l0aC1jb3BpZWQtaGFuZGxlcyAob2JqZWN0ICZvcHRpb25hbCBzdGVhbC1w KQotICAiRHVwbGljYXRlIGN1cnJlbnQgSS9PIGhhbmRsZXMsIHNvIE9CSkVDVCB3b3JrcyB3 aXRoIGl0cyBvd24gY29weS4KLUlmIFNURUFMLVAgaXMgbm9uLW5pbCwgdGhlc2UgbmV3IGhh bmRsZXMgd2lsbCBiZSBzdG9sZW4gZnJvbSB0aGUKLWN1cnJlbnQgb25lcyAoc2VlIGBlc2hl bGwtZHVwbGljYXRlLWhhbmRsZXMnKS4iCi0gIGAobGV0ICgoZXNoZWxsLWN1cnJlbnQtaGFu ZGxlcwotICAgICAgICAgIChlc2hlbGwtZHVwbGljYXRlLWhhbmRsZXMgZXNoZWxsLWN1cnJl bnQtaGFuZGxlcyAsc3RlYWwtcCkpKQotICAgICAsb2JqZWN0KSkKLQogKGRlZmluZS1vYnNv bGV0ZS1mdW5jdGlvbi1hbGlhcyAnZXNoZWxsLWNvcHktaGFuZGxlcwogICAjJ2VzaGVsbC13 aXRoLWNvcGllZC1oYW5kbGVzICIzMC4xIikKIAogKGRlZm1hY3JvIGVzaGVsbC1wcm90ZWN0 IChvYmplY3QpCiAgICJQcm90ZWN0IEkvTyBoYW5kbGVzLCBzbyB0aGV5IGFyZW4ndCBnZXQg Y2xvc2VkIGFmdGVyIGV2YWwnaW5nIE9CSkVDVC4iCisgIChkZWNsYXJlIChvYnNvbGV0ZSBu aWwgIjMxLjEiKSkKICAgYChwcm9nbgogICAgICAoZXNoZWxsLXByb3RlY3QtaGFuZGxlcyBl c2hlbGwtY3VycmVudC1oYW5kbGVzKQogICAgICAsb2JqZWN0KSkKQEAgLTg0NSw5ICs4NDQs NyBAQCBlc2hlbGwtZG8tcGlwZWxpbmVzCiAgICAgICAgICAgIGAoZXNoZWxsLXNldC1vdXRw dXQtaGFuZGxlICxlc2hlbGwtb3V0cHV0LWhhbmRsZQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnYXBwZW5kIChjYXIgbmV4dC1wcm9jcykpKQogICAgICAgICAo bGV0ICgocHJvYyAsKGNhciBwaXBlbGluZSkpKQotICAgICAgICAgIChjb25zIHByb2MgbmV4 dC1wcm9jcykpKQotICAgICAgOzsgU3RlYWwgaGFuZGxlcyBpZiB0aGlzIGlzIHRoZSBsYXN0 IGl0ZW0gaW4gdGhlIHBpcGVsaW5lLgotICAgICAgLChudWxsIChjZHIgcGlwZWxpbmUpKSkp KQorICAgICAgICAgIChjb25zIHByb2MgbmV4dC1wcm9jcykpKSkpKQogCiAoZGVmbWFjcm8g ZXNoZWxsLWRvLXBpcGVsaW5lcy1zeW5jaHJvbm91c2x5IChwaXBlbGluZSkKICAgIkV4ZWN1 dGUgdGhlIGNvbW1hbmRzIGluIFBJUEVMSU5FIGluIHNlcXVlbmNlIHN5bmNocm9ub3VzbHku CkBAIC04NjksOSArODY2LDcgQEAgZXNoZWxsLWRvLXBpcGVsaW5lcy1zeW5jaHJvbm91c2x5 CiAgICAgICAgICAgICAgICAgICA7OyBtZWFuaW5nIGZvciBzeW5jaHJvbm91cyBwcm9jZXNz ZXM6IGl0J3Mgbm9uLW5pbAogICAgICAgICAgICAgICAgICAgOzsgb25seSB3aGVuIHBpcGlu ZyAqdG8qIGEgcHJvY2Vzcy4KICAgICAgICAgICAgICAgICAgIChlc2hlbGwtaW4tcGlwZWxp bmUtcCAsKGFuZCAoY2RyIHBpcGVsaW5lKSB0KSkpCi0gICAgICAgICAgICAgICwoY2FyIHBp cGVsaW5lKSkpCi0gICAgICAgICAgOzsgU3RlYWwgaGFuZGxlcyBpZiB0aGlzIGlzIHRoZSBs YXN0IGl0ZW0gaW4gdGhlIHBpcGVsaW5lLgotICAgICAgICAgICwobnVsbCAoY2RyIHBpcGVs aW5lKSkpCisgICAgICAgICAgICAgICwoY2FyIHBpcGVsaW5lKSkpKQogICAgICAgICwod2hl biAoY2RyIHBpcGVsaW5lKQogICAgICAgICAgIGAoZXNoZWxsLWRvLXBpcGVsaW5lcy1zeW5j aHJvbm91c2x5IChxdW90ZSAsKGNkciBwaXBlbGluZSkpKSkpKSkKIApAQCAtOTQ2LDcgKzk0 MSw3IEBAIGVzaGVsbC0taW52b2tlLWNvbW1hbmQtZGlyZWN0bHktcAogCiAqIFRoZSBjb21t YW5kIGlzIG9mIHRoZSBmb3JtCiAgIChlc2hlbGwtd2l0aC1jb3BpZWQtaGFuZGxlcwotICAg KGVzaGVsbC1kby1jb21tYW5kIChlc2hlbGwtbmFtZWQtY29tbWFuZCBOQU1FIFtBUkdTXSkp IF8pLgorICAgKGVzaGVsbC1kby1jb21tYW5kIChlc2hlbGwtbmFtZWQtY29tbWFuZCBOQU1F IFtBUkdTXSkpKS4KIAogKiBOQU1FIGlzIGEgc3RyaW5nIHJlZmVycmluZyB0byBhbiBhbGlh cyBmdW5jdGlvbiBhbmQgaXNuJ3QgYQogICBjb21wbGV4IGNvbW1hbmQgKHNlZSBgZXNoZWxs LWNvbXBsZXgtY29tbWFuZHMnKS4KQEAgLTk1NCw4ICs5NDksNyBAQCBlc2hlbGwtLWludm9r ZS1jb21tYW5kLWRpcmVjdGx5LXAKICogQW55IHN1YmNvbW1hbmRzIGluIEFSR1MgY2FuIGFs c28gYmUgaW52b2tlZCBkaXJlY3RseS4iCiAgIChwY2FzZSBjb21tYW5kCiAgICAgKGAoZXNo ZWxsLXdpdGgtY29waWVkLWhhbmRsZXMKLSAgICAgICAoZXNoZWxsLWRvLWNvbW1hbmQgKGVz aGVsbC1uYW1lZC1jb21tYW5kICxuYW1lIC4gLGFyZ3MpKQotICAgICAgICxfKQorICAgICAg IChlc2hlbGwtZG8tY29tbWFuZCAoZXNoZWxsLW5hbWVkLWNvbW1hbmQgLG5hbWUgLiAsYXJn cykpKQogICAgICAoYW5kIG5hbWUgKHN0cmluZ3AgbmFtZSkKIAkgIChub3QgKG1lbWJlciBu YW1lIGVzaGVsbC1jb21wbGV4LWNvbW1hbmRzKSkKIAkgIChjYXRjaCAnc2ltcGxlCkBAIC0x NTU3LDcgKzE1NTEsNyBAQCBlc2hlbGwtbGlzcC1jb21tYW5kCiAgICAgICAgICAgICAgICAg ICAgIChub3QgcmVzdWx0KSkKICAgICAgICAgICAgMikKICAgICAgICAgIHJlc3VsdCkpCi0g ICAgICAoZXNoZWxsLWNsb3NlLWhhbmRsZXMpKSkpCisgICAgICBuaWwpKSkKIAogKGRlZmlu ZS1vYnNvbGV0ZS1mdW5jdGlvbi1hbGlhcyAnZXNoZWxsLWxpc3AtY29tbWFuZCogIydlc2hl bGwtbGlzcC1jb21tYW5kCiAgICIzMS4xIikKZGlmZiAtLWdpdCBhL2xpc3AvZXNoZWxsL2Vz aC1pby5lbCBiL2xpc3AvZXNoZWxsL2VzaC1pby5lbAppbmRleCA1ZmNjYzRmZTgyZi4uYTZk Zjc1ZTg2ZTkgMTAwNjQ0Ci0tLSBhL2xpc3AvZXNoZWxsL2VzaC1pby5lbAorKysgYi9saXNw L2VzaGVsbC9lc2gtaW8uZWwKQEAgLTM1MywxNCArMzUzLDE0IEBAIGVzaGVsbC1jcmVhdGUt aGFuZGxlcwogKGRlZnVuIGVzaGVsbC1kdXBsaWNhdGUtaGFuZGxlcyAoaGFuZGxlcyAmb3B0 aW9uYWwgc3RlYWwtcCkKICAgIkNyZWF0ZSBhIGR1cGxpY2F0ZSBvZiB0aGUgZmlsZSBoYW5k bGVzIGluIEhBTkRMRVMuCiBUaGlzIHVzZXMgdGhlIHRhcmdldHMgb2YgZWFjaCBoYW5kbGUg aW4gSEFORExFUywgaW5jcmVtZW50aW5nIGl0cwotcmVmZXJlbmNlIGNvdW50IGJ5IG9uZSAo dW5sZXNzIFNURUFMLVAgaXMgbm9uLW5pbCkuICBUaGVzZQotdGFyZ2V0cyBhcmUgc2hhcmVk IGJldHdlZW4gdGhlIG9yaWdpbmFsIHNldCBvZiBoYW5kbGVzIGFuZCB0aGUKLW5ldyBvbmUs IHNvIHRoZSB0YXJnZXRzIGFyZSBvbmx5IGNsb3NlZCB3aGVuIHRoZSByZWZlcmVuY2UgY291 bnQKLWRyb3BzIHRvIDAgKHNlZSBgZXNoZWxsLWNsb3NlLWhhbmRsZXMnKS4KK3JlZmVyZW5j ZSBjb3VudCBieSBvbmUuICBUaGVzZSB0YXJnZXRzIGFyZSBzaGFyZWQgYmV0d2VlbiB0aGUg b3JpZ2luYWwKK3NldCBvZiBoYW5kbGVzIGFuZCB0aGUgbmV3IG9uZSwgc28gdGhlIHRhcmdl dHMgYXJlIG9ubHkgY2xvc2VkIHdoZW4gdGhlCityZWZlcmVuY2UgY291bnQgZHJvcHMgdG8g MCAoc2VlIGBlc2hlbGwtY2xvc2UtaGFuZGxlcycpLgogCiBUaGlzIGZ1bmN0aW9uIGFsc28g c2V0cyB0aGUgREVGQVVMVCBmaWVsZCBmb3IgZWFjaCBoYW5kbGUgdG8KIHQgKHNlZSBgZXNo ZWxsLWNyZWF0ZS1oYW5kbGVzJykuICBVbmxpa2UgdGhlIHRhcmdldHMsIHRoaXMgdmFsdWUK IGlzIG5vdCBzaGFyZWQgd2l0aCB0aGUgb3JpZ2luYWwgaGFuZGxlcy4iCisgIChkZWNsYXJl IChhZHZlcnRpc2VkLWNhbGxpbmctY29udmVudGlvbiAoaGFuZGxlcykgIjMxLjEiKSkKICAg KGxldCAoKGR1cC1oYW5kbGVzIChtYWtlLXZlY3RvciBlc2hlbGwtbnVtYmVyLW9mLWhhbmRs ZXMgbmlsKSkpCiAgICAgKGRvdGltZXMgKGlkeCBlc2hlbGwtbnVtYmVyLW9mLWhhbmRsZXMp CiAgICAgICAod2hlbi1sZXQgKChoYW5kbGUgKGFyZWYgaGFuZGxlcyBpZHgpKSkKZGlmZiAt LWdpdCBhL2xpc3AvZXNoZWxsL2VzaC1wcm9jLmVsIGIvbGlzcC9lc2hlbGwvZXNoLXByb2Mu ZWwKaW5kZXggZGM3YjQ5NzY2NmIuLmI1NzlhOTNlMTRjIDEwMDY0NAotLS0gYS9saXNwL2Vz aGVsbC9lc2gtcHJvYy5lbAorKysgYi9saXNwL2VzaGVsbC9lc2gtcHJvYy5lbApAQCAtMzcx LDYgKzM3MSw3IEBAIGVzaGVsbC1nYXRoZXItcHJvY2Vzcy1vdXRwdXQKICAgICAgICAgICAg ICAgICAgICAgICAgICAjJ2VzaGVsbC1pbnNlcnRpb24tZmlsdGVyKQogICAgICAgICAgICAg ICAgOnNlbnRpbmVsICMnZXNoZWxsLXNlbnRpbmVsKSkKICAgICAgICAgKGVzaGVsbC1yZWNv cmQtcHJvY2Vzcy1wcm9wZXJ0aWVzIHN0ZGVyci1wcm9jIGVzaGVsbC1lcnJvci1oYW5kbGUp KQorICAgICAgKGVzaGVsbC1wcm90ZWN0LWhhbmRsZXMgZXNoZWxsLWN1cnJlbnQtaGFuZGxl cykKICAgICAgIChzZXRxIHByb2MKICAgICAgICAgICAgIChsZXQgKChjb21tYW5kIChmaWxl LWxvY2FsLW5hbWUgKGV4cGFuZC1maWxlLW5hbWUgY29tbWFuZCkpKQogICAgICAgICAgICAg ICAgICAgKGNvbm4tdHlwZSAocGNhc2UgKGJvdW5kLWFuZC10cnVlLXAgZXNoZWxsLWluLXBp cGVsaW5lLXApCkBAIC00NjgsNyArNDY5LDYgQEAgZXNoZWxsLWdhdGhlci1wcm9jZXNzLW91 dHB1dAogICAgICAgICAoZXNoZWxsLXNldC1leGl0LWluZm8KICAgICAgICAgIChpZiAobnVt YmVycCBleGl0LXN0YXR1cykgZXhpdC1zdGF0dXMgLTEpCiAgICAgICAgICAoYW5kIChudW1i ZXJwIGV4aXQtc3RhdHVzKSAoPSBleGl0LXN0YXR1cyAwKSkpCi0gICAgICAgIChlc2hlbGwt Y2xvc2UtaGFuZGxlcykKIAkocnVuLWhvb2std2l0aC1hcmdzICdlc2hlbGwta2lsbC1ob29r IGNvbW1hbmQgZXhpdC1zdGF0dXMpCiAJKG9yIChib3VuZC1hbmQtdHJ1ZS1wIGVzaGVsbC1p bi1waXBlbGluZS1wKQogCSAgICAoc2V0cSBlc2hlbGwtbGFzdC1zeW5jLW91dHB1dC1zdGFy dCBuaWwpKQpkaWZmIC0tZ2l0IGEvbGlzcC9lc2hlbGwvZXNoLXZhci5lbCBiL2xpc3AvZXNo ZWxsL2VzaC12YXIuZWwKaW5kZXggZjAyNzBhY2E5MmMuLjBlNmMwMWQyNzc0IDEwMDY0NAot LS0gYS9saXNwL2VzaGVsbC9lc2gtdmFyLmVsCisrKyBiL2xpc3AvZXNoZWxsL2VzaC12YXIu ZWwKQEAgLTU1MywyNCArNTUzLDIyIEBAIGVzaGVsbC1wYXJzZS12YXJpYWJsZS1yZWYKICAg ICAgICAgICAgICAoc3ViY21kIChvciAoZXNoZWxsLXVuZXNjYXBlLWlubmVyLWRvdWJsZS1x dW90ZSBlbmQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMgKHBvaW50KSBlbmQp KSkpCiAgICAgICAgIChwcm9nMQotICAgICAgICAgICAgYChsZXQgKChlc2hlbGwtY3VycmVu dC1oYW5kbGVzCi0gICAgICAgICAgICAgICAgICAgIChlc2hlbGwtY3JlYXRlLWhhbmRsZXMg LHRlbXAgJ292ZXJ3cml0ZSkpKQotICAgICAgICAgICAgICAgKHByb2duCi0gICAgICAgICAg ICAgICAgIChlc2hlbGwtYXMtc3ViY29tbWFuZAotICAgICAgICAgICAgICAgICAgLChsZXQg KChlc2hlbGwtY3VycmVudC1xdW90ZWQgbmlsKSkKLSAgICAgICAgICAgICAgICAgICAgIChl c2hlbGwtcGFyc2UtY29tbWFuZCBzdWJjbWQpKSkKLSAgICAgICAgICAgICAgICAgKGlnbm9y ZQotICAgICAgICAgICAgICAgICAgKG5jb25jIGVzaGVsbC10aGlzLWNvbW1hbmQtaG9vawot ICAgICAgICAgICAgICAgICAgICAgICAgIDs7IFF1b3RlIHRoaXMgbGFtYmRhOyBpdCB3aWxs IGJlIGV2YWx1YXRlZCBieQotICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGBlc2hlbGwt ZG8tZXZhbCcsIHdoaWNoIHJlcXVpcmVzIHZlcnkKLSAgICAgICAgICAgICAgICAgICAgICAg ICA7OyBwYXJ0aWN1bGFyIGZvcm1zIGluIG9yZGVyIHRvIHdvcmsKLSAgICAgICAgICAgICAg ICAgICAgICAgICA7OyBwcm9wZXJseS4gIFNlZSBidWcjNTQxOTAuCi0gICAgICAgICAgICAg ICAgICAgICAgICAgKGxpc3QgKGZ1bmN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChsYW1iZGEgKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo ZGVsZXRlLWZpbGUgLHRlbXApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHdoZW4tbGV0ICgoYnVmZmVyIChnZXQtZmlsZS1idWZmZXIgLHRlbXApKSkKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChraWxsLWJ1ZmZlciBidWZmZXIpKSkpKSkp Ci0gICAgICAgICAgICAgICAgIChlc2hlbGwtYXBwbHktaW5kaWNlcyAsdGVtcCBpbmRpY2Vz ICxlc2hlbGwtY3VycmVudC1xdW90ZWQpKSkKKyAgICAgICAgICAgIGAoZXNoZWxsLXdpdGgt aGFuZGxlcyAoLHRlbXAgJ292ZXJ3cml0ZSkKKyAgICAgICAgICAgICAgIChlc2hlbGwtYXMt c3ViY29tbWFuZAorICAgICAgICAgICAgICAgICwobGV0ICgoZXNoZWxsLWN1cnJlbnQtcXVv dGVkIG5pbCkpCisgICAgICAgICAgICAgICAgICAgKGVzaGVsbC1wYXJzZS1jb21tYW5kIHN1 YmNtZCkpKQorICAgICAgICAgICAgICAgKGlnbm9yZQorICAgICAgICAgICAgICAgIChuY29u YyBlc2hlbGwtdGhpcy1jb21tYW5kLWhvb2sKKyAgICAgICAgICAgICAgICAgICAgICAgOzsg UXVvdGUgdGhpcyBsYW1iZGE7IGl0IHdpbGwgYmUgZXZhbHVhdGVkIGJ5CisgICAgICAgICAg ICAgICAgICAgICAgIDs7IGBlc2hlbGwtZG8tZXZhbCcsIHdoaWNoIHJlcXVpcmVzIHZlcnkK KyAgICAgICAgICAgICAgICAgICAgICAgOzsgcGFydGljdWxhciBmb3JtcyBpbiBvcmRlciB0 byB3b3JrCisgICAgICAgICAgICAgICAgICAgICAgIDs7IHByb3Blcmx5LiAgU2VlIGJ1ZyM1 NDE5MC4KKyAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgKGZ1bmN0aW9uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhICgpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChkZWxldGUtZmlsZSAsdGVtcCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHdoZW4tbGV0ICgoYnVmZmVyIChnZXQtZmlsZS1idWZmZXIgLHRlbXAp KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2lsbC1idWZmZXIgYnVm ZmVyKSkpKSkpKQorICAgICAgICAgICAgICAgKGVzaGVsbC1hcHBseS1pbmRpY2VzICx0ZW1w IGluZGljZXMgLGVzaGVsbC1jdXJyZW50LXF1b3RlZCkpCiAgICAgICAgICAgKGdvdG8tY2hh ciAoMSsgZW5kKSkpKSkpCiAgICAoKGVxIChjaGFyLWFmdGVyKSA/XCgpCiAgICAgKGNvbmRp dGlvbi1jYXNlIG5pbApkaWZmIC0tZ2l0IGEvdGVzdC9saXNwL2VzaGVsbC9lbS10cmFtcC10 ZXN0cy5lbCBiL3Rlc3QvbGlzcC9lc2hlbGwvZW0tdHJhbXAtdGVzdHMuZWwKaW5kZXggNDlk ZDVhNzhjM2QuLmI4NWRmYzYxNTgwIDEwMDY0NAotLS0gYS90ZXN0L2xpc3AvZXNoZWxsL2Vt LXRyYW1wLXRlc3RzLmVsCisrKyBiL3Rlc3QvbGlzcC9lc2hlbGwvZW0tdHJhbXAtdGVzdHMu ZWwKQEAgLTI5LDggKzI5LDcgQEAgZW0tdHJhbXAtdGVzdC9zaG91bGQtcmVwbGFjZS1jb21t YW5kCiAgIGAoc2hvdWxkIChlcXVhbAogICAgICAgICAgICAgKGNhdGNoICdlc2hlbGwtcmVw bGFjZS1jb21tYW5kICxmb3JtKQogICAgICAgICAgICAgKGxpc3QgJ2VzaGVsbC13aXRoLWNv cGllZC1oYW5kbGVzCi0gICAgICAgICAgICAgICAgICAobGlzdCAnZXNoZWxsLWRvLWNvbW1h bmQgLHJlcGxhY2VtZW50KQotICAgICAgICAgICAgICAgICAgdCkpKSkKKyAgICAgICAgICAg ICAgICAgIChsaXN0ICdlc2hlbGwtZG8tY29tbWFuZCAscmVwbGFjZW1lbnQpKSkpKQogCiAo ZXJ0LWRlZnRlc3QgZW0tdHJhbXAtdGVzdC9zdS1kZWZhdWx0ICgpCiAgICJUZXN0IEVzaGVs bCBgc3UnIGNvbW1hbmQgd2l0aCBubyBhcmd1bWVudHMuIgpkaWZmIC0tZ2l0IGEvdGVzdC9s aXNwL2VzaGVsbC9lc2gtY21kLXRlc3RzLmVsIGIvdGVzdC9saXNwL2VzaGVsbC9lc2gtY21k LXRlc3RzLmVsCmluZGV4IDE4ZWExZjlhOWQ2Li5jYWMzNDlhMjYxNiAxMDA2NDQKLS0tIGEv dGVzdC9saXNwL2VzaGVsbC9lc2gtY21kLXRlc3RzLmVsCisrKyBiL3Rlc3QvbGlzcC9lc2hl bGwvZXNoLWNtZC10ZXN0cy5lbApAQCAtNTU4LDYgKzU1OCwxNyBAQCBlc2gtY21kLXRlc3Qv dGhyb3cKICAgIDs7IE1ha2Ugc3VyZSB3ZSBjYW4gY2FsbCBhbm90aGVyIGNvbW1hbmQgYWZ0 ZXIgdGhyb3dpbmcuCiAgICAoZXNoZWxsLW1hdGNoLWNvbW1hbmQtb3V0cHV0ICJlY2hvIGFn YWluIiAiXFxgYWdhaW5cbiIpKSkKIAorKGVydC1kZWZ0ZXN0IGVzaC1jbWQtdGVzdC9jb21t YW5kLW5vdC1mb3VuZC9waXBlbGluZSAoKQorICAiRW5zdXJlIHRoYXQgcHJvY2Vzc2VzIGFy ZSBzdG9wcGVkIGlmIGEgY29tbWFuZCBpbiBhIHBpcGVsaW5lIGlzIG5vdCBmb3VuZC4iCisg IChza2lwLXdoZW4gKG9yIChub3QgKGV4ZWN1dGFibGUtZmluZCAiY2F0IikpCisgICAgICAg ICAgICAgICAgIChleGVjdXRhYmxlLWZpbmQgIm5vbmV4aXN0IikpKQorICAod2l0aC10ZW1w LWVzaGVsbAorICAgIChsZXQgKChzdGFydGluZy1wcm9jZXNzLWxpc3QgKHByb2Nlc3MtbGlz dCkpKQorICAgICAgKGVzaGVsbC1tYXRjaC1jb21tYW5kLW91dHB1dCAibm9uZXhpc3QgfCAq Y2F0IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFxgbm9uZXhpc3Q6 IGNvbW1hbmQgbm90IGZvdW5kXG4iKQorICAgICAgKGVzaGVsbC13YWl0LWZvci1zdWJwcm9j ZXNzIHQpCisgICAgICAoc2hvdWxkIChlcXVhbCAocHJvY2Vzcy1saXN0KSBzdGFydGluZy1w cm9jZXNzLWxpc3QpKSkpKQorCiAMCiA7OyBgd2hpY2gnIGNvbW1hbmQKIAotLSAKMi4yNS4x Cgo= --------------T6ZV1O3e8heuwQYy4wa2C0E0--