From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Mauro Aranda Newsgroups: gmane.emacs.bugs Subject: bug#5358: 23.1; Adding comment loses customizations in progress Date: Fri, 6 Sep 2019 11:47:57 -0300 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000d990990591e38626" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="127668"; mail-complaints-to="usenet@blaine.gmane.org" Cc: dave@boostpro.com, ahyatt@gmail.com To: 5358@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Sep 06 16:50:03 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1i6FYp-000X4H-48 for geb-bug-gnu-emacs@m.gmane.org; Fri, 06 Sep 2019 16:50:03 +0200 Original-Received: from localhost ([::1]:57158 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i6FYm-0001fN-Mz for geb-bug-gnu-emacs@m.gmane.org; Fri, 06 Sep 2019 10:50:00 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:58113) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i6FXs-00010h-Bq for bug-gnu-emacs@gnu.org; Fri, 06 Sep 2019 10:49:05 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i6FXq-0005iz-QW for bug-gnu-emacs@gnu.org; Fri, 06 Sep 2019 10:49:04 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:56668) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1i6FXq-0005it-N0 for bug-gnu-emacs@gnu.org; Fri, 06 Sep 2019 10:49:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1i6FXq-0002b0-FR for bug-gnu-emacs@gnu.org; Fri, 06 Sep 2019 10:49:02 -0400 X-Loop: help-debbugs@gnu.org In-Reply-To: Resent-From: Mauro Aranda Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 06 Sep 2019 14:49:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 5358 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: confirmed Original-Received: via spool by 5358-submit@debbugs.gnu.org id=B5358.15677812989925 (code B ref 5358); Fri, 06 Sep 2019 14:49:02 +0000 Original-Received: (at 5358) by debbugs.gnu.org; 6 Sep 2019 14:48:18 +0000 Original-Received: from localhost ([127.0.0.1]:37256 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1i6FX7-0002a0-I0 for submit@debbugs.gnu.org; Fri, 06 Sep 2019 10:48:17 -0400 Original-Received: from mail-lj1-f181.google.com ([209.85.208.181]:40554) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1i6FX5-0002Zm-Rt for 5358@debbugs.gnu.org; Fri, 06 Sep 2019 10:48:16 -0400 Original-Received: by mail-lj1-f181.google.com with SMTP id 7so6236127ljw.7 for <5358@debbugs.gnu.org>; Fri, 06 Sep 2019 07:48:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to:cc; bh=VVFQd42L/X9H8T3XB8nxpQRX7vpPVP1f9uoop+cOpUA=; b=c2yqrOq7sMfUb6QHQIK4ZY9ZcVKpz/Ns8Yck6V9OVbFuO5UMSeiuOXU7ZjvggORKt/ JMZb7S45gRaFxcbrowmfzoEJplGOEefjVCOHJ6AAgR2ysm0uu536HunRROvjwLM7p6Jr Km9IB6pSFTpAa6H7CK/iTsJITrOSvriUcv7J11qgP9sTdBkqFVrC02Ri3Fb6RMg5EIwU XVwqFhLu1tsWUIAdBRGvZKtxTDlTSNRGSMkq0KQsKtK/Byxja2E2V5xFRNRznEEalhZd c5ZB9R2jDtmMH/wWoKjqwR+5k374jheTtC1dcKG2hrAZ1gETJP0nPagicYRwmxUSNkT7 PPLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=VVFQd42L/X9H8T3XB8nxpQRX7vpPVP1f9uoop+cOpUA=; b=Da025jckoUpghMFcOxR8QTCW/InUAhvDIyO9J7av72s7SwcVssMTBqj/DHAeIxuRxh CfQx3EPehWWPVRGGvJfbV3LRyWVA3lSaCiCkBhEv/IWXZwyYdhfFdeg34AtUy96CreA+ DLRdfDzpaVDUvISoP2rsJKuKXucaw642B+Gu5B9ublTQJxM1NvItzBW1GTrdJZmp7uQQ gbPsS2aERJwd137M2PcU9d2dQTE6pUPOW4IXyuIObEIVHyENbiu1RbC1gqoaP/SXJ3f/ 6G9sBSVln2wPDXjIxUrSo+jlrjPqM4k9yEXPK3A7Nxj/ho6rN6c6hVKTm7JNEb28/pG7 7h/A== X-Gm-Message-State: APjAAAWl66hWYiYwAfk12rv0tgQ0IDecR5rL4tP95TYtYfeiULf/iqPe Frjkwesc7o+Mw/2GUKmLFxE+eyTBJTDBuYzAwkM8ZvYm X-Google-Smtp-Source: APXvYqy8l51P0AalZAPcMDV0P2Vh1m4lOeXJR9N4N1OYUJHtx/Hap7e016aT5kWXqp03xp0f3Y0suZk11NMHV7nB0vw= X-Received: by 2002:a2e:9586:: with SMTP id w6mr5692833ljh.47.1567781289553; Fri, 06 Sep 2019 07:48:09 -0700 (PDT) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:166249 Archived-At: --000000000000d990990591e38626 Content-Type: multipart/alternative; boundary="000000000000d990960591e38624" --000000000000d990960591e38624 Content-Type: text/plain; charset="UTF-8" The possibility to preserve the customizations in progress is already present in the customize machinery, but for some reason it wasn't used in this case. I propose a patch that makes use of the :shown-value property of the custom-variable and custom-face widgets, thus allowing to preserve the customizations in progress when redrawing a widget. Since after redrawing customize recomputes the state of the widget, it is necessary to check if the widget was modified. That isn't possible with `custom-variable-state' or `custom-face-state', because they are pretty "widget unaware". So I added a check in `custom-variable-state-set' and `custom-face-state-set' to catch this situation. Finally, to be able to use the value of the widget in `custom-face-state-set', it is necessary to rearrange the final part of `custom-face-value-create'. Namely, add the children to the :children property, before calling `custom-face-state-set'. Best regards, Mauro. --000000000000d990960591e38624 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
The possibility to preserve the customizations in progress= is already
present in the customize machinery, but for some reason it w= asn't used
in this case.

I propose a patch that makes use of = the :shown-value property of the
custom-variable and custom-face widgets= , thus allowing to preserve the
customizations in progress when redrawin= g a widget.

Since after redrawing customize recomputes the state of = the widget, it
is necessary to check if the widget was modified.=C2=A0 T= hat isn't
possible with `custom-variable-state' or `custom-face-= state',
because they are pretty "widget unaware".=C2=A0 So= I added a check in
`custom-variable-state-set' and `custom-face-sta= te-set' to catch this
situation.

Finally, to be able to use t= he value of the widget in
`custom-face-state-set', it is necessary t= o rearrange the final part of
`custom-face-value-create'.=C2=A0 Name= ly, add the children to the :children
property, before calling `custom-f= ace-state-set'.

Best regards,
Mauro.
--000000000000d990960591e38624-- --000000000000d990990591e38626 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Don-t-discard-customizations-in-progress-when-adding.patch" Content-Disposition: attachment; filename="0001-Don-t-discard-customizations-in-progress-when-adding.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k087cpb80 RnJvbSBkMjY1NmM3ZGE5N2FjZjY4OWVjMTJmMWZkZTQ5NmU2MDhkOGU5MGZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXVybyBBcmFuZGEgPG1hdXJvb2FyYW5kYUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgNiBTZXAgMjAxOSAwOTo1NTozOSAtMDMwMApTdWJqZWN0OiBbUEFUQ0hdIERv bid0IGRpc2NhcmQgY3VzdG9taXphdGlvbnMgaW4gcHJvZ3Jlc3Mgd2hlbiBhZGRpbmcgY29tbWVu dHMKIChCdWcjNTM1OCkKCiogbGlzcC9jdXMtZWRpdC5lbCAoY3VzdG9tLWNvbW1lbnQtc2hvdyk6 IEFkZCBkb2NzdHJpbmcuICBTYXZlIHRoZQp3aWRnZXQgdmFsdWUgaW4gdGhlIDpzaG93bi12YWx1 ZSBwcm9wZXJ0eSwgYmVmb3JlIHJlZHJhd2luZy4KKGN1c3RvbS12YXJpYWJsZS1tb2RpZmllZC1w KTogTmV3IGZ1bmN0aW9uLCB0byBjb21wbGVtZW50IHRoZSByZXR1cm4KdmFsdWVzIG9mIGN1c3Rv bS12YXJpYWJsZS1zdGF0ZS4KKGN1c3RvbS12YXJpYWJsZS1zdGF0ZS1zZXQpOiBVc2UgaXQuCihj dXN0b20tZmFjZS12YWx1ZS1jcmVhdGUpOiBBZGQgY2hpbGRyZW4gdG8gdGhlIGN1c3RvbS1mYWNl IHdpZGdldApiZWZvcmUgc2V0dGluZyB0aGUgc3RhdGUsIHRvIGJlIGFibGUgdG8gY2hlY2sgZm9y IHVzZXIgZWRpdHMuCihjdXN0b20tZmFjZS1zdGF0ZS1zZXQpOiBDaGVjayBmb3IgdXNlciBlZGl0 cyBiZWZvcmUgY2FsbGluZwpjdXN0b20tZmFjZS1zdGF0ZS4KLS0tCiBsaXNwL2N1cy1lZGl0LmVs IHwgNjMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA1MSBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9saXNwL2N1cy1lZGl0LmVsIGIvbGlzcC9jdXMtZWRpdC5lbAppbmRleCA4 YThiYWQ5Li42MGU2OTk2IDEwMDY0NAotLS0gYS9saXNwL2N1cy1lZGl0LmVsCisrKyBiL2xpc3Av Y3VzLWVkaXQuZWwKQEAgLTI0MTEsOSArMjQxMSwyMSBAQCBjdXN0b20tY29tbWVudC1oaWRlCiA7 OyBUaG9zZSBmdW5jdGlvbnMgYXJlIGZvciB0aGUgbWVudS4gV0lER0VUIGlzIE5PVCB0aGUgY29t bWVudCB3aWRnZXQuIEl0J3MKIDs7IHRoZSBnbG9iYWwgY3VzdG9tIG9uZQogKGRlZnVuIGN1c3Rv bS1jb21tZW50LXNob3cgKHdpZGdldCkKLSAgKHdpZGdldC1wdXQgd2lkZ2V0IDpjb21tZW50LXNo b3duIHQpCi0gIChjdXN0b20tcmVkcmF3IHdpZGdldCkKLSAgKHdpZGdldC1zZXR1cCkpCisgICJT aG93IHRoZSBjb21tZW50IGVkaXRhYmxlIGZpZWxkIHRoYXQgYmVsb25ncyB0byBXSURHRVQuIgor ICAobGV0ICgoY2hpbGQgKGNhciAod2lkZ2V0LWdldCB3aWRnZXQgOmNoaWxkcmVuKSkpCisgICAg ICAgIDs7IEp1c3QgdG8gYmUgc2FmZSwgd2Ugd2lsbCByZXN0b3JlIHRoaXMgdmFsdWUgYWZ0ZXIg cmVkcmF3aW5nLgorICAgICAgICAob2xkLXNob3duLXZhbHVlICh3aWRnZXQtZ2V0IHdpZGdldCA6 c2hvd24tdmFsdWUpKSkKKyAgICAod2lkZ2V0LXB1dCB3aWRnZXQgOmNvbW1lbnQtc2hvd24gdCkK KyAgICA7OyBTYXZlIHRoZSBjaGFuZ2VzIG1hZGUgYnkgdGhlIHVzZXIgYmVmb3JlIHJlZHJhd2lu ZywgdG8gYXZvaWQKKyAgICA7OyBsb3NpbmcgY3VzdG9taXphdGlvbnMgaW4gcHJvZ3Jlc3MuICAo QnVnIzUzNTgpCisgICAgKGlmIChlcSAod2lkZ2V0LXR5cGUgd2lkZ2V0KSAnY3VzdG9tLWZhY2Up CisgICAgICAgIChpZiAoZXEgKHdpZGdldC10eXBlIGNoaWxkKSAnY3VzdG9tLWZhY2UtZWRpdCkK KyAgICAgICAgICAgICh3aWRnZXQtcHV0IHdpZGdldCA6c2hvd24tdmFsdWUgYCgodCAsKHdpZGdl dC12YWx1ZSBjaGlsZCkpKSkKKyAgICAgICAgICAod2lkZ2V0LXB1dCB3aWRnZXQgOnNob3duLXZh bHVlICh3aWRnZXQtdmFsdWUgY2hpbGQpKSkKKyAgICAgICh3aWRnZXQtcHV0IHdpZGdldCA6c2hv d24tdmFsdWUgKGxpc3QgKHdpZGdldC12YWx1ZSBjaGlsZCkpKSkKKyAgICAoY3VzdG9tLXJlZHJh dyB3aWRnZXQpCisgICAgKHdpZGdldC1wdXQgd2lkZ2V0IDpzaG93bi12YWx1ZSBvbGQtc2hvd24t dmFsdWUpCisgICAgKHdpZGdldC1zZXR1cCkpKQogCiAoZGVmdW4gY3VzdG9tLWNvbW1lbnQtaW52 aXNpYmxlLXAgKHdpZGdldCkKICAgKGxldCAoKHZhbCAod2lkZ2V0LXZhbHVlICh3aWRnZXQtZ2V0 IHdpZGdldCA6Y29tbWVudC13aWRnZXQpKSkpCkBAIC0yODA1LDEyICsyODE3LDM0IEBAIGN1c3Rv bS12YXJpYWJsZS1zdGF0ZQogCSAgICAgJ2NoYW5nZWQpKQogCSAgKHQgJ3JvZ3VlKSkpKQogCiso ZGVmdW4gY3VzdG9tLXZhcmlhYmxlLW1vZGlmaWVkLXAgKHdpZGdldCkKKyAgIk5vbi1uaWwgaWYg dGhlIHZhcmlhYmxlIHZhbHVlIG9mIFdJREdFVCBoYXMgYmVlbiBtb2RpZmllZC4KK1dJREdFVCBz aG91bGQgYmUgYSBjdXN0b20tdmFyaWFibGUgd2lkZ2V0LCB3aG9zZSBmaXJzdCBjaGlsZCBpcyB0 aGUgd2lkZ2V0Cit0aGF0IGhvbGRzIHRoZSB2YWx1ZS4KK01vZGlmaWVkIG1lYW5zIHRoYXQgdGhl IHdpZGdldCB0aGF0IGhvbGRzIHRoZSB2YWx1ZSBoYXMgYmVlbiBlZGl0ZWQgYnkgdGhlIHVzZXIK K2luIGEgY3VzdG9taXplIGJ1ZmZlci4KK1RvIGNoZWNrIGZvciBvdGhlciBzdGF0ZXMsIGNhbGwg YGN1c3RvbS12YXJpYWJsZS1zdGF0ZScuIgorICAoY29uZGl0aW9uLWNhc2UgbmlsCisgICAgICAo bGV0KiAoKHN5bWJvbCAod2lkZ2V0LWdldCB3aWRnZXQgOnZhbHVlKSkKKyAgICAgICAgICAgICAo Z2V0IChvciAoZ2V0IHN5bWJvbCAnY3VzdG9tLWdldCkgJ2RlZmF1bHQtdmFsdWUpKQorICAgICAg ICAgICAgICh2YWx1ZSAoaWYgKGRlZmF1bHQtYm91bmRwIHN5bWJvbCkKKyAgICAgICAgICAgICAg ICAgICAgICAgIChmdW5jYWxsIGdldCBzeW1ib2wpCisgICAgICAgICAgICAgICAgICAgICAgKHN5 bWJvbC12YWx1ZSBzeW1ib2wpKSkpCisgICAgICAgIChub3QgKGVxdWFsIHZhbHVlICh3aWRnZXQt dmFsdWUgKGNhciAod2lkZ2V0LWdldCB3aWRnZXQgOmNoaWxkcmVuKSkpKSkpCisgICAgKGVycm9y IHQpKSkKKwogKGRlZnVuIGN1c3RvbS12YXJpYWJsZS1zdGF0ZS1zZXQgKHdpZGdldCAmb3B0aW9u YWwgc3RhdGUpCiAgICJTZXQgdGhlIHN0YXRlIG9mIFdJREdFVCB0byBTVEFURS4KLUlmIFNUQVRF IGlzIG5pbCwgdGhlIHZhbHVlIGlzIGNvbXB1dGVkIGJ5IGBjdXN0b20tdmFyaWFibGUtc3RhdGUn LiIKK0lmIFNUQVRFIGlzIG5pbCwgdGhlIG5ldyBzdGF0ZSBpcyBjb21wdXRlZCBieSBgY3VzdG9t LXZhcmlhYmxlLW1vZGlmaWVkLXAnIGlmCitXSURHRVQgaGFzIGJlZW4gZWRpdGVkIGluIHRoZSBD dXN0b20gYnVmZmVyLCBvciBieSBgY3VzdG9tLXZhcmlhYmxlLXN0YXRlJworb3RoZXJ3aXNlLiIK ICAgKHdpZGdldC1wdXQgd2lkZ2V0IDpjdXN0b20tc3RhdGUKLQkgICAgICAob3Igc3RhdGUgKGN1 c3RvbS12YXJpYWJsZS1zdGF0ZSAod2lkZ2V0LXZhbHVlIHdpZGdldCkKLQkJCQkJICAgICAgICh3 aWRnZXQtZ2V0IHdpZGdldCA6dmFsdWUpKSkpKQorCSAgICAgIChvciBzdGF0ZQorICAgICAgICAg ICAgICAgICAgKGFuZCAoY3VzdG9tLXZhcmlhYmxlLW1vZGlmaWVkLXAgd2lkZ2V0KSAnbW9kaWZp ZWQpCisgICAgICAgICAgICAgICAgICAoY3VzdG9tLXZhcmlhYmxlLXN0YXRlICh3aWRnZXQtdmFs dWUgd2lkZ2V0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2lk Z2V0LXZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2Fy CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpZGdldC1nZXQg d2lkZ2V0IDpjaGlsZHJlbikpKSkpKSkKIAogKGRlZnVuIGN1c3RvbS12YXJpYWJsZS1zdGFuZGFy ZC12YWx1ZSAod2lkZ2V0KQogICAoZ2V0ICh3aWRnZXQtdmFsdWUgd2lkZ2V0KSAnc3RhbmRhcmQt dmFsdWUpKQpAQCAtMzYzMCw5ICszNjY0LDkgQEAgY3VzdG9tLWZhY2UtdmFsdWUtY3JlYXRlCiAJ CSAgICAoaW5zZXJ0LWNoYXIgP1xzIGluZGVudCkpCiAJCSAgKHdpZGdldC1jcmVhdGUtY2hpbGQt YW5kLWNvbnZlcnQKIAkJICAgd2lkZ2V0ICdzZXhwIDp2YWx1ZSBzcGVjKSkpKQotCSAgKGN1c3Rv bS1mYWNlLXN0YXRlLXNldCB3aWRnZXQpCi0JICAocHVzaCBlZGl0b3IgY2hpbGRyZW4pCi0JICAo d2lkZ2V0LXB1dCB3aWRnZXQgOmNoaWxkcmVuIGNoaWxkcmVuKSkpKSkpCisgICAgICAgICAgKHB1 c2ggZWRpdG9yIGNoaWxkcmVuKQorICAgICAgICAgICh3aWRnZXQtcHV0IHdpZGdldCA6Y2hpbGRy ZW4gY2hpbGRyZW4pCisJICAoY3VzdG9tLWZhY2Utc3RhdGUtc2V0IHdpZGdldCkpKSkpKQogCiAo ZGVmdmFyIGN1c3RvbS1mYWNlLW1lbnUKICAgYCgoIlNldCBmb3IgQ3VycmVudCBTZXNzaW9uIiBj dXN0b20tZmFjZS1zZXQpCkBAIC0zNzE4LDkgKzM3NTIsMTQgQEAgY3VzdG9tLWZhY2Utc3RhdGUK ICAgICAgIHN0YXRlKSkpCiAKIChkZWZ1biBjdXN0b20tZmFjZS1zdGF0ZS1zZXQgKHdpZGdldCkK LSAgIlNldCB0aGUgc3RhdGUgb2YgV0lER0VULiIKLSAgKHdpZGdldC1wdXQgd2lkZ2V0IDpjdXN0 b20tc3RhdGUKLQkgICAgICAoY3VzdG9tLWZhY2Utc3RhdGUgKHdpZGdldC12YWx1ZSB3aWRnZXQp KSkpCisgICJTZXQgdGhlIHN0YXRlIG9mIFdJREdFVCwgYSBjdXN0b20tZmFjZSB3aWRnZXQuCitJ ZiB0aGUgdXNlciBlZGl0ZWQgdGhlIHdpZGdldCwgc2V0IHRoZSBzdGF0ZSB0byBtb2RpZmllZC4g IElmIG5vdCwgdGhlIG5ldworc3RhdGUgaXMgb25lIG9mIHRoZSByZXR1cm4gdmFsdWVzIG9mIGBj dXN0b20tZmFjZS1zdGF0ZScuIgorICAobGV0ICgoZmFjZSAod2lkZ2V0LXZhbHVlIHdpZGdldCkp KQorICAgICh3aWRnZXQtcHV0IHdpZGdldCA6Y3VzdG9tLXN0YXRlCisgICAgICAgICAgICAgICAg KGlmIChmYWNlLXNwZWMtbWF0Y2gtcCBmYWNlIChjdXN0b20tZmFjZS13aWRnZXQtdG8tc3BlYyB3 aWRnZXQpKQorICAgICAgICAgICAgICAgICAgICAoY3VzdG9tLWZhY2Utc3RhdGUgZmFjZSkKKyAg ICAgICAgICAgICAgICAgICdtb2RpZmllZCkpKSkKIAogKGRlZnVuIGN1c3RvbS1mYWNlLWFjdGlv biAod2lkZ2V0ICZvcHRpb25hbCBldmVudCkKICAgIlNob3cgdGhlIG1lbnUgZm9yIGBjdXN0b20t ZmFjZScgV0lER0VULgotLSAKMi43LjQKCg== --000000000000d990990591e38626--