From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Juanma Barranquero Newsgroups: gmane.emacs.devel Subject: Revamping bs.el Date: Tue, 6 Dec 2022 03:13:15 +0100 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000d86b9305ef1f5ac0" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="8627"; mail-complaints-to="usenet@ciao.gmane.io" To: Emacs developers Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue Dec 06 03:14:40 2022 Return-path: Envelope-to: ged-emacs-devel@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 1p2NTk-00027H-G3 for ged-emacs-devel@m.gmane-mx.org; Tue, 06 Dec 2022 03:14:40 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p2NT2-0001r1-Mt; Mon, 05 Dec 2022 21:13:56 -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 1p2NT1-0001qp-6W for emacs-devel@gnu.org; Mon, 05 Dec 2022 21:13:55 -0500 Original-Received: from mail-ed1-x530.google.com ([2a00:1450:4864:20::530]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p2NSz-0000Zm-7R for emacs-devel@gnu.org; Mon, 05 Dec 2022 21:13:54 -0500 Original-Received: by mail-ed1-x530.google.com with SMTP id r26so18327389edc.10 for ; Mon, 05 Dec 2022 18:13:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=OchAgAk7QfofIqoEpOm7ngZuGvvMFjs5u3Y9Mmbg3HA=; b=YncbVfpD1cFS+J+EzUhZtpGvLkZu1PSETHSH/58r86PtUBxaKd/mBipFmrD2cLOZUA tNpoXDxBHIApk/RqaZFh0MS13kQTxeKZt/6SmkbqZfp17Sbak+VSf6iImr8Mla1MDi0P XHpe2cQszTR9QXgSqaRp9qKyiVMzaAPLt8+Ow3fNy4puGnqwPLqKLS4ArmRulXvlWguM h24RF3oLQnLHR4TjSl7KPfVmhjqbhEhbpQYlMe8Q/3NHCJbNrcznEXQHeH4/AyixbumR K3+mKepK63R4jeA9QZEj2gr8U6005FxkSUnhgJGUXrcblBbJPBl7PucIKGJkYaV6wvi3 YrgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=OchAgAk7QfofIqoEpOm7ngZuGvvMFjs5u3Y9Mmbg3HA=; b=nMbPOlbHreJWHKX0+k70AfxVss8qqbHA+fpDC7dIXwvr0h9KzbZ5cSN6Znqoq4Zjwf 56y+cM9wBV0t21pyu/4Ybsh7SmTKJE8jU6rmim/o0poCnJ65b5OWBj3x/9x7FqSRYctZ JEZ3sPveMaFnKWuyPNmsYyQfKsR4blwTQmUMY1vppInqSNJHC4/P/jHIJ6h8pZw8VfQM 4waXNrtIY4UJKq7VEpIRyollzrsPosH9wR+aphkMmtinQJP9vKmTSfYBeTAlQn1DY4wj AM5nlab0QY5Cb7tfX44E2BUi6DinRRK4JR/tA22bj2BcOWEpPWu/I6WumO+p7GmfBuL+ oNkg== X-Gm-Message-State: ANoB5pnnzwWRLjUPSqK71eENeyddEcf9cULBADfbobFsDDTo+4gGeFWz HXNCEbJZPxBSuDTqCR2ytwuNmuM5GjMNLcBijSAjQb/cv9o= X-Google-Smtp-Source: AA0mqf6GRPZGubpyltHW+uP/oM6FMm/huXrazzpAUVdAC1IDp0CqtqohhT7wt4WjJxU3qDcRNm6N7NcIbw+wXPs4Eg0= X-Received: by 2002:a05:6402:361:b0:46c:25ea:731 with SMTP id s1-20020a056402036100b0046c25ea0731mr15032814edw.194.1670292830687; Mon, 05 Dec 2022 18:13:50 -0800 (PST) Received-SPF: pass client-ip=2a00:1450:4864:20::530; envelope-from=lekktu@gmail.com; helo=mail-ed1-x530.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, HTML_MESSAGE=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: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:300951 Archived-At: --000000000000d86b9305ef1f5ac0 Content-Type: multipart/alternative; boundary="000000000000d86b9005ef1f5abe" --000000000000d86b9005ef1f5abe Content-Type: text/plain; charset="UTF-8" As a long-time user of bs.el, I've often been quite frustrated by some of its limitations. It shows its age here and there, but mainly in two aspects: - It uses kludgy code to save & restore window configurations to set the frame back to a "normal" state after exiting; that code just doesn't play nice with the newer display-buffer-alist window setup. - It doesn't use tabulated-list-mode and instead creates its own clunky "header line", sort functions, etc. One example where that goes wrong is when the current bs-configuration wants to show more than `bs-max-window-height' buffers; in this case, it is perfectly possible to just move along the list until you push the "header line" out of the window. So I'd like to work on this on master, for the 30.1 release. For the first problem, the attached patch makes bs-show to use pop-to-buffer, and adds a bs-default-action-list customizable option, preloaded with a value that imitates the current, non-patched behavior, while allowing setting display-buffer-alist, or the customizable option, to further adapt bs to modern practices. The code also removes one function and one variable, which I haven't obsoleted because they're intern. Now, in my tests the behavior of bs-show has not changed (except for a tiny detail where the patched behavior is, I think, superior to the old one**). However, I'm pretty sure there will be some bugs lurking. As this is a small change, easily reverted, and for a quite non-critical piece of Emacs, I'd prefer to install the patch ASAP in master and let the bug reports come, instead of trying to develop it in a feature branch that nobody will fetch and test (and understandably so). -------------- **The difference is that, with the old code, emacs -Q C-x 2 M-x bs-show makes the bottom window grow while the *bs-selection* buffer is active because the bs window is created at half the height of the top window, and then shrunk. In my patch, I use window-combination-limit to force the top window and the new bs window to be a combination group so their combined height doesn't change. -------------- Now, the second problem (deriving bs-mode from tabulated-list-mode) is not as straightforward. Using the tabulated-list machinery to populate *buffer-selection*, and create the header-line on the fly, is of course easy enough. The problems come from the impedance mismatch between the extremely column-oriented sorting machinery of tabulated-list-mode, vs the freedom of bs sort functions that are not so limited. A few weeks ago I spent a couple of days looking at the issue and came to the conclusion that making bs work with tabulated-list-mode would require adding some functionality to the later, so it can better communicate with its derived mode and be aware that it has sorted the data in... "unexpected ways". So, at this point, 1) Is there some interest (or, at the very least, indifference ;-) in my revamping bs.el to work better with display-buffer-alist? 2) If so, it's ok to install the change in master? Once this is settled, we can discuss whether the second part of the rework is worth pursuing or not, and if so, what would be necessary. --000000000000d86b9005ef1f5abe Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

