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#71355: 30.0.50; [PATCH] Improve performance of buffered output in Eshell Date: Mon, 3 Jun 2024 22:36:29 -0700 Message-ID: <22b0dc8f-11dc-5fd2-c75d-88c17580d28d@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------av8HtsLB2xJdLaE5qMPyAIeH" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="36367"; mail-complaints-to="usenet@ciao.gmane.io" To: 71355@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Jun 04 07:37:08 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 1sEMr6-0009Dt-8p for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 04 Jun 2024 07:37:08 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sEMqp-0003Qy-7k; Tue, 04 Jun 2024 01:36:51 -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 1sEMqn-0003Qe-RE for bug-gnu-emacs@gnu.org; Tue, 04 Jun 2024 01:36:49 -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 1sEMqn-0005YJ-Ib for bug-gnu-emacs@gnu.org; Tue, 04 Jun 2024 01:36:49 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1sEMr0-0003cl-CR for bug-gnu-emacs@gnu.org; Tue, 04 Jun 2024 01:37: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: Tue, 04 Jun 2024 05:37:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 71355 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.171747941213913 (code B ref -1); Tue, 04 Jun 2024 05:37:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 4 Jun 2024 05:36:52 +0000 Original-Received: from localhost ([127.0.0.1]:56157 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sEMqo-0003cK-Tf for submit@debbugs.gnu.org; Tue, 04 Jun 2024 01:36:52 -0400 Original-Received: from lists.gnu.org ([209.51.188.17]:37514) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sEMqm-0003cB-F3 for submit@debbugs.gnu.org; Tue, 04 Jun 2024 01:36:50 -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 1sEMqY-0003Q0-UE for bug-gnu-emacs@gnu.org; Tue, 04 Jun 2024 01:36:34 -0400 Original-Received: from mail-oi1-x229.google.com ([2607:f8b0:4864:20::229]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sEMqW-0005Ra-33 for bug-gnu-emacs@gnu.org; Tue, 04 Jun 2024 01:36:34 -0400 Original-Received: by mail-oi1-x229.google.com with SMTP id 5614622812f47-3d1facdf12bso229680b6e.0 for ; Mon, 03 Jun 2024 22:36:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717479390; x=1718084190; darn=gnu.org; h=subject:from:to:content-language:mime-version:date:message-id:from :to:cc:subject:date:message-id:reply-to; bh=w1dgx8Tp0q4abhH7jjDk5Zv6KnyhzIC9zeK7wHpdgVQ=; b=kWHTUkVn/O2XfjZ7GBIya2FKmujO2HaG/li+u84haeURdb8Aa98vgI6J5gQ4T88+wC vPwqBUDAXAoggQPIl7K0ZJUN7iQqecNugsfqlNeA08WGBbZJ1zoG/o3gLLukFjF2rSMh eezn9UXi5+WbEfzuVd4QT6EQ31v+6exaVrKPzrNfO5BMlLKyyC1O/xZue7M/hCDdTChZ rxSkZzTDub7JuizFH9iExd5JF/8+kKa0DOGN10Rysts3IfxcM2B9SevI7x88iJssEMnk UhHtBhO5fKZSX9R8tNh7jjg+ySRIieOcjIoUryIVGo1+3ivBaD1gq+SqDqtNiJvnYAPF r1oQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717479390; x=1718084190; h=subject:from:to:content-language:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=w1dgx8Tp0q4abhH7jjDk5Zv6KnyhzIC9zeK7wHpdgVQ=; b=E14pKX127VzfhXie53DpSlY28jLAjBX2cKZ+HZg4J6TVO/ztQKhW3N248lSInsVf/G mSLta9p/SSxwzExN+yAU5DqOAt+pgMJXaPFXa17pdU6Q+i4ZZ+G/ljRdMoztXKd/odUY Jnp43Xx/NMZGpWORz0NRYUcXeMucECEECYWq9A8prxU4LDVEG98cQCiyW6gxDHdB3t/t nQYDysx8jGhjBUn3DMiCZnAwAhsoitabbGd1tgozuZPfJWypt8GSbdZ0tm5QeGNaHbUN tt2ox/o/hNkiIAIz7VdMz2vjnyEi2IT9c4DyuqnyIOnYZ+QfZUcMNhrMt0o9NOSMFIpS XmvA== X-Gm-Message-State: AOJu0YzCmlOLOpWudrcZ3OW+rJVl85pKwdjJY/5433itLnJvV/fdBr77 sRkXT77pvyPhGW+iJM9UuOfGzfAJjgqfaIlyD39PRC167tp15xTissaldA== X-Google-Smtp-Source: AGHT+IH2LqIiayjh3cXs6R6Hlr4gS6XmrIxtVYy/88p0mxLZWFf1y866NP2buSr/FsTQodGxPAmURQ== X-Received: by 2002:a05:6808:19a8:b0:3c9:7022:7545 with SMTP id 5614622812f47-3d1e34739fdmr13908322b6e.8.1717479389539; Mon, 03 Jun 2024 22:36:29 -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 41be03b00d2f7-6d47b555f1csm9168a12.40.2024.06.03.22.36.28 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 03 Jun 2024 22:36:28 -0700 (PDT) X-Mozilla-News-Host: news://news.gmane.io:119 Content-Language: en-US Received-SPF: pass client-ip=2607:f8b0:4864:20::229; envelope-from=jporterbugs@gmail.com; helo=mail-oi1-x229.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, T_SCC_BODY_TEXT_LINE=-0.01 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:286512 Archived-At: This is a multi-part message in MIME format. --------------av8HtsLB2xJdLaE5qMPyAIeH Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit In Eshell, if I run "time cat config.log" from my Emacs build directory, it reports that it takes about 7.5s. It also doesn't show *any* output until it's completely finished. With my attached patches, it now takes about 0.6s and also shows the output iteratively, redisplaying periodically so users can see that something is happening. The other command most likely to be impacted by this is the built-in version of "ls". When I run "ls -Al /usr/bin" on my system, I go from 2.1s before my patch to 1.2s after. Not as big an improvement, but still noticeable, and it *feels* a lot faster too with the iterative redisplay. I don't usually add a NEWS entry for perf improvements, but this one seemed notable enough that I figured it was worth tooting my own horn. :) --------------av8HtsLB2xJdLaE5qMPyAIeH Content-Type: text/plain; charset=UTF-8; name="0001-Be-more-efficient-when-buffering-output-in-Eshell.patch" Content-Disposition: attachment; filename*0="0001-Be-more-efficient-when-buffering-output-in-Eshell.patch" Content-Transfer-Encoding: base64 RnJvbSAwNTMzYzIxZjRiNTA5ZTYxYTczZWVjNmIyOWI5MzEwNDIwMmMzYmY4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j b20+CkRhdGU6IE1vbiwgMyBKdW4gMjAyNCAyMjowMTo0OCAtMDcwMApTdWJqZWN0OiBbUEFU Q0ggMS8yXSBCZSBtb3JlIGVmZmljaWVudCB3aGVuIGJ1ZmZlcmluZyBvdXRwdXQgaW4gRXNo ZWxsCgpUaGlzIG1ha2VzIHRoZSBidWlsdC1pbiAnZXNoZWxsL2NhdCcgNS0xMHggZmFzdGVy IG9uIGxhcmdlIGZpbGVzIGluIG15Cihzb21ld2hhdCBsaW1pdGVkKSB0ZXN0cy4gIEluIGFk ZGl0aW9uLCB0aGlzIGNoYW5nZSBwZXJpb2RpY2FsbHkKcmVkaXNwbGF5cyB3aGVuIHVzaW5n IHRoZSBFc2hlbGwgYnVmZmVyZWQgb3V0cHV0IHNvIHRoYXQgdXNlcnMgY2FuIHNlZQpzb21l IHByb2dyZXNzLgoKKiBsaXNwL2VzaGVsbC9lc2gtaW8uZWwgKGVzaGVsbC1wcmludC1xdWV1 ZS1zaXplKTogTWFrZSBvYnNvbGV0ZSBpbgpmYXZvciBvZi4uLgooZXNoZWxsLWJ1ZmZlcmVk LXByaW50LXNpemUpOiAuLi4gdGhpcy4KKGVzaGVsbC1idWZmZXJlZC1wcmludC1yZWRpc3Bs YXktdGhyb3R0bGUpOiBOZXcgdXNlciBvcHRpb24uCihlc2hlbGwtcHJpbnQtcXVldWUpOiBN YWtlIGxvY2FsLgooZXNoZWxsLS1uZXh0LXJlZGlzcGxheS10aW1lKTogTmV3IHZhcmlhYmxl LgooZXNoZWxsLXByaW50LXF1ZXVlLWNvdW50KTogTWFrZSBvYnNvbGV0ZSBpbiBmYXZvciBv Zi4uLgooZXNoZWxsLXByaW50LXF1ZXVlLXNpemUpOiAuLi4gdGhpcy4KKGVzaGVsbC1pbml0 LXByaW50LWJ1ZmZlcik6IE1ha2Ugb2Jzb2xldGUuCihlc2hlbGwtZmx1c2gpOiBTaW1wbGlm eS4KKGVzaGVsbC1idWZmZXJlZC1wcmludCk6IENvbXBhcmUgcXVldWVkIG91dHB1dCBsZW5n dGggdG8KJ2VzaGVsbC1idWZmZXJlZC1wcmludC1zaXplJy4KKGVzaGVsbC13aXRoLWJ1ZmZl cmVkLXByaW50KTogTmV3IG1hY3JvLgoKKiBsaXNwL2VzaGVsbC9lc2gtdmFyLmVsIChlc2hl bGwvZW52KToKKiBsaXNwL2VzaGVsbC9lbS1kaXJzLmVsIChlc2hlbGwvY2QpOgoqIGxpc3Av ZXNoZWxsL2VtLWhpc3QuZWwgKGVzaGVsbC9oaXN0b3J5KToKKiBsaXNwL2VzaGVsbC9lbS11 bml4LmVsIChlc2hlbGwvY2F0KToKKiBsaXNwL2VzaGVsbC9lbS1scy5lbCAoZXNoZWxsL2xz KTogVXNlICdlc2hlbGwtd2l0aC1idWZmZXJlZC1wcmludCcuCihmbHVzaC1mdW5jKTogUmVt b3ZlLgooZXNoZWxsLWxzLS1pbnNlcnQtZGlyZWN0b3J5LCBlc2hlbGwtZG8tbHMpOiBSZW1v dmUgJ2ZsdXNoLWZ1bmMnLgoKKiBldGMvTkVXUzogQW5ub3VuY2UgdGhlc2UgaW1wcm92ZW1l bnRzLgotLS0KIGV0Yy9ORVdTICAgICAgICAgICAgICAgfCAgNyArKysrCiBsaXNwL2VzaGVs bC9lbS1kaXJzLmVsIHwgMTMgKysrLS0tCiBsaXNwL2VzaGVsbC9lbS1oaXN0LmVsIHwgMTMg KysrLS0tCiBsaXNwL2VzaGVsbC9lbS1scy5lbCAgIHwgMTQgKysrLS0tLQogbGlzcC9lc2hl bGwvZW0tdW5peC5lbCB8IDI1ICsrKysrKy0tLS0tLQogbGlzcC9lc2hlbGwvZXNoLWlvLmVs ICB8IDg5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogbGlz cC9lc2hlbGwvZXNoLXZhci5lbCB8ICA3ICsrLS0KIDcgZmlsZXMgY2hhbmdlZCwgMTA1IGlu c2VydGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIv ZXRjL05FV1MKaW5kZXggMzAyY2QzMGExMzUuLmIyYzhlNzQzOWU3IDEwMDY0NAotLS0gYS9l dGMvTkVXUworKysgYi9ldGMvTkVXUwpAQCAtOTQ4LDYgKzk0OCwxMyBAQCBmaWxlcyBhbmQg ZGVueSByZWFkIHBlcm1pc3Npb24gZm9yIHVzZXJzIHdobyBhcmUgbm90IG1lbWJlcnMgb2Yg dGhlCiBmaWxlJ3MgZ3JvdXAuICBTZWUgdGhlIEluZm8gbm9kZSAiKGNvcmV1dGlscykgRmls ZSBwZXJtaXNzaW9ucyIgZm9yCiBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgbm90YXRpb24u CiAKKy0tLQorKioqIFBlcmZvcm1hbmNlIGltcHJvdmVtZW50cyBmb3IgaW50ZXJhY3RpdmUg b3V0cHV0IGluIEVzaGVsbC4KK0ludGVyYWN0aXZlIG91dHB1dCBpbiBFc2hlbGwgc2hvdWxk IG5vdyBiZSBzaWduaWZpY25hdGx5IGZhc3RlciwKK2VzcGVjaWFsbHkgZm9yIGJ1aWx0LWlu IGNvbW1hbmRzIHRoYXQgY2FuIHByaW50IGxhcmdlIGFtb3VudHMgb2Ygb3V0cHV0CisoZS5n LiAiY2F0IikuICBJbiBhZGRpdGlvbiwgdGhlc2UgY29tbWFuZHMgY2FuIG5vdyB1cGRhdGUg dGhlIGRpc3BsYXkKK3BlcmlvZGljYWxseSB0byBzaG93IHRoZWlyIHByb2dyZXNzLgorCiAr KysKICoqKiBOZXcgc3BlY2lhbCByZWZlcmVuY2UgdHlwZSAnIzxtYXJrZXIgUE9TSVRJT04g QlVGRkVSPicuCiBUaGlzIHNwZWNpYWwgcmVmZXJlbmNlIHR5cGUgcmV0dXJucyBhIG1hcmtl ciBhdCAnUE9TSVRJT04nIGluCmRpZmYgLS1naXQgYS9saXNwL2VzaGVsbC9lbS1kaXJzLmVs IGIvbGlzcC9lc2hlbGwvZW0tZGlycy5lbAppbmRleCBhM2QxYTM0OTU0MC4uZTcwZjJjZmUx OTYgMTAwNjQ0Ci0tLSBhL2xpc3AvZXNoZWxsL2VtLWRpcnMuZWwKKysrIGIvbGlzcC9lc2hl bGwvZW0tZGlycy5lbApAQCAtNDAwLDEzICs0MDAsMTIgQEAgZXNoZWxsL2NkCiAJCShpbmRl eCAwKSkKIAkgICAgKGlmICg9IGxlbiAwKQogCQkoZXJyb3IgIkRpcmVjdG9yeSByaW5nIGVt cHR5IikpCi0JICAgIChlc2hlbGwtaW5pdC1wcmludC1idWZmZXIpCi0JICAgICh3aGlsZSAo PCBpbmRleCBsZW4pCi0JICAgICAgKGVzaGVsbC1idWZmZXJlZC1wcmludAotCSAgICAgICAo Y29uY2F0IChudW1iZXItdG8tc3RyaW5nIGluZGV4KSAiOiAiCi0JCSAgICAgICAocmluZy1y ZWYgZXNoZWxsLWxhc3QtZGlyLXJpbmcgaW5kZXgpICJcbiIpKQotCSAgICAgIChzZXRxIGlu ZGV4ICgxKyBpbmRleCkpKQotCSAgICAoZXNoZWxsLWZsdXNoKQorICAgICAgICAgICAgKGVz aGVsbC13aXRoLWJ1ZmZlcmVkLXByaW50CisgICAgICAgICAgICAgICh3aGlsZSAoPCBpbmRl eCBsZW4pCisgICAgICAgICAgICAgICAgKGVzaGVsbC1idWZmZXJlZC1wcmludAorICAgICAg ICAgICAgICAgICAoY29uY2F0IChudW1iZXItdG8tc3RyaW5nIGluZGV4KSAiOiAiCisgICAg ICAgICAgICAgICAgICAgICAgICAgKHJpbmctcmVmIGVzaGVsbC1sYXN0LWRpci1yaW5nIGlu ZGV4KSAiXG4iKSkKKyAgICAgICAgICAgICAgICAoc2V0cSBpbmRleCAoMSsgaW5kZXgpKSkp CiAJICAgIChzZXRxIGhhbmRsZWQgdCkpKSkpCiAgICAgIChwYXRoCiAgICAgICAoc2V0cSBw YXRoIChlc2hlbGwtZXhwYW5kLW11bHRpcGxlLWRvdHMgcGF0aCkpKSkKZGlmZiAtLWdpdCBh L2xpc3AvZXNoZWxsL2VtLWhpc3QuZWwgYi9saXNwL2VzaGVsbC9lbS1oaXN0LmVsCmluZGV4 IDg4NjVjYzc0NWEzLi45ZmZkZGZiNjExZiAxMDA2NDQKLS0tIGEvbGlzcC9lc2hlbGwvZW0t aGlzdC5lbAorKysgYi9saXNwL2VzaGVsbC9lbS1oaXN0LmVsCkBAIC0zMzMsNyArMzMzLDYg QEAgZXNoZWxsLXNhdmUtc29tZS1oaXN0b3J5CiAKIChkZWZ1biBlc2hlbGwvaGlzdG9yeSAo JnJlc3QgYXJncykKICAgIkxpc3QgaW4gaGVscCBidWZmZXIgdGhlIGJ1ZmZlcidzIGlucHV0 IGhpc3RvcnkuIgotICAoZXNoZWxsLWluaXQtcHJpbnQtYnVmZmVyKQogICAoZXNoZWxsLWV2 YWwtdXNpbmctb3B0aW9ucwogICAgImhpc3RvcnkiIGFyZ3MKICAgICcoKD9yICJyZWFkIiBu aWwgcmVhZC1oaXN0b3J5CkBAIC0zNzAsMTIgKzM2OSwxMiBAQCBlc2hlbGwvaGlzdG9yeQog ICAgICAgIChsZXQqICgoaW5kZXggKDEtIChvciBsZW5ndGggKHJpbmctbGVuZ3RoIGVzaGVs bC1oaXN0b3J5LXJpbmcpKSkpCiAJICAgICAgKHJlZiAoLSAocmluZy1sZW5ndGggZXNoZWxs LWhpc3RvcnktcmluZykgaW5kZXgpKSkKIAkgOzsgV2UgaGF2ZSB0byBidWlsZCB1cCBhIGxp c3Qgb3Vyc2VsdmVzIGZyb20gdGhlIHJpbmcgdmVjdG9yLgotCSAod2hpbGUgKD49IGluZGV4 IDApCi0JICAgKGVzaGVsbC1idWZmZXJlZC1wcmludAotCSAgICAoZm9ybWF0ICIlNWQgICVz XG4iIHJlZiAoZXNoZWxsLWdldC1oaXN0b3J5IGluZGV4KSkpCi0JICAgKHNldHEgaW5kZXgg KDEtIGluZGV4KQotCQkgcmVmICgxKyByZWYpKSkpKSkpCi0gICAoZXNoZWxsLWZsdXNoKQor ICAgICAgICAgKGVzaGVsbC13aXRoLWJ1ZmZlcmVkLXByaW50CisgICAgICAgICAgICh3aGls ZSAoPj0gaW5kZXggMCkKKyAgICAgICAgICAgICAoZXNoZWxsLWJ1ZmZlcmVkLXByaW50Cisg ICAgICAgICAgICAgIChmb3JtYXQgIiU1ZCAgJXNcbiIgcmVmIChlc2hlbGwtZ2V0LWhpc3Rv cnkgaW5kZXgpKSkKKyAgICAgICAgICAgICAoc2V0cSBpbmRleCAoMS0gaW5kZXgpCisgICAg ICAgICAgICAgICAgICAgcmVmICgxKyByZWYpKSkpKSkpKQogICAgbmlsKSkKIAogKGRlZnVu IGVzaGVsbC1wdXQtaGlzdG9yeSAoaW5wdXQgJm9wdGlvbmFsIHJpbmcgYXQtYmVnaW5uaW5n KQpkaWZmIC0tZ2l0IGEvbGlzcC9lc2hlbGwvZW0tbHMuZWwgYi9saXNwL2VzaGVsbC9lbS1s cy5lbAppbmRleCA4MmQ0YjAxMzkzZi4uOGJmMmUyMGQzMjAgMTAwNjQ0Ci0tLSBhL2xpc3Av ZXNoZWxsL2VtLWxzLmVsCisrKyBiL2xpc3AvZXNoZWxsL2VtLWxzLmVsCkBAIC0yMjksNyAr MjI5LDYgQEAgYmxvY2stc2l6ZQogKGRlZnZhciBkZXJlZmVyZW5jZS1saW5rcykKIChkZWZ2 YXIgZGlyLWxpdGVyYWwpCiAoZGVmdmFyIGVycm9yLWZ1bmMpCi0oZGVmdmFyIGZsdXNoLWZ1 bmMpCiAoZGVmdmFyIGh1bWFuLXJlYWRhYmxlKQogKGRlZnZhciBpZ25vcmUtcGF0dGVybikK IChkZWZ2YXIgaW5zZXJ0LWZ1bmMpCkBAIC0yNzgsNyArMjc3LDYgQEAgZXNoZWxsLWxzLS1p bnNlcnQtZGlyZWN0b3J5CiAgICAgICAgICAgKHJlcXVpcmUgJ2VtLWdsb2IpCiAgICAgICAg ICAgKGxldCogKChpbnNlcnQtZnVuYyAnaW5zZXJ0KQogICAgICAgICAgICAgICAgICAoZXJy b3ItZnVuYyAnaW5zZXJ0KQotICAgICAgICAgICAgICAgICAoZmx1c2gtZnVuYyAnaWdub3Jl KQogICAgICAgICAgICAgICAgICAoZXNoZWxsLWVycm9yLWlmLW5vLWdsb2IgdCkKICAgICAg ICAgICAgICAgICAgKHRhcmdldCA7IEV4cGFuZCB0aGUgc2hlbGwgd2lsZGNhcmRzIGlmIGFu eS4KICAgICAgICAgICAgICAgICAgIChpZiAoYW5kIChhdG9tIGZpbGUpCkBAIC0zMjQsMTAg KzMyMiwxMCBAQCBlc2hlbGwtbHMtLWRpcmVkCiAKIChkZWZzdWJzdCBlc2hlbGwvbHMgKCZy ZXN0IGFyZ3MpCiAgICJBbiBhbGlhcyB2ZXJzaW9uIG9mIGBlc2hlbGwtZG8tbHMnLiIKLSAg KGxldCAoKGluc2VydC1mdW5jICdlc2hlbGwtYnVmZmVyZWQtcHJpbnQpCi0JKGVycm9yLWZ1 bmMgJ2VzaGVsbC1lcnJvcikKLQkoZmx1c2gtZnVuYyAnZXNoZWxsLWZsdXNoKSkKLSAgICAo YXBwbHkgJ2VzaGVsbC1kby1scyBhcmdzKSkpCisgIChlc2hlbGwtd2l0aC1idWZmZXJlZC1w cmludAorICAgIChsZXQgKChpbnNlcnQtZnVuYyAjJ2VzaGVsbC1idWZmZXJlZC1wcmludCkK KyAgICAgICAgICAoZXJyb3ItZnVuYyAjJ2VzaGVsbC1lcnJvcikpCisgICAgICAoYXBwbHkg J2VzaGVsbC1kby1scyBhcmdzKSkpKQogCiAocHV0ICdlc2hlbGwvbHMgJ2VzaGVsbC1uby1u dW1lcmljLWNvbnZlcnNpb25zIHQpCiAocHV0ICdlc2hlbGwvbHMgJ2VzaGVsbC1maWxlbmFt ZS1hcmd1bWVudHMgdCkKQEAgLTMzNiw3ICszMzQsNiBAQCBlc2hlbGwvbHMKIAogKGRlZnVu IGVzaGVsbC1kby1scyAoJnJlc3QgYXJncykKICAgIkltcGxlbWVudGF0aW9uIG9mIFwibHNc IiBpbiBMaXNwLCBwYXNzaW5nIEFSR1MuIgotICAoZnVuY2FsbCBmbHVzaC1mdW5jIC0xKQog ICA7OyBQcm9jZXNzIHRoZSBjb21tYW5kIGFyZ3VtZW50cywgYW5kIGJlZ2luIGxpc3Rpbmcg ZmlsZXMuCiAgIChlc2hlbGwtZXZhbC11c2luZy1vcHRpb25zCiAgICAibHMiIChpZiBlc2hl bGwtbHMtaW5pdGlhbC1hcmdzCkBAIC00MjIsOCArNDE5LDcgQEAgZXNoZWxsLWRvLWxzCiAJ CSAgICAgIChlc2hlbGwtZmlsZS1hdHRyaWJ1dGVzCiAJCSAgICAgICBhcmcgKGlmIG51bWVy aWMtdWlkLWdpZCAnaW50ZWdlciAnc3RyaW5nKSkpKQogCSAgICAgIGFyZ3MpCi0gICAgICB0 IChleHBhbmQtZmlsZS1uYW1lIGRlZmF1bHQtZGlyZWN0b3J5KSkpCi0gICAoZnVuY2FsbCBm bHVzaC1mdW5jKSkpCisgICAgICB0IChleHBhbmQtZmlsZS1uYW1lIGRlZmF1bHQtZGlyZWN0 b3J5KSkpKSkKIAogKGRlZnN1YnN0IGVzaGVsbC1scy1wcmludGFibGUtc2l6ZSAoZmlsZXNp emUgJm9wdGlvbmFsIGJ5LWJsb2Nrc2l6ZSkKICAgIlJldHVybiBhIHByaW50YWJsZSBGSUxF U0laRS4iCmRpZmYgLS1naXQgYS9saXNwL2VzaGVsbC9lbS11bml4LmVsIGIvbGlzcC9lc2hl bGwvZW0tdW5peC5lbAppbmRleCA0MTM3YzA1ZmE0MS4uZTZiZDAzODFhMTQgMTAwNjQ0Ci0t LSBhL2xpc3AvZXNoZWxsL2VtLXVuaXguZWwKKysrIGIvbGlzcC9lc2hlbGwvZW0tdW5peC5l bApAQCAtNjU5LDcgKzY1OSw2IEBAIGVzaGVsbC9jYXQKIAkgIChpZiBlc2hlbGwtaW4tcGlw ZWxpbmUtcAogCSAgICAgIChlcnJvciAiRXNoZWxsJ3MgYGNhdCcgZG9lcyBub3Qgd29yayBp biBwaXBlbGluZXMiKQogCSAgICAoZXJyb3IgIkVzaGVsbCdzIGBjYXQnIGNhbm5vdCBkaXNw bGF5IG9uZSBvZiB0aGUgZmlsZXMgZ2l2ZW4iKSkpKQotICAgIChlc2hlbGwtaW5pdC1wcmlu dC1idWZmZXIpCiAgICAgKGVzaGVsbC1ldmFsLXVzaW5nLW9wdGlvbnMKICAgICAgImNhdCIg YXJncwogICAgICAnKCg/aCAiaGVscCIgbmlsIG5pbCAic2hvdyB0aGlzIHVzYWdlIHNjcmVl biIpCkBAIC02NzIsMTggKzY3MSwxOCBAQCBlc2hlbGwvY2F0CiAJICAgKHRocm93ICdlc2hl bGwtZXh0ZXJuYWwKIAkJICAoZXNoZWxsLWV4dGVybmFsLWNvbW1hbmQgImNhdCIgYXJncykp KSkKICAgICAgKGxldCAoKGN1cmJ1ZiAoY3VycmVudC1idWZmZXIpKSkKLSAgICAgICAoZG9s aXN0IChmaWxlIGFyZ3MpCi0JICh3aXRoLXRlbXAtYnVmZmVyCi0JICAgKGluc2VydC1maWxl LWNvbnRlbnRzIGZpbGUpCi0JICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKLQkgICAod2hp bGUgKG5vdCAoZW9icCkpCi0JICAgICAobGV0ICgoc3RyIChidWZmZXItc3Vic3RyaW5nCi0J CQkgKHBvaW50KSAobWluICgxKyAobGluZS1lbmQtcG9zaXRpb24pKQotCQkJCSAgICAgIChw b2ludC1tYXgpKSkpKQotCSAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBjdXJidWYKLQkJ IChlc2hlbGwtYnVmZmVyZWQtcHJpbnQgc3RyKSkpCi0JICAgICAoZm9yd2FyZC1saW5lKSkp KSkKLSAgICAgKGVzaGVsbC1mbHVzaCkpKSkKKyAgICAgICAoZXNoZWxsLXdpdGgtYnVmZmVy ZWQtcHJpbnQKKyAgICAgICAgIChkb2xpc3QgKGZpbGUgYXJncykKKwkgICAod2l0aC10ZW1w LWJ1ZmZlcgorCSAgICAgKGluc2VydC1maWxlLWNvbnRlbnRzIGZpbGUpCisJICAgICAoZ290 by1jaGFyIChwb2ludC1taW4pKQorICAgICAgICAgICAgICh3aGlsZSAobm90IChlb2JwKSkK KyAgICAgICAgICAgICAgIChsZXQqICgocG9zIChtaW4gKCsgKHBvaW50KSBlc2hlbGwtYnVm ZmVyZWQtcHJpbnQtc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBv aW50LW1heCkpKQorICAgICAgICAgICAgICAgICAgICAgIChzdHIgKGJ1ZmZlci1zdWJzdHJp bmcgKHBvaW50KSBwb3MpKSkKKyAgICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZm ZXIgY3VyYnVmCisgICAgICAgICAgICAgICAgICAgKGVzaGVsbC1idWZmZXJlZC1wcmludCBz dHIpKQorICAgICAgICAgICAgICAgICAoZ290by1jaGFyIHBvcykpKSkpKSkpKSkKIAogKHB1 dCAnZXNoZWxsL2NhdCAnZXNoZWxsLW5vLW51bWVyaWMtY29udmVyc2lvbnMgdCkKIChwdXQg J2VzaGVsbC9jYXQgJ2VzaGVsbC1maWxlbmFtZS1hcmd1bWVudHMgdCkKZGlmZiAtLWdpdCBh L2xpc3AvZXNoZWxsL2VzaC1pby5lbCBiL2xpc3AvZXNoZWxsL2VzaC1pby5lbAppbmRleCBj NzAxN2VlMWQ3MC4uNzU4N2I3ZGRhYzkgMTAwNjQ0Ci0tLSBhL2xpc3AvZXNoZWxsL2VzaC1p by5lbAorKysgYi9saXNwL2VzaGVsbC9lc2gtaW8uZWwKQEAgLTExMiwxMCArMTEyLDI4IEBA IGVzaGVsbC1lcnJvci1oYW5kbGUKIAogKGRlZmN1c3RvbSBlc2hlbGwtcHJpbnQtcXVldWUt c2l6ZSA1CiAgICJUaGUgc2l6ZSBvZiB0aGUgcHJpbnQgcXVldWUsIGZvciBkb2luZyBidWZm ZXJlZCBwcmludGluZy4KK1RoaXMgdmFyaWFibGUgaXMgb2Jzb2xldGUuICBZb3Ugc2hvdWxk IHVzZSBgZXNoZWxsLWJ1ZmZlcmVkLXByaW50LXNpemUnCitpbnN0ZWFkLiIKKyAgOnR5cGUg J2ludGVnZXIKKyAgOmdyb3VwICdlc2hlbGwtaW8pCisobWFrZS1vYnNvbGV0ZS12YXJpYWJs ZSAnZXNoZWxsLXByaW50LXF1ZXVlLXNpemUKKyAgICAgICAgICAgICAgICAgICAgICAgICdl c2hlbGwtYnVmZmVyZWQtcHJpbnQtc2l6ZSAiMzAuMSIpCisKKyhkZWZjdXN0b20gZXNoZWxs LWJ1ZmZlcmVkLXByaW50LXNpemUgMjA0OAorICAiVGhlIHNpemUgb2YgdGhlIHByaW50IHF1 ZXVlIGluIGNoYXJhY3RlcnMsIGZvciBkb2luZyBidWZmZXJlZCBwcmludGluZy4KIFRoaXMg aXMgYmFzaWNhbGx5IGEgc3BlZWQgZW5oYW5jZW1lbnQsIHRvIGF2b2lkIGJsb2NraW5nIHRo ZSBMaXNwIGNvZGUKIGZyb20gZXhlY3V0aW5nIHdoaWxlIEVtYWNzIGlzIHJlZGlzcGxheWlu Zy4iCiAgIDp0eXBlICdpbnRlZ2VyCi0gIDpncm91cCAnZXNoZWxsLWlvKQorICA6Z3JvdXAg J2VzaGVsbC1pbworICA6dmVyc2lvbiAiMzAuMSIpCisKKyhkZWZjdXN0b20gZXNoZWxsLWJ1 ZmZlcmVkLXByaW50LXJlZGlzcGxheS10aHJvdHRsZSAwLjAyNQorICAiVGhlIG1pbmltdW0g dGltZSBpbiBzZWNvbmRzIGJldHdlZW4gcmVkaXNwbGF5cyB3aGVuIHVzaW5nIGJ1ZmZlcmVk IHByaW50aW5nLgorSWYgbmlsLCBkb24ndCByZWRpc3BsYXkgd2hpbGUgcHJpbnRpbmcuIgor ICA6dHlwZSAnKGNob2ljZSBudW1iZXIKKyAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcg IkRvbid0IHJlZGlzcGxheSIgbmlsKSkKKyAgOmdyb3VwICdlc2hlbGwtaW8KKyAgOnZlcnNp b24gIjMwLjEiKQogCiAoZGVmY3VzdG9tIGVzaGVsbC12aXJ0dWFsLXRhcmdldHMKICAgJyg7 OyBUaGUgbGl0ZXJhbCBzdHJpbmcgIi9kZXYvbnVsbCIgaXMgaW50ZW50aW9uYWwgaGVyZS4g IEl0IGp1c3QKQEAgLTQ2MCw0MCArNDc4LDY1IEBAIGVzaGVsbC1pbnRlcmFjdGl2ZS1vdXRw dXQtcAogICAgICAgICAgICAgIChlcXVhbCAoY2FhciAoYXJlZiBoYW5kbGVzIGVzaGVsbC1l cnJvci1oYW5kbGUpKSAnKHQpKSkKICAgICAgIChlcXVhbCAoY2FhciAoYXJlZiBoYW5kbGVz IGluZGV4KSkgJyh0KSkpKSkKIAotKGRlZnZhciBlc2hlbGwtcHJpbnQtcXVldWUgbmlsKQor KGRlZnZhci1sb2NhbCBlc2hlbGwtcHJpbnQtcXVldWUgbmlsKQorKGRlZnZhci1sb2NhbCBl c2hlbGwtcHJpbnQtcXVldWUtc2l6ZSBuaWwpCisoZGVmdmFyIGVzaGVsbC0tbmV4dC1yZWRp c3BsYXktdGltZSBuaWwpCisKIChkZWZ2YXIgZXNoZWxsLXByaW50LXF1ZXVlLWNvdW50IC0x KQorKG1ha2Utb2Jzb2xldGUtdmFyaWFibGUgJ2VzaGVsbC1wcmludC1xdWV1ZS1jb3VudAor ICAgICAgICAgICAgICAgICAgICAgICAgJ2VzaGVsbC1wcmludC1xdWV1ZS1zaXplICIzMC4x IikKIAogKGRlZnN1YnN0IGVzaGVsbC1wcmludCAob2JqZWN0KQogICAiT3V0cHV0IE9CSkVD VCB0byB0aGUgc3RhbmRhcmQgb3V0cHV0IGhhbmRsZS4iCiAgIChlc2hlbGwtb3V0cHV0LW9i amVjdCBvYmplY3QgZXNoZWxsLW91dHB1dC1oYW5kbGUpKQogCi0oZGVmdW4gZXNoZWxsLWZs dXNoICgmb3B0aW9uYWwgcmVzZXQtcCkKLSAgIkZsdXNoIG91dCBhbnkgbGluZXMgdGhhdCBo YXZlIGJlZW4gcXVldWVkIGZvciBwcmludGluZy4KLU11c3QgYmUgY2FsbGVkIGJlZm9yZSBw cmludGluZyBiZWdpbnMgd2l0aCAtMSBhcyBpdHMgYXJndW1lbnQsIGFuZAotYWZ0ZXIgYWxs IHByaW50aW5nIGlzIG92ZXIgd2l0aCBubyBhcmd1bWVudC4iCi0gIChpZ25vcmUKLSAgIChp ZiByZXNldC1wCi0gICAgICAgKHNldHEgZXNoZWxsLXByaW50LXF1ZXVlIG5pbAotCSAgICAg ZXNoZWxsLXByaW50LXF1ZXVlLWNvdW50IHJlc2V0LXApCi0gICAgIChpZiBlc2hlbGwtcHJp bnQtcXVldWUKLQkgKGVzaGVsbC1wcmludCBlc2hlbGwtcHJpbnQtcXVldWUpKQotICAgICAo ZXNoZWxsLWZsdXNoIDApKSkpCi0KIChkZWZ1biBlc2hlbGwtaW5pdC1wcmludC1idWZmZXIg KCkKICAgIkluaXRpYWxpemUgdGhlIGJ1ZmZlcmVkIHByaW50aW5nIHF1ZXVlLiIKKyAgKGRl Y2xhcmUgKG9ic29sZXRlICMnZXNoZWxsLXdpdGgtYnVmZmVyZWQtcHJpbnQgIjMwLjEiKSkK ICAgKGVzaGVsbC1mbHVzaCAtMSkpCiAKKyhkZWZ1biBlc2hlbGwtZmx1c2ggKCZvcHRpb25h bCBjbGVhcikKKyAgIkZsdXNoIG91dCBhbnkgbGluZXMgdGhhdCBoYXZlIGJlZW4gcXVldWVk IGZvciBwcmludGluZy4KK0lmIENMRUFSIGlzIG5vbi1uaWwsIGp1c3QgZGVsZXRlIHRoZSBl eGlzdGluZyBsaW5lcyBpbnN0ZWFkIG9mIHByaW50aW5nCit0aGVtLiIKKyAgKHdoZW4gZXNo ZWxsLXByaW50LXF1ZXVlCisgICAgKHVubGVzcyBjbGVhcgorICAgICAgKGVzaGVsbC1wcmlu dCAoYXBwbHkgIydjb25jYXQgZXNoZWxsLXByaW50LXF1ZXVlKSkKKyAgICAgIDs7IFdoZW4g cHJpbnRpbmcgaW50ZXJhY3RpdmVseSAoc2VlIGBlc2hlbGwtd2l0aC1idWZmZXJlZC1wcmlu dCcpLAorICAgICAgOzsgcGVyaW9kaWNhbGx5IHJlZGlzcGxheSBzbyB0aGUgdXNlciBjYW4g c2VlIHNvbWUgcHJvZ3Jlc3MuCisgICAgICAod2hlbiAoYW5kIGVzaGVsbC0tbmV4dC1yZWRp c3BsYXktdGltZQorICAgICAgICAgICAgICAgICAodGltZS1sZXNzLXAgZXNoZWxsLS1uZXh0 LXJlZGlzcGxheS10aW1lIChjdXJyZW50LXRpbWUpKSkKKyAgICAgICAgKHJlZGlzcGxheSkK KyAgICAgICAgKHNldHEgZXNoZWxsLS1uZXh0LXJlZGlzcGxheS10aW1lCisgICAgICAgICAg ICAgICh0aW1lLWFkZCBlc2hlbGwtLW5leHQtcmVkaXNwbGF5LXRpbWUKKyAgICAgICAgICAg ICAgICAgICAgICAgIGVzaGVsbC1idWZmZXJlZC1wcmludC1yZWRpc3BsYXktdGhyb3R0bGUp KSkpCisgICAgKHNldHEgZXNoZWxsLXByaW50LXF1ZXVlIG5pbAorICAgICAgICAgIGVzaGVs bC1wcmludC1xdWV1ZS1zaXplIDApKSkKKwogKGRlZnVuIGVzaGVsbC1idWZmZXJlZC1wcmlu dCAoJnJlc3Qgc3RyaW5ncykKICAgIkEgYnVmZmVyZWQgcHJpbnQgLS0gKmZvciBzdHJpbmdz IG9ubHkqLiIKLSAgKGlmICg8IGVzaGVsbC1wcmludC1xdWV1ZS1jb3VudCAwKQotICAgICAg KHByb2duCi0JKGVzaGVsbC1wcmludCAoYXBwbHkgJ2NvbmNhdCBzdHJpbmdzKSkKLQkoc2V0 cSBlc2hlbGwtcHJpbnQtcXVldWUtY291bnQgMCkpCi0gICAgKGlmICg9IGVzaGVsbC1wcmlu dC1xdWV1ZS1jb3VudCBlc2hlbGwtcHJpbnQtcXVldWUtc2l6ZSkKLQkoZXNoZWxsLWZsdXNo KSkKLSAgICAoc2V0cSBlc2hlbGwtcHJpbnQtcXVldWUKLQkgIChjb25jYXQgZXNoZWxsLXBy aW50LXF1ZXVlIChhcHBseSAnY29uY2F0IHN0cmluZ3MpKQotCSAgZXNoZWxsLXByaW50LXF1 ZXVlLWNvdW50ICgxKyBlc2hlbGwtcHJpbnQtcXVldWUtY291bnQpKSkpCisgIChzZXRxIGVz aGVsbC1wcmludC1xdWV1ZQorICAgICAgICAobmNvbmMgZXNoZWxsLXByaW50LXF1ZXVlIHN0 cmluZ3MpCisgICAgICAgIGVzaGVsbC1wcmludC1xdWV1ZS1zaXplCisgICAgICAgICgrIGVz aGVsbC1wcmludC1xdWV1ZS1zaXplIChhcHBseSAjJysgKG1hcGNhciAjJ2xlbmd0aCBzdHJp bmdzKSkpKQorICAod2hlbiAoPiBlc2hlbGwtcHJpbnQtcXVldWUtc2l6ZSBlc2hlbGwtYnVm ZmVyZWQtcHJpbnQtc2l6ZSkKKyAgICAoZXNoZWxsLWZsdXNoKSkpCisKKyhkZWZtYWNybyBl c2hlbGwtd2l0aC1idWZmZXJlZC1wcmludCAoJnJlc3QgYm9keSkKKyAgIkluaXRpYWxpemUg YnVmZmVyZWQgcHJpbnRpbmcgZm9yIEVzaGVsbCwgYW5kIHRoZW4gZXZhbHVhdGUgQk9EWS4K K1doZW4gcHJpbnRpbmcgaW50ZXJhY3RpdmVseSwgdGhpcyB3aWxsIGNhbGwgYHJlZGlzcGxh eScgZXZlcnkKK2Blc2hlbGwtYnVmZmVyZWQtcHJpbnQtcmVkaXNwbGF5LXRocm90dGxlJyBz ZWNvbmRzIHNvIHRoYXQgdGhlIHVzZXIgY2FuCitzZWUgdGhlIHByb2dyZXNzLiIKKyAgKGRl Y2xhcmUgKGluZGVudCAwKSkKKyAgYCh1bndpbmQtcHJvdGVjdAorICAgICAgIChsZXQgKChl c2hlbGwtLW5leHQtcmVkaXNwbGF5LXRpbWUKKyAgICAgICAgICAgICAgKHdoZW4gKGFuZCBl c2hlbGwtYnVmZmVyZWQtcHJpbnQtcmVkaXNwbGF5LXRocm90dGxlCisgICAgICAgICAgICAg ICAgICAgICAgICAgKGVzaGVsbC1pbnRlcmFjdGl2ZS1vdXRwdXQtcCkpCisgICAgICAgICAg ICAgICAgKHRpbWUtYWRkIChjdXJyZW50LXRpbWUpCisgICAgICAgICAgICAgICAgICAgICAg ICAgIGVzaGVsbC1idWZmZXJlZC1wcmludC1yZWRpc3BsYXktdGhyb3R0bGUpKSkpCisgICAg ICAgICAgKGVzaGVsbC1mbHVzaCB0KQorICAgICAgICAgICxAYm9keSkKKyAgICAgKGVzaGVs bC1mbHVzaCkpKQogCiAoZGVmc3Vic3QgZXNoZWxsLWVycm9yIChvYmplY3QpCiAgICJPdXRw dXQgT0JKRUNUIHRvIHRoZSBzdGFuZGFyZCBlcnJvciBoYW5kbGUuIgpkaWZmIC0tZ2l0IGEv bGlzcC9lc2hlbGwvZXNoLXZhci5lbCBiL2xpc3AvZXNoZWxsL2VzaC12YXIuZWwKaW5kZXgg MDJiNWM3ODU2MjUuLmYwMjcwYWNhOTJjIDEwMDY0NAotLS0gYS9saXNwL2VzaGVsbC9lc2gt dmFyLmVsCisrKyBiL2xpc3AvZXNoZWxsL2VzaC12YXIuZWwKQEAgLTQzNywxMCArNDM3LDkg QEAgZXNoZWxsL2VudgogICAgKGlmIGFyZ3MKICAgICAgICAob3IgKGVzaGVsbC1wYXJzZS1s b2NhbC12YXJpYWJsZXMgYXJncykKICAgICAgICAgICAgKGVzaGVsbC1uYW1lZC1jb21tYW5k IChjYXIgYXJncykgKGNkciBhcmdzKSkpCi0gICAgIChlc2hlbGwtaW5pdC1wcmludC1idWZm ZXIpCi0gICAgIChkb2xpc3QgKHNldHRpbmcgKHNvcnQgKGVzaGVsbC1lbnZpcm9ubWVudC12 YXJpYWJsZXMpICdzdHJpbmctbGVzc3ApKQotICAgICAgIChlc2hlbGwtYnVmZmVyZWQtcHJp bnQgc2V0dGluZyAiXG4iKSkKLSAgICAgKGVzaGVsbC1mbHVzaCkpKSkKKyAgICAgKGVzaGVs bC13aXRoLWJ1ZmZlcmVkLXByaW50CisgICAgICAgKGRvbGlzdCAoc2V0dGluZyAoc29ydCAo ZXNoZWxsLWVudmlyb25tZW50LXZhcmlhYmxlcykgJ3N0cmluZy1sZXNzcCkpCisgICAgICAg ICAoZXNoZWxsLWJ1ZmZlcmVkLXByaW50IHNldHRpbmcgIlxuIikpKSkpKQogCiAoZGVmdW4g ZXNoZWxsLWluc2VydC1lbnZ2YXIgKGVudnZhci1uYW1lKQogICAiSW5zZXJ0IEVOVlZBUi1O QU1FIGludG8gdGhlIGN1cnJlbnQgYnVmZmVyIGF0IHBvaW50LiIKLS0gCjIuMjUuMQoK --------------av8HtsLB2xJdLaE5qMPyAIeH Content-Type: text/plain; charset=UTF-8; name="0002-Improve-implementations-of-some-Eshell-output-filter.patch" Content-Disposition: attachment; filename*0="0002-Improve-implementations-of-some-Eshell-output-filter.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3YWY5ZDhkMDBjZjRjMWM5ODk5ZGRiZTdkMWUxMDEyOWQyNjFjMDllIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j b20+CkRhdGU6IE1vbiwgMyBKdW4gMjAyNCAyMjowNjo0OSAtMDcwMApTdWJqZWN0OiBbUEFU Q0ggMi8yXSBJbXByb3ZlIGltcGxlbWVudGF0aW9ucyBvZiBzb21lIEVzaGVsbCBvdXRwdXQg ZmlsdGVyCiBmdW5jdGlvbnMKCiogbGlzcC9lc2hlbGwvZXNoLW1vZGUuZWwgKGVzaGVsbC1w b3N0b3V0cHV0LXNjcm9sbC10by1ib3R0b20pOiBVc2UKJ2dldC1idWZmZXItd2luZG93LWxp c3QnIGZvciBzaW1wbGljaXR5LgooZXNoZWxsLWhhbmRsZS1jb250cm9sLWNvZGVzKTogVXNl ICdyZS1zZWFyY2gtZm9yd2FyZCc7IHRoaXMgd2F5IGlzIG11Y2gKZmFzdGVyLgoKKiB0ZXN0 L2xpc3AvZXNoZWxsL2VzaC1tb2RlLXRlc3RzLmVsOiBOZXcgZmlsZS4KLS0tCiBsaXNwL2Vz aGVsbC9lc2gtbW9kZS5lbCAgICAgICAgICAgIHwgNjggKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLS0tCiB0ZXN0L2xpc3AvZXNoZWxsL2VzaC1tb2RlLXRlc3RzLmVsIHwgNjIgKysr KysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDkyIGluc2VydGlv bnMoKyksIDM4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3QvbGlzcC9l c2hlbGwvZXNoLW1vZGUtdGVzdHMuZWwKCmRpZmYgLS1naXQgYS9saXNwL2VzaGVsbC9lc2gt bW9kZS5lbCBiL2xpc3AvZXNoZWxsL2VzaC1tb2RlLmVsCmluZGV4IGU2ZjNjYjVmNmFkLi5l YzFhMDdiN2UyZiAxMDA2NDQKLS0tIGEvbGlzcC9lc2hlbGwvZXNoLW1vZGUuZWwKKysrIGIv bGlzcC9lc2hlbGwvZXNoLW1vZGUuZWwKQEAgLTc2NSwzMCArNzY1LDI1IEBAIGVzaGVsbC1w b3N0b3V0cHV0LXNjcm9sbC10by1ib3R0b20KIAkgKGN1cnJlbnQgKGN1cnJlbnQtYnVmZmVy KSkKIAkgKHNjcm9sbCBlc2hlbGwtc2Nyb2xsLXRvLWJvdHRvbS1vbi1vdXRwdXQpKQogICAg ICh1bndpbmQtcHJvdGVjdAotCSh3YWxrLXdpbmRvd3MKLSAgICAgICAgIChsYW1iZGEgKHdp bmRvdykKLSAgICAgICAgICAgKGlmIChlcSAod2luZG93LWJ1ZmZlciB3aW5kb3cpIGN1cnJl bnQpCi0gICAgICAgICAgICAgICAocHJvZ24KLSAgICAgICAgICAgICAgICAgKHNlbGVjdC13 aW5kb3cgd2luZG93KQotICAgICAgICAgICAgICAgICAoaWYgKGFuZCAoPCAocG9pbnQpIGVz aGVsbC1sYXN0LW91dHB1dC1lbmQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChvciAo ZXEgc2Nyb2xsIHQpIChlcSBzY3JvbGwgJ2FsbCkKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDs7IE1heWJlIHVzZXIgd2FudHMgcG9pbnQgdG8ganVtcCB0byBlbmQuCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoYW5kIChlcSBzY3JvbGwgJ3RoaXMpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcSBzZWxlY3RlZCB3aW5kb3cpKQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCAoZXEgc2Nyb2xsICdvdGhlcnMp Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKGVxIHNlbGVjdGVk IHdpbmRvdykpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSWYgcG9pbnQg d2FzIGF0IHRoZSBlbmQsIGtlZXAgaXQgYXQgZW5kLgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKD49IChwb2ludCkgZXNoZWxsLWxhc3Qtb3V0cHV0LXN0YXJ0KSkpCi0gICAg ICAgICAgICAgICAgICAgICAoZ290by1jaGFyIGVzaGVsbC1sYXN0LW91dHB1dC1lbmQpKQot ICAgICAgICAgICAgICAgICA7OyBPcHRpb25hbGx5IHNjcm9sbCBzbyB0aGF0IHRoZSB0ZXh0 Ci0gICAgICAgICAgICAgICAgIDs7IGVuZHMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgd2luZG93 LgotICAgICAgICAgICAgICAgICAoaWYgKGFuZCBlc2hlbGwtc2Nyb2xsLXNob3ctbWF4aW11 bS1vdXRwdXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKD49IChwb2ludCkgZXNoZWxs LWxhc3Qtb3V0cHV0LWVuZCkpCi0gICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNp b24KLSAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKLSAg ICAgICAgICAgICAgICAgICAgICAgKHJlY2VudGVyIC0xKSkpCi0gICAgICAgICAgICAgICAg IChzZWxlY3Qtd2luZG93IHNlbGVjdGVkKSkpKQotCSBuaWwgdCkKKyAgICAgICAgKGRvbGlz dCAod2luZG93IChnZXQtYnVmZmVyLXdpbmRvdy1saXN0IGN1cnJlbnQgbmlsIHQpKQorICAg ICAgICAgICh3aXRoLXNlbGVjdGVkLXdpbmRvdyB3aW5kb3cKKyAgICAgICAgICAgICh3aGVu IChhbmQgKDwgKHBvaW50KSBlc2hlbGwtbGFzdC1vdXRwdXQtZW5kKQorICAgICAgICAgICAg ICAgICAgICAgICAob3IgKGVxIHNjcm9sbCB0KSAoZXEgc2Nyb2xsICdhbGwpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICA7OyBNYXliZSB1c2VyIHdhbnRzIHBvaW50IHRvIGp1bXAg dG8gZW5kLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCAoZXEgc2Nyb2xsICd0 aGlzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgc2VsZWN0ZWQgd2lu ZG93KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgKGVxIHNjcm9sbCAnb3Ro ZXJzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChlcSBzZWxlY3Rl ZCB3aW5kb3cpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IElmIHBvaW50IHdh cyBhdCB0aGUgZW5kLCBrZWVwIGl0IGF0IGVuZC4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICg+PSAocG9pbnQpIGVzaGVsbC1sYXN0LW91dHB1dC1zdGFydCkpKQorICAgICAgICAg ICAgICAoZ290by1jaGFyIGVzaGVsbC1sYXN0LW91dHB1dC1lbmQpKQorICAgICAgICAgICAg OzsgT3B0aW9uYWxseSBzY3JvbGwgc28gdGhhdCB0aGUgdGV4dCBlbmRzIGF0IHRoZSBib3R0 b20gb2YKKyAgICAgICAgICAgIDs7IHRoZSB3aW5kb3cuCisgICAgICAgICAgICAod2hlbiAo YW5kIGVzaGVsbC1zY3JvbGwtc2hvdy1tYXhpbXVtLW91dHB1dAorICAgICAgICAgICAgICAg ICAgICAgICAoPj0gKHBvaW50KSBlc2hlbGwtbGFzdC1vdXRwdXQtZW5kKSkKKyAgICAgICAg ICAgICAgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAocG9p bnQtbWF4KSkKKyAgICAgICAgICAgICAgICAocmVjZW50ZXIgLTEpKSkpKQogICAgICAgKHNl dC1idWZmZXIgY3VycmVudCkpKSkKIAogKGRlZnVuIGVzaGVsbC1iZWdpbm5pbmctb2YtaW5w dXQgKCkKQEAgLTk3NywyNyArOTcyLDI0IEBAIGVzaGVsbC1oYW5kbGUtY29udHJvbC1jb2Rl cwogICAgIChnb3RvLWNoYXIgZXNoZWxsLWxhc3Qtb3V0cHV0LWJsb2NrLWJlZ2luKQogICAg ICh1bmxlc3MgKGVvbHApCiAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpKQotICAgICh3aGls ZSAoPCAocG9pbnQpIGVzaGVsbC1sYXN0LW91dHB1dC1lbmQpCi0gICAgICAobGV0ICgoY2hh ciAoY2hhci1hZnRlcikpKQorICAgICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgKHJ4IChh bnkgP1xyID9cYSA/XEMtaCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlc2hl bGwtbGFzdC1vdXRwdXQtZW5kIHQpCisgICAgICAobGV0ICgoY2hhciAoY2hhci1iZWZvcmUp KSkKICAgICAgICAgKGNvbmQKICAgICAgICAgICgoZXEgY2hhciA/XHIpCi0gICAgICAgICAg KGlmICg8ICgxKyAocG9pbnQpKSBlc2hlbGwtbGFzdC1vdXRwdXQtZW5kKQotICAgICAgICAg ICAgICAoaWYgKG1lbXEgKGNoYXItYWZ0ZXIgKDErIChwb2ludCkpKQotICAgICAgICAgICAg ICAgICAgICAgICAgJyg/XG4gP1xyKSkKLSAgICAgICAgICAgICAgICAgIChkZWxldGUtY2hh ciAxKQotICAgICAgICAgICAgICAgIChsZXQgKChlbmQgKDErIChwb2ludCkpKSkKKyAgICAg ICAgICAoaWYgKDwgKHBvaW50KSBlc2hlbGwtbGFzdC1vdXRwdXQtZW5kKQorICAgICAgICAg ICAgICAoaWYgKG1lbXEgKGNoYXItYWZ0ZXIgKHBvaW50KSkgJyg/XG4gP1xyKSkKKyAgICAg ICAgICAgICAgICAgIChkZWxldGUtY2hhciAtMSkKKyAgICAgICAgICAgICAgICAobGV0ICgo ZW5kIChwb2ludCkpKQogICAgICAgICAgICAgICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQog ICAgICAgICAgICAgICAgICAgKGRlbGV0ZS1yZWdpb24gKHBvaW50KSBlbmQpKSkKLSAgICAg ICAgICAgIChhZGQtdGV4dC1wcm9wZXJ0aWVzIChwb2ludCkgKDErIChwb2ludCkpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGludmlzaWJsZSB0KSkKLSAgICAgICAg ICAgIChmb3J3YXJkLWNoYXIpKSkKKyAgICAgICAgICAgIChhZGQtdGV4dC1wcm9wZXJ0aWVz ICgxLSAocG9pbnQpKSAocG9pbnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnKGludmlzaWJsZSB0KSkpKQogICAgICAgICAgKChlcSBjaGFyID9cYSkKLSAgICAgICAg ICAoZGVsZXRlLWNoYXIgMSkKKyAgICAgICAgICAoZGVsZXRlLWNoYXIgLTEpCiAgICAgICAg ICAgKGJlZXApKQogICAgICAgICAgKChlcSBjaGFyID9cQy1oKQotICAgICAgICAgIChkZWxl dGUtcmVnaW9uICgxLSAocG9pbnQpKSAoMSsgKHBvaW50KSkpKQotICAgICAgICAgKHQKLSAg ICAgICAgICAoZm9yd2FyZC1jaGFyKSkpKSkpKQorICAgICAgICAgIChkZWxldGUtcmVnaW9u ICgtIChwb2ludCkgMikgKHBvaW50KSkpKSkpKSkKIAogKGN1c3RvbS1hZGQtb3B0aW9uICdl c2hlbGwtb3V0cHV0LWZpbHRlci1mdW5jdGlvbnMKIAkJICAgJ2VzaGVsbC1oYW5kbGUtY29u dHJvbC1jb2RlcykKZGlmZiAtLWdpdCBhL3Rlc3QvbGlzcC9lc2hlbGwvZXNoLW1vZGUtdGVz dHMuZWwgYi90ZXN0L2xpc3AvZXNoZWxsL2VzaC1tb2RlLXRlc3RzLmVsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zMDZlMTFjZTQ0NQotLS0gL2Rldi9udWxs CisrKyBiL3Rlc3QvbGlzcC9lc2hlbGwvZXNoLW1vZGUtdGVzdHMuZWwKQEAgLTAsMCArMSw2 MiBAQAorOzs7IGVzaC1tb2RlLXRlc3RzLmVsIC0tLSBlc2gtbW9kZSB0ZXN0IHN1aXRlICAt Ki0gbGV4aWNhbC1iaW5kaW5nOnQgLSotCisKKzs7IENvcHlyaWdodCAoQykgMjAyMi0yMDI0 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCis7OyBUaGlzIGZpbGUgaXMgcGFy dCBvZiBHTlUgRW1hY3MuCisKKzs7IEdOVSBFbWFjcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cis7OyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor OzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKKzs7IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisKKzs7IEdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKzs7IEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKzs7IFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCis7 OyBhbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCisKKzs7OyBDb21tZW50YXJ5OgorCis7OyBUZXN0cyBmb3IgRXNo ZWxsJ3MgY29tbWFuZCBpbnZvY2F0aW9uLgorCis7OzsgQ29kZToKKworKHJlcXVpcmUgJ2Vy dCkKKyhyZXF1aXJlICdlc2gtbW9kZSkKKyhyZXF1aXJlICdlc2hlbGwpCisKKyhyZXF1aXJl ICdlc2hlbGwtdGVzdHMtaGVscGVycworICAgICAgICAgKGV4cGFuZC1maWxlLW5hbWUgImVz aGVsbC10ZXN0cy1oZWxwZXJzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGUt bmFtZS1kaXJlY3RvcnkgKG9yIGxvYWQtZmlsZS1uYW1lCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdC1kaXJlY3RvcnkpKSkp CisKKzs7OyBUZXN0czoKKworKGVydC1kZWZ0ZXN0IGVzaC1tb2RlLXRlc3QvaGFuZGxlLWNv bnRyb2wtY29kZXMvY2FycmlhZ2UtcmV0dXJuICgpCisgICJUZXN0IHRoYXQgRXNoZWxsIGhh bmRsZXMgY2FycmlhZ2UgcmV0dXJucyBwcm9wZXJseS4iCisgICh3aXRoLXRlbXAtZXNoZWxs CisgICAgKGVzaGVsbC1tYXRjaC1jb21tYW5kLW91dHB1dCAiKGZvcm1hdCBcImhlbGxvXHJc bmdvb2RieWVcIikiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFxgaGVs bG9cbmdvb2RieWVcbiIpCisgICAgKGVzaGVsbC1tYXRjaC1jb21tYW5kLW91dHB1dCAiKGZv cm1hdCBcImhlbGxvXHJnb29kYnllXCIpIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIlxcYGdvb2RieWVcbiIpCisgICAgKGVzaGVsbC1tYXRjaC1jb21tYW5kLW91dHB1 dCAiKGZvcm1hdCBcImhlbGxvXHJcIikiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiXFxgaGVsbG8iKSkpCisKKyhlcnQtZGVmdGVzdCBlc2gtbW9kZS10ZXN0L2hhbmRs ZS1jb250cm9sLWNvZGVzL2JlbGwgKCkKKyAgIlRlc3QgdGhhdCBFc2hlbGwgaGFuZGxlcyBi ZWxscyBwcm9wZXJseS4iCisgIChjbC1sZXRmKiAoKGJlZXAtY2FsbGVkIG5pbCkKKyAgICAg ICAgICAgICAoKHN5bWJvbC1mdW5jdGlvbiAnYmVlcCkgKGxhbWJkYSAoKSAoc2V0cSBiZWVw LWNhbGxlZCB0KSkpKQorICAgICh3aXRoLXRlbXAtZXNoZWxsCisgICAgICAoZXNoZWxsLW1h dGNoLWNvbW1hbmQtb3V0cHV0ICIoZm9ybWF0IFwiaGVsbG9cYXRoZXJlXCIpIgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFxgaGVsbG90aGVyZVxuIikKKyAgICAg IChzaG91bGQgYmVlcC1jYWxsZWQpKSkpCisKKyhlcnQtZGVmdGVzdCBlc2gtbW9kZS10ZXN0 L2hhbmRsZS1jb250cm9sLWNvZGVzL2JhY2tzcGFjZSAoKQorICAiVGVzdCB0aGF0IEVzaGVs bCBoYW5kbGVzIGJhY2tzcGFjZXMgcHJvcGVybHkuIgorICAod2l0aC10ZW1wLWVzaGVsbAor ICAgIChlc2hlbGwtbWF0Y2gtY29tbWFuZC1vdXRwdXQgKGZvcm1hdCAiKGZvcm1hdCBcImhl bGxvJWMlY3BcIikiID9cQy1oID9cQy1oKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIlxcYGhlbHBcbiIpKSkKKworOzsgZXNoLW1vZGUtdGVzdHMuZWwgZW5kcyBoZXJl Ci0tIAoyLjI1LjEKCg== --------------av8HtsLB2xJdLaE5qMPyAIeH--