From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jim Porter Newsgroups: gmane.emacs.bugs Subject: bug#69232: 30.0.50; [PATCH] EWW history navigation gets caught in a loop Date: Fri, 1 Mar 2024 12:13:08 -0800 Message-ID: References: <8013cc7e-d5de-b793-261f-4b34fbdf360e@gmail.com> <864je4r6ug.fsf@gnu.org> <86y1bc1vn1.fsf@gnu.org> <557131a7-d400-cba5-2b0e-7ec99e8d7fc2@gmail.com> <86sf1k1fss.fsf@gnu.org> <969e4621-fd6f-48cb-2aef-d265971dd56a@gmail.com> <87r0h2x816.fsf@outlook.com> <8634tiymd4.fsf@gnu.org> <87cyslxziy.fsf@gmx.net> <86frxhxezx.fsf@gnu.org> <3f0da1b2-e256-6124-4d6a-47c922ccd64f@gmail.com> <86bk84wci4.fsf@gnu.org> <7b67c305-1e41-9db2-55d3-f74f1ac302a6@gmail.com> <10a0d839-24f6-b521-1504-a5ca568b3dcc@gmail.com> <86plwfsqey.fsf@gnu.org> <77426857-4d81-29da-9b1a-70931393215e@gmail.com> <878r32u9ut.fsf@gmx.net> <99e36690-ffbe-f373-50d2-32c92717a560@gmail.com> <86wmqmquoe.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------C5T9UISQ3TNjfLiF0tUzqaQw" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="23172"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 69232@debbugs.gnu.org, jimjoe@gmx.net To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Mar 01 21:15:07 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1rg9Hf-0005s6-72 for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 01 Mar 2024 21:15:07 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rg9HB-0004WY-1l; Fri, 01 Mar 2024 15:14:37 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rg9H9-0004W9-Mx for bug-gnu-emacs@gnu.org; Fri, 01 Mar 2024 15:14:35 -0500 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rg9H9-0001VZ-Eb for bug-gnu-emacs@gnu.org; Fri, 01 Mar 2024 15:14:35 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rg9Ha-0006vC-Qz for bug-gnu-emacs@gnu.org; Fri, 01 Mar 2024 15:15:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Jim Porter Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 01 Mar 2024 20:15:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 69232 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 69232-submit@debbugs.gnu.org id=B69232.170932409226557 (code B ref 69232); Fri, 01 Mar 2024 20:15:02 +0000 Original-Received: (at 69232) by debbugs.gnu.org; 1 Mar 2024 20:14:52 +0000 Original-Received: from localhost ([127.0.0.1]:37540 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rg9HP-0006uG-D1 for submit@debbugs.gnu.org; Fri, 01 Mar 2024 15:14:52 -0500 Original-Received: from mail-pl1-f174.google.com ([209.85.214.174]:55672) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rg9HJ-0006tm-QK for 69232@debbugs.gnu.org; Fri, 01 Mar 2024 15:14:49 -0500 Original-Received: by mail-pl1-f174.google.com with SMTP id d9443c01a7336-1dcd6a3da83so18952695ad.3 for <69232@debbugs.gnu.org>; Fri, 01 Mar 2024 12:14:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709323991; x=1709928791; darn=debbugs.gnu.org; h=in-reply-to:from:references:cc:to:content-language:subject :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=s63mwJMVRZ8XPA/kYFxvQ/CLVyexw6PJQcjD55VR93g=; b=SLC6mWbRUPxPLGEUBzcGAyngtKncn8MlEtgve28TxXjDPtc0bP1P9nyGBhBFCp4N86 k3/pAGcSGOqXRXON2x9m3q4RejhKQVf8HwrMKHgj5XEYi9j/TKXdSCPge7veg7j04K3+ 64RPywe5dHrcWtz6Tg7xzY596Cn5blYitFPt/UjTyhOgjot84T69ecqnOGUl7nlVfoZh 7c4x+d8Y+e0GYtEJOSbpqB1jbfH/OZz59D5g+BbQNf+EsXoxU5xR64EK4lqelz2FvQDG 049gwcaVm2F40R0sv4D0oIebDt+q6y3XAQkrDWgpl3y8X6svXajFPwXexqXjKP5Wc+UK /P7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709323991; x=1709928791; h=in-reply-to:from:references:cc:to:content-language:subject :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=s63mwJMVRZ8XPA/kYFxvQ/CLVyexw6PJQcjD55VR93g=; b=dicF40WWSb0fUplPCS/ra6F2/+iYg0C8NdKASWhjszaY9MjvtpYH67XlhZ938V92sy lRVI9iVN0QrI4i81Spv4/SjkJmiU5Ksj9BWKD0irj6+h/kTdtLEQ2GnaX9EXWuzhp2/g 0XC82BZog34ve7c2AQY3c9kpa+cSDXaZrnYbCKOC3/YqObqQeLc9lJTYpoIOq2RPQPMN 1Eg3izcJmpKJSYGvdq7KME/4NIRiZHKnYlP465sD/rnwpWqktw3Yo2gJK4zrnZ4PeCM6 RYDdQ+FQAcWZqRM9XYrFDYOrEvPS7FIYFqqE/F1MiLEJn749VKEZS4DaAe8GicjZU73g gcYw== X-Gm-Message-State: AOJu0Yy33aMwiJPdoczrzKk3zFVu8ZRUTAj9jnkhlJmNIK9PTuip3k2Y SDMcTgjfmKyDpbftOQq5LaAVPadS4WzlhfYZL8J59UWwk2Jmhh47 X-Google-Smtp-Source: AGHT+IFX6IzHt6dWZjAtXGiH7kfAI+5MUimnHnQVRhyBh/v/FnHUjZmU5VRFjIaCYjiwNSeVCtRA5w== X-Received: by 2002:a17:903:1248:b0:1dc:744f:5317 with SMTP id u8-20020a170903124800b001dc744f5317mr2646736plh.50.1709323991013; Fri, 01 Mar 2024 12:13:11 -0800 (PST) Original-Received: from [192.168.1.2] (076-168-148-233.res.spectrum.com. [76.168.148.233]) by smtp.googlemail.com with ESMTPSA id n4-20020a170903110400b001dc391cc28fsm3841586plh.121.2024.03.01.12.13.09 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 01 Mar 2024 12:13:09 -0800 (PST) Content-Language: en-US In-Reply-To: <86wmqmquoe.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list 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-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:280874 Archived-At: This is a multi-part message in MIME format. --------------C5T9UISQ3TNjfLiF0tUzqaQw Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 2/29/2024 11:26 PM, Eli Zaretskii wrote: > Thanks. I have a usability comment below. Thanks for taking a look. > "historical" here should be in quotes (and perhaps explained in > parentheses), otherwise people might misinterpret or fail to > understand what it alludes to. Done. I've also added a short description about this to the EWW manual so that people in the future know they can tweak this behavior. >> +(defcustom eww-before-browse-function #'eww-clear-future-history >> + "A function to call before browsing to a new page. >> +By default, this removes any entries in the history that come after the >> +current page (see `eww-clear-future-history')." > > The doc string should describe the known possible values of the > option. Done. > Now for the usability issue: It's okay to have this is a variable (to > allow future extensions, which might be unrelated to history), but > having a function for user option, and one that is more general than > being about history traversal, is not the best ides: it makes > customization harder for users who are not Lisp programmers. After sleeping on this, I think I agree. I had debated whether to add something like 'eww-before-browse-hook', but then I reasoned that I really want exactly *one* of these history-modification functions to run before browsing, so I made it '...-function'. But that's not right either, since it would mess things up if someone wanted to use this as a hook (they'd need to write their own Lisp function to do everything). There might be some use in the future for 'eww-before-browse-hook', but I can't think of any off the top of my head, so I've just changed this to 'eww-before-browse-history-function'. If we want a more general hook later, we can always add it when we know more. > Therefore, I suggest a history-specific defcustom, whose possible > values could be 'clear', 'clone', and 'add', and whose effect will be > to call the corresponding function via eww-before-browse-function. > The defcustom could also have a user-defined function value to allow > additional functions, of course. I've done something close to this, though I retained the previous form where the possible values are things like 'eww-delete-future-history'. That keeps the code to *use* this option simpler (no special-case symbol names), and the only difference with your suggestion is that users who manually edit their init.el will have a longer symbol name to type. For Customize users, I added 'function-item' choices so they should just be able to click on the option they want without having to worry about the exact symbol name. If you strongly prefer to have this accept non-function symbol names like 'clear', let me know and I can change it. I don't care too much, but this way seemed simpler and easier to maintain. --------------C5T9UISQ3TNjfLiF0tUzqaQw Content-Type: text/plain; charset=UTF-8; name="0001-When-navigating-through-history-in-EWW-don-t-keep-ad.patch" Content-Disposition: attachment; filename*0="0001-When-navigating-through-history-in-EWW-don-t-keep-ad.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAxM2I5NzA5Yzc2MjgzOTY3YTBlMjczOTIyNjQxNjg1ZjQ0MDY4M2UzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j b20+CkRhdGU6IFNhdCwgMTcgRmViIDIwMjQgMjA6NDk6MTUgLTA4MDAKU3ViamVjdDogW1BB VENIXSBXaGVuIG5hdmlnYXRpbmcgdGhyb3VnaCBoaXN0b3J5IGluIEVXVywgZG9uJ3Qga2Vl cCBhZGRpbmcgdG8KICdld3ctaGlzdG9yeScKClRoaXMgcmVzb2x2ZXMgYW4gaXNzdWUgd2hl cmUgbmF2aWdhdGluZyBiYWNrIGFuZCB0aGVuIGZvcndhcmQga2VwdAphZGRpbmcgbmV3IGhp c3RvcnkgZW50cmllcyBzbyB5b3UgY291bGQgbmV2ZXIgaGl0IHRoZSAiZW5kIiAoYnVnIzY5 MjMyKS4KCiogbGlzcC9uZXQvZXd3LmVsIChld3ctYmVmb3JlLWJyb3dzZS1oaXN0b3J5LWZ1 bmN0aW9uKTogTmV3IG9wdGlvbi4KKGV3dy1oaXN0b3J5LXBvc2l0aW9uKTogQWRkIGRvY3N0 cmluZy4KKGV3dy1tb2RlLW1hcCwgZXd3LWNvbnRleHQtbWVudSk6IFVzZSBjb3JyZWN0IHBy ZWRpY2F0ZXMgZm9yIHdoZW4gdG8KZW5hYmxlIGJhY2svZm9yd2FyZC4KKGV3dy1zYXZlLWhp c3RvcnkpOiBTYXZlIGhpc3RvcnkgZW50cnkgaW4gaXRzIG9yaWdpbmFsIHBsYWNlIHdoZW4K dmlld2luZyBhIGhpc3RvcmljYWwgcGFnZS4KKGV3dy0tYmVmb3JlLWJyb3dzZSk6IE5ldyBm dW5jdGlvbi4uLgooZXd3LCBld3ctZm9sbG93LWxpbmssIGV3dy1yZWFkYWJsZSk6IC4uLiBj YWxsIGl0LgooZXd3LXJlbmRlcik6IERvbid0IHNldCAnZXd3LWhpc3RvcnktcG9zaXRpb24n IGhlcmUuLi4KKGV3dy0tYmVmb3JlLWJyb3dzZSk6IC4uLiBpbnN0ZWFkLCBzZXQgaXQgaGVy ZS4KKGV3dy1iYWNrLXVybCk6IFNldCAnZXd3LWhpc3RvcnktcG9zaXRpb24nIGJhc2VkIG9u IHRoZSByZXN1bHQgb2YKJ2V3dy1zYXZlLWhpc3RvcnknLgooZXd3LWZvcndhcmQtdXJsKTog U2V0ICdld3ctaGlzdG9yeS1wb3NpdGlvbicgZGlyZWN0bHksIHNpbmNlCidld3ctc2F2ZS1o aXN0b3J5JyBubyBsb25nZXIgYWRkcyBhIG5ldyBlbnRyeSBpbiB0aGlzIGNhc2UuCihld3ct ZGVsZXRlLWZ1dHVyZS1oaXN0b3J5LCBld3ctY2xvbmUtcHJldmlvdXMtaGlzdG9yeSk6IE5l dyBmdW5jdGlvbnMuCgoqIHRlc3QvbGlzcC9uZXQvZXd3LXRlc3RzLmVsOiBOZXcgZmlsZS4K CiogZXRjL05FV1M6IEFubm91bmNlIHRoaXMgY2hhbmdlLgotLS0KIGRvYy9taXNjL2V3dy50 ZXhpICAgICAgICAgIHwgICA5ICsrCiBldGMvTkVXUyAgICAgICAgICAgICAgICAgICB8ICAx MyArKysKIGxpc3AvbmV0L2V3dy5lbCAgICAgICAgICAgIHwgMTIzICsrKysrKysrKysrKysr KysrKysrKystLS0KIHRlc3QvbGlzcC9uZXQvZXd3LXRlc3RzLmVsIHwgMTc5ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMzEyIGlu c2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3Qv bGlzcC9uZXQvZXd3LXRlc3RzLmVsCgpkaWZmIC0tZ2l0IGEvZG9jL21pc2MvZXd3LnRleGkg Yi9kb2MvbWlzYy9ld3cudGV4aQppbmRleCA1ZTY5YjExZDM0Ny4uZDMxZmNmMTgwMmIgMTAw NjQ0Ci0tLSBhL2RvYy9taXNjL2V3dy50ZXhpCisrKyBiL2RvYy9taXNjL2V3dy50ZXhpCkBA IC0xOTIsNiArMTkyLDE1IEBAIEJhc2ljcwogYnVmZmVyIEBmaWxleypld3cgaGlzdG9yeSp9 LiAgVGhlIGhpc3RvcnkgaXMgbG9zdCB3aGVuIEVXVyBpcyBxdWl0LgogSWYgeW91IHdhbnQg dG8gcmVtZW1iZXIgd2Vic2l0ZXMgeW91IGNhbiB1c2UgYm9va21hcmtzLgogCitAdmluZGV4 IGV3dy1iZWZvcmUtYnJvd3NlLWhpc3RvcnktZnVuY3Rpb24KKyAgQnkgZGVmYXVsdCwgd2hl biBicm93c2luZyB0byBhIG5ldyBwYWdlIGZyb20gYSBgYGhpc3RvcmljYWwnJyBvbmUKKyhp LmUuQDogYSBwYWdlIGxvYWRlZCBieSBuYXZpZ2F0aW5nIGJhY2sgdmlhIEBjb2Rle2V3dy1i YWNrLXVybH0pLCBFV1cKK3dpbGwgZmlyc3QgZGVsZXRlIGFueSBoaXN0b3J5IGVudHJpZXMg bmV3ZXIgdGhhbiB0aGUgY3VycmVudCBwYWdlLiAgVGhpcworaXMgdGhlIHNhbWUgYmVoYXZp b3IgYXMgbW9zdCBvdGhlciB3ZWIgYnJvd3NlcnMuICBZb3UgY2FuIGNoYW5nZSB0aGlzIGJ5 CitjdXN0b21pemluZyBAY29kZXtld3ctYmVmb3JlLWJyb3dzZS1oaXN0b3J5LWZ1bmN0aW9u fSB0byBhbm90aGVyIHZhbHVlLgorRm9yIGV4YW1wbGUsIHNldHRpbmcgaXQgdG8gQGNvZGV7 aWdub3JlfSB3aWxsIHByZXNlcnZlIHRoZSBleGlzdGluZworaGlzdG9yeSBlbnRyaWVzIGFu ZCBzaW1wbHkgcHJlcGVuZCB0aGUgbmV3IHBhZ2UgdG8gdGhlIGhpc3RvcnkgbGlzdC4KKwog QHZpbmRleCBld3ctaGlzdG9yeS1saW1pdAogICBBbG9uZyB3aXRoIHRoZSBVUkxzIHZpc2l0 ZWQsIEVXVyBhbHNvIHJlbWVtYmVycyBib3RoIHRoZSByZW5kZXJlZAogcGFnZSAoYXMgaXQg YXBwZWFycyBpbiB0aGUgYnVmZmVyKSBhbmQgaXRzIHNvdXJjZS4gIFRoaXMgY2FuIHRha2Ug YQpkaWZmIC0tZ2l0IGEvZXRjL05FV1MgYi9ldGMvTkVXUwppbmRleCA2ZDQ0NGRhZjE1Mi4u N2U4MGY4M2QyMzEgMTAwNjQ0Ci0tLSBhL2V0Yy9ORVdTCisrKyBiL2V0Yy9ORVdTCkBAIC0x MDA0LDYgKzEwMDQsMTkgQEAgV2hlbiBpbnZva2VkIHdpdGggdGhlIHByZWZpeCBhcmd1bWVu dCAoJ0MtdScpLAogVGhpcyBpcyB1c2VmdWwgZm9yIGNvbnRpbnVpbmcgcmVhZGluZyB0aGUg VVJMIGluIHRoZSBjdXJyZW50IGJ1ZmZlcgogd2hlbiB0aGUgbmV3IFVSTCBpcyBmZXRjaGVk LgogCistLS0KKyoqKiBIaXN0b3J5IG5hdmlnYXRpb24gaW4gRVdXIG5vdyB3b3JrcyBsaWtl IG90aGVyIGJyb3dzZXJzLgorUHJldmlvdXNseSwgd2hlbiBuYXZpZ2F0aW5nIGJhY2sgYW5k IGZvcndhcmQgdGhyb3VnaCBwYWdlIGhpc3RvcnksIEVXVword291bGQgYWRkIGEgZHVwbGlj YXRlIGVudHJ5IHRvIHRoZSBlbmQgb2YgdGhlIGhpc3RvcnkgbGlzdCBlYWNoIHRpbWUuCitU aGlzIG1hZGUgaXQgaW1wb3NzaWJsZSB0byBuYXZpZ2F0ZSB0byB0aGUgImVuZCIgb2YgdGhl IGhpc3RvcnkgbGlzdC4KK05vdywgbmF2aWdhdGluZyB0aHJvdWdoIGhpc3RvcnkgaW4gRVdX IHNpbXBseSBjaGFuZ2VzIHlvdXIgcG9zaXRpb24gaW4KK3RoZSBoaXN0b3J5IGxpc3QsIGFs bG93aW5nIHlvdSB0byByZWFjaCB0aGUgZW5kIGFzIGV4cGVjdGVkLiAgSW4KK2FkZGl0aW9u LCB3aGVuIGJyb3dzaW5nIHRvIGEgbmV3IHBhZ2UgZnJvbSBhICJoaXN0b3JpY2FsIiBvbmUg KGkuZS4gYQorcGFnZSBsb2FkZWQgYnkgbmF2aWdhdGluZyBiYWNrIHRocm91Z2ggaGlzdG9y eSksIEVXVyBkZWxldGVzIHRoZSBoaXN0b3J5CitlbnRyaWVzIG5ld2VyIHRoYW4gdGhlIGN1 cnJlbnQgcGFnZS4gIFRvIGNoYW5nZSB0aGUgYmVoYXZpb3Igd2hlbgorYnJvd3NpbmcgZnJv bSAiaGlzdG9yaWNhbCIgcGFnZXMsIHlvdSBjYW4gY3VzdG9taXplCisnZXd3LWJlZm9yZS1i cm93c2UtaGlzdG9yeS1mdW5jdGlvbicuCisKICoqIGdvLXRzLW1vZGUKIAogKysrCmRpZmYg LS1naXQgYS9saXNwL25ldC9ld3cuZWwgYi9saXNwL25ldC9ld3cuZWwKaW5kZXggNWEyNWVl ZjllM2MuLjZlMzE2ODdmMDcxIDEwMDY0NAotLS0gYS9saXNwL25ldC9ld3cuZWwKKysrIGIv bGlzcC9uZXQvZXd3LmVsCkBAIC0xODIsNiArMTgyLDMzIEBAIGV3dy1icm93c2UtdXJsLW5l dy13aW5kb3ctaXMtdGFiCiAgICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJPcGVuIG5l dyB0YWIgd2hlbiB0YWIgYmFyIGlzIGVuYWJsZWQiIHRhYi1iYXIpCiAgICAgICAgICAgICAg ICAgIChjb25zdCA6dGFnICJOZXZlciBvcGVuIFVSTCBpbiBuZXcgdGFiIiBuaWwpKSkKIAor KGRlZmN1c3RvbSBld3ctYmVmb3JlLWJyb3dzZS1oaXN0b3J5LWZ1bmN0aW9uICMnZXd3LWRl bGV0ZS1mdXR1cmUtaGlzdG9yeQorICAiQSBmdW5jdGlvbiB0byBjYWxsIHRvIHVwZGF0ZSBo aXN0b3J5IGJlZm9yZSBicm93c2luZyB0byBhIG5ldyBwYWdlLgorRVdXIHByb3ZpZGVzIHRo ZSBmb2xsb3dpbmcgdmFsdWVzIGZvciB0aGlzIG9wdGlvbjoKKworKiBgZXd3LWRlbGV0ZS1m dXR1cmUtaGlzdG9yeSc6IERlbGV0ZSBhbnkgaGlzdG9yeSBlbnRyaWVzIGFmdGVyIHRoZQor Y3VycmVudGx5LXNob3duIG9uZS4gIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IsIGFu ZCB3b3JrcyB0aGUgc2FtZQorYXMgaW4gbW9zdCBvdGhlciB3ZWIgYnJvd3NlcnMuCisKKyog YGV3dy1jbG9uZS1wcmV2aW91cy1oaXN0b3J5JzogQ2xvbmUgYW5kIHByZXBlbmQgYW55IGhp c3RvcnkgZW50cmllcyB1cAorICB0byB0aGUgY3VycmVudGx5LXNob3duIG9uZS4gIFRoaXMg aXMgbGlrZSBgZXd3LWRlbGV0ZS1mdXR1cmUtaGlzdG9yeScsCisgIGV4Y2VwdCB0aGF0IGl0 IHByZXNlcnZlcyB0aGUgcHJldmlvdXMgY29udGVudHMgb2YgdGhlIGhpc3RvcnkgbGlzdCBh dAorICB0aGUgZW5kLgorCisqIGBpZ25vcmUnOiBQcmVzZXJ2ZSB0aGUgY3VycmVudCBoaXN0 b3J5IHVuY2hhbmdlZC4gIFRoaXMgd2lsbCByZXN1bHQgaW4KKyAgdGhlIG5ldyBwYWdlIHNp bXBseSBiZWluZyBwcmVwZW5kZWQgdG8gdGhlIGV4aXN0aW5nIGhpc3RvcnkgbGlzdC4KKwor WW91IGNhbiBhbHNvIHNldCB0aGlzIHRvIGFueSBvdGhlciBmdW5jdGlvbiB5b3Ugd2lzaC4i CisgIDp2ZXJzaW9uICIzMC4xIgorICA6Z3JvdXAgJ2V3dworICA6dHlwZSAnKGNob2ljZSAo ZnVuY3Rpb24taXRlbSA6dGFnICJEZWxldGUgZnV0dXJlIGhpc3RvcnkiCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGV3dy1kZWxldGUtZnV0dXJlLWhpc3RvcnkpCisgICAg ICAgICAgICAgICAgIChmdW5jdGlvbi1pdGVtIDp0YWcgIkNsb25lIHByZXZpb3VzIGhpc3Rv cnkiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV3dy1jbG9uZS1wcmV2aW91 cy1oaXN0b3J5KQorICAgICAgICAgICAgICAgICAoZnVuY3Rpb24taXRlbSA6dGFnICJQcmVz ZXJ2ZSBoaXN0b3J5IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUp CisgICAgICAgICAgICAgICAgIChmdW5jdGlvbiA6dGFnICJDdXN0b20gZnVuY3Rpb24iKSkp CisKIChkZWZjdXN0b20gZXd3LWFmdGVyLXJlbmRlci1ob29rIG5pbAogICAiQSBob29rIGNh bGxlZCBhZnRlciBld3cgaGFzIGZpbmlzaGVkIHJlbmRlcmluZyB0aGUgYnVmZmVyLiIKICAg OnZlcnNpb24gIjI1LjEiCkBAIC0zMTIsNyArMzM5LDEwIEBAIGV3dy12YWxpZC1jZXJ0aWZp Y2F0ZQogCiAoZGVmdmFyIGV3dy1kYXRhIG5pbCkKIChkZWZ2YXIgZXd3LWhpc3Rvcnkgbmls KQotKGRlZnZhciBld3ctaGlzdG9yeS1wb3NpdGlvbiAwKQorKGRlZnZhciBld3ctaGlzdG9y eS1wb3NpdGlvbiAwCisgICJUaGUgMS1pbmRleGVkIHBvc2l0aW9uIGluIGBld3ctaGlzdG9y eScuCitJZiB6ZXJvLCBFV1cgaXMgYXQgdGhlIG5ld2VzdCBwYWdlLCB3aGljaCBpc24ndCB5 ZXQgcHJlc2VudCBpbgorYGV3dy1oaXN0b3J5Jy4iKQogKGRlZnZhciBld3ctcHJvbXB0LWhp c3RvcnkgbmlsKQogCiAoZGVmdmFyIGV3dy1sb2NhbC1yZWdleCAibG9jYWxob3N0IgpAQCAt NDAyLDYgKzQzMiw3IEBAIGV3dwogICAgICh0CiAgICAgIChnZXQtYnVmZmVyLWNyZWF0ZSAi KmV3dyoiKSkpKQogICAoZXd3LXNldHVwLWJ1ZmZlcikKKyAgKGV3dy0tYmVmb3JlLWJyb3dz ZSkKICAgOzsgQ2hlY2sgd2hldGhlciB0aGUgZG9tYWluIG9ubHkgdXNlcyAiSGlnaGx5IFJl c3RyaWN0ZWQiIFVuaWNvZGUKICAgOzsgSUROQSBjaGFyYWN0ZXJzLiAgSWYgbm90LCB0cmFu c2Zvcm0gdG8gcHVueWNvZGUgdG8gaW5kaWNhdGUgdGhhdAogICA7OyB0aGVyZSBtYXkgYmUg ZnVubnkgYnVzaW5lc3MgZ29pbmcgb24uCkBAIC02NTQsNyArNjg1LDYgQEAgZXd3LXJlbmRl cgogCSAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWZmZXIKIAkgICAgICAocGxpc3QtcHV0 IGV3dy1kYXRhIDp1cmwgdXJsKQogCSAgICAgIChld3ctLWFmdGVyLXBhZ2UtY2hhbmdlKQot CSAgICAgIChzZXRxIGV3dy1oaXN0b3J5LXBvc2l0aW9uIDApCiAJICAgICAgKGFuZCBsYXN0 LWNvZGluZy1zeXN0ZW0tdXNlZAogCQkgICAoc2V0LWJ1ZmZlci1maWxlLWNvZGluZy1zeXN0 ZW0gbGFzdC1jb2Rpbmctc3lzdGVtLXVzZWQpKQogICAgICAgICAgICAgICAodW5sZXNzIHNo ci1maWxsLXRleHQKQEAgLTkwNSw2ICs5MzUsMTEgQEAgZXd3LXVwZGF0ZS1oZWFkZXItbGlu ZS1mb3JtYXQKIAkJIGAoKD91IC4gLChvciB1cmwgIiIpKQogCQkgICAoP3QgLiAsdGl0bGUp KSkpKSkpKQogCisoZGVmdW4gZXd3LS1iZWZvcmUtYnJvd3NlICgpCisgIChmdW5jYWxsIGV3 dy1iZWZvcmUtYnJvd3NlLWhpc3RvcnktZnVuY3Rpb24pCisgIChzZXRxIGV3dy1oaXN0b3J5 LXBvc2l0aW9uIDAKKyAgICAgICAgZXd3LWRhdGEgKGxpc3QgOnRpdGxlICIiKSkpCisKIChk ZWZ1biBld3ctLWFmdGVyLXBhZ2UtY2hhbmdlICgpCiAgIChld3ctdXBkYXRlLWhlYWRlci1s aW5lLWZvcm1hdCkKICAgKGV3dy0tcmVuYW1lLWJ1ZmZlcikpCkBAIC0xMDM3LDYgKzEwNzIs NyBAQCBld3ctcmVhZGFibGUKICAgICAgICAgIChiYXNlIChwbGlzdC1nZXQgZXd3LWRhdGEg OnVybCkpKQogICAgIChld3ctc2NvcmUtcmVhZGFiaWxpdHkgZG9tKQogICAgIChld3ctc2F2 ZS1oaXN0b3J5KQorICAgIChld3ctLWJlZm9yZS1icm93c2UpCiAgICAgKGV3dy1kaXNwbGF5 LWh0bWwgbmlsIG5pbAogICAgICAgICAgICAgICAgICAgICAgIChsaXN0ICdiYXNlIChsaXN0 IChjb25zICdocmVmIGJhc2UpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChld3ct aGlnaGVzdC1yZWFkYWJpbGl0eSBkb20pKQpAQCAtMTEyOSw5ICsxMTY1LDkgQEAgZXd3LW1v ZGUtbWFwCiAgICAgICAgICAgWyJSZWxvYWQiIGV3dy1yZWxvYWQgdF0KICAgICAgICAgICBb IkZvbGxvdyBVUkwgaW4gbmV3IGJ1ZmZlciIgZXd3LW9wZW4taW4tbmV3LWJ1ZmZlcl0KICAg ICAgICAgICBbIkJhY2sgdG8gcHJldmlvdXMgcGFnZSIgZXd3LWJhY2stdXJsCi0gICAgICAg ICAgIDphY3RpdmUgKG5vdCAoemVyb3AgKGxlbmd0aCBld3ctaGlzdG9yeSkpKV0KKyAgICAg ICAgICAgOmFjdGl2ZSAoPCBld3ctaGlzdG9yeS1wb3NpdGlvbiAobGVuZ3RoIGV3dy1oaXN0 b3J5KSldCiAgICAgICAgICAgWyJGb3J3YXJkIHRvIG5leHQgcGFnZSIgZXd3LWZvcndhcmQt dXJsCi0gICAgICAgICAgIDphY3RpdmUgKG5vdCAoemVyb3AgZXd3LWhpc3RvcnktcG9zaXRp b24pKV0KKyAgICAgICAgICAgOmFjdGl2ZSAoPiBld3ctaGlzdG9yeS1wb3NpdGlvbiAxKV0K ICAgICAgICAgICBbIkJyb3dzZSB3aXRoIGV4dGVybmFsIGJyb3dzZXIiIGV3dy1icm93c2Ut d2l0aC1leHRlcm5hbC1icm93c2VyIHRdCiAgICAgICAgICAgWyJEb3dubG9hZCIgZXd3LWRv d25sb2FkIHRdCiAgICAgICAgICAgWyJWaWV3IHBhZ2Ugc291cmNlIiBld3ctdmlldy1zb3Vy Y2VdCkBAIC0xMTU1LDkgKzExOTEsOSBAQCBld3ctY29udGV4dC1tZW51CiAgICAgKGVhc3kt bWVudS1kZWZpbmUgbmlsIGVhc3ktbWVudSBuaWwKICAgICAgICcoIkV3dyIKICAgICAgICAg WyJCYWNrIHRvIHByZXZpb3VzIHBhZ2UiIGV3dy1iYWNrLXVybAotCSA6dmlzaWJsZSAobm90 ICh6ZXJvcCAobGVuZ3RoIGV3dy1oaXN0b3J5KSkpXQorCSA6YWN0aXZlICg8IGV3dy1oaXN0 b3J5LXBvc2l0aW9uIChsZW5ndGggZXd3LWhpc3RvcnkpKV0KIAlbIkZvcndhcmQgdG8gbmV4 dCBwYWdlIiBld3ctZm9yd2FyZC11cmwKLQkgOnZpc2libGUgKG5vdCAoemVyb3AgZXd3LWhp c3RvcnktcG9zaXRpb24pKV0KKwkgOmFjdGl2ZSAoPiBld3ctaGlzdG9yeS1wb3NpdGlvbiAx KV0KIAlbIlJlbG9hZCIgZXd3LXJlbG9hZCB0XSkpCiAgICAgKGRvbGlzdCAoaXRlbSAocmV2 ZXJzZSAobG9va3VwLWtleSBlYXN5LW1lbnUgW21lbnUtYmFyIGV3d10pKSkKICAgICAgICh3 aGVuIChjb25zcCBpdGVtKQpAQCAtMTI4MCwxNiArMTMxNiwyMCBAQCBld3ctYmFjay11cmwK ICAgKGludGVyYWN0aXZlIG5pbCBld3ctbW9kZSkKICAgKHdoZW4gKD49IGV3dy1oaXN0b3J5 LXBvc2l0aW9uIChsZW5ndGggZXd3LWhpc3RvcnkpKQogICAgICh1c2VyLWVycm9yICJObyBw cmV2aW91cyBwYWdlIikpCi0gIChld3ctc2F2ZS1oaXN0b3J5KQotICAoc2V0cSBld3ctaGlz dG9yeS1wb3NpdGlvbiAoKyBld3ctaGlzdG9yeS1wb3NpdGlvbiAyKSkKKyAgKGlmIChld3ct c2F2ZS1oaXN0b3J5KQorICAgICAgOzsgV2Ugd2VyZSBhdCB0aGUgbGF0ZXN0IHBhZ2UgKHdo aWNoIHdhcyBqdXN0IGFkZGVkIHRvIHRoZQorICAgICAgOzsgaGlzdG9yeSksIHNvIGdvIGJh Y2sgdHdvIGVudHJpZXMuCisgICAgICAoc2V0cSBld3ctaGlzdG9yeS1wb3NpdGlvbiAyKQor ICAgIChzZXRxIGV3dy1oaXN0b3J5LXBvc2l0aW9uICgxKyBld3ctaGlzdG9yeS1wb3NpdGlv bikpKQogICAoZXd3LXJlc3RvcmUtaGlzdG9yeSAoZWx0IGV3dy1oaXN0b3J5ICgxLSBld3ct aGlzdG9yeS1wb3NpdGlvbikpKSkKIAogKGRlZnVuIGV3dy1mb3J3YXJkLXVybCAoKQogICAi R28gdG8gdGhlIG5leHQgZGlzcGxheWVkIHBhZ2UuIgogICAoaW50ZXJhY3RpdmUgbmlsIGV3 dy1tb2RlKQotICAod2hlbiAoemVyb3AgZXd3LWhpc3RvcnktcG9zaXRpb24pCisgICh3aGVu ICg8PSBld3ctaGlzdG9yeS1wb3NpdGlvbiAxKQogICAgICh1c2VyLWVycm9yICJObyBuZXh0 IHBhZ2UiKSkKICAgKGV3dy1zYXZlLWhpc3RvcnkpCisgIChzZXRxIGV3dy1oaXN0b3J5LXBv c2l0aW9uICgxLSBld3ctaGlzdG9yeS1wb3NpdGlvbikpCiAgIChld3ctcmVzdG9yZS1oaXN0 b3J5IChlbHQgZXd3LWhpc3RvcnkgKDEtIGV3dy1oaXN0b3J5LXBvc2l0aW9uKSkpKQogCiAo ZGVmdW4gZXd3LXJlc3RvcmUtaGlzdG9yeSAoZWxlbSkKQEAgLTE5NTksNiArMTk5OSw3IEBA IGV3dy1mb2xsb3ctbGluawogCSAgIChld3ctc2FtZS1wYWdlLXAgdXJsIChwbGlzdC1nZXQg ZXd3LWRhdGEgOnVybCkpKQogICAgICAgKGxldCAoKHBvaW50IChwb2ludCkpKQogCShld3ct c2F2ZS1oaXN0b3J5KQorICAgICAgICAoZXd3LS1iZWZvcmUtYnJvd3NlKQogCShwbGlzdC1w dXQgZXd3LWRhdGEgOnVybCB1cmwpCiAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikp CiAgICAgICAgIChpZi1sZXQgKChtYXRjaCAodGV4dC1wcm9wZXJ0eS1zZWFyY2gtZm9yd2Fy ZCAnc2hyLXRhcmdldC1pZCB0YXJnZXQgIydtZW1iZXIpKSkKQEAgLTIyODksMTEgKzIzMzAs NjkgQEAgZXd3LWJvb2ttYXJrLW1vZGUKIDs7OyBIaXN0b3J5IGNvZGUKIAogKGRlZnVuIGV3 dy1zYXZlLWhpc3RvcnkgKCkKKyAgIlNhdmUgdGhlIGN1cnJlbnQgcGFnZSdzIGRhdGEgdG8g dGhlIGhpc3RvcnkuCitJZiB0aGUgY3VycmVudCBwYWdlIGlzIGEgaGlzdG9yaWFsIG9uZSBs b2FkZWQgZnJvbQorYGV3dy1oaXN0b3J5JyAoZS5nLiBieSBjYWxsaW5nIGBld3ctYmFjay11 cmwnKSwgdGhpcyB3aWxsIHVwZGF0ZSB0aGUKK3BhZ2UncyBlbnRyeSBpbiBgZXd3LWhpc3Rv cnknIGFuZCByZXR1cm4gbmlsLiAgT3RoZXJ3aXNlLCBhZGQgYSBuZXcKK2VudHJ5IHRvIGBl d3ctaGlzdG9yeScgYW5kIHJldHVybiB0LiIKICAgKHBsaXN0LXB1dCBld3ctZGF0YSA6cG9p bnQgKHBvaW50KSkKICAgKHBsaXN0LXB1dCBld3ctZGF0YSA6dGV4dCAoYnVmZmVyLXN0cmlu ZykpCi0gIChsZXQgKChoaXN0b3J5LWRlbGV0ZS1kdXBsaWNhdGVzIG5pbCkpCi0gICAgKGFk ZC10by1oaXN0b3J5ICdld3ctaGlzdG9yeSBld3ctZGF0YSBld3ctaGlzdG9yeS1saW1pdCB0 KSkKLSAgKHNldHEgZXd3LWRhdGEgKGxpc3QgOnRpdGxlICIiKSkpCisgIChpZiAoemVyb3Ag ZXd3LWhpc3RvcnktcG9zaXRpb24pCisgICAgICAobGV0ICgoaGlzdG9yeS1kZWxldGUtZHVw bGljYXRlcyBuaWwpKQorICAgICAgICAoYWRkLXRvLWhpc3RvcnkgJ2V3dy1oaXN0b3J5IGV3 dy1kYXRhIGV3dy1oaXN0b3J5LWxpbWl0IHQpCisgICAgICAgIChzZXRxIGV3dy1oaXN0b3J5 LXBvc2l0aW9uIDEpCisgICAgICAgIHQpCisgICAgKHNldGYgKGVsdCBld3ctaGlzdG9yeSAo MS0gZXd3LWhpc3RvcnktcG9zaXRpb24pKSBld3ctZGF0YSkKKyAgICBuaWwpKQorCisoZGVm dW4gZXd3LWRlbGV0ZS1mdXR1cmUtaGlzdG9yeSAoKQorICAiUmVtb3ZlIGFueSBlbnRyaWVz IGluIGBld3ctaGlzdG9yeScgYWZ0ZXIgdGhlIGN1cnJlbnRseS1zaG93biBvbmUuCitUaGlz IGlzIHVzZWZ1bCBmb3IgYGV3dy1iZWZvcmUtYnJvd3NlLWhpc3RvcnktZnVuY3Rpb24nIHRv IG1ha2UgRVdXJ3MKK25hdmlnYXRpb24gdG8gYSBuZXcgcGFnZSBmcm9tIGEgaGlzdG9yaWNh bCBvbmUgd29yayBsaWtlIG90aGVyIHdlYgorYnJvd3NlcnM6IGl0IHdpbGwgZGVsZXRlIGFu eSBcImZ1dHVyZVwiIGhpc3RvcnkgZWxlbWVudHMgYmVmb3JlIGFkZGluZwordGhlIG5ldyBw YWdlIHRvIHRoZSBlbmQgb2YgdGhlIGhpc3RvcnkuCisKK0ZvciBleGFtcGxlLCBpZiBgZXd3 LWhpc3RvcnknIGxvb2tzIGxpa2UgdGhpcyAoZ29pbmcgZnJvbSBuZXdlc3QgdG8KK29sZGVz dCwgd2l0aCBcIipcIiBtYXJraW5nIHRoZSBjdXJyZW50IHBhZ2UpOgorCisgIEUgRCBDKiBC IEEKKwordGhlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gdXBkYXRlcyBgZXd3LWhpc3Rvcnkn IHRvOgorCisgIEMqIEIgQSIKKyAgKHdoZW4gKD4gZXd3LWhpc3RvcnktcG9zaXRpb24gMSkK KyAgICAoc2V0cSBld3ctaGlzdG9yeSAobnRoY2RyICgxLSBld3ctaGlzdG9yeS1wb3NpdGlv bikgZXd3LWhpc3RvcnkpCisgICAgICAgICAgOzsgV2UgZG9uJ3QgcmVhbGx5IG5lZWQgdG8g c2V0IHRoaXMgc2luY2UgYGV3dy0tYmVmb3JlLWJyb3dzZScKKyAgICAgICAgICA7OyBzZXRz IGl0IHRvbywgYnV0IHRoaXMgZW5zdXJlcyB0aGF0IG90aGVyIGNhbGxlcnMgY2FuIHVzZQor ICAgICAgICAgIDs7IHRoaXMgZnVuY3Rpb24gYW5kIGdldCB0aGUgZXhwZWN0ZWQgcmVzdWx0 cy4KKyAgICAgICAgICBld3ctaGlzdG9yeS1wb3NpdGlvbiAxKSkpCisKKyhkZWZ1biBld3ct Y2xvbmUtcHJldmlvdXMtaGlzdG9yeSAoKQorICAiQ2xvbmUgYW5kIHByZXBlbmQgZW50cmll cyBpbiBgZXd3LWhpc3RvcnknIHVwIHRvIHRoZSBjdXJyZW50bHktc2hvd24gb25lLgorVGhl c2UgY2xvbmVkIGVudHJpZXMgZ2V0IGFkZGVkIHRvIHRoZSBiZWdpbm5pbmcgb2YgYGV3dy1o aXN0b3J5JyBzbyB0aGF0CitpdCdzIHBvc3NpYmxlIHRvIG5hdmlnYXRlIGJhY2sgdG8gdGhl IHZlcnkgZmlyc3QgcGFnZSBmb3IgdGhpcyBFV1cKK3dpdGhvdXQgZGVsZXRpbmcgYW55IGhp c3RvcnkgZW50cmllcy4KKworRm9yIGV4YW1wbGUsIGlmIGBld3ctaGlzdG9yeScgbG9va3Mg bGlrZSB0aGlzIChnb2luZyBmcm9tIG5ld2VzdCB0bworb2xkZXN0LCB3aXRoIFwiKlwiIG1h cmtpbmcgdGhlIGN1cnJlbnQgcGFnZSk6CisKKyAgRSBEIEMqIEIgQQorCit0aGVuIGNhbGxp bmcgdGhpcyBmdW5jdGlvbiB1cGRhdGVzIGBld3ctaGlzdG9yeScgdG86CisKKyAgQyogQiBB IEUgRCBDIEQgQQorCitUaGlzIGlzIHVzZWZ1bCBmb3Igc2V0dGluZyBgZXd3LWJlZm9yZS1i cm93c2UtaGlzdG9yeS1mdW5jdGlvbicgKHdoaWNoCitzZWUpLiIKKyAgKHdoZW4gKD4gZXd3 LWhpc3RvcnktcG9zaXRpb24gMSkKKyAgICAoc2V0cSBld3ctaGlzdG9yeSAodGFrZSBld3ct aGlzdG9yeS1saW1pdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgKG50 aGNkciAoMS0gZXd3LWhpc3RvcnktcG9zaXRpb24pCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGV3dy1oaXN0b3J5KQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZXd3LWhpc3RvcnkpKQorICAgICAgICAgIDs7IEFzIHdpdGgg YGV3dy1kZWxldGUtZnV0dXJlLWhpc3RvcnknLCB3ZSBkb24ndCByZWFsbHkgbmVlZAorICAg ICAgICAgIDs7IHRvIHNldCB0aGlzIHNpbmNlIGBld3ctLWJlZm9yZS1icm93c2UnIHNldHMg aXQgdG9vLCBidXQKKyAgICAgICAgICA7OyBsZXQncyBiZSB0aG9yb3VnaC4KKyAgICAgICAg ICBld3ctaGlzdG9yeS1wb3NpdGlvbiAxKSkpCiAKIChkZWZ2YXIgZXd3LWN1cnJlbnQtYnVm ZmVyKQogCmRpZmYgLS1naXQgYS90ZXN0L2xpc3AvbmV0L2V3dy10ZXN0cy5lbCBiL3Rlc3Qv bGlzcC9uZXQvZXd3LXRlc3RzLmVsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi5jZWQ4NDMyMmUzYQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvbGlzcC9uZXQv ZXd3LXRlc3RzLmVsCkBAIC0wLDAgKzEsMTc5IEBACis7OzsgZXd3LXRlc3RzLmVsIC0tLSB0 ZXN0cyBmb3IgZXd3LmVsICAtKi0gbGV4aWNhbC1iaW5kaW5nOiB0OyAtKi0KKworOzsgQ29w eXJpZ2h0IChDKSAyMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCis7OyBU aGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCisKKzs7IEdOVSBFbWFjcyBpcyBmcmVl IHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cis7OyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKzs7IChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisKKzs7IEdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7IE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK Kzs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKzs7 IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCis7OyBhbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxo dHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKzs7OyBDb21tZW50YXJ5OgorCis7 OzsgQ29kZToKKworKHJlcXVpcmUgJ2VydCkKKyhyZXF1aXJlICdld3cpCisKKyhkZWZ2YXIg ZXd3LXRlc3QtLXJlc3BvbnNlLWZ1bmN0aW9uIChsYW1iZGEgKHVybCkgKGNvbmNhdCAiXG4i IHVybCkpCisgICJBIGZ1bmN0aW9uIGZvciByZXR1cm5pbmcgYSBtb2NrIHJlc3BvbnNlIGZv ciBVUkwuCitUaGUgZGVmYXVsdCBqdXN0IHJldHVybnMgYW4gZW1wdHkgbGlzdCBvZiBoZWFk ZXJzIFVSTCBhcyB0aGUgYm9keS4iKQorCisoZGVmbWFjcm8gZXd3LXRlc3QtLXdpdGgtbW9j ay1yZXRyaWV2ZSAoJnJlc3QgYm9keSkKKyAgIkV2YWx1YXRlIEJPRFkgd2l0aCBhIG1vY2sg aW1wbGVtZW50YXRpb24gb2YgYGV3dy1yZXRyaWV2ZScuCitUaGlzIGF2b2lkcyBuZXR3b3Jr IHJlcXVlc3RzIGR1cmluZyBvdXIgdGVzdHMuICBBZGRpdGlvbmFsbHksIHByZXBhcmUgYQor dGVtcG9yYXJ5IEVXVyBidWZmZXIgZm9yIG91ciB0ZXN0cy4iCisgIChkZWNsYXJlIChpbmRl bnQgMSkpCisgICAgYChjbC1sZXRmICgoKHN5bWJvbC1mdW5jdGlvbiAnZXd3LXJldHJpZXZl KQorICAgICAgICAgICAgICAgIChsYW1iZGEgKHVybCBjYWxsYmFjayBhcmdzKQorICAgICAg ICAgICAgICAgICAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAgICAgICAgICAgICAgICAgKGlu c2VydCAoZnVuY2FsbCBld3ctdGVzdC0tcmVzcG9uc2UtZnVuY3Rpb24gdXJsKSkKKyAgICAg ICAgICAgICAgICAgICAgKGFwcGx5IGNhbGxiYWNrIG5pbCBhcmdzKSkpKSkKKyAgICAgICAo d2l0aC10ZW1wLWJ1ZmZlcgorICAgICAgICAgKGV3dy1tb2RlKQorICAgICAgICAgLEBib2R5 KSkpCisKKyhkZWZ1biBld3ctdGVzdC0taGlzdG9yeS11cmxzICgpCisgIChtYXBjYXIgKGxh bWJkYSAoZWxlbSkgKHBsaXN0LWdldCBlbGVtIDp1cmwpKSBld3ctaGlzdG9yeSkpCisKKzs7 OyBUZXN0czoKKworKGVydC1kZWZ0ZXN0IGV3dy10ZXN0L2hpc3RvcnkvbmV3LXBhZ2UgKCkK KyAgIlRlc3QgdGhhdCB3aGVuIHZpc2l0aW5nIGEgbmV3IHBhZ2UsIHRoZSBwcmV2aW91cyBv bmUgZ29lcyBpbnRvIHRoZSBoaXN0b3J5LiIKKyAgKGV3dy10ZXN0LS13aXRoLW1vY2stcmV0 cmlldmUKKyAgICAoZXd3ICJvbmUuaW52YWxpZCIpCisgICAgKGV3dyAidHdvLmludmFsaWQi KQorICAgIChzaG91bGQgKGVxdWFsIChld3ctdGVzdC0taGlzdG9yeS11cmxzKQorICAgICAg ICAgICAgICAgICAgICcoImh0dHA6Ly9vbmUuaW52YWxpZC8iKSkpCisgICAgKGV3dyAidGhy ZWUuaW52YWxpZCIpCisgICAgKHNob3VsZCAoZXF1YWwgKGV3dy10ZXN0LS1oaXN0b3J5LXVy bHMpCisgICAgICAgICAgICAgICAgICAgJygiaHR0cDovL3R3by5pbnZhbGlkLyIKKyAgICAg ICAgICAgICAgICAgICAgICJodHRwOi8vb25lLmludmFsaWQvIikpKSkpCisKKyhlcnQtZGVm dGVzdCBld3ctdGVzdC9oaXN0b3J5L2JhY2stZm9yd2FyZCAoKQorICAiVGVzdCB0aGF0IG5h dmlnYXRpbmcgdGhyb3VnaCBoaXN0b3J5IGp1c3QgY2hhbmdlcyBvdXIgaGlzdG9yeSBwb3Np dGlvbi4KK1NlZSBidWcjNjkyMzIuIgorICAoZXd3LXRlc3QtLXdpdGgtbW9jay1yZXRyaWV2 ZQorICAgIChld3cgIm9uZS5pbnZhbGlkIikKKyAgICAoZXd3ICJ0d28uaW52YWxpZCIpCisg ICAgKGV3dyAidGhyZWUuaW52YWxpZCIpCisgICAgKGxldCAoKHVybC1oaXN0b3J5ICcoImh0 dHA6Ly90aHJlZS5pbnZhbGlkLyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDov L3R3by5pbnZhbGlkLyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL29uZS5p bnZhbGlkLyIpKSkKKyAgICAgIDs7IEdvIGJhY2sgb25lIHBhZ2UuICBUaGlzIHNob3VsZCBh ZGQgInRocmVlLmludmFsaWQiIHRvIHRoZQorICAgICAgOzsgaGlzdG9yeSwgbWFraW5nIG91 ciBwb3NpdGlvbiBpbiB0aGUgbGlzdCAyLgorICAgICAgKGV3dy1iYWNrLXVybCkKKyAgICAg IChzaG91bGQgKGVxdWFsIChld3ctdGVzdC0taGlzdG9yeS11cmxzKSB1cmwtaGlzdG9yeSkp CisgICAgICAoc2hvdWxkICg9IGV3dy1oaXN0b3J5LXBvc2l0aW9uIDIpKQorICAgICAgOzsg R28gYmFjayBhZ2Fpbi4KKyAgICAgIChld3ctYmFjay11cmwpCisgICAgICAoc2hvdWxkIChl cXVhbCAoZXd3LXRlc3QtLWhpc3RvcnktdXJscykgdXJsLWhpc3RvcnkpKQorICAgICAgKHNo b3VsZCAoPSBld3ctaGlzdG9yeS1wb3NpdGlvbiAzKSkKKyAgICAgIDs7IEF0IHRoZSBiZWdp bm5pbmcgb2YgdGhlIGhpc3RvcnksIHNvIHRyeWluZyB0byBnbyBiYWNrIHNob3VsZAorICAg ICAgOzsgc2lnbmFsIGFuIGVycm9yLgorICAgICAgKHNob3VsZC1lcnJvciAoZXd3LWJhY2st dXJsKSkKKyAgICAgIDs7IEdvIGZvcndhcmQgb25jZS4KKyAgICAgIChld3ctZm9yd2FyZC11 cmwpCisgICAgICAoc2hvdWxkIChlcXVhbCAoZXd3LXRlc3QtLWhpc3RvcnktdXJscykgdXJs LWhpc3RvcnkpKQorICAgICAgKHNob3VsZCAoPSBld3ctaGlzdG9yeS1wb3NpdGlvbiAyKSkK KyAgICAgIDs7IEdvIGZvcndhcmQgYWdhaW4uCisgICAgICAoZXd3LWZvcndhcmQtdXJsKQor ICAgICAgKHNob3VsZCAoZXF1YWwgKGV3dy10ZXN0LS1oaXN0b3J5LXVybHMpIHVybC1oaXN0 b3J5KSkKKyAgICAgIChzaG91bGQgKD0gZXd3LWhpc3RvcnktcG9zaXRpb24gMSkpCisgICAg ICA7OyBBdCB0aGUgZW5kIG9mIHRoZSBoaXN0b3J5LCBzbyB0cnlpbmcgdG8gZ28gZm9yd2Fy ZCBzaG91bGQKKyAgICAgIDs7IHNpZ25hbCBhbiBlcnJvci4KKyAgICAgIChzaG91bGQtZXJy b3IgKGV3dy1mb3J3YXJkLXVybCkpKSkpCisKKyhlcnQtZGVmdGVzdCBld3ctdGVzdC9oaXN0 b3J5L3JlbG9hZC1pbi1wbGFjZSAoKQorICAiVGVzdCB0aGF0IHJlbG9hZGluZyBoaXN0b3Jp Y2FsIHBhZ2VzIHVwZGF0ZXMgdGhlaXIgaGlzdG9yeSBlbnRyeSBpbi1wbGFjZS4KK1NlZSBi dWcjNjkyMzIuIgorICAoZXd3LXRlc3QtLXdpdGgtbW9jay1yZXRyaWV2ZQorICAgIChld3cg Im9uZS5pbnZhbGlkIikKKyAgICAoZXd3ICJ0d28uaW52YWxpZCIpCisgICAgKGV3dyAidGhy ZWUuaW52YWxpZCIpCisgICAgKGV3dy1iYWNrLXVybCkKKyAgICA7OyBNYWtlIHN1cmUgb3Vy IGhpc3RvcnkgaGFzIHRoZSBvcmlnaW5hbCBwYWdlIHRleHQuCisgICAgKHNob3VsZCAoZXF1 YWwgKHBsaXN0LWdldCAobnRoIDEgZXd3LWhpc3RvcnkpIDp0ZXh0KQorICAgICAgICAgICAg ICAgICAgICJodHRwOi8vdHdvLmludmFsaWQvIikpCisgICAgKHNob3VsZCAoPSBld3ctaGlz dG9yeS1wb3NpdGlvbiAyKSkKKyAgICA7OyBSZWxvYWQgdGhlIHBhZ2UuCisgICAgKGxldCAo KGV3dy10ZXN0LS1yZXNwb25zZS1mdW5jdGlvbgorICAgICAgICAgICAobGFtYmRhICh1cmwp IChjb25jYXQgIlxucmVsb2FkZWQgIiB1cmwpKSkpCisgICAgICAoZXd3LXJlbG9hZCkKKyAg ICAgIChzaG91bGQgKD0gZXd3LWhpc3RvcnktcG9zaXRpb24gMikpKQorICAgIDs7IEdvIHRv IGFub3RoZXIgcGFnZSwgYW5kIG1ha2Ugc3VyZSB0aGUgaGlzdG9yeSBpcyBjb3JyZWN0LAor ICAgIDs7IGluY2x1ZGluZyB0aGUgcmVsb2FkZWQgcGFnZSB0ZXh0LgorICAgIChld3cgImZv dXIuaW52YWxpZCIpCisgICAgKHNob3VsZCAoZXF1YWwgKGV3dy10ZXN0LS1oaXN0b3J5LXVy bHMpICcoImh0dHA6Ly90d28uaW52YWxpZC8iCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9vbmUuaW52YWxpZC8iKSkpCisgICAgKHNo b3VsZCAoZXF1YWwgKHBsaXN0LWdldCAobnRoIDAgZXd3LWhpc3RvcnkpIDp0ZXh0KQorICAg ICAgICAgICAgICAgICAgICJyZWxvYWRlZCBodHRwOi8vdHdvLmludmFsaWQvIikpCisgICAg KHNob3VsZCAoPSBld3ctaGlzdG9yeS1wb3NpdGlvbiAwKSkpKQorCisoZXJ0LWRlZnRlc3Qg ZXd3LXRlc3QvaGlzdG9yeS9iZWZvcmUtbmF2aWdhdGUvZGVsZXRlLWZ1dHVyZS1oaXN0b3J5 ICgpCisgICJUZXN0IHRoYXQgZ29pbmcgdG8gYSBuZXcgcGFnZSBmcm9tIGEgaGlzdG9yaWNh bCBvbmUgZGVsZXRlcyBmdXR1cmUgaGlzdG9yeS4KK1NlZSBidWcjNjkyMzIuIgorICAoZXd3 LXRlc3QtLXdpdGgtbW9jay1yZXRyaWV2ZQorICAgIChld3cgIm9uZS5pbnZhbGlkIikKKyAg ICAoZXd3ICJ0d28uaW52YWxpZCIpCisgICAgKGV3dyAidGhyZWUuaW52YWxpZCIpCisgICAg KGV3dy1iYWNrLXVybCkKKyAgICAoZXd3ICJmb3VyLmludmFsaWQiKQorICAgIChld3cgImZp dmUuaW52YWxpZCIpCisgICAgKHNob3VsZCAoZXF1YWwgKGV3dy10ZXN0LS1oaXN0b3J5LXVy bHMpICcoImh0dHA6Ly9mb3VyLmludmFsaWQvIgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vdHdvLmludmFsaWQvIgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vb25lLmludmFs aWQvIikpKQorICAgIChzaG91bGQgKD0gZXd3LWhpc3RvcnktcG9zaXRpb24gMCkpKSkKKwor KGVydC1kZWZ0ZXN0IGV3dy10ZXN0L2hpc3RvcnkvYmVmb3JlLW5hdmlnYXRlL2lnbm9yZS1o aXN0b3J5ICgpCisgICJUZXN0IHRoYXQgZ29pbmcgdG8gYSBuZXcgcGFnZSBmcm9tIGEgaGlz dG9yaWNhbCBvbmUgcHJlc2VydmVzIGhpc3RvcnkuCitUaGlzIHNldHMgYGV3dy1iZWZvcmUt YnJvd3NlLWhpc3RvcnktZnVuY3Rpb24nIHRvIGBpZ25vcmUnIHRvIHByZXNlcnZlCitoaXN0 b3J5LiAgU2VlIGJ1ZyM2OTIzMi4iCisgIChsZXQgKChld3ctYmVmb3JlLWJyb3dzZS1oaXN0 b3J5LWZ1bmN0aW9uICMnaWdub3JlKSkKKyAgICAoZXd3LXRlc3QtLXdpdGgtbW9jay1yZXRy aWV2ZQorICAgICAgKGV3dyAib25lLmludmFsaWQiKQorICAgICAgKGV3dyAidHdvLmludmFs aWQiKQorICAgICAgKGV3dyAidGhyZWUuaW52YWxpZCIpCisgICAgICAoZXd3LWJhY2stdXJs KQorICAgICAgKGV3dyAiZm91ci5pbnZhbGlkIikKKyAgICAgIChld3cgImZpdmUuaW52YWxp ZCIpCisgICAgICAoc2hvdWxkIChlcXVhbCAoZXd3LXRlc3QtLWhpc3RvcnktdXJscykgJygi aHR0cDovL2ZvdXIuaW52YWxpZC8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiaHR0cDovL3RocmVlLmludmFsaWQvIgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly90d28uaW52YWxp ZC8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi aHR0cDovL29uZS5pbnZhbGlkLyIpKSkKKyAgICAgIChzaG91bGQgKD0gZXd3LWhpc3Rvcnkt cG9zaXRpb24gMCkpKSkpCisKKyhlcnQtZGVmdGVzdCBld3ctdGVzdC9oaXN0b3J5L2JlZm9y ZS1uYXZpZ2F0ZS9jbG9uZS1wcmV2aW91cyAoKQorICAiVGVzdCB0aGF0IGdvaW5nIHRvIGEg bmV3IHBhZ2UgZnJvbSBhIGhpc3RvcmljYWwgb25lIGNsb25lcyBwcmlvciBoaXN0b3J5Lgor VGhpcyBzZXRzIGBld3ctYmVmb3JlLWJyb3dzZS1oaXN0b3J5LWZ1bmN0aW9uJyB0bworYGV3 dy1jbG9uZS1wcmV2aW91cy1oaXN0b3J5JyB0byBjbG9uZSB0aGUgaGlzdG9yeS4gIFNlZSBi dWcjNjkyMzIuIgorICAobGV0ICgoZXd3LWJlZm9yZS1icm93c2UtaGlzdG9yeS1mdW5jdGlv biAjJ2V3dy1jbG9uZS1wcmV2aW91cy1oaXN0b3J5KSkKKyAgICAoZXd3LXRlc3QtLXdpdGgt bW9jay1yZXRyaWV2ZQorICAgICAgKGV3dyAib25lLmludmFsaWQiKQorICAgICAgKGV3dyAi dHdvLmludmFsaWQiKQorICAgICAgKGV3dyAidGhyZWUuaW52YWxpZCIpCisgICAgICAoZXd3 LWJhY2stdXJsKQorICAgICAgKGV3dyAiZm91ci5pbnZhbGlkIikKKyAgICAgIChld3cgImZp dmUuaW52YWxpZCIpCisgICAgICAoc2hvdWxkIChlcXVhbCAoZXd3LXRlc3QtLWhpc3Rvcnkt dXJscykKKyAgICAgICAgICAgICAgICAgICAgICcoOzsgTmV3IHBhZ2UgYW5kIGNsb25lZCBo aXN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL2ZvdXIuaW52YWxpZC8i CisgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vdHdvLmludmFsaWQvIgorICAgICAg ICAgICAgICAgICAgICAgICAiaHR0cDovL29uZS5pbnZhbGlkLyIKKyAgICAgICAgICAgICAg ICAgICAgICAgOzsgT3JpZ2luYWwgaGlzdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAg Imh0dHA6Ly90aHJlZS5pbnZhbGlkLyIKKyAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6 Ly90d28uaW52YWxpZC8iCisgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vb25lLmlu dmFsaWQvIikpKQorICAgICAgKHNob3VsZCAoPSBld3ctaGlzdG9yeS1wb3NpdGlvbiAwKSkp KSkKKworKHByb3ZpZGUgJ2V3dy10ZXN0cykKKzs7IGV3dy10ZXN0cy5lbCBlbmRzIGhlcmUK LS0gCjIuMjUuMQoK --------------C5T9UISQ3TNjfLiF0tUzqaQw--