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 1hgRhl-0002C5-S4 for pgadmin-hackers@arkaria.postgresql.org; Thu, 27 Jun 2019 10:32:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1hgRhi-000281-EK for pgadmin-hackers@arkaria.postgresql.org; Thu, 27 Jun 2019 10:32:34 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hgRhh-00027u-Om for pgadmin-hackers@lists.postgresql.org; Thu, 27 Jun 2019 10:32:34 +0000 Received: from mail-lj1-x243.google.com ([2a00:1450:4864:20::243]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hgRhe-0003tD-1r for pgadmin-hackers@postgresql.org; Thu, 27 Jun 2019 10:32:32 +0000 Received: by mail-lj1-x243.google.com with SMTP id r9so1802685ljg.5 for ; Thu, 27 Jun 2019 03:32:29 -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=8LDBuRDRv0Z0q2H8TEu6OJUcG/M6h6dDYylzXU6YcE0=; b=j1lY09fCnmnRQWLRceHC8Ix3lImJDA7NBYKBqJX84yTIe6ZhbbCCaSn0hqYdIgDI4T +20VCIPKNO90sdvgHvY9zpNsZHY7GZzjnCCJ2HYHxQUrHshJ5k85IrAQUPItcImk0vlo 7ZMkf0Sn/Em7GxLNUI3tK9SOOv5oQim8dM4fYjNGD7a6BdwokL9utDTeNxP6zEllnM7w OO7sYdCy70EaIN710Nd8vu3QwWHjHEAVjuUpNBudg/q6nfd3r3xxE67wNEzRMR7Msweu rwVmF6wYiXjlFCaJ6q6u0LKOIaOtBOzHtQgq8vT1wYEqiMrr/rx8k5XlzhsBYkfHnIgY YHNA== 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=8LDBuRDRv0Z0q2H8TEu6OJUcG/M6h6dDYylzXU6YcE0=; b=Q/uV3Y9BHmD3pMwKUGwSU2bWFox5ui2C2dlzc3WQAG3cNloBSpejbKwJthECCmhRJA idUMPPlFQLBUp2IdWfXKgqqW6Kb4qkwS8seuaBr9MvgUJdJVFbv95pg1peia7m7XeKkJ nEaQRAoZYmXy7jBw9pha9a9EKV0mPH0LldCwNSA6CtbpnSNM51rwu4BKFJbUTuwCPMNg Kv1ec+/uhyXLyJ/GBDxZ0CUDzrzgFtjMeclySDH5wseTvq0Wh6y6lE3wK2Vw9r0yrMtG lVcRXLIdycvFUZLxFX7RapPHS6jyUzQ/CgrLTq7TQaMehpPY+7pgzuvQyKgzEeFc9xKn 6pkg== X-Gm-Message-State: APjAAAW/89V/cVPKiv6Tx0SgzSk9RJrI6djPGjyZ3zyzoOsxU6cxjkg2 00bbW3cfe3TVtRIfdIUNUy7+HMMi/oTD6sVxZtRVxQ== X-Google-Smtp-Source: APXvYqx/lVBA4Usp9wsJ/WXEsmun7UjiAEw+kXaoMZQTMDuzLsXFnfx1mumfLQXSq3X+R5hXMRQxos2A6wQKdA3KoOI= X-Received: by 2002:a2e:9bc6:: with SMTP id w6mr2239256ljj.156.1561631548011; Thu, 27 Jun 2019 03:32:28 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Aditya Toshniwal Date: Thu, 27 Jun 2019 16:01:51 +0530 Message-ID: Subject: Re: [pgAdmin][RM4139] Drag and drop object names in Query Editor from Browser Tree To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000b09de2058c4bad42" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000b09de2058c4bad42 Content-Type: multipart/alternative; boundary="000000000000b09de0058c4bad40" --000000000000b09de0058c4bad40 Content-Type: text/plain; charset="UTF-8" Hi Hackers, Attached is the updated patch based on the review comments in trailing mail. Kindly review. On Wed, Jun 26, 2019 at 5:09 PM Dave Page wrote: > > > On Wed, Jun 26, 2019 at 7:38 AM Aditya Toshniwal < > aditya.toshniwal@enterprisedb.com> wrote: > >> Hi, >> >> On Wed, Jun 26, 2019 at 5:06 PM Dave Page wrote: >> >>> >>> >>> On Wed, Jun 26, 2019 at 7:28 AM Aditya Toshniwal < >>> aditya.toshniwal@enterprisedb.com> wrote: >>> >>>> Hi, >>>> >>>> On Wed, Jun 26, 2019 at 4:51 PM Dave Page wrote: >>>> >>>>> Hi >>>>> >>>>> On Wed, Jun 26, 2019 at 2:24 AM Aditya Toshniwal < >>>>> aditya.toshniwal@enterprisedb.com> wrote: >>>>> >>>>>> Hi Hackers, >>>>>> >>>>>> Attached is the patch to allow tree nodes to be dragged and dropped >>>>>> in query editor wherever you take the drop cursor. The drop text will be >>>>>> fully qualified and double quoted if required. >>>>>> For functions/procedures it will drop the the label stripping away >>>>>> the parameter names, with empty pair of round brackets. It will also set >>>>>> the focus cursor inside the brackets if there were params otherwiser to the >>>>>> end of text. >>>>>> For adding a node type, you need to register it in browser.js along >>>>>> with a callback function which will return drop text along with cursor >>>>>> positioning and selection. Currently, I have registered for "table >>>>>> partition type sequence package view mview foreign_table edbvar schema >>>>>> column edbfunc function edbproc procedure". >>>>>> >>>>>> Please note, the drag design customisation is not supported in IE. >>>>>> >>>>> >>>>> I think for functions/procedures, we should include placeholders for >>>>> the parameters, so the user has a hint about what they need to fill in to >>>>> complete the call. >>>>> >>>> I can fill in the parameter names same as tree node, with cursor >>>> selection on all the params ? >>>> >>> >>> Can you select the first one, and put the cursor in front of it? >>> >> Yes. Will do that. So that, just after drop if the user types anything it >> will replace the first param name. >> > > Right. > > >> >>> >>>> >>>>> Also; shouldn't there be a doc update? >>>>> >>>> Yeah :/ >>>> Should there be any screenshots ? >>>> >>> >>> I don't see much need. >>> >> Cool. >> > > :-) > > >> >>> Thanks. >>> >>> >>>> >>>>> Thanks. >>>>> >>>>> -- >>>>> Dave Page >>>>> Blog: http://pgsnake.blogspot.com >>>>> Twitter: @pgsnake >>>>> >>>>> EnterpriseDB UK: http://www.enterprisedb.com >>>>> The Enterprise PostgreSQL Company >>>>> >>>> >>>> >>>> -- >>>> Thanks and Regards, >>>> Aditya Toshniwal >>>> Software Engineer | EnterpriseDB India | Pune >>>> "Don't Complain about Heat, Plant a TREE" >>>> >>> >>> >>> -- >>> Dave Page >>> Blog: http://pgsnake.blogspot.com >>> Twitter: @pgsnake >>> >>> EnterpriseDB UK: http://www.enterprisedb.com >>> The Enterprise PostgreSQL Company >>> >> >> >> -- >> Thanks and Regards, >> Aditya Toshniwal >> Software Engineer | EnterpriseDB India | Pune >> "Don't Complain about Heat, Plant a TREE" >> > > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > -- Thanks and Regards, Aditya Toshniwal Software Engineer | EnterpriseDB India | Pune "Don't Complain about Heat, Plant a TREE" --000000000000b09de0058c4bad40 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

Attached is the updated patch based on the rev= iew comments in trailing=C2=A0mail.
Kindly review.

On Wed, Jun 26, 201= 9 at 5:09 PM Dave Page <dpage@pgadm= in.org> wrote:


On Wed, Jun 26, 2019 at 7:38 AM= Aditya Toshniwal <aditya.toshniwal@enterprisedb.com> wrote:
Hi,

=
On Wed, Ju= n 26, 2019 at 5:06 PM Dave Page <dpage@pgadmin.org> wrote:


On W= ed, Jun 26, 2019 at 7:28 AM Aditya Toshniwal <aditya.toshniwal@enterprisedb.= com> wrote:
Hi,

On Wed, Jun 26, 2019 at 4:51 PM Dave Page <dpage@pgadmin.org> wrote:=
Hi

On Wed, Jun 26, 2019 at 2:24 AM Aditya Toshniwal <aditya.toshniwal@= enterprisedb.com> wrote:
Hi Hackers,

Attached is the patch to al= low tree nodes to be dragged and dropped in query editor wherever you take = the drop cursor. The drop text will be fully qualified and double quoted if= required.
For functions= /procedures it will drop the the label stripping away the parameter names, = with empty pair of round brackets. It will also set the focus cursor inside= the brackets if there were params otherwiser to the end of text.
For adding a node type, you= need to register it in browser.js along with a callback function which wil= l return drop text along with cursor positioning and selection. Currently, = I have=C2=A0registered for "= table partition type sequence package view mview foreign_table edbvar schem= a column edbfunc function edbproc procedure".

Please note, the drag design customisation is not supported in IE= .

I think for functions/= procedures, we should include placeholders for the parameters, so the user = has a hint about what they need to fill in to complete the call.
I can fill in the parameter names same as tree node, w= ith cursor selection on all the params ?

Can you select the first one, and put the cursor in = front of it?
Yes. Will do that. So that, jus= t after drop if the user types anything it will replace the first param nam= e.

Right.
=C2=A0
=C2=A0

Also; shouldn't the= re be a doc update?
Yeah :/
Sho= uld there be any screenshots ?=C2=A0
<= div>
I don't see much need.
Cool.=C2=A0

:-)<= /div>
=C2=A0

=
Thanks.
=C2=A0
<= div>
Thanks.
=C2=A0
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
<= br>EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
=


--
Thanks and Regards,
Aditya Toshniwal
Software Engineer |=C2=A0Enterpr= iseDB India |=C2=A0Pune
"Don't Complain about Heat, Plant a TREE"


--
Dave Page
Blog: http://pgsnake.blogspot.com
Twit= ter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise Post= greSQL Company


--
Thanks and Regards= ,
Aditya Toshniwal
Software E= ngineer |=C2=A0EnterpriseDB India |=C2=A0Pune
"Don't Complain about Heat, Plant a= TREE"


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

EnterpriseDB UK: http://www.enterprisedb.comThe Enterprise PostgreSQL Company


--
Adi= tya Toshniwal
Software Engineer |=C2=A0EnterpriseDB India |=C2=A0Pune
"Don't Complain a= bout Heat, Plant a TREE"
--000000000000b09de0058c4bad40-- --000000000000b09de2058c4bad42 Content-Type: application/octet-stream; name="RM4139_v2.patch" Content-Disposition: attachment; filename="RM4139_v2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jxej2v3g0 ZGlmZiAtLWdpdCBhL2RvY3MvZW5fVVMvdHJlZV9jb250cm9sLnJzdCBiL2RvY3MvZW5fVVMvdHJl ZV9jb250cm9sLnJzdAppbmRleCA3M2ViMTE0Zi4uMDNkNGYxY2EgMTAwNjQ0Ci0tLSBhL2RvY3Mv ZW5fVVMvdHJlZV9jb250cm9sLnJzdAorKysgYi9kb2NzL2VuX1VTL3RyZWVfY29udHJvbC5yc3QK QEAgLTE5LDYgKzE5LDEyIEBAIHZpZXc6CiAgIGNvbnRyb2wuCiAqIENsaWNrIHRoZSBtaW51cyBz aWduICgtKSB0byB0aGUgbGVmdCBvZiBhIG5vZGUgdG8gY2xvc2UgdGhhdCBub2RlLgogCitZb3Ug Y2FuIGFsc28gKipkcmFnIGFuZCBkcm9wKiogY2VydGFpbiBvYmplY3QgbmFtZXMgdG8gdGhlIHF1 ZXJ5IHRvb2wgd2hpY2gKK2lzIHZlcnkgaGVscGZ1bCB0byBzYXZlIHRpbWUgaW4gdHlwaW5nIGxv bmcgb2JqZWN0IG5hbWVzLiBUaGUgdGV4dCBvbiBkcm9wIHdpbGwgYmUKK2Z1bGx5IHF1YWxpZmll ZCB3aXRoIHNjaGVtYSBuYW1lLiBEb3VibGUgcXVvdGVzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIHRl eHQgaWYgcmVxdWlyZWQuCitGb3IgZnVuY3Rpb25zIGFuZCBwcm9jZWR1cmVzLCB0aGUgZnVuY3Rp b24gbmFtZSBhbG9uZyB3aXRoIHBhcmFtZXRlciBuYW1lcyB3aWxsCitiZSBwYXN0ZWQgaW4gdGhl IHF1ZXJ5IHRvb2wuCisKIEFjY2VzcyBjb250ZXh0LXNlbnNpdGl2ZSBtZW51cyBieSByaWdodC1j bGlja2luZyBvbiBhIG5vZGUgb2YgdGhlIHRyZWUgY29udHJvbAogdG8gcGVyZm9ybSBjb21tb24g dGFza3MuIE1lbnVzIGRpc3BsYXkgb3B0aW9ucyB0aGF0IGluY2x1ZGUgb25lIG9yIG1vcmUgb2Yg dGhlCiBmb2xsb3dpbmcgc2VsZWN0aW9ucyAob3B0aW9ucyBhcHBlYXIgaW4gYWxwaGFiZXRpY2Fs IG9yZGVyKToKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2Jyb3dz ZXIuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9icm93c2VyLmpzCmluZGV4IDI5 YzExYzJlLi4zODI1Mjg4NyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMv anMvYnJvd3Nlci5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9icm93c2Vy LmpzCkBAIC0xMiw3ICsxMiw3IEBAIGRlZmluZSgncGdhZG1pbi5icm93c2VyJywgWwogICAnc291 cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdyZXF1aXJlJywgJ2pxdWVyeScsICd1 bmRlcnNjb3JlJywgJ3VuZGVyc2NvcmUuc3RyaW5nJywKICAgJ2Jvb3RzdHJhcCcsICdzb3VyY2Vz L3BnYWRtaW4nLCAncGdhZG1pbi5hbGVydGlmeWpzJywgJ2J1bmRsZWRfY29kZW1pcnJvcicsCiAg ICdzb3VyY2VzL2NoZWNrX25vZGVfdmlzaWJpbGl0eScsICcuL3Rvb2xiYXInLCAncGdhZG1pbi5o ZWxwJywKLSAgJ3NvdXJjZXMvY3NyZicsICdwZ2FkbWluLmJyb3dzZXIudXRpbHMnLAorICAnc291 cmNlcy9jc3JmJywgJ3NvdXJjZXMvdXRpbHMnLCAncGdhZG1pbi5icm93c2VyLnV0aWxzJywKICAg J3djZG9ja2VyJywgJ2pxdWVyeS5jb250ZXh0bWVudScsICdqcXVlcnkuYWNpcGx1Z2luJywgJ2px dWVyeS5hY2l0cmVlJywKICAgJ3BnYWRtaW4uYnJvd3Nlci5wcmVmZXJlbmNlcycsICdwZ2FkbWlu LmJyb3dzZXIubWVzc2FnZXMnLAogICAncGdhZG1pbi5icm93c2VyLm1lbnUnLCAncGdhZG1pbi5i cm93c2VyLnBhbmVsJywgJ3BnYWRtaW4uYnJvd3Nlci5sYXlvdXQnLApAQCAtMjQsNyArMjQsNyBA QCBkZWZpbmUoJ3BnYWRtaW4uYnJvd3NlcicsIFsKICAgdHJlZSwKICAgZ2V0dGV4dCwgdXJsX2Zv ciwgcmVxdWlyZSwgJCwgXywgUywKICAgQm9vdHN0cmFwLCBwZ0FkbWluLCBBbGVydGlmeSwgY29k ZW1pcnJvciwKLSAgY2hlY2tOb2RlVmlzaWJpbGl0eSwgdG9vbEJhciwgaGVscCwgY3NyZlRva2Vu CisgIGNoZWNrTm9kZVZpc2liaWxpdHksIHRvb2xCYXIsIGhlbHAsIGNzcmZUb2tlbiwgcGdhZG1p blV0aWxzLAogKSB7CiAgIHdpbmRvdy5qUXVlcnkgPSB3aW5kb3cuJCA9ICQ7CiAgIC8vIFNvbWUg c2NyaXB0cyBkbyBleHBvcnQgdGhlaXIgb2JqZWN0IGluIHRoZSB3aW5kb3cgb25seS4KQEAgLTEw Miw2ICsxMDIsNDYgQEAgZGVmaW5lKCdwZ2FkbWluLmJyb3dzZXInLCBbCiAKICAgICAgIGIudHJl ZSA9ICQoJyN0cmVlJykuYWNpVHJlZSgnYXBpJyk7CiAgICAgICBiLnRyZWVNZW51LnJlZ2lzdGVy KCQoJyN0cmVlJykpOworCisgICAgICBiLnRyZWVNZW51LnJlZ2lzdGVyRHJhZ2dhYmxlVHlwZSh7 CisgICAgICAgICd0YWJsZSBwYXJ0aXRpb24gdHlwZSBzZXF1ZW5jZSBwYWNrYWdlIHZpZXcgbXZp ZXcgZm9yZWlnbl90YWJsZSBlZGJ2YXInIDogKGRhdGEsIGl0ZW0pPT57CisgICAgICAgICAgcmV0 dXJuIHBnYWRtaW5VdGlscy5mdWxseV9xdWFsaWZ5KGIsIGRhdGEsIGl0ZW0pOworICAgICAgICB9 LAorICAgICAgICAnc2NoZW1hIGNvbHVtbicgOiAoZGF0YSk9PnsKKyAgICAgICAgICByZXR1cm4g cGdhZG1pblV0aWxzLnF1b3RlX2lkZW50KGRhdGEuX2xhYmVsKTsKKyAgICAgICAgfSwKKyAgICAg ICAgJ2VkYmZ1bmMgZnVuY3Rpb24gZWRicHJvYyBwcm9jZWR1cmUnIDogKGRhdGEsIGl0ZW0pPT57 CisgICAgICAgICAgbGV0IG5ld0RhdGEgPSB7Li4uZGF0YX0sCisgICAgICAgICAgICBwYXJzZWRG dW5jID0gbnVsbCwKKyAgICAgICAgICAgIGRyb3BWYWwgPSAnJywKKyAgICAgICAgICAgIGN1clBv cyA9IHtmcm9tOiAwLCB0bzogMH07CisKKyAgICAgICAgICBwYXJzZWRGdW5jID0gcGdhZG1pblV0 aWxzLnBhcnNlRnVuY1BhcmFtcyhuZXdEYXRhLl9sYWJlbCk7CisgICAgICAgICAgbmV3RGF0YS5f bGFiZWwgPSBwYXJzZWRGdW5jLmZ1bmNfbmFtZTsKKyAgICAgICAgICBkcm9wVmFsID0gcGdhZG1p blV0aWxzLmZ1bGx5X3F1YWxpZnkoYiwgbmV3RGF0YSwgaXRlbSk7CisKKyAgICAgICAgICBpZihw YXJzZWRGdW5jLnBhcmFtcy5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICBkcm9wVmFsID0gZHJv cFZhbCArICcoJzsKKyAgICAgICAgICAgIGN1clBvcy5mcm9tID0gIGRyb3BWYWwubGVuZ3RoOwor ICAgICAgICAgICAgZHJvcFZhbCA9IGRyb3BWYWwgKyBwYXJzZWRGdW5jLnBhcmFtc1swXVswXTsK KyAgICAgICAgICAgIGN1clBvcy50byA9IGRyb3BWYWwubGVuZ3RoOworCisgICAgICAgICAgICBm b3IobGV0IGk9MTsgaTxwYXJzZWRGdW5jLnBhcmFtcy5sZW5ndGg7IGkrKykgeworICAgICAgICAg ICAgICBkcm9wVmFsID0gZHJvcFZhbCArICcsICcgKyBwYXJzZWRGdW5jLnBhcmFtc1tpXVswXTsK KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZHJvcFZhbCA9IGRyb3BWYWwgKyAnKSc7Cisg ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRyb3BWYWwgPSBkcm9wVmFsICsgJygpJzsK KyAgICAgICAgICAgIGN1clBvcy5mcm9tID0gY3VyUG9zLnRvID0gZHJvcFZhbC5sZW5ndGggKyAx OworICAgICAgICAgIH0KKworICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICB0ZXh0OiBk cm9wVmFsLAorICAgICAgICAgICAgY3VyOiBjdXJQb3MsCisgICAgICAgICAgfTsKKyAgICAgICAg fSwKKyAgICAgIH0pOwogICAgIH07CiAKICAgLy8gRXh0ZW5kIHRoZSBicm93c2VyIGNsYXNzIGF0 dHJpYnV0ZXMKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy90cmVlL3RyZWUuanMg Yi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvdHJlZS90cmVlLmpzCmluZGV4IDc4MmY0ZDU5Li45OTM5 N2VmNCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvdHJlZS5qcworKysg Yi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvdHJlZS90cmVlLmpzCkBAIC04LDYgKzgsNyBAQAogLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8KIAogaW1wb3J0IHtpc1ZhbGlkRGF0YX0gZnJvbSAnc291cmNlcy91dGls cyc7CitpbXBvcnQgJCBmcm9tICdqcXVlcnknOwogCiBleHBvcnQgY2xhc3MgVHJlZU5vZGUgewog ICBjb25zdHJ1Y3RvcihpZCwgZGF0YSwgZG9tTm9kZSwgcGFyZW50KSB7CkBAIC05Nyw2ICs5OCw4 NyBAQCBleHBvcnQgY2xhc3MgVHJlZSB7CiAgIGNvbnN0cnVjdG9yKCkgewogICAgIHRoaXMucm9v dE5vZGUgPSBuZXcgVHJlZU5vZGUodW5kZWZpbmVkLCB7fSk7CiAgICAgdGhpcy5hY2lUcmVlQXBp ID0gdW5kZWZpbmVkOworICAgIHRoaXMuZHJhZ2dhYmxlVHlwZXMgPSB7fTsKKyAgfQorCisgIC8q CisgICAqCisgICAqIFRoZSBkcm9wRGV0YWlsc0Z1bmMgc2hvdWxkIHJldHVybiBhbiBvYmplY3Qg b2Ygc2FtcGxlCisgICAqIHt0ZXh0OiAneHl6JywgY3VyOiB7ZnJvbTowLCB0bzowfSB3aGVyZSB0 ZXh0IGlzIHRoZSBkcm9wIHRleHQgYW5kCisgICAqIGN1ciBpcyBzZWxlY3Rpb24gcmFuZ2Ugb2Yg dGV4dCBhZnRlciBkcm9wcGluZy4gSWYgcmV0dXJuZWQgYXMKKyAgICogc3RyaW5nLCBieSBkZWZh dWx0IGN1cnNvciB3aWxsIGJlIHNldCB0byB0aGUgZW5kIG9mIHRleHQKKyAgICovCisgIHJlZ2lz dGVyRHJhZ2dhYmxlVHlwZSh0eXBlT3JUeXBlRGljdCwgZHJvcERldGFpbHNGdW5jPW51bGwpIHsK KyAgICBpZih0eXBlb2YgdHlwZU9yVHlwZURpY3QgPT0gJ29iamVjdCcpIHsKKyAgICAgIE9iamVj dC5rZXlzKHR5cGVPclR5cGVEaWN0KS5mb3JFYWNoKCh0eXBlKT0+eworICAgICAgICB0aGlzLnJl Z2lzdGVyRHJhZ2dhYmxlVHlwZSh0eXBlLCB0eXBlT3JUeXBlRGljdFt0eXBlXSk7CisgICAgICB9 KTsKKyAgICB9IGVsc2UgeworICAgICAgaWYoZHJvcERldGFpbHNGdW5jICE9IG51bGwpIHsKKyAg ICAgICAgdHlwZU9yVHlwZURpY3QucmVwbGFjZSgvICsvLCAnICcpLnNwbGl0KCcgJykuZm9yRWFj aCgodHlwZSk9PnsKKyAgICAgICAgICB0aGlzLmRyYWdnYWJsZVR5cGVzW3R5cGVdID0gZHJvcERl dGFpbHNGdW5jOworICAgICAgICB9KTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICBnZXREcmFn Z2FibGUodHlwZSkgeworICAgIGlmKHRoaXMuZHJhZ2dhYmxlVHlwZXNbdHlwZV0pIHsKKyAgICAg IHJldHVybiB0aGlzLmRyYWdnYWJsZVR5cGVzW3R5cGVdOworICAgIH0gZWxzZSB7CisgICAgICBy ZXR1cm4gbnVsbDsKKyAgICB9CisgIH0KKworICBwcmVwYXJlRHJhZ2dhYmxlKGRhdGEsIGl0ZW0p IHsKKyAgICBsZXQgZHJvcERldGFpbHNGdW5jID0gdGhpcy5nZXREcmFnZ2FibGUoZGF0YS5fdHlw ZSk7CisKKyAgICBpZihkcm9wRGV0YWlsc0Z1bmMgIT0gbnVsbCkgeworICAgICAgaXRlbS5maW5k KCcuYWNpVHJlZUl0ZW0nKQorICAgICAgICAuYXR0cignZHJhZ2dhYmxlJywgdHJ1ZSkKKyAgICAg ICAgLm9uKCdkcmFnc3RhcnQnLCAoZSk9PiB7CisgICAgICAgICAgbGV0IGRyb3BEZXRhaWxzID0g ZHJvcERldGFpbHNGdW5jKGRhdGEsIGl0ZW0pOworICAgICAgICAgIGxldCBvcmlnRXZlbnQgPSBl Lm9yaWdpbmFsRXZlbnQ7CisKKyAgICAgICAgICBpZih0eXBlb2YgZHJvcERldGFpbHMgPT0gJ3N0 cmluZycpIHsKKyAgICAgICAgICAgIGRyb3BEZXRhaWxzID0geworICAgICAgICAgICAgICB0ZXh0 OmRyb3BEZXRhaWxzLAorICAgICAgICAgICAgICBjdXI6eworICAgICAgICAgICAgICAgIGZyb206 ZHJvcERldGFpbHMubGVuZ3RoLAorICAgICAgICAgICAgICAgIHRvOiBkcm9wRGV0YWlscy5sZW5n dGgsCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9OworICAgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICBpZighZHJvcERldGFpbHMuY3VyKSB7CisgICAgICAgICAgICAgIGRyb3BE ZXRhaWxzID0geworICAgICAgICAgICAgICAgIC4uLmRyb3BEZXRhaWxzLAorICAgICAgICAgICAg ICAgIGN1cjp7CisgICAgICAgICAgICAgICAgICBmcm9tOmRyb3BEZXRhaWxzLnRleHQubGVuZ3Ro LAorICAgICAgICAgICAgICAgICAgdG86IGRyb3BEZXRhaWxzLnRleHQubGVuZ3RoLAorICAgICAg ICAgICAgICAgIH0sCisgICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9CisgICAgICAgICAg fQorCisgICAgICAgICAgb3JpZ0V2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKCd0ZXh0JywgSlNP Ti5zdHJpbmdpZnkoZHJvcERldGFpbHMpKTsKKworICAgICAgICAgIC8qIHNldERyYWdJbWFnZSBp cyBub3Qgc3VwcG9ydGVkIGluIElFLiBXZSBsZWF2ZSBpdCB0bworICAgICAgICAgICAqIGl0cyBk ZWZhdWx0IGxvb2sgYW5kIGZlZWwKKyAgICAgICAgICAgKi8KKyAgICAgICAgICBpZihvcmlnRXZl bnQuZGF0YVRyYW5zZmVyLnNldERyYWdJbWFnZSkgeworICAgICAgICAgICAgbGV0IGRyYWdJdGVt ID0gJChgCisgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyYWctdHJlZS1ub2RlIj4KKyAgICAg ICAgICAgICAgICA8c3Bhbj4ke2Ryb3BEZXRhaWxzLnRleHR9PC9zcGFuPgorICAgICAgICAgICAg ICA8L2Rpdj5gCisgICAgICAgICAgICApOworCisgICAgICAgICAgICAkKCdib2R5IC5kcmFnLXRy ZWUtbm9kZScpLnJlbW92ZSgpOworICAgICAgICAgICAgJCgnYm9keScpLmFwcGVuZChkcmFnSXRl bSk7CisKKyAgICAgICAgICAgIG9yaWdFdmVudC5kYXRhVHJhbnNmZXIuc2V0RHJhZ0ltYWdlKGRy YWdJdGVtWzBdLCAwLCAwKTsKKyAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KICAgfQog CiAgIGFkZE5ld05vZGUoaWQsIGRhdGEsIGRvbU5vZGUsIHBhcmVudFBhdGgpIHsKQEAgLTE2Myw2 ICsyNDUsOSBAQCBleHBvcnQgY2xhc3MgVHJlZSB7CiAgICAgICAgIGlmIChldmVudE5hbWUgPT09 ICdhZGRlZCcpIHsKICAgICAgICAgICBjb25zdCBpZCA9IGFwaS5nZXRJZChpdGVtKTsKICAgICAg ICAgICBjb25zdCBkYXRhID0gYXBpLml0ZW1EYXRhKGl0ZW0pOworCisgICAgICAgICAgdGhpcy5w cmVwYXJlRHJhZ2dhYmxlKGRhdGEsIGl0ZW0pOworCiAgICAgICAgICAgY29uc3QgcGFyZW50SWQg PSB0aGlzLnRyYW5zbGF0ZVRyZWVOb2RlSWRGcm9tQUNJVHJlZShhcGkucGFyZW50KGl0ZW0pKTsK ICAgICAgICAgICB0aGlzLmFkZE5ld05vZGUoaWQsIGRhdGEsIGl0ZW0sIHBhcmVudElkKTsKICAg ICAgICAgfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3V0aWxzLmpzIGIvd2Vi L3BnYWRtaW4vc3RhdGljL2pzL3V0aWxzLmpzCmluZGV4IDFjNThhOWViLi5mZTlmZDhlZCAxMDA2 NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3V0aWxzLmpzCisrKyBiL3dlYi9wZ2FkbWlu L3N0YXRpYy9qcy91dGlscy5qcwpAQCAtOCw2ICs4LDcgQEAKIC8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAK IGltcG9ydCBfIGZyb20gJ3VuZGVyc2NvcmUnOworaW1wb3J0IHsgZ2V0VHJlZU5vZGVIaWVyYXJj aHlGcm9tSWRlbnRpZmllciB9IGZyb20gJ3NvdXJjZXMvdHJlZS9wZ2FkbWluX3RyZWVfbm9kZSc7 CiAKIGV4cG9ydCBmdW5jdGlvbiBwYXJzZVNob3J0Y3V0VmFsdWUob2JqKSB7CiAgIHZhciBzaG9y dGN1dCA9ICcnOwpAQCAtODMsMyArODQsMTE4IEBAIGV4cG9ydCBmdW5jdGlvbiBnZXRHQ0QoaW5w X2FycikgewogZXhwb3J0IGZ1bmN0aW9uIGdldE1vZChubywgZGl2aXNvcikgewogICByZXR1cm4g KChubyAlIGRpdmlzb3IpICsgZGl2aXNvcikgJSBkaXZpc29yOwogfQorCitleHBvcnQgZnVuY3Rp b24gcGFyc2VGdW5jUGFyYW1zKGxhYmVsKSB7CisgIGxldCBwYXJhbUFyciA9IFtdLAorICAgIGZ1 bmNOYW1lID0gJycsCisgICAgcGFyYW1TdHIgPSAnJzsKKworICBpZihsYWJlbC5lbmRzV2l0aCgn KCknKSkgeworICAgIGZ1bmNOYW1lID0gbGFiZWwuc3Vic3RyaW5nKDAsIGxhYmVsLmxlbmd0aC0y KTsKKyAgfSBlbHNlIGlmKCFsYWJlbC5lbmRzV2l0aCgnKScpKSB7CisgICAgZnVuY05hbWUgPSBs YWJlbDsKKyAgfSBlbHNlIGlmKCFsYWJlbC5lbmRzV2l0aCgnKCknKSAmJiBsYWJlbC5lbmRzV2l0 aCgnKScpKSB7CisgICAgbGV0IGkgPSAwLAorICAgICAgc3RhcnRCcmFja2V0UG9zID0gbGFiZWwu bGVuZ3RoOworCisgICAgLyogUGFyc2UgdGhyb3VnaCB0aGUgY2hhcmFjdGVycyBpbiByZXZlcnNl IHRvIGZpbmQgdGhlIHBhcmFtIHN0YXJ0IGJyYWNrZXQgKi8KKyAgICBpID0gbGFiZWwubGVuZ3Ro LTI7CisgICAgd2hpbGUoaSA+PSAwKSB7CisgICAgICBpZihsYWJlbFtpXSA9PSAnKCcpIHsKKyAg ICAgICAgc3RhcnRCcmFja2V0UG9zID0gaTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9IGVsc2Ug aWYobGFiZWxbaV0gPT0gJyInKSB7CisgICAgICAgIC8qIElmIHF1b3Rlcywgc2tpcCBhbGwgdGhl IGNoYXJzIHRpbGwgbmV4dCBxdW90ZSAqLworICAgICAgICBpLS07CisgICAgICAgIHdoaWxlKGxh YmVsW2ldICE9ICciJykgaS0tOworICAgICAgfQorICAgICAgaS0tOworICAgIH0KKworICAgIGZ1 bmNOYW1lID0gbGFiZWwuc3Vic3RyaW5nKDAsIHN0YXJ0QnJhY2tldFBvcyk7CisgICAgcGFyYW1T dHIgPSBsYWJlbC5zdWJzdHJpbmcoc3RhcnRCcmFja2V0UG9zKzEsIGxhYmVsLmxlbmd0aC0xKTsK KworICAgIGxldCBwYXJhbVN0YXJ0ID0gMCwKKyAgICAgIHBhcmFtTmFtZSA9ICcnLAorICAgICAg cGFyYW1Nb2RlcyA9IFsnSU4nLCAnT1VUJywgJ0lOT1VUJywgJ1ZBUklBRElDJ107CisKKyAgICBw YXJhbVN0YXJ0ID0gaSA9IDA7CisgICAgd2hpbGUoaSA8IHBhcmFtU3RyLmxlbmd0aCkgeworICAg ICAgaWYocGFyYW1TdHJbaV0gPT0gJyInKSB7CisgICAgICAgIC8qIElmIHF1b3Rlcywgc2tpcCBh bGwgdGhlIGNoYXJzIHRpbGwgbmV4dCBxdW90ZSAqLworICAgICAgICBpKys7CisgICAgICAgIHdo aWxlKHBhcmFtU3RyW2ldICE9ICciJykgaSsrOworICAgICAgfSBlbHNlIGlmIChwYXJhbVN0cltp XSA9PSAnICcpIHsKKyAgICAgICAgLyogaWYgcGFyYW1OYW1lIGlzIGFscmVhZHkgc2V0LCBpZ25v cmUgdGlsbCBjb21tYQorICAgICAgICAgKiBPciBpZiBwYXJhbU5hbWUgaXMgcGFyc2VkIGFzIG9u ZSBvZiB0aGUgbW9kZXMsIHJlc2V0LgorICAgICAgICAgKi8KKyAgICAgICAgaWYocGFyYW1OYW1l ID09ICcnIHx8IHBhcmFtTW9kZXMuaW5kZXhPZihwYXJhbU5hbWUpID4gLTEgKSB7CisgICAgICAg ICAgcGFyYW1OYW1lID0gcGFyYW1TdHIuc3Vic3RyaW5nKHBhcmFtU3RhcnQsIGkpOworICAgICAg ICAgIHBhcmFtU3RhcnQgPSBpKzE7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UgaWYg KHBhcmFtU3RyW2ldID09ICcsJykgeworICAgICAgICBwYXJhbUFyci5wdXNoKFtwYXJhbU5hbWUs IHBhcmFtU3RyLnN1YnN0cmluZyhwYXJhbVN0YXJ0LCBpKV0pOworICAgICAgICBwYXJhbU5hbWUg PSAnJzsKKyAgICAgICAgcGFyYW1TdGFydCA9IGkrMTsKKyAgICAgIH0KKyAgICAgIGkrKzsKKyAg ICB9CisgICAgcGFyYW1BcnIucHVzaChbcGFyYW1OYW1lLCBwYXJhbVN0ci5zdWJzdHJpbmcocGFy YW1TdGFydCldKTsKKyAgfQorCisgIHJldHVybiB7CisgICAgJ2Z1bmNfbmFtZSc6IGZ1bmNOYW1l LAorICAgICdwYXJhbV9zdHJpbmcnOiBwYXJhbVN0ciwKKyAgICAncGFyYW1zJzogcGFyYW1BcnIs CisgIH07Cit9CisKK2V4cG9ydCBmdW5jdGlvbiBxdW90ZV9pZGVudCh2YWx1ZSkgeworICAvKiBj aGVjayBpZiB0aGUgc3RyaW5nIGlzIG51bWJlciBvciBub3QgKi8KKyAgbGV0IHF1b3RlSXQgPSBm YWxzZTsKKyAgaWYgKCFpc05hTihwYXJzZUludCh2YWx1ZSkpKXsKKyAgICBxdW90ZUl0ID0gdHJ1 ZTsKKyAgfQorCisgIGlmKHZhbHVlLnNlYXJjaCgvW15hLXowLTlfXS9nKSA+IC0xKSB7CisgICAg LyogZXNjYXBlIGRvdWJsZSBxdW90ZXMgKi8KKyAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoLyIv ZywgJyIiJyk7CisgICAgcXVvdGVJdCA9IHRydWU7CisgIH0KKworICBpZihxdW90ZUl0KSB7Cisg ICAgcmV0dXJuIGAiJHt2YWx1ZX0iYDsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gdmFsdWU7Cisg IH0KK30KKworZXhwb3J0IGZ1bmN0aW9uIGZ1bGx5X3F1YWxpZnkocGdCcm93c2VyLCBkYXRhLCBp dGVtKSB7CisgIGNvbnN0IHBhcmVudERhdGEgPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVu dGlmaWVyLmNhbGwocGdCcm93c2VyLCBpdGVtKTsKKyAgbGV0IG5hbWVzcGFjZSA9ICcnOworCisg IGlmIChwYXJlbnREYXRhLnNjaGVtYSAhPT0gdW5kZWZpbmVkKSB7CisgICAgbmFtZXNwYWNlID0g cXVvdGVfaWRlbnQocGFyZW50RGF0YS5zY2hlbWEuX2xhYmVsKTsKKyAgfQorICBlbHNlIGlmIChw YXJlbnREYXRhLnZpZXcgIT09IHVuZGVmaW5lZCkgeworICAgIG5hbWVzcGFjZSA9IHF1b3RlX2lk ZW50KHBhcmVudERhdGEudmlldy5fbGFiZWwpOworICB9CisgIGVsc2UgaWYgKHBhcmVudERhdGEu Y2F0YWxvZyAhPT0gdW5kZWZpbmVkKSB7CisgICAgbmFtZXNwYWNlID0gcXVvdGVfaWRlbnQocGFy ZW50RGF0YS5jYXRhbG9nLl9sYWJlbCk7CisgIH0KKworICBpZiAocGFyZW50RGF0YS5wYWNrYWdl ICE9PSB1bmRlZmluZWQgJiYgZGF0YS5fdHlwZSAhPSAncGFja2FnZScpIHsKKyAgICBpZihuYW1l c3BhY2UgPT0gJycpIHsKKyAgICAgIG5hbWVzcGFjZSA9IHF1b3RlX2lkZW50KHBhcmVudERhdGEu cGFja2FnZS5fbGFiZWwpOworICAgIH0gZWxzZSB7CisgICAgICBuYW1lc3BhY2UgKz0gJy4nICsg cXVvdGVfaWRlbnQocGFyZW50RGF0YS5wYWNrYWdlLl9sYWJlbCk7CisgICAgfQorICB9CisKKyAg aWYobmFtZXNwYWNlICE9ICcnKSB7CisgICAgcmV0dXJuIG5hbWVzcGFjZSArICcuJyArIHF1b3Rl X2lkZW50KGRhdGEuX2xhYmVsKTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gcXVvdGVfaWRlbnQo ZGF0YS5fbGFiZWwpOworICB9Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvc2Nz cy9fcGdhZG1pbi5zdHlsZS5zY3NzIGIvd2ViL3BnYWRtaW4vc3RhdGljL3Njc3MvX3BnYWRtaW4u c3R5bGUuc2NzcwppbmRleCBlZDQyNjU0NS4uZjVhODg3N2MgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2Fk bWluL3N0YXRpYy9zY3NzL19wZ2FkbWluLnN0eWxlLnNjc3MKKysrIGIvd2ViL3BnYWRtaW4vc3Rh dGljL3Njc3MvX3BnYWRtaW4uc3R5bGUuc2NzcwpAQCAtOTgzLDMgKzk4MywxNSBAQCB0YWJsZS50 YWJsZS1lbXB0eS1yb3dzewogICBwYWRkaW5nOiAwcHggIWltcG9ydGFudDsKICAgcG9zaXRpb246 IGFic29sdXRlOwogfQorCisuZHJhZy10cmVlLW5vZGUgeworICBwb3NpdGlvbjogYWJzb2x1dGU7 CisgIHRvcDotMTAwcHg7CisgIGxlZnQ6MDsKKyAgei1pbmRleDogOTk5OTk7CisgIGNvbG9yOiAk aW5wdXQtZm9jdXMtY29sb3I7CisgIGJhY2tncm91bmQ6ICRpbnB1dC1iZzsKKyAgYm9yZGVyOiAk aW5wdXQtYm9yZGVyLXdpZHRoIHNvbGlkICRpbnB1dC1mb2N1cy1ib3JkZXItY29sb3I7CisgIGJv cmRlci1yYWRpdXM6ICRpbnB1dC1ib3JkZXItcmFkaXVzOworICBwYWRkaW5nOiAkaW5wdXQtYnRu LXBhZGRpbmcteSAkaW5wdXQtYnRuLXBhZGRpbmcteDsKK30KZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9yLmpzIGIvd2ViL3BnYWRtaW4v dG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9zcWxlZGl0b3IuanMKaW5kZXggYTg1NjA1NzQuLmVm NDY4ZjYzIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pz L3NxbGVkaXRvci5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pz L3NxbGVkaXRvci5qcwpAQCAtMzQxLDggKzM0MSwzMSBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9v bCcsIFsKICAgICAgICAgZ3V0dGVyczogWydDb2RlTWlycm9yLWxpbmVudW1iZXJzJywgJ0NvZGVN aXJyb3ItZm9sZGd1dHRlciddLAogICAgICAgICBleHRyYUtleXM6IHBnQnJvd3Nlci5lZGl0b3Jf c2hvcnRjdXRfa2V5cywKICAgICAgICAgc2Nyb2xsYmFyU3R5bGU6ICdzaW1wbGUnLAorICAgICAg ICBkcmFnRHJvcDogZmFsc2UsCiAgICAgICB9KTsKIAorICAgICAgaWYoc2VsZi5oYW5kbGVyLmlz X3F1ZXJ5X3Rvb2wpIHsKKyAgICAgICAgc2VsZi5xdWVyeV90b29sX29iai5zZXRPcHRpb24oJ2Ry YWdEcm9wJywgdHJ1ZSk7CisgICAgICAgIHNlbGYucXVlcnlfdG9vbF9vYmoub24oJ2Ryb3AnLCAo ZWRpdG9yLCBlKSA9PiB7CisgICAgICAgICAgdmFyIGN1cnNvciA9IGVkaXRvci5jb29yZHNDaGFy KHsKKyAgICAgICAgICAgIGxlZnQ6IGUueCwKKyAgICAgICAgICAgIHRvcDogZS55LAorICAgICAg ICAgIH0pOworICAgICAgICAgIHZhciBkcm9wRGV0YWlscyA9IEpTT04ucGFyc2UoZS5kYXRhVHJh bnNmZXIuZ2V0RGF0YSgndGV4dCcpKTsKKyAgICAgICAgICBlLmNvZGVtaXJyb3JJZ25vcmUgPSB0 cnVlOworICAgICAgICAgIGUuZGF0YVRyYW5zZmVyLmNsZWFyRGF0YSgndGV4dCcpOworICAgICAg ICAgIGVkaXRvci5yZXBsYWNlUmFuZ2UoZHJvcERldGFpbHMudGV4dCwgY3Vyc29yKTsKKyAgICAg ICAgICBlZGl0b3IuZm9jdXMoKTsKKyAgICAgICAgICBlZGl0b3Iuc2V0U2VsZWN0aW9uKHsKKyAg ICAgICAgICAgIC4uLmN1cnNvciwKKyAgICAgICAgICAgIGNoOiBjdXJzb3IuY2ggKyBkcm9wRGV0 YWlscy5jdXIuZnJvbSwKKyAgICAgICAgICB9LHsKKyAgICAgICAgICAgIC4uLmN1cnNvciwKKyAg ICAgICAgICAgIGNoOiBjdXJzb3IuY2ggK2Ryb3BEZXRhaWxzLmN1ci50bywKKyAgICAgICAgICB9 KTsKKyAgICAgICAgfSk7CisgICAgICB9CisKICAgICAgIHBnQnJvd3Nlci5FdmVudHMub24oJ3Bn YWRtaW46cXVlcnlfdG9vbDpzcWxfcGFuZWw6Zm9jdXMnLCAoKT0+ewogICAgICAgICBzZWxmLnF1 ZXJ5X3Rvb2xfb2JqLmZvY3VzKCk7CiAgICAgICB9KTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNz aW9uL2phdmFzY3JpcHQvcGdhZG1pbl91dGlsc19zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2 YXNjcmlwdC9wZ2FkbWluX3V0aWxzX3NwZWMuanMKaW5kZXggMDJiZDU0NzguLmJjMTk1OWE0IDEw MDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3BnYWRtaW5fdXRpbHNfc3BlYy5q cworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3BnYWRtaW5fdXRpbHNfc3BlYy5qcwpA QCAtNyw3ICs3LDcgQEAKIC8vCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCi1pbXBvcnQgeyBnZXRFcG9jaCwgZ2V0R0NELCBn ZXRNb2QgfSBmcm9tICdzb3VyY2VzL3V0aWxzJzsKK2ltcG9ydCB7IGdldEVwb2NoLCBnZXRHQ0Qs IGdldE1vZCwgcXVvdGVfaWRlbnQsIHBhcnNlRnVuY1BhcmFtcyB9IGZyb20gJ3NvdXJjZXMvdXRp bHMnOwogCiBkZXNjcmliZSgnZ2V0RXBvY2gnLCBmdW5jdGlvbiAoKSB7CiAgIGl0KCdzaG91bGQg cmV0dXJuIG5vbiB6ZXJvJywgZnVuY3Rpb24gKCkgewpAQCAtNTEsMyArNTEsODcgQEAgZGVzY3Jp YmUoJ2dldE1vZCcsIGZ1bmN0aW9uICgpIHsKICAgICBleHBlY3QoZ2V0TW9kKC03LDUpKS50b0Vx dWFsKDMpOwogICB9KTsKIH0pOworCitkZXNjcmliZSgncXVvdGVfaWRlbnQnLCBmdW5jdGlvbiAo KSB7CisgIGl0KCdub3JtYWwgc3RyaW5nJywgZnVuY3Rpb24gKCkgeworICAgIGV4cGVjdChxdW90 ZV9pZGVudCgnYWJjZCcpKS50b0VxdWFsKCdhYmNkJyk7CisgIH0pOworCisgIGl0KCdjb250YWlu cyBjZXJ0YWluIGNoYXJhY3RlcnMgc3RyaW5nJywgZnVuY3Rpb24gKCkgeworICAgIGV4cGVjdChx dW90ZV9pZGVudCgnQWJjZCcpKS50b0VxdWFsKCciQWJjZCInKTsKKyAgICBleHBlY3QocXVvdGVf aWRlbnQoJ2FiYyRkJykpLnRvRXF1YWwoJyJhYmMkZCInKTsKKyAgICBleHBlY3QocXVvdGVfaWRl bnQoJ2FiIGNkJykpLnRvRXF1YWwoJyJhYiBjZCInKTsKKyAgfSk7CisKKyAgaXQoJ3N0YXJ0cyB3 aXRoIG51bWJlcicsIGZ1bmN0aW9uICgpIHsKKyAgICBleHBlY3QocXVvdGVfaWRlbnQoJzFhJykp LnRvRXF1YWwoJyIxYSInKTsKKyAgICBleHBlY3QocXVvdGVfaWRlbnQoJ2ExJykpLnRvRXF1YWwo J2ExJyk7CisgIH0pOworfSk7CisKK2Rlc2NyaWJlKCdwYXJzZUZ1bmNQYXJhbXMnLCBmdW5jdGlv biAoKSB7CisgIGxldCBmdW5jTGFiZWwgPSAnJywKKyAgICBleHBlY3RlZE9iaiA9IHt9OworCisg IGl0KCdmdW5jdGlvbiB3aXRoIHBhcmFtcycsIGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jTGFiZWwg PSAnZnVuYzEoYSBpbnRlZ2VyLCBiIHRleHQpJzsKKyAgICBleHBlY3RlZE9iaiA9IHsKKyAgICAg ICdmdW5jX25hbWUnOiAnZnVuYzEnLAorICAgICAgJ3BhcmFtX3N0cmluZyc6ICdhIGludGVnZXIs IGIgdGV4dCcsCisgICAgICAncGFyYW1zJzogWworICAgICAgICBbJ2EnLCAnaW50ZWdlciddLAor ICAgICAgICBbJ2InLCAndGV4dCddLAorICAgICAgXSwKKyAgICB9OworICAgIGV4cGVjdChwYXJz ZUZ1bmNQYXJhbXMoZnVuY0xhYmVsKSkudG9FcXVhbChleHBlY3RlZE9iaik7CisgIH0pOworCisg IGl0KCdmdW5jdGlvbiB3aXRob3V0IHBhcmFtcycsIGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jTGFi ZWwgPSAnZnVuYzEoKSc7CisgICAgZXhwZWN0ZWRPYmogPSB7CisgICAgICAnZnVuY19uYW1lJzog J2Z1bmMxJywKKyAgICAgICdwYXJhbV9zdHJpbmcnOiAnJywKKyAgICAgICdwYXJhbXMnOiBbXSwK KyAgICB9OworICAgIGV4cGVjdChwYXJzZUZ1bmNQYXJhbXMoZnVuY0xhYmVsKSkudG9FcXVhbChl eHBlY3RlZE9iaik7CisgIH0pOworCisgIGl0KCdmdW5jdGlvbiBuYW1lIHNwZWNpYWwgY2hhcnMn LCBmdW5jdGlvbiAoKSB7CisgICAgZnVuY0xhYmVsID0gJ2Z1bihjMShhIGludGVnZXIsIGIgdGV4 dCknOworICAgIGV4cGVjdGVkT2JqID0geworICAgICAgJ2Z1bmNfbmFtZSc6ICdmdW4oYzEnLAor ICAgICAgJ3BhcmFtX3N0cmluZyc6ICdhIGludGVnZXIsIGIgdGV4dCcsCisgICAgICAncGFyYW1z JzogWworICAgICAgICBbJ2EnLCAnaW50ZWdlciddLAorICAgICAgICBbJ2InLCAndGV4dCddLAor ICAgICAgXSwKKyAgICB9OworICAgIGV4cGVjdChwYXJzZUZ1bmNQYXJhbXMoZnVuY0xhYmVsKSku dG9FcXVhbChleHBlY3RlZE9iaik7CisgIH0pOworCisgIGl0KCdmdW5jdGlvbiBwYXJhbXMgc3Bl Y2lhbCBjaGFycycsIGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jTGFiZWwgPSAnZnVuYzEoImEoYiIg aW50ZWdlciwgImEgYiIgdGV4dCknOworICAgIGV4cGVjdGVkT2JqID0geworICAgICAgJ2Z1bmNf bmFtZSc6ICdmdW5jMScsCisgICAgICAncGFyYW1fc3RyaW5nJzogJyJhKGIiIGludGVnZXIsICJh IGIiIHRleHQnLAorICAgICAgJ3BhcmFtcyc6IFsKKyAgICAgICAgWyciYShiIicsICdpbnRlZ2Vy J10sCisgICAgICAgIFsnImEgYiInLCAndGV4dCddLAorICAgICAgXSwKKyAgICB9OworICAgIGV4 cGVjdChwYXJzZUZ1bmNQYXJhbXMoZnVuY0xhYmVsKSkudG9FcXVhbChleHBlY3RlZE9iaik7Cisg IH0pOworCisgIGl0KCdmdW5jdGlvbiBwYXJhbXMgd2l0aCBtb2RlcycsIGZ1bmN0aW9uICgpIHsK KyAgICBmdW5jTGFiZWwgPSAnZnVuYzEoSU4gYSBpbnRlZ2VyLCBPVVQgYiB0ZXh0KSc7CisgICAg ZXhwZWN0ZWRPYmogPSB7CisgICAgICAnZnVuY19uYW1lJzogJ2Z1bmMxJywKKyAgICAgICdwYXJh bV9zdHJpbmcnOiAnSU4gYSBpbnRlZ2VyLCBPVVQgYiB0ZXh0JywKKyAgICAgICdwYXJhbXMnOiBb CisgICAgICAgIFsnYScsICdpbnRlZ2VyJ10sCisgICAgICAgIFsnYicsICd0ZXh0J10sCisgICAg ICBdLAorICAgIH07CisgICAgZXhwZWN0KHBhcnNlRnVuY1BhcmFtcyhmdW5jTGFiZWwpKS50b0Vx dWFsKGV4cGVjdGVkT2JqKTsKKyAgfSk7Cit9KTsK --000000000000b09de2058c4bad42--