From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Dmitry Gutov Newsgroups: gmane.emacs.bugs Subject: bug#67687: Feature request: automatic tags management Date: Mon, 1 Jan 2024 17:47:09 +0200 Message-ID: <2198a45c-e94b-47d6-9815-125d8f505f18@gutov.dev> References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> <979cf9e0-4d08-4c39-b5c8-11b0bb8801b4@gutov.dev> <83v88e3moc.fsf@gnu.org> <835y0e2ui8.fsf@gnu.org> <95132856-65b0-4812-a124-52e0da674330@gutov.dev> <8334vi2mwo.fsf@gnu.org> <801f2f8a-a39b-493f-a24f-0613a3c7ca57@gutov.dev> <83ttnx1clj.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------pYMvmnLx4ROehGZTLDSiKerS" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="22851"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla Thunderbird Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, michael.albinus@gmx.de, stefankangas@gmail.com To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon Jan 01 16:48:26 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1rKKWe-0005ic-H6 for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 01 Jan 2024 16:48:26 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rKKWI-000591-9f; Mon, 01 Jan 2024 10:48:02 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rKKWG-00058n-T7 for bug-gnu-emacs@gnu.org; Mon, 01 Jan 2024 10:48:00 -0500 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rKKWG-0004Ih-K2 for bug-gnu-emacs@gnu.org; Mon, 01 Jan 2024 10:48:00 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rKKWI-00060J-7j for bug-gnu-emacs@gnu.org; Mon, 01 Jan 2024 10:48:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 01 Jan 2024 15:48:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 67687 X-GNU-PR-Package: emacs Original-Received: via spool by 67687-submit@debbugs.gnu.org id=B67687.170412404822880 (code B ref 67687); Mon, 01 Jan 2024 15:48:02 +0000 Original-Received: (at 67687) by debbugs.gnu.org; 1 Jan 2024 15:47:28 +0000 Original-Received: from localhost ([127.0.0.1]:48642 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKKVj-0005ww-0Y for submit@debbugs.gnu.org; Mon, 01 Jan 2024 10:47:28 -0500 Original-Received: from wout1-smtp.messagingengine.com ([64.147.123.24]:37209) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rKKVg-0005wh-LM for 67687@debbugs.gnu.org; Mon, 01 Jan 2024 10:47:26 -0500 Original-Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.west.internal (Postfix) with ESMTP id 6C0003200B44; Mon, 1 Jan 2024 10:47:15 -0500 (EST) Original-Received: from mailfrontend1 ([10.202.2.162]) by compute5.internal (MEProxy); Mon, 01 Jan 2024 10:47:15 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm1; t=1704124034; x=1704210434; bh=BFJp6lgDG2 zcE+uCPBS0NuobfSXAXbt5pZxsD2cH9EE=; b=e+YvVf10hEKct18EQvWv4rpYpk eet/X5/kUlR+j3WnOh53tJCKZ8/550h75vSctFzTxECfyWOskV+tHhDGk+8PEjj9 qlh6lWW5G3p0gYju+drmfCjWgCYi5mpDCZqU8a208g4i5ckJpFzBWbai9tqws3fi 3KGJc8IS8op7z6KFwhioT2uknc+3gJ1Y1fL50jKgjCW/vs0yZ10RLgEMkY/hLDgr HYt+GjqcCPZ4abK6TDN5iFQz3er3iw4QqTcBZG6TKGMWUfs+9nbaA2tn/mJKpkzp hb7oV9AeIZa0YOuJ7iganUGl6Zg4Y19IhAtICnwe5jSBObXBJnNgj/sbfRpw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; t=1704124034; x=1704210434; bh=BFJp6lgDG2zcE+uCPBS0NuobfSXA Xbt5pZxsD2cH9EE=; b=TkY4FDBN2uitmKB/vULmPVhLGSR7IkO+D7hpXUI1yWpj N4W/Xh2OlArTW6KEcx7+bJfAA/vkrH2tHF2+hQXShBMejcfshjmpNYE223ZPy3su khIPWVCVTn3X2qh7dW7V+kpdANtHwZjFdDqoMLMkP1/nQa4SL6QlhHDHkIKcDCLl xatJY8fQJT7aUz0ZYLwIgSgqpdNZlO50jWBzBItLzm2nWjIH0pwPe2kT3eAYjhUD kYMZrGfyaYeLM7u92slvdMd6ZhOa141ia9wtuZZBLz/tyy8l8EYtk7fSwPCnDl62 F5LR/fTCSgmVgKu1TAAufMLzyQpOYVaVah8CJcDurA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdegtddgkedtucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptgfkffggfgfuvfevfhfhjgesmhdtreertddvjeenucfhrhhomhepffhmihht rhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtth gvrhhnpeehleefudekudduveekieelgfeiffdvkefhkeeljeeujeegueekveffkeejjeev heenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumh hithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Original-Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 1 Jan 2024 10:47:12 -0500 (EST) Content-Language: en-US In-Reply-To: <83ttnx1clj.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:277177 Archived-At: This is a multi-part message in MIME format. --------------pYMvmnLx4ROehGZTLDSiKerS Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 01/01/2024 14:07, Eli Zaretskii wrote: >>>> Either way, we get a poorly-defined behavior with edge cases that are >>>> likely to surprise the user at different points of time. So we might >>>> indeed grow such a capability, but it'll probably stay off by default. >>> I agree that sometimes it could be against the user's expectations. >>> But I also think that other times it is according to user's >>> expectations. Which tells me that this is a separate issue that needs >>> a separate knob; we shouldn't deterministically deduce what users want >>> in this respect from the fact that he/she loaded an existing tags >>> table. Moreover, it is quite possible that even when the mode is >>> turned on, users might want sometimes to load tags tables manually. >> I don't mind adding additional knobs. > I guess for now it will be enough to document that invoking > visit-tags-table disables the mode for that project. AFAICT this is > not currently documented anywhere in the patch. OK, added a paragraph to the mode's docstring. --------------pYMvmnLx4ROehGZTLDSiKerS Content-Type: text/x-patch; charset=UTF-8; name="etags-regen-v7.diff" Content-Disposition: attachment; filename="etags-regen-v7.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhLy5kaXItbG9jYWxzLmVsIGIvLmRpci1sb2NhbHMuZWwKaW5kZXggZTA4 N2FhODljZDEuLmNlN2ZlYmNhODUxIDEwMDY0NAotLS0gYS8uZGlyLWxvY2Fscy5lbAorKysg Yi8uZGlyLWxvY2Fscy5lbApAQCAtOCw2ICs4LDEyIEBACiAgICAgICAgICAodmMtZ2l0LWFu bm90YXRlLXN3aXRjaGVzIC4gIi13IikKICAgICAgICAgIChidWctcmVmZXJlbmNlLXVybC1m b3JtYXQgLiAiaHR0cHM6Ly9kZWJidWdzLmdudS5vcmcvJXMiKQogCSAoZGlmZi1hZGQtbG9n LXVzZS1yZWxhdGl2ZS1uYW1lcyAuIHQpCisgICAgICAgICAoZXRhZ3MtcmVnZW4tcmVnZXhw LWFsaXN0CisgICAgICAgICAgLgorICAgICAgICAgICgoKCJjIiAib2JqYyIpIC4KKyAgICAg ICAgICAgICgiL1sgXHRdKkRFRlZBUl9bQS1aXyBcdChdK1wiXFwoW15cIl0rXFwpXCIvXFwx LyIKKyAgICAgICAgICAgICAiL1sgXHRdKkRFRlZBUl9bQS1aXyBcdChdK1wiW15cIl0rXCIs WyBcdF1cXChbQS1aYS16MC05X10rXFwpL1xcMS8iKSkpKQorICAgICAgICAgKGV0YWdzLXJl Z2VuLWlnbm9yZXMgLiAoInRlc3QvbWFudWFsL2V0YWdzLyIpKQogICAgICAgICAgKHZjLXBy ZXBhcmUtcGF0Y2hlcy1zZXBhcmF0ZWx5IC4gbmlsKSkpCiAgKGMtbW9kZSAuICgoYy1maWxl LXN0eWxlIC4gIkdOVSIpCiAgICAgICAgICAgICAoYy1ub2lzZS1tYWNyby1uYW1lcyAuICgi SU5MSU5FIiAiTk9fSU5MSU5FIiAiQVRUUklCVVRFX05PX1NBTklUSVpFX1VOREVGSU5FRCIK ZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MKaW5kZXggYmE0MGVmYTJlOWQuLjA5 MjhhZTVhMmRjIDEwMDY0NAotLS0gYS9ldGMvTkVXUworKysgYi9ldGMvTkVXUwpAQCAtMTI3 MCw2ICsxMjcwLDExIEBAIHRoZSBuZWVkcyBvZiB1c2VycyB3aXRoIHJlZC1ncmVlbiBvciBi bHVlLXllbGxvdyBjb2xvciBkZWZpY2llbmN5LgogVGhlIEluZm8gbWFudWFsICIobW9kdXMt dGhlbWVzKSBUb3AiIGRlc2NyaWJlcyB0aGUgZGV0YWlscyBhbmQKIHNob3djYXNlcyBhbGwg dGhlaXIgY3VzdG9taXphdGlvbiBvcHRpb25zLgogCisqKiBOZXcgZ2xvYmFsIG1pbm9yIG1v ZGUgJ2V0YWdzLXJlZ2VuLW1vZGUnLgorVGhpcyBtaW5vciBtb2RlIGdlbmVyYXRlcyB0aGUg dGFncyB0YWJsZSBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uIHRoZQorY3VycmVudCBwcm9qZWN0 IGNvbmZpZ3VyYXRpb24sIGFuZCBsYXRlciB1cGRhdGVzIGl0IGFzIHlvdSBlZGl0IHRoZQor ZmlsZXMgYW5kIHNhdmUgdGhlIGNoYW5nZXMuCisKIAwKICogSW5jb21wYXRpYmxlIExpc3Ag Q2hhbmdlcyBpbiBFbWFjcyAzMC4xCiAKZGlmZiAtLWdpdCBhL2xpc3AvcHJvZ21vZGVzL2V0 YWdzLXJlZ2VuLmVsIGIvbGlzcC9wcm9nbW9kZXMvZXRhZ3MtcmVnZW4uZWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjAxYmQ2MjZjOTYyCi0tLSAvZGV2L251 bGwKKysrIGIvbGlzcC9wcm9nbW9kZXMvZXRhZ3MtcmVnZW4uZWwKQEAgLTAsMCArMSw0MzEg QEAKKzs7OyBldGFncy1yZWdlbi5lbCAtLS0gQXV0by0ocmUpcmVnZW5lcmF0aW5nIHRhZ3Mg IC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQgLSotCisKKzs7IENvcHlyaWdodCAoQykgMjAyMS0y MDIzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCis7OyBBdXRob3I6IERtaXRy eSBHdXRvdiA8ZG1pdHJ5QGd1dG92LmRldj4KKzs7IEtleXdvcmRzOiB0b29scworCis7OyBU aGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCisKKzs7IEdOVSBFbWFjcyBpcyBmcmVl IHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cis7OyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKzs7IChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisKKzs7IEdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7IE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK Kzs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKzs7 IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCis7OyBhbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxo dHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKzs7OyBDb21tZW50YXJ5OgorCis7 OyBTaW1wbGUgYXV0b21hdGljIHRhZ3MgZ2VuZXJhdGlvbiB3aXRoIHVwZGF0ZXMgb24gc2F2 ZS4KKzs7Cis7OyBUaGlzIG1vZGUgcHJvdmlkZXMgYXV0b21hdGljIGluZGV4aW5nIGZvciBF bWFjcyAiZ28gdG8gZGVmaW5pdGlvbiIKKzs7IGZlYXR1cmUsIHRoZSBgeHJlZi1nby1mb3J3 YXJkJyBjb21tYW5kIChib3VuZCB0byBgTS0uJyBieSBkZWZhdWx0KS4KKzs7Cis7OyBBdCB0 aGUgbW9tZW50IHJlaW5kZXhpbmcgd29ya3Mgb2ZmIGJlZm9yZS9hZnRlci1zYXZlLWhvb2ss IGJ1dCB0bworOzsgaGFuZGxlIG1vcmUgY29tcGxleCBjaGFuZ2VzIChmb3IgZXhhbXBsZSwg dGhlIHVzZXIgc3dpdGNoaW5nIHRvCis7OyBhbm90aGVyIGJyYW5jaCBmcm9tIHRoZSB0ZXJt aW5hbCkgd2UgY2FuIGxvb2sgaW50byBwbHVnZ2luZyBpbnRvCis7OyBzb21ldGhpbmcgbGlr ZSBgZmlsZW5vdGlmeScuCis7OworOzsgTm90ZSB0aGF0IHRoaXMgZmVhdHVyZSBkaXNhYmxl cyBpdHNlbGYgaWYgdGhlIHVzZXIgaGFzIHNvbWUgdGFncworOzsgdGFibGUgYWxyZWFkeSB2 aXNpdGVkICh3aXRoIGBNLXggdmlzaXQtdGFncy10YWJsZScsIG9yIHRocm91Z2ggYW4KKzs7 IGV4cGxpY2l0IHByb21wdCB0cmlnZ2VyZWQgYnkgc29tZSBmZWF0dXJlIHRoYXQgcmVxdWly ZXMgdGFncykuCisKKzs7OyBDb2RlOgorCisocmVxdWlyZSAnY2wtbGliKQorCisoZGVmZ3Jv dXAgZXRhZ3MtcmVnZW4gbmlsCisgICJBdXRvLShyZSlnZW5lcmF0aW5nIHRhZ3MuIgorICA6 Z3JvdXAgJ3Rvb2xzKQorCisoZGVmdmFyIGV0YWdzLXJlZ2VuLS10YWdzLWZpbGUgbmlsKQor KGRlZnZhciBldGFncy1yZWdlbi0tdGFncy1yb290IG5pbCkKKyhkZWZ2YXIgZXRhZ3MtcmVn ZW4tLW5ldy1maWxlIG5pbCkKKworKGRlY2xhcmUtZnVuY3Rpb24gcHJvamVjdC1yb290ICJw cm9qZWN0IikKKyhkZWNsYXJlLWZ1bmN0aW9uIHByb2plY3QtZmlsZXMgInByb2plY3QiKQor KGRlY2xhcmUtZnVuY3Rpb24gZGlyZWQtZ2xvYi1yZWdleHAgImRpcmVkIikKKworKGRlZmN1 c3RvbSBldGFncy1yZWdlbi1wcm9ncmFtIChleGVjdXRhYmxlLWZpbmQgImV0YWdzIikKKyAg Ik5hbWUgb2YgdGhlIGV0YWdzIHByb2dyYW0gdXNlZCBieSBgZXRhZ3MtcmVnZW4tbW9kZScu CisKK0lmIHlvdSBvbmx5IGhhdmUgYGN0YWdzJyBpbnN0YWxsZWQsIHlvdSBjYW4gYWxzbyBz ZXQgdGhpcyB0bworXCJjdGFncyAtZVwiLiAgU29tZSBmZWF0dXJlcyBtaWdodCBub3QgYmUg c3VwcG9ydGVkIHRoaXMgd2F5LiIKKyAgOzsgQWx3YXlzIGhhdmluZyBvdXIgJ2V0YWdzJyBo ZXJlIHdvdWxkIGJlIGVhc2llciwgYnV0IHdlIGNhbid0CisgIDs7IGFsd2F5cyByZWx5IG9u IGl0IGJlaW5nIGluc3RhbGxlZC4gIFNvIGl0IG1pZ2h0IGJlIGN0YWdzJ3MgZXRhZ3MuCisg IDp0eXBlICdmaWxlCisgIDp2ZXJzaW9uICIzMC4xIikKKworKGRlZmN1c3RvbSBldGFncy1y ZWdlbi10YWdzLWZpbGUgIlRBR1MiCisgICJOYW1lIG9mIHRoZSB0YWdzIGZpbGUgdG8gY3Jl YXRlIGluc2lkZSB0aGUgcHJvamVjdCBieSBgZXRhZ3MtcmVnZW4tbW9kZScuCisKK1RoZSB2 YWx1ZSBzaG91bGQgZWl0aGVyIGJlIGEgc2ltcGxlIGZpbGUgbmFtZSAobm8gZGlyZWN0b3J5 CitzcGVjaWZpZWQpLCBvciBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgcHJvamVjdCBy b290IGRpcmVjdG9yeQorYW5kIHJldHVybnMgYSBkaXN0aW5jdCBhYnNvbHV0ZSBmaWxlIG5h bWUgZm9yIGl0cyB0YWdzIGZpbGUuICBUaGUKK2xhdHRlciBwb3NzaWJpbGl0eSBpcyB1c2Vm dWwgd2hlbiB5b3UgcHJlZmVyIHRvIHN0b3JlIHRoZSB0YWcKK2ZpbGVzIHNvbWV3aGVyZSBl bHNlLCBmb3IgZXhhbXBsZSBpbiBgdGVtcG9yYXJ5LWZpbGUtZGlyZWN0b3J5Jy4iCisgIDp0 eXBlICcoY2hvaWNlIChzdHJpbmcgOnRhZyAiRmlsZSBuYW1lIikKKyAgICAgICAgICAgICAg ICAgKGZ1bmN0aW9uIDp0YWcgIkZ1bmN0aW9uIHRoYXQgcmV0dXJucyBmaWxlIG5hbWUiKSkK KyAgOnZlcnNpb24gIjMwLjEiKQorCisoZGVmY3VzdG9tIGV0YWdzLXJlZ2VuLXByb2dyYW0t b3B0aW9ucyBuaWwKKyAgIkxpc3Qgb2YgYWRkaXRpb25hbCBvcHRpb25zIGZvciBldGFncyBw cm9ncmFtIGludm9rZWQgYnkgYGV0YWdzLXJlZ2VuLW1vZGUnLiIKKyAgOnR5cGUgJyhyZXBl YXQgc3RyaW5nKQorICA6dmVyc2lvbiAiMzAuMSIpCisKKyhkZWZjdXN0b20gZXRhZ3MtcmVn ZW4tcmVnZXhwLWFsaXN0IG5pbAorICAiTWFwcGluZyBvZiBsYW5ndWFnZXMgdG8gZXRhZ3Mg cmVnZXhwcyBmb3IgYGV0YWdzLXJlZ2VuLW1vZGUnLgorCitUaGVzZSByZWdleHBzIGFyZSB1 c2VkIGluIGFkZGl0aW9uIHRvIHRoZSB0YWdzIG1hZGUgd2l0aCB0aGUKK3N0YW5kYXJkIHBh cnNpbmcgYmFzZWQgb24gdGhlIGxhbmd1YWdlLgorCitUaGUgdmFsdWUgbXVzdCBiZSBhIGxp c3Qgd2hlcmUgZWFjaCBlbGVtZW50IGhhcyB0aGUKK2Zvcm0gKExBTkdVQUdFUyAuIFRBRy1S RUdFWFBTKSB3aGVyZSBib3RoIExBTkdVQUdFUyBhbmQKK1RBRy1SRUdFWFBTIGFyZSBsaXN0 cyBvZiBzdHJpbmdzLgorCitFYWNoIGxhbmd1YWdlIHNob3VsZCBiZSBvbmUgb2YgdGhlIHJl Y29nbml6ZWQgYnkgZXRhZ3MsIHNlZQorYGV0YWdzIC0taGVscCcuICBFYWNoIHRhZyByZWdl eHAgc2hvdWxkIGJlIGEgc3RyaW5nIGluIHRoZSBmb3JtYXQKK2RvY3VtZW50ZWQgZm9yIHRo ZSBgLS1yZWdleCcgYXJndW1lbnRzICh3aXRob3V0IGB7bGFuZ3VhZ2V9JykuCisKK1dlIGN1 cnJlbnRseSBzdXBwb3J0IG9ubHkgRW1hY3MncyBldGFncyBwcm9ncmFtIHdpdGggdGhpcyBv cHRpb24uIgorICA6dHlwZSAnKHJlcGVhdAorICAgICAgICAgIChjb25zCisgICAgICAgICAg IDp0YWcgIkxhbmd1YWdlcyBncm91cCIKKyAgICAgICAgICAgKHJlcGVhdCAoc3RyaW5nIDp0 YWcgIkxhbmd1YWdlIG5hbWUiKSkKKyAgICAgICAgICAgKHJlcGVhdCAoc3RyaW5nIDp0YWcg IlRhZyBSZWdleHAiKSkpKQorICA6dmVyc2lvbiAiMzAuMSIpCisKKzs7OyMjI2F1dG9sb2Fk CisocHV0ICdldGFncy1yZWdlbi1yZWdleHAtYWxpc3QgJ3NhZmUtbG9jYWwtdmFyaWFibGUK KyAgICAgKGxhbWJkYSAodmFsdWUpCisgICAgICAgKGFuZCAobGlzdHAgdmFsdWUpCisgICAg ICAgICAgICAoc2VxLWV2ZXJ5LXAKKyAgICAgICAgICAgICAobGFtYmRhIChncm91cCkKKyAg ICAgICAgICAgICAgIChhbmQgKGNvbnNwIGdyb3VwKQorICAgICAgICAgICAgICAgICAgICAo bGlzdHAgKGNhciBncm91cCkpCisgICAgICAgICAgICAgICAgICAgIChsaXN0cCAoY2RyIGdy b3VwKSkKKyAgICAgICAgICAgICAgICAgICAgKHNlcS1ldmVyeS1wICMnc3RyaW5ncCAoY2Fy IGdyb3VwKSkKKyAgICAgICAgICAgICAgICAgICAgKHNlcS1ldmVyeS1wICMnc3RyaW5ncCAo Y2RyIGdyb3VwKSkpKQorICAgICAgICAgICAgIHZhbHVlKSkpKQorCis7OyBXZSBoYXZlIHRv IGxpc3QgYWxsIGV4dGVuc2lvbnM6IGV0YWdzIGZhbGxzIGJhY2sgdG8gRm9ydHJhbgorOzsg d2hlbiBpdCBjYW5ub3QgZGV0ZXJtaW5lIHRoZSB0eXBlIG9mIHRoZSBmaWxlLgorOzsgaHR0 cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2VtYWNzLWRldmVsLzIwMTgtMDEvbXNn MDAzMjMuaHRtbAorKGRlZmN1c3RvbSBldGFncy1yZWdlbi1maWxlLWV4dGVuc2lvbnMKKyAg JygicmIiICJqcyIgInB5IiAicGwiICJlbCIgImMiICJjcHAiICJjYyIgImgiICJoaCIgImhw cCIKKyAgICAiamF2YSIgImdvIiAiY2wiICJsaXNwIiAicHJvbG9nIiAicGhwIiAiZXJsIiAi aHJsIgorICAgICJGIiAiZiIgImY5MCIgImZvciIgImNzIiAiYSIgImFzbSIgImFkcyIgImFk YiIgImFkYSIpCisgICJDb2RlIGZpbGUgZXh0ZW5zaW9ucyBmb3IgYGV0YWdzLXJlZ2VuLW1v ZGUnLgorCitGaWxlIGV4dGVuc2lvbnMgdG8gZ2VuZXJhdGUgdGhlIHRhZ3MgZm9yLiIKKyAg OnR5cGUgJyhyZXBlYXQgKHN0cmluZyA6dGFnICJGaWxlIGV4dGVuc2lvbiIpKQorICA6dmVy c2lvbiAiMzAuMSIpCisKKzs7OyMjI2F1dG9sb2FkCisocHV0ICdldGFncy1yZWdlbi1maWxl LWV4dGVuc2lvbnMgJ3NhZmUtbG9jYWwtdmFyaWFibGUKKyAgICAgKGxhbWJkYSAodmFsdWUp IChhbmQgKGxpc3RwIHZhbHVlKSAoc2VxLWV2ZXJ5LXAgIydzdHJpbmdwIHZhbHVlKSkpKQor Cis7OyBGSVhNRTogV2UgZG9uJ3Qgc3VwcG9ydCByb290IGFuY2hvcmluZyB5ZXQuCisoZGVm Y3VzdG9tIGV0YWdzLXJlZ2VuLWlnbm9yZXMgbmlsCisgICJBZGRpdGlvbmFsIGlnbm9yZSBy dWxlcywgaW4gdGhlIGZvcm1hdCBvZiBgcHJvamVjdC1pZ25vcmVzJy4iCisgIDp0eXBlICco cmVwZWF0CisgICAgICAgICAgKHN0cmluZyA6dGFnICJHbG9iIHRvIGlnbm9yZSIpKQorICA6 dmVyc2lvbiAiMzAuMSIpCisKKzs7OyMjI2F1dG9sb2FkCisocHV0ICdldGFncy1yZWdlbi1p Z25vcmVzICdzYWZlLWxvY2FsLXZhcmlhYmxlCisgICAgIChsYW1iZGEgKHZhbHVlKSAoYW5k IChsaXN0cCB2YWx1ZSkgKHNlcS1ldmVyeS1wICMnc3RyaW5ncCB2YWx1ZSkpKSkKKworKGRl ZnZhciBldGFncy1yZWdlbi0tZXJyb3JzLWJ1ZmZlci1uYW1lICIqZXRhZ3MtcmVnZW4tdGFn cy1lcnJvcnMqIikKKworKGRlZnZhciBldGFncy1yZWdlbi0tcmVzY2FuLWZpbGVzLWxpbWl0 IDEwMCkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS1hbGwtbXRpbWVzIChwcm9qKQorICAobGV0 ICgoZmlsZXMgKGV0YWdzLXJlZ2VuLS1hbGwtZmlsZXMgcHJvaikpCisgICAgICAgIChtdGlt ZXMgKG1ha2UtaGFzaC10YWJsZSA6dGVzdCAnZXF1YWwpKQorICAgICAgICBmaWxlLW5hbWUt aGFuZGxlci1hbGlzdCkKKyAgICAoZG9saXN0IChmIGZpbGVzKQorICAgICAgKGNvbmRpdGlv bi1jYXNlIG5pbAorICAgICAgICAgIChwdXRoYXNoIGYKKyAgICAgICAgICAgICAgICAgICAo ZmlsZS1hdHRyaWJ1dGUtbW9kaWZpY2F0aW9uLXRpbWUKKyAgICAgICAgICAgICAgICAgICAg KGZpbGUtYXR0cmlidXRlcyBmKSkKKyAgICAgICAgICAgICAgICAgICBtdGltZXMpCisgICAg ICAgIChmaWxlLW1pc3NpbmcgbmlsKSkpCisgICAgbXRpbWVzKSkKKworKGRlZnVuIGV0YWdz LXJlZ2VuLS1jaG9vc2UtdGFncy1maWxlIChwcm9qKQorICAoaWYgKGZ1bmN0aW9ucCBldGFn cy1yZWdlbi10YWdzLWZpbGUpCisgICAgICAoZnVuY2FsbCBldGFncy1yZWdlbi10YWdzLWZp bGUgKHByb2plY3Qtcm9vdCBwcm9qKSkKKyAgICAoZXhwYW5kLWZpbGUtbmFtZSBldGFncy1y ZWdlbi10YWdzLWZpbGUgKHByb2plY3Qtcm9vdCBwcm9qKSkpKQorCisoZGVmdW4gZXRhZ3Mt cmVnZW4tLXJlZnJlc2ggKHByb2opCisgIChzYXZlLWV4Y3Vyc2lvbgorICAgIChsZXQqICgo dGFncy1maWxlIChldGFncy1yZWdlbi0tY2hvb3NlLXRhZ3MtZmlsZSBwcm9qKSkKKyAgICAg ICAgICAgKHRhZ3MtbXRpbWUgKGZpbGUtYXR0cmlidXRlLW1vZGlmaWNhdGlvbi10aW1lCisg ICAgICAgICAgICAgICAgICAgICAgICAoZmlsZS1hdHRyaWJ1dGVzIHRhZ3MtZmlsZSkpKQor ICAgICAgICAgICAoYWxsLW10aW1lcyAoZXRhZ3MtcmVnZW4tLWFsbC1tdGltZXMgcHJvaikp CisgICAgICAgICAgIGFkZGVkLWZpbGVzCisgICAgICAgICAgIGNoYW5nZWQtZmlsZXMKKyAg ICAgICAgICAgcmVtb3ZlZC1maWxlcykKKyAgICAgIChldGFncy1yZWdlbi0tdmlzaXQtdGFi bGUgdGFncy1maWxlIChwcm9qZWN0LXJvb3QgcHJvaikpCisgICAgICAoc2V0LWJ1ZmZlciAo Z2V0LWZpbGUtYnVmZmVyIHRhZ3MtZmlsZSkpCisgICAgICAoZG9saXN0IChmaWxlICh0YWdz LXRhYmxlLWZpbGVzKSkKKyAgICAgICAgKGxldCAoKG10aW1lIChnZXRoYXNoIGZpbGUgYWxs LW10aW1lcykpKQorICAgICAgICAgIChjb25kCisgICAgICAgICAgICgobnVsbCBtdGltZSkK KyAgICAgICAgICAgIChwdXNoIGZpbGUgcmVtb3ZlZC1maWxlcykpCisgICAgICAgICAgICgo dGltZS1sZXNzLXAgdGFncy1tdGltZSBtdGltZSkKKyAgICAgICAgICAgIChwdXNoIGZpbGUg Y2hhbmdlZC1maWxlcykKKyAgICAgICAgICAgIChyZW1oYXNoIGZpbGUgYWxsLW10aW1lcykp CisgICAgICAgICAgICh0CisgICAgICAgICAgICAocmVtaGFzaCBmaWxlIGFsbC1tdGltZXMp KSkpKQorICAgICAgKG1hcGhhc2gKKyAgICAgICAobGFtYmRhIChrZXkgX3ZhbHVlKQorICAg ICAgICAgKHB1c2gga2V5IGFkZGVkLWZpbGVzKSkKKyAgICAgICBhbGwtbXRpbWVzKQorICAg ICAgKGlmICg+ICgrIChsZW5ndGggYWRkZWQtZmlsZXMpCisgICAgICAgICAgICAgICAgKGxl bmd0aCBjaGFuZ2VkLWZpbGVzKQorICAgICAgICAgICAgICAgIChsZW5ndGggcmVtb3ZlZC1m aWxlcykpCisgICAgICAgICAgICAgZXRhZ3MtcmVnZW4tLXJlc2Nhbi1maWxlcy1saW1pdCkK KyAgICAgICAgICAocHJvZ24KKyAgICAgICAgICAgIChtZXNzYWdlICJldGFncy1yZWdlbjog VG9vIG1hbnkgY2hhbmdlcywgZmFsbGluZyBiYWNrIHRvIGZ1bGwgcmVzY2FuIikKKyAgICAg ICAgICAgIChldGFncy1yZWdlbi0tdGFncy1jbGVhbnVwKSkKKyAgICAgICAgKGRvbGlzdCAo ZmlsZSAobmNvbmMgcmVtb3ZlZC1maWxlcyBjaGFuZ2VkLWZpbGVzKSkKKyAgICAgICAgICAo ZXRhZ3MtcmVnZW4tLXJlbW92ZS10YWcgZmlsZSkpCisgICAgICAgICh3aGVuIChvciBjaGFu Z2VkLWZpbGVzIGFkZGVkLWZpbGVzKQorICAgICAgICAgIChhcHBseSAjJ2V0YWdzLXJlZ2Vu LS1hcHBlbmQtdGFncworICAgICAgICAgICAgICAgICAobmNvbmMgY2hhbmdlZC1maWxlcyBh ZGRlZC1maWxlcykpKQorICAgICAgICAod2hlbiAob3IgY2hhbmdlZC1maWxlcyBhZGRlZC1m aWxlcyByZW1vdmVkLWZpbGVzKQorICAgICAgICAgIChsZXQgKChzYXZlLXNpbGVudGx5IHQp CisgICAgICAgICAgICAgICAgKG1lc3NhZ2UtbG9nLW1heCBuaWwpKQorICAgICAgICAgICAg KHNhdmUtYnVmZmVyIDApKSkpKSkpCisKKyhkZWZ1biBldGFncy1yZWdlbi0tbWF5YmUtZ2Vu ZXJhdGUgKCkKKyAgKGxldCAocHJvaikKKyAgICAod2hlbiAoYW5kIGV0YWdzLXJlZ2VuLS10 YWdzLXJvb3QKKyAgICAgICAgICAgICAgIChub3QgKGZpbGUtaW4tZGlyZWN0b3J5LXAgZGVm YXVsdC1kaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZXRhZ3MtcmVnZW4tLXRhZ3Mtcm9vdCkpKQorICAgICAgKGV0YWdzLXJlZ2VuLS10YWdz LWNsZWFudXApKQorICAgICh3aGVuIChhbmQgKG5vdCBldGFncy1yZWdlbi0tdGFncy1yb290 KQorICAgICAgICAgICAgICAgOzsgSWYgZXhpc3RpbmcgdGFibGUgaXMgdmlzaXRlZCB0aGF0 J3Mgbm90IGdlbmVyYXRlZCBieQorICAgICAgICAgICAgICAgOzsgdGhpcyBtb2RlLCBza2lw IGFsbCBmdW5jdGlvbmFsaXR5LgorICAgICAgICAgICAgICAgKG5vdCAob3IgdGFncy1maWxl LW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MtdGFibGUtbGlzdCkpCisgICAg ICAgICAgICAgICAoZmlsZS1leGlzdHMtcCAoZXRhZ3MtcmVnZW4tLWNob29zZS10YWdzLWZp bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBwcm9qIChwcm9qZWN0 LWN1cnJlbnQpKSkpKQorICAgICAgKG1lc3NhZ2UgIkZvdW5kIGV4aXN0aW5nIHRhZ3MgdGFi bGUsIHJlZnJlc2hpbmcuLi4iKQorICAgICAgKGV0YWdzLXJlZ2VuLS1yZWZyZXNoIHByb2op KQorICAgICh3aGVuIChhbmQgKG5vdCAob3IgdGFncy1maWxlLW5hbWUKKyAgICAgICAgICAg ICAgICAgICAgICAgIHRhZ3MtdGFibGUtbGlzdCkpCisgICAgICAgICAgICAgICAoc2V0cSBw cm9qIChvciBwcm9qIChwcm9qZWN0LWN1cnJlbnQpKSkpCisgICAgICAobWVzc2FnZSAiR2Vu ZXJhdGluZyBuZXcgdGFncyB0YWJsZS4uLiIpCisgICAgICAobGV0ICgoc3RhcnQgKHRpbWUt dG8tc2Vjb25kcykpKQorICAgICAgICAoZXRhZ3MtcmVnZW4tLXRhZ3MtZ2VuZXJhdGUgcHJv aikKKyAgICAgICAgKG1lc3NhZ2UgIi4uLmRvbmUgKCUuMmYgcykiICgtICh0aW1lLXRvLXNl Y29uZHMpIHN0YXJ0KSkpKSkpCisKKyhkZWZ1biBldGFncy1yZWdlbi0tYWxsLWZpbGVzIChw cm9qKQorICAobGV0KiAoKHJvb3QgKHByb2plY3Qtcm9vdCBwcm9qKSkKKyAgICAgICAgIChk ZWZhdWx0LWRpcmVjdG9yeSByb290KQorICAgICAgICAgOzsgVE9ETzogTWFrZSB0aGUgc2Nh bm5pbmcgbW9yZSBlZmZpY2llbnQsIGUuZy4gbW92ZSB0aGUKKyAgICAgICAgIDs7IGZpbHRl cmluZyBieSBnbG9iIHRvIHByb2plY3QgKHByb2plY3QtZmlsZXMtZmlsdGVyZWQuLi4pLgor ICAgICAgICAgKGZpbGVzIChwcm9qZWN0LWZpbGVzIHByb2opKQorICAgICAgICAgKG1hdGNo LXJlIChjb25jYXQKKyAgICAgICAgICAgICAgICAgICAgIlxcLiIKKyAgICAgICAgICAgICAg ICAgICAgKHJlZ2V4cC1vcHQgZXRhZ3MtcmVnZW4tZmlsZS1leHRlbnNpb25zKQorICAgICAg ICAgICAgICAgICAgICAiXFwnIikpCisgICAgICAgICAoaXItc3RhcnQgKDEtIChsZW5ndGgg cm9vdCkpKQorICAgICAgICAgKGlnbm9yZXMtcmVnZXhwcworICAgICAgICAgIChtYXBjYXIg IydldGFncy1yZWdlbi0taWdub3JlLXJlZ2V4cAorICAgICAgICAgICAgICAgICAgZXRhZ3Mt cmVnZW4taWdub3JlcykpKQorICAgIChjbC1kZWxldGUtaWYKKyAgICAgKGxhbWJkYSAoZikg KG9yIChub3QgKHN0cmluZy1tYXRjaC1wIG1hdGNoLXJlIGYpKQorICAgICAgICAgICAgICAg IChzdHJpbmctbWF0Y2gtcCAiL1xcLiMiIGYpIDtCYWNrdXAgZmlsZXMuCisgICAgICAgICAg ICAgICAgKGNsLXNvbWUgKGxhbWJkYSAoaWdub3JlKSAoc3RyaW5nLW1hdGNoIGlnbm9yZSBm IGlyLXN0YXJ0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVzLXJlZ2V4cHMp KSkKKyAgICAgZmlsZXMpKSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS1pZ25vcmUtcmVnZXhw IChpZ25vcmUpCisgIChyZXF1aXJlICdkaXJlZCkKKyAgOzsgSXQncyBzb21ld2hhdCBicml0 dGxlIHRvIHJlbHkgb24gRGlyZWQuCisgIChsZXQgKChyZSAoZGlyZWQtZ2xvYi1yZWdleHAg aWdub3JlKSkpCisgICAgOzsgV2UgY291bGQgaW1wbGVtZW50IHJvb3QgYW5jaG9yaW5nIGhl cmUsIGJ1dCBcXD0gZG9lc24ndCB3b3JrIGluCisgICAgOzsgc3RyaW5nLW1hdGNoIDotKC4K KyAgICAoY29uY2F0ICh1bmxlc3MgKGVxID8vIChhcmVmIHJlIDMpKSAiLyIpCisgICAgICAg ICAgICA7OyBDdXR0aW5nIG9mZiB0aGUgYW5jaG9ycyBhZGRlZCBieSBgZGlyZWQtZ2xvYi1y ZWdleHAnLgorICAgICAgICAgICAgKHN1YnN0cmluZyByZSAyICgtIChsZW5ndGggcmUpIDIp KQorICAgICAgICAgICAgOzsgVGhpcyB3YXkgd2UgYWxsb3cgYSBnbG9iIHRvIG1hdGNoIGFn YWluc3QgYSBkaXJlY3RvcnkKKyAgICAgICAgICAgIDs7IG5hbWUsIG9yIGEgZmlsZSBuYW1l LiAgQW5kIHdoZW4gaXQgZW5kcyB3aXRoIC8gYWxyZWFkeSwKKyAgICAgICAgICAgIDs7IG5v IG5lZWQgdG8gYWRkIHRoZSBhbmNob3JpbmcuCisgICAgICAgICAgICAodW5sZXNzIChlcSA/ LyAoYXJlZiByZSAoLSAobGVuZ3RoIHJlKSAzKSkpCisgICAgICAgICAgICAgIDs7IEVpdGhl ciBtYXRjaCBhIGZ1bGwgbmFtZSBzZWdtZW50LCBvciBlb3MuCisgICAgICAgICAgICAgICJc XCg/Oi9cXHxcXCdcXCkiKSkpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLXRhZ3MtZ2VuZXJh dGUgKHByb2opCisgIChsZXQqICgocm9vdCAocHJvamVjdC1yb290IHByb2opKQorICAgICAg ICAgKGRlZmF1bHQtZGlyZWN0b3J5IHJvb3QpCisgICAgICAgICAoZmlsZXMgKGV0YWdzLXJl Z2VuLS1hbGwtZmlsZXMgcHJvaikpCisgICAgICAgICAodGFncy1maWxlIChldGFncy1yZWdl bi0tY2hvb3NlLXRhZ3MtZmlsZSBwcm9qKSkKKyAgICAgICAgIChjdGFncy1wIChldGFncy1y ZWdlbi0tY3RhZ3MtcCkpCisgICAgICAgICAoY29tbWFuZCAoZm9ybWF0ICIlcyAlcyAlcyAt IC1vICVzIgorICAgICAgICAgICAgICAgICAgICAgICAgICBldGFncy1yZWdlbi1wcm9ncmFt CisgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXBjb25jYXQgIydpZGVudGl0eQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldGFncy1yZWdlbi0tYnVpbGQt cHJvZ3JhbS1vcHRpb25zIGN0YWdzLXApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIiAiKQorICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBjdGFncydzIGV0 YWdzIHJlcXVpcmVzICctTCcgZm9yIHN0ZGluIGlucHV0LgorICAgICAgICAgICAgICAgICAg ICAgICAgICAoaWYgY3RhZ3MtcCAiLUwiICIiKQorICAgICAgICAgICAgICAgICAgICAgICAg ICB0YWdzLWZpbGUpKSkKKyAgICAod2l0aC10ZW1wLWJ1ZmZlcgorICAgICAgKG1hcGMgKGxh bWJkYSAoZikKKyAgICAgICAgICAgICAgKGluc2VydCBmICJcbiIpKQorICAgICAgICAgICAg ZmlsZXMpCisgICAgICAoc2hlbGwtY29tbWFuZC1vbi1yZWdpb24gKHBvaW50LW1pbikgKHBv aW50LW1heCkgY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbCBu aWwgZXRhZ3MtcmVnZW4tLWVycm9ycy1idWZmZXItbmFtZSB0KSkKKyAgICAoZXRhZ3MtcmVn ZW4tLXZpc2l0LXRhYmxlIHRhZ3MtZmlsZSByb290KSkpCisKKyhkZWZ1biBldGFncy1yZWdl bi0tdmlzaXQtdGFibGUgKHRhZ3MtZmlsZSByb290KQorICA7OyBJbnZhbGlkYXRlIHRoZSBz Y2FubmVkIHRhZ3MgYWZ0ZXIgYW55IGNoYW5nZSBpcyB3cml0dGVuIHRvIGRpc2suCisgIChh ZGQtaG9vayAnYWZ0ZXItc2F2ZS1ob29rICMnZXRhZ3MtcmVnZW4tLXVwZGF0ZS1maWxlKQor ICAoYWRkLWhvb2sgJ2JlZm9yZS1zYXZlLWhvb2sgIydldGFncy1yZWdlbi0tbWFyay1hcy1u ZXcpCisgIChzZXRxIGV0YWdzLXJlZ2VuLS10YWdzLWZpbGUgdGFncy1maWxlCisgICAgICAg IGV0YWdzLXJlZ2VuLS10YWdzLXJvb3Qgcm9vdCkKKyAgKHZpc2l0LXRhZ3MtdGFibGUgZXRh Z3MtcmVnZW4tLXRhZ3MtZmlsZSkpCisKKyhkZWZ1biBldGFncy1yZWdlbi0tY3RhZ3MtcCAo KQorICAoc3RyaW5nLXNlYXJjaCAiQ3RhZ3MiCisgICAgICAgICAgICAgICAgIChzaGVsbC1j b21tYW5kLXRvLXN0cmluZworICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiJXMgLS12ZXJz aW9uIiBldGFncy1yZWdlbi1wcm9ncmFtKSkpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLWJ1 aWxkLXByb2dyYW0tb3B0aW9ucyAoY3RhZ3MtcCkKKyAgKHdoZW4gKGFuZCBldGFncy1yZWdl bi1yZWdleHAtYWxpc3QgY3RhZ3MtcCkKKyAgICAodXNlci1lcnJvciAiZXRhZ3MtcmVnZW4t cmVnZXhwLWFsaXN0IGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBDdGFncyIpKQorICAobmNvbmMK KyAgIChtYXBjYW4KKyAgICAobGFtYmRhIChncm91cCkKKyAgICAgIChtYXBjYW4KKyAgICAg ICAobGFtYmRhIChsYW5nKQorICAgICAgICAgKG1hcGNhciAobGFtYmRhIChyZWdleHApCisg ICAgICAgICAgICAgICAgICAgKGNvbmNhdCAiLS1yZWdleD0iCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc2hlbGwtcXVvdGUtYXJndW1lbnQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZm9ybWF0ICJ7JXN9JXMiIGxhbmcgcmVnZXhwKSkpKQorICAgICAgICAgICAg ICAgICAoY2RyIGdyb3VwKSkpCisgICAgICAgKGNhciBncm91cCkpKQorICAgIGV0YWdzLXJl Z2VuLXJlZ2V4cC1hbGlzdCkKKyAgIChtYXBjYXIgIydzaGVsbC1xdW90ZS1hcmd1bWVudAor ICAgICAgICAgICBldGFncy1yZWdlbi1wcm9ncmFtLW9wdGlvbnMpKSkKKworKGRlZnVuIGV0 YWdzLXJlZ2VuLS11cGRhdGUtZmlsZSAoKQorICA7OyBUT0RPOiBNYXliZSBvbmx5IGRvIHRo aXMgd2hlbiBFbWFjcyBpcyBpZGxlIGZvciBhIGJpdC4gIE9yIGRlZmVyCisgIDs7IHRoZSB1 cGRhdGVzIGFuZCBkbyB0aGVtIGxhdGVyIGluIGJ1cnN0cyB3aGVuIHRoZSB0YWJsZSBpcyB1 c2VkLgorICAobGV0KiAoKGZpbGUtbmFtZSBidWZmZXItZmlsZS1uYW1lKQorICAgICAgICAg KHRhZ3MtZmlsZS1idWYgKGFuZCBldGFncy1yZWdlbi0tdGFncy1yb290CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChnZXQtZmlsZS1idWZmZXIgZXRhZ3MtcmVnZW4tLXRhZ3Mt ZmlsZSkpKQorICAgICAgICAgKHJlbG5hbWUgKGNvbmNhdCAiLyIgKGZpbGUtcmVsYXRpdmUt bmFtZSBmaWxlLW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXRhZ3MtcmVnZW4tLXRhZ3Mtcm9vdCkpKQorICAgICAgICAgKGlnbm9y ZXMgZXRhZ3MtcmVnZW4taWdub3JlcykKKyAgICAgICAgIHByIHNob3VsZC1zY2FuKQorICAg IChzYXZlLWV4Y3Vyc2lvbgorICAgICAgKHdoZW4gdGFncy1maWxlLWJ1ZgorICAgICAgICAo Y29uZAorICAgICAgICAgKChhbmQgZXRhZ3MtcmVnZW4tLW5ldy1maWxlCisgICAgICAgICAg ICAgICAoa2lsbC1sb2NhbC12YXJpYWJsZSAnZXRhZ3MtcmVnZW4tLW5ldy1maWxlKQorICAg ICAgICAgICAgICAgKHNldHEgcHIgKHByb2plY3QtY3VycmVudCkpCisgICAgICAgICAgICAg ICAoZXF1YWwgKHByb2plY3Qtcm9vdCBwcikgZXRhZ3MtcmVnZW4tLXRhZ3Mtcm9vdCkKKyAg ICAgICAgICAgICAgIChtZW1iZXIgZmlsZS1uYW1lIChwcm9qZWN0LWZpbGVzIHByKSkpCisg ICAgICAgICAgKHNldC1idWZmZXIgdGFncy1maWxlLWJ1ZikKKyAgICAgICAgICAoc2V0cSBz aG91bGQtc2NhbiB0KSkKKyAgICAgICAgICgocHJvZ24gKHNldC1idWZmZXIgdGFncy1maWxl LWJ1ZikKKyAgICAgICAgICAgICAgICAgKGV0YWdzLXJlZ2VuLS1yZW1vdmUtdGFnIGZpbGUt bmFtZSkpCisgICAgICAgICAgKHNldHEgc2hvdWxkLXNjYW4gdCkpKSkKKyAgICAgICh3aGVu IChhbmQgc2hvdWxkLXNjYW4KKyAgICAgICAgICAgICAgICAgKG5vdCAoY2wtc29tZQorICAg ICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChpZ25vcmUpCisgICAgICAgICAgICAgICAg ICAgICAgICAgKHN0cmluZy1tYXRjaC1wCisgICAgICAgICAgICAgICAgICAgICAgICAgIChl dGFncy1yZWdlbi0taWdub3JlLXJlZ2V4cCBpZ25vcmUpCisgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlbG5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVzKSkpCisg ICAgICAgIChldGFncy1yZWdlbi0tYXBwZW5kLXRhZ3MgZmlsZS1uYW1lKQorICAgICAgICAo bGV0ICgoc2F2ZS1zaWxlbnRseSB0KQorICAgICAgICAgICAgICAobWVzc2FnZS1sb2ctbWF4 IG5pbCkpCisgICAgICAgICAgKHNhdmUtYnVmZmVyIDApKSkpKSkKKworKGRlZnVuIGV0YWdz LXJlZ2VuLS1yZW1vdmUtdGFnIChmaWxlLW5hbWUpCisgIChnb3RvLWNoYXIgKHBvaW50LW1p bikpCisgICh3aGVuIChzZWFyY2gtZm9yd2FyZCAoZm9ybWF0ICJcZlxuJXMsIiBmaWxlLW5h bWUpIG5pbCB0KQorICAgIChsZXQgKChzdGFydCAobWF0Y2gtYmVnaW5uaW5nIDApKSkKKyAg ICAgIChzZWFyY2gtZm9yd2FyZCAiXGZcbiIgbmlsICdtb3ZlKQorICAgICAgKGxldCAoKGlu aGliaXQtcmVhZC1vbmx5IHQpKQorICAgICAgICAoZGVsZXRlLXJlZ2lvbiBzdGFydAorICAg ICAgICAgICAgICAgICAgICAgICAoaWYgKGVvYnApCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAocG9pbnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgKC0gKHBvaW50KSAyKSkp KSkKKyAgICB0KSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS1hcHBlbmQtdGFncyAoJnJlc3Qg ZmlsZS1uYW1lcykKKyAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKKyAgKGxldCAoKG9wdGlv bnMgKGV0YWdzLXJlZ2VuLS1idWlsZC1wcm9ncmFtLW9wdGlvbnMgKGV0YWdzLXJlZ2VuLS1j dGFncy1wKSkpCisgICAgICAgIChpbmhpYml0LXJlYWQtb25seSB0KSkKKyAgICA7OyBYWFg6 IGNhbGwtcHJvY2VzcyBpcyBzaWduaWZpY2FudGx5IGZhc3RlciwgdGhvdWdoLgorICAgIDs7 IExpa2UgMTBtcyB2cyAyMG1zIGhlcmUuICBCdXQgYHNoZWxsLWNvbW1hbmQnIG1ha2VzIGl0 IGVhc3kgdG8KKyAgICA7OyBkaXJlY3Qgc3RkZXJyIHRvIGEgc2VwYXJhdGUgYnVmZmVyLgor ICAgIChzaGVsbC1jb21tYW5kCisgICAgIChmb3JtYXQgIiVzICVzICVzIC1vIC0iCisgICAg ICAgICAgICAgZXRhZ3MtcmVnZW4tcHJvZ3JhbSAobWFwY29uY2F0ICMnaWRlbnRpdHkgb3B0 aW9ucyAiICIpCisgICAgICAgICAgICAgKG1hcGNvbmNhdCAjJ2lkZW50aXR5IGZpbGUtbmFt ZXMgIiAiKSkKKyAgICAgdCBldGFncy1yZWdlbi0tZXJyb3JzLWJ1ZmZlci1uYW1lKSkKKyAg OzsgRklYTUU6IElzIHRoZXJlIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzPworICA7OyBDb21w bGV0aW9uIHRhYmxlIGlzIHRoZSBvbmx5IHJlbWFpbmluZyBwbGFjZSB3aGVyZSB0aGUKKyAg OzsgdXBkYXRlIGlzIG5vdCBpbmNyZW1lbnRhbC4KKyAgKHNldHEtZGVmYXVsdCB0YWdzLWNv bXBsZXRpb24tdGFibGUgbmlsKSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS1tYXJrLWFzLW5l dyAoKQorICAod2hlbiAoYW5kIGV0YWdzLXJlZ2VuLS10YWdzLXJvb3QKKyAgICAgICAgICAg ICAobm90IGJ1ZmZlci1maWxlLW51bWJlcikpCisgICAgKHNldHEtbG9jYWwgZXRhZ3MtcmVn ZW4tLW5ldy1maWxlIHQpKSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS10YWdzLWNsZWFudXAg KCkKKyAgKHdoZW4gZXRhZ3MtcmVnZW4tLXRhZ3MtZmlsZQorICAgIChsZXQgKChidWZmZXIg KGdldC1maWxlLWJ1ZmZlciBldGFncy1yZWdlbi0tdGFncy1maWxlKSkpCisgICAgICAoYW5k IGJ1ZmZlcgorICAgICAgICAgICAoa2lsbC1idWZmZXIgYnVmZmVyKSkpCisgICAgKHRhZ3Mt cmVzZXQtdGFncy10YWJsZXMpCisgICAgKHNldHEgdGFncy1maWxlLW5hbWUgbmlsCisgICAg ICAgICAgdGFncy10YWJsZS1saXN0IG5pbAorICAgICAgICAgIGV0YWdzLXJlZ2VuLS10YWdz LWZpbGUgbmlsCisgICAgICAgICAgZXRhZ3MtcmVnZW4tLXRhZ3Mtcm9vdCBuaWwpKQorICAo cmVtb3ZlLWhvb2sgJ2FmdGVyLXNhdmUtaG9vayAjJ2V0YWdzLXJlZ2VuLS11cGRhdGUtZmls ZSkKKyAgKHJlbW92ZS1ob29rICdiZWZvcmUtc2F2ZS1ob29rICMnZXRhZ3MtcmVnZW4tLW1h cmstYXMtbmV3KSkKKworKGRlZnZhciBldGFncy1yZWdlbi1tb2RlLW1hcCAobWFrZS1zcGFy c2Uta2V5bWFwKSkKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZpbmUtbWlub3ItbW9kZSBldGFn cy1yZWdlbi1tb2RlCisgICJNaW5vciBtb2RlIHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUg YW5kIHVwZGF0ZSB0YWdzIHRhYmxlcy4KKworVGhpcyBtaW5vciBtb2RlIGdlbmVyYXRlcyB0 aGUgdGFncyB0YWJsZSBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uCit0aGUgY3VycmVudCBwcm9q ZWN0IGNvbmZpZ3VyYXRpb24sIGFuZCBsYXRlciB1cGRhdGVzIGl0IGFzIHlvdQorZWRpdCB0 aGUgZmlsZXMgYW5kIHNhdmUgdGhlIGNoYW5nZXMuCisKK1RoZSBleGNlcHRpb24gaXMgbWFk ZSB3aGVuIHRoZSB1c2VyIGhhcyBhbHJlYWR5IHNlbGVjdGVkIGEgdGFncwordGFibGUgbWFu dWFsbHkgKGZvciBleGFtcGxlLCB1c2luZyBcXFt2aXNpdC10YWdzLXRhYmxlXSkuICBUaGVu Cit0aGlzIG1vZGUgZG9lc24ndCBkbyBhbnl0aGluZy4gIFJlc2V0IHRoZSB2aXNpdGVkIHRh Z3MgdGFibGVzCit1c2luZyBcXFt0YWdzLXJlc2V0LXRhZ3MtdGFibGVzXS4iCisgIDpnbG9i YWwgdAorICAoaWYgZXRhZ3MtcmVnZW4tbW9kZQorICAgICAgKHByb2duCisgICAgICAgIChh ZHZpY2UtYWRkICdldGFncy0teHJlZi1iYWNrZW5kIDpiZWZvcmUKKyAgICAgICAgICAgICAg ICAgICAgIydldGFncy1yZWdlbi0tbWF5YmUtZ2VuZXJhdGUpCisgICAgICAgIChhZHZpY2Ut YWRkICd0YWdzLWNvbXBsZXRpb24tYXQtcG9pbnQtZnVuY3Rpb24gOmJlZm9yZQorICAgICAg ICAgICAgICAgICAgICAjJ2V0YWdzLXJlZ2VuLS1tYXliZS1nZW5lcmF0ZSkpCisgICAgKGFk dmljZS1yZW1vdmUgJ2V0YWdzLS14cmVmLWJhY2tlbmQgIydldGFncy1yZWdlbi0tbWF5YmUt Z2VuZXJhdGUpCisgICAgKGFkdmljZS1yZW1vdmUgJ3RhZ3MtY29tcGxldGlvbi1hdC1wb2lu dC1mdW5jdGlvbiAjJ2V0YWdzLXJlZ2VuLS1tYXliZS1nZW5lcmF0ZSkKKyAgICAoZXRhZ3Mt cmVnZW4tLXRhZ3MtY2xlYW51cCkpKQorCisocHJvdmlkZSAnZXRhZ3MtcmVnZW4pCisKKzs7 OyBldGFncy1yZWdlbi5lbCBlbmRzIGhlcmUK --------------pYMvmnLx4ROehGZTLDSiKerS--