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 1lxoUd-0001nt-0Y for pgadmin-hackers@arkaria.postgresql.org; Mon, 28 Jun 2021 10:27:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lxoUa-0007wZ-PO for pgadmin-hackers@arkaria.postgresql.org; Mon, 28 Jun 2021 10:27:52 +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 1lxoUa-0007wF-F5 for pgadmin-hackers@lists.postgresql.org; Mon, 28 Jun 2021 10:27:52 +0000 Received: from mail-ua1-x929.google.com ([2607:f8b0:4864:20::929]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1lxoUX-0003FK-GX for pgadmin-hackers@postgresql.org; Mon, 28 Jun 2021 10:27:51 +0000 Received: by mail-ua1-x929.google.com with SMTP id c20so6760749uar.12 for ; Mon, 28 Jun 2021 03:27:48 -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=zz8kj3Y2QmDJ7V+xv9+NasVSkeryok2xR0O+jYJFvpU=; b=DH3C1lxKJ4j24nJEJXpIdn3HUDJaVnSmwcrPZjEM1Irum45f932hHh0L9PlHFzXlbo 4cynoz/pQ/7bWZzsSyu4X1AMsbyJbllm+wHLRdS7ljP44QYKxIlZyNaaKegTtdU6ABu7 PJ+aDAW2dwaqLvqGfjbstBLrODyQ4660sJYw7ZhEwKaPfcEdoNKMKFBS//jhhem2H77Z mwcM1Xu22G4KlpGpfRep5icC5D2fINvc7Z8kILpZA6odT+xjS3KNpDF6JUqdDouja6ug EyBq/5Wi23mElZYBSUqQB52HtAmZiqA/qNsiYFHdT4G1y0wmAfVAddo45vNPd/q5TNOQ H5Rg== 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=zz8kj3Y2QmDJ7V+xv9+NasVSkeryok2xR0O+jYJFvpU=; b=Cqx9zKDNvem648I74D4ORdwYUeobdRzx2dDNTIRNdEyXXFlwhSQ9kmnPSbfXj0ps8W FXgwWWkd8EA5vu1xaYWVLKMY+TQa509AxVdm1UH4gnDLJM6SG/Vbwq3Dv3exf3mkh/5Z FeSyjzQ00FqqSvtk2mW8htJifuO5QWZB7nuuVUGFcVak26XlUTfrnLnfdpVwHBCpFdaT cPhxBLGKL3mz3JzuRNsoVYCGd5IGGGefbYWmqokkemRqOIBaDymwDUbYmtX+MwP5zI/p R3DKHnPleWyvdZFkgPNvM0QUSSwiUIiBgtusaxerWQSQbVs6576w125WBub9dX6QBA7S VLYg== X-Gm-Message-State: AOAM5327o9ppt0Bp/8W2zrMKocogpzE7vWaY1rjDp20NwcSA0zOAugYT na56JEHZvFjhAOxiuKJ111ryJ+7Ko6xfVt0bULyHzQ9Ehg5X1JBqp4W1FCBun+ccYZ+3eB2ze08 SBlLPTA0Lgj5t7UCjkfzydZaPCoRfhumUq06hddRZfhfCGz2ewQVy3XPLniwIZwwZgoM1dpSxZ3 A3pRUh2qweZAGmXVZ747v0hT1nB9BvshiLnuynPDDlMoHh/zsNF5gBgfP2W2fBltI= X-Google-Smtp-Source: ABdhPJzupucGFoHdqRaCzvuPw3SjjysjDEOMnSb0l0DHPQW3ag610edw5HtItTs3ppIEHX6BIQPq6GFkLm/gT3/fI9M= X-Received: by 2002:ab0:6392:: with SMTP id y18mr19956459uao.139.1624876066953; Mon, 28 Jun 2021 03:27:46 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Aditya Toshniwal Date: Mon, 28 Jun 2021 15:57:10 +0530 Message-ID: Subject: Re: [pgAdmin][RM6130] React based framework for properties dialog and port Server Group, Server and Database dialogs To: pgadmin-hackers Cc: Akshay Joshi Content-Type: multipart/mixed; boundary="000000000000c684a005c5d0f08f" 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: Archived-At: Precedence: bulk --000000000000c684a005c5d0f08f Content-Type: multipart/alternative; boundary="000000000000c6849e05c5d0f08d" --000000000000c6849e05c5d0f08d Content-Type: text/plain; charset="UTF-8" Hi Hackers, Please ignore the previous patch. Attached is the revised patch. On Mon, Jun 28, 2021 at 2:50 PM Aditya Toshniwal < aditya.toshniwal@enterprisedb.com> wrote: > Hi Hackers, > > I made some changes to the core code that will be helpful for other nodes. > Please review. > > > On Thu, Jun 24, 2021 at 5:39 PM Akshay Joshi < > akshay.joshi@enterprisedb.com> wrote: > >> Thanks, the patch applied in the "React_Porting" branch. >> >> On Mon, Jun 21, 2021 at 9:35 AM Aditya Toshniwal < >> aditya.toshniwal@enterprisedb.com> wrote: >> >>> Hi Dave, >>> >>> On Thu, Jun 17, 2021 at 7:26 PM Dave Page wrote: >>> >>>> Hi >>>> >>>> On Thu, Jun 17, 2021 at 11:01 AM Aditya Toshniwal < >>>> aditya.toshniwal@enterprisedb.com> wrote: >>>> >>>>> Hi Hackers, >>>>> >>>>> Attached patch marks the beginning of migrating properties dialog/tab >>>>> to React based code, which is easy to maintain, performant and testable >>>>> using automation. >>>>> Patch includes: >>>>> - Framework for creating React based dynamic form view out of a >>>>> pre-defined UI schema. Previously, it was based on Backform/Backbone. >>>>> - The new framework and components will use MaterialUI as base. >>>>> Previously, Bootstrap/Backform/jQuery components were used. >>>>> - The new code uses JSS instead of CSS since material ui and most >>>>> modern React libraries also use JSS. In future, this will allow us to >>>>> change the theme in real-time without refresh. >>>>> - 90% code covered by 80-85 new jasmine test cases. >>>>> - Server group node UI Schema migration to new, with schema test cases. >>>>> - Server node UI Schema migration to new, with schema test cases. >>>>> - Database node UI Schema migration to new, with schema test cases. >>>>> - Few other UI changes. >>>>> >>>> >>>> Nice! >>>> >>>> >>>>> >>>>> PS: Until all the nodes are migrated, this will not go in the main >>>>> branch. >>>>> >>>> >>>> Yeah, how are we going to manage this? I agree with building it out in >>>> a branch until we have full coverage of the dialogues, but I'm concerned >>>> that it'll become a merge nightmare. Though, I guess we aren't touching the >>>> dialogues much for other things right now, so maybe not. >>>> >>> We'll right now work only on the dialogs. So merging should be >>> manageable. >>> BTW, the patch can be merged in the main branch as well. It is backward >>> compatible, and it will work fine. Only the UI components would look >>> slightly different from the non-migrated dialogs. >>> >>>> >>>> -- >>>> Dave Page >>>> Blog: https://pgsnake.blogspot.com >>>> Twitter: @pgsnake >>>> >>>> EDB: https://www.enterprisedb.com >>>> >>>> >>> >>> -- >>> Thanks, >>> Aditya Toshniwal >>> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* >>> >>> "Don't Complain about Heat, Plant a TREE" >>> >> >> >> -- >> *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" > -- Thanks, Aditya Toshniwal pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* "Don't Complain about Heat, Plant a TREE" --000000000000c6849e05c5d0f08d Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi=C2=A0Hackers,

Please ignore the previous patch. Att= ached is the revised patch.

On Mon, Jun 28, 2021 at 2:50 PM Aditya Tos= hniwal <aditya.tosh= niwal@enterprisedb.com> wrote:
Hi Hackers,

I made some change= s to the core code that will be helpful for other nodes.
Please=C2=A0review= .


On Thu, Jun 24, 2021 at 5:39 PM Akshay Joshi <akshay.joshi@enterpris= edb.com> wrote:
Thanks, the patch applied in=C2=A0the "React_P= orting" branch.

On Mon, Jun 21, 2021 at 9:35 AM Aditya Toshniwal <aditya= .toshniwal@enterprisedb.com> wrote:
Hi Dave,

On Th= u, Jun 17, 2021 at 7:26 PM Dave Page <dpage@pgadmin.org> wrote:
Hi

On Thu, Jun 1= 7, 2021 at 11:01 AM Aditya Toshniwal <aditya.toshniwal@enterprisedb.com&= gt; wrote:
Hi Hackers,
=

Attached patch marks the beginning=C2=A0of migra= ting properties dialog/tab to React based code, which is easy to maintain, = performant and testable using automation.
Patch includes:
- Framework for creating=C2=A0React based dynamic form view= out of a pre-defined UI schema. Previously, it was based on Backform/Backb= one.
- The new framework= and components will use MaterialUI as base. Previously, Bootstrap/Backform= /jQuery components were used.
- The new code uses JSS instead of CSS since material ui and most= modern React libraries also use JSS. In future, this will=C2=A0allow us to= change the=C2=A0theme in real-time without refresh.
- 90% code covered by 80-85 new jasmine test c= ases.
- Server group node UI Schema migration= to new, with schema test cases.
- Server node UI Schema migration to new, with schema test cases.<= br>
- Database node UI S= chema migration to new, with schema test cases.
- Few other UI changes.

Nice!
=C2=A0

= PS: Until=C2=A0all the nodes are migrated, this will not go in the main bra= nch.

Yeah, how are we goi= ng to manage this? I agree with building it out in a branch until we have f= ull coverage of the dialogues, but I'm concerned that it'll become = a merge nightmare. Though, I guess we aren't touching the dialogues muc= h for other things right now, so maybe not.
<= div>= We'll right now work only on the dialogs. So merging should be manageab= le.
BTW, the patch can be merged in the main branch as well. I= t is backward compatible, and it will work fine. Only the UI components wou= ld look slightly different from the non-migrated dialogs.
=C2=A0
--


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


--
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"


--
Thanks,
Aditya Toshniwal
pgAdmin hacker=C2=A0| Sr. Softwa= re Engineer | edbpostgres.com<= /font>
"Don't Complain about Heat, Plant a TREE&qu= ot;
--000000000000c6849e05c5d0f08d-- --000000000000c684a005c5d0f08f Content-Type: application/octet-stream; name="RM6130.part2revised.patch" Content-Disposition: attachment; filename="RM6130.part2revised.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kqgh8fek0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zdGF0aWMvanMvZGF0YWJhc2UudWkuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc3RhdGljL2pzL2RhdGFiYXNlLnVpLmpzCmlu ZGV4IGZiNDJiMzdjNS4uNzY5NTcwOTYxIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc3RhdGljL2pzL2RhdGFiYXNlLnVpLmpz CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zdGF0aWMvanMvZGF0YWJhc2UudWkuanMKQEAgLTE3LDcgKzE3LDcgQEAgZXhwb3J0IGNsYXNz IERlZmF1bHRQcml2U2NoZW1hIGV4dGVuZHMgQmFzZVVJU2NoZW1hIHsKICAgICB0aGlzLmdldFBy aXZpbGVnZVJvbGVTY2hlbWEgPSBnZXRQcml2aWxlZ2VSb2xlU2NoZW1hOwogICB9CiAKLSAgZ2V0 IGZpZWxkcygpIHsKKyAgZ2V0IGJhc2VGaWVsZHMoKSB7CiAgICAgcmV0dXJuIFsKICAgICAgIHsK ICAgICAgICAgaWQ6ICdkZWZ0YmxhY2wnLCB0eXBlOiAnY29sbGVjdGlvbicsIGdyb3VwOiBnZXR0 ZXh0KCdUYWJsZXMnKSwKQEAgLTg5LDcgKzg5LDcgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGF0 YWJhc2VTY2hlbWEgZXh0ZW5kcyBCYXNlVUlTY2hlbWEgewogICAgIHJldHVybiAnZGlkJzsKICAg fQogCi0gIGdldCBmaWVsZHMoKSB7CisgIGdldCBiYXNlRmllbGRzKCkgewogICAgIGxldCBvYmog PSB0aGlzOwogICAgIHJldHVybiBbCiAgICAgICB7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3N0YXRpYy9qcy9ub2RlX3ZpZXcuanN4IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0 aWMvanMvbm9kZV92aWV3LmpzeAppbmRleCA4MzczNjQ3NjkuLjkwNjdiNWExYiAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvbm9kZV92aWV3LmpzeAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9ub2RlX3ZpZXcuanN4CkBAIC0xNzEsMTIgKzE3MSwx OCBAQCBleHBvcnQgZnVuY3Rpb24gZ2V0Tm9kZVZpZXcobm9kZVR5cGUsIHRyZWVOb2RlSW5mbywg YWN0aW9uVHlwZSwgaXRlbU5vZGVEYXRhLCBmbwogICAgIGluQ2F0YWxvZzogaW5DYXRhbG9nLAog ICB9OwogCisgIGxldCBzY2hlbWEgPSBub2RlT2JqLmdldFNjaGVtYS5jYWxsKG5vZGVPYmosIHRy ZWVOb2RlSW5mbywgaXRlbU5vZGVEYXRhKTsKKyAgLy8gU2hvdy9IaWRlIHNlY3VyaXR5IGdyb3Vw IGZvciBub2RlcyB1bmRlciB0aGUgY2F0YWxvZworICBpZignY2F0YWxvZycgaW4gdHJlZU5vZGVJ bmZvKSB7CisgICAgc2NoZW1hLmZpbHRlckdyb3VwcyA9IFtnZXR0ZXh0KCdTZWN1cml0eScpXTsK KyAgfQorCiAgIC8qIEZpcmUgYXQgd2lsbCwgbW91bnQgdGhlIERPTSAqLwogICBSZWFjdERPTS5y ZW5kZXIoCiAgICAgPFNjaGVtYVZpZXcKICAgICAgIGZvcm1UeXBlPXtmb3JtVHlwZX0KICAgICAg IGdldEluaXREYXRhPXtpbml0RGF0YX0KLSAgICAgIHNjaGVtYT17bm9kZU9iai5nZXRTY2hlbWEu Y2FsbChub2RlT2JqLCB0cmVlTm9kZUluZm8sIGl0ZW1Ob2RlRGF0YSl9CisgICAgICBzY2hlbWE9 e3NjaGVtYX0KICAgICAgIHZpZXdIZWxwZXJQcm9wcz17dmlld0hlbHBlclByb3BzfQogICAgICAg b25TYXZlPXtvblNhdmVDbGlja30KICAgICAgIG9uQ2xvc2U9eygpPT5jb250YWluZXJQYW5lbC5j bG9zZSgpfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL1NjaGVtYVZpZXcvRGF0 YUdyaWRWaWV3LmpzeCBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9TY2hlbWFWaWV3L0RhdGFHcmlk Vmlldy5qc3gKaW5kZXggM2NmMTY3ODNiLi44OWY5YjUxOWYgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2Fk bWluL3N0YXRpYy9qcy9TY2hlbWFWaWV3L0RhdGFHcmlkVmlldy5qc3gKKysrIGIvd2ViL3BnYWRt aW4vc3RhdGljL2pzL1NjaGVtYVZpZXcvRGF0YUdyaWRWaWV3LmpzeApAQCAtMjU3LDE2ICsyNTcs MTYgQEAgZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRGF0YUdyaWRWaWV3KHsKICAgICAgICAgICAg ICAgICAgICAgKHZpZXdIZWxwZXJQcm9wcy5zZXJ2ZXJJbmZvLnZlcnNpb24gPD0gZmllbGQubWF4 X3ZlcnNpb24pKSkpOwogICAgICAgICAgICAgICAgIGxldCBfcmVhZG9ubHkgPSB2aWV3SGVscGVy UHJvcHMuaW5DYXRhbG9nIHx8ICh2aWV3SGVscGVyUHJvcHMubW9kZSA9PSAncHJvcGVydGllcycp OwogICAgICAgICAgICAgICAgIGlmKCFfcmVhZG9ubHkpIHsKLSAgICAgICAgICAgICAgICAgIF9y ZWFkb25seSA9IGV2YWxGdW5jKHJlYWRvbmx5LCByb3cub3JpZ2luYWwgfHwge30pOworICAgICAg ICAgICAgICAgICAgX3JlYWRvbmx5ID0gZXZhbEZ1bmMoc2NoZW1hLCByZWFkb25seSwgcm93Lm9y aWdpbmFsIHx8IHt9KTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBsZXQg X3Zpc2libGUgPSB0cnVlOwogICAgICAgICAgICAgICAgIGlmKHZpc2libGUpIHsKLSAgICAgICAg ICAgICAgICAgIF92aXNpYmxlID0gZXZhbEZ1bmModmlzaWJsZSwgcm93Lm9yaWdpbmFsIHx8IHt9 KTsKKyAgICAgICAgICAgICAgICAgIF92aXNpYmxlID0gZXZhbEZ1bmMoc2NoZW1hLCB2aXNpYmxl LCByb3cub3JpZ2luYWwgfHwge30pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg ICBfdmlzaWJsZSA9IF92aXNpYmxlICYmIHZlckluTGltaXQ7CiAKLSAgICAgICAgICAgICAgICBk aXNhYmxlZCA9IGV2YWxGdW5jKGRpc2FibGVkLCByb3cub3JpZ2luYWwgfHwge30pOworICAgICAg ICAgICAgICAgIGRpc2FibGVkID0gZXZhbEZ1bmMoc2NoZW1hLCBkaXNhYmxlZCwgcm93Lm9yaWdp bmFsIHx8IHt9KTsKIAogICAgICAgICAgICAgICAgIHJldHVybiA8TWFwcGVkQ2VsbENvbnRyb2wg cm93SW5kZXg9e3Jvdy5pbmRleH0gdmFsdWU9e3ZhbHVlfQogICAgICAgICAgICAgICAgICAgcm93 PXtyb3cub3JpZ2luYWx9IHsuLi5fZmllbGR9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0 aWMvanMvU2NoZW1hVmlldy9Gb3JtVmlldy5qc3ggYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvU2No ZW1hVmlldy9Gb3JtVmlldy5qc3gKaW5kZXggNDg1ZDk4M2RkLi40OWQxMzNkMTcgMTAwNjQ0Ci0t LSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9TY2hlbWFWaWV3L0Zvcm1WaWV3LmpzeAorKysgYi93 ZWIvcGdhZG1pbi9zdGF0aWMvanMvU2NoZW1hVmlldy9Gb3JtVmlldy5qc3gKQEAgLTEwNSwxNyAr MTA1LDE3IEBAIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEZvcm1WaWV3KHsKIAogICAgICAgbGV0 IF9yZWFkb25seSA9IHZpZXdIZWxwZXJQcm9wcy5pbkNhdGFsb2cgfHwgKHZpZXdIZWxwZXJQcm9w cy5tb2RlID09ICdwcm9wZXJ0aWVzJyk7CiAgICAgICBpZighX3JlYWRvbmx5KSB7Ci0gICAgICAg IF9yZWFkb25seSA9IGV2YWxGdW5jKHJlYWRvbmx5LCB2YWx1ZSk7CisgICAgICAgIF9yZWFkb25s eSA9IGV2YWxGdW5jKHNjaGVtYSwgcmVhZG9ubHksIHZhbHVlKTsKICAgICAgIH0KIAogICAgICAg bGV0IF92aXNpYmxlID0gdHJ1ZTsKIAogICAgICAgaWYodmlzaWJsZSkgewotICAgICAgICBfdmlz aWJsZSA9IGV2YWxGdW5jKHZpc2libGUsIHZhbHVlKTsKKyAgICAgICAgX3Zpc2libGUgPSBldmFs RnVuYyhzY2hlbWEsIHZpc2libGUsIHZhbHVlKTsKICAgICAgIH0KICAgICAgIF92aXNpYmxlID0g X3Zpc2libGUgJiYgdmVySW5MaW1pdDsKIAotICAgICAgZGlzYWJsZWQgPSBldmFsRnVuYyhkaXNh YmxlZCwgdmFsdWUpOworICAgICAgZGlzYWJsZWQgPSBldmFsRnVuYyhzY2hlbWEsIGRpc2FibGVk LCB2YWx1ZSk7CiAKIAogICAgICAgaWYoIXRhYnNbZ3JvdXBdKSB0YWJzW2dyb3VwXSA9IFtdOwpA QCAtMTUxLDYgKzE1MSw3IEBAIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEZvcm1WaWV3KHsKICAg ICAgICAgICAgICAgICBmaXJzdEVsZVJlZi5jdXJyZW50ID0gZWxlOwogICAgICAgICAgICAgICB9 CiAgICAgICAgICAgICB9fQorICAgICAgICAgICAgc3RhdGU9e3ZhbHVlfQogICAgICAgICAgICAg a2V5PXtmaWVsZC5pZH0KICAgICAgICAgICAgIHZpZXdIZWxwZXJQcm9wcz17dmlld0hlbHBlclBy b3BzfQogICAgICAgICAgICAgbmFtZT17ZmllbGQuaWR9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9zdGF0aWMvanMvU2NoZW1hVmlldy9NYXBwZWRDb250cm9sLmpzeCBiL3dlYi9wZ2FkbWluL3N0 YXRpYy9qcy9TY2hlbWFWaWV3L01hcHBlZENvbnRyb2wuanN4CmluZGV4IDQ2YTgxNTI0NS4uNjE5 NWQ2MTBmIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvU2NoZW1hVmlldy9NYXBw ZWRDb250cm9sLmpzeAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvU2NoZW1hVmlldy9NYXBw ZWRDb250cm9sLmpzeApAQCAtMTU4LDcgKzE1OCw3IEBAIGNvbnN0IEFMTE9XRURfUFJPUFNfRklF TERfQ09NTU9OID0gWwogXTsKIAogY29uc3QgQUxMT1dFRF9QUk9QU19GSUVMRF9GT1JNID0gWwot ICAndHlwZScsICdvbkNoYW5nZScKKyAgJ3R5cGUnLCAnb25DaGFuZ2UnLCAnc3RhdGUnLAogXTsK IAogY29uc3QgQUxMT1dFRF9QUk9QU19GSUVMRF9DRUxMID0gWwpAQCAtMTY4LDcgKzE2OCw3IEBA IGNvbnN0IEFMTE9XRURfUFJPUFNfRklFTERfQ0VMTCA9IFsKIAogZXhwb3J0IGNvbnN0IE1hcHBl ZEZvcm1Db250cm9sID0gKHByb3BzKT0+ewogICBsZXQgbmV3UHJvcHMgPSB7Li4ucHJvcHN9Owot ICBsZXQgdHlwZVByb3BzID0gZXZhbEZ1bmMobmV3UHJvcHMudHlwZSwgbmV3UHJvcHMudmFsdWUp OworICBsZXQgdHlwZVByb3BzID0gZXZhbEZ1bmMobnVsbCwgbmV3UHJvcHMudHlwZSwgbmV3UHJv cHMuc3RhdGUpOwogICBpZih0eXBlb2YodHlwZVByb3BzKSA9PT0gJ29iamVjdCcpIHsKICAgICBu ZXdQcm9wcyA9IHsKICAgICAgIC4uLm5ld1Byb3BzLApAQCAtMTg0LDcgKzE4NCw3IEBAIGV4cG9y dCBjb25zdCBNYXBwZWRGb3JtQ29udHJvbCA9IChwcm9wcyk9PnsKIAogZXhwb3J0IGNvbnN0IE1h cHBlZENlbGxDb250cm9sID0gKHByb3BzKT0+ewogICBsZXQgbmV3UHJvcHMgPSB7Li4ucHJvcHN9 OwotICBsZXQgY2VsbFByb3BzID0gZXZhbEZ1bmMobmV3UHJvcHMuY2VsbCwgbmV3UHJvcHMucm93 KTsKKyAgbGV0IGNlbGxQcm9wcyA9IGV2YWxGdW5jKG51bGwsIG5ld1Byb3BzLmNlbGwsIG5ld1By b3BzLnJvdyk7CiAgIGlmKHR5cGVvZihjZWxsUHJvcHMpID09PSAnb2JqZWN0JykgewogICAgIG5l d1Byb3BzID0gewogICAgICAgLi4ubmV3UHJvcHMsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9z dGF0aWMvanMvU2NoZW1hVmlldy9iYXNlX3NjaGVtYS51aS5qcyBiL3dlYi9wZ2FkbWluL3N0YXRp Yy9qcy9TY2hlbWFWaWV3L2Jhc2Vfc2NoZW1hLnVpLmpzCmluZGV4IGZiMDFhMjRkMi4uN2Y5MDkx ZGRhIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvU2NoZW1hVmlldy9iYXNlX3Nj aGVtYS51aS5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvU2NoZW1hVmlldy9iYXNlX3Nj aGVtYS51aS5qcwpAQCAtMTcsNiArMTcsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCYXNlVUlT Y2hlbWEgewogICAgIHRoaXMuX2RlZmF1bHRzID0gZGVmYXVsdHM7CiAKICAgICB0aGlzLmtleXMg PSBudWxsOyAvLyBJZiBzZXQsIG90aGVyIGZpZWxkcyBleGNlcHQga2V5cyB3aWxsIGJlIGZpbHRl cmVkCisgICAgdGhpcy5maWx0ZXJHcm91cHMgPSBbXTsgLy8gSWYgc2V0LCB0aGVzZSBncm91cHMg d2lsbCBiZSBmaWx0ZXJlZCBvdXQKICAgICB0aGlzLmluZm9ybVRleHQgPSBudWxsOyAvLyBJbmZv cm0gdGV4dCB0byBzaG93IGFmdGVyIHNhdmUsIHRoaXMgb25seSBzYXZlcyBpdAogICAgIHRoaXMu X3RvcCA9IG51bGw7CiAgIH0KQEAgLTU5LDEzICs2MCwyNiBAQCBleHBvcnQgZGVmYXVsdCBjbGFz cyBCYXNlVUlTY2hlbWEgewogICBjb25jYXQgYmFzZSBmaWVsZHMgd2l0aCBleHRyYUZpZWxkcy4K ICAgKi8KICAgZ2V0IGZpZWxkcygpIHsKLSAgICAvKiBTZWxlY3Qgb25seSBrZXlzIGlmIHNwZWNp ZmllZCAqLwogICAgIHJldHVybiB0aGlzLmJhc2VGaWVsZHMKLSAgICAgIC5maWx0ZXIoKGZpZWxk KT0+dGhpcy5rZXlzID8gdGhpcy5rZXlzLmluZGV4T2YoZmllbGQuaWQpID4gLTEgOiB0cnVlKTsK KyAgICAgIC5maWx0ZXIoKGZpZWxkKT0+eworICAgICAgICBsZXQgcmV0dmFsOworCisgICAgICAg IC8qIElmIGFueSBncm91cHMgYXJlIHRvIGJlIGZpbHRlcmVkICovCisgICAgICAgIHJldHZhbCA9 IHRoaXMuZmlsdGVyR3JvdXBzLmluZGV4T2YoZmllbGQuZ3JvdXApID09IC0xOworCisgICAgICAg IC8qIFNlbGVjdCBvbmx5IGtleXMsIGlmIHNwZWNpZmllZCAqLworICAgICAgICBpZih0aGlzLmtl eXMpIHsKKyAgICAgICAgICByZXR2YWwgPSByZXR2YWwgJiYgdGhpcy5rZXlzLmluZGV4T2YoZmll bGQuaWQpID4gLTE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJldHZhbDsKKyAgICAgIH0p OwogICB9CiAKICAgLyogQ2hlY2sgaWYgY3VycmVudCBkYXRhIGlzIG5ldyBvciBleGlzdGluZyAq LwogICBpc05ldyhzdGF0ZSkgeworICAgIGlmKF8uaXNVbmRlZmluZWQoc3RhdGUpKSB7CisgICAg ICBzdGF0ZSA9IHRoaXMub3JpZ0RhdGE7CisgICAgfQogICAgIGlmKF8uaGFzKHN0YXRlLCB0aGlz LmlkQXR0cmlidXRlKSkgewogICAgICAgcmV0dXJuIF8uaXNVbmRlZmluZWQoc3RhdGVbdGhpcy5p ZEF0dHJpYnV0ZV0pCiAgICAgICAgIHx8IF8uaXNOdWxsKHN0YXRlW3RoaXMuaWRBdHRyaWJ1dGVd KTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9TY2hlbWFWaWV3L2luZGV4Lmpz eCBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9TY2hlbWFWaWV3L2luZGV4LmpzeAppbmRleCBjMzEw NmIzNmMuLjZmY2NjM2RhYSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL1NjaGVt YVZpZXcvaW5kZXguanN4CisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9TY2hlbWFWaWV3L2lu ZGV4LmpzeApAQCAtODUsNyArODUsMTAgQEAgZnVuY3Rpb24gZ2V0Q2hhbmdlZERhdGEodG9wU2No ZW1hLCBtb2RlLCBzZXNzRGF0YSwgc3RyaW5naWZ5PWZhbHNlKSB7CiAgICAgICByZXR1cm47CiAg ICAgfSBlbHNlIHsKICAgICAgIGNoYW5nZSA9IGNoYW5nZSB8fCBfLmdldChzZXNzRGF0YSwgY3Vy clBhdGgpOwotICAgICAgXy5zZXQoY2hhbmdlZERhdGEsIGN1cnJQYXRoLCBzdHJpbmdpZnkgPyBK U09OLnN0cmluZ2lmeShjaGFuZ2UpIDogY2hhbmdlKTsKKyAgICAgIGlmKHN0cmluZ2lmeSAmJiAo Xy5pc0FycmF5KGNoYW5nZSkgfHwgXy5pc09iamVjdChjaGFuZ2UpKSkgeworICAgICAgICBjaGFu Z2UgPSBKU09OLnN0cmluZ2lmeShjaGFuZ2UpOworICAgICAgfQorICAgICAgXy5zZXQoY2hhbmdl ZERhdGEsIGN1cnJQYXRoLCBjaGFuZ2UpOwogICAgIH0KICAgfTsKIApAQCAtMTA0LDggKzEwNyw4 IEBAIGZ1bmN0aW9uIGdldENoYW5nZWREYXRhKHRvcFNjaGVtYSwgbW9kZSwgc2Vzc0RhdGEsIHN0 cmluZ2lmeT1mYWxzZSkgewogICAgICAgICAgICAgLyogVXNlIGRpZmZBcnJheSBwYWNrYWdlIHRv IGdldCB0aGUgYXJyYXkgZGlmZiBhbmQgZXh0cmFjdCB0aGUgaW5mbwogICAgICAgICAgICAgY2lk IGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHJvd3MgdW5pcXVlbHkgKi8KICAgICAgICAgICAgIGNv bnN0IGNoYW5nZURpZmYgPSBkaWZmQXJyYXkoCi0gICAgICAgICAgICAgIF8uZ2V0KHRvcFNjaGVt YS5vcmlnRGF0YSwgY3VyclBhdGgpLAotICAgICAgICAgICAgICBfLmdldChzZXNzRGF0YSwgY3Vy clBhdGgpLAorICAgICAgICAgICAgICBfLmdldCh0b3BTY2hlbWEub3JpZ0RhdGEsIGN1cnJQYXRo KSB8fCBbXSwKKyAgICAgICAgICAgICAgXy5nZXQoc2Vzc0RhdGEsIGN1cnJQYXRoKSB8fCBbXSwK ICAgICAgICAgICAgICAgJ2NpZCcKICAgICAgICAgICAgICk7CiAgICAgICAgICAgICBjaGFuZ2Ug PSB7fTsKQEAgLTQzNyw3ICs0NDAsMTMgQEAgZnVuY3Rpb24gU2NoZW1hRGlhbG9nVmlldyh7CiAg ICAgLyogQ2FsbGVkIHdoZW4gU1FMIHRhYiBpcyBhY3RpdmUgKi8KICAgICBpZihkaXJ0eSkgewog ICAgICAgaWYoIWZvcm1FcnIubmFtZSkgewotICAgICAgICBsZXQgY2hhbmdlRGF0YSA9IGdldENo YW5nZWREYXRhKHNjaGVtYSwgdmlld0hlbHBlclByb3BzLm1vZGUsIHNlc3NEYXRhLCB0cnVlKTsK KyAgICAgICAgbGV0IGNoYW5nZURhdGEgPSB7fTsKKyAgICAgICAgaWYodmlld0hlbHBlclByb3Bz Lm1vZGUgPT09ICdlZGl0JykgeworICAgICAgICAgIGNoYW5nZURhdGEgPSBnZXRDaGFuZ2VkRGF0 YShzY2hlbWEsIHZpZXdIZWxwZXJQcm9wcy5tb2RlLCBzZXNzRGF0YSwgdHJ1ZSk7CisgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgLyogSWYgbmV3IHRoZW4gbWVyZ2UgdGhlIGNoYW5nZWQgZGF0 YSB3aXRoIG9yaWdEYXRhICovCisgICAgICAgICAgY2hhbmdlRGF0YSA9IF8ubWVyZ2Uoc2NoZW1h Lm9yaWdEYXRhLCBzZXNzRGF0YSk7CisgICAgICAgIH0KICAgICAgICAgLyogQ2FsbCB0aGUgcGFz c2VkIGluY29taW5nIGdldFNRTFZhbHVlIGZ1bmMgdG8gZ2V0IHRoZSBTUUwKICAgICAgICAgcmV0 dXJuIG9mIGdldFNRTFZhbHVlIHNob3VsZCBiZSBhIHByb21pc2UuCiAgICAgICAgICovCkBAIC01 NjYsMTAgKzU3NSwxMCBAQCBmdW5jdGlvbiBTY2hlbWFQcm9wZXJ0aWVzVmlldyh7CiAgICAgICBf dmlzaWJsZSA9IChmaWVsZC5tb2RlLmluZGV4T2Yodmlld0hlbHBlclByb3BzLm1vZGUpID4gLTEp OwogICAgIH0KICAgICBpZihfdmlzaWJsZSAmJiB2aXNpYmxlKSB7Ci0gICAgICBfdmlzaWJsZSA9 IGV2YWxGdW5jKHZpc2libGUsIG9yaWdEYXRhKTsKKyAgICAgIF92aXNpYmxlID0gZXZhbEZ1bmMo c2NoZW1hLCB2aXNpYmxlLCBvcmlnRGF0YSk7CiAgICAgfQogCi0gICAgZGlzYWJsZWQgPSBldmFs RnVuYyhkaXNhYmxlZCwgb3JpZ0RhdGEpOworICAgIGRpc2FibGVkID0gZXZhbEZ1bmMoc2NoZW1h LCBkaXNhYmxlZCwgb3JpZ0RhdGEpOwogICAgIHJlYWRvbmx5ID0gdHJ1ZTsKICAgICBpZihfdmlz aWJsZSAmJiB2ZXJJbkxpbWl0KSB7CiAgICAgICBpZighdGFic1tncm91cF0pIHRhYnNbZ3JvdXBd ID0gW107CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvVGhlbWUvaW5kZXguanN4 IGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL1RoZW1lL2luZGV4LmpzeAppbmRleCA1N2JmNzI5NjQu LjZhNmUxZmMyOSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL1RoZW1lL2luZGV4 LmpzeAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvVGhlbWUvaW5kZXguanN4CkBAIC0yNTEs MTcgKzI1MSwxNyBAQCBmdW5jdGlvbiBnZXRGaW5hbFRoZW1lKGJhc2VUaGVtZSkgewogICAgICAg ICAgIGZvbnRTaXplOiBiYXNlVGhlbWUudHlwb2dyYXBoeS5mb250U2l6ZSwKICAgICAgICAgICBo ZWlnaHQ6ICd1bnNldCcsCiAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBiYXNlVGhlbWUucGFs ZXR0ZS5iYWNrZ3JvdW5kLmRlZmF1bHQsCi0gICAgICAgICAgJyZbcmVhZG9ubHldJzogewotICAg ICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBiYXNlVGhlbWUucGFsZXR0ZS5pbnB1dERpc2FibGVk QmcsCi0gICAgICAgICAgfQorICAgICAgICAgICcmW3JlYWRvbmx5XSwgJi5NdWktZGlzYWJsZWQn OiB7CisgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhc2VUaGVtZS5vdGhlclZhcnMuaW5w dXREaXNhYmxlZEJnLAorICAgICAgICAgIH0sCiAgICAgICAgIH0sCiAgICAgICAgIGlucHV0OiB7 CiAgICAgICAgICAgZm9udFNpemU6IGJhc2VUaGVtZS50eXBvZ3JhcGh5LmZvbnRTaXplLAogICAg ICAgICAgIGhlaWdodDogJ3Vuc2V0JywKICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhc2VU aGVtZS5wYWxldHRlLmJhY2tncm91bmQuZGVmYXVsdCwKLSAgICAgICAgICAnJltyZWFkb25seV0n OiB7CisgICAgICAgICAgJyZbcmVhZG9ubHldLCAmLk11aS1kaXNhYmxlZCc6IHsKICAgICAgICAg ICAgIGJhY2tncm91bmRDb2xvcjogYmFzZVRoZW1lLm90aGVyVmFycy5pbnB1dERpc2FibGVkQmcs Ci0gICAgICAgICAgfQorICAgICAgICAgIH0sCiAgICAgICAgIH0KICAgICAgIH0sCiAgICAgICBN dWlJY29uQnV0dG9uOiB7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvY29tcG9u ZW50cy9Gb3JtQ29tcG9uZW50cy5qc3ggYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvY29tcG9uZW50 cy9Gb3JtQ29tcG9uZW50cy5qc3gKaW5kZXggNjYwMzY2ODUxLi5mNDk1Y2YyNTkgMTAwNjQ0Ci0t LSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9jb21wb25lbnRzL0Zvcm1Db21wb25lbnRzLmpzeAor KysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvY29tcG9uZW50cy9Gb3JtQ29tcG9uZW50cy5qc3gK QEAgLTU2Myw3ICs1NjMsOSBAQCBleHBvcnQgZnVuY3Rpb24gSW5wdXRTZWxlY3QoewogICAgIH0K ICAgfSwgW29uQ2hhbmdlXSk7CiAKLSAgY29uc3QgcmVhbFZhbHVlID0gZ2V0UmVhbFZhbHVlKGZp bmFsT3B0aW9ucywgdmFsdWUsIGNvbnRyb2xQcm9wcy5jcmVhdGFibGUpOworICAvKiBBcHBseSBm aWx0ZXIgaWYgYW55ICovCisgIGNvbnN0IGZpbHRlcmVkT3B0aW9ucyA9IChjb250cm9sUHJvcHMu ZmlsdGVyICYmIGNvbnRyb2xQcm9wcy5maWx0ZXIoZmluYWxPcHRpb25zKSkgfHwgZmluYWxPcHRp b25zOworICBjb25zdCByZWFsVmFsdWUgPSBnZXRSZWFsVmFsdWUoZmlsdGVyZWRPcHRpb25zLCB2 YWx1ZSwgY29udHJvbFByb3BzLmNyZWF0YWJsZSk7CiAgIGNvbnN0IG90aGVyUHJvcHMgPSB7CiAg ICAgaXNTZWFyY2hhYmxlOiAhcmVhZG9ubHksCiAgICAgaXNDbGVhcmFibGU6ICFyZWFkb25seSAm JiAoIV8uaXNVbmRlZmluZWQoY29udHJvbFByb3BzLmFsbG93Q2xlYXIpID8gY29udHJvbFByb3Bz LmFsbG93Q2xlYXIgOiB0cnVlKSwKQEAgLTU4MSw3ICs1ODMsNyBAQCBleHBvcnQgZnVuY3Rpb24g SW5wdXRTZWxlY3QoewogICAgIG9wZW5NZW51T25DbGljazogIXJlYWRvbmx5LAogICAgIG9uQ2hh bmdlOiBvbkNoYW5nZU9wdGlvbiwKICAgICBpc0xvYWRpbmc6IGlzTG9hZGluZywKLSAgICBvcHRp b25zOiBmaW5hbE9wdGlvbnMsCisgICAgb3B0aW9uczogZmlsdGVyZWRPcHRpb25zLAogICAgIHZh bHVlOiByZWFsVmFsdWUsCiAgICAgbWVudVBvcnRhbFRhcmdldDogZG9jdW1lbnQuYm9keSwKICAg ICBzdHlsZXM6IHN0eWxlcywKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy91dGls cy5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy91dGlscy5qcwppbmRleCA4MWEzYjBmZTguLjNl YWE1NTI4MyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3V0aWxzLmpzCisrKyBi L3dlYi9wZ2FkbWluL3N0YXRpYy9qcy91dGlscy5qcwpAQCAtNDEwLDkgKzQxMCw5IEBAIGZ1bmN0 aW9uIGNoZWNrQmluYXJ5UGF0aEV4aXN0cyhiaW5hcnlQYXRoQXJyYXksIHNlbGVjdGVkU2VydmVy VmVyc2lvbikgewogfQogCiAvKiBJZiBhIGZ1bmN0aW9uLCB0aGVuIGV2YWx1YXRlICovCi1leHBv cnQgZnVuY3Rpb24gZXZhbEZ1bmMoZnVuYywgcGFyYW0pIHsKK2V4cG9ydCBmdW5jdGlvbiBldmFs RnVuYyhvYmosIGZ1bmMsIHBhcmFtKSB7CiAgIGlmKF8uaXNGdW5jdGlvbihmdW5jKSkgewotICAg IHJldHVybiBmdW5jLmFwcGx5KG51bGwsIFtwYXJhbV0pOworICAgIHJldHVybiBmdW5jLmFwcGx5 KG9iaiwgW3BhcmFtXSk7CiAgIH0KICAgcmV0dXJuIGZ1bmM7CiB9Cg== --000000000000c684a005c5d0f08f--