From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Mauro Aranda Newsgroups: gmane.emacs.bugs Subject: bug#66663: 30.0.50; Allow dir locals file selection in *-dir-local-variable functions Date: Sat, 21 Oct 2023 19:10:10 -0300 Message-ID: <8b4f9985-6bde-40e8-bd89-e74084e823a5@gmail.com> References: <03e5c99d-f900-4c8f-88b3-e7b458c0c777@gmail.com> <83o7gsqh3i.fsf@gnu.org> <514ef416-843b-4b80-abcf-cb4621b4b58d@gmail.com> <86zg0bu99e.fsf@mail.linkov.net> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------4cCsFCOpWGQc5mFRdJvqeu93" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="14800"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla Thunderbird Cc: Eli Zaretskii , 66663@debbugs.gnu.org To: Juri Linkov Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Oct 22 00:11:03 2023 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 1quKBR-0003gS-BG for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 22 Oct 2023 00:11:01 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1quKB4-0006PF-33; Sat, 21 Oct 2023 18:10:38 -0400 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 1quKB2-0006P2-29 for bug-gnu-emacs@gnu.org; Sat, 21 Oct 2023 18:10:36 -0400 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 1quKB0-0006eC-CJ for bug-gnu-emacs@gnu.org; Sat, 21 Oct 2023 18:10:34 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1quKBS-0000o7-1E for bug-gnu-emacs@gnu.org; Sat, 21 Oct 2023 18:11:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Mauro Aranda Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 21 Oct 2023 22:11:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66663 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 66663-submit@debbugs.gnu.org id=B66663.16979262543088 (code B ref 66663); Sat, 21 Oct 2023 22:11:01 +0000 Original-Received: (at 66663) by debbugs.gnu.org; 21 Oct 2023 22:10:54 +0000 Original-Received: from localhost ([127.0.0.1]:45199 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1quKBJ-0000nk-Qq for submit@debbugs.gnu.org; Sat, 21 Oct 2023 18:10:54 -0400 Original-Received: from mail-ot1-x331.google.com ([2607:f8b0:4864:20::331]:53638) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1quKBE-0000nQ-3j for 66663@debbugs.gnu.org; Sat, 21 Oct 2023 18:10:52 -0400 Original-Received: by mail-ot1-x331.google.com with SMTP id 46e09a7af769-6cd09663b1cso1323045a34.3 for <66663@debbugs.gnu.org>; Sat, 21 Oct 2023 15:10:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697926214; x=1698531014; darn=debbugs.gnu.org; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=nwQys1N4XcRitS+FiYeTK25EGCO0N5+HV7PWyO0eyL8=; b=cNj6vUYN+1BDDZ27fpqepkFs0fGJv2S80/oukW35GGzZtZzpkJUpbixzbG+cLCQx1N d8GvwgFHZ4e+w+nqF3AQDybHbTIPrzJFTa1lDQ/h4VfUE0u9DVEtOLYtbViCRfIAoOaL 0FJLzMl9o5m70elzTTae8jZcu8orU/57qoOxpdbGf4T3J0L22wVvWdxjvExMagi2Gtko 8tqbJbQqXBw9hUXYooPBDzP+t4IxvhN8UU/ucqoD+tuF69ibmJ8vX3CnuQoO8tLhNAAe f+yGAH7n0wgBXQVqXxAhLRKlpzS4AJNQXEdup5GaIjHlYzszrelMgiXRD3h6MDFatdMO RDmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697926214; x=1698531014; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=nwQys1N4XcRitS+FiYeTK25EGCO0N5+HV7PWyO0eyL8=; b=r0cwXFBPBwBCanwOdosZ4FlqxqqqH2xh01WGxX2y5cAvIl4XprIHinhhX4cE/Hnb7D M41GDDSJ5AwsqYFmzm/dx9Wv/KHM2fHgI1nii2fChcPMuzUWx3IuuTwwqfGCGsj2AvaK qd8WcjssvT8YpW4sD61jefKJkvAMPfT363AvTCuc8QbXBT9QeNJiogC+UbTdoJeUj5eS +6nLG0BGeNqw5uI74xdC+7K2E5FKdBfqTMBnDPh3pJU4mxGXZgyhQOnfUwQMQOqWETgF 33mKWsjUVigFxsB9KMh7wcPAiV1I+wQWkaDjnOSJ7whps/+YV5FkCAD9ifzTl0iQsCh7 oxEQ== X-Gm-Message-State: AOJu0Yx+xrIlPEZw+ZnfqnI7GBRdwUI35WGZ7d+UN3LiEfa+sviVqwh5 OoLFmkhvxNjS9uiBV6NyLgY= X-Google-Smtp-Source: AGHT+IG1KGoFh+0RRM/E2rEwq+VdWfi4O5Xk6oSr4dhHht/3AXglPETdkHATCEPJzQSgLCqj+J4ldA== X-Received: by 2002:a05:6358:4404:b0:139:d5b9:87d3 with SMTP id z4-20020a056358440400b00139d5b987d3mr5601723rwc.5.1697926214135; Sat, 21 Oct 2023 15:10:14 -0700 (PDT) Original-Received: from [192.168.0.234] ([152.168.142.156]) by smtp.gmail.com with ESMTPSA id a14-20020aa7970e000000b0069353ac3d38sm3693913pfg.69.2023.10.21.15.10.12 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 21 Oct 2023 15:10:13 -0700 (PDT) Content-Language: en-US In-Reply-To: <86zg0bu99e.fsf@mail.linkov.net> 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:272941 Archived-At: This is a multi-part message in MIME format. --------------4cCsFCOpWGQc5mFRdJvqeu93 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 21/10/23 15:21, Juri Linkov wrote: >> +(defun read-dir-locals-file () >> +  "Read a dir-locals filename using completion. >> +Intended to be used in the `interactive' spec of `add-dir-local-variable', >> +`delete-dir-local-variable' and `copy-file-locals-to-dir-locals'. >> + >> +Returns the filename, expanded." >> +  (expand-file-name >> +   (read-file-name "File" nil nil > > The prompt needs a colon. Fixed. >> +                   (lambda (fname) >> +                     (member (file-name-nondirectory fname) >> +                             (list dir-locals-file >> + (replace-regexp-in-string >> +                                    ".el$" "-2.el" dir-locals-file)))) >> +                   dir-locals-file))) > > This needs to be run in the project's root directory > where the dir-locals file is saved.  Probably it's not easy > to find the root without using project.el.  But when one of the > files already exists (either .dir-locals.el or .dir-locals-2.el), > then better to use the directory of the existing file by default. In this new patch, I went for using it if already available and we couldn't find an existing file by other means. --------------4cCsFCOpWGQc5mFRdJvqeu93 Content-Type: text/x-patch; charset=UTF-8; name="0001-Allow-specifying-the-dir-locals-file-to-edit-Bug-666.patch" Content-Disposition: attachment; filename*0="0001-Allow-specifying-the-dir-locals-file-to-edit-Bug-666.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA4YTA4NDU1N2NhNDY0N2U4MmVmZmM3MDA3OTc0YWMxYjFjNjZhMjdhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXVybyBBcmFuZGEgPG1hdXJvb2FyYW5kYUBnbWFp bC5jb20+CkRhdGU6IFNhdCwgMjEgT2N0IDIwMjMgMTE6MDI6MzYgLTAzMDAKU3ViamVjdDog W1BBVENIXSBBbGxvdyBzcGVjaWZ5aW5nIHRoZSBkaXIgbG9jYWxzIGZpbGUgdG8gZWRpdCAo QnVnIzY2NjYzKQoKKiBsaXNwL2ZpbGVzLXguZWwgKG1vZGlmeS1kaXItbG9jYWwtdmFyaWFi bGUpOiBUYWtlIGEgNXRoIG9wdGlvbmFsCmFyZ3VtZW50LCB0aGUgZmlsZW5hbWUgb2YgdGhl IGRpciBsb2NhbHMgZmlsZSB0byBtb2RpZnkuCihyZWFkLWRpci1sb2NhbHMtZmlsZSk6IE5l dyBmdW5jdGlvbi4KKGFkZC1kaXItbG9jYWwtdmFyaWFibGUsIGRlbGV0ZS1kaXItbG9jYWwt dmFyaWFibGUpCihjb3B5LWZpbGUtbG9jYWxzLXRvLWRpci1sb2NhbHMpOiBPcHRpb25hbGx5 IHJlYWQgdGhlIGZpbGVuYW1lIHRvCm1vZGlmeSwgYW5kIHBhc3MgaXQgdG8gbW9kaWZ5LWRp ci1sb2NhbC12YXJpYWJsZS4KKiBldGMvTkVXUzogQW5ub3VuY2UgdGhlIGNoYW5nZS4KKiBk b2MvZW1hY3MvY3VzdG9tLnRleGkgKERpcmVjdG9yeSBWYXJpYWJsZXMpOiBEb2N1bWVudCB0 aGUgbmV3CmZ1bmN0aW9uYWxpdHkuCi0tLQogZG9jL2VtYWNzL2N1c3RvbS50ZXhpIHwgICA4 ICsrLQogZXRjL05FV1MgICAgICAgICAgICAgIHwgIDEwICsrKysKIGxpc3AvZmlsZXMteC5l bCAgICAgICB8IDExNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0KIDMgZmlsZXMgY2hhbmdlZCwgMTAyIGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RvYy9lbWFjcy9jdXN0b20udGV4aSBiL2RvYy9lbWFjcy9jdXN0 b20udGV4aQppbmRleCA4YzMwZjI2YmJmNy4uYWRlY2M4NzMxNjMgMTAwNjQ0Ci0tLSBhL2Rv Yy9lbWFjcy9jdXN0b20udGV4aQorKysgYi9kb2MvZW1hY3MvY3VzdG9tLnRleGkKQEAgLTE1 MDcsNyArMTUwNywxMyBAQCBEaXJlY3RvcnkgVmFyaWFibGVzCiBlbnRyeSBkZWZpbmluZyB0 aGUgZGlyZWN0b3J5LWxvY2FsIHZhcmlhYmxlLiAgQGtiZHtNLXgKIGRlbGV0ZS1kaXItbG9j YWwtdmFyaWFibGV9IGRlbGV0ZXMgYW4gZW50cnkuICBAa2Jke00teAogY29weS1maWxlLWxv Y2Fscy10by1kaXItbG9jYWxzfSBjb3BpZXMgdGhlIGZpbGUtbG9jYWwgdmFyaWFibGVzIGlu IHRoZQotY3VycmVudCBmaWxlIGludG8gQGZpbGV7LmRpci1sb2NhbHMuZWx9LgorY3VycmVu dCBmaWxlIGludG8gQGZpbGV7LmRpci1sb2NhbHMuZWx9LCBvciBAZmlsZXsuZGlyLWxvY2Fs cy0yLmVsfSBpZgordGhhdCBmaWxlIGlzIGFsc28gcHJlc2VudC4KKworV2l0aCBhIHByZWZp eCBhcmd1bWVudCwgYWxsIHRocmVlIGNvbW1hbmRzIHByb21wdCBmb3IgdGhlIGZpbGUgeW91 Cit3YW50IHRvIG1vZGlmeS4gIEFsdGhvdWdoIGl0IGRvZXNuJ3QgaGF2ZSB0byBleGlzdCwg eW91IG11c3QgZW50ZXIgYQordmFsaWQgZmlsZW5hbWUsIGVpdGhlciBAZmlsZXsuZGlyLWxv Y2Fscy5lbH0gb3IKK0BmaWxley5kaXItbG9jYWxzLTIuZWx9LgogCiBAZmluZGV4IGRpci1s b2NhbHMtc2V0LWNsYXNzLXZhcmlhYmxlcwogQGZpbmRleCBkaXItbG9jYWxzLXNldC1kaXJl Y3RvcnktY2xhc3MKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MKaW5kZXggNWQ0 MmQ4OGZiNjAuLmEzNjM5NjIwZWJiIDEwMDY0NAotLS0gYS9ldGMvTkVXUworKysgYi9ldGMv TkVXUwpAQCAtMTg3LDYgKzE4NywxMSBAQCByaWdodC1hbGlnbmVkIHRvIGlzIGNvbnRyb2xs ZWQgYnkgdGhlIG5ldyB1c2VyIG9wdGlvbgogSXQgY2FuIGJlIHVzZWQgdG8gYWRkLCByZW1v dmUgYW5kIHJlb3JkZXIgZnVuY3Rpb25zIHRoYXQgY2hhbmdlCiB0aGUgYXBwZWFyYW5jZSBv ZiBldmVyeSB0YWIgb24gdGhlIHRhYiBiYXIuCiAKKysrKworKiogTmV3IG9wdGlvbmFsIGFy Z3VtZW50IGZvciBtb2RpZnlpbmcgZGlyZWN0b3J5IGxvY2FsIHZhcmlhYmxlcworVGhlIGNv bW1hbmRzICdhZGQtZGlyLWxvY2FsLXZhcmlhYmxlJywgJ2RlbGV0ZS1kaXItbG9jYWwtdmFy aWFibGUnIGFuZAorJ2NvcHktZmlsZS1sb2NhbHMtdG8tZGlyLWxvY2Fscycgbm93IHRha2Ug YW4gb3B0aW9uYWwgcHJlZml4IGFyZ3VtZW50LAordG8gZW50ZXIgdGhlIGZpbGUgeW91IHdh bnQgdG8gbW9kaWZ5LgogKiogTWlzY2VsbGFuZW91cwogCiAtLS0KQEAgLTEzNTgsNiArMTM2 MywxMSBAQCBUaGVpciAnbm9lcnJvcicgYXJndW1lbnRzIGhhdmUgbm8gZWZmZWN0IGFuZCBh cmUgdGhlcmVmb3JlIG9ic29sZXRlLgogV2hlbiBzdXBwbGllZCB3aXRoICc6ZGVmYXVsdC1s YW5ndWFnZSBMQU5HVUFHRScsIHJ1bGVzIGFmdGVyIGl0IHdpbGwKIGRlZmF1bHQgdG8gdXNl ICdMQU5HVUFHRScuCiAKKy0tLQorKiogTmV3IG9wdGlvbmFsIGFyZ3VtZW50IHRvICdtb2Rp ZnktZGlyLWxvY2FsLXZhcmlhYmxlJworQSA1dGggYXJndW1lbnQsIG9wdGlvbmFsLCBoYXMg YmVlbiBhZGRlZCB0bworJ21vZGlmeS1kaXItbG9jYWwtdmFyaWFibGUnLiAgSXQgY2FuIGJl IHVzZWQgdG8gc3BlY2lmeSB3aGljaAorZGlyLWxvY2FscyBmaWxlIHRvIG1vZGlmeS4KIAwK ICogQ2hhbmdlcyBpbiBFbWFjcyAzMC4xIG9uIE5vbi1GcmVlIE9wZXJhdGluZyBTeXN0ZW1z CiAKZGlmZiAtLWdpdCBhL2xpc3AvZmlsZXMteC5lbCBiL2xpc3AvZmlsZXMteC5lbAppbmRl eCAzYmE3NjMyZDI1My4uZjZmYmQ0NGNlMjEgMTAwNjQ0Ci0tLSBhL2xpc3AvZmlsZXMteC5l bAorKysgYi9saXNwL2ZpbGVzLXguZWwKQEAgLTMxLDYgKzMxLDggQEAKIDs7OyBDb2RlOgog CiAoZXZhbC13aGVuLWNvbXBpbGUgKHJlcXVpcmUgJ3N1YnIteCkpIDsgZm9yIHN0cmluZy10 cmltLXJpZ2h0CisoZGVjbGFyZS1mdW5jdGlvbiBkb3NpZmllZC1maWxlLW5hbWUgImRvcy1m bnMiIChmaWxlLW5hbWUpKQorKGRlY2xhcmUtZnVuY3Rpb24gcHJvamVjdC1yb290ICJwcm9q ZWN0IiAocHJvamVjdCkpCiAKIAwKIDs7OyBDb21tYW5kcyB0byBhZGQvZGVsZXRlIGZpbGUt bG9jYWwvZGlyZWN0b3J5LWxvY2FsIHZhcmlhYmxlcy4KQEAgLTQxMCw3ICs0MTIsNyBAQCBk ZWxldGUtZmlsZS1sb2NhbC12YXJpYWJsZS1wcm9wLWxpbmUKIAogKGRlZnZhciBhdXRvLWlu c2VydCkgOyBmcm9tIGF1dG9pbnNlcnQuZWwKIAotKGRlZnVuIG1vZGlmeS1kaXItbG9jYWwt dmFyaWFibGUgKG1vZGUgdmFyaWFibGUgdmFsdWUgb3ApCisoZGVmdW4gbW9kaWZ5LWRpci1s b2NhbC12YXJpYWJsZSAobW9kZSB2YXJpYWJsZSB2YWx1ZSBvcCAmb3B0aW9uYWwgZmlsZSkK ICAgIk1vZGlmeSBkaXJlY3RvcnktbG9jYWwgVkFSSUFCTEUgaW4gLmRpci1sb2NhbHMuZWwg ZGVwZW5kaW5nIG9uIG9wZXJhdGlvbiBPUC4KIAogSWYgT1AgaXMgYGFkZC1vci1yZXBsYWNl JyB0aGVuIGRlbGV0ZSBhbGwgZXhpc3Rpbmcgc2V0dGluZ3Mgb2YKQEAgLTQyMiwyOCArNDI0 LDM3IEBAIG1vZGlmeS1kaXItbG9jYWwtdmFyaWFibGUKIHRoaXMgZmlsZSBpbiB0aGUgY3Vy cmVudCBkaXJlY3RvcnkuCiAKIElmIE9QIGlzIGBkZWxldGUnIHRoZW4gZGVsZXRlIGFsbCBl eGlzdGluZyBzZXR0aW5ncyBvZiBWQVJJQUJMRQotZnJvbSB0aGUgTU9ERSBhbGlzdCBpZ25v cmluZyB0aGUgaW5wdXQgYXJndW1lbnQgVkFMVUUuIgorZnJvbSB0aGUgTU9ERSBhbGlzdCBp Z25vcmluZyB0aGUgaW5wdXQgYXJndW1lbnQgVkFMVUUuCisKK09wdGlvbmFsIGFyZ3VtZW50 IEZJTEUsIHdoZW4gbm9uLW5pbCwgc3BlY2lmaWVzIHdoYXQgZmlsZSB0byBtb2RpZnkuICBJ dAorc2hvdWxkIGJlIGFuIGV4cGFuZGVkIGZpbGVuYW1lLiIKICAgKGNhdGNoICdleGl0CiAg ICAgKHVubGVzcyBlbmFibGUtbG9jYWwtdmFyaWFibGVzCiAgICAgICAodGhyb3cgJ2V4aXQg KG1lc3NhZ2UgIkRpcmVjdG9yeS1sb2NhbCB2YXJpYWJsZXMgYXJlIGRpc2FibGVkIikpKQot ICAgIChsZXQqICgoZGlyLW9yLWNhY2hlIChhbmQgKGJ1ZmZlci1maWxlLW5hbWUpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChmaWxlLXJlbW90ZS1wIChidWZmZXIt ZmlsZS1uYW1lKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGlyLWxvY2Fs cy1maW5kLWZpbGUgKGJ1ZmZlci1maWxlLW5hbWUpKSkpCi0gICAgICAgICAgICh2YXJpYWJs ZXMtZmlsZQotICAgICAgICAgICAgOzsgSWYgdGhlcmUgYXJlIHNldmVyYWwgLmRpci1sb2Nh bHMsIHRoZSB1c2VyIHByb2JhYmx5Ci0gICAgICAgICAgICA7OyB3YW50cyB0byBlZGl0IHRo ZSBsYXN0IG9uZSAodGhlIGhpZ2hlc3QgcHJpb3JpdHkpLgotICAgICAgICAgICAgKGNvbmQg KChzdHJpbmdwIGRpci1vci1jYWNoZSkKLSAgICAgICAgICAgICAgICAgICAoY2FyIChsYXN0 IChkaXItbG9jYWxzLS1hbGwtZmlsZXMgZGlyLW9yLWNhY2hlKSkpKQotICAgICAgICAgICAg ICAgICAgKChjb25zcCBkaXItb3ItY2FjaGUpCTsgcmVzdWx0IGZyb20gY2FjaGUKLSAgICAg ICAgICAgICAgICAgICA7OyBJZiBjYWNoZSBlbGVtZW50IGhhcyBhbiBtdGltZSwgYXNzdW1l IGl0IGNhbWUKLSAgICAgICAgICAgICAgICAgICA7OyBmcm9tIGEgZmlsZS4gIE90aGVyd2lz ZSwgYXNzdW1lIGl0IHdhcyBzZXQKLSAgICAgICAgICAgICAgICAgICA7OyBkaXJlY3RseS4K LSAgICAgICAgICAgICAgICAgICAoaWYgKG50aCAyIGRpci1vci1jYWNoZSkKLSAgICAgICAg ICAgICAgICAgICAgICAgKGNhciAobGFzdCAoZGlyLWxvY2Fscy0tYWxsLWZpbGVzIChjYXIg ZGlyLW9yLWNhY2hlKSkpKQotICAgICAgICAgICAgICAgICAgICAgKGNhZHIgZGlyLW9yLWNh Y2hlKSkpCi0gICAgICAgICAgICAgICAgICA7OyBUcnkgdG8gbWFrZSBhIHByb3BlciBmaWxl LW5hbWUuCi0gICAgICAgICAgICAgICAgICAodCAoZXhwYW5kLWZpbGUtbmFtZSBkaXItbG9j YWxzLWZpbGUpKSkpCi0gICAgICAgICAgIHZhcmlhYmxlcykKKyAgICAobGV0ICgodmFyaWFi bGVzLWZpbGUKKyAgICAgICAgICAgKGlmIChzdHJpbmdwIGZpbGUpCisgICAgICAgICAgICAg ICBmaWxlCisgICAgICAgICAgICAgKGxldCAoKGRpci1vci1jYWNoZQorICAgICAgICAgICAg ICAgICAgICAoYW5kIChidWZmZXItZmlsZS1uYW1lKQorICAgICAgICAgICAgICAgICAgICAg ICAgIChub3QgKGZpbGUtcmVtb3RlLXAgKGJ1ZmZlci1maWxlLW5hbWUpKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAoZGlyLWxvY2Fscy1maW5kLWZpbGUgKGJ1ZmZlci1maWxlLW5h bWUpKSkpKQorICAgICAgICAgICAgICAgOzsgSWYgdGhlcmUgYXJlIHNldmVyYWwgLmRpci1s b2NhbHMsIHRoZSB1c2VyIHByb2JhYmx5CisgICAgICAgICAgICAgICA7OyB3YW50cyB0byBl ZGl0IHRoZSBsYXN0IG9uZSAodGhlIGhpZ2hlc3QgcHJpb3JpdHkpLgorICAgICAgICAgICAg ICAgKGNvbmQKKyAgICAgICAgICAgICAgICAoKHN0cmluZ3AgZGlyLW9yLWNhY2hlKQorICAg ICAgICAgICAgICAgICAoY2FyIChsYXN0IChkaXItbG9jYWxzLS1hbGwtZmlsZXMgZGlyLW9y LWNhY2hlKSkpKQorICAgICAgICAgICAgICAgICgoY29uc3AgZGlyLW9yLWNhY2hlKQk7IHJl c3VsdCBmcm9tIGNhY2hlCisgICAgICAgICAgICAgICAgIDs7IElmIGNhY2hlIGVsZW1lbnQg aGFzIGFuIG10aW1lLCBhc3N1bWUgaXQgY2FtZQorICAgICAgICAgICAgICAgICA7OyBmcm9t IGEgZmlsZS4gIE90aGVyd2lzZSwgYXNzdW1lIGl0IHdhcyBzZXQKKyAgICAgICAgICAgICAg ICAgOzsgZGlyZWN0bHkuCisgICAgICAgICAgICAgICAgIChpZiAobnRoIDIgZGlyLW9yLWNh Y2hlKQorICAgICAgICAgICAgICAgICAgICAgKGNhciAobGFzdCAoZGlyLWxvY2Fscy0tYWxs LWZpbGVzIChjYXIgZGlyLW9yLWNhY2hlKSkpKQorICAgICAgICAgICAgICAgICAgIChjYWRy IGRpci1vci1jYWNoZSkpKQorICAgICAgICAgICAgICAgIDs7IFRyeSB0byBtYWtlIGEgcHJv cGVyIGZpbGUtbmFtZS4KKyAgICAgICAgICAgICAgICAodCAoZXhwYW5kLWZpbGUtbmFtZSAo aWYgKGVxIHN5c3RlbS10eXBlICdtcy1kb3MpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChkb3NpZmllZC1maWxlLW5hbWUgZGlyLWxvY2Fscy1maWxlKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyLWxvY2Fscy1maWxl KSkpKSkpKQorICAgICAgICAgIHZhcmlhYmxlcykKICAgICAgIDs7IEkgY2FuJ3QgYmUgYm90 aGVyZWQgdG8gaGFuZGxlIHRoaXMgY2FzZSByaWdodCBub3cuCiAgICAgICA7OyBEaXIgbG9j YWxzIHdlcmUgc2V0IGRpcmVjdGx5IGZyb20gYSBjbGFzcy4gIFlvdSBuZWVkIHRvCiAgICAg ICA7OyBkaXJlY3RseSBtb2RpZnkgdGhlIGNsYXNzIGluIGRpci1sb2NhbHMtY2xhc3MtYWxp c3QuCkBAIC01MjcsMzMgKzUzOCw3NSBAQCBkaXItbG9jYWxzLXRvLXN0cmluZwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZHIgbW9kZS12YXJpYWJsZXMpICJc biIpKSkpCiAgICAgICAgICAgIHZhcmlhYmxlcyAiXG4iKSkpCiAKKyhkZWZ1biByZWFkLWRp ci1sb2NhbHMtZmlsZSAoKQorICAiUmVhZCBhIGRpci1sb2NhbHMgZmlsZW5hbWUgdXNpbmcg Y29tcGxldGlvbi4KK0ludGVuZGVkIHRvIGJlIHVzZWQgaW4gdGhlIGBpbnRlcmFjdGl2ZScg c3BlYyBvZiBgYWRkLWRpci1sb2NhbC12YXJpYWJsZScsCitgZGVsZXRlLWRpci1sb2NhbC12 YXJpYWJsZScgYW5kIGBjb3B5LWZpbGUtbG9jYWxzLXRvLWRpci1sb2NhbHMnLgorCitSZXR1 cm5zIHRoZSBmaWxlbmFtZSwgZXhwYW5kZWQuIgorICAobGV0KiAoKHByaSBkaXItbG9jYWxz LWZpbGUpCisgICAgICAgICAoc2VjIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgIi5lbCQi ICItMi5lbCIgZGlyLWxvY2Fscy1maWxlKSkKKyAgICAgICAgIChkaXIgKG9yIChsb2NhdGUt ZG9taW5hdGluZy1maWxlIGRlZmF1bHQtZGlyZWN0b3J5IHByaSkKKyAgICAgICAgICAgICAg ICAgIChsb2NhdGUtZG9taW5hdGluZy1maWxlIGRlZmF1bHQtZGlyZWN0b3J5IHNlYykpKSkK KyAgICAoZXhwYW5kLWZpbGUtbmFtZQorICAgICAocmVhZC1maWxlLW5hbWUKKyAgICAgICJG aWxlOiAiCisgICAgICAoY29uZCAoZGlyKQorICAgICAgICAgICAgKCh3aGVuLWxldCAoKHBy b2ogKGFuZCAoZmVhdHVyZXAgJ3Byb2plY3QpIChwcm9qZWN0LWN1cnJlbnQpKSkpCisgICAg ICAgICAgICAgICAocHJvamVjdC1yb290IHByb2opKSkpCisgICAgICBuaWwKKyAgICAgIChs YW1iZGEgKGZuYW1lKQorICAgICAgICAobWVtYmVyIChmaWxlLW5hbWUtbm9uZGlyZWN0b3J5 IGZuYW1lKSAobGlzdCBwcmkgc2VjKSkpCisgICAgICBkaXItbG9jYWxzLWZpbGUpKSkpCisK IDs7OyMjI2F1dG9sb2FkCi0oZGVmdW4gYWRkLWRpci1sb2NhbC12YXJpYWJsZSAobW9kZSB2 YXJpYWJsZSB2YWx1ZSkKLSAgIkFkZCBkaXJlY3RvcnktbG9jYWwgVkFSSUFCTEUgd2l0aCBp dHMgVkFMVUUgYW5kIE1PREUgdG8gLmRpci1sb2NhbHMuZWwuIgorKGRlZnVuIGFkZC1kaXIt bG9jYWwtdmFyaWFibGUgKG1vZGUgdmFyaWFibGUgdmFsdWUgJm9wdGlvbmFsIGZpbGUpCisg ICJBZGQgZGlyZWN0b3J5LWxvY2FsIFZBUklBQkxFIHdpdGggaXRzIFZBTFVFIGFuZCBNT0RF IHRvIC5kaXItbG9jYWxzLmVsLgorCitXaXRoIGEgcHJlZml4IGFyZ3VtZW50LCBwcm9tcHQg Zm9yIHRoZSBmaWxlIHRvIG1vZGlmeS4KKworV2hlbiBjYWxsZWQgZnJvbSBMaXNwLCBGSUxF IG1heSBiZSB0aGUgZXhwYW5kZWQgbmFtZSBvZiB0aGUgZGlyLWxvY2FscyBmaWxlCit3aGVy ZSB0byBhZGQgVkFSSUFCTEUuIgogICAoaW50ZXJhY3RpdmUKICAgIChsZXQgKHZhcmlhYmxl KQogICAgICAobGlzdAogICAgICAgKHJlYWQtZmlsZS1sb2NhbC12YXJpYWJsZS1tb2RlKQog ICAgICAgKHNldHEgdmFyaWFibGUgKHJlYWQtZmlsZS1sb2NhbC12YXJpYWJsZSAiQWRkIGRp cmVjdG9yeS1sb2NhbCB2YXJpYWJsZSIpKQotICAgICAgKHJlYWQtZmlsZS1sb2NhbC12YXJp YWJsZS12YWx1ZSB2YXJpYWJsZSkpKSkKLSAgKG1vZGlmeS1kaXItbG9jYWwtdmFyaWFibGUg bW9kZSB2YXJpYWJsZSB2YWx1ZSAnYWRkLW9yLXJlcGxhY2UpKQorICAgICAgKHJlYWQtZmls ZS1sb2NhbC12YXJpYWJsZS12YWx1ZSB2YXJpYWJsZSkKKyAgICAgICh3aGVuIGN1cnJlbnQt cHJlZml4LWFyZworICAgICAgICAocmVhZC1kaXItbG9jYWxzLWZpbGUpKSkpKQorICAobW9k aWZ5LWRpci1sb2NhbC12YXJpYWJsZSBtb2RlIHZhcmlhYmxlIHZhbHVlICdhZGQtb3ItcmVw bGFjZSBmaWxlKSkKIAogOzs7IyMjYXV0b2xvYWQKLShkZWZ1biBkZWxldGUtZGlyLWxvY2Fs LXZhcmlhYmxlIChtb2RlIHZhcmlhYmxlKQotICAiRGVsZXRlIGFsbCBNT0RFIHNldHRpbmdz IG9mIGZpbGUtbG9jYWwgVkFSSUFCTEUgZnJvbSAuZGlyLWxvY2Fscy5lbC4iCisoZGVmdW4g ZGVsZXRlLWRpci1sb2NhbC12YXJpYWJsZSAobW9kZSB2YXJpYWJsZSAmb3B0aW9uYWwgZmls ZSkKKyAgIkRlbGV0ZSBhbGwgTU9ERSBzZXR0aW5ncyBvZiBkaXItbG9jYWwgVkFSSUFCTEUg ZnJvbSAuZGlyLWxvY2Fscy5lbC4KKworV2l0aCBhIHByZWZpeCBhcmd1bWVudCwgcHJvbXB0 IGZvciB0aGUgZmlsZSB0byBtb2RpZnkuCisKK1doZW4gY2FsbGVkIGZyb20gTGlzcCwgRklM RSBtYXkgYmUgdGhlIGV4cGFuZGVkIG5hbWUgb2YgdGhlIGRpci1sb2NhbHMgZmlsZQorZnJv bSB3aGVyZSB0byBkZWxldGUgVkFSSUFCTEUuIgogICAoaW50ZXJhY3RpdmUKICAgIChsaXN0 CiAgICAgKHJlYWQtZmlsZS1sb2NhbC12YXJpYWJsZS1tb2RlKQotICAgIChyZWFkLWZpbGUt bG9jYWwtdmFyaWFibGUgIkRlbGV0ZSBkaXJlY3RvcnktbG9jYWwgdmFyaWFibGUiKSkpCi0g IChtb2RpZnktZGlyLWxvY2FsLXZhcmlhYmxlIG1vZGUgdmFyaWFibGUgbmlsICdkZWxldGUp KQorICAgIChyZWFkLWZpbGUtbG9jYWwtdmFyaWFibGUgIkRlbGV0ZSBkaXJlY3RvcnktbG9j YWwgdmFyaWFibGUiKQorICAgICh3aGVuIGN1cnJlbnQtcHJlZml4LWFyZworICAgICAgKHJl YWQtZGlyLWxvY2Fscy1maWxlKSkpKQorICAobW9kaWZ5LWRpci1sb2NhbC12YXJpYWJsZSBt b2RlIHZhcmlhYmxlIG5pbCAnZGVsZXRlIGZpbGUpKQogCiA7OzsjIyNhdXRvbG9hZAotKGRl ZnVuIGNvcHktZmlsZS1sb2NhbHMtdG8tZGlyLWxvY2FscyAoKQotICAiQ29weSBmaWxlLWxv Y2FsIHZhcmlhYmxlcyB0byAuZGlyLWxvY2Fscy5lbC4iCi0gIChpbnRlcmFjdGl2ZSkKKyhk ZWZ1biBjb3B5LWZpbGUtbG9jYWxzLXRvLWRpci1sb2NhbHMgKCZvcHRpb25hbCBmaWxlKQor ICAiQ29weSBmaWxlLWxvY2FsIHZhcmlhYmxlcyB0byAuZGlyLWxvY2Fscy5lbC4KKworV2l0 aCBhIHByZWZpeCBhcmd1bWVudCwgcHJvbXB0IGZvciB0aGUgZmlsZSB0byBtb2RpZnkuCisK K1doZW4gY2FsbGVkIGZyb20gTGlzcCwgRklMRSBtYXkgYmUgdGhlIGV4cGFuZGVkIG5hbWUg b2YgdGhlIGRpci1sb2NhbHMgZmlsZQord2hlcmUgdG8gY29weSB0aGUgZmlsZS1sb2NhbCB2 YXJpYWJsZXMuIgorICAoaW50ZXJhY3RpdmUKKyAgIChsaXN0ICh3aGVuIGN1cnJlbnQtcHJl Zml4LWFyZworICAgICAgICAgICAocmVhZC1kaXItbG9jYWxzLWZpbGUpKSkpCiAgIChkb2xp c3QgKGVsdCBmaWxlLWxvY2FsLXZhcmlhYmxlcy1hbGlzdCkKICAgICAodW5sZXNzIChhc3Nx IChjYXIgZWx0KSBkaXItbG9jYWwtdmFyaWFibGVzLWFsaXN0KQotICAgICAgKGFkZC1kaXIt bG9jYWwtdmFyaWFibGUgbWFqb3ItbW9kZSAoY2FyIGVsdCkgKGNkciBlbHQpKSkpKQorICAg ICAgKGFkZC1kaXItbG9jYWwtdmFyaWFibGUgbWFqb3ItbW9kZSAoY2FyIGVsdCkgKGNkciBl bHQpIGZpbGUpKSkpCiAKIDs7OyMjI2F1dG9sb2FkCiAoZGVmdW4gY29weS1kaXItbG9jYWxz LXRvLWZpbGUtbG9jYWxzICgpCi0tIAoyLjM0LjEKCg== --------------4cCsFCOpWGQc5mFRdJvqeu93--