From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oa1-x2e.google.com (mail-oa1-x2e.google.com [IPv6:2001:4860:4864:20::2e]) by sourceware.org (Postfix) with ESMTPS id 662633858D3C for ; Thu, 2 Feb 2023 01:09:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 662633858D3C Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-oa1-x2e.google.com with SMTP id 586e51a60fabf-169b190e1fdso649003fac.4 for ; Wed, 01 Feb 2023 17:09:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=1a5MGrbiYLqOPdViD5Ez/cbzrZex5ideZFCX8/Zxx9Q=; b=O7GDgOK62+syudc9tWKr0sTcQfZizCJXtxHCsU+35zC6FQGhbaoq+CO3MwE+aRn6wK DwcE+ENZ/3JkSS3Ikr9iup4VKpCwzeskcQwj6MXQMJmU23wOTuDA1nfLuJfDGY6cWUf9 qUofbsiB2Wmgxa5OybvoPJCxczcVZ3tE4v001NGnU0YZGbYdAZnqeMxL3HB/APeabEDL 8LXxnRuam/y59mETdtAf08GJx/yVjlcY52DNiX5/bFq+CDPRCjU+R4wD5mkiITqkWKNT UBhN2wQNA0kiUvSbNUMwJP6PCb/6Wi9UUwy93ORogWVvcFgKrC+y/BdlHPeL8RmnNBfH gRMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=1a5MGrbiYLqOPdViD5Ez/cbzrZex5ideZFCX8/Zxx9Q=; b=OsyX66X5qHovzOaJszivHYkBuUQw43up2jMf/BLQUA1HEue+y85EgjmCCq97Y7eFZc nDNoqQSc9NUDCbmUPJwR+MJEslKfsJ2epLi7MwzJRmCqlsaB6uSUZ4uaFRmz5bO/Zylj OFLuTr6GsnxPRBIsinqXyqSC/2n9Y6j2vRC18JNfNyBEHMxkqUyx+3RpEbQFV5XMAOAZ 1Hwp+gPALrvEh8aqcV8Ms9TZ9DzFeJ/w/jSbA29KjBxq3wg8I47tTLLhiX/gkLwlwD51 ETVaPo/GglKqO5XrAd2phNiQw0/ZhQHjPz9EewqqnuhxFRPPgB77hz18CV9C22uNBFRP N56Q== X-Gm-Message-State: AO0yUKU3V2sBQwbh50Ah6TlxIpUaGi+X8eVdYghBbiwdCMqkkejSWGu5 C6IhEAFPfouK1YqyAR1gBSvRBXHmeVFagkHRU+fJoz5N X-Google-Smtp-Source: AK7set/J9Hg0bg3TN5vPv3k9YoVdsRcQcKYEqeP7puu4+Jedgj6zmLvFshx7V4a3R5Ek3W+EeimByImAQueRXW/2DT4= X-Received: by 2002:a05:6870:3048:b0:15f:d0bb:fa63 with SMTP id u8-20020a056870304800b0015fd0bbfa63mr115358oau.3.1675300146596; Wed, 01 Feb 2023 17:09:06 -0800 (PST) MIME-Version: 1.0 References: <838rhnawf9.fsf@gnu.org> <87ilgltt15.fsf@redhat.com> In-Reply-To: <87ilgltt15.fsf@redhat.com> From: strager Date: Wed, 1 Feb 2023 17:08:55 -0800 Message-ID: Subject: Re: [PATCH] gdb/tui: add 'set tui mouse-events off' to restore mouse selection To: Andrew Burgess , Eli Zaretskii Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary="0000000000002169b405f3ad367b" X-Spam-Status: No, score=-8.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_PDS_OTHER_BAD_TLD autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --0000000000002169b405f3ad367b Content-Type: text/plain; charset="UTF-8" On Wed, Feb 1, 2023 at 4:41 AM Eli Zaretskii wrote: > This is OK, except that I don't think we use the term "plug-in" in our > documentation. I suggest to use "Python extensions" instead. Fixed! On Wed, Feb 1, 2023 at 4:41 AM Eli Zaretskii wrote: > Likewise here, and also please leave 2 spaces between sentences, per > US English conventions we use in our documentation. Fixed! On Wed, Feb 1, 2023 at 5:27 AM Andrew Burgess wrote: > I think it would be worth adding some text to the description of > Window.click in doc/python.texi, along with a cross-reference back to > this setting, as the Window.click is not going to work when this setting > is off. Great idea! I also found the "TUI Mouse Support" section and included a few links in there too. This is my first time using texinfo, so let me know if I made any mistakes. Updated patch is attached. --- gdb/NEWS | 6 ++++++ gdb/doc/gdb.texinfo | 15 ++++++++++++++- gdb/doc/python.texi | 5 +++++ gdb/tui/tui-io.c | 3 ++- gdb/tui/tui-win.c | 22 ++++++++++++++++++++++ gdb/tui/tui-win.h | 3 +++ 6 files changed, 52 insertions(+), 2 deletions(-) diff --git gdb/NEWS gdb/NEWS index 445d28efed9..1a00a6bd799 100644 --- gdb/NEWS +++ gdb/NEWS @@ -38,6 +38,12 @@ maintenance print record-instruction [ N ] prints how GDB would undo the N-th previous instruction, and if N is positive, it prints how GDB will redo the N-th following instruction. +set tui mouse-events [on|off] +show tui mouse-events + When on (default), mouse clicks control the TUI and can be accessed by + Python extensions. When off, mouse clicks are handled by the terminal, + enabling terminal-native text selection. + * MI changes ** mi now reports 'no-history' as a stop reason when hitting the end of the diff --git gdb/doc/gdb.texinfo gdb/doc/gdb.texinfo index 03033c7f9e3..65e85c7f8a1 100644 --- gdb/doc/gdb.texinfo +++ gdb/doc/gdb.texinfo @@ -29606,7 +29606,13 @@ the @key{SHIFT} key on your keyboard to temporarily bypass @value{GDBN}'s TUI and access the terminal's native mouse copy/paste functionality (commonly, click-drag-release or double-click to select text, middle-click to paste). This copy/paste works with the -terminal's selection buffer, as opposed to the TUI's buffer. +terminal's selection buffer, as opposed to the TUI's buffer. Alternatively, to +disable mouse support in the TUI entirely and give the terminal control over +mouse clicks, turn off the @code{tui mouse-events} setting +(@pxref{tui-mouse-events,,set tui mouse-events}). + +Python extensions can react to mouse clicks +(@pxref{python-window-click,,Window.click}). @node TUI Commands @section TUI-specific Commands @@ -29888,6 +29894,13 @@ source text at the next tab stop; the compact display uses only as much space as is needed for the line numbers in the current file, and only a single space to separate the line numbers from the source. +@anchor{tui-mouse-events} +@item set tui mouse-events @r{[}on@r{|}off@r{]} +@kindex set tui mouse-events +When on (default), mouse clicks control the TUI (@pxref{TUI Mouse Support}). +When off, mouse clicks are handled by the terminal, enabling terminal-native +text selection. + @kindex set debug tui @item set debug tui @r{[}on|off@r{]} Turn on or off display of @value{GDBN} internal debug messages relating diff --git gdb/doc/python.texi gdb/doc/python.texi index b04f1de2ddf..ab3050ca15c 100644 --- gdb/doc/python.texi +++ gdb/doc/python.texi @@ -6722,11 +6722,16 @@ contents. A positive argument should cause the viewport to move down, and so the content should appear to move up. @end defun +@anchor{python-window-click} @defun Window.click (@var{x}, @var{y}, @var{button}) This is called on a mouse click in this window. @var{x} and @var{y} are the mouse coordinates inside the window (0-based, from the top left corner), and @var{button} specifies which mouse button was used, whose values can be 1 (left), 2 (middle), or 3 (right). + +When TUI mouse events are disabled by turning off the @code{tui mouse-events} +setting (@pxref{tui-mouse-events,,set tui mouse-events}), then @code{click} will +not be called. @end defun @node Disassembly In Python diff --git gdb/tui/tui-io.c gdb/tui/tui-io.c index a17cf38a1f2..45ef34aeab5 100644 --- gdb/tui/tui-io.c +++ gdb/tui/tui-io.c @@ -655,7 +655,8 @@ static void tui_prep_terminal (int notused1) { #ifdef NCURSES_MOUSE_VERSION - mousemask (ALL_MOUSE_EVENTS, NULL); + if (tui_enable_mouse) + mousemask (ALL_MOUSE_EVENTS, NULL); #endif } diff --git gdb/tui/tui-win.c gdb/tui/tui-win.c index 008189eb99b..101fefcfe0a 100644 --- gdb/tui/tui-win.c +++ gdb/tui/tui-win.c @@ -897,6 +897,17 @@ tui_show_compact_source (struct ui_file *file, int from_tty, gdb_printf (file, _("TUI source window compactness is %s.\n"), value); } +bool tui_enable_mouse = true; + +/* Implement 'show tui mouse-events'. */ + +static void +show_tui_mouse_events (struct ui_file *file, int from_tty, + struct cmd_list_element *c, const char *value) +{ + gdb_printf (file, _("TUI mouse events are %s.\n"), value); +} + /* Set the tab width of the specified window. */ static void tui_set_tab_width_command (const char *arg, int from_tty) @@ -1284,6 +1295,17 @@ position indicator is styled."), &style_set_list, &style_show_list); + add_setshow_boolean_cmd ("mouse-events", class_tui, + &tui_enable_mouse, _("\ +Set whether TUI mode handles mouse clicks."), _("\ +Show whether TUI mode handles mouse clicks."), _("\ +When on (default), mouse clicks control the TUI and can be accessed by Python\n\ +extensions. When off, mouse clicks are handled by the terminal, enabling\n\ +terminal-native text selection."), + NULL, + show_tui_mouse_events, + &tui_setlist, &tui_showlist); + tui_border_style.changed.attach (tui_rehighlight_all, "tui-win"); tui_active_border_style.changed.attach (tui_rehighlight_all, "tui-win"); } diff --git gdb/tui/tui-win.h gdb/tui/tui-win.h index 4b33f1f2b54..039993fba34 100644 --- gdb/tui/tui-win.h +++ gdb/tui/tui-win.h @@ -51,6 +51,9 @@ struct cmd_list_element **tui_get_cmd_list (void); /* Whether compact source display should be used. */ extern bool compact_source; +/* Whether the TUI should intercept terminal mouse events. */ +extern bool tui_enable_mouse; + /* Whether to style the source and assembly code highlighted by the TUI's current position indicator. */ extern bool style_tui_current_position; -- 2.29.2 --0000000000002169b405f3ad367b Content-Type: application/x-patch; name="0001-gdb-tui-add-set-tui-mouse-events-off-to-restore-mous.patch" Content-Disposition: attachment; filename="0001-gdb-tui-add-set-tui-mouse-events-off-to-restore-mous.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ldme87lu0 RnJvbSBlMjNhOGY5ZWQyMmIzYWVjYTAxMzAwMzQ3NGI4ZDZmZmM2MGYxZjUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiTWF0dGhldyBcInN0cmFnZXJcIiBHbGF6YXIiIDxzdHJhZ2Vy Lm5kc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMjcgSmFuIDIwMjMgMTY6MTk6NDUgLTA4MDAKU3Vi amVjdDogW1BBVENIXSBnZGIvdHVpOiBhZGQgJ3NldCB0dWkgbW91c2UtZXZlbnRzIG9mZicgdG8g cmVzdG9yZSBtb3VzZQogc2VsZWN0aW9uCgpSYXRpb25hbGU6CkkgdXNlIHRoZSBtb3VzZSB3aXRo IG15IHRlcm1pbmFsIHRvIHNlbGVjdCBhbmQgY29weSB0ZXh0LiBJbiBnZGIsIEkgdXNlCnRoZSBt b3VzZSB0byBzZWxlY3QgYSBmdW5jdGlvbiBuYW1lIHRvIHNldCBhIGJyZWFrcG9pbnQsIG9yIGEg dmFyaWFibGUKbmFtZSB0byBwcmludCwgZm9yIGV4YW1wbGUuCgpXaGVuIGdkYiBpcyBjb21waWxl ZCB3aXRoIG5jdXJzZXMgbW91c2Ugc3VwcG9ydCwgZ2RiJ3MgVFVJIG1vZGUKaW50ZXJjZXB0cyBt b3VzZSBldmVudHMuIExlZnQtY2xpY2tpbmcgYW5kIGRyYWdnaW5nLCB3aGljaCB3b3VsZApub3Jt YWxseSBzZWxlY3QgdGV4dCwgc2VlbXMgdG8gZG8gbm90aGluZy4gVGhpcyBtZWFucyBJIGNhbm5v dCBzZWxlY3QKdGV4dCB1c2luZyBteSBtb3VzZSBhbnltb3JlLiBUaGlzIG1ha2VzIGl0IGhhcmRl ciB0byBzZXQgYnJlYWtwb2ludHMsCnByaW50IHZhcmlhYmxlcywgZXRjLgoKU29sdXRpb246Ckkg dHJpZWQgdG8gZml4IHRoaXMgaXNzdWUgYnkgZWRpdGluZyB0aGUgJ21vdXNlbWFzaycgY2FsbCB0 byBvbmx5IGVuYWJsZQpidXR0b25zIDQgYW5kIDUuIEhvd2V2ZXIsIHRoaXMgc3RpbGwgY2F1c2Vk IG15IHRlcm1pbmFsIChnbm9tZS10ZXJtaW5hbCkKdG8gbm90IGFsbG93IHRleHQgdG8gYmUgc2Vs ZWN0ZWQuIFRoZSBvbmx5IHdheSBJIGNvdWxkIG1ha2UgaXQgd29yayBpcwpieSBjYWxsaW5nICdt b3VzZW1hc2sgKDAsIE5VTEwpOycuIEJ1dCBkb2luZyBzbyBkaXNhYmxlcyB0aGUgbW91c2UgY29k ZQplbnRpcmVseSwgd2hpY2ggb3RoZXIgcGVvcGxlIG1pZ2h0IHdhbnQuCgpJIHRoZXJlZm9yZSBk ZWNpZGVkIHRvIG1ha2UgYSBzZXR0aW5nIGluIGdkYiBjYWxsZWQgJ3R1aSBtb3VzZS1ldmVudHMn LgpJZiBlbmFibGVkICh0aGUgZGVmYXVsdCksIHRoZSBiZWhhdmlvciBpcyBhcyBpdCBpcyBub3c6 IHRlcm1pbmFsIG1vdXNlCmV2ZW50cyBhcmUgZ2l2ZW4gdG8gZ2RiLCBkaXNhYmxpbmcgdGhlIHRl cm1pbmFsJ3MgZGVmYXVsdCBiZWhhdmlvci4KSWYgZGlzYWJsZWQgKG9wdC1pbiksIHRoZSBiZWhh dmlvciBpcyBhcyBpdCB3YXMgYmVmb3JlIHRoZSB5ZWFyIDIwMjA6CnRlcm1pbmFsIG1vdXNlIGV2 ZW50cyBhcmUgbm90IGdpdmVuIHRvIGdkYiwgdGhlcmVmb3JlIHRoZSBtb3VzZSBjYW4gYmUKdXNl ZCB0byBzZWxlY3QgYW5kIGNvcHkgdGV4dC4KCk5vdGVzOgpJIGFtIG5vdCBhdHRhY2hlZCB0byB0 aGUgc2V0dGluZyBuYW1lIG9yIGl0cyBkZXNjcmlwdGlvbi4gRmVlbCBmcmVlIHRvCnN1Z2dlc3Qg YmV0dGVyIHdvcmRpbmcuCgpUZXN0aW5nOgpJIHRlc3RlZCB0aGlzIGNoYW5nZSBpbiBnbm9tZS10 ZXJtaW5hbCBieSBwZXJmb3JtaW5nIHRoZSBmb2xsb3dpbmcgc3RlcHMKbWFudWFsbHk6CgoxLiBS dW46IGdkYiAtLWFyZ3MgLi9teXByb2dyYW0KMi4gRW5hYmxlIFRVSTogcHJlc3MgY3RybC14IGN0 cmwtYQozLiBDbGljayBhbmQgZHJhZyB0ZXh0IHdpdGggdGhlIG1vdXNlLiBPYnNlcnZlIG5vIHNl bGVjdGlvbi4KNC4gSW5wdXQ6IHNldCB0dWkgbW91c2UtZXZlbnRzIG9mZgo1LiBDbGljayBhbmQg ZHJhZyB0ZXh0IHdpdGggdGhlIG1vdXNlLiBPYnNlcnZlIHRoYXQgc2VsZWN0aW9uIHdvcmtzIG5v dy4KNi4gSW5wdXQ6IHNldCB0dWkgbW91c2UtZXZlbnRzIG9uLgo3LiBDbGljayBhbmQgZHJhZyB0 ZXh0IHdpdGggdGhlIG1vdXNlLiBPYnNlcnZlIG5vIHNlbGVjdGlvbi4KLS0tCiBnZGIvTkVXUyAg ICAgICAgICAgIHwgIDYgKysrKysrCiBnZGIvZG9jL2dkYi50ZXhpbmZvIHwgMTUgKysrKysrKysr KysrKystCiBnZGIvZG9jL3B5dGhvbi50ZXhpIHwgIDUgKysrKysKIGdkYi90dWkvdHVpLWlvLmMg ICAgfCAgMyArKy0KIGdkYi90dWkvdHVpLXdpbi5jICAgfCAyMiArKysrKysrKysrKysrKysrKysr KysrCiBnZGIvdHVpL3R1aS13aW4uaCAgIHwgIDMgKysrCiA2IGZpbGVzIGNoYW5nZWQsIDUyIGlu c2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGdkYi9ORVdTIGdkYi9ORVdT CmluZGV4IDQ0NWQyOGVmZWQ5Li4xYTAwYTZiZDc5OSAxMDA2NDQKLS0tIGdkYi9ORVdTCisrKyBn ZGIvTkVXUwpAQCAtMzgsNiArMzgsMTIgQEAgbWFpbnRlbmFuY2UgcHJpbnQgcmVjb3JkLWluc3Ry dWN0aW9uIFsgTiBdCiAgIHByaW50cyBob3cgR0RCIHdvdWxkIHVuZG8gdGhlIE4tdGggcHJldmlv dXMgaW5zdHJ1Y3Rpb24sIGFuZCBpZiBOIGlzCiAgIHBvc2l0aXZlLCBpdCBwcmludHMgaG93IEdE QiB3aWxsIHJlZG8gdGhlIE4tdGggZm9sbG93aW5nIGluc3RydWN0aW9uLgogCitzZXQgdHVpIG1v dXNlLWV2ZW50cyBbb258b2ZmXQorc2hvdyB0dWkgbW91c2UtZXZlbnRzCisgIFdoZW4gb24gKGRl ZmF1bHQpLCBtb3VzZSBjbGlja3MgY29udHJvbCB0aGUgVFVJIGFuZCBjYW4gYmUgYWNjZXNzZWQg YnkKKyAgUHl0aG9uIGV4dGVuc2lvbnMuICBXaGVuIG9mZiwgbW91c2UgY2xpY2tzIGFyZSBoYW5k bGVkIGJ5IHRoZSB0ZXJtaW5hbCwKKyAgZW5hYmxpbmcgdGVybWluYWwtbmF0aXZlIHRleHQgc2Vs ZWN0aW9uLgorCiAqIE1JIGNoYW5nZXMKIAogKiogbWkgbm93IHJlcG9ydHMgJ25vLWhpc3Rvcnkn IGFzIGEgc3RvcCByZWFzb24gd2hlbiBoaXR0aW5nIHRoZSBlbmQgb2YgdGhlCmRpZmYgLS1naXQg Z2RiL2RvYy9nZGIudGV4aW5mbyBnZGIvZG9jL2dkYi50ZXhpbmZvCmluZGV4IDAzMDMzYzdmOWUz Li42NWU4NWM3ZjhhMSAxMDA2NDQKLS0tIGdkYi9kb2MvZ2RiLnRleGluZm8KKysrIGdkYi9kb2Mv Z2RiLnRleGluZm8KQEAgLTI5NjA2LDcgKzI5NjA2LDEzIEBAIHRoZSBAa2V5e1NISUZUfSBrZXkg b24geW91ciBrZXlib2FyZCB0byB0ZW1wb3JhcmlseSBieXBhc3MKIEB2YWx1ZXtHREJOfSdzIFRV SSBhbmQgYWNjZXNzIHRoZSB0ZXJtaW5hbCdzIG5hdGl2ZSBtb3VzZSBjb3B5L3Bhc3RlCiBmdW5j dGlvbmFsaXR5IChjb21tb25seSwgY2xpY2stZHJhZy1yZWxlYXNlIG9yIGRvdWJsZS1jbGljayB0 byBzZWxlY3QKIHRleHQsIG1pZGRsZS1jbGljayB0byBwYXN0ZSkuICBUaGlzIGNvcHkvcGFzdGUg d29ya3Mgd2l0aCB0aGUKLXRlcm1pbmFsJ3Mgc2VsZWN0aW9uIGJ1ZmZlciwgYXMgb3Bwb3NlZCB0 byB0aGUgVFVJJ3MgYnVmZmVyLgordGVybWluYWwncyBzZWxlY3Rpb24gYnVmZmVyLCBhcyBvcHBv c2VkIHRvIHRoZSBUVUkncyBidWZmZXIuICBBbHRlcm5hdGl2ZWx5LCB0bworZGlzYWJsZSBtb3Vz ZSBzdXBwb3J0IGluIHRoZSBUVUkgZW50aXJlbHkgYW5kIGdpdmUgdGhlIHRlcm1pbmFsIGNvbnRy b2wgb3ZlcgorbW91c2UgY2xpY2tzLCB0dXJuIG9mZiB0aGUgQGNvZGV7dHVpIG1vdXNlLWV2ZW50 c30gc2V0dGluZworKEBweHJlZnt0dWktbW91c2UtZXZlbnRzLCxzZXQgdHVpIG1vdXNlLWV2ZW50 c30pLgorCitQeXRob24gZXh0ZW5zaW9ucyBjYW4gcmVhY3QgdG8gbW91c2UgY2xpY2tzCisoQHB4 cmVme3B5dGhvbi13aW5kb3ctY2xpY2ssLFdpbmRvdy5jbGlja30pLgogCiBAbm9kZSBUVUkgQ29t bWFuZHMKIEBzZWN0aW9uIFRVSS1zcGVjaWZpYyBDb21tYW5kcwpAQCAtMjk4ODgsNiArMjk4OTQs MTMgQEAgc291cmNlIHRleHQgYXQgdGhlIG5leHQgdGFiIHN0b3A7IHRoZSBjb21wYWN0IGRpc3Bs YXkgdXNlcyBvbmx5IGFzCiBtdWNoIHNwYWNlIGFzIGlzIG5lZWRlZCBmb3IgdGhlIGxpbmUgbnVt YmVycyBpbiB0aGUgY3VycmVudCBmaWxlLCBhbmQKIG9ubHkgYSBzaW5nbGUgc3BhY2UgdG8gc2Vw YXJhdGUgdGhlIGxpbmUgbnVtYmVycyBmcm9tIHRoZSBzb3VyY2UuCiAKK0BhbmNob3J7dHVpLW1v dXNlLWV2ZW50c30KK0BpdGVtIHNldCB0dWkgbW91c2UtZXZlbnRzIEBye1t9b25Acnt8fW9mZkBy e119CitAa2luZGV4IHNldCB0dWkgbW91c2UtZXZlbnRzCitXaGVuIG9uIChkZWZhdWx0KSwgbW91 c2UgY2xpY2tzIGNvbnRyb2wgdGhlIFRVSSAoQHB4cmVme1RVSSBNb3VzZSBTdXBwb3J0fSkuCitX aGVuIG9mZiwgbW91c2UgY2xpY2tzIGFyZSBoYW5kbGVkIGJ5IHRoZSB0ZXJtaW5hbCwgZW5hYmxp bmcgdGVybWluYWwtbmF0aXZlCit0ZXh0IHNlbGVjdGlvbi4KKwogQGtpbmRleCBzZXQgZGVidWcg dHVpCiBAaXRlbSBzZXQgZGVidWcgdHVpIEBye1t9b258b2ZmQHJ7XX0KIFR1cm4gb24gb3Igb2Zm IGRpc3BsYXkgb2YgQHZhbHVle0dEQk59IGludGVybmFsIGRlYnVnIG1lc3NhZ2VzIHJlbGF0aW5n CmRpZmYgLS1naXQgZ2RiL2RvYy9weXRob24udGV4aSBnZGIvZG9jL3B5dGhvbi50ZXhpCmluZGV4 IGIwNGYxZGUyZGRmLi5hYjMwNTBjYTE1YyAxMDA2NDQKLS0tIGdkYi9kb2MvcHl0aG9uLnRleGkK KysrIGdkYi9kb2MvcHl0aG9uLnRleGkKQEAgLTY3MjIsMTEgKzY3MjIsMTYgQEAgY29udGVudHMu ICBBIHBvc2l0aXZlIGFyZ3VtZW50IHNob3VsZCBjYXVzZSB0aGUgdmlld3BvcnQgdG8gbW92ZSBk b3duLAogYW5kIHNvIHRoZSBjb250ZW50IHNob3VsZCBhcHBlYXIgdG8gbW92ZSB1cC4KIEBlbmQg ZGVmdW4KIAorQGFuY2hvcntweXRob24td2luZG93LWNsaWNrfQogQGRlZnVuIFdpbmRvdy5jbGlj ayAoQHZhcnt4fSwgQHZhcnt5fSwgQHZhcntidXR0b259KQogVGhpcyBpcyBjYWxsZWQgb24gYSBt b3VzZSBjbGljayBpbiB0aGlzIHdpbmRvdy4gIEB2YXJ7eH0gYW5kIEB2YXJ7eX0gYXJlCiB0aGUg bW91c2UgY29vcmRpbmF0ZXMgaW5zaWRlIHRoZSB3aW5kb3cgKDAtYmFzZWQsIGZyb20gdGhlIHRv cCBsZWZ0CiBjb3JuZXIpLCBhbmQgQHZhcntidXR0b259IHNwZWNpZmllcyB3aGljaCBtb3VzZSBi dXR0b24gd2FzIHVzZWQsIHdob3NlCiB2YWx1ZXMgY2FuIGJlIDEgKGxlZnQpLCAyIChtaWRkbGUp LCBvciAzIChyaWdodCkuCisKK1doZW4gVFVJIG1vdXNlIGV2ZW50cyBhcmUgZGlzYWJsZWQgYnkg dHVybmluZyBvZmYgdGhlIEBjb2Rle3R1aSBtb3VzZS1ldmVudHN9CitzZXR0aW5nIChAcHhyZWZ7 dHVpLW1vdXNlLWV2ZW50cywsc2V0IHR1aSBtb3VzZS1ldmVudHN9KSwgdGhlbiBAY29kZXtjbGlj a30gd2lsbAorbm90IGJlIGNhbGxlZC4KIEBlbmQgZGVmdW4KIAogQG5vZGUgRGlzYXNzZW1ibHkg SW4gUHl0aG9uCmRpZmYgLS1naXQgZ2RiL3R1aS90dWktaW8uYyBnZGIvdHVpL3R1aS1pby5jCmlu ZGV4IGExN2NmMzhhMWYyLi40NWVmMzRhZWFiNSAxMDA2NDQKLS0tIGdkYi90dWkvdHVpLWlvLmMK KysrIGdkYi90dWkvdHVpLWlvLmMKQEAgLTY1NSw3ICs2NTUsOCBAQCBzdGF0aWMgdm9pZAogdHVp X3ByZXBfdGVybWluYWwgKGludCBub3R1c2VkMSkKIHsKICNpZmRlZiBOQ1VSU0VTX01PVVNFX1ZF UlNJT04KLSAgbW91c2VtYXNrIChBTExfTU9VU0VfRVZFTlRTLCBOVUxMKTsKKyAgaWYgKHR1aV9l bmFibGVfbW91c2UpCisgICAgbW91c2VtYXNrIChBTExfTU9VU0VfRVZFTlRTLCBOVUxMKTsKICNl bmRpZgogfQogCmRpZmYgLS1naXQgZ2RiL3R1aS90dWktd2luLmMgZ2RiL3R1aS90dWktd2luLmMK aW5kZXggMDA4MTg5ZWI5OWIuLjEwMWZlZmNmZTBhIDEwMDY0NAotLS0gZ2RiL3R1aS90dWktd2lu LmMKKysrIGdkYi90dWkvdHVpLXdpbi5jCkBAIC04OTcsNiArODk3LDE3IEBAIHR1aV9zaG93X2Nv bXBhY3Rfc291cmNlIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAogICBnZGJf cHJpbnRmIChmaWxlLCBfKCJUVUkgc291cmNlIHdpbmRvdyBjb21wYWN0bmVzcyBpcyAlcy5cbiIp LCB2YWx1ZSk7CiB9CiAKK2Jvb2wgdHVpX2VuYWJsZV9tb3VzZSA9IHRydWU7CisKKy8qIEltcGxl bWVudCAnc2hvdyB0dWkgbW91c2UtZXZlbnRzJy4gICovCisKK3N0YXRpYyB2b2lkCitzaG93X3R1 aV9tb3VzZV9ldmVudHMgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCisJCSAg ICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCit7Cisg IGdkYl9wcmludGYgKGZpbGUsIF8oIlRVSSBtb3VzZSBldmVudHMgYXJlICVzLlxuIiksIHZhbHVl KTsKK30KKwogLyogU2V0IHRoZSB0YWIgd2lkdGggb2YgdGhlIHNwZWNpZmllZCB3aW5kb3cuICAq Lwogc3RhdGljIHZvaWQKIHR1aV9zZXRfdGFiX3dpZHRoX2NvbW1hbmQgKGNvbnN0IGNoYXIgKmFy ZywgaW50IGZyb21fdHR5KQpAQCAtMTI4NCw2ICsxMjk1LDE3IEBAIHBvc2l0aW9uIGluZGljYXRv ciBpcyBzdHlsZWQuIiksCiAJCQkgICAmc3R5bGVfc2V0X2xpc3QsCiAJCQkgICAmc3R5bGVfc2hv d19saXN0KTsKIAorICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoIm1vdXNlLWV2ZW50cyIsIGNs YXNzX3R1aSwKKwkJCSAgICZ0dWlfZW5hYmxlX21vdXNlLCBfKCJcCitTZXQgd2hldGhlciBUVUkg bW9kZSBoYW5kbGVzIG1vdXNlIGNsaWNrcy4iKSwgXygiXAorU2hvdyB3aGV0aGVyIFRVSSBtb2Rl IGhhbmRsZXMgbW91c2UgY2xpY2tzLiIpLCBfKCJcCitXaGVuIG9uIChkZWZhdWx0KSwgbW91c2Ug Y2xpY2tzIGNvbnRyb2wgdGhlIFRVSSBhbmQgY2FuIGJlIGFjY2Vzc2VkIGJ5IFB5dGhvblxuXAor ZXh0ZW5zaW9ucy4gIFdoZW4gb2ZmLCBtb3VzZSBjbGlja3MgYXJlIGhhbmRsZWQgYnkgdGhlIHRl cm1pbmFsLCBlbmFibGluZ1xuXAordGVybWluYWwtbmF0aXZlIHRleHQgc2VsZWN0aW9uLiIpLAor CQkJICAgTlVMTCwKKwkJCSAgIHNob3dfdHVpX21vdXNlX2V2ZW50cywKKwkJCSAgICZ0dWlfc2V0 bGlzdCwgJnR1aV9zaG93bGlzdCk7CisKICAgdHVpX2JvcmRlcl9zdHlsZS5jaGFuZ2VkLmF0dGFj aCAodHVpX3JlaGlnaGxpZ2h0X2FsbCwgInR1aS13aW4iKTsKICAgdHVpX2FjdGl2ZV9ib3JkZXJf c3R5bGUuY2hhbmdlZC5hdHRhY2ggKHR1aV9yZWhpZ2hsaWdodF9hbGwsICJ0dWktd2luIik7CiB9 CmRpZmYgLS1naXQgZ2RiL3R1aS90dWktd2luLmggZ2RiL3R1aS90dWktd2luLmgKaW5kZXggNGIz M2YxZjJiNTQuLjAzOTk5M2ZiYTM0IDEwMDY0NAotLS0gZ2RiL3R1aS90dWktd2luLmgKKysrIGdk Yi90dWkvdHVpLXdpbi5oCkBAIC01MSw2ICs1MSw5IEBAIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50 ICoqdHVpX2dldF9jbWRfbGlzdCAodm9pZCk7CiAvKiBXaGV0aGVyIGNvbXBhY3Qgc291cmNlIGRp c3BsYXkgc2hvdWxkIGJlIHVzZWQuICAqLwogZXh0ZXJuIGJvb2wgY29tcGFjdF9zb3VyY2U7CiAK Ky8qIFdoZXRoZXIgdGhlIFRVSSBzaG91bGQgaW50ZXJjZXB0IHRlcm1pbmFsIG1vdXNlIGV2ZW50 cy4gICovCitleHRlcm4gYm9vbCB0dWlfZW5hYmxlX21vdXNlOworCiAvKiBXaGV0aGVyIHRvIHN0 eWxlIHRoZSBzb3VyY2UgYW5kIGFzc2VtYmx5IGNvZGUgaGlnaGxpZ2h0ZWQgYnkgdGhlIFRVSSdz CiAgICBjdXJyZW50IHBvc2l0aW9uIGluZGljYXRvci4gICovCiBleHRlcm4gYm9vbCBzdHlsZV90 dWlfY3VycmVudF9wb3NpdGlvbjsKLS0gCjIuMjkuMgoK --0000000000002169b405f3ad367b--