Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b2ZAS-0008Cx-7Y for pgadmin-hackers@arkaria.postgresql.org; Tue, 17 May 2016 07:11:48 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1b2ZAR-00045Q-0C for pgadmin-hackers@arkaria.postgresql.org; Tue, 17 May 2016 07:11:47 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1b2ZAC-0003rG-Fd for pgadmin-hackers@postgresql.org; Tue, 17 May 2016 07:11:32 +0000 Received: from mail-yw0-x22c.google.com ([2607:f8b0:4002:c05::22c]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1b2ZA9-0005fM-7J for pgadmin-hackers@postgresql.org; Tue, 17 May 2016 07:11:31 +0000 Received: by mail-yw0-x22c.google.com with SMTP id x194so7047600ywd.0 for ; Tue, 17 May 2016 00:11:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc; bh=AwSbFhht4Xl/EKv4mnsBzvZwbbEGLHk9DzitWFk67b4=; b=0akrljtJXElAXKB3bIG2bTD2ZxddLRL2JFRBrg1x/sWqo6cIdcChftt4AlH6Cq6m9k JQsl4xj7y2d9Q6V0Q+dfRtXtr7JRmwdfp1woZ/WYPBGs9Xs/3RWEkfs2cRLKLS93inqV GlIULh45zuF4GXOEmxqBThsB2wMKu9CamYzxQuzCuz5+f3GpX6FK76VRRRAs57zt9zsv Oq8ThspFJ7A7Hi/Mt1bX/ZISuNU9weRrlD1CMotAmZ1tsjX8OHR9Hcs7GDyUySROYS5S YF4oqGU58O4lkNv91oWW2Qq+lQx9ycvDp1TszsU4o8kKBn7/bLJ5Y8AT6W1vAsoh8r/W UCDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc; bh=AwSbFhht4Xl/EKv4mnsBzvZwbbEGLHk9DzitWFk67b4=; b=AtmK59PiuQdbfaed3YcSOhoqY0eJfevVD1WbOdJinyIU2ZW14IPTcsvSM2uVbnQC8Z 07Q3xYk4HUAN89SgK9/WtuJmxEN7YavIX/ocD4mXISePVdfLMjC5cxHNTku1/2cyZaBf 780VllawN5XWexfkAd5ks3NjU2RvAx5jnRif0ledQjsNlv7KH5pIClxm0XKyBWQbu6y4 Kv3cm2o6gO8yBOYWh2oci/X9uXAMZzW8L/jB8KbtIQ9bp87LiNbmhpxgf+yqP7quWwvl +EHDa7lguA4nzHGNKnOij41fftWNY1nDkZ5HnZfAsvJXYOpquLsYhcGQ8z7abxtLkPxS dEhw== X-Gm-Message-State: AOPr4FVUw64nsG64KErCKycfHby9eNVlu/4vih1gtiAgkTgpdxcoPrgBmM2kz3ywkEJwtm6LlQSYh82Irp2o3Lui MIME-Version: 1.0 X-Received: by 10.129.46.80 with SMTP id u77mr16006761ywu.143.1463469088242; Tue, 17 May 2016 00:11:28 -0700 (PDT) Received: by 10.37.208.4 with HTTP; Tue, 17 May 2016 00:11:28 -0700 (PDT) In-Reply-To: References: Date: Tue, 17 May 2016 12:41:28 +0530 Message-ID: Subject: Re: [pgAdmin4]: Initial patch for Import table From: Neel Patel To: Ashesh Vashi Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a11409dae2548b20533047327 X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --001a11409dae2548b20533047327 Content-Type: multipart/alternative; boundary=001a11409dae2548ad0533047325 --001a11409dae2548ad0533047325 Content-Type: text/plain; charset=UTF-8 Hi, I have fixed some of the issues observed during testing and as per your feedback added "Export" functionality as well. I have tested it on both linux and windows and it is working. Please find attached updated patch. Do review it and let me know for any modifications. Thanks, Neel Patel On Mon, May 16, 2016 at 12:48 PM, Ashesh Vashi < ashesh.vashi@enterprisedb.com> wrote: > Hi Neel, > > As discussed, I am sending you the updated path for based on your new > patch (sent personally, which included the background process integration). > Also, the COPY Statement expects the file to be present on the server OS, > hence - we should be using the '\copy' command of psql to do the job. > I have modified the patch accordingly, but - I did not get a chance to > test it properly, also - with some cosmetic changes. > > Can you please review, and test it? > > > -- > > Thanks & Regards, > > Ashesh Vashi > EnterpriseDB INDIA: Enterprise PostgreSQL Company > > > > *http://www.linkedin.com/in/asheshvashi* > > > On Thu, May 5, 2016 at 4:43 PM, Neel Patel > wrote: > >> Hi, >> >> Please find attached patch file which contains the table Import >> functionality. >> Attached patch file is depend on the following patch which is not >> committed yet. >> >> - File Manager patch >> - Table node patch >> >> Do review it and let us know for comments. >> >> Thanks, >> Neel Patel >> >> >> -- >> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) >> To make changes to your subscription: >> http://www.postgresql.org/mailpref/pgadmin-hackers >> >> > --001a11409dae2548ad0533047325 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

I have fixed some of the issues obs= erved during testing and as per your feedback added "Export" func= tionality as well.
I have tested it on both linux and windows and= it is working.

Please find attached updated patch= . Do review it and let me know for any modifications.

<= div>Thanks,
Neel Patel

=
On Mon, May 16, 2016 at 12:48 PM, Ashesh Vashi <= span dir=3D"ltr"><ashesh.vashi@enterprisedb.com> wrote:
Hi Neel,

As dis= cussed, I am sending you the updated path for based on your new patch (sent= personally, which included the background process integration).
= Also, the COPY Statement expects the file to be present on the server OS, h= ence - we should be using the '\copy' command of psql to do the job= .
I have modified the patch accordingly, but - I did not get a ch= ance to test it properly, also - with some cosmetic changes.

=
Can you please review, and test it?


--

Thanks & Reg= ards,

Ashesh Vashi
EnterpriseDB INDIA: Enterprise Po= stgreSQL Company

<= br>

<= a href=3D"http://www.linkedin.com/in/asheshvashi" target=3D"_blank">http= ://www.linkedin.com/in/asheshvashi


On Thu, May 5, 2016 a= t 4:43 PM, Neel Patel <neel.patel@enterprisedb.com> wrote:
Hi,

Please find attached patch file = which contains the table Import functionality.
Attached patch fil= e is depend on the following patch which is not committed yet.
  • File Manager patch
  • Table node patch
  • Do review i= t and let us know for comments.

    Thanks,
    Neel Patel


    --
    Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
    To make changes to your subscription:
    http://www.postgresql.org/mailpref/pgadmin-hackers=



    --001a11409dae2548ad0533047325-- --001a11409dae2548b20533047327 Content-Type: application/octet-stream; name="import_v3.patch" Content-Disposition: attachment; filename="import_v3.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iob3op401 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2ltcG9ydC9fX2luaXRf Xy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL2ltcG9ydC9fX2luaXRfXy5weQpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMThmNTZmCi0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvaW1wb3J0L19f aW5pdF9fLnB5CkBAIC0wLDAgKzEsMjgwIEBACisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRv b2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTYsIFRoZSBwZ0Fk bWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxl YXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisiIiJBIGJsdWVwcmludCBtb2R1 bGUgaW1wbGVtZW50aW5nIHRoZSBpbXBvcnQgYW5kIGV4cG9ydCBmdW5jdGlv bmFsaXR5IiIiCisKK2ltcG9ydCBqc29uCitpbXBvcnQgb3MKKworZnJvbSBm bGFzayBpbXBvcnQgdXJsX2ZvciwgUmVzcG9uc2UsIHJlbmRlcl90ZW1wbGF0 ZSwgcmVxdWVzdCwgY3VycmVudF9hcHAKK2Zyb20gZmxhc2suZXh0LmJhYmVs IGltcG9ydCBnZXR0ZXh0IGFzIF8KK2Zyb20gZmxhc2suZXh0LnNlY3VyaXR5 IGltcG9ydCBsb2dpbl9yZXF1aXJlZCwgY3VycmVudF91c2VyCisKK2Zyb20g Y29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgorZnJvbSBwZ2FkbWlu LnV0aWxzIGltcG9ydCBQZ0FkbWluTW9kdWxlLCBnZXRfc3RvcmFnZV9kaXJl Y3RvcnksIGh0bWwKK2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBt YWtlX2pzb25fcmVzcG9uc2UsIGJhZF9yZXF1ZXN0Citmcm9tIHBnYWRtaW4u bW9kZWwgaW1wb3J0IFNlcnZlcgorZnJvbSBwZ2FkbWluLm1pc2MuYmdwcm9j ZXNzLnByb2Nlc3NlcyBpbXBvcnQgQmF0Y2hQcm9jZXNzLCBJUHJvY2Vzc0Rl c2MKKworTU9EVUxFX05BTUUgPSAnaW1wb3J0JworCisKK2NsYXNzIEltcG9y dEV4cG9ydE1vZHVsZShQZ0FkbWluTW9kdWxlKToKKyAgICAiIiIKKyAgICBj bGFzcyBJbXBvcnRFeHBvcnRNb2R1bGUoUGdBZG1pbk1vZHVsZSkKKworICAg ICAgICBBIG1vZHVsZSBjbGFzcyBmb3IgaW1wb3J0IHdoaWNoIGlzIGRlcml2 ZWQgZnJvbSBQZ0FkbWluTW9kdWxlLgorCisgICAgTWV0aG9kczoKKyAgICAt LS0tLS0tCisgICAgKiBnZXRfb3duX2phdmFzY3JpcHRzKHNlbGYpCisgICAg ICAtIE1ldGhvZCBpcyB1c2VkIHRvIGxvYWQgdGhlIHJlcXVpcmVkIGphdmFz Y3JpcHQgZmlsZXMgZm9yIGltcG9ydCBtb2R1bGUKKyAgICAiIiIKKworICAg IExBQkVMID0gXygnSW1wb3J0JykKKworICAgIGRlZiBnZXRfb3duX2phdmFz Y3JpcHRzKHNlbGYpOgorICAgICAgICBzY3JpcHRzID0gbGlzdCgpCisgICAg ICAgIGZvciBuYW1lLCBzY3JpcHQgaW4gWworICAgICAgICAgICAgICAgIFsn cGdhZG1pbi50b29scy5pbXBvcnQnLCAnanMvaW1wb3J0J10KKyAgICAgICAg ICAgICAgICBdOgorICAgICAgICAgICAgc2NyaXB0cy5hcHBlbmQoeworICAg ICAgICAgICAgICAgICduYW1lJzogbmFtZSwKKyAgICAgICAgICAgICAgICAn cGF0aCc6IHVybF9mb3IoJ2ltcG9ydC5pbmRleCcpICsgc2NyaXB0LAorICAg ICAgICAgICAgICAgICd3aGVuJzogTm9uZQorICAgICAgICAgICAgICAgIH0p CisKKyAgICAgICAgcmV0dXJuIHNjcmlwdHMKKworCitibHVlcHJpbnQgPSBJ bXBvcnRFeHBvcnRNb2R1bGUoTU9EVUxFX05BTUUsIF9fbmFtZV9fKQorCisK K2NsYXNzIE1lc3NhZ2UoSVByb2Nlc3NEZXNjKToKKyAgICAiIiIKKyAgICBN ZXNzYWdlKElQcm9jZXNzRGVzYykKKworICAgIERlZmluZXMgdGhlIG1lc3Nh Z2Ugc2hvd24gZm9yIHRoZSBNZXNzYWdlIG9wZXJhdGlvbi4KKyAgICAiIiIK KyAgICBkZWYgX19pbml0X18oc2VsZiwgX3NpZCwgX3NjaGVtYSwgX3RibCwg X2RhdGFiYXNlLCBfc3RvcmFnZSk6CisgICAgICAgIHNlbGYuc2lkID0gX3Np ZAorICAgICAgICBzZWxmLnNjaGVtYSA9IF9zY2hlbWEKKyAgICAgICAgc2Vs Zi50YWJsZSA9IF90YmwKKyAgICAgICAgc2VsZi5kYXRhYmFzZSA9IF9kYXRh YmFzZQorICAgICAgICBzZWxmLnN0b3JhZ2UgPSBfc3RvcmFnZQorCisgICAg QHByb3BlcnR5CisgICAgZGVmIG1lc3NhZ2Uoc2VsZik6CisgICAgICAgICMg RmV0Y2ggdGhlIHNlcnZlciBkZXRhaWxzIGxpa2UgaG9zdG5hbWUsIHBvcnQs IHJvbGVzIGV0YworICAgICAgICBzID0gU2VydmVyLnF1ZXJ5LmZpbHRlcl9i eSgKKyAgICAgICAgICAgIGlkPXNlbGYuc2lkLCB1c2VyX2lkPWN1cnJlbnRf dXNlci5pZAorICAgICAgICApLmZpcnN0KCkKKworICAgICAgICByZXR1cm4g XygKKyAgICAgICAgICAgICJDb3B5aW5nIHRhYmxlIGRhdGEgLSAnezB9Lnsx fScgb24gZGF0YWJhc2UgJ3syfScgYW5kIHNlcnZlciAoezN9ezR9KS4uLiIK KyAgICAgICAgKS5mb3JtYXQoCisgICAgICAgICAgICBzZWxmLnNjaGVtYSwg c2VsZi50YWJsZSwgc2VsZi5kYXRhYmFzZSwgcy5ob3N0LCBzLnBvcnQKKyAg ICAgICAgKQorCisgICAgZGVmIGRldGFpbHMoc2VsZiwgY21kLCBhcmdzKToK KyAgICAgICAgIyBGZXRjaCB0aGUgc2VydmVyIGRldGFpbHMgbGlrZSBob3N0 bmFtZSwgcG9ydCwgcm9sZXMgZXRjCisgICAgICAgIHMgPSBTZXJ2ZXIucXVl cnkuZmlsdGVyX2J5KAorICAgICAgICAgICAgaWQ9c2VsZi5zaWQsIHVzZXJf aWQ9Y3VycmVudF91c2VyLmlkCisgICAgICAgICkuZmlyc3QoKQorCisgICAg ICAgIHJlcyA9ICc8ZGl2IGNsYXNzPSJoNSI+JworICAgICAgICByZXMgKz0g aHRtbC5zYWZlX3N0cigKKyAgICAgICAgICAgIF8oCisgICAgICAgICAgICAg ICAgIkNvcHlpbmcgdGFibGUgZGF0YSAnezB9LnsxfScgb24gZGF0YWJhc2Ug J3syfScgZm9yIHRoZSBzZXJ2ZXIgLSAnezN9JyIKKyAgICAgICAgICAgICku Zm9ybWF0KAorICAgICAgICAgICAgICAgIHNlbGYuc2NoZW1hLCBzZWxmLnRh YmxlLCBzZWxmLmRhdGFiYXNlLAorICAgICAgICAgICAgICAgICJ7MH0gKHsx fTp7Mn0pIi5mb3JtYXQocy5uYW1lLCBzLmhvc3QsIHMucG9ydCkKKyAgICAg ICAgICAgICkKKyAgICAgICAgKQorCisgICAgICAgIHJlcyArPSAnPC9kaXY+ PGRpdiBjbGFzcz0iaDUiPicKKyAgICAgICAgcmVzICs9IGh0bWwuc2FmZV9z dHIoCisgICAgICAgICAgICBfKCJSdW5uaW5nIGNvbW1hbmQ6IikKKyAgICAg ICAgKQorICAgICAgICByZXMgKz0gJzwvYj48YnI+PGk+JworICAgICAgICBy ZXMgKz0gaHRtbC5zYWZlX3N0cihjbWQpCisKKyAgICAgICAgcmVwbGFjZV9u ZXh0ID0gRmFsc2UKKworICAgICAgICBkZWYgY21kQXJnKHgpOgorICAgICAg ICAgICAgaWYgeDoKKyAgICAgICAgICAgICAgICB4ID0geC5yZXBsYWNlKCdc XCcsICdcXFxcJykKKyAgICAgICAgICAgICAgICB4ID0geC5yZXBsYWNlKCci JywgJ1xcIicpCisgICAgICAgICAgICAgICAgeCA9IHgucmVwbGFjZSgnIiIn LCAnXFwiJykKKworICAgICAgICAgICAgICAgIHJldHVybiAnICInICsgaHRt bC5zYWZlX3N0cih4KSArICciJworCisgICAgICAgICAgICByZXR1cm4gJycK KworICAgICAgICBmb3IgYXJnIGluIGFyZ3M6CisgICAgICAgICAgICBpZiBh cmcgYW5kIGxlbihhcmcpID49IDIgYW5kIGFyZ1s6Ml0gPT0gJy0tJzoKKyAg ICAgICAgICAgICAgICByZXMgKz0gJyAnICsgYXJnCisgICAgICAgICAgICBl bGlmIHJlcGxhY2VfbmV4dDoKKyAgICAgICAgICAgICAgICBpZiBzZWxmLnN0 b3JhZ2U6CisgICAgICAgICAgICAgICAgICAgIGFyZyA9IGFyZy5yZXBsYWNl KHNlbGYuc3RvcmFnZSwgJycpCisgICAgICAgICAgICAgICAgcmVzICs9ICcg IicgKyBodG1sLnNhZmVfc3RyKGFyZykgKyAnIicKKyAgICAgICAgICAgIGVs c2U6CisgICAgICAgICAgICAgICAgaWYgYXJnID09ICctLWNvbW1hbmQnOgor ICAgICAgICAgICAgICAgICAgICByZXBsYWNlX25leHQgPSBUcnVlCisgICAg ICAgICAgICAgICAgcmVzICs9IGNtZEFyZyhhcmcpCisgICAgICAgIHJlcyAr PSAnPC9pPjwvZGl2PicKKworICAgICAgICByZXR1cm4gcmVzCisKKworQGJs dWVwcmludC5yb3V0ZSgiLyIpCitAbG9naW5fcmVxdWlyZWQKK2RlZiBpbmRl eCgpOgorICAgIHJldHVybiBiYWRfcmVxdWVzdChlcnJvcm1zZz1fKCJUaGlz IFVSTCBjYW4gbm90IGJlIGNhbGxlZCBkaXJlY3RseSEiKSkKKworCitAYmx1 ZXByaW50LnJvdXRlKCIvanMvaW1wb3J0LmpzIikKK0Bsb2dpbl9yZXF1aXJl ZAorZGVmIHNjcmlwdCgpOgorICAgICIiInJlbmRlciB0aGUgaW1wb3J0IGph dmFzY3JpcHQgZmlsZSIiIgorICAgIHJldHVybiBSZXNwb25zZShyZXNwb25z ZT1yZW5kZXJfdGVtcGxhdGUoImltcG9ydC9qcy9pbXBvcnQuanMiLCBfPV8p LAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM9MjAwLAorICAgICAgICAg ICAgICAgICAgICBtaW1ldHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIp CisKKworQGJsdWVwcmludC5yb3V0ZSgnL2NyZWF0ZV9qb2IvPGludDpzaWQ+ JywgbWV0aG9kcz1bJ1BPU1QnXSkKK0Bsb2dpbl9yZXF1aXJlZAorZGVmIGNy ZWF0ZV9pbXBvcnRfam9iKHNpZCk6CisgICAgIiIiCisgICAgQXJnczoKKyAg ICAgICAgc2lkOiBTZXJ2ZXIgSUQKKworICAgICAgICBDcmVhdGVzIGEgbmV3 IGpvYiBmb3IgaW1wb3J0IGFuZCBleHBvcnQgdGFibGUgZGF0YSBmdW5jdGlv bmFsaXR5CisKKyAgICBSZXR1cm5zOgorICAgICAgICBOb25lCisgICAgIiIi CisgICAgaWYgcmVxdWVzdC5mb3JtOgorICAgICAgICAjIENvbnZlcnQgSW1t dXRhYmxlRGljdCB0byBkaWN0CisgICAgICAgIGRhdGEgPSBkaWN0KHJlcXVl c3QuZm9ybSkKKyAgICAgICAgZGF0YSA9IGpzb24ubG9hZHMoZGF0YVsnZGF0 YSddWzBdKQorICAgIGVsc2U6CisgICAgICAgIGRhdGEgPSBqc29uLmxvYWRz KHJlcXVlc3QuZGF0YS5kZWNvZGUoKSkKKworICAgICMgRmV0Y2ggdGhlIHNl cnZlciBkZXRhaWxzIGxpa2UgaG9zdG5hbWUsIHBvcnQsIHJvbGVzIGV0Ywor ICAgIHNlcnZlciA9IFNlcnZlci5xdWVyeS5maWx0ZXJfYnkoCisgICAgICAg IGlkPXNpZCkuZmlyc3QoKQorCisgICAgaWYgc2VydmVyIGlzIE5vbmU6Cisg ICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAg ICBzdWNjZXNzPTAsCisgICAgICAgICAgICBlcnJvcm1zZz1fKCJDb3VsZG4n dCBmaW5kIHRoZSBnaXZlbiBzZXJ2ZXIiKQorICAgICAgICApCisKKyAgICAj IFRvIGZldGNoIE1ldGFEYXRhIGZvciB0aGUgc2VydmVyCisgICAgZnJvbSBw Z2FkbWluLnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2RyaXZlcgorICAgIGRy aXZlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpCisgICAgbWFu YWdlciA9IGRyaXZlci5jb25uZWN0aW9uX21hbmFnZXIoc2VydmVyLmlkKQor ICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24oKQorICAgIGNvbm5lY3Rl ZCA9IGNvbm4uY29ubmVjdGVkKCkKKworICAgIGlmIG5vdCBjb25uZWN0ZWQ6 CisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAg ICAgICBzdWNjZXNzPTAsCisgICAgICAgICAgICBlcnJvcm1zZz1fKCJQbGVh c2UgY29ubmVjdCB0byB0aGUgc2VydmVyIGZpcnN0Li4uIikKKyAgICAgICAg KQorCisgICAgIyBHZXQgdGhlIHV0aWxpdHkgcGF0aCBmcm9tIHRoZSBjb25u ZWN0aW9uIG1hbmFnZXIKKyAgICB1dGlsaXR5ID0gbWFuYWdlci51dGlsaXR5 KCdzcWwnKQorCisgICAgIyBHZXQgdGhlIHN0b3JhZ2UgcGF0aCBmcm9tIHBy ZWZlcmVuY2UKKyAgICBzdG9yYWdlX2RpciA9IGdldF9zdG9yYWdlX2RpcmVj dG9yeSgpCisgICAgaWYgJ2ZpbGVuYW1lJyBpbiBkYXRhOgorICAgICAgICBp ZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICBkYXRhWydmaWxlbmFt ZSddID0gZGF0YVsnZmlsZW5hbWUnXS5yZXBsYWNlKCcvJywgJ1xcJykKKyAg ICAgICAgICAgIGlmIHN0b3JhZ2VfZGlyOgorICAgICAgICAgICAgICAgIHN0 b3JhZ2VfZGlyID0gc3RvcmFnZV9kaXIucmVwbGFjZSgnLycsICdcXCcpCisg ICAgICAgICAgICBkYXRhWydmaWxlbmFtZSddID0gZGF0YVsnZmlsZW5hbWUn XS5yZXBsYWNlKCdcXCcsICdcXFxcJykKKyAgICAgICAgICAgIGRhdGFbJ2Zp bGVuYW1lJ10gPSBvcy5wYXRoLmpvaW4oc3RvcmFnZV9kaXIsIGRhdGFbJ2Zp bGVuYW1lJ10pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkYXRhWydm aWxlbmFtZSddID0gb3MucGF0aC5qb2luKHN0b3JhZ2VfZGlyLCBkYXRhWydm aWxlbmFtZSddKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBtYWtlX2pz b25fcmVzcG9uc2UoCisgICAgICAgICAgICBkYXRhPXsnc3RhdHVzJzogRmFs c2UsICdpbmZvJzogJ1BsZWFzZSBzcGVjaWZ5IGEgdmFsaWQgZmlsZSd9Cisg ICAgICAgICkKKworICAgIGlnbm9yZV9jb2x1bW5fbGlzdCA9ICcnCisgICAg Y29sdW1uX2xpc3RfaW1wb3J0ID0gJycKKworICAgIGlmIGRhdGFbJ2lnbm9y ZV9jb2x1bW4nXToKKyAgICAgICAgbmV3X2lnbm9yZV9jb2xfbGlzdCA9IGpz b24ubG9hZHMoZGF0YVsnaWdub3JlX2NvbHVtbiddKQorCisgICAgICAgICMg Zm9ybWF0IHRoZSBpZ25vcmUgY29sdW1uIGxpc3QgcmVxdWlyZWQgYXMgcGVy IGNvcHkgY29tbWFuZAorICAgICAgICAjIHJlcXVpcmVtZW50CisgICAgICAg IGlmIG5ld19pZ25vcmVfY29sX2xpc3Q6CisgICAgICAgICAgICBpZ25vcmVf Y29sdW1uX2xpc3QgPSAnKCcKKyAgICAgICAgICAgIGlnbm9yZV9jb2xfbGVu Z3RoID0gbGVuKG5ld19pZ25vcmVfY29sX2xpc3QpCisgICAgICAgICAgICBm b3IgaSBpbiByYW5nZShpZ25vcmVfY29sX2xlbmd0aCk6CisgICAgICAgICAg ICAgICAgaWdub3JlX2NvbHVtbl9saXN0ICs9IG5ld19pZ25vcmVfY29sX2xp c3RbaV0KKyAgICAgICAgICAgICAgICBpZiBpICE9IChpZ25vcmVfY29sX2xl bmd0aCAtIDEpOgorICAgICAgICAgICAgICAgICAgICBpZ25vcmVfY29sdW1u X2xpc3QgKz0gJywnCisgICAgICAgICAgICBpZ25vcmVfY29sdW1uX2xpc3Qg Kz0gJyknCisKKyAgICAjIGZvcm1hdCB0aGUgY29sdW1uIGltcG9ydCBsaXN0 IHJlcXVpcmVkIGFzIHBlciBjb3B5IGNvbW1hbmQgcmVxdWlyZW1lbnQKKyAg ICBpZiBkYXRhWydjb2x1bW5faW1wb3J0J106CisgICAgICAgIGNvbHVtbl9s aXN0X2ltcG9ydCA9ICcoJworICAgICAgICBpbXBvcnRfY29sX2xlbmd0aCA9 IGxlbihkYXRhWydjb2x1bW5faW1wb3J0J10pCisgICAgICAgIGZvciBpbmRl eENudCBpbiByYW5nZShpbXBvcnRfY29sX2xlbmd0aCk6CisgICAgICAgICAg ICBjb2x1bW5fbGlzdF9pbXBvcnQgKz0gZGF0YVsnY29sdW1uX2ltcG9ydCdd W2luZGV4Q250XQorICAgICAgICAgICAgaWYgaW5kZXhDbnQgIT0gKGltcG9y dF9jb2xfbGVuZ3RoIC0gMSk6CisgICAgICAgICAgICAgICAgY29sdW1uX2xp c3RfaW1wb3J0ICs9ICcsJworICAgICAgICBjb2x1bW5fbGlzdF9pbXBvcnQg Kz0gJyknCisKKyAgICAjIEZldGNoIGFyZ3VtZW50cyBmcm9tIHRlbXBsYXRl CisgICAgYXJndW1lbnRzID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAn aW1wb3J0L2FyZ3VtZW50cy9pbXBvcnQuYXJncycsCisgICAgICAgIGNvbm49 Y29ubiwKKyAgICAgICAgZGF0YT1kYXRhLAorICAgICAgICBjb2x1bW5fbGlz dF9pbXBvcnQ9Y29sdW1uX2xpc3RfaW1wb3J0LAorICAgICAgICBpZ25vcmVf Y29sdW1uX2xpc3Q9aWdub3JlX2NvbHVtbl9saXN0CisgICAgKQorCisgICAg YXJncyA9IFsKKyAgICAgICAgJy0taG9zdCcsIHNlcnZlci5ob3N0LCAnLS1w b3J0Jywgc3RyKHNlcnZlci5wb3J0KSwKKyAgICAgICAgJy0tdXNlcm5hbWUn LCBzZXJ2ZXIudXNlcm5hbWUsICctLWRibmFtZScsCisgICAgICAgIGRyaXZl ci5xdElkZW50KGNvbm4sIGRhdGFbJ2RhdGFiYXNlJ10pLAorICAgICAgICAn LS1jb21tYW5kJywgYXJndW1lbnRzCisgICAgXQorCisgICAgdHJ5OgorICAg ICAgICBwID0gQmF0Y2hQcm9jZXNzKAorICAgICAgICAgICAgZGVzYz1NZXNz YWdlKAorICAgICAgICAgICAgICAgIHNpZCwKKyAgICAgICAgICAgICAgICBk YXRhWydzY2hlbWEnXSwKKyAgICAgICAgICAgICAgICBkYXRhWyd0YWJsZSdd LAorICAgICAgICAgICAgICAgIGRhdGFbJ2RhdGFiYXNlJ10sCisgICAgICAg ICAgICAgICAgc3RvcmFnZV9kaXIKKyAgICAgICAgICAgICksCisgICAgICAg ICAgICBjbWQ9dXRpbGl0eSwgYXJncz1hcmdzCisgICAgICAgICkKKyAgICAg ICAgbWFuYWdlci5leHBvcnRfcGFzc3dvcmRfZW52KHAuaWQpCisgICAgICAg IHAuc3RhcnQoKQorICAgICAgICBqaWQgPSBwLmlkCisgICAgZXhjZXB0IEV4 Y2VwdGlvbiBhcyBlOgorICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXhj ZXB0aW9uKGUpCisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2Uo CisgICAgICAgICAgICBzdGF0dXM9NDEwLAorICAgICAgICAgICAgc3VjY2Vz cz0wLAorICAgICAgICAgICAgZXJyb3Jtc2c9c3RyKGUpCisgICAgICAgICkK KworICAgICMgUmV0dXJuIHJlc3BvbnNlCisgICAgcmV0dXJuIG1ha2VfanNv bl9yZXNwb25zZSgKKyAgICAgICAgZGF0YT17J2pvYl9pZCc6IGppZCwgJ3N1 Y2Nlc3MnOiAxfQorICAgICkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rv b2xzL2ltcG9ydC90ZW1wbGF0ZXMvaW1wb3J0L2FyZ3VtZW50cy9pbXBvcnQu YXJncyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2ltcG9ydC90ZW1wbGF0ZXMvaW1w b3J0L2FyZ3VtZW50cy9pbXBvcnQuYXJncwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4zNTViMDE5Ci0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vdG9vbHMvaW1wb3J0L3RlbXBsYXRlcy9pbXBvcnQvYXJn dW1lbnRzL2ltcG9ydC5hcmdzCkBAIC0wLDAgKzEgQEAKK1xjb3B5IHt7IGNv bm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS50YWJsZSkgfX0geyUgaWYg Y29sdW1uX2xpc3RfaW1wb3J0ICV9IHt7IGNvbHVtbl9saXN0X2ltcG9ydCB9 fSB7JSBlbmRpZiAlfSB7JSBpZiBkYXRhLmlzX2ltcG9ydCAlfUZST017JSBl bHNlICV9VE97JSBlbmRpZiAlfSB7eyBkYXRhLmZpbGVuYW1lfHF0TGl0ZXJh bCB9fSB7JSBpZiBkYXRhLm9pZCAlfSBPSURTIHslIGVuZGlmICV9eyUgaWYg ZGF0YS5kZWxpbWl0ZXIgYW5kIGRhdGEuZGVsaW1pdGVyID09ICdbdGFiXScg JX0gREVMSU1JVEVSIEUnXFx0JyB7JSBlbGlmIGRhdGEuZGVsaW1pdGVyICV9 IERFTElNSVRFUiB7eyBkYXRhLmRlbGltaXRlcnxxdExpdGVyYWwgfX17JSBl bmRpZiAlfXslIGlmIGRhdGEuZm9ybWF0ID09ICdjc3YnICV9IENTViBIRUFE RVIgeyUgZW5kaWYgJX17JSBpZiBkYXRhLmVuY29kaW5nICV9IEVOQ09ESU5H IHt7IGRhdGEuZW5jb2Rpbmd8cXRMaXRlcmFsIH19eyUgZW5kaWYgJX17JSBp ZiBkYXRhLnF1b3RlICV9IFFVT1RFIHt7IGRhdGEucXVvdGV8cXRMaXRlcmFs IH19eyUgZW5kaWYgJX17JSBpZiBkYXRhLm51bGxfc3RyaW5nICV9IE5VTEwg e3sgZGF0YS5udWxsX3N0cmluZ3xxdExpdGVyYWwgfX17JSBlbmRpZiAlfXsl IGlmIGRhdGEuZXNjYXBlICV9IEVTQ0FQRSB7eyBkYXRhLmVzY2FwZXxxdExp dGVyYWwgfX17JSBlbmRpZiAlfXslIGlmIGRhdGEuZm9ybWF0ID09ICdjc3Yn IGFuZCBpZ25vcmVfY29sdW1uX2xpc3QgJX0gRk9SQ0VfTk9UX05VTEwge3sg aWdub3JlX2NvbHVtbl9saXN0IH19IHslIGVuZGlmICV9OwpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vdG9vbHMvaW1wb3J0L3RlbXBsYXRlcy9pbXBvcnQv anMvaW1wb3J0LmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvaW1wb3J0L3RlbXBs YXRlcy9pbXBvcnQvanMvaW1wb3J0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjJkMjg4ZjIKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi90b29scy9pbXBvcnQvdGVtcGxhdGVzL2ltcG9ydC9qcy9p bXBvcnQuanMKQEAgLTAsMCArMSw0MTggQEAKK2RlZmluZSgKKyAgWydqcXVl cnknLCAndW5kZXJzY29yZScsICd1bmRlcnNjb3JlLnN0cmluZycsICdhbGVy dGlmeScsICdwZ2FkbWluJywKKyAgJ3BnYWRtaW4uYnJvd3NlcicsICdiYWNr Ym9uZScsICdiYWNrZ3JpZCcsICdiYWNrZm9ybScsCisgICdwZ2FkbWluLmJh Y2tmb3JtJywgJ3BnYWRtaW4uYmFja2dyaWQnLCAncGdhZG1pbi5icm93c2Vy Lm5vZGUudWknXSwKKyAgZnVuY3Rpb24oJCwgXywgUywgQWxlcnRpZnksIHBn QWRtaW4sIHBnQnJvd3NlciwgQmFja2JvbmUsIEJhY2tncmlkLCBCYWNrZm9y bSkgeworCisgIHBnQWRtaW4gPSBwZ0FkbWluIHx8IHdpbmRvdy5wZ0FkbWlu IHx8IHt9OworCisgIHZhciBwZ1Rvb2xzID0gcGdBZG1pbi5Ub29scyA9IHBn QWRtaW4uVG9vbHMgfHwge307CisKKyAgLy8gUmV0dXJuIGJhY2ssIHRoaXMg aGFzIGJlZW4gY2FsbGVkIG1vcmUgdGhhbiBvbmNlCisgIGlmIChwZ0FkbWlu LlRvb2xzLmltcG9ydF91dGlsaXR5KQorICAgIHJldHVybiBwZ0FkbWluLlRv b2xzLmltcG9ydF91dGlsaXR5OworCisgIC8vIE1haW4gbW9kZWwgZm9yIElt cG9ydC9FeHBvcnQgZnVuY3Rpb25hbGl0eQorICB2YXIgSW1wb3J0RXhwb3J0 TW9kZWwgPSBCYWNrYm9uZS5Nb2RlbC5leHRlbmQoeworICAgIGRlZmF1bHRz OiB7CisgICAgICBpc19pbXBvcnQ6IHRydWUsIC8qIGZhbHNlIGZvciBFeHBv cnQgKi8KKyAgICAgIGZpbGVuYW1lOiB1bmRlZmluZWQsCisgICAgICBmb3Jt YXQ6ICd0ZXh0JywKKyAgICAgIGVuY29kaW5nOiB1bmRlZmluZWQsCisgICAg ICBvaWQ6IHVuZGVmaW5lZCwKKyAgICAgIGhlYWRlcjogdW5kZWZpbmVkLAor ICAgICAgZGVsaW1pdGVyOiB1bmRlZmluZWQsCisgICAgICBxdW90ZTogdW5k ZWZpbmVkLAorICAgICAgZXNjYXBlOiB1bmRlZmluZWQsCisgICAgICBudWxs X3N0cmluZzogdW5kZWZpbmVkLAorICAgICAgY29sdW1uX2ltcG9ydDogW10s CisgICAgICBpZ25vcmVfY29sdW1uOiBbXSwKKyAgICAgIGRhdGFiYXNlOiB1 bmRlZmluZWQsCisgICAgICBzY2hlbWE6IHVuZGVmaW5lZCwKKyAgICAgIHRh YmxlOiB1bmRlZmluZWQKKyAgICB9LAorICAgIHNjaGVtYTogW3sKKyAgICAg IGlkOiAnaXNfaW1wb3J0JywgbGFiZWw6J3t7IF8oJ0ltcG9ydC9FeHBvcnQn KSB9fScsIGNlbGw6ICdzd2l0Y2gnLAorICAgICAgdHlwZTogJ3N3aXRjaCcs IGdyb3VwOiAne3sgXygnRmlsZXMnKX19JywKKyAgICAgIG9wdGlvbnM6IHsK KyAgICAgICAgICdvblRleHQnOiAne3sgXygnSW1wb3J0JykgfX0nLCAnb2Zm VGV4dCc6ICd7eyBfKCdFeHBvcnQnKSB9fScsCisgICAgICAgICAnb25Db2xv cic6ICdzdWNjZXNzJywgJ29mZkNvbG9yJzogJ3ByaW1hcnknCisgICAgICB9 CisgICAgfSwgeyAvKiBzZWxlY3QgZmlsZSBjb250cm9sIGZvciBpbXBvcnQg Ki8KKyAgICAgIGlkOiAnZmlsZW5hbWUnLCBsYWJlbDogJ3t7IF8oJ0ZpbGVu YW1lJyl9fScsIGRlcHM6IFsnaXNfaW1wb3J0J10sCisgICAgICB0eXBlOiAn dGV4dCcsIGNvbnRyb2w6IEJhY2tmb3JtLkZpbGVDb250cm9sLCBncm91cDog J3t7IF8oJ0ZpbGVzJyl9fScsCisgICAgICBkaWFsb2dfdHlwZTogJ3NlbGVj dF9maWxlJywgc3VwcF90eXBlczogWydjc3YnLCAndHh0JywgJyonXSwKKyAg ICAgIHZpc2libGU6ICdpc1NlbGVjdFZpc2libGUnCisgICAgfSwgeyAvKiBj cmVhdGUgZmlsZSBjb250cm9sIGZvciBleHBvcnQgKi8KKyAgICAgICAgaWQ6 ICdmaWxlbmFtZScsIGxhYmVsOiAne3sgXygnRmlsZW5hbWUnKX19JywgZGVw czogWydpc19pbXBvcnQnXSwKKyAgICAgICAgdHlwZTogJ3RleHQnLCBjb250 cm9sOiBCYWNrZm9ybS5GaWxlQ29udHJvbCwgZ3JvdXA6ICd7eyBfKCdGaWxl cycpfX0nLAorICAgICAgICBkaWFsb2dfdHlwZTogJ2NyZWF0ZV9maWxlJywg c3VwcF90eXBlczogWydjc3YnLCAndHh0JywgJyonXSwKKyAgICAgICAgdmlz aWJsZTogJ2lzQ3JlYXRlVmlzaWJsZScKKyAgICAgIH0sCisgICAgICB7Cisg ICAgICAgIGlkOiAnZm9ybWF0JywgbGFiZWw6ICd7eyBfKCJGb3JtYXQiKSB9 fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICBjb250cm9sOiAnc2VsZWN0 MicsIGdyb3VwOiAne3sgXygnRmlsZXMnKX19JywKKyAgICAgICAgb3B0aW9u czpbCisgICAgICAgICAgICB7J2xhYmVsJzogJ3RleHQnLCAndmFsdWUnOiAn dGV4dCd9LAorICAgICAgICAgICAgeydsYWJlbCc6ICdjc3YnLCAndmFsdWUn OiAnY3N2J30sCisgICAgICAgICAgICB7J2xhYmVsJzogJ2JpbmFyeScsICd2 YWx1ZSc6ICdiaW5hcnknfSwKKyAgICAgICAgICBdLAorICAgICAgICBkaXNh YmxlZDogJ2lzRGlzYWJsZWQnLCBzZWxlY3QyOiB7YWxsb3dDbGVhcjogZmFs c2UsIHdpZHRoOiAiMTAwJSIgfSwKKyAgICAgIH0sCisgICAgICB7CisgICAg ICAgIGlkOiAnZW5jb2RpbmcnLCBsYWJlbDogJ3t7IF8oIkVuY29kaW5nIikg fX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgY29udHJvbDogJ25vZGUt YWpheC1vcHRpb25zJywgbm9kZTogJ2RhdGFiYXNlJywgdXJsOiAnZ2V0X2Vu Y29kaW5ncycsIGZpcnN0X2VtcHR5OiB0cnVlLAorICAgICAgICBncm91cDog J3t7IF8oJ0ZpbGVzJyl9fScKKyAgICAgIH0sCisgICAgICB7CisgICAgICAg IGlkOiAnY29sdW1uX2ltcG9ydCcsIGxhYmVsOiAne3sgXygiQ29sdW1ucyB0 by9mb3IgaW1wb3J0L2V4cG9ydCIpIH19JywgY2VsbDogJ3N0cmluZycsCisg ICAgICAgIHR5cGU6ICdhcnJheScsIGNvbnRyb2w6IEJhY2tmb3JtLk11bHRp U2VsZWN0QWpheENvbnRyb2wuZXh0ZW5kKHsKKyAgICAgICAgICAgIC8vIEJ5 IGRlZmF1bHQsIGFsbCB0aGUgaW1wb3J0IGNvbHVtbnMgc2hvdWxkIGJlIHNl bGVjdGVkCisgICAgICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbigpIHsK KyAgICAgICAgICAgICAgICBCYWNrZm9ybS5NdWx0aVNlbGVjdEFqYXhDb250 cm9sLnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50 cyk7CisgICAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAorICAgICAg ICAgICAgICAgICAgICBvcHRpb25zID0gc2VsZi5maWVsZC5nZXQoJ29wdGlv bnMnKSwKKyAgICAgICAgICAgICAgICAgICAgb3BfdmFscyA9IFtdOworICAg ICAgICAgICAgICAgIGlmIChfLmlzRnVuY3Rpb24ob3B0aW9ucykpIHsKKyAg ICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIG9w dGlvbnMgPSBvcHRpb25zLmFwcGx5KHNlbGYpCisgICAgICAgICAgICAgICAg ICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRG8gbm90 aGluZworICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gW107CisgICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgIF8uZWFjaChvcHRpb25zLCBmdW5jdGlvbihvcCl7CisgICAgICAg ICAgICAgICAgICAgIG9wX3ZhbHMucHVzaChvcFsndmFsdWUnXSk7CisgICAg ICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBzZWxmLm1vZGVs LnNldChzZWxmLmZpZWxkLmdldCgnbmFtZScpLG9wX3ZhbHMpOworICAgICAg ICAgICAgfQorICAgICAgICB9KSwKKyAgICAgICAgbm9kZTogJ2NvbHVtbics IHVybDogJ25vZGVzJywgZ3JvdXA6ICd7eyBfKCdDb2x1bW5zJyl9fScsCisg ICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24ocm93cykgeworICAgICAgICB2 YXIgc2VsZiA9IHRoaXMsCisgICAgICAgICAgICBub2RlID0gc2VsZi5maWVs ZC5nZXQoJ3NjaGVtYV9ub2RlJyksCisgICAgICAgICAgICByZXMgPSBbXTsK KworICAgICAgICBfLmVhY2gocm93cywgZnVuY3Rpb24ocikgeworICAgICAg ICAgICAgdmFyIGwgPSAoXy5pc0Z1bmN0aW9uKG5vZGVbJ25vZGVfbGFiZWwn XSkgPworICAgICAgICAgICAgICAgICAgKG5vZGVbJ25vZGVfbGFiZWwnXSku YXBwbHkobm9kZSwgW3IsIHNlbGYubW9kZWwsIHNlbGZdKSA6CisgICAgICAg ICAgICAgICAgICByLmxhYmVsKSwKKyAgICAgICAgICAgICAgICBpbWFnZSA9 IChfLmlzRnVuY3Rpb24obm9kZVsnbm9kZV9pbWFnZSddKSA/CisgICAgICAg ICAgICAgICAgICAobm9kZVsnbm9kZV9pbWFnZSddKS5hcHBseSgKKyAgICAg ICAgICAgICAgICAgICAgbm9kZSwgW3IsIHNlbGYubW9kZWwsIHNlbGZdCisg ICAgICAgICAgICAgICAgICAgICkgOgorICAgICAgICAgICAgICAgICAgKG5v ZGVbJ25vZGVfaW1hZ2UnXSB8fCAoJ2ljb24tJyArIG5vZGUudHlwZSkpKTsK KyAgICAgICAgICAgIHJlcy5wdXNoKHsKKyAgICAgICAgICAgICAgJ3ZhbHVl Jzogci5sYWJlbCwKKyAgICAgICAgICAgICAgJ2ltYWdlJzogaW1hZ2UsCisg ICAgICAgICAgICAgICdsYWJlbCc6IGwKKyAgICAgICAgICAgIH0pOworICAg ICAgICB9KTsKKworICAgICAgICByZXR1cm4gcmVzOworICAgICAgfSwKKyAg ICAgICAgc2VsZWN0MjogeyBtdWx0aXBsZTogdHJ1ZSwgYWxsb3dDbGVhcjog dHJ1ZSwgcGxhY2Vob2xkZXI6ICd7eyBfKCdTZWxlY3QgY29sdW1ucyB0byBp bXBvcnQuLi4nKSB9fSd9LAorICAgICAgfSwKKyAgICAgIHsKKyAgICAgICAg aWQ6ICdudWxsX3N0cmluZycsIGxhYmVsOiAne3sgXygiTlVMTCBTdHJpbmdz IikgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgdHlwZTogJ3RleHQn LCBncm91cDogJ3t7IF8oJ0NvbHVtbnMnKX19JywgZGlzYWJsZWQ6ICdpc0Rp c2FibGVkJywgZGVwczogWydmb3JtYXQnXQorICAgICAgfSwKKyAgICAgIHsK KyAgICAgICAgaWQ6ICdpZ25vcmVfY29sdW1uJywgbGFiZWw6ICd7eyBfKCJJ Z25vcmUgQ29sdW1ucyIpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAg IGNvbnRyb2w6ICdub2RlLWxpc3QtYnktbmFtZScsIG5vZGU6ICdjb2x1bW4n LAorICAgICAgICBncm91cDogJ3t7IF8oJ0NvbHVtbnMnKX19JywgZGVwczog Wydmb3JtYXQnXSwgZGlzYWJsZWQ6ICdpc0Rpc2FibGVkJywKKyAgICAgICAg c2VsZWN0MjogeyBtdWx0aXBsZTogdHJ1ZSwgYWxsb3dDbGVhcjogdHJ1ZSwg cGxhY2Vob2xkZXI6ICd7eyBfKCdTZWxlY3QgY29sdW1ucyB0byBpZ25vcmUu Li4nKSB9fSd9LAorICAgICAgfSwKKyAgICAgIHsKKyAgICAgICAgdHlwZTog J25lc3RlZCcsIGNvbnRyb2w6ICdmaWVsZHNldCcsIGxhYmVsOiAne3sgXygn TWlzY2VsbGFuZW91cycpIH19JywKKyAgICAgICAgZ3JvdXA6ICd7eyBfKCdP cHRpb25zJykgfX0nLAorICAgICAgICBzY2hlbWE6W3sKKyAgICAgICAgICBp ZDogJ29pZCcsIGxhYmVsOid7eyBfKCdPSUQnKSB9fScsIGNlbGw6ICdzdHJp bmcnLAorICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBncm91cDogJ3t7IF8o J01pc2NlbGxhbmVvdXMnKSB9fScKKyAgICAgICAgfSx7CisgICAgICAgICAg aWQ6ICdoZWFkZXInLCBsYWJlbDone3sgXygnSGVhZGVyJykgfX0nLCBjZWxs OiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgZ3JvdXA6 ICd7eyBfKCdNaXNjZWxsYW5lb3VzJykgfX0nLCBkZXBzOiBbJ2Zvcm1hdCdd LCBkaXNhYmxlZDogJ2lzRGlzYWJsZWQnCisgICAgICAgIH0seworICAgICAg ICAgIGlkOiAnZGVsaW1pdGVyJywgbGFiZWw6J3t7IF8oJ0RlbGltaXRlcicp IH19JywgY2VsbDogJ3N0cmluZycsIGZpcnN0X2VtcHR5OiB0cnVlLCBkZXBz OiBbJ2Zvcm1hdCddLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgY29udHJv bDogJ25vZGUtYWpheC1vcHRpb25zJywgZ3JvdXA6ICd7eyBfKCdNaXNjZWxs YW5lb3VzJykgfX0nLCBkaXNhYmxlZDogJ2lzRGlzYWJsZWQnLAorICAgICAg ICAgIG9wdGlvbnM6WworCisgICAgICAgICAgICB7J2xhYmVsJzogJzsnLCAn dmFsdWUnOiAnOyd9LAorICAgICAgICAgICAgeydsYWJlbCc6ICcsJywgJ3Zh bHVlJzogJywnfSwKKyAgICAgICAgICAgIHsnbGFiZWwnOiAnfCcsICd2YWx1 ZSc6ICd8J30sCisgICAgICAgICAgICB7J2xhYmVsJzogJ1t0YWJdJywgJ3Zh bHVlJzogJ1t0YWJdJ30sCisKKyAgICAgICAgICBdLAorICAgICAgICAgIHNl bGVjdDI6IHsKKyAgICAgICAgICAgIGFsbG93Q2xlYXI6IGZhbHNlLAorICAg ICAgICAgICAgd2lkdGg6ICIxMDAlIiwKKyAgICAgICAgICAgIHBsYWNlaG9s ZGVyOiAne3sgXygnU2VsZWN0IGZyb20gbGlzdC4uLicpIH19JworICAgICAg ICAgIH0sCisgICAgICAgIH1dCisgICAgICB9LAorICAgICAgeworICAgICAg ICB0eXBlOiAnbmVzdGVkJywgY29udHJvbDogJ2ZpZWxkc2V0JywgbGFiZWw6 ICd7eyBfKCdRdW90ZScpIH19JywKKyAgICAgICAgZ3JvdXA6ICd7eyBfKCdP cHRpb25zJykgfX0nLAorICAgICAgICBzY2hlbWE6W3sKKyAgICAgICAgICBp ZDogJ3F1b3RlJywgbGFiZWw6J3t7IF8oJ1F1b3RlJykgfX0nLCBjZWxsOiAn c3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAndGV4dCcsIGNvbnRyb2w6ICdu b2RlLWFqYXgtb3B0aW9ucycsIGdyb3VwOiAne3sgXygnUXVvdGUnKSB9fScs CisgICAgICAgICAgZGlzYWJsZWQ6ICdpc0Rpc2FibGVkJywgZGVwczogWydm b3JtYXQnXSwgZmlyc3RfZW1wdHk6IHRydWUsCisgICAgICAgICAgb3B0aW9u czpbCisgICAgICAgICAgICB7J2xhYmVsJzogJ1wiJywgJ3ZhbHVlJzogJ1wi J30sCisgICAgICAgICAgICB7J2xhYmVsJzogJ1wnJywgJ3ZhbHVlJzogJ1wn J30sCisgICAgICAgICAgXSwKKyAgICAgICAgICBzZWxlY3QyOiB7CisgICAg ICAgICAgICBhbGxvd0NsZWFyOiBmYWxzZSwKKyAgICAgICAgICAgIHdpZHRo OiAiMTAwJSIsCisgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ3t7IF8oJ1Nl bGVjdCBmcm9tIGxpc3QuLi4nKSB9fScKKyAgICAgICAgICB9LAorICAgICAg ICB9LHsKKyAgICAgICAgICBpZDogJ2VzY2FwZScsIGxhYmVsOid7eyBfKCdF c2NhcGUnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6 ICd0ZXh0JywgY29udHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywgZ3JvdXA6 ICd7eyBfKCdRdW90ZScpIH19JywKKyAgICAgICAgICBkaXNhYmxlZDogJ2lz RGlzYWJsZWQnLCBkZXBzOiBbJ2Zvcm1hdCddLCBmaXJzdF9lbXB0eTogdHJ1 ZSwKKyAgICAgICAgICBvcHRpb25zOlsKKyAgICAgICAgICAgIHsnbGFiZWwn OiAnXCInLCAndmFsdWUnOiAnXCInfSwKKyAgICAgICAgICAgIHsnbGFiZWwn OiAnXCcnLCAndmFsdWUnOiAnXCcnfSwKKyAgICAgICAgICBdLAorICAgICAg ICAgIHNlbGVjdDI6IHsKKyAgICAgICAgICAgIGFsbG93Q2xlYXI6IGZhbHNl LAorICAgICAgICAgICAgd2lkdGg6ICIxMDAlIiwKKyAgICAgICAgICAgIHBs YWNlaG9sZGVyOiAne3sgXygnU2VsZWN0IGZyb20gbGlzdC4uLicpIH19Jwor ICAgICAgICAgIH0sCisgICAgICAgIH1dCisgICAgICB9CisgICAgXSwKKwor ICAgIC8vIEVuYWJsZS9EaXNhYmxlIHRoZSBpdGVtcyBiYXNlZCBvbiB0aGUg dXNlciBmaWxlIGZvcm1hdCBzZWxlY3Rpb24KKyAgICBpc0Rpc2FibGVkOiBm dW5jdGlvbihtKSB7CisgICAgICBuYW1lID0gdGhpcy5uYW1lOworICAgICAg c3dpdGNoKG5hbWUpIHsKKyAgICAgICAgY2FzZSAncXVvdGUnOgorICAgICAg ICBjYXNlICdlc2NhcGUnOgorICAgICAgICBjYXNlICdoZWFkZXInOgorICAg ICAgICBjYXNlICdpZ25vcmVfY29sdW1uJzoKKyAgICAgICAgICBpZiAobS5n ZXQoJ2Zvcm1hdCcpICE9ICdjc3YnKSB7CisgICAgICAgICAgICByZXR1cm4g dHJ1ZTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAg ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfQorICAgICAgICAgIGJy ZWFrOworICAgICAgICBjYXNlICdudWxsX3N0cmluZyc6CisgICAgICAgIGNh c2UgJ2RlbGltaXRlcic6CisgICAgICAgICAgaWYgKG0uZ2V0KCdmb3JtYXQn KSA9PSAnYmluYXJ5JykgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg ICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAg ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg ICB9CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSwKKyAgICBpc1NlbGVj dFZpc2libGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgIG5hbWUgPSB0aGlzLm5h bWU7CisgICAgICBzd2l0Y2gobmFtZSkgeworICAgICAgICBjYXNlICdmaWxl bmFtZSc6CisgICAgICAgICAgaWYgKG0uZ2V0KCdpc19pbXBvcnQnKSkgewor ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgfQorICAgICAg ICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg ICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAg ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgICByZXR1cm4g ZmFsc2U7CisgICAgfSwKKyAgICBpc0NyZWF0ZVZpc2libGU6IGZ1bmN0aW9u KG0pIHsKKyAgICAgIG5hbWUgPSB0aGlzLm5hbWU7CisgICAgICBzd2l0Y2go bmFtZSkgeworICAgICAgICBjYXNlICdmaWxlbmFtZSc6CisgICAgICAgICAg aWYgKG0uZ2V0KCdpc19pbXBvcnQnKSkgeworICAgICAgICAgICAgcmV0dXJu IGZhbHNlOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAg ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgIH0KKyAgICAgICAgZGVm YXVsdDoKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAg ICByZXR1cm4gZmFsc2U7CisgICAgfSwKKyAgfSk7CisKKyAgcGdUb29scy5p bXBvcnRfdXRpbGl0eSA9IHsKKyAgICAgIGluaXQ6IGZ1bmN0aW9uKCkgewor ICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBpbml0aWFsaXplIHRoZSBt b2R1bGUgbXVsdGlwbGUgdGltZXMuCisgICAgICAgIGlmICh0aGlzLmluaXRp YWxpemVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMu aW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgICAgIC8qKgorICAgICAgICAg RW5hYmxlL2Rpc2FibGUgaW1wb3J0IG1lbnUgaW4gdG9vbHMgYmFzZWQgb24g bm9kZSBzZWxlY3RlZAorICAgICAgICAgSW1wb3J0IG1lbnUgd2lsbCBiZSBl bmFibGVkIG9ubHkgd2hlbiB1c2VyIHNlbGVjdCB0YWJsZSBub2RlLgorICAg ICAgICAqLworICAgICAgICBtZW51X2VuYWJsZWQgPSBmdW5jdGlvbihpdGVt RGF0YSwgaXRlbSwgZGF0YSkgeworICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dz ZXIudHJlZSwgaSA9IGl0ZW0sIGQgPSBpdGVtRGF0YTsKKyAgICAgICAgIHZh ciBwYXJlbnRfaXRlbSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSk6 IG51bGwsCisgICAgICAgICAgICAgcGFyZW50X2RhdGEgPSBwYXJlbnRfaXRl bSA/IHQuaXRlbURhdGEocGFyZW50X2l0ZW0pIDogbnVsbDsKKyAgICAgICAg ICAgaWYoIV8uaXNVbmRlZmluZWQoZCkgJiYgIV8uaXNOdWxsKGQpICYmICFf LmlzTnVsbChwYXJlbnRfZGF0YSkpCisgICAgICAgICAgICAgcmV0dXJuICgK KyAgICAgICAgICAgICAgIChfLmluZGV4T2YoWyd0YWJsZSddLCBkLl90eXBl KSAhPT0gLTEgJiYKKyAgICAgICAgICAgICAgIHBhcmVudF9kYXRhLl90eXBl ICE9ICdjYXRhbG9nJykgPyB0cnVlOiBmYWxzZQorICAgICAgICAgICAgICk7 CisgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7 CisgICAgICAgIH07CisKKyAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgY29u dGV4dCBtZW51IHRvIGRpc3BsYXkgdGhlIGltcG9ydCBvcHRpb25zIHdoZW4g dXNlciBvcGVuIHRoZSBjb250ZXh0IG1lbnUgZm9yIHRhYmxlCisgICAgICAg IHBnQnJvd3Nlci5hZGRfbWVudXMoW3sKKyAgICAgICAgICBuYW1lOiAnaW1w b3J0Jywgbm9kZTogJ3RhYmxlJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAg IGFwcGxpZXM6IFsndG9vbHMnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ2Nh bGxiYWNrX2ltcG9ydCcsCisgICAgICAgICAgY2F0ZWdvcnk6ICdpbXBvcnQn LCBwcmlvcml0eTogMTAsIGxhYmVsOiAne3sgXygnSW1wb3J0Li4uJykgfX0n LAorICAgICAgICAgIGRhdGE6IHtvYmplY3Q6ICd0YWJsZScsIHR5cGU6ICdp bXBvcnQnfSwgaWNvbjogJ2ZhIGZhLXNpZ24taW4nLCBlbmFibGU6IG1lbnVf ZW5hYmxlZAorICAgICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAnZXhwb3J0 Jywgbm9kZTogJ3RhYmxlJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFw cGxpZXM6IFsndG9vbHMnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ2NhbGxi YWNrX2ltcG9ydCcsCisgICAgICAgICAgY2F0ZWdvcnk6ICdleHBvcnQnLCBw cmlvcml0eTogMTEsIGxhYmVsOiAne3sgXygnRXhwb3J0Li4uJykgfX0nLAor ICAgICAgICAgIGRhdGE6IHtvYmplY3Q6ICd0YWJsZScsIHR5cGU6ICdleHBv cnQnfSwgaWNvbjogJ2ZhIGZhLXNpZ24tb3V0JywgZW5hYmxlOiBtZW51X2Vu YWJsZWQKKyAgICAgICAgfQorICAgICAgICBdKTsKKyAgICAgIH0sCisKKyAg ICAgIC8qCisgICAgICAgIE9wZW4gdGhlIGRpYWxvZyBmb3IgdGhlIGltcG9y dCBmdW5jdGlvbmFsaXR5CisgICAgICAqLworICAgICAgY2FsbGJhY2tfaW1w b3J0OiBmdW5jdGlvbihhcmdzLCBpdGVtKSB7CisgICAgICAgIHZhciBzZWxm ID0gdGhpczsKKyAgICAgICAgdmFyIGlucHV0ID0gYXJncyB8fCB7fSwKKyAg ICAgICAgICAgIHQgPSBwZ0Jyb3dzZXIudHJlZSwKKyAgICAgICAgICAgIGkg PSBpdGVtIHx8IHQuc2VsZWN0ZWQoKSwKKyAgICAgICAgICAgIGQgPSBpICYm IGkubGVuZ3RoID09IDEgPyB0Lml0ZW1EYXRhKGkpIDogdW5kZWZpbmVkLAor ICAgICAgICAgICAgbm9kZSA9IGQgJiYgcGdCcm93c2VyLk5vZGVzW2QuX3R5 cGVdOworCisgICAgICAgIGlmICghZCkKKyAgICAgICAgICByZXR1cm47CisK KyAgICAgICAgdmFyIG9iak5hbWUgPSBkLmxhYmVsOworICAgICAgICB2YXIg dHJlZUluZm8gPSBub2RlLmdldFRyZWVOb2RlSGllcmFyY2h5LmFwcGx5KG5v ZGUsIFtpXSk7CisgICAgICAgIHZhciBpc0ltcG9ydCA9IChhcmdzLnR5cGUg PT0gImltcG9ydCIpID8gdHJ1ZTogZmFsc2U7CisKKyAgICAgICAgaWYgKCFB bGVydGlmeS5JbXBvcnREaWFsb2cpIHsKKyAgICAgICAgICBBbGVydGlmeS5k aWFsb2coJ0ltcG9ydERpYWxvZycsIGZ1bmN0aW9uIGZhY3RvcnkoKSB7CisK KyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgIG1haW46ZnVu Y3Rpb24odGl0bGUsIHBnX2ltcG9ydCwgbm9kZSwgaXRlbSwgZGF0YSkgewor ICAgICAgICAgICAgICAgIHRoaXMuc2V0KCd0aXRsZScsIHRpdGxlKTsKKyAg ICAgICAgICAgICAgICB0aGlzLnNldHRpbmcoJ3BnX2ltcG9ydCcsIHBnX2lt cG9ydCk7CisgICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nKCdwZ19ub2Rl Jywgbm9kZSk7CisgICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nKCdwZ19p dGVtJywgaXRlbSk7CisgICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nKCdw Z19pdGVtX2RhdGEnLCBkYXRhKTsKKyAgICAgICAgICAgICAgfSwKKyAgICAg ICAgICAgICAgc2V0dXA6ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg cmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6W3sgdGV4dDog Int7IF8oJ09LJykgfX0iLCBrZXk6IDI3LCBjbGFzc05hbWU6ICJidG4gYnRu LXByaW1hcnkgZmEgZmEtbGcgZmEtc2F2ZSBwZy1hbGVydGlmeS1idXR0b24i IH0sCisgICAgICAgICAgICAgICAgICAgICAgIHsgdGV4dDogInt7IF8oJ0Nh bmNlbCcpIH19Iiwga2V5OiAyNywgY2xhc3NOYW1lOiAiYnRuIGJ0bi1kYW5n ZXIgZmEgZmEtbGcgZmEtdGltZXMgcGctYWxlcnRpZnktYnV0dG9uIiB9XSwK KyAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsgbW9kYWw6IDB9CisgICAg ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg ICAgc2V0dGluZ3M6IHsKKyAgICAgICAgICAgICAgICBwZ19pbXBvcnQ6IHRy dWUsCisgICAgICAgICAgICAgICAgcGdfbm9kZTogbnVsbCwKKyAgICAgICAg ICAgICAgICBwZ19pdGVtOiBudWxsLAorICAgICAgICAgICAgICAgIHBnX2l0 ZW1fZGF0YTogbnVsbAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg ICAvLyBDYWxsYmFjayBmdW5jdGlvbnMgd2hlbiBjbGljayBvbiB0aGUgYnV0 dG9ucyBvZiB0aGUgQWxlcnRpZnkgZGlhbG9ncworICAgICAgICAgICAgICBj YWxsYmFjazogZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgIGlmIChl LmJ1dHRvbi50ZXh0ID09PSAie3sgXygnT0snKSB9fSIpIHsKKworICAgICAg ICAgICAgICAgICAgdmFyIG4gPSB0aGlzLnNldHRpbmdzWydwZ19ub2RlJ10s CisgICAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLnNldHRpbmdzWydwZ19p dGVtJ10sCisgICAgICAgICAgICAgICAgICAgIHRyZWVJbmZvID0gbi5nZXRU cmVlTm9kZUhpZXJhcmNoeS5hcHBseShuLCBbaV0pCisKKyAgICAgICAgICAg ICAgICAgIHRoaXMudmlldy5tb2RlbC5zZXQoeworICAgICAgICAgICAgICAg ICAgICAnZGF0YWJhc2UnOiB0cmVlSW5mby5kYXRhYmFzZS5sYWJlbCwKKyAg ICAgICAgICAgICAgICAgICAgJ3NjaGVtYSc6IHRyZWVJbmZvLnNjaGVtYS5s YWJlbCwKKyAgICAgICAgICAgICAgICAgICAgJ3RhYmxlJzogdHJlZUluZm8u dGFibGUubGFiZWwKKyAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg ICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAorICAgICAgICAgICAgICAgICAg ICAgIGJhc2VVcmwgPSAie3sgdXJsX2ZvcignaW1wb3J0LmluZGV4JykgfX0i ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICJjcmVhdGVfam9iLyIgKyB0 cmVlSW5mby5zZXJ2ZXIuX2lkLAorICAgICAgICAgICAgICAgICAgICAgIGFy Z3MgPSAgdGhpcy52aWV3Lm1vZGVsLnRvSlNPTigpOworCisgICAgICAgICAg ICAgICAgICAkLmFqYXgoeworICAgICAgICAgICAgICAgICAgICB1cmw6IGJh c2VVcmwsCisgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAor ICAgICAgICAgICAgICAgICAgICBkYXRhOnsgJ2RhdGEnOiBKU09OLnN0cmlu Z2lmeShhcmdzKSB9LAorICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBm dW5jdGlvbihyZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICBpZiAocmVz LnN1Y2Nlc3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFsZXJ0aWZ5 Lm1lc3NhZ2UoJ3t7IF8oJ0JhY2tncm91bmQgcHJvY2VzcyBmb3IgdGFraW5n IGltcG9ydC9leHBvcnQgaGFzIGJlZW4gY3JlYXRlZCEnKSB9fScsIDEpOwor ICAgICAgICAgICAgICAgICAgICAgICAgcGdCcm93c2VyLkV2ZW50cy50cmln Z2VyKCdwZ2FkbWluLWJncHJvY2VzczpjcmVhdGVkJywgc2VsZik7CisgICAg ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9LAor ICAgICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oeGhyLCBzdGF0 dXMsIGVycm9yKSB7CisgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAg ICAgICAgICAgICAgICAgICAgICAgIHZhciBlcnIgPSAkLnBhcnNlSlNPTih4 aHIucmVzcG9uc2VUZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFs ZXJ0aWZ5LmFsZXJ0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAne3sg XygnSW1wb3J0IGZhaWxlZC4uLicpIH19JywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgZXJyLmVycm9ybXNnCisgICAgICAgICAgICAgICAgICAgICAg ICApOworICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9Cisg ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIH0pOwor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfSwKKyAgICAgICAg ICAgICAgaG9va3M6IHsKKyAgICAgICAgICAgICAgICBvbmNsb3NlOiBmdW5j dGlvbigpIHsKKyAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpZXcpIHsK KyAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3LnJlbW92ZSh7ZGF0YTog dHJ1ZSwgaW50ZXJuYWw6IHRydWUsIHNpbGVudDogdHJ1ZX0pOworICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgfSwKKyAgICAgICAgICAgICAgcHJlcGFyZTpmdW5jdGlvbigpIHsKKyAg ICAgICAgICAgICAgICAvLyBNYWluIGltcG9ydCBtb2R1bGUgY29udGFpbmVy CisgICAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAorICAgICAgICAg ICAgICAgICAgICAkY29udGFpbmVyID0gJCgiPGRpdiBjbGFzcz0naW1wb3J0 X2RsZyc+PC9kaXY+IiksCisgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlz LnNldHRpbmdzLnBnX25vZGUsCisgICAgICAgICAgICAgICAgICAgIGkgPSB0 aGlzLnNldHRpbmdzLnBnX2l0ZW0sCisgICAgICAgICAgICAgICAgICAgIHRy ZWVJbmZvID0gbi5nZXRUcmVlTm9kZUhpZXJhcmNoeS5hcHBseShuLCBbaV0p LAorICAgICAgICAgICAgICAgICAgICBuZXdNb2RlbCA9IG5ldyBJbXBvcnRF eHBvcnRNb2RlbCAoeworICAgICAgICAgICAgICAgICAgICAgICdpc19pbXBv cnQnOiB0aGlzLnNldHRpbmdzWydwZ19pbXBvcnQnXQorICAgICAgICAgICAg ICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgICAgICAgbm9kZV9pbmZv OiB0cmVlSW5mbworICAgICAgICAgICAgICAgICAgICB9KSwKKyAgICAgICAg ICAgICAgICAgICAgZmllbGRzID0gQmFja2Zvcm0uZ2VuZXJhdGVWaWV3U2No ZW1hKAorICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUluZm8sIG5ld01v ZGVsLCAnY3JlYXRlJywgbm9kZSwgdHJlZUluZm8uc2VydmVyLCB0cnVlCisg ICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIHZp ZXcgPSB0aGlzLnZpZXcgPSBuZXcgQmFja2Zvcm0uRGlhbG9nKHsKKyAgICAg ICAgICAgICAgICAgICAgICBlbDogJGNvbnRhaW5lciwgbW9kZWw6IG5ld01v ZGVsLCBzY2hlbWE6IGZpZWxkcworICAgICAgICAgICAgICAgICAgICB9KTsK KworICAgICAgICAgICAgICAgICQodGhpcy5lbGVtZW50cy5ib2R5LmNoaWxk Tm9kZXNbMF0pLmFkZENsYXNzKAorICAgICAgICAgICAgICAgICAgJ2FsZXJ0 aWZ5X3Rvb2xzX2RpYWxvZ19wcm9wZXJ0aWVzIG9ial9wcm9wZXJ0aWVzJwor ICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgdmlldy5yZW5k ZXIoKTsKKworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuY29udGVu dC5hcHBlbmRDaGlsZCgkY29udGFpbmVyLmdldCgwKSk7CisgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIH07CisgICAgICAgICAgfSk7CisgICAgICAg IH0KKworICAgICAgICAvLyBPcGVuIHRoZSBBbGVydGlmeSBkaWFsb2cgZm9y IHRoZSBpbXBvcnQvZXhwb3J0IG1vZHVsZQorICAgICAgICBBbGVydGlmeS5J bXBvcnREaWFsb2coCisgICAgICAgICAgICBTKAorICAgICAgICAgICAgICAi e3sgXygiSW1wb3J0L0V4cG9ydCBkYXRhIHRvL2Zyb20gZmlsZS90YWJsZSAt ICclJXMnIikgfX0iCisgICAgICAgICAgICApLnNwcmludGYodHJlZUluZm8u dGFibGUubGFiZWwpLnZhbHVlKCksIGlzSW1wb3J0LCBub2RlLCBpLCBkCisg ICAgICAgICApLnNldCgncmVzaXphYmxlJyx0cnVlKS5yZXNpemVUbygnNjAl JywnNzAlJyk7CisgICAgICB9CisgICAgfTsKKworICAgIHJldHVybiBwZ0Fk bWluLlRvb2xzLmltcG9ydF91dGlsaXR5OworICB9KTsK --001a11409dae2548b20533047327 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --001a11409dae2548b20533047327--