As a long-time user of bs.el, I've often been quite frust= rated by some of its limitations. It shows its age here and there, but main= ly in two aspects:

- It uses kludgy code to save & restore windo= w configurations to set the frame back to a "normal" state after = exiting; that code just doesn't play nice with the newer display-buffer= -alist window setup.

- It doesn't use tabulated-list-mode and instead = creates its own clunky "header line", sort functions, etc. One ex= ample where that goes wrong is when the current bs-configuration wants to s= how more than `bs-max-window-height' buffers; in this case, it is perfe= ctly possible to just move along the list until you push the "header l= ine" out of the window.

So I'd like to work on this on mast= er, for the 30.1 release.

For the first problem, the attached patch = makes bs-show to use pop-to-buffer, and adds a bs-default-action-list custo= mizable option, preloaded with a value that imitates the current, non-patch= ed behavior, while allowing setting display-buffer-alist, or the customizab= le option, to further adapt bs to modern practices. The code also removes o= ne function and one variable, which I haven't obsoleted because they= 9;re intern.

Now, in my tests the behavior of bs-show has not change= d (except for a tiny detail where the patched behavior is, I think, superio= r to the old one**). However, I'm pretty sure there will be some bugs l= urking. As this is a small change, easily reverted, and for a quite non-cri= tical piece of Emacs, I'd prefer to install the patch ASAP in master an= d let the bug reports come, instead of trying to develop it in a feature br= anch that nobody will fetch and test (and understandably so).

------= --------
**The difference is that, with the old code,

emacs -Q
C-x = 2
= M-x bs-show <ret>

makes the bottom window grow while the *bs-s= election* buffer is active because the bs window is created at half the hei= ght of the top window, and then shrunk. In my patch, I use window-combinati= on-limit to force the top window and the new bs window to be a combination = group so their combined height doesn't change.=C2=A0
--------------<= br>
Now, the second problem (deriving bs-mode from tabulated-list-mode) = is not as straightforward. Using the tabulated-list machinery to populate *= buffer-selection*, and create the header-line on the fly, is of course easy= enough. The problems come from the impedance mismatch between the extremel= y column-oriented sorting machinery of tabulated-list-mode, vs the freedom = of bs sort functions that are not so limited. A few weeks ago I spent a cou= ple of days looking at the issue and came to the conclusion that making bs = work with tabulated-list-mode would require adding some functionality to th= e later, so it can better communicate with its derived mode and be aware th= at it has sorted the data in... "unexpected ways".

So, at = this point,

1) Is there some interest (or, at the very least, indiff= erence ;-) in my revamping bs.el to work better with display-buffer-alist?<= br>2) If so, it's ok to install the change in master?

Once this = is settled, we can discuss whether the second part of the rework is worth p= ursuing or not, and if so, what would be necessary.


--000000000000d86b9005ef1f5abe-- --000000000000d86b9305ef1f5ac0 Content-Type: application/octet-stream; name="0001-lisp-bs.el-Adapt-to-modern-display-buffer-alist-wind.patch" Content-Disposition: attachment; filename="0001-lisp-bs.el-Adapt-to-modern-display-buffer-alist-wind.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lbbkxxno0 RnJvbSAyOThhZTYyMzA1NTE3NWQxOThmMTZmZWNkNzE3NjBlZWYxMTNmM2IyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKdWFubWEgQmFycmFucXVlcm8gPGxla2t0dUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgNiBEZWMgMjAyMiAwMjoyMjowNiArMDEwMApTdWJqZWN0OiBbUEFUQ0hdICog bGlzcC9icy5lbDogQWRhcHQgdG8gbW9kZXJuIGRpc3BsYXktYnVmZmVyLWFsaXN0IHdpbmRvdwog c2V0dXAKCiogbGlzcC9icy5lbCAoYnMtLXdpbmRvdy1jb25maWctY29taW5nLWZyb20pOiBEZWxl dGUuCihicy1kZWZhdWx0LWFjdGlvbi1saXN0KTogTmV3IHVzZXIgY3VzdG9taXphYmxlIG9wdGlv bi4KKGJzLS1yZXN0b3JlLXdpbmRvdy1jb25maWcpOiBEZWxldGUuCihicy1raWxsLCBicy1zZWxl Y3QsIGJzLXNlbGVjdC1vdGhlci13aW5kb3cpCihicy1zZWxlY3Qtb3RoZXItZnJhbWUpOiBVc2Ug YHF1aXQtd2luZG93JyBpbnN0ZWFkLgooYnMtLXNob3ctd2l0aC1jb25maWd1cmF0aW9uKTogVXNl IGBwb3AtdG8tYnVmZmVyJyB0byBkaXNwbGF5CnRoZSAiKmJ1ZmZlci1zZWxlY3Rpb24qIiBidWZm ZXIuCi0tLQogbGlzcC9icy5lbCB8IDU4ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyks IDMyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpc3AvYnMuZWwgYi9saXNwL2JzLmVsCmlu ZGV4IDFmZDMxZmIzYjguLjI4OWVkZTY4MTkgMTAwNjQ0Ci0tLSBhL2xpc3AvYnMuZWwKKysrIGIv bGlzcC9icy5lbApAQCAtNDIwLDkgKzQyMCw2IEBAIGJzLS1zaG93LWFsbAogTm9uLW5pbCBtZWFu cyB0byBzaG93IGFsbCBidWZmZXJzLiAgT3RoZXJ3aXNlIHNob3cgYnVmZmVycwogZGVmaW5lZCBi eSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gYGJzLWN1cnJlbnQtY29uZmlndXJhdGlvbicuIikKIAot KGRlZnZhciBicy0td2luZG93LWNvbmZpZy1jb21pbmctZnJvbSBuaWwKLSAgIldpbmRvdyBjb25m aWd1cmF0aW9uIGJlZm9yZSBzdGFydGluZyBCdWZmZXIgU2VsZWN0aW9uIE1lbnUuIikKLQogKGRl ZnZhciBicy0taW50ZXJuLXNob3ctbmV2ZXIgIl4gXFx8XFwqYnVmZmVyLXNlbGVjdGlvblxcKiIK ICAgIlJlZ3VsYXIgZXhwcmVzc2lvbiBzcGVjaWZ5aW5nIHdoaWNoIGJ1ZmZlcnMgbmV2ZXIgdG8g c2hvdy4KIEEgYnVmZmVyIHdob3NlIG5hbWUgbWF0Y2hlcyB0aGlzIHJlZ3VsYXIgZXhwcmVzc2lv biB3aWxsIG5ldmVyIGJlCkBAIC00OTEsNyArNDg4LDIzIEBAIGJzLW1vZGUtbWFwCiAgICI8bW91 c2UtMj4iICMnYnMtbW91c2Utc2VsZWN0CiAgICI8bW91c2UtMz4iICMnYnMtbW91c2Utc2VsZWN0 LW90aGVyLWZyYW1lKQogCi07OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisoZGVmY3VzdG9tIGJzLWRlZmF1bHQt YWN0aW9uLWxpc3QgJygoZGlzcGxheS1idWZmZXItcmV1c2Utd2luZG93CisJCQkJICAgICBkaXNw bGF5LWJ1ZmZlci1iZWxvdy1zZWxlY3RlZCkKKwkJCQkgICAgKHdpbmRvdy1oZWlnaHQgLiBicy1t YXgtd2luZG93LWhlaWdodCkpCisgICJEZWZhdWx0IGFjdGlvbiBsaXN0IGZvciBzaG93aW5nIHRo ZSAnKmJzLXNlbGVjdGlvbionIGJ1ZmZlci4KKworVGhpcyBsaXN0IHdpbGwgYmUgcGFzc2VkIHRv IGBwb3AtdG8tYnVmZmVyJyBhcyBpdHMgQUNUSU9OIGFyZ3VtZW50LgorSXQgc2hvdWxkIGJlIGEg Y29ucyBjZWxsIChGVU5DVElPTlMgLiBBTElTVCksIHdoZXJlIEZVTkNUSU9OUyBpcworYW4gYWN0 aW9uIGZ1bmN0aW9uIG9yIGEgbGlzdCBvZiBhY3Rpb24gZnVuY3Rpb25zIGFuZCBBTElTVCBpcyBh bgorYWN0aW9uIGFsaXN0LiAgRWFjaCBzdWNoIGFjdGlvbiBmdW5jdGlvbiBzaG91bGQgYWNjZXB0 IHR3bworYXJndW1lbnRzOiBhIGJ1ZmZlciB0byBkaXNwbGF5IGFuZCBhbiBhbGlzdCBvZiB0aGUg c2FtZSBmb3JtIGFzCitBTElTVC4gIFNlZSDigJhkaXNwbGF5LWJ1ZmZlcuKAmSBmb3IgZGV0YWls cy4iCisgIDp0eXBlIGRpc3BsYXktYnVmZmVyLS1hY3Rpb24tY3VzdG9tLXR5cGUKKyAgOnJpc2t5 IHQKKyAgOnZlcnNpb24gIjMwLjEiCisgIDpncm91cCAnYnMpCisKKzsgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog OzsgRnVuY3Rpb25zCiA7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTY2OCwyMCArNjgxLDExIEBAIGJz LW1vZGUKICAgKGFkZC1ob29rICdraWxsLWJ1ZmZlci1ob29rICdicy0tcmVtb3ZlLWhvb2tzIG5p bCB0KQogICAoYWRkLWhvb2sgJ2NoYW5nZS1tYWpvci1tb2RlLWhvb2sgJ2JzLS1yZW1vdmUtaG9v a3MgbmlsIHQpKQogCi0oZGVmdW4gYnMtLXJlc3RvcmUtd2luZG93LWNvbmZpZyAoKQotICAiUmVz dG9yZSB3aW5kb3cgY29uZmlndXJhdGlvbiBvbiB0aGUgY3VycmVudCBmcmFtZS4iCi0gICh3aGVu IGJzLS13aW5kb3ctY29uZmlnLWNvbWluZy1mcm9tCi0gICAgKGxldCAoKGZyYW1lIChzZWxlY3Rl ZC1mcmFtZSkpKQotICAgICAgKHVud2luZC1wcm90ZWN0Ci0JICAgKHNldC13aW5kb3ctY29uZmln dXJhdGlvbiBicy0td2luZG93LWNvbmZpZy1jb21pbmctZnJvbSkKLQkoc2VsZWN0LWZyYW1lIGZy YW1lKSkpCi0gICAgKHNldHEgYnMtLXdpbmRvdy1jb25maWctY29taW5nLWZyb20gbmlsKSkpCi0K IChkZWZ1biBicy1raWxsICgpCiAgICJMZXQgYnVmZmVyIGRpc2FwcGVhciBhbmQgcmVzZXQgd2lu ZG93IGNvbmZpZ3VyYXRpb24uIgogICAoaW50ZXJhY3RpdmUpCiAgIChidXJ5LWJ1ZmZlciAoY3Vy cmVudC1idWZmZXIpKQotICAoYnMtLXJlc3RvcmUtd2luZG93LWNvbmZpZykpCisgIChxdWl0LXdp bmRvdykpCiAKIChkZWZ1biBicy1hYm9ydCAoKQogICAiRGluZyBhbmQgbGVhdmUgQnVmZmVyIFNl bGVjdGlvbiBNZW51IHdpdGhvdXQgYSBzZWxlY3Rpb24uIgpAQCAtNzQyLDcgKzc0Niw3IEBAIGJz LXNlbGVjdAogICAoaW50ZXJhY3RpdmUpCiAgIChsZXQgKChidWZmZXIgKGJzLS1jdXJyZW50LWJ1 ZmZlcikpKQogICAgIChidXJ5LWJ1ZmZlciAoY3VycmVudC1idWZmZXIpKQotICAgIChicy0tcmVz dG9yZS13aW5kb3ctY29uZmlnKQorICAgIChxdWl0LXdpbmRvdykKICAgICAoc3dpdGNoLXRvLWJ1 ZmZlciBidWZmZXIpCiAgICAgKHdoZW4gYnMtLW1hcmtlZC1idWZmZXJzCiAgICAgICA7OyBTb21l IG1hcmtlZCBidWZmZXJzIGZvciBzZWxlY3Rpb24KQEAgLTc2NSw3ICs3NjksNyBAQCBicy1zZWxl Y3Qtb3RoZXItd2luZG93CiAgIChpbnRlcmFjdGl2ZSkKICAgKGxldCAoKGJ1ZmZlciAoYnMtLWN1 cnJlbnQtYnVmZmVyKSkpCiAgICAgKGJ1cnktYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpCi0gICAg KGJzLS1yZXN0b3JlLXdpbmRvdy1jb25maWcpCisgICAgKHF1aXQtd2luZG93KQogICAgIChzd2l0 Y2gtdG8tYnVmZmVyLW90aGVyLXdpbmRvdyBidWZmZXIpKSkKIAogKGRlZnVuIGJzLXRtcC1zZWxl Y3Qtb3RoZXItd2luZG93ICgpCkBAIC03ODEsNyArNzg1LDcgQEAgYnMtc2VsZWN0LW90aGVyLWZy YW1lCiAgIChpbnRlcmFjdGl2ZSkKICAgKGxldCAoKGJ1ZmZlciAoYnMtLWN1cnJlbnQtYnVmZmVy KSkpCiAgICAgKGJ1cnktYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpCi0gICAgKGJzLS1yZXN0b3Jl LXdpbmRvdy1jb25maWcpCisgICAgKHF1aXQtd2luZG93KQogICAgIChzd2l0Y2gtdG8tYnVmZmVy LW90aGVyLWZyYW1lIGJ1ZmZlcikpKQogCiAoZGVmdW4gYnMtbW91c2Utc2VsZWN0LW90aGVyLWZy YW1lIChldmVudCkKQEAgLTE0MzgsMjEgKzE0NDIsMTEgQEAgYnMtLXNob3ctd2l0aC1jb25maWd1 cmF0aW9uCiAgICAgICA7OyBPbmx5IHdoZW4gbm90IGluIGJ1ZmZlciAqYnVmZmVyLXNlbGVjdGlv bioKICAgICAgIDs7IHdlIGhhdmUgdG8gc2V0IHRoZSBidWZmZXIgd2Ugc3RhcnRlZCB0aGUgY29t bWFuZAogICAgICAgKHNldHEgYnMtLWJ1ZmZlci1jb21pbmctZnJvbSAoY3VycmVudC1idWZmZXIp KSkKLSAgICAobGV0ICgobGlzdGUgKGJzLWJ1ZmZlci1saXN0KSkKLQkgIChhY3RpdmUtd2luZG93 IChnZXQtd2luZG93LXdpdGgtcHJlZGljYXRlCi0JCQkgIChsYW1iZGEgKHcpCi0JCQkgICAgKHN0 cmluZz0gKGJ1ZmZlci1uYW1lICh3aW5kb3ctYnVmZmVyIHcpKQotCQkJCSAgICAgIipidWZmZXIt c2VsZWN0aW9uKiIpKQotCQkJICBuaWwgKHNlbGVjdGVkLWZyYW1lKSkpKQotICAgICAgKGlmIGFj dGl2ZS13aW5kb3cKLQkgIChzZWxlY3Qtd2luZG93IGFjdGl2ZS13aW5kb3cpCi0JKGJzLS1yZXN0 b3JlLXdpbmRvdy1jb25maWcpCi0JKHNldHEgYnMtLXdpbmRvdy1jb25maWctY29taW5nLWZyb20g KGN1cnJlbnQtd2luZG93LWNvbmZpZ3VyYXRpb24pKQotCSh3aGVuICg+ICh3aW5kb3ctaGVpZ2h0 KSA3KQotICAgICAgICAgIDs7IEVycm9ycyB3b3VsZCBtZXNzIHdpdGggdGhlIHdpbmRvdyBjb25m aWd1cmF0aW9uIChidWcjMTA4ODIpLgotICAgICAgICAgIChpZ25vcmUtZXJyb3JzIChzZWxlY3Qt d2luZG93IChzcGxpdC13aW5kb3ctYmVsb3cpKSkpKQotICAgICAgKGJzLXNob3ctaW4tYnVmZmVy IGxpc3RlKQotICAgICAgKGJzLW1lc3NhZ2Utd2l0aG91dC1sb2cgIiVzIiAoYnMtLWN1cnJlbnQt Y29uZmlnLW1lc3NhZ2UpKSkpKQorICAgIChsZXQgKCh3aW5kb3ctY29tYmluYXRpb24tbGltaXQg J3dpbmRvdy1zaXplKSkKKyAgICAgIChwb3AtdG8tYnVmZmVyIChnZXQtYnVmZmVyLWNyZWF0ZSAi KmJ1ZmZlci1zZWxlY3Rpb24qIikKKwkJICAgICBicy1kZWZhdWx0LWFjdGlvbi1saXN0KSkKKyAg ICAoYnMtc2hvdy1pbi1idWZmZXIgKGJzLWJ1ZmZlci1saXN0KSkKKyAgICAoYnMtbWVzc2FnZS13 aXRob3V0LWxvZyAiJXMiIChicy0tY3VycmVudC1jb25maWctbWVzc2FnZSkpKSkKIAogKGRlZnVu IGJzLS1jb25maWd1cmF0aW9uLW5hbWUtZm9yLXByZWZpeC1hcmcgKHByZWZpeCkKICAgIkNvbnZl cnQgcHJlZml4IGFyZ3VtZW50IFBSRUZJWCB0byBhIG5hbWUgb2YgYSBidWZmZXIgY29uZmlndXJh dGlvbi4KLS0gCjIuMzguMS53aW5kb3dzLjEKCg== --000000000000d86b9305ef1f5ac0--