From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Lennart Borgman Newsgroups: gmane.emacs.devel Subject: Re: line-move-visual Date: Fri, 10 Jul 2009 22:29:58 +0200 Message-ID: References: <200907092112.21879.jem@iki.fi> <87ocrtulzd.fsf@bzg.ath.cx> <87tz1lja6l.fsf@bzg.ath.cx> <83ocrsykx7.fsf@gnu.org> <87prc8lqi2.fsf@uwakimon.sk.tsukuba.ac.jp> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001636c5a7e80cb853046e5fd689 X-Trace: ger.gmane.org 1247257935 21989 80.91.229.12 (10 Jul 2009 20:32:15 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 10 Jul 2009 20:32:15 +0000 (UTC) Cc: handa@m17n.org, emacs-devel@gnu.org, bastienguerry@googlemail.com, "Stephen J. Turnbull" , jem@iki.fi, Eli Zaretskii , miles@gnu.org To: Scot Becker Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Jul 10 22:32:06 2009 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1MPMl6-00060r-9t for ged-emacs-devel@m.gmane.org; Fri, 10 Jul 2009 22:32:06 +0200 Original-Received: from localhost ([127.0.0.1]:46700 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MPMl5-00070G-My for ged-emacs-devel@m.gmane.org; Fri, 10 Jul 2009 16:31:51 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MPMjU-0005OE-E0 for emacs-devel@gnu.org; Fri, 10 Jul 2009 16:30:12 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MPMjP-0005Hc-H4 for emacs-devel@gnu.org; Fri, 10 Jul 2009 16:30:12 -0400 Original-Received: from [199.232.76.173] (port=52167 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MPMjP-0005HN-Bz for emacs-devel@gnu.org; Fri, 10 Jul 2009 16:30:07 -0400 Original-Received: from mail-fx0-f215.google.com ([209.85.220.215]:63717) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MPMjI-00063J-9J; Fri, 10 Jul 2009 16:30:00 -0400 Original-Received: by fxm11 with SMTP id 11so1200760fxm.42 for ; Fri, 10 Jul 2009 13:29:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type; bh=VNWPbA1uyiu9dKQmL4cer96a56NcBGIQjSERNiBwlJs=; b=vbGpa4UPM9mSIvtZVRW+X8IcsIXdESR1SrgFBYWoKOYB5DtyeS0PK/GpsbI06GH5sc MZ/0D1CSksCBXBPgJLxRrfuGkdcdBMa4yWxR9hbwwzHbczt0DtrAkKlut8nQdC0WZasl A+U69RBytSdSmNozG+uuSIJKjpZS9+vPDuA1A= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=D0otkX0e0CS7wng+w3Ea2mMzh4FtpS5M0Tw6aFV0L3o/IgdkFenHD3cMC4QIqhIFhs h/Xj5HE8zzai3dwpZ8ksdQOhZi6o++hU0/+IVXl8LV8nKlNbTcXdIV54fQPXw2WR2Zmx EhVdtWKj2/92ZL8+4fFh/kiPg/9ArdCskCVGs= Original-Received: by 10.223.116.195 with SMTP id n3mr1340925faq.12.1247257798947; Fri, 10 Jul 2009 13:29:58 -0700 (PDT) In-Reply-To: X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:112320 Archived-At: --001636c5a7e80cb853046e5fd689 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Fri, Jul 10, 2009 at 5:07 PM, Scot Becker wrote: > Lennart, > > That was quick! =C2=A0 I think a library like that would do a lot, since > you could create custom customization buffers for all the purposes we > have discussed. =C2=A0I like it. =C2=A0Of course for a new user, the > customization buffer itself is quite 'busy', but that's not a problem > we can do anything about at the moment. =C2=A0And the sooner they warm up > to it, probably the better for them, since it's one of the better > forms we have of interface discoverability at the moment. > > I tried adding new variables to customize, which seems to work. I > assume it's possible to add documentation by adding =C2=A0it between the > commands. =C2=A0And typical lisp logic to only present some options if > we're on a certain OS, or have a certain package loaded. > > This is really nice, Lennart. =C2=A0 I assume it's far too late to includ= e > something like this in v. 23.1, but I could imagine various > 'customization groups' making it into a future version. =C2=A0If I manage > to produce an Emacs 'customization package for writers.' =C2=A0I will mos= t > certainly use this (especially if line-move-visual gets set to nil!) > . > So aside from the ongoing need to pick good defaults, how well does > something like this address the discoverability issue? =C2=A0What do the > rest of you think? Pointing out some important options is perhaps good. Also exporting "my important options/my skin options" is probably good. See the new version below (a working version). I guess it is not ready, but maybe a discussion point at least. --001636c5a7e80cb853046e5fd689 Content-Type: text/plain; charset=US-ASCII; name="cus-new-user.el" Content-Disposition: attachment; filename="cus-new-user.el" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fwzd2heq0 Ozs7IGN1cy1uZXctdXNlci5lbCAtLS0gQ3VzdG9taXplIHNvbWUgaW1wb3J0YW50IG9wdGlvbnMN Cjs7DQo7OyBBdXRob3I6IExlbm5hcnQgQm9yZ21hbiAobGVubmFydCBPIGJvcmdtYW4gQSBnbWFp bCBPIGNvbSkNCjs7IENyZWF0ZWQ6IDIwMDktMDctMTAgRnJpDQo7OyBWZXJzaW9uOiAwLjINCjs7 IExhc3QtVXBkYXRlZDogMjAwOS0wNy0xMCBGcmkNCjs7IFVSTDoNCjs7IEtleXdvcmRzOg0KOzsg Q29tcGF0aWJpbGl0eToNCjs7DQo7OyBGZWF0dXJlcyB0aGF0IG1pZ2h0IGJlIHJlcXVpcmVkIGJ5 IHRoaXMgbGlicmFyeToNCjs7DQo7OyAgIE5vbmUNCjs7DQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQo7Ow0KOzs7 IENvbW1lbnRhcnk6DQo7Ow0KOzsgICAgQ3VzdG9taXplIHNpZ25pZmljYW50IG9wdGlvbnMgZm9y IHdoaWNoIGRpZmZlcmVudCB1c2VyDQo7OyAgICBlbnZpcm9ubWVudCBleHBlY3RhdGlvbnMgbWln aHQgZGljdGF0ZSBkaWZmZXJlbnQgZGVmYXVsdHMuDQo7Ow0KOzsgICAgQWZ0ZXIgYW4gaWRlYSBv ZiBTY290IEJlY2tlciBvbiBFbWFjcyBEZXZlbC4NCjs7DQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQo7Ow0KOzs7 IENoYW5nZSBsb2c6DQo7Ow0KOzsNCjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCjs7DQo7OyBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQo7OyBtb2Rp ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cw0KOzsgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMsIG9yDQo7OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KOzsN Cjs7IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLA0KOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YNCjs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VDQo7OyBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuDQo7Ow0KOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCjs7IGFsb25nIHdpdGggdGhp cyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8NCjs7IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm dGgNCjs7IEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4NCjs7DQo7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7DQo7Ow0KOzs7IENvZGU6DQoNCjs7KGN1c3RvbWl6ZS1mb3ItbmV3LXVzZXIpDQo7OzsjIyNh dXRvbG9hZA0KKGRlZnVuIGN1c3RvbWl6ZS1mb3ItbmV3LXVzZXIgKCZvcHRpb25hbCBuYW1lKQ0K ICAiU2hvdyBzcGVjaWFsIGN1c3RvbWl6YXRpb24gcGFnZSBmb3IgbmV3IHVzZXIuDQoiDQogIChp bnRlcmFjdGl2ZSkNCiAgOzsoc2V0cSBkZWJ1Zy1vbi1lcnJvciB0KQ0KICA7OyhzZXRxIGJ1ZmZl ci1yZWFkLW9ubHkgdCkNCiAgKHJlcXVpcmUgJ2N1cy1lZGl0KQ0KICAobGV0ICgoaW5oaWJpdC1y ZWFkLW9ubHkgdCkNCiAgICAgICAgZmlsbC1wb3MpDQogICAgKHBvcC10by1idWZmZXIgKGN1c3Rv bS1nZXQtZnJlc2gtYnVmZmVyIChvciBuYW1lICIqQ3VzdG9taXphdGlvbnMgZm9yIE5ldyBVc2Vy cyoiKSkpDQogICAgKGJ1ZmZlci1kaXNhYmxlLXVuZG8pDQogICAgKEN1c3RvbS1tb2RlKQ0KICAg IChlcmFzZS1idWZmZXIpDQogICAgKHNldHEgZmlsbC1wb3MgKHBvaW50KSkNCiAgICAod2lkZ2V0 LWluc2VydA0KICAgICAiQmVsb3cgYXJlIHNvbWUgY3VzdG9tIG9wdGlvbnMgdGhhdCBuZXcgdXNl cnMgb2Z0ZW4gbWF5IHdhbnQgdG8NCnR3ZWFrIHNpbmNlIHRoZXkgbWF5IG1ha2UgRW1hY3MgYSBi aXQgbW9yZSBsaWtlIHdoYXQgdGhleSBleHBlY3QgZnJvbSB1c2luZyBvdGhlciBzb2Z0d2FyZSBp biB0aGVpciBlbnZpcm9ubWVudC4NCg0KU2luY2UgRW1hY3MgcnVucyBpbiBtYW55IGVudmlyb25t ZW50IGFuZCBhbiBFbWFjcyB1c2VyIG1heSB1c2UNCnNldmVyYWwgb2YgdGhlbSBpdCBpcyBoYXJk IHRvIGRlY2lkZSBieSBkZWZhdWx0IHdoYXQgYSB1c2VyDQp3YW50cy9leHBlY3RzLiAgVGhlcmVm b3IgeW91IGFyZSBnaXZlbiB0aGUgcG9zc2liaWxpdHkgdG8gZWFzaWx5DQpkbyB0aG9zZSBjaGFu Z2VzIGhlcmUuDQoNCk5vdGUgdGhhdCB0aGlzIGlzIGp1c3QgYSBjb2xsZWN0aW9uIG9mIG5vcm1h bCBjdXN0b20gb3B0aW9ucy4NClRoZXJlIGFyZSBubyBuZXcgb3B0aW9ucyBoZXJlLg0KDQoiKQ0K ICAgIChmaWxsLXJlZ2lvbiBmaWxsLXBvcyAocG9pbnQpKQ0KDQogICAgOzsgTm9ybWFsIGN1c3Rv bSBidWZmZXIgaGVhZGVyDQogICAgKGxldCAoKGluaXQtZmlsZSAob3IgY3VzdG9tLWZpbGUgdXNl ci1pbml0LWZpbGUpKSkNCiAgICAgIDs7IEluc2VydCB2ZXJib3NlIGhlbHAgYXQgdGhlIHRvcCBv ZiB0aGUgY3VzdG9tIGJ1ZmZlci4NCiAgICAgICh3aGVuIGN1c3RvbS1idWZmZXItdmVyYm9zZS1o ZWxwDQogICAgICAgICh3aWRnZXQtaW5zZXJ0ICJFZGl0aW5nIGEgc2V0dGluZyBjaGFuZ2VzIG9u bHkgdGhlIHRleHQgaW4gdGhpcyBidWZmZXIuIg0KICAgICAgICAgICAgICAgICAgICAgICAoaWYg aW5pdC1maWxlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAiDQpUbyBhcHBseSB5b3VyIGNo YW5nZXMsIHVzZSB0aGUgU2F2ZSBvciBTZXQgYnV0dG9ucy4NClNhdmluZyBhIGNoYW5nZSBub3Jt YWxseSB3b3JrcyBieSBlZGl0aW5nIHlvdXIgaW5pdCBmaWxlLiINCiAgICAgICAgICAgICAgICAg ICAgICAgICAiDQpDdXJyZW50bHksIHRoZXNlIHNldHRpbmdzIGNhbm5vdCBiZSBzYXZlZCBmb3Ig ZnV0dXJlIEVtYWNzIHNlc3Npb25zLA0KcG9zc2libHkgYmVjYXVzZSB5b3Ugc3RhcnRlZCBFbWFj cyB3aXRoIGAtcScuIikNCiAgICAgICAgICAgICAgICAgICAgICAgIlxuRm9yIGRldGFpbHMsIHNl ZSAiKQ0KICAgICAgICAod2lkZ2V0LWNyZWF0ZSAnY3VzdG9tLW1hbnVhbA0KICAgICAgICAgICAg ICAgICAgICAgICA6dGFnICJTYXZpbmcgQ3VzdG9taXphdGlvbnMiDQogICAgICAgICAgICAgICAg ICAgICAgICIoZW1hY3MpU2F2aW5nIEN1c3RvbWl6YXRpb25zIikNCiAgICAgICAgKHdpZGdldC1p bnNlcnQgIiBpbiB0aGUgIikNCiAgICAgICAgKHdpZGdldC1jcmVhdGUgJ2N1c3RvbS1tYW51YWwN CiAgICAgICAgICAgICAgICAgICAgICAgOnRhZyAiRW1hY3MgbWFudWFsIg0KICAgICAgICAgICAg ICAgICAgICAgICA6aGVscC1lY2hvICJSZWFkIHRoZSBFbWFjcyBtYW51YWwuIg0KICAgICAgICAg ICAgICAgICAgICAgICAiKGVtYWNzKVRvcCIpDQogICAgICAgICh3aWRnZXQtaW5zZXJ0ICIuIikp DQogICAgICAod2lkZ2V0LWluc2VydCAiXG4iKQ0KICAgICAgOzsgVGhlIGN1c3RvbSBjb21tYW5k IGJ1dHRvbnMgYXJlIGFsc28gaW4gdGhlIHRvb2xiYXIsIHNvIGZvciBhDQogICAgICA7OyB0aW1l IHRoZXkgd2VyZSBub3QgaW5zZXJ0ZWQgaW4gdGhlIGJ1ZmZlciBpZiB0aGUgdG9vbGJhciB3YXMg aW4gdXNlLg0KICAgICAgOzsgQnV0IGl0IGNhbiBiZSBhIGxpdHRsZSBjb25mdXNpbmcgZm9yIHRo ZSBidWZmZXIgbGF5b3V0IHRvDQogICAgICA7OyBjaGFuZ2UgYWNjb3JkaW5nIHRvIHdoZXRoZXIg b3Igbm9yIHRoZSB0b29sYmFyIGlzIG9uLCBub3QgdG8NCiAgICAgIDs7IG1lbnRpb24gdGhhdCBh IGN1c3RvbSBidWZmZXIgY2FuIGluIHRoZW9yeSBiZSBjcmVhdGVkIGluIGENCiAgICAgIDs7IGZy YW1lIHdpdGggYSB0b29sYmFyLCB0aGVuIGxhdGVyIHZpZXdlZCBpbiBvbmUgd2l0aG91dC4NCiAg ICAgIDs7IFNvIG5vdyB0aGUgYnV0dG9ucyBhcmUgYWx3YXlzIGluc2VydGVkIGluIHRoZSBidWZm ZXIuICAoQnVnIzEzMjYpDQo7OzsgICAgKHdoZW4gKG5vdCAoYW5kIChib3VuZC1hbmQtdHJ1ZS1w IHRvb2wtYmFyLW1vZGUpIChkaXNwbGF5LWdyYXBoaWMtcCkpKQ0KICAgICAgKGlmIGN1c3RvbS1i dWZmZXItdmVyYm9zZS1oZWxwDQogICAgICAgICAgKHdpZGdldC1pbnNlcnQgIlxuDQogT3BlcmF0 ZSBvbiBhbGwgc2V0dGluZ3MgaW4gdGhpcyBidWZmZXIgdGhhdCBhcmUgbm90IG1hcmtlZCBISURE RU46XG4iKSkNCiAgICAgIChsZXQgKChidXR0b24gKGxhbWJkYSAodGFnIGFjdGlvbiBhY3RpdmUg aGVscCBpY29uKQ0KICAgICAgICAgICAgICAgICAgICAgICh3aWRnZXQtaW5zZXJ0ICIgIikNCiAg ICAgICAgICAgICAgICAgICAgICAoaWYgKGV2YWwgYWN0aXZlKQ0KICAgICAgICAgICAgICAgICAg ICAgICAgICAod2lkZ2V0LWNyZWF0ZSAncHVzaC1idXR0b24gOnRhZyB0YWcNCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmhlbHAtZWNobyBoZWxwIDphY3Rpb24gYWN0 aW9uKSkpKQ0KICAgICAgICAgICAgKGNvbW1hbmRzIGN1c3RvbS1jb21tYW5kcykpDQogICAgICAg IChhcHBseSBidXR0b24gKHBvcCBjb21tYW5kcykpIDsgU2V0IGZvciBjdXJyZW50IHNlc3Npb24N CiAgICAgICAgKGFwcGx5IGJ1dHRvbiAocG9wIGNvbW1hbmRzKSkgOyBTYXZlIGZvciBmdXR1cmUg c2Vzc2lvbnMNCiAgICAgICAgKGlmIGN1c3RvbS1yZXNldC1idXR0b24tbWVudQ0KICAgICAgICAg ICAgKHByb2duDQogICAgICAgICAgICAgICh3aWRnZXQtaW5zZXJ0ICIgIikNCiAgICAgICAgICAg ICAgKHdpZGdldC1jcmVhdGUgJ3B1c2gtYnV0dG9uDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDp0YWcgIlJlc2V0IGJ1ZmZlciINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmhl bHAtZWNobyAiU2hvdyBhIG1lbnUgd2l0aCByZXNldCBvcGVyYXRpb25zLiINCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOm1vdXNlLWRvd24tYWN0aW9uICdpZ25vcmUNCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOmFjdGlvbiAnY3VzdG9tLXJlc2V0KSkNCiAgICAgICAgICAod2lk Z2V0LWluc2VydCAiXG4iKQ0KICAgICAgICAgIChhcHBseSBidXR0b24gKHBvcCBjb21tYW5kcykp IDsgVW5kbyBlZGl0cw0KICAgICAgICAgIChhcHBseSBidXR0b24gKHBvcCBjb21tYW5kcykpIDsg UmVzZXQgdG8gc2F2ZWQNCiAgICAgICAgICAoYXBwbHkgYnV0dG9uIChwb3AgY29tbWFuZHMpKSA7 IEVyYXNlIGN1c3RvbWl6YXRpb24NCiAgICAgICAgICAod2lkZ2V0LWluc2VydCAiICAiKQ0KICAg ICAgICAgIChwb3AgY29tbWFuZHMpIDsgSGVscCAob21pdHRlZCkNCiAgICAgICAgICAoYXBwbHkg YnV0dG9uIChwb3AgY29tbWFuZHMpKSkpIDsgRXhpdA0KICAgICAgKHdpZGdldC1pbnNlcnQgIlxu XG4iKQ0KDQogICAgICA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQogICAgICA7OyBFZGl0 b3IgZW11bGF0b3IgbGV2ZWwNCg0KICAgICAgKHdpZGdldC1pbnNlcnQgIlxuIikNCiAgICAgIChz ZXRxIGZpbGwtcG9zIChwb2ludCkpDQogICAgICAod2lkZ2V0LWluc2VydA0KIkVtYWNzIGNhbiBl bXVsYXRlIHNvbWUgY29tbW9uIGVkaXRpbmcgYmVoYXZpb3VycyAoYW5kIHNvbWUgdW5jb21tb24g dG9vKS4NCkZvciB0aGUgbW9zdCBjb21tb24gb25lcyB5b3UgY2FuIGRlY2lkZSBpZiB5b3Ugd2Fu dCB0byB1c2UgdGhlbSBoZXJlOg0KIikNCiAgICAgIChmaWxsLXJlZ2lvbiBmaWxsLXBvcyAocG9p bnQpKQ0KICAgICAgKGN1c251LW1hcmstcGFydC1kZXNjIGZpbGwtcG9zIChwb2ludCkpDQoNCiAg ICAgIDs7IENVQSBNb2RlDQogICAgICAoY3VzbnUtaW5zZXJ0LW9wdGlvbnMgJygoY3VhLW1vZGUg Y3VzdG9tLXZhcmlhYmxlKSkpDQoNCiAgICAgIDs7IFZpcGVyIE1vZGUNCiAgICAgICh3aWRnZXQt aW5zZXJ0ICJcbiIpDQogICAgICAod2lkZ2V0LWluc2VydCAocHJvcGVydGl6ZSAiVmlwZXIiICdm YWNlICdjdXN0b20tdmFyaWFibGUtdGFnKSkNCiAgICAgICh3aWRnZXQtaW5zZXJ0ICI6IikNCiAg ICAgIChzZXRxIGZpbGwtcG9zIChwb2ludCkpDQogICAgICAod2lkZ2V0LWluc2VydCAiDQogICBW aXBlciBpcyBjdXJyZW50bHkgc2V0IHVwIGluIGEgc3BlY2lhbCB3YXksIHBsZWFzZSBzZWUgdGhl DQogICBjb21tYW5kIGB2aXBlci1tb2RlJy4gIFlvdSBjYW4gdXNlIGN1c3RvbSB0byBzZXQgdXAg bW9zdCBvZg0KICAgaXQuICBIb3dldmVyIGlmIHlvdSB3YW50IHRvIGxvYWQgVmlwZXIgYXQgc3Rh cnR1cCB5b3UgbXVzdA0KICAgZXhwbGljaXRseSBpbmNsdWRlIFwocmVxdWlyZSAndmlwZXIpIGlu IHlvdXIgLmVtYWNzLg0KIikNCiAgICAgIChmaWxsLXJlZ2lvbiBmaWxsLXBvcyAocG9pbnQpKQ0K DQogICAgICA7OyBWaXBlciBNb2RlDQogICAgICAoYmFja3dhcmQtZGVsZXRlLWNoYXIgMSkNCiAg ICAgIChjdXNudS1pbnNlcnQtb3B0aW9ucyAnKCh2aXBlci1tb2RlIGN1c3RvbS12YXJpYWJsZSkp KQ0KDQogICAgICA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQogICAgICA7OyBPUyBzcGVj aWZpYw0KDQogICAgICAod2lkZ2V0LWluc2VydCAiXG4iKQ0KICAgICAgKHNldHEgZmlsbC1wb3Mg KHBvaW50KSkNCiAgICAgICh3aWRnZXQtaW5zZXJ0IChmb3JtYXQgIk9TIHNwZWNpZmljIG9wdGlv bnMgKCVzKTogXG4iIHN5c3RlbS10eXBlKSkNCiAgICAgIChmaWxsLXJlZ2lvbiBmaWxsLXBvcyAo cG9pbnQpKQ0KICAgICAgKGN1c251LW1hcmstcGFydC1kZXNjIGZpbGwtcG9zIChwb2ludCkpDQoN CiAgICAgIChpZiBjdXNuby1pbnNlcnQtb3Mtc3BlYy1mdW4NCiAgICAgICAgICAoZnVuY2FsbCBj dXNuby1pbnNlcnQtb3Mtc3BlYy1mdW4pDQogICAgICAgKHdpZGdldC1pbnNlcnQgIk5vIE9TIHNw ZWNpZmljIGN1c3RvbWl6YXRpb25zLlxuIikpDQoNCiAgICAgIDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7OzsNCiAgICAgIDs7IERpc3B1dGVkIHNldHRpbmdzDQoNCiAgICAgICh3aWRnZXQtaW5z ZXJ0ICJcbiIpDQogICAgICAoc2V0cSBmaWxsLXBvcyAocG9pbnQpKQ0KICAgICAgKHdpZGdldC1p bnNlcnQNCiJTb21lIG9sZCB0aW1lIEVtYWNzIHVzZXJzIHdhbnQgdG8gY2hhbmdlIHRoZSBvcHRp b25zIGJlbG93Og0KIikNCiAgICAgIChmaWxsLXJlZ2lvbiBmaWxsLXBvcyAocG9pbnQpKQ0KICAg ICAgKGN1c251LW1hcmstcGFydC1kZXNjIGZpbGwtcG9zIChwb2ludCkpDQoNCiAgICAgIChjdXNu dS1pbnNlcnQtb3B0aW9ucyAnKChnbG9iYWwtdmlzdWFsLWxpbmUtbW9kZSBjdXN0b20tdmFyaWFi bGUpKSkNCiAgICAgIChjdXNudS1pbnNlcnQtb3B0aW9ucyAnKCh3b3JkLXdyYXAgY3VzdG9tLXZh cmlhYmxlKSkpDQogICAgICAoY3VzbnUtaW5zZXJ0LW9wdGlvbnMgJygoYmxpbmstY3Vyc29yLW1v ZGUgY3VzdG9tLXZhcmlhYmxlKSkpDQogICAgICAoY3VzbnUtaW5zZXJ0LW9wdGlvbnMgJygodG9v bC1iYXItbW9kZSBjdXN0b20tdmFyaWFibGUpKSkNCiAgICAgIChjdXNudS1pbnNlcnQtb3B0aW9u cyAnKCh0b29sdGlwLW1vZGUgY3VzdG9tLXZhcmlhYmxlKSkpDQogICAgICA7OyhjdXNudS1pbnNl cnQtb3B0aW9ucyAnKChpbml0aWFsLXNjcmF0Y2gtbWVzc2FnZSBjdXN0b20tdmFyaWFibGUpKSkN Cg0KICAgICAgKHdpZGdldC1pbnNlcnQgIlxuIikNCiAgICAgIChzZXRxIGZpbGwtcG9zIChwb2lu dCkpDQogICAgICAod2lkZ2V0LWluc2VydA0KIk15IHNraW4gb3B0aW9ucyAtIGZvciBleHBvcnRp bmcgY3VzdG9tIG9wdGlvbnMgdG8gb3RoZXIgdXNlcnMgKG9yIHlvdXJzZWxmIG9uIGFub3RoZXIg Y29tcHV0ZXIpIikNCiAgICAgIChmaWxsLXJlZ2lvbiBmaWxsLXBvcyAocG9pbnQpKQ0KICAgICAg KGN1c251LW1hcmstcGFydC1kZXNjIGZpbGwtcG9zIChwb2ludCkpDQoNCiAgICAgICh3aWRnZXQt aW5zZXJ0ICJcbiIpDQogICAgICAoY3VzbnUtaW5zZXJ0LW9wdGlvbnMgJygoY3VzbnUtbXktc2tp bi1vcHRpb25zIGN1c3RvbS12YXJpYWJsZSkpKQ0KICAgICAgKHdpZGdldC1pbnNlcnQgIlxuIikN CiAgICAgICh3aWRnZXQtY3JlYXRlICdwdXNoLWJ1dHRvbg0KICAgICAgICAgICAgICAgICAgICAg OnRhZyAiRXhwb3J0IG15IHNraW4gb3B0aW9ucyINCiAgICAgICAgICAgICAgICAgICAgIDphY3Rp b24gKGxhbWJkYSAoJnJlc3QgaWdub3JlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChsZXQgKCh1c2UtZGlhbG9nLWJveCBuaWwpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGNhbGwtaW50ZXJhY3RpdmVseSAnY3VzbnUtZXhwb3J0LW15LXNraW4tb3B0aW9ucykp KSkNCg0KICAgICAgOzsgRmluaXNoIHNldHVwIGJ1ZmZlcg0KICAgICAgKG1hcGMgJ2N1c3RvbS1t YWdpYy1yZXNldCBjdXN0b20tb3B0aW9ucykNCiAgICAgIChjdXNudS1tYWtlLXhyZWZzKQ0KICAg ICAgKHdpZGdldC1zZXR1cCkNCiAgICAgIChidWZmZXItZW5hYmxlLXVuZG8pDQogICAgICAoZ290 by1jaGFyIChwb2ludC1taW4pKSkpKQ0KDQooZGVmdmFyIGN1c25vLWluc2VydC1vcy1zcGVjLWZ1 biBuaWwpDQoNCjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ow0KOzsgRXhhbXBsZSBvbiBFbWFjcytFbWFjdzMyDQood2hlbiAoYm91bmRwICdl bWFjc3czMi12ZXJzaW9uKQ0KICAoZGVmdW4gY3VzbnUtZW1hY3N3MzItc2hvdy1jdXN0c3RhcnQg KCZyZXN0IGFyZ3MpDQogICAgKGVtYWNzdzMyLXNob3ctY3VzdHN0YXJ0KSkNCiAgKHNldHEgY3Vz bm8taW5zZXJ0LW9zLXNwZWMtZnVuICdjdXNudS1pbnNlcnQtZW1hY3N3MzItc3BlY2lmaWMtcGFy dCkNCiAgKGRlZnVuIGN1c251LWluc2VydC1lbWFjc3czMi1zcGVjaWZpYy1wYXJ0ICgpDQogICAg KGN1c251LWluc2VydC1vcHRpb25zICcoKHczMi1tZXRhLXN0eWxlIGN1c3RvbS12YXJpYWJsZSkp KQ0KICAgICh3aWRnZXQtaW5zZXJ0ICJcbiIpDQogICAgKHdpZGdldC1pbnNlcnQgKHByb3BlcnRp emUgIkVtYWNzVzMyIiAnZmFjZSAnY3VzdG9tLXZhcmlhYmxlLXRhZykpDQogICAgKHdpZGdldC1p bnNlcnQgIg0KICAgRWFzeSBzZXR1cCBmb3IgRW1hY3MrRW1hY3NXMzIuIikNCiAgICAod2lkZ2V0 LWluc2VydCAiXG4gICAiKQ0KICAgICh3aWRnZXQtY3JlYXRlICdwdXNoLWJ1dHRvbiA6dGFnICJD dXN0b21pemUgRW1hY3NXMzIiDQogICAgICAgICAgICAgICAgICAgOzs6aGVscC1lY2hvIGhlbHAN CiAgICAgICAgICAgICAgICAgICA6YWN0aW9uICdjdXNudS1lbWFjc3czMi1zaG93LWN1c3RzdGFy dCkNCiAgICAod2lkZ2V0LWluc2VydCAiXG4iKSkpDQo7OyBFbmQgZXhhbXBsZQ0KOzs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQoNCihkZWZ1 biBjdXNudS1tYXJrLXBhcnQtZGVzYyAoYmVnIGVuZCkNCiAgKGxldCAoKG92bCAobWFrZS1vdmVy bGF5IGJlZyBlbmQpKSkNCiAgICAob3ZlcmxheS1wdXQgb3ZsICdmYWNlICdoaWdobGlnaHQpKSkN Cg0KKGRlZnVuIGN1c251LW1ha2UteHJlZnMgKCZvcHRpb25hbCBiZWcgZW5kKQ0KICAoc2F2ZS1y ZXN0cmljdGlvbg0KICAgICh3aGVuIChvciBiZWcgZW5kKQ0KICAgICAgKHVubGVzcyBiZWcgKHNl dHEgYmVnIChwb2ludC1taW4pKSkNCiAgICAgICh1bmxlc3MgZW5kIChzZXRxIGVuZCAocG9pbnQt bWF4KSkpDQogICAgICAobmFycm93LXRvLXJlZ2lvbiBiZWcgZW5kKSkNCiAgICAobGV0ICgoaGVy ZSAocG9pbnQpKSkNCiAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpDQogICAgICAoY3VzbnUt aGVscC1pbnNlcnQteHJlZnMgJ2N1c251LWhlbHAteHJlZi1idXR0b24pDQogICAgICAoZ290by1j aGFyIGhlcmUpKSkpDQoNCihkZWZ1biB3aWRnZXQtaW5mby1saW5rLWFjdGlvbiAod2lkZ2V0ICZv cHRpb25hbCBldmVudCkNCiAgIk9wZW4gdGhlIGluZm8gbm9kZSBzcGVjaWZpZWQgYnkgV0lER0VU LiINCiAgKGluZm8tb3RoZXItd2luZG93ICh3aWRnZXQtdmFsdWUgd2lkZ2V0KSkpDQoNCihkZWZ1 biB3aWRnZXQtZG9jdW1lbnRhdGlvbi1zdHJpbmctdmFsdWUtY3JlYXRlICh3aWRnZXQpDQogIDs7 IEluc2VydCBkb2N1bWVudGF0aW9uIHN0cmluZy4NCiAgKGxldCAoKGRvYyAod2lkZ2V0LXZhbHVl IHdpZGdldCkpDQoJKGluZGVudCAod2lkZ2V0LWdldCB3aWRnZXQgOmluZGVudCkpDQoJKHNob3du ICh3aWRnZXQtZ2V0ICh3aWRnZXQtZ2V0IHdpZGdldCA6cGFyZW50KSA6ZG9jdW1lbnRhdGlvbi1z aG93bikpDQoJKHN0YXJ0IChwb2ludCkpKQ0KICAgIChpZiAoc3RyaW5nLW1hdGNoICJcbiIgZG9j KQ0KCShsZXQgKChiZWZvcmUgKHN1YnN0cmluZyBkb2MgMCAobWF0Y2gtYmVnaW5uaW5nIDApKSkN CgkgICAgICAoYWZ0ZXIgKHN1YnN0cmluZyBkb2MgKG1hdGNoLWJlZ2lubmluZyAwKSkpDQoJICAg ICAgYnV0dG9uKQ0KCSAgKHdoZW4gKGFuZCBpbmRlbnQgKG5vdCAoemVyb3AgaW5kZW50KSkpDQoJ ICAgIChpbnNlcnQtY2hhciA/XHMgaW5kZW50KSkNCgkgIChpbnNlcnQgYmVmb3JlID9ccykNCgkg ICh3aWRnZXQtZG9jdW1lbnRhdGlvbi1saW5rLWFkZCB3aWRnZXQgc3RhcnQgKHBvaW50KSkNCgkg IChzZXRxIGJ1dHRvbg0KCQkod2lkZ2V0LWNyZWF0ZS1jaGlsZC1hbmQtY29udmVydA0KCQkgd2lk Z2V0ICh3aWRnZXQtZ2V0IHdpZGdldCA6dmlzaWJpbGl0eS13aWRnZXQpDQoJCSA6aGVscC1lY2hv ICJTaG93IG9yIGhpZGUgcmVzdCBvZiB0aGUgZG9jdW1lbnRhdGlvbi4iDQoJCSA6b24gIkhpZGUg UmVzdCINCgkJIDpvZmYgIk1vcmUiDQoJCSA6YWx3YXlzLWFjdGl2ZSB0DQoJCSA6YWN0aW9uICd3 aWRnZXQtcGFyZW50LWFjdGlvbg0KCQkgc2hvd24pKQ0KCSAgKHdoZW4gc2hvd24NCgkgICAgKHNl dHEgc3RhcnQgKHBvaW50KSkNCgkgICAgKHdoZW4gKGFuZCBpbmRlbnQgKG5vdCAoemVyb3AgaW5k ZW50KSkpDQoJICAgICAgKGluc2VydC1jaGFyID9ccyBpbmRlbnQpKQ0KCSAgICAoaW5zZXJ0IGFm dGVyKQ0KCSAgICAod2lkZ2V0LWRvY3VtZW50YXRpb24tbGluay1hZGQgd2lkZ2V0IHN0YXJ0IChw b2ludCkpDQogICAgICAgICAgICAoY3VzbnUtbWFrZS14cmVmcyBzdGFydCAocG9pbnQpKQ0KICAg ICAgICAgICAgKQ0KCSAgKHdpZGdldC1wdXQgd2lkZ2V0IDpidXR0b25zIChsaXN0IGJ1dHRvbikp KQ0KICAgICAgKHdoZW4gKGFuZCBpbmRlbnQgKG5vdCAoemVyb3AgaW5kZW50KSkpDQoJKGluc2Vy dC1jaGFyID9ccyBpbmRlbnQpKQ0KICAgICAgKGluc2VydCBkb2MpDQogICAgICAod2lkZ2V0LWRv Y3VtZW50YXRpb24tbGluay1hZGQgd2lkZ2V0IHN0YXJ0IChwb2ludCkpKSkNCiAgKGluc2VydCA/ XG4pKQ0KKGRlZnVuIGN1c251LWhlbHAteHJlZi1idXR0b24gKG1hdGNoLW51bWJlciB0eXBlIHdo YXQgJnJlc3QgYXJncykNCiAgKGxldCAoKGJlZyAobWF0Y2gtYmVnaW5uaW5nIG1hdGNoLW51bWJl cikpDQogICAgICAgIChlbmQgKG1hdGNoLWVuZCBtYXRjaC1udW1iZXIpKSkNCiAgKGlmIG5pbA0K ICAgICAgKGxldCAoKG92bCAobWFrZS1vdmVybGF5IGJlZyBlbmQpKSkNCiAgICAgICAgKG92ZXJs YXktcHV0IG92bCAnZmFjZSAnaGlnaGxpZ2h0KSkNCiAgICAobGV0KiAoKHRhZyAobWF0Y2gtc3Ry aW5nIG1hdGNoLW51bWJlcikpDQogICAgICAgICAgICh2YWx1ZSB3aGF0KQ0KICAgICAgICAgICAg KHdpZC10eXBlIChjb25kDQogICAgICAgICAgICAgICAgICAgICAgICgoZXEgdHlwZSAnaGVscC12 YXJpYWJsZSkNCiAgICAgICAgICAgICAgICAgICAgICAgICd2YXJpYWJsZS1saW5rKQ0KICAgICAg ICAgICAgICAgICAgICAgICAoKGVxIHR5cGUgJ2hlbHAtZnVuY3Rpb24pDQogICAgICAgICAgICAg ICAgICAgICAgICAnZnVuY3Rpb24tbGluaykNCiAgICAgICAgICAgICAgICAgICAgICAgKChlcSB0 eXBlICdoZWxwLWluZm8pDQogICAgICAgICAgICAgICAgICAgICAgICAnY3VzdG9tLW1hbnVhbCkN CiAgICAgICAgICAgICAgICAgICAgICAgKHQgbmlsKSkpDQogICAgICAgICAgKQ0KICAgICAgKHdo ZW4gd2lkLXR5cGUNCiAgICAgICAgKGRlbGV0ZS1yZWdpb24gYmVnIGVuZCkNCiAgICAgICAgKGJh Y2t3YXJkLWNoYXIpDQogICAgICAgIDs7KHRhZyBhY3Rpb24gYWN0aXZlIGhlbHAgaWNvbikNCiAg ICAgICAgKHdpZGdldC1jcmVhdGUgd2lkLXR5cGUNCiAgICAgICAgICAgICAgICAgICAgICAgOzt0 YWcNCiAgICAgICAgICAgICAgICAgICAgICAgOnZhbHVlIHZhbHVlDQogICAgICAgICAgICAgICAg ICAgICAgIDp0YWcgdGFnDQogICAgICAgICAgICAgICAgICAgICAgIDprZXltYXAgY3VzdG9tLW1v ZGUtbGluay1tYXANCiAgICAgICAgICAgICAgICAgICAgICAgOmZvbGxvdy1saW5rICdtb3VzZS1m YWNlDQogICAgICAgICAgICAgICAgICAgICAgIDpidXR0b24tZmFjZSAnY3VzdG9tLWxpbmsNCiAg ICAgICAgICAgICAgICAgICAgICAgOm1vdXNlLWZhY2UgJ2hpZ2hsaWdodA0KICAgICAgICAgICAg ICAgICAgICAgICA6cHJlc3NlZC1mYWNlICdoaWdobGlnaHQNCiAgICAgICAgICAgICAgICAgICAg ICAgOzs6aGVscC1lY2hvIGhlbHANCiAgICAgICAgICAgICAgICAgICAgICAgKSkpKSkNCiAgICAp DQoNCjs7IE92ZXJyaWRlIGRlZmF1bHQgLi4uIDstKQ0KKGRlZmluZS13aWRnZXQgJ2RvY3VtZW50 YXRpb24tbGluayAnbGluaw0KICAiTGluayB0eXBlIHVzZWQgaW4gZG9jdW1lbnRhdGlvbiBzdHJp bmdzLiINCiAgOzs6dGFiLW9yZGVyIC0xDQogIDpoZWxwLWVjaG8gIkRlc2NyaWJlIHRoaXMgc3lt Ym9sIg0KICA6YnV0dG9uLWZhY2UgJ2N1c3RvbS1saW5rDQogIDphY3Rpb24gJ3dpZGdldC1kb2N1 bWVudGF0aW9uLWxpbmstYWN0aW9uKQ0KDQooZGVmdW4gY3VzbnUteHJlZi1uaXkgKCZyZXN0IGln bm9yZSkNCiAgKG1lc3NhZ2UgIk5vdCBpbXBsZW1lbnRlZCB5ZXQiKSkNCg0KKGRlZnVuIGN1c251 LWRlc2NyaWJlLWZ1bmN0aW9uICh3aWQgJnJlc3QgaWdub3JlKQ0KICAobGV0ICgoZnVuICh3aWRn ZXQtZ2V0IHdpZCA6d2hhdCkpDQogICAgICAgICkNCiAgICAoZGVzY3JpYmUtZnVuY3Rpb24gZnVu KSkpDQoNCihkZWZ1biBjdXNudS1oZWxwLWluc2VydC14cmVmcyAoaGVscC14cmVmLWJ1dHRvbikN CiAgOzsgVGhlIGZvbGxvd2luZyBzaG91bGQgcHJvYmFibHkgYmUgYWJzdHJhY3RlZCBvdXQuDQog ICh1bndpbmQtcHJvdGVjdA0KICAgICAgKHByb2duDQogICAgICAgIDs7IEluZm8gcmVmZXJlbmNl cw0KICAgICAgICAoc2F2ZS1leGN1cnNpb24NCiAgICAgICAgICAod2hpbGUgKHJlLXNlYXJjaC1m b3J3YXJkIGhlbHAteHJlZi1pbmZvLXJlZ2V4cCBuaWwgdCkNCiAgICAgICAgICAgIChsZXQgKChk YXRhIChtYXRjaC1zdHJpbmcgMikpKQ0KICAgICAgICAgICAgICAoc2F2ZS1tYXRjaC1kYXRhDQog ICAgICAgICAgICAgICAgKHVubGVzcyAoc3RyaW5nLW1hdGNoICJeKFteKV0rKSIgZGF0YSkNCiAg ICAgICAgICAgICAgICAgIChzZXRxIGRhdGEgKGNvbmNhdCAiKGVtYWNzKSIgZGF0YSkpKSkNCiAg ICAgICAgICAgICAgKGZ1bmNhbGwgaGVscC14cmVmLWJ1dHRvbiAyICdoZWxwLWluZm8gZGF0YSkp KSkNCiAgICAgICAgOzsgVVJMcw0KICAgICAgICAoc2F2ZS1leGN1cnNpb24NCiAgICAgICAgICAo d2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkIGhlbHAteHJlZi11cmwtcmVnZXhwIG5pbCB0KQ0KICAg ICAgICAgICAgKGxldCAoKGRhdGEgKG1hdGNoLXN0cmluZyAxKSkpDQogICAgICAgICAgICAgIChm dW5jYWxsIGhlbHAteHJlZi1idXR0b24gMSAnaGVscC11cmwgZGF0YSkpKSkNCiAgICAgICAgOzsg TXVsZSByZWxhdGVkIGtleXdvcmRzLiAgRG8gdGhpcyBiZWZvcmUgdHJ5aW5nDQogICAgICAgIDs7 IGBoZWxwLXhyZWYtc3ltYm9sLXJlZ2V4cCcgYmVjYXVzZSBzb21lIG9mIE11bGUNCiAgICAgICAg Ozsga2V5d29yZHMgaGF2ZSB2YXJpYWJsZSBvciBmdW5jdGlvbiBkZWZpbml0aW9ucy4NCiAgICAg ICAgKGlmIGhlbHAteHJlZi1tdWxlLXJlZ2V4cA0KICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9u DQogICAgICAgICAgICAgICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgaGVscC14cmVmLW11bGUt cmVnZXhwIG5pbCB0KQ0KICAgICAgICAgICAgICAgIChsZXQqICgoZGF0YSAobWF0Y2gtc3RyaW5n IDcpKQ0KICAgICAgICAgICAgICAgICAgICAgICAoc3ltIChpbnRlcm4tc29mdCBkYXRhKSkpDQog ICAgICAgICAgICAgICAgICAoY29uZA0KICAgICAgICAgICAgICAgICAgICgobWF0Y2gtc3RyaW5n IDMpIDsgY29kaW5nIHN5c3RlbQ0KICAgICAgICAgICAgICAgICAgICAoYW5kIHN5bSAoY29kaW5n LXN5c3RlbS1wIHN5bSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCBoZWxwLXhy ZWYtYnV0dG9uIDYgJ2hlbHAtY29kaW5nLXN5c3RlbSBzeW0pKSkNCiAgICAgICAgICAgICAgICAg ICAoKG1hdGNoLXN0cmluZyA0KSA7IGlucHV0IG1ldGhvZA0KICAgICAgICAgICAgICAgICAgICAo YW5kIChhc3NvYyBkYXRhIGlucHV0LW1ldGhvZC1hbGlzdCkNCiAgICAgICAgICAgICAgICAgICAg ICAgICAoZnVuY2FsbCBoZWxwLXhyZWYtYnV0dG9uIDcgJ2hlbHAtaW5wdXQtbWV0aG9kIGRhdGEp KSkNCiAgICAgICAgICAgICAgICAgICAoKG9yIChtYXRjaC1zdHJpbmcgNSkgKG1hdGNoLXN0cmlu ZyA2KSkgOyBjaGFyc2V0DQogICAgICAgICAgICAgICAgICAgIChhbmQgc3ltIChjaGFyc2V0cCBz eW0pDQogICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgaGVscC14cmVmLWJ1dHRvbiA3 ICdoZWxwLWNoYXJhY3Rlci1zZXQgc3ltKSkpDQogICAgICAgICAgICAgICAgICAgKChhc3NvYyBk YXRhIGlucHV0LW1ldGhvZC1hbGlzdCkNCiAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgaGVs cC14cmVmLWJ1dHRvbiA3ICdoZWxwLWNoYXJhY3Rlci1zZXQgZGF0YSkpDQogICAgICAgICAgICAg ICAgICAgKChhbmQgc3ltIChjb2Rpbmctc3lzdGVtLXAgc3ltKSkNCiAgICAgICAgICAgICAgICAg ICAgKGZ1bmNhbGwgaGVscC14cmVmLWJ1dHRvbiA3ICdoZWxwLWNvZGluZy1zeXN0ZW0gc3ltKSkN CiAgICAgICAgICAgICAgICAgICAoKGFuZCBzeW0gKGNoYXJzZXRwIHN5bSkpDQogICAgICAgICAg ICAgICAgICAgIChmdW5jYWxsIGhlbHAteHJlZi1idXR0b24gNyAnaGVscC1jaGFyYWN0ZXItc2V0 IHN5bSkpKSkpKSkNCiAgICAgICAgOzsgUXVvdGVkIHN5bWJvbHMNCiAgICAgICAgKHNhdmUtZXhj dXJzaW9uDQogICAgICAgICAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZCBoZWxwLXhyZWYtc3lt Ym9sLXJlZ2V4cCBuaWwgdCkNCiAgICAgICAgICAgIChsZXQqICgoZGF0YSAobWF0Y2gtc3RyaW5n IDgpKQ0KICAgICAgICAgICAgICAgICAgIChzeW0gKGludGVybi1zb2Z0IGRhdGEpKSkNCiAgICAg ICAgICAgICAgKGlmIHN5bQ0KICAgICAgICAgICAgICAgICAgKGNvbmQNCiAgICAgICAgICAgICAg ICAgICAoKG1hdGNoLXN0cmluZyAzKSAgOyBgdmFyaWFibGUnICZjDQogICAgICAgICAgICAgICAg ICAgIChhbmQgKG9yIChib3VuZHAgc3ltKSA7IGB2YXJpYWJsZScgZG9lc24ndCBlbnN1cmUNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGl0J3MgYWN0dWFsbHkgYm91 bmQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdldCBzeW0gJ3ZhcmlhYmxlLWRvY3Vt ZW50YXRpb24pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIGhlbHAteHJlZi1i dXR0b24gOCAnaGVscC12YXJpYWJsZSBzeW0pKSkNCiAgICAgICAgICAgICAgICAgICAoKG1hdGNo LXN0cmluZyA0KSAgIDsgYGZ1bmN0aW9uJyAmYw0KICAgICAgICAgICAgICAgICAgICAoYW5kIChm Ym91bmRwIHN5bSkgOyBzaW1pbGFybHkNCiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2Fs bCBoZWxwLXhyZWYtYnV0dG9uIDggJ2hlbHAtZnVuY3Rpb24gc3ltKSkpDQogICAgICAgICAgICAg ICAgICAgKChtYXRjaC1zdHJpbmcgNSkgOyBgZmFjZScNCiAgICAgICAgICAgICAgICAgICAgKGFu ZCAoZmFjZXAgc3ltKQ0KICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIGhlbHAteHJl Zi1idXR0b24gOCAnaGVscC1mYWNlIHN5bSkpKQ0KICAgICAgICAgICAgICAgICAgICgobWF0Y2gt c3RyaW5nIDYpKSA7IG5vdGhpbmcgZm9yIGBzeW1ib2wnDQogICAgICAgICAgICAgICAgICAgKCht YXRjaC1zdHJpbmcgNykNCjs7OyAgdGhpcyB1c2VkOg0KOzs7IAkJCSAgIycobGFtYmRhIChhcmcp DQo7OzsgCQkJICAgICAgKGxldCAoKGxvY2F0aW9uDQo7OzsgCQkJCSAgICAgKGZpbmQtZnVuY3Rp b24tbm9zZWxlY3QgYXJnKSkpDQo7OzsgCQkJCShwb3AtdG8tYnVmZmVyIChjYXIgbG9jYXRpb24p KQ0KOzs7IAkJCQkoZ290by1jaGFyIChjZHIgbG9jYXRpb24pKSkpDQogICAgICAgICAgICAgICAg ICAgIChmdW5jYWxsIGhlbHAteHJlZi1idXR0b24gOCAnaGVscC1mdW5jdGlvbi1kZWYgc3ltKSkN CiAgICAgICAgICAgICAgICAgICAoKGFuZA0KICAgICAgICAgICAgICAgICAgICAgKGZhY2VwIHN5 bSkNCiAgICAgICAgICAgICAgICAgICAgIChzYXZlLW1hdGNoLWRhdGEgKGxvb2tpbmctYXQgIlsg XHRcbl0rZmFjZVxcVyIpKSkNCiAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgaGVscC14cmVm LWJ1dHRvbiA4ICdoZWxwLWZhY2Ugc3ltKSkNCiAgICAgICAgICAgICAgICAgICAoKGFuZCAob3Ig KGJvdW5kcCBzeW0pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZXQgc3ltICd2YXJp YWJsZS1kb2N1bWVudGF0aW9uKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAoZmJvdW5kcCBz eW0pKQ0KICAgICAgICAgICAgICAgICAgICA7OyBXZSBjYW4ndCBpbnR1aXQgd2hldGhlciB0byB1 c2UgdGhlDQogICAgICAgICAgICAgICAgICAgIDs7IHZhcmlhYmxlIG9yIGZ1bmN0aW9uIGRvYyAt LSBzdXBwbHkgYm90aC4NCiAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgaGVscC14cmVmLWJ1 dHRvbiA4ICdoZWxwLXN5bWJvbCBzeW0pKQ0KICAgICAgICAgICAgICAgICAgICgoYW5kDQogICAg ICAgICAgICAgICAgICAgICAob3IgKGJvdW5kcCBzeW0pDQogICAgICAgICAgICAgICAgICAgICAg ICAgKGdldCBzeW0gJ3ZhcmlhYmxlLWRvY3VtZW50YXRpb24pKQ0KICAgICAgICAgICAgICAgICAg ICAgKG9yDQogICAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50YXRpb24tcHJvcGVydHkNCiAg ICAgICAgICAgICAgICAgICAgICAgc3ltICd2YXJpYWJsZS1kb2N1bWVudGF0aW9uKQ0KICAgICAg ICAgICAgICAgICAgICAgIChjb25kaXRpb24tY2FzZSBuaWwNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgKGRvY3VtZW50YXRpb24tcHJvcGVydHkNCiAgICAgICAgICAgICAgICAgICAgICAgICAg IChpbmRpcmVjdC12YXJpYWJsZSBzeW0pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAndmFy aWFibGUtZG9jdW1lbnRhdGlvbikNCiAgICAgICAgICAgICAgICAgICAgICAgIChjeWNsaWMtdmFy aWFibGUtaW5kaXJlY3Rpb24gbmlsKSkpKQ0KICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCBo ZWxwLXhyZWYtYnV0dG9uIDggJ2hlbHAtdmFyaWFibGUgc3ltKSkNCiAgICAgICAgICAgICAgICAg ICAoKGZib3VuZHAgc3ltKQ0KICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCBoZWxwLXhyZWYt YnV0dG9uIDggJ2hlbHAtZnVuY3Rpb24gc3ltKSkpKSkpKQ0KICAgICAgICA7OyBBbiBvYnZpb3Vz IGNhc2Ugb2YgYSBrZXkgc3Vic3RpdHV0aW9uOg0KICAgICAgICAoc2F2ZS1leGN1cnNpb24NCiAg ICAgICAgICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkDQogICAgICAgICAgICAgICAgICA7OyBB c3N1bWUgY29tbWFuZCBuYW1lIGlzIG9ubHkgd29yZCBhbmQgc3ltYm9sDQogICAgICAgICAgICAg ICAgICA7OyBjaGFyYWN0ZXJzIHRvIGdldCB0aGluZ3MgbGlrZSBgdXNlIE0teCBmb28tPmJhcicu DQogICAgICAgICAgICAgICAgICA7OyBDb21tYW5kIHJlcXVpcmVkIHRvIGVuZCB3aXRoIHdvcmQg Y29uc3RpdHVlbnQNCiAgICAgICAgICAgICAgICAgIDs7IHRvIGF2b2lkIGAuJyBhdCBlbmQgb2Yg YSBzZW50ZW5jZS4NCiAgICAgICAgICAgICAgICAgICJcXDxNLXhcXHMtK1xcKFxcc3dcXChcXHN3 XFx8XFxzX1xcKSpcXHN3XFwpIiBuaWwgdCkNCiAgICAgICAgICAgIChsZXQgKChzeW0gKGludGVy bi1zb2Z0IChtYXRjaC1zdHJpbmcgMSkpKSkNCiAgICAgICAgICAgICAgKGlmIChmYm91bmRwIHN5 bSkNCiAgICAgICAgICAgICAgICAgIChmdW5jYWxsIGhlbHAteHJlZi1idXR0b24gMSAnaGVscC1m dW5jdGlvbiBzeW0pKSkpKQ0KICAgICAgICA7OyBMb29rIGZvciBjb21tYW5kcyBpbiB3aG9sZSBr ZXltYXAgc3Vic3RpdHV0aW9uczoNCiAgICAgICAgKHNhdmUtZXhjdXJzaW9uDQogICAgICAgICAg OzsgTWFrZSBzdXJlIHRvIGZpbmQgdGhlIGZpcnN0IGtleW1hcC4NCiAgICAgICAgICAoZ290by1j aGFyIChwb2ludC1taW4pKQ0KICAgICAgICAgIDs7IEZpbmQgYSBoZWFkZXIgYW5kIHRoZSBjb2x1 bW4gYXQgd2hpY2ggdGhlIGNvbW1hbmQNCiAgICAgICAgICA7OyBuYW1lIHdpbGwgYmUgZm91bmQu DQoNCiAgICAgICAgICA7OyBJZiB0aGUga2V5bWFwIHN1YnN0aXR1dGlvbiBpc24ndCB0aGUgbGFz dCB0aGluZyBpbg0KICAgICAgICAgIDs7IHRoZSBkb2Mgc3RyaW5nLCBhbmQgaWYgdGhlcmUgaXMg YW55dGhpbmcgb24gdGhlDQogICAgICAgICAgOzsgc2FtZSBsaW5lIGFmdGVyIGl0LCB0aGlzIGNv ZGUgd29uJ3QgcmVjb2duaXplIHRoZSBlbmQgb2YgaXQuDQogICAgICAgICAgKHdoaWxlIChyZS1z ZWFyY2gtZm9yd2FyZCAiXmtleSArYmluZGluZ1xuXFwoLSsgK1xcKS0rXG5cbiINCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbCB0KQ0KICAgICAgICAgICAgKGxldCAoKGNv bCAoLSAobWF0Y2gtZW5kIDEpIChtYXRjaC1iZWdpbm5pbmcgMSkpKSkNCiAgICAgICAgICAgICAg KHdoaWxlDQogICAgICAgICAgICAgICAgICAoYW5kIChub3QgKGVvYnApKQ0KICAgICAgICAgICAg ICAgICAgICAgICA7OyBTdG9wIGF0IGEgcGFpciBvZiBibGFuayBsaW5lcy4NCiAgICAgICAgICAg ICAgICAgICAgICAgKG5vdCAobG9va2luZy1hdCAiXG5cXHMtKlxuIikpKQ0KICAgICAgICAgICAg ICAgIDs7IFNraXAgYSBzaW5nbGUgYmxhbmsgbGluZS4NCiAgICAgICAgICAgICAgICAoYW5kIChl b2xwKSAoZm9yd2FyZC1saW5lKSkNCiAgICAgICAgICAgICAgICAoZW5kLW9mLWxpbmUpDQogICAg ICAgICAgICAgICAgKHNraXAtY2hhcnMtYmFja3dhcmQgIl4gXHRcbiIpDQogICAgICAgICAgICAg ICAgKGlmIChhbmQgKD49IChjdXJyZW50LWNvbHVtbikgY29sKQ0KICAgICAgICAgICAgICAgICAg ICAgICAgIChsb29raW5nLWF0ICJcXChcXHN3XFx8XFxzX1xcKSskIikpDQogICAgICAgICAgICAg ICAgICAgIChsZXQgKChzeW0gKGludGVybi1zb2Z0IChtYXRjaC1zdHJpbmcgMCkpKSkNCiAgICAg ICAgICAgICAgICAgICAgICAoaWYgKGZib3VuZHAgc3ltKQ0KICAgICAgICAgICAgICAgICAgICAg ICAgICAoZnVuY2FsbCBoZWxwLXhyZWYtYnV0dG9uIDAgJ2hlbHAtZnVuY3Rpb24gc3ltKSkpKQ0K ICAgICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUpKSkpKSkNCiAgICA7OyhzZXQtc3ludGF4LXRh YmxlIHN0YWIpDQogICAgKSkNCg0KKGRlZnVuIGN1c251LWluc2VydC1vcHRpb25zIChvcHRpb25z KQ0KICAod2lkZ2V0LWluc2VydCAiXG4iKQ0KICAoc2V0cSBjdXN0b20tb3B0aW9ucw0KICAgICAg ICAoYXBwZW5kDQogICAgICAgICAoaWYgKD0gKGxlbmd0aCBvcHRpb25zKSAxKQ0KICAgICAgICAg ICAgIChtYXBjYXIgKGxhbWJkYSAoZW50cnkpDQogICAgICAgICAgICAgICAgICAgICAgICh3aWRn ZXQtY3JlYXRlIChudGggMSBlbnRyeSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOzs6ZG9jdW1lbnRhdGlvbi1zaG93biB0DQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDpjdXN0b20tc3RhdGUgJ3Vua25vd24NCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOnRhZyAoY3VzdG9tLXVubGlzcGlmeS10YWctbmFtZQ0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnRoIDAgZW50cnkpKQ0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dmFsdWUgKG50aCAwIGVudHJ5KSkp DQogICAgICAgICAgICAgICAgICAgICBvcHRpb25zKQ0KICAgICAgICAgICAobGV0ICgoY291bnQg MCkNCiAgICAgICAgICAgICAgICAgKGxlbmd0aCAobGVuZ3RoIG9wdGlvbnMpKSkNCiAgICAgICAg ICAgICAobWFwY2FyIChsYW1iZGEgKGVudHJ5KQ0KICAgICAgICAgICAgICAgICAgICAgICAocHJv ZzINCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZXNzYWdlICJDcmVhdGluZyBjdXN0b21p emF0aW9uIGl0ZW1zIC4uLiUyZCUlIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKC8gKCogMTAwLjAgY291bnQpIGxlbmd0aCkpDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAod2lkZ2V0LWNyZWF0ZSAobnRoIDEgZW50cnkpDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA6dGFnIChjdXN0b20tdW5saXNwaWZ5LXRhZy1uYW1lDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnRoIDAgZW50cnkpKQ0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnZhbHVlIChudGggMCBl bnRyeSkpDQogICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgY291bnQgKDErIGNvdW50KSkN CiAgICAgICAgICAgICAgICAgICAgICAgICAodW5sZXNzIChlcSAocHJlY2VkaW5nLWNoYXIpID9c bikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aWRnZXQtaW5zZXJ0ICJcbiIpKQ0KICAg ICAgICAgICAgICAgICAgICAgICAgICh3aWRnZXQtaW5zZXJ0ICJcbiIpKSkNCiAgICAgICAgICAg ICAgICAgICAgIG9wdGlvbnMpKSkNCiAgICAgICAgIGN1c3RvbS1vcHRpb25zKSkNCiAgKHVubGVz cyAoZXEgKHByZWNlZGluZy1jaGFyKSA/XG4pDQogICAgKHdpZGdldC1pbnNlcnQgIlxuIikpDQog ICkNCg0KKGRlZmluZS13aWRnZXQgJ2N1c3RvbS1zeW1ib2wgJ3N5bWJvbA0KICAiQSBDdXN0b20g b3B0aW9uLiINCiAgOnByb21wdC1tYXRjaCAobGFtYmRhIChzeW0pIChnZXQgc3ltICdjdXN0b20t dHlwZSkpDQogIDpwcm9tcHQtaGlzdG9yeSAnd2lkZ2V0LXZhcmlhYmxlLXByb21wdC12YWx1ZS1o aXN0b3J5DQogIDpjb21wbGV0ZS1mdW5jdGlvbiAobGFtYmRhICgpDQoJCSAgICAgICAoaW50ZXJh Y3RpdmUpDQoJCSAgICAgICAobGlzcC1jb21wbGV0ZS1zeW1ib2wgKGxhbWJkYSAoc3ltKSAoZ2V0 IHN5bSAnY3VzdG9tLXR5cGUpKSkpDQogIDp0YWcgIkN1c3RvbSBvcHRpb24iKQ0KDQooZGVmY3Vz dG9tIGN1c251LW15LXNraW4tb3B0aW9ucyBuaWwNCiAgIk15IGN1c3R1bSBvcHRpb25zLg0KWW91 IGNhbiBleHBvcnQgdGhlc2UgdG8gYSBmaWxlIHdpdGgNCmBjdXNudS1leHBvcnQtbXktc2tpbi1v cHRpb25zJyBzbyB0aGF0IG90aGVycyBjYW4gdXNlIHRoZW0uIg0KICA6dHlwZSAnKHJlcGVhdCBj dXN0b20tc3ltYm9sKQ0KICApDQoNCihkZWZ1biBjdXNudS1leHBvcnQtbXktc2tpbi1vcHRpb25z IChmaWxlKQ0KICAiRXhwb3J0IHRvIGZpbGUgRklMRSBjdXN0b20gb3B0aW9ucyBpbiBgY3VzbnUt bXktc2tpbi1vcHRpb25zJy4iDQogIChpbnRlcmFjdGl2ZSAiRlRvIGZpbGU6ICIpDQogICh3aGVu IChmaWxlLWV4aXN0cy1wIGZpbGUpDQogICAgKGVycm9yICJGaWxlICVzIGFscmVhZHkgZXhpc3Rz IiBmaWxlKSkNCiAgKGxldCAoKGJ1ZiAoZmluZC1maWxlIGZpbGUpKQ0KICAgICAgICBzdGFydCkN CiAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWYNCiAgICAgIChlcmFzZS1idWZmZXIpDQogICAg ICAoaW5zZXJ0IChmb3JtYXQtdGltZS1zdHJpbmcgIjs7IEhlcmUgYXJlIG15IGRlZmF1bHQgb3B0 aW9ucyB2YWx1ZXMgJVktJW0tJWQuXG4iKSkNCiAgICAgIChpbnNlcnQNCiI7OyBFdmFsIHRoaXMg ZWxpc3AgZmlsZSB0byB0ZXN0IHRoZW0gYW5kIHRoZW4gZG8NCjs7DQo7OyAgICBNLXggY3VzdG9t aXplLXNhdmUtY3VzdG9taXplZA0KOzsNCjs7IGlmIHlvdSB3YW50IHRvIGtlZXAgdGhlbS4NCjs7 DQo7OyBIZXJlIGFyZSB0aGUgb3B0aW9ucyBJIGhhdmUgY2hvb3NlbiB0byBleHBvcnQ6XG4iKQ0K ICAgICAgKGluc2VydCAoZm9ybWF0ICI7OyhjdXN0b21pemUtc2V0LXZhcmlhYmxlICdjdXNudS1t eS1za2luLW9wdGlvbnNcbiIpKQ0KICAgICAgKHNldHEgc3RhcnQgKHBvaW50KSkNCiAgICAgIChp bnNlcnQgKGZvcm1hdCAiOzsgICAgICAgICVTKVxuXG4iIGN1c251LW15LXNraW4tb3B0aW9ucykp DQogICAgICAoZW1hY3MtbGlzcC1tb2RlKQ0KICAgICAgKGZpbGwtcmVnaW9uIHN0YXJ0IChwb2lu dCkpDQogICAgICAoZG9saXN0IChvcHQgY3VzbnUtbXktc2tpbi1vcHRpb25zKQ0KICAgICAgICAo bGV0ICgobXktdmFsIChjYXItc2FmZQ0KICAgICAgICAgICAgICAgICAgICAgICAob3IgKGdldCBv cHQgJ3NhdmVkLXZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdldCBvcHQgJ2N1 c3RvbWl6ZWQtdmFsdWUpKSkpKQ0KICAgICAgICAgICh3aGVuIG15LXZhbA0KICAgICAgICAgICAg KGluc2VydCAoZm9ybWF0ICIoY3VzdG9taXplLXNldC12YXJpYWJsZSAnJXMgJVMpXG4iIG9wdCBt eS12YWwpKSkpKQ0KICAgICAgKSkpDQoNCihwcm92aWRlICdjdXMtbmV3LXVzZXIpDQo7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7DQo7OzsgY3VzLW5ldy11c2VyLmVsIGVuZHMgaGVyZQ0K --001636c5a7e80cb853046e5fd689--