From unknown Fri Aug 15 12:52:14 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#68765 <68765@debbugs.gnu.org> To: bug#68765 <68765@debbugs.gnu.org> Subject: Status: 30.0.50; Adding window-tool-bar package. Reply-To: bug#68765 <68765@debbugs.gnu.org> Date: Fri, 15 Aug 2025 19:52:14 +0000 retitle 68765 30.0.50; Adding window-tool-bar package. reassign 68765 emacs submitter 68765 Jared Finder severity 68765 wishlist thanks From debbugs-submit-bounces@debbugs.gnu.org Sat Jan 27 18:37:24 2024 Received: (at submit) by debbugs.gnu.org; 27 Jan 2024 23:37:24 +0000 Received: from localhost ([127.0.0.1]:56131 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rTsEk-000185-E6 for submit@debbugs.gnu.org; Sat, 27 Jan 2024 18:37:24 -0500 Received: from lists.gnu.org ([2001:470:142::17]:48436) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rTsEf-00017p-Pk for submit@debbugs.gnu.org; Sat, 27 Jan 2024 18:37:20 -0500 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 1rTsES-00062J-Lv for bug-gnu-emacs@gnu.org; Sat, 27 Jan 2024 18:37:04 -0500 Received: from greenhill.hpalace.com ([192.155.80.58]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rTsEO-0005Zl-Ko for bug-gnu-emacs@gnu.org; Sat, 27 Jan 2024 18:37:04 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=finder.org; s=2018; t=1706398617; bh=5VmueSFZKi0rGExWiMPDDcY3la8bF2GKBz2wjrXmhaU=; h=Date:From:To:Subject:From; b=PAx+luCV8Qs7MuggcU/HGgu5rqlZ6BAbYM4MHyr12apvZ82wIadT9TMrnPiDQBEut mPv9aSx78JH9IraZZNtJr4WlXv3kJi+acaqI4ru5lwgeVLI96n5yuKHZWw/0lMjLwo mQ2qguFVMovciEa+hKAxZwbyAsf/+Ha2ilZECvMr93baZV1aX60U0U4/Nb7G99U7pk OjeeFV/PEFx2mtaSf+WGoXvJVvcdHMvomjz7ceio7bhXCa4yN1O7l+IIdnj/bcy2yk cGsk3/+Q1pRvm9dwUiJyaHXXWXpymd6ADppMJE4q8eoLKQtao07RP7JegCGez9m+pJ LJ7TyzANqh0mw== Received: from mail.finder.org (unknown [192.155.80.58]) by greenhill.hpalace.com (Postfix) with ESMTPSA id 27883387A for ; Sat, 27 Jan 2024 23:36:57 +0000 (UTC) MIME-Version: 1.0 Date: Sat, 27 Jan 2024 15:36:56 -0800 From: Jared Finder To: Bug-gnu Emacs Subject: 30.0.50; Adding window-tool-bar package. Message-ID: <07df5e8408054bcae5968066b0cebf34@finder.org> X-Sender: jared@finder.org Content-Type: multipart/mixed; boundary="=_b2ace73e7a83928017c937c8a89717da" Received-SPF: pass client-ip=192.155.80.58; envelope-from=jared@finder.org; helo=greenhill.hpalace.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, 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-Spam-Score: 0.9 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.1 (/) --=_b2ace73e7a83928017c937c8a89717da Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed This is a follow-up from bug#68334 where there was interest in adding support into Emacs core for tool bars in windows. (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=68334#52) I have attached three changes I authored to accomplish this, two small changes to tool-bar and tab-line, and then a code drop of my window-tool-bar.el package. I have not yet put in documentation in NEWS or the manual about window-tool-bar and was hoping to get a code review done first. I think it would be good to have window-tool-bar.el also be a package so that I can keep supporting Emacs 29 as well. I am happy to have this put on GNU ELPA and would appreciate help in getting that completed. I am open to renaming the package and public functions if that's desired. I like the name "window-tool-bar-mode" as it clearly relates to tool-bar-mode. After these patches are accepted, I'd also like to clean up the existing tool bar maps for built in minor modes. This would allow me to address Eli's request to have a usable tool bar for M-x gdb (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=68334#23). For tracking purposes, I signed copyright paperwork back in 2020, so that shouldn't be an issue. Thanks. -- MJF --=_b2ace73e7a83928017c937c8a89717da Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-Enable-multiple-modes-to-appear-in-tab-line.patch Content-Disposition: attachment; filename=0001-Enable-multiple-modes-to-appear-in-tab-line.patch; size=5255 RnJvbSA3ZjM0NGVkMTU5MGI4MTMyM2UyNGNkZWRmNzc0NzdhZTU3Y2I0OWY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+CkRhdGU6 IEZyaSwgMjYgSmFuIDIwMjQgMDk6NDk6MDMgLTA4MDAKU3ViamVjdDogW1BBVENIIDEvM10gRW5h YmxlIG11bHRpcGxlIG1vZGVzIHRvIGFwcGVhciBpbiB0YWIgbGluZQoKVGhpcyBhZGRzIHNwYWNl IGZvciB3aW5kb3ctdG9vbC1iYXItbW9kZSwgd2hpY2ggd2lsbCBiZSBhZGRlZCBpbiBhbgp1cGNv bWluZyBjb21taXQuCgoqIGxpc3AvdGFiLWxpbmUuZWwgKHRhYi1saW5lLWZvcm1hdC10ZW1wbGF0 ZSk6IEFkZCBzZXBhcmF0b3Igc3BhY2UuCih0YWItbGluZS1kaXNwbGF5LW9yZGVyKTogTmV3IHVz ZXIgdmFyaWFibGUgdG8gY29udHJvbCBkaXNwbGF5IG9yZGVyLgoodGFiLWxpbmUtLXJ1bnRpbWUt ZGlzcGxheS1vcmRlciwgdGFiLWxpbmUtLWNvb2tpZSk6IE5ldyBpbnRlcm5hbAp2YXJpYWJsZXMu Cih0YWItbGluZS1zZXQtZGlzcGxheSk6IE5ldyBmdW5jdGlvbiBmb3IgbW9kZXMgdG8gY2FsbCB0 byBlbmFibGUgb25seQp0aGVpciBjb250ZW50LgoodGFiLWxpbmUtbW9kZSk6IENhbGwgYHRhYi1s aW5lLXNldC1kaXNwbGF5Jy4KLS0tCiBsaXNwL3RhYi1saW5lLmVsIHwgODkgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgODAg aW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saXNwL3RhYi1saW5l LmVsIGIvbGlzcC90YWItbGluZS5lbAppbmRleCBjYzYwZjk0YzljNS4uYzcyODM2NDFjYmQgMTAw NjQ0Ci0tLSBhL2xpc3AvdGFiLWxpbmUuZWwKKysrIGIvbGlzcC90YWItbGluZS5lbApAQCAtNTcz LDcgKzU3Myw4IEBAIHRhYi1saW5lLWZvcm1hdC10ZW1wbGF0ZQogICAgICAod2hlbiAoYW5kIChl cSB0YWItbGluZS10YWJzLWZ1bmN0aW9uICMndGFiLWxpbmUtdGFicy13aW5kb3ctYnVmZmVycykK ICAgICAgICAgICAgICAgICB0YWItbGluZS1uZXctYnV0dG9uLXNob3cKICAgICAgICAgICAgICAg ICB0YWItbGluZS1uZXctYnV0dG9uKQotICAgICAgIChsaXN0IHRhYi1saW5lLW5ldy1idXR0b24p KSkpKQorICAgICAgIChsaXN0IHRhYi1saW5lLW5ldy1idXR0b24pKQorICAgICAobGlzdCAiICIp KSkpCiAKIChkZWZ1biB0YWItbGluZS10YWItZmFjZS1pbmFjdGl2ZS1hbHRlcm5hdGluZyAodGFi IHRhYnMgZmFjZSBfYnVmZmVyLXAgc2VsZWN0ZWQtcCkKICAgIlJldHVybiBGQUNFIGZvciBUQUIg aW4gVEFCUyB3aXRoIGFsdGVybmF0aW9uLgpAQCAtOTk3LDE4ICs5OTgsODggQEAgdGFiLWxpbmUt ZXZlbnQtc3RhcnQKICAgICAgIChldmVudC1zdGFydCBldmVudCkpKQogCiAMCis7OzsgVGFiIGxp bmUgZGlzcGxheSBvcmRlcmluZworKGRlZmN1c3RvbSB0YWItbGluZS1kaXNwbGF5LW9yZGVyCisg IChjb3B5LXRyZWUgJyh0YWItbGluZS1tb2RlIHdpbmRvdy10b29sLWJhci1tb2RlKSkKKyAgIlRo ZSBvcmRlciB0byBkaXNwbGF5IGNvbnRlbnQgaW4gdGhlIHRhYi1saW5lLgorCitUaGlzIGlzIGEg bGlzdCBvZiBzeW1ib2xzLiAgQnkgY29udmVudGlvbiwgdGhlIHN5bWJvbHMgY29ycmVzcG9uZAor dG8gdGhlIG1vZGUgbmFtZSB0aGF0IGVuYWJsZXMgLyBkaXNhYmxlcyBjb250ZW50LiAgQW55IHN5 bWJvbCBub3QKK2xpc3RlZCBoZXJlIHdpbGwgYXV0b21hdGljYWxseSBiZSBwdXQgYXQgdGhlIGVu ZCBvZiB0aGUgdGFiIGxpbmUuCisKK1NlZSBgdGFiLWxpbmUtc2V0LWRpc3BsYXknIGZvciB0aGUg TGlzcCBpbnRlcmZhY2UgdG8gYWRkIGFuZAorcmVtb3ZlIGNvbnRlbnQuIgorICA6dHlwZSAnKHJl cGVhdCBzeW1ib2wpCisgIDpncm91cCAndGFiLWxpbmUKKyAgOnZlcnNpb24gIjMwLjEiKQorCiso ZGVmdmFyIHRhYi1saW5lLS1ydW50aW1lLWRpc3BsYXktb3JkZXIKKyAgbmlsCisgICJTeW1ib2xz IHRoYXQgY29udGFpbiBjb250ZW50IGJ1dCBhcmUgbm90IGluIGB0YWItbGluZS1kaXNwbGF5LW9y ZGVyJy4KK1RoaXMgbGlzdCBlbnN1cmVzIHRoYXQgY29udGVudCBzdGF5cyBpbiBhIHN0YWJsZSBw b3NpdGlvbiBpbiB0aGUKK3RhYiBsaW5lLiIpCisKKyhkZWZjb25zdCB0YWItbGluZS0tY29va2ll CisgICcodGFiLWxpbmUtc2V0LWRpc3BsYXkgbmlsKQorICAiQ29va2llIHVzZWQgYnkgYHRhYi1s aW5lLXNldC1kaXNwbGF5Jy4KK1RoaXMgaXMgdXNlZCB0byB0ZWxsIGlmIHRoZSB0YWIgbGluZSBp cyBiZWluZyBzZXQgYmFzZWQgb24KK2B0YWItbGluZS1kaXNwbGF5LW9yZGVyJyBvciB3YXMgb3Zl cnJpZGRlbiBieSB0aGUgdXNlci4iKQorCisoZGVmdW4gdGFiLWxpbmUtc2V0LWRpc3BsYXkgKHN5 bSB2YWx1ZSkKKyAgIkxpc3AgaW50ZXJmYWNlIHRvIGFkZCBvciByZW1vdmUgY29udGVudCBmcm9t IHRoZSB0YWIgbGluZS4KKworQWZ0ZXIgY2FsbGluZyB0aGlzLCBpZiB0aGVyZSBpcyBubyBjb250 ZW50IGluIHRoZSB0YWIgbGluZSwgaXQKK3dpbGwgYmUgYXV0b21hdGljYWxseSBoaWRkZW4uCisK K1NZTSBpcyBhIHN5bWJvbCwgdXN1YWxseSB0aGUgc3ltYm9sIGNvcnJlc3BvbmRpbmcgdG8gdGhl IG1vZGUKK3Nob3dpbmcgY29udGVudCBzdWNoIGFzIGB0YWItbGluZS1tb2RlJy4KKworVkFMVUUg aXMgdGhlIGNvbnRlbnQgdG8gZGlzcGxheSBhbmQgd2lsbCBiZSBhZGRlZCB0bworYHRhYi1saW5l LWZvcm1hdCcgYXQgYW4gYXBwcm9wcmlhdGUgaW5kZXggYmFzZWQgb24KK2B0YWItbGluZS1kaXNw bGF5LW9yZGVyJy4gIElmIHlvdSB3YW50IHRvIHJlbW92ZSBjb250ZW50IGJlY2F1c2UKK3RoZSBt b2RlIGlzIGJlaW5nIGRpc2FibGVkLCBzZXQgdGhpcyB0byBuaWwuIgorICA7OyBQcmVzZXJ2ZSB0 YWItbGluZS1mb3JtYXQgaWYgYWx0ZXJlZCBvdXRzaWRlIG9mIHRoaXMgZnVuY3Rpb24uCisgICh3 aGVuIChvciAobnVsbCB0YWItbGluZS1mb3JtYXQpCisgICAgICAgICAgICA7OyBBc3N1bWUgdGhh dCB1c2VyIG1vZGlmaWNhdGlvbnMgd2lsbCBub3QgdXNlIHRoaXMKKyAgICAgICAgICAgIDs7IGNv b2tpZS4KKyAgICAgICAgICAgIChlcXVhbCAoY2FyIHRhYi1saW5lLWZvcm1hdCkgdGFiLWxpbmUt LWNvb2tpZSkpCisgICAgKGxldCAocG9zKQorICAgICAgKHNldGYgcG9zIChzZXEtcG9zaXRpb24g dGFiLWxpbmUtZGlzcGxheS1vcmRlciBzeW0pKQorICAgICAgKHVubGVzcyBwb3MKKyAgICAgICAg KHdoZW4tbGV0ICgoYXBwZW5kLXBvcyAoc2VxLXBvc2l0aW9uIHRhYi1saW5lLS1ydW50aW1lLWRp c3BsYXktb3JkZXIgc3ltKSkpCisgICAgICAgICAgKHNldGYgcG9zICgrIChsZW5ndGggdGFiLWxp bmUtZGlzcGxheS1vcmRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kLXBvcykpKSkK KyAgICAgICh1bmxlc3MgcG9zCisgICAgICAgICh3YXJuICJTeW1ib2wgJVMgbm90IGZvdW5kIGlu IGB0YWItbGluZS1kaXNwbGF5LW9yZGVyJy4gIFB1dHRpbmcgYXQgZW5kLiIKKyAgICAgICAgICAg ICAgc3ltKQorICAgICAgICAoc2V0ZiBwb3MgKCsgKGxlbmd0aCB0YWItbGluZS1kaXNwbGF5LW9y ZGVyKQorICAgICAgICAgICAgICAgICAgICAgKGxlbmd0aCB0YWItbGluZS0tcnVudGltZS1kaXNw bGF5LW9yZGVyKSkKKyAgICAgICAgICAgICAgdGFiLWxpbmUtLXJ1bnRpbWUtZGlzcGxheS1vcmRl cgorICAgICAgICAgICAgICAoYXBwZW5kIHRhYi1saW5lLS1ydW50aW1lLWRpc3BsYXktb3JkZXIK KyAgICAgICAgICAgICAgICAgICAgICAobGlzdCBzeW0pKSkpCisKKyAgICAgIChsZXQgKChkZXNp cmVkLWxlbmd0aCAoKyBwb3MgMikpICA7UGx1cyAxIGFkZGl0aW9uYWwgZm9yIHRoZSBjb29raWUs CisgICAgICAgICAgICAoY3VycmVudC1sZW5ndGggKGxlbmd0aCB0YWItbGluZS1mb3JtYXQpKSkK KyAgICAgICAgKHdoZW4gKD4gZGVzaXJlZC1sZW5ndGggY3VycmVudC1sZW5ndGgpCisgICAgICAg ICAgKHNldGYgdGFiLWxpbmUtZm9ybWF0CisgICAgICAgICAgICAgICAgKGFwcGVuZCB0YWItbGlu ZS1mb3JtYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIChtYWtlLWxpc3QgKC0gZGVzaXJlZC1s ZW5ndGggY3VycmVudC1sZW5ndGgpIG5pbCkpCisgICAgICAgICAgICAgICAgOzsgSWYgdGFiLWxp bmUtZm9ybWF0IHdhcyBuaWwsIHRoZW4gdGhlIGNvb2tpZSBuZWVkcyB0byBiZSBzZXQuCisgICAg ICAgICAgICAgICAgKGNhciB0YWItbGluZS1mb3JtYXQpIHRhYi1saW5lLS1jb29raWUpKSkKKwor ICAgICAgKHNldGYgKG50aCAoMSsgcG9zKSB0YWItbGluZS1mb3JtYXQpIHZhbHVlKSkKKworICAg IDs7IElmIHRoZSBlbnRpcmUgZGlzcGxheSBoYXMgYmVlbiBkaXNhYmxlZCwgdGFiIGxpbmUgd291 bGQgZGlzcGxheQorICAgIDs7IGFzIGVtcHR5LiAgRXhwbGljaXRseSBoaWRlIHRoZSB0YWIgbGlu ZSBpbiB0aGlzIGNhc2UuCisgICAgKHdoZW4gKHNlcS1ldmVyeS1wICMnbnVsbCAoY2RyIHRhYi1s aW5lLWZvcm1hdCkpCisgICAgICAoc2V0ZiB0YWItbGluZS1mb3JtYXQgbmlsKSkpKQorDAogOzs7 IyMjYXV0b2xvYWQKIChkZWZpbmUtbWlub3ItbW9kZSB0YWItbGluZS1tb2RlCiAgICJUb2dnbGUg ZGlzcGxheSBvZiB0YWIgbGluZSBpbiB0aGUgd2luZG93cyBkaXNwbGF5aW5nIHRoZSBjdXJyZW50 IGJ1ZmZlci4iCiAgIDpsaWdodGVyIG5pbAotICAobGV0ICgoZGVmYXVsdC12YWx1ZSAnKDpldmFs ICh0YWItbGluZS1mb3JtYXQpKSkpCi0gICAgKGlmIHRhYi1saW5lLW1vZGUKLSAgICAgICAgOzsg UHJlc2VydmUgdGhlIGV4aXN0aW5nIHRhYi1saW5lIHNldCBvdXRzaWRlIG9mIHRoaXMgbW9kZQot ICAgICAgICAodW5sZXNzIHRhYi1saW5lLWZvcm1hdAotICAgICAgICAgIChzZXRxIHRhYi1saW5l LWZvcm1hdCBkZWZhdWx0LXZhbHVlKSkKLSAgICAgIDs7IFJlc2V0IG9ubHkgdmFsdWVzIHNldCBi eSB0aGlzIG1vZGUKLSAgICAgICh3aGVuIChlcXVhbCB0YWItbGluZS1mb3JtYXQgZGVmYXVsdC12 YWx1ZSkKLSAgICAgICAgKHNldHEgdGFiLWxpbmUtZm9ybWF0IG5pbCkpKSkpCisgICh0YWItbGlu ZS1zZXQtZGlzcGxheSAndGFiLWxpbmUtbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgKGlm IHRhYi1saW5lLW1vZGUgJyg6ZXZhbCAodGFiLWxpbmUtZm9ybWF0KSkgbmlsKSkpCiAKIChkZWZj dXN0b20gdGFiLWxpbmUtZXhjbHVkZS1tb2RlcwogICAnKGNvbXBsZXRpb24tbGlzdC1tb2RlKQot LSAKMi4zOS4yCgo= --=_b2ace73e7a83928017c937c8a89717da Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0002-Add-user-option-to-only-display-default-tool-bar.patch Content-Disposition: attachment; filename=0002-Add-user-option-to-only-display-default-tool-bar.patch; size=2068 RnJvbSBiYTkwZWQ3ZjA1N2VhNjI3YmQyMTY4ZDQ3MjIzMzk2YTdiYzM2YzIwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+CkRhdGU6 IEZyaSwgMjYgSmFuIDIwMjQgMTA6MDg6MzAgLTA4MDAKU3ViamVjdDogW1BBVENIIDIvM10gQWRk IHVzZXIgb3B0aW9uIHRvIG9ubHkgZGlzcGxheSBkZWZhdWx0IHRvb2wgYmFyCgpUaGlzIHdvcmtz IHdlbGwgd2l0aCBgd2luZG93LXRvb2wtYmFyLW1vZGUnLCB0byBiZSBhZGRlZCBpbiB1cGNvbWlu Zwpjb21taXQuICBUaGVuIHRoZSBkZWZhdWx0IHRvb2wgYmFyIGlzIGRpc3BsYXllZCBmcmFtZS13 aWRlIGFuZAptb2RlLXNwZWNpZmljIHRvb2wgYmFycyBhcmUgZGlzcGxheWVkIGluIHRoZSB3aW5k b3cgdGhhdCBtb2RlIGlzCmFjdGl2ZSBpbi4KCiogbGlzcC90b29sLWJhci5lbCAodG9vbC1iYXIt YWx3YXlzLXNob3ctZGVmYXVsdCk6IE5ldyB1c2VyIG9wdGlvbi4KKHRvb2wtYmFyLS1jYWNoZS1r ZXksIHRvb2wtYmFyLW1ha2Uta2V5bWFwLTEpOiBSZXR1cm4gZGVmYXVsdCB0b29sIGJhcgp3aGVu IG9wdGlvbiBpcyBzZXQuCi0tLQogbGlzcC90b29sLWJhci5lbCB8IDE3ICsrKysrKysrKysrKysr Ky0tCiAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9saXNwL3Rvb2wtYmFyLmVsIGIvbGlzcC90b29sLWJhci5lbAppbmRleCA5NmI2 MWM3YjIyOS4uNjg1ZTRkZmJiODYgMTAwNjQ0Ci0tLSBhL2xpc3AvdG9vbC1iYXIuZWwKKysrIGIv bGlzcC90b29sLWJhci5lbApAQCAtMTAwLDcgKzEwMCw5IEBAIHNlY29uZGFyeS10b29sLWJhci1t YXAKIChkZWZjb25zdCB0b29sLWJhci1rZXltYXAtY2FjaGUgKG1ha2UtaGFzaC10YWJsZSA6dGVz dCAjJ2VxdWFsKSkKIAogKGRlZnN1YnN0IHRvb2wtYmFyLS1jYWNoZS1rZXkgKCkKLSAgKGNvbnMg KGZyYW1lLXRlcm1pbmFsKSAoc3hoYXNoLWVxIHRvb2wtYmFyLW1hcCkpKQorICAoY29ucyAoZnJh bWUtdGVybWluYWwpCisgICAgICAgIChzeGhhc2gtZXEgKGlmIHRvb2wtYmFyLWFsd2F5cy1zaG93 LWRlZmF1bHQgKGRlZmF1bHQtdmFsdWUgJ3Rvb2wtYmFyLW1hcCkKKyAgICAgICAgICAgICAgICAg ICAgIHRvb2wtYmFyLW1hcCkpKSkKIAogKGRlZnN1YnN0IHRvb2wtYmFyLS1zZWNvbmRhcnktY2Fj aGUta2V5ICgpCiAgIChjb25zIChmcmFtZS10ZXJtaW5hbCkgKHN4aGFzaC1lcSBzZWNvbmRhcnkt dG9vbC1iYXItbWFwKSkpCkBAIC0xOTEsNyArMTkzLDkgQEAgdG9vbC1iYXItbWFrZS1rZXltYXAt MQogCQkJCSAgICAgIGJpbmQpKQogCQkgIChwbGlzdC1wdXQgcGxpc3QgOmltYWdlIGltYWdlKSkp CiAJICAgICAgYmluZCkpCi0JICAob3IgbWFwIHRvb2wtYmFyLW1hcCkpKQorCSAgKG9yIG1hcAor ICAgICAgICAgICAgICAoaWYgdG9vbC1iYXItYWx3YXlzLXNob3ctZGVmYXVsdCAoZGVmYXVsdC12 YWx1ZSAndG9vbC1iYXItbWFwKQorICAgICAgICAgICAgICAgIHRvb2wtYmFyLW1hcCkpKSkKIAog Ozs7IyMjYXV0b2xvYWQKIChkZWZ1biB0b29sLWJhci1hZGQtaXRlbSAoaWNvbiBkZWYga2V5ICZy ZXN0IHByb3BzKQpAQCAtMzc3LDYgKzM4MSwxNSBAQCB0b29sLWJhci1zZXR1cAogCSAgICAgKG1v ZGlmeS1hbGwtZnJhbWVzLXBhcmFtZXRlcnMKIAkgICAgICAobGlzdCAoY29ucyAndG9vbC1iYXIt cG9zaXRpb24gdmFsKSkpKSkpCiAKKyhkZWZjdXN0b20gdG9vbC1iYXItYWx3YXlzLXNob3ctZGVm YXVsdCBuaWwKKyAgIklmIG5vbi1uaWwsIGRvIG5vdCBzaG93IG1vZGUtc3BlY2lmaWMgdG9vbCBi YXJzLgorVGhpcyB3b3JrcyB3ZWxsIHdoZW4gdXNpbmcgYGdsb2JhbC13aW5kb3ctdG9vbC1iYXIt bW9kZScgdG8KK2Rpc3BsYXkgdGhlIG1vZGUtc3BlY2lmaWMgdG9vbCBiYXJzIGF0dGFjaGVkIHRv IGVhY2ggd2luZG93LiIKKyAgOnR5cGUgJ2Jvb2xlYW4KKyAgOmdyb3VwICdmcmFtZXMKKyAgOmdy b3VwICdtb3VzZQorICA6dmVyc2lvbiAiMzAuMSIpCisKIAwKIAogOzsgTW9kaWZpZXIgYmFyIG1v ZGUuCi0tIAoyLjM5LjIKCg== --=_b2ace73e7a83928017c937c8a89717da Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0003-Adding-window-tool-bar-package.patch Content-Disposition: attachment; filename=0003-Adding-window-tool-bar-package.patch; size=21242 RnJvbSAyNGVkNzUyZWMwYmZkZGVkMjRjYmE0ODkyNDI2YzJjOTcxMDEyNmNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+CkRhdGU6 IEZyaSwgMjYgSmFuIDIwMjQgMTU6NDQ6MTIgLTA4MDAKU3ViamVjdDogW1BBVENIIDMvM10gQWRk aW5nIHdpbmRvdy10b29sLWJhciBwYWNrYWdlCgotLS0KIGxpc3Avd2luZG93LXRvb2wtYmFyLmVs IHwgNDg4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBj aGFuZ2VkLCA0ODggaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpc3Avd2luZG93 LXRvb2wtYmFyLmVsCgpkaWZmIC0tZ2l0IGEvbGlzcC93aW5kb3ctdG9vbC1iYXIuZWwgYi9saXNw L3dpbmRvdy10b29sLWJhci5lbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uMzk1MGZlMTJmMWEKLS0tIC9kZXYvbnVsbAorKysgYi9saXNwL3dpbmRvdy10b29sLWJhci5l bApAQCAtMCwwICsxLDQ4OCBAQAorOzs7IHdpbmRvdy10b29sLWJhci5lbCAtLS0gQWRkIHRvb2wg YmFycyBpbnNpZGUgd2luZG93cyAtKi0gbGV4aWNhbC1iaW5kaW5nOiB0IC0qLQorCis7OyBDb3B5 cmlnaHQgKEMpIDIwMjMtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKzs7IEF1 dGhvcjogSmFyZWQgRmluZGVyIDxqYXJlZEBmaW5kZXIub3JnPgorOzsgQ3JlYXRlZDogTm92IDIx LCAyMDIzCis7OyBWZXJzaW9uOiAwLjIKKzs7IEtleXdvcmRzOiBtb3VzZQorOzsgVVJMOiBodHRw Oi8vZ2l0aHViLmNvbS9jaGFvc2VtZXIvd2luZG93LXRvb2wtYmFyCis7OyBQYWNrYWdlLVJlcXVp cmVzOiAoKGVtYWNzICIyOS4xIikpCisKKzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBFbWFj cy4KKworOzsgR05VIEVtYWNzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKzs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7OyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorOzsgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworOzsgR05VIEVtYWNzIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7OyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorOzsgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworOzsg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKzs7IGFsb25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCis7OzsgQ29tbWVudGFyeToKKzs7Cis7OyBUaGlzIHBh Y2thZ2UgcHV0cyBhIHRvb2wgYmFyIGluIGVhY2ggd2luZG93LiAgVGhpcyBhbGxvd3MgeW91IHRv IHNlZQorOzsgbXVsdGlwbGUgdG9vbCBiYXJzIHNpbXVsdGFuZW91c2x5IGRpcmVjdGx5IG5leHQg dG8gdGhlIGJ1ZmZlciBpdAorOzsgYWN0cyBvbiB3aGljaCBmZWVscyBtdWNoIG1vcmUgaW50dWl0 aXZlLiAgRW1hY3MgImJyb3dzaW5nIiBtb2RlcworOzsgZ2VuZXJhbGx5IGhhdmUgc2Vuc2libGUg dG9vbCBiYXJzLCBmb3IgZXhhbXBsZTogKmluZm8qLCAqaGVscCosIGFuZAorOzsgKmV3dyogaGF2 ZSB0aGVtLgorOzsKKzs7IEl0IGRvZXMgdGhpcyB3aGlsZSBiZWluZyBtaW5kZnVsIG9mIHNjcmVl biByZWFsIGVzdGF0ZS4gIE1vc3QgbW9kZXMKKzs7IGRvIG5vdCBwcm92aWRlIGEgY3VzdG9tIHRv b2wgYmFyLCBhbmQgdGhpcyBwYWNrYWdlIGRvZXMgbm90IHNob3cgdGhlCis7OyBkZWZhdWx0IHRv b2wgYmFyLiAgVGhpcyBtZWFucyB0aGF0IGZvciBtb3N0IGJ1ZmZlcnMgdGhlcmUgd2lsbCBiZSBu bworOzsgc3BhY2UgdGFrZW4gdXAuICBGdXJ0aGVybW9yZSwgeW91IGNhbiBwdXQgdGhpcyB0b29s IGJhciBpbiB0aGUgbW9kZQorOzsgbGluZSBvciB0YWIgbGluZSBpZiB5b3Ugd2FudCB0byBzaGFy ZSBpdCB3aXRoIGV4aXN0aW5nIGNvbnRlbnQuCis7OworOzsgVG8gZ2V0IHRoZSBkZWZhdWx0IGJl aGF2aW9yLCBydW4gKGdsb2JhbC13aW5kb3ctdG9vbC1iYXItbW9kZSAxKSBvcgorOzsgZW5hYmxl IHZpYSBNLXggY3VzdG9taXplLWdyb3VwIFJFVCB3aW5kb3ctdG9vbC1iYXIgUkVULiAgVGhpcyB1 c2VzCis7OyB0aGUgcGVyLXdpbmRvdyB0YWIgbGluZSB0byBzaG93IHRoZSB0b29sIGJhci4KKzs7 Cis7OyBJZiB5b3Ugd2FudCB0byBzaGFyZSBzcGFjZSB3aXRoIGFuIGV4aXN0aW5nIHRhYiBsaW5l LCBtb2RlIGxpbmUsIG9yCis7OyBoZWFkZXIgbGluZSwgYWRkICg6ZXZhbCAod2luZG93LXRvb2wt YmFyLXN0cmluZykpIHRvCis7OyBgdGFiLWxpbmUtZm9ybWF0JywgYG1vZGUtbGluZS1mb3JtYXQn LCBvciBgaGVhZGVyLWxpbmUtZm9ybWF0Jy4KKworOzs7IEtub3duIGlzc3VlczoKKzs7Cis7OyBP biBHTlUgRW1hY3MgMjkuMSwgdGVybWluYWxzIGRyYWdnaW5nIHRvIHJlc2l6ZSB3aW5kb3dzIHdp bGwgZXJyb3IKKzs7IHdpdGggbWVzc2FnZSAiPHRhYi1saW5lPiA8bW91c2UtbW92ZW1lbnQ+IGlz IHVuZGVmaW5lZCIuICBUaGlzIGlzIGEKKzs7IGJ1ZyBpbiBHTlUgRW1hY3MsCis7OyA8aHR0cHM6 Ly9kZWJidWdzLmdudS5vcmcvY2dpL2J1Z3JlcG9ydC5jZ2k/YnVnPTY3NDU3Pi4KKzs7Cis7OyBP biBHTlUgRW1hY3MgMjksIHBlcmZvcm1hbmNlIGluIHRlcm1pbmFscyBpcyBsb3dlciB0aGFuIG9u Cis7OyBncmFwaGljYWwgZnJhbWVzLiAgVGhpcyBpcyBkdWUgdG8gYSB3b3JrYXJvdW5kLCBzZWUg Ildvcmthcm91bmQgZm9yCis7OyBodHRwczovL2RlYmJ1Z3MuZ251Lm9yZy9jZ2kvYnVncmVwb3J0 LmNnaT9idWc9NjgzMzQiLCBiZWxvdy4KKworOzs7IFRvZG86Cis7OworOzsgTm90IGFsbCBmZWF0 dXJlcyBwbGFubmVkIGFyZSBpbXBsZW1lbnRlZCB5ZXQuICBFdmVudHVhbGx5IEkgd291bGQKKzs7 IGxpa2UgdG8gYWxzbyBnZW5lcmFsbHkgbWFrZSB0b29sIGJhcnMgYmV0dGVyLgorOzsKKzs7IFRh cmdldGluZyAwLjM6Cis7OyAqIFByb3Blcmx5IHN1cHBvcnQgcmVhbWluaW5nIGxlc3MgZnJlcXVl bnRseSB1c2VkIHRvb2wgYmFyIGl0ZW0gc3BlY3MuICBGcm9tCis7OyAgIGBwYXJzZV90b29sX2Jh cl9pdGVtJzoKKzs7ICAgICAqIDp2aXNpYmxlCis7OyAgICAgKiA6ZmlsdGVyCis7OyAgICAgKiA6 YnV0dG9uCis7OyAgICAgKiA6d3JhcAorOzsgKiBBZGQgZGlzcGxheSBjdXN0b21pemF0aW9uIHNp bWlsYXIgdG8gYHRvb2wtYmFyLXN0eWxlJy4KKzs7Cis7OyBUYXJnZXRpbmcgMS4wOgorOzsKKzs7 ICogQ2xlYW4gdXAgRW1hY3MgdG9vbCBiYXJzCis7OyAgICAgKiBEZWZhdWx0OiBSZW1vdmUgZGVm YXVsdCB0b29sLWJhciBlbnRpcmVseQorOzsgICAgICogZ3JlcCwgdmM6IFJlbW92ZSBkZWZhdWx0 IHRvb2wtYmFyIGluaGVyaXRlZAorOzsgICAgICogaW5mbzogUmVtb3ZlIE5leHQgLyBQcmV2IC8g VXAsIHdoaWNoIGlzIGFscmVhZHkgaW4gdGhlIGhlYWRlcgorOzsgICAgICogc21lcmdlOiBBZGQg dG9vbCBiYXIgZm9yIG5leHQvcHJldgorOzsKKzs7IFBvc3QgMS4wIHdvcms6Cis7OworOzsgKiBT aG93IGtleWJvYXJkIHNob3J0Y3V0IG9uIGhlbHAgdGV4dC4KKzs7Cis7OyAqIEFkZCBhIGJpdCBt b3JlIGRvY3VtZW50YXRpb24uCis7OyAqIEFkZCBjdXN0b21pemF0aW9uIG9wdGlvbjogaWdub3Jl LWRlZmF1bHQtdG9vbC1iYXItbWFwCis7OyAqIE1ha2UgdGFiLWxpbmUgZHJhZ2dpbmcgcmVzaXpl IHRoZSB3aW5kb3cKKworOzs7IENvZGU6CisKKyhyZXF1aXJlICdtd2hlZWwpCisocmVxdWlyZSAn dGFiLWxpbmUpCisocmVxdWlyZSAndG9vbC1iYXIpCisMCis7OzsgQmVuY2htYXJraW5nIGNvZGUK Kzs7Cis7OyBSZWZyZXNoaW5nIHRoZSB0b29sIGJhciBpcyBjb21wdXRhdGlvbmFsbHkgc2ltcGxl LCBidXQgZ2VuZXJhdGVzIGEKKzs7IGxvdCBvZiBnYXJiYWdlLiAgU28gdGhpcyBiZW5jaG1hcmtp bmcgZm9jdXNlcyBvbiBnYXJiYWdlCis7OyBnZW5lcmF0aW9uLiAgU2luY2UgaXQgaGFzIHRvIHJ1 biBhZnRlciBtb3N0IGNvbW1hbmRzLCBnZW5lcmF0aW5nCis7OyBzaWduaWZpY2FudGx5IG1vcmUg Z2FyYmFnZSB3aWxsIGNhdXNlIG5vdGljZWFibGUgcGVyZm9ybWFuY2UKKzs7IGRlZ3JhdGlvbi4K Kzs7Cis7OyBUaGUgcmVmcmVzaCBoYXMgdHdvIHN0ZXBzOgorOzsKKzs7IFN0ZXAgMTogTG9vayB1 cCB0aGUgPHRvb2wtYmFyPiBtYXAuCis7OyBTdGVwIDI6IEdlbmVyYXRlIGEgTGlzcCBzdHJpbmcg dXNpbmcgdGV4dCBwcm9wZXJ0aWVzIGZvciB0aGUgdG9vbAorOzsgYmFyIHN0cmluZy4KKzs7Cis7 OyBBZGRpdGlvbmFsbHksIHdlIGtlZXAgdHJhY2sgb2YgdGhlIHBlcmNlbnRhZ2Ugb2YgY29tbWFu ZHMgdGhhdAorOzsgYWN1dGFsbHkgY3JlYXRlZCBhIHJlZnJlc2guCisoZGVmdmFyIHdpbmRvdy10 b29sLWJhci0tbWVtb3J5LXVzZS1kZWx0YS1zdGVwMSAobWFrZS1saXN0IDcgMCkKKyAgIkFic29s dXRlIGRlbHRhIG9mIG1lbW9yeSB1c2UgY291bnRlcnMgZHVyaW5nIHN0ZXAgMS4KK1RoaXMgaXMg YSBsaXN0IGluIHRoZSBzYW1lIHN0cnVjdHVyZSBhcyBgbWVtb3J5LXVzZS1jb3VudHMnLiIpCiso ZGVmdmFyIHdpbmRvdy10b29sLWJhci0tbWVtb3J5LXVzZS1kZWx0YS1zdGVwMiAobWFrZS1saXN0 IDcgMCkKKyAgIkFic29sdXRlIGRlbHRhIG9mIG1lbW9yeSB1c2UgY291bnRlcnMgZHVyaW5nIHN0 ZXAgMi4KK1RoaXMgaXMgYSBsaXN0IGluIHRoZSBzYW1lIHN0cnVjdHVyZSBhcyBgbWVtb3J5LXVz ZS1jb3VudHMnLiIpCisoZGVmdmFyIHdpbmRvdy10b29sLWJhci0tcmVmcmVzaC1kb25lLWNvdW50 IDAKKyAgIk51bWJlciBvZiB0b29sIGJhciBzdHJpbmcgcmVmcmVzaGVzIHJ1bi4KK1RoZSB0b3Rh bCBudW1iZXIgb2YgcmVxdWVzdHMgaXMgdGhlIHN1bSBvZiB0aGlzIGFuZAorYHdpbmRvdy10b29s LWJhci0tcmVmcmVzaC1za2lwcGVkLWNvdW50Jy4iKQorKGRlZnZhciB3aW5kb3ctdG9vbC1iYXIt LXJlZnJlc2gtc2tpcHBlZC1jb3VudCAwCisgICJOdW1iZXIgb2YgdG9vbCBiYXIgc3RyaW5nIHJl ZnJlc2hlcyB0aGF0IHdlcmUgc2tpcHBlZC4KK1RoZSB0b3RhbCBudW1iZXIgb2YgcmVxdWVzdHMg aXMgdGhlIHN1bSBvZiB0aGlzIGFuZAorYHdpbmRvdy10b29sLWJhci0tcmVmcmVzaC1kb25lLWNv dW50Jy4iKQorCisoZGVmdW4gd2luZG93LXRvb2wtYmFyLS1tZW1vcnktdXNlLWF2Zy1zdGVwMSAo KQorICAiUmV0dXJuIGF2ZXJhZ2UgbWVtb3J5IHVzZSBkZWx0YSBkdXJpbmcgc3RlcCAxLiIKKyAg KG1hcGNhciAobGFtYmRhIChlbHQpICgvIGVsdCB3aW5kb3ctdG9vbC1iYXItLXJlZnJlc2gtZG9u ZS1jb3VudCAxLjApKQorICAgICAgICAgIHdpbmRvdy10b29sLWJhci0tbWVtb3J5LXVzZS1kZWx0 YS1zdGVwMSkpCisKKyhkZWZ1biB3aW5kb3ctdG9vbC1iYXItLW1lbW9yeS11c2UtYXZnLXN0ZXAy ICgpCisgICJSZXR1cm4gYXZlcmFnZSBtZW1vcnkgdXNlIGRlbHRhIGR1cmluZyBzdGVwIDIuIgor ICAobWFwY2FyIChsYW1iZGEgKGVsdCkgKC8gZWx0IHdpbmRvdy10b29sLWJhci0tcmVmcmVzaC1k b25lLWNvdW50IDEuMCkpCisgICAgICAgICAgd2luZG93LXRvb2wtYmFyLS1tZW1vcnktdXNlLWRl bHRhLXN0ZXAyKSkKKworKGRlY2xhcmUtZnVuY3Rpb24gdGltZS1zdGFtcC1zdHJpbmcgInRpbWUt c3RhbXAiKQorCisoZGVmdW4gd2luZG93LXRvb2wtYmFyLXNob3ctbWVtb3J5LXVzZSAoKQorICAi UG9wIHVwIGEgd2luZG93IHNob3dpbmcgdGhlIG1lbW9yeSB1c2UgbWV0cmljcy4iCisgIChpbnRl cmFjdGl2ZSkKKyAgKHJlcXVpcmUgJ3RpbWUtc3RhbXApCisgIChzYXZlLXNlbGVjdGVkLXdpbmRv dworICAgIChwb3AtdG8tYnVmZmVyICIqV1RCIE1lbW9yeSBSZXBvcnQqIikKKyAgICAodW5sZXNz IChlcSBtYWpvci1tb2RlICdzcGVjaWFsLW1vZGUpCisgICAgICAoc3BlY2lhbC1tb2RlKSkKKwor ICAgIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCisgICAgKGxldCAoKGluaGliaXQtcmVhZC1vbmx5 IHQpKQorICAgICAgKGluc2VydCAocHJvcGVydGl6ZSAoY29uY2F0ICJGdW5jdGlvbjogd2luZG93 LXRvb2wtYmFyLXN0cmluZyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRp bWUtc3RhbXAtc3RyaW5nKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhY2UgJ3VuZGVy bGluZSAnZm9udC1sb2NrLWZhY2UgJ3VuZGVybGluZSkKKyAgICAgICAgICAgICAgIlxuXG4iKQor ICAgICAgKHdpbmRvdy10b29sLWJhci0taW5zZXJ0LW1lbW9yeS11c2UKKyAgICAgICAiU3RlcCAx IiAod2luZG93LXRvb2wtYmFyLS1tZW1vcnktdXNlLWF2Zy1zdGVwMSkpCisgICAgICAod2luZG93 LXRvb2wtYmFyLS1pbnNlcnQtbWVtb3J5LXVzZQorICAgICAgICJTdGVwIDIiICh3aW5kb3ctdG9v bC1iYXItLW1lbW9yeS11c2UtYXZnLXN0ZXAyKSkKKyAgICAgIChpbnNlcnQgKGZvcm1hdCAiUmVm cmVzaCBjb3VudCAgJWRcbiIgd2luZG93LXRvb2wtYmFyLS1yZWZyZXNoLWRvbmUtY291bnQpCisg ICAgICAgICAgICAgIChmb3JtYXQgIlJlZnJlc2ggZXhlY3V0ZWQgcGVyY2VudCAlLjJmXG4iCisg ICAgICAgICAgICAgICAgICAgICAgKC8gd2luZG93LXRvb2wtYmFyLS1yZWZyZXNoLWRvbmUtY291 bnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKyB3aW5kb3ctdG9vbC1iYXItLXJlZnJlc2gt ZG9uZS1jb3VudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy10b29sLWJhci0t cmVmcmVzaC1za2lwcGVkLWNvdW50KQorICAgICAgICAgICAgICAgICAgICAgICAgIDEuMCkpCisg ICAgICAgICAgICAgICJcbiIpKSkpCisKKyhkZWZ1biB3aW5kb3ctdG9vbC1iYXItLWluc2VydC1t ZW1vcnktdXNlIChsYWJlbCBhdmctbWVtb3J5LXVzZSkKKyAgIkluc2VydCBtZW1vcnkgdXNlIGlu dG8gY3VycmVudCBidWZmZXIuCisKK0xBQkVMOiBBIHByZWZpeCBzdHJpbmcgdG8gYmUgaW4gZnJv bnQgb2YgdGhlIGRhdGEuCitBVkctTUVNT1JZLVVTRTogQSBsaXN0IG9mIGF2ZXJhZ2VzLCB3aXRo IHRoZSBzYW1lIG1lYW5pbmcgYXMKKyAgYG1lbW9yeS11c2UtY291bnRzJy4iCisgIChsZXQqICgo bGFiZWwtbGVuIChsZW5ndGggbGFiZWwpKQorICAgICAgICAgKHBhZGRpbmcgKG1ha2Utc3RyaW5n IGxhYmVsLWxlbiA/XHMpKSkKKyAgICAoaW5zZXJ0IChmb3JtYXQgIiVzICAlOC4yZiBDb25zZXNc biIgbGFiZWwgKGVsdCBhdmctbWVtb3J5LXVzZSAwKSkpCisgICAgKGluc2VydCAoZm9ybWF0ICIl cyAgJTguMmYgRmxvYXRzXG4iIHBhZGRpbmcgKGVsdCBhdmctbWVtb3J5LXVzZSAxKSkpCisgICAg KGluc2VydCAoZm9ybWF0ICIlcyAgJTguMmYgVmVjdG9yIGNlbGxzXG4iIHBhZGRpbmcgKGVsdCBh dmctbWVtb3J5LXVzZSAyKSkpCisgICAgKGluc2VydCAoZm9ybWF0ICIlcyAgJTguMmYgU3ltYm9s c1xuIiBwYWRkaW5nIChlbHQgYXZnLW1lbW9yeS11c2UgMykpKQorICAgIChpbnNlcnQgKGZvcm1h dCAiJXMgICU4LjJmIFN0cmluZyBjaGFyc1xuIiBwYWRkaW5nIChlbHQgYXZnLW1lbW9yeS11c2Ug NCkpKQorICAgIChpbnNlcnQgKGZvcm1hdCAiJXMgICU4LjJmIEludGVydmFsc1xuIiBwYWRkaW5n IChlbHQgYXZnLW1lbW9yeS11c2UgNSkpKQorICAgIChpbnNlcnQgKGZvcm1hdCAiJXMgICU4LjJm IFN0cmluZ3NcbiIgcGFkZGluZyAoZWx0IGF2Zy1tZW1vcnktdXNlIDYpKSkpKQorDAorKGRlZmdy b3VwIHdpbmRvdy10b29sLWJhciBuaWwKKyAgIlRvb2wgYmFycyBwZXItd2luZG93LiIKKyAgOmdy b3VwICdjb252ZW5pZW5jZQorICA6cHJlZml4ICJ3aW5kb3ctdG9vbC1iYXItIikKKworKGRlZnZh ci1rZXltYXAgd2luZG93LXRvb2wtYmFyLS1idXR0b24ta2V5bWFwCisgIDpkb2MgIktleW1hcCB1 c2VkIGJ5IGB3aW5kb3ctdG9vbC1iYXItLWtleW1hcC1lbnRyeS10by1zdHJpbmcnLiIKKyAgIjxm b2xsb3ctbGluaz4iICdtb3VzZS1mYWNlCisgIDs7IEZvbGxvdyBsaW5rIG9uIGFsbCBjbGlja3Mg b2YgbW91c2UtMSBhbmQgbW91c2UtMiBzaW5jZSB0aGUgdG9vbAorICA7OyBiYXIgaXMgbm90IGEg cGxhY2UgdGhlIHBvaW50IGNhbiB0cmF2ZWwgdG8uCisgICI8dGFiLWxpbmU+IDxtb3VzZS0xPiIg Iyd3aW5kb3ctdG9vbC1iYXItLWNhbGwtYnV0dG9uCisgICI8dGFiLWxpbmU+IDxkb3VibGUtbW91 c2UtMT4iICMnd2luZG93LXRvb2wtYmFyLS1jYWxsLWJ1dHRvbgorICAiPHRhYi1saW5lPiA8dHJp cGxlLW1vdXNlLTE+IiAjJ3dpbmRvdy10b29sLWJhci0tY2FsbC1idXR0b24KKyAgIjx0YWItbGlu ZT4gPG1vdXNlLTI+IiAjJ3dpbmRvdy10b29sLWJhci0tY2FsbC1idXR0b24KKyAgIjx0YWItbGlu ZT4gPGRvdWJsZS1tb3VzZS0yPiIgIyd3aW5kb3ctdG9vbC1iYXItLWNhbGwtYnV0dG9uCisgICI8 dGFiLWxpbmU+IDx0cmlwbGUtbW91c2UtMj4iICMnd2luZG93LXRvb2wtYmFyLS1jYWxsLWJ1dHRv bgorCisgIDs7IE1vdXNlIGRvd24gZXZlbnRzIGRvIG5vdGhpbmcuICBBIGJpbmRpbmcgaXMgbmVl ZGVkIHNvIGlzZWFyY2gKKyAgOzsgZG9lcyBub3QgZXhpdCB3aGVuIHRoZSB0YWIgYmFyIGlzIGNs aWNrZWQuCisgICI8dGFiLWxpbmU+IDxkb3duLW1vdXNlLTE+IiAjJ3dpbmRvdy10b29sLWJhci0t aWdub3JlCisgICI8dGFiLWxpbmU+IDxkb3VibGUtZG93bi1tb3VzZS0xPiIgIyd3aW5kb3ctdG9v bC1iYXItLWlnbm9yZQorICAiPHRhYi1saW5lPiA8dHJpcGxlLWRvd24tbW91c2UtMT4iICMnd2lu ZG93LXRvb2wtYmFyLS1pZ25vcmUKKyAgIjx0YWItbGluZT4gPGRvd24tbW91c2UtMj4iICMnd2lu ZG93LXRvb2wtYmFyLS1pZ25vcmUKKyAgIjx0YWItbGluZT4gPGRvdWJsZS1kb3duLW1vdXNlLTI+ IiAjJ3dpbmRvdy10b29sLWJhci0taWdub3JlCisgICI8dGFiLWxpbmU+IDx0cmlwbGUtZG93bi1t b3VzZS0yPiIgIyd3aW5kb3ctdG9vbC1iYXItLWlnbm9yZSkKKyhmc2V0ICd3aW5kb3ctdG9vbC1i YXItLWJ1dHRvbi1rZXltYXAgd2luZG93LXRvb2wtYmFyLS1idXR0b24ta2V5bWFwKSA7IFNvIGl0 IGNhbiBiZSBhIGtleW1hcCBwcm9wZXJ0eQorCis7OyBSZWdpc3RlciBiaW5kaW5ncyB0aGF0IHN0 YXkgaW4gaXNlYXJjaC4gIFRlY2huaWNhbGx5LCB0aGVzZQorOzsgY29tbWFuZHMgZG9uJ3QgcG9w IHVwIGEgbWVudSBidXQgdGhleSBhY3QgdmVyeSBzaW1pbGFyIGluIHRoYXQgdGhleQorOzsgZW5k IHVwIGNhbGxpbmcgYW4gYWN0dWFsIGNvbW1hbmQgdmlhIGBjYWxsLWludGVyYWN0aXZlbHknLgor KHB1c2ggJ3dpbmRvdy10b29sLWJhci0tY2FsbC1idXR0b24gaXNlYXJjaC1tZW51LWJhci1jb21t YW5kcykKKyhwdXNoICd3aW5kb3ctdG9vbC1iYXItLWlnbm9yZSBpc2VhcmNoLW1lbnUtYmFyLWNv bW1hbmRzKQorCisoZGVmdmFyLWxvY2FsIHdpbmRvdy10b29sLWJhci1zdHJpbmctLWNhY2hlIG5p bAorICAiQ2FjaGUgZm9yIHByZXZpb3VzIHJlc3VsdCBvZiBgd2luZG93LXRvb2wtYmFyLXN0cmlu ZycuIikKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biB3aW5kb3ctdG9vbC1iYXItc3RyaW5nICgp CisgICJSZXR1cm4gYSAocHJvcGVydGl6ZWQpIHN0cmluZyBmb3IgdGhlIHRvb2wgYmFyLgorCitU aGlzIGlzIGZvciB3aGVuIHlvdSB3YW50IG1vcmUgY3VzdG9taXphdGlvbnMgdGhhbgorYHdpbmRv dy10b29sLWJhci1tb2RlJyBwcm92aWRlcy4gIENvbW1vbmx5IGFkZGVkIHRvIHRoZSB2YXJpYWJs ZQorYHRhYi1saW5lLWZvcm1hdCcsIGBoZWFkZXItbGluZS1mb3JtYXQnLCBvciBgbW9kZS1saW5l LWZvcm1hdCciCisgIChpZiAob3IgKG51bGwgd2luZG93LXRvb2wtYmFyLXN0cmluZy0tY2FjaGUp CisgICAgICAgICAgKHdpbmRvdy10b29sLWJhci0tbGFzdC1jb21tYW5kLXRyaWdnZXJzLXJlZnJl c2gtcCkpCisgICAgICAobGV0KiAoKG1lbTAgKG1lbW9yeS11c2UtY291bnRzKSkKKyAgICAgICAg ICAgICAodG9vbGJhci1tZW51ICh3aW5kb3ctdG9vbC1iYXItLWdldC1rZXltYXApKQorICAgICAg ICAgICAgIChtZW0xIChtZW1vcnktdXNlLWNvdW50cykpCisgICAgICAgICAgICAgKHJlc3VsdCAo bWFwY29uY2F0ICMnd2luZG93LXRvb2wtYmFyLS1rZXltYXAtZW50cnktdG8tc3RyaW5nCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZHIgdG9vbGJhci1tZW51KSA7U2tpcCAna2V5 bWFwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IFdpdGhvdXQgc3BhY2VzIGJl dHdlZW4gdGhlIHRleHQsIGhvdmVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDs7IGhpZ2hsaWdodHMgYWxsIGFkamFjZW50IGJ1dHRvbnMuCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChpZiAod2luZG93LXRvb2wtYmFyLS11c2UtaW1hZ2VzKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3BlcnRpemUgIiAiICdpbnZpc2libGUgdCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICIpKSkKKyAgICAgICAgICAgICAo bWVtMiAobWVtb3J5LXVzZS1jb3VudHMpKSkKKyAgICAgICAgKGNsLW1hcGwgKGxhbWJkYSAobC1p bml0IGwwIGwxKQorICAgICAgICAgICAgICAgICAgIChjbC1pbmNmIChjYXIgbC1pbml0KSAoLSAo Y2FyIGwxKSAoY2FyIGwwKSkpKQorICAgICAgICAgICAgICAgICB3aW5kb3ctdG9vbC1iYXItLW1l bW9yeS11c2UtZGVsdGEtc3RlcDEgbWVtMCBtZW0xKQorICAgICAgICAoY2wtbWFwbCAobGFtYmRh IChsLWluaXQgbDEgbDIpCisgICAgICAgICAgICAgICAgICAgKGNsLWluY2YgKGNhciBsLWluaXQp ICgtIChjYXIgbDIpIChjYXIgbDEpKSkpCisgICAgICAgICAgICAgICAgIHdpbmRvdy10b29sLWJh ci0tbWVtb3J5LXVzZS1kZWx0YS1zdGVwMiBtZW0xIG1lbTIpCisKKyAgICAgICAgKHNldGYgd2lu ZG93LXRvb2wtYmFyLXN0cmluZy0tY2FjaGUKKyAgICAgICAgICAgICAgKGNvbmNhdAorICAgICAg ICAgICAgICAgOzsgVGhlIHRvb2wgYmFyIGZhY2UgYnkgZGVmYXVsdCBwdXRzIGJveGVzIGFyb3Vu ZCB0aGUKKyAgICAgICAgICAgICAgIDs7IGJ1dHRvbnMuICBIb3dldmVyLCB0aGlzIGJveCBpcyBu b3QgZGlzcGxheWVkIGlmIHRoZQorICAgICAgICAgICAgICAgOzsgYm94IHN0YXJ0cyBhdCB0aGUg bGVmdG1vc3QgcGl4ZWwgb2YgdGhlIHRhYi1saW5lLgorICAgICAgICAgICAgICAgOzsgQWRkIGEg c2luZ2xlIHNwYWNlIGluIHRoaXMgY2FzZSBzbyB0aGUgYm94IGRpc3BsYXlzCisgICAgICAgICAg ICAgICA7OyBjb3JyZWN0bHkuCisgICAgICAgICAgICAgICAod2hlbiAoZGlzcGxheS1zdXBwb3J0 cy1mYWNlLWF0dHJpYnV0ZXMtcAorICAgICAgICAgICAgICAgICAgICAgICcoOmJveCAobGluZS13 aWR0aCAxKSkpCisgICAgICAgICAgICAgICAgIChwcm9wZXJ0aXplICIgIiAnZGlzcGxheSAnKHNw YWNlIDp3aWR0aCAoMSkpKSkKKyAgICAgICAgICAgICAgIHJlc3VsdCkpCisgICAgICAgIChjbC1p bmNmIHdpbmRvdy10b29sLWJhci0tcmVmcmVzaC1kb25lLWNvdW50KSkKKyAgICAoY2wtaW5jZiB3 aW5kb3ctdG9vbC1iYXItLXJlZnJlc2gtc2tpcHBlZC1jb3VudCkpCisKKyAgd2luZG93LXRvb2wt YmFyLXN0cmluZy0tY2FjaGUpCisKKyhkZWZjb25zdCB3aW5kb3ctdG9vbC1iYXItLWdyYXBoaWNh bC1zZXBhcmF0b3IKKyAgKGxldCAoKHN0ciAobWFrZS1zdHJpbmcgMyA/XHMpKSkKKyAgICAoc2V0 LXRleHQtcHJvcGVydGllcyAwIDEgJyhkaXNwbGF5IChzcGFjZSA6d2lkdGggKDQpKSkgc3RyKQor ICAgIChzZXQtdGV4dC1wcm9wZXJ0aWVzIDEgMgorICAgICAgICAgICAgICAgICAgICAgICAgICco ZGlzcGxheSAoc3BhY2UgOndpZHRoICgxKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZh Y2UgKDppbnZlcnNlLXZpZGVvIHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgIHN0cikKKyAg ICAoc2V0LXRleHQtcHJvcGVydGllcyAyIDMgJyhkaXNwbGF5IChzcGFjZSA6d2lkdGggKDQpKSkg c3RyKQorICAgIHN0cikpCisKKyhkZWZ1biB3aW5kb3ctdG9vbC1iYXItLWtleW1hcC1lbnRyeS10 by1zdHJpbmcgKG1lbnUtaXRlbSkKKyAgIkNvbnZlcnQgTUVOVS1JVEVNIGludG8gYSAocHJvcGVy dGl6ZWQpIHN0cmluZyByZXByZXNlbnRhdGlvbi4KKworTUVOVS1JVEVNOiBNZW51IGl0ZW0gdG8g Y29udmVydC4gIFNlZSBpbmZvIG5vZGUgKGVsaXNwKVRvb2wgQmFyLiIKKyAgKHBjYXNlIG1lbnUt aXRlbQorICAgIDs7IFNlcGFyYXRvcnMKKyAgICAoKG9yIGAoLF8gIi0tIikKKyAgICAgICAgIGAo LF8gbWVudS1pdGVtICwoYW5kIChwcmVkIHN0cmluZ3ApCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAocHJlZCAoc3RyaW5nLXByZWZpeC1wICItLSIpKSkpKQorICAgICAoaWYgKHdpbmRv dy10b29sLWJhci0tdXNlLWltYWdlcykKKyAgICAgICAgIHdpbmRvdy10b29sLWJhci0tZ3JhcGhp Y2FsLXNlcGFyYXRvcgorICAgICAgICJ8IikpCisKKyAgICA7OyBNZW51IGl0ZW0sIHR1cm4gaW50 byBwcm9wZXJ0aXplZCBzdHJpbmcgYnV0dG9uCisgICAgKGAoLGtleSBtZW51LWl0ZW0gLG5hbWUt ZXhwciAsYmluZGluZyAuICxwbGlzdCkKKyAgICAgKHdoZW4gYmluZGluZyAgICAgIDsgSWYgbm8g YmluZGluZyBleGlzdHMsIHRoZW4gYnV0dG9uIGlzIGhpZGRlbi4KKyAgICAgICAobGV0KiAoKG5h bWUgKGV2YWwgbmFtZS1leHByKSkKKyAgICAgICAgICAgICAgKHN0ciAodXBjYXNlLWluaXRpYWxz IChvciAocGxpc3QtZ2V0IHBsaXN0IDpsYWJlbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoc3RyaW5nLXRyaW0tcmlnaHQgbmFtZSAiXFwuKyIpKSkpCisgICAgICAg ICAgICAgIChsZW4gKGxlbmd0aCBzdHIpKQorICAgICAgICAgICAgICAoZW5hYmxlLWZvcm0gKHBs aXN0LWdldCBwbGlzdCA6ZW5hYmxlKSkKKyAgICAgICAgICAgICAgKGVuYWJsZWQgKG9yIChub3Qg ZW5hYmxlLWZvcm0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZhbCBlbmFibGUtZm9y bSkpKSkKKyAgICAgICAgIChpZiBlbmFibGVkCisgICAgICAgICAgICAgKGFkZC10ZXh0LXByb3Bl cnRpZXMgMCBsZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKG1vdXNlLWZh Y2Ugd2luZG93LXRvb2wtYmFyLWJ1dHRvbi1ob3ZlcgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAga2V5bWFwIHdpbmRvdy10b29sLWJhci0tYnV0dG9uLWtleW1hcAorCQkJCSAg ICBmYWNlIHdpbmRvdy10b29sLWJhci1idXR0b24pCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RyKQorICAgICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgMCBsZW4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdmYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnd2luZG93LXRvb2wtYmFyLWJ1dHRvbi1kaXNhYmxlZAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RyKSkKKyAgICAgICAgICh3aGVuLWxldCAoKHNwZWMgKGFuZCAod2luZG93 LXRvb2wtYmFyLS11c2UtaW1hZ2VzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChw bGlzdC1nZXQgbWVudS1pdGVtIDppbWFnZSkpKSkKKyAgICAgICAgICAgKHB1dC10ZXh0LXByb3Bl cnR5IDAgbGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzcGxheQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGVuZCBzcGVjCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChpZiBlbmFibGVkICcoOm1hcmdpbiAyIDphc2NlbnQgY2VudGVy KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoOm1hcmdpbiAyIDph c2NlbnQgY2VudGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6 Y29udmVyc2lvbiBkaXNhYmxlZCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry KSkKKyAgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSAwIGxlbgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdoZWxwLWVjaG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKHBs aXN0LWdldCBwbGlzdCA6aGVscCkgbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHIpCisgICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgMCBsZW4gJ3Rvb2wtYmFyLWtleSBrZXkg c3RyKQorICAgICAgICAgc3RyKSkpKSkKKworKGRlZnVuIHdpbmRvdy10b29sLWJhci0tY2FsbC1i dXR0b24gKCkKKyAgIkNhbGwgdGhlIGJ1dHRvbiB0aGF0IHdhcyBjbGlja2VkIG9uIGluIHRoZSB0 YWIgbGluZS4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKHdoZW4gKG1vdXNlLWV2ZW50LXAgbGFzdC1j b21tYW5kLWV2ZW50KQorICAgIChsZXQgKChwb3NuIChldmVudC1zdGFydCBsYXN0LWNvbW1hbmQt ZXZlbnQpKSkKKyAgICAgIDs7IENvbW1hbmRzIG5lZWQgdG8gZXhlY3V0ZSB3aXRoIHRoZSByaWdo dCBidWZmZXIgYW5kIHdpbmRvdworICAgICAgOzsgc2VsZWN0ZWQuICBUaGUgc2VsZWN0aW9uIG5l ZWRzIHRvIGJlIHBlcm1hbmVudCBmb3IgaXNlYXJjaC4KKyAgICAgIChzZWxlY3Qtd2luZG93IChw b3NuLXdpbmRvdyBwb3NuKSkKKyAgICAgIChsZXQqICgoc3RyIChwb3NuLXN0cmluZyBwb3NuKSkK KyAgICAgICAgICAgICAoa2V5IChnZXQtdGV4dC1wcm9wZXJ0eSAoY2RyIHN0cikgJ3Rvb2wtYmFy LWtleSAoY2FyIHN0cikpKQorICAgICAgICAgICAgIChjbWQgKGxvb2t1cC1rZXkgKHdpbmRvdy10 b29sLWJhci0tZ2V0LWtleW1hcCkgKHZlY3RvciBrZXkpKSkpCisgICAgICAgIChjYWxsLWludGVy YWN0aXZlbHkgY21kKSkpKSkKKworKGRlZnVuIHdpbmRvdy10b29sLWJhci0taWdub3JlICgpCisg ICJEbyBub3RoaW5nLiAgVGhpcyBjb21tYW5kIGV4aXN0cyBmb3IgaXNlYXJjaC4iCisgIChpbnRl cmFjdGl2ZSkKKyAgbmlsKQorCisoZGVmdmFyIHdpbmRvdy10b29sLWJhci0taWdub3JlZC1ldmVu dC10eXBlcworICAobGV0ICgobGlzdCAobGlzdCAnbW91c2UtbW92ZW1lbnQgJ3BpbmNoCisgICAg ICAgICAgICAgICAgICAgICd3aGVlbC1kb3duICd3aGVlbC11cCAnd2hlZWwtbGVmdCAnd2hlZWwt cmlnaHQKKyAgICAgICAgICAgICAgICAgICAgbW91c2Utd2hlZWwtZG93bi1ldmVudCBtb3VzZS13 aGVlbC11cC1ldmVudAorICAgICAgICAgICAgICAgICAgICBtb3VzZS13aGVlbC1sZWZ0LWV2ZW50 IG1vdXNlLXdoZWVsLXJpZ2h0LWV2ZW50CisgICAgICAgICAgICAgICAgICAgIChib3VuZC1hbmQt dHJ1ZS1wIG1vdXNlLXdoZWVsLWRvd24tYWx0ZXJuYXRlLWV2ZW50KQorICAgICAgICAgICAgICAg ICAgICAoYm91bmQtYW5kLXRydWUtcCBtb3VzZS13aGVlbC11cC1hbHRlcm5hdGUtZXZlbnQpCisg ICAgICAgICAgICAgICAgICAgIChib3VuZC1hbmQtdHJ1ZS1wIG1vdXNlLXdoZWVsLWxlZnQtYWx0 ZXJuYXRlLWV2ZW50KQorICAgICAgICAgICAgICAgICAgICAoYm91bmQtYW5kLXRydWUtcCBtb3Vz ZS13aGVlbC1yaWdodC1hbHRlcm5hdGUtZXZlbnQpKSkpCisgICAgKGRlbGV0ZS1kdXBzIChkZWxl dGUgbmlsIGxpc3QpKSkKKyAgIkNhY2hlIGZvciBgd2luZG93LXRvb2wtYmFyLS1sYXN0LWNvbW1h bmQtdHJpZ2dlcnMtcmVmcmVzaC1wJy4iKQorCisoZGVmdW4gd2luZG93LXRvb2wtYmFyLS1sYXN0 LWNvbW1hbmQtdHJpZ2dlcnMtcmVmcmVzaC1wICgpCisgICJUZXN0IGlmIHRoZSByZWNlbnQgY29t bWFuZCBvciBldmVudCBzaG91bGQgdHJpZ2dlciBhIHRvb2wgYmFyIHJlZnJlc2guIgorICAobGV0 ICgodHlwZSAoZXZlbnQtYmFzaWMtdHlwZSBsYXN0LWNvbW1hbmQtZXZlbnQpKSkKKyAgICAoYW5k CisgICAgIDs7IEFzc3VtZSB0aGF0IGtleSBwcmVzc2VzIGFuZCBidXR0b24gcHJlc3NlcyBhcmUg dGhlIG9ubHkgdXNlcgorICAgICA7OyBpbnRlcmFjdGlvbnMgdGhhdCBjYW4gYWx0ZXIgdGhlIHRv b2wgYmFyLiAgU3BlY2lmaWNhbGx5LCB0aGlzCisgICAgIDs7IGV4Y2x1ZGVzIG1vdXNlIG1vdmVt ZW50LCBtb3VzZSB3aGVlbCBzY3JvbGwsIGFuZCBwaW5jaC4KKyAgICAgKG5vdCAobWVtYmVyIHR5 cGUgd2luZG93LXRvb2wtYmFyLS1pZ25vcmVkLWV2ZW50LXR5cGVzKSkKKyAgICAgOzsgQXNzdW1l IHRoYXQgYW55IGNvbW1hbmQgdGhhdCB0cmlnZ2VycyBzaGlmdCBzZWxlY3QgY2FuJ3QgYWx0ZXIK KyAgICAgOzsgdGhlIHRvb2wgYmFyLiAgVGhpcyBleGNsdWRlcyBwdXJlIG5hdmlnYXRpb24gY29t bWFuZHMuCisgICAgIChub3QgKHdpbmRvdy10b29sLWJhci0tY29tbWFuZC10cmlnZ2Vycy1zaGlm dC1zZWxlY3QtcCBsYXN0LWNvbW1hbmQpKQorICAgICA7OyBBc3N1bWUgdGhhdCBzZWxmLWluc2Vy dC1jb21tYW5kIHdvbid0IGFsdGVyIHRoZSB0b29sIGJhci4KKyAgICAgOzsgVGhpcyBpcyB0aGUg bW9zdCBjb21tb25seSBleGVjdXRlZCBjb21tYW5kLgorICAgICAobm90IChlcSBsYXN0LWNvbW1h bmQgJ3NlbGYtaW5zZXJ0LWNvbW1hbmQpKSkpKQorCisoZGVmdW4gd2luZG93LXRvb2wtYmFyLS1j b21tYW5kLXRyaWdnZXJzLXNoaWZ0LXNlbGVjdC1wIChjb21tYW5kKQorICAiVGVzdCBpZiBDT01N QU5EIHdvdWxkIHRyaWdnZXIgc2hpZnQgc2VsZWN0LiIKKyAgKGxldCogKChmb3JtIChpbnRlcmFj dGl2ZS1mb3JtIGNvbW1hbmQpKQorICAgICAgICAgKHNwZWMgKGNhci1zYWZlIChjZHItc2FmZSBm b3JtKSkpKQorICAgIChhbmQgKGVxIChjYXItc2FmZSBmb3JtKSAnaW50ZXJhY3RpdmUpCisgICAg ICAgICAoc3RyaW5ncCBzcGVjKQorICAgICAgICAgKHNlcS1wb3NpdGlvbiBzcGVjID9eKSkpKQor Cis7OzsjIyNhdXRvbG9hZAorKGRlZmluZS1taW5vci1tb2RlIHdpbmRvdy10b29sLWJhci1tb2Rl CisgICJUb2dnbGUgZGlzcGxheSBvZiB0aGUgdG9vbCBiYXIgaW4gdGhlIHRhYiBsaW5lIG9mIHRo ZSBjdXJyZW50IGJ1ZmZlci4iCisgIDpsaWdodGVyIG5pbAorICAobGV0ICgoc2hvdWxkLWRpc3Bs YXkgKGFuZCB3aW5kb3ctdG9vbC1iYXItbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAobm90IChlcSB0b29sLWJhci1tYXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGRlZmF1bHQtdmFsdWUgJ3Rvb2wtYmFyLW1hcCkpKSkpKQorICAgIChpZiAoZmJvdW5k cCAndGFiLWxpbmUtc2V0LWRpc3BsYXkpCisgICAgICAgIDs7IE5ld2x5IGFkZGVkIGZ1bmN0aW9u IGZvciBFbWFjcyAzMC4KKyAgICAgICAgKHRhYi1saW5lLXNldC1kaXNwbGF5ICd3aW5kb3ctdG9v bC1iYXItbW9kZQorCQkJICAgICAgKGFuZCBzaG91bGQtZGlzcGxheQorCQkJCSAgICcoOmV2YWwg KHdpbmRvdy10b29sLWJhci1zdHJpbmcpKSkpCisgICAgICA7OyBMZWdhY3kgcGF0aCBmb3IgRW1h Y3MgMjkuCisgICAgICAoc2V0cSB0YWItbGluZS1mb3JtYXQKKyAgICAgICAgICAgIChhbmQgc2hv dWxkLWRpc3BsYXkKKyAgICAgICAgICAgICAgICAgJyg6ZXZhbCAod2luZG93LXRvb2wtYmFyLXN0 cmluZykpKSkpKSkKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZpbmUtZ2xvYmFsaXplZC1taW5vci1t b2RlIGdsb2JhbC13aW5kb3ctdG9vbC1iYXItbW9kZQorICB3aW5kb3ctdG9vbC1iYXItbW9kZSB3 aW5kb3ctdG9vbC1iYXItLXR1cm4tb24KKyAgOmdyb3VwICd3aW5kb3ctdG9vbC1iYXIKKyAgKGFk ZC1ob29rICdpc2VhcmNoLW1vZGUtaG9vayAjJ3dpbmRvdy10b29sLWJhci0tdHVybi1vbikKKyAg KGFkZC1ob29rICdpc2VhcmNoLW1vZGUtZW5kLWhvb2sgIyd3aW5kb3ctdG9vbC1iYXItLXR1cm4t b24pKQorCisoZGVmdmFyIHdpbmRvdy10b29sLWJhci0tYWxsb3ctaW1hZ2VzIHQKKyAgIkludGVy bmFsIGRlYnVnIGZsYWcgdG8gZm9yY2UgdGV4dCBtb2RlLiIpCisKKyhkZWZ1biB3aW5kb3ctdG9v bC1iYXItLXVzZS1pbWFnZXMgKCkKKyAgIkludGVybmFsIGZ1bmN0aW9uLgorUmVzcGVjdHMgYHdp bmRvdy10b29sLWJhci0tYWxsb3ctaW1hZ2VzJyBhcyB3ZWxsIGFzIGZyYW1lCitjYXBhYmlsaXRp ZXMuIgorICAoYW5kIHdpbmRvdy10b29sLWJhci0tYWxsb3ctaW1hZ2VzCisgICAgICAgKGRpc3Bs YXktaW1hZ2VzLXApKSkKKwwKKzs7OyBEaXNwbGF5IHN0eWxpbmc6CisoZGVmZmFjZSB3aW5kb3ct dG9vbC1iYXItYnV0dG9uCisgICcoKGRlZmF1bHQKKyAgICAgOmluaGVyaXQgdGFiLWxpbmUpCisg ICAgKCgoY2xhc3MgY29sb3IpIChtaW4tY29sb3JzIDg4KSAoc3VwcG9ydHMgOmJveCB0KSkKKyAg ICAgOmJveCAoOmxpbmUtd2lkdGggLTEgOnN0eWxlIHJlbGVhc2VkLWJ1dHRvbikKKyAgICAgOmJh Y2tncm91bmQgImdyZXk4NSIpCisgICAgOzsgSWYgdGhlIGJveCBpcyBub3Qgc3VwcG9ydGVkLCBk aW0gdGhlIGJ1dHRvbiBiYWNrZ3JvdW5kIGEgYml0LgorICAgICgoKGNsYXNzIGNvbG9yKSAobWlu LWNvbG9ycyA4OCkpCisgICAgIDpiYWNrZ3JvdW5kICJncmV5NzAiKQorICAgICh0CisgICAgIDpp bnZlcnNlLXZpZGVvIHQpKQorICAiRmFjZSB1c2VkIGZvciBidXR0b25zIHdoZW4gdGhlIG1vdXNl IGlzIG5vdCBob3ZlcmluZyBvdmVyIHRoZSBidXR0b24uIgorICA6Z3JvdXAgJ3dpbmRvdy10b29s LWJhcikKKworKGRlZmZhY2Ugd2luZG93LXRvb2wtYmFyLWJ1dHRvbi1ob3ZlcgorICAnKChkZWZh dWx0CisgICAgIDppbmhlcml0IHRhYi1saW5lKQorICAgICgoKGNsYXNzIGNvbG9yKSAobWluLWNv bG9ycyA4OCkpCisgICAgIDpib3ggKDpsaW5lLXdpZHRoIC0xIDpzdHlsZSByZWxlYXNlZC1idXR0 b24pCisgICAgIDpiYWNrZ3JvdW5kICJncmV5OTUiKQorICAgICh0CisgICAgIDppbnZlcnNlLXZp ZGVvIHQpKQorICAiRmFjZSB1c2VkIGZvciBidXR0b25zIHdoZW4gdGhlIG1vdXNlIGlzIGhvdmVy aW5nIG92ZXIgdGhlIGJ1dHRvbi4iCisgIDpncm91cCAnd2luZG93LXRvb2wtYmFyKQorCisoZGVm ZmFjZSB3aW5kb3ctdG9vbC1iYXItYnV0dG9uLWRpc2FibGVkCisgICcoKGRlZmF1bHQKKyAgICAg OmluaGVyaXQgdGFiLWxpbmUpCisgICAgKCgoY2xhc3MgY29sb3IpIChtaW4tY29sb3JzIDg4KSkK KyAgICAgOmJveCAoOmxpbmUtd2lkdGggLTEgOnN0eWxlIHJlbGVhc2VkLWJ1dHRvbikKKyAgICAg OmJhY2tncm91bmQgImdyZXk1MCIKKyAgICAgOmZvcmVncm91bmQgImdyZXk3MCIpCisgICAgKHQK KyAgICAgOmludmVyc2UtdmlkZW8gdAorICAgICA6YmFja2dyb3VuZCAiYnJpZ2h0YmxhY2siKSkK KyAgIkZhY2UgdXNlZCBmb3IgYnV0dG9ucyB3aGVuIHRoZSBidXR0b24gaXMgZGlzYWJsZWQuIgor ICA6Z3JvdXAgJ3dpbmRvdy10b29sLWJhcikKKwwKKzs7OyBXb3JrYXJvdW5kIGZvciBodHRwczov L2RlYmJ1Z3MuZ251Lm9yZy9jZ2kvYnVncmVwb3J0LmNnaT9idWc9NjgzMzQuCisoZGVmdW4gd2lu ZG93LXRvb2wtYmFyLS1nZXQta2V5bWFwICgpCisgICJSZXR1cm4gdGhlIHRvb2wgYmFyIGtleW1h cC4iCisgIChsZXQgKCh0b29sLWJhci1hbHdheXMtc2hvdy1kZWZhdWx0IG5pbCkpCisgICAgKGlm IChhbmQgKHZlcnNpb248IGVtYWNzLXZlcnNpb24gIjMwIikKKyAgICAgICAgICAgICAobm90ICh3 aW5kb3ctdG9vbC1iYXItLXVzZS1pbWFnZXMpKSkKKyAgICAgICAgOzsgVGhpcyBjb2RlIHBhdGgg aXMgYSBsZXNzIGVmZmljaWVudCB3b3JrYXJvdW5kLgorICAgICAgICAod2luZG93LXRvb2wtYmFy LS1tYWtlLWtleW1hcC0xKQorICAgICAgKGtleW1hcC1nbG9iYWwtbG9va3VwICI8dG9vbC1iYXI+ IikpKSkKKworKGRlY2xhcmUtZnVuY3Rpb24gaW1hZ2UtbWFzay1wICJpbWFnZS5jIiAoc3BlYyAm b3B0aW9uYWwgZnJhbWUpKQorCisoZGVmdW4gd2luZG93LXRvb2wtYmFyLS1tYWtlLWtleW1hcC0x ICgpCisgICJQYXRjaGVkIGNvcHkgb2YgYHRvb2wtYmFyLW1ha2Uta2V5bWFwLTEnLiIKKyAgKG1h cGNhciAobGFtYmRhIChiaW5kKQorICAgICAgICAgICAgKGxldCAoaW1hZ2UtZXhwIHBsaXN0KQor ICAgICAgICAgICAgICAod2hlbiAoYW5kIChlcSAoY2FyLXNhZmUgKGNkci1zYWZlIGJpbmQpKSAn bWVudS1pdGVtKQorCQkJIDs7IEZvciB0aGUgZm9ybWF0IG9mIG1lbnUtaXRlbXMsIHNlZSBub2Rl CisJCQkgOzsgYEV4dGVuZGVkIE1lbnUgSXRlbXMnIGluIHRoZSBFbGlzcCBtYW51YWwuCisJCQkg KHNldHEgcGxpc3QgKG50aGNkciAoaWYgKGNvbnNwIChudGggNCBiaW5kKSkgNSA0KQorCQkJCQkg ICAgIGJpbmQpKQorCQkJIChzZXRxIGltYWdlLWV4cCAocGxpc3QtZ2V0IHBsaXN0IDppbWFnZSkp CisJCQkgKGNvbnNwIGltYWdlLWV4cCkKKwkJCSAobm90IChlcSAoY2FyIGltYWdlLWV4cCkgJ2lt YWdlKSkKKwkJCSAoZmJvdW5kcCAoY2FyIGltYWdlLWV4cCkpKQorCQkobGV0ICgoaW1hZ2UgKGFu ZCAoZGlzcGxheS1pbWFnZXMtcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo ZXZhbCBpbWFnZS1leHApKSkpCisJCSAgKHVubGVzcyAoYW5kIGltYWdlIChpbWFnZS1tYXNrLXAg aW1hZ2UpKQorCQkgICAgKHNldHEgaW1hZ2UgKGFwcGVuZCBpbWFnZSAnKDptYXNrIGhldXJpc3Rp YykpKSkKKwkJICAoc2V0cSBiaW5kIChjb3B5LXNlcXVlbmNlIGJpbmQpCisJCQlwbGlzdCAobnRo Y2RyIChpZiAoY29uc3AgKG50aCA0IGJpbmQpKSA1IDQpCisJCQkJICAgICAgYmluZCkpCisJCSAg KHBsaXN0LXB1dCBwbGlzdCA6aW1hZ2UgaW1hZ2UpKSkKKwkgICAgICBiaW5kKSkKKyAgICAgICAg ICB0b29sLWJhci1tYXApKQorCisoZGVmdW4gd2luZG93LXRvb2wtYmFyLS10dXJuLW9uICgpCisg ICJJbnRlcm5hbCBmdW5jdGlvbiBjYWxsZWQgYnkgYGdsb2JhbC13aW5kb3ctdG9vbC1iYXItbW9k ZScuIgorICAod2hlbiBnbG9iYWwtd2luZG93LXRvb2wtYmFyLW1vZGUKKyAgICAod2luZG93LXRv b2wtYmFyLW1vZGUgMSkpKQorCisocHJvdmlkZSAnd2luZG93LXRvb2wtYmFyKQorCis7Ozsgd2lu ZG93LXRvb2wtYmFyLmVsIGVuZHMgaGVyZQotLSAKMi4zOS4yCgo= --=_b2ace73e7a83928017c937c8a89717da-- From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 29 19:42:56 2024 Received: (at control) by debbugs.gnu.org; 30 Jan 2024 00:42:56 +0000 Received: from localhost ([127.0.0.1]:33974 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rUcDI-0005tL-8o for submit@debbugs.gnu.org; Mon, 29 Jan 2024 19:42:56 -0500 Received: from mail-ed1-x52a.google.com ([2a00:1450:4864:20::52a]:51590) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rUcDG-0005sq-2e for control@debbugs.gnu.org; Mon, 29 Jan 2024 19:42:54 -0500 Received: by mail-ed1-x52a.google.com with SMTP id 4fb4d7f45d1cf-55790581457so3816029a12.3 for ; Mon, 29 Jan 2024 16:42:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706575360; x=1707180160; darn=debbugs.gnu.org; h=to:subject:message-id:date:mime-version:from:from:to:cc:subject :date:message-id:reply-to; bh=4E7Nc5SaSntYSRbyO1gi450XmspYkaUKiAfSpBc2+Xc=; b=RXtp7SYSbynyYXlzAhS9r2Y31kmOPwq41c3pRrWU6+wb9feMKkYlN9tchpHXZH1jcQ NrWBjkgWF5j7a82/JuMY+BrJp/a4D57aJY/am4L270vXqR5dBrW3XIZ3y1cv3v9yAmd5 wYEsEpmk0WE+Cn7xa2DrwdeD4LclclfSiIY0I7CEHuIL9LqnyqVeLhIPwa/6RGQ40cYD 2aNXmUhrxRFyk67iUb5PUpoEUVAwzYv1dUcazBe0Ez1aPEf9Oc15pBb57eVZHfBxN0YG ihfAtpPwH56WtWM78lske+8/l2zkg97/OsBvOu+9jxM2xdmLA5WTRTM6flsvFxZnfMb7 YeHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706575360; x=1707180160; h=to:subject:message-id:date:mime-version:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=4E7Nc5SaSntYSRbyO1gi450XmspYkaUKiAfSpBc2+Xc=; b=L9tLmqashj8/p8cQX/5gMXfn0ZKtMNLL6lzdjoGgwvWv6pkAHWI1OVnJsNnwQKyu6j JuyMqcBupzwvBwLygdhTVIGSzBrnfX8XaJxMRU68yXFJ6ZN9hzTauNSoaimasqEyxyA1 cx3VSkRuKvtlFTkaR0O9x4qASSA7O0PADwcimhuegtqKowRgemYwLfT8lqB73uKXaCbH uTiNHJy5IF/mcfMcq6mVpotCmvDNARYcvjknsFVdz4oFfVRfY1kZ0mmhi76ZXLtSZeLS uw4ySitTOlc6WnagpGLNFJubsh9QmQ1UMVOI2ZlYWigQ4nSMpoO3I04Lj62vhweEoser h8hA== X-Gm-Message-State: AOJu0YxBr+0euCfnHMmYYCUTyBDzjkwkD0N1yeC6WMby3glACyVi8pvz +LZkevPVQ/AlAfr2c2ILWXaJzYQr7kFkN7SZR43kEy8GPLQFKsfZkLkinOwbaQAwhsR8A2QAla+ riMdvTWLEMaU9CrsyPspcBv3yyEpndJKHhDY= X-Google-Smtp-Source: AGHT+IEl6OxkCmDR7edOPouJSbmEZlZE+FjdFnBmZ5VXGD9CqDk2jX2S/Ma9jQ5uoaCAjNgQnFfmwxZKKL3gydR8NIc= X-Received: by 2002:a05:6402:1e8a:b0:55e:e6c9:1dbd with SMTP id f10-20020a0564021e8a00b0055ee6c91dbdmr3871091edf.24.1706575359742; Mon, 29 Jan 2024 16:42:39 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Mon, 29 Jan 2024 19:42:39 -0500 From: Stefan Kangas MIME-Version: 1.0 Date: Mon, 29 Jan 2024 19:42:39 -0500 Message-ID: Subject: control message for bug #68765 To: control@debbugs.gnu.org Content-Type: text/plain; charset="UTF-8" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) severity 68765 wishlist quit From debbugs-submit-bounces@debbugs.gnu.org Sat Feb 10 03:55:23 2024 Received: (at 68765) by debbugs.gnu.org; 10 Feb 2024 08:55:23 +0000 Received: from localhost ([127.0.0.1]:53643 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rYj8s-0007sc-QS for submit@debbugs.gnu.org; Sat, 10 Feb 2024 03:55:23 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:57084) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rYj7i-0007mm-4O for 68765@debbugs.gnu.org; Sat, 10 Feb 2024 03:54:10 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rYiaL-0005Pd-S5; Sat, 10 Feb 2024 03:19:41 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=Q4WveRDTT+lSZjj+2hK3SG9dpOQe8Q8PeUhW4eY3GU8=; b=okD3oKeXPjQw dh/CwZsAycRZEbFmgbYa/cByZL3icKG2I8Bu6Lwb+foIa7PDHmjBZ+uJD+UmGANnOxdEOopxomPXw z8PQYlJfBlAlunf+iDdzcuwUI0SRtdBZzVHMGWP8t8vnI9MXm4+xSev+prfNpGaYzv3rUk+u72hnR 16I7pqrVqfwd+wmb0Xd26Q1uKUS7H7dFo9cH08Lz/KZ7Aia5UlygZyiKqMZeLizKOvh+OH/zvE8Gg q5LqIEBBM3vSw4IsUOMALZ9WFwHP+VpmXieTztCuLPEf6CqhGZPqCby9H//WBCauIVxXYN1MtKuUT 4gk8kdW3zhx5qRBN+LyV5w==; Date: Sat, 10 Feb 2024 10:19:37 +0200 Message-Id: <86fry0vihy.fsf@gnu.org> From: Eli Zaretskii To: Jared Finder , Juri Linkov , Philip Kaludercic , Stefan Monnier In-Reply-To: <07df5e8408054bcae5968066b0cebf34@finder.org> (bug-gnu-emacs@gnu.org) Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. References: <07df5e8408054bcae5968066b0cebf34@finder.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765 Cc: 68765@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sat, 27 Jan 2024 15:36:56 -0800 > From: Jared Finder via "Bug reports for GNU Emacs, > the Swiss army knife of text editors" > > This is a follow-up from bug#68334 where there was interest in adding > support into Emacs core for tool bars in windows. > (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=68334#52) I have > attached three changes I authored to accomplish this, two small changes > to tool-bar and tab-line, and then a code drop of my window-tool-bar.el > package. I have not yet put in documentation in NEWS or the manual > about window-tool-bar and was hoping to get a code review done first. Thanks, please find some review comments below. > Subject: [PATCH 1/3] Enable multiple modes to appear in tab line > > This adds space for window-tool-bar-mode, which will be added in an > upcoming commit. > > * lisp/tab-line.el (tab-line-format-template): Add separator space. > (tab-line-display-order): New user variable to control display order. > (tab-line--runtime-display-order, tab-line--cookie): New internal > variables. > (tab-line-set-display): New function for modes to call to enable only > their content. > (tab-line-mode): Call `tab-line-set-display'. Juri, would you please review this part of the changeset? > Subject: [PATCH 2/3] Add user option to only display default tool bar > > This works well with `window-tool-bar-mode', to be added in upcoming > commit. Then the default tool bar is displayed frame-wide and > mode-specific tool bars are displayed in the window that mode is > active in. > > * lisp/tool-bar.el (tool-bar-always-show-default): New user option. > (tool-bar--cache-key, tool-bar-make-keymap-1): Return default tool bar > when option is set. > --- > lisp/tool-bar.el | 17 +++++++++++++++-- > 1 file changed, 15 insertions(+), 2 deletions(-) > > diff --git a/lisp/tool-bar.el b/lisp/tool-bar.el > index 96b61c7b229..685e4dfbb86 100644 > --- a/lisp/tool-bar.el > +++ b/lisp/tool-bar.el > @@ -100,7 +100,9 @@ secondary-tool-bar-map > (defconst tool-bar-keymap-cache (make-hash-table :test #'equal)) > > (defsubst tool-bar--cache-key () > - (cons (frame-terminal) (sxhash-eq tool-bar-map))) > + (cons (frame-terminal) > + (sxhash-eq (if tool-bar-always-show-default (default-value 'tool-bar-map) > + tool-bar-map)))) > > (defsubst tool-bar--secondary-cache-key () > (cons (frame-terminal) (sxhash-eq secondary-tool-bar-map))) > @@ -191,7 +193,9 @@ tool-bar-make-keymap-1 > bind)) > (plist-put plist :image image))) > bind)) > - (or map tool-bar-map))) > + (or map > + (if tool-bar-always-show-default (default-value 'tool-bar-map) > + tool-bar-map)))) > > ;;;###autoload > (defun tool-bar-add-item (icon def key &rest props) > @@ -377,6 +381,15 @@ tool-bar-setup > (modify-all-frames-parameters > (list (cons 'tool-bar-position val)))))) > > +(defcustom tool-bar-always-show-default nil > + "If non-nil, do not show mode-specific tool bars. Double negation alert! > I think it would be good to have window-tool-bar.el also be a package so > that I can keep supporting Emacs 29 as well. I am happy to have this > put on GNU ELPA and would appreciate help in getting that completed. > [...] > From 24ed752ec0bfdded24cba4892426c2c9710126cf Mon Sep 17 00:00:00 2001 > From: Jared Finder > Date: Fri, 26 Jan 2024 15:44:12 -0800 > > --- > lisp/window-tool-bar.el | 488 ++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 488 insertions(+) > create mode 100644 lisp/window-tool-bar.el Philip and Stefan, would you please review this additional package, which AFAIU is being proposed as a cofre package for ELPA? > +This works well when using `global-window-tool-bar-mode' to > +display the mode-specific tool bars attached to each window." I don't think I understand what you mean by "mode-specific tool bars". The doc string doesn't explain that, so it is not clear enough, IMO. > +(defun window-tool-bar-show-memory-use () > + "Pop up a window showing the memory use metrics." I'm not sure I understand why this package needs to be interested in memory usage. It sounds like a separate feature. From debbugs-submit-bounces@debbugs.gnu.org Sat Feb 10 12:36:56 2024 Received: (at 68765) by debbugs.gnu.org; 10 Feb 2024 17:36:56 +0000 Received: from localhost ([127.0.0.1]:56962 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rYrHb-0002xE-Fq for submit@debbugs.gnu.org; Sat, 10 Feb 2024 12:36:56 -0500 Received: from relay5-d.mail.gandi.net ([2001:4b98:dc4:8::225]:51751) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rYrHZ-0002wr-Sx for 68765@debbugs.gnu.org; Sat, 10 Feb 2024 12:36:54 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id 20AA71C0005; Sat, 10 Feb 2024 17:36:30 +0000 (UTC) From: Juri Linkov To: Eli Zaretskii Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <86fry0vihy.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 10 Feb 2024 10:19:37 +0200") Organization: LINKOV.NET References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> Date: Sat, 10 Feb 2024 19:25:58 +0200 Message-ID: <86fry08di9.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-Sasl: juri@linkov.net X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 68765 Cc: Philip Kaludercic , Jared Finder , Stefan Monnier , 68765@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) >> * lisp/tab-line.el (tab-line-format-template): Add separator space. >> (tab-line-display-order): New user variable to control display order. >> (tab-line--runtime-display-order, tab-line--cookie): New internal >> variables. >> (tab-line-set-display): New function for modes to call to enable only >> their content. >> (tab-line-mode): Call `tab-line-set-display'. > > Juri, would you please review this part of the changeset? I'm not sure if this provides a clean interface. Have you tried to show both window-tool-bar and tab-line tabs on the same tab-line? Do you think this combination is usable? Or maybe better just repurpose the tab-line in window-tool-bar.el exclusively for window-local tool-bar? From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 11 15:52:15 2024 Received: (at 68765) by debbugs.gnu.org; 11 Feb 2024 20:52:15 +0000 Received: from localhost ([127.0.0.1]:47434 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rZGo8-0001lR-Ta for submit@debbugs.gnu.org; Sun, 11 Feb 2024 15:52:15 -0500 Received: from mout01.posteo.de ([185.67.36.65]:55049) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rZGo5-0001ks-1n for 68765@debbugs.gnu.org; Sun, 11 Feb 2024 15:52:11 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 3638A240027 for <68765@debbugs.gnu.org>; Sun, 11 Feb 2024 21:51:45 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1707684706; bh=GiuX3Z4Sfpn21q+csFQZWiQaJvhfW8IDWy7KkW6yuME=; h=From:To:Cc:Subject:Autocrypt:OpenPGP:Date:Message-ID:MIME-Version: Content-Type:From; b=CTGBblD0LtpPqzVNobmGZM1hHl0NxXidz4b1np1n5AVTUwNi1v+fch/UZo6ngiAq6 Ywf6WdJbGQPgPCVhWxvLiBi5ekMfMr3Es5QV4XGIE6BRZ7CxgFL6aA0RXHJtommEoc 9h6U0N3P/VW359puUvYz3wh4NiyA24a04oJKXvRc98bNterdjqIoes8M9po59as1vh ZWFcB7kISuT04LZO4gaG/5jzvbwPFxLUPkWbccd9m00A1lCvKTDXj8s0x0Rez4JTt+ UWwXfleljyvxXGEF7gk2r7GmXRL7Q4PjPGWY3iLbWMzXjUzI9gCn5luRDnnzM4XqS5 GQLWzFwRfd3Nw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4TY0BT01z9z6tw2; Sun, 11 Feb 2024 21:51:44 +0100 (CET) From: Philip Kaludercic To: Jared Finder Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <07df5e8408054bcae5968066b0cebf34@finder.org> (Jared Finder's message of "Sat, 27 Jan 2024 15:36:56 -0800") References: <07df5e8408054bcae5968066b0cebf34@finder.org> Importance: high Autocrypt: addr=philipk@posteo.net; keydata= mDMEZBBQQhYJKwYBBAHaRw8BAQdAHJuofBrfqFh12uQu0Yi7mrl525F28eTmwUDflFNmdui0QlBo aWxpcCBLYWx1ZGVyY2ljIChnZW5lcmF0ZWQgYnkgYXV0b2NyeXB0LmVsKSA8cGhpbGlwa0Bwb3N0 ZW8ubmV0PoiWBBMWCAA+FiEEDg7HY17ghYlni8XN8xYDWXahwukFAmQQUEICGwMFCQHhM4AFCwkI BwIGFQoJCAsCBBYCAwECHgECF4AACgkQ8xYDWXahwulikAEA77hloUiSrXgFkUVJhlKBpLCHUjA0 mWZ9j9w5d08+jVwBAK6c4iGP7j+/PhbkxaEKa4V3MzIl7zJkcNNjHCXmvFcEuDgEZBBQQhIKKwYB BAGXVQEFAQEHQI5NLiLRjZy3OfSt1dhCmFyn+fN/QKELUYQetiaoe+MMAwEIB4h+BBgWCAAmFiEE Dg7HY17ghYlni8XN8xYDWXahwukFAmQQUEICGwwFCQHhM4AACgkQ8xYDWXahwukm+wEA8cml4JpK NeAu65rg+auKrPOP6TP/4YWRCTIvuYDm0joBALw98AMz7/qMHvSCeU/hw9PL6u6R2EScxtpKnWof z4oM OpenPGP: id=7126E1DE2F0CE35C770BED01F2C3CC513DB89F66; url="https://keys.openpgp.org/vks/v1/by-fingerprint/7126E1DE2F0CE35C770BED01F2C3CC513DB89F66"; preference=signencrypt Date: Sun, 11 Feb 2024 20:51:44 +0000 Message-ID: <87wmrayba7.fsf@posteo.net> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765 Cc: 68765@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Here are a few comments from a quick skim: > diff --git a/lisp/window-tool-bar.el b/lisp/window-tool-bar.el > new file mode 100644 > index 00000000000..3950fe12f1a > --- /dev/null > +++ b/lisp/window-tool-bar.el > @@ -0,0 +1,488 @@ > +;;; window-tool-bar.el --- Add tool bars inside windows -*- lexical-binding: t -*- > + > +;; Copyright (C) 2023-2024 Free Software Foundation, Inc. Leave an empty line here, looks more conventional. > +;; Author: Jared Finder > +;; Created: Nov 21, 2023 > +;; Version: 0.2 > +;; Keywords: mouse > +;; URL: http://github.com/chaosemer/window-tool-bar If the idea is for this to be a core package, that is developed in the core, then I don't know if you want to keep this URL. > +;; Package-Requires: ((emacs "29.1")) > + > +;; This file is part of GNU Emacs. > + > +;; GNU Emacs is free software; you can redistribute it and/or modify > +;; it under the terms of the GNU General Public License as published by > +;; the Free Software Foundation, either version 3 of the License, or > +;; (at your option) any later version. > + > +;; GNU Emacs is distributed in the hope that it will be useful, > +;; but WITHOUT ANY WARRANTY; without even the implied warranty of > +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +;; GNU General Public License for more details. > + > +;; You should have received a copy of the GNU General Public License > +;; along with GNU Emacs. If not, see . > + > +;;; Commentary: > +;; > +;; This package puts a tool bar in each window. This allows you to see > +;; multiple tool bars simultaneously directly next to the buffer it > +;; acts on which feels much more intuitive. Emacs "browsing" modes > +;; generally have sensible tool bars, for example: *info*, *help*, and > +;; *eww* have them. > +;; > +;; It does this while being mindful of screen real estate. Most modes > +;; do not provide a custom tool bar, and this package does not show the > +;; default tool bar. This means that for most buffers there will be no > +;; space taken up. Furthermore, you can put this tool bar in the mode > +;; line or tab line if you want to share it with existing content. > +;; > +;; To get the default behavior, run (global-window-tool-bar-mode 1) or > +;; enable via M-x customize-group RET window-tool-bar RET. This uses > +;; the per-window tab line to show the tool bar. > +;; > +;; If you want to share space with an existing tab line, mode line, or > +;; header line, add (:eval (window-tool-bar-string)) to > +;; `tab-line-format', `mode-line-format', or `header-line-format'. > + > +;;; Known issues: > +;; > +;; On GNU Emacs 29.1, terminals dragging to resize windows will error > +;; with message " is undefined". This is a > +;; bug in GNU Emacs, > +;; . > +;; > +;; On GNU Emacs 29, performance in terminals is lower than on > +;; graphical frames. This is due to a workaround, see "Workaround for > +;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=68334", below. > + > +;;; Todo: > +;; > +;; Not all features planned are implemented yet. Eventually I would > +;; like to also generally make tool bars better. > +;; > +;; Targeting 0.3: > +;; * Properly support reamining less frequently used tool bar item specs. From > +;; `parse_tool_bar_item': > +;; * :visible > +;; * :filter > +;; * :button > +;; * :wrap > +;; * Add display customization similar to `tool-bar-style'. > +;; > +;; Targeting 1.0: > +;; > +;; * Clean up Emacs tool bars > +;; * Default: Remove default tool-bar entirely > +;; * grep, vc: Remove default tool-bar inherited > +;; * info: Remove Next / Prev / Up, which is already in the header > +;; * smerge: Add tool bar for next/prev > +;; > +;; Post 1.0 work: > +;; > +;; * Show keyboard shortcut on help text. > +;; > +;; * Add a bit more documentation. > +;; * Add customization option: ignore-default-tool-bar-map > +;; * Make tab-line dragging resize the window > + > +;;; Code: > + > +(require 'mwheel) > +(require 'tab-line) > +(require 'tool-bar) > + > +;;; Benchmarking code > +;; > +;; Refreshing the tool bar is computationally simple, but generates a > +;; lot of garbage. So this benchmarking focuses on garbage > +;; generation. Since it has to run after most commands, generating > +;; significantly more garbage will cause noticeable performance > +;; degration. > +;; > +;; The refresh has two steps: > +;; > +;; Step 1: Look up the map. > +;; Step 2: Generate a Lisp string using text properties for the tool > +;; bar string. > +;; > +;; Additionally, we keep track of the percentage of commands that > +;; acutally created a refresh. > +(defvar window-tool-bar--memory-use-delta-step1 (make-list 7 0) > + "Absolute delta of memory use counters during step 1. > +This is a list in the same structure as `memory-use-counts'.") > +(defvar window-tool-bar--memory-use-delta-step2 (make-list 7 0) > + "Absolute delta of memory use counters during step 2. > +This is a list in the same structure as `memory-use-counts'.") > +(defvar window-tool-bar--refresh-done-count 0 > + "Number of tool bar string refreshes run. > +The total number of requests is the sum of this and > +`window-tool-bar--refresh-skipped-count'.") > +(defvar window-tool-bar--refresh-skipped-count 0 > + "Number of tool bar string refreshes that were skipped. > +The total number of requests is the sum of this and > +`window-tool-bar--refresh-done-count'.") > + > +(defun window-tool-bar--memory-use-avg-step1 () > + "Return average memory use delta during step 1." > + (mapcar (lambda (elt) (/ elt window-tool-bar--refresh-done-count 1.0)) You can also use (float elt) to avoid the 1.0 at the end. > + window-tool-bar--memory-use-delta-step1)) > + > +(defun window-tool-bar--memory-use-avg-step2 () > + "Return average memory use delta during step 2." > + (mapcar (lambda (elt) (/ elt window-tool-bar--refresh-done-count 1.0)) > + window-tool-bar--memory-use-delta-step2)) > + > +(declare-function time-stamp-string "time-stamp") > + > +(defun window-tool-bar-show-memory-use () > + "Pop up a window showing the memory use metrics." > + (interactive) > + (require 'time-stamp) > + (save-selected-window > + (pop-to-buffer "*WTB Memory Report*") I think you should rewrite this as (with-current-buffer (get-buffer "...") ;; ... (pop-to-buffer (current-buffer)) > + (unless (eq major-mode 'special-mode) > + (special-mode)) > + > + (goto-char (point-max)) > + (let ((inhibit-read-only t)) > + (insert (propertize (concat "Function: window-tool-bar-string " > + (time-stamp-string)) > + 'face 'underline 'font-lock-face 'underline) > + "\n\n") > + (window-tool-bar--insert-memory-use > + "Step 1" (window-tool-bar--memory-use-avg-step1)) > + (window-tool-bar--insert-memory-use > + "Step 2" (window-tool-bar--memory-use-avg-step2)) > + (insert (format "Refresh count %d\n" window-tool-bar--refresh-done-count) > + (format "Refresh executed percent %.2f\n" > + (/ window-tool-bar--refresh-done-count > + (+ window-tool-bar--refresh-done-count > + window-tool-bar--refresh-skipped-count) > + 1.0)) > + "\n")))) > + > +(defun window-tool-bar--insert-memory-use (label avg-memory-use) > + "Insert memory use into current buffer. > + > +LABEL: A prefix string to be in front of the data. > +AVG-MEMORY-USE: A list of averages, with the same meaning as > + `memory-use-counts'." > + (let* ((label-len (length label)) > + (padding (make-string label-len ?\s))) > + (insert (format "%s %8.2f Conses\n" label (elt avg-memory-use 0))) > + (insert (format "%s %8.2f Floats\n" padding (elt avg-memory-use 1))) > + (insert (format "%s %8.2f Vector cells\n" padding (elt avg-memory-use 2))) > + (insert (format "%s %8.2f Symbols\n" padding (elt avg-memory-use 3))) > + (insert (format "%s %8.2f String chars\n" padding (elt avg-memory-use 4))) > + (insert (format "%s %8.2f Intervals\n" padding (elt avg-memory-use 5))) > + (insert (format "%s %8.2f Strings\n" padding (elt avg-memory-use 6))))) You should be able to make this slightly more readable by looping over a list like '("Conses" "Floats" ...), e.g. using cl-loop (cl-loop for section = '("Conses" "Floats") for usage = avg-memory-use do (insert (format "%s %8.2f %s\n" padding usage section))) > + > +(defgroup window-tool-bar nil > + "Tool bars per-window." > + :group 'convenience > + :prefix "window-tool-bar-") > + > +(defvar-keymap window-tool-bar--button-keymap > + :doc "Keymap used by `window-tool-bar--keymap-entry-to-string'." > + "" 'mouse-face > + ;; Follow link on all clicks of mouse-1 and mouse-2 since the tool > + ;; bar is not a place the point can travel to. > + " " #'window-tool-bar--call-button > + " " #'window-tool-bar--call-button > + " " #'window-tool-bar--call-button > + " " #'window-tool-bar--call-button > + " " #'window-tool-bar--call-button > + " " #'window-tool-bar--call-button > + > + ;; Mouse down events do nothing. A binding is needed so isearch > + ;; does not exit when the tab bar is clicked. > + " " #'window-tool-bar--ignore > + " " #'window-tool-bar--ignore > + " " #'window-tool-bar--ignore > + " " #'window-tool-bar--ignore > + " " #'window-tool-bar--ignore > + " " #'window-tool-bar--ignore) > +(fset 'window-tool-bar--button-keymap window-tool-bar--button-keymap) ; So it can be a keymap property > + > +;; Register bindings that stay in isearch. Technically, these > +;; commands don't pop up a menu but they act very similar in that they > +;; end up calling an actual command via `call-interactively'. > +(push 'window-tool-bar--call-button isearch-menu-bar-commands) > +(push 'window-tool-bar--ignore isearch-menu-bar-commands) > + > +(defvar-local window-tool-bar-string--cache nil > + "Cache for previous result of `window-tool-bar-string'.") > + > +;;;###autoload > +(defun window-tool-bar-string () > + "Return a (propertized) string for the tool bar. > + > +This is for when you want more customizations than > +`window-tool-bar-mode' provides. Commonly added to the variable > +`tab-line-format', `header-line-format', or `mode-line-format'" > + (if (or (null window-tool-bar-string--cache) > + (window-tool-bar--last-command-triggers-refresh-p)) > + (let* ((mem0 (memory-use-counts)) > + (toolbar-menu (window-tool-bar--get-keymap)) > + (mem1 (memory-use-counts)) > + (result (mapconcat #'window-tool-bar--keymap-entry-to-string > + (cdr toolbar-menu) ;Skip 'keymap > + ;; Without spaces between the text, hovering > + ;; highlights all adjacent buttons. > + (if (window-tool-bar--use-images) > + (propertize " " 'invisible t) > + " "))) > + (mem2 (memory-use-counts))) > + (cl-mapl (lambda (l-init l0 l1) > + (cl-incf (car l-init) (- (car l1) (car l0)))) > + window-tool-bar--memory-use-delta-step1 mem0 mem1) > + (cl-mapl (lambda (l-init l1 l2) > + (cl-incf (car l-init) (- (car l2) (car l1)))) > + window-tool-bar--memory-use-delta-step2 mem1 mem2) > + > + (setf window-tool-bar-string--cache > + (concat > + ;; The tool bar face by default puts boxes around the > + ;; buttons. However, this box is not displayed if the > + ;; box starts at the leftmost pixel of the tab-line. > + ;; Add a single space in this case so the box displays > + ;; correctly. > + (when (display-supports-face-attributes-p > + '(:box (line-width 1))) > + (propertize " " 'display '(space :width (1)))) > + result)) > + (cl-incf window-tool-bar--refresh-done-count)) > + (cl-incf window-tool-bar--refresh-skipped-count)) > + > + window-tool-bar-string--cache) > + > +(defconst window-tool-bar--graphical-separator > + (let ((str (make-string 3 ?\s))) > + (set-text-properties 0 1 '(display (space :width (4))) str) > + (set-text-properties 1 2 > + '(display (space :width (1)) > + face (:inverse-video t)) > + str) > + (set-text-properties 2 3 '(display (space :width (4))) str) > + str)) > + > +(defun window-tool-bar--keymap-entry-to-string (menu-item) > + "Convert MENU-ITEM into a (propertized) string representation. > + > +MENU-ITEM: Menu item to convert. See info node (elisp)Tool Bar." ^ quote this in `...' for the hyperlink to work. > + (pcase menu-item > + ;; Separators > + ((or `(,_ "--") > + `(,_ menu-item ,(and (pred stringp) > + (pred (string-prefix-p "--"))))) > + (if (window-tool-bar--use-images) > + window-tool-bar--graphical-separator > + "|")) > + > + ;; Menu item, turn into propertized string button > + (`(,key menu-item ,name-expr ,binding . ,plist) > + (when binding ; If no binding exists, then button is hidden. > + (let* ((name (eval name-expr)) > + (str (upcase-initials (or (plist-get plist :label) > + (string-trim-right name "\\.+")))) > + (len (length str)) > + (enable-form (plist-get plist :enable)) > + (enabled (or (not enable-form) > + (eval enable-form)))) > + (if enabled > + (add-text-properties 0 len > + '(mouse-face window-tool-bar-button-hover > + keymap window-tool-bar--button-keymap > + face window-tool-bar-button) > + str) > + (put-text-property 0 len > + 'face > + 'window-tool-bar-button-disabled > + str)) > + (when-let ((spec (and (window-tool-bar--use-images) > + (plist-get menu-item :image)))) > + (put-text-property 0 len > + 'display > + (append spec > + (if enabled '(:margin 2 :ascent center) > + '(:margin 2 :ascent center > + :conversion disabled))) > + str)) > + (put-text-property 0 len > + 'help-echo > + (or (plist-get plist :help) name) > + str) > + (put-text-property 0 len 'tool-bar-key key str) > + str))))) > + > +(defun window-tool-bar--call-button () > + "Call the button that was clicked on in the tab line." > + (interactive) > + (when (mouse-event-p last-command-event) > + (let ((posn (event-start last-command-event))) > + ;; Commands need to execute with the right buffer and window > + ;; selected. The selection needs to be permanent for isearch. > + (select-window (posn-window posn)) > + (let* ((str (posn-string posn)) > + (key (get-text-property (cdr str) 'tool-bar-key (car str))) > + (cmd (lookup-key (window-tool-bar--get-keymap) (vector key)))) > + (call-interactively cmd))))) > + > +(defun window-tool-bar--ignore () > + "Do nothing. This command exists for isearch." > + (interactive) > + nil) > + > +(defvar window-tool-bar--ignored-event-types > + (let ((list (list 'mouse-movement 'pinch > + 'wheel-down 'wheel-up 'wheel-left 'wheel-right > + mouse-wheel-down-event mouse-wheel-up-event > + mouse-wheel-left-event mouse-wheel-right-event > + (bound-and-true-p mouse-wheel-down-alternate-event) > + (bound-and-true-p mouse-wheel-up-alternate-event) > + (bound-and-true-p mouse-wheel-left-alternate-event) > + (bound-and-true-p mouse-wheel-right-alternate-event)))) > + (delete-dups (delete nil list))) > + "Cache for `window-tool-bar--last-command-triggers-refresh-p'.") > + > +(defun window-tool-bar--last-command-triggers-refresh-p () > + "Test if the recent command or event should trigger a tool bar refresh." > + (let ((type (event-basic-type last-command-event))) > + (and > + ;; Assume that key presses and button presses are the only user > + ;; interactions that can alter the tool bar. Specifically, this > + ;; excludes mouse movement, mouse wheel scroll, and pinch. > + (not (member type window-tool-bar--ignored-event-types)) > + ;; Assume that any command that triggers shift select can't alter > + ;; the tool bar. This excludes pure navigation commands. > + (not (window-tool-bar--command-triggers-shift-select-p last-command)) > + ;; Assume that self-insert-command won't alter the tool bar. > + ;; This is the most commonly executed command. > + (not (eq last-command 'self-insert-command))))) > + > +(defun window-tool-bar--command-triggers-shift-select-p (command) > + "Test if COMMAND would trigger shift select." > + (let* ((form (interactive-form command)) > + (spec (car-safe (cdr-safe form)))) > + (and (eq (car-safe form) 'interactive) > + (stringp spec) > + (seq-position spec ?^)))) > + > +;;;###autoload > +(define-minor-mode window-tool-bar-mode > + "Toggle display of the tool bar in the tab line of the current buffer." > + :lighter nil > + (let ((should-display (and window-tool-bar-mode > + (not (eq tool-bar-map > + (default-value 'tool-bar-map)))))) > + (if (fboundp 'tab-line-set-display) > + ;; Newly added function for Emacs 30. > + (tab-line-set-display 'window-tool-bar-mode > + (and should-display > + '(:eval (window-tool-bar-string)))) > + ;; Legacy path for Emacs 29. > + (setq tab-line-format > + (and should-display > + '(:eval (window-tool-bar-string))))))) > + > +;;;###autoload > +(define-globalized-minor-mode global-window-tool-bar-mode > + window-tool-bar-mode window-tool-bar--turn-on > + :group 'window-tool-bar > + (add-hook 'isearch-mode-hook #'window-tool-bar--turn-on) > + (add-hook 'isearch-mode-end-hook #'window-tool-bar--turn-on)) > + > +(defvar window-tool-bar--allow-images t > + "Internal debug flag to force text mode.") > + > +(defun window-tool-bar--use-images () > + "Internal function. > +Respects `window-tool-bar--allow-images' as well as frame > +capabilities." > + (and window-tool-bar--allow-images > + (display-images-p))) > + > +;;; Display styling: > +(defface window-tool-bar-button > + '((default > + :inherit tab-line) > + (((class color) (min-colors 88) (supports :box t)) > + :box (:line-width -1 :style released-button) > + :background "grey85") > + ;; If the box is not supported, dim the button background a bit. > + (((class color) (min-colors 88)) > + :background "grey70") > + (t > + :inverse-video t)) > + "Face used for buttons when the mouse is not hovering over the button." > + :group 'window-tool-bar) > + > +(defface window-tool-bar-button-hover > + '((default > + :inherit tab-line) > + (((class color) (min-colors 88)) > + :box (:line-width -1 :style released-button) > + :background "grey95") > + (t > + :inverse-video t)) > + "Face used for buttons when the mouse is hovering over the button." > + :group 'window-tool-bar) > + > +(defface window-tool-bar-button-disabled > + '((default > + :inherit tab-line) > + (((class color) (min-colors 88)) > + :box (:line-width -1 :style released-button) > + :background "grey50" > + :foreground "grey70") > + (t > + :inverse-video t > + :background "brightblack")) > + "Face used for buttons when the button is disabled." > + :group 'window-tool-bar) > + > +;;; Workaround for https://debbugs.gnu.org/cgi/bugreport.cgi?bug=68334. > +(defun window-tool-bar--get-keymap () > + "Return the tool bar keymap." > + (let ((tool-bar-always-show-default nil)) > + (if (and (version< emacs-version "30") > + (not (window-tool-bar--use-images))) > + ;; This code path is a less efficient workaround. > + (window-tool-bar--make-keymap-1) > + (keymap-global-lookup "")))) > + > +(declare-function image-mask-p "image.c" (spec &optional frame)) > + > +(defun window-tool-bar--make-keymap-1 () > + "Patched copy of `tool-bar-make-keymap-1'." > + (mapcar (lambda (bind) > + (let (image-exp plist) > + (when (and (eq (car-safe (cdr-safe bind)) 'menu-item) > + ;; For the format of menu-items, see node > + ;; `Extended Menu Items' in the Elisp manual. > + (setq plist (nthcdr (if (consp (nth 4 bind)) 5 4) > + bind)) > + (setq image-exp (plist-get plist :image)) > + (consp image-exp) > + (not (eq (car image-exp) 'image)) > + (fboundp (car image-exp))) > + (let ((image (and (display-images-p) > + (eval image-exp)))) > + (unless (and image (image-mask-p image)) > + (setq image (append image '(:mask heuristic)))) > + (setq bind (copy-sequence bind) > + plist (nthcdr (if (consp (nth 4 bind)) 5 4) > + bind)) > + (plist-put plist :image image))) > + bind)) > + tool-bar-map)) > + > +(defun window-tool-bar--turn-on () > + "Internal function called by `global-window-tool-bar-mode'." > + (when global-window-tool-bar-mode > + (window-tool-bar-mode 1))) > + > +(provide 'window-tool-bar) > + > +;;; window-tool-bar.el ends here From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 26 17:39:10 2024 Received: (at 68765) by debbugs.gnu.org; 26 Feb 2024 22:39:10 +0000 Received: from localhost ([127.0.0.1]:45106 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rejcr-0003eT-Np for submit@debbugs.gnu.org; Mon, 26 Feb 2024 17:39:09 -0500 Received: from greenhill.hpalace.com ([192.155.80.58]:58354) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rejco-0003eI-Us for 68765@debbugs.gnu.org; Mon, 26 Feb 2024 17:39:07 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=finder.org; s=2018; t=1708987120; bh=6/RDwljyZMqmpemwOrCTR2ww4pS5ASxLroudTvMgnGY=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=2AqtxF1XtYtuOD0FglLXBO5sjI/nfIl+7Efwry3g6cyLdJ6NIulx2EkqBW9MO43pD LRQhxAjW/jbEA7B1XMquYU0M5vKCZg2NxwDibICIPMXK174QRR73qkSGOsONN3qWmo OiT+4vv9cT1VVzcFT/oItpAdJvQEk8P7Z9+D1UK6Y9qyNmvkXEMTjFYGnm4qe61lcQ WKi6hxD0zkO5hpHssPMARLBQ1+aaz8HduNLpJwSu9Y+urrSH7KalvPZIPRbF3W/5hz yy9yhuFcWsjxLSKHKPk4PXPbrMG2UruN8NL+XO3Uh9KyhZdsH+vST/wqvFzgNfltmi TjWB5YTbeBcFA== Received: from mail.finder.org (unknown [192.155.80.58]) by greenhill.hpalace.com (Postfix) with ESMTPSA id 4EB5D499; Mon, 26 Feb 2024 22:38:40 +0000 (UTC) MIME-Version: 1.0 Date: Mon, 26 Feb 2024 14:38:39 -0800 From: Jared Finder To: Juri Linkov Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <86fry08di9.fsf@mail.linkov.net> References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> Message-ID: X-Sender: jared@finder.org Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 68765 Cc: Eli Zaretskii , 68765@debbugs.gnu.org, Philip Kaludercic , Stefan Monnier X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2024-02-10 09:25, Juri Linkov wrote: >>> * lisp/tab-line.el (tab-line-format-template): Add separator space. >>> (tab-line-display-order): New user variable to control display order. >>> (tab-line--runtime-display-order, tab-line--cookie): New internal >>> variables. >>> (tab-line-set-display): New function for modes to call to enable only >>> their content. >>> (tab-line-mode): Call `tab-line-set-display'. >> >> Juri, would you please review this part of the changeset? > > I'm not sure if this provides a clean interface. > Have you tried to show both window-tool-bar and tab-line tabs > on the same tab-line? Do you think this combination is usable? > Or maybe better just repurpose the tab-line in window-tool-bar.el > exclusively for window-local tool-bar? The implementation I provided works fine for me with both window-tool-bar-mode and tab-line-mode enabled as long as there are not too many tabs. I could see further adding a way to specify the max width tabs are able to take up if you think that's necessary. -- MJF From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 26 22:02:38 2024 Received: (at 68765) by debbugs.gnu.org; 27 Feb 2024 03:02:38 +0000 Received: from localhost ([127.0.0.1]:37095 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1renjo-00005y-W2 for submit@debbugs.gnu.org; Mon, 26 Feb 2024 22:02:38 -0500 Received: from greenhill.hpalace.com ([192.155.80.58]:49574) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1renjl-00005e-J1 for 68765@debbugs.gnu.org; Mon, 26 Feb 2024 22:02:35 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=finder.org; s=2018; t=1709002926; bh=Hg29fjsYcA+PO3Rad6cZG1XuMEWtwR8j4pFCBSAkYak=; h=Date:From:To:Cc:Subject:From; b=URB9vE3EsORK27AxFYUnx3ZF042vUCcWt+hMP/1FC7cpiRCgKzUDMWwr+M3ietUsf PtV/YheKEwg5Z78UVvlg6sMFa/RDWiiw4us2bNIudu5krk9JTFcMiVnzGbx9UVGern PXqY/elHyeD8eTRv64glXNjxZ+nig2DjcI0PVm6bWzMidcRgGBYr1wrrmhZSXNTtVw KAEQMSunQlQXfg8rdkcNTXOTrXhH8p7IQksUByhksQW6U+0YC3Xa5buOMizUlUX3tH S4EQ2hJSiT9ZFAOPwcEg34MO+NRRBwtrJV2SAj7Ses+zrODul3LbpyAnLDh+0MDuN7 P5eWLdoSMPRag== Received: from mail.finder.org (unknown [192.155.80.58]) by greenhill.hpalace.com (Postfix) with ESMTPSA id CDA9C576; Tue, 27 Feb 2024 03:02:06 +0000 (UTC) MIME-Version: 1.0 Date: Mon, 26 Feb 2024 19:02:06 -0800 From: Jared Finder To: Philip Kaludercic , Eli Zaretskii Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. Message-ID: <6c2e5fe5d3439f0a3696f86bd99bbb7b@finder.org> X-Sender: jared@finder.org Content-Type: multipart/mixed; boundary="=_0e3660d8dd73bd5ab0da0d4a3feb03d9" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 68765 Cc: 68765@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=_0e3660d8dd73bd5ab0da0d4a3feb03d9 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2024-02-11 12:51, Philip Kaludercic wrote: > Here are a few comments from a quick skim: Comments addressed. New patches for 0002 and 0003 added. I also addressed Eli's comments from https://debbugs.gnu.org/cgi/bugreport.cgi?bug=68765#10 as well. The following comment was not addressed: >> +(defun window-tool-bar-show-memory-use () >> + "Pop up a window showing the memory use metrics." >> + (interactive) >> + (require 'time-stamp) >> + (save-selected-window >> + (pop-to-buffer "*WTB Memory Report*") > > I think you should rewrite this as > > (with-current-buffer (get-buffer "...") > ;; ... > (pop-to-buffer (current-buffer)) I couldn't make this change and keep the current behavior that is important to me: 1. The window with focus should not change. 2. The buffer should get scrolled to the bottom to displayed the newly inserted text. -- MJF --=_0e3660d8dd73bd5ab0da0d4a3feb03d9 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0002-Add-user-option-to-only-display-default-tool-bar.patch Content-Disposition: attachment; filename=0002-Add-user-option-to-only-display-default-tool-bar.patch; size=2059 RnJvbSA2MjJjMTFjNmYzMTQzNTViMGU3NDJmY2JjYmNjOGFlNTE2NjFiY2EwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+CkRhdGU6 IEZyaSwgMjYgSmFuIDIwMjQgMTA6MDg6MzAgLTA4MDAKU3ViamVjdDogW1BBVENIIDIvM10gQWRk IHVzZXIgb3B0aW9uIHRvIG9ubHkgZGlzcGxheSBkZWZhdWx0IHRvb2wgYmFyCgpUaGlzIHdvcmtz IHdlbGwgd2l0aCBgd2luZG93LXRvb2wtYmFyLW1vZGUnLCB0byBiZSBhZGRlZCBpbiB1cGNvbWlu Zwpjb21taXQuICBUaGVuIHRoZSBkZWZhdWx0IHRvb2wgYmFyIGlzIGRpc3BsYXllZCBmcmFtZS13 aWRlIGFuZAptb2RlLXNwZWNpZmljIHRvb2wgYmFycyBhcmUgZGlzcGxheWVkIGluIHRoZSB3aW5k b3cgdGhhdCBtb2RlIGlzCmFjdGl2ZSBpbi4KCiogbGlzcC90b29sLWJhci5lbCAodG9vbC1iYXIt YWx3YXlzLXNob3ctZGVmYXVsdCk6IE5ldyB1c2VyIG9wdGlvbi4KKHRvb2wtYmFyLS1jYWNoZS1r ZXksIHRvb2wtYmFyLW1ha2Uta2V5bWFwLTEpOiBSZXR1cm4gZGVmYXVsdCB0b29sIGJhcgp3aGVu IG9wdGlvbiBpcyBzZXQuCi0tLQogbGlzcC90b29sLWJhci5lbCB8IDE3ICsrKysrKysrKysrKysr Ky0tCiAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9saXNwL3Rvb2wtYmFyLmVsIGIvbGlzcC90b29sLWJhci5lbAppbmRleCA5NmI2 MWM3YjIyOS4uNTJkNjBiMzI0MTIgMTAwNjQ0Ci0tLSBhL2xpc3AvdG9vbC1iYXIuZWwKKysrIGIv bGlzcC90b29sLWJhci5lbApAQCAtMTAwLDcgKzEwMCw5IEBAIHNlY29uZGFyeS10b29sLWJhci1t YXAKIChkZWZjb25zdCB0b29sLWJhci1rZXltYXAtY2FjaGUgKG1ha2UtaGFzaC10YWJsZSA6dGVz dCAjJ2VxdWFsKSkKIAogKGRlZnN1YnN0IHRvb2wtYmFyLS1jYWNoZS1rZXkgKCkKLSAgKGNvbnMg KGZyYW1lLXRlcm1pbmFsKSAoc3hoYXNoLWVxIHRvb2wtYmFyLW1hcCkpKQorICAoY29ucyAoZnJh bWUtdGVybWluYWwpCisgICAgICAgIChzeGhhc2gtZXEgKGlmIHRvb2wtYmFyLWFsd2F5cy1zaG93 LWRlZmF1bHQgKGRlZmF1bHQtdmFsdWUgJ3Rvb2wtYmFyLW1hcCkKKyAgICAgICAgICAgICAgICAg ICAgIHRvb2wtYmFyLW1hcCkpKSkKIAogKGRlZnN1YnN0IHRvb2wtYmFyLS1zZWNvbmRhcnktY2Fj aGUta2V5ICgpCiAgIChjb25zIChmcmFtZS10ZXJtaW5hbCkgKHN4aGFzaC1lcSBzZWNvbmRhcnkt dG9vbC1iYXItbWFwKSkpCkBAIC0xOTEsNyArMTkzLDkgQEAgdG9vbC1iYXItbWFrZS1rZXltYXAt MQogCQkJCSAgICAgIGJpbmQpKQogCQkgIChwbGlzdC1wdXQgcGxpc3QgOmltYWdlIGltYWdlKSkp CiAJICAgICAgYmluZCkpCi0JICAob3IgbWFwIHRvb2wtYmFyLW1hcCkpKQorCSAgKG9yIG1hcAor ICAgICAgICAgICAgICAoaWYgdG9vbC1iYXItYWx3YXlzLXNob3ctZGVmYXVsdCAoZGVmYXVsdC12 YWx1ZSAndG9vbC1iYXItbWFwKQorICAgICAgICAgICAgICAgIHRvb2wtYmFyLW1hcCkpKSkKIAog Ozs7IyMjYXV0b2xvYWQKIChkZWZ1biB0b29sLWJhci1hZGQtaXRlbSAoaWNvbiBkZWYga2V5ICZy ZXN0IHByb3BzKQpAQCAtMzc3LDYgKzM4MSwxNSBAQCB0b29sLWJhci1zZXR1cAogCSAgICAgKG1v ZGlmeS1hbGwtZnJhbWVzLXBhcmFtZXRlcnMKIAkgICAgICAobGlzdCAoY29ucyAndG9vbC1iYXIt cG9zaXRpb24gdmFsKSkpKSkpCiAKKyhkZWZjdXN0b20gdG9vbC1iYXItYWx3YXlzLXNob3ctZGVm YXVsdCBuaWwKKyAgIklmIG5vbi1uaWwsIGB0b29sLWJhci1tb2RlJyBvbmx5IHNob3dzIHRoZSBk ZWZhdWx0IHRvb2wgYmFyLgorVGhpcyB3b3JrcyB3ZWxsIHdoZW4gYWxzbyB1c2luZyBgZ2xvYmFs LXdpbmRvdy10b29sLWJhci1tb2RlJyB0bworZGlzcGxheSBidWZmZXItc3BlY2lmaWMgdG9vbCBi YXJzLiIKKyAgOnR5cGUgJ2Jvb2xlYW4KKyAgOmdyb3VwICdmcmFtZXMKKyAgOmdyb3VwICdtb3Vz ZQorICA6dmVyc2lvbiAiMzAuMSIpCisKIAwKIAogOzsgTW9kaWZpZXIgYmFyIG1vZGUuCi0tIAoy LjM5LjIKCg== --=_0e3660d8dd73bd5ab0da0d4a3feb03d9 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0003-Adding-window-tool-bar-package.patch Content-Disposition: attachment; filename=0003-Adding-window-tool-bar-package.patch; size=21493 RnJvbSBiYWY0YzgxZGYzZTRlODI1NzZhODA4NGFlMDI5ZDU2YjQ1NzUwNTUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+CkRhdGU6 IEZyaSwgMjYgSmFuIDIwMjQgMTU6NDQ6MTIgLTA4MDAKU3ViamVjdDogW1BBVENIIDMvM10gQWRk aW5nIHdpbmRvdy10b29sLWJhciBwYWNrYWdlCgotLS0KIGxpc3Avd2luZG93LXRvb2wtYmFyLmVs IHwgNDg5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBj aGFuZ2VkLCA0ODkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpc3Avd2luZG93 LXRvb2wtYmFyLmVsCgpkaWZmIC0tZ2l0IGEvbGlzcC93aW5kb3ctdG9vbC1iYXIuZWwgYi9saXNw L3dpbmRvdy10b29sLWJhci5lbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uZWVmZDYxMDlmN2QKLS0tIC9kZXYvbnVsbAorKysgYi9saXNwL3dpbmRvdy10b29sLWJhci5l bApAQCAtMCwwICsxLDQ4OSBAQAorOzs7IHdpbmRvdy10b29sLWJhci5lbCAtLS0gQWRkIHRvb2wg YmFycyBpbnNpZGUgd2luZG93cyAtKi0gbGV4aWNhbC1iaW5kaW5nOiB0IC0qLQorCis7OyBDb3B5 cmlnaHQgKEMpIDIwMjMtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworOzsg QXV0aG9yOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+Cis7OyBDcmVhdGVkOiBOb3Yg MjEsIDIwMjMKKzs7IFZlcnNpb246IDAuMgorOzsgS2V5d29yZHM6IG1vdXNlCis7OyBQYWNrYWdl LVJlcXVpcmVzOiAoKGVtYWNzICIyOS4xIikpCisKKzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdO VSBFbWFjcy4KKworOzsgR05VIEVtYWNzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKzs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7OyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorOzsg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworOzsgR05VIEVtYWNzIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7OyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor OzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KworOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKzs7IGFsb25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCis7OzsgQ29tbWVudGFyeToKKzs7Cis7OyBU aGlzIHBhY2thZ2UgcHV0cyBhIHRvb2wgYmFyIGluIGVhY2ggd2luZG93LiAgVGhpcyBhbGxvd3Mg eW91IHRvIHNlZQorOzsgbXVsdGlwbGUgdG9vbCBiYXJzIHNpbXVsdGFuZW91c2x5IGRpcmVjdGx5 IG5leHQgdG8gdGhlIGJ1ZmZlciBpdAorOzsgYWN0cyBvbiB3aGljaCBmZWVscyBtdWNoIG1vcmUg aW50dWl0aXZlLiAgRW1hY3MgImJyb3dzaW5nIiBtb2RlcworOzsgZ2VuZXJhbGx5IGhhdmUgc2Vu c2libGUgdG9vbCBiYXJzLCBmb3IgZXhhbXBsZTogKmluZm8qLCAqaGVscCosIGFuZAorOzsgKmV3 dyogaGF2ZSB0aGVtLgorOzsKKzs7IEl0IGRvZXMgdGhpcyB3aGlsZSBiZWluZyBtaW5kZnVsIG9m IHNjcmVlbiByZWFsIGVzdGF0ZS4gIE1vc3QgbW9kZXMKKzs7IGRvIG5vdCBwcm92aWRlIGEgY3Vz dG9tIHRvb2wgYmFyLCBhbmQgdGhpcyBwYWNrYWdlIGRvZXMgbm90IHNob3cgdGhlCis7OyBkZWZh dWx0IHRvb2wgYmFyLiAgVGhpcyBtZWFucyB0aGF0IGZvciBtb3N0IGJ1ZmZlcnMgdGhlcmUgd2ls bCBiZSBubworOzsgc3BhY2UgdGFrZW4gdXAuICBGdXJ0aGVybW9yZSwgeW91IGNhbiBwdXQgdGhp cyB0b29sIGJhciBpbiB0aGUgbW9kZQorOzsgbGluZSBvciB0YWIgbGluZSBpZiB5b3Ugd2FudCB0 byBzaGFyZSBpdCB3aXRoIGV4aXN0aW5nIGNvbnRlbnQuCis7OworOzsgVG8gZ2V0IHRoZSBkZWZh dWx0IGJlaGF2aW9yLCBydW4gKGdsb2JhbC13aW5kb3ctdG9vbC1iYXItbW9kZSAxKSBvcgorOzsg ZW5hYmxlIHZpYSBNLXggY3VzdG9taXplLWdyb3VwIFJFVCB3aW5kb3ctdG9vbC1iYXIgUkVULiAg VGhpcyB1c2VzCis7OyB0aGUgcGVyLXdpbmRvdyB0YWIgbGluZSB0byBzaG93IHRoZSB0b29sIGJh ci4KKzs7Cis7OyBJZiB5b3Ugd2FudCB0byBzaGFyZSBzcGFjZSB3aXRoIGFuIGV4aXN0aW5nIHRh YiBsaW5lLCBtb2RlIGxpbmUsIG9yCis7OyBoZWFkZXIgbGluZSwgYWRkICg6ZXZhbCAod2luZG93 LXRvb2wtYmFyLXN0cmluZykpIHRvCis7OyBgdGFiLWxpbmUtZm9ybWF0JywgYG1vZGUtbGluZS1m b3JtYXQnLCBvciBgaGVhZGVyLWxpbmUtZm9ybWF0Jy4KKworOzs7IEtub3duIGlzc3VlczoKKzs7 Cis7OyBPbiBHTlUgRW1hY3MgMjkuMSwgdGVybWluYWxzIGRyYWdnaW5nIHRvIHJlc2l6ZSB3aW5k b3dzIHdpbGwgZXJyb3IKKzs7IHdpdGggbWVzc2FnZSAiPHRhYi1saW5lPiA8bW91c2UtbW92ZW1l bnQ+IGlzIHVuZGVmaW5lZCIuICBUaGlzIGlzIGEKKzs7IGJ1ZyBpbiBHTlUgRW1hY3MsCis7OyA8 aHR0cHM6Ly9kZWJidWdzLmdudS5vcmcvY2dpL2J1Z3JlcG9ydC5jZ2k/YnVnPTY3NDU3Pi4KKzs7 Cis7OyBPbiBHTlUgRW1hY3MgMjksIHBlcmZvcm1hbmNlIGluIHRlcm1pbmFscyBpcyBsb3dlciB0 aGFuIG9uCis7OyBncmFwaGljYWwgZnJhbWVzLiAgVGhpcyBpcyBkdWUgdG8gYSB3b3JrYXJvdW5k LCBzZWUgIldvcmthcm91bmQgZm9yCis7OyBodHRwczovL2RlYmJ1Z3MuZ251Lm9yZy9jZ2kvYnVn cmVwb3J0LmNnaT9idWc9NjgzMzQiLCBiZWxvdy4KKworOzs7IFRvZG86Cis7OworOzsgTm90IGFs bCBmZWF0dXJlcyBwbGFubmVkIGFyZSBpbXBsZW1lbnRlZCB5ZXQuICBFdmVudHVhbGx5IEkgd291 bGQKKzs7IGxpa2UgdG8gYWxzbyBnZW5lcmFsbHkgbWFrZSB0b29sIGJhcnMgYmV0dGVyLgorOzsK Kzs7IFRhcmdldGluZyAwLjM6Cis7OyAqIFByb3Blcmx5IHN1cHBvcnQgcmVhbWluaW5nIGxlc3Mg ZnJlcXVlbnRseSB1c2VkIHRvb2wgYmFyIGl0ZW0gc3BlY3MuICBGcm9tCis7OyAgIGBwYXJzZV90 b29sX2Jhcl9pdGVtJzoKKzs7ICAgICAqIDp2aXNpYmxlCis7OyAgICAgKiA6ZmlsdGVyCis7OyAg ICAgKiA6YnV0dG9uCis7OyAgICAgKiA6d3JhcAorOzsgKiBBZGQgZGlzcGxheSBjdXN0b21pemF0 aW9uIHNpbWlsYXIgdG8gYHRvb2wtYmFyLXN0eWxlJy4KKzs7Cis7OyBUYXJnZXRpbmcgMS4wOgor OzsKKzs7ICogQ2xlYW4gdXAgRW1hY3MgdG9vbCBiYXJzCis7OyAgICAgKiBEZWZhdWx0OiBSZW1v dmUgZGVmYXVsdCB0b29sLWJhciBlbnRpcmVseQorOzsgICAgICogZ3JlcCwgdmM6IFJlbW92ZSBk ZWZhdWx0IHRvb2wtYmFyIGluaGVyaXRlZAorOzsgICAgICogaW5mbzogUmVtb3ZlIE5leHQgLyBQ cmV2IC8gVXAsIHdoaWNoIGlzIGFscmVhZHkgaW4gdGhlIGhlYWRlcgorOzsgICAgICogc21lcmdl OiBBZGQgdG9vbCBiYXIgZm9yIG5leHQvcHJldgorOzsKKzs7IFBvc3QgMS4wIHdvcms6Cis7Owor OzsgKiBTaG93IGtleWJvYXJkIHNob3J0Y3V0IG9uIGhlbHAgdGV4dC4KKzs7Cis7OyAqIEFkZCBh IGJpdCBtb3JlIGRvY3VtZW50YXRpb24uCis7OyAqIEFkZCBjdXN0b21pemF0aW9uIG9wdGlvbjog aWdub3JlLWRlZmF1bHQtdG9vbC1iYXItbWFwCis7OyAqIE1ha2UgdGFiLWxpbmUgZHJhZ2dpbmcg cmVzaXplIHRoZSB3aW5kb3cKKworOzs7IENvZGU6CisKKyhyZXF1aXJlICdtd2hlZWwpCisocmVx dWlyZSAndGFiLWxpbmUpCisocmVxdWlyZSAndG9vbC1iYXIpCisMCis7OzsgQmVuY2htYXJraW5n IGNvZGUKKzs7Cis7OyBSZWZyZXNoaW5nIHRoZSB0b29sIGJhciBpcyBjb21wdXRhdGlvbmFsbHkg c2ltcGxlLCBidXQgZ2VuZXJhdGVzIGEKKzs7IGxvdCBvZiBnYXJiYWdlLiAgU28gdGhpcyBiZW5j aG1hcmtpbmcgZm9jdXNlcyBvbiBnYXJiYWdlCis7OyBnZW5lcmF0aW9uLiAgU2luY2UgaXQgaGFz IHRvIHJ1biBhZnRlciBtb3N0IGNvbW1hbmRzLCBnZW5lcmF0aW5nCis7OyBzaWduaWZpY2FudGx5 IG1vcmUgZ2FyYmFnZSB3aWxsIGNhdXNlIG5vdGljZWFibGUgcGVyZm9ybWFuY2UKKzs7IGRlZ3Jh dGlvbi4KKzs7Cis7OyBUaGUgcmVmcmVzaCBoYXMgdHdvIHN0ZXBzOgorOzsKKzs7IFN0ZXAgMTog TG9vayB1cCB0aGUgPHRvb2wtYmFyPiBtYXAuCis7OyBTdGVwIDI6IEdlbmVyYXRlIGEgTGlzcCBz dHJpbmcgdXNpbmcgdGV4dCBwcm9wZXJ0aWVzIGZvciB0aGUgdG9vbAorOzsgYmFyIHN0cmluZy4K Kzs7Cis7OyBBZGRpdGlvbmFsbHksIHdlIGtlZXAgdHJhY2sgb2YgdGhlIHBlcmNlbnRhZ2Ugb2Yg Y29tbWFuZHMgdGhhdAorOzsgYWN1dGFsbHkgY3JlYXRlZCBhIHJlZnJlc2guCisoZGVmdmFyIHdp bmRvdy10b29sLWJhci0tbWVtb3J5LXVzZS1kZWx0YS1zdGVwMSAobWFrZS1saXN0IDcgMCkKKyAg IkFic29sdXRlIGRlbHRhIG9mIG1lbW9yeSB1c2UgY291bnRlcnMgZHVyaW5nIHN0ZXAgMS4KK1Ro aXMgaXMgYSBsaXN0IGluIHRoZSBzYW1lIHN0cnVjdHVyZSBhcyBgbWVtb3J5LXVzZS1jb3VudHMn LiIpCisoZGVmdmFyIHdpbmRvdy10b29sLWJhci0tbWVtb3J5LXVzZS1kZWx0YS1zdGVwMiAobWFr ZS1saXN0IDcgMCkKKyAgIkFic29sdXRlIGRlbHRhIG9mIG1lbW9yeSB1c2UgY291bnRlcnMgZHVy aW5nIHN0ZXAgMi4KK1RoaXMgaXMgYSBsaXN0IGluIHRoZSBzYW1lIHN0cnVjdHVyZSBhcyBgbWVt b3J5LXVzZS1jb3VudHMnLiIpCisoZGVmdmFyIHdpbmRvdy10b29sLWJhci0tcmVmcmVzaC1kb25l LWNvdW50IDAKKyAgIk51bWJlciBvZiB0b29sIGJhciBzdHJpbmcgcmVmcmVzaGVzIHJ1bi4KK1Ro ZSB0b3RhbCBudW1iZXIgb2YgcmVxdWVzdHMgaXMgdGhlIHN1bSBvZiB0aGlzIGFuZAorYHdpbmRv dy10b29sLWJhci0tcmVmcmVzaC1za2lwcGVkLWNvdW50Jy4iKQorKGRlZnZhciB3aW5kb3ctdG9v bC1iYXItLXJlZnJlc2gtc2tpcHBlZC1jb3VudCAwCisgICJOdW1iZXIgb2YgdG9vbCBiYXIgc3Ry aW5nIHJlZnJlc2hlcyB0aGF0IHdlcmUgc2tpcHBlZC4KK1RoZSB0b3RhbCBudW1iZXIgb2YgcmVx dWVzdHMgaXMgdGhlIHN1bSBvZiB0aGlzIGFuZAorYHdpbmRvdy10b29sLWJhci0tcmVmcmVzaC1k b25lLWNvdW50Jy4iKQorCisoZGVmdW4gd2luZG93LXRvb2wtYmFyLS1tZW1vcnktdXNlLWF2Zy1z dGVwMSAoKQorICAiUmV0dXJuIGF2ZXJhZ2UgbWVtb3J5IHVzZSBkZWx0YSBkdXJpbmcgc3RlcCAx LiIKKyAgKG1hcGNhciAobGFtYmRhIChlbHQpICgvIGVsdCB3aW5kb3ctdG9vbC1iYXItLXJlZnJl c2gtZG9uZS1jb3VudCAxLjApKQorICAgICAgICAgIHdpbmRvdy10b29sLWJhci0tbWVtb3J5LXVz ZS1kZWx0YS1zdGVwMSkpCisKKyhkZWZ1biB3aW5kb3ctdG9vbC1iYXItLW1lbW9yeS11c2UtYXZn LXN0ZXAyICgpCisgICJSZXR1cm4gYXZlcmFnZSBtZW1vcnkgdXNlIGRlbHRhIGR1cmluZyBzdGVw IDIuIgorICAobWFwY2FyIChsYW1iZGEgKGVsdCkgKC8gKGZsb2F0IGVsdCkgd2luZG93LXRvb2wt YmFyLS1yZWZyZXNoLWRvbmUtY291bnQpKQorICAgICAgICAgIHdpbmRvdy10b29sLWJhci0tbWVt b3J5LXVzZS1kZWx0YS1zdGVwMikpCisKKyhkZWNsYXJlLWZ1bmN0aW9uIHRpbWUtc3RhbXAtc3Ry aW5nICJ0aW1lLXN0YW1wIikKKworKGRlZnVuIHdpbmRvdy10b29sLWJhci1kZWJ1Zy1zaG93LW1l bW9yeS11c2UgKCkKKyAgIkRldmVsb3BtZW50LW9ubHkgY29tbWFuZCB0byBzaG93IG1lbW9yeSB1 c2VkIGJ5IGB3aW5kb3ctdG9vbC1iYXItc3RyaW5nJy4iCisgIChpbnRlcmFjdGl2ZSkKKyAgKHJl cXVpcmUgJ3RpbWUtc3RhbXApCisgIChzYXZlLXNlbGVjdGVkLXdpbmRvdworICAgIChwb3AtdG8t YnVmZmVyICIqV1RCIE1lbW9yeSBSZXBvcnQqIikKKyAgICAodW5sZXNzIChlcSBtYWpvci1tb2Rl ICdzcGVjaWFsLW1vZGUpCisgICAgICAoc3BlY2lhbC1tb2RlKSkKKworICAgIChnb3RvLWNoYXIg KHBvaW50LW1heCkpCisgICAgKGxldCAoKGluaGliaXQtcmVhZC1vbmx5IHQpKQorICAgICAgKGlu c2VydCAocHJvcGVydGl6ZSAoY29uY2F0ICJGdW5jdGlvbjogd2luZG93LXRvb2wtYmFyLXN0cmlu ZyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRpbWUtc3RhbXAtc3RyaW5n KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhY2UgJ3VuZGVybGluZSAnZm9udC1sb2Nr LWZhY2UgJ3VuZGVybGluZSkKKyAgICAgICAgICAgICAgIlxuXG4iKQorICAgICAgKHdpbmRvdy10 b29sLWJhci0taW5zZXJ0LW1lbW9yeS11c2UKKyAgICAgICAiU3RlcCAxIiAod2luZG93LXRvb2wt YmFyLS1tZW1vcnktdXNlLWF2Zy1zdGVwMSkpCisgICAgICAod2luZG93LXRvb2wtYmFyLS1pbnNl cnQtbWVtb3J5LXVzZQorICAgICAgICJTdGVwIDIiICh3aW5kb3ctdG9vbC1iYXItLW1lbW9yeS11 c2UtYXZnLXN0ZXAyKSkKKyAgICAgIChpbnNlcnQgKGZvcm1hdCAiUmVmcmVzaCBjb3VudCAgJWRc biIgd2luZG93LXRvb2wtYmFyLS1yZWZyZXNoLWRvbmUtY291bnQpCisgICAgICAgICAgICAgIChm b3JtYXQgIlJlZnJlc2ggZXhlY3V0ZWQgcGVyY2VudCAlLjJmXG4iCisgICAgICAgICAgICAgICAg ICAgICAgKC8gd2luZG93LXRvb2wtYmFyLS1yZWZyZXNoLWRvbmUtY291bnQKKyAgICAgICAgICAg ICAgICAgICAgICAgICAoKyB3aW5kb3ctdG9vbC1iYXItLXJlZnJlc2gtZG9uZS1jb3VudAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy10b29sLWJhci0tcmVmcmVzaC1za2lwcGVk LWNvdW50KQorICAgICAgICAgICAgICAgICAgICAgICAgIDEuMCkpCisgICAgICAgICAgICAgICJc biIpKSkpCisKKyhkZWZ1biB3aW5kb3ctdG9vbC1iYXItLWluc2VydC1tZW1vcnktdXNlIChsYWJl bCBhdmctbWVtb3J5LXVzZSkKKyAgIkluc2VydCBtZW1vcnkgdXNlIGludG8gY3VycmVudCBidWZm ZXIuCisKK0xBQkVMOiBBIHByZWZpeCBzdHJpbmcgdG8gYmUgaW4gZnJvbnQgb2YgdGhlIGRhdGEu CitBVkctTUVNT1JZLVVTRTogQSBsaXN0IG9mIGF2ZXJhZ2VzLCB3aXRoIHRoZSBzYW1lIG1lYW5p bmcgYXMKKyAgYG1lbW9yeS11c2UtY291bnRzJy4iCisgIChsZXQqICgobGFiZWwtbGVuIChsZW5n dGggbGFiZWwpKQorICAgICAgICAgKHBhZGRpbmcgKG1ha2Utc3RyaW5nIGxhYmVsLWxlbiA/XHMp KSkKKyAgICAoY2wtbG9vcCBmb3IgdXNhZ2UgaW4gYXZnLW1lbW9yeS11c2UKKyAgICAgICAgICAg ICBmb3IgdXNhZ2UtbGFiZWwgaW4gJygiQ29uc2VzIiAiRmxvYXRzIiAiVmVjdG9yIGNlbGxzIiAi U3ltYm9scyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3RyaW5nIGNoYXJz IiAiSW50ZXJ2YWxzIiAiU3RyaW5ncyIpCisgICAgICAgICAgICAgZm9yIGlkeCBmcm9tIDAKKyAg ICAgICAgICAgICBkbyAoaW5zZXJ0IChmb3JtYXQgIiVzICAlOC4yZiAlc1xuIgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoaWYgKD0gaWR4IDApIGxhYmVsIHBhZGRpbmcpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzYWdlCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVzYWdlLWxhYmVsKSkpKSkKKwwKKyhkZWZncm91cCB3aW5kb3ctdG9vbC1iYXIg bmlsCisgICJUb29sIGJhcnMgcGVyLXdpbmRvdy4iCisgIDpncm91cCAnY29udmVuaWVuY2UKKyAg OnByZWZpeCAid2luZG93LXRvb2wtYmFyLSIpCisKKyhkZWZ2YXIta2V5bWFwIHdpbmRvdy10b29s LWJhci0tYnV0dG9uLWtleW1hcAorICA6ZG9jICJLZXltYXAgdXNlZCBieSBgd2luZG93LXRvb2wt YmFyLS1rZXltYXAtZW50cnktdG8tc3RyaW5nJy4iCisgICI8Zm9sbG93LWxpbms+IiAnbW91c2Ut ZmFjZQorICA7OyBGb2xsb3cgbGluayBvbiBhbGwgY2xpY2tzIG9mIG1vdXNlLTEgYW5kIG1vdXNl LTIgc2luY2UgdGhlIHRvb2wKKyAgOzsgYmFyIGlzIG5vdCBhIHBsYWNlIHRoZSBwb2ludCBjYW4g dHJhdmVsIHRvLgorICAiPHRhYi1saW5lPiA8bW91c2UtMT4iICMnd2luZG93LXRvb2wtYmFyLS1j YWxsLWJ1dHRvbgorICAiPHRhYi1saW5lPiA8ZG91YmxlLW1vdXNlLTE+IiAjJ3dpbmRvdy10b29s LWJhci0tY2FsbC1idXR0b24KKyAgIjx0YWItbGluZT4gPHRyaXBsZS1tb3VzZS0xPiIgIyd3aW5k b3ctdG9vbC1iYXItLWNhbGwtYnV0dG9uCisgICI8dGFiLWxpbmU+IDxtb3VzZS0yPiIgIyd3aW5k b3ctdG9vbC1iYXItLWNhbGwtYnV0dG9uCisgICI8dGFiLWxpbmU+IDxkb3VibGUtbW91c2UtMj4i ICMnd2luZG93LXRvb2wtYmFyLS1jYWxsLWJ1dHRvbgorICAiPHRhYi1saW5lPiA8dHJpcGxlLW1v dXNlLTI+IiAjJ3dpbmRvdy10b29sLWJhci0tY2FsbC1idXR0b24KKworICA7OyBNb3VzZSBkb3du IGV2ZW50cyBkbyBub3RoaW5nLiAgQSBiaW5kaW5nIGlzIG5lZWRlZCBzbyBpc2VhcmNoCisgIDs7 IGRvZXMgbm90IGV4aXQgd2hlbiB0aGUgdGFiIGJhciBpcyBjbGlja2VkLgorICAiPHRhYi1saW5l PiA8ZG93bi1tb3VzZS0xPiIgIyd3aW5kb3ctdG9vbC1iYXItLWlnbm9yZQorICAiPHRhYi1saW5l PiA8ZG91YmxlLWRvd24tbW91c2UtMT4iICMnd2luZG93LXRvb2wtYmFyLS1pZ25vcmUKKyAgIjx0 YWItbGluZT4gPHRyaXBsZS1kb3duLW1vdXNlLTE+IiAjJ3dpbmRvdy10b29sLWJhci0taWdub3Jl CisgICI8dGFiLWxpbmU+IDxkb3duLW1vdXNlLTI+IiAjJ3dpbmRvdy10b29sLWJhci0taWdub3Jl CisgICI8dGFiLWxpbmU+IDxkb3VibGUtZG93bi1tb3VzZS0yPiIgIyd3aW5kb3ctdG9vbC1iYXIt LWlnbm9yZQorICAiPHRhYi1saW5lPiA8dHJpcGxlLWRvd24tbW91c2UtMj4iICMnd2luZG93LXRv b2wtYmFyLS1pZ25vcmUpCisoZnNldCAnd2luZG93LXRvb2wtYmFyLS1idXR0b24ta2V5bWFwIHdp bmRvdy10b29sLWJhci0tYnV0dG9uLWtleW1hcCkgOyBTbyBpdCBjYW4gYmUgYSBrZXltYXAgcHJv cGVydHkKKworOzsgUmVnaXN0ZXIgYmluZGluZ3MgdGhhdCBzdGF5IGluIGlzZWFyY2guICBUZWNo bmljYWxseSwgdGhlc2UKKzs7IGNvbW1hbmRzIGRvbid0IHBvcCB1cCBhIG1lbnUgYnV0IHRoZXkg YWN0IHZlcnkgc2ltaWxhciBpbiB0aGF0IHRoZXkKKzs7IGVuZCB1cCBjYWxsaW5nIGFuIGFjdHVh bCBjb21tYW5kIHZpYSBgY2FsbC1pbnRlcmFjdGl2ZWx5Jy4KKyhwdXNoICd3aW5kb3ctdG9vbC1i YXItLWNhbGwtYnV0dG9uIGlzZWFyY2gtbWVudS1iYXItY29tbWFuZHMpCisocHVzaCAnd2luZG93 LXRvb2wtYmFyLS1pZ25vcmUgaXNlYXJjaC1tZW51LWJhci1jb21tYW5kcykKKworKGRlZnZhci1s b2NhbCB3aW5kb3ctdG9vbC1iYXItc3RyaW5nLS1jYWNoZSBuaWwKKyAgIkNhY2hlIGZvciBwcmV2 aW91cyByZXN1bHQgb2YgYHdpbmRvdy10b29sLWJhci1zdHJpbmcnLiIpCisKKzs7OyMjI2F1dG9s b2FkCisoZGVmdW4gd2luZG93LXRvb2wtYmFyLXN0cmluZyAoKQorICAiUmV0dXJuIGEgKHByb3Bl cnRpemVkKSBzdHJpbmcgZm9yIHRoZSB0b29sIGJhci4KKworVGhpcyBpcyBmb3Igd2hlbiB5b3Ug d2FudCBtb3JlIGN1c3RvbWl6YXRpb25zIHRoYW4KK2B3aW5kb3ctdG9vbC1iYXItbW9kZScgcHJv dmlkZXMuICBDb21tb25seSBhZGRlZCB0byB0aGUgdmFyaWFibGUKK2B0YWItbGluZS1mb3JtYXQn LCBgaGVhZGVyLWxpbmUtZm9ybWF0Jywgb3IgYG1vZGUtbGluZS1mb3JtYXQnIgorICAoaWYgKG9y IChudWxsIHdpbmRvdy10b29sLWJhci1zdHJpbmctLWNhY2hlKQorICAgICAgICAgICh3aW5kb3ct dG9vbC1iYXItLWxhc3QtY29tbWFuZC10cmlnZ2Vycy1yZWZyZXNoLXApKQorICAgICAgKGxldCog KChtZW0wIChtZW1vcnktdXNlLWNvdW50cykpCisgICAgICAgICAgICAgKHRvb2xiYXItbWVudSAo d2luZG93LXRvb2wtYmFyLS1nZXQta2V5bWFwKSkKKyAgICAgICAgICAgICAobWVtMSAobWVtb3J5 LXVzZS1jb3VudHMpKQorICAgICAgICAgICAgIChyZXN1bHQgKG1hcGNvbmNhdCAjJ3dpbmRvdy10 b29sLWJhci0ta2V5bWFwLWVudHJ5LXRvLXN0cmluZworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoY2RyIHRvb2xiYXItbWVudSkgO1NraXAgJ2tleW1hcAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA7OyBXaXRob3V0IHNwYWNlcyBiZXR3ZWVuIHRoZSB0ZXh0LCBob3Zl cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBoaWdobGlnaHRzIGFsbCBh ZGphY2VudCBidXR0b25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHdp bmRvdy10b29sLWJhci0tdXNlLWltYWdlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChwcm9wZXJ0aXplICIgIiAnaW52aXNpYmxlIHQpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIiAiKSkpCisgICAgICAgICAgICAgKG1lbTIgKG1lbW9yeS11c2UtY291 bnRzKSkpCisgICAgICAgIChjbC1tYXBsIChsYW1iZGEgKGwtaW5pdCBsMCBsMSkKKyAgICAgICAg ICAgICAgICAgICAoY2wtaW5jZiAoY2FyIGwtaW5pdCkgKC0gKGNhciBsMSkgKGNhciBsMCkpKSkK KyAgICAgICAgICAgICAgICAgd2luZG93LXRvb2wtYmFyLS1tZW1vcnktdXNlLWRlbHRhLXN0ZXAx IG1lbTAgbWVtMSkKKyAgICAgICAgKGNsLW1hcGwgKGxhbWJkYSAobC1pbml0IGwxIGwyKQorICAg ICAgICAgICAgICAgICAgIChjbC1pbmNmIChjYXIgbC1pbml0KSAoLSAoY2FyIGwyKSAoY2FyIGwx KSkpKQorICAgICAgICAgICAgICAgICB3aW5kb3ctdG9vbC1iYXItLW1lbW9yeS11c2UtZGVsdGEt c3RlcDIgbWVtMSBtZW0yKQorCisgICAgICAgIChzZXRmIHdpbmRvdy10b29sLWJhci1zdHJpbmct LWNhY2hlCisgICAgICAgICAgICAgIChjb25jYXQKKyAgICAgICAgICAgICAgIDs7IFRoZSB0b29s IGJhciBmYWNlIGJ5IGRlZmF1bHQgcHV0cyBib3hlcyBhcm91bmQgdGhlCisgICAgICAgICAgICAg ICA7OyBidXR0b25zLiAgSG93ZXZlciwgdGhpcyBib3ggaXMgbm90IGRpc3BsYXllZCBpZiB0aGUK KyAgICAgICAgICAgICAgIDs7IGJveCBzdGFydHMgYXQgdGhlIGxlZnRtb3N0IHBpeGVsIG9mIHRo ZSB0YWItbGluZS4KKyAgICAgICAgICAgICAgIDs7IEFkZCBhIHNpbmdsZSBzcGFjZSBpbiB0aGlz IGNhc2Ugc28gdGhlIGJveCBkaXNwbGF5cworICAgICAgICAgICAgICAgOzsgY29ycmVjdGx5Lgor ICAgICAgICAgICAgICAgKHdoZW4gKGRpc3BsYXktc3VwcG9ydHMtZmFjZS1hdHRyaWJ1dGVzLXAK KyAgICAgICAgICAgICAgICAgICAgICAnKDpib3ggKGxpbmUtd2lkdGggMSkpKQorICAgICAgICAg ICAgICAgICAocHJvcGVydGl6ZSAiICIgJ2Rpc3BsYXkgJyhzcGFjZSA6d2lkdGggKDEpKSkpCisg ICAgICAgICAgICAgICByZXN1bHQpKQorICAgICAgICAoY2wtaW5jZiB3aW5kb3ctdG9vbC1iYXIt LXJlZnJlc2gtZG9uZS1jb3VudCkpCisgICAgKGNsLWluY2Ygd2luZG93LXRvb2wtYmFyLS1yZWZy ZXNoLXNraXBwZWQtY291bnQpKQorCisgIHdpbmRvdy10b29sLWJhci1zdHJpbmctLWNhY2hlKQor CisoZGVmY29uc3Qgd2luZG93LXRvb2wtYmFyLS1ncmFwaGljYWwtc2VwYXJhdG9yCisgIChsZXQg KChzdHIgKG1ha2Utc3RyaW5nIDMgP1xzKSkpCisgICAgKHNldC10ZXh0LXByb3BlcnRpZXMgMCAx ICcoZGlzcGxheSAoc3BhY2UgOndpZHRoICg0KSkpIHN0cikKKyAgICAoc2V0LXRleHQtcHJvcGVy dGllcyAxIDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAnKGRpc3BsYXkgKHNwYWNlIDp3aWR0 aCAoMSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlICg6aW52ZXJzZS12aWRlbyB0 KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHIpCisgICAgKHNldC10ZXh0LXByb3BlcnRp ZXMgMiAzICcoZGlzcGxheSAoc3BhY2UgOndpZHRoICg0KSkpIHN0cikKKyAgICBzdHIpKQorCiso ZGVmdW4gd2luZG93LXRvb2wtYmFyLS1rZXltYXAtZW50cnktdG8tc3RyaW5nIChtZW51LWl0ZW0p CisgICJDb252ZXJ0IE1FTlUtSVRFTSBpbnRvIGEgKHByb3BlcnRpemVkKSBzdHJpbmcgcmVwcmVz ZW50YXRpb24uCisKK01FTlUtSVRFTTogTWVudSBpdGVtIHRvIGNvbnZlcnQuICBTZWUgaW5mbyBu b2RlIChlbGlzcClUb29sIEJhci4iCisgIChwY2FzZSBtZW51LWl0ZW0KKyAgICA7OyBTZXBhcmF0 b3JzCisgICAgKChvciBgKCxfICItLSIpCisgICAgICAgICBgKCxfIG1lbnUtaXRlbSAsKGFuZCAo cHJlZCBzdHJpbmdwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByZWQgKHN0cmlu Zy1wcmVmaXgtcCAiLS0iKSkpKSkKKyAgICAgKGlmICh3aW5kb3ctdG9vbC1iYXItLXVzZS1pbWFn ZXMpCisgICAgICAgICB3aW5kb3ctdG9vbC1iYXItLWdyYXBoaWNhbC1zZXBhcmF0b3IKKyAgICAg ICAifCIpKQorCisgICAgOzsgTWVudSBpdGVtLCB0dXJuIGludG8gcHJvcGVydGl6ZWQgc3RyaW5n IGJ1dHRvbgorICAgIChgKCxrZXkgbWVudS1pdGVtICxuYW1lLWV4cHIgLGJpbmRpbmcgLiAscGxp c3QpCisgICAgICh3aGVuIGJpbmRpbmcgICAgICA7IElmIG5vIGJpbmRpbmcgZXhpc3RzLCB0aGVu IGJ1dHRvbiBpcyBoaWRkZW4uCisgICAgICAgKGxldCogKChuYW1lIChldmFsIG5hbWUtZXhwcikp CisgICAgICAgICAgICAgIChzdHIgKHVwY2FzZS1pbml0aWFscyAob3IgKHBsaXN0LWdldCBwbGlz dCA6bGFiZWwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmlu Zy10cmltLXJpZ2h0IG5hbWUgIlxcLisiKSkpKQorICAgICAgICAgICAgICAobGVuIChsZW5ndGgg c3RyKSkKKyAgICAgICAgICAgICAgKGVuYWJsZS1mb3JtIChwbGlzdC1nZXQgcGxpc3QgOmVuYWJs ZSkpCisgICAgICAgICAgICAgIChlbmFibGVkIChvciAobm90IGVuYWJsZS1mb3JtKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGV2YWwgZW5hYmxlLWZvcm0pKSkpCisgICAgICAgICAoaWYg ZW5hYmxlZAorICAgICAgICAgICAgIChhZGQtdGV4dC1wcm9wZXJ0aWVzIDAgbGVuCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhtb3VzZS1mYWNlIHdpbmRvdy10b29sLWJhci1i dXR0b24taG92ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleW1hcCB3 aW5kb3ctdG9vbC1iYXItLWJ1dHRvbi1rZXltYXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZhY2Ugd2luZG93LXRvb2wtYmFyLWJ1dHRvbikKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHIpCisgICAgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSAwIGxl bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhY2UKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICd3aW5kb3ctdG9vbC1iYXItYnV0dG9uLWRpc2FibGVkCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHIpKQorICAgICAgICAgKHdoZW4tbGV0ICgoc3BlYyAoYW5k ICh3aW5kb3ctdG9vbC1iYXItLXVzZS1pbWFnZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHBsaXN0LWdldCBtZW51LWl0ZW0gOmltYWdlKSkpKQorICAgICAgICAgICAocHV0LXRl eHQtcHJvcGVydHkgMCBsZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXNwbGF5 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIHNwZWMKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIGVuYWJsZWQgJyg6bWFyZ2luIDIgOmFzY2Vu dCBjZW50ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyg6bWFy Z2luIDIgOmFzY2VudCBjZW50ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDpjb252ZXJzaW9uIGRpc2FibGVkKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHIpKQorICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IDAgbGVuCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2hlbHAtZWNobworICAgICAgICAgICAgICAgICAgICAgICAgICAg IChvciAocGxpc3QtZ2V0IHBsaXN0IDpoZWxwKSBuYW1lKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cikKKyAgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSAwIGxlbiAndG9vbC1iYXIt a2V5IGtleSBzdHIpCisgICAgICAgICBzdHIpKSkpKQorCisoZGVmdW4gd2luZG93LXRvb2wtYmFy LS1jYWxsLWJ1dHRvbiAoKQorICAiQ2FsbCB0aGUgYnV0dG9uIHRoYXQgd2FzIGNsaWNrZWQgb24g aW4gdGhlIHRhYiBsaW5lLiIKKyAgKGludGVyYWN0aXZlKQorICAod2hlbiAobW91c2UtZXZlbnQt cCBsYXN0LWNvbW1hbmQtZXZlbnQpCisgICAgKGxldCAoKHBvc24gKGV2ZW50LXN0YXJ0IGxhc3Qt Y29tbWFuZC1ldmVudCkpKQorICAgICAgOzsgQ29tbWFuZHMgbmVlZCB0byBleGVjdXRlIHdpdGgg dGhlIHJpZ2h0IGJ1ZmZlciBhbmQgd2luZG93CisgICAgICA7OyBzZWxlY3RlZC4gIFRoZSBzZWxl Y3Rpb24gbmVlZHMgdG8gYmUgcGVybWFuZW50IGZvciBpc2VhcmNoLgorICAgICAgKHNlbGVjdC13 aW5kb3cgKHBvc24td2luZG93IHBvc24pKQorICAgICAgKGxldCogKChzdHIgKHBvc24tc3RyaW5n IHBvc24pKQorICAgICAgICAgICAgIChrZXkgKGdldC10ZXh0LXByb3BlcnR5IChjZHIgc3RyKSAn dG9vbC1iYXIta2V5IChjYXIgc3RyKSkpCisgICAgICAgICAgICAgKGNtZCAobG9va3VwLWtleSAo d2luZG93LXRvb2wtYmFyLS1nZXQta2V5bWFwKSAodmVjdG9yIGtleSkpKSkKKyAgICAgICAgKGNh bGwtaW50ZXJhY3RpdmVseSBjbWQpKSkpKQorCisoZGVmdW4gd2luZG93LXRvb2wtYmFyLS1pZ25v cmUgKCkKKyAgIkRvIG5vdGhpbmcuICBUaGlzIGNvbW1hbmQgZXhpc3RzIGZvciBpc2VhcmNoLiIK KyAgKGludGVyYWN0aXZlKQorICBuaWwpCisKKyhkZWZ2YXIgd2luZG93LXRvb2wtYmFyLS1pZ25v cmVkLWV2ZW50LXR5cGVzCisgIChsZXQgKChsaXN0IChsaXN0ICdtb3VzZS1tb3ZlbWVudCAncGlu Y2gKKyAgICAgICAgICAgICAgICAgICAgJ3doZWVsLWRvd24gJ3doZWVsLXVwICd3aGVlbC1sZWZ0 ICd3aGVlbC1yaWdodAorICAgICAgICAgICAgICAgICAgICBtb3VzZS13aGVlbC1kb3duLWV2ZW50 IG1vdXNlLXdoZWVsLXVwLWV2ZW50CisgICAgICAgICAgICAgICAgICAgIG1vdXNlLXdoZWVsLWxl ZnQtZXZlbnQgbW91c2Utd2hlZWwtcmlnaHQtZXZlbnQKKyAgICAgICAgICAgICAgICAgICAgKGJv dW5kLWFuZC10cnVlLXAgbW91c2Utd2hlZWwtZG93bi1hbHRlcm5hdGUtZXZlbnQpCisgICAgICAg ICAgICAgICAgICAgIChib3VuZC1hbmQtdHJ1ZS1wIG1vdXNlLXdoZWVsLXVwLWFsdGVybmF0ZS1l dmVudCkKKyAgICAgICAgICAgICAgICAgICAgKGJvdW5kLWFuZC10cnVlLXAgbW91c2Utd2hlZWwt bGVmdC1hbHRlcm5hdGUtZXZlbnQpCisgICAgICAgICAgICAgICAgICAgIChib3VuZC1hbmQtdHJ1 ZS1wIG1vdXNlLXdoZWVsLXJpZ2h0LWFsdGVybmF0ZS1ldmVudCkpKSkKKyAgICAoZGVsZXRlLWR1 cHMgKGRlbGV0ZSBuaWwgbGlzdCkpKQorICAiQ2FjaGUgZm9yIGB3aW5kb3ctdG9vbC1iYXItLWxh c3QtY29tbWFuZC10cmlnZ2Vycy1yZWZyZXNoLXAnLiIpCisKKyhkZWZ1biB3aW5kb3ctdG9vbC1i YXItLWxhc3QtY29tbWFuZC10cmlnZ2Vycy1yZWZyZXNoLXAgKCkKKyAgIlRlc3QgaWYgdGhlIHJl Y2VudCBjb21tYW5kIG9yIGV2ZW50IHNob3VsZCB0cmlnZ2VyIGEgdG9vbCBiYXIgcmVmcmVzaC4i CisgIChsZXQgKCh0eXBlIChldmVudC1iYXNpYy10eXBlIGxhc3QtY29tbWFuZC1ldmVudCkpKQor ICAgIChhbmQKKyAgICAgOzsgQXNzdW1lIHRoYXQga2V5IHByZXNzZXMgYW5kIGJ1dHRvbiBwcmVz c2VzIGFyZSB0aGUgb25seSB1c2VyCisgICAgIDs7IGludGVyYWN0aW9ucyB0aGF0IGNhbiBhbHRl ciB0aGUgdG9vbCBiYXIuICBTcGVjaWZpY2FsbHksIHRoaXMKKyAgICAgOzsgZXhjbHVkZXMgbW91 c2UgbW92ZW1lbnQsIG1vdXNlIHdoZWVsIHNjcm9sbCwgYW5kIHBpbmNoLgorICAgICAobm90ICht ZW1iZXIgdHlwZSB3aW5kb3ctdG9vbC1iYXItLWlnbm9yZWQtZXZlbnQtdHlwZXMpKQorICAgICA7 OyBBc3N1bWUgdGhhdCBhbnkgY29tbWFuZCB0aGF0IHRyaWdnZXJzIHNoaWZ0IHNlbGVjdCBjYW4n dCBhbHRlcgorICAgICA7OyB0aGUgdG9vbCBiYXIuICBUaGlzIGV4Y2x1ZGVzIHB1cmUgbmF2aWdh dGlvbiBjb21tYW5kcy4KKyAgICAgKG5vdCAod2luZG93LXRvb2wtYmFyLS1jb21tYW5kLXRyaWdn ZXJzLXNoaWZ0LXNlbGVjdC1wIGxhc3QtY29tbWFuZCkpCisgICAgIDs7IEFzc3VtZSB0aGF0IHNl bGYtaW5zZXJ0LWNvbW1hbmQgd29uJ3QgYWx0ZXIgdGhlIHRvb2wgYmFyLgorICAgICA7OyBUaGlz IGlzIHRoZSBtb3N0IGNvbW1vbmx5IGV4ZWN1dGVkIGNvbW1hbmQuCisgICAgIChub3QgKGVxIGxh c3QtY29tbWFuZCAnc2VsZi1pbnNlcnQtY29tbWFuZCkpKSkpCisKKyhkZWZ1biB3aW5kb3ctdG9v bC1iYXItLWNvbW1hbmQtdHJpZ2dlcnMtc2hpZnQtc2VsZWN0LXAgKGNvbW1hbmQpCisgICJUZXN0 IGlmIENPTU1BTkQgd291bGQgdHJpZ2dlciBzaGlmdCBzZWxlY3QuIgorICAobGV0KiAoKGZvcm0g KGludGVyYWN0aXZlLWZvcm0gY29tbWFuZCkpCisgICAgICAgICAoc3BlYyAoY2FyLXNhZmUgKGNk ci1zYWZlIGZvcm0pKSkpCisgICAgKGFuZCAoZXEgKGNhci1zYWZlIGZvcm0pICdpbnRlcmFjdGl2 ZSkKKyAgICAgICAgIChzdHJpbmdwIHNwZWMpCisgICAgICAgICAoc2VxLXBvc2l0aW9uIHNwZWMg P14pKSkpCisKKzs7OyMjI2F1dG9sb2FkCisoZGVmaW5lLW1pbm9yLW1vZGUgd2luZG93LXRvb2wt YmFyLW1vZGUKKyAgIlRvZ2dsZSBkaXNwbGF5IG9mIHRoZSB0b29sIGJhciBpbiB0aGUgdGFiIGxp bmUgb2YgdGhlIGN1cnJlbnQgYnVmZmVyLiIKKyAgOmxpZ2h0ZXIgbmlsCisgIChsZXQgKChzaG91 bGQtZGlzcGxheSAoYW5kIHdpbmRvdy10b29sLWJhci1tb2RlCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChub3QgKGVxIHRvb2wtYmFyLW1hcAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZGVmYXVsdC12YWx1ZSAndG9vbC1iYXItbWFwKSkpKSkpCisgICAgKGlm IChmYm91bmRwICd0YWItbGluZS1zZXQtZGlzcGxheSkKKyAgICAgICAgOzsgTmV3bHkgYWRkZWQg ZnVuY3Rpb24gZm9yIEVtYWNzIDMwLgorICAgICAgICAodGFiLWxpbmUtc2V0LWRpc3BsYXkgJ3dp bmRvdy10b29sLWJhci1tb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYW5kIHNo b3VsZC1kaXNwbGF5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoOmV2YWwg KHdpbmRvdy10b29sLWJhci1zdHJpbmcpKSkpCisgICAgICA7OyBMZWdhY3kgcGF0aCBmb3IgRW1h Y3MgMjkuCisgICAgICAoc2V0cSB0YWItbGluZS1mb3JtYXQKKyAgICAgICAgICAgIChhbmQgc2hv dWxkLWRpc3BsYXkKKyAgICAgICAgICAgICAgICAgJyg6ZXZhbCAod2luZG93LXRvb2wtYmFyLXN0 cmluZykpKSkpKSkKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZpbmUtZ2xvYmFsaXplZC1taW5vci1t b2RlIGdsb2JhbC13aW5kb3ctdG9vbC1iYXItbW9kZQorICB3aW5kb3ctdG9vbC1iYXItbW9kZSB3 aW5kb3ctdG9vbC1iYXItLXR1cm4tb24KKyAgOmdyb3VwICd3aW5kb3ctdG9vbC1iYXIKKyAgKGFk ZC1ob29rICdpc2VhcmNoLW1vZGUtaG9vayAjJ3dpbmRvdy10b29sLWJhci0tdHVybi1vbikKKyAg KGFkZC1ob29rICdpc2VhcmNoLW1vZGUtZW5kLWhvb2sgIyd3aW5kb3ctdG9vbC1iYXItLXR1cm4t b24pKQorCisoZGVmdmFyIHdpbmRvdy10b29sLWJhci0tYWxsb3ctaW1hZ2VzIHQKKyAgIkludGVy bmFsIGRlYnVnIGZsYWcgdG8gZm9yY2UgdGV4dCBtb2RlLiIpCisKKyhkZWZ1biB3aW5kb3ctdG9v bC1iYXItLXVzZS1pbWFnZXMgKCkKKyAgIkludGVybmFsIGZ1bmN0aW9uLgorUmVzcGVjdHMgYHdp bmRvdy10b29sLWJhci0tYWxsb3ctaW1hZ2VzJyBhcyB3ZWxsIGFzIGZyYW1lCitjYXBhYmlsaXRp ZXMuIgorICAoYW5kIHdpbmRvdy10b29sLWJhci0tYWxsb3ctaW1hZ2VzCisgICAgICAgKGRpc3Bs YXktaW1hZ2VzLXApKSkKKwwKKzs7OyBEaXNwbGF5IHN0eWxpbmc6CisoZGVmZmFjZSB3aW5kb3ct dG9vbC1iYXItYnV0dG9uCisgICcoKGRlZmF1bHQKKyAgICAgOmluaGVyaXQgdGFiLWxpbmUpCisg ICAgKCgoY2xhc3MgY29sb3IpIChtaW4tY29sb3JzIDg4KSAoc3VwcG9ydHMgOmJveCB0KSkKKyAg ICAgOmJveCAoOmxpbmUtd2lkdGggLTEgOnN0eWxlIHJlbGVhc2VkLWJ1dHRvbikKKyAgICAgOmJh Y2tncm91bmQgImdyZXk4NSIpCisgICAgOzsgSWYgdGhlIGJveCBpcyBub3Qgc3VwcG9ydGVkLCBk aW0gdGhlIGJ1dHRvbiBiYWNrZ3JvdW5kIGEgYml0LgorICAgICgoKGNsYXNzIGNvbG9yKSAobWlu LWNvbG9ycyA4OCkpCisgICAgIDpiYWNrZ3JvdW5kICJncmV5NzAiKQorICAgICh0CisgICAgIDpp bnZlcnNlLXZpZGVvIHQpKQorICAiRmFjZSB1c2VkIGZvciBidXR0b25zIHdoZW4gdGhlIG1vdXNl IGlzIG5vdCBob3ZlcmluZyBvdmVyIHRoZSBidXR0b24uIgorICA6Z3JvdXAgJ3dpbmRvdy10b29s LWJhcikKKworKGRlZmZhY2Ugd2luZG93LXRvb2wtYmFyLWJ1dHRvbi1ob3ZlcgorICAnKChkZWZh dWx0CisgICAgIDppbmhlcml0IHRhYi1saW5lKQorICAgICgoKGNsYXNzIGNvbG9yKSAobWluLWNv bG9ycyA4OCkpCisgICAgIDpib3ggKDpsaW5lLXdpZHRoIC0xIDpzdHlsZSByZWxlYXNlZC1idXR0 b24pCisgICAgIDpiYWNrZ3JvdW5kICJncmV5OTUiKQorICAgICh0CisgICAgIDppbnZlcnNlLXZp ZGVvIHQpKQorICAiRmFjZSB1c2VkIGZvciBidXR0b25zIHdoZW4gdGhlIG1vdXNlIGlzIGhvdmVy aW5nIG92ZXIgdGhlIGJ1dHRvbi4iCisgIDpncm91cCAnd2luZG93LXRvb2wtYmFyKQorCisoZGVm ZmFjZSB3aW5kb3ctdG9vbC1iYXItYnV0dG9uLWRpc2FibGVkCisgICcoKGRlZmF1bHQKKyAgICAg OmluaGVyaXQgdGFiLWxpbmUpCisgICAgKCgoY2xhc3MgY29sb3IpIChtaW4tY29sb3JzIDg4KSkK KyAgICAgOmJveCAoOmxpbmUtd2lkdGggLTEgOnN0eWxlIHJlbGVhc2VkLWJ1dHRvbikKKyAgICAg OmJhY2tncm91bmQgImdyZXk1MCIKKyAgICAgOmZvcmVncm91bmQgImdyZXk3MCIpCisgICAgKHQK KyAgICAgOmludmVyc2UtdmlkZW8gdAorICAgICA6YmFja2dyb3VuZCAiYnJpZ2h0YmxhY2siKSkK KyAgIkZhY2UgdXNlZCBmb3IgYnV0dG9ucyB3aGVuIHRoZSBidXR0b24gaXMgZGlzYWJsZWQuIgor ICA6Z3JvdXAgJ3dpbmRvdy10b29sLWJhcikKKwwKKzs7OyBXb3JrYXJvdW5kIGZvciBodHRwczov L2RlYmJ1Z3MuZ251Lm9yZy9jZ2kvYnVncmVwb3J0LmNnaT9idWc9NjgzMzQuCisoZGVmdW4gd2lu ZG93LXRvb2wtYmFyLS1nZXQta2V5bWFwICgpCisgICJSZXR1cm4gdGhlIHRvb2wgYmFyIGtleW1h cC4iCisgIChsZXQgKCh0b29sLWJhci1hbHdheXMtc2hvdy1kZWZhdWx0IG5pbCkpCisgICAgKGlm IChhbmQgKHZlcnNpb248IGVtYWNzLXZlcnNpb24gIjMwIikKKyAgICAgICAgICAgICAobm90ICh3 aW5kb3ctdG9vbC1iYXItLXVzZS1pbWFnZXMpKSkKKyAgICAgICAgOzsgVGhpcyBjb2RlIHBhdGgg aXMgYSBsZXNzIGVmZmljaWVudCB3b3JrYXJvdW5kLgorICAgICAgICAod2luZG93LXRvb2wtYmFy LS1tYWtlLWtleW1hcC0xKQorICAgICAgKGtleW1hcC1nbG9iYWwtbG9va3VwICI8dG9vbC1iYXI+ IikpKSkKKworKGRlY2xhcmUtZnVuY3Rpb24gaW1hZ2UtbWFzay1wICJpbWFnZS5jIiAoc3BlYyAm b3B0aW9uYWwgZnJhbWUpKQorCisoZGVmdW4gd2luZG93LXRvb2wtYmFyLS1tYWtlLWtleW1hcC0x ICgpCisgICJQYXRjaGVkIGNvcHkgb2YgYHRvb2wtYmFyLW1ha2Uta2V5bWFwLTEnLiIKKyAgKG1h cGNhciAobGFtYmRhIChiaW5kKQorICAgICAgICAgICAgKGxldCAoaW1hZ2UtZXhwIHBsaXN0KQor ICAgICAgICAgICAgICAod2hlbiAoYW5kIChlcSAoY2FyLXNhZmUgKGNkci1zYWZlIGJpbmQpKSAn bWVudS1pdGVtKQorICAgICAgICAgICAgICAgICAgICAgICAgIDs7IEZvciB0aGUgZm9ybWF0IG9m IG1lbnUtaXRlbXMsIHNlZSBub2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgOzsgYEV4dGVu ZGVkIE1lbnUgSXRlbXMnIGluIHRoZSBFbGlzcCBtYW51YWwuCisgICAgICAgICAgICAgICAgICAg ICAgICAgKHNldHEgcGxpc3QgKG50aGNkciAoaWYgKGNvbnNwIChudGggNCBiaW5kKSkgNSA0KQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZCkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgKHNldHEgaW1hZ2UtZXhwIChwbGlzdC1nZXQgcGxpc3QgOmlt YWdlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3AgaW1hZ2UtZXhwKQorICAgICAg ICAgICAgICAgICAgICAgICAgIChub3QgKGVxIChjYXIgaW1hZ2UtZXhwKSAnaW1hZ2UpKQorICAg ICAgICAgICAgICAgICAgICAgICAgIChmYm91bmRwIChjYXIgaW1hZ2UtZXhwKSkpCisgICAgICAg ICAgICAgICAgKGxldCAoKGltYWdlIChhbmQgKGRpc3BsYXktaW1hZ2VzLXApCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGV2YWwgaW1hZ2UtZXhwKSkpKQorICAgICAgICAgICAg ICAgICAgKHVubGVzcyAoYW5kIGltYWdlIChpbWFnZS1tYXNrLXAgaW1hZ2UpKQorICAgICAgICAg ICAgICAgICAgICAoc2V0cSBpbWFnZSAoYXBwZW5kIGltYWdlICcoOm1hc2sgaGV1cmlzdGljKSkp KQorICAgICAgICAgICAgICAgICAgKHNldHEgYmluZCAoY29weS1zZXF1ZW5jZSBiaW5kKQorICAg ICAgICAgICAgICAgICAgICAgICAgcGxpc3QgKG50aGNkciAoaWYgKGNvbnNwIChudGggNCBiaW5k KSkgNSA0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kKSkKKyAg ICAgICAgICAgICAgICAgIChwbGlzdC1wdXQgcGxpc3QgOmltYWdlIGltYWdlKSkpCisgICAgICAg ICAgICAgIGJpbmQpKQorICAgICAgICAgIHRvb2wtYmFyLW1hcCkpCisKKyhkZWZ1biB3aW5kb3ct dG9vbC1iYXItLXR1cm4tb24gKCkKKyAgIkludGVybmFsIGZ1bmN0aW9uIGNhbGxlZCBieSBgZ2xv YmFsLXdpbmRvdy10b29sLWJhci1tb2RlJy4iCisgICh3aGVuIGdsb2JhbC13aW5kb3ctdG9vbC1i YXItbW9kZQorICAgICh3aW5kb3ctdG9vbC1iYXItbW9kZSAxKSkpCisKKyhwcm92aWRlICd3aW5k b3ctdG9vbC1iYXIpCisKKzs7OyB3aW5kb3ctdG9vbC1iYXIuZWwgZW5kcyBoZXJlCi0tIAoyLjM5 LjIKCg== --=_0e3660d8dd73bd5ab0da0d4a3feb03d9-- From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 26 11:33:26 2024 Received: (at 68765) by debbugs.gnu.org; 26 Mar 2024 15:33:26 +0000 Received: from localhost ([127.0.0.1]:34476 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rp8nl-00025C-Pp for submit@debbugs.gnu.org; Tue, 26 Mar 2024 11:33:26 -0400 Received: from greenhill.hpalace.com ([192.155.80.58]:53426) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rp8nj-000253-Fa for 68765@debbugs.gnu.org; Tue, 26 Mar 2024 11:33:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=finder.org; s=2018; t=1711467202; bh=4MOY4Odpfb9u4e4FaVSU557ZMK3kvgHotoZKqOmOIn0=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=dK8Bh9WaDt9ZAKTdG2spFX91z9Dvse82FGTxp42RR89x4mWTuxdhyYvR1v68fKt8C 8tMBxqGf2j+qhW7CcEV/JGfY5ykOU1hLTGxARUsjB8w0i1zdJgtMxTL2Z8utnCpaP/ 4atkbRuhuhTPXd+kzZ48BBm6RXrw5EGYAI0l9kplsVypGynrgXPHTjJFeTX7vIVW49 CUSHeF5Ftgmh663JQ4MP4peIh2pvrPeUKbOYCdsmkIWthjjQt88cxGuaFaEQBOq00z dpGlfJagHqXSMnatWyH3xR3r5LYSjGgF9/WKhAfwjrOQbECuCrF0rPmVu2ZHkuw0Cc rsbOHTm5w+3RQ== Received: from mail.finder.org (unknown [192.155.80.58]) by greenhill.hpalace.com (Postfix) with ESMTPSA id D9A2760A; Tue, 26 Mar 2024 15:33:22 +0000 (UTC) MIME-Version: 1.0 Date: Tue, 26 Mar 2024 08:33:22 -0700 From: Jared Finder To: Philip Kaludercic , Eli Zaretskii Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <6c2e5fe5d3439f0a3696f86bd99bbb7b@finder.org> References: <6c2e5fe5d3439f0a3696f86bd99bbb7b@finder.org> Message-ID: <88fb732b480d7a33ed1464d40127c3fc@finder.org> X-Sender: jared@finder.org Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 68765 Cc: 68765@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) It's been four weeks and I've seen no reply to these updated patches. Are you able to review? On 2024-02-26 19:02, Jared Finder wrote: > On 2024-02-11 12:51, Philip Kaludercic wrote: >> Here are a few comments from a quick skim: > > Comments addressed. New patches for 0002 and 0003 added. I also > addressed Eli's comments from > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=68765#10 as well. > > The following comment was not addressed: > >>> +(defun window-tool-bar-show-memory-use () >>> + "Pop up a window showing the memory use metrics." >>> + (interactive) >>> + (require 'time-stamp) >>> + (save-selected-window >>> + (pop-to-buffer "*WTB Memory Report*") >> >> I think you should rewrite this as >> >> (with-current-buffer (get-buffer "...") >> ;; ... >> (pop-to-buffer (current-buffer)) > > I couldn't make this change and keep the current behavior that is > important to me: > > 1. The window with focus should not change. > 2. The buffer should get scrolled to the bottom to displayed the newly > inserted text. > > -- MJF From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 26 11:34:13 2024 Received: (at 68765) by debbugs.gnu.org; 26 Mar 2024 15:34:13 +0000 Received: from localhost ([127.0.0.1]:34481 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rp8oX-00027N-8j for submit@debbugs.gnu.org; Tue, 26 Mar 2024 11:34:13 -0400 Received: from greenhill.hpalace.com ([192.155.80.58]:38988) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rp8oV-00027G-Tn for 68765@debbugs.gnu.org; Tue, 26 Mar 2024 11:34:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=finder.org; s=2018; t=1711467251; bh=LiwCsscNPX9gRLjFJeGWk1fitLKpEIau1bwVtPIw7XE=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=zqncPH4fgNAxetv1IdiyDONU6N43VSqlrUnkDh3Zd8fdibtQTgkKCs4FPs6/ZZqPR ogue46H+wrfedrPlxSGiur3wgsjLOT3zt7lk0bv/WIt8/OOwQ9If0inurX6+bsf0+H TRLdLffxjQRKjUbTcLSnwN+yh++S7YmscvyxUlXzDe5f0JhNEPFnPZkK3fqtD41t7M QtpBYXP7vo7KHG/5T2ahyTVq5C5QQX8oo6bpY3oL09Q/MneYk77xQxXDMhloYJ7SnK 3tU7p9DBi7hGQPQ9nF9O1amFYvtJTZi2xoAVTywlwOt7HWFGvTYbwxxzZQ4MsW/J4L IvUge9gZYC+0A== Received: from mail.finder.org (unknown [192.155.80.58]) by greenhill.hpalace.com (Postfix) with ESMTPSA id D798860A; Tue, 26 Mar 2024 15:34:11 +0000 (UTC) MIME-Version: 1.0 Date: Tue, 26 Mar 2024 08:34:11 -0700 From: Jared Finder To: Juri Linkov Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> Message-ID: X-Sender: jared@finder.org Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 68765 Cc: Eli Zaretskii , 68765@debbugs.gnu.org, Philip Kaludercic , Stefan Monnier X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) It's been four weeks and I've seen no reply to this comment. Are there any other concerns? -- MJF On 2024-02-26 14:38, Jared Finder wrote: > On 2024-02-10 09:25, Juri Linkov wrote: >>>> * lisp/tab-line.el (tab-line-format-template): Add separator space. >>>> (tab-line-display-order): New user variable to control display >>>> order. >>>> (tab-line--runtime-display-order, tab-line--cookie): New internal >>>> variables. >>>> (tab-line-set-display): New function for modes to call to enable >>>> only >>>> their content. >>>> (tab-line-mode): Call `tab-line-set-display'. >>> >>> Juri, would you please review this part of the changeset? >> >> I'm not sure if this provides a clean interface. >> Have you tried to show both window-tool-bar and tab-line tabs >> on the same tab-line? Do you think this combination is usable? >> Or maybe better just repurpose the tab-line in window-tool-bar.el >> exclusively for window-local tool-bar? > > The implementation I provided works fine for me with both > window-tool-bar-mode and tab-line-mode enabled as long as there are not > too many tabs. I could see further adding a way to specify the max > width tabs are able to take up if you think that's necessary. > > -- MJF From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 27 03:20:52 2024 Received: (at 68765) by debbugs.gnu.org; 27 Mar 2024 07:20:52 +0000 Received: from localhost ([127.0.0.1]:35632 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rpNad-00079o-ST for submit@debbugs.gnu.org; Wed, 27 Mar 2024 03:20:52 -0400 Received: from relay5-d.mail.gandi.net ([217.70.183.197]:54979) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rpNac-00079D-1h for 68765@debbugs.gnu.org; Wed, 27 Mar 2024 03:20:50 -0400 Received: by mail.gandi.net (Postfix) with ESMTPSA id 7ADEF1C0006; Wed, 27 Mar 2024 07:20:40 +0000 (UTC) From: Juri Linkov To: Jared Finder Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: (Jared Finder's message of "Tue, 26 Mar 2024 08:34:11 -0700") Organization: LINKOV.NET References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> Date: Wed, 27 Mar 2024 09:04:30 +0200 Message-ID: <86cyrg5hc0.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-Sasl: juri@linkov.net X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 68765 Cc: Eli Zaretskii , 68765@debbugs.gnu.org, Philip Kaludercic , Stefan Monnier X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) >>> I'm not sure if this provides a clean interface. >>> Have you tried to show both window-tool-bar and tab-line tabs >>> on the same tab-line? Do you think this combination is usable? >>> Or maybe better just repurpose the tab-line in window-tool-bar.el >>> exclusively for window-local tool-bar? >> The implementation I provided works fine for me with both >> window-tool-bar-mode and tab-line-mode enabled as long as there are not >> too many tabs. I could see further adding a way to specify the max width >> tabs are able to take up if you think that's necessary. > > It's been four weeks and I've seen no reply to this comment. Are there any > other concerns? Sorry, I didn't know that you expected that I should review your patch - I was silent because your last patch has no changes in tab-line.el, so I have no more objections in this regard. As for combining of tabs and the tool-bar on the tab-line, I don't think this is feasible to achieve a consistent solution. So users have to choose only one feature at a time: whether buffer tabs in the tab-line or the window-local tool-bar. From debbugs-submit-bounces@debbugs.gnu.org Sat Apr 13 03:44:01 2024 Received: (at 68765) by debbugs.gnu.org; 13 Apr 2024 07:44:02 +0000 Received: from localhost ([127.0.0.1]:60014 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rvY3N-0004XP-3k for submit@debbugs.gnu.org; Sat, 13 Apr 2024 03:44:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45058) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rvY3K-0004WI-O6 for 68765@debbugs.gnu.org; Sat, 13 Apr 2024 03:43:59 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rvY34-0003TF-Qj; Sat, 13 Apr 2024 03:43:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=BNceCnMy8/qPjBYyQ7kINpptcU2QFy/Y7IZxC7Oq6MQ=; b=NsnCPixE1UZj oJ27b/gPxPDV7PMBz5clIXdJhnSwz62SvVRqQV/1P+Mf3PKjTiCnF52OoMSlasT3e2AIvoJzHG1Rr Lh7FuI9JwLTKtTmXzZPoUgg3MSw6tArE6vN2BOKovjA26dQ7PikdqUrdyxn1W0sE2zoDiPjZAj1s8 XSfXwiuiiwq7/UscZ1F2hbjcQdHnvDY8kPcoC0m/7KeW6RFwyQTzfNjDmczdkPB3KMZvAlrIcrnAV p8zzJJzZlAQsPtujDG4juAaB5mHpItLLnda772VDjbBtMAJ3Mq6K3OjlfsdpXTi6TiHTkt16kGHWw 7lFKM841LrvyO4LjI0KhUw==; Date: Sat, 13 Apr 2024 10:43:41 +0300 Message-Id: <86h6g5r9le.fsf@gnu.org> From: Eli Zaretskii To: Jared Finder In-Reply-To: <88fb732b480d7a33ed1464d40127c3fc@finder.org> (message from Jared Finder on Tue, 26 Mar 2024 08:33:22 -0700) Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. References: <6c2e5fe5d3439f0a3696f86bd99bbb7b@finder.org> <88fb732b480d7a33ed1464d40127c3fc@finder.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Ping! How should we make progress with this issue? > Date: Tue, 26 Mar 2024 08:33:22 -0700 > From: Jared Finder > Cc: 68765@debbugs.gnu.org > > It's been four weeks and I've seen no reply to these updated patches. > Are you able to review? > > On 2024-02-26 19:02, Jared Finder wrote: > > On 2024-02-11 12:51, Philip Kaludercic wrote: > >> Here are a few comments from a quick skim: > > > > Comments addressed. New patches for 0002 and 0003 added. I also > > addressed Eli's comments from > > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=68765#10 as well. > > > > The following comment was not addressed: > > > >>> +(defun window-tool-bar-show-memory-use () > >>> + "Pop up a window showing the memory use metrics." > >>> + (interactive) > >>> + (require 'time-stamp) > >>> + (save-selected-window > >>> + (pop-to-buffer "*WTB Memory Report*") > >> > >> I think you should rewrite this as > >> > >> (with-current-buffer (get-buffer "...") > >> ;; ... > >> (pop-to-buffer (current-buffer)) > > > > I couldn't make this change and keep the current behavior that is > > important to me: > > > > 1. The window with focus should not change. > > 2. The buffer should get scrolled to the bottom to displayed the newly > > inserted text. > > > > -- MJF > From debbugs-submit-bounces@debbugs.gnu.org Sat Apr 27 04:26:34 2024 Received: (at 68765) by debbugs.gnu.org; 27 Apr 2024 08:26:34 +0000 Received: from localhost ([127.0.0.1]:38871 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s0dOC-0006Ws-Dp for submit@debbugs.gnu.org; Sat, 27 Apr 2024 04:26:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45980) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s0dOA-0006VQ-9p for 68765@debbugs.gnu.org; Sat, 27 Apr 2024 04:26:31 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s0dNl-00014b-PP; Sat, 27 Apr 2024 04:26:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=c9CFitdc9cVtlFyvwdzv0yY6EZWks/mse097Ne87nrk=; b=Tw1fZI00Yk7U hfdeJWUmvtBPnvRBvS9cI6mVty1ctdUEAmvmz3isv18zCaCeCopF8rUbatHyq5HDSHKwV3+vpylGF XuACWSSE7dBn23bXEnFatpF7EXJemzsPRMvHfNviXSFwRgdqgI+u80CYuuT9A2JN55rhy8uzw5N6L 0V8MmlLVcJS4FJVZbv9UtXglwKACdD1ryYsmM8iwtyCrmj3AaRqP/k6KNe58wP14wg13DbOoS9QqP 9S34n/wqeteEBj6tZuqBLcmtS/kaeAPE+8cAlKQ06/4X3dFzU4wtXLXVLoQlbbcun3TiKiJvV+VKP BSTa/+SNy1N6n9YZoIJAZQ==; Date: Sat, 27 Apr 2024 11:25:59 +0300 Message-Id: <86sez7w6so.fsf@gnu.org> From: Eli Zaretskii To: Eli Zaretskii In-Reply-To: <86h6g5r9le.fsf@gnu.org> (message from Eli Zaretskii on Sat, 13 Apr 2024 10:43:41 +0300) Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. References: <6c2e5fe5d3439f0a3696f86bd99bbb7b@finder.org> <88fb732b480d7a33ed1464d40127c3fc@finder.org> <86h6g5r9le.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, jared@finder.org, 68765@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Ping! Ping! Philip and Jared, are there any issues left to resolve here, or should this be installed? > Cc: philipk@posteo.net, 68765@debbugs.gnu.org > Date: Sat, 13 Apr 2024 10:43:41 +0300 > From: Eli Zaretskii > > Ping! How should we make progress with this issue? > > > Date: Tue, 26 Mar 2024 08:33:22 -0700 > > From: Jared Finder > > Cc: 68765@debbugs.gnu.org > > > > It's been four weeks and I've seen no reply to these updated patches. > > Are you able to review? > > > > On 2024-02-26 19:02, Jared Finder wrote: > > > On 2024-02-11 12:51, Philip Kaludercic wrote: > > >> Here are a few comments from a quick skim: > > > > > > Comments addressed. New patches for 0002 and 0003 added. I also > > > addressed Eli's comments from > > > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=68765#10 as well. > > > > > > The following comment was not addressed: > > > > > >>> +(defun window-tool-bar-show-memory-use () > > >>> + "Pop up a window showing the memory use metrics." > > >>> + (interactive) > > >>> + (require 'time-stamp) > > >>> + (save-selected-window > > >>> + (pop-to-buffer "*WTB Memory Report*") > > >> > > >> I think you should rewrite this as > > >> > > >> (with-current-buffer (get-buffer "...") > > >> ;; ... > > >> (pop-to-buffer (current-buffer)) > > > > > > I couldn't make this change and keep the current behavior that is > > > important to me: > > > > > > 1. The window with focus should not change. > > > 2. The buffer should get scrolled to the bottom to displayed the newly > > > inserted text. > > > > > > -- MJF > > > > > > From debbugs-submit-bounces@debbugs.gnu.org Sat Apr 27 06:01:20 2024 Received: (at 68765) by debbugs.gnu.org; 27 Apr 2024 10:01:21 +0000 Received: from localhost ([127.0.0.1]:38977 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s0eri-0006kb-00 for submit@debbugs.gnu.org; Sat, 27 Apr 2024 06:01:20 -0400 Received: from mout01.posteo.de ([185.67.36.65]:51345) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s0erQ-0006ed-6u for 68765@debbugs.gnu.org; Sat, 27 Apr 2024 06:01:03 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 2493A240027 for <68765@debbugs.gnu.org>; Sat, 27 Apr 2024 12:00:23 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1714212023; bh=vwSMdRTeimsVZHViMMwSp4gHCqKUIGRpiGW0L04Mhdc=; h=From:To:Cc:Subject:OpenPGP:Date:Message-ID:MIME-Version: Content-Type:From; b=BavitXjpNti0zhwMOlrHFPE0kZ40TrVpF/+r5jCxJqTlzDvahVS5aMxJimtLj0h19 fCF0yfjheJtp7sa5TPaxGnohTjYlukuPw7HDcSs+dSHwK0ZW0xB9ak//zHCRbZCm4M aCHzOL7Hm7tOlKpGKlXI1DG73noR0p7XrX2NBgXjTBALCdiyzpG5SMjubUX7hgjM1+ yhH62KYXU1FE5ESo+0ygYKCcquanVugOVkePajU7T1SRoGnjT2LX6tpJHIg9+vWhWn bKGEAQmLOOJLwI1Il/kfd79r8vWzpBPjfHImyr+9JPvEVqjqCmP3h2jYjP7wYLvETU vQwdFSy/1m4OQ== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4VRQ7p2cRYz9rxK; Sat, 27 Apr 2024 12:00:22 +0200 (CEST) From: Philip Kaludercic To: Jared Finder Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <6c2e5fe5d3439f0a3696f86bd99bbb7b@finder.org> (Jared Finder's message of "Mon, 26 Feb 2024 19:02:06 -0800") References: <07df5e8408054bcae5968066b0cebf34@finder.org> <6c2e5fe5d3439f0a3696f86bd99bbb7b@finder.org> OpenPGP: id=7126E1DE2F0CE35C770BED01F2C3CC513DB89F66; url="https://keys.openpgp.org/vks/v1/by-fingerprint/7126E1DE2F0CE35C770BED01F2C3CC513DB89F66"; preference=signencrypt Date: Sat, 27 Apr 2024 10:00:21 +0000 Message-ID: <87zftfqg5m.fsf@posteo.net> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765 Cc: Eli Zaretskii , 68765@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: > Ping! Ping! Philip and Jared, are there any issues left to resolve > here, or should this be installed? Sorry for the delay, I'm going to comment below. [...] Jared Finder writes: > It's been four weeks and I've seen no reply to these updated patches. > Are you able to review? Likewise, my apologies, the messages got lost in my backlog that I am currently trying to make up. Jared Finder writes: > Comments addressed. New patches for 0002 and 0003 added. I also > addressed Eli's comments from > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=68765#10 as well. > > The following comment was not addressed: > >>> +(defun window-tool-bar-show-memory-use () >>> + "Pop up a window showing the memory use metrics." >>> + (interactive) >>> + (require 'time-stamp) >>> + (save-selected-window >>> + (pop-to-buffer "*WTB Memory Report*") >> I think you should rewrite this as >> (with-current-buffer (get-buffer "...") >> ;; ... >> (pop-to-buffer (current-buffer)) > > I couldn't make this change and keep the current behavior that is > important to me: > > 1. The window with focus should not change. > 2. The buffer should get scrolled to the bottom to displayed the newly > inserted text. Ok. > -- MJF > > From 622c11c6f314355b0e742fcbcbcc8ae51661bca0 Mon Sep 17 00:00:00 2001 > From: Jared Finder > Date: Fri, 26 Jan 2024 10:08:30 -0800 > Subject: [PATCH 2/3] Add user option to only display default tool bar > > This works well with `window-tool-bar-mode', to be added in upcoming > commit. Then the default tool bar is displayed frame-wide and > mode-specific tool bars are displayed in the window that mode is > active in. > > * lisp/tool-bar.el (tool-bar-always-show-default): New user option. > (tool-bar--cache-key, tool-bar-make-keymap-1): Return default tool bar > when option is set. > --- > lisp/tool-bar.el | 17 +++++++++++++++-- > 1 file changed, 15 insertions(+), 2 deletions(-) > > diff --git a/lisp/tool-bar.el b/lisp/tool-bar.el > index 96b61c7b229..52d60b32412 100644 > --- a/lisp/tool-bar.el > +++ b/lisp/tool-bar.el > @@ -100,7 +100,9 @@ secondary-tool-bar-map > (defconst tool-bar-keymap-cache (make-hash-table :test #'equal)) > > (defsubst tool-bar--cache-key () > - (cons (frame-terminal) (sxhash-eq tool-bar-map))) > + (cons (frame-terminal) > + (sxhash-eq (if tool-bar-always-show-default (default-value 'tool-bar-map) > + tool-bar-map)))) > > (defsubst tool-bar--secondary-cache-key () > (cons (frame-terminal) (sxhash-eq secondary-tool-bar-map))) > @@ -191,7 +193,9 @@ tool-bar-make-keymap-1 > bind)) > (plist-put plist :image image))) > bind)) > - (or map tool-bar-map))) > + (or map > + (if tool-bar-always-show-default (default-value 'tool-bar-map) > + tool-bar-map)))) > > ;;;###autoload > (defun tool-bar-add-item (icon def key &rest props) > @@ -377,6 +381,15 @@ tool-bar-setup > (modify-all-frames-parameters > (list (cons 'tool-bar-position val)))))) > > +(defcustom tool-bar-always-show-default nil > + "If non-nil, `tool-bar-mode' only shows the default tool bar. > +This works well when also using `global-window-tool-bar-mode' to > +display buffer-specific tool bars." > + :type 'boolean > + :group 'frames > + :group 'mouse > + :version "30.1") > + > No comments from me here. > ;; Modifier bar mode. > -- > 2.39.2 > > > From baf4c81df3e4e82576a8084ae029d56b45750553 Mon Sep 17 00:00:00 2001 > From: Jared Finder > Date: Fri, 26 Jan 2024 15:44:12 -0800 > Subject: [PATCH 3/3] Adding window-tool-bar package > > --- > lisp/window-tool-bar.el | 489 ++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 489 insertions(+) > create mode 100644 lisp/window-tool-bar.el > > diff --git a/lisp/window-tool-bar.el b/lisp/window-tool-bar.el > new file mode 100644 > index 00000000000..eefd6109f7d > --- /dev/null > +++ b/lisp/window-tool-bar.el > @@ -0,0 +1,489 @@ > +;;; window-tool-bar.el --- Add tool bars inside windows -*- lexical-binding: t -*- > + > +;; Copyright (C) 2023-2024 Free Software Foundation, Inc. > + > +;; Author: Jared Finder > +;; Created: Nov 21, 2023 > +;; Version: 0.2 > +;; Keywords: mouse > +;; Package-Requires: ((emacs "29.1")) If the plan is for this to be a core-package, then you should add a comment like ;; This is a GNU ELPA :core package. Avoid adding functionality ;; that is not available in the version of Emacs recorded above or any ;; of the package dependencies. > + > +;; This file is part of GNU Emacs. > + > +;; GNU Emacs is free software; you can redistribute it and/or modify > +;; it under the terms of the GNU General Public License as published by > +;; the Free Software Foundation, either version 3 of the License, or > +;; (at your option) any later version. > + > +;; GNU Emacs is distributed in the hope that it will be useful, > +;; but WITHOUT ANY WARRANTY; without even the implied warranty of > +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +;; GNU General Public License for more details. > + > +;; You should have received a copy of the GNU General Public License > +;; along with GNU Emacs. If not, see . > + > +;;; Commentary: > +;; > +;; This package puts a tool bar in each window. This allows you to see > +;; multiple tool bars simultaneously directly next to the buffer it > +;; acts on which feels much more intuitive. Emacs "browsing" modes > +;; generally have sensible tool bars, for example: *info*, *help*, and > +;; *eww* have them. > +;; > +;; It does this while being mindful of screen real estate. Most modes > +;; do not provide a custom tool bar, and this package does not show the > +;; default tool bar. This means that for most buffers there will be no > +;; space taken up. Furthermore, you can put this tool bar in the mode > +;; line or tab line if you want to share it with existing content. > +;; > +;; To get the default behavior, run (global-window-tool-bar-mode 1) or > +;; enable via M-x customize-group RET window-tool-bar RET. This uses > +;; the per-window tab line to show the tool bar. > +;; > +;; If you want to share space with an existing tab line, mode line, or > +;; header line, add (:eval (window-tool-bar-string)) to > +;; `tab-line-format', `mode-line-format', or `header-line-format'. > + > +;;; Known issues: > +;; > +;; On GNU Emacs 29.1, terminals dragging to resize windows will error > +;; with message " is undefined". This is a > +;; bug in GNU Emacs, > +;; . > +;; > +;; On GNU Emacs 29, performance in terminals is lower than on > +;; graphical frames. This is due to a workaround, see "Workaround for > +;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=68334", below. > + > +;;; Todo: > +;; > +;; Not all features planned are implemented yet. Eventually I would > +;; like to also generally make tool bars better. > +;; > +;; Targeting 0.3: > +;; * Properly support reamining less frequently used tool bar item specs. From > +;; `parse_tool_bar_item': > +;; * :visible > +;; * :filter > +;; * :button > +;; * :wrap > +;; * Add display customization similar to `tool-bar-style'. > +;; > +;; Targeting 1.0: > +;; > +;; * Clean up Emacs tool bars > +;; * Default: Remove default tool-bar entirely > +;; * grep, vc: Remove default tool-bar inherited > +;; * info: Remove Next / Prev / Up, which is already in the header > +;; * smerge: Add tool bar for next/prev > +;; > +;; Post 1.0 work: > +;; > +;; * Show keyboard shortcut on help text. > +;; > +;; * Add a bit more documentation. > +;; * Add customization option: ignore-default-tool-bar-map > +;; * Make tab-line dragging resize the window > + > +;;; Code: > + > +(require 'mwheel) > +(require 'tab-line) > +(require 'tool-bar) > + > +;;; Benchmarking code > +;; > +;; Refreshing the tool bar is computationally simple, but generates a > +;; lot of garbage. So this benchmarking focuses on garbage > +;; generation. Since it has to run after most commands, generating > +;; significantly more garbage will cause noticeable performance > +;; degration. > +;; > +;; The refresh has two steps: > +;; > +;; Step 1: Look up the map. > +;; Step 2: Generate a Lisp string using text properties for the tool > +;; bar string. > +;; > +;; Additionally, we keep track of the percentage of commands that > +;; acutally created a refresh. > +(defvar window-tool-bar--memory-use-delta-step1 (make-list 7 0) > + "Absolute delta of memory use counters during step 1. > +This is a list in the same structure as `memory-use-counts'.") > +(defvar window-tool-bar--memory-use-delta-step2 (make-list 7 0) > + "Absolute delta of memory use counters during step 2. > +This is a list in the same structure as `memory-use-counts'.") > +(defvar window-tool-bar--refresh-done-count 0 > + "Number of tool bar string refreshes run. > +The total number of requests is the sum of this and > +`window-tool-bar--refresh-skipped-count'.") > +(defvar window-tool-bar--refresh-skipped-count 0 > + "Number of tool bar string refreshes that were skipped. > +The total number of requests is the sum of this and > +`window-tool-bar--refresh-done-count'.") > + > +(defun window-tool-bar--memory-use-avg-step1 () > + "Return average memory use delta during step 1." > + (mapcar (lambda (elt) (/ elt window-tool-bar--refresh-done-count 1.0)) > + window-tool-bar--memory-use-delta-step1)) > + > +(defun window-tool-bar--memory-use-avg-step2 () > + "Return average memory use delta during step 2." > + (mapcar (lambda (elt) (/ (float elt) window-tool-bar--refresh-done-count)) > + window-tool-bar--memory-use-delta-step2)) > + > +(declare-function time-stamp-string "time-stamp") > + > +(defun window-tool-bar-debug-show-memory-use () > + "Development-only command to show memory used by `window-tool-bar-string'." > + (interactive) > + (require 'time-stamp) > + (save-selected-window > + (pop-to-buffer "*WTB Memory Report*") > + (unless (eq major-mode 'special-mode) You should explain what is going on here, and why you are checking major-mode instead of using derived-mode-p. > + (special-mode)) > + > + (goto-char (point-max)) > + (let ((inhibit-read-only t)) > + (insert (propertize (concat "Function: window-tool-bar-string " > + (time-stamp-string)) > + 'face 'underline 'font-lock-face 'underline) > + "\n\n") > + (window-tool-bar--insert-memory-use > + "Step 1" (window-tool-bar--memory-use-avg-step1)) > + (window-tool-bar--insert-memory-use > + "Step 2" (window-tool-bar--memory-use-avg-step2)) > + (insert (format "Refresh count %d\n" window-tool-bar--refresh-done-count) > + (format "Refresh executed percent %.2f\n" > + (/ window-tool-bar--refresh-done-count > + (+ window-tool-bar--refresh-done-count > + window-tool-bar--refresh-skipped-count) > + 1.0)) I don't know if there is any significant difference between (/ a b 1.0) and (/ a (float b)), but interesting they have the same number of bytecode instructions and funcalls: (disassemble (byte-compile (lambda (a b) (/ a b 1.0)))) byte code: doc: ... args: (arg1 arg2) 0 constant / 1 stack-ref 2 2 stack-ref 2 3 constant 1.0 4 call 3 5 return (disassemble (byte-compile (lambda (a b) (/ a (float b))))) byte code: doc: ... args: (arg1 arg2) 0 stack-ref 1 1 constant float 2 stack-ref 2 3 call 1 4 quo 5 return > + "\n")))) > + > +(defun window-tool-bar--insert-memory-use (label avg-memory-use) > + "Insert memory use into current buffer. > + > +LABEL: A prefix string to be in front of the data. > +AVG-MEMORY-USE: A list of averages, with the same meaning as > + `memory-use-counts'." The formatting is somewhat unconventional and can easily be broken using M-q. > + (let* ((label-len (length label)) > + (padding (make-string label-len ?\s))) > + (cl-loop for usage in avg-memory-use > + for usage-label in '("Conses" "Floats" "Vector cells" "Symbols" > + "String chars" "Intervals" "Strings") > + for idx from 0 > + do (insert (format "%s %8.2f %s\n" > + (if (= idx 0) label padding) > + usage > + usage-label))))) > + > +(defgroup window-tool-bar nil > + "Tool bars per-window." > + :group 'convenience > + :prefix "window-tool-bar-") > + > +(defvar-keymap window-tool-bar--button-keymap > + :doc "Keymap used by `window-tool-bar--keymap-entry-to-string'." > + "" 'mouse-face > + ;; Follow link on all clicks of mouse-1 and mouse-2 since the tool > + ;; bar is not a place the point can travel to. > + " " #'window-tool-bar--call-button > + " " #'window-tool-bar--call-button > + " " #'window-tool-bar--call-button > + " " #'window-tool-bar--call-button > + " " #'window-tool-bar--call-button > + " " #'window-tool-bar--call-button > + > + ;; Mouse down events do nothing. A binding is needed so isearch > + ;; does not exit when the tab bar is clicked. > + " " #'window-tool-bar--ignore > + " " #'window-tool-bar--ignore > + " " #'window-tool-bar--ignore > + " " #'window-tool-bar--ignore > + " " #'window-tool-bar--ignore > + " " #'window-tool-bar--ignore) > +(fset 'window-tool-bar--button-keymap window-tool-bar--button-keymap) ; So it can be a keymap property > + > +;; Register bindings that stay in isearch. Technically, these > +;; commands don't pop up a menu but they act very similar in that they > +;; end up calling an actual command via `call-interactively'. > +(push 'window-tool-bar--call-button isearch-menu-bar-commands) > +(push 'window-tool-bar--ignore isearch-menu-bar-commands) > + > +(defvar-local window-tool-bar-string--cache nil > + "Cache for previous result of `window-tool-bar-string'.") > + > +;;;###autoload > +(defun window-tool-bar-string () > + "Return a (propertized) string for the tool bar. > + > +This is for when you want more customizations than > +`window-tool-bar-mode' provides. Commonly added to the variable > +`tab-line-format', `header-line-format', or `mode-line-format'" > + (if (or (null window-tool-bar-string--cache) > + (window-tool-bar--last-command-triggers-refresh-p)) > + (let* ((mem0 (memory-use-counts)) > + (toolbar-menu (window-tool-bar--get-keymap)) > + (mem1 (memory-use-counts)) > + (result (mapconcat #'window-tool-bar--keymap-entry-to-string > + (cdr toolbar-menu) ;Skip 'keymap > + ;; Without spaces between the text, hovering > + ;; highlights all adjacent buttons. > + (if (window-tool-bar--use-images) > + (propertize " " 'invisible t) > + " "))) > + (mem2 (memory-use-counts))) > + (cl-mapl (lambda (l-init l0 l1) > + (cl-incf (car l-init) (- (car l1) (car l0)))) > + window-tool-bar--memory-use-delta-step1 mem0 mem1) > + (cl-mapl (lambda (l-init l1 l2) > + (cl-incf (car l-init) (- (car l2) (car l1)))) > + window-tool-bar--memory-use-delta-step2 mem1 mem2) > + > + (setf window-tool-bar-string--cache > + (concat > + ;; The tool bar face by default puts boxes around the > + ;; buttons. However, this box is not displayed if the > + ;; box starts at the leftmost pixel of the tab-line. > + ;; Add a single space in this case so the box displays > + ;; correctly. > + (when (display-supports-face-attributes-p I'd use `and' here, instead of `when', since the evaluation result is of interest. > + '(:box (line-width 1))) > + (propertize " " 'display '(space :width (1)))) > + result)) > + (cl-incf window-tool-bar--refresh-done-count)) > + (cl-incf window-tool-bar--refresh-skipped-count)) > + > + window-tool-bar-string--cache) > + > +(defconst window-tool-bar--graphical-separator > + (let ((str (make-string 3 ?\s))) > + (set-text-properties 0 1 '(display (space :width (4))) str) > + (set-text-properties 1 2 > + '(display (space :width (1)) > + face (:inverse-video t)) > + str) > + (set-text-properties 2 3 '(display (space :width (4))) str) > + str)) This should be equivalent to (concat (propertize " " 'display '(space :width (4))) (propertize " " 'display '(space :width (1)) 'face '(:inverse-video t)) (propertize " " 'display '(space :width (4)))) right? > + > +(defun window-tool-bar--keymap-entry-to-string (menu-item) > + "Convert MENU-ITEM into a (propertized) string representation. > + > +MENU-ITEM: Menu item to convert. See info node (elisp)Tool Bar." > + (pcase menu-item pcase or pcase-exhaustive? > + ;; Separators > + ((or `(,_ "--") > + `(,_ menu-item ,(and (pred stringp) > + (pred (string-prefix-p "--"))))) > + (if (window-tool-bar--use-images) > + window-tool-bar--graphical-separator > + "|")) > + > + ;; Menu item, turn into propertized string button > + (`(,key menu-item ,name-expr ,binding . ,plist) > + (when binding ; If no binding exists, then button is hidden. > + (let* ((name (eval name-expr)) > + (str (upcase-initials (or (plist-get plist :label) > + (string-trim-right name "\\.+")))) > + (len (length str)) > + (enable-form (plist-get plist :enable)) > + (enabled (or (not enable-form) > + (eval enable-form)))) > + (if enabled > + (add-text-properties 0 len > + '(mouse-face window-tool-bar-button-hover > + keymap window-tool-bar--button-keymap > + face window-tool-bar-button) > + str) > + (put-text-property 0 len > + 'face > + 'window-tool-bar-button-disabled > + str)) > + (when-let ((spec (and (window-tool-bar--use-images) > + (plist-get menu-item :image)))) > + (put-text-property 0 len > + 'display > + (append spec > + (if enabled '(:margin 2 :ascent center) > + '(:margin 2 :ascent center > + :conversion disabled))) > + str)) > + (put-text-property 0 len > + 'help-echo > + (or (plist-get plist :help) name) > + str) > + (put-text-property 0 len 'tool-bar-key key str) > + str))))) > + > +(defun window-tool-bar--call-button () > + "Call the button that was clicked on in the tab line." > + (interactive) > + (when (mouse-event-p last-command-event) > + (let ((posn (event-start last-command-event))) > + ;; Commands need to execute with the right buffer and window > + ;; selected. The selection needs to be permanent for isearch. > + (select-window (posn-window posn)) > + (let* ((str (posn-string posn)) > + (key (get-text-property (cdr str) 'tool-bar-key (car str))) > + (cmd (lookup-key (window-tool-bar--get-keymap) (vector key)))) > + (call-interactively cmd))))) > + > +(defun window-tool-bar--ignore () > + "Do nothing. This command exists for isearch." Can you elaborate? Why not just use the existing ignore? Or defaliasing it? > + (interactive) > + nil) > + > +(defvar window-tool-bar--ignored-event-types > + (let ((list (list 'mouse-movement 'pinch > + 'wheel-down 'wheel-up 'wheel-left 'wheel-right > + mouse-wheel-down-event mouse-wheel-up-event > + mouse-wheel-left-event mouse-wheel-right-event > + (bound-and-true-p mouse-wheel-down-alternate-event) > + (bound-and-true-p mouse-wheel-up-alternate-event) > + (bound-and-true-p mouse-wheel-left-alternate-event) > + (bound-and-true-p mouse-wheel-right-alternate-event)))) > + (delete-dups (delete nil list))) > + "Cache for `window-tool-bar--last-command-triggers-refresh-p'.") > + > +(defun window-tool-bar--last-command-triggers-refresh-p () > + "Test if the recent command or event should trigger a tool bar refresh." > + (let ((type (event-basic-type last-command-event))) > + (and > + ;; Assume that key presses and button presses are the only user > + ;; interactions that can alter the tool bar. Specifically, this > + ;; excludes mouse movement, mouse wheel scroll, and pinch. > + (not (member type window-tool-bar--ignored-event-types)) > + ;; Assume that any command that triggers shift select can't alter > + ;; the tool bar. This excludes pure navigation commands. > + (not (window-tool-bar--command-triggers-shift-select-p last-command)) > + ;; Assume that self-insert-command won't alter the tool bar. > + ;; This is the most commonly executed command. > + (not (eq last-command 'self-insert-command))))) > + > +(defun window-tool-bar--command-triggers-shift-select-p (command) > + "Test if COMMAND would trigger shift select." > + (let* ((form (interactive-form command)) > + (spec (car-safe (cdr-safe form)))) > + (and (eq (car-safe form) 'interactive) > + (stringp spec) > + (seq-position spec ?^)))) > + > +;;;###autoload > +(define-minor-mode window-tool-bar-mode > + "Toggle display of the tool bar in the tab line of the current buffer." > + :lighter nil There is no lighter by default, I prefer writing :global nil, to make it explicit to the reader that this is a local minor mode. > + (let ((should-display (and window-tool-bar-mode > + (not (eq tool-bar-map > + (default-value 'tool-bar-map)))))) > + (if (fboundp 'tab-line-set-display) > + ;; Newly added function for Emacs 30. > + (tab-line-set-display 'window-tool-bar-mode > + (and should-display > + '(:eval (window-tool-bar-string)))) > + ;; Legacy path for Emacs 29. > + (setq tab-line-format > + (and should-display > + '(:eval (window-tool-bar-string))))))) > + > +;;;###autoload > +(define-globalized-minor-mode global-window-tool-bar-mode > + window-tool-bar-mode window-tool-bar--turn-on > + :group 'window-tool-bar > + (add-hook 'isearch-mode-hook #'window-tool-bar--turn-on) > + (add-hook 'isearch-mode-end-hook #'window-tool-bar--turn-on)) > + > +(defvar window-tool-bar--allow-images t > + "Internal debug flag to force text mode.") > + > +(defun window-tool-bar--use-images () > + "Internal function. > +Respects `window-tool-bar--allow-images' as well as frame > +capabilities." > + (and window-tool-bar--allow-images > + (display-images-p))) > + > +;;; Display styling: > +(defface window-tool-bar-button > + '((default > + :inherit tab-line) > + (((class color) (min-colors 88) (supports :box t)) > + :box (:line-width -1 :style released-button) > + :background "grey85") > + ;; If the box is not supported, dim the button background a bit. > + (((class color) (min-colors 88)) > + :background "grey70") > + (t > + :inverse-video t)) > + "Face used for buttons when the mouse is not hovering over the button." > + :group 'window-tool-bar) > + > +(defface window-tool-bar-button-hover > + '((default > + :inherit tab-line) > + (((class color) (min-colors 88)) > + :box (:line-width -1 :style released-button) > + :background "grey95") > + (t > + :inverse-video t)) > + "Face used for buttons when the mouse is hovering over the button." > + :group 'window-tool-bar) > + > +(defface window-tool-bar-button-disabled > + '((default > + :inherit tab-line) > + (((class color) (min-colors 88)) > + :box (:line-width -1 :style released-button) > + :background "grey50" > + :foreground "grey70") > + (t > + :inverse-video t > + :background "brightblack")) > + "Face used for buttons when the button is disabled." > + :group 'window-tool-bar) > + > +;;; Workaround for https://debbugs.gnu.org/cgi/bugreport.cgi?bug=68334. > +(defun window-tool-bar--get-keymap () > + "Return the tool bar keymap." > + (let ((tool-bar-always-show-default nil)) > + (if (and (version< emacs-version "30") > + (not (window-tool-bar--use-images))) > + ;; This code path is a less efficient workaround. > + (window-tool-bar--make-keymap-1) > + (keymap-global-lookup "")))) > + > +(declare-function image-mask-p "image.c" (spec &optional frame)) > + > +(defun window-tool-bar--make-keymap-1 () > + "Patched copy of `tool-bar-make-keymap-1'." > + (mapcar (lambda (bind) > + (let (image-exp plist) > + (when (and (eq (car-safe (cdr-safe bind)) 'menu-item) > + ;; For the format of menu-items, see node > + ;; `Extended Menu Items' in the Elisp manual. > + (setq plist (nthcdr (if (consp (nth 4 bind)) 5 4) > + bind)) > + (setq image-exp (plist-get plist :image)) > + (consp image-exp) > + (not (eq (car image-exp) 'image)) > + (fboundp (car image-exp))) > + (let ((image (and (display-images-p) > + (eval image-exp)))) > + (unless (and image (image-mask-p image)) > + (setq image (append image '(:mask heuristic)))) > + (setq bind (copy-sequence bind) > + plist (nthcdr (if (consp (nth 4 bind)) 5 4) > + bind)) > + (plist-put plist :image image))) > + bind)) > + tool-bar-map)) > + > +(defun window-tool-bar--turn-on () > + "Internal function called by `global-window-tool-bar-mode'." > + (when global-window-tool-bar-mode > + (window-tool-bar-mode 1))) > + > +(provide 'window-tool-bar) > + > +;;; window-tool-bar.el ends here Hope this was of use. -- Philip Kaludercic on peregrine From debbugs-submit-bounces@debbugs.gnu.org Sun Apr 28 00:44:57 2024 Received: (at 68765) by debbugs.gnu.org; 28 Apr 2024 04:44:57 +0000 Received: from localhost ([127.0.0.1]:49959 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s0wPH-0000AB-Lq for submit@debbugs.gnu.org; Sun, 28 Apr 2024 00:44:57 -0400 Received: from greenhill.hpalace.com ([192.155.80.58]:38422) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s0wPE-0000A5-NA for 68765@debbugs.gnu.org; Sun, 28 Apr 2024 00:44:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=finder.org; s=2018; t=1714279472; bh=b4yNvrddN8/FXmm2psg+k4Z0ocRBmvLdHKTxJ2M5UG8=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=a2GSj2pl24NiRZ0AlfUi721JGb4RYVjEV2W/2PmSejodXvfnBiYrLCkHdAuvyTJ4p 0cbE2DD358ln+ylob4ZTAUPGN2Ca7/LI0qTAVXlcQWWvxTnYctb9tVj175/q1jYVf/ L/f0bIyA6dNnjW1J+jg9kBkeqzjMWvzXlOW8Api8rzqu7puzZ/jlGWTIikcCMOafeD ZMpDwqA9OoqbfzLG7kHHahzwTytvx0QiZMemLcsp3KPI/okkkVwz1z3aLiyd3XVpWQ pNwnoaQSoXekNoOGgHj+8cIvopEIr0wzxnnc4DAh+8L+S1ie19kS2bfpkXEAyX01xu I5xwroAAzMY6g== Received: from mail.finder.org (unknown [192.155.80.58]) by greenhill.hpalace.com (Postfix) with ESMTPSA id 9D728774; Sun, 28 Apr 2024 04:44:32 +0000 (UTC) MIME-Version: 1.0 Date: Sat, 27 Apr 2024 21:44:32 -0700 From: Jared Finder To: Philip Kaludercic Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <87zftfqg5m.fsf@posteo.net> References: <07df5e8408054bcae5968066b0cebf34@finder.org> <6c2e5fe5d3439f0a3696f86bd99bbb7b@finder.org> <87zftfqg5m.fsf@posteo.net> Message-ID: <0a795299774dce305b7447542802e406@finder.org> X-Sender: jared@finder.org Content-Type: multipart/mixed; boundary="=_e5632d0cfc62a648b7facac2172acc71" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 68765 Cc: Eli Zaretskii , 68765@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=_e5632d0cfc62a648b7facac2172acc71 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2024-04-27 03:00, Philip Kaludercic wrote: > Eli Zaretskii writes: > >> Ping! Ping! Philip and Jared, are there any issues left to resolve >> here, or should this be installed? > > Sorry for the delay, I'm going to comment below. I addressed all feedback provided. Updated patch for just 0003 attached since that's where all the feedback was. Let me know if this looks good. > ... partial patch elided ... >> +(defun window-tool-bar-debug-show-memory-use () >> + "Development-only command to show memory used by >> `window-tool-bar-string'." >> + (interactive) >> + (require 'time-stamp) >> + (save-selected-window >> + (pop-to-buffer "*WTB Memory Report*") >> + (unless (eq major-mode 'special-mode) > > You should explain what is going on here, and why you are checking > major-mode instead of using derived-mode-p. I changed this to call derived-mode-p. The intent is to put the buffer into special-mode and also avoid unnecessarily calling special-mode. >> + (special-mode)) >> + ... partial patch elided ... >> + (insert (format "Refresh count %d\n" >> window-tool-bar--refresh-done-count) >> + (format "Refresh executed percent %.2f\n" >> + (/ window-tool-bar--refresh-done-count >> + (+ window-tool-bar--refresh-done-count >> + window-tool-bar--refresh-skipped-count) >> + 1.0)) > > I don't know if there is any significant difference between (/ a b 1.0) > and (/ a (float b)), but interesting they have the same number of > bytecode instructions and funcalls: I changed this and other places where I was dividing by 1.0 to force floating point division to instead do (float a) on the first parameter. It sounds like that's more idiomatic. >> + "\n")))) >> + >> +(defun window-tool-bar--insert-memory-use (label avg-memory-use) >> + "Insert memory use into current buffer. >> + >> +LABEL: A prefix string to be in front of the data. >> +AVG-MEMORY-USE: A list of averages, with the same meaning as >> + `memory-use-counts'." > > The formatting is somewhat unconventional and can easily be broken > using M-q. Addressed here and other places I used this convention. >> +(defun window-tool-bar--ignore () >> + "Do nothing. This command exists for isearch." > > Can you elaborate? Why not just use the existing ignore? Or > defaliasing it? There's a lot of detailed comments around usage of this command, see comments around window-tool-bar--button-keymap. I also added a bit more context to the docstring here. In brief, this command exists so that isearch does not exit when you click on isearch tool bar buttons. This is needed for window tool bar buttons since they are called by Emacs' usual mouse event bindings, unlike toolkit tool bars. I can't use ignore because it does not have the special registration with isearch, specifically ignore is not a member of isearch-menu-bar-commands. I did not feel safe changing all existing uses of ignore. >> + (let ((type (event-basic-type last-command-event))) ... partial patch elided ... >> +;;;###autoload >> +(define-minor-mode window-tool-bar-mode >> + "Toggle display of the tool bar in the tab line of the current >> buffer." >> + :lighter nil > > There is no lighter by default, I prefer writing :global nil, to make > it > explicit to the reader that this is a local minor mode. Thanks, changed. Can you update define-minor-mode's docstring to guide others in the right direction? I only passed :lighter nil because that was the example given by define-minor-mode's docstring, "If you provide BODY, then you must provide at least one keyword argument (e.g. `:lighter nil')". >> + (let ((should-display (and window-tool-bar-mode ... partial patch elided ... >> +;;; window-tool-bar.el ends here > > Hope this was of use. Thank you for the thorough review! -- MJF --=_e5632d0cfc62a648b7facac2172acc71 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0003-Adding-window-tool-bar-package.patch Content-Disposition: attachment; filename=0003-Adding-window-tool-bar-package.patch; size=21545 RnJvbSAwMjE2YzliZTRiZDI3ZTg0YjA1MTgxZGYwNWRlMWVhNTVlZmE0MTM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+CkRhdGU6 IEZyaSwgMjYgSmFuIDIwMjQgMTU6NDQ6MTIgLTA4MDAKU3ViamVjdDogW1BBVENIIDMvM10gQWRk aW5nIHdpbmRvdy10b29sLWJhciBwYWNrYWdlCgotLS0KIGxpc3Avd2luZG93LXRvb2wtYmFyLmVs IHwgNDg5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBj aGFuZ2VkLCA0ODkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpc3Avd2luZG93 LXRvb2wtYmFyLmVsCgpkaWZmIC0tZ2l0IGEvbGlzcC93aW5kb3ctdG9vbC1iYXIuZWwgYi9saXNw L3dpbmRvdy10b29sLWJhci5lbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uZjM0MTA1NzZkYTgKLS0tIC9kZXYvbnVsbAorKysgYi9saXNwL3dpbmRvdy10b29sLWJhci5l bApAQCAtMCwwICsxLDQ4OSBAQAorOzs7IHdpbmRvdy10b29sLWJhci5lbCAtLS0gQWRkIHRvb2wg YmFycyBpbnNpZGUgd2luZG93cyAtKi0gbGV4aWNhbC1iaW5kaW5nOiB0IC0qLQorCis7OyBDb3B5 cmlnaHQgKEMpIDIwMjMtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworOzsg QXV0aG9yOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+Cis7OyBDcmVhdGVkOiBOb3Yg MjEsIDIwMjMKKzs7IFZlcnNpb246IDAuMgorOzsgS2V5d29yZHM6IG1vdXNlCis7OyBQYWNrYWdl LVJlcXVpcmVzOiAoKGVtYWNzICIyOS4xIikpCisKKzs7IFRoaXMgaXMgYSBHTlUgRUxQQSA6Y29y ZSBwYWNrYWdlLiAgQXZvaWQgYWRkaW5nIGZ1bmN0aW9uYWxpdHkgdGhhdAorOzsgaXMgbm90IGF2 YWlsYWJsZSBpbiB0aGUgdmVyc2lvbiBvZiBFbWFjcyByZWNvcmRlZCBhYm92ZSBvciBhbnkgb2YK Kzs7IHRoZSBwYWNrYWdlIGRlcGVuZGVuY2llcy4KKworOzsgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg R05VIEVtYWNzLgorCis7OyBHTlUgRW1hY3MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorOzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKzs7IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCis7 OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCis7OyBHTlUgRW1hY3MgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKzs7IGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Cis7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCis7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorCis7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKzs7OyBDb21tZW50YXJ5OgorOzsKKzs7 IFRoaXMgcGFja2FnZSBwdXRzIGEgdG9vbCBiYXIgaW4gZWFjaCB3aW5kb3cuICBUaGlzIGFsbG93 cyB5b3UgdG8gc2VlCis7OyBtdWx0aXBsZSB0b29sIGJhcnMgc2ltdWx0YW5lb3VzbHkgZGlyZWN0 bHkgbmV4dCB0byB0aGUgYnVmZmVyIGl0Cis7OyBhY3RzIG9uIHdoaWNoIGZlZWxzIG11Y2ggbW9y ZSBpbnR1aXRpdmUuICBFbWFjcyAiYnJvd3NpbmciIG1vZGVzCis7OyBnZW5lcmFsbHkgaGF2ZSBz ZW5zaWJsZSB0b29sIGJhcnMsIGZvciBleGFtcGxlOiAqaW5mbyosICpoZWxwKiwgYW5kCis7OyAq ZXd3KiBoYXZlIHRoZW0uCis7OworOzsgSXQgZG9lcyB0aGlzIHdoaWxlIGJlaW5nIG1pbmRmdWwg b2Ygc2NyZWVuIHJlYWwgZXN0YXRlLiAgTW9zdCBtb2RlcworOzsgZG8gbm90IHByb3ZpZGUgYSBj dXN0b20gdG9vbCBiYXIsIGFuZCB0aGlzIHBhY2thZ2UgZG9lcyBub3Qgc2hvdyB0aGUKKzs7IGRl ZmF1bHQgdG9vbCBiYXIuICBUaGlzIG1lYW5zIHRoYXQgZm9yIG1vc3QgYnVmZmVycyB0aGVyZSB3 aWxsIGJlIG5vCis7OyBzcGFjZSB0YWtlbiB1cC4gIEZ1cnRoZXJtb3JlLCB5b3UgY2FuIHB1dCB0 aGlzIHRvb2wgYmFyIGluIHRoZSBtb2RlCis7OyBsaW5lIG9yIHRhYiBsaW5lIGlmIHlvdSB3YW50 IHRvIHNoYXJlIGl0IHdpdGggZXhpc3RpbmcgY29udGVudC4KKzs7Cis7OyBUbyBnZXQgdGhlIGRl ZmF1bHQgYmVoYXZpb3IsIHJ1biAoZ2xvYmFsLXdpbmRvdy10b29sLWJhci1tb2RlIDEpIG9yCis7 OyBlbmFibGUgdmlhIE0teCBjdXN0b21pemUtZ3JvdXAgUkVUIHdpbmRvdy10b29sLWJhciBSRVQu ICBUaGlzIHVzZXMKKzs7IHRoZSBwZXItd2luZG93IHRhYiBsaW5lIHRvIHNob3cgdGhlIHRvb2wg YmFyLgorOzsKKzs7IElmIHlvdSB3YW50IHRvIHNoYXJlIHNwYWNlIHdpdGggYW4gZXhpc3Rpbmcg dGFiIGxpbmUsIG1vZGUgbGluZSwgb3IKKzs7IGhlYWRlciBsaW5lLCBhZGQgKDpldmFsICh3aW5k b3ctdG9vbC1iYXItc3RyaW5nKSkgdG8KKzs7IGB0YWItbGluZS1mb3JtYXQnLCBgbW9kZS1saW5l LWZvcm1hdCcsIG9yIGBoZWFkZXItbGluZS1mb3JtYXQnLgorCis7OzsgS25vd24gaXNzdWVzOgor OzsKKzs7IE9uIEdOVSBFbWFjcyAyOS4xLCB0ZXJtaW5hbHMgZHJhZ2dpbmcgdG8gcmVzaXplIHdp bmRvd3Mgd2lsbCBlcnJvcgorOzsgd2l0aCBtZXNzYWdlICI8dGFiLWxpbmU+IDxtb3VzZS1tb3Zl bWVudD4gaXMgdW5kZWZpbmVkIi4gIFRoaXMgaXMgYQorOzsgYnVnIGluIEdOVSBFbWFjcywKKzs7 IDxodHRwczovL2RlYmJ1Z3MuZ251Lm9yZy9jZ2kvYnVncmVwb3J0LmNnaT9idWc9Njc0NTc+Lgor OzsKKzs7IE9uIEdOVSBFbWFjcyAyOSwgcGVyZm9ybWFuY2UgaW4gdGVybWluYWxzIGlzIGxvd2Vy IHRoYW4gb24KKzs7IGdyYXBoaWNhbCBmcmFtZXMuICBUaGlzIGlzIGR1ZSB0byBhIHdvcmthcm91 bmQsIHNlZSAiV29ya2Fyb3VuZCBmb3IKKzs7IGh0dHBzOi8vZGViYnVncy5nbnUub3JnL2NnaS9i dWdyZXBvcnQuY2dpP2J1Zz02ODMzNCIsIGJlbG93LgorCis7OzsgVG9kbzoKKzs7Cis7OyBOb3Qg YWxsIGZlYXR1cmVzIHBsYW5uZWQgYXJlIGltcGxlbWVudGVkIHlldC4gIEV2ZW50dWFsbHkgSSB3 b3VsZAorOzsgbGlrZSB0byBhbHNvIGdlbmVyYWxseSBtYWtlIHRvb2wgYmFycyBiZXR0ZXIuCis7 OworOzsgVGFyZ2V0aW5nIDAuMzoKKzs7ICogUHJvcGVybHkgc3VwcG9ydCByZWFtaW5pbmcgbGVz cyBmcmVxdWVudGx5IHVzZWQgdG9vbCBiYXIgaXRlbSBzcGVjcy4gIEZyb20KKzs7ICAgYHBhcnNl X3Rvb2xfYmFyX2l0ZW0nOgorOzsgICAgICogOnZpc2libGUKKzs7ICAgICAqIDpmaWx0ZXIKKzs7 ICAgICAqIDpidXR0b24KKzs7ICAgICAqIDp3cmFwCis7OyAqIEFkZCBkaXNwbGF5IGN1c3RvbWl6 YXRpb24gc2ltaWxhciB0byBgdG9vbC1iYXItc3R5bGUnLgorOzsKKzs7IFRhcmdldGluZyAxLjA6 Cis7OworOzsgKiBDbGVhbiB1cCBFbWFjcyB0b29sIGJhcnMKKzs7ICAgICAqIERlZmF1bHQ6IFJl bW92ZSBkZWZhdWx0IHRvb2wtYmFyIGVudGlyZWx5Cis7OyAgICAgKiBncmVwLCB2YzogUmVtb3Zl IGRlZmF1bHQgdG9vbC1iYXIgaW5oZXJpdGVkCis7OyAgICAgKiBpbmZvOiBSZW1vdmUgTmV4dCAv IFByZXYgLyBVcCwgd2hpY2ggaXMgYWxyZWFkeSBpbiB0aGUgaGVhZGVyCis7OyAgICAgKiBzbWVy Z2U6IEFkZCB0b29sIGJhciBmb3IgbmV4dC9wcmV2Cis7OworOzsgUG9zdCAxLjAgd29yazoKKzs7 Cis7OyAqIFNob3cga2V5Ym9hcmQgc2hvcnRjdXQgb24gaGVscCB0ZXh0LgorOzsKKzs7ICogQWRk IGEgYml0IG1vcmUgZG9jdW1lbnRhdGlvbi4KKzs7ICogQWRkIGN1c3RvbWl6YXRpb24gb3B0aW9u OiBpZ25vcmUtZGVmYXVsdC10b29sLWJhci1tYXAKKzs7ICogTWFrZSB0YWItbGluZSBkcmFnZ2lu ZyByZXNpemUgdGhlIHdpbmRvdworCis7OzsgQ29kZToKKworKHJlcXVpcmUgJ213aGVlbCkKKyhy ZXF1aXJlICd0YWItbGluZSkKKyhyZXF1aXJlICd0b29sLWJhcikKKwwKKzs7OyBCZW5jaG1hcmtp bmcgY29kZQorOzsKKzs7IFJlZnJlc2hpbmcgdGhlIHRvb2wgYmFyIGlzIGNvbXB1dGF0aW9uYWxs eSBzaW1wbGUsIGJ1dCBnZW5lcmF0ZXMgYQorOzsgbG90IG9mIGdhcmJhZ2UuICBTbyB0aGlzIGJl bmNobWFya2luZyBmb2N1c2VzIG9uIGdhcmJhZ2UKKzs7IGdlbmVyYXRpb24uICBTaW5jZSBpdCBo YXMgdG8gcnVuIGFmdGVyIG1vc3QgY29tbWFuZHMsIGdlbmVyYXRpbmcKKzs7IHNpZ25pZmljYW50 bHkgbW9yZSBnYXJiYWdlIHdpbGwgY2F1c2Ugbm90aWNlYWJsZSBwZXJmb3JtYW5jZQorOzsgZGVn cmF0aW9uLgorOzsKKzs7IFRoZSByZWZyZXNoIGhhcyB0d28gc3RlcHM6Cis7OworOzsgU3RlcCAx OiBMb29rIHVwIHRoZSA8dG9vbC1iYXI+IG1hcC4KKzs7IFN0ZXAgMjogR2VuZXJhdGUgYSBMaXNw IHN0cmluZyB1c2luZyB0ZXh0IHByb3BlcnRpZXMgZm9yIHRoZSB0b29sCis7OyBiYXIgc3RyaW5n LgorOzsKKzs7IEFkZGl0aW9uYWxseSwgd2Uga2VlcCB0cmFjayBvZiB0aGUgcGVyY2VudGFnZSBv ZiBjb21tYW5kcyB0aGF0Cis7OyBhY3V0YWxseSBjcmVhdGVkIGEgcmVmcmVzaC4KKyhkZWZ2YXIg d2luZG93LXRvb2wtYmFyLS1tZW1vcnktdXNlLWRlbHRhLXN0ZXAxIChtYWtlLWxpc3QgNyAwKQor ICAiQWJzb2x1dGUgZGVsdGEgb2YgbWVtb3J5IHVzZSBjb3VudGVycyBkdXJpbmcgc3RlcCAxLgor VGhpcyBpcyBhIGxpc3QgaW4gdGhlIHNhbWUgc3RydWN0dXJlIGFzIGBtZW1vcnktdXNlLWNvdW50 cycuIikKKyhkZWZ2YXIgd2luZG93LXRvb2wtYmFyLS1tZW1vcnktdXNlLWRlbHRhLXN0ZXAyICht YWtlLWxpc3QgNyAwKQorICAiQWJzb2x1dGUgZGVsdGEgb2YgbWVtb3J5IHVzZSBjb3VudGVycyBk dXJpbmcgc3RlcCAyLgorVGhpcyBpcyBhIGxpc3QgaW4gdGhlIHNhbWUgc3RydWN0dXJlIGFzIGBt ZW1vcnktdXNlLWNvdW50cycuIikKKyhkZWZ2YXIgd2luZG93LXRvb2wtYmFyLS1yZWZyZXNoLWRv bmUtY291bnQgMAorICAiTnVtYmVyIG9mIHRvb2wgYmFyIHN0cmluZyByZWZyZXNoZXMgcnVuLgor VGhlIHRvdGFsIG51bWJlciBvZiByZXF1ZXN0cyBpcyB0aGUgc3VtIG9mIHRoaXMgYW5kCitgd2lu ZG93LXRvb2wtYmFyLS1yZWZyZXNoLXNraXBwZWQtY291bnQnLiIpCisoZGVmdmFyIHdpbmRvdy10 b29sLWJhci0tcmVmcmVzaC1za2lwcGVkLWNvdW50IDAKKyAgIk51bWJlciBvZiB0b29sIGJhciBz dHJpbmcgcmVmcmVzaGVzIHRoYXQgd2VyZSBza2lwcGVkLgorVGhlIHRvdGFsIG51bWJlciBvZiBy ZXF1ZXN0cyBpcyB0aGUgc3VtIG9mIHRoaXMgYW5kCitgd2luZG93LXRvb2wtYmFyLS1yZWZyZXNo LWRvbmUtY291bnQnLiIpCisKKyhkZWZ1biB3aW5kb3ctdG9vbC1iYXItLW1lbW9yeS11c2UtYXZn LXN0ZXAxICgpCisgICJSZXR1cm4gYXZlcmFnZSBtZW1vcnkgdXNlIGRlbHRhIGR1cmluZyBzdGVw IDEuIgorICAobWFwY2FyIChsYW1iZGEgKGVsdCkgKC8gKGZsb2F0IGVsdCkgd2luZG93LXRvb2wt YmFyLS1yZWZyZXNoLWRvbmUtY291bnQpKQorICAgICAgICAgIHdpbmRvdy10b29sLWJhci0tbWVt b3J5LXVzZS1kZWx0YS1zdGVwMSkpCisKKyhkZWZ1biB3aW5kb3ctdG9vbC1iYXItLW1lbW9yeS11 c2UtYXZnLXN0ZXAyICgpCisgICJSZXR1cm4gYXZlcmFnZSBtZW1vcnkgdXNlIGRlbHRhIGR1cmlu ZyBzdGVwIDIuIgorICAobWFwY2FyIChsYW1iZGEgKGVsdCkgKC8gKGZsb2F0IGVsdCkgd2luZG93 LXRvb2wtYmFyLS1yZWZyZXNoLWRvbmUtY291bnQpKQorICAgICAgICAgIHdpbmRvdy10b29sLWJh ci0tbWVtb3J5LXVzZS1kZWx0YS1zdGVwMikpCisKKyhkZWNsYXJlLWZ1bmN0aW9uIHRpbWUtc3Rh bXAtc3RyaW5nICJ0aW1lLXN0YW1wIikKKworKGRlZnVuIHdpbmRvdy10b29sLWJhci1kZWJ1Zy1z aG93LW1lbW9yeS11c2UgKCkKKyAgIkRldmVsb3BtZW50LW9ubHkgY29tbWFuZCB0byBzaG93IG1l bW9yeSB1c2VkIGJ5IGB3aW5kb3ctdG9vbC1iYXItc3RyaW5nJy4iCisgIChpbnRlcmFjdGl2ZSkK KyAgKHJlcXVpcmUgJ3RpbWUtc3RhbXApCisgIChzYXZlLXNlbGVjdGVkLXdpbmRvdworICAgIChw b3AtdG8tYnVmZmVyICIqV1RCIE1lbW9yeSBSZXBvcnQqIikKKyAgICAodW5sZXNzIChkZXJpdmVk LW1vZGUtcCAnc3BlY2lhbC1tb2RlKQorICAgICAgKHNwZWNpYWwtbW9kZSkpCisKKyAgICAoZ290 by1jaGFyIChwb2ludC1tYXgpKQorICAgIChsZXQgKChpbmhpYml0LXJlYWQtb25seSB0KSkKKyAg ICAgIChpbnNlcnQgKHByb3BlcnRpemUgKGNvbmNhdCAiRnVuY3Rpb246IHdpbmRvdy10b29sLWJh ci1zdHJpbmcgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aW1lLXN0YW1w LXN0cmluZykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICdmYWNlICd1bmRlcmxpbmUgJ2Zv bnQtbG9jay1mYWNlICd1bmRlcmxpbmUpCisgICAgICAgICAgICAgICJcblxuIikKKyAgICAgICh3 aW5kb3ctdG9vbC1iYXItLWluc2VydC1tZW1vcnktdXNlCisgICAgICAgIlN0ZXAgMSIgKHdpbmRv dy10b29sLWJhci0tbWVtb3J5LXVzZS1hdmctc3RlcDEpKQorICAgICAgKHdpbmRvdy10b29sLWJh ci0taW5zZXJ0LW1lbW9yeS11c2UKKyAgICAgICAiU3RlcCAyIiAod2luZG93LXRvb2wtYmFyLS1t ZW1vcnktdXNlLWF2Zy1zdGVwMikpCisgICAgICAoaW5zZXJ0IChmb3JtYXQgIlJlZnJlc2ggY291 bnQgICVkXG4iIHdpbmRvdy10b29sLWJhci0tcmVmcmVzaC1kb25lLWNvdW50KQorICAgICAgICAg ICAgICAoZm9ybWF0ICJSZWZyZXNoIGV4ZWN1dGVkIHBlcmNlbnQgJS4yZlxuIgorICAgICAgICAg ICAgICAgICAgICAgICgvIChmbG9hdCB3aW5kb3ctdG9vbC1iYXItLXJlZnJlc2gtZG9uZS1jb3Vu dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKyB3aW5kb3ctdG9vbC1iYXItLXJlZnJlc2gt ZG9uZS1jb3VudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy10b29sLWJhci0t cmVmcmVzaC1za2lwcGVkLWNvdW50KSkpCisgICAgICAgICAgICAgICJcbiIpKSkpCisKKyhkZWZ1 biB3aW5kb3ctdG9vbC1iYXItLWluc2VydC1tZW1vcnktdXNlIChsYWJlbCBhdmctbWVtb3J5LXVz ZSkKKyAgIkluc2VydCBtZW1vcnkgdXNlIGludG8gY3VycmVudCBidWZmZXIuCisKK0xBQkVMIGlz IGEgcHJlZml4IHN0cmluZyB0byBiZSBpbiBmcm9udCBvZiB0aGUgZGF0YS4KK0FWRy1NRU1PUlkt VVNFIGlzIGEgbGlzdCBvZiBhdmVyYWdlcywgd2l0aCB0aGUgc2FtZSBtZWFuaW5nIGFzCitgbWVt b3J5LXVzZS1jb3VudHMnLiIKKyAgKGxldCogKChsYWJlbC1sZW4gKGxlbmd0aCBsYWJlbCkpCisg ICAgICAgICAocGFkZGluZyAobWFrZS1zdHJpbmcgbGFiZWwtbGVuID9ccykpKQorICAgIChjbC1s b29wIGZvciB1c2FnZSBpbiBhdmctbWVtb3J5LXVzZQorICAgICAgICAgICAgIGZvciB1c2FnZS1s YWJlbCBpbiAnKCJDb25zZXMiICJGbG9hdHMiICJWZWN0b3IgY2VsbHMiICJTeW1ib2xzIgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdHJpbmcgY2hhcnMiICJJbnRlcnZhbHMi ICJTdHJpbmdzIikKKyAgICAgICAgICAgICBmb3IgaWR4IGZyb20gMAorICAgICAgICAgICAgIGRv IChpbnNlcnQgKGZvcm1hdCAiJXMgICU4LjJmICVzXG4iCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChpZiAoPSBpZHggMCkgbGFiZWwgcGFkZGluZykKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdXNhZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNh Z2UtbGFiZWwpKSkpKQorDAorKGRlZmdyb3VwIHdpbmRvdy10b29sLWJhciBuaWwKKyAgIlRvb2wg YmFycyBwZXItd2luZG93LiIKKyAgOmdyb3VwICdjb252ZW5pZW5jZQorICA6cHJlZml4ICJ3aW5k b3ctdG9vbC1iYXItIikKKworKGRlZnZhci1rZXltYXAgd2luZG93LXRvb2wtYmFyLS1idXR0b24t a2V5bWFwCisgIDpkb2MgIktleW1hcCB1c2VkIGJ5IGB3aW5kb3ctdG9vbC1iYXItLWtleW1hcC1l bnRyeS10by1zdHJpbmcnLiIKKyAgIjxmb2xsb3ctbGluaz4iICdtb3VzZS1mYWNlCisgIDs7IEZv bGxvdyBsaW5rIG9uIGFsbCBjbGlja3Mgb2YgbW91c2UtMSBhbmQgbW91c2UtMiBzaW5jZSB0aGUg dG9vbAorICA7OyBiYXIgaXMgbm90IGEgcGxhY2UgdGhlIHBvaW50IGNhbiB0cmF2ZWwgdG8uCisg ICI8dGFiLWxpbmU+IDxtb3VzZS0xPiIgIyd3aW5kb3ctdG9vbC1iYXItLWNhbGwtYnV0dG9uCisg ICI8dGFiLWxpbmU+IDxkb3VibGUtbW91c2UtMT4iICMnd2luZG93LXRvb2wtYmFyLS1jYWxsLWJ1 dHRvbgorICAiPHRhYi1saW5lPiA8dHJpcGxlLW1vdXNlLTE+IiAjJ3dpbmRvdy10b29sLWJhci0t Y2FsbC1idXR0b24KKyAgIjx0YWItbGluZT4gPG1vdXNlLTI+IiAjJ3dpbmRvdy10b29sLWJhci0t Y2FsbC1idXR0b24KKyAgIjx0YWItbGluZT4gPGRvdWJsZS1tb3VzZS0yPiIgIyd3aW5kb3ctdG9v bC1iYXItLWNhbGwtYnV0dG9uCisgICI8dGFiLWxpbmU+IDx0cmlwbGUtbW91c2UtMj4iICMnd2lu ZG93LXRvb2wtYmFyLS1jYWxsLWJ1dHRvbgorCisgIDs7IE1vdXNlIGRvd24gZXZlbnRzIGRvIG5v dGhpbmcuICBBIGJpbmRpbmcgaXMgbmVlZGVkIHNvIGlzZWFyY2gKKyAgOzsgZG9lcyBub3QgZXhp dCB3aGVuIHRoZSB0YWIgYmFyIGlzIGNsaWNrZWQuCisgICI8dGFiLWxpbmU+IDxkb3duLW1vdXNl LTE+IiAjJ3dpbmRvdy10b29sLWJhci0taWdub3JlCisgICI8dGFiLWxpbmU+IDxkb3VibGUtZG93 bi1tb3VzZS0xPiIgIyd3aW5kb3ctdG9vbC1iYXItLWlnbm9yZQorICAiPHRhYi1saW5lPiA8dHJp cGxlLWRvd24tbW91c2UtMT4iICMnd2luZG93LXRvb2wtYmFyLS1pZ25vcmUKKyAgIjx0YWItbGlu ZT4gPGRvd24tbW91c2UtMj4iICMnd2luZG93LXRvb2wtYmFyLS1pZ25vcmUKKyAgIjx0YWItbGlu ZT4gPGRvdWJsZS1kb3duLW1vdXNlLTI+IiAjJ3dpbmRvdy10b29sLWJhci0taWdub3JlCisgICI8 dGFiLWxpbmU+IDx0cmlwbGUtZG93bi1tb3VzZS0yPiIgIyd3aW5kb3ctdG9vbC1iYXItLWlnbm9y ZSkKKyhmc2V0ICd3aW5kb3ctdG9vbC1iYXItLWJ1dHRvbi1rZXltYXAgd2luZG93LXRvb2wtYmFy LS1idXR0b24ta2V5bWFwKSA7IFNvIGl0IGNhbiBiZSBhIGtleW1hcCBwcm9wZXJ0eQorCis7OyBS ZWdpc3RlciBiaW5kaW5ncyB0aGF0IHN0YXkgaW4gaXNlYXJjaC4gIFRlY2huaWNhbGx5LCB0aGVz ZQorOzsgY29tbWFuZHMgZG9uJ3QgcG9wIHVwIGEgbWVudSBidXQgdGhleSBhY3QgdmVyeSBzaW1p bGFyIGluIHRoYXQgdGhleQorOzsgYXJlIGNhdXNlZCBieSBtb3VzZSBpbnB1dCBhbmQgbWF5IGNh bGwgY29tbWFuZHMgdmlhCis7OyBgY2FsbC1pbnRlcmFjdGl2ZWx5Jy4KKyhwdXNoICd3aW5kb3ct dG9vbC1iYXItLWNhbGwtYnV0dG9uIGlzZWFyY2gtbWVudS1iYXItY29tbWFuZHMpCisocHVzaCAn d2luZG93LXRvb2wtYmFyLS1pZ25vcmUgaXNlYXJjaC1tZW51LWJhci1jb21tYW5kcykKKworKGRl ZnZhci1sb2NhbCB3aW5kb3ctdG9vbC1iYXItc3RyaW5nLS1jYWNoZSBuaWwKKyAgIkNhY2hlIGZv ciBwcmV2aW91cyByZXN1bHQgb2YgYHdpbmRvdy10b29sLWJhci1zdHJpbmcnLiIpCisKKzs7OyMj I2F1dG9sb2FkCisoZGVmdW4gd2luZG93LXRvb2wtYmFyLXN0cmluZyAoKQorICAiUmV0dXJuIGEg KHByb3BlcnRpemVkKSBzdHJpbmcgZm9yIHRoZSB0b29sIGJhci4KKworVGhpcyBpcyBmb3Igd2hl biB5b3Ugd2FudCBtb3JlIGN1c3RvbWl6YXRpb25zIHRoYW4KK2B3aW5kb3ctdG9vbC1iYXItbW9k ZScgcHJvdmlkZXMuICBDb21tb25seSBhZGRlZCB0byB0aGUgdmFyaWFibGUKK2B0YWItbGluZS1m b3JtYXQnLCBgaGVhZGVyLWxpbmUtZm9ybWF0Jywgb3IgYG1vZGUtbGluZS1mb3JtYXQnIgorICAo aWYgKG9yIChudWxsIHdpbmRvdy10b29sLWJhci1zdHJpbmctLWNhY2hlKQorICAgICAgICAgICh3 aW5kb3ctdG9vbC1iYXItLWxhc3QtY29tbWFuZC10cmlnZ2Vycy1yZWZyZXNoLXApKQorICAgICAg KGxldCogKChtZW0wIChtZW1vcnktdXNlLWNvdW50cykpCisgICAgICAgICAgICAgKHRvb2xiYXIt bWVudSAod2luZG93LXRvb2wtYmFyLS1nZXQta2V5bWFwKSkKKyAgICAgICAgICAgICAobWVtMSAo bWVtb3J5LXVzZS1jb3VudHMpKQorICAgICAgICAgICAgIChyZXN1bHQgKG1hcGNvbmNhdCAjJ3dp bmRvdy10b29sLWJhci0ta2V5bWFwLWVudHJ5LXRvLXN0cmluZworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoY2RyIHRvb2xiYXItbWVudSkgO1NraXAgJ2tleW1hcAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7OyBXaXRob3V0IHNwYWNlcyBiZXR3ZWVuIHRoZSB0ZXh0 LCBob3ZlcmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBoaWdobGlnaHRz IGFsbCBhZGphY2VudCBidXR0b25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo aWYgKHdpbmRvdy10b29sLWJhci0tdXNlLWltYWdlcykKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChwcm9wZXJ0aXplICIgIiAnaW52aXNpYmxlIHQpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIiAiKSkpCisgICAgICAgICAgICAgKG1lbTIgKG1lbW9yeS11 c2UtY291bnRzKSkpCisgICAgICAgIChjbC1tYXBsIChsYW1iZGEgKGwtaW5pdCBsMCBsMSkKKyAg ICAgICAgICAgICAgICAgICAoY2wtaW5jZiAoY2FyIGwtaW5pdCkgKC0gKGNhciBsMSkgKGNhciBs MCkpKSkKKyAgICAgICAgICAgICAgICAgd2luZG93LXRvb2wtYmFyLS1tZW1vcnktdXNlLWRlbHRh LXN0ZXAxIG1lbTAgbWVtMSkKKyAgICAgICAgKGNsLW1hcGwgKGxhbWJkYSAobC1pbml0IGwxIGwy KQorICAgICAgICAgICAgICAgICAgIChjbC1pbmNmIChjYXIgbC1pbml0KSAoLSAoY2FyIGwyKSAo Y2FyIGwxKSkpKQorICAgICAgICAgICAgICAgICB3aW5kb3ctdG9vbC1iYXItLW1lbW9yeS11c2Ut ZGVsdGEtc3RlcDIgbWVtMSBtZW0yKQorCisgICAgICAgIChzZXRmIHdpbmRvdy10b29sLWJhci1z dHJpbmctLWNhY2hlCisgICAgICAgICAgICAgIChjb25jYXQKKyAgICAgICAgICAgICAgIDs7IFRo ZSB0b29sIGJhciBmYWNlIGJ5IGRlZmF1bHQgcHV0cyBib3hlcyBhcm91bmQgdGhlCisgICAgICAg ICAgICAgICA7OyBidXR0b25zLiAgSG93ZXZlciwgdGhpcyBib3ggaXMgbm90IGRpc3BsYXllZCBp ZiB0aGUKKyAgICAgICAgICAgICAgIDs7IGJveCBzdGFydHMgYXQgdGhlIGxlZnRtb3N0IHBpeGVs IG9mIHRoZSB0YWItbGluZS4KKyAgICAgICAgICAgICAgIDs7IEFkZCBhIHNpbmdsZSBzcGFjZSBp biB0aGlzIGNhc2Ugc28gdGhlIGJveCBkaXNwbGF5cworICAgICAgICAgICAgICAgOzsgY29ycmVj dGx5LgorICAgICAgICAgICAgICAgKGFuZCAoZGlzcGxheS1zdXBwb3J0cy1mYWNlLWF0dHJpYnV0 ZXMtcAorICAgICAgICAgICAgICAgICAgICAgJyg6Ym94IChsaW5lLXdpZHRoIDEpKSkKKyAgICAg ICAgICAgICAgICAgICAgKHByb3BlcnRpemUgIiAiICdkaXNwbGF5ICcoc3BhY2UgOndpZHRoICgx KSkpKQorICAgICAgICAgICAgICAgcmVzdWx0KSkKKyAgICAgICAgKGNsLWluY2Ygd2luZG93LXRv b2wtYmFyLS1yZWZyZXNoLWRvbmUtY291bnQpKQorICAgIChjbC1pbmNmIHdpbmRvdy10b29sLWJh ci0tcmVmcmVzaC1za2lwcGVkLWNvdW50KSkKKworICB3aW5kb3ctdG9vbC1iYXItc3RyaW5nLS1j YWNoZSkKKworKGRlZmNvbnN0IHdpbmRvdy10b29sLWJhci0tZ3JhcGhpY2FsLXNlcGFyYXRvcgor ICAoY29uY2F0CisgICAocHJvcGVydGl6ZSAiICIgJ2Rpc3BsYXkgJyhzcGFjZSA6d2lkdGggKDQp KSkKKyAgIChwcm9wZXJ0aXplICIgIiAnZGlzcGxheSAnKHNwYWNlIDp3aWR0aCAoMSkgZmFjZSAo OmludmVyc2UtdmlkZW8gdCkpKQorICAgKHByb3BlcnRpemUgIiAiICdkaXNwbGF5ICcoc3BhY2Ug OndpZHRoICg0KSkpKSkKKworKGRlZnVuIHdpbmRvdy10b29sLWJhci0ta2V5bWFwLWVudHJ5LXRv LXN0cmluZyAobWVudS1pdGVtKQorICAiQ29udmVydCBNRU5VLUlURU0gaW50byBhIChwcm9wZXJ0 aXplZCkgc3RyaW5nIHJlcHJlc2VudGF0aW9uLgorCitNRU5VLUlURU0gaXMgYSBtZW51IGl0ZW0g dG8gY29udmVydC4gIFNlZSBpbmZvIG5vZGUgKGVsaXNwKVRvb2wgQmFyLiIKKyAgKHBjYXNlLWV4 aGF1c3RpdmUgbWVudS1pdGVtCisgICAgOzsgU2VwYXJhdG9ycworICAgICgob3IgYCgsXyAiLS0i KQorICAgICAgICAgYCgsXyBtZW51LWl0ZW0gLChhbmQgKHByZWQgc3RyaW5ncCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChwcmVkIChzdHJpbmctcHJlZml4LXAgIi0tIikpKSkpCisg ICAgIChpZiAod2luZG93LXRvb2wtYmFyLS11c2UtaW1hZ2VzKQorICAgICAgICAgd2luZG93LXRv b2wtYmFyLS1ncmFwaGljYWwtc2VwYXJhdG9yCisgICAgICAgInwiKSkKKworICAgIDs7IE1lbnUg aXRlbSwgdHVybiBpbnRvIHByb3BlcnRpemVkIHN0cmluZyBidXR0b24KKyAgICAoYCgsa2V5IG1l bnUtaXRlbSAsbmFtZS1leHByICxiaW5kaW5nIC4gLHBsaXN0KQorICAgICAod2hlbiBiaW5kaW5n ICAgICAgOyBJZiBubyBiaW5kaW5nIGV4aXN0cywgdGhlbiBidXR0b24gaXMgaGlkZGVuLgorICAg ICAgIChsZXQqICgobmFtZSAoZXZhbCBuYW1lLWV4cHIpKQorICAgICAgICAgICAgICAoc3RyICh1 cGNhc2UtaW5pdGlhbHMgKG9yIChwbGlzdC1nZXQgcGxpc3QgOmxhYmVsKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctdHJpbS1yaWdodCBuYW1lICJcXC4r IikpKSkKKyAgICAgICAgICAgICAgKGxlbiAobGVuZ3RoIHN0cikpCisgICAgICAgICAgICAgIChl bmFibGUtZm9ybSAocGxpc3QtZ2V0IHBsaXN0IDplbmFibGUpKQorICAgICAgICAgICAgICAoZW5h YmxlZCAob3IgKG5vdCBlbmFibGUtZm9ybSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChl dmFsIGVuYWJsZS1mb3JtKSkpKQorICAgICAgICAgKGlmIGVuYWJsZWQKKyAgICAgICAgICAgICAo YWRkLXRleHQtcHJvcGVydGllcyAwIGxlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICcobW91c2UtZmFjZSB3aW5kb3ctdG9vbC1iYXItYnV0dG9uLWhvdmVyCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBrZXltYXAgd2luZG93LXRvb2wtYmFyLS1idXR0b24t a2V5bWFwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlIHdpbmRvdy10 b29sLWJhci1idXR0b24pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKQor ICAgICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgMCBsZW4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdmYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2luZG93LXRv b2wtYmFyLWJ1dHRvbi1kaXNhYmxlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry KSkKKyAgICAgICAgICh3aGVuLWxldCAoKHNwZWMgKGFuZCAod2luZG93LXRvb2wtYmFyLS11c2Ut aW1hZ2VzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQgbWVudS1p dGVtIDppbWFnZSkpKSkKKyAgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IDAgbGVuCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzcGxheQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGFwcGVuZCBzcGVjCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChpZiBlbmFibGVkICcoOm1hcmdpbiAyIDphc2NlbnQgY2VudGVyKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoOm1hcmdpbiAyIDphc2NlbnQgY2VudGVyCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y29udmVyc2lvbiBkaXNh YmxlZCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKSkKKyAgICAgICAgIChw dXQtdGV4dC1wcm9wZXJ0eSAwIGxlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWxw LWVjaG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKHBsaXN0LWdldCBwbGlzdCA6 aGVscCkgbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIpCisgICAgICAgICAo cHV0LXRleHQtcHJvcGVydHkgMCBsZW4gJ3Rvb2wtYmFyLWtleSBrZXkgc3RyKQorICAgICAgICAg c3RyKSkpKSkKKworKGRlZnVuIHdpbmRvdy10b29sLWJhci0tY2FsbC1idXR0b24gKCkKKyAgIkNh bGwgdGhlIGJ1dHRvbiB0aGF0IHdhcyBjbGlja2VkIG9uIGluIHRoZSB0YWIgbGluZS4iCisgIChp bnRlcmFjdGl2ZSkKKyAgKHdoZW4gKG1vdXNlLWV2ZW50LXAgbGFzdC1jb21tYW5kLWV2ZW50KQor ICAgIChsZXQgKChwb3NuIChldmVudC1zdGFydCBsYXN0LWNvbW1hbmQtZXZlbnQpKSkKKyAgICAg IDs7IENvbW1hbmRzIG5lZWQgdG8gZXhlY3V0ZSB3aXRoIHRoZSByaWdodCBidWZmZXIgYW5kIHdp bmRvdworICAgICAgOzsgc2VsZWN0ZWQuICBUaGUgc2VsZWN0aW9uIG5lZWRzIHRvIGJlIHBlcm1h bmVudCBmb3IgaXNlYXJjaC4KKyAgICAgIChzZWxlY3Qtd2luZG93IChwb3NuLXdpbmRvdyBwb3Nu KSkKKyAgICAgIChsZXQqICgoc3RyIChwb3NuLXN0cmluZyBwb3NuKSkKKyAgICAgICAgICAgICAo a2V5IChnZXQtdGV4dC1wcm9wZXJ0eSAoY2RyIHN0cikgJ3Rvb2wtYmFyLWtleSAoY2FyIHN0cikp KQorICAgICAgICAgICAgIChjbWQgKGxvb2t1cC1rZXkgKHdpbmRvdy10b29sLWJhci0tZ2V0LWtl eW1hcCkgKHZlY3RvciBrZXkpKSkpCisgICAgICAgIChjYWxsLWludGVyYWN0aXZlbHkgY21kKSkp KSkKKworKGRlZnVuIHdpbmRvdy10b29sLWJhci0taWdub3JlICgpCisgICJJbnRlcm5hbCBjb21t YW5kIHNvIGlzZWFyY2ggZG9lcyBub3QgZXhpdCBvbiBidXR0b24tZG93biBldmVudHMuIgorICAo aW50ZXJhY3RpdmUpCisgIG5pbCkKKworKGRlZnZhciB3aW5kb3ctdG9vbC1iYXItLWlnbm9yZWQt ZXZlbnQtdHlwZXMKKyAgKGxldCAoKGxpc3QgKGxpc3QgJ21vdXNlLW1vdmVtZW50ICdwaW5jaAor ICAgICAgICAgICAgICAgICAgICAnd2hlZWwtZG93biAnd2hlZWwtdXAgJ3doZWVsLWxlZnQgJ3do ZWVsLXJpZ2h0CisgICAgICAgICAgICAgICAgICAgIG1vdXNlLXdoZWVsLWRvd24tZXZlbnQgbW91 c2Utd2hlZWwtdXAtZXZlbnQKKyAgICAgICAgICAgICAgICAgICAgbW91c2Utd2hlZWwtbGVmdC1l dmVudCBtb3VzZS13aGVlbC1yaWdodC1ldmVudAorICAgICAgICAgICAgICAgICAgICAoYm91bmQt YW5kLXRydWUtcCBtb3VzZS13aGVlbC1kb3duLWFsdGVybmF0ZS1ldmVudCkKKyAgICAgICAgICAg ICAgICAgICAgKGJvdW5kLWFuZC10cnVlLXAgbW91c2Utd2hlZWwtdXAtYWx0ZXJuYXRlLWV2ZW50 KQorICAgICAgICAgICAgICAgICAgICAoYm91bmQtYW5kLXRydWUtcCBtb3VzZS13aGVlbC1sZWZ0 LWFsdGVybmF0ZS1ldmVudCkKKyAgICAgICAgICAgICAgICAgICAgKGJvdW5kLWFuZC10cnVlLXAg bW91c2Utd2hlZWwtcmlnaHQtYWx0ZXJuYXRlLWV2ZW50KSkpKQorICAgIChkZWxldGUtZHVwcyAo ZGVsZXRlIG5pbCBsaXN0KSkpCisgICJDYWNoZSBmb3IgYHdpbmRvdy10b29sLWJhci0tbGFzdC1j b21tYW5kLXRyaWdnZXJzLXJlZnJlc2gtcCcuIikKKworKGRlZnVuIHdpbmRvdy10b29sLWJhci0t bGFzdC1jb21tYW5kLXRyaWdnZXJzLXJlZnJlc2gtcCAoKQorICAiVGVzdCBpZiB0aGUgcmVjZW50 IGNvbW1hbmQgb3IgZXZlbnQgc2hvdWxkIHRyaWdnZXIgYSB0b29sIGJhciByZWZyZXNoLiIKKyAg KGxldCAoKHR5cGUgKGV2ZW50LWJhc2ljLXR5cGUgbGFzdC1jb21tYW5kLWV2ZW50KSkpCisgICAg KGFuZAorICAgICA7OyBBc3N1bWUgdGhhdCBrZXkgcHJlc3NlcyBhbmQgYnV0dG9uIHByZXNzZXMg YXJlIHRoZSBvbmx5IHVzZXIKKyAgICAgOzsgaW50ZXJhY3Rpb25zIHRoYXQgY2FuIGFsdGVyIHRo ZSB0b29sIGJhci4gIFNwZWNpZmljYWxseSwgdGhpcworICAgICA7OyBleGNsdWRlcyBtb3VzZSBt b3ZlbWVudCwgbW91c2Ugd2hlZWwgc2Nyb2xsLCBhbmQgcGluY2guCisgICAgIChub3QgKG1lbWJl ciB0eXBlIHdpbmRvdy10b29sLWJhci0taWdub3JlZC1ldmVudC10eXBlcykpCisgICAgIDs7IEFz c3VtZSB0aGF0IGFueSBjb21tYW5kIHRoYXQgdHJpZ2dlcnMgc2hpZnQgc2VsZWN0IGNhbid0IGFs dGVyCisgICAgIDs7IHRoZSB0b29sIGJhci4gIFRoaXMgZXhjbHVkZXMgcHVyZSBuYXZpZ2F0aW9u IGNvbW1hbmRzLgorICAgICAobm90ICh3aW5kb3ctdG9vbC1iYXItLWNvbW1hbmQtdHJpZ2dlcnMt c2hpZnQtc2VsZWN0LXAgbGFzdC1jb21tYW5kKSkKKyAgICAgOzsgQXNzdW1lIHRoYXQgc2VsZi1p bnNlcnQtY29tbWFuZCB3b24ndCBhbHRlciB0aGUgdG9vbCBiYXIuCisgICAgIDs7IFRoaXMgaXMg dGhlIG1vc3QgY29tbW9ubHkgZXhlY3V0ZWQgY29tbWFuZC4KKyAgICAgKG5vdCAoZXEgbGFzdC1j b21tYW5kICdzZWxmLWluc2VydC1jb21tYW5kKSkpKSkKKworKGRlZnVuIHdpbmRvdy10b29sLWJh ci0tY29tbWFuZC10cmlnZ2Vycy1zaGlmdC1zZWxlY3QtcCAoY29tbWFuZCkKKyAgIlRlc3QgaWYg Q09NTUFORCB3b3VsZCB0cmlnZ2VyIHNoaWZ0IHNlbGVjdC4iCisgIChsZXQqICgoZm9ybSAoaW50 ZXJhY3RpdmUtZm9ybSBjb21tYW5kKSkKKyAgICAgICAgIChzcGVjIChjYXItc2FmZSAoY2RyLXNh ZmUgZm9ybSkpKSkKKyAgICAoYW5kIChlcSAoY2FyLXNhZmUgZm9ybSkgJ2ludGVyYWN0aXZlKQor ICAgICAgICAgKHN0cmluZ3Agc3BlYykKKyAgICAgICAgIChzZXEtcG9zaXRpb24gc3BlYyA/Xikp KSkKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZpbmUtbWlub3ItbW9kZSB3aW5kb3ctdG9vbC1iYXIt bW9kZQorICAiVG9nZ2xlIGRpc3BsYXkgb2YgdGhlIHRvb2wgYmFyIGluIHRoZSB0YWIgbGluZSBv ZiB0aGUgY3VycmVudCBidWZmZXIuIgorICA6Z2xvYmFsIG5pbAorICAobGV0ICgoc2hvdWxkLWRp c3BsYXkgKGFuZCB3aW5kb3ctdG9vbC1iYXItbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAobm90IChlcSB0b29sLWJhci1tYXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGRlZmF1bHQtdmFsdWUgJ3Rvb2wtYmFyLW1hcCkpKSkpKQorICAgIChpZiAoZmJv dW5kcCAndGFiLWxpbmUtc2V0LWRpc3BsYXkpCisgICAgICAgIDs7IE5ld2x5IGFkZGVkIGZ1bmN0 aW9uIGZvciBFbWFjcyAzMC4KKyAgICAgICAgKHRhYi1saW5lLXNldC1kaXNwbGF5ICd3aW5kb3ct dG9vbC1iYXItbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCBzaG91bGQt ZGlzcGxheQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKDpldmFsICh3aW5k b3ctdG9vbC1iYXItc3RyaW5nKSkpKQorICAgICAgOzsgTGVnYWN5IHBhdGggZm9yIEVtYWNzIDI5 LgorICAgICAgKHNldHEgdGFiLWxpbmUtZm9ybWF0CisgICAgICAgICAgICAoYW5kIHNob3VsZC1k aXNwbGF5CisgICAgICAgICAgICAgICAgICcoOmV2YWwgKHdpbmRvdy10b29sLWJhci1zdHJpbmcp KSkpKSkpCisKKzs7OyMjI2F1dG9sb2FkCisoZGVmaW5lLWdsb2JhbGl6ZWQtbWlub3ItbW9kZSBn bG9iYWwtd2luZG93LXRvb2wtYmFyLW1vZGUKKyAgd2luZG93LXRvb2wtYmFyLW1vZGUgd2luZG93 LXRvb2wtYmFyLS10dXJuLW9uCisgIDpncm91cCAnd2luZG93LXRvb2wtYmFyCisgIChhZGQtaG9v ayAnaXNlYXJjaC1tb2RlLWhvb2sgIyd3aW5kb3ctdG9vbC1iYXItLXR1cm4tb24pCisgIChhZGQt aG9vayAnaXNlYXJjaC1tb2RlLWVuZC1ob29rICMnd2luZG93LXRvb2wtYmFyLS10dXJuLW9uKSkK KworKGRlZnZhciB3aW5kb3ctdG9vbC1iYXItLWFsbG93LWltYWdlcyB0CisgICJJbnRlcm5hbCBk ZWJ1ZyBmbGFnIHRvIGZvcmNlIHRleHQgbW9kZS4iKQorCisoZGVmdW4gd2luZG93LXRvb2wtYmFy LS11c2UtaW1hZ2VzICgpCisgICJJbnRlcm5hbCBmdW5jdGlvbi4KK1Jlc3BlY3RzIGB3aW5kb3ct dG9vbC1iYXItLWFsbG93LWltYWdlcycgYXMgd2VsbCBhcyBmcmFtZQorY2FwYWJpbGl0aWVzLiIK KyAgKGFuZCB3aW5kb3ctdG9vbC1iYXItLWFsbG93LWltYWdlcworICAgICAgIChkaXNwbGF5LWlt YWdlcy1wKSkpCisMCis7OzsgRGlzcGxheSBzdHlsaW5nOgorKGRlZmZhY2Ugd2luZG93LXRvb2wt YmFyLWJ1dHRvbgorICAnKChkZWZhdWx0CisgICAgIDppbmhlcml0IHRhYi1saW5lKQorICAgICgo KGNsYXNzIGNvbG9yKSAobWluLWNvbG9ycyA4OCkgKHN1cHBvcnRzIDpib3ggdCkpCisgICAgIDpi b3ggKDpsaW5lLXdpZHRoIC0xIDpzdHlsZSByZWxlYXNlZC1idXR0b24pCisgICAgIDpiYWNrZ3Jv dW5kICJncmV5ODUiKQorICAgIDs7IElmIHRoZSBib3ggaXMgbm90IHN1cHBvcnRlZCwgZGltIHRo ZSBidXR0b24gYmFja2dyb3VuZCBhIGJpdC4KKyAgICAoKChjbGFzcyBjb2xvcikgKG1pbi1jb2xv cnMgODgpKQorICAgICA6YmFja2dyb3VuZCAiZ3JleTcwIikKKyAgICAodAorICAgICA6aW52ZXJz ZS12aWRlbyB0KSkKKyAgIkZhY2UgdXNlZCBmb3IgYnV0dG9ucyB3aGVuIHRoZSBtb3VzZSBpcyBu b3QgaG92ZXJpbmcgb3ZlciB0aGUgYnV0dG9uLiIKKyAgOmdyb3VwICd3aW5kb3ctdG9vbC1iYXIp CisKKyhkZWZmYWNlIHdpbmRvdy10b29sLWJhci1idXR0b24taG92ZXIKKyAgJygoZGVmYXVsdAor ICAgICA6aW5oZXJpdCB0YWItbGluZSkKKyAgICAoKChjbGFzcyBjb2xvcikgKG1pbi1jb2xvcnMg ODgpKQorICAgICA6Ym94ICg6bGluZS13aWR0aCAtMSA6c3R5bGUgcmVsZWFzZWQtYnV0dG9uKQor ICAgICA6YmFja2dyb3VuZCAiZ3JleTk1IikKKyAgICAodAorICAgICA6aW52ZXJzZS12aWRlbyB0 KSkKKyAgIkZhY2UgdXNlZCBmb3IgYnV0dG9ucyB3aGVuIHRoZSBtb3VzZSBpcyBob3ZlcmluZyBv dmVyIHRoZSBidXR0b24uIgorICA6Z3JvdXAgJ3dpbmRvdy10b29sLWJhcikKKworKGRlZmZhY2Ug d2luZG93LXRvb2wtYmFyLWJ1dHRvbi1kaXNhYmxlZAorICAnKChkZWZhdWx0CisgICAgIDppbmhl cml0IHRhYi1saW5lKQorICAgICgoKGNsYXNzIGNvbG9yKSAobWluLWNvbG9ycyA4OCkpCisgICAg IDpib3ggKDpsaW5lLXdpZHRoIC0xIDpzdHlsZSByZWxlYXNlZC1idXR0b24pCisgICAgIDpiYWNr Z3JvdW5kICJncmV5NTAiCisgICAgIDpmb3JlZ3JvdW5kICJncmV5NzAiKQorICAgICh0CisgICAg IDppbnZlcnNlLXZpZGVvIHQKKyAgICAgOmJhY2tncm91bmQgImJyaWdodGJsYWNrIikpCisgICJG YWNlIHVzZWQgZm9yIGJ1dHRvbnMgd2hlbiB0aGUgYnV0dG9uIGlzIGRpc2FibGVkLiIKKyAgOmdy b3VwICd3aW5kb3ctdG9vbC1iYXIpCisMCis7OzsgV29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9kZWJi dWdzLmdudS5vcmcvY2dpL2J1Z3JlcG9ydC5jZ2k/YnVnPTY4MzM0LgorKGRlZnVuIHdpbmRvdy10 b29sLWJhci0tZ2V0LWtleW1hcCAoKQorICAiUmV0dXJuIHRoZSB0b29sIGJhciBrZXltYXAuIgor ICAobGV0ICgodG9vbC1iYXItYWx3YXlzLXNob3ctZGVmYXVsdCBuaWwpKQorICAgIChpZiAoYW5k ICh2ZXJzaW9uPCBlbWFjcy12ZXJzaW9uICIzMCIpCisgICAgICAgICAgICAgKG5vdCAod2luZG93 LXRvb2wtYmFyLS11c2UtaW1hZ2VzKSkpCisgICAgICAgIDs7IFRoaXMgY29kZSBwYXRoIGlzIGEg bGVzcyBlZmZpY2llbnQgd29ya2Fyb3VuZC4KKyAgICAgICAgKHdpbmRvdy10b29sLWJhci0tbWFr ZS1rZXltYXAtMSkKKyAgICAgIChrZXltYXAtZ2xvYmFsLWxvb2t1cCAiPHRvb2wtYmFyPiIpKSkp CisKKyhkZWNsYXJlLWZ1bmN0aW9uIGltYWdlLW1hc2stcCAiaW1hZ2UuYyIgKHNwZWMgJm9wdGlv bmFsIGZyYW1lKSkKKworKGRlZnVuIHdpbmRvdy10b29sLWJhci0tbWFrZS1rZXltYXAtMSAoKQor ICAiUGF0Y2hlZCBjb3B5IG9mIGB0b29sLWJhci1tYWtlLWtleW1hcC0xJy4iCisgIChtYXBjYXIg KGxhbWJkYSAoYmluZCkKKyAgICAgICAgICAgIChsZXQgKGltYWdlLWV4cCBwbGlzdCkKKyAgICAg ICAgICAgICAgKHdoZW4gKGFuZCAoZXEgKGNhci1zYWZlIChjZHItc2FmZSBiaW5kKSkgJ21lbnUt aXRlbSkKKyAgICAgICAgICAgICAgICAgICAgICAgICA7OyBGb3IgdGhlIGZvcm1hdCBvZiBtZW51 LWl0ZW1zLCBzZWUgbm9kZQorICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGBFeHRlbmRlZCBN ZW51IEl0ZW1zJyBpbiB0aGUgRWxpc3AgbWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAg IChzZXRxIHBsaXN0IChudGhjZHIgKGlmIChjb25zcCAobnRoIDQgYmluZCkpIDUgNCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQpKQorICAgICAgICAg ICAgICAgICAgICAgICAgIChzZXRxIGltYWdlLWV4cCAocGxpc3QtZ2V0IHBsaXN0IDppbWFnZSkp CisgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnNwIGltYWdlLWV4cCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAobm90IChlcSAoY2FyIGltYWdlLWV4cCkgJ2ltYWdlKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAoZmJvdW5kcCAoY2FyIGltYWdlLWV4cCkpKQorICAgICAgICAgICAg ICAgIChsZXQgKChpbWFnZSAoYW5kIChkaXNwbGF5LWltYWdlcy1wKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChldmFsIGltYWdlLWV4cCkpKSkKKyAgICAgICAgICAgICAgICAg ICh1bmxlc3MgKGFuZCBpbWFnZSAoaW1hZ2UtbWFzay1wIGltYWdlKSkKKyAgICAgICAgICAgICAg ICAgICAgKHNldHEgaW1hZ2UgKGFwcGVuZCBpbWFnZSAnKDptYXNrIGhldXJpc3RpYykpKSkKKyAg ICAgICAgICAgICAgICAgIChzZXRxIGJpbmQgKGNvcHktc2VxdWVuY2UgYmluZCkKKyAgICAgICAg ICAgICAgICAgICAgICAgIHBsaXN0IChudGhjZHIgKGlmIChjb25zcCAobnRoIDQgYmluZCkpIDUg NCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZCkpCisgICAgICAg ICAgICAgICAgICAocGxpc3QtcHV0IHBsaXN0IDppbWFnZSBpbWFnZSkpKQorICAgICAgICAgICAg ICBiaW5kKSkKKyAgICAgICAgICB0b29sLWJhci1tYXApKQorCisoZGVmdW4gd2luZG93LXRvb2wt YmFyLS10dXJuLW9uICgpCisgICJJbnRlcm5hbCBmdW5jdGlvbiBjYWxsZWQgYnkgYGdsb2JhbC13 aW5kb3ctdG9vbC1iYXItbW9kZScuIgorICAod2hlbiBnbG9iYWwtd2luZG93LXRvb2wtYmFyLW1v ZGUKKyAgICAod2luZG93LXRvb2wtYmFyLW1vZGUgMSkpKQorCisocHJvdmlkZSAnd2luZG93LXRv b2wtYmFyKQorCis7Ozsgd2luZG93LXRvb2wtYmFyLmVsIGVuZHMgaGVyZQotLSAKMi4zOS4yCgo= --=_e5632d0cfc62a648b7facac2172acc71-- From debbugs-submit-bounces@debbugs.gnu.org Thu May 02 02:19:33 2024 Received: (at 68765) by debbugs.gnu.org; 2 May 2024 06:19:33 +0000 Received: from localhost ([127.0.0.1]:41753 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s2Pn3-0004DQ-IY for submit@debbugs.gnu.org; Thu, 02 May 2024 02:19:33 -0400 Received: from relay5-d.mail.gandi.net ([217.70.183.197]:37969) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s2Pn1-0004DI-0h for 68765@debbugs.gnu.org; Thu, 02 May 2024 02:19:31 -0400 Received: by mail.gandi.net (Postfix) with ESMTPSA id 1FC311C0003; Thu, 2 May 2024 06:19:00 +0000 (UTC) From: Juri Linkov To: Jared Finder Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <86cyrg5hc0.fsf@mail.linkov.net> (Juri Linkov's message of "Wed, 27 Mar 2024 09:04:30 +0200") Organization: LINKOV.NET References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> Date: Thu, 02 May 2024 09:03:20 +0300 Message-ID: <865xvyoupe.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-Sasl: juri@linkov.net X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 68765 Cc: Philip Kaludercic , Eli Zaretskii , 68765@debbugs.gnu.org, Stefan Monnier X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) >> It's been four weeks and I've seen no reply to this comment. Are there any >> other concerns? > > Sorry, I didn't know that you expected that I should review your patch - > I was silent because your last patch has no changes in tab-line.el, > so I have no more objections in this regard. The reason why no changes are required in tab-line.el is because this feature is not exclusively for the tab line, so window-tool-bar.el should also handle the case when the tool bar is combined with the header line. For example, in Info mode the users might prefer to show the Info tool bar icons and Next/Prev/Up on the same header line. From debbugs-submit-bounces@debbugs.gnu.org Thu May 09 04:00:58 2024 Received: (at 68765) by debbugs.gnu.org; 9 May 2024 08:00:58 +0000 Received: from localhost ([127.0.0.1]:53837 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s4yi2-0004eH-8g for submit@debbugs.gnu.org; Thu, 09 May 2024 04:00:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36152) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s4yhz-0004eB-OD for 68765@debbugs.gnu.org; Thu, 09 May 2024 04:00:56 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s4yhT-0003jd-Tt; Thu, 09 May 2024 04:00:23 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=9WtTc9DJEyNy03EPMrM5x8MZyjuhTvLKGFShfTmvDYs=; b=SB7ktZn+Gw28 OYna6l26Yfi4vGX9lnv8F8+uSNtIPfcKhRkhluk8/BjffEvZKsDW9E3JilGZXJTPCGFRKb4lmAdR8 ba9mygUk/2hwKGXjU9OAa+G80Z6tWpu7XTdz/sUhMytJ21tSW81O6a0Ds+5+gpslRaKS+WGo7DMpr T3CJArvtmPb1SfCdmEnIXI86wF0LL1rkAANqP4fa36JtTp4w0npa2+GPvlHnFLlrayM0MC2QCik2C LrbrPoG/WbFfwMPVOyA9YQO6E59HE9T2HCUPirScwGMx7U1MziTjud9kKp+H2UIIPRIOOIqyShSpe /ZiYkQiBK08gTWXPnz0ciA==; Date: Thu, 09 May 2024 11:00:20 +0300 Message-Id: <86frur76uj.fsf@gnu.org> From: Eli Zaretskii To: Juri Linkov In-Reply-To: <865xvyoupe.fsf@mail.linkov.net> (message from Juri Linkov on Thu, 02 May 2024 09:03:20 +0300) Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, jared@finder.org, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Juri Linkov > Cc: Eli Zaretskii , 68765@debbugs.gnu.org, Philip Kaludercic > , Stefan Monnier > Date: Thu, 02 May 2024 09:03:20 +0300 > > >> It's been four weeks and I've seen no reply to this comment. Are there any > >> other concerns? > > > > Sorry, I didn't know that you expected that I should review your patch - > > I was silent because your last patch has no changes in tab-line.el, > > so I have no more objections in this regard. > > The reason why no changes are required in tab-line.el is > because this feature is not exclusively for the tab line, > so window-tool-bar.el should also handle the case > when the tool bar is combined with the header line. > For example, in Info mode the users might prefer to show > the Info tool bar icons and Next/Prev/Up > on the same header line. If there's an agreement about this issue, could you, Jared, please post the final patch reflecting the agreements? If there's no agreement, what are the issues that prevent it? Thanks. From debbugs-submit-bounces@debbugs.gnu.org Fri May 10 00:24:05 2024 Received: (at 68765) by debbugs.gnu.org; 10 May 2024 04:24:05 +0000 Received: from localhost ([127.0.0.1]:41517 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s5Hnh-00065d-3K for submit@debbugs.gnu.org; Fri, 10 May 2024 00:24:05 -0400 Received: from greenhill.hpalace.com ([192.155.80.58]:41188) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s5Hnd-00065L-P7 for 68765@debbugs.gnu.org; Fri, 10 May 2024 00:24:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=finder.org; s=2018; t=1715315042; bh=izzSLHscYYCaZHox99DznnmFt3zYDt9SqSkYoew3Uuw=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=cTuLiJ1jzdrT3y4nhYCaMaYRAaxCHe91t85pb+50sYHGMo23UpVIdehMd79Z4PEXZ ktP09XxYuGJD1XNX03T0DfwXXkmJ3YIX4uq+dQOr8CDNyiHZ8GSODini4ZimXWMH7g cp8YJ2u9vqD9lbgRFVHuAuG1Q8QuM/wZ8QK8e/zEKh7ANG74U4jE+6+x5uVyZBrK8O i03UF6pAJRoCReo1ltgPJUZaKdSDahJxJhZFNOcJllOK62bw8v/ya73whg+jCdV5oF wWiz44qm+vGwWJjWk/IQic+nL9gte6DqmuTSN/sk4TrTgXSIkis4yBxjfhmQVNXo90 cYheS5+7sxjdw== Received: from mail.finder.org (unknown [192.155.80.58]) by greenhill.hpalace.com (Postfix) with ESMTPSA id 66FD1C4F; Fri, 10 May 2024 04:24:02 +0000 (UTC) MIME-Version: 1.0 Date: Thu, 09 May 2024 21:24:02 -0700 From: Jared Finder To: Eli Zaretskii Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <86frur76uj.fsf@gnu.org> References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> Message-ID: <791456a05f91c68549027ea1ea33eaf6@finder.org> X-Sender: jared@finder.org Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 3.8 (+++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On 2024-05-09 01:00, Eli Zaretskii wrote: >> From: Juri Linkov >> Cc: Eli Zaretskii , 68765@debbugs.gnu.org, Philip >> Kaludercic >> , Stefan Monnie [...] Content analysis details: (3.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [192.155.80.58 listed in zen.spamhaus.org] 0.1 URIBL_CSS_A Contains URL's A record listed in the Spamhaus CSS blocklist [URIs: finder.org] 0.1 URIBL_CSS Contains an URL's NS IP listed in the Spamhaus CSS blocklist [URIs: finder.org] X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, Juri Linkov X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.8 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On 2024-05-09 01:00, Eli Zaretskii wrote: >> From: Juri Linkov >> Cc: Eli Zaretskii , 68765@debbugs.gnu.org, Philip >> Kaludercic >> , Stefan Monnie [...] Content analysis details: (2.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [192.155.80.58 listed in zen.spamhaus.org] 0.1 URIBL_CSS_A Contains URL's A record listed in the Spamhaus CSS blocklist [URIs: finder.org] 0.1 URIBL_CSS Contains an URL's NS IP listed in the Spamhaus CSS blocklist [URIs: finder.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager On 2024-05-09 01:00, Eli Zaretskii wrote: >> From: Juri Linkov >> Cc: Eli Zaretskii , 68765@debbugs.gnu.org, Philip >> Kaludercic >> , Stefan Monnier >> Date: Thu, 02 May 2024 09:03:20 +0300 >> >> >> It's been four weeks and I've seen no reply to this comment. Are there any >> >> other concerns? >> > >> > Sorry, I didn't know that you expected that I should review your patch - >> > I was silent because your last patch has no changes in tab-line.el, >> > so I have no more objections in this regard. >> >> The reason why no changes are required in tab-line.el is >> because this feature is not exclusively for the tab line, >> so window-tool-bar.el should also handle the case >> when the tool bar is combined with the header line. >> For example, in Info mode the users might prefer to show >> the Info tool bar icons and Next/Prev/Up >> on the same header line. > > If there's an agreement about this issue, could you, Jared, please > post the final patch reflecting the agreements? > > If there's no agreement, what are the issues that prevent it? I'm unclear on what changes Juri would like to window-tool-bar.el. Sorry for the really long reply, I just want to make sure things are extra clear so I can proceed. First, let me share some additional information. window-tool-bar.el currently provides two ways for a user to put the tool bar buttons into tab line / header line / mode line: The command window-tool-bar-mode for simple enablement. The function window-tool-bar-string can be added as (:eval (window-tool-bar-string)) to tab-line-format, header-line-format, or mode-line-format programmatically for more advanced placement. I think the above interface is the right thing to have from a user perspective. Then the most straightforward thing would be to make M-x window-tool-bar-mode behave similar to M-x tab-line-mode: it would always put the tool bar on the tab line, and only make changes if nothing else changed tab-line-format. Additionally, I would make a very small change then to tab-line.el to display a message to the user if M-x tab-line-mode does not actually changing anything to avoid user confusion as this now can happen by running commands (M-x window-tool-bar-mode RET M-x tab-line-mode RET, for example). I would add similar messaging to window-tool-bar as well. Does this sound like a good plan? -- MJF From debbugs-submit-bounces@debbugs.gnu.org Sat May 11 00:33:50 2024 Received: (at 68765) by debbugs.gnu.org; 11 May 2024 04:33:50 +0000 Received: from localhost ([127.0.0.1]:46020 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s5eQf-0001J4-V5 for submit@debbugs.gnu.org; Sat, 11 May 2024 00:33:50 -0400 Received: from greenhill.hpalace.com ([192.155.80.58]:53898) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s5eQc-0001Iw-N4 for 68765@debbugs.gnu.org; Sat, 11 May 2024 00:33:48 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=finder.org; s=2018; t=1715402026; bh=NFX7gfYNrFVA5lw1vYUc89MMxpTjU18ap6TVAxiiJ9Q=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=fEfl2UvAEepE4Q8GLmbrhRFvQaU9y0n8jnrMnH81JXu12njv03NgDDrFv4At/j2Tw 9lbu5mn1dl+S7HBW0wg8KEMKeBDEKpwubQ2Ry4pBv1Sb0CElzRRls2LGsmQkY/qrgv 1VExHq4m/FumNEwA7ID1ot3DtwTS92XcD5ZUHSPRvvJJ3HsvF/P7cpCQfcTp7xTL0X CZS+G3RxEo+ocyQJDLo00Y6m088UAhUbF/867VAgvGp+MMV3NqGV0t1zIFZJdc9k0x fg/jW7CLJpIpF1nFSOoyCP3mjlOpD0Byp4bwo29Hp0RzOQZfBpvwrhbMkSVJvVDUE0 XDSNh5an+a8Tg== Received: from mail.finder.org (unknown [192.155.80.58]) by greenhill.hpalace.com (Postfix) with ESMTPSA id 7ABF85DA; Sat, 11 May 2024 04:33:46 +0000 (UTC) MIME-Version: 1.0 Date: Fri, 10 May 2024 21:33:46 -0700 From: Jared Finder To: Eli Zaretskii Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <791456a05f91c68549027ea1ea33eaf6@finder.org> References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> Message-ID: <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> X-Sender: jared@finder.org Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, Juri Linkov X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) My prior reply got blocked as spam. Sending again. On 2024-05-09 01:00, Eli Zaretskii wrote: >> From: Juri Linkov >> Cc: Eli Zaretskii , 68765@debbugs.gnu.org, Philip >> Kaludercic >> , Stefan Monnier >> Date: Thu, 02 May 2024 09:03:20 +0300 >> >> >> It's been four weeks and I've seen no reply to this comment. Are there any >> >> other concerns? >> > >> > Sorry, I didn't know that you expected that I should review your patch - >> > I was silent because your last patch has no changes in tab-line.el, >> > so I have no more objections in this regard. >> >> The reason why no changes are required in tab-line.el is >> because this feature is not exclusively for the tab line, >> so window-tool-bar.el should also handle the case >> when the tool bar is combined with the header line. >> For example, in Info mode the users might prefer to show >> the Info tool bar icons and Next/Prev/Up >> on the same header line. > > If there's an agreement about this issue, could you, Jared, please > post the final patch reflecting the agreements? > > If there's no agreement, what are the issues that prevent it? I'm unclear on what changes Juri would like to window-tool-bar.el. Sorry for the really long reply, I just want to make sure things are extra clear so I can proceed. First, let me share some additional information. window-tool-bar.el currently provides two ways for a user to put the tool bar buttons into tab line / header line / mode line: The command window-tool-bar-mode for simple enablement. The function window-tool-bar-string can be added as (:eval (window-tool-bar-string)) to tab-line-format, header-line-format, or mode-line-format programmatically for more advanced placement. I think the above interface is the right thing to have from a user perspective. Then the most straightforward thing would be to make M-x window-tool-bar-mode behave similar to M-x tab-line-mode: it would always put the tool bar on the tab line, and only make changes if nothing else changed tab-line-format. Additionally, I would make a very small change then to tab-line.el to display a message to the user if M-x tab-line-mode does not actually changing anything to avoid user confusion as this now can happen by running commands (M-x window-tool-bar-mode RET M-x tab-line-mode RET, for example). I would add similar messaging to window-tool-bar as well. Does this sound like a good plan? -- MJF From debbugs-submit-bounces@debbugs.gnu.org Sun May 12 12:39:17 2024 Received: (at 68765) by debbugs.gnu.org; 12 May 2024 16:39:18 +0000 Received: from localhost ([127.0.0.1]:55304 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s6CEH-0006DR-Je for submit@debbugs.gnu.org; Sun, 12 May 2024 12:39:17 -0400 Received: from relay8-d.mail.gandi.net ([217.70.183.201]:33051) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s6CED-0006DA-NB for 68765@debbugs.gnu.org; Sun, 12 May 2024 12:39:15 -0400 Received: by mail.gandi.net (Postfix) with ESMTPSA id BB3C31BF206; Sun, 12 May 2024 16:39:05 +0000 (UTC) From: Juri Linkov To: Jared Finder Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> (Jared Finder's message of "Fri, 10 May 2024 21:33:46 -0700") Organization: LINKOV.NET References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> Date: Sun, 12 May 2024 19:34:22 +0300 Message-ID: <86le4fxa41.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-Sasl: juri@linkov.net X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, Eli Zaretskii , 68765@debbugs.gnu.org, monnier@iro.umontreal.ca X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) >>> >> It's been four weeks and I've seen no reply to this comment. Are >>> >> there any other concerns? >>> > >>> > Sorry, I didn't know that you expected that I should review your patch - >>> > I was silent because your last patch has no changes in tab-line.el, >>> > so I have no more objections in this regard. >>> The reason why no changes are required in tab-line.el is >>> because this feature is not exclusively for the tab line, >>> so window-tool-bar.el should also handle the case >>> when the tool bar is combined with the header line. >>> For example, in Info mode the users might prefer to show >>> the Info tool bar icons and Next/Prev/Up >>> on the same header line. >> If there's an agreement about this issue, could you, Jared, please >> post the final patch reflecting the agreements? >> If there's no agreement, what are the issues that prevent it? > > I'm unclear on what changes Juri would like to window-tool-bar.el. Sorry > for the really long reply, I just want to make sure things are extra clear > so I can proceed. > > First, let me share some additional information. window-tool-bar.el > currently provides two ways for a user to put the tool bar buttons into tab > line / header line / mode line: > > The command window-tool-bar-mode for simple enablement. > The function window-tool-bar-string can be added as (:eval > (window-tool-bar-string)) to tab-line-format, header-line-format, or > mode-line-format programmatically for more advanced placement. > > I think the above interface is the right thing to have from a user > perspective. Then the most straightforward thing would be to make M-x > window-tool-bar-mode behave similar to M-x tab-line-mode: it would always > put the tool bar on the tab line, and only make changes if nothing else > changed tab-line-format. > > Additionally, I would make a very small change then to tab-line.el to > display a message to the user if M-x tab-line-mode does not actually > changing anything to avoid user confusion as this now can happen by running > commands (M-x window-tool-bar-mode RET M-x tab-line-mode RET, for example). > I would add similar messaging to window-tool-bar as well. > > Does this sound like a good plan? Thanks, looks like a good thing to do. From debbugs-submit-bounces@debbugs.gnu.org Tue May 14 00:14:23 2024 Received: (at 68765) by debbugs.gnu.org; 14 May 2024 04:14:23 +0000 Received: from localhost ([127.0.0.1]:36707 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s6jYU-0006fM-3N for submit@debbugs.gnu.org; Tue, 14 May 2024 00:14:23 -0400 Received: from greenhill.hpalace.com ([192.155.80.58]:46892) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s6jYQ-0006fC-Fa for 68765@debbugs.gnu.org; Tue, 14 May 2024 00:14:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=finder.org; s=2018; t=1715660056; bh=58vfU163RUzia07tAjx2zEZpKGOiCT6Va/zT/9+o/bE=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=D22qHpplY42eiiZ3DdNfZ9MxYEnujtVIQLvnRN3uvFtb66tBiZGR0K5sw9zlms6nR 6PGt/9JIFD5SgtQjoGVlmAQBBp3egayAcb3QuGsc7JxTrp52kKc+tPT+t2b5PlKVWX fBPZv8db4VTim0W8Xrec9qNKiRlCoIdY6NIYEPT/vOLVuRaVsffj5PusnOLu4Ky8L4 Fbt1dwM4wODCTKByjqzncYdFrdVQcbDiMwZzzpP7+qNW5MA3CVy4qCPrNISOXaZ1tQ qK+1kL2kND+bWBJCRvYQBYU5J7DcO1Y2+Y8Afv48cPJtbTUqnS1FTX7TvncFgBgSdq Mmhd8P2IBUFVw== Received: from mail.finder.org (unknown [192.155.80.58]) by greenhill.hpalace.com (Postfix) with ESMTPSA id 935FFE87; Tue, 14 May 2024 04:14:16 +0000 (UTC) MIME-Version: 1.0 Date: Mon, 13 May 2024 21:14:16 -0700 From: Jared Finder To: Juri Linkov Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <86le4fxa41.fsf@mail.linkov.net> References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> Message-ID: X-Sender: jared@finder.org Content-Type: multipart/mixed; boundary="=_fa006a63f9e661853cc34e753767b04f" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, Eli Zaretskii , 68765@debbugs.gnu.org, monnier@iro.umontreal.ca X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=_fa006a63f9e661853cc34e753767b04f Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2024-05-12 09:34, Juri Linkov wrote: >>> If there's an agreement about this issue, could you, Jared, please >>> post the final patch reflecting the agreements? >>> If there's no agreement, what are the issues that prevent it? ... details elided ... >> Does this sound like a good plan? > > Thanks, looks like a good thing to do. Thank you! Final version of all three commits attached. These address all comments raised on this thread. I think after these patches are applied, the remaining work to resolve this would be having the ELPA package added and me updating NEWS and the manual. I can start on the updates. -- MJF --=_fa006a63f9e661853cc34e753767b04f Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-Inform-user-when-tab-line-mode-command-makes-no-chan.patch Content-Disposition: attachment; filename=0001-Inform-user-when-tab-line-mode-command-makes-no-chan.patch; size=1454 RnJvbSAwZWMxOTc0OGM1ZDk3M2E5M2VkMDAzMzZmY2M5NTVlYzVlOGQ5Mzk3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+CkRhdGU6 IFN1biwgMTIgTWF5IDIwMjQgMjA6MzU6NTAgLTA3MDAKU3ViamVjdDogW1BBVENIIDEvM10gSW5m b3JtIHVzZXIgd2hlbiB0YWItbGluZS1tb2RlIGNvbW1hbmQgbWFrZXMgbm8gY2hhbmdlCgoqIGxp c3AvdGFiLWxpbmUuZWwgKHRhYi1saW5lLW1vZGUpOiBEaXNwbGF5IG1lc3NhZ2Ugd2hlbiBjb21t YW5kIGlzCnJ1biBvbiBhbHJlYWR5IGFsdGVyZWQgdGFiLWxpbmUtZm9ybWF0LgotLS0KIGxpc3Av dGFiLWxpbmUuZWwgfCAxNCArKysrKysrKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEwIGluc2Vy dGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC90YWItbGluZS5lbCBi L2xpc3AvdGFiLWxpbmUuZWwKaW5kZXggNjg5OGJhNTNlMDIuLjMxNmM4N2ZiM2FkIDEwMDY0NAot LS0gYS9saXNwL3RhYi1saW5lLmVsCisrKyBiL2xpc3AvdGFiLWxpbmUuZWwKQEAgLTExMjQsMTEg KzExMjQsMTcgQEAgdGFiLWxpbmUtbW9kZQogICAobGV0ICgoZGVmYXVsdC12YWx1ZSAnKDpldmFs ICh0YWItbGluZS1mb3JtYXQpKSkpCiAgICAgKGlmIHRhYi1saW5lLW1vZGUKICAgICAgICAgOzsg UHJlc2VydmUgdGhlIGV4aXN0aW5nIHRhYi1saW5lIHNldCBvdXRzaWRlIG9mIHRoaXMgbW9kZQot ICAgICAgICAodW5sZXNzIHRhYi1saW5lLWZvcm1hdAotICAgICAgICAgIChzZXRxIHRhYi1saW5l LWZvcm1hdCBkZWZhdWx0LXZhbHVlKSkKKyAgICAgICAgKGlmIChudWxsIHRhYi1saW5lLWZvcm1h dCkKKyAgICAgICAgICAgIChzZXRxIHRhYi1saW5lLWZvcm1hdCBkZWZhdWx0LXZhbHVlKQorICAg ICAgICAgIChtZXNzYWdlCisgICAgICAgICAgICJ0YWItbGluZS1mb3JtYXQgc2V0IG91dHNpZGUg b2YgdGFiLWxpbmUtbW9kZSwgY3VycmVudGx5IGAlUyciCisgICAgICAgICAgIHRhYi1saW5lLWZv cm1hdCkpCiAgICAgICA7OyBSZXNldCBvbmx5IHZhbHVlcyBzZXQgYnkgdGhpcyBtb2RlCi0gICAg ICAod2hlbiAoZXF1YWwgdGFiLWxpbmUtZm9ybWF0IGRlZmF1bHQtdmFsdWUpCi0gICAgICAgIChz ZXRxIHRhYi1saW5lLWZvcm1hdCBuaWwpKSkpKQorICAgICAgKGlmIChlcXVhbCB0YWItbGluZS1m b3JtYXQgZGVmYXVsdC12YWx1ZSkKKyAgICAgICAgICAoc2V0cSB0YWItbGluZS1mb3JtYXQgbmls KQorICAgICAgICAobWVzc2FnZQorICAgICAgICAgInRhYi1saW5lLWZvcm1hdCBzZXQgb3V0c2lk ZSBvZiB0YWItbGluZS1tb2RlLCBjdXJyZW50bHkgYCVTJyIKKyAgICAgICAgIHRhYi1saW5lLWZv cm1hdCkpKSkpCiAKIChkZWZjdXN0b20gdGFiLWxpbmUtZXhjbHVkZS1tb2RlcwogICAnKGNvbXBs ZXRpb24tbGlzdC1tb2RlKQotLSAKMi4zOS4yCgo= --=_fa006a63f9e661853cc34e753767b04f Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0002-Add-user-option-to-only-display-default-tool-bar.patch Content-Disposition: attachment; filename=0002-Add-user-option-to-only-display-default-tool-bar.patch; size=2059 RnJvbSAyMzJlYzQ3ZDFkOWU4ZjViMWFjMDdkYjEyNTFlODljMWZlYjczZTg1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+CkRhdGU6 IEZyaSwgMjYgSmFuIDIwMjQgMTA6MDg6MzAgLTA4MDAKU3ViamVjdDogW1BBVENIIDIvM10gQWRk IHVzZXIgb3B0aW9uIHRvIG9ubHkgZGlzcGxheSBkZWZhdWx0IHRvb2wgYmFyCgpUaGlzIHdvcmtz IHdlbGwgd2l0aCBgd2luZG93LXRvb2wtYmFyLW1vZGUnLCB0byBiZSBhZGRlZCBpbiB1cGNvbWlu Zwpjb21taXQuICBUaGVuIHRoZSBkZWZhdWx0IHRvb2wgYmFyIGlzIGRpc3BsYXllZCBmcmFtZS13 aWRlIGFuZAptb2RlLXNwZWNpZmljIHRvb2wgYmFycyBhcmUgZGlzcGxheWVkIGluIHRoZSB3aW5k b3cgdGhhdCBtb2RlIGlzCmFjdGl2ZSBpbi4KCiogbGlzcC90b29sLWJhci5lbCAodG9vbC1iYXIt YWx3YXlzLXNob3ctZGVmYXVsdCk6IE5ldyB1c2VyIG9wdGlvbi4KKHRvb2wtYmFyLS1jYWNoZS1r ZXksIHRvb2wtYmFyLW1ha2Uta2V5bWFwLTEpOiBSZXR1cm4gZGVmYXVsdCB0b29sIGJhcgp3aGVu IG9wdGlvbiBpcyBzZXQuCi0tLQogbGlzcC90b29sLWJhci5lbCB8IDE3ICsrKysrKysrKysrKysr Ky0tCiAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9saXNwL3Rvb2wtYmFyLmVsIGIvbGlzcC90b29sLWJhci5lbAppbmRleCAwZjY0 NTMzODY3NC4uMDFjNjVjNDIzMjQgMTAwNjQ0Ci0tLSBhL2xpc3AvdG9vbC1iYXIuZWwKKysrIGIv bGlzcC90b29sLWJhci5lbApAQCAtMTAwLDcgKzEwMCw5IEBAIHNlY29uZGFyeS10b29sLWJhci1t YXAKIChkZWZjb25zdCB0b29sLWJhci1rZXltYXAtY2FjaGUgKG1ha2UtaGFzaC10YWJsZSA6dGVz dCAjJ2VxdWFsKSkKIAogKGRlZnN1YnN0IHRvb2wtYmFyLS1jYWNoZS1rZXkgKCkKLSAgKGNvbnMg KGZyYW1lLXRlcm1pbmFsKSAoc3hoYXNoLWVxIHRvb2wtYmFyLW1hcCkpKQorICAoY29ucyAoZnJh bWUtdGVybWluYWwpCisgICAgICAgIChzeGhhc2gtZXEgKGlmIHRvb2wtYmFyLWFsd2F5cy1zaG93 LWRlZmF1bHQgKGRlZmF1bHQtdmFsdWUgJ3Rvb2wtYmFyLW1hcCkKKyAgICAgICAgICAgICAgICAg ICAgIHRvb2wtYmFyLW1hcCkpKSkKIAogKGRlZnN1YnN0IHRvb2wtYmFyLS1zZWNvbmRhcnktY2Fj aGUta2V5ICgpCiAgIChjb25zIChmcmFtZS10ZXJtaW5hbCkgKHN4aGFzaC1lcSBzZWNvbmRhcnkt dG9vbC1iYXItbWFwKSkpCkBAIC0xOTEsNyArMTkzLDkgQEAgdG9vbC1iYXItbWFrZS1rZXltYXAt MQogCQkJCSAgICAgIGJpbmQpKQogCQkgIChwbGlzdC1wdXQgcGxpc3QgOmltYWdlIGltYWdlKSkp CiAJICAgICAgYmluZCkpCi0JICAob3IgbWFwIHRvb2wtYmFyLW1hcCkpKQorCSAgKG9yIG1hcAor ICAgICAgICAgICAgICAoaWYgdG9vbC1iYXItYWx3YXlzLXNob3ctZGVmYXVsdCAoZGVmYXVsdC12 YWx1ZSAndG9vbC1iYXItbWFwKQorICAgICAgICAgICAgICAgIHRvb2wtYmFyLW1hcCkpKSkKIAog Ozs7IyMjYXV0b2xvYWQKIChkZWZ1biB0b29sLWJhci1hZGQtaXRlbSAoaWNvbiBkZWYga2V5ICZy ZXN0IHByb3BzKQpAQCAtMzc4LDYgKzM4MiwxNSBAQCB0b29sLWJhci1zZXR1cAogCSAgICAgKG1v ZGlmeS1hbGwtZnJhbWVzLXBhcmFtZXRlcnMKIAkgICAgICAobGlzdCAoY29ucyAndG9vbC1iYXIt cG9zaXRpb24gdmFsKSkpKSkpCiAKKyhkZWZjdXN0b20gdG9vbC1iYXItYWx3YXlzLXNob3ctZGVm YXVsdCBuaWwKKyAgIklmIG5vbi1uaWwsIGB0b29sLWJhci1tb2RlJyBvbmx5IHNob3dzIHRoZSBk ZWZhdWx0IHRvb2wgYmFyLgorVGhpcyB3b3JrcyB3ZWxsIHdoZW4gYWxzbyB1c2luZyBgZ2xvYmFs LXdpbmRvdy10b29sLWJhci1tb2RlJyB0bworZGlzcGxheSBidWZmZXItc3BlY2lmaWMgdG9vbCBi YXJzLiIKKyAgOnR5cGUgJ2Jvb2xlYW4KKyAgOmdyb3VwICdmcmFtZXMKKyAgOmdyb3VwICdtb3Vz ZQorICA6dmVyc2lvbiAiMzAuMSIpCisKIAwKIAogOzsgTW9kaWZpZXIgYmFyIG1vZGUuCi0tIAoy LjM5LjIKCg== --=_fa006a63f9e661853cc34e753767b04f Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0003-Adding-window-tool-bar-package.patch Content-Disposition: attachment; filename=0003-Adding-window-tool-bar-package.patch; size=21567 RnJvbSA1Njc1M2UwNWY3YzQ5NTkzZDkyMzkxYjdlNmE5ZWIxYzcyNzI0ZDNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+CkRhdGU6 IEZyaSwgMjYgSmFuIDIwMjQgMTU6NDQ6MTIgLTA4MDAKU3ViamVjdDogW1BBVENIIDMvM10gQWRk aW5nIHdpbmRvdy10b29sLWJhciBwYWNrYWdlCgotLS0KIGxpc3Avd2luZG93LXRvb2wtYmFyLmVs IHwgNDkxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBj aGFuZ2VkLCA0OTEgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpc3Avd2luZG93 LXRvb2wtYmFyLmVsCgpkaWZmIC0tZ2l0IGEvbGlzcC93aW5kb3ctdG9vbC1iYXIuZWwgYi9saXNw L3dpbmRvdy10b29sLWJhci5lbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uNjQwZGVjY2RkNjEKLS0tIC9kZXYvbnVsbAorKysgYi9saXNwL3dpbmRvdy10b29sLWJhci5l bApAQCAtMCwwICsxLDQ5MSBAQAorOzs7IHdpbmRvdy10b29sLWJhci5lbCAtLS0gQWRkIHRvb2wg YmFycyBpbnNpZGUgd2luZG93cyAtKi0gbGV4aWNhbC1iaW5kaW5nOiB0IC0qLQorCis7OyBDb3B5 cmlnaHQgKEMpIDIwMjMtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworOzsg QXV0aG9yOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+Cis7OyBDcmVhdGVkOiBOb3Yg MjEsIDIwMjMKKzs7IFZlcnNpb246IDAuMgorOzsgS2V5d29yZHM6IG1vdXNlCis7OyBQYWNrYWdl LVJlcXVpcmVzOiAoKGVtYWNzICIyOS4xIikpCisKKzs7IFRoaXMgaXMgYSBHTlUgRUxQQSA6Y29y ZSBwYWNrYWdlLiAgQXZvaWQgYWRkaW5nIGZ1bmN0aW9uYWxpdHkgdGhhdAorOzsgaXMgbm90IGF2 YWlsYWJsZSBpbiB0aGUgdmVyc2lvbiBvZiBFbWFjcyByZWNvcmRlZCBhYm92ZSBvciBhbnkgb2YK Kzs7IHRoZSBwYWNrYWdlIGRlcGVuZGVuY2llcy4KKworOzsgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg R05VIEVtYWNzLgorCis7OyBHTlUgRW1hY3MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorOzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKzs7IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCis7 OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCis7OyBHTlUgRW1hY3MgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKzs7IGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Cis7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCis7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorCis7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKzs7OyBDb21tZW50YXJ5OgorOzsKKzs7 IFRoaXMgcGFja2FnZSBwdXRzIGEgdG9vbCBiYXIgaW4gZWFjaCB3aW5kb3cuICBUaGlzIGFsbG93 cyB5b3UgdG8gc2VlCis7OyBtdWx0aXBsZSB0b29sIGJhcnMgc2ltdWx0YW5lb3VzbHkgZGlyZWN0 bHkgbmV4dCB0byB0aGUgYnVmZmVyIGl0Cis7OyBhY3RzIG9uIHdoaWNoIGZlZWxzIG11Y2ggbW9y ZSBpbnR1aXRpdmUuICBFbWFjcyAiYnJvd3NpbmciIG1vZGVzCis7OyBnZW5lcmFsbHkgaGF2ZSBz ZW5zaWJsZSB0b29sIGJhcnMsIGZvciBleGFtcGxlOiAqaW5mbyosICpoZWxwKiwgYW5kCis7OyAq ZXd3KiBoYXZlIHRoZW0uCis7OworOzsgSXQgZG9lcyB0aGlzIHdoaWxlIGJlaW5nIG1pbmRmdWwg b2Ygc2NyZWVuIHJlYWwgZXN0YXRlLiAgTW9zdCBtb2RlcworOzsgZG8gbm90IHByb3ZpZGUgYSBj dXN0b20gdG9vbCBiYXIsIGFuZCB0aGlzIHBhY2thZ2UgZG9lcyBub3Qgc2hvdyB0aGUKKzs7IGRl ZmF1bHQgdG9vbCBiYXIuICBUaGlzIG1lYW5zIHRoYXQgZm9yIG1vc3QgYnVmZmVycyB0aGVyZSB3 aWxsIGJlIG5vCis7OyBzcGFjZSB0YWtlbiB1cC4gIEZ1cnRoZXJtb3JlLCB5b3UgY2FuIHB1dCB0 aGlzIHRvb2wgYmFyIGluIHRoZSBtb2RlCis7OyBsaW5lIG9yIHRhYiBsaW5lIGlmIHlvdSB3YW50 IHRvIHNoYXJlIGl0IHdpdGggZXhpc3RpbmcgY29udGVudC4KKzs7Cis7OyBUbyBnZXQgdGhlIGRl ZmF1bHQgYmVoYXZpb3IsIHJ1biAoZ2xvYmFsLXdpbmRvdy10b29sLWJhci1tb2RlIDEpIG9yCis7 OyBlbmFibGUgdmlhIE0teCBjdXN0b21pemUtZ3JvdXAgUkVUIHdpbmRvdy10b29sLWJhciBSRVQu ICBUaGlzIHVzZXMKKzs7IHRoZSBwZXItd2luZG93IHRhYiBsaW5lIHRvIHNob3cgdGhlIHRvb2wg YmFyLgorOzsKKzs7IElmIHlvdSB3YW50IHRvIHNoYXJlIHNwYWNlIHdpdGggYW4gZXhpc3Rpbmcg dGFiIGxpbmUsIG1vZGUgbGluZSwgb3IKKzs7IGhlYWRlciBsaW5lLCBhZGQgKDpldmFsICh3aW5k b3ctdG9vbC1iYXItc3RyaW5nKSkgdG8KKzs7IGB0YWItbGluZS1mb3JtYXQnLCBgbW9kZS1saW5l LWZvcm1hdCcsIG9yIGBoZWFkZXItbGluZS1mb3JtYXQnLgorCis7OzsgS25vd24gaXNzdWVzOgor OzsKKzs7IE9uIEdOVSBFbWFjcyAyOS4xLCB0ZXJtaW5hbHMgZHJhZ2dpbmcgdG8gcmVzaXplIHdp bmRvd3Mgd2lsbCBlcnJvcgorOzsgd2l0aCBtZXNzYWdlICI8dGFiLWxpbmU+IDxtb3VzZS1tb3Zl bWVudD4gaXMgdW5kZWZpbmVkIi4gIFRoaXMgaXMgYQorOzsgYnVnIGluIEdOVSBFbWFjcywKKzs7 IDxodHRwczovL2RlYmJ1Z3MuZ251Lm9yZy9jZ2kvYnVncmVwb3J0LmNnaT9idWc9Njc0NTc+Lgor OzsKKzs7IE9uIEdOVSBFbWFjcyAyOSwgcGVyZm9ybWFuY2UgaW4gdGVybWluYWxzIGlzIGxvd2Vy IHRoYW4gb24KKzs7IGdyYXBoaWNhbCBmcmFtZXMuICBUaGlzIGlzIGR1ZSB0byBhIHdvcmthcm91 bmQsIHNlZSAiV29ya2Fyb3VuZCBmb3IKKzs7IGh0dHBzOi8vZGViYnVncy5nbnUub3JnL2NnaS9i dWdyZXBvcnQuY2dpP2J1Zz02ODMzNCIsIGJlbG93LgorCis7OzsgVG9kbzoKKzs7Cis7OyBOb3Qg YWxsIGZlYXR1cmVzIHBsYW5uZWQgYXJlIGltcGxlbWVudGVkIHlldC4gIEV2ZW50dWFsbHkgSSB3 b3VsZAorOzsgbGlrZSB0byBhbHNvIGdlbmVyYWxseSBtYWtlIHRvb2wgYmFycyBiZXR0ZXIuCis7 OworOzsgVGFyZ2V0aW5nIDAuMzoKKzs7ICogUHJvcGVybHkgc3VwcG9ydCByZWFtaW5pbmcgbGVz cyBmcmVxdWVudGx5IHVzZWQgdG9vbCBiYXIgaXRlbSBzcGVjcy4gIEZyb20KKzs7ICAgYHBhcnNl X3Rvb2xfYmFyX2l0ZW0nOgorOzsgICAgICogOnZpc2libGUKKzs7ICAgICAqIDpmaWx0ZXIKKzs7 ICAgICAqIDpidXR0b24KKzs7ICAgICAqIDp3cmFwCis7OyAqIEFkZCBkaXNwbGF5IGN1c3RvbWl6 YXRpb24gc2ltaWxhciB0byBgdG9vbC1iYXItc3R5bGUnLgorOzsKKzs7IFRhcmdldGluZyAxLjA6 Cis7OworOzsgKiBDbGVhbiB1cCBFbWFjcyB0b29sIGJhcnMKKzs7ICAgICAqIERlZmF1bHQ6IFJl bW92ZSBkZWZhdWx0IHRvb2wtYmFyIGVudGlyZWx5Cis7OyAgICAgKiBncmVwLCB2YzogUmVtb3Zl IGRlZmF1bHQgdG9vbC1iYXIgaW5oZXJpdGVkCis7OyAgICAgKiBpbmZvOiBSZW1vdmUgTmV4dCAv IFByZXYgLyBVcCwgd2hpY2ggaXMgYWxyZWFkeSBpbiB0aGUgaGVhZGVyCis7OyAgICAgKiBzbWVy Z2U6IEFkZCB0b29sIGJhciBmb3IgbmV4dC9wcmV2Cis7OworOzsgUG9zdCAxLjAgd29yazoKKzs7 Cis7OyAqIFNob3cga2V5Ym9hcmQgc2hvcnRjdXQgb24gaGVscCB0ZXh0LgorOzsKKzs7ICogQWRk IGEgYml0IG1vcmUgZG9jdW1lbnRhdGlvbi4KKzs7ICogQWRkIGN1c3RvbWl6YXRpb24gb3B0aW9u OiBpZ25vcmUtZGVmYXVsdC10b29sLWJhci1tYXAKKzs7ICogTWFrZSB0YWItbGluZSBkcmFnZ2lu ZyByZXNpemUgdGhlIHdpbmRvdworCis7OzsgQ29kZToKKworKHJlcXVpcmUgJ213aGVlbCkKKyhy ZXF1aXJlICd0YWItbGluZSkKKyhyZXF1aXJlICd0b29sLWJhcikKKwwKKzs7OyBCZW5jaG1hcmtp bmcgY29kZQorOzsKKzs7IFJlZnJlc2hpbmcgdGhlIHRvb2wgYmFyIGlzIGNvbXB1dGF0aW9uYWxs eSBzaW1wbGUsIGJ1dCBnZW5lcmF0ZXMgYQorOzsgbG90IG9mIGdhcmJhZ2UuICBTbyB0aGlzIGJl bmNobWFya2luZyBmb2N1c2VzIG9uIGdhcmJhZ2UKKzs7IGdlbmVyYXRpb24uICBTaW5jZSBpdCBo YXMgdG8gcnVuIGFmdGVyIG1vc3QgY29tbWFuZHMsIGdlbmVyYXRpbmcKKzs7IHNpZ25pZmljYW50 bHkgbW9yZSBnYXJiYWdlIHdpbGwgY2F1c2Ugbm90aWNlYWJsZSBwZXJmb3JtYW5jZQorOzsgZGVn cmF0aW9uLgorOzsKKzs7IFRoZSByZWZyZXNoIGhhcyB0d28gc3RlcHM6Cis7OworOzsgU3RlcCAx OiBMb29rIHVwIHRoZSA8dG9vbC1iYXI+IG1hcC4KKzs7IFN0ZXAgMjogR2VuZXJhdGUgYSBMaXNw IHN0cmluZyB1c2luZyB0ZXh0IHByb3BlcnRpZXMgZm9yIHRoZSB0b29sCis7OyBiYXIgc3RyaW5n LgorOzsKKzs7IEFkZGl0aW9uYWxseSwgd2Uga2VlcCB0cmFjayBvZiB0aGUgcGVyY2VudGFnZSBv ZiBjb21tYW5kcyB0aGF0Cis7OyBhY3V0YWxseSBjcmVhdGVkIGEgcmVmcmVzaC4KKyhkZWZ2YXIg d2luZG93LXRvb2wtYmFyLS1tZW1vcnktdXNlLWRlbHRhLXN0ZXAxIChtYWtlLWxpc3QgNyAwKQor ICAiQWJzb2x1dGUgZGVsdGEgb2YgbWVtb3J5IHVzZSBjb3VudGVycyBkdXJpbmcgc3RlcCAxLgor VGhpcyBpcyBhIGxpc3QgaW4gdGhlIHNhbWUgc3RydWN0dXJlIGFzIGBtZW1vcnktdXNlLWNvdW50 cycuIikKKyhkZWZ2YXIgd2luZG93LXRvb2wtYmFyLS1tZW1vcnktdXNlLWRlbHRhLXN0ZXAyICht YWtlLWxpc3QgNyAwKQorICAiQWJzb2x1dGUgZGVsdGEgb2YgbWVtb3J5IHVzZSBjb3VudGVycyBk dXJpbmcgc3RlcCAyLgorVGhpcyBpcyBhIGxpc3QgaW4gdGhlIHNhbWUgc3RydWN0dXJlIGFzIGBt ZW1vcnktdXNlLWNvdW50cycuIikKKyhkZWZ2YXIgd2luZG93LXRvb2wtYmFyLS1yZWZyZXNoLWRv bmUtY291bnQgMAorICAiTnVtYmVyIG9mIHRvb2wgYmFyIHN0cmluZyByZWZyZXNoZXMgcnVuLgor VGhlIHRvdGFsIG51bWJlciBvZiByZXF1ZXN0cyBpcyB0aGUgc3VtIG9mIHRoaXMgYW5kCitgd2lu ZG93LXRvb2wtYmFyLS1yZWZyZXNoLXNraXBwZWQtY291bnQnLiIpCisoZGVmdmFyIHdpbmRvdy10 b29sLWJhci0tcmVmcmVzaC1za2lwcGVkLWNvdW50IDAKKyAgIk51bWJlciBvZiB0b29sIGJhciBz dHJpbmcgcmVmcmVzaGVzIHRoYXQgd2VyZSBza2lwcGVkLgorVGhlIHRvdGFsIG51bWJlciBvZiBy ZXF1ZXN0cyBpcyB0aGUgc3VtIG9mIHRoaXMgYW5kCitgd2luZG93LXRvb2wtYmFyLS1yZWZyZXNo LWRvbmUtY291bnQnLiIpCisKKyhkZWZ1biB3aW5kb3ctdG9vbC1iYXItLW1lbW9yeS11c2UtYXZn LXN0ZXAxICgpCisgICJSZXR1cm4gYXZlcmFnZSBtZW1vcnkgdXNlIGRlbHRhIGR1cmluZyBzdGVw IDEuIgorICAobWFwY2FyIChsYW1iZGEgKGVsdCkgKC8gKGZsb2F0IGVsdCkgd2luZG93LXRvb2wt YmFyLS1yZWZyZXNoLWRvbmUtY291bnQpKQorICAgICAgICAgIHdpbmRvdy10b29sLWJhci0tbWVt b3J5LXVzZS1kZWx0YS1zdGVwMSkpCisKKyhkZWZ1biB3aW5kb3ctdG9vbC1iYXItLW1lbW9yeS11 c2UtYXZnLXN0ZXAyICgpCisgICJSZXR1cm4gYXZlcmFnZSBtZW1vcnkgdXNlIGRlbHRhIGR1cmlu ZyBzdGVwIDIuIgorICAobWFwY2FyIChsYW1iZGEgKGVsdCkgKC8gKGZsb2F0IGVsdCkgd2luZG93 LXRvb2wtYmFyLS1yZWZyZXNoLWRvbmUtY291bnQpKQorICAgICAgICAgIHdpbmRvdy10b29sLWJh ci0tbWVtb3J5LXVzZS1kZWx0YS1zdGVwMikpCisKKyhkZWNsYXJlLWZ1bmN0aW9uIHRpbWUtc3Rh bXAtc3RyaW5nICJ0aW1lLXN0YW1wIikKKworKGRlZnVuIHdpbmRvdy10b29sLWJhci1kZWJ1Zy1z aG93LW1lbW9yeS11c2UgKCkKKyAgIkRldmVsb3BtZW50LW9ubHkgY29tbWFuZCB0byBzaG93IG1l bW9yeSB1c2VkIGJ5IGB3aW5kb3ctdG9vbC1iYXItc3RyaW5nJy4iCisgIChpbnRlcmFjdGl2ZSkK KyAgKHJlcXVpcmUgJ3RpbWUtc3RhbXApCisgIChzYXZlLXNlbGVjdGVkLXdpbmRvdworICAgIChw b3AtdG8tYnVmZmVyICIqV1RCIE1lbW9yeSBSZXBvcnQqIikKKyAgICAodW5sZXNzIChkZXJpdmVk LW1vZGUtcCAnc3BlY2lhbC1tb2RlKQorICAgICAgKHNwZWNpYWwtbW9kZSkpCisKKyAgICAoZ290 by1jaGFyIChwb2ludC1tYXgpKQorICAgIChsZXQgKChpbmhpYml0LXJlYWQtb25seSB0KSkKKyAg ICAgIChpbnNlcnQgKHByb3BlcnRpemUgKGNvbmNhdCAiRnVuY3Rpb246IHdpbmRvdy10b29sLWJh ci1zdHJpbmcgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aW1lLXN0YW1w LXN0cmluZykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICdmYWNlICd1bmRlcmxpbmUgJ2Zv bnQtbG9jay1mYWNlICd1bmRlcmxpbmUpCisgICAgICAgICAgICAgICJcblxuIikKKyAgICAgICh3 aW5kb3ctdG9vbC1iYXItLWluc2VydC1tZW1vcnktdXNlCisgICAgICAgIlN0ZXAgMSIgKHdpbmRv dy10b29sLWJhci0tbWVtb3J5LXVzZS1hdmctc3RlcDEpKQorICAgICAgKHdpbmRvdy10b29sLWJh ci0taW5zZXJ0LW1lbW9yeS11c2UKKyAgICAgICAiU3RlcCAyIiAod2luZG93LXRvb2wtYmFyLS1t ZW1vcnktdXNlLWF2Zy1zdGVwMikpCisgICAgICAoaW5zZXJ0IChmb3JtYXQgIlJlZnJlc2ggY291 bnQgICVkXG4iIHdpbmRvdy10b29sLWJhci0tcmVmcmVzaC1kb25lLWNvdW50KQorICAgICAgICAg ICAgICAoZm9ybWF0ICJSZWZyZXNoIGV4ZWN1dGVkIHBlcmNlbnQgJS4yZlxuIgorICAgICAgICAg ICAgICAgICAgICAgICgvIChmbG9hdCB3aW5kb3ctdG9vbC1iYXItLXJlZnJlc2gtZG9uZS1jb3Vu dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKyB3aW5kb3ctdG9vbC1iYXItLXJlZnJlc2gt ZG9uZS1jb3VudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy10b29sLWJhci0t cmVmcmVzaC1za2lwcGVkLWNvdW50KSkpCisgICAgICAgICAgICAgICJcbiIpKSkpCisKKyhkZWZ1 biB3aW5kb3ctdG9vbC1iYXItLWluc2VydC1tZW1vcnktdXNlIChsYWJlbCBhdmctbWVtb3J5LXVz ZSkKKyAgIkluc2VydCBtZW1vcnkgdXNlIGludG8gY3VycmVudCBidWZmZXIuCisKK0xBQkVMIGlz IGEgcHJlZml4IHN0cmluZyB0byBiZSBpbiBmcm9udCBvZiB0aGUgZGF0YS4KK0FWRy1NRU1PUlkt VVNFIGlzIGEgbGlzdCBvZiBhdmVyYWdlcywgd2l0aCB0aGUgc2FtZSBtZWFuaW5nIGFzCitgbWVt b3J5LXVzZS1jb3VudHMnLiIKKyAgKGxldCogKChsYWJlbC1sZW4gKGxlbmd0aCBsYWJlbCkpCisg ICAgICAgICAocGFkZGluZyAobWFrZS1zdHJpbmcgbGFiZWwtbGVuID9ccykpKQorICAgIChjbC1s b29wIGZvciB1c2FnZSBpbiBhdmctbWVtb3J5LXVzZQorICAgICAgICAgICAgIGZvciB1c2FnZS1s YWJlbCBpbiAnKCJDb25zZXMiICJGbG9hdHMiICJWZWN0b3IgY2VsbHMiICJTeW1ib2xzIgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdHJpbmcgY2hhcnMiICJJbnRlcnZhbHMi ICJTdHJpbmdzIikKKyAgICAgICAgICAgICBmb3IgaWR4IGZyb20gMAorICAgICAgICAgICAgIGRv IChpbnNlcnQgKGZvcm1hdCAiJXMgICU4LjJmICVzXG4iCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChpZiAoPSBpZHggMCkgbGFiZWwgcGFkZGluZykKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdXNhZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNh Z2UtbGFiZWwpKSkpKQorDAorKGRlZmdyb3VwIHdpbmRvdy10b29sLWJhciBuaWwKKyAgIlRvb2wg YmFycyBwZXItd2luZG93LiIKKyAgOmdyb3VwICdjb252ZW5pZW5jZQorICA6cHJlZml4ICJ3aW5k b3ctdG9vbC1iYXItIikKKworKGRlZnZhci1rZXltYXAgd2luZG93LXRvb2wtYmFyLS1idXR0b24t a2V5bWFwCisgIDpkb2MgIktleW1hcCB1c2VkIGJ5IGB3aW5kb3ctdG9vbC1iYXItLWtleW1hcC1l bnRyeS10by1zdHJpbmcnLiIKKyAgIjxmb2xsb3ctbGluaz4iICdtb3VzZS1mYWNlCisgIDs7IEZv bGxvdyBsaW5rIG9uIGFsbCBjbGlja3Mgb2YgbW91c2UtMSBhbmQgbW91c2UtMiBzaW5jZSB0aGUg dG9vbAorICA7OyBiYXIgaXMgbm90IGEgcGxhY2UgdGhlIHBvaW50IGNhbiB0cmF2ZWwgdG8uCisg ICI8dGFiLWxpbmU+IDxtb3VzZS0xPiIgIyd3aW5kb3ctdG9vbC1iYXItLWNhbGwtYnV0dG9uCisg ICI8dGFiLWxpbmU+IDxkb3VibGUtbW91c2UtMT4iICMnd2luZG93LXRvb2wtYmFyLS1jYWxsLWJ1 dHRvbgorICAiPHRhYi1saW5lPiA8dHJpcGxlLW1vdXNlLTE+IiAjJ3dpbmRvdy10b29sLWJhci0t Y2FsbC1idXR0b24KKyAgIjx0YWItbGluZT4gPG1vdXNlLTI+IiAjJ3dpbmRvdy10b29sLWJhci0t Y2FsbC1idXR0b24KKyAgIjx0YWItbGluZT4gPGRvdWJsZS1tb3VzZS0yPiIgIyd3aW5kb3ctdG9v bC1iYXItLWNhbGwtYnV0dG9uCisgICI8dGFiLWxpbmU+IDx0cmlwbGUtbW91c2UtMj4iICMnd2lu ZG93LXRvb2wtYmFyLS1jYWxsLWJ1dHRvbgorCisgIDs7IE1vdXNlIGRvd24gZXZlbnRzIGRvIG5v dGhpbmcuICBBIGJpbmRpbmcgaXMgbmVlZGVkIHNvIGlzZWFyY2gKKyAgOzsgZG9lcyBub3QgZXhp dCB3aGVuIHRoZSB0YWIgYmFyIGlzIGNsaWNrZWQuCisgICI8dGFiLWxpbmU+IDxkb3duLW1vdXNl LTE+IiAjJ3dpbmRvdy10b29sLWJhci0taWdub3JlCisgICI8dGFiLWxpbmU+IDxkb3VibGUtZG93 bi1tb3VzZS0xPiIgIyd3aW5kb3ctdG9vbC1iYXItLWlnbm9yZQorICAiPHRhYi1saW5lPiA8dHJp cGxlLWRvd24tbW91c2UtMT4iICMnd2luZG93LXRvb2wtYmFyLS1pZ25vcmUKKyAgIjx0YWItbGlu ZT4gPGRvd24tbW91c2UtMj4iICMnd2luZG93LXRvb2wtYmFyLS1pZ25vcmUKKyAgIjx0YWItbGlu ZT4gPGRvdWJsZS1kb3duLW1vdXNlLTI+IiAjJ3dpbmRvdy10b29sLWJhci0taWdub3JlCisgICI8 dGFiLWxpbmU+IDx0cmlwbGUtZG93bi1tb3VzZS0yPiIgIyd3aW5kb3ctdG9vbC1iYXItLWlnbm9y ZSkKKyhmc2V0ICd3aW5kb3ctdG9vbC1iYXItLWJ1dHRvbi1rZXltYXAgd2luZG93LXRvb2wtYmFy LS1idXR0b24ta2V5bWFwKSA7IFNvIGl0IGNhbiBiZSBhIGtleW1hcCBwcm9wZXJ0eQorCis7OyBS ZWdpc3RlciBiaW5kaW5ncyB0aGF0IHN0YXkgaW4gaXNlYXJjaC4gIFRlY2huaWNhbGx5LCB0aGVz ZQorOzsgY29tbWFuZHMgZG9uJ3QgcG9wIHVwIGEgbWVudSBidXQgdGhleSBhY3QgdmVyeSBzaW1p bGFyIGluIHRoYXQgdGhleQorOzsgYXJlIGNhdXNlZCBieSBtb3VzZSBpbnB1dCBhbmQgbWF5IGNh bGwgY29tbWFuZHMgdmlhCis7OyBgY2FsbC1pbnRlcmFjdGl2ZWx5Jy4KKyhwdXNoICd3aW5kb3ct dG9vbC1iYXItLWNhbGwtYnV0dG9uIGlzZWFyY2gtbWVudS1iYXItY29tbWFuZHMpCisocHVzaCAn d2luZG93LXRvb2wtYmFyLS1pZ25vcmUgaXNlYXJjaC1tZW51LWJhci1jb21tYW5kcykKKworKGRl ZnZhci1sb2NhbCB3aW5kb3ctdG9vbC1iYXItc3RyaW5nLS1jYWNoZSBuaWwKKyAgIkNhY2hlIGZv ciBwcmV2aW91cyByZXN1bHQgb2YgYHdpbmRvdy10b29sLWJhci1zdHJpbmcnLiIpCisKKzs7OyMj I2F1dG9sb2FkCisoZGVmdW4gd2luZG93LXRvb2wtYmFyLXN0cmluZyAoKQorICAiUmV0dXJuIGEg KHByb3BlcnRpemVkKSBzdHJpbmcgZm9yIHRoZSB0b29sIGJhci4KKworVGhpcyBpcyBmb3Igd2hl biB5b3Ugd2FudCBtb3JlIGN1c3RvbWl6YXRpb25zIHRoYW4KK2B3aW5kb3ctdG9vbC1iYXItbW9k ZScgcHJvdmlkZXMuICBDb21tb25seSBhZGRlZCB0byB0aGUgdmFyaWFibGUKK2B0YWItbGluZS1m b3JtYXQnLCBgaGVhZGVyLWxpbmUtZm9ybWF0Jywgb3IgYG1vZGUtbGluZS1mb3JtYXQnIgorICAo aWYgKG9yIChudWxsIHdpbmRvdy10b29sLWJhci1zdHJpbmctLWNhY2hlKQorICAgICAgICAgICh3 aW5kb3ctdG9vbC1iYXItLWxhc3QtY29tbWFuZC10cmlnZ2Vycy1yZWZyZXNoLXApKQorICAgICAg KGxldCogKChtZW0wIChtZW1vcnktdXNlLWNvdW50cykpCisgICAgICAgICAgICAgKHRvb2xiYXIt bWVudSAod2luZG93LXRvb2wtYmFyLS1nZXQta2V5bWFwKSkKKyAgICAgICAgICAgICAobWVtMSAo bWVtb3J5LXVzZS1jb3VudHMpKQorICAgICAgICAgICAgIChyZXN1bHQgKG1hcGNvbmNhdCAjJ3dp bmRvdy10b29sLWJhci0ta2V5bWFwLWVudHJ5LXRvLXN0cmluZworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoY2RyIHRvb2xiYXItbWVudSkgO1NraXAgJ2tleW1hcAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7OyBXaXRob3V0IHNwYWNlcyBiZXR3ZWVuIHRoZSB0ZXh0 LCBob3ZlcmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBoaWdobGlnaHRz IGFsbCBhZGphY2VudCBidXR0b25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo aWYgKHdpbmRvdy10b29sLWJhci0tdXNlLWltYWdlcykKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChwcm9wZXJ0aXplICIgIiAnaW52aXNpYmxlIHQpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIiAiKSkpCisgICAgICAgICAgICAgKG1lbTIgKG1lbW9yeS11 c2UtY291bnRzKSkpCisgICAgICAgIChjbC1tYXBsIChsYW1iZGEgKGwtaW5pdCBsMCBsMSkKKyAg ICAgICAgICAgICAgICAgICAoY2wtaW5jZiAoY2FyIGwtaW5pdCkgKC0gKGNhciBsMSkgKGNhciBs MCkpKSkKKyAgICAgICAgICAgICAgICAgd2luZG93LXRvb2wtYmFyLS1tZW1vcnktdXNlLWRlbHRh LXN0ZXAxIG1lbTAgbWVtMSkKKyAgICAgICAgKGNsLW1hcGwgKGxhbWJkYSAobC1pbml0IGwxIGwy KQorICAgICAgICAgICAgICAgICAgIChjbC1pbmNmIChjYXIgbC1pbml0KSAoLSAoY2FyIGwyKSAo Y2FyIGwxKSkpKQorICAgICAgICAgICAgICAgICB3aW5kb3ctdG9vbC1iYXItLW1lbW9yeS11c2Ut ZGVsdGEtc3RlcDIgbWVtMSBtZW0yKQorCisgICAgICAgIChzZXRmIHdpbmRvdy10b29sLWJhci1z dHJpbmctLWNhY2hlCisgICAgICAgICAgICAgIChjb25jYXQKKyAgICAgICAgICAgICAgIDs7IFRo ZSB0b29sIGJhciBmYWNlIGJ5IGRlZmF1bHQgcHV0cyBib3hlcyBhcm91bmQgdGhlCisgICAgICAg ICAgICAgICA7OyBidXR0b25zLiAgSG93ZXZlciwgdGhpcyBib3ggaXMgbm90IGRpc3BsYXllZCBp ZiB0aGUKKyAgICAgICAgICAgICAgIDs7IGJveCBzdGFydHMgYXQgdGhlIGxlZnRtb3N0IHBpeGVs IG9mIHRoZSB0YWItbGluZS4KKyAgICAgICAgICAgICAgIDs7IEFkZCBhIHNpbmdsZSBzcGFjZSBp biB0aGlzIGNhc2Ugc28gdGhlIGJveCBkaXNwbGF5cworICAgICAgICAgICAgICAgOzsgY29ycmVj dGx5LgorICAgICAgICAgICAgICAgKGFuZCAoZGlzcGxheS1zdXBwb3J0cy1mYWNlLWF0dHJpYnV0 ZXMtcAorICAgICAgICAgICAgICAgICAgICAgJyg6Ym94IChsaW5lLXdpZHRoIDEpKSkKKyAgICAg ICAgICAgICAgICAgICAgKHByb3BlcnRpemUgIiAiICdkaXNwbGF5ICcoc3BhY2UgOndpZHRoICgx KSkpKQorICAgICAgICAgICAgICAgcmVzdWx0KSkKKyAgICAgICAgKGNsLWluY2Ygd2luZG93LXRv b2wtYmFyLS1yZWZyZXNoLWRvbmUtY291bnQpKQorICAgIChjbC1pbmNmIHdpbmRvdy10b29sLWJh ci0tcmVmcmVzaC1za2lwcGVkLWNvdW50KSkKKworICB3aW5kb3ctdG9vbC1iYXItc3RyaW5nLS1j YWNoZSkKKworKGRlZmNvbnN0IHdpbmRvdy10b29sLWJhci0tZ3JhcGhpY2FsLXNlcGFyYXRvcgor ICAoY29uY2F0CisgICAocHJvcGVydGl6ZSAiICIgJ2Rpc3BsYXkgJyhzcGFjZSA6d2lkdGggKDQp KSkKKyAgIChwcm9wZXJ0aXplICIgIiAnZGlzcGxheSAnKHNwYWNlIDp3aWR0aCAoMSkgZmFjZSAo OmludmVyc2UtdmlkZW8gdCkpKQorICAgKHByb3BlcnRpemUgIiAiICdkaXNwbGF5ICcoc3BhY2Ug OndpZHRoICg0KSkpKSkKKworKGRlZnVuIHdpbmRvdy10b29sLWJhci0ta2V5bWFwLWVudHJ5LXRv LXN0cmluZyAobWVudS1pdGVtKQorICAiQ29udmVydCBNRU5VLUlURU0gaW50byBhIChwcm9wZXJ0 aXplZCkgc3RyaW5nIHJlcHJlc2VudGF0aW9uLgorCitNRU5VLUlURU0gaXMgYSBtZW51IGl0ZW0g dG8gY29udmVydC4gIFNlZSBpbmZvIG5vZGUgKGVsaXNwKVRvb2wgQmFyLiIKKyAgKHBjYXNlLWV4 aGF1c3RpdmUgbWVudS1pdGVtCisgICAgOzsgU2VwYXJhdG9ycworICAgICgob3IgYCgsXyAiLS0i KQorICAgICAgICAgYCgsXyBtZW51LWl0ZW0gLChhbmQgKHByZWQgc3RyaW5ncCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChwcmVkIChzdHJpbmctcHJlZml4LXAgIi0tIikpKSkpCisg ICAgIChpZiAod2luZG93LXRvb2wtYmFyLS11c2UtaW1hZ2VzKQorICAgICAgICAgd2luZG93LXRv b2wtYmFyLS1ncmFwaGljYWwtc2VwYXJhdG9yCisgICAgICAgInwiKSkKKworICAgIDs7IE1lbnUg aXRlbSwgdHVybiBpbnRvIHByb3BlcnRpemVkIHN0cmluZyBidXR0b24KKyAgICAoYCgsa2V5IG1l bnUtaXRlbSAsbmFtZS1leHByICxiaW5kaW5nIC4gLHBsaXN0KQorICAgICAod2hlbiBiaW5kaW5n ICAgICAgOyBJZiBubyBiaW5kaW5nIGV4aXN0cywgdGhlbiBidXR0b24gaXMgaGlkZGVuLgorICAg ICAgIChsZXQqICgobmFtZSAoZXZhbCBuYW1lLWV4cHIpKQorICAgICAgICAgICAgICAoc3RyICh1 cGNhc2UtaW5pdGlhbHMgKG9yIChwbGlzdC1nZXQgcGxpc3QgOmxhYmVsKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctdHJpbS1yaWdodCBuYW1lICJcXC4r IikpKSkKKyAgICAgICAgICAgICAgKGxlbiAobGVuZ3RoIHN0cikpCisgICAgICAgICAgICAgIChl bmFibGUtZm9ybSAocGxpc3QtZ2V0IHBsaXN0IDplbmFibGUpKQorICAgICAgICAgICAgICAoZW5h YmxlZCAob3IgKG5vdCBlbmFibGUtZm9ybSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChl dmFsIGVuYWJsZS1mb3JtKSkpKQorICAgICAgICAgKGlmIGVuYWJsZWQKKyAgICAgICAgICAgICAo YWRkLXRleHQtcHJvcGVydGllcyAwIGxlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICcobW91c2UtZmFjZSB3aW5kb3ctdG9vbC1iYXItYnV0dG9uLWhvdmVyCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBrZXltYXAgd2luZG93LXRvb2wtYmFyLS1idXR0b24t a2V5bWFwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlIHdpbmRvdy10 b29sLWJhci1idXR0b24pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKQor ICAgICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgMCBsZW4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdmYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2luZG93LXRv b2wtYmFyLWJ1dHRvbi1kaXNhYmxlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry KSkKKyAgICAgICAgICh3aGVuLWxldCAoKHNwZWMgKGFuZCAod2luZG93LXRvb2wtYmFyLS11c2Ut aW1hZ2VzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQgbWVudS1p dGVtIDppbWFnZSkpKSkKKyAgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IDAgbGVuCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzcGxheQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGFwcGVuZCBzcGVjCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChpZiBlbmFibGVkICcoOm1hcmdpbiAyIDphc2NlbnQgY2VudGVyKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoOm1hcmdpbiAyIDphc2NlbnQgY2VudGVyCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y29udmVyc2lvbiBkaXNh YmxlZCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKSkKKyAgICAgICAgIChw dXQtdGV4dC1wcm9wZXJ0eSAwIGxlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWxw LWVjaG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKHBsaXN0LWdldCBwbGlzdCA6 aGVscCkgbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIpCisgICAgICAgICAo cHV0LXRleHQtcHJvcGVydHkgMCBsZW4gJ3Rvb2wtYmFyLWtleSBrZXkgc3RyKQorICAgICAgICAg c3RyKSkpKSkKKworKGRlZnVuIHdpbmRvdy10b29sLWJhci0tY2FsbC1idXR0b24gKCkKKyAgIkNh bGwgdGhlIGJ1dHRvbiB0aGF0IHdhcyBjbGlja2VkIG9uIGluIHRoZSB0YWIgbGluZS4iCisgIChp bnRlcmFjdGl2ZSkKKyAgKHdoZW4gKG1vdXNlLWV2ZW50LXAgbGFzdC1jb21tYW5kLWV2ZW50KQor ICAgIChsZXQgKChwb3NuIChldmVudC1zdGFydCBsYXN0LWNvbW1hbmQtZXZlbnQpKSkKKyAgICAg IDs7IENvbW1hbmRzIG5lZWQgdG8gZXhlY3V0ZSB3aXRoIHRoZSByaWdodCBidWZmZXIgYW5kIHdp bmRvdworICAgICAgOzsgc2VsZWN0ZWQuICBUaGUgc2VsZWN0aW9uIG5lZWRzIHRvIGJlIHBlcm1h bmVudCBmb3IgaXNlYXJjaC4KKyAgICAgIChzZWxlY3Qtd2luZG93IChwb3NuLXdpbmRvdyBwb3Nu KSkKKyAgICAgIChsZXQqICgoc3RyIChwb3NuLXN0cmluZyBwb3NuKSkKKyAgICAgICAgICAgICAo a2V5IChnZXQtdGV4dC1wcm9wZXJ0eSAoY2RyIHN0cikgJ3Rvb2wtYmFyLWtleSAoY2FyIHN0cikp KQorICAgICAgICAgICAgIChjbWQgKGxvb2t1cC1rZXkgKHdpbmRvdy10b29sLWJhci0tZ2V0LWtl eW1hcCkgKHZlY3RvciBrZXkpKSkpCisgICAgICAgIChjYWxsLWludGVyYWN0aXZlbHkgY21kKSkp KSkKKworKGRlZnVuIHdpbmRvdy10b29sLWJhci0taWdub3JlICgpCisgICJJbnRlcm5hbCBjb21t YW5kIHNvIGlzZWFyY2ggZG9lcyBub3QgZXhpdCBvbiBidXR0b24tZG93biBldmVudHMuIgorICAo aW50ZXJhY3RpdmUpCisgIG5pbCkKKworKGRlZnZhciB3aW5kb3ctdG9vbC1iYXItLWlnbm9yZWQt ZXZlbnQtdHlwZXMKKyAgKGxldCAoKGxpc3QgKGxpc3QgJ21vdXNlLW1vdmVtZW50ICdwaW5jaAor ICAgICAgICAgICAgICAgICAgICAnd2hlZWwtZG93biAnd2hlZWwtdXAgJ3doZWVsLWxlZnQgJ3do ZWVsLXJpZ2h0CisgICAgICAgICAgICAgICAgICAgIG1vdXNlLXdoZWVsLWRvd24tZXZlbnQgbW91 c2Utd2hlZWwtdXAtZXZlbnQKKyAgICAgICAgICAgICAgICAgICAgbW91c2Utd2hlZWwtbGVmdC1l dmVudCBtb3VzZS13aGVlbC1yaWdodC1ldmVudAorICAgICAgICAgICAgICAgICAgICAoYm91bmQt YW5kLXRydWUtcCBtb3VzZS13aGVlbC1kb3duLWFsdGVybmF0ZS1ldmVudCkKKyAgICAgICAgICAg ICAgICAgICAgKGJvdW5kLWFuZC10cnVlLXAgbW91c2Utd2hlZWwtdXAtYWx0ZXJuYXRlLWV2ZW50 KQorICAgICAgICAgICAgICAgICAgICAoYm91bmQtYW5kLXRydWUtcCBtb3VzZS13aGVlbC1sZWZ0 LWFsdGVybmF0ZS1ldmVudCkKKyAgICAgICAgICAgICAgICAgICAgKGJvdW5kLWFuZC10cnVlLXAg bW91c2Utd2hlZWwtcmlnaHQtYWx0ZXJuYXRlLWV2ZW50KSkpKQorICAgIChkZWxldGUtZHVwcyAo ZGVsZXRlIG5pbCBsaXN0KSkpCisgICJDYWNoZSBmb3IgYHdpbmRvdy10b29sLWJhci0tbGFzdC1j b21tYW5kLXRyaWdnZXJzLXJlZnJlc2gtcCcuIikKKworKGRlZnVuIHdpbmRvdy10b29sLWJhci0t bGFzdC1jb21tYW5kLXRyaWdnZXJzLXJlZnJlc2gtcCAoKQorICAiVGVzdCBpZiB0aGUgcmVjZW50 IGNvbW1hbmQgb3IgZXZlbnQgc2hvdWxkIHRyaWdnZXIgYSB0b29sIGJhciByZWZyZXNoLiIKKyAg KGxldCAoKHR5cGUgKGV2ZW50LWJhc2ljLXR5cGUgbGFzdC1jb21tYW5kLWV2ZW50KSkpCisgICAg KGFuZAorICAgICA7OyBBc3N1bWUgdGhhdCBrZXkgcHJlc3NlcyBhbmQgYnV0dG9uIHByZXNzZXMg YXJlIHRoZSBvbmx5IHVzZXIKKyAgICAgOzsgaW50ZXJhY3Rpb25zIHRoYXQgY2FuIGFsdGVyIHRo ZSB0b29sIGJhci4gIFNwZWNpZmljYWxseSwgdGhpcworICAgICA7OyBleGNsdWRlcyBtb3VzZSBt b3ZlbWVudCwgbW91c2Ugd2hlZWwgc2Nyb2xsLCBhbmQgcGluY2guCisgICAgIChub3QgKG1lbWJl ciB0eXBlIHdpbmRvdy10b29sLWJhci0taWdub3JlZC1ldmVudC10eXBlcykpCisgICAgIDs7IEFz c3VtZSB0aGF0IGFueSBjb21tYW5kIHRoYXQgdHJpZ2dlcnMgc2hpZnQgc2VsZWN0IGNhbid0IGFs dGVyCisgICAgIDs7IHRoZSB0b29sIGJhci4gIFRoaXMgZXhjbHVkZXMgcHVyZSBuYXZpZ2F0aW9u IGNvbW1hbmRzLgorICAgICAobm90ICh3aW5kb3ctdG9vbC1iYXItLWNvbW1hbmQtdHJpZ2dlcnMt c2hpZnQtc2VsZWN0LXAgbGFzdC1jb21tYW5kKSkKKyAgICAgOzsgQXNzdW1lIHRoYXQgc2VsZi1p bnNlcnQtY29tbWFuZCB3b24ndCBhbHRlciB0aGUgdG9vbCBiYXIuCisgICAgIDs7IFRoaXMgaXMg dGhlIG1vc3QgY29tbW9ubHkgZXhlY3V0ZWQgY29tbWFuZC4KKyAgICAgKG5vdCAoZXEgbGFzdC1j b21tYW5kICdzZWxmLWluc2VydC1jb21tYW5kKSkpKSkKKworKGRlZnVuIHdpbmRvdy10b29sLWJh ci0tY29tbWFuZC10cmlnZ2Vycy1zaGlmdC1zZWxlY3QtcCAoY29tbWFuZCkKKyAgIlRlc3QgaWYg Q09NTUFORCB3b3VsZCB0cmlnZ2VyIHNoaWZ0IHNlbGVjdC4iCisgIChsZXQqICgoZm9ybSAoaW50 ZXJhY3RpdmUtZm9ybSBjb21tYW5kKSkKKyAgICAgICAgIChzcGVjIChjYXItc2FmZSAoY2RyLXNh ZmUgZm9ybSkpKSkKKyAgICAoYW5kIChlcSAoY2FyLXNhZmUgZm9ybSkgJ2ludGVyYWN0aXZlKQor ICAgICAgICAgKHN0cmluZ3Agc3BlYykKKyAgICAgICAgIChzZXEtcG9zaXRpb24gc3BlYyA/Xikp KSkKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZpbmUtbWlub3ItbW9kZSB3aW5kb3ctdG9vbC1iYXIt bW9kZQorICAiVG9nZ2xlIGRpc3BsYXkgb2YgdGhlIHRvb2wgYmFyIGluIHRoZSB0YWIgbGluZSBv ZiB0aGUgY3VycmVudCBidWZmZXIuIgorICA6Z2xvYmFsIG5pbAorICAobGV0ICgoc2hvdWxkLWRp c3BsYXkgKGFuZCB3aW5kb3ctdG9vbC1iYXItbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAobm90IChlcSB0b29sLWJhci1tYXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGRlZmF1bHQtdmFsdWUgJ3Rvb2wtYmFyLW1hcCkpKSkpCisgICAgICAgIChkZWZh dWx0LXZhbHVlICcoOmV2YWwgKHdpbmRvdy10b29sLWJhci1zdHJpbmcpKSkpCisKKyAgICA7OyBQ cmVzZXJ2ZSBleGlzdGluZyB0YWItbGluZSBzZXQgb3V0c2lkZSBvZiB0aGlzIG1vZGUKKyAgICAo aWYgKG9yIChudWxsIHRhYi1saW5lLWZvcm1hdCkKKwkgICAgKGVxdWFsIHRhYi1saW5lLWZvcm1h dCBkZWZhdWx0LXZhbHVlKSkKKyAgICAgICAgKGlmIHNob3VsZC1kaXNwbGF5CisgICAgICAgICAg ICAoc2V0cSB0YWItbGluZS1mb3JtYXQgZGVmYXVsdC12YWx1ZSkKKyAgICAgICAgICAoc2V0cSB0 YWItbGluZS1mb3JtYXQgbmlsKSkKKyAgICAgIChtZXNzYWdlCisgICAgICAgInRhYi1saW5lLWZv cm1hdCBzZXQgb3V0c2lkZSBvZiB3aW5kb3ctdG9vbC1iYXItbW9kZSwgY3VycmVudGx5IGAlUyci CisgICAgICAgdGFiLWxpbmUtZm9ybWF0KSkpKQorCis7OzsjIyNhdXRvbG9hZAorKGRlZmluZS1n bG9iYWxpemVkLW1pbm9yLW1vZGUgZ2xvYmFsLXdpbmRvdy10b29sLWJhci1tb2RlCisgIHdpbmRv dy10b29sLWJhci1tb2RlIHdpbmRvdy10b29sLWJhci0tdHVybi1vbgorICA6Z3JvdXAgJ3dpbmRv dy10b29sLWJhcgorICAoYWRkLWhvb2sgJ2lzZWFyY2gtbW9kZS1ob29rICMnd2luZG93LXRvb2wt YmFyLS10dXJuLW9uKQorICAoYWRkLWhvb2sgJ2lzZWFyY2gtbW9kZS1lbmQtaG9vayAjJ3dpbmRv dy10b29sLWJhci0tdHVybi1vbikpCisKKyhkZWZ2YXIgd2luZG93LXRvb2wtYmFyLS1hbGxvdy1p bWFnZXMgdAorICAiSW50ZXJuYWwgZGVidWcgZmxhZyB0byBmb3JjZSB0ZXh0IG1vZGUuIikKKwor KGRlZnVuIHdpbmRvdy10b29sLWJhci0tdXNlLWltYWdlcyAoKQorICAiSW50ZXJuYWwgZnVuY3Rp b24uCitSZXNwZWN0cyBgd2luZG93LXRvb2wtYmFyLS1hbGxvdy1pbWFnZXMnIGFzIHdlbGwgYXMg ZnJhbWUKK2NhcGFiaWxpdGllcy4iCisgIChhbmQgd2luZG93LXRvb2wtYmFyLS1hbGxvdy1pbWFn ZXMKKyAgICAgICAoZGlzcGxheS1pbWFnZXMtcCkpKQorDAorOzs7IERpc3BsYXkgc3R5bGluZzoK KyhkZWZmYWNlIHdpbmRvdy10b29sLWJhci1idXR0b24KKyAgJygoZGVmYXVsdAorICAgICA6aW5o ZXJpdCB0YWItbGluZSkKKyAgICAoKChjbGFzcyBjb2xvcikgKG1pbi1jb2xvcnMgODgpIChzdXBw b3J0cyA6Ym94IHQpKQorICAgICA6Ym94ICg6bGluZS13aWR0aCAtMSA6c3R5bGUgcmVsZWFzZWQt YnV0dG9uKQorICAgICA6YmFja2dyb3VuZCAiZ3JleTg1IikKKyAgICA7OyBJZiB0aGUgYm94IGlz IG5vdCBzdXBwb3J0ZWQsIGRpbSB0aGUgYnV0dG9uIGJhY2tncm91bmQgYSBiaXQuCisgICAgKCgo Y2xhc3MgY29sb3IpIChtaW4tY29sb3JzIDg4KSkKKyAgICAgOmJhY2tncm91bmQgImdyZXk3MCIp CisgICAgKHQKKyAgICAgOmludmVyc2UtdmlkZW8gdCkpCisgICJGYWNlIHVzZWQgZm9yIGJ1dHRv bnMgd2hlbiB0aGUgbW91c2UgaXMgbm90IGhvdmVyaW5nIG92ZXIgdGhlIGJ1dHRvbi4iCisgIDpn cm91cCAnd2luZG93LXRvb2wtYmFyKQorCisoZGVmZmFjZSB3aW5kb3ctdG9vbC1iYXItYnV0dG9u LWhvdmVyCisgICcoKGRlZmF1bHQKKyAgICAgOmluaGVyaXQgdGFiLWxpbmUpCisgICAgKCgoY2xh c3MgY29sb3IpIChtaW4tY29sb3JzIDg4KSkKKyAgICAgOmJveCAoOmxpbmUtd2lkdGggLTEgOnN0 eWxlIHJlbGVhc2VkLWJ1dHRvbikKKyAgICAgOmJhY2tncm91bmQgImdyZXk5NSIpCisgICAgKHQK KyAgICAgOmludmVyc2UtdmlkZW8gdCkpCisgICJGYWNlIHVzZWQgZm9yIGJ1dHRvbnMgd2hlbiB0 aGUgbW91c2UgaXMgaG92ZXJpbmcgb3ZlciB0aGUgYnV0dG9uLiIKKyAgOmdyb3VwICd3aW5kb3ct dG9vbC1iYXIpCisKKyhkZWZmYWNlIHdpbmRvdy10b29sLWJhci1idXR0b24tZGlzYWJsZWQKKyAg JygoZGVmYXVsdAorICAgICA6aW5oZXJpdCB0YWItbGluZSkKKyAgICAoKChjbGFzcyBjb2xvcikg KG1pbi1jb2xvcnMgODgpKQorICAgICA6Ym94ICg6bGluZS13aWR0aCAtMSA6c3R5bGUgcmVsZWFz ZWQtYnV0dG9uKQorICAgICA6YmFja2dyb3VuZCAiZ3JleTUwIgorICAgICA6Zm9yZWdyb3VuZCAi Z3JleTcwIikKKyAgICAodAorICAgICA6aW52ZXJzZS12aWRlbyB0CisgICAgIDpiYWNrZ3JvdW5k ICJicmlnaHRibGFjayIpKQorICAiRmFjZSB1c2VkIGZvciBidXR0b25zIHdoZW4gdGhlIGJ1dHRv biBpcyBkaXNhYmxlZC4iCisgIDpncm91cCAnd2luZG93LXRvb2wtYmFyKQorDAorOzs7IFdvcmth cm91bmQgZm9yIGh0dHBzOi8vZGViYnVncy5nbnUub3JnL2NnaS9idWdyZXBvcnQuY2dpP2J1Zz02 ODMzNC4KKyhkZWZ1biB3aW5kb3ctdG9vbC1iYXItLWdldC1rZXltYXAgKCkKKyAgIlJldHVybiB0 aGUgdG9vbCBiYXIga2V5bWFwLiIKKyAgKGxldCAoKHRvb2wtYmFyLWFsd2F5cy1zaG93LWRlZmF1 bHQgbmlsKSkKKyAgICAoaWYgKGFuZCAodmVyc2lvbjwgZW1hY3MtdmVyc2lvbiAiMzAiKQorICAg ICAgICAgICAgIChub3QgKHdpbmRvdy10b29sLWJhci0tdXNlLWltYWdlcykpKQorICAgICAgICA7 OyBUaGlzIGNvZGUgcGF0aCBpcyBhIGxlc3MgZWZmaWNpZW50IHdvcmthcm91bmQuCisgICAgICAg ICh3aW5kb3ctdG9vbC1iYXItLW1ha2Uta2V5bWFwLTEpCisgICAgICAoa2V5bWFwLWdsb2JhbC1s b29rdXAgIjx0b29sLWJhcj4iKSkpKQorCisoZGVjbGFyZS1mdW5jdGlvbiBpbWFnZS1tYXNrLXAg ImltYWdlLmMiIChzcGVjICZvcHRpb25hbCBmcmFtZSkpCisKKyhkZWZ1biB3aW5kb3ctdG9vbC1i YXItLW1ha2Uta2V5bWFwLTEgKCkKKyAgIlBhdGNoZWQgY29weSBvZiBgdG9vbC1iYXItbWFrZS1r ZXltYXAtMScuIgorICAobWFwY2FyIChsYW1iZGEgKGJpbmQpCisgICAgICAgICAgICAobGV0IChp bWFnZS1leHAgcGxpc3QpCisgICAgICAgICAgICAgICh3aGVuIChhbmQgKGVxIChjYXItc2FmZSAo Y2RyLXNhZmUgYmluZCkpICdtZW51LWl0ZW0pCisgICAgICAgICAgICAgICAgICAgICAgICAgOzsg Rm9yIHRoZSBmb3JtYXQgb2YgbWVudS1pdGVtcywgc2VlIG5vZGUKKyAgICAgICAgICAgICAgICAg ICAgICAgICA7OyBgRXh0ZW5kZWQgTWVudSBJdGVtcycgaW4gdGhlIEVsaXNwIG1hbnVhbC4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBwbGlzdCAobnRoY2RyIChpZiAoY29uc3AgKG50 aCA0IGJpbmQpKSA1IDQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBiaW5kKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBpbWFnZS1leHAgKHBs aXN0LWdldCBwbGlzdCA6aW1hZ2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zcCBp bWFnZS1leHApCisgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZXEgKGNhciBpbWFnZS1l eHApICdpbWFnZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGZib3VuZHAgKGNhciBpbWFn ZS1leHApKSkKKyAgICAgICAgICAgICAgICAobGV0ICgoaW1hZ2UgKGFuZCAoZGlzcGxheS1pbWFn ZXMtcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZhbCBpbWFnZS1leHAp KSkpCisgICAgICAgICAgICAgICAgICAodW5sZXNzIChhbmQgaW1hZ2UgKGltYWdlLW1hc2stcCBp bWFnZSkpCisgICAgICAgICAgICAgICAgICAgIChzZXRxIGltYWdlIChhcHBlbmQgaW1hZ2UgJyg6 bWFzayBoZXVyaXN0aWMpKSkpCisgICAgICAgICAgICAgICAgICAoc2V0cSBiaW5kIChjb3B5LXNl cXVlbmNlIGJpbmQpCisgICAgICAgICAgICAgICAgICAgICAgICBwbGlzdCAobnRoY2RyIChpZiAo Y29uc3AgKG50aCA0IGJpbmQpKSA1IDQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJpbmQpKQorICAgICAgICAgICAgICAgICAgKHBsaXN0LXB1dCBwbGlzdCA6aW1hZ2Ug aW1hZ2UpKSkKKyAgICAgICAgICAgICAgYmluZCkpCisgICAgICAgICAgdG9vbC1iYXItbWFwKSkK KworKGRlZnVuIHdpbmRvdy10b29sLWJhci0tdHVybi1vbiAoKQorICAiSW50ZXJuYWwgZnVuY3Rp b24gY2FsbGVkIGJ5IGBnbG9iYWwtd2luZG93LXRvb2wtYmFyLW1vZGUnLiIKKyAgKHdoZW4gZ2xv YmFsLXdpbmRvdy10b29sLWJhci1tb2RlCisgICAgKHdpbmRvdy10b29sLWJhci1tb2RlIDEpKSkK KworKHByb3ZpZGUgJ3dpbmRvdy10b29sLWJhcikKKworOzs7IHdpbmRvdy10b29sLWJhci5lbCBl bmRzIGhlcmUKLS0gCjIuMzkuMgoK --=_fa006a63f9e661853cc34e753767b04f-- From debbugs-submit-bounces@debbugs.gnu.org Tue May 14 02:08:37 2024 Received: (at 68765) by debbugs.gnu.org; 14 May 2024 06:08:37 +0000 Received: from localhost ([127.0.0.1]:37262 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s6lL2-0008V3-Uz for submit@debbugs.gnu.org; Tue, 14 May 2024 02:08:37 -0400 Received: from relay3-d.mail.gandi.net ([217.70.183.195]:58521) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s6lKw-0008UP-SS for 68765@debbugs.gnu.org; Tue, 14 May 2024 02:08:35 -0400 Received: by mail.gandi.net (Postfix) with ESMTPSA id 84DD860007; Tue, 14 May 2024 06:08:22 +0000 (UTC) From: Juri Linkov To: Jared Finder Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: (Jared Finder's message of "Mon, 13 May 2024 21:14:16 -0700") Organization: LINKOV.NET References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> Date: Tue, 14 May 2024 09:01:17 +0300 Message-ID: <86o799rnym.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-Sasl: juri@linkov.net X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, Eli Zaretskii , 68765@debbugs.gnu.org, monnier@iro.umontreal.ca X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) >>> Does this sound like a good plan? >> Thanks, looks like a good thing to do. > > Thank you! Final version of all three commits attached. These address all > comments raised on this thread. > > I think after these patches are applied, the remaining work to resolve this > would be having the ELPA package added and me updating NEWS and the manual. > I can start on the updates. Thanks, the changes in tab-line.el look nice. I hope your other patches for tool-bar.el and window-tool-bar.el will get the green light as well. From debbugs-submit-bounces@debbugs.gnu.org Sat May 18 05:45:52 2024 Received: (at 68765) by debbugs.gnu.org; 18 May 2024 09:45:52 +0000 Received: from localhost ([127.0.0.1]:60656 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s8GdU-0000bJ-C1 for submit@debbugs.gnu.org; Sat, 18 May 2024 05:45:52 -0400 Received: from eggs.gnu.org ([209.51.188.92]:33960) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s8GdS-0000bD-SM for 68765@debbugs.gnu.org; Sat, 18 May 2024 05:45:51 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s8GdI-000824-Id; Sat, 18 May 2024 05:45:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=PmV8GVoHJLZcN4/gMuYeHEDIqLPC6eCEBnF8lUIHj2M=; b=M/nAsSVHFqxM ogwfnKBwJcdsZyDAB5MdXtGUMo89U1764ULYmv/syBEuTrLmZvg7x7F8qNkKd+veqLfWc3oq3OwfC 0OUQQ1NRGxBuVW7n1ZqyOM5+NdKC3oY6WwVcCwXpqeflTXKfD0e9KN9h3kbX3uWYelDt61A6wGXGR zmZdJ1pbiEdUA5TQSF93SaZGsD3rucJmHK6qADxTqxo91NDDTn40MC2vpKupVxZX0tbyLnkt/9/C5 Y+YN9swXrV4NAV4eZ12/rz4QnfDGd0Z6D8R60YW0TxGQSuVOfK3MEvy8sbvaSWPfIdQEevci3lqj5 WRRFp1pwcgYgcux3TixKcg==; Date: Sat, 18 May 2024 12:45:35 +0300 Message-Id: <86h6eve9mo.fsf@gnu.org> From: Eli Zaretskii To: Jared Finder In-Reply-To: (message from Jared Finder on Mon, 13 May 2024 21:14:16 -0700) Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Mon, 13 May 2024 21:14:16 -0700 > From: Jared Finder > Cc: Eli Zaretskii , 68765@debbugs.gnu.org, philipk@posteo.net, > monnier@iro.umontreal.ca > > > Thanks, looks like a good thing to do. > > Thank you! Final version of all three commits attached. These address > all comments raised on this thread. > > I think after these patches are applied, the remaining work to resolve > this would be having the ELPA package added and me updating NEWS and the > manual. I can start on the updates. Fine by me, please go ahead. From debbugs-submit-bounces@debbugs.gnu.org Sat May 18 05:48:35 2024 Received: (at 68765) by debbugs.gnu.org; 18 May 2024 09:48:35 +0000 Received: from localhost ([127.0.0.1]:60671 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s8Gg6-0000dY-Vn for submit@debbugs.gnu.org; Sat, 18 May 2024 05:48:35 -0400 Received: from eggs.gnu.org ([209.51.188.92]:45210) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s8Gg4-0000dS-Tc for 68765@debbugs.gnu.org; Sat, 18 May 2024 05:48:33 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s8Gfv-0008OT-A7; Sat, 18 May 2024 05:48:23 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=EBaol1gHv/gONeMp2MkNe/HqXCBINNQUuqOl/Mqs3XU=; b=M1YKpoPaNlBg QixngT3CMnJxiZO+U/Ilu6avEDGbeF6xlCD3sXDOEgryt0WQz9RmBHdmM4/kxhGyzyiW0xTW4ZoeE +zLMR9nfTQd8XKz2CTnFy5/B6IWkNREjjaodorG8yQVq4ZIQmVOPP+Awiuc8ejGKMVzzqC+OPJ71V tGjcPrHPo2lxrgvrO5x2RSupqCY5cNiVNCnOlsLFEg/EH/3d72D6nqTTbT1bCr2zEuUfiacXGjz3U MzuMTYN9qpOCCAVdZX/977DLOrS+ySh/BM/9/2gLGJb7FwzKOI5I/so1p72JK6iqPvXsA6C8ikbvs INmOt/61CYQqwCL2w5sonQ==; Date: Sat, 18 May 2024 12:48:14 +0300 Message-Id: <86frufe9i9.fsf@gnu.org> From: Eli Zaretskii To: Jared Finder In-Reply-To: (message from Jared Finder on Mon, 13 May 2024 21:14:16 -0700) Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Mon, 13 May 2024 21:14:16 -0700 > From: Jared Finder > Cc: Eli Zaretskii , 68765@debbugs.gnu.org, philipk@posteo.net, > monnier@iro.umontreal.ca > > > Thanks, looks like a good thing to do. > > Thank you! Final version of all three commits attached. These address > all comments raised on this thread. > > I think after these patches are applied, the remaining work to resolve > this would be having the ELPA package added and me updating NEWS and the > manual. I can start on the updates. I installed the patches on the master branch. From debbugs-submit-bounces@debbugs.gnu.org Sat May 18 05:50:38 2024 Received: (at 68765) by debbugs.gnu.org; 18 May 2024 09:50:38 +0000 Received: from localhost ([127.0.0.1]:60689 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s8Gi5-0000fJ-RZ for submit@debbugs.gnu.org; Sat, 18 May 2024 05:50:38 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48906) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s8Gi3-0000fB-9X for 68765@debbugs.gnu.org; Sat, 18 May 2024 05:50:36 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s8Ghn-0000J4-DQ; Sat, 18 May 2024 05:50:23 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=T3IXLyPE33yvnqaXHDFWoB7xeDALDSO3qvtv6Wxjrv0=; b=RlWQCsHcp3Ni 3JhlghuQ1Ote38y70xHYzHjIHsGxm2drf3yqRDPmAZ52YXMmVsYjGQqklTgQwvC/RuFaLNxaM6qPR b1u6DXkMr5LX/6ycJuT1KlQookPRO6ysJsD7J+IiyqR6O9yrqhE6SUGiGBUuoNcgw3MkJ/XwfeQf0 1SqcF7Lq1ENJ02k/1xWzemMNe4uK9RhMxT/hkfqD2NdBvGneGViGObTBxvjP1gpOvcoZMyybspBXF Ex6vPVJF9sUJDJ/1/14tHCFCAPGfhx09046o5xj3HUtqPM1RUTs0MuSlDmblNUPG1AGqHldb9O9yG eq1T8IrNhhOm/z2OOycQug==; Date: Sat, 18 May 2024 12:50:07 +0300 Message-Id: <86ed9ze9f4.fsf@gnu.org> From: Eli Zaretskii To: jared@finder.org, Juri Linkov In-Reply-To: <86o799rnym.fsf@mail.linkov.net> (message from Juri Linkov on Tue, 14 May 2024 09:01:17 +0300) Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86o799rnym.fsf@mail.linkov.net> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Juri Linkov > Cc: Eli Zaretskii , 68765@debbugs.gnu.org, > philipk@posteo.net, monnier@iro.umontreal.ca > Date: Tue, 14 May 2024 09:01:17 +0300 > > >>> Does this sound like a good plan? > >> Thanks, looks like a good thing to do. > > > > Thank you! Final version of all three commits attached. These address all > > comments raised on this thread. > > > > I think after these patches are applied, the remaining work to resolve this > > would be having the ELPA package added and me updating NEWS and the manual. > > I can start on the updates. > > Thanks, the changes in tab-line.el look nice. > > I hope your other patches for tool-bar.el and window-tool-bar.el > will get the green light as well. Byte-compiling emits some warnings: In toplevel form: window-tool-bar.el:341:21: Warning: `mouse-wheel-down-event' is an obsolete variable (as of 30.1); use `mouse-wheel-buttons' instead. window-tool-bar.el:341:44: Warning: `mouse-wheel-up-event' is an obsolete variable (as of 30.1); use `mouse-wheel-buttons' instead. window-tool-bar.el:342:21: Warning: `mouse-wheel-left-event' is an obsolete variable (as of 30.1); use `mouse-wheel-buttons' instead. window-tool-bar.el:342:44: Warning: `mouse-wheel-right-event' is an obsolete variable (as of 30.1); use `mouse-wheel-buttons' instead. Jared, could you please take care of these? Thanks. From debbugs-submit-bounces@debbugs.gnu.org Sat May 18 23:55:47 2024 Received: (at 68765) by debbugs.gnu.org; 19 May 2024 03:55:47 +0000 Received: from localhost ([127.0.0.1]:35749 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s8XeE-0007Qf-Te for submit@debbugs.gnu.org; Sat, 18 May 2024 23:55:47 -0400 Received: from greenhill.hpalace.com ([192.155.80.58]:57126) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s8XeB-0007QZ-EP for 68765@debbugs.gnu.org; Sat, 18 May 2024 23:55:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=finder.org; s=2018; t=1716090938; bh=p9sdeCrekPkRARjm2mHbxA9R5chz0wdH5d8X+UV5veg=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=U6TtplUYZDwL7fkW7ojp+gZp7b5tMlW/QA8ii608GnGSneBrMJsLfw5OQOhuESAgf TuzzrryloaXnFBDh104erNFspIdKH+oheNw/32A0UIPzrMBFgSZh5RH75kjMgFpAnE 5k5tEbBjZEVODGE0vPKVYkwGjmWHXs168JvW/bIYZzWEQXSyO5q6Y09BR1V0DtA9Cg as01VyxOM3hSAbPeoqmxt4jh799/ZAE/ZjZ2kUAOZNuu7cpUhcAWGssuOyrdHuxSSH XrBJgU2NpAGZpz9E1Gagak6rZCKpjwXw5oplH4Ad6ouWuY1rvl2zZltJFLdrIWRBCZ wKJW9IsvkiZ/A== Received: from mail.finder.org (unknown [192.155.80.58]) by greenhill.hpalace.com (Postfix) with ESMTPSA id 9A3AA864; Sun, 19 May 2024 03:55:38 +0000 (UTC) MIME-Version: 1.0 Date: Sat, 18 May 2024 20:55:38 -0700 From: Jared Finder To: Eli Zaretskii Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <86ed9ze9f4.fsf@gnu.org> References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86o799rnym.fsf@mail.linkov.net> <86ed9ze9f4.fsf@gnu.org> Message-ID: X-Sender: jared@finder.org Content-Type: multipart/mixed; boundary="=_6a75ab39665db155f2cd4dffcaffdf23" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, Juri Linkov X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=_6a75ab39665db155f2cd4dffcaffdf23 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2024-05-18 02:50, Eli Zaretskii wrote: > > Byte-compiling emits some warnings: > > In toplevel form: > window-tool-bar.el:341:21: Warning: `mouse-wheel-down-event' is an > obsolete variable (as of 30.1); use `mouse-wheel-buttons' instead. > window-tool-bar.el:341:44: Warning: `mouse-wheel-up-event' is an > obsolete variable (as of 30.1); use `mouse-wheel-buttons' instead. > window-tool-bar.el:342:21: Warning: `mouse-wheel-left-event' is an > obsolete variable (as of 30.1); use `mouse-wheel-buttons' instead. > window-tool-bar.el:342:44: Warning: `mouse-wheel-right-event' is an > obsolete variable (as of 30.1); use `mouse-wheel-buttons' instead. > > Jared, could you please take care of these? > > Thanks. The attached patch fixes those warnings. -- MJF --=_6a75ab39665db155f2cd4dffcaffdf23 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-Fix-byte-compiler-warnings.patch Content-Disposition: attachment; filename=0001-Fix-byte-compiler-warnings.patch; size=2386 RnJvbSBmOGIwZjYxMmZiYjVmZmJmN2E4ZmYyOWYyYjI1MjIwM2ZmODNkY2RhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+CkRhdGU6 IFNhdCwgMTggTWF5IDIwMjQgMjA6NTE6MDkgLTA3MDAKU3ViamVjdDogW1BBVENIXSBGaXggYnl0 ZSBjb21waWxlciB3YXJuaW5ncwoKKiBsaXNwL3dpbmRvdy10b29sLWJhci5lbCAod2luZG93LXRv b2wtYmFyLS1zdGF0aWMtaWYpCih3aW5kb3ctdG9vbC1iYXItLWlnbm9yZWQtZXZlbnQtdHlwZXMp OiBBdm9pZCBieXRlIGNvbXBpbGVyCnNlZWluZyB2YXJpYWJsZXMgb2Jzb2xldGUgaW4gRW1hY3Mg MzAgYW5kIHVwLgotLS0KIGxpc3Avd2luZG93LXRvb2wtYmFyLmVsIHwgMjUgKysrKysrKysrKysr KysrKysrKysrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKyksIDMgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC93aW5kb3ctdG9vbC1iYXIuZWwgYi9saXNwL3dpbmRv dy10b29sLWJhci5lbAppbmRleCA2NDBkZWNjZGQ2MS4uMzk1YWEzYWE5Y2MgMTAwNjQ0Ci0tLSBh L2xpc3Avd2luZG93LXRvb2wtYmFyLmVsCisrKyBiL2xpc3Avd2luZG93LXRvb2wtYmFyLmVsCkBA IC0zMzUsMTUgKzMzNSwzNCBAQCB3aW5kb3ctdG9vbC1iYXItLWlnbm9yZQogICAoaW50ZXJhY3Rp dmUpCiAgIG5pbCkKIAorOzsgc3RhdGljLWlmIHdhcyBhZGRlZCBpbiBFbWFjcyAzMCwgYnV0IHRo aXMgcGFja2FnZXMgc3VwcG9ydHMgZWFybGllcgorOzsgdmVyc2lvbnMuCisoZGVmbWFjcm8gd2lu ZG93LXRvb2wtYmFyLS1zdGF0aWMtaWYgKGNvbmRpdGlvbiB0aGVuLWZvcm0gJnJlc3QgZWxzZS1m b3JtcykKKyAgIkEgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gbWFjcm8uCitFdmFsdWF0ZSBDT05E SVRJT04gYXQgbWFjcm8tZXhwYW5zaW9uIHRpbWUuICBJZiBpdCBpcyBub24tbmlsLAorZXhwYW5k IHRoZSBtYWNybyB0byBUSEVOLUZPUk0uICBPdGhlcndpc2UgZXhwYW5kIGl0IHRvIEVMU0UtRk9S TVMKK2VuY2xvc2VkIGluIGEgYHByb2duJyBmb3JtLiAgRUxTRS1GT1JNUyBtYXkgYmUgZW1wdHku IgorICAoZGVjbGFyZSAoaW5kZW50IDIpCisgICAgICAgICAgIChkZWJ1ZyAoc2V4cCBzZXhwICZy ZXN0IHNleHApKSkKKyAgKGlmIChldmFsIGNvbmRpdGlvbiBsZXhpY2FsLWJpbmRpbmcpCisgICAg ICB0aGVuLWZvcm0KKyAgICAoY29ucyAncHJvZ24gZWxzZS1mb3JtcykpKQorCiAoZGVmdmFyIHdp bmRvdy10b29sLWJhci0taWdub3JlZC1ldmVudC10eXBlcwotICAobGV0ICgobGlzdCAobGlzdCAn bW91c2UtbW92ZW1lbnQgJ3BpbmNoCi0gICAgICAgICAgICAgICAgICAgICd3aGVlbC1kb3duICd3 aGVlbC11cCAnd2hlZWwtbGVmdCAnd2hlZWwtcmlnaHQKKyAgKGxldCAoKGxpc3QgKGFwcGVuZAor ICAgICAgICAgICAgICAgJyhtb3VzZS1tb3ZlbWVudCBwaW5jaAorICAgICAgICAgICAgICAgICB3 aGVlbC1kb3duIHdoZWVsLXVwIHdoZWVsLWxlZnQgd2hlZWwtcmlnaHQpCisgICAgICAgICAgICAg ICA7OyBQcmlvciB0byBlbWFjcyAzMCwgd2hlZWwgZXZlbnRzIGNvdWxkIGFsc28gc3VyZmFjZSBh cworICAgICAgICAgICAgICAgOzsgbW91c2UtPE5VTT4gYnV0dG9ucy4KKyAgICAgICAgICAgICAg ICh3aW5kb3ctdG9vbC1iYXItLXN0YXRpYy1pZiAodmVyc2lvbjwgZW1hY3MtdmVyc2lvbiAiMzAi KQorICAgICAgICAgICAgICAgICAgIChsaXN0CiAgICAgICAgICAgICAgICAgICAgIG1vdXNlLXdo ZWVsLWRvd24tZXZlbnQgbW91c2Utd2hlZWwtdXAtZXZlbnQKICAgICAgICAgICAgICAgICAgICAg bW91c2Utd2hlZWwtbGVmdC1ldmVudCBtb3VzZS13aGVlbC1yaWdodC1ldmVudAogICAgICAgICAg ICAgICAgICAgICAoYm91bmQtYW5kLXRydWUtcCBtb3VzZS13aGVlbC1kb3duLWFsdGVybmF0ZS1l dmVudCkKICAgICAgICAgICAgICAgICAgICAgKGJvdW5kLWFuZC10cnVlLXAgbW91c2Utd2hlZWwt dXAtYWx0ZXJuYXRlLWV2ZW50KQogICAgICAgICAgICAgICAgICAgICAoYm91bmQtYW5kLXRydWUt cCBtb3VzZS13aGVlbC1sZWZ0LWFsdGVybmF0ZS1ldmVudCkKLSAgICAgICAgICAgICAgICAgICAg KGJvdW5kLWFuZC10cnVlLXAgbW91c2Utd2hlZWwtcmlnaHQtYWx0ZXJuYXRlLWV2ZW50KSkpKQor ICAgICAgICAgICAgICAgICAgICAoYm91bmQtYW5kLXRydWUtcCBtb3VzZS13aGVlbC1yaWdodC1h bHRlcm5hdGUtZXZlbnQpKQorICAgICAgICAgICAgICAgICBuaWwpKSkpCiAgICAgKGRlbGV0ZS1k dXBzIChkZWxldGUgbmlsIGxpc3QpKSkKICAgIkNhY2hlIGZvciBgd2luZG93LXRvb2wtYmFyLS1s YXN0LWNvbW1hbmQtdHJpZ2dlcnMtcmVmcmVzaC1wJy4iKQogCi0tIAoyLjM5LjIKCg== --=_6a75ab39665db155f2cd4dffcaffdf23-- From debbugs-submit-bounces@debbugs.gnu.org Sat May 18 23:58:11 2024 Received: (at 68765) by debbugs.gnu.org; 19 May 2024 03:58:12 +0000 Received: from localhost ([127.0.0.1]:35754 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s8XgZ-0007ST-HK for submit@debbugs.gnu.org; Sat, 18 May 2024 23:58:11 -0400 Received: from greenhill.hpalace.com ([192.155.80.58]:51792) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s8XgX-0007SN-Rg for 68765@debbugs.gnu.org; Sat, 18 May 2024 23:58:10 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=finder.org; s=2018; t=1716091085; bh=B1Nixur/YfiCEZOXIAe/t/3+w/jZUXv0Ka4IsHvqvyw=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=Hx/XJu7Yy7srGLUBGXwY65t7qsam4FZ4lgNuoBp2jYy4V4tBXfGDlmzRNy5WFKfgC DrTCR3abu35ROrK5JY9jZKutkJZmb2BmIIghJZ0P8Fmzi+3iseAb3OJ4aaUmlhr/pc d+6KOfaOaqWoeadjUBOBwL7NVPe/NKIE4Vo2wkL4eDl+sFrI15ZORJq780PPY0dHaF 5vJ28bPkOOfjrr2LDH3SoJeWytRSDvX0k2E27Xoezo3iEhxgFJKf/4zshFjtaSK3RJ uLlZt4j8RZE+mU4zqbLY8L8bq4dN1nokqHeEmdmq+m8C4KStCB3CSKpbR6Q3AnqYpq qApnlylZs0ESg== Received: from mail.finder.org (unknown [192.155.80.58]) by greenhill.hpalace.com (Postfix) with ESMTPSA id 8B36685A; Sun, 19 May 2024 03:58:05 +0000 (UTC) MIME-Version: 1.0 Date: Sat, 18 May 2024 20:58:05 -0700 From: Jared Finder To: Eli Zaretskii Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <86frufe9i9.fsf@gnu.org> References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86frufe9i9.fsf@gnu.org> Message-ID: <8cfec392c3f9259b7499ebd4f605bc25@finder.org> X-Sender: jared@finder.org Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2024-05-18 02:48, Eli Zaretskii wrote: >> Date: Mon, 13 May 2024 21:14:16 -0700 >> From: Jared Finder >> Cc: Eli Zaretskii , 68765@debbugs.gnu.org, >> philipk@posteo.net, >> monnier@iro.umontreal.ca >> >> > Thanks, looks like a good thing to do. >> >> Thank you! Final version of all three commits attached. These >> address >> all comments raised on this thread. >> >> I think after these patches are applied, the remaining work to resolve >> this would be having the ELPA package added and me updating NEWS and >> the >> manual. I can start on the updates. > > I installed the patches on the master branch. Thank you! Is there anything else that needs to be done to get this package on ELPA? I'd like to use this package on older Emacsen as well. -- MJF From debbugs-submit-bounces@debbugs.gnu.org Sun May 19 02:43:46 2024 Received: (at 68765) by debbugs.gnu.org; 19 May 2024 06:43:46 +0000 Received: from localhost ([127.0.0.1]:35805 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s8aGo-0001AV-DX for submit@debbugs.gnu.org; Sun, 19 May 2024 02:43:46 -0400 Received: from eggs.gnu.org ([209.51.188.92]:54398) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s8aGl-0001AH-ER for 68765@debbugs.gnu.org; Sun, 19 May 2024 02:43:44 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s8aGZ-0000Uc-PK; Sun, 19 May 2024 02:43:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=fgqgaE6w/xNZlkXwt9CGqZV0oW4tdZquZWB5lw1VVvU=; b=E6ilSxKaS2oa cLy4Y2cISwEpj90na6mpOLbeG5IQB4SSeSyADyqg5c0RY0y5UZEez/6zMpfjz2y0hqbYDrJt0UJR6 3g0sMHOFKWTG9T+zr8P5RqWto22EbKajIEw8mOvlpHgm8sFPwRGUYs5DgKzGWEN5gBQLw+ufP4yE8 uLD2QfNRTRtz3CQVbGBubfORnrc6Gc0On+MTuC4ZeP7SzjIZ93OjIDLFEaYnhfTCkgGGEPFH04o4L +1dzzPNxT/bndG/XHBgzBu8ak9Zi2tBbo1HO/rzPh4UeCjcmvo89y2uwD+BugA+66GfkTxo3aC3bF oaA5ucw0HQi/P/mZOo+5zQ==; Date: Sun, 19 May 2024 09:43:29 +0300 Message-Id: <86r0dyb8tq.fsf@gnu.org> From: Eli Zaretskii To: Jared Finder In-Reply-To: (message from Jared Finder on Sat, 18 May 2024 20:55:38 -0700) Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86o799rnym.fsf@mail.linkov.net> <86ed9ze9f4.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sat, 18 May 2024 20:55:38 -0700 > From: Jared Finder > Cc: Juri Linkov , 68765@debbugs.gnu.org, > philipk@posteo.net, monnier@iro.umontreal.ca > > On 2024-05-18 02:50, Eli Zaretskii wrote: > > > > Byte-compiling emits some warnings: > > > > In toplevel form: > > window-tool-bar.el:341:21: Warning: `mouse-wheel-down-event' is an > > obsolete variable (as of 30.1); use `mouse-wheel-buttons' instead. > > window-tool-bar.el:341:44: Warning: `mouse-wheel-up-event' is an > > obsolete variable (as of 30.1); use `mouse-wheel-buttons' instead. > > window-tool-bar.el:342:21: Warning: `mouse-wheel-left-event' is an > > obsolete variable (as of 30.1); use `mouse-wheel-buttons' instead. > > window-tool-bar.el:342:44: Warning: `mouse-wheel-right-event' is an > > obsolete variable (as of 30.1); use `mouse-wheel-buttons' instead. > > > > Jared, could you please take care of these? > > > > Thanks. > > The attached patch fixes those warnings. Thanks, installed. From debbugs-submit-bounces@debbugs.gnu.org Sun May 19 02:48:16 2024 Received: (at 68765) by debbugs.gnu.org; 19 May 2024 06:48:16 +0000 Received: from localhost ([127.0.0.1]:35810 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s8aLA-0001Ee-7J for submit@debbugs.gnu.org; Sun, 19 May 2024 02:48:16 -0400 Received: from eggs.gnu.org ([209.51.188.92]:39716) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s8aL8-0001EQ-Dz for 68765@debbugs.gnu.org; Sun, 19 May 2024 02:48:15 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s8aKx-0001BN-3a; Sun, 19 May 2024 02:48:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=NQ+bgEt2om60zCt41a7gjPbyFCMsksXfYgUBs2USSVw=; b=n3RaHmCdIk2q PMd8dfbKDvrkeKDpTNxlav1eyA6Vf3LYaDpLABw5oXygUuYOUu+dHoAwTB+xB2UFE8vVdqdmxyZkM CasLsC7aLqbX3dWk9WehwgXEc6Ad+uu2F3+ZybvBwwCOzWrLYTaFm/pBG31mp4a7pCTJ6kYwc0t6X iNue9vv7o9FJDaH83D+1upEYmlHtniukrlDDRAGwn1dNzBWcY64RtUAUygCxrkn/4x84wS9jU0hvc X25xMeZK1M3RTfUNf0vvpm+Z6ZcF4MzZTjfV8EXmEiE5i81p3LBvH1BVaDXloFfPxwEkiqDKP0DLs gYfUQ/sOY8+1AXsd6Hyc5g==; Date: Sun, 19 May 2024 09:48:00 +0300 Message-Id: <86pltib8m7.fsf@gnu.org> From: Eli Zaretskii To: Jared Finder In-Reply-To: <8cfec392c3f9259b7499ebd4f605bc25@finder.org> (message from Jared Finder on Sat, 18 May 2024 20:58:05 -0700) Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86frufe9i9.fsf@gnu.org> <8cfec392c3f9259b7499ebd4f605bc25@finder.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sat, 18 May 2024 20:58:05 -0700 > From: Jared Finder > Cc: juri@linkov.net, 68765@debbugs.gnu.org, philipk@posteo.net, > monnier@iro.umontreal.ca > > On 2024-05-18 02:48, Eli Zaretskii wrote: > >> I think after these patches are applied, the remaining work to resolve > >> this would be having the ELPA package added and me updating NEWS and > >> the > >> manual. I can start on the updates. > > > > I installed the patches on the master branch. > > Thank you! > > Is there anything else that needs to be done to get this package on > ELPA? I'd like to use this package on older Emacsen as well. Philip will tell, but what I meant was to ask you to work on updates for NEWS and the manual. From debbugs-submit-bounces@debbugs.gnu.org Sun May 19 10:41:18 2024 Received: (at 68765) by debbugs.gnu.org; 19 May 2024 14:41:18 +0000 Received: from localhost ([127.0.0.1]:36507 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s8hiv-0001ul-U0 for submit@debbugs.gnu.org; Sun, 19 May 2024 10:41:18 -0400 Received: from mout02.posteo.de ([185.67.36.66]:57365) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s8hit-0001uZ-It for 68765@debbugs.gnu.org; Sun, 19 May 2024 10:41:16 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 7D3C8240103 for <68765@debbugs.gnu.org>; Sun, 19 May 2024 16:41:05 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1716129665; bh=Pgzw+r++Jjl43P55dL/6zdUsc98bsHcbf8LmWIdZs5k=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type: From; b=Lw7GB0DUbShpmOnC35S7A1CIFvn4Wz5s6kgHy+r0QkBSMiKY4eCuMJLhzSzPLUNct ew+6FMGV1N0J/sXOI6YzHRpEjtLe6cDxA7GVHGJe+V7/5GOxfe1u5IYVE08OHpTrNC 6BDRV6H8QHvNpPJI/nHAdfV05pZM68dLN+tku4EZVXVPFxVplWv9MrJfNkFj32zBYa qOukJC4vKnngSRjXaTRVe5sepRllvx5quAuE57sD97EPToIj6O//1xwngYyHMhWBA7 QV5DT++4bOdKEj0eF1bWNQ2YS5wDQS/W6T13n4fzrVavr46dNgvpBBInpymLqvii6I bcTt6Y2OFlK5g== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4Vj3KX3GkRz6tvw; Sun, 19 May 2024 16:41:03 +0200 (CEST) From: Philip Kaludercic To: Jared Finder Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <8cfec392c3f9259b7499ebd4f605bc25@finder.org> (Jared Finder's message of "Sat, 18 May 2024 20:58:05 -0700") References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86frufe9i9.fsf@gnu.org> <8cfec392c3f9259b7499ebd4f605bc25@finder.org> X-Hashcash: 1:20:240519:68765@debbugs.gnu.org::5bYOvwv/6uCjHVMz:0//N X-Hashcash: 1:20:240519:juri@linkov.net::An5VKiCy84yplgx6:01vG X-Hashcash: 1:20:240519:jared@finder.org::3/T4u3xhW5mIPcgq:2NyM X-Hashcash: 1:20:240519:eliz@gnu.org::s9/5msD1Zw2jxyyi:3hWm X-Hashcash: 1:20:240519:monnier@iro.umontreal.ca::R57t7e0fHk+BMTG3:2gYW Date: Sun, 19 May 2024 14:41:03 +0000 Message-ID: <878r05uao0.fsf@posteo.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765 Cc: Eli Zaretskii , 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) --=-=-= Content-Type: text/plain Jared Finder writes: > On 2024-05-18 02:48, Eli Zaretskii wrote: >>> Date: Mon, 13 May 2024 21:14:16 -0700 >>> From: Jared Finder >>> Cc: Eli Zaretskii , 68765@debbugs.gnu.org, >>> philipk@posteo.net, >>> monnier@iro.umontreal.ca >>> > Thanks, looks like a good thing to do. >>> Thank you! Final version of all three commits attached. These >>> address >>> all comments raised on this thread. >>> I think after these patches are applied, the remaining work to >>> resolve >>> this would be having the ELPA package added and me updating NEWS >>> and the >>> manual. I can start on the updates. >> I installed the patches on the master branch. > > Thank you! > > Is there anything else that needs to be done to get this package on > ELPA? I'd like to use this package on older Emacsen as well. It just has to be added to ELPA, but that is a one-line patch to elpa.git. Here is the tarball I generated locally: --=-=-= Content-Type: application/x-tar Content-Disposition: attachment; filename=window-tool-bar.tar Content-Transfer-Encoding: base64 d2luZG93LXRvb2wtYmFyLTAuMi8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMTc1 MAAwMDAxNzUwADAwMDAwMDAwMDAwADE0NjIyNDA3NDA1ADAxMzczNwAgNQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHBoaWxpcAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAcGhpbGlwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3 aW5kb3ctdG9vbC1iYXItMC4yL3dpbmRvdy10b29sLWJhci5lbAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUw ADAwMDE3NTAAMDAwMDAwNTAwNjMAMTQ2MjI0MDc0MDUAMDE3MzExACAwAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAcGhpbGlwAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAABwaGlsaXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs7 OyB3aW5kb3ctdG9vbC1iYXIuZWwgLS0tIEFkZCB0b29sIGJhcnMgaW5zaWRlIHdpbmRvd3MgLSot IGxleGljYWwtYmluZGluZzogdCAtKi0KCjs7IENvcHlyaWdodCAoQykgMjAyMy0yMDI0IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgoKOzsgQXV0aG9yOiBKYXJlZCBGaW5kZXIgPGphcmVk QGZpbmRlci5vcmc+Cjs7IENyZWF0ZWQ6IE5vdiAyMSwgMjAyMwo7OyBWZXJzaW9uOiAwLjIKOzsg S2V5d29yZHM6IG1vdXNlCjs7IFBhY2thZ2UtUmVxdWlyZXM6ICgoZW1hY3MgIjI5LjEiKSkKCjs7 IFRoaXMgaXMgYSBHTlUgRUxQQSA6Y29yZSBwYWNrYWdlLiAgQXZvaWQgYWRkaW5nIGZ1bmN0aW9u YWxpdHkgdGhhdAo7OyBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSB2ZXJzaW9uIG9mIEVtYWNzIHJl Y29yZGVkIGFib3ZlIG9yIGFueSBvZgo7OyB0aGUgcGFja2FnZSBkZXBlbmRlbmNpZXMuCgo7OyBU aGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCgo7OyBHTlUgRW1hY3MgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo7OyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQo7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgo7OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKOzsg R05VIEVtYWNzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCjs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCjs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KCjs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCjs7IGFsb25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKOzs7IENvbW1lbnRhcnk6Cjs7 Cjs7IFRoaXMgcGFja2FnZSBwdXRzIGEgdG9vbCBiYXIgaW4gZWFjaCB3aW5kb3cuICBUaGlzIGFs bG93cyB5b3UgdG8gc2VlCjs7IG11bHRpcGxlIHRvb2wgYmFycyBzaW11bHRhbmVvdXNseSBkaXJl Y3RseSBuZXh0IHRvIHRoZSBidWZmZXIgaXQKOzsgYWN0cyBvbiB3aGljaCBmZWVscyBtdWNoIG1v cmUgaW50dWl0aXZlLiAgRW1hY3MgImJyb3dzaW5nIiBtb2Rlcwo7OyBnZW5lcmFsbHkgaGF2ZSBz ZW5zaWJsZSB0b29sIGJhcnMsIGZvciBleGFtcGxlOiAqaW5mbyosICpoZWxwKiwgYW5kCjs7ICpl d3cqIGhhdmUgdGhlbS4KOzsKOzsgSXQgZG9lcyB0aGlzIHdoaWxlIGJlaW5nIG1pbmRmdWwgb2Yg c2NyZWVuIHJlYWwgZXN0YXRlLiAgTW9zdCBtb2Rlcwo7OyBkbyBub3QgcHJvdmlkZSBhIGN1c3Rv bSB0b29sIGJhciwgYW5kIHRoaXMgcGFja2FnZSBkb2VzIG5vdCBzaG93IHRoZQo7OyBkZWZhdWx0 IHRvb2wgYmFyLiAgVGhpcyBtZWFucyB0aGF0IGZvciBtb3N0IGJ1ZmZlcnMgdGhlcmUgd2lsbCBi ZSBubwo7OyBzcGFjZSB0YWtlbiB1cC4gIEZ1cnRoZXJtb3JlLCB5b3UgY2FuIHB1dCB0aGlzIHRv b2wgYmFyIGluIHRoZSBtb2RlCjs7IGxpbmUgb3IgdGFiIGxpbmUgaWYgeW91IHdhbnQgdG8gc2hh cmUgaXQgd2l0aCBleGlzdGluZyBjb250ZW50Lgo7Owo7OyBUbyBnZXQgdGhlIGRlZmF1bHQgYmVo YXZpb3IsIHJ1biAoZ2xvYmFsLXdpbmRvdy10b29sLWJhci1tb2RlIDEpIG9yCjs7IGVuYWJsZSB2 aWEgTS14IGN1c3RvbWl6ZS1ncm91cCBSRVQgd2luZG93LXRvb2wtYmFyIFJFVC4gIFRoaXMgdXNl cwo7OyB0aGUgcGVyLXdpbmRvdyB0YWIgbGluZSB0byBzaG93IHRoZSB0b29sIGJhci4KOzsKOzsg SWYgeW91IHdhbnQgdG8gc2hhcmUgc3BhY2Ugd2l0aCBhbiBleGlzdGluZyB0YWIgbGluZSwgbW9k ZSBsaW5lLCBvcgo7OyBoZWFkZXIgbGluZSwgYWRkICg6ZXZhbCAod2luZG93LXRvb2wtYmFyLXN0 cmluZykpIHRvCjs7IGB0YWItbGluZS1mb3JtYXQnLCBgbW9kZS1saW5lLWZvcm1hdCcsIG9yIGBo ZWFkZXItbGluZS1mb3JtYXQnLgoKOzs7IEtub3duIGlzc3VlczoKOzsKOzsgT24gR05VIEVtYWNz IDI5LjEsIHRlcm1pbmFscyBkcmFnZ2luZyB0byByZXNpemUgd2luZG93cyB3aWxsIGVycm9yCjs7 IHdpdGggbWVzc2FnZSAiPHRhYi1saW5lPiA8bW91c2UtbW92ZW1lbnQ+IGlzIHVuZGVmaW5lZCIu ICBUaGlzIGlzIGEKOzsgYnVnIGluIEdOVSBFbWFjcywKOzsgPGh0dHBzOi8vZGViYnVncy5nbnUu b3JnL2NnaS9idWdyZXBvcnQuY2dpP2J1Zz02NzQ1Nz4uCjs7Cjs7IE9uIEdOVSBFbWFjcyAyOSwg cGVyZm9ybWFuY2UgaW4gdGVybWluYWxzIGlzIGxvd2VyIHRoYW4gb24KOzsgZ3JhcGhpY2FsIGZy YW1lcy4gIFRoaXMgaXMgZHVlIHRvIGEgd29ya2Fyb3VuZCwgc2VlICJXb3JrYXJvdW5kIGZvcgo7 OyBodHRwczovL2RlYmJ1Z3MuZ251Lm9yZy9jZ2kvYnVncmVwb3J0LmNnaT9idWc9NjgzMzQiLCBi ZWxvdy4KCjs7OyBUb2RvOgo7Owo7OyBOb3QgYWxsIGZlYXR1cmVzIHBsYW5uZWQgYXJlIGltcGxl bWVudGVkIHlldC4gIEV2ZW50dWFsbHkgSSB3b3VsZAo7OyBsaWtlIHRvIGFsc28gZ2VuZXJhbGx5 IG1ha2UgdG9vbCBiYXJzIGJldHRlci4KOzsKOzsgVGFyZ2V0aW5nIDAuMzoKOzsgKiBQcm9wZXJs eSBzdXBwb3J0IHJlYW1pbmluZyBsZXNzIGZyZXF1ZW50bHkgdXNlZCB0b29sIGJhciBpdGVtIHNw ZWNzLiAgRnJvbQo7OyAgIGBwYXJzZV90b29sX2Jhcl9pdGVtJzoKOzsgICAgICogOnZpc2libGUK OzsgICAgICogOmZpbHRlcgo7OyAgICAgKiA6YnV0dG9uCjs7ICAgICAqIDp3cmFwCjs7ICogQWRk IGRpc3BsYXkgY3VzdG9taXphdGlvbiBzaW1pbGFyIHRvIGB0b29sLWJhci1zdHlsZScuCjs7Cjs7 IFRhcmdldGluZyAxLjA6Cjs7Cjs7ICogQ2xlYW4gdXAgRW1hY3MgdG9vbCBiYXJzCjs7ICAgICAq IERlZmF1bHQ6IFJlbW92ZSBkZWZhdWx0IHRvb2wtYmFyIGVudGlyZWx5Cjs7ICAgICAqIGdyZXAs IHZjOiBSZW1vdmUgZGVmYXVsdCB0b29sLWJhciBpbmhlcml0ZWQKOzsgICAgICogaW5mbzogUmVt b3ZlIE5leHQgLyBQcmV2IC8gVXAsIHdoaWNoIGlzIGFscmVhZHkgaW4gdGhlIGhlYWRlcgo7OyAg ICAgKiBzbWVyZ2U6IEFkZCB0b29sIGJhciBmb3IgbmV4dC9wcmV2Cjs7Cjs7IFBvc3QgMS4wIHdv cms6Cjs7Cjs7ICogU2hvdyBrZXlib2FyZCBzaG9ydGN1dCBvbiBoZWxwIHRleHQuCjs7Cjs7ICog QWRkIGEgYml0IG1vcmUgZG9jdW1lbnRhdGlvbi4KOzsgKiBBZGQgY3VzdG9taXphdGlvbiBvcHRp b246IGlnbm9yZS1kZWZhdWx0LXRvb2wtYmFyLW1hcAo7OyAqIE1ha2UgdGFiLWxpbmUgZHJhZ2dp bmcgcmVzaXplIHRoZSB3aW5kb3cKCjs7OyBDb2RlOgoKKHJlcXVpcmUgJ213aGVlbCkKKHJlcXVp cmUgJ3RhYi1saW5lKQoocmVxdWlyZSAndG9vbC1iYXIpCgwKOzs7IEJlbmNobWFya2luZyBjb2Rl Cjs7Cjs7IFJlZnJlc2hpbmcgdGhlIHRvb2wgYmFyIGlzIGNvbXB1dGF0aW9uYWxseSBzaW1wbGUs IGJ1dCBnZW5lcmF0ZXMgYQo7OyBsb3Qgb2YgZ2FyYmFnZS4gIFNvIHRoaXMgYmVuY2htYXJraW5n IGZvY3VzZXMgb24gZ2FyYmFnZQo7OyBnZW5lcmF0aW9uLiAgU2luY2UgaXQgaGFzIHRvIHJ1biBh ZnRlciBtb3N0IGNvbW1hbmRzLCBnZW5lcmF0aW5nCjs7IHNpZ25pZmljYW50bHkgbW9yZSBnYXJi YWdlIHdpbGwgY2F1c2Ugbm90aWNlYWJsZSBwZXJmb3JtYW5jZQo7OyBkZWdyYXRpb24uCjs7Cjs7 IFRoZSByZWZyZXNoIGhhcyB0d28gc3RlcHM6Cjs7Cjs7IFN0ZXAgMTogTG9vayB1cCB0aGUgPHRv b2wtYmFyPiBtYXAuCjs7IFN0ZXAgMjogR2VuZXJhdGUgYSBMaXNwIHN0cmluZyB1c2luZyB0ZXh0 IHByb3BlcnRpZXMgZm9yIHRoZSB0b29sCjs7IGJhciBzdHJpbmcuCjs7Cjs7IEFkZGl0aW9uYWxs eSwgd2Uga2VlcCB0cmFjayBvZiB0aGUgcGVyY2VudGFnZSBvZiBjb21tYW5kcyB0aGF0Cjs7IGFj dXRhbGx5IGNyZWF0ZWQgYSByZWZyZXNoLgooZGVmdmFyIHdpbmRvdy10b29sLWJhci0tbWVtb3J5 LXVzZS1kZWx0YS1zdGVwMSAobWFrZS1saXN0IDcgMCkKICAiQWJzb2x1dGUgZGVsdGEgb2YgbWVt b3J5IHVzZSBjb3VudGVycyBkdXJpbmcgc3RlcCAxLgpUaGlzIGlzIGEgbGlzdCBpbiB0aGUgc2Ft ZSBzdHJ1Y3R1cmUgYXMgYG1lbW9yeS11c2UtY291bnRzJy4iKQooZGVmdmFyIHdpbmRvdy10b29s LWJhci0tbWVtb3J5LXVzZS1kZWx0YS1zdGVwMiAobWFrZS1saXN0IDcgMCkKICAiQWJzb2x1dGUg ZGVsdGEgb2YgbWVtb3J5IHVzZSBjb3VudGVycyBkdXJpbmcgc3RlcCAyLgpUaGlzIGlzIGEgbGlz dCBpbiB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXMgYG1lbW9yeS11c2UtY291bnRzJy4iKQooZGVmdmFy IHdpbmRvdy10b29sLWJhci0tcmVmcmVzaC1kb25lLWNvdW50IDAKICAiTnVtYmVyIG9mIHRvb2wg YmFyIHN0cmluZyByZWZyZXNoZXMgcnVuLgpUaGUgdG90YWwgbnVtYmVyIG9mIHJlcXVlc3RzIGlz IHRoZSBzdW0gb2YgdGhpcyBhbmQKYHdpbmRvdy10b29sLWJhci0tcmVmcmVzaC1za2lwcGVkLWNv dW50Jy4iKQooZGVmdmFyIHdpbmRvdy10b29sLWJhci0tcmVmcmVzaC1za2lwcGVkLWNvdW50IDAK ICAiTnVtYmVyIG9mIHRvb2wgYmFyIHN0cmluZyByZWZyZXNoZXMgdGhhdCB3ZXJlIHNraXBwZWQu ClRoZSB0b3RhbCBudW1iZXIgb2YgcmVxdWVzdHMgaXMgdGhlIHN1bSBvZiB0aGlzIGFuZApgd2lu ZG93LXRvb2wtYmFyLS1yZWZyZXNoLWRvbmUtY291bnQnLiIpCgooZGVmdW4gd2luZG93LXRvb2wt YmFyLS1tZW1vcnktdXNlLWF2Zy1zdGVwMSAoKQogICJSZXR1cm4gYXZlcmFnZSBtZW1vcnkgdXNl IGRlbHRhIGR1cmluZyBzdGVwIDEuIgogIChtYXBjYXIgKGxhbWJkYSAoZWx0KSAoLyAoZmxvYXQg ZWx0KSB3aW5kb3ctdG9vbC1iYXItLXJlZnJlc2gtZG9uZS1jb3VudCkpCiAgICAgICAgICB3aW5k b3ctdG9vbC1iYXItLW1lbW9yeS11c2UtZGVsdGEtc3RlcDEpKQoKKGRlZnVuIHdpbmRvdy10b29s LWJhci0tbWVtb3J5LXVzZS1hdmctc3RlcDIgKCkKICAiUmV0dXJuIGF2ZXJhZ2UgbWVtb3J5IHVz ZSBkZWx0YSBkdXJpbmcgc3RlcCAyLiIKICAobWFwY2FyIChsYW1iZGEgKGVsdCkgKC8gKGZsb2F0 IGVsdCkgd2luZG93LXRvb2wtYmFyLS1yZWZyZXNoLWRvbmUtY291bnQpKQogICAgICAgICAgd2lu ZG93LXRvb2wtYmFyLS1tZW1vcnktdXNlLWRlbHRhLXN0ZXAyKSkKCihkZWNsYXJlLWZ1bmN0aW9u IHRpbWUtc3RhbXAtc3RyaW5nICJ0aW1lLXN0YW1wIikKCihkZWZ1biB3aW5kb3ctdG9vbC1iYXIt ZGVidWctc2hvdy1tZW1vcnktdXNlICgpCiAgIkRldmVsb3BtZW50LW9ubHkgY29tbWFuZCB0byBz aG93IG1lbW9yeSB1c2VkIGJ5IGB3aW5kb3ctdG9vbC1iYXItc3RyaW5nJy4iCiAgKGludGVyYWN0 aXZlKQogIChyZXF1aXJlICd0aW1lLXN0YW1wKQogIChzYXZlLXNlbGVjdGVkLXdpbmRvdwogICAg KHBvcC10by1idWZmZXIgIipXVEIgTWVtb3J5IFJlcG9ydCoiKQogICAgKHVubGVzcyAoZGVyaXZl ZC1tb2RlLXAgJ3NwZWNpYWwtbW9kZSkKICAgICAgKHNwZWNpYWwtbW9kZSkpCgogICAgKGdvdG8t Y2hhciAocG9pbnQtbWF4KSkKICAgIChsZXQgKChpbmhpYml0LXJlYWQtb25seSB0KSkKICAgICAg KGluc2VydCAocHJvcGVydGl6ZSAoY29uY2F0ICJGdW5jdGlvbjogd2luZG93LXRvb2wtYmFyLXN0 cmluZyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGltZS1zdGFtcC1zdHJp bmcpKQogICAgICAgICAgICAgICAgICAgICAgICAgICdmYWNlICd1bmRlcmxpbmUgJ2ZvbnQtbG9j ay1mYWNlICd1bmRlcmxpbmUpCiAgICAgICAgICAgICAgIlxuXG4iKQogICAgICAod2luZG93LXRv b2wtYmFyLS1pbnNlcnQtbWVtb3J5LXVzZQogICAgICAgIlN0ZXAgMSIgKHdpbmRvdy10b29sLWJh ci0tbWVtb3J5LXVzZS1hdmctc3RlcDEpKQogICAgICAod2luZG93LXRvb2wtYmFyLS1pbnNlcnQt bWVtb3J5LXVzZQogICAgICAgIlN0ZXAgMiIgKHdpbmRvdy10b29sLWJhci0tbWVtb3J5LXVzZS1h dmctc3RlcDIpKQogICAgICAoaW5zZXJ0IChmb3JtYXQgIlJlZnJlc2ggY291bnQgICVkXG4iIHdp bmRvdy10b29sLWJhci0tcmVmcmVzaC1kb25lLWNvdW50KQogICAgICAgICAgICAgIChmb3JtYXQg IlJlZnJlc2ggZXhlY3V0ZWQgcGVyY2VudCAlLjJmXG4iCiAgICAgICAgICAgICAgICAgICAgICAo LyAoZmxvYXQgd2luZG93LXRvb2wtYmFyLS1yZWZyZXNoLWRvbmUtY291bnQpCiAgICAgICAgICAg ICAgICAgICAgICAgICAoKyB3aW5kb3ctdG9vbC1iYXItLXJlZnJlc2gtZG9uZS1jb3VudAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LXRvb2wtYmFyLS1yZWZyZXNoLXNraXBwZWQt Y291bnQpKSkKICAgICAgICAgICAgICAiXG4iKSkpKQoKKGRlZnVuIHdpbmRvdy10b29sLWJhci0t aW5zZXJ0LW1lbW9yeS11c2UgKGxhYmVsIGF2Zy1tZW1vcnktdXNlKQogICJJbnNlcnQgbWVtb3J5 IHVzZSBpbnRvIGN1cnJlbnQgYnVmZmVyLgoKTEFCRUwgaXMgYSBwcmVmaXggc3RyaW5nIHRvIGJl IGluIGZyb250IG9mIHRoZSBkYXRhLgpBVkctTUVNT1JZLVVTRSBpcyBhIGxpc3Qgb2YgYXZlcmFn ZXMsIHdpdGggdGhlIHNhbWUgbWVhbmluZyBhcwpgbWVtb3J5LXVzZS1jb3VudHMnLiIKICAobGV0 KiAoKGxhYmVsLWxlbiAobGVuZ3RoIGxhYmVsKSkKICAgICAgICAgKHBhZGRpbmcgKG1ha2Utc3Ry aW5nIGxhYmVsLWxlbiA/XHMpKSkKICAgIChjbC1sb29wIGZvciB1c2FnZSBpbiBhdmctbWVtb3J5 LXVzZQogICAgICAgICAgICAgZm9yIHVzYWdlLWxhYmVsIGluICcoIkNvbnNlcyIgIkZsb2F0cyIg IlZlY3RvciBjZWxscyIgIlN5bWJvbHMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiU3RyaW5nIGNoYXJzIiAiSW50ZXJ2YWxzIiAiU3RyaW5ncyIpCiAgICAgICAgICAgICBmb3Ig aWR4IGZyb20gMAogICAgICAgICAgICAgZG8gKGluc2VydCAoZm9ybWF0ICIlcyAgJTguMmYgJXNc biIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKD0gaWR4IDApIGxhYmVsIHBh ZGRpbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNhZ2UKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1c2FnZS1sYWJlbCkpKSkpCgwKKGRlZmdyb3VwIHdpbmRvdy10 b29sLWJhciBuaWwKICAiVG9vbCBiYXJzIHBlci13aW5kb3cuIgogIDpncm91cCAnY29udmVuaWVu Y2UKICA6cHJlZml4ICJ3aW5kb3ctdG9vbC1iYXItIikKCihkZWZ2YXIta2V5bWFwIHdpbmRvdy10 b29sLWJhci0tYnV0dG9uLWtleW1hcAogIDpkb2MgIktleW1hcCB1c2VkIGJ5IGB3aW5kb3ctdG9v bC1iYXItLWtleW1hcC1lbnRyeS10by1zdHJpbmcnLiIKICAiPGZvbGxvdy1saW5rPiIgJ21vdXNl LWZhY2UKICA7OyBGb2xsb3cgbGluayBvbiBhbGwgY2xpY2tzIG9mIG1vdXNlLTEgYW5kIG1vdXNl LTIgc2luY2UgdGhlIHRvb2wKICA7OyBiYXIgaXMgbm90IGEgcGxhY2UgdGhlIHBvaW50IGNhbiB0 cmF2ZWwgdG8uCiAgIjx0YWItbGluZT4gPG1vdXNlLTE+IiAjJ3dpbmRvdy10b29sLWJhci0tY2Fs bC1idXR0b24KICAiPHRhYi1saW5lPiA8ZG91YmxlLW1vdXNlLTE+IiAjJ3dpbmRvdy10b29sLWJh ci0tY2FsbC1idXR0b24KICAiPHRhYi1saW5lPiA8dHJpcGxlLW1vdXNlLTE+IiAjJ3dpbmRvdy10 b29sLWJhci0tY2FsbC1idXR0b24KICAiPHRhYi1saW5lPiA8bW91c2UtMj4iICMnd2luZG93LXRv b2wtYmFyLS1jYWxsLWJ1dHRvbgogICI8dGFiLWxpbmU+IDxkb3VibGUtbW91c2UtMj4iICMnd2lu ZG93LXRvb2wtYmFyLS1jYWxsLWJ1dHRvbgogICI8dGFiLWxpbmU+IDx0cmlwbGUtbW91c2UtMj4i ICMnd2luZG93LXRvb2wtYmFyLS1jYWxsLWJ1dHRvbgoKICA7OyBNb3VzZSBkb3duIGV2ZW50cyBk byBub3RoaW5nLiAgQSBiaW5kaW5nIGlzIG5lZWRlZCBzbyBpc2VhcmNoCiAgOzsgZG9lcyBub3Qg ZXhpdCB3aGVuIHRoZSB0YWIgYmFyIGlzIGNsaWNrZWQuCiAgIjx0YWItbGluZT4gPGRvd24tbW91 c2UtMT4iICMnd2luZG93LXRvb2wtYmFyLS1pZ25vcmUKICAiPHRhYi1saW5lPiA8ZG91YmxlLWRv d24tbW91c2UtMT4iICMnd2luZG93LXRvb2wtYmFyLS1pZ25vcmUKICAiPHRhYi1saW5lPiA8dHJp cGxlLWRvd24tbW91c2UtMT4iICMnd2luZG93LXRvb2wtYmFyLS1pZ25vcmUKICAiPHRhYi1saW5l PiA8ZG93bi1tb3VzZS0yPiIgIyd3aW5kb3ctdG9vbC1iYXItLWlnbm9yZQogICI8dGFiLWxpbmU+ IDxkb3VibGUtZG93bi1tb3VzZS0yPiIgIyd3aW5kb3ctdG9vbC1iYXItLWlnbm9yZQogICI8dGFi LWxpbmU+IDx0cmlwbGUtZG93bi1tb3VzZS0yPiIgIyd3aW5kb3ctdG9vbC1iYXItLWlnbm9yZSkK KGZzZXQgJ3dpbmRvdy10b29sLWJhci0tYnV0dG9uLWtleW1hcCB3aW5kb3ctdG9vbC1iYXItLWJ1 dHRvbi1rZXltYXApIDsgU28gaXQgY2FuIGJlIGEga2V5bWFwIHByb3BlcnR5Cgo7OyBSZWdpc3Rl ciBiaW5kaW5ncyB0aGF0IHN0YXkgaW4gaXNlYXJjaC4gIFRlY2huaWNhbGx5LCB0aGVzZQo7OyBj b21tYW5kcyBkb24ndCBwb3AgdXAgYSBtZW51IGJ1dCB0aGV5IGFjdCB2ZXJ5IHNpbWlsYXIgaW4g dGhhdCB0aGV5Cjs7IGFyZSBjYXVzZWQgYnkgbW91c2UgaW5wdXQgYW5kIG1heSBjYWxsIGNvbW1h bmRzIHZpYQo7OyBgY2FsbC1pbnRlcmFjdGl2ZWx5Jy4KKHB1c2ggJ3dpbmRvdy10b29sLWJhci0t Y2FsbC1idXR0b24gaXNlYXJjaC1tZW51LWJhci1jb21tYW5kcykKKHB1c2ggJ3dpbmRvdy10b29s LWJhci0taWdub3JlIGlzZWFyY2gtbWVudS1iYXItY29tbWFuZHMpCgooZGVmdmFyLWxvY2FsIHdp bmRvdy10b29sLWJhci1zdHJpbmctLWNhY2hlIG5pbAogICJDYWNoZSBmb3IgcHJldmlvdXMgcmVz dWx0IG9mIGB3aW5kb3ctdG9vbC1iYXItc3RyaW5nJy4iKQoKOzs7IyMjYXV0b2xvYWQKKGRlZnVu IHdpbmRvdy10b29sLWJhci1zdHJpbmcgKCkKICAiUmV0dXJuIGEgKHByb3BlcnRpemVkKSBzdHJp bmcgZm9yIHRoZSB0b29sIGJhci4KClRoaXMgaXMgZm9yIHdoZW4geW91IHdhbnQgbW9yZSBjdXN0 b21pemF0aW9ucyB0aGFuCmB3aW5kb3ctdG9vbC1iYXItbW9kZScgcHJvdmlkZXMuICBDb21tb25s eSBhZGRlZCB0byB0aGUgdmFyaWFibGUKYHRhYi1saW5lLWZvcm1hdCcsIGBoZWFkZXItbGluZS1m b3JtYXQnLCBvciBgbW9kZS1saW5lLWZvcm1hdCciCiAgKGlmIChvciAobnVsbCB3aW5kb3ctdG9v bC1iYXItc3RyaW5nLS1jYWNoZSkKICAgICAgICAgICh3aW5kb3ctdG9vbC1iYXItLWxhc3QtY29t bWFuZC10cmlnZ2Vycy1yZWZyZXNoLXApKQogICAgICAobGV0KiAoKG1lbTAgKG1lbW9yeS11c2Ut Y291bnRzKSkKICAgICAgICAgICAgICh0b29sYmFyLW1lbnUgKHdpbmRvdy10b29sLWJhci0tZ2V0 LWtleW1hcCkpCiAgICAgICAgICAgICAobWVtMSAobWVtb3J5LXVzZS1jb3VudHMpKQogICAgICAg ICAgICAgKHJlc3VsdCAobWFwY29uY2F0ICMnd2luZG93LXRvb2wtYmFyLS1rZXltYXAtZW50cnkt dG8tc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNkciB0b29sYmFyLW1l bnUpIDtTa2lwICdrZXltYXAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBXaXRo b3V0IHNwYWNlcyBiZXR3ZWVuIHRoZSB0ZXh0LCBob3ZlcmluZwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDs7IGhpZ2hsaWdodHMgYWxsIGFkamFjZW50IGJ1dHRvbnMuCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGlmICh3aW5kb3ctdG9vbC1iYXItLXVzZS1pbWFnZXMp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wZXJ0aXplICIgIiAnaW52 aXNpYmxlIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICIpKSkKICAgICAg ICAgICAgIChtZW0yIChtZW1vcnktdXNlLWNvdW50cykpKQogICAgICAgIChjbC1tYXBsIChsYW1i ZGEgKGwtaW5pdCBsMCBsMSkKICAgICAgICAgICAgICAgICAgIChjbC1pbmNmIChjYXIgbC1pbml0 KSAoLSAoY2FyIGwxKSAoY2FyIGwwKSkpKQogICAgICAgICAgICAgICAgIHdpbmRvdy10b29sLWJh ci0tbWVtb3J5LXVzZS1kZWx0YS1zdGVwMSBtZW0wIG1lbTEpCiAgICAgICAgKGNsLW1hcGwgKGxh bWJkYSAobC1pbml0IGwxIGwyKQogICAgICAgICAgICAgICAgICAgKGNsLWluY2YgKGNhciBsLWlu aXQpICgtIChjYXIgbDIpIChjYXIgbDEpKSkpCiAgICAgICAgICAgICAgICAgd2luZG93LXRvb2wt YmFyLS1tZW1vcnktdXNlLWRlbHRhLXN0ZXAyIG1lbTEgbWVtMikKCiAgICAgICAgKHNldGYgd2lu ZG93LXRvb2wtYmFyLXN0cmluZy0tY2FjaGUKICAgICAgICAgICAgICAoY29uY2F0CiAgICAgICAg ICAgICAgIDs7IFRoZSB0b29sIGJhciBmYWNlIGJ5IGRlZmF1bHQgcHV0cyBib3hlcyBhcm91bmQg dGhlCiAgICAgICAgICAgICAgIDs7IGJ1dHRvbnMuICBIb3dldmVyLCB0aGlzIGJveCBpcyBub3Qg ZGlzcGxheWVkIGlmIHRoZQogICAgICAgICAgICAgICA7OyBib3ggc3RhcnRzIGF0IHRoZSBsZWZ0 bW9zdCBwaXhlbCBvZiB0aGUgdGFiLWxpbmUuCiAgICAgICAgICAgICAgIDs7IEFkZCBhIHNpbmds ZSBzcGFjZSBpbiB0aGlzIGNhc2Ugc28gdGhlIGJveCBkaXNwbGF5cwogICAgICAgICAgICAgICA7 OyBjb3JyZWN0bHkuCiAgICAgICAgICAgICAgIChhbmQgKGRpc3BsYXktc3VwcG9ydHMtZmFjZS1h dHRyaWJ1dGVzLXAKICAgICAgICAgICAgICAgICAgICAgJyg6Ym94IChsaW5lLXdpZHRoIDEpKSkK ICAgICAgICAgICAgICAgICAgICAocHJvcGVydGl6ZSAiICIgJ2Rpc3BsYXkgJyhzcGFjZSA6d2lk dGggKDEpKSkpCiAgICAgICAgICAgICAgIHJlc3VsdCkpCiAgICAgICAgKGNsLWluY2Ygd2luZG93 LXRvb2wtYmFyLS1yZWZyZXNoLWRvbmUtY291bnQpKQogICAgKGNsLWluY2Ygd2luZG93LXRvb2wt YmFyLS1yZWZyZXNoLXNraXBwZWQtY291bnQpKQoKICB3aW5kb3ctdG9vbC1iYXItc3RyaW5nLS1j YWNoZSkKCihkZWZjb25zdCB3aW5kb3ctdG9vbC1iYXItLWdyYXBoaWNhbC1zZXBhcmF0b3IKICAo Y29uY2F0CiAgIChwcm9wZXJ0aXplICIgIiAnZGlzcGxheSAnKHNwYWNlIDp3aWR0aCAoNCkpKQog ICAocHJvcGVydGl6ZSAiICIgJ2Rpc3BsYXkgJyhzcGFjZSA6d2lkdGggKDEpIGZhY2UgKDppbnZl cnNlLXZpZGVvIHQpKSkKICAgKHByb3BlcnRpemUgIiAiICdkaXNwbGF5ICcoc3BhY2UgOndpZHRo ICg0KSkpKSkKCihkZWZ1biB3aW5kb3ctdG9vbC1iYXItLWtleW1hcC1lbnRyeS10by1zdHJpbmcg KG1lbnUtaXRlbSkKICAiQ29udmVydCBNRU5VLUlURU0gaW50byBhIChwcm9wZXJ0aXplZCkgc3Ry aW5nIHJlcHJlc2VudGF0aW9uLgoKTUVOVS1JVEVNIGlzIGEgbWVudSBpdGVtIHRvIGNvbnZlcnQu ICBTZWUgaW5mbyBub2RlIChlbGlzcClUb29sIEJhci4iCiAgKHBjYXNlLWV4aGF1c3RpdmUgbWVu dS1pdGVtCiAgICA7OyBTZXBhcmF0b3JzCiAgICAoKG9yIGAoLF8gIi0tIikKICAgICAgICAgYCgs XyBtZW51LWl0ZW0gLChhbmQgKHByZWQgc3RyaW5ncCkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHByZWQgKHN0cmluZy1wcmVmaXgtcCAiLS0iKSkpKSkKICAgICAoaWYgKHdpbmRvdy10 b29sLWJhci0tdXNlLWltYWdlcykKICAgICAgICAgd2luZG93LXRvb2wtYmFyLS1ncmFwaGljYWwt c2VwYXJhdG9yCiAgICAgICAifCIpKQoKICAgIDs7IE1lbnUgaXRlbSwgdHVybiBpbnRvIHByb3Bl cnRpemVkIHN0cmluZyBidXR0b24KICAgIChgKCxrZXkgbWVudS1pdGVtICxuYW1lLWV4cHIgLGJp bmRpbmcgLiAscGxpc3QpCiAgICAgKHdoZW4gYmluZGluZyAgICAgIDsgSWYgbm8gYmluZGluZyBl eGlzdHMsIHRoZW4gYnV0dG9uIGlzIGhpZGRlbi4KICAgICAgIChsZXQqICgobmFtZSAoZXZhbCBu YW1lLWV4cHIpKQogICAgICAgICAgICAgIChzdHIgKHVwY2FzZS1pbml0aWFscyAob3IgKHBsaXN0 LWdldCBwbGlzdCA6bGFiZWwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc3RyaW5nLXRyaW0tcmlnaHQgbmFtZSAiXFwuKyIpKSkpCiAgICAgICAgICAgICAgKGxlbiAo bGVuZ3RoIHN0cikpCiAgICAgICAgICAgICAgKGVuYWJsZS1mb3JtIChwbGlzdC1nZXQgcGxpc3Qg OmVuYWJsZSkpCiAgICAgICAgICAgICAgKGVuYWJsZWQgKG9yIChub3QgZW5hYmxlLWZvcm0pCiAg ICAgICAgICAgICAgICAgICAgICAgICAgIChldmFsIGVuYWJsZS1mb3JtKSkpKQogICAgICAgICAo aWYgZW5hYmxlZAogICAgICAgICAgICAgKGFkZC10ZXh0LXByb3BlcnRpZXMgMCBsZW4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcobW91c2UtZmFjZSB3aW5kb3ctdG9vbC1iYXIt YnV0dG9uLWhvdmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleW1hcCB3 aW5kb3ctdG9vbC1iYXItLWJ1dHRvbi1rZXltYXAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZmFjZSB3aW5kb3ctdG9vbC1iYXItYnV0dG9uKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RyKQogICAgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSAwIGxlbgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFjZQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnd2luZG93LXRvb2wtYmFyLWJ1dHRvbi1kaXNhYmxlZAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHIpKQogICAgICAgICAod2hlbi1sZXQgKChzcGVjIChhbmQgKHdpbmRv dy10b29sLWJhci0tdXNlLWltYWdlcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChw bGlzdC1nZXQgbWVudS1pdGVtIDppbWFnZSkpKSkKICAgICAgICAgICAocHV0LXRleHQtcHJvcGVy dHkgMCBsZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGFwcGVuZCBzcGVjCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGlmIGVuYWJsZWQgJyg6bWFyZ2luIDIgOmFzY2VudCBjZW50ZXIpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKDptYXJnaW4gMiA6YXNjZW50 IGNlbnRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y29udmVy c2lvbiBkaXNhYmxlZCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIpKQogICAg ICAgICAocHV0LXRleHQtcHJvcGVydHkgMCBsZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICdoZWxwLWVjaG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciAocGxpc3QtZ2V0IHBs aXN0IDpoZWxwKSBuYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKQogICAgICAg ICAocHV0LXRleHQtcHJvcGVydHkgMCBsZW4gJ3Rvb2wtYmFyLWtleSBrZXkgc3RyKQogICAgICAg ICBzdHIpKSkpKQoKKGRlZnVuIHdpbmRvdy10b29sLWJhci0tY2FsbC1idXR0b24gKCkKICAiQ2Fs bCB0aGUgYnV0dG9uIHRoYXQgd2FzIGNsaWNrZWQgb24gaW4gdGhlIHRhYiBsaW5lLiIKICAoaW50 ZXJhY3RpdmUpCiAgKHdoZW4gKG1vdXNlLWV2ZW50LXAgbGFzdC1jb21tYW5kLWV2ZW50KQogICAg KGxldCAoKHBvc24gKGV2ZW50LXN0YXJ0IGxhc3QtY29tbWFuZC1ldmVudCkpKQogICAgICA7OyBD b21tYW5kcyBuZWVkIHRvIGV4ZWN1dGUgd2l0aCB0aGUgcmlnaHQgYnVmZmVyIGFuZCB3aW5kb3cK ICAgICAgOzsgc2VsZWN0ZWQuICBUaGUgc2VsZWN0aW9uIG5lZWRzIHRvIGJlIHBlcm1hbmVudCBm b3IgaXNlYXJjaC4KICAgICAgKHNlbGVjdC13aW5kb3cgKHBvc24td2luZG93IHBvc24pKQogICAg ICAobGV0KiAoKHN0ciAocG9zbi1zdHJpbmcgcG9zbikpCiAgICAgICAgICAgICAoa2V5IChnZXQt dGV4dC1wcm9wZXJ0eSAoY2RyIHN0cikgJ3Rvb2wtYmFyLWtleSAoY2FyIHN0cikpKQogICAgICAg ICAgICAgKGNtZCAobG9va3VwLWtleSAod2luZG93LXRvb2wtYmFyLS1nZXQta2V5bWFwKSAodmVj dG9yIGtleSkpKSkKICAgICAgICAoY2FsbC1pbnRlcmFjdGl2ZWx5IGNtZCkpKSkpCgooZGVmdW4g d2luZG93LXRvb2wtYmFyLS1pZ25vcmUgKCkKICAiSW50ZXJuYWwgY29tbWFuZCBzbyBpc2VhcmNo IGRvZXMgbm90IGV4aXQgb24gYnV0dG9uLWRvd24gZXZlbnRzLiIKICAoaW50ZXJhY3RpdmUpCiAg bmlsKQoKKGRlZnZhciB3aW5kb3ctdG9vbC1iYXItLWlnbm9yZWQtZXZlbnQtdHlwZXMKICAobGV0 ICgobGlzdCAobGlzdCAnbW91c2UtbW92ZW1lbnQgJ3BpbmNoCiAgICAgICAgICAgICAgICAgICAg J3doZWVsLWRvd24gJ3doZWVsLXVwICd3aGVlbC1sZWZ0ICd3aGVlbC1yaWdodAogICAgICAgICAg ICAgICAgICAgIG1vdXNlLXdoZWVsLWRvd24tZXZlbnQgbW91c2Utd2hlZWwtdXAtZXZlbnQKICAg ICAgICAgICAgICAgICAgICBtb3VzZS13aGVlbC1sZWZ0LWV2ZW50IG1vdXNlLXdoZWVsLXJpZ2h0 LWV2ZW50CiAgICAgICAgICAgICAgICAgICAgKGJvdW5kLWFuZC10cnVlLXAgbW91c2Utd2hlZWwt ZG93bi1hbHRlcm5hdGUtZXZlbnQpCiAgICAgICAgICAgICAgICAgICAgKGJvdW5kLWFuZC10cnVl LXAgbW91c2Utd2hlZWwtdXAtYWx0ZXJuYXRlLWV2ZW50KQogICAgICAgICAgICAgICAgICAgIChi b3VuZC1hbmQtdHJ1ZS1wIG1vdXNlLXdoZWVsLWxlZnQtYWx0ZXJuYXRlLWV2ZW50KQogICAgICAg ICAgICAgICAgICAgIChib3VuZC1hbmQtdHJ1ZS1wIG1vdXNlLXdoZWVsLXJpZ2h0LWFsdGVybmF0 ZS1ldmVudCkpKSkKICAgIChkZWxldGUtZHVwcyAoZGVsZXRlIG5pbCBsaXN0KSkpCiAgIkNhY2hl IGZvciBgd2luZG93LXRvb2wtYmFyLS1sYXN0LWNvbW1hbmQtdHJpZ2dlcnMtcmVmcmVzaC1wJy4i KQoKKGRlZnVuIHdpbmRvdy10b29sLWJhci0tbGFzdC1jb21tYW5kLXRyaWdnZXJzLXJlZnJlc2gt cCAoKQogICJUZXN0IGlmIHRoZSByZWNlbnQgY29tbWFuZCBvciBldmVudCBzaG91bGQgdHJpZ2dl ciBhIHRvb2wgYmFyIHJlZnJlc2guIgogIChsZXQgKCh0eXBlIChldmVudC1iYXNpYy10eXBlIGxh c3QtY29tbWFuZC1ldmVudCkpKQogICAgKGFuZAogICAgIDs7IEFzc3VtZSB0aGF0IGtleSBwcmVz c2VzIGFuZCBidXR0b24gcHJlc3NlcyBhcmUgdGhlIG9ubHkgdXNlcgogICAgIDs7IGludGVyYWN0 aW9ucyB0aGF0IGNhbiBhbHRlciB0aGUgdG9vbCBiYXIuICBTcGVjaWZpY2FsbHksIHRoaXMKICAg ICA7OyBleGNsdWRlcyBtb3VzZSBtb3ZlbWVudCwgbW91c2Ugd2hlZWwgc2Nyb2xsLCBhbmQgcGlu Y2guCiAgICAgKG5vdCAobWVtYmVyIHR5cGUgd2luZG93LXRvb2wtYmFyLS1pZ25vcmVkLWV2ZW50 LXR5cGVzKSkKICAgICA7OyBBc3N1bWUgdGhhdCBhbnkgY29tbWFuZCB0aGF0IHRyaWdnZXJzIHNo aWZ0IHNlbGVjdCBjYW4ndCBhbHRlcgogICAgIDs7IHRoZSB0b29sIGJhci4gIFRoaXMgZXhjbHVk ZXMgcHVyZSBuYXZpZ2F0aW9uIGNvbW1hbmRzLgogICAgIChub3QgKHdpbmRvdy10b29sLWJhci0t Y29tbWFuZC10cmlnZ2Vycy1zaGlmdC1zZWxlY3QtcCBsYXN0LWNvbW1hbmQpKQogICAgIDs7IEFz c3VtZSB0aGF0IHNlbGYtaW5zZXJ0LWNvbW1hbmQgd29uJ3QgYWx0ZXIgdGhlIHRvb2wgYmFyLgog ICAgIDs7IFRoaXMgaXMgdGhlIG1vc3QgY29tbW9ubHkgZXhlY3V0ZWQgY29tbWFuZC4KICAgICAo bm90IChlcSBsYXN0LWNvbW1hbmQgJ3NlbGYtaW5zZXJ0LWNvbW1hbmQpKSkpKQoKKGRlZnVuIHdp bmRvdy10b29sLWJhci0tY29tbWFuZC10cmlnZ2Vycy1zaGlmdC1zZWxlY3QtcCAoY29tbWFuZCkK ICAiVGVzdCBpZiBDT01NQU5EIHdvdWxkIHRyaWdnZXIgc2hpZnQgc2VsZWN0LiIKICAobGV0KiAo KGZvcm0gKGludGVyYWN0aXZlLWZvcm0gY29tbWFuZCkpCiAgICAgICAgIChzcGVjIChjYXItc2Fm ZSAoY2RyLXNhZmUgZm9ybSkpKSkKICAgIChhbmQgKGVxIChjYXItc2FmZSBmb3JtKSAnaW50ZXJh Y3RpdmUpCiAgICAgICAgIChzdHJpbmdwIHNwZWMpCiAgICAgICAgIChzZXEtcG9zaXRpb24gc3Bl YyA/XikpKSkKCjs7OyMjI2F1dG9sb2FkCihkZWZpbmUtbWlub3ItbW9kZSB3aW5kb3ctdG9vbC1i YXItbW9kZQogICJUb2dnbGUgZGlzcGxheSBvZiB0aGUgdG9vbCBiYXIgaW4gdGhlIHRhYiBsaW5l IG9mIHRoZSBjdXJyZW50IGJ1ZmZlci4iCiAgOmdsb2JhbCBuaWwKICAobGV0ICgoc2hvdWxkLWRp c3BsYXkgKGFuZCB3aW5kb3ctdG9vbC1iYXItbW9kZQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChub3QgKGVxIHRvb2wtYmFyLW1hcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChkZWZhdWx0LXZhbHVlICd0b29sLWJhci1tYXApKSkpKQogICAgICAgIChkZWZhdWx0 LXZhbHVlICcoOmV2YWwgKHdpbmRvdy10b29sLWJhci1zdHJpbmcpKSkpCgogICAgOzsgUHJlc2Vy dmUgZXhpc3RpbmcgdGFiLWxpbmUgc2V0IG91dHNpZGUgb2YgdGhpcyBtb2RlCiAgICAoaWYgKG9y IChudWxsIHRhYi1saW5lLWZvcm1hdCkKCSAgICAoZXF1YWwgdGFiLWxpbmUtZm9ybWF0IGRlZmF1 bHQtdmFsdWUpKQogICAgICAgIChpZiBzaG91bGQtZGlzcGxheQogICAgICAgICAgICAoc2V0cSB0 YWItbGluZS1mb3JtYXQgZGVmYXVsdC12YWx1ZSkKICAgICAgICAgIChzZXRxIHRhYi1saW5lLWZv cm1hdCBuaWwpKQogICAgICAobWVzc2FnZQogICAgICAgInRhYi1saW5lLWZvcm1hdCBzZXQgb3V0 c2lkZSBvZiB3aW5kb3ctdG9vbC1iYXItbW9kZSwgY3VycmVudGx5IGAlUyciCiAgICAgICB0YWIt bGluZS1mb3JtYXQpKSkpCgo7OzsjIyNhdXRvbG9hZAooZGVmaW5lLWdsb2JhbGl6ZWQtbWlub3It bW9kZSBnbG9iYWwtd2luZG93LXRvb2wtYmFyLW1vZGUKICB3aW5kb3ctdG9vbC1iYXItbW9kZSB3 aW5kb3ctdG9vbC1iYXItLXR1cm4tb24KICA6Z3JvdXAgJ3dpbmRvdy10b29sLWJhcgogIChhZGQt aG9vayAnaXNlYXJjaC1tb2RlLWhvb2sgIyd3aW5kb3ctdG9vbC1iYXItLXR1cm4tb24pCiAgKGFk ZC1ob29rICdpc2VhcmNoLW1vZGUtZW5kLWhvb2sgIyd3aW5kb3ctdG9vbC1iYXItLXR1cm4tb24p KQoKKGRlZnZhciB3aW5kb3ctdG9vbC1iYXItLWFsbG93LWltYWdlcyB0CiAgIkludGVybmFsIGRl YnVnIGZsYWcgdG8gZm9yY2UgdGV4dCBtb2RlLiIpCgooZGVmdW4gd2luZG93LXRvb2wtYmFyLS11 c2UtaW1hZ2VzICgpCiAgIkludGVybmFsIGZ1bmN0aW9uLgpSZXNwZWN0cyBgd2luZG93LXRvb2wt YmFyLS1hbGxvdy1pbWFnZXMnIGFzIHdlbGwgYXMgZnJhbWUKY2FwYWJpbGl0aWVzLiIKICAoYW5k IHdpbmRvdy10b29sLWJhci0tYWxsb3ctaW1hZ2VzCiAgICAgICAoZGlzcGxheS1pbWFnZXMtcCkp KQoMCjs7OyBEaXNwbGF5IHN0eWxpbmc6CihkZWZmYWNlIHdpbmRvdy10b29sLWJhci1idXR0b24K ICAnKChkZWZhdWx0CiAgICAgOmluaGVyaXQgdGFiLWxpbmUpCiAgICAoKChjbGFzcyBjb2xvcikg KG1pbi1jb2xvcnMgODgpIChzdXBwb3J0cyA6Ym94IHQpKQogICAgIDpib3ggKDpsaW5lLXdpZHRo IC0xIDpzdHlsZSByZWxlYXNlZC1idXR0b24pCiAgICAgOmJhY2tncm91bmQgImdyZXk4NSIpCiAg ICA7OyBJZiB0aGUgYm94IGlzIG5vdCBzdXBwb3J0ZWQsIGRpbSB0aGUgYnV0dG9uIGJhY2tncm91 bmQgYSBiaXQuCiAgICAoKChjbGFzcyBjb2xvcikgKG1pbi1jb2xvcnMgODgpKQogICAgIDpiYWNr Z3JvdW5kICJncmV5NzAiKQogICAgKHQKICAgICA6aW52ZXJzZS12aWRlbyB0KSkKICAiRmFjZSB1 c2VkIGZvciBidXR0b25zIHdoZW4gdGhlIG1vdXNlIGlzIG5vdCBob3ZlcmluZyBvdmVyIHRoZSBi dXR0b24uIgogIDpncm91cCAnd2luZG93LXRvb2wtYmFyKQoKKGRlZmZhY2Ugd2luZG93LXRvb2wt YmFyLWJ1dHRvbi1ob3ZlcgogICcoKGRlZmF1bHQKICAgICA6aW5oZXJpdCB0YWItbGluZSkKICAg ICgoKGNsYXNzIGNvbG9yKSAobWluLWNvbG9ycyA4OCkpCiAgICAgOmJveCAoOmxpbmUtd2lkdGgg LTEgOnN0eWxlIHJlbGVhc2VkLWJ1dHRvbikKICAgICA6YmFja2dyb3VuZCAiZ3JleTk1IikKICAg ICh0CiAgICAgOmludmVyc2UtdmlkZW8gdCkpCiAgIkZhY2UgdXNlZCBmb3IgYnV0dG9ucyB3aGVu IHRoZSBtb3VzZSBpcyBob3ZlcmluZyBvdmVyIHRoZSBidXR0b24uIgogIDpncm91cCAnd2luZG93 LXRvb2wtYmFyKQoKKGRlZmZhY2Ugd2luZG93LXRvb2wtYmFyLWJ1dHRvbi1kaXNhYmxlZAogICco KGRlZmF1bHQKICAgICA6aW5oZXJpdCB0YWItbGluZSkKICAgICgoKGNsYXNzIGNvbG9yKSAobWlu LWNvbG9ycyA4OCkpCiAgICAgOmJveCAoOmxpbmUtd2lkdGggLTEgOnN0eWxlIHJlbGVhc2VkLWJ1 dHRvbikKICAgICA6YmFja2dyb3VuZCAiZ3JleTUwIgogICAgIDpmb3JlZ3JvdW5kICJncmV5NzAi KQogICAgKHQKICAgICA6aW52ZXJzZS12aWRlbyB0CiAgICAgOmJhY2tncm91bmQgImJyaWdodGJs YWNrIikpCiAgIkZhY2UgdXNlZCBmb3IgYnV0dG9ucyB3aGVuIHRoZSBidXR0b24gaXMgZGlzYWJs ZWQuIgogIDpncm91cCAnd2luZG93LXRvb2wtYmFyKQoMCjs7OyBXb3JrYXJvdW5kIGZvciBodHRw czovL2RlYmJ1Z3MuZ251Lm9yZy9jZ2kvYnVncmVwb3J0LmNnaT9idWc9NjgzMzQuCihkZWZ1biB3 aW5kb3ctdG9vbC1iYXItLWdldC1rZXltYXAgKCkKICAiUmV0dXJuIHRoZSB0b29sIGJhciBrZXlt YXAuIgogIChsZXQgKCh0b29sLWJhci1hbHdheXMtc2hvdy1kZWZhdWx0IG5pbCkpCiAgICAoaWYg KGFuZCAodmVyc2lvbjwgZW1hY3MtdmVyc2lvbiAiMzAiKQogICAgICAgICAgICAgKG5vdCAod2lu ZG93LXRvb2wtYmFyLS11c2UtaW1hZ2VzKSkpCiAgICAgICAgOzsgVGhpcyBjb2RlIHBhdGggaXMg YSBsZXNzIGVmZmljaWVudCB3b3JrYXJvdW5kLgogICAgICAgICh3aW5kb3ctdG9vbC1iYXItLW1h a2Uta2V5bWFwLTEpCiAgICAgIChrZXltYXAtZ2xvYmFsLWxvb2t1cCAiPHRvb2wtYmFyPiIpKSkp CgooZGVjbGFyZS1mdW5jdGlvbiBpbWFnZS1tYXNrLXAgImltYWdlLmMiIChzcGVjICZvcHRpb25h bCBmcmFtZSkpCgooZGVmdW4gd2luZG93LXRvb2wtYmFyLS1tYWtlLWtleW1hcC0xICgpCiAgIlBh dGNoZWQgY29weSBvZiBgdG9vbC1iYXItbWFrZS1rZXltYXAtMScuIgogIChtYXBjYXIgKGxhbWJk YSAoYmluZCkKICAgICAgICAgICAgKGxldCAoaW1hZ2UtZXhwIHBsaXN0KQogICAgICAgICAgICAg ICh3aGVuIChhbmQgKGVxIChjYXItc2FmZSAoY2RyLXNhZmUgYmluZCkpICdtZW51LWl0ZW0pCiAg ICAgICAgICAgICAgICAgICAgICAgICA7OyBGb3IgdGhlIGZvcm1hdCBvZiBtZW51LWl0ZW1zLCBz ZWUgbm9kZQogICAgICAgICAgICAgICAgICAgICAgICAgOzsgYEV4dGVuZGVkIE1lbnUgSXRlbXMn IGluIHRoZSBFbGlzcCBtYW51YWwuCiAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBwbGlz dCAobnRoY2RyIChpZiAoY29uc3AgKG50aCA0IGJpbmQpKSA1IDQpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQpKQogICAgICAgICAgICAgICAgICAgICAg ICAgKHNldHEgaW1hZ2UtZXhwIChwbGlzdC1nZXQgcGxpc3QgOmltYWdlKSkKICAgICAgICAgICAg ICAgICAgICAgICAgIChjb25zcCBpbWFnZS1leHApCiAgICAgICAgICAgICAgICAgICAgICAgICAo bm90IChlcSAoY2FyIGltYWdlLWV4cCkgJ2ltYWdlKSkKICAgICAgICAgICAgICAgICAgICAgICAg IChmYm91bmRwIChjYXIgaW1hZ2UtZXhwKSkpCiAgICAgICAgICAgICAgICAobGV0ICgoaW1hZ2Ug KGFuZCAoZGlzcGxheS1pbWFnZXMtcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChldmFsIGltYWdlLWV4cCkpKSkKICAgICAgICAgICAgICAgICAgKHVubGVzcyAoYW5kIGltYWdl IChpbWFnZS1tYXNrLXAgaW1hZ2UpKQogICAgICAgICAgICAgICAgICAgIChzZXRxIGltYWdlIChh cHBlbmQgaW1hZ2UgJyg6bWFzayBoZXVyaXN0aWMpKSkpCiAgICAgICAgICAgICAgICAgIChzZXRx IGJpbmQgKGNvcHktc2VxdWVuY2UgYmluZCkKICAgICAgICAgICAgICAgICAgICAgICAgcGxpc3Qg KG50aGNkciAoaWYgKGNvbnNwIChudGggNCBiaW5kKSkgNSA0KQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJpbmQpKQogICAgICAgICAgICAgICAgICAocGxpc3QtcHV0IHBs aXN0IDppbWFnZSBpbWFnZSkpKQogICAgICAgICAgICAgIGJpbmQpKQogICAgICAgICAgdG9vbC1i YXItbWFwKSkKCihkZWZ1biB3aW5kb3ctdG9vbC1iYXItLXR1cm4tb24gKCkKICAiSW50ZXJuYWwg ZnVuY3Rpb24gY2FsbGVkIGJ5IGBnbG9iYWwtd2luZG93LXRvb2wtYmFyLW1vZGUnLiIKICAod2hl biBnbG9iYWwtd2luZG93LXRvb2wtYmFyLW1vZGUKICAgICh3aW5kb3ctdG9vbC1iYXItbW9kZSAx KSkpCgoocHJvdmlkZSAnd2luZG93LXRvb2wtYmFyKQoKOzs7IHdpbmRvdy10b29sLWJhci5lbCBl bmRzIGhlcmUKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAB3aW5kb3ctdG9vbC1iYXItMC4yL3dpbmRvdy10b29sLWJhci1wa2cuZWwA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA MDAwMDY0NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDA2MjYAMTQ2MjI0MDc0MDUAMDIwMDcwACAw AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAcGhpbGlw AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwaGlsaXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAADs7IEdlbmVyYXRlZCBwYWNrYWdlIGRlc2NyaXB0aW9uIGZyb20gd2luZG93 LXRvb2wtYmFyLmVsICAtKi0gbm8tYnl0ZS1jb21waWxlOiB0IC0qLQooZGVmaW5lLXBhY2thZ2Ug IndpbmRvdy10b29sLWJhciIgIjAuMiIgIkFkZCB0b29sIGJhcnMgaW5zaWRlIHdpbmRvd3MiICco KGVtYWNzICIyOS4xIikpIDpjb21taXQgImJlMDNkZGE1YjBmYzU1ZTk4OWJmYTcwN2M3M2YxY2M5 OTBlMjRjM2IiIDp1cmwgImh0dHBzOi8vZWxwYS5nbnUub3JnL3BhY2thZ2VzL3dpbmRvdy10b29s LWJhci5odG1sIiA6YXV0aG9ycyAnKCgiSmFyZWQgRmluZGVyIiAuICJqYXJlZEBmaW5kZXIub3Jn IikpIDptYWludGFpbmVyICcoIkphcmVkIEZpbmRlciIgLiAiamFyZWRAZmluZGVyLm9yZyIpIDpr ZXl3b3JkcyAnKCJtb3VzZSIpKQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA --=-=-= Content-Type: text/plain Can you confirm that it looks alright and works on older systems (use M-x package-install-file)? > -- MJF > Eli Zaretskii writes: >> Date: Sat, 18 May 2024 20:58:05 -0700 >> From: Jared Finder >> Cc: juri@linkov.net, 68765@debbugs.gnu.org, philipk@posteo.net, >> monnier@iro.umontreal.ca >> >> On 2024-05-18 02:48, Eli Zaretskii wrote: >> >> I think after these patches are applied, the remaining work to resolve >> >> this would be having the ELPA package added and me updating NEWS and >> >> the >> >> manual. I can start on the updates. >> > >> > I installed the patches on the master branch. >> >> Thank you! >> >> Is there anything else that needs to be done to get this package on >> ELPA? I'd like to use this package on older Emacsen as well. > > Philip will tell, but what I meant was to ask you to work on updates > for NEWS and the manual. Where will the package be documented? Should anything be added to the ELPA package? -- Philip Kaludercic on icterid --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sun May 19 23:25:10 2024 Received: (at 68765) by debbugs.gnu.org; 20 May 2024 03:25:10 +0000 Received: from localhost ([127.0.0.1]:39575 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s8teA-0002qk-1e for submit@debbugs.gnu.org; Sun, 19 May 2024 23:25:10 -0400 Received: from greenhill.hpalace.com ([192.155.80.58]:49240) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s8te7-0002qc-HN for 68765@debbugs.gnu.org; Sun, 19 May 2024 23:25:08 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=finder.org; s=2018; t=1716175502; bh=qKrSVYS3GWYumFIFHvGeSfwbKd/xYQyKBNhHrr7jUcs=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=2GIWUcwER6rr9lslRKkzRXkvLxtDYXKFxCPnjTSvgygcOterb07ZfrSQkxW6g7yz/ vtyloHVaZxKurwtiRa2DdhfiAowm71VhqFinGOvTwr3euWQ1CSmR5YTszinPVcaNFi CemMmGKx+6roE4VoSdfvfWyVNm3szQV7QY9jjiMm17ihLV0mgu6nNgnuW+0dGwjug+ vdCnEJ9YxKqhBSk9qQsfDgvZ1x0gJJZuDde0s1XDcY6m/3khhCV+3dv6jQOtH09fkC hnWiaO9g0Waa8do6LiJiWpVw+FEMSAETPqVaCqJI9OUh5aMDNU0jHMKfanKr/JuaWl 4d/ND5IxfT/3g== Received: from mail.finder.org (unknown [192.155.80.58]) by greenhill.hpalace.com (Postfix) with ESMTPSA id 1FD3E76A; Mon, 20 May 2024 03:25:02 +0000 (UTC) MIME-Version: 1.0 Date: Sun, 19 May 2024 20:25:01 -0700 From: Jared Finder To: Philip Kaludercic Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <878r05uao0.fsf@posteo.net> References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86frufe9i9.fsf@gnu.org> <8cfec392c3f9259b7499ebd4f605bc25@finder.org> <878r05uao0.fsf@posteo.net> Message-ID: X-Sender: jared@finder.org Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 68765 Cc: Eli Zaretskii , 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2024-05-19 07:41, Philip Kaludercic wrote: > Jared Finder writes: >> >> Is there anything else that needs to be done to get this package on >> ELPA? I'd like to use this package on older Emacsen as well. > > It just has to be added to ELPA, but that is a one-line patch to > elpa.git. Here is the tarball I generated locally: > > > > Can you confirm that it looks alright and works on older systems (use > M-x package-install-file)? Confirmed, just tested it! It worked fine on Emacs 29.1 the package's minimum supported version. >>> >>> Is there anything else that needs to be done to get this package on >>> ELPA? I'd like to use this package on older Emacsen as well. >> >> Philip will tell, but what I meant was to ask you to work on updates >> for NEWS and the manual. > > Where will the package be documented? Should anything be added to the > ELPA package? I was hoping documentation could just stay in the core Emacs manual. window-tool-bar is a core package and I was hoping to document it next to existing documentation on the existing (frame) tool bar. Does that seem reasonable? -- MJF From debbugs-submit-bounces@debbugs.gnu.org Mon May 20 02:39:38 2024 Received: (at 68765) by debbugs.gnu.org; 20 May 2024 06:39:39 +0000 Received: from localhost ([127.0.0.1]:40436 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s8wgM-0005BZ-Ia for submit@debbugs.gnu.org; Mon, 20 May 2024 02:39:38 -0400 Received: from mout02.posteo.de ([185.67.36.66]:57979) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s8wgL-0005BT-94 for 68765@debbugs.gnu.org; Mon, 20 May 2024 02:39:37 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 2119E240103 for <68765@debbugs.gnu.org>; Mon, 20 May 2024 08:39:27 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1716187167; bh=6t9rQIM7m2rA5gPVyUKbd/zqy5qWFJRvln5/D5xtfyg=; h=From:To:Cc:Subject:OpenPGP:Date:Message-ID:MIME-Version: Content-Type:From; b=Yeeny/m9wFh0pZLyOsO46iEtb/d65dKlxYFdhdiSkRccZecBhLV6amIkbxNzKRz0R SFhR9BTUxVm4YAqyIHy572FwIK8bUsvFQR6m5TNkNOTXFDDGLcpDmR8Pn+4c6dC3U/ bQSNYyLgk8It4i1jG9r7SmyKHRXDAbTlcg/fvsPP0S7DbPFnlRctx4DU/zd0Wcnrz7 NTD1xZVD9URGiZ6b7Kab7jmzesfXwtxNySUd4TI2noWWchjAL+c5uRw2RGyjzd6KVp M76VPsp/oDFpdkK+2oFtB1rHhuaSUfVzBzR/5EeCXXwaEfffyEB1paBZoLRE4YN1bM fArm06BZ8Q6cg== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4VjSbL3PGwz6tw7; Mon, 20 May 2024 08:39:26 +0200 (CEST) From: Philip Kaludercic To: Jared Finder Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: (Jared Finder's message of "Sun, 19 May 2024 20:25:01 -0700") References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86frufe9i9.fsf@gnu.org> <8cfec392c3f9259b7499ebd4f605bc25@finder.org> <878r05uao0.fsf@posteo.net> OpenPGP: id=7126E1DE2F0CE35C770BED01F2C3CC513DB89F66; url="https://keys.openpgp.org/vks/v1/by-fingerprint/7126E1DE2F0CE35C770BED01F2C3CC513DB89F66"; preference=signencrypt Date: Mon, 20 May 2024 06:39:25 +0000 Message-ID: <87a5kl9eci.fsf@posteo.net> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765 Cc: Eli Zaretskii , 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Jared Finder writes: > On 2024-05-19 07:41, Philip Kaludercic wrote: >> Jared Finder writes: >>> Is there anything else that needs to be done to get this package on >>> ELPA? I'd like to use this package on older Emacsen as well. >> It just has to be added to ELPA, but that is a one-line patch to >> elpa.git. Here is the tarball I generated locally: >> Can you confirm that it looks alright and works on older systems >> (use >> M-x package-install-file)? > > Confirmed, just tested it! It worked fine on Emacs 29.1 the package's > minimum supported version. 1+ >>>> Is there anything else that needs to be done to get this package >>>> on >>>> ELPA? I'd like to use this package on older Emacsen as well. >>> Philip will tell, but what I meant was to ask you to work on >>> updates >>> for NEWS and the manual. >> Where will the package be documented? Should anything be added to >> the >> ELPA package? > > I was hoping documentation could just stay in the core Emacs manual. > window-tool-bar is a core package and I was hoping to document it next > to existing documentation on the existing (frame) tool bar. Does that > seem reasonable? Sure, in that case the core should just link to the specific Info node. As soon as the manual is updated on the gnu.org website I'd also add a HTTP link for people previewing the package to be able to see as well. Otherwise, I'll add the package to ELPA now, and I hope it will appear on the site in a few hours. > -- MJF > -- Philip Kaludercic on peregrine From debbugs-submit-bounces@debbugs.gnu.org Mon May 20 05:19:31 2024 Received: (at 68765) by debbugs.gnu.org; 20 May 2024 09:19:32 +0000 Received: from localhost ([127.0.0.1]:41599 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s8zB5-0007lS-Md for submit@debbugs.gnu.org; Mon, 20 May 2024 05:19:31 -0400 Received: from mout02.posteo.de ([185.67.36.66]:38327) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s8zB3-0007lH-Ea for 68765@debbugs.gnu.org; Mon, 20 May 2024 05:19:29 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id D2119240105 for <68765@debbugs.gnu.org>; Mon, 20 May 2024 11:19:18 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1716196758; bh=A48U/aSrIkRCiK5JaLbDMD5rG10ZxL5nIT5Z8eK4KTI=; h=From:To:Cc:Subject:OpenPGP:Date:Message-ID:MIME-Version: Content-Type:From; b=q9uRmi9GRx0tBPQi8Kr5zx5jcr7X9Jpd533/3MR5l+KcDRbEz6rQ03ubEEnj4LZ1z SBxucSmGEbk6GtCqHYhtuKEkvARLxYHB6CnhNv0/2m4wUmHv9OOHGEEy1fGxzBJUPi +e9PFYXGuhGwfADHLC5SiMH63sW3X/hKp4t4hgHzEg2b8+XCj5G7NZTCvwnRhXy/Cm N/Id1A5951xUggxOXthwqNkYhG6e+/wyYPc/X0iHRBxV5YaNcRQZVA8q/GoPVxe+DC QIjly9K6a7DzOnsQl8bKTTss+lreV/IJa2SgFmGwIG39Y0/fxxbNWGe3h1P0sP4eYt hhTIUS3K4A8xg== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4VjX7n11m5z9rxG; Mon, 20 May 2024 11:19:16 +0200 (CEST) From: Philip Kaludercic To: Jared Finder Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: (Jared Finder's message of "Sun, 19 May 2024 20:25:01 -0700") References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86frufe9i9.fsf@gnu.org> <8cfec392c3f9259b7499ebd4f605bc25@finder.org> <878r05uao0.fsf@posteo.net> OpenPGP: id=7126E1DE2F0CE35C770BED01F2C3CC513DB89F66; url="https://keys.openpgp.org/vks/v1/by-fingerprint/7126E1DE2F0CE35C770BED01F2C3CC513DB89F66"; preference=signencrypt Date: Mon, 20 May 2024 09:19:16 +0000 Message-ID: <878r04n8mj.fsf@posteo.net> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765 Cc: Eli Zaretskii , 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Jared Finder writes: > On 2024-05-19 07:41, Philip Kaludercic wrote: >> Jared Finder writes: >>> Is there anything else that needs to be done to get this package on >>> ELPA? I'd like to use this package on older Emacsen as well. >> It just has to be added to ELPA, but that is a one-line patch to >> elpa.git. Here is the tarball I generated locally: >> Can you confirm that it looks alright and works on older systems >> (use >> M-x package-install-file)? > > Confirmed, just tested it! It worked fine on Emacs 29.1 the package's > minimum supported version. Regarding that point, I didn't follow the thread in detail, but why is 29.1 the minimum version? package-lint indicates that it should be compatible with 27.1, but it might be missing something. -- Philip Kaludercic on peregrine From debbugs-submit-bounces@debbugs.gnu.org Mon May 20 13:16:11 2024 Received: (at 68765) by debbugs.gnu.org; 20 May 2024 17:16:11 +0000 Received: from localhost ([127.0.0.1]:43748 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s96cN-0004fC-DH for submit@debbugs.gnu.org; Mon, 20 May 2024 13:16:11 -0400 Received: from relay1-d.mail.gandi.net ([217.70.183.193]:34425) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s96cH-0004eZ-Vb for 68765@debbugs.gnu.org; Mon, 20 May 2024 13:16:09 -0400 Received: by mail.gandi.net (Postfix) with ESMTPSA id 15145240002; Mon, 20 May 2024 17:15:53 +0000 (UTC) From: Juri Linkov To: Jared Finder Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <86o799rnym.fsf@mail.linkov.net> (Juri Linkov's message of "Tue, 14 May 2024 09:01:17 +0300") Organization: LINKOV.NET References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86o799rnym.fsf@mail.linkov.net> Date: Mon, 20 May 2024 20:14:47 +0300 Message-ID: <865xv8o16g.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-GND-Sasl: juri@linkov.net X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, Eli Zaretskii , monnier@iro.umontreal.ca, 68765@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) >> I think after these patches are applied, the remaining work to resolve this >> would be having the ELPA package added and me updating NEWS and the manual. >> I can start on the updates. > > Thanks, the changes in tab-line.el look nice. Oh, for some reason now a lot of messages are displayed while restoring the desktop where tab-line-mode is saved for every buffer: tab-line-format set outside of tab-line-mode, currently ‘(:eval (tab-line-format))’ ... tab-line-format set outside of tab-line-mode, currently ‘(:eval (tab-line-format))’ [2 times] ... tab-line-format set outside of tab-line-mode, currently ‘(:eval (tab-line-format))’ ... tab-line-format set outside of tab-line-mode, currently ‘(:eval (tab-line-format))’ [8 times] ... tab-line-format set outside of tab-line-mode, currently ‘(:eval (tab-line-format))’ [35 times] From debbugs-submit-bounces@debbugs.gnu.org Mon May 20 22:25:59 2024 Received: (at 68765) by debbugs.gnu.org; 21 May 2024 02:25:59 +0000 Received: from localhost ([127.0.0.1]:46304 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s9FCR-00061L-CF for submit@debbugs.gnu.org; Mon, 20 May 2024 22:25:59 -0400 Received: from greenhill.hpalace.com ([192.155.80.58]:33874) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s9FCN-00061F-7U for 68765@debbugs.gnu.org; Mon, 20 May 2024 22:25:57 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=finder.org; s=2018; t=1716258349; bh=fGWyCP9nzUEwSfvmcIZR+jOf2NdhH6a+dQMHmhIEYBI=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=lkV6c8PiGmhrAKzDxb9YHDAjKZXjW7ifSUOgizcCcvzZleUMWMju/6Jf3poNF+DY0 /tdK9UYnZiIOVN0MP6Dwl3ofCV6aG9pD3+DLBZRwsUfs/Tn6wXCa9N50uWw251xapM /URxuETN+BOaogTU0aAHCd9k/lNV9ndOi1Su+ACScgVXUYFHwkf2FIJa1DXBbdCnAV JSJ+o6z4IlMuWx6oa9NsXwoAuF2ClZz11CQSv/E6sI9axeKh7r0K7ZrpdeVe8Y3MdO sVer46zIxpICgRQlfmMHUg+mrrR4Vwv8yq+bG7B8ciP3HkFxompitrEU0MjoRP5C7k y0+axZKysF+IQ== Received: from mail.finder.org (unknown [192.155.80.58]) by greenhill.hpalace.com (Postfix) with ESMTPSA id 4D50276A; Tue, 21 May 2024 02:25:49 +0000 (UTC) MIME-Version: 1.0 Date: Mon, 20 May 2024 19:25:49 -0700 From: Jared Finder To: Juri Linkov Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <865xv8o16g.fsf@mail.linkov.net> References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86o799rnym.fsf@mail.linkov.net> <865xv8o16g.fsf@mail.linkov.net> Message-ID: X-Sender: jared@finder.org Content-Type: multipart/mixed; boundary="=_91bc83047e910f9f1992aea34e7ab060" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, Eli Zaretskii , monnier@iro.umontreal.ca, 68765@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=_91bc83047e910f9f1992aea34e7ab060 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed On 2024-05-20 10:14, Juri Linkov wrote: >>> I think after these patches are applied, the remaining work to >>> resolve this >>> would be having the ELPA package added and me updating NEWS and the >>> manual. >>> I can start on the updates. >> >> Thanks, the changes in tab-line.el look nice. > > Oh, for some reason now a lot of messages are displayed while restoring > the desktop where tab-line-mode is saved for every buffer: > > tab-line-format set outside of tab-line-mode, currently ‘(:eval > (tab-line-format))’ > ... > tab-line-format set outside of tab-line-mode, currently ‘(:eval > (tab-line-format))’ [2 times] > ... > tab-line-format set outside of tab-line-mode, currently ‘(:eval > (tab-line-format))’ > ... > tab-line-format set outside of tab-line-mode, currently ‘(:eval > (tab-line-format))’ [8 times] > ... > tab-line-format set outside of tab-line-mode, currently ‘(:eval > (tab-line-format))’ [35 times] Sorry about that. Fix attached. -- MJF --=_91bc83047e910f9f1992aea34e7ab060 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-Do-not-message-for-repeated-enable-disable-of-mode.patch Content-Disposition: attachment; filename=0001-Do-not-message-for-repeated-enable-disable-of-mode.patch; size=1833 RnJvbSA3YjE2MzhmMjdiMTMwZWQ3MDg4YTdlNmRlZTllNjczOTZiYWI4NGI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+CkRhdGU6 IE1vbiwgMjAgTWF5IDIwMjQgMTk6MjE6MjkgLTA3MDAKU3ViamVjdDogW1BBVENIXSBEbyBub3Qg bWVzc2FnZSBmb3IgcmVwZWF0ZWQgZW5hYmxlL2Rpc2FibGUgb2YgbW9kZQoKdGFiLWxpbmUtbW9k ZSBzaG91bGQgbm90IGluZm9ybSB0aGUgdXNlciBvZiBhbiB1bmV4cGVjdGVkIGNoYW5nZQp3aGVu IGVuYWJsaW5nIHRoZSBtb2RlIGlmIGFscmVhZHkgZW5hYmxlZC4gIEZvciBleGFtcGxlLCB3aGVu CnJ1bm5pbmcgKHRhYi1saW5lLW1vZGUgMSkgcmVwZWF0ZWRseS4KKiBsaXNwL3RhYi1saW5lLmVs ICh0YWItbGluZS1tb2RlKTogTW9kaWZ5IGNhc2Ugd2hlbiB1c2VyIGlzCmluZm9ybWVkLgotLS0K IGxpc3AvdGFiLWxpbmUuZWwgfCAxOSArKysrKysrLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgNyBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saXNwL3Rh Yi1saW5lLmVsIGIvbGlzcC90YWItbGluZS5lbAppbmRleCAzMTZjODdmYjNhZC4uZmE1MmNjZDgx YWEgMTAwNjQ0Ci0tLSBhL2xpc3AvdGFiLWxpbmUuZWwKKysrIGIvbGlzcC90YWItbGluZS5lbApA QCAtMTEyMiwxOSArMTEyMiwxNCBAQCB0YWItbGluZS1tb2RlCiAgICJUb2dnbGUgZGlzcGxheSBv ZiB0YWIgbGluZSBpbiB0aGUgd2luZG93cyBkaXNwbGF5aW5nIHRoZSBjdXJyZW50IGJ1ZmZlci4i CiAgIDpsaWdodGVyIG5pbAogICAobGV0ICgoZGVmYXVsdC12YWx1ZSAnKDpldmFsICh0YWItbGlu ZS1mb3JtYXQpKSkpCi0gICAgKGlmIHRhYi1saW5lLW1vZGUKLSAgICAgICAgOzsgUHJlc2VydmUg dGhlIGV4aXN0aW5nIHRhYi1saW5lIHNldCBvdXRzaWRlIG9mIHRoaXMgbW9kZQotICAgICAgICAo aWYgKG51bGwgdGFiLWxpbmUtZm9ybWF0KQorICAgIDs7IFByZXNlcnZlIHRoZSBleGlzdGluZyB0 YWItbGluZSBzZXQgb3V0c2lkZSBvZiB0aGlzIG1vZGUKKyAgICAoaWYgKG9yIChudWxsIHRhYi1s aW5lLWZvcm1hdCkKKyAgICAgICAgICAgIChlcXVhbCB0YWItbGluZS1mb3JtYXQgZGVmYXVsdC12 YWx1ZSkpCisgICAgICAgIChpZiB0YWItbGluZS1tb2RlCiAgICAgICAgICAgICAoc2V0cSB0YWIt bGluZS1mb3JtYXQgZGVmYXVsdC12YWx1ZSkKLSAgICAgICAgICAobWVzc2FnZQotICAgICAgICAg ICAidGFiLWxpbmUtZm9ybWF0IHNldCBvdXRzaWRlIG9mIHRhYi1saW5lLW1vZGUsIGN1cnJlbnRs eSBgJVMnIgotICAgICAgICAgICB0YWItbGluZS1mb3JtYXQpKQotICAgICAgOzsgUmVzZXQgb25s eSB2YWx1ZXMgc2V0IGJ5IHRoaXMgbW9kZQotICAgICAgKGlmIChlcXVhbCB0YWItbGluZS1mb3Jt YXQgZGVmYXVsdC12YWx1ZSkKLSAgICAgICAgICAoc2V0cSB0YWItbGluZS1mb3JtYXQgbmlsKQot ICAgICAgICAobWVzc2FnZQotICAgICAgICAgInRhYi1saW5lLWZvcm1hdCBzZXQgb3V0c2lkZSBv ZiB0YWItbGluZS1tb2RlLCBjdXJyZW50bHkgYCVTJyIKLSAgICAgICAgIHRhYi1saW5lLWZvcm1h dCkpKSkpCisgICAgICAgICAgKHNldHEgdGFiLWxpbmUtZm9ybWF0IG5pbCkpCisgICAgICAobWVz c2FnZSAidGFiLWxpbmUtZm9ybWF0IHNldCBvdXRzaWRlIG9mIHRhYi1saW5lLW1vZGUsIGN1cnJl bnRseSBgJVMnIgorICAgICAgICAgICAgICAgdGFiLWxpbmUtZm9ybWF0KSkpKQogCiAoZGVmY3Vz dG9tIHRhYi1saW5lLWV4Y2x1ZGUtbW9kZXMKICAgJyhjb21wbGV0aW9uLWxpc3QtbW9kZSkKLS0g CjIuMzkuMgoK --=_91bc83047e910f9f1992aea34e7ab060-- From debbugs-submit-bounces@debbugs.gnu.org Tue May 21 00:18:21 2024 Received: (at 68765) by debbugs.gnu.org; 21 May 2024 04:18:21 +0000 Received: from localhost ([127.0.0.1]:46772 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s9GxB-0001iV-8n for submit@debbugs.gnu.org; Tue, 21 May 2024 00:18:21 -0400 Received: from greenhill.hpalace.com ([192.155.80.58]:36264) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s9Gx8-0001iO-KI for 68765@debbugs.gnu.org; Tue, 21 May 2024 00:18:19 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=finder.org; s=2018; t=1716265092; bh=Ez6F1sb2EUlHds8Q4ZckyADuNHJUlLNOY/yqv76+dIE=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=jZUD4RfhtUeYtbN2mWrcxfkGmFpsnEOsREOmD9qkDdYZLV9cyqcfgxXb+D9D3UiJX DZWnBdpd3bZPq9TwyBPhP3clZlI7NRRUuKNK+Y8CZmSlZv+024Of7BurmsI6ljVwH4 F7nQtJdw67qCl8sQPRXB5PBmzDswwvzGVirLY11dnI/5CPzLKSlp5UAbBcnKcW4Wfv N/AW1ld5SWKcdt4qr75tpg7KhqJ0OrfM5151hN5cNl6xYpK2aCDTtbuMxGRJHfTN8w x7wU/ogPauWp8bbHSFQ4k3fQ2cCkFkiAKn9phGGaXZKvYawIDo0CkOpDLxjpDpeAc0 GHF+C1twA8IOg== Received: from mail.finder.org (unknown [192.155.80.58]) by greenhill.hpalace.com (Postfix) with ESMTPSA id 6135960A; Tue, 21 May 2024 04:18:12 +0000 (UTC) MIME-Version: 1.0 Date: Mon, 20 May 2024 21:18:12 -0700 From: Jared Finder To: Philip Kaludercic Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <878r04n8mj.fsf@posteo.net> References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86frufe9i9.fsf@gnu.org> <8cfec392c3f9259b7499ebd4f605bc25@finder.org> <878r05uao0.fsf@posteo.net> <878r04n8mj.fsf@posteo.net> Message-ID: <2aa288529bd9d73662452627a9fc856c@finder.org> X-Sender: jared@finder.org Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 68765 Cc: Eli Zaretskii , 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2024-05-20 02:19, Philip Kaludercic wrote: > Jared Finder writes: >> On 2024-05-19 07:41, Philip Kaludercic wrote: >>> Jared Finder writes: >>>> Is there anything else that needs to be done to get this package on >>>> ELPA? I'd like to use this package on older Emacsen as well. >>> It just has to be added to ELPA, but that is a one-line patch to >>> elpa.git. Here is the tarball I generated locally: >>> Can you confirm that it looks alright and works on older systems >>> (use >>> M-x package-install-file)? >> >> Confirmed, just tested it! It worked fine on Emacs 29.1 the package's >> minimum supported version. > > Regarding that point, I didn't follow the thread in detail, but why is > 29.1 the minimum version? package-lint indicates that it should be > compatible with 27.1, but it might be missing something. Only because that was the version I used regularly when I started writing this. I plan to extend support to earlier Emacs versions in a future version of this package. I'm just waiting on squaring away this first step before working on any updates. :) On 2024-05-19 23:39, Philip Kaludercic wrote: > Jared Finder writes: >> On 2024-05-19 07:41, Philip Kaludercic wrote: >>> Where will the package be documented? Should anything be added to >>> the >>> ELPA package? >> >> I was hoping documentation could just stay in the core Emacs manual. >> window-tool-bar is a core package and I was hoping to document it next >> to existing documentation on the existing (frame) tool bar. Does that >> seem reasonable? > > Sure, in that case the core should just link to the specific Info node. > As soon as the manual is updated on the gnu.org website I'd also add a > HTTP link for people previewing the package to be able to see as well. I'm not quite sure what change you're looking for here. Let's assume I've added an info node "(emacs)Window Tool Bar" that is also a function index for global-window-tool-bar-mode, where do you think I should mention this link? > Otherwise, I'll add the package to ELPA now, and I hope it will appear > on the site in a few hours. Yup, I see it! Thanks! -- MJF From debbugs-submit-bounces@debbugs.gnu.org Tue May 21 02:13:29 2024 Received: (at 68765) by debbugs.gnu.org; 21 May 2024 06:13:29 +0000 Received: from localhost ([127.0.0.1]:47262 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s9Ika-0003J5-Pv for submit@debbugs.gnu.org; Tue, 21 May 2024 02:13:29 -0400 Received: from relay4-d.mail.gandi.net ([217.70.183.196]:45713) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s9IkZ-0003Iz-99 for 68765@debbugs.gnu.org; Tue, 21 May 2024 02:13:27 -0400 Received: by mail.gandi.net (Postfix) with ESMTPSA id 34A7AE0006; Tue, 21 May 2024 06:12:54 +0000 (UTC) From: Juri Linkov To: Jared Finder Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: (Jared Finder's message of "Mon, 20 May 2024 19:25:49 -0700") Organization: LINKOV.NET References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86o799rnym.fsf@mail.linkov.net> <865xv8o16g.fsf@mail.linkov.net> Date: Tue, 21 May 2024 09:12:35 +0300 Message-ID: <86v837d79u.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-GND-Sasl: juri@linkov.net X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, Eli Zaretskii , monnier@iro.umontreal.ca, 68765@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) >> tab-line-format set outside of tab-line-mode, currently ‘(:eval >> (tab-line-format))’ [35 times] > > Sorry about that. Fix attached. Thanks, I confirm that the problem is fixed completely, so your patch is pushed now. From debbugs-submit-bounces@debbugs.gnu.org Tue May 21 09:40:24 2024 Received: (at 68765) by debbugs.gnu.org; 21 May 2024 13:40:24 +0000 Received: from localhost ([127.0.0.1]:49223 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s9Pj6-0006Ce-EK for submit@debbugs.gnu.org; Tue, 21 May 2024 09:40:24 -0400 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:1773) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s9Pj3-0006CW-PJ for 68765@debbugs.gnu.org; Tue, 21 May 2024 09:40:22 -0400 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 6EA89100048; Tue, 21 May 2024 09:40:10 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1716298809; bh=buxfYtXws/FFWbcBJGzBIFz9QR55EKLZHLc4fXDAT8o=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=HOq2IYotcTLu+feSaSgM1qn9WMRVOzdScEfpO3C20Yb//4NN9Zv3pDL/1UMcOx1LW ZrJazb20IY0Afc3s88UaGabdRVqX/Uk2VkwOaYt1gRSQi9p/fn8vlctGRGdnYZ42W/ 2YR7NnwEwbS2stEKVud0yImyS2upHq/fni0josBYxZ6UlNXZuCiQoB3o+JMF3gXPeW 0mJWpiCSKVS2kAugacphg+UkDHR6ijgrUxm4r2Dv42qyRFyeyeHe/91y6BZgKm5+XZ 7OXZEZOeDiZNCyHpodea3tgAJx6qIYJYmjQBT22IiLeaDZBUpFtsTm2qjEXtakfTV5 N0aTYRX/75pxA== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 831BC10002E; Tue, 21 May 2024 09:40:09 -0400 (EDT) Received: from pastel (unknown [45.72.201.215]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 4CC0812023D; Tue, 21 May 2024 09:40:09 -0400 (EDT) From: Stefan Monnier To: Jared Finder Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <2aa288529bd9d73662452627a9fc856c@finder.org> (Jared Finder's message of "Mon, 20 May 2024 21:18:12 -0700") Message-ID: References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86frufe9i9.fsf@gnu.org> <8cfec392c3f9259b7499ebd4f605bc25@finder.org> <878r05uao0.fsf@posteo.net> <878r04n8mj.fsf@posteo.net> <2aa288529bd9d73662452627a9fc856c@finder.org> Date: Tue, 21 May 2024 09:40:01 -0400 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL 0.025 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765 Cc: Philip Kaludercic , 68765@debbugs.gnu.org, Eli Zaretskii , juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) >> Regarding that point, I didn't follow the thread in detail, but why is >> 29.1 the minimum version? package-lint indicates that it should be >> compatible with 27.1, but it might be missing something. > Only because that was the version I used regularly when I started writing > this. I plan to extend support to earlier Emacs versions in a future > version of this package. I'm just waiting on squaring away this first step > before working on any updates. :) I think `Package-Requires:` and other such version dependencies should state "I know it won't work" or "I have no intention to fix bugs" for versions that do not satisfy the dependencies. Not "I currently don't know if it works or not". You can separately state which version(s) you recommend and/or have tested. Stefan From debbugs-submit-bounces@debbugs.gnu.org Wed May 22 12:17:04 2024 Received: (at 68765) by debbugs.gnu.org; 22 May 2024 16:17:04 +0000 Received: from localhost ([127.0.0.1]:56890 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s9oeG-0004rf-Cz for submit@debbugs.gnu.org; Wed, 22 May 2024 12:17:04 -0400 Received: from mout02.posteo.de ([185.67.36.66]:34001) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s9oeB-0004r7-D6 for 68765@debbugs.gnu.org; Wed, 22 May 2024 12:17:02 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 83F70240105 for <68765@debbugs.gnu.org>; Wed, 22 May 2024 18:16:47 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1716394607; bh=a3H5BpBE4FGtK1xdT0h9j5cXVJad1lc3FI60+UghaX8=; h=From:To:Cc:Subject:OpenPGP:Date:Message-ID:MIME-Version: Content-Type:From; b=XjyChKY80/WlN+7kQ1HDQuK3pz8Ur82oGsJ5QGVdmkIut0u7++n+DqAwSWhomOxxx EU3RiCW56iSozp0cDv+0njRV40QftOD5oa6KaAkNQjmoYbRKWme/2xWfK0quBZ21PY iHiYHO23BJ0iyZJzLcNwQwvaQsQliTaBkcwsH2XMy+1UYLlEbkMV2Tjzt/21NKbbtN CqbuMKROknMa7DZZNd2cfAh7LIkFtG2eU8fuclwCbHoGQYOYpoTMzk3/MvCgDcyHgV w8EtvzCG0Caj+/RZKrC0V5+2VwZpnYt5d5bK6WJFlqHg+sKmspcyg5nWgAF7GE5sUA 1vjDzqqO3HeqA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4VkxJY5NNWz6txg; Wed, 22 May 2024 18:16:45 +0200 (CEST) From: Philip Kaludercic To: Jared Finder Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <2aa288529bd9d73662452627a9fc856c@finder.org> (Jared Finder's message of "Mon, 20 May 2024 21:18:12 -0700") References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86frufe9i9.fsf@gnu.org> <8cfec392c3f9259b7499ebd4f605bc25@finder.org> <878r05uao0.fsf@posteo.net> <878r04n8mj.fsf@posteo.net> <2aa288529bd9d73662452627a9fc856c@finder.org> OpenPGP: id=7126E1DE2F0CE35C770BED01F2C3CC513DB89F66; url="https://keys.openpgp.org/vks/v1/by-fingerprint/7126E1DE2F0CE35C770BED01F2C3CC513DB89F66"; preference=signencrypt Date: Wed, 22 May 2024 16:16:44 +0000 Message-ID: <87msohhleb.fsf@posteo.net> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765 Cc: Eli Zaretskii , 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Jared Finder writes: > On 2024-05-20 02:19, Philip Kaludercic wrote: >> Jared Finder writes: >>> On 2024-05-19 07:41, Philip Kaludercic wrote: >>>> Jared Finder writes: >>>>> Is there anything else that needs to be done to get this package on >>>>> ELPA? I'd like to use this package on older Emacsen as well. >>>> It just has to be added to ELPA, but that is a one-line patch to >>>> elpa.git. Here is the tarball I generated locally: >>>> Can you confirm that it looks alright and works on older systems >>>> (use >>>> M-x package-install-file)? >>> Confirmed, just tested it! It worked fine on Emacs 29.1 the >>> package's >>> minimum supported version. >> Regarding that point, I didn't follow the thread in detail, but why >> is >> 29.1 the minimum version? package-lint indicates that it should be >> compatible with 27.1, but it might be missing something. > > Only because that was the version I used regularly when I started > writing this. I plan to extend support to earlier Emacs versions in a > future version of this package. I'm just waiting on squaring away > this first step before working on any updates. :) If you need some special new functionality, you can make use of the Compat package, which as of Emacs 30 has a bundled shim making it easier to use it in core packages. > On 2024-05-19 23:39, Philip Kaludercic wrote: >> Jared Finder writes: >>> On 2024-05-19 07:41, Philip Kaludercic wrote: >>>> Where will the package be documented? Should anything be added to >>>> the >>>> ELPA package? >>> I was hoping documentation could just stay in the core Emacs >>> manual. >>> window-tool-bar is a core package and I was hoping to document it next >>> to existing documentation on the existing (frame) tool bar. Does that >>> seem reasonable? >> Sure, in that case the core should just link to the specific Info >> node. >> As soon as the manual is updated on the gnu.org website I'd also add a >> HTTP link for people previewing the package to be able to see as well. > > I'm not quite sure what change you're looking for here. Let's assume > I've added an info node "(emacs)Window Tool Bar" that is also a > function index for global-window-tool-bar-mode, where do you think I > should mention this link? In the commentary section of the package. >> Otherwise, I'll add the package to ELPA now, and I hope it will appear >> on the site in a few hours. > > Yup, I see it! Thanks! > > -- MJF > -- Philip Kaludercic on peregrine From debbugs-submit-bounces@debbugs.gnu.org Thu May 23 00:19:18 2024 Received: (at 68765) by debbugs.gnu.org; 23 May 2024 04:19:18 +0000 Received: from localhost ([127.0.0.1]:58328 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s9zvB-0005kI-44 for submit@debbugs.gnu.org; Thu, 23 May 2024 00:19:18 -0400 Received: from greenhill.hpalace.com ([192.155.80.58]:41158) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s9zv6-0005kC-OB for 68765@debbugs.gnu.org; Thu, 23 May 2024 00:19:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=finder.org; s=2018; t=1716437945; bh=HX3cJYDXQfFS9En7YRfyO1a0SoDcUwT8Fh6h1pNeSCg=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=XZyWWgPs5J/Ag8fDHk7S05yiKtVAAQ0hN5bcCbvU1QOnsylbYrjEH4qZgJS94MPmW sD7OsgKwcWDOSFkTRn/TeCLFtWfNe5+tQJkkfCyVqNarIkEtdZam6CJy2m6IxBXawd p+AXcXRovEO+nTU7SydVLfzbHA0YHpe7fVN8CyBLq/hTE7USQrkPQdf+hA0IbanIj3 W1t18PlCGWykLbGlK7W6wK3gUkbo2Xe0n25RLTM4mL+VyDHc4l+F6lcAURlD+dpB4j OwKsLFDNESMRIRwlQlx/gbFe4410SFjy32j1bzQ207bQPy6OTVqHDOL2mNBRt9aqKw TQeKX/n8kPmBw== Received: from mail.finder.org (unknown [192.155.80.58]) by greenhill.hpalace.com (Postfix) with ESMTPSA id 93CA523B5; Thu, 23 May 2024 04:19:05 +0000 (UTC) MIME-Version: 1.0 Date: Wed, 22 May 2024 21:19:05 -0700 From: Jared Finder To: Eli Zaretskii Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <86pltib8m7.fsf@gnu.org> References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86frufe9i9.fsf@gnu.org> <8cfec392c3f9259b7499ebd4f605bc25@finder.org> <86pltib8m7.fsf@gnu.org> Message-ID: <1d18b11671667fefa925dbc41423d547@finder.org> X-Sender: jared@finder.org Content-Type: multipart/mixed; boundary="=_f8b381b2d6de246616659f7399cc3d50" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=_f8b381b2d6de246616659f7399cc3d50 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2024-05-18 23:48, Eli Zaretskii wrote: >> Date: Sat, 18 May 2024 20:58:05 -0700 >> From: Jared Finder >> Cc: juri@linkov.net, 68765@debbugs.gnu.org, philipk@posteo.net, >> monnier@iro.umontreal.ca >> >> On 2024-05-18 02:48, Eli Zaretskii wrote: >> >> I think after these patches are applied, the remaining work to resolve >> >> this would be having the ELPA package added and me updating NEWS and >> >> the >> >> manual. I can start on the updates. >> > >> > I installed the patches on the master branch. >> >> Thank you! >> >> Is there anything else that needs to be done to get this package on >> ELPA? I'd like to use this package on older Emacsen as well. > > Philip will tell, but what I meant was to ask you to work on updates > for NEWS and the manual. Patch attached. I'm still not comfortable with all the texinfo conventions, so please review that I'm using things like @code correctly. Also, I couldn't figure out how to get the Top node menus to auto update, so I just manually put in new nodes. -- MJF --=_f8b381b2d6de246616659f7399cc3d50 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-Adding-documentation-for-window-tool-bar.patch Content-Disposition: attachment; filename=0001-Adding-documentation-for-window-tool-bar.patch; size=13078 RnJvbSBjNzkzMGJjNjI2ZTcwNDMwZjkxZDNjZDZlYjI1MzY5NDlkMjg4NGExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+CkRhdGU6 IE1vbiwgMjAgTWF5IDIwMjQgMjE6NTk6MTQgLTA3MDAKU3ViamVjdDogW1BBVENIXSBBZGRpbmcg ZG9jdW1lbnRhdGlvbiBmb3Igd2luZG93LXRvb2wtYmFyCgoqIGRvYy9lbWFjcy9lbWFjcy50ZXhp IChUb3ApOgoqIGRvYy9lbWFjcy9mcmFtZXMudGV4aSAoVG9vbCBCYXJzKToKKiBkb2MvZW1hY3Mv Z2xvc3NhcnkudGV4aSAoR2xvc3NhcnkpOgoqIGRvYy9lbWFjcy9tb2Rlcy50ZXhpIChNaW5vciBN b2Rlcyk6IE1lbnRpb24gV2luZG93IFRvb2wgQmFyCmFuZCBhZGQgeHJlZi4KKiBkb2MvZW1hY3Mv d2luZG93cy50ZXhpIChXaW5kb3dzLCBUYWIgTGluZSk6IE5ldyBkb2N1bWVudGF0aW9uLgoqIGRv Yy9saXNwcmVmL2VsaXNwLnRleGkgKFRvcCk6CiogZG9jL2xpc3ByZWYvbW9kZXMudGV4aSAoTW9k ZSBMaW5lIEZvcm1hdCwgTW9kZSBMaW5lIEJhc2ljcykKKE1vZGUgTGluZSBEYXRhKTogTWVudGlv biBUYWIgTGluZXMgYW5kIGFkZCB4cmVmLgooVGFiIExpbmVzKTogTmV3IGRvY3VtZW50YXRpb24u CiogZXRjL05FV1M6IE1lbnRpb24gbmV3bHkgYWRkZWQgdmFyaWFibGUKJ3Rvb2wtYmFyLWFsd2F5 cy1zaG93LWRlZmF1bHQnIGFuZCBuZXcgcGFja2FnZSAnd2luZG93LXRvb2wtYmFyJwotLS0KIGRv Yy9lbWFjcy9lbWFjcy50ZXhpICAgIHwgIDEgKwogZG9jL2VtYWNzL2ZyYW1lcy50ZXhpICAgfCAx NCArKysrKysrLS0tLQogZG9jL2VtYWNzL2dsb3NzYXJ5LnRleGkgfCAxMCArKysrLS0tLQogZG9j L2VtYWNzL21vZGVzLnRleGkgICAgfCAgNCArKysrCiBkb2MvZW1hY3Mvd2luZG93cy50ZXhpICB8 IDM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZG9jL2xpc3ByZWYvZWxpc3AudGV4 aSAgfCAgMSArCiBkb2MvbGlzcHJlZi9tb2Rlcy50ZXhpICB8IDUzICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tCiBldGMvTkVXUyAgICAgICAgICAgICAgICB8IDE0ICsr KysrKysrKysrCiA4IGZpbGVzIGNoYW5nZWQsIDExNCBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kb2MvZW1hY3MvZW1hY3MudGV4aSBiL2RvYy9lbWFjcy9lbWFj cy50ZXhpCmluZGV4IDdkNzdmMTNhYjIxLi44MjQ2MDQxZmI5NSAxMDA2NDQKLS0tIGEvZG9jL2Vt YWNzL2VtYWNzLnRleGkKKysrIGIvZG9jL2VtYWNzL2VtYWNzLnRleGkKQEAgLTUyOSw2ICs1Mjks NyBAQCBUb3AKICogVGVtcG9yYXJ5IERpc3BsYXlzOjogIERpc3BsYXlpbmcgbm9uLWVkaXRhYmxl IGJ1ZmZlcnMuCiAqIFdpbmRvdyBDb252ZW5pZW5jZTo6ICBDb252ZW5pZW5jZSBmdW5jdGlvbnMg Zm9yIHdpbmRvdyBoYW5kbGluZy4KICogVGFiIExpbmU6OiAgICAgICAgICAgIFdpbmRvdyB0YWIg bGluZS4KKyogV2luZG93IFRvb2wgQmFyOjogICAgIEEgdG9vbCBiYXIgdGhhdCBpcyBhdHRhY2hl ZCB0byB3aW5kb3dzLgogCiBEaXNwbGF5aW5nIGEgQnVmZmVyIGluIGEgV2luZG93CiAKZGlmZiAt LWdpdCBhL2RvYy9lbWFjcy9mcmFtZXMudGV4aSBiL2RvYy9lbWFjcy9mcmFtZXMudGV4aQppbmRl eCA2YzYyZmRlNGZmYi4uODAyOGE1MTZlNjYgMTAwNjQ0Ci0tLSBhL2RvYy9lbWFjcy9mcmFtZXMu dGV4aQorKysgYi9kb2MvZW1hY3MvZnJhbWVzLnRleGkKQEAgLTEyOTUsMTYgKzEyOTUsMjIgQEAg TWVudSBCYXJzCiBAbm9kZSBUb29sIEJhcnMKIEBzZWN0aW9uIFRvb2wgQmFycwogQGNpbmRleCB0 b29sIGJhciBtb2RlCitAY2luZGV4IHRvb2wgYmFyLCBhdHRhY2hlZCB0byBmcmFtZQogQGNpbmRl eCBtb2RlLCBUb29sIEJhcgogQGNpbmRleCBpY29ucywgdG9vbGJhcgogCi0gIE9uIGdyYXBoaWNh bCBkaXNwbGF5cywgRW1hY3MgcHV0cyBhIEBkZm57dG9vbCBiYXJ9IGF0IHRoZSB0b3Agb2YKLWVh Y2ggZnJhbWUsIGp1c3QgYmVsb3cgdGhlIG1lbnUgYmFyLiAgVGhpcyBpcyBhIHJvdyBvZiBpY29u cyB3aGljaCB5b3UKLWNhbiBjbGljayBvbiB3aXRoIHRoZSBtb3VzZSB0byBpbnZva2UgdmFyaW91 cyBjb21tYW5kcy4KKyAgT24gZ3JhcGhpY2FsIGRpc3BsYXlzLCBFbWFjcyBwdXRzIGEgQGRmbnt0 b29sIGJhcn0gYXQgdGhlIHRvcCBvZiBlYWNoCitmcmFtZSwganVzdCBiZWxvdyB0aGUgbWVudSBi YXIuICBUaGlzIGlzIGEgcm93IG9mIGljb25zIHdoaWNoIHlvdSBjYW4KK2NsaWNrIG9uIHdpdGgg dGhlIG1vdXNlIHRvIGludm9rZSB2YXJpb3VzIGNvbW1hbmRzLiAgRW1hY3MgY2FuIGFsc28KK29w dGlvbmFsbHkgZGlzcGxheSBhIHRvb2wgYmFyIGF0IHRoZSB0b3Agb2YgZWFjaCB3aW5kb3cgKEBw eHJlZntXaW5kb3cKK1Rvb2wgQmFyfSkuCiAKK0B2aW5kZXggdG9vbC1iYXItYWx3YXlzLXNob3ct ZGVmYXVsdAogICBUaGUgZ2xvYmFsIChkZWZhdWx0KSB0b29sIGJhciBjb250YWlucyBnZW5lcmFs IGNvbW1hbmRzLiAgU29tZSBtYWpvcgogbW9kZXMgZGVmaW5lIHRoZWlyIG93biB0b29sIGJhcnM7 IHdoZW5ldmVyIGEgYnVmZmVyIHdpdGggc3VjaCBhIG1ham9yCi1tb2RlIGlzIGN1cnJlbnQsIHRo ZSBtb2RlJ3MgdG9vbCBiYXIgcmVwbGFjZXMgdGhlIGdsb2JhbCB0b29sIGJhci4KK21vZGUgaXMg Y3VycmVudCwgdGhlIG1vZGUncyB0b29sIGJhciByZXBsYWNlcyB0aGUgZ2xvYmFsIHRvb2wgYmFy LiAgVG8KK3ByZXZlbnQgdGhpcyByZXBsYWNlbWVudCBmcm9tIGhhcHBlbmluZywgY3VzdG9taXpl IHRoZSB2YXJpYWJsZQorQGNvZGV7dG9vbC1iYXItYWx3YXlzLXNob3ctZGVmYXVsdH0uCiAKIEBm aW5kZXggdG9vbC1iYXItbW9kZQogQHZpbmRleCB0b29sLWJhci1tb2RlCmRpZmYgLS1naXQgYS9k b2MvZW1hY3MvZ2xvc3NhcnkudGV4aSBiL2RvYy9lbWFjcy9nbG9zc2FyeS50ZXhpCmluZGV4IDM0 NGU0ODMxZjM2Li5iMzBlMWQ3ODlmYyAxMDA2NDQKLS0tIGEvZG9jL2VtYWNzL2dsb3NzYXJ5LnRl eGkKKysrIGIvZG9jL2VtYWNzL2dsb3NzYXJ5LnRleGkKQEAgLTE0MzYsMTAgKzE0MzYsMTIgQEAg R2xvc3NhcnkKIGZvciB5b3VyIGZhdm9yaXRlIHNldCBvZiBmYWNlcyAocS52LikuCiAKIEBpdGVt IFRvb2wgQmFyCi1UaGUgdG9vbCBiYXIgaXMgYSBsaW5lIChzb21ldGltZXMgbXVsdGlwbGUgbGlu ZXMpIG9mIGljb25zIGF0IHRoZSB0b3AKLW9mIGFuIEVtYWNzIGZyYW1lLiAgQ2xpY2tpbmcgb24g b25lIG9mIHRoZXNlIGljb25zIGV4ZWN1dGVzIGEgY29tbWFuZC4KLVlvdSBjYW4gdGhpbmsgb2Yg dGhpcyBhcyBhIGdyYXBoaWNhbCByZWxhdGl2ZSBvZiB0aGUgbWVudSBiYXIgKHEudi4pLgotQHhy ZWZ7VG9vbCBCYXJzfS4KK1RoZSB0b29sIGJhciBpcyBhIGxpbmUgKHNvbWV0aW1lcyBtdWx0aXBs ZSBsaW5lcykgb2YgaWNvbnMgYXQgdGhlIHRvcCBvZgorYW4gRW1hY3MgZnJhbWUuICBDbGlja2lu ZyBvbiBvbmUgb2YgdGhlc2UgaWNvbnMgZXhlY3V0ZXMgYSBjb21tYW5kLiAgWW91CitjYW4gdGhp bmsgb2YgdGhpcyBhcyBhIGdyYXBoaWNhbCByZWxhdGl2ZSBvZiB0aGUgbWVudSBiYXIgKHEudi4p LgorQHhyZWZ7VG9vbCBCYXJzfS4gIFRoZXJlIGlzIGFsc28gYSB3aW5kb3cgdG9vbCBiYXIgdGhh dCBiZWhhdmVzCitzaW1pbGFybHksIGJ1dCBpcyBhdCB0aGUgdG9wIG9mIGFuIEVtYWNzIHdpbmRv dy4gIEB4cmVme1dpbmRvdyBUb29sCitCYXJ9LgogCiBAYW5jaG9ye0dsb3NzYXJ5LS0tVG9vbHRp cHN9CiBAaXRlbSBUb29sdGlwcwpkaWZmIC0tZ2l0IGEvZG9jL2VtYWNzL21vZGVzLnRleGkgYi9k b2MvZW1hY3MvbW9kZXMudGV4aQppbmRleCAyNzc2ZGM3MmEyNy4uMjUzMDQyYjI4YTMgMTAwNjQ0 Ci0tLSBhL2RvYy9lbWFjcy9tb2Rlcy50ZXhpCisrKyBiL2RvYy9lbWFjcy9tb2Rlcy50ZXhpCkBA IC0yOTUsNiArMjk1LDEwIEBAIE1pbm9yIE1vZGVzCiBidXQgdGhlIHRvb2wgYmFyIGlzIG9ubHkg ZGlzcGxheWVkIG9uIGdyYXBoaWNhbCB0ZXJtaW5hbHMuICBAeHJlZntUb29sCiBCYXJzfS4KIAor QGl0ZW0KK1dpbmRvdyBUb29sIEJhciBtb2RlIGdpdmVzIHdpbmRvd3MgYSB0b29sIGJhciB3aGVu IGl0IGlzIGRpZmZlcmVudCBmcm9tCit0aGUgZGVmYXVsdCB0b29sIGJhci4gIEB4cmVme1dpbmRv dyBUb29sIEJhcn0uCisKIEBpdGVtCiBUYWIgQmFyIG1vZGUgZ2l2ZXMgZWFjaCBmcmFtZSBhIHRh YiBiYXIuICBAeHJlZntUYWIgQmFyc30uCiAKZGlmZiAtLWdpdCBhL2RvYy9lbWFjcy93aW5kb3dz LnRleGkgYi9kb2MvZW1hY3Mvd2luZG93cy50ZXhpCmluZGV4IGFkMjIyNWI1OTIyLi4xYzBhYWVi MWM5MiAxMDA2NDQKLS0tIGEvZG9jL2VtYWNzL3dpbmRvd3MudGV4aQorKysgYi9kb2MvZW1hY3Mv d2luZG93cy50ZXhpCkBAIC0yMiw2ICsyMiw3IEBAIFdpbmRvd3MKICogRGlzcGxheWluZyBCdWZm ZXJzOjogIEhvdyBFbWFjcyBwaWNrcyBhIHdpbmRvdyBmb3IgZGlzcGxheWluZyBhIGJ1ZmZlci4K ICogV2luZG93IENvbnZlbmllbmNlOjogIENvbnZlbmllbmNlIGZ1bmN0aW9ucyBmb3Igd2luZG93 IGhhbmRsaW5nLgogKiBUYWIgTGluZTo6ICAgICAgICAgICAgV2luZG93IHRhYiBsaW5lLgorKiBX aW5kb3cgVG9vbCBCYXI6OiAgICAgQSB0b29sIGJhciB0aGF0IGlzIGF0dGFjaGVkIHRvIHdpbmRv d3MuCiBAZW5kIG1lbnUKIAogQG5vZGUgQmFzaWMgV2luZG93CkBAIC02ODksMyArNjkwLDQxIEBA IFRhYiBMaW5lCiBzd2l0Y2ggYmV0d2VlbiB3aW5kb3cgY29uZmlndXJhdGlvbnMgY29udGFpbmlu ZyBzZXZlcmFsIHdpbmRvd3Mgd2l0aCBidWZmZXJzLAogdGFicyBvbiB0aGUgVGFiIExpbmUgYXQg dGhlIHRvcCBvZiBlYWNoIHdpbmRvdyBhcmUgdXNlZCB0byBzd2l0Y2gKIGJldHdlZW4gYnVmZmVy cyBpbiB0aGUgd2luZG93LgorCisKK0Bub2RlIFdpbmRvdyBUb29sIEJhcgorQGNpbmRleCBtb2Rl LCBXaW5kb3cgVG9vbCBCYXIKK0BjaW5kZXggdG9vbCBiYXIsIGF0dGFjaGVkIHRvIHdpbmRvdwor CitAZmluZGV4IGdsb2JhbC13aW5kb3ctdG9vbC1iYXItbW9kZQorQHZpbmRleCBnbG9iYWwtd2lu ZG93LXRvb2wtYmFyLW1vZGUKKyAgVGhlIGNvbW1hbmQgQGNvZGV7Z2xvYmFsLXdpbmRvdy10b29s LWJhci1tb2RlfSB0b2dnbGVzIHRoZSBkaXNwbGF5IG9mCithIHRvb2wgYmFyIGF0IHRoZSB0b3Ag b2YgYWxsIHdpbmRvd3MuICAoWW91IGNhbiBhbHNvIGN1c3RvbWl6ZSB0aGUKK3ZhcmlhYmxlIEBj b2Rle2dsb2JhbC13aW5kb3ctdG9vbC1iYXItbW9kZX0uKSAgVG8gY29uc2VydmUgc3BhY2UsIGEK K3dpbmRvdyB0b29sIGJhciBpcyBvbmx5IHNob3duIGlmIHRoZSB0b29sIGJhciBmb3IgYSBidWZm ZXIgaXMgZGlmZmVyZW50Citmcm9tIHRoZSBnbG9iYWwgKGRlZmF1bHQpIHRvb2wgYmFyLiAgVGhl IG1vc3QgY29tbW9uIHdheSBhIGJ1ZmZlciBoYXMgYQorZGlmZmVyZW50IHRvb2wgYmFyIGlzIGR1 ZSB0byBpdHMgbWFqb3IgbW9kZSwgc28geW91IGNhbiB0aGluayBvZiB0aGUKK3dpbmRvdyB0b29s IGJhciBhcyBzaG93aW5nIGEgbWFqb3IgbW9kZSdzIHRvb2wgYmFyIGlmIGl0IGV4aXN0cy4KKwor QGZpbmRleCB3aW5kb3ctdG9vbC1iYXItbW9kZQorSWYgeW91IHdhbnQgdG8gdG9nZ2xlIHRoZSBk aXNwbGF5IG9mIGEgdG9vbCBiYXIgaW4ganVzdCBhIHNpbmdsZSB3aW5kb3csCitydW4gdGhlIGNv bW1hbmQgQGNvZGV7d2luZG93LXRvb2wtYmFyLW1vZGV9LiAgVGhpcyBpcyBhbHNvIHVzZWZ1bCB0 byBwdXQKK2luIGEgaG9vay4gIEZvciBleGFtcGxlIGlmIHlvdSB3YW50IHRoZSB3aW5kb3cgdG9v bCBiYXIgdG8gYXBwZWFyIGZvcgorYWxsIGJ1ZmZlcnMgdGhhdCBkbyBub3QgcmVwcmVzZW50IGZp bGVzIGFuZCBoYXZlIGEgY3VzdG9tIHRvb2wgYmFyLCB5b3UKK2NvdWxkIGFkZCB0aGUgZm9sbG93 aW5nIGNvZGUgdG8geW91ciBpbml0IGZpbGUgKEBweHJlZntJbml0IEZpbGV9KToKKworQGV4YW1w bGUKKyhhZGQtaG9vayAnc3BlY2lhbC1tb2RlLWhvb2sgJ3dpbmRvdy10b29sLWJhci1tb2RlKQor QGVuZCBleGFtcGxlCisKK0VtYWNzIGNhbiBhbHNvIGRpc3BsYXkgYSB0b29sIGJhciBhdCB0aGUg dG9wIG9mIGZyYW1lcyAoQHB4cmVme1Rvb2wKK0JhcnN9KS4gIFdoZW4gc2hvd2luZyBhIHRvb2wg YmFyIGF0IHRoZSB0b3Agb2YgZnJhbWVzIGFzIHdlbGwgYXMKK3dpbmRvd3MsIHlvdSBtYXkgd2Fu dCB0byBoYXZlIHRoZSBmcmFtZSB0b29sIGJhciBub3QgY2hhbmdlIGJhc2VkIG9uIHRoZQorY3Vy cmVudCBidWZmZXIncyBtYWpvciBtb2RlLiAgVGhpcyBjYW4gYmUgZG9uZSBieSBjdXN0b21pemlu ZyB0aGUKK3ZhcmlhYmxlIEBjb2Rle3Rvb2wtYmFyLWFsd2F5cy1zaG93LWRlZmF1bHR9LgorCitO b3RlIHRoYXQgdGhlIHdpbmRvdyB0b29sIGJhciBkaXNwbGF5cyBpbiB0aGUgc2FtZSBzcGFjZSBh cyB0aGUgdGFiCitsaW5lLCBzbyBvbmx5IG9uZSBvZiB0aGVzZSBjYW4gYmUgZGlzcGxheSBhdCBh IHRpbWUgdW5sZXNzIHlvdSBjdXN0b21pemUKK3RoZSB2YWx1ZSBvZiBAY29kZXt0YWItbGluZS1m b3JtYXR9IGluIExpc3AuICBJbiB0aGlzIGNhc2UsIGFkZAorQGNvZGV7KDpldmFsICh3aW5kb3ct dG9vbC1iYXItc3RybmcpKX0gdG8gQGNvZGV7dGFiLWxpbmUtZm9ybWF0fS4KK0B4cmVme01vZGUg TGluZSBGb3JtYXQsLCwgZWxpc3AsIFRoZSBFbWFjcyBMaXNwIFJlZmVyZW5jZSBNYW51YWx9Lgpk aWZmIC0tZ2l0IGEvZG9jL2xpc3ByZWYvZWxpc3AudGV4aSBiL2RvYy9saXNwcmVmL2VsaXNwLnRl eGkKaW5kZXggMzM5MjcyZDFmMDUuLjEwNTlkMGRjZjYxIDEwMDY0NAotLS0gYS9kb2MvbGlzcHJl Zi9lbGlzcC50ZXhpCisrKyBiL2RvYy9saXNwcmVmL2VsaXNwLnRleGkKQEAgLTkyNSw2ICs5MjUs NyBAQCBUb3AKICogJS1Db25zdHJ1Y3RzOjogICAgICAgICAgICBQdXR0aW5nIGluZm9ybWF0aW9u IGludG8gYSBtb2RlIGxpbmUuCiAqIFByb3BlcnRpZXMgaW4gTW9kZTo6ICAgICAgVXNpbmcgdGV4 dCBwcm9wZXJ0aWVzIGluIHRoZSBtb2RlIGxpbmUuCiAqIEhlYWRlciBMaW5lczo6ICAgICAgICAg ICAgTGlrZSBhIG1vZGUgbGluZSwgYnV0IGF0IHRoZSB0b3AuCisqIFRhYiBMaW5lczo6ICAgICAg ICAgICAgICAgQSBsaW5lIHRoYXQgaXMgYWJvdmUgdGhlIGhlYWRlciBsaW5lLgogKiBFbXVsYXRp bmcgTW9kZSBMaW5lOjogICAgIEZvcm1hdHRpbmcgdGV4dCBhcyB0aGUgbW9kZSBsaW5lIHdvdWxk LgogCiBGb250IExvY2sgTW9kZQpkaWZmIC0tZ2l0IGEvZG9jL2xpc3ByZWYvbW9kZXMudGV4aSBi L2RvYy9saXNwcmVmL21vZGVzLnRleGkKaW5kZXggY2Y2N2IzMTk5MjQuLjZlZTFkODY5ZmI4IDEw MDY0NAotLS0gYS9kb2MvbGlzcHJlZi9tb2Rlcy50ZXhpCisrKyBiL2RvYy9saXNwcmVmL21vZGVz LnRleGkKQEAgLTIwNzQsMTQgKzIwNzQsMTQgQEAgTW9kZSBMaW5lIEZvcm1hdAogbGluZSBhdCB0 aGUgYm90dG9tLCB3aGljaCBkaXNwbGF5cyBzdGF0dXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJ1 ZmZlcgogZGlzcGxheWVkIGluIHRoZSB3aW5kb3cuICBUaGUgbW9kZSBsaW5lIGNvbnRhaW5zIGlu Zm9ybWF0aW9uIGFib3V0IHRoZQogYnVmZmVyLCBzdWNoIGFzIGl0cyBuYW1lLCBhc3NvY2lhdGVk IGZpbGUsIGRlcHRoIG9mIHJlY3Vyc2l2ZSBlZGl0aW5nLAotYW5kIG1ham9yIGFuZCBtaW5vciBt b2Rlcy4gIEEgd2luZG93IGNhbiBhbHNvIGhhdmUgYSBAZGZue2hlYWRlcgotbGluZX0sIHdoaWNo IGlzIG11Y2ggbGlrZSB0aGUgbW9kZSBsaW5lIGJ1dCBhcHBlYXJzIGF0IHRoZSB0b3Agb2YgdGhl Ci13aW5kb3cuCithbmQgbWFqb3IgYW5kIG1pbm9yIG1vZGVzLiAgQSB3aW5kb3cgY2FuIGFsc28g aGF2ZSBhIEBkZm57aGVhZGVyIGxpbmV9CithbmQgYSBAZGZue3RhYiBsaW5lfSwgd2hpY2ggYXJl IG11Y2ggbGlrZSB0aGUgbW9kZSBsaW5lIGJ1dCB0aGV5IGFwcGVhcgorYXQgdGhlIHRvcCBvZiB0 aGUgd2luZG93LgogCi0gIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgaG93IHRvIGNvbnRyb2wgdGhl IGNvbnRlbnRzIG9mIHRoZSBtb2RlIGxpbmUKLWFuZCBoZWFkZXIgbGluZS4gIFdlIGluY2x1ZGUg aXQgaW4gdGhpcyBjaGFwdGVyIGJlY2F1c2UgbXVjaCBvZiB0aGUKLWluZm9ybWF0aW9uIGRpc3Bs YXllZCBpbiB0aGUgbW9kZSBsaW5lIHJlbGF0ZXMgdG8gdGhlIGVuYWJsZWQgbWFqb3IgYW5kCi1t aW5vciBtb2Rlcy4KKyAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBob3cgdG8gY29udHJvbCB0aGUg Y29udGVudHMgb2YgdGhlIG1vZGUgbGluZSwKK2hlYWRlciBsaW5lLCBhbmQgdGFiIGxpbmUuICBX ZSBpbmNsdWRlIGl0IGluIHRoaXMgY2hhcHRlciBiZWNhdXNlIG11Y2gKK29mIHRoZSBpbmZvcm1h dGlvbiBkaXNwbGF5ZWQgaW4gdGhlIG1vZGUgbGluZSByZWxhdGVzIHRvIHRoZSBlbmFibGVkCitt YWpvciBhbmQgbWlub3IgbW9kZXMuCiAKIEBtZW51CiAqIEJhc2U6IE1vZGUgTGluZSBCYXNpY3Mu ICAgICAgIEJhc2ljIGlkZWFzIG9mIG1vZGUgbGluZSBjb250cm9sLgpAQCAtMjA5MSw2ICsyMDkx LDcgQEAgTW9kZSBMaW5lIEZvcm1hdAogKiAlLUNvbnN0cnVjdHM6OiAgICAgICAgICAgICAgICBQ dXR0aW5nIGluZm9ybWF0aW9uIGludG8gYSBtb2RlIGxpbmUuCiAqIFByb3BlcnRpZXMgaW4gTW9k ZTo6ICAgICAgICAgIFVzaW5nIHRleHQgcHJvcGVydGllcyBpbiB0aGUgbW9kZSBsaW5lLgogKiBI ZWFkZXIgTGluZXM6OiAgICAgICAgICAgICAgICBMaWtlIGEgbW9kZSBsaW5lLCBidXQgYXQgdGhl IHRvcC4KKyogVGFiIExpbmVzOjogICAgICAgICAgICAgICAgICAgQSBsaW5lIHRoYXQgaXMgYWJv dmUgdGhlIGhlYWRlciBsaW5lLgogKiBFbXVsYXRpbmcgTW9kZSBMaW5lOjogICAgICAgICBGb3Jt YXR0aW5nIHRleHQgYXMgdGhlIG1vZGUgbGluZSB3b3VsZC4KIEBlbmQgbWVudQogCkBAIC0yMTAx LDExICsyMTAyLDEzIEBAIE1vZGUgTGluZSBCYXNpY3MKIHZhcmlhYmxlIEBjb2Rle21vZGUtbGlu ZS1mb3JtYXR9IChAcHhyZWZ7TW9kZSBMaW5lIFRvcH0pLiAgVGhpcyB2YXJpYWJsZQogaG9sZHMg YSBAZGZue21vZGUgbGluZSBjb25zdHJ1Y3R9OiBhIHRlbXBsYXRlIHRoYXQgY29udHJvbHMgd2hh dCBpcwogZGlzcGxheWVkIG9uIHRoZSBidWZmZXIncyBtb2RlIGxpbmUuICBUaGUgdmFsdWUgb2YK LUBjb2Rle2hlYWRlci1saW5lLWZvcm1hdH0gc3BlY2lmaWVzIHRoZSBidWZmZXIncyBoZWFkZXIg bGluZSBpbiB0aGUgc2FtZQotd2F5LiAgQWxsIHdpbmRvd3MgZm9yIHRoZSBzYW1lIGJ1ZmZlciB1 c2UgdGhlIHNhbWUKLUBjb2Rle21vZGUtbGluZS1mb3JtYXR9IGFuZCBAY29kZXtoZWFkZXItbGlu ZS1mb3JtYXR9IHVubGVzcyBhCi1AY29kZXttb2RlLWxpbmUtZm9ybWF0fSBvciBAY29kZXtoZWFk ZXItbGluZS1mb3JtYXR9IHBhcmFtZXRlciBoYXMgYmVlbgotc3BlY2lmaWVkIGZvciB0aGF0IHdp bmRvdyAoQHB4cmVme1dpbmRvdyBQYXJhbWV0ZXJzfSkuCitAY29kZXtoZWFkZXItbGluZS1mb3Jt YXR9IGFuZCBAY29kZXt0YWItbGluZS1mb3JtYXR9IHNwZWNpZmllcyB0aGUKK2J1ZmZlcidzIGhl YWRlciBsaW5lIGFuZCB0YWIgbGluZSBpbiB0aGUgc2FtZSB3YXkuICBBbGwgd2luZG93cyBmb3Ig dGhlCitzYW1lIGJ1ZmZlciB1c2UgdGhlIHNhbWUgQGNvZGV7bW9kZS1saW5lLWZvcm1hdH0sCitA Y29kZXtoZWFkZXItbGluZS1mb3JtYXR9LCBhbmQgQGNvZGV7dGFiLWxpbmUtZm9ybWF0fSB1bmxl c3MgYQorQGNvZGV7bW9kZS1saW5lLWZvcm1hdH0sIEBjb2Rle2hlYWRlci1saW5lLWZvcm1hdH0s IG9yCitAY29kZXt0YWItbGluZS1mb3JtYXR9IHBhcmFtZXRlciBoYXMgYmVlbiBzcGVjaWZpZWQg Zm9yIHRoYXQgd2luZG93CisoQHB4cmVme1dpbmRvdyBQYXJhbWV0ZXJzfSkuCiAKICAgRm9yIGVm ZmljaWVuY3ksIEVtYWNzIGRvZXMgbm90IGNvbnRpbnVvdXNseSByZWNvbXB1dGUgZWFjaCB3aW5k b3cncwogbW9kZSBsaW5lIGFuZCBoZWFkZXIgbGluZS4gIEl0IGRvZXMgc28gd2hlbiBjaXJjdW1z dGFuY2VzIGFwcGVhciB0byBjYWxsCkBAIC0yMTY3LDggKzIxNzAsOCBAQCBNb2RlIExpbmUgRGF0 YQogQGRmbnttb2RlIGxpbmUgY29uc3RydWN0fSwgbWFkZSB1cCBvZiBsaXN0cywgc3RyaW5ncywg c3ltYm9scywgYW5kCiBudW1iZXJzIGtlcHQgaW4gYnVmZmVyLWxvY2FsIHZhcmlhYmxlcy4gIEVh Y2ggZGF0YSB0eXBlIGhhcyBhIHNwZWNpZmljCiBtZWFuaW5nIGZvciB0aGUgbW9kZSBsaW5lIGFw cGVhcmFuY2UsIGFzIGRlc2NyaWJlZCBiZWxvdy4gIFRoZSBzYW1lIGRhdGEKLXN0cnVjdHVyZSBp cyB1c2VkIGZvciBjb25zdHJ1Y3RpbmcgZnJhbWUgdGl0bGVzIChAcHhyZWZ7RnJhbWUgVGl0bGVz fSkKLWFuZCBoZWFkZXIgbGluZXMgKEBweHJlZntIZWFkZXIgTGluZXN9KS4KK3N0cnVjdHVyZSBp cyB1c2VkIGZvciBjb25zdHJ1Y3RpbmcgZnJhbWUgdGl0bGVzIChAcHhyZWZ7RnJhbWUgVGl0bGVz fSksCitoZWFkZXIgbGluZXMgKEBweHJlZntIZWFkZXIgTGluZXN9KSwgYW5kIHRhYiBsaW5lcyAo QHB4cmVme1RhYiBMaW5lc30pLgogCiAgIEEgbW9kZSBsaW5lIGNvbnN0cnVjdCBtYXkgYmUgYXMg c2ltcGxlIGFzIGEgZml4ZWQgc3RyaW5nIG9mIHRleHQsCiBidXQgaXQgdXN1YWxseSBzcGVjaWZp ZXMgaG93IHRvIGNvbWJpbmUgZml4ZWQgc3RyaW5ncyB3aXRoIHZhcmlhYmxlcycKQEAgLTI4MTYs NiArMjgxOSwyOCBAQCBIZWFkZXIgTGluZXMKIGhlYWRlciBsaW5lIGF0IG9uY2U7IGlmIGl0IGhh cyBhIG1vZGUgbGluZSwgdGhlbiBpdCBkb2VzIG5vdCBkaXNwbGF5IGEKIGhlYWRlciBsaW5lLgog CitAbm9kZSBUYWIgTGluZXMKK0BzdWJzZWN0aW9uIFdpbmRvdyBUYWIgTGluZXMKK0BjaW5kZXgg dGFiIGxpbmUgKG9mIGEgd2luZG93KQorQGNpbmRleCB3aW5kb3cgdGFiIGxpbmUKKworICBBIHdp bmRvdyBjYW4gaGF2ZSBhIEBkZm57dGFiIGxpbmV9IGF0IHRoZSB0b3AuICBJZiBib3RoIHRoZSB0 YWIgbGluZQorYW5kIGhlYWRlciBsaW5lIGFyZSB2aXNpYmxlLCB0aGUgdGFiIGxpbmUgYXBwZWFy cyBhYm92ZSB0aGUgaGVhZGVyIGxpbmUuCitUaGUgdGFiIGxpbmUgZmVhdHVyZSB3b3JrcyBqdXN0 IGxpa2UgdGhlIG1vZGUgbGluZSBmZWF0dXJlLCBleGNlcHQgdGhhdAoraXQncyBjb250cm9sbGVk IGJ5IEBjb2Rle3RhYi1saW5lLWZvcm1hdH06CisKK0BkZWZ2YXIgdGFiLWxpbmUtZm9ybWF0CitU aGlzIHZhcmlhYmxlLCBsb2NhbCBpbiBldmVyeSBidWZmZXIsIHNwZWNpZmllcyBob3cgdG8gZGlz cGxheSB0aGUgdGFiCitsaW5lLCBmb3Igd2luZG93cyBkaXNwbGF5aW5nIHRoZSBidWZmZXIuICBU aGUgZm9ybWF0IG9mIHRoZSB2YWx1ZSBpcyB0aGUKK3NhbWUgYXMgZm9yIEBjb2Rle21vZGUtbGlu ZS1mb3JtYXR9IChAcHhyZWZ7TW9kZSBMaW5lIERhdGF9KS4gIEl0IGlzCitub3JtYWxseSBAY29k ZXtuaWx9LCBzbyB0aGF0IG9yZGluYXJ5IGJ1ZmZlcnMgaGF2ZSBubyB0YWIgbGluZS4KK0BlbmQg ZGVmdmFyCisKK0BkZWZ1biB3aW5kb3ctdGFiLWxpbmUtaGVpZ2h0ICZvcHRpb25hbCB3aW5kb3cK K1RoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgaGVpZ2h0IGluIHBpeGVscyBvZiBAdmFye3dpbmRv d30ncyB0YWIgbGluZS4KK0B2YXJ7d2luZG93fSBtdXN0IGJlIGEgbGl2ZSB3aW5kb3csIGFuZCBk ZWZhdWx0cyB0byB0aGUgc2VsZWN0ZWQgd2luZG93LgorQGVuZCBkZWZ1bgorCiBAbm9kZSBFbXVs YXRpbmcgTW9kZSBMaW5lCiBAc3Vic2VjdGlvbiBFbXVsYXRpbmcgTW9kZSBMaW5lIEZvcm1hdHRp bmcKIApkaWZmIC0tZ2l0IGEvZXRjL05FV1MgYi9ldGMvTkVXUwppbmRleCBkNzJlZjViNWJlZi4u N2I4MjlmNTAwMmMgMTAwNjQ0Ci0tLSBhL2V0Yy9ORVdTCisrKyBiL2V0Yy9ORVdTCkBAIC0yNDAs NiArMjQwLDEyIEBAIHdpbmRvdyBzeXN0ZW1zIG90aGVyIHRoYW4gTmV4dHN0ZXAuCiBXaGVuIHRo aXMgbWlub3IgbW9kZSBpcyBlbmFibGVkLCBidXR0b25zIHJlcHJlc2VudGluZyBtb2RpZmllciBr ZXlzCiBhcmUgZGlzcGxheWVkIGFsb25nIHRoZSB0b29sIGJhci4KIAorKysrCisqKiBOZXcgdXNl ciBvcHRpb24gJ3Rvb2wtYmFyLWFsd2F5cy1zaG93LWRlZmF1bHQnLgorVGhpcyBjYW4gYmUgc2V0 IHNvIHRoYXQgdGhlIHRvb2wgYmFyIGF0IHRoZSB0b3Agb2YgYSBmcmFtZSBkb2VzIG5vdCBzaG93 CitidWZmZXIgbG9jYWwgY3VzdG9taXphdGlvbiBvZiB0aGUgdG9vbCBiYXIuICBUaGlzIGlzIGNv bnZlbmllbnQgd2hlbgordXNpbmcgdGhlIG5ld2x5IGFkZGVkICdnbG9iYWwtd2luZG93LXRvb2wt YmFyLW1vZGUnLgorCiArKysKICoqICJkIiBpbiB0aGUgbW9kZSBsaW5lIG5vdyBpbmRpY2F0ZXMg dGhhdCB0aGUgd2luZG93IGlzIGRlZGljYXRlZC4KIFdpbmRvd3MgaGF2ZSBhbHdheXMgYmVlbiBh YmxlIHRvIGJlIGRlZGljYXRlZCB0byBhIHNwZWNpZmljIGJ1ZmZlcjsKQEAgLTE4NzcsNiArMTg4 MywxNCBAQCB0aGFuIHJlZ3VsYXIgZXhwcmVzc2lvbnMsIGJ1dCBsZXNzIGNvbXBsZXhpdHkgdGhh biBjb250ZXh0LWZyZWUKIGdyYW1tYXJzLiAgVGhlIEluZm8gbWFudWFsICIoZWxpc3ApIFBhcnNp bmcgRXhwcmVzc2lvbiBHcmFtbWFycyIgaGFzCiBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlcy4K IAorKysrCisqKiBOZXcgcGFja2FnZSBXaW5kb3ctVG9vbC1CYXIuCitUaGlzIHByb3ZpZGVzIGEg bmV3IG1pbm9yIG1vZGUsICd3aW5kb3ctdG9vbC1iYXItbW9kZScuICBXaGVuIHRoaXMgbWlub3IK K21vZGUgaXMgZW5hYmxlZCwgYSB0b29sIGJhciBpcyBkaXNwbGF5ZWQgYXQgdGhlIHRvcCBvZiBh IHdpbmRvdyBpZiB0aGUKK2J1ZmZlciBpbiB0aGUgd2luZG93IGhhcyBhIGJ1ZmZlciBsb2NhbCB0 b29sIGJhciwgY29tbW9ubHkgZnJvbSBpdHMKK21ham9yIG1vZGUuICBUaGUgZ2xvYmFsIG1pbm9y IG1vZGUgJ2dsb2JhbC13aW5kb3ctdG9vbC1iYXItbW9kZScgZW5hYmxlcwordGhpcyBtaW5vciBt b2RlIGluIGFsbCBidWZmZXJzLgorCiAMCiAqIEluY29tcGF0aWJsZSBMaXNwIENoYW5nZXMgaW4g RW1hY3MgMzAuMQogCi0tIAoyLjM5LjIKCg== --=_f8b381b2d6de246616659f7399cc3d50-- From debbugs-submit-bounces@debbugs.gnu.org Thu May 23 02:53:12 2024 Received: (at 68765) by debbugs.gnu.org; 23 May 2024 06:53:12 +0000 Received: from localhost ([127.0.0.1]:58536 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sA2K7-0007Tq-Od for submit@debbugs.gnu.org; Thu, 23 May 2024 02:53:12 -0400 Received: from eggs.gnu.org ([209.51.188.92]:44358) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sA2K5-0007Tj-FP for 68765@debbugs.gnu.org; Thu, 23 May 2024 02:53:11 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sA2Js-0001aB-8P; Thu, 23 May 2024 02:52:56 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=xmsFrJQyHlVDoTCnRY17iJhphxxwJwYLLkk4I0wQLVs=; b=D2HeSBpf4Lt9 DhzU394HngA6YDfKEBVZPHqFMyEZ4txzUNAQR3TfPKa03dyKDDXjBTE4SSHtYNVapbrbFNJw2cOFy d0GPyUYZptUdBCYRoG5V0o7CAEBDXkdTqVGxdOpLXbVe/9nwuT24uH1gEBgRx2M07wVhXGLcg3cV+ KKJpt1mONdoJyHdLUjcCLbd+AxqzyZMyYCxNY5sPf47tKEz3PloFU017pnzR7wwmhOsoWq0iRIWPD VxSoQ8vtPlNI4eCUNOAz0onqLspdvJxLMyXvOBLhendlZ3TE4MerSUUdD2+e3tJahL0xZ6KnNhejg 8UUiseX4MhCe+zAsc9uqlw==; Date: Thu, 23 May 2024 09:52:51 +0300 Message-Id: <86cypd58ak.fsf@gnu.org> From: Eli Zaretskii To: Jared Finder In-Reply-To: <1d18b11671667fefa925dbc41423d547@finder.org> (message from Jared Finder on Wed, 22 May 2024 21:19:05 -0700) Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86frufe9i9.fsf@gnu.org> <8cfec392c3f9259b7499ebd4f605bc25@finder.org> <86pltib8m7.fsf@gnu.org> <1d18b11671667fefa925dbc41423d547@finder.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Wed, 22 May 2024 21:19:05 -0700 > From: Jared Finder > Cc: juri@linkov.net, 68765@debbugs.gnu.org, philipk@posteo.net, > monnier@iro.umontreal.ca > > +@node Window Tool Bar > +@cindex mode, Window Tool Bar Index entries should preferably use only lower-case letters, to avoid problems with sorting index entries in different locales. In addition, I would rephrase the above index entry to say just @cindex window tool bar > +@findex global-window-tool-bar-mode > +@vindex global-window-tool-bar-mode This will create two identical index entries (since we produce a single Index from all the index entries). So leave just one of the two. > + The command @code{global-window-tool-bar-mode} toggles the display of > +a tool bar at the top of all windows. (You can also customize the > +variable @code{global-window-tool-bar-mode}.) To conserve space, a > +window tool bar is only shown if the tool bar for a buffer is different > +from the global (default) tool bar. The most common way a buffer has a > +different tool bar is due to its major mode, so you can think of the > +window tool bar as showing a major mode's tool bar if it exists. This paragraph left me puzzled. By default, the frame-global tool bar follows the major mode of the selected buffer's window. This is not going to change even under global-window-tool-bar-mode, is it? If so, when will the window-specific tool bar be displayed -- only in non-selected windows whose buffers have a major mode different from that of the selected-window's buffer? If so, this should be explicitly explained in the manual, I think. Also, does this mean the window-specific tool bar will appear and disappear depending on which window is selected? Wouldn't that cause annoying "flickering" of display? > +@findex window-tool-bar-mode > +If you want to toggle the display of a tool bar in just a single window, > +run the command @code{window-tool-bar-mode}. This is also useful to put > +in a hook. For example if you want the window tool bar to appear for > +all buffers that do not represent files and have a custom tool bar, you > +could add the following code to your init file (@pxref{Init File}): Are these window tool bars also limited to windows whose buffers' major mode is different from the selected window? In any case, this aspect, whether identical to global-window-tool-bar-mode or different from it, should be explicitly documented. Last, but not least: please mention the bug number in the commit log message. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Sat May 25 11:49:33 2024 Received: (at 68765) by debbugs.gnu.org; 25 May 2024 15:49:33 +0000 Received: from localhost ([127.0.0.1]:44155 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sAteH-0004ZK-A2 for submit@debbugs.gnu.org; Sat, 25 May 2024 11:49:33 -0400 Received: from greenhill.hpalace.com ([192.155.80.58]:45848) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sAteF-0004ZD-HQ for 68765@debbugs.gnu.org; Sat, 25 May 2024 11:49:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=finder.org; s=2018; t=1716652162; bh=1dwZSzEb7f28yooXpt9lFj8o6jlM2utrLjsPtnF5ONo=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=U+2WHY68+9DAdIumJHIHp/F2sNTGY906AOJcyl+keZiBuMcfw/Ql3lmqek3THergZ NpMgumBvPDSEGPDyE3zbc/0mmNvtBBbDlt5DLp/4cS9iMj5bEvaPFL8XVM2b/cwBZo L4SnXf7EoHYOnX1jx+gDzIvZfA6k9nauL/QDQuZpKbHrj2YtQ01x4R+yUcWB4ek8Ua KaqusRNo5xmpLHuQKn3jh6FH8omuap/xcwKduns0h5osAXrYFKcT1nlbtgRzYDYgVD 9HOdZqSuS4adoH4FV/g0XnmqoXeoZHSQ++FkyhC4zS8EF1SvqPe/KVd6+bw9nP1VCl OOdsXhJqsy8FQ== Received: from mail.finder.org (unknown [192.155.80.58]) by greenhill.hpalace.com (Postfix) with ESMTPSA id A21BC1157; Sat, 25 May 2024 15:49:22 +0000 (UTC) MIME-Version: 1.0 Date: Sat, 25 May 2024 08:49:22 -0700 From: Jared Finder To: Eli Zaretskii Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <86cypd58ak.fsf@gnu.org> References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86frufe9i9.fsf@gnu.org> <8cfec392c3f9259b7499ebd4f605bc25@finder.org> <86pltib8m7.fsf@gnu.org> <1d18b11671667fefa925dbc41423d547@finder.org> <86cypd58ak.fsf@gnu.org> Message-ID: <8dbddd7bed38100561a1555da18a3a08@finder.org> X-Sender: jared@finder.org Content-Type: multipart/mixed; boundary="=_a25312f4b256858d9c8b061677c46db9" X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" --=_a25312f4b256858d9c8b061677c46db9 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2024-05-22 23:52, Eli Zaretskii wrote: >> Date: Wed, 22 May 2024 21:19:05 -0700 >> From: Jared Finder >> Cc: juri@linkov.net, 68765@debbugs.gnu.org, philipk@posteo.net, >> monnier@iro.umontreal.ca >> >> +@node Window Tool Bar >> +@cindex mode, Window Tool Bar > > Index entries should preferably use only lower-case letters, to avoid > problems with sorting index entries in different locales. > > In addition, I would rephrase the above index entry to say just > > @cindex window tool bar I don't think that fits in with the existing convention. The convention appears to be "use mode, Capital Case Name" for specific modes and "mode, lower case" for concepts. There's 76 other examples of "@cindex mode," in the Emacs manual already, the majority of which follow that convention. The only examples I could find not following the convention are: "mode, archive", "mode, tar", "mode, display-fill-column-indicator". > >> +@findex global-window-tool-bar-mode >> +@vindex global-window-tool-bar-mode > > This will create two identical index entries (since we produce a > single Index from all the index entries). So leave just one of the > two. Makes sense. Will do. >> + The command @code{global-window-tool-bar-mode} toggles the display >> of >> +a tool bar at the top of all windows. (You can also customize the >> +variable @code{global-window-tool-bar-mode}.) To conserve space, a >> +window tool bar is only shown if the tool bar for a buffer is >> different >> +from the global (default) tool bar. The most common way a buffer has >> a >> +different tool bar is due to its major mode, so you can think of the >> +window tool bar as showing a major mode's tool bar if it exists. > > This paragraph left me puzzled. By default, the frame-global tool bar > follows the major mode of the selected buffer's window. This is not > going to change even under global-window-tool-bar-mode, is it? If so, > when will the window-specific tool bar be displayed -- only in > non-selected windows whose buffers have a major mode different from > that of the selected-window's buffer? If so, this should be > explicitly explained in the manual, I think. > > Also, does this mean the window-specific tool bar will appear and > disappear depending on which window is selected? Wouldn't that cause > annoying "flickering" of display? I will try to redescribe it. I have a typo in the existing description. Change "all windows" to "each window". The idea is that each window gets its own tool bar *inside the window*, specifically on the window's tab line. Ideally I think I would just show a picture (see attached image), but I see very few pictures in any of the Emacs manuals and none of them show up in the HTML output at https://www.gnu.org/software/emacs/manual/, only in the PDF. >> +@findex window-tool-bar-mode >> +If you want to toggle the display of a tool bar in just a single >> window, >> +run the command @code{window-tool-bar-mode}. This is also useful to >> put >> +in a hook. For example if you want the window tool bar to appear for >> +all buffers that do not represent files and have a custom tool bar, >> you >> +could add the following code to your init file (@pxref{Init File}): > > Are these window tool bars also limited to windows whose buffers' > major mode is different from the selected window? In any case, this > aspect, whether identical to global-window-tool-bar-mode or different > from it, should be explicitly documented. > > Last, but not least: please mention the bug number in the commit log > message. Will do. -- MJF --=_a25312f4b256858d9c8b061677c46db9 Content-Transfer-Encoding: base64 Content-Type: image/png; name=screenshot.png Content-Disposition: attachment; filename=screenshot.png; size=249775 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 cusWiYmJ+Pj4iEG1HLBkPNP0+eTkZFJSUsxySzW33hcuXCgn1rG3t2fOnDmiH5nyTKiDnytE8HOB wCTOnDkD6q+g5vwwHT9+nKioKGzt7OjQoQM+Pj6kpKRw5MgRCtXKDygKnBwYGIiqsBA7e3vefPNN mjdvTkJCAiEhIVxPTCQoKIjLly9Tp04d+bizZ88yffp0VIWF1K5Th6CgINq2bcv9+/c5e/YsYWFh Otd5FPTt2xdXV1eg6Oui5mW+b79+epYyHh4ej7z+VCoVr48Ywfnz54mNieG02hJm0ODBJCUlcTYq itDQUNLS0uSv6hrXjiZNmxIYGChf69SpU+zevZvDhw7RrVs3Ll68aHAc/kmdMbBvv348//zzxMbG smXLFm4kJdGzZ0+uX7+u9wV406ZNvDVqFFDkvjBkyBD8/PxIT08nMjKSY0ePcludsURbQTRp4kSg KCX6iBEjcHNzIzw8nJMnTnBg/35effVVjh49alA2a9esASCod28CAgK4dOkSv2zfTn5eHjNmzGDg wIF6X2TNuU9z5FnR7axJkyZ06txZnjzd//tvnqlZU54snTp1CiQJ78aN5T5rSMFYkpm7ZtLz3HPP cfzYMTk1ekmcPXuWQnUshi5dusjbW7duzcRJk4CiL2ampKk2td6Dg4NlpdSzLVowePBgMjIy2Lx5 M/9assRkWQvLKYE5jB8/nsWLF5ObkyMnQKjr7k7//v31yvr5+ckfJdavX88rr7yis//o0aMkqgNe F7cSrFevHn+cPcv58+f1zrtlyxarPpPmxSQ/L4+EhAS937Uvv/zSqtcLDAyU5bJkyRI2lTBuPHz4 8JG5hpl7n+bKUztr1+bNm/U+AGms8x41PXv2LMpqJkl8++23/Oc//9GZ66wr9tHGmtSqVQsbW1sK Hz6sNAkDykqnTp04oI5NKrLalx+WjGddu3Zl6b//TeHDh8yfP59vjSQbuH//fpmz0ZW13hcsWECu 2vLIrpwVU6b2o8chNmehSoWtUqEQFlMCgYlovzCbYjElK0YiI/H08mLbtm06QQSTk5Pll0xJknjv vfdQFRZSzc2NI0eO6HztmzRpEv7+/mTcv89HH32kk6r60KFDsnXPjz/+SLdu3XSun5SU9MhNygcP HixnwktJSZEVBmPGjCn3bGnm1N+oUaPYsGED9+7do7baqmboa6/x008/kZOTg6urK6rCQs6cOUPf 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 tpBl2aNml7PqFL1XZjIG4DMgplBmL7zlllvqPLOsLvdPb44ePap+V50+fRrbt2/3eb7UnLVr1079 PHirufb777+r+62vIO7Fixc9Zq0uLS3FwYMHATgmbGhJjh07htdeew2SJCExMRFvv/22x+RGpGo0 PA/KMWvmByB3nTt3RkJCAsLCwlzSMZ2X3bJlC9asWePxRav4+uuvXa6Sd+jQAXPnzq3x6xwxYoTL VY/NmzfjwIEDKC8vr7QDO2rUKGzevFnNtvrtt9/w5JNPIiwszOMq2pNPPqlG8GvaLv7gnp20b98+ 7Nu3T02nTUlJwQsvvFCr91fT9Zx1794dPM+r2WrHjx/HzJkzERwcDI7jYDQa1TpA/iLLMt544w3E xsYiNzfXJVOue/fuatZXu3bt1IwXwDELzeDBg2E2m/HNN980qpOa77//Xs2a+v7773Hw4EG0bdsW giAgKysLOTk5HjMENfR2qGtff/01/ve//2H48OHo0aOHOnTq6tWrWLNmjZrR1759e5eaGGlpaXj9 9dfVTunDDz+MK1eueA1ExsXFec0EdA947dmzB71790b79u3xzTffoKCgwOVkuin6/fffK61L06pV K5fhaidOnFBPyJTZtABHcFhpC0EQXE5wFD/99JN6knSjoapKwOnYsWMAgCVLluDFF19EWFgY9u/f j6+//lrd7g09jOTRRx/Fm2++ibKyMrzyyit47rnncMsttyAgIAD5+fk4fvx4nb+GpKQkJCcn4+LF i/j8888RHR2NwYMHw2AwIDU1FQsWLFC3W2XT0/ujD7Fz5070798fN910E7766ivk5+cjMDDQZ/ZF TddrbIxGIz777LMbXv3nOA7Dhw/H0KFD1WU3bdqE//znPz77UV9++SU2b96s/t2xY0e89dZb9f4e 77//fmzcuFG9wHL48GE88sgjCA8P98iMmDx5snpxqKbt4i8jRozAjh07UFBQgP379/usY5WUlKS+ x127diEwMBCTJk1Sj202mw2HDh3Cpk2bEBQUhDlz5tTqdTkPM/z4448xdepUREZGQhRFrF69Gnv3 7vW57oABA9CzZ08cPXoU33zzDXQ6HZ5++mk1Izg7OxvvvfceIiMjXWaoXLJkCcrKynDfffeha9eu 4DgOsizjwoULavZnQEBApZ+7Y8eOqcGG4cOHN5rPYE32T28YY3jjjTfU+obOUlJSfAb3m5vo6GgM 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 PBERERERERERkV2IHMhHRERERERERET2IFaXLZ2IiIiIiIiIiKihSLIMUWDycyIiIiIiIiIisgNR Yo8pIiIiIiIiIiKyMVEQ2GOKiIiIiIiIiIhsTwaTnxMRERERERERkZ1wKB8REREREREREdmFKHIo HxERERERERER2YGolSTWAhERERERERER2ZQAQFSJImuCiIiIiIiIiIhsSitJYFSKiIiIiIiIiIhs TiWKDEwREREREREREZHtyQBErVbLmiAiIiIiIiIiIpuSJAmiSqViTRARERERERERkU2pRBGiLMus CSIiIiIiIiIisikZgCgxMEVERERERERERDYmABBVIvOfExERERERERGRbckARPaXIiIiIiIiIiIi W5NlGaIkSawJIiIiIiIiIiKyKUEQOJSPiIiIiIiIiIhsTwCTnxMRERERERERkR1oJQmiKAisCSIi IiIiIiIisimVKLLHFBERERERERER2Z4kyxBlBqaIiIiIiIiIiMgOmPyciIiIiIiIiIhsThAEiOwv RUREREREREREtibLMthdioiIiIiIiIiI7ELknHxERERERERERGQPTH5OREREREREREQ2JwoCRAjs M0VERERERERERLYlA8wxRUREREREREREticAULMa7j03b97Eb7/9hsTERBQWFgIA+vfvj3Hjxt0z dbB69WpkZmZi4MCBGDNmDG+Kejp79izWrl1rsn7EiBGIjIy0+vt9/PHHyMrKQnh4OCIiItgARERE RERETZRagK7rlDWtXbsWGzduBAD89NNPaNmypck+SUlJmDVrFoqLi6FWq7F161a0adOGLdLA9u7d i8mTJ+NWTo7R+mfnzm3SgSlZlpGcnAwA8PPzg5OTU437r169GgmXL2PeCy80icDUnV6frV2+fBmf r1ljst7BwaHBAlNXU1Lw0sKFDEwRERERERE1YWpZlmHtPFNJSUk4cfw4AKCoqMhke1paGkaMGIGk xEQIoohNmzYxKGUDxcXFePbZZ3ErJwcqtRqDBw9Gz549AQDh4eFN+toyMjLQPjgYALD9228xYcKE u6rtGvv19e3bF1+uX6/8vHjxYuRkZ/OhIyIiIiIiompJsgy1IAiw5bx8N27cwMiRI5GUmAgA+N// /V9MmjSJrWEDFy5cQNrffwMAPv30Uzz//POsFLKKgIAAzJgxQ/n5nXfeYWCKiIiIiIiIaiVKsu3C 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 GU6dOoX8/HwsWbKEJwcRERGRHcgAVPZ449OnT2P37t0AgNdffx0dO3Y0W+fjjz9Gamoq2rVrh7n3 RkupK0mSoNPpoFar62W7purQoUM4evSoMj179my0b99emV6/fj2Sk5MBACqVCkuXLq11WaWlpdi5 c6fV5UOHDmVgih6aPXv24Oeff67RNqIoYvHixfw8qUZsbCzOnDlTp7q6desW9uzZg9zcXADA2LFj ERISwsqtg6SkJPz0008AgOHDh9/3/rBgwQK0bt3abJ1t27bh/Pnzdb4/GKSnp+PgwYNm81Uqld0C UwDw/PPP49SpU7hw4QJOnz6N/v378yQhIiIisjEBdgpM5eXlKU20iouLLa6TkpKC5ORkFBYW2uRL 67p163DhwgVUVlYiKCgIEydORPfu3e2yXVOXmZlp0sROq9WaHTvDclEUeSVRk5Wenm6xuen9SJLE yqvGnTt3lHqtaV0lJycjNjYWp6qM/lqTYdrJsu3btwMAvLy88OSTT973/lBeXm5xnVu3biEpKclm 94fOnTvjjTfeUKY3bdqEoqIiu9dH165dERQUhOvXr2P79u0MTBERERHZiUqAvulUY1VYWIh58+ah oKBAv0MqFa5evYq3334bS5cuRWhoqE23I9tydXXF9OnTleljx47hypUrrBhqEPr164c2bdqYzCsu LsbevXuVB+awsDDzD1aVipVnB5999hn27dvHirCDjIwMJCYmAgCGDRsGBweHBvO3tW3bFpGRkcr0 zp076yUwBehbjq1atUr5QYb5N4mIiIhsz2ry88Zi7969KCgoQEhICObMmQN3d3ds3boVBw8exObN m7Fs2TKbbteY6XQ6/PDDD5BlGWFhYWjbtu1D/5vUajWGDBmiTF+9erXeA1MNsV6oYejTpw/69Olj Mk+j0SiBqZCQEIwdO5YVVU/S09MB6APazz33HHx9fbFq1SpWjA0YPgMdHR3x7LPPskLuGTBgADZv 3oz8/HwcOnSIgSkiIiIiG5NkGSpBEBpki6ny8nLEx8cr0y1btrTYjP7mzZsA9L9q+vj4AADGjRuH w4cP49q1a5BlGYKFwFttt2vMKioq8MknnwAAPD097RqAuXXrFn7//XekpKRAo9Ggffv28Pf3R79+ /dCyZUublJGWlobffvvNJIggSRLOnDmDixcvom3btggNDUV4eHi1x7I+64Wap9u3byMxMREpKSko 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 gg== --=_a25312f4b256858d9c8b061677c46db9-- From debbugs-submit-bounces@debbugs.gnu.org Sat May 25 13:04:03 2024 Received: (at 68765) by debbugs.gnu.org; 25 May 2024 17:04:03 +0000 Received: from localhost ([127.0.0.1]:44461 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sAuoM-0005FE-DB for submit@debbugs.gnu.org; Sat, 25 May 2024 13:04:03 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35738) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sAuoK-0005Eo-LC for 68765@debbugs.gnu.org; Sat, 25 May 2024 13:04:01 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sAuo6-0003WT-5t; Sat, 25 May 2024 13:03:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=Y+elJOLJ3KXSb4hEZYLmgHEk1T7Y4VmfvqF1z277Fwo=; b=KYg5WwiWAU+k 0n3CKf63YJYwgAS21Tgqpw/XBzGrW/5VGOcFybyafaOlnUZ8btS8I77L9E8er3kUbd34o0BA+zGu9 pjFG4YKMDDDjRhx17liKux9MkbIYs1W3tKlIg/YdcN/EfX1BsC6hs3KYnmFn2Af/jod7BvHNUAhZc ye4b2Gq4BoZecJ1f4SJmzz9rrmilHd5P1+j5uXph7WPmhSiSqeeBbXFW3eAdg2v6LYg44hieFWbVC L72Lq0xc1Jv1x6WHHJF2oMSr5K/dM5tjmOlHMBTMD6m6GyA5W16iknIBy6pydF1U4cH0nNOjQPxan cubwcjxqAnTmzljz2pOkzQ==; Date: Sat, 25 May 2024 20:03:41 +0300 Message-Id: <86ttilygb6.fsf@gnu.org> From: Eli Zaretskii To: Jared Finder In-Reply-To: <8dbddd7bed38100561a1555da18a3a08@finder.org> (message from Jared Finder on Sat, 25 May 2024 08:49:22 -0700) Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86frufe9i9.fsf@gnu.org> <8cfec392c3f9259b7499ebd4f605bc25@finder.org> <86pltib8m7.fsf@gnu.org> <1d18b11671667fefa925dbc41423d547@finder.org> <86cypd58ak.fsf@gnu.org> <8dbddd7bed38100561a1555da18a3a08@finder.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sat, 25 May 2024 08:49:22 -0700 > From: Jared Finder > Cc: juri@linkov.net, 68765@debbugs.gnu.org, philipk@posteo.net, > monnier@iro.umontreal.ca > > >> +@node Window Tool Bar > >> +@cindex mode, Window Tool Bar > > > > Index entries should preferably use only lower-case letters, to avoid > > problems with sorting index entries in different locales. > > > > In addition, I would rephrase the above index entry to say just > > > > @cindex window tool bar > > I don't think that fits in with the existing convention. The convention > appears to be "use mode, Capital Case Name" for specific modes and > "mode, lower case" for concepts. There's 76 other examples of "@cindex > mode," in the Emacs manual already, the majority of which follow that > convention. > > The only examples I could find not following the convention are: "mode, > archive", "mode, tar", "mode, display-fill-column-indicator". Nevertheless, I stand by what I wrote. The examples which you quote, whether they are a few or not, are mistakes: letter-case affects sorting of index entries in locale-dependent way, so index entries that us capital letters will appear in a different order in different locales, which is not a good thing. > I will try to redescribe it. I have a typo in the existing description. > Change "all windows" to "each window". The idea is that each window > gets its own tool bar *inside the window*, specifically on the window's > tab line. Ideally I think I would just show a picture (see attached > image), but I see very few pictures in any of the Emacs manuals and none > of them show up in the HTML output at > https://www.gnu.org/software/emacs/manual/, only in the PDF. I don't think there were images in our manuals in previous versions, which is why they don't appear in HTML. Pictures have a disadvantage in that they cannot be displayed on TTY frames, so a picture that cannot be replaced by some "ASCII art" generally means the reader on a TTY frame will be at a disadvantage. I will wait for the next version to see if my questions are now answered or we need to discuss them further. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Sat May 25 15:54:42 2024 Received: (at 68765) by debbugs.gnu.org; 25 May 2024 19:54:42 +0000 Received: from localhost ([127.0.0.1]:45309 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sAxTV-0006rj-1R for submit@debbugs.gnu.org; Sat, 25 May 2024 15:54:42 -0400 Received: from greenhill.hpalace.com ([192.155.80.58]:47526) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sAxTT-0006rd-3D for 68765@debbugs.gnu.org; Sat, 25 May 2024 15:54:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=finder.org; s=2018; t=1716666870; bh=jAl1n+SSKe8R6M5d4B9J987hGrGbNzZ1ezo5pJcDZpg=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=Y2X7rIJxxWzy420mFUDNccZmNaypoD2oESx9NeykxLmsXh4JNmWZH5hDxEguTM6fN KsZGfO0r1IqYlEGtFV0JY/clzaC0FZGPTfjcy7bUFyjW1JFgzPPi25ePg6PR1TSG3U ZP3KdS0sFIFQR6KqNtZg75RKruGm6avDef7JQfhdCIiNQidEvKJhSbDhqTdLehPG5u 2eRCXNIL9tQJYpILMyQ7+lHFrc/R/DOskjGwUywEpSIFn8y01YzzLLmKkcPnj/fOPi mMbhxBPfsKJ9Dp0SrnXBIRIMlqpTSMwSigBDxWDdi0HTm1z1831pMQz/0uqhIFjz2Z Cfku9j6Y7+Cog== Received: from mail.finder.org (unknown [192.155.80.58]) by greenhill.hpalace.com (Postfix) with ESMTPSA id 464EF1157; Sat, 25 May 2024 19:54:30 +0000 (UTC) MIME-Version: 1.0 Date: Sat, 25 May 2024 12:54:30 -0700 From: Jared Finder To: Eli Zaretskii Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <86ttilygb6.fsf@gnu.org> References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86frufe9i9.fsf@gnu.org> <8cfec392c3f9259b7499ebd4f605bc25@finder.org> <86pltib8m7.fsf@gnu.org> <1d18b11671667fefa925dbc41423d547@finder.org> <86cypd58ak.fsf@gnu.org> <8dbddd7bed38100561a1555da18a3a08@finder.org> <86ttilygb6.fsf@gnu.org> Message-ID: <67cc1f1b694041bfaf12dab7ef161ec8@finder.org> X-Sender: jared@finder.org Content-Type: multipart/mixed; boundary="=_90159a20a7bfc6f13c8cd9160077ab74" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=_90159a20a7bfc6f13c8cd9160077ab74 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2024-05-25 10:03, Eli Zaretskii wrote: >> Date: Sat, 25 May 2024 08:49:22 -0700 >> From: Jared Finder >> Cc: juri@linkov.net, 68765@debbugs.gnu.org, philipk@posteo.net, >> monnier@iro.umontreal.ca >> >> >> +@node Window Tool Bar >> >> +@cindex mode, Window Tool Bar >> > >> > Index entries should preferably use only lower-case letters, to avoid >> > problems with sorting index entries in different locales. >> > >> > In addition, I would rephrase the above index entry to say just >> > >> > @cindex window tool bar >> >> I don't think that fits in with the existing convention. The >> convention >> appears to be "use mode, Capital Case Name" for specific modes and >> "mode, lower case" for concepts. There's 76 other examples of >> "@cindex >> mode," in the Emacs manual already, the majority of which follow that >> convention. >> >> The only examples I could find not following the convention are: >> "mode, >> archive", "mode, tar", "mode, display-fill-column-indicator". > > Nevertheless, I stand by what I wrote. The examples which you quote, > whether they are a few or not, are mistakes: letter-case affects > sorting of index entries in locale-dependent way, so index entries > that us capital letters will appear in a different order in different > locales, which is not a good thing. Ok, I tried to fit into the existing convention but not use upper case letters with "@cindex mode, window tool bar". Let me know if that's not appropriate. >> I will try to redescribe it. I have a typo in the existing >> description. >> Change "all windows" to "each window". The idea is that each window >> gets its own tool bar *inside the window*, specifically on the >> window's >> tab line. Ideally I think I would just show a picture (see attached >> image), but I see very few pictures in any of the Emacs manuals and >> none >> of them show up in the HTML output at >> https://www.gnu.org/software/emacs/manual/, only in the PDF. > > I don't think there were images in our manuals in previous versions, > which is why they don't appear in HTML. > > Pictures have a disadvantage in that they cannot be displayed on TTY > frames, so a picture that cannot be replaced by some "ASCII art" > generally means the reader on a TTY frame will be at a disadvantage. That's what I was concerned about. Please let me know if this updated text is clear enough. > I will wait for the next version to see if my questions are now > answered or we need to discuss them further. New patch attached. Feedback welcome. -- MJF --=_90159a20a7bfc6f13c8cd9160077ab74 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-Adding-documentation-for-window-tool-bar-bug-68765.patch Content-Disposition: attachment; filename=0001-Adding-documentation-for-window-tool-bar-bug-68765.patch; size=13208 RnJvbSBkZTU0YzQwMjYxNTg1MjAyNDRkMDQxOGMyMjFlNGUyOTY5NGVlNmZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+CkRhdGU6 IE1vbiwgMjAgTWF5IDIwMjQgMjE6NTk6MTQgLTA3MDAKU3ViamVjdDogW1BBVENIXSBBZGRpbmcg ZG9jdW1lbnRhdGlvbiBmb3Igd2luZG93LXRvb2wtYmFyIChidWcjNjg3NjUpCgoqIGRvYy9lbWFj cy9lbWFjcy50ZXhpIChUb3ApOgoqIGRvYy9lbWFjcy9mcmFtZXMudGV4aSAoVG9vbCBCYXJzKToK KiBkb2MvZW1hY3MvZ2xvc3NhcnkudGV4aSAoR2xvc3NhcnkpOgoqIGRvYy9lbWFjcy9tb2Rlcy50 ZXhpIChNaW5vciBNb2Rlcyk6IE1lbnRpb24gV2luZG93IFRvb2wgQmFyCmFuZCBhZGQgeHJlZi4K KiBkb2MvZW1hY3Mvd2luZG93cy50ZXhpIChXaW5kb3dzLCBUYWIgTGluZSk6IE5ldyBkb2N1bWVu dGF0aW9uLgoqIGRvYy9saXNwcmVmL2VsaXNwLnRleGkgKFRvcCk6CiogZG9jL2xpc3ByZWYvbW9k ZXMudGV4aSAoTW9kZSBMaW5lIEZvcm1hdCwgTW9kZSBMaW5lIEJhc2ljcykKKE1vZGUgTGluZSBE YXRhKTogTWVudGlvbiBUYWIgTGluZXMgYW5kIGFkZCB4cmVmLgooVGFiIExpbmVzKTogTmV3IGRv Y3VtZW50YXRpb24uCiogZXRjL05FV1M6IE1lbnRpb24gbmV3bHkgYWRkZWQgdmFyaWFibGUKJ3Rv b2wtYmFyLWFsd2F5cy1zaG93LWRlZmF1bHQnIGFuZCBuZXcgcGFja2FnZSAnd2luZG93LXRvb2wt YmFyJwotLS0KIGRvYy9lbWFjcy9lbWFjcy50ZXhpICAgIHwgIDEgKwogZG9jL2VtYWNzL2ZyYW1l cy50ZXhpICAgfCAxNCArKysrKysrLS0tLQogZG9jL2VtYWNzL2dsb3NzYXJ5LnRleGkgfCAxMCAr KysrLS0tLQogZG9jL2VtYWNzL21vZGVzLnRleGkgICAgfCAgNCArKysrCiBkb2MvZW1hY3Mvd2lu ZG93cy50ZXhpICB8IDQyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkb2MvbGlz cHJlZi9lbGlzcC50ZXhpICB8ICAxICsKIGRvYy9saXNwcmVmL21vZGVzLnRleGkgIHwgNTMgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIGV0Yy9ORVdTICAgICAgICAg ICAgICAgIHwgMTQgKysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMTE3IGluc2VydGlvbnMo KyksIDIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9lbWFjcy9lbWFjcy50ZXhpIGIv ZG9jL2VtYWNzL2VtYWNzLnRleGkKaW5kZXggN2Q3N2YxM2FiMjEuLjgyNDYwNDFmYjk1IDEwMDY0 NAotLS0gYS9kb2MvZW1hY3MvZW1hY3MudGV4aQorKysgYi9kb2MvZW1hY3MvZW1hY3MudGV4aQpA QCAtNTI5LDYgKzUyOSw3IEBAIFRvcAogKiBUZW1wb3JhcnkgRGlzcGxheXM6OiAgRGlzcGxheWlu ZyBub24tZWRpdGFibGUgYnVmZmVycy4KICogV2luZG93IENvbnZlbmllbmNlOjogIENvbnZlbmll bmNlIGZ1bmN0aW9ucyBmb3Igd2luZG93IGhhbmRsaW5nLgogKiBUYWIgTGluZTo6ICAgICAgICAg ICAgV2luZG93IHRhYiBsaW5lLgorKiBXaW5kb3cgVG9vbCBCYXI6OiAgICAgQSB0b29sIGJhciB0 aGF0IGlzIGF0dGFjaGVkIHRvIHdpbmRvd3MuCiAKIERpc3BsYXlpbmcgYSBCdWZmZXIgaW4gYSBX aW5kb3cKIApkaWZmIC0tZ2l0IGEvZG9jL2VtYWNzL2ZyYW1lcy50ZXhpIGIvZG9jL2VtYWNzL2Zy YW1lcy50ZXhpCmluZGV4IDZjNjJmZGU0ZmZiLi44MDI4YTUxNmU2NiAxMDA2NDQKLS0tIGEvZG9j L2VtYWNzL2ZyYW1lcy50ZXhpCisrKyBiL2RvYy9lbWFjcy9mcmFtZXMudGV4aQpAQCAtMTI5NSwx NiArMTI5NSwyMiBAQCBNZW51IEJhcnMKIEBub2RlIFRvb2wgQmFycwogQHNlY3Rpb24gVG9vbCBC YXJzCiBAY2luZGV4IHRvb2wgYmFyIG1vZGUKK0BjaW5kZXggdG9vbCBiYXIsIGF0dGFjaGVkIHRv IGZyYW1lCiBAY2luZGV4IG1vZGUsIFRvb2wgQmFyCiBAY2luZGV4IGljb25zLCB0b29sYmFyCiAK LSAgT24gZ3JhcGhpY2FsIGRpc3BsYXlzLCBFbWFjcyBwdXRzIGEgQGRmbnt0b29sIGJhcn0gYXQg dGhlIHRvcCBvZgotZWFjaCBmcmFtZSwganVzdCBiZWxvdyB0aGUgbWVudSBiYXIuICBUaGlzIGlz IGEgcm93IG9mIGljb25zIHdoaWNoIHlvdQotY2FuIGNsaWNrIG9uIHdpdGggdGhlIG1vdXNlIHRv IGludm9rZSB2YXJpb3VzIGNvbW1hbmRzLgorICBPbiBncmFwaGljYWwgZGlzcGxheXMsIEVtYWNz IHB1dHMgYSBAZGZue3Rvb2wgYmFyfSBhdCB0aGUgdG9wIG9mIGVhY2gKK2ZyYW1lLCBqdXN0IGJl bG93IHRoZSBtZW51IGJhci4gIFRoaXMgaXMgYSByb3cgb2YgaWNvbnMgd2hpY2ggeW91IGNhbgor Y2xpY2sgb24gd2l0aCB0aGUgbW91c2UgdG8gaW52b2tlIHZhcmlvdXMgY29tbWFuZHMuICBFbWFj cyBjYW4gYWxzbworb3B0aW9uYWxseSBkaXNwbGF5IGEgdG9vbCBiYXIgYXQgdGhlIHRvcCBvZiBl YWNoIHdpbmRvdyAoQHB4cmVme1dpbmRvdworVG9vbCBCYXJ9KS4KIAorQHZpbmRleCB0b29sLWJh ci1hbHdheXMtc2hvdy1kZWZhdWx0CiAgIFRoZSBnbG9iYWwgKGRlZmF1bHQpIHRvb2wgYmFyIGNv bnRhaW5zIGdlbmVyYWwgY29tbWFuZHMuICBTb21lIG1ham9yCiBtb2RlcyBkZWZpbmUgdGhlaXIg b3duIHRvb2wgYmFyczsgd2hlbmV2ZXIgYSBidWZmZXIgd2l0aCBzdWNoIGEgbWFqb3IKLW1vZGUg aXMgY3VycmVudCwgdGhlIG1vZGUncyB0b29sIGJhciByZXBsYWNlcyB0aGUgZ2xvYmFsIHRvb2wg YmFyLgorbW9kZSBpcyBjdXJyZW50LCB0aGUgbW9kZSdzIHRvb2wgYmFyIHJlcGxhY2VzIHRoZSBn bG9iYWwgdG9vbCBiYXIuICBUbworcHJldmVudCB0aGlzIHJlcGxhY2VtZW50IGZyb20gaGFwcGVu aW5nLCBjdXN0b21pemUgdGhlIHZhcmlhYmxlCitAY29kZXt0b29sLWJhci1hbHdheXMtc2hvdy1k ZWZhdWx0fS4KIAogQGZpbmRleCB0b29sLWJhci1tb2RlCiBAdmluZGV4IHRvb2wtYmFyLW1vZGUK ZGlmZiAtLWdpdCBhL2RvYy9lbWFjcy9nbG9zc2FyeS50ZXhpIGIvZG9jL2VtYWNzL2dsb3NzYXJ5 LnRleGkKaW5kZXggMzQ0ZTQ4MzFmMzYuLmIzMGUxZDc4OWZjIDEwMDY0NAotLS0gYS9kb2MvZW1h Y3MvZ2xvc3NhcnkudGV4aQorKysgYi9kb2MvZW1hY3MvZ2xvc3NhcnkudGV4aQpAQCAtMTQzNiwx MCArMTQzNiwxMiBAQCBHbG9zc2FyeQogZm9yIHlvdXIgZmF2b3JpdGUgc2V0IG9mIGZhY2VzIChx LnYuKS4KIAogQGl0ZW0gVG9vbCBCYXIKLVRoZSB0b29sIGJhciBpcyBhIGxpbmUgKHNvbWV0aW1l cyBtdWx0aXBsZSBsaW5lcykgb2YgaWNvbnMgYXQgdGhlIHRvcAotb2YgYW4gRW1hY3MgZnJhbWUu ICBDbGlja2luZyBvbiBvbmUgb2YgdGhlc2UgaWNvbnMgZXhlY3V0ZXMgYSBjb21tYW5kLgotWW91 IGNhbiB0aGluayBvZiB0aGlzIGFzIGEgZ3JhcGhpY2FsIHJlbGF0aXZlIG9mIHRoZSBtZW51IGJh ciAocS52LikuCi1AeHJlZntUb29sIEJhcnN9LgorVGhlIHRvb2wgYmFyIGlzIGEgbGluZSAoc29t ZXRpbWVzIG11bHRpcGxlIGxpbmVzKSBvZiBpY29ucyBhdCB0aGUgdG9wIG9mCithbiBFbWFjcyBm cmFtZS4gIENsaWNraW5nIG9uIG9uZSBvZiB0aGVzZSBpY29ucyBleGVjdXRlcyBhIGNvbW1hbmQu ICBZb3UKK2NhbiB0aGluayBvZiB0aGlzIGFzIGEgZ3JhcGhpY2FsIHJlbGF0aXZlIG9mIHRoZSBt ZW51IGJhciAocS52LikuCitAeHJlZntUb29sIEJhcnN9LiAgVGhlcmUgaXMgYWxzbyBhIHdpbmRv dyB0b29sIGJhciB0aGF0IGJlaGF2ZXMKK3NpbWlsYXJseSwgYnV0IGlzIGF0IHRoZSB0b3Agb2Yg YW4gRW1hY3Mgd2luZG93LiAgQHhyZWZ7V2luZG93IFRvb2wKK0Jhcn0uCiAKIEBhbmNob3J7R2xv c3NhcnktLS1Ub29sdGlwc30KIEBpdGVtIFRvb2x0aXBzCmRpZmYgLS1naXQgYS9kb2MvZW1hY3Mv bW9kZXMudGV4aSBiL2RvYy9lbWFjcy9tb2Rlcy50ZXhpCmluZGV4IDI3NzZkYzcyYTI3Li4yNTMw NDJiMjhhMyAxMDA2NDQKLS0tIGEvZG9jL2VtYWNzL21vZGVzLnRleGkKKysrIGIvZG9jL2VtYWNz L21vZGVzLnRleGkKQEAgLTI5NSw2ICsyOTUsMTAgQEAgTWlub3IgTW9kZXMKIGJ1dCB0aGUgdG9v bCBiYXIgaXMgb25seSBkaXNwbGF5ZWQgb24gZ3JhcGhpY2FsIHRlcm1pbmFscy4gIEB4cmVme1Rv b2wKIEJhcnN9LgogCitAaXRlbQorV2luZG93IFRvb2wgQmFyIG1vZGUgZ2l2ZXMgd2luZG93cyBh IHRvb2wgYmFyIHdoZW4gaXQgaXMgZGlmZmVyZW50IGZyb20KK3RoZSBkZWZhdWx0IHRvb2wgYmFy LiAgQHhyZWZ7V2luZG93IFRvb2wgQmFyfS4KKwogQGl0ZW0KIFRhYiBCYXIgbW9kZSBnaXZlcyBl YWNoIGZyYW1lIGEgdGFiIGJhci4gIEB4cmVme1RhYiBCYXJzfS4KIApkaWZmIC0tZ2l0IGEvZG9j L2VtYWNzL3dpbmRvd3MudGV4aSBiL2RvYy9lbWFjcy93aW5kb3dzLnRleGkKaW5kZXggYWQyMjI1 YjU5MjIuLmI3MTkzNTkzNTU3IDEwMDY0NAotLS0gYS9kb2MvZW1hY3Mvd2luZG93cy50ZXhpCisr KyBiL2RvYy9lbWFjcy93aW5kb3dzLnRleGkKQEAgLTIyLDYgKzIyLDcgQEAgV2luZG93cwogKiBE aXNwbGF5aW5nIEJ1ZmZlcnM6OiAgSG93IEVtYWNzIHBpY2tzIGEgd2luZG93IGZvciBkaXNwbGF5 aW5nIGEgYnVmZmVyLgogKiBXaW5kb3cgQ29udmVuaWVuY2U6OiAgQ29udmVuaWVuY2UgZnVuY3Rp b25zIGZvciB3aW5kb3cgaGFuZGxpbmcuCiAqIFRhYiBMaW5lOjogICAgICAgICAgICBXaW5kb3cg dGFiIGxpbmUuCisqIFdpbmRvdyBUb29sIEJhcjo6ICAgICBBIHRvb2wgYmFyIHRoYXQgaXMgYXR0 YWNoZWQgdG8gd2luZG93cy4KIEBlbmQgbWVudQogCiBAbm9kZSBCYXNpYyBXaW5kb3cKQEAgLTY4 OSwzICs2OTAsNDQgQEAgVGFiIExpbmUKIHN3aXRjaCBiZXR3ZWVuIHdpbmRvdyBjb25maWd1cmF0 aW9ucyBjb250YWluaW5nIHNldmVyYWwgd2luZG93cyB3aXRoIGJ1ZmZlcnMsCiB0YWJzIG9uIHRo ZSBUYWIgTGluZSBhdCB0aGUgdG9wIG9mIGVhY2ggd2luZG93IGFyZSB1c2VkIHRvIHN3aXRjaAog YmV0d2VlbiBidWZmZXJzIGluIHRoZSB3aW5kb3cuCisKKworQG5vZGUgV2luZG93IFRvb2wgQmFy CitAY2luZGV4IHdpbmRvdyB0b29sIGJhcgorQGNpbmRleCBtb2RlLCB3aW5kb3cgdG9vbCBiYXIK K0BjaW5kZXggdG9vbCBiYXIsIGF0dGFjaGVkIHRvIHdpbmRvdworCitAZmluZGV4IGdsb2JhbC13 aW5kb3ctdG9vbC1iYXItbW9kZQorICBUaGUgY29tbWFuZCBAY29kZXtnbG9iYWwtd2luZG93LXRv b2wtYmFyLW1vZGV9IHRvZ2dsZXMgdGhlIGRpc3BsYXkgb2YKK2EgdG9vbCBiYXIgYXQgdGhlIHRv cCBvZiBlYWNoIHdpbmRvdy4gIFdoZW4gZW5hYmxlZCwgbXVsdGlwbGUgd2luZG93cworY2FuIGRp c3BsYXkgdGhlaXIgb3duIHRvb2wgYmFyIHNpbXVsdGFuZW91c2x5LiAgVG8gY29uc2VydmUgc3Bh Y2UsIGEKK3dpbmRvdyB0b29sIGJhciBpcyBvbmx5IHNob3duIGlmIHRoZSB0b29sIGJhciBmb3Ig dGhhdCB3aW5kb3cncyBjdXJyZW50CitidWZmZXIgaXMgZGlmZmVyZW50IGZyb20gdGhlIGdsb2Jh bCAoZGVmYXVsdCkgdG9vbCBiYXIuICBUaGUgbW9zdCBjb21tb24KK3dheSBhIGJ1ZmZlciBoYXMg YSBkaWZmZXJlbnQgdG9vbCBiYXIgaXMgZHVlIHRvIGl0cyBtYWpvciBtb2RlLCBzbyB5b3UKK2Nh biB0aGluayBvZiB0aGUgd2luZG93IHRvb2wgYmFyIGFzIHNob3dpbmcgYSBtYWpvciBtb2RlJ3Mg dG9vbCBiYXIgaWYKK2l0IGV4aXN0cy4KKworQGZpbmRleCB3aW5kb3ctdG9vbC1iYXItbW9kZQor SWYgeW91IHdhbnQgdG8gdG9nZ2xlIHRoZSBkaXNwbGF5IG9mIGEgd2luZG93IHRvb2wgYmFyIGZv ciBvbmx5IHNvbWUKK2J1ZmZlcnMsIHJ1biB0aGUgY29tbWFuZCBAY29kZXt3aW5kb3ctdG9vbC1i YXItbW9kZX0uICBUaGUgd2luZG93IHRvb2wKK2JhciB3aWxsIHRoZW4gb25seSBhcHBlYXIgYXQg dGhlIHRvcCBvZiBhbnkgd2luZG93IGRpc3BsYXlpbmcgdGhhdAorYnVmZmVyLiAgVGhpcyBpcyB1 c2VmdWwgdG8gcHV0IGluIGEgaG9vay4gIEZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0aGUKK3dp bmRvdyB0b29sIGJhciB0byBhcHBlYXIgb25seSBmb3IgYnVmZmVycyB0aGF0IGRvIG5vdCByZXBy ZXNlbnQgZmlsZXMKK2FuZCBoYXZlIGEgY3VzdG9tIHRvb2wgYmFyLCB5b3UgY291bGQgYWRkIHRo ZSBmb2xsb3dpbmcgY29kZSB0byB5b3VyCitpbml0IGZpbGUgKEBweHJlZntJbml0IEZpbGV9KToK KworQGV4YW1wbGUKKyhhZGQtaG9vayAnc3BlY2lhbC1tb2RlLWhvb2sgJ3dpbmRvdy10b29sLWJh ci1tb2RlKQorQGVuZCBleGFtcGxlCisKK0VtYWNzIGNhbiBhbHNvIGRpc3BsYXkgYSBzaW5nbGUg dG9vbCBiYXIgYXQgdGhlIHRvcCBvZiBmcmFtZXMKKyhAcHhyZWZ7VG9vbCBCYXJzfSkuICBXaGVu IHNob3dpbmcgYSB0b29sIGJhciBhdCB0aGUgdG9wIG9mIGZyYW1lcyBhcword2VsbCBhcyB3aW5k b3dzLCB5b3UgbWF5IHdhbnQgdG8gaGF2ZSB0aGUgZnJhbWUgdG9vbCBiYXIgbm90IGNoYW5nZQor YmFzZWQgb24gdGhlIGN1cnJlbnQgYnVmZmVyJ3MgbWFqb3IgbW9kZS4gIFRoaXMgY2FuIGJlIGRv bmUgYnkKK2N1c3RvbWl6aW5nIHRoZSB2YXJpYWJsZSBAY29kZXt0b29sLWJhci1hbHdheXMtc2hv dy1kZWZhdWx0fS4KKworTm90ZSB0aGF0IHRoZSB3aW5kb3cgdG9vbCBiYXIgZGlzcGxheXMgaW4g dGhlIHNhbWUgc3BhY2UgYXMgdGhlIHRhYgorbGluZSwgc28gb25seSBvbmUgb2YgdGhlc2UgY2Fu IGJlIGRpc3BsYXkgYXQgYSB0aW1lIHVubGVzcyB5b3UgY3VzdG9taXplCit0aGUgdmFsdWUgb2Yg QGNvZGV7dGFiLWxpbmUtZm9ybWF0fSBpbiBMaXNwLiAgSW4gdGhpcyBjYXNlLCBhZGQKK0Bjb2Rl eyg6ZXZhbCAod2luZG93LXRvb2wtYmFyLXN0cm5nKSl9IHRvIEBjb2Rle3RhYi1saW5lLWZvcm1h dH0uCitAeHJlZntNb2RlIExpbmUgRm9ybWF0LCwsIGVsaXNwLCBUaGUgRW1hY3MgTGlzcCBSZWZl cmVuY2UgTWFudWFsfS4KZGlmZiAtLWdpdCBhL2RvYy9saXNwcmVmL2VsaXNwLnRleGkgYi9kb2Mv bGlzcHJlZi9lbGlzcC50ZXhpCmluZGV4IDMzOTI3MmQxZjA1Li4xMDU5ZDBkY2Y2MSAxMDA2NDQK LS0tIGEvZG9jL2xpc3ByZWYvZWxpc3AudGV4aQorKysgYi9kb2MvbGlzcHJlZi9lbGlzcC50ZXhp CkBAIC05MjUsNiArOTI1LDcgQEAgVG9wCiAqICUtQ29uc3RydWN0czo6ICAgICAgICAgICAgUHV0 dGluZyBpbmZvcm1hdGlvbiBpbnRvIGEgbW9kZSBsaW5lLgogKiBQcm9wZXJ0aWVzIGluIE1vZGU6 OiAgICAgIFVzaW5nIHRleHQgcHJvcGVydGllcyBpbiB0aGUgbW9kZSBsaW5lLgogKiBIZWFkZXIg TGluZXM6OiAgICAgICAgICAgIExpa2UgYSBtb2RlIGxpbmUsIGJ1dCBhdCB0aGUgdG9wLgorKiBU YWIgTGluZXM6OiAgICAgICAgICAgICAgIEEgbGluZSB0aGF0IGlzIGFib3ZlIHRoZSBoZWFkZXIg bGluZS4KICogRW11bGF0aW5nIE1vZGUgTGluZTo6ICAgICBGb3JtYXR0aW5nIHRleHQgYXMgdGhl IG1vZGUgbGluZSB3b3VsZC4KIAogRm9udCBMb2NrIE1vZGUKZGlmZiAtLWdpdCBhL2RvYy9saXNw cmVmL21vZGVzLnRleGkgYi9kb2MvbGlzcHJlZi9tb2Rlcy50ZXhpCmluZGV4IGNmNjdiMzE5OTI0 Li42ZWUxZDg2OWZiOCAxMDA2NDQKLS0tIGEvZG9jL2xpc3ByZWYvbW9kZXMudGV4aQorKysgYi9k b2MvbGlzcHJlZi9tb2Rlcy50ZXhpCkBAIC0yMDc0LDE0ICsyMDc0LDE0IEBAIE1vZGUgTGluZSBG b3JtYXQKIGxpbmUgYXQgdGhlIGJvdHRvbSwgd2hpY2ggZGlzcGxheXMgc3RhdHVzIGluZm9ybWF0 aW9uIGFib3V0IHRoZSBidWZmZXIKIGRpc3BsYXllZCBpbiB0aGUgd2luZG93LiAgVGhlIG1vZGUg bGluZSBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUKIGJ1ZmZlciwgc3VjaCBhcyBpdHMg bmFtZSwgYXNzb2NpYXRlZCBmaWxlLCBkZXB0aCBvZiByZWN1cnNpdmUgZWRpdGluZywKLWFuZCBt YWpvciBhbmQgbWlub3IgbW9kZXMuICBBIHdpbmRvdyBjYW4gYWxzbyBoYXZlIGEgQGRmbntoZWFk ZXIKLWxpbmV9LCB3aGljaCBpcyBtdWNoIGxpa2UgdGhlIG1vZGUgbGluZSBidXQgYXBwZWFycyBh dCB0aGUgdG9wIG9mIHRoZQotd2luZG93LgorYW5kIG1ham9yIGFuZCBtaW5vciBtb2Rlcy4gIEEg d2luZG93IGNhbiBhbHNvIGhhdmUgYSBAZGZue2hlYWRlciBsaW5lfQorYW5kIGEgQGRmbnt0YWIg bGluZX0sIHdoaWNoIGFyZSBtdWNoIGxpa2UgdGhlIG1vZGUgbGluZSBidXQgdGhleSBhcHBlYXIK K2F0IHRoZSB0b3Agb2YgdGhlIHdpbmRvdy4KIAotICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGhv dyB0byBjb250cm9sIHRoZSBjb250ZW50cyBvZiB0aGUgbW9kZSBsaW5lCi1hbmQgaGVhZGVyIGxp bmUuICBXZSBpbmNsdWRlIGl0IGluIHRoaXMgY2hhcHRlciBiZWNhdXNlIG11Y2ggb2YgdGhlCi1p bmZvcm1hdGlvbiBkaXNwbGF5ZWQgaW4gdGhlIG1vZGUgbGluZSByZWxhdGVzIHRvIHRoZSBlbmFi bGVkIG1ham9yIGFuZAotbWlub3IgbW9kZXMuCisgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgaG93 IHRvIGNvbnRyb2wgdGhlIGNvbnRlbnRzIG9mIHRoZSBtb2RlIGxpbmUsCitoZWFkZXIgbGluZSwg YW5kIHRhYiBsaW5lLiAgV2UgaW5jbHVkZSBpdCBpbiB0aGlzIGNoYXB0ZXIgYmVjYXVzZSBtdWNo CitvZiB0aGUgaW5mb3JtYXRpb24gZGlzcGxheWVkIGluIHRoZSBtb2RlIGxpbmUgcmVsYXRlcyB0 byB0aGUgZW5hYmxlZAorbWFqb3IgYW5kIG1pbm9yIG1vZGVzLgogCiBAbWVudQogKiBCYXNlOiBN b2RlIExpbmUgQmFzaWNzLiAgICAgICBCYXNpYyBpZGVhcyBvZiBtb2RlIGxpbmUgY29udHJvbC4K QEAgLTIwOTEsNiArMjA5MSw3IEBAIE1vZGUgTGluZSBGb3JtYXQKICogJS1Db25zdHJ1Y3RzOjog ICAgICAgICAgICAgICAgUHV0dGluZyBpbmZvcm1hdGlvbiBpbnRvIGEgbW9kZSBsaW5lLgogKiBQ cm9wZXJ0aWVzIGluIE1vZGU6OiAgICAgICAgICBVc2luZyB0ZXh0IHByb3BlcnRpZXMgaW4gdGhl IG1vZGUgbGluZS4KICogSGVhZGVyIExpbmVzOjogICAgICAgICAgICAgICAgTGlrZSBhIG1vZGUg bGluZSwgYnV0IGF0IHRoZSB0b3AuCisqIFRhYiBMaW5lczo6ICAgICAgICAgICAgICAgICAgIEEg bGluZSB0aGF0IGlzIGFib3ZlIHRoZSBoZWFkZXIgbGluZS4KICogRW11bGF0aW5nIE1vZGUgTGlu ZTo6ICAgICAgICAgRm9ybWF0dGluZyB0ZXh0IGFzIHRoZSBtb2RlIGxpbmUgd291bGQuCiBAZW5k IG1lbnUKIApAQCAtMjEwMSwxMSArMjEwMiwxMyBAQCBNb2RlIExpbmUgQmFzaWNzCiB2YXJpYWJs ZSBAY29kZXttb2RlLWxpbmUtZm9ybWF0fSAoQHB4cmVme01vZGUgTGluZSBUb3B9KS4gIFRoaXMg dmFyaWFibGUKIGhvbGRzIGEgQGRmbnttb2RlIGxpbmUgY29uc3RydWN0fTogYSB0ZW1wbGF0ZSB0 aGF0IGNvbnRyb2xzIHdoYXQgaXMKIGRpc3BsYXllZCBvbiB0aGUgYnVmZmVyJ3MgbW9kZSBsaW5l LiAgVGhlIHZhbHVlIG9mCi1AY29kZXtoZWFkZXItbGluZS1mb3JtYXR9IHNwZWNpZmllcyB0aGUg YnVmZmVyJ3MgaGVhZGVyIGxpbmUgaW4gdGhlIHNhbWUKLXdheS4gIEFsbCB3aW5kb3dzIGZvciB0 aGUgc2FtZSBidWZmZXIgdXNlIHRoZSBzYW1lCi1AY29kZXttb2RlLWxpbmUtZm9ybWF0fSBhbmQg QGNvZGV7aGVhZGVyLWxpbmUtZm9ybWF0fSB1bmxlc3MgYQotQGNvZGV7bW9kZS1saW5lLWZvcm1h dH0gb3IgQGNvZGV7aGVhZGVyLWxpbmUtZm9ybWF0fSBwYXJhbWV0ZXIgaGFzIGJlZW4KLXNwZWNp ZmllZCBmb3IgdGhhdCB3aW5kb3cgKEBweHJlZntXaW5kb3cgUGFyYW1ldGVyc30pLgorQGNvZGV7 aGVhZGVyLWxpbmUtZm9ybWF0fSBhbmQgQGNvZGV7dGFiLWxpbmUtZm9ybWF0fSBzcGVjaWZpZXMg dGhlCitidWZmZXIncyBoZWFkZXIgbGluZSBhbmQgdGFiIGxpbmUgaW4gdGhlIHNhbWUgd2F5LiAg QWxsIHdpbmRvd3MgZm9yIHRoZQorc2FtZSBidWZmZXIgdXNlIHRoZSBzYW1lIEBjb2Rle21vZGUt bGluZS1mb3JtYXR9LAorQGNvZGV7aGVhZGVyLWxpbmUtZm9ybWF0fSwgYW5kIEBjb2Rle3RhYi1s aW5lLWZvcm1hdH0gdW5sZXNzIGEKK0Bjb2Rle21vZGUtbGluZS1mb3JtYXR9LCBAY29kZXtoZWFk ZXItbGluZS1mb3JtYXR9LCBvcgorQGNvZGV7dGFiLWxpbmUtZm9ybWF0fSBwYXJhbWV0ZXIgaGFz IGJlZW4gc3BlY2lmaWVkIGZvciB0aGF0IHdpbmRvdworKEBweHJlZntXaW5kb3cgUGFyYW1ldGVy c30pLgogCiAgIEZvciBlZmZpY2llbmN5LCBFbWFjcyBkb2VzIG5vdCBjb250aW51b3VzbHkgcmVj b21wdXRlIGVhY2ggd2luZG93J3MKIG1vZGUgbGluZSBhbmQgaGVhZGVyIGxpbmUuICBJdCBkb2Vz IHNvIHdoZW4gY2lyY3Vtc3RhbmNlcyBhcHBlYXIgdG8gY2FsbApAQCAtMjE2Nyw4ICsyMTcwLDgg QEAgTW9kZSBMaW5lIERhdGEKIEBkZm57bW9kZSBsaW5lIGNvbnN0cnVjdH0sIG1hZGUgdXAgb2Yg bGlzdHMsIHN0cmluZ3MsIHN5bWJvbHMsIGFuZAogbnVtYmVycyBrZXB0IGluIGJ1ZmZlci1sb2Nh bCB2YXJpYWJsZXMuICBFYWNoIGRhdGEgdHlwZSBoYXMgYSBzcGVjaWZpYwogbWVhbmluZyBmb3Ig dGhlIG1vZGUgbGluZSBhcHBlYXJhbmNlLCBhcyBkZXNjcmliZWQgYmVsb3cuICBUaGUgc2FtZSBk YXRhCi1zdHJ1Y3R1cmUgaXMgdXNlZCBmb3IgY29uc3RydWN0aW5nIGZyYW1lIHRpdGxlcyAoQHB4 cmVme0ZyYW1lIFRpdGxlc30pCi1hbmQgaGVhZGVyIGxpbmVzIChAcHhyZWZ7SGVhZGVyIExpbmVz fSkuCitzdHJ1Y3R1cmUgaXMgdXNlZCBmb3IgY29uc3RydWN0aW5nIGZyYW1lIHRpdGxlcyAoQHB4 cmVme0ZyYW1lIFRpdGxlc30pLAoraGVhZGVyIGxpbmVzIChAcHhyZWZ7SGVhZGVyIExpbmVzfSks IGFuZCB0YWIgbGluZXMgKEBweHJlZntUYWIgTGluZXN9KS4KIAogICBBIG1vZGUgbGluZSBjb25z dHJ1Y3QgbWF5IGJlIGFzIHNpbXBsZSBhcyBhIGZpeGVkIHN0cmluZyBvZiB0ZXh0LAogYnV0IGl0 IHVzdWFsbHkgc3BlY2lmaWVzIGhvdyB0byBjb21iaW5lIGZpeGVkIHN0cmluZ3Mgd2l0aCB2YXJp YWJsZXMnCkBAIC0yODE2LDYgKzI4MTksMjggQEAgSGVhZGVyIExpbmVzCiBoZWFkZXIgbGluZSBh dCBvbmNlOyBpZiBpdCBoYXMgYSBtb2RlIGxpbmUsIHRoZW4gaXQgZG9lcyBub3QgZGlzcGxheSBh CiBoZWFkZXIgbGluZS4KIAorQG5vZGUgVGFiIExpbmVzCitAc3Vic2VjdGlvbiBXaW5kb3cgVGFi IExpbmVzCitAY2luZGV4IHRhYiBsaW5lIChvZiBhIHdpbmRvdykKK0BjaW5kZXggd2luZG93IHRh YiBsaW5lCisKKyAgQSB3aW5kb3cgY2FuIGhhdmUgYSBAZGZue3RhYiBsaW5lfSBhdCB0aGUgdG9w LiAgSWYgYm90aCB0aGUgdGFiIGxpbmUKK2FuZCBoZWFkZXIgbGluZSBhcmUgdmlzaWJsZSwgdGhl IHRhYiBsaW5lIGFwcGVhcnMgYWJvdmUgdGhlIGhlYWRlciBsaW5lLgorVGhlIHRhYiBsaW5lIGZl YXR1cmUgd29ya3MganVzdCBsaWtlIHRoZSBtb2RlIGxpbmUgZmVhdHVyZSwgZXhjZXB0IHRoYXQK K2l0J3MgY29udHJvbGxlZCBieSBAY29kZXt0YWItbGluZS1mb3JtYXR9OgorCitAZGVmdmFyIHRh Yi1saW5lLWZvcm1hdAorVGhpcyB2YXJpYWJsZSwgbG9jYWwgaW4gZXZlcnkgYnVmZmVyLCBzcGVj aWZpZXMgaG93IHRvIGRpc3BsYXkgdGhlIHRhYgorbGluZSwgZm9yIHdpbmRvd3MgZGlzcGxheWlu ZyB0aGUgYnVmZmVyLiAgVGhlIGZvcm1hdCBvZiB0aGUgdmFsdWUgaXMgdGhlCitzYW1lIGFzIGZv ciBAY29kZXttb2RlLWxpbmUtZm9ybWF0fSAoQHB4cmVme01vZGUgTGluZSBEYXRhfSkuICBJdCBp cworbm9ybWFsbHkgQGNvZGV7bmlsfSwgc28gdGhhdCBvcmRpbmFyeSBidWZmZXJzIGhhdmUgbm8g dGFiIGxpbmUuCitAZW5kIGRlZnZhcgorCitAZGVmdW4gd2luZG93LXRhYi1saW5lLWhlaWdodCAm b3B0aW9uYWwgd2luZG93CitUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGhlaWdodCBpbiBwaXhl bHMgb2YgQHZhcnt3aW5kb3d9J3MgdGFiIGxpbmUuCitAdmFye3dpbmRvd30gbXVzdCBiZSBhIGxp dmUgd2luZG93LCBhbmQgZGVmYXVsdHMgdG8gdGhlIHNlbGVjdGVkIHdpbmRvdy4KK0BlbmQgZGVm dW4KKwogQG5vZGUgRW11bGF0aW5nIE1vZGUgTGluZQogQHN1YnNlY3Rpb24gRW11bGF0aW5nIE1v ZGUgTGluZSBGb3JtYXR0aW5nCiAKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MKaW5k ZXggZDcyZWY1YjViZWYuLjdiODI5ZjUwMDJjIDEwMDY0NAotLS0gYS9ldGMvTkVXUworKysgYi9l dGMvTkVXUwpAQCAtMjQwLDYgKzI0MCwxMiBAQCB3aW5kb3cgc3lzdGVtcyBvdGhlciB0aGFuIE5l eHRzdGVwLgogV2hlbiB0aGlzIG1pbm9yIG1vZGUgaXMgZW5hYmxlZCwgYnV0dG9ucyByZXByZXNl bnRpbmcgbW9kaWZpZXIga2V5cwogYXJlIGRpc3BsYXllZCBhbG9uZyB0aGUgdG9vbCBiYXIuCiAK KysrKworKiogTmV3IHVzZXIgb3B0aW9uICd0b29sLWJhci1hbHdheXMtc2hvdy1kZWZhdWx0Jy4K K1RoaXMgY2FuIGJlIHNldCBzbyB0aGF0IHRoZSB0b29sIGJhciBhdCB0aGUgdG9wIG9mIGEgZnJh bWUgZG9lcyBub3Qgc2hvdworYnVmZmVyIGxvY2FsIGN1c3RvbWl6YXRpb24gb2YgdGhlIHRvb2wg YmFyLiAgVGhpcyBpcyBjb252ZW5pZW50IHdoZW4KK3VzaW5nIHRoZSBuZXdseSBhZGRlZCAnZ2xv YmFsLXdpbmRvdy10b29sLWJhci1tb2RlJy4KKwogKysrCiAqKiAiZCIgaW4gdGhlIG1vZGUgbGlu ZSBub3cgaW5kaWNhdGVzIHRoYXQgdGhlIHdpbmRvdyBpcyBkZWRpY2F0ZWQuCiBXaW5kb3dzIGhh dmUgYWx3YXlzIGJlZW4gYWJsZSB0byBiZSBkZWRpY2F0ZWQgdG8gYSBzcGVjaWZpYyBidWZmZXI7 CkBAIC0xODc3LDYgKzE4ODMsMTQgQEAgdGhhbiByZWd1bGFyIGV4cHJlc3Npb25zLCBidXQgbGVz cyBjb21wbGV4aXR5IHRoYW4gY29udGV4dC1mcmVlCiBncmFtbWFycy4gIFRoZSBJbmZvIG1hbnVh bCAiKGVsaXNwKSBQYXJzaW5nIEV4cHJlc3Npb24gR3JhbW1hcnMiIGhhcwogZG9jdW1lbnRhdGlv biBhbmQgZXhhbXBsZXMuCiAKKysrKworKiogTmV3IHBhY2thZ2UgV2luZG93LVRvb2wtQmFyLgor VGhpcyBwcm92aWRlcyBhIG5ldyBtaW5vciBtb2RlLCAnd2luZG93LXRvb2wtYmFyLW1vZGUnLiAg V2hlbiB0aGlzIG1pbm9yCittb2RlIGlzIGVuYWJsZWQsIGEgdG9vbCBiYXIgaXMgZGlzcGxheWVk IGF0IHRoZSB0b3Agb2YgYSB3aW5kb3cgaWYgdGhlCitidWZmZXIgaW4gdGhlIHdpbmRvdyBoYXMg YSBidWZmZXIgbG9jYWwgdG9vbCBiYXIsIGNvbW1vbmx5IGZyb20gaXRzCittYWpvciBtb2RlLiAg VGhlIGdsb2JhbCBtaW5vciBtb2RlICdnbG9iYWwtd2luZG93LXRvb2wtYmFyLW1vZGUnIGVuYWJs ZXMKK3RoaXMgbWlub3IgbW9kZSBpbiBhbGwgYnVmZmVycy4KKwogDAogKiBJbmNvbXBhdGlibGUg TGlzcCBDaGFuZ2VzIGluIEVtYWNzIDMwLjEKIAotLSAKMi4zOS4yCgo= --=_90159a20a7bfc6f13c8cd9160077ab74-- From debbugs-submit-bounces@debbugs.gnu.org Sun May 26 05:44:54 2024 Received: (at 68765) by debbugs.gnu.org; 26 May 2024 09:44:54 +0000 Received: from localhost ([127.0.0.1]:38406 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sBAQw-0007Bk-4Y for submit@debbugs.gnu.org; Sun, 26 May 2024 05:44:54 -0400 Received: from eggs.gnu.org ([209.51.188.92]:51130) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sBAQt-0007BQ-LL for 68765@debbugs.gnu.org; Sun, 26 May 2024 05:44:52 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sBAQd-0001QQ-TW; Sun, 26 May 2024 05:44:35 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=k+I3GE+Q/75Lpb+6hm0I10SZG/1pkxvzHoNsOLt1NHQ=; b=iI/ybkMgqsKa 7fhb61ISeGEZr6v8ILDz7UrxBv6fcfJjXl95PIUmhwZvq+oTOeOKiwN3WcX5+EAubG2106MVE8vD6 cX7IYYweTY6Z7S2UJjeGNn1+rVziI0PRQ2qvhnnnvsg7pfJ1kYZj/JTiwC+VvJ2S6yiBZQKsm3Ljc 0N4F8bFgWVa6+P68aq2YW1EhZta9Oenk+xGZkuUEMGxY5JTVdGO8v/RdKWPRUurd8acv2WOVkypNG L1ujqL47nxFJb++jVm2AT2f5Jfl9YAYwUfelCa3fDGyxEPvTjmCj7CtAKm9VXsDErwXRG/fYQlewL tlOWOK+zvt3DfhU8hMKyfA==; Date: Sun, 26 May 2024 12:44:31 +0300 Message-Id: <86o78sx5z4.fsf@gnu.org> From: Eli Zaretskii To: Jared Finder In-Reply-To: <67cc1f1b694041bfaf12dab7ef161ec8@finder.org> (message from Jared Finder on Sat, 25 May 2024 12:54:30 -0700) Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86frufe9i9.fsf@gnu.org> <8cfec392c3f9259b7499ebd4f605bc25@finder.org> <86pltib8m7.fsf@gnu.org> <1d18b11671667fefa925dbc41423d547@finder.org> <86cypd58ak.fsf@gnu.org> <8dbddd7bed38100561a1555da18a3a08@finder.org> <86ttilygb6.fsf@gnu.org> <67cc1f1b694041bfaf12dab7ef161ec8@finder.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sat, 25 May 2024 12:54:30 -0700 > From: Jared Finder > Cc: juri@linkov.net, 68765@debbugs.gnu.org, philipk@posteo.net, > monnier@iro.umontreal.ca > > Ok, I tried to fit into the existing convention but not use upper case > letters with "@cindex mode, window tool bar". Let me know if that's not > appropriate. LGTM, thanks. > That's what I was concerned about. Please let me know if this updated > text is clear enough. > > > I will wait for the next version to see if my questions are now > > answered or we need to discuss them further. > > New patch attached. Feedback welcome. Thanks, some comments below. > +@findex global-window-tool-bar-mode > + The command @code{global-window-tool-bar-mode} toggles the display of > +a tool bar at the top of each window. When enabled, multiple windows > +can display their own tool bar simultaneously. To conserve space, a > +window tool bar is only shown if the tool bar for that window's current > +buffer is different from the global (default) tool bar. The most common > +way a buffer has a different tool bar is due to its major mode, so you > +can think of the window tool bar as showing a major mode's tool bar if > +it exists. So, let me understand what happens under this global mode. By default, the frame's tool bar changes according to the major mode of the buffer shown in the frame's selected window. As a very frequent example, entering the minibuffer from a buffer whose mode is, say, Dired or Rmail or Info, changes the tool bar. When that happens, some windows which previously didn't display their tool bar because it was identical to the frame's tool bar will now display their tool bars. Right? And when you exit the minibuffer, those window-specific tool bars will again disappear, right? Wouldn't that cause annoying flickering of the display? (I know that setting tool-bar-always-show-default non-nil can prevent that, but I'm asking about the default behavior.) Btw, what exactly is the meaning of "the tool bar of the window is different from the global tool bar"? How are tool bars compared? For example, a button on the tool bar can have the :visible attribute, which will cause the icon not to appear under some conditions -- will a tool bar with that icon on display be considered "different" from a tool bar where the icon is not shown due to :visible conditions? > +@findex window-tool-bar-mode > +If you want to toggle the display of a window tool bar for only some > +buffers, run the command @code{window-tool-bar-mode}. I guess this should say that window-tool-bar-mode should be run in the buffer(s) where the window tool bar is desired? > +bar will then only appear at the top of any window displaying that > +buffer. This is useful to put in a hook. "in a mode hook", I suppose? > +Note that the window tool bar displays in the same space as the tab > +line, so only one of these can be display at a time unless you customize > +the value of @code{tab-line-format} in Lisp. In this case, add > +@code{(:eval (window-tool-bar-strng))} to @code{tab-line-format}. ^^^^^ A typo? > + A window can have a @dfn{tab line} at the top. If both the tab line > +and header line are visible, the tab line appears above the header line. > +The tab line feature works just like the mode line feature, except that > +it's controlled by @code{tab-line-format}: > + > +@defvar tab-line-format > +This variable, local in every buffer, specifies how to display the tab > +line, for windows displaying the buffer. The format of the value is the > +same as for @code{mode-line-format} (@pxref{Mode Line Data}). It is > +normally @code{nil}, so that ordinary buffers have no tab line. > +@end defvar I wonder whether it's a good idea to tell that tab line works "the same as mode line", since the purpose is very different, and the default value of tab-line-format is very different from the default of mode-line-format. At the very least I think we should tell that tab-line-format should cause the tab line appear as a row of buttons, clicking on which should change the buffer shown in the window. > ++++ > +** New user option 'tool-bar-always-show-default'. > +This can be set so that the tool bar at the top of a frame does not show > +buffer local customization of the tool bar. This is convenient when > +using the newly added 'global-window-tool-bar-mode'. This should tell the values of the option and their effect. From debbugs-submit-bounces@debbugs.gnu.org Sun May 26 12:21:09 2024 Received: (at 68765) by debbugs.gnu.org; 26 May 2024 16:21:09 +0000 Received: from localhost ([127.0.0.1]:42348 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sBGcO-0007QA-FB for submit@debbugs.gnu.org; Sun, 26 May 2024 12:21:09 -0400 Received: from greenhill.hpalace.com ([192.155.80.58]:36562) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sBGcL-0007Q0-Eq for 68765@debbugs.gnu.org; Sun, 26 May 2024 12:21:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=finder.org; s=2018; t=1716740456; bh=bqCxKVStFA7Ss1wiuPkP3QPoZzbRdFD9HTp1OkRVVT4=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=QBRfvN5sNnSC+dqOybmlIPjO53Da7qxF7HLvpjM/VxcCmBXLqtazUKRy6WqTqJZ+p P5Ohz8XJ3fWwkGbhtqv1Qapi5bZctWGQJLEkNJtXcCy5Tv6bDCgl6Kf4TnvEmP+HZL 0c+NxKioI3WS4OmgQs1tQnWgM9T1iMbwr23sn4F7cQj1pZm00ydmW5yBrwXmQd95qM VOUMg59VcEeRpR86eJeNpCxSSEXeJAoiMi2B8T7x6nleQXLsQYig8PhgpoNlCGD26V k2NYZ8RUR2oNfXi3gYY/uzCOxaqe4woxsPhvYQpBB67/LRR4YB0PdhmPrDZNZ62hwL kaod/C1ow3P7Q== Received: from mail.finder.org (unknown [192.155.80.58]) by greenhill.hpalace.com (Postfix) with ESMTPSA id 6250FCB0; Sun, 26 May 2024 16:20:56 +0000 (UTC) MIME-Version: 1.0 Date: Sun, 26 May 2024 09:20:56 -0700 From: Jared Finder To: Eli Zaretskii Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <86o78sx5z4.fsf@gnu.org> References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86frufe9i9.fsf@gnu.org> <8cfec392c3f9259b7499ebd4f605bc25@finder.org> <86pltib8m7.fsf@gnu.org> <1d18b11671667fefa925dbc41423d547@finder.org> <86cypd58ak.fsf@gnu.org> <8dbddd7bed38100561a1555da18a3a08@finder.org> <86ttilygb6.fsf@gnu.org> <67cc1f1b694041bfaf12dab7ef161ec8@finder.org> <86o78sx5z4.fsf@gnu.org> Message-ID: <65a70df3c5e0edf72fb6d6e1dda99c22@finder.org> X-Sender: jared@finder.org Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2024-05-26 02:44, Eli Zaretskii wrote: >> Date: Sat, 25 May 2024 12:54:30 -0700 >> From: Jared Finder >> Cc: juri@linkov.net, 68765@debbugs.gnu.org, philipk@posteo.net, >> monnier@iro.umontreal.ca >> >> Ok, I tried to fit into the existing convention but not use upper case >> letters with "@cindex mode, window tool bar". Let me know if that's >> not >> appropriate. > > LGTM, thanks. > >> That's what I was concerned about. Please let me know if this updated >> text is clear enough. >> >> > I will wait for the next version to see if my questions are now >> > answered or we need to discuss them further. >> >> New patch attached. Feedback welcome. > > Thanks, some comments below. The questions around current behavior may be clarified by describing how the internals work. There's a new function, window-tool-bar-string, which converts the binding of to a propertized string containing clickable buttons for the tool bar. This function depends on the current buffer but that doesn't result in flickering, see the next paragraph. window-tool-bar-mode toggles the buffer local value of tab-line-format between nil, which shows no tab line, and (:eval (window-tool-bar-string)), which shows tool bar buttons in the tab line. When "evaluating" tab-line-format for display Emacs already temporarily sets the current buffer, so this evaluation only shows that buffer's tool bar, ignoring whatever the user's current buffer is. And finally, window-tool-bar-mode will keep tab-line-format as nil if the binding of is the same as the global binding because setting tab-line-format to non-nil causes the tab line to take up a row, even if the result is just an empty string. Answers also for the questions below follow. >> +@findex global-window-tool-bar-mode >> + The command @code{global-window-tool-bar-mode} toggles the display >> of >> +a tool bar at the top of each window. When enabled, multiple windows >> +can display their own tool bar simultaneously. To conserve space, a >> +window tool bar is only shown if the tool bar for that window's >> current >> +buffer is different from the global (default) tool bar. The most >> common >> +way a buffer has a different tool bar is due to its major mode, so >> you >> +can think of the window tool bar as showing a major mode's tool bar >> if >> +it exists. > > So, let me understand what happens under this global mode. By > default, the frame's tool bar changes according to the major mode of > the buffer shown in the frame's selected window. As a very frequent > example, entering the minibuffer from a buffer whose mode is, say, > Dired or Rmail or Info, changes the tool bar. When that happens, some > windows which previously didn't display their tool bar because it was > identical to the frame's tool bar will now display their tool bars. > Right? And when you exit the minibuffer, those window-specific tool > bars will again disappear, right? Wouldn't that cause annoying > flickering of the display? (I know that setting > tool-bar-always-show-default non-nil can prevent that, but I'm asking > about the default behavior.) No, this is not the behavior. The window tool bar displays that buffer's binding of . The window tool bar is displayed in the tab line of each window and doesn't pay attention to what the current buffer or window is. > Btw, what exactly is the meaning of "the tool bar of the window is > different from the global tool bar"? How are tool bars compared? For > example, a button on the tool bar can have the :visible attribute, > which will cause the icon not to appear under some conditions -- will > a tool bar with that icon on display be considered "different" from a > tool bar where the icon is not shown due to :visible conditions? It's specifically using the following test: (eq tool-bar-map (default-value 'tool-bar-map)) This is because the binding for is actually :filter tool-bar-make-keymap which generates a keymap based on tool-bar-map. Other comments all addressed in an upcoming patch except this one: >> + A window can have a @dfn{tab line} at the top. If both the tab >> line >> +and header line are visible, the tab line appears above the header >> line. >> +The tab line feature works just like the mode line feature, except >> that >> +it's controlled by @code{tab-line-format}: >> + >> +@defvar tab-line-format >> +This variable, local in every buffer, specifies how to display the >> tab >> +line, for windows displaying the buffer. The format of the value is >> the >> +same as for @code{mode-line-format} (@pxref{Mode Line Data}). It is >> +normally @code{nil}, so that ordinary buffers have no tab line. >> +@end defvar > > I wonder whether it's a good idea to tell that tab line works "the > same as mode line", since the purpose is very different, and the > default value of tab-line-format is very different from the default of > mode-line-format. At the very least I think we should tell that > tab-line-format should cause the tab line appear as a row of buttons, > clicking on which should change the buffer shown in the window. Perhaps there's some sort of convention we can describe that talks about the difference between header-line-format and tab-line-format? I'd like to copy back any changes to header-line-format which I based this text off of. It seems to me that really the only difference is conventional. I'm thinking something along the lines of "header line is usually modified by major modes to add additional info (examples: EWW, Info) and the tab line is usually modified by minor modes to add IDE-styled buttons (examples: tab line mode, window tool bar mode)". Does that sound right to you? I'd make the text more specific in its description, I just want to confirm the general intent. -- MJF From debbugs-submit-bounces@debbugs.gnu.org Sun May 26 14:40:52 2024 Received: (at 68765) by debbugs.gnu.org; 26 May 2024 18:40:52 +0000 Received: from localhost ([127.0.0.1]:42548 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sBInc-0002ou-08 for submit@debbugs.gnu.org; Sun, 26 May 2024 14:40:52 -0400 Received: from eggs.gnu.org ([209.51.188.92]:44962) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sBInZ-0002oU-GT for 68765@debbugs.gnu.org; Sun, 26 May 2024 14:40:50 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sBInK-0003sJ-79; Sun, 26 May 2024 14:40:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=yBkKuQ/LJKKQVLWsu3DkdNKOUZSpPorqC1o7r9Jh7+g=; b=DVls6qqf9UWO BgeilW+PCf2bEWTTJ7KhKI1XdnxS+WM9BE66vTAG4YxG5GOFvzYAha5QwrZE2987TLhK0AkeHRjrQ BIgGIdXlosqnJqRpJjY477XZhJs2w3Oub+g5qgjDnlKIIqVq30tw/dgVBmElIa1yXCeExV8vH9ZMK clw8EqYlaxaDFkTPEyK6AA7OkfpHRQOSWh5JrF8QpQQqBjsEenhGhPXkPSmKaJxTquwBxUe3LZhIA LQC3W9ohsL1XVf6C5DJIsPqEgHvRyDcFwOr5MUzD0NSKoQKm96lU3a260hKRRVPkcGaeh6glQMw5a l4pR+Ao++XzCFd6mGs5H9Q==; Date: Sun, 26 May 2024 21:40:28 +0300 Message-Id: <861q5owh5v.fsf@gnu.org> From: Eli Zaretskii To: Jared Finder In-Reply-To: <65a70df3c5e0edf72fb6d6e1dda99c22@finder.org> (message from Jared Finder on Sun, 26 May 2024 09:20:56 -0700) Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86frufe9i9.fsf@gnu.org> <8cfec392c3f9259b7499ebd4f605bc25@finder.org> <86pltib8m7.fsf@gnu.org> <1d18b11671667fefa925dbc41423d547@finder.org> <86cypd58ak.fsf@gnu.org> <8dbddd7bed38100561a1555da18a3a08@finder.org> <86ttilygb6.fsf@gnu.org> <67cc1f1b694041bfaf12dab7ef161ec8@finder.org> <86o78sx5z4.fsf@gnu.org> <65a70df3c5e0edf72fb6d6e1dda99c22@finder.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sun, 26 May 2024 09:20:56 -0700 > From: Jared Finder > Cc: juri@linkov.net, 68765@debbugs.gnu.org, philipk@posteo.net, > monnier@iro.umontreal.ca > > >> +@findex global-window-tool-bar-mode > >> + The command @code{global-window-tool-bar-mode} toggles the display > >> of > >> +a tool bar at the top of each window. When enabled, multiple windows > >> +can display their own tool bar simultaneously. To conserve space, a > >> +window tool bar is only shown if the tool bar for that window's > >> current > >> +buffer is different from the global (default) tool bar. The most > >> common > >> +way a buffer has a different tool bar is due to its major mode, so > >> you > >> +can think of the window tool bar as showing a major mode's tool bar > >> if > >> +it exists. > > > > So, let me understand what happens under this global mode. By > > default, the frame's tool bar changes according to the major mode of > > the buffer shown in the frame's selected window. As a very frequent > > example, entering the minibuffer from a buffer whose mode is, say, > > Dired or Rmail or Info, changes the tool bar. When that happens, some > > windows which previously didn't display their tool bar because it was > > identical to the frame's tool bar will now display their tool bars. > > Right? And when you exit the minibuffer, those window-specific tool > > bars will again disappear, right? Wouldn't that cause annoying > > flickering of the display? (I know that setting > > tool-bar-always-show-default non-nil can prevent that, but I'm asking > > about the default behavior.) > > No, this is not the behavior. The window tool bar displays that > buffer's binding of . The window tool bar is displayed in the > tab line of each window and doesn't pay attention to what the current > buffer or window is. But this means that the following text: >> To conserve space, >> a window tool bar is only shown if the tool bar for that window's >> current buffer is different from the global (default) tool bar is at least inaccurate. Specifically, if the frame's global tool bar changes as result of some command, the identity of the tool bars of windows to that of the frame is not re-examined. So if some window decided that its tool bar is not to be displayed, it will remain undisplayed until that window shows a different buffer or its buffer changes its major mode. Is that correct? If not, why not? Or maybe I don't understand well enough what you mean by "The window tool bar is displayed in the tab line of each window and doesn't pay attention to what the current buffer or window is." You are using here terminology that is confusing: there's no "current window" in Emacs, only the "selected window", and it is unclear whether by "current buffer" you mean the global current buffer (the one returned by the function current-buffer) or the buffer shown in a window (since you also say "the window's current buffer", another term that we do not use). > > Btw, what exactly is the meaning of "the tool bar of the window is > > different from the global tool bar"? How are tool bars compared? For > > example, a button on the tool bar can have the :visible attribute, > > which will cause the icon not to appear under some conditions -- will > > a tool bar with that icon on display be considered "different" from a > > tool bar where the icon is not shown due to :visible conditions? > > It's specifically using the following test: > > (eq tool-bar-map > (default-value 'tool-bar-map)) So a frame's tool bar can completely change its look due to :visible, and Emacs will still consider it "equal" to the tool bar of some window where those :visible conditions yield a completely different look? Does that make sense? I'm beginning to think that the feature whereby we don't display the window's tool bar under some conditions "to conserve space" is more confusing and hard to document than is useful, and perhaps we should simply show the window's tool bar unconditionally? > > I wonder whether it's a good idea to tell that tab line works "the > > same as mode line", since the purpose is very different, and the > > default value of tab-line-format is very different from the default of > > mode-line-format. At the very least I think we should tell that > > tab-line-format should cause the tab line appear as a row of buttons, > > clicking on which should change the buffer shown in the window. > > Perhaps there's some sort of convention we can describe that talks about > the difference between header-line-format and tab-line-format? I'd like > to copy back any changes to header-line-format which I based this text > off of. > > It seems to me that really the only difference is conventional. I'm > thinking something along the lines of "header line is usually modified > by major modes to add additional info (examples: EWW, Info) and the tab > line is usually modified by minor modes to add IDE-styled buttons > (examples: tab line mode, window tool bar mode)". > > Does that sound right to you? It doesn't address my concerns. My concerns are that the purpose of tab-line and window's tool bar is conceptually very different from that of the mode line and the header line. Technically, they are all controlled by a FOO-format variable that has the same rules and syntax, but that's an implementation detail. For example, it would make no sense at all to use something similar to the default mode-line-format for the tab-line or the window tool bar, would it? So what I would like us to say in the manual is that the value of window-tool-bar-format and of tab-line-format should produce what is expected from these lines: a row of tabs for tab-line and a row of icons for the tool bar. The reader should understand that having a tab-line-format whose value is "%b %f", for example, makes no sense, although it will work. (In general, most or all %-elements of mode line and header line make no sense in tab-line and tool bar. It is hardly an accident that tab-line-format's value is just (:eval FUNC), in stark contrast to the value of mode-line-format and header-line-format in modes in which it is non-nil.) Did I succeed to explain my concerns? From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 02 00:18:18 2024 Received: (at 68765) by debbugs.gnu.org; 2 Jun 2024 04:18:18 +0000 Received: from localhost ([127.0.0.1]:57633 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sDcfh-0002LE-BF for submit@debbugs.gnu.org; Sun, 02 Jun 2024 00:18:18 -0400 Received: from greenhill.hpalace.com ([192.155.80.58]:56314) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sDcfb-0002Kz-9d for 68765@debbugs.gnu.org; Sun, 02 Jun 2024 00:18:16 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=finder.org; s=2018; t=1717301878; bh=HuDmvCD7PSKc6nfPUnwrlWjDxaG7XUHoRvyDsqgXWPs=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=uV9PZ6WvTUQbv51IbNAznTg0908lPLF8j9Buxb0dIBZNSbOGnOy/S0rOrVvUXADle 2pkNYTPbsz3FzyYqy47BKPTtWPYmEaxpY4HhHVmL7qr7d5tBpUSSMZsGv5nFcYrsMe AMZg4GVv+hbSzPLOsKACFArhtvHNdv+eN4MofzytcgVKgkV7aSBXaE6KpyX/IAskij g2tKWTmDPJDt3GKbr1tc+9u1UBKvVTIJ32rzG1R6K46vyGhPf1LmfsMjatIzZWeGg5 wv2O95O18u3mvQ2TtivzMF0/DVWzo3eUQEx1zuBrjcXk8+wGRXTy8C/2nv7l5goSNh RXcbKEIXoXByA== Received: from mail.finder.org (unknown [192.155.80.58]) by greenhill.hpalace.com (Postfix) with ESMTPSA id 455077A1; Sun, 2 Jun 2024 04:17:58 +0000 (UTC) MIME-Version: 1.0 Date: Sat, 01 Jun 2024 21:17:58 -0700 From: Jared Finder To: Eli Zaretskii Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <861q5owh5v.fsf@gnu.org> References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86frufe9i9.fsf@gnu.org> <8cfec392c3f9259b7499ebd4f605bc25@finder.org> <86pltib8m7.fsf@gnu.org> <1d18b11671667fefa925dbc41423d547@finder.org> <86cypd58ak.fsf@gnu.org> <8dbddd7bed38100561a1555da18a3a08@finder.org> <86ttilygb6.fsf@gnu.org> <67cc1f1b694041bfaf12dab7ef161ec8@finder.org> <86o78sx5z4.fsf@gnu.org> <65a70df3c5e0edf72fb6d6e1dda99c22@finder.org> <861q5owh5v.fsf@gnu.org> Message-ID: X-Sender: jared@finder.org Content-Type: multipart/mixed; boundary="=_1bbc60d09472d5dd2a966e06cfde9c08" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=_1bbc60d09472d5dd2a966e06cfde9c08 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Thank you for all the feedback. Updated patch attached. On 2024-05-26 11:40, Eli Zaretskii wrote: >> Date: Sun, 26 May 2024 09:20:56 -0700 >> From: Jared Finder >> Cc: juri@linkov.net, 68765@debbugs.gnu.org, philipk@posteo.net, >> monnier@iro.umontreal.ca >> >> >> +@findex global-window-tool-bar-mode >> >> + The command @code{global-window-tool-bar-mode} toggles the display >> >> of >> >> +a tool bar at the top of each window. When enabled, multiple windows >> >> +can display their own tool bar simultaneously. To conserve space, a >> >> +window tool bar is only shown if the tool bar for that window's >> >> current >> >> +buffer is different from the global (default) tool bar. The most >> >> common >> >> +way a buffer has a different tool bar is due to its major mode, so >> >> you >> >> +can think of the window tool bar as showing a major mode's tool bar >> >> if >> >> +it exists. >> > >> > So, let me understand what happens under this global mode. By >> > default, the frame's tool bar changes according to the major mode of >> > the buffer shown in the frame's selected window. As a very frequent >> > example, entering the minibuffer from a buffer whose mode is, say, >> > Dired or Rmail or Info, changes the tool bar. When that happens, some >> > windows which previously didn't display their tool bar because it was >> > identical to the frame's tool bar will now display their tool bars. >> > Right? And when you exit the minibuffer, those window-specific tool >> > bars will again disappear, right? Wouldn't that cause annoying >> > flickering of the display? (I know that setting >> > tool-bar-always-show-default non-nil can prevent that, but I'm asking >> > about the default behavior.) >> >> No, this is not the behavior. The window tool bar displays that >> buffer's binding of . The window tool bar is displayed in >> the >> tab line of each window and doesn't pay attention to what the current >> buffer or window is. > > But this means that the following text: > >>> To conserve space, >>> a window tool bar is only shown if the tool bar for that window's >>> current buffer is different from the global (default) tool bar > > is at least inaccurate. Specifically, if the frame's global tool bar > changes as result of some command, the identity of the tool bars of > windows to that of the frame is not re-examined. So if some window > decided that its tool bar is not to be displayed, it will remain > undisplayed until that window shows a different buffer or its buffer > changes its major mode. Is that correct? If not, why not? Your understanding here is accurate. I consider this behavior a bug that I'd like to fix (in normal use it rarely happens). I suppose I could use add-variable-watcher to detect all changes to tool-bar-map and update tool bar visibility. I'd like to make sure to do this correctly and not cause a significant performance hit. Should such a temporary limitation be documented in the manual? I added a section to describe this limitation to my patch, but I don't know if it is appropriate. > Or maybe I don't understand well enough what you mean by "The window > tool bar is displayed in the tab line of each window and doesn't pay > attention to what the current buffer or window is." You are using > here terminology that is confusing: there's no "current window" in > Emacs, only the "selected window", and it is unclear whether by > "current buffer" you mean the global current buffer (the one returned > by the function current-buffer) or the buffer shown in a window (since > you also say "the window's current buffer", another term that we do > not use). Thanks for helping me here with terminology here. Looking over the manual, it seems the proper terms are "current buffer", "selected window", and "buffer displayed in a window". I have updated my patch to use these terms. >> > Btw, what exactly is the meaning of "the tool bar of the window is >> > different from the global tool bar"? How are tool bars compared? For >> > example, a button on the tool bar can have the :visible attribute, >> > which will cause the icon not to appear under some conditions -- will >> > a tool bar with that icon on display be considered "different" from a >> > tool bar where the icon is not shown due to :visible conditions? >> >> It's specifically using the following test: >> >> (eq tool-bar-map >> (default-value 'tool-bar-map)) > > So a frame's tool bar can completely change its look due to :visible, > and Emacs will still consider it "equal" to the tool bar of some > window where those :visible conditions yield a completely different > look? Does that make sense? From a functionality standpoint, I think it makes a lot of sense. It's about if there's a major mode specific tool bar, not just if the list of buttons is different. Major modes with custom tool bars are recommended to set tool-bar-map locally and that's what all customizations in core Emacs do. An eq comparison properly catches this. I have updated the patch to refer to the tool bar binding being different to try to communicate this. > I'm beginning to think that the feature whereby we don't display the > window's tool bar under some conditions "to conserve space" is more > confusing and hard to document than is useful, and perhaps we should > simply show the window's tool bar unconditionally? I find it really useful to have this auto-show/hide behavior. As I wrote in the docs, "you can think of the window tool bar as showing a major mode specific tool bar if it exists". The most prominent other source of a custom tool bar is isearch. Having no space taken up when editing a text file, then having the tool bar appear when I hit C-s lines up with what I see in many other programs. I'd be sad to see this behavior removed. > So what I would like us to say in the manual is that the value of > window-tool-bar-format Just to be clear -- there is no new line as you requested a while back. The mode just alters the value of tab-line-format. > and of tab-line-format should produce what is > expected from these lines: a row of tabs for tab-line and a row of > icons for the tool bar. The reader should understand that having a > tab-line-format whose value is "%b %f", for example, makes no sense, > although it will work. (In general, most or all %-elements of mode > line and header line make no sense in tab-line and tool bar. It is > hardly an accident that tab-line-format's value is just (:eval FUNC), > in stark contrast to the value of mode-line-format and > header-line-format in modes in which it is non-nil.) > > Did I succeed to explain my concerns? Yes, I think I understand. I have updated my patch. -- MJF --=_1bbc60d09472d5dd2a966e06cfde9c08 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-Adding-documentation-for-window-tool-bar-bug-68765.patch Content-Disposition: attachment; filename=0001-Adding-documentation-for-window-tool-bar-bug-68765.patch; size=13847 RnJvbSA3OTcyMDY4ZDQ2ZjdiNDBmYjU0YTZlMmI4MDJmYzY1ZGU5NzNjZjU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+CkRhdGU6 IE1vbiwgMjAgTWF5IDIwMjQgMjE6NTk6MTQgLTA3MDAKU3ViamVjdDogW1BBVENIXSBBZGRpbmcg ZG9jdW1lbnRhdGlvbiBmb3Igd2luZG93LXRvb2wtYmFyIChidWcjNjg3NjUpCgoqIGRvYy9lbWFj cy9lbWFjcy50ZXhpIChUb3ApOgoqIGRvYy9lbWFjcy9mcmFtZXMudGV4aSAoVG9vbCBCYXJzKToK KiBkb2MvZW1hY3MvZ2xvc3NhcnkudGV4aSAoR2xvc3NhcnkpOgoqIGRvYy9lbWFjcy9tb2Rlcy50 ZXhpIChNaW5vciBNb2Rlcyk6IE1lbnRpb24gV2luZG93IFRvb2wgQmFyCmFuZCBhZGQgeHJlZi4K KiBkb2MvZW1hY3Mvd2luZG93cy50ZXhpIChXaW5kb3dzLCBUYWIgTGluZSk6IE5ldyBkb2N1bWVu dGF0aW9uLgoqIGRvYy9saXNwcmVmL2VsaXNwLnRleGkgKFRvcCk6CiogZG9jL2xpc3ByZWYvbW9k ZXMudGV4aSAoTW9kZSBMaW5lIEZvcm1hdCwgTW9kZSBMaW5lIEJhc2ljcykKKE1vZGUgTGluZSBE YXRhKTogTWVudGlvbiBUYWIgTGluZXMgYW5kIGFkZCB4cmVmLgooVGFiIExpbmVzKTogTmV3IGRv Y3VtZW50YXRpb24uCiogZXRjL05FV1M6IE1lbnRpb24gbmV3bHkgYWRkZWQgdmFyaWFibGUKJ3Rv b2wtYmFyLWFsd2F5cy1zaG93LWRlZmF1bHQnIGFuZCBuZXcgcGFja2FnZSAnd2luZG93LXRvb2wt YmFyJwotLS0KIGRvYy9lbWFjcy9lbWFjcy50ZXhpICAgIHwgIDEgKwogZG9jL2VtYWNzL2ZyYW1l cy50ZXhpICAgfCAxNCArKysrKysrKy0tLQogZG9jL2VtYWNzL2dsb3NzYXJ5LnRleGkgfCAxMCAr KysrKy0tLQogZG9jL2VtYWNzL21vZGVzLnRleGkgICAgfCAgNCArKysKIGRvYy9lbWFjcy93aW5k b3dzLnRleGkgIHwgNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkb2Mv bGlzcHJlZi9lbGlzcC50ZXhpICB8ICAxICsKIGRvYy9saXNwcmVmL21vZGVzLnRleGkgIHwgNTYg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIGV0Yy9ORVdTICAgICAg ICAgICAgICAgIHwgMTQgKysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMTI4IGluc2VydGlv bnMoKyksIDIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9lbWFjcy9lbWFjcy50ZXhp IGIvZG9jL2VtYWNzL2VtYWNzLnRleGkKaW5kZXggN2Q3N2YxM2FiMjEuLjgyNDYwNDFmYjk1IDEw MDY0NAotLS0gYS9kb2MvZW1hY3MvZW1hY3MudGV4aQorKysgYi9kb2MvZW1hY3MvZW1hY3MudGV4 aQpAQCAtNTI5LDYgKzUyOSw3IEBAIFRvcAogKiBUZW1wb3JhcnkgRGlzcGxheXM6OiAgRGlzcGxh eWluZyBub24tZWRpdGFibGUgYnVmZmVycy4KICogV2luZG93IENvbnZlbmllbmNlOjogIENvbnZl bmllbmNlIGZ1bmN0aW9ucyBmb3Igd2luZG93IGhhbmRsaW5nLgogKiBUYWIgTGluZTo6ICAgICAg ICAgICAgV2luZG93IHRhYiBsaW5lLgorKiBXaW5kb3cgVG9vbCBCYXI6OiAgICAgQSB0b29sIGJh ciB0aGF0IGlzIGF0dGFjaGVkIHRvIHdpbmRvd3MuCiAKIERpc3BsYXlpbmcgYSBCdWZmZXIgaW4g YSBXaW5kb3cKIApkaWZmIC0tZ2l0IGEvZG9jL2VtYWNzL2ZyYW1lcy50ZXhpIGIvZG9jL2VtYWNz L2ZyYW1lcy50ZXhpCmluZGV4IDZjNjJmZGU0ZmZiLi44MDI4YTUxNmU2NiAxMDA2NDQKLS0tIGEv ZG9jL2VtYWNzL2ZyYW1lcy50ZXhpCisrKyBiL2RvYy9lbWFjcy9mcmFtZXMudGV4aQpAQCAtMTI5 NSwxNiArMTI5NSwyMiBAQCBNZW51IEJhcnMKIEBub2RlIFRvb2wgQmFycwogQHNlY3Rpb24gVG9v bCBCYXJzCiBAY2luZGV4IHRvb2wgYmFyIG1vZGUKK0BjaW5kZXggdG9vbCBiYXIsIGF0dGFjaGVk IHRvIGZyYW1lCiBAY2luZGV4IG1vZGUsIFRvb2wgQmFyCiBAY2luZGV4IGljb25zLCB0b29sYmFy CiAKLSAgT24gZ3JhcGhpY2FsIGRpc3BsYXlzLCBFbWFjcyBwdXRzIGEgQGRmbnt0b29sIGJhcn0g YXQgdGhlIHRvcCBvZgotZWFjaCBmcmFtZSwganVzdCBiZWxvdyB0aGUgbWVudSBiYXIuICBUaGlz IGlzIGEgcm93IG9mIGljb25zIHdoaWNoIHlvdQotY2FuIGNsaWNrIG9uIHdpdGggdGhlIG1vdXNl IHRvIGludm9rZSB2YXJpb3VzIGNvbW1hbmRzLgorICBPbiBncmFwaGljYWwgZGlzcGxheXMsIEVt YWNzIHB1dHMgYSBAZGZue3Rvb2wgYmFyfSBhdCB0aGUgdG9wIG9mIGVhY2gKK2ZyYW1lLCBqdXN0 IGJlbG93IHRoZSBtZW51IGJhci4gIFRoaXMgaXMgYSByb3cgb2YgaWNvbnMgd2hpY2ggeW91IGNh bgorY2xpY2sgb24gd2l0aCB0aGUgbW91c2UgdG8gaW52b2tlIHZhcmlvdXMgY29tbWFuZHMuICBF bWFjcyBjYW4gYWxzbworb3B0aW9uYWxseSBkaXNwbGF5IGEgdG9vbCBiYXIgYXQgdGhlIHRvcCBv ZiBlYWNoIHdpbmRvdyAoQHB4cmVme1dpbmRvdworVG9vbCBCYXJ9KS4KIAorQHZpbmRleCB0b29s LWJhci1hbHdheXMtc2hvdy1kZWZhdWx0CiAgIFRoZSBnbG9iYWwgKGRlZmF1bHQpIHRvb2wgYmFy IGNvbnRhaW5zIGdlbmVyYWwgY29tbWFuZHMuICBTb21lIG1ham9yCiBtb2RlcyBkZWZpbmUgdGhl aXIgb3duIHRvb2wgYmFyczsgd2hlbmV2ZXIgYSBidWZmZXIgd2l0aCBzdWNoIGEgbWFqb3IKLW1v ZGUgaXMgY3VycmVudCwgdGhlIG1vZGUncyB0b29sIGJhciByZXBsYWNlcyB0aGUgZ2xvYmFsIHRv b2wgYmFyLgorbW9kZSBpcyBjdXJyZW50LCB0aGUgbW9kZSdzIHRvb2wgYmFyIHJlcGxhY2VzIHRo ZSBnbG9iYWwgdG9vbCBiYXIuICBUbworcHJldmVudCB0aGlzIHJlcGxhY2VtZW50IGZyb20gaGFw cGVuaW5nLCBjdXN0b21pemUgdGhlIHZhcmlhYmxlCitAY29kZXt0b29sLWJhci1hbHdheXMtc2hv dy1kZWZhdWx0fS4KIAogQGZpbmRleCB0b29sLWJhci1tb2RlCiBAdmluZGV4IHRvb2wtYmFyLW1v ZGUKZGlmZiAtLWdpdCBhL2RvYy9lbWFjcy9nbG9zc2FyeS50ZXhpIGIvZG9jL2VtYWNzL2dsb3Nz YXJ5LnRleGkKaW5kZXggMzQ0ZTQ4MzFmMzYuLmIzMGUxZDc4OWZjIDEwMDY0NAotLS0gYS9kb2Mv ZW1hY3MvZ2xvc3NhcnkudGV4aQorKysgYi9kb2MvZW1hY3MvZ2xvc3NhcnkudGV4aQpAQCAtMTQz NiwxMCArMTQzNiwxMiBAQCBHbG9zc2FyeQogZm9yIHlvdXIgZmF2b3JpdGUgc2V0IG9mIGZhY2Vz IChxLnYuKS4KIAogQGl0ZW0gVG9vbCBCYXIKLVRoZSB0b29sIGJhciBpcyBhIGxpbmUgKHNvbWV0 aW1lcyBtdWx0aXBsZSBsaW5lcykgb2YgaWNvbnMgYXQgdGhlIHRvcAotb2YgYW4gRW1hY3MgZnJh bWUuICBDbGlja2luZyBvbiBvbmUgb2YgdGhlc2UgaWNvbnMgZXhlY3V0ZXMgYSBjb21tYW5kLgot WW91IGNhbiB0aGluayBvZiB0aGlzIGFzIGEgZ3JhcGhpY2FsIHJlbGF0aXZlIG9mIHRoZSBtZW51 IGJhciAocS52LikuCi1AeHJlZntUb29sIEJhcnN9LgorVGhlIHRvb2wgYmFyIGlzIGEgbGluZSAo c29tZXRpbWVzIG11bHRpcGxlIGxpbmVzKSBvZiBpY29ucyBhdCB0aGUgdG9wIG9mCithbiBFbWFj cyBmcmFtZS4gIENsaWNraW5nIG9uIG9uZSBvZiB0aGVzZSBpY29ucyBleGVjdXRlcyBhIGNvbW1h bmQuICBZb3UKK2NhbiB0aGluayBvZiB0aGlzIGFzIGEgZ3JhcGhpY2FsIHJlbGF0aXZlIG9mIHRo ZSBtZW51IGJhciAocS52LikuCitAeHJlZntUb29sIEJhcnN9LiAgVGhlcmUgaXMgYWxzbyBhIHdp bmRvdyB0b29sIGJhciB0aGF0IGJlaGF2ZXMKK3NpbWlsYXJseSwgYnV0IGlzIGF0IHRoZSB0b3Ag b2YgYW4gRW1hY3Mgd2luZG93LiAgQHhyZWZ7V2luZG93IFRvb2wKK0Jhcn0uCiAKIEBhbmNob3J7 R2xvc3NhcnktLS1Ub29sdGlwc30KIEBpdGVtIFRvb2x0aXBzCmRpZmYgLS1naXQgYS9kb2MvZW1h Y3MvbW9kZXMudGV4aSBiL2RvYy9lbWFjcy9tb2Rlcy50ZXhpCmluZGV4IDI3NzZkYzcyYTI3Li4y NTMwNDJiMjhhMyAxMDA2NDQKLS0tIGEvZG9jL2VtYWNzL21vZGVzLnRleGkKKysrIGIvZG9jL2Vt YWNzL21vZGVzLnRleGkKQEAgLTI5NSw2ICsyOTUsMTAgQEAgTWlub3IgTW9kZXMKIGJ1dCB0aGUg dG9vbCBiYXIgaXMgb25seSBkaXNwbGF5ZWQgb24gZ3JhcGhpY2FsIHRlcm1pbmFscy4gIEB4cmVm e1Rvb2wKIEJhcnN9LgogCitAaXRlbQorV2luZG93IFRvb2wgQmFyIG1vZGUgZ2l2ZXMgd2luZG93 cyBhIHRvb2wgYmFyIHdoZW4gaXQgaXMgZGlmZmVyZW50IGZyb20KK3RoZSBkZWZhdWx0IHRvb2wg YmFyLiAgQHhyZWZ7V2luZG93IFRvb2wgQmFyfS4KKwogQGl0ZW0KIFRhYiBCYXIgbW9kZSBnaXZl cyBlYWNoIGZyYW1lIGEgdGFiIGJhci4gIEB4cmVme1RhYiBCYXJzfS4KIApkaWZmIC0tZ2l0IGEv ZG9jL2VtYWNzL3dpbmRvd3MudGV4aSBiL2RvYy9lbWFjcy93aW5kb3dzLnRleGkKaW5kZXggYWQy MjI1YjU5MjIuLjhhYjgzMmQ3Y2M3IDEwMDY0NAotLS0gYS9kb2MvZW1hY3Mvd2luZG93cy50ZXhp CisrKyBiL2RvYy9lbWFjcy93aW5kb3dzLnRleGkKQEAgLTIyLDYgKzIyLDcgQEAgV2luZG93cwog KiBEaXNwbGF5aW5nIEJ1ZmZlcnM6OiAgSG93IEVtYWNzIHBpY2tzIGEgd2luZG93IGZvciBkaXNw bGF5aW5nIGEgYnVmZmVyLgogKiBXaW5kb3cgQ29udmVuaWVuY2U6OiAgQ29udmVuaWVuY2UgZnVu Y3Rpb25zIGZvciB3aW5kb3cgaGFuZGxpbmcuCiAqIFRhYiBMaW5lOjogICAgICAgICAgICBXaW5k b3cgdGFiIGxpbmUuCisqIFdpbmRvdyBUb29sIEJhcjo6ICAgICBBIHRvb2wgYmFyIHRoYXQgaXMg YXR0YWNoZWQgdG8gd2luZG93cy4KIEBlbmQgbWVudQogCiBAbm9kZSBCYXNpYyBXaW5kb3cKQEAg LTY4OSwzICs2OTAsNTIgQEAgVGFiIExpbmUKIHN3aXRjaCBiZXR3ZWVuIHdpbmRvdyBjb25maWd1 cmF0aW9ucyBjb250YWluaW5nIHNldmVyYWwgd2luZG93cyB3aXRoIGJ1ZmZlcnMsCiB0YWJzIG9u IHRoZSBUYWIgTGluZSBhdCB0aGUgdG9wIG9mIGVhY2ggd2luZG93IGFyZSB1c2VkIHRvIHN3aXRj aAogYmV0d2VlbiBidWZmZXJzIGluIHRoZSB3aW5kb3cuCisKKworQG5vZGUgV2luZG93IFRvb2wg QmFyCitAc2VjdGlvbiBXaW5kb3cgVG9vbCBCYXIKKworQGNpbmRleCB3aW5kb3cgdG9vbCBiYXIK K0BjaW5kZXggbW9kZSwgd2luZG93IHRvb2wgYmFyCitAY2luZGV4IHRvb2wgYmFyLCBhdHRhY2hl ZCB0byB3aW5kb3cKKworQGZpbmRleCBnbG9iYWwtd2luZG93LXRvb2wtYmFyLW1vZGUKKyAgVGhl IGNvbW1hbmQgQGNvZGV7Z2xvYmFsLXdpbmRvdy10b29sLWJhci1tb2RlfSB0b2dnbGVzIHRoZSBk aXNwbGF5IG9mCithIHRvb2wgYmFyIGF0IHRoZSB0b3Agb2YgZWFjaCB3aW5kb3cuICBXaGVuIGVu YWJsZWQsIG11bHRpcGxlIHdpbmRvd3MKK2NhbiBkaXNwbGF5IHRoZWlyIG93biB0b29sIGJhciBz aW11bHRhbmVvdXNseS4gIFRvIGNvbnNlcnZlIHNwYWNlLCBhCit3aW5kb3cgdG9vbCBiYXIgaXMg b25seSBzaG93biBpZiB0aGUgdG9vbCBiYXIgZm9yIHRoZSB3aW5kb3cncyBkaXNwbGF5ZWQKK2J1 ZmZlciBoYXMgYSBkaWZmZXJlbnQgYmluZGluZyBmcm9tIHRoZSBnbG9iYWwgKGRlZmF1bHQpIHRv b2wgYmFyLiAgVGhlCittb3N0IGNvbW1vbiB3YXkgYSBidWZmZXIgaGFzIGEgZGlmZmVyZW50IGJp bmRpbmcgaXMgZHVlIHRvIGl0cyBtYWpvcgorbW9kZSwgc28geW91IGNhbiB0aGluayBvZiB0aGUg d2luZG93IHRvb2wgYmFyIGFzIHNob3dpbmcgYSBtYWpvciBtb2RlCitzcGVjaWZpYyB0b29sIGJh ciBpZiBpdCBleGlzdHMuCisKK1RoZXJlIGlzIGEgbGltaXRhdGlvbiB3aXRoIGhvdyB0aGlzIG1v ZGUgZGV0ZWN0cyB0aGF0IHRoZXJlIGlzIGEgbWFqb3IKK21vZGUgc3BlY2lmaWMgdG9vbCBiYXIu ICBUaGlzIGNoZWNrIGlzIG9ubHkgbWFkZSB3aGVuIGVudGVyaW5nIGEgbWFqb3IKK21vZGUuICBJ ZiB0aGUgZ2xvYmFsIG9yIG1ham9yIG1vZGUgc3BlY2lmaWMgdG9vbCBiYXIgYmluZGluZyBpcyBj aGFuZ2VkCit3aGlsZSBXaW5kb3cgVG9vbCBCYXIgbW9kZSBpcyBlbmFibGVkIGFuZCB0aGUgd2lu ZG93IHRvb2wgYmFyIGlzIG5vdAorc2hvd2luZywgcmUtZW50ZXJpbmcgdGhlIG1ham9yIG1vZGUs IGxpa2UgYnkgcnVubmluZyBAa2Jke00teAorbm9ybWFsLW1vZGV9LCB3aWxsIGNhdXNlIHRoZSB3 aW5kb3cgdG9vbCBiYXIgdG8gc2hvdyBjb3JyZWN0bHkuCisKK0BmaW5kZXggd2luZG93LXRvb2wt YmFyLW1vZGUKK0lmIHlvdSB3YW50IHRvIHRvZ2dsZSB0aGUgZGlzcGxheSBvZiBhIHdpbmRvdyB0 b29sIGJhciBmb3Igb25seSBzb21lCitidWZmZXJzLCBydW4gdGhlIGNvbW1hbmQgQGNvZGV7d2lu ZG93LXRvb2wtYmFyLW1vZGV9IGluIHRob3NlIGJ1ZmZlcnMuCitUaGlzIGlzIHVzZWZ1bCB0byBw dXQgaW4gYSBtb2RlIGhvb2suICBGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdGhlIHdpbmRvdwor dG9vbCBiYXIgdG8gYXBwZWFyIG9ubHkgZm9yIGJ1ZmZlcnMgdGhhdCBkbyBub3QgcmVwcmVzZW50 IGZpbGVzIGFuZCBoYXZlCithIGN1c3RvbSB0b29sIGJhciwgeW91IGNvdWxkIGFkZCB0aGUgZm9s bG93aW5nIGNvZGUgdG8geW91ciBpbml0IGZpbGUKKyhAcHhyZWZ7SW5pdCBGaWxlfSk6CisKK0Bl eGFtcGxlCisoYWRkLWhvb2sgJ3NwZWNpYWwtbW9kZS1ob29rICd3aW5kb3ctdG9vbC1iYXItbW9k ZSkKK0BlbmQgZXhhbXBsZQorCitFbWFjcyBjYW4gYWxzbyBkaXNwbGF5IGEgc2luZ2xlIHRvb2wg YmFyIGF0IHRoZSB0b3Agb2YgZnJhbWVzCisoQHB4cmVme1Rvb2wgQmFyc30pLiAgV2hlbiBzaG93 aW5nIGEgdG9vbCBiYXIgYXQgdGhlIHRvcCBvZiBmcmFtZXMgYXMKK3dlbGwgYXMgd2luZG93cywg eW91IG1heSB3YW50IHRvIGhhdmUgdGhlIGZyYW1lIHRvb2wgYmFyIG5vdCBjaGFuZ2UKK2Jhc2Vk IG9uIHRoZSBjdXJyZW50IGJ1ZmZlcidzIG1ham9yIG1vZGUuICBUaGlzIGNhbiBiZSBkb25lIGJ5 CitjdXN0b21pemluZyB0aGUgdmFyaWFibGUgQGNvZGV7dG9vbC1iYXItYWx3YXlzLXNob3ctZGVm YXVsdH0uCisKK05vdGUgdGhhdCB0aGUgd2luZG93IHRvb2wgYmFyIGRpc3BsYXlzIGluIHRoZSBz YW1lIHNwYWNlIGFzIHRoZSB0YWIKK2xpbmUsIHNvIG9ubHkgb25lIG9mIHRoZXNlIGNhbiBiZSBk aXNwbGF5IGF0IGEgdGltZSB1bmxlc3MgeW91IGN1c3RvbWl6ZQordGhlIHZhbHVlIG9mIEBjb2Rl e3RhYi1saW5lLWZvcm1hdH0gaW4gTGlzcC4gIEluIHRoaXMgY2FzZSwgYWRkCitAY29kZXsoOmV2 YWwgKHdpbmRvdy10b29sLWJhci1zdHJpbmcpKX0gdG8gQGNvZGV7dGFiLWxpbmUtZm9ybWF0fS4K K0B4cmVme01vZGUgTGluZSBGb3JtYXQsLCwgZWxpc3AsIFRoZSBFbWFjcyBMaXNwIFJlZmVyZW5j ZSBNYW51YWx9LgpkaWZmIC0tZ2l0IGEvZG9jL2xpc3ByZWYvZWxpc3AudGV4aSBiL2RvYy9saXNw cmVmL2VsaXNwLnRleGkKaW5kZXggMzM5MjcyZDFmMDUuLjEwNTlkMGRjZjYxIDEwMDY0NAotLS0g YS9kb2MvbGlzcHJlZi9lbGlzcC50ZXhpCisrKyBiL2RvYy9saXNwcmVmL2VsaXNwLnRleGkKQEAg LTkyNSw2ICs5MjUsNyBAQCBUb3AKICogJS1Db25zdHJ1Y3RzOjogICAgICAgICAgICBQdXR0aW5n IGluZm9ybWF0aW9uIGludG8gYSBtb2RlIGxpbmUuCiAqIFByb3BlcnRpZXMgaW4gTW9kZTo6ICAg ICAgVXNpbmcgdGV4dCBwcm9wZXJ0aWVzIGluIHRoZSBtb2RlIGxpbmUuCiAqIEhlYWRlciBMaW5l czo6ICAgICAgICAgICAgTGlrZSBhIG1vZGUgbGluZSwgYnV0IGF0IHRoZSB0b3AuCisqIFRhYiBM aW5lczo6ICAgICAgICAgICAgICAgQSBsaW5lIHRoYXQgaXMgYWJvdmUgdGhlIGhlYWRlciBsaW5l LgogKiBFbXVsYXRpbmcgTW9kZSBMaW5lOjogICAgIEZvcm1hdHRpbmcgdGV4dCBhcyB0aGUgbW9k ZSBsaW5lIHdvdWxkLgogCiBGb250IExvY2sgTW9kZQpkaWZmIC0tZ2l0IGEvZG9jL2xpc3ByZWYv bW9kZXMudGV4aSBiL2RvYy9saXNwcmVmL21vZGVzLnRleGkKaW5kZXggY2Y2N2IzMTk5MjQuLmYz ZDRmNTM0N2IzIDEwMDY0NAotLS0gYS9kb2MvbGlzcHJlZi9tb2Rlcy50ZXhpCisrKyBiL2RvYy9s aXNwcmVmL21vZGVzLnRleGkKQEAgLTIwNzQsMTQgKzIwNzQsMTQgQEAgTW9kZSBMaW5lIEZvcm1h dAogbGluZSBhdCB0aGUgYm90dG9tLCB3aGljaCBkaXNwbGF5cyBzdGF0dXMgaW5mb3JtYXRpb24g YWJvdXQgdGhlIGJ1ZmZlcgogZGlzcGxheWVkIGluIHRoZSB3aW5kb3cuICBUaGUgbW9kZSBsaW5l IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZQogYnVmZmVyLCBzdWNoIGFzIGl0cyBuYW1l LCBhc3NvY2lhdGVkIGZpbGUsIGRlcHRoIG9mIHJlY3Vyc2l2ZSBlZGl0aW5nLAotYW5kIG1ham9y IGFuZCBtaW5vciBtb2Rlcy4gIEEgd2luZG93IGNhbiBhbHNvIGhhdmUgYSBAZGZue2hlYWRlcgot bGluZX0sIHdoaWNoIGlzIG11Y2ggbGlrZSB0aGUgbW9kZSBsaW5lIGJ1dCBhcHBlYXJzIGF0IHRo ZSB0b3Agb2YgdGhlCi13aW5kb3cuCithbmQgbWFqb3IgYW5kIG1pbm9yIG1vZGVzLiAgQSB3aW5k b3cgY2FuIGFsc28gaGF2ZSBhIEBkZm57aGVhZGVyIGxpbmV9CithbmQgYSBAZGZue3RhYiBsaW5l fSwgd2hpY2ggYXJlIG11Y2ggbGlrZSB0aGUgbW9kZSBsaW5lIGJ1dCB0aGV5IGFwcGVhcgorYXQg dGhlIHRvcCBvZiB0aGUgd2luZG93LgogCi0gIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgaG93IHRv IGNvbnRyb2wgdGhlIGNvbnRlbnRzIG9mIHRoZSBtb2RlIGxpbmUKLWFuZCBoZWFkZXIgbGluZS4g IFdlIGluY2x1ZGUgaXQgaW4gdGhpcyBjaGFwdGVyIGJlY2F1c2UgbXVjaCBvZiB0aGUKLWluZm9y bWF0aW9uIGRpc3BsYXllZCBpbiB0aGUgbW9kZSBsaW5lIHJlbGF0ZXMgdG8gdGhlIGVuYWJsZWQg bWFqb3IgYW5kCi1taW5vciBtb2Rlcy4KKyAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBob3cgdG8g Y29udHJvbCB0aGUgY29udGVudHMgb2YgdGhlIG1vZGUgbGluZSwKK2hlYWRlciBsaW5lLCBhbmQg dGFiIGxpbmUuICBXZSBpbmNsdWRlIGl0IGluIHRoaXMgY2hhcHRlciBiZWNhdXNlIG11Y2gKK29m IHRoZSBpbmZvcm1hdGlvbiBkaXNwbGF5ZWQgaW4gdGhlIG1vZGUgbGluZSByZWxhdGVzIHRvIHRo ZSBlbmFibGVkCittYWpvciBhbmQgbWlub3IgbW9kZXMuCiAKIEBtZW51CiAqIEJhc2U6IE1vZGUg TGluZSBCYXNpY3MuICAgICAgIEJhc2ljIGlkZWFzIG9mIG1vZGUgbGluZSBjb250cm9sLgpAQCAt MjA5MSw2ICsyMDkxLDcgQEAgTW9kZSBMaW5lIEZvcm1hdAogKiAlLUNvbnN0cnVjdHM6OiAgICAg ICAgICAgICAgICBQdXR0aW5nIGluZm9ybWF0aW9uIGludG8gYSBtb2RlIGxpbmUuCiAqIFByb3Bl cnRpZXMgaW4gTW9kZTo6ICAgICAgICAgIFVzaW5nIHRleHQgcHJvcGVydGllcyBpbiB0aGUgbW9k ZSBsaW5lLgogKiBIZWFkZXIgTGluZXM6OiAgICAgICAgICAgICAgICBMaWtlIGEgbW9kZSBsaW5l LCBidXQgYXQgdGhlIHRvcC4KKyogVGFiIExpbmVzOjogICAgICAgICAgICAgICAgICAgQSBsaW5l IHRoYXQgaXMgYWJvdmUgdGhlIGhlYWRlciBsaW5lLgogKiBFbXVsYXRpbmcgTW9kZSBMaW5lOjog ICAgICAgICBGb3JtYXR0aW5nIHRleHQgYXMgdGhlIG1vZGUgbGluZSB3b3VsZC4KIEBlbmQgbWVu dQogCkBAIC0yMTAxLDExICsyMTAyLDEzIEBAIE1vZGUgTGluZSBCYXNpY3MKIHZhcmlhYmxlIEBj b2Rle21vZGUtbGluZS1mb3JtYXR9IChAcHhyZWZ7TW9kZSBMaW5lIFRvcH0pLiAgVGhpcyB2YXJp YWJsZQogaG9sZHMgYSBAZGZue21vZGUgbGluZSBjb25zdHJ1Y3R9OiBhIHRlbXBsYXRlIHRoYXQg Y29udHJvbHMgd2hhdCBpcwogZGlzcGxheWVkIG9uIHRoZSBidWZmZXIncyBtb2RlIGxpbmUuICBU aGUgdmFsdWUgb2YKLUBjb2Rle2hlYWRlci1saW5lLWZvcm1hdH0gc3BlY2lmaWVzIHRoZSBidWZm ZXIncyBoZWFkZXIgbGluZSBpbiB0aGUgc2FtZQotd2F5LiAgQWxsIHdpbmRvd3MgZm9yIHRoZSBz YW1lIGJ1ZmZlciB1c2UgdGhlIHNhbWUKLUBjb2Rle21vZGUtbGluZS1mb3JtYXR9IGFuZCBAY29k ZXtoZWFkZXItbGluZS1mb3JtYXR9IHVubGVzcyBhCi1AY29kZXttb2RlLWxpbmUtZm9ybWF0fSBv ciBAY29kZXtoZWFkZXItbGluZS1mb3JtYXR9IHBhcmFtZXRlciBoYXMgYmVlbgotc3BlY2lmaWVk IGZvciB0aGF0IHdpbmRvdyAoQHB4cmVme1dpbmRvdyBQYXJhbWV0ZXJzfSkuCitAY29kZXtoZWFk ZXItbGluZS1mb3JtYXR9IGFuZCBAY29kZXt0YWItbGluZS1mb3JtYXR9IHNwZWNpZmllcyB0aGUK K2J1ZmZlcidzIGhlYWRlciBsaW5lIGFuZCB0YWIgbGluZSBpbiB0aGUgc2FtZSB3YXkuICBBbGwg d2luZG93cyBmb3IgdGhlCitzYW1lIGJ1ZmZlciB1c2UgdGhlIHNhbWUgQGNvZGV7bW9kZS1saW5l LWZvcm1hdH0sCitAY29kZXtoZWFkZXItbGluZS1mb3JtYXR9LCBhbmQgQGNvZGV7dGFiLWxpbmUt Zm9ybWF0fSB1bmxlc3MgYQorQGNvZGV7bW9kZS1saW5lLWZvcm1hdH0sIEBjb2Rle2hlYWRlci1s aW5lLWZvcm1hdH0sIG9yCitAY29kZXt0YWItbGluZS1mb3JtYXR9IHBhcmFtZXRlciBoYXMgYmVl biBzcGVjaWZpZWQgZm9yIHRoYXQgd2luZG93CisoQHB4cmVme1dpbmRvdyBQYXJhbWV0ZXJzfSku CiAKICAgRm9yIGVmZmljaWVuY3ksIEVtYWNzIGRvZXMgbm90IGNvbnRpbnVvdXNseSByZWNvbXB1 dGUgZWFjaCB3aW5kb3cncwogbW9kZSBsaW5lIGFuZCBoZWFkZXIgbGluZS4gIEl0IGRvZXMgc28g d2hlbiBjaXJjdW1zdGFuY2VzIGFwcGVhciB0byBjYWxsCkBAIC0yMTY3LDggKzIxNzAsOCBAQCBN b2RlIExpbmUgRGF0YQogQGRmbnttb2RlIGxpbmUgY29uc3RydWN0fSwgbWFkZSB1cCBvZiBsaXN0 cywgc3RyaW5ncywgc3ltYm9scywgYW5kCiBudW1iZXJzIGtlcHQgaW4gYnVmZmVyLWxvY2FsIHZh cmlhYmxlcy4gIEVhY2ggZGF0YSB0eXBlIGhhcyBhIHNwZWNpZmljCiBtZWFuaW5nIGZvciB0aGUg bW9kZSBsaW5lIGFwcGVhcmFuY2UsIGFzIGRlc2NyaWJlZCBiZWxvdy4gIFRoZSBzYW1lIGRhdGEK LXN0cnVjdHVyZSBpcyB1c2VkIGZvciBjb25zdHJ1Y3RpbmcgZnJhbWUgdGl0bGVzIChAcHhyZWZ7 RnJhbWUgVGl0bGVzfSkKLWFuZCBoZWFkZXIgbGluZXMgKEBweHJlZntIZWFkZXIgTGluZXN9KS4K K3N0cnVjdHVyZSBpcyB1c2VkIGZvciBjb25zdHJ1Y3RpbmcgZnJhbWUgdGl0bGVzIChAcHhyZWZ7 RnJhbWUgVGl0bGVzfSksCitoZWFkZXIgbGluZXMgKEBweHJlZntIZWFkZXIgTGluZXN9KSwgYW5k IHRhYiBsaW5lcyAoQHB4cmVme1RhYiBMaW5lc30pLgogCiAgIEEgbW9kZSBsaW5lIGNvbnN0cnVj dCBtYXkgYmUgYXMgc2ltcGxlIGFzIGEgZml4ZWQgc3RyaW5nIG9mIHRleHQsCiBidXQgaXQgdXN1 YWxseSBzcGVjaWZpZXMgaG93IHRvIGNvbWJpbmUgZml4ZWQgc3RyaW5ncyB3aXRoIHZhcmlhYmxl cycKQEAgLTI4MTYsNiArMjgxOSwzMSBAQCBIZWFkZXIgTGluZXMKIGhlYWRlciBsaW5lIGF0IG9u Y2U7IGlmIGl0IGhhcyBhIG1vZGUgbGluZSwgdGhlbiBpdCBkb2VzIG5vdCBkaXNwbGF5IGEKIGhl YWRlciBsaW5lLgogCitAbm9kZSBUYWIgTGluZXMKK0BzdWJzZWN0aW9uIFdpbmRvdyBUYWIgTGlu ZXMKK0BjaW5kZXggdGFiIGxpbmUgKG9mIGEgd2luZG93KQorQGNpbmRleCB3aW5kb3cgdGFiIGxp bmUKKworICBBIHdpbmRvdyBjYW4gaGF2ZSBhIEBkZm57dGFiIGxpbmV9IGF0IHRoZSB0b3AuICBJ ZiBib3RoIHRoZSB0YWIgbGluZQorYW5kIGhlYWRlciBsaW5lIGFyZSB2aXNpYmxlLCB0aGUgdGFi IGxpbmUgYXBwZWFycyBhYm92ZSB0aGUgaGVhZGVyIGxpbmUuCitUaGUgdGFiIGxpbmUgZmVhdHVy ZSBpcyBjb250cm9sbGVkIGxpa2UgdGhlIG1vZGUgbGluZSBmZWF0dXJlLCBleGNlcHQKK3RoYXQg aXQncyBjb250cm9sbGVkIGJ5IEBjb2Rle3RhYi1saW5lLWZvcm1hdH0uICBVbmxpa2UgdGhlIG1v ZGUgbGluZSwKK3RoZSB0YWIgbGluZSBpcyBvbmx5IGV4cGVjdGVkIHRvIGJlIHVzZWQgdG8gZGlz cGxheSBhIGxpc3Qgb2YgdGFicworKEBweHJlZntUYWIgTGluZSwsLCBlbWFjcywgVGhlIEdOVSBF bWFjcyBNYW51YWx9KSBvciB0aGUgd2luZG93Cit0b29sIGJhciAoQHB4cmVme1dpbmRvdyBUb29s IEJhciwsLCBlbWFjcywgVGhlIEdOVSBFbWFjcyBNYW51YWx9KToKKworQGRlZnZhciB0YWItbGlu ZS1mb3JtYXQKK1RoaXMgdmFyaWFibGUsIGxvY2FsIGluIGV2ZXJ5IGJ1ZmZlciwgc3BlY2lmaWVz IGhvdyB0byBkaXNwbGF5IHRoZSB0YWIKK2xpbmUsIGZvciB3aW5kb3dzIGRpc3BsYXlpbmcgdGhl IGJ1ZmZlci4gIFRoZSBmb3JtYXQgb2YgdGhlIHZhbHVlIGlzIHRoZQorc2FtZSBhcyBmb3IgQGNv ZGV7bW9kZS1saW5lLWZvcm1hdH0gKEBweHJlZntNb2RlIExpbmUgRGF0YX0pLiAgSXQgaXMKK25v cm1hbGx5IEBjb2Rle25pbH0sIHNvIHRoYXQgb3JkaW5hcnkgYnVmZmVycyBoYXZlIG5vIHRhYiBs aW5lLgorQGVuZCBkZWZ2YXIKKworQGRlZnVuIHdpbmRvdy10YWItbGluZS1oZWlnaHQgJm9wdGlv bmFsIHdpbmRvdworVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBoZWlnaHQgaW4gcGl4ZWxzIG9m IEB2YXJ7d2luZG93fSdzIHRhYiBsaW5lLgorQHZhcnt3aW5kb3d9IG11c3QgYmUgYSBsaXZlIHdp bmRvdywgYW5kIGRlZmF1bHRzIHRvIHRoZSBzZWxlY3RlZCB3aW5kb3cuCitAZW5kIGRlZnVuCisK IEBub2RlIEVtdWxhdGluZyBNb2RlIExpbmUKIEBzdWJzZWN0aW9uIEVtdWxhdGluZyBNb2RlIExp bmUgRm9ybWF0dGluZwogCmRpZmYgLS1naXQgYS9ldGMvTkVXUyBiL2V0Yy9ORVdTCmluZGV4IGQ3 MmVmNWI1YmVmLi42MjAyYTBjYjJhOCAxMDA2NDQKLS0tIGEvZXRjL05FV1MKKysrIGIvZXRjL05F V1MKQEAgLTI0MCw2ICsyNDAsMTIgQEAgd2luZG93IHN5c3RlbXMgb3RoZXIgdGhhbiBOZXh0c3Rl cC4KIFdoZW4gdGhpcyBtaW5vciBtb2RlIGlzIGVuYWJsZWQsIGJ1dHRvbnMgcmVwcmVzZW50aW5n IG1vZGlmaWVyIGtleXMKIGFyZSBkaXNwbGF5ZWQgYWxvbmcgdGhlIHRvb2wgYmFyLgogCisrKysK KyoqIE5ldyB1c2VyIG9wdGlvbiAndG9vbC1iYXItYWx3YXlzLXNob3ctZGVmYXVsdCcuCitXaGVu IG5vbi1uaWwsIHRoZSB0b29sIGJhciBhdCB0aGUgdG9wIG9mIGEgZnJhbWUgZG9lcyBub3Qgc2hv dyBidWZmZXIKK2xvY2FsIGN1c3RvbWl6YXRpb24gb2YgdGhlIHRvb2wgYmFyLiAgVGhpcyBpcyBj b252ZW5pZW50IHdoZW4gdXNpbmcgdGhlCituZXdseSBhZGRlZCAnZ2xvYmFsLXdpbmRvdy10b29s LWJhci1tb2RlJy4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIG5pbC4KKwogKysrCiAqKiAiZCIgaW4g dGhlIG1vZGUgbGluZSBub3cgaW5kaWNhdGVzIHRoYXQgdGhlIHdpbmRvdyBpcyBkZWRpY2F0ZWQu CiBXaW5kb3dzIGhhdmUgYWx3YXlzIGJlZW4gYWJsZSB0byBiZSBkZWRpY2F0ZWQgdG8gYSBzcGVj aWZpYyBidWZmZXI7CkBAIC0xODc3LDYgKzE4ODMsMTQgQEAgdGhhbiByZWd1bGFyIGV4cHJlc3Np b25zLCBidXQgbGVzcyBjb21wbGV4aXR5IHRoYW4gY29udGV4dC1mcmVlCiBncmFtbWFycy4gIFRo ZSBJbmZvIG1hbnVhbCAiKGVsaXNwKSBQYXJzaW5nIEV4cHJlc3Npb24gR3JhbW1hcnMiIGhhcwog ZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXMuCiAKKysrKworKiogTmV3IHBhY2thZ2UgV2luZG93 LVRvb2wtQmFyLgorVGhpcyBwcm92aWRlcyBhIG5ldyBtaW5vciBtb2RlLCAnd2luZG93LXRvb2wt YmFyLW1vZGUnLiAgV2hlbiB0aGlzIG1pbm9yCittb2RlIGlzIGVuYWJsZWQsIGEgdG9vbCBiYXIg aXMgZGlzcGxheWVkIGF0IHRoZSB0b3Agb2YgYSB3aW5kb3cgaWYgdGhlCitidWZmZXIgaW4gdGhl IHdpbmRvdyBoYXMgYSBidWZmZXIgbG9jYWwgdG9vbCBiYXIsIGNvbW1vbmx5IGZyb20gaXRzCitt YWpvciBtb2RlLiAgVGhlIGdsb2JhbCBtaW5vciBtb2RlICdnbG9iYWwtd2luZG93LXRvb2wtYmFy LW1vZGUnIGVuYWJsZXMKK3RoaXMgbWlub3IgbW9kZSBpbiBhbGwgYnVmZmVycy4KKwogDAogKiBJ bmNvbXBhdGlibGUgTGlzcCBDaGFuZ2VzIGluIEVtYWNzIDMwLjEKIAotLSAKMi4zOS4yCgo= --=_1bbc60d09472d5dd2a966e06cfde9c08-- From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 02 01:22:26 2024 Received: (at 68765) by debbugs.gnu.org; 2 Jun 2024 05:22:26 +0000 Received: from localhost ([127.0.0.1]:57670 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sDdfl-0004Rc-Tf for submit@debbugs.gnu.org; Sun, 02 Jun 2024 01:22:26 -0400 Received: from eggs.gnu.org ([209.51.188.92]:53492) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sDdfi-0004RD-BL for 68765@debbugs.gnu.org; Sun, 02 Jun 2024 01:22:23 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sDdfO-0008Ju-A4; Sun, 02 Jun 2024 01:22:02 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=/1xCDrixz/1JS82/s9hncjfFGsi/lM6lc7UuG1plQKY=; b=hbKVzv9zcUbr QetnY3bjUWXXNS0/1gpv5anNbWTQeTYavThp8iI43vxrYnIyA+oECEWnozTXOFccw5msjNwRSgQEe kh1gHA5AVUD4KAM4xeXUhS6B2AgZAD9070fT90DLaOdlxw/BB/u7nrRWqaH0Std0feKMORVbuTOgI Q4Tvc3yp7J3EbjzPohUvxgwWbQERY9fYZvKvmzbHbI0jdvygbFqww9gsJ0MpuVhLlBffoeYIheHaZ 5DDbEamdQVKcU+FOdHsnOAZyRG85IHL04GnhkoPaFdeb+QFXRMBVOxsulFD51SAZfh0CYMORWH5pd Al3kJ9IQj2Cm9xPNTsprNQ==; Date: Sun, 02 Jun 2024 08:21:58 +0300 Message-Id: <864jabor61.fsf@gnu.org> From: Eli Zaretskii To: Jared Finder In-Reply-To: (message from Jared Finder on Sat, 01 Jun 2024 21:17:58 -0700) Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86frufe9i9.fsf@gnu.org> <8cfec392c3f9259b7499ebd4f605bc25@finder.org> <86pltib8m7.fsf@gnu.org> <1d18b11671667fefa925dbc41423d547@finder.org> <86cypd58ak.fsf@gnu.org> <8dbddd7bed38100561a1555da18a3a08@finder.org> <86ttilygb6.fsf@gnu.org> <67cc1f1b694041bfaf12dab7ef161ec8@finder.org> <86o78sx5z4.fsf@gnu.org> <65a70df3c5e0edf72fb6d6e1dda99c22@finder.org> <861q5owh5v.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sat, 01 Jun 2024 21:17:58 -0700 > From: Jared Finder > Cc: juri@linkov.net, 68765@debbugs.gnu.org, philipk@posteo.net, > monnier@iro.umontreal.ca > > >> > So, let me understand what happens under this global mode. By > >> > default, the frame's tool bar changes according to the major mode of > >> > the buffer shown in the frame's selected window. As a very frequent > >> > example, entering the minibuffer from a buffer whose mode is, say, > >> > Dired or Rmail or Info, changes the tool bar. When that happens, some > >> > windows which previously didn't display their tool bar because it was > >> > identical to the frame's tool bar will now display their tool bars. > >> > Right? And when you exit the minibuffer, those window-specific tool > >> > bars will again disappear, right? Wouldn't that cause annoying > >> > flickering of the display? (I know that setting > >> > tool-bar-always-show-default non-nil can prevent that, but I'm asking > >> > about the default behavior.) > >> > >> No, this is not the behavior. The window tool bar displays that > >> buffer's binding of . The window tool bar is displayed in > >> the > >> tab line of each window and doesn't pay attention to what the current > >> buffer or window is. > > > > But this means that the following text: > > > >>> To conserve space, > >>> a window tool bar is only shown if the tool bar for that window's > >>> current buffer is different from the global (default) tool bar > > > > is at least inaccurate. Specifically, if the frame's global tool bar > > changes as result of some command, the identity of the tool bars of > > windows to that of the frame is not re-examined. So if some window > > decided that its tool bar is not to be displayed, it will remain > > undisplayed until that window shows a different buffer or its buffer > > changes its major mode. Is that correct? If not, why not? > > Your understanding here is accurate. I consider this behavior a bug > that I'd like to fix (in normal use it rarely happens). If this is a bug which we will fix, then it gets me back to my question above: Wouldn't these changes in window tool bars cause annoying flickering of the display that distract the user's attention? > I suppose I could use add-variable-watcher to detect all changes to > tool-bar-map and update tool bar visibility. I'd like to make sure > to do this correctly and not cause a significant performance hit. There should be no need to use watchers. You can instead add a function to pre-redisplay-function hook. This hook is called each time Emacs is about to update the menu bar and the tool bar of some frames. > Should such a temporary limitation be documented in the manual? I added > a section to describe this limitation to my patch, but I don't know if > it is appropriate. No, if this is a bug, we don't describe them in the manual. > > I'm beginning to think that the feature whereby we don't display the > > window's tool bar under some conditions "to conserve space" is more > > confusing and hard to document than is useful, and perhaps we should > > simply show the window's tool bar unconditionally? > > I find it really useful to have this auto-show/hide behavior. As I > wrote in the docs, "you can think of the window tool bar as showing a > major mode specific tool bar if it exists". That's okay, I'm just saying that if the window's major mode has its own tool bar, we should show that tool bar on a window regardless of whether the frame's tool bar shows the same buttons. > The most prominent other source of a custom tool bar is isearch. Oh, there are many more modes that customize the tool bar in important ways. Help mode, Info mode, Customize, GUD modes, email modes, Grep, and EWW, to name just a few popular ones. > Having no space taken up when editing a text file, then having the > tool bar appear when I hit C-s lines up with what I see in many > other programs. I'd be sad to see this behavior removed. That's not what I'm talking about. I'm talking about removing the window's tool bar because the frame's tool bar became identical to it. Here's a scenario: . you have a frame with Info mode and some other mode . the frame's tool bar is the default one, and the window under Info shows its own tool bar from info.el . now I type "C-h i" in the window that was previously in mode other than Info -- now the frame's tool bar is the one from Info mode, and suddenly the other window loses its window-specific tool bar! IOW, what bothers me is that we _remove_ the window's tool bar because the frame-global tool bar changed. And you just confirmed above that, while currently this is not the behavior, you'd like to fix the code so it _is_ the behavior. Am I missing something? > + On graphical displays, Emacs puts a @dfn{tool bar} at the top of each > +frame, just below the menu bar. This is a row of icons which you can ^^^^^ "buttons with icons" > +The tool bar is a line (sometimes multiple lines) of icons at the top of ^^^^^ Likewise. > + The command @code{global-window-tool-bar-mode} toggles the display of > +a tool bar at the top of each window. When enabled, multiple windows > +can display their own tool bar simultaneously. To conserve space, a > +window tool bar is only shown if the tool bar for the window's displayed > +buffer has a different binding from the global (default) tool bar. The This should explain what does "global (default) tool bar" mean. My understanding is that this is the tool bar shown for the frame, which will continue working as it does now, i.e. be determined by the major mode of the frame's selected window. > +Emacs can also display a single tool bar at the top of frames > +(@pxref{Tool Bars}). When showing a tool bar at the top of frames as > +well as windows, you may want to have the frame tool bar not change > +based on the current buffer's major mode. There's a subtlety here: the frame's tool bar is determined by the major mode of the buffer shown in the frame's selected window, not by the current buffer (which is a single buffer, not per frame). From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 02 11:58:09 2024 Received: (at 68765) by debbugs.gnu.org; 2 Jun 2024 15:58:10 +0000 Received: from localhost ([127.0.0.1]:60186 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sDnaz-0003QX-AT for submit@debbugs.gnu.org; Sun, 02 Jun 2024 11:58:09 -0400 Received: from greenhill.hpalace.com ([192.155.80.58]:51938) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sDnav-0003QN-AN for 68765@debbugs.gnu.org; Sun, 02 Jun 2024 11:58:08 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=finder.org; s=2018; t=1717343872; bh=t+puzp+Sc08Vlp7dKC8GjzC4yuKtiY/62vvpRmCIvmI=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=0oSNT4nwEbCZH5EYu5aPpB5Xw6JlTRjWJR6X8+8LARQSc/9rnsmmZQII8wrK2mYFc 3zEV/GU69hGSTJf93uRpglf3vBhGv1Nu0t97q4w8smWPZjCxlxOZVG7kZTzL9G6eba eIf0eKvpBMeffzaf6AZCeY3GlEmWLFHPqeY8292mtaJ31zs06l9CJRvSdrVzhcwRfa hFh+8EOlwMAZJ7P8btxqRonl3yOJgG9wrRJm1vd355qarMV4jvd6cHyCwU03iQpbj0 qAbHdHIgwM9hlDeRKTo61wWOpxyGOQesnl9YtdtD3GZXA/Ka2ktIjoydHXZpx0XHdc odO4x4grCgh3Q== Received: from mail.finder.org (unknown [192.155.80.58]) by greenhill.hpalace.com (Postfix) with ESMTPSA id 4A2A97A1; Sun, 2 Jun 2024 15:57:52 +0000 (UTC) MIME-Version: 1.0 Date: Sun, 02 Jun 2024 08:57:52 -0700 From: Jared Finder To: Eli Zaretskii Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <864jabor61.fsf@gnu.org> References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86frufe9i9.fsf@gnu.org> <8cfec392c3f9259b7499ebd4f605bc25@finder.org> <86pltib8m7.fsf@gnu.org> <1d18b11671667fefa925dbc41423d547@finder.org> <86cypd58ak.fsf@gnu.org> <8dbddd7bed38100561a1555da18a3a08@finder.org> <86ttilygb6.fsf@gnu.org> <67cc1f1b694041bfaf12dab7ef161ec8@finder.org> <86o78sx5z4.fsf@gnu.org> <65a70df3c5e0edf72fb6d6e1dda99c22@finder.org> <861q5owh5v.fsf@gnu.org> <864jabor61.fsf@gnu.org> Message-ID: X-Sender: jared@finder.org Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) (I mistakenly sent this to just Eli. Sorry about that!) On 2024-06-02 08:56, Jared Finder wrote: > On 2024-06-01 22:21, Eli Zaretskii wrote: >>> Date: Sat, 01 Jun 2024 21:17:58 -0700 >>> From: Jared Finder >>> Cc: juri@linkov.net, 68765@debbugs.gnu.org, philipk@posteo.net, >>> monnier@iro.umontreal.ca >>> >>> > I'm beginning to think that the feature whereby we don't display the >>> > window's tool bar under some conditions "to conserve space" is more >>> > confusing and hard to document than is useful, and perhaps we should >>> > simply show the window's tool bar unconditionally? >>> >>> I find it really useful to have this auto-show/hide behavior. As I >>> wrote in the docs, "you can think of the window tool bar as showing a >>> major mode specific tool bar if it exists". >> >> That's okay, I'm just saying that if the window's major mode has its >> own tool bar, we should show that tool bar on a window regardless of >> whether the frame's tool bar shows the same buttons. > > > >>> + The command @code{global-window-tool-bar-mode} toggles the display >>> of >>> +a tool bar at the top of each window. When enabled, multiple >>> windows >>> +can display their own tool bar simultaneously. To conserve space, a >>> +window tool bar is only shown if the tool bar for the window's >>> displayed >>> +buffer has a different binding from the global (default) tool bar. >>> The >> >> This should explain what does "global (default) tool bar" mean. My >> understanding is that this is the tool bar shown for the frame, which >> will continue working as it does now, i.e. be determined by the major >> mode of the frame's selected window. > > > >>> Having no space taken up when editing a text file, then having the >>> tool bar appear when I hit C-s lines up with what I see in many >>> other programs. I'd be sad to see this behavior removed. >> >> That's not what I'm talking about. I'm talking about removing the >> window's tool bar because the frame's tool bar became identical to it. >> Here's a scenario: >> >> . you have a frame with Info mode and some other mode >> . the frame's tool bar is the default one, and the window under Info >> shows its own tool bar from info.el >> . now I type "C-h i" in the window that was previously in mode other >> than Info -- now the frame's tool bar is the one from Info mode, >> and suddenly the other window loses its window-specific tool bar! >> >> IOW, what bothers me is that we _remove_ the window's tool bar because >> the frame-global tool bar changed. And you just confirmed above that, >> while currently this is not the behavior, you'd like to fix the code >> so it _is_ the behavior. >> >> Am I missing something? > > There's a misunderstanding here. Can you please suggest how I can > change the documentation? I'm not sure why the documentation I wrote > is confusing. > > Let me explicitly describe the terms I am using: > > When I write "the global (default) tool bar", that refers to the value > of (default-value 'tool-bar-map). It's the tool bar with New File, > Open File, Open Directory, Kill Buffer, Save, Undo, Cut, Copy, Paste, > Isearch. This doesn't change with major mode. As far as I can tell, > it doesn't change during normal Emacs operations (unless a user chooses > to modify it, of course). > > When I write "the frame tool bar", that refers to the tool bar > displayed at the top of a frame, as controlled by M-x tool-bar-mode. > There is no change of behavior here except for the new user option > tool-bar-always-show-default. > > When I write "the window tool bar", that refers to the tool bar > displayed at the top of a window, as controlled by (newly added) M-x > window-tool-bar-mode or M-x global-window-tool-bar-mode. The window > tool bar displays the value of tool-bar-map the window's displayed > buffer. But it only displays that tool bar if it is not the same as > the global (default) tool bar. It does not pay attention to the frame > tool bar. Specifically, the test is: > > (eq tool-bar-map ;a buffer's tool bar > (default-value 'tool-bar-map) ;the global (default) tool bar > ) > > I hope from the above description it is clear that switching windows > does not cause the window tool bar to flicker as the window tool bar > doesn't care what the frame tool bar shows. > >>> The most prominent other source of a custom tool bar is isearch. >> >> Oh, there are many more modes that customize the tool bar in important >> ways. Help mode, Info mode, Customize, GUD modes, email modes, Grep, >> and EWW, to name just a few popular ones. > > Are there any others that are minor modes like isearch? I ask because > the "only display when tool bar is different" check isn't run on minor > mode changes. That's the bug I'm referring to that I'd like to fix. > Currently Window Tool Bar mode adds a function to isearch-mode-hook and > isearch-mode-end-hook to work properly with isearch. I would prefer a > generic way to handle this. > > > All other suggested changes I'll add to my next patch. I'm just > waiting to figure out how to properly document the above > misunderstanding. > > -- MJF From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 02 12:47:24 2024 Received: (at 68765) by debbugs.gnu.org; 2 Jun 2024 16:47:24 +0000 Received: from localhost ([127.0.0.1]:60203 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sDoMd-0004cR-P7 for submit@debbugs.gnu.org; Sun, 02 Jun 2024 12:47:24 -0400 Received: from eggs.gnu.org ([209.51.188.92]:50192) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sDoMZ-0004cC-It for 68765@debbugs.gnu.org; Sun, 02 Jun 2024 12:47:22 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sDoME-0003zG-4f; Sun, 02 Jun 2024 12:46:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=CxwEaDj+imlfu6H24g5mq7dEQXMIyENBGTcYuVLcVGg=; b=N91rAvTxrT6u ah3R0YxZtdrRxQ9wk30jz0sYjS8c+brmpZIX7sfcEko1elTuuWUWxuSNkAPMtz+kSSVBYAN3rCu6+ Dpa2upp2VR/uFpgGwTlgWHsHi77ihOPjVg3X1x/Lpdnm3miC1FjHhZAu6fe2t5SK79zt1xyWX4JoZ kQojadL5sOZMt95SJKUujp3AqCEbqBGDaK+qZy/eGrYD5YzTxqWFbFKtyAtxfRSzSOWxq5WXiSI+B UOqwqGiGmDPFaIwAikYeFilhwVkoHS8n5eP51ltLr7dn3QWr7mqV+DWpo35hhfdSYrSgzcN0al011 YkME2FVmYfWhv6HxyWcnqg==; Date: Sun, 02 Jun 2024 19:46:55 +0300 Message-Id: <86a5k3mgw0.fsf@gnu.org> From: Eli Zaretskii To: Jared Finder In-Reply-To: (message from Jared Finder on Sun, 02 Jun 2024 08:57:52 -0700) Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> <86frufe9i9.fsf@gnu.org> <8cfec392c3f9259b7499ebd4f605bc25@finder.org> <86pltib8m7.fsf@gnu.org> <1d18b11671667fefa925dbc41423d547@finder.org> <86cypd58ak.fsf@gnu.org> <8dbddd7bed38100561a1555da18a3a08@finder.org> <86ttilygb6.fsf@gnu.org> <67cc1f1b694041bfaf12dab7ef161ec8@finder.org> <86o78sx5z4.fsf@gnu.org> <65a70df3c5e0edf72fb6d6e1dda99c22@finder.org> <861q5owh5v.fsf@gnu.org> <864jabor61.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sun, 02 Jun 2024 08:57:52 -0700 > From: Jared Finder > Cc: juri@linkov.net, 68765@debbugs.gnu.org, philipk@posteo.net, > monnier@iro.umontreal.ca > There's a misunderstanding here. Can you please suggest how I can > change the documentation? I'm not sure why the documentation I wrote > is confusing. My problem for now is not with the documentation, it is with the behavior. When we agree on the behavior, we will be able to describe it clearly. > Let me explicitly describe the terms I am using: > > When I write "the global (default) tool bar", that refers to the value > of (default-value 'tool-bar-map). It's the tool bar with New File, > Open File, Open Directory, Kill Buffer, Save, Undo, Cut, Copy, Paste, > Isearch. This doesn't change with major mode. As far as I can tell, > it doesn't change during normal Emacs operations (unless a user chooses > to modify it, of course). > > When I write "the frame tool bar", that refers to the tool bar > displayed at the top of a frame, as controlled by M-x tool-bar-mode. > There is no change of behavior here except for the new user option > tool-bar-always-show-default. > > When I write "the window tool bar", that refers to the tool bar > displayed at the top of a window, as controlled by (newly added) M-x > window-tool-bar-mode or M-x global-window-tool-bar-mode. The window > tool bar displays the value of tool-bar-map the window's displayed > buffer. But it only displays that tool bar if it is not the same as > the global (default) tool bar. It does not pay attention to the frame > tool bar. Specifically, the test is: > > (eq tool-bar-map ;a buffer's tool bar > (default-value 'tool-bar-map) ;the global (default) tool bar > ) So a window under, say, Info mode will show the Info tool bar even though the frame also shows that tool bar, just because that tool bar is different from the default value of tool-bar-map? Why is this behavior useful? How about if we make the behavior simpler and more predictable: If a window's buffer has a non-nil value of window-toolbar-mode, show the window-specific tool bar regardless of what it is and whether it is the same as the default. Why is this not good enough? From debbugs-submit-bounces@debbugs.gnu.org Tue Jun 04 01:25:14 2024 Received: (at 68765) by debbugs.gnu.org; 4 Jun 2024 05:25:15 +0000 Received: from localhost ([127.0.0.1]:56151 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sEMfa-0003Fh-EZ for submit@debbugs.gnu.org; Tue, 04 Jun 2024 01:25:14 -0400 Received: from greenhill.hpalace.com ([192.155.80.58]:59260) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sEMfW-0003FX-77 for 68765@debbugs.gnu.org; Tue, 04 Jun 2024 01:25:13 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=finder.org; s=2018; t=1717478695; bh=iVvb/s2nM4zauTbmboBYYTANEAPq9zBAl8sKWLiZBX4=; h=Date:From:To:Cc:Subject:From; b=b3Cp/HQpgg37rLRFUJU60tLuLJo9viXM7aWXML6IH4iT/CDV1d6R1QmfEyLLjg1wT SamesMSqjXUXmfnwTs0Gimwicc9/XLTfWM8F7cW6YnSYrqbRtMOHSOmL84LJu2Fy+q ejblIvGTGSlmD+7oFNeBH+wuCIIK1i72ZtnxErmD+cdV5wZZlYQRbUouwccGkBkrUv zQGLyml4gOdnRJQtLfsLh4B9tkKANQ49K8PT86x4ATo1JnO/UP69jyjyx/Cn0A6l8A 8ClwV4WfSTGN/CCyiLbF2rV0BoSYnR9yBLq1VwxF1ndZ5BYVvSDLO6bQZpnKh9KlnY He1im+UujCSGQ== Received: from mail.finder.org (unknown [192.155.80.58]) by greenhill.hpalace.com (Postfix) with ESMTPSA id CCFA7A02; Tue, 4 Jun 2024 05:24:55 +0000 (UTC) MIME-Version: 1.0 Date: Mon, 03 Jun 2024 22:24:55 -0700 From: Jared Finder To: Eli Zaretskii Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. Message-ID: X-Sender: jared@finder.org Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2024-06-02 09:46, Eli Zaretskii wrote: >> Date: Sun, 02 Jun 2024 08:57:52 -0700 >> From: Jared Finder >> Cc: juri@linkov.net, 68765@debbugs.gnu.org, philipk@posteo.net, >> monnier@iro.umontreal.ca >> Let me explicitly describe the terms I am using: >> >> When I write "the global (default) tool bar", that refers to the value >> of (default-value 'tool-bar-map). It's the tool bar with New File, >> Open File, Open Directory, Kill Buffer, Save, Undo, Cut, Copy, Paste, >> Isearch. This doesn't change with major mode. As far as I can tell, >> it doesn't change during normal Emacs operations (unless a user >> chooses >> to modify it, of course). >> >> When I write "the frame tool bar", that refers to the tool bar >> displayed at the top of a frame, as controlled by M-x tool-bar-mode. >> There is no change of behavior here except for the new user option >> tool-bar-always-show-default. >> >> When I write "the window tool bar", that refers to the tool bar >> displayed at the top of a window, as controlled by (newly added) M-x >> window-tool-bar-mode or M-x global-window-tool-bar-mode. The window >> tool bar displays the value of tool-bar-map the window's displayed >> buffer. But it only displays that tool bar if it is not the same as >> the global (default) tool bar. It does not pay attention to the frame >> tool bar. Specifically, the test is: >> >> (eq tool-bar-map ;a buffer's tool bar >> (default-value 'tool-bar-map) ;the global (default) tool bar >> ) > > So a window under, say, Info mode will show the Info tool bar even > though the frame also shows that tool bar, just because that tool bar > is different from the default value of tool-bar-map? Why is this > behavior useful? > > How about if we make the behavior simpler and more predictable: > > If a window's buffer has a non-nil value of window-toolbar-mode, > show the window-specific tool bar regardless of what it is and > whether it is the same as the default. > > Why is this not good enough? I want the window-specfic tool bar to never be shown if there are no tool bar buttons, to conserve space. However, if tab-line-format is non nil, the tab line takes up space even if the resulting tab line is nil. This can happen if one sets the default tool bar to nil, while keeping the mode specific tool bars. I think there's also a useful case where the frame tool bar is used to show a "global" tool bar with buttons that do not act on the current buffer (in the current default tool bar: new file, open file, open directory, all the modifier tool bar buttons) and the window tool bar is used to show buttons that act on the buffer. In this case, you don't want the "global" tool bar to change based on frame's selected window. The "tool-bar-always-show-default" variable I added as well as the logic with ignoring the default value of tool-bar-map was to enable this use case. I treat the default value of tool-bar-map as "no tool bar buttons for this window" since all those buttons are for the global tool bar. It'd be fine to limit behavior to only when tool-bar-always-show-default was set. -- MJF From debbugs-submit-bounces@debbugs.gnu.org Tue Jun 04 13:06:29 2024 Received: (at 68765) by debbugs.gnu.org; 4 Jun 2024 17:06:29 +0000 Received: from localhost ([127.0.0.1]:39030 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sEXcD-0001QV-8R for submit@debbugs.gnu.org; Tue, 04 Jun 2024 13:06:29 -0400 Received: from eggs.gnu.org ([209.51.188.92]:58940) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sEXcB-0001QE-4D for 68765@debbugs.gnu.org; Tue, 04 Jun 2024 13:06:28 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sEWZI-0001tZ-Ib; Tue, 04 Jun 2024 11:59:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=wLW/lXTWWP4agj/AfI0IxR57VzSJlCPTN36lB/zZbt8=; b=rfpaMRr9uCzN 9tVl9TZXkiMhu2EpmMbl0L4/M7R9KFi56tBdgsADHKxI5uN3BIqqLW4djayd+8Py/zNZWvqmUqnU5 7qviLj/F6HkhyhD66xXPJK5v1wXa8LVQ473+/nEH4KmvToVAg1pn39qdTtT3IDKg71yhpnG0S2Fap TqDKpOXCPpPy93j4IY/1wbG92GIwlwz1HtvhfaS4lXA/q2aiAAp+PzqGfJkyxHPFqHK9B1RA8XvMO MKx0tJZHRkXtuFynCeaVS0xEBTXTCfgx3hac7NZcUzz+pvx4TifdXIH3wkmoUkij22ACfs3w1AX++ B4ube+X6OiaNK4JfWusFzA==; Date: Tue, 04 Jun 2024 18:59:21 +0300 Message-Id: <86v82ok8bq.fsf@gnu.org> From: Eli Zaretskii To: Jared Finder In-Reply-To: (message from Jared Finder on Mon, 03 Jun 2024 22:24:55 -0700) Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. References: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Mon, 03 Jun 2024 22:24:55 -0700 > From: Jared Finder > Cc: juri@linkov.net, 68765@debbugs.gnu.org, philipk@posteo.net, > monnier@iro.umontreal.ca > > > How about if we make the behavior simpler and more predictable: > > > > If a window's buffer has a non-nil value of window-toolbar-mode, > > show the window-specific tool bar regardless of what it is and > > whether it is the same as the default. > > > > Why is this not good enough? > > I want the window-specfic tool bar to never be shown if there are no > tool bar buttons, to conserve space. However, if tab-line-format is non > nil, the tab line takes up space even if the resulting tab line is nil. > This can happen if one sets the default tool bar to nil, while keeping > the mode specific tool bars. If the issue is not to show an empty tool bar, then this could be done by a special test, without affecting behavior in other cases. And having the tool bar completely empty is such a rare and strange situation that we could even leave it alone, under the assumption that such a "tool bar" is simply a bug of sorts. Complicating the overall behavior, let alone the difficulties of explaining the behavior in documentation, on behalf of such rare and very special cases is hardly a good tradeoff, won't you agree? > I think there's also a useful case where the frame tool bar is used to > show a "global" tool bar with buttons that do not act on the current > buffer (in the current default tool bar: new file, open file, open > directory, all the modifier tool bar buttons) and the window tool bar is > used to show buttons that act on the buffer. In this case, you don't > want the "global" tool bar to change based on frame's selected window. > The "tool-bar-always-show-default" variable I added as well as the logic > with ignoring the default value of tool-bar-map was to enable this use > case. I treat the default value of tool-bar-map as "no tool bar buttons > for this window" since all those buttons are for the global tool bar. > It'd be fine to limit behavior to only when tool-bar-always-show-default > was set. I'm not against tool-bar-always-show-default and its effect. But introducing that optional behavior doesn't require any particular behavior from window-specific tool bars, it's almost an orthogonal feature. My conclusion from this is that the two considerations you provided in favor of a much more complex behavior do not contradict my suggestion. The first consideration is about a very rare case, which we could simply ignore (but if you feel strongly about detecting empty tool bars and not displaying them, I won't object), while the second consideration does not require the complicated behavior of window-specific tool bars. If I missed something, or if you still disagree, please tell what and why. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Wed Jun 05 00:23:21 2024 Received: (at 68765) by debbugs.gnu.org; 5 Jun 2024 04:23:21 +0000 Received: from localhost ([127.0.0.1]:52430 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sEiBA-0006Nl-TA for submit@debbugs.gnu.org; Wed, 05 Jun 2024 00:23:21 -0400 Received: from greenhill.hpalace.com ([192.155.80.58]:43798) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sEiB4-0006NO-Bz for 68765@debbugs.gnu.org; Wed, 05 Jun 2024 00:23:14 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=finder.org; s=2018; t=1717561375; bh=mTzF6lNRqWp0Em/9srwETP5LvSaIOZv1rwkx4NQa7E0=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=n4b+mB6PQKIKjlL3UwmGATeWRZPSxZMmrJQ5KjoIyXN7R7eHQ96zDfutcb5jmkwRW WlOjxL7vY2AeDR02zRfriMfC/SAFbMhkiMVUiX9bsgLQcRp1L3pitv1PsNQnPEbhA7 i16sSrd01cy8Wcmr6j0HWUud1zhl4DDqvZKRrlZHbrQ8MP+P2kQrAeOESaxJGS1TaJ wAln1lro/LRjZg6PcAr/Ei/rRbCYCTkfPOiIXPtgTYMIXPadvK19qW/U1kGgYfwQD6 9KNRleLXKU/QiZWEBWB9deE5yNCWawZf5Z6Fd7TN3CrDTbaOGKYhdRdU7Q9HLjzZnE Ts8YYkdDbE+1w== Received: from mail.finder.org (unknown [192.155.80.58]) by greenhill.hpalace.com (Postfix) with ESMTPSA id 7B5A2AE2; Wed, 5 Jun 2024 04:22:55 +0000 (UTC) MIME-Version: 1.0 Date: Tue, 04 Jun 2024 21:22:55 -0700 From: Jared Finder To: Eli Zaretskii Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <86v82ok8bq.fsf@gnu.org> References: <86v82ok8bq.fsf@gnu.org> Message-ID: <76360aef38fd8e45a26b48c1d9df608c@finder.org> X-Sender: jared@finder.org Content-Type: multipart/mixed; boundary="=_bb2861199e12fce1c461999a024828f6" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=_bb2861199e12fce1c461999a024828f6 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2024-06-04 08:59, Eli Zaretskii wrote: > I'm not against tool-bar-always-show-default and its effect. But > introducing that optional behavior doesn't require any particular > behavior from window-specific tool bars, it's almost an orthogonal > feature. > > My conclusion from this is that the two considerations you provided > in favor of a much more complex behavior do not contradict my > suggestion. The first consideration is about a very rare case, which > we could simply ignore (but if you feel strongly about detecting > empty tool bars and not displaying them, I won't object), while the > second consideration does not require the complicated behavior of > window-specific tool bars. This sounds like a good result. I do think that auto-hiding the window tool bar when tool-bar-map is nil is very valuable and is straightforward to implement. I have attached a new documentation patch describing the intended behavior. If this looks good to you I can draft a patch to window-tool-bar.el based on all the feedback thus far. Thanks -- MJF --=_bb2861199e12fce1c461999a024828f6 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-Adding-documentation-for-window-tool-bar-bug-68765.patch Content-Disposition: attachment; filename=0001-Adding-documentation-for-window-tool-bar-bug-68765.patch; size=13079 RnJvbSA5ZTgxYWVlNjdiZGYwNzVlNjc1NTE5Mjk0ZmE4ZDE3YzM3OWY2NGM4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+CkRhdGU6 IE1vbiwgMjAgTWF5IDIwMjQgMjE6NTk6MTQgLTA3MDAKU3ViamVjdDogW1BBVENIXSBBZGRpbmcg ZG9jdW1lbnRhdGlvbiBmb3Igd2luZG93LXRvb2wtYmFyIChidWcjNjg3NjUpCgoqIGRvYy9lbWFj cy9lbWFjcy50ZXhpIChUb3ApOgoqIGRvYy9lbWFjcy9mcmFtZXMudGV4aSAoVG9vbCBCYXJzKToK KiBkb2MvZW1hY3MvZ2xvc3NhcnkudGV4aSAoR2xvc3NhcnkpOgoqIGRvYy9lbWFjcy9tb2Rlcy50 ZXhpIChNaW5vciBNb2Rlcyk6IE1lbnRpb24gV2luZG93IFRvb2wgQmFyCmFuZCBhZGQgeHJlZi4K KiBkb2MvZW1hY3Mvd2luZG93cy50ZXhpIChXaW5kb3dzLCBUYWIgTGluZSk6IE5ldyBkb2N1bWVu dGF0aW9uLgoqIGRvYy9saXNwcmVmL2VsaXNwLnRleGkgKFRvcCk6CiogZG9jL2xpc3ByZWYvbW9k ZXMudGV4aSAoTW9kZSBMaW5lIEZvcm1hdCwgTW9kZSBMaW5lIEJhc2ljcykKKE1vZGUgTGluZSBE YXRhKTogTWVudGlvbiBUYWIgTGluZXMgYW5kIGFkZCB4cmVmLgooVGFiIExpbmVzKTogTmV3IGRv Y3VtZW50YXRpb24uCiogZXRjL05FV1M6IE1lbnRpb24gbmV3bHkgYWRkZWQgdmFyaWFibGUKJ3Rv b2wtYmFyLWFsd2F5cy1zaG93LWRlZmF1bHQnIGFuZCBuZXcgcGFja2FnZSAnd2luZG93LXRvb2wt YmFyJwotLS0KIGRvYy9lbWFjcy9lbWFjcy50ZXhpICAgIHwgIDEgKwogZG9jL2VtYWNzL2ZyYW1l cy50ZXhpICAgfCAxNCArKysrKysrKy0tLQogZG9jL2VtYWNzL2dsb3NzYXJ5LnRleGkgfCAxMCAr KysrKy0tLQogZG9jL2VtYWNzL21vZGVzLnRleGkgICAgfCAgNCArKysKIGRvYy9lbWFjcy93aW5k b3dzLnRleGkgIHwgMzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkb2MvbGlzcHJlZi9l bGlzcC50ZXhpICB8ICAxICsKIGRvYy9saXNwcmVmL21vZGVzLnRleGkgIHwgNTYgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIGV0Yy9ORVdTICAgICAgICAgICAgICAg IHwgMTQgKysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMTE1IGluc2VydGlvbnMoKyksIDIy IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9lbWFjcy9lbWFjcy50ZXhpIGIvZG9jL2Vt YWNzL2VtYWNzLnRleGkKaW5kZXggN2Q3N2YxM2FiMjEuLjgyNDYwNDFmYjk1IDEwMDY0NAotLS0g YS9kb2MvZW1hY3MvZW1hY3MudGV4aQorKysgYi9kb2MvZW1hY3MvZW1hY3MudGV4aQpAQCAtNTI5 LDYgKzUyOSw3IEBAIFRvcAogKiBUZW1wb3JhcnkgRGlzcGxheXM6OiAgRGlzcGxheWluZyBub24t ZWRpdGFibGUgYnVmZmVycy4KICogV2luZG93IENvbnZlbmllbmNlOjogIENvbnZlbmllbmNlIGZ1 bmN0aW9ucyBmb3Igd2luZG93IGhhbmRsaW5nLgogKiBUYWIgTGluZTo6ICAgICAgICAgICAgV2lu ZG93IHRhYiBsaW5lLgorKiBXaW5kb3cgVG9vbCBCYXI6OiAgICAgQSB0b29sIGJhciB0aGF0IGlz IGF0dGFjaGVkIHRvIHdpbmRvd3MuCiAKIERpc3BsYXlpbmcgYSBCdWZmZXIgaW4gYSBXaW5kb3cK IApkaWZmIC0tZ2l0IGEvZG9jL2VtYWNzL2ZyYW1lcy50ZXhpIGIvZG9jL2VtYWNzL2ZyYW1lcy50 ZXhpCmluZGV4IDZjNjJmZGU0ZmZiLi5lMWZiZjk3NjhhZiAxMDA2NDQKLS0tIGEvZG9jL2VtYWNz L2ZyYW1lcy50ZXhpCisrKyBiL2RvYy9lbWFjcy9mcmFtZXMudGV4aQpAQCAtMTI5NSwxNiArMTI5 NSwyMiBAQCBNZW51IEJhcnMKIEBub2RlIFRvb2wgQmFycwogQHNlY3Rpb24gVG9vbCBCYXJzCiBA Y2luZGV4IHRvb2wgYmFyIG1vZGUKK0BjaW5kZXggdG9vbCBiYXIsIGF0dGFjaGVkIHRvIGZyYW1l CiBAY2luZGV4IG1vZGUsIFRvb2wgQmFyCiBAY2luZGV4IGljb25zLCB0b29sYmFyCiAKLSAgT24g Z3JhcGhpY2FsIGRpc3BsYXlzLCBFbWFjcyBwdXRzIGEgQGRmbnt0b29sIGJhcn0gYXQgdGhlIHRv cCBvZgotZWFjaCBmcmFtZSwganVzdCBiZWxvdyB0aGUgbWVudSBiYXIuICBUaGlzIGlzIGEgcm93 IG9mIGljb25zIHdoaWNoIHlvdQotY2FuIGNsaWNrIG9uIHdpdGggdGhlIG1vdXNlIHRvIGludm9r ZSB2YXJpb3VzIGNvbW1hbmRzLgorICBPbiBncmFwaGljYWwgZGlzcGxheXMsIEVtYWNzIHB1dHMg YSBAZGZue3Rvb2wgYmFyfSBhdCB0aGUgdG9wIG9mIGVhY2gKK2ZyYW1lLCBqdXN0IGJlbG93IHRo ZSBtZW51IGJhci4gIFRoaXMgaXMgYSByb3cgb2YgYnV0dG9ucyB3aXRoIGljb25zCit3aGljaCB5 b3UgY2FuIGNsaWNrIG9uIHdpdGggdGhlIG1vdXNlIHRvIGludm9rZSB2YXJpb3VzIGNvbW1hbmRz LiAgRW1hY3MKK2NhbiBhbHNvIG9wdGlvbmFsbHkgZGlzcGxheSBhIHRvb2wgYmFyIGF0IHRoZSB0 b3Agb2YgZWFjaCB3aW5kb3cKKyhAcHhyZWZ7V2luZG93IFRvb2wgQmFyfSkuCiAKK0B2aW5kZXgg dG9vbC1iYXItYWx3YXlzLXNob3ctZGVmYXVsdAogICBUaGUgZ2xvYmFsIChkZWZhdWx0KSB0b29s IGJhciBjb250YWlucyBnZW5lcmFsIGNvbW1hbmRzLiAgU29tZSBtYWpvcgogbW9kZXMgZGVmaW5l IHRoZWlyIG93biB0b29sIGJhcnM7IHdoZW5ldmVyIGEgYnVmZmVyIHdpdGggc3VjaCBhIG1ham9y Ci1tb2RlIGlzIGN1cnJlbnQsIHRoZSBtb2RlJ3MgdG9vbCBiYXIgcmVwbGFjZXMgdGhlIGdsb2Jh bCB0b29sIGJhci4KK21vZGUgaXMgY3VycmVudCwgdGhlIG1vZGUncyB0b29sIGJhciByZXBsYWNl cyB0aGUgZ2xvYmFsIHRvb2wgYmFyLiAgVG8KK3ByZXZlbnQgdGhpcyByZXBsYWNlbWVudCBmcm9t IGhhcHBlbmluZywgY3VzdG9taXplIHRoZSB2YXJpYWJsZQorQGNvZGV7dG9vbC1iYXItYWx3YXlz LXNob3ctZGVmYXVsdH0uCiAKIEBmaW5kZXggdG9vbC1iYXItbW9kZQogQHZpbmRleCB0b29sLWJh ci1tb2RlCmRpZmYgLS1naXQgYS9kb2MvZW1hY3MvZ2xvc3NhcnkudGV4aSBiL2RvYy9lbWFjcy9n bG9zc2FyeS50ZXhpCmluZGV4IDM0NGU0ODMxZjM2Li5lMjQ1Y2I4MTc1NCAxMDA2NDQKLS0tIGEv ZG9jL2VtYWNzL2dsb3NzYXJ5LnRleGkKKysrIGIvZG9jL2VtYWNzL2dsb3NzYXJ5LnRleGkKQEAg LTE0MzYsMTAgKzE0MzYsMTIgQEAgR2xvc3NhcnkKIGZvciB5b3VyIGZhdm9yaXRlIHNldCBvZiBm YWNlcyAocS52LikuCiAKIEBpdGVtIFRvb2wgQmFyCi1UaGUgdG9vbCBiYXIgaXMgYSBsaW5lIChz b21ldGltZXMgbXVsdGlwbGUgbGluZXMpIG9mIGljb25zIGF0IHRoZSB0b3AKLW9mIGFuIEVtYWNz IGZyYW1lLiAgQ2xpY2tpbmcgb24gb25lIG9mIHRoZXNlIGljb25zIGV4ZWN1dGVzIGEgY29tbWFu ZC4KLVlvdSBjYW4gdGhpbmsgb2YgdGhpcyBhcyBhIGdyYXBoaWNhbCByZWxhdGl2ZSBvZiB0aGUg bWVudSBiYXIgKHEudi4pLgotQHhyZWZ7VG9vbCBCYXJzfS4KK1RoZSB0b29sIGJhciBpcyBhIGxp bmUgKHNvbWV0aW1lcyBtdWx0aXBsZSBsaW5lcykgb2YgYnV0dG9ucyB3aXRoIGljb25zCithdCB0 aGUgdG9wIG9mIGFuIEVtYWNzIGZyYW1lLiAgQ2xpY2tpbmcgb24gb25lIG9mIHRoZXNlIGJ1dHRv bnMgZXhlY3V0ZXMKK2EgY29tbWFuZC4gIFlvdSBjYW4gdGhpbmsgb2YgdGhpcyBhcyBhIGdyYXBo aWNhbCByZWxhdGl2ZSBvZiB0aGUgbWVudQorYmFyIChxLnYuKS4gIEB4cmVme1Rvb2wgQmFyc30u ICBUaGVyZSBpcyBhbHNvIGEgd2luZG93IHRvb2wgYmFyIHRoYXQKK2JlaGF2ZXMgc2ltaWxhcmx5 LCBidXQgaXMgYXQgdGhlIHRvcCBvZiBhbiBFbWFjcyB3aW5kb3cuICBAeHJlZntXaW5kb3cKK1Rv b2wgQmFyfS4KIAogQGFuY2hvcntHbG9zc2FyeS0tLVRvb2x0aXBzfQogQGl0ZW0gVG9vbHRpcHMK ZGlmZiAtLWdpdCBhL2RvYy9lbWFjcy9tb2Rlcy50ZXhpIGIvZG9jL2VtYWNzL21vZGVzLnRleGkK aW5kZXggMjc3NmRjNzJhMjcuLjI1MzA0MmIyOGEzIDEwMDY0NAotLS0gYS9kb2MvZW1hY3MvbW9k ZXMudGV4aQorKysgYi9kb2MvZW1hY3MvbW9kZXMudGV4aQpAQCAtMjk1LDYgKzI5NSwxMCBAQCBN aW5vciBNb2RlcwogYnV0IHRoZSB0b29sIGJhciBpcyBvbmx5IGRpc3BsYXllZCBvbiBncmFwaGlj YWwgdGVybWluYWxzLiAgQHhyZWZ7VG9vbAogQmFyc30uCiAKK0BpdGVtCitXaW5kb3cgVG9vbCBC YXIgbW9kZSBnaXZlcyB3aW5kb3dzIGEgdG9vbCBiYXIgd2hlbiBpdCBpcyBkaWZmZXJlbnQgZnJv bQordGhlIGRlZmF1bHQgdG9vbCBiYXIuICBAeHJlZntXaW5kb3cgVG9vbCBCYXJ9LgorCiBAaXRl bQogVGFiIEJhciBtb2RlIGdpdmVzIGVhY2ggZnJhbWUgYSB0YWIgYmFyLiAgQHhyZWZ7VGFiIEJh cnN9LgogCmRpZmYgLS1naXQgYS9kb2MvZW1hY3Mvd2luZG93cy50ZXhpIGIvZG9jL2VtYWNzL3dp bmRvd3MudGV4aQppbmRleCBhZDIyMjViNTkyMi4uNjdiMTA3ZGNhZmYgMTAwNjQ0Ci0tLSBhL2Rv Yy9lbWFjcy93aW5kb3dzLnRleGkKKysrIGIvZG9jL2VtYWNzL3dpbmRvd3MudGV4aQpAQCAtMjIs NiArMjIsNyBAQCBXaW5kb3dzCiAqIERpc3BsYXlpbmcgQnVmZmVyczo6ICBIb3cgRW1hY3MgcGlj a3MgYSB3aW5kb3cgZm9yIGRpc3BsYXlpbmcgYSBidWZmZXIuCiAqIFdpbmRvdyBDb252ZW5pZW5j ZTo6ICBDb252ZW5pZW5jZSBmdW5jdGlvbnMgZm9yIHdpbmRvdyBoYW5kbGluZy4KICogVGFiIExp bmU6OiAgICAgICAgICAgIFdpbmRvdyB0YWIgbGluZS4KKyogV2luZG93IFRvb2wgQmFyOjogICAg IEEgdG9vbCBiYXIgdGhhdCBpcyBhdHRhY2hlZCB0byB3aW5kb3dzLgogQGVuZCBtZW51CiAKIEBu b2RlIEJhc2ljIFdpbmRvdwpAQCAtNjg5LDMgKzY5MCwzOSBAQCBUYWIgTGluZQogc3dpdGNoIGJl dHdlZW4gd2luZG93IGNvbmZpZ3VyYXRpb25zIGNvbnRhaW5pbmcgc2V2ZXJhbCB3aW5kb3dzIHdp dGggYnVmZmVycywKIHRhYnMgb24gdGhlIFRhYiBMaW5lIGF0IHRoZSB0b3Agb2YgZWFjaCB3aW5k b3cgYXJlIHVzZWQgdG8gc3dpdGNoCiBiZXR3ZWVuIGJ1ZmZlcnMgaW4gdGhlIHdpbmRvdy4KKwor CitAbm9kZSBXaW5kb3cgVG9vbCBCYXIKK0BzZWN0aW9uIFdpbmRvdyBUb29sIEJhcgorCitAY2lu ZGV4IHdpbmRvdyB0b29sIGJhcgorQGNpbmRleCBtb2RlLCB3aW5kb3cgdG9vbCBiYXIKK0BjaW5k ZXggdG9vbCBiYXIsIGF0dGFjaGVkIHRvIHdpbmRvdworCitAZmluZGV4IGdsb2JhbC13aW5kb3ct dG9vbC1iYXItbW9kZQorICBUaGUgY29tbWFuZCBAY29kZXtnbG9iYWwtd2luZG93LXRvb2wtYmFy LW1vZGV9IHRvZ2dsZXMgdGhlIGRpc3BsYXkgb2YKK2EgdG9vbCBiYXIgYXQgdGhlIHRvcCBvZiBl YWNoIHdpbmRvdy4gIFdoZW4gZW5hYmxlZCwgbXVsdGlwbGUgd2luZG93cworY2FuIGRpc3BsYXkg dGhlaXIgb3duIHRvb2wgYmFyIHNpbXVsdGFuZW91c2x5LiAgVG8gY29uc2VydmUgc3BhY2UsIGEK K3dpbmRvdyB0b29sIGJhciBpcyBoaWRkZW4gaWYgdGhlcmUgYXJlIG5vIGJ1dHRvbnMgdG8gc2hv dywgaS5lLiBpZgorQHZhcnt0b29sLWJhci1tYXB9IGlzIEBjb2Rle25pbH0uCisKK0BmaW5kZXgg d2luZG93LXRvb2wtYmFyLW1vZGUKK0lmIHlvdSB3YW50IHRvIHRvZ2dsZSB0aGUgZGlzcGxheSBv ZiBhIHdpbmRvdyB0b29sIGJhciBmb3Igb25seSBzb21lCitidWZmZXJzLCBydW4gdGhlIGNvbW1h bmQgQGNvZGV7d2luZG93LXRvb2wtYmFyLW1vZGV9IGluIHRob3NlIGJ1ZmZlcnMuCitUaGlzIGlz IHVzZWZ1bCB0byBwdXQgaW4gYSBtb2RlIGhvb2suICBGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQg dGhlIHdpbmRvdwordG9vbCBiYXIgdG8gYXBwZWFyIG9ubHkgZm9yIGJ1ZmZlcnMgdGhhdCBkbyBu b3QgcmVwcmVzZW50IGZpbGVzIGFuZCBoYXZlCithIGN1c3RvbSB0b29sIGJhciwgeW91IGNvdWxk IGFkZCB0aGUgZm9sbG93aW5nIGNvZGUgdG8geW91ciBpbml0IGZpbGUKKyhAcHhyZWZ7SW5pdCBG aWxlfSk6CisKK0BleGFtcGxlCisoYWRkLWhvb2sgJ3NwZWNpYWwtbW9kZS1ob29rICd3aW5kb3ct dG9vbC1iYXItbW9kZSkKK0BlbmQgZXhhbXBsZQorCitFbWFjcyBjYW4gYWxzbyBkaXNwbGF5IGEg c2luZ2xlIHRvb2wgYmFyIGF0IHRoZSB0b3Agb2YgZnJhbWVzCisoQHB4cmVme1Rvb2wgQmFyc30p LgorCitOb3RlIHRoYXQgdGhlIHdpbmRvdyB0b29sIGJhciBkaXNwbGF5cyBpbiB0aGUgc2FtZSBz cGFjZSBhcyB0aGUgdGFiCitsaW5lLCBzbyBvbmx5IG9uZSBvZiB0aGVzZSBjYW4gYmUgZGlzcGxh eSBhdCBhIHRpbWUgdW5sZXNzIHlvdSBjdXN0b21pemUKK3RoZSB2YWx1ZSBvZiBAY29kZXt0YWIt bGluZS1mb3JtYXR9IGluIExpc3AuICBJbiB0aGlzIGNhc2UsIGFkZAorQGNvZGV7KDpldmFsICh3 aW5kb3ctdG9vbC1iYXItc3RyaW5nKSl9IHRvIEBjb2Rle3RhYi1saW5lLWZvcm1hdH0uCitAeHJl ZntNb2RlIExpbmUgRm9ybWF0LCwsIGVsaXNwLCBUaGUgRW1hY3MgTGlzcCBSZWZlcmVuY2UgTWFu dWFsfS4KZGlmZiAtLWdpdCBhL2RvYy9saXNwcmVmL2VsaXNwLnRleGkgYi9kb2MvbGlzcHJlZi9l bGlzcC50ZXhpCmluZGV4IDMzOTI3MmQxZjA1Li4xMDU5ZDBkY2Y2MSAxMDA2NDQKLS0tIGEvZG9j L2xpc3ByZWYvZWxpc3AudGV4aQorKysgYi9kb2MvbGlzcHJlZi9lbGlzcC50ZXhpCkBAIC05MjUs NiArOTI1LDcgQEAgVG9wCiAqICUtQ29uc3RydWN0czo6ICAgICAgICAgICAgUHV0dGluZyBpbmZv cm1hdGlvbiBpbnRvIGEgbW9kZSBsaW5lLgogKiBQcm9wZXJ0aWVzIGluIE1vZGU6OiAgICAgIFVz aW5nIHRleHQgcHJvcGVydGllcyBpbiB0aGUgbW9kZSBsaW5lLgogKiBIZWFkZXIgTGluZXM6OiAg ICAgICAgICAgIExpa2UgYSBtb2RlIGxpbmUsIGJ1dCBhdCB0aGUgdG9wLgorKiBUYWIgTGluZXM6 OiAgICAgICAgICAgICAgIEEgbGluZSB0aGF0IGlzIGFib3ZlIHRoZSBoZWFkZXIgbGluZS4KICog RW11bGF0aW5nIE1vZGUgTGluZTo6ICAgICBGb3JtYXR0aW5nIHRleHQgYXMgdGhlIG1vZGUgbGlu ZSB3b3VsZC4KIAogRm9udCBMb2NrIE1vZGUKZGlmZiAtLWdpdCBhL2RvYy9saXNwcmVmL21vZGVz LnRleGkgYi9kb2MvbGlzcHJlZi9tb2Rlcy50ZXhpCmluZGV4IGNmNjdiMzE5OTI0Li5mM2Q0ZjUz NDdiMyAxMDA2NDQKLS0tIGEvZG9jL2xpc3ByZWYvbW9kZXMudGV4aQorKysgYi9kb2MvbGlzcHJl Zi9tb2Rlcy50ZXhpCkBAIC0yMDc0LDE0ICsyMDc0LDE0IEBAIE1vZGUgTGluZSBGb3JtYXQKIGxp bmUgYXQgdGhlIGJvdHRvbSwgd2hpY2ggZGlzcGxheXMgc3RhdHVzIGluZm9ybWF0aW9uIGFib3V0 IHRoZSBidWZmZXIKIGRpc3BsYXllZCBpbiB0aGUgd2luZG93LiAgVGhlIG1vZGUgbGluZSBjb250 YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUKIGJ1ZmZlciwgc3VjaCBhcyBpdHMgbmFtZSwgYXNz b2NpYXRlZCBmaWxlLCBkZXB0aCBvZiByZWN1cnNpdmUgZWRpdGluZywKLWFuZCBtYWpvciBhbmQg bWlub3IgbW9kZXMuICBBIHdpbmRvdyBjYW4gYWxzbyBoYXZlIGEgQGRmbntoZWFkZXIKLWxpbmV9 LCB3aGljaCBpcyBtdWNoIGxpa2UgdGhlIG1vZGUgbGluZSBidXQgYXBwZWFycyBhdCB0aGUgdG9w IG9mIHRoZQotd2luZG93LgorYW5kIG1ham9yIGFuZCBtaW5vciBtb2Rlcy4gIEEgd2luZG93IGNh biBhbHNvIGhhdmUgYSBAZGZue2hlYWRlciBsaW5lfQorYW5kIGEgQGRmbnt0YWIgbGluZX0sIHdo aWNoIGFyZSBtdWNoIGxpa2UgdGhlIG1vZGUgbGluZSBidXQgdGhleSBhcHBlYXIKK2F0IHRoZSB0 b3Agb2YgdGhlIHdpbmRvdy4KIAotICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyB0byBjb250 cm9sIHRoZSBjb250ZW50cyBvZiB0aGUgbW9kZSBsaW5lCi1hbmQgaGVhZGVyIGxpbmUuICBXZSBp bmNsdWRlIGl0IGluIHRoaXMgY2hhcHRlciBiZWNhdXNlIG11Y2ggb2YgdGhlCi1pbmZvcm1hdGlv biBkaXNwbGF5ZWQgaW4gdGhlIG1vZGUgbGluZSByZWxhdGVzIHRvIHRoZSBlbmFibGVkIG1ham9y IGFuZAotbWlub3IgbW9kZXMuCisgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgaG93IHRvIGNvbnRy b2wgdGhlIGNvbnRlbnRzIG9mIHRoZSBtb2RlIGxpbmUsCitoZWFkZXIgbGluZSwgYW5kIHRhYiBs aW5lLiAgV2UgaW5jbHVkZSBpdCBpbiB0aGlzIGNoYXB0ZXIgYmVjYXVzZSBtdWNoCitvZiB0aGUg aW5mb3JtYXRpb24gZGlzcGxheWVkIGluIHRoZSBtb2RlIGxpbmUgcmVsYXRlcyB0byB0aGUgZW5h YmxlZAorbWFqb3IgYW5kIG1pbm9yIG1vZGVzLgogCiBAbWVudQogKiBCYXNlOiBNb2RlIExpbmUg QmFzaWNzLiAgICAgICBCYXNpYyBpZGVhcyBvZiBtb2RlIGxpbmUgY29udHJvbC4KQEAgLTIwOTEs NiArMjA5MSw3IEBAIE1vZGUgTGluZSBGb3JtYXQKICogJS1Db25zdHJ1Y3RzOjogICAgICAgICAg ICAgICAgUHV0dGluZyBpbmZvcm1hdGlvbiBpbnRvIGEgbW9kZSBsaW5lLgogKiBQcm9wZXJ0aWVz IGluIE1vZGU6OiAgICAgICAgICBVc2luZyB0ZXh0IHByb3BlcnRpZXMgaW4gdGhlIG1vZGUgbGlu ZS4KICogSGVhZGVyIExpbmVzOjogICAgICAgICAgICAgICAgTGlrZSBhIG1vZGUgbGluZSwgYnV0 IGF0IHRoZSB0b3AuCisqIFRhYiBMaW5lczo6ICAgICAgICAgICAgICAgICAgIEEgbGluZSB0aGF0 IGlzIGFib3ZlIHRoZSBoZWFkZXIgbGluZS4KICogRW11bGF0aW5nIE1vZGUgTGluZTo6ICAgICAg ICAgRm9ybWF0dGluZyB0ZXh0IGFzIHRoZSBtb2RlIGxpbmUgd291bGQuCiBAZW5kIG1lbnUKIApA QCAtMjEwMSwxMSArMjEwMiwxMyBAQCBNb2RlIExpbmUgQmFzaWNzCiB2YXJpYWJsZSBAY29kZXtt b2RlLWxpbmUtZm9ybWF0fSAoQHB4cmVme01vZGUgTGluZSBUb3B9KS4gIFRoaXMgdmFyaWFibGUK IGhvbGRzIGEgQGRmbnttb2RlIGxpbmUgY29uc3RydWN0fTogYSB0ZW1wbGF0ZSB0aGF0IGNvbnRy b2xzIHdoYXQgaXMKIGRpc3BsYXllZCBvbiB0aGUgYnVmZmVyJ3MgbW9kZSBsaW5lLiAgVGhlIHZh bHVlIG9mCi1AY29kZXtoZWFkZXItbGluZS1mb3JtYXR9IHNwZWNpZmllcyB0aGUgYnVmZmVyJ3Mg aGVhZGVyIGxpbmUgaW4gdGhlIHNhbWUKLXdheS4gIEFsbCB3aW5kb3dzIGZvciB0aGUgc2FtZSBi dWZmZXIgdXNlIHRoZSBzYW1lCi1AY29kZXttb2RlLWxpbmUtZm9ybWF0fSBhbmQgQGNvZGV7aGVh ZGVyLWxpbmUtZm9ybWF0fSB1bmxlc3MgYQotQGNvZGV7bW9kZS1saW5lLWZvcm1hdH0gb3IgQGNv ZGV7aGVhZGVyLWxpbmUtZm9ybWF0fSBwYXJhbWV0ZXIgaGFzIGJlZW4KLXNwZWNpZmllZCBmb3Ig dGhhdCB3aW5kb3cgKEBweHJlZntXaW5kb3cgUGFyYW1ldGVyc30pLgorQGNvZGV7aGVhZGVyLWxp bmUtZm9ybWF0fSBhbmQgQGNvZGV7dGFiLWxpbmUtZm9ybWF0fSBzcGVjaWZpZXMgdGhlCitidWZm ZXIncyBoZWFkZXIgbGluZSBhbmQgdGFiIGxpbmUgaW4gdGhlIHNhbWUgd2F5LiAgQWxsIHdpbmRv d3MgZm9yIHRoZQorc2FtZSBidWZmZXIgdXNlIHRoZSBzYW1lIEBjb2Rle21vZGUtbGluZS1mb3Jt YXR9LAorQGNvZGV7aGVhZGVyLWxpbmUtZm9ybWF0fSwgYW5kIEBjb2Rle3RhYi1saW5lLWZvcm1h dH0gdW5sZXNzIGEKK0Bjb2Rle21vZGUtbGluZS1mb3JtYXR9LCBAY29kZXtoZWFkZXItbGluZS1m b3JtYXR9LCBvcgorQGNvZGV7dGFiLWxpbmUtZm9ybWF0fSBwYXJhbWV0ZXIgaGFzIGJlZW4gc3Bl Y2lmaWVkIGZvciB0aGF0IHdpbmRvdworKEBweHJlZntXaW5kb3cgUGFyYW1ldGVyc30pLgogCiAg IEZvciBlZmZpY2llbmN5LCBFbWFjcyBkb2VzIG5vdCBjb250aW51b3VzbHkgcmVjb21wdXRlIGVh Y2ggd2luZG93J3MKIG1vZGUgbGluZSBhbmQgaGVhZGVyIGxpbmUuICBJdCBkb2VzIHNvIHdoZW4g Y2lyY3Vtc3RhbmNlcyBhcHBlYXIgdG8gY2FsbApAQCAtMjE2Nyw4ICsyMTcwLDggQEAgTW9kZSBM aW5lIERhdGEKIEBkZm57bW9kZSBsaW5lIGNvbnN0cnVjdH0sIG1hZGUgdXAgb2YgbGlzdHMsIHN0 cmluZ3MsIHN5bWJvbHMsIGFuZAogbnVtYmVycyBrZXB0IGluIGJ1ZmZlci1sb2NhbCB2YXJpYWJs ZXMuICBFYWNoIGRhdGEgdHlwZSBoYXMgYSBzcGVjaWZpYwogbWVhbmluZyBmb3IgdGhlIG1vZGUg bGluZSBhcHBlYXJhbmNlLCBhcyBkZXNjcmliZWQgYmVsb3cuICBUaGUgc2FtZSBkYXRhCi1zdHJ1 Y3R1cmUgaXMgdXNlZCBmb3IgY29uc3RydWN0aW5nIGZyYW1lIHRpdGxlcyAoQHB4cmVme0ZyYW1l IFRpdGxlc30pCi1hbmQgaGVhZGVyIGxpbmVzIChAcHhyZWZ7SGVhZGVyIExpbmVzfSkuCitzdHJ1 Y3R1cmUgaXMgdXNlZCBmb3IgY29uc3RydWN0aW5nIGZyYW1lIHRpdGxlcyAoQHB4cmVme0ZyYW1l IFRpdGxlc30pLAoraGVhZGVyIGxpbmVzIChAcHhyZWZ7SGVhZGVyIExpbmVzfSksIGFuZCB0YWIg bGluZXMgKEBweHJlZntUYWIgTGluZXN9KS4KIAogICBBIG1vZGUgbGluZSBjb25zdHJ1Y3QgbWF5 IGJlIGFzIHNpbXBsZSBhcyBhIGZpeGVkIHN0cmluZyBvZiB0ZXh0LAogYnV0IGl0IHVzdWFsbHkg c3BlY2lmaWVzIGhvdyB0byBjb21iaW5lIGZpeGVkIHN0cmluZ3Mgd2l0aCB2YXJpYWJsZXMnCkBA IC0yODE2LDYgKzI4MTksMzEgQEAgSGVhZGVyIExpbmVzCiBoZWFkZXIgbGluZSBhdCBvbmNlOyBp ZiBpdCBoYXMgYSBtb2RlIGxpbmUsIHRoZW4gaXQgZG9lcyBub3QgZGlzcGxheSBhCiBoZWFkZXIg bGluZS4KIAorQG5vZGUgVGFiIExpbmVzCitAc3Vic2VjdGlvbiBXaW5kb3cgVGFiIExpbmVzCitA Y2luZGV4IHRhYiBsaW5lIChvZiBhIHdpbmRvdykKK0BjaW5kZXggd2luZG93IHRhYiBsaW5lCisK KyAgQSB3aW5kb3cgY2FuIGhhdmUgYSBAZGZue3RhYiBsaW5lfSBhdCB0aGUgdG9wLiAgSWYgYm90 aCB0aGUgdGFiIGxpbmUKK2FuZCBoZWFkZXIgbGluZSBhcmUgdmlzaWJsZSwgdGhlIHRhYiBsaW5l IGFwcGVhcnMgYWJvdmUgdGhlIGhlYWRlciBsaW5lLgorVGhlIHRhYiBsaW5lIGZlYXR1cmUgaXMg Y29udHJvbGxlZCBsaWtlIHRoZSBtb2RlIGxpbmUgZmVhdHVyZSwgZXhjZXB0Cit0aGF0IGl0J3Mg Y29udHJvbGxlZCBieSBAY29kZXt0YWItbGluZS1mb3JtYXR9LiAgVW5saWtlIHRoZSBtb2RlIGxp bmUsCit0aGUgdGFiIGxpbmUgaXMgb25seSBleHBlY3RlZCB0byBiZSB1c2VkIHRvIGRpc3BsYXkg YSBsaXN0IG9mIHRhYnMKKyhAcHhyZWZ7VGFiIExpbmUsLCwgZW1hY3MsIFRoZSBHTlUgRW1hY3Mg TWFudWFsfSkgb3IgdGhlIHdpbmRvdwordG9vbCBiYXIgKEBweHJlZntXaW5kb3cgVG9vbCBCYXIs LCwgZW1hY3MsIFRoZSBHTlUgRW1hY3MgTWFudWFsfSk6CisKK0BkZWZ2YXIgdGFiLWxpbmUtZm9y bWF0CitUaGlzIHZhcmlhYmxlLCBsb2NhbCBpbiBldmVyeSBidWZmZXIsIHNwZWNpZmllcyBob3cg dG8gZGlzcGxheSB0aGUgdGFiCitsaW5lLCBmb3Igd2luZG93cyBkaXNwbGF5aW5nIHRoZSBidWZm ZXIuICBUaGUgZm9ybWF0IG9mIHRoZSB2YWx1ZSBpcyB0aGUKK3NhbWUgYXMgZm9yIEBjb2Rle21v ZGUtbGluZS1mb3JtYXR9IChAcHhyZWZ7TW9kZSBMaW5lIERhdGF9KS4gIEl0IGlzCitub3JtYWxs eSBAY29kZXtuaWx9LCBzbyB0aGF0IG9yZGluYXJ5IGJ1ZmZlcnMgaGF2ZSBubyB0YWIgbGluZS4K K0BlbmQgZGVmdmFyCisKK0BkZWZ1biB3aW5kb3ctdGFiLWxpbmUtaGVpZ2h0ICZvcHRpb25hbCB3 aW5kb3cKK1RoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgaGVpZ2h0IGluIHBpeGVscyBvZiBAdmFy e3dpbmRvd30ncyB0YWIgbGluZS4KK0B2YXJ7d2luZG93fSBtdXN0IGJlIGEgbGl2ZSB3aW5kb3cs IGFuZCBkZWZhdWx0cyB0byB0aGUgc2VsZWN0ZWQgd2luZG93LgorQGVuZCBkZWZ1bgorCiBAbm9k ZSBFbXVsYXRpbmcgTW9kZSBMaW5lCiBAc3Vic2VjdGlvbiBFbXVsYXRpbmcgTW9kZSBMaW5lIEZv cm1hdHRpbmcKIApkaWZmIC0tZ2l0IGEvZXRjL05FV1MgYi9ldGMvTkVXUwppbmRleCBlNWE2M2Nj OGE2Ny4uMzk4NzAwMzUxNjAgMTAwNjQ0Ci0tLSBhL2V0Yy9ORVdTCisrKyBiL2V0Yy9ORVdTCkBA IC0yNDUsNiArMjQ1LDEyIEBAIHdpbmRvdyBzeXN0ZW1zIG90aGVyIHRoYW4gTmV4dHN0ZXAuCiBX aGVuIHRoaXMgbWlub3IgbW9kZSBpcyBlbmFibGVkLCBidXR0b25zIHJlcHJlc2VudGluZyBtb2Rp ZmllciBrZXlzCiBhcmUgZGlzcGxheWVkIGFsb25nIHRoZSB0b29sIGJhci4KIAorKysrCisqKiBO ZXcgdXNlciBvcHRpb24gJ3Rvb2wtYmFyLWFsd2F5cy1zaG93LWRlZmF1bHQnLgorV2hlbiBub24t bmlsLCB0aGUgdG9vbCBiYXIgYXQgdGhlIHRvcCBvZiBhIGZyYW1lIGRvZXMgbm90IHNob3cgYnVm ZmVyCitsb2NhbCBjdXN0b21pemF0aW9uIG9mIHRoZSB0b29sIGJhci4gIFRoaXMgaXMgY29udmVu aWVudCB3aGVuIHVzaW5nIHRoZQorbmV3bHkgYWRkZWQgJ2dsb2JhbC13aW5kb3ctdG9vbC1iYXIt bW9kZScuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBuaWwuCisKICsrKwogKiogImQiIGluIHRoZSBt b2RlIGxpbmUgbm93IGluZGljYXRlcyB0aGF0IHRoZSB3aW5kb3cgaXMgZGVkaWNhdGVkLgogV2lu ZG93cyBoYXZlIGFsd2F5cyBiZWVuIGFibGUgdG8gYmUgZGVkaWNhdGVkIHRvIGEgc3BlY2lmaWMg YnVmZmVyOwpAQCAtMTkwNyw2ICsxOTEzLDE0IEBAIFRoaXMgbW9kZSBpcyB1c2VkIGJ5IGRlZmF1 bHQgZm9yIHRoZSBvdXRwdXQgb2YgJ2FzeW5jLXNoZWxsLWNvbW1hbmQnLgogVG8gcmV2ZXJ0IHRv IHRoZSBwcmV2aW91cyBiZWhhdmlvciwgc2V0IHRoZSAoYWxzbyBuZXcpIHZhcmlhYmxlCiAnYXN5 bmMtc2hlbGwtY29tbWFuZC1tb2RlJyB0byAnc2hlbGwtbW9kZScuICBBbnkgaG9va3Mgb3IgbW9k ZS1zcGVjaWZpYwogdmFyaWFibGVzIHVzZWQgc2hvdWxkIGJlIGFkYXB0ZWQgYXBwcm9wcmlhdGVs eS4KKworKysrCisqKiBOZXcgcGFja2FnZSBXaW5kb3ctVG9vbC1CYXIuCitUaGlzIHByb3ZpZGVz IGEgbmV3IG1pbm9yIG1vZGUsICd3aW5kb3ctdG9vbC1iYXItbW9kZScuICBXaGVuIHRoaXMgbWlu b3IKK21vZGUgaXMgZW5hYmxlZCwgYSB0b29sIGJhciBpcyBkaXNwbGF5ZWQgYXQgdGhlIHRvcCBv ZiBhIHdpbmRvdyBpZiB0aGUKK2J1ZmZlciBpbiB0aGUgd2luZG93IGhhcyBhIGJ1ZmZlciBsb2Nh bCB0b29sIGJhciwgY29tbW9ubHkgZnJvbSBpdHMKK21ham9yIG1vZGUuICBUaGUgZ2xvYmFsIG1p bm9yIG1vZGUgJ2dsb2JhbC13aW5kb3ctdG9vbC1iYXItbW9kZScgZW5hYmxlcwordGhpcyBtaW5v ciBtb2RlIGluIGFsbCBidWZmZXJzLgogDAogKiBJbmNvbXBhdGlibGUgTGlzcCBDaGFuZ2VzIGlu IEVtYWNzIDMwLjEKIAotLSAKMi4zOS4yCgo= --=_bb2861199e12fce1c461999a024828f6-- From debbugs-submit-bounces@debbugs.gnu.org Wed Jun 05 08:24:32 2024 Received: (at 68765) by debbugs.gnu.org; 5 Jun 2024 12:24:32 +0000 Received: from localhost ([127.0.0.1]:57512 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sEpgu-0003UF-05 for submit@debbugs.gnu.org; Wed, 05 Jun 2024 08:24:32 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48616) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sEpgq-0003TO-Nb for 68765@debbugs.gnu.org; Wed, 05 Jun 2024 08:24:29 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sEpTb-0006Zt-Kd; Wed, 05 Jun 2024 08:10:48 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=ZC1LhzykclpUXzfJNsZjWTjRfPFvjI2PBX0cpfKt45w=; b=M0RQCVF67Sy1 OUMl3ujgnHfC+Pqoq6uN4olxT3GjQeh6BBEDUclu3CoKGaQeyDtAtbr6fZSijDCV6vH3HeE4/9fHo Bu5Jh/stHI5JMxxaImp7W7kdH0UoUBG64vxyevk6ZwOUIALGZA9SiRC5CPWPsqaNoxWbnxYCB3eTA kNAc0R1Q9Yrp5ChqGWH/gpWHLw8CScBePiUnC3W3Npk/vVpuB6yQ5zwK0EOIOJio2Bh5yB288P1GY W5OL9PTTxHvexToRdRpjYESPW/CxUAEtpPsX71yBIfcF+BIdNilcSoi4cu7yPDVWOmiw4oVlJXCCo jcaNTYc4XBkXYF8dsRe8kQ==; Date: Wed, 05 Jun 2024 15:10:42 +0300 Message-Id: <86h6e7k2t9.fsf@gnu.org> From: Eli Zaretskii To: Jared Finder In-Reply-To: <76360aef38fd8e45a26b48c1d9df608c@finder.org> (message from Jared Finder on Tue, 04 Jun 2024 21:22:55 -0700) Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. References: <86v82ok8bq.fsf@gnu.org> <76360aef38fd8e45a26b48c1d9df608c@finder.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Tue, 04 Jun 2024 21:22:55 -0700 > From: Jared Finder > Cc: juri@linkov.net, 68765@debbugs.gnu.org, philipk@posteo.net, > monnier@iro.umontreal.ca > > On 2024-06-04 08:59, Eli Zaretskii wrote: > > I'm not against tool-bar-always-show-default and its effect. But > > introducing that optional behavior doesn't require any particular > > behavior from window-specific tool bars, it's almost an orthogonal > > feature. > > > > My conclusion from this is that the two considerations you provided > > in favor of a much more complex behavior do not contradict my > > suggestion. The first consideration is about a very rare case, which > > we could simply ignore (but if you feel strongly about detecting > > empty tool bars and not displaying them, I won't object), while the > > second consideration does not require the complicated behavior of > > window-specific tool bars. > > This sounds like a good result. I do think that auto-hiding the window > tool bar when tool-bar-map is nil is very valuable and is > straightforward to implement. > > I have attached a new documentation patch describing the intended > behavior. If this looks good to you I can draft a patch to > window-tool-bar.el based on all the feedback thus far. This LGTM, with one comment: you mention in the section about window tool bars that it cannot be shown if a tab line is shown in the window, but you don't have a similar caveat in the section about tab lines. I think we should add a similar caveat there as well. From debbugs-submit-bounces@debbugs.gnu.org Sat Jun 08 20:35:43 2024 Received: (at 68765) by debbugs.gnu.org; 9 Jun 2024 00:35:43 +0000 Received: from localhost ([127.0.0.1]:51138 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sG6X7-0003CY-MG for submit@debbugs.gnu.org; Sat, 08 Jun 2024 20:35:43 -0400 Received: from greenhill.hpalace.com ([192.155.80.58]:53518) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sG6X5-0003CL-NI for 68765@debbugs.gnu.org; Sat, 08 Jun 2024 20:35:41 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=finder.org; s=2018; t=1717892955; bh=NZkCvy7VvAtsh3XkSW4fPHtKn5JLWejQtgcP6U6n6uI=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=VdPSocHPWK01OnwowIaOTOrh20HOlwn01n0g2KgXO2HHJDKrWW9Kl0CMiORVENrQT Z6NkGXTK+n2/jVF0QzqBz+Ho9pgv/WqVFUyorSjh4Ft/gYxAdRjcm003Twdc3xh/T8 woxdu8ln0K78Qe7+KNFx3DvcPV+ZIQdhDwu5SfvRzsyCN241gGkDZlhlvbNfhKI4ZH +W3hMsaEZg4+kYnyvBUI4KBf1ONbEq5chNnbb+Z1/+ADvcW34t7qMQtrHU8aSuGTVw 5WgxohDG7zTbnwC1SLObaXd7fDcw+eR7tuEpia7M9vFHbXsnlWsT3nVR3F14J5mTW2 2F9MoTnWWjzDA== Received: from mail.finder.org (unknown [192.155.80.58]) by greenhill.hpalace.com (Postfix) with ESMTPSA id 9654CE5D; Sun, 9 Jun 2024 00:29:15 +0000 (UTC) MIME-Version: 1.0 Date: Sat, 08 Jun 2024 17:29:15 -0700 From: Jared Finder To: Eli Zaretskii Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. In-Reply-To: <86h6e7k2t9.fsf@gnu.org> References: <86v82ok8bq.fsf@gnu.org> <76360aef38fd8e45a26b48c1d9df608c@finder.org> <86h6e7k2t9.fsf@gnu.org> Message-ID: <435f03489dab91624a0d60f57b0ed698@finder.org> X-Sender: jared@finder.org Content-Type: multipart/mixed; boundary="=_6acc74289f6824b129e48cd0f293258b" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 68765 Cc: philipk@posteo.net, 68765@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=_6acc74289f6824b129e48cd0f293258b Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2024-06-05 05:10, Eli Zaretskii wrote: >> Date: Tue, 04 Jun 2024 21:22:55 -0700 >> From: Jared Finder >> Cc: juri@linkov.net, 68765@debbugs.gnu.org, philipk@posteo.net, >> monnier@iro.umontreal.ca >> >> On 2024-06-04 08:59, Eli Zaretskii wrote: >> > I'm not against tool-bar-always-show-default and its effect. But >> > introducing that optional behavior doesn't require any particular >> > behavior from window-specific tool bars, it's almost an orthogonal >> > feature. >> > >> > My conclusion from this is that the two considerations you provided >> > in favor of a much more complex behavior do not contradict my >> > suggestion. The first consideration is about a very rare case, which >> > we could simply ignore (but if you feel strongly about detecting >> > empty tool bars and not displaying them, I won't object), while the >> > second consideration does not require the complicated behavior of >> > window-specific tool bars. >> >> This sounds like a good result. I do think that auto-hiding the >> window >> tool bar when tool-bar-map is nil is very valuable and is >> straightforward to implement. >> >> I have attached a new documentation patch describing the intended >> behavior. If this looks good to you I can draft a patch to >> window-tool-bar.el based on all the feedback thus far. > > This LGTM, with one comment: you mention in the section about window > tool bars that it cannot be shown if a tab line is shown in the > window, but you don't have a similar caveat in the section about tab > lines. I think we should add a similar caveat there as well. Patch attached for updated manual, NEWS, and changes to window-tool-bar.el. This also extends support back to Emacs 27 in the package as requested earlier in this thread. -- MJF --=_6acc74289f6824b129e48cd0f293258b Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-Add-documentation-for-window-tool-bar-package.patch Content-Disposition: attachment; filename=0001-Add-documentation-for-window-tool-bar-package.patch; size=16863 RnJvbSA3MDZmZDRlZGZlNzhkMDZmNDdlOWNjNTk2MThjNDAyOTA3NzEzODFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+CkRhdGU6 IFNhdCwgOCBKdW4gMjAyNCAxNzoyMzo1OCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBkb2N1 bWVudGF0aW9uIGZvciB3aW5kb3ctdG9vbC1iYXIgcGFja2FnZQoKQWxzbyBjaGFuZ2Ugd2luZG93 LXRvb2wtbW9kZSB0byBub3QgcGF5IGF0dGVudGlvbiB0byBpZgp0b29sLWJhci1tYXAgaGFzIGEg YnVmZmVyIGxvY2FsIHZhbHVlIG9yIG5vdCBhcyB0aGF0IG1hZGUgdGhlCmRvY3VtZW50YXRpb24g Y29tcGxpY2F0ZWQuICBEb2N1bWVudGF0aW9uIGFkZGVkIGluIEVtYWNzIG1hbnVhbCwKRWxpc3Ag bWFudWFsLCBwYWNrYWdlIGNvbW1lbnRhcnksIGFuZCBkb2NzdHJpbmdzLiAgQWxzbyBleHRlbmQK d2luZG93LXRvb2wtYmFyIHN1cHBvcnQgdG8gRW1hY3MgMjcgYW5kIG5ld2VyLiAgKGJ1ZyM2ODc2 NSkKCiogZG9jL2VtYWNzL2VtYWNzLnRleGkgKFRvcCk6CiogZG9jL2VtYWNzL2ZyYW1lcy50ZXhp IChNZW51IEJhcnMpOgoqIGRvYy9lbWFjcy9nbG9zc2FyeS50ZXhpIChHbG9zc2FyeSk6CiogZG9j L2VtYWNzL21vZGVzLnRleGkgKE1pbm9yIE1vZGVzKToKKiBkb2MvZW1hY3Mvd2luZG93cy50ZXhp IChXaW5kb3dzLCBUYWIgTGluZSk6IE1lbnRpb24gV2luZG93ClRvb2wgQmFyLgooV2luZG93IFRv b2wgQmFyKTogTmV3IGRvY3VtZW50YXRpb24uCiogZG9jL2xpc3ByZWYvZWxpc3AudGV4aSAoVG9w KToKKiBkb2MvbGlzcHJlZi9tb2Rlcy50ZXhpIChNb2RlIExpbmUgRm9ybWF0LCBNb2RlIExpbmUg QmFzaWNzKQooTW9kZSBMaW5lIERhdGEpOiBNZW50aW9uIFRhYiBMaW5lcy4KKFRhYiBMaW5lcyk6 IE5ldyBkb2N1bWVudGF0aW9uLgoqIGV0Yy9ORVdTOiBNZW50aW9uIG5ld2x5IGFkZGVkIHZhcmlh YmxlIGFuZCBwYWNrYWdlLgoqIGxpc3Avd2luZG93LXRvb2wtYmFyLmVsICh3aW5kb3ctdG9vbC1i YXItbW9kZSk6IERvbid0IGRpc3BsYXkKdG9vbCBiYXIgd2hlbiB0b29sLWJhci1tYXAgaXMgbmls LgoqIGxpc3Avd2luZG93LXRvb2wtYmFyLmVsICh0b29sLWJhci1hbHdheXMtc2hvdy1kZWZhdWx0 KTogRGVmaW5lCnZhcmlhYmxlIGZvciBvbGRlciBFbWFjcyB2ZXJzaW9ucy4KLS0tCiBkb2MvZW1h Y3MvZW1hY3MudGV4aSAgICB8ICAxICsKIGRvYy9lbWFjcy9mcmFtZXMudGV4aSAgIHwgMTQgKysr KysrKystLS0KIGRvYy9lbWFjcy9nbG9zc2FyeS50ZXhpIHwgMTAgKysrKystLS0KIGRvYy9lbWFj cy9tb2Rlcy50ZXhpICAgIHwgIDMgKysrCiBkb2MvZW1hY3Mvd2luZG93cy50ZXhpICB8IDQzICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRvYy9saXNwcmVmL2VsaXNwLnRleGkgIHwg IDEgKwogZG9jL2xpc3ByZWYvbW9kZXMudGV4aSAgfCA1NiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLQogZXRjL05FV1MgICAgICAgICAgICAgICAgfCAxMiArKysrKysr KysKIGxpc3Avd2luZG93LXRvb2wtYmFyLmVsIHwgMjcgKysrKysrKysrKysrLS0tLS0tLS0KIDkg ZmlsZXMgY2hhbmdlZCwgMTM1IGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RvYy9lbWFjcy9lbWFjcy50ZXhpIGIvZG9jL2VtYWNzL2VtYWNzLnRleGkKaW5kZXgg N2Q3N2YxM2FiMjEuLjgyNDYwNDFmYjk1IDEwMDY0NAotLS0gYS9kb2MvZW1hY3MvZW1hY3MudGV4 aQorKysgYi9kb2MvZW1hY3MvZW1hY3MudGV4aQpAQCAtNTI5LDYgKzUyOSw3IEBAIFRvcAogKiBU ZW1wb3JhcnkgRGlzcGxheXM6OiAgRGlzcGxheWluZyBub24tZWRpdGFibGUgYnVmZmVycy4KICog V2luZG93IENvbnZlbmllbmNlOjogIENvbnZlbmllbmNlIGZ1bmN0aW9ucyBmb3Igd2luZG93IGhh bmRsaW5nLgogKiBUYWIgTGluZTo6ICAgICAgICAgICAgV2luZG93IHRhYiBsaW5lLgorKiBXaW5k b3cgVG9vbCBCYXI6OiAgICAgQSB0b29sIGJhciB0aGF0IGlzIGF0dGFjaGVkIHRvIHdpbmRvd3Mu CiAKIERpc3BsYXlpbmcgYSBCdWZmZXIgaW4gYSBXaW5kb3cKIApkaWZmIC0tZ2l0IGEvZG9jL2Vt YWNzL2ZyYW1lcy50ZXhpIGIvZG9jL2VtYWNzL2ZyYW1lcy50ZXhpCmluZGV4IDZjNjJmZGU0ZmZi Li5lMWZiZjk3NjhhZiAxMDA2NDQKLS0tIGEvZG9jL2VtYWNzL2ZyYW1lcy50ZXhpCisrKyBiL2Rv Yy9lbWFjcy9mcmFtZXMudGV4aQpAQCAtMTI5NSwxNiArMTI5NSwyMiBAQCBNZW51IEJhcnMKIEBu b2RlIFRvb2wgQmFycwogQHNlY3Rpb24gVG9vbCBCYXJzCiBAY2luZGV4IHRvb2wgYmFyIG1vZGUK K0BjaW5kZXggdG9vbCBiYXIsIGF0dGFjaGVkIHRvIGZyYW1lCiBAY2luZGV4IG1vZGUsIFRvb2wg QmFyCiBAY2luZGV4IGljb25zLCB0b29sYmFyCiAKLSAgT24gZ3JhcGhpY2FsIGRpc3BsYXlzLCBF bWFjcyBwdXRzIGEgQGRmbnt0b29sIGJhcn0gYXQgdGhlIHRvcCBvZgotZWFjaCBmcmFtZSwganVz dCBiZWxvdyB0aGUgbWVudSBiYXIuICBUaGlzIGlzIGEgcm93IG9mIGljb25zIHdoaWNoIHlvdQot Y2FuIGNsaWNrIG9uIHdpdGggdGhlIG1vdXNlIHRvIGludm9rZSB2YXJpb3VzIGNvbW1hbmRzLgor ICBPbiBncmFwaGljYWwgZGlzcGxheXMsIEVtYWNzIHB1dHMgYSBAZGZue3Rvb2wgYmFyfSBhdCB0 aGUgdG9wIG9mIGVhY2gKK2ZyYW1lLCBqdXN0IGJlbG93IHRoZSBtZW51IGJhci4gIFRoaXMgaXMg YSByb3cgb2YgYnV0dG9ucyB3aXRoIGljb25zCit3aGljaCB5b3UgY2FuIGNsaWNrIG9uIHdpdGgg dGhlIG1vdXNlIHRvIGludm9rZSB2YXJpb3VzIGNvbW1hbmRzLiAgRW1hY3MKK2NhbiBhbHNvIG9w dGlvbmFsbHkgZGlzcGxheSBhIHRvb2wgYmFyIGF0IHRoZSB0b3Agb2YgZWFjaCB3aW5kb3cKKyhA cHhyZWZ7V2luZG93IFRvb2wgQmFyfSkuCiAKK0B2aW5kZXggdG9vbC1iYXItYWx3YXlzLXNob3ct ZGVmYXVsdAogICBUaGUgZ2xvYmFsIChkZWZhdWx0KSB0b29sIGJhciBjb250YWlucyBnZW5lcmFs IGNvbW1hbmRzLiAgU29tZSBtYWpvcgogbW9kZXMgZGVmaW5lIHRoZWlyIG93biB0b29sIGJhcnM7 IHdoZW5ldmVyIGEgYnVmZmVyIHdpdGggc3VjaCBhIG1ham9yCi1tb2RlIGlzIGN1cnJlbnQsIHRo ZSBtb2RlJ3MgdG9vbCBiYXIgcmVwbGFjZXMgdGhlIGdsb2JhbCB0b29sIGJhci4KK21vZGUgaXMg Y3VycmVudCwgdGhlIG1vZGUncyB0b29sIGJhciByZXBsYWNlcyB0aGUgZ2xvYmFsIHRvb2wgYmFy LiAgVG8KK3ByZXZlbnQgdGhpcyByZXBsYWNlbWVudCBmcm9tIGhhcHBlbmluZywgY3VzdG9taXpl IHRoZSB2YXJpYWJsZQorQGNvZGV7dG9vbC1iYXItYWx3YXlzLXNob3ctZGVmYXVsdH0uCiAKIEBm aW5kZXggdG9vbC1iYXItbW9kZQogQHZpbmRleCB0b29sLWJhci1tb2RlCmRpZmYgLS1naXQgYS9k b2MvZW1hY3MvZ2xvc3NhcnkudGV4aSBiL2RvYy9lbWFjcy9nbG9zc2FyeS50ZXhpCmluZGV4IDM0 NGU0ODMxZjM2Li5lMjQ1Y2I4MTc1NCAxMDA2NDQKLS0tIGEvZG9jL2VtYWNzL2dsb3NzYXJ5LnRl eGkKKysrIGIvZG9jL2VtYWNzL2dsb3NzYXJ5LnRleGkKQEAgLTE0MzYsMTAgKzE0MzYsMTIgQEAg R2xvc3NhcnkKIGZvciB5b3VyIGZhdm9yaXRlIHNldCBvZiBmYWNlcyAocS52LikuCiAKIEBpdGVt IFRvb2wgQmFyCi1UaGUgdG9vbCBiYXIgaXMgYSBsaW5lIChzb21ldGltZXMgbXVsdGlwbGUgbGlu ZXMpIG9mIGljb25zIGF0IHRoZSB0b3AKLW9mIGFuIEVtYWNzIGZyYW1lLiAgQ2xpY2tpbmcgb24g b25lIG9mIHRoZXNlIGljb25zIGV4ZWN1dGVzIGEgY29tbWFuZC4KLVlvdSBjYW4gdGhpbmsgb2Yg dGhpcyBhcyBhIGdyYXBoaWNhbCByZWxhdGl2ZSBvZiB0aGUgbWVudSBiYXIgKHEudi4pLgotQHhy ZWZ7VG9vbCBCYXJzfS4KK1RoZSB0b29sIGJhciBpcyBhIGxpbmUgKHNvbWV0aW1lcyBtdWx0aXBs ZSBsaW5lcykgb2YgYnV0dG9ucyB3aXRoIGljb25zCithdCB0aGUgdG9wIG9mIGFuIEVtYWNzIGZy YW1lLiAgQ2xpY2tpbmcgb24gb25lIG9mIHRoZXNlIGJ1dHRvbnMgZXhlY3V0ZXMKK2EgY29tbWFu ZC4gIFlvdSBjYW4gdGhpbmsgb2YgdGhpcyBhcyBhIGdyYXBoaWNhbCByZWxhdGl2ZSBvZiB0aGUg bWVudQorYmFyIChxLnYuKS4gIEB4cmVme1Rvb2wgQmFyc30uICBUaGVyZSBpcyBhbHNvIGEgd2lu ZG93IHRvb2wgYmFyIHRoYXQKK2JlaGF2ZXMgc2ltaWxhcmx5LCBidXQgaXMgYXQgdGhlIHRvcCBv ZiBhbiBFbWFjcyB3aW5kb3cuICBAeHJlZntXaW5kb3cKK1Rvb2wgQmFyfS4KIAogQGFuY2hvcntH bG9zc2FyeS0tLVRvb2x0aXBzfQogQGl0ZW0gVG9vbHRpcHMKZGlmZiAtLWdpdCBhL2RvYy9lbWFj cy9tb2Rlcy50ZXhpIGIvZG9jL2VtYWNzL21vZGVzLnRleGkKaW5kZXggMjc3NmRjNzJhMjcuLjEz MjE0NjQwMTRkIDEwMDY0NAotLS0gYS9kb2MvZW1hY3MvbW9kZXMudGV4aQorKysgYi9kb2MvZW1h Y3MvbW9kZXMudGV4aQpAQCAtMjk1LDYgKzI5NSw5IEBAIE1pbm9yIE1vZGVzCiBidXQgdGhlIHRv b2wgYmFyIGlzIG9ubHkgZGlzcGxheWVkIG9uIGdyYXBoaWNhbCB0ZXJtaW5hbHMuICBAeHJlZntU b29sCiBCYXJzfS4KIAorQGl0ZW0KK1dpbmRvdyBUb29sIEJhciBtb2RlIGdpdmVzIHdpbmRvd3Mg YSB0b29sIGJhci4gIEB4cmVme1dpbmRvdyBUb29sIEJhcn0uCisKIEBpdGVtCiBUYWIgQmFyIG1v ZGUgZ2l2ZXMgZWFjaCBmcmFtZSBhIHRhYiBiYXIuICBAeHJlZntUYWIgQmFyc30uCiAKZGlmZiAt LWdpdCBhL2RvYy9lbWFjcy93aW5kb3dzLnRleGkgYi9kb2MvZW1hY3Mvd2luZG93cy50ZXhpCmlu ZGV4IGFkMjIyNWI1OTIyLi44MDM5NGUwZTU3MSAxMDA2NDQKLS0tIGEvZG9jL2VtYWNzL3dpbmRv d3MudGV4aQorKysgYi9kb2MvZW1hY3Mvd2luZG93cy50ZXhpCkBAIC0yMiw2ICsyMiw3IEBAIFdp bmRvd3MKICogRGlzcGxheWluZyBCdWZmZXJzOjogIEhvdyBFbWFjcyBwaWNrcyBhIHdpbmRvdyBm b3IgZGlzcGxheWluZyBhIGJ1ZmZlci4KICogV2luZG93IENvbnZlbmllbmNlOjogIENvbnZlbmll bmNlIGZ1bmN0aW9ucyBmb3Igd2luZG93IGhhbmRsaW5nLgogKiBUYWIgTGluZTo6ICAgICAgICAg ICAgV2luZG93IHRhYiBsaW5lLgorKiBXaW5kb3cgVG9vbCBCYXI6OiAgICAgQSB0b29sIGJhciB0 aGF0IGlzIGF0dGFjaGVkIHRvIHdpbmRvd3MuCiBAZW5kIG1lbnUKIAogQG5vZGUgQmFzaWMgV2lu ZG93CkBAIC02ODksMyArNjkwLDQ1IEBAIFRhYiBMaW5lCiBzd2l0Y2ggYmV0d2VlbiB3aW5kb3cg Y29uZmlndXJhdGlvbnMgY29udGFpbmluZyBzZXZlcmFsIHdpbmRvd3Mgd2l0aCBidWZmZXJzLAog dGFicyBvbiB0aGUgVGFiIExpbmUgYXQgdGhlIHRvcCBvZiBlYWNoIHdpbmRvdyBhcmUgdXNlZCB0 byBzd2l0Y2gKIGJldHdlZW4gYnVmZmVycyBpbiB0aGUgd2luZG93LgorCitBbHNvIG5vdGUgdGhh dCB0aGUgdGFiIGxpbmUgZGlzcGxheXMgaW4gdGhlIHNhbWUgc3BhY2UgYXMgdGhlIHdpbmRvdwor dG9vbCBiYXIsIHNvIG9ubHkgb25lIG9mIHRoZXNlIGNhbiBiZSBkaXNwbGF5IGF0IGEgdGltZSB1 bmxlc3MgeW91CitjdXN0b21pemUgdGhlIHZhbHVlIG9mIEBjb2Rle3RhYi1saW5lLWZvcm1hdH0g aW4gTGlzcC4gIEluIHRoaXMgY2FzZSwKK2FkZCBAY29kZXsoOmV2YWwgKHRhYi1saW5lLWZvcm1h dCkpfSB0byBAY29kZXt0YWItbGluZS1mb3JtYXR9LgorQHhyZWZ7TW9kZSBMaW5lIEZvcm1hdCws LCBlbGlzcCwgVGhlIEVtYWNzIExpc3AgUmVmZXJlbmNlIE1hbnVhbH0uCisKKworQG5vZGUgV2lu ZG93IFRvb2wgQmFyCitAc2VjdGlvbiBXaW5kb3cgVG9vbCBCYXIKKworQGNpbmRleCB3aW5kb3cg dG9vbCBiYXIKK0BjaW5kZXggbW9kZSwgd2luZG93IHRvb2wgYmFyCitAY2luZGV4IHRvb2wgYmFy LCBhdHRhY2hlZCB0byB3aW5kb3cKKworQGZpbmRleCBnbG9iYWwtd2luZG93LXRvb2wtYmFyLW1v ZGUKKyAgVGhlIGNvbW1hbmQgQGNvZGV7Z2xvYmFsLXdpbmRvdy10b29sLWJhci1tb2RlfSB0b2dn bGVzIHRoZSBkaXNwbGF5IG9mCithIHRvb2wgYmFyIGF0IHRoZSB0b3Agb2YgZWFjaCB3aW5kb3cu ICBXaGVuIGVuYWJsZWQsIG11bHRpcGxlIHdpbmRvd3MKK2NhbiBkaXNwbGF5IHRoZWlyIG93biB0 b29sIGJhciBzaW11bHRhbmVvdXNseS4gIFRvIGNvbnNlcnZlIHNwYWNlLCBhCit3aW5kb3cgdG9v bCBiYXIgaXMgaGlkZGVuIGlmIHRoZXJlIGFyZSBubyBidXR0b25zIHRvIHNob3csIGkuZS4gaWYK K0Bjb2Rle3Rvb2wtYmFyLW1hcH0gaXMgQGNvZGV7bmlsfS4KKworQGZpbmRleCB3aW5kb3ctdG9v bC1iYXItbW9kZQorSWYgeW91IHdhbnQgdG8gdG9nZ2xlIHRoZSBkaXNwbGF5IG9mIGEgd2luZG93 IHRvb2wgYmFyIGZvciBvbmx5IHNvbWUKK2J1ZmZlcnMsIHJ1biB0aGUgY29tbWFuZCBAY29kZXt3 aW5kb3ctdG9vbC1iYXItbW9kZX0gaW4gdGhvc2UgYnVmZmVycy4KK1RoaXMgaXMgdXNlZnVsIHRv IHB1dCBpbiBhIG1vZGUgaG9vay4gIEZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0aGUgd2luZG93 Cit0b29sIGJhciB0byBhcHBlYXIgb25seSBmb3IgYnVmZmVycyB0aGF0IGRvIG5vdCByZXByZXNl bnQgZmlsZXMgYW5kIGhhdmUKK2EgY3VzdG9tIHRvb2wgYmFyLCB5b3UgY291bGQgYWRkIHRoZSBm b2xsb3dpbmcgY29kZSB0byB5b3VyIGluaXQgZmlsZQorKEBweHJlZntJbml0IEZpbGV9KToKKwor QGV4YW1wbGUKKyhhZGQtaG9vayAnc3BlY2lhbC1tb2RlLWhvb2sgJ3dpbmRvdy10b29sLWJhci1t b2RlKQorQGVuZCBleGFtcGxlCisKK0VtYWNzIGNhbiBhbHNvIGRpc3BsYXkgYSBzaW5nbGUgdG9v bCBiYXIgYXQgdGhlIHRvcCBvZiBmcmFtZXMKKyhAcHhyZWZ7VG9vbCBCYXJzfSkuCisKK05vdGUg dGhhdCB0aGUgd2luZG93IHRvb2wgYmFyIGRpc3BsYXlzIGluIHRoZSBzYW1lIHNwYWNlIGFzIHRo ZSB0YWIKK2xpbmUsIHNvIG9ubHkgb25lIG9mIHRoZXNlIGNhbiBiZSBkaXNwbGF5IGF0IGEgdGlt ZSB1bmxlc3MgeW91IGN1c3RvbWl6ZQordGhlIHZhbHVlIG9mIEBjb2Rle3RhYi1saW5lLWZvcm1h dH0gaW4gTGlzcC4gIEluIHRoaXMgY2FzZSwgYWRkCitAY29kZXsoOmV2YWwgKHdpbmRvdy10b29s LWJhci1zdHJpbmcpKX0gdG8gQGNvZGV7dGFiLWxpbmUtZm9ybWF0fS4KK0B4cmVme01vZGUgTGlu ZSBGb3JtYXQsLCwgZWxpc3AsIFRoZSBFbWFjcyBMaXNwIFJlZmVyZW5jZSBNYW51YWx9LgpkaWZm IC0tZ2l0IGEvZG9jL2xpc3ByZWYvZWxpc3AudGV4aSBiL2RvYy9saXNwcmVmL2VsaXNwLnRleGkK aW5kZXggMzM5MjcyZDFmMDUuLjEwNTlkMGRjZjYxIDEwMDY0NAotLS0gYS9kb2MvbGlzcHJlZi9l bGlzcC50ZXhpCisrKyBiL2RvYy9saXNwcmVmL2VsaXNwLnRleGkKQEAgLTkyNSw2ICs5MjUsNyBA QCBUb3AKICogJS1Db25zdHJ1Y3RzOjogICAgICAgICAgICBQdXR0aW5nIGluZm9ybWF0aW9uIGlu dG8gYSBtb2RlIGxpbmUuCiAqIFByb3BlcnRpZXMgaW4gTW9kZTo6ICAgICAgVXNpbmcgdGV4dCBw cm9wZXJ0aWVzIGluIHRoZSBtb2RlIGxpbmUuCiAqIEhlYWRlciBMaW5lczo6ICAgICAgICAgICAg TGlrZSBhIG1vZGUgbGluZSwgYnV0IGF0IHRoZSB0b3AuCisqIFRhYiBMaW5lczo6ICAgICAgICAg ICAgICAgQSBsaW5lIHRoYXQgaXMgYWJvdmUgdGhlIGhlYWRlciBsaW5lLgogKiBFbXVsYXRpbmcg TW9kZSBMaW5lOjogICAgIEZvcm1hdHRpbmcgdGV4dCBhcyB0aGUgbW9kZSBsaW5lIHdvdWxkLgog CiBGb250IExvY2sgTW9kZQpkaWZmIC0tZ2l0IGEvZG9jL2xpc3ByZWYvbW9kZXMudGV4aSBiL2Rv Yy9saXNwcmVmL21vZGVzLnRleGkKaW5kZXggY2Y2N2IzMTk5MjQuLmYzZDRmNTM0N2IzIDEwMDY0 NAotLS0gYS9kb2MvbGlzcHJlZi9tb2Rlcy50ZXhpCisrKyBiL2RvYy9saXNwcmVmL21vZGVzLnRl eGkKQEAgLTIwNzQsMTQgKzIwNzQsMTQgQEAgTW9kZSBMaW5lIEZvcm1hdAogbGluZSBhdCB0aGUg Ym90dG9tLCB3aGljaCBkaXNwbGF5cyBzdGF0dXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJ1ZmZl cgogZGlzcGxheWVkIGluIHRoZSB3aW5kb3cuICBUaGUgbW9kZSBsaW5lIGNvbnRhaW5zIGluZm9y bWF0aW9uIGFib3V0IHRoZQogYnVmZmVyLCBzdWNoIGFzIGl0cyBuYW1lLCBhc3NvY2lhdGVkIGZp bGUsIGRlcHRoIG9mIHJlY3Vyc2l2ZSBlZGl0aW5nLAotYW5kIG1ham9yIGFuZCBtaW5vciBtb2Rl cy4gIEEgd2luZG93IGNhbiBhbHNvIGhhdmUgYSBAZGZue2hlYWRlcgotbGluZX0sIHdoaWNoIGlz IG11Y2ggbGlrZSB0aGUgbW9kZSBsaW5lIGJ1dCBhcHBlYXJzIGF0IHRoZSB0b3Agb2YgdGhlCi13 aW5kb3cuCithbmQgbWFqb3IgYW5kIG1pbm9yIG1vZGVzLiAgQSB3aW5kb3cgY2FuIGFsc28gaGF2 ZSBhIEBkZm57aGVhZGVyIGxpbmV9CithbmQgYSBAZGZue3RhYiBsaW5lfSwgd2hpY2ggYXJlIG11 Y2ggbGlrZSB0aGUgbW9kZSBsaW5lIGJ1dCB0aGV5IGFwcGVhcgorYXQgdGhlIHRvcCBvZiB0aGUg d2luZG93LgogCi0gIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgaG93IHRvIGNvbnRyb2wgdGhlIGNv bnRlbnRzIG9mIHRoZSBtb2RlIGxpbmUKLWFuZCBoZWFkZXIgbGluZS4gIFdlIGluY2x1ZGUgaXQg aW4gdGhpcyBjaGFwdGVyIGJlY2F1c2UgbXVjaCBvZiB0aGUKLWluZm9ybWF0aW9uIGRpc3BsYXll ZCBpbiB0aGUgbW9kZSBsaW5lIHJlbGF0ZXMgdG8gdGhlIGVuYWJsZWQgbWFqb3IgYW5kCi1taW5v ciBtb2Rlcy4KKyAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBob3cgdG8gY29udHJvbCB0aGUgY29u dGVudHMgb2YgdGhlIG1vZGUgbGluZSwKK2hlYWRlciBsaW5lLCBhbmQgdGFiIGxpbmUuICBXZSBp bmNsdWRlIGl0IGluIHRoaXMgY2hhcHRlciBiZWNhdXNlIG11Y2gKK29mIHRoZSBpbmZvcm1hdGlv biBkaXNwbGF5ZWQgaW4gdGhlIG1vZGUgbGluZSByZWxhdGVzIHRvIHRoZSBlbmFibGVkCittYWpv ciBhbmQgbWlub3IgbW9kZXMuCiAKIEBtZW51CiAqIEJhc2U6IE1vZGUgTGluZSBCYXNpY3MuICAg ICAgIEJhc2ljIGlkZWFzIG9mIG1vZGUgbGluZSBjb250cm9sLgpAQCAtMjA5MSw2ICsyMDkxLDcg QEAgTW9kZSBMaW5lIEZvcm1hdAogKiAlLUNvbnN0cnVjdHM6OiAgICAgICAgICAgICAgICBQdXR0 aW5nIGluZm9ybWF0aW9uIGludG8gYSBtb2RlIGxpbmUuCiAqIFByb3BlcnRpZXMgaW4gTW9kZTo6 ICAgICAgICAgIFVzaW5nIHRleHQgcHJvcGVydGllcyBpbiB0aGUgbW9kZSBsaW5lLgogKiBIZWFk ZXIgTGluZXM6OiAgICAgICAgICAgICAgICBMaWtlIGEgbW9kZSBsaW5lLCBidXQgYXQgdGhlIHRv cC4KKyogVGFiIExpbmVzOjogICAgICAgICAgICAgICAgICAgQSBsaW5lIHRoYXQgaXMgYWJvdmUg dGhlIGhlYWRlciBsaW5lLgogKiBFbXVsYXRpbmcgTW9kZSBMaW5lOjogICAgICAgICBGb3JtYXR0 aW5nIHRleHQgYXMgdGhlIG1vZGUgbGluZSB3b3VsZC4KIEBlbmQgbWVudQogCkBAIC0yMTAxLDEx ICsyMTAyLDEzIEBAIE1vZGUgTGluZSBCYXNpY3MKIHZhcmlhYmxlIEBjb2Rle21vZGUtbGluZS1m b3JtYXR9IChAcHhyZWZ7TW9kZSBMaW5lIFRvcH0pLiAgVGhpcyB2YXJpYWJsZQogaG9sZHMgYSBA ZGZue21vZGUgbGluZSBjb25zdHJ1Y3R9OiBhIHRlbXBsYXRlIHRoYXQgY29udHJvbHMgd2hhdCBp cwogZGlzcGxheWVkIG9uIHRoZSBidWZmZXIncyBtb2RlIGxpbmUuICBUaGUgdmFsdWUgb2YKLUBj b2Rle2hlYWRlci1saW5lLWZvcm1hdH0gc3BlY2lmaWVzIHRoZSBidWZmZXIncyBoZWFkZXIgbGlu ZSBpbiB0aGUgc2FtZQotd2F5LiAgQWxsIHdpbmRvd3MgZm9yIHRoZSBzYW1lIGJ1ZmZlciB1c2Ug dGhlIHNhbWUKLUBjb2Rle21vZGUtbGluZS1mb3JtYXR9IGFuZCBAY29kZXtoZWFkZXItbGluZS1m b3JtYXR9IHVubGVzcyBhCi1AY29kZXttb2RlLWxpbmUtZm9ybWF0fSBvciBAY29kZXtoZWFkZXIt bGluZS1mb3JtYXR9IHBhcmFtZXRlciBoYXMgYmVlbgotc3BlY2lmaWVkIGZvciB0aGF0IHdpbmRv dyAoQHB4cmVme1dpbmRvdyBQYXJhbWV0ZXJzfSkuCitAY29kZXtoZWFkZXItbGluZS1mb3JtYXR9 IGFuZCBAY29kZXt0YWItbGluZS1mb3JtYXR9IHNwZWNpZmllcyB0aGUKK2J1ZmZlcidzIGhlYWRl ciBsaW5lIGFuZCB0YWIgbGluZSBpbiB0aGUgc2FtZSB3YXkuICBBbGwgd2luZG93cyBmb3IgdGhl CitzYW1lIGJ1ZmZlciB1c2UgdGhlIHNhbWUgQGNvZGV7bW9kZS1saW5lLWZvcm1hdH0sCitAY29k ZXtoZWFkZXItbGluZS1mb3JtYXR9LCBhbmQgQGNvZGV7dGFiLWxpbmUtZm9ybWF0fSB1bmxlc3Mg YQorQGNvZGV7bW9kZS1saW5lLWZvcm1hdH0sIEBjb2Rle2hlYWRlci1saW5lLWZvcm1hdH0sIG9y CitAY29kZXt0YWItbGluZS1mb3JtYXR9IHBhcmFtZXRlciBoYXMgYmVlbiBzcGVjaWZpZWQgZm9y IHRoYXQgd2luZG93CisoQHB4cmVme1dpbmRvdyBQYXJhbWV0ZXJzfSkuCiAKICAgRm9yIGVmZmlj aWVuY3ksIEVtYWNzIGRvZXMgbm90IGNvbnRpbnVvdXNseSByZWNvbXB1dGUgZWFjaCB3aW5kb3cn cwogbW9kZSBsaW5lIGFuZCBoZWFkZXIgbGluZS4gIEl0IGRvZXMgc28gd2hlbiBjaXJjdW1zdGFu Y2VzIGFwcGVhciB0byBjYWxsCkBAIC0yMTY3LDggKzIxNzAsOCBAQCBNb2RlIExpbmUgRGF0YQog QGRmbnttb2RlIGxpbmUgY29uc3RydWN0fSwgbWFkZSB1cCBvZiBsaXN0cywgc3RyaW5ncywgc3lt Ym9scywgYW5kCiBudW1iZXJzIGtlcHQgaW4gYnVmZmVyLWxvY2FsIHZhcmlhYmxlcy4gIEVhY2gg ZGF0YSB0eXBlIGhhcyBhIHNwZWNpZmljCiBtZWFuaW5nIGZvciB0aGUgbW9kZSBsaW5lIGFwcGVh cmFuY2UsIGFzIGRlc2NyaWJlZCBiZWxvdy4gIFRoZSBzYW1lIGRhdGEKLXN0cnVjdHVyZSBpcyB1 c2VkIGZvciBjb25zdHJ1Y3RpbmcgZnJhbWUgdGl0bGVzIChAcHhyZWZ7RnJhbWUgVGl0bGVzfSkK LWFuZCBoZWFkZXIgbGluZXMgKEBweHJlZntIZWFkZXIgTGluZXN9KS4KK3N0cnVjdHVyZSBpcyB1 c2VkIGZvciBjb25zdHJ1Y3RpbmcgZnJhbWUgdGl0bGVzIChAcHhyZWZ7RnJhbWUgVGl0bGVzfSks CitoZWFkZXIgbGluZXMgKEBweHJlZntIZWFkZXIgTGluZXN9KSwgYW5kIHRhYiBsaW5lcyAoQHB4 cmVme1RhYiBMaW5lc30pLgogCiAgIEEgbW9kZSBsaW5lIGNvbnN0cnVjdCBtYXkgYmUgYXMgc2lt cGxlIGFzIGEgZml4ZWQgc3RyaW5nIG9mIHRleHQsCiBidXQgaXQgdXN1YWxseSBzcGVjaWZpZXMg aG93IHRvIGNvbWJpbmUgZml4ZWQgc3RyaW5ncyB3aXRoIHZhcmlhYmxlcycKQEAgLTI4MTYsNiAr MjgxOSwzMSBAQCBIZWFkZXIgTGluZXMKIGhlYWRlciBsaW5lIGF0IG9uY2U7IGlmIGl0IGhhcyBh IG1vZGUgbGluZSwgdGhlbiBpdCBkb2VzIG5vdCBkaXNwbGF5IGEKIGhlYWRlciBsaW5lLgogCitA bm9kZSBUYWIgTGluZXMKK0BzdWJzZWN0aW9uIFdpbmRvdyBUYWIgTGluZXMKK0BjaW5kZXggdGFi IGxpbmUgKG9mIGEgd2luZG93KQorQGNpbmRleCB3aW5kb3cgdGFiIGxpbmUKKworICBBIHdpbmRv dyBjYW4gaGF2ZSBhIEBkZm57dGFiIGxpbmV9IGF0IHRoZSB0b3AuICBJZiBib3RoIHRoZSB0YWIg bGluZQorYW5kIGhlYWRlciBsaW5lIGFyZSB2aXNpYmxlLCB0aGUgdGFiIGxpbmUgYXBwZWFycyBh Ym92ZSB0aGUgaGVhZGVyIGxpbmUuCitUaGUgdGFiIGxpbmUgZmVhdHVyZSBpcyBjb250cm9sbGVk IGxpa2UgdGhlIG1vZGUgbGluZSBmZWF0dXJlLCBleGNlcHQKK3RoYXQgaXQncyBjb250cm9sbGVk IGJ5IEBjb2Rle3RhYi1saW5lLWZvcm1hdH0uICBVbmxpa2UgdGhlIG1vZGUgbGluZSwKK3RoZSB0 YWIgbGluZSBpcyBvbmx5IGV4cGVjdGVkIHRvIGJlIHVzZWQgdG8gZGlzcGxheSBhIGxpc3Qgb2Yg dGFicworKEBweHJlZntUYWIgTGluZSwsLCBlbWFjcywgVGhlIEdOVSBFbWFjcyBNYW51YWx9KSBv ciB0aGUgd2luZG93Cit0b29sIGJhciAoQHB4cmVme1dpbmRvdyBUb29sIEJhciwsLCBlbWFjcywg VGhlIEdOVSBFbWFjcyBNYW51YWx9KToKKworQGRlZnZhciB0YWItbGluZS1mb3JtYXQKK1RoaXMg dmFyaWFibGUsIGxvY2FsIGluIGV2ZXJ5IGJ1ZmZlciwgc3BlY2lmaWVzIGhvdyB0byBkaXNwbGF5 IHRoZSB0YWIKK2xpbmUsIGZvciB3aW5kb3dzIGRpc3BsYXlpbmcgdGhlIGJ1ZmZlci4gIFRoZSBm b3JtYXQgb2YgdGhlIHZhbHVlIGlzIHRoZQorc2FtZSBhcyBmb3IgQGNvZGV7bW9kZS1saW5lLWZv cm1hdH0gKEBweHJlZntNb2RlIExpbmUgRGF0YX0pLiAgSXQgaXMKK25vcm1hbGx5IEBjb2Rle25p bH0sIHNvIHRoYXQgb3JkaW5hcnkgYnVmZmVycyBoYXZlIG5vIHRhYiBsaW5lLgorQGVuZCBkZWZ2 YXIKKworQGRlZnVuIHdpbmRvdy10YWItbGluZS1oZWlnaHQgJm9wdGlvbmFsIHdpbmRvdworVGhp cyBmdW5jdGlvbiByZXR1cm5zIHRoZSBoZWlnaHQgaW4gcGl4ZWxzIG9mIEB2YXJ7d2luZG93fSdz IHRhYiBsaW5lLgorQHZhcnt3aW5kb3d9IG11c3QgYmUgYSBsaXZlIHdpbmRvdywgYW5kIGRlZmF1 bHRzIHRvIHRoZSBzZWxlY3RlZCB3aW5kb3cuCitAZW5kIGRlZnVuCisKIEBub2RlIEVtdWxhdGlu ZyBNb2RlIExpbmUKIEBzdWJzZWN0aW9uIEVtdWxhdGluZyBNb2RlIExpbmUgRm9ybWF0dGluZwog CmRpZmYgLS1naXQgYS9ldGMvTkVXUyBiL2V0Yy9ORVdTCmluZGV4IGQ2YThmYTcxMjJiLi45M2U1 Zjg1YWVlMCAxMDA2NDQKLS0tIGEvZXRjL05FV1MKKysrIGIvZXRjL05FV1MKQEAgLTI1Nyw2ICsy NTcsMTEgQEAgd2luZG93IHN5c3RlbXMgb3RoZXIgdGhhbiBOZXh0c3RlcC4KIFdoZW4gdGhpcyBt aW5vciBtb2RlIGlzIGVuYWJsZWQsIGJ1dHRvbnMgcmVwcmVzZW50aW5nIG1vZGlmaWVyIGtleXMK IGFyZSBkaXNwbGF5ZWQgYWxvbmcgdGhlIHRvb2wgYmFyLgogCisrKysKKyoqIE5ldyB1c2VyIG9w dGlvbiAndG9vbC1iYXItYWx3YXlzLXNob3ctZGVmYXVsdCcuCitXaGVuIG5vbi1uaWwsIHRoZSB0 b29sIGJhciBhdCB0aGUgdG9wIG9mIGEgZnJhbWUgZG9lcyBub3Qgc2hvdyBidWZmZXIKK2xvY2Fs IGN1c3RvbWl6YXRpb24gb2YgdGhlIHRvb2wgYmFyLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgbmls LgorCiArKysKICoqICJkIiBpbiB0aGUgbW9kZSBsaW5lIG5vdyBpbmRpY2F0ZXMgdGhhdCB0aGUg d2luZG93IGlzIGRlZGljYXRlZC4KIFdpbmRvd3MgaGF2ZSBhbHdheXMgYmVlbiBhYmxlIHRvIGJl IGRlZGljYXRlZCB0byBhIHNwZWNpZmljIGJ1ZmZlcjsKQEAgLTE5OTgsNiArMjAwMywxMyBAQCBU byByZXZlcnQgdG8gdGhlIHByZXZpb3VzIGJlaGF2aW9yLCBzZXQgdGhlIChhbHNvIG5ldykgdmFy aWFibGUKICdhc3luYy1zaGVsbC1jb21tYW5kLW1vZGUnIHRvICdzaGVsbC1tb2RlJy4gIEFueSBo b29rcyBvciBtb2RlLXNwZWNpZmljCiB2YXJpYWJsZXMgdXNlZCBzaG91bGQgYmUgYWRhcHRlZCBh cHByb3ByaWF0ZWx5LgogCisrKysKKyoqIE5ldyBwYWNrYWdlIFdpbmRvdy1Ub29sLUJhci4KK1Ro aXMgcHJvdmlkZXMgYSBuZXcgbWlub3IgbW9kZSwgJ3dpbmRvdy10b29sLWJhci1tb2RlJy4gIFdo ZW4gdGhpcyBtaW5vcgorbW9kZSBpcyBlbmFibGVkLCBhIHRvb2wgYmFyIGlzIGRpc3BsYXllZCBh dCB0aGUgdG9wIG9mIGEgd2luZG93LiAgVG8KK2NvbnNlcnZlIHNwYWNlLCBubyB0b29sIGJhciBp cyBzaG93biBpZiAndG9vbC1iYXItbWFwJyBpcyBuaWwuICBUaGUKK2dsb2JhbCBtaW5vciBtb2Rl ICdnbG9iYWwtd2luZG93LXRvb2wtYmFyLW1vZGUnIGVuYWJsZXMgdGhpcyBtaW5vciBtb2RlCitp biBhbGwgYnVmZmVycy4KIAwKICogSW5jb21wYXRpYmxlIExpc3AgQ2hhbmdlcyBpbiBFbWFjcyAz MC4xCiAKZGlmZiAtLWdpdCBhL2xpc3Avd2luZG93LXRvb2wtYmFyLmVsIGIvbGlzcC93aW5kb3ct dG9vbC1iYXIuZWwKaW5kZXggYTlkMTA2NTBiOTguLjYzNDg0ZGEzMjU1IDEwMDY0NAotLS0gYS9s aXNwL3dpbmRvdy10b29sLWJhci5lbAorKysgYi9saXNwL3dpbmRvdy10b29sLWJhci5lbApAQCAt NCw5ICs0LDkgQEAKIAogOzsgQXV0aG9yOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+ CiA7OyBDcmVhdGVkOiBOb3YgMjEsIDIwMjMKLTs7IFZlcnNpb246IDAuMgorOzsgVmVyc2lvbjog MC4yLjEKIDs7IEtleXdvcmRzOiBtb3VzZQotOzsgUGFja2FnZS1SZXF1aXJlczogKChlbWFjcyAi MjkuMSIpKQorOzsgUGFja2FnZS1SZXF1aXJlczogKChlbWFjcyAiMjcuMSIpIChjb21wYXQgIjI5 LjEiKSkKIAogOzsgVGhpcyBpcyBhIEdOVSBFTFBBIDpjb3JlIHBhY2thZ2UuICBBdm9pZCBhZGRp bmcgZnVuY3Rpb25hbGl0eSB0aGF0CiA7OyBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSB2ZXJzaW9u IG9mIEVtYWNzIHJlY29yZGVkIGFib3ZlIG9yIGFueSBvZgpAQCAtMzUsMTEgKzM1LDExIEBACiA7 OyBnZW5lcmFsbHkgaGF2ZSBzZW5zaWJsZSB0b29sIGJhcnMsIGZvciBleGFtcGxlOiAqaW5mbyos ICpoZWxwKiwgYW5kCiA7OyAqZXd3KiBoYXZlIHRoZW0uCiA7OwotOzsgSXQgZG9lcyB0aGlzIHdo aWxlIGJlaW5nIG1pbmRmdWwgb2Ygc2NyZWVuIHJlYWwgZXN0YXRlLiAgTW9zdCBtb2RlcwotOzsg ZG8gbm90IHByb3ZpZGUgYSBjdXN0b20gdG9vbCBiYXIsIGFuZCB0aGlzIHBhY2thZ2UgZG9lcyBu b3Qgc2hvdyB0aGUKLTs7IGRlZmF1bHQgdG9vbCBiYXIuICBUaGlzIG1lYW5zIHRoYXQgZm9yIG1v c3QgYnVmZmVycyB0aGVyZSB3aWxsIGJlIG5vCi07OyBzcGFjZSB0YWtlbiB1cC4gIEZ1cnRoZXJt b3JlLCB5b3UgY2FuIHB1dCB0aGlzIHRvb2wgYmFyIGluIHRoZSBtb2RlCi07OyBsaW5lIG9yIHRh YiBsaW5lIGlmIHlvdSB3YW50IHRvIHNoYXJlIGl0IHdpdGggZXhpc3RpbmcgY29udGVudC4KKzs7 IEl0IGRvZXMgdGhpcyB3aGlsZSBiZWluZyBtaW5kZnVsIG9mIHNjcmVlbiByZWFsIGVzdGF0ZS4g IElmCis7OyBgdG9vbC1iYXItbWFwJyBpcyBuaWwsIHRoZW4gdGhpcyBwYWNrYWdlIHdpbGwgbm90 IHRha2UgdXAgYW55IHNwYWNlCis7OyBmb3IgYW4gZW1wdHkgdG9vbCBiYXIuICBNb3N0IG1vZGVz IGRvIG5vdCBkZWZpbmUgYSBjdXN0b20gdG9vbCBiYXIsCis7OyBzbyBjYWxsaW5nIChzZXRxIHRv b2wtYmFyLW1hcCBuaWwpIGluIHlvdXIgaW5pdCBmaWxlIHdpbGwgbWFrZSBtb3N0Cis7OyBidWZm ZXJzIG5vdCB0YWtlIHVwIHNwYWNlIGZvciBhIHRvb2wgYmFyLgogOzsKIDs7IFRvIGdldCB0aGUg ZGVmYXVsdCBiZWhhdmlvciwgcnVuIChnbG9iYWwtd2luZG93LXRvb2wtYmFyLW1vZGUgMSkgb3IK IDs7IGVuYWJsZSB2aWEgTS14IGN1c3RvbWl6ZS1ncm91cCBSRVQgd2luZG93LXRvb2wtYmFyIFJF VC4gIFRoaXMgdXNlcwpAQCAtNDgsNiArNDgsOSBAQAogOzsgSWYgeW91IHdhbnQgdG8gc2hhcmUg c3BhY2Ugd2l0aCBhbiBleGlzdGluZyB0YWIgbGluZSwgbW9kZSBsaW5lLCBvcgogOzsgaGVhZGVy IGxpbmUsIGFkZCAoOmV2YWwgKHdpbmRvdy10b29sLWJhci1zdHJpbmcpKSB0bwogOzsgYHRhYi1s aW5lLWZvcm1hdCcsIGBtb2RlLWxpbmUtZm9ybWF0Jywgb3IgYGhlYWRlci1saW5lLWZvcm1hdCcu Cis7OworOzsgRm9yIGFkZGl0aW9uYWwgZG9jdW1lbnRhdGlvbiwgc2VlIGluZm8gbm9kZSBgKGVt YWNzKVdpbmRvdyBUb29sCis7OyBCYXInCiAKIDs7OyBLbm93biBpc3N1ZXM6CiA7OwpAQCAtOTIs NiArOTUsNyBAQAogCiA7OzsgQ29kZToKIAorKHJlcXVpcmUgJ2NvbXBhdCkKIChyZXF1aXJlICdt d2hlZWwpCiAocmVxdWlyZSAndGFiLWxpbmUpCiAocmVxdWlyZSAndG9vbC1iYXIpCkBAIC0yNzEs NyArMjc1LDcgQEAgd2luZG93LXRvb2wtYmFyLS1ncmFwaGljYWwtc2VwYXJhdG9yCiAoZGVmdW4g d2luZG93LXRvb2wtYmFyLS1rZXltYXAtZW50cnktdG8tc3RyaW5nIChtZW51LWl0ZW0pCiAgICJD b252ZXJ0IE1FTlUtSVRFTSBpbnRvIGEgKHByb3BlcnRpemVkKSBzdHJpbmcgcmVwcmVzZW50YXRp b24uCiAKLU1FTlUtSVRFTSBpcyBhIG1lbnUgaXRlbSB0byBjb252ZXJ0LiAgU2VlIGluZm8gbm9k ZSAoZWxpc3ApVG9vbCBCYXIuIgorTUVOVS1JVEVNIGlzIGEgbWVudSBpdGVtIHRvIGNvbnZlcnQu ICBTZWUgaW5mbyBub2RlIGAoZWxpc3ApVG9vbCBCYXInLiIKICAgKHBjYXNlLWV4aGF1c3RpdmUg bWVudS1pdGVtCiAgICAgOzsgU2VwYXJhdG9ycwogICAgICgob3IgYCgsXyAiLS0iKQpAQCAtMzk0 LDggKzM5OCw3IEBAIHdpbmRvdy10b29sLWJhci1tb2RlCiAgICJUb2dnbGUgZGlzcGxheSBvZiB0 aGUgdG9vbCBiYXIgaW4gdGhlIHRhYiBsaW5lIG9mIHRoZSBjdXJyZW50IGJ1ZmZlci4iCiAgIDpn bG9iYWwgbmlsCiAgIChsZXQgKChzaG91bGQtZGlzcGxheSAoYW5kIHdpbmRvdy10b29sLWJhci1t b2RlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKGVxIHRvb2wtYmFyLW1hcAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdC12YWx1ZSAndG9v bC1iYXItbWFwKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbC1iYXItbWFw KSkKICAgICAgICAgKGRlZmF1bHQtdmFsdWUgJyg6ZXZhbCAod2luZG93LXRvb2wtYmFyLXN0cmlu ZykpKSkKIAogICAgIDs7IFByZXNlcnZlIGV4aXN0aW5nIHRhYi1saW5lIHNldCBvdXRzaWRlIG9m IHRoaXMgbW9kZQpAQCAtNDY1LDYgKzQ2OCwxMCBAQCB3aW5kb3ctdG9vbC1iYXItYnV0dG9uLWRp c2FibGVkCiAgIDpncm91cCAnd2luZG93LXRvb2wtYmFyKQogDAogOzs7IFdvcmthcm91bmQgZm9y IGh0dHBzOi8vZGViYnVncy5nbnUub3JnL2NnaS9idWdyZXBvcnQuY2dpP2J1Zz02ODMzNC4KKwor OzsgVGhpcyBzcGVjaWFsIHZhcmlhYmxlIGlzIGFkZGVkIGluIEVtYWNzIDMwLjEuCisoZGVmdmFy IHRvb2wtYmFyLWFsd2F5cy1zaG93LWRlZmF1bHQpCisKIChkZWZ1biB3aW5kb3ctdG9vbC1iYXIt LWdldC1rZXltYXAgKCkKICAgIlJldHVybiB0aGUgdG9vbCBiYXIga2V5bWFwLiIKICAgKGxldCAo KHRvb2wtYmFyLWFsd2F5cy1zaG93LWRlZmF1bHQgbmlsKSkKLS0gCjIuMzkuMgoK --=_6acc74289f6824b129e48cd0f293258b-- From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 09 09:10:30 2024 Received: (at 68765-done) by debbugs.gnu.org; 9 Jun 2024 13:10:30 +0000 Received: from localhost ([127.0.0.1]:36633 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sGIJZ-0003pK-F9 for submit@debbugs.gnu.org; Sun, 09 Jun 2024 09:10:30 -0400 Received: from eggs.gnu.org ([209.51.188.92]:47256) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sGHzn-0002wo-5z for 68765-done@debbugs.gnu.org; Sun, 09 Jun 2024 08:50:04 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sGHZz-00035f-9T; Sun, 09 Jun 2024 08:23:23 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=L/f5dcO85ahT6zDWQltNV5MwjIWO1Xk3PbeH5vq28E8=; b=Ye9zRkVlat7z ynTeprpEnSxgdfrpz71ZL+srkS7LmIYBneu5lS97axWv8/xdVlkw3QNa7h2WyuPQq4aRb0ZewVdD+ KAvgGJpxbG3I/sevWEj1D1WJgJwoeAnFyrbReY+g77fIm5+y04oumsy7H5D2o7rRaok8BwmCl8BO5 vkylPHqjXvqdxCEftCG30z4rRmIZR4QsOo6AjNYU57bb8vlbehVj5XD04t69olDA25xuBlynxtqpM ZQ2kiMK0xAcWDJd3JlCfMIzLXA05UEQFrJO25iWIVExJEpzJagl2jE4n8py/B5YOdC2t8F+4ZY7+y WSNLZT6cdlG2S5LjrK+Bvw==; Date: Sun, 09 Jun 2024 15:23:18 +0300 Message-Id: <86wmmy9ufd.fsf@gnu.org> From: Eli Zaretskii To: Jared Finder In-Reply-To: <435f03489dab91624a0d60f57b0ed698@finder.org> (message from Jared Finder on Sat, 08 Jun 2024 17:29:15 -0700) Subject: Re: bug#68765: 30.0.50; Adding window-tool-bar package. References: <86v82ok8bq.fsf@gnu.org> <76360aef38fd8e45a26b48c1d9df608c@finder.org> <86h6e7k2t9.fsf@gnu.org> <435f03489dab91624a0d60f57b0ed698@finder.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68765-done Cc: philipk@posteo.net, 68765-done@debbugs.gnu.org, monnier@iro.umontreal.ca, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sat, 08 Jun 2024 17:29:15 -0700 > From: Jared Finder > Cc: juri@linkov.net, 68765@debbugs.gnu.org, philipk@posteo.net, > monnier@iro.umontreal.ca > > > This LGTM, with one comment: you mention in the section about window > > tool bars that it cannot be shown if a tab line is shown in the > > window, but you don't have a similar caveat in the section about tab > > lines. I think we should add a similar caveat there as well. > > Patch attached for updated manual, NEWS, and changes to > window-tool-bar.el. This also extends support back to Emacs 27 in the > package as requested earlier in this thread. Thanks, installed on the master branch, and closing the bug. From unknown Fri Aug 15 12:52:14 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Mon, 08 Jul 2024 11:24:13 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator