From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Barry OReilly Newsgroups: gmane.emacs.bugs Subject: bug#16818: Acknowledgement (Undo in region after markers in undo history relocated) Date: Mon, 24 Mar 2014 18:10:30 -0400 Message-ID: References: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=089e0116019c131fcc04f5618169 X-Trace: ger.gmane.org 1395699070 20827 80.91.229.3 (24 Mar 2014 22:11:10 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 24 Mar 2014 22:11:10 +0000 (UTC) Cc: 16818@debbugs.gnu.org To: Stefan , toby-undo-tree@dr-qubit.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Mar 24 23:11:18 2014 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1WSD5Q-0006lf-BO for geb-bug-gnu-emacs@m.gmane.org; Mon, 24 Mar 2014 23:11:16 +0100 Original-Received: from localhost ([::1]:38568 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WSD5P-00028X-Nk for geb-bug-gnu-emacs@m.gmane.org; Mon, 24 Mar 2014 18:11:15 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:58819) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WSD5H-00028M-49 for bug-gnu-emacs@gnu.org; Mon, 24 Mar 2014 18:11:11 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WSD5C-00087Q-M3 for bug-gnu-emacs@gnu.org; Mon, 24 Mar 2014 18:11:07 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:46950) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WSD5C-00087M-Ga for bug-gnu-emacs@gnu.org; Mon, 24 Mar 2014 18:11:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1WSD5B-0003vr-Un for bug-gnu-emacs@gnu.org; Mon, 24 Mar 2014 18:11:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Barry OReilly Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 24 Mar 2014 22:11:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 16818 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 16818-submit@debbugs.gnu.org id=B16818.139569904215084 (code B ref 16818); Mon, 24 Mar 2014 22:11:01 +0000 Original-Received: (at 16818) by debbugs.gnu.org; 24 Mar 2014 22:10:42 +0000 Original-Received: from localhost ([127.0.0.1]:48132 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WSD4o-0003v6-7u for submit@debbugs.gnu.org; Mon, 24 Mar 2014 18:10:40 -0400 Original-Received: from mail-oa0-f48.google.com ([209.85.219.48]:54049) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WSD4j-0003ut-Gy for 16818@debbugs.gnu.org; Mon, 24 Mar 2014 18:10:36 -0400 Original-Received: by mail-oa0-f48.google.com with SMTP id m1so6663399oag.35 for <16818@debbugs.gnu.org>; Mon, 24 Mar 2014 15:10:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=WEr8889b8/2Js03ZYAJz3KeRD0hhgmdCSiyCiRh3OTA=; b=S0vzrs1UWSYiHQj/6lB2jpENxK7+Nq5e5TmudiYnQIlk255D9F44JjB0ndh1qhyToI HbsCa5vetuEZrkgNea42Fy0VUOiD/RfTjDnF2fB4/jdgexOYB8mfzoGAnnUS5y5jU33U 0cFAXwz2AVa9pjLfmq5eIFrg4G07wBPuCNm9ypGIDxElRKIbC91sgHo7nf4fJ8WZ/35U tds/JD3pPhZWOsWzhoKBDxNHdeyzn4Do7aiwTDAQDTFxxX2ABZZQrKOXhqi+pSMDzog+ W+q0AK/U7zu9dsBoPmyJ85RdjneNyueqvVrgAv16AaAiLv9DWQ60oxj0bJr2tgmC8Z8K 02cw== X-Received: by 10.60.83.234 with SMTP id t10mr58739828oey.4.1395699032974; Mon, 24 Mar 2014 15:10:32 -0700 (PDT) Original-Received: by 10.76.6.44 with HTTP; Mon, 24 Mar 2014 15:10:30 -0700 (PDT) In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.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-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:87334 Archived-At: --089e0116019c131fcc04f5618169 Content-Type: multipart/alternative; boundary=089e0116019c131fc604f5618167 --089e0116019c131fc604f5618167 Content-Type: text/plain; charset=ISO-8859-1 [Adding Toby, since I mention undo-tree.] > It would also be more conservative to keep this unchanged, but I > think I agree with you here that we don't need to be *that* > conservative. This is how I addressed that: diff --git a/lisp/simple.el b/lisp/simple.el index 4a3a89c..6b5031e 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -2375,6 +2375,10 @@ we stop and ignore all further elements." ;; This is a "was unmodified" element. ;; Keep it if we have kept everything thus far. (not some-rejected)) + ;; Skip over marker adjustments, instead relying on + ;; finding them after (TEXT . POS) elements + ((markerp (car-safe undo-elt)) + nil) (t (undo-elt-in-region undo-elt start end))))) (if keep-this @@ -2461,7 +2465,7 @@ marker adjustment's corresponding (TEXT . POS) element." (<= (abs (cdr undo-elt)) end))) ((and (consp undo-elt) (markerp (car undo-elt))) ;; (MARKER . ADJUSTMENT) - nil) + (<= start (car undo-elt) end)) ((null (car undo-elt)) ;; (nil PROPERTY VALUE BEG . END) (let ((tail (nthcdr 3 undo-elt))) It maintains the same return from undo-elt-in-region for marker adjustments as before. I took a look at undo-tree. It doesn't use undo-make-selective-list, but does use undo-elt-in-region. I guess that means this particular bug won't be fixed in undo-tree for regional undos, until it also scans forward from (TEXT . POS) as this patch's undo-make-selective-list does. > Begs the question: why didn't (don't) we record marker adjustments > here (and other similar places)? I considered pursuing that question earlier, but opted for those callers to behave as before, at least for now. There's a related comment nearby one of the callers: /* Note that this does not yet handle markers quite right. Also it needs to record a single undo-entry that does a replacement rather than a separate delete and insert. That way, undo will also handle markers properly. But if MARKERS is 0, don't relocate markers. */ I've attached the updated patch with your comments incorporated. I'll install soon. --089e0116019c131fc604f5618167 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
[Adding Toby, since I mention undo-tree.]

> It w= ould also be more conservative to keep this unchanged, but I
> think = I agree with you here that we don't need to be *that*
> conservat= ive.

This is how I addressed that:

diff --git a/lisp/simple.el b/lisp= /simple.el
index 4a3a89c..6b5031e 100644
--- a/lisp/simple.el
+++ = b/lisp/simple.el
@@ -2375,6 +2375,10 @@ we stop and ignore all further e= lements."
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ;; This is a &quo= t;was unmodified" element.
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0 ;; Keep it if we have kept everything thus far.
=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 (not some-rejected))=
+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ;; Skip over ma= rker adjustments, instead relying on
+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ;; finding them aft= er (TEXT . POS) elements
+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0 ((markerp (car-safe undo-elt))
+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0 nil)
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0 (t
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0 (undo-elt-in-region undo-elt start end)))))
=A0=A0=A0=A0=A0=A0=A0 (if keep-this
@@ -2461,7 +2465,7 @@ marker adjustm= ent's corresponding (TEXT . POS) element."
=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0 (<=3D (abs (cdr undo-elt)) end)))
=A0=A0=A0=A0= =A0=A0=A0 ((and (consp undo-elt) (markerp (car undo-elt)))
=A0=A0=A0=A0=A0=A0=A0=A0 ;; (MARKER . ADJUSTMENT)
-=A0=A0=A0=A0=A0=A0=A0= =A0 nil)
+=A0=A0=A0=A0=A0=A0=A0=A0 (<=3D start (car undo-elt) end))=A0=A0=A0=A0=A0=A0=A0 ((null (car undo-elt))
=A0=A0=A0=A0=A0=A0=A0=A0 = ;; (nil PROPERTY VALUE BEG . END)
=A0=A0=A0=A0=A0=A0=A0=A0 (let ((tail (= nthcdr 3 undo-elt)))

It maintains the same return from undo-elt-in-region for marker
adju= stments as before.

I took a look at undo-tree. It doesn't use un= do-make-selective-list,
but does use undo-elt-in-region. I guess that me= ans this particular
bug won't be fixed in undo-tree for regional undos, until it also
sc= ans forward from (TEXT . POS) as this patch's
undo-make-selective-li= st does.

> Begs the question: why didn't (don't) we recor= d marker adjustments
> here (and other similar places)?

I considered pursuing that que= stion earlier, but opted for those
callers to behave as before, at least= for now.

There's a related comment nearby one of the callers:
/* Note that this does not yet handle markers quite right.
=A0=A0 Al= so it needs to record a single undo-entry that does a replacement
=A0=A0= rather than a separate delete and insert.
=A0=A0 That way, undo will al= so handle markers properly.

=A0=A0 But if MARKERS is 0, don't relocate markers.=A0 */

I&= #39;ve attached the updated patch with your comments incorporated. I'll=
install soon.

--089e0116019c131fc604f5618167-- --089e0116019c131fcc04f5618169 Content-Type: text/plain; charset=US-ASCII; name="undo-marker-record-20140324.diff" Content-Disposition: attachment; filename="undo-marker-record-20140324.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ht6b4c0p0 ZGlmZiAtLWdpdCBhL2RvYy9saXNwcmVmL0NoYW5nZUxvZyBiL2RvYy9saXNwcmVmL0NoYW5nZUxv ZwppbmRleCA2ZmZkODBiLi43MDRhYTQ4IDEwMDY0NAotLS0gYS9kb2MvbGlzcHJlZi9DaGFuZ2VM b2cKKysrIGIvZG9jL2xpc3ByZWYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEgQEAKKzIwMTQtMDMt MTMgIEJhcnJ5IE8nUmVpbGx5ICA8Z3VuZGFldGlhcG9AZ21haWwuY29tPgorCisJKiBtYXJrZXJz LnRleGkgKE1vdmluZyBNYXJrZXIgUG9zaXRpb25zKTogVGhlIDIwMTQtMDMtMDIgZG9jCisJY2hh bmdlIG1lbnRpb25pbmcgdW5kbydzIGluYWJpbGl0eSB0byBoYW5kbGUgcmVsb2NhdGVkIG1hcmtl cnMgbm8KKwlsb25nZXIgYXBwbGllcy4gIFNlZSBidWcjMTY4MTguCisJKiB0ZXh0LnRleGkgKFVu ZG8pOiBFeHBhbmQgZG9jdW1lbnRhdGlvbiBvZiAoVEVYVCAuIFBPUykgYW5kCisJKE1BUktFUiAu IEFESlVTVE1FTlQpIHVuZG8gZWxlbWVudHMuCisKIDIwMTQtMDMtMDkgIE1hcnRpbiBSdWRhbGlj cyAgPHJ1ZGFsaWNzQGdteC5hdD4KIAogCSogZWxpc3AudGV4aSAoVG9wKTogUmVuYW1lIHNlY3Rp b24gIldpZHRoIiB0byAiU2l6ZSBvZiBEaXNwbGF5ZWQKZGlmZiAtLWdpdCBhL2RvYy9saXNwcmVm L21hcmtlcnMudGV4aSBiL2RvYy9saXNwcmVmL21hcmtlcnMudGV4aQppbmRleCAxOTM4NmQ2Li41 MWI4N2FiIDEwMDY0NAotLS0gYS9kb2MvbGlzcHJlZi9tYXJrZXJzLnRleGkKKysrIGIvZG9jL2xp c3ByZWYvbWFya2Vycy50ZXhpCkBAIC0zNDQsMTIgKzM0NCwxMCBAQCBzcGVjaWZ5IHRoZSBpbnNl cnRpb24gdHlwZSwgY3JlYXRlIHRoZW0gd2l0aCBpbnNlcnRpb24gdHlwZQogQHNlY3Rpb24gTW92 aW5nIE1hcmtlciBQb3NpdGlvbnMKIAogICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyB0byBj aGFuZ2UgdGhlIHBvc2l0aW9uIG9mIGFuIGV4aXN0aW5nCi1tYXJrZXIuICBXaGVuIHlvdSBkbyB0 aGlzLCBiZSBzdXJlIHlvdSBrbm93IGhvdyB0aGUgbWFya2VyIGlzIHVzZWQKLW91dHNpZGUgb2Yg eW91ciBwcm9ncmFtLiAgRm9yIGV4YW1wbGUsIG1vdmluZyBhIG1hcmtlciB0byBhbiB1bnJlbGF0 ZWQKLW5ldyBwb3NpdGlvbiBjYW4gY2F1c2UgdW5kbyB0byBsYXRlciBhZGp1c3QgdGhlIG1hcmtl ciBpbmNvcnJlY3RseS4KLU9mdGVuIHdoZW4geW91IHdpc2ggdG8gcmVsb2NhdGUgYSBtYXJrZXIg dG8gYW4gdW5yZWxhdGVkIHBvc2l0aW9uLCBpdAotaXMgcHJlZmVyYWJsZSB0byBtYWtlIGEgbmV3 IG1hcmtlciBhbmQgc2V0IHRoZSBwcmlvciBvbmUgdG8gcG9pbnQKLW5vd2hlcmUuCittYXJrZXIu ICBXaGVuIHlvdSBkbyB0aGlzLCBiZSBzdXJlIHlvdSBrbm93IHdoZXRoZXIgdGhlIG1hcmtlciBp cyB1c2VkCitvdXRzaWRlIG9mIHlvdXIgcHJvZ3JhbSwgYW5kLCBpZiBzbywgd2hhdCBlZmZlY3Rz IHdpbGwgcmVzdWx0IGZyb20KK21vdmluZyBpdC0tLW90aGVyd2lzZSwgY29uZnVzaW5nIHRoaW5n cyBtYXkgaGFwcGVuIGluIG90aGVyIHBhcnRzIG9mCitFbWFjcy4KIAogQGRlZnVuIHNldC1tYXJr ZXIgbWFya2VyIHBvc2l0aW9uICZvcHRpb25hbCBidWZmZXIKIFRoaXMgZnVuY3Rpb24gbW92ZXMg QHZhcnttYXJrZXJ9IHRvIEB2YXJ7cG9zaXRpb259CmRpZmYgLS1naXQgYS9kb2MvbGlzcHJlZi90 ZXh0LnRleGkgYi9kb2MvbGlzcHJlZi90ZXh0LnRleGkKaW5kZXggZDkzZjkzNy4uMWQ1NTBhMCAx MDA2NDQKLS0tIGEvZG9jL2xpc3ByZWYvdGV4dC50ZXhpCisrKyBiL2RvYy9saXNwcmVmL3RleHQu dGV4aQpAQCAtMTI3MCw3ICsxMjcwLDggQEAgVGhpcyBraW5kIG9mIGVsZW1lbnQgaW5kaWNhdGVz IGhvdyB0byByZWluc2VydCB0ZXh0IHRoYXQgd2FzIGRlbGV0ZWQuCiBUaGUgZGVsZXRlZCB0ZXh0 IGl0c2VsZiBpcyB0aGUgc3RyaW5nIEB2YXJ7dGV4dH0uICBUaGUgcGxhY2UgdG8KIHJlaW5zZXJ0 IGl0IGlzIEBjb2RleyhhYnMgQHZhcntwb3NpdGlvbn0pfS4gIElmIEB2YXJ7cG9zaXRpb259IGlz CiBwb3NpdGl2ZSwgcG9pbnQgd2FzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRlbGV0ZWQgdGV4 dCwgb3RoZXJ3aXNlIGl0Ci13YXMgYXQgdGhlIGVuZC4KK3dhcyBhdCB0aGUgZW5kLiAgWmVybyBv ciBtb3JlIChAdmFye21hcmtlcn0gLiBAdmFye2FkanVzdG1lbnR9KQorZWxlbWVudHMgZm9sbG93 IGltbWVkaWF0ZWx5IGFmdGVyIHRoaXMgZWxlbWVudC4KIAogQGl0ZW0gKHQgLiBAdmFye3RpbWUt ZmxhZ30pCiBUaGlzIGtpbmQgb2YgZWxlbWVudCBpbmRpY2F0ZXMgdGhhdCBhbiB1bm1vZGlmaWVk IGJ1ZmZlciBiZWNhbWUKQEAgLTEyOTYsOCArMTI5NywxMCBAQCBIZXJlJ3MgaG93IHlvdSBtaWdo dCB1bmRvIHRoZSBjaGFuZ2U6CiBAaXRlbSAoQHZhcnttYXJrZXJ9IC4gQHZhcnthZGp1c3RtZW50 fSkKIFRoaXMga2luZCBvZiBlbGVtZW50IHJlY29yZHMgdGhlIGZhY3QgdGhhdCB0aGUgbWFya2Vy IEB2YXJ7bWFya2VyfSB3YXMKIHJlbG9jYXRlZCBkdWUgdG8gZGVsZXRpb24gb2Ygc3Vycm91bmRp bmcgdGV4dCwgYW5kIHRoYXQgaXQgbW92ZWQKLUB2YXJ7YWRqdXN0bWVudH0gY2hhcmFjdGVyIHBv c2l0aW9ucy4gIFVuZG9pbmcgdGhpcyBlbGVtZW50IG1vdmVzCi1AdmFye21hcmtlcn0gQG1pbnVz e30gQHZhcnthZGp1c3RtZW50fSBjaGFyYWN0ZXJzLgorQHZhcnthZGp1c3RtZW50fSBjaGFyYWN0 ZXIgcG9zaXRpb25zLiAgSWYgdGhlIG1hcmtlcidzIGxvY2F0aW9uIGlzCitjb25zaXN0ZW50IHdp dGggdGhlIChAdmFye3RleHR9IC4gQHZhcntwb3NpdGlvbn0pIGVsZW1lbnQgcHJlY2VkaW5nIGl0 CitpbiB0aGUgdW5kbyBsaXN0LCB0aGVuIHVuZG9pbmcgdGhpcyBlbGVtZW50IG1vdmVzIEB2YXJ7 bWFya2VyfQorQG1pbnVze30gQHZhcnthZGp1c3RtZW50fSBjaGFyYWN0ZXJzLgogCiBAaXRlbSAo YXBwbHkgQHZhcntmdW5uYW1lfSAuIEB2YXJ7YXJnc30pCiBUaGlzIGlzIGFuIGV4dGVuc2libGUg dW5kbyBpdGVtLCB3aGljaCBpcyB1bmRvbmUgYnkgY2FsbGluZwpkaWZmIC0tZ2l0IGEvbGlzcC9D aGFuZ2VMb2cgYi9saXNwL0NoYW5nZUxvZwppbmRleCBhMWVlNWJiLi40ZjJjMjU4IDEwMDY0NAot LS0gYS9saXNwL0NoYW5nZUxvZworKysgYi9saXNwL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA CisyMDE0LTAzLTEzICBCYXJyeSBPJ1JlaWxseSAgPGd1bmRhZXRpYXBvQGdtYWlsLmNvbT4KKwor CSogc2ltcGxlLmVsIChwcmltaXRpdmUtdW5kbyk6IE9ubHkgcHJvY2VzcyBtYXJrZXIgYWRqdXN0 bWVudHMKKwl2YWxpZGF0ZWQgYWdhaW5zdCB0aGVpciBjb3JyZXNwb25kaW5nIChURVhUIC4gUE9T KS4gIElzc3VlIHdhcm5pbmcKKwlmb3IgbG9uZSBtYXJrZXIgYWRqdXN0bWVudHMgaW4gdW5kbyBo aXN0b3J5LiAgKEJ1ZyMxNjgxOCkKKwkodW5kby1tYWtlLXNlbGVjdGl2ZS1saXN0KTogQWRkIG1h cmtlciBhZGp1c3RtZW50cyB0byBzZWxlY3RpdmUKKwl1bmRvIGxpc3QgYmFzZWQgb24gd2hldGhl ciB0aGVpciBjb3JyZXNwb25kaW5nIChURVhUIC4gUE9TKSBpcyBpbgorCXRoZSByZWdpb24uICBS ZW1vdmUgdmFyaWFibGUgYWRqdXN0ZWQtbWFya2Vycywgd2hpY2ggd2FzIHVudXNlZAorCWFuZCBv bmx5IG5vbiBuaWwgZHVyaW5nIHVuZG8tbWFrZS1zZWxlY3RpdmUtbGlzdC4KKwkodW5kby1lbHQt aW4tcmVnaW9uKTogUmV0dXJuIG5pbCB3aGVuIHBhc3NlZCBhIG1hcmtlciBhZGp1c3RtZW50CisJ YW5kIGV4cGxhaW4gaW4gZnVuY3Rpb24gZG9jLgorCiAyMDE0LTAzLTEzICBEbWl0cnkgR3V0b3Yg IDxkZ3V0b3ZAeWFuZGV4LnJ1PgogCiAJKiBwcm9nbW9kZXMvcnVieS1tb2RlLmVsIChydWJ5LWZv bnQtbG9jay1rZXl3b3Jkcyk6IEZvbnRpZnkKZGlmZiAtLWdpdCBhL2xpc3Avc2ltcGxlLmVsIGIv bGlzcC9zaW1wbGUuZWwKaW5kZXggODgxYTYzMy4uNmI1MDMxZSAxMDA2NDQKLS0tIGEvbGlzcC9z aW1wbGUuZWwKKysrIGIvbGlzcC9zaW1wbGUuZWwKQEAgLTIyODksMjQgKzIyODksNDEgQEAgUmV0 dXJuIHdoYXQgcmVtYWlucyBvZiB0aGUgbGlzdC4iCiAgICAgICAgICAgICh3aGVuIChsZXQgKChh cG9zIChhYnMgcG9zKSkpCiAgICAgICAgICAgICAgICAgICAgKG9yICg8IGFwb3MgKHBvaW50LW1p bikpICg+IGFwb3MgKHBvaW50LW1heCkpKSkKICAgICAgICAgICAgICAoZXJyb3IgIkNoYW5nZXMg dG8gYmUgdW5kb25lIGFyZSBvdXRzaWRlIHZpc2libGUgcG9ydGlvbiBvZiBidWZmZXIiKSkKLSAg ICAgICAgICAgKGlmICg8IHBvcyAwKQotICAgICAgICAgICAgICAgKHByb2duCi0gICAgICAgICAg ICAgICAgIChnb3RvLWNoYXIgKC0gcG9zKSkKLSAgICAgICAgICAgICAgICAgKGluc2VydCBzdHJp bmcpKQotICAgICAgICAgICAgIChnb3RvLWNoYXIgcG9zKQotICAgICAgICAgICAgIDs7IE5vdyB0 aGF0IHdlIHJlY29yZCBtYXJrZXIgYWRqdXN0bWVudHMKLSAgICAgICAgICAgICA7OyAoY2F1c2Vk IGJ5IGRlbGV0aW9uKSBmb3IgdW5kbywKLSAgICAgICAgICAgICA7OyB3ZSBzaG91bGQgYWx3YXlz IGluc2VydCBhZnRlciBtYXJrZXJzLAotICAgICAgICAgICAgIDs7IHNvIHRoYXQgdW5kb2luZyB0 aGUgbWFya2VyIGFkanVzdG1lbnRzCi0gICAgICAgICAgICAgOzsgcHV0IHRoZSBtYXJrZXJzIGJh Y2sgaW4gdGhlIHJpZ2h0IHBsYWNlLgotICAgICAgICAgICAgIChpbnNlcnQgc3RyaW5nKQotICAg ICAgICAgICAgIChnb3RvLWNoYXIgcG9zKSkpCisgICAgICAgICAgIChsZXQgKHZhbGlkLW1hcmtl ci1hZGp1c3RtZW50cykKKyAgICAgICAgICAgICA7OyBDaGVjayB0aGF0IG1hcmtlciBhZGp1c3Rt ZW50cyB3aGljaCB3ZXJlIHJlY29yZGVkCisgICAgICAgICAgICAgOzsgd2l0aCB0aGUgKFNUUklO RyAuIFBPUykgcmVjb3JkIGFyZSBzdGlsbCB2YWxpZCwgaWUKKyAgICAgICAgICAgICA7OyB0aGUg bWFya2VycyBoYXZlbid0IG1vdmVkLiAgV2UgY2hlY2sgdGhlaXIgdmFsaWRpdHkKKyAgICAgICAg ICAgICA7OyBiZWZvcmUgcmVpbnNlcnRpbmcgdGhlIHN0cmluZyBzbyBhcyB3ZSBkb24ndCBuZWVk IHRvCisgICAgICAgICAgICAgOzsgbWluZCBtYXJrZXIgaW5zZXJ0aW9uLXR5cGUuCisgICAgICAg ICAgICAgKHdoaWxlIChhbmQgKG1hcmtlcnAgKGNhci1zYWZlIChjYXIgbGlzdCkpKQorICAgICAg ICAgICAgICAgICAgICAgICAgIChpbnRlZ2VycCAoY2RyLXNhZmUgKGNhciBsaXN0KSkpKQorICAg ICAgICAgICAgICAgKGxldCogKChtYXJrZXItYWRqIChwb3AgbGlzdCkpCisgICAgICAgICAgICAg ICAgICAgICAgKG0gKGNhciBtYXJrZXItYWRqKSkpCisgICAgICAgICAgICAgICAgIChhbmQgKGVx IChtYXJrZXItYnVmZmVyIG0pIChjdXJyZW50LWJ1ZmZlcikpCisgICAgICAgICAgICAgICAgICAg ICAgKD0gcG9zIG0pCisgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggbWFya2VyLWFkaiB2YWxp ZC1tYXJrZXItYWRqdXN0bWVudHMpKSkpCisgICAgICAgICAgICAgOzsgSW5zZXJ0IHN0cmluZyBh bmQgYWRqdXN0IHBvaW50CisgICAgICAgICAgICAgKGlmICg8IHBvcyAwKQorICAgICAgICAgICAg ICAgICAocHJvZ24KKyAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyICgtIHBvcykpCisgICAg ICAgICAgICAgICAgICAgKGluc2VydCBzdHJpbmcpKQorICAgICAgICAgICAgICAgKGdvdG8tY2hh ciBwb3MpCisgICAgICAgICAgICAgICAoaW5zZXJ0IHN0cmluZykKKyAgICAgICAgICAgICAgIChn b3RvLWNoYXIgcG9zKSkKKyAgICAgICAgICAgICA7OyBBZGp1c3QgdGhlIHZhbGlkIG1hcmtlciBh ZGp1c3RtZW50cworICAgICAgICAgICAgIChkb2xpc3QgKGFkaiB2YWxpZC1tYXJrZXItYWRqdXN0 bWVudHMpCisgICAgICAgICAgICAgICAoc2V0LW1hcmtlciAoY2FyIGFkaikKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICgtIChjYXIgYWRqKSAoY2RyIGFkaikpKSkpKQogICAgICAgICAgIDs7 IChNQVJLRVIgLiBPRkZTRVQpIG1lYW5zIGEgbWFya2VyIE1BUktFUiB3YXMgYWRqdXN0ZWQgYnkg T0ZGU0VULgogICAgICAgICAgIChgKCwoYW5kIG1hcmtlciAocHJlZCBtYXJrZXJwKSkgLiAsKGFu ZCBvZmZzZXQgKHByZWQgaW50ZWdlcnApKSkKLSAgICAgICAgICAgKHdoZW4gKG1hcmtlci1idWZm ZXIgbWFya2VyKQotICAgICAgICAgICAgIChzZXQtbWFya2VyIG1hcmtlcgotICAgICAgICAgICAg ICAgICAgICAgICAgICgtIG1hcmtlciBvZmZzZXQpCi0gICAgICAgICAgICAgICAgICAgICAgICAg KG1hcmtlci1idWZmZXIgbWFya2VyKSkpKQorICAgICAgICAgICAod2FybiAiRW5jb3VudGVyZWQg JVMgZW50cnkgaW4gdW5kbyBsaXN0IHdpdGggbm8gbWF0Y2hpbmcgKFRFWFQgLiBQT1MpIGVudHJ5 IgorICAgICAgICAgICAgICAgICBuZXh0KQorICAgICAgICAgICA7OyBFdmVuIHRob3VnaCB0aGVz ZSBlbGVtZW50cyBhcmUgbm90IGV4cGVjdGVkIGluIHRoZSB1bmRvCisgICAgICAgICAgIDs7IGxp c3QsIGFkanVzdCB0aGVtIHRvIGJlIGNvbnNlcnZhdGl2ZSBmb3IgdGhlIDI0LjQKKyAgICAgICAg ICAgOzsgcmVsZWFzZS4gIChCdWcjMTY4MTgpCisgICAgICAgICAgIChzZXQtbWFya2VyIG1hcmtl cgorICAgICAgICAgICAgICAgICAgICAgICAoLSBtYXJrZXIgb2Zmc2V0KQorICAgICAgICAgICAg ICAgICAgICAgICAobWFya2VyLWJ1ZmZlciBtYXJrZXIpKSkKICAgICAgICAgICAoXyAoZXJyb3Ig IlVucmVjb2duaXplZCBlbnRyeSBpbiB1bmRvIGxpc3QgJVMiIG5leHQpKSkpCiAgICAgICAoc2V0 cSBhcmcgKDEtIGFyZykpKQogICAgIDs7IE1ha2Ugc3VyZSBhbiBhcHBseSBlbnRyeSBwcm9kdWNl cyBhdCBsZWFzdCBvbmUgdW5kbyBlbnRyeSwKQEAgLTIzNDEsOCArMjM1OCw2IEBAIGFyZSBpZ25v cmVkLiAgSWYgQkVHIGFuZCBFTkQgYXJlIG5pbCwgYWxsIHVuZG8gZWxlbWVudHMgYXJlIHVzZWQu IgogCSAgICAodW5kby1tYWtlLXNlbGVjdGl2ZS1saXN0IChtaW4gYmVnIGVuZCkgKG1heCBiZWcg ZW5kKSkKIAkgIGJ1ZmZlci11bmRvLWxpc3QpKSkKIAotKGRlZnZhciB1bmRvLWFkanVzdGVkLW1h cmtlcnMpCi0KIChkZWZ1biB1bmRvLW1ha2Utc2VsZWN0aXZlLWxpc3QgKHN0YXJ0IGVuZCkKICAg IlJldHVybiBhIGxpc3Qgb2YgdW5kbyBlbGVtZW50cyBmb3IgdGhlIHJlZ2lvbiBTVEFSVCB0byBF TkQuCiBUaGUgZWxlbWVudHMgY29tZSBmcm9tIGBidWZmZXItdW5kby1saXN0JywgYnV0IHdlIGtl ZXAgb25seQpAQCAtMjM1MSw3ICsyMzY2LDYgQEAgSWYgd2UgZmluZCBhbiBlbGVtZW50IHRoYXQg Y3Jvc3NlcyBhbiBlZGdlIG9mIHRoaXMgcmVnaW9uLAogd2Ugc3RvcCBhbmQgaWdub3JlIGFsbCBm dXJ0aGVyIGVsZW1lbnRzLiIKICAgKGxldCAoKHVuZG8tbGlzdC1jb3B5ICh1bmRvLWNvcHktbGlz dCBidWZmZXItdW5kby1saXN0KSkKIAkodW5kby1saXN0IChsaXN0IG5pbCkpCi0JdW5kby1hZGp1 c3RlZC1tYXJrZXJzCiAJc29tZS1yZWplY3RlZAogCXVuZG8tZWx0IHRlbXAtdW5kby1saXN0IGRl bHRhKQogICAgICh3aGlsZSB1bmRvLWxpc3QtY29weQpAQCAtMjM2MSwxNSArMjM3NSwzMCBAQCB3 ZSBzdG9wIGFuZCBpZ25vcmUgYWxsIGZ1cnRoZXIgZWxlbWVudHMuIgogCQkgICAgOzsgVGhpcyBp cyBhICJ3YXMgdW5tb2RpZmllZCIgZWxlbWVudC4KIAkJICAgIDs7IEtlZXAgaXQgaWYgd2UgaGF2 ZSBrZXB0IGV2ZXJ5dGhpbmcgdGh1cyBmYXIuCiAJCSAgICAobm90IHNvbWUtcmVqZWN0ZWQpKQor ICAgICAgICAgICAgICAgICAgIDs7IFNraXAgb3ZlciBtYXJrZXIgYWRqdXN0bWVudHMsIGluc3Rl YWQgcmVseWluZyBvbgorICAgICAgICAgICAgICAgICAgIDs7IGZpbmRpbmcgdGhlbSBhZnRlciAo VEVYVCAuIFBPUykgZWxlbWVudHMKKyAgICAgICAgICAgICAgICAgICAoKG1hcmtlcnAgKGNhci1z YWZlIHVuZG8tZWx0KSkKKyAgICAgICAgICAgICAgICAgICAgbmlsKQogCQkgICAodAogCQkgICAg KHVuZG8tZWx0LWluLXJlZ2lvbiB1bmRvLWVsdCBzdGFydCBlbmQpKSkpKQogCShpZiBrZWVwLXRo aXMKIAkgICAgKHByb2duCiAJICAgICAgKHNldHEgZW5kICgrIGVuZCAoY2RyICh1bmRvLWRlbHRh IHVuZG8tZWx0KSkpKQogCSAgICAgIDs7IERvbid0IHB1dCB0d28gbmlscyB0b2dldGhlciBpbiB0 aGUgbGlzdAotCSAgICAgIChpZiAobm90IChhbmQgKGVxIChjYXIgdW5kby1saXN0KSBuaWwpCi0J CQkgICAgKGVxIHVuZG8tZWx0IG5pbCkpKQotCQkgIChzZXRxIHVuZG8tbGlzdCAoY29ucyB1bmRv LWVsdCB1bmRvLWxpc3QpKSkpCisJICAgICAgKHdoZW4gKG5vdCAoYW5kIChlcSAoY2FyIHVuZG8t bGlzdCkgbmlsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxIHVuZG8tZWx0IG5p bCkpKQorICAgICAgICAgICAgICAgIChzZXRxIHVuZG8tbGlzdCAoY29ucyB1bmRvLWVsdCB1bmRv LWxpc3QpKQorICAgICAgICAgICAgICAgIDs7IElmIChURVhUIC4gUE9TKSwgImtlZXAiIGl0cyBz dWJzZXF1ZW50IChNQVJLRVIKKyAgICAgICAgICAgICAgICA7OyAuIEFESlVTVE1FTlQpIHdob3Nl IG1hcmtlcnMgaGF2ZW4ndCBtb3ZlZC4KKyAgICAgICAgICAgICAgICAod2hlbiAoYW5kIChzdHJp bmdwIChjYXItc2FmZSB1bmRvLWVsdCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50 ZWdlcnAgKGNkci1zYWZlIHVuZG8tZWx0KSkpCisgICAgICAgICAgICAgICAgICAobGV0ICgobGlz dC1pIChjZHIgdW5kby1saXN0LWNvcHkpKSkKKyAgICAgICAgICAgICAgICAgICAgKHdoaWxlICht YXJrZXJwIChjYXItc2FmZSAoY2FyIGxpc3QtaSkpKQorICAgICAgICAgICAgICAgICAgICAgIChs ZXQqICgoYWRqLWVsdCAocG9wIGxpc3QtaSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChtIChjYXIgYWRqLWVsdCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCAoZXEgKG1h cmtlci1idWZmZXIgbSkgKGN1cnJlbnQtYnVmZmVyKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKD0gKGNkciB1bmRvLWVsdCkgbSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHB1c2ggYWRqLWVsdCB1bmRvLWxpc3QpKSkpKSkpKQogCSAgKGlmICh1bmRvLWVsdC1jcm9zc2Vz LXJlZ2lvbiB1bmRvLWVsdCBzdGFydCBlbmQpCiAJICAgICAgKHNldHEgdW5kby1saXN0LWNvcHkg bmlsKQogCSAgICAoc2V0cSBzb21lLXJlamVjdGVkIHQpCkBAIC0yNDE3LDcgKzI0NDYsMTIgQEAg d2Ugc3RvcCBhbmQgaWdub3JlIGFsbCBmdXJ0aGVyIGVsZW1lbnRzLiIKIAogKGRlZnVuIHVuZG8t ZWx0LWluLXJlZ2lvbiAodW5kby1lbHQgc3RhcnQgZW5kKQogICAiRGV0ZXJtaW5lIHdoZXRoZXIg VU5ETy1FTFQgZmFsbHMgaW5zaWRlIHRoZSByZWdpb24gU1RBUlQgLi4uIEVORC4KLUlmIGl0IGNy b3NzZXMgdGhlIGVkZ2UsIHdlIHJldHVybiBuaWwuIgorSWYgaXQgY3Jvc3NlcyB0aGUgZWRnZSwg d2UgcmV0dXJuIG5pbC4KKworR2VuZXJhbGx5IHRoaXMgZnVuY3Rpb24gaXMgbm90IHVzZWZ1bCBm b3IgZGV0ZXJtaW5pbmcKK3doZXRoZXIgKE1BUktFUiAuIEFESlVTVE1FTlQpIHVuZG8gZWxlbWVu dHMgYXJlIGluIHRoZSByZWdpb24sCitiZWNhdXNlIG1hcmtlcnMgY2FuIGJlIGFyYml0cmFyaWx5 IHJlbG9jYXRlZC4gIEluc3RlYWQsIHBhc3MgdGhlCittYXJrZXIgYWRqdXN0bWVudCdzIGNvcnJl c3BvbmRpbmcgKFRFWFQgLiBQT1MpIGVsZW1lbnQuIgogICAoY29uZCAoKGludGVnZXJwIHVuZG8t ZWx0KQogCSAoYW5kICg+PSB1bmRvLWVsdCBzdGFydCkKIAkgICAgICAoPD0gdW5kby1lbHQgZW5k KSkpCkBAIC0yNDMwLDE3ICsyNDY0LDggQEAgSWYgaXQgY3Jvc3NlcyB0aGUgZWRnZSwgd2UgcmV0 dXJuIG5pbC4iCiAJIChhbmQgKD49IChhYnMgKGNkciB1bmRvLWVsdCkpIHN0YXJ0KQogCSAgICAg ICg8PSAoYWJzIChjZHIgdW5kby1lbHQpKSBlbmQpKSkKIAkoKGFuZCAoY29uc3AgdW5kby1lbHQp IChtYXJrZXJwIChjYXIgdW5kby1lbHQpKSkKLQkgOzsgVGhpcyBpcyBhIG1hcmtlci1hZGp1c3Rt ZW50IGVsZW1lbnQgKE1BUktFUiAuIEFESlVTVE1FTlQpLgotCSA7OyBTZWUgaWYgTUFSS0VSIGlz IGluc2lkZSB0aGUgcmVnaW9uLgotCSAobGV0ICgoYWxpc3QtZWx0IChhc3NxIChjYXIgdW5kby1l bHQpIHVuZG8tYWRqdXN0ZWQtbWFya2VycykpKQotCSAgICh1bmxlc3MgYWxpc3QtZWx0Ci0JICAg ICAoc2V0cSBhbGlzdC1lbHQgKGNvbnMgKGNhciB1bmRvLWVsdCkKLQkJCQkgICAobWFya2VyLXBv c2l0aW9uIChjYXIgdW5kby1lbHQpKSkpCi0JICAgICAoc2V0cSB1bmRvLWFkanVzdGVkLW1hcmtl cnMKLQkJICAgKGNvbnMgYWxpc3QtZWx0IHVuZG8tYWRqdXN0ZWQtbWFya2VycykpKQotCSAgIChh bmQgKGNkciBhbGlzdC1lbHQpCi0JCSg+PSAoY2RyIGFsaXN0LWVsdCkgc3RhcnQpCi0JCSg8PSAo Y2RyIGFsaXN0LWVsdCkgZW5kKSkpKQorCSA7OyAoTUFSS0VSIC4gQURKVVNUTUVOVCkKKyAgICAg ICAgICg8PSBzdGFydCAoY2FyIHVuZG8tZWx0KSBlbmQpKQogCSgobnVsbCAoY2FyIHVuZG8tZWx0 KSkKIAkgOzsgKG5pbCBQUk9QRVJUWSBWQUxVRSBCRUcgLiBFTkQpCiAJIChsZXQgKCh0YWlsIChu dGhjZHIgMyB1bmRvLWVsdCkpKQpkaWZmIC0tZ2l0IGEvc3JjL0NoYW5nZUxvZyBiL3NyYy9DaGFu Z2VMb2cKaW5kZXggYzExNThmYy4uNDFmYTg5OCAxMDA2NDQKLS0tIGEvc3JjL0NoYW5nZUxvZwor KysgYi9zcmMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTQtMDMtMTMgIEJhcnJ5IE8n UmVpbGx5ICA8Z3VuZGFldGlhcG9AZ21haWwuY29tPgorCisJSGF2ZSAoTUFSS0VSIC4gQURKVVNU TUVOVCkgdW5kbyByZWNvcmRzIGFsd2F5cyBiZSBpbW1lZGlhdGVseQorCWFmdGVyIHRoZWlyIGNv cnJlc3BvbmRpbmcgKFRFWFQgLiBQT1MpIHJlY29yZCBpbiB1bmRvIGxpc3QuCisJKEJ1ZyMxNjgx OCkKKwkqIGxpc3AuaCAocmVjb3JkLWRlbGV0ZSk6IE5ldyBhcmcgcmVjb3JkX21hcmtlcnMuCisJ KHJlY29yZF9tYXJrZXJfYWRqdXN0bWVudCk6IE5vIGxvbmdlciBuZWVkZWQgb3V0c2lkZSB1bmRv LmMuCisJKiBpbnNkZWwuYyAoYWRqdXN0X21hcmtlcnNfZm9yX2RlbGV0ZSk6IE1vdmUgY2FsY3Vs YXRpb24gb2YgbWFya2VyCisJYWRqdXN0bWVudHMgdG8gdW5kby5jJ3MgcmVjb3JkX21hcmtlcl9h ZGp1c3RtZW50cy4gIE5vdGUgdGhhdAorCWZpbGVpby5jJ3MgZGVjaWRlX2NvZGluZ191bndpbmQg aXMgYW5vdGhlciBjYWxsZXIgdG8KKwlhZGp1c3RfbWFya2Vyc19mb3JfZGVsZXRlLiAgQmVjYXVz ZSBpdCBoYXMgdW5kbyBsaXN0IGJvdW5kIHRvIHQsCisJaXQgZG9lcyBub3QgcmVseSBvbiBhZGp1 c3RfbWFya2Vyc19mb3JfZGVsZXRlIHRvIHJlY29yZCBtYXJrZXIKKwlhZGp1c3RtZW50cy4KKwko ZGVsX3JhbmdlXzIpOiBTd2FwIGNhbGwgdG8gcmVjb3JkX2RlbGV0ZSBhbmQKKwlhZGp1c3RfbWFy a2Vyc19mb3JfZGVsZXRlIHNvIGFzIHVuZG8gbWFya2VyIGFkanVzdG1lbnRzIGFyZQorCXJlY29y ZGVkIGJlZm9yZSBjdXJyZW50IGRlbGV0aW9uJ3MgYWRqdXN0bWVudHMsIGFzIGJlZm9yZS4KKwko YWRqdXN0X2FmdGVyX3JlcGxhY2UpOgorCShyZXBsYWNlX3JhbmdlKTogUGFzcyB2YWx1ZSBmb3Ig bmV3IHJlY29yZF9tYXJrZXJzIGFyZyB0bworCWRlbGV0ZV9yZWNvcmQuCisJKiB1bmRvLmMgKHJl Y29yZF9tYXJrZXJfYWRqdXN0bWVudCk6IFJlbmFtZWQgdG8KKwlyZWNvcmRfbWFya2VyX2FkanVz dG1lbnRzIGFuZCBtYWRlIHN0YXRpYy4KKwkocmVjb3JkX2RlbGV0ZSk6IENoZWNrIHJlY29yZF9t YXJrZXJzIGFyZyBhbmQgY2FsbAorCXJlY29yZF9tYXJrZXJfYWRqdXN0bWVudHMuCisJKHJlY29y ZF9jaGFuZ2UpOiBQYXNzIHZhbHVlIGZvciBuZXcgcmVjb3JkX21hcmtlcnMgYXJnIHRvCisJZGVs ZXRlX3JlY29yZC4KKwkocmVjb3JkX3BvaW50KTogYXRfYm91bmRhcnkgY2FsY3VsYXRpb24gbm8g bG9uZ2VyIG5lZWRzIHRvIGFjY291bnQKKwlmb3IgbWFya2VyIGFkanVzdG1lbnRzLgorCiAyMDE0 LTAzLTEyICBNYXJ0aW4gUnVkYWxpY3MgIDxydWRhbGljc0BnbXguYXQ+CiAKIAkqIGZyYW1lLmMg KHhfc2V0X2ZyYW1lX3BhcmFtZXRlcnMpOiBBbHdheXMgY2FsY3VsYXRlIG5ldyBzaXplcwpkaWZm IC0tZ2l0IGEvc3JjL2luc2RlbC5jIGIvc3JjL2luc2RlbC5jCmluZGV4IDFjOWJhZmQuLmViMWFk NjIgMTAwNjQ0Ci0tLSBhL3NyYy9pbnNkZWwuYworKysgYi9zcmMvaW5zZGVsLmMKQEAgLTIzMywz NCArMjMzLDkgQEAgYWRqdXN0X21hcmtlcnNfZm9yX2RlbGV0ZSAocHRyZGlmZl90IGZyb20sIHB0 cmRpZmZfdCBmcm9tX2J5dGUsCiAgICAgICAvKiBIZXJlJ3MgdGhlIGNhc2Ugd2hlcmUgYSBtYXJr ZXIgaXMgaW5zaWRlIHRleHQgYmVpbmcgZGVsZXRlZC4gICovCiAgICAgICBlbHNlIGlmIChjaGFy cG9zID4gZnJvbSkKIAl7Ci0JICBpZiAoISBtLT5pbnNlcnRpb25fdHlwZSkKLQkgICAgeyAvKiBO b3JtYWwgbWFya2VycyB3aWxsIGVuZCB1cCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQotCSAgICAg ICByZS1pbnNlcnRlZCB0ZXh0IGFmdGVyIHVuZG9pbmcgYSBkZWxldGlvbiwgYW5kIG11c3QgYmUK LQkgICAgICAgYWRqdXN0ZWQgdG8gbW92ZSB0aGVtIHRvIHRoZSBjb3JyZWN0IHBsYWNlLiAgKi8K LQkgICAgICBYU0VUTUlTQyAobWFya2VyLCBtKTsKLQkgICAgICByZWNvcmRfbWFya2VyX2FkanVz dG1lbnQgKG1hcmtlciwgZnJvbSAtIGNoYXJwb3MpOwotCSAgICB9Ci0JICBlbHNlIGlmIChjaGFy cG9zIDwgdG8pCi0JICAgIHsgLyogQmVmb3JlLWluc2VydGlvbiBtYXJrZXJzIHdpbGwgYXV0b21h dGljYWxseSBtb3ZlIGZvcndhcmQKLQkgICAgICAgdXBvbiByZS1pbnNlcnRpbmcgdGhlIGRlbGV0 ZWQgdGV4dCwgc28gd2UgaGF2ZSB0byBhcnJhbmdlCi0JICAgICAgIGZvciB0aGVtIHRvIG1vdmUg YmFja3dhcmQgdG8gdGhlIGNvcnJlY3QgcG9zaXRpb24uICAqLwotCSAgICAgIFhTRVRNSVNDICht YXJrZXIsIG0pOwotCSAgICAgIHJlY29yZF9tYXJrZXJfYWRqdXN0bWVudCAobWFya2VyLCB0byAt IGNoYXJwb3MpOwotCSAgICB9CiAJICBtLT5jaGFycG9zID0gZnJvbTsKIAkgIG0tPmJ5dGVwb3Mg PSBmcm9tX2J5dGU7CiAJfQotICAgICAgLyogSGVyZSdzIHRoZSBjYXNlIHdoZXJlIGEgYmVmb3Jl LWluc2VydGlvbiBtYXJrZXIgaXMgaW1tZWRpYXRlbHkKLQkgYmVmb3JlIHRoZSBkZWxldGVkIHJl Z2lvbi4gICovCi0gICAgICBlbHNlIGlmIChjaGFycG9zID09IGZyb20gJiYgbS0+aW5zZXJ0aW9u X3R5cGUpCi0JewotCSAgLyogVW5kb2luZyB0aGUgY2hhbmdlIHVzZXMgbm9ybWFsIGluc2VydGlv biwgd2hpY2ggd2lsbAotCSAgICAgaW5jb3JyZWN0bHkgbWFrZSBNQVJLRVIgbW92ZSBmb3J3YXJk LCBzbyB3ZSBhcnJhbmdlIGZvciBpdAotCSAgICAgdG8gdGhlbiBtb3ZlIGJhY2t3YXJkIHRvIHRo ZSBjb3JyZWN0IHBsYWNlIGF0IHRoZSBiZWdpbm5pbmcKLQkgICAgIG9mIHRoZSBkZWxldGVkIHJl Z2lvbi4gICovCi0JICBYU0VUTUlTQyAobWFya2VyLCBtKTsKLQkgIHJlY29yZF9tYXJrZXJfYWRq dXN0bWVudCAobWFya2VyLCB0byAtIGZyb20pOwotCX0KICAgICB9CiB9CiAKQEAgLTEyMTksNyAr MTE5NCw3IEBAIGFkanVzdF9hZnRlcl9yZXBsYWNlIChwdHJkaWZmX3QgZnJvbSwgcHRyZGlmZl90 IGZyb21fYnl0ZSwKIAkJCSAgICAgICBmcm9tICsgbGVuLCBmcm9tX2J5dGUgKyBsZW5fYnl0ZSwg MCk7CiAKICAgaWYgKG5jaGFyc19kZWwgPiAwKQotICAgIHJlY29yZF9kZWxldGUgKGZyb20sIHBy ZXZfdGV4dCk7CisgICAgcmVjb3JkX2RlbGV0ZSAoZnJvbSwgcHJldl90ZXh0LCBmYWxzZSk7CiAg IHJlY29yZF9pbnNlcnQgKGZyb20sIGxlbik7CiAKICAgaWYgKGxlbiA+IG5jaGFyc19kZWwpCkBA IC0xMzg0LDcgKzEzNTksNyBAQCByZXBsYWNlX3JhbmdlIChwdHJkaWZmX3QgZnJvbSwgcHRyZGlm Zl90IHRvLCBMaXNwX09iamVjdCBuZXcsCiAgIGlmICghTklMUCAoZGVsZXRpb24pKQogICAgIHsK ICAgICAgIHJlY29yZF9pbnNlcnQgKGZyb20gKyBTQ0hBUlMgKGRlbGV0aW9uKSwgaW5zY2hhcnMp OwotICAgICAgcmVjb3JkX2RlbGV0ZSAoZnJvbSwgZGVsZXRpb24pOworICAgICAgcmVjb3JkX2Rl bGV0ZSAoZnJvbSwgZGVsZXRpb24sIGZhbHNlKTsKICAgICB9CiAKICAgR0FQX1NJWkUgLT0gb3V0 Z29pbmdfaW5zYnl0ZXM7CkBAIC0xNzE2LDEzICsxNjkxLDE0IEBAIGRlbF9yYW5nZV8yIChwdHJk aWZmX3QgZnJvbSwgcHRyZGlmZl90IGZyb21fYnl0ZSwKICAgZWxzZQogICAgIGRlbGV0aW9uID0g UW5pbDsKIAotICAvKiBSZWxvY2F0ZSBhbGwgbWFya2VycyBwb2ludGluZyBpbnRvIHRoZSBuZXcs IGxhcmdlciBnYXAKLSAgICAgdG8gcG9pbnQgYXQgdGhlIGVuZCBvZiB0aGUgdGV4dCBiZWZvcmUg dGhlIGdhcC4KLSAgICAgRG8gdGhpcyBiZWZvcmUgcmVjb3JkaW5nIHRoZSBkZWxldGlvbiwKLSAg ICAgc28gdGhhdCB1bmRvIGhhbmRsZXMgdGhpcyBhZnRlciByZWluc2VydGluZyB0aGUgdGV4dC4g ICovCisgIC8qIFJlY29yZCBtYXJrZXIgYWRqdXN0bWVudHMsIGFuZCB0ZXh0IGRlbGV0aW9uIGlu dG8gdW5kbworICAgICBoaXN0b3J5LiAgKi8KKyAgcmVjb3JkX2RlbGV0ZSAoZnJvbSwgZGVsZXRp b24sIHRydWUpOworCisgIC8qIFJlbG9jYXRlIGFsbCBtYXJrZXJzIHBvaW50aW5nIGludG8gdGhl IG5ldywgbGFyZ2VyIGdhcCB0byBwb2ludAorICAgICBhdCB0aGUgZW5kIG9mIHRoZSB0ZXh0IGJl Zm9yZSB0aGUgZ2FwLiAgKi8KICAgYWRqdXN0X21hcmtlcnNfZm9yX2RlbGV0ZSAoZnJvbSwgZnJv bV9ieXRlLCB0bywgdG9fYnl0ZSk7CiAKLSAgcmVjb3JkX2RlbGV0ZSAoZnJvbSwgZGVsZXRpb24p OwogICBNT0RJRkYrKzsKICAgQ0hBUlNfTU9ESUZGID0gTU9ESUZGOwogCmRpZmYgLS1naXQgYS9z cmMvbGlzcC5oIGIvc3JjL2xpc3AuaAppbmRleCAyZjlhMzBmLi4zMGY1MmI5IDEwMDY0NAotLS0g YS9zcmMvbGlzcC5oCisrKyBiL3NyYy9saXNwLmgKQEAgLTQxOTgsOSArNDE5OCw4IEBAIGV4dGVy biB2b2lkIHN5bXNfb2ZfbWFjcm9zICh2b2lkKTsKIGV4dGVybiBMaXNwX09iamVjdCBRYXBwbHk7 CiBleHRlcm4gTGlzcF9PYmplY3QgUWluaGliaXRfcmVhZF9vbmx5OwogZXh0ZXJuIHZvaWQgdHJ1 bmNhdGVfdW5kb19saXN0IChzdHJ1Y3QgYnVmZmVyICopOwotZXh0ZXJuIHZvaWQgcmVjb3JkX21h cmtlcl9hZGp1c3RtZW50IChMaXNwX09iamVjdCwgcHRyZGlmZl90KTsKIGV4dGVybiB2b2lkIHJl Y29yZF9pbnNlcnQgKHB0cmRpZmZfdCwgcHRyZGlmZl90KTsKLWV4dGVybiB2b2lkIHJlY29yZF9k ZWxldGUgKHB0cmRpZmZfdCwgTGlzcF9PYmplY3QpOworZXh0ZXJuIHZvaWQgcmVjb3JkX2RlbGV0 ZSAocHRyZGlmZl90LCBMaXNwX09iamVjdCwgYm9vbCk7CiBleHRlcm4gdm9pZCByZWNvcmRfZmly c3RfY2hhbmdlICh2b2lkKTsKIGV4dGVybiB2b2lkIHJlY29yZF9jaGFuZ2UgKHB0cmRpZmZfdCwg cHRyZGlmZl90KTsKIGV4dGVybiB2b2lkIHJlY29yZF9wcm9wZXJ0eV9jaGFuZ2UgKHB0cmRpZmZf dCwgcHRyZGlmZl90LApkaWZmIC0tZ2l0IGEvc3JjL3VuZG8uYyBiL3NyYy91bmRvLmMKaW5kZXgg NzI4NmQ0MC4uMmRkZTAyYiAxMDA2NDQKLS0tIGEvc3JjL3VuZG8uYworKysgYi9zcmMvdW5kby5j CkBAIC03NSwyNyArNzUsOCBAQCByZWNvcmRfcG9pbnQgKHB0cmRpZmZfdCBwdCkKICAgICBGdW5k b19ib3VuZGFyeSAoKTsKICAgbGFzdF91bmRvX2J1ZmZlciA9IGN1cnJlbnRfYnVmZmVyOwogCi0g IGlmIChDT05TUCAoQlZBUiAoY3VycmVudF9idWZmZXIsIHVuZG9fbGlzdCkpKQotICAgIHsKLSAg ICAgIC8qIFNldCBBVF9CT1VOREFSWSBvbmx5IHdoZW4gd2UgaGF2ZSBub3RoaW5nIG90aGVyIHRo YW4KLSAgICAgICAgIG1hcmtlciBhZGp1c3RtZW50IGJlZm9yZSB1bmRvIGJvdW5kYXJ5LiAgKi8K LQotICAgICAgTGlzcF9PYmplY3QgdGFpbCA9IEJWQVIgKGN1cnJlbnRfYnVmZmVyLCB1bmRvX2xp c3QpLCBlbHQ7Ci0KLSAgICAgIHdoaWxlICgxKQotCXsKLQkgIGlmIChOSUxQICh0YWlsKSkKLQkg ICAgZWx0ID0gUW5pbDsKLQkgIGVsc2UKLQkgICAgZWx0ID0gWENBUiAodGFpbCk7Ci0JICBpZiAo TklMUCAoZWx0KSB8fCAhIChDT05TUCAoZWx0KSAmJiBNQVJLRVJQIChYQ0FSIChlbHQpKSkpCi0J ICAgIGJyZWFrOwotCSAgdGFpbCA9IFhDRFIgKHRhaWwpOwotCX0KLSAgICAgIGF0X2JvdW5kYXJ5 ID0gTklMUCAoZWx0KTsKLSAgICB9Ci0gIGVsc2UKLSAgICBhdF9ib3VuZGFyeSA9IDE7CisgIGF0 X2JvdW5kYXJ5ID0gISBDT05TUCAoQlZBUiAoY3VycmVudF9idWZmZXIsIHVuZG9fbGlzdCkpCisg ICAgICAgICAgICAgICAgfHwgTklMUCAoWENBUiAoQlZBUiAoY3VycmVudF9idWZmZXIsIHVuZG9f bGlzdCkpKTsKIAogICBpZiAoTU9ESUZGIDw9IFNBVkVfTU9ESUZGKQogICAgIHJlY29yZF9maXJz dF9jaGFuZ2UgKCk7CkBAIC0xNDcsMTEgKzEyOCw2MSBAQCByZWNvcmRfaW5zZXJ0IChwdHJkaWZm X3QgYmVnLCBwdHJkaWZmX3QgbGVuZ3RoKQogCQkgIEZjb25zIChGY29ucyAobGJlZywgbGVuZCks IEJWQVIgKGN1cnJlbnRfYnVmZmVyLCB1bmRvX2xpc3QpKSk7CiB9CiAKLS8qIFJlY29yZCB0aGF0 IGEgZGVsZXRpb24gaXMgYWJvdXQgdG8gdGFrZSBwbGFjZSwKLSAgIG9mIHRoZSBjaGFyYWN0ZXJz IGluIFNUUklORywgYXQgbG9jYXRpb24gQkVHLiAgKi8KKy8qIFJlY29yZCB0aGUgZmFjdCB0aGF0 IG1hcmtlcnMgaW4gdGhlIHJlZ2lvbiBvZiBGUk9NLCBUTyBhcmUgYWJvdXQgdG8KKyAgIGJlIGFk anVzdGVkLiAgVGhpcyBpcyBkb25lIG9ubHkgd2hlbiBhIG1hcmtlciBwb2ludHMgd2l0aGluIHRl eHQKKyAgIGJlaW5nIGRlbGV0ZWQsIGJlY2F1c2UgdGhhdCdzIHRoZSBvbmx5IGNhc2Ugd2hlcmUg YW4gYXV0b21hdGljCisgICBtYXJrZXIgYWRqdXN0bWVudCB3b24ndCBiZSBpbnZlcnRlZCBhdXRv bWF0aWNhbGx5IGJ5IHVuZG9pbmcgdGhlCisgICBidWZmZXIgbW9kaWZpY2F0aW9uLiAgKi8KKwor c3RhdGljIHZvaWQKK3JlY29yZF9tYXJrZXJfYWRqdXN0bWVudHMgKHB0cmRpZmZfdCBmcm9tLCBw dHJkaWZmX3QgdG8pCit7CisgIExpc3BfT2JqZWN0IG1hcmtlcjsKKyAgcmVnaXN0ZXIgc3RydWN0 IExpc3BfTWFya2VyICptOworICByZWdpc3RlciBwdHJkaWZmX3QgY2hhcnBvcywgYWRqdXN0bWVu dDsKKworICAvKiBBbGxvY2F0ZSBhIGNvbnMgY2VsbCB0byBiZSB0aGUgdW5kbyBib3VuZGFyeSBh ZnRlciB0aGlzIGNvbW1hbmQuICAqLworICBpZiAoTklMUCAocGVuZGluZ19ib3VuZGFyeSkpCisg ICAgcGVuZGluZ19ib3VuZGFyeSA9IEZjb25zIChRbmlsLCBRbmlsKTsKKworICBpZiAoY3VycmVu dF9idWZmZXIgIT0gbGFzdF91bmRvX2J1ZmZlcikKKyAgICBGdW5kb19ib3VuZGFyeSAoKTsKKyAg bGFzdF91bmRvX2J1ZmZlciA9IGN1cnJlbnRfYnVmZmVyOworCisgIGZvciAobSA9IEJVRl9NQVJL RVJTIChjdXJyZW50X2J1ZmZlcik7IG07IG0gPSBtLT5uZXh0KQorICAgIHsKKyAgICAgIGNoYXJw b3MgPSBtLT5jaGFycG9zOworICAgICAgZWFzc2VydCAoY2hhcnBvcyA8PSBaKTsKKworICAgICAg aWYgKGZyb20gPD0gY2hhcnBvcyAmJiBjaGFycG9zIDw9IHRvKQorICAgICAgICB7CisgICAgICAg ICAgLyogaW5zZXJ0aW9uX3R5cGUgbmlsIG1hcmtlcnMgd2lsbCBlbmQgdXAgYXQgdGhlIGJlZ2lu bmluZyBvZgorICAgICAgICAgICAgIHRoZSByZS1pbnNlcnRlZCB0ZXh0IGFmdGVyIHVuZG9pbmcg YSBkZWxldGlvbiwgYW5kIG11c3QgYmUKKyAgICAgICAgICAgICBhZGp1c3RlZCB0byBtb3ZlIHRo ZW0gdG8gdGhlIGNvcnJlY3QgcGxhY2UuCisKKyAgICAgICAgICAgICBpbnNlcnRpb25fdHlwZSB0 IG1hcmtlcnMgd2lsbCBhdXRvbWF0aWNhbGx5IG1vdmUgZm9yd2FyZAorICAgICAgICAgICAgIHVw b24gcmUtaW5zZXJ0aW5nIHRoZSBkZWxldGVkIHRleHQsIHNvIHdlIGhhdmUgdG8gYXJyYW5nZQor ICAgICAgICAgICAgIGZvciB0aGVtIHRvIG1vdmUgYmFja3dhcmQgdG8gdGhlIGNvcnJlY3QgcG9z aXRpb24uICAqLworICAgICAgICAgIGFkanVzdG1lbnQgPSAobS0+aW5zZXJ0aW9uX3R5cGUgPyB0 byA6IGZyb20pIC0gY2hhcnBvczsKKworICAgICAgICAgIGlmIChhZGp1c3RtZW50KQorICAgICAg ICAgICAgeworICAgICAgICAgICAgICBYU0VUTUlTQyAobWFya2VyLCBtKTsKKyAgICAgICAgICAg ICAgYnNldF91bmRvX2xpc3QKKyAgICAgICAgICAgICAgICAoY3VycmVudF9idWZmZXIsCisgICAg ICAgICAgICAgICAgIEZjb25zIChGY29ucyAobWFya2VyLCBtYWtlX251bWJlciAoYWRqdXN0bWVu dCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgQlZBUiAoY3VycmVudF9idWZmZXIsIHVuZG9f bGlzdCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworLyogUmVjb3Jk IHRoYXQgYSBkZWxldGlvbiBpcyBhYm91dCB0byB0YWtlIHBsYWNlLCBvZiB0aGUgY2hhcmFjdGVy cyBpbgorICAgU1RSSU5HLCBhdCBsb2NhdGlvbiBCRUcuICBPcHRpb25hbGx5IHJlY29yZCBhZGp1 c3RtZW50cyBmb3IgbWFya2VycworICAgaW4gdGhlIHJlZ2lvbiBTVFJJTkcgb2NjdXBpZXMgaW4g dGhlIGN1cnJlbnQgYnVmZmVyLiAgKi8KIAogdm9pZAotcmVjb3JkX2RlbGV0ZSAocHRyZGlmZl90 IGJlZywgTGlzcF9PYmplY3Qgc3RyaW5nKQorcmVjb3JkX2RlbGV0ZSAocHRyZGlmZl90IGJlZywg TGlzcF9PYmplY3Qgc3RyaW5nLCBib29sIHJlY29yZF9tYXJrZXJzKQogewogICBMaXNwX09iamVj dCBzYmVnOwogCkBAIC0xNjksMzQgKzIwMCwxNSBAQCByZWNvcmRfZGVsZXRlIChwdHJkaWZmX3Qg YmVnLCBMaXNwX09iamVjdCBzdHJpbmcpCiAgICAgICByZWNvcmRfcG9pbnQgKGJlZyk7CiAgICAg fQogCi0gIGJzZXRfdW5kb19saXN0Ci0gICAgKGN1cnJlbnRfYnVmZmVyLAotICAgICBGY29ucyAo RmNvbnMgKHN0cmluZywgc2JlZyksIEJWQVIgKGN1cnJlbnRfYnVmZmVyLCB1bmRvX2xpc3QpKSk7 Ci19Ci0KLS8qIFJlY29yZCB0aGUgZmFjdCB0aGF0IE1BUktFUiBpcyBhYm91dCB0byBiZSBhZGp1 c3RlZCBieSBBREpVU1RNRU5ULgotICAgVGhpcyBpcyBkb25lIG9ubHkgd2hlbiBhIG1hcmtlciBw b2ludHMgd2l0aGluIHRleHQgYmVpbmcgZGVsZXRlZCwKLSAgIGJlY2F1c2UgdGhhdCdzIHRoZSBv bmx5IGNhc2Ugd2hlcmUgYW4gYXV0b21hdGljIG1hcmtlciBhZGp1c3RtZW50Ci0gICB3b24ndCBi ZSBpbnZlcnRlZCBhdXRvbWF0aWNhbGx5IGJ5IHVuZG9pbmcgdGhlIGJ1ZmZlciBtb2RpZmljYXRp b24uICAqLwotCi12b2lkCi1yZWNvcmRfbWFya2VyX2FkanVzdG1lbnQgKExpc3BfT2JqZWN0IG1h cmtlciwgcHRyZGlmZl90IGFkanVzdG1lbnQpCi17Ci0gIGlmIChFUSAoQlZBUiAoY3VycmVudF9i dWZmZXIsIHVuZG9fbGlzdCksIFF0KSkKLSAgICByZXR1cm47Ci0KLSAgLyogQWxsb2NhdGUgYSBj b25zIGNlbGwgdG8gYmUgdGhlIHVuZG8gYm91bmRhcnkgYWZ0ZXIgdGhpcyBjb21tYW5kLiAgKi8K LSAgaWYgKE5JTFAgKHBlbmRpbmdfYm91bmRhcnkpKQotICAgIHBlbmRpbmdfYm91bmRhcnkgPSBG Y29ucyAoUW5pbCwgUW5pbCk7Ci0KLSAgaWYgKGN1cnJlbnRfYnVmZmVyICE9IGxhc3RfdW5kb19i dWZmZXIpCi0gICAgRnVuZG9fYm91bmRhcnkgKCk7Ci0gIGxhc3RfdW5kb19idWZmZXIgPSBjdXJy ZW50X2J1ZmZlcjsKKyAgLyogcHJpbWl0aXZlLXVuZG8gYXNzdW1lcyBtYXJrZXIgYWRqdXN0bWVu dHMgYXJlIHJlY29yZGVkCisgICAgIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgZGVsZXRpb24gaXMg cmVjb3JkZWQuICBTZWUgYnVnIDE2ODE4CisgICAgIGRpc2N1c3Npb24uICAqLworICBpZiAocmVj b3JkX21hcmtlcnMpCisgICAgcmVjb3JkX21hcmtlcl9hZGp1c3RtZW50cyAoYmVnLCBiZWcgKyBT Q0hBUlMgKHN0cmluZykpOwogCiAgIGJzZXRfdW5kb19saXN0CiAgICAgKGN1cnJlbnRfYnVmZmVy LAotICAgICBGY29ucyAoRmNvbnMgKG1hcmtlciwgbWFrZV9udW1iZXIgKGFkanVzdG1lbnQpKSwK LQkgICAgQlZBUiAoY3VycmVudF9idWZmZXIsIHVuZG9fbGlzdCkpKTsKKyAgICAgRmNvbnMgKEZj b25zIChzdHJpbmcsIHNiZWcpLCBCVkFSIChjdXJyZW50X2J1ZmZlciwgdW5kb19saXN0KSkpOwog fQogCiAvKiBSZWNvcmQgdGhhdCBhIHJlcGxhY2VtZW50IGlzIGFib3V0IHRvIHRha2UgcGxhY2Us CkBAIC0yMDYsNyArMjE4LDcgQEAgcmVjb3JkX21hcmtlcl9hZGp1c3RtZW50IChMaXNwX09iamVj dCBtYXJrZXIsIHB0cmRpZmZfdCBhZGp1c3RtZW50KQogdm9pZAogcmVjb3JkX2NoYW5nZSAocHRy ZGlmZl90IGJlZywgcHRyZGlmZl90IGxlbmd0aCkKIHsKLSAgcmVjb3JkX2RlbGV0ZSAoYmVnLCBt YWtlX2J1ZmZlcl9zdHJpbmcgKGJlZywgYmVnICsgbGVuZ3RoLCAxKSk7CisgIHJlY29yZF9kZWxl dGUgKGJlZywgbWFrZV9idWZmZXJfc3RyaW5nIChiZWcsIGJlZyArIGxlbmd0aCwgMSksIGZhbHNl KTsKICAgcmVjb3JkX2luc2VydCAoYmVnLCBsZW5ndGgpOwogfQogDApkaWZmIC0tZ2l0IGEvdGVz dC9DaGFuZ2VMb2cgYi90ZXN0L0NoYW5nZUxvZwppbmRleCBjODcwMjJjLi5jYmY5ZWFhIDEwMDY0 NAotLS0gYS90ZXN0L0NoYW5nZUxvZworKysgYi90ZXN0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEx IEBACisyMDE0LTAzLTEzICBCYXJyeSBPJ1JlaWxseSAgPGd1bmRhZXRpYXBvQGdtYWlsLmNvbT4K KworCSogdW5kby10ZXN0cy5lbCAodW5kby10ZXN0LW1hcmtlci1hZGp1c3RtZW50LW5vbWluYWwp OgorCSh1bmRvLXRlc3QtcmVnaW9uLXQtbWFya2VyKTogTmV3IHRlc3RzIG9mIG1hcmtlciBhZGp1 c3RtZW50cy4KKwkodW5kby10ZXN0LW1hcmtlci1hZGp1c3RtZW50LW1vdmVkKToKKwkodW5kby10 ZXN0LXJlZ2lvbi1tYXJrLWFkanVzdG1lbnQpOiBOZXcgdGVzdHMgdG8gZGVtb25zdHJhdGUKKwli dWcjMTY4MTgsIHdoaWNoIGZhaWwgd2l0aG91dCB0aGUgZml4LgorCiAyMDE0LTAzLTA3ICBNaWNo YWVsIEFsYmludXMgIDxtaWNoYWVsLmFsYmludXNAZ214LmRlPgogCiAJKiBhdXRvbWF0ZWQvdHJh bXAtdGVzdHMuZWwgKHRyYW1wLWNvcHktc2l6ZS1saW1pdCk6IERlY2xhcmUuCmRpZmYgLS1naXQg YS90ZXN0L2F1dG9tYXRlZC91bmRvLXRlc3RzLmVsIGIvdGVzdC9hdXRvbWF0ZWQvdW5kby10ZXN0 cy5lbAppbmRleCA4YTk2M2YxLi42ZWNhYzM2IDEwMDY0NAotLS0gYS90ZXN0L2F1dG9tYXRlZC91 bmRvLXRlc3RzLmVsCisrKyBiL3Rlc3QvYXV0b21hdGVkL3VuZG8tdGVzdHMuZWwKQEAgLTI2OCw2 ICsyNjgsMTA0IEBACiAgICAgKHNob3VsZCAoc3RyaW5nPSAoYnVmZmVyLXN0cmluZykKICAgICAg ICAgICAgICAgICAgICAgICJUaGlzIHNlbnRlbmNlIGNvcnJ1cHRlZD9hYWEiKSkpKQogCisoZXJ0 LWRlZnRlc3QgdW5kby10ZXN0LW1hcmtlci1hZGp1c3RtZW50LW5vbWluYWwgKCkKKyAgIlRlc3Qg bm9taW5hbCBiZWhhdmlvciBvZiBtYXJrZXIgYWRqdXN0bWVudHMuIgorICAod2l0aC10ZW1wLWJ1 ZmZlcgorICAgIChidWZmZXItZW5hYmxlLXVuZG8pCisgICAgKGluc2VydCAiYWJjZGVmZyIpCisg ICAgKHVuZG8tYm91bmRhcnkpCisgICAgKGxldCAoKG0gKG1ha2UtbWFya2VyKSkpCisgICAgICAo c2V0LW1hcmtlciBtIDIgKGN1cnJlbnQtYnVmZmVyKSkKKyAgICAgIChnb3RvLWNoYXIgKHBvaW50 LW1pbikpCisgICAgICAoZGVsZXRlLWZvcndhcmQtY2hhciAzKQorICAgICAgKHVuZG8tYm91bmRh cnkpCisgICAgICAoc2hvdWxkICg9IChwb2ludC1taW4pIChtYXJrZXItcG9zaXRpb24gbSkpKQor ICAgICAgKHVuZG8pCisgICAgICAodW5kby1ib3VuZGFyeSkKKyAgICAgIChzaG91bGQgKD0gMiAo bWFya2VyLXBvc2l0aW9uIG0pKSkpKSkKKworKGVydC1kZWZ0ZXN0IHVuZG8tdGVzdC1yZWdpb24t dC1tYXJrZXIgKCkKKyAgIlRlc3QgdW5kbyBpbiByZWdpb24gY29udGFpbmluZyBtYXJrZXIgd2l0 aCB0IGluc2VydGlvbi10eXBlLiIKKyAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAoYnVmZmVyLWVu YWJsZS11bmRvKQorICAgICh0cmFuc2llbnQtbWFyay1tb2RlIDEpCisgICAgKGluc2VydCAiYWJj ZGVmZyIpCisgICAgKHVuZG8tYm91bmRhcnkpCisgICAgKGxldCAoKG0gKG1ha2UtbWFya2VyKSkp CisgICAgICAoc2V0LW1hcmtlci1pbnNlcnRpb24tdHlwZSBtIHQpCisgICAgICAoc2V0LW1hcmtl ciBtIChwb2ludC1taW4pIChjdXJyZW50LWJ1ZmZlcikpIDsgbSBhdCBhCisgICAgICAoZ290by1j aGFyICgrIDIgKHBvaW50LW1pbikpKQorICAgICAgKHB1c2gtbWFyayAocG9pbnQpIHQgdCkKKyAg ICAgIChzZXRxIG1hcmstYWN0aXZlIHQpCisgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQor ICAgICAgKGRlbGV0ZS1mb3J3YXJkLWNoYXIgMSkgOzsgZGVsZXRlIHJlZ2lvbiBjb3ZlcmluZyAi YWIiCisgICAgICAodW5kby1ib3VuZGFyeSkKKyAgICAgIChzaG91bGQgKD0gKHBvaW50LW1pbikg KG1hcmtlci1wb3NpdGlvbiBtKSkpCisgICAgICA7OyBSZXN1cnJlY3QgImFiIi4gbSdzIGluc2Vy dGlvbiB0eXBlIG1lYW5zIHRoZSByZWluc2VydGlvbgorICAgICAgOzsgbW92ZXMgaXQgZm9yd2Fy ZCAyLCBhbmQgdGhlbiB0aGUgbWFya2VyIGFkanVzdG1lbnQgcmV0dXJucyBpdAorICAgICAgOzsg dG8gaXRzIHJpZ2h0ZnVsIHBsYWNlLgorICAgICAgKHVuZG8pCisgICAgICAodW5kby1ib3VuZGFy eSkKKyAgICAgIChzaG91bGQgKD0gKHBvaW50LW1pbikgKG1hcmtlci1wb3NpdGlvbiBtKSkpKSkp CisKKyhlcnQtZGVmdGVzdCB1bmRvLXRlc3QtbWFya2VyLWFkanVzdG1lbnQtbW92ZWQgKCkKKyAg IlRlc3QgbWFya2VyIGFkanVzdG1lbnQgYmVoYXZpb3Igd2hlbiB0aGUgbWFya2VyIG1vdmVzLgor RGVtb25zdHJhdGVzIGJ1ZyAxNjgxOC4iCisgICh3aXRoLXRlbXAtYnVmZmVyCisgICAgKGJ1ZmZl ci1lbmFibGUtdW5kbykKKyAgICAoaW5zZXJ0ICJhYmNkZWZnaGlqayIpCisgICAgKHVuZG8tYm91 bmRhcnkpCisgICAgKGxldCAoKG0gKG1ha2UtbWFya2VyKSkpCisgICAgICAoc2V0LW1hcmtlciBt IDIgKGN1cnJlbnQtYnVmZmVyKSkgOyBtIGF0IGIKKyAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1p bikpCisgICAgICAoZGVsZXRlLWZvcndhcmQtY2hhciAzKSA7IG0gYXQgZAorICAgICAgKHVuZG8t Ym91bmRhcnkpCisgICAgICAoc2V0LW1hcmtlciBtIDQpIDsgbSBhdCBnCisgICAgICAodW5kbykK KyAgICAgICh1bmRvLWJvdW5kYXJ5KQorICAgICAgOzsgbSBzdGlsbCBhdCBnLCBidXQgc2hpZnRl ZCAzIGJlY2F1c2UgZGVsZXRpb24gdW5kb25lCisgICAgICAoc2hvdWxkICg9IDcgKG1hcmtlci1w b3NpdGlvbiBtKSkpKSkpCisKKyhlcnQtZGVmdGVzdCB1bmRvLXRlc3QtcmVnaW9uLW1hcmstYWRq dXN0bWVudCAoKQorICAiVGVzdCB0aGF0IHRoZSBtYXJrJ3MgbWFya2VyIGFkanVzdG1lbnQgaW4g dW5kbyBoaXN0b3J5IGRvZXNuJ3QKK29ic3RydWN0IHVuZG8gaW4gcmVnaW9uIGZyb20gZmluZGlu ZyB0aGUgY29ycmVjdCBjaGFuZ2UgZ3JvdXAuCitEZW1vbnN0cmF0ZXMgYnVnIDE2ODE4LiIKKyAg KHdpdGgtdGVtcC1idWZmZXIKKyAgICAoYnVmZmVyLWVuYWJsZS11bmRvKQorICAgICh0cmFuc2ll bnQtbWFyay1tb2RlIDEpCisgICAgKGluc2VydCAiRmlyc3QgbGluZVxuIikKKyAgICAoaW5zZXJ0 ICJTZWNvbmQgbGluZVxuIikKKyAgICAodW5kby1ib3VuZGFyeSkKKworICAgIChnb3RvLWNoYXIg KHBvaW50LW1pbikpCisgICAgKGluc2VydCAiYWFhIikKKyAgICAodW5kby1ib3VuZGFyeSkKKwor ICAgICh1bmRvKQorICAgICh1bmRvLWJvdW5kYXJ5KQorCisgICAgKGdvdG8tY2hhciAocG9pbnQt bWF4KSkKKyAgICAoaW5zZXJ0ICJiYmIiKQorICAgICh1bmRvLWJvdW5kYXJ5KQorCisgICAgKHB1 c2gtbWFyayAocG9pbnQpIHQgdCkKKyAgICAoc2V0cSBtYXJrLWFjdGl2ZSB0KQorICAgIChnb3Rv LWNoYXIgKC0gKHBvaW50KSAzKSkKKyAgICAoZGVsZXRlLWZvcndhcmQtY2hhciAxKQorICAgICh1 bmRvLWJvdW5kYXJ5KQorCisgICAgKGluc2VydCAiYmJiIikKKyAgICAodW5kby1ib3VuZGFyeSkK KworICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgKHB1c2gtbWFyayAocG9pbnQpIHQg dCkKKyAgICAoc2V0cSBtYXJrLWFjdGl2ZSB0KQorICAgIChnb3RvLWNoYXIgKCsgKHBvaW50KSAz KSkKKyAgICAodW5kbykKKyAgICAodW5kby1ib3VuZGFyeSkKKworICAgIChzaG91bGQgKHN0cmlu Zz0gKGJ1ZmZlci1zdHJpbmcpICJhYWFGaXJzdCBsaW5lXG5TZWNvbmQgbGluZVxuYmJiIikpKSkK KwogKGRlZnVuIHVuZG8tdGVzdC1hbGwgKCZvcHRpb25hbCBpbnRlcmFjdGl2ZSkKICAgIlJ1biBh bGwgdGVzdHMgZm9yIFxcW3VuZG9dLiIKICAgKGludGVyYWN0aXZlICJwIikK --089e0116019c131fcc04f5618169--