From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Nathaniel Flath Newsgroups: gmane.emacs.devel Subject: Re: Overalays and point-entered Date: Wed, 9 Dec 2009 22:37:35 -0500 Message-ID: <5e3a506e0912091937v4a6ab81egee0529bb9603dfc8@mail.gmail.com> References: <5e3a506e0909101709u2259d56h25f3ef1ec67326aa@mail.gmail.com> <5e3a506e0910230843r3fb837e7v9aa9cf5e57a7aed@mail.gmail.com> <5e3a506e0910270142y799d80dm7c4ebda24e31556@mail.gmail.com> <87aazcfiud.fsf@catnip.gol.com> <5e3a506e0910311003g1a16874em8e51baed60099a48@mail.gmail.com> <5e3a506e0911060654w6220a69j9e2af2b6988a4c5f@mail.gmail.com> <5e3a506e0912091541v71f7c4ebq6daf0bcac2ddccd2@mail.gmail.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=000e0cd0eaa42f01f4047a5787fa X-Trace: ger.gmane.org 1260416293 15320 80.91.229.12 (10 Dec 2009 03:38:13 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 10 Dec 2009 03:38:13 +0000 (UTC) Cc: Stefan Monnier , emacs-devel@gnu.org To: Miles Bader Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Dec 10 04:38:05 2009 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1NIZqi-0001AQ-42 for ged-emacs-devel@m.gmane.org; Thu, 10 Dec 2009 04:38:05 +0100 Original-Received: from localhost ([127.0.0.1]:34924 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NIZqh-0005HE-Et for ged-emacs-devel@m.gmane.org; Wed, 09 Dec 2009 22:37:51 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NIZqb-0005GY-GL for emacs-devel@gnu.org; Wed, 09 Dec 2009 22:37:45 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NIZqW-0005EI-D9 for emacs-devel@gnu.org; Wed, 09 Dec 2009 22:37:44 -0500 Original-Received: from [199.232.76.173] (port=59041 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NIZqW-0005E9-5n for emacs-devel@gnu.org; Wed, 09 Dec 2009 22:37:40 -0500 Original-Received: from mail-pz0-f181.google.com ([209.85.222.181]:52403) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NIZqS-00014A-R5; Wed, 09 Dec 2009 22:37:37 -0500 Original-Received: by pzk11 with SMTP id 11so1125280pzk.14 for ; Wed, 09 Dec 2009 19:37:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type; bh=bH4HWEZI+yQ5XhWBeNxc6HP5aa6aipWgwGQx7FXwEkg=; b=nWmnNu095hjYUF1D6I03gCzO6NefALvtYdv9j3OpPxkX3NRl9unjObrLq9ZDj4De/q mZ2e1Scp1atjJPjcOo4HhR2gCaNeVwqKeRdxb2Gugz6z9UfL8OQqXwO5VKUbkO0g06SU Q+LcY8pX8q2pJe/WaNxvIDo3r9efNkbxXxEsk= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=j6dSorOHeUgOpQJ6pZ+CkiFT+4/79ARG4d/HYnxwq+9YPXkB9eYbYZsOCRly7O6c9w HSpLX9SxyqBNtZCja0HUggIpiRrNp1W/4iOxPSg6wC1rmkiUhQebQBZXGMZe8PZONNtP 7aA3Mw29uNRyHtI7Y474fJMwXHQJrQt83y/8A= Original-Received: by 10.140.255.17 with SMTP id c17mr862648rvi.137.1260416255590; Wed, 09 Dec 2009 19:37:35 -0800 (PST) In-Reply-To: <5e3a506e0912091541v71f7c4ebq6daf0bcac2ddccd2@mail.gmail.com> X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:118509 Archived-At: --000e0cd0eaa42f01f4047a5787fa Content-Type: multipart/alternative; boundary=000e0cd0eaa42f01e9047a5787f8 --000e0cd0eaa42f01e9047a5787f8 Content-Type: text/plain; charset=ISO-8859-1 The patch is attached - please let me know if you have any comments. Thanks, Nathaniel Flath On Wed, Dec 9, 2009 at 6:41 PM, Nathaniel Flath wrote: > So after having my motherboard fried and having to finish projects, I > finally had enough time to look at this again. I've bene paying attention > to this list, so I realize that the feature freeze is in effect, but if it's > possible to discuss this now so that the next time trunk is unfrozen it can > be put in I'd like to do that. > > The current solution I have for the problem we were discussing is to have > both buffers and windows have a list of overlays that had text properties > with 'point-motion at the last point position. The value of 'point-motion > is a function that takes prev-pt-position, current-pt-position, the > overlay/text property the function belongs to, the buffer that was active > last time run_point_motion_hooks was called, the previous window, and > whether the hook 'belongs' to a buffer or a window. This is getting a bit > cumbersome, but also lets the writer of the hook specify exactly the > behavior they want. The hooks for the current buffer, previous buffer, > current window, and previous window are all run. I'm working on the patch > for this - I'll send it on when I'm finished, which will probably be later > today. Does this sound like a good approach, or do you have some other > suggestion? > > Thanks, > Nathaniel Flath > > > On Fri, Nov 6, 2009 at 9:54 AM, Nathaniel Flath wrote: > >> I started working on this - attached is a patch that will run hooks in >> point-motion only when movement occurs inside the same buffer and window. >> I'll work on buffer-change-motion-hook a bit later. Let me know if there's >> any issues. >> >> Thanks, >> Nathaniel Flath >> >> >> On Sat, Oct 31, 2009 at 12:03 PM, Nathaniel Flath wrote: >> >>> This may be a good solution. What are your thoughts, Stefan? >>> >>> Nathaniel >>> >>> >>> On Tue, Oct 27, 2009 at 8:44 PM, Miles Bader wrote: >>> >>>> Stefan Monnier writes: >>>> > Now, what the behavior should be upon C-x o or C-x b is again somewhat >>>> > unclear: for C-x b, actually I think it's pretty clear that it should >>>> > run the hook (which is a vote in favor of per-window data), but for >>>> "C-x >>>> > o" it's less clear: running the hook would often be a good idea, but >>>> > would mean that it's somewhere between difficult and impossible to let >>>> > the user go to the *Completions* buffer to select an entry with >>>> > choose-completion. >>>> >>>> It seems like it would be easier to handle the subtle variations among a >>>> variety of cases if there were simply hooks for each type of movement -- >>>> one which is per-buffer, and only cares about point position, one which >>>> runs when a window becomes selected/deselected (C-x o case), and one >>>> which runs when a buffer is attached/detached from a window (C-x b >>>> case). >>>> >>>> Then the programmer could add hooks to handle which things he cared >>>> about, without having them be inadvertently triggered in cases he >>>> doesn't care about. >>>> >>>> -miles >>>> >>>> -- >>>> "Though they may have different meanings, the cries of 'Yeeeee-haw!' and >>>> 'Allahu akbar!' are, in spirit, not actually all that different." >>>> >>> >>> >> > --000e0cd0eaa42f01e9047a5787f8 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable The patch is attached - please let me know if you have any comments.
Thanks,
Nathaniel Flath

On Wed, Dec 9= , 2009 at 6:41 PM, Nathaniel Flath <flat0103@gmail.com> wrote:
So after having m= y motherboard fried and having to finish projects, I finally had enough tim= e to look at this again.=A0 I've bene paying attention to this list, so= I realize that the feature freeze is in effect, but if it's possible t= o discuss this now so that the next time trunk is unfrozen it can be put in= I'd like to do that.

The current=A0 solution I have for the problem we were discussing is to= have both buffers and windows have a list of overlays that had text proper= ties with 'point-motion at the last point position.=A0 The value of = 9;point-motion is a function that takes prev-pt-position, current-pt-positi= on,=A0 the overlay/text property the function belongs to, the buffer that w= as active last time run_point_motion_hooks was called, the previous window,= and whether the hook 'belongs' to a buffer or a window.=A0 This is= getting a bit cumbersome, but also lets the writer of the hook specify exa= ctly the behavior they want.=A0 The hooks for the current buffer, previous = buffer, current window, and previous window are all run.=A0 I'm working= on the patch for this - I'll send it on when I'm finished, which w= ill probably be later today.=A0 Does this sound like a good approach, or do= you have some other suggestion?

Thanks,
Nathaniel Flath


On Fri, Nov 6, 2009 = at 9:54 AM, Nathaniel Flath <flat0103@gmail.com> wrote:
I started working on this - attached is a patch that will run hooks in poin= t-motion only when movement occurs inside the same buffer and window.=A0 I&= #39;ll work on buffer-change-motion-hook a bit later.=A0 Let me know if the= re's any issues.

Thanks,
Nathaniel Flath


On Sat, Oct 31, 2009 at 12:03 PM,= Nathaniel Flath <flat0103@gmail.com> wrote:
This may be a good solution.=A0 What are your thoughts, Stefan?

Nathaniel


On Tue, Oct 27, 2009 at 8:44 PM, Miles Bader <miles@gnu.org> wrote:
Stefan Monni= er <monnie= r@iro.umontreal.ca> writes:
> Now, what the behavior should be upon C-x o or C-x b is again somewhat=
> unclear: for C-x b, actually I think it's pretty clear that it sho= uld
> run the hook (which is a vote in favor of per-window data), but for &q= uot;C-x
> o" it's less clear: running the hook would often be a good id= ea, but
> would mean that it's somewhere between difficult and impossible to= let
> the user go to the *Completions* buffer to select an entry with
> choose-completion.

It seems like it would be easier to handle the subtle variations amon= g a
variety of cases if there were simply hooks for each type of movement -- one which is per-buffer, and only cares about point position, one which
runs when a window becomes selected/deselected (C-x o case), and one
which runs when a buffer is attached/detached from a window (C-x b case).
Then the programmer could add hooks to handle which things he cared
about, without having them be inadvertently triggered in cases he
doesn't care about.

-miles

--
"Though they may have different meanings, the cries of 'Yeeeee-haw= !' and
=A0'Allahu akbar!' are, in spirit, not actually all that different.= "




--000e0cd0eaa42f01e9047a5787f8-- --000e0cd0eaa42f01f4047a5787fa Content-Type: text/x-patch; charset=US-ASCII; name="pointmotion.patch" Content-Disposition: attachment; filename="pointmotion.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g30za5gl0 SW5kZXg6IGJ1ZmZlci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9zb3VyY2VzL2VtYWNzL2VtYWNz L3NyYy9idWZmZXIuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41OTEKZGlmZiAtcjEuNTkxIGJ1 ZmZlci5jCjM5OWMzOTksNDAxCjwgCi0tLQo+ICAgYi0+bm92ZXJsYXlzX3ByZXYgPSAwOwo+ICAg Yi0+cHJldl90ZXh0X3Byb3AgPSBRbmlsOwo+ICAgYi0+b3ZlcmxheV9wcmV2X3ZlYyA9IDA7CjIy MDhjMjIxMAo8ICAgICBlcnJvciAoIkNhbm5vdCBzd2FwIGEgZGVhZCBidWZmZXIncyB0ZXh0Iik7 ICAgIAotLS0KPiAgICAgZXJyb3IgKCJDYW5ub3Qgc3dhcCBhIGRlYWQgYnVmZmVyJ3MgdGV4dCIp Owo0MzU1YzQzNTcKPCAgICAgbGFzdF9vdmVybGF5X21vZGlmaWNhdGlvbl9ob29rcyA9IGxhcmdl cl92ZWN0b3IgCi0tLQo+ICAgICBsYXN0X292ZXJsYXlfbW9kaWZpY2F0aW9uX2hvb2tzID0gbGFy Z2VyX3ZlY3RvcgpJbmRleDogYnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3NvdXJjZXMv ZW1hY3MvZW1hY3Mvc3JjL2J1ZmZlci5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEzMApkaWZm IC1yMS4xMzAgYnVmZmVyLmgKNTYwYTU2MSw1NjcKPiAgIC8qIFZlY3RvciBvZiBvdmVybGF5cyB0 aGF0IHdlcmUgb24gdGhpcyB3aW5kb3cgdGhlIGxhc3QgdGltZQo+ICAgICAgcnVuX3BvaW50X21v dGlvbl9ob29rcyB3YXMgcnVuIGFuZCB0aGlzIHdpbmRvdyB3YXMgY3VycmVudCAqLwo+ICAgTGlz cF9PYmplY3QqIG92ZXJsYXlfcHJldl92ZWM7Cj4gCj4gICAvKiBOdW1iZXIgb2Ygb3ZlcmxheXMg aW4gb3ZlcmxheV9wcmV2X3ZlYyAqLwo+ICAgdW5zaWduZWQgaW50IG5vdmVybGF5c19wcmV2Owo+ IAo3OThhODA2LDgwOQo+IAo+ICAgLyogVGV4dCBwcm9wZXJ0eSBjb250YWluaW5nIHBvaW50LW1v dGlvbiAqLwo+ICAgTGlzcF9PYmplY3QgcHJldl90ZXh0X3Byb3A7Cj4gCkluZGV4OiBlZGl0Zm5z LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3NvdXJjZXMvZW1hY3MvZW1hY3Mvc3JjL2VkaXRmbnMu Yyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40NzYKZGlmZiAtcjEuNDc2IGVkaXRmbnMuYwo1MDJh NTAzLDU0NAo+IC8qIFJldHVybnMgYW4gYXJyYXkgb2Ygb3ZlcmxheXMgdGhhdCBhcmUgYWN0aXZl IGF0IHRoZSBpbmRpY2F0aW9uIHBvc2l0aW9uIGFuZCBidWZmZXIuCj4gICAgVGhlIGxlbmdodCBv ZiB0aGUgYXJyYXkgd2lsbCBiZSBzdG9yZWQgaW4gbnVtX292ZXJsYXlzLiAqLwo+IAo+IExpc3Bf T2JqZWN0Kgo+IGdldF9vdmVybGF5c19hdF9wb3MgKHBvc2l0aW9uLCBidWZmZXIsIG51bV9vdmVy bGF5cyApCj4gICAgICBMaXNwX09iamVjdCBwb3NpdGlvbiwgYnVmZmVyOwo+ICAgICAgaW50KiBu dW1fb3ZlcmxheXM7Cj4gewo+ICAgQ0hFQ0tfTlVNQkVSX0NPRVJDRV9NQVJLRVIgKHBvc2l0aW9u KTsKPiAKPiAgIGlmIChOSUxQIChidWZmZXIpKQo+ICAgICBYU0VUQlVGRkVSIChidWZmZXIsIGN1 cnJlbnRfYnVmZmVyKTsKPiAKPiAgIGludCBwb3NuID0gWElOVCAocG9zaXRpb24pOwo+ICAgaW50 IGksIG5vdmVybGF5czsKPiAgIExpc3BfT2JqZWN0KiBvdmVybGF5X3ZlYzsKPiAgIHN0cnVjdCBi dWZmZXIgKm9idWYgPSBjdXJyZW50X2J1ZmZlcjsKPiAgIHNldF9idWZmZXJfdGVtcCAoWEJVRkZF UiAoYnVmZmVyKSk7Cj4gCj4gICBub3ZlcmxheXMgPSBvdmVybGF5c19hcm91bmQgKHBvc24sIG92 ZXJsYXlfdmVjLCAwKTsKPiAgIG92ZXJsYXlfdmVjID0geG1hbGxvYyAoc2l6ZW9mKExpc3BfT2Jq ZWN0KSAqIG5vdmVybGF5cyk7Cj4gICBub3ZlcmxheXMgPSBvdmVybGF5c19hcm91bmQgKHBvc24s IG92ZXJsYXlfdmVjLCBub3ZlcmxheXMpOwo+ICAgbm92ZXJsYXlzID0gc29ydF9vdmVybGF5cyAo b3ZlcmxheV92ZWMsIG5vdmVybGF5cywgTlVMTCk7Cj4gCj4gICBzZXRfYnVmZmVyX3RlbXAgKG9i dWYpOwo+ICAgZm9yIChpID0gMDsgaSA8IG5vdmVybGF5czsgaSsrKQo+ICAgICB7Cj4gICAgICAg TGlzcF9PYmplY3Qgb2wgPSBvdmVybGF5X3ZlY1tpXTsKPiAgICAgICBMaXNwX09iamVjdCBzdGFy dCA9IE9WRVJMQVlfU1RBUlQgKG9sKSwgZmluaXNoID0gT1ZFUkxBWV9FTkQgKG9sKTsKPiAgICAg ICBpZiAoKE9WRVJMQVlfUE9TSVRJT04gKHN0YXJ0KSA9PSBwb3NuCj4gICAgICAgICAgICAmJiBY TUFSS0VSIChzdGFydCktPmluc2VydGlvbl90eXBlID09IDEpCj4gICAgICAgICAgIHx8IChPVkVS TEFZX1BPU0lUSU9OIChmaW5pc2gpID09IHBvc24KPiAgICAgICAgICAgICAgICYmIFhNQVJLRVIg KGZpbmlzaCktPmluc2VydGlvbl90eXBlID09IDApKQo+ICAgICAgICAgewo+ICAgICAgICAgICBv dmVybGF5X3ZlY1tpXSA9IG92ZXJsYXlfdmVjW25vdmVybGF5c107Cj4gICAgICAgICAgIG5vdmVy bGF5cy0tOyBpLS07Cj4gICAgICAgICB9Cj4gICAgIH0KPiAgICpudW1fb3ZlcmxheXMgPSBub3Zl cmxheXM7Cj4gICByZXR1cm4gb3ZlcmxheV92ZWM7Cj4gfQo+IApJbmRleDoga2V5Ym9hcmQuYwo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09ClJDUyBmaWxlOiAvc291cmNlcy9lbWFjcy9lbWFjcy9zcmMva2V5Ym9hcmQuYyx2 CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMDI0CmRpZmYgLXIxLjEwMjQga2V5Ym9hcmQuYwoxOTgy YTE5ODMsMTk4NQo+ICAgICAgIGlmIChOSUxQIChWaW5oaWJpdF9wb2ludF9tb3Rpb25faG9va3Mp KQo+ICAgICAgICAgcnVuX3BvaW50X21vdGlvbl9ob29rcyAocHJldl9idWZmZXIpOwo+IAoxOTk0 YTE5OTgsMjIwMwo+IC8qIENoZWNrcyBpZiBpdCBzaG91bGQgcnVuIGEgJ3BvaW50LW1vdGlvbiBo b29rIGZvciB0aGUgZ2l2ZW4gb3ZlcmxheSBvciB0ZXh0IHByb3BlcnR5LiAgVGhlCj4gICogcHJv cGVydHkgd2lsbCBiZSBydW4gaWYgaXQgZXhpc3RzLCBpZiB0aGUgd2luZG93IHByb3BlcnR5IGlz bid0IHNldCB0byBkaXNhYmxlIGl0LCBhbmQgaWYKPiAgKiB0aGUgb3ZlcmxheSBpcyBub3QgaW4g b3ZlcmxheV92ZWMuCj4gICovCj4gdm9pZCBjaGVja19ydW5fcG9pbnRfbW90aW9uX2hvb2sgKG92 ZXJsYXksCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZfYnVmZmVyLAo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2X3dpbmRvdywKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfYnVmZmVyLAo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvdmVybGF5X3ZlYywKPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbm92ZXJsYXlfdmVjKQo+ICAgICAgTGlzcF9PYmplY3Qgb3ZlcmxheSwgcHJldl9i dWZmZXIsIHByZXZfd2luZG93LCBpc19idWZmZXI7Cj4gICAgICBMaXNwX09iamVjdCogb3Zlcmxh eV92ZWM7Cj4gICAgICBpbnQgbm92ZXJsYXlfdmVjOwo+IHsKPiAgIGV4dGVybiBMaXNwX09iamVj dCBRcG9pbnRfbW90aW9uLCBRd2luZG93Owo+ICAgTGlzcF9PYmplY3QgcG9pbnRfbW90aW9uLCBv dmVybGF5X3dpbmRvdzsKPiAgIGludCBqOwo+ICAgcG9pbnRfbW90aW9uID0gRm92ZXJsYXlfZ2V0 IChvdmVybGF5LCBRcG9pbnRfbW90aW9uKTsKPiAgIG92ZXJsYXlfd2luZG93ID0gRm92ZXJsYXlf Z2V0IChvdmVybGF5LCBRd2luZG93KTsKPiAgIGlmICghTklMUCAocG9pbnRfbW90aW9uKSAmJgo+ ICAgICAgIChOSUxQIChvdmVybGF5X3dpbmRvdykKPiAgICAgICAgfHwgIU5JTFAgKEZlcSAob3Zl cmxheV93aW5kb3csIEZzZWxlY3RlZF93aW5kb3coKSkpKSkKPiAgICAgewo+ICAgICAgIGZvciAo aiA9IDA7IGogPCBub3ZlcmxheV92ZWM7IGorKykKPiAgICAgICAgIHsKPiAgICAgICAgICAgaWYg KCFOSUxQIChGZXEgKG92ZXJsYXksIG92ZXJsYXlfdmVjW2pdICkgKSApCj4gICAgICAgICAgICAg cmV0dXJuOwo+ICAgICAgICAgfQo+IAo+ICAgICAgIGNhbGw2IChwb2ludF9tb3Rpb24sCj4gICAg ICAgICAgICAgIG1ha2VfbnVtYmVyIChsYXN0X3BvaW50X3Bvc2l0aW9uKSwKPiAgICAgICAgICAg ICAgbWFrZV9udW1iZXIgKGN1cnJlbnRfYnVmZmVyLT5wdCksCj4gICAgICAgICAgICAgIG92ZXJs YXksCj4gICAgICAgICAgICAgIHByZXZfYnVmZmVyLAo+ICAgICAgICAgICAgICBwcmV2X3dpbmRv dywKPiAgICAgICAgICAgICAgaXNfYnVmZmVyCj4gICAgICAgICAgICAgICk7Cj4gICAgIH0KPiB9 Cj4gCj4gLyogIFJ1bnMgJ3BvaW50LW1vdGlvbiBob29rcyBvbiB0ZXh0IHByb3BlcnRpZXMgYW5k IG92ZXJsYXlzLiAqLwo+IHZvaWQKPiBydW5fcG9pbnRfbW90aW9uX2hvb2tzIChwcmV2X2NfYnVm ZmVyKQo+ICAgICAgc3RydWN0IGJ1ZmZlciogcHJldl9jX2J1ZmZlcjsKPiB7Cj4gICBleHRlcm4g TGlzcF9PYmplY3QgUXBvaW50X21vdGlvbiwgUXdpbmRvdzsKPiAKPiAgIHN0YXRpYyBMaXNwX09i amVjdCogcHJldl93aW5kb3c7Cj4gICBzdGF0aWMgTGlzcF9PYmplY3QqIHByZXZfYnVmZmVyOwo+ ICAgc3RhdGljIHN0cnVjdCB3aW5kb3cqIHByZXZfY193aW5kb3c7Cj4gCj4gICBpbnQgaSwgaiwg bm92ZXJsYXlzX2N1cjsKPiAgIExpc3BfT2JqZWN0ICpvdmVybGF5X2N1cl92ZWM7Cj4gICBMaXNw X09iamVjdCBwb2ludF9tb3Rpb24sIG92ZXJsYXlfd2luZG93Owo+ICAgc3RydWN0IHdpbmRvdyog Y3VycmVudF93aW5kb3cgPSBYV0lORE9XIChGc2VsZWN0ZWRfd2luZG93KCkpOwo+IAo+ICAgLyog UmV0cmlldmVzIHZlY3RvciBvZiBvdmVybGF5cyBpbiBjdXJyZW50IGxvY2F0aW9uIGFuZCBydW5z ICdwb2ludC1tb3Rpb24gKi8KPiAgICAgIG92ZXJsYXlfY3VyX3ZlYyA9IGdldF9vdmVybGF5c19h dF9wb3MgKG1ha2VfbnVtYmVyIChjdXJyZW50X2J1ZmZlci0+cHQpLAo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9idWZmZXIsCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbm92ZXJsYXlzX2N1cik7Cj4gICBmb3IgKGkg PSAwOyBpIDwgbm92ZXJsYXlzX2N1cjsgaSsrKQo+ICAgICB7Cj4gICAgICAgY2hlY2tfcnVuX3Bv aW50X21vdGlvbl9ob29rIChvdmVybGF5X2N1cl92ZWNbaV0sCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwcmV2X2J1ZmZlciwKPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHByZXZfd2luZG93LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUXQsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Cj4gICAgIH0KPiAKPiAgIC8qIFJ1bnMgJ3Bv aW50LW1vdGlvbiBmb3Igb3ZlcmxheXMgYmVpbmcgbW92ZWQgb3V0IG9mICovCj4gICBmb3IgKGkg PSAwOyBpIDwgY3VycmVudF9idWZmZXItPm5vdmVybGF5c19wcmV2OyBpKyspCj4gICAgIHsKPiAg ICAgICBjaGVja19ydW5fcG9pbnRfbW90aW9uX2hvb2soIGN1cnJlbnRfYnVmZmVyLT5vdmVybGF5 X3ByZXZfdmVjW2ldLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldl9i dWZmZXIsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2X3dpbmRvdywK PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF0LAo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheV9jdXJfdmVjLAo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbm92ZXJsYXlzX2N1ciApOwo+ICAgICB9Cj4gCj4gICBmb3IgKGkg PSAwOyBpIDwgY3VycmVudF93aW5kb3ctPm5vdmVybGF5c19wcmV2OyBpKyspCj4gICAgIHsKPiAg ICAgICBjaGVja19ydW5fcG9pbnRfbW90aW9uX2hvb2soIGN1cnJlbnRfd2luZG93LT5vdmVybGF5 X3ByZXZfdmVjW2ldLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldl9i dWZmZXIsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2X3dpbmRvdywK PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFuaWwsCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5X2N1cl92ZWMsCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBub3ZlcmxheXNfY3VyICk7Cj4gICAgIH0KPiAKPiAgIC8qIFJl c3Qgb2YgY29tbWFuZHMgaGFuZGxlIGNoYW5naW5nIHdpbmRvd3MvYnVmZmVycyAqLwo+ICAgaWYo IGN1cnJlbnRfYnVmZmVyICE9IHByZXZfY19idWZmZXIgKSB7Cj4gICAgIGZvciAoaSA9IDA7IGkg PCBwcmV2X2NfYnVmZmVyLT5ub3ZlcmxheXNfcHJldjsgaSsrICkgewo+ICAgICAgIGNoZWNrX3J1 bl9wb2ludF9tb3Rpb25faG9vayggcHJldl9jX2J1ZmZlci0+b3ZlcmxheV9wcmV2X3ZlY1tpXSwK PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZfYnVmZmVyLAo+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldl93aW5kb3csCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRdCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG92ZXJsYXlfY3VyX3ZlYywKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5vdmVybGF5c19jdXIgKTsKPiAgICAgfQo+ICAgfQo+IAo+ICAgaWYoIHByZXZfY193aW5k b3cgIT0gMCAmJiBjdXJyZW50X3dpbmRvdyAhPSBwcmV2X2Nfd2luZG93ICkgewo+ICAgICBmb3Ig KGkgPSAwOyBpIDwgcHJldl9jX3dpbmRvdy0+bm92ZXJsYXlzX3ByZXY7IGkrKykKPiAgICAgICB7 Cj4gICAgICAgICBjaGVja19ydW5fcG9pbnRfbW90aW9uX2hvb2soIHByZXZfY193aW5kb3ctPm92 ZXJsYXlfcHJldl92ZWNbaV0sCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHByZXZfYnVmZmVyLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2 X3dpbmRvdywKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUW5pbCwKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheV9jdXJfdmVjLAo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3ZlcmxheXNfY3VyICk7Cj4gICAg ICAgfQo+ICAgfQo+IAo+ICAgLyogUnVucyBob29rIGZvciBjdXJyZW50IHRleHQgcHJvcGVydHkg Ki8KPiAgIHBvaW50X21vdGlvbiA9IEZnZXRfdGV4dF9wcm9wZXJ0eSAobWFrZV9udW1iZXIgKGN1 cnJlbnRfYnVmZmVyLT5wdCksCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFwb2ludF9tb3Rpb24sCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFu aWwpOwo+ICAgaWYgKCFOSUxQIChwb2ludF9tb3Rpb24pKQo+ICAgICB7Cj4gICAgICAgY2FsbDYg KHBvaW50X21vdGlvbiwKPiAgICAgICAgICAgICAgbWFrZV9udW1iZXIgKGxhc3RfcG9pbnRfcG9z aXRpb24pLAo+ICAgICAgICAgICAgICBtYWtlX251bWJlciAoY3VycmVudF9idWZmZXItPnB0KSwK PiAgICAgICAgICAgICAgcG9pbnRfbW90aW9uLAo+ICAgICAgICAgICAgICBwcmV2X2J1ZmZlciwK PiAgICAgICAgICAgICAgcHJldl93aW5kb3csCj4gICAgICAgICAgICAgIFF0ICk7Cj4gICAgIH0K PiAKPiAKPiAKPiAgIC8qIFJ1bnMgJ3BvaW50LW1vdGlvbiBmb3IgdGV4dCBwcm9wZXJ0eSBiZWlu ZyBtb3ZlZCBvdXQgb2YgKi8KPiAgIGlmIChjdXJyZW50X2J1ZmZlci0+cHJldl90ZXh0X3Byb3Ag IT0gMAo+ICAgICAgICYmICFOSUxQIChjdXJyZW50X2J1ZmZlci0+cHJldl90ZXh0X3Byb3ApKSB7 Cj4gICAgIGNhbGw2IChjdXJyZW50X2J1ZmZlci0+cHJldl90ZXh0X3Byb3AsCj4gICAgICAgICAg ICBtYWtlX251bWJlciAobGFzdF9wb2ludF9wb3NpdGlvbiksCj4gICAgICAgICAgICBtYWtlX251 bWJlciAoY3VycmVudF9idWZmZXItPnB0KSwKPiAgICAgICAgICAgIGN1cnJlbnRfYnVmZmVyLT5w cmV2X3RleHRfcHJvcCwKPiAgICAgICAgICAgIHByZXZfYnVmZmVyLAo+ICAgICAgICAgICAgcHJl dl93aW5kb3csCj4gICAgICAgICAgICBRdCApOwo+ICAgfQo+IAo+ICAgaWYgKGN1cnJlbnRfd2lu ZG93LT5wcmV2X3RleHRfcHJvcCAhPSAwCj4gICAgICAgJiYgIU5JTFAgKGN1cnJlbnRfd2luZG93 LT5wcmV2X3RleHRfcHJvcCkpIHsKPiAgICAgY2FsbDYgKGN1cnJlbnRfd2luZG93LT5wcmV2X3Rl eHRfcHJvcCwKPiAgICAgICAgICAgIG1ha2VfbnVtYmVyIChsYXN0X3BvaW50X3Bvc2l0aW9uKSwK PiAgICAgICAgICAgIG1ha2VfbnVtYmVyIChjdXJyZW50X2J1ZmZlci0+cHQpLAo+ICAgICAgICAg ICAgY3VycmVudF93aW5kb3ctPnByZXZfdGV4dF9wcm9wLAo+ICAgICAgICAgICAgcHJldl9idWZm ZXIsCj4gICAgICAgICAgICBwcmV2X3dpbmRvdywKPiAgICAgICAgICAgIFF0ICk7Cj4gICB9Cj4g Cj4gICAvKiBUaGVzZSBibG9ja3MgaGFuZGxlIGNoYW5naW5nIGJ1ZmZlciBhbmQgd2luZG93ICov Cj4gICBpZiAocHJldl9jX2J1ZmZlciAhPSBjdXJyZW50X2J1ZmZlciAmJgo+ICAgICAgIHByZXZf Y19idWZmZXItPnByZXZfdGV4dF9wcm9wICE9IDAKPiAgICAgICAmJiAhTklMUCAocHJldl9jX2J1 ZmZlci0+cHJldl90ZXh0X3Byb3ApKSB7Cj4gICAgIGNhbGw2IChwcmV2X2NfYnVmZmVyLT5wcmV2 X3RleHRfcHJvcCwKPiAgICAgICAgICAgIG1ha2VfbnVtYmVyIChsYXN0X3BvaW50X3Bvc2l0aW9u KSwKPiAgICAgICAgICAgIG1ha2VfbnVtYmVyIChjdXJyZW50X2J1ZmZlci0+cHQpLAo+ICAgICAg ICAgICAgcHJldl9jX2J1ZmZlci0+cHJldl90ZXh0X3Byb3AsCj4gICAgICAgICAgICBwcmV2X2J1 ZmZlciwKPiAgICAgICAgICAgIHByZXZfd2luZG93LAo+ICAgICAgICAgICAgUXQgKTsKPiAgIH0K PiAKPiAgIGlmIChwcmV2X2Nfd2luZG93ICE9IDAgJiYKPiAgICAgICBwcmV2X2Nfd2luZG93ICE9 IFhXSU5ET1cgKEZzZWxlY3RlZF93aW5kb3coKSkgJiYKPiAgICAgICBwcmV2X2Nfd2luZG93LT5w cmV2X3RleHRfcHJvcCAhPSAwCj4gICAgICAgJiYgIU5JTFAgKHByZXZfY193aW5kb3ctPnByZXZf dGV4dF9wcm9wKSkgewo+ICAgICBjYWxsNiAocHJldl9jX3dpbmRvdy0+cHJldl90ZXh0X3Byb3As Cj4gICAgICAgICAgICBtYWtlX251bWJlciAobGFzdF9wb2ludF9wb3NpdGlvbiksCj4gICAgICAg ICAgICBtYWtlX251bWJlciAoY3VycmVudF9idWZmZXItPnB0KSwKPiAgICAgICAgICAgIHByZXZf Y193aW5kb3ctPnByZXZfdGV4dF9wcm9wLAo+ICAgICAgICAgICAgcHJldl9idWZmZXIsCj4gICAg ICAgICAgICBwcmV2X3dpbmRvdywKPiAgICAgICAgICAgIFFuaWwgKTsKPiAgIH0KPiAKPiAKPiAg IC8qIEZyZWVzIHByZXZpb3VzIG92ZXJsYXlzIGFuZCBzZXRzIHRoZW0gdG8gdGhlIGN1cnJlbnQg bGlzdCAqLwo+ICAgaWYgKGN1cnJlbnRfd2luZG93LT5vdmVybGF5X3ByZXZfdmVjKQo+ICAgICBm cmVlIChjdXJyZW50X3dpbmRvdy0+b3ZlcmxheV9wcmV2X3ZlYyk7Cj4gICBpZiAoY3VycmVudF9i dWZmZXItPm92ZXJsYXlfcHJldl92ZWMpCj4gICAgIGZyZWUgKGN1cnJlbnRfYnVmZmVyLT5vdmVy bGF5X3ByZXZfdmVjKTsKPiAKPiAgIGN1cnJlbnRfYnVmZmVyLT5vdmVybGF5X3ByZXZfdmVjID0g b3ZlcmxheV9jdXJfdmVjOwo+ICAgY3VycmVudF9idWZmZXItPm5vdmVybGF5c19wcmV2ID0gbm92 ZXJsYXlzX2N1cjsKPiAKPiAgIGN1cnJlbnRfd2luZG93LT5vdmVybGF5X3ByZXZfdmVjID0KPiAg ICAgeG1hbGxvYyggc2l6ZW9mIChvdmVybGF5X2N1cl92ZWMpICk7Cj4gICBtZW1jcHkgKGN1cnJl bnRfd2luZG93LT5vdmVybGF5X3ByZXZfdmVjLAo+ICAgICAgICAgICBvdmVybGF5X2N1cl92ZWMs Cj4gICAgICAgICAgIHNpemVvZiAob3ZlcmxheV9jdXJfdmVjKSk7Cj4gICBjdXJyZW50X3dpbmRv dy0+bm92ZXJsYXlzX3ByZXYgPSBub3ZlcmxheXNfY3VyOwo+IAo+ICAgY3VycmVudF9idWZmZXIt PnByZXZfdGV4dF9wcm9wID0gcG9pbnRfbW90aW9uOwo+ICAgY3VycmVudF93aW5kb3ctPnByZXZf dGV4dF9wcm9wID0gcG9pbnRfbW90aW9uOwo+ICAgcHJldl93aW5kb3cgPSBGc2VsZWN0ZWRfd2lu ZG93KCk7Cj4gICBwcmV2X2Nfd2luZG93ID0gWFdJTkRPVyggRnNlbGVjdGVkX3dpbmRvdygpICk7 Cj4gCj4gICBwcmV2X2J1ZmZlciA9IEZjdXJyZW50X2J1ZmZlcigpOwo+IH0KPiAKNDczNGM0OTQz CjwgICBkbyAKLS0tCj4gICBkbwpJbmRleDogdGV4dHByb3AuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl OiAvc291cmNlcy9lbWFjcy9lbWFjcy9zcmMvdGV4dHByb3AuYyx2CnJldHJpZXZpbmcgcmV2aXNp b24gMS4xNjcKZGlmZiAtcjEuMTY3IHRleHRwcm9wLmMKNTZhNTcKPiBMaXNwX09iamVjdCBRcG9p bnRfbW90aW9uOwoyMzUxYTIzNTMsMjM1NAo+ICAgc3RhdGljcHJvICgmUXBvaW50X21vdGlvbik7 Cj4gICBRcG9pbnRfbW90aW9uID0gaW50ZXJuX2Nfc3RyaW5nKCJwb2ludC1tb3Rpb24iKTsKSW5k ZXg6IHdpbmRvdy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9zb3VyY2VzL2VtYWNzL2VtYWNzL3Ny Yy93aW5kb3cuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42NDQKZGlmZiAtcjEuNjQ0IHdpbmRv dy5jCjI3MGMyNzAsMjcyCjwgCi0tLQo+ICAgcC0+cHJldl90ZXh0X3Byb3AgPSAwOwo+ICAgcC0+ b3ZlcmxheV9wcmV2X3ZlYyA9IDA7Cj4gICBwLT5ub3ZlcmxheXNfcHJldiA9IDA7CkluZGV4OiB3 aW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvc291cmNlcy9lbWFjcy9lbWFjcy9zcmMvd2lu ZG93LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuODEKZGlmZiAtcjEuODEgd2luZG93LmgKMjk0 YTI5NSwzMDQKPiAKPiAgICAgLyogVmVjdG9yIG9mIG92ZXJsYXlzIHRoYXQgd2VyZSBvbiB0aGlz IHdpbmRvdyB0aGUgbGFzdCB0aW1lCj4gICAgICAgIHJ1bl9wb2ludF9tb3Rpb25faG9va3Mgd2Fz IHJ1biBhbmQgdGhpcyB3aW5kb3cgd2FzIGN1cnJlbnQgKi8KPiAgICAgTGlzcF9PYmplY3QqIG92 ZXJsYXlfcHJldl92ZWM7Cj4gCj4gICAgIC8qIE51bWJlciBvZiBvdmVybGF5cyBpbiBvdmVybGF5 X3ByZXZfdmVjICovCj4gICAgIHVuc2lnbmVkIGludCBub3ZlcmxheXNfcHJldjsKPiAKPiAgICAg LyogVGV4dCBwcm9wZXJ0eSBjb250YWluaW5nIHBvaW50LW1vdGlvbiAqLwo+ICAgICBMaXNwX09i amVjdCogcHJldl90ZXh0X3Byb3A7Cg== --000e0cd0eaa42f01f4047a5787fa--