From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Christopher Genovese Newsgroups: gmane.emacs.devel Subject: Re: Ibuffer improvements: filtering, documentation, bug fix, tests Date: Wed, 30 Nov 2016 22:10:58 -0500 Message-ID: References: <877f7zhg79.fsf@gmail.com> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a1141f18cdd6fbe0542902c27 X-Trace: blaine.gmane.org 1480561910 6814 195.159.176.226 (1 Dec 2016 03:11:50 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Thu, 1 Dec 2016 03:11:50 +0000 (UTC) Cc: emacs-devel To: Tino Calancha Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Dec 01 04:11:43 2016 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cCHmg-0000Nx-7O for ged-emacs-devel@m.gmane.org; Thu, 01 Dec 2016 04:11:42 +0100 Original-Received: from localhost ([::1]:47797 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cCHmk-0001w9-0q for ged-emacs-devel@m.gmane.org; Wed, 30 Nov 2016 22:11:46 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:44721) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cCHmS-0001jG-3p for emacs-devel@gnu.org; Wed, 30 Nov 2016 22:11:35 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cCHmK-0001CX-CK for emacs-devel@gnu.org; Wed, 30 Nov 2016 22:11:28 -0500 Original-Received: from mail-io0-x232.google.com ([2607:f8b0:4001:c06::232]:32812) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cCHmJ-0001Ax-Ty for emacs-devel@gnu.org; Wed, 30 Nov 2016 22:11:20 -0500 Original-Received: by mail-io0-x232.google.com with SMTP id j65so392391626iof.0 for ; Wed, 30 Nov 2016 19:11:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=AwNKArGD3iziuGSnm5BWIDeXiSf8gDuogIholcEdPr8=; b=Bwbp6e021Jtpl+arfy0qabF/H5bz4WSL32Y5YQtG2ZYobA6lCFeRYIwtNDjvYA+4ut JFRm7IlA/WfQ/I/o6At24kwo9OYAesCZxB6clanXxDgowBJ/3+xZ7eyrhjIOW+v64s8k SDDq8VoZA0l7SiaI4Gl+7qzoNQ0pr8YZrSOq81ussG5SNQ1kDJh4fEekVLszifGFw1M7 rrQhKu/UAhpOXWiITLaXBrS2LpaHnoeys/L1HMhXYx8Pl0h2pKmpMB9euY6Cm4Yqw/IX b8JSW7dV3coDsFXgpgRY1t8rcibKFggJMCB3fol+uYShMgTBbdzL/SY+gNbuCHWdCMWX p0Fg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=AwNKArGD3iziuGSnm5BWIDeXiSf8gDuogIholcEdPr8=; b=A82JJmq5P1AT4b8YXKFhQjFz4N2C+veIwy49RptGJxBXlT5CWkf0Ex/RDFmkplthij Q2+C2GUUS9VZlnyZ3XqJeY+ISCIz4jkBrg49Kiyic7yEoShXCJMPdLd8bMfU/6wZBRxZ iDGNvbGwosDm0taNAdKQojzHp1qYBAJiCG8z/GReU4S9UfWYEq5GpCtRmPSHRhWe74ja 76i/44T2NQkGP5p2uDIzRss96Jgsw5WG2R/rdhCgXX+GQvINdn450l7A+MgFishMa6ml g+pSUMU9qVlEMKaSNX9x4UbYPj3dkst7io8SwqUbbHKq9UWS3b64Ilfhv7qmHPDLJa8x X1Ig== X-Gm-Message-State: AKaTC00mzJj+TilImt1aDAb8D0Eog2Wb+RBRJYpsPEJb/qT24rHWybsDP4y7NtlZmDkbP4kZFbKfCPJapc6NCw== X-Received: by 10.107.165.139 with SMTP id o133mr29511386ioe.42.1480561878974; Wed, 30 Nov 2016 19:11:18 -0800 (PST) Original-Received: by 10.107.59.143 with HTTP; Wed, 30 Nov 2016 19:10:58 -0800 (PST) In-Reply-To: X-Google-Sender-Auth: boIV3P9W4cPDU9bKhXSgZVgmIMY X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4001:c06::232 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:209854 Archived-At: --001a1141f18cdd6fbe0542902c27 Content-Type: multipart/alternative; boundary=001a1141f18cdd6fba0542902c25 --001a1141f18cdd6fba0542902c25 Content-Type: text/plain; charset=UTF-8 Tino, Sorry it took so long to get this to you; it's been a crazy week. I've attached a patch file with all the changes we have discussed (except one, see below) to the code, change logs, and NEWS and with the saved filter bug changes completely removed as you requested. This is all up to date with the current master. I think the patch has everything, but let me know if I missed something. The one change I did not make is to the ibuffer-filter-by-directory filter as discussed in your most recent note. My intent with that one is to make it easy to filter on the directory component of a filename (or of the buffer) without patterns in the filename interfering. I don't see the advantage of conflating this with dired mode or adding a prefix, especially as the two functionalities are not intuitively comparable. I'm happy to discuss this, but I left it in the way I prefer for the time being. Thanks again for your help, suggestions, and patience. Regards, Chris On Sat, Nov 26, 2016 at 5:53 AM, Tino Calancha wrote: > > Hi Christopher, > > thank you very much for your time working on this! > I have checked your newest changes and i got a few additional > comments. See below. > > I haven't had a chance yet to split the commit to isolate the >> saved filters fix, but I will do that tomorrow and submit >> appropriate patches and bug reports. >> > Very good. That would be helpful. Thank you. > > The buffer name filter you suggest is already available as >> ibuffer-filter-by-name (/ n). >> > Right! I totally overlooked that. > > 1. Add a `ibuffer-filter-by-visiting-file' (/ v) that selects >> buffers that are visiting a file. >> > +(define-ibuffer-filter visiting-file > + "Limit current view to buffers that are visiting a file. > +This includes buffers visiting a directory in dired." > I wouldn't include Dired buffers here. In Emacs a buffer > visiting a file means a non-directory file. For instance, > look doc string of `buffer-file-name'. > > I suggest instead: > (define-ibuffer-filter visiting-file > "Limit current view to buffers that are visiting a file." > (:description "visiting a file" > :reader nil) > (with-current-buffer buf buffer-file-name)) > > `ibuffer-filter-by-directory' and changed the functionality so that >> in a file buffer it matches against the file's path but in a >> non-file buffer matches against default-directory. >> > I am wondering if it's worth to have the `ibuffer-filter-by-directory' > in the way you are proposing. I guess `ibuffer-filter-by-filename' > would suffice most of the times. > In the other hand we have `ibuffer-mark-dired-buffers' bound to '*/' > that is handy. We might want `ibuffer-filter-by-directory' to do > the symmetric thing: that is, to filter buffers in Dired mode, i.e., > like a shortcut for '/ m' dired-mode RET. > > Alternatively we could accept a prefix in this command: > 1) Without prefix, just filter buffers in Dired mode. > 2) With a prefix, behave as you wish, as follows: > > (define-ibuffer-filter directory > "Limit current view to Dired buffers. > > With prefix argument prompt for a regexp and show just > those buffers with their directory matching that regexp. > > For a buffer associated with file '/a/b/c.d', this matches > against '/a/b'. For a buffer not associated with a file, this > matches against the value of `default-directory' in that buffer." > (:description "directory name" > :reader (and current-prefix-arg > (read-from-minibuffer "Filter by directory > name (regex): "))) > (with-current-buffer buf > (if qualifier > (let ((dirname > (ibuffer-aif (ibuffer-buffer-file-name) > (file-name-directory it) > default-directory))) > (and dirname (string-match qualifier dirname))) > (eq major-mode 'dired-mode)))) > > This means the command do a different thing if we provide the prefix. > I don't know what approach is more useful. > Does 1) or 2) has sense for you? > > 3. Keep the `ibuffer-filter-by-basename', making the name >> > I saw you bound this command to '/ b'. Good! > I find easier to remember and type '/ b' than '/ F'. > > (Note: '/ d' is already bound to ibuffer-decompose-filter or I would have >> used it. >> > Opps! I didn't notice this. Thanks. > > I think the new bindings are highly mnemonic and will happily advocate >> for them. But the need for consensus makes total sense. >> I felt that the change I made keeps the mnemonic strong. >> > Once we are happy with the changes we might ask opinion to other > colleagues in Emacs-dev about what to do with the bindings. > > Your commit message don't follow the Emacs standards. >>> >> I've fixed this on the new commit. >> * lisp/ibuf-ext.el: added paragraph to file commentary, along >> > ^^^^^ > >> (ibuffer-saved-filters): clarified documentation, >> > ^^^^^^^^^ Please, start sentences with upper > case. > > > You might want to write NEWS entry for the new features. >>> >> Done, and included in this commit/patch. >> > Thank you. They like quite verbose for NEWS entries. We just need > to announce the changes. It's OK to group all new commands > in the same entry. > Let's ignore the entry for the bug fix. We will back to that issue > once we open the bug report. > I suggest the following shorter entries: > --- > *** New filter commands `ibuffer-filter-by-basename', > `ibuffer-filter-by-file-extension', `ibuffer-filter-by-directory', > `ibuffer-filter-by-starred-name', `ibuffer-filter-by-modified' > and `ibuffer-filter-by-visiting-file'; bound respectively > to '/b', '/.', '//', '/*', '/i' and '/v'. > > --- > *** Two new commands 'ibuffer-filter-chosen-by-completion' > and `ibuffer-and-filter'; bound to '/ TAB' and '/&' > respectively. > > --- > *** The key binding for `ibuffer-filter-disable' has being changed > to '/DEL'; the commands `ibuffer-pop-filter', `ibuffer-pop-filter-group' > and `ibuffer-or-filter' have the alternative bindings '/', '/S-' > and '/|'. > > Could you create a receipt where the bug cause an actual failure? >>> >> As you can see, the existing entry "gnus" breaks the expected format. >> So to be more precise than I was earlier: In addition to the unnecessary >> nesting level, this breaks anytime you save to an existing filter. >> > You are right, it seems there is a bug. > > I will pull out the saved filter changes and submit a >> formal bug report with patches for the two approaches, making >> the other ibuffer changes independent. >> > That will be very useful. Thank you. > > Regards, > Tino > --001a1141f18cdd6fba0542902c25 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Tino,

=C2=A0 Sorry i= t took so long to get this to you; it's been a crazy week.
I&#= 39;ve attached a patch file with all the changes we have discussed
(except one, see below) to the code, change logs, and NEWS
and with the= saved filter bug changes completely removed as you
requested.=C2=A0 Thi= s is all up to date with the current master. I think
the patc= h has everything, but let me know if I missed something.

= =C2=A0 The one change I did not make is to the ibuffer-filter-by-directory<= br>
filter as discussed in your most recent note.=C2=A0 My intent= with that
one is to make it easy to filter on the directory component = of a
filename (or of the buffer) without patterns in the filename inter= fering.
I don't see the advantage of conflating this with= dired mode
or adding a prefix, especially as the two functio= nalities are
not intuitively comparable.=C2=A0 I'm happy = to discuss this, but
I left it in the way I prefer for the ti= me being.

=C2=A0Thanks again for your help, suggestions, = and patience.

=C2=A0 Regards, Chris





On Sat, Nov 26, 2016 at 5:53 AM, Tino Calancha <tino.calancha@gmail.com> wrote:

Hi Christopher,

thank you very much for your time working on this!
I have checked your newest changes and i got a few additional
comments.=C2=A0 See below.

I haven't had a chance yet to split the commit to isolate the
saved filters fix, but I will do that tomorrow and submit
appropriate patches and bug reports.
Very good.=C2=A0 That would be helpful.=C2=A0 Thank you.
The buffer name filter you suggest is already available as
ibuffer-filter-by-name (/ n).
Right! I totally overlooked that.

1. Add a `ibuffer-filter-by-visiting-file' (/ v) that selects
=C2=A0 =C2=A0buffers that are visiting a file.
+(define-ibuffer-filter visiting-file
+=C2=A0 =C2=A0 "Limit current view to buffers that are visiting a file= .
+This includes buffers visiting a directory in dired."
I wouldn't include Dired buffers here.=C2=A0 In Emacs a buffer
visiting a file means a non-directory file.=C2=A0 For instance,
look doc string of `buffer-file-name'.

I suggest instead:
(define-ibuffer-filter visiting-file
=C2=A0 =C2=A0 "Limit current view to buffers that are visiting a file.= "
=C2=A0 (:description "visiting a file"
=C2=A0 =C2=A0:reader nil)
=C2=A0 (with-current-buffer buf buffer-file-name))

`ibuffer-filter-by-directory' and changed the functionality so that
in a file buffer it matches against the file's path but in a
non-file buffer matches against default-directory.
I am wondering if it's worth to have the `ibuffer-filter-by-directory&#= 39;
in the way you are proposing.=C2=A0 I guess `ibuffer-filter-by-filename'= ;
would suffice most of the times.
In the other hand we have `ibuffer-mark-dired-buffers' bound to '*/= '
that is handy.=C2=A0 We might want `ibuffer-filter-by-directory' to do<= br> the symmetric thing: that is, to filter buffers in Dired mode, i.e.,
like a shortcut for '/ m' dired-mode RET.

Alternatively we could accept a prefix in this command:
1) Without prefix, just filter buffers in Dired mode.
2) With a prefix, behave as you wish, as follows:

(define-ibuffer-filter directory
=C2=A0 =C2=A0 "Limit current view to Dired buffers.

With prefix argument prompt for a regexp and show just
those buffers with their directory matching that regexp.

For a buffer associated with file '/a/b/c.d', this matches
against '/a/b'. For a buffer not associated with a file, this
matches against the value of `default-directory' in that buffer."<= br> =C2=A0 (:description "directory name"
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 :reader (and curren= t-prefix-arg
=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(read-from-minibuffer "Filter by direct= ory name (regex): ")))
=C2=A0 (with-current-buffer buf
=C2=A0 =C2=A0 (if qualifier
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (let ((dirname
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(ibuffer-aif (ibuffe= r-buffer-file-name)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(file-= name-directory it)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0default-direc= tory)))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (and dirname (string-match qualifier dir= name)))
=C2=A0 =C2=A0 =C2=A0 (eq major-mode 'dired-mode))))

This means the command do a different thing if we provide the prefix.
I don't know what approach is more useful.
Does 1) or 2) has sense for you?

3. Keep the `ibuffer-filter-by-basename', making the name
I saw you bound this command to '/ b'.=C2=A0 Good!
I find easier to remember and type '/ b' than '/ F'.

(Note: '/ d' is already bound to ibuffer-decompose-filter or I woul= d have
used it.
Opps!=C2=A0 I didn't notice this.=C2=A0 Thanks.

I think the new bindings are highly mnemonic and will happily advocate
for them. But the need for consensus makes total sense.
I felt that the change I made keeps the mnemonic strong.
Once we are happy with the changes we might ask opinion to other
colleagues in Emacs-dev about what to do with the bindings.

Your commit message=C2=A0 don't follow the Emacs standards.
I've fixed this on the new commit.
* lisp/ibuf-ext.el: added paragraph to file commentary, along
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0^^^^^
(ibuffer-saved-filters): clarified documentation,
=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 ^^^^^^^^^ Please, start sentences with upper case.


You might want to write NEWS entry for the new features.
Done, and included in this commit/patch.
Thank you.=C2=A0 They like quite verbose for NEWS entries.=C2=A0 We just ne= ed
to announce the changes.=C2=A0 It's OK to group all new commands
in the same entry.
Let's ignore the entry for the bug fix.=C2=A0 We will back to that issu= e
once we open the bug report.
I suggest the following shorter entries:
---
*** New filter commands `ibuffer-filter-by-basename',
`ibuffer-filter-by-file-extension', `ibuffer-filter-by-directory&#= 39;,
`ibuffer-filter-by-starred-name', `ibuffer-filter-by-modified'=
and `ibuffer-filter-by-visiting-file'; bound respectively
to '/b', '/.', '//', '/*', '/i' and= '/v'.

---
*** Two new commands 'ibuffer-filter-chosen-by-completion'
and `ibuffer-and-filter'; bound to '/ TAB' and '/&'=
respectively.

---
*** The key binding for `ibuffer-filter-disable' has being changed
to '/DEL'; the commands `ibuffer-pop-filter', `ibuffer-pop-filt= er-group'
and `ibuffer-or-filter' have the alternative bindings '/<up>&= #39;, '/S-<up>'
and '/|'.

Could you create a receipt where the bug cause an actual failure?
As you can see, the existing entry "gnus" breaks the expected for= mat.
So to be more precise than I was earlier: In addition to the unnecessary nesting level, this breaks anytime you save to an existing filter.
You are right, it seems there is a bug.

I will pull out the saved filter changes and submit a
formal bug report with patches for the two approaches, making
the other ibuffer changes independent.
That will be very useful.=C2=A0 Thank you.

Regards,
Tino

--001a1141f18cdd6fba0542902c25-- --001a1141f18cdd6fbe0542902c27 Content-Type: text/x-diff; charset=US-ASCII; name="ibuffer-and-filters-revised.patch" Content-Disposition: attachment; filename="ibuffer-and-filters-revised.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iw5s7cd00 RnJvbSAwM2MyODYzOTNjNmM4YzgzZDQxMjA4MDdjNzQ5ZjM4MTE1YjQ5MTZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiQ2hyaXN0b3BoZXIgUi4gR2Vub3Zlc2UiIDxnZW5vdmVzZUBj bXUuZWR1PgpEYXRlOiBUaHUsIDE3IE5vdiAyMDE2IDAwOjQ0OjI3IC0wNTAwClN1YmplY3Q6IFtQ QVRDSF0gSWJ1ZmZlciByZWZpbmVtZW50czogZmlsdGVycywgZG9jdW1lbnRhdGlvbiwgdGVzdHMK ClN1bW1hcnkgb2Ygb3ZlcmFsbCBjaGFuZ2VzOgoKKyBFeHRlbmRzIHNwZWNpZmljYXRpb24gb2Yg Y29tcG91bmQgZmlsdGVycwoKICAxLiBTdXBwb3J0cyAqZXhwbGljaXQqIGxvZ2ljYWwgJ2FuZCcg Y29tcG91bmQgZmlsdGVyIHRvCiAgc3VwcGxlbWVudCAnb3InIGFuZCAnbm90Jywgd2hpY2ggY2Fu IGJlIGNvbnZlbmllbnQgZm9yIGNvbXBsZXgKICBydWxlcywgZXNwZWNpYWxseSB0aG9zZSBjcmVh dGVkIG1hbnVhbGx5LgoKICAyLiBBY2NlcHRzIHR3byBmb3JtcyBvZiBsb2dpY2FsICdub3QnOiAo bm90IHF1YWxpZmllciAuIGRhdGEpCiAgYW5kIChub3QgKHF1YWxpZmllciAuIGRhdGEpKS4gVGhl IG9yaWdpbmFsIGxvb2tzIG5pY2Ugd2l0aAogIG51bGxhcnkgZmlsdGVycyBsaWtlIChub3QgbW9k aWZpZWQpLCBhbmQgdGhlIG5ldyBmb3JtIGlzCiAgcGxlYXNhbnRseSBjb25zaXN0ZW50IHdpdGgg c2V4cCBzdHJ1Y3R1cmUgb2YgJ2FuZCcgYW5kICdvcicuCgorIFNpZ25pZmljYW50IGRvY3VtZW50 YXRpb24gaW1wcm92ZW1lbnRzIGZvciBmaWx0ZXJpbmcKCiAgVGhlIHN0cnVjdHVyZSBvZiBjb21w b3VuZCBmaWx0ZXJzIGhhZCBub3QgYmVlbiBkb2N1bWVudGVkLiBUaGUKICBuZXcgZG9jdW1lbnRh dGlvbiBnaXZlcyBhbiBhdXRob3JpdGF0aXZlIHNvdXJjZSBmb3IgZWFjaAogIGNvbmNlcHQgYW5k IG1ha2VzIHRoZSBsYW5ndWFnZSB1c2VkIHRocm91Z2hvdXQgbW9yZSBjbGVhciBhbmQKICBjb25z aXN0ZW50IChlLmcuLCBkaXN0aW5ndWlzaGluZyBxdWFsaWZpZXIgZGF0YSBmcm9tIGdlbmVyYWwK ICBmaWx0ZXIgc3BlY2lmaWNhdGlvbnMpLgoKKyBEZWZpbmVzIHNldmVyYWwgY29tbW9ubHkgbmVl ZGVkIGZpbHRlcnMKCiAgVGhlIG5ldyBmaWx0ZXJzIGFyZSBiYXNlbmFtZSwgZGlyZWN0b3J5LCBm aWxlLWV4dGVuc2lvbiwKICBzdGFycmVkLW5hbWUsIG1vZGlmaWVkLCBhbmQgdmlzaXRpbmctZmls ZSwgZWFjaCBib3VuZCB0bwogIG1uZW1vbmljIGtleXMgaW4gdGhlICcvICcgZmlsdGVyaW5nIGtl eW1hcC4KCisgTmV3IGludGVyYWN0aXZlIGZpbHRlcmluZyBjb21tYW5kCgogIE5ldyBjb21tYW5k ICdpYnVmZmVyLWZpbHRlci1jaG9zZW4tYnktY29tcGxldGlvbicgdG8gc2VsZWN0IGEgZmlsdGVy CiAgYnkgY29tcGxldGlvbiBvbiBmaWx0ZXIgZGVzY3JpcHRpb25zLgoKKyBUd28gY2hhbmdlcyBp biBmaWx0ZXJpbmcgJy8gJyAgc3ViLWtleW1hcAoKICAnLyBUQUInLCB3aGljaCB3YXMgYW4gYWx0 ZXJuYXRpdmUgYmluZGluZyB0byAnaWJ1ZmZlci1leGNoYW5nZS1maWx0ZXJzJwogICAgICAgICAg IG9uICcvIHQnIGlzIG5vdyBib3VuZCB0byAnaWJ1ZmZlci1maWx0ZXItY2hvc2VuLWJ5LWNvbXBs ZXRpb24KCiAgJy8gLycsICAgd2hpY2ggd2FzIGJvdW5kIHRvICdpYnVmZmVyLWZpbHRlci1kaXNh YmxlJyBpcyBub3cgYm91bmQKICAgICAgICAgICB0byAnaWJ1ZmZlci1maWx0ZXItYnktZGlyZWN0 b3J5Jy4gJ2lidWZmZXItZmlsdGVyLWRpc2FibGUnCiAgICAgICAgICAgaGFzIGJlZW4gbW92ZWQg dG8gJy8gREVMJy4KCiAgSSBiZWxpZXZlIHRoZXNlIGFyZSBhbGwgbWVhbmluZ2Z1bCBhbmQgbW5l bW9uaWMgY2hvaWNlcywgYnV0IHRoZQogIGNoYW5nZSBzaG91bGQgYmUgZGVjaWRlZCBieSBjb25z ZW5zdXMuCgorIEZpeGVzIHNtYWxsIGJ1ZyBpbiBvcmlnaW5hbCB0ZXN0CgogIFRoZSBvbmUgb3Jp Z2luYWwgdGVzdCBmYWlsZWQgdW5leHBlY3RlZGx5IGlmIGlidWYtZXh0IHdlcmUKICBsb2FkZWQu CgorIEFkZHMgYSBzdWJzdGFudGlhbCBudW1iZXIgb2YgYWRkaXRpb25hbCB0ZXN0cyB3aXRoIGZl YXR1cmUgaWJ1Zi1leHQKCiAgTWFueSBuZXcgdGVzdHMgaW4gZXJ0LCBsZWF2aW5nIHRoZSBlbnZp cm9ubWVudCB1bnRvdWNoZWQsCiAgY292ZXIgbW9zdCBhc3BlY3RzIG9mIGZpbHRlcmluZywgb2xk IGFuZCBuZXcuCgpDaGFuZ2UgTG9nOgoKKiBsaXNwL2lidWYtZXh0LmVsOiBBZGQgcGFyYWdyYXBo IHRvIGZpbGUgY29tbWVudGFyeSwgYWxvbmcKd2l0aCBtYW55IHNtYWxsIGltcHJvdmVtZW50cyB0 aHJvdWdob3V0IHRvIGRvY3N0cmluZ3MsCnZhcmlhYmxlIG5hbWluZywgYW5kIHNwYWNpbmcuCihp YnVmZmVyLXNhdmVkLWZpbHRlcnMpOiBDbGFyaWZ5IGRvY3VtZW50YXRpb24gYW5kCnNwZWNpZnkg Y3VzdG9taXphdGlvbiB0eXBlLgooaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycyk6IEltcHJv dmUgZG9jdW1lbnRhdGlvbiwKbWFraW5nIGl0IHRoZSBhdXRob3JpdGF0aXZlIHNvdXJjZSBmb3Ig ZmlsdGVyIHNwZWNpZmljYXRpb24KZm9ybWF0LgooaWJ1ZmZlci1maWx0ZXItZ3JvdXBzKTogQWRk IG5ldyBkb2N1bWVudGF0aW9uIHRoYXQKY2xhcmlmaWVzIGZpbHRlciBncm91cCBzdHJ1Y3R1cmUg YW5kIHJvbGUuCihpYnVmZmVyLXVuYXJ5LW9wZXJhbmQpOiBBZGQgbmV3IGZ1bmN0aW9uIHRoYXQg dHJhbnNwYXJlbnRseQpoYW5kbGVzICdub3QnIGZvcm1hdHMgZm9yIGNvbXBvdW5kIGZpbHRlcnMu CihpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlci1wKTogQWRkIG5ldyBkb2NzdHJpbmcKYW5kIGhh bmRsZSAnbm90JyBmdWxseS4KKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVyLXAtMSk6IEhhbmRs ZSAnYW5kJyBjb21wb3VuZCBmaWx0ZXJzLgooaWJ1ZmZlci1kZWNvbXBvc2UtZmlsdGVyKTogSGFu ZGxlICdhbmQnIGFzIHdlbGwsCmFuZCBoYW5kbGUgJ25vdCcgY29uc2lzdGVudGx5IHdpdGggb3Ro ZXIgdXNlcy4KKGlidWZmZXItYW5kLWZpbHRlcik6IEFkZCBuZXcgZnVuY3Rpb24gYW5hbG9nb3Vz IHRvCmBpYnVmZmVyLW9yLWZpbHRlcicgZm9yIGNvbXBsZXRlbmVzcy4KKGlidWZmZXItLW9yLWFu ZC1maWx0ZXIpOiBBZGQgbmV3IGZ1bmN0aW9uIHRoYXQgaGFuZGxlcwpib3RoICdvcicgYW5kICdh bmQnIG9wZXJhdGlvbnMgYW5kIGludmVyc2VzLgooaWJ1ZmZlci1mb3JtYXQtcXVhbGlmaWVyKTog SGFuZGxlICdhbmQnIGZpbHRlcnMgYXMgd2VsbC4KbGlzcC9pYnVmLWV4dC5lbCAoaWJ1ZmZlci1m aWx0ZXItYnktKik6IEFkZCBuZXcgcHJlLWRlZmluZWQKZmlsdGVycyBiYXNlbmFtZSwgZmlsZS1l eHRlbnNpb24sIGRpcmVjdG9yeSwgc3RhcnJlZC1uYW1lLCBtb2RpZmllZCwKYW5kIHZpc2l0aW5n LWZpbGUuCihpYnVmZmVyLWZpbHRlci1jaG9zZW4tYnktY29tcGxldGlvbik6IEFkZCBuZXcgaW50 ZXJhY3RpdmUgY29tbWFuZApmb3IgZWFzaWx5IGNob29zaW5nIGEgZmlsdGVyIGZyb20gdGhlIGRl c2NyaXB0aW9ucy4KKiBsaXNwL2lidWZmZXIuZWw6IEFkZCB0byBmaWx0ZXJpbmcga2V5bWFwIGFu ZCBtZW51LCB3aXRoIHR3bwpjaGFuZ2VkIGtleWJpbmRpbmdzLgoqIHRlc3QvbGlzcC9pYnVmZmVy LXRlc3RzLmVsIChpYnVmZmVyLWF1dG9sb2FkKTogQWRkIGFwcHJvcHJpYXRlCnNraXAgc3BlY2lm aWNhdGlvbi4KKGlidWZmZXItKik6IEFkZCBtYW55IGFkZGl0aW9uYWwgdGVzdHMgdGhhdCBhcmUg c2tpcHBlZCB1bmxlc3MKaWJ1Zi1leHQgaXMgbG9hZGVkLgoqIGV0Yy9ORVdTOiBBZGQgZW50cmll cyBmb3IgbmV3IHVzZXItZmFjaW5nIGZlYXR1cmVzLgotLS0KIGV0Yy9ORVdTICAgICAgICAgICAg ICAgICAgIHwgIDI3ICsrCiBsaXNwL2lidWYtZXh0LmVsICAgICAgICAgICB8IDQyMyArKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tCiBsaXNwL2lidWZmZXIuZWwgICAgICAgICAgICB8ICA2MiAr KysrLQogdGVzdC9saXNwL2lidWZmZXItdGVzdHMuZWwgfCA2NjcgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystCiA0IGZpbGVzIGNoYW5nZWQsIDEwNjAgaW5zZXJ0 aW9ucygrKSwgMTE5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05F V1MKaW5kZXggY2JjZTAyNy4uN2U3M2M3NSAxMDA2NDQKLS0tIGEvZXRjL05FV1MKKysrIGIvZXRj L05FV1MKQEAgLTMwNCw2ICszMDQsMzMgQEAgYm91bmQgdG8gJ0J1ZmZlci1tZW51LXVubWFyay1h bGwtYnVmZmVycycuCiAqKiBJYnVmZmVyCiAKIC0tLQorKioqIE5ldyBmaWx0ZXIgY29tbWFuZHMg YGlidWZmZXItZmlsdGVyLWJ5LWJhc2VuYW1lJywKK2BpYnVmZmVyLWZpbHRlci1ieS1maWxlLWV4 dGVuc2lvbicsIGBpYnVmZmVyLWZpbHRlci1ieS1kaXJlY3RvcnknLAorYGlidWZmZXItZmlsdGVy LWJ5LXN0YXJyZWQtbmFtZScsIGBpYnVmZmVyLWZpbHRlci1ieS1tb2RpZmllZCcKK2FuZCBgaWJ1 ZmZlci1maWx0ZXItYnktdmlzaXRpbmctZmlsZSc7IGJvdW5kIHJlc3BlY3RpdmVseQordG8gJy9i JywgJy8uJywgJy8vJywgJy8qJywgJy9pJyBhbmQgJy92Jy4KKworLS0tCisqKiogVHdvIG5ldyBj b21tYW5kcyAnaWJ1ZmZlci1maWx0ZXItY2hvc2VuLWJ5LWNvbXBsZXRpb24nCithbmQgYGlidWZm ZXItYW5kLWZpbHRlcic7IGJvdW5kIHRvICcvIFRBQicgYW5kICcvJicKK3Jlc3BlY3RpdmVseS4K KworLS0tCisqKiogVGhlIGtleSBiaW5kaW5nIGZvciBgaWJ1ZmZlci1maWx0ZXItZGlzYWJsZScg aGFzIGJlaW5nIGNoYW5nZWQKK3RvICcvREVMJzsgdGhlIGNvbW1hbmRzIGBpYnVmZmVyLXBvcC1m aWx0ZXInLCBgaWJ1ZmZlci1wb3AtZmlsdGVyLWdyb3VwJworYW5kIGBpYnVmZmVyLW9yLWZpbHRl cicgaGF2ZSB0aGUgYWx0ZXJuYXRpdmUgYmluZGluZ3MgJy88dXA+JywgJy9TLTx1cD4nCithbmQg Jy98Jy4KKworLS0tCisqKiogVGhlIGRhdGEgZm9ybWF0IHNwZWNpZnlpbmcgZmlsdGVycyBoYXMg YmVlbiBleHRlbmRlZAordG8gYWxsb3cgaS4gZXhwbGljaXQgbG9naWNhbCAnYW5kJyBvZiBvdGhl ciBmaWx0ZXJzIGFuZAoraWkuIGEgbW9yZSBmbGV4aWJsZSBmb3JtIGZvciBsb2dpY2FsICdub3Qn IG9mIGEKK2ZpbHRlci4gVGhpcyBpcyB1c2VmdWwgZm9yIGNvbnN0cnVjdGluZyBjb21wbGV4IGZp bHRlcnMKK2FuZCBmaWx0ZXIgZ3JvdXBzLCBlc3BlY2lhbGx5IHdoZW4gZG9pbmcgc28gbWFudWFs bHkuIFNlZQorZG9jdW1lbnRhdGlvbiBmb3IgJ2lidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMn IGZvciBmdWxsCitkZXRhaWxzLgorCistLS0KICoqKiBBIG5ldyBjb21tYW5kICdpYnVmZmVyLWNv cHktYnVmZmVybmFtZS1hcy1raWxsJzsgYm91bmQKIHRvICdCJy4KIApkaWZmIC0tZ2l0IGEvbGlz cC9pYnVmLWV4dC5lbCBiL2xpc3AvaWJ1Zi1leHQuZWwKaW5kZXggNWVmMDc0Ni4uMDY5OWJhZiAx MDA2NDQKLS0tIGEvbGlzcC9pYnVmLWV4dC5lbAorKysgYi9saXNwL2lidWYtZXh0LmVsCkBAIC0y OCw2ICsyOCwxMyBAQAogOzsgVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5 IGxvYWRlZCB3aGVuIGNhbGxlZCwgYnV0IHlvdQogOzsgY2FuIGV4cGxpY2l0bHkgKHJlcXVpcmUg J2lidWYtZXh0KSBpbiB5b3VyIH4vLmVtYWNzIHRvIGhhdmUgdGhlbQogOzsgcHJlbG9hZGVkLgor OzsKKzs7IEZvciBkZXRhaWxzIG9uIHRoZSBzdHJ1Y3R1cmUgb2YgaWJ1ZmZlciBmaWx0ZXJzIGFu ZCBmaWx0ZXIgZ3JvdXBzLAorOzsgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB2YXJpYWJsZXMg YGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMnLAorOzsgYGlidWZmZXItZmlsdGVyLWdyb3Vw cycsIGFuZCBgaWJ1ZmZlci1zYXZlZC1maWx0ZXJzJyBpbiB0aGF0IG9yZGVyLgorOzsgVGhlIHZh cmlhYmxlIGBpYnVmZmVyLWZpbHRlcmluZy1hbGlzdCcgY29udGFpbnMgbmFtZXMgYW5kCis7OyBk ZXNjcmlwdGlvbnMgb2YgdGhlIGN1cnJlbnRseSBkZWZpbmVkIGZpbHRlcnM7IGFsc28gc2VlIHRo ZSBtYWNybworOzsgYGRlZmluZS1pYnVmZmVyLWZpbHRlcicuCiAKIDs7OyBDb2RlOgogCkBAIC0z NSw5ICs0MiwxMiBAQAogCiAoZXZhbC13aGVuLWNvbXBpbGUKICAgKHJlcXVpcmUgJ2lidWYtbWFj cykKLSAgKHJlcXVpcmUgJ2NsLWxpYikpCisgIChyZXF1aXJlICdjbC1saWIpCisgIChyZXF1aXJl ICdzdWJyLXgpKQorCiAKIDs7OyBVdGlsaXR5IGZ1bmN0aW9ucworCiAoZGVmdW4gaWJ1ZmZlci1k ZWxldGUtYWxpc3QgKGtleSBhbGlzdCkKICAgIkRlbGV0ZSBhbGwgZW50cmllcyBpbiBBTElTVCB0 aGF0IGhhdmUgYSBrZXkgZXF1YWwgdG8gS0VZLiIKICAgKGxldCAoZW50cnkpCkBAIC0xMTksMzUg KzEyOSw5NiBAQCBCdWZmZXJzIHdob3NlIG1ham9yIG1vZGUgaXMgaW4gdGhpcyBsaXN0LCBhcmUg bm90IHNlYXJjaGVkLiIKIAogKGRlZnZhciBpYnVmZmVyLWF1dG8tYnVmZmVycy1jaGFuZ2VkIG5p bCkKIAotKGRlZmN1c3RvbSBpYnVmZmVyLXNhdmVkLWZpbHRlcnMgJygoImdudXMiCi0JCQkJICAg ICgob3IgKG1vZGUgLiBtZXNzYWdlLW1vZGUpCi0JCQkJCSAobW9kZSAuIG1haWwtbW9kZSkKLQkJ CQkJIChtb2RlIC4gZ251cy1ncm91cC1tb2RlKQotCQkJCQkgKG1vZGUgLiBnbnVzLXN1bW1hcnkt bW9kZSkKLQkJCQkJIChtb2RlIC4gZ251cy1hcnRpY2xlLW1vZGUpKSkpCi0JCQkJICAgKCJwcm9n cmFtbWluZyIKLQkJCQkgICAgKChvciAobW9kZSAuIGVtYWNzLWxpc3AtbW9kZSkKLQkJCQkJICht b2RlIC4gY3BlcmwtbW9kZSkKLQkJCQkJIChtb2RlIC4gYy1tb2RlKQotCQkJCQkgKG1vZGUgLiBq YXZhLW1vZGUpCi0JCQkJCSAobW9kZSAuIGlkbC1tb2RlKQotCQkJCQkgKG1vZGUgLiBsaXNwLW1v ZGUpKSkpKQotCi0gICJBbiBhbGlzdCBvZiBmaWx0ZXIgcXVhbGlmaWVycyB0byBzd2l0Y2ggYmV0 d2Vlbi4KLQotVGhpcyB2YXJpYWJsZSBzaG91bGQgbG9vayBsaWtlICgoXCJTVFJJTkdcIiBRVUFM SUZJRVJTKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXCJTVFJJTkdcIiBRVUFM SUZJRVJTKSAuLi4pLCB3aGVyZQotUVVBTElGSUVSUyBpcyBhIGxpc3Qgb2YgdGhlIHNhbWUgZm9y bSBhcwotYGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMnLgotU2VlIGFsc28gdGhlIHZhcmlh YmxlcyBgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycycsCi1gaWJ1ZmZlci1maWx0ZXJpbmct YWxpc3QnLCBhbmQgdGhlIGZ1bmN0aW9ucwotYGlidWZmZXItc3dpdGNoLXRvLXNhdmVkLWZpbHRl cnMnLCBgaWJ1ZmZlci1zYXZlLWZpbHRlcnMnLiIKLSAgOnR5cGUgJyhyZXBlYXQgc2V4cCkKKyhk ZWZjdXN0b20gaWJ1ZmZlci1zYXZlZC1maWx0ZXJzICcoKCJwcm9ncmFtbWluZyIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgob3IgKGRlcml2ZWQtbW9kZSAuIHByb2ctbW9k ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGUgICAgICAg ICAuIGVzcy1tb2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bW9kZSAgICAgICAgIC4gY29tcGlsYXRpb24tbW9kZSkpKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKCJ0ZXh0IGRvY3VtZW50IgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKChhbmQgKGRlcml2ZWQtbW9kZSAuIHRleHQtbW9kZSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKHN0YXJyZWQtbmFtZSkpKSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiVGVYIgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKChvciAoZGVyaXZlZC1tb2RlIC4gdGV4LW1vZGUpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlICAgICAgICAgLiBsYXRl eC1tb2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZSAg ICAgICAgIC4gY29udGV4dC1tb2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAobW9kZSAgICAgICAgIC4gYW1zLXRleC1tb2RlKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobW9kZSAgICAgICAgIC4gYmlidGV4LW1vZGUpKSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgid2ViIgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKChvciAoZGVyaXZlZC1tb2RlIC4gc2dtbC1tb2RlKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVyaXZlZC1tb2RlIC4gY3Nz LW1vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlICAg ICAgICAgLiBqYXZhc2NyaXB0LW1vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChtb2RlICAgICAgICAgLiBqczItbW9kZSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKG1vZGUgICAgICAgICAuIHNjc3MtbW9kZSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlcml2ZWQtbW9kZSAuIGhhbWwtbW9k ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGUgICAgICAg ICAuIHNhc3MtbW9kZSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJn bnVzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChvciAobW9kZSAuIG1l c3NhZ2UtbW9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1v ZGUgLiBtYWlsLW1vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChtb2RlIC4gZ251cy1ncm91cC1tb2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobW9kZSAuIGdudXMtc3VtbWFyeS1tb2RlKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobW9kZSAuIGdudXMtYXJ0aWNsZS1tb2RlKSkpKSkKKwor ICAiQW4gYWxpc3QgbWFwcGluZyBzYXZlZCBmaWx0ZXIgbmFtZXMgdG8gZmlsdGVyIHNwZWNpZmlj YXRpb25zLgorCitFYWNoIGVsZW1lbnQgc2hvdWxkIGxvb2sgbGlrZSAoXCJOQU1FXCIgRklMVEVS LUxJU1QpLCB3aGVyZQorRklMVEVSLUxJU1QgaGFzIHRoZSBzYW1lIHN0cnVjdHVyZSBhcyB0aGUg dmFyaWFibGUKK2BpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzJywgd2hpY2ggc2VlLiBUaGUg ZmlsdGVycyBkZWZpbmVkCitoZXJlIGFyZSBqb2luZWQgd2l0aCBhbiBpbXBsaWNpdCBsb2dpY2Fs IGBhbmQnIGFuZCBhc3NvY2lhdGVkCit3aXRoIE5BTUUuIFRoZSBjb21iaW5lZCBzcGVjaWZpY2F0 aW9uIGNhbiBiZSB1c2VkIGJ5IG5hbWUgaW4KK290aGVyIGZpbHRlciBzcGVjaWZpY2F0aW9ucyB2 aWEgdGhlIGBzYXZlZCcgcXVhbGlmaWVyIChhZ2Fpbiwgc2VlCitgaWJ1ZmZlci1maWx0ZXJpbmct cXVhbGlmaWVycycpLiBUaGV5IGNhbiBhbHNvIGJlIHN3aXRjaGVkIHRvIGJ5CituYW1lIChzZWUg dGhlIGZ1bmN0aW9ucyBgaWJ1ZmZlci1zd2l0Y2gtdG8tc2F2ZWQtZmlsdGVycycgYW5kCitgaWJ1 ZmZlci1zYXZlLWZpbHRlcnMnKS4gVGhlIHZhcmlhYmxlIGBpYnVmZmVyLXNhdmUtd2l0aC1jdXN0 b20nCithZmZlY3RzIGhvdyB0aGlzIGluZm9ybWF0aW9uIGlzIHNhdmVkIGZvciBmdXR1cmUgc2Vz c2lvbnMuIFRoaXMKK3ZhcmlhYmxlIGNhbiBiZSBzZXQgZGlyZWN0bHkgZnJvbSBsaXNwIGNvZGUu IgorICA6dmVyc2lvbiAiMjYuMSIKKyAgOnR5cGUgJyhhbGlzdCA6a2V5LXR5cGUgKHN0cmluZyA6 dGFnICJGaWx0ZXIgbmFtZSIpCisgICAgICAgICAgICAgICAgOnZhbHVlLXR5cGUgKGxpc3QgOnRh ZyAiRmlsdGVyIGxpc3QiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlcGVh dCAoc2V4cCA6dGFnICJGaWx0ZXIgc3BlY2lmaWNhdGlvbiIpKSkpCiAgIDpncm91cCAnaWJ1ZmZl cikKIAogKGRlZnZhciBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzIG5pbAotICAiQSBsaXN0 IGxpa2UgKFNZTUJPTCAuIFFVQUxJRklFUikgd2hpY2ggZmlsdGVycyB0aGUgY3VycmVudCBidWZm ZXIgbGlzdC4KLVNlZSBhbHNvIGBpYnVmZmVyLWZpbHRlcmluZy1hbGlzdCcuIikKKyAgIkEgbGlz dCBzcGVjaWZ5aW5nIHRoZSBmaWx0ZXJzIGN1cnJlbnRseSBhY3Rpbmcgb24gdGhlIGJ1ZmZlciBs aXN0LgorCitJZiB0aGlzIGxpc3QgaXMgbmlsLCB0aGVuIG5vIGZpbHRlcnMgYXJlIGN1cnJlbnRs eSBpbgorZWZmZWN0LiBPdGhlcndpc2UsIGVhY2ggZWxlbWVudCBvZiB0aGlzIGxpc3Qgc3BlY2lm aWVzIGEgc2luZ2xlCitmaWx0ZXIsIGFuZCBhbGwgb2YgdGhlIHNwZWNpZmllZCBmaWx0ZXJzIGlu IHRoZSBsaXN0IGFyZSBhcHBsaWVkCitzdWNjZXNzaXZlbHkgdG8gdGhlIGJ1ZmZlciBsaXN0Lgor CitFYWNoIGZpbHRlciBzcGVjaWZpY2F0aW9uIGNhbiBiZSBvZiB0d28gdHlwZXM6IHNpbXBsZSBv ciBjb21wb3VuZC4KKworQSBzaW1wbGUgZmlsdGVyIHNwZWNpZmljYXRpb24gaGFzIHRoZSBmb3Jt IChTWU1CT0wgLiBRVUFMSUZJRVIpLAord2hlcmUgU1lNQk9MIGlzIGEga2V5IGluIHRoZSBhbGlz dCBgaWJ1ZmZlci1maWx0ZXJpbmctYWxpc3QnIHRoYXQKK2RldGVybWluZXMgdGhlIGZpbHRlciBm dW5jdGlvbiB0byB1c2UgYW5kIFFVQUxJRklFUiBpcyB0aGUgZGF0YQorcGFzc2VkIHRvIHRoYXQg ZnVuY3Rpb24gKGFsb25nIHdpdGggdGhlIGJ1ZmZlciBiZWluZyBjb25zaWRlcmVkKS4KKworQSBj b21wb3VuZCBmaWx0ZXIgc3BlY2lmaWNhdGlvbiBjYW4gaGF2ZSBvbmUgb2YgZm91ciBmb3JtczoK KworLS0gKG5vdCBGSUxURVItU1BFQykKKworICAgUmVwcmVzZW50cyB0aGUgbG9naWNhbCBjb21w bGVtZW50IG9mIEZJTFRFUi1TUEVDLCB3aGljaAorICAgaXMgYW55IHNpbmdsZSBmaWx0ZXIgc3Bl Y2lmaWNhdGlvbiwgc2ltcGxlIG9yIGNvbXBvdW5kLgorICAgVGhlIGZvcm0gKG5vdCAuIEZJTFRF Ui1TUEVDKSBpcyBhbHNvIGFjY2VwdGVkIGhlcmUuCisKKy0tIChhbmQgRklMVEVSLVNQRUNTLi4u KQorCisgICBSZXByZXNlbnRzIHRoZSBsb2dpY2FsLWFuZCBvZiB0aGUgZmlsdGVycyBkZWZpbmVk IGJ5IG9uZSBvcgorICAgbW9yZSBmaWx0ZXIgc3BlY2lmaWNhdGlvbnMgRklMVEVSLVNQRUNTLi4u LCB3aGVyZSBlYWNoCisgICBzcGVjaWZpY2F0aW9uIGNhbiBiZSBzaW1wbGUgb3IgY29tcG91bmQu ICBOb3RlIHRoYXQgYW5kIGlzCisgICBpbXBsaWNpdGx5IGFwcGxpZWQgdG8gdGhlIGZpbHRlcnMg aW4gdGhlIHRvcC1sZXZlbCBsaXN0LgorCistLSAob3IgRklMVEVSLVNQRUNTLi4uKQorCisgICBS ZXByZXNlbnRzIHRoZSBsb2dpY2FsLW9yIG9mIHRoZSBmaWx0ZXJzIGRlZmluZWQgYnkgb25lIG9y CisgICBtb3JlIGZpbHRlciBzcGVjaWZpY2F0aW9ucyBGSUxURVItU1BFQ1MuLi4sIHdoZXJlIGVh Y2gKKyAgIHNwZWNpZmljYXRpb24gY2FuIGJlIHNpbXBsZSBvciBjb21wb3VuZC4KKworLS0gKHNh dmVkIC4gXCJOQU1FXCIpCisKKyAgIFJlcHJlc2VudHMgdGhlIGZpbHRlciBzYXZlZCB1bmRlciB0 aGUgc3RyaW5nIE5BTUUKKyAgIGluIHRoZSBhbGlzdCBgaWJ1ZmZlci1zYXZlZC1maWx0ZXJzJy4g SXQgaXMgYW4KKyAgIGVycm9yIHRvIG5hbWUgYSBmaWx0ZXIgdGhhdCBoYXMgbm90IGJlZW4gc2F2 ZWQuCisKK1RoaXMgdmFyaWFibGUgaXMgbG9jYWwgdG8gZWFjaCBpYnVmZmVyIGJ1ZmZlci4iKQog CiA7OyBUaGlzIGlzIG5vdyBmcm9iYmVkIGJ5IGBkZWZpbmUtaWJ1ZmZlci1maWx0ZXInLgogKGRl ZnZhciBpYnVmZmVyLWZpbHRlcmluZy1hbGlzdCBuaWwKQEAgLTE3OSwxMCArMjUwLDE4IEBAIHRv IHRoaXMgdmFyaWFibGUuIgogKGRlZnZhciBpYnVmZmVyLWNvbXBpbGVkLWZpbHRlci1mb3JtYXRz IG5pbCkKIAogKGRlZnZhciBpYnVmZmVyLWZpbHRlci1ncm91cHMgbmlsCi0gICJBIGxpc3QgbGlr ZSAoKFwiTkFNRVwiICgoU1lNQk9MIC4gUVVBTElGSUVSKSAuLi4pIC4uLikgd2hpY2ggZ3JvdXBz IGJ1ZmZlcnMuCi1UaGUgU1lNQk9MIHNob3VsZCBiZSBvbmUgZnJvbSBgaWJ1ZmZlci1maWx0ZXJp bmctYWxpc3QnLgotVGhlIFFVQUxJRklFUiBzaG91bGQgYmUgdGhlIHNhbWUgYXMgUVVBTElGSUVS IGluCi1gaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycycuIikKKyAgIkFuIGFsaXN0IGdpdmlu ZyB0aGlzIGJ1ZmZlcidzIGFjdGl2ZSBmaWx0ZXIgZ3JvdXBzLCBvciBuaWwgaWYgbm9uZS4KKwor VGhpcyBhbGlzdCBtYXBzIGZpbHRlciBncm91cCBsYWJlbHMgdG8gZmlsdGVyIHNwZWNpZmljYXRp b24KK2xpc3RzLiAgRWFjaCBlbGVtZW50IGhhcyB0aGUgZm9ybSAoXCJMQUJFTFwiIEZJTFRFUi1T UEVDUy4uLiksCit3aGVyZSBGSUxURVItU1BFQ1MuLi4gcmVwcmVzZW50cyBvbmUgb3IgbW9yZSBm aWx0ZXIKK3NwZWNpZmljYXRpb25zIG9mIHRoZSBzYW1lIGZvcm0gYXMgYWxsb3dlZCBhcyBlbGVt ZW50cyBvZgorYGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMnLgorCitFYWNoIGZpbHRlciBn cm91cCBpcyBkaXNwbGF5ZWQgYXMgYSBzZXBhcmF0ZSBzZWN0aW9uIGluIHRoZQoraWJ1ZmZlciBs aXN0LCBoZWFkZWQgYnkgTEFCRUwgYW5kIGRpc3BsYXlpbmcgb25seSB0aGUgYnVmZmVycwordGhh dCBwYXNzIHRocm91Z2ggYWxsIHRoZSBmaWx0ZXJzIGFzc29jaWF0ZWQgd2l0aCBOQU1FIGluIHRo aXMKK2xpc3QuIikKIAogKGRlZmN1c3RvbSBpYnVmZmVyLXNob3ctZW1wdHktZmlsdGVyLWdyb3Vw cyB0CiAgICJJZiBub24tbmlsLCB0aGVuIHNob3cgdGhlIG5hbWVzIG9mIGZpbHRlciBncm91cHMg d2hpY2ggYXJlIGVtcHR5LiIKQEAgLTE5MiwyMCArMjcxLDIxIEBAIFRoZSBRVUFMSUZJRVIgc2hv dWxkIGJlIHRoZSBzYW1lIGFzIFFVQUxJRklFUiBpbgogKGRlZmN1c3RvbSBpYnVmZmVyLXNhdmVk LWZpbHRlci1ncm91cHMgbmlsCiAgICJBbiBhbGlzdCBvZiBmaWx0ZXJpbmcgZ3JvdXBzIHRvIHN3 aXRjaCBiZXR3ZWVuLgogCi1UaGlzIHZhcmlhYmxlIHNob3VsZCBsb29rIGxpa2UgKChcIlNUUklO R1wiIFFVQUxJRklFUlMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcIlNUUklO R1wiIFFVQUxJRklFUlMpIC4uLiksIHdoZXJlCi1RVUFMSUZJRVJTIGlzIGEgbGlzdCBvZiB0aGUg c2FtZSBmb3JtIGFzCi1gaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycycuCitFYWNoIGVsZW1l bnQgaXMgb2YgdGhlIGZvcm0gKFwiTkFNRVwiIC4gRklMVEVSLUdST1VQLUxJU1QpLAord2hlcmUg TkFNRSBpcyBhIHVuaXF1ZSBidXQgYXJiaXRyYXJ5IG5hbWUgYW5kIEZJTFRFUi1HUk9VUC1MSVNU CitpcyBhIGxpc3Qgb2YgZmlsdGVyIGdyb3VwcyB3aXRoIHRoZSBzYW1lIHN0cnVjdHVyZSBhcwor YWxsb3dlZCBmb3IgYGlidWZmZXItZmlsdGVyLWdyb3VwcycuCiAKLVNlZSBhbHNvIHRoZSB2YXJp YWJsZXMgYGlidWZmZXItZmlsdGVyLWdyb3VwcycsCi1gaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlm aWVycycsIGBpYnVmZmVyLWZpbHRlcmluZy1hbGlzdCcsIGFuZCB0aGUKLWZ1bmN0aW9ucyBgaWJ1 ZmZlci1zd2l0Y2gtdG8tc2F2ZWQtZmlsdGVyLWdyb3VwcycsCi1gaWJ1ZmZlci1zYXZlLWZpbHRl ci1ncm91cHMnLiIKK1NlZSBhbHNvIHRoZSBmdW5jdGlvbnMgYGlidWZmZXItc2F2ZS1maWx0ZXIt Z3JvdXBzJyBhbmQKK2BpYnVmZmVyLXN3aXRjaC10by1zYXZlZC1maWx0ZXItZ3JvdXBzJyBmb3Ig c2F2aW5nIGFuZCBzd2l0Y2hpbmcKK2JldHdlZW4gc2V0cyBvZiBmaWx0ZXIgZ3JvdXBzLCBhbmQg dGhlIHZhcmlhYmxlCitgaWJ1ZmZlci1zYXZlLXdpdGgtY3VzdG9tJyB0aGF0IGFmZmVjdHMgaG93 IHRoaXMgaW5mb3JtYXRpb24gaXMKK3NhdmVkLiIKICAgOnR5cGUgJyhyZXBlYXQgc2V4cCkKICAg Omdyb3VwICdpYnVmZmVyKQogCiAoZGVmdmFyIGlidWZmZXItaGlkZGVuLWZpbHRlci1ncm91cHMg bmlsCi0gICJBIGxpc3Qgb2YgZmlsdGVyaW5nIGdyb3VwcyB3aGljaCBhcmUgY3VycmVudGx5IGhp ZGRlbi4iKQorICAiVGhlIGxpc3Qgb2YgZmlsdGVyIGdyb3VwcyB0aGF0IGFyZSBjdXJyZW50bHkg aGlkZGVuLiIpCiAKIChkZWZ2YXIgaWJ1ZmZlci1maWx0ZXItZ3JvdXAta2lsbC1yaW5nIG5pbCkK IApAQCAtNTEyLDE4ICs1OTIsMzggQEAgVG8gZXZhbHVhdGUgYSBmb3JtIHdpdGhvdXQgdmlld2lu ZyB0aGUgYnVmZmVyLCBzZWUgYGlidWZmZXItZG8tZXZhbCcuIgogCiA7OzsjIyNhdXRvbG9hZAog KGRlZnVuIGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wIChidWYgZmlsdGVycykKKyAgIlJl dHVybnMgbm9uLW5pbCBpZiBidWZmZXIgQlVGIHBhc3NlcyBhbGwgRklMVEVSUy4KKworQlVGIGlz IGEgbGlzcCBidWZmZXIgb2JqZWN0LCBhbmQgRklMVEVSUyBpcyBhIGxpc3Qgb2YgZmlsdGVyCitz cGVjaWZpY2F0aW9ucyB3aXRoIHRoZSBzYW1lIHN0cnVjdHVyZSBhcworYGlidWZmZXItZmlsdGVy aW5nLXF1YWxpZmllcnMnLiIKICAgKG5vdAogICAgKG1lbXEgbmlsIDs7IGEgZmlsdGVyIHdpbGwg cmV0dXJuIG5pbCBpZiBpdCBmYWlsZWQKLQkgKG1hcGNhcgotCSAgOzsgZmlsdGVyIHNob3VsZCBi ZSBsaWtlIChUWVBFIC4gUVVBTElGSUVSKSwgb3IKLQkgIDs7IChvciAoVFlQRSAuIFFVQUxJRklF UikgKFRZUEUgLiBRVUFMSUZJRVIpIC4uLikKLQkgICMnKGxhbWJkYSAocXVhbCkKLQkgICAgICAo aWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXItcCBidWYgcXVhbCkpCi0JICBmaWx0ZXJzKSkpKQor CSAobWFwY2FyICMnKGxhbWJkYSAoZmlsdGVyKQorICAgICAgICAgICAgICAgICAgICAgKGlidWZm ZXItaW5jbHVkZWQtaW4tZmlsdGVyLXAgYnVmIGZpbHRlcikpCisgICAgICAgICAgICAgICAgIGZp bHRlcnMpKSkpCisKKyhkZWZ1biBpYnVmZmVyLXVuYXJ5LW9wZXJhbmQgKGZpbHRlcikKKyAgIkV4 dHJhY3RzIG9wZXJhbmQgZnJvbSBhIHVuYXJ5IGNvbXBvdW5kIEZJTFRFUiBzcGVjaWZpY2F0aW9u LgorCitGSUxURVIgc2hvdWxkIGJlIGEgY29ucyBjZWxsIG9mIGVpdGhlciBmb3JtIChmIC4gZCkg b3IgKGYgZCksCit3aGVyZSBvcGVyYW5kIGQgaXMgaXRzZWxmIGEgY29ucyBjZWxsLCBvciBuaWwu IFJldHVybnMgZC4iCisgIChsZXQqICgodGFpbCAoY2RyIGZpbHRlcikpCisgICAgICAgICAobWF5 YmUtcSAoY2FyLXNhZmUgdGFpbCkpKQorICAgIChpZiAoY29uc3AgbWF5YmUtcSkgbWF5YmUtcSB0 YWlsKSkpCiAKIChkZWZ1biBpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlci1wIChidWYgZmlsdGVy KQorICAiRG9lcyB0aGUgYnVmZmVyIEJVRiBzdWNjZXNzZnVsbHkgcGFzcyBGSUxURVI/CisKK0JV RiBpcyBhIGxpc3AgYnVmZmVyIG9iamVjdCwgYW5kIEZJTFRFUiBpcyBhIGZpbHRlcgorc3BlY2lm aWNhdGlvbiwgd2l0aCB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXMgYW4gZWxlbWVudCBvZiB0aGUgbGlz dAorYGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMnLiIKICAgKGlmIChlcSAoY2FyIGZpbHRl cikgJ25vdCkKLSAgICAgIChub3QgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVyLXAtMSBidWYg KGNkciBmaWx0ZXIpKSkKKyAgICAgIChsZXQgKChpbm5lciAoaWJ1ZmZlci11bmFyeS1vcGVyYW5k IGZpbHRlcikpKQorICAgICAgICA7OyBBbGxvd3MgKG5vdCAobm90IC4uLikpIGV0Yywgd2hpY2gg bWF5IGJlIG92ZXJraWxsCisgICAgICAgIChpZiAoZXEgKGNhciBpbm5lcikgJ25vdCkKKyAgICAg ICAgICAgIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlci1wIGJ1ZiAoaWJ1ZmZlci11bmFyeS1v cGVyYW5kIGlubmVyKSkKKyAgICAgICAgICAobm90IChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRl ci1wLTEgYnVmIGlubmVyKSkpKQogICAgIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlci1wLTEg YnVmIGZpbHRlcikpKQogCiAoZGVmdW4gaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXItcC0xIChi dWYgZmlsdGVyKQpAQCAtNTMxLDE3ICs2MzEsMjUgQEAgVG8gZXZhbHVhdGUgYSBmb3JtIHdpdGhv dXQgdmlld2luZyB0aGUgYnVmZmVyLCBzZWUgYGlidWZmZXItZG8tZXZhbCcuIgogICAgKG5vdAog ICAgIChwY2FzZSAoY2FyIGZpbHRlcikKICAgICAgIChgb3IKKyAgICAgICA7OzsgQVRUTjogU2hv cnQtY2lyY3VpdGluZyBhbHRlcm5hdGl2ZSB3aXRoIHBhcmFsbGVsIHN0cnVjdHVyZSB3L2BhbmQK KyAgICAgICA7OyhjYXRjaCAnaGFzLW1hdGNoCisgICAgICAgOzsgIChkb2xpc3QgKGZpbHRlci1z cGVjIChjZHIgZmlsdGVyKSBuaWwpCisgICAgICAgOzsgICAgKHdoZW4gKGlidWZmZXItaW5jbHVk ZWQtaW4tZmlsdGVyLXAgYnVmIGZpbHRlci1zcGVjKQorICAgICAgIDs7ICAgICAgKHRocm93ICdo YXMtbWF0Y2ggdCkpKSkKICAgICAgICAobWVtcSB0IChtYXBjYXIgIycobGFtYmRhICh4KQotCQkJ ICAgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVyLXAgYnVmIHgpKQotCQkgICAgICAgKGNkciBm aWx0ZXIpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWJ1ZmZlci1pbmNsdWRlZC1p bi1maWx0ZXItcCBidWYgeCkpCisgICAgICAgICAgICAgICAgICAgICAgIChjZHIgZmlsdGVyKSkp KQorICAgICAgKGBhbmQKKyAgICAgICAoY2F0Y2ggJ25vLW1hdGNoCisgICAgICAgICAoZG9saXN0 IChmaWx0ZXItc3BlYyAoY2RyIGZpbHRlcikgdCkKKyAgICAgICAgICAgKHVubGVzcyAoaWJ1ZmZl ci1pbmNsdWRlZC1pbi1maWx0ZXItcCBidWYgZmlsdGVyLXNwZWMpCisgICAgICAgICAgICAgKHRo cm93ICduby1tYXRjaCBuaWwpKSkpKQogICAgICAgKGBzYXZlZAotICAgICAgIChsZXQgKChkYXRh Ci0JICAgICAgKGFzc29jIChjZHIgZmlsdGVyKQotCQkgICAgIGlidWZmZXItc2F2ZWQtZmlsdGVy cykpKQotCSAodW5sZXNzIGRhdGEKLQkgICAoaWJ1ZmZlci1maWx0ZXItZGlzYWJsZSB0KQotCSAg IChlcnJvciAiVW5rbm93biBzYXZlZCBmaWx0ZXIgJXMiIChjZHIgZmlsdGVyKSkpCi0JIChpYnVm ZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcCBidWYgKGNhZHIgZGF0YSkpKSkKKyAgICAgICAobGV0 ICgoZGF0YSAoYXNzb2MgKGNkciBmaWx0ZXIpIGlidWZmZXItc2F2ZWQtZmlsdGVycykpKQorICAg ICAgICAgKHVubGVzcyBkYXRhCisgICAgICAgICAgIChpYnVmZmVyLWZpbHRlci1kaXNhYmxlIHQp CisgICAgICAgICAgIChlcnJvciAiVW5rbm93biBzYXZlZCBmaWx0ZXIgJXMiIChjZHIgZmlsdGVy KSkpCisgICAgICAgICAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAgYnVmIChjYWRyIGRh dGEpKSkpCiAgICAgICAoXwogICAgICAgIChwY2FzZS1sZXQgKChgKCxfdHlwZSAsX2Rlc2MgLGZ1 bmMpCiAgICAgICAgICAgICAgICAgICAgIChhc3NxIChjYXIgZmlsdGVyKSBpYnVmZmVyLWZpbHRl cmluZy1hbGlzdCkpKQpAQCAtODI4LDM5ICs5MzYsMzQgQEAgZ3JvdXAgZGVmaW5pdGlvbnMgYnkg c2V0dGluZyBgaWJ1ZmZlci1maWx0ZXItZ3JvdXBzJyB0byBuaWwuIgogICAgICh3aGVuIGJ1Zgog ICAgICAgKGlidWZmZXItanVtcC10by1idWZmZXIgKGJ1ZmZlci1uYW1lIGJ1ZikpKSkpCiAKLShk ZWZ1biBpYnVmZmVyLXB1c2gtZmlsdGVyIChxdWFsaWZpZXIpCi0gICJBZGQgUVVBTElGSUVSIHRv IGBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzJy4iCi0gIChwdXNoIHF1YWxpZmllciBpYnVm ZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkKKyhkZWZ1biBpYnVmZmVyLXB1c2gtZmlsdGVyIChm aWx0ZXItc3BlY2lmaWNhdGlvbikKKyAgIkFkZCBGSUxURVItU1BFQ0lGSUNBVElPTiB0byBgaWJ1 ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycycuIgorICAocHVzaCBmaWx0ZXItc3BlY2lmaWNhdGlv biBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkKIAogOzs7IyMjYXV0b2xvYWQKIChkZWZ1 biBpYnVmZmVyLWRlY29tcG9zZS1maWx0ZXIgKCkKLSAgIlNlcGFyYXRlIHRoZSB0b3AgY29tcG91 bmQgZmlsdGVyIChPUiwgTk9ULCBvciBTQVZFRCkgaW4gdGhpcyBidWZmZXIuCisgICJTZXBhcmF0 ZSB0aGlzIGJ1ZmZlcidzIHRvcCBjb21wb3VuZCBmaWx0ZXIgKEFORCwgT1IsIE5PVCwgb3IgU0FW RUQpLgogCiBUaGlzIG1lYW5zIHRoYXQgdGhlIHRvcG1vc3QgZmlsdGVyIG9uIHRoZSBmaWx0ZXJp bmcgc3RhY2ssIHdoaWNoIG11c3QKIGJlIGEgY29tcGxleCBmaWx0ZXIgbGlrZSAoT1IgW25hbWU6 IGZvb10gW21vZGU6IGJhci1tb2RlXSksIHdpbGwgYmUKLXR1cm5lZCBpbnRvIHR3byBzZXBhcmF0 ZSBmaWx0ZXJzIFtuYW1lOiBmb29dIGFuZCBbbW9kZTogYmFyLW1vZGVdLiIKK3R1cm5lZCBpbnRv IHNlcGFyYXRlIGZpbHRlcnMsIGxpa2UgW25hbWU6IGZvb10gYW5kIFttb2RlOiBiYXItbW9kZV0u IgogICAoaW50ZXJhY3RpdmUpCiAgICh3aGVuIChudWxsIGlidWZmZXItZmlsdGVyaW5nLXF1YWxp ZmllcnMpCiAgICAgKGVycm9yICJObyBmaWx0ZXJzIGluIGVmZmVjdCIpKQogICAobGV0ICgobGlt IChwb3AgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpKQogICAgIChwY2FzZSAoY2FyIGxp bSkKLSAgICAgIChgb3IKLSAgICAgICAoc2V0cSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJz IChhcHBlbmQKLQkJCQkJICAoY2RyIGxpbSkKLQkJCQkJICBpYnVmZmVyLWZpbHRlcmluZy1xdWFs aWZpZXJzKSkpCisgICAgICAoKG9yICdvciAnYW5kKQorICAgICAgIChzZXRxIGlidWZmZXItZmls dGVyaW5nLXF1YWxpZmllcnMKKyAgICAgICAgICAgICAobmNvbmMgKGNkciBsaW0pIGlidWZmZXIt ZmlsdGVyaW5nLXF1YWxpZmllcnMpKSkKICAgICAgIChgc2F2ZWQKLSAgICAgICAobGV0ICgoZGF0 YQotCSAgICAgIChhc3NvYyAoY2RyIGxpbSkKLQkJICAgICBpYnVmZmVyLXNhdmVkLWZpbHRlcnMp KSkKLQkgKHVubGVzcyBkYXRhCi0JICAgKGlidWZmZXItZmlsdGVyLWRpc2FibGUpCi0JICAgKGVy cm9yICJVbmtub3duIHNhdmVkIGZpbHRlciAlcyIgKGNkciBsaW0pKSkKLQkgKHNldHEgaWJ1ZmZl ci1maWx0ZXJpbmctcXVhbGlmaWVycyAoYXBwZW5kCi0JCQkJCSAgICAoY2FkciBkYXRhKQotCQkJ CQkgICAgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpKSkKKyAgICAgICAobGV0ICgoZGF0 YSAoYXNzb2MgKGNkciBsaW0pIGlidWZmZXItc2F2ZWQtZmlsdGVycykpKQorICAgICAgICAgKHVu bGVzcyBkYXRhCisgICAgICAgICAgIChpYnVmZmVyLWZpbHRlci1kaXNhYmxlKQorICAgICAgICAg ICAoZXJyb3IgIlVua25vd24gc2F2ZWQgZmlsdGVyICVzIiAoY2RyIGxpbSkpKQorICAgICAgICAg KHNldHEgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycworICAgICAgICAgICAgICAgKGFwcGVu ZCAoY2FkciBkYXRhKSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkpKQogICAgICAgKGBu b3QKLSAgICAgICAocHVzaCAoY2RyIGxpbSkKLQkgICAgIGlidWZmZXItZmlsdGVyaW5nLXF1YWxp ZmllcnMpKQorICAgICAgIChwdXNoIChpYnVmZmVyLXVuYXJ5LW9wZXJhbmQgbGltKSBpYnVmZmVy LWZpbHRlcmluZy1xdWFsaWZpZXJzKSkKICAgICAgIChfCiAgICAgICAgKGVycm9yICJGaWx0ZXIg dHlwZSAlcyBpcyBub3QgY29tcG91bmQiIChjYXIgbGltKSkpKSkKICAgKGlidWZmZXItdXBkYXRl IG5pbCB0KSkKQEAgLTg4OCwzMSArOTkxLDM2IEBAIHR1cm5lZCBpbnRvIHR3byBzZXBhcmF0ZSBm aWx0ZXJzIFtuYW1lOiBmb29dIGFuZCBbbW9kZTogYmFyLW1vZGVdLiIKIAkgIGlidWZmZXItZmls dGVyaW5nLXF1YWxpZmllcnMpKQogICAoaWJ1ZmZlci11cGRhdGUgbmlsIHQpKQogCisoZGVmdW4g aWJ1ZmZlci0tb3ItYW5kLWZpbHRlciAob3AgZGVjb21wb3NlKQorICAoaWYgZGVjb21wb3NlCisg ICAgICAoaWYgKGVxIG9wIChjYWFyIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKQorICAg ICAgICAgIChpYnVmZmVyLWRlY29tcG9zZS1maWx0ZXIpCisgICAgICAgIChlcnJvciAiVG9wIGZp bHRlciBpcyBub3QgYW4gJXMiICh1cGNhc2UgKHN5bWJvbC1uYW1lIG9wKSkpKQorICAgICh3aGVu ICg8IChsZW5ndGggaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykgMikKKyAgICAgIChlcnJv ciAiTmVlZCB0d28gZmlsdGVycyB0byAlcyIgKHVwY2FzZSAoc3ltYm9sLW5hbWUgb3ApKSkpCisg ICAgOzsgSWYgZWl0aGVyIGZpbHRlciBpcyBhbiBvcCwgZWxpbWluYXRlIHVubmVjZXNzYXJ5IG5l c3RpbmcuCisgICAgKGxldCAoKGZpcnN0IChwb3AgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVy cykpCisgICAgICAgICAgKHNlY29uZCAocG9wIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMp KSkKKyAgICAgIChwdXNoIChuY29uYyAoaWYgKGVxIG9wIChjYXIgZmlyc3QpKSBmaXJzdCAobGlz dCBvcCBmaXJzdCkpCisgICAgICAgICAgICAgICAgICAgKGlmIChlcSBvcCAoY2FyIHNlY29uZCkp IChjZHIgc2Vjb25kKSAobGlzdCBzZWNvbmQpKSkKKyAgICAgICAgICAgIGlidWZmZXItZmlsdGVy aW5nLXF1YWxpZmllcnMpKSkKKyAgKGlidWZmZXItdXBkYXRlIG5pbCB0KSkKKwogOzs7IyMjYXV0 b2xvYWQKLShkZWZ1biBpYnVmZmVyLW9yLWZpbHRlciAoJm9wdGlvbmFsIHJldmVyc2UpCisoZGVm dW4gaWJ1ZmZlci1vci1maWx0ZXIgKCZvcHRpb25hbCBkZWNvbXBvc2UpCiAgICJSZXBsYWNlIHRo ZSB0b3AgdHdvIGZpbHRlcnMgaW4gdGhpcyBidWZmZXIgd2l0aCB0aGVpciBsb2dpY2FsIE9SLgot SWYgb3B0aW9uYWwgYXJndW1lbnQgUkVWRVJTRSBpcyBub24tbmlsLCBpbnN0ZWFkIGJyZWFrIHRo ZSB0b3AgT1IKK0lmIG9wdGlvbmFsIGFyZ3VtZW50IERFQ09NUE9TRSBpcyBub24tbmlsLCBpbnN0 ZWFkIGJyZWFrIHRoZSB0b3AgT1IKIGZpbHRlciBpbnRvIHBhcnRzLiIKICAgKGludGVyYWN0aXZl ICJQIikKLSAgKGlmIHJldmVyc2UKLSAgICAgIChwcm9nbgotCSh3aGVuIChvciAobnVsbCBpYnVm ZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKQotCQkgIChub3QgKGVxICdvciAoY2FhciBpYnVmZmVy LWZpbHRlcmluZy1xdWFsaWZpZXJzKSkpKQotCSAgKGVycm9yICJUb3AgZmlsdGVyIGlzIG5vdCBh biBPUiIpKQotCShsZXQgKChsaW0gKHBvcCBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkp Ci0JICAoc2V0cSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzCi0JCShuY29uYyAoY2RyIGxp bSkgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpKSkKLSAgICAod2hlbiAoPCAobGVuZ3Ro IGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpIDIpCi0gICAgICAoZXJyb3IgIk5lZWQgdHdv IGZpbHRlcnMgdG8gT1IiKSkKLSAgICA7OyBJZiB0aGUgc2Vjb25kIGZpbHRlciBpcyBhbiBPUiwg anVzdCBhZGQgdG8gaXQuCi0gICAgKGxldCAoKGZpcnN0IChwb3AgaWJ1ZmZlci1maWx0ZXJpbmct cXVhbGlmaWVycykpCi0JICAoc2Vjb25kIChwb3AgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVy cykpKQotICAgICAgKGlmIChlcSAnb3IgKGNhciBzZWNvbmQpKQotCSAgKHB1c2ggKG5jb25jIChs aXN0ICdvciBmaXJzdCkgKGNkciBzZWNvbmQpKQotCQlpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZp ZXJzKQotCShwdXNoIChsaXN0ICdvciBmaXJzdCBzZWNvbmQpCi0JICAgICAgaWJ1ZmZlci1maWx0 ZXJpbmctcXVhbGlmaWVycykpKSkKLSAgKGlidWZmZXItdXBkYXRlIG5pbCB0KSkKKyAgKGlidWZm ZXItLW9yLWFuZC1maWx0ZXIgJ29yIGRlY29tcG9zZSkpCisKKzs7OyMjI2F1dG9sb2FkCisoZGVm dW4gaWJ1ZmZlci1hbmQtZmlsdGVyICgmb3B0aW9uYWwgZGVjb21wb3NlKQorICAiUmVwbGFjZSB0 aGUgdG9wIHR3byBmaWx0ZXJzIGluIHRoaXMgYnVmZmVyIHdpdGggdGhlaXIgbG9naWNhbCBBTkQu CitJZiBvcHRpb25hbCBhcmd1bWVudCBERUNPTVBPU0UgaXMgbm9uLW5pbCwgaW5zdGVhZCBicmVh ayB0aGUgdG9wIEFORAorZmlsdGVyIGludG8gcGFydHMuIgorICAoaW50ZXJhY3RpdmUgIlAiKQor ICAoaWJ1ZmZlci0tb3ItYW5kLWZpbHRlciAnYW5kIGRlY29tcG9zZSkpCiAKIChkZWZ1biBpYnVm ZmVyLW1heWJlLXNhdmUtc3R1ZmYgKCkKICAgKHdoZW4gaWJ1ZmZlci1zYXZlLXdpdGgtY3VzdG9t CkBAIC05ODYsNyArMTA5NCw5IEBAIEludGVyYWN0aXZlbHksIHByb21wdCBmb3IgTkFNRSwgYW5k IHVzZSB0aGUgY3VycmVudCBmaWx0ZXJzLiIKIAogKGRlZnVuIGlidWZmZXItZm9ybWF0LXF1YWxp ZmllciAocXVhbGlmaWVyKQogICAoaWYgKGVxIChjYXItc2FmZSBxdWFsaWZpZXIpICdub3QpCi0g ICAgICAoY29uY2F0ICIgW05PVCIgKGlidWZmZXItZm9ybWF0LXF1YWxpZmllci0xIChjZHIgcXVh bGlmaWVyKSkgIl0iKQorICAgICAgKGNvbmNhdCAiIFtOT1QiCisgICAgICAgICAgICAgIChpYnVm ZmVyLWZvcm1hdC1xdWFsaWZpZXItMSAoaWJ1ZmZlci11bmFyeS1vcGVyYW5kIHF1YWxpZmllcikp CisgICAgICAgICAgICAgICJdIikKICAgICAoaWJ1ZmZlci1mb3JtYXQtcXVhbGlmaWVyLTEgcXVh bGlmaWVyKSkpCiAKIChkZWZ1biBpYnVmZmVyLWZvcm1hdC1xdWFsaWZpZXItMSAocXVhbGlmaWVy KQpAQCAtOTk1LDE0ICsxMTA1LDE2IEBAIEludGVyYWN0aXZlbHksIHByb21wdCBmb3IgTkFNRSwg YW5kIHVzZSB0aGUgY3VycmVudCBmaWx0ZXJzLiIKICAgICAgKGNvbmNhdCAiIFtmaWx0ZXI6ICIg KGNkciBxdWFsaWZpZXIpICJdIikpCiAgICAgKGBvcgogICAgICAoY29uY2F0ICIgW09SIiAobWFw Y29uY2F0ICMnaWJ1ZmZlci1mb3JtYXQtcXVhbGlmaWVyCi0JCQkgICAgICAgKGNkciBxdWFsaWZp ZXIpICIiKSAiXSIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZHIgcXVhbGlm aWVyKSAiIikgIl0iKSkKKyAgICAoYGFuZAorICAgICAoY29uY2F0ICIgW0FORCIgKG1hcGNvbmNh dCAjJ2lidWZmZXItZm9ybWF0LXF1YWxpZmllcgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoY2RyIHF1YWxpZmllcikgIiIpICJdIikpCiAgICAgKF8KICAgICAgKGxldCAoKHR5cGUg KGFzc3EgKGNhciBxdWFsaWZpZXIpIGlidWZmZXItZmlsdGVyaW5nLWFsaXN0KSkpCiAgICAgICAg KHVubGVzcyBxdWFsaWZpZXIKLQkgKGVycm9yICJJYnVmZmVyOiBiYWQgcXVhbGlmaWVyICVzIiBx dWFsaWZpZXIpKQorICAgICAgICAgKGVycm9yICJJYnVmZmVyOiBiYWQgcXVhbGlmaWVyICVzIiBx dWFsaWZpZXIpKQogICAgICAgIChjb25jYXQgIiBbIiAoY2FkciB0eXBlKSAiOiAiIChmb3JtYXQg IiVzXSIgKGNkciBxdWFsaWZpZXIpKSkpKSkpCiAKLQogKGRlZnVuIGlidWZmZXItbGlzdC1idWZm ZXItbW9kZXMgKCZvcHRpb25hbCBpbmNsdWRlLXBhcmVudHMpCiAgICJDcmVhdGUgYSBjb21wbGV0 aW9uIHRhYmxlIG9mIGJ1ZmZlciBtb2RlcyBjdXJyZW50bHkgaW4gdXNlLgogSWYgSU5DTFVERS1Q QVJFTlRTIGlzIG5vbi1uaWwgdGhlbiBpbmNsdWRlIHBhcmVudCBtb2Rlcy4iCkBAIC0xMDIwLDcg KzExMzIsNyBAQCBJZiBJTkNMVURFLVBBUkVOVFMgaXMgbm9uLW5pbCB0aGVuIGluY2x1ZGUgcGFy ZW50IG1vZGVzLiIKIAogOzs7IyMjYXV0b2xvYWQgKGF1dG9sb2FkICdpYnVmZmVyLWZpbHRlci1i eS1tb2RlICJpYnVmLWV4dCIpCiAoZGVmaW5lLWlidWZmZXItZmlsdGVyIG1vZGUKLSAgIlRvZ2ds ZSBjdXJyZW50IHZpZXcgdG8gYnVmZmVycyB3aXRoIG1ham9yIG1vZGUgUVVBTElGSUVSLiIKKyAg IkxpbWl0IGN1cnJlbnQgdmlldyB0byBidWZmZXJzIHdpdGggbWFqb3IgbW9kZSBRVUFMSUZJRVIu IgogICAoOmRlc2NyaXB0aW9uICJtYWpvciBtb2RlIgogICAgOnJlYWRlcgogICAgKGxldCogKChi dWYgKGlidWZmZXItY3VycmVudC1idWZmZXIpKQpAQCAtMTA0MCw3ICsxMTUyLDcgQEAgSWYgSU5D TFVERS1QQVJFTlRTIGlzIG5vbi1uaWwgdGhlbiBpbmNsdWRlIHBhcmVudCBtb2Rlcy4iCiAKIDs7 OyMjI2F1dG9sb2FkIChhdXRvbG9hZCAnaWJ1ZmZlci1maWx0ZXItYnktdXNlZC1tb2RlICJpYnVm LWV4dCIpCiAoZGVmaW5lLWlidWZmZXItZmlsdGVyIHVzZWQtbW9kZQotICAiVG9nZ2xlIGN1cnJl bnQgdmlldyB0byBidWZmZXJzIHdpdGggbWFqb3IgbW9kZSBRVUFMSUZJRVIuCisgICJMaW1pdCBj dXJyZW50IHZpZXcgdG8gYnVmZmVycyB3aXRoIG1ham9yIG1vZGUgUVVBTElGSUVSLgogQ2FsbGVk IGludGVyYWN0aXZlbHksIHRoaXMgZnVuY3Rpb24gYWxsb3dzIHNlbGVjdGlvbiBvZiBtb2Rlcwog Y3VycmVudGx5IHVzZWQgYnkgYnVmZmVycy4iCiAgICg6ZGVzY3JpcHRpb24gIm1ham9yIG1vZGUg aW4gdXNlIgpAQCAtMTA1OSw3ICsxMTcxLDcgQEAgY3VycmVudGx5IHVzZWQgYnkgYnVmZmVycy4i CiAKIDs7OyMjI2F1dG9sb2FkIChhdXRvbG9hZCAnaWJ1ZmZlci1maWx0ZXItYnktZGVyaXZlZC1t b2RlICJpYnVmLWV4dCIpCiAoZGVmaW5lLWlidWZmZXItZmlsdGVyIGRlcml2ZWQtbW9kZQotICAg ICJUb2dnbGUgY3VycmVudCB2aWV3IHRvIGJ1ZmZlcnMgd2hvc2UgbWFqb3IgbW9kZSBpbmhlcml0 cyBmcm9tIFFVQUxJRklFUi4iCisgICAgIkxpbWl0IGN1cnJlbnQgdmlldyB0byBidWZmZXJzIHdo b3NlIG1ham9yIG1vZGUgaW5oZXJpdHMgZnJvbSBRVUFMSUZJRVIuIgogICAoOmRlc2NyaXB0aW9u ICJkZXJpdmVkIG1vZGUiCiAJCTpyZWFkZXIKIAkJKGludGVybgpAQCAtMTA3MCwyMiArMTE4Miw3 NCBAQCBjdXJyZW50bHkgdXNlZCBieSBidWZmZXJzLiIKIAogOzs7IyMjYXV0b2xvYWQgKGF1dG9s b2FkICdpYnVmZmVyLWZpbHRlci1ieS1uYW1lICJpYnVmLWV4dCIpCiAoZGVmaW5lLWlidWZmZXIt ZmlsdGVyIG5hbWUKLSAgIlRvZ2dsZSBjdXJyZW50IHZpZXcgdG8gYnVmZmVycyB3aXRoIG5hbWUg bWF0Y2hpbmcgUVVBTElGSUVSLiIKKyAgIkxpbWl0IGN1cnJlbnQgdmlldyB0byBidWZmZXJzIHdp dGggbmFtZSBtYXRjaGluZyBRVUFMSUZJRVIuIgogICAoOmRlc2NyaXB0aW9uICJidWZmZXIgbmFt ZSIKICAgIDpyZWFkZXIgKHJlYWQtZnJvbS1taW5pYnVmZmVyICJGaWx0ZXIgYnkgbmFtZSAocmVn ZXhwKTogIikpCiAgIChzdHJpbmctbWF0Y2ggcXVhbGlmaWVyIChidWZmZXItbmFtZSBidWYpKSkK IAorOzs7IyMjYXV0b2xvYWQgKGF1dG9sb2FkICdpYnVmZmVyLWZpbHRlci1ieS1zdGFycmVkLW5h bWUgImlidWYtZXh0IikKKyhkZWZpbmUtaWJ1ZmZlci1maWx0ZXIgc3RhcnJlZC1uYW1lCisgICAg IkxpbWl0IGN1cnJlbnQgdmlldyB0byBidWZmZXJzIHdpdGggbmFtZSBiZWdpbm5pbmcgYW5kIGVu ZGluZword2l0aCAqLCBhbG9uZyB3aXRoIGFuIG9wdGlvbmFsIHN1ZmZpeCBvZiB0aGUgZm9ybSBk aWdpdHMgb3IKKzxkaWdpdHM+LiIKKyAgKDpkZXNjcmlwdGlvbiAic3RhcnJlZCBidWZmZXIgbmFt ZSIKKyAgIDpyZWFkZXIgbmlsKQorICAoc3RyaW5nLW1hdGNoICJcXGBcXCpbXipdK1xcKlxcKD86 PFtbOmRpZ2l0Ol1dKz5cXCk/XFwnIiAoYnVmZmVyLW5hbWUgYnVmKSkpCisKIDs7OyMjI2F1dG9s b2FkIChhdXRvbG9hZCAnaWJ1ZmZlci1maWx0ZXItYnktZmlsZW5hbWUgImlidWYtZXh0IikKIChk ZWZpbmUtaWJ1ZmZlci1maWx0ZXIgZmlsZW5hbWUKLSAgIlRvZ2dsZSBjdXJyZW50IHZpZXcgdG8g YnVmZmVycyB3aXRoIGZpbGVuYW1lIG1hdGNoaW5nIFFVQUxJRklFUi4iCi0gICg6ZGVzY3JpcHRp b24gImZpbGVuYW1lIgotICAgOnJlYWRlciAocmVhZC1mcm9tLW1pbmlidWZmZXIgIkZpbHRlciBi eSBmaWxlbmFtZSAocmVnZXhwKTogIikpCisgICAgIkxpbWl0IGN1cnJlbnQgdmlldyB0byBidWZm ZXJzIHdpdGggZnVsbCBmaWxlIHBhdGhuYW1lIG1hdGNoaW5nIFFVQUxJRklFUi4KKworRm9yIGV4 YW1wbGUsIGZvciBhIGJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggZmlsZSAnL2EvYi9jLmQnLCB0aGlz CittYXRjaGVzIGFnYWluc3QgJy9hL2IvYy5kJy4iCisgICg6ZGVzY3JpcHRpb24gImZpbGUgcGF0 aG5hbWUiCisgICA6cmVhZGVyIChyZWFkLWZyb20tbWluaWJ1ZmZlciAiRmlsdGVyIGJ5IGZpbGUg cGF0aG5hbWUgKHJlZ2V4cCk6ICIpKQogICAoaWJ1ZmZlci1hd2hlbiAod2l0aC1jdXJyZW50LWJ1 ZmZlciBidWYgKGlidWZmZXItYnVmZmVyLWZpbGUtbmFtZSkpCiAgICAgKHN0cmluZy1tYXRjaCBx dWFsaWZpZXIgaXQpKSkKIAorOzsgSWYgZmlsZW5hbWUgYWJvdmUgd2VyZSByZW5hbWVkIHRvIHBh dGhuYW1lLCB0aGlzIGNvdWxkIGJlIGNhbGxlZCBmaWxlbmFtZS4KKzs7OyMjI2F1dG9sb2FkIChh dXRvbG9hZCAnaWJ1ZmZlci1maWx0ZXItYnktYmFzZW5hbWUgImlidWYtZXh0IikKKyhkZWZpbmUt aWJ1ZmZlci1maWx0ZXIgYmFzZW5hbWUKKyAgICAiTGltaXQgY3VycmVudCB2aWV3IHRvIGJ1ZmZl cnMgd2l0aCBmaWxlIGJhc2VuYW1lIG1hdGNoaW5nIFFVQUxJRklFUi4KKworRm9yIGV4YW1wbGUs IGZvciBhIGJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggZmlsZSAnL2EvYi9jLmQnLCB0aGlzCittYXRj aGVzIGFnYWluc3QgJ2MuZCcuIgorICAoOmRlc2NyaXB0aW9uICJmaWxlIGJhc2VuYW1lIgorICAg OnJlYWRlciAocmVhZC1mcm9tLW1pbmlidWZmZXIKKyAgICAgICAgICAgICJGaWx0ZXIgYnkgZmls ZSBuYW1lLCB3aXRob3V0IGRpcmVjdG9yeSBwYXJ0IChyZWdleCk6ICIpKQorICAoaWJ1ZmZlci1h d2hlbiAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWYgKGlidWZmZXItYnVmZmVyLWZpbGUtbmFtZSkp CisgICAgKHN0cmluZy1tYXRjaCBxdWFsaWZpZXIgKGZpbGUtbmFtZS1ub25kaXJlY3RvcnkgaXQp KSkpCisKKzs7OyMjI2F1dG9sb2FkIChhdXRvbG9hZCAnaWJ1ZmZlci1maWx0ZXItYnktZmlsZS1l eHRlbnNpb24gImlidWYtZXh0IikKKyhkZWZpbmUtaWJ1ZmZlci1maWx0ZXIgZmlsZS1leHRlbnNp b24KKyAgICAiTGltaXQgY3VycmVudCB2aWV3IHRvIGJ1ZmZlcnMgd2l0aCBmaWxlbmFtZSBleHRl bnNpb24gbWF0Y2hpbmcgUVVBTElGSUVSLgorCitUaGUgc2VwYXJhdG9yIGNoYXJhY3RlciAodHlw aWNhbGx5IGAuJykgaXMgbm90IHBhcnQgb2YgdGhlCitwYXR0ZXJuLiBGb3IgZXhhbXBsZSwgZm9y IGEgYnVmZmVyIGFzc29jaWF0ZWQgd2l0aCBmaWxlCisnL2EvYi9jLmQnLCB0aGlzIG1hdGNoZXMg YWdhaW5zdCAnZCcuIgorICAoOmRlc2NyaXB0aW9uICJmaWxlbmFtZSBleHRlbnNpb24iCisgICA6 cmVhZGVyIChyZWFkLWZyb20tbWluaWJ1ZmZlcgorICAgICAgICAgICAgIkZpbHRlciBieSBmaWxl bmFtZSBleHRlbnNpb24gd2l0aG91dCBzZXBhcmF0b3IgKHJlZ2V4KTogIikpCisgIChpYnVmZmVy LWF3aGVuICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZiAoaWJ1ZmZlci1idWZmZXItZmlsZS1uYW1l KSkKKyAgICAoc3RyaW5nLW1hdGNoIHF1YWxpZmllciAob3IgKGZpbGUtbmFtZS1leHRlbnNpb24g aXQpICIiKSkpKQorCis7OzsjIyNhdXRvbG9hZCAoYXV0b2xvYWQgJ2lidWZmZXItZmlsdGVyLWJ5 LWRpcmVjdG9yeSAiaWJ1Zi1leHQiKQorKGRlZmluZS1pYnVmZmVyLWZpbHRlciBkaXJlY3RvcnkK KyAgICAiTGltaXQgY3VycmVudCB2aWV3IHRvIGJ1ZmZlcnMgd2l0aCBkaXJlY3RvcnkgbWF0Y2hp bmcgUVVBTElGSUVSLgorCitGb3IgYSBidWZmZXIgYXNzb2NpYXRlZCB3aXRoIGZpbGUgJy9hL2Iv Yy5kJywgdGhpcyBtYXRjaGVzCithZ2FpbnN0ICcvYS9iJy4gRm9yIGEgYnVmZmVyIG5vdCBhc3Nv Y2lhdGVkIHdpdGggYSBmaWxlLCB0aGlzCittYXRjaGVzIGFnYWluc3QgdGhlIHZhbHVlIG9mIGBk ZWZhdWx0LWRpcmVjdG9yeScgaW4gdGhhdCBidWZmZXIuIgorICAoOmRlc2NyaXB0aW9uICJkaXJl Y3RvcnkgbmFtZSIKKyAgIDpyZWFkZXIgKHJlYWQtZnJvbS1taW5pYnVmZmVyICJGaWx0ZXIgYnkg ZGlyZWN0b3J5IG5hbWUgKHJlZ2V4KTogIikpCisgIChpYnVmZmVyLWFpZiAod2l0aC1jdXJyZW50 LWJ1ZmZlciBidWYgKGlidWZmZXItYnVmZmVyLWZpbGUtbmFtZSkpCisgICAgICAobGV0ICgoZGly bmFtZSAoZmlsZS1uYW1lLWRpcmVjdG9yeSBpdCkpKQorICAgICAgICAod2hlbiBkaXJuYW1lIChz dHJpbmctbWF0Y2ggcXVhbGlmaWVyIGRpcm5hbWUpKSkKKyAgICAod2hlbiBkZWZhdWx0LWRpcmVj dG9yeSAoc3RyaW5nLW1hdGNoIHF1YWxpZmllciBkZWZhdWx0LWRpcmVjdG9yeSkpKSkKKwogOzs7 IyMjYXV0b2xvYWQgKGF1dG9sb2FkICdpYnVmZmVyLWZpbHRlci1ieS1zaXplLWd0ICAiaWJ1Zi1l eHQiKQogKGRlZmluZS1pYnVmZmVyLWZpbHRlciBzaXplLWd0Ci0gICJUb2dnbGUgY3VycmVudCB2 aWV3IHRvIGJ1ZmZlcnMgd2l0aCBzaXplIGdyZWF0ZXIgdGhhbiBRVUFMSUZJRVIuIgorICAiTGlt aXQgY3VycmVudCB2aWV3IHRvIGJ1ZmZlcnMgd2l0aCBzaXplIGdyZWF0ZXIgdGhhbiBRVUFMSUZJ RVIuIgogICAoOmRlc2NyaXB0aW9uICJzaXplIGdyZWF0ZXIgdGhhbiIKICAgIDpyZWFkZXIKICAg IChzdHJpbmctdG8tbnVtYmVyIChyZWFkLWZyb20tbWluaWJ1ZmZlciAiRmlsdGVyIGJ5IHNpemUg Z3JlYXRlciB0aGFuOiAiKSkpCkBAIC0xMDk0LDE2ICsxMjU4LDMwIEBAIGN1cnJlbnRseSB1c2Vk IGJ5IGJ1ZmZlcnMuIgogCiA7OzsjIyNhdXRvbG9hZCAoYXV0b2xvYWQgJ2lidWZmZXItZmlsdGVy LWJ5LXNpemUtbHQgICJpYnVmLWV4dCIpCiAoZGVmaW5lLWlidWZmZXItZmlsdGVyIHNpemUtbHQK LSAgICJUb2dnbGUgY3VycmVudCB2aWV3IHRvIGJ1ZmZlcnMgd2l0aCBzaXplIGxlc3MgdGhhbiBR VUFMSUZJRVIuIgorICAgICJMaW1pdCBjdXJyZW50IHZpZXcgdG8gYnVmZmVycyB3aXRoIHNpemUg bGVzcyB0aGFuIFFVQUxJRklFUi4iCiAgICg6ZGVzY3JpcHRpb24gInNpemUgbGVzcyB0aGFuIgog ICAgOnJlYWRlcgogICAgKHN0cmluZy10by1udW1iZXIgKHJlYWQtZnJvbS1taW5pYnVmZmVyICJG aWx0ZXIgYnkgc2l6ZSBsZXNzIHRoYW46ICIpKSkKICAgKDwgKHdpdGgtY3VycmVudC1idWZmZXIg YnVmIChidWZmZXItc2l6ZSkpCiAgICAgIHF1YWxpZmllcikpCiAKKzs7OyMjI2F1dG9sb2FkIChh dXRvbG9hZCAnaWJ1ZmZlci1maWx0ZXItYnktbW9kaWZpZWQgImlidWYtZXh0IikKKyhkZWZpbmUt aWJ1ZmZlci1maWx0ZXIgbW9kaWZpZWQKKyAgICAiTGltaXQgY3VycmVudCB2aWV3IHRvIGJ1ZmZl cnMgdGhhdCBhcmUgbWFya2VkIGFzIG1vZGlmaWVkLiIKKyAgKDpkZXNjcmlwdGlvbiAibW9kaWZp ZWQiCisgICA6cmVhZGVyIG5pbCkKKyAgKGJ1ZmZlci1tb2RpZmllZC1wIGJ1ZikpCisKKzs7OyMj I2F1dG9sb2FkIChhdXRvbG9hZCAnaWJ1ZmZlci1maWx0ZXItYnktdmlzaXRpbmctZmlsZSAiaWJ1 Zi1leHQiKQorKGRlZmluZS1pYnVmZmVyLWZpbHRlciB2aXNpdGluZy1maWxlCisgICAgIkxpbWl0 IGN1cnJlbnQgdmlldyB0byBidWZmZXJzIHRoYXQgYXJlIHZpc2l0aW5nIGEgZmlsZS4iCisgICg6 ZGVzY3JpcHRpb24gInZpc2l0aW5nIGEgZmlsZSIKKyAgIDpyZWFkZXIgbmlsKQorICAod2l0aC1j dXJyZW50LWJ1ZmZlciBidWYgKGJ1ZmZlci1maWxlLW5hbWUpKSkKKwogOzs7IyMjYXV0b2xvYWQg KGF1dG9sb2FkICdpYnVmZmVyLWZpbHRlci1ieS1jb250ZW50ICJpYnVmLWV4dCIpCiAoZGVmaW5l LWlidWZmZXItZmlsdGVyIGNvbnRlbnQKLSAgICJUb2dnbGUgY3VycmVudCB2aWV3IHRvIGJ1ZmZl cnMgd2hvc2UgY29udGVudHMgbWF0Y2ggUVVBTElGSUVSLiIKKyAgICJMaW1pdCBjdXJyZW50IHZp ZXcgdG8gYnVmZmVycyB3aG9zZSBjb250ZW50cyBtYXRjaCBRVUFMSUZJRVIuIgogICAoOmRlc2Ny aXB0aW9uICJjb250ZW50IgogICAgOnJlYWRlciAocmVhZC1mcm9tLW1pbmlidWZmZXIgIkZpbHRl ciBieSBjb250ZW50IChyZWdleHApOiAiKSkKICAgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmCkBA IC0xMTEzLDEyICsxMjkxLDMzIEBAIGN1cnJlbnRseSB1c2VkIGJ5IGJ1ZmZlcnMuIgogCiA7Ozsj IyNhdXRvbG9hZCAoYXV0b2xvYWQgJ2lidWZmZXItZmlsdGVyLWJ5LXByZWRpY2F0ZSAiaWJ1Zi1l eHQiKQogKGRlZmluZS1pYnVmZmVyLWZpbHRlciBwcmVkaWNhdGUKLSAgICJUb2dnbGUgY3VycmVu dCB2aWV3IHRvIGJ1ZmZlcnMgZm9yIHdoaWNoIFFVQUxJRklFUiByZXR1cm5zIG5vbi1uaWwuIgor ICAgIkxpbWl0IGN1cnJlbnQgdmlldyB0byBidWZmZXJzIGZvciB3aGljaCBRVUFMSUZJRVIgcmV0 dXJucyBub24tbmlsLiIKICAgKDpkZXNjcmlwdGlvbiAicHJlZGljYXRlIgogICAgOnJlYWRlciAo cmVhZC1taW5pYnVmZmVyICJGaWx0ZXIgYnkgcHJlZGljYXRlIChmb3JtKTogIikpCiAgICh3aXRo LWN1cnJlbnQtYnVmZmVyIGJ1ZgogICAgIChldmFsIHF1YWxpZmllcikpKQogCis7OzsjIyNhdXRv bG9hZCAoYXV0b2xvYWQgJ2lidWZmZXItZmlsdGVyLWNob3Nlbi1ieS1jb21wbGV0aW9uICJpYnVm LWV4dCIpCisoZGVmdW4gaWJ1ZmZlci1maWx0ZXItY2hvc2VuLWJ5LWNvbXBsZXRpb24gKCkKKyAg IlNlbGVjdCBhbmQgYXBwbHkgZmlsdGVyIGNob3NlbiBieSBjb21wbGV0aW9uIGFnYWluc3QgYXZh aWxhYmxlIGZpbHRlcnMuCitJbmRpY2F0ZXMgY29ycmVzcG9uZGluZyBrZXkgc2VxdWVuY2VzIGlu IGVjaG8gYXJlYSBhZnRlciBmaWx0ZXJpbmcuCisKK1RoZSBjb21wbGV0aW9uIG1hdGNoZXMgYWdh aW5zdCB0aGUgZmlsdGVyIGRlc2NyaXB0aW9uIHRleHQgb2YKK2VhY2ggZmlsdGVyIGluIGBpYnVm ZmVyLWZpbHRlcmluZy1hbGlzdCcuIgorICAoaW50ZXJhY3RpdmUpCisgIChsZXQqICgoZmlsdGVy cyAobWFwY2FyIChsYW1iZGEgKHgpIChjb25zIChjYWRyIHgpIChjYXIgeCkpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICBpYnVmZmVyLWZpbHRlcmluZy1hbGlzdCkpCisgICAgICAgICAobWF0 Y2ggKGNvbXBsZXRpbmctcmVhZCAiRmlsdGVyIGJ5OiAiIGZpbHRlcnMgbmlsIHQpKQorICAgICAg ICAgKGZpbHRlciAoY2RyIChhc3NvYyBtYXRjaCBmaWx0ZXJzKSkpCisgICAgICAgICAoY29tbWFu ZCAoaW50ZXJuIChjb25jYXQgImlidWZmZXItZmlsdGVyLWJ5LSIgKHN5bWJvbC1uYW1lIGZpbHRl cikpKSkpCisgICAgKGNhbGwtaW50ZXJhY3RpdmVseSBjb21tYW5kKQorICAgIChtZXNzYWdlICIl cyBjYW4gYmUgcnVuIHdpdGgga2V5IHNlcXVlbmNlczogJXMiCisgICAgICAgICAgICAgY29tbWFu ZAorICAgICAgICAgICAgIChtYXBjb25jYXQgIydrZXktZGVzY3JpcHRpb24KKyAgICAgICAgICAg ICAgICAgICAgICAgICh3aGVyZS1pcy1pbnRlcm5hbCBjb21tYW5kIGlidWZmZXItbW9kZS1tYXAg bmlsIHQpCisgICAgICAgICAgICAgICAgICAgICAgICAib3IgIikpKSkKKworCiA7OzsgU29ydGlu ZwogCiA7OzsjIyNhdXRvbG9hZApkaWZmIC0tZ2l0IGEvbGlzcC9pYnVmZmVyLmVsIGIvbGlzcC9p YnVmZmVyLmVsCmluZGV4IDUxZDdjYjkuLmMyMGI1YjkgMTAwNjQ0Ci0tLSBhL2xpc3AvaWJ1ZmZl ci5lbAorKysgYi9saXNwL2lidWZmZXIuZWwKQEAgLTUxOCwyOCArNTE4LDQwIEBAIGRpcmVjdG9y eSwgbGlrZSBgZGVmYXVsdC1kaXJlY3RvcnknLiIKICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAi cyBmIikgJ2lidWZmZXItZG8tc29ydC1ieS1maWxlbmFtZS9wcm9jZXNzKQogICAgIChkZWZpbmUt a2V5IG1hcCAoa2JkICJzIG0iKSAnaWJ1ZmZlci1kby1zb3J0LWJ5LW1ham9yLW1vZGUpCiAKKyAg ICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyBSRVQiKSAnaWJ1ZmZlci1maWx0ZXItYnktbW9kZSkK ICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyBtIikgJ2lidWZmZXItZmlsdGVyLWJ5LXVzZWQt bW9kZSkKICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyBNIikgJ2lidWZmZXItZmlsdGVyLWJ5 LWRlcml2ZWQtbW9kZSkKICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyBuIikgJ2lidWZmZXIt ZmlsdGVyLWJ5LW5hbWUpCi0gICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIi8gYyIpICdpYnVmZmVy LWZpbHRlci1ieS1jb250ZW50KQotICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvIGUiKSAnaWJ1 ZmZlci1maWx0ZXItYnktcHJlZGljYXRlKQorICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvICoi KSAnaWJ1ZmZlci1maWx0ZXItYnktc3RhcnJlZC1uYW1lKQogICAgIChkZWZpbmUta2V5IG1hcCAo a2JkICIvIGYiKSAnaWJ1ZmZlci1maWx0ZXItYnktZmlsZW5hbWUpCi0gICAgKGRlZmluZS1rZXkg bWFwIChrYmQgIi8gPiIpICdpYnVmZmVyLWZpbHRlci1ieS1zaXplLWd0KQorICAgIChkZWZpbmUt a2V5IG1hcCAoa2JkICIvIGIiKSAnaWJ1ZmZlci1maWx0ZXItYnktYmFzZW5hbWUpCisgICAgKGRl ZmluZS1rZXkgbWFwIChrYmQgIi8gLiIpICdpYnVmZmVyLWZpbHRlci1ieS1maWxlLWV4dGVuc2lv bikKKyAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyAvIikgJ2lidWZmZXItZmlsdGVyLWJ5LWRp cmVjdG9yeSkKICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyA8IikgJ2lidWZmZXItZmlsdGVy LWJ5LXNpemUtbHQpCisgICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIi8gPiIpICdpYnVmZmVyLWZp bHRlci1ieS1zaXplLWd0KQorICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvIGkiKSAnaWJ1ZmZl ci1maWx0ZXItYnktbW9kaWZpZWQpCisgICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIi8gdiIpICdp YnVmZmVyLWZpbHRlci1ieS12aXNpdGluZy1maWxlKQorICAgIChkZWZpbmUta2V5IG1hcCAoa2Jk ICIvIGMiKSAnaWJ1ZmZlci1maWx0ZXItYnktY29udGVudCkKKyAgICAoZGVmaW5lLWtleSBtYXAg KGtiZCAiLyBlIikgJ2lidWZmZXItZmlsdGVyLWJ5LXByZWRpY2F0ZSkKKyAgICAoZGVmaW5lLWtl eSBtYXAgKGtiZCAiLyBUQUIiKSAnaWJ1ZmZlci1maWx0ZXItY2hvc2VuLWJ5LWNvbXBsZXRpb24p CisKICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyByIikgJ2lidWZmZXItc3dpdGNoLXRvLXNh dmVkLWZpbHRlcnMpCiAgICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIi8gYSIpICdpYnVmZmVyLWFk ZC1zYXZlZC1maWx0ZXJzKQogICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvIHgiKSAnaWJ1ZmZl ci1kZWxldGUtc2F2ZWQtZmlsdGVycykKICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyBkIikg J2lidWZmZXItZGVjb21wb3NlLWZpbHRlcikKICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyBz IikgJ2lidWZmZXItc2F2ZS1maWx0ZXJzKQogICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvIHAi KSAnaWJ1ZmZlci1wb3AtZmlsdGVyKQorICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvIDx1cD4i KSAnaWJ1ZmZlci1wb3AtZmlsdGVyKQogICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvICEiKSAn aWJ1ZmZlci1uZWdhdGUtZmlsdGVyKQogICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvIHQiKSAn aWJ1ZmZlci1leGNoYW5nZS1maWx0ZXJzKQotICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvIFRB QiIpICdpYnVmZmVyLWV4Y2hhbmdlLWZpbHRlcnMpCiAgICAgKGRlZmluZS1rZXkgbWFwIChrYmQg Ii8gbyIpICdpYnVmZmVyLW9yLWZpbHRlcikKKyAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyB8 IikgJ2lidWZmZXItb3ItZmlsdGVyKQorICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvICYiKSAn aWJ1ZmZlci1hbmQtZmlsdGVyKQogICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvIGciKSAnaWJ1 ZmZlci1maWx0ZXJzLXRvLWZpbHRlci1ncm91cCkKICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAi LyBQIikgJ2lidWZmZXItcG9wLWZpbHRlci1ncm91cCkKKyAgICAoZGVmaW5lLWtleSBtYXAgKGti ZCAiLyBTLTx1cD4iKSAnaWJ1ZmZlci1wb3AtZmlsdGVyLWdyb3VwKQogICAgIChkZWZpbmUta2V5 IG1hcCAoa2JkICIvIEQiKSAnaWJ1ZmZlci1kZWNvbXBvc2UtZmlsdGVyLWdyb3VwKQotICAgIChk ZWZpbmUta2V5IG1hcCAoa2JkICIvIC8iKSAnaWJ1ZmZlci1maWx0ZXItZGlzYWJsZSkKKyAgICAo ZGVmaW5lLWtleSBtYXAgKGtiZCAiLyBERUwiKSAnaWJ1ZmZlci1maWx0ZXItZGlzYWJsZSkKIAog ICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICJNLW4iKSAnaWJ1ZmZlci1mb3J3YXJkLWZpbHRlci1n cm91cCkKICAgICAoZGVmaW5lLWtleSBtYXAgIlx0IiAnaWJ1ZmZlci1mb3J3YXJkLWZpbHRlci1n cm91cCkKQEAgLTY0Nyw2ICs2NTksNyBAQCBkaXJlY3RvcnksIGxpa2UgYGRlZmF1bHQtZGlyZWN0 b3J5Jy4iCiAgICAgKGRlZmluZS1rZXktYWZ0ZXIgbWFwIFttZW51LWJhciB2aWV3IGZpbHRlciBm aWx0ZXItZGlzYWJsZV0KICAgICAgICcobWVudS1pdGVtICJEaXNhYmxlIGFsbCBmaWx0ZXJpbmci IGlidWZmZXItZmlsdGVyLWRpc2FibGUKICAgICAgICAgOmVuYWJsZSAoYW5kIChmZWF0dXJlcCAn aWJ1Zi1leHQpIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKSkKKwogICAgIChkZWZpbmUt a2V5LWFmdGVyIG1hcCBbbWVudS1iYXIgdmlldyBmaWx0ZXIgZmlsdGVyLWJ5LW1vZGVdCiAgICAg ICAnKG1lbnUtaXRlbSAiQWRkIGZpbHRlciBieSBhbnkgbWFqb3IgbW9kZS4uLiIgaWJ1ZmZlci1m aWx0ZXItYnktbW9kZSkpCiAgICAgKGRlZmluZS1rZXktYWZ0ZXIgbWFwIFttZW51LWJhciB2aWV3 IGZpbHRlciBmaWx0ZXItYnktdXNlZC1tb2RlXQpAQCAtNjU3LDE5ICs2NzAsNTAgQEAgZGlyZWN0 b3J5LCBsaWtlIGBkZWZhdWx0LWRpcmVjdG9yeScuIgogICAgICAgICAgICAgICAgICAgaWJ1ZmZl ci1maWx0ZXItYnktZGVyaXZlZC1tb2RlKSkKICAgICAoZGVmaW5lLWtleS1hZnRlciBtYXAgW21l bnUtYmFyIHZpZXcgZmlsdGVyIGZpbHRlci1ieS1uYW1lXQogICAgICAgJyhtZW51LWl0ZW0gIkFk ZCBmaWx0ZXIgYnkgYnVmZmVyIG5hbWUuLi4iIGlidWZmZXItZmlsdGVyLWJ5LW5hbWUpKQorICAg IChkZWZpbmUta2V5LWFmdGVyIG1hcCBbbWVudS1iYXIgdmlldyBmaWx0ZXIgZmlsdGVyLWJ5LXN0 YXJyZWQtbmFtZV0KKyAgICAgICcobWVudS1pdGVtICJBZGQgZmlsdGVyIGJ5IHN0YXJyZWQgYnVm ZmVyIG5hbWUuLi4iCisgICAgICAgICAgICAgICAgICBpYnVmZmVyLWZpbHRlci1ieS1zdGFycmVk LW5hbWUKKyAgICAgICAgICAgICAgICAgIDpoZWxwICJMaXN0IGJ1ZmZlcnMgd2hvc2UgbmFtZXMg YmVnaW4gd2l0aCBhIHN0YXIiKSkKICAgICAoZGVmaW5lLWtleS1hZnRlciBtYXAgW21lbnUtYmFy IHZpZXcgZmlsdGVyIGZpbHRlci1ieS1maWxlbmFtZV0KLSAgICAgICcobWVudS1pdGVtICJBZGQg ZmlsdGVyIGJ5IGZpbGVuYW1lLi4uIiBpYnVmZmVyLWZpbHRlci1ieS1maWxlbmFtZSkpCisgICAg ICAnKG1lbnUtaXRlbSAiQWRkIGZpbHRlciBieSBmdWxsIHBhdGhuYW1lLi4uIiBpYnVmZmVyLWZp bHRlci1ieS1maWxlbmFtZQorICAgICAgICAgICAgICAgICAgOmhlbHAKKyAgICAgICAgICAgICAg ICAgIChjb25jYXQgIkZvciBhIGJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggZmlsZSAnL2EvYi9jLmQn LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXN0IGJ1ZmZlciBpZiBhIGdpdmVuIHBh dHRlcm4gbWF0Y2hlcyAnL2EvYi9jLmQnIikpKQorICAgIChkZWZpbmUta2V5LWFmdGVyIG1hcCBb bWVudS1iYXIgdmlldyBmaWx0ZXIgZmlsdGVyLWJ5LWJhc2VuYW1lXQorICAgICAgJyhtZW51LWl0 ZW0gIkFkZCBmaWx0ZXIgYnkgZmlsZSBiYXNlbmFtZS4uLiIKKyAgICAgICAgICAgICAgICAgIGli dWZmZXItZmlsdGVyLWJ5LWJhc2VuYW1lCisgICAgICAgICAgICAgICAgICA6aGVscCAoY29uY2F0 ICJGb3IgYSBidWZmZXIgYXNzb2NpYXRlZCB3aXRoIGZpbGUgJy9hL2IvYy5kJywgIgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAibGlzdCBidWZmZXIgaWYgYSBnaXZlbiBwYXR0ZXJu IG1hdGNoZXMgJ2MuZCciKSkpCisgICAgKGRlZmluZS1rZXktYWZ0ZXIgbWFwIFttZW51LWJhciB2 aWV3IGZpbHRlciBmaWx0ZXItYnktZmlsZS1leHRlbnNpb25dCisgICAgICAnKG1lbnUtaXRlbSAi QWRkIGZpbHRlciBieSBmaWxlIG5hbWUgZXh0ZW5zaW9uLi4uIgorICAgICAgICAgICAgICAgICAg aWJ1ZmZlci1maWx0ZXItYnktZmlsZS1leHRlbnNpb24KKyAgICAgICAgICAgICAgICAgIDpoZWxw IChjb25jYXQgIkZvciBhIGJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggZmlsZSAnL2EvYi9jLmQnLCAi CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXN0IGJ1ZmZlciBpZiBhIGdpdmVu IHBhdHRlcm4gbWF0Y2hlcyAnZCciKSkpCisgICAgKGRlZmluZS1rZXktYWZ0ZXIgbWFwIFttZW51 LWJhciB2aWV3IGZpbHRlciBmaWx0ZXItYnktZGlyZWN0b3J5XQorICAgICAgJyhtZW51LWl0ZW0g IkFkZCBmaWx0ZXIgYnkgZmlsZW5hbWUncyBkaXJlY3RvcnkuLi4iCisgICAgICAgICAgICAgICAg ICBpYnVmZmVyLWZpbHRlci1ieS1kaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgIDpoZWxwCisg ICAgICAgICAgICAgICAgICAoY29uY2F0ICJGb3IgYSBidWZmZXIgYXNzb2NpYXRlZCB3aXRoIGZp bGUgJy9hL2IvYy5kJywgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAibGlzdCBidWZmZXIg aWYgYSBnaXZlbiBwYXR0ZXJuIG1hdGNoZXMgJy9hL2InIikpKQogICAgIChkZWZpbmUta2V5LWFm dGVyIG1hcCBbbWVudS1iYXIgdmlldyBmaWx0ZXIgZmlsdGVyLWJ5LXNpemUtbHRdCiAgICAgICAn KG1lbnUtaXRlbSAiQWRkIGZpbHRlciBieSBzaXplIGxlc3MgdGhhbi4uLiIgaWJ1ZmZlci1maWx0 ZXItYnktc2l6ZS1sdCkpCiAgICAgKGRlZmluZS1rZXktYWZ0ZXIgbWFwIFttZW51LWJhciB2aWV3 IGZpbHRlciBmaWx0ZXItYnktc2l6ZS1ndF0KICAgICAgICcobWVudS1pdGVtICJBZGQgZmlsdGVy IGJ5IHNpemUgZ3JlYXRlciB0aGFuLi4uIgogICAgICAgICBpYnVmZmVyLWZpbHRlci1ieS1zaXpl LWd0KSkKKyAgICAoZGVmaW5lLWtleS1hZnRlciBtYXAgW21lbnUtYmFyIHZpZXcgZmlsdGVyIGZp bHRlci1ieS1tb2RpZmllZF0KKyAgICAgICcobWVudS1pdGVtICJBZGQgZmlsdGVyIGJ5IG1vZGlm aWVkIGJ1ZmZlci4uLiIgaWJ1ZmZlci1maWx0ZXItYnktbW9kaWZpZWQKKyAgICAgICAgICAgICAg ICAgIDpoZWxwICJMaXN0IGJ1ZmZlcnMgdGhhdCBhcmUgbWFya2VkIGFzIG1vZGlmaWVkIikpCisg ICAgKGRlZmluZS1rZXktYWZ0ZXIgbWFwIFttZW51LWJhciB2aWV3IGZpbHRlciBmaWx0ZXItYnkt dmlzaXRpbmctZmlsZV0KKyAgICAgICcobWVudS1pdGVtICJBZGQgZmlsdGVyIGJ5IG1vZGlmaWVk IGJ1ZmZlci4uLiIKKyAgICAgICAgICAgICAgICAgIGlidWZmZXItZmlsdGVyLWJ5LXZpc2l0aW5n LWZpbGUKKyAgICAgICAgICAgICAgICAgIDpoZWxwICJMaXN0IGJ1ZmZlcnMgdGhhdCBhcmUgdmlz aXRpbmcgZmlsZXMiKSkKICAgICAoZGVmaW5lLWtleS1hZnRlciBtYXAgW21lbnUtYmFyIHZpZXcg ZmlsdGVyIGZpbHRlci1ieS1jb250ZW50XQogICAgICAgJyhtZW51LWl0ZW0gIkFkZCBmaWx0ZXIg YnkgY29udGVudCAocmVnZXhwKS4uLiIKICAgICAgICAgaWJ1ZmZlci1maWx0ZXItYnktY29udGVu dCkpCiAgICAgKGRlZmluZS1rZXktYWZ0ZXIgbWFwIFttZW51LWJhciB2aWV3IGZpbHRlciBmaWx0 ZXItYnktcHJlZGljYXRlXQogICAgICAgJyhtZW51LWl0ZW0gIkFkZCBmaWx0ZXIgYnkgTGlzcCBw cmVkaWNhdGUuLi4iCiAgICAgICAgIGlidWZmZXItZmlsdGVyLWJ5LXByZWRpY2F0ZSkpCisKICAg ICAoZGVmaW5lLWtleS1hZnRlciBtYXAgW21lbnUtYmFyIHZpZXcgZmlsdGVyIHBvcC1maWx0ZXJd CiAgICAgICAnKG1lbnUtaXRlbSAiUmVtb3ZlIHRvcCBmaWx0ZXIiIGlidWZmZXItcG9wLWZpbHRl cgogICAgICAgICA6ZW5hYmxlIChhbmQgKGZlYXR1cmVwICdpYnVmLWV4dCkgaWJ1ZmZlci1maWx0 ZXJpbmctcXVhbGlmaWVycykpKQpAQCAtNjgyLDYgKzcyNiwxMiBAQCBkaXJlY3RvcnksIGxpa2Ug YGRlZmF1bHQtZGlyZWN0b3J5Jy4iCiAgICAgKGRlZmluZS1rZXktYWZ0ZXIgbWFwIFttZW51LWJh ciB2aWV3IGZpbHRlciBuZWdhdGUtZmlsdGVyXQogICAgICAgJyhtZW51LWl0ZW0gIk5lZ2F0ZSB0 b3AgZmlsdGVyIiBpYnVmZmVyLW5lZ2F0ZS1maWx0ZXIKICAgICAgICAgOmVuYWJsZSAoYW5kIChm ZWF0dXJlcCAnaWJ1Zi1leHQpIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKSkKKyAgICAo ZGVmaW5lLWtleS1hZnRlciBtYXAgW21lbnUtYmFyIHZpZXcgZmlsdGVyIGFuZC1maWx0ZXJdCisg ICAgICAnKG1lbnUtaXRlbSAiQU5EIHRvcCB0d28gZmlsdGVycyIgaWJ1ZmZlci1hbmQtZmlsdGVy CisgICAgICAgIDplbmFibGUgKGFuZCAoZmVhdHVyZXAgJ2lidWYtZXh0KSBpYnVmZmVyLWZpbHRl cmluZy1xdWFsaWZpZXJzCisgICAgICAgICAgICAgICAgICAgICAoY2RyIGlidWZmZXItZmlsdGVy aW5nLXF1YWxpZmllcnMpKQorICAgICAgICA6aGVscAorICAgICAgICAiQ3JlYXRlIGEgbmV3IGZp bHRlciB3aGljaCBpcyB0aGUgbG9naWNhbCBBTkQgb2YgdGhlIHRvcCB0d28gZmlsdGVycyIpKQog ICAgIChkZWZpbmUta2V5LWFmdGVyIG1hcCBbbWVudS1iYXIgdmlldyBmaWx0ZXIgZGVjb21wb3Nl LWZpbHRlcl0KICAgICAgICcobWVudS1pdGVtICJEZWNvbXBvc2UgdG9wIGZpbHRlciIgaWJ1ZmZl ci1kZWNvbXBvc2UtZmlsdGVyCiAgICAgICAgIDplbmFibGUgKGFuZCAoZmVhdHVyZXAgJ2lidWYt ZXh0KQpkaWZmIC0tZ2l0IGEvdGVzdC9saXNwL2lidWZmZXItdGVzdHMuZWwgYi90ZXN0L2xpc3Av aWJ1ZmZlci10ZXN0cy5lbAppbmRleCAzYTRkZWYzLi4yYWZkMDQ0IDEwMDY0NAotLS0gYS90ZXN0 L2xpc3AvaWJ1ZmZlci10ZXN0cy5lbAorKysgYi90ZXN0L2xpc3AvaWJ1ZmZlci10ZXN0cy5lbApA QCAtMjQsNyArMjQsOCBAQAogICAocmVxdWlyZSAnaWJ1Zi1tYWNzKSkKIAogKGVydC1kZWZ0ZXN0 IGlidWZmZXItYXV0b2xvYWQgKCkKLSAgIlRlc3RzIHRvIHNlZSB3aGV0aGVyIHJlZnRleC1hdWMg aGFzIGJlZW4gYXV0b2xvYWRlZCIKKyAgIlRlc3RzIHRvIHNlZSB3aGV0aGVyIGlidWZmZXIgaGFz IGJlZW4gYXV0b2xvYWRlZCIKKyAgKHNraXAtdW5sZXNzIChub3QgKGZlYXR1cmVwICdpYnVmLWV4 dCkpKQogICAoc2hvdWxkCiAgICAoZmJvdW5kcCAnaWJ1ZmZlci1tYXJrLXVuc2F2ZWQtYnVmZmVy cykpCiAgIChzaG91bGQKQEAgLTY2LDUgKzY3LDY2OSBAQAogICAgICAgKG1hcGMgKGxhbWJkYSAo YnVmKSAod2hlbiAoYnVmZmVyLWxpdmUtcCBidWYpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGtpbGwtYnVmZmVyIGJ1ZikpKSAobGlzdCBidWYxIGJ1ZjIpKSkpKQogCis7OyBUZXN0IEZp bHRlciBJbmNsdXNpb24KKyhsZXQqICh0ZXN0LWJ1ZmZlci1saXN0ICA7IGFjY3VtdWxhdGVkIGJ1 ZmZlcnMgdG8gY2xlYW4gdXAKKyAgICAgICA7OyBVdGlsaXR5IGZ1bmN0aW9ucyB3aXRob3V0IHBv bGx1dGluZyB0aGUgZW52aXJvbm1lbnQKKyAgICAgICAoc2V0LWJ1ZmZlci1tb2RlCisgICAgICAg IChsYW1iZGEgKGJ1ZmZlciBtb2RlKQorICAgICAgICAgICJTZXQgQlVGRkVSJ3MgbWFqb3IgbW9k ZSB0byBNT0RFLCBhIG1vZGUgZnVuY3Rpb24sIG9yIGZ1bmRhbWVudGFsLiIKKyAgICAgICAgICAo d2l0aC1jdXJyZW50LWJ1ZmZlciBidWZmZXIKKyAgICAgICAgICAgIChmdW5jYWxsIChvciBtb2Rl ICMnZnVuZGFtZW50YWwtbW9kZSkpKSkpCisgICAgICAgKHNldC1idWZmZXItY29udGVudHMKKyAg ICAgICAgKGxhbWJkYSAoYnVmZmVyIHNpemUgaW5jbHVkZS1jb250ZW50KQorICAgICAgICAgICJB ZGQgZXhhY3RseSBTSVpFIGJ5dGVzIHRvIEJVRkZFUiwgaW5jbHVkaW5nIElOQ0xVREUtQ09OVEVO VC4iCisgICAgICAgICAgKHdoZW4gKG9yIHNpemUgaW5jbHVkZS1jb250ZW50KQorICAgICAgICAg ICAgKGxldCogKCh1bml0ICJcbiIpCisgICAgICAgICAgICAgICAgICAgKGNodW5rICJjY2NjY2Nj Y2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjXG4iKQorICAgICAgICAgICAgICAgICAgIChjaHVuay1z aXplIChsZW5ndGggY2h1bmspKQorICAgICAgICAgICAgICAgICAgIChzaXplIChpZiAoYW5kIHNp emUgaW5jbHVkZS1jb250ZW50IChzdHJpbmdwIGluY2x1ZGUtY29udGVudCkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgtIHNpemUgKGxlbmd0aCBpbmNsdWRlLWNvbnRlbnQpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSkpKQorICAgICAgICAgICAgICAodW5sZXNzIChv ciAobnVsbCBzaXplKSAoPiBzaXplIDApKQorICAgICAgICAgICAgICAgIChlcnJvciAic2l6ZSBh cmd1bWVudCBtdXN0IGJlIG5pbCBvciBwb3NpdGl2ZSIpKQorICAgICAgICAgICAgICAod2l0aC1j dXJyZW50LWJ1ZmZlciBidWZmZXIKKyAgICAgICAgICAgICAgICAod2hlbiBpbmNsdWRlLWNvbnRl bnQKKyAgICAgICAgICAgICAgICAgIChpbnNlcnQgaW5jbHVkZS1jb250ZW50KSkKKyAgICAgICAg ICAgICAgICAod2hlbiBzaXplCisgICAgICAgICAgICAgICAgICAoZG90aW1lcyAoXyAoZmxvb3Ig c2l6ZSBjaHVuay1zaXplKSkKKyAgICAgICAgICAgICAgICAgICAgKGluc2VydCBjaHVuaykpCisg ICAgICAgICAgICAgICAgICAoZG90aW1lcyAoXyAobW9kIHNpemUgY2h1bmstc2l6ZSkpCisgICAg ICAgICAgICAgICAgICAgIChpbnNlcnQgdW5pdCkpKQorICAgICAgICAgICAgICAgIDs7IHByZXZl bnQgcXVlcnkgb24gY2xlYW51cAorICAgICAgICAgICAgICAgIChzZXQtYnVmZmVyLW1vZGlmaWVk LXAgbmlsKSkpKSkpCisgICAgICAgKGNyZWF0ZS1maWxlLWJ1ZmZlcgorICAgICAgICAobGFtYmRh IChwcmVmaXggJnJlc3QgYXJncy1wbGlzdCkKKyAgICAgICAgICAiQ3JlYXRlIGEgZmlsZSBhbmQg YnVmZmVyIHdpdGggZGVzaWduYXRlZCBwcm9wZXJ0aWVzLgorICAgICAgICBQUkVGSVggaXMgYSBz dHJpbmcgZ2l2aW5nIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5hbWUsIGFuZCBBUkdTLVBMSVNUCisg ICAgICAgIGlzIGEgc2VyaWVzIG9mIGtleXdvcmQtdmFsdWUgcGFpcnMsIHdpdGggYWxsb3dlZCBr ZXl3b3JkcworICAgICAgICA6c3VmZml4IFNUUklORywgOnNpemUgTlVNQkVSLCA6bW9kZSBNT0RF LUZVTkMsIDppbmNsdWRlLWNvbnRlbnQgU1RSSU5HLgorICAgICAgICBSZXR1cm5zIHRoZSBjcmVh dGVkIGJ1ZmZlci4iCisgICAgICAgICAgKGxldCogKChzdWZmaXggIChwbGlzdC1nZXQgYXJncy1w bGlzdCA6c3VmZml4KSkKKyAgICAgICAgICAgICAgICAgKHNpemUgICAgKHBsaXN0LWdldCBhcmdz LXBsaXN0IDpzaXplKSkKKyAgICAgICAgICAgICAgICAgKGluY2x1ZGUgKHBsaXN0LWdldCBhcmdz LXBsaXN0IDppbmNsdWRlLWNvbnRlbnQpKQorICAgICAgICAgICAgICAgICAobW9kZSAgICAocGxp c3QtZ2V0IGFyZ3MtcGxpc3QgOm1vZGUpKQorICAgICAgICAgICAgICAgICAoZmlsZSAgICAobWFr ZS10ZW1wLWZpbGUgcHJlZml4IG5pbCBzdWZmaXgpKQorICAgICAgICAgICAgICAgICAoYnVmICAg ICAoZmluZC1maWxlLW5vc2VsZWN0IGZpbGUgdCkpKQorICAgICAgICAgICAgKHB1c2ggYnVmIHRl c3QtYnVmZmVyLWxpc3QpIDsgcmVjb3JkIGZvciBjbGVhbnVwCisgICAgICAgICAgICAoZnVuY2Fs bCBzZXQtYnVmZmVyLW1vZGUgYnVmIG1vZGUpCisgICAgICAgICAgICAoZnVuY2FsbCBzZXQtYnVm ZmVyLWNvbnRlbnRzIGJ1ZiBzaXplIGluY2x1ZGUpCisgICAgICAgICAgICBidWYpKSkKKyAgICAg ICAoY3JlYXRlLW5vbi1maWxlLWJ1ZmZlcgorICAgICAgICAobGFtYmRhIChwcmVmaXggJnJlc3Qg YXJncy1wbGlzdCkKKyAgICAgICAgICAiQ3JlYXRlIGEgbm9uLWZpbGUgYW5kIGJ1ZmZlciB3aXRo IGRlc2lnbmF0ZWQgcHJvcGVydGllcy4KKyAgICAgICAgUFJFRklYIGlzIGEgc3RyaW5nIGdpdmlu ZyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuYW1lLCBhbmQgQVJHUy1QTElTVAorICAgICAgICBpcyBh IHNlcmllcyBvZiBrZXl3b3JkLXZhbHVlIHBhaXJzLCB3aXRoIGFsbG93ZWQga2V5d29yZHMKKyAg ICAgICAgOnNpemUgTlVNQkVSLCA6bW9kZSBNT0RFLUZVTkMsIDppbmNsdWRlLWNvbnRlbnQgU1RS SU5HLgorICAgICAgICBSZXR1cm5zIHRoZSBjcmVhdGVkIGJ1ZmZlci4iCisgICAgICAgICAgKGxl dCogKChzaXplICAgIChwbGlzdC1nZXQgYXJncy1wbGlzdCA6c2l6ZSkpCisgICAgICAgICAgICAg ICAgIChpbmNsdWRlIChwbGlzdC1nZXQgYXJncy1wbGlzdCA6aW5jbHVkZS1jb250ZW50KSkKKyAg ICAgICAgICAgICAgICAgKG1vZGUgICAgKHBsaXN0LWdldCBhcmdzLXBsaXN0IDptb2RlKSkKKyAg ICAgICAgICAgICAgICAgKGJ1ZiAgICAgKGdlbmVyYXRlLW5ldy1idWZmZXIgcHJlZml4KSkpCisg ICAgICAgICAgICAocHVzaCBidWYgdGVzdC1idWZmZXItbGlzdCkgOyByZWNvcmQgZm9yIGNsZWFu dXAKKyAgICAgICAgICAgIChmdW5jYWxsIHNldC1idWZmZXItbW9kZSBidWYgbW9kZSkKKyAgICAg ICAgICAgIChmdW5jYWxsIHNldC1idWZmZXItY29udGVudHMgYnVmIHNpemUgaW5jbHVkZSkKKyAg ICAgICAgICAgIGJ1ZikpKQorICAgICAgIChjbGVhbi11cAorICAgICAgICAobGFtYmRhICgpCisg ICAgICAgICAgIlJlc3RvcmUgYWxsIGVtYWNzIHN0YXRlIG1vZGlmaWVkIGR1cmluZyB0aGUgdGVz dHMiCisgICAgICAgICAgKHdoaWxlIHRlc3QtYnVmZmVyLWxpc3QgICAgICAgOyBjcmVhdGVkIHRl bXBvcmFyeSBidWZmZXJzCisgICAgICAgICAgICAobGV0ICgoYnVmIChwb3AgdGVzdC1idWZmZXIt bGlzdCkpKQorICAgICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWYgKGJ1cnktYnVm ZmVyKSkgOyBlbnN1cmUgbm90IHNlbGVjdGVkCisgICAgICAgICAgICAgIChraWxsLWJ1ZmZlciBi dWYpKSkpKSkKKyAgOzsgVGVzdHMKKyAgKGVydC1kZWZ0ZXN0IGlidWZmZXItZmlsdGVyLWluY2x1 c2lvbi0xICgpCisgICAgIlRlc3RzIGluY2x1c2lvbiB1c2luZyBiYXNpYyBmaWx0ZXIgY29tYmlu YXRvcnMgd2l0aCBhIHNpbmdsZSBidWZmZXIuIgorICAgIChza2lwLXVubGVzcyAoZmVhdHVyZXAg J2lidWYtZXh0KSkKKyAgICAodW53aW5kLXByb3RlY3QKKyAgICAgICAgKGxldCAoKGJ1ZgorICAg ICAgICAgICAgICAgKGZ1bmNhbGwgY3JlYXRlLWZpbGUtYnVmZmVyICJpYnVmLXRlc3QtMSIgOnNp emUgMTAwCisgICAgICAgICAgICAgICAgICAgICAgICA6aW5jbHVkZS1jb250ZW50ICJPbmUgcmlu ZyB0byBydWxlIHRoZW0gYWxsXG4iKSkpCisgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNs dWRlZC1pbi1maWx0ZXJzLXAgYnVmICcoKHNpemUtZ3QgLiA5OSkpKSkKKyAgICAgICAgICAoc2hv dWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcCBidWYgJygoc2l6ZS1sdCAuIDEwMSkp KSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAg ICAgICAgICAgICAgICAgIGJ1ZiAnKChtb2RlIC4gZnVuZGFtZW50YWwtbW9kZSkpKSkKKyAgICAg ICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAg ICAgICAgIGJ1ZiAnKChjb250ZW50IC4gInJpbmcgdG8gcnVsZSB0aGVtIGFsbCIpKSkpCisgICAg ICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAg ICAgICAgICBidWYgJygoYW5kIChjb250ZW50IC4gInJpbmcgdG8gcnVsZSB0aGVtIGFsbCIpKSkp KQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAg ICAgICAgICAgICAgICAgYnVmICcoKGFuZCAoYW5kIChjb250ZW50IC4gInJpbmcgdG8gcnVsZSB0 aGVtIGFsbCIpKSkpKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZp bHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZiAnKChhbmQgKGFuZCAoYW5kIChjb250ZW50 IC4gInJpbmcgdG8gcnVsZSB0aGVtIGFsbCIpKSkpKSkpCisgICAgICAgICAgKHNob3VsZCAoaWJ1 ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICBidWYgJygob3Ig KGNvbnRlbnQgLiAicmluZyB0byBydWxlIHRoZW0gYWxsIikpKSkpCisgICAgICAgICAgKHNob3Vs ZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICBidWYg Jygobm90IChub3QgKGNvbnRlbnQgLiAicmluZyB0byBydWxlIHRoZW0gYWxsIikpKSkpKQorICAg ICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAg ICAgICAgICAgYnVmICcoKGFuZCAoc2l6ZS1ndCAuIDk5KQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNvbnRlbnQgLiAicmluZyB0byBydWxlIHRoZW0gYWxsIikKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChtb2RlIC4gZnVuZGFtZW50YWwtbW9kZSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChiYXNlbmFtZSAuICJcXGBpYnVmLXRlc3QtMSIpKSkpKQorICAg ICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAg ICAgICAgICAgYnVmICcoKG5vdCAob3IgKG5vdCAoc2l6ZS1ndCAuIDk5KSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobm90IChjb250ZW50IC4gInJpbmcgdG8gcnVsZSB0aGVt IGFsbCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKG1vZGUgLiBm dW5kYW1lbnRhbC1tb2RlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90 IChiYXNlbmFtZSAuICJcXGBpYnVmLXRlc3QtMSIpKSkpKSkpCisgICAgICAgICAgKHNob3VsZCAo aWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICBidWYgJygo YW5kIChvciAoc2l6ZS1ndCAuIDk5KSAoc2l6ZS1sdCAuIDEwKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChhbmQgKGNvbnRlbnQgLiAicmluZy4qYWxsIikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGNvbnRlbnQgLiAicnVsZSIpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChjb250ZW50IC4gInRoZW0gYWxsIikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGNvbnRlbnQgLiAiT25lIikpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobm90IChtb2RlIC4gdGV4dC1tb2RlKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChiYXNlbmFtZSAuICJcXGBpYnVmLXRlc3QtMSIpKSkpKSkKKyAgICAgIChm dW5jYWxsIGNsZWFuLXVwKSkpCisKKyAgKGVydC1kZWZ0ZXN0IGlidWZmZXItZmlsdGVyLWluY2x1 c2lvbi0yICgpCisgICAgIlRlc3RzIGluY2x1c2lvbiBvZiBiYXNpYyBmaWx0ZXJzIGluIGNvbWJp bmF0aW9uIG9uIGEgc2luZ2xlIGJ1ZmZlci4iCisgICAgKHNraXAtdW5sZXNzIChmZWF0dXJlcCAn aWJ1Zi1leHQpKQorICAgICh1bndpbmQtcHJvdGVjdAorICAgICAgICAobGV0ICgoYnVmCisgICAg ICAgICAgICAgICAoZnVuY2FsbCBjcmVhdGUtZmlsZS1idWZmZXIgImlidWYtdGVzdC0yIiA6c2l6 ZSAyMDAKKyAgICAgICAgICAgICAgICAgICAgICAgIDptb2RlICMndGV4dC1tb2RlCisgICAgICAg ICAgICAgICAgICAgICAgICA6aW5jbHVkZS1jb250ZW50ICJhbmQgaW4gdGhlIGRhcmtuZXNzIGZp bmQgdGhlbVxuIikpKQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmls dGVycy1wIGJ1ZiAnKChzaXplLWd0IC4gMTk5KSkpKQorICAgICAgICAgIChzaG91bGQgKGlidWZm ZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wIGJ1ZiAnKChzaXplLWx0IC4gMjAxKSkpKQorICAgICAg ICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wIGJ1ZiAnKChub3Qgc2l6 ZS1ndCAuIDIwMCkpKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZp bHRlcnMtcCBidWYgJygobm90IChzaXplLWd0IC4gMjAwKSkpKSkKKyAgICAgICAgICAoc2hvdWxk IChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZiAn KChhbmQgKHNpemUtZ3QgLiAxOTkpIChzaXplLWx0IC4gMjAxKSkpKSkKKyAgICAgICAgICAoc2hv dWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1 ZiAnKChvciAoc2l6ZS1ndCAuIDE5OSkgKHNpemUtZ3QgLiAyMDEpKSkpKQorICAgICAgICAgIChz aG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAg YnVmICcoKG9yIChzaXplLWd0IC4gMjAxKSAoc2l6ZS1ndCAuIDE5OSkpKSkpCisgICAgICAgICAg KHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAg ICBidWYgJygoc2l6ZS1ndCAuIDE5OSkgKG1vZGUgLiB0ZXh0LW1vZGUpCisgICAgICAgICAgICAg ICAgICAgICAgICAgKGNvbnRlbnQgLiAiZGFya25lc3MgZmluZCB0aGVtIikpKSkKKyAgICAgICAg ICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAg ICAgIGJ1ZiAnKChhbmQgKHNpemUtZ3QgLiAxOTkpIChtb2RlIC4gdGV4dC1tb2RlKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnRlbnQgLiAiZGFya25lc3MgZmluZCB0aGVtIikp KSkpCisgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAg ICAgICAgICAgICAgICAgICBidWYgJygobm90IChvciAobm90IChzaXplLWd0IC4gMTk5KSkgKG5v dCAobW9kZSAuIHRleHQtbW9kZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KG5vdCAoY29udGVudCAuICJkYXJrbmVzcyBmaW5kIHRoZW0iKSkpKSkpKQorICAgICAgICAgIChz aG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAg YnVmICcoKG9yIChzaXplLWd0IC4gMjAwKSAoY29udGVudCAuICJkYXJrbmVzcyBmaW5kIHRoZW0i KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVyaXZlZC1tb2RlIC4gZW1hY3MtbGlz cC1tb2RlKSkpKSkKKyAgICAgICAgICAoc2hvdWxkLW5vdCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1m aWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICAgICAgYnVmICcoKG9yIChzaXplLWd0IC4gMjAw KSAoY29udGVudCAuICJydWxlIHRoZW0gYWxsIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChkZXJpdmVkLW1vZGUgLiBlbWFjcy1saXNwLW1vZGUpKSkpKSkKKyAgICAgIChmdW5j YWxsIGNsZWFuLXVwKSkpCisKKyAgKGVydC1kZWZ0ZXN0IGlidWZmZXItZmlsdGVyLWluY2x1c2lv bi0zICgpCisgICAgIlRlc3RzIGluY2x1c2lvbiB3aXRoIGZpbGVuYW1lIGZpbHRlcnMgb24gc3Bl Y2lmaWVkIGJ1ZmZlcnMuIgorICAgIChza2lwLXVubGVzcyAoZmVhdHVyZXAgJ2lidWYtZXh0KSkK KyAgICAodW53aW5kLXByb3RlY3QKKyAgICAgICAgKGxldCogKChidWZBCisgICAgICAgICAgICAg ICAgKGZ1bmNhbGwgY3JlYXRlLWZpbGUtYnVmZmVyICJpYnVmLXRlc3QtMy5hIiA6c2l6ZSA1MAor ICAgICAgICAgICAgICAgICAgICAgICAgIDptb2RlICMndGV4dC1tb2RlCisgICAgICAgICAgICAg ICAgICAgICAgICAgOmluY2x1ZGUtY29udGVudCAiLi4uYnV0IGEgbXVsdGl0dWRlIG9mIGRyb3Bz P1xuIikpCisgICAgICAgICAgICAgICAoYnVmQgorICAgICAgICAgICAgICAgIChmdW5jYWxsIGNy ZWF0ZS1ub24tZmlsZS1idWZmZXIgImlidWYtdGVzdC0zLmIiIDpzaXplIDUwCisgICAgICAgICAg ICAgICAgICAgICAgICAgOm1vZGUgIyd0ZXh0LW1vZGUKKyAgICAgICAgICAgICAgICAgICAgICAg ICA6aW5jbHVkZS1jb250ZW50ICIuLi5idXQgYSBtdWx0aXR1ZGUgb2YgZHJvcHM/XG4iKSkKKyAg ICAgICAgICAgICAgIChkaXJBICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZkEgZGVmYXVsdC1kaXJl Y3RvcnkpKQorICAgICAgICAgICAgICAgKGRpckIgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmQiBk ZWZhdWx0LWRpcmVjdG9yeSkpKQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQt aW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmQSAnKChiYXNlbmFtZSAuICJpYnVm LXRlc3QtMyIpKSkpCisgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0 ZXJzLXAKKyAgICAgICAgICAgICAgICAgICBidWZBICcoKGJhc2VuYW1lIC4gInRlc3QtM1xcLmEi KSkpKQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisg ICAgICAgICAgICAgICAgICAgYnVmQSAnKChmaWxlLWV4dGVuc2lvbiAuICJhIikpKSkKKyAgICAg ICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAg ICAgICAgIGJ1ZkEgKGxpc3QgKGNvbnMgJ2RpcmVjdG9yeSBkaXJBKSkpKQorICAgICAgICAgIChz aG91bGQtbm90IChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAg ICAgICAgICBidWZCICcoKGJhc2VuYW1lIC4gImlidWYtdGVzdC0zIikpKSkKKyAgICAgICAgICAo c2hvdWxkLW5vdCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAg ICAgICAgICAgYnVmQiAnKChmaWxlLWV4dGVuc2lvbiAuICJiIikpKSkKKyAgICAgICAgICAoc2hv dWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1 ZkIgKGxpc3QgKGNvbnMgJ2RpcmVjdG9yeSBkaXJCKSkpKQorICAgICAgICAgIChzaG91bGQgKGli dWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmQSAnKChu YW1lIC4gImlidWYtdGVzdC0zIikpKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1 ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZkIgJygobmFtZSAuICJpYnVm LXRlc3QtMyIpKSkpKQorICAgICAgKGZ1bmNhbGwgY2xlYW4tdXApKSkKKworICAoZXJ0LWRlZnRl c3QgaWJ1ZmZlci1maWx0ZXItaW5jbHVzaW9uLTQgKCkKKyAgICAiVGVzdHMgaW5jbHVzaW9uIHdp dGggdmFyaW91cyBmaWx0ZXJzIG9uIGEgc2luZ2xlIGJ1ZmZlci4iCisgICAgKHNraXAtdW5sZXNz IChmZWF0dXJlcCAnaWJ1Zi1leHQpKQorICAgICh1bndpbmQtcHJvdGVjdAorICAgICAgICAobGV0 ICgoYnVmCisgICAgICAgICAgICAgICAoZnVuY2FsbCBjcmVhdGUtZmlsZS1idWZmZXIgImlidWYt dGVzdC00IgorICAgICAgICAgICAgICAgICAgICAgICAgOm1vZGUgIydlbWFjcy1saXNwLW1vZGUg OnN1ZmZpeCAiLmVsIgorICAgICAgICAgICAgICAgICAgICAgICAgOmluY2x1ZGUtY29udGVudCAi KG1lc3NhZ2UgXCItLSVzLS1cIiAnZW1hY3Mtcm9ja3MpXG4iKSkpCisgICAgICAgICAgKHNob3Vs ZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICBidWYg JygoZmlsZS1leHRlbnNpb24gLiAiZWwiKSkpKQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXIt aW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmICcoKGRlcml2ZWQt bW9kZSAuIHByb2ctbW9kZSkpKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVk LWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZiAnKCh1c2VkLW1vZGUgLiBlbWFj cy1saXNwLW1vZGUpKSkpCisgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1m aWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICBidWYgJygobW9kZSAuIGVtYWNzLWxpc3AtbW9k ZSkpKSkKKyAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWYgKHNldC1idWZmZXItbW9k aWZpZWQtcCB0KSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRl cnMtcCBidWYgJygobW9kaWZpZWQpKSkpCisgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIg YnVmIChzZXQtYnVmZmVyLW1vZGlmaWVkLXAgbmlsKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVm ZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcCBidWYgJygobm90IG1vZGlmaWVkKSkpKQorICAgICAg ICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAg ICAgICAgYnVmICcoKGFuZCAoZmlsZS1leHRlbnNpb24gLiAiZWwiKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGRlcml2ZWQtbW9kZSAuIHByb2ctbW9kZSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChub3QgbW9kaWZpZWQpKSkpKQorICAgICAgICAgIChzaG91bGQgKGli dWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmICcoKG9y IChmaWxlLWV4dGVuc2lvbiAuICJ0ZXgiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo ZGVyaXZlZC1tb2RlIC4gcHJvZy1tb2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bW9kaWZpZWQpKSkpKQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmls dGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmICcoKGZpbGUtZXh0ZW5zaW9uIC4gImVsIikK KyAgICAgICAgICAgICAgICAgICAgICAgICAoZGVyaXZlZC1tb2RlIC4gcHJvZy1tb2RlKQorICAg ICAgICAgICAgICAgICAgICAgICAgIChub3QgbW9kaWZpZWQpKSkpKQorICAgICAgKGZ1bmNhbGwg Y2xlYW4tdXApKSkKKworICAoZXJ0LWRlZnRlc3QgaWJ1ZmZlci1maWx0ZXItaW5jbHVzaW9uLTUg KCkKKyAgICAiVGVzdHMgaW5jbHVzaW9uIHdpdGggdmFyaW91cyBmaWx0ZXJzIG9uIGEgc2luZ2xl IGJ1ZmZlci4iCisgICAgKHNraXAtdW5sZXNzIChmZWF0dXJlcCAnaWJ1Zi1leHQpKQorICAgICh1 bndpbmQtcHJvdGVjdAorICAgICAgICAobGV0ICgoYnVmCisgICAgICAgICAgICAgICAoZnVuY2Fs bCBjcmVhdGUtbm9uLWZpbGUtYnVmZmVyICJpYnVmLXRlc3QtNS5lbCIKKyAgICAgICAgICAgICAg ICAgICAgICAgIDptb2RlICMnZW1hY3MtbGlzcC1tb2RlCisgICAgICAgICAgICAgICAgICAgICAg ICA6aW5jbHVkZS1jb250ZW50CisgICAgICAgICAgICAgICAgICAgICAgICAiKG1lc3NhZ2UgXCIt LSVzLS1cIiBcIkl0IHJlYWxseSBkb2VzIVwiKVxuIikpKQorICAgICAgICAgIChzaG91bGQtbm90 IChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgICAgICBi dWYgJygoZmlsZS1leHRlbnNpb24gLiAiZWwiKSkpKQorICAgICAgICAgIChzaG91bGQgKGlidWZm ZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmICcoKHNpemUt Z3QgLiAxOCkpKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRl cnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZiAnKChwcmVkaWNhdGUgLiAobGFtYmRhICgpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKD4gKC0gKHBvaW50LW1heCkg KHBvaW50LW1pbikpIDE4KSkpKSkpCisgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRl ZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICBidWYgJygoYW5kIChtb2RlIC4gZW1h Y3MtbGlzcC1tb2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIChzdGFycmVk LW5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNpemUtZ3QgLiAxOCkp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYW5kIChub3QgKHNpemUtZ3QgLiAxMDAp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29udGVudCAuICJbSWlddCAg KnJlYWxseSBkb2VzISIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciAo bmFtZSAuICJ0ZXN0LTUiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KG5vdCAoZmlsZW5hbWUgLiAidGVzdC01IikpKSkpKSkpKQorICAgICAgKGZ1bmNhbGwgY2xlYW4t dXApKSkKKworICAoZXJ0LWRlZnRlc3QgaWJ1ZmZlci1maWx0ZXItaW5jbHVzaW9uLTYgKCkKKyAg ICAiVGVzdHMgaW5jbHVzaW9uIHVzaW5nIHNhdmVkIGZpbHRlcnMgYW5kIERlTW9yZ2FuJ3MgbGF3 cy4iCisgICAgKHNraXAtdW5sZXNzIChmZWF0dXJlcCAnaWJ1Zi1leHQpKQorICAgICh1bndpbmQt cHJvdGVjdAorICAgICAgICAobGV0ICgoYnVmCisgICAgICAgICAgICAgICAoZnVuY2FsbCBjcmVh dGUtbm9uLWZpbGUtYnVmZmVyICIqaWJ1Zi10ZXN0LTYqIiA6c2l6ZSA2NQorICAgICAgICAgICAg ICAgICAgICAgICAgOm1vZGUgIyd0ZXh0LW1vZGUpKQorICAgICAgICAgICAgICAoYnVmMgorICAg ICAgICAgICAgICAgKGZ1bmNhbGwgY3JlYXRlLWZpbGUtYnVmZmVyICJpYnVmLXRlc3QtNmEiIDpz dWZmaXggIi5odG1sIgorICAgICAgICAgICAgICAgICAgICAgICAgOm1vZGUgIydodG1sLW1vZGUK KyAgICAgICAgICAgICAgICAgICAgICAgIDppbmNsdWRlLWNvbnRlbnQKKyAgICAgICAgICAgICAg ICAgICAgICAgICI8SFRNTD48Qk9EWT48SDE+SGVsbG8sIFdvcmxkITwvSDE+PC9CT0RZPjwvSFRN TD4iKSkpCisgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAg YnVmICcoKHN0YXJyZWQtbmFtZSkpKSkKKyAgICAgICAgICAoc2hvdWxkLW5vdCAoaWJ1ZmZlci1p bmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICAgICAgYnVmICcoKHNhdmVk IC4gInRleHQgZG9jdW1lbnQiKSkpKQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVk ZWQtaW4tZmlsdGVycy1wIGJ1ZjIgJygoc2F2ZWQgLiAid2ViIikpKSkKKyAgICAgICAgICAoc2hv dWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1 ZjIgJygobm90IChhbmQgKG5vdCAoZGVyaXZlZC1tb2RlIC4gc2dtbC1tb2RlKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKGRlcml2ZWQtbW9kZSAuIGNzcy1tb2Rl KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKG1vZGUgICAgICAg ICAuIGphdmFzY3JpcHQtbW9kZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAobm90IChtb2RlICAgICAgICAgLiBqczItbW9kZSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobm90IChtb2RlICAgICAgICAgLiBzY3NzLW1vZGUpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZGVyaXZlZC1tb2RlIC4gaGFtbC1tb2Rl KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKG1vZGUgICAgICAg ICAuIHNhc3MtbW9kZSkpKSkpKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVk LWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZiAnKChhbmQgKHN0YXJyZWQtbmFt ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciAoc2l6ZS1ndCAuIDUwKSAoZmls ZW5hbWUgLiAiZm9vIikpKSkpKQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQt aW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmICcoKG5vdCAob3IgKG5vdCBzdGFy cmVkLW5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCAoc2l6ZS1s dCAuIDUxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZmls ZW5hbWUgLiAiZm9vIikpKSkpKSkpKQorICAgICAgKGZ1bmNhbGwgY2xlYW4tdXApKSkKKworICAo ZXJ0LWRlZnRlc3QgaWJ1ZmZlci1maWx0ZXItaW5jbHVzaW9uLTcgKCkKKyAgICAiVGVzdHMgaW5j bHVzaW9uIHdpdGggdmFyaW91cyBmaWx0ZXJzIG9uIGEgc2luZ2xlIGJ1ZmZlci4iCisgICAgKHNr aXAtdW5sZXNzIChmZWF0dXJlcCAnaWJ1Zi1leHQpKQorICAgICh1bndpbmQtcHJvdGVjdAorICAg ICAgICAobGV0ICgoYnVmCisgICAgICAgICAgICAgICAoZnVuY2FsbCBjcmVhdGUtbm9uLWZpbGUt YnVmZmVyICJpYnVmLXRlc3QtNyIKKyAgICAgICAgICAgICAgICAgICAgICAgIDptb2RlICMnYXJ0 aXN0LW1vZGUpKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRl cnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZiAnKChub3QgKHN0YXJyZWQtbmFtZSkpKSkpCisg ICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAg ICAgICAgICAgICBidWYgJygobm90IHN0YXJyZWQtbmFtZSkpKSkKKyAgICAgICAgICAoc2hvdWxk IChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZiAn KChub3QgKG5vdCAobm90IHN0YXJyZWQtbmFtZSkpKSkpKQorICAgICAgICAgIChzaG91bGQgKGli dWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmICcoKG5v dCAobW9kaWZpZWQpKSkpKQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4t ZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmICcoKG5vdCBtb2RpZmllZCkpKSkKKyAg ICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAg ICAgICAgICAgIGJ1ZiAnKChub3QgKG5vdCAobm90IG1vZGlmaWVkKSkpKSkpKQorICAgICAgKGZ1 bmNhbGwgY2xlYW4tdXApKSkKKworICAoZXJ0LWRlZnRlc3QgaWJ1ZmZlci1maWx0ZXItaW5jbHVz aW9uLTggKCkKKyAgICAiVGVzdHMgaW5jbHVzaW9uIHdpdGggdmFyaW91cyBmaWx0ZXJzLiIKKyAg ICAoc2tpcC11bmxlc3MgKGZlYXR1cmVwICdpYnVmLWV4dCkpCisgICAgKHVud2luZC1wcm90ZWN0 CisgICAgICAgIChsZXQgKChidWZBCisgICAgICAgICAgICAgICAoZnVuY2FsbCBjcmVhdGUtbm9u LWZpbGUtYnVmZmVyICJpYnVmLXRlc3QtOGEiCisgICAgICAgICAgICAgICAgICAgICAgICA6bW9k ZSAjJ2FydGlzdC1tb2RlKSkKKyAgICAgICAgICAgICAgKGJ1ZkIgKGZ1bmNhbGwgY3JlYXRlLW5v bi1maWxlLWJ1ZmZlciAiKmlidWYtdGVzdC04YioiIDpzaXplIDMyKSkKKyAgICAgICAgICAgICAg KGJ1ZkMgKGZ1bmNhbGwgY3JlYXRlLWZpbGUtYnVmZmVyICJpYnVmLXRlc3Q4YyIgOnN1ZmZpeCAi KiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnNpemUgNjQpKQorICAgICAgICAgICAg ICAoYnVmRCAoZnVuY2FsbCBjcmVhdGUtZmlsZS1idWZmZXIgIippYnVmLXRlc3Q4ZCIgOnNpemUg MTI4KSkKKyAgICAgICAgICAgICAgKGJ1ZkUgKGZ1bmNhbGwgY3JlYXRlLWZpbGUtYnVmZmVyICIq aWJ1Zi10ZXN0OGUiIDpzdWZmaXggIio8Mj4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDpzaXplIDE2KSkKKyAgICAgICAgICAgICAgKGJ1ZkYgKGFuZCAoZnVuY2FsbCBjcmVhdGUtbm9u LWZpbGUtYnVmZmVyICIqaWJ1Zi10ZXN0OGYqIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAo ZnVuY2FsbCBjcmVhdGUtbm9uLWZpbGUtYnVmZmVyICIqaWJ1Zi10ZXN0OGYqIgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDpzaXplIDgpKSkpCisgICAgICAgICAgKHdpdGgtY3Vy cmVudC1idWZmZXIgYnVmQSAoc2V0LWJ1ZmZlci1tb2RpZmllZC1wIHQpKQorICAgICAgICAgIChz aG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAg YnVmQSAnKChhbmQgKG5vdCBzdGFycmVkLW5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG1vZGlmaWVkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lIC4g InRlc3QtOCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoc2l6ZS1ndCAu IDEwMCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGUgLiBwaWN0dXJlLW1v ZGUpKSkpKQorICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZkEgKHNldC1idWZmZXIt bW9kaWZpZWQtcCBuaWwpKQorICAgICAgICAgIChzaG91bGQtbm90IChpYnVmZmVyLWluY2x1ZGVk LWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgICAgICBidWZBICcoKG9yIChzdGFycmVk LW5hbWUpICh2aXNpdGluZy1maWxlKSAobW9kaWZpZWQpKSkpKQorICAgICAgICAgIChzaG91bGQg KGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmQiAn KChhbmQgKHN0YXJyZWQtbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmFt ZSAuICJ0ZXN0Lio4YiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNpemUtZ3Qg LiAzMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IHZpc2l0aW5nLWZpbGUp KSkpKQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisg ICAgICAgICAgICAgICAgICAgYnVmQyAnKChhbmQgKG5vdCAoc3RhcnJlZC1uYW1lKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodmlzaXRpbmctZmlsZSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAobmFtZSAuICI4Y1teKl0qXFwqIikKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoc2l6ZS1sdCAuIDY1KSkpKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVm ZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZkQgJygoYW5k IChub3QgKHN0YXJyZWQtbmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZp c2l0aW5nLWZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgLiAiXFxg XFwqLip0ZXN0OGQiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaXplLWx0IC4g MTI5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaXplLWd0IC4gMTI3KSkpKSkK KyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAg ICAgICAgICAgICAgIGJ1ZkUgJygoYW5kIChzdGFycmVkLW5hbWUpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHZpc2l0aW5nLWZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG5hbWUgLiAiOGUuKj9cXCo8W1s6ZGlnaXQ6XV0rPiIpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHNpemUtZ3QgLiAxMCkpKSkpCisgICAgICAgICAgKHNob3VsZCAoaWJ1 ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICBidWZGICcoKGFu ZCAoc3RhcnJlZC1uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKHZp c2l0aW5nLWZpbGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lIC4gIjhm XFwqPFtbOmRpZ2l0Ol1dPiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNpemUt bHQgLiAxMCkpKSkpKQorICAgICAgKGZ1bmNhbGwgY2xlYW4tdXApKSkpCisKKzs7IFRlc3QgRmls dGVyIENvbWJpbmF0aW9uIGFuZCBEZWNvbXBvc2l0aW9uCisobGV0KiAoaWJ1ZmZlci10by1raWxs ICAgICAgIDsgaWYgbm9uLW5pbCwga2lsbCB0aGlzIGJ1ZmZlciBhdCBjbGVhbnVwCisgICAgICAg KGlidWZmZXItYWxyZWFkeSAnY2hlY2spIDsgZXhpc3RpbmcgaWJ1ZmZlciBidWZmZXIgdG8gdXNl IGJ1dCBub3Qga2lsbAorICAgICAgIDs7IFV0aWxpdHkgZnVuY3Rpb25zIHdpdGhvdXQgcG9sbHV0 aW5nIHRoZSBlbnZpcm9ubWVudAorICAgICAgIChnZXQtdGVzdC1pYnVmZmVyCisgICAgICAgIChs YW1iZGEgKCkKKyAgICAgICAgICAiUmV0dXJucyBhIHRlc3QgaWJ1ZmZlci1tb2RlIGJ1ZmZlciwg Y3JlYXRpbmcgb25lIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgSWYgYSBuZXcgYnVmZmVyIGlzIGNy ZWF0ZWQsIGl0IGlzIG5hbWVkICBcIipUZXN0LUlidWZmZXIqXCIgYW5kIGlzCisgICAgICAgIHNh dmVkIHRvIGBpYnVmZmVyLXRvLWtpbGwnIGZvciBsYXRlciBjbGVhbnVwLiIKKyAgICAgICAgICAo d2hlbiAoZXEgaWJ1ZmZlci1hbHJlYWR5ICdjaGVjaykKKyAgICAgICAgICAgIChzZXRxIGlidWZm ZXItYWxyZWFkeQorICAgICAgICAgICAgICAgICAgKGNhdGNoICdmb3VuZC1idWYKKyAgICAgICAg ICAgICAgICAgICAgKGRvbGlzdCAoYnVmIChidWZmZXItbGlzdCkgbmlsKQorICAgICAgICAgICAg ICAgICAgICAgICh3aGVuICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGRlcml2ZWQtbW9kZS1wICdpYnVmZmVyLW1vZGUpKQorICAgICAgICAg ICAgICAgICAgICAgICAgKHRocm93ICdmb3VuZC1idWYgYnVmKSkpKSkpCisgICAgICAgICAgKG9y IGlidWZmZXItYWxyZWFkeQorICAgICAgICAgICAgICBpYnVmZmVyLXRvLWtpbGwKKyAgICAgICAg ICAgICAgKGxldCAoKHRlc3QtaWJ1Zi1uYW1lICIqVGVzdC1JYnVmZmVyKiIpKQorICAgICAgICAg ICAgICAgIChpYnVmZmVyIG5pbCB0ZXN0LWlidWYtbmFtZSBuaWwgdCkKKyAgICAgICAgICAgICAg ICAoc2V0cSBpYnVmZmVyLXRvLWtpbGwgKGdldC1idWZmZXIgdGVzdC1pYnVmLW5hbWUpKSkpKSkK KyAgICAgICAoY2xlYW4tdXAKKyAgICAgICAgKGxhbWJkYSAoKQorICAgICAgICAgICJSZXN0b3Jl IGFsbCBlbWFjcyBzdGF0ZSBtb2RpZmllZCBkdXJpbmcgdGhlIHRlc3RzIgorICAgICAgICAgICh3 aGVuIGlidWZmZXItdG8ta2lsbCAgICAgICAgIDsgY3JlYXRlZCBpYnVmZmVyCisgICAgICAgICAg ICAod2l0aC1jdXJyZW50LWJ1ZmZlciBpYnVmZmVyLXRvLWtpbGwKKyAgICAgICAgICAgICAgKHNl dC1idWZmZXItbW9kaWZpZWQtcCBuaWwpCisgICAgICAgICAgICAgIChidXJ5LWJ1ZmZlcikpCisg ICAgICAgICAgICAoa2lsbC1idWZmZXIgaWJ1ZmZlci10by1raWxsKQorICAgICAgICAgICAgKHNl dHEgaWJ1ZmZlci10by1raWxsIG5pbCkpCisgICAgICAgICAgKHdoZW4gKGFuZCBpYnVmZmVyLWFs cmVhZHkgKG5vdCAoZXEgaWJ1ZmZlci1hbHJlYWR5ICdjaGVjaykpKQorICAgICAgICAgICAgOzsg cmVzdG9yZSBleGlzdGluZyBpYnVmZmVyIHN0YXRlCisgICAgICAgICAgICAoaWJ1ZmZlci11cGRh dGUgbmlsIHQpKSkpKQorICA7OyBUZXN0cworICAoZXJ0LWRlZnRlc3QgaWJ1ZmZlci1kZWNvbXBv c2UtZmlsdGVyICgpCisgICAgIlRlc3RzIGBpYnVmZmVyLWRlY29tcG9zZS1maWx0ZXInIGZvciBh bmQsIG9yLCBub3QsIGFuZCBzYXZlZC4iCisgICAgKHNraXAtdW5sZXNzIChmZWF0dXJlcCAnaWJ1 Zi1leHQpKQorICAgICh1bndpbmQtcHJvdGVjdAorICAgICAgICAobGV0ICgoaWJ1ZiAoZnVuY2Fs bCBnZXQtdGVzdC1pYnVmZmVyKSkpCisgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgaWJ1 ZgorICAgICAgICAgICAgKGxldCAoKGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMgbmlsKQor ICAgICAgICAgICAgICAgICAgKGlidWZmZXItZmlsdGVyLWdyb3VwcyBuaWwpCisgICAgICAgICAg ICAgICAgICAoZmlsdGVycyAnKChzaXplLWd0IC4gMTAwKSAobm90IChzdGFycmVkLW5hbWUpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSAuICJmb28iKSkpKQorICAgICAgICAg ICAgICAocHJvZ24KKyAgICAgICAgICAgICAgICAocHVzaCAoY29ucyAnb3IgZmlsdGVycykgaWJ1 ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykKKyAgICAgICAgICAgICAgICAoaWJ1ZmZlci1kZWNv bXBvc2UtZmlsdGVyKQorICAgICAgICAgICAgICAgIChzaG91bGQgKGVxdWFsIGZpbHRlcnMgaWJ1 ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpCisgICAgICAgICAgICAgICAgKHNldHEgaWJ1ZmZl ci1maWx0ZXJpbmctcXVhbGlmaWVycyBuaWwpKQorICAgICAgICAgICAgICAocHJvZ24KKyAgICAg ICAgICAgICAgICAocHVzaCAoY29ucyAnYW5kIGZpbHRlcnMpIGlidWZmZXItZmlsdGVyaW5nLXF1 YWxpZmllcnMpCisgICAgICAgICAgICAgICAgKGlidWZmZXItZGVjb21wb3NlLWZpbHRlcikKKyAg ICAgICAgICAgICAgICAoc2hvdWxkIChlcXVhbCBmaWx0ZXJzIGlidWZmZXItZmlsdGVyaW5nLXF1 YWxpZmllcnMpKQorICAgICAgICAgICAgICAgIChzZXRxIGlidWZmZXItZmlsdGVyaW5nLXF1YWxp ZmllcnMgbmlsKSkKKyAgICAgICAgICAgICAgKHByb2duCisgICAgICAgICAgICAgICAgKHB1c2gg KGxpc3QgJ25vdCAoY2FyIGZpbHRlcnMpKSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKQor ICAgICAgICAgICAgICAgIChpYnVmZmVyLWRlY29tcG9zZS1maWx0ZXIpCisgICAgICAgICAgICAg ICAgKHNob3VsZCAoZXF1YWwgKGxpc3QgKGNhciBmaWx0ZXJzKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkKKyAgICAgICAgICAg ICAgICAoc2V0cSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzIG5pbCkpCisgICAgICAgICAg ICAgIChwcm9nbgorICAgICAgICAgICAgICAgIChwdXNoIChjb25zICdub3QgKGNhciBmaWx0ZXJz KSkgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykKKyAgICAgICAgICAgICAgICAoaWJ1ZmZl ci1kZWNvbXBvc2UtZmlsdGVyKQorICAgICAgICAgICAgICAgIChzaG91bGQgKGVxdWFsIChsaXN0 IChjYXIgZmlsdGVycykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJ1ZmZlci1m aWx0ZXJpbmctcXVhbGlmaWVycykpCisgICAgICAgICAgICAgICAgKHNldHEgaWJ1ZmZlci1maWx0 ZXJpbmctcXVhbGlmaWVycyBuaWwpKQorICAgICAgICAgICAgICAobGV0ICgoZ251cyAoYXNzb2Mg ImdudXMiIGlidWZmZXItc2F2ZWQtZmlsdGVycykpKQorICAgICAgICAgICAgICAgIChwdXNoICco c2F2ZWQgLiAiZ251cyIpIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpCisgICAgICAgICAg ICAgICAgKGlidWZmZXItZGVjb21wb3NlLWZpbHRlcikKKyAgICAgICAgICAgICAgICAoc2hvdWxk IChlcXVhbCAoY2RyIGdudXMpIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKQorICAgICAg ICAgICAgICAgIChpYnVmZmVyLWRlY29tcG9zZS1maWx0ZXIpCisgICAgICAgICAgICAgICAgKHNo b3VsZCAoZXF1YWwgKGNkciAoY2FkciBnbnVzKSkgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVy cykpCisgICAgICAgICAgICAgICAgKHNldHEgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycyBu aWwpKQorICAgICAgICAgICAgICAod2hlbiAobm90IChhc3NvYyAiX191bmtub3duX18iIGlidWZm ZXItc2F2ZWQtZmlsdGVycykpCisgICAgICAgICAgICAgICAgKHB1c2ggJyhzYXZlZCAuICJfX3Vr bm93bl9fIikgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykKKyAgICAgICAgICAgICAgICAo c2hvdWxkLWVycm9yIChpYnVmZmVyLWRlY29tcG9zZS1maWx0ZXIpIDp0eXBlICdlcnJvcikKKyAg ICAgICAgICAgICAgICAoc2V0cSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzIG5pbCkpCisg ICAgICAgICAgICAgIChwcm9nbgorICAgICAgICAgICAgICAgIChwdXNoIChjYXIgZmlsdGVycykg aWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykKKyAgICAgICAgICAgICAgICAoc2hvdWxkLWVy cm9yIChpYnVmZmVyLWRlY29tcG9zZS1maWx0ZXIpIDp0eXBlICdlcnJvcikKKyAgICAgICAgICAg ICAgICAoc2V0cSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzIG5pbCkpKSkpCisgICAgICAo ZnVuY2FsbCBjbGVhbi11cCkpKQorCisgIChlcnQtZGVmdGVzdCBpYnVmZmVyLWFuZC1maWx0ZXIg KCkKKyAgICAiVGVzdHMgYGlidWZmZXItYW5kLWZpbHRlcicgaW4gYW4gSWJ1ZmZlciBidWZmZXIu IgorICAgIChza2lwLXVubGVzcyAoZmVhdHVyZXAgJ2lidWYtZXh0KSkKKyAgICAodW53aW5kLXBy b3RlY3QKKyAgICAgICAgKGxldCAoKGlidWYgKGZ1bmNhbGwgZ2V0LXRlc3QtaWJ1ZmZlcikpKQor ICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGlidWYKKyAgICAgICAgICAgIChsZXQgKChp YnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzIG5pbCkKKyAgICAgICAgICAgICAgICAgIChpYnVm ZmVyLWZpbHRlci1ncm91cHMgbmlsKQorICAgICAgICAgICAgICAgICAgKGZpbHRlcnMgWyhzaXpl LWd0IC4gMTAwKSAobm90IChzdGFycmVkLW5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChmaWxlbmFtZSAuICJBIikgKG1vZGUgLiB0ZXh0LW1vZGUpXSkpCisgICAgICAgICAgICAg IChzaG91bGQtZXJyb3IgKGlidWZmZXItYW5kLWZpbHRlcikgOnR5cGUgJ2Vycm9yKQorICAgICAg ICAgICAgICAocHJvZ24KKyAgICAgICAgICAgICAgICAocHVzaCAoYXJlZiBmaWx0ZXJzIDEpIGli dWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpCisgICAgICAgICAgICAgICAgKHNob3VsZC1lcnJv ciAoaWJ1ZmZlci1hbmQtZmlsdGVyKSA6dHlwZSAnZXJyb3IpKQorICAgICAgICAgICAgICAoc2hv dWxkIChwcm9nbgorICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggKGFyZWYgZmlsdGVycyAw KSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKQorICAgICAgICAgICAgICAgICAgICAgICAg KGlidWZmZXItYW5kLWZpbHRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgKGVxdWFs IChsaXN0ICdhbmQgKGFyZWYgZmlsdGVycyAwKSAoYXJlZiBmaWx0ZXJzIDEpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhciBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZp ZXJzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG51bGwgKGNkciBpYnVmZmVyLWZp bHRlcmluZy1xdWFsaWZpZXJzKSkpKSkKKyAgICAgICAgICAgICAgKHNob3VsZCAocHJvZ24KKyAg ICAgICAgICAgICAgICAgICAgICAgIChpYnVmZmVyLWFuZC1maWx0ZXIgJ2RlY29tcG9zZSkKKyAg ICAgICAgICAgICAgICAgICAgICAgIChhbmQgKGVxdWFsIChhcmVmIGZpbHRlcnMgMCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb3AgaWJ1ZmZlci1maWx0ZXJpbmctcXVh bGlmaWVycykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcXVhbCAoYXJlZiBmaWx0 ZXJzIDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9wIGlidWZmZXIt ZmlsdGVyaW5nLXF1YWxpZmllcnMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnVs bCBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkpKQorICAgICAgICAgICAgICAoc2hvdWxk IChwcm9nbgorICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggKGxpc3QgJ2FuZCAoYXJlZiBm aWx0ZXJzIDIpIChhcmVmIGZpbHRlcnMgMykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKQorICAgICAgICAgICAgICAgICAgICAgICAg KHB1c2ggKGxpc3QgJ2FuZCAoYXJlZiBmaWx0ZXJzIDApIChhcmVmIGZpbHRlcnMgMSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKQor ICAgICAgICAgICAgICAgICAgICAgICAgKGlidWZmZXItYW5kLWZpbHRlcikKKyAgICAgICAgICAg ICAgICAgICAgICAgIChhbmQgKGVxdWFsIChsaXN0ICdhbmQgKGFyZWYgZmlsdGVycyAwKSAoYXJl ZiBmaWx0ZXJzIDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo YXJlZiBmaWx0ZXJzIDIpIChhcmVmIGZpbHRlcnMgMykpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoY2FyIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobnVsbCAoY2RyIGlidWZmZXItZmlsdGVyaW5nLXF1YWxp ZmllcnMpKSkpKQorICAgICAgICAgICAgICAocG9wIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmll cnMpCisgICAgICAgICAgICAgIChzaG91bGQgKHByb2duCisgICAgICAgICAgICAgICAgICAgICAg ICAocHVzaCAobGlzdCAnb3IgKGFyZWYgZmlsdGVycyAyKSAoYXJlZiBmaWx0ZXJzIDMpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykK KyAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIChsaXN0ICdhbmQgKGFyZWYgZmlsdGVycyAw KSAoYXJlZiBmaWx0ZXJzIDEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJ1ZmZl ci1maWx0ZXJpbmctcXVhbGlmaWVycykKKyAgICAgICAgICAgICAgICAgICAgICAgIChpYnVmZmVy LWFuZC1maWx0ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAoYW5kIChlcXVhbCAobGlzdCAn YW5kIChhcmVmIGZpbHRlcnMgMCkgKGFyZWYgZmlsdGVycyAxKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgJ29yIChhcmVmIGZpbHRlcnMgMikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcmVmIGZpbHRlcnMg MykpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhciBpYnVmZmVyLWZp bHRlcmluZy1xdWFsaWZpZXJzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG51bGwg KGNkciBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkpKSkKKyAgICAgICAgICAgICAgKHBv cCBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKQorICAgICAgICAgICAgICAoc2hvdWxkIChw cm9nbgorICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggKGxpc3QgJ2FuZCAoYXJlZiBmaWx0 ZXJzIDIpIChhcmVmIGZpbHRlcnMgMykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp YnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKQorICAgICAgICAgICAgICAgICAgICAgICAgKHB1 c2ggKGxpc3QgJ29yIChhcmVmIGZpbHRlcnMgMCkgKGFyZWYgZmlsdGVycyAxKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpCisgICAg ICAgICAgICAgICAgICAgICAgICAoaWJ1ZmZlci1hbmQtZmlsdGVyKQorICAgICAgICAgICAgICAg ICAgICAgICAgKGFuZCAoZXF1YWwgKGxpc3QgJ2FuZCAobGlzdCAnb3IgKGFyZWYgZmlsdGVycyAw KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChh cmVmIGZpbHRlcnMgMSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoYXJlZiBmaWx0ZXJzIDIpIChhcmVmIGZpbHRlcnMgMykpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoY2FyIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobnVsbCAoY2RyIGlidWZmZXItZmlsdGVyaW5nLXF1 YWxpZmllcnMpKSkpKQorICAgICAgICAgICAgICAocG9wIGlidWZmZXItZmlsdGVyaW5nLXF1YWxp ZmllcnMpCisgICAgICAgICAgICAgIChzaG91bGQgKHByb2duCisgICAgICAgICAgICAgICAgICAg ICAgICAocHVzaCAobGlzdCAnb3IgKGFyZWYgZmlsdGVycyAyKSAoYXJlZiBmaWx0ZXJzIDMpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVy cykKKyAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIChsaXN0ICdvciAoYXJlZiBmaWx0ZXJz IDApIChhcmVmIGZpbHRlcnMgMSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVm ZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKQorICAgICAgICAgICAgICAgICAgICAgICAgKGlidWZm ZXItYW5kLWZpbHRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgKGVxdWFsIChsaXN0 ICdhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0ICdv ciAoYXJlZiBmaWx0ZXJzIDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoYXJlZiBmaWx0ZXJzIDEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGxpc3QgJ29yIChhcmVmIGZpbHRlcnMgMikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcmVmIGZpbHRlcnMgMykpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhciBpYnVmZmVyLWZpbHRlcmluZy1x dWFsaWZpZXJzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG51bGwgKGNkciBpYnVm ZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkpKSkpKSkKKyAgICAgIChmdW5jYWxsIGNsZWFuLXVw KSkpCisKKyAgKGVydC1kZWZ0ZXN0IGlidWZmZXItb3ItZmlsdGVyICgpCisgICAgIlRlc3RzIGBp YnVmZmVyLW9yLWZpbHRlcicgaW4gYW4gSWJ1ZmZlciBidWZmZXIuIgorICAgIChza2lwLXVubGVz cyAoZmVhdHVyZXAgJ2lidWYtZXh0KSkKKyAgICAodW53aW5kLXByb3RlY3QKKyAgICAgICAgKGxl dCAoKGlidWYgKGZ1bmNhbGwgZ2V0LXRlc3QtaWJ1ZmZlcikpKQorICAgICAgICAgICh3aXRoLWN1 cnJlbnQtYnVmZmVyIGlidWYKKyAgICAgICAgICAgIChsZXQgKChpYnVmZmVyLWZpbHRlcmluZy1x dWFsaWZpZXJzIG5pbCkKKyAgICAgICAgICAgICAgICAgIChpYnVmZmVyLWZpbHRlci1ncm91cHMg bmlsKQorICAgICAgICAgICAgICAgICAgKGZpbHRlcnMgWyhzaXplLWd0IC4gMTAwKSAobm90IChz dGFycmVkLW5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlbmFtZSAuICJB IikgKG1vZGUgLiB0ZXh0LW1vZGUpXSkpCisgICAgICAgICAgICAgIChzaG91bGQtZXJyb3IgKGli dWZmZXItb3ItZmlsdGVyKSA6dHlwZSAnZXJyb3IpCisgICAgICAgICAgICAgIChwcm9nbgorICAg ICAgICAgICAgICAgIChwdXNoIChhcmVmIGZpbHRlcnMgMSkgaWJ1ZmZlci1maWx0ZXJpbmctcXVh bGlmaWVycykKKyAgICAgICAgICAgICAgICAoc2hvdWxkLWVycm9yIChpYnVmZmVyLW9yLWZpbHRl cikgOnR5cGUgJ2Vycm9yKSkKKyAgICAgICAgICAgICAgKHNob3VsZCAocHJvZ24KKyAgICAgICAg ICAgICAgICAgICAgICAgIChwdXNoIChhcmVmIGZpbHRlcnMgMCkgaWJ1ZmZlci1maWx0ZXJpbmct cXVhbGlmaWVycykKKyAgICAgICAgICAgICAgICAgICAgICAgIChpYnVmZmVyLW9yLWZpbHRlcikK KyAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgKGVxdWFsIChsaXN0ICdvciAoYXJlZiBmaWx0 ZXJzIDApIChhcmVmIGZpbHRlcnMgMSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoY2FyIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobnVsbCAoY2RyIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKSkp KQorICAgICAgICAgICAgICAoc2hvdWxkIChwcm9nbgorICAgICAgICAgICAgICAgICAgICAgICAg KGlidWZmZXItb3ItZmlsdGVyICdkZWNvbXBvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICAo YW5kIChlcXVhbCAoYXJlZiBmaWx0ZXJzIDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAocG9wIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZXF1YWwgKGFyZWYgZmlsdGVycyAxKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHBvcCBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG51bGwgaWJ1ZmZlci1maWx0ZXJpbmctcXVh bGlmaWVycykpKSkKKyAgICAgICAgICAgICAgKHNob3VsZCAocHJvZ24KKyAgICAgICAgICAgICAg ICAgICAgICAgIChwdXNoIChsaXN0ICdvciAoYXJlZiBmaWx0ZXJzIDIpIChhcmVmIGZpbHRlcnMg MykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVmZmVyLWZpbHRlcmluZy1xdWFs aWZpZXJzKQorICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggKGxpc3QgJ29yIChhcmVmIGZp bHRlcnMgMCkgKGFyZWYgZmlsdGVycyAxKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpCisgICAgICAgICAgICAgICAgICAgICAgICAo aWJ1ZmZlci1vci1maWx0ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAoYW5kIChlcXVhbCAo bGlzdCAnb3IgKGFyZWYgZmlsdGVycyAwKSAoYXJlZiBmaWx0ZXJzIDEpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJlZiBmaWx0ZXJzIDIpIChhcmVmIGZpbHRl cnMgMykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FyIGlidWZmZXIt ZmlsdGVyaW5nLXF1YWxpZmllcnMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnVs bCAoY2RyIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKSkpKQorICAgICAgICAgICAgICAo cG9wIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpCisgICAgICAgICAgICAgIChzaG91bGQg KHByb2duCisgICAgICAgICAgICAgICAgICAgICAgICAocHVzaCAobGlzdCAnYW5kIChhcmVmIGZp bHRlcnMgMikgKGFyZWYgZmlsdGVycyAzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpCisgICAgICAgICAgICAgICAgICAgICAgICAo cHVzaCAobGlzdCAnb3IgKGFyZWYgZmlsdGVycyAwKSAoYXJlZiBmaWx0ZXJzIDEpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykKKyAg ICAgICAgICAgICAgICAgICAgICAgIChpYnVmZmVyLW9yLWZpbHRlcikKKyAgICAgICAgICAgICAg ICAgICAgICAgIChhbmQgKGVxdWFsIChsaXN0ICdvciAoYXJlZiBmaWx0ZXJzIDApIChhcmVmIGZp bHRlcnMgMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0 ICdhbmQgKGFyZWYgZmlsdGVycyAyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGFyZWYgZmlsdGVycyAzKSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoY2FyIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobnVsbCAoY2RyIGlidWZmZXItZmlsdGVyaW5nLXF1YWxp ZmllcnMpKSkpKQorICAgICAgICAgICAgICAocG9wIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmll cnMpCisgICAgICAgICAgICAgIChzaG91bGQgKHByb2duCisgICAgICAgICAgICAgICAgICAgICAg ICAocHVzaCAobGlzdCAnb3IgKGFyZWYgZmlsdGVycyAyKSAoYXJlZiBmaWx0ZXJzIDMpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykK KyAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIChsaXN0ICdhbmQgKGFyZWYgZmlsdGVycyAw KSAoYXJlZiBmaWx0ZXJzIDEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJ1ZmZl ci1maWx0ZXJpbmctcXVhbGlmaWVycykKKyAgICAgICAgICAgICAgICAgICAgICAgIChpYnVmZmVy LW9yLWZpbHRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgKGVxdWFsIChsaXN0ICdv ciAobGlzdCAnYW5kIChhcmVmIGZpbHRlcnMgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJlZiBmaWx0ZXJzIDEpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFyZWYgZmlsdGVycyAyKSAoYXJlZiBmaWx0 ZXJzIDMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhciBpYnVmZmVy LWZpbHRlcmluZy1xdWFsaWZpZXJzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG51 bGwgKGNkciBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkpKSkKKyAgICAgICAgICAgICAg KHBvcCBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKQorICAgICAgICAgICAgICAoc2hvdWxk IChwcm9nbgorICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggKGxpc3QgJ2FuZCAoYXJlZiBm aWx0ZXJzIDIpIChhcmVmIGZpbHRlcnMgMykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKQorICAgICAgICAgICAgICAgICAgICAgICAg KHB1c2ggKGxpc3QgJ2FuZCAoYXJlZiBmaWx0ZXJzIDApIChhcmVmIGZpbHRlcnMgMSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKQor ICAgICAgICAgICAgICAgICAgICAgICAgKGlidWZmZXItb3ItZmlsdGVyKQorICAgICAgICAgICAg ICAgICAgICAgICAgKGFuZCAoZXF1YWwgKGxpc3QgJ29yCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobGlzdCAnYW5kIChhcmVmIGZpbHRlcnMgMCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcmVmIGZpbHRlcnMgMSkp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdCAnYW5kIChh cmVmIGZpbHRlcnMgMikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChhcmVmIGZpbHRlcnMgMykpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGNhciBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKG51bGwgKGNkciBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkp KSkpKSkKKyAgICAgIChmdW5jYWxsIGNsZWFuLXVwKSkpKQorCisoZXJ0LWRlZnRlc3QgaWJ1ZmZl ci1mb3JtYXQtcXVhbGlmaWVyICgpCisgICJUZXN0cyBzdHJpbmcgcmVjb21tZW5kYXRpb24gb2Yg ZmlsdGVyIGZyb20gYGlidWZmZXItZm9ybWF0LXF1YWxpZmllcicuIgorICAoc2tpcC11bmxlc3Mg KGZlYXR1cmVwICdpYnVmLWV4dCkpCisgIChsZXQgKCh0ZXN0MSAnKG1vZGUgLiBvcmctbW9kZSkp CisgICAgICAgICh0ZXN0MiAnKHNpemUtbHQgLiAxMDApKQorICAgICAgICAodGVzdDMgJyhkZXJp dmVkLW1vZGUgLiBwcm9nLW1vZGUpKQorICAgICAgICAodGVzdDQgJyhvciAoc2l6ZS1ndCAuIDEw MDAwKQorICAgICAgICAgICAgICAgICAgICAoYW5kIChub3QgKHN0YXJyZWQtbmFtZSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgKGRpcmVjdG9yeSAuICJcXDxvcmdcXD4iKSkpKQorICAgICAg ICAodGVzdDUgJyhvciAoZmlsZW5hbWUgLiAic2NyYXRjaCIpCisgICAgICAgICAgICAgICAgICAg IChmaWxlbmFtZSAuICJib256IikKKyAgICAgICAgICAgICAgICAgICAgKGZpbGVuYW1lIC4gInRl bXAiKSkpCisgICAgICAgICh0ZXN0NiAnKG9yIChtb2RlIC4gZW1hY3MtbGlzcC1tb2RlKSAoZmls ZS1leHRlbnNpb24gLiAiZWxjPyIpCisgICAgICAgICAgICAgICAgICAgIChhbmQgKHN0YXJyZWQt bmFtZSkgKG5hbWUgLiAiZWxpc3AiKSkKKyAgICAgICAgICAgICAgICAgICAgKG1vZGUgLiBsaXNw LWludGVyYWN0aW9uLW1vZGUpKSkKKyAgICAgICAgKGRlc2NyaXB0aW9uIChsYW1iZGEgKHEpCisg ICAgICAgICAgICAgICAgICAgICAgIChjYWRyIChhc3NxIHEgaWJ1ZmZlci1maWx0ZXJpbmctYWxp c3QpKSkpCisgICAgICAgICh0YWcgKGxhbWJkYSAoJnJlc3QgYXJncyApCisgICAgICAgICAgICAg ICAoY29uY2F0ICIgWyIgKGFwcGx5ICMnY29uY2F0IGFyZ3MpICJdIikpKSkKKyAgICAoc2hvdWxk IChlcXVhbCAoaWJ1ZmZlci1mb3JtYXQtcXVhbGlmaWVyIHRlc3QxKQorICAgICAgICAgICAgICAg ICAgIChmdW5jYWxsIHRhZyAoZnVuY2FsbCBkZXNjcmlwdGlvbiAnbW9kZSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiOiAiICJvcmctbW9kZSIpKSkKKyAgICAoc2hvdWxkIChlcXVhbCAo aWJ1ZmZlci1mb3JtYXQtcXVhbGlmaWVyIHRlc3QyKQorICAgICAgICAgICAgICAgICAgIChmdW5j YWxsIHRhZyAoZnVuY2FsbCBkZXNjcmlwdGlvbiAnc2l6ZS1sdCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiOiAiICIxMDAiKSkpCisgICAgKHNob3VsZCAoZXF1YWwgKGlidWZmZXItZm9y bWF0LXF1YWxpZmllciB0ZXN0MykKKyAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCB0YWcgKGZ1 bmNhbGwgZGVzY3JpcHRpb24gJ2Rlcml2ZWQtbW9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiOiAiICJwcm9nLW1vZGUiKSkpCisgICAgKHNob3VsZCAoZXF1YWwgKGlidWZmZXItZm9y bWF0LXF1YWxpZmllciB0ZXN0NCkKKyAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCB0YWcgIk9S IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIHRhZyAoZnVuY2FsbCBkZXNj cmlwdGlvbiAnc2l6ZS1ndCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi OiAiIChmb3JtYXQgIiVzIiAxMDAwMCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1 bmNhbGwgdGFnICJBTkQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1 bmNhbGwgdGFnICJOT1QiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGZ1bmNhbGwgdGFnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgZGVzY3JpcHRpb24KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3RhcnJlZC1u YW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICI6ICIgIm5pbCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChm dW5jYWxsIHRhZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChmdW5jYWxsIGRlc2NyaXB0aW9uICdkaXJlY3RvcnkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIjogIiAiXFw8b3JnXFw+IikpKSkpCisgICAgKHNob3Vs ZCAoZXF1YWwgKGlidWZmZXItZm9ybWF0LXF1YWxpZmllciB0ZXN0NSkKKyAgICAgICAgICAgICAg ICAgICAoZnVuY2FsbCB0YWcgIk9SIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5j YWxsIHRhZyAoZnVuY2FsbCBkZXNjcmlwdGlvbiAnZmlsZW5hbWUpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIjogIiAgInNjcmF0Y2giKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChmdW5jYWxsIHRhZyAoZnVuY2FsbCBkZXNjcmlwdGlvbiAnZmlsZW5hbWUpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogIiAiYm9ueiIpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgdGFnIChmdW5jYWxsIGRlc2NyaXB0aW9uICdm aWxlbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiAiICJ0ZW1w IikpKSkKKyAgICAoc2hvdWxkIChlcXVhbCAoaWJ1ZmZlci1mb3JtYXQtcXVhbGlmaWVyIHRlc3Q2 KQorICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIHRhZyAiT1IiCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGZ1bmNhbGwgdGFnIChmdW5jYWxsIGRlc2NyaXB0aW9uICdtb2RlKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6ICIgImVtYWNzLWxpc3AtbW9kZSIp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgdGFnIChmdW5jYWxsIGRlc2Ny aXB0aW9uICdmaWxlLWV4dGVuc2lvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiOiAiICJlbGM/IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCB0 YWcgIkFORCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCB0 YWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2Fs bCBkZXNjcmlwdGlvbiAnc3RhcnJlZC1uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICI6ICIgIm5pbCIpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGZ1bmNhbGwgdGFnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGZ1bmNhbGwgZGVzY3JpcHRpb24gJ25hbWUpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogIiAiZWxpc3AiKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCB0YWcgKGZ1bmNhbGwgZGVzY3JpcHRpb24gJ21v ZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogIiAibGlzcC1pbnRl cmFjdGlvbi1tb2RlIikpKSkpKQorCisoZXJ0LWRlZnRlc3QgaWJ1ZmZlci11bmFyeS1vcGVyYW5k ICgpCisgICJUZXN0cyBgaWJ1ZmZlci11bmFyeS1vcGVyYW5kJzogKG5vdCBjZWxsKSBvciAobm90 IC4gY2VsbCkgLT4gY2VsbC4iCisgIChza2lwLXVubGVzcyAoZmVhdHVyZXAgJ2lidWYtZXh0KSkK KyAgKHNob3VsZCAoZXF1YWwgKGlidWZmZXItdW5hcnktb3BlcmFuZCAnKG5vdCAuIChtb2RlICJm b28iKSkpCisgICAgICAgICAgICAgICAgICcobW9kZSAiZm9vIikpKQorICAoc2hvdWxkIChlcXVh bCAoaWJ1ZmZlci11bmFyeS1vcGVyYW5kICcobm90IChtb2RlICJmb28iKSkpCisgICAgICAgICAg ICAgICAgICcobW9kZSAiZm9vIikpKQorICAoc2hvdWxkIChlcXVhbCAoaWJ1ZmZlci11bmFyeS1v cGVyYW5kICcobm90ICJjZHIiKSkKKyAgICAgICAgICAgICAgICAgJygiY2RyIikpKQorICAoc2hv dWxkIChlcXVhbCAoaWJ1ZmZlci11bmFyeS1vcGVyYW5kICcobm90KSkgbmlsKSkKKyAgKHNob3Vs ZCAoZXF1YWwgKGlidWZmZXItdW5hcnktb3BlcmFuZCAnKG5vdCAuIGEpKSAnYSkpKQorCiAocHJv dmlkZSAnaWJ1ZmZlci10ZXN0cykKIDs7IGlidWZmZXItdGVzdHMuZWwgZW5kcyBoZXJlCi0tIAoy LjEwLjAKCg== --001a1141f18cdd6fbe0542902c27--