Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fTMtF-0002VU-8c for pgadmin-hackers@arkaria.postgresql.org; Thu, 14 Jun 2018 07:41:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fTMtD-00066Z-83 for pgadmin-hackers@arkaria.postgresql.org; Thu, 14 Jun 2018 07:41:51 +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_SHA384:256) (Exim 4.89) (envelope-from ) id 1fTMtC-00066P-To for pgadmin-hackers@lists.postgresql.org; Thu, 14 Jun 2018 07:41:51 +0000 Received: from mail-pf0-x22f.google.com ([2607:f8b0:400e:c00::22f]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1fTMt8-0006ho-JI for pgadmin-hackers@postgresql.org; Thu, 14 Jun 2018 07:41:49 +0000 Received: by mail-pf0-x22f.google.com with SMTP id h12-v6so2791096pfk.11 for ; Thu, 14 Jun 2018 00:41:45 -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=xPuPOKE3LHg1myth6uGlp5Ain4xrbA5jwDFsh7iMQM4=; b=yP1IzTzbWHDeWdWF0FevRIhy2Sf69ITB10sTqLnRp4XzRzJl+RX0ITg8Hwce5q3XAm NaJam9VJFb8AOT/0VWb3hPoqnP6O3rFh6wHxySK2I8PjCTVqeuOQVIagafWblkC4ICGp QcLB6tPwK3Vm4YZpvQbr/w6DZ2I6WolTfQqqQoD6K71XXhQ6Au9jMVLbMftQ+QgmHuwi pG8uOP24We9sgUL3aJB+zPKKMyD1GjX6pzCOuJoSz8xloRpPJeQyYBAY4ESufY5oYr0X U2JJAUktrgRqLtOBnk4fiUoDwaih2K7nTavOkthcXlaNM7oJhiUNvIJffTLbrd0+u/jg 4xdg== 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=xPuPOKE3LHg1myth6uGlp5Ain4xrbA5jwDFsh7iMQM4=; b=sVfU2tI+fk2k/2N3aAZAqAB4NvAhlql7EvdpXaIpQz/7LqcqJU50MZ2rHZg/t+7VBD gUH96Pgsho3g3YWubYM2iDcvTeff6pqgMwX30UPiGpwFZ5WSPFAPC6pXpwRme2b5tR4q NiFukerThtIUadg0I6z/2ye9+ezds9sHR1kfeZGmCsksl6mzByNGkH8q5DZVF34yeDCN SlPa8EroWVHfaTWz6cjvIEHfVWw6V8sXkphLRhzM/TX2JiK/uW+Yw6eTFUb6Hfhqqk8r ds5hGIJHbIcRASKjGWt/ZMcNBdywr/Jt5RLstWIKgz5o9r7kO0CF3D7gQiG40lqjSeb7 fHKQ== X-Gm-Message-State: APt69E36asovhou0fAU3HOfGLo8uudcqmLVSjH4OQhx/XpjhMXTXGHdH es3pkG2r3EFqlMQjWAq+wyfuWqSTXXEIH3Gbl7e3smUK X-Google-Smtp-Source: ADUXVKJ9Ss9AUeTyeNNll/f726ySzZqyEpV10IIzUQsY/bXkEARFBl5yE7kjAIVaspODHnU4epH9+PUfEi0zzNDYNEM= X-Received: by 2002:a62:1747:: with SMTP id 68-v6mr8228162pfx.69.1528962103062; Thu, 14 Jun 2018 00:41:43 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a17:90a:8c86:0:0:0:0 with HTTP; Thu, 14 Jun 2018 00:41:42 -0700 (PDT) From: Akshay Joshi Date: Thu, 14 Jun 2018 13:11:42 +0530 Message-ID: Subject: [pgadmin4][Patch]: Feature #2686 Property to switch lower/upper case auto completion To: pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000076661056e953b41" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000076661056e953b41 Content-Type: multipart/alternative; boundary="000000000000076660056e953b3f" --000000000000076660056e953b3f Content-Type: text/plain; charset="UTF-8" Hi Hackers, Attached is the patch for the Feature #2686 Property to switch lower/upper case auto completion. I have added new preferences settings "Keywords in uppercase" if it is set to True then all the keywords are shown in upper case in auto completion. I have also implemented the second request in the RM to change the selected text to upper/lower case. For that I have added new keyboard shortcut "Toggle case of selected text" in preferences dialog. Default key is "Ctrl + Shift + u". Please review it. -- *Akshay Joshi* *Sr. Software Architect * *Phone: +91 20-3058-9517Mobile: +91 976-788-8246* --000000000000076660056e953b3f Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

Attached is the patch for t= he Feature=C2=A0#2686 Property to switch lower/upper case auto completion. = I have added new preferences settings "Keywords in uppercase" if = it is set to True then all the keywords are shown in upper case in auto com= pletion.

I have also implemented the second reques= t in the RM to change the selected text to upper/lower case. For that I hav= e added new keyboard shortcut "Toggle case of selected text" in p= references dialog= . Default key is "Ctrl + Shift + u".

Please= review it.=C2=A0
--
A= kshay Josh= i
Sr. Software Architect


Phone: +91 20-3058-9517
Mobile: +91= 976-788-8246
--000000000000076660056e953b3f-- --000000000000076661056e953b41 Content-Type: application/octet-stream; name="RM_2686.patch" Content-Disposition: attachment; filename="RM_2686.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jie8jnzj0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL21pc2MvdGVtcGxhdGVzL3NxbGF1dG9jb21wbGV0ZS9z cWwvZGVmYXVsdC9rZXl3b3Jkcy5zcWwgYi93ZWIvcGdhZG1pbi9taXNjL3RlbXBsYXRlcy9zcWxh dXRvY29tcGxldGUvc3FsL2RlZmF1bHQva2V5d29yZHMuc3FsCmluZGV4IGNkNTcxZTEuLjlmNzYy YjggMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL21pc2MvdGVtcGxhdGVzL3NxbGF1dG9jb21wbGV0 ZS9zcWwvZGVmYXVsdC9rZXl3b3Jkcy5zcWwKKysrIGIvd2ViL3BnYWRtaW4vbWlzYy90ZW1wbGF0 ZXMvc3FsYXV0b2NvbXBsZXRlL3NxbC9kZWZhdWx0L2tleXdvcmRzLnNxbApAQCAtMSwyICsxLDcg QEAKIHsjIFNRTCBxdWVyeSBmb3IgZ2V0dGluZyBrZXl3b3JkcyAjfQoreyUgaWYgdXBwZXJfY2Fz ZSAlfQogU0VMRUNUIHVwcGVyKHdvcmQpIGFzIHdvcmQgRlJPTSBwZ19nZXRfa2V5d29yZHMoKQor eyUgZWxzZSAlfQorU0VMRUNUIHdvcmQgRlJPTSBwZ19nZXRfa2V5d29yZHMoKQoreyUgZW5kaWYg JX0KKwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2tleWJvYXJkX3Nob3J0Y3V0 cy5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9rZXlib2FyZF9zaG9ydGN1dHMuanMKaW5kZXgg OTk2YTU5MS4uMWZlMDdlOSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2tleWJv YXJkX3Nob3J0Y3V0cy5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMva2V5Ym9hcmRfc2hv cnRjdXRzLmpzCkBAIC0xMzYsNiArMTM2LDcgQEAgZnVuY3Rpb24ga2V5Ym9hcmRTaG9ydGN1dHNR dWVyeVRvb2woCiAgIGxldCBkb3dubG9hZENzdktleXMgPSBrZXlib2FyZFNob3J0Y3V0Q29uZmln Wydkb3dubG9hZF9jc3YnXTsKICAgbGV0IG5leHRQYW5lbEtleXMgPSBrZXlib2FyZFNob3J0Y3V0 Q29uZmlnWydtb3ZlX25leHQnXTsKICAgbGV0IHByZXZpb3VzUGFuZWxLZXlzID0ga2V5Ym9hcmRT aG9ydGN1dENvbmZpZ1snbW92ZV9wcmV2aW91cyddOworICBsZXQgdG9nZ2xlQ2FzZUtleXMgPSBr ZXlib2FyZFNob3J0Y3V0Q29uZmlnWyd0b2dnbGVfY2FzZSddOwogCiAgIGlmICh0aGlzLnZhbGlk YXRlU2hvcnRjdXRLZXlzKGV4ZWN1dGVLZXlzLCBldmVudCkpIHsKICAgICB0aGlzLl9zdG9wRXZl bnRQcm9wYWdhdGlvbihldmVudCk7CkBAIC0xNDksNiArMTUwLDkgQEAgZnVuY3Rpb24ga2V5Ym9h cmRTaG9ydGN1dHNRdWVyeVRvb2woCiAgIH0gZWxzZSBpZiAodGhpcy52YWxpZGF0ZVNob3J0Y3V0 S2V5cyhkb3dubG9hZENzdktleXMsIGV2ZW50KSkgewogICAgIHRoaXMuX3N0b3BFdmVudFByb3Bh Z2F0aW9uKGV2ZW50KTsKICAgICBxdWVyeVRvb2xBY3Rpb25zLmRvd25sb2FkKHNxbEVkaXRvckNv bnRyb2xsZXIpOworICB9IGVsc2UgaWYgKHRoaXMudmFsaWRhdGVTaG9ydGN1dEtleXModG9nZ2xl Q2FzZUtleXMsIGV2ZW50KSkgeworICAgIHRoaXMuX3N0b3BFdmVudFByb3BhZ2F0aW9uKGV2ZW50 KTsKKyAgICBxdWVyeVRvb2xBY3Rpb25zLnRvZ2dsZUNhc2VPZlNlbGVjdGVkVGV4dChzcWxFZGl0 b3JDb250cm9sbGVyKTsKICAgfSBlbHNlIGlmICgoCiAgICAgICh0aGlzLmlzTWFjKCkgJiYgZXZl bnQubWV0YUtleSkgfHwKICAgICAgKCF0aGlzLmlzTWFjKCkgJiYgZXZlbnQuY3RybEtleSkKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvcXVlcnlfdG9vbF9hY3Rp b25zLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9xdWVyeV90b29sX2FjdGlv bnMuanMKaW5kZXggOWU4ZTQ1MC4uNDExYzZlZCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3Rh dGljL2pzL3NxbGVkaXRvci9xdWVyeV90b29sX2FjdGlvbnMuanMKKysrIGIvd2ViL3BnYWRtaW4v c3RhdGljL2pzL3NxbGVkaXRvci9xdWVyeV90b29sX2FjdGlvbnMuanMKQEAgLTEzMiw2ICsxMzIs OCBAQCBsZXQgcXVlcnlUb29sQWN0aW9ucyA9IHsKICAgICAgICdzcWxlZGl0b3InLCAnbW92ZV9u ZXh0Jyk7CiAgICAgbGV0IHByZXZpb3VzUGFuZWxQZXJmID0gd2luZG93LnRvcC5wZ0FkbWluLkJy b3dzZXIuZ2V0X3ByZWZlcmVuY2UoCiAgICAgICAnc3FsZWRpdG9yJywgJ21vdmVfcHJldmlvdXMn KTsKKyAgICBsZXQgdG9nZ2xlQ2FzZVBlcmYgPSB3aW5kb3cudG9wLnBnQWRtaW4uQnJvd3Nlci5n ZXRfcHJlZmVyZW5jZSgKKyAgICAgICdzcWxlZGl0b3InLCAndG9nZ2xlX2Nhc2UnKTsKIAogICAg IGlmKCFleGVjdXRlUXVlcnlQcmVmICYmIHNxbEVkaXRvckNvbnRyb2xsZXIuaGFuZGxlci5pc19u ZXdfYnJvd3Nlcl90YWIpIHsKICAgICAgIGV4ZWN1dGVRdWVyeVByZWYgPSB3aW5kb3cub3BlbmVy LnBnQWRtaW4uQnJvd3Nlci5nZXRfcHJlZmVyZW5jZSgKQEAgLTE1MSw2ICsxNTMsOSBAQCBsZXQg cXVlcnlUb29sQWN0aW9ucyA9IHsKICAgICAgICksCiAgICAgICBwcmV2aW91c1BhbmVsUGVyZiA9 IHdpbmRvdy5vcGVuZXIucGdBZG1pbi5Ccm93c2VyLmdldF9wcmVmZXJlbmNlKAogICAgICAgICAn c3FsZWRpdG9yJywgJ21vdmVfcHJldmlvdXMnCisgICAgICApLAorICAgICAgdG9nZ2xlQ2FzZVBl cmYgPSB3aW5kb3cub3BlbmVyLnBnQWRtaW4uQnJvd3Nlci5nZXRfcHJlZmVyZW5jZSgKKyAgICAg ICAgJ3NxbGVkaXRvcicsICd0b2dnbGVfY2FzZScKICAgICAgICk7CiAgICAgfQogCkBAIC0xNjEs OSArMTY2LDIzIEBAIGxldCBxdWVyeVRvb2xBY3Rpb25zID0gewogICAgICAgJ2Rvd25sb2FkX2Nz dic6IGRvd25sb2FkQ3N2UHJlZi52YWx1ZSwKICAgICAgICdtb3ZlX25leHQnOiBuZXh0UGFuZWxQ ZXJmLnZhbHVlLAogICAgICAgJ21vdmVfcHJldmlvdXMnOiBwcmV2aW91c1BhbmVsUGVyZi52YWx1 ZSwKKyAgICAgICd0b2dnbGVfY2FzZSc6IHRvZ2dsZUNhc2VQZXJmLnZhbHVlLAogICAgIH07CiAK ICAgfSwKKworICB0b2dnbGVDYXNlT2ZTZWxlY3RlZFRleHQ6IGZ1bmN0aW9uIChzcWxFZGl0b3JD b250cm9sbGVyKSB7CisgICAgbGV0IGNvZGVNaXJyb3JPYmogPSBzcWxFZGl0b3JDb250cm9sbGVy LmdyaWRWaWV3LnF1ZXJ5X3Rvb2xfb2JqOworICAgIGxldCBzZWxlY3RlZFRleHQgPSBjb2RlTWly cm9yT2JqLmdldFNlbGVjdGlvbigpOworCisgICAgaWYgKCFzZWxlY3RlZFRleHQpIHJldHVybjsK KworICAgIGlmIChzZWxlY3RlZFRleHQgPT09IHNlbGVjdGVkVGV4dC50b1VwcGVyQ2FzZSgpKSB7 CisgICAgICBjb2RlTWlycm9yT2JqLnJlcGxhY2VTZWxlY3Rpb24oc2VsZWN0ZWRUZXh0LnRvTG93 ZXJDYXNlKCkpOworICAgIH0gZWxzZSB7CisgICAgICBjb2RlTWlycm9yT2JqLnJlcGxhY2VTZWxl Y3Rpb24oc2VsZWN0ZWRUZXh0LnRvVXBwZXJDYXNlKCkpOworICAgIH0KKyAgfSwKIH07CiAKIG1v ZHVsZS5leHBvcnRzID0gcXVlcnlUb29sQWN0aW9uczsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L3Rvb2xzL3NxbGVkaXRvci91dGlscy9xdWVyeV90b29sX3ByZWZlcmVuY2VzLnB5IGIvd2ViL3Bn YWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxzL3F1ZXJ5X3Rvb2xfcHJlZmVyZW5jZXMucHkKaW5k ZXggN2M0M2Q5Yi4uYTVhN2JjYiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRp dG9yL3V0aWxzL3F1ZXJ5X3Rvb2xfcHJlZmVyZW5jZXMucHkKKysrIGIvd2ViL3BnYWRtaW4vdG9v bHMvc3FsZWRpdG9yL3V0aWxzL3F1ZXJ5X3Rvb2xfcHJlZmVyZW5jZXMucHkKQEAgLTUzNSw2ICs1 MzUsMzIgQEAgZGVmIFJlZ2lzdGVyUXVlcnlUb29sUHJlZmVyZW5jZXMoc2VsZik6CiAgICAgICAg IGZpZWxkcz1hY2Nlc3NrZXlfZmllbGRzCiAgICAgKQogCisgICAgc2VsZi5wcmVmZXJlbmNlLnJl Z2lzdGVyKAorICAgICAgICAna2V5Ym9hcmRfc2hvcnRjdXRzJywKKyAgICAgICAgJ3RvZ2dsZV9j YXNlJywKKyAgICAgICAgZ2V0dGV4dCgnVG9nZ2xlIGNhc2Ugb2Ygc2VsZWN0ZWQgdGV4dCcpLAor ICAgICAgICAna2V5Ym9hcmRzaG9ydGN1dCcsCisgICAgICAgIHsKKyAgICAgICAgICAgICdhbHQn OiBGYWxzZSwKKyAgICAgICAgICAgICdzaGlmdCc6IFRydWUsCisgICAgICAgICAgICAnY29udHJv bCc6IFRydWUsCisgICAgICAgICAgICAna2V5JzogeworICAgICAgICAgICAgICAgICdrZXlfY29k ZSc6IDkxLAorICAgICAgICAgICAgICAgICdjaGFyJzogJ3UnCisgICAgICAgICAgICB9CisgICAg ICAgIH0sCisgICAgICAgIGNhdGVnb3J5X2xhYmVsPWdldHRleHQoJ0tleWJvYXJkIHNob3J0Y3V0 cycpLAorICAgICAgICBmaWVsZHM9c2hvcnRjdXRfZmllbGRzCisgICAgKQorCisgICAgc2VsZi5w cmVmZXJlbmNlLnJlZ2lzdGVyKAorICAgICAgICAnYXV0b19jb21wbGV0aW9uJywgJ2tleXdvcmRz X2luX3VwcGVyY2FzZScsCisgICAgICAgIGdldHRleHQoIktleXdvcmRzIGluIHVwcGVyY2FzZSIp LCAnYm9vbGVhbicsIFRydWUsCisgICAgICAgIGNhdGVnb3J5X2xhYmVsPWdldHRleHQoJ0F1dG8g Y29tcGxldGlvbicpLAorICAgICAgICBoZWxwX3N0cj1nZXR0ZXh0KCdJZiBzZXQgdG8gVHJ1ZSwg S2V5d29yZHMgd2lsbCBiZSBkaXNwbGF5ZWQgJworICAgICAgICAgICAgICAgICAgICAgICAgICdp biB1cHBlciBjYXNlIGZvciBhdXRvIGNvbXBsZXRpb24uJykKKyAgICApCisKIAogZGVmIGdldF9x dWVyeV90b29sX2tleWJvYXJkX3Nob3J0Y3V0cygpOgogCkBAIC01NjQsNiArNTkwLDcgQEAgZGVm IGdldF9xdWVyeV90b29sX2tleWJvYXJkX3Nob3J0Y3V0cygpOgogICAgIGV4cGxhaW5fcXVlcnkg PSBxdF9wZXJmLnByZWZlcmVuY2UoJ2V4cGxhaW5fcXVlcnknKS5nZXQoKQogICAgIGV4cGxhaW5f YW5hbHl6ZV9xdWVyeSA9IHF0X3BlcmYucHJlZmVyZW5jZSgnZXhwbGFpbl9hbmFseXplX3F1ZXJ5 JykuZ2V0KCkKICAgICBmaW5kX29wdGlvbnMgPSBxdF9wZXJmLnByZWZlcmVuY2UoJ2J0bl9maW5k X29wdGlvbnMnKS5nZXQoKQorICAgIHRvZ2dsZV9jYXNlID0gcXRfcGVyZi5wcmVmZXJlbmNlKCd0 b2dnbGVfY2FzZScpLmdldCgpCiAKICAgICByZXR1cm4gewogICAgICAgICAna2V5cyc6IHsKQEAg LTU4Nyw3ICs2MTQsOCBAQCBkZWYgZ2V0X3F1ZXJ5X3Rvb2xfa2V5Ym9hcmRfc2hvcnRjdXRzKCk6 CiAgICAgICAgICAgICAnZXhwbGFpbl9hbmFseXplX3F1ZXJ5JzogZXhwbGFpbl9hbmFseXplX3F1 ZXJ5LmdldCgna2V5JykuZ2V0KAogICAgICAgICAgICAgICAgICdjaGFyJwogICAgICAgICAgICAg KSwKLSAgICAgICAgICAgICdmaW5kX29wdGlvbnMnOiBmaW5kX29wdGlvbnMuZ2V0KCdrZXknKS5n ZXQoJ2NoYXInKQorICAgICAgICAgICAgJ2ZpbmRfb3B0aW9ucyc6IGZpbmRfb3B0aW9ucy5nZXQo J2tleScpLmdldCgnY2hhcicpLAorICAgICAgICAgICAgJ3RvZ2dsZV9jYXNlJzogdG9nZ2xlX2Nh c2UuZ2V0KCdrZXknKS5nZXQoJ2NoYXInKQogICAgICAgICB9LAogICAgICAgICAnc2hvcnRjdXRz JzogewogICAgICAgICAgICAgJ2Nvbm5fc3RhdHVzJzogY29ubl9zdGF0dXMsCkBAIC02MDgsNyAr NjM2LDggQEAgZGVmIGdldF9xdWVyeV90b29sX2tleWJvYXJkX3Nob3J0Y3V0cygpOgogICAgICAg ICAgICAgJ2V4ZWN1dGVfcXVlcnknOiBleGVjdXRlX3F1ZXJ5LAogICAgICAgICAgICAgJ2V4cGxh aW5fcXVlcnknOiBleHBsYWluX3F1ZXJ5LAogICAgICAgICAgICAgJ2V4cGxhaW5fYW5hbHl6ZV9x dWVyeSc6IGV4cGxhaW5fYW5hbHl6ZV9xdWVyeSwKLSAgICAgICAgICAgICdmaW5kX29wdGlvbnMn OiBmaW5kX29wdGlvbnMKKyAgICAgICAgICAgICdmaW5kX29wdGlvbnMnOiBmaW5kX29wdGlvbnMs CisgICAgICAgICAgICAndG9nZ2xlX2Nhc2UnOiB0b2dnbGVfY2FzZQogICAgICAgICB9LAogICAg IH0KIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdXRpbHMvc3FsYXV0b2NvbXBsZXRlL2F1dG9j b21wbGV0ZS5weSBiL3dlYi9wZ2FkbWluL3V0aWxzL3NxbGF1dG9jb21wbGV0ZS9hdXRvY29tcGxl dGUucHkKaW5kZXggYWY1NTE0Yi4uOGEyNWMxMyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdXRp bHMvc3FsYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5weQorKysgYi93ZWIvcGdhZG1pbi91dGls cy9zcWxhdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLnB5CkBAIC0yNiw2ICsyNiw3IEBAIGZyb20g LmZ1bmN0aW9uX21ldGFkYXRhIGltcG9ydCBGdW5jdGlvbk1ldGFkYXRhCiBmcm9tIC5wYXJzZXV0 aWxzIGltcG9ydCAoCiAgICAgbGFzdF93b3JkLCBleHRyYWN0X3RhYmxlcywgZmluZF9wcmV2X2tl eXdvcmQsIHBhcnNlX3BhcnRpYWxfaWRlbnRpZmllcikKIGZyb20gLnByaW9yaXRpemF0aW9uIGlt cG9ydCBQcmV2YWxlbmNlQ291bnRlcgorZnJvbSBwZ2FkbWluLnV0aWxzLnByZWZlcmVuY2VzIGlt cG9ydCBQcmVmZXJlbmNlcwogCiBQWTIgPSBzeXMudmVyc2lvbl9pbmZvWzBdID09IDIKIFBZMyA9 IHN5cy52ZXJzaW9uX2luZm9bMF0gPT0gMwpAQCAtMTAxLDggKzEwMiwxNyBAQCBjbGFzcyBTUUxB dXRvQ29tcGxldGUob2JqZWN0KToKICAgICAgICAgICAgICAgICBmb3IgcmVjb3JkIGluIHJlc1sn cm93cyddOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnNlYXJjaF9wYXRoLmFwcGVuZChyZWNv cmRbJ3NjaGVtYSddKQogCisgICAgICAgICAgICBwcmVmID0gUHJlZmVyZW5jZXMubW9kdWxlKCdz cWxlZGl0b3InKQorICAgICAgICAgICAga2V5d29yZHNfaW5fdXBwZXJjYXNlID0gXAorICAgICAg ICAgICAgICAgIHByZWYucHJlZmVyZW5jZSgna2V5d29yZHNfaW5fdXBwZXJjYXNlJykuZ2V0KCkK KwogICAgICAgICAgICAgIyBGZXRjaCB0aGUga2V5d29yZHMKICAgICAgICAgICAgIHF1ZXJ5ID0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnNxbF9wYXRoLCAna2V5d29yZHMuc3FsJ10p KQorICAgICAgICAgICAgIyBJZiBzZXR0aW5nICdLZXl3b3JkcyBpbiB1cHBlcmNhc2UnIGlzIHNl dCB0byBUcnVlIGluCisgICAgICAgICAgICAjIFByZWZlcmVuY2VzIHRoZW4gZmV0Y2ggdGhlIGtl eXdvcmRzIGluIHVwcGVyIGNhc2UuCisgICAgICAgICAgICBpZiBrZXl3b3Jkc19pbl91cHBlcmNh c2U6CisgICAgICAgICAgICAgICAgcXVlcnkgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAg ICAgICAgICAgICIvIi5qb2luKFtzZWxmLnNxbF9wYXRoLCAna2V5d29yZHMuc3FsJ10pLCB1cHBl cl9jYXNlPVRydWUpCiAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl X2RpY3QocXVlcnkpCiAgICAgICAgICAgICBpZiBzdGF0dXM6CiAgICAgICAgICAgICAgICAgZm9y IHJlY29yZCBpbiByZXNbJ3Jvd3MnXToKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFz Y3JpcHQvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2xfYWN0aW9uc19zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Np b24vamF2YXNjcmlwdC9zcWxlZGl0b3IvcXVlcnlfdG9vbF9hY3Rpb25zX3NwZWMuanMKaW5kZXgg ZjNhYzc4MS4uNjFjMTgzOSAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9z cWxlZGl0b3IvcXVlcnlfdG9vbF9hY3Rpb25zX3NwZWMuanMKKysrIGIvd2ViL3JlZ3Jlc3Npb24v amF2YXNjcmlwdC9zcWxlZGl0b3IvcXVlcnlfdG9vbF9hY3Rpb25zX3NwZWMuanMKQEAgLTExLDcg KzExLDggQEAgaW1wb3J0IHF1ZXJ5VG9vbEFjdGlvbnMgZnJvbSAnc291cmNlcy9zcWxlZGl0b3Iv cXVlcnlfdG9vbF9hY3Rpb25zJzsKIGRlc2NyaWJlKCdxdWVyeVRvb2xBY3Rpb25zJywgKCkgPT4g ewogICBsZXQgc3FsRWRpdG9yQ29udHJvbGxlciwKICAgICBnZXRTZWxlY3Rpb25TcHksIGdldFZh bHVlU3B5LAotICAgIHNlbGVjdGVkUXVlcnlTdHJpbmcsIGVudGlyZVF1ZXJ5U3RyaW5nOworICAg IHNlbGVjdGVkUXVlcnlTdHJpbmcsIGVudGlyZVF1ZXJ5U3RyaW5nLAorICAgIHJlcGxhY2VTZWxl Y3Rpb25TcHk7CiAKICAgZGVzY3JpYmUoJ2V4ZWN1dGVRdWVyeScsICgpID0+IHsKICAgICBkZXNj cmliZSgnd2hlbiB0aGUgY29tbWFuZCBpcyBiZWluZyBydW4gZnJvbSB0aGUgcXVlcnkgdG9vbCcs ICgpID0+IHsKQEAgLTQzNyw5ICs0MzgsOTMgQEAgZGVzY3JpYmUoJ3F1ZXJ5VG9vbEFjdGlvbnMn LCAoKSA9PiB7CiAgICAgfSk7CiAgIH0pOwogCisgIGRlc2NyaWJlKCd0b2dnbGVDYXNlT2ZTZWxl Y3RlZFRleHQnLCAoKSA9PiB7CisgICAgZGVzY3JpYmUoJ3doZW4gdGhlcmUgaXMgbm8gcXVlcnkg dGV4dCcsICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICBzZXRVcFNw aWVzKCcnLCAnJyk7CisgICAgICB9KTsKKyAgICAgIGl0KCdkb2VzIG5vdGhpbmcnLCAoKSA9PiB7 CisgICAgICAgIGV4cGVjdCgKKyAgICAgICAgICBxdWVyeVRvb2xBY3Rpb25zLnRvZ2dsZUNhc2VP ZlNlbGVjdGVkVGV4dChzcWxFZGl0b3JDb250cm9sbGVyKQorICAgICAgICApLm5vdC50b0JlRGVm aW5lZCgpOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgnd2hlbiB0aGVyZSBp cyBlbXB0eSBzZWxlY3Rpb24nLCAoKSA9PiB7CisgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAg ICAgICAgc2V0VXBTcGllcygnJywgJ2Egc3RyaW5nXG5kZGRcbnNzcycpOworCisgICAgICAgIHNx bEVkaXRvckNvbnRyb2xsZXIuZ3JpZFZpZXcucXVlcnlfdG9vbF9vYmouZ2V0Q3Vyc29yID0gKGlz RnJvbSkgPT4geworICAgICAgICAgIHJldHVybiBpc0Zyb20gPyAzIDogMzsKKyAgICAgICAgfTsK KyAgICAgIH0pOworCisgICAgICBpdCgnZG9lcyBub3RoaW5nJywgKCkgPT4geworICAgICAgICBl eHBlY3QoCisgICAgICAgICAgcXVlcnlUb29sQWN0aW9ucy50b2dnbGVDYXNlT2ZTZWxlY3RlZFRl eHQoc3FsRWRpdG9yQ29udHJvbGxlcikKKyAgICAgICAgKS5ub3QudG9CZURlZmluZWQoKTsKKyAg ICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoJ3doZW4gc2VsZWN0ZWQgcXVlcnkgaXMg aW4gbG93ZXIgY2FzZScsICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAg ICBzZXRVcFNwaWVzKCdzdHJpbmcnLCAnYSBzdHJpbmdcbmRkZFxuc3NzJyk7CisgICAgICB9KTsK KworICAgICAgaXQoJ3RvZ2dsZSB0aGUgc2VsZWN0aW9uIGFuZCBzdHJpbmcgc2hvdWxkIGJlIGlu IHVwcGVyIGNhc2UnLCAoKSA9PiB7CisgICAgICAgIHF1ZXJ5VG9vbEFjdGlvbnMudG9nZ2xlQ2Fz ZU9mU2VsZWN0ZWRUZXh0KHNxbEVkaXRvckNvbnRyb2xsZXIpOworICAgICAgICBleHBlY3QocmVw bGFjZVNlbGVjdGlvblNweQorICAgICAgICAgICkudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ1NUUklO RycpOworICAgICAgfSk7CisKKyAgICAgIGl0KCcobmVnYXRpdmUgc2NlbmFyaW8gdG9nZ2xlIHRo ZSBzZWxlY3Rpb24gYW5kIHN0cmluZyBzaG91bGQgYmUgaW4gdXBwZXIgY2FzZScsICgpID0+IHsK KyAgICAgICAgcXVlcnlUb29sQWN0aW9ucy50b2dnbGVDYXNlT2ZTZWxlY3RlZFRleHQoc3FsRWRp dG9yQ29udHJvbGxlcik7CisgICAgICAgIGV4cGVjdChyZXBsYWNlU2VsZWN0aW9uU3B5CisgICAg ICAgICAgKS5ub3QudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ3N0cmluZycpOworICAgICAgfSk7Cisg ICAgfSk7CisKKyAgICBkZXNjcmliZSgnd2hlbiBzZWxlY3RlZCBxdWVyeSBpcyBpbiB1cHBlciBj YXNlJywgKCkgPT4geworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIHNldFVwU3Bp ZXMoJ1NUUklORycsICdhIHN0cmluZ1xuZGRkXG5zc3MnKTsKKyAgICAgIH0pOworCisgICAgICBp dCgndG9nZ2xlIHRoZSBzZWxlY3Rpb24gYW5kIHN0cmluZyBzaG91bGQgYmUgaW4gbG93ZXIgY2Fz ZScsICgpID0+IHsKKyAgICAgICAgcXVlcnlUb29sQWN0aW9ucy50b2dnbGVDYXNlT2ZTZWxlY3Rl ZFRleHQoc3FsRWRpdG9yQ29udHJvbGxlcik7CisgICAgICAgIGV4cGVjdChyZXBsYWNlU2VsZWN0 aW9uU3B5CisgICAgICAgICAgKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnc3RyaW5nJyk7CisgICAg ICB9KTsKKworICAgICAgaXQoJyhuZWdhdGl2ZSBzY2VuYXJpbyB0b2dnbGUgdGhlIHNlbGVjdGlv biBhbmQgc3RyaW5nIHNob3VsZCBiZSBpbiBsb3dlciBjYXNlJywgKCkgPT4geworICAgICAgICBx dWVyeVRvb2xBY3Rpb25zLnRvZ2dsZUNhc2VPZlNlbGVjdGVkVGV4dChzcWxFZGl0b3JDb250cm9s bGVyKTsKKyAgICAgICAgZXhwZWN0KHJlcGxhY2VTZWxlY3Rpb25TcHkKKyAgICAgICAgICApLm5v dC50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnU1RSSU5HJyk7CisgICAgICB9KTsKKyAgICB9KTsKKwor ICAgIGRlc2NyaWJlKCd3aGVuIHNlbGVjdGVkIHF1ZXJ5IGlzIGluIG1peGVkIGNhc2UnLCAoKSA9 PiB7CisgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgc2V0VXBTcGllcygnc1RSSW5n JywgJ2Egc3RyaW5nXG5kZGRcbnNzcycpOworICAgICAgfSk7CisKKyAgICAgIGl0KCd0b2dnbGUg dGhlIHNlbGVjdGlvbiBhbmQgc3RyaW5nIHNob3VsZCBiZSBpbiB1cHBlciBjYXNlJywgKCkgPT4g eworICAgICAgICBxdWVyeVRvb2xBY3Rpb25zLnRvZ2dsZUNhc2VPZlNlbGVjdGVkVGV4dChzcWxF ZGl0b3JDb250cm9sbGVyKTsKKyAgICAgICAgZXhwZWN0KHJlcGxhY2VTZWxlY3Rpb25TcHkKKyAg ICAgICAgICApLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdTVFJJTkcnKTsKKyAgICAgIH0pOworCisg ICAgICBpdCgnKG5lZ2F0aXZlIHNjZW5hcmlvIHRvZ2dsZSB0aGUgc2VsZWN0aW9uIGFuZCBzdHJp bmcgc2hvdWxkIGJlIGluIHVwcGVyIGNhc2UnLCAoKSA9PiB7CisgICAgICAgIHF1ZXJ5VG9vbEFj dGlvbnMudG9nZ2xlQ2FzZU9mU2VsZWN0ZWRUZXh0KHNxbEVkaXRvckNvbnRyb2xsZXIpOworICAg ICAgICBleHBlY3QocmVwbGFjZVNlbGVjdGlvblNweQorICAgICAgICAgICkubm90LnRvSGF2ZUJl ZW5DYWxsZWRXaXRoKCdzVFJJbmcnKTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKKwogICBm dW5jdGlvbiBzZXRVcFNwaWVzKHNlbGVjdGVkUXVlcnlTdHJpbmcsIGVudGlyZVF1ZXJ5U3RyaW5n KSB7CiAgICAgZ2V0VmFsdWVTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweSgnZ2V0VmFsdWVTcHknKS5h bmQucmV0dXJuVmFsdWUoZW50aXJlUXVlcnlTdHJpbmcpOwogICAgIGdldFNlbGVjdGlvblNweSA9 IGphc21pbmUuY3JlYXRlU3B5KCdnZXRTZWxlY3Rpb25TcHknKS5hbmQucmV0dXJuVmFsdWUoc2Vs ZWN0ZWRRdWVyeVN0cmluZyk7CisgICAgcmVwbGFjZVNlbGVjdGlvblNweSA9IGphc21pbmUuY3Jl YXRlU3B5KCdyZXBsYWNlU2VsZWN0aW9uU3B5Jyk7CiAKICAgICBzcWxFZGl0b3JDb250cm9sbGVy ID0gewogICAgICAgZ3JpZFZpZXc6IHsKQEAgLTQ0OSw2ICs1MzQsNyBAQCBkZXNjcmliZSgncXVl cnlUb29sQWN0aW9ucycsICgpID0+IHsKICAgICAgICAgICB0b2dnbGVDb21tZW50OiBqYXNtaW5l LmNyZWF0ZVNweSgndG9nZ2xlQ29tbWVudFNweScpLAogICAgICAgICAgIGxpbmVDb21tZW50OiBq YXNtaW5lLmNyZWF0ZVNweSgnbGluZUNvbW1lbnRTcHknKSwKICAgICAgICAgICB1bmNvbW1lbnQ6 IGphc21pbmUuY3JlYXRlU3B5KCd1bmNvbW1lbnRTcHknKSwKKyAgICAgICAgICByZXBsYWNlU2Vs ZWN0aW9uOiByZXBsYWNlU2VsZWN0aW9uU3B5LAogICAgICAgICAgIGdldEN1cnNvcjogKGlzRnJv bSkgPT4gewogICAgICAgICAgICAgcmV0dXJuIGVudGlyZVF1ZXJ5U3RyaW5nLmluZGV4T2Yoc2Vs ZWN0ZWRRdWVyeVN0cmluZykgKyAoaXNGcm9tID8gMCA6IHNlbGVjdGVkUXVlcnlTdHJpbmcubGVu Z3RoKTsKICAgICAgICAgICB9LAo= --000000000000076661056e953b41--