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 1hT0e4-0007so-Ql for pgadmin-hackers@arkaria.postgresql.org; Tue, 21 May 2019 09:01:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1hT0e3-0001aD-C2 for pgadmin-hackers@arkaria.postgresql.org; Tue, 21 May 2019 09:01:15 +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 1hT0e2-0001a6-Vy for pgadmin-hackers@lists.postgresql.org; Tue, 21 May 2019 09:01:15 +0000 Received: from mail-lf1-x134.google.com ([2a00:1450:4864:20::134]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hT0dw-0002UY-1l for pgadmin-hackers@postgresql.org; Tue, 21 May 2019 09:01:14 +0000 Received: by mail-lf1-x134.google.com with SMTP id l26so12410750lfh.13 for ; Tue, 21 May 2019 02:01:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=MK9VAffwgdzOiE3W3HgKGdsUPrn6Gy9s0C3tmIrWAOE=; b=Z5uJquYS6xNXo9WBJ4rWn5KFJt87UD02CTc1OlOJXQoSgvhT79drM1mDx8fywOgwTz RS6fzs6D/TTM9h+JQ80XtTydxsfAAYWcE9ltRFsqVxNOepz2wtgSOJqq7yYgwFXYzZN3 dNFArslWDYzcA6hYyP8mEigavpKKGGCloL5wFAC+mBw9TorYoW71DQmEVxbGUe+BNm+t PeZco/MHfa1ZAEZlNuGJ0Dtz+jX2tLgEvv+gJxzgAVBYWgOkRPBBuvf4An1EUMFtQSpU MuMeBX2OmGIYnfCgTSIK9/LegeLjNrbzshuRG6KehtmTRiBESIuUjtlq7hT1KTBeg/e3 HLzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=MK9VAffwgdzOiE3W3HgKGdsUPrn6Gy9s0C3tmIrWAOE=; b=JiXF4AMr/kx5RAlkvO9aq9/0fvm89YGaURg6NbFF79Et/Gq8QWdSRpY8tnq90MJXKH rhLewbsz4nzuhYutI4glqKxkSCCQPrnoyRdB77MajkYAwDZWG3+uA98WhB9bKMMS83Jh hAqVOioZ/3UcaYlsztEpPyhgwcArSLtgvvBLWDyIFNyl894oVIrBEbQTbXrReg9aNFPg fRw8x5O+t/JLenU43KKujblaGBn4rTvql2oTd7VAHyshJvkmBPXkGBsq/xBNoGHD0zGn NF6TqEv2//99NSRksvHi62UtJvlxFaw7hcrbr13lojUD0EHe3n/HIP6ngRS7IKVwgwhy dZJw== X-Gm-Message-State: APjAAAVdWGo7AD4HwUJbZRDK6fzA0UAXE65ky0myFxDMt34jKScnUGxh JSt2y16cC2pP0q4wZEMzx9xgVArDXphHmYNHNOO5VdfhpkU= X-Google-Smtp-Source: APXvYqzEUYAqlAByvhy44gsjP6aG5Ce89eFzQQuth3PRPGzYfQGJ6z/Dr9qMSaPUq3Z2jYcALDkl/hZqm/BMv+fr/ZY= X-Received: by 2002:a19:700d:: with SMTP id h13mr1402836lfc.39.1558429266362; Tue, 21 May 2019 02:01:06 -0700 (PDT) MIME-Version: 1.0 From: Aditya Toshniwal Date: Tue, 21 May 2019 14:30:30 +0530 Message-ID: Subject: [pgAdmin][RM4195] Tab navigation is broken in Query tool (Accessibility) To: pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000d48aae058962163a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000d48aae058962163a Content-Type: multipart/alternative; boundary="000000000000d48aac0589621638" --000000000000d48aac0589621638 Content-Type: text/plain; charset="UTF-8" Hi Hackers, Attached is the patch to fix the accessibility issue in query tool. The query tool can be completely restructured unlike previously where query tool used to stick at top and other tabs in the bottom. - I have added a new shortcut to switch between frames if in query tool the tab positions are changed. On switching the frames, the frame will blink to show it is focussed. - In the frame, you can switch tab same as previous. The tabs in SQL editor are cyclic now, which means if you execute shortcut to go right on the last tab then it will cycle to first tab. - I have also changed the default shortcut to switch between tabs from Shift+Ctrl+ArrowKeys to Shift+Ctrl+[ and ] similar to what we have in browser tabs. - Similar changes done for debugger also. Kindly review. -- Thanks and Regards, Aditya Toshniwal Software Engineer | EnterpriseDB India | Pune "Don't Complain about Heat, Plant a TREE" --000000000000d48aac0589621638 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

Attached is the patch to fix= the accessibility issue in query tool.

The query tool can be complete= ly restructured unlike previously where query tool used to stick at top and= other tabs in the bottom.=C2=A0
- I have added a new shortcut to switch be= tween frames if in query tool the tab positions are changed. On switching t= he frames, the frame will blink to show it is focussed.=C2=A0
- In the fram= e, you can switch tab same as previous. The tabs in SQL editor are cyclic n= ow, which means if you execute shortcut to go right on the last tab then it= will cycle to first tab.
- I have also changed the default shortcut to swi= tch between tabs from Shift+Ctrl+ArrowKeys to Shift+Ctrl+[ and ] similar to= what we have in browser tabs.
- Similar changes done for debugger also.
Kindly review.

--
Thanks and Regards,
Aditya Toshniwal
Software Engineer |=C2=A0EnterpriseDB India = |=C2=A0Pune
&qu= ot;Don't Complain about Heat, Plant a TREE"
--000000000000d48aac0589621638-- --000000000000d48aae058962163a Content-Type: application/octet-stream; name="RM4195.patch" Content-Disposition: attachment; filename="RM4195.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jvxkitv90 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9rZXlib2FyZF9zaG9ydGN1dHMuanMg Yi93ZWIvcGdhZG1pbi9zdGF0aWMvanMva2V5Ym9hcmRfc2hvcnRjdXRzLmpzCmluZGV4IDAxNzUy OWI3Li5iZTFiZGM5MyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2tleWJvYXJk X3Nob3J0Y3V0cy5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMva2V5Ym9hcmRfc2hvcnRj dXRzLmpzCkBAIC05LDYgKzksNyBAQAogCiBpbXBvcnQgJCBmcm9tICdqcXVlcnknOwogaW1wb3J0 IGdldHRleHQgZnJvbSAnc291cmNlcy9nZXR0ZXh0JzsKK2ltcG9ydCB7IGdldE1vZCB9IGZyb20g J3NvdXJjZXMvdXRpbHMnOwogCiBjb25zdCBQRVJJT0RfS0VZID0gMTkwLAogICBGV0RfU0xBU0hf S0VZID0gMTkxLApAQCAtMTE2LDkgKzExNyw0NCBAQCBmdW5jdGlvbiB2YWxpZGF0ZVNob3J0Y3V0 S2V5cyh1c2VyX2RlZmluZWRfc2hvcnRjdXQsIGV2ZW50KSB7CiAgICAgdXNlcl9kZWZpbmVkX3No b3J0Y3V0LmtleS5rZXlfY29kZSA9PSBrZXlDb2RlOwogfQogCisvLyBGaW5kcyB0aGUgZGVzaXJl ZCBwYW5lbCBvbiB3aGljaCB1c2VyIHdhbnRzIHRvIG5hdmlnYXRlIHRvCitmdW5jdGlvbiBmb2N1 c0RvY2tlclBhbmVsKGRvY2tlciwgb3ApIHsKKyAgaWYoIWRvY2tlciB8fCAhZG9ja2VyLl9mb2N1 c0ZyYW1lKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgbGV0IGZvY3VzX2ZyYW1lID0gZG9ja2Vy Ll9mb2N1c0ZyYW1lLAorICAgIGZvY3VzX2lkID0gMCwKKyAgICBmbGFzaCA9IGZhbHNlOworCisg IC8vIE1vZCBpcyB1c2VkIHRvIGN5Y2xlIHRoZSBvcAorICBpZiAob3AgPT0gJ3N3aXRjaCcpIHsK KyAgICBsZXQgaSA9IDAsIHRvdGFsX2ZyYW1lcyA9IGRvY2tlci5fZnJhbWVMaXN0Lmxlbmd0aDsK KworICAgIGZvcihpID0gMDsgaSA8IHRvdGFsX2ZyYW1lczsgaSsrKSB7CisgICAgICBpZihmb2N1 c19mcmFtZSA9PT0gZG9ja2VyLl9mcmFtZUxpc3RbaV0pIGJyZWFrOworICAgIH0KKyAgICBmb2N1 c19mcmFtZSA9IGRvY2tlci5fZnJhbWVMaXN0W2dldE1vZChpKzEsdG90YWxfZnJhbWVzKV07Cisg ICAgZm9jdXNfaWQgPSBmb2N1c19mcmFtZS5fY3VyVGFiOworICAgIGZsYXNoID0gdHJ1ZTsKKyAg fSBlbHNlIGlmIChvcCA9PSAnbGVmdCcpIHsKKyAgICBmb2N1c19pZCA9IGdldE1vZChmb2N1c19m cmFtZS5fY3VyVGFiLTEsIGZvY3VzX2ZyYW1lLl9wYW5lbExpc3QubGVuZ3RoKTsKKyAgICBmbGFz aCA9IGZhbHNlOworICB9IGVsc2UgaWYgKG9wID09ICdyaWdodCcpIHsKKyAgICBmb2N1c19pZCA9 IGdldE1vZChmb2N1c19mcmFtZS5fY3VyVGFiKzEsIGZvY3VzX2ZyYW1lLl9wYW5lbExpc3QubGVu Z3RoKTsKKyAgICBmbGFzaCA9IGZhbHNlOworICB9CisKKyAgbGV0IGZvY3VzX3BhbmVsID0gZm9j dXNfZnJhbWUuX3BhbmVsTGlzdFtmb2N1c19pZF07CisKKyAgZm9jdXNfcGFuZWwuJGNvbnRhaW5l ci5maW5kKCcqW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PSItMSJdKScpLnRyaWdnZXIoJ2ZvY3Vz Jyk7CisgIGZvY3VzX3BhbmVsLmZvY3VzKGZsYXNoKTsKKyAgcmV0dXJuIGZvY3VzX3BhbmVsLl90 eXBlOworfQorCiAvKiBEZWJ1Z2dlcjogS2V5Ym9hcmQgU2hvcnRjdXRzIGhhbmRsaW5nICovCi1m dW5jdGlvbiBrZXlib2FyZFNob3J0Y3V0c0RlYnVnZ2VyKCRlbCwgZXZlbnQsIHByZWZlcmVuY2Vz KSB7Ci0gIGxldCBwYW5lbF9pZCwgcGFuZWxfY29udGVudCwgJGlucHV0OworZnVuY3Rpb24ga2V5 Ym9hcmRTaG9ydGN1dHNEZWJ1Z2dlcigkZWwsIGV2ZW50LCBwcmVmZXJlbmNlcywgZG9ja2VyKSB7 CisgIGxldCBwYW5lbF90eXBlID0gJycsIHBhbmVsX2NvbnRlbnQsICRpbnB1dDsKIAogICBpZih0 aGlzLnZhbGlkYXRlU2hvcnRjdXRLZXlzKHByZWZlcmVuY2VzLmVkaXRfZ3JpZF92YWx1ZXMsIGV2 ZW50KSkgewogICAgIHRoaXMuX3N0b3BFdmVudFByb3BhZ2F0aW9uKGV2ZW50KTsKQEAgLTEzMiw1 NCArMTY4LDMyIEBAIGZ1bmN0aW9uIGtleWJvYXJkU2hvcnRjdXRzRGVidWdnZXIoJGVsLCBldmVu dCwgcHJlZmVyZW5jZXMpIHsKICAgICB9CiAgIH0gZWxzZSBpZih0aGlzLnZhbGlkYXRlU2hvcnRj dXRLZXlzKHByZWZlcmVuY2VzLm1vdmVfbmV4dCwgZXZlbnQpKSB7CiAgICAgdGhpcy5fc3RvcEV2 ZW50UHJvcGFnYXRpb24oZXZlbnQpOwotICAgIHBhbmVsX2lkID0gdGhpcy5nZXRJbm5lclBhbmVs KCRlbCwgJ3JpZ2h0Jyk7CisgICAgcGFuZWxfdHlwZSA9IHRoaXMuZm9jdXNEb2NrZXJQYW5lbChk b2NrZXIsICdyaWdodCcpOwogICB9IGVsc2UgaWYodGhpcy52YWxpZGF0ZVNob3J0Y3V0S2V5cyhw cmVmZXJlbmNlcy5tb3ZlX3ByZXZpb3VzLCBldmVudCkpIHsKICAgICB0aGlzLl9zdG9wRXZlbnRQ cm9wYWdhdGlvbihldmVudCk7Ci0gICAgcGFuZWxfaWQgPSB0aGlzLmdldElubmVyUGFuZWwoJGVs LCAnbGVmdCcpOwotICB9Ci0gIHJldHVybiBwYW5lbF9pZDsKLX0KLQotLy8gRmluZHMgdGhlIGRl c2lyZWQgcGFuZWwgb24gd2hpY2ggdXNlciB3YW50cyB0byBuYXZpZ2F0ZSB0bwotZnVuY3Rpb24g Z2V0SW5uZXJQYW5lbCgkZWwsIGRpcmVjdGlvbikgewotICBpZighJGVsIHx8ICEkZWwubGVuZ3Ro KQotICAgIHJldHVybiBmYWxzZTsKLQotICBsZXQgdG90YWxfcGFuZWxzID0gJGVsLmZpbmQoJy53 Y1BhbmVsVGFiJyk7Ci0gIC8vIElmIG5vIHBhbmVscyBmb3VuZCBPUiBpZiBzaW5nbGUgcGFuZWwK LSAgaWYgKCF0b3RhbF9wYW5lbHMubGVuZ3RoIHx8IHRvdGFsX3BhbmVscy5sZW5ndGggPT0gMSkK LSAgICByZXR1cm4gZmFsc2U7Ci0KLSAgbGV0IGFjdGl2ZV9wYW5lbCA9ICQodG90YWxfcGFuZWxz KS5maWx0ZXIoJy53Y1BhbmVsVGFiQWN0aXZlJyksCi0gICAgaWQgPSBwYXJzZUludCgkKGFjdGl2 ZV9wYW5lbCkuYXR0cignaWQnKSksCi0gICAgZmlzdF9wYW5lbCA9IDAsCi0gICAgbGFzdF9wYW5l bCA9IHRvdGFsX3BhbmVscy5sZW5ndGggLSAxOwotCi0gIC8vIEZpbmQgZGVzaXJlZCBwYW5lbAot ICBpZiAoZGlyZWN0aW9uID09ICdsZWZ0JykgewotICAgIGlmKGlkID4gZmlzdF9wYW5lbCkKLSAg ICAgIGlkLS07Ci0gIH0gZWxzZSB7Ci0gICAgaWYgKGlkIDwgbGFzdF9wYW5lbCkKLSAgICAgIGlk Kys7CisgICAgcGFuZWxfdHlwZSA9IHRoaXMuZm9jdXNEb2NrZXJQYW5lbChkb2NrZXIsICdsZWZ0 Jyk7CisgIH0gZWxzZSBpZih0aGlzLnZhbGlkYXRlU2hvcnRjdXRLZXlzKHByZWZlcmVuY2VzLnN3 aXRjaF9wYW5lbCwgZXZlbnQpKSB7CisgICAgdGhpcy5fc3RvcEV2ZW50UHJvcGFnYXRpb24oZXZl bnQpOworICAgIHBhbmVsX3R5cGUgPSB0aGlzLmZvY3VzRG9ja2VyUGFuZWwoZG9ja2VyLCAnc3dp dGNoJyk7CiAgIH0KLSAgcmV0dXJuIGlkOworICByZXR1cm4gcGFuZWxfdHlwZTsKIH0KIAogLyog UXVlcnkgdG9vbDogS2V5Ym9hcmQgU2hvcnRjdXRzIGhhbmRsaW5nICovCiBmdW5jdGlvbiBrZXli b2FyZFNob3J0Y3V0c1F1ZXJ5VG9vbCgKLSAgc3FsRWRpdG9yQ29udHJvbGxlciwgcXVlcnlUb29s QWN0aW9ucywgZXZlbnQKKyAgc3FsRWRpdG9yQ29udHJvbGxlciwgcXVlcnlUb29sQWN0aW9ucywg ZXZlbnQsIGRvY2tlcgogKSB7CiAgIGlmIChzcWxFZGl0b3JDb250cm9sbGVyLmlzUXVlcnlSdW5u aW5nKCkpIHsKICAgICByZXR1cm47CiAgIH0KLSAgbGV0IGtleUNvZGUgPSBldmVudC53aGljaCB8 fCBldmVudC5rZXlDb2RlLCBwYW5lbF9pZDsKKyAgbGV0IGtleUNvZGUgPSBldmVudC53aGljaCB8 fCBldmVudC5rZXlDb2RlLCBwYW5lbF90eXBlID0gJyc7CiAgIGxldCBleGVjdXRlS2V5cyA9IHNx bEVkaXRvckNvbnRyb2xsZXIucHJlZmVyZW5jZXMuZXhlY3V0ZV9xdWVyeTsKICAgbGV0IGV4cGxh aW5LZXlzID0gc3FsRWRpdG9yQ29udHJvbGxlci5wcmVmZXJlbmNlcy5leHBsYWluX3F1ZXJ5Owog ICBsZXQgZXhwbGFpbkFuYWx5emVLZXlzID0gc3FsRWRpdG9yQ29udHJvbGxlci5wcmVmZXJlbmNl cy5leHBsYWluX2FuYWx5emVfcXVlcnk7CiAgIGxldCBkb3dubG9hZENzdktleXMgPSBzcWxFZGl0 b3JDb250cm9sbGVyLnByZWZlcmVuY2VzLmRvd25sb2FkX2NzdjsKLSAgbGV0IG5leHRQYW5lbEtl eXMgPSBzcWxFZGl0b3JDb250cm9sbGVyLnByZWZlcmVuY2VzLm1vdmVfbmV4dDsKLSAgbGV0IHBy ZXZpb3VzUGFuZWxLZXlzID0gc3FsRWRpdG9yQ29udHJvbGxlci5wcmVmZXJlbmNlcy5tb3ZlX3By ZXZpb3VzOworICBsZXQgbmV4dFRhYktleXMgPSBzcWxFZGl0b3JDb250cm9sbGVyLnByZWZlcmVu Y2VzLm1vdmVfbmV4dDsKKyAgbGV0IHByZXZpb3VzVGFiS2V5cyA9IHNxbEVkaXRvckNvbnRyb2xs ZXIucHJlZmVyZW5jZXMubW92ZV9wcmV2aW91czsKKyAgbGV0IHN3aXRjaFBhbmVsS2V5cyA9IHNx bEVkaXRvckNvbnRyb2xsZXIucHJlZmVyZW5jZXMuc3dpdGNoX3BhbmVsOwogICBsZXQgdG9nZ2xl Q2FzZUtleXMgPSBzcWxFZGl0b3JDb250cm9sbGVyLnByZWZlcmVuY2VzLnRvZ2dsZV9jYXNlOwog ICBsZXQgY29tbWl0S2V5cyA9IHNxbEVkaXRvckNvbnRyb2xsZXIucHJlZmVyZW5jZXMuY29tbWl0 X3RyYW5zYWN0aW9uOwogICBsZXQgcm9sbGJhY2tLZXlzID0gc3FsRWRpdG9yQ29udHJvbGxlci5w cmVmZXJlbmNlcy5yb2xsYmFja190cmFuc2FjdGlvbjsKQEAgLTIzNiwxMiArMjUwLDE1IEBAIGZ1 bmN0aW9uIGtleWJvYXJkU2hvcnRjdXRzUXVlcnlUb29sKAogICAgICAgICAmJiAkKGV2ZW50LnRh cmdldCkuY2xvc2VzdCgnLmRyb3Bkb3duLXN1Ym1lbnUnKS5sZW5ndGggPiAwKSB7CiAgICAgICAk KGV2ZW50LnRhcmdldCkuY2xvc2VzdCgnLmRyb3Bkb3duLXN1Ym1lbnUnKS5maW5kKCcuZHJvcGRv d24tbWVudScpLnJlbW92ZUNsYXNzKCdzaG93Jyk7CiAgICAgfQotICB9IGVsc2UgaWYodGhpcy52 YWxpZGF0ZVNob3J0Y3V0S2V5cyhuZXh0UGFuZWxLZXlzLCBldmVudCkpIHsKKyAgfSBlbHNlIGlm KHRoaXMudmFsaWRhdGVTaG9ydGN1dEtleXMobmV4dFRhYktleXMsIGV2ZW50KSkgeworICAgIHRo aXMuX3N0b3BFdmVudFByb3BhZ2F0aW9uKGV2ZW50KTsKKyAgICBwYW5lbF90eXBlID0gdGhpcy5m b2N1c0RvY2tlclBhbmVsKGRvY2tlciwgJ3JpZ2h0Jyk7CisgIH0gZWxzZSBpZih0aGlzLnZhbGlk YXRlU2hvcnRjdXRLZXlzKHByZXZpb3VzVGFiS2V5cywgZXZlbnQpKSB7CiAgICAgdGhpcy5fc3Rv cEV2ZW50UHJvcGFnYXRpb24oZXZlbnQpOwotICAgIHBhbmVsX2lkID0gdGhpcy5nZXRJbm5lclBh bmVsKHNxbEVkaXRvckNvbnRyb2xsZXIuY29udGFpbmVyLCAncmlnaHQnKTsKLSAgfSBlbHNlIGlm KHRoaXMudmFsaWRhdGVTaG9ydGN1dEtleXMocHJldmlvdXNQYW5lbEtleXMsIGV2ZW50KSkgewor ICAgIHBhbmVsX3R5cGUgPSB0aGlzLmZvY3VzRG9ja2VyUGFuZWwoZG9ja2VyLCAnbGVmdCcpOwor ICB9IGVsc2UgaWYodGhpcy52YWxpZGF0ZVNob3J0Y3V0S2V5cyhzd2l0Y2hQYW5lbEtleXMsIGV2 ZW50KSkgewogICAgIHRoaXMuX3N0b3BFdmVudFByb3BhZ2F0aW9uKGV2ZW50KTsKLSAgICBwYW5l bF9pZCA9IHRoaXMuZ2V0SW5uZXJQYW5lbChzcWxFZGl0b3JDb250cm9sbGVyLmNvbnRhaW5lciwg J2xlZnQnKTsKKyAgICBwYW5lbF90eXBlID0gdGhpcy5mb2N1c0RvY2tlclBhbmVsKGRvY2tlciwg J3N3aXRjaCcpOwogICB9IGVsc2UgaWYoa2V5Q29kZSA9PT0gVVBfS0VZIHx8IGtleUNvZGUgPT09 IERPV05fS0VZKSB7CiAgICAgLypBcHBseSBvbmx5IGZvciBkcm9wZG93biovCiAgICAgaWYoJChl dmVudC50YXJnZXQpLmNsb3Nlc3QoJy5kcm9wZG93bi1tZW51JykubGVuZ3RoID4gMCkgewpAQCAt MjkzLDEzICszMTAsMTMgQEAgZnVuY3Rpb24ga2V5Ym9hcmRTaG9ydGN1dHNRdWVyeVRvb2woCiAg ICAgfQogICB9CiAKLSAgcmV0dXJuIHBhbmVsX2lkOworICByZXR1cm4gcGFuZWxfdHlwZTsKIH0K IAogZXhwb3J0IHsKICAga2V5Ym9hcmRTaG9ydGN1dHNEZWJ1Z2dlciBhcyBwcm9jZXNzRXZlbnRE ZWJ1Z2dlciwKICAga2V5Ym9hcmRTaG9ydGN1dHNRdWVyeVRvb2wgYXMgcHJvY2Vzc0V2ZW50UXVl cnlUb29sLAotICBnZXRJbm5lclBhbmVsLCB2YWxpZGF0ZVNob3J0Y3V0S2V5cywKKyAgZm9jdXNE b2NrZXJQYW5lbCwgdmFsaWRhdGVTaG9ydGN1dEtleXMsCiAgIF9zdG9wRXZlbnRQcm9wYWdhdGlv biwgaXNNYWMsIGlzS2V5Q3RybEFsdCwgaXNLZXlBbHRTaGlmdCwgaXNLZXlDdHJsU2hpZnQsCiAg IGlzS2V5Q3RybEFsdFNoaWZ0LCBpc0FsdFNoaWZ0Qm90aCwgaXNDdHJsU2hpZnRCb3RoLCBpc0N0 cmxBbHRCb3RoLAogICBzaG9ydGN1dF9rZXksIHNob3J0Y3V0X3RpdGxlLCBzaG9ydGN1dF9hY2Nl c3NrZXlfdGl0bGUsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvdXRpbHMuanMg Yi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvdXRpbHMuanMKaW5kZXggNmIxZWQ5YWQuLjFjNThhOWVi IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvdXRpbHMuanMKKysrIGIvd2ViL3Bn YWRtaW4vc3RhdGljL2pzL3V0aWxzLmpzCkBAIC03OSwzICs3OSw3IEBAIGV4cG9ydCBmdW5jdGlv biBnZXRHQ0QoaW5wX2FycikgewogCiAgIHJldHVybiByZXN1bHQ7CiB9CisKK2V4cG9ydCBmdW5j dGlvbiBnZXRNb2Qobm8sIGRpdmlzb3IpIHsKKyAgcmV0dXJuICgobm8gJSBkaXZpc29yKSArIGRp dmlzb3IpICUgZGl2aXNvcjsKK30KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RlYnVn Z2VyL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvZGVidWdnZXIvX19pbml0X18ucHkK aW5kZXggNDRkNTVkYTguLmEyYzU5MmUwIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9k ZWJ1Z2dlci9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi90b29scy9kZWJ1Z2dlci9fX2lu aXRfXy5weQpAQCAtMTg0LDggKzE4NCw4IEBAIGNsYXNzIERlYnVnZ2VyTW9kdWxlKFBnQWRtaW5N b2R1bGUpOgogICAgICAgICAgICAgICAgICdzaGlmdCc6IFRydWUsCiAgICAgICAgICAgICAgICAg J2NvbnRyb2wnOiBGYWxzZSwKICAgICAgICAgICAgICAgICAna2V5JzogewotICAgICAgICAgICAg ICAgICAgICAna2V5X2NvZGUnOiAzNywKLSAgICAgICAgICAgICAgICAgICAgJ2NoYXInOiAnQXJy b3dMZWZ0JworICAgICAgICAgICAgICAgICAgICAna2V5X2NvZGUnOiA5MSwKKyAgICAgICAgICAg ICAgICAgICAgJ2NoYXInOiAnWycKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9LAog ICAgICAgICAgICAgY2F0ZWdvcnlfbGFiZWw9Z2V0dGV4dCgnS2V5Ym9hcmQgc2hvcnRjdXRzJyks CkBAIC0yMDIsOCArMjAyLDI2IEBAIGNsYXNzIERlYnVnZ2VyTW9kdWxlKFBnQWRtaW5Nb2R1bGUp OgogICAgICAgICAgICAgICAgICdzaGlmdCc6IFRydWUsCiAgICAgICAgICAgICAgICAgJ2NvbnRy b2wnOiBGYWxzZSwKICAgICAgICAgICAgICAgICAna2V5JzogewotICAgICAgICAgICAgICAgICAg ICAna2V5X2NvZGUnOiAzOSwKLSAgICAgICAgICAgICAgICAgICAgJ2NoYXInOiAnQXJyb3dSaWdo dCcKKyAgICAgICAgICAgICAgICAgICAgJ2tleV9jb2RlJzogOTMsCisgICAgICAgICAgICAgICAg ICAgICdjaGFyJzogJ10nCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAg ICAgICAgIGNhdGVnb3J5X2xhYmVsPWdldHRleHQoJ0tleWJvYXJkIHNob3J0Y3V0cycpLAorICAg ICAgICAgICAgZmllbGRzPXNob3J0Y3V0X2ZpZWxkcworICAgICAgICApCisKKyAgICAgICAgc2Vs Zi5wcmVmZXJlbmNlLnJlZ2lzdGVyKAorICAgICAgICAgICAgJ2tleWJvYXJkX3Nob3J0Y3V0cycs CisgICAgICAgICAgICAnc3dpdGNoX3BhbmVsJywKKyAgICAgICAgICAgIGdldHRleHQoJ1N3aXRj aCBQYW5lbCcpLAorICAgICAgICAgICAgJ2tleWJvYXJkc2hvcnRjdXQnLAorICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICdhbHQnOiBUcnVlLAorICAgICAgICAgICAgICAgICdzaGlmdCc6 IFRydWUsCisgICAgICAgICAgICAgICAgJ2NvbnRyb2wnOiBGYWxzZSwKKyAgICAgICAgICAgICAg ICAna2V5JzogeworICAgICAgICAgICAgICAgICAgICAna2V5X2NvZGUnOiA5LAorICAgICAgICAg ICAgICAgICAgICAnY2hhcic6ICdUYWInCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg fSwKICAgICAgICAgICAgIGNhdGVnb3J5X2xhYmVsPWdldHRleHQoJ0tleWJvYXJkIHNob3J0Y3V0 cycpLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZGVidWdnZXIvc3RhdGljL2pzL2Rp cmVjdC5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2VyL3N0YXRpYy9qcy9kaXJlY3QuanMK aW5kZXggZDBiY2YzZWUuLjVjNjQ5YjRiIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9k ZWJ1Z2dlci9zdGF0aWMvanMvZGlyZWN0LmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2RlYnVn Z2VyL3N0YXRpYy9qcy9kaXJlY3QuanMKQEAgLTE1MTAsMTcgKzE1MTAsMTcgQEAgZGVmaW5lKFsK ICAgICAgIGNvbnRyb2xsZXIuU3RlcF9pbnRvKHBnVG9vbHMuRGlyZWN0RGVidWcudHJhbnNfaWQp OwogICAgIH0sCiAgICAga2V5QWN0aW9uOiBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICAgIHZhciAk ZWwgPSB0aGlzLiRlbCwgcGFuZWxfaWQsIGFjdHVhbF9wYW5lbCwKLSAgICAgICAgc2VsZiA9IHRo aXM7CisgICAgICBsZXQgcGFuZWxfdHlwZT0nJzsKIAotICAgICAgcGFuZWxfaWQgPSBrZXlib2Fy ZFNob3J0Y3V0cy5wcm9jZXNzRXZlbnREZWJ1Z2dlcigKLSAgICAgICAgJGVsLCBldmVudCwgc2Vs Zi5wcmVmZXJlbmNlcworICAgICAgcGFuZWxfdHlwZSA9IGtleWJvYXJkU2hvcnRjdXRzLnByb2Nl c3NFdmVudERlYnVnZ2VyKAorICAgICAgICB0aGlzLiRlbCwgZXZlbnQsIHRoaXMucHJlZmVyZW5j ZXMsIHBnVG9vbHMuRGlyZWN0RGVidWcuZG9ja2VyCiAgICAgICApOwogCi0gICAgICAvLyBQYW5l bCBuYXZpZ2F0aW9uCi0gICAgICBpZighXy5pc1VuZGVmaW5lZChwYW5lbF9pZCkgJiYgIV8uaXNO dWxsKHBhbmVsX2lkKSkgewotICAgICAgICBhY3R1YWxfcGFuZWwgPSBwYW5lbF9pZCArIDE7Ci0g ICAgICAgIHBnVG9vbHMuRGlyZWN0RGVidWcuZG9ja2VyLmZpbmRQYW5lbHMoKVthY3R1YWxfcGFu ZWxdLmZvY3VzKCk7CisKKyAgICAgIGlmKCFfLmlzTnVsbChwYW5lbF90eXBlKSAmJiAhXy5pc1Vu ZGVmaW5lZChwYW5lbF90eXBlKSAmJiBwYW5lbF90eXBlICE9ICcnKSB7CisgICAgICAgIHNldFRp bWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgcGdCcm93c2VyLkV2ZW50cy50cmlnZ2VyKGBw Z2FkbWluOmRlYnVnZ2VyOiR7cGFuZWxfdHlwZX06Zm9jdXNgKTsKKyAgICAgICAgfSwgMTAwKTsK ICAgICAgIH0KICAgICB9LAogICB9KTsKQEAgLTE4NTMsNiArMTg1MywxMCBAQCBkZWZpbmUoWwog ICAgICAgICB9CiAgICAgICB9KTsKIAorICAgICAgcGdCcm93c2VyLkV2ZW50cy5vbigncGdhZG1p bjpkZWJ1Z2dlcjpjb2RlOmZvY3VzJywgKCk9PnsKKyAgICAgICAgc2VsZi5lZGl0b3IuZm9jdXMo KTsKKyAgICAgIH0pOworCiAgICAgICAvLyBPbiBsb2FkaW5nIHRoZSBkb2NrZXIsIHJlZ2lzdGVy IHRoZSBjYWxsYmFja3MKICAgICAgIHZhciBvbkxvYWQgPSBmdW5jdGlvbigpIHsKICAgICAgICAg c2VsZi5kb2NrZXIuZmluaXNoTG9hZGluZygxMDApOwpAQCAtMTkwMyw2ICsxOTA3LDE2IEBAIGRl ZmluZShbCiAgICAgICAvLyBDcmVhdGUgdGhlIHRvb2xiYXIgdmlldyBmb3IgZGVidWdnaW5nIHRo ZSBmdW5jdGlvbgogICAgICAgdGhpcy50b29sYmFyVmlldyA9IG5ldyBEZWJ1Z2dlclRvb2xiYXJW aWV3KCk7CiAKKyAgICAgIC8qIHdjRG9ja2VyIGZvY3VzZXMgb24gd2luZG93IGFsd2F5cywgYW5k IGFsbCBvdXIgc2hvcnRjdXRzIGFyZQorICAgICAgICogYmluZCB0byBlZGl0b3ItcGFuZWwuIFNv IHdoZW4gd2UgdXNlIHdjRG9ja2VyIGZvY3VzLCBlZGl0b3ItcGFuZWwKKyAgICAgICAqIGxvc2Vz IGZvY3VzIGFuZCBldmVudHMgZG9uJ3Qgd29yay4KKyAgICAgICAqLworICAgICAgJCh3aW5kb3cp Lm9uKCdrZXlkb3duJywgKGUpPT57CisgICAgICAgIGlmKHNlbGYudG9vbGJhclZpZXcua2V5QWN0 aW9uKSB7CisgICAgICAgICAgc2VsZi50b29sYmFyVmlldy5rZXlBY3Rpb24oZSk7CisgICAgICAg IH0KKyAgICAgIH0pOworCiAgICAgICAvKiBDYWNoZSBtYXkgdGFrZSB0aW1lIHRvIGxvYWQgZm9y IHRoZSBmaXJzdCB0aW1lCiAgICAgICAgKiBLZWVwIHRyeWluZyB0aWxsIGF2YWlsYWJsZQogICAg ICAgICovCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pz L3NxbGVkaXRvci5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvc3Fs ZWRpdG9yLmpzCmluZGV4IGZjYzMxY2YzLi42YWYxNGJjMyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9zcWxlZGl0b3IuanMKKysrIGIvd2ViL3BnYWRt aW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9zcWxlZGl0b3IuanMKQEAgLTE5Miw4ICsxOTIs OCBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgICAgICdmaWxlbmFtZSc6 ICdjc3MnLAogICAgICAgICAgIH0pLAogICAgICAgICAgIHRoZW1lOiAnd2ViY2FiaW4ub3ZlcnJp ZGVzLmNzcycsCi0gICAgICAgIH0pOwotCisgICAgICAgIH0KKyAgICAgICk7CiAKICAgICAgIC8v IENyZWF0ZSB0aGUgcGFuZWxzCiAgICAgICB2YXIgc3FsX3BhbmVsID0gbmV3IHBnQWRtaW4uQnJv d3Nlci5QYW5lbCh7CkBAIC0yMTMsNyArMjEzLDcgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wn LCBbCiAgICAgICAgIGlzQ2xvc2VhYmxlOiBmYWxzZSwKICAgICAgICAgaXNQcml2YXRlOiB0cnVl LAogICAgICAgICBleHRyYUNsYXNzZXM6ICdoaWRlLXZlcnRpY2FsLXNjcm9sbGJhcicsCi0gICAg ICAgIGNvbnRlbnQ6ICc8ZGl2IGlkID0iZGF0YWdyaWQiIGNsYXNzPSJzcWwtZWRpdG9yLWdyaWQt Y29udGFpbmVyIHRleHQtMTIiIHRhYmluZGV4OiAiMCI+PC9kaXY+JywKKyAgICAgICAgY29udGVu dDogJzxkaXYgaWQgPSJkYXRhZ3JpZCIgY2xhc3M9InNxbC1lZGl0b3ItZ3JpZC1jb250YWluZXIg dGV4dC0xMiIgdGFiaW5kZXg9IjAiPjwvZGl2PicsCiAgICAgICB9KTsKIAogICAgICAgdmFyIGV4 cGxhaW4gPSBuZXcgcGdBZG1pbi5Ccm93c2VyLlBhbmVsKHsKQEAgLTIyMyw3ICsyMjMsNyBAQCBk ZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgaGVpZ2h0OiAnMTAwJScsCiAgICAg ICAgIGlzQ2xvc2VhYmxlOiBmYWxzZSwKICAgICAgICAgaXNQcml2YXRlOiB0cnVlLAotICAgICAg ICBjb250ZW50OiAnPGRpdiBjbGFzcz0ic3FsLWVkaXRvci1leHBsYWluIiB0YWJpbmRleDogIjAi PjwvZGl2PicsCisgICAgICAgIGNvbnRlbnQ6ICc8ZGl2IGNsYXNzPSJzcWwtZWRpdG9yLWV4cGxh aW4iIHRhYmluZGV4PSIwIj48L2Rpdj4nLAogICAgICAgfSk7CiAKICAgICAgIHZhciBtZXNzYWdl cyA9IG5ldyBwZ0FkbWluLkJyb3dzZXIuUGFuZWwoewpAQCAtMjMzLDcgKzIzMyw3IEBAIGRlZmlu ZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICBoZWlnaHQ6ICcxMDAlJywKICAgICAgICAg aXNDbG9zZWFibGU6IGZhbHNlLAogICAgICAgICBpc1ByaXZhdGU6IHRydWUsCi0gICAgICAgIGNv bnRlbnQ6ICc8ZGl2IGNsYXNzPSJzcWwtZWRpdG9yLW1lc3NhZ2UiIHRhYmluZGV4OiAiMCI+PC9k aXY+JywKKyAgICAgICAgY29udGVudDogJzxkaXYgY2xhc3M9InNxbC1lZGl0b3ItbWVzc2FnZSIg dGFiaW5kZXg9ICIwIj48L2Rpdj4nLAogICAgICAgfSk7CiAKICAgICAgIHZhciBoaXN0b3J5ID0g bmV3IHBnQWRtaW4uQnJvd3Nlci5QYW5lbCh7CkBAIC0yNDMsNyArMjQzLDcgQEAgZGVmaW5lKCd0 b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgIGhlaWdodDogJzMzJScsCiAgICAgICAgIGlzQ2xv c2VhYmxlOiBmYWxzZSwKICAgICAgICAgaXNQcml2YXRlOiB0cnVlLAotICAgICAgICBjb250ZW50 OiAnPGRpdiBpZCA9Imhpc3RvcnlfZ3JpZCIgY2xhc3M9InNxbC1lZGl0b3ItaGlzdG9yeS1jb250 YWluZXIiIHRhYmluZGV4OiAiMCI+PC9kaXY+JywKKyAgICAgICAgY29udGVudDogJzxkaXYgaWQg PSJoaXN0b3J5X2dyaWQiIGNsYXNzPSJzcWwtZWRpdG9yLWhpc3RvcnktY29udGFpbmVyIiB0YWJp bmRleD0gIjAiPjwvZGl2PicsCiAgICAgICB9KTsKIAogICAgICAgdmFyIHNjcmF0Y2ggPSBuZXcg cGdBZG1pbi5Ccm93c2VyLlBhbmVsKHsKQEAgLTI1Myw3ICsyNTMsNyBAQCBkZWZpbmUoJ3Rvb2xz LnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgaGVpZ2h0OiAnMzMlJywKICAgICAgICAgaXNDbG9zZWFi bGU6IHRydWUsCiAgICAgICAgIGlzUHJpdmF0ZTogZmFsc2UsCi0gICAgICAgIGNvbnRlbnQ6ICc8 ZGl2IGNsYXNzPSJzcWwtc2NyYXRjaCIgdGFiaW5kZXg6ICIwIj48dGV4dGFyZWEgd3JhcD0ib2Zm Ij48L3RleHRhcmVhPjwvZGl2PicsCisgICAgICAgIGNvbnRlbnQ6ICc8ZGl2IGNsYXNzPSJzcWwt c2NyYXRjaCI+PHRleHRhcmVhIHdyYXA9Im9mZiIgdGFiaW5kZXg9ICIwIj48L3RleHRhcmVhPjwv ZGl2PicsCiAgICAgICB9KTsKIAogICAgICAgdmFyIG5vdGlmaWNhdGlvbnMgPSBuZXcgcGdBZG1p bi5Ccm93c2VyLlBhbmVsKHsKQEAgLTI2Myw3ICsyNjMsNyBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5 dG9vbCcsIFsKICAgICAgICAgaGVpZ2h0OiAnMTAwJScsCiAgICAgICAgIGlzQ2xvc2VhYmxlOiBm YWxzZSwKICAgICAgICAgaXNQcml2YXRlOiB0cnVlLAotICAgICAgICBjb250ZW50OiAnPGRpdiBp ZCA9Im5vdGlmaWNhdGlvbl9ncmlkIiBjbGFzcz0ic3FsLWVkaXRvci1ub3RpZmljYXRpb25zIiB0 YWJpbmRleDogIjAiPjwvZGl2PicsCisgICAgICAgIGNvbnRlbnQ6ICc8ZGl2IGlkID0ibm90aWZp Y2F0aW9uX2dyaWQiIGNsYXNzPSJzcWwtZWRpdG9yLW5vdGlmaWNhdGlvbnMiIHRhYmluZGV4PSAi MCI+PC9kaXY+JywKICAgICAgIH0pOwogCiAgICAgICB2YXIgZ2VvbWV0cnlfdmlld2VyID0gbmV3 IHBnQWRtaW4uQnJvd3Nlci5QYW5lbCh7CkBAIC0yNzMsNyArMjczLDcgQEAgZGVmaW5lKCd0b29s cy5xdWVyeXRvb2wnLCBbCiAgICAgICAgIGhlaWdodDogJzEwMCUnLAogICAgICAgICBpc0Nsb3Nl YWJsZTogdHJ1ZSwKICAgICAgICAgaXNQcml2YXRlOiB0cnVlLAotICAgICAgICBjb250ZW50OiAn PGRpdiBpZCA9Imdlb21ldHJ5X3ZpZXdlcl9wYW5lbCIgY2xhc3M9InNxbC1lZGl0b3ItZ2VvbWV0 cnktdmlld2VyIiB0YWJpbmRleDogIjAiPjwvZGl2PicsCisgICAgICAgIGNvbnRlbnQ6ICc8ZGl2 IGlkID0iZ2VvbWV0cnlfdmlld2VyX3BhbmVsIiBjbGFzcz0ic3FsLWVkaXRvci1nZW9tZXRyeS12 aWV3ZXIiIHRhYmluZGV4PSAiMCI+PC9kaXY+JywKICAgICAgIH0pOwogCiAgICAgICAvLyBMb2Fk IGFsbCB0aGUgY3JlYXRlZCBwYW5lbHMKQEAgLTMxMyw4ICszMTMsOCBAQCBkZWZpbmUoJ3Rvb2xz LnF1ZXJ5dG9vbCcsIFsKICAgICAgIHNlbGYucmVuZGVyX2hpc3RvcnlfZ3JpZCgpOwogICAgICAg cXVlcnlUb29sTm90aWZpY2F0aW9ucy5yZW5kZXJOb3RpZmljYXRpb25zR3JpZChzZWxmLm5vdGlm aWNhdGlvbnNfcGFuZWwpOwogCi0gICAgICB2YXIgdGV4dF9jb250YWluZXIgPSAkKCc8dGV4dGFy ZWEgaWQ9InNxbF9xdWVyeV90b29sIiB0YWJpbmRleDogIi0xIj48L3RleHRhcmVhPicpOwotICAg ICAgdmFyIG91dHB1dF9jb250YWluZXIgPSAkKCc8ZGl2IGlkPSJvdXRwdXQtcGFuZWwiIHRhYmlu ZGV4OiAiMCI+PC9kaXY+JykuYXBwZW5kKHRleHRfY29udGFpbmVyKTsKKyAgICAgIHZhciB0ZXh0 X2NvbnRhaW5lciA9ICQoJzx0ZXh0YXJlYSBpZD0ic3FsX3F1ZXJ5X3Rvb2wiIHRhYmluZGV4PSIt MSI+PC90ZXh0YXJlYT4nKTsKKyAgICAgIHZhciBvdXRwdXRfY29udGFpbmVyID0gJCgnPGRpdiBp ZD0ib3V0cHV0LXBhbmVsIiB0YWJpbmRleD0iMCI+PC9kaXY+JykuYXBwZW5kKHRleHRfY29udGFp bmVyKTsKICAgICAgIHNlbGYuc3FsX3BhbmVsX29iai4kY29udGFpbmVyLmZpbmQoJy5wZy1wYW5l bC1jb250ZW50JykuYXBwZW5kKG91dHB1dF9jb250YWluZXIpOwogCiAgICAgICBzZWxmLnF1ZXJ5 X3Rvb2xfb2JqID0gQ29kZU1pcnJvci5mcm9tVGV4dEFyZWEodGV4dF9jb250YWluZXIuZ2V0KDAp LCB7CkBAIC0zMzgsNiArMzM4LDEwIEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAg ICAgICBzY3JvbGxiYXJTdHlsZTogJ3NpbXBsZScsCiAgICAgICB9KTsKIAorICAgICAgcGdCcm93 c2VyLkV2ZW50cy5vbigncGdhZG1pbjpxdWVyeV90b29sOnNxbF9wYW5lbDpmb2N1cycsICgpPT57 CisgICAgICAgIHNlbGYucXVlcnlfdG9vbF9vYmouZm9jdXMoKTsKKyAgICAgIH0pOworCiAgICAg ICBpZiAoIXNlbGYucHJlZmVyZW5jZXMubmV3X2Jyb3dzZXJfdGFiKSB7CiAgICAgICAgIC8vIExp c3RlbiBvbiB0aGUgcGFuZWwgY2xvc2VkIGV2ZW50IGFuZCBub3RpZnkgdXNlciB0byBzYXZlIG1v ZGlmaWNhdGlvbnMuCiAgICAgICAgIF8uZWFjaCh3aW5kb3cudG9wLnBnQWRtaW4uQnJvd3Nlci5k b2NrZXIuZmluZFBhbmVscygnZnJtX2RhdGFncmlkJyksIGZ1bmN0aW9uKHApIHsKQEAgLTE4NDgs MjMgKzE4NTIsMTkgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgfSwKIAogICAg IGtleUFjdGlvbjogZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgIHZhciBwYW5lbF9pZCwgc2VsZiA9 IHRoaXM7Ci0gICAgICBwYW5lbF9pZCA9IGtleWJvYXJkU2hvcnRjdXRzLnByb2Nlc3NFdmVudFF1 ZXJ5VG9vbCgKLSAgICAgICAgdGhpcy5oYW5kbGVyLCBxdWVyeVRvb2xBY3Rpb25zLCBldmVudAor ICAgICAgdmFyIHBhbmVsX3R5cGU9Jyc7CisKKyAgICAgIHBhbmVsX3R5cGUgPSBrZXlib2FyZFNo b3J0Y3V0cy5wcm9jZXNzRXZlbnRRdWVyeVRvb2woCisgICAgICAgIHRoaXMuaGFuZGxlciwgcXVl cnlUb29sQWN0aW9ucywgZXZlbnQsIHRoaXMuZG9ja2VyCiAgICAgICApOwogCi0gICAgICAvLyBJ ZiBpdCByZXR1cm4gcGFuZWwgaWQgdGhlbiBmb2N1cyBpdAotICAgICAgaWYoIV8uaXNOdWxsKHBh bmVsX2lkKSAmJiAhXy5pc1VuZGVmaW5lZChwYW5lbF9pZCkpIHsKLSAgICAgICAgLy8gUmV0dXJu ZWQgcGFuZWwgaW5kZXgsIGJ5IGluY3JlbWVudGluZyBpdCBieSAxIHdlIHdpbGwgZ2V0IGFjdHVh bCBwYW5lbAotICAgICAgICBwYW5lbF9pZCsrOwotICAgICAgICB0aGlzLmRvY2tlci5maW5kUGFu ZWxzKClbcGFuZWxfaWRdLmZvY3VzKCk7Ci0gICAgICAgIC8vIFdlIHNldCBmb2N1cyBvbiBoaXN0 b3J5IHRhYiBzbyB3ZSBuZWVkIHRvIHNldCB0aGUgZm9jdXMgb24KLSAgICAgICAgLy8gZWRpdG9y IGV4cGxpY2l0bHkKLSAgICAgICAgaWYocGFuZWxfaWQgPT0gMykgewotICAgICAgICAgIHNldFRp bWVvdXQoZnVuY3Rpb24oKSB7IHNlbGYucXVlcnlfdG9vbF9vYmouZm9jdXMoKTsgfSwgMTAwKTsK LSAgICAgICAgfQorICAgICAgaWYoIV8uaXNOdWxsKHBhbmVsX3R5cGUpICYmICFfLmlzVW5kZWZp bmVkKHBhbmVsX3R5cGUpICYmIHBhbmVsX3R5cGUgIT0gJycpIHsKKyAgICAgICAgc2V0VGltZW91 dChmdW5jdGlvbigpIHsKKyAgICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRzLnRyaWdnZXIoYHBnYWRt aW46cXVlcnlfdG9vbDoke3BhbmVsX3R5cGV9OmZvY3VzYCk7CisgICAgICAgIH0sIDEwMCk7CiAg ICAgICB9CiAgICAgfSwKKwogICAgIC8vIENhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgY29tbWl0 IGJ1dHRvbiBjbGljay4KICAgICBvbl9jb21taXRfdHJhbnNhY3Rpb246IGZ1bmN0aW9uKCkgewog ICAgICAgcXVlcnlUb29sQWN0aW9ucy5leGVjdXRlQ29tbWl0KHRoaXMuaGFuZGxlcik7CkBAIC0y MTE2LDYgKzIxMTYsMTYgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgIC8v IFJlbmRlciB0aGUgaGVhZGVyCiAgICAgICAgIHNlbGYuZ3JpZFZpZXcucmVuZGVyKCk7CiAKKyAg ICAgICAgLyogd2NEb2NrZXIgZm9jdXNlcyBvbiB3aW5kb3cgYWx3YXlzLCBhbmQgYWxsIG91ciBz aG9ydGN1dHMgYXJlCisgICAgICAgICAqIGJpbmQgdG8gZWRpdG9yLXBhbmVsLiBTbyB3aGVuIHdl IHVzZSB3Y0RvY2tlciBmb2N1cywgZWRpdG9yLXBhbmVsCisgICAgICAgICAqIGxvc2VzIGZvY3Vz IGFuZCBldmVudHMgZG9uJ3Qgd29yay4KKyAgICAgICAgICovCisgICAgICAgICQod2luZG93KS5v bigna2V5ZG93bicsIChlKT0+eworICAgICAgICAgIGlmKHNlbGYuZ3JpZFZpZXcua2V5QWN0aW9u KSB7CisgICAgICAgICAgICBzZWxmLmdyaWRWaWV3LmtleUFjdGlvbihlKTsKKyAgICAgICAgICB9 CisgICAgICAgIH0pOworCiAgICAgICAgIGlmIChzZWxmLmlzX3F1ZXJ5X3Rvb2wpIHsKICAgICAg ICAgICAvLyBGZXRjaCB0aGUgU1FMIGZvciBTY3JpcHRzIChlZzogQ1JFQVRFL1VQREFURS9ERUxF VEUvU0VMRUNUKQogICAgICAgICAgIC8vIENhbGwgQUpBWCBvbmx5IGlmIHNjcmlwdCB0eXBlIHVy bCBpcyBwcmVzZW50CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRp bHMvcXVlcnlfdG9vbF9wcmVmZXJlbmNlcy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRv ci91dGlscy9xdWVyeV90b29sX3ByZWZlcmVuY2VzLnB5CmluZGV4IDhmYmM4OGFiLi4xNWM1ZDg3 MCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxzL3F1ZXJ5X3Rv b2xfcHJlZmVyZW5jZXMucHkKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxz L3F1ZXJ5X3Rvb2xfcHJlZmVyZW5jZXMucHkKQEAgLTM1NCw4ICszNTQsOCBAQCBkZWYgUmVnaXN0 ZXJRdWVyeVRvb2xQcmVmZXJlbmNlcyhzZWxmKToKICAgICAgICAgICAgICdzaGlmdCc6IFRydWUs CiAgICAgICAgICAgICAnY29udHJvbCc6IEZhbHNlLAogICAgICAgICAgICAgJ2tleSc6IHsKLSAg ICAgICAgICAgICAgICAna2V5X2NvZGUnOiAzNywKLSAgICAgICAgICAgICAgICAnY2hhcic6ICdB cnJvd0xlZnQnCisgICAgICAgICAgICAgICAgJ2tleV9jb2RlJzogOTEsCisgICAgICAgICAgICAg ICAgJ2NoYXInOiAnWycKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKICAgICAgICAgY2F0ZWdv cnlfbGFiZWw9Z2V0dGV4dCgnS2V5Ym9hcmQgc2hvcnRjdXRzJyksCkBAIC0zNzIsOCArMzcyLDI2 IEBAIGRlZiBSZWdpc3RlclF1ZXJ5VG9vbFByZWZlcmVuY2VzKHNlbGYpOgogICAgICAgICAgICAg J3NoaWZ0JzogVHJ1ZSwKICAgICAgICAgICAgICdjb250cm9sJzogRmFsc2UsCiAgICAgICAgICAg ICAna2V5JzogewotICAgICAgICAgICAgICAgICdrZXlfY29kZSc6IDM5LAotICAgICAgICAgICAg ICAgICdjaGFyJzogJ0Fycm93UmlnaHQnCisgICAgICAgICAgICAgICAgJ2tleV9jb2RlJzogOTMs CisgICAgICAgICAgICAgICAgJ2NoYXInOiAnXScKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwK KyAgICAgICAgY2F0ZWdvcnlfbGFiZWw9Z2V0dGV4dCgnS2V5Ym9hcmQgc2hvcnRjdXRzJyksCisg ICAgICAgIGZpZWxkcz1zaG9ydGN1dF9maWVsZHMKKyAgICApCisKKyAgICBzZWxmLnByZWZlcmVu Y2UucmVnaXN0ZXIoCisgICAgICAgICdrZXlib2FyZF9zaG9ydGN1dHMnLAorICAgICAgICAnc3dp dGNoX3BhbmVsJywKKyAgICAgICAgZ2V0dGV4dCgnU3dpdGNoIFBhbmVsJyksCisgICAgICAgICdr ZXlib2FyZHNob3J0Y3V0JywKKyAgICAgICAgeworICAgICAgICAgICAgJ2FsdCc6IFRydWUsCisg ICAgICAgICAgICAnc2hpZnQnOiBUcnVlLAorICAgICAgICAgICAgJ2NvbnRyb2wnOiBGYWxzZSwK KyAgICAgICAgICAgICdrZXknOiB7CisgICAgICAgICAgICAgICAgJ2tleV9jb2RlJzogOSwKKyAg ICAgICAgICAgICAgICAnY2hhcic6ICdUYWInCiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAg ICAgICAgIGNhdGVnb3J5X2xhYmVsPWdldHRleHQoJ0tleWJvYXJkIHNob3J0Y3V0cycpLApkaWZm IC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9jb21tb25fa2V5Ym9hcmRfc2hvcnRj dXRzX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2NvbW1vbl9rZXlib2FyZF9z aG9ydGN1dHNfc3BlYy5qcwppbmRleCBhYmU1YmFjNS4uYTc0ZjNjZTUgMTAwNjQ0Ci0tLSBhL3dl Yi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvY29tbW9uX2tleWJvYXJkX3Nob3J0Y3V0c19zcGVjLmpz CisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvY29tbW9uX2tleWJvYXJkX3Nob3J0Y3V0 c19zcGVjLmpzCkBAIC04LDYgKzgsNyBAQAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAogaW1wb3J0ICog YXMga2V5Ym9hcmRTaG9ydGN1dHMgZnJvbSAnc291cmNlcy9rZXlib2FyZF9zaG9ydGN1dHMnOwor aW1wb3J0ICQgZnJvbSAnanF1ZXJ5JzsKIAogZGVzY3JpYmUoJ3RoZSBrZXlib2FyZCBzaG9ydGN1 dHMnLCAoKSA9PiB7CiAgIGNvbnN0IEYxX0tFWSA9IDExMjsKQEAgLTQ1LDkgKzQ2LDMwIEBAIGRl c2NyaWJlKCd0aGUga2V5Ym9hcmQgc2hvcnRjdXRzJywgKCkgPT4gewogICB9KTsKIAogICBkZXNj cmliZSgnd2hlbiB1c2VyIHdhbnRzIHRvIGdvdG8gbmV4dCBwYW5lbCcsIGZ1bmN0aW9uICgpIHsK LQotICAgIGl0KCdyZXR1cm5zIHBhbmVsIGlkJywgZnVuY3Rpb24gKCkgewotICAgICAgZXhwZWN0 KGtleWJvYXJkU2hvcnRjdXRzLmdldElubmVyUGFuZWwoZGVidWdnZXJFbGVtZW50U3B5LCAncmln aHQnKSkudG9FcXVhbChmYWxzZSk7CisgICAgbGV0IGRvY2tlclNweSA9IHsKKyAgICAgICdfZm9j dXNGcmFtZSc6IHsKKyAgICAgICAgJ19jdXJUYWInOiAwLAorICAgICAgICAnX3BhbmVsTGlzdCc6 IFsKKyAgICAgICAgICB7JGNvbnRhaW5lcjogJCgnPGIvPicpLCAnX3R5cGUnOiAndHlwZTEnLCAn Zm9jdXMnOiBmdW5jdGlvbigpIHtyZXR1cm4gdHJ1ZTt9fSwKKyAgICAgICAgICB7JGNvbnRhaW5l cjogJCgnPGIvPicpLCAnX3R5cGUnOiAndHlwZTInLCAnZm9jdXMnOiBmdW5jdGlvbigpIHtyZXR1 cm4gdHJ1ZTt9fSwKKyAgICAgICAgXSwKKyAgICAgIH0sCisgICAgfTsKKyAgICBpdCgncmlnaHQg a2V5JywgZnVuY3Rpb24gKCkgeworICAgICAgZG9ja2VyU3B5Ll9mb2N1c0ZyYW1lLl9jdXJUYWIg PSAwOworICAgICAgZXhwZWN0KGtleWJvYXJkU2hvcnRjdXRzLmZvY3VzRG9ja2VyUGFuZWwoZG9j a2VyU3B5LCAncmlnaHQnKSkudG9FcXVhbCgndHlwZTInKTsKKyAgICB9KTsKKyAgICBpdCgnbGVm dCBrZXknLCBmdW5jdGlvbiAoKSB7CisgICAgICBkb2NrZXJTcHkuX2ZvY3VzRnJhbWUuX2N1clRh YiA9IDE7CisgICAgICBleHBlY3Qoa2V5Ym9hcmRTaG9ydGN1dHMuZm9jdXNEb2NrZXJQYW5lbChk b2NrZXJTcHksICdsZWZ0JykpLnRvRXF1YWwoJ3R5cGUxJyk7CisgICAgfSk7CisgICAgaXQoJ2xl ZnQga2V5IGN5Y2xlJywgZnVuY3Rpb24gKCkgeworICAgICAgZG9ja2VyU3B5Ll9mb2N1c0ZyYW1l Ll9jdXJUYWIgPSAwOworICAgICAgZXhwZWN0KGtleWJvYXJkU2hvcnRjdXRzLmZvY3VzRG9ja2Vy UGFuZWwoZG9ja2VyU3B5LCAnbGVmdCcpKS50b0VxdWFsKCd0eXBlMicpOworICAgIH0pOworICAg IGl0KCdyaWdodCBrZXkgY3ljbGUnLCBmdW5jdGlvbiAoKSB7CisgICAgICBkb2NrZXJTcHkuX2Zv Y3VzRnJhbWUuX2N1clRhYiA9IDE7CisgICAgICBleHBlY3Qoa2V5Ym9hcmRTaG9ydGN1dHMuZm9j dXNEb2NrZXJQYW5lbChkb2NrZXJTcHksICdsZWZ0JykpLnRvRXF1YWwoJ3R5cGUxJyk7CiAgICAg fSk7CiAgIH0pOwogCmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3BnYWRt aW5fdXRpbHNfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvcGdhZG1pbl91dGls c19zcGVjLmpzCmluZGV4IDM5ZmU4N2RmLi4zZjcyOTQ2ZiAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jl c3Npb24vamF2YXNjcmlwdC9wZ2FkbWluX3V0aWxzX3NwZWMuanMKKysrIGIvd2ViL3JlZ3Jlc3Np b24vamF2YXNjcmlwdC9wZ2FkbWluX3V0aWxzX3NwZWMuanMKQEAgLTcsNyArNyw3IEBACiAvLwog Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8KIAotaW1wb3J0IHsgZ2V0RXBvY2gsIGdldEdDRCB9IGZyb20gJ3NvdXJjZXMvdXRpbHMn OworaW1wb3J0IHsgZ2V0RXBvY2gsIGdldEdDRCwgZ2V0TW9kIH0gZnJvbSAnc291cmNlcy91dGls cyc7CiAKIGRlc2NyaWJlKCdnZXRFcG9jaCcsIGZ1bmN0aW9uICgpIHsKICAgaXQoJ3Nob3VsZCBy ZXR1cm4gbm9uIHplcm8nLCBmdW5jdGlvbiAoKSB7CkBAIC0zMywzICszMywyMiBAQCBkZXNjcmli ZSgnZ2V0R0NEJywgZnVuY3Rpb24gKCkgewogICAgIGV4cGVjdChnZXRHQ0Qobm9zKSkudG9FcXVh bCgzKTsKICAgfSk7CiB9KTsKKworZGVzY3JpYmUoJ2dldE1vZCcsIGZ1bmN0aW9uICgpIHsKKyAg aXQoJ2NvbXBsZXRlIGRpdmlzaWJsZScsIGZ1bmN0aW9uICgpIHsKKyAgICBleHBlY3QoZ2V0TW9k KDUsNSkpLnRvRXF1YWwoMCk7CisgIH0pOworCisgIGl0KCdpbmNvbXBsZXRlIGRpdmlzaWJsZSBs ZXNzIGRpdmlzb3InLCBmdW5jdGlvbiAoKSB7CisgICAgZXhwZWN0KGdldE1vZCg3LDUpKS50b0Vx dWFsKDIpOworICB9KTsKKworICBpdCgnaW5jb21wbGV0ZSBkaXZpc2libGUgZ3JlYXRlciBkaXZp c29yJywgZnVuY3Rpb24gKCkgeworICAgIGV4cGVjdChnZXRNb2QoNSw3KSkudG9FcXVhbCg1KTsK KyAgfSk7CisKKyAgaXQoJ25lZ2F0aXZlIG51bWJlcicsIGZ1bmN0aW9uICgpIHsKKyAgICBleHBl Y3QoZ2V0TW9kKC03LDUpKS50b0VxdWFsKDMpOworICB9KTsKK30pOworCg== --000000000000d48aae058962163a--