From unknown Sat Aug 09 09:38:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#79038: [PATCH] Add support for Vi/Vim modelines. Resent-From: James Youngman Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 17 Jul 2025 11:06:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 79038 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 79038@debbugs.gnu.org Cc: James Youngman , James Youngman X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.175275032215980 (code B ref -1); Thu, 17 Jul 2025 11:06:02 +0000 Received: (at submit) by debbugs.gnu.org; 17 Jul 2025 11:05:22 +0000 Received: from localhost ([127.0.0.1]:53239 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ucMQQ-00049Y-R9 for submit@debbugs.gnu.org; Thu, 17 Jul 2025 07:05:22 -0400 Received: from lists.gnu.org ([2001:470:142::17]:51276) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ucJIR-0001Wh-CU for submit@debbugs.gnu.org; Thu, 17 Jul 2025 03:44:53 -0400 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 1ucJIL-0003Pl-TT for bug-gnu-emacs@gnu.org; Thu, 17 Jul 2025 03:44:45 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ucJIH-0003U9-Lb for bug-gnu-emacs@gnu.org; Thu, 17 Jul 2025 03:44:45 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-311ef4fb43dso580116a91.3 for ; Thu, 17 Jul 2025 00:44:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=youngman-org.20230601.gappssmtp.com; s=20230601; t=1752738279; x=1753343079; darn=gnu.org; h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=NtDxuS2eAvM7GlKIaSPJpGVGjUwE+O/jSVr+GiT5KcA=; b=x9XzXYydgNrMvGiUIk2QyqAM5u5seAVmgjEXh6PsGcXefb2CLBsAHoQQd4bxLiti3G KLKYGEPYY8kXxGmJnsCV/yM4WSOCuOPthq4FmFPh6FiYIEzf94KGqIs7uDW8+853bFcI pZqfz4Kl7z2C/ic9ezQXPt8nN/R2HUaebKCvG6bMBxTOSJryYoJKLdnNw5f6aUARpqCf Koq87b+vjS7UPE0rjkXaOK2PpuIKcX5S24T00AKpsTMaBCP86uH6XjwN50P/LnS67XwW NBM0pzH+TM/WiJzvLUmEzntZf7XTmJ6/XM3SW5GzRN4LsxELfwwAOa+CDCZy6RaO4c/R bg5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752738279; x=1753343079; h=cc:to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=NtDxuS2eAvM7GlKIaSPJpGVGjUwE+O/jSVr+GiT5KcA=; b=AbW6ivu5YpbxQQBsXYN+vIwQ/6E1GXewkTolOChcR6ea3GvgT/lkLySZqIYBxkzsrj eZyOe5Kimle28OUrGyhLa7WUgU6meTgJhtfrzn9z4qZJlSW48lWelEG8165JF+vUQrqz 5sgeBQ9ffkRvxXdHD4CuIGyA/G6BMpZFXMBZnmaIx7YPbBNYvs/AwtqWIrc74sq7Fbbh YFvi57lajQsc/XTwK03E1K6/YfTWI7GMGiF29MIKSR09jBtdAD4jcc5OrSNZcMebDjFW 28QlOWqR1KkMLzynnJogq1SZ8GyaPIHVtBSnHvlKlP2XuiqsMCAW8VMX+UmDYylr9agZ m2Ag== X-Gm-Message-State: AOJu0YzQxyNpL6hi/G6AxDG70KF+sJl7f5WK0h6d4gX5IBA1Zt+GGINk U5VAnOvJXprAcbqVXLWPCT84M+9H3dy4Vtc9Ln98RpVQUe1LwMlE9JGiz/B2uCWdBzQfkHL9eDH eD3K3CAHInjv9Bo/oq8qMgq+SmvNAP8PqG9WjFFWi/XJHWltJFoRcQGE= X-Gm-Gg: ASbGncv3aPAdbMkGT+iA/mUZLLrfLdEhjkbQXQJLhyI9MIy+3Ta0icaPpp/wz6847pI 7T33mifHttgX0CS1l39lDdHGj9l2TWDR/fSdhIys2BwFEuFrTOQPhfWxZ1i4KE3QItP34shFSKs 3jnoX2hqTkKLceyAJlcMXdi///IvcNpdqoiarIxavSXBLtWlzM5uATh+WrCyc46LLiTt/U9j/bQ aZV X-Google-Smtp-Source: AGHT+IF4PoiWsWK+u3P9aaaLTsvZTNzZ2VPtt4fThxXBCkJwKtRr6wRF7rAQY1Ly5NdWQcZUVNV3zLjrRe5wR5caI/s= X-Received: by 2002:a17:90a:5d12:b0:31c:39c5:ffbd with SMTP id 98e67ed59e1d1-31c9f4b4177mr7456259a91.24.1752738279261; Thu, 17 Jul 2025 00:44:39 -0700 (PDT) MIME-Version: 1.0 From: James Youngman Date: Thu, 17 Jul 2025 08:44:27 +0100 X-Gm-Features: Ac12FXwMhyuSoqOM3l2jlh-gS9QBy7imRjFgJShvbmCpaHO54xFzsWmZhAZfF-4 Message-ID: Content-Type: multipart/mixed; boundary="0000000000008534f2063a1b2e14" Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=james@youngman.org; helo=mail-pj1-x1034.google.com X-Spam_score_int: 1 X-Spam_score: 0.1 X-Spam_bar: / X-Spam_report: (0.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, PDS_OTHER_BAD_TLD=1.997, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Mailman-Approved-At: Thu, 17 Jul 2025 07:05:16 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) --0000000000008534f2063a1b2e14 Content-Type: text/plain; charset="UTF-8" I'd like to contribute support for Vi/Vim modelines. These are somewhat similar to Emacs' local variables. The basic idea is that this makes it easier to collaborate with a software author who uses Vi modelines to correctly set up their editor, and expects others to use consistent settings. This change should be covered by the copyright assignment my employer (Google) already made for GNU Emacs. This is my first Emacs patch, so I apologise for any misunderstandings or omissions. The patch itself is attached, but here is the ChangeLog entry: Add support for Vi/Vim modelines. * lisp/emulation/vimvars.el: New file, implementing support for Vi modelines. * test/lisp/emulation/vimvars-tests.el: New file; tests for this feature. * doc/emacs/custom.texi(Vimvars): Describe this feature. * doc/misc/viper.texi(Modeline): Mention this feature. * etc/NEWS: Mention this change. --0000000000008534f2063a1b2e14 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Add-support-for-Vi-Vim-modelines.patch" Content-Disposition: attachment; filename="0001-Add-support-for-Vi-Vim-modelines.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_md72ynqs0 RnJvbSAyYzcxY2VmZDE0NTJkZGViODYzMTcyOWJkZmI0ZjM5Y2NiYzA2MGViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYW1lcyBZb3VuZ21hbiA8amFtZXNAeW91bmdtYW4ub3JnPgpE YXRlOiBUaHUsIDE3IEp1bCAyMDI1IDA4OjI3OjE3ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gQWRk IHN1cHBvcnQgZm9yIFZpL1ZpbSBtb2RlbGluZXMuCgoqIGxpc3AvZW11bGF0aW9uL3ZpbXZhcnMu ZWw6IE5ldyBmaWxlLCBpbXBsZW1lbnRpbmcgc3VwcG9ydCBmb3IgVmkKICBtb2RlbGluZXMuCiog dGVzdC9saXNwL2VtdWxhdGlvbi92aW12YXJzLXRlc3RzLmVsOiBOZXcgZmlsZTsgdGVzdHMgZm9y IHRoaXMKICBmZWF0dXJlLgoqIGRvYy9lbWFjcy9jdXN0b20udGV4aShWaW12YXJzKTogRGVzY3Jp YmUgdGhpcyBmZWF0dXJlLgoqIGRvYy9taXNjL3ZpcGVyLnRleGkoTW9kZWxpbmUpOiBNZW50aW9u IHRoaXMgZmVhdHVyZS4KKiBldGMvTkVXUzogTWVudGlvbiB0aGlzIGNoYW5nZS4KLS0tCiBkb2Mv ZW1hY3MvY3VzdG9tLnRleGkgICAgICAgICAgICAgICAgfCAgMjQgKysKIGRvYy9taXNjL3ZpcGVy LnRleGkgICAgICAgICAgICAgICAgICB8ICAxNiArCiBldGMvTkVXUyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDYgKwogbGlzcC9lbXVsYXRpb24vdmltdmFycy5lbCAgICAgICAgICAg IHwgMjIyICsrKysrKysrKysrKysrCiB0ZXN0L2xpc3AvZW11bGF0aW9uL3ZpbXZhcnMtdGVzdHMu ZWwgfCA0MjggKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDY5 NiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGlzcC9lbXVsYXRpb24vdmltdmFy cy5lbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3QvbGlzcC9lbXVsYXRpb24vdmltdmFycy10ZXN0 cy5lbAoKZGlmZiAtLWdpdCBhL2RvYy9lbWFjcy9jdXN0b20udGV4aSBiL2RvYy9lbWFjcy9jdXN0 b20udGV4aQppbmRleCA5YjU0NWI5ZmQwYS4uYmZmZjAwY2M4ZjEgMTAwNjQ0Ci0tLSBhL2RvYy9l bWFjcy9jdXN0b20udGV4aQorKysgYi9kb2MvZW1hY3MvY3VzdG9tLnRleGkKQEAgLTc3Nyw2ICs3 NzcsNyBAQCBWYXJpYWJsZXMKICogRGlyZWN0b3J5IFZhcmlhYmxlczo6IEhvdyB2YXJpYWJsZSB2 YWx1ZXMgY2FuIGJlIHNwZWNpZmllZCBieSBkaXJlY3RvcnkuCiAqIENvbm5lY3Rpb24gVmFyaWFi bGVzOjogVmFyaWFibGVzIHdoaWNoIGFyZSB2YWxpZCBmb3IgYnVmZmVycyB3aXRoIGEKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZSBkZWZhdWx0IGRpcmVjdG9yeS4KKyogVmltdmFy czo6ICAgICAgICAgICAgIFN1cHBvcnQgZm9yIFZpL1ZpbSBtb2RlbGluZXMuCiBAZW5kIG1lbnUK IAogQG5vZGUgRXhhbWluaW5nCkBAIC0xNjcyLDYgKzE2NzMsMjkgQEAgQ29ubmVjdGlvbiBWYXJp YWJsZXMKIGJ5IHNldHRpbmcgdGhlIHJlc3BlY3RpdmUgdmFyaWFibGUncyBAY29kZXtwZXJtYW5l bnQtbG9jYWx9IHN5bWJvbAogcHJvcGVydHkgdG8gbm9uLUBjb2Rle25pbH0uCiAKK0Bub2RlIFZp bXZhcnMKK0BzdWJzZWN0aW9uIFZpbXZhcnM6IFN1cHBvcnQgZm9yIFZpL1ZpbSBtb2RlbGluZXMK K0BjaW5kZXggVmltIG1vZGVsaW5lcworQGNpbmRleCBWaSBtb2RlbGluZXMKKworVGhlIFZpIGVk aXRvciAoYW5kIG1hbnkgb2YgaXRzIGNsb25lcyBhbmQgaW1wbGVtZW50YXRpb25zLCBpbmNsdWRp bmcKK1ZpbSkgc3VwcG9ydHMgYSBmZWF0dXJlIGxpa2UgZmlsZSBsb2NhbCB2YXJpYWJsZXMuIEVt YWNzIGNhbiBvcHRpb25hbGx5CitzdXBwb3J0IHRoZXNlLCBsaWtlIHRoaXM6CisKK0BmaW5kZXgg dmltdmFycy1vYmV5LXZpbS1tb2RlbGluZQorQGxpc3AKKyhyZXF1aXJlICd2aW12YXJzKQorKGFk ZC1ob29rICdmaW5kLWZpbGUtaG9vayAndmltdmFycy1vYmV5LXZpbS1tb2RlbGluZSkKK0BlbmQg bGlzcAorCitAY2luZGV4IHJpc2t5IHZhcmlhYmxlCitUaGUgVmltIG1vZGVsaW5lIHNldHRpbmcg QGNvZGV7bWFrZXByZ30gaXMgdHJhbnNsYXRlZCB0bworQGNvZGV7Y29tcGlsZS1jb21tYW5kfSwg YnV0IHRoaXMgaXMgbm90IHRyZWF0ZWQgYXMgYW4gdW5zYWZlIGxvY2FsCit2YXJpYWJsZS4KKwor VGhpcyBoYXMgYW4gZWZmZWN0IHNpbWlsYXIgdG8gYWRkaW5nIEBzYW1we3NldCBtb2RlbGluZX0g dG8KK0BmaWxle34vLnZpbXJjfS4KKwogQG5vZGUgS2V5IEJpbmRpbmdzCiBAc2VjdGlvbiBDdXN0 b21pemluZyBLZXkgQmluZGluZ3MKIEBjaW5kZXgga2V5IGJpbmRpbmdzCmRpZmYgLS1naXQgYS9k b2MvbWlzYy92aXBlci50ZXhpIGIvZG9jL21pc2MvdmlwZXIudGV4aQppbmRleCA2OTMyZDI5YzI5 Ni4uYzhmNTM3NTgxN2IgMTAwNjQ0Ci0tLSBhL2RvYy9taXNjL3ZpcGVyLnRleGkKKysrIGIvZG9j L21pc2MvdmlwZXIudGV4aQpAQCAtMTYxMCw2ICsxNjEwLDcgQEAgQ3VzdG9taXphdGlvbgogKiBQ YWNrYWdlcyB0aGF0IENoYW5nZSBLZXltYXBzOjogSG93IHRvIGRlYWwgd2l0aCBzdWNoIGJlYXN0 cy4KICogVmlwZXIgU3BlY2lhbHM6OiAgICAgICAgICAgICAgIFNwZWNpYWwgVmlwZXIgY29tbWFu ZHMuCiAqIFZpIE1hY3Jvczo6ICAgICAgICAgICAgICAgICAgICBIb3cgdG8gZG8gVmkgc3R5bGUg bWFjcm9zLgorKiBNb2RlbGluZTo6ICAgICAgICAgICAgICAgICAgICAgRW11bGF0aW9uIGZvciBW aSBtb2RlbGluZXMuCiBAZW5kIG1lbnUKIAogQG5vZGUgUnVkaW1lbnRhcnkgQ2hhbmdlcwpAQCAt Mjk5Myw2ICsyOTk0LDIxIEBAIFZpIE1hY3JvcwogY3VycmVudGx5IGRlZmluZWQuICBUbyBzZWUg YWxsIG1hY3JvcyBhbG9uZyB3aXRoIHRoZWlyIGRlZmluaXRpb25zLCB0eXBlCiBAa2Jke00teCB2 aXBlci1kZXNjcmliZS1rYmQtbWFjcm9zfS4KIAorQG5vZGUgTW9kZWxpbmUKK0BzZWN0aW9uIEVt dWxhdGlvbiBmb3IgVmkgbW9kZWxpbmVzCisKK1lvdSBjYW4gZW5hYmxlIGxpbWl0ZWQgc3VwcG9y dCBmb3IgVmkgbW9kZWxpbmVzLCB3aXRoIG9yIHdpdGhvdXQgVmlwZXIsCit3aXRoIEBjb2Rle3Zp bXZhcnN9OgorCitAZmluZGV4IHZpbXZhcnMtb2JleS12aW0tbW9kZWxpbmUKK0BsaXNwCisocmVx dWlyZSAndmltdmFycykKKyhhZGQtaG9vayAnZmluZC1maWxlLWhvb2sgJ3ZpbXZhcnMtb2JleS12 aW0tbW9kZWxpbmUpCitAZW5kIGxpc3AKKworQHhyZWZ7VmltdmFycywsVmltdmFyczogU3VwcG9y dCBmb3IgVmkvVmltIG1vZGVsaW5lcyxlbWFjcyxUaGUgR05VIEVtYWNzCittYW51YWx9LCBmb3Ig bW9yZSBpbmZvLgorCiBAbm9kZSBDb21tYW5kcwogQGNoYXB0ZXIgQ29tbWFuZHMKIApkaWZmIC0t Z2l0IGEvZXRjL05FV1MgYi9ldGMvTkVXUwppbmRleCBhODFkMTEwNTQ0My4uODFmMjYyZWNiMWUg MTAwNjQ0Ci0tLSBhL2V0Yy9ORVdTCisrKyBiL2V0Yy9ORVdTCkBAIC0yNDE5LDYgKzI0MTksMTIg QEAgQSBtYWpvciBtb2RlIGJhc2VkIG9uIHRoZSB0cmVlLXNpdHRlciBsaWJyYXJ5IGZvciBlZGl0 aW5nICJnby53b3JrIgogZmlsZXMuICBJZiB0cmVlLXNpdHRlciBpcyBwcm9wZXJseSBzZXQtdXAg YnkgdGhlIHVzZXIsIGl0IGNhbiBiZQogZW5hYmxlZCBmb3IgZmlsZXMgbmFtZWQgImdvLndvcmsi LgogCisrKysKKyoqIFN1cHBvcnQgZm9yIFZpbS9WaSBtb2RlbGluZXMKK0VtYWNzIGNhbiBub3cg c3VwcG9ydCBWaW0vVmkgbW9kZWxpbmVzLgorCitBZGQgJ3ZpbXZhcnMtb2JleS12aW0tbW9kZWxp bmUnIHRvICdmaW5kLWZpbGUtaG9va3MnIHRvIHVzZSB0aGlzLgorCiAMCiAqIEluY29tcGF0aWJs ZSBMaXNwIENoYW5nZXMgaW4gRW1hY3MgMzEuMQogCmRpZmYgLS1naXQgYS9saXNwL2VtdWxhdGlv bi92aW12YXJzLmVsIGIvbGlzcC9lbXVsYXRpb24vdmltdmFycy5lbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTBiNTZjYzY5MTIKLS0tIC9kZXYvbnVsbAorKysgYi9s aXNwL2VtdWxhdGlvbi92aW12YXJzLmVsCkBAIC0wLDAgKzEsMjIyIEBACis7OzsgdmltdmFycy5l bCAtLS0gRW1hY3Mgc3VwcG9ydCBmb3IgVmkgbW9kZWxpbmVzCisKKzs7IENvcHlyaWdodCAoQykg MjAxMCwyMDExLDIwMjUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKzs7IEF1dGhv cjogSmFtZXMgWW91bmdtYW4gPGphbWVzQHlvdW5nbWFuLm9yZz4KKzs7IE1haW50YWluZXI6IEph bWVzIFlvdW5nbWFuIDxqYW1lc0B5b3VuZ21hbi5vcmc+Cis7OyBLZXl3b3JkczogbG9jYWwtdmFy aWFibGVzLCB2aSwgdmltLCBlbXVsYXRpb25zCisKKzs7IHZpbXZhcnMgaXMgZnJlZSBzb2Z0d2Fy ZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorOzsgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK Kzs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCis7OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCis7 OyB2aW12YXJzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCis7OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKworOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKzs7IGFsb25nIHdpdGggdmltdmFycy4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworOzs7IENvbW1lbnRh cnk6CisKKzs7IERlZmluZXMgYSBmdW5jdGlvbiBgdmltdmFycy1vYmV5LXZpbS1tb2RlbGluZScg d2hpY2ggaXMgc3VpdGFibGUgZm9yCis7OyBhIGhvb2sgd2hpY2ggY2hlY2tzIGZvciBhIFZpLXN0 eWxlIGluIHRoZSBjdXJyZW50IGJ1ZmZlciBhbmQgc2V0cworOzsgdmFyaW91cyBFbWFjcyBidWZm ZXItbG9jYWwgdmFyaWFibGVzIGFjY29yZGluZ2x5LgorCis7OzsgQ29kZToKKworOzs7IFdlIHNh eSAiVmltIiBoZXJlIGZvciBjb25zaXN0ZW5jeSB3aXRoIEVtYWNzIGRvY3VtZW50YXRpb24gKHdo aWNoCis7OzsgdXNlcyAiVmkiKSwgaW5zdGVhZCBvZiAiVklNIiB3aGljaCBpcyB3aGF0IHRoYXQg ZWRpdG9yJ3MKKzs7OyBkb2N1bWVudGF0aW9uIHVzZXMgYXMgaXRzIG5hbWUuCisKKyhkZWZncm91 cCB2aW12YXJzIG5pbAorICAiU3VwcG9ydCBmb3IgVmltIG1vZGUgbGluZXMuIgorICA6dmVyc2lv biAiMzEuMSIKKyAgOmdyb3VwICdmaW5kLWZpbGUpCisKKworKGRlZmN1c3RvbSB2aW12YXJzLWVu YWJsZWQgdAorICAiSWYgbmlsLCBWaW0gbW9kZSBsaW5lcyB3aWxsIGJlIGlnbm9yZWQuIgorICA6 dmVyc2lvbiAiMzEuMSIKKyAgOnR5cGUgJ2Jvb2xlYW4KKyAgOmdyb3VwICd2aW12YXJzKQorKG1h a2UtdmFyaWFibGUtYnVmZmVyLWxvY2FsICd2aW12YXJzLWVuYWJsZWQpCisKKworKGRlZmN1c3Rv bSB2aW12YXJzLWNoZWNrLWxpbmVzIDUKKyAgIlRoZSBudW1iZXIgb2YgbGluZXMgaW4gdGhlIHRv cCBvciBib3R0b20gb2YgYSBmaWxlIHRoYXQgd2Ugd2lsbCBzZWFyY2ggZm9yIFZpbSBzZXR0aW5n cyAoVmltIGl0c2VsZiBjaGVja3MgNSkuIgorICA6dmVyc2lvbiAiMzEuMSIKKyAgOnR5cGUgJ2lu dGVnZXIKKyAgOmdyb3VwICd2aW12YXJzKQorCisKKyhkZWZjdXN0b20gdmltdmFycy1pZ25vcmUt bW9kZS1saW5lLWlmLWxvY2FsLXZhcmlhYmxlcy1leGlzdCB0CisgICJJZiBub24tbmlsLCBWaW0g bW9kZSBsaW5lcyBhcmUgaWdub3JlZCBpbiBmaWxlcyB0aGF0IGhhdmUgRW1hY3MgbG9jYWwgdmFy aWFibGVzLiIKKyAgOnZlcnNpb24gIjMxLjEiCisgIDp0eXBlICdib29sZWFuCisgIDpncm91cCAn dmltdmFycykKKworOzsgSXQgYXBwZWFycyB0aGF0IHJlYWwgVmltIGFjY2VwdHMgYmFja3NsYXNo LWVzY2FwZWQgY2hhcmFjdGVycyAoZm9yCis7OyBleGFtcGxlIFxcfCBpbnNpZGUgbWFrZXByZyku Cis7OworOzsgQWxzbywgVmltIGFjY2VwdHMgdmk6IGFuZCB2aW06IGF0IHN0YXJ0LW9mIGxpbmUg KGJ1dCBub3QgZXg6KQorKGRlZmNvbnN0IHZpbXZhcnMtbW9kZWxpbmUtcmUKKyAgIlxcKF5cXHxb IFx0XVxcKVxcKGV4XFx8dmltP1xcKTpbXHQgXT9cXChzZXRcXHxzZXRsb2NhbFxcfHNlXFwpPyBc XChbXjpdK1xcKToiCisgICJSZWdleCBtYXRjaGluZyBhIFZpbSBtb2RlbGluZS4iKQorCisoZGVm dW4gdmltdmFycy1vYmV5LXZpbS1tb2RlbGluZSAoKQorICAiQ2hlY2sgdGhlIHRvcCBhbmQgYm90 dG9tIG9mIGEgZmlsZSBmb3IgVmltLXN0eWxlIHNldHRpbmdzLCBhbmQgb2JleSB0aGVtLgorT25s eSB0aGUgZmlyc3QgYW5kIGxhc3QgYHZpbXZhcnMtY2hlY2stbGluZXMnIGxpbmVzIG9mIHRoZSBm aWxlCithcmUgY2hlY2tlZCBmb3IgVmltIHZhcmlhYmxlcy4gICBZb3UgY2FuIHVzZSB0aGlzIGlu IGBmaW5kLWZpbGUtaG9vaycuCisKK09uZSBlbmFibGVzIG1vZGVsaW5lcyBpbiBWaW0gYnkgcHV0 dGluZyAnc2V0IG1vZGVsaW5lJyBpbiB0aGUKKy52aW1yYyBmaWxlLiIKKyAgKHdoZW4gKHZpbXZh cnMtLXNob3VsZC1vYmV5LW1vZGVsaW5lKQorICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgKG9y ICh2aW12YXJzLS1vYmV5LXRvcC1tb2RlbGluZSkKKyAgICAgICAgICAodmltdmFycy0tb2JleS1i b3R0b20tbW9kZWxpbmUpKSkpKQorCis7OzsgSW1wbGVtZW50YXRpb24gKHlvdSBwcm9iYWJseSBk b24ndCBuZWVkIHRvIGNhbGwgdGhlc2UgZnVuY3Rpb25zCis7OzsgZGlyZWN0bHkpLgorCisoZGVm dW4gdmltdmFycy0tc2hvdWxkLW9iZXktbW9kZWxpbmUgKCkKKyAgIlJldHVybiBub24tbmlsIGlm IGEgVmltIG1vZGVsaW5lIHNob3VsZCBiZSBvYmV5ZWQgaW4gdGhpcyBmaWxlLiIKKyAgOzsgQWx3 YXlzIHJldHVybiBuaWwgaWYgdmltdmFycy1lbmFibGVkIGlzIG5pbC4KKyAgOzsgT3RoZXJ3aXNl LCBpZiB0aGVyZSBhcmUgRW1hY3MgbG9jYWwgdmFyaWFibGVzIGZvciB0aGlzIGZpbGUsCisgIDs7 IHJldHVybiBuaWwgdW5sZXNzIHZpbXZhcnMtaWdub3JlLW1vZGUtbGluZS1pZi1sb2NhbC12YXJp YWJsZXMtZXhpc3QKKyAgOzsgaXMgYWxzbyBuaWwuCisgICh3aGVuIHZpbXZhcnMtZW5hYmxlZAor ICAgIChpZiBmaWxlLWxvY2FsLXZhcmlhYmxlcy1hbGlzdAorICAgICAgICAobm90IHZpbXZhcnMt aWdub3JlLW1vZGUtbGluZS1pZi1sb2NhbC12YXJpYWJsZXMtZXhpc3QpCisgICAgICB0KSkpCisK KworKGRlZnVuIHZpbXZhcnMtLWFjY2VwdC10YWcgKGxlYWRlciB0YWcpCisgICJSZXR1cm4gbm9u LW5pbCBpZiBMRUFERVIgZm9sbG93ZWQgYnkgVEFHIHNob3VsZCBiZSBhY2NlcHRlZCBhcyBhIG1v ZGVsaW5lLiIKKyAgKGNvbmQKKyAgICgoZXF1YWwgInZpbSIgdGFnKSB0KQorICAgKChlcXVhbCAi dmkiIHRhZykgdCkKKyAgIDs7IEFjY2VwdCAiZXg6IiBvbmx5IHdoZW4gaXQgaXMgbm90IGF0IHRo ZSBiZWdpbm5pbmcgb2YgYSBsaW5lLgorICAgKChlcXVhbCAiZXgiIHRhZykgKG5vdCAoZXF1YWwg MCAobGVuZ3RoIGxlYWRlcikpKSkKKyAgICh0IG5pbCkpKQorCisKKyhkZWZ1biB2aW12YXJzLS1v YmV5LXRoaXMtdmltLW1vZGVsaW5lIChzZXR0aW5ncy1zdGFydCBzZXR0aW5ncy1lbmQpCisgICJP YmV5IHRoZSBWaW0gbW9kZWxpbmUgd2hpY2ggZXhpc3RzIGJldHdlZW4gU0VUVElOR1MtU1RBUlQg YW5kIFNFVFRJTkdTLUVORC4iCisgIDs7IFdlIGlnbm9yZSB0aGUgbG9jYWwgc3VmZml4LCBzaW5j ZSBmb3IgRW1hY3MKKyAgOzsgbW9zdCBzZXR0aW5ncyB3aWxsIGJlIGJ1ZmZlci1sb2NhbCBhbnl3 YXkuCisgIChnb3RvLWNoYXIgc2V0dGluZ3Mtc3RhcnQpCisgIDs7IExvb2sgZm9yIHNvbWV0aGlu ZyBsaWtlIHRoaXM6IHZpOiBzZXQgc3c9NCB0cz00OgorICA7OyBXZSBzaG91bGQgbG9vayBmb3Ig aXQgaW4gYSBjb21tZW50LCBidXQgZm9yIG5vdworICA7OyB3ZSB3b24ndCB3b3JyeSBhYm91dCB0 aGUgc3ludGF4IG9mIHRoZSBtYWpvciBtb2RlLgorICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJk CisgICAgICAgICAgIiAqXFwoW149IF0rXFwpXFwoPVxcKFteIDpdK1xcKVxcKT8iIHNldHRpbmdz LWVuZCB0KQorICAgIChsZXQgKCh2YXJpYWJsZSAodmltdmFycy0tZXhwYW5kLW9wdGlvbi1uYW1l IChtYXRjaC1zdHJpbmcgMSkpKSkKKyAgICAgIChpZiAobWF0Y2gtc3RyaW5nIDMpCisgICAgICAg ICAgKHZpbXZhcnMtLWFzc2lnbiB2YXJpYWJsZSAobWF0Y2gtc3RyaW5nIDMpKQorICAgICAgICAo dmltdmFycy0tZW5hYmxlLWZlYXR1cmUgdmFyaWFibGUpKSkpCisgIHQpCisKKworKGRlZnVuIHZp bXZhcnMtLW9iZXktdG9wLW1vZGVsaW5lICgpCisgICJDaGVjayBmb3IsIGFuZCBpZiBmb3VuZCwg b2JleSBhIFZpbSBtb2RlbGluZSBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlLgorVGhpcyBmdW5jdGlv biBtb3ZlcyBwb2ludC4iCisgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgIChpZiAoYW5kCisg ICAgICAgKHJlLXNlYXJjaC1mb3J3YXJkIHZpbXZhcnMtbW9kZWxpbmUtcmUKKyAgICAgICAgICAg ICAgICAgICAgKGxpbmUtZW5kLXBvc2l0aW9uIHZpbXZhcnMtY2hlY2stbGluZXMpIHQpCisgICAg ICAgKHZpbXZhcnMtLWFjY2VwdC10YWcgKG1hdGNoLXN0cmluZyAxKSAobWF0Y2gtc3RyaW5nIDIp KSkKKyAgICAgICh2aW12YXJzLS1vYmV5LXRoaXMtdmltLW1vZGVsaW5lIChtYXRjaC1iZWdpbm5p bmcgNCkgKG1hdGNoLWVuZCA0KSkpKQorCisKKyhkZWZ1biB2aW12YXJzLS1vYmV5LWJvdHRvbS1t b2RlbGluZSAoKQorICAiQ2hlY2sgZm9yLCBhbmQgaWYgZm91bmQsIG9iZXkgYSBWaW0gbW9kZWxp bmUgYXQgdGhlIGJvdG9tIG9mIHRoZSBmaWxlLgorVGhpcyBmdW5jdGlvbiBtb3ZlcyBwb2ludC4i CisgIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCisgIChpZiAoYW5kCisgICAgICAgKHJlLXNlYXJj aC1iYWNrd2FyZCB2aW12YXJzLW1vZGVsaW5lLXJlCisgICAgICAgICAgICAgICAgICAgICAobGlu ZS1iZWdpbm5pbmctcG9zaXRpb24KKyAgICAgICAgICAgICAgICAoLSAxIHZpbXZhcnMtY2hlY2st bGluZXMpKSB0KQorICAgICAgICh2aW12YXJzLS1hY2NlcHQtdGFnIChtYXRjaC1zdHJpbmcgMSkg KG1hdGNoLXN0cmluZyAyKSkpCisgICAgICAodmltdmFycy0tb2JleS10aGlzLXZpbS1tb2RlbGlu ZSAobWF0Y2gtYmVnaW5uaW5nIDQpIChtYXRjaC1lbmQgNCkpKSkKKworCisoZGVmdW4gdmltdmFy cy0tc2V0LWluZGVudCAoaW5kZW50KQorICAiU2V0IHRoZSBhbW91bnQgb2YgaW5kZW50YXRpb24g Y2F1c2VkIGJ5IHRhYiB0byBJTkRFTlQgaW4gYSBtb2RlLWF3YXJlIHdheS4iCisgICh3aGVuIChl cXVhbCBtYWpvci1tb2RlICdjLW1vZGUpIChzZXRxIGMtYmFzaWMtb2Zmc2V0IGluZGVudCkpKQor CisKKyhkZWZ1biB2aW12YXJzLS1leHBhbmQtb3B0aW9uLW5hbWUgKG9wdGlvbikKKyAgIkV4cGFu ZCB0aGUgYWJicmV2aWF0ZWQgVmltIDpzZXQgdmFyaWFibGUgT1BUSU9OIHRvIGl0cyBmdWxsIG5h bWUuIgorICAobGV0ICgoZXhwYW5zaW9uCisgICAgICAgICAoYXNzb2Mgb3B0aW9uCisgICAgICAg ICAgICAgICAgJygoInJvIiAicmVhZG9ubHkiKQorICAgICAgICAgICAgICAgICAgKCJzdHMiICJz b2Z0dGFic3RvcCIpCisgICAgICAgICAgICAgICAgICAoInN3IiAic2hpZnR3aWR0aCIpCisgICAg ICAgICAgICAgICAgICAoInRzIiAidGFic3RvcCIpCisgICAgICAgICAgICAgICAgICAoInR3IiAi dGV4dHdpZHRoIikpKSkpCisgICAgKGlmIGV4cGFuc2lvbiAoY2FkciBleHBhbnNpb24pIG9wdGlv bikpKQorCisKKzs7OyBOb3Qgc3VwcG9ydGVkOgorOzs7IGNvbW1lbnRzL2NvbSAoY29tbWVudCBs ZWFkZXIpLCBiZWNhdXNlIGl0J3Mgbm90IGxhbmd1YWdlLXNwZWNpZmljIGluIFZpbS4KKyhkZWZ1 biB2aW12YXJzLS1hc3NpZ24gKHZhciB2YWwpCisgICJFbXVsYXRlIFZpbSdzIDpzZXQgVkFSPVZB TC4iCisgIChtZXNzYWdlICJTZXR0aW5nIFZpbSBvcHRpb24gJXMgdG8gJXMgaW4gJXMiIHZhciB2 YWwgKGJ1ZmZlci1uYW1lKSkKKyAgKGNvbmQKKyAgICgoZXF1YWwgdmFyICJtYWtlcHJnIikgKHNl dHEgY29tcGlsZS1jb21tYW5kIHZhbCkpCisgICAoKGVxdWFsIHZhciAic2hpZnR3aWR0aCIpICh2 aW12YXJzLS1zZXQtaW5kZW50IChzdHJpbmctdG8tbnVtYmVyIHZhbCkpKQorICAgKChlcXVhbCB2 YXIgInNvZnR0YWJzdG9wIikgdCkgOyBJZ25vcmUuCisgICAoKGVxdWFsIHZhciAidGFic3RvcCIp IChzZXRxIHRhYi13aWR0aCAoc3RyaW5nLXRvLW51bWJlciB2YWwpKSkKKyAgICgoZXF1YWwgdmFy ICJ0ZXh0d2lkdGgiKSAoc2V0LWZpbGwtY29sdW1uIChzdHJpbmctdG8tbnVtYmVyIHZhbCkpKQor ICAgKHQgKG1lc3NhZ2UgIkRvbid0IGtub3cgaG93IHRvIGVtdWxhdGUgVmltIHZhcmlhYmxlICVz IiB2YXIpKSkpCisKKworOzsgVGhlc2UgZmVhdHVyZXMgYXJlIG5vdCBzdXBwb3J0ZWQsIGJ1dCBp biBwcmluY2lwbGUgdGhleSBjb3VsZCBiZToKKzs7Cis7OyBmaWxlZW5jb2RpbmcsIGVuY29kaW5n IGNvdWxkIGJlIHVzZWZ1bCBidXQgbGlrZWx5IHRvbyBoYWlyeQorOzsgZmlsZWZvcm1hdAorOzsg dGFncworOzsgdGV4dG1vZGUgKGJ1dCB0aGlzIGlzIG9ic29sZXRlIGluIFZpbSwgcmVwbGFjZWQg YnkgZmlsZWZvcm1hdCkKKzs7Cis7OyBEZWxpYmVyYXRlbHkgbm90IHN1cHBvcnRlZDoKKzs7Cis7 OyBib21iL25vYm9tZCAoYnl0ZSBvcmRlciBtYXJrIGNvbnRyb2wpLCBiZWNhdXNlIEkgZG9uJ3Qg ZXhwZWN0IGl0IGlzCis7OyBjb21vbmx5IGVub3VnaCB1c2VkIHRvIGp1c3RpZnkgdGhlIG1haW50 ZW5hbmNlIGJ1cmRlbi4KKyhkZWZ1biB2aW12YXJzLS1lbmFibGUtZmVhdHVyZSAodmFyKQorICAi RW11bGF0ZSBWaW0ncyA6c2V0IFZBUiBmb3IgdmFyaWFibGVzIHRoYXQgYXJlIGp1c3QgYm9vbGVh bi4iCisgIChtZXNzYWdlICJFbmFibGluZyBWaW0gb3B0aW9uICVzIGluICVzIiB2YXIgKGJ1ZmZl ci1uYW1lKSkKKyAgKGNvbmQKKyAgICgoZXF1YWwgdmFyICJleHBhbmR0YWIiKSAoc2V0cSBpbmRl bnQtdGFicy1tb2RlIG5pbCkpCisgICAoKGVxdWFsIHZhciAiaWdub3JlY2FzZSIpIChzZXRxIGNh c2UtZm9sZC1zZWFyY2ggdCkpCisgICAoKGVxdWFsIHZhciAicmVhZG9ubHkiKSAodG9nZ2xlLXJl YWQtb25seSAxKSkKKyAgICgoZXF1YWwgdmFyICJ3cmFwIikgKHNldHEgdHJ1bmNhdGUtbGluZXMg bmlsKSkKKyAgICgoZXF1YWwgdmFyICJ3cml0ZSIpICh0b2dnbGUtcmVhZC1vbmx5IC0xKSkgOyBT ZWUgbm93cml0ZSBiZWxvdy4KKworICAgKChlcXVhbCB2YXIgIm5vZXhwYW5kdGFiIikgKHNldHEg aW5kZW50LXRhYnMtbW9kZSB0KSkKKyAgICgoZXF1YWwgdmFyICJub2lnbm9yZWNhc2UiKSAoc2V0 cSBjYXNlLWZvbGQtc2VhcmNoIG5pbCkpCisgICAoKGVxdWFsIHZhciAibm9yZWFkb25seSIpICh0 b2dnbGUtcmVhZC1vbmx5IC0xKSkKKyAgICgoZXF1YWwgdmFyICJub3dyYXAiKSAoc2V0cSB0cnVu Y2F0ZS1saW5lcyB0KSkKKworICAgOzsgSW4gVmltLCBzZXR0aW5nICdub3dyaXRlJyBvcHRpb24g Y3JlYXRlcyBhIHNpdHVhdGlvbgorICAgOzsgaW4gd2hpY2ggZWRpdGluZyB0aGUgZmlsZSBnZW5l cmF0ZXMgbm8gd2FybmluZyAodW5saWtlCisgICA7OyAnc2V0IHJlYWRvbmx5JykgYnV0IGJ5IGRl ZmF1bHQgYXR0ZW1wdHMgdG8gc2F2ZSB0aGUKKyAgIDs7IGZpbGUgKGV2ZW4gdG8gYSBuZXcgZmls ZSBuYW1lKSBnZW5lcmF0ZSBhIHdhcm5pbmcuCisgICAoKGVxdWFsIHZhciAibm93cml0ZSIpICh0 b2dnbGUtcmVhZC1vbmx5IDEpKSA7IFNpbWlsYXIsIG5vdCB0aGUgc2FtZQorCisgICAodCAobWVz c2FnZSAiRG9uJ3Qga25vdyBob3cgdG8gZW11bGF0ZSBWaW0gZmVhdHVyZSAlcyIgdmFyKSkpKQor Cis7OyBJZiB5b3Ugd2FudCB0byBtYW51YWxseSB0ZXN0IHZpbXZhcnMsIG9uZSB3YXkgdG8gZG8g dGhpcyBpcworOzsgdGVtcG9yYXJpbHkgdG8gY3JlYXRlIGFuIEVtYWNzIExpc3AgZmlsZSAod2hp Y2ggd2Ugd2lsbCBjYWxsCis7OyBzZXR1cC5lbCkgaW4gYSBjb252ZW5pZW50IGxvY2F0aW9uLCBs aWtlIHRoaXM6Cis7OworOzsgKGxvYWQtZmlsZSAifi92aW12YXJzLmVsIikKKzs7IChhZGQtaG9v ayAnZmluZC1maWxlLWhvb2sgJ3ZpbXZhcnMtb2JleS12aW0tbW9kZWxpbmUpCis7OworOzsgVGhl biwgeW91IGNhbiB0ZXN0IGl0IGxpa2UgdGhpczoKKzs7IGVtYWNzIC1xIC1udyAtbCBzZXR1cC5l bCBteS10ZXN0LWZpbGUtbmFtZQorCisocHJvdmlkZSAndmltdmFycykKKzs7OyB2aW12YXJzLmVs IGVuZHMgaGVyZQpkaWZmIC0tZ2l0IGEvdGVzdC9saXNwL2VtdWxhdGlvbi92aW12YXJzLXRlc3Rz LmVsIGIvdGVzdC9saXNwL2VtdWxhdGlvbi92aW12YXJzLXRlc3RzLmVsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iYzBlZmRiMzY1OAotLS0gL2Rldi9udWxsCisrKyBi L3Rlc3QvbGlzcC9lbXVsYXRpb24vdmltdmFycy10ZXN0cy5lbApAQCAtMCwwICsxLDQyOCBAQAor Ozs7IHZpbXZhcnMtdGVzdHMuZWwgLS0tIFRlc3RzIGZvciB2aW12YXJzLmVsCisKKzs7IENvcHly aWdodCAoQykgMjAxMSwyMDI1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCis7OyBB dXRob3I6IEphbWVzIFlvdW5nbWFuIDxqYW1lc0B5b3VuZ21hbi5vcmc+Cis7OyBNYWludGFpbmVy OiBKYW1lcyBZb3VuZ21hbiA8amFtZXNAeW91bmdtYW4ub3JnPgorCis7OyB2aW12YXJzIGlzIGZy ZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKzs7IGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Cis7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgorOzsgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKworOzsgdmltdmFycyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKzs7IEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKzs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCis7OyBhbG9uZyB3aXRoIHZp bXZhcnMuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyhl cnQtZGVmdGVzdCB2aW12YXJzLXRlc3QtbW9kZWxpbmUtYWNjZXB0LXZpbS12aS1ib2wgKCkKKyAg IkNoZWNrIHdlIGFjY2VwdCAndmltOicgb3IgJ3ZpOicgYXQgYmVnaW5uaW5nIG9mIGxpbmUuCisK KyAgIEN1cnJlbnQgcmVsZWFzZXMgb2YgVmltIGRvIHRoaXMgZm9yIGNvbXBhdGliaWxpdHkgd2l0 aCBWaW0gdmVyc2lvbgorICAgMy4wLiIKKyAgOzsgVmVyaWZpZWQgYnkgY29tcGFyaXNvbiB3aXRo IFZpbSA5LjAsIEp1bCAxNiAyMDI1LgorICAoc2hvdWxkICh2aW12YXJzLS1hY2NlcHQtdGFnICIi ICJ2aW0iKSkKKyAgKHNob3VsZCAodmltdmFycy0tYWNjZXB0LXRhZyAiIiAidmkiKSkpCisKKyhl cnQtZGVmdGVzdCB2aW12YXJzLXRlc3QtbW9kZWxpbmUtaWdub3JlLWV4LWJvbCAoKQorICAiQ2hl Y2sgd2UgZG8gbm90IGFjY2VwdCAnZXg6JyBhdCBiZWdpbm5pbmcgb2YgbGluZS4iCisgIDs7IFZl cmlmaWVkIGJ5IGNvbXBhcmlzb24gd2l0aCBWaW0gOS4wLCBKdWwgMTYgMjAyNS4KKyAgKHNob3Vs ZCAobm90ICh2aW12YXJzLS1hY2NlcHQtdGFnICIiICJleCIpKSkpCisKKyhlcnQtZGVmdGVzdCB2 aW12YXJzLXRlc3QtbW9kZWxpbmUtYWNjZXB0LXZpbS12aS1leC1ub3QtYm9sICgpCisgICJDaGVj ayB3ZSBhY2NlcHQgJ3ZpbTonLCAndmknIGFuZCAnZXg6JyBhZnRlciB0aGUgYmVnaW5uaW5nIG9m IGxpbmUiCisgIDs7IFZlcmlmaWVkIGJ5IGNvbXBhcmlzb24gd2l0aCBWaW0gOS4wLCBKdWwgMTYg MjAyNS4KKyAgKHNob3VsZCAodmltdmFycy0tYWNjZXB0LXRhZyAiICIgInZpbSIpKQorICAoc2hv dWxkICh2aW12YXJzLS1hY2NlcHQtdGFnICIgIiAidmkiKSkKKyAgKHNob3VsZCAodmltdmFycy0t YWNjZXB0LXRhZyAiICIgImV4IikpCisgIChzaG91bGQgKHZpbXZhcnMtLWFjY2VwdC10YWcgIlx0 IiAidmltIikpCisgIChzaG91bGQgKHZpbXZhcnMtLWFjY2VwdC10YWcgIlx0IiAidmkiKSkKKyAg KHNob3VsZCAodmltdmFycy0tYWNjZXB0LXRhZyAiXHQiICJleCIpKSkKKworKGVydC1kZWZ0ZXN0 IHZpbXZhcnMtdGVzdC1tb2RlbGluZS1pZ25vcmUtZm9vLWJvbCAoKQorICAiQ2hlY2sgd2UgZG8g bm90IGFjY2VwdCAnZm9vOicgYXQgYmVnaW5uaW5nIG9mIGxpbmUgKGFzIGEgbW9kZWxpbmUpLiIK KyAgOzsgVmVyaWZpZWQgYnkgY29tcGFyaXNvbiB3aXRoIFZpbSA5LjAsIEp1bCAxNiAyMDI1Lgor ICAoc2hvdWxkIChub3QgKHZpbXZhcnMtLWFjY2VwdC10YWcgIiIgImZvbyIpKSkKKyAgKHNob3Vs ZCAobm90ICh2aW12YXJzLS1hY2NlcHQtdGFnICIgIiAiZm9vIikpKSkKKworKGVydC1kZWZ0ZXN0 IHZpbXZhcnMtdGVzdC12aW12YXJzLWVuYWJsZWQtbmlsICgpCisgICJWZXJpZnkgdGhhdCB3ZSBv YmV5IHZpbXZhcnMtZW5hYmxlZCB3aGVuIGl0IGlzIG5pbCIKKyAgKGxldCAoKHZpbXZhcnMtZW5h YmxlZCBuaWwpCisgICAgICAgIChmaWxlLWxvY2FsLXZhcmlhYmxlcy1hbGlzdCBuaWwpCisgICAg ICAgICh2aW12YXJzLWlnbm9yZS1tb2RlLWxpbmUtaWYtbG9jYWwtdmFyaWFibGVzLWV4aXN0IG5p bCkpCisgICAgKHNob3VsZCAobm90ICh2aW12YXJzLS1zaG91bGQtb2JleS1tb2RlbGluZSkpKSkp CisKKyhlcnQtZGVmdGVzdCB2aW12YXJzLXRlc3Qtbm8tbG9jYWwtdmFyaWFibGVzICgpCisgICJW ZXJpZnkgdGhhdCB3ZSBvYmV5IHZpIG1vZGUgbGluZXMgaW4gdGhlIGFic2VuY2Ugb2YgbG9jYWwg dmFyaWFibGVzIgorICAobGV0ICgodmltdmFycy1lbmFibGVkIHQpCisgICAgICAgIChmaWxlLWxv Y2FsLXZhcmlhYmxlcy1hbGlzdCBuaWwpCisgICAgICAgICh2aW12YXJzLWlnbm9yZS1tb2RlLWxp bmUtaWYtbG9jYWwtdmFyaWFibGVzLWV4aXN0IG5pbCkpCisgICAgKHNob3VsZCAodmltdmFycy0t c2hvdWxkLW9iZXktbW9kZWxpbmUpKSkpCisKKyhlcnQtZGVmdGVzdCB2aW12YXJzLXRlc3Qtd2l0 aC1sb2NhbC12YXJpYWJsZXMgKCkKKyAgIlZlcmlmeSB0aGF0IHdlIGlnbm9yZSB2aSBtb2RlIGxp bmVzIGlmIHRoZXJlIGFyZSBsb2NhbCB2YXJpYWJsZXMiCisgIChsZXQgKCh2aW12YXJzLWVuYWJs ZWQgdCkKKyAgICAgICAgKGZpbGUtbG9jYWwtdmFyaWFibGVzLWFsaXN0ICcoKHRhYi13aWR0aCAu IDgpKSkKKyAgICAgICAgKHZpbXZhcnMtaWdub3JlLW1vZGUtbGluZS1pZi1sb2NhbC12YXJpYWJs ZXMtZXhpc3QgdCkpCisgICAgKHNob3VsZCAobm90ICh2aW12YXJzLS1zaG91bGQtb2JleS1tb2Rl bGluZSkpKSkpCisKKworKGVydC1kZWZ0ZXN0IHZpbXZhcnMtdGVzdC13aXRoLWJvdGggKCkKKyAg IlZlcmlmeSB0aGF0IHdlIHVzZSBib3RoIHZpIG1vZGUgbGluZXMgYW5kIGxvY2FsIHZhcmlhYmxl cyBpZiB2aW12YXJzLWlnbm9yZS1tb2RlLWxpbmUtaWYtbG9jYWwtdmFyaWFibGVzLWV4aXN0IGlz IG5pbCIKKyAgKGxldCAoKHZpbXZhcnMtZW5hYmxlZCB0KQorICAgICAgICAoZmlsZS1sb2NhbC12 YXJpYWJsZXMtYWxpc3QgJygodGFiLXdpZHRoIC4gOCkpKQorICAgICAgICAodmltdmFycy1pZ25v cmUtbW9kZS1saW5lLWlmLWxvY2FsLXZhcmlhYmxlcy1leGlzdCBuaWwpKQorICAgIChzaG91bGQg KHZpbXZhcnMtLXNob3VsZC1vYmV5LW1vZGVsaW5lKSkpKQorCisoZXJ0LWRlZnRlc3QgdmltdmFy cy10ZXN0LWV4cGFuc2lvbnMgKCkKKyAgIkNoZWNrIGV4cGFuc2lvbiBvZiBybywgc3RzLCBzdywg dHMsIHR3IgorICAoc2hvdWxkIChlcXVhbCAodmltdmFycy0tZXhwYW5kLW9wdGlvbi1uYW1lICJy byIpICJyZWFkb25seSIpKQorICAoc2hvdWxkIChlcXVhbCAodmltdmFycy0tZXhwYW5kLW9wdGlv bi1uYW1lICJzdHMiKSAic29mdHRhYnN0b3AiKSkKKyAgKHNob3VsZCAoZXF1YWwgKHZpbXZhcnMt LWV4cGFuZC1vcHRpb24tbmFtZSAic3ciKSAic2hpZnR3aWR0aCIpKQorICAoc2hvdWxkIChlcXVh bCAodmltdmFycy0tZXhwYW5kLW9wdGlvbi1uYW1lICJ0cyIpICJ0YWJzdG9wIikpCisgIChzaG91 bGQgKGVxdWFsICh2aW12YXJzLS1leHBhbmQtb3B0aW9uLW5hbWUgInR3IikgInRleHR3aWR0aCIp KSkKKworKGVydC1kZWZ0ZXN0IHZpbXZhcnMtdGVzdC1ub25leHBhbnNpb25zICgpCisgICJDaGVj ayB3ZSBkb24ndCAnZXhwYW5kJyBzb21ldGhpbmcgdGhhdCdzIG5vdCBhbiBhYmJyZXZpYXRpb24i CisgIChzaG91bGQgKGVxdWFsICh2aW12YXJzLS1leHBhbmQtb3B0aW9uLW5hbWUgImJsZWhibGVo IikgImJsZWhibGVoIikpKQorCisoZGVmdW4ga2lsbC1idWZmZXJzLXZpc2l0aW5nIChmaWxlbmFt ZSkKKyAgKHdoaWxlCisgICAgICAobGV0IChleGlzdGluZyAoZ2V0LWZpbGUtYnVmZmVyIGZpbGVu YW1lKSkKKyAgICAgICAgICAgKHdoZW4gZXhpc3RpbmcgKGtpbGwtYnVmZmVyIGV4aXN0aW5nKSkp KSkKKworKGRlZm1hY3JvIHZpbXZhcnMtdGVzdHMtLXJ1bi1jaGVja3MtZm9yLWZpbGUtYm9keSAo c3VmZml4IGNvbnRlbnQgJnJlc3QgY2hlY2tzKQorICAiV3JpdGUgYSB0ZW1wb3JhcnkgZmlsZSB3 aG9zZSBuYW1lIGhhcyBzdWZmaXggU1VGRklYLCBoYXZpbmcgY29udGVudCBDT05URU5ULgorVmlz aXQgaXQgd2l0aCBmaW5kLWZpbGUsIGFuZCBldmFsdWF0ZSBDSEVDS1MuCisKK1JldHVybnMgdGhl IHJlc3VsdCBvZiB0aGUgZmluYWwgaXRlbSBpbiBDSEVDS1MuIgorICAobGV0ICgoZm5hbWUgKG1h a2Utc3ltYm9sICJmaWxlbmFtZSIpKSkKKyAgICBgKGxldCAoKCxmbmFtZSAobWFrZS10ZW1wLWZp bGUgImZvbyIgbmlsICxzdWZmaXgpKQorICAgICAgICAgICAgICAob2xkLXZpbXZhcnMtY2hlY2st bGluZXMgdmltdmFycy1jaGVjay1saW5lcykKKyAgICAgICAgICAgICAgKG9sZC1kZWZhdWx0LWZp bGwtY29sdW1uIChkZWZhdWx0LXZhbHVlICdmaWxsLWNvbHVtbikpCisgICAgICAgICAgICAgIChv bGQtdGFiLXdpZHRoIChkZWZhdWx0LXZhbHVlICd0YWItd2lkdGgpKQorICAgICAgICAgICAgICAo b2xkLWZpbmQtZmlsZS1ob29rcyBmaW5kLWZpbGUtaG9va3MpKQorICAgICAgICh1bndpbmQtcHJv dGVjdAorICAgICAgICAgICAgICAocHJvZ24KKyAgICAgICAgICAgICAgICAgICAgICA7OyBTZXQg dXAgYSBzdGFuZGFyZCB0ZXN0aW5nIGVudmlyb25tZW50IChjaG9vc2luZworICAgICAgICAgICAg ICAgICAgICAgIDs7IHVudXN1YWwgdmFsdWVzIHNvIHRoYXQgaXQncyBvYnZpb3VzIHdoZW4gdGhl cmUgaXMgYQorICAgICAgICAgICAgICAgICAgICAgIDs7IHByb2JsZW0pLgorICAgICAgICAgICAg ICAgICAgICAgIChzZXRxLWRlZmF1bHQgZmlsbC1jb2x1bW4gNDAKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRhYi13aWR0aCAxNCkKKyAgICAgICAgICAgICAgICAgICAg ICAoc2V0cSB2aW12YXJzLWNoZWNrLWxpbmVzIDUpCisgICAgICAgICAgICAgICAgICAgICAgOzsg R3VpZGFuY2UgZm9yIEVSVCAoaW4gIlRlc3RzIGFuZCBUaGVpciBFbnZpcm9ubWVudCIpCisgICAg ICAgICAgICAgICAgICAgICAgOzsgaXMgdG8gYXZvaWQgdXNpbmcgZmluZC1maWxlIGluIHRlc3Rz LCBzbyB3ZSBzaG91bGQKKyAgICAgICAgICAgICAgICAgICAgICA7OyBmaW5kIGEgd2F5IHRvIHBl cmZvcm0gdGhlc2UgdGVzdHMgd2l0aG91dCB1c2luZyBpdC4KKyAgICAgICAgICAgICAgICAgICAg ICAoYWRkLWhvb2sgJ2ZpbmQtZmlsZS1ob29rICd2aW12YXJzLW9iZXktdmltLW1vZGVsaW5lKQor ICAgICAgICAgICAgICAgICh3aXRoLXRlbXAtZmlsZSAsZm5hbWUgKGluc2VydCAsY29udGVudCkp CisgICAgICAgICAgICAgICAgKGtpbGwtYnVmZmVycy12aXNpdGluZyAsZm5hbWUpCisgICAgICAg ICAgICAgICAgKGZpbmQtZmlsZSAsZm5hbWUpCisgICAgICAgICAgICAgICAgLEBjaGVja3MpCisg ICAgICAgICAgICAocHJvZ24KKyAgICAgICAgICAgICAgOzsgS2lsbCB0aGUgYnVmZmVyIGFuZCBk ZWxldGUgdGhlIHRlbXBvcmFyeSBmaWxlLgorICAgICAgICAgICAgICAoa2lsbC1idWZmZXIpCisg ICAgICAgICAgICAgIChkZWxldGUtZmlsZSAsZm5hbWUpCisgICAgICAgICAgICAgICAgIDs7IFJl c3RvcmUgZGVmYXVsdHMgZXRjLgorICAgICAgICAgICAgICAgICAoc2V0cS1kZWZhdWx0IGZpbGwt Y29sdW1uIG9sZC1kZWZhdWx0LWZpbGwtY29sdW1uCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGFiLXdpZHRoIG9sZC10YWItd2lkdGgpCisgICAgICAgICAgICAgICAgIChz ZXRxIHZpbXZhcnMtY2hlY2stbGluZXMgb2xkLXZpbXZhcnMtY2hlY2stbGluZXMKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgZmluZC1maWxlLWhvb2tzIG9sZC1maW5kLWZpbGUtaG9va3MpKSkp KSkKKworKGRlZm1hY3JvIHZpbXZhcnMtdGVzdHMtLXJ1bi1jaGVja3MtZm9yLXRleHQtZmlsZSAo Y29udGVudCAmcmVzdCBjaGVja3MpCisgICJDYWxscyB2aW12YXJzLXRlc3RzLS1ydW4tY2hlY2tz LWZvci1maWxlLWJvZHkgd2l0aCBTVUZGSVggc2V0IHRvIC50eHQuIgorICBgKHZpbXZhcnMtdGVz dHMtLXJ1bi1jaGVja3MtZm9yLWZpbGUtYm9keSAiLnR4dCIgLGNvbnRlbnQgLEBjaGVja3MpKQor CisoZXJ0LWRlZnRlc3QgdmltdmFycy10ZXN0LXN3LTIgKCkKKyAgIlZlcmlmeSAnc2V0IHN3PTIn IHdvcmtzIGluIEMgc291cmNlIGZpbGVzLiIKKyAgKHZpbXZhcnMtdGVzdHMtLXJ1bi1jaGVja3Mt Zm9yLWZpbGUtYm9keQorICAgIi5jIgorICAgIi8qIFRoaXMgaXMgYSBDIHNvdXJjZSBmaWxlLlxu IHZpbTogc2V0IHN3PTIgOlxuKi9cbiIKKyAgIChzaG91bGQgKGVxdWFsIGMtYmFzaWMtb2Zmc2V0 IDIpKSkpCisKKzs7IERvIGEgZGlmZmVyZW50IGNoZWNrIHdpdGggYSBkaXN0aW5jdCBjLWJhc2lj LW9mZnNldCBzbyB0aGF0Cis7OyB3ZSBjYW4gdGVsbCBmb3Igc3VyZSB3ZSdyZSBhY3R1YWxseSBj aGFuZ2luZyBpdC4KKyhlcnQtZGVmdGVzdCB2aW12YXJzLXRlc3Qtc3ctNCAoKQorICAiVmVyaWZ5 ICdzZXQgc3c9NCcgd29ya3MgaW4gQyBzb3VyY2UgZmlsZXMuIgorICAodmltdmFycy10ZXN0cy0t cnVuLWNoZWNrcy1mb3ItZmlsZS1ib2R5CisgICAiLmMiCisgICAiLyogVGhpcyBpcyBhIEMgc291 cmNlIGZpbGUuXG4gdmltOiBzZXQgc3c9NCA6XG4qL1xuIgorICAgKHNob3VsZCAoZXF1YWwgYy1i YXNpYy1vZmZzZXQgNCkpKSkKKworKGVydC1kZWZ0ZXN0IHZpbXZhcnMtdGVzdC1kaXNhYmxlICgp CisgICJDaGVjayB0aGF0IHNldHRpbmcgdmltdmFycy1lbmFibGVkIHRvIG5pbCB0dXJucyB2aW12 YXJzLW9iZXktdmltLW1vZGVsaW5lIG9mZi4iCisgIChsZXQgKCh2aW12YXJzLWVuYWJsZWQgbmls KSkKKyAgICAodmltdmFycy10ZXN0cy0tcnVuLWNoZWNrcy1mb3ItdGV4dC1maWxlCisgICAgICJU aGlzIGlzIGEgdGV4dCBmaWxlLlxuIyB2aW06IHNldCB0cz0xOCA6XG4iCisgICAgIChzaG91bGQg KGVxdWFsIHRhYi13aWR0aCAxNCkpKSkpCisKKyhlcnQtZGVmdGVzdCB2aW12YXJzLXRlc3QtYmFz aWMtc3VjY2Vzcy1jYXNlICgpCisgICAgIkNoZWNrIHRoYXQgZXZlbiBvbmUgaXRlbSBhY3R1YWxs eSB3b3Jrcy4iCisgICAgKHZpbXZhcnMtdGVzdHMtLXJ1bi1jaGVja3MtZm9yLXRleHQtZmlsZQor ICAgICAiIyB2aTogc2V0IHRzPTE4IDpcbiIKKyAgICAgKHNob3VsZCAoZXF1YWwgdGFiLXdpZHRo IDE4KSkpKQorCisoZXJ0LWRlZnRlc3QgdmltdmFycy10ZXN0LXJlcXVpcmUtdHJhaWxpbmctY29s b24gKCkKKyAgIkNoZWNrIHRoYXQgd2UgaWdub3JlIG1vZGVsaW5lcyB3aXRoIG5vIHRyYWlsaW5n IGNvbG9uLiIKKyAgKHZpbXZhcnMtdGVzdHMtLXJ1bi1jaGVja3MtZm9yLXRleHQtZmlsZQorICAg IlRoaXMgaXMgYSB0ZXh0IGZpbGUuXG4jIHZpbTogc2V0IHRzPTE4IFxuIgorICAgKHNob3VsZCAo ZXF1YWwgdGFiLXdpZHRoIDE0KSkpKSA7IGkuZS4gdW5jaGFuZ2VkIGZyb20gZGVmYXVsdC4KKwor KGVydC1kZWZ0ZXN0IHRlc3QtcmVqZWN0LWV4LWF0LXN0YXJ0ICgpCisgICJDaGVjayBleDogYXQg dGhlIHN0YXJ0IG9mIHRoZSBsaW5lIGlzIHJlamVjdGVkLiIKKyAgKHZpbXZhcnMtdGVzdHMtLXJ1 bi1jaGVja3MtZm9yLXRleHQtZmlsZQorICAgImV4OiBzZXQgdHM9MTggOlxuIgorICAgKHNob3Vs ZCAoZXF1YWwgdGFiLXdpZHRoIDE0KSkpKQorCisoZXJ0LWRlZnRlc3QgdmltdmFycy10ZXN0LW1v ZGVsaW5lLXRvby1mYXItZnJvbS10b3AgKCkKKyAgIkNoZWNrIHdlIGlnbm9yZSBtb2RlIGxpbmVz IG1vcmUgdGhhbiBgdmltdmFycy1jaGVjay1saW5lcycgaW50byB0aGUgZmlsZS4iCisgICh2aW12 YXJzLXRlc3RzLS1ydW4tY2hlY2tzLWZvci10ZXh0LWZpbGUKKyAgICJNb2RlIGxpbmVzIGF0IGxp bmUgNiBzaG91bGQgYmUgaWdub3JlZFxuXG5cblxuXG4jIHZpbTogc2V0IHRzPTYgOlxuXG5cblxu XG5cblxuIgorICAgKHNob3VsZCAoZXF1YWwgdGFiLXdpZHRoIDE0KSkpCisKKyAgKHZpbXZhcnMt dGVzdHMtLXJ1bi1jaGVja3MtZm9yLXRleHQtZmlsZQorICAgIk1vZGUgbGluZXMgYXQgbGluZSA1 IHNob3VsZCBiZSBhY2NlcHRlZC5cblxuXG5cbiMgdmltOiBzZXQgdHM9MTAgOlxuIgorICAgKHNo b3VsZCAoZXF1YWwgdGFiLXdpZHRoIDEwKSkpKQorCisoZXJ0LWRlZnRlc3QgdmltdmFycy10ZXN0 LW1vZGVsaW5lLXRvby1mYXItZnJvbS1ib3R0b20gKCkKKyAgIkNoZWNrIHdlIG9ubHkgYWNjZXB0 IG1vZGUgbGluZXMgd2l0aGluIGB2aW12YXJzLWNoZWNrLWxpbmVzJyBvZiBFT0YuIgorICAodmlt dmFycy10ZXN0cy0tcnVuLWNoZWNrcy1mb3ItdGV4dC1maWxlCisgICAiTW9kZSBsaW5lcyA1IGxp bmVzIGZyb20gRU9GIHNob3VsZCBiZSBhY2NlcHRlZC5cblxuXG5cblxuXG4KKyMgdmltOiBzZXQg dHM9MTAgOlxuXG5cblxuXG4iCisgICAoc2hvdWxkIChlcXVhbCB0YWItd2lkdGggMTApKSkKKwor ICAodmltdmFycy10ZXN0cy0tcnVuLWNoZWNrcy1mb3ItdGV4dC1maWxlCisgICAiTW9kZSBsaW5l cyA2IGxpbmVzIGZyb20gRU9GIHNob3VsZCBiZSBpZ25vcmVkLlxuXG5cblxuXG5cbgorIyB2aW06 IHNldCB0cz0xMCA6XG5cblxuXG5cblxuXG4iCisgICAoc2hvdWxkIChlcXVhbCB0YWItd2lkdGgg MTQpKSkpCisKKyhlcnQtZGVmdGVzdCB2aW12YXJzLXRlc3QtbWFrZXByZyAoKQorICAiQ2hlY2sg bWFrZXByZz1ibGFoIHdvcmtzLiIKKyAgKHZpbXZhcnMtdGVzdHMtLXJ1bi1jaGVja3MtZm9yLXRl eHQtZmlsZQorICAgIlRoaXMgaXMgYSB0ZXh0IGZpbGUuXG4jIHZpbTogc2V0IG1ha2Vwcmc9Z21h a2UgOlxuIgorICAgKHNob3VsZCAoZXF1YWwgY29tcGlsZS1jb21tYW5kICJnbWFrZSIpKSkpCisK KworKGRlZnVuIHZpbXZhcnMtdGVzdC1jaGVjay1yZWNvZ25pc2UtbW9kZWxpbmUgKGRlc2NyaXB0 aW9uIG1vZGVsaW5lKQorICAobGV0ICgoYWN0dWFsLW1vZGVsaW5lIChjb25jYXQgbW9kZWxpbmUg IlxuIikpKQorICAgICh2aW12YXJzLXRlc3RzLS1ydW4tY2hlY2tzLWZvci10ZXh0LWZpbGUKKyAg ICAgYWN0dWFsLW1vZGVsaW5lCisgICAgIChzaG91bGQgKGVxdWFsIHRhYi13aWR0aCAxOCkpKSkp CisKKworKGVydC1kZWZ0ZXN0IHZpbXZhcnMtdGVzdC1tb2RlbGluZS1hY2NlcHQtdmltLXNldCAo KQorICAgICh2aW12YXJzLXRlc3QtY2hlY2stcmVjb2duaXNlLW1vZGVsaW5lCisgICAgICJ0ZXN0 LWFjY2VwdC12aW0tc2V0IgorICAgICAiIyB2aW06IHNldCB0cz0xOCA6XG4iKSkKKworKGVydC1k ZWZ0ZXN0IHZpbXZhcnMtdGVzdC1tb2RlbGluZS1hY2NlcHQtdmktc2V0ICgpCisgICh2aW12YXJz LXRlc3QtY2hlY2stcmVjb2duaXNlLW1vZGVsaW5lCisgICAidGVzdC1hY2NlcHQtdmktc2V0Igor ICAgIiMgdmk6IHNldCB0cz0xOCA6XG4iKSkKKworKGVydC1kZWZ0ZXN0IHZpbXZhcnMtdGVzdC1t b2RlbGluZS1hY2NlcHQtZXgtc2V0ICgpCisgICh2aW12YXJzLXRlc3QtY2hlY2stcmVjb2duaXNl LW1vZGVsaW5lCisgICAidGVzdC1hY2NlcHQtZXgtc2V0IgorICAgIiMgZXg6IHNldCB0cz0xOCA6 XG4iKSkKKworKGVydC1kZWZ0ZXN0IHZpbXZhcnMtdGVzdC1tb2RlbGluZS12aW0tc2UgKCkKKyAg KHZpbXZhcnMtdGVzdC1jaGVjay1yZWNvZ25pc2UtbW9kZWxpbmUKKyAgICJ0ZXN0LWFjY2VwdC12 aW0tc2UiCisgICAiIyB2aW06IHNlIHRzPTE4IDpcbiIpKQorCisoZXJ0LWRlZnRlc3QgdmltdmFy cy10ZXN0LW1vZGVsaW5lLWFjY2VwdC12aS1zZSAoKQorICAodmltdmFycy10ZXN0LWNoZWNrLXJl Y29nbmlzZS1tb2RlbGluZQorICAgInRlc3QtYWNjZXB0LXZpLXNlIgorICAgIiMgdmk6IHNlIHRz PTE4IDpcbiIpKQorCisoZXJ0LWRlZnRlc3QgdmltdmFycy10ZXN0LW1vZGVsaW5lLWFjY2VwdC1l eC1zZSAoKQorICAodmltdmFycy10ZXN0LWNoZWNrLXJlY29nbmlzZS1tb2RlbGluZQorICAgInRl c3QtYWNjZXB0LWV4LXNlIgorICAgIiMgZXg6IHNlIHRzPTE4IDpcbiIpKQorCisoZXJ0LWRlZnRl c3QgdmltdmFycy10ZXN0LW1vZGVsaW5lLWFjY2VwdC12aW0tc2V0bG9jYWwgKCkKKyAgKHZpbXZh cnMtdGVzdC1jaGVjay1yZWNvZ25pc2UtbW9kZWxpbmUKKyAgICJ0ZXN0LWFjY2VwdC12aW0tc2V0 bG9jYWwiCisgICAiIyB2aW06IHNldGxvY2FsIHRzPTE4IDpcbiIpKQorCisoZXJ0LWRlZnRlc3Qg dmltdmFycy10ZXN0LW1vZGVsaW5lLWFjY2VwdC12aS1zZXRsb2NhbCAoKQorICAodmltdmFycy10 ZXN0LWNoZWNrLXJlY29nbmlzZS1tb2RlbGluZQorICAgInRlc3QtYWNjZXB0LXZpLXNldGxvY2Fs IgorICAgIiMgdmk6IHNldGxvY2FsIHRzPTE4IDpcbiIpKQorCisoZXJ0LWRlZnRlc3QgdmltdmFy cy10ZXN0LW1vZGVsaW5lLWFjY2VwdC1leC1zZXRsb2NhbCAoKQorICAodmltdmFycy10ZXN0LWNo ZWNrLXJlY29nbmlzZS1tb2RlbGluZQorICAgInRlc3QtYWNjZXB0LWV4LXNldGxvY2FsIgorICAg IiMgZXg6IHNldGxvY2FsIHRzPTE4IDpcbiIpKQorCisoZXJ0LWRlZnRlc3QgdmltdmFycy10ZXN0 LW1vZGVsaW5lLWFjY2VwdC1uby1zcGFjZS1iZWZvcmUtZmluYWwtY29sb24gKCkKKyAgIkNoZWNr IG1vZGVsaW5lcyB3b3JrIGV2ZW4gd2l0aG91dCBhIHNwYWNlIGJlZm9yZSB0aGUgZmluYWwgY29s b24uIgorICAodmltdmFycy10ZXN0LWNoZWNrLXJlY29nbmlzZS1tb2RlbGluZQorICAgInRlc3Qt YWNjZXB0LW5vLXNwYWNlLWJlZm9yZS1maW5hbC1jb2xvbiIKKyAgICIjIHZpOiBzZXQgdHM9MTg6 XG4iKSkKKworKGVydC1kZWZ0ZXN0IHZpbXZhcnMtdGVzdC1tb2RlbGluZS1hY2NlcHQtZXh0cmEt c3BhY2VzICgpCisgICJDaGVjayBleHRyYSBzcGFjZXMgYmVmb3JlIHZpOiBhcmUgYWNjZXB0ZWQi CisgICh2aW12YXJzLXRlc3QtY2hlY2stcmVjb2duaXNlLW1vZGVsaW5lCisgICAidGVzdC1hY2Nl cHQtZXh0cmEtc3BhY2VzIgorICAgIiMgICB2aTogc2V0IHRzPTE4IDpcbiIpKQorCisoZXJ0LWRl ZnRlc3QgdmltdmFycy10ZXN0LW1vZGVsaW5lLWFjY2VwdC10YWIgKCkKKyAgIkNoZWNrIHRhYnMg YmVmb3JlIHZpOiBhcmUgYWNjZXB0ZWQuIgorICAodmltdmFycy10ZXN0LWNoZWNrLXJlY29nbmlz ZS1tb2RlbGluZQorICAgInRlc3QtYWNjZXB0LXRhYiIKKyAgICIjXHR2aTogc2V0IHRzPTE4IDpc biIpKQorCisoZXJ0LWRlZnRlc3QgdmltdmFycy10ZXN0LW1vZGVsaW5lLWFjY2VwdC12aS1hdC1z dGFydCAoKQorICAiQ2hlY2sgdmk6IGF0IHRoZSBzdGFydCBvZiB0aGUgbGluZSBpcyBhY2NlcHRl ZCIKKyAgKHZpbXZhcnMtdGVzdC1jaGVjay1yZWNvZ25pc2UtbW9kZWxpbmUKKyAgICJ0ZXN0LWFj Y2VwdC12aS1hdC1zdGFydCIKKyAgICJ2aTogc2V0IHRzPTE4IDpcbiIpKQorCisoZGVmbWFjcm8g dmltdmFycy10ZXN0cy0td2l0aC10ZW1wLWRlZmF1bHQgKHZhcm5hbWUgdGVtcC12YWx1ZSAmcmVz dCBib2R5KQorICAiRXhlY3V0ZSBCT0RZIHdpdGggdGhlIGRlZmF1bHQgdmFsdWUgb2YgVkFSIHNl dCB0byBWQUxVRS4KKworVGhlIHZhbHVlIG9mIHRoZSBmaW5hbCBleHByZXNzaW9uIGluIEJPRFkg aXMgcmV0dXJuZWQuIgorICAobGV0ICgob2xkdmFsLXZhciAobWFrZS1zeW1ib2wgInByZXZpb3Vz LWRlZmF1bHQiKSkpCisgICAgYChsZXQgKCgsb2xkdmFsLXZhciAsdmFybmFtZSkpCisgICAgICAg KHNldHEtZGVmYXVsdCAsdmFybmFtZSAsdGVtcC12YWx1ZSkKKyAgICAgICAodW53aW5kLXByb3Rl Y3QKKyAgICAgICAgICAgICAgKHByb2duICxAYm9keSkKKyAgICAgICAgICAgIChzZXRxLWRlZmF1 bHQgLHZhcm5hbWUgLG9sZHZhbC12YXIpKSkpKQorCisoZXJ0LWRlZnRlc3QgdmltdmFycy10ZXN0 LW9iZXktc2V0LW5vaWdub3JlY2FzZSAoKQorICAodmltdmFycy10ZXN0cy0td2l0aC10ZW1wLWRl ZmF1bHQKKyAgIGNhc2UtZm9sZC1zZWFyY2ggdAorICAgKHZpbXZhcnMtdGVzdHMtLXJ1bi1jaGVj a3MtZm9yLXRleHQtZmlsZQorICAgICJUaGlzIGlzIGEgdGV4dCBmaWxlLlxuIyB2aW06IHNldCBu b2lnbm9yZWNhc2UgOlxuIgorICAgIChzaG91bGQgKG5vdCBjYXNlLWZvbGQtc2VhcmNoKSkpKSkK KworKGVydC1kZWZ0ZXN0IHZpbXZhcnMtdGVzdC1vYmV5LXNldC1pZ25vcmVjYXNlICgpCisgICh2 aW12YXJzLXRlc3RzLS13aXRoLXRlbXAtZGVmYXVsdAorICAgY2FzZS1mb2xkLXNlYXJjaCBuaWwK KyAgICh2aW12YXJzLXRlc3RzLS1ydW4tY2hlY2tzLWZvci10ZXh0LWZpbGUKKyAgICAiVGhpcyBp cyBhIHRleHQgZmlsZS5cbiMgdmltOiBzZXQgaWdub3JlY2FzZSA6XG4iCisgICAgKHNob3VsZCBj YXNlLWZvbGQtc2VhcmNoKSkpKQorCisoZXJ0LWRlZnRlc3QgdmltdmFycy10ZXN0LW9iZXktc2V0 LXdyYXAgKCkKKyAgKHZpbXZhcnMtdGVzdHMtLXdpdGgtdGVtcC1kZWZhdWx0CisgICB0cnVuY2F0 ZS1saW5lcyB0CisgICAodmltdmFycy10ZXN0cy0tcnVuLWNoZWNrcy1mb3ItdGV4dC1maWxlCisg ICAgIlRoaXMgaXMgYSB0ZXh0IGZpbGUuXG4jIHZpbTogc2V0IHdyYXAgOlxuIgorICAgIChzaG91 bGQgKG5vdCB0cnVuY2F0ZS1saW5lcykpKSkpCisKKyhlcnQtZGVmdGVzdCB2aW12YXJzLXRlc3Qt b2JleS1zZXQtbm93cmFwICgpCisgICh2aW12YXJzLXRlc3RzLS13aXRoLXRlbXAtZGVmYXVsdAor ICAgdHJ1bmNhdGUtbGluZXMgbmlsCisgICAodmltdmFycy10ZXN0cy0tcnVuLWNoZWNrcy1mb3It dGV4dC1maWxlCisgICAgIlRoaXMgaXMgYSB0ZXh0IGZpbGUuXG4jIHZpbTogc2V0IG5vd3JhcCA6 XG4iCisgICAgKHNob3VsZCB0cnVuY2F0ZS1saW5lcykpKSkKKworKGVydC1kZWZ0ZXN0IHZpbXZh cnMtdGVzdC1vYmV5LXNldC10ZXh0d2lkdGgtODcgKCkKKyAgKHZpbXZhcnMtdGVzdHMtLXJ1bi1j aGVja3MtZm9yLXRleHQtZmlsZQorICAgIlRoaXMgaXMgYSB0ZXh0IGZpbGUuXG4jIHZpbTogc2V0 IHR3PTg3IDpcbiIKKyAgIChzaG91bGQgKGVxdWFsIHRhYi13aWR0aCAxNCkpCisgICAoc2hvdWxk IChlcXVhbCBmaWxsLWNvbHVtbiA4NykpKSkKKworKGVydC1kZWZ0ZXN0IHZpbXZhcnMtdGVzdC10 cy0xOCAoKQorICAodmltdmFycy10ZXN0cy0tcnVuLWNoZWNrcy1mb3ItdGV4dC1maWxlCisgICAi VGhpcyBpcyBhIHRleHQgZmlsZS5cbiMgdmltOiBzZXQgdHM9MTggOlxuIgorICAgKHNob3VsZCAo ZXF1YWwgdGFiLXdpZHRoIDE4KSkKKyAgIChzaG91bGQgKGVxdWFsIGZpbGwtY29sdW1uIDQwKSkp KQorCisoZXJ0LWRlZnRlc3QgdmltdmFycy10ZXN0LXNldC1yZWFkb25seSAoKQorICA7OyBWZXJp ZmllZCBieSBjb21wYXJpc29uIHdpdGggVmltIDkuMCwgSnVsIDE2IDIwMjUuCisgICh2aW12YXJz LXRlc3RzLS1ydW4tY2hlY2tzLWZvci10ZXh0LWZpbGUKKyAgICJUaGlzIGlzIGEgdGV4dCBmaWxl LlxuIyB2aW06IHNldCByZWFkb25seSA6XG4iCisgICAoc2hvdWxkIGJ1ZmZlci1yZWFkLW9ubHkp KSkKKworKGVydC1kZWZ0ZXN0IHZpbXZhcnMtdGVzdC1zZXQtbm9yZWFkb25seSAoKQorICAiVGhp cyB0ZXN0IGRvZXNuJ3QgcmVhbGx5IGRvIGFueXRoaW5nIHVzZWZ1bCwgc2luY2UKKyAgbm90IHJl YWQtb25seSBpcyB0aGUgZGVmYXVsdCBhbnl3YXkuIgorICAodmltdmFycy10ZXN0cy0tcnVuLWNo ZWNrcy1mb3ItdGV4dC1maWxlCisgICAiVGhpcyBpcyBhIHRleHQgZmlsZS5cbiMgdmltOiBzZXQg bm9yZWFkb25seSA6XG4iCisgICAoc2hvdWxkIChub3QgYnVmZmVyLXJlYWQtb25seSkpKSkKKwor KGVydC1kZWZ0ZXN0IHZpbXZhcnMtdGVzdC1zZXQtd3JpdGUgKCkKKyAgKHZpbXZhcnMtdGVzdHMt LXJ1bi1jaGVja3MtZm9yLXRleHQtZmlsZQorICAgIlRoaXMgaXMgYSB0ZXh0IGZpbGUuXG4jIHZp bTogc2V0IHdyaXRlIDpcbiIKKyAgIChzaG91bGQgKG5vdCBidWZmZXItcmVhZC1vbmx5KSkpKQor CisoZXJ0LWRlZnRlc3QgdmltdmFycy10ZXN0LXNldC1ub3dyaXRlICgpCisgICh2aW12YXJzLXRl c3RzLS1ydW4tY2hlY2tzLWZvci10ZXh0LWZpbGUKKyAgICJUaGlzIGlzIGEgdGV4dCBmaWxlLlxu IyB2aW06IHNldCBub3dyaXRlIDpcbiIKKyAgIChzaG91bGQgYnVmZmVyLXJlYWQtb25seSkpKQor CisoZXJ0LWRlZnRlc3QgdmltdmFycy10ZXN0LXRzLTE5ICgpCisgICh2aW12YXJzLXRlc3RzLS1y dW4tY2hlY2tzLWZvci10ZXh0LWZpbGUKKyAgICJUaGlzIGlzIGEgdGV4dCBmaWxlLlxuIyB2aW06 IHNldCB0cz0xOSA6XG4iCisgICAoc2hvdWxkIChlcXVhbCB0YWItd2lkdGggMTkpKQorICAgKHNo b3VsZCAoZXF1YWwgZmlsbC1jb2x1bW4gNDApKSkpCisKKyhlcnQtZGVmdGVzdCB2aW12YXJzLXRl c3QtZXhwYW5kdGFiICgpCisgICh2aW12YXJzLXRlc3RzLS13aXRoLXRlbXAtZGVmYXVsdAorICAg aW5kZW50LXRhYnMtbW9kZSB0CisgICAodmltdmFycy10ZXN0cy0tcnVuLWNoZWNrcy1mb3ItdGV4 dC1maWxlCisgICAgIiMgdmltOiBzZXQgZXhwYW5kdGFiIDpcbiIKKyAgICAoc2hvdWxkIChub3Qg aW5kZW50LXRhYnMtbW9kZSkpKSkpCisKKyhlcnQtZGVmdGVzdCB2aW12YXJzLXRlc3Qtbm9leHBh bmR0YWIgKCkKKyAgKHZpbXZhcnMtdGVzdHMtLXdpdGgtdGVtcC1kZWZhdWx0CisgICBpbmRlbnQt dGFicy1tb2RlIHQKKyAgICh2aW12YXJzLXRlc3RzLS1ydW4tY2hlY2tzLWZvci10ZXh0LWZpbGUK KyAgICAiIyB2aW06IHNldCBub2V4cGFuZHRhYiA6XG4iCisgICAgKHNob3VsZCBpbmRlbnQtdGFi cy1tb2RlKSkpKQorCisoZXJ0LWRlZnRlc3QgdmltdmFycy10ZXN0LWlnbm9yZS1tb2RlLWxpbmUt d2hlbi1sb2NhbC12YXJpYWJsZXMgKCkKKyAgIkNoZWNrIHRoYXQgd2UgaWdub3JlIHZpbSBtb2Rl bGluZXMgd2hlbiBgdmltdmFycy1pZ25vcmUtbW9kZS1saW5lLWlmLWxvY2FsLXZhcmlhYmxlcy1l eGlzdCcuIgorICAobGV0CisgICAgICAoKG9sZC12aW12YXJzLWlnbm9yZS1tb2RlLWxpbmUtaWYt bG9jYWwtdmFyaWFibGVzLWV4aXN0CisgICAgICAgICAgIHZpbXZhcnMtaWdub3JlLW1vZGUtbGlu ZS1pZi1sb2NhbC12YXJpYWJsZXMtZXhpc3QpCisgICAgICAgKGZpbGVib2R5ICAgICAgICIjIHZp bTogc2V0IHRzPTE4IDoKK1NvbWUgcmFuZG9tIHRleHQgaW4gdGhlIG1pZGRsZSBvZiB0aGUgZmls ZS4KKworTG9jYWwgVmFyaWFibGVzOgordGFiLXdpZHRoOiAxMQorZmlsbC1jb2x1bW46IDU5CitF bmQ6CisiKSkKKyAgICAodW53aW5kLXByb3RlY3QKKyAgICAgICAgICAgKHByb2duCisgICAgICAg ICAgICAgKHNldHEgdmltdmFycy1pZ25vcmUtbW9kZS1saW5lLWlmLWxvY2FsLXZhcmlhYmxlcy1l eGlzdCB0KQorICAgICAgICAgICAgICh2aW12YXJzLXRlc3RzLS1ydW4tY2hlY2tzLWZvci10ZXh0 LWZpbGUKKyAgICAgICAgICAgICAgZmlsZWJvZHkKKyAgICAgICAgICAgICAgOzsgQmVjYXVzZSB0 aGUgbW9kZSBsaW5lIHdhcyBpZ25vcmVkLCB0aGUgdGFiIHdpZHRoIGFuZAorICAgICAgICAgICAg ICA7OyBmaWxsIGNvbHVtbiBzaG91bGQgaGF2ZSB0aGUgc2V0dGluZ3MgZnJvbSB0aGUgRW1hY3MK KyAgICAgICAgICAgICAgOzsgbG9jYWwgdmFyaWFibGVzLgorICAgICAgICAgICAgICAoc2hvdWxk IChlcXVhbCB0YWItd2lkdGggMTEpKQorICAgICAgICAgICAgICAoc2hvdWxkIChlcXVhbCBmaWxs LWNvbHVtbiA1OSkpKSkKKyAgICAgIChwcm9nbgorICAgICAgICAgICAoc2V0cSB2aW12YXJzLWln bm9yZS1tb2RlLWxpbmUtaWYtbG9jYWwtdmFyaWFibGVzLWV4aXN0IG9sZC12aW12YXJzLWlnbm9y ZS1tb2RlLWxpbmUtaWYtbG9jYWwtdmFyaWFibGVzLWV4aXN0KSkgKSkpCisKKyhlcnQtZGVmdGVz dCB2aW12YXJzLXRlc3Qtbm8taWdub3JlLW1vZGUtbGluZS13aGVuLWxvY2FsLXZhcmlhYmxlcyAo KQorICAiQ2hlY2sgdGhhdCB3ZSBpZ25vcmUgdmltIG1vZGVsaW5lcyB3aGVuIGB2aW12YXJzLWln bm9yZS1tb2RlLWxpbmUtaWYtbG9jYWwtdmFyaWFibGVzLWV4aXN0JyBpcyBuaWwuIgorICAobGV0 CisgICAgICAoKG9sZC12aW12YXJzLWlnbm9yZS1tb2RlLWxpbmUtaWYtbG9jYWwtdmFyaWFibGVz LWV4aXN0CisgICAgICAgICAgIHZpbXZhcnMtaWdub3JlLW1vZGUtbGluZS1pZi1sb2NhbC12YXJp YWJsZXMtZXhpc3QpCisgICAgICAgKGZpbGVib2R5ICAgICAgICIjIHZpbTogc2V0IHRzPTE4IDoK K1NvbWUgcmFuZG9tIHRleHQgaW4gdGhlIG1pZGRsZSBvZiB0aGUgZmlsZS4KKworTG9jYWwgVmFy aWFibGVzOgordGFiLXdpZHRoOiAxMQorZmlsbC1jb2x1bW46IDU5CitFbmQ6CisiKSkKKyAgICAo dW53aW5kLXByb3RlY3QKKyAgICAgICAgICAgKHByb2duCisgICAgICAgICAgICAgKHNldHEgdmlt dmFycy1pZ25vcmUtbW9kZS1saW5lLWlmLWxvY2FsLXZhcmlhYmxlcy1leGlzdCBuaWwpCisgICAg ICAgICAgICAgKHZpbXZhcnMtdGVzdHMtLXJ1bi1jaGVja3MtZm9yLXRleHQtZmlsZQorICAgICAg ICAgICAgICBmaWxlYm9keQorICAgICAgICAgICAgICA7OyBCZWNhdXNlIHRoZSBtb2RlIGxpbmUg d2FzIGlnbm9yZWQsIHRoZSB0YWIgd2lkdGggYW5kCisgICAgICAgICAgICAgIDs7IGZpbGwgY29s dW1uIHNob3VsZCBoYXZlIHRoZSBzZXR0aW5ncyBmcm9tIHRoZSBFbWFjcworICAgICAgICAgICAg ICA7OyBsb2NhbCB2YXJpYWJsZXMuCisgICAgICAgICAgICAgIChzaG91bGQgKGVxdWFsIHRhYi13 aWR0aCAxOCkpCisgICAgICAgICAgICAgIChzaG91bGQgKGVxdWFsIGZpbGwtY29sdW1uIDU5KSkp KQorICAgICAgKHByb2duCisgICAgICAgICAgIChzZXRxIHZpbXZhcnMtaWdub3JlLW1vZGUtbGlu ZS1pZi1sb2NhbC12YXJpYWJsZXMtZXhpc3Qgb2xkLXZpbXZhcnMtaWdub3JlLW1vZGUtbGluZS1p Zi1sb2NhbC12YXJpYWJsZXMtZXhpc3QpKSApKSkKLS0gCjIuMzkuNQoK --0000000000008534f2063a1b2e14-- From unknown Sat Aug 09 09:38:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#79038: Patch update (fixing "make check") References: In-Reply-To: Resent-From: James Youngman Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 18 Jul 2025 18:00:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 79038 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 79038@debbugs.gnu.org Received: via spool by 79038-submit@debbugs.gnu.org id=B79038.175286158314323 (code B ref 79038); Fri, 18 Jul 2025 18:00:03 +0000 Received: (at 79038) by debbugs.gnu.org; 18 Jul 2025 17:59:43 +0000 Received: from localhost ([127.0.0.1]:35454 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ucpN0-0003ir-BD for submit@debbugs.gnu.org; Fri, 18 Jul 2025 13:59:43 -0400 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]:58716) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1ucR5E-0000bH-NR for 79038@debbugs.gnu.org; Thu, 17 Jul 2025 12:03:46 -0400 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-315c1b0623cso1208012a91.1 for <79038@debbugs.gnu.org>; Thu, 17 Jul 2025 09:03:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=youngman-org.20230601.gappssmtp.com; s=20230601; t=1752768218; x=1753373018; darn=debbugs.gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=p524RRiznVU/XY08/cawKnThEGmE3fCNNiOGWjZzUkk=; b=Dq8JAECcbBjUhjar4GQSKVvhoqaBqBynM3ogudPofwxXjrcGpGSaNPMuBYhKnBgtaG pbemFT6uZ6VU+RcL0mZUCvZeLjE5BzW4ChAxOOYGel4bz1XNM4VMUWvLQrwbxr7Us0ed nx53ycKYk3O1qbHOyNPOya5YaOwbrZtAI9cJegDL+CCBLjy0S1pJhax6g/2BMcwafbFn 6cjqlag5+7Hqf/FL/kdKnOjsrgLtf1IsvVRmNRxPGru2efA5HD/w5h31E5Jf2eFzgbqs qH8/qTROP715l1FABiuEayCMWfV3DwaAO3XvERsn8nf2+yaR+hjXUau6x2BuLAdis9vr ZA/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752768218; x=1753373018; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=p524RRiznVU/XY08/cawKnThEGmE3fCNNiOGWjZzUkk=; b=kYaKug+D+qbbJ0/NTnHdR+tYHLLqbzN2jNKZWOIq3Gzk+5XErw7ZVeRxUqGfzCvycB z5XTDe2gILiGQhoDr3MRMkaCRSx+iwvYWlPVoEjv67vQqfXiRspqaXUxcw0ybzQmjo/U Si79cGLNCJY232DPCHz44V6Xt/pbAKYpPZaFFi6P5ZLJ+4DQOLU1UXClVi0Vgwe5c8Bk 6exThuVvPpC3jgqgzSGH6/52B6rbSCJhHGAYXvso4nVsQGj4mh2290HJvMMNILJDiIoy ef030sNGLIGkBJKwFI8JiZ/NxTSvMiLgpy243nSymVcFsd0hf5DrmMqm3rVEKvlfknoT o4Zw== X-Gm-Message-State: AOJu0Yx+dR1+IVfHo977WhutL0Z4+Lxx51pnCvMv/vNvK9oTOquZBbYo /VCnpli3SAb9hQi+KkU2Mou6+XKBDonLKT2FJvyUkYNxLSQ3wrfaOxCZpAvxOqISnOHr37NyMp7 4bWbNhk2+ZZWWZyd6TX1OWlo1Fsk1TibW7BrH21QN5rdC5iMxM7Dc X-Gm-Gg: ASbGncsVbBtJlJ+GjaoHKW0P3Kem3/drvth3Y4tgORB/kP9PrqxxROo1CvASN3lP2Gd ohorOPLkkhXacCqqh3Ay2sxpUbatC69m7jV7/kzbbJUuGnc/IsXd/ZayH2J8mh478by7D9czPTh WVRwCCoFISnLxd7KPqBSmgHQF39HJVG5i/sNq4L0a0q3zqiSG9TGmAbsFM9LEd8haM4o+gQyok2 kRUBA1dZcbcH1oa80hrTEDYS/0mR8SUwJ5kOg== X-Google-Smtp-Source: AGHT+IHUQAIf4Wypb3FlnOlAHDDhGEfBB8JRV8RXey3q+jgp2263Jm/QnIpiyCc+ICHLjH/VcHXj8PWqBvEr6/NvJn0= X-Received: by 2002:a17:90b:224c:b0:31c:260e:55e9 with SMTP id 98e67ed59e1d1-31c9f436cf9mr10207509a91.24.1752768217857; Thu, 17 Jul 2025 09:03:37 -0700 (PDT) MIME-Version: 1.0 From: James Youngman Date: Thu, 17 Jul 2025 17:03:26 +0100 X-Gm-Features: Ac12FXwGX4tyhzjeilEcBCUPWkfEHOpteq8BMoYAOeBqIB_0yGogqc9riULvxTc Message-ID: Content-Type: multipart/mixed; boundary="000000000000007caa063a22279f" X-Spam-Score: 0.0 (/) X-Mailman-Approved-At: Fri, 18 Jul 2025 13:59:39 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --000000000000007caa063a22279f Content-Type: text/plain; charset="UTF-8" This additional change is needed in order not to break "make check". --000000000000007caa063a22279f Content-Type: text/x-patch; charset="US-ASCII"; name="0002-Fix-docstrings-requires-avoid-deprecated-functions-i.patch" Content-Disposition: attachment; filename="0002-Fix-docstrings-requires-avoid-deprecated-functions-i.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_md7kxb410 RnJvbSBlNTc2NzgwYTQ1NzU1OGFhZWI4NWY3NGJmM2Y2MjE5OTFlNTY0ZjM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYW1lcyBZb3VuZ21hbiA8amFtZXNAeW91bmdtYW4ub3JnPgpE YXRlOiBUaHUsIDE3IEp1bCAyMDI1IDEwOjUxOjE1ICswMTAwClN1YmplY3Q6IFtQQVRDSCAyLzJd IEZpeCBkb2NzdHJpbmdzLCByZXF1aXJlcywgYXZvaWQgZGVwcmVjYXRlZCBmdW5jdGlvbnMgaW4K IHZpbXZhcnMuCgotLS0KIGxpc3AvZW11bGF0aW9uL3ZpbXZhcnMuZWwgICAgICAgICAgICB8IDIw ICsrKysrKysrKysrKystLS0tLS0tCiB0ZXN0L2xpc3AvZW11bGF0aW9uL3ZpbXZhcnMtdGVzdHMu ZWwgfCAyNiArKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAyMCBp bnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saXNwL2VtdWxhdGlv bi92aW12YXJzLmVsIGIvbGlzcC9lbXVsYXRpb24vdmltdmFycy5lbAppbmRleCA1MGI1NmNjNjkx Mi4uNDE3YjFjNDgwMGMgMTAwNjQ0Ci0tLSBhL2xpc3AvZW11bGF0aW9uL3ZpbXZhcnMuZWwKKysr IGIvbGlzcC9lbXVsYXRpb24vdmltdmFycy5lbApAQCAtMSw0ICsxLDQgQEAKLTs7OyB2aW12YXJz LmVsIC0tLSBFbWFjcyBzdXBwb3J0IGZvciBWaSBtb2RlbGluZXMKKzs7OyB2aW12YXJzLmVsIC0t LSBFbWFjcyBzdXBwb3J0IGZvciBWaSBtb2RlbGluZXMgICAtKi0gbGV4aWNhbC1iaW5kaW5nOnQg LSotCiAKIDs7IENvcHlyaWdodCAoQykgMjAxMCwyMDExLDIwMjUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCiAKQEAgLTMxLDYgKzMxLDExIEBACiA7OzsgdXNlcyAiVmkiKSwgaW5zdGVh ZCBvZiAiVklNIiB3aGljaCBpcyB3aGF0IHRoYXQgZWRpdG9yJ3MKIDs7OyBkb2N1bWVudGF0aW9u IHVzZXMgYXMgaXRzIG5hbWUuCiAKKyhyZXF1aXJlICdzaW1wbGUpICAgICAgICAgICAgICAgICAg ICAgICA7IG5lZWRlZCBmb3IgcmVhZC1vbmx5LW1vZGUKKyhyZXF1aXJlICdjYy1ieXRlY29tcCkg ICAgICAgICAgICAgICAgICA7IG5lZWRlZCBmb3IgY2MtcmVxdWlyZQorKGNjLXJlcXVpcmUgJ2Nj LXZhcnMpICAgICAgICAgICAgICAgICAgIDsgd2UgdXNlIGMtYmFzaWMtb2Zmc2V0LgorCisKIChk ZWZncm91cCB2aW12YXJzIG5pbAogICAiU3VwcG9ydCBmb3IgVmltIG1vZGUgbGluZXMuIgogICA6 dmVyc2lvbiAiMzEuMSIKQEAgLTQ2LDcgKzUxLDggQEAgdmltdmFycy1lbmFibGVkCiAKIAogKGRl ZmN1c3RvbSB2aW12YXJzLWNoZWNrLWxpbmVzIDUKLSAgIlRoZSBudW1iZXIgb2YgbGluZXMgaW4g dGhlIHRvcCBvciBib3R0b20gb2YgYSBmaWxlIHRoYXQgd2Ugd2lsbCBzZWFyY2ggZm9yIFZpbSBz ZXR0aW5ncyAoVmltIGl0c2VsZiBjaGVja3MgNSkuIgorICAiVGhlIG51bWJlciBvZiBsaW5lcyBp biB0aGUgdG9wIG9yIGJvdHRvbSBvZiBhIGZpbGUgdGhhdCB3ZSB3aWxsIHNlYXJjaCBmb3IKKyBW aW0gc2V0dGluZ3MgKFZpbSBpdHNlbGYgY2hlY2tzIDUgYnkgZGVmYXVsdCkuIgogICA6dmVyc2lv biAiMzEuMSIKICAgOnR5cGUgJ2ludGVnZXIKICAgOmdyb3VwICd2aW12YXJzKQpAQCAtNzEsNyAr NzcsNyBAQCB2aW12YXJzLW9iZXktdmltLW1vZGVsaW5lCiBPbmx5IHRoZSBmaXJzdCBhbmQgbGFz dCBgdmltdmFycy1jaGVjay1saW5lcycgbGluZXMgb2YgdGhlIGZpbGUKIGFyZSBjaGVja2VkIGZv ciBWaW0gdmFyaWFibGVzLiAgIFlvdSBjYW4gdXNlIHRoaXMgaW4gYGZpbmQtZmlsZS1ob29rJy4K IAotT25lIGVuYWJsZXMgbW9kZWxpbmVzIGluIFZpbSBieSBwdXR0aW5nICdzZXQgbW9kZWxpbmUn IGluIHRoZQorT25lIGVuYWJsZXMgbW9kZWxpbmVzIGluIFZpbSBieSBwdXR0aW5nIGBzZXQgbW9k ZWxpbmUnIGluIHRoZQogLnZpbXJjIGZpbGUuIgogICAod2hlbiAodmltdmFycy0tc2hvdWxkLW9i ZXktbW9kZWxpbmUpCiAgICAgKHNhdmUtZXhjdXJzaW9uCkBAIC0xOTEsMjAgKzE5NywyMCBAQCB2 aW12YXJzLS1lbmFibGUtZmVhdHVyZQogICAoY29uZAogICAgKChlcXVhbCB2YXIgImV4cGFuZHRh YiIpIChzZXRxIGluZGVudC10YWJzLW1vZGUgbmlsKSkKICAgICgoZXF1YWwgdmFyICJpZ25vcmVj YXNlIikgKHNldHEgY2FzZS1mb2xkLXNlYXJjaCB0KSkKLSAgICgoZXF1YWwgdmFyICJyZWFkb25s eSIpICh0b2dnbGUtcmVhZC1vbmx5IDEpKQorICAgKChlcXVhbCB2YXIgInJlYWRvbmx5IikgKHJl YWQtb25seS1tb2RlIDEpKQogICAgKChlcXVhbCB2YXIgIndyYXAiKSAoc2V0cSB0cnVuY2F0ZS1s aW5lcyBuaWwpKQotICAgKChlcXVhbCB2YXIgIndyaXRlIikgKHRvZ2dsZS1yZWFkLW9ubHkgLTEp KSA7IFNlZSBub3dyaXRlIGJlbG93LgorICAgKChlcXVhbCB2YXIgIndyaXRlIikgKHJlYWQtb25s eS1tb2RlIC0xKSkgOyBTZWUgbm93cml0ZSBiZWxvdy4KIAogICAgKChlcXVhbCB2YXIgIm5vZXhw YW5kdGFiIikgKHNldHEgaW5kZW50LXRhYnMtbW9kZSB0KSkKICAgICgoZXF1YWwgdmFyICJub2ln bm9yZWNhc2UiKSAoc2V0cSBjYXNlLWZvbGQtc2VhcmNoIG5pbCkpCi0gICAoKGVxdWFsIHZhciAi bm9yZWFkb25seSIpICh0b2dnbGUtcmVhZC1vbmx5IC0xKSkKKyAgICgoZXF1YWwgdmFyICJub3Jl YWRvbmx5IikgKHJlYWQtb25seS1tb2RlIC0xKSkKICAgICgoZXF1YWwgdmFyICJub3dyYXAiKSAo c2V0cSB0cnVuY2F0ZS1saW5lcyB0KSkKIAogICAgOzsgSW4gVmltLCBzZXR0aW5nICdub3dyaXRl JyBvcHRpb24gY3JlYXRlcyBhIHNpdHVhdGlvbgogICAgOzsgaW4gd2hpY2ggZWRpdGluZyB0aGUg ZmlsZSBnZW5lcmF0ZXMgbm8gd2FybmluZyAodW5saWtlCiAgICA7OyAnc2V0IHJlYWRvbmx5Jykg YnV0IGJ5IGRlZmF1bHQgYXR0ZW1wdHMgdG8gc2F2ZSB0aGUKICAgIDs7IGZpbGUgKGV2ZW4gdG8g YSBuZXcgZmlsZSBuYW1lKSBnZW5lcmF0ZSBhIHdhcm5pbmcuCi0gICAoKGVxdWFsIHZhciAibm93 cml0ZSIpICh0b2dnbGUtcmVhZC1vbmx5IDEpKSA7IFNpbWlsYXIsIG5vdCB0aGUgc2FtZQorICAg KChlcXVhbCB2YXIgIm5vd3JpdGUiKSAocmVhZC1vbmx5LW1vZGUgMSkpIDsgU2ltaWxhciwgbm90 IHRoZSBzYW1lCiAKICAgICh0IChtZXNzYWdlICJEb24ndCBrbm93IGhvdyB0byBlbXVsYXRlIFZp bSBmZWF0dXJlICVzIiB2YXIpKSkpCiAKZGlmZiAtLWdpdCBhL3Rlc3QvbGlzcC9lbXVsYXRpb24v dmltdmFycy10ZXN0cy5lbCBiL3Rlc3QvbGlzcC9lbXVsYXRpb24vdmltdmFycy10ZXN0cy5lbApp bmRleCBiYzBlZmRiMzY1OC4uNjUxNmE2NjM2ZDIgMTAwNjQ0Ci0tLSBhL3Rlc3QvbGlzcC9lbXVs YXRpb24vdmltdmFycy10ZXN0cy5lbAorKysgYi90ZXN0L2xpc3AvZW11bGF0aW9uL3ZpbXZhcnMt dGVzdHMuZWwKQEAgLTEsNCArMSw0IEBACi07OzsgdmltdmFycy10ZXN0cy5lbCAtLS0gVGVzdHMg Zm9yIHZpbXZhcnMuZWwKKzs7OyB2aW12YXJzLXRlc3RzLmVsIC0tLSBUZXN0cyBmb3IgdmltdmFy cy5lbCAgIC0qLSBsZXhpY2FsLWJpbmRpbmc6dCAtKi0KIAogOzsgQ29weXJpZ2h0IChDKSAyMDEx LDIwMjUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKQEAgLTE3LDYgKzE3LDcgQEAK IAogOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKIDs7IGFsb25nIHdpdGggdmltdmFycy4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyhyZXF1aXJlICd2aW12YXJzKQogCiAoZXJ0LWRl ZnRlc3QgdmltdmFycy10ZXN0LW1vZGVsaW5lLWFjY2VwdC12aW0tdmktYm9sICgpCiAgICJDaGVj ayB3ZSBhY2NlcHQgJ3ZpbTonIG9yICd2aTonIGF0IGJlZ2lubmluZyBvZiBsaW5lLgpAQCAtOTEs OCArOTIsOCBAQCB2aW12YXJzLXRlc3Qtbm9uZXhwYW5zaW9ucwogCiAoZGVmdW4ga2lsbC1idWZm ZXJzLXZpc2l0aW5nIChmaWxlbmFtZSkKICAgKHdoaWxlCi0gICAgICAobGV0IChleGlzdGluZyAo Z2V0LWZpbGUtYnVmZmVyIGZpbGVuYW1lKSkKLSAgICAgICAgICAgKHdoZW4gZXhpc3RpbmcgKGtp bGwtYnVmZmVyIGV4aXN0aW5nKSkpKSkKKyAgICAgIChsZXQgKChleGlzdGluZyAoZ2V0LWZpbGUt YnVmZmVyIGZpbGVuYW1lKSkpCisgICAgICAgICh3aGVuIGV4aXN0aW5nIChraWxsLWJ1ZmZlciBl eGlzdGluZykpKSkpCiAKIChkZWZtYWNybyB2aW12YXJzLXRlc3RzLS1ydW4tY2hlY2tzLWZvci1m aWxlLWJvZHkgKHN1ZmZpeCBjb250ZW50ICZyZXN0IGNoZWNrcykKICAgIldyaXRlIGEgdGVtcG9y YXJ5IGZpbGUgd2hvc2UgbmFtZSBoYXMgc3VmZml4IFNVRkZJWCwgaGF2aW5nIGNvbnRlbnQgQ09O VEVOVC4KQEAgLTEwNCw3ICsxMDUsNyBAQCB2aW12YXJzLXRlc3RzLS1ydW4tY2hlY2tzLWZvci1m aWxlLWJvZHkKICAgICAgICAgICAgICAgKG9sZC12aW12YXJzLWNoZWNrLWxpbmVzIHZpbXZhcnMt Y2hlY2stbGluZXMpCiAgICAgICAgICAgICAgIChvbGQtZGVmYXVsdC1maWxsLWNvbHVtbiAoZGVm YXVsdC12YWx1ZSAnZmlsbC1jb2x1bW4pKQogICAgICAgICAgICAgICAob2xkLXRhYi13aWR0aCAo ZGVmYXVsdC12YWx1ZSAndGFiLXdpZHRoKSkKLSAgICAgICAgICAgICAgKG9sZC1maW5kLWZpbGUt aG9va3MgZmluZC1maWxlLWhvb2tzKSkKKyAgICAgICAgICAgICAgKG9sZC1maW5kLWZpbGUtaG9v ayBmaW5kLWZpbGUtaG9vaykpCiAgICAgICAgKHVud2luZC1wcm90ZWN0CiAgICAgICAgICAgICAg IChwcm9nbgogICAgICAgICAgICAgICAgICAgICAgIDs7IFNldCB1cCBhIHN0YW5kYXJkIHRlc3Rp bmcgZW52aXJvbm1lbnQgKGNob29zaW5nCkBAIC0xMjksNyArMTMwLDcgQEAgdmltdmFycy10ZXN0 cy0tcnVuLWNoZWNrcy1mb3ItZmlsZS1ib2R5CiAgICAgICAgICAgICAgICAgIChzZXRxLWRlZmF1 bHQgZmlsbC1jb2x1bW4gb2xkLWRlZmF1bHQtZmlsbC1jb2x1bW4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0YWItd2lkdGggb2xkLXRhYi13aWR0aCkKICAgICAgICAgICAg ICAgICAgKHNldHEgdmltdmFycy1jaGVjay1saW5lcyBvbGQtdmltdmFycy1jaGVjay1saW5lcwot ICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5kLWZpbGUtaG9va3Mgb2xkLWZpbmQtZmlsZS1o b29rcykpKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5kLWZpbGUtaG9vayBvbGQt ZmluZC1maWxlLWhvb2spKSkpKSkKIAogKGRlZm1hY3JvIHZpbXZhcnMtdGVzdHMtLXJ1bi1jaGVj a3MtZm9yLXRleHQtZmlsZSAoY29udGVudCAmcmVzdCBjaGVja3MpCiAgICJDYWxscyB2aW12YXJz LXRlc3RzLS1ydW4tY2hlY2tzLWZvci1maWxlLWJvZHkgd2l0aCBTVUZGSVggc2V0IHRvIC50eHQu IgpAQCAtMjA1LDcgKzIwNiw3IEBAIHZpbXZhcnMtdGVzdC1tYWtlcHJnCiAgICAoc2hvdWxkIChl cXVhbCBjb21waWxlLWNvbW1hbmQgImdtYWtlIikpKSkKIAogCi0oZGVmdW4gdmltdmFycy10ZXN0 LWNoZWNrLXJlY29nbmlzZS1tb2RlbGluZSAoZGVzY3JpcHRpb24gbW9kZWxpbmUpCisoZGVmdW4g dmltdmFycy10ZXN0LWNoZWNrLXJlY29nbmlzZS1tb2RlbGluZSAobW9kZWxpbmUpCiAgIChsZXQg KChhY3R1YWwtbW9kZWxpbmUgKGNvbmNhdCBtb2RlbGluZSAiXG4iKSkpCiAgICAgKHZpbXZhcnMt dGVzdHMtLXJ1bi1jaGVja3MtZm9yLXRleHQtZmlsZQogICAgICBhY3R1YWwtbW9kZWxpbmUKQEAg LTIxNCw3MSArMjE1LDU4IEBAIHZpbXZhcnMtdGVzdC1jaGVjay1yZWNvZ25pc2UtbW9kZWxpbmUK IAogKGVydC1kZWZ0ZXN0IHZpbXZhcnMtdGVzdC1tb2RlbGluZS1hY2NlcHQtdmltLXNldCAoKQog ICAgICh2aW12YXJzLXRlc3QtY2hlY2stcmVjb2duaXNlLW1vZGVsaW5lCi0gICAgICJ0ZXN0LWFj Y2VwdC12aW0tc2V0IgogICAgICAiIyB2aW06IHNldCB0cz0xOCA6XG4iKSkKIAogKGVydC1kZWZ0 ZXN0IHZpbXZhcnMtdGVzdC1tb2RlbGluZS1hY2NlcHQtdmktc2V0ICgpCiAgICh2aW12YXJzLXRl c3QtY2hlY2stcmVjb2duaXNlLW1vZGVsaW5lCi0gICAidGVzdC1hY2NlcHQtdmktc2V0IgogICAg IiMgdmk6IHNldCB0cz0xOCA6XG4iKSkKIAogKGVydC1kZWZ0ZXN0IHZpbXZhcnMtdGVzdC1tb2Rl bGluZS1hY2NlcHQtZXgtc2V0ICgpCiAgICh2aW12YXJzLXRlc3QtY2hlY2stcmVjb2duaXNlLW1v ZGVsaW5lCi0gICAidGVzdC1hY2NlcHQtZXgtc2V0IgogICAgIiMgZXg6IHNldCB0cz0xOCA6XG4i KSkKIAogKGVydC1kZWZ0ZXN0IHZpbXZhcnMtdGVzdC1tb2RlbGluZS12aW0tc2UgKCkKICAgKHZp bXZhcnMtdGVzdC1jaGVjay1yZWNvZ25pc2UtbW9kZWxpbmUKLSAgICJ0ZXN0LWFjY2VwdC12aW0t c2UiCiAgICAiIyB2aW06IHNlIHRzPTE4IDpcbiIpKQogCiAoZXJ0LWRlZnRlc3QgdmltdmFycy10 ZXN0LW1vZGVsaW5lLWFjY2VwdC12aS1zZSAoKQogICAodmltdmFycy10ZXN0LWNoZWNrLXJlY29n bmlzZS1tb2RlbGluZQotICAgInRlc3QtYWNjZXB0LXZpLXNlIgogICAgIiMgdmk6IHNlIHRzPTE4 IDpcbiIpKQogCiAoZXJ0LWRlZnRlc3QgdmltdmFycy10ZXN0LW1vZGVsaW5lLWFjY2VwdC1leC1z ZSAoKQogICAodmltdmFycy10ZXN0LWNoZWNrLXJlY29nbmlzZS1tb2RlbGluZQotICAgInRlc3Qt YWNjZXB0LWV4LXNlIgogICAgIiMgZXg6IHNlIHRzPTE4IDpcbiIpKQogCiAoZXJ0LWRlZnRlc3Qg dmltdmFycy10ZXN0LW1vZGVsaW5lLWFjY2VwdC12aW0tc2V0bG9jYWwgKCkKICAgKHZpbXZhcnMt dGVzdC1jaGVjay1yZWNvZ25pc2UtbW9kZWxpbmUKLSAgICJ0ZXN0LWFjY2VwdC12aW0tc2V0bG9j YWwiCiAgICAiIyB2aW06IHNldGxvY2FsIHRzPTE4IDpcbiIpKQogCiAoZXJ0LWRlZnRlc3Qgdmlt dmFycy10ZXN0LW1vZGVsaW5lLWFjY2VwdC12aS1zZXRsb2NhbCAoKQogICAodmltdmFycy10ZXN0 LWNoZWNrLXJlY29nbmlzZS1tb2RlbGluZQotICAgInRlc3QtYWNjZXB0LXZpLXNldGxvY2FsIgog ICAgIiMgdmk6IHNldGxvY2FsIHRzPTE4IDpcbiIpKQogCiAoZXJ0LWRlZnRlc3QgdmltdmFycy10 ZXN0LW1vZGVsaW5lLWFjY2VwdC1leC1zZXRsb2NhbCAoKQogICAodmltdmFycy10ZXN0LWNoZWNr LXJlY29nbmlzZS1tb2RlbGluZQotICAgInRlc3QtYWNjZXB0LWV4LXNldGxvY2FsIgogICAgIiMg ZXg6IHNldGxvY2FsIHRzPTE4IDpcbiIpKQogCiAoZXJ0LWRlZnRlc3QgdmltdmFycy10ZXN0LW1v ZGVsaW5lLWFjY2VwdC1uby1zcGFjZS1iZWZvcmUtZmluYWwtY29sb24gKCkKICAgIkNoZWNrIG1v ZGVsaW5lcyB3b3JrIGV2ZW4gd2l0aG91dCBhIHNwYWNlIGJlZm9yZSB0aGUgZmluYWwgY29sb24u IgogICAodmltdmFycy10ZXN0LWNoZWNrLXJlY29nbmlzZS1tb2RlbGluZQotICAgInRlc3QtYWNj ZXB0LW5vLXNwYWNlLWJlZm9yZS1maW5hbC1jb2xvbiIKICAgICIjIHZpOiBzZXQgdHM9MTg6XG4i KSkKIAogKGVydC1kZWZ0ZXN0IHZpbXZhcnMtdGVzdC1tb2RlbGluZS1hY2NlcHQtZXh0cmEtc3Bh Y2VzICgpCiAgICJDaGVjayBleHRyYSBzcGFjZXMgYmVmb3JlIHZpOiBhcmUgYWNjZXB0ZWQiCiAg ICh2aW12YXJzLXRlc3QtY2hlY2stcmVjb2duaXNlLW1vZGVsaW5lCi0gICAidGVzdC1hY2NlcHQt ZXh0cmEtc3BhY2VzIgogICAgIiMgICB2aTogc2V0IHRzPTE4IDpcbiIpKQogCiAoZXJ0LWRlZnRl c3QgdmltdmFycy10ZXN0LW1vZGVsaW5lLWFjY2VwdC10YWIgKCkKICAgIkNoZWNrIHRhYnMgYmVm b3JlIHZpOiBhcmUgYWNjZXB0ZWQuIgogICAodmltdmFycy10ZXN0LWNoZWNrLXJlY29nbmlzZS1t b2RlbGluZQotICAgInRlc3QtYWNjZXB0LXRhYiIKICAgICIjXHR2aTogc2V0IHRzPTE4IDpcbiIp KQogCiAoZXJ0LWRlZnRlc3QgdmltdmFycy10ZXN0LW1vZGVsaW5lLWFjY2VwdC12aS1hdC1zdGFy dCAoKQogICAiQ2hlY2sgdmk6IGF0IHRoZSBzdGFydCBvZiB0aGUgbGluZSBpcyBhY2NlcHRlZCIK ICAgKHZpbXZhcnMtdGVzdC1jaGVjay1yZWNvZ25pc2UtbW9kZWxpbmUKLSAgICJ0ZXN0LWFjY2Vw dC12aS1hdC1zdGFydCIKICAgICJ2aTogc2V0IHRzPTE4IDpcbiIpKQogCiAoZGVmbWFjcm8gdmlt dmFycy10ZXN0cy0td2l0aC10ZW1wLWRlZmF1bHQgKHZhcm5hbWUgdGVtcC12YWx1ZSAmcmVzdCBi b2R5KQotLSAKMi4zOS41Cgo= --000000000000007caa063a22279f-- From debbugs-submit-bounces@debbugs.gnu.org Fri Jul 18 13:59:41 2025 Received: (at control) by debbugs.gnu.org; 18 Jul 2025 17:59:42 +0000 Received: from localhost ([127.0.0.1]:35450 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ucpMz-0003ib-6q for submit@debbugs.gnu.org; Fri, 18 Jul 2025 13:59:41 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]:45562) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1ucPaG-0002W9-5n for control@debbugs.gnu.org; Thu, 17 Jul 2025 10:27:40 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-7426c44e014so1105846b3a.3 for ; Thu, 17 Jul 2025 07:27:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=youngman-org.20230601.gappssmtp.com; s=20230601; t=1752762453; x=1753367253; darn=debbugs.gnu.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=8VfPORPk8W791jG+hMhGUhv/dz5DPwqrI2Kj0CWMO+g=; b=wYMholJ/T+4kuJbhLRx7/J7I32vLo78UODbjC0AVpmRYnJFQaqkc0sqtDwNDQ/hJ2x mKkzUJFBm0n+fwb9TzfjgCk0bb2flhlOv/sG3asJt2j7baJIYin4nqNq92HQVW04/Mqs 5Wt2HCZPEC7cg2jHJOA/thrJUbr7a5ahck+A4RweTVya/2b2aQZ8H+D8lmO01iKK6CXa j6vd4jdk5bZN5UnG97NmUBqkeyZExq5WE0vc6NsTXfZelzq8WeBznVojyq100iI4BzO+ EiKLVHzq0BwUZLnAAHKClQVzgDY2wZcj7UWyQQsqyuaGAlzV1GOqCRPgAgO/OqBEMfk9 RNyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752762453; x=1753367253; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=8VfPORPk8W791jG+hMhGUhv/dz5DPwqrI2Kj0CWMO+g=; b=mN6cfH733nPXb12vZBewoJ0UEQc4UsS+VQWveO79tbIVmQHmAv7tFWII+d4qnfxEYJ KL1rPsBfE32ohhEATuAdkYmuDZ7WeOuaMnsQGfnhH/Xkr9Dpx5V1kr7Jf8l2KF9K/Yq2 vOdTQXHdJpeoaPBvrOjJsBSDBvyg2lHrhf7JOImG49+FHm6MO7llbnoZZb4uYY26vjrc u2n/tZZCU+vPT4YcmIYCSX+EXbR0CxeKjnO4uRxYwfdSQGRGWqaz8wmSbnnqEuM4JtHJ gpARYnSBnzlIOT4TFrMFcfpgEr9RVNYCtubI7H1u3axoHoiP2eAMdikZvvqbCNVtkXko wpJw== X-Gm-Message-State: AOJu0Yz8hag4v49b7HwK1QEC6SpEBcz33bIhfIj+kovGLkipiTU9fGbw an9iBSQTQXciN9+lTp5bkAxCSUYTCHs3E3uKhKrYPqzcuuzUOsL7B+bf2SVaXc4vpRyNn5FBgWX jWi0tSpkhjqiotJLWoC+oFlfs3mhqylk5C8RHlfjNy2rIoTmBvUjd+oo= X-Gm-Gg: ASbGncvbLBHVRZC5zW9QXZ2+PkOlw2Ir5S1fuKblCGSlnyENQOjWfbXFggxHKQBJafG JPNE8x65tSzbsJl/c5XHi/lWTsVUWnAUAepeKI3JSTNaDWn/lTXNQ+Ym0mgUvNzSwv3Zm1wdCq7 9fXXwShARzk9w+tE/D28C3QTOqAZ7b+/TSOtXNmC6fxYzLk4T3jFyFMV3uHL79hY70/lPY6LQ5l 63R+si8NYwYk1PXoW3qUscnghyPTZ76a54RQA== X-Google-Smtp-Source: AGHT+IF4LLQBtOuGE80pM2ywxoySuwMQ3MdhXueFPYQAfSh0jJfLS8vn5qNDOjd4axF7QQRWm388AmjfAB6rqfTCdxM= X-Received: by 2002:a17:90b:5289:b0:315:af43:12ee with SMTP id 98e67ed59e1d1-31c9e761501mr11084312a91.16.1752762452849; Thu, 17 Jul 2025 07:27:32 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: James Youngman Date: Thu, 17 Jul 2025 15:27:21 +0100 X-Gm-Features: Ac12FXyIMe4NganDVOi2jsRhWDhRDJL4ITE-PonHhgQAzqCqYG_L0Q1azW1-vCI Message-ID: Subject: Re: bug#79039: Acknowledgement ([PATCH] Add support for Vi/Vim modelines.) To: control@debbugs.gnu.org Content-Type: multipart/alternative; boundary="00000000000060d02b063a20cf09" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: control X-Mailman-Approved-At: Fri, 18 Jul 2025 13:59:39 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --00000000000060d02b063a20cf09 Content-Type: text/plain; charset="UTF-8" merge 79038 79039 --00000000000060d02b063a20cf09 Content-Type: text/html; charset="UTF-8"
merge 79038 79039
--00000000000060d02b063a20cf09-- From debbugs-submit-bounces@debbugs.gnu.org Sat Jul 19 06:07:25 2025 Received: (at control) by debbugs.gnu.org; 19 Jul 2025 10:07:25 +0000 Received: from localhost ([127.0.0.1]:40140 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ud4TT-0003W0-8H for submit@debbugs.gnu.org; Sat, 19 Jul 2025 06:07:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33910) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ud4TQ-0003Vd-7E; Sat, 19 Jul 2025 06:07:20 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ud4TK-0005dX-N3; Sat, 19 Jul 2025 06:07:14 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=1NHNg8Xn2so+lLa1vESEe5TJcooDMEIAQIJyvbbzG/g=; b=Oco8VWe2ZLyL m8EbfShBCkRXo8WuAFCj6QsnvnZgg3lDWgQ5W7vl+B/+ZADqUDJkl+MHibdH+B1JwweyL49cpiyeG /Cr2bRVIz3IeCFpN4+gArC3OBoPyFAeAnc10aEdoT1KmKAY0zZHVkXsqpbmXSHfQ2QahbecBDWTpB VSS0vEbBL4WI0e6dvdGGbTDRZ1PF2dJPq6QDEsbPjfmFRmOTJKANSd4MqqDVnSByETKbJjVGL/i5F NM1SNwnXSwtouvOFp9/rpHrVseegh18KEXeL9pAiBs2hi2q2tn/OjmkGbkp59/39sJPtriAHvUqig 9lkOWAK/c3REA5CGz3AUBg==; Date: Sat, 19 Jul 2025 13:07:11 +0300 Message-Id: <86a550ebow.fsf@gnu.org> From: Eli Zaretskii To: James Youngman In-Reply-To: (message from James Youngman on Thu, 17 Jul 2025 15:31:11 +0100) Subject: Re: bug#79039: Acknowledgement ([PATCH] Add support for Vi/Vim modelines.) References: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: control Cc: 79039@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) merge 79039 79038 thanks > From: James Youngman > Date: Thu, 17 Jul 2025 15:31:11 +0100 > > This bug should be merged with #79038 Merging. From unknown Sat Aug 09 09:38:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#79038: [PATCH] Add support for Vi/Vim modelines. Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 19 Jul 2025 10:27:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 79038 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: James Youngman , Stefan Monnier Cc: 79038@debbugs.gnu.org, youngman@google.com Received: via spool by 79038-submit@debbugs.gnu.org id=B79038.175292080432235 (code B ref 79038); Sat, 19 Jul 2025 10:27:01 +0000 Received: (at 79038) by debbugs.gnu.org; 19 Jul 2025 10:26:44 +0000 Received: from localhost ([127.0.0.1]:40285 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ud4mB-0008Nr-Ev for submit@debbugs.gnu.org; Sat, 19 Jul 2025 06:26:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36172) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ud4m9-0008NU-Bo for 79038@debbugs.gnu.org; Sat, 19 Jul 2025 06:26:41 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ud4m2-0000KL-UB; Sat, 19 Jul 2025 06:26:35 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=DY4xVhP7eyXjtsYxfvWWhNJwmeFXxE7LfWmGxy9edfI=; b=bTNqjsdCMuXz ReLluKhIK8ZIboS1IfA1jGmBg9wUzFr8aeG2oYS8rvXBGGa7rrNUUVcT+kuiCgyHqyBdXN8Fzz/85 4zaZY7FU1hPqSvCFH4XE+0PwyTyqQjtKhsfASLSmM4Z2Xy87SGNNqUI6M2K3VRnYE4sQnRvmIT7Hi MlDMm/W/Aqh5mTrHEe7ZSlTciOgUL0+ThyLjWR04mzhvzLw8WAPJVDDMGPk2chgoLHJ5nH630FT0y oGtu6p31p8NZInkW1S0W5Oul5JWdcVUQvBd3QwYSasEb44+h3vdd42amxljNF+nDJ6wnMeDwAtDZP VpnFTqK/Fs1WtGZ0+NycNA==; Date: Sat, 19 Jul 2025 13:26:29 +0300 Message-Id: <868qkkeasq.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from James Youngman on Thu, 17 Jul 2025 08:44:27 +0100) References: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: James Youngman > Date: Thu, 17 Jul 2025 08:44:27 +0100 > Cc: James Youngman , James Youngman > > I'd like to contribute support for Vi/Vim modelines. These are > somewhat similar to Emacs' local variables. The basic idea is that > this makes it easier to collaborate with a software author who uses Vi > modelines to correctly set up their editor, and expects others to use > consistent settings. > > This change should be covered by the copyright assignment my employer > (Google) already made for GNU Emacs. > > This is my first Emacs patch, so I apologise for any misunderstandings > or omissions. The patch itself is attached, but here is the ChangeLog > entry: > > Add support for Vi/Vim modelines. > > * lisp/emulation/vimvars.el: New file, implementing support for Vi > modelines. > * test/lisp/emulation/vimvars-tests.el: New file; tests for this > feature. > * doc/emacs/custom.texi(Vimvars): Describe this feature. > * doc/misc/viper.texi(Modeline): Mention this feature. > * etc/NEWS: Mention this change. Thanks, please see the comments below. > * lisp/emulation/vimvars.el: New file, implementing support for Vi > modelines. > * test/lisp/emulation/vimvars-tests.el: New file; tests for this > feature. > * doc/emacs/custom.texi(Vimvars): Describe this feature. > * doc/misc/viper.texi(Modeline): Mention this feature. > * etc/NEWS: Mention this change. In your future revisions of the patch, please mention the bug number. > --- > doc/emacs/custom.texi | 24 ++ > doc/misc/viper.texi | 16 + > etc/NEWS | 6 + > lisp/emulation/vimvars.el | 222 ++++++++++++++ > test/lisp/emulation/vimvars-tests.el | 428 +++++++++++++++++++++++++++ > 5 files changed, 696 insertions(+) > create mode 100644 lisp/emulation/vimvars.el > create mode 100644 test/lisp/emulation/vimvars-tests.el Hmm.. I'm not sure we want to advertise this feature in custom.texi. It's related to Vi and its emulations, so viper.texi seems like the right place for it. Stefan, WDYT about this? Maybe this is better suited to be an ELPA package? > diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi > index 9b545b9fd0a..bfff00cc8f1 100644 > --- a/doc/emacs/custom.texi > +++ b/doc/emacs/custom.texi > @@ -777,6 +777,7 @@ Variables > * Directory Variables:: How variable values can be specified by directory. > * Connection Variables:: Variables which are valid for buffers with a > remote default directory. > +* Vimvars:: Support for Vi/Vim modelines. > @end menu But if we do eventually decide to describe this in the Emacs user manual, the @detailmenu menu in emacs.texi should also be updated. > +The Vi editor (and many of its clones and implementations, including > +Vim) supports a feature like file local variables. Emacs can optionally > +support these, like this: ^^ Our convention is to leave 2 space between sentences. > +@cindex risky variable > +The Vim modeline setting @code{makeprg} is translated to > +@code{compile-command}, but this is not treated as an unsafe local > +variable. I don't understand the purpose of the @cindex entry here with such a general text. I also don't understand why makeprg is not treated as a risky variable. can you explain? > +This has an effect similar to adding @samp{set modeline} to > +@file{~/.vimrc}. I think "This" here alludes to the @lisp example, not to the text after it. So I think rearranging the text is in order. > ++++ > +** Support for Vim/Vi modelines Heading lines in NEWS should end in a period. > diff --git a/lisp/emulation/vimvars.el b/lisp/emulation/vimvars.el > new file mode 100644 > index 00000000000..50b56cc6912 > --- /dev/null > +++ b/lisp/emulation/vimvars.el > @@ -0,0 +1,222 @@ > +;;; vimvars.el --- Emacs support for Vi modelines > + > +;; Copyright (C) 2010,2011,2025 Free Software Foundation, Inc. > + > +;; Author: James Youngman > +;; Maintainer: James Youngman > +;; Keywords: local-variables, vi, vim, emulations > + > +;; vimvars is free software: you can redistribute it and/or modify > +;; it under the terms of the GNU General Public License as published by > +;; the Free Software Foundation, either version 3 of the License, or > +;; (at your option) any later version. > + > +;; vimvars is distributed in the hope that it will be useful, > +;; but WITHOUT ANY WARRANTY; without even the implied warranty of > +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +;; GNU General Public License for more details. > + > +;; You should have received a copy of the GNU General Public License > +;; along with vimvars. If not, see . This preamble should be identical to the other files in the Emacs source tree. > +(defcustom vimvars-check-lines 5 > + "The number of lines in the top or bottom of a file that we will search for Vim settings (Vim itself checks 5)." The first line of a doc string should be a single sentence shorter than 80 characters. > +(defcustom vimvars-ignore-mode-line-if-local-variables-exist t > + "If non-nil, Vim mode lines are ignored in files that have Emacs local variables." Likewise. From unknown Sat Aug 09 09:38:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#79038: Patch update (fixing "make check") Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 19 Jul 2025 10:29:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 79038 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: James Youngman Cc: 79038@debbugs.gnu.org Received: via spool by 79038-submit@debbugs.gnu.org id=B79038.175292092932599 (code B ref 79038); Sat, 19 Jul 2025 10:29:02 +0000 Received: (at 79038) by debbugs.gnu.org; 19 Jul 2025 10:28:49 +0000 Received: from localhost ([127.0.0.1]:40293 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ud4oD-0008Tj-BT for submit@debbugs.gnu.org; Sat, 19 Jul 2025 06:28:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36756) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ud4oB-0008TK-1y for 79038@debbugs.gnu.org; Sat, 19 Jul 2025 06:28:47 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ud4o5-0000Wk-OG; Sat, 19 Jul 2025 06:28:41 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=aWKOv8OP3LkR3sXYvDtkF20M2pFzz3SvH5u1ozPnxWk=; b=KN7gu0vbF1gM kb8XnQLQGiGUgh7uKrxJKVhWEjktF60NoqEqLgbKSMbg1yIG7HBAl80DlNTWD7/y09K8VvTzvcYqI 7hzGssoALKhM77s3kiGRJMxjmIjn2Mlk4WiZyyaVDNLNvKtBA6xzSsu9aQqy6oBam1K7LaQS2jKhZ tbCfhXZPct8cYU0NiN5fQTkGcKbPvnk9e0sNWGneEoRrIW1bfg9l0sufyXzbZkz/k1rwTNK6D9JlU T6gz/E/t9jkLnU/v/j0uUoHWaWZtMDRac55UiVFFLHuYKzyhYFdzIv0Qny/qURKXx5033MtJZYjz+ HzHwdGi9BDXeRg267fkPJQ==; Date: Sat, 19 Jul 2025 13:28:39 +0300 Message-Id: <867c04eap4.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from James Youngman on Thu, 17 Jul 2025 17:03:26 +0100) References: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: James Youngman > Date: Thu, 17 Jul 2025 17:03:26 +0100 > > +(require 'simple) ; needed for read-only-mode simple.el is preloaded, so this shouldn't be needed. > +(require 'cc-bytecomp) ; needed for cc-require > +(cc-require 'cc-vars) ; we use c-basic-offset. Which parts of vimvars need these? If you need this for the tests, then the proper place to have these is in vimvars-tests.el, not here. From unknown Sat Aug 09 09:38:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#79038: [PATCH] Add support for Vi/Vim modelines. Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 19 Jul 2025 16:41:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 79038 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: James Youngman Cc: 79038@debbugs.gnu.org Received: via spool by 79038-submit@debbugs.gnu.org id=B79038.175294320222170 (code B ref 79038); Sat, 19 Jul 2025 16:41:01 +0000 Received: (at 79038) by debbugs.gnu.org; 19 Jul 2025 16:40:02 +0000 Received: from localhost ([127.0.0.1]:43893 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1udAbR-0005lN-K9 for submit@debbugs.gnu.org; Sat, 19 Jul 2025 12:40:02 -0400 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:51655) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1udAbO-0005kR-Kr for 79038@debbugs.gnu.org; Sat, 19 Jul 2025 12:39:59 -0400 Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 86DFE441869; Sat, 19 Jul 2025 12:39:52 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1752943186; bh=BKFZDUmplfJwUXu1C5evCz/srntvK1yLa2SqBYpBaDg=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=RcQ/MyQ2sDtoQ/ZLm7RogHRkpamyOAzG222RUNhTAusZ6KXmhw0eEpeib9PX3YeRc 5ANBXWOGSiGZ9/jkgr0g/KJoJRbqvG6yF6JSPRNhQZw5wvZnKpLJYRlxnCGsEkTDCJ MTjEu+lxHzYxehrpJ8VGaWRp3auAKNv/t2fww38k1wujjovVc/7+Ku3s5Wy5b+nzr1 c1mGvsJT3F50DdOo/90G2Q3BTU6eF7c2Tidjl+thEPYvdiS2lmknp9NGjfoAQOkXyz dSBQuTJehB9vVvGZxOFax5qYSNmB55rJBF+HxCDf5F8d3hc1FY/hmuNHHryg0dlQri v3ZTNLJxsBN5g== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id A637144185F; Sat, 19 Jul 2025 12:39:46 -0400 (EDT) Received: from alfajor (unknown [104.247.225.139]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 784D81208DE; Sat, 19 Jul 2025 12:39:46 -0400 (EDT) From: Stefan Monnier In-Reply-To: Message-ID: References: Date: Sat, 19 Jul 2025 12:39:45 -0400 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.279 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Regarding Eli's question about keeping it as an ELPA package, I don't have a strong opinion either way (I'm leaning towards keeping it as a separate package since nothing in Emacs depends on it, but it also depends on how you/we plan to maintain it in the future). I'd be happy to add it to GNU ELPA. Some comments below. Stefan > @@ -777,6 +777,7 @@ Variables > * Directory Variables:: How variable values can be specified by directory. > * Connection Variables:: Variables which are valid for buffers with a > remote default directory. > +* Vimvars:: Support for Vi/Vim modelines. > @end menu How 'bout placing it next to the doc of EditorConfig? > +@lisp > +(require 'vimvars) > +(add-hook 'find-file-hook 'vimvars-obey-vim-modeline) > +@end lisp I'd rather make it a global `vimvars-mode`, like `editorconfig-mode`. Especially since hooking into `find-file-hook` might not be the best way to go about it, so using a minor mode will make it easy to change the implementation without forcing users to update their init files. Regarding "the best way": `editorconfig-mode` and Emacs' own `.dir-locals.el` support uses `hack-dir-local-get-variables-functions`, so maybe you could use that. It's probably not the *best* way, because it's been designed for dir-local rather than file-local vars, but the upside is that it naturally gives it lower precedence than file-local settings. > --- a/doc/misc/viper.texi > +++ b/doc/misc/viper.texi > @@ -1610,6 +1610,7 @@ Customization > * Packages that Change Keymaps:: How to deal with such beasts. > * Viper Specials:: Special Viper commands. > * Vi Macros:: How to do Vi style macros. > +* Modeline:: Emulation for Vi modelines. > @end menu > > @node Rudimentary Changes > @@ -2993,6 +2994,21 @@ Vi Macros > currently defined. To see all macros along with their definitions, type > @kbd{M-x viper-describe-kbd-macros}. > > +@node Modeline > +@section Emulation for Vi modelines > + > +You can enable limited support for Vi modelines, with or without Viper, > +with @code{vimvars}: > + > +@findex vimvars-obey-vim-modeline > +@lisp > +(require 'vimvars) > +(add-hook 'find-file-hook 'vimvars-obey-vim-modeline) > +@end lisp That seems redundant with the previous section in `custom.texi`. Pick one place and add a reference to it from the other place? > +;;; Code: > + > +;;; We say "Vim" here for consistency with Emacs documentation (which > +;;; uses "Vi"), instead of "VIM" which is what that editor's > +;;; documentation uses as its name. These should use ";;" rather than ";;;" (which is reserved for headings). > +(defcustom vimvars-enabled t > + "If nil, Vim mode lines will be ignored." > + :version "31.1" > + :type 'boolean > + :group 'vimvars) The `:group` arg is redundant (same for all the other `defucstom`s in the file). > +(make-variable-buffer-local 'vimvars-enabled) Why? > +(defcustom vimvars-check-lines 5 > + "The number of lines in the top or bottom of a file that we will search for Vim settings (Vim itself checks 5)." > + :version "31.1" > + :type 'integer > + :group 'vimvars) I think the compiler should emit a warning for this too-long-line docstring. > +(defun vimvars--accept-tag (leader tag) > + "Return non-nil if LEADER followed by TAG should be accepted as a modeline." > + (cond > + ((equal "vim" tag) t) > + ((equal "vi" tag) t) > + ;; Accept "ex:" only when it is not at the beginning of a line. > + ((equal "ex" tag) (not (equal 0 (length leader)))) > + (t nil))) I think you can remove this function and tighten the regexp instead. > + (while (re-search-forward > + " *\\([^= ]+\\)\\(=\\([^ :]+\\)\\)?" settings-end t) > + (let ((variable (vimvars--expand-option-name (match-string 1)))) > + (if (match-string 3) > + (vimvars--assign variable (match-string 3)) > + (vimvars--enable-feature variable)))) (match-end 3) or (match-beginning 3) would work as well (as a boolean test) as (match-string 3) but without allocating a new string object. > +(defun vimvars--set-indent (indent) > + "Set the amount of indentation caused by tab to INDENT in a mode-aware way." > + (when (equal major-mode 'c-mode) (setq c-basic-offset indent))) Check `editorconfig-indent-size-vars`; it would be nice to share code here. Recently the same need showed up in yet some other package, tho I can't remember where right now. > +(defun vimvars--expand-option-name (option) > + "Expand the abbreviated Vim :set variable OPTION to its full name." > + (let ((expansion > + (assoc option > + '(("ro" "readonly") > + ("sts" "softtabstop") > + ("sw" "shiftwidth") > + ("ts" "tabstop") > + ("tw" "textwidth"))))) > + (if expansion (cadr expansion) option))) You can shorten the `if` to (or (cadr expansion) option). > +;;; Not supported: > +;;; comments/com (comment leader), because it's not language-specific in Vim. ";;;" => ";;". Maybe also move it into the function?