From mboxrd@z Thu Jan 1 00:00:00 1970 From: "numbchild@gmail.com" Subject: Re: Add ob-sclang.el for sclang Org-mode babel support in contrib/ Date: Thu, 15 Jun 2017 19:14:58 +0800 Message-ID: References: <87ink4z27l.fsf@nicolasgoaziou.fr> <87y3suis4y.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="001a11478d904c171f0551fdc9f6" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:47304) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dLSkP-0004r4-Fa for emacs-orgmode@gnu.org; Thu, 15 Jun 2017 07:15:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dLSkM-0006fP-UT for emacs-orgmode@gnu.org; Thu, 15 Jun 2017 07:15:33 -0400 In-Reply-To: <87y3suis4y.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" To: Nicolas Goaziou Cc: Bastien Guerry , Org-mode --001a11478d904c171f0551fdc9f6 Content-Type: multipart/alternative; boundary="001a11478d904c171b0551fdc9f4" --001a11478d904c171b0551fdc9f4 Content-Type: text/plain; charset="UTF-8" Here is the patch #+BEGIN_SRC diff >From 8bea0293ae22046bd4878a0ef9add5acd074bfde Mon Sep 17 00:00:00 2001 From: stardiviner Date: Thu, 8 Jun 2017 18:24:53 +0800 Subject: [PATCH] add ob-sclang for sclang Org-mode babel support --- contrib/lisp/ob-sclang.el | 102 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 contrib/lisp/ob-sclang.el diff --git a/contrib/lisp/ob-sclang.el b/contrib/lisp/ob-sclang.el new file mode 100644 index 000000000..763799533 --- /dev/null +++ b/contrib/lisp/ob-sclang.el @@ -0,0 +1,102 @@ +;;; ob-sclang.el --- SCLang support for Org-mode Babel -*- lexical-binding: t; -*- +;;; -*- coding: utf-8 -*- + +;; Copyright (C) 2011-2017 Free Software Foundation, Inc. + +;; Authors: stardiviner +;; Package-Version: 0.1 +;; Keywords: babel sclang + +;; This file is not part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Commentary: + +;; `ob-sclang' requires `sclang-interp' from SuperCollider. +;; Usually SuperCollider dependencies for Emacs are at /usr/share/emacs/site-lisp/SuperCollider/ +;; You can install SuperCollider following this article: +;; https://github.com/supercollider/supercollider#building-the-source-code + +;; Usage: + +;; Support to evaluate sclang Org-mode src block with function `sclang-eval-string'. + +;; For example: + +;; #+BEGIN_SRC sclang :results none +;; "Hello World".postln; +;; #+END_SRC +;; +;; *NOTE* Temporary output to org-babel result output is not supported. +;; Because `sclang-eval-string' will send output to Sclang Post Buffer. +;; And command line `sclang' execute will not automatically stop after finished execution. +;; +;; #+BEGIN_SRC sclang :results none +;; // modulate a sine frequency and a noise amplitude with another sine +;; // whose frequency depends on the horizontal mouse pointer position +;; { +;; var x = SinOsc.ar(MouseX.kr(1, 100)); +;; SinOsc.ar(300 * x + 800, 0, 0.1) +;; + +;; PinkNoise.ar(0.1 * x + 0.1) +;; }.play; +;; #+END_SRC + + +;;; Code: +;;; ---------------------------------------------------------------------------- +(require 'org) +(require 'ob) + +(require 'sclang-interp) + +(defgroup ob-sclang nil + "org-mode blocks for SuperCollider SCLang." + :group 'org) + +;;;###autoload +(defun org-babel-execute:sclang (body params) + "Org-mode Babel sclang hook for evaluate `BODY' with `PARAMS'." + (unless (or (equal (buffer-name) sclang-post-buffer) + (sclang-get-process)) + (sclang-start)) + + ;; (let* ((db (or (cdr (assoc :db params)) + ;; ob-mongo:default-db)) + ;; (cmd (mapconcat 'identity (list "mongo" "--quiet" db) " "))) + ;; (org-babel-eval cmd body)) + + (sclang-eval-string body t) + + ;; (let ((cmd "sclang -r -s -D")) + ;; (org-babel-eval cmd body)) + ) + +(defvar org-babel-default-header-args:sclang nil) + +(setq org-babel-default-header-args:sclang + '((:session . "*SCLang:Workspace*") + (:output . "none")) ; TODO: temporary can't find way to let sclang output to stdout for org-babel. + ) + +;;;###autoload +(with-eval-after-load "org" + (add-to-list 'org-src-lang-modes '("sclang" . sclang))) + +;;; ---------------------------------------------------------------------------- + +(provide 'ob-sclang) + +;;; ob-sclang.el ends here -- 2.13.1 #+END_SRC [stardiviner] GPG key ID: 47C32433 IRC(freeenode): stardiviner Twitter: @numbchild Key fingerprint = 9BAA 92BC CDDD B9EF 3B36 CB99 B8C4 B8E5 47C3 2433 Blog: http://stardiviner.github.io/ On Wed, Jun 14, 2017 at 10:02 PM, Nicolas Goaziou wrote: > Hello, > > "numbchild@gmail.com" writes: > > > Yeah, I have used to contrib to org-mode, but need to sign FSF papers > spend > > my time, and I don't know how. > > See , in particular > "Copyright issues when contributing to Emacs Org mode". > > > So I decide to move code in `contrib/`. > > When I back home, I will try to sign FSF papers, because I have time and > > fixed location. > > > If I move code into `contrib/`, do I need to do more in this code? > > If you we move it into "contrib/" until FSF papers are ready, you need > to have access to repository. Thus, you will be able to update the > library whenever you see fit. I'm Cc'ing Bastien about it. > > > I will add `lexical-binding`, but don't know how to write test for > > this. > > You don't need to write a test for that. > > > Could org-mode team pull branch code on my github repo directory? Or > should > > I send a patch from `git format-patch`? > > Please send a patch. > > Regards, > > -- > Nicolas Goaziou > --001a11478d904c171b0551fdc9f4 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Here is the patch

<= div class=3D"gmail_default" style=3D"font-family:"trebuchet ms",s= ans-serif">#+BEGIN_SRC diff
From 8bea0293ae2204= 6bd4878a0ef9add5acd074bfde Mon Sep 17 00:00:00 2001
From: stardivine= r <numbchild@gmail.com>
Date: Thu, 8 Jun 2017 18:24:53 +0800
Subject: [PATCH] add ob-scla= ng for sclang Org-mode babel support

---
=C2=A0contr= ib/lisp/ob-sclang.el | 102 ++++++++++++++++++++++++++++++++++++++++++++++
=C2=A01 file changed, 102 insertions(+)
=C2=A0create mode 100644= contrib/lisp/ob-sclang.el

diff --git a/contrib/lisp/ob-sc= lang.el b/contrib/lisp/ob-sclang.el
new file mode 100644
=
index = 000000000..763799533
--- /dev/null
+++ b/contrib/lisp/ob-sclang= .el
@@ -0,0 +1,102 @@
+;;; ob-sclang.el --- SCLang support for = Org-mode Babel -*- lexical-binding: t; -*-
+;;; -*- coding: utf-8 -*-=
+
+;; Copyright (C) 2011-2017 Free Software Foundation, Inc.
+
+;; Authors: stardiviner <numbchild@gmail.com>
= +;; Package-Version: 0.1
+;; = Keywords: babel sclang
+
+;; This file is not part of GNU Emac= s.
+
+;; GNU Emacs is free software: you can redistribute it an= d/or modify
+;; it under the terms of the GNU General Public License = as published by
+;; the Free Software Foundation, either version 3 of= the License, or
+;; (at your option) any later version.
=
+
+;= ; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; = MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.=C2=A0 See the
+;= ; GNU General Public License for more details.
+
+;; You should= have received a copy of the GNU General Public License
+;; along wit= h GNU Emacs.=C2=A0 If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; `ob-sclang' requires `sclang-interp' from SuperCollide= r.
+;; Usually SuperCollider dependencies for Emacs are at /usr/share= /emacs/site-lisp/SuperCollider/
+;; You can install SuperCollider fol= lowing this article:
+
+;; Usage:
+
+;; Support to evaluate sclang Org-mode src block with function `sclan= g-eval-string'.
+
+;; For example:
+
+;; #+BE= GIN_SRC sclang :results none
+;; "Hello World".postln;
+;;
+;; *NOTE* Temporary output to org-babel re= sult output is not supported.
+;; Because `sclang-eval-string' wi= ll send output to Sclang Post Buffer.
+;; And command line `sclang= 9; execute will not automatically stop after finished execution.
+;;<= /font>
+;; #+BEGIN_SRC sclang :results none
+;; // modulate a sine fre= quency and a noise amplitude with another sine
+;; // whose frequency= depends on the horizontal mouse pointer position
+;; {
<= div class=3D"gmail_default">+;; var= x =3D SinOsc.ar(MouseX.kr(1, 100));
+;; SinOsc.ar(300 * x + 800, 0, = 0.1)
+;; +
+;; PinkNoise.ar(0.1 * x + 0.1)
+;; }.play;
+;; #+END_SRC
+
+
= +;;; Code:
+;;; -----------= -----------------------------------------------------------------
+(r= equire 'org)
+(require 'ob)
+
+(require 'scla= ng-interp)
+
+(defgroup ob-sclang nil
+ =C2=A0"org-m= ode blocks for SuperCollider SCLang."
+ =C2=A0:group 'org)
+
+;;;###autoload
+(defun org-babel-execute:sclang (body p= arams)
+ =C2=A0"Org-mode Babel sclang hook for evaluate `BODY= 9; with `PARAMS'."
+ =C2=A0(unless (or (equal (buffer-name) = sclang-post-buffer)
+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0(sclang-get-process))
+ =C2=A0 =C2=A0(sclang-start))
<= div class=3D"gmail_default">+ =C2= =A0
+ =C2=A0;; (let* ((db (or (cdr (assoc :db params))
+ =C2=A0= ;; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0ob-mongo:default-= db))
+ =C2=A0;; =C2=A0 =C2=A0 =C2=A0 =C2=A0(cmd (mapconcat 'ident= ity (list "mongo" "--quiet" db) " ")))=
= + =C2=A0;; =C2=A0 (org-babel-eval cmd body))
+ =C2=A0
+ =C2=A0(= sclang-eval-string body t)
+
+ =C2=A0;; (let ((cmd "sclang= -r -s -D"))
+ =C2=A0;; =C2=A0 (org-babel-eval cmd body))=
= + =C2=A0)
+
+(defvar org-babel-default-header-args:sclang nil)<= /font>
+
+(setq org-babel-default-header-args:sclang
+ =C2=A0 = =C2=A0 =C2=A0'((:session . "*SCLang:Workspace*")
=
+ =C2= =A0 =C2=A0 =C2=A0 =C2=A0(:output . "none")) ; TODO: temporary can= 't find way to let sclang output to stdout for org-babel.
<= div class=3D"gmail_default">+ =C2= =A0 =C2=A0 =C2=A0)
+
+;;;###autoload
+(with-eval-after-lo= ad "org"
+ =C2=A0(add-to-list 'org-src-lang-modes '= ("sclang" . sclang)))
+
+;;; ------------------------= ----------------------------------------------------
+
+(provid= e 'ob-sclang)
+
+;;; ob-sclang.el ends here
--=C2=A0<= /font>
2.13.1
#+END_SRC

[star= diviner]=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 <Ha= ck this world!>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 GPG key ID: 47C32433
IR= C(freeenode): stardiviner =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Twitter:= =C2=A0 @numbchild
Key fingerprint =3D 9BAA 92BC CDDD B9EF 3B36=C2=A0 CB9= 9 B8C4 B8E5 47C3 2433
Blog: http://stardiviner.github.io/

On Wed, Jun 14, 2017 at 10:02 PM, Nicolas Go= aziou <mail@nicolasgoaziou.fr> wrote:
Hello,

"numbchild@gmail.com" = <numbchild@gmail.com> writ= es:

> Yeah, I have used to contrib to org-mode, but need to sign FSF papers = spend
> my time, and I don't know how.

See <http://orgmode.org/worg/org-contribu= te.html>, in particular
"Copyright issues when contributing to Emacs Org mode".

> So I decide to move code in `contrib/`.
> When I back home, I will try to sign FSF papers, because I have time a= nd
> fixed location.

> If I move code into `contrib/`, do I need to do more in this code?

If you we move it into "contrib/" until FSF papers are rea= dy, you need
to have access to repository. Thus, you will be able to update the
library whenever you see fit. I'm Cc'ing Bastien about it.

> I will add `lexical-binding`, but don't know how to write test for=
> this.

You don't need to write a test for that.

> Could org-mode team pull branch code on my github repo directory? Or s= hould
> I send a patch from `git format-patch`?

Please send a patch.

Regards,

--
Nicolas Goaziou

--001a11478d904c171b0551fdc9f4-- --001a11478d904c171f0551fdc9f6 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-add-ob-sclang-for-sclang-Org-mode-babel-support.patch" Content-Disposition: attachment; filename="0001-add-ob-sclang-for-sclang-Org-mode-babel-support.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j3ybv8ge0 RnJvbSA4YmVhMDI5M2FlMjIwNDZiZDQ4NzhhMGVmOWFkZDVhY2QwNzRiZmRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzdGFyZGl2aW5lciA8bnVtYmNoaWxkQGdtYWlsLmNvbT4KRGF0 ZTogVGh1LCA4IEp1biAyMDE3IDE4OjI0OjUzICswODAwClN1YmplY3Q6IFtQQVRDSF0gYWRkIG9i LXNjbGFuZyBmb3Igc2NsYW5nIE9yZy1tb2RlIGJhYmVsIHN1cHBvcnQKCi0tLQogY29udHJpYi9s aXNwL29iLXNjbGFuZy5lbCB8IDEwMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMTAyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBt b2RlIDEwMDY0NCBjb250cmliL2xpc3Avb2Itc2NsYW5nLmVsCgpkaWZmIC0tZ2l0IGEvY29udHJp Yi9saXNwL29iLXNjbGFuZy5lbCBiL2NvbnRyaWIvbGlzcC9vYi1zY2xhbmcuZWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi43NjM3OTk1MzMKLS0tIC9kZXYvbnVsbAorKysg Yi9jb250cmliL2xpc3Avb2Itc2NsYW5nLmVsCkBAIC0wLDAgKzEsMTAyIEBACis7Ozsgb2Itc2Ns YW5nLmVsIC0tLSBTQ0xhbmcgc3VwcG9ydCBmb3IgT3JnLW1vZGUgQmFiZWwgLSotIGxleGljYWwt YmluZGluZzogdDsgLSotCis7OzsgLSotIGNvZGluZzogdXRmLTggLSotCisKKzs7IENvcHlyaWdo dCAoQykgMjAxMS0yMDE3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCis7OyBBdXRo b3JzOiBzdGFyZGl2aW5lciA8bnVtYmNoaWxkQGdtYWlsLmNvbT4KKzs7IFBhY2thZ2UtVmVyc2lv bjogMC4xCis7OyBLZXl3b3JkczogYmFiZWwgc2NsYW5nCisKKzs7IFRoaXMgZmlsZSBpcyBub3Qg cGFydCBvZiBHTlUgRW1hY3MuCisKKzs7IEdOVSBFbWFjcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cis7OyBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorOzsgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKzs7IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKzs7IEdOVSBF bWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor OzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKzs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKzs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisKKzs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCis7OyBhbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworOzs7IENvbW1lbnRhcnk6 CisKKzs7IGBvYi1zY2xhbmcnIHJlcXVpcmVzIGBzY2xhbmctaW50ZXJwJyBmcm9tIFN1cGVyQ29s bGlkZXIuCis7OyBVc3VhbGx5IFN1cGVyQ29sbGlkZXIgZGVwZW5kZW5jaWVzIGZvciBFbWFjcyBh cmUgYXQgL3Vzci9zaGFyZS9lbWFjcy9zaXRlLWxpc3AvU3VwZXJDb2xsaWRlci8KKzs7IFlvdSBj YW4gaW5zdGFsbCBTdXBlckNvbGxpZGVyIGZvbGxvd2luZyB0aGlzIGFydGljbGU6Cis7OyBodHRw czovL2dpdGh1Yi5jb20vc3VwZXJjb2xsaWRlci9zdXBlcmNvbGxpZGVyI2J1aWxkaW5nLXRoZS1z b3VyY2UtY29kZQorCis7OyBVc2FnZToKKworOzsgU3VwcG9ydCB0byBldmFsdWF0ZSBzY2xhbmcg T3JnLW1vZGUgc3JjIGJsb2NrIHdpdGggZnVuY3Rpb24gYHNjbGFuZy1ldmFsLXN0cmluZycuCisK Kzs7IEZvciBleGFtcGxlOgorCis7OyAjK0JFR0lOX1NSQyBzY2xhbmcgOnJlc3VsdHMgbm9uZQor OzsgIkhlbGxvIFdvcmxkIi5wb3N0bG47Cis7OyAjK0VORF9TUkMKKzs7Cis7OyAqTk9URSogVGVt cG9yYXJ5IG91dHB1dCB0byBvcmctYmFiZWwgcmVzdWx0IG91dHB1dCBpcyBub3Qgc3VwcG9ydGVk LgorOzsgQmVjYXVzZSBgc2NsYW5nLWV2YWwtc3RyaW5nJyB3aWxsIHNlbmQgb3V0cHV0IHRvIFNj bGFuZyBQb3N0IEJ1ZmZlci4KKzs7IEFuZCBjb21tYW5kIGxpbmUgYHNjbGFuZycgZXhlY3V0ZSB3 aWxsIG5vdCBhdXRvbWF0aWNhbGx5IHN0b3AgYWZ0ZXIgZmluaXNoZWQgZXhlY3V0aW9uLgorOzsK Kzs7ICMrQkVHSU5fU1JDIHNjbGFuZyA6cmVzdWx0cyBub25lCis7OyAvLyBtb2R1bGF0ZSBhIHNp bmUgZnJlcXVlbmN5IGFuZCBhIG5vaXNlIGFtcGxpdHVkZSB3aXRoIGFub3RoZXIgc2luZQorOzsg Ly8gd2hvc2UgZnJlcXVlbmN5IGRlcGVuZHMgb24gdGhlIGhvcml6b250YWwgbW91c2UgcG9pbnRl ciBwb3NpdGlvbgorOzsgeworOzsgdmFyIHggPSBTaW5Pc2MuYXIoTW91c2VYLmtyKDEsIDEwMCkp OworOzsgU2luT3NjLmFyKDMwMCAqIHggKyA4MDAsIDAsIDAuMSkKKzs7ICsKKzs7IFBpbmtOb2lz ZS5hcigwLjEgKiB4ICsgMC4xKQorOzsgfS5wbGF5OworOzsgIytFTkRfU1JDCisKKworOzs7IENv ZGU6Cis7OzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKHJlcXVpcmUgJ29yZykKKyhyZXF1aXJlICdv YikKKworKHJlcXVpcmUgJ3NjbGFuZy1pbnRlcnApCisKKyhkZWZncm91cCBvYi1zY2xhbmcgbmls CisgICJvcmctbW9kZSBibG9ja3MgZm9yIFN1cGVyQ29sbGlkZXIgU0NMYW5nLiIKKyAgOmdyb3Vw ICdvcmcpCisKKzs7OyMjI2F1dG9sb2FkCisoZGVmdW4gb3JnLWJhYmVsLWV4ZWN1dGU6c2NsYW5n IChib2R5IHBhcmFtcykKKyAgIk9yZy1tb2RlIEJhYmVsIHNjbGFuZyBob29rIGZvciBldmFsdWF0 ZSBgQk9EWScgd2l0aCBgUEFSQU1TJy4iCisgICh1bmxlc3MgKG9yIChlcXVhbCAoYnVmZmVyLW5h bWUpIHNjbGFuZy1wb3N0LWJ1ZmZlcikKKyAgICAgICAgICAgICAgKHNjbGFuZy1nZXQtcHJvY2Vz cykpCisgICAgKHNjbGFuZy1zdGFydCkpCisgIAorICA7OyAobGV0KiAoKGRiIChvciAoY2RyIChh c3NvYyA6ZGIgcGFyYW1zKSkKKyAgOzsgICAgICAgICAgICAgICAgb2ItbW9uZ286ZGVmYXVsdC1k YikpCisgIDs7ICAgICAgICAoY21kIChtYXBjb25jYXQgJ2lkZW50aXR5IChsaXN0ICJtb25nbyIg Ii0tcXVpZXQiIGRiKSAiICIpKSkKKyAgOzsgICAob3JnLWJhYmVsLWV2YWwgY21kIGJvZHkpKQor ICAKKyAgKHNjbGFuZy1ldmFsLXN0cmluZyBib2R5IHQpCisKKyAgOzsgKGxldCAoKGNtZCAic2Ns YW5nIC1yIC1zIC1EIikpCisgIDs7ICAgKG9yZy1iYWJlbC1ldmFsIGNtZCBib2R5KSkKKyAgKQor CisoZGVmdmFyIG9yZy1iYWJlbC1kZWZhdWx0LWhlYWRlci1hcmdzOnNjbGFuZyBuaWwpCisKKyhz ZXRxIG9yZy1iYWJlbC1kZWZhdWx0LWhlYWRlci1hcmdzOnNjbGFuZworICAgICAgJygoOnNlc3Np b24gLiAiKlNDTGFuZzpXb3Jrc3BhY2UqIikKKyAgICAgICAgKDpvdXRwdXQgLiAibm9uZSIpKSA7 IFRPRE86IHRlbXBvcmFyeSBjYW4ndCBmaW5kIHdheSB0byBsZXQgc2NsYW5nIG91dHB1dCB0byBz dGRvdXQgZm9yIG9yZy1iYWJlbC4KKyAgICAgICkKKworOzs7IyMjYXV0b2xvYWQKKyh3aXRoLWV2 YWwtYWZ0ZXItbG9hZCAib3JnIgorICAoYWRkLXRvLWxpc3QgJ29yZy1zcmMtbGFuZy1tb2RlcyAn KCJzY2xhbmciIC4gc2NsYW5nKSkpCisKKzs7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyhwcm92 aWRlICdvYi1zY2xhbmcpCisKKzs7OyBvYi1zY2xhbmcuZWwgZW5kcyBoZXJlCi0tIAoyLjEzLjEK Cg== --001a11478d904c171f0551fdc9f6--