From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2.migadu.com ([2001:41d0:303:e16b::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms1.migadu.com with LMTPS id YAujLdv8LWZOYwEAe85BDQ:P1 (envelope-from ) for ; Sun, 28 Apr 2024 09:38:03 +0200 Received: from aspmx1.migadu.com ([2001:41d0:303:e16b::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2.migadu.com with LMTPS id YAujLdv8LWZOYwEAe85BDQ (envelope-from ) for ; Sun, 28 Apr 2024 09:38:03 +0200 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=none; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=gmail.com (policy=none) ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1714289883; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post; bh=DLedUqWHpIY9fYdWLXYpZlJzXzzwJyiUqZaahTbtrUM=; b=KMQ4FDvcDgv1i/9YkGG5OU/WPBNj4RwywJwcgZeV/HfeWOuPA9+EvjWXB4akZJ3mnGiS2w uEFOt7fFbR23x3GcLvfdBKxxuiEls4RJQumjY9QgBf7JhVYIgyqPkijEqTQQvj/Ef2qD8k 1TkBNJvT21ZjGUcJn/JY1s+A9UiTvVvXGWP4044G2bjM9CpGOiWJeCVqCzClI7bxUpcouZ GuqkieMT/Gr4seObgKs+5blmZip298Gtt91fUQ2MvaavVWMFowADVFpgALRyBF9sgnW8OC ZVn+g8842D693BZQmo2KdMsmKFSiXf0jqqMXXrPg/u8oIF8cWiYvTDslh9HLFw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=gmail.com (policy=none) ARC-Seal: i=1; s=key1; d=yhetil.org; t=1714289883; a=rsa-sha256; cv=none; b=Avt+6l+1d7yBiinHw7wqWQjnzPUy5GVnPpZbtKPq4AGvHMQkZQvlMiEOZuZ2DFOYiXrhyI JRvThJLAT/ATzBfX2cjpGaaxerp0kAygBrlk4TSBZxPUbsg+UyzDRWPxSJOj6x580N4bcL 9485D+5ZC5Ynvz83HX9p1H/h5I/FUnwEKd2rR/X7R2JqEkpdMhMo5moJEIUPngRMWMdPz2 qOh9R7ez6tS3XHNQHS6TVlabDX21slqKAZg+qmWaXaHtMWs/taRbYCqnXrFILhe0iwEcNa ixnJU8zHgQFrIyAJgeZY4e3C4ZK8238a/+IaWMpwsHXP3XkygRQtc4Ck/KwrLQ== Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 6212C6946C for ; Sun, 28 Apr 2024 09:38:03 +0200 (CEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s0z67-0007gg-D1; Sun, 28 Apr 2024 03:37:19 -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 1s0z64-0007eg-C8 for emacs-orgmode@gnu.org; Sun, 28 Apr 2024 03:37:16 -0400 Received: from ciao.gmane.io ([116.202.254.214]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s0z60-0003vm-H3 for emacs-orgmode@gnu.org; Sun, 28 Apr 2024 03:37:15 -0400 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1s0z5w-0008lw-J9 for emacs-orgmode@gnu.org; Sun, 28 Apr 2024 09:37:08 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-orgmode@gnu.org From: Max Nikulin Subject: [PATCH] org-ctags.el: Protect shell specials in directory name Date: Sun, 28 Apr 2024 14:37:01 +0700 Message-ID: References: <874jegqts6.fsf@localhost> <86y1bsowio.fsf@ice9.digital> <7b676235-5e0d-4b7e-b9bf-5eef0908577c@gmail.com> <875xxhds2k.fsf@localhost> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------P0YDtGN7M75G0jBcasFYs4ZN" User-Agent: Mozilla Thunderbird Content-Language: en-US, ru-RU In-Reply-To: <875xxhds2k.fsf@localhost> Received-SPF: pass client-ip=116.202.254.214; envelope-from=geo-emacs-orgmode@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: 26 X-Spam_score: 2.6 X-Spam_bar: ++ X-Spam_report: (2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FORGED_MUA_MOZILLA=2.309, FREEMAIL_FORGED_FROMDOMAIN=0.001, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: emacs-orgmode-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US X-Migadu-Spam-Score: 0.22 X-Spam-Score: 0.22 X-Migadu-Queue-Id: 6212C6946C X-Migadu-Scanner: mx13.migadu.com X-TUID: td7875Jqt30u This is a multi-part message in MIME format. --------------P0YDtGN7M75G0jBcasFYs4ZN Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 20/03/2024 19:08, Ihor Radchenko wrote: > Max Nikulin writes: >> The committed change is anyway incomplete. > > May you submit a patch? See the attachments. --------------P0YDtGN7M75G0jBcasFYs4ZN Content-Type: text/x-patch; charset=UTF-8; name="0001-org-ctags.el-Protect-shell-specials-in-directory-nam.patch" Content-Disposition: attachment; filename*0="0001-org-ctags.el-Protect-shell-specials-in-directory-nam.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwNjdkYzU5MGJiMWMyNmM4ODFmMTRkMjE4ZGEyY2Q1MDI0MTNlYzVkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXggTmlrdWxpbiA8bWFuaWt1bGluQGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyNyBNYXIgMjAyNCAyMzowNDowNyArMDcwMApTdWJqZWN0OiBbUEFU Q0ggMS8yXSBvcmctY3RhZ3MuZWw6IFByb3RlY3Qgc2hlbGwgc3BlY2lhbHMgaW4gZGlyZWN0 b3J5IG5hbWUKCiogbGlzcC9vcmctY3RhZ3MuZWwgKG9yZy1jdGFncy1jcmVhdGUtdGFncyk6 IEVzY2FwZSBzaGVsbCBzcGVjaWFscy4KCkRpcmVjdG9yeSBuYW1lICh0aGUgYXJndW1lbnQg b3IgYGRlZmF1bHQtZGlyZWN0b3J5JykgbWF5IGNvbnRhaW4gdmFyaW91cwpjaGFyYWN0ZXJz IGludGVycHJldGVkIGJ5IHNoZWxsLiAgRWZmZWN0cyBtYXkgdmFyeSBmcm9tIGp1c3QgaW5j b3JyZWN0CmFjdHVhbCBwYXRoIHRvIGV4ZWN1dGlvbiBvZiBhIGNvbW1hbmQgZW1iZWRkZWQg aW50byBwYXRoLiAgTmVpdGhlcgpkb3VibGUgbm9yIHNpbmdsZSBxdW90ZXMgaXMgYSBzYWZl IHdheSB0byB1c2UgZGlyZWN0b3J5IG5hbWUgaW4gc2hlbGwKY29tbWFuZHMgc2luY2UgdGhl IG5hbWUgbWF5IGNvbnRhaW4gdGhlc2UgY2hhcmFjdGVycy4KCkEgZm9sbG93LXVwIHRvCk1h cnRpbiBNYXJzaGFsbC4gW1BBVENIXSBgb3JnLWN0YWdzLWNyZWF0ZS10YWdzYCBjcmVhdGVz IGVtcHR5IFRBR1MgZmlsZS4KRnJpLCAwOSBGZWIgMjAyNCAxODo1Nzo0OCAtMDUwMC4KPGh0 dHBzOi8vbGlzdC5vcmdtb2RlLm9yZy84N2g2aWhncGhmLmZzZkBtYXJ0aW5tYXJzaGFsbC5j b20+Ci0tLQogbGlzcC9vcmctY3RhZ3MuZWwgfCAxNSArKysrKysrKystLS0tLS0KIDEgZmls ZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvbGlzcC9vcmctY3RhZ3MuZWwgYi9saXNwL29yZy1jdGFncy5lbAppbmRleCA2NDMxYTI3 NjUuLjUyYjIxZGJkMSAxMDA2NDQKLS0tIGEvbGlzcC9vcmctY3RhZ3MuZWwKKysrIGIvbGlz cC9vcmctY3RhZ3MuZWwKQEAgLTQ3NywxOCArNDc3LDIxIEBAIChkZWZ1biBvcmctY3RhZ3Mt Y3JlYXRlLXRhZ3MgKCZvcHRpb25hbCBkaXJlY3RvcnktbmFtZSkKIGl0cyBzdWJkaXJlY3Rv cmllcyBjb250YWluIGxhcmdlIG51bWJlcnMgb2YgdGFnZ2FibGUgZmlsZXMuIgogICAoaW50 ZXJhY3RpdmUpCiAgIChjbC1hc3NlcnQgKGJ1ZmZlci1maWxlLW5hbWUpKQotICAobGV0ICgo ZGlyLW5hbWUgKG9yIGRpcmVjdG9yeS1uYW1lCi0gICAgICAgICAgICAgICAgICAgICAgKGZp bGUtbmFtZS1kaXJlY3RvcnkgKGJ1ZmZlci1maWxlLW5hbWUpKSkpCisgIChsZXQgKChkaXIt bmFtZSAoc2hlbGwtcXVvdGUtYXJndW1lbnQKKyAgICAgICAgICAgICAgICAgICAoZXhwYW5k LWZpbGUtbmFtZQorICAgICAgICAgICAgICAgICAgICAoaWYgZGlyZWN0b3J5LW5hbWUKKyAg ICAgICAgICAgICAgICAgICAgICAgIChmaWxlLW5hbWUtYXMtZGlyZWN0b3J5IGRpcmVjdG9y eS1uYW1lKQorICAgICAgICAgICAgICAgICAgICAgIChmaWxlLW5hbWUtZGlyZWN0b3J5IChi dWZmZXItZmlsZS1uYW1lKSkpKSkpCiAgICAgICAgIChleGl0Y29kZSBuaWwpKQogICAgIChz YXZlLWV4Y3Vyc2lvbgogICAgICAgKHNldHEgZXhpdGNvZGUKICAgICAgICAgICAgIChzaGVs bC1jb21tYW5kCiAgICAgICAgICAgICAgKGZvcm1hdCAoY29uY2F0ICIlcyAtLWxhbmdkZWY9 b3JnbW9kZSAtLWxhbmdtYXA9b3JnbW9kZToub3JnICIKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIi0tcmVnZXgtb3JnbW9kZT1cIiVzXCIgLWYgXCIlc1wiIC1lIC1SICVzIikK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tcmVnZXgtb3JnbW9kZT0lcyAtZiAl c1RBR1MgLWUgLVIgJXMqIikKICAgICAgICAgICAgICAgICAgICAgIG9yZy1jdGFncy1wYXRo LXRvLWN0YWdzCi0gICAgICAgICAgICAgICAgICAgICBvcmctY3RhZ3MtdGFnLXJlZ2V4cAot ICAgICAgICAgICAgICAgICAgICAgKGV4cGFuZC1maWxlLW5hbWUgKGNvbmNhdCBkaXItbmFt ZSAiL1RBR1MiKSkKLSAgICAgICAgICAgICAgICAgICAgIChleHBhbmQtZmlsZS1uYW1lIChj b25jYXQgKHNoZWxsLXF1b3RlLWFyZ3VtZW50IGRpci1uYW1lKSAiLyoiKSkpKSkKKyAgICAg ICAgICAgICAgICAgICAgIChzaGVsbC1xdW90ZS1hcmd1bWVudCBvcmctY3RhZ3MtdGFnLXJl Z2V4cCkKKyAgICAgICAgICAgICAgICAgICAgIGRpci1uYW1lCisgICAgICAgICAgICAgICAg ICAgICBkaXItbmFtZSkpKQogICAgICAgKGNvbmQKICAgICAgICAoKGVxbCAwIGV4aXRjb2Rl KQogICAgICAgICAoc2V0cS1sb2NhbCBvcmctY3RhZ3MtdGFnLWxpc3QKLS0gCjIuMzkuMgoK --------------P0YDtGN7M75G0jBcasFYs4ZN Content-Type: text/x-patch; charset=UTF-8; name="0002-test-org-ctags.el-Test-escaping-of-shell-arguments.patch" Content-Disposition: attachment; filename*0="0002-test-org-ctags.el-Test-escaping-of-shell-arguments.patc"; filename*1="h" Content-Transfer-Encoding: base64 RnJvbSA1MjYxMTE4M2ZmNzNkMDcwMWQ0MTEwMmUwZmE5NzEzNDE3OGNhZTEwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXggTmlrdWxpbiA8bWFuaWt1bGluQGdtYWlsLmNv bT4KRGF0ZTogU3VuLCAyOCBBcHIgMjAyNCAxNDoxMzowNCArMDcwMApTdWJqZWN0OiBbUEFU Q0ggMi8yXSB0ZXN0LW9yZy1jdGFncy5lbDogVGVzdCBlc2NhcGluZyBvZiBzaGVsbCBhcmd1 bWVudHMKCiogdGVzdGluZy9saXNwL3Rlc3Qtb3JnLWN0YWdzLmVsICh0ZXN0LW9yZy1jdGFn cy9jcmVhdGUtdGFncy1lc2NhcGUpOgpBIG5ldyB0ZXN0IHRoYXQgdGFnIHJlZ2V4cCBhbmQg ZGlyZWN0b3J5IG5hbWVzIGFyZSBwcm9wZXJseSBxdW90ZWQKd2hpbGUgIioiIHdpbGRjYXJk IGlzIGFjdGl2ZS4KKHRlc3Qtb3JnLWN0YWdzL2xpc3QtZWxlbWVudHMgdGVzdC1vcmctY3Rh Z3MvbGlzdC1lbGVtZW50cy1lcXVhbC1wKQoodGVzdC1vcmctY3RhZ3MvbGlzdC1lbGVtZW50 cy1lcXVhbC1leHBsYWluKTogSGVscGVycyB0byBwcm92aWRlCmluZm9ybWF0aXZlIGZhaWx1 cmUgbWVzc2FnZXMuCih0ZXN0LW9yZy1jdGFncy93aXRoLWZha2UtY3RhZ3MpOiBBIGhlbHBl ciB0byBjcmVhdGUgdGVtcG9yYXJ5CmRpcmVjdG9yaWVzIGFuZCBhIGZpbGUgYW5kIHRvIHRl bXBvcmFyeSBhcnJhbmdlIGEgbW9jayBzaGVsbCBjb21tYW5kCmluc3RlYWQgb2YgY3RhZ3Mg ZXhlY3V0YWJsZS4KKHRlc3Qtb3JnLWN0YWdzL21vY2stY29tbWFuZCB0ZXN0LW9yZy1jdGFn cy9nZXQtYXJncyk6IEhlbHBlcnMgdG8gZGVmaW5lCmEgbW9jayBzaGVsbCBjb21tYW5kIGFu ZCB0byBvYnRhaW4gaXRzIGFjdHVhbCBhcmd1bWVudHMuCi0tLQogdGVzdGluZy9saXNwL3Rl c3Qtb3JnLWN0YWdzLmVsIHwgMTkyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogMSBmaWxlIGNoYW5nZWQsIDE5MiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2 NDQgdGVzdGluZy9saXNwL3Rlc3Qtb3JnLWN0YWdzLmVsCgpkaWZmIC0tZ2l0IGEvdGVzdGlu Zy9saXNwL3Rlc3Qtb3JnLWN0YWdzLmVsIGIvdGVzdGluZy9saXNwL3Rlc3Qtb3JnLWN0YWdz LmVsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uN2Y1ZmNhOTQ4Ci0t LSAvZGV2L251bGwKKysrIGIvdGVzdGluZy9saXNwL3Rlc3Qtb3JnLWN0YWdzLmVsCkBAIC0w LDAgKzEsMTkyIEBACis7OzsgdGVzdC1vcmctY3RhZ3MuZWwgLS0tIHRlc3RzIGZvciBvcmct Y3RhZ3MuZWwgIC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQgLSotCisKKzs7IENvcHlyaWdodCAo QykgMjAyNCBNYXggTmlrdWxpbgorOzsgQXV0aG9yczogTWF4IE5pa3VsaW4KKworOzsgVGhp cyBmaWxlIGlzIG5vdCBwYXJ0IG9mIEdOVSBFbWFjcy4KKworOzsgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK Kzs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Cis7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorOzsgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworOzsgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7OyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorOzsg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKworOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKzs7IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworOzs7IENvZGU6 CisKKzs7IEFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uIGZvciBgdGVzdC1vcmctY3RhZ3Mv bW9jay1jb21tYW5kJworOzsgaXMgcmVxdWlyZWQgZm9yIGNtZC5leGUuCisodW5sZXNzIChz dHJpbmctZXF1YWwgIi1jIiBzaGVsbC1jb21tYW5kLXN3aXRjaCkKKyAgKHNpZ25hbCAnbWlz c2luZy10ZXN0LWRlcGVuZGVuY3kgIlBPU0lYIHNoZWxsIikpCisKKyhyZXF1aXJlICdvcmct Y3RhZ3MpCisKKzs7OzsgSGVscGVyczoKKworKGRlZnVuIHRlc3Qtb3JnLWN0YWdzL21vY2st Y29tbWFuZCAodGVtcC1maWxlIGNvbW1hbmQtbmFtZSkKKyAgIkRlZmluZSBzaGVsbCBmdW5j dGlvbiBDT01NQU5ELU5BTUUgd3JpbmluZyBhcmd1bWVudHMgdG8gVEVNUC1GSUxFLiIKKyAg OzsgRmFpbHVyZSBleGl0IGNvZGUgaXMgdXNlZCB0byBwcmV2ZW50IGZ1cnRoZXIgYG9yZy1j dGFncycgYWN0aW9ucy4KKyAgKGZvcm1hdCAiJXMoKSB7IHByaW50ZiAnJSVzXFxuJyAlcyBc IiRAXCIgPiVzIDI+JjEgOyBmYWxzZSA7IH0gOyAlcyIKKyAgICAgICAgICBjb21tYW5kLW5h bWUgY29tbWFuZC1uYW1lCisgICAgICAgICAgKHNoZWxsLXF1b3RlLWFyZ3VtZW50IHRlbXAt ZmlsZSkKKyAgICAgICAgICBjb21tYW5kLW5hbWUpKQorCisoZGVmdW4gdGVzdC1vcmctY3Rh Z3MvZ2V0LWFyZ3MgKHRlbXAtZmlsZSBiYXNlIG1hZ2ljKQorICAiUmVhZCBsaXN0IG9mIHN0 cmluZ3MgZnJvbSBURU1QLUZJTEUuCisKK0lmIFRFTVAtRklMRSBkb2VzIG5vdCBzdGFydCBm cm9tIE1BR0lDIHRoZW4gcmV0dXJuCitpdHMgY29udGVudCBhcyBhIHN0cmluZy4gIE90aGVy d2lzZSBzdHJpcCBmaXJzdCBsaW5lCithbmQgdHJhaWxpbmcgbmV3bGluZSwgcmVwbGFjZSBC QVNFIHdpdGggXCJUTVBESVJcIiBzdHJpbmcsCityZXR1cm4gbGlzdCBvZiBsaW5lcy4iCisg IChsZXQqICgoY2FzZS1mb2xkLXNlYXJjaCBuaWwpCisgICAgICAgICAoY29udGVudAorICAg ICAgICAgIChhbmQKKyAgICAgICAgICAgKGZpbGUtZXhpc3RzLXAgdGVtcC1maWxlKQorICAg ICAgICAgICAod2l0aC10ZW1wLWJ1ZmZlcgorICAgICAgICAgICAgIChpbnNlcnQtZmlsZS1j b250ZW50cyB0ZW1wLWZpbGUpCisgICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWlu KSkKKyAgICAgICAgICAgICAod2hlbiAobG9va2luZy1hdCBtYWdpYykKKyAgICAgICAgICAg ICAgICh3aGlsZSAoc2VhcmNoLWZvcndhcmQgYmFzZSBuaWwgJ25vZXJyb3IpCisgICAgICAg ICAgICAgICAgIChyZXBsYWNlLW1hdGNoICJUTVBESVIiICdmaXhlZGNhc2UgJ2xpdGVyYWwp KSkKKyAgICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCisgICAgICAgICAgICAo d2hlbiAoYW5kIChib2xwKSAoPiAocG9pbnQpIDEpKQorICAgICAgICAgICAgICAoZGVsZXRl LWNoYXIgLTEpKQorICAgICAgICAgICAgKGJ1ZmZlci1zdHJpbmcpKSkpKQorICAgIChpZiAo YW5kIGNvbnRlbnQgKHN0cmluZy1wcmVmaXgtcCBtYWdpYyBjb250ZW50KSkKKyAgICAgICAg KGNkciAoc3BsaXQtc3RyaW5nIGNvbnRlbnQgIlxuIikpCisgICAgICBjb250ZW50KSkpCisK KyhkZWZtYWNybyB0ZXN0LW9yZy1jdGFncy93aXRoLWZha2UtY3RhZ3MKKyAgICAodGVtcC1k aXIgc3ViZGlyICZyZXN0IGJvZHkpCisgICJSdW4gQk9EWSB3aXRoIGBvcmctY3RhZ3MtcGF0 aC10by1jdGFncycgc2V0IHRvIGEgdGVzdCBmdW5jdGlvbi4KKworQ3JlYXRlIGEgYnVmZmVy IGJhY2tlZCBieSBhIGZpbGUgaW4gdGhlIFRFTVAtRElSL1NVQkRJUiBkaXJlY3RvcnkuIgor ICAoZGVjbGFyZSAoaW5kZW50IDIpKQorICAobGV0ICgoYnVmZmVyIChnZW5zeW0gImJ1ZmZl ciIpKQorICAgICAgICAoYmFzZSAoZ2Vuc3ltICJiYXNlIikpCisgICAgICAgIChkaXIgKGdl bnN5bSAiZGlyIikpCisgICAgICAgICh0ZW1wLWZpbGUgKGdlbnN5bSAidGVtcC1maWxlIikp KQorICAgIGAobGV0KiAoKCxiYXNlICx0ZW1wLWRpcikKKyAgICAgICAgICAgICgsZGlyIChj b25jYXQgLGJhc2UgIi8iICxzdWJkaXIpKQorICAgICAgICAgICAgKCx0ZW1wLWZpbGUgKGNv bmNhdCAsZGlyICIvY3RhZ3MudHh0IikpCisgICAgICAgICAgICAob3JnLWN0YWdzLXBhdGgt dG8tY3RhZ3MKKyAgICAgICAgICAgICAodGVzdC1vcmctY3RhZ3MvbW9jay1jb21tYW5kICx0 ZW1wLWZpbGUgImN0YWdzLW1vY2siKSkKKyAgICAgICAgICAgICxidWZmZXIpCisgICAgICAg KG1ha2UtZGlyZWN0b3J5ICxkaXIpCisgICAgICAgKHVud2luZC1wcm90ZWN0CisgICAgICAg ICAgIDs7IGBvcmctY3RhZ3MnIGNvbW1hbmRzIGNhbGwgYGJ1ZmZlci1maWxlLW5hbWUnLgor ICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlcgorICAgICAgICAgICAgICAgKHNldHEg LGJ1ZmZlciAoZmluZC1maWxlLW5vc2VsZWN0ICx0ZW1wLWZpbGUpKQorICAgICAgICAgICAg IChpbnNlcnQgIlNvdWxkIGJlIG92ZXJ3cml0dGVuIGJ5IG9yZy1jdGFncyBtb2NrIHNjcmlw dCIpCisgICAgICAgICAgICAgKHNhdmUtYnVmZmVyKQorICAgICAgICAgICAgICxAYm9keQor ICAgICAgICAgICAgICh0ZXN0LW9yZy1jdGFncy9nZXQtYXJncyAsdGVtcC1maWxlICxiYXNl ICJjdGFncy1tb2NrXG4iKSkKKyAgICAgICAgIChraWxsLWJ1ZmZlciAsYnVmZmVyKQorICAg ICAgICAgKGRlbGV0ZS1maWxlICx0ZW1wLWZpbGUpCisgICAgICAgICAoZGVsZXRlLWRpcmVj dG9yeSAsZGlyKSkpKSkKKwwKKzs7OzsgQ29tcGFyYXRvciB0byBoYXZlIGluZm9ybWF0aXZl IGZhaWx1cmVzOgorCisoZGVmdW4gdGVzdC1vcmctY3RhZ3MvbGlzdC1lbGVtZW50cyAobHN0 ICZvcHRpb25hbCBpbmRpY2llcykKKyAgIlNlbGVjdCBJTkRJQ0lFUyBlbGVtZW50cyBmcm9t IExTVCBsaXN0LgorCitJTkRJQ0lFUyBzaG91bGQgYmUgc29ydGVkIGluIGdyb3dpbmcgb3Jk ZXIuIgorICAoaWYgKG5vdCAoYW5kIGluZGljaWVzIChsaXN0cCBsc3QpKSkKKyAgICAgIGxz dAorICAgIChsZXQgKHNlbGVjdGVkCisgICAgICAgICAgKHByZXYgMCkpCisgICAgICAoZG9s aXN0IChpIGluZGljaWVzIChucmV2ZXJzZSBzZWxlY3RlZCkpCisgICAgICAgIChzZXRxIGxz dCAobnRoY2RyICgtIGkgcHJldikgbHN0KSkKKyAgICAgICAgKHNldHEgcHJldiBpKQorICAg ICAgICAocHVzaCAoY2FyIGxzdCkgc2VsZWN0ZWQpKSkpKQorCisoZGVmdW4gdGVzdC1vcmct Y3RhZ3MvbGlzdC1lbGVtZW50cy1lcXVhbC1wCisgICAgKGV4cGVjdCBhY3R1YWwgaW5kaWNp ZXMgJnJlc3QgX2NvbW1lbnRzKQorICAiQ2FsbCBgZXF1YWwnIGZvciBsaXN0cyBFWFBFQ1Qg YW5kIElORElDSUVTIGVsZW1lbnRzIGZyb20gQUNUVUFMLgorCitfQ09NTUVOVFMgc2hvdWxk IGFwcGVhciBpbiBmYWlsdXJlIG1lc3NhZ2UuIgorICAoZXF1YWwgZXhwZWN0CisgICAgICAg ICAodGVzdC1vcmctY3RhZ3MvbGlzdC1lbGVtZW50cyBhY3R1YWwgaW5kaWNpZXMpKSkKKwor KGRlZnVuIHRlc3Qtb3JnLWN0YWdzL2xpc3QtZWxlbWVudHMtZXF1YWwtZXhwbGFpbgorICAg IChleHBlY3QgYWN0dWFsIGluZGljaWVzICZyZXN0IF9jb21tZW50cykKKyAgImBlcnQtZXBs YWluZXInIGZvciBgdGVzdC1vcmctY3RhZ3MvbGlzdC1lbGVtZW50cy1lcXVhbC1wJy4iCisg IChpZiAobGlzdHAgYWN0dWFsKQorICAgICAgKGxpc3QKKyAgICAgICAnc2VsZWN0ZWQtZWxl bWVudHMKKyAgICAgICAodGVzdC1vcmctY3RhZ3MvbGlzdC1lbGVtZW50cyBhY3R1YWwgaW5k aWNpZXMpKQorICAgICJTaGVsbCBjb21tYW5kIGZhaWxlZCIpKQorCisocHV0ICd0ZXN0LW9y Zy1jdGFncy9saXN0LWVsZW1lbnRzLWVxdWFsLXAKKyAgICAgJ2VydC1leHBsYWluZXIKKyAg ICAgJ3Rlc3Qtb3JnLWN0YWdzL2xpc3QtZWxlbWVudHMtZXF1YWwtZXhwbGFpbikKKwwKKzs7 OzsgVGVzdHM6CisKKyhlcnQtZGVmdGVzdCB0ZXN0LW9yZy1jdGFncy9jcmVhdGUtdGFncy1l c2NhcGUgKCkKKyAgIlRlc3QgdGhhdCBgb3JnLWN0YWdzLWNyZWF0ZS10YWdzJyBlc2NhcGVz IHNoZWxsIGFyZ3VtZW50cy4iCisgIChsZXQgKCh0ZW1wLWRpciAobWFrZS10ZW1wLWZpbGUg InRlc3Qtb3JnLWN0YWdzLSIgJ2RpcikpKQorICAgICh1bndpbmQtcHJvdGVjdAorICAgICAg ICAocHJvZ24KKyAgICAgICAgICAoc2hvdWxkCisgICAgICAgICAgICh0ZXN0LW9yZy1jdGFn cy9saXN0LWVsZW1lbnRzLWVxdWFsLXAKKyAgICAgICAgICAgIChsaXN0IChmb3JtYXQgIi0t cmVnZXgtb3JnbW9kZT0lcyIgb3JnLWN0YWdzLXRhZy1yZWdleHApKQorICAgICAgICAgICAg KHRlc3Qtb3JnLWN0YWdzL3dpdGgtZmFrZS1jdGFncyB0ZW1wLWRpciAicmVnZXhwIgorICAg ICAgICAgICAgICAob3JnLWN0YWdzLWNyZWF0ZS10YWdzKSkKKyAgICAgICAgICAgICcoMikK KyAgICAgICAgICAgICJSZWdleHAgc2hvdWxkIGJlIGVzY2FwZWQuIikpCisKKyAgICAgICAg ICAoc2hvdWxkCisgICAgICAgICAgICh0ZXN0LW9yZy1jdGFncy9saXN0LWVsZW1lbnRzLWVx dWFsLXAKKyAgICAgICAgICAgICcoIlRNUERJUi9yZWd1bGFyL2N0YWdzLnR4dCIpCisgICAg ICAgICAgICAodGVzdC1vcmctY3RhZ3Mvd2l0aC1mYWtlLWN0YWdzIHRlbXAtZGlyICJyZWd1 bGFyIgorICAgICAgICAgICAgICAob3JnLWN0YWdzLWNyZWF0ZS10YWdzIChjb25jYXQgdGVt cC1kaXIgIi9yZWd1bGFyIikpKQorICAgICAgICAgICAgJyg3KQorICAgICAgICAgICAgIldp bGRjYXJkIHNob3VsZCBiZSBleHBhbmRlZC4iCisgICAgICAgICAgICAiRGlyZWN0b3J5IHBh c3NlZCBhcyBhbiBhcmd1bWVudC4iKSkKKworICAgICAgICAgIChzaG91bGQKKyAgICAgICAg ICAgKHRlc3Qtb3JnLWN0YWdzL2xpc3QtZWxlbWVudHMtZXF1YWwtcAorICAgICAgICAgICAg JygiVE1QRElSL3NwYWNlIGNoYXIvVEFHUyIgIlRNUERJUi9zcGFjZSBjaGFyL2N0YWdzLnR4 dCIpCisgICAgICAgICAgICAodGVzdC1vcmctY3RhZ3Mvd2l0aC1mYWtlLWN0YWdzIHRlbXAt ZGlyICJzcGFjZSBjaGFyIgorICAgICAgICAgICAgICAob3JnLWN0YWdzLWNyZWF0ZS10YWdz IChjb25jYXQgdGVtcC1kaXIgIi9zcGFjZSBjaGFyIikpKQorICAgICAgICAgICAgJyg0IDcp CisgICAgICAgICAgICAiU3BhY2UgY2hhcmFjdGVycyBzaG91bGQgbm90IHNwbGl0IGFyZ3Vt ZW50cy4iCisgICAgICAgICAgICAiRGlyZWN0b3J5IHBhc3NlZCBhcyBhbiBhcmd1bWVudC4i KSkKKworICAgICAgICAgIChzaG91bGQKKyAgICAgICAgICAgKHRlc3Qtb3JnLWN0YWdzL2xp c3QtZWxlbWVudHMtZXF1YWwtcAorICAgICAgICAgICAgJygiVE1QRElSL2Fwb3N0cm9waGUn IHNlcCAnL1RBR1MiICJUTVBESVIvYXBvc3Ryb3BoZScgc2VwICcvY3RhZ3MudHh0IikKKyAg ICAgICAgICAgICh0ZXN0LW9yZy1jdGFncy93aXRoLWZha2UtY3RhZ3MgdGVtcC1kaXIgImFw b3N0cm9waGUnIHNlcCAnIgorICAgICAgICAgICAgICAob3JnLWN0YWdzLWNyZWF0ZS10YWdz KSkKKyAgICAgICAgICAgICcoNCA3KQorICAgICAgICAgICAgIkFwb3N0cm9waGVzIHNob3Vs ZCBiZSByZWd1bGFyIGNoYXJhY3RlcnMuIgorICAgICAgICAgICAgIlBhdGggaXMgZGVyaXZl ZCBmcm9tIGBkZWZhdWx0LWRpcmVjdG9yeScuIikpCisKKyAgICAgICAgICAoc2hvdWxkCisg ICAgICAgICAgICh0ZXN0LW9yZy1jdGFncy9saXN0LWVsZW1lbnRzLWVxdWFsLXAKKyAgICAg ICAgICAgICcoIlRNUERJUi9kZWYtZGlyLiRIT01FL1RBR1MiICJUTVBESVIvZGVmLWRpci4k SE9NRS9jdGFncy50eHQiKQorICAgICAgICAgICAgKHRlc3Qtb3JnLWN0YWdzL3dpdGgtZmFr ZS1jdGFncyB0ZW1wLWRpciAiZGVmLWRpci4kSE9NRSIKKyAgICAgICAgICAgICAgKG9yZy1j dGFncy1jcmVhdGUtdGFncykpCisgICAgICAgICAgICAnKDQgNykKKyAgICAgICAgICAgICIk VkFSSUFCTEVTIHNob3VsZCBub3QgYmUgZXhwYW5kZWQgaW4gZGlyZWN0b3J5IG5hbWVzLiIK KyAgICAgICAgICAgICJQYXRoIGlzIGRlcml2ZWQgZnJvbSBgZGVmYXVsdC1kaXJlY3Rvcnkn LiIpKQorCisgICAgICAgICAgKHNob3VsZAorICAgICAgICAgICAodGVzdC1vcmctY3RhZ3Mv bGlzdC1lbGVtZW50cy1lcXVhbC1wCisgICAgICAgICAgICAnKCJUTVBESVIvYXJnLiRIT01F L1RBR1MiICJUTVBESVIvYXJnLiRIT01FL2N0YWdzLnR4dCIpCisgICAgICAgICAgICAodGVz dC1vcmctY3RhZ3Mvd2l0aC1mYWtlLWN0YWdzIHRlbXAtZGlyICJhcmcuJEhPTUUiCisgICAg ICAgICAgICAgIChvcmctY3RhZ3MtY3JlYXRlLXRhZ3MgKGNvbmNhdCB0ZW1wLWRpciAiL2Fy Zy4kSE9NRSIpKSkKKyAgICAgICAgICAgICcoNCA3KQorICAgICAgICAgICAgIiRWQVJJQUJM RVMgc2hvdWxkIG5vdCBiZSBleHBhbmRlZCBpbiBkaXJlY3RvcnkgbmFtZXMuIgorICAgICAg ICAgICAgIkRpcmVjdG9yeSBwYXNzZWQgYXMgYW4gYXJndW1lbnQiKSkpCisgICAgICAoZGVs ZXRlLWRpcmVjdG9yeSB0ZW1wLWRpcikpKSkKKworKHByb3ZpZGUgJ3Rlc3Qtb3JnLWN0YWdz KQorOzs7IHRlc3Qtb3JnLmVsIGVuZHMgaGVyZQotLSAKMi4zOS4yCgo= --------------P0YDtGN7M75G0jBcasFYs4ZN--