From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: =?UTF-8?Q?Jo=C3=A3o_Paulo_Labegalini_de_Carvalho?= Newsgroups: gmane.emacs.devel Subject: Re: Initial fontification in sh-mode with tree-sittter Date: Wed, 2 Nov 2022 12:55:31 -0600 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="00000000000035063405ec81634d" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="10507"; mail-complaints-to="usenet@ciao.gmane.io" To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Nov 02 19:56:16 2022 Return-path: Envelope-to: ged-emacs-devel@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 1oqIuN-0002WJ-7q for ged-emacs-devel@m.gmane-mx.org; Wed, 02 Nov 2022 19:56:15 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oqItv-0004D2-RR; Wed, 02 Nov 2022 14:55:47 -0400 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 1oqItu-0004Ct-Ic for emacs-devel@gnu.org; Wed, 02 Nov 2022 14:55:46 -0400 Original-Received: from mail-oi1-x22c.google.com ([2607:f8b0:4864:20::22c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oqIts-0006Uf-D9 for emacs-devel@gnu.org; Wed, 02 Nov 2022 14:55:46 -0400 Original-Received: by mail-oi1-x22c.google.com with SMTP id m204so8427562oib.6 for ; Wed, 02 Nov 2022 11:55:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=24M61zlO/XSqdfBe+YaUWoDS8hIaTgeMDSWajySZe8E=; b=QP1e7JbX1SNVdZwJvlIjwtS0JjKv0icW9NheX0GHpDXvFE9H/3zXFlWGlPWkn735TG h1SuGqVjIZUKW6RweP0VRYUaKbRi+ra81Ftps9DQoi98oEiybPXGcNkbmoCwSBe0JsZX otVwan1jCVhxozAqaAP0kZuNET3sWhgt3+4nu3IEpUthTm+kdkdTjeFs4tW++xPV7U27 3ZXDAHgvTIml0U0833i6TMNDOjJsvESkdyQxwV+1CBsJ4wPKxwoUeI1pLS/8N0FlPd6d L+76tlUnXPBw8jO80ZIeaJiQfp3rNUxM8QgcMP6A+RwkrcBuJEKLfJkrmzBh/2x+xtEK bOSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=24M61zlO/XSqdfBe+YaUWoDS8hIaTgeMDSWajySZe8E=; b=i1pBDhdtnNOt91n9V0VyKh38eTiVk4eA5aKtKxvIHEjLac1CwUCSRmy0cps7NmvRvY IBuCp5sIu086APZg0bEo6xfWhYAb3KGFwtRPf64Nchn1ahOtvEDG8QNjsRa8JHUgGNvV dludMSgZlvaXMbFftlvnLvwB126BwZG4JVWlEm0N0sKq0Dj/ihU2Q5Qei4nIGkhbJloI Nx1LFM90xAW+aNWRwkqgdRJ3kOOMGGdn0jNIOD+ke3BpN5WeUPI3R+16jKN7KCizvnBK SQ8OdXXLCCl5R0uOt92k94gZgJC6J+Sl4omo6j3Uf2Bz6cmWqqCiELThscsbGYD8ZKZB Nrvg== X-Gm-Message-State: ACrzQf3Gvrx4BvCrI9JZjeM1ngaAIJPSgjuxnssJbsUxGHnBa9l2ku7m uF88YbQQAkQa9tQwsRoFYsZXTvU4zIXSuKdEnEt+/g6L X-Google-Smtp-Source: AMsMyM46s3jlQMa58zQglsen8XTlCyF6s7SrTM8SarmAQwJfpEwN/+aNxTLtIWSi32SUDZ/jha4P988CQc/LMV6iRAA= X-Received: by 2002:a05:6808:1187:b0:353:a617:6acd with SMTP id j7-20020a056808118700b00353a6176acdmr14416011oil.105.1667415342901; Wed, 02 Nov 2022 11:55:42 -0700 (PDT) In-Reply-To: Received-SPF: pass client-ip=2607:f8b0:4864:20::22c; envelope-from=jaopaulolc@gmail.com; helo=mail-oi1-x22c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: "Emacs-devel" Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:299036 Archived-At: --00000000000035063405ec81634d Content-Type: multipart/alternative; boundary="00000000000035063205ec81634b" --00000000000035063205ec81634b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable I missed the update that adds override as the last argument of the capture function. Fixed now. On Wed, Nov 2, 2022 at 12:22 PM Jo=C3=A3o Paulo Labegalini de Carvalho < jaopaulolc@gmail.com> wrote: > Here is another version of the path. This has the queries separated into > language related terms and groups them into lists of features. > > Looking forward to your feedback. > > Thanks. > > On Thu, Oct 27, 2022 at 4:01 PM Jo=C3=A3o Paulo Labegalini de Carvalho < > jaopaulolc@gmail.com> wrote: > >> Hi everyone, >> >> Please find the patch for enabling fontification in sh-mode (currently >> only for bash) using tree-sitter. >> >> I welcome all comments and suggestions to improve the patch. >> >> I noticed a weird behavior with heredocs. Take the code below: >> >> echo <> This is a here document. >> EOF >> echo "Done." >> >> My patch correctly fontifies the code above, but if I kill the whole lin= e >> with the "This is a here document." text, then the sh-heredoc face bleed= s >> out and all the subsequent comments get fontified as part of the heredoc= . >> >> A similar behavior happens if tree-sitter is not enabled, if the heredoc >> is empty then all subsequent commands are fontified as heredoc. However,= as >> soon as anything is added to the heredoc, then everything goes back to t= he >> correct fontification. >> >> Such "refreshing" does not happen with tree-sitter enabled, but if I >> execute M-x sh-mode then the buffer gets refreshed and everything looks >> good. >> >> What am I doing wrong? >> >> -- >> Jo=C3=A3o Paulo L. de Carvalho >> Ph.D Computer Science | IC-UNICAMP | Campinas , SP - Brazil >> Postdoctoral Research Fellow | University of Alberta | Edmonton, AB - >> Canada >> joao.carvalho@ic.unicamp.br >> joao.carvalho@ualberta.ca >> > > > -- > Jo=C3=A3o Paulo L. de Carvalho > Ph.D Computer Science | IC-UNICAMP | Campinas , SP - Brazil > Postdoctoral Research Fellow | University of Alberta | Edmonton, AB - > Canada > joao.carvalho@ic.unicamp.br > joao.carvalho@ualberta.ca > --=20 Jo=C3=A3o Paulo L. de Carvalho Ph.D Computer Science | IC-UNICAMP | Campinas , SP - Brazil Postdoctoral Research Fellow | University of Alberta | Edmonton, AB - Canad= a joao.carvalho@ic.unicamp.br joao.carvalho@ualberta.ca --00000000000035063205ec81634b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
I missed the update that adds override as the last argumen= t=C2=A0of the capture function. Fixed now.

On Wed, Nov 2, 2022 at 12:22 PM J= o=C3=A3o Paulo Labegalini de Carvalho <jaopaulolc@gmail.com> wrote:
Here is another version=C2=A0of= the path. This has=C2=A0the queries separated into language related terms = and groups them into lists of features.

Looking forward to=C2=A0your= feedback.

Thanks.

On Thu, Oct 27, 2022 at 4:01 PM Jo=C3=A3o Paulo La= begalini de Carvalho <jaopaulolc@gmail.com> wrote:
Hi everyone,

Please find the patch for enabling fontification in sh-mode (currently on= ly=C2=A0for bash) using tree-sitter.

I welcome all comments and sugg= estions to improve the patch.

I noticed a weird behavior with heredo= cs. Take the code below:

echo &l= t;<EOF
This is a here document= .
EOF
echo "Done."

My patch correctly=C2= =A0fontifies the code above, but if I kill the whole line with the "Th= is is a here document." text, then the sh-heredoc face bleeds out and = all the subsequent comments get fontified as part of the heredoc.

A = similar behavior happens if tree-sitter is not enabled, if the heredoc is e= mpty then all subsequent commands are fontified as heredoc. However, as soo= n as anything is added to the heredoc, then everything goes back to the cor= rect fontification.=C2=A0

Such "refreshing" does not happe= n with tree-sitter enabled, but if I execute M-x s= h-mode then the buffer gets refreshed and everything looks good.
=
What am I doing wrong?

--
Jo=C3=A3o Paulo L. de Ca= rvalho
Ph.D Computer Science | =C2=A0IC-UNICAMP | Campinas , SP - Brazil=
Postdoctoral Research Fellow | University of Alberta | Edmonton, AB - C= anada


--
Jo=C3=A3o Paulo L. de Carval= ho
Ph.D Computer Science | =C2=A0IC-UNICAMP | Campinas , SP - Brazil
= Postdoctoral Research Fellow | University of Alberta | Edmonton, AB - Canad= a


--
Jo= =C3=A3o Paulo L. de Carvalho
Ph.D Computer Science | =C2=A0IC-UNICAMP | = Campinas , SP - Brazil
Postdoctoral Research Fellow | University of Albe= rta | Edmonton, AB - Canada
--00000000000035063205ec81634b-- --00000000000035063405ec81634d Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Initial-fontification-in-sh-mode-with-tree-sitter.patch" Content-Disposition: attachment; filename="0001-Initial-fontification-in-sh-mode-with-tree-sitter.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_la0019ap0 RnJvbSBhMzA5MDM3NThjMmM3NzZmZDdlMWYwM2U4ZjcxYTVhMTJiYzAwODYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sm89QzM9QTNvPTIwUD0yRT0yMEw9MkU9MjBk ZT0yMENhcnZhbGhvPz0KIDxqYW9wYXVsb2xjQGdtYWlsLmNvbT4KRGF0ZTogVGh1LCAyNyBPY3Qg MjAyMiAxNTo0NTo1NiAtMDYwMApTdWJqZWN0OiBbUEFUQ0hdIEluaXRpYWwgZm9udGlmaWNhdGlv biBpbiBzaC1tb2RlIHdpdGggdHJlZS1zaXR0ZXIKCi0tLQogbGlzcC9wcm9nbW9kZXMvc2gtc2Ny aXB0LmVsIHwgMTUzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQogMSBmaWxl IGNoYW5nZWQsIDE0MiBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9saXNwL3Byb2dtb2Rlcy9zaC1zY3JpcHQuZWwgYi9saXNwL3Byb2dtb2Rlcy9zaC1zY3JpcHQu ZWwKaW5kZXggNTU4YjYyYjIwYS4uZjE3NGNhNzcxNCAxMDA2NDQKLS0tIGEvbGlzcC9wcm9nbW9k ZXMvc2gtc2NyaXB0LmVsCisrKyBiL2xpc3AvcHJvZ21vZGVzL3NoLXNjcmlwdC5lbApAQCAtMTQ4 LDYgKzE0OCw3IEBACiAgIChyZXF1aXJlICdsZXQtYWxpc3QpCiAgIChyZXF1aXJlICdzdWJyLXgp KQogKHJlcXVpcmUgJ2V4ZWN1dGFibGUpCisocmVxdWlyZSAndHJlZXNpdCkKIAogKGF1dG9sb2Fk ICdjb21pbnQtY29tcGxldGlvbi1hdC1wb2ludCAiY29taW50IikKIChhdXRvbG9hZCAnY29taW50 LWZpbGVuYW1lLWNvbXBsZXRpb24gImNvbWludCIpCkBAIC0xNTM0LDEzICsxNTM1LDYgQEAgc2gt bW9kZQogICA7OyB3ZSBjYW4ndCBsb29rIGlmIHByZXZpb3VzIGxpbmUgZW5kZWQgd2l0aCBgXCcK ICAgKHNldHEtbG9jYWwgY29taW50LXByb21wdC1yZWdleHAgIl5bIFx0XSoiKQogICAoc2V0cS1s b2NhbCBpbWVudS1jYXNlLWZvbGQtc2VhcmNoIG5pbCkKLSAgKHNldHEgZm9udC1sb2NrLWRlZmF1 bHRzCi0JYCgoc2gtZm9udC1sb2NrLWtleXdvcmRzCi0JICAgc2gtZm9udC1sb2NrLWtleXdvcmRz LTEgc2gtZm9udC1sb2NrLWtleXdvcmRzLTIpCi0JICBuaWwgbmlsCi0JICAoKD8vIC4gInciKSAo P34gLiAidyIpICg/LiAuICJ3IikgKD8tIC4gInciKSAoP18gLiAidyIpKSBuaWwKLQkgIChmb250 LWxvY2stc3ludGFjdGljLWZhY2UtZnVuY3Rpb24KLQkgICAuICwjJ3NoLWZvbnQtbG9jay1zeW50 YWN0aWMtZmFjZS1mdW5jdGlvbikpKQogICAoc2V0cS1sb2NhbCBzeW50YXgtcHJvcGVydGl6ZS1m dW5jdGlvbiAjJ3NoLXN5bnRheC1wcm9wZXJ0aXplLWZ1bmN0aW9uKQogICAoYWRkLWhvb2sgJ3N5 bnRheC1wcm9wZXJ0aXplLWV4dGVuZC1yZWdpb24tZnVuY3Rpb25zCiAgICAgICAgICAgICAjJ3N5 bnRheC1wcm9wZXJ0aXplLW11bHRpbGluZSAnYXBwZW5kICdsb2NhbCkKQEAgLTE1ODcsNyArMTU4 MSwyOCBAQCBzaC1tb2RlCiAgICBuaWwgbmlsKQogICAoYWRkLWhvb2sgJ2ZseW1ha2UtZGlhZ25v c3RpYy1mdW5jdGlvbnMgIydzaC1zaGVsbGNoZWNrLWZseW1ha2UgbmlsIHQpCiAgIChhZGQtaG9v ayAnaGFjay1sb2NhbC12YXJpYWJsZXMtaG9vawotICAgICMnc2gtYWZ0ZXItaGFjay1sb2NhbC12 YXJpYWJsZXMgbmlsIHQpKQorICAgICMnc2gtYWZ0ZXItaGFjay1sb2NhbC12YXJpYWJsZXMgbmls IHQpCisKKyAgKGNvbmQKKyAgIDs7IFRyZWUtc2l0dGVyCisgICAoKHRyZWVzaXQtcmVhZHktcCAn c2gtbW9kZSBzaC1zaGVsbCkKKyAgICAoc2V0cS1sb2NhbCBmb250LWxvY2sta2V5d29yZHMtb25s eSB0KQorICAgIChzZXRxLWxvY2FsIHRyZWVzaXQtZm9udC1sb2NrLWZlYXR1cmUtbGlzdAorICAg ICAgICAgICAgICAgICcoKGNvbW1lbnRzIGZ1bmN0aW9ucyBzdHJpbmdzIGhlcmVkb2NzKQorICAg ICAgICAgICAgICAgICAgKHZhcmlhYmxlcyBrZXl3b3JkcyBjb21tYW5kcyBkZWNsLWNvbW1hbmRz KQorICAgICAgICAgICAgICAgICAgKGNvbnN0YW50cyBvcGVyYXRvcnMgYnVpbHRpbi12YXJpYWJs ZXMpKSkKKyAgICAoc2V0cS1sb2NhbCB0cmVlc2l0LWZvbnQtbG9jay1zZXR0aW5ncworICAgICAg ICAgICAgICAgIHNoLW1vZGUtLXRyZWVzaXQtc2V0dGluZ3MpCisgICAgKHRyZWVzaXQtbWFqb3It bW9kZS1zZXR1cCkpCisgICA7OyBFbGlzcC4KKyAgICh0CisgICAgKHNldHEgZm9udC1sb2NrLWRl ZmF1bHRzCisgICAgICAgICAgYCgoc2gtZm9udC1sb2NrLWtleXdvcmRzCisgICAgICAgICAgICAg c2gtZm9udC1sb2NrLWtleXdvcmRzLTEgc2gtZm9udC1sb2NrLWtleXdvcmRzLTIpCisgICAgICAg ICAgICBuaWwgbmlsCisgICAgICAgICAgICAoKD8vIC4gInciKSAoP34gLiAidyIpICg/LiAuICJ3 IikgKD8tIC4gInciKSAoP18gLiAidyIpKSBuaWwKKyAgICAgICAgICAgIChmb250LWxvY2stc3lu dGFjdGljLWZhY2UtZnVuY3Rpb24KKyAgICAgICAgICAgICAuICwjJ3NoLWZvbnQtbG9jay1zeW50 YWN0aWMtZmFjZS1mdW5jdGlvbikpKSkpKQogCiA7OzsjIyNhdXRvbG9hZAogKGRlZmFsaWFzICdz aGVsbC1zY3JpcHQtbW9kZSAnc2gtbW9kZSkKQEAgLTMxOTEsNiArMzIwNiwxMjIgQEAgc2gtc2hl bGxjaGVjay1mbHltYWtlCiAgICAgICAocHJvY2Vzcy1zZW5kLXJlZ2lvbiBzaC0tc2hlbGxjaGVj ay1wcm9jZXNzIChwb2ludC1taW4pIChwb2ludC1tYXgpKQogICAgICAgKHByb2Nlc3Mtc2VuZC1l b2Ygc2gtLXNoZWxsY2hlY2stcHJvY2VzcykpKSkKIAotKHByb3ZpZGUgJ3NoLXNjcmlwdCkKLQot Ozs7IHNoLXNjcmlwdC5lbCBlbmRzIGhlcmUKKzs7OyBUcmVlLXNpdHRlciBmb250LWxvY2sKKwor KGRlZnZhciBzaC1tb2RlLS10cmVlc2l0LW9wZXJhdG9ycworICAnKCJ8IiAifCYiICJ8fCIgIiYm IiAiPiIgIj4+IiAiPCIgIjw8IiAiPDwtIiAiPDw8IiAiPT0iICIhPSIgIjsiCisgICAgIjs7IiAi OyYiICI7OyYiKQorICAiTGlzdCBvZiBgc2gtbW9kZScgb3BlcmF0b3IgdG8gZm9udGlmeSIpCisK KyhkZWZ2YXIgc2gtbW9kZS0tdHJlZXNpdC1rZXl3b3JkcworICAnKCJjYXNlIiAiZG8iICJkb25l IiAiZWxpZiIgImVsc2UiICJlc2FjIiAiZXhwb3J0IiAiZmkiICJmb3IiCisgICAgImZ1bmN0aW9u IiAiaWYiICJpbiIgInVuc2V0IiAid2hpbGUiICJ0aGVuIikKKyAgIk1pbmltYWwgbGlzdCBvZiBr ZXl3b3JkcyB0aGF0IGJlbG9uZyB0byB0cmVlLXNpdHRlci1iYXNoJ3MgZ3JhbW1hci4KKworU29t ZSByZXNlcnZlZCB3b3JkcyBhcmUgbm90IHJlY29nbml6ZSB0byBrZWVwIHRoZSBncmFtbWFyCitz aW1wbGVyLiBUaG9zZSBhcmUgaWRlbnRpZmllZCB3aXRoIHJlZ2V4LWJhc2VkIGZpbHRlcmVkIHF1 ZXJpZXMuCisKK1NlZSBgc2gtbW9kZS0tdHJlZXNpdC1vdGhlci1rZXl3b3JkcycgYW5kCitgc2gt bW9kZS0tdHJlZXNpdC1zZXR0aW5ncycpLiIpCisKKyhkZWZ1biBzaC1tb2RlLS10cmVlc2l0LW90 aGVyLWtleXdvcmRzICgpCisgICJSZXR1cm5zIGEgbGlzdCBgb3RoZXJzJyBvZiBrZXkvcmVzZXJ2 ZWQgd29yZHMgdG8gYmUgZm9udGlmaWVkIHdpdGgKK3JlZ2V4LWJhc2VkIHF1ZXJpZXMgYXMgdGhl eSBhcmUgbm90IHBhcnQgb2YgdHJlZS1zaXR0ZXItYmFzaCdzCitncmFtbWFyLgorCitTZWUgYHNo LW1vZGUtLXRyZWVzaXQtb3RoZXIta2V5d29yZHMnIGFuZAorYHNoLW1vZGUtLXRyZWVzaXQtc2V0 dGluZ3MnKS4iCisgIChsZXQgKChtaW5pbWFsIHNoLW1vZGUtLXRyZWVzaXQta2V5d29yZHMpCisg ICAgICAgIChhbGwgKGFwcGVuZCAoc2gtZmVhdHVyZSBzaC1sZWFkaW5nLWtleXdvcmRzKQorICAg ICAgICAgICAgICAgICAgICAgKHNoLWZlYXR1cmUgc2gtb3RoZXIta2V5d29yZHMpKSkKKyAgICAg ICAgKG90aGVycykpCisgICAgKGRvbGlzdCAoa2V5d29yZCBhbGwgb3RoZXJzKQorICAgICAgKGlm IChub3QgKG1lbWJlciBrZXl3b3JkIG1pbmltYWwpKQorICAgICAgICAgIChzZXRxIG90aGVycyAo Y29ucyBrZXl3b3JkIG90aGVycykpKSkpKQorCisoZGVmdW4gc2gtbW9kZS0tdHJlZXNpdC1mb250 aWZ5LWRlY2wtY29tbWFuZC1uYW1lIChfYmVnIF9lbmQgbm9kZSkKKyAgIkZvbnRpZmllcyBvbmx5 IHRoZSBuYW1lIG9mIGRlY2xhcmF0aW9uX2NvbW1hbmQgbm9kZXMuCisKK1RoaXMgaXMgdXNlZCBp bnN0ZWFkIG9mIGBmb250LWxvY2stYnVpbHRpb24tZmFjZScgZGlyZWN0bHkgYmVjYXVzZQorb3Ro ZXJ3aXNlIHRoZSB3aG9sZSBjb21tYW5kLCBpbmNsdWRpbmcgdGhlIHZhcmlhYmxlIGFzc2lnbm1l bnQgcGFydCwKK2lzIGZvbnRpZmllZCB3aXRoIHdpdGggYGZvbnQtbG9jay1idWlsdGluLWZhY2Un LiBBbiBhbHRlcm5hdGl2ZSB0bwordGhpcyB3b3VsZCBiZSB0byBkZWNsYXJhdGlvbl9jb21tYW5k IG5vZGVzIHRvIGhhdmUgYSBgbmFtZTonIGZpZWxkLiIKKyAgKGxldCogKChtYXliZS1kZWNsLWNt ZCAodHJlZXNpdC1ub2RlLXBhcmVudCBub2RlKSkKKyAgICAgICAgIChub2RlLXR5cGUgKHRyZWVz aXQtbm9kZS10eXBlIG1heWJlLWRlY2wtY21kKSkpCisgICAgKHdoZW4gKHN0cmluZz0gbm9kZS10 eXBlICJkZWNsYXJhdGlvbl9jb21tYW5kIikKKyAgICAgIChsZXQqICgobmFtZS1ub2RlIChjYXIg KHRyZWVzaXQtbm9kZS1jaGlsZHJlbiBtYXliZS1kZWNsLWNtZCkpKQorICAgICAgICAgICAgIChu YW1lLWJlZyAodHJlZXNpdC1ub2RlLXN0YXJ0IG5hbWUtbm9kZSkpCisgICAgICAgICAgICAgKG5h bWUtZW5kICh0cmVlc2l0LW5vZGUtZW5kIG5hbWUtbm9kZSkpKQorICAgICAgICAocHV0LXRleHQt cHJvcGVydHkgbmFtZS1iZWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUtZW5kCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFjZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgZm9udC1sb2NrLWJ1aWx0aW4tZmFjZSkpKSkpCisKKyhkZWZ2YXIgc2gtbW9kZS0tdHJlZXNp dC1zZXR0aW5ncworICAodHJlZXNpdC1mb250LWxvY2stcnVsZXMKKyAgIDpmZWF0dXJlICdjb21t ZW50cworICAgOmxhbmd1YWdlIHNoLXNoZWxsCisgICAnKChjb21tZW50KSBAZm9udC1sb2NrLWNv bW1lbnQtZmFjZSkKKyAgIDpmZWF0dXJlICdmdW5jdGlvbnMKKyAgIDpsYW5ndWFnZSBzaC1zaGVs bAorICAgJygoZnVuY3Rpb25fZGVmaW5pdGlvbiBuYW1lOiAod29yZCkgQGZvbnQtbG9jay1mdW5j dGlvbi1uYW1lLWZhY2UpKQorICAgOmZlYXR1cmUgJ3N0cmluZ3MKKyAgIDpsYW5ndWFnZSBzaC1z aGVsbAorICAgJyhbKHN0cmluZykgKHJhd19zdHJpbmcpXSBAZm9udC1sb2NrLXN0cmluZy1mYWNl KQorICAgOmZlYXR1cmUgJ2hlcmVkb2NzCisgICA6bGFuZ3VhZ2Ugc2gtc2hlbGwKKyAgICcoWyho ZXJlZG9jX3N0YXJ0KSAoaGVyZWRvY19ib2R5KV0gQHNoLWhlcmVkb2MpCisgICA6ZmVhdHVyZSAn dmFyaWFibGVzCisgICA6bGFuZ3VhZ2Ugc2gtc2hlbGwKKyAgICcoKHZhcmlhYmxlX25hbWUpIEBm b250LWxvY2stdmFyaWFibGUtbmFtZS1mYWNlKQorICAgOmZlYXR1cmUgJ2tleXdvcmRzCisgICA6 bGFuZ3VhZ2Ugc2gtc2hlbGwKKyAgIGAoOzsga2V5d29yZHMKKyAgICAgWyAsQHNoLW1vZGUtLXRy ZWVzaXQta2V5d29yZHMgXSBAZm9udC1sb2NrLWtleXdvcmQtZmFjZQorICAgICA7OyByZXNlcnZl ZCB3b3JkcworICAgICAoY29tbWFuZF9uYW1lCisgICAgICAoKHdvcmQpIEBmb250LWxvY2sta2V5 d29yZC1mYWNlCisgICAgICAgKDptYXRjaAorICAgICAgICAsKHJ4LXRvLXN0cmluZworICAgICAg ICAgICAgYChzZXEgYm9sCisgICAgICAgICAgICAgICAgICAob3IgLEAoc2gtbW9kZS0tdHJlZXNp dC1vdGhlci1rZXl3b3JkcykpCisgICAgICAgICAgICAgICAgICBlb2wpKQorICAgICAgICBAZm9u dC1sb2NrLWtleXdvcmQtZmFjZSkpKSkKKyAgIDpmZWF0dXJlICdjb21tYW5kcworICAgOmxhbmd1 YWdlIHNoLXNoZWxsCisgICBgKDs7IGZ1bmN0aW9uL25vbi1idWlsdGluIGNvbW1hbmQgY2FsbHMK KyAgICAgKGNvbW1hbmRfbmFtZSAod29yZCkgQGZvbnQtbG9jay1mdW5jdGlvbi1uYW1lLWZhY2Up CisgICAgIDs7IGJ1aWx0aW4gY29tbWFuZHMKKyAgICAgKGNvbW1hbmRfbmFtZQorICAgICAgKCh3 b3JkKSBAZm9udC1sb2NrLWJ1aWx0aW4tZmFjZQorICAgICAgICg6bWF0Y2ggLChsZXQgKChidWls dGlucworICAgICAgICAgICAgICAgICAgICAgICAoc2gtZmVhdHVyZSBzaC1idWlsdGlucykpKQor ICAgICAgICAgICAgICAgICAgKHJ4LXRvLXN0cmluZworICAgICAgICAgICAgICAgICAgIGAoc2Vx IGJvbAorICAgICAgICAgICAgICAgICAgICAgICAgIChvciAsQGJ1aWx0aW5zKQorICAgICAgICAg ICAgICAgICAgICAgICAgIGVvbCkpKQorICAgICAgICAgICAgICAgQGZvbnQtbG9jay1idWlsdGlu LWZhY2UpKSkpCisgICA6ZmVhdHVyZSAnZGVjbC1jb21tYW5kcworICAgOmxhbmd1YWdlIHNoLXNo ZWxsCisgICAnKDs7IGRlY2xhcmF0aW9uIGNvbW1hbmRzCisgICAgIChkZWNsYXJhdGlvbl9jb21t YW5kIF8gQHNoLW1vZGUtLXRyZWVzaXQtZm9udGlmeS1jb21tYW5kLW5hbWUpKQorICAgOmZlYXR1 cmUgJ2NvbnN0YW50cworICAgOmxhbmd1YWdlIHNoLXNoZWxsCisgICAnKChjYXNlX2l0ZW0gdmFs dWU6ICh3b3JkKSBAZm9udC1sb2NrLWNvbnN0YW50LWZhY2UpCisgICAgIChmaWxlX2Rlc2NyaXB0 b3IpIEBmb250LWxvY2stY29uc3RhbnQtZmFjZSkKKyAgIDpmZWF0dXJlICdvcGVyYXRvcnMKKyAg IDpsYW5ndWFnZSBzaC1zaGVsbAorICAgYChbICxAc2gtbW9kZS0tdHJlZXNpdC1vcGVyYXRvcnMg XSBAZm9udC1sb2NrLWJ1aWx0aW4tZmFjZSkKKyAgIDpmZWF0dXJlICdidWlsdGluLXZhcmlhYmxl cworICAgOmxhbmd1YWdlIHNoLXNoZWxsCisgICBgKCgoc3BlY2lhbF92YXJpYWJsZV9uYW1lKSBA Zm9udC1sb2NrLWJ1aWx0aW4tZmFjZQorICAgICAgKDptYXRjaCAsKGxldCAoKGJ1aWx0aW4tdmFy cyAoc2gtZmVhdHVyZSBzaC12YXJpYWJsZXMpKSkKKyAgICAgICAgICAgICAgICAgKHJ4LXRvLXN0 cmluZworICAgICAgICAgICAgICAgICAgYChzZXEgYm9sCisgICAgICAgICAgICAgICAgICAgICAg ICAob3IgLEBidWlsdGluLXZhcnMpCisgICAgICAgICAgICAgICAgICAgICAgICBlb2wpKSkKKyAg ICAgICAgICAgICAgQGZvbnQtbG9jay1idWlsdGluLWZhY2UpKSkpCisgICJUcmVlLXNpdHRlciBm b250LWxvY2sgc2V0dGluZ3MgZm9yIGBzaC1tb2RlJy4iKQorCisocHJvdmlkZSAnc2gtbW9kZSkK Kzs7OyBzaC1tb2RlLmVsIGVuZHMgaGVyZQotLSAKMi4zMS4xCgo= --00000000000035063405ec81634d--