From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Brand Subject: Re: Structured links to headings with endless depth Date: Mon, 6 May 2019 18:34:59 +0200 Message-ID: References: <1520849353.1793.66.camel@gmail.com> <87tvtlsi2f.fsf@gmail.com> <1520851190.1793.74.camel@gmail.com> <87lgexfnl6.fsf@christianmoe.com> <1520862394.1793.83.camel@gmail.com> <87r2opcrkm.fsf@nicolasgoaziou.fr> <1520867316.1793.87.camel@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="00000000000017426e05883aaffd" Return-path: Received: from eggs.gnu.org ([209.51.188.92]:51038) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hNgaC-0005mF-42 for Emacs-orgmode@gnu.org; Mon, 06 May 2019 12:35:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hNgaA-0001Ns-Cp for Emacs-orgmode@gnu.org; Mon, 06 May 2019 12:35:16 -0400 Received: from mail-lf1-x141.google.com ([2a00:1450:4864:20::141]:43697) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hNga9-0001Mr-Sh for Emacs-orgmode@gnu.org; Mon, 06 May 2019 12:35:14 -0400 Received: by mail-lf1-x141.google.com with SMTP id u27so9355513lfg.10 for ; Mon, 06 May 2019 09:35:12 -0700 (PDT) In-Reply-To: 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" To: org-mode-email Cc: Eric S Fraga , Nicolas Goaziou , Christian Moe , ST , John Kitchin --00000000000017426e05883aaffd Content-Type: text/plain; charset="UTF-8" Hi all On Wed, Mar 14, 2018 at 7:58 AM Michael Brand wrote: > , (arbitrarily more levels upwards) > , * [...] > , * > , * > , * TODO > , * :5: > , - The tag 5 is my rating of this audio recording. > , - The audio recording is stored under the file path > , [...]/////.mp3 > , > , * TODO [...] > , - The theme is very similar to this prelude > , [[/://]]. > , * [...] > , - [...] like in this piano concert > , [[/:/]]. Despite all the valuable recommendations in this thread I implemented something simple for my very specific use case of a music database where I want self-explaining links with the already existing and complete heading structure and don't want to add any ID, CUSTOM_ID or <>. See this example: #+begin_src org ,#+STARTUP: oddeven showeverything Specs for outline path of links to a heading, any combinations allowed including none: - "/" delimits headings of adjacent levels. - A leading "/" requires matching the top level heading. - "//" delimits heading levels with 0 to n discarded heading levels between them. Demo examples: - Goes to tag 1: [[*Chopin/Prelude]] - Goes to tag 2: [[*/Prelude]] - Goes to tag 3: [[*d/c//b/a]] - Goes to tag 4: [[*d/c/b/a]] ,* Foo ,** Bach ,*** Prelude ,** Chopin ,*** Prelude :1: ,* Prelude :2: ,* d ,** c ,*** Bar ,**** Baz ,***** b ,****** a :3: ,*** b ,**** a :4: #+end_src Limitations of this simplified implementation: - Export of links with a path to a heading is not supported. - Links to a heading with "/" that existed before are broken. - There may be other issues for your use case already discussed in the current thread ( http://lists.gnu.org/archive/html/emacs-orgmode/2018-03/msg00231.html ). Due to the limitations this implementation is for private use only and not meant to be commited upstream although the format of the attached patches might imply that. Michael --00000000000017426e05883aaffd Content-Type: text/x-patch; charset="US-ASCII"; name="0001-org-get-heading-New-parameter-no-cookie.patch" Content-Disposition: attachment; filename="0001-org-get-heading-New-parameter-no-cookie.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jvcl3t7t0 RnJvbSAzYTU5NGRmYTk5NjdlZDRmZDcwYWFlMDQ1NTlkZGU3NTdmYjIxYjFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWNoYWVsIEJyYW5kIDxtaWNoYWVsLmNoLmJyYW5kQGdtYWls LmNvbT4KRGF0ZTogTW9uLCA2IE1heSAyMDE5IDE4OjE3OjUyICswMjAwClN1YmplY3Q6IFtQQVRD SCAxLzJdIG9yZy1nZXQtaGVhZGluZzogTmV3IHBhcmFtZXRlciBuby1jb29raWUKCiogbGlzcC9v bC5lbCAob3JnLWxpbmstc2VhcmNoKTogUmVtb3ZlIHJlZ2V4cHMgZm9yIGNvbW1lbnQgYW5kIGNv b2tpZS4KKiBsaXNwL29yZy5lbCAob3JnLWdldC1oZWFkaW5nOik6IE5ldyBwYXJhbWV0ZXIgbm8t Y29va2llIHVzZWQgYWJvdmUuCi0tLQogbGlzcC9vbC5lbCAgfCAxMCArKy0tLS0tLS0tCiBsaXNw L29yZy5lbCB8IDExICsrKysrKysrKy0tCiAyIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMo KyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpc3Avb2wuZWwgYi9saXNwL29sLmVs CmluZGV4IGE2Zjc2YTM5Zi4uZjViZDYzZTk2IDEwMDY0NAotLS0gYS9saXNwL29sLmVsCisrKyBi L2xpc3Avb2wuZWwKQEAgLTExMDgsMTggKzExMDgsMTIgQEAgb2YgbWF0Y2hlZCByZXN1bHQsIHdo aWNoIGlzIGVpdGhlciBgZGVkaWNhdGVkJyBvciBgZnV6enknLiIKIAkJICAoZm9ybWF0ICIlcy4q XFwoPzolc1sgXHRdXFwpPy4qJXMiCiAJCQkgIG9yZy1vdXRsaW5lLXJlZ2V4cC1ib2wKIAkJCSAg b3JnLWNvbW1lbnQtc3RyaW5nCi0JCQkgIChtYXBjb25jYXQgIydyZWdleHAtcXVvdGUgd29yZHMg Ii4rIikpKQotCQkgKGNvb2tpZS1yZSAiXFxbWzAtOV0qXFwoPzolXFx8L1swLTldKlxcKVxcXSIp Ci0JCSAoY29tbWVudC1yZSAoZm9ybWF0ICJcXGAlc1sgXHRdKyIgb3JnLWNvbW1lbnQtc3RyaW5n KSkpCisJCQkgIChtYXBjb25jYXQgIydyZWdleHAtcXVvdGUgd29yZHMgIi4rIikpKSkKIAkgICAg IChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAJICAgICAoY2F0Y2ggOmZvdW5kCiAJICAgICAgICh3 aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgdGl0bGUtcmUgbmlsIHQpCiAJCSAod2hlbiAoZXF1YWwg d29yZHMKLQkJCSAgICAgIChzcGxpdC1zdHJpbmcKLQkJCSAgICAgICAocmVwbGFjZS1yZWdleHAt aW4tc3RyaW5nCi0JCQkJY29va2llLXJlICIiCi0JCQkJKHJlcGxhY2UtcmVnZXhwLWluLXN0cmlu ZwotCQkJCSBjb21tZW50LXJlICIiIChvcmctZ2V0LWhlYWRpbmcgdCB0IHQpKSkpKQorCQkJICAg ICAgKHNwbGl0LXN0cmluZyAob3JnLWdldC1oZWFkaW5nIHQgdCB0IHQgdCkpKQogCQkgICAodGhy b3cgOmZvdW5kIHQpKSkKIAkgICAgICAgbmlsKSkpCiAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUp CmRpZmYgLS1naXQgYS9saXNwL29yZy5lbCBiL2xpc3Avb3JnLmVsCmluZGV4IDk0NzEzYTdlNS4u NDhmNzg3NGFjIDEwMDY0NAotLS0gYS9saXNwL29yZy5lbAorKysgYi9saXNwL29yZy5lbApAQCAt NjkzOCwxMiArNjkzOCwxNCBAQCBTbyB0aGlzIHdpbGwgZGVsZXRlIG9yIGFkZCBlbXB0eSBsaW5l cy4iCiAgICAgKGluc2VydCAobWFrZS1zdHJpbmcgbiA/XG4pKQogICAgIChtb3ZlLXRvLWNvbHVt biBjb2x1bW4pKSkKIAotKGRlZnVuIG9yZy1nZXQtaGVhZGluZyAoJm9wdGlvbmFsIG5vLXRhZ3Mg bm8tdG9kbyBuby1wcmlvcml0eSBuby1jb21tZW50KQorKGRlZnVuIG9yZy1nZXQtaGVhZGluZyAo Jm9wdGlvbmFsCisJCQluby10YWdzIG5vLXRvZG8gbm8tcHJpb3JpdHkgbm8tY29tbWVudCBuby1j b29raWUpCiAgICJSZXR1cm4gdGhlIGhlYWRpbmcgb2YgdGhlIGN1cnJlbnQgZW50cnksIHdpdGhv dXQgdGhlIHN0YXJzLgogV2hlbiBOTy1UQUdTIGlzIG5vbi1uaWwsIGRvbid0IGluY2x1ZGUgdGFn cy4KIFdoZW4gTk8tVE9ETyBpcyBub24tbmlsLCBkb24ndCBpbmNsdWRlIFRPRE8ga2V5d29yZHMu CiBXaGVuIE5PLVBSSU9SSVRZIGlzIG5vbi1uaWwsIGRvbid0IGluY2x1ZGUgcHJpb3JpdHkgY29v a2llLgogV2hlbiBOTy1DT01NRU5UIGlzIG5vbi1uaWwsIGRvbid0IGluY2x1ZGUgQ09NTUVOVCBz dHJpbmcuCitXaGVuIE5PLUNPT0tJRSBpcyBub24tbmlsLCBkb24ndCBpbmNsdWRlIGNvb2tpZSBz dHJpbmcuCiBSZXR1cm4gbmlsIGJlZm9yZSBmaXJzdCBoZWFkaW5nLiIKICAgKHVubGVzcyAob3Jn LWJlZm9yZS1maXJzdC1oZWFkaW5nLXApCiAgICAgKHNhdmUtZXhjdXJzaW9uCkBAIC02OTU4LDcg KzY5NjAsMTIgQEAgUmV0dXJuIG5pbCBiZWZvcmUgZmlyc3QgaGVhZGluZy4iCiAJCQkgICAocmVw bGFjZS1yZWdleHAtaW4tc3RyaW5nCiAJCQkgICAgKGV2YWwtd2hlbi1jb21waWxlCiAJCQkgICAg ICAoZm9ybWF0ICJcXGAlc1sgXHRdKyIgb3JnLWNvbW1lbnQtc3RyaW5nKSkKLQkJCSAgICAiIiBo KSkKKwkJCSAgICAiIgorCQkJICAgIChpZiBuby1jb29raWUKKwkJCQkocmVwbGFjZS1yZWdleHAt aW4tc3RyaW5nCisJCQkJICJcXFtbMC05XSpcXCg/OiVcXHwvWzAtOV0qXFwpXFxdIgorCQkJCSAi IiBoKQorCQkJICAgICAgaCkpKQogCQkJICAoaCBoKSkpCiAJICAgICAgKHRhZ3MgKGFuZCAobm90 IG5vLXRhZ3MpIChtYXRjaC1zdHJpbmcgNSkpKSkKIAkgIChtYXBjb25jYXQgIydpZGVudGl0eQot LSAKMi4yMC4xCgo= --00000000000017426e05883aaffd Content-Type: text/x-patch; charset="US-ASCII"; name="0002-org-link-search-Search-for-outline-path.patch" Content-Disposition: attachment; filename="0002-org-link-search-Search-for-outline-path.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jvcl3t8d1 RnJvbSBmZWUzNzQzNmFiYmU0YTdkNmI3OTE2MWI5MjMwZjAyZGU2ZTdkNTRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWNoYWVsIEJyYW5kIDxtaWNoYWVsLmNoLmJyYW5kQGdtYWls LmNvbT4KRGF0ZTogTW9uLCA2IE1heSAyMDE5IDE4OjE5OjQ0ICswMjAwClN1YmplY3Q6IFtQQVRD SCAyLzJdIG9yZy1saW5rLXNlYXJjaDogU2VhcmNoIGZvciBvdXRsaW5lIHBhdGgKCiogbGlzcC9v bC5lbCAob3JnLWxpbmstc2VhcmNoKTogRXh0ZXJuYWxpemUgbWF0Y2hpbmcgbG9naWMgdG8gbmV3 IGZ1bmN0aW9uCiAgb3JnLWxpbmstLWhlYWRpbmctcGF0aC1tYXRjaC1wLgogIChvcmctbGluay0t aGVhZGluZy1wYXRoLXNwbGl0KToKICAob3JnLWxpbmstLWhlYWRpbmctcGF0aC1tYXRjaC1wKTog TmV3IGZ1bmN0aW9uLgotLS0KIGxpc3Avb2wuZWwgfCA2OSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KIDEgZmlsZSBjaGFuZ2VkLCA2NiBpbnNl cnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpc3Avb2wuZWwgYi9saXNw L29sLmVsCmluZGV4IGY1YmQ2M2U5Ni4uYjc5ZWZkZjZiIDEwMDY0NAotLS0gYS9saXNwL29sLmVs CisrKyBiL2xpc3Avb2wuZWwKQEAgLTEwMzQsNyArMTAzNCwxNiBAQCBvZiBtYXRjaGVkIHJlc3Vs dCwgd2hpY2ggaXMgZWl0aGVyIGBkZWRpY2F0ZWQnIG9yIGBmdXp6eScuIgogCSAob3JpZ2luIChw b2ludCkpCiAJIChub3JtYWxpemVkIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgIlxuWyBcdF0q IiAiICIgcykpCiAJIChzdGFycmVkIChlcSAoc3RyaW5nLXRvLWNoYXIgbm9ybWFsaXplZCkgPyop KQotCSAod29yZHMgKHNwbGl0LXN0cmluZyAoaWYgc3RhcnJlZCAoc3Vic3RyaW5nIHMgMSkgcykp KQorCSAoaGVhZGluZy1wYXRoIChhbmQgc3RhcnJlZCAoc3Vic3RyaW5nIG5vcm1hbGl6ZWQgMSkp KQorCSAod29yZHMgKHNwbGl0LXN0cmluZworCQkgKGlmIHN0YXJyZWQKKwkJICAgICAocmVwbGFj ZS1yZWdleHAtaW4tc3RyaW5nICJeLiovIiAiIiBoZWFkaW5nLXBhdGgpCisJCSAgIHMpKSkKKwkg KHBhdGgtcmVzdAorCSAgKGFuZCBzdGFycmVkCisJICAgICAgIChjZHIgKG9yZy1saW5rLS1oZWFk aW5nLXBhdGgtc3BsaXQKKwkJICAgICAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nICJeLyIgIiIg aGVhZGluZy1wYXRoKSkpKSkKKwkgKHBhdGgtcm9vdGVkLXAgKGFuZCBzdGFycmVkIChlcSA/LyAo c3RyaW5nLXRvLWNoYXIgaGVhZGluZy1wYXRoKSkpKQogCSAocy1tdWx0aS1yZSAobWFwY29uY2F0 ICMncmVnZXhwLXF1b3RlIHdvcmRzICJcXCg/OlsgXHRcbl0rXFwpIikpCiAJIChzLXNpbmdsZS1y ZSAobWFwY29uY2F0ICMncmVnZXhwLXF1b3RlIHdvcmRzICJbIFx0XSsiKSkKIAkgdHlwZSkKQEAg LTExMTIsOCArMTEyMSw4IEBAIG9mIG1hdGNoZWQgcmVzdWx0LCB3aGljaCBpcyBlaXRoZXIgYGRl ZGljYXRlZCcgb3IgYGZ1enp5Jy4iCiAJICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQogCSAg ICAgKGNhdGNoIDpmb3VuZAogCSAgICAgICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkIHRpdGxl LXJlIG5pbCB0KQotCQkgKHdoZW4gKGVxdWFsIHdvcmRzCi0JCQkgICAgICAoc3BsaXQtc3RyaW5n IChvcmctZ2V0LWhlYWRpbmcgdCB0IHQgdCB0KSkpCisJCSAod2hlbiAob3JnLWxpbmstLWhlYWRp bmctcGF0aC1tYXRjaC1wCisJCQl3b3JkcyBwYXRoLXJlc3QgcGF0aC1yb290ZWQtcCkKIAkJICAg KHRocm93IDpmb3VuZCB0KSkpCiAJICAgICAgIG5pbCkpKQogICAgICAgKGJlZ2lubmluZy1vZi1s aW5lKQpAQCAtMTE2Myw2ICsxMTcyLDYwIEBAIG9mIG1hdGNoZWQgcmVzdWx0LCB3aGljaCBpcyBl aXRoZXIgYGRlZGljYXRlZCcgb3IgYGZ1enp5Jy4iCiAgICAgICAob3JnLXNob3ctY29udGV4dCAn bGluay1zZWFyY2gpKQogICAgIHR5cGUpKQogCisoZGVmdW4gb3JnLWxpbmstLWhlYWRpbmctcGF0 aC1zcGxpdCAocGF0aCkKKyAgIlNwbGl0IHRoZSBQQVRIIHN0cmluZyBhbmQgZW51bWVyYXRlIHRo ZSBoZWFkaW5ncyBieSBjb250aWd1b3VzIGdyb3Vwcy4KK0ZvciBleGFtcGxlIFwiZi9lLy9kL2Mv Yi8vYVwiCis9PiAoKFwiYVwiIC4gMCkgKFwiYlwiIC4gMCkgKFwiY1wiIC4gMSkgKFwiZFwiIC4g MikgKFwiZVwiIC4gMCkgKFwiZlwiIC4gMSkpIgorICAoYXBwbHkgIydhcHBlbmQKKwkgKG1hcGNh ciAobGFtYmRhIChjb250aWd1b3VzKQorCQkgICAobGV0KiAoKGhlYWRpbmdzIChyZXZlcnNlIChz cGxpdC1zdHJpbmcgY29udGlndW91cyAiLyIpKSkKKwkJCSAgKGVudW0gKG51bWJlci1zZXF1ZW5j ZSAwICgxLSAobGVuZ3RoIGhlYWRpbmdzKSkpKSkKKwkJICAgICAobWFwY2FyKiAjJ2NvbnMgaGVh ZGluZ3MgZW51bSkpKQorCQkgKHJldmVyc2UgKHNwbGl0LXN0cmluZyBwYXRoICIvLyIpKSkpKQor CisoZGVmdW4gb3JnLWxpbmstLWhlYWRpbmctcGF0aC1tYXRjaC1wIChjdXJyZW50IHBhdGgtcmVz dCBwYXRoLXJvb3RlZC1wKQorICAiTWF0Y2ggaGVhZGluZyBoaWVyYXJjaHkgYXQgcG9pbnQgd2l0 aCBDVVJSRU5UIGFuZCBQQVRILVJFU1QuCisKK0NVUlJFTlQgaXMgYHNwbGl0LXN0cmluZycgb2Yg dGhlIHN0cmluZyBmb3IgdGhlIHJlcXVlc3RlZCBsb3dlc3QKK2xldmVsIGhlYWRpbmcuCisKK1BB VEgtUkVTVCBpcyB0aGUgYGNkcicgb2YgYG9yZy1saW5rLS1oZWFkaW5nLXBhdGgtc3BsaXQnIG9m IHRoZQorcGF0aCBzdHJpbmcgb3JpZ2luYWxseSBzdGlsbCBpbmNsdWRpbmcgdGhlIGN1cnJlbnQg aGVhZGluZy4KK1BBVEgtUkVTVCBjYW4gYmUgbmlsIG9yIGNvbnRhaW5zIHRoZSB1cHBlciBsZXZl bCBoZWFkaW5ncyBpbgorZ3JvdXBzIGluZGljYXRlZCBieSBhbiBlbnVtZXJhdGlvbiBzdGFydGlu ZyBhdCAwLiBFdmVyeSAwCitpbmRpY2F0ZXMgdGhlIGJlZ2lubmluZyBvZiBhIG5ldyBncm91cC4g RXhhbXBsZXMgZm9yIFBBVEgtUkVTVAordmFsdWVzOiAoKFwiYVwiIC4gMSkgKFwiYlwiIC4gMikp IHdoaWNoIGlzIHRoZSBgY2RyJworb2YgKChcImN1cnJlbnRcIiAuIDApIChcImFcIiAuIDEpIChc ImJcIiAuIDIpKSBpbmRpY2F0ZXMgdGhhdAordGhlcmUgaXMgb25lIGdyb3VwIHdoaWNoIG1lYW5z IHRoYXQgaXQgbWF0Y2hlcyB0aGUgT3JnIGhpZXJhcmNoeQorYi9hL2N1cnJlbnQgYnV0IG5vdCBi L3gvYS9jdXJyZW50IG9yIGIvYS94L2N1cnJlbnQuICgoXCJhXCIgLgorMSkgKFwiYlwiIC4gMCkp IGluZGljYXRlcyB0aGF0IHRoZXJlIGFyZSB0d28gZ3JvdXBzIHNlcGFyYXRlZAorYmV0d2VlbiBh IGFuZCBiIHdoaWNoIG1lYW5zIHRoYXQgaXQgbWF0Y2hlcyBiL2EvY3VycmVudCwKK2IveC9hL2N1 cnJlbnQsIGIveC94L2EvY3VycmVudCBldGMuIHdpdGggYW55IG51bWJlciBvZiBkaXNjYXJkZWQK K2hlYWRpbmdzIHggYmV0d2VlbiB0aGUgZ3JvdXBzIGJ1dCBub3QgYi9hL3gvY3VycmVudC4gKChc ImFcIiAuCiswKSAoXCJiXCIgLiAxKSkgaW5kaWNhdGVzIHRoYXQgdGhlcmUgYXJlIHR3byBncm91 cHMgc2VwYXJhdGVkCitiZXR3ZWVuIGN1cnJlbnQgYW5kIGEgd2hpY2ggbWVhbnMgdGhhdCBpdCBt YXRjaGVzIGZvciBleGFtcGxlCitiL2EveC9jdXJyZW50LgorCitOb24tbmlsIFBBVEgtUk9PVEVE LVAgbWVhbnMgdGhhdCB0aGUgZmlyc3QgbGV2ZWwgaGVhZGluZyBpbiB0aGUKK2J1ZmZlciBtdXN0 IGJlIHBhcnQgb2YgdGhlIG1hdGNoLiIKKyAgICAgICAoc2F2ZS1leGN1cnNpb24KKwkgKGFuZCAo ZXF1YWwgY3VycmVudCAoc3BsaXQtc3RyaW5nIChvcmctZ2V0LWhlYWRpbmcgdCB0IHQgdCB0KSkp CisJICAgICAgKG9yIChub3QgcGF0aC1yZXN0KQorCQkgIChldmVyeSAobGFtYmRhIChoZWFkaW5n KQorCQkJICAgKGxldCAobWF0Y2gpCisJCQkgICAgICh3aGlsZSAoYW5kIChvcmctdXAtaGVhZGlu Zy1zYWZlKQorCQkJCQkgKG5vdCAoc2V0cSBtYXRjaAorCQkJCQkJICAgIChlcXVhbCAoc3BsaXQt c3RyaW5nCisJCQkJCQkJICAgIChjYXIgaGVhZGluZykpCisJCQkJCQkJICAgKHNwbGl0LXN0cmlu ZworCQkJCQkJCSAgICAob3JnLWdldC1oZWFkaW5nCisJCQkJCQkJICAgICB0IHQgdCB0IHQpKSkp KQorCQkJCQkgKHplcm9wIChjZHIgaGVhZGluZykpKSkKKwkJCSAgICAgbWF0Y2gpKQorCQkJIHBh dGgtcmVzdCkpCisJICAgICAgKG9yIChub3QgcGF0aC1yb290ZWQtcCkKKwkJICAoZXEgMSAob3Jn LW91dGxpbmUtbGV2ZWwpKSkpKSkKKwogKGRlZnVuIG9yZy1saW5rLWhlYWRpbmctc2VhcmNoLXN0 cmluZyAoJm9wdGlvbmFsIHN0cmluZykKICAgIk1ha2Ugc2VhcmNoIHN0cmluZyBmb3IgdGhlIGN1 cnJlbnQgaGVhZGxpbmUgb3IgU1RSSU5HLiIKICAgKGxldCAoKHMgKG9yIHN0cmluZwotLSAKMi4y MC4xCgo= --00000000000017426e05883aaffd--