From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Federico Tedin Newsgroups: gmane.emacs.bugs Subject: bug#31240: 26.1; mouse-save-then-kill does not kill rectangles Date: Thu, 11 Oct 2018 21:42:54 -0300 Message-ID: References: <5BB8EC23.1040303@gmx.at> <5BB9A4E5.3070308@gmx.at> <20181008.192544.1387561894315194511.tkk@misasa.okayama-u.ac.jp> <5BBC5C25.8080002@gmx.at> <5BBD9A08.3090707@gmx.at> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="00000000000001d0290577fd5f81" X-Trace: blaine.gmane.org 1539304929 23210 195.159.176.226 (12 Oct 2018 00:42:09 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Fri, 12 Oct 2018 00:42:09 +0000 (UTC) Cc: 31240@debbugs.gnu.org, homeros.misasa@gmail.com, tkk@misasa.okayama-u.ac.jp, charles@aurox.ch To: rudalics@gmx.at Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Oct 12 02:42:05 2018 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gAlWm-0005ui-PB for geb-bug-gnu-emacs@m.gmane.org; Fri, 12 Oct 2018 02:42:05 +0200 Original-Received: from localhost ([::1]:37771 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gAlYt-0006ht-6o for geb-bug-gnu-emacs@m.gmane.org; Thu, 11 Oct 2018 20:44:15 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:37692) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gAlYl-0006ed-93 for bug-gnu-emacs@gnu.org; Thu, 11 Oct 2018 20:44:09 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gAlYg-0008Qz-Vr for bug-gnu-emacs@gnu.org; Thu, 11 Oct 2018 20:44:07 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:41488) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gAlYg-0008Ql-Ph for bug-gnu-emacs@gnu.org; Thu, 11 Oct 2018 20:44:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1gAlYg-0001Zf-JX for bug-gnu-emacs@gnu.org; Thu, 11 Oct 2018 20:44:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Federico Tedin Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 12 Oct 2018 00:44:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31240 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 31240-submit@debbugs.gnu.org id=B31240.15393049975991 (code B ref 31240); Fri, 12 Oct 2018 00:44:02 +0000 Original-Received: (at 31240) by debbugs.gnu.org; 12 Oct 2018 00:43:17 +0000 Original-Received: from localhost ([127.0.0.1]:45746 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gAlXw-0001YZ-GZ for submit@debbugs.gnu.org; Thu, 11 Oct 2018 20:43:17 -0400 Original-Received: from mail-lf1-f66.google.com ([209.85.167.66]:35809) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gAlXu-0001YJ-3c for 31240@debbugs.gnu.org; Thu, 11 Oct 2018 20:43:14 -0400 Original-Received: by mail-lf1-f66.google.com with SMTP id r191-v6so8096559lff.2 for <31240@debbugs.gnu.org>; Thu, 11 Oct 2018 17:43:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=v08D27DNZIty5XLj8pjIZDiPcmOA679IaR7osNT5u+4=; b=EIDlb+UXww/e5DZ4cxYlAISbBMCZ5sZSDky9wHY6UAi5DDtaoPMte/qEhXmE6iobOL r08kLQ/fg/RhoLfXxghuDREXGFguc30pVQWWTpngE5/Hd+SbMZeeCsgfFt2jE+nlRmbe WQ0/U75e2RGmY7ARcq9On6pBy96a4xvFqozIB7Vm052rMklKAo69VjkyIaFJciJwLmDv xFME77e+UQo6vOOFQTX3FzbdCwDfO6AmOjKdrEOh5s0yv4a6Wo3xVvfFKmPHFnw4Gz/6 EZupzNg4YqZeXsdKjlEKZWj4BCoQeNrEm/iBEwHdLAsDurh7N86+gdxeMBwlKdM6cAkh JSPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=v08D27DNZIty5XLj8pjIZDiPcmOA679IaR7osNT5u+4=; b=k8LhFJkM61atz9jiZRD95/BVngCxln5G2jo7nQSAf6jPE4gGZCgj/sdX4XXBXba/ky sZSkl4A6bFYdfxiLqysksXQWgZIyU9d994zq4Rp8Oy13Uj10rmMTYY4H/l9iuh6Fzrwy v3WkXn4F+ZBiVryTb9Ihi+JSzqBQSfWGBC0QRf6ElY9SkZSeSax8PItVq5dQMoCZhvlO 5ac0FBP7a5IyCljvRLVmDRGQTBtVa7MAZi29Kw+N+wonoXGt7QW5l71IypegPPY0AaRV SDTSuS63250lG7fhhE+/9NlcsRAg0UYqxjIYCoS4FbxWYtxRrdyOHiSm43njQT6qkwjJ kXkA== X-Gm-Message-State: ABuFfojLbe1yKL8gIsjyTgZluvpwn+OTsuLLH9MuqVbVyuY7szjhuPFF tLchzkzLuZhp0aSQQsmdmWSdnJ8XQTJYUhRf/SA= X-Google-Smtp-Source: ACcGV62LrgwoGP/M4I5/2vHTA3Gi0fmEoNM1cx5RhjViPqJ+gC8uii5UdrNBDxejbgbqLtH1oVhBUhQr8X+EQVG/2vc= X-Received: by 2002:a19:1447:: with SMTP id k68-v6mr2334252lfi.4.1539304987892; Thu, 11 Oct 2018 17:43:07 -0700 (PDT) In-Reply-To: <5BBD9A08.3090707@gmx.at> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:151149 Archived-At: --00000000000001d0290577fd5f81 Content-Type: text/plain; charset="UTF-8" > If point-to-paste is on the first line of the original region in > between its start and end, we would try to replace the text by itself > on this and all subsequent lines which is just as silly as replacing a > contiguous region with itself. So set drag-but-negligible in such a > case. > > If point-to-paste is not on the first line of the original region but > the region to insert intersects with the original region, then killing > the original region after inserting the copy might get me some pretty > unintelligible result. So set drag-but-negligible in that case as > well. > > But moving the rectangle strictly to the left or the right on the same > lines it originally occupied seems to work here. So I would not set > drag-but-negligible in that case. > > I forgot to mention that the second conjunct is probably superfluous > here because in that case the rectangles won't intersect in the first > place. So (<= start point-to-paste) should be sufficient but I have > not tested it. Martin, thanks again for your feedback. As you mentioned, dragging the rectangle to the right of its right edge will cause rectangle-intersect-p return nil, so that check will never be evaluated. If I drag the rectangle to the right, but in a way that it intersects with itself (e.g. one char), then its contents would be inserted into the overlays, and it would then be deleted when the original is deleted (this is why I originally added the intersection check). If I drag the rectangle to the left in a way it would intersect with itself, then obviously rectangle-intersect-p will return t. However, what's interesting about this case is that the insert and delete operations could be done anyways, as the new content would be inserted to the left of the overlays, causing them to shift to the right. Then, the overlays would be deleted, taking with them the original rectangle. Note that this works even if the drag has a vertical component (up/down). So then: moving the rectangle to the left is easy, but moving it to the right (into itself) is not. My solution was to implement rectangle-intersection-p to avoid doing the insert and delete if an intersection was found. One of the conditions you added on your patch allows moving the rectangle sideways: in my opinion, allowing the user to move the rectangle only to the left is what's more consistent with mouse-drag-and-drop-region's behaviour with non-rectangular regions. You can check this by selecting a word and dragging it one char to its left: the word is dragged correctly. But if you drag a word one char to the right, the operation is marked as negligible. It would make sense that moving a rectangle to the right or to the left followed the same behaviour. > Note that I have never written or used rectangle code. AFAICT > 'insert-rectangle' inserts spaces (via 'move-to-column') when the > target line is too short. And these insertions can make the result of > a rectangle move look bad when the deletion is done after the copying. > Is that interpretation correct? Does it always look intelligible when > the deletion is done before the copying? Your guess is probably much better than mine, but I think you're right. Inserting a rectangle somewhere in a buffer, and then deleting some text to its left will make it look intelligible. If the deletion is made before the copying, however, I think the rectangle will always be inserted correctly (because move-to-column will ensure its content is aligned correctly). > IIUC the code of rect.el nowhere provides an operation that kills a > rectangle and reinserts it in one and the same step not to mention the > possibility that these operations take place in an overlapping area of > one and the same buffer. So I think that you are in uncharted waters > here and hardly anyone will tell you what to do. > > If worse comes to worst, we can always leave your patch as it is now. At the moment, my current proposal is: allow the user to drag the rectangle anywhere to the left (on the same line, or on a different line), or anywhere else where it would not intersect with itself (I'm attaching a new patch that allows this). - Federico --00000000000001d0290577fd5f81 Content-Type: text/x-patch; charset="US-ASCII"; name="mouse.patch" Content-Disposition: attachment; filename="mouse.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jn5abgms0 RnJvbSA1ODg4Y2U5NzM5YzMyOThhNWYxOTM5YWNmYWY4NzE1OGMxMDIzZmQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBGZWRlcmljbyBUZWRpbiA8ZmVkZXJpY290ZWRpbkBnbWFpbC5j b20+CkRhdGU6IFRodSwgMTEgT2N0IDIwMTggMjE6Mjk6NDUgLTAzMDAKU3ViamVjdDogW1BBVENI XSBBbGxvdyB0d28gbW91c2UgZnVuY3Rpb25zIHRvIHdvcmsgd2l0aCBSZWN0YW5nbGUgTWFyayBt b2RlCgoqIGxpc3AvbW91c2UuZWwgKG1vdXNlLXNhdmUtdGhlbi1raWxsKTogTWFrZSBtb3VzZS1z YXZlLXRoZW4ta2lsbCB3b3JrCiAgd2l0aCByZWN0YW5ndWxhciByZWdpb25zLCBpbmNsdWRpbmcg d2hlbiBtb3VzZS1kcmFnLWNvcHktcmVnaW9uIGlzCiAgc2V0IHRvIHQuIChCdWcjMzEyNDApCiAg KG1vdXNlLWRyYWctYW5kLWRyb3AtcmVnaW9uKTogQWxsb3cgZHJhZ2dpbmcgYW5kIGRyb3BwaW5n CiAgcmVjdGFuZ3VsYXIgcmVnaW9ucy4gKEJ1ZyMzMTI0MCkKKiByZWN0LmVsIChyZWN0YW5nbGUt aW50ZXJzZWN0LXApOiBBZGQgYSBuZXcgZnVuY3Rpb24uCiAgKHJlY3RhbmdsZS1wb3NpdGlvbi1h cy1jb29yZGluYXRlcyk6IEFkZCBhIG5ldyBmdW5jdGlvbi4KLS0tCiBsaXNwL21vdXNlLmVsIHwg OTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiBs aXNwL3JlY3QuZWwgIHwgMzEgKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAxMDQg aW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC9tb3VzZS5l bCBiL2xpc3AvbW91c2UuZWwKaW5kZXggY2I2M2NhNTFjNS4uMzdmNDA4N2U1ZiAxMDA2NDQKLS0t IGEvbGlzcC9tb3VzZS5lbAorKysgYi9saXNwL21vdXNlLmVsCkBAIC0yOSw2ICsyOSw4IEBACiAK IDs7OyBDb2RlOgogCisoZXZhbC13aGVuLWNvbXBpbGUgKHJlcXVpcmUgJ3JlY3QpKQorCiA7Ozsg VXRpbGl0eSBmdW5jdGlvbnMuCiAKIDs7IEluZGVudCB0cmFjay1tb3VzZSBsaWtlIHByb2duLgpA QCAtMTYwNiw4ICsxNjA4LDggQEAgbW91c2Utc2F2ZS10aGVuLWtpbGwKICAgICAgIChpZiBtb3Vz ZS1kcmFnLWNvcHktcmVnaW9uCiAgICAgICAgICAgOzsgUmVnaW9uIGFscmVhZHkgc2F2ZWQgaW4g dGhlIHByZXZpb3VzIGNsaWNrOwogICAgICAgICAgIDs7IGRvbid0IG1ha2UgYSBkdXBsaWNhdGUg ZW50cnksIGp1c3QgZGVsZXRlLgotICAgICAgICAgIChkZWxldGUtcmVnaW9uIChtYXJrIHQpIChw b2ludCkpCi0gICAgICAgIChraWxsLXJlZ2lvbiAobWFyayB0KSAocG9pbnQpKSkKKyAgICAgICAg ICAoZnVuY2FsbCByZWdpb24tZXh0cmFjdC1mdW5jdGlvbiAnZGVsZXRlLW9ubHkpCisgICAgICAg IChraWxsLXJlZ2lvbiAobWFyayB0KSAocG9pbnQpICdyZWdpb24pKQogICAgICAgKHNldHEgbW91 c2Utc2VsZWN0aW9uLWNsaWNrLWNvdW50IDApCiAgICAgICAoc2V0cSBtb3VzZS1zYXZlLXRoZW4t a2lsbC1wb3NuIG5pbCkpCiAKQEAgLTE2MzIsNyArMTYzNCw3IEBAIG1vdXNlLXNhdmUtdGhlbi1r aWxsCiAJKG1vdXNlLXNldC1yZWdpb24tMSkKICAgICAgICAgKHdoZW4gbW91c2UtZHJhZy1jb3B5 LXJlZ2lvbgogICAgICAgICAgIDs7IFJlZ2lvbiBhbHJlYWR5IGNvcGllZCB0byBraWxsLXJpbmcg b25jZSwgc28gcmVwbGFjZS4KLSAgICAgICAgICAoa2lsbC1uZXcgKGZpbHRlci1idWZmZXItc3Vi c3RyaW5nIChtYXJrIHQpIChwb2ludCkpIHQpKQorICAgICAgICAgIChraWxsLW5ldyAoZnVuY2Fs bCByZWdpb24tZXh0cmFjdC1mdW5jdGlvbiBuaWwpIHQpKQogCTs7IEFycmFuZ2UgZm9yIGEgcmVw ZWF0ZWQgbW91c2UtMyB0byBraWxsIHRoZSByZWdpb24uCiAJKHNldHEgbW91c2Utc2F2ZS10aGVu LWtpbGwtcG9zbiBjbGljay1wdCkpKQogCkBAIC0yNDExLDcgKzI0MTMsMTUgQEAgbW91c2UtZHJh Zy1hbmQtZHJvcC1yZWdpb24KICAgICAgICAgIChidWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkKICAg ICAgICAgICh3aW5kb3cgKHNlbGVjdGVkLXdpbmRvdykpCiAgICAgICAgICAodGV4dC1mcm9tLXJl YWQtb25seSBidWZmZXItcmVhZC1vbmx5KQotICAgICAgICAgKG1vdXNlLWRyYWctYW5kLWRyb3At b3ZlcmxheSAobWFrZS1vdmVybGF5IHN0YXJ0IGVuZCkpCisgICAgICAgICA7OyBVc2UgbXVsdGlw bGUgb3ZlcmxheXMgdG8gY292ZXIgY2FzZXMgd2hlcmUgdGhlIHJlZ2lvbiBpcyByZWN0YW5ndWxh ci4KKyAgICAgICAgIChtb3VzZS1kcmFnLWFuZC1kcm9wLW92ZXJsYXlzIChtYXBjYXIgKGxhbWJk YSAoYm91bmRzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChtYWtlLW92ZXJsYXkgKGNhciBib3VuZHMpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2RyIGJvdW5kcykpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVnaW9uLWJvdW5k cykpKQorICAgICAgICAgKHJlZ2lvbi1ub25jb250aWd1b3VzIChyZWdpb24tbm9uY29udGlndW91 cy1wKSkKKyAgICAgICAgIChyZWdpb24td2lkdGggKC0gKG92ZXJsYXktZW5kIChjYXIgbW91c2Ut ZHJhZy1hbmQtZHJvcC1vdmVybGF5cykpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChvdmVy bGF5LXN0YXJ0IChjYXIgbW91c2UtZHJhZy1hbmQtZHJvcC1vdmVybGF5cykpKSkKKyAgICAgICAg IChyZWdpb24taGVpZ2h0IChsZW5ndGggbW91c2UtZHJhZy1hbmQtZHJvcC1vdmVybGF5cykpCiAg ICAgICAgICBwb2ludC10by1wYXN0ZQogICAgICAgICAgcG9pbnQtdG8tcGFzdGUtcmVhZC1vbmx5 CiAgICAgICAgICB3aW5kb3ctdG8tcGFzdGUKQEAgLTI0NTUsNyArMjQ2NSwxMSBAQCBtb3VzZS1k cmFnLWFuZC1kcm9wLXJlZ2lvbgogICAgICAgICAgIDs7IE9idGFpbiB0aGUgZHJhZ2dlZCB0ZXh0 IGluIHJlZ2lvbi4gIFdoZW4gdGhlIGxvb3Agd2FzCiAgICAgICAgICAgOzsgc2tpcHBlZCwgdmFs dWUtc2VsZWN0aW9uIHJlbWFpbnMgbmlsLgogICAgICAgICAgICh1bmxlc3MgdmFsdWUtc2VsZWN0 aW9uCi0gICAgICAgICAgICAoc2V0cSB2YWx1ZS1zZWxlY3Rpb24gKGJ1ZmZlci1zdWJzdHJpbmcg c3RhcnQgZW5kKSkKKyAgICAgICAgICAgIChzZXRxIHZhbHVlLXNlbGVjdGlvbiAoZnVuY2FsbCBy ZWdpb24tZXh0cmFjdC1mdW5jdGlvbiBuaWwpKQorICAgICAgICAgICAgOzsgUmVtb3ZlIHlhbmst aGFuZGxlciBwcm9wZXJ0eSBpbiBvcmRlciB0byByZS1pbnNlcnQgdGV4dCB1c2luZworICAgICAg ICAgICAgOzsgdGhlIGBpbnNlcnQtcmVjdGFuZ2xlJyBmdW5jdGlvbiBsYXRlciBvbi4KKyAgICAg ICAgICAgIChyZW1vdmUtdGV4dC1wcm9wZXJ0aWVzIDAgKGxlbmd0aCB2YWx1ZS1zZWxlY3Rpb24p CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKHlhbmstaGFuZGxlcikgdmFs dWUtc2VsZWN0aW9uKQogICAgICAgICAgICAgKHdoZW4gbW91c2UtZHJhZy1hbmQtZHJvcC1yZWdp b24tc2hvdy10b29sdGlwCiAgICAgICAgICAgICAgIChsZXQgKCh0ZXh0LXNpemUgbW91c2UtZHJh Zy1hbmQtZHJvcC1yZWdpb24tc2hvdy10b29sdGlwKSkKICAgICAgICAgICAgICAgICAoc2V0cSB0 ZXh0LXRvb2x0aXAKQEAgLTI0NjgsMTIgKzI0ODIsMTggQEAgbW91c2UtZHJhZy1hbmQtZHJvcC1y ZWdpb24KICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLXNlbGVjdGlvbikpKSkKIAogICAg ICAgICAgICAgOzsgQ2hlY2sgaWYgc2VsZWN0ZWQgdGV4dCBpcyByZWFkLW9ubHkuCi0gICAgICAg ICAgICAoc2V0cSB0ZXh0LWZyb20tcmVhZC1vbmx5IChvciB0ZXh0LWZyb20tcmVhZC1vbmx5Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2V0LXRleHQtcHJvcGVy dHkgc3RhcnQgJ3JlYWQtb25seSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChub3QgKGVxdWFsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobmV4dC1zaW5nbGUtY2hhci1wcm9wZXJ0eS1jaGFuZ2UKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCAncmVhZC1vbmx5IG5p bCBlbmQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bmQpKSkpKQorICAgICAgICAgICAgKHNldHEgdGV4dC1mcm9tLXJlYWQtb25seQorICAgICAgICAg ICAgICAgICAgKG9yIHRleHQtZnJvbS1yZWFkLW9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAo Z2V0LXRleHQtcHJvcGVydHkgc3RhcnQgJ3JlYWQtb25seSkKKyAgICAgICAgICAgICAgICAgICAg ICAoZ2V0LXRleHQtcHJvcGVydHkgZW5kICdyZWFkLW9ubHkpCisgICAgICAgICAgICAgICAgICAg ICAgKGNhdGNoICdsb29wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb2xpc3QgKGJv dW5kIChyZWdpb24tYm91bmRzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5s ZXNzIChlcXVhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZXh0 LXNpbmdsZS1jaGFyLXByb3BlcnR5LWNoYW5nZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoY2FyIGJvdW5kKSAncmVhZC1vbmx5IG5pbCAoY2RyIGJvdW5kKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2RyIGJvdW5kKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aHJvdyAnbG9vcCB0KSkpKSkpKQorCiAgICAg ICAgICAgKHNldHEgd2luZG93LXRvLXBhc3RlIChwb3NuLXdpbmRvdyAoZXZlbnQtZW5kIGV2ZW50 KSkpCiAgICAgICAgICAgKHNldHEgcG9pbnQtdG8tcGFzdGUgKHBvc24tcG9pbnQgKGV2ZW50LWVu ZCBldmVudCkpKQogICAgICAgICAgIDs7IFNldCBuaWwgd2hlbiB0YXJnZXQgYnVmZmVyIGlzIG1p bmlidWZmZXIuCkBAIC0yNTAwLDEyICsyNTIwLDI3IEBAIG1vdXNlLWRyYWctYW5kLWRyb3AtcmVn aW9uCiAgICAgICAgICAgICA7OyB0ZXh0IHdpbGwgYmUgaW5zZXJ0ZWQgdG8gaW5zaWRlIG9mIHRo ZSBvcmlnaW5hbAogICAgICAgICAgICAgOzsgcmVnaW9uLgogICAgICAgICAgICAgKHNldHEgZHJh Zy1idXQtbmVnbGlnaWJsZQotICAgICAgICAgICAgICAgICAgKGFuZCAoZXEgKG92ZXJsYXktYnVm ZmVyIG1vdXNlLWRyYWctYW5kLWRyb3Atb3ZlcmxheSkKKyAgICAgICAgICAgICAgICAgIChhbmQg KGVxIChvdmVybGF5LWJ1ZmZlciAoY2FyIG1vdXNlLWRyYWctYW5kLWRyb3Atb3ZlcmxheXMpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLXRvLXBhc3RlKQotICAgICAgICAgICAg ICAgICAgICAgICAoPD0gKG92ZXJsYXktc3RhcnQgbW91c2UtZHJhZy1hbmQtZHJvcC1vdmVybGF5 KQotICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludC10by1wYXN0ZSkKLSAgICAgICAgICAg ICAgICAgICAgICAgKDw9IHBvaW50LXRvLXBhc3RlCi0gICAgICAgICAgICAgICAgICAgICAgICAg IChvdmVybGF5LWVuZCBtb3VzZS1kcmFnLWFuZC1kcm9wLW92ZXJsYXkpKSkpKQorICAgICAgICAg ICAgICAgICAgICAgICAoaWYgcmVnaW9uLW5vbmNvbnRpZ3VvdXMKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIDs7IElmIHRoZSByZWdpb24gaXMgcmVjdGFuZ3VsYXIsIGNoZWNrIGlmIHRoZSBu ZXdseSBpbnNlcnRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgcmVjdGFuZ3VsYXIg dGV4dCB3b3VsZCBpbnRlcnNlY3QgdGhlIGFscmVhZHkgc2VsZWN0ZWQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIDs7IHJlZ2lvbi4gSWYgaXQgd291bGQsIHRoZW4gc2V0ICJkcmFnLWJ1dC1u ZWdsaWdpYmxlIiB0byB0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgQXMgYSBzcGVj aWFsIGNhc2UsIGFsbG93IGRyYWdnaW5nIHRoZSByZWdpb24gZnJlZWx5IGFueXdoZXJlCisgICAg ICAgICAgICAgICAgICAgICAgICAgICA7OyB0byB0aGUgbGVmdCwgYXMgdGhpcyB3aWxsIG5ldmVy IHRyaWdnZXIgaXRzIGNvbnRlbnRzIHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICA7 OyBpbnNlcnRlZCBpbnRvIHRoZSBvdmVybGF5cyB0cmFja2luZyBpdC4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIChsZXQgKChzaXplIChjb25zIHJlZ2lvbi13aWR0aCByZWdpb24taGVpZ2h0 KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGFydC1jb29yZGluYXRlcyAo cmVjdGFuZ2xlLXBvc2l0aW9uLWFzLWNvb3JkaW5hdGVzIHN0YXJ0KSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChwb2ludC10by1wYXN0ZS1jb29yZGluYXRlcyAocmVjdGFuZ2xl LXBvc2l0aW9uLWFzLWNvb3JkaW5hdGVzIHBvaW50LXRvLXBhc3RlKSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChhbmQgKHJlY3RhbmdsZS1pbnRlcnNlY3QtcAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdGFydC1jb29yZGluYXRlcyBzaXplCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50LXRvLXBhc3RlLWNvb3JkaW5hdGVzIHNpemUp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoPD0gKGNhciBwb2ludC10 by1wYXN0ZS1jb29yZGluYXRlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoY2FyIHN0YXJ0LWNvb3JkaW5hdGVzKSkpKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAoYW5kICg8PSAob3ZlcmxheS1zdGFydCAoY2FyIG1vdXNlLWRyYWctYW5kLWRyb3Atb3Zl cmxheXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50LXRvLXBhc3Rl KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDw9IHBvaW50LXRvLXBhc3RlCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG92ZXJsYXktZW5kIChjYXIgbW91c2UtZHJh Zy1hbmQtZHJvcC1vdmVybGF5cykpKSkpKSkpCiAKICAgICAgICAgICA7OyBTaG93IGEgdG9vbHRp cC4KICAgICAgICAgICAoaWYgbW91c2UtZHJhZy1hbmQtZHJvcC1yZWdpb24tc2hvdy10b29sdGlw CkBAIC0yNTI0LDggKzI1NTksOSBAQCBtb3VzZS1kcmFnLWFuZC1kcm9wLXJlZ2lvbgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdiYXIpKSkKICAgICAgICAgICAgICh3aGVuIGN1cnNvci1pbi10ZXh0LWFyZWEKLSAgICAg ICAgICAgICAgKG92ZXJsYXktcHV0IG1vdXNlLWRyYWctYW5kLWRyb3Atb3ZlcmxheQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ2ZhY2UgJ21vdXNlLWRyYWctYW5kLWRyb3AtcmVnaW9uKQor ICAgICAgICAgICAgICAoZG9saXN0IChvdmVybGF5IG1vdXNlLWRyYWctYW5kLWRyb3Atb3Zlcmxh eXMpCisgICAgICAgICAgICAgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICdmYWNlICdtb3VzZS1kcmFnLWFuZC1kcm9wLXJlZ2lvbikpCiAgICAgICAg ICAgICAgIChkZWFjdGl2YXRlLW1hcmspICAgICA7IE1haW50YWluIHJlZ2lvbiBpbiBvdGhlciB3 aW5kb3cuCiAgICAgICAgICAgICAgIChtb3VzZS1zZXQtcG9pbnQgZXZlbnQpKSkpKQogCkBAIC0y NTgxLDcgKzI2MTcsOSBAQCBtb3VzZS1kcmFnLWFuZC1kcm9wLXJlZ2lvbgogICAgICAgICAgIChz ZWxlY3Qtd2luZG93IHdpbmRvdykKICAgICAgICAgICAoZ290by1jaGFyIHBvaW50KQogICAgICAg ICAgIChzZXRxIGRlYWN0aXZhdGUtbWFyayBuaWwpCi0gICAgICAgICAgKGFjdGl2YXRlLW1hcmsp KQorICAgICAgICAgIChhY3RpdmF0ZS1tYXJrKQorICAgICAgICAgICh3aGVuIHJlZ2lvbi1ub25j b250aWd1b3VzCisgICAgICAgICAgICAocmVjdGFuZ2xlLW1hcmstbW9kZSkpKQogICAgICAgICAg OzsgTW9kaWZ5IGJ1ZmZlcnMuCiAgICAgICAgICAodAogICAgICAgICAgIDs7ICogREVTVElOQVRJ T04gQlVGRkVSOjoKQEAgLTI1OTAsMTEgKzI2MjgsMTcgQEAgbW91c2UtZHJhZy1hbmQtZHJvcC1y ZWdpb24KICAgICAgICAgICAoc2V0cSB3aW5kb3ctZXhlbXB0IHdpbmRvdy10by1wYXN0ZSkKICAg ICAgICAgICAoZ290by1jaGFyIHBvaW50LXRvLXBhc3RlKQogICAgICAgICAgIChwdXNoLW1hcmsp Ci0gICAgICAgICAgKGluc2VydCB2YWx1ZS1zZWxlY3Rpb24pCisKKyAgICAgICAgICAoaWYgcmVn aW9uLW5vbmNvbnRpZ3VvdXMKKyAgICAgICAgICAgICAgKGluc2VydC1yZWN0YW5nbGUgKHNwbGl0 LXN0cmluZyB2YWx1ZS1zZWxlY3Rpb24gIlxuIikpCisgICAgICAgICAgICAoaW5zZXJ0IHZhbHVl LXNlbGVjdGlvbikpCisKICAgICAgICAgICA7OyBPbiBzdWNjZXNzLCBzZXQgdGhlIHRleHQgYXMg cmVnaW9uIG9uIGRlc3RpbmF0aW9uIGJ1ZmZlci4KICAgICAgICAgICAod2hlbiAobm90IChlcXVh bCAobWFyaykgKHBvaW50KSkpCiAgICAgICAgICAgICAoc2V0cSBkZWFjdGl2YXRlLW1hcmsgbmls KQotICAgICAgICAgICAgKGFjdGl2YXRlLW1hcmspKQorICAgICAgICAgICAgKGFjdGl2YXRlLW1h cmspCisgICAgICAgICAgICAod2hlbiByZWdpb24tbm9uY29udGlndW91cworICAgICAgICAgICAg ICAocmVjdGFuZ2xlLW1hcmstbW9kZSkpKQogCiAgICAgICAgICAgOzsgKiBTT1VSQ0UgQlVGRkVS OjoKICAgICAgICAgICA7OyBTZXQgYmFjayB0aGUgb3JpZ2luYWwgdGV4dCBhcyByZWdpb24gb3Ig ZGVsZXRlIHRoZSBvcmlnaW5hbApAQCAtMjYwNCw4ICsyNjQ4LDkgQEAgbW91c2UtZHJhZy1hbmQt ZHJvcC1yZWdpb24KICAgICAgICAgICAgICAgOzsgcmVtb3ZlIHRoZSBvcmlnaW5hbCB0ZXh0Lgog ICAgICAgICAgICAgICAod2hlbiBuby1tb2RpZmllci1vbi1kcm9wCiAgICAgICAgICAgICAgICAg KGxldCAoZGVhY3RpdmF0ZS1tYXJrKQotICAgICAgICAgICAgICAgICAgKGRlbGV0ZS1yZWdpb24g KG92ZXJsYXktc3RhcnQgbW91c2UtZHJhZy1hbmQtZHJvcC1vdmVybGF5KQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKG92ZXJsYXktZW5kIG1vdXNlLWRyYWctYW5kLWRyb3Atb3Zl cmxheSkpKSkKKyAgICAgICAgICAgICAgICAgIChkb2xpc3QgKG92ZXJsYXkgbW91c2UtZHJhZy1h bmQtZHJvcC1vdmVybGF5cykKKyAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZS1yZWdpb24gKG92 ZXJsYXktc3RhcnQgb3ZlcmxheSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KG92ZXJsYXktZW5kIG92ZXJsYXkpKSkpKQogICAgICAgICAgICAgOzsgV2hlbiBzb3VyY2UgYnVm ZmVyIGFuZCBkZXN0aW5hdGlvbiBidWZmZXIgYXJlIGRpZmZlcmVudCwKICAgICAgICAgICAgIDs7 IGtlZXAgKHNldCBiYWNrIHRoZSBvcmlnaW5hbCB0ZXh0IGFzIHJlZ2lvbikgb3IgcmVtb3ZlIHRo ZQogICAgICAgICAgICAgOzsgb3JpZ2luYWwgdGV4dC4KQEAgLTI2MTUsMTUgKzI2NjAsMTcgQEAg bW91c2UtZHJhZy1hbmQtZHJvcC1yZWdpb24KICAgICAgICAgICAgIChpZiBtb3VzZS1kcmFnLWFu ZC1kcm9wLXJlZ2lvbi1jdXQtd2hlbi1idWZmZXJzLWRpZmZlcgogICAgICAgICAgICAgICAgIDs7 IFJlbW92ZSB0aGUgZHJhZ2dlZCB0ZXh0IGZyb20gc291cmNlIGJ1ZmZlciBsaWtlCiAgICAgICAg ICAgICAgICAgOzsgb3BlcmF0aW9uIGBjdXQnLgotICAgICAgICAgICAgICAgIChkZWxldGUtcmVn aW9uIChvdmVybGF5LXN0YXJ0IG1vdXNlLWRyYWctYW5kLWRyb3Atb3ZlcmxheSkKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAob3ZlcmxheS1lbmQgbW91c2UtZHJhZy1hbmQtZHJvcC1v dmVybGF5KSkKKyAgICAgICAgICAgICAgICAoZG9saXN0IChvdmVybGF5IG1vdXNlLWRyYWctYW5k LWRyb3Atb3ZlcmxheXMpCisgICAgICAgICAgICAgICAgICAgIChkZWxldGUtcmVnaW9uIChvdmVy bGF5LXN0YXJ0IG92ZXJsYXkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChv dmVybGF5LWVuZCBvdmVybGF5KSkpCiAgICAgICAgICAgICAgIDs7IFNldCBiYWNrIHRoZSBkcmFn Z2VkIHRleHQgYXMgcmVnaW9uIG9uIHNvdXJjZSBidWZmZXIKICAgICAgICAgICAgICAgOzsgbGlr ZSBvcGVyYXRpb24gYGNvcHknLgogICAgICAgICAgICAgICAoYWN0aXZhdGUtbWFyaykpCiAgICAg ICAgICAgICAoc2VsZWN0LXdpbmRvdyB3aW5kb3ctdG8tcGFzdGUpKSkpKSkKIAogICAgIDs7IENs ZWFuIHVwLgotICAgIChkZWxldGUtb3ZlcmxheSBtb3VzZS1kcmFnLWFuZC1kcm9wLW92ZXJsYXkp CisgICAgKGRvbGlzdCAob3ZlcmxheSBtb3VzZS1kcmFnLWFuZC1kcm9wLW92ZXJsYXlzKQorICAg ICAgKGRlbGV0ZS1vdmVybGF5IG92ZXJsYXkpKQogCiAgICAgOzsgUmVzdG9yZSBvbGQgc3RhdGVz IGJ1dCBmb3IgdGhlIHdpbmRvdyB3aGVyZSB0aGUgZHJvcAogICAgIDs7IG9jY3VycmVkLiBSZXN0 b3JlIGN1cnNvciB0eXBlcyBmb3IgYWxsIHdpbmRvd3MuCmRpZmYgLS1naXQgYS9saXNwL3JlY3Qu ZWwgYi9saXNwL3JlY3QuZWwKaW5kZXggOGNjZjA1MWVlMS4uNDhkYjRmZmQ4ZiAxMDA2NDQKLS0t IGEvbGlzcC9yZWN0LmVsCisrKyBiL2xpc3AvcmVjdC5lbApAQCAtMTY3LDYgKzE2NywzNyBAQCBh cHBseS1vbi1yZWN0YW5nbGUKICAgICAgICAgICAgICAgICAgKDw9IChwb2ludCkgZW5kcHQpKSkp CiAgICAgICBmaW5hbC1wb2ludCkpKQogCisoZGVmdW4gcmVjdGFuZ2xlLXBvc2l0aW9uLWFzLWNv b3JkaW5hdGVzIChwb3NpdGlvbikKKyAgICJSZXR1cm4gY29ucyBvZiB0aGUgY29sdW1uIGFuZCBs aW5lIHZhbHVlcyBvZiBQT1NJVElPTi4KK1BPU0lUSU9OIHNwZWNpZmllcyBhIHBvc2l0aW9uIG9m IHRoZSBjdXJyZW50IGJ1ZmZlci4gIFRoZSB2YWx1ZQorcmV0dXJuZWQgaXMgYSBjb25zIG9mIHRo ZSBjdXJyZW50IGNvbHVtbiBvZiBQT1NJVElPTiBhbmQgaXRzIGxpbmUKK251bWJlci4iCisgIChz YXZlLWV4Y3Vyc2lvbgorICAgIChnb3RvLWNoYXIgcG9zaXRpb24pCisgICAgKGxldCAoKGNvbCAo Y3VycmVudC1jb2x1bW4pKQorICAgICAgICAgIChsaW5lICgxLSAobGluZS1udW1iZXItYXQtcG9z KSkpKQorICAgICAgKGNvbnMgY29sIGxpbmUpKSkpCisKKyhkZWZ1biByZWN0YW5nbGUtaW50ZXJz ZWN0LXAgKHBvczEgc2l6ZTEgcG9zMiBzaXplMikKKyAgICJSZXR1cm4gbm9uLW5pbCBpZiB0d28g cmVjdGFuZ2xlcyBpbnRlcnNlY3QuCitQT1MxIGFuZCBQT1MyIHNwZWNpZnkgdGhlIHBvc2l0aW9u cyBvZiB0aGUgdXBwZXItbGVmdCBjb3JuZXJzIG9mCit0aGUgZmlyc3QgYW5kIHNlY29uZCByZWN0 YW5nbGUgYXMgY29uc2VzIG9mIHRoZWlyIGNvbHVtbiBhbmQgbGluZQordmFsdWVzLiAgU0laRTEg YW5kIFNJWkUyIHNwZWNpZnkgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGZpcnN0IGFuZAorc2Vjb25k IHJlY3RhbmdsZSwgYXMgY29uc2VzIG9mIHRoZWlyIHdpZHRoIGFuZCBoZWlnaHQgbWVhc3VyZWQg aW4KK2NvbHVtbnMgYW5kIGxpbmVzLiIKKyAgKGxldCAoKHgxIChjYXIgcG9zMSkpCisgICAgICAg ICh5MSAoY2RyIHBvczEpKQorICAgICAgICAoeDIgKGNhciBwb3MyKSkKKyAgICAgICAgKHkyIChj ZHIgcG9zMikpCisgICAgICAgICh3MSAoY2FyIHNpemUxKSkKKyAgICAgICAgKGgxIChjZHIgc2l6 ZTEpKQorICAgICAgICAodzIgKGNhciBzaXplMikpCisgICAgICAgIChoMiAoY2RyIHNpemUyKSkp CisgICAgKG5vdCAob3IgKDw9ICgrIHgxIHcxKSB4MikKKyAgICAgICAgICAgICAoPD0gKCsgeDIg dzIpIHgxKQorICAgICAgICAgICAgICg8PSAoKyB5MSBoMSkgeTIpCisgICAgICAgICAgICAgKDw9 ICgrIHkyIGgyKSB5MSkpKSkpCisKIChkZWZ1biBkZWxldGUtcmVjdGFuZ2xlLWxpbmUgKHN0YXJ0 Y29sIGVuZGNvbCBmaWxsKQogICAod2hlbiAoPSAobW92ZS10by1jb2x1bW4gc3RhcnRjb2wgKGlm IGZpbGwgdCAnY29lcmNlKSkgc3RhcnRjb2wpCiAgICAgKGRlbGV0ZS1yZWdpb24gKHBvaW50KQot LSAKMi4xNy4xCgo= --00000000000001d0290577fd5f81--