Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hlTY0-0001Bc-JL for pgadmin-hackers@arkaria.postgresql.org; Thu, 11 Jul 2019 07:31:20 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1hlTXz-0006EM-9T for pgadmin-hackers@arkaria.postgresql.org; Thu, 11 Jul 2019 07:31:19 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hlS7s-0003DP-5D for pgadmin-hackers@lists.postgresql.org; Thu, 11 Jul 2019 06:00:16 +0000 Received: from mail-yb1-xb44.google.com ([2607:f8b0:4864:20::b44]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hlS7m-0005Kf-MN for pgadmin-hackers@postgresql.org; Thu, 11 Jul 2019 06:00:14 +0000 Received: by mail-yb1-xb44.google.com with SMTP id j133so1700130ybj.12 for ; Wed, 10 Jul 2019 23:00:09 -0700 (PDT) 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=dl/Rd5vyY7a4IzESxd0wSJgumaV/qEfLp+5CZjRi0UM=; b=BEELsX1XYNvTZQBdRj8iTrou0J4ffogGXi7CuKOXuKsIY5zY2cO/f53fRjWXGpSE8k qShWZf2zReeZ5N+FVr6zpZ9lzLEMpLDonjGDwpsKdqXKg8/ZHGqtfmw5idG0G/IRFlGd nPjNbceUelxJaFKmoRmYeDs2tU/11hwOfcjZx1lgyUi+JDMcQ7QUhFcB57t4PZZWVlmJ CpBBCdoC7+SZHpKPAnBqHq7EaUwz63I074bDFXYj+GJWR2X9g55HdOWZQs4Jl/ChYTv/ SZpCYEMqbgruxxTMGp24NNSp2TcHIz68MPGQfoG95zUMy8RH5b7p3EwWUBvEErpw/OGr A+Sw== 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=dl/Rd5vyY7a4IzESxd0wSJgumaV/qEfLp+5CZjRi0UM=; b=O7BtAnNj+XcaVpVjoKRV5ZL9MLyklqicIfCa1303qfBoh1/L0sEUEpyJfzAMGNR4Xt hhv6erR1SmD+2/ubfT0bnhcya+PFfvqoCqMRXln4SdsiDNe4F8E/T1od9KYwK0oNh60x NTYeY/+b+5nr3EZ3RaGEt76Iec6mEQkiM/5RVmrF2G1nu+Y3ueiOXJlrWU3qKlauPeEm hkqGJFYusCplG44sUiXAk2ec/ZvaDa3RkS24zvCxwIg+gOseWa41fCMCsk3pJKbq6A/y ZZ9QcmRV5279mgcbkNzYyK9QoaC8tw3mqoJnHmFZsl6papETd5y+qSCYUNNHefk2QIoi NjRg== X-Gm-Message-State: APjAAAUV1vv9MLCAeMaQ8oBozVRp9IC+on0CR6/f+eAUspbsEgqXpCZ0 C8XpdXBtKvRLKRZjH3F167/nf8TIp+w6n7ie6P2ScOqtoUM= X-Google-Smtp-Source: APXvYqxrZbYq7XTo1ud8QBdsVhe9jCkT6Y0CREfjXlSj1VRg1x7R8iiYSG4kOOnQBRXB28wcTUvmltwIdHwn1ykN8r4= X-Received: by 2002:a25:8706:: with SMTP id a6mr1019689ybl.38.1562824808167; Wed, 10 Jul 2019 23:00:08 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Ganesh Jaybhay Date: Thu, 11 Jul 2019 11:29:57 +0530 Message-ID: Subject: Re: [pgAdmin4][patch] Keyboard accessibility for sub-node control To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary="00000000000089aed9058d618154" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --00000000000089aed9058d618154 Content-Type: multipart/alternative; boundary="00000000000089aed6058d618152" --00000000000089aed6058d618152 Content-Type: text/plain; charset="UTF-8" Hi Dave, Ticket number 3919 refers to keyboard accessibility issues for sub-node control and back grid but this patch covers only sub-node control. Should I create new one? I have added the screenshot having newly added shortcut and updated keyboard shortcut rst file. Also moved the code changes from backgrid.js to backgrid.pgadmin.js. Please find the attached updated patch. Regards, Ganesh Jaybhay On Tue, Jul 9, 2019 at 9:28 PM Dave Page wrote: > Hi, > > What's the ticket number for this? That's a fair amount of code for a > one-line description. There are also no doc changes describing how to > navigate the sub-node control that I can see. > > Also; instead of changing the repo used for backgrid, can we not > un-vendorise it? > > On Mon, Jul 8, 2019 at 4:49 PM Ganesh Jaybhay < > ganesh.jaybhay@enterprisedb.com> wrote: > >> Hi Hackers, >> >> Attached is the patch for keyboard accessibility of sub-node control. It >> also covers sub-node dialog forward/backward tab navigation with shortcuts. >> >> Kindly review. >> >> Regards, >> Ganesh Jaybhay >> > > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > --00000000000089aed6058d618152 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Dave,

Ticket number= 3919 refers to keyboard accessibility issues for sub-node control and back= grid but this patch covers only sub-node control. Should I create new one?=
I have added the screenshot having newly added shortcut and upda= ted keyboard shortcut rst file. Also moved the code changes from backgrid.j= s to backgrid.pgadmin.js.

Please find the attached= updated patch.

Regards,
Ganesh Jaybhay<= /div>

On Tue, Jul 9, 2019 at 9:28 PM Dave Page <dpage@pgadmin.org> wrote:
Hi,

What's the ticket number for this? = That's a fair amount of code for a one-line description. There are also= no doc changes describing how to navigate the sub-node control that I can = see.

Also; instead of changing the repo used for b= ackgrid, can we not un-vendorise it?

On Mon, Jul 8, 2019 at 4:49 PM Ga= nesh Jaybhay <ganesh.jaybhay@enterprisedb.com> wrote:
Hi Hackers,

= Attached is the patch for keyboard accessibility of sub-node control. It al= so covers sub-node dialog forward/backward tab navigation with shortcuts.

Kindly review.

Regards,
Ganesh Jaybhay


--
Dave Page
Blog: http://pgsnake.blog= spot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.comThe Enterprise PostgreSQL Company
--00000000000089aed6058d618152-- --00000000000089aed9058d618154 Content-Type: application/x-patch; name="subnode_control_accessibility_v1.patch" Content-Disposition: attachment; filename="subnode_control_accessibility_v1.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jxy9efgj0 ZGlmZiAtLWdpdCBhL2RvY3MvZW5fVVMvaW1hZ2VzL3ByZWZlcmVuY2VzX2Jyb3dzZXJfa2V5Ym9h cmRfc2hvcnRjdXRzLnBuZyBiL2RvY3MvZW5fVVMvaW1hZ2VzL3ByZWZlcmVuY2VzX2Jyb3dzZXJf a2V5Ym9hcmRfc2hvcnRjdXRzLnBuZwpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0Cmlu ZGV4IGE0MDg4YTguLmIwMDQ0YjkKQmluYXJ5IGZpbGVzIGEvZG9jcy9lbl9VUy9pbWFnZXMvcHJl ZmVyZW5jZXNfYnJvd3Nlcl9rZXlib2FyZF9zaG9ydGN1dHMucG5nIGFuZCBiL2RvY3MvZW5fVVMv aW1hZ2VzL3ByZWZlcmVuY2VzX2Jyb3dzZXJfa2V5Ym9hcmRfc2hvcnRjdXRzLnBuZyBkaWZmZXIK ZGlmZiAtLWdpdCBhL2RvY3MvZW5fVVMva2V5Ym9hcmRfc2hvcnRjdXRzLnJzdCBiL2RvY3MvZW5f VVMva2V5Ym9hcmRfc2hvcnRjdXRzLnJzdAppbmRleCAzNjBlZmIzLi42ZjM3MjdkIDEwMDY0NAot LS0gYS9kb2NzL2VuX1VTL2tleWJvYXJkX3Nob3J0Y3V0cy5yc3QKKysrIGIvZG9jcy9lbl9VUy9r ZXlib2FyZF9zaG9ydGN1dHMucnN0CkBAIC02Myw2ICs2Myw4IEBAIFVzZSB0aGUgc2hvcnRjdXRz IGJlbG93IHRvIG5hdmlnYXRlIHRoZSB0YWJzZXRzIG9uIGRpYWxvZ3M6CiAgICArLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCBDb250cm9sK1NoaWZ0K10gICAgICAgICAgICB8IERp YWxvZyB0YWIgZm9yd2FyZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAg ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IENvbnRyb2wrU2hpZnQrQSAgICAg ICAgICAgIHwgQWRkIHJvdyBpbiBHcmlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogU1FMIEVkaXRvcnMK ICoqKioqKioqKioqCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3JlZ2lzdGVyX2Jy b3dzZXJfcHJlZmVyZW5jZXMucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3JlZ2lzdGVyX2Jyb3dz ZXJfcHJlZmVyZW5jZXMucHkKaW5kZXggMDA5ZjFjMS4uYmI1ZGEwNiAxMDA2NDQKLS0tIGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9yZWdpc3Rlcl9icm93c2VyX3ByZWZlcmVuY2VzLnB5CisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvcmVnaXN0ZXJfYnJvd3Nlcl9wcmVmZXJlbmNlcy5weQpAQCAtMzg3 LDMgKzM4NywxOCBAQCBkZWYgcmVnaXN0ZXJfYnJvd3Nlcl9wcmVmZXJlbmNlcyhzZWxmKToKICAg ICAgICAgY2F0ZWdvcnlfbGFiZWw9Z2V0dGV4dCgnS2V5Ym9hcmQgc2hvcnRjdXRzJyksCiAgICAg ICAgIGZpZWxkcz1maWVsZHMKICAgICApCisKKyAgICBzZWxmLnByZWZlcmVuY2UucmVnaXN0ZXIo CisgICAgICAgICdrZXlib2FyZF9zaG9ydGN1dHMnLAorICAgICAgICAnYWRkX2dyaWRfcm93JywK KyAgICAgICAgZ2V0dGV4dCgnQWRkIGdyaWQgcm93JyksCisgICAgICAgICdrZXlib2FyZHNob3J0 Y3V0JywKKyAgICAgICAgeworICAgICAgICAgICAgJ2FsdCc6IEZhbHNlLAorICAgICAgICAgICAg J3NoaWZ0JzogVHJ1ZSwKKyAgICAgICAgICAgICdjb250cm9sJzogVHJ1ZSwKKyAgICAgICAgICAg ICdrZXknOiB7J2tleV9jb2RlJzogNjUsICdjaGFyJzogJ2EnfQorICAgICAgICB9LAorICAgICAg ICBjYXRlZ29yeV9sYWJlbD1nZXR0ZXh0KCdLZXlib2FyZCBzaG9ydGN1dHMnKSwKKyAgICAgICAg ZmllbGRzPWZpZWxkcworICAgICkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3Rh dGljL2pzL2tleWJvYXJkLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMva2V5Ym9h cmQuanMKaW5kZXggOWFkNTliNi4uYjUwZDAyNSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zdGF0aWMvanMva2V5Ym9hcmQuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0 aWMvanMva2V5Ym9hcmQuanMKQEAgLTQxLDYgKzQxLDcgQEAgXy5leHRlbmQocGdCcm93c2VyLmtl eWJvYXJkTmF2aWdhdGlvbiwgewogICAgICAgICAnZGlyZWN0X2RlYnVnZ2luZyc6IGNvbW1vblV0 aWxzLnBhcnNlU2hvcnRjdXRWYWx1ZShwZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2UoJ2Jyb3dzZXIn LCAnZGlyZWN0X2RlYnVnZ2luZycpLnZhbHVlKSwKICAgICAgICAgJ2Ryb3BfbXVsdGlwbGVfb2Jq ZWN0cyc6IGNvbW1vblV0aWxzLnBhcnNlU2hvcnRjdXRWYWx1ZShwZ0Jyb3dzZXIuZ2V0X3ByZWZl cmVuY2UoJ2Jyb3dzZXInLCAnZ3JpZF9tZW51X2Ryb3BfbXVsdGlwbGUnKS52YWx1ZSksCiAgICAg ICAgICdkcm9wX2Nhc2NhZGVfbXVsdGlwbGVfb2JqZWN0cyc6IGNvbW1vblV0aWxzLnBhcnNlU2hv cnRjdXRWYWx1ZShwZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2UoJ2Jyb3dzZXInLCAnZ3JpZF9tZW51 X2Ryb3BfY2FzY2FkZV9tdWx0aXBsZScpLnZhbHVlKSwKKyAgICAgICAgJ2FkZF9ncmlkX3Jvdyc6 IGNvbW1vblV0aWxzLnBhcnNlU2hvcnRjdXRWYWx1ZShwZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2Uo J2Jyb3dzZXInLCAnYWRkX2dyaWRfcm93JykudmFsdWUpLAogCiAgICAgICB9OwogICAgICAgdGhp cy5zaG9ydGN1dE1ldGhvZHMgPSB7CkBAIC02MSw2ICs2Miw3IEBAIF8uZXh0ZW5kKHBnQnJvd3Nl ci5rZXlib2FyZE5hdmlnYXRpb24sIHsKICAgICAgICAgJ2JpbmREaXJlY3REZWJ1Z2dpbmcnOiB7 J3Nob3J0Y3V0cyc6IHRoaXMua2V5Ym9hcmRTaG9ydGN1dC5kaXJlY3RfZGVidWdnaW5nfSwgLy8g U3ViIG1lbnUgLSBEaXJlY3QgRGVidWdnaW5nCiAgICAgICAgICdiaW5kRHJvcE11bHRpcGxlT2Jq ZWN0cyc6IHsnc2hvcnRjdXRzJzogdGhpcy5rZXlib2FyZFNob3J0Y3V0LmRyb3BfbXVsdGlwbGVf b2JqZWN0c30sIC8vIEdyaWQgTWVudSBEcm9wIE11bHRpcGxlCiAgICAgICAgICdiaW5kRHJvcENh c2NhZGVNdWx0aXBsZU9iamVjdHMnOiB7J3Nob3J0Y3V0cyc6IHRoaXMua2V5Ym9hcmRTaG9ydGN1 dC5kcm9wX2Nhc2NhZGVfbXVsdGlwbGVfb2JqZWN0c30sIC8vIEdyaWQgTWVudSBEcm9wIENhc2Nh ZGUgTXVsdGlwbGUKKyAgICAgICAgJ2JpbmRBZGRHcmlkUm93JzogeydzaG9ydGN1dHMnOiB0aGlz LmtleWJvYXJkU2hvcnRjdXQuYWRkX2dyaWRfcm93fSwgLy8gU3Vibm9kZSBHcmlkIEFkZCBSb3cK ICAgICAgIH07CiAgICAgICB0aGlzLmJpbmRTaG9ydGN1dHMoKTsKICAgICB9CkBAIC0zMzAsNiAr MzMyLDEyIEBAIF8uZXh0ZW5kKHBnQnJvd3Nlci5rZXlib2FyZE5hdmlnYXRpb24sIHsKICAgICAg ICQoJ2J1dHRvbi5kZWxldGVfbXVsdGlwbGVfY2FzY2FkZScpLmNsaWNrKCk7CiAgICAgfQogICB9 LAorICBiaW5kQWRkR3JpZFJvdzogZnVuY3Rpb24oKSB7CisgICAgbGV0IHN1Yk5vZGUgPSAkKGRv Y3VtZW50LmFjdGl2ZUVsZW1lbnQpLmNsb3Nlc3QoJy5vYmplY3Quc3Vibm9kZScpOworICAgIGlm KCQoc3ViTm9kZSkubGVuZ3RoKSB7CisgICAgICAkKHN1Yk5vZGUpLmZpbmQoJy5hZGQnKS5jbGlj aygpOworICAgIH0KKyAgfSwKICAgaXNQcm9wZXJ0eVBhbmVsVmlzaWJsZTogZnVuY3Rpb24oKSB7 CiAgICAgbGV0IGlzUGFuZWxWaXNpYmxlID0gZmFsc2U7CiAgICAgXy5lYWNoKHBnQWRtaW4uQnJv d3Nlci5kb2NrZXIuZmluZFBhbmVscygpLCAocGFuZWwpID0+IHsKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9iYWNrZm9ybS5wZ2FkbWluLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGlj L2pzL2JhY2tmb3JtLnBnYWRtaW4uanMKaW5kZXggYjk3ZmMzOC4uMTU2NDMwZCAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2JhY2tmb3JtLnBnYWRtaW4uanMKKysrIGIvd2ViL3Bn YWRtaW4vc3RhdGljL2pzL2JhY2tmb3JtLnBnYWRtaW4uanMKQEAgLTEwLDggKzEwLDEwIEBACiBk ZWZpbmUoWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3VuZGVyc2NvcmUnLCAndW5kZXJzY29yZS5z dHJpbmcnLCAnanF1ZXJ5JywKICAgJ2JhY2tib25lJywgJ2JhY2tmb3JtJywgJ2JhY2tncmlkJywg J2NvZGVtaXJyb3InLCAnc291cmNlcy9zcWxlZGl0b3JfdXRpbHMnLAorICAnc291cmNlcy9rZXli b2FyZF9zaG9ydGN1dHMnLAogICAnc3BlY3RydW0nLCAncGdhZG1pbi5iYWNrZ3JpZCcsICdzZWxl Y3QyJywgJ2Jvb3RzdHJhcC50b2dnbGUnLAotXSwgZnVuY3Rpb24oZ2V0dGV4dCwgXywgUywgJCwg QmFja2JvbmUsIEJhY2tmb3JtLCBCYWNrZ3JpZCwgQ29kZU1pcnJvciwgU3FsRWRpdG9yVXRpbHMp IHsKK10sIGZ1bmN0aW9uKGdldHRleHQsIF8sIFMsICQsIEJhY2tib25lLCBCYWNrZm9ybSwgQmFj a2dyaWQsIENvZGVNaXJyb3IsCisgIFNxbEVkaXRvclV0aWxzLCBrZXlib2FyZFNob3J0Y3V0cykg ewogCiAgIHZhciBwZ0FkbWluID0gKHdpbmRvdy5wZ0FkbWluID0gd2luZG93LnBnQWRtaW4gfHwg e30pLAogICAgIHBnQnJvd3NlciA9IHBnQWRtaW4uQnJvd3NlcjsKQEAgLTEyNjksNiArMTI3MSwx MyBAQCBkZWZpbmUoWwogCiAgICAgICB2YXIgJGRpYWxvZyA9IGdyaWRCb2R5LmFwcGVuZChzdWJO b2RlR3JpZCk7CiAKKyAgICAgIGxldCBwcmVmZXJlbmNlcyA9IHBnQnJvd3Nlci5nZXRfcHJlZmVy ZW5jZXNfZm9yX21vZHVsZSgnYnJvd3NlcicpOworICAgICAgbGV0IGFkZEJ0biA9ICRkaWFsb2cu ZmluZCgnLmFkZCcpOworICAgICAgLy8gQWRkIHRpdGxlIHRvIHRoZSBidXR0b25zCisgICAgICAk KGFkZEJ0bikKKyAgICAgICAgLmF0dHIoJ3RpdGxlJywKKyAgICAgICAgICBrZXlib2FyZFNob3J0 Y3V0cy5zaG9ydGN1dF90aXRsZShnZXR0ZXh0KCdBZGQgbmV3IHJvdycpLHByZWZlcmVuY2VzLmFk ZF9ncmlkX3JvdykpOworCiAgICAgICAvLyBBZGQgYnV0dG9uIGNhbGxiYWNrCiAgICAgICBpZiAo IShkYXRhLmRpc2FibGVkIHx8IGRhdGEuY2FuQWRkID09IGZhbHNlKSkgewogICAgICAgICAkZGlh bG9nLmZpbmQoJ2J1dHRvbi5hZGQnKS5maXJzdCgpLm9uKCdjbGljaycsKGUpID0+IHsKQEAgLTE1 NTQsNiArMTU2MywxNCBAQCBkZWZpbmUoWwogCiAgICAgICB2YXIgJGRpYWxvZyA9IGdyaWRCb2R5 LmFwcGVuZChzdWJOb2RlR3JpZCk7CiAKKyAgICAgIGxldCBwcmVmZXJlbmNlcyA9IHBnQnJvd3Nl ci5nZXRfcHJlZmVyZW5jZXNfZm9yX21vZHVsZSgnYnJvd3NlcicpOworICAgICAgbGV0IGFkZEJ0 biA9ICRkaWFsb2cuZmluZCgnLmFkZCcpOworICAgICAgLy8gQWRkIHRpdGxlIHRvIHRoZSBidXR0 b25zCisgICAgICAkKGFkZEJ0bikKKyAgICAgICAgLmF0dHIoJ3RpdGxlJywKKyAgICAgICAgICBr ZXlib2FyZFNob3J0Y3V0cy5zaG9ydGN1dF90aXRsZShnZXR0ZXh0KCdBZGQgbmV3IHJvdycpLHBy ZWZlcmVuY2VzLmFkZF9ncmlkX3JvdykpOworCisKICAgICAgIC8vIEFkZCBidXR0b24gY2FsbGJh Y2sKICAgICAgICRkaWFsb2cuZmluZCgnYnV0dG9uLmFkZCcpLm9uKCdjbGljaycsKGUpID0+IHsK ICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3Rh dGljL2pzL2JhY2tncmlkLnBnYWRtaW4uanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFja2dy aWQucGdhZG1pbi5qcwppbmRleCBjODA0NjA5Li4wZDk2OGFhIDEwMDY0NAotLS0gYS93ZWIvcGdh ZG1pbi9zdGF0aWMvanMvYmFja2dyaWQucGdhZG1pbi5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0 aWMvanMvYmFja2dyaWQucGdhZG1pbi5qcwpAQCAtOSwxNSArOSwxOCBAQAogCiBkZWZpbmUoWwog ICAnc291cmNlcy9nZXR0ZXh0JywgJ3VuZGVyc2NvcmUnLCAnanF1ZXJ5JywgJ2JhY2tib25lJywg J2JhY2tmb3JtJywgJ2JhY2tncmlkJywgJ2FsZXJ0aWZ5JywKLSAgJ21vbWVudCcsICdiaWdudW1i ZXInLCAnYm9vdHN0cmFwLmRhdGV0aW1lcGlja2VyJywgJ2JhY2tncmlkLmZpbHRlcicsCi0gICdi b290c3RyYXAudG9nZ2xlJywKKyAgJ21vbWVudCcsICdiaWdudW1iZXInLCAnc291cmNlcy91dGls cycsICdzb3VyY2VzL2tleWJvYXJkX3Nob3J0Y3V0cycsCisgICdib290c3RyYXAuZGF0ZXRpbWVw aWNrZXInLCAnYmFja2dyaWQuZmlsdGVyJywgJ2Jvb3RzdHJhcC50b2dnbGUnLAogXSwgZnVuY3Rp b24oCi0gIGdldHRleHQsIF8sICQsIEJhY2tib25lLCBCYWNrZm9ybSwgQmFja2dyaWQsIEFsZXJ0 aWZ5LCBtb21lbnQsIEJpZ051bWJlcgorICBnZXR0ZXh0LCBfLCAkLCBCYWNrYm9uZSwgQmFja2Zv cm0sIEJhY2tncmlkLCBBbGVydGlmeSwgbW9tZW50LCBCaWdOdW1iZXIsCisgIGNvbW1vblV0aWxz LCBrZXlib2FyZFNob3J0Y3V0cwogKSB7CiAgIC8qCiAgICAqIEFkZCBtZWNoYW5pc20gaW4gYmFj a2dyaWQgdG8gcmVuZGVyIGRpZmZlcmVudCB0eXBlcyBvZiBjZWxscyBpbgogICAgKiBzYW1lIGNv bHVtbjsKICAgICovCisgIGxldCBwZ0FkbWluID0gKHdpbmRvdy5wZ0FkbWluID0gd2luZG93LnBn QWRtaW4gfHwge30pLAorICAgIHBnQnJvd3NlciA9IHBnQWRtaW4uQnJvd3NlcjsKIAogICAvLyBB ZGQgbmV3IHByb3BlcnR5IGNlbGxGdW5jdGlvbiBpbiBCYWNrZ3JpZC5Db2x1bW4uCiAgIF8uZXh0 ZW5kKEJhY2tncmlkLkNvbHVtbi5wcm90b3R5cGUuZGVmYXVsdHMsIHsKQEAgLTM3LDYgKzQwLDE4 IEBAIGRlZmluZShbCiAgICAgfSwKICAgfSk7CiAKKyAgLy8gYmluZCBzaG9ydGN1dCBpbiBjZWxs IGVkaXQgbW9kZQorICBfLmV4dGVuZChCYWNrZ3JpZC5JbnB1dENlbGxFZGl0b3IucHJvdG90eXBl LmV2ZW50cywgeworICAgICdrZXlkb3duJzogZnVuY3Rpb24oZSkgeworICAgICAgbGV0IHByZWZl cmVuY2VzID0gcGdCcm93c2VyLmdldF9wcmVmZXJlbmNlc19mb3JfbW9kdWxlKCdicm93c2VyJyk7 CisgICAgICBpZihrZXlib2FyZFNob3J0Y3V0cy52YWxpZGF0ZVNob3J0Y3V0S2V5cyhwcmVmZXJl bmNlcy5hZGRfZ3JpZF9yb3csZSkpIHsKKyAgICAgICAgcGdCcm93c2VyLmtleWJvYXJkTmF2aWdh dGlvbi5iaW5kQWRkR3JpZFJvdygpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgQmFja2dyaWQu SW5wdXRDZWxsRWRpdG9yLnByb3RvdHlwZS5zYXZlT3JDYW5jZWwuYXBwbHkodGhpcywgYXJndW1l bnRzKTsKKyAgICAgIH0KKyAgICB9LAorICB9KTsKKwogICAvKiBPdmVycmlkaW5nIGJhY2tncmlk IHNvcnQgbWV0aG9kLgogICAgKiBBcyB3ZSBhcmUgZ2V0dGluZyBudW1lcmljLCBpbnRlZ2VyIHZh bHVlcyBhcyBzdHJpbmcKICAgICogZnJvbSBzZXJ2ZXIgc2lkZSwgYnV0IG9uIGNsaWVudCBzaWRl IGphdmFzY3JpcHQgdHJ1bmNhdGVzCkBAIC0xNTEsNiArMTY2LDYyIEBAIGRlZmluZShbCiAgICAg ICAgIH0KICAgICAgIH07CiAgICAgfSwKKyAgICBtb3ZlVG9OZXh0Q2VsbDogZnVuY3Rpb24gKG1v ZGVsLCBjb2x1bW4sIGNvbW1hbmQpIHsKKyAgICAgIHZhciBpID0gdGhpcy5jb2xsZWN0aW9uLmlu ZGV4T2YobW9kZWwpOworICAgICAgdmFyIGogPSB0aGlzLmNvbHVtbnMuaW5kZXhPZihjb2x1bW4p OworICAgICAgdmFyIGNlbGwsIHJlbmRlcmFibGUsIGVkaXRhYmxlLCBtLCBuOworCisgICAgICAv LyByZXR1cm4gaWYgbW9kZWwgYmVpbmcgZWRpdGVkIGluIGEgZGlmZmVyZW50IGdyaWQKKyAgICAg IGlmIChqID09PSAtMSkgcmV0dXJuIHRoaXM7CisKKyAgICAgIHRoaXMucm93c1tpXS5jZWxsc1tq XS5leGl0RWRpdE1vZGUoKTsKKworICAgICAgaWYgKGNvbW1hbmQubW92ZVVwKCkgfHwgY29tbWFu ZC5tb3ZlRG93bigpIHx8IGNvbW1hbmQubW92ZUxlZnQoKSB8fAorICAgICAgICAgIGNvbW1hbmQu bW92ZVJpZ2h0KCkgfHwgY29tbWFuZC5zYXZlKCkpIHsKKyAgICAgICAgdmFyIGwgPSB0aGlzLmNv bHVtbnMubGVuZ3RoOworICAgICAgICB2YXIgbWF4T2Zmc2V0ID0gbCAqIHRoaXMuY29sbGVjdGlv bi5sZW5ndGg7CisKKyAgICAgICAgaWYgKGNvbW1hbmQubW92ZVVwKCkgfHwgY29tbWFuZC5tb3Zl RG93bigpKSB7CisgICAgICAgICAgbSA9IGkgKyAoY29tbWFuZC5tb3ZlVXAoKSA/IC0xIDogMSk7 CisgICAgICAgICAgdmFyIHJvdyA9IHRoaXMucm93c1ttXTsKKyAgICAgICAgICBpZiAocm93KSB7 CisgICAgICAgICAgICBjZWxsID0gcm93LmNlbGxzW2pdOworICAgICAgICAgICAgaWYgKEJhY2tn cmlkLmNhbGxCeU5lZWQoY2VsbC5jb2x1bW4uZWRpdGFibGUoKSwgY2VsbC5jb2x1bW4sIG1vZGVs KSkgeworICAgICAgICAgICAgICBjZWxsLmVudGVyRWRpdE1vZGUoKTsKKyAgICAgICAgICAgICAg bW9kZWwudHJpZ2dlcignYmFja2dyaWQ6bmV4dCcsIG0sIGosIGZhbHNlKTsKKyAgICAgICAgICAg IH0KKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSBtb2RlbC50cmlnZ2VyKCdiYWNrZ3JpZDpu ZXh0JywgbSwgaiwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY29tbWFuZC5t b3ZlTGVmdCgpIHx8IGNvbW1hbmQubW92ZVJpZ2h0KCkpIHsKKyAgICAgICAgICB2YXIgcmlnaHQg PSBjb21tYW5kLm1vdmVSaWdodCgpOworICAgICAgICAgIGZvciAodmFyIG9mZnNldCA9IGkgKiBs ICsgaiArIChyaWdodCA/IDEgOiAtMSk7CisgICAgICAgICAgICBvZmZzZXQgPj0gMCAmJiBvZmZz ZXQgPCBtYXhPZmZzZXQ7CisgICAgICAgICAgICByaWdodCA/IG9mZnNldCsrIDogb2Zmc2V0LS0p IHsKKyAgICAgICAgICAgIG0gPSB+fihvZmZzZXQgLyBsKTsKKyAgICAgICAgICAgIG4gPSBvZmZz ZXQgLSBtICogbDsKKyAgICAgICAgICAgIGNlbGwgPSB0aGlzLnJvd3NbbV0uY2VsbHNbbl07Cisg ICAgICAgICAgICByZW5kZXJhYmxlID0gQmFja2dyaWQuY2FsbEJ5TmVlZChjZWxsLmNvbHVtbi5y ZW5kZXJhYmxlKCksIGNlbGwuY29sdW1uLCBjZWxsLm1vZGVsKTsKKyAgICAgICAgICAgIGVkaXRh YmxlID0gQmFja2dyaWQuY2FsbEJ5TmVlZChjZWxsLmNvbHVtbi5lZGl0YWJsZSgpLCBjZWxsLmNv bHVtbiwgbW9kZWwpOworICAgICAgICAgICAgaWYoY2VsbCAmJiBjZWxsLiRlbC5oYXNDbGFzcygn ZWRpdC1jZWxsJykgJiYKKyAgICAgICAgICAgICAgIWNlbGwuJGVsLmhhc0NsYXNzKCdwcml2aWxl Z2VzJykgfHwgY2VsbC4kZWwuaGFzQ2xhc3MoJ2RlbGV0ZS1jZWxsJykpIHsKKyAgICAgICAgICAg ICAgbW9kZWwudHJpZ2dlcignYmFja2dyaWQ6bmV4dCcsIG0sIG4sIGZhbHNlKTsKKyAgICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJlbmRlcmFibGUgJiYgZWRpdGFi bGUpIHsKKyAgICAgICAgICAgICAgY2VsbC5lbnRlckVkaXRNb2RlKCk7CisgICAgICAgICAgICAg IG1vZGVsLnRyaWdnZXIoJ2JhY2tncmlkOm5leHQnLCBtLCBuLCBmYWxzZSk7CisgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKworICAgICAgICAgIGlmIChv ZmZzZXQgPT0gbWF4T2Zmc2V0KSB7CisgICAgICAgICAgICBtb2RlbC50cmlnZ2VyKCdiYWNrZ3Jp ZDpuZXh0Jywgfn4ob2Zmc2V0IC8gbCksIG9mZnNldCAtIG0gKiBsLCB0cnVlKTsKKyAgICAgICAg ICB9CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgcmV0dXJuIHRoaXM7CisgICAgfSwKICAg fSk7CiAKICAgXy5leHRlbmQoQmFja2dyaWQuUm93LnByb3RvdHlwZSwgewpAQCAtMTg5LDcgKzI2 MCw3IEBAIGRlZmluZShbCiAKICAgdmFyIE9iamVjdENlbGxFZGl0b3IgPSBCYWNrZ3JpZC5FeHRl bnNpb24uT2JqZWN0Q2VsbEVkaXRvciA9IEJhY2tncmlkLkNlbGxFZGl0b3IuZXh0ZW5kKHsKICAg ICBtb2RhbFRlbXBsYXRlOiBfLnRlbXBsYXRlKFsKLSAgICAgICc8ZGl2IGNsYXNzPSJzdWJub2Rl LWRpYWxvZyIgdGFiaW5kZXg9IjEiPicsCisgICAgICAnPGRpdiBjbGFzcz0ic3Vibm9kZS1kaWFs b2ciIHRhYmluZGV4PSIwIj4nLAogICAgICAgJyAgICA8ZGl2IGNsYXNzPSJzdWJub2RlLWJvZHki PjwvZGl2PicsCiAgICAgICAnPC9kaXY+JywKICAgICBdLmpvaW4oJ1xuJykpLApAQCAtMjM1LDYg KzMwNiwxNCBAQCBkZWZpbmUoWwogICAgICAgICB0YWJQYW5lbENsYXNzTmFtZTogZnVuY3Rpb24o KSB7CiAgICAgICAgICAgcmV0dXJuICdzdWItbm9kZS1mb3JtIGNvbC1zbS0xMic7CiAgICAgICAg IH0sCisgICAgICAgIGV2ZW50czogeworICAgICAgICAgICdrZXlkb3duJzogZnVuY3Rpb24gKGV2 ZW50KSB7CisgICAgICAgICAgICBsZXQgcHJlZmVyZW5jZXMgPSBwZ0Jyb3dzZXIuZ2V0X3ByZWZl cmVuY2VzX2Zvcl9tb2R1bGUoJ2Jyb3dzZXInKTsKKyAgICAgICAgICAgIGlmKGtleWJvYXJkU2hv cnRjdXRzLnZhbGlkYXRlU2hvcnRjdXRLZXlzKHByZWZlcmVuY2VzLmFkZF9ncmlkX3JvdyxldmVu dCkpIHsKKyAgICAgICAgICAgICAgcGdCcm93c2VyLmtleWJvYXJkTmF2aWdhdGlvbi5iaW5kQWRk R3JpZFJvdygpOworICAgICAgICAgICAgfQorICAgICAgICAgIH0sCisgICAgICAgIH0sCiAgICAg ICB9KTsKIAogICAgICAgdGhpcy5vYmplY3RWaWV3LnJlbmRlcigpOwpAQCAtMzE1LDEyICszOTQs MTggQEAgZGVmaW5lKFsKIAogICAgICAgZWRpdG9yT3B0aW9uc1snZWwnXSA9ICQodGhpcy5lbCk7 CiAgICAgICBlZGl0b3JPcHRpb25zWydjb2x1bW5zX2xlbmd0aCddID0gdGhpcy5jb2x1bW4uY29s bGVjdGlvbi5sZW5ndGg7Ci0gICAgICBlZGl0b3JPcHRpb25zWydlbCddLmF0dHIoJ3RhYmluZGV4 JywgMSk7CisgICAgICBlZGl0b3JPcHRpb25zWydlbCddLmF0dHIoJ3RhYmluZGV4JywgMCk7CiAK ICAgICAgIHRoaXMubGlzdGVuVG8odGhpcy5tb2RlbCwgJ2JhY2tncmlkOmVkaXQnLCBmdW5jdGlv bihtb2RlbCwgY29sdW1uLCBjZWxsLCBlZGl0b3IpIHsKICAgICAgICAgaWYgKGNvbHVtbi5nZXQo J25hbWUnKSA9PSB0aGlzLmNvbHVtbi5nZXQoJ25hbWUnKSkKICAgICAgICAgICBlZGl0b3IuZXh0 ZW5kV2l0aE9wdGlvbnMoZWRpdG9yT3B0aW9ucyk7CiAgICAgICB9KTsKKyAgICAgIC8vIExpc3Rl biBmb3IgVGFiIGtleSwgb3BlbiBzdWJub2RlIGRpYWxvZyBvbiBzcGFjZSBrZXkKKyAgICAgIHRo aXMuJGVsLm9uKCdrZXlkb3duJywgZnVuY3Rpb24oZSkgeworICAgICAgICBpZiAoZS5rZXlDb2Rl ID09IDMyKSB7CisgICAgICAgICAgJCh0aGlzKS5jbGljaygpOworICAgICAgICB9CisgICAgICB9 KTsKICAgICB9LAogICAgIGVudGVyRWRpdE1vZGU6IGZ1bmN0aW9uKCkgewogICAgICAgLy8gTm90 aWZ5IHRoYXQgd2UgYXJlIGFib3V0IHRvIGVudGVyIGluIGVkaXQgbW9kZSBmb3IgY3VycmVudCBj ZWxsLgpAQCAtMzQyLDYgKzQyNywxMCBAQCBkZWZpbmUoWwogICAgICAgICAgIHRoaXMuJGVsLmh0 bWwoCiAgICAgICAgICAgICAnPGkgY2xhc3M9XCdmYSBmYS1wZW5jaWwtc3F1YXJlIHN1Ym5vZGUt ZWRpdC1pbi1wcm9jZXNzXCcgdGl0bGU9XCcnICsgXygnRWRpdCByb3cnKSArICdcJz48L2k+Jwog ICAgICAgICAgICk7CisgICAgICAgICAgbGV0IGJvZHkgPSAkKHRoaXMuJGVsKS5wYXJlbnRzKClb MV0sCisgICAgICAgICAgICBjb250YWluZXIgPSAkKGJvZHkpLmZpbmQoJy50YWItY29udGVudDpm aXJzdCA+IC50YWItcGFuZS5hY3RpdmU6Zmlyc3QnKTsKKyAgICAgICAgICBjb21tb25VdGlscy5m aW5kQW5kU2V0Rm9jdXMoY29udGFpbmVyKTsKKyAgICAgICAgICBwZ0Jyb3dzZXIua2V5Ym9hcmRO YXZpZ2F0aW9uLmdldERpYWxvZ1RhYk5hdmlnYXRvcigkKGJvZHkpLmZpbmQoJy5zdWJub2RlLWRp YWxvZycpKTsKICAgICAgICAgICB0aGlzLm1vZGVsLnRyaWdnZXIoCiAgICAgICAgICAgICAncGct c3ViLW5vZGU6b3BlbmVkJywgdGhpcy5tb2RlbCwgdGhpcwogICAgICAgICAgICk7CkBAIC0zNjIs MTQgKzQ1MSwxNiBAQCBkZWZpbmUoWwogICAgICAgcmV0dXJuIHRoaXM7CiAgICAgfSwKICAgICBl eGl0RWRpdE1vZGU6IGZ1bmN0aW9uKCkgewotICAgICAgdmFyIGluZGV4ID0gJCh0aGlzLmN1cnJl bnRFZGl0b3Iub2JqZWN0Vmlldy5lbCkKLSAgICAgICAgLmZpbmQoJy5uYXYtdGFicyA+IC5hY3Rp dmUgPiBhW2RhdGEtdG9nZ2xlPSJ0YWIiXScpLmZpcnN0KCkKLSAgICAgICAgLmRhdGEoJ3RhYklu ZGV4Jyk7Ci0gICAgICBCYWNrZ3JpZC5DZWxsLnByb3RvdHlwZS5leGl0RWRpdE1vZGUuYXBwbHko dGhpcywgYXJndW1lbnRzKTsKLSAgICAgIHRoaXMubW9kZWwudHJpZ2dlcigKLSAgICAgICAgJ3Bn LXN1Yi1ub2RlOmNsb3NlZCcsIHRoaXMsIGluZGV4Ci0gICAgICApOwotICAgICAgdGhpcy5ncmFi Rm9jdXMgPSB0cnVlOworICAgICAgaWYoIV8uaXNVbmRlZmluZWQodGhpcy5jdXJyZW50RWRpdG9y KSB8fCAhXy5pc0VtcHR5KHRoaXMuY3VycmVudEVkaXRvcikpIHsKKyAgICAgICAgdmFyIGluZGV4 ID0gJCh0aGlzLmN1cnJlbnRFZGl0b3Iub2JqZWN0Vmlldy5lbCkKKyAgICAgICAgICAuZmluZCgn Lm5hdi10YWJzID4gLmFjdGl2ZSA+IGFbZGF0YS10b2dnbGU9InRhYiJdJykuZmlyc3QoKQorICAg ICAgICAgIC5kYXRhKCd0YWJJbmRleCcpOworICAgICAgICBCYWNrZ3JpZC5DZWxsLnByb3RvdHlw ZS5leGl0RWRpdE1vZGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAgdGhpcy5tb2Rl bC50cmlnZ2VyKAorICAgICAgICAgICdwZy1zdWItbm9kZTpjbG9zZWQnLCB0aGlzLCBpbmRleAor ICAgICAgICApOworICAgICAgICB0aGlzLmdyYWJGb2N1cyA9IHRydWU7CisgICAgICB9CiAgICAg fSwKICAgICBldmVudHM6IHsKICAgICAgICdjbGljayc6IGZ1bmN0aW9uKGUpIHsKQEAgLTM4Miw2 ICs0NzMsMTcgQEAgZGVmaW5lKFsKICAgICAgICAgfQogICAgICAgICBlLnByZXZlbnREZWZhdWx0 KCk7CiAgICAgICB9LAorICAgICAgJ2tleWRvd24nOiBmdW5jdGlvbihlKSB7CisgICAgICAgIHZh ciBtb2RlbCA9IHRoaXMubW9kZWw7CisgICAgICAgIHZhciBjb2x1bW4gPSB0aGlzLmNvbHVtbjsK KyAgICAgICAgdmFyIGNvbW1hbmQgPSBuZXcgQmFja2dyaWQuQ29tbWFuZChlKTsKKworICAgICAg ICBpZiAoY29tbWFuZC5tb3ZlTGVmdCgpKSB7CisgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv bigpIHsKKyAgICAgICAgICAgIG1vZGVsLnRyaWdnZXIoJ2JhY2tncmlkOmVkaXRlZCcsIG1vZGVs LCBjb2x1bW4sIGNvbW1hbmQpOworICAgICAgICAgIH0sIDIwKTsKKyAgICAgICAgfQorICAgICAg fSwKICAgICB9LAogICB9KTsKIApAQCAtNDEzLDcgKzUxNSwxNiBAQCBkZWZpbmUoWwogICAgICAg ICAgIGRlbGV0ZV90aXRsZSwKICAgICAgICAgICBkZWxldGVfbXNnLAogICAgICAgICAgIGZ1bmN0 aW9uKCkgeworICAgICAgICAgICAgbGV0IHRib2R5ID0gJCh0aGF0LmVsKS5wYXJlbnRzKCd0Ym9k eScpLmVxKDApOwogICAgICAgICAgICAgdGhhdC5tb2RlbC5jb2xsZWN0aW9uLnJlbW92ZSh0aGF0 Lm1vZGVsKTsKKyAgICAgICAgICAgIGxldCByb3cgPSAkKHRib2R5KS5maW5kKCd0cicpOworICAg ICAgICAgICAgaWYocm93Lmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgICAgLy8gc2V0IGZvY3Vz IHRvIGZpcnN0IHRyCisgICAgICAgICAgICAgIHJvdy5maXJzdCgpLmNoaWxkcmVuKClbMF0uZm9j dXMoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIC8vIHNldCBmb2N1cyB0 byBhZGQgYnV0dG9uCisgICAgICAgICAgICAgICQodGJvZHkpLnBhcmVudHMoJy5zdWJub2RlJyku ZXEoMCkuZmluZCgnLmFkZCcpLmZvY3VzKCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgfSwK ICAgICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDI3 LDEyICs1MzgsNTQgQEAgZGVmaW5lKFsKICAgICAgICAgKTsKICAgICAgIH0KICAgICB9LAorICAg IGV4aXRFZGl0TW9kZTogZnVuY3Rpb24oKSB7CisgICAgICB0aGlzLiRlbC5yZW1vdmVDbGFzcygn ZWRpdG9yJyk7CisgICAgfSwKICAgICBpbml0aWFsaXplOiBmdW5jdGlvbigpIHsKICAgICAgIEJh Y2tncmlkLkNlbGwucHJvdG90eXBlLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsK ICAgICB9LAogICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7CisgICAgICB2YXIgc2VsZiA9IHRoaXM7 CiAgICAgICB0aGlzLiRlbC5lbXB0eSgpOworICAgICAgJCh0aGlzLiRlbCkuYXR0cigndGFiaW5k ZXgnLCAwKTsKICAgICAgIHRoaXMuJGVsLmh0bWwoJzxpIGNsYXNzPVwnZmEgZmEtdHJhc2hcJyB0 aXRsZT1cJycgKyBfKCdEZWxldGUgcm93JykgKyAnXCc+PC9pPicpOworICAgICAgLy8gTGlzdGVu IGZvciBUYWIvU2hpZnQtVGFiIGtleQorICAgICAgdGhpcy4kZWwub24oJ2tleWRvd24nLCBmdW5j dGlvbihlKSB7CisgICAgICAgIC8vIHdpdGgga2V5Ym9hcmQgbmF2aWdhdGlvbiBvbiBzcGFjZSBr ZXksIG1hcmsgcm93IGZvciBkZWxldGlvbgorICAgICAgICBpZiAoZS5rZXlDb2RlID09IDMyKSB7 CisgICAgICAgICAgc2VsZi4kZWwuY2xpY2soKTsKKyAgICAgICAgfQorICAgICAgICB2YXIgZ290 b0NlbGw7CisgICAgICAgIGlmIChlLmtleUNvZGUgPT0gOSB8fCBlLmtleUNvZGUgPT0gMTYpIHsK KyAgICAgICAgICAvLyBnbyB0byBOZXh0IENlbGwgJiBpZiBTaGlmdCBpcyBhbHNvIHByZXNzZWQg Z28gdG8gUHJldmlvdXMgQ2VsbAorICAgICAgICAgIGdvdG9DZWxsID0gZS5zaGlmdEtleSA/IHNl bGYuJGVsLnByZXYoKSA6IHNlbGYuJGVsLm5leHQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm IChnb3RvQ2VsbCkgeworICAgICAgICAgIGxldCBjb21tYW5kID0gbmV3IEJhY2tncmlkLkNvbW1h bmQoeworICAgICAgICAgICAga2V5OiAnVGFiJywKKyAgICAgICAgICAgIGtleUNvZGU6IDksCisg ICAgICAgICAgICB3aGljaDogOSwKKyAgICAgICAgICAgIHNoaWZ0S2V5OiBlLnNoaWZ0S2V5LAor ICAgICAgICAgIH0pOworICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAg ICAgICAvLyBXaGVuIHdlIGhhdmUgRWRpdGFibGUgQ2VsbAorICAgICAgICAgICAgaWYgKGdvdG9D ZWxsLmhhc0NsYXNzKCdlZGl0YWJsZScpKSB7CisgICAgICAgICAgICAgIGUucHJldmVudERlZmF1 bHQoKTsKKyAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgICAgICAg c2VsZi5tb2RlbC50cmlnZ2VyKCdiYWNrZ3JpZDplZGl0ZWQnLCBzZWxmLm1vZGVsLAorICAgICAg ICAgICAgICAgIHNlbGYuY29sdW1uLCBjb21tYW5kKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIGVsc2UgeworICAgICAgICAgICAgICAvLyBXaGVuIHdlIGhhdmUgTm9uLUVkaXRhYmxlIENl bGwKKyAgICAgICAgICAgICAgc2VsZi5tb2RlbC50cmlnZ2VyKCdiYWNrZ3JpZDplZGl0ZWQnLCBz ZWxmLm1vZGVsLAorICAgICAgICAgICAgICAgIHNlbGYuY29sdW1uLCBjb21tYW5kKTsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgICB9LCAyMCk7CisgICAgICAgIH0KKyAgICAgIH0pOworCisKICAg ICAgIHRoaXMuZGVsZWdhdGVFdmVudHMoKTsKICAgICAgIHJldHVybiB0aGlzOwogICAgIH0sCkBA IC00ODgsNiArNjQxLDcgQEAgZGVmaW5lKFsKICAgICAgICdjaGFuZ2UgaW5wdXQnOiAnb25DaGFu Z2UnLAogICAgICAgJ2tleXVwJzogJ3RvZ2dsZVN3aXRjaCcsCiAgICAgICAnYmx1ciBpbnB1dCc6 ICdleGl0RWRpdE1vZGUnLAorICAgICAgJ2tleWRvd24nOiAnb25LZXlEb3duJywKICAgICB9LAog CiAgICAgdG9nZ2xlU3dpdGNoOiBmdW5jdGlvbihlKSB7CkBAIC00OTcsNiArNjUxLDEzIEBAIGRl ZmluZShbCiAgICAgICB9CiAgICAgfSwKIAorICAgIG9uS2V5RG93bjogZnVuY3Rpb24oZSkgewor ICAgICAgbGV0IHByZWZlcmVuY2VzID0gcGdCcm93c2VyLmdldF9wcmVmZXJlbmNlc19mb3JfbW9k dWxlKCdicm93c2VyJyk7CisgICAgICBpZihrZXlib2FyZFNob3J0Y3V0cy52YWxpZGF0ZVNob3J0 Y3V0S2V5cyhwcmVmZXJlbmNlcy5hZGRfZ3JpZF9yb3csZSkpIHsKKyAgICAgICAgcGdCcm93c2Vy LmtleWJvYXJkTmF2aWdhdGlvbi5iaW5kQWRkR3JpZFJvdygpOworICAgICAgfQorICAgIH0sCisK ICAgICBvbkNoYW5nZTogZnVuY3Rpb24oKSB7CiAgICAgICB2YXIgbW9kZWwgPSB0aGlzLm1vZGVs LAogICAgICAgICBjb2x1bW4gPSB0aGlzLmNvbHVtbiwKQEAgLTU1Myw3ICs3MTQsMTEgQEAgZGVm aW5lKFsKICAgICAgICAgICB9KTsKICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewog ICAgICAgICAgICAgLy8gV2hlbiB3ZSBoYXZlIEVkaXRhYmxlIENlbGwKLSAgICAgICAgICAgIGlm IChnb3RvQ2VsbC5oYXNDbGFzcygnZWRpdGFibGUnKSkgeworICAgICAgICAgICAgaWYgKGdvdG9D ZWxsLmhhc0NsYXNzKCdlZGl0YWJsZScpICYmIGdvdG9DZWxsLmhhc0NsYXNzKCdlZGl0LWNlbGwn KSkgeworICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICAgIGUu c3RvcFByb3BhZ2F0aW9uKCk7CisgICAgICAgICAgICAgIGdvdG9DZWxsLnRyaWdnZXIoJ2ZvY3Vz Jyk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGdvdG9DZWxsLmhhc0NsYXNzKCdlZGl0YWJsZScp KSB7CiAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgZS5z dG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgc2VsZi5tb2RlbC50cmlnZ2VyKCdiYWNr Z3JpZDplZGl0ZWQnLCBzZWxmLm1vZGVsLApAQCAtNjA4LDggKzc3Myw3IEBAIGRlZmluZShbCiAg ICAgfSwKIAogICAgIHNhdmVPckNhbmNlbDogZnVuY3Rpb24gKGUpIHsKLSAgICAgIHZhciBtb2Rl bCA9IHRoaXMubW9kZWw7Ci0gICAgICB2YXIgY29sdW1uID0gdGhpcy5jb2x1bW47CisgICAgICB2 YXIgc2VsZiA9IHRoaXM7CiAKICAgICAgIHZhciBjb21tYW5kID0gbmV3IEJhY2tncmlkLkNvbW1h bmQoZSk7CiAgICAgICB2YXIgYmx1cnJlZCA9IGUudHlwZSA9PT0gJ2JsdXInOwpAQCAtNjE3LDEw ICs3ODEsMzIgQEAgZGVmaW5lKFsKICAgICAgIGlmIChjb21tYW5kLm1vdmVVcCgpIHx8IGNvbW1h bmQubW92ZURvd24oKSB8fCBjb21tYW5kLm1vdmVMZWZ0KCkgfHwgY29tbWFuZC5tb3ZlUmlnaHQo KSB8fAogICAgICAgICAgIGNvbW1hbmQuc2F2ZSgpIHx8IGJsdXJyZWQpIHsKIAotICAgICAgICB0 aGlzLmV4aXRFZGl0TW9kZSgpOwotICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7Ci0gICAgICAg IGUuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgICAgIG1vZGVsLnRyaWdnZXIoJ2JhY2tncmlkOmVk aXRlZCcsIG1vZGVsLCBjb2x1bW4sIGNvbW1hbmQpOworICAgICAgICBsZXQgZ290b0NlbGw7Cisg ICAgICAgIC8vIGdvIHRvIE5leHQgQ2VsbCAmIGlmIFNoaWZ0IGlzIGFsc28gcHJlc3NlZCBnbyB0 byBQcmV2aW91cyBDZWxsCisgICAgICAgIGdvdG9DZWxsID0gZS5zaGlmdEtleSA/IHNlbGYuJGVs LnByZXYoKSA6IHNlbGYuJGVsLm5leHQoKTsKKworICAgICAgICBpZiAoZ290b0NlbGwpIHsKKyAg ICAgICAgICBsZXQgY29tbWFuZCA9IG5ldyBCYWNrZ3JpZC5Db21tYW5kKHsKKyAgICAgICAgICAg IGtleTogJ1RhYicsCisgICAgICAgICAgICBrZXlDb2RlOiA5LAorICAgICAgICAgICAgd2hpY2g6 IDksCisgICAgICAgICAgICBzaGlmdEtleTogZS5zaGlmdEtleSwKKyAgICAgICAgICB9KTsKKyAg ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgLy8gV2hlbiB3ZSBo YXZlIEVkaXRhYmxlIENlbGwKKyAgICAgICAgICAgIGlmIChnb3RvQ2VsbC5oYXNDbGFzcygnZWRp dGFibGUnKSkgeworICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAg ICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgICAgICAgICAgIHNlbGYubW9kZWwudHJpZ2dl cignYmFja2dyaWQ6ZWRpdGVkJywgc2VsZi5tb2RlbCwKKyAgICAgICAgICAgICAgICBzZWxmLmNv bHVtbiwgY29tbWFuZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg ICAgICAgICAgLy8gV2hlbiB3ZSBoYXZlIE5vbi1FZGl0YWJsZSBDZWxsCisgICAgICAgICAgICAg IHNlbGYubW9kZWwudHJpZ2dlcignYmFja2dyaWQ6ZWRpdGVkJywgc2VsZi5tb2RlbCwKKyAgICAg ICAgICAgICAgICBzZWxmLmNvbHVtbiwgY29tbWFuZCk7CisgICAgICAgICAgICB9CisgICAgICAg ICAgfSwgMjApOworICAgICAgICB9CiAgICAgICB9CiAgICAgfSwKICAgICBldmVudHM6IHsKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9kaWFsb2dfdGFiX25hdmlnYXRvci5qcyBi L3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9kaWFsb2dfdGFiX25hdmlnYXRvci5qcwppbmRleCA0NDcy MTcyLi4zN2JmZjZiIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvZGlhbG9nX3Rh Yl9uYXZpZ2F0b3IuanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2RpYWxvZ190YWJfbmF2 aWdhdG9yLmpzCkBAIC00NiwxMyArNDYsMTMgQEAgY2xhc3MgZGlhbG9nVGFiTmF2aWdhdG9yIHsK IAogICAgIGlmKGNoaWxkVGFiRGF0YSkgewogICAgICAgdmFyIHJlcyA9IHRoaXMubmF2aWdhdGUo c2hvcnRjdXQsIGNoaWxkVGFiRGF0YS5jaGlsZFRhYiwKLSAgICAgICAgY2hpbGRUYWJEYXRhLmNo aWxkVGFiUGFuZSk7CisgICAgICAgIGNoaWxkVGFiRGF0YS5jaGlsZFRhYlBhbmUsIGV2ZW50KTsK IAogICAgICAgaWYgKCFyZXMpIHsKLSAgICAgICAgdGhpcy5uYXZpZ2F0ZShzaG9ydGN1dCwgdGhp cy50YWJzLCBjdXJyZW50VGFiUGFuZSk7CisgICAgICAgIHRoaXMubmF2aWdhdGUoc2hvcnRjdXQs IHRoaXMudGFicywgY3VycmVudFRhYlBhbmUsIGV2ZW50KTsKICAgICAgIH0KICAgICB9IGVsc2Ug ewotICAgICAgdGhpcy5uYXZpZ2F0ZShzaG9ydGN1dCwgdGhpcy50YWJzLCBjdXJyZW50VGFiUGFu ZSk7CisgICAgICB0aGlzLm5hdmlnYXRlKHNob3J0Y3V0LCB0aGlzLnRhYnMsIGN1cnJlbnRUYWJQ YW5lLCBldmVudCk7CiAgICAgfQogICB9CiAKQEAgLTczLDE2ICs3MywxNiBAQCBjbGFzcyBkaWFs b2dUYWJOYXZpZ2F0b3IgewogICAgIHJldHVybiBudWxsOwogICB9CiAKLSAgbmF2aWdhdGUoc2hv cnRjdXQsIHRhYnMsIHRhYl9wYW5lKSB7CisgIG5hdmlnYXRlKHNob3J0Y3V0LCB0YWJzLCB0YWJf cGFuZSwgZXZlbnQpIHsKICAgICBpZihzaG9ydGN1dCA9PSB0aGlzLmRpYWxvZ1RhYkJhY2t3YXJk KSB7Ci0gICAgICByZXR1cm4gdGhpcy5uYXZpZ2F0ZUJhY2t3YXJkKHRhYnMsIHRhYl9wYW5lKTsK KyAgICAgIHJldHVybiB0aGlzLm5hdmlnYXRlQmFja3dhcmQodGFicywgdGFiX3BhbmUsIGV2ZW50 KTsKICAgICB9ZWxzZSBpZiAoc2hvcnRjdXQgPT0gdGhpcy5kaWFsb2dUYWJGb3J3YXJkKSB7Ci0g ICAgICByZXR1cm4gdGhpcy5uYXZpZ2F0ZUZvcndhcmQodGFicywgdGFiX3BhbmUpOworICAgICAg cmV0dXJuIHRoaXMubmF2aWdhdGVGb3J3YXJkKHRhYnMsIHRhYl9wYW5lLCBldmVudCk7CiAgICAg fQogICAgIHJldHVybiBmYWxzZTsKICAgfQogCi0gIG5hdmlnYXRlQmFja3dhcmQodGFicywgdGFi X3BhbmUpIHsKKyAgbmF2aWdhdGVCYWNrd2FyZCh0YWJzLCB0YWJfcGFuZSwgZXZlbnQpIHsKICAg ICB2YXIgc2VsZiA9IHRoaXMsCiAgICAgICBuZXh0VGFiUGFuZSwKICAgICAgIGlubmVyVGFiQ29u dGFpbmVyLApAQCAtMTA1LDYgKzEwNSw3IEBAIGNsYXNzIGRpYWxvZ1RhYk5hdmlnYXRvciB7CiAg ICAgICAgIHNlbGYudGFiU3dpdGNoaW5nID0gZmFsc2U7CiAgICAgICB9LCAyMDApOwogCisgICAg ICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApA QCAtMTEyLDcgKzExMyw3IEBAIGNsYXNzIGRpYWxvZ1RhYk5hdmlnYXRvciB7CiAgICAgcmV0dXJu IGZhbHNlOwogICB9CiAKLSAgbmF2aWdhdGVGb3J3YXJkKHRhYnMsIHRhYl9wYW5lKSB7CisgIG5h dmlnYXRlRm9yd2FyZCh0YWJzLCB0YWJfcGFuZSwgZXZlbnQpIHsKICAgICB2YXIgc2VsZiA9IHRo aXMsCiAgICAgICBuZXh0VGFiUGFuZSwKICAgICAgIGlubmVyVGFiQ29udGFpbmVyLApAQCAtMTM1 LDYgKzEzNiw4IEBAIGNsYXNzIGRpYWxvZ1RhYk5hdmlnYXRvciB7CiAgICAgICAgIHNlbGYudGFi U3dpdGNoaW5nID0gZmFsc2U7CiAgICAgICB9LCAyMDApOwogCisgICAgICBldmVudC5zdG9wUHJv cGFnYXRpb24oKTsKKwogICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHRoaXMudGFiU3dp dGNoaW5nID0gZmFsc2U7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvc2Nzcy9fYmFj a2dyaWQub3ZlcnJpZGVzLnNjc3MgYi93ZWIvcGdhZG1pbi9zdGF0aWMvc2Nzcy9fYmFja2dyaWQu b3ZlcnJpZGVzLnNjc3MKaW5kZXggYjBiNzQ3NS4uNDEyNjZlYiAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vc3RhdGljL3Njc3MvX2JhY2tncmlkLm92ZXJyaWRlcy5zY3NzCisrKyBiL3dlYi9wZ2Fk bWluL3N0YXRpYy9zY3NzL19iYWNrZ3JpZC5vdmVycmlkZXMuc2NzcwpAQCAtMjg4LDYgKzI4OCwx MCBAQCB0YWJsZS5iYWNrZ3JpZCB7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWJnLXRo ZW1lICFpbXBvcnRhbnQ7CiAgIH0KIAorICAmIHRkLmVkaXQtY2VsbC5lZGl0b3I6Zm9jdXMgewor ICAgIG91dGxpbmU6ICRpbnB1dC1mb2N1cy1ib3JkZXItY29sb3IgYXV0byA1cHggIWltcG9ydGFu dDsKKyAgfQorCiAgIHRyLmVkaXRvci1yb3cgIHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29s b3ItZ3JheS1saWdodCAhaW1wb3J0YW50OwogICAgICYgPiB0ZCB7CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9zdGF0aWMvc2Nzcy9fcGdhZG1pbi5zdHlsZS5zY3NzIGIvd2ViL3BnYWRtaW4vc3Rh dGljL3Njc3MvX3BnYWRtaW4uc3R5bGUuc2NzcwppbmRleCBmNWE4ODc3Li44ZjFlMjQ4IDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvc2Nzcy9fcGdhZG1pbi5zdHlsZS5zY3NzCisrKyBi L3dlYi9wZ2FkbWluL3N0YXRpYy9zY3NzL19wZ2FkbWluLnN0eWxlLnNjc3MKQEAgLTcyOSwxMCAr NzI5LDE3IEBAIHRhYmxlIHRyIHRoIHsKICAgICBwYWRkaW5nOiAwOwogICB9CiAgICYgYnV0dG9u OmZvY3VzIHsKLSAgICBvdXRsaW5lOiBub25lOworICAgIG91dGxpbmU6ICRpbnB1dC1mb2N1cy1i b3JkZXItY29sb3IgYXV0byA1cHggIWltcG9ydGFudDsKICAgfQogfQogCit0YWJsZSB0ciB0ZCB7 CisgIHRkLmVkaXQtY2VsbDpmb2N1cywKKyAgdGQuZGVsZXRlLWNlbGw6Zm9jdXMsCisgIHRkLnN0 cmluZy1jZWxsOmZvY3VzIHsKKyAgICBvdXRsaW5lOiAkaW5wdXQtZm9jdXMtYm9yZGVyLWNvbG9y IGF1dG8gNXB4ICFpbXBvcnRhbnQ7CisgIH0KK30KIAogLnByaXZpbGVnZV9sYWJlbHsKICAgZm9u dC1zaXplOiAxMHB4IWltcG9ydGFudDsK --00000000000089aed9058d618154--