From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Gustav_Wikstr=C3=B6m?= Subject: Re: [RFC] [PATCH] Changes to Tag groups - allow nesting and regexps Date: Mon, 16 Mar 2015 21:38:24 +0100 Message-ID: References: <874mr7pcju.fsf@nicolasgoaziou.fr> <87a90345wl.fsf@nicolasgoaziou.fr> <87zj7o5vde.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a11362a8ae8e76c05116dd448 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:53161) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YXbmN-00052u-Ra for emacs-orgmode@gnu.org; Mon, 16 Mar 2015 16:38:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YXbmM-00068m-LW for emacs-orgmode@gnu.org; Mon, 16 Mar 2015 16:38:27 -0400 Received: from mail-pa0-x22b.google.com ([2607:f8b0:400e:c03::22b]:34180) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YXbmM-00068V-3v for emacs-orgmode@gnu.org; Mon, 16 Mar 2015 16:38:26 -0400 Received: by pacwe9 with SMTP id we9so75027424pac.1 for ; Mon, 16 Mar 2015 13:38:24 -0700 (PDT) In-Reply-To: <87zj7o5vde.fsf@nicolasgoaziou.fr> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Org Mode List , Nicolas Goaziou --001a11362a8ae8e76c05116dd448 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi again! It seems my mail got stuck in some filters - I sent one from another address yesterday. Oh well, here it is anyway! Comments below. > From: Nicolas Goaziou [mailto:mail@nicolasgoaziou.fr] > > + (taggroups (if downcased (mapcar (lambda (tg) (mapcar #'downcase = tg)) > > + taggroups) taggroups)) > > Nitpick: indentation Can't see what's wrong.. Autoindent by emacs did this. Anyways.. I made the if-construct clearer by adding linebreaks. > > + (delq nil (mapcar (lambda (x) > > + (if (stringp x) > > + (and (equal "{" (substring x 0 1)) > > + (equal "}" (substring x -1)) > > + x) > > + x)) tags-in-group)) > > Same here. TAGS-IN-GROUP should be at the same level as (lambda (x) ...) Ok, fixed. > > + regexp-in-group > > + (mapcar (lambda (x) > > + (substring x 1 -1)) regexp-in-group-escaped) > > Ditto. Fixed. > > + tags-in-group > > + (delq nil (mapcar (lambda (x) > > + (if (stringp x) > > + (and (not (equal "{" (substring x 0 1))) > > + (not (equal "}" (substring x -1))) > > + x) > > + x)) tags-in-group))) > > Ditto. Fixed. > > + ; If single-as-list, do no more in the while-loop... > > + (if (not single-as-list) > > + (progn > > + (if regexp-in-group > > + (setq regexp-in-group (concat "\\|" (mapconcat 'identity regexp-in-gr= oup "\\|")))) > > + (setq tags-in-group (concat dir "{\\<" (regexp-opt tags-in-group) = regexp-in-group "\\>}")) > > You need to keep lines within 80 columns. Trying to avoid it. > > + (when (member tg g) > > + (mapc (lambda (x) > > + (setq current (delete x current))) > > + g))) > > While you're at it: > > (when (member tg g) (dolist (x g) (setq current (delete x current)))) Ok! > > +(defun org-agenda-filter-by-tag (arg &optional char exclude) > > "Keep only those lines in the agenda buffer that have a specific tag= . > > The tag is selected with its fast selection letter, as configured. > > -With prefix argument STRIP, remove all lines that do have the tag. > > -A lisp caller can specify CHAR. NARROW means that the new tag should = be > > -used to narrow the search - the interactive user can also press `-' or= `+' > > -to switch to narrowing." > > +With a single `C-u' prefix ARG, exclude the agenda search. With a > > +double `C-u' prefix ARG, filter the literal tag. I.e. don't filter on > ^^^ > missing space Fixed. > Also, instead of hard-coding `C-u', you could use \\[universal-argument] > within the doc string. See, for example, `org-tree-to-indirect-buffer'. Fixed. > > + (exclude (if exclude exclude (equal arg '(4)))) > > (exclude (or exclude (equal arg '(4)))) Fixed. > > + (while (not (memq char (append '(?\t ?\r ?/ ?. ?\ ?q) > > + (string-to-list tag-chars)))) > > For clarity, use ?\s instead of ?\ Fixed. > Also, I suggest to move the consing before the while loop. Good point, changed. > > + ((eq char ?. ) > > Spurious space. Fixed. > > + ((or (eq char ?\ ) > > See above. Fixed. > > > + (save-match-data > > + (let (tags-expanded) > > + (dolist (x (cdr tags-in-group)) > > + (if (and (member x taggroups-keys) > > + (not (member x work-already-expanded))) > > + (setq tags-expanded (delete-dups > > + (append (org-tags-expand x t downcased work-already-expanded) > > + tags-expanded))) > > + (setq tags-expanded (append (list x) tags-expanded))) > > + (setq work-already-expanded (delete-dups (append tags-expanded work-a= lready-expanded)))) > > + (setq tags-in-group (delete-dups (cons (car tags-in-group) > > + > > tags-expanded))))) > > Lines too wide. Ok, fixed kind of. I don't want to compromise on the relatively long variable names. > > > +Tags can be defined in hierarchies. A tag can be defined as a @emph{gr= oup > ^^^ > missing space Fixed. > > @lisp > > -(setq org-tag-alist '((:startgroup . nil) > > +(setq org-tag-alist '((:startgrouptag . nil) > > ("@@read" . nil) > > (:grouptags . nil) > > ("@@read_book" . nil) > > ("@@read_ebook" . nil) > > - (:endgroup . nil))) > > + (:endgrouptag . nil))) > > @end lisp > > The following is clearer > > @lisp > (setq org-tag-alist '((:startgrouptag) > ("@@read") > (:grouptags) > ("@@read_book") > ("@@read_ebook") > (:endgrouptag))) > @end lisp > Indeed > However, shouldn't this example apply to the one above? (e.g.., with > Control : Context Task tag line)? Indeed again! > > > +Searching for the tag Project will now list all tags also including re= gular > > +expression matches for P@@.+. Similar for tag-searches on Vision, Goa= l and > > +AOF. This can be good for example if tags for a certain project is ta= gged > > +with a common project-identifier, i.e. P@@2014_OrgTags. > > @samp{Project} @samp{Vision}... @samp{P@@2014_OrgTags}. > > This all looks very nice. Thx! > As a final step, would you mind adding tests > for this? Added a few now. Actually found an error in the way regexps were matched and filtered due to the added tests. So, good point. The errors are fixed ofc. Fixed patches are attached, Best regards Gustav Wikstr=C3=B6m --001a11362a8ae8e76c05116dd448 Content-Type: application/octet-stream; name="0001-org-Grouptags-not-unique-and-can-contain-regexp.patch" Content-Disposition: attachment; filename="0001-org-Grouptags-not-unique-and-can-contain-regexp.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i7cc1bqz0 RnJvbSBiMWE4NWNhNjYyNjBmM2FjODc2MDdkNjE3ZTA1OWQ3MmYwOWJhNDk1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/R3VzdGF2PTIwV2lrc3RyPUMzPUI2bT89IDxn dXN0YXZAVVZTZXJ2ZXI+CkRhdGU6IFNhdCwgMjQgSmFuIDIwMTUgMDI6NDc6MjYgKzAxMDAKU3Vi amVjdDogW1BBVENIIDEvNF0gb3JnOiBHcm91cHRhZ3Mgbm90IHVuaXF1ZSBhbmQgY2FuIGNvbnRh aW4gcmVnZXhwCgoqIGxpc3Avb3JnLmVsIChvcmctdGFncy1leHBhbmQpOiBHcm91cHRhZ3MgY2Fu IGhhdmUgcmVndWxhciBleHByZXNzaW9ucyBhcwogICJzdWItdGFncyIuCgogIFRoZSByZWd1bGFy IGV4cHJlc3Npb25zIGluIHRoZSBncm91cCBtdXN0IGJlIG1hcmtlZCB1cCB3aXRoaW4geyB9Lgog IEV4YW1wbGUgdXNlOgoKICA6ICMrVEFHUzogWyBQcm9qZWN0IDoge1BALit9IF0KCiAgU2VhcmNo aW5nIGZvciB0aGUgdGFnIFByb2plY3Qgd2lsbCBub3cgbGlzdCBhbGwgdGFncyBhbHNvIGluY2x1 ZGluZwogIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGVzIGZvciBQQC4rLiAgR29vZCBmb3IgZXhh bXBsZSBpZiB0YWdzIGZvciBhCiAgY2VydGFpbiBwcm9qZWN0IGlzIHRhZ2dlZCB3aXRoIGEgY29t bW9uIHByb2plY3QtaWRlbnRpZmllciwKICBpLmUuIFBAMjAxNF9PcmdUYWdzLgoKKiBsaXNwL29y Zy5lbCAob3JnLXRhZy1hbGlzdCkgOiBOZXcgc3ltYm9scyBmb3IgZ3JvdXB0YWdzIHdoZW4gdGhl CiAgdGFncyBpbiB0aGUgZ3JvdXAgZG9uJ3QgaGF2ZSB0byBiZSBkaXN0aW5jdCBvbiBhIGhlYWRp bmcuCgogIEdyb3VwdGFncyBoYWQgdG8gcHJldmlvdXNseSBiZSBkZWZpbmVkIHdpdGggeyB9LiAg VGhpcyBzeW50YXggaXMKICBhbHJlYWR5IHVzZWQgZm9yIGV4Y2x1c2l2ZSB0YWdzIGFuZCBHcm91 cHRhZ3MgbmVlZCB0aGVpciBvd24sCiAgbm9uLWV4Y2x1c2l2ZSBzeW50YXguICBUaGlzIGJlaGF2 aW91ciBpcyBhY2hpZXZlZCB3aXRoIFsgXS4gIE5vdGU6IHsKICB9IGNhbiBzdGlsbCBiZSB1c2Vk IGFsc28gZm9yIEdyb3VwdGFncyBidXQgdGhlbiBvbmx5IG9uZSBvZiB0aGUKICBnaXZlbiB0YWdz IGNhbiBiZSB1c2VkIG9uIHRoZSBoZWFkbGluZSBhdCB0aGUgc2FtZSB0aW1lLiAgRXhhbXBsZToK CiAgWyBncm91cCA6IHN1YjEgc3ViMiBdCgogIEdyb3VwdGFncyBhbHNvIGFyZSBub3QgZmlsdGVy ZWQgd2hlbiBzZXR0aW5nIHVwIHRhZ3MuICBUaGlzIG1lYW5zCiAgdGhleSBjYW4gZXhpc3QgbXVs dGlwbGUgdGltZXMgaW4gb3JnLXRhZy1hbGlzdCBsaXN0LiAgSXQgd2lsbCBiZQogIHVzYWJsZSBp ZiBuZXN0aW5nIG9mIGdyb3VwdGFncyBpcyBldmVyIHRvIGJlY29tZSByZWFsaXR5LgoKICBUaGVy ZSBpcyBhIHNsaWdodGx5IGFubm95aW5nIHNpZGUtZWZmZWN0IHdoZW4gc2V0dGluZyB0YWdzIGlu IHRoYXQgYQogIHRhZyB3aGljaCBpcyBib3RoIGEgcGFydCBvZiBhIGdyb3VwdGFnIGFuZCBhIGdy b3VwdGFnIG9mIGl0J3Mgb3duCiAgd2lsbCBnZXQgbXVsdGlwbGUga2V5LWNob2ljZXMgaW4gdGhl IHNlbGVjdGlvbi1VSS4KCiogbGlzcC9vcmcuZWwgKG9yZy0tc2V0dXAtcHJvY2Vzcy10YWdzKTog QWRhcHRpb24gZm9yIHRoZSBhZGRlZCBzeW50YXgKICBmb3Igbm9uLWRpc3RpbmN0IGdyb3VwdGFn cy4KCiogbGlzcC9vcmcuZWwgKG9yZy1mYXN0LXRhZy1zZWxlY3Rpb24pOiBBZGQgc3VwcG9ydCBm b3IgdGhlIGFkZGVkLAogIG5vbi11bmlxdWUsIGdyb3VwdGFnLXN5bnRheC4gIE1pbm9yIChpZiAu Li4pIHRvICh3aGVuIC4uLikgcmVmYWN0b3IuCi0tLQogbGlzcC9vcmcuZWwgICAgICAgICAgICAg IHwgMTc4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiB0 ZXN0aW5nL2xpc3AvdGVzdC1vcmcuZWwgfCAgMzYgKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2Vk LCAxNjcgaW5zZXJ0aW9ucygrKSwgNDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC9v cmcuZWwgYi9saXNwL29yZy5lbAppbmRleCBkYTVkZTg0Li5iMzljYjk4IDEwMDc1NQotLS0gYS9s aXNwL29yZy5lbAorKysgYi9saXNwL29yZy5lbApAQCAtMzQ4MiwxMSArMzQ4MiwxNyBAQCBTZWUg dGhlIG1hbnVhbCBmb3IgZGV0YWlscy4iCiAJICAgKGxpc3QgOnRhZyAiU3RhcnQgcmFkaW8gZ3Jv dXAiCiAJCSAoY29uc3QgOnN0YXJ0Z3JvdXApCiAJCSAob3B0aW9uIChzdHJpbmcgOnRhZyAiR3Jv dXAgZGVzY3JpcHRpb24iKSkpCisJICAgKGxpc3QgOnRhZyAiU3RhcnQgdGFnIGdyb3VwLCBub24g ZGlzdGluY3QiCisJCSAoY29uc3QgOnN0YXJ0Z3JvdXB0YWcpCisJCSAob3B0aW9uIChzdHJpbmcg OnRhZyAiR3JvdXAgZGVzY3JpcHRpb24iKSkpCiAJICAgKGxpc3QgOnRhZyAiR3JvdXAgdGFncyBk ZWxpbWl0ZXIiCiAJCSAoY29uc3QgOmdyb3VwdGFncykpCiAJICAgKGxpc3QgOnRhZyAiRW5kIHJh ZGlvIGdyb3VwIgogCQkgKGNvbnN0IDplbmRncm91cCkKIAkJIChvcHRpb24gKHN0cmluZyA6dGFn ICJHcm91cCBkZXNjcmlwdGlvbiIpKSkKKwkgICAobGlzdCA6dGFnICJFbmQgdGFnIGdyb3VwLCBu b24gZGlzdGluY3QiCisJCSAoY29uc3QgOmVuZGdyb3VwdGFnKQorCQkgKG9wdGlvbiAoc3RyaW5n IDp0YWcgIkdyb3VwIGRlc2NyaXB0aW9uIikpKQogCSAgIChjb25zdCA6dGFnICJOZXcgbGluZSIg KDpuZXdsaW5lKSkpKSkKIAogKGRlZmN1c3RvbSBvcmctdGFnLXBlcnNpc3RlbnQtYWxpc3Qgbmls CkBAIC01MjE2LDYgKzUyMjIsOCBAQCBGSUxFVEFHUyBpcyBhIGxpc3Qgb2YgdGFncywgYXMgc3Ry aW5ncy4iCiAJCSAgICAoY2FzZSAoY2FyIHRhZykKIAkJICAgICAgKDpzdGFydGdyb3VwICJ7IikK IAkJICAgICAgKDplbmRncm91cCAifSIpCisJCSAgICAgICg6c3RhcnRncm91cHRhZyAiWyIpCisJ CSAgICAgICg6ZW5kZ3JvdXB0YWcgIl0iKQogCQkgICAgICAoOmdyb3VwdGFncyAiOiIpCiAJCSAg ICAgICg6bmV3bGluZSAiXFxuIikKIAkJICAgICAgKG90aGVyd2lzZSAoY29uY2F0IChjYXIgdGFn KQpAQCAtNTIzNiwxMiArNTI0NCwyMCBAQCBGSUxFVEFHUyBpcyBhIGxpc3Qgb2YgdGFncywgYXMg c3RyaW5ncy4iCiAJICgoZXF1YWwgZSAifSIpCiAJICAocHVzaCAnKDplbmRncm91cCkgb3JnLXRh Zy1hbGlzdCkKIAkgIChzZXRxIGdyb3VwLWZsYWcgbmlsKSkKKwkgKChlcXVhbCBlICJbIikKKwkg IChwdXNoICcoOnN0YXJ0Z3JvdXB0YWcpIG9yZy10YWctYWxpc3QpCisJICAod2hlbiAoZXF1YWwg KG50aCAxIHRhZ3MpICI6IikgKHNldHEgZ3JvdXAtZmxhZyB0KSkpCisJICgoZXF1YWwgZSAiXSIp CisJICAocHVzaCAnKDplbmRncm91cHRhZykgb3JnLXRhZy1hbGlzdCkKKwkgIChzZXRxIGdyb3Vw LWZsYWcgbmlsKSkKIAkgKChlcXVhbCBlICI6IikKIAkgIChwdXNoICcoOmdyb3VwdGFncykgb3Jn LXRhZy1hbGlzdCkKIAkgIChzZXRxIGdyb3VwLWZsYWcgJ2FwcGVuZCkpCiAJICgoZXF1YWwgZSAi XFxuIikgKHB1c2ggJyg6bmV3bGluZSkgb3JnLXRhZy1hbGlzdCkpCiAJICgoc3RyaW5nLW1hdGNo Ci0JICAgKG9yZy1yZSAiXFxgXFwoW1s6YWxudW06XV9AIyVdK1xcKVxcKD86KFxcKC5cXCkpXFwp P1xcJyIpIGUpCisJICAgKG9yZy1yZSAoY29uY2F0ICJcXGBcXChbWzphbG51bTpdX0AjJV0rIgor CQkJICAgIlxcfHsuKz99XFwpIiA7IHJlZ3VsYXIgZXhwcmVzc2lvbgorCQkJICAgIlxcKD86KFxc KC5cXCkpXFwpP1xcJyIpKSBlKQogCSAgKGxldCAoKHRhZyAobWF0Y2gtc3RyaW5nIDEgZSkpCiAJ CShrZXkgKGFuZCAobWF0Y2gtYmVnaW5uaW5nIDIpCiAJCQkgIChzdHJpbmctdG8tY2hhciAobWF0 Y2gtc3RyaW5nIDIgZSkpKSkpCkBAIC01MjQ5LDcgKzUyNjUsOCBAQCBGSUxFVEFHUyBpcyBhIGxp c3Qgb2YgdGFncywgYXMgc3RyaW5ncy4iCiAJCSAgIChzZXRjYXIgb3JnLXRhZy1ncm91cHMtYWxp c3QKIAkJCSAgIChhcHBlbmQgKGNhciBvcmctdGFnLWdyb3Vwcy1hbGlzdCkgKGxpc3QgdGFnKSkp KQogCQkgIChncm91cC1mbGFnIChwdXNoIChsaXN0IHRhZykgb3JnLXRhZy1ncm91cHMtYWxpc3Qp KSkKLQkgICAgKHVubGVzcyAoYXNzb2MgdGFnIG9yZy10YWctYWxpc3QpCisJICAgIDs7IFB1c2gg YWxsIHRhZ3MgaW4gZ3JvdXBzLCBubyBtYXR0ZXIgaWYgdGhleSBhbHJlYWR5IGV4aXN0LgorCSAg ICAodW5sZXNzIChhbmQgKG5vdCBncm91cC1mbGFnKSAoYXNzb2MgdGFnIG9yZy10YWctYWxpc3Qp KQogCSAgICAgIChwdXNoIChjb25zIHRhZyBrZXkpIG9yZy10YWctYWxpc3QpKSkpKSkpKQogICAo c2V0cSBvcmctdGFnLWFsaXN0IChucmV2ZXJzZSBvcmctdGFnLWFsaXN0KSkpCiAKQEAgLTE0NTI4 LDkgKzE0NTQ1LDkgQEAgVGhpcyByZXBsYWNlcyBldmVyeSBncm91cCB0YWcgaW4gTUFUQ0ggd2l0 aCBhIHJlZ2V4cCB0YWcgc2VhcmNoLgogRm9yIGV4YW1wbGUsIGEgZ3JvdXAgdGFnIFwiV29ya1wi IGRlZmluZWQgYXMgeyBXb3JrIDogTGFiIENvbmYgfQogd2lsbCBiZSByZXBsYWNlZCBsaWtlIHRo aXM6CiAKLSAgIFdvcmsgPT4gIHtcXCg/OldvcmtcXHxMYWJcXHxDb25mXFwpfQotICArV29yayA9 PiAre1xcKD86V29ya1xcfExhYlxcfENvbmZcXCl9Ci0gIC1Xb3JrID0+IC17XFwoPzpXb3JrXFx8 TGFiXFx8Q29uZlxcKX0KKyAgIFdvcmsgPT4gIHtcXDxcXCg/OldvcmtcXHxMYWJcXHxDb25mXFwp XFw+fQorICArV29yayA9PiAre1xcPFxcKD86V29ya1xcfExhYlxcfENvbmZcXClcXD59CisgIC1X b3JrID0+IC17XFw8XFwoPzpXb3JrXFx8TGFiXFx8Q29uZlxcKVxcPn0KIAogUmVwbGFjaW5nIGJ5 IGEgcmVnZXhwIHByZXNlcnZlcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBtYXRjaC4KIEUuZy4sIHRo aXMgZXhwYW5zaW9uCkBAIC0xNDU0MCw2ICsxNDU1NywxMiBAQCBFLmcuLCB0aGlzIGV4cGFuc2lv bgogd2lsbCBtYXRjaCBhbnl0aGluZyB0YWdnZWQgd2l0aCBcIkxhYlwiIGFuZCBcIkhvbWVcIiwg b3IgdGFnZ2VkCiB3aXRoIFwiQ29uZlwiIGFuZCBcIkhvbWVcIiBvciB0YWdnZWQgd2l0aCBcIldv cmtcIiBhbmQgXCJob21lXCIuCiAKK0EgZ3JvdXAgdGFnIGluIE1BVENIIGNhbiBjb250YWluIHJl Z3VsYXIgZXhwcmVzc2lvbnMgb2YgaXRzIG93bi4KK0ZvciBleGFtcGxlLCBhIGdyb3VwIHRhZyBc IlByb2pcIiBkZWZpbmVkIGFzIHsgUHJvaiA6IHtQQC4rfSB9Cit3aWxsIGJlIHJlcGxhY2VkIGxp a2UgdGhpczoKKworICAgUHJvaiA9PiB7XFw8XFwoPzpQcm9qXFwpXFw+XFx8UEAuK30KKwogV2hl biB0aGUgb3B0aW9uYWwgYXJndW1lbnQgU0lOR0xFLUFTLUxJU1QgaXMgbm9uLW5pbCwgTUFUQ0gg aXMKIGFzc3VtZWQgdG8gYmUgYSBzaW5nbGUgZ3JvdXAgdGFnLCBhbmQgdGhlIGZ1bmN0aW9uIHdp bGwgcmV0dXJuCiB0aGUgbGlzdCBvZiB0YWdzIGluIHRoaXMgZ3JvdXAuCkBAIC0xNDU0OCwzMyAr MTQ1NzEsODcgQEAgV2hlbiBET1dOQ0FTRSBpcyBub24tbmlsLCBleHBhbmQgZG93bmNhc2VkIFRB R1MuIgogICAoaWYgb3JnLWdyb3VwLXRhZ3MKICAgICAgIChsZXQqICgoY2FzZS1mb2xkLXNlYXJj aCB0KQogCSAgICAgKHN0YWJsZSBvcmctbW9kZS1zeW50YXgtdGFibGUpCi0JICAgICAodGFsIChv ciBvcmctdGFnLWdyb3Vwcy1hbGlzdC1mb3ItYWdlbmRhCi0JCSAgICAgIG9yZy10YWctZ3JvdXBz LWFsaXN0KSkKLQkgICAgICh0YWwgKGlmIGRvd25jYXNlZAotCQkgICAgICAobWFwY2FyIChsYW1i ZGEodGcpIChtYXBjYXIgJ2Rvd25jYXNlIHRnKSkgdGFsKSB0YWwpKQotCSAgICAgKHRtbCAobWFw Y2FyICdjYXIgdGFsKSkKLQkgICAgIChydG5tYXRjaCBtYXRjaCkgcnBsKQotCTs7IEAgYW5kIF8g YXJlIGFsbG93ZWQgYXMgd29yZC1jb21wb25lbnRzIGluIHRhZ3MKKwkgICAgICh0YWdncm91cHMg KG9yIG9yZy10YWctZ3JvdXBzLWFsaXN0LWZvci1hZ2VuZGEgb3JnLXRhZy1ncm91cHMtYWxpc3Qp KQorCSAgICAgKHRhZ2dyb3VwcyAoaWYgZG93bmNhc2VkCisJCQkgICAgKG1hcGNhciAobGFtYmRh ICh0ZykgKG1hcGNhciAjJ2Rvd25jYXNlIHRnKSkKKwkJCQkgICAgdGFnZ3JvdXBzKQorCQkJICB0 YWdncm91cHMpKQorCSAgICAgKHRhZ2dyb3Vwcy1rZXlzIChtYXBjYXIgIydjYXIgdGFnZ3JvdXBz KSkKKwkgICAgIChyZXR1cm4tbWF0Y2ggKGlmIGRvd25jYXNlZCAoZG93bmNhc2UgbWF0Y2gpIG1h dGNoKSkKKwkgICAgIChjb3VudCAwKQorCSAgICAgcmVnZXhwcy1pbi1tYXRjaCB0YWdzLWluLWdy b3VwIHJlZ2V4cC1pbi1ncm91cCByZWdleHAtaW4tZ3JvdXAtZXNjYXBlZCkKKwk7OyBAIGFuZCBf IGFyZSBhbGxvd2VkIGFzIHdvcmQtY29tcG9uZW50cyBpbiB0YWdzLgogCShtb2RpZnktc3ludGF4 LWVudHJ5ID9AICJ3IiBzdGFibGUpCiAJKG1vZGlmeS1zeW50YXgtZW50cnkgP18gInciIHN0YWJs ZSkKLQkod2hpbGUgKGFuZCB0bWwKKwk7OyBUZW1wb3JhcmlseSByZXBsYWNlIHJlZ2V4cC1leHBy ZXNzaW9ucyBpbiB0aGUgbWF0Y2gtZXhwcmVzc2lvbi4KKwkod2hpbGUgKHN0cmluZy1tYXRjaCAi ey4rP30iIHJldHVybi1tYXRjaCkKKwkgIChpbmNmIGNvdW50KQorCSAgKHB1c2ggKG1hdGNoLXN0 cmluZyAwIHJldHVybi1tYXRjaCkgcmVnZXhwcy1pbi1tYXRjaCkKKwkgIChzZXRxIHJldHVybi1t YXRjaCAocmVwbGFjZS1tYXRjaCAoZm9ybWF0ICI8JWQ+IiBjb3VudCkgdCBuaWwgcmV0dXJuLW1h dGNoKSkpCisJKHdoaWxlIChhbmQgdGFnZ3JvdXBzLWtleXMKIAkJICAgICh3aXRoLXN5bnRheC10 YWJsZSBzdGFibGUKIAkJICAgICAgKHN0cmluZy1tYXRjaAogCQkgICAgICAgKGNvbmNhdCAiXFwo PzE6WystXT9cXClcXCg/MjpcXDwiCi0JCQkgICAgICAgKHJlZ2V4cC1vcHQgdG1sKSAiXFw+XFwp IikgcnRubWF0Y2gpKSkKLQkgIChsZXQqICgoZGlyIChtYXRjaC1zdHJpbmcgMSBydG5tYXRjaCkp Ci0JCSAodGFnIChtYXRjaC1zdHJpbmcgMiBydG5tYXRjaCkpCisJCQkgICAgICAgKHJlZ2V4cC1v cHQgdGFnZ3JvdXBzLWtleXMpICJcXD5cXCkiKSByZXR1cm4tbWF0Y2gpKSkKKwkgIChsZXQqICgo ZGlyIChtYXRjaC1zdHJpbmcgMSByZXR1cm4tbWF0Y2gpKQorCQkgKHRhZyAobWF0Y2gtc3RyaW5n IDIgcmV0dXJuLW1hdGNoKSkKIAkJICh0YWcgKGlmIGRvd25jYXNlZCAoZG93bmNhc2UgdGFnKSB0 YWcpKSkKLQkgICAgKHNldHEgdG1sIChkZWxldGUgdGFnIHRtbCkpCi0JICAgICh3aGVuIChub3Qg KGdldC10ZXh0LXByb3BlcnR5IDAgJ2dyb3VwdGFnIChtYXRjaC1zdHJpbmcgMiBydG5tYXRjaCkp KQotCSAgICAgIChzZXRxIHJwbCAoYXBwZW5kIChvcmctdW5pcXVpZnkgcnBsKSAoYXNzb2MgdGFn IHRhbCkpKQotCSAgICAgIChzZXRxIHJwbCAoY29uY2F0IGRpciAie1xcPCIgKHJlZ2V4cC1vcHQg cnBsKSAiXFw+fSIpKQotCSAgICAgIChpZiAoc3RyaW5ncCBycGwpIChvcmctYWRkLXByb3BzIHJw bCAnKGdyb3VwdGFnIHQpKSkKLQkgICAgICAoc2V0cSBydG5tYXRjaCAocmVwbGFjZS1tYXRjaCBy cGwgdCB0IHJ0bm1hdGNoKSkpKSkKKwkgICAgKHdoZW4gKG5vdCAoZ2V0LXRleHQtcHJvcGVydHkg MCAnZ3JvdXB0YWcgKG1hdGNoLXN0cmluZyAyIHJldHVybi1tYXRjaCkpKQorCSAgICAgIChzZXRx IHRhZ3MtaW4tZ3JvdXAgKGFzc29jIHRhZyB0YWdncm91cHMpKQorCSAgICAgIDs7IEZpbHRlciB0 YWctcmVnZXhwcyBmcm9tIHRhZ3MuCisJICAgICAgKHNldHEgcmVnZXhwLWluLWdyb3VwLWVzY2Fw ZWQKKwkJICAgIChkZWxxIG5pbCAobWFwY2FyIChsYW1iZGEgKHgpCisJCQkJCShpZiAoc3RyaW5n cCB4KQorCQkJCQkgICAgKGFuZCAoZXF1YWwgInsiIChzdWJzdHJpbmcgeCAwIDEpKQorCQkJCQkJ IChlcXVhbCAifSIgKHN1YnN0cmluZyB4IC0xKSkKKwkJCQkJCSB4KQorCQkJCQkgIHgpKQorCQkJ CSAgICAgIHRhZ3MtaW4tZ3JvdXApKQorCQkgICAgcmVnZXhwLWluLWdyb3VwCisJCSAgICAobWFw Y2FyIChsYW1iZGEgKHgpCisJCQkgICAgICAoc3Vic3RyaW5nIHggMSAtMSkpCisJCQkgICAgcmVn ZXhwLWluLWdyb3VwLWVzY2FwZWQpCisJCSAgICB0YWdzLWluLWdyb3VwCisJCSAgICAoZGVscSBu aWwgKG1hcGNhciAobGFtYmRhICh4KQorCQkJCQkoaWYgKHN0cmluZ3AgeCkKKwkJCQkJICAgIChh bmQgKG5vdCAoZXF1YWwgInsiIChzdWJzdHJpbmcgeCAwIDEpKSkKKwkJCQkJCSAobm90IChlcXVh bCAifSIgKHN1YnN0cmluZyB4IC0xKSkpCisJCQkJCQkgeCkKKwkJCQkJICB4KSkKKwkJCQkgICAg ICB0YWdzLWluLWdyb3VwKSkpCisJICAgICAgOzsgSWYgc2luZ2xlLWFzLWxpc3QsIGRvIG5vIG1v cmUgaW4gdGhlIHdoaWxlLWxvb3AuCisJICAgICAgKGlmIChub3Qgc2luZ2xlLWFzLWxpc3QpCisJ CSAgKHByb2duCisJCSAgICAod2hlbiByZWdleHAtaW4tZ3JvdXAKKwkJICAgICAgKHNldHEgcmVn ZXhwLWluLWdyb3VwCisJCQkgICAgKGNvbmNhdCAiXFx8IgorCQkJCSAgICAobWFwY29uY2F0ICdp ZGVudGl0eSByZWdleHAtaW4tZ3JvdXAKKwkJCQkJICAgICAgICJcXHwiKSkpKQorCQkgICAgKHNl dHEgdGFncy1pbi1ncm91cAorCQkJICAoY29uY2F0IGRpcgorCQkJCSAgIntcXDwiCisJCQkJICAo cmVnZXhwLW9wdCB0YWdzLWluLWdyb3VwKQorCQkJCSAgIlxcPiIKKwkJCQkgIHJlZ2V4cC1pbi1n cm91cAorCQkJCSAgIn0iKSkKKwkJICAgICh3aGVuIChzdHJpbmdwIHRhZ3MtaW4tZ3JvdXApCisJ CSAgICAgIChvcmctYWRkLXByb3BzIHRhZ3MtaW4tZ3JvdXAgJyhncm91cHRhZyB0KSkpCisJCSAg ICAoc2V0cSByZXR1cm4tbWF0Y2gKKwkJCSAgKHJlcGxhY2UtbWF0Y2ggdGFncy1pbi1ncm91cCB0 IHQgcmV0dXJuLW1hdGNoKSkpCisgCQkoc2V0cSB0YWdzLWluLWdyb3VwCisJCSAgICAgIChhcHBl bmQgcmVnZXhwLWluLWdyb3VwLWVzY2FwZWQgdGFncy1pbi1ncm91cCkpKSkKKyAJICAgIChzZXRx IHRhZ2dyb3Vwcy1rZXlzIChkZWxldGUgdGFnIHRhZ2dyb3Vwcy1rZXlzKSkpKQorCTs7IEFkZCB0 aGUgcmVndWxhciBleHByZXNzaW9ucyBiYWNrIGludG8gdGhlIG1hdGNoLWV4cHJlc3Npb24gYWdh aW4uCisJKHdoaWxlIHJlZ2V4cHMtaW4tbWF0Y2gKKwkgIChzZXRxIHJldHVybi1tYXRjaCAocmVw bGFjZS1yZWdleHAtaW4tc3RyaW5nIChmb3JtYXQgIjwlZD4iIGNvdW50KQorCQkJCQkJICAgICAg IChwb3AgcmVnZXhwcy1pbi1tYXRjaCkKKwkJCQkJCSAgICAgICByZXR1cm4tbWF0Y2ggdCB0KSkK KwkgIChkZWNmIGNvdW50KSkKIAkoaWYgc2luZ2xlLWFzLWxpc3QKLQkgICAgKG9yIChyZXZlcnNl IHJwbCkgKGxpc3QgcnRubWF0Y2gpKQotCSAgcnRubWF0Y2gpKQotICAgIChpZiBzaW5nbGUtYXMt bGlzdCAobGlzdCAoaWYgZG93bmNhc2VkIChkb3duY2FzZSBtYXRjaCkgbWF0Y2gpKQorCSAgICAo aWYgdGFncy1pbi1ncm91cCB0YWdzLWluLWdyb3VwIChsaXN0IHJldHVybi1tYXRjaCkpCisJICBy ZXR1cm4tbWF0Y2gpKQorICAgIChpZiBzaW5nbGUtYXMtbGlzdAorCShsaXN0IChpZiBkb3duY2Fz ZWQgKGRvd25jYXNlIG1hdGNoKSBtYXRjaCkpCiAgICAgICBtYXRjaCkpKQogCiAoZGVmdW4gb3Jn LW9wLXRvLWZ1bmN0aW9uIChvcCAmb3B0aW9uYWwgc3RyaW5ncCkKQEAgLTE1MDMzLDcgKzE1MTEw LDcgQEAgUmV0dXJucyB0aGUgbmV3IHRhZ3Mgc3RyaW5nLCBvciBuaWwgdG8gbm90IGNoYW5nZSB0 aGUgY3VycmVudCBzZXR0aW5ncy4iCiAJIG92LXN0YXJ0IG92LWVuZCBvdi1wcmVmaXgKIAkgKGV4 aXQtYWZ0ZXItbmV4dCBvcmctZmFzdC10YWctc2VsZWN0aW9uLXNpbmdsZS1rZXkpCiAJIChkb25l LWtleXdvcmRzIG9yZy1kb25lLWtleXdvcmRzKQotCSBncm91cHMgaW5ncm91cCkKKwkgZ3JvdXBz IGluZ3JvdXAgaW50YWdncm91cCkKICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgIChiZWdpbm5p bmctb2YtbGluZSAxKQogICAgICAgKGlmIChsb29raW5nLWF0CkBAIC0xNTA2NiwyNCArMTUxNDMs MzMgQEAgUmV0dXJucyB0aGUgbmV3IHRhZ3Mgc3RyaW5nLCBvciBuaWwgdG8gbm90IGNoYW5nZSB0 aGUgY3VycmVudCBzZXR0aW5ncy4iCiAgICAgICAoc2V0cSB0YmwgZnVsbHRhYmxlIGNoYXIgP2Eg Y250IDApCiAgICAgICAod2hpbGUgKHNldHEgZSAocG9wIHRibCkpCiAJKGNvbmQKLQkgKChlcXVh bCAoY2FyIGUpIDpzdGFydGdyb3VwKQorCSAoKGVxIChjYXIgZSkgOnN0YXJ0Z3JvdXApCiAJICAo cHVzaCAnKCkgZ3JvdXBzKSAoc2V0cSBpbmdyb3VwIHQpCi0JICAod2hlbiAobm90ICg9IGNudCAw KSkKKwkgICh1bmxlc3MgKHplcm9wIGNudCkKIAkgICAgKHNldHEgY250IDApCiAJICAgIChpbnNl cnQgIlxuIikpCiAJICAoaW5zZXJ0IChpZiAoY2RyIGUpIChmb3JtYXQgIiVzOiAiIChjZHIgZSkp ICIiKSAieyAiKSkKLQkgKChlcXVhbCAoY2FyIGUpIDplbmRncm91cCkKKwkgKChlcSAoY2FyIGUp IDplbmRncm91cCkKIAkgIChzZXRxIGluZ3JvdXAgbmlsIGNudCAwKQogCSAgKGluc2VydCAifSIg KGlmIChjZHIgZSkgKGZvcm1hdCAiICglcykgIiAoY2RyIGUpKSAiIikgIlxuIikpCisJICgoZXEg KGNhciBlKSA6c3RhcnRncm91cHRhZykKKwkgIChzZXRxIGludGFnZ3JvdXAgdCkKKwkgICh1bmxl c3MgKHplcm9wIGNudCkKKwkgICAgKHNldHEgY250IDApCisJICAgIChpbnNlcnQgIlxuIikpCisJ ICAoaW5zZXJ0ICJbICIpKQorCSAoKGVxIChjYXIgZSkgOmVuZGdyb3VwdGFnKQorCSAgKHNldHEg aW50YWdncm91cCBuaWwgY250IDApCisJICAoaW5zZXJ0ICJdXG4iKSkKIAkgKChlcXVhbCBlICco Om5ld2xpbmUpKQotCSAgKHdoZW4gKG5vdCAoPSBjbnQgMCkpCisJICAodW5sZXNzICh6ZXJvcCBj bnQpCiAJICAgIChzZXRxIGNudCAwKQogCSAgICAoaW5zZXJ0ICJcbiIpCiAJICAgIChzZXRxIGUg KGNhciB0YmwpKQogCSAgICAod2hpbGUgKGVxdWFsIChjYXIgdGJsKSAnKDpuZXdsaW5lKSkKIAkg ICAgICAoaW5zZXJ0ICJcbiIpCiAJICAgICAgKHNldHEgdGJsIChjZHIgdGJsKSkpKSkKLQkgKChl cXVhbCBlICcoOmdyb3VwdGFncykpIG5pbCkKKwkgKChlcXVhbCBlICcoOmdyb3VwdGFncykpIChp bnNlcnQgIiA6ICIpKQogCSAodAogCSAgKHNldHEgdGcgKGNvcHktc2VxdWVuY2UgKGNhciBlKSkg YzIgbmlsKQogCSAgKGlmIChjZHIgZSkKQEAgLTE1MDk3LDI3ICsxNTE4MywyNyBAQCBSZXR1cm5z IHRoZSBuZXcgdGFncyBzdHJpbmcsIG9yIG5pbCB0byBub3QgY2hhbmdlIHRoZSBjdXJyZW50IHNl dHRpbmdzLiIKIAkJICAoc2V0cSBjaGFyICgxKyBjaGFyKSkpCiAJICAgICAgKHNldHEgYzIgYzEp KQogCSAgICAoc2V0cSBjIChvciBjMiBjaGFyKSkpCi0JICAoaWYgaW5ncm91cCAocHVzaCB0ZyAo Y2FyIGdyb3VwcykpKQorCSAgKHdoZW4gaW5ncm91cCAocHVzaCB0ZyAoY2FyIGdyb3VwcykpKQog CSAgKHNldHEgdGcgKG9yZy1hZGQtcHJvcHMgdGcgbmlsICdmYWNlCiAJICAJCQkgIChjb25kCiAJ ICAJCQkgICAoKG5vdCAoYXNzb2MgdGcgdGFibGUpKQogCSAgCQkJICAgIChvcmctZ2V0LXRvZG8t ZmFjZSB0ZykpCiAJICAJCQkgICAoKG1lbWJlciB0ZyBjdXJyZW50KSBjLWZhY2UpCiAJICAJCQkg ICAoKG1lbWJlciB0ZyBpbmhlcml0ZWQpIGktZmFjZSkpKSkKLQkgIChpZiAoZXF1YWwgKGNhYXIg dGJsKSA6Z3JvdXB0YWdzKQotCSAgICAgIChvcmctYWRkLXByb3BzIHRnIG5pbCAnZmFjZSAnb3Jn LXRhZy1ncm91cCkpCi0JICAoaWYgKGFuZCAoPSBjbnQgMCkgKG5vdCBpbmdyb3VwKSkgKGluc2Vy dCAiICAiKSkKKwkgICh3aGVuIChlcXVhbCAoY2FhciB0YmwpIDpncm91cHRhZ3MpCisJICAgIChv cmctYWRkLXByb3BzIHRnIG5pbCAnZmFjZSAnb3JnLXRhZy1ncm91cCkpCisJICAod2hlbiAoYW5k ICh6ZXJvcCBjbnQpIChub3QgaW5ncm91cCkgKG5vdCBpbnRhZ2dyb3VwKSkgKGluc2VydCAiICIp KQogCSAgKGluc2VydCAiWyIgYyAiXSAiIHRnIChtYWtlLXN0cmluZwogCQkJCSAoLSBmd2lkdGgg NCAobGVuZ3RoIHRnKSkgP1wgKSkKIAkgIChwdXNoIChjb25zIHRnIGMpIG50YWJsZSkKLQkgICh3 aGVuICg9IChzZXRxIGNudCAoMSsgY250KSkgbmNvbCkKKwkgICh3aGVuICg9IChpbmNmIGNudCkg bmNvbCkKIAkgICAgKGluc2VydCAiXG4iKQotCSAgICAoaWYgaW5ncm91cCAoaW5zZXJ0ICIgICIp KQorCSAgICAod2hlbiAob3IgaW5ncm91cCBpbnRhZ2dyb3VwKSAoaW5zZXJ0ICIgIikpCiAJICAg IChzZXRxIGNudCAwKSkpKSkKICAgICAgIChzZXRxIG50YWJsZSAobnJldmVyc2UgbnRhYmxlKSkK ICAgICAgIChpbnNlcnQgIlxuIikKICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCi0gICAg ICAoaWYgKG5vdCBleHBlcnQpIChvcmctZml0LXdpbmRvdy10by1idWZmZXIpKQorICAgICAgKHVu bGVzcyBleHBlcnQgKG9yZy1maXQtd2luZG93LXRvLWJ1ZmZlcikpCiAgICAgICAoc2V0cSBydG4K IAkgICAgKGNhdGNoICdleGl0CiAJICAgICAgKHdoaWxlIHQKQEAgLTE1MTQ3LDcgKzE1MjMzLDcg QEAgUmV0dXJucyB0aGUgbmV3IHRhZ3Mgc3RyaW5nLCBvciBuaWwgdG8gbm90IGNoYW5nZSB0aGUg Y3VycmVudCBzZXR0aW5ncy4iCiAJCSAgKHNldHEgcXVpdC1mbGFnIHQpKQogCQkgKCg9IGMgP1wg KQogCQkgIChzZXRxIGN1cnJlbnQgbmlsKQotCQkgIChpZiBleGl0LWFmdGVyLW5leHQgKHNldHEg ZXhpdC1hZnRlci1uZXh0ICdub3cpKSkKKwkJICAod2hlbiBleGl0LWFmdGVyLW5leHQgKHNldHEg ZXhpdC1hZnRlci1uZXh0ICdub3cpKSkKIAkJICgoPSBjID9cdCkKIAkJICAoY29uZGl0aW9uLWNh c2UgbmlsCiAJCSAgICAgIChzZXRxIHRnIChvcmctaWNvbXBsZXRpbmctcmVhZApAQCAtMTUxNjEs MjggKzE1MjQ3LDI2IEBAIFJldHVybnMgdGhlIG5ldyB0YWdzIHN0cmluZywgb3IgbmlsIHRvIG5v dCBjaGFuZ2UgdGhlIGN1cnJlbnQgc2V0dGluZ3MuIgogCQkgICAgKGlmIChtZW1iZXIgdGcgY3Vy cmVudCkKIAkJCShzZXRxIGN1cnJlbnQgKGRlbGV0ZSB0ZyBjdXJyZW50KSkKIAkJICAgICAgKHB1 c2ggdGcgY3VycmVudCkpKQotCQkgIChpZiBleGl0LWFmdGVyLW5leHQgKHNldHEgZXhpdC1hZnRl ci1uZXh0ICdub3cpKSkKKwkJICAod2hlbiBleGl0LWFmdGVyLW5leHQgKHNldHEgZXhpdC1hZnRl ci1uZXh0ICdub3cpKSkKIAkJICgoc2V0cSBlIChyYXNzb2MgYyB0b2RvLXRhYmxlKSB0ZyAoY2Fy IGUpKQogCQkgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZgogCQkgICAgKHNhdmUtZXhjdXJzaW9u IChvcmctdG9kbyB0ZykpKQotCQkgIChpZiBleGl0LWFmdGVyLW5leHQgKHNldHEgZXhpdC1hZnRl ci1uZXh0ICdub3cpKSkKKwkJICAod2hlbiBleGl0LWFmdGVyLW5leHQgKHNldHEgZXhpdC1hZnRl ci1uZXh0ICdub3cpKSkKIAkJICgoc2V0cSBlIChyYXNzb2MgYyBudGFibGUpIHRnIChjYXIgZSkp CiAJCSAgKGlmIChtZW1iZXIgdGcgY3VycmVudCkKIAkJICAgICAgKHNldHEgY3VycmVudCAoZGVs ZXRlIHRnIGN1cnJlbnQpKQogCQkgICAgKGxvb3AgZm9yIGcgaW4gZ3JvdXBzIGRvCi0JCQkgIChp ZiAobWVtYmVyIHRnIGcpCi0JCQkgICAgICAobWFwYyAobGFtYmRhICh4KQotCQkJCSAgICAgIChz ZXRxIGN1cnJlbnQgKGRlbGV0ZSB4IGN1cnJlbnQpKSkKLQkJCQkgICAgZykpKQorCQkJICAod2hl biAobWVtYmVyIHRnIGcpCisJCQkgICAgKGRvbGlzdCAoeCBnKSAoc2V0cSBjdXJyZW50IChkZWxl dGUgeCBjdXJyZW50KSkpKSkKIAkJICAgIChwdXNoIHRnIGN1cnJlbnQpKQotCQkgIChpZiBleGl0 LWFmdGVyLW5leHQgKHNldHEgZXhpdC1hZnRlci1uZXh0ICdub3cpKSkpCisJCSAgKHdoZW4gZXhp dC1hZnRlci1uZXh0IChzZXRxIGV4aXQtYWZ0ZXItbmV4dCAnbm93KSkpKQogCiAJCTs7IENyZWF0 ZSBhIHNvcnRlZCBsaXN0CiAJCShzZXRxIGN1cnJlbnQKIAkJICAgICAgKHNvcnQgY3VycmVudAog CQkJICAgIChsYW1iZGEgKGEgYikKIAkJCSAgICAgIChhc3NvYyBiIChjZHIgKG1lbXEgKGFzc29j IGEgbnRhYmxlKSBudGFibGUpKSkpKSkKLQkJKGlmIChlcSBleGl0LWFmdGVyLW5leHQgJ25vdykg KHRocm93ICdleGl0IHQpKQorCQkod2hlbiAoZXEgZXhpdC1hZnRlci1uZXh0ICdub3cpICh0aHJv dyAnZXhpdCB0KSkKIAkJKGdvdG8tY2hhciAocG9pbnQtbWluKSkKIAkJKGJlZ2lubmluZy1vZi1s aW5lIDIpCiAJCShkZWxldGUtcmVnaW9uIChwb2ludCkgKHBvaW50LWF0LWVvbCkpCmRpZmYgLS1n aXQgYS90ZXN0aW5nL2xpc3AvdGVzdC1vcmcuZWwgYi90ZXN0aW5nL2xpc3AvdGVzdC1vcmcuZWwK aW5kZXggNWMxMGRkNC4uNzBhYTM4ZCAxMDA2NDQKLS0tIGEvdGVzdGluZy9saXNwL3Rlc3Qtb3Jn LmVsCisrKyBiL3Rlc3RpbmcvbGlzcC90ZXN0LW9yZy5lbApAQCAtMTE2MCw2ICsxMTYwLDE2IEBA CiAJICAob3JnLXRlc3Qtd2l0aC10ZW1wLXRleHQgIiMrVEFHUzogeyBBIDogQiBDIH0iCiAJICAg IChvcmctbW9kZS1yZXN0YXJ0KQogCSAgICBvcmctdGFnLWdyb3Vwcy1hbGlzdCkpKQorICAoc2hv dWxkCisgICAoZXF1YWwgJygoOnN0YXJ0Z3JvdXB0YWcpICgiQSIpICg6Z3JvdXB0YWdzKSAoIkIi KSAoIkMiKSAoOmVuZGdyb3VwdGFnKSkKKwkgIChvcmctdGVzdC13aXRoLXRlbXAtdGV4dCAiIytU QUdTOiBbIEEgOiBCIEMgXSIKKwkgICAgKG9yZy1tb2RlLXJlc3RhcnQpCisJICAgIG9yZy10YWct YWxpc3QpKSkKKyAgKHNob3VsZAorICAgKGVxdWFsICcoKCJBIiAiQiIgIkMiKSkKKwkgIChvcmct dGVzdC13aXRoLXRlbXAtdGV4dCAiIytUQUdTOiBbIEEgOiBCIEMgXSIKKwkgICAgKG9yZy1tb2Rl LXJlc3RhcnQpCisJICAgIG9yZy10YWctZ3JvdXBzLWFsaXN0KSkpCiAgIDs7IEZJTEVUQUdTIGtl eXdvcmQuCiAgIChzaG91bGQKICAgIChlcXVhbCAnKCJBIiAiQiIgIkMiKQpAQCAtMzA3Niw2ICsz MDg2LDMyIEBAIFRleHQuCiAgICAgIChvcmctbWF0Y2gtc3BhcnNlLXRyZWUgbmlsICJ3b3JrIikK ICAgICAgKHNlYXJjaC1mb3J3YXJkICJIMiIpCiAgICAgIChvcmctaW52aXNpYmxlLXAyKSkpCisg IDs7IE1hdGNoIGdyb3VwIHRhZ3Mgd2l0aCBoYXJkIGJyYWNrZXRzLgorICAoc2hvdWxkLW5vdAor ICAgKG9yZy10ZXN0LXdpdGgtdGVtcC10ZXh0CisgICAgICAgIiMrVEFHUzogWyB3b3JrIDogbGFi IF1cbiogSFxuKiogSDEgOndvcms6XG4qKiBIMiA6bGFiOiIKKyAgICAgKG9yZy1tYXRjaC1zcGFy c2UtdHJlZSBuaWwgIndvcmsiKQorICAgICAoc2VhcmNoLWZvcndhcmQgIkgxIikKKyAgICAgKG9y Zy1pbnZpc2libGUtcDIpKSkKKyAgKHNob3VsZC1ub3QKKyAgIChvcmctdGVzdC13aXRoLXRlbXAt dGV4dAorICAgICAgICIjK1RBR1M6IFsgd29yayA6IGxhYiBdXG4qIEhcbioqIEgxIDp3b3JrOlxu KiogSDIgOmxhYjoiCisgICAgIChvcmctbWF0Y2gtc3BhcnNlLXRyZWUgbmlsICJ3b3JrIikKKyAg ICAgKHNlYXJjaC1mb3J3YXJkICJIMiIpCisgICAgIChvcmctaW52aXNpYmxlLXAyKSkpCisgIDs7 IE1hdGNoIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW4gdGFncworICAoc2hvdWxkLW5vdAorICAgKG9y Zy10ZXN0LXdpdGgtdGVtcC10ZXh0CisgICAgICAgIiMrVEFHUzogWyBMZXYgOiB7TGV2X1swLTld fSBdXG4qIEhcbioqIEgxIDpMZXZfMToiCisgICAgIChvcmctbWF0Y2gtc3BhcnNlLXRyZWUgbmls ICJMZXYiKQorICAgICAoc2VhcmNoLWZvcndhcmQgIkgxIikKKyAgICAgKG9yZy1pbnZpc2libGUt cDIpKSkKKyAgKHNob3VsZAorICAgKG9yZy10ZXN0LXdpdGgtdGVtcC10ZXh0CisgICAgICAgIiMr VEFHUzogWyBMZXYgOiB7TGV2X1swLTldfSBdXG4qIEhcbioqIEgxIDpMZXZfbjoiCisgICAgIChv cmctbWF0Y2gtc3BhcnNlLXRyZWUgbmlsICJMZXYiKQorICAgICAoc2VhcmNoLWZvcndhcmQgIkgx IikKKyAgICAgKG9yZy1pbnZpc2libGUtcDIpKSkKICAgOzsgTWF0Y2ggcHJvcGVydGllcy4KICAg KHNob3VsZAogICAgKG9yZy10ZXN0LXdpdGgtdGVtcC10ZXh0Ci0tIAoxLjkuMQoK --001a11362a8ae8e76c05116dd448 Content-Type: application/octet-stream; name="0002-org-agenda-Filtering-in-the-agenda-on-grouptags.patch" Content-Disposition: attachment; filename="0002-org-agenda-Filtering-in-the-agenda-on-grouptags.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i7cc1brq1 RnJvbSA3MDZhMzVkODA5MjI2MzBhZDhmZGYyNmQ4OTQzMGViZDc0MmNlMmNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/R3VzdGF2PTIwV2lrc3RyPUMzPUI2bT89IDxn dXN0YXZAVVZTZXJ2ZXI+CkRhdGU6IFNhdCwgMjQgSmFuIDIwMTUgMDI6NDc6MzUgKzAxMDAKU3Vi amVjdDogW1BBVENIIDIvNF0gb3JnLWFnZW5kYTogRmlsdGVyaW5nIGluIHRoZSBhZ2VuZGEgb24g Z3JvdXB0YWdzCgpGaWx0ZXJpbmcgaW4gdGhlIGFnZW5kYSBvbiBncm91cHRhZ3MgZmlsdGVyIGFs c28gc3ViY2F0ZWdvcmllcy4KRXhjZXB0aW9uIGlmIGZpbHRlciBpcyBhcHBsaWVkIHdpdGggYSAo ZG91YmxlKSBwcmVmaXgtYXJndW1lbnQuCgpGaWx0ZXJpbmcgaW4gdGhlIGFnZW5kYSBvbiBzdWJj YXRlZ29yaWVzIGRvZXMgbm90IGZpbHRlciB0aGUgImFib3ZlIgpsZXZlbHMgYW55bW9yZS4KCklm IGEgZ3JvdXB0YWcgY29udGFpbnMgYSByZWd1bGFyIGV4cHJlc3Npb24gdGhlIHJlZ3VsYXIgZXhw cmVzc2lvbgppcyBhbHNvIHVzZWQgYXMgYSBmaWx0ZXIuCgoqIGxpc3Avb3JnLWFnZW5kYS5lbCAo b3JnLWFnZW5kYS1maWx0ZXItYnktdGFnKTogaW1wcm92ZWQgVUkgYW5kCiAgcmVmYWN0b3Jpbmcu CgogIE5vdyB1c2VzIHRoZSBhcmd1bWVudCBhcmcgYW5kIG9wdGlvbmFsIGFyZ3VtZW50IGV4Y2x1 ZGUgaW5zdGVhZCBvZgogIHN0cmlwIGFuZCBuYXJyb3cuICBBUkcgYmVjYXVzZSB0aGUgYXJndW1l bnQgaGFzIG11bHRpcGxlIHB1cnBvc2VzCiAgYW5kIG1ha2VzIG1vcmUgc2Vuc2UgdGhhbiBzdHJp cCBub3cuICBUaGUgdGVybSBuYXJyb3dpbmcgaXMgY2hhbmdlZAogIHRvIGV4Y2x1ZGUuCgoqIGxp c3Avb3JnLWFnZW5kYS5lbCAob3JnLWFnZW5kYS1maWx0ZXItYnktdGFnLXJlZmluZSk6IG5hbWUg Y2hhbmdlIGluCiAgYXJndW1lbnQgdG8gbWF0Y2ggb3JnLWFnZW5kYS1maWx0ZXItYnktdGFnLgoK KiBsaXNwL29yZy1hZ2VuZGEuZWwgKG9yZy1hZ2VuZGEtZmlsdGVyLW1ha2UtbWF0Y2hlcik6IG5l dyBvcHRpb25hbAogIGFyZ3VtZW50IEVYUEFORCBhbmQgcmVmYWN0b3JpbmcuCgoqIGxpc3Avb3Jn LWFnZW5kYS5lbCAob3JnLWFnZW5kYS1maWx0ZXItbWFrZS1tYXRjaGVyLXRhZy1leHApOiBuZXcK ICBmdW5jdGlvbiwgcHJldmlvdXNseSBiYWtlZCBpbnRvIG9yZy1hZ2VuZGEtZmlsdGVyLW1ha2Ut bWF0Y2hlci4KCiogbGlzcC9vcmctYWdlbmRhLmVsIChvcmctYWdlbmRhLWZpbHRlci1hcHBseSk6 IE5ldyBvcHRpb25hbCBwYXJhbWV0ZXIKICBFWFBBTkQsIHVzZWQgaW4gY2FsbCB0byBvcmctYWdl bmRhLWZpbHRlci1tYWtlLW1hdGNoZXIuCgoqIGxpc3Avb3JnLWFnZW5kYS5lbCAob3JnLWFnZW5k YS1yZWFwcGx5LWZpbHRlcnMpOiBVc2VzIGFub3RoZXIKICBwYXJhbWV0ZXIgKHRoZSBuZXcgb3B0 aW9uYWwgb25lKSBpbiBjYWxsIHRvIG9yZy1hZ2VuZGEtZmlsdGVyLWFwcGx5LgoKKiBsaXNwL29y Zy1hZ2VuZGEuZWwgKG9yZy1hZ2VuZGEtZmluYWxpemUpOiB1c2Ugb2YgbmV3IHBhcmFtZXRlciBp bgogIGNhbGwgdG8gb3JnLWFnZW5kYS1maWx0ZXItYXBwbHkuCgoqIGxpc3Avb3JnLWFnZW5kYS5l bCAob3JnLWFnZW5kYS1yZWRvKTogVXNlIG9mIG5ldyBwYXJhbWV0ZXIgaW4gY2FsbAogIHRvIG9y Zy1hZ2VuZGEtZmlsdGVyLWFwcGx5LgotLS0KIGxpc3Avb3JnLWFnZW5kYS5lbCB8IDE1MCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxl IGNoYW5nZWQsIDg0IGluc2VydGlvbnMoKyksIDY2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2xpc3Avb3JnLWFnZW5kYS5lbCBiL2xpc3Avb3JnLWFnZW5kYS5lbAppbmRleCBiMGUxMjI0Li45 NTk0OTZmIDEwMDY0NAotLS0gYS9saXNwL29yZy1hZ2VuZGEuZWwKKysrIGIvbGlzcC9vcmctYWdl bmRhLmVsCkBAIC0zNzYxLDEwICszNzYxLDEwIEBAIEZJTFRFUi1BTElTVCBpcyBhbiBhbGlzdCBv ZiBmaWx0ZXJzIHdlIG5lZWQgdG8gYXBwbHkgd2hlbgogCSAgKG9yZy1hZ2VuZGEtZmlsdGVyLXRv cC1oZWFkbGluZS1hcHBseQogCSAgIG9yZy1hZ2VuZGEtdG9wLWhlYWRsaW5lLWZpbHRlcikpCiAJ KHdoZW4gb3JnLWFnZW5kYS10YWctZmlsdGVyCi0JICAob3JnLWFnZW5kYS1maWx0ZXItYXBwbHkg b3JnLWFnZW5kYS10YWctZmlsdGVyICd0YWcpKQorCSAgKG9yZy1hZ2VuZGEtZmlsdGVyLWFwcGx5 IG9yZy1hZ2VuZGEtdGFnLWZpbHRlciAndGFnIHQpKQogCSh3aGVuIChnZXQgJ29yZy1hZ2VuZGEt dGFnLWZpbHRlciA6cHJlc2V0LWZpbHRlcikKIAkgIChvcmctYWdlbmRhLWZpbHRlci1hcHBseQot CSAgIChnZXQgJ29yZy1hZ2VuZGEtdGFnLWZpbHRlciA6cHJlc2V0LWZpbHRlcikgJ3RhZykpCisJ ICAgKGdldCAnb3JnLWFnZW5kYS10YWctZmlsdGVyIDpwcmVzZXQtZmlsdGVyKSAndGFnIHQpKQog CSh3aGVuIG9yZy1hZ2VuZGEtY2F0ZWdvcnktZmlsdGVyCiAJICAob3JnLWFnZW5kYS1maWx0ZXIt YXBwbHkgb3JnLWFnZW5kYS1jYXRlZ29yeS1maWx0ZXIgJ2NhdGVnb3J5KSkKIAkod2hlbiAoZ2V0 ICdvcmctYWdlbmRhLWNhdGVnb3J5LWZpbHRlciA6cHJlc2V0LWZpbHRlcikKQEAgLTczMzMsNyAr NzMzMyw3IEBAIGluIHRoZSBhZ2VuZGEuIgogCSAgKGNhdCAob3IgY2F0LWZpbHRlciBjYXQtcHJl c2V0KSkKIAkgIChlZmZvcnQgKG9yIGVmZm9ydC1maWx0ZXIgZWZmb3J0LXByZXNldCkpCiAJICAo cmUgKG9yIHJlLWZpbHRlciByZS1wcmVzZXQpKSkKLSAgICAgICh3aGVuIHRhZyAob3JnLWFnZW5k YS1maWx0ZXItYXBwbHkgdGFnICd0YWcpKQorICAgICAgKHdoZW4gdGFnIChvcmctYWdlbmRhLWZp bHRlci1hcHBseSB0YWcgJ3RhZyB0KSkKICAgICAgICh3aGVuIGNhdCAob3JnLWFnZW5kYS1maWx0 ZXItYXBwbHkgY2F0ICdjYXRlZ29yeSkpCiAgICAgICAod2hlbiBlZmZvcnQgKG9yZy1hZ2VuZGEt ZmlsdGVyLWFwcGx5IGVmZm9ydCAnZWZmb3J0KSkKICAgICAgICh3aGVuIHJlICAob3JnLWFnZW5k YS1maWx0ZXItYXBwbHkgcmUgJ3JlZ2V4cCkpKQpAQCAtNzQ1NSwxMyArNzQ1NSwxNyBAQCBXaXRo IHR3byBwcmVmaXggYXJndW1lbnRzLCByZW1vdmUgdGhlIGVmZm9ydCBmaWx0ZXJzLiIKICAgICAo b3JnLWFnZW5kYS1maWx0ZXItc2hvdy1hbGwtZWZmb3J0KSkKICAgKG9yZy1hZ2VuZGEtZmluYWxp emUpKQogCi0oZGVmdW4gb3JnLWFnZW5kYS1maWx0ZXItYnktdGFnIChzdHJpcCAmb3B0aW9uYWwg Y2hhciBuYXJyb3cpCisoZGVmdW4gb3JnLWFnZW5kYS1maWx0ZXItYnktdGFnIChhcmcgJm9wdGlv bmFsIGNoYXIgZXhjbHVkZSkKICAgIktlZXAgb25seSB0aG9zZSBsaW5lcyBpbiB0aGUgYWdlbmRh IGJ1ZmZlciB0aGF0IGhhdmUgYSBzcGVjaWZpYyB0YWcuCi1UaGUgdGFnIGlzIHNlbGVjdGVkIHdp dGggaXRzIGZhc3Qgc2VsZWN0aW9uIGxldHRlciwgYXMgY29uZmlndXJlZC4KLVdpdGggcHJlZml4 IGFyZ3VtZW50IFNUUklQLCByZW1vdmUgYWxsIGxpbmVzIHRoYXQgZG8gaGF2ZSB0aGUgdGFnLgot QSBsaXNwIGNhbGxlciBjYW4gc3BlY2lmeSBDSEFSLiAgTkFSUk9XIG1lYW5zIHRoYXQgdGhlIG5l dyB0YWcgc2hvdWxkIGJlCi11c2VkIHRvIG5hcnJvdyB0aGUgc2VhcmNoIC0gdGhlIGludGVyYWN0 aXZlIHVzZXIgY2FuIGFsc28gcHJlc3MgYC0nIG9yIGArJwotdG8gc3dpdGNoIHRvIG5hcnJvd2lu Zy4iCitUaGUgdGFnIGlzIHNlbGVjdGVkIHdpdGggaXRzIGZhc3Qgc2VsZWN0aW9uIGxldHRlciwg YXMKK2NvbmZpZ3VyZWQuICBXaXRoIGEgc2luZ2xlIFxcW3VuaXZlcnNhbC1hcmd1bWVudF0gcHJl Zml4IEFSRywKK2V4Y2x1ZGUgdGhlIGFnZW5kYSBzZWFyY2guICBXaXRoIGEgZG91YmxlIFxcW3Vu aXZlcnNhbC1hcmd1bWVudF0KK3ByZWZpeCBBUkcsIGZpbHRlciB0aGUgbGl0ZXJhbCB0YWcuICBJ LmUuIGRvbid0IGZpbHRlciBvbiBhbGwgaXRzCitncm91cCBtZW1iZXJzLgorCitBIGxpc3AgY2Fs bGVyIGNhbiBzcGVjaWZ5IENIQVIuICBFWENMVURFIG1lYW5zIHRoYXQgdGhlIG5ldyB0YWcgc2hv dWxkIGJlCit1c2VkIHRvIGV4Y2x1ZGUgdGhlIHNlYXJjaCAtIHRoZSBpbnRlcmFjdGl2ZSB1c2Vy IGNhbiBhbHNvIHByZXNzIGAtJyBvciBgKycKK3RvIHN3aXRjaCBiZXR3ZWVuIGZpbHRlcmluZyBh bmQgZXhjbHVkaW5nLiIKICAgKGludGVyYWN0aXZlICJQIikKICAgKGxldCogKChhbGlzdCBvcmct dGFnLWFsaXN0LWZvci1hZ2VuZGEpCiAJICh0YWctY2hhcnMgKG1hcGNvbmNhdApAQCAtNzQ2OSwy NCArNzQ3MywyNiBAQCB0byBzd2l0Y2ggdG8gbmFycm93aW5nLiIKIAkJCQkJICAoY2RyIHgpKQog CQkJCSAgICAgKGNoYXItdG8tc3RyaW5nIChjZHIgeCkpCiAJCQkJICAgIiIpKQotCQkgICAgIGFs aXN0ICIiKSkKKwkJICAgICBvcmctdGFnLWFsaXN0LWZvci1hZ2VuZGEgIiIpKQorCSAodmFsaWQt Y2hhci1saXN0IChhcHBlbmQgJyg/XHQgP1xyID8vID8uID9ccyA/cSkKKwkJCQkgIChzdHJpbmct dG8tbGlzdCB0YWctY2hhcnMpKSkKKwkgKGV4Y2x1ZGUgKG9yIGV4Y2x1ZGUgKGVxdWFsIGFyZyAn KDQpKSkpCisJIChleHBhbmQgKG5vdCAoZXF1YWwgYXJnICcoMTYpKSkpCiAJIChpbmhpYml0LXJl YWQtb25seSB0KQogCSAoY3VycmVudCBvcmctYWdlbmRhLXRhZy1maWx0ZXIpCiAJIGEgbiB0YWcp CiAgICAgKHVubGVzcyBjaGFyCi0gICAgICAobWVzc2FnZQotICAgICAgICIlcyBieSB0YWcgWyVz IF0sIFtUQUJdLCAlc1svXTpvZmYsIFsrLV06bmFycm93IgotICAgICAgIChpZiBuYXJyb3cgIk5h cnJvdyIgIkZpbHRlciIpIHRhZy1jaGFycwotICAgICAgIChpZiBvcmctYWdlbmRhLWF1dG8tZXhj bHVkZS1mdW5jdGlvbiAiW1JFVF0sICIgIiIpKQotICAgICAgKHNldHEgY2hhciAocmVhZC1jaGFy LWV4Y2x1c2l2ZSkpKQotICAgICh3aGVuIChtZW1iZXIgY2hhciAnKD8rID8tKSkKLSAgICAgIDs7 IE5hcnJvd2luZyBkb3duCi0gICAgICAoY29uZCAoKGVxdWFsIGNoYXIgPy0pIChzZXRxIHN0cmlw IHQgbmFycm93IHQpKQotCSAgICAoKGVxdWFsIGNoYXIgPyspIChzZXRxIHN0cmlwIG5pbCBuYXJy b3cgdCkpKQotICAgICAgKG1lc3NhZ2UKLSAgICAgICAiTmFycm93IGJ5IHRhZyBbJXMgXSwgW1RB Ql0sIFsvXTpvZmYiIHRhZy1jaGFycykKLSAgICAgIChzZXRxIGNoYXIgKHJlYWQtY2hhci1leGNs dXNpdmUpKSkKLSAgICAod2hlbiAoZXF1YWwgY2hhciA/XHQpCisgICAgICAod2hpbGUgKG5vdCAo bWVtcSBjaGFyIHZhbGlkLWNoYXItbGlzdCkpCisJKG1lc3NhZ2UKKwkgIiVzIGJ5IHRhZyBbJXMg XSwgW1RBQl0sICVzWy9dOm9mZiwgWysvLV06ZmlsdGVyL2V4Y2x1ZGUlcywgW3FdOnF1aXQiCisJ IChpZiBleGNsdWRlICJFeGNsdWRlIiAiRmlsdGVyIikgdGFnLWNoYXJzCisJIChpZiBvcmctYWdl bmRhLWF1dG8tZXhjbHVkZS1mdW5jdGlvbiAiW1JFVF0sICIgIiIpCisJIChpZiBleHBhbmQgIiIg Iiwgbm8gZ3JvdXB0YWcgZXhwYW5kIikpCisJKHNldHEgY2hhciAocmVhZC1jaGFyLWV4Y2x1c2l2 ZSkpCisJOzsgRXhjbHVkaW5nIG9yIGZpbHRlcmluZyBkb3duCisJKGNvbmQgKChlcSBjaGFyID8t KSAoc2V0cSBleGNsdWRlIHQpKQorCSAgICAgICgoZXEgY2hhciA/KykgKHNldHEgZXhjbHVkZSBu aWwpKSkpKQorICAgICh3aGVuIChlcSBjaGFyID9cdCkKICAgICAgICh1bmxlc3MgKGxvY2FsLXZh cmlhYmxlLXAgJ29yZy1nbG9iYWwtdGFncy1jb21wbGV0aW9uLXRhYmxlIChjdXJyZW50LWJ1ZmZl cikpCiAJKG9yZy1zZXQtbG9jYWwgJ29yZy1nbG9iYWwtdGFncy1jb21wbGV0aW9uLXRhYmxlCiAJ CSAgICAgICAob3JnLWdsb2JhbC10YWdzLWNvbXBsZXRpb24tdGFibGUpKSkKQEAgLTc0OTQsNyAr NzUwMCw3IEBAIHRvIHN3aXRjaCB0byBuYXJyb3dpbmcuIgogCShzZXRxIHRhZyAob3JnLWljb21w bGV0aW5nLXJlYWQKIAkJICAgIlRhZzogIiBvcmctZ2xvYmFsLXRhZ3MtY29tcGxldGlvbi10YWJs ZSkpKSkKICAgICAoY29uZAotICAgICAoKGVxdWFsIGNoYXIgP1xyKQorICAgICAoKGVxIGNoYXIg P1xyKQogICAgICAgKG9yZy1hZ2VuZGEtZmlsdGVyLXNob3ctYWxsLXRhZykKICAgICAgICh3aGVu IG9yZy1hZ2VuZGEtYXV0by1leGNsdWRlLWZ1bmN0aW9uCiAJKHNldHEgb3JnLWFnZW5kYS10YWct ZmlsdGVyIG5pbCkKQEAgLTc1MDMsMjUgKzc1MDksMjYgQEAgdG8gc3dpdGNoIHRvIG5hcnJvd2lu Zy4iCiAJICAgIChpZiBtb2RpZmllcgogCQkocHVzaCBtb2RpZmllciBvcmctYWdlbmRhLXRhZy1m aWx0ZXIpKSkpCiAJKGlmIChub3QgKG51bGwgb3JnLWFnZW5kYS10YWctZmlsdGVyKSkKLQkgICAg KG9yZy1hZ2VuZGEtZmlsdGVyLWFwcGx5IG9yZy1hZ2VuZGEtdGFnLWZpbHRlciAndGFnKSkpKQot ICAgICAoKGVxdWFsIGNoYXIgPy8pCisJICAgIChvcmctYWdlbmRhLWZpbHRlci1hcHBseSBvcmct YWdlbmRhLXRhZy1maWx0ZXIgJ3RhZyBleHBhbmQpKSkpCisgICAgICgoZXEgY2hhciA/LykKICAg ICAgIChvcmctYWdlbmRhLWZpbHRlci1zaG93LWFsbC10YWcpCiAgICAgICAod2hlbiAoZ2V0ICdv cmctYWdlbmRhLXRhZy1maWx0ZXIgOnByZXNldC1maWx0ZXIpCi0JKG9yZy1hZ2VuZGEtZmlsdGVy LWFwcGx5IG9yZy1hZ2VuZGEtdGFnLWZpbHRlciAndGFnKSkpCi0gICAgICgoZXF1YWwgY2hhciA/ LiApCisJKG9yZy1hZ2VuZGEtZmlsdGVyLWFwcGx5IG9yZy1hZ2VuZGEtdGFnLWZpbHRlciAndGFn IGV4cGFuZCkpKQorICAgICAoKGVxIGNoYXIgPy4pCiAgICAgICAoc2V0cSBvcmctYWdlbmRhLXRh Zy1maWx0ZXIKIAkgICAgKG1hcGNhciAobGFtYmRhKHRhZykgKGNvbmNhdCAiKyIgdGFnKSkKIAkJ ICAgIChvcmctZ2V0LWF0LWJvbCAndGFncykpKQotICAgICAgKG9yZy1hZ2VuZGEtZmlsdGVyLWFw cGx5IG9yZy1hZ2VuZGEtdGFnLWZpbHRlciAndGFnKSkKLSAgICAgKChvciAoZXF1YWwgY2hhciA/ XCApCisgICAgICAob3JnLWFnZW5kYS1maWx0ZXItYXBwbHkgb3JnLWFnZW5kYS10YWctZmlsdGVy ICd0YWcgZXhwYW5kKSkKKyAgICAgKChlcSBjaGFyID9xKSkgO0lmIHEsIGFib3J0IChldmVuIGlm IHRoZXJlIGlzIGEgcS1rZXkgZm9yIGEgdGFnLi4uKQorICAgICAoKG9yIChlcSBjaGFyID9ccykK IAkgIChzZXRxIGEgKHJhc3NvYyBjaGFyIGFsaXN0KSkKIAkgIChhbmQgdGFnIChzZXRxIGEgKGNv bnMgdGFnIG5pbCkpKSkKICAgICAgIChvcmctYWdlbmRhLWZpbHRlci1zaG93LWFsbC10YWcpCiAg ICAgICAoc2V0cSB0YWcgKGNhciBhKSkKICAgICAgIChzZXRxIG9yZy1hZ2VuZGEtdGFnLWZpbHRl cgotCSAgICAoY29ucyAoY29uY2F0IChpZiBzdHJpcCAiLSIgIisiKSB0YWcpCi0JCSAgKGlmIG5h cnJvdyBjdXJyZW50IG5pbCkpKQotICAgICAgKG9yZy1hZ2VuZGEtZmlsdGVyLWFwcGx5IG9yZy1h Z2VuZGEtdGFnLWZpbHRlciAndGFnKSkKKwkgICAgKGNvbnMgKGNvbmNhdCAoaWYgZXhjbHVkZSAi LSIgIisiKSB0YWcpCisJCSAgY3VycmVudCkpCisgICAgICAob3JnLWFnZW5kYS1maWx0ZXItYXBw bHkgb3JnLWFnZW5kYS10YWctZmlsdGVyICd0YWcgZXhwYW5kKSkKICAgICAgKHQgKGVycm9yICJJ bnZhbGlkIHRhZyBzZWxlY3Rpb24gY2hhcmFjdGVyICVjIiBjaGFyKSkpKSkKIAogKGRlZnVuIG9y Zy1hZ2VuZGEtZ2V0LXJlcHJlc2VudGVkLXRhZ3MgKCkKQEAgLTc1MzUsMTMgKzc1NDIsMTUgQEAg dG8gc3dpdGNoIHRvIG5hcnJvd2luZy4iCiAJICAgICAgKGdldC10ZXh0LXByb3BlcnR5IChwb2lu dCkgJ3RhZ3MpKSkpCiAgICAgdGFncykpCiAKLShkZWZ1biBvcmctYWdlbmRhLWZpbHRlci1ieS10 YWctcmVmaW5lIChzdHJpcCAmb3B0aW9uYWwgY2hhcikKKyhkZWZ1biBvcmctYWdlbmRhLWZpbHRl ci1ieS10YWctcmVmaW5lIChhcmcgJm9wdGlvbmFsIGNoYXIpCiAgICJSZWZpbmUgdGhlIGN1cnJl bnQgZmlsdGVyLiAgU2VlIGBvcmctYWdlbmRhLWZpbHRlci1ieS10YWcnLiIKICAgKGludGVyYWN0 aXZlICJQIikKLSAgKG9yZy1hZ2VuZGEtZmlsdGVyLWJ5LXRhZyBzdHJpcCBjaGFyICdyZWZpbmUp KQorICAob3JnLWFnZW5kYS1maWx0ZXItYnktdGFnIGFyZyBjaGFyICdyZWZpbmUpKQogCi0oZGVm dW4gb3JnLWFnZW5kYS1maWx0ZXItbWFrZS1tYXRjaGVyIChmaWx0ZXIgdHlwZSkKLSAgIkNyZWF0 ZSB0aGUgZm9ybSB0aGF0IHRlc3RzIGEgbGluZSBmb3IgYWdlbmRhIGZpbHRlci4iCisoZGVmdW4g b3JnLWFnZW5kYS1maWx0ZXItbWFrZS1tYXRjaGVyIChmaWx0ZXIgdHlwZSAmb3B0aW9uYWwgZXhw YW5kKQorICAiQ3JlYXRlIHRoZSBmb3JtIHRoYXQgdGVzdHMgYSBsaW5lIGZvciBhZ2VuZGEgZmls dGVyLiAgT3B0aW9uYWwKK2FyZ3VtZW50IEVYUEFORCBjYW4gYmUgdXNlZCBmb3IgdGhlIFRZUEUg dGFnIGFuZCB3aWxsIGV4cGFuZCB0aGUKK3RhZ3MgaW4gdGhlIEZJTFRFUiBpZiBhbnkgb2YgdGhl IHRhZ3MgaW4gRklMVEVSIGFyZSBncm91cHRhZ3MuIgogICAobGV0IChmIGYxKQogICAgIChjb25k CiAgICAgIDs7IFRhZyBmaWx0ZXIKQEAgLTc1NTEsMjYgKzc1NjAsMTEgQEAgdG8gc3dpdGNoIHRv IG5hcnJvd2luZy4iCiAJICAgICAoYXBwZW5kIChnZXQgJ29yZy1hZ2VuZGEtdGFnLWZpbHRlciA6 cHJlc2V0LWZpbHRlcikKIAkJICAgICBmaWx0ZXIpKSkKICAgICAgIChkb2xpc3QgKHggZmlsdGVy KQotCShsZXQgKChuZmlsdGVyIChvcmctYWdlbmRhLWZpbHRlci1leHBhbmQtdGFncyBmaWx0ZXIp KSBuZiBuZjEKLQkgICAgICAoZmZ1bmMKLQkgICAgICAgKGxhbWJkYSAobmYwIG5mMDEgZmx0ciBu b3Rncm91cCBvcCkKLQkJIChkb2xpc3QgKHggZmx0cikKLQkJICAgKGlmIChtZW1iZXIgeCAnKCIt IiAiKyIpKQotCQkgICAgICAgKHNldHEgbmYwMSAoaWYgKGVxdWFsIHggIi0iKSAndGFncyAnKG5v dCB0YWdzKSkpCi0JCSAgICAgKHNldHEgbmYwMSAobGlzdCAnbWVtYmVyIChkb3duY2FzZSAoc3Vi c3RyaW5nIHggMSkpCi0JCQkJICAgICAgJ3RhZ3MpKQotCQkgICAgICh3aGVuIChlcXVhbCAoc3Ry aW5nLXRvLWNoYXIgeCkgPy0pCi0JCSAgICAgICAoc2V0cSBuZjAxIChsaXN0ICdub3QgbmYwMSkp Ci0JCSAgICAgICAod2hlbiAobm90IG5vdGdyb3VwKSAoc2V0cSBvcCAnYW5kKSkpKQotCQkgICAo cHVzaCBuZjAxIG5mMCkpCi0JCSAoaWYgbm90Z3JvdXAKLQkJICAgICAocHVzaCAoY29ucyAnYW5k IG5mMCkgZikKLQkJICAgKHB1c2ggKGNvbnMgKG9yIG9wICdvcikgbmYwKSBmKSkpKSkKLQkgIChj b25kICgoZXF1YWwgZmlsdGVyICcoIisiKSkKLQkJIChzZXRxIGYgKGxpc3QgKGxpc3QgJ25vdCAn dGFncykpKSkKLQkJKChlcXVhbCBuZmlsdGVyIGZpbHRlcikKLQkJIChmdW5jYWxsIGZmdW5jIGYx IGYgZmlsdGVyIHQgbmlsKSkKLQkJKHQgKGZ1bmNhbGwgZmZ1bmMgbmYxIG5mIG5maWx0ZXIgbmls IG5pbCkpKSkpKQorCShsZXQgKChvcCAoc3RyaW5nLXRvLWNoYXIgeCkpKQorCSAgKGlmIGV4cGFu ZCAoc2V0cSB4IChvcmctYWdlbmRhLWZpbHRlci1leHBhbmQtdGFncyAobGlzdCB4KSB0KSkKKwkg ICAgKHNldHEgeCAobGlzdCB4KSkpCisJICAoc2V0cSBmMSAob3JnLWFnZW5kYS1maWx0ZXItbWFr ZS1tYXRjaGVyLXRhZy1leHAgeCBvcCkpCisJICAocHVzaCBmMSBmKSkpKQogICAgICA7OyBDYXRl Z29yeSBmaWx0ZXIKICAgICAgKChlcSB0eXBlICdjYXRlZ29yeSkKICAgICAgIChzZXRxIGZpbHRl cgpAQCAtNzYwMyw2ICs3NTk3LDMyIEBAIHRvIHN3aXRjaCB0byBuYXJyb3dpbmcuIgogCShwdXNo IChvcmctYWdlbmRhLWZpbHRlci1lZmZvcnQtZm9ybSB4KSBmKSkpKQogICAgIChjb25zICdhbmQg KG5yZXZlcnNlIGYpKSkpCiAKKyhkZWZ1biBvcmctYWdlbmRhLWZpbHRlci1tYWtlLW1hdGNoZXIt dGFnLWV4cCAodGFncyBvcCkKKyAgIkNyZWF0ZSB0aGUgZm9ybSB0aGF0IHRlc3RzIGEgbGluZSBm b3IgYWdlbmRhIGZpbHRlciBmb3IKK3RhZy1leHByZXNzaW9ucy4gIFJldHVybiBhIG1hdGNoLWV4 cHJlc3Npb24gZ2l2ZW4gVEFHUy4gIE9QIGlzIGFuCitvcGVyYXRvciBvZiB0eXBlIENIQVIgdGhh dCBhbGxvd3MgdGhlIGZ1bmN0aW9uIHRvIHNldCB0aGUgcmlnaHQKK3N3aXRjaGVzIGluIHRoZSBy ZXR1cm5lZCBmb3JtLiIKKyAgKGxldCAoZiBmMSkgO2YgPSByZXR1cm4gZXhwcmVzc2lvbi4gZjEg PSB3b3JraW5nLWFyZWEKKyAgICAoZG9saXN0ICh4IHRhZ3MpCisgICAgICAobGV0KiAoKHRhZyAo c3Vic3RyaW5nIHggMSkpCisJICAgICAoaXNyZWdleHAgKGFuZCAoZXF1YWwgInsiIChzdWJzdHJp bmcgdGFnIDAgMSkpCisJCQkgICAgKGVxdWFsICJ9IiAoc3Vic3RyaW5nIHRhZyAtMSkpKSkKKwkg ICAgIHJlZ2V4cCkKKwkoY29uZAorCSAoaXNyZWdleHAKKwkgIChzZXRxIHJlZ2V4cCAoc3Vic3Ry aW5nIHRhZyAxIC0xKSkKKwkgIChzZXRxIGYxIChsaXN0ICdvcmctbWF0Y2gtYW55LXAgcmVnZXhw ICd0YWdzKSkpCisJICh0CisJICAoc2V0cSBmMSAobGlzdCAnbWVtYmVyIChkb3duY2FzZSB0YWcp ICd0YWdzKSkpKQorCSh3aGVuIChlcSBvcCA/LSkKKwkgICAgKHNldHEgZjEgKGxpc3QgJ25vdCBm MSkpKSkKKyAgICAgIChwdXNoIGYxIGYpKQorICAgIDs7IEFueSBvZiB0aGUgZXhwcmVzc2lvbnMg Y2FuIG1hdGNoIGlmIG9wID0gKworICAgIDs7IGFsbCBtdXN0IG1hdGNoIGlmIHRoZSBvcGVyYXRv ciBpcyAtLgorICAgIChpZiAoZXEgb3AgPy0pCisJKGNvbnMgJ2FuZCBmKQorICAgICAgKGNvbnMg J29yIGYpKSkpCisKIChkZWZ1biBvcmctYWdlbmRhLWZpbHRlci1lZmZvcnQtZm9ybSAoZSkKICAg IlJldHVybiB0aGUgZm9ybSB0byBjb21wYXJlIHRoZSBlZmZvcnQgb2YgdGhlIGN1cnJlbnQgbGlu ZSB3aXRoIHdoYXQgRSBzYXlzLgogRSBsb29rcyBsaWtlIFwiKzwyOjI1XCIuIgpAQCAtNzY0MSwx MiArNzY2MSwxNCBAQCBXaGVuIE5PLU9QRVJBVE9SIGlzIG5vbi1uaWwsIGRvIG5vdCBhZGQgdGhl ICsgb3BlcmF0b3IgdG8gcmV0dXJuZWQgdGFncy4iCiAJKHJldmVyc2UgcnRuKSkKICAgICBmaWx0 ZXIpKQogCi0oZGVmdW4gb3JnLWFnZW5kYS1maWx0ZXItYXBwbHkgKGZpbHRlciB0eXBlKQotICAi U2V0IEZJTFRFUiBhcyB0aGUgbmV3IGFnZW5kYSBmaWx0ZXIgYW5kIGFwcGx5IGl0LiIKKyhkZWZ1 biBvcmctYWdlbmRhLWZpbHRlci1hcHBseSAoZmlsdGVyIHR5cGUgJm9wdGlvbmFsIGV4cGFuZCkK KyAgIlNldCBGSUxURVIgYXMgdGhlIG5ldyBhZ2VuZGEgZmlsdGVyIGFuZCBhcHBseSBpdC4gIE9w dGlvbmFsCithcmd1bWVudCBFWFBBTkQgY2FuIGJlIHVzZWQgZm9yIHRoZSBUWVBFIHRhZyBhbmQg d2lsbCBleHBhbmQgdGhlCit0YWdzIGluIHRoZSBGSUxURVIgaWYgYW55IG9mIHRoZSB0YWdzIGlu IEZJTFRFUiBhcmUgZ3JvdXB0YWdzLiIKICAgOzsgRGVhY3RpdmF0ZSBgb3JnLWFnZW5kYS1lbnRy eS10ZXh0LW1vZGUnIHdoZW4gZmlsdGVyaW5nCiAgIChpZiBvcmctYWdlbmRhLWVudHJ5LXRleHQt bW9kZSAob3JnLWFnZW5kYS1lbnRyeS10ZXh0LW1vZGUpKQogICAobGV0ICh0YWdzIGNhdCB0eHQp Ci0gICAgKHNldHEgb3JnLWFnZW5kYS1maWx0ZXItZm9ybSAob3JnLWFnZW5kYS1maWx0ZXItbWFr ZS1tYXRjaGVyIGZpbHRlciB0eXBlKSkKKyAgICAoc2V0cSBvcmctYWdlbmRhLWZpbHRlci1mb3Jt IChvcmctYWdlbmRhLWZpbHRlci1tYWtlLW1hdGNoZXIgZmlsdGVyIHR5cGUgZXhwYW5kKSkKICAg ICA7OyBPbmx5IHNldCBgb3JnLWFnZW5kYS1maWx0ZXJlZC1ieS1jYXRlZ29yeScgdG8gdCB3aGVu IGEgdW5pcXVlCiAgICAgOzsgY2F0ZWdvcnkgaXMgdXNlZCBhcyB0aGUgZmlsdGVyOgogICAgIChz ZXRxIG9yZy1hZ2VuZGEtZmlsdGVyZWQtYnktY2F0ZWdvcnkKQEAgLTc2NTgsMTEgKzc2ODAsNyBA QCBXaGVuIE5PLU9QRVJBVE9SIGlzIG5vbi1uaWwsIGRvIG5vdCBhZGQgdGhlICsgb3BlcmF0b3Ig dG8gcmV0dXJuZWQgdGFncy4iCiAgICAgICAod2hpbGUgKG5vdCAoZW9icCkpCiAJKGlmIChvcmct Z2V0LWF0LWJvbCAnb3JnLW1hcmtlcikKIAkgICAgKHByb2duCi0JICAgICAgKHNldHEgdGFncyA7 IHVzZWQgaW4gZXZhbAotCQkgICAgKGFwcGx5ICdhcHBlbmQKLQkJCSAgIChtYXBjYXIgKGxhbWJk YSAoZikKLQkJCQkgICAgIChvcmctYWdlbmRhLWZpbHRlci1leHBhbmQtdGFncyAobGlzdCBmKSB0 KSkKLQkJCQkgICAob3JnLWdldC1hdC1ib2wgJ3RhZ3MpKSkKKwkgICAgICAoc2V0cSB0YWdzIChv cmctZ2V0LWF0LWJvbCAndGFncykKIAkJICAgIGNhdCAob3JnLWdldC1hdC1lb2wgJ29yZy1jYXRl Z29yeSAxKQogCQkgICAgdHh0IChvcmctZ2V0LWF0LWVvbCAndHh0IDEpKQogCSAgICAgIChpZiAo bm90IChldmFsIG9yZy1hZ2VuZGEtZmlsdGVyLWZvcm0pKQpAQCAtOTk3Myw3ICs5OTkxLDcgQEAg Y3VycmVudCBISDpNTSB0aW1lLiIKIChkZWZ1biBvcmctYWdlbmRhLXJlYXBwbHktZmlsdGVycyAo KQogICAiUmUtYXBwbHkgYWxsIGFnZW5kYSBmaWx0ZXJzLiIKICAgKG1hcGNhcgotICAgKGxhbWJk YShmKSAod2hlbiAoY2FyIGYpIChvcmctYWdlbmRhLWZpbHRlci1hcHBseSAoY2FyIGYpIChjYWRy IGYpKSkpCisgICAobGFtYmRhKGYpICh3aGVuIChjYXIgZikgKG9yZy1hZ2VuZGEtZmlsdGVyLWFw cGx5IChjYXIgZikgKGNhZHIgZikgdCkpKQogICAgYCgoLG9yZy1hZ2VuZGEtdGFnLWZpbHRlciB0 YWcpCiAgICAgICgsb3JnLWFnZW5kYS1jYXRlZ29yeS1maWx0ZXIgY2F0ZWdvcnkpCiAgICAgICgs b3JnLWFnZW5kYS1yZWdleHAtZmlsdGVyIHJlZ2V4cCkKLS0gCjEuOS4xCgo= --001a11362a8ae8e76c05116dd448 Content-Type: application/octet-stream; name="0003-org-Nesting-grouptags.patch" Content-Disposition: attachment; filename="0003-org-Nesting-grouptags.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i7cc1brt2 RnJvbSAxZDAxYzU4ZDkwOWY1YzQ5Yzk4YzJhZTE0MWUxMjZiNDhhMTM5NmI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/R3VzdGF2PTIwV2lrc3RyPUMzPUI2bT89IDxn dXN0YXZAVVZTZXJ2ZXI+CkRhdGU6IFNhdCwgMjQgSmFuIDIwMTUgMDI6NDc6NDcgKzAxMDAKU3Vi amVjdDogW1BBVENIIDMvNF0gb3JnOiBOZXN0aW5nIGdyb3VwdGFncwoKKiBsaXNwL29yZy5lbCAo b3JnLXRhZ3MtZXhwYW5kKTogTmVzdGluZyBncm91cHRhZ3MuCgogIEFsbG93aW5nIHN1YnRhZ3Mg dG8gYmUgZGVmaW5lZCBhcyBncm91cHMgdGhlbXNlbHZlcy4KCiAgOiAjK1RBR1M6IFsgR3JvdXAg OiBTdWJPbmUoMSkgU3ViVHdvIF0KICA6ICMrVEFHUzogWyBTdWJPbmUgOiBTdWJPbmUxIFN1Yk9u ZTIgXQogIDogIytUQUdTOiBbIFN1YlR3byA6IFN1YlR3bzEgU3ViVHdvMiBdCgogIFNob3VsZCBi ZSBzZWVuIGFzIGEgdHJlZSBvZiB0YWdzOgogIC0gR3JvdXAKICAgIC0gU3ViT25lCiAgICAgIC0g U3ViT25lMQogICAgICAtIFN1Yk9uZTIKICAgIC0gU3ViVHdvCiAgICAgIC0gU3ViVHdvMQogICAg ICAtIFN1YlR3bzIKCiAgU2VhcmNoaW5nIGZvciAiR3JvdXAiIHNob3VsZCByZXR1cm4gYWxsIHRh Z3MgZGVmaW5lZCBhYm92ZS4KLS0tCiBsaXNwL29yZy5lbCAgICAgICAgICAgICAgfCAyOSArKysr KysrKysrKysrKysrKysrKysrKysrKystLQogdGVzdGluZy9saXNwL3Rlc3Qtb3JnLmVsIHwgMTAg KysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2xpc3Avb3JnLmVsIGIvbGlzcC9vcmcuZWwKaW5kZXggYjM5Y2I5 OC4uMjJjNzUyNiAxMDA3NTUKLS0tIGEvbGlzcC9vcmcuZWwKKysrIGIvbGlzcC9vcmcuZWwKQEAg LTE0NTM4LDcgKzE0NTM4LDcgQEAgU2VlIGFsc28gYG9yZy1zY2FuLXRhZ3MnLgogCQkJICBtYXRj aGVyKSkpCiAgICAgKGNvbnMgbWF0Y2gwIG1hdGNoZXIpKSkKIAotKGRlZnVuIG9yZy10YWdzLWV4 cGFuZCAobWF0Y2ggJm9wdGlvbmFsIHNpbmdsZS1hcy1saXN0IGRvd25jYXNlZCkKKyhkZWZ1biBv cmctdGFncy1leHBhbmQgKG1hdGNoICZvcHRpb25hbCBzaW5nbGUtYXMtbGlzdCBkb3duY2FzZWQg dGFncy1hbHJlYWR5LWV4cGFuZGVkKQogICAiRXhwYW5kIGdyb3VwIHRhZ3MgaW4gTUFUQ0guCiAK IFRoaXMgcmVwbGFjZXMgZXZlcnkgZ3JvdXAgdGFnIGluIE1BVENIIHdpdGggYSByZWdleHAgdGFn IHNlYXJjaC4KQEAgLTE0NTc5LDYgKzE0NTc5LDcgQEAgV2hlbiBET1dOQ0FTRSBpcyBub24tbmls LCBleHBhbmQgZG93bmNhc2VkIFRBR1MuIgogCSAgICAgKHRhZ2dyb3Vwcy1rZXlzIChtYXBjYXIg IydjYXIgdGFnZ3JvdXBzKSkKIAkgICAgIChyZXR1cm4tbWF0Y2ggKGlmIGRvd25jYXNlZCAoZG93 bmNhc2UgbWF0Y2gpIG1hdGNoKSkKIAkgICAgIChjb3VudCAwKQorCSAgICAgKHdvcmstYWxyZWFk eS1leHBhbmRlZCB0YWdzLWFscmVhZHktZXhwYW5kZWQpCiAJICAgICByZWdleHBzLWluLW1hdGNo IHRhZ3MtaW4tZ3JvdXAgcmVnZXhwLWluLWdyb3VwIHJlZ2V4cC1pbi1ncm91cC1lc2NhcGVkKQog CTs7IEAgYW5kIF8gYXJlIGFsbG93ZWQgYXMgd29yZC1jb21wb25lbnRzIGluIHRhZ3MuCiAJKG1v ZGlmeS1zeW50YXgtZW50cnkgP0AgInciIHN0YWJsZSkKQEAgLTE0NTk2LDggKzE0NTk3LDMyIEBA IFdoZW4gRE9XTkNBU0UgaXMgbm9uLW5pbCwgZXhwYW5kIGRvd25jYXNlZCBUQUdTLiIKIAkgIChs ZXQqICgoZGlyIChtYXRjaC1zdHJpbmcgMSByZXR1cm4tbWF0Y2gpKQogCQkgKHRhZyAobWF0Y2gt c3RyaW5nIDIgcmV0dXJuLW1hdGNoKSkKIAkJICh0YWcgKGlmIGRvd25jYXNlZCAoZG93bmNhc2Ug dGFnKSB0YWcpKSkKLQkgICAgKHdoZW4gKG5vdCAoZ2V0LXRleHQtcHJvcGVydHkgMCAnZ3JvdXB0 YWcgKG1hdGNoLXN0cmluZyAyIHJldHVybi1tYXRjaCkpKQorCSAgICAodW5sZXNzIChvciAoZ2V0 LXRleHQtcHJvcGVydHkgMCAnZ3JvdXB0YWcgKG1hdGNoLXN0cmluZyAyIHJldHVybi1tYXRjaCkp CisJCSAgICAgICAgKG1lbWJlciB0YWcgd29yay1hbHJlYWR5LWV4cGFuZGVkKSkKIAkgICAgICAo c2V0cSB0YWdzLWluLWdyb3VwIChhc3NvYyB0YWcgdGFnZ3JvdXBzKSkKKwkgICAgICAocHVzaCB0 YWcgd29yay1hbHJlYWR5LWV4cGFuZGVkKQorCSAgICAgIDs7IFJlY3Vyc2l2ZWx5IGV4cGFuZCBl YWNoIHRhZyBpbiB0aGUgZ3JvdXAsIGlmIHRoZSB0YWcgaGFzbid0CisJICAgICAgOzsgYWxyZWFk eSBiZWVuIGV4cGFuZGVkLiAgUmVzdG9yZSB0aGUgbWF0Y2gtZGF0YSBhZnRlciBhbGwgcmVjdXJz aXZlIGNhbGxzLgorCSAgICAgIChzYXZlLW1hdGNoLWRhdGEKKwkJKGxldCAodGFncy1leHBhbmRl ZCkKKwkJICAoZG9saXN0ICh4IChjZHIgdGFncy1pbi1ncm91cCkpCisJCSAgICAoaWYgKGFuZCAo bWVtYmVyIHggdGFnZ3JvdXBzLWtleXMpCisJCQkgICAgIChub3QgKG1lbWJlciB4IHdvcmstYWxy ZWFkeS1leHBhbmRlZCkpKQorCQkJKHNldHEgdGFncy1leHBhbmRlZAorCQkJICAgICAgKGRlbGV0 ZS1kdXBzCisJCQkgICAgICAgKGFwcGVuZAorCQkJCShvcmctdGFncy1leHBhbmQgeCB0IGRvd25j YXNlZAorCQkJCQkJIHdvcmstYWxyZWFkeS1leHBhbmRlZCkKKwkJCQl0YWdzLWV4cGFuZGVkKSkp CisJCSAgICAgIChzZXRxIHRhZ3MtZXhwYW5kZWQKKwkJCSAgICAoYXBwZW5kIChsaXN0IHgpIHRh Z3MtZXhwYW5kZWQpKSkKKwkJICAgIChzZXRxIHdvcmstYWxyZWFkeS1leHBhbmRlZAorCQkJICAo ZGVsZXRlLWR1cHMKKwkJCSAgIChhcHBlbmQgdGFncy1leHBhbmRlZAorCQkJCSAgIHdvcmstYWxy ZWFkeS1leHBhbmRlZCkpKSkKKwkJICAoc2V0cSB0YWdzLWluLWdyb3VwCisJCQkoZGVsZXRlLWR1 cHMgKGNvbnMgKGNhciB0YWdzLWluLWdyb3VwKQorCQkJCQkgICB0YWdzLWV4cGFuZGVkKSkpKSkK IAkgICAgICA7OyBGaWx0ZXIgdGFnLXJlZ2V4cHMgZnJvbSB0YWdzLgogCSAgICAgIChzZXRxIHJl Z2V4cC1pbi1ncm91cC1lc2NhcGVkCiAJCSAgICAoZGVscSBuaWwgKG1hcGNhciAobGFtYmRhICh4 KQpkaWZmIC0tZ2l0IGEvdGVzdGluZy9saXNwL3Rlc3Qtb3JnLmVsIGIvdGVzdGluZy9saXNwL3Rl c3Qtb3JnLmVsCmluZGV4IDcwYWEzOGQuLmY1OTcyNTUgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvbGlz cC90ZXN0LW9yZy5lbAorKysgYi90ZXN0aW5nL2xpc3AvdGVzdC1vcmcuZWwKQEAgLTMwOTksNiAr MzA5OSwxNiBAQCBUZXh0LgogICAgICAob3JnLW1hdGNoLXNwYXJzZS10cmVlIG5pbCAid29yayIp CiAgICAgIChzZWFyY2gtZm9yd2FyZCAiSDIiKQogICAgICAob3JnLWludmlzaWJsZS1wMikpKQor ICA7OyBNYXRjaCB0YWdzIGluIGhpZXJhcmNoaWVzCisgIChzaG91bGQtbm90CisgICAob3JnLXRl c3Qtd2l0aC10ZW1wLXRleHQKKyAgICAgICAiIytUQUdTOiBbIExldl8xIDogTGV2XzIgXVxuCisj K1RBR1M6IFsgTGV2XzIgOiBMZXZfMyBdXG4KKyMrVEFHUzogeyBMZXZfMyA6IExldl80IH1cbgor KiBIXG4qKiBIMSA6TGV2XzE6XG4qKiBIMiA6TGV2XzI6XG4qKiBIMyA6TGV2XzM6XG4qKiBINCA6 TGV2XzQ6IgorICAgICAob3JnLW1hdGNoLXNwYXJzZS10cmVlIG5pbCAiTGV2XzEiKQorICAgICAo c2VhcmNoLWZvcndhcmQgIkg0IikKKyAgICAgKG9yZy1pbnZpc2libGUtcDIpKSkKICAgOzsgTWF0 Y2ggcmVndWxhciBleHByZXNzaW9ucyBpbiB0YWdzCiAgIChzaG91bGQtbm90CiAgICAob3JnLXRl c3Qtd2l0aC10ZW1wLXRleHQKLS0gCjEuOS4xCgo= --001a11362a8ae8e76c05116dd448 Content-Type: application/octet-stream; name="0004-org.texi-Complement-info-for-group-tags.patch" Content-Disposition: attachment; filename="0004-org.texi-Complement-info-for-group-tags.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i7cc1brw3 RnJvbSBiZGM2YTI5MzkwZDlkNjBmNjlmZmRmNDQyYzI4YTQ2OTYwMWFiOTk4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/R3VzdGF2PTIwV2lrc3RyPUMzPUI2bT89IDxn dXN0YXZAVVZTZXJ2ZXI+CkRhdGU6IFRodSwgNSBNYXIgMjAxNSAwMTo0NTo1NyArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggNC80XSBvcmcudGV4aTogQ29tcGxlbWVudCBpbmZvIGZvciBncm91cCB0YWdz Cgpncm91cCB0YWdzIGFyZSBtb3JlIGdlbmVyYWwgYW5kIGEgbmFtZS1jaGFuZ2UgKG9yIGFkZGl0 aW9uKSBpcyBtYWRlIGluCnRoZSBtYW51YWw6IHRhZyBncm91cHMgYXJlIG5vdyBjYWxsZWQgdGFn IGhpZXJhcmNoeS4KCkFkZGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYWRkZWQgdGFnIGhpZXJh cmNoeSBmdW5jdGlvbmFsaXR5IGFuZAp1c2UtY2FzZXMuCi0tLQogZG9jL29yZy50ZXhpIHwgMTE0 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tCiAxIGZpbGUgY2hhbmdlZCwgODkgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZG9jL29yZy50ZXhpIGIvZG9jL29yZy50ZXhpCmluZGV4IGVkYjZjZjAuLjY4 ZTY0MzYgMTAwNjQ0Ci0tLSBhL2RvYy9vcmcudGV4aQorKysgYi9kb2Mvb3JnLnRleGkKQEAgLTQz Miw3ICs0MzIsNyBAQCBUYWdzCiAKICogVGFnIGluaGVyaXRhbmNlOjogICAgICAgICAgICAgVGFn cyB1c2UgdGhlIHRyZWUgc3RydWN0dXJlIG9mIHRoZSBvdXRsaW5lCiAqIFNldHRpbmcgdGFnczo6 ICAgICAgICAgICAgICAgIEhvdyB0byBhc3NpZ24gdGFncyB0byBhIGhlYWRsaW5lCi0qIFRhZyBn cm91cHM6OiAgICAgICAgICAgICAgICAgIFVzZSBvbmUgdGFnIHRvIHNlYXJjaCBmb3Igc2V2ZXJh bCB0YWdzCisqIFRhZyBoaWVyYXJjaHk6OiAgICAgICAgICAgICAgIENyZWF0ZSBhIGhpZXJhcmNo eSBvZiB0YWdzCiAqIFRhZyBzZWFyY2hlczo6ICAgICAgICAgICAgICAgIFNlYXJjaGluZyBmb3Ig Y29tYmluYXRpb25zIG9mIHRhZ3MKIAogUHJvcGVydGllcyBhbmQgY29sdW1ucwpAQCAtNDg3Nyw3 ICs0ODc3LDcgQEAgWW91IG1heSBzcGVjaWZ5IHNwZWNpYWwgZmFjZXMgZm9yIHNwZWNpZmljIHRh Z3MgdXNpbmcgdGhlIG9wdGlvbgogQG1lbnUKICogVGFnIGluaGVyaXRhbmNlOjogICAgICAgICAg ICAgVGFncyB1c2UgdGhlIHRyZWUgc3RydWN0dXJlIG9mIHRoZSBvdXRsaW5lCiAqIFNldHRpbmcg dGFnczo6ICAgICAgICAgICAgICAgIEhvdyB0byBhc3NpZ24gdGFncyB0byBhIGhlYWRsaW5lCi0q IFRhZyBncm91cHM6OiAgICAgICAgICAgICAgICAgIFVzZSBvbmUgdGFnIHRvIHNlYXJjaCBmb3Ig c2V2ZXJhbCB0YWdzCisqIFRhZyBoaWVyYXJjaHk6OiAgICAgICAgICAgICAgIENyZWF0ZSBhIGhp ZXJhcmNoeSBvZiB0YWdzCiAqIFRhZyBzZWFyY2hlczo6ICAgICAgICAgICAgICAgIFNlYXJjaGlu ZyBmb3IgY29tYmluYXRpb25zIG9mIHRhZ3MKIEBlbmQgbWVudQogCkBAIC01MTE2LDQxICs1MTE2 LDEwNSBAQCBpbnN0ZWFkIG9mIEBrYmR7Qy1jIEMtY30pLiAgSWYgeW91IHNldCB0aGUgdmFyaWFi bGUgdG8gdGhlIHZhbHVlCiBAY29kZXtleHBlcnR9LCB0aGUgc3BlY2lhbCB3aW5kb3cgaXMgbm90 IGV2ZW4gc2hvd24gZm9yIHNpbmdsZS1rZXkgdGFnCiBzZWxlY3Rpb24sIGl0IGNvbWVzIHVwIG9u bHkgd2hlbiB5b3UgcHJlc3MgYW4gZXh0cmEgQGtiZHtDLWN9LgogCi1Abm9kZSBUYWcgZ3JvdXBz Ci1Ac2VjdGlvbiBUYWcgZ3JvdXBzCitAbm9kZSBUYWcgaGllcmFyY2h5CitAc2VjdGlvbiBUYWcg aGllcmFyY2h5CiAKIEBjaW5kZXggZ3JvdXAgdGFncwogQGNpbmRleCB0YWdzLCBncm91cHMKLUlu IGEgc2V0IG9mIG11dHVhbGx5IGV4Y2x1c2l2ZSB0YWdzLCB0aGUgZmlyc3QgdGFnIGNhbiBiZSBk ZWZpbmVkIGFzIGEKLUBlbXBoe2dyb3VwIHRhZ30uICBXaGVuIHlvdSBzZWFyY2ggZm9yIGEgZ3Jv dXAgdGFnLCBpdCB3aWxsIHJldHVybiBtYXRjaGVzCi1mb3IgYWxsIG1lbWJlcnMgaW4gdGhlIGdy b3VwLiAgSW4gYW4gYWdlbmRhIHZpZXcsIGZpbHRlcmluZyBieSBhIGdyb3VwIHRhZwotd2lsbCBk aXNwbGF5IGhlYWRsaW5lcyB0YWdnZWQgd2l0aCBhdCBsZWFzdCBvbmUgb2YgdGhlIG1lbWJlcnMg b2YgdGhlCi1ncm91cC4gIFRoaXMgbWFrZXMgdGFnIHNlYXJjaGVzIGFuZCBmaWx0ZXJzIGV2ZW4g bW9yZSBmbGV4aWJsZS4KK0BjaW5kZXggdGFnIGhpZXJhcmNoeQorVGFncyBjYW4gYmUgZGVmaW5l ZCBpbiBoaWVyYXJjaGllcy4gIEEgdGFnIGNhbiBiZSBkZWZpbmVkIGFzIGEgQGVtcGh7Z3JvdXAK K3RhZ30gZm9yIGEgc2V0IG9mIG90aGVyIHRhZ3MuICBUaGUgZ3JvdXAgdGFnIGNhbiBiZSBzZWVu IGFzIHRoZSBgYGJyb2FkZXIKK3Rlcm0nJyBmb3IgaXRzIHNldCBvZiB0YWdzLiAgRGVmaW5pbmcg bXVsdGlwbGUgQGVtcGh7Z3JvdXAgdGFnc30gYW5kIG5lc3RpbmcKK3RoZW0gY3JlYXRlcyBhIHRh ZyBoaWVyYXJjaHkuCiAKLVlvdSBjYW4gc2V0IGdyb3VwIHRhZ3MgYnkgaW5zZXJ0aW5nIGEgY29s b24gYmV0d2VlbiB0aGUgZ3JvdXAgdGFnIGFuZCBvdGhlcgotdGFncy0tLWJld2FyZSB0aGF0IGFs bCB3aGl0ZXNwYWNlcyBhcmUgbWFuZGF0b3J5IHNvIHRoYXQgT3JnIGNhbiBwYXJzZSB0aGlzCi1s aW5lIGNvcnJlY3RseToKK09uZSB1c2UtY2FzZSBpcyB0byBjcmVhdGUgYSB0YXhvbm9teSBvZiB0 ZXJtcyAodGFncykgdGhhdCBjYW4gYmUgdXNlZCB0bworY2xhc3NpZnkgbm9kZXMgaW4gYSBkb2N1 bWVudCBvciBzZXQgb2YgZG9jdW1lbnRzLgorCitXaGVuIHlvdSBzZWFyY2ggZm9yIGEgZ3JvdXAg dGFnLCBpdCB3aWxsIHJldHVybiBtYXRjaGVzIGZvciBhbGwgbWVtYmVycyBpbgordGhlIGdyb3Vw IGFuZCBpdHMgc3ViZ3JvdXAuICBJbiBhbiBhZ2VuZGEgdmlldywgZmlsdGVyaW5nIGJ5IGEgZ3Jv dXAgdGFnIHdpbGwKK2Rpc3BsYXkgb3IgaGlkZSBoZWFkbGluZXMgdGFnZ2VkIHdpdGggYXQgbGVh c3Qgb25lIG9mIHRoZSBtZW1iZXJzIG9mIHRoZQorZ3JvdXAgb3IgYW55IG9mIGl0cyBzdWJncm91 cHMuICBUaGlzIG1ha2VzIHRhZyBzZWFyY2hlcyBhbmQgZmlsdGVycyBldmVuIG1vcmUKK2ZsZXhp YmxlLgorCitZb3UgY2FuIHNldCBncm91cCB0YWdzIGJ5IHVzaW5nIGJyYWNrZXRzIGFuZCBpbnNl cnRpbmcgYSBjb2xvbiBiZXR3ZWVuIHRoZQorZ3JvdXAgdGFnIGFuZCBpdHMgcmVsYXRlZCB0YWdz LS0tYmV3YXJlIHRoYXQgYWxsIHdoaXRlc3BhY2VzIGFyZSBtYW5kYXRvcnkgc28KK3RoYXQgT3Jn IGNhbiBwYXJzZSB0aGlzIGxpbmUgY29ycmVjdGx5OgorCitAZXhhbXBsZQorIytUQUdTOiBbIEdU RCA6IENvbnRyb2wgUGVyc3AgXQorQGVuZCBleGFtcGxlCisKK0luIHRoaXMgZXhhbXBsZSwgQHNh bXB7R1REfSBpcyB0aGUgQGVtcGh7Z3JvdXAgdGFnfSBhbmQgaXQgaXMgcmVsYXRlZCB0byB0d28K K290aGVyIHRhZ3M6IEBzYW1we0NvbnRyb2x9LCBAc2FtcHtQZXJzcH0uICBEZWZpbmluZyBAc2Ft cHtDb250cm9sfSBhbmQKK0BzYW1we1BlcnNwfSBhcyBncm91cCB0YWdzIGNyZWF0ZXMgYW4gaGll cmFyY2h5IG9mIHRhZ3M6CiAKIEBleGFtcGxlCi0jK1RBR1M6IEB7IEBAcmVhZCA6IEBAcmVhZF9i b29rIEBAcmVhZF9lYm9vayBAfQorIytUQUdTOiBbIENvbnRyb2wgOiBDb250ZXh0IFRhc2sgXQor IytUQUdTOiBbIFBlcnNwIDogVmlzaW9uIEdvYWwgQU9GIFByb2plY3QgXQogQGVuZCBleGFtcGxl CiAKLUluIHRoaXMgZXhhbXBsZSwgQHNhbXB7QEByZWFkfSBpcyBhIEBlbXBoe2dyb3VwIHRhZ30g Zm9yIGEgc2V0IG9mIHRocmVlCi10YWdzOiBAc2FtcHtAQHJlYWR9LCBAc2FtcHtAQHJlYWRfYm9v a30gYW5kIEBzYW1we0BAcmVhZF9lYm9va30uCitUaGF0IGNhbiBjb25jZXB0dWFsbHkgYmUgc2Vl biBhcyBhIGhpZXJhcmNoeSBvZiB0YWdzOgogCi1Zb3UgY2FuIGFsc28gdXNlIHRoZSBAY29kZXs6 Z3JvdXB0YWdzfSBrZXl3b3JkIGRpcmVjdGx5IHdoZW4gc2V0dGluZwotQGNvZGV7b3JnLXRhZy1h bGlzdH06CitAZXhhbXBsZQorLSBHVEQKKyAgLSBQZXJzcAorICAgIC0gVmlzaW9uCisgICAgLSBH b2FsCisgICAgLSBBT0YKKyAgICAtIFByb2plY3QKKyAgLSBDb250cm9sCisgICAgLSBDb250ZXh0 CisgICAgLSBUYXNrCitAZW5kIGV4YW1wbGUKKworWW91IGNhbiB1c2UgdGhlIEBjb2RlezpzdGFy dGdyb3VwdGFnfSwgQGNvZGV7Omdyb3VwdGFnc30gYW5kCitAY29kZXs6ZW5kZ3JvdXB0YWd9IGtl eXdvcmQgZGlyZWN0bHkgd2hlbiBzZXR0aW5nIEBjb2Rle29yZy10YWctYWxpc3R9CitkaXJlY3Rs eToKIAogQGxpc3AKLShzZXRxIG9yZy10YWctYWxpc3QgJygoOnN0YXJ0Z3JvdXAgLiBuaWwpCi0g ICAgICAgICAgICAgICAgICAgICAgKCJAQHJlYWQiIC4gbmlsKQotICAgICAgICAgICAgICAgICAg ICAgICg6Z3JvdXB0YWdzIC4gbmlsKQotICAgICAgICAgICAgICAgICAgICAgICgiQEByZWFkX2Jv b2siIC4gbmlsKQotICAgICAgICAgICAgICAgICAgICAgICgiQEByZWFkX2Vib29rIiAuIG5pbCkK LSAgICAgICAgICAgICAgICAgICAgICAoOmVuZGdyb3VwIC4gbmlsKSkpCisoc2V0cSBvcmctdGFn LWFsaXN0ICcoKDpzdGFydGdyb3VwdGFnKQorICAgICAgICAgICAgICAgICAgICAgICgiR1REIikK KyAgICAgICAgICAgICAgICAgICAgICAoOmdyb3VwdGFncykKKyAgICAgICAgICAgICAgICAgICAg ICAoIkNvbnRyb2wiKQorICAgICAgICAgICAgICAgICAgICAgICgiUGVyc3AiKQorICAgICAgICAg ICAgICAgICAgICAgICg6ZW5kZ3JvdXB0YWcpCisgICAgICAgICAgICAgICAgICAgICAgKDpzdGFy dGdyb3VwdGFnKQorICAgICAgICAgICAgICAgICAgICAgICgiQ29udHJvbCIpCisgICAgICAgICAg ICAgICAgICAgICAgKDpncm91cHRhZ3MpCisgICAgICAgICAgICAgICAgICAgICAgKCJDb250ZXh0 IikKKyAgICAgICAgICAgICAgICAgICAgICAoIlRhc2siKQorICAgICAgICAgICAgICAgICAgICAg ICg6ZW5kZ3JvdXB0YWcpKSkKIEBlbmQgbGlzcAogCi1Zb3UgY2Fubm90IG5lc3QgZ3JvdXAgdGFn cyBvciB1c2UgYSBncm91cCB0YWcgYXMgYSB0YWcgaW4gYW5vdGhlciBncm91cC4KK1RoZSB0YWdz IGluIGEgZ3JvdXAgY2FuIGJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBpZiB1c2luZyB0aGUgc2FtZSBn cm91cCBzeW50YXgKK2FzIGlzIHVzZWQgZm9yIGdyb3VwaW5nIG11dHVhbGx5IGV4Y2x1c2l2ZSB0 YWdzIHRvZ2V0aGVyOyB1c2luZyBjdXJseQorYnJhY2tldHMuCisKK0BleGFtcGxlCisjK1RBR1M6 IEB7IENvbnRleHQgOiBAQEhvbWUgQEBXb3JrIEBAQ2FsbCBAfQorQGVuZCBleGFtcGxlCisKK1do ZW4gc2V0dGluZyBAY29kZXtvcmctdGFnLWFsaXN0fSB5b3UgY2FuIHVzZSBAY29kZXs6c3RhcnRn cm91cH0gJgorQGNvZGV7OmVuZGdyb3VwfSBpbnN0ZWFkIG9mIEBjb2RlezpzdGFydGdyb3VwdGFn fSAmIEBjb2RlezplbmRncm91cHRhZ30gdG8KK21ha2UgdGhlIHRhZ3MgbXV0dWFsbHkgZXhjbHVz aXZlLgorCitGdXJ0aGVybW9yZTsgVGhlIG1lbWJlcnMgb2YgYSBAZW1waHtncm91cCB0YWd9IGNh biBhbHNvIGJlIHJlZ3VsYXIKK2V4cHJlc3Npb24sIGNyZWF0aW5nIHRoZSBwb3NzaWJpbGl0eSBv ZiBtb3JlIGR5bmFtaWMgYW5kIHJ1bGUtYmFzZWQKK3RhZy1zdHJ1Y3R1cmUuICBUaGUgcmVndWxh ciBleHByZXNzaW9ucyBpbiB0aGUgZ3JvdXAgbXVzdCBiZSBtYXJrZWQgdXAgd2l0aGluCitAeyBA fS4gIEV4YW1wbGUgdXNlLCB0byBleHBhbmQgb24gdGhlIGV4YW1wbGUgZ2l2ZW4gYWJvdmU6CisK K0BleGFtcGxlCisjK1RBR1M6IFsgVmlzaW9uIDogQHtWQC4rQH0gXQorIytUQUdTOiBbIEdvYWwg OiBAe0dALitAfSBdCisjK1RBR1M6IFsgQU9GIDogQHtBT0ZALitAfSBdCisjK1RBR1M6IFsgUHJv amVjdCA6IEB7UEAuK0B9IF0KK0BlbmQgZXhhbXBsZQorCitTZWFyY2hpbmcgZm9yIHRoZSB0YWcg QHNhbXB7UHJvamVjdH0gd2lsbCBub3cgbGlzdCBhbGwgdGFncyBhbHNvIGluY2x1ZGluZworcmVn dWxhciBleHByZXNzaW9uIG1hdGNoZXMgZm9yIEBzYW1we1BAQC4rfS4gIFNpbWlsYXIgZm9yIHRh Zy1zZWFyY2hlcyBvbgorQHNhbXB7VmlzaW9ufSwgQHNhbXB7R29hbH0gYW5kIEBzYW1we0FPRn0u ICBUaGlzIGNhbiBiZSBnb29kIGZvciBleGFtcGxlIGlmCit0YWdzIGZvciBhIGNlcnRhaW4gcHJv amVjdCBpcyB0YWdnZWQgd2l0aCBhIGNvbW1vbiBwcm9qZWN0LWlkZW50aWZpZXIsCitpLmUuIEBz YW1we1BAQDIwMTRfT3JnVGFnc30uCiAKIEBraW5kZXggQy1jIEMteCBxCiBAdmluZGV4IG9yZy1n cm91cC10YWdzCkBAIC04MTExLDcgKzgxNzUsNyBAQCBicmFjZXMuICBGb3IgZXhhbXBsZSwKIEBz YW1wezp3b3JrOn0gYW5kIGFueSB0YWcgQGl7c3RhcnRpbmd9IHdpdGggQHNhbXB7Ym9zc30uCiAK IEBjaW5kZXggZ3JvdXAgdGFncywgYXMgcmVndWxhciBleHByZXNzaW9ucwotR3JvdXAgdGFncyAo QHB4cmVme1RhZyBncm91cHN9KSBhcmUgZXhwYW5kZWQgYXMgcmVndWxhciBleHByZXNzaW9ucy4g IEUuZy4sCitHcm91cCB0YWdzIChAcHhyZWZ7VGFnIGhpZXJhcmNoeX0pIGFyZSBleHBhbmRlZCBh cyByZWd1bGFyIGV4cHJlc3Npb25zLiAgRS5nLiwKIGlmIEBzYW1wezp3b3JrOn0gaXMgYSBncm91 cCB0YWcgZm9yIHRoZSBncm91cCBAc2FtcHs6d29yazpsYWI6Y29uZjp9LCB0aGVuCiBzZWFyY2hp bmcgZm9yIEBzYW1we3dvcmt9IHdpbGwgc2VhcmNoIGZvciBAc2FtcHtAe1woPzp3b3JrXHxsYWJc fGNvbmZcKUB9fQogYW5kIHNlYXJjaGluZyBmb3IgQHNhbXB7LXdvcmt9IHdpbGwgc2VhcmNoIGZv ciBhbGwgaGVhZGxpbmVzIGJ1dCB0aG9zZSB3aXRoCi0tIAoxLjkuMQoK --001a11362a8ae8e76c05116dd448--