Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1knLwz-0003x5-9P for pgadmin-hackers@arkaria.postgresql.org; Thu, 10 Dec 2020 13:25:41 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1knLwx-00064q-St for pgadmin-hackers@arkaria.postgresql.org; Thu, 10 Dec 2020 13:25:39 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1knLwx-00064i-Dm for pgadmin-hackers@lists.postgresql.org; Thu, 10 Dec 2020 13:25:39 +0000 Received: from mail-qk1-x735.google.com ([2607:f8b0:4864:20::735]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1knLwt-00047G-Dh for pgadmin-hackers@postgresql.org; Thu, 10 Dec 2020 13:25:38 +0000 Received: by mail-qk1-x735.google.com with SMTP id d14so4000848qkc.13 for ; Thu, 10 Dec 2020 05:25:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=P8U+GIofQdp2bkdg6hQDLLwDP5yBWZCCYjKA+Hy/3E4=; b=I2N++IIGjq4GP9m5jr1zDMBmZFVHgXnfPULurlWlfjwmZbMDGqFdGlzOIAzdjx53gB CzzAGv3xdHj3KfV6Eg1GQstii+R+c08GU6+yKWpgP2fo8pB52X81EZN0BFX5mkQhITiI c95vh/bpmx8i3lorWCIBqrLf+AglX0ZY7on/Hm1mWY2cEbTREjxcmRkmGfwCjuv/9MBL f20O3lCM+S9fAZg6qxtUy/ImkqBEycoxyrYNws5Wa3R1Jr9ZiR1j/hay/rbT39a4nr3P rQuhA6GvnQ7TuHcdMsf3Dmw1dv++qZBceh65xvt804gfpdyV1X+HnzOlxqKu2dfyMSZD 8p5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=P8U+GIofQdp2bkdg6hQDLLwDP5yBWZCCYjKA+Hy/3E4=; b=BSUczepy5DYaqdltLa+1Oe2AySJyvOF7f8emHCd67ejZS75IofSoD6nHcUuRrNynmM aEmtVYOjD4IezpH9QW73jkSVcrwHsXndlQ48QwTQiWoxHHafbxtzh8O/8N9dS+1peLcR mzz8IZaMFIITcGNlwl+RQeGbxh2/fIdXPgTr+jTLWfavjr4jPczrdQEkWTbxQq55ew0M PwI7jK1kjsFnaOOAzryWywXTFNci6jGo5L4wgpGxUxBs0zAkj7T8DGUq2YWQnXtU4lDe rKawHBMRNACQlCbRguCL058bBXK5q5vPUBnl9xTqsKG46V1h5Zw++u6YYOtfNSEngFpP NPOw== X-Gm-Message-State: AOAM530TeQSa28ilui9OWJnkBsA1IjChDdPpLoeLJXMP4YqkEblqORwT X177/4xg2EWl85gYMzeKyDwIlUwUwPW90chAE/uSUOZyCPuOe17WIfEYvg4lAt1urgcGo+vcGNv EvMs6Jo5WVdTK/ge2/kdmXRSJGZNAUXy7cuBuz9C82MbbaEjKtolwGoBoVrF/bmp29BUMBmDVzY eYLJfWUHInHhVvFPi9pp7kzp1DBo3wPVz6139zfoPN8W9rAW9+RQtK7t/3Og== X-Google-Smtp-Source: ABdhPJxNYyz6u1zI4vubitFElNe70Oxq4er+3EcU89Vw3js0Sc/Xs4eGK2d/UbqnwJtB1Y7QavQ/PSGLM+PsE3bLU4U= X-Received: by 2002:a05:620a:b02:: with SMTP id t2mr803085qkg.427.1607606732748; Thu, 10 Dec 2020 05:25:32 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Rahul Shirsat Date: Thu, 10 Dec 2020 18:54:56 +0530 Message-ID: Subject: Re: [pgAdmin4] RM5965 Couldn't download file of Marcos query results To: Aditya Toshniwal Cc: pgadmin-hackers , Akshay Joshi Content-Type: multipart/mixed; boundary="0000000000003f5abd05b61c1cc8" X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --0000000000003f5abd05b61c1cc8 Content-Type: multipart/alternative; boundary="0000000000003f5ab905b61c1cc6" --0000000000003f5ab905b61c1cc6 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Aditya/Akshay, On Wed, Dec 9, 2020 at 2:59 PM Aditya Toshniwal < aditya.toshniwal@enterprisedb.com> wrote: > Hello Rahul, > > Found below issues: > 1) The data grid is not fetching more than 1000 records now, gives a > console error: > sqleditor.js:1264 Uncaught TypeError: self.enable_disable_download_btn is > not a function > at child.fetch_next (sqleditor.js:1264) > *Fixed* > > 2) The sqleditor test cases are failing. > *This has been taken care of, and added more test cases. * > 3) Fix pep8 issues. > 4) Fix linter issues. > *Sorry for these issues, last minute code changes* =F0=9F=98=A3 > 5) Please check the doc changes again, it's not clear to me. > *This has been corrected now.* > > I didn't check but make sure the GUI tests for the sqleditor runs fine > since the behaviour has changed now. > *These are fixed now.* > > On Wed, Dec 9, 2020 at 1:53 PM Akshay Joshi > wrote: > >> Hi Aditya >> >> Can you please review this patch? >> >> On Mon, Dec 7, 2020 at 3:10 PM Rahul Shirsat < >> rahul.shirsat@enterprisedb.com> wrote: >> >>> Hi Hackers, >>> >>> Please find the updated patch below. >>> >>> On Mon, Dec 7, 2020 at 2:55 PM Rahul Shirsat < >>> rahul.shirsat@enterprisedb.com> wrote: >>> >>>> Hi Hackers, >>>> >>>> Please find the attached patch which resolves the issue of macros quer= y >>>> results download, have used async cursor to achieve this functionality= , >>>> where for downloading the results, cursor is scrolled back to 0 and en= d of >>>> the records, and reset again while user scrolling on Data Output table= . >>>> >>>> QA/Reviewer needs to observe below issues if it occurs: >>>> >>>> 1. If records are more like 5000 or 10000, try to fetch records by >>>> scrolling at least (2000), now save the results by clicking the dow= nload >>>> button, it should save the file, and now try scrolling again, the d= ata >>>> should be shown continuously and not any abrupt end or unexpected r= ecords >>>> order. >>>> 2. Also, the download button is now "Save results to CSV/TXT" where >>>> it will only get enabled when there are valid records in the Data O= utput. >>>> >>>> >>>> Also a minor fix of the add folder icon issue is also added into this >>>> patch. >>>> >>>> -- >>>> *Rahul Shirsat* >>>> Senior Software Engineer | EnterpriseDB Corporation. >>>> >>> >>> >>> -- >>> *Rahul Shirsat* >>> Software Engineer | EnterpriseDB Corporation. >>> >> >> >> -- >> *Thanks & Regards* >> *Akshay Joshi* >> *pgAdmin Hacker | Principal Software Architect* >> *EDB Postgres * >> >> *Mobile: +91 976-788-8246* >> > > > -- > Thanks, > Aditya Toshniwal > pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* > > "Don't Complain about Heat, Plant a TREE" > --=20 *Rahul Shirsat* Software Engineer | EnterpriseDB Corporation. --0000000000003f5ab905b61c1cc6 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Aditya/Akshay,

On Wed, Dec 9, 2020 at 2:59 PM Adity= a Toshniwal <aditya= .toshniwal@enterprisedb.com> wrote:
Hello Rahul,

Found below iss= ues:
1) The data grid is= not fetching more than 1000 records now, gives a console error:
sqleditor.js:1264 Uncaught TypeErr= or: self.enable_disable_download_btn is not a function
=C2=A0 =C2=A0 at = child.fetch_next (sqleditor.js:1264)
=C2=A0Fixed

2) The sqleditor test cases are failing.
=C2= =A0This has been taken care of, and added more test cases.=C2=A0
3) Fix pep8 issues.
4) Fix linter issues.
=C2=A0Sorry for these issues, last minute code changes= =C2=A0=F0=9F=98=A3=C2=A0
5) Plea= se check the doc changes again, it's not clear to me.
=C2=A0This has been corrected now.=C2=A0

I didn't check but make sure the GUI tests for the sqleditor r= uns fine since the behaviour has changed now.
= =C2=A0These are fixed now.=C2=A0

On Wed, Dec 9, 2020 at 1:53 PM Akshay Joshi <akshay.joshi@enterp= risedb.com> wrote:
Hi Aditya

Can you please rev= iew this patch?

On Mon, Dec 7, 2020 at 3:10 PM Rahul Shirsat <rahul.shirsa= t@enterprisedb.com> wrote:
Hi Hackers,

Pleas= e find the updated patch below.

<= div dir=3D"ltr" class=3D"gmail_attr">On Mon, Dec 7, 2020 at 2:55 PM Rahul S= hirsat <rahul.shirsat@enterprisedb.com> wrote:
Hi Hackers,

Please find the attached patch which resolves the issue of macros qu= ery results download, have used async cursor to achieve this functionality,= where for downloading the results, cursor is scrolled back to 0 and end of= the records, and reset again while user scrolling on Data Output table.

QA/Reviewer needs to observe below issues if it occu= rs:
  1. If records are more like 5000 or 10000, try to fetch = records by scrolling at least=C2=A0(2000), now save the results by clicking= the download button, it should save the file, and now try scrolling again,= the data should be shown continuously and not any abrupt end or unexpected= records order.
  2. Also, the download button is now "Save results= to CSV/TXT" where it will only get enabled when there are valid recor= ds in the Data Output.

Also a minor fix = of the add folder icon issue is also added into this patch.
=
--
Rahul Shirsat
Senior Software Engineer=C2=A0|=C2=A0EnterpriseDB=C2=A0Corpora= tion.


--
Rahul Shirsat
Software Engineer=C2= =A0|=C2=A0EnterpriseDB=C2=A0Corporation.


--
Thank= s & Regards
Akshay Joshi
pgAdmin Hacker | Principal Softw= are Architect
EDB Po= stgres
Mobile: +91 976-788-8246



--
Thanks,
Aditya Toshniwal=
pgAdmin hacker=C2=A0| Sr. Software Engineer | edbpostgres.com
&quo= t;Don't Complain about Heat, Plant a TREE"


--
Rahul Shirsat
Software Engineer=C2=A0|=C2=A0EnterpriseDB=C2=A0Corporation.=
--0000000000003f5ab905b61c1cc6-- --0000000000003f5abd05b61c1cc8 Content-Type: application/octet-stream; name="RM5965_v3.patch" Content-Disposition: attachment; filename="RM5965_v3.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kiivijef0 ZGlmZiAtLWdpdCBhL2RvY3MvZW5fVVMvcXVlcnlfdG9vbC5yc3QgYi9kb2NzL2VuX1VTL3F1ZXJ5 X3Rvb2wucnN0CmluZGV4IDg4MGNhNGZmYi4uMmQwNTMwZWE0IDEwMDY0NAotLS0gYS9kb2NzL2Vu X1VTL3F1ZXJ5X3Rvb2wucnN0CisrKyBiL2RvY3MvZW5fVVMvcXVlcnlfdG9vbC5yc3QKQEAgLTEy Miw3ICsxMjIsNyBAQCBZb3UgY2FuOgogKiBTZWxlY3QgYW5kIGNvcHkgZnJvbSB0aGUgZGlzcGxh eWVkIHJlc3VsdCBzZXQuCiAqIFVzZSB0aGUgKkV4ZWN1dGUvUmVmcmVzaCogb3B0aW9ucyB0byBy ZXRyaWV2ZSBxdWVyeSBleGVjdXRpb24gaW5mb3JtYXRpb24gYW5kCiAgIHNldCBxdWVyeSBleGVj dXRpb24gb3B0aW9ucy4KLSogVXNlIHRoZSAqRG93bmxvYWQgYXMgQ1NWL1RYVCogaWNvbiB0byBk b3dubG9hZCB0aGUgY29udGVudCBvZiB0aGUgKkRhdGEgT3V0cHV0KgorKiBVc2UgdGhlICpTYXZl IHJlc3VsdHMgdG8gZmlsZSogaWNvbiB0byBzYXZlIHRoZSBjb250ZW50IG9mIHRoZSAqRGF0YSBP dXRwdXQqCiAgIHRhYiBhcyBhIGNvbW1hLWRlbGltaXRlZCBmaWxlLgogKiBFZGl0IHRoZSBkYXRh IGluIHRoZSByZXN1bHQgc2V0IG9mIGEgU0VMRUNUIHF1ZXJ5IGlmIGl0IGlzIHVwZGF0YWJsZS4K IApkaWZmIC0tZ2l0IGEvZG9jcy9lbl9VUy9xdWVyeV90b29sX3Rvb2xiYXIucnN0IGIvZG9jcy9l bl9VUy9xdWVyeV90b29sX3Rvb2xiYXIucnN0CmluZGV4IDIxNjhjMzkzMC4uM2RiM2I1NjNlIDEw MDY0NAotLS0gYS9kb2NzL2VuX1VTL3F1ZXJ5X3Rvb2xfdG9vbGJhci5yc3QKKysrIGIvZG9jcy9l bl9VUy9xdWVyeV90b29sX3Rvb2xiYXIucnN0CkBAIC0xNzksMTAgKzE3OSwxMCBAQCBRdWVyeSBF eGVjdXRpb24KICAgIHwgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfAogICAgfCAgICAgICAgICAg ICAgICAgICAgICB8ICAqIFNlbGVjdCAqQ2xlYXIgSGlzdG9yeSogdG8gZXJhc2UgdGhlIGNvbnRl bnQgb2YgdGhlICpIaXN0b3J5KiB0YWIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgKkRv d25sb2FkIGFzIENTVi9UWFQqfCBDbGljayB0aGUgKkRvd25sb2FkIGFzIENTVi9UWFQqIGljb24g dG8gZG93bmxvYWQgdGhlIHJlc3VsdCBzZXQgb2YgdGhlIGN1cnJlbnQgcXVlcnkgYXMgYSAqLmNz diogIHwgRjggICAgICAgICAgICAgfAotICAgfCAgICAgICAgICAgICAgICAgICAgICB8IG9yIGFz IGEgKi50eHQqIGZpbGUuIGlmICpDU1YgZmllbGQgc2VwZXJhdG9yKiBzZXQgdG8gY29tbWEoLCkg ZWxzZSBhcyBhICoudHh0KiBmaWxlLiAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8Ci0g ICB8ICAgICAgICAgICAgICAgICAgICAgIHwgWW91IGNhbiBzcGVjaWZ5IHRoZSBDU1YvVFhUIHNl dHRpbmdzIHRocm91Z2ggKlByZWZlcmVuY2VzIC0+IFNRTCBFZGl0b3IgLT4gQ1NWL1RYVCBvdXRw dXQqICAgICAgICB8ICAgICAgICAgICAgICAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgICAg fCBkaWFsb2d1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgfAorICAgfCAqU2F2ZSByZXN1bHRzIHRvKiAgICB8IENsaWNrIHRoZSBTYXZlIHJlc3VsdHMg dG8gZmlsZSBpY29uIHRvIHNhdmUgdGhlIHJlc3VsdCBzZXQgb2YgdGhlIGN1cnJlbnQgcXVlcnkg YXMgYSBkZWxpbWl0ZWQgICAgfCBGOCAgICAgICAgICAgICB8CisgICB8ICAqZmlsZSogICAgICAg ICAgICAgIHwgdGV4dCBmaWxlIChDU1YsIGlmIHRoZSBmaWVsZCBzZXBhcmF0b3IgaXMgc2V0IHRv IGEgY29tbWEpLiBUaGlzIGJ1dHRvbiB3aWxsIG9ubHkgYmUgZW5hYmxlZCB3aGVuICB8ICAgICAg ICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgfCBhIHF1ZXJ5IGhhcyBiZWVu IGV4ZWN1dGVkIGFuZCB0aGVyZSBhcmUgcmVzdWx0cyBpbiB0aGUgZGF0YSBncmlkLiBZb3UgY2Fu IHNwZWNpZnkgdGhlIENTVi9UWFQgICAgIHwgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAg ICAgICAgICAgICAgICB8IHNldHRpbmdzIGluIHRoZSBQcmVmZXJlbmNlIERpYWxvZ3VlIHVuZGVy IFNRTCBFZGl0b3IgLT4gQ1NWL1RYVCBvdXRwdXQuICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwg Kk1hY3JvcyogICAgICAgICAgICAgfCBDbGljayB0aGUgKk1hY3JvcyogaWNvbiB0byBtYW5hZ2Ug dGhlIG1hY3Jvcy4gWW91IGNhbiBjcmVhdGUsIGVkaXQgb3IgY2xlYXIgdGhlIG1hY3JvcyB0aHJv dWdoICAgIHwgICAgICAgICAgICAgICAgfAogICAgfCAgICAgICAgICAgICAgICAgICAgICB8IHRo ZSAqTWFuYWdlIE1hY3Jvcyogb3B0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMva2V5Ym9hcmRfc2hvcnRjdXRzLmpz IGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2tleWJvYXJkX3Nob3J0Y3V0cy5qcwppbmRleCBhYmRh OGQ4ZjIuLjBlODRhYmEzZSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2tleWJv YXJkX3Nob3J0Y3V0cy5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMva2V5Ym9hcmRfc2hv cnRjdXRzLmpzCkBAIC0xOTEsNyArMTkxLDcgQEAgZnVuY3Rpb24ga2V5Ym9hcmRTaG9ydGN1dHNR dWVyeVRvb2woCiAgIGxldCBleGVjdXRlS2V5cyA9IHNxbEVkaXRvckNvbnRyb2xsZXIucHJlZmVy ZW5jZXMuZXhlY3V0ZV9xdWVyeTsKICAgbGV0IGV4cGxhaW5LZXlzID0gc3FsRWRpdG9yQ29udHJv bGxlci5wcmVmZXJlbmNlcy5leHBsYWluX3F1ZXJ5OwogICBsZXQgZXhwbGFpbkFuYWx5emVLZXlz ID0gc3FsRWRpdG9yQ29udHJvbGxlci5wcmVmZXJlbmNlcy5leHBsYWluX2FuYWx5emVfcXVlcnk7 Ci0gIGxldCBkb3dubG9hZENzdktleXMgPSBzcWxFZGl0b3JDb250cm9sbGVyLnByZWZlcmVuY2Vz LmRvd25sb2FkX2NzdjsKKyAgbGV0IGRvd25sb2FkQ3N2S2V5cyA9IHNxbEVkaXRvckNvbnRyb2xs ZXIucHJlZmVyZW5jZXMuZG93bmxvYWRfcmVzdWx0czsKICAgbGV0IG5leHRUYWJLZXlzID0gc3Fs RWRpdG9yQ29udHJvbGxlci5wcmVmZXJlbmNlcy5tb3ZlX25leHQ7CiAgIGxldCBwcmV2aW91c1Rh YktleXMgPSBzcWxFZGl0b3JDb250cm9sbGVyLnByZWZlcmVuY2VzLm1vdmVfcHJldmlvdXM7CiAg IGxldCBzd2l0Y2hQYW5lbEtleXMgPSBzcWxFZGl0b3JDb250cm9sbGVyLnByZWZlcmVuY2VzLnN3 aXRjaF9wYW5lbDsKQEAgLTIxMSw4ICsyMTEsMTAgQEAgZnVuY3Rpb24ga2V5Ym9hcmRTaG9ydGN1 dHNRdWVyeVRvb2woCiAgICAgdGhpcy5fc3RvcEV2ZW50UHJvcGFnYXRpb24oZXZlbnQpOwogICAg IHF1ZXJ5VG9vbEFjdGlvbnMuZXhwbGFpbkFuYWx5emUoc3FsRWRpdG9yQ29udHJvbGxlcik7CiAg IH0gZWxzZSBpZiAodGhpcy52YWxpZGF0ZVNob3J0Y3V0S2V5cyhkb3dubG9hZENzdktleXMsIGV2 ZW50KSkgewotICAgIHRoaXMuX3N0b3BFdmVudFByb3BhZ2F0aW9uKGV2ZW50KTsKLSAgICBxdWVy eVRvb2xBY3Rpb25zLmRvd25sb2FkKHNxbEVkaXRvckNvbnRyb2xsZXIpOworICAgIGlmKCFzcWxF ZGl0b3JDb250cm9sbGVyLmlzX3NhdmVfcmVzdWx0c190b19maWxlX2Rpc2FibGVkKSB7CisgICAg ICB0aGlzLl9zdG9wRXZlbnRQcm9wYWdhdGlvbihldmVudCk7CisgICAgICBxdWVyeVRvb2xBY3Rp b25zLmRvd25sb2FkKHNxbEVkaXRvckNvbnRyb2xsZXIpOworICAgIH0KICAgfSBlbHNlIGlmICh0 aGlzLnZhbGlkYXRlU2hvcnRjdXRLZXlzKHRvZ2dsZUNhc2VLZXlzLCBldmVudCkpIHsKICAgICB0 aGlzLl9zdG9wRXZlbnRQcm9wYWdhdGlvbihldmVudCk7CiAgICAgcXVlcnlUb29sQWN0aW9ucy50 b2dnbGVDYXNlT2ZTZWxlY3RlZFRleHQoc3FsRWRpdG9yQ29udHJvbGxlcik7CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL2NhbGxfcmVuZGVyX2FmdGVyX3BvbGwu anMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL2NhbGxfcmVuZGVyX2FmdGVyX3Bv bGwuanMKaW5kZXggZDhkMzY0NzIyLi4yYzUyYmFmMTAgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L3N0YXRpYy9qcy9zcWxlZGl0b3IvY2FsbF9yZW5kZXJfYWZ0ZXJfcG9sbC5qcworKysgYi93ZWIv cGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL2NhbGxfcmVuZGVyX2FmdGVyX3BvbGwuanMKQEAg LTQzLDYgKzQzLDcgQEAgZXhwb3J0IGZ1bmN0aW9uIGNhbGxSZW5kZXJBZnRlclBvbGwoc3FsRWRp dG9yLCBhbGVydGlmeSwgcmVzKSB7CiAgICAgaWYgKGlzTm90aWZpY2F0aW9uRW5hYmxlZChzcWxF ZGl0b3IpKSB7CiAgICAgICBhbGVydGlmeS5zdWNjZXNzKG1zZywgc3FsRWRpdG9yLmluZm9fbm90 aWZpZXJfdGltZW91dCk7CiAgICAgfQorICAgIHNxbEVkaXRvci5lbmFibGVfZGlzYWJsZV9kb3du bG9hZF9idG4odHJ1ZSk7CiAgIH0KIAogICBpZiAoaXNRdWVyeVRvb2woc3FsRWRpdG9yKSkgewpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9leGVjdXRlX3F1ZXJ5 LmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9leGVjdXRlX3F1ZXJ5LmpzCmlu ZGV4IDZjNDA2OWQyNC4uMDEzNWY1YmM3IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMv anMvc3FsZWRpdG9yL2V4ZWN1dGVfcXVlcnkuanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pz L3NxbGVkaXRvci9leGVjdXRlX3F1ZXJ5LmpzCkBAIC04Myw2ICs4Myw3IEBAIGNsYXNzIEV4ZWN1 dGVRdWVyeSB7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgc2VsZi5sb2FkaW5nU2NyZWVu LmhpZGUoKTsKICAgICAgICAgICBzZWxmLmVuYWJsZVNRTEVkaXRvckJ1dHRvbnMoKTsKKyAgICAg ICAgICBzZWxmLmRpc2FibGVEb3dubG9hZEJ1dHRvbigpOwogICAgICAgICAgIC8vIEVuYWJsZS9E aXNhYmxlIGNvbW1pdCBhbmQgcm9sbGJhY2sgYnV0dG9uLgogICAgICAgICAgIGlmIChyZXN1bHQu ZGF0YS5kYXRhLnRyYW5zYWN0aW9uX3N0YXR1cyA9PSBxdWVyeVR4blN0YXR1cy5UUkFOU0FDVElP Tl9TVEFUVVNfSU5UUkFOUwogICAgICAgICAgICAgfHwgcmVzdWx0LmRhdGEuZGF0YS50cmFuc2Fj dGlvbl9zdGF0dXMgPT0gcXVlcnlUeG5TdGF0dXMuVFJBTlNBQ1RJT05fU1RBVFVTX0lORVJST1Ip IHsKQEAgLTIwMSw3ICsyMDIsNyBAQCBjbGFzcyBFeGVjdXRlUXVlcnkgewogICAgIHRoaXMubG9h ZGluZ1NjcmVlbi5zaG93KGdldHRleHQoJ1J1bm5pbmcgcXVlcnkuLi4nKSk7CiAKICAgICAkKCcj YnRuLWZsYXNoJykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKLSAgICAkKCcjYnRuLWRvd25sb2Fk JykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKKyAgICB0aGlzLmRpc2FibGVEb3dubG9hZEJ1dHRv bigpOwogCiAgICAgdGhpcy5zcWxTZXJ2ZXJPYmplY3QucXVlcnlfc3RhcnRfdGltZSA9IG5ldyBE YXRlKCk7CiAgICAgaWYgKHR5cGVvZiBzcWxTdGF0ZW1lbnQgPT09ICdvYmplY3QnKSB7CkBAIC0y ODEsNiArMjgyLDEwIEBAIGNsYXNzIEV4ZWN1dGVRdWVyeSB7CiAgICAgfQogICB9CiAKKyAgZGlz YWJsZURvd25sb2FkQnV0dG9uKCkgeworICAgIHRoaXMuc3FsU2VydmVyT2JqZWN0LmVuYWJsZV9k aXNhYmxlX2Rvd25sb2FkX2J0bih0cnVlKTsKKyAgfQorCiAgIGVuYWJsZVNRTEVkaXRvckJ1dHRv bnMoKSB7CiAgICAgdGhpcy5zcWxTZXJ2ZXJPYmplY3QuZGlzYWJsZV90b29sX2J1dHRvbnMoZmFs c2UpOwogICB9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL3F1 ZXJ5X3Rvb2xfYWN0aW9ucy5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvcXVl cnlfdG9vbF9hY3Rpb25zLmpzCmluZGV4IDgxOTM3MDU4Yy4uYTNlMTZiZGZmIDEwMDY0NAotLS0g YS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2xfYWN0aW9ucy5qcwor KysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2xfYWN0aW9ucy5q cwpAQCAtODEsMTMgKzgxLDcgQEAgbGV0IHF1ZXJ5VG9vbEFjdGlvbnMgPSB7CiAgIH0sCiAKICAg ZG93bmxvYWQ6IGZ1bmN0aW9uIChzcWxFZGl0b3JDb250cm9sbGVyKSB7Ci0gICAgbGV0IHNxbFF1 ZXJ5ID0gc3FsRWRpdG9yQ29udHJvbGxlci5ncmlkVmlldy5xdWVyeV90b29sX29iai5nZXRTZWxl Y3Rpb24oKTsKIAotICAgIGlmICghc3FsUXVlcnkpIHsKLSAgICAgIHNxbFF1ZXJ5ID0gc3FsRWRp dG9yQ29udHJvbGxlci5ncmlkVmlldy5xdWVyeV90b29sX29iai5nZXRWYWx1ZSgpOwotICAgIH0K LQotICAgIGlmICghc3FsUXVlcnkpIHJldHVybjsKICAgICBsZXQgZXh0ZW5zaW9uID0gc3FsRWRp dG9yQ29udHJvbGxlci5wcmVmZXJlbmNlcy5jc3ZfZmllbGRfc2VwYXJhdG9yID09PSAnLCcgPyAn LmNzdic6ICcudHh0JzsKICAgICBsZXQgZmlsZW5hbWUgPSAnZGF0YS0nICsgbmV3IERhdGUoKS5n ZXRUaW1lKCkgKyBleHRlbnNpb247CiAKQEAgLTk1LDcgKzg5LDcgQEAgbGV0IHF1ZXJ5VG9vbEFj dGlvbnMgPSB7CiAgICAgICBmaWxlbmFtZSA9IHNxbEVkaXRvckNvbnRyb2xsZXIudGFibGVfbmFt ZSArIGV4dGVuc2lvbjsKICAgICB9CiAKLSAgICBzcWxFZGl0b3JDb250cm9sbGVyLnRyaWdnZXJf Y3N2X2Rvd25sb2FkKHNxbFF1ZXJ5LCBmaWxlbmFtZSk7CisgICAgc3FsRWRpdG9yQ29udHJvbGxl ci50cmlnZ2VyX2Nzdl9kb3dubG9hZChmaWxlbmFtZSk7CiAgIH0sCiAKICAgY29tbWVudEJsb2Nr Q29kZTogZnVuY3Rpb24gKHNxbEVkaXRvckNvbnRyb2xsZXIpIHsKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvcXVlcnlfdG9vbF9wcmVmZXJlbmNlcy5qcyBiL3dl Yi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvcXVlcnlfdG9vbF9wcmVmZXJlbmNlcy5qcwpp bmRleCBiYTRlN2M4ODIuLmEzNjMyOGJkZCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGlj L2pzL3NxbGVkaXRvci9xdWVyeV90b29sX3ByZWZlcmVuY2VzLmpzCisrKyBiL3dlYi9wZ2FkbWlu L3N0YXRpYy9qcy9zcWxlZGl0b3IvcXVlcnlfdG9vbF9wcmVmZXJlbmNlcy5qcwpAQCAtMTEyLDEx ICsxMTIsMTEgQEAgZnVuY3Rpb24gdXBkYXRlVUlQcmVmZXJlbmNlcyhzcWxFZGl0b3IpIHsKICAg ICAuYXR0cignYXJpYS1sYWJlbCcsCiAgICAgICBzaG9ydGN1dF90aXRsZShnZXR0ZXh0KCdFeHBs YWluIEFuYWx5emUnKSxwcmVmZXJlbmNlcy5leHBsYWluX2FuYWx5emVfcXVlcnkpKTsKIAotICAk ZWwuZmluZCgnI2J0bi1kb3dubG9hZCcpCisgICRlbC5maW5kKCcjYnRuLXNhdmUtcmVzdWx0cy10 by1maWxlJykKICAgICAuYXR0cigndGl0bGUnLAotICAgICAgc2hvcnRjdXRfdGl0bGUoZ2V0dGV4 dCgnRG93bmxvYWQgYXMgQ1NWL1RYVCcpLHByZWZlcmVuY2VzLmRvd25sb2FkX2NzdikpCisgICAg ICBzaG9ydGN1dF90aXRsZShnZXR0ZXh0KCdTYXZlIHJlc3VsdHMgdG8gZmlsZScpLHByZWZlcmVu Y2VzLmRvd25sb2FkX3Jlc3VsdHMpKQogICAgIC5hdHRyKCdhcmlhLWxhYmVsJywKLSAgICAgIHNo b3J0Y3V0X3RpdGxlKGdldHRleHQoJ0Rvd25sb2FkIGFzIENTVi9UWFQnKSxwcmVmZXJlbmNlcy5k b3dubG9hZF9jc3YpKTsKKyAgICAgIHNob3J0Y3V0X3RpdGxlKGdldHRleHQoJ1NhdmUgcmVzdWx0 cyB0byBmaWxlJykscHJlZmVyZW5jZXMuZG93bmxvYWRfcmVzdWx0cykpOwogCiAgICRlbC5maW5k KCcjYnRuLXNhdmUtZGF0YScpCiAgICAgLmF0dHIoJ3RpdGxlJywKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3Rvb2xzL2RhdGFncmlkL3RlbXBsYXRlcy9kYXRhZ3JpZC9pbmRleC5odG1sIGIvd2Vi L3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvdGVtcGxhdGVzL2RhdGFncmlkL2luZGV4Lmh0bWwKaW5k ZXggY2JlZTk4MjIyLi5kOWQwZDIyNTQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2Rh dGFncmlkL3RlbXBsYXRlcy9kYXRhZ3JpZC9pbmRleC5odG1sCisrKyBiL3dlYi9wZ2FkbWluL3Rv b2xzL2RhdGFncmlkL3RlbXBsYXRlcy9kYXRhZ3JpZC9pbmRleC5odG1sCkBAIC0zNzQsOSArMzc0 LDkgQEAKICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgPC9kaXY+CiAgICAgICAg ICAgICA8ZGl2IGNsYXNzPSJidG4tZ3JvdXAiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIiPgot ICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1kb3dubG9hZCIgdHlwZT0iYnV0dG9uIiBj bGFzcz0iYnRuIGJ0bi1zbSBidG4tcHJpbWFyeS1pY29uIgorICAgICAgICAgICAgICAgIDxidXR0 b24gaWQ9ImJ0bi1zYXZlLXJlc3VsdHMtdG8tZmlsZSIgdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRu IGJ0bi1zbSBidG4tcHJpbWFyeS1pY29uIgogICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9 IiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PSIwIj4KKyAgICAgICAgICAgICAg ICAgICAgICAgIHRhYmluZGV4PSIwIiBkaXNhYmxlZD4KICAgICAgICAgICAgICAgICAgICAgPGkg Y2xhc3M9ImZhIGZhLWRvd25sb2FkIHNxbC1pY29uLWxnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgcm9s ZT0iaW1nIj48L2k+CiAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICA8L2Rp dj4KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9fX2luaXRfXy5weSBi L3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9fX2luaXRfXy5weQppbmRleCAwNzg0YzU0Njgu LmE5ZjU2MjdjNiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL19faW5p dF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9fX2luaXRfXy5weQpAQCAt MTMzNiw3ICsxMzM2LDcgQEAgZGVmIHN0YXJ0X3F1ZXJ5X2Rvd25sb2FkX3Rvb2wodHJhbnNfaWQp OgogICAgICAgICApCiAKICAgICBkYXRhID0gcmVxdWVzdC52YWx1ZXMgaWYgcmVxdWVzdC52YWx1 ZXMgZWxzZSBOb25lCi0gICAgaWYgZGF0YSBpcyBOb25lIG9yIChkYXRhIGFuZCAncXVlcnknIG5v dCBpbiBkYXRhKToKKyAgICBpZiBkYXRhIGlzIE5vbmU6CiAgICAgICAgIHJldHVybiBtYWtlX2pz b25fcmVzcG9uc2UoCiAgICAgICAgICAgICBzdGF0dXM9NDEwLAogICAgICAgICAgICAgc3VjY2Vz cz0wLApAQCAtMTM0NiwxMiArMTM0Niw5IEBAIGRlZiBzdGFydF9xdWVyeV9kb3dubG9hZF90b29s KHRyYW5zX2lkKToKICAgICAgICAgKQogCiAgICAgdHJ5OgotICAgICAgICBzcWwgPSBkYXRhWydx dWVyeSddCiAKICAgICAgICAgIyBUaGlzIHJldHVybnMgZ2VuZXJhdG9yIG9mIHJlY29yZHMuCi0g ICAgICAgIHN0YXR1cywgZ2VuID0gc3luY19jb25uLmV4ZWN1dGVfb25fc2VydmVyX2FzX2NzdigK LSAgICAgICAgICAgIHNxbCwgcmVjb3Jkcz0yMDAwCi0gICAgICAgICkKKyAgICAgICAgc3RhdHVz LCBnZW4gPSBzeW5jX2Nvbm4uZXhlY3V0ZV9vbl9zZXJ2ZXJfYXNfY3N2KHJlY29yZHM9MjAwMCkK IAogICAgICAgICBpZiBub3Qgc3RhdHVzOgogICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9y ZXNwb25zZSgKQEAgLTEzNjIsNiArMTM1OSw3IEBAIGRlZiBzdGFydF9xdWVyeV9kb3dubG9hZF90 b29sKHRyYW5zX2lkKToKIAogICAgICAgICByID0gUmVzcG9uc2UoCiAgICAgICAgICAgICBnZW4o CisgICAgICAgICAgICAgICAgdHJhbnNfb2JqLAogICAgICAgICAgICAgICAgIHF1b3RlPWJsdWVw cmludC5jc3ZfcXVvdGluZy5nZXQoKSwKICAgICAgICAgICAgICAgICBxdW90ZV9jaGFyPWJsdWVw cmludC5jc3ZfcXVvdGVfY2hhci5nZXQoKSwKICAgICAgICAgICAgICAgICBmaWVsZF9zZXBhcmF0 b3I9Ymx1ZXByaW50LmNzdl9maWVsZF9zZXBhcmF0b3IuZ2V0KCksCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL3NxbGVkaXRvci5qcyBiL3dlYi9wZ2Fk bWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9yLmpzCmluZGV4IGM4ZDNjYmNm My4uNTIyMTA3Y2FiIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3Rh dGljL2pzL3NxbGVkaXRvci5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3Rh dGljL2pzL3NxbGVkaXRvci5qcwpAQCAtMTM2LDcgKzEzNiw3IEBAIGRlZmluZSgndG9vbHMucXVl cnl0b29sJywgWwogICAgICAgJ2NsaWNrICNidG4tZmxhc2gnOiAnb25fZmxhc2gnLAogICAgICAg J2NsaWNrICNidG4tZmxhc2gtbWVudSc6ICdvbl9mbGFzaCcsCiAgICAgICAnY2xpY2sgI2J0bi1j YW5jZWwtcXVlcnknOiAnb25fY2FuY2VsX3F1ZXJ5JywKLSAgICAgICdjbGljayAjYnRuLWRvd25s b2FkJzogJ29uX2Rvd25sb2FkJywKKyAgICAgICdjbGljayAjYnRuLXNhdmUtcmVzdWx0cy10by1m aWxlJzogJ29uX2Rvd25sb2FkJywKICAgICAgICdjbGljayAjYnRuLWNsZWFyJzogJ29uX2NsZWFy JywKICAgICAgICdjbGljayAjYnRuLWF1dG8tY29tbWl0JzogJ29uX2F1dG9fY29tbWl0JywKICAg ICAgICdjbGljayAjYnRuLWF1dG8tcm9sbGJhY2snOiAnb25fYXV0b19yb2xsYmFjaycsCkBAIC0x MzU4LDcgKzEzNTgsNyBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgIHNlbGYu aGFuZGxlci5mZXRjaGluZ19yb3dzID0gdHJ1ZTsKIAogICAgICAgJCgnI2J0bi1mbGFzaCcpLnBy b3AoJ2Rpc2FibGVkJywgdHJ1ZSk7Ci0gICAgICAkKCcjYnRuLWRvd25sb2FkJykucHJvcCgnZGlz YWJsZWQnLCB0cnVlKTsKKyAgICAgICQoJyNidG4tc2F2ZS1yZXN1bHRzLXRvLWZpbGUnKS5wcm9w KCdkaXNhYmxlZCcsIHRydWUpOwogCiAgICAgICBpZiAoZmV0Y2hfYWxsKSB7CiAgICAgICAgIHNl bGYuaGFuZGxlci50cmlnZ2VyKApAQCAtMTM4Miw3ICsxMzgyLDcgQEAgZGVmaW5lKCd0b29scy5x dWVyeXRvb2wnLCBbCiAgICAgICAgIC5kb25lKGZ1bmN0aW9uKHJlcykgewogICAgICAgICAgIHNl bGYuaGFuZGxlci5oYXNfbW9yZV9yb3dzID0gcmVzLmRhdGEuaGFzX21vcmVfcm93czsKICAgICAg ICAgICAkKCcjYnRuLWZsYXNoJykucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7Ci0gICAgICAgICAg JCgnI2J0bi1kb3dubG9hZCcpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpOworICAgICAgICAgICQo JyNidG4tc2F2ZS1yZXN1bHRzLXRvLWZpbGUnKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKICAg ICAgICAgICBzZWxmLmhhbmRsZXIudHJpZ2dlcigncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1p Y29uOmhpZGUnKTsKICAgICAgICAgICBzZWxmLnVwZGF0ZV9ncmlkX2RhdGEocmVzLmRhdGEucmVz dWx0KTsKICAgICAgICAgICBzZWxmLmhhbmRsZXIuZmV0Y2hpbmdfcm93cyA9IGZhbHNlOwpAQCAt MTM5Miw3ICsxMzkyLDcgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgIH0p CiAgICAgICAgIC5mYWlsKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAkKCcjYnRuLWZsYXNoJyku cHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7Ci0gICAgICAgICAgJCgnI2J0bi1kb3dubG9hZCcpLnBy b3AoJ2Rpc2FibGVkJywgZmFsc2UpOworICAgICAgICAgICQoJyNidG4tc2F2ZS1yZXN1bHRzLXRv LWZpbGUnKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKICAgICAgICAgICBzZWxmLmhhbmRsZXIu dHJpZ2dlcigncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1pY29uOmhpZGUnKTsKICAgICAgICAg ICBzZWxmLmhhbmRsZXIuaGFzX21vcmVfcm93cyA9IGZhbHNlOwogICAgICAgICAgIHNlbGYuaGFu ZGxlci5mZXRjaGluZ19yb3dzID0gZmFsc2U7CkBAIC0yNTM0LDYgKzI1MzQsNyBAQCBkZWZpbmUo J3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgc2VsZi5zZXJ2ZXJfdHlwZSA9IHVybF9wYXJh bXMuc2VydmVyX3R5cGU7CiAgICAgICAgIHNlbGYudXJsX3BhcmFtcyA9IHVybF9wYXJhbXM7CiAg ICAgICAgIHNlbGYuaXNfdHJhbnNhY3Rpb25fYnV0dG9uc19kaXNhYmxlZCA9IHRydWU7CisgICAg ICAgIHNlbGYuaXNfc2F2ZV9yZXN1bHRzX3RvX2ZpbGVfZGlzYWJsZWQgPSB0cnVlOwogCiAgICAg ICAgIC8vIFdlIGRvIG5vdCBhbGxvdyB0byBjYWxsIHRoZSBzdGFydCBtdWx0aXBsZSB0aW1lcy4K ICAgICAgICAgaWYgKHNlbGYuZ3JpZFZpZXcpCkBAIC0yNzgzLDcgKzI3ODQsNyBAQCBkZWZpbmUo J3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgKTsKIAogICAgICAgICAkKCcjYnRuLWZsYXNo JykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKLSAgICAgICAgJCgnI2J0bi1kb3dubG9hZCcpLnBy b3AoJ2Rpc2FibGVkJywgdHJ1ZSk7CisgICAgICAgIHNlbGYuZW5hYmxlX2Rpc2FibGVfZG93bmxv YWRfYnRuKHRydWUpOwogCiAgICAgICAgIHNlbGYudHJpZ2dlcigKICAgICAgICAgICAncGdhZG1p bi1zcWxlZGl0b3I6bG9hZGluZy1pY29uOm1lc3NhZ2UnLApAQCAtMzA1OCw3ICszMDU5LDEyIEBA IGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICAgICAgLy8gSGlkZSB0aGUgbG9h ZGluZyBpY29uCiAgICAgICAgICAgICBzZWxmX2NvbC50cmlnZ2VyKCdwZ2FkbWluLXNxbGVkaXRv cjpsb2FkaW5nLWljb246aGlkZScpOwogICAgICAgICAgICAgJCgnI2J0bi1mbGFzaCcpLnByb3Ao J2Rpc2FibGVkJywgZmFsc2UpOwotICAgICAgICAgICAgJCgnI2J0bi1kb3dubG9hZCcpLnByb3Ao J2Rpc2FibGVkJywgZmFsc2UpOworICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKGRhdGEp ICYmIEFycmF5LmlzQXJyYXkoZGF0YS5yZXN1bHQpICYmIGRhdGEucmVzdWx0Lmxlbmd0aCA+IDAp IHsKKyAgICAgICAgICAgICAgc2VsZi5lbmFibGVfZGlzYWJsZV9kb3dubG9hZF9idG4oZmFsc2Up OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHNlbGYu ZW5hYmxlX2Rpc2FibGVfZG93bmxvYWRfYnRuKHRydWUpOworICAgICAgICAgICAgfQogICAgICAg ICAgIH0uYmluZChzZWxmKQogICAgICAgICApOwogICAgICAgfSwKQEAgLTMyMzksNyArMzI0NSw2 IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogCiAgICAgICAgIGlmIChzdGF0dXMgIT0g J0J1c3knKSB7CiAgICAgICAgICAgJCgnI2J0bi1mbGFzaCcpLnByb3AoJ2Rpc2FibGVkJywgZmFs c2UpOwotICAgICAgICAgICQoJyNidG4tZG93bmxvYWQnKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNl KTsKICAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNv bjpoaWRlJyk7CiAKICAgICAgICAgICBpZighc2VsZi50b3RhbF90aW1lKSB7CkBAIC0zMzAxLDYg KzMzMDYsMTIgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgIHJldHVybiAo c2VsZi5nZXQoJ2Nhbl9lZGl0JykpOwogICAgICAgfSwKIAorICAgICAgZW5hYmxlX2Rpc2FibGVf ZG93bmxvYWRfYnRuOiBmdW5jdGlvbihpc19zYXZlX3Jlc3VsdHNfdG9fZmlsZV9kaXNhYmxlZCkg eworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIHNlbGYuaXNfc2F2ZV9yZXN1bHRz X3RvX2ZpbGVfZGlzYWJsZWQgPSBpc19zYXZlX3Jlc3VsdHNfdG9fZmlsZV9kaXNhYmxlZDsKKyAg ICAgICAgJCgnI2J0bi1zYXZlLXJlc3VsdHMtdG8tZmlsZScpLnByb3AoJ2Rpc2FibGVkJywgaXNf c2F2ZV9yZXN1bHRzX3RvX2ZpbGVfZGlzYWJsZWQpOworICAgICAgfSwKKwogICAgICAgcm93c190 b19kZWxldGU6IGZ1bmN0aW9uKGRhdGEpIHsKICAgICAgICAgbGV0IHNlbGYgPSB0aGlzOwogICAg ICAgICBsZXQgdG1wX2tleXMgPSBzZWxmLnByaW1hcnlfa2V5czsKQEAgLTQzNzMsMTAgKzQzODQs OSBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgICAgIH0KICAgICAgICAg ICAgIHNlbGYuZGlzYWJsZV90b29sX2J1dHRvbnMoZmFsc2UpOwogICAgICAgICAgICAgaXNfcXVl cnlfcnVubmluZyA9IGZhbHNlOwotICAgICAgICAgICAgaWYoIV8uaXNVbmRlZmluZWQoc2VsZi5k b3dubG9hZF9jc3Zfb2JqKSkgewotICAgICAgICAgICAgICBzZWxmLmRvd25sb2FkX2Nzdl9vYmou YWJvcnQoKTsKKyAgICAgICAgICAgIGlmKCFfLmlzVW5kZWZpbmVkKHNlbGYuZG93bmxvYWRfcmVz dWx0c19vYmopKSB7CisgICAgICAgICAgICAgIHNlbGYuZG93bmxvYWRfcmVzdWx0c19vYmouYWJv cnQoKTsKICAgICAgICAgICAgICAgJCgnI2J0bi1mbGFzaCcpLnByb3AoJ2Rpc2FibGVkJywgZmFs c2UpOwotICAgICAgICAgICAgICAkKCcjYnRuLWRvd25sb2FkJykucHJvcCgnZGlzYWJsZWQnLCBm YWxzZSk7CiAgICAgICAgICAgICAgIHNlbGYudHJpZ2dlcigKICAgICAgICAgICAgICAgICAncGdh ZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1pY29uOmhpZGUnKTsKICAgICAgICAgICAgIH0KQEAgLTQz OTQsMjUgKzQ0MDQsMjUgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICB9LAog CiAgICAgICAvLyBUcmlnZ2VyIHF1ZXJ5IHJlc3VsdCBkb3dubG9hZCB0byBjc3YuCi0gICAgICB0 cmlnZ2VyX2Nzdl9kb3dubG9hZDogZnVuY3Rpb24ocXVlcnksIGZpbGVuYW1lKSB7CisgICAgICB0 cmlnZ2VyX2Nzdl9kb3dubG9hZDogZnVuY3Rpb24oZmlsZW5hbWUpIHsKICAgICAgICAgdmFyIHNl bGYgPSB0aGlzLAogICAgICAgICAgIHVybCA9IHVybF9mb3IoJ3NxbGVkaXRvci5xdWVyeV90b29s X2Rvd25sb2FkJywgewogICAgICAgICAgICAgJ3RyYW5zX2lkJzogc2VsZi50cmFuc0lkLAogICAg ICAgICAgIH0pLAotICAgICAgICAgIGRhdGEgPSB7IHF1ZXJ5OiBxdWVyeSwgZmlsZW5hbWU6IGZp bGVuYW1lIH07CisgICAgICAgICAgZGF0YSA9IHsgZmlsZW5hbWU6IGZpbGVuYW1lIH07CiAKICAg ICAgICAgLy8gRGlzYWJsZSB0aGUgRXhlY3V0ZSBidXR0b24KICAgICAgICAgJCgnI2J0bi1mbGFz aCcpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7Ci0gICAgICAgICQoJyNidG4tZG93bmxvYWQnKS5w cm9wKCdkaXNhYmxlZCcsIHRydWUpOworICAgICAgICBzZWxmLmVuYWJsZV9kaXNhYmxlX2Rvd25s b2FkX2J0bih0cnVlKTsKICAgICAgICAgc2VsZi5kaXNhYmxlX3Rvb2xfYnV0dG9ucyh0cnVlKTsK ICAgICAgICAgc2VsZi5zZXRfc3FsX21lc3NhZ2UoJycpOwogICAgICAgICBzZWxmLnRyaWdnZXIo CiAgICAgICAgICAgJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpzaG93JywKLSAgICAg ICAgICBnZXR0ZXh0KCdEb3dubG9hZGluZyBDU1YuLi4nKQorICAgICAgICAgIGdldHRleHQoJ0Rv d25sb2FkaW5nIFJlc3VsdHMuLi4nKQogICAgICAgICApOwogCiAgICAgICAgIC8vIEdldCB0aGUg Q1NWIGZpbGUKLSAgICAgICAgc2VsZi5kb3dubG9hZF9jc3Zfb2JqID0gJC5hamF4KHsKKyAgICAg ICAgc2VsZi5kb3dubG9hZF9yZXN1bHRzX29iaiA9ICQuYWpheCh7CiAgICAgICAgICAgdHlwZTog J1BPU1QnLAogICAgICAgICAgIHVybDogdXJsLAogICAgICAgICAgIGRhdGE6IGRhdGEsCkBAIC00 NDQzLDE5ICs0NDUzLDE5IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICAg ICAgfQogCiAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspOwotICAg ICAgICAgICAgc2VsZi5kb3dubG9hZF9jc3Zfb2JqID0gdW5kZWZpbmVkOworICAgICAgICAgICAg c2VsZi5kb3dubG9hZF9yZXN1bHRzX29iaiA9IHVuZGVmaW5lZDsKICAgICAgICAgICB9CiAKICAg ICAgICAgICAvLyBFbmFibGUgdGhlIGV4ZWN1dGUgYnV0dG9uCiAgICAgICAgICAgJCgnI2J0bi1m bGFzaCcpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpOwotICAgICAgICAgICQoJyNidG4tZG93bmxv YWQnKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKKyAgICAgICAgICBzZWxmLmVuYWJsZV9kaXNh YmxlX2Rvd25sb2FkX2J0bihmYWxzZSk7CiAgICAgICAgICAgc2VsZi5kaXNhYmxlX3Rvb2xfYnV0 dG9ucyhmYWxzZSk7CiAgICAgICAgICAgc2VsZi50cmlnZ2VyKCdwZ2FkbWluLXNxbGVkaXRvcjps b2FkaW5nLWljb246aGlkZScpOwogICAgICAgICB9KS5mYWlsKGZ1bmN0aW9uKGVycikgewogICAg ICAgICAgIGxldCBtc2cgPSAnJzsKICAgICAgICAgICAvLyBFbmFibGUgdGhlIGV4ZWN1dGUgYnV0 dG9uCiAgICAgICAgICAgJCgnI2J0bi1mbGFzaCcpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpOwot ICAgICAgICAgICQoJyNidG4tZG93bmxvYWQnKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKKyAg ICAgICAgICBzZWxmLmVuYWJsZV9kaXNhYmxlX2Rvd25sb2FkX2J0bihmYWxzZSk7CiAgICAgICAg ICAgc2VsZi5kaXNhYmxlX3Rvb2xfYnV0dG9ucyhmYWxzZSk7CiAgICAgICAgICAgc2VsZi50cmln Z2VyKCdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOwogCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVzdHMvdGVzdF9kb3dubG9hZF9jc3ZfcXVl cnlfdG9vbC5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0cy90ZXN0X2Rvd25s b2FkX2Nzdl9xdWVyeV90b29sLnB5CmluZGV4IDM3ZWU1ZjQ3ZS4uNjFkMzY5MjY3IDEwMDY0NAot LS0gYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVzdHMvdGVzdF9kb3dubG9hZF9jc3Zf cXVlcnlfdG9vbC5weQorKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVzdHMvdGVz dF9kb3dubG9hZF9jc3ZfcXVlcnlfdG9vbC5weQpAQCAtOTYsNyArOTYsNyBAQCBjbGFzcyBUZXN0 RG93bmxvYWRDU1YoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgIF0KIAogICAgIGRlZiBzZXRVcChz ZWxmKToKLSAgICAgICAgc2VsZi5fZGJfbmFtZSA9ICdkb3dubG9hZF9jc3ZfJyArIHN0cihyYW5k b20ucmFuZGludCgxMDAwMCwgNjU1MzUpKQorICAgICAgICBzZWxmLl9kYl9uYW1lID0gJ2Rvd25s b2FkX3Jlc3VsdHNfJyArIHN0cihyYW5kb20ucmFuZGludCgxMDAwMCwgNjU1MzUpKQogICAgICAg ICBzZWxmLl9zaWQgPSBzZWxmLnNlcnZlcl9pbmZvcm1hdGlvblsnc2VydmVyX2lkJ10KIAogICAg ICAgICBzZXJ2ZXJfY29uID0gc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKHNlbGYsIHNlbGYu X3NpZCkKQEAgLTEwNSw2ICsxMDUsMjQgQEAgY2xhc3MgVGVzdERvd25sb2FkQ1NWKEJhc2VUZXN0 R2VuZXJhdG9yKToKICAgICAgICAgICAgIHNlbGYuc2VydmVyLCBzZWxmLl9kYl9uYW1lCiAgICAg ICAgICkKIAorICAgICMgVGhpcyBtZXRob2QgaXMgcmVzcG9uc2libGUgZm9yIGluaXRpYXRpbmcg cXVlcnkgaGl0IGF0IGxlYXN0IG9uY2UsCisgICAgIyBzbyB0aGF0IGRvd25sb2FkIGNzdiB3b3Jr cworICAgIGRlZiBpbml0aWF0ZV9zcWxfcXVlcnlfdG9vbChzZWxmLCB0cmFuc19pZCwgc3FsX3F1 ZXJ5KToKKworICAgICAgICAjIFRoaXMgY29kZSBpcyB0byBlbnN1cmUgdG8gY3JlYXRlIGEgYXN5 bmMgY3Vyc29yIHNvIHRoYXQgZG93bmxvYWRpbmcKKyAgICAgICAgIyBjc3YgY2FuIHdvcmsuCisg ICAgICAgICMgU3RhcnQgcXVlcnkgdG9vbCB0cmFuc2FjdGlvbgorICAgICAgICB1cmwgPSAnL3Nx bGVkaXRvci9xdWVyeV90b29sL3N0YXJ0L3swfScuZm9ybWF0KHRyYW5zX2lkKQorICAgICAgICBy ZXNwb25zZSA9IHNlbGYudGVzdGVyLnBvc3QodXJsLCBkYXRhPWpzb24uZHVtcHMoeyJzcWwiOiBz cWxfcXVlcnl9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRf dHlwZT0naHRtbC9qc29uJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0 YXR1c19jb2RlLCAyMDApCisKKyAgICAgICAgIyBRdWVyeSB0b29sIHBvbGxpbmcKKyAgICAgICAg dXJsID0gJy9zcWxlZGl0b3IvcG9sbC97MH0nLmZvcm1hdCh0cmFuc19pZCkKKyAgICAgICAgcmVz cG9uc2UgPSBzZWxmLnRlc3Rlci5nZXQodXJsKQorICAgICAgICByZXR1cm4gcmVzcG9uc2UKKwog ICAgIGRlZiBydW5UZXN0KHNlbGYpOgogCiAgICAgICAgIGRiX2NvbiA9IGRhdGFiYXNlX3V0aWxz LmNvbm5lY3RfZGF0YWJhc2Uoc2VsZiwKQEAgLTEyMSw2ICsxMzksOCBAQCBjbGFzcyBUZXN0RG93 bmxvYWRDU1YoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICAgICByZXNwb25zZSA9IHNlbGYudGVz dGVyLnBvc3QodXJsKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19j b2RlLCAyMDApCiAKKyAgICAgICAgcmVzID0gc2VsZi5pbml0aWF0ZV9zcWxfcXVlcnlfdG9vbChz ZWxmLnRyYW5zX2lkLCBzZWxmLnNxbCkKKwogICAgICAgICAjIElmIGludmFsaWQgdHggdGVzdCB0 aGVuIG1ha2UgdGhlIFR4IGlkIGludmFsaWQgc28gdGhhdCB0ZXN0cyBmYWlscwogICAgICAgICBp ZiBub3Qgc2VsZi5pc192YWxpZF90eDoKICAgICAgICAgICAgIHNlbGYudHJhbnNfaWQgPSBzZWxm LnRyYW5zX2lkICsgJzAwNycKQEAgLTEyOSw3ICsxNDksMTEgQEAgY2xhc3MgVGVzdERvd25sb2Fk Q1NWKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgdXJsID0gc2VsZi5kb253bG9hZF91cmwu Zm9ybWF0KHNlbGYudHJhbnNfaWQpCiAgICAgICAgICMgRGlzYWJsZSB0aGUgY29uc29sZSBsb2dn aW5nIGZyb20gRmxhc2sgbG9nZ2VyCiAgICAgICAgIHNlbGYuYXBwLmxvZ2dlci5kaXNhYmxlZCA9 IFRydWUKLSAgICAgICAgaWYgc2VsZi5maWxlbmFtZSBpcyBOb25lOgorICAgICAgICBpZiBub3Qg c2VsZi5pc192YWxpZCBhbmQgc2VsZi5pc192YWxpZF90eDoKKyAgICAgICAgICAgICMgV2hlbiB1 c2VyIGVudGVycyB3cm9uZyBxdWVyeSwgcG9sbCB3aWxsIHRocm93IDUwMCwgc28gZXhwZWN0aW5n CisgICAgICAgICAgICAjIDUwMCwgYXMgcG9sbCBpcyBuZXZlciBjYWxsZWQgZm9yIGEgd3Jvbmcg cXVlcnkuCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXNfY29kZSwgNTAw KQorICAgICAgICBlbGlmIHNlbGYuZmlsZW5hbWUgaXMgTm9uZToKICAgICAgICAgICAgIGlmIHNl bGYuZG93bmxvYWRfYXNfdHh0OgogICAgICAgICAgICAgICAgIHdpdGggcGF0Y2goJ3BnYWRtaW4u dG9vbHMuc3FsZWRpdG9yLmJsdWVwcmludC4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn Y3N2X2ZpZWxkX3NlcGFyYXRvci5nZXQnLCByZXR1cm5fdmFsdWU9JzsnKSwgcGF0Y2goCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRpbHMvcXVlcnlfdG9vbF9wcmVm ZXJlbmNlcy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy9xdWVyeV90b29s X3ByZWZlcmVuY2VzLnB5CmluZGV4IDRkYzY1NmFkMy4uZTc0YTVmOWM4IDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRpbHMvcXVlcnlfdG9vbF9wcmVmZXJlbmNlcy5w eQorKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRpbHMvcXVlcnlfdG9vbF9wcmVm ZXJlbmNlcy5weQpAQCAtMzc3LDggKzM3Nyw4IEBAIGRlZiByZWdpc3Rlcl9xdWVyeV90b29sX3By ZWZlcmVuY2VzKHNlbGYpOgogCiAgICAgc2VsZi5wcmVmZXJlbmNlLnJlZ2lzdGVyKAogICAgICAg ICAna2V5Ym9hcmRfc2hvcnRjdXRzJywKLSAgICAgICAgJ2Rvd25sb2FkX2NzdicsCi0gICAgICAg IGdldHRleHQoJ0Rvd25sb2FkIENTVicpLAorICAgICAgICAnZG93bmxvYWRfcmVzdWx0cycsCisg ICAgICAgIGdldHRleHQoJ0Rvd25sb2FkIFJlc3VsdHMnKSwKICAgICAgICAgJ2tleWJvYXJkc2hv cnRjdXQnLAogICAgICAgICB7CiAgICAgICAgICAgICAnYWx0JzogRmFsc2UsCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi91dGlscy9kcml2ZXIvcHN5Y29wZzIvY29ubmVjdGlvbi5weSBiL3dlYi9w Z2FkbWluL3V0aWxzL2RyaXZlci9wc3ljb3BnMi9jb25uZWN0aW9uLnB5CmluZGV4IDRmNDBlNjUy Yi4uMDAwOTAyY2M4IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi91dGlscy9kcml2ZXIvcHN5Y29w ZzIvY29ubmVjdGlvbi5weQorKysgYi93ZWIvcGdhZG1pbi91dGlscy9kcml2ZXIvcHN5Y29wZzIv Y29ubmVjdGlvbi5weQpAQCAtNzI4LDI3ICs3MjgsMzUgQEAgV0hFUkUgZGIuZGF0bmFtZSA9IGN1 cnJlbnRfZGF0YWJhc2UoKSIiIikKICAgICAgICAgaWYgc2VsZi5hc3luY18gPT0gMToKICAgICAg ICAgICAgIHNlbGYuX3dhaXQoY3VyLmNvbm5lY3Rpb24pCiAKLSAgICBkZWYgZXhlY3V0ZV9vbl9z ZXJ2ZXJfYXNfY3N2KHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVy eSwgcGFyYW1zPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0 ZWRfZXhjZXB0aW9uX21zZz1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlY29yZHM9MjAwMCk6CisgICAgZGVmIGV4ZWN1dGVfb25fc2VydmVyX2FzX2NzdihzZWxmLCBw YXJhbXM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZF9l eGNlcHRpb25fbXNnPUZhbHNlLCByZWNvcmRzPTIwMDApOgogICAgICAgICAiIiIKICAgICAgICAg VG8gZmV0Y2ggcXVlcnkgcmVzdWx0IGFuZCBnZW5lcmF0ZSBDU1Ygb3V0cHV0CiAKICAgICAgICAg QXJnczoKLSAgICAgICAgICAgIHF1ZXJ5OiBTUUwKICAgICAgICAgICAgIHBhcmFtczogQWRkaXRp b25hbCBwYXJhbWV0ZXJzCiAgICAgICAgICAgICBmb3JtYXR0ZWRfZXhjZXB0aW9uX21zZzogRm9y IGV4Y2VwdGlvbgogICAgICAgICAgICAgcmVjb3JkczogTnVtYmVyIG9mIGluaXRpYWwgcmVjb3Jk cwogICAgICAgICBSZXR1cm5zOgogICAgICAgICAgICAgR2VuZXJhdG9yIHJlc3BvbnNlCiAgICAg ICAgICIiIgotICAgICAgICBzdGF0dXMsIGN1ciA9IHNlbGYuX19jdXJzb3IoKQotICAgICAgICBz ZWxmLnJvd19jb3VudCA9IDAKKyAgICAgICAgY3VyID0gc2VsZi5fX2FzeW5jX2N1cnNvcgorICAg ICAgICBpZiBub3QgY3VyOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBzZWxmLkNVUlNPUl9O T1RfRk9VTkQKIAotICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIEZh bHNlLCBzdHIoY3VyKQotICAgICAgICBxdWVyeV9pZCA9IHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5 OTkpCisgICAgICAgIGlmIHNlbGYuY29ubi5pc2V4ZWN1dGluZygpOgorICAgICAgICAgICAgcmV0 dXJuIEZhbHNlLCBnZXR0ZXh0KAorICAgICAgICAgICAgICAgICJBc3luY2hyb25vdXMgcXVlcnkg ZXhlY3V0aW9uL29wZXJhdGlvbiB1bmRlcndheS4iCisgICAgICAgICAgICApCisKKyAgICAgICAg ZW5jb2RpbmcgPSBzZWxmLnB5dGhvbl9lbmNvZGluZworICAgICAgICBxdWVyeSA9IE5vbmUKKyAg ICAgICAgdHJ5OgorICAgICAgICAgICAgcXVlcnkgPSBzdHIoY3VyLnF1ZXJ5LCBlbmNvZGluZykg XAorICAgICAgICAgICAgICAgIGlmIGN1ciBhbmQgY3VyLnF1ZXJ5IGlzIG5vdCBOb25lIGVsc2Ug Tm9uZQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgY3VycmVudF9hcHAu bG9nZ2VyLndhcm5pbmcoJ0Vycm9yIGVuY29kaW5nIHF1ZXJ5JykKKyAgICAgICAgICAgIHBhc3MK IAogICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIubG9nKAogICAgICAgICAgICAgMjUsCkBAIC03 NTcsMTMgKzc2NSwxNCBAQCBXSEVSRSBkYi5kYXRuYW1lID0gY3VycmVudF9kYXRhYmFzZSgpIiIi KQogICAgICAgICAgICAgICAgIHNlcnZlcl9pZD1zZWxmLm1hbmFnZXIuc2lkLAogICAgICAgICAg ICAgICAgIGNvbm5faWQ9c2VsZi5jb25uX2lkLAogICAgICAgICAgICAgICAgIHF1ZXJ5PXF1ZXJ5 LAotICAgICAgICAgICAgICAgIHF1ZXJ5X2lkPXF1ZXJ5X2lkCisgICAgICAgICAgICAgICAgcXVl cnlfaWQ9c2VsZi5fX2FzeW5jX3F1ZXJ5X2lkCiAgICAgICAgICAgICApCiAgICAgICAgICkKICAg ICAgICAgdHJ5OgogICAgICAgICAgICAgIyBVbnJlZ2lzdGVyaW5nIHR5cGUgY2FzdGluZyBmb3Ig bGFyZ2Ugc2l6ZSBkYXRhIHR5cGVzLgogICAgICAgICAgICAgdW5yZWdpc3Rlcl9udW1lcmljX3R5 cGVjYXN0ZXJzKHNlbGYuY29ubikKLSAgICAgICAgICAgIHNlbGYuX19pbnRlcm5hbF9ibG9ja2lu Z19leGVjdXRlKGN1ciwgcXVlcnksIHBhcmFtcykKKyAgICAgICAgICAgIGlmIHNlbGYuYXN5bmNf ID09IDE6CisgICAgICAgICAgICAgICAgc2VsZi5fd2FpdChjdXIuY29ubmVjdGlvbikKICAgICAg ICAgZXhjZXB0IHBzeWNvcGcyLkVycm9yIGFzIHBlOgogICAgICAgICAgICAgY3VyLmNsb3NlKCkK ICAgICAgICAgICAgIGVycm1zZyA9IHNlbGYuX2Zvcm1hdHRlZF9leGNlcHRpb25fbXNnKHBlLCBm b3JtYXR0ZWRfZXhjZXB0aW9uX21zZykKQEAgLTc3NSw3ICs3ODQsNyBAQCBXSEVSRSBkYi5kYXRu YW1lID0gY3VycmVudF9kYXRhYmFzZSgpIiIiKQogICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJf aWQ9c2VsZi5tYW5hZ2VyLnNpZCwKICAgICAgICAgICAgICAgICAgICAgY29ubl9pZD1zZWxmLmNv bm5faWQsCiAgICAgICAgICAgICAgICAgICAgIGVycm1zZz1lcnJtc2csCi0gICAgICAgICAgICAg ICAgICAgIHF1ZXJ5X2lkPXF1ZXJ5X2lkCisgICAgICAgICAgICAgICAgICAgIHF1ZXJ5X2lkPXNl bGYuX19hc3luY19xdWVyeV9pZAogICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICkKICAg ICAgICAgICAgIHJldHVybiBGYWxzZSwgZXJybXNnCkBAIC04MDksMTMgKzgxOCwxMiBAQCBXSEVS RSBkYi5kYXRuYW1lID0gY3VycmVudF9kYXRhYmFzZSgpIiIiKQogCiAgICAgICAgICAgICByZXR1 cm4gcmVzdWx0cwogCi0gICAgICAgIGRlZiBnZW4ocXVvdGU9J3N0cmluZ3MnLCBxdW90ZV9jaGFy PSInIiwgZmllbGRfc2VwYXJhdG9yPScsJywKLSAgICAgICAgICAgICAgICByZXBsYWNlX251bGxz X3dpdGg9Tm9uZSk6CisgICAgICAgIGRlZiBnZW4odHJhbnNfb2JqLCBxdW90ZT0nc3RyaW5ncycs IHF1b3RlX2NoYXI9IiciLAorICAgICAgICAgICAgICAgIGZpZWxkX3NlcGFyYXRvcj0nLCcsIHJl cGxhY2VfbnVsbHNfd2l0aD1Ob25lKToKIAorICAgICAgICAgICAgY3VyLnNjcm9sbCgwLCBtb2Rl PSdhYnNvbHV0ZScpCiAgICAgICAgICAgICByZXN1bHRzID0gY3VyLmZldGNobWFueShyZWNvcmRz KQogICAgICAgICAgICAgaWYgbm90IHJlc3VsdHM6Ci0gICAgICAgICAgICAgICAgaWYgbm90IGN1 ci5jbG9zZWQ6Ci0gICAgICAgICAgICAgICAgICAgIGN1ci5jbG9zZSgpCiAgICAgICAgICAgICAg ICAgeWllbGQgZ2V0dGV4dCgnVGhlIHF1ZXJ5IGV4ZWN1dGVkIGRpZCBub3QgcmV0dXJuIGFueSBk YXRhLicpCiAgICAgICAgICAgICAgICAgcmV0dXJuCiAKQEAgLTg1Nyw4ICs4NjUsNiBAQCBXSEVS RSBkYi5kYXRuYW1lID0gY3VycmVudF9kYXRhYmFzZSgpIiIiKQogICAgICAgICAgICAgICAgIHJl c3VsdHMgPSBjdXIuZmV0Y2htYW55KHJlY29yZHMpCiAKICAgICAgICAgICAgICAgICBpZiBub3Qg cmVzdWx0czoKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGN1ci5jbG9zZWQ6Ci0gICAgICAg ICAgICAgICAgICAgICAgICBjdXIuY2xvc2UoKQogICAgICAgICAgICAgICAgICAgICBicmVhawog ICAgICAgICAgICAgICAgIHJlc19pbyA9IFN0cmluZ0lPKCkKIApAQCAtODc0LDYgKzg4MCwxNyBA QCBXSEVSRSBkYi5kYXRuYW1lID0gY3VycmVudF9kYXRhYmFzZSgpIiIiKQogICAgICAgICAgICAg ICAgICAgICByZXN1bHRzID0gaGFuZGxlX251bGxfdmFsdWVzKHJlc3VsdHMsIHJlcGxhY2VfbnVs bHNfd2l0aCkKICAgICAgICAgICAgICAgICBjc3Zfd3JpdGVyLndyaXRlcm93cyhyZXN1bHRzKQog ICAgICAgICAgICAgICAgIHlpZWxkIHJlc19pby5nZXR2YWx1ZSgpCisKKyAgICAgICAgICAgIHRy eToKKyAgICAgICAgICAgICAgICAjIHRyeSB0byByZXNldCB0aGUgY3Vyc29yIHNjcm9sbCBiYWNr IHRvIHdoZXJlIGl0IHdhcywKKyAgICAgICAgICAgICAgICAjIGJ5cGFzcyBlcnJvciwgaWYgY2Fu bm90IHNjcm9sbCBiYWNrCisgICAgICAgICAgICAgICAgcm93c19mZXRjaGVkX2Zyb20gPSB0cmFu c19vYmouZ2V0X2ZldGNoZWRfcm93X2NudCgpCisgICAgICAgICAgICAgICAgY3VyLnNjcm9sbChy b3dzX2ZldGNoZWRfZnJvbSwgbW9kZT0nYWJzb2x1dGUnKQorICAgICAgICAgICAgZXhjZXB0IHBz eWNvcGcyLkVycm9yOgorICAgICAgICAgICAgICAgICMgYnlwYXNzaW5nIHRoZSBlcnJvciBhcyBj dXJzb3IgdHJpZWQgdG8gc2Nyb2xsIG9uIHRoZQorICAgICAgICAgICAgICAgICMgc3BlY2lmaWVk IHBvc2l0aW9uLCBidXQgZW5kIG9mIHJlY29yZHMgZm91bmQKKyAgICAgICAgICAgICAgICBwYXNz CisKICAgICAgICAgIyBSZWdpc3RlcmluZyBiYWNrIHR5cGUgY2FzdGVyIGZvciBsYXJnZSBzaXpl IGRhdGEgdHlwZXMgdG8gc3RyaW5nCiAgICAgICAgICMgd2hpY2ggd2FzIHVucmVnaXN0ZXJlZCBh dCBzdGFydGluZwogICAgICAgICByZWdpc3Rlcl9zdHJpbmdfdHlwZWNhc3RlcnMoc2VsZi5jb25u KQpAQCAtMTIyNCw2ICsxMjQxLDcgQEAgV0hFUkUgZGIuZGF0bmFtZSA9IGN1cnJlbnRfZGF0YWJh c2UoKSIiIikKICAgICAgICAgQXJnczoKICAgICAgICAgICByZWNvcmRzOiBubyBvZiByZWNvcmRz IHRvIGZldGNoLiB1c2UgLTEgdG8gZmV0Y2hhbGwuCiAgICAgICAgICAgZm9ybWF0dGVkX2V4Y2Vw dGlvbl9tc2c6CisgICAgICAgICAgZm9yX2Rvd25sb2FkOiBpZiBUcnVlLCB3aWxsIGZldGNoIGFs bCByZWNvcmRzIGFuZCByZXNldCB0aGUgY3Vyc29yCiAKICAgICAgICAgUmV0dXJuczoKIApkaWZm IC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvY2FsbF9yZW5kZXJf YWZ0ZXJfcG9sbF9zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3Iv Y2FsbF9yZW5kZXJfYWZ0ZXJfcG9sbF9zcGVjLmpzCmluZGV4IDE4YWVjZWFjMC4uYzdiMjE4NmE4 IDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvci9jYWxsX3Jl bmRlcl9hZnRlcl9wb2xsX3NwZWMuanMKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9z cWxlZGl0b3IvY2FsbF9yZW5kZXJfYWZ0ZXJfcG9sbF9zcGVjLmpzCkBAIC0yNCw2ICsyNCw3IEBA IGRlc2NyaWJlKCcjY2FsbFJlbmRlckFmdGVyUG9sbCcsICgpID0+IHsKICAgICAgIGRpc2FibGVf dG9vbF9idXR0b25zOiBqYXNtaW5lLmNyZWF0ZVNweSgnU1FMRWRpdG9yLmRpc2FibGVfdG9vbF9i dXR0b25zJyksCiAgICAgICBkaXNhYmxlX3RyYW5zYWN0aW9uX2J1dHRvbnM6IGphc21pbmUuY3Jl YXRlU3B5KCdTUUxFZGl0b3IuZGlzYWJsZV90cmFuc2FjdGlvbl9idXR0b25zJyksCiAgICAgICBy ZXNldF9kYXRhX3N0b3JlOiBqYXNtaW5lLmNyZWF0ZVNweSgnU1FMRWRpdG9yLnJlc2V0X2RhdGFf c3RvcmUnKSwKKyAgICAgIGVuYWJsZV9kaXNhYmxlX2Rvd25sb2FkX2J0bjogamFzbWluZS5jcmVh dGVTcHkoJ1NRTEVkaXRvci5lbmFibGVfZGlzYWJsZV9kb3dubG9hZF9idG4nKSwKICAgICAgIHF1 ZXJ5X3N0YXJ0X3RpbWU6IG5ldyBEYXRlKCksCiAgICAgfTsKICAgICBhbGVydGlmeSA9IGphc21p bmUuY3JlYXRlU3B5T2JqKCdhbGVydGlmeScsIFsnc3VjY2VzcyddKTsKQEAgLTExNSw2ICsxMTYs MTQgQEAgZGVzY3JpYmUoJyNjYWxsUmVuZGVyQWZ0ZXJQb2xsJywgKCkgPT4gewogICAgICAgICAg ICk7CiAgICAgICAgIH0pOwogICAgICAgfSk7CisKKyAgICAgIGl0KCdkaXNhYmxlcyB0aGUgc2F2 ZSByZXN1bHRzIGJ1dHRvbicsICgpID0+IHsKKyAgICAgICAgY2FsbFJlbmRlckFmdGVyUG9sbChz cWxFZGl0b3JTcHksIGFsZXJ0aWZ5LCBxdWVyeVJlc3VsdCk7CisKKyAgICAgICAgZXhwZWN0KHNx bEVkaXRvclNweS5lbmFibGVfZGlzYWJsZV9kb3dubG9hZF9idG4pLnRvSGF2ZUJlZW5DYWxsZWRX aXRoKHRydWUpOworCisgICAgICAgIGV4cGVjdChzcWxFZGl0b3JTcHkudHJpZ2dlcikudG9IYXZl QmVlbkNhbGxlZFdpdGgoJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpoaWRlJyk7Cisg ICAgICB9KTsKICAgICB9KTsKICAgfSk7CiAKQEAgLTIxMiw2ICsyMjEsMTQgQEAgZGVzY3JpYmUo JyNjYWxsUmVuZGVyQWZ0ZXJQb2xsJywgKCkgPT4gewogICAgICAgICAgICk7CiAgICAgICAgIH0p OwogICAgICAgfSk7CisKKyAgICAgIGl0KCdkaXNhYmxlcyB0aGUgc2F2ZSByZXN1bHRzIGJ1dHRv bicsICgpID0+IHsKKyAgICAgICAgY2FsbFJlbmRlckFmdGVyUG9sbChzcWxFZGl0b3JTcHksIGFs ZXJ0aWZ5LCBxdWVyeVJlc3VsdCk7CisKKyAgICAgICAgZXhwZWN0KHNxbEVkaXRvclNweS5lbmFi bGVfZGlzYWJsZV9kb3dubG9hZF9idG4pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHRydWUpOworCisg ICAgICAgIGV4cGVjdChzcWxFZGl0b3JTcHkudHJpZ2dlcikudG9IYXZlQmVlbkNhbGxlZFdpdGgo J3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpoaWRlJyk7CisgICAgICB9KTsKICAgICB9 KTsKICAgfSk7CiB9KTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3Fs ZWRpdG9yL2V4ZWN1dGVfcXVlcnlfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQv c3FsZWRpdG9yL2V4ZWN1dGVfcXVlcnlfc3BlYy5qcwppbmRleCBkZDM3MzQyYzkuLmM1NjFiYjYx MCAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvZXhlY3V0 ZV9xdWVyeV9zcGVjLmpzCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9y L2V4ZWN1dGVfcXVlcnlfc3BlYy5qcwpAQCAtNDUsNiArNDUsNyBAQCBkZXNjcmliZSgnRXhlY3V0 ZVF1ZXJ5JywgKCkgPT4gewogICAgICAgJ2hhbmRsZV9jb25uZWN0aW9uX2xvc3QnLAogICAgICAg J3VwZGF0ZV9ub3RpZmljYXRpb25zJywKICAgICAgICdkaXNhYmxlX3RyYW5zYWN0aW9uX2J1dHRv bnMnLAorICAgICAgJ2VuYWJsZV9kaXNhYmxlX2Rvd25sb2FkX2J0bicsCiAgICAgXSk7CiAgICAg c3FsRWRpdG9yTW9jay50cmFuc0lkID0gMTIzOwogICAgIHNxbEVkaXRvck1vY2sucm93c19hZmZl Y3RlZCA9IDEwMDA7CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVk aXRvci9rZXlib2FyZF9zaG9ydGN1dHNfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3Jp cHQvc3FsZWRpdG9yL2tleWJvYXJkX3Nob3J0Y3V0c19zcGVjLmpzCmluZGV4IDA0MzY1YmY0OC4u MzU4YTcxMTZjIDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRv ci9rZXlib2FyZF9zaG9ydGN1dHNfc3BlYy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2Ny aXB0L3NxbGVkaXRvci9rZXlib2FyZF9zaG9ydGN1dHNfc3BlYy5qcwpAQCAtNzEsNyArNzEsNyBA QCBkZXNjcmliZSgndGhlIGtleWJvYXJkIHNob3J0Y3V0cycsICgpID0+IHsKICAgICAgICAgICBr ZXlfY29kZTogRjdfS0VZLAogICAgICAgICB9LAogICAgICAgfSwKLSAgICAgIGRvd25sb2FkX2Nz djogeworICAgICAgZG93bmxvYWRfcmVzdWx0czogewogICAgICAgICBhbHQ6IGZhbHNlLAogICAg ICAgICBzaGlmdDogZmFsc2UsCiAgICAgICAgIGNvbnRyb2w6IGZhbHNlLApkaWZmIC0tZ2l0IGEv d2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvcXVlcnlfdG9vbF9hY3Rpb25zX3Nw ZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvci9xdWVyeV90b29sX2Fj dGlvbnNfc3BlYy5qcwppbmRleCAxNTAyMWM0NjMuLjY2MDg3YmJkMyAxMDA2NDQKLS0tIGEvd2Vi L3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvcXVlcnlfdG9vbF9hY3Rpb25zX3NwZWMu anMKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvcXVlcnlfdG9vbF9h Y3Rpb25zX3NwZWMuanMKQEAgLTI3Nyw3ICsyNzcsNyBAQCBkZXNjcmliZSgncXVlcnlUb29sQWN0 aW9ucycsICgpID0+IHsKICAgICAgIGl0KCdkb2VzIG5vdGhpbmcnLCAoKSA9PiB7CiAgICAgICAg IHF1ZXJ5VG9vbEFjdGlvbnMuZG93bmxvYWQoc3FsRWRpdG9yQ29udHJvbGxlcik7CiAKLSAgICAg ICAgZXhwZWN0KHNxbEVkaXRvckNvbnRyb2xsZXIudHJpZ2dlcl9jc3ZfZG93bmxvYWQpLm5vdC50 b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgICAgIGV4cGVjdChzcWxFZGl0b3JDb250cm9sbGVyLnRy aWdnZXJfY3N2X2Rvd25sb2FkKS50b0hhdmVCZWVuQ2FsbGVkKCk7CiAgICAgICB9KTsKICAgICB9 KTsKIApAQCAtMjk4LDIxICsyOTgsMjEgQEAgZGVzY3JpYmUoJ3F1ZXJ5VG9vbEFjdGlvbnMnLCAo KSA9PiB7CiAgICAgICAgICAgfSkpOwogICAgICAgICB9KTsKIAotICAgICAgICBpdCgnY2FsbHMg dHJpZ2dlcl9jc3ZfZG93bmxvYWQgd2l0aCB0aGUgcXVlcnkgYW5kIHRoZSBmaWxlbmFtZSB3aXRo IC5jc3YgZXh0ZW5zaW9uJywgKCkgPT4geworICAgICAgICBpdCgnY2FsbHMgdHJpZ2dlcl9jc3Zf ZG93bmxvYWQgd2l0aCBmaWxlbmFtZSBoYXZpbmcgLmNzdiBleHRlbnNpb24nLCAoKSA9PiB7CiAg ICAgICAgICAgbGV0IGZpbGVuYW1lID0gJ2RhdGEtJyArIHRpbWUgKyAnLmNzdic7CiAKICAgICAg ICAgICBxdWVyeVRvb2xBY3Rpb25zLmRvd25sb2FkKHNxbEVkaXRvckNvbnRyb2xsZXIpOwogCi0g ICAgICAgICAgZXhwZWN0KHNxbEVkaXRvckNvbnRyb2xsZXIudHJpZ2dlcl9jc3ZfZG93bmxvYWQp LnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHNlbGVjdGVkUXVlcnlTdHJpbmcsIGZpbGVuYW1lKTsKKyAg ICAgICAgICBleHBlY3Qoc3FsRWRpdG9yQ29udHJvbGxlci50cmlnZ2VyX2Nzdl9kb3dubG9hZCku dG9IYXZlQmVlbkNhbGxlZFdpdGgoZmlsZW5hbWUpOwogICAgICAgICB9KTsKIAotICAgICAgICBp dCgnY2FsbHMgdHJpZ2dlcl9jc3ZfZG93bmxvYWQgd2l0aCB0aGUgcXVlcnkgYW5kIHRoZSBmaWxl bmFtZSB3aXRoIC50eHQgZXh0ZW5zaW9uJywgKCkgPT4geworICAgICAgICBpdCgnY2FsbHMgdHJp Z2dlcl9jc3ZfZG93bmxvYWQgZmlsZW5hbWUgaGF2aW5nIC50eHQgZXh0ZW5zaW9uJywgKCkgPT4g ewogICAgICAgICAgIHNxbEVkaXRvckNvbnRyb2xsZXIucHJlZmVyZW5jZXMuY3N2X2ZpZWxkX3Nl cGFyYXRvciA9ICc7JzsKICAgICAgICAgICBsZXQgZmlsZW5hbWUgPSAnZGF0YS0nICsgdGltZSAr ICcudHh0JzsKIAogICAgICAgICAgIHF1ZXJ5VG9vbEFjdGlvbnMuZG93bmxvYWQoc3FsRWRpdG9y Q29udHJvbGxlcik7CiAKLSAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yQ29udHJvbGxlci50cmln Z2VyX2Nzdl9kb3dubG9hZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoc2VsZWN0ZWRRdWVyeVN0cmlu ZywgZmlsZW5hbWUpOworICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JDb250cm9sbGVyLnRyaWdn ZXJfY3N2X2Rvd25sb2FkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChmaWxlbmFtZSk7CiAgICAgICAg IH0pOwogICAgICAgfSk7CiAKQEAgLTMzMywxMiArMzMzLDEyIEBAIGRlc2NyaWJlKCdxdWVyeVRv b2xBY3Rpb25zJywgKCkgPT4gewogICAgICAgICAgIH0pKTsKICAgICAgICAgfSk7CiAKLSAgICAg ICAgaXQoJ2NhbGxzIHRyaWdnZXJfY3N2X2Rvd25sb2FkIHdpdGggdGhlIHF1ZXJ5IGFuZCB0aGUg ZmlsZW5hbWUnLCAoKSA9PiB7CisgICAgICAgIGl0KCdjYWxscyB0cmlnZ2VyX2Nzdl9kb3dubG9h ZCB3aXRoIGZpbGVuYW1lJywgKCkgPT4gewogICAgICAgICAgIGxldCBmaWxlbmFtZSA9ICdkYXRh LScgKyB0aW1lICsgJy5jc3YnOwogCiAgICAgICAgICAgcXVlcnlUb29sQWN0aW9ucy5kb3dubG9h ZChzcWxFZGl0b3JDb250cm9sbGVyKTsKIAotICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JDb250 cm9sbGVyLnRyaWdnZXJfY3N2X2Rvd25sb2FkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChlbnRpcmVR dWVyeVN0cmluZywgZmlsZW5hbWUpOworICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JDb250cm9s bGVyLnRyaWdnZXJfY3N2X2Rvd25sb2FkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChmaWxlbmFtZSk7 CiAgICAgICAgIH0pOwogICAgICAgfSk7CiAgICAgfSk7CkBAIC0zNTEsNyArMzUxLDcgQEAgZGVz Y3JpYmUoJ3F1ZXJ5VG9vbEFjdGlvbnMnLCAoKSA9PiB7CiAKICAgICAgICAgcXVlcnlUb29sQWN0 aW9ucy5kb3dubG9hZChzcWxFZGl0b3JDb250cm9sbGVyKTsKIAotICAgICAgICBleHBlY3Qoc3Fs RWRpdG9yQ29udHJvbGxlci50cmlnZ2VyX2Nzdl9kb3dubG9hZCkudG9IYXZlQmVlbkNhbGxlZFdp dGgocXVlcnksICdpQW1BVGFibGUnICsgJy5jc3YnKTsKKyAgICAgICAgZXhwZWN0KHNxbEVkaXRv ckNvbnRyb2xsZXIudHJpZ2dlcl9jc3ZfZG93bmxvYWQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdp QW1BVGFibGUnICsgJy5jc3YnKTsKICAgICAgIH0pOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS93 ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvci9xdWVyeV90b29sX3ByZWZlcmVuY2Vz LmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvcXVlcnlfdG9vbF9wcmVm ZXJlbmNlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLmEzNjMyOGJk ZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9y L3F1ZXJ5X3Rvb2xfcHJlZmVyZW5jZXMuanMKQEAgLTAsMCArMSwyNDEgQEAKKy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisv LyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEz IC0gMjAyMCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBp cyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1w b3J0IHtzaG9ydGN1dF9rZXksIHNob3J0Y3V0X2FjY2Vzc2tleV90aXRsZSwgc2hvcnRjdXRfdGl0 bGV9CisgIGZyb20gJ3NvdXJjZXMva2V5Ym9hcmRfc2hvcnRjdXRzJzsKK2ltcG9ydCAqIGFzIFNx bEVkaXRvclV0aWxzIGZyb20gJ3NvdXJjZXMvc3FsZWRpdG9yX3V0aWxzJzsKK2ltcG9ydCAkIGZy b20gJ2pxdWVyeSc7CitpbXBvcnQgZ2V0dGV4dCBmcm9tICdzb3VyY2VzL2dldHRleHQnOworCitm dW5jdGlvbiB1cGRhdGVVSVByZWZlcmVuY2VzKHNxbEVkaXRvcikgeworICBsZXQgJGVsID0gc3Fs RWRpdG9yLiRlbCwKKyAgICBwcmVmZXJlbmNlcyA9IHNxbEVkaXRvci5wcmVmZXJlbmNlczsKKwor ICBpZihzcWxFZGl0b3IuaGFuZGxlci5zbGlja2dyaWQpIHsKKyAgICBzcWxFZGl0b3IuaGFuZGxl ci5zbGlja2dyaWQuQ1NWT3B0aW9ucyA9IHsKKyAgICAgIHF1b3Rpbmc6IHNxbEVkaXRvci5wcmVm ZXJlbmNlcy5yZXN1bHRzX2dyaWRfcXVvdGluZywKKyAgICAgIHF1b3RlX2NoYXI6IHNxbEVkaXRv ci5wcmVmZXJlbmNlcy5yZXN1bHRzX2dyaWRfcXVvdGVfY2hhciwKKyAgICAgIGZpZWxkX3NlcGFy YXRvcjogc3FsRWRpdG9yLnByZWZlcmVuY2VzLnJlc3VsdHNfZ3JpZF9maWVsZF9zZXBhcmF0b3Is CisgICAgfTsKKyAgfQorCisgIC8qIEFjY2Vzc2VkIHVzaW5nIGFjY2Vzc2tleSBkaXJlY3Qgdy9v IGN0cmwsYXRsLHNoaWZ0ICovCisgICRlbC5maW5kKCcjYnRuLWxvYWQtZmlsZScpCisgICAgLmF0 dHIoJ3RpdGxlJywgc2hvcnRjdXRfYWNjZXNza2V5X3RpdGxlKGdldHRleHQoJ09wZW4gRmlsZScp LHByZWZlcmVuY2VzLmJ0bl9vcGVuX2ZpbGUpKQorICAgIC5hdHRyKCdhcmlhLWxhYmVsJywgc2hv cnRjdXRfYWNjZXNza2V5X3RpdGxlKGdldHRleHQoJ09wZW4gRmlsZScpLHByZWZlcmVuY2VzLmJ0 bl9vcGVuX2ZpbGUpKQorICAgIC5hdHRyKCdhY2Nlc3NrZXknLCBzaG9ydGN1dF9rZXkocHJlZmVy ZW5jZXMuYnRuX29wZW5fZmlsZSkpOworCisgICRlbC5maW5kKCcjYnRuLXNhdmUtZmlsZScpCisg ICAgLmF0dHIoJ3RpdGxlJywgc2hvcnRjdXRfYWNjZXNza2V5X3RpdGxlKGdldHRleHQoJ1NhdmUg RmlsZScpLHByZWZlcmVuY2VzLmJ0bl9zYXZlX2ZpbGUpKQorICAgIC5hdHRyKCdhcmlhLWxhYmVs Jywgc2hvcnRjdXRfYWNjZXNza2V5X3RpdGxlKGdldHRleHQoJ1NhdmUgRmlsZScpLHByZWZlcmVu Y2VzLmJ0bl9zYXZlX2ZpbGUpKQorICAgIC5hdHRyKCdhY2Nlc3NrZXknLCBzaG9ydGN1dF9rZXko cHJlZmVyZW5jZXMuYnRuX3NhdmVfZmlsZSkpOworCisgICRlbC5maW5kKCcjYnRuLWZpbmQtbWVu dS1kcm9wZG93bicpCisgICAgLmF0dHIoJ3RpdGxlJywgc2hvcnRjdXRfYWNjZXNza2V5X3RpdGxl KGdldHRleHQoJ0ZpbmQnKSxwcmVmZXJlbmNlcy5idG5fZmluZF9vcHRpb25zKSkKKyAgICAuYXR0 cignYXJpYS1sYWJlbCcsc2hvcnRjdXRfYWNjZXNza2V5X3RpdGxlKGdldHRleHQoJ0ZpbmQnKSxw cmVmZXJlbmNlcy5idG5fZmluZF9vcHRpb25zKSkKKyAgICAuYXR0cignYWNjZXNza2V5Jywgc2hv cnRjdXRfa2V5KHByZWZlcmVuY2VzLmJ0bl9maW5kX29wdGlvbnMpKTsKKworICAkZWwuZmluZCgn I2J0bi1jb3B5LXJvdycpCisgICAgLmF0dHIoJ3RpdGxlJywgc2hvcnRjdXRfYWNjZXNza2V5X3Rp dGxlKGdldHRleHQoJ0NvcHknKSxwcmVmZXJlbmNlcy5idG5fY29weV9yb3cpKQorICAgIC5hdHRy KCdhcmlhLWxhYmVsJywgc2hvcnRjdXRfYWNjZXNza2V5X3RpdGxlKGdldHRleHQoJ0NvcHknKSxw cmVmZXJlbmNlcy5idG5fY29weV9yb3cpKQorICAgIC5hdHRyKCdhY2Nlc3NrZXknLCBzaG9ydGN1 dF9rZXkocHJlZmVyZW5jZXMuYnRuX2NvcHlfcm93KSk7CisKKyAgJGVsLmZpbmQoJyNidG4tcGFz dGUtcm93JykKKyAgICAuYXR0cigndGl0bGUnLCBzaG9ydGN1dF9hY2Nlc3NrZXlfdGl0bGUoZ2V0 dGV4dCgnUGFzdGUnKSxwcmVmZXJlbmNlcy5idG5fcGFzdGVfcm93KSkKKyAgICAuYXR0cignYXJp YS1sYWJlbCcsIHNob3J0Y3V0X2FjY2Vzc2tleV90aXRsZShnZXR0ZXh0KCdQYXN0ZScpLHByZWZl cmVuY2VzLmJ0bl9wYXN0ZV9yb3cpKQorICAgIC5hdHRyKCdhY2Nlc3NrZXknLCBzaG9ydGN1dF9r ZXkocHJlZmVyZW5jZXMuYnRuX3Bhc3RlX3JvdykpOworCisgICRlbC5maW5kKCcjYnRuLWRlbGV0 ZS1yb3cnKQorICAgIC5hdHRyKCd0aXRsZScsIHNob3J0Y3V0X2FjY2Vzc2tleV90aXRsZShnZXR0 ZXh0KCdEZWxldGUnKSxwcmVmZXJlbmNlcy5idG5fZGVsZXRlX3JvdykpCisgICAgLmF0dHIoJ2Fy aWEtbGFiZWwnLCBzaG9ydGN1dF9hY2Nlc3NrZXlfdGl0bGUoZ2V0dGV4dCgnRGVsZXRlJykscHJl ZmVyZW5jZXMuYnRuX2RlbGV0ZV9yb3cpKQorICAgIC5hdHRyKCdhY2Nlc3NrZXknLCBzaG9ydGN1 dF9rZXkocHJlZmVyZW5jZXMuYnRuX2RlbGV0ZV9yb3cpKTsKKworICAkZWwuZmluZCgnI2J0bi1m aWx0ZXInKQorICAgIC5hdHRyKCd0aXRsZScsIHNob3J0Y3V0X2FjY2Vzc2tleV90aXRsZShnZXR0 ZXh0KCdGaWx0ZXInKSxwcmVmZXJlbmNlcy5idG5fZmlsdGVyX2RpYWxvZykpCisgICAgLmF0dHIo J2FyaWEtbGFiZWwnLCBzaG9ydGN1dF9hY2Nlc3NrZXlfdGl0bGUoZ2V0dGV4dCgnRmlsdGVyJyks cHJlZmVyZW5jZXMuYnRuX2ZpbHRlcl9kaWFsb2cpKQorICAgIC5hdHRyKCdhY2Nlc3NrZXknLCBz aG9ydGN1dF9rZXkocHJlZmVyZW5jZXMuYnRuX2ZpbHRlcl9kaWFsb2cpKTsKKworICAkZWwuZmlu ZCgnI2J0bi1maWx0ZXItZHJvcGRvd24nKQorICAgIC5hdHRyKCd0aXRsZScsIHNob3J0Y3V0X2Fj Y2Vzc2tleV90aXRsZShnZXR0ZXh0KCdGaWx0ZXIgb3B0aW9ucycpLHByZWZlcmVuY2VzLmJ0bl9m aWx0ZXJfb3B0aW9ucykpCisgICAgLmF0dHIoJ2FyaWEtbGFiZWwnLCBzaG9ydGN1dF9hY2Nlc3Nr ZXlfdGl0bGUoZ2V0dGV4dCgnRmlsdGVyIG9wdGlvbnMnKSxwcmVmZXJlbmNlcy5idG5fZmlsdGVy X29wdGlvbnMpKQorICAgIC5hdHRyKCdhY2Nlc3NrZXknLCBzaG9ydGN1dF9rZXkocHJlZmVyZW5j ZXMuYnRuX2ZpbHRlcl9vcHRpb25zKSk7CisKKyAgJGVsLmZpbmQoJyNidG4tcm93cy1saW1pdCcp CisgICAgLmF0dHIoJ3RpdGxlJywgc2hvcnRjdXRfYWNjZXNza2V5X3RpdGxlKGdldHRleHQoJ1Jv d3MgbGltaXQnKSxwcmVmZXJlbmNlcy5idG5fcm93c19saW1pdCkpCisgICAgLmF0dHIoJ2FyaWEt bGFiZWwnLCBzaG9ydGN1dF9hY2Nlc3NrZXlfdGl0bGUoZ2V0dGV4dCgnUm93cyBsaW1pdCcpLHBy ZWZlcmVuY2VzLmJ0bl9yb3dzX2xpbWl0KSkKKyAgICAuYXR0cignYWNjZXNza2V5Jywgc2hvcnRj dXRfa2V5KHByZWZlcmVuY2VzLmJ0bl9yb3dzX2xpbWl0KSk7CisKKyAgJGVsLmZpbmQoJyNidG4t cXVlcnktZHJvcGRvd24nKQorICAgIC5hdHRyKCd0aXRsZScsIHNob3J0Y3V0X2FjY2Vzc2tleV90 aXRsZShnZXR0ZXh0KCdFeGVjdXRlIG9wdGlvbnMnKSxwcmVmZXJlbmNlcy5idG5fZXhlY3V0ZV9v cHRpb25zKSkKKyAgICAuYXR0cignYXJpYS1sYWJlbCcsIHNob3J0Y3V0X2FjY2Vzc2tleV90aXRs ZShnZXR0ZXh0KCdFeGVjdXRlIG9wdGlvbnMnKSxwcmVmZXJlbmNlcy5idG5fZXhlY3V0ZV9vcHRp b25zKSkKKyAgICAuYXR0cignYWNjZXNza2V5Jywgc2hvcnRjdXRfa2V5KHByZWZlcmVuY2VzLmJ0 bl9leGVjdXRlX29wdGlvbnMpKTsKKworICAkZWwuZmluZCgnI2J0bi1jYW5jZWwtcXVlcnknKQor ICAgIC5hdHRyKCd0aXRsZScsIHNob3J0Y3V0X2FjY2Vzc2tleV90aXRsZShnZXR0ZXh0KCdDYW5j ZWwgcXVlcnknKSxwcmVmZXJlbmNlcy5idG5fY2FuY2VsX3F1ZXJ5KSkKKyAgICAuYXR0cignYXJp YS1sYWJlbCcsIHNob3J0Y3V0X2FjY2Vzc2tleV90aXRsZShnZXR0ZXh0KCdDYW5jZWwgcXVlcnkn KSxwcmVmZXJlbmNlcy5idG5fY2FuY2VsX3F1ZXJ5KSkKKyAgICAuYXR0cignYWNjZXNza2V5Jywg c2hvcnRjdXRfa2V5KHByZWZlcmVuY2VzLmJ0bl9jYW5jZWxfcXVlcnkpKTsKKworICAkZWwuZmlu ZCgnI2J0bi1jbGVhci1kcm9wZG93bicpCisgICAgLmF0dHIoJ3RpdGxlJywgc2hvcnRjdXRfYWNj ZXNza2V5X3RpdGxlKGdldHRleHQoJ0NsZWFyJykscHJlZmVyZW5jZXMuYnRuX2NsZWFyX29wdGlv bnMpKQorICAgIC5hdHRyKCdhcmlhLWxhYmVsJywgc2hvcnRjdXRfYWNjZXNza2V5X3RpdGxlKGdl dHRleHQoJ0NsZWFyJykscHJlZmVyZW5jZXMuYnRuX2NsZWFyX29wdGlvbnMpKQorICAgIC5hdHRy KCdhY2Nlc3NrZXknLCBzaG9ydGN1dF9rZXkocHJlZmVyZW5jZXMuYnRuX2NsZWFyX29wdGlvbnMp KTsKKworICAkZWwuZmluZCgnI2J0bi1jb25uLXN0YXR1cycpCisgICAgLmF0dHIoJ2FjY2Vzc2tl eScsIHNob3J0Y3V0X2tleShwcmVmZXJlbmNlcy5idG5fY29ubl9zdGF0dXMpKQorICAgIC5maW5k KCdpJykKKyAgICAuYXR0cigndGl0bGUnLAorICAgICAgc2hvcnRjdXRfYWNjZXNza2V5X3RpdGxl KGdldHRleHQoJ0Nvbm5lY3Rpb24gc3RhdHVzIChjbGljayBmb3IgZGV0YWlscyknKSwKKyAgICAg ICAgcHJlZmVyZW5jZXMuYnRuX2Nvbm5fc3RhdHVzKSk7CisKKyAgLyogQWNjZXNzZWQgdXNpbmcg Y3RybCxhdGwsc2hpZnQgYW5kIGtleSAqLworICAkZWwuZmluZCgnI2J0bi1mbGFzaCcpCisgICAg LmF0dHIoJ3RpdGxlJywKKyAgICAgIHNob3J0Y3V0X3RpdGxlKGdldHRleHQoJ0V4ZWN1dGUvUmVm cmVzaCcpLHByZWZlcmVuY2VzLmV4ZWN1dGVfcXVlcnkpKQorICAgIC5hdHRyKCdhcmlhLWxhYmVs JywKKyAgICAgIHNob3J0Y3V0X3RpdGxlKGdldHRleHQoJ0V4ZWN1dGUvUmVmcmVzaCcpLHByZWZl cmVuY2VzLmV4ZWN1dGVfcXVlcnkpKTsKKworICAkZWwuZmluZCgnI2J0bi1leHBsYWluJykKKyAg ICAuYXR0cigndGl0bGUnLAorICAgICAgc2hvcnRjdXRfdGl0bGUoZ2V0dGV4dCgnRXhwbGFpbicp LHByZWZlcmVuY2VzLmV4cGxhaW5fcXVlcnkpKQorICAgIC5hdHRyKCdhcmlhLWxhYmVsJywKKyAg ICAgIHNob3J0Y3V0X3RpdGxlKGdldHRleHQoJ0V4cGxhaW4nKSxwcmVmZXJlbmNlcy5leHBsYWlu X3F1ZXJ5KSk7CisKKyAgJGVsLmZpbmQoJyNidG4tZXhwbGFpbi1hbmFseXplJykKKyAgICAuYXR0 cigndGl0bGUnLAorICAgICAgc2hvcnRjdXRfdGl0bGUoZ2V0dGV4dCgnRXhwbGFpbiBBbmFseXpl JykscHJlZmVyZW5jZXMuZXhwbGFpbl9hbmFseXplX3F1ZXJ5KSkKKyAgICAuYXR0cignYXJpYS1s YWJlbCcsCisgICAgICBzaG9ydGN1dF90aXRsZShnZXR0ZXh0KCdFeHBsYWluIEFuYWx5emUnKSxw cmVmZXJlbmNlcy5leHBsYWluX2FuYWx5emVfcXVlcnkpKTsKKworICAkZWwuZmluZCgnI2J0bi1z YXZlLXJlc3VsdHMtdG8tZmlsZScpCisgICAgLmF0dHIoJ3RpdGxlJywKKyAgICAgIHNob3J0Y3V0 X3RpdGxlKGdldHRleHQoJ1NhdmUgcmVzdWx0cyB0byBmaWxlJykscHJlZmVyZW5jZXMuZG93bmxv YWRfcmVzdWx0cykpCisgICAgLmF0dHIoJ2FyaWEtbGFiZWwnLAorICAgICAgc2hvcnRjdXRfdGl0 bGUoZ2V0dGV4dCgnU2F2ZSByZXN1bHRzIHRvIGZpbGUnKSxwcmVmZXJlbmNlcy5kb3dubG9hZF9y ZXN1bHRzKSk7CisKKyAgJGVsLmZpbmQoJyNidG4tc2F2ZS1kYXRhJykKKyAgICAuYXR0cigndGl0 bGUnLAorICAgICAgc2hvcnRjdXRfdGl0bGUoZ2V0dGV4dCgnU2F2ZSBEYXRhIENoYW5nZXMnKSxw cmVmZXJlbmNlcy5zYXZlX2RhdGEpKQorICAgIC5hdHRyKCdhcmlhLWxhYmVsJywKKyAgICAgIHNo b3J0Y3V0X3RpdGxlKGdldHRleHQoJ1NhdmUgRGF0YSBDaGFuZ2VzJykscHJlZmVyZW5jZXMuc2F2 ZV9kYXRhKSk7CisKKyAgJGVsLmZpbmQoJyNidG4tY29tbWl0JykKKyAgICAuYXR0cigndGl0bGUn LAorICAgICAgc2hvcnRjdXRfdGl0bGUoZ2V0dGV4dCgnQ29tbWl0JykscHJlZmVyZW5jZXMuY29t bWl0X3RyYW5zYWN0aW9uKSkKKyAgICAuYXR0cignYXJpYS1sYWJlbCcsCisgICAgICBzaG9ydGN1 dF90aXRsZShnZXR0ZXh0KCdDb21taXQnKSxwcmVmZXJlbmNlcy5jb21taXRfdHJhbnNhY3Rpb24p KTsKKworICAkZWwuZmluZCgnI2J0bi1yb2xsYmFjaycpCisgICAgLmF0dHIoJ3RpdGxlJywKKyAg ICAgIHNob3J0Y3V0X3RpdGxlKGdldHRleHQoJ1JvbGxiYWNrJykscHJlZmVyZW5jZXMucm9sbGJh Y2tfdHJhbnNhY3Rpb24pKQorICAgIC5hdHRyKCdhcmlhLWxhYmVsJywKKyAgICAgIHNob3J0Y3V0 X3RpdGxlKGdldHRleHQoJ1JvbGxiYWNrJykscHJlZmVyZW5jZXMucm9sbGJhY2tfdHJhbnNhY3Rp b24pKTsKKworICAkZWwuZmluZCgnI2J0bi1zaG93LXF1ZXJ5LXRvb2wnKQorICAgIC5hdHRyKCd0 aXRsZScsCisgICAgICBzaG9ydGN1dF90aXRsZShnZXR0ZXh0KCdRdWVyeSB0b29sJykscHJlZmVy ZW5jZXMuc2hvd19xdWVyeV90b29sKSkKKyAgICAuYXR0cignYXJpYS1sYWJlbCcsCisgICAgICBz aG9ydGN1dF90aXRsZShnZXR0ZXh0KCdRdWVyeSB0b29sJykscHJlZmVyZW5jZXMuc2hvd19xdWVy eV90b29sKSk7CisKKyAgLyogU2V0IGV4cGxhaW4gb3B0aW9ucyBvbiBxdWVyeSBlZGl0b3IgKi8K KyAgaWYgKHByZWZlcmVuY2VzLmV4cGxhaW5fdmVyYm9zZSl7CisgICAgJGVsLmZpbmQoJy5leHBs YWluLXZlcmJvc2UnKS5yZW1vdmVDbGFzcygndmlzaWJpbGl0eS1oaWRkZW4nKTsKKyAgfQorICBl bHNlIHsKKyAgICAkZWwuZmluZCgnLmV4cGxhaW4tdmVyYm9zZScpLmFkZENsYXNzKCd2aXNpYmls aXR5LWhpZGRlbicpOworICB9CisKKyAgaWYgKHByZWZlcmVuY2VzLmV4cGxhaW5fY29zdHMpewor ICAgICRlbC5maW5kKCcuZXhwbGFpbi1jb3N0cycpLnJlbW92ZUNsYXNzKCd2aXNpYmlsaXR5LWhp ZGRlbicpOworICB9CisgIGVsc2UgeworICAgICRlbC5maW5kKCcuZXhwbGFpbi1jb3N0cycpLmFk ZENsYXNzKCd2aXNpYmlsaXR5LWhpZGRlbicpOworICB9CisKKyAgaWYgKHByZWZlcmVuY2VzLmV4 cGxhaW5fYnVmZmVycyl7CisgICAgJGVsLmZpbmQoJy5leHBsYWluLWJ1ZmZlcnMnKS5yZW1vdmVD bGFzcygndmlzaWJpbGl0eS1oaWRkZW4nKTsKKyAgfQorICBlbHNlIHsKKyAgICAkZWwuZmluZCgn LmV4cGxhaW4tYnVmZmVycycpLmFkZENsYXNzKCd2aXNpYmlsaXR5LWhpZGRlbicpOworICB9CisK KyAgaWYgKHByZWZlcmVuY2VzLmV4cGxhaW5fdGltaW5nKSB7CisgICAgJGVsLmZpbmQoJy5leHBs YWluLXRpbWluZycpLnJlbW92ZUNsYXNzKCd2aXNpYmlsaXR5LWhpZGRlbicpOworICB9CisgIGVs c2UgeworICAgICRlbC5maW5kKCcuZXhwbGFpbi10aW1pbmcnKS5hZGRDbGFzcygndmlzaWJpbGl0 eS1oaWRkZW4nKTsKKyAgfQorCisgIGlmIChwcmVmZXJlbmNlcy5leHBsYWluX3N1bW1hcnkpIHsK KyAgICAkZWwuZmluZCgnLmV4cGxhaW4tc3VtbWFyeScpLnJlbW92ZUNsYXNzKCd2aXNpYmlsaXR5 LWhpZGRlbicpOworICB9CisgIGVsc2UgeworICAgICRlbC5maW5kKCcuZXhwbGFpbi1zdW1tYXJ5 JykuYWRkQ2xhc3MoJ3Zpc2liaWxpdHktaGlkZGVuJyk7CisgIH0KKworICBpZiAocHJlZmVyZW5j ZXMuZXhwbGFpbl9zZXR0aW5ncykgeworICAgICRlbC5maW5kKCcuZXhwbGFpbi1zZXR0aW5ncycp LnJlbW92ZUNsYXNzKCd2aXNpYmlsaXR5LWhpZGRlbicpOworICB9CisgIGVsc2UgeworICAgICRl bC5maW5kKCcuZXhwbGFpbi1zZXR0aW5ncycpLmFkZENsYXNzKCd2aXNpYmlsaXR5LWhpZGRlbicp OworICB9CisKKyAgLyogQ29ubmVjdGlvbiBzdGF0dXMgY2hlY2sgKi8KKyAgLyogcmVtb3ZlIHRo ZSBzdGF0dXMgY2hlY2tlciBpZiBwcmVzZW50ICovCisgIGlmKHNxbEVkaXRvci5jb25uSW50ZXJ2 YWxJZCAhPSBudWxsKSB7CisgICAgY2xlYXJJbnRlcnZhbChzcWxFZGl0b3IuY29ubkludGVydmFs SWQpOworICAgIHNxbEVkaXRvci5jb25uSW50ZXJ2YWxJZCA9IG51bGw7CisgIH0KKyAgaWYgKHBy ZWZlcmVuY2VzLmNvbm5lY3Rpb25fc3RhdHVzKSB7CisgICAgbGV0ICRjb25uX3N0YXR1cyA9ICRl bC5maW5kKCcjYnRuLWNvbm4tc3RhdHVzJyksCisgICAgICAkc3RhdHVzX2VsID0gJGNvbm5fc3Rh dHVzLmZpbmQoJ2knKTsKKyAgICAkY29ubl9zdGF0dXMucG9wb3ZlcigpOworCisgICAgJGNvbm5f c3RhdHVzLnJlbW92ZUNsYXNzKCdjb25uZWN0aW9uLXN0YXR1cy1oaWRlJyk7CisKKyAgICAvLyBU byBzZXQgaW5pdGlhbCBjb25uZWN0aW9uCisgICAgU3FsRWRpdG9yVXRpbHMuZmV0Y2hDb25uZWN0 aW9uU3RhdHVzKHNxbEVkaXRvci5oYW5kbGVyLCAkY29ubl9zdGF0dXMsICRzdGF0dXNfZWwpOwor CisgICAgLy8gQ2FsbGluZyBpdCBhZ2FpbiBpbiBzcGVjaWZpZWQgaW50ZXJ2YWwKKyAgICBzcWxF ZGl0b3IuY29ubkludGVydmFsSWQgPSAgc2V0SW50ZXJ2YWwoCisgICAgICBTcWxFZGl0b3JVdGls cy5mZXRjaENvbm5lY3Rpb25TdGF0dXMuYmluZChudWxsLCBzcWxFZGl0b3IuaGFuZGxlciwgJGNv bm5fc3RhdHVzLCAkc3RhdHVzX2VsKSwKKyAgICAgIHByZWZlcmVuY2VzLmNvbm5lY3Rpb25fc3Rh dHVzX2ZldGNoX3RpbWUgKiAxMDAwCisgICAgKTsKKyAgfQorICBlbHNlIHsKKyAgICAkZWwuZmlu ZCgnI2J0bi1jb25uLXN0YXR1cycpLmFkZENsYXNzKCdjb25uZWN0aW9uLXN0YXR1cy1oaWRlJyk7 CisgIH0KKworICAvKiBDb2RlIE1pcnJvciBQcmVmZXJlbmNlcyAqLworICBsZXQgc3FsX2ZvbnRf c2l6ZSA9IFNxbEVkaXRvclV0aWxzLmNhbGNGb250U2l6ZShwcmVmZXJlbmNlcy5zcWxfZm9udF9z aXplKTsKKyAgJChzcWxFZGl0b3IucXVlcnlfdG9vbF9vYmouZ2V0V3JhcHBlckVsZW1lbnQoKSku Y3NzKCdmb250LXNpemUnLCBzcWxfZm9udF9zaXplKTsKKworICBpZihwcmVmZXJlbmNlcy5wbGFp bl9lZGl0b3JfbW9kZSkgeworICAgIHNxbEVkaXRvci5xdWVyeV90b29sX29iai5zZXRPcHRpb24o J21vZGUnLCAndGV4dC9wbGFpbicpOworICAgIC8qIEFsdGhvdWdoIG5vdCByZXF1aXJlZCwgc2V0 dGluZyBleHBsaWNpdGx5IGFzIGNvZGVtaXJyb3Igd2lsbCByZW1vdmUgY29kZSBmb2xkaW5nIG9u bHkgb24gbmV4dCBlZGl0ICovCisgICAgc3FsRWRpdG9yLnF1ZXJ5X3Rvb2xfb2JqLnNldE9wdGlv bignZm9sZEd1dHRlcicsIGZhbHNlKTsKKyAgfSBlbHNlIHsKKyAgICBzcWxFZGl0b3IucXVlcnlf dG9vbF9vYmouc2V0T3B0aW9uKCdtb2RlJywgc3FsRWRpdG9yLmhhbmRsZXIuc2VydmVyX3R5cGUg PT09ICdncGRiJyA/ICd0ZXh0L3gtZ3BzcWwnIDogJ3RleHQveC1wZ3NxbCcpOworICAgIHNxbEVk aXRvci5xdWVyeV90b29sX29iai5zZXRPcHRpb24oJ2ZvbGRHdXR0ZXInLCBwcmVmZXJlbmNlcy5j b2RlX2ZvbGRpbmcpOworICB9CisgIHNxbEVkaXRvci5xdWVyeV90b29sX29iai5zZXRPcHRpb24o J2ZvbGRHdXR0ZXInLCBwcmVmZXJlbmNlcy5jb2RlX2ZvbGRpbmcpOworICBzcWxFZGl0b3IucXVl cnlfdG9vbF9vYmouc2V0T3B0aW9uKCdpbmRlbnRXaXRoVGFicycsICFwcmVmZXJlbmNlcy51c2Vf c3BhY2VzKTsKKyAgc3FsRWRpdG9yLnF1ZXJ5X3Rvb2xfb2JqLnNldE9wdGlvbignaW5kZW50VW5p dCcsIHByZWZlcmVuY2VzLnRhYl9zaXplKTsKKyAgc3FsRWRpdG9yLnF1ZXJ5X3Rvb2xfb2JqLnNl dE9wdGlvbigndGFiU2l6ZScsIHByZWZlcmVuY2VzLnRhYl9zaXplKTsKKyAgc3FsRWRpdG9yLnF1 ZXJ5X3Rvb2xfb2JqLnNldE9wdGlvbignbGluZVdyYXBwaW5nJywgcHJlZmVyZW5jZXMud3JhcF9j b2RlKTsKKyAgc3FsRWRpdG9yLnF1ZXJ5X3Rvb2xfb2JqLnNldE9wdGlvbignYXV0b0Nsb3NlQnJh Y2tldHMnLCBwcmVmZXJlbmNlcy5pbnNlcnRfcGFpcl9icmFja2V0cyk7CisgIHNxbEVkaXRvci5x dWVyeV90b29sX29iai5zZXRPcHRpb24oJ21hdGNoQnJhY2tldHMnLCBwcmVmZXJlbmNlcy5icmFj ZV9tYXRjaGluZyk7CisgIHNxbEVkaXRvci5xdWVyeV90b29sX29iai5yZWZyZXNoKCk7CisKKyAg LyogUmVuZGVyIGhpc3RvcnkgdG8gcmVmbGVjdCBGb250IHNpemUgY2hhbmdlICovCisgIHNxbEVk aXRvci5oaXN0b3J5Q29tcG9uZW50LnNldEVkaXRvclByZWYoeworICAgICdzcWxfZm9udF9zaXpl JyA6IHNxbF9mb250X3NpemUsCisgIH0pOworfQorCitleHBvcnQge3VwZGF0ZVVJUHJlZmVyZW5j ZXN9Owo= --0000000000003f5abd05b61c1cc8--