Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ayKZj-0004Fl-0a for pgadmin-hackers@arkaria.postgresql.org; Thu, 05 May 2016 14:48:23 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1ayKZi-0000xq-Dw for pgadmin-hackers@arkaria.postgresql.org; Thu, 05 May 2016 14:48:22 +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 1ayKZe-0000rt-D6 for pgadmin-hackers@postgresql.org; Thu, 05 May 2016 14:48:18 +0000 Received: from mail-vk0-x22e.google.com ([2607:f8b0:400c:c05::22e]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1ayKZW-00066c-Dp for pgadmin-hackers@postgresql.org; Thu, 05 May 2016 14:48:17 +0000 Received: by mail-vk0-x22e.google.com with SMTP id m188so28256323vka.1 for ; Thu, 05 May 2016 07:48:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:date:message-id:subject:from:to; bh=PdrPsuACP6styXDoWQdsMUNCCqsNgWDCmRHqSOX4Q7I=; b=p/t7V9GivvReJrsNcLjEojEsxuMA5iqOPKFFAsVJpmxCe/OFAjfKxcBuKMEbKh3c8g pmIvs9MJdlO9is+YUahZqxMghlaWQwFGuz0ITiw+KvlEcRQ3HcKukzYU3GbgtJ2XBmH3 H3MjwkvXKeTiAP4ZBFgb3iYCgBEJwGNUhjuFrL/w0q1x0in+cSQzu58uhhPHrkWDhmWO OZI0cEWrXBDnWhDNNVVZTbQSve8h10y3A91DC9Qxm1REv17cO8bgdiVIaS2V8dlSqd1Z gpq5HQEOXAW9805bx+NecSaqom0UcbH+7ItmoRyQABpGqi8OECxyY7bpejSvhY6rJxUY 1lyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to; bh=PdrPsuACP6styXDoWQdsMUNCCqsNgWDCmRHqSOX4Q7I=; b=l+izNfZbt9QUC6EEDhCBlnSV+AKjTdOc27yORY0x4ykYD6JOXNe7le/YUdF0oTjabc reVqoBiPBC56fK86JjkCy81V+fmBRTlXoyBryyS5jBlKC50BQjkeSS62+8X6dzs5Lb1T fqBQrAw/LWPzSWW90jU2C23cs1LcfaCdB/c6kX/3K4D4vJUWrk4LwPpJhJyx8xq/in4N ESoJW6T5neLMJ0VpQL8PmQZTdyK/ENxOA0MuIXcZIvN+K3tR/8v+kDe9hPz9VP+VDOeO enhlBVAYCzwVpAAML/V0URHv4Va8SYlmGdeEcdgFidkBVqwfQYCCi1U3zYvxDBgcv+q5 D5UQ== X-Gm-Message-State: AOPr4FUneeDC+EJE0UT5/RT+MiLUtOMwc9mNQ2j2v593MEZp4rhsD7GcoRzU2J27gxxvDyBVQoZeuBWwFA8rmaHP MIME-Version: 1.0 X-Received: by 10.31.203.199 with SMTP id b190mr2594918vkg.84.1462459689287; Thu, 05 May 2016 07:48:09 -0700 (PDT) Received: by 10.31.189.70 with HTTP; Thu, 5 May 2016 07:48:09 -0700 (PDT) Date: Thu, 5 May 2016 20:18:09 +0530 Message-ID: Subject: PATCH: FTS configuration node From: Sanket Mehta To: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a114dcc5e477a920532196e3c 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 --001a114dcc5e477a920532196e3c Content-Type: multipart/alternative; boundary=001a114dcc5e477a8d0532196e3a --001a114dcc5e477a8d0532196e3a Content-Type: text/plain; charset=UTF-8 Hi, PFA first patch for FTS configuration node. It depends upon backgrid select2cell multi select control, for which Harshal has sent the patch recently. Please do apply his patch first and then apply this patch. Please do review it and let me know if any changes are required. Regards, Sanket Mehta Sr Software engineer Enterprisedb --001a114dcc5e477a8d0532196e3a Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

PFA first patch for FTS configurati= on node.

It depends upon backgrid select2cell mult= i select control, for which Harshal has sent the patch recently.
= Please do apply his patch first and then apply this patch.

Please do review it and let me know if any changes are required.


Regards,
Sanket Mehta
Sr Software enginee= r
Enterprisedb
--001a114dcc5e477a8d0532196e3a-- --001a114dcc5e477a920532196e3c Content-Type: text/x-patch; charset=US-ASCII; name="FTS_configuration.patch" Content-Disposition: attachment; filename="FTS_configuration.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_inuenvyi0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9u cy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0 aW9ucy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi40YjZmNTc1Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL19faW5pdF9fLnB5CkBAIC0wLDAg KzEsOTQ2IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIwor IyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdo dCAoQykgMjAxNiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBU aGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FM IExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK KyIiIkRlZmluZXMgdmlld3MgZm9yIG1hbmFnZW1lbnQgb2YgRnRzIENvbmZp Z3VyYXRpb24gbm9kZSIiIgorCitpbXBvcnQganNvbgorZnJvbSBmbGFzayBp bXBvcnQgcmVuZGVyX3RlbXBsYXRlLCBtYWtlX3Jlc3BvbnNlLCBjdXJyZW50 X2FwcCwgcmVxdWVzdCwganNvbmlmeQorZnJvbSBmbGFzay5leHQuYmFiZWwg aW1wb3J0IGdldHRleHQgYXMgXworZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXgg aW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwgXAorICAgIG1ha2VfcmVzcG9u c2UgYXMgYWpheF9yZXNwb25zZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9yLCBn b25lCitmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBvcnQgUEdDaGls ZE5vZGVWaWV3Citmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBz LnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudXRpbHMgXAorICAgIGltcG9y dCBTY2hlbWFDaGlsZE1vZHVsZQorZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2Vy dmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcyBpbXBvcnQgRGF0YWJhc2VN b2R1bGUKK2ltcG9ydCBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5z ZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzIGFzIHNjaGVtYXMKK2Zyb20gcGdh ZG1pbi51dGlscy5hamF4IGltcG9ydCBwcmVjb25kaXRpb25fcmVxdWlyZWQK K2Zyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIK K2Zyb20gY29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgorZnJvbSBm dW5jdG9vbHMgaW1wb3J0IHdyYXBzCisKKworY2xhc3MgRnRzQ29uZmlndXJh dGlvbk1vZHVsZShTY2hlbWFDaGlsZE1vZHVsZSk6CisgICAgIiIiCisgICAg IGNsYXNzIEZ0c0NvbmZpZ3VyYXRpb25Nb2R1bGUoU2NoZW1hQ2hpbGRNb2R1 bGUpCisKKyAgICAgICAgQSBtb2R1bGUgY2xhc3MgZm9yIEZUUyBDb25maWd1 cmF0aW9uIG5vZGUgZGVyaXZlZCBmcm9tIFNjaGVtYUNoaWxkTW9kdWxlLgor CisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiBfX2luaXRfXygq YXJncywgKiprd2FyZ3MpCisgICAgICAtIE1ldGhvZCBpcyB1c2VkIHRvIGlu aXRpYWxpemUgdGhlIEZ0c0NvbmZpZ3VyYXRpb25Nb2R1bGUgYW5kCisgICAg ICAgIGl0J3MgYmFzZSBtb2R1bGUuCisKKyAgICAqIGdldF9ub2RlcyhnaWQs IHNpZCwgZGlkLCBzY2lkKQorICAgICAgLSBNZXRob2QgaXMgdXNlZCB0byBn ZW5lcmF0ZSB0aGUgYnJvd3NlciBjb2xsZWN0aW9uIG5vZGUuCisKKyAgICAq IG5vZGVfaW5vZGUoKQorICAgICAgLSBNZXRob2QgaXMgb3ZlcnJpZGRlbiBm cm9tIGl0cyBiYXNlIGNsYXNzIHRvIG1ha2UgdGhlIG5vZGUgYXMgbGVhZiBu b2RlCisKKyAgICAqIHNjcmlwdF9sb2FkKCkKKyAgICAgIC0gTG9hZCB0aGUg bW9kdWxlIHNjcmlwdCBmb3IgRlRTIENvbmZpZ3VyYXRpb24sIHdoZW4gYW55 IG9mIHRoZSBzY2hlbWEKKyAgICAgIG5vZGUgaXMgaW5pdGlhbGl6ZWQuCisg ICAgIiIiCisgICAgTk9ERV9UWVBFID0gJ2Z0c19jb25maWd1cmF0aW9uJwor ICAgIENPTExFQ1RJT05fTEFCRUwgPSBfKCdGVFMgQ29uZmlndXJhdGlvbnMn KQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6 CisgICAgICAgIHNlbGYubWluX3ZlciA9IE5vbmUKKyAgICAgICAgc2VsZi5t YXhfdmVyID0gTm9uZQorICAgICAgICBzZWxmLm1hbmFnZXIgPSBOb25lCisg ICAgICAgIHN1cGVyKEZ0c0NvbmZpZ3VyYXRpb25Nb2R1bGUsIHNlbGYpLl9f aW5pdF9fKCphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiBnZXRfbm9kZXMo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIiIgorICAg ICAgICBHZW5lcmF0ZSB0aGUgY29sbGVjdGlvbiBub2RlCisgICAgICAgIDpw YXJhbSBnaWQ6IGdyb3VwIGlkCisgICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZl ciBpZAorICAgICAgICA6cGFyYW0gZGlkOiBkYXRhYmFzZSBpZAorICAgICAg ICA6cGFyYW0gc2NpZDogc2NoZW1hIGlkCisgICAgICAgICIiIgorICAgICAg ICB5aWVsZCBzZWxmLmdlbmVyYXRlX2Jyb3dzZXJfY29sbGVjdGlvbl9ub2Rl KHNjaWQpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbm9kZV9pbm9kZShz ZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIE92ZXJyaWRlIHRoZSBwcm9w ZXJ0eSB0byBtYWtlIHRoZSBub2RlIGFzIGxlYWYgbm9kZQorICAgICAgICAi IiIKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBAcHJvcGVydHkKKyAg ICBkZWYgc2NyaXB0X2xvYWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAg ICBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBmdHMgdGVtcGxhdGUsIHdo ZW4gYW55IG9mIHRoZSBzY2hlbWEKKyAgICAgICAgbm9kZSBpcyBpbml0aWFs aXplZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBEYXRhYmFzZU1v ZHVsZS5OT0RFX1RZUEUKKworCitibHVlcHJpbnQgPSBGdHNDb25maWd1cmF0 aW9uTW9kdWxlKF9fbmFtZV9fKQorCisKK2NsYXNzIEZ0c0NvbmZpZ3VyYXRp b25WaWV3KFBHQ2hpbGROb2RlVmlldyk6CisgICAgIiIiCisgICAgY2xhc3Mg RnRzQ29uZmlndXJhdGlvblZpZXcoUEdDaGlsZE5vZGVWaWV3KQorCisgICAg ICAgIEEgdmlldyBjbGFzcyBmb3IgRlRTIENvbmZpZ3VyYXRpb24gbm9kZSBk ZXJpdmVkIGZyb20gUEdDaGlsZE5vZGVWaWV3LgorICAgICAgICBUaGlzIGNs YXNzIGlzIHJlc3BvbnNpYmxlIGZvciBhbGwgdGhlIHN0dWZmIHJlbGF0ZWQg dG8gdmlldyBsaWtlCisgICAgICAgIGNyZWF0ZS91cGRhdGUvZGVsZXRlIEZU UyBDb25maWd1cmF0aW9uLAorICAgICAgICBzaG93aW5nIHByb3BlcnRpZXMg b2Ygbm9kZSwgc2hvd2luZyBzcWwgaW4gc3FsIHBhbmUuCisKKyAgICBNZXRo b2RzOgorICAgIC0tLS0tLS0KKyAgICAqIF9faW5pdF9fKCoqa3dhcmdzKQor ICAgICAgLSBNZXRob2QgaXMgdXNlZCB0byBpbml0aWFsaXplIHRoZSBGdHND b25maWd1cmF0aW9uVmlldyBhbmQgaXQncyBiYXNlIHZpZXcuCisKKyAgICAq IG1vZHVsZV9qcygpCisgICAgICAtIFRoaXMgcHJvcGVydHkgZGVmaW5lcyAo aWYgamF2YXNjcmlwdCkgZXhpc3RzIGZvciB0aGlzIG5vZGUuCisgICAgICAg IE92ZXJyaWRlIHRoaXMgcHJvcGVydHkgZm9yIHlvdXIgb3duIGxvZ2ljCisK KyAgICAqIGNoZWNrX3ByZWNvbmRpdGlvbigpCisgICAgICAtIFRoaXMgZnVu Y3Rpb24gd2lsbCBiZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBj aGVja3MKKyAgICAgICAgZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUgcnVu bmluZyB2aWV3LCBpdCB3aWxsIGFsc28gYXR0YWNoZXMKKyAgICAgICAgbWFu YWdlcixjb25uICYgdGVtcGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNlbGYK KworICAgICogdG9rZW5pemVfb3B0aW9ucyhzZWxmLCBvcHRpb25fdmFsdWUp OgorICAgIC0gICBUaGlzIGZ1bmN0aW9uIHdpbGwgdG9rZW5pemUgdGhlIHN0 cmluZyBzdG9yZWQgaW4gZGF0YWJhc2UKKyAgICAgICAgZS5nLiBkYXRhYmFz ZSBzdG9yZSB0aGUgdmFsdWUgYXMgYmVsb3cKKyAgICAgICAga2V5MT12YWx1 ZTEsIGtleTI9dmFsdWUyLCBrZXkzPXZhbHVlMywgLi4uLgorICAgICAgICBU aGlzIGZ1bmN0aW9uIHdpbGwgZXh0cmFjdCBrZXkgYW5kIHZhbHVlIGZyb20g YWJvdmUgc3RyaW5nCisKKyAgICAqIGxpc3QoKQorICAgICAgLSBUaGlzIGZ1 bmN0aW9uIGlzIHVzZWQgdG8gbGlzdCBhbGwgdGhlICBub2RlcyB3aXRoaW4g dGhhdCBjb2xsZWN0aW9uLgorCisgICAgKiBub2RlcygpCisgICAgICAtIFRo aXMgZnVuY3Rpb24gd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZSBhbGwgdGhlIGNo aWxkIG5vZGUgd2l0aGluIGNvbGxlY3Rpb24uCisgICAgICAgIEhlcmUgaXQg d2lsbCBjcmVhdGUgYWxsIHRoZSBGVFMgQ29uZmlndXJhdGlvbiBub2Rlcy4K KworICAgICogbm9kZSgpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBi ZSB1c2VkIHRvIGNyZWF0ZSBhIG5vZGUgZ2l2ZW4gaXRzIG9pZAorICAgICAg ICBIZXJlIGl0IHdpbGwgY3JlYXRlIHRoZSBGVFMgVGVtcGxhdGUgbm9kZSBi YXNlZCBvbiBpdHMgb2lkCisKKyAgICAqIHByb3BlcnRpZXMoZ2lkLCBzaWQs IGRpZCwgc2NpZCwgY2ZnaWQpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2ls bCBzaG93IHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBzZWxlY3RlZCBGVFMgQ29u ZmlndXJhdGlvbiBub2RlCisKKyAgICAqIGNyZWF0ZShnaWQsIHNpZCwgZGlk LCBzY2lkKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgY3JlYXRlIHRo ZSBuZXcgRlRTIENvbmZpZ3VyYXRpb24gb2JqZWN0CisKKyAgICAqIHVwZGF0 ZShnaWQsIHNpZCwgZGlkLCBzY2lkLCBjZmdpZCkKKyAgICAgIC0gVGhpcyBm dW5jdGlvbiB3aWxsIHVwZGF0ZSB0aGUgZGF0YSBmb3IgdGhlIHNlbGVjdGVk IEZUUyBDb25maWd1cmF0aW9uIG5vZGUKKworICAgICogZGVsZXRlKHNlbGYs IGdpZCwgc2lkLCBkaWQsIHNjaWQsIGNmZ2lkKToKKyAgICAgIC0gVGhpcyBm dW5jdGlvbiB3aWxsIGRyb3AgdGhlIEZUUyBDb25maWd1cmF0aW9uIG9iamVj dAorCisgICAgKiBtc3FsKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGNmZ2lkKQor ICAgICAgLSBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmV0dXJuIG1vZGlm aWVkIFNRTCBmb3IgdGhlIHNlbGVjdGVkIG5vZGUKKworICAgICogZ2V0X3Nx bChkYXRhLCBjZmdpZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGdl bmVyYXRlIHNxbCBmcm9tIG1vZGVsIGRhdGEKKworICAgICogc3FsKGdpZCwg c2lkLCBkaWQsIHNjaWQsIGNmZ2lkKToKKyAgICAgIC0gVGhpcyBmdW5jdGlv biB3aWxsIGdlbmVyYXRlIHNxbCB0byBzaG93IGluIHNxbCBwYW5lIGZvciBu b2RlLgorCisgICAgKiBwYXJzZXJzKGdpZCwgc2lkLCBkaWQsIHNjaWQpOgor ICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZmV0Y2ggYWxsIGZ0cCBwYXJz ZXJzIGZyb20gdGhlIHNhbWUgc2NoZW1hCisKKyAgICAqIGNvcHlDb25maWco KToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGZldGNoIGFsbCBleGlz dGVkIGZ0cyBjb25maWd1cmF0aW9ucyBmcm9tIHNhbWUgc2NoZW1hCisKKyAg ICAqIHRva2VucygpOgorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZmV0 Y2ggYWxsIHRva2VucyBmcm9tIGZ0cyBwYXJzZXIgcmVsYXRlZCB0byBub2Rl CisKKyAgICAqIGRpY3Rpb25hcmllcygpOgorICAgICAgLSBUaGlzIGZ1bmN0 aW9uIHdpbGwgZmV0Y2ggYWxsIGRpY3Rpb25hcmllcyByZWxhdGVkIHRvIG5v ZGUKKworICAgICogZGVwZW5kZW50cyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBj ZmdpZCk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gZ2V0IHRoZSBkZXBlbmRl bnRzIGFuZCByZXR1cm4gYWpheCByZXNwb25zZSBmb3IgdGhlIG5vZGUuCisK KyAgICAqIGRlcGVuZGVuY2llcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lk LCBjZmdpZCk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gZ2V0IHRoZSBkZXBl bmRlbmNpZXMgYW5kIHJldHVybiBhamF4IHJlc3BvbnNlIGZvciBub2RlLgor CisgICAgIiIiCisKKyAgICBub2RlX3R5cGUgPSBibHVlcHJpbnQubm9kZV90 eXBlCisKKyAgICBwYXJlbnRfaWRzID0gWworICAgICAgICB7J3R5cGUnOiAn aW50JywgJ2lkJzogJ2dpZCd9LAorICAgICAgICB7J3R5cGUnOiAnaW50Jywg J2lkJzogJ3NpZCd9LAorICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzog J2RpZCd9LAorICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3NjaWQn fQorICAgIF0KKyAgICBpZHMgPSBbCisgICAgICAgIHsndHlwZSc6ICdpbnQn LCAnaWQnOiAnY2ZnaWQnfQorICAgIF0KKworICAgIG9wZXJhdGlvbnMgPSBk aWN0KHsKKyAgICAgICAgJ29iaic6IFsKKyAgICAgICAgICAgIHsnZ2V0Jzog J3Byb3BlcnRpZXMnLCAnZGVsZXRlJzogJ2RlbGV0ZScsICdwdXQnOiAndXBk YXRlJ30sCisgICAgICAgICAgICB7J2dldCc6ICdsaXN0JywgJ3Bvc3QnOiAn Y3JlYXRlJ30KKyAgICAgICAgXSwKKyAgICAgICAgJ2NoaWxkcmVuJzogW3sK KyAgICAgICAgICAgICdnZXQnOiAnY2hpbGRyZW4nCisgICAgICAgIH1dLAor ICAgICAgICAnZGVsZXRlJzogW3snZGVsZXRlJzogJ2RlbGV0ZSd9XSwKKyAg ICAgICAgJ25vZGVzJzogW3snZ2V0JzogJ25vZGUnfSwgeydnZXQnOiAnbm9k ZXMnfV0sCisgICAgICAgICdzcWwnOiBbeydnZXQnOiAnc3FsJ31dLAorICAg ICAgICAnbXNxbCc6IFt7J2dldCc6ICdtc3FsJ30sIHsnZ2V0JzogJ21zcWwn fV0sCisgICAgICAgICdzdGF0cyc6IFt7J2dldCc6ICdzdGF0aXN0aWNzJ31d LAorICAgICAgICAnZGVwZW5kZW5jeSc6IFt7J2dldCc6ICdkZXBlbmRlbmNp ZXMnfV0sCisgICAgICAgICdkZXBlbmRlbnQnOiBbeydnZXQnOiAnZGVwZW5k ZW50cyd9XSwKKyAgICAgICAgJ21vZHVsZS5qcyc6IFt7fSwge30sIHsnZ2V0 JzogJ21vZHVsZV9qcyd9XSwKKyAgICAgICAgJ3BhcnNlcnMnOiBbeydnZXQn OiAncGFyc2Vycyd9LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7J2dl dCc6ICdwYXJzZXJzJ31dLAorICAgICAgICAnY29weUNvbmZpZyc6IFt7J2dl dCc6ICdjb3B5Q29uZmlnJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7J2dldCc6ICdjb3B5Q29uZmlnJ31dLAorICAgICAgICAndG9rZW5z JzogW3snZ2V0JzogJ3Rva2Vucyd9LCB7J2dldCc6ICd0b2tlbnMnfV0sCisg ICAgICAgICdkaWN0aW9uYXJpZXMnOiBbe30sIHsnZ2V0JzogJ2RpY3Rpb25h cmllcyd9XSwKKyAgICB9KQorCisgICAgZGVmIF9pbml0XyhzZWxmLCAqKmt3 YXJncyk6CisgICAgICAgIHNlbGYuY29ubiA9IE5vbmUKKyAgICAgICAgc2Vs Zi50ZW1wbGF0ZV9wYXRoID0gTm9uZQorICAgICAgICBzZWxmLm1hbmFnZXIg PSBOb25lCisgICAgICAgIHN1cGVyKEZ0c0NvbmZpZ3VyYXRpb25WaWV3LCBz ZWxmKS5fX2luaXRfXygqKmt3YXJncykKKworICAgIGRlZiBtb2R1bGVfanMo c2VsZik6CisgICAgICAgICIiIgorICAgICAgICBMb2FkIEpTIGZpbGUgKGZ0 c19jb25maWd1cmF0aW9uLmpzKSBmb3IgdGhpcyBtb2R1bGUuCisgICAgICAg ICIiIgorICAgICAgICByZXR1cm4gbWFrZV9yZXNwb25zZSgKKyAgICAgICAg ICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiZnRzX2Nv bmZpZ3VyYXRpb24vanMvZnRzX2NvbmZpZ3VyYXRpb24uanMiLAorICAgICAg ICAgICAgICAgIF89XworICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIDIw MCwgeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC1qYXZhc2NyaXB0 J30KKyAgICAgICAgKQorCisgICAgZGVmIGNoZWNrX3ByZWNvbmRpdGlvbihm KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBi ZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBjaGVja3MKKyAgICAg ICAgZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUgcnVubmluZyB2aWV3LCBp dCB3aWxsIGFsc28gYXR0YWNoZXMKKyAgICAgICAgbWFuYWdlcixjb25uICYg dGVtcGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNlbGYKKyAgICAgICAgIiIi CisKKyAgICAgICAgQHdyYXBzKGYpCisgICAgICAgIGRlZiB3cmFwKCphcmdz LCAqKmt3YXJncyk6CisgICAgICAgICAgICAjIEhlcmUgYXJnc1swXSB3aWxs IGhvbGQgc2VsZiAmIGt3YXJncyB3aWxsIGhvbGQgZ2lkLHNpZCxkaWQKKyAg ICAgICAgICAgIHNlbGYgPSBhcmdzWzBdCisgICAgICAgICAgICBzZWxmLm1h bmFnZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVSKS5jb25uZWN0 aW9uX21hbmFnZXIoCisgICAgICAgICAgICAgICAga3dhcmdzWydzaWQnXSkK KyAgICAgICAgICAgIHNlbGYuY29ubiA9IHNlbGYubWFuYWdlci5jb25uZWN0 aW9uKGRpZD1rd2FyZ3NbJ2RpZCddKQorICAgICAgICAgICAgIyBJZiBEQiBu b3QgY29ubmVjdGVkIHRoZW4gcmV0dXJuIGVycm9yIHRvIGJyb3dzZXIKKyAg ICAgICAgICAgIGlmIG5vdCBzZWxmLmNvbm4uY29ubmVjdGVkKCk6CisgICAg ICAgICAgICAgICAgcmV0dXJuIHByZWNvbmRpdGlvbl9yZXF1aXJlZCgKKyAg ICAgICAgICAgICAgICAgICAgXygiQ29ubmVjdGlvbiB0byB0aGUgc2VydmVy IGhhcyBiZWVuIGxvc3QhIikKKyAgICAgICAgICAgICAgICApCisgICAgICAg ICAgICAjIHdlIHdpbGwgc2V0IHRlbXBsYXRlIHBhdGggZm9yIHNxbCBzY3Jp cHRzIGRlcGVuZGluZyB1cG9uIHNlcnZlciB2ZXJzaW9uCisgICAgICAgICAg ICB2ZXIgPSBzZWxmLm1hbmFnZXIudmVyc2lvbgorICAgICAgICAgICAgaWYg dmVyID49IDkwMTAwOgorICAgICAgICAgICAgICAgIHNlbGYudGVtcGxhdGVf cGF0aCA9ICdmdHNfY29uZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMnCisgICAg ICAgICAgICByZXR1cm4gZigqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAg cmV0dXJuIHdyYXAKKworICAgIGRlZiB0b2tlbml6ZV9vcHRpb25zKHNlbGYs IG9wdGlvbl92YWx1ZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1 bmN0aW9uIHdpbGwgdG9rZW5pemUgdGhlIHN0cmluZyBzdG9yZWQgaW4gZGF0 YWJhc2UKKyAgICAgICAgZS5nLiBkYXRhYmFzZSBzdG9yZSB0aGUgdmFsdWUg YXMgYmVsb3cKKyAgICAgICAga2V5MT12YWx1ZTEsIGtleTI9dmFsdWUyLCBr ZXkzPXZhbHVlMywgLi4uLgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwg ZXh0cmFjdCBrZXkgYW5kIHZhbHVlIGZyb20gYWJvdmUgc3RyaW5nCisKKyAg ICAgICAgQXJnczoKKyAgICAgICAgICAgIG9wdGlvbl92YWx1ZToga2V5IHZh bHVlIG9wdGlvbi92YWx1ZSBwYWlyIHJlYWQgZnJvbSBkYXRhYmFzZQorICAg ICAgICAiIiIKKyAgICAgICAgaWYgb3B0aW9uX3ZhbHVlIGlzIG5vdCBOb25l OgorICAgICAgICAgICAgb3B0aW9uX3N0ciA9IG9wdGlvbl92YWx1ZS5zcGxp dCgnLCcpCisgICAgICAgICAgICBvcHRpb25zID0gW10KKyAgICAgICAgICAg IGZvciBmZHdfb3B0aW9uIGluIG9wdGlvbl9zdHI6CisgICAgICAgICAgICAg ICAgaywgdiA9IGZkd19vcHRpb24uc3BsaXQoJz0nLCAxKQorICAgICAgICAg ICAgICAgIG9wdGlvbnMuYXBwZW5kKHsndG9rZW4nOiBrLCAnZGljdG5hbWUn OiB2fSkKKyAgICAgICAgICAgIHJldHVybiBvcHRpb25zCisKKyAgICBAY2hl Y2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGxpc3Qoc2VsZiwgZ2lkLCBzaWQs IGRpZCwgc2NpZCk6CisgICAgICAgICIiIgorICAgICAgICBMaXN0IGFsbCBG VFMgQ29uZmlndXJhdGlvbiBub2Rlcy4KKworICAgICAgICBBcmdzOgorICAg ICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNp ZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisg ICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgIiIiCisKKyAg ICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10p LAorICAgICAgICAgICAgc2NpZD1zY2lkCisgICAgICAgICkKKyAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKwor ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAg IyBmb3Igcm93IGluIHJlc1sncm93cyddOgorICAgICAgICAjICAgICBpZiBy b3dbJ29wdGlvbnMnXSBpcyBub3QgTm9uZToKKyAgICAgICAgIyAgICAgICAg IHJvd1snb3B0aW9ucyddID0gc2VsZi50b2tlbml6ZV9vcHRpb25zKHJvd1sn b3B0aW9ucyddKQorCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAor ICAgICAgICAgICAgcmVzcG9uc2U9cmVzWydyb3dzJ10sCisgICAgICAgICAg ICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25k aXRpb24KKyAgICBkZWYgbm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2Np ZCk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gYWxsIEZUUyBDb25m aWd1cmF0aW9ucyB0byBnZW5lcmF0ZSBub2Rlcy4KKworICAgICAgICBBcmdz OgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAg ICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNl IElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgIiIi CisKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgc3FsID0gcmVuZGVyX3Rl bXBsYXRlKAorICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVf cGF0aCwgJ25vZGVzLnNxbCddKSwKKyAgICAgICAgICAgIHNjaWQ9c2NpZAor ICAgICAgICApCisgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5l eGVjdXRlXzJkYXJyYXkoc3FsKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yc2V0KQorCisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cydd OgorICAgICAgICAgICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBz ZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAgICAg ICAgICAgICAgICAgIHJvd1snb2lkJ10sCisgICAgICAgICAgICAgICAgICAg IGRpZCwKKyAgICAgICAgICAgICAgICAgICAgcm93WyduYW1lJ10sCisgICAg ICAgICAgICAgICAgICAgIGljb249Imljb24tZnRzX2NvbmZpZ3VyYXRpb24i CisgICAgICAgICAgICAgICAgKSkKKworICAgICAgICByZXR1cm4gbWFrZV9q c29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAg ICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVj b25kaXRpb24KKyAgICBkZWYgbm9kZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBz Y2lkLCBjZmdpZCk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gRlRT IENvbmZpZ3VyYXRpb24gbm9kZSB0byBnZW5lcmF0ZSBub2RlCisKKyAgICAg ICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisg ICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBE YXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAg ICAgICAgICBjZmdpZDogZnRzIENvbmZpZ3VyYXRpb24gaWQKKyAgICAgICAg IiIiCisKKyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAg ICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ25vZGVzLnNx bCddKSwKKyAgICAgICAgICAgIGNmZ2lkPWNmZ2lkCisgICAgICAgICkKKyAg ICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJh eShzcWwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisK KyAgICAgICAgaWYgbGVuKHJzZXRbJ3Jvd3MnXSkgPT0gMDoKKyAgICAgICAg ICAgIHJldHVybiBnb25lKF8oIiIiCisgICAgICAgICAgICAgICAgQ291bGQg bm90IGZpbmQgdGhlIEZUUyBDb25maWd1cmF0aW9uIG5vZGUuCisgICAgICAg ICAgICAgICAgIiIiKSkKKworICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jv d3MnXToKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2Uo CisgICAgICAgICAgICAgICAgZGF0YT1zZWxmLmJsdWVwcmludC5nZW5lcmF0 ZV9icm93c2VyX25vZGUoCisgICAgICAgICAgICAgICAgICAgIHJvd1snb2lk J10sCisgICAgICAgICAgICAgICAgICAgIGRpZCwKKyAgICAgICAgICAgICAg ICAgICAgcm93WyduYW1lJ10sCisgICAgICAgICAgICAgICAgICAgIGljb249 Imljb24tZnRzX2NvbmZpZ3VyYXRpb24iCisgICAgICAgICAgICAgICAgKSwK KyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICApCisK KyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHByb3BlcnRpZXMo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgY2ZnaWQpOgorICAgICAgICAi IiIKKyAgICAgICAgU2hvdyBwcm9wZXJ0aWVzIG9mIEZUUyBDb25maWd1cmF0 aW9uIG5vZGUKKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBT ZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisg ICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lk OiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGNmZ2lkOiBmdHMgQ29uZmlndXJh dGlvbiBpZAorICAgICAgICAiIiIKKworICAgICAgICBzcWwgPSByZW5kZXJf dGVtcGxhdGUoCisgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICBzY2lk PXNjaWQsCisgICAgICAgICAgICBjZmdpZD1jZmdpZAorICAgICAgICApCisg ICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChz cWwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisg ICAgICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKKyAgICAgICAgICAg IHJldHVybiBnb25lKF8oIiIiCisgICAgICAgICAgICAgICAgQ291bGQgbm90 IGZpbmQgdGhlIEZUUyBDb25maWd1cmF0aW9uIG5vZGUuCisgICAgICAgICAg ICAgICAgIiIiKSkKKworICAgICAgICAjIEluIGVkaXQgbW9kZSBmZXRjaCB0 b2tlbi9kaWN0aW9uYXJ5IGxpc3QgYWxzbworICAgICAgICBpZiBjZmdpZDoK KyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLCAndG9rZW5EaWN0TGlzdC5zcWwnXSksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNmZ2lkPWNm Z2lkKQorCisgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9kaWN0KHNxbCkKKworICAgICAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAgICAgIHJlc1sncm93cydd WzBdWyd0b2tlbnMnXSA9IHJzZXRbJ3Jvd3MnXQorCisgICAgICAgIHJldHVy biBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVzcG9uc2U9cmVzWydy b3dzJ11bMF0sCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkK KworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgY3JlYXRlKHNl bGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAgICAiIiIKKyAgICAg ICAgVGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZXMgbmV3IHRoZSBGVFMgQ29u ZmlndXJhdGlvbiBvYmplY3QKKyAgICAgICAgOnBhcmFtIGdpZDogZ3JvdXAg aWQKKyAgICAgICAgOnBhcmFtIHNpZDogc2VydmVyIGlkCisgICAgICAgIDpw YXJhbSBkaWQ6IGRhdGFiYXNlIGlkCisgICAgICAgIDpwYXJhbSBzY2lkOiBz Y2hlbWEgaWQKKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBNYW5kYXRvcnkg ZmllbGRzIHRvIGNyZWF0ZSBhIG5ldyBGVFMgQ29uZmlndXJhdGlvbgorICAg ICAgICByZXF1aXJlZF9hcmdzID0gWworICAgICAgICAgICAgJ3NjaGVtYScs CisgICAgICAgICAgICAnbmFtZScKKyAgICAgICAgXQorCisgICAgICAgIGRh dGEgPSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5mb3JtIGVsc2UganNvbi5s b2FkcygKKyAgICAgICAgICAgIHJlcXVlc3QuZGF0YS5kZWNvZGUoKSkKKyAg ICAgICAgZm9yIGFyZyBpbiByZXF1aXJlZF9hcmdzOgorICAgICAgICAgICAg aWYgYXJnIG5vdCBpbiBkYXRhOgorICAgICAgICAgICAgICAgIHJldHVybiBt YWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN0YXR1 cz00MTAsCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MCwKKyAgICAg ICAgICAgICAgICAgICAgZXJyb3Jtc2c9XygKKyAgICAgICAgICAgICAgICAg ICAgICAgICJDb3VsZG4ndCBmaW5kIHRoZSByZXF1aXJlZCBwYXJhbWV0ZXIg KCVzKS4iICUgYXJnCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAg ICAgICAgICApCisKKyAgICAgICAgIyBFaXRoZXIgY29weSBjb25maWcgb3Ig cGFyc2VyIG11c3QgYmUgcHJlc2VudCBpbiBkYXRhCisgICAgICAgIGlmICdj b3B5X2NvbmZpZycgbm90IGluIGRhdGEgYW5kICdwYXJzZXInIG5vdCBpbiBk YXRhOgorICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgK KyAgICAgICAgICAgICAgICBzdGF0dXM9NDEwLAorICAgICAgICAgICAgICAg IHN1Y2Nlc3M9MCwKKyAgICAgICAgICAgICAgICBlcnJvcm1zZz1fKAorICAg ICAgICAgICAgICAgICAgICAicHJvdmlkZSBhdGxlYXN0IGNvcHkgY29uZmln IG9yIHBhcnNlciIKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAp CisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBGZXRjaCBzY2hlbWEg bmFtZSBmcm9tIHNjaGVtYSBvaWQKKyAgICAgICAgICAgIHNxbCA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnc2No ZW1hLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhPWRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29ubj1zZWxmLmNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKQorCisgICAgICAgICAgICBzdGF0dXMsIHNjaGVtYSA9IHNl bGYuY29ubi5leGVjdXRlX3NjYWxhcihzcWwpCisgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c2NoZW1hKQorCisgICAgICAgICAgICAj IFJlcGxhY2Ugc2NoZW1hIG9pZCB3aXRoIHNjaGVtYSBuYW1lIGJlZm9yZSBw YXNzaW5nIHRvIGNyZWF0ZS5zcWwKKyAgICAgICAgICAgICMgVG8gZ2VuZXJh dGUgcHJvcGVyIHNxbCBxdWVyeQorICAgICAgICAgICAgbmV3X2RhdGEgPSBk YXRhLmNvcHkoKQorICAgICAgICAgICAgbmV3X2RhdGFbJ3NjaGVtYSddID0g c2NoZW1hCisgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1uZXdfZGF0 YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uPXNl bGYuY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp CisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl X3NjYWxhcihzcWwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cmVzKQorCisgICAgICAgICAgICAjIFdlIG5lZWQgY2ZnaWQgdG8g YWRkIG9iamVjdCBpbiB0cmVlIGF0IGJyb3dzZXIsCisgICAgICAgICAgICAj IEJlbG93IHNxbCB3aWxsIGdpdmUgdGhlIHNhbWUKKyAgICAgICAgICAgIHNx bCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9p bihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisg ICAgICAgICAgICAgICAgbmFtZT1kYXRhWyduYW1lJ10KKyAgICAgICAgICAg ICkKKyAgICAgICAgICAgIHN0YXR1cywgY2ZnaWQgPSBzZWxmLmNvbm4uZXhl Y3V0ZV9zY2FsYXIoc3FsKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPWNmZ2lkKQorCisgICAgICAgICAgICByZXR1cm4ganNvbmlm eSgKKyAgICAgICAgICAgICAgICBub2RlPXNlbGYuYmx1ZXByaW50LmdlbmVy YXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAgICAgICAgY2ZnaWQs CisgICAgICAgICAgICAgICAgICAgIGRpZCwKKyAgICAgICAgICAgICAgICAg ICAgZGF0YVsnbmFtZSddLAorICAgICAgICAgICAgICAgICAgICBpY29uPSJp Y29uLWZ0c19jb25maWd1cmF0aW9uIgorICAgICAgICAgICAgICAgICkKKyAg ICAgICAgICAgICkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgor ICAgICAgICAgICAgY3VycmVudF9hcHAubG9nZ2VyLmV4Y2VwdGlvbihlKQor ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIHVwZGF0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBjZmdpZCk6 CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBk YXRlIEZUUyBDb25maWd1cmF0aW9uIG9iamVjdAorICAgICAgICA6cGFyYW0g Z2lkOiBncm91cCBpZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQK KyAgICAgICAgOnBhcmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAgICAgOnBh cmFtIHNjaWQ6IHNjaGVtYSBpZAorICAgICAgICA6cGFyYW0gY2ZnaWQ6IGZ0 cyBDb25maWd1cmF0aW9uIGlkCisgICAgICAgICIiIgorICAgICAgICBkYXRh ID0gcmVxdWVzdC5mb3JtIGlmIHJlcXVlc3QuZm9ybSBlbHNlIGpzb24ubG9h ZHMoCisgICAgICAgICAgICByZXF1ZXN0LmRhdGEuZGVjb2RlKCkpCisKKyAg ICAgICAgIyBGZXRjaCBzcWwgcXVlcnkgdG8gdXBkYXRlIGZ0cyBDb25maWd1 cmF0aW9uCisgICAgICAgIHNxbCA9IHNlbGYuZ2V0X3NxbChnaWQsIHNpZCwg ZGlkLCBzY2lkLCBkYXRhLCBjZmdpZCkKKyAgICAgICAgdHJ5OgorICAgICAg ICAgICAgaWYgc3FsIGFuZCBzcWwuc3RyaXAoJ1xuJykgYW5kIHNxbC5zdHJp cCgnICcpOgorICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5j b25uLmV4ZWN1dGVfc2NhbGFyKHNxbCkKKyAgICAgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAg ICAgIGlmIGNmZ2lkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAg ICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAg ICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGll cy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICBjZmdpZD1jZmdp ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c2NpZAorICAgICAg ICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJl cyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorICAgICAgICAgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAg ICAgICAgICAgICAgaWYgbGVuKHJlc1sncm93cyddKSA9PSAwOgorICAgICAg ICAgICAgICAgICAgICByZXR1cm4gZ29uZShfKCIiIgorICAgICAgICAgICAg ICAgICAgICAgICAgQ291bGQgbm90IGZpbmQgdGhlIEZUUyBDb25maWd1cmF0 aW9uIG5vZGUgdG8gdXBkYXRlLgorICAgICAgICAgICAgICAgICAgICAiIiIp KQorCisgICAgICAgICAgICAgICAgZGF0YSA9IHJlc1sncm93cyddWzBdCisg ICAgICAgICAgICAgICAgcmV0dXJuIGpzb25pZnkoCisgICAgICAgICAgICAg ICAgICAgIG5vZGU9c2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9u b2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgY2ZnaWQsCisgICAgICAg ICAgICAgICAgICAgICAgICBkaWQsCisgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhWyduYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBpY29u PSJpY29uLWZ0c19jb25maWd1cmF0aW9uIgorICAgICAgICAgICAgICAgICAg ICApCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgIyBJbiBjYXNl IEZUUyBDb25maWd1cmF0aW9uIG5vZGUgaXMgbm90IHByZXNlbnQKKyAgICAg ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNv bl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAor ICAgICAgICAgICAgICAgICAgICBpbmZvPSJOb3RoaW5nIHRvIHVwZGF0ZSIs CisgICAgICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAg ICAgICAgICAgJ2lkJzogY2ZnaWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2dpZCc6 IGdpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAnc2NpZCc6IHNjaWQKKyAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICkKKworICAgICAgICBl eGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBjdXJyZW50X2Fw cC5sb2dnZXIuZXhjZXB0aW9uKGUpCisgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBj aGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZGVsZXRlKHNlbGYsIGdpZCwg c2lkLCBkaWQsIHNjaWQsIGNmZ2lkKToKKyAgICAgICAgIiIiCisgICAgICAg IFRoaXMgZnVuY3Rpb24gd2lsbCBkcm9wIHRoZSBGVFMgQ29uZmlndXJhdGlv biBvYmplY3QKKyAgICAgICAgOnBhcmFtIGdpZDogZ3JvdXAgaWQKKyAgICAg ICAgOnBhcmFtIHNpZDogc2VydmVyIGlkCisgICAgICAgIDpwYXJhbSBkaWQ6 IGRhdGFiYXNlIGlkCisgICAgICAgIDpwYXJhbSBzY2lkOiBzY2hlbWEgaWQK KyAgICAgICAgOnBhcmFtIGNmZ2lkOiBGVFMgQ29uZmlndXJhdGlvbiBpZAor ICAgICAgICAiIiIKKyAgICAgICAgIyBCZWxvdyB3aWxsIGRlY2lkZSBpZiBp dCdzIHNpbXBsZSBkcm9wIG9yIGRyb3Agd2l0aCBjYXNjYWRlIGNhbGwKKyAg ICAgICAgaWYgc2VsZi5jbWQgPT0gJ2RlbGV0ZSc6CisgICAgICAgICAgICAj IFRoaXMgaXMgYSBjYXNjYWRlIG9wZXJhdGlvbgorICAgICAgICAgICAgY2Fz Y2FkZSA9IFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNhc2Nh ZGUgPSBGYWxzZQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgR2V0 IG5hbWUgZm9yIEZUUyBDb25maWd1cmF0aW9uIGZyb20gY2ZnaWQKKyAgICAg ICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLCAnZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjZmdpZD1jZmdpZCkKKyAgICAgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisg ICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisg ICAgICAgICAgICBpZiBsZW4ocmVzWydyb3dzJ10pID09IDA6CisgICAgICAg ICAgICAgICAgcmV0dXJuIGdvbmUoXygiIiIKKyAgICAgICAgICAgICAgICAg ICAgICAgIENvdWxkIG5vdCBmaW5kIHRoZSBGVFMgQ29uZmlndXJhdGlvbiBu b2RlIHRvIGRlbGV0ZS4KKyAgICAgICAgICAgICAgICAgICAgIiIiKSkKKwor ICAgICAgICAgICAgIyBEcm9wIEZUUyBDb25maWd1cmF0aW9uCisgICAgICAg ICAgICByZXN1bHQgPSByZXNbJ3Jvd3MnXVswXQorICAgICAgICAgICAgc3Fs ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsICdkZWxldGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5hbWU9cmVzdWx0WyduYW1lJ10sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2NoZW1hPXJlc3VsdFsnc2NoZW1hJ10s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzY2FkZT1j YXNjYWRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQor CisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl X3NjYWxhcihzcWwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cmVzKQorCisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jl c3BvbnNlKAorICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAg ICAgICAgICBpbmZvPV8oIkZUUyBDb25maWd1cmF0aW9uIGRyb3BwZWQiKSwK KyAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAg J2lkJzogY2ZnaWQsCisgICAgICAgICAgICAgICAgICAgICdzaWQnOiBzaWQs CisgICAgICAgICAgICAgICAgICAgICdnaWQnOiBnaWQsCisgICAgICAgICAg ICAgICAgICAgICdkaWQnOiBkaWQsCisgICAgICAgICAgICAgICAgICAgICdz Y2lkJzogc2NpZAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICkK KworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAg ICBjdXJyZW50X2FwcC5sb2dnZXIuZXhjZXB0aW9uKGUpCisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihl KSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgbXNxbChz ZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBjZmdpZD1Ob25lKToKKyAgICAg ICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBtb2RpZmll ZCBTUUwKKyAgICAgICAgOnBhcmFtIGdpZDogZ3JvdXAgaWQKKyAgICAgICAg OnBhcmFtIHNpZDogc2VydmVyIGlkCisgICAgICAgIDpwYXJhbSBkaWQ6IGRh dGFiYXNlIGlkCisgICAgICAgIDpwYXJhbSBzY2lkOiBzY2hlbWEgaWQKKyAg ICAgICAgOnBhcmFtIGNmZ2lkOiBGVFMgQ29uZmlndXJhdGlvbiBpZAorICAg ICAgICAiIiIKKyAgICAgICAgIyBkYXRhID0gcmVxdWVzdC5hcmdzCisgICAg ICAgIGRhdGEgPSB7fQorICAgICAgICBmb3IgaywgdiBpbiByZXF1ZXN0LmFy Z3MuaXRlbXMoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAg ICBkYXRhW2tdID0ganNvbi5sb2Fkcyh2KQorICAgICAgICAgICAgZXhjZXB0 IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgZGF0YVtrXSA9IHYKKwor ICAgICAgICAjIEZldGNoIHNxbCBxdWVyeSBmb3IgbW9kaWZpZWQgZGF0YQor ICAgICAgICBzcWwgPSBzZWxmLmdldF9zcWwoZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgZGF0YSwgY2ZnaWQpCisKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzcWws IHN0cikgYW5kIHNxbCBhbmQgc3FsLnN0cmlwKCdcbicpIGFuZCBzcWwuc3Ry aXAoJyAnKToKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCisgICAgICAgICAgICAgICAgZGF0YT1zcWwsCisgICAgICAgICAgICAg ICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgor ICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAg ICAgICAgICAgICBkYXRhPSItLW1vZGlmaWVkIFNRTCIsCisgICAgICAgICAg ICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgKQorCisgICAgZGVmIGdl dF9zcWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZGF0YSwgY2ZnaWQ9 Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdp bGwgcmV0dXJuIFNRTCBmb3IgbW9kZWwgZGF0YQorICAgICAgICA6cGFyYW0g Z2lkOiBncm91cCBpZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQK KyAgICAgICAgOnBhcmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAgICAgOnBh cmFtIHNjaWQ6IHNjaGVtYSBpZAorICAgICAgICA6cGFyYW0gY2ZnaWQ6IGZ0 cyBDb25maWd1cmF0aW9uIGlkCisgICAgICAgICIiIgorICAgICAgICB0cnk6 CisgICAgICAgICAgICAjIEZldGNoIHNxbCBmb3IgdXBkYXRlCisgICAgICAg ICAgICBpZiBjZmdpZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBz cWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAgICIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCdd KSwKKyAgICAgICAgICAgICAgICAgICAgY2ZnaWQ9Y2ZnaWQsCisgICAgICAg ICAgICAgICAgICAgIHNjaWQ9c2NpZAorICAgICAgICAgICAgICAgICkKKwor ICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdChzcWwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICAgICBpZiBsZW4o cmVzWydyb3dzJ10pID09IDA6CisgICAgICAgICAgICAgICAgICAgIHJldHVy biBnb25lKF8oIiIiCisgICAgICAgICAgICAgICAgICAgICAgICBDb3VsZCBu b3QgZmluZCB0aGUgRlRTIENvbmZpZ3VyYXRpb24gbm9kZS4KKyAgICAgICAg ICAgICAgICAgICAgIiIiKSkKKworICAgICAgICAgICAgICAgIG9sZF9kYXRh ID0gcmVzWydyb3dzJ11bMF0KKworICAgICAgICAgICAgICAgICMgSWYgdXNl ciBoYXMgY2hhbmdlZCB0aGUgc2NoZW1hIHRoZW4gZmV0Y2ggbmV3IHNjaGVt YSBkaXJlY3RseQorICAgICAgICAgICAgICAgICMgdXNpbmcgaXRzIG9pZCBv dGhlcndpc2UgZmV0Y2ggb2xkIHNjaGVtYSBuYW1lIHVzaW5nIGl0cyBvaWQK KyAgICAgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAg ICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs ICdzY2hlbWEuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICBkYXRhPWRh dGEpCisKKyAgICAgICAgICAgICAgICBzdGF0dXMsIG5ld19zY2hlbWEgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQorICAgICAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9bmV3X3NjaGVtYSkKKwor ICAgICAgICAgICAgICAgICMgUmVwbGFjZSBzY2hlbWEgb2lkIHdpdGggc2No ZW1hIG5hbWUKKyAgICAgICAgICAgICAgICBuZXdfZGF0YSA9IGRhdGEuY29w eSgpCisgICAgICAgICAgICAgICAgaWYgJ3NjaGVtYScgaW4gbmV3X2RhdGE6 CisgICAgICAgICAgICAgICAgICAgIG5ld19kYXRhWydzY2hlbWEnXSA9IG5l d19zY2hlbWEKKworICAgICAgICAgICAgICAgICMgRmV0Y2ggb2xkIHNjaGVt YSBuYW1lIHVzaW5nIG9sZCBzY2hlbWEgb2lkCisgICAgICAgICAgICAgICAg c3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnc2NoZW1hLnNxbCddKSwK KyAgICAgICAgICAgICAgICAgICAgZGF0YT1vbGRfZGF0YSkKKworICAgICAg ICAgICAgICAgIHN0YXR1cywgb2xkX3NjaGVtYSA9IHNlbGYuY29ubi5leGVj dXRlX3NjYWxhcihzcWwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1vbGRfc2NoZW1hKQorCisgICAgICAgICAgICAg ICAgIyBSZXBsYWNlIG9sZCBzY2hlbWEgb2lkIHdpdGggb2xkIHNjaGVtYSBu YW1lCisgICAgICAgICAgICAgICAgb2xkX2RhdGFbJ3NjaGVtYSddID0gb2xk X3NjaGVtYQorCisgICAgICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLCAndXBkYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAg ICAgZGF0YT1uZXdfZGF0YSwgb19kYXRhPW9sZF9kYXRhCisgICAgICAgICAg ICAgICAgKQorICAgICAgICAgICAgICAgICMgRmV0Y2ggc3FsIHF1ZXJ5IGZv ciBtb2RpZmllZCBkYXRhCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg ICAgICAgICMgRmV0Y2ggc2NoZW1hIG5hbWUgZnJvbSBzY2hlbWEgb2lkCisg ICAgICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsICdzY2hlbWEuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEpCisK KyAgICAgICAgICAgICAgICBzdGF0dXMsIHNjaGVtYSA9IHNlbGYuY29ubi5l eGVjdXRlX3NjYWxhcihzcWwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1zY2hlbWEpCisKKyAgICAgICAgICAgICAg ICAjIFJlcGxhY2Ugc2NoZW1hIG9pZCB3aXRoIHNjaGVtYSBuYW1lCisgICAg ICAgICAgICAgICAgbmV3X2RhdGEgPSBkYXRhLmNvcHkoKQorICAgICAgICAg ICAgICAgIG5ld19kYXRhWydzY2hlbWEnXSA9IHNjaGVtYQorCisgICAgICAg ICAgICAgICAgaWYgJ25hbWUnIGluIG5ld19kYXRhIGFuZCBcCisgICAgICAg ICAgICAgICAgICAgICAgICAnc2NoZW1hJyBpbiBuZXdfZGF0YToKKyAgICAg ICAgICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZS5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk YXRhPW5ld19kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBl bHNlOgorICAgICAgICAgICAgICAgICAgICBzcWwgPSAiLS0gaW5jb21wbGV0 ZSBkZWZpbml0aW9uIgorICAgICAgICAgICAgcmV0dXJuIHN0cihzcWwuc3Ry aXAoJ1xuJykpCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgor ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIHBhcnNlcnMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAg ICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGZ0 cyBwYXJzZXJzIGxpc3QgZm9yIEZUUyBDb25maWd1cmF0aW9uCisgICAgICAg IDpwYXJhbSBnaWQ6IGdyb3VwIGlkCisgICAgICAgIDpwYXJhbSBzaWQ6IHNl cnZlciBpZAorICAgICAgICA6cGFyYW0gZGlkOiBkYXRhYmFzZSBpZAorICAg ICAgICA6cGFyYW0gc2NpZDogc2NoZW1hIGlkCisgICAgICAgICIiIgorICAg ICAgICAjIEZldGNoIGxhc3Qgc3lzdGVtIG9pZAorICAgICAgICBkYXRsYXN0 c3lzb2lkID0gc2VsZi5tYW5hZ2VyLmRiX2luZm9bZGlkXVsnZGF0bGFzdHN5 c29pZCddCisKKyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwYXJzZXIuc3FsJ10pLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyPVRydWUpCisgICAg ICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3Fs KQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAg ICAgICAgIyBFbXB0eSBzZXQgaXMgYWRkZWQgYmVmb3JlIGFjdHVhbCBsaXN0 IGFzIGluaXRpYWxseSBpdCB3aWxsIGJlIHZpc2libGUKKyAgICAgICAgIyBh dCBwYXJzZXIgY29udHJvbCB3aGlsZSBjcmVhdGluZyBhIG5ldyBGVFMgQ29u ZmlndXJhdGlvbgorICAgICAgICByZXMgPSBbeydsYWJlbCc6JycsICd2YWx1 ZSc6Jyd9XQorICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAg ICAgICAgICAgIGlmIHJvd1snc2NoZW1hb2lkJ10gPiBkYXRsYXN0c3lzb2lk OgorICAgICAgICAgICAgICAgIHJvd1sncHJzbmFtZSddID0gcm93Wyduc3Bu YW1lJ10gKyAnLicgKyByb3dbJ3Byc25hbWUnXQorCisgICAgICAgICAgICBy ZXMuYXBwZW5kKHsnbGFiZWwnOiByb3dbJ3Byc25hbWUnXSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICd2YWx1ZSc6IHJvd1sncHJzbmFtZSddfSkKKyAg ICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAg IGRhdGE9cmVzLAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAp CisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGNvcHlDb25m aWcoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIiIgor ICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGNvcHkgY29uZmln IGxpc3QgZm9yIEZUUyBDb25maWd1cmF0aW9uCisgICAgICAgIDpwYXJhbSBn aWQ6IGdyb3VwIGlkCisgICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZlciBpZAor ICAgICAgICA6cGFyYW0gZGlkOiBkYXRhYmFzZSBpZAorICAgICAgICA6cGFy YW0gc2NpZDogc2NoZW1hIGlkCisgICAgICAgICIiIgorICAgICAgICAjIEZl dGNoIGxhc3Qgc3lzdGVtIG9pZAorICAgICAgICBkYXRsYXN0c3lzb2lkID0g c2VsZi5tYW5hZ2VyLmRiX2luZm9bZGlkXVsnZGF0bGFzdHN5c29pZCddCisK KyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsICdjb3B5X2NvbmZpZy5zcWwnXSksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb3B5X2NvbmZpZz1UcnVlKQorICAg ICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNx bCkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorCisg ICAgICAgICMgRW1wdHkgc2V0IGlzIGFkZGVkIGJlZm9yZSBhY3R1YWwgbGlz dCBhcyBpbml0aWFsbHkgaXQgd2lsbCBiZSB2aXNpYmxlCisgICAgICAgICMg YXQgY29weV9jb25maWcgY29udHJvbCB3aGlsZSBjcmVhdGluZyBhIG5ldyBG VFMgQ29uZmlndXJhdGlvbgorICAgICAgICByZXMgPSBbeydsYWJlbCc6ICcn LCAndmFsdWUnOiAnJ31dCisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93 cyddOgorICAgICAgICAgICAgaWYgcm93WydvaWQnXSA+IGRhdGxhc3RzeXNv aWQ6CisgICAgICAgICAgICAgICAgcm93WydjZmduYW1lJ10gPSByb3dbJ25z cG5hbWUnXSArICcuJyArIHJvd1snY2ZnbmFtZSddCisKKyAgICAgICAgICAg IHJlcy5hcHBlbmQoeydsYWJlbCc6IHJvd1snY2ZnbmFtZSddLAorICAgICAg ICAgICAgICAgICAgICAgICAgJ3ZhbHVlJzogcm93WydjZmduYW1lJ119KQor ICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAg ICAgZGF0YT1yZXMsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAg ICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgdG9rZW5z KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGNmZ2lkPU5vbmUpOgorICAg ICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0 b2tlbiBsaXN0IG9mIGZ0cyBwYXJzZXIgbm9kZSByZWxhdGVkIHRvCisgICAg ICAgIGN1cnJlbnQgRlRTIENvbmZpZ3VyYXRpb24gbm9kZQorICAgICAgICA6 cGFyYW0gZ2lkOiBncm91cCBpZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2 ZXIgaWQKKyAgICAgICAgOnBhcmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAg ICAgOnBhcmFtIHNjaWQ6IHNjaGVtYSBpZAorICAgICAgICA6cGFyYW0gY2Zn aWQ6IGZ0cyBjb25maWd1cmF0aW9uIGlkCisgICAgICAgICIiIgorICAgICAg ICBkYXRhID0gcmVxdWVzdC5hcmdzIGlmIHJlcXVlc3QuYXJncyBlbHNlIHt9 CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlcyA9IFtdCisgICAgICAg ICAgICBpZiBjZmdpZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBz cWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVf cGF0aCwgJ3Rva2Vucy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNmZ2lkPWNmZ2lkLCBwYXJzZXI9VHJ1ZSkKKyAg ICAgICAgICAgICAgICBzdGF0dXMsIHBhcnNlcm9pZCA9IHNlbGYuY29ubi5l eGVjdXRlX3NjYWxhcihzcWwpCisKKyAgICAgICAgICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXBhcnNlcm9pZCkKKworICAgICAgICAg ICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLCAndG9rZW5zLnNxbCddKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2ZnaWQ9Y2ZnaWQsIHBhcnNlcm9p ZD1wYXJzZXJvaWQpCisgICAgICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0g c2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgICAgICAg ICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgICAgICAg ICAgcmVzLmFwcGVuZCh7J2xhYmVsJzogcm93WydhbGlhcyddLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAndmFsdWUnOiByb3dbJ2FsaWFz J119KQorICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgK KyAgICAgICAgICAgICAgICBkYXRhPXJlcywKKyAgICAgICAgICAgICAgICBz dGF0dXM9MjAwCisgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4 Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgY3VycmVudF9hcHAubG9nZ2Vy LmV4Y2VwdGlvbihlKQorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJl Y29uZGl0aW9uCisgICAgZGVmIGRpY3Rpb25hcmllcyhzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkLCBjZmdpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAg ICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gZGljdGlvbmFyeSBsaXN0 IGZvciBGVFMgQ29uZmlndXJhdGlvbgorICAgICAgICA6cGFyYW0gZ2lkOiBn cm91cCBpZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQKKyAgICAg ICAgOnBhcmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAgICAgOnBhcmFtIHNj aWQ6IHNjaGVtYSBpZAorICAgICAgICAiIiIKKyAgICAgICAgc3FsID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpY3Rp b25hcmllcy5zcWwnXSkpCisgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYu Y29ubi5leGVjdXRlX2RpY3Qoc3FsKQorCisgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAg Zm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAgICAgICByZXMuYXBw ZW5kKHsnbGFiZWwnOiByb3dbJ2RpY3RuYW1lJ10sCisgICAgICAgICAgICAg ICAgICAgICAgICAndmFsdWUnOiByb3dbJ2RpY3RuYW1lJ119KQorICAgICAg ICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0 YT1yZXMsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKwor ICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgc3FsKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIGNmZ2lkKToKKyAgICAgICAgIiIiCisgICAg ICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXZlcnNlIGdlbmVyYXRlIHNxbCBm b3Igc3FsIHBhbmVsCisgICAgICAgIDpwYXJhbSBnaWQ6IGdyb3VwIGlkCisg ICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZlciBpZAorICAgICAgICA6cGFyYW0g ZGlkOiBkYXRhYmFzZSBpZAorICAgICAgICA6cGFyYW0gc2NpZDogc2NoZW1h IGlkCisgICAgICAgIDpwYXJhbSBjZmdpZDogRlRTIENvbmZpZ3VyYXRpb24g aWQKKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNx bCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9p bihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnc3FsLnNxbCddKSwKKyAgICAgICAg ICAgICAgICBjZmdpZD1jZmdpZCwKKyAgICAgICAgICAgICAgICBzY2lkPXNj aWQsCisgICAgICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4KKyAgICAgICAg ICAgICkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfc2NhbGFyKHNxbCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cigKKyAgICAgICAgICAgICAgICAgICAgXygKKyAgICAgICAgICAgICAgICAg ICAgICAgICJFUlJPUjogQ291bGRuJ3QgZ2VuZXJhdGUgcmV2ZXJzZWQgZW5n aW5lZXJlZCBxdWVyeSBmb3IgdGhlIEZUUyBDb25maWd1cmF0aW9uIVxuezB9 IikuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgcmVzCisgICAg ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisKKyAgICAg ICAgICAgIGlmIHJlcyBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJldHVy biBnb25lKAorICAgICAgICAgICAgICAgICAgICBfKAorICAgICAgICAgICAg ICAgICAgICAgICAgIkVSUk9SOiBDb3VsZG4ndCBnZW5lcmF0ZSByZXZlcnNl ZCBlbmdpbmVlcmVkIHF1ZXJ5IGZvciBGVFMgQ29uZmlndXJhdGlvbiBub2Rl ISIpCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICByZXR1cm4g YWpheF9yZXNwb25zZShyZXNwb25zZT1yZXMpCisKKyAgICAgICAgZXhjZXB0 IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgY3VycmVudF9hcHAubG9n Z2VyLmV4Y2VwdGlvbihlKQorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tf cHJlY29uZGl0aW9uCisgICAgZGVmIGRlcGVuZGVudHMoc2VsZiwgZ2lkLCBz aWQsIGRpZCwgc2NpZCwgY2ZnaWQpOgorICAgICAgICAiIiIKKyAgICAgICAg VGhpcyBmdW5jdGlvbiBnZXQgdGhlIGRlcGVuZGVudHMgYW5kIHJldHVybiBh amF4IHJlc3BvbnNlCisgICAgICAgIGZvciB0aGUgRlRTIENvbmZpZ3VyYXRp b24gbm9kZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBT ZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElECisg ICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAgICBzY2lk OiBTY2hlbWEgSUQKKyAgICAgICAgICAgIGNmZ2lkOiBGVFMgQ29uZmlndXJh dGlvbiBJRAorICAgICAgICAiIiIKKyAgICAgICAgZGVwZW5kZW50c19yZXN1 bHQgPSBzZWxmLmdldF9kZXBlbmRlbnRzKHNlbGYuY29ubiwgY2ZnaWQpCisg ICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVz cG9uc2U9ZGVwZW5kZW50c19yZXN1bHQsCisgICAgICAgICAgICBzdGF0dXM9 MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAg ICBkZWYgZGVwZW5kZW5jaWVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQs IGNmZ2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24g Z2V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJldHVybiBhamF4IHJlc3BvbnNl CisgICAgICAgIGZvciB0aGUgRlRTIENvbmZpZ3VyYXRpb24gbm9kZS4KKwor ICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAg SUQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgICBk aWQ6IERhdGFiYXNlIElECisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQK KyAgICAgICAgICAgIGNmZ2lkOiBGVFMgQ29uZmlndXJhdGlvbiBJRAorICAg ICAgICAiIiIKKyAgICAgICAgZGVwZW5kZW5jaWVzX3Jlc3VsdCA9IHNlbGYu Z2V0X2RlcGVuZGVuY2llcyhzZWxmLmNvbm4sIGNmZ2lkKQorICAgICAgICBy ZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJlc3BvbnNlPWRl cGVuZGVuY2llc19yZXN1bHQsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisg ICAgICAgICkKKworCitGdHNDb25maWd1cmF0aW9uVmlldy5yZWdpc3Rlcl9u b2RlX3ZpZXcoYmx1ZXByaW50KQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZnRzX2NvbmZpZ3VyYXRpb25zL3N0YXRpYy9pbWcvY29sbC1mdHNfY29u ZmlndXJhdGlvbi5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJh dGlvbnMvc3RhdGljL2ltZy9jb2xsLWZ0c19jb25maWd1cmF0aW9uLnBuZwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMWJmNGVlNWJiY2MzZjdjODU5OGE0 ZmE5ZDlhNzZlMDYxYmY2MGUwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAz NjkKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF4wd0J4KkJwOXFfRVo3VUFt YFp+RGYqQmFmQ1pEd2NAc2htVlReSlp2CnpeKHE/eWQ3SzN2aztPcFQxQn41 SFg0P1Q3T0ZkbTJMbkpPSUNvbld9Nzgtc09tSn4/JWN9QmF4ezx0I2Q3MT0j fAp6SFBxQ1dOJDVAWkBsd0ZVbSM2Mnhffi1TcWstcVV+PylSVV9ganp4PSZy OX56S2pyeTFXJjU3RmY4OTMwXm5kO0wKejxJSGJZP2JeNEFZMDxPU3JgeUJk OWM1dHN3SjxBaHs+Xj5BcyQ+cSYocG9YPV4+Vi1ZSHw+aj1tPURocSopWGV7 CnpKXiM0TUhDXl5kPUNJOGxldGV4X0h7KTxhUit3STBeTW1GcUc1aDxAdSlt SUNQR3dAU1N5Zj1vQEcoOVM9d1Ffbgp6Kk5CcG8jRkE5MjxmMnB7I2I5SiRY ck9Db3EtJFVwVnF7PXRWcipxJXFIU1BtV25mQDJRJmtRe0x2RFViVz9DZ2cK Z2dNbFNqMTR5LSVmZis9QHNwKzk+ZkVwTSlVSHgzdklWQ2chME5fUHxGYVE3 bQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3N0YXRpYy9pbWcvZnRzX2Nv bmZpZ3VyYXRpb24ucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3Vy YXRpb25zL3N0YXRpYy9pbWcvZnRzX2NvbmZpZ3VyYXRpb24ucG5nCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAuLjBhNWNhZjUzNzM2NzBjYzY4NDYwNWQ0MmM5 ZWIyMTcyNGZkNzU1MjMKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDM0Ngp6 Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXjB3QngqQnA5cV9FWjdVQW1gWn5E ZipCYWZDWkR3Y0BzaG1WVF5KWnYKel4ocT95ZDdLM3ZrO09wVDFCfjVIWDQ/ VDdlViM2a0FyaEM5NkFyTFd5UlBjel9STjF5PCt0PzVla3dtX2B2M3B0Cnpw WFNoVVckeTMpPUtuckRhb2UlKCRvJjJMejg/U24tPjJvJUAxKGxAKWl2Kip7 aFZBe0BiOSt0XjcxP2p0NzZNMwp6fDZkPjdkaWxBWSVuVkR4UX4hVEhJZHJr d3UoTVIpcj5TQjZ5dCNNbCl0Qis3SWJRdWJtRH0lKiVMaGokP3xWdWcKekM5 ajNWPyhhTHAtV2pxc0BjPUt3dX1qeyE3e1pHODBiUW5BO3U9d3NsMzA+em0w WGt4cSFeNDAzPU1QKmpkVHFSCnpMeVFjcE9wTDhlT3RjTTV0cWNxLVd+JDFl WHZvYl4keE4kK1hmVXRAWVhHVVhHQkFUXkk1ajxWNE53RHZyPm1kSwpJSTtW c3QwQUslcTRnZGZFCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxh dGVzL2Z0c19jb25maWd1cmF0aW9uL2pzL2Z0c19jb25maWd1cmF0aW9uLmpz IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRl cy9mdHNfY29uZmlndXJhdGlvbi9qcy9mdHNfY29uZmlndXJhdGlvbi5qcwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzExMjA0Ci0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3Vy YXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJhdGlvbi9qcy9mdHNfY29u ZmlndXJhdGlvbi5qcwpAQCAtMCwwICsxLDU3MSBAQAorZGVmaW5lKAorICAg ICAgICBbJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVyc2NvcmUuc3Ry aW5nJywgJ3BnYWRtaW4nLAorICAgICAgICAgJ3BnYWRtaW4uYnJvd3Nlcics ICdhbGVydGlmeScsICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbiddLAor ZnVuY3Rpb24oJCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBhbGVydGlm eSkgeworCisKKy8vIE1vZGVsIHRvIHRva2VucyBjb250cm9sCisgIHZhciBU b2tlbk1vZGVsID0gcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5k KHsKKyAgICAgICAgZGVmYXVsdHM6IHsKKyAgICAgICAgICB0b2tlbjogdW5k ZWZpbmVkLAorICAgICAgICAgIGRpY3RuYW1lOiB1bmRlZmluZWQKKyAgICAg ICAgfSwKKyAgICAgICAgLy8gRGVmaW5lIHRoZSBzY2hlbWEgZm9yIHRoZSB0 b2tlbi9kaWN0aW9uYXJ5IGxpc3QKKyAgICAgICAgc2NoZW1hOiBbCisgICAg ICAgICAgeworICAgICAgICAgICAgaWQ6ICd0b2tlbicsIGxhYmVsOidUb2tl bicsIHR5cGU6J3RleHQnLCBncm91cDogbnVsbCwKKyAgICAgICAgICAgIGNl bGxIZWFkZXJDbGFzc2VzOid3aWR0aF9wZXJjZW50XzUwJywgZWRpdGFibGU6 IHRydWUsCisgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIGNlbGw6ICdz dHJpbmcnLCB1cmw6ICd0b2tlbnMnCisgICAgICAgICAgfSx7CisgICAgICAg ICAgICBpZDogJ2RpY3RuYW1lJywgbGFiZWw6ICdEaWN0aW9uYXJpZXMnLCB0 eXBlOiAndGV4dCcsIGdyb3VwOm51bGwsCisgICAgICAgICAgICBjZWxsSGVh ZGVyQ2xhc3Nlczond2lkdGhfcGVyY2VudF81MCcsIGVkaXRhYmxlOiB0cnVl LAorICAgICAgICAgICAgY2VsbDpCYWNrZ3JpZC5FeHRlbnNpb24uTXVsdGlT ZWxlY3RBamF4Q2VsbCwgdXJsOiAnZGljdGlvbmFyaWVzJworICAgICAgICAg IH0KKyAgICAgICAgXSwKKyAgICAgICAgLy8gVmFsaWRhdGlvbiBmb3IgdG9r ZW4gYW5kIGRpY3Rpb25hcnkgbGlzdAorICAgICAgICB2YWxpZGF0ZTogZnVu Y3Rpb24oKSB7CisgICAgICAgICAgICAvLyBDbGVhciBhbnkgZXhpc3Rpbmcg ZXJyb3JzLgorICAgICAgICAgICAgdmFyIG1zZzsKKyAgICAgICAgICAgIHRo aXMuZXJyb3JNb2RlbC5jbGVhcigpOworICAgICAgICAgICAgdmFyIHRva2Vu ID0gdGhpcy5nZXQoJ3Rva2VuJyk7CisgICAgICAgICAgICB2YXIgZGljdGlv bmFyeSA9IHRoaXMuZ2V0KCdkaWN0bmFtZScpOworICAgICAgICAgICAgaWYg KF8uaXNOdWxsKHRva2VuKSB8fAorICAgICAgICAgICAgICAgIF8uaXNVbmRl ZmluZWQodG9rZW4pIHx8CisgICAgICAgICAgICAgICAgU3RyaW5nKHRva2Vu KS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAg ICAgICAgICAgbXNnID0gJ3t7IF8oJ1Rva2VuIGNhbiBub3QgYmUgZW1wdHkh JykgfX0nOworICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQo J3Rva2VuJyxtc2cpOworICAgICAgICAgICAgICAgIHJldHVybiBtc2c7Cisg ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoXy5pc051bGwoZGljdGlv bmFyeSkgfHwKKyAgICAgICAgICAgICAgICBfLmlzVW5kZWZpbmVkKGRpY3Rp b25hcnkpIHx8CisgICAgICAgICAgICAgICAgU3RyaW5nKGRpY3Rpb25hcnkp LnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAg ICAgICAgICBtc2cgPSAne3sgXygnRGljdGlvbmFyeSBuYW1lIGNhbiBub3Qg YmUgZW1wdHkhJykgfX0nOworICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JN b2RlbC5zZXQoJ2RpY3RuYW1lJyxtc2cpOworICAgICAgICAgICAgICAgIHJl dHVybiBtc2c7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4g bnVsbDsKKyAgICAgICAgfQorICB9KTsKKworLy8gQ3VzdG9taXplZCBjb250 cm9sIGZvciB0b2tlbiBwYW5lbAorICB2YXIgVG9rZW5Db250cm9sID0gIEJh Y2tmb3JtLlRva2VuQ29udHJvbCA9CisgICAgQmFja2Zvcm0uVW5pcXVlQ29s Q29sbGVjdGlvbkNvbnRyb2wuZXh0ZW5kKHsKKworICAgIGluaXRpYWxpemU6 IGZ1bmN0aW9uKG9wdHMpIHsKKyAgICAgIEJhY2tmb3JtLlVuaXF1ZUNvbENv bGxlY3Rpb25Db250cm9sLnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KAor ICAgICAgICB0aGlzLCBhcmd1bWVudHMKKyAgICAgICk7CisKKyAgICAgIHZh ciBzZWxmID0gdGhhdCA9IHRoaXMsCisgICAgICAgICAgbm9kZSA9ICdmdHNf Y29uZmlndXJhdGlvbicsCisgICAgICAgICAgaGVhZGVyU2NoZW1hID0gW3sK KyAgICAgICAgICAgIGlkOiAndG9rZW4nLCBsYWJlbDonJywgdHlwZTondGV4 dCcsIHVybDogJ3Rva2VucycsCisgICAgICAgICAgICBub2RlOidmdHNfY29u ZmlndXJhdGlvbicsIGNhbkFkZDogdHJ1ZSwgJ3VybF93aXRoX2lkJzogdHJ1 ZSwKKworICAgICAgICAgICAgLy8gRGVmaW5pbmcgY29udHJvbCBmb3IgdG9r ZW5zIGRyb3Bkb3duIGNvbnRyb2wgaW4gaGVhZGVyCisgICAgICAgICAgICBj b250cm9sOiBCYWNrZm9ybS5Ob2RlQWpheE9wdGlvbnNDb250cm9sLmV4dGVu ZCh7CisgICAgICAgICAgICAgIGZvcm1hdHRlcjogQmFja2Zvcm0uTm9kZUFq YXhPcHRpb25zQ29udHJvbC5wcm90b3R5cGUuZm9ybWF0dGVyLAorICAgICAg ICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg ICAgICBCYWNrZm9ybS5Ob2RlQWpheE9wdGlvbnNDb250cm9sLnByb3RvdHlw ZS5pbml0aWFsaXplLmFwcGx5KHRoaXMsYXJndW1lbnRzKTsKKyAgICAgICAg ICAgICAgICAgIHZhciBzZWxmID0gdGhpcywKKyAgICAgICAgICAgICAgICAg ICAgICB1cmwgPSBzZWxmLmZpZWxkLmdldCgndXJsJykgfHwgc2VsZi5kZWZh dWx0cy51cmwsCisgICAgICAgICAgICAgICAgICAgICAgbSA9IHNlbGYubW9k ZWwudG9wIHx8IHNlbGYubW9kZWw7CisKKyAgICAgICAgICAgICAgICAvLyBG ZXRjaCB0aGUgdG9rZW5zL2RpY3QgbGlzdCBmcm9tICd0aGF0JyBub2RlLgor ICAgICAgICAgICAgICAgIC8qIEhlcmUgJ3RoYXQnIHJlZmVycyB0byB1bmlx dWUgY29sbGVjdGlvbiBjb250cm9sIHdoZXJlCisgICAgICAgICAgICAgICAg ICogJ3NlbGYnIHJlZmVycyB0byBub2RlQWpheE9wdGlvbnMgY29udHJvbCBm b3IgZGljdGlvbmFyeQorICAgICAgICAgICAgICAgICAqLworICAgICAgICAg ICAgICAgIHZhciBjZmdpZCA9IHRoYXQubW9kZWwuZ2V0KCdvaWQnKTsKKyAg ICAgICAgICAgICAgICBpZiAodXJsKSB7CisgICAgICAgICAgICAgICAgICB2 YXIgbm9kZSA9IHRoaXMuZmllbGQuZ2V0KCdzY2hlbWFfbm9kZScpLAorICAg ICAgICAgICAgICAgICAgICBub2RlX2luZm8gPSB0aGlzLmZpZWxkLmdldCgn bm9kZV9pbmZvJyksCisgICAgICAgICAgICAgICAgICAgIGZ1bGxfdXJsID0g bm9kZS5nZW5lcmF0ZV91cmwuYXBwbHkoCisgICAgICAgICAgICAgICAgICAg ICAgbm9kZSwgWworICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgdXJs LCB0aGlzLmZpZWxkLmdldCgnbm9kZV9kYXRhJyksCisgICAgICAgICAgICAg ICAgICAgICAgICB0aGlzLmZpZWxkLmdldCgndXJsX3dpdGhfaWQnKSB8fCBm YWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVfaW5mbworICAg ICAgICAgICAgICAgICAgICAgIF0pLAorICAgICAgICAgICAgICAgICAgICBj YWNoZV9sZXZlbCA9IHRoaXMuZmllbGQuZ2V0KCdjYWNoZV9sZXZlbCcpIHx8 IG5vZGUudHlwZSwKKyAgICAgICAgICAgICAgICAgICAgY2FjaGVfbm9kZSA9 IHRoaXMuZmllbGQuZ2V0KCdjYWNoZV9ub2RlJyk7CisKKyAgICAgICAgICAg ICAgICAgIGNhY2hlX25vZGUgPSAoY2FjaGVfbm9kZSAmJiBwZ0FkbWluLkJy b3dzZXIuTm9kZXNbJ2NhY2hlX25vZGUnXSkgfHwgbm9kZTsKKworICAgICAg ICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAqIFdlIG5lZWRz IHRvIGNoZWNrLCBpZiB3ZSBoYXZlIGFscmVhZHkgY2FjaGVkIGRhdGEgZm9y IHRoaXMgdXJsLgorICAgICAgICAgICAgICAgICAgICogSWYgeWVzIC0gdXNl IGl0LCBhbmQgZG8gbm90IGJvdGhlciBhYm91dCBmZXRjaGluZyBpdCBhZ2Fp bi4KKyAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAg dmFyIGRhdGEgPSBjYWNoZV9ub2RlLmNhY2hlKHVybCwgbm9kZV9pbmZvLCBj YWNoZV9sZXZlbCk7CisKKyAgICAgICAgICAgICAgICAgIC8vIEZldGNoIHRv a2VuL2RpY3Rpb25hcnkgbGlzdAorICAgICAgICAgICAgICAgICAgaWYgKHRo aXMuZmllbGQuZ2V0KCd2ZXJzaW9uX2NvbXBhdGlibGUnKSAmJgorICAgICAg ICAgICAgICAgICAgICAoXy5pc1VuZGVmaW5lZChkYXRhKSB8fCBfLmlzTnVs bChkYXRhKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgbS50cmlnZ2VyKCdw Z2FkbWluOnZpZXc6ZmV0Y2hpbmcnLCBtLCBzZWxmLmZpZWxkKTsKKyAgICAg ICAgICAgICAgICAgICAgJC5hamF4KHsKKyAgICAgICAgICAgICAgICAgICAg ICBhc3luYzogZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgdXJsOiBm dWxsX3VybCwKKyAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5j dGlvbihyZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAvKgorICAgICAg ICAgICAgICAgICAgICAgICAqIFdlIHdpbGwgY2FjaGUgdGhpcyBkYXRhIGZv ciBzaG9ydCBwZXJpb2Qgb2YgdGltZSBmb3IgYXZvaWRpbmcKKyAgICAgICAg ICAgICAgICAgICAgICAgKiBzYW1lIGNhbGxzLgorICAgICAgICAgICAgICAg ICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGNh Y2hlX25vZGUuY2FjaGUodXJsLCBub2RlX2luZm8sIGNhY2hlX2xldmVsLCBy ZXMuZGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg ICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oKSB7CisgICAgICAgICAg ICAgICAgICAgICAgICBtLnRyaWdnZXIoJ3BnYWRtaW46dmlldzpmZXRjaDpl cnJvcicsIG0sIHNlbGYuZmllbGQpOworICAgICAgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg ICAgIG0udHJpZ2dlcigncGdhZG1pbjp2aWV3OmZldGNoZWQnLCBtLCBzZWxm LmZpZWxkKTsKKyAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg ICAgICAgLy8gSXQgaXMgZmVhc2libGUgdGhhdCB0aGUgZGF0YSBtYXkgbm90 IGhhdmUgYmVlbiBmZXRjaGVkLgorICAgICAgICAgICAgICAgICAgZGF0YSA9 IChkYXRhICYmIGRhdGEuZGF0YSkgfHwgW107CisKKyAgICAgICAgICAgICAg ICAgIC8qCisgICAgICAgICAgICAgICAgICAgKiBUcmFuc2Zvcm0gdGhlIGRh dGEKKyAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAg dHJhbnNmb3JtID0gdGhpcy5maWVsZC5nZXQoJ3RyYW5zZm9ybScpIHx8IHNl bGYuZGVmYXVsdHMudHJhbnNmb3JtOworICAgICAgICAgICAgICAgICAgaWYg KHRyYW5zZm9ybSAmJiBfLmlzRnVuY3Rpb24odHJhbnNmb3JtKSkgeworICAg ICAgICAgICAgICAgICAgICBzZWxmLmZpZWxkLnNldCgnb3B0aW9ucycsIHRy YW5zZm9ybS5iaW5kKHNlbGYsIGRhdGEpKTsKKyAgICAgICAgICAgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmllbGQuc2V0 KCdvcHRpb25zJywgZGF0YSk7CisgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9 KSwKKyAgICAgICAgICAgIC8vIFNlbGVjdDIgY29udHJvbCBmb3IgYWRkaW5n IG5ldyB0b2tlbnMKKyAgICAgICAgICAgIHNlbGVjdDI6IHsKKyAgICAgICAg ICAgICAgICBhbGxvd0NsZWFyOiB0cnVlLCB3aWR0aDogJ3N0eWxlJywKKyAg ICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCB0b2tlbicKKyAg ICAgICAgICAgICAgfSwgZmlyc3RfZW1wdHk6IHRydWUsCisgICAgICAgICAg ICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAgICAg cmV0dXJuIF8uaXNVbmRlZmluZWQoc2VsZi5tb2RlbC5nZXQoJ29pZCcpKTsK KyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfV0sCisgICAgICAgICAg aGVhZGVyRGVmYXVsdHMgPSB7dG9rZW46IG51bGx9LAorICAgICAgICAgIC8v IEdyaWQgY29sdW1ucyBiYWNrZ3JpZAorICAgICAgICAgIGdyaWRDb2xzID0g Wyd0b2tlbicsICdkaWN0bmFtZSddOworCisgICAgICAvLyBDcmVhdGluZyBt b2RlbCBmb3IgaGVhZGVyIGNvbnRyb2wgd2hpY2ggaXMgdXNlZCB0byBhZGQg bmV3IHRva2VucworICAgICAgc2VsZi5oZWFkZXJEYXRhID0gbmV3IChCYWNr Ym9uZS5Nb2RlbC5leHRlbmQoeworICAgICAgICBkZWZhdWx0czogaGVhZGVy RGVmYXVsdHMsCisgICAgICAgIHNjaGVtYTogaGVhZGVyU2NoZW1hCisgICAg ICB9KSkoe30pOworCisgICAgICAvLyBDcmVhdGluZyB2aWV3IGZyb20gaGVh ZGVyIHNjaGVtYQorICAgICAgdmFyIGhlYWRlckdyb3VwcyA9IEJhY2tmb3Jt LmdlbmVyYXRlVmlld1NjaGVtYSgKKyAgICAgICAgICBzZWxmLmZpZWxkLmdl dCgnbm9kZV9pbmZvJyksIHNlbGYuaGVhZGVyRGF0YSwgJ2NyZWF0ZScsCisg ICAgICAgICAgc2VsZi5maWVsZC5nZXQoJ3NjaGVtYV9ub2RlJyksIHNlbGYu ZmllbGQuZ2V0KCdub2RlX2RhdGEnKQorICAgICAgICAgICksCisgICAgICAg ICAgZmllbGRzID0gW107CisKKyAgICAgIF8uZWFjaChoZWFkZXJHcm91cHMs IGZ1bmN0aW9uKG8pIHsKKyAgICAgICAgZmllbGRzID0gZmllbGRzLmNvbmNh dChvLmZpZWxkcyk7CisgICAgICB9KTsKKyAgICAgIHNlbGYuaGVhZGVyRmll bGRzID0gbmV3IEJhY2tmb3JtLkZpZWxkcyhmaWVsZHMpOworCisgICAgICAv LyBjcmVhdGluZyBncmlkIHVzaW5nIGdyaWQgY29sdW1ucworICAgICAgc2Vs Zi5ncmlkU2NoZW1hID0gQmFja2Zvcm0uZ2VuZXJhdGVHcmlkQ29sdW1uc0Zy b21Nb2RlbCgKKyAgICAgICAgICBzZWxmLmZpZWxkLmdldCgnbm9kZV9pbmZv JyksIHNlbGYuZmllbGQuZ2V0KCdtb2RlbCcpLAorICAgICAgICAgICdlZGl0 JywgZ3JpZENvbHMsIHNlbGYuZmllbGQuZ2V0KCdzY2hlbWFfbm9kZScpCisg ICAgICAgICAgKTsKKworICAgICAgLy8gUHJvdmlkaW5nIGJlaGF2aW91ciBj b250cm9sIGZ1bmN0aW9ucyB0byBoZWFkZXIgYW5kIGdyaWQgY29udHJvbAor ICAgICAgc2VsZi5jb250cm9scyA9IFtdOworICAgICAgc2VsZi5saXN0ZW5U byhzZWxmLmhlYWRlckRhdGEsICJjaGFuZ2UiLCBzZWxmLmhlYWRlckRhdGFD aGFuZ2VkKTsKKyAgICAgIHNlbGYubGlzdGVuVG8oc2VsZi5oZWFkZXJEYXRh LCAic2VsZWN0MiIsIHNlbGYuaGVhZGVyRGF0YUNoYW5nZWQpOworICAgICAg c2VsZi5saXN0ZW5UbyhzZWxmLmNvbGxlY3Rpb24sICJhZGQiLCBzZWxmLm9u QWRkb3JSZW1vdmVUb2tlbnMpOworICAgICAgc2VsZi5saXN0ZW5UbyhzZWxm LmNvbGxlY3Rpb24sICJyZW1vdmUiLCBzZWxmLm9uQWRkb3JSZW1vdmVUb2tl bnMpOworICAgIH0sCisKKyAgICAvLyBUZW1wbGF0ZSBmb3IgY3JlYXRpbmcg aGVhZGVyIHZpZXcKKyAgICBnZW5lcmF0ZUhlYWRlcjogZnVuY3Rpb24oZGF0 YSkgeworICAgICAgdmFyIGhlYWRlciA9IFsKKyAgICAgICAgJzxkaXYgY2xh c3M9InN1Ym5vZGUtaGVhZGVyLWZvcm0iPicsCisgICAgICAgICcgPGRpdiBj bGFzcz0iY29udGFpbmVyLWZsdWlkIj4nLAorICAgICAgICAnICA8ZGl2IGNs YXNzPSJyb3ciPicsCisgICAgICAgICcgICA8ZGl2IGNsYXNzPSJjb2wteHMt NCI+JywKKyAgICAgICAgJyAgICA8bGFiZWwgY2xhc3M9ImNvbnRyb2wtbGFi ZWwiPjwlLXRva2VuX2xhYmVsJT48L2xhYmVsPicsCisgICAgICAgICcgICA8 L2Rpdj4nLAorICAgICAgICAnICAgPGRpdiBjbGFzcz0iY29sLXhzLTQiIGhl YWRlcj0idG9rZW4iPjwvZGl2PicsCisgICAgICAgICcgICA8ZGl2IGNsYXNz PSJjb2wteHMtNCI+JywKKyAgICAgICAgJyAgICAgPGJ1dHRvbiBjbGFzcz0i YnRuLXNtIGJ0bi1kZWZhdWx0IGFkZCIgPCU9Y2FuQWRkID8gIiIgOiAiZGlz YWJsZWQ9XCdkaXNhYmxlZFwnIiU+ID48JS1hZGRfbGFiZWwlPjwvYnV0dHRv bj4nLAorICAgICAgICAnICAgPC9kaXY+JywKKyAgICAgICAgJyAgPC9kaXY+ JywKKyAgICAgICAgJyA8L2Rpdj4nLAorICAgICAgICAnPC9kaXY+JyxdLmpv aW4oIlxuIikKKworICAgICAgXy5leHRlbmQoZGF0YSwgeworICAgICAgICB0 b2tlbl9sYWJlbDogJ3t7IF8oJ1Rva2VucycpfX0nLAorICAgICAgICBhZGRf bGFiZWw6ICd7eyBfKCdBREQnKX19JworICAgICAgfSk7CisKKyAgICAgIHZh ciBzZWxmID0gdGhpcywKKyAgICAgICAgICBoZWFkZXJUbXBsID0gXy50ZW1w bGF0ZShoZWFkZXIpLAorICAgICAgICAgICRoZWFkZXIgPSAkKGhlYWRlclRt cGwoZGF0YSkpLAorICAgICAgICAgIGNvbnRyb2xzID0gdGhpcy5jb250cm9s czsKKworICAgICAgc2VsZi5oZWFkZXJGaWVsZHMuZWFjaChmdW5jdGlvbihm aWVsZCkgeworICAgICAgICB2YXIgY29udHJvbCA9IG5ldyAoZmllbGQuZ2V0 KCJjb250cm9sIikpKHsKKyAgICAgICAgICBmaWVsZDogZmllbGQsCisgICAg ICAgICAgbW9kZWw6IHNlbGYuaGVhZGVyRGF0YQorICAgICAgICB9KTsKKwor ICAgICAgICAkaGVhZGVyLmZpbmQoJ2RpdltoZWFkZXI9IicgKyBmaWVsZC5n ZXQoJ25hbWUnKSArICciXScpLmFwcGVuZCgKKyAgICAgICAgICBjb250cm9s LnJlbmRlcigpLiRlbAorICAgICAgICApOworCisgICAgICAgIGNvbnRyb2wu JGVsLmZpbmQoJy5jb250cm9sLWxhYmVsJykucmVtb3ZlKCk7CisKKyAgICAg ICAgY29udHJvbHMucHVzaChjb250cm9sKTsKKyAgICAgIH0pOworCisgICAg ICAvLyBXZSBzaG91bGQgbm90IHNob3cgYWRkIGJ1dHRvbiBpbiBwcm9wZXJ0 aWVzIG1vZGUKKyAgICAgIGlmIChkYXRhLm1vZGUgPT0gJ3Byb3BlcnRpZXMn KSB7CisgICAgICAgICRoZWFkZXIuZmluZCgiYnV0dG9uLmFkZCIpLnJlbW92 ZSgpOworICAgICAgfQorICAgICAgc2VsZi4kaGVhZGVyID0gJGhlYWRlcjsK KyAgICAgIHJldHVybiAkaGVhZGVyOworICAgIH0sCisKKyAgICAvLyBQcm92 aWRpbmcgZXZlbnQgaGFuZGxlciBmb3IgYWRkIGJ1dHRvbiBpbiBoZWFkZXIK KyAgICBldmVudHM6IF8uZXh0ZW5kKAorICAgICAgICAgICAgICB7fSwgQmFj a2Zvcm0uVW5pcXVlQ29sQ29sbGVjdGlvbkNvbnRyb2wucHJvdG90eXBlLmV2 ZW50cywKKyAgICAgICAgICAgICAgeydjbGljayBidXR0b24uYWRkJzogJ2Fk ZFRva2Vucyd9CisgICAgICAgICAgICApLAorCisgICAgLy8gU2hvdyB0b2tl bi9kaWN0aW9uYXJ5IGdyaWQKKyAgICBzaG93R3JpZENvbnRyb2w6IGZ1bmN0 aW9uKGRhdGEpIHsKKworICAgICAgdmFyIHNlbGYgPSB0aGlzLAorICAgICAg ICAgIHRpdGxlVG1wbCA9IF8udGVtcGxhdGUoIjxkaXYgY2xhc3M9J3N1Ym5v ZGUtaGVhZGVyJz48L2Rpdj4iKSwKKyAgICAgICAgICAkZ3JpZEJvZHkgPQor ICAgICAgICAgICAgJCgiPGRpdiBjbGFzcz0ncGdhZG1pbi1jb250cm9sLWdy b3VwIGJhY2tncmlkIGZvcm0tZ3JvdXAgY29sLXhzLTEyIG9iamVjdCBzdWJu b2RlJz48L2Rpdj4iKS5hcHBlbmQoCisgICAgICAgICAgICAgIHRpdGxlVG1w bCh7bGFiZWw6IGRhdGEubGFiZWx9KQorICAgICAgICAgICAgKTsKKworICAg ICAgJGdyaWRCb2R5LmFwcGVuZChzZWxmLmdlbmVyYXRlSGVhZGVyKGRhdGEp KTsKKworICAgICAgdmFyIGdyaWRDb2x1bW5zID0gXy5jbG9uZSh0aGlzLmdy aWRTY2hlbWEuY29sdW1ucyk7CisKKyAgICAgIC8vIEluc2VydCBEZWxldGUg Q2VsbCBpbnRvIEdyaWQKKyAgICAgIGlmIChkYXRhLmRpc2FibGVkID09IGZh bHNlICYmIGRhdGEuY2FuRGVsZXRlKSB7CisgICAgICAgICAgZ3JpZENvbHVt bnMudW5zaGlmdCh7CisgICAgICAgICAgICBuYW1lOiAicGctYmFja2Zvcm0t ZGVsZXRlIiwgbGFiZWw6ICIiLAorICAgICAgICAgICAgY2VsbDogQmFja2dy aWQuRXh0ZW5zaW9uLkRlbGV0ZUNlbGwsCisgICAgICAgICAgICBlZGl0YWJs ZTogZmFsc2UsIGNlbGxfcHJpb3JpdHk6IC0xCisgICAgICAgICAgfSk7Cisg ICAgICB9CisKKyAgICAgIGlmIChzZWxmLmdyaWQpIHsKKyAgICAgICAgc2Vs Zi5ncmlkLnJlbW92ZSgpOworICAgICAgICBzZWxmLmdyaWQubnVsbDsKKyAg ICAgIH0KKyAgICAgIC8vIEluaXRpYWxpemUgYSBuZXcgR3JpZCBpbnN0YW5j ZQorICAgICAgdmFyIGdyaWQgPSBzZWxmLmdyaWQgPSBuZXcgQmFja2dyaWQu R3JpZCh7CisgICAgICAgIGNvbHVtbnM6IGdyaWRDb2x1bW5zLAorICAgICAg ICBjb2xsZWN0aW9uOiBzZWxmLmNvbGxlY3Rpb24sCisgICAgICAgIGNsYXNz TmFtZTogImJhY2tncmlkIHRhYmxlLWJvcmRlcmVkIgorICAgICAgfSk7Cisg ICAgICBzZWxmLiRncmlkID0gZ3JpZC5yZW5kZXIoKS4kZWw7CisKKyAgICAg ICRncmlkQm9keS5hcHBlbmQoc2VsZi4kZ3JpZCk7CisKKyAgICAgIC8vIEZp bmQgc2VsZWN0ZWQgZGljdGlvbmFyaWVzIGluIGdyaWQgYW5kIHNob3cgaXQg YWxsIHRvZ2V0aGVyCisgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewor ICAgICAgICBzZWxmLmhlYWRlckRhdGEuc2V0KHsKKyAgICAgICAgICAndG9r ZW4nOiBzZWxmLiRoZWFkZXIuZmluZCgKKyAgICAgICAgICAgICdkaXZbaGVh ZGVyPSJ0b2tlbiJdIHNlbGVjdCcKKyAgICAgICAgICAgICkudmFsKCkKKyAg ICAgICAgICAgIH0sIHtzaWxlbnQ6dHJ1ZX0KKyAgICAgICAgICApOworICAg ICAgfSwgMTApOworCisgICAgICAvLyBSZW5kZXIgbm9kZSBncmlkCisgICAg ICByZXR1cm4gJGdyaWRCb2R5OworICAgIH0sCisKKyAgICAvLyBXaGVuIHVz ZXIgY2hhbmdlIHRoZSBoZWFkZXIgY29udHJvbCB0byBhZGQgYSBuZXcgdG9r ZW4KKyAgICBoZWFkZXJEYXRhQ2hhbmdlZDogZnVuY3Rpb24oKSB7CisgICAg ICB2YXIgc2VsZiA9IHRoaXMsIHZhbCwKKyAgICAgICAgICBkYXRhID0gdGhp cy5oZWFkZXJEYXRhLnRvSlNPTigpLAorICAgICAgICAgIGluU2VsZWN0ZWQg PSBmYWxzZSwKKyAgICAgICAgICBjaGVja1ZhcnMgPSBbJ3Rva2VuJ107CisK KyAgICAgIGlmICghc2VsZi4kaGVhZGVyKSB7CisgICAgICAgIHJldHVybjsK KyAgICAgIH0KKworICAgICAgaWYgKHNlbGYuY29udHJvbF9kYXRhLmNhbkFk ZCkgeworICAgICAgICBzZWxmLmNvbGxlY3Rpb24uZWFjaChmdW5jdGlvbiht KSB7CisgICAgICAgICAgaWYgKCFpblNlbGVjdGVkKSB7CisgICAgICAgICAg ICBfLmVhY2goY2hlY2tWYXJzLCBmdW5jdGlvbih2KSB7CisgICAgICAgICAg ICAgIGlmICghaW5TZWxlY3RlZCkgeworICAgICAgICAgICAgICAgIHZhbCA9 IG0uZ2V0KHYpOworICAgICAgICAgICAgICAgIGluU2VsZWN0ZWQgPSAoKAor ICAgICAgICAgICAgICAgICAgKF8uaXNVbmRlZmluZWQodmFsKSB8fCBfLmlz TnVsbCh2YWwpKSAmJgorICAgICAgICAgICAgICAgICAgKF8uaXNVbmRlZmlu ZWQoZGF0YVt2XSkgfHwgXy5pc051bGwoZGF0YVt2XSkpCisgICAgICAgICAg ICAgICAgICApIHx8CisgICAgICAgICAgICAgICAgICAodmFsID09IGRhdGFb dl0pKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAg ICAgICAgfQorICAgICAgICB9KTsKKyAgICAgIH0KKyAgICAgIGVsc2Ugewor ICAgICAgICBpblNlbGVjdGVkID0gdHJ1ZTsKKyAgICAgIH0KKworICAgICAg c2VsZi4kaGVhZGVyLmZpbmQoJ2J1dHRvbi5hZGQnKS5wcm9wKCdkaXNhYmxl ZCcsIGluU2VsZWN0ZWQpOworICAgIH0sCisKKyAgICAvLyBHZXQgY2FsbGVk IHdoZW4gdXNlciBjbGljayBvbiBhZGQgYnV0dG9uIGhlYWRlcgorICAgIGFk ZFRva2VuczogZnVuY3Rpb24oZXYpIHsKKyAgICAgIGV2LnByZXZlbnREZWZh dWx0KCk7CisgICAgICB2YXIgc2VsZiA9IHRoaXMsCisgICAgICAgICAgdG9r ZW4gPSBzZWxmLmhlYWRlckRhdGEuZ2V0KCd0b2tlbicpOworCisgICAgICBp ZiAoIXRva2VuIHx8IHRva2VuID09ICcnKSB7CisgICAgICAgIHJldHVybiBm YWxzZTsKKyAgICAgIH0KKworICAgICAgdmFyIGNvbGwgPSBzZWxmLm1vZGVs LmdldChzZWxmLmZpZWxkLmdldCgnbmFtZScpKSwKKyAgICAgICAgICBtID0g bmV3IChzZWxmLmZpZWxkLmdldCgnbW9kZWwnKSkoCisgICAgICAgICAgICAg ICAgc2VsZi5oZWFkZXJEYXRhLnRvSlNPTigpLCB7CisgICAgICAgICAgICAg ICAgICBzaWxlbnQ6IHRydWUsIHRvcDogc2VsZi5tb2RlbC50b3AsCisgICAg ICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsLCBoYW5kbGVyOiBjb2xs CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgIC8vIEFkZCBuZXcgcm93 IGluIGdyaWQKKyAgICAgIGNvbGwuYWRkKG0pOworCisgICAgICAvLyBJbmRl eCBvZiBuZXdseSBjcmVhdGVkIHJvdyBpbiBncmlkCisgICAgICB2YXIgaWR4 ID0gY29sbC5pbmRleE9mKG0pOworCisgICAgICAvLyBpZHggbWF5IG5vdCBi ZSBhbHdheXMgPiAtMSBiZWNhdXNlIG91ciBVbmlxdWVDb2xDb2xsZWN0aW9u IG1heQorICAgICAgLy8gcmVtb3ZlICdtJyBpZiBkdXBsaWNhdGUgdmFsdWUg Zm91bmQuCisgICAgICBpZiAoaWR4ID4gLTEpIHsKKyAgICAgICAgc2VsZi4k Z3JpZC5maW5kKCcubmV3JykucmVtb3ZlQ2xhc3MoJ25ldycpOworCisgICAg ICAgIHZhciBuZXdSb3cgPSBzZWxmLmdyaWQuYm9keS5yb3dzW2lkeF0uJGVs OworCisgICAgICAgIG5ld1Jvdy5hZGRDbGFzcygibmV3Iik7CisgICAgICAg ICQobmV3Um93KS5wZ01ha2VWaXNpYmxlKCdiYWNrZm9ybS10YWInKTsKKyAg ICAgIH0gZWxzZSB7CisgICAgICAgIGRlbGV0ZSBtOworICAgICAgfQorCisg ICAgICByZXR1cm4gZmFsc2U7CisgICAgfSwKKworICAgIC8vIFdoZW4gdXNl ciBkZWxldGUgdG9rZW4vZGljdGlvbmFyeSBlbnRyeSBmcm9tIGdyaWQKKyAg ICBvbkFkZG9yUmVtb3ZlVG9rZW5zOiBmdW5jdGlvbigpIHsKKyAgICAgIHZh ciBzZWxmID0gdGhpczsKKworICAgICAgLyoKKyAgICAgICAqIFdhaXQgZm9y IGNvbGxlY3Rpb24gdG8gYmUgdXBkYXRlZCBiZWZvcmUgY2hlY2tpbmcgZm9y IHRoZSBidXR0b24gdG8gYmUKKyAgICAgICAqIGVuYWJsZWQsIG9yIG5vdC4K KyAgICAgICAqLworICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg ICAgICAgICBzZWxmLmNvbGxlY3Rpb24udHJpZ2dlcigncGdhZG1pbjp0b2tl bnM6dXBkYXRlZCcsIHNlbGYuY29sbGVjdGlvbik7CisgICAgICAgIHNlbGYu aGVhZGVyRGF0YUNoYW5nZWQoKTsKKyAgICAgIH0sIDEwKTsKKyAgICB9LAor CisgICAgLy8gV2hlbiBjb250cm9sIGlzIGFib3V0IHRvIGRlc3Ryb3kKKyAg ICByZW1vdmU6IGZ1bmN0aW9uKCkgeworICAgICAgLyoKKyAgICAgICAqIFN0 b3AgbGlzdGVuaW5nIHRoZSBldmVudHMgcmVnaXN0ZXJlZCBieSB0aGlzIGNv bnRyb2wuCisgICAgICAgKi8KKyAgICAgIHRoaXMuc3RvcExpc3RlbmluZyh0 aGlzLmhlYWRlckRhdGEsICJjaGFuZ2UiLCB0aGlzLmhlYWRlckRhdGFDaGFu Z2VkKTsKKyAgICAgIHRoaXMubGlzdGVuVG8odGhpcy5oZWFkZXJEYXRhLCAi c2VsZWN0MiIsIHRoaXMuaGVhZGVyRGF0YUNoYW5nZWQpOworICAgICAgdGhp cy5saXN0ZW5Ubyh0aGlzLmNvbGxlY3Rpb24sICJyZW1vdmUiLCB0aGlzLm9u QWRkb3JSZW1vdmVUb2tlbnMpOworCisgICAgICBUb2tlbkNvbnRyb2wuX19z dXBlcl9fLnJlbW92ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworCisgICAg ICAvLyBSZW1vdmUgdGhlIGhlYWRlciBtb2RlbAorICAgICAgZGVsZXRlICh0 aGlzLmhlYWRlckRhdGEpOworCisgICAgfQorICB9KTsKKworCisgIC8vIEV4 dGVuZCB0aGUgY29sbGVjdGlvbiBjbGFzcyBmb3IgRlRTIENvbmZpZ3VyYXRp b24KKyAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtZnRzX2NvbmZpZ3Vy YXRpb24nXSkgeworICAgIHZhciBmdHNfZGljdGlvbmFyaWVzID0gcGdBZG1p bi5Ccm93c2VyLk5vZGVzWydjb2xsLWZ0c19jb25maWd1cmF0aW9uJ10gPQor ICAgICAgcGdBZG1pbi5Ccm93c2VyLkNvbGxlY3Rpb24uZXh0ZW5kKHsKKyAg ICAgICAgbm9kZTogJ2Z0c19jb25maWd1cmF0aW9uJywKKyAgICAgICAgbGFi ZWw6ICd7eyBfKCdGVFMgQ29uZmlndXJhdGlvbnMnKSB9fScsCisgICAgICAg IHR5cGU6ICdjb2xsLWZ0c19jb25maWd1cmF0aW9uJywKKyAgICAgICAgY29s dW1uczogWyduYW1lJywgJ2Rlc2NyaXB0aW9uJ10KKyAgICAgIH0pOworICB9 OworCisgIC8vIEV4dGVuZCB0aGUgbm9kZSBjbGFzcyBmb3IgRlRTIENvbmZp Z3VyYXRpb24KKyAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2Z0c19jb25maWd1 cmF0aW9uJ10pIHsKKyAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2Z0c19j b25maWd1cmF0aW9uJ10gPSBwZ0FkbWluLkJyb3dzZXIuTm9kZS5leHRlbmQo eworICAgICAgcGFyZW50X3R5cGU6IFsnc2NoZW1hJywgJ2NhdGFsb2cnXSwK KyAgICAgIHR5cGU6ICdmdHNfY29uZmlndXJhdGlvbicsCisgICAgICBzcWxB bHRlckhlbHA6ICdzcWwtYWx0ZXJ0c2NvbmZpZ3VyYXRpb24uaHRtbCcsCisg ICAgICBzcWxDcmVhdGVIZWxwOiAnc3FsLWNyZWF0ZXRzY29uZmlndXJhdGlv bi5odG1sJywKKyAgICAgIGNhbkRyb3A6IHRydWUsCisgICAgICBjYW5Ecm9w Q2FzY2FkZTogdHJ1ZSwKKyAgICAgIGxhYmVsOiAne3sgXygnRlRTIGRpY3Rp b25hcmllcycpIH19JywKKyAgICAgIGhhc1NRTDogdHJ1ZSwKKyAgICAgIGhh c0RlcGVuZHM6IHRydWUsCisgICAgICBJbml0OiBmdW5jdGlvbigpIHsKKwor ICAgICAgICAvLyBBdm9pZCBtdWx0aXBsZSByZWdpc3RyYXRpb24gb2YgbWVu dXMKKyAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpCisgICAgICAgICAg cmV0dXJuOworCisgICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlOwor CisgICAgICAgIC8vIEFkZCBjb250ZXh0IG1lbnVzIGZvciBGVFMgQ29uZmln dXJhdGlvbgorICAgICAgICBwZ0Jyb3dzZXIuYWRkX21lbnVzKFt7CisgICAg ICAgICAgbmFtZTogJ2NyZWF0ZV9mdHNfY29uZmlndXJhdGlvbl9vbl9zY2hl bWEnLCBub2RlOiAnc2NoZW1hJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAg IGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdz aG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2Ny ZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7XygnRlRTIENvbmZpZ3Vy YXRpb24uLi4nKX19JywKKyAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGlj b24tZnRzX2NvbmZpZ3VyYXRpb24nLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRl J30KKyAgICAgICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX2Z0 c19jb25maWd1cmF0aW9uX29uX2NvbGwnLCBub2RlOiAnY29sbC1mdHNfY29u ZmlndXJhdGlvbicsCisgICAgICAgICAgbW9kdWxlOiB0aGlzLCBhcHBsaWVz OiBbJ29iamVjdCcsICdjb250ZXh0J10sICBwcmlvcml0eTogNCwKKyAgICAg ICAgICBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLCBjYXRlZ29y eTogJ2NyZWF0ZScsCisgICAgICAgICAgbGFiZWw6ICd7eyBfKCdGVFMgQ29u ZmlndXJhdGlvbi4uLicpIH19JywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZSd9 LAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi1mdHNfY29uZmln dXJhdGlvbicKKyAgICAgICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAnY3Jl YXRlX2Z0c19jb25maWd1cmF0aW9uJywgbm9kZTogJ2Z0c19jb25maWd1cmF0 aW9uJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsnb2Jq ZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0 aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5 OiA0LCBsYWJlbDogJ3t7XygnRlRTIENvbmZpZ3VyYXRpb24uLi4nKX19JywK KyAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24tZnRzX2NvbmZpZ3Vy YXRpb24nLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJ30KKyAgICAgICAgICB9 XSk7CisgICAgICB9LAorCisgICAgICAvLyBEZWZpbmluZyBtb2RlbCBmb3Ig RlRTIENvbmZpZ3VyYXRpb24gbm9kZQorICAgICAgbW9kZWw6IHBnQWRtaW4u QnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgICAgIGRlZmF1bHRz OiB7CisgICAgICAgICAgbmFtZTogdW5kZWZpbmVkLCAgICAgICAgLy8gRlRT IENvbmZpZ3VyYXRpb24gbmFtZQorICAgICAgICAgIG93bmVyOiB1bmRlZmlu ZWQsICAgICAgIC8vIEZUUyBDb25maWd1cmF0aW9uIG93bmVyCisgICAgICAg ICAgZGVzY3JpcHRpb246IHVuZGVmaW5lZCwgLy8gQ29tbWVudCBvbiBGVFMg Q29uZmlndXJhdGlvbgorICAgICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLCAg ICAgIC8vIFNjaGVtYSBuYW1lIEZUUyBDb25maWd1cmF0aW9uIGJlbG9uZ3Mg dG8KKyAgICAgICAgICBwcnNuYW1lOiB1bmRlZmluZWQsICAgIC8vIEZUUyBw YXJzZXIgbGlzdCBmb3IgRlRTIENvbmZpZ3VyYXRpb24gbm9kZQorICAgICAg ICAgIGNvcHlfY29uZmlnOiB1bmRlZmluZWQgLy8gRlRTIGNvbmZpZ3VyYXRp b24gbGlzdCB0byBjb3B5IGZyb20KKyAgICAgICAgICB0b2tlbnM6IHVuZGVm aW5lZCAgICAgIC8vIHRva2VuL2RpY3Rpb25hcnkgcGFpciBsaXN0IGZvciBu b2RlCisgICAgICAgIH0sCisgICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9u KGF0dHJzLCBhcmdzKSB7CisgICAgICAgICAgdmFyIGlzTmV3ID0gKF8uc2l6 ZShhdHRycykgPT09IDApOworCisgICAgICAgICAgaWYgKGlzTmV3KSB7Cisg ICAgICAgICAgICB2YXIgdXNlckluZm8gPSBwZ0Jyb3dzZXIuc2VydmVySW5m b1thcmdzLm5vZGVfaW5mby5zZXJ2ZXIuX2lkXS51c2VyOworICAgICAgICAg ICAgdGhpcy5zZXQoeydvd25lcic6IHVzZXJJbmZvLm5hbWV9LCB7c2lsZW50 OiB0cnVlfSk7CisgICAgICAgICAgfQorICAgICAgICAgIHBnQWRtaW4uQnJv d3Nlci5Ob2RlLk1vZGVsLnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KHRo aXMsIGFyZ3VtZW50cyk7CisgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQo dGhpcy5nZXQoJ3NjaGVtYScpKSkgeworICAgICAgICAgICAgICB0aGlzLnNl dCgnc2NoZW1hJywgdGhpcy5ub2RlX2luZm8uc2NoZW1hLl9pZCk7CisgICAg ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAvLyBEZWZpbmluZyBzY2hl bWEgZm9yIEZUUyBDb25maWd1cmF0aW9uCisgICAgICAgIHNjaGVtYTogW3sK KyAgICAgICAgICBpZDogJ25hbWUnLCBsYWJlbDogJ3t7IF8oJ05hbWUnKSB9 fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0Jywg Y2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzUwJworICAgICAg ICB9LHsKKyAgICAgICAgICBpZDogJ29pZCcsIGxhYmVsOid7eyBfKCdPSUQn KSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIGVkaXRhYmxlOiBm YWxzZSwgdHlwZTogJ3RleHQnLCBkaXNhYmxlZDogdHJ1ZSwgbW9kZTpbJ3By b3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ293bmVy JywgbGFiZWw6J3t7IF8oJ093bmVyJykgfX0nLCBjZWxsOiAnc3RyaW5nJywK KyAgICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcycs ICdlZGl0JywnY3JlYXRlJ10sIG5vZGU6ICdyb2xlJywKKyAgICAgICAgICBj b250cm9sOiBCYWNrZm9ybS5Ob2RlTGlzdEJ5TmFtZUNvbnRyb2wKKyAgICAg ICAgfSx7CisgICAgICAgICAgaWQ6ICdzY2hlbWEnLCBsYWJlbDogJ3t7IF8o J1NjaGVtYScpfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBl OiAndGV4dCcsIG1vZGU6IFsnY3JlYXRlJywnZWRpdCddLCBub2RlOiAnc2No ZW1hJywKKyAgICAgICAgICBjb250cm9sOiAnbm9kZS1saXN0LWJ5LWlkJwor ICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2Rlc2NyaXB0aW9uJywgbGFi ZWw6J3t7IF8oJ0NvbW1lbnQnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAg ICAgICAgIHR5cGU6ICdtdWx0aWxpbmUnLCBjZWxsSGVhZGVyQ2xhc3Nlczog J3dpZHRoX3BlcmNlbnRfNTAnCisgICAgICAgIH0seworICAgICAgICAgIGlk OiAncHJzbmFtZScsIGxhYmVsOiAne3sgXygnUGFyc2VyJyl9fScsdHlwZTog J3RleHQnLAorICAgICAgICAgIHVybDogJ3BhcnNlcnMnLCBmaXJzdF9lbXB0 eTogdHJ1ZSwKKyAgICAgICAgICBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24n KSB9fScsIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsCisgICAgICAg ICAgZGVwczogWydjb3B5X2NvbmZpZyddLAorICAgICAgICAgIC8vZGlzYWJs ZSBwYXJzZXIgd2hlbiB1c2VyIHNlbGVjdCBjb3B5X2NvbmZpZyBtYW51YWxs eSBhbmQgdmljYS12ZXJzYQorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlv bihtKSB7CisgICAgICAgICAgICB2YXIgY29weV9jb25maWcgPSBtLmdldCgn Y29weV9jb25maWcnKTsKKyAgICAgICAgICAgIHJldHVybiBtLmlzTmV3KCkg JiYKKyAgICAgICAgICAgICAgICAgICAgKF8uaXNOdWxsKGNvcHlfY29uZmln KSB8fAorICAgICAgICAgICAgICAgICAgICBfLmlzVW5kZWZpbmVkKGNvcHlf Y29uZmlnKSB8fAorICAgICAgICAgICAgICAgICAgICBjb3B5X2NvbmZpZyA9 PT0gJycpID8gZmFsc2UgOiB0cnVlOworICAgICAgICAgIH0KKyAgICAgICAg fSx7CisgICAgICAgICAgaWQ6ICdjb3B5X2NvbmZpZycsIGxhYmVsOiAne3sg XygnQ29weSBDb25maWcnKX19Jyx0eXBlOiAndGV4dCcsCisgICAgICAgICAg bW9kZTogWydjcmVhdGUnXSwgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykg fX0nLAorICAgICAgICAgIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycs IHVybDogJ2NvcHlDb25maWcnLCBkZXBzOiBbJ3Byc25hbWUnXSwKKworICAg ICAgICAgIC8vZGlzYWJsZSBjb3B5X2NvbmZpZyB3aGVuIHVzZXIgc2VsZWN0 IHBhcnNlciBtYW51YWxseSBhbmQgdmljYS12ZXJzYQorICAgICAgICAgIGRp c2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICB2YXIgcGFyc2Vy ID0gbS5nZXQoJ3Byc25hbWUnKTsKKyAgICAgICAgICAgIHJldHVybiBtLmlz TmV3KCkgJiYKKyAgICAgICAgICAgICAgICAgICAgKF8uaXNOdWxsKHBhcnNl cikgfHwKKyAgICAgICAgICAgICAgICAgICAgXy5pc1VuZGVmaW5lZChwYXJz ZXIpIHx8CisgICAgICAgICAgICAgICAgICAgIHBhcnNlciA9PT0gJycpID8g ZmFsc2UgOiB0cnVlOworICAgICAgICAgIH0KKyAgICAgICAgfSx7CisgICAg ICAgICAgaWQ6ICd0b2tlbnMnLCBsYWJlbDogJ3t7IF8oJ1Rva2VucycpIH19 JywgdHlwZTogJ2NvbGxlY3Rpb24nLAorICAgICAgICAgIGdyb3VwOiAne3sg XygnVG9rZW5zJykgfX0nLCBjb250cm9sOiBUb2tlbkNvbnRyb2wsCisgICAg ICAgICAgbW9kZWw6IFRva2VuTW9kZWwsIGNvbHVtbnM6IFsndG9rZW4nLCAn ZGljdGlvbmFyeSddLAorICAgICAgICAgIHVuaXF1ZUNvbCA6IFsndG9rZW4n XSwgbW9kZTogWydjcmVhdGUnLCdlZGl0J10sCisgICAgICAgICAgY2FuQWRk OiB0cnVlLCBjYW5FZGl0OiBmYWxzZSwgY2FuRGVsZXRlOiB0cnVlCisgICAg ICAgICB9XSwKKworICAgICAgICAvKgorICAgICAgICAgKiBUcmlnZ2VycyBj b250cm9sIHNwZWNpZmljIGVycm9yIG1lc3NhZ2VzIGZvciBuYW1lLAorICAg ICAgICAgKiBjb3B5X2NvbmZpZy9wYXJzZXIgYW5kIHNjaGVtYSwgaWYgYW55 IG9uZSBvZiB0aGVtIGlzIG5vdCBzcGVjaWZpZWQKKyAgICAgICAgICogd2hp bGUgY3JlYXRpbmcgbmV3IGZ0cyBjb25maWd1cmF0aW9uCisgICAgICAgICAq LworICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24oa2V5cyl7CisgICAgICAg ICAgdmFyIG1zZzsKKyAgICAgICAgICB2YXIgbmFtZSA9IHRoaXMuZ2V0KCdu YW1lJyk7CisgICAgICAgICAgdmFyIHBhcnNlciA9IHRoaXMuZ2V0KCdwcnNu YW1lJyk7CisgICAgICAgICAgdmFyIGNvcHlfY29uZmlnX29yX3BhcnNlciA9 ICEocGFyc2VyID09PSAnJyB8fAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF8uaXNVbmRlZmluZWQocGFyc2VyKSB8fAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8uaXNOdWxs KHBhcnNlcikpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0aGlzLmdldCgncHJzbmFtZScpIDogdGhpcy5nZXQoJ2NvcHlf Y29uZmlnJyk7CisgICAgICAgICAgdmFyIHNjaGVtYSA9IHRoaXMuZ2V0KCdz Y2hlbWEnKTsKKworICAgICAgICAgIC8vIENsZWFyIHRoZSBleGlzdGluZyBl cnJvciBtb2RlbAorICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigp OworICAgICAgICAgIHRoaXMudHJpZ2dlcignb24tc3RhdHVzLWNsZWFyJyk7 CisKKyAgICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgbmFtZQorICAgICAgICAg IGlmIChfLmlzVW5kZWZpbmVkKG5hbWUpIHx8CisgICAgICAgICAgICAgIF8u aXNOdWxsKG5hbWUpIHx8CisgICAgICAgICAgICAgIFN0cmluZyhuYW1lKS5y ZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAg ICBtc2cgPSAne3sgXygnTmFtZSBtdXN0IGJlIHNwZWNpZmllZCEnKSB9fSc7 CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCduYW1lJywgbXNn KTsKKyAgICAgICAgICAgIHJldHVybiBtc2c7CisgICAgICAgICAgfQorCisg ICAgICAgICAgLy8gVmFsaWRhdGUgcGFyc2VyIG9yIGNvcHlfY29uZmlnCisg ICAgICAgICAgZWxzZSBpZiAoXy5pc1VuZGVmaW5lZChjb3B5X2NvbmZpZ19v cl9wYXJzZXIpIHx8CisgICAgICAgICAgICAgICAgICAgXy5pc051bGwoY29w eV9jb25maWdfb3JfcGFyc2VyKSB8fAorICAgICAgICAgICAgICAgICAgIFN0 cmluZyhjb3B5X2NvbmZpZ19vcl9wYXJzZXIpLnJlcGxhY2UoL15ccyt8XHMr JC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAgIG1zZyA9ICd7eyBfKCdT ZWxlY3QgcGFyc2VyIG9yIGNvbmZpZ3VyYXRpb24gdG8gY29weSEnKSB9fSc7 CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdwYXJzZXInLCBt c2cpOworICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICB9CisK KyAgICAgICAgICAvLyBWYWxpZGF0ZSBzY2hlbWEKKyAgICAgICAgICBlbHNl IGlmIChfLmlzVW5kZWZpbmVkKHNjaGVtYSkgfHwKKyAgICAgICAgICAgICAg ICAgICBfLmlzTnVsbChzY2hlbWEpIHx8CisgICAgICAgICAgICAgICAgICAg U3RyaW5nKHNjaGVtYSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAn JykgeworICAgICAgICAgICAgbXNnID0gJ3t7IF8oJ1NjaGVtYSBtdXN0IGJl IHNlbGVjdGVkIScpIH19JzsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2Rl bC5zZXQoJ3NjaGVtYScsIG1zZyk7CisgICAgICAgICAgICByZXR1cm4gbXNn OworICAgICAgICAgIH0KKworICAgICAgICAgIHJldHVybiBudWxsOworICAg ICAgICB9CisgICAgICB9KQorICAgIH0pOworICB9CisKK3JldHVybiBwZ0Jy b3dzZXIuTm9kZXNbJ2NvbGwtZnRzX2NvbmZpZ3VyYXRpb24nXTsKK30pOwpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2Nv bmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVzL2NvcHlfY29uZmlnLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRz X2NvbmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVzL2NvcHlfY29uZmlnLnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODRmYzAwCi0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3Vy YXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJhdGlvbi9zcWwvOS4xX3Bs dXMvY29weV9jb25maWcuc3FsCkBAIC0wLDAgKzEsMTUgQEAKK3sjIEZFVENI IGNvcHkgY29uZmlnIGZvciBGVFMgQ09ORklHVVJBVElPTiAjfQoreyUgaWYg Y29weV9jb25maWcgJX0KK1NFTEVDVAorICAgIGNmZy5vaWQsCisgICAgY2Zn bmFtZSwKKyAgICBuc3BuYW1lLAorICAgIG4ub2lkIGFzIHNjaGVtYW9pZAor RlJPTQorICAgIHBnX3RzX2NvbmZpZyBjZmcKKyAgICBKT0lOIHBnX25hbWVz cGFjZSBuCisgICAgT04gbi5vaWQ9Y2ZnbmFtZXNwYWNlCitPUkRFUiBCWQor ICAgIG5zcG5hbWUsCisgICAgY2ZnbmFtZQoreyUgZW5kaWYgJX0KXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1 cmF0aW9uL3NxbC85LjFfcGx1cy9jcmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJh dGlvbi9zcWwvOS4xX3BsdXMvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi4yNmQ3OWYzCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRl cy9mdHNfY29uZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMvY3JlYXRlLnNxbApA QCAtMCwwICsxLDE1IEBACit7IyBDUkVBVEUgRlRTIENPTkZJR1VSQVRJT04g U3RhdGVtZW50ICN9Cit7JSBpZiBkYXRhIGFuZCBkYXRhLnNjaGVtYSBhbmQg ZGF0YS5uYW1lICV9CitDUkVBVEUgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElP TiB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSkgfX0g KAoreyUgaWYgJ2NvcHlfY29uZmlnJyBpbiBkYXRhICV9CisgICAgQ09QWT17 eyBkYXRhLmNvcHlfY29uZmlnIH19Cit7JSBlbGlmICdwcnNuYW1lJyBpbiBk YXRhICV9CisgICAgUEFSU0VSID0ge3sgZGF0YS5wcnNuYW1lIH19Cit7JSBl bmRpZiAlfQorKTsKK3sjIERlc2NyaXB0aW9uIGZvciBGVFNfQ09ORklHVVJB VElPTiAjfQorCit7JSBpZiBkYXRhLmRlc2NyaXB0aW9uICV9CitDT01NRU5U IE9OIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04ge3sgY29ubnxxdElkZW50 KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpIH19CisgICAgSVMge3sgZGF0YS5k ZXNjcmlwdGlvbnxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAlfXslIGVuZGlm ICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9m dHNfY29uZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRz X2NvbmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVzL2RlbGV0ZS5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU4YjgyMAotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9u cy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVzL2Rl bGV0ZS5zcWwKQEAgLTAsMCArMSwyMiBAQAoreyMgRkVUQ0ggRlRTIENPTkZJ R1VSQVRJT04gTkFNRSBTdGF0ZW1lbnQgI30KK3slIGlmIGNmZ2lkICV9CitT RUxFQ1QKKyAgICBjZmcuY2ZnbmFtZSBhcyBuYW1lLAorICAgICgKKyAgICBT RUxFQ1QKKyAgICAgICAgbnNwbmFtZQorICAgIEZST00KKyAgICAgICAgcGdf bmFtZXNwYWNlCisgICAgV0hFUkUKKyAgICAgICAgb2lkID0gY2ZnLmNmZ25h bWVzcGFjZQorICAgICkgYXMgc2NoZW1hCitGUk9NCisgICAgcGdfdHNfY29u ZmlnIGNmZworV0hFUkUKKyAgICBjZmcub2lkID0ge3tjZmdpZH19OjpPSUQ7 Cit7JSBlbmRpZiAlfQorCit7IyBEUk9QIEZUUyBDT05GSUdVUkFUSU9OIFN0 YXRlbWVudCAjfQoreyUgaWYgc2NoZW1hIGFuZCBuYW1lICV9CitEUk9QIFRF WFQgU0VBUkNIIENPTkZJR1VSQVRJT04ge3tjb25ufHF0SWRlbnQoc2NoZW1h KX19Lnt7Y29ubnxxdElkZW50KG5hbWUpfX0geyUgaWYgY2FzY2FkZSAlfUNB U0NBREV7JWVuZGlmJX07Cit7JSBlbmRpZiAlfQpcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19j b25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3Fs LzkuMV9wbHVzL2RpY3Rpb25hcmllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9m dHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0aW9u L3NxbC85LjFfcGx1cy9kaWN0aW9uYXJpZXMuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwZTdiMGYKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxh dGVzL2Z0c19jb25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy9kaWN0aW9uYXJp ZXMuc3FsCkBAIC0wLDAgKzEsNyBAQAoreyMgRkVUQ0ggRElDVElPTkFSSUVT IHN0YXRlbWVudCAjfQorU0VMRUNUCisgICAgZGljdG5hbWUKK0ZST00KKyAg ICBwZ190c19kaWN0CitPUkRFUiBCWQorICAgIGRpY3RuYW1lClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJh dGlvbi9zcWwvOS4xX3BsdXMvbm9kZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJhdGlv bi9zcWwvOS4xX3BsdXMvbm9kZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmVjNTBhY2IKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0 c19jb25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy9ub2Rlcy5zcWwKQEAgLTAs MCArMSwxMyBAQAoreyMgRkVUQ0ggRlRTIENPTkZJR1VSQVRJT04gTkFNRSBz dGF0ZW1lbnQgI30KK1NFTEVDVAorICAgIG9pZCwgY2ZnbmFtZSBhcyBuYW1l CitGUk9NCisgICAgcGdfdHNfY29uZmlnIGNmZworV0hFUkUKK3slIGlmIHNj aWQgJX0KKyAgICBjZmcuY2ZnbmFtZXNwYWNlID0ge3tzY2lkfX06Ok9JRAor eyUgZWxpZiBjZmdpZCAlfQorICAgIGNmZy5vaWQgPSB7e2NmZ2lkfX06Ok9J RAoreyUgZW5kaWYgJX0KKworT1JERVIgQlkgbmFtZQpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0 c19jb25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24v c3FsLzkuMV9wbHVzL3BhcnNlci5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNf Y29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3Nx bC85LjFfcGx1cy9wYXJzZXIuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjhlY2E5N2YKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19j b25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy9wYXJzZXIuc3FsCkBAIC0wLDAg KzEsMTMgQEAKK3sjIEZFVENIIHBhcnNlcnMgZm9yIEZUUyBDT05GSUdVUkFU SU9OICN9Cit7JSBpZiBwYXJzZXIgJX0KK1NFTEVDVAorICAgIHByc25hbWUs CisgICAgbnNwbmFtZSwKKyAgICBuLm9pZCBhcyBzY2hlbWFvaWQKK0ZST00K KyAgICBwZ190c19wYXJzZXIKKyAgICBKT0lOIHBnX25hbWVzcGFjZSBuCisg ICAgT04gbi5vaWQ9cHJzbmFtZXNwYWNlCitPUkRFUiBCWQorICAgIHByc25h bWU7Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29uZmlndXJhdGlv bi9zcWwvOS4xX3BsdXMvcHJvcGVydGllcy5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0 aW9uL3NxbC85LjFfcGx1cy9wcm9wZXJ0aWVzLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzg5MjNkCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBs YXRlcy9mdHNfY29uZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMvcHJvcGVydGll cy5zcWwKQEAgLTAsMCArMSwyMyBAQAoreyMgRkVUQ0ggcHJvcGVydGllcyBm b3IgRlRTIENPTkZJR1VSQVRJT04gI30KK1NFTEVDVAorICAgIGNmZy5vaWQs CisgICAgY2ZnLmNmZ25hbWUgYXMgbmFtZSwKKyAgICBwZ19nZXRfdXNlcmJ5 aWQoY2ZnLmNmZ293bmVyKSBhcyBvd25lciwKKyAgICBjZmcuY2ZncGFyc2Vy IGFzIHBhcnNlciwKKyAgICBjZmcuY2ZnbmFtZXNwYWNlIGFzIHNjaGVtYSwK KyAgICBwYXJzZXIucHJzbmFtZSBhcyBwcnNuYW1lLAorICAgIGRlc2NyaXB0 aW9uCitGUk9NCisgICAgcGdfdHNfY29uZmlnIGNmZworICAgIExFRlQgT1VU RVIgSk9JTiBwZ190c19wYXJzZXIgcGFyc2VyIE9OIHBhcnNlci5vaWQ9Y2Zn LmNmZ3BhcnNlcgorICAgIExFRlQgT1VURVIgSk9JTiBwZ19kZXNjcmlwdGlv biBkZXMgT04gKGRlcy5vYmpvaWQ9Y2ZnLm9pZCBBTkQgZGVzLmNsYXNzb2lk PSdwZ190c19jb25maWcnOjpyZWdjbGFzcykKK1dIRVJFCit7JSBpZiBzY2lk ICV9CisgICAgY2ZnLmNmZ25hbWVzcGFjZSA9IHt7c2NpZH19OjpPSUQKK3sl IGVsaWYgbmFtZSAlfQorICAgIGNmZy5jZmduYW1lID0ge3tuYW1lfHF0TGl0 ZXJhbH19Cit7JSBlbmRpZiAlfQoreyUgaWYgY2ZnaWQgJX0KKyAgICBBTkQg Y2ZnLm9pZCA9IHt7Y2ZnaWR9fTo6T0lECit7JSBlbmRpZiAlfQorT1JERVIg QlkgY2ZnLmNmZ25hbWUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0 c19jb25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24v c3FsLzkuMV9wbHVzL3NjaGVtYS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNf Y29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3Nx bC85LjFfcGx1cy9zY2hlbWEuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmI1NmNlYjgKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19j b25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy9zY2hlbWEuc3FsCkBAIC0wLDAg KzEsMTkgQEAKK3sjIEZFVENIIHN0YXRlbWVudCBmb3IgU0NIRU1BIG5hbWUg I30KK3slIGlmIGRhdGEuc2NoZW1hICV9CitTRUxFQ1QKKyAgICBuc3BuYW1l CitGUk9NCisgICAgcGdfbmFtZXNwYWNlCitXSEVSRQorICAgIG9pZCA9IHt7 ZGF0YS5zY2hlbWF9fTo6T0lECisKK3slIGVsaWYgZGF0YS5pZCAlfQorU0VM RUNUCisgICAgbnNwbmFtZQorRlJPTQorICAgIHBnX25hbWVzcGFjZSBuc3AK KyAgICBMRUZUIEpPSU4gcGdfdHNfY29uZmlnIGNmZworICAgIE9OIGNmZy5j ZmduYW1lc3BhY2UgPSBuc3Aub2lkCitXSEVSRQorICAgIGNmZy5vaWQgPSB7 e2RhdGEuaWR9fTo6T0lECit7JSBlbmRpZiAlfQpcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19j b25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3Fs LzkuMV9wbHVzL3NxbC5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmln dXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3NxbC85LjFf cGx1cy9zcWwuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjAzYzEzYzMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0 aW9uL3NxbC85LjFfcGx1cy9zcWwuc3FsCkBAIC0wLDAgKzEsNjMgQEAKK3sj IFJFVkVSU0VEIEVOR0lORUVSRUQgU1FMIEZPUiBGVFMgQ09ORklHVVJBVElP TiAjfQoreyUgaWYgY2ZnaWQgYW5kIHNjaWQgJX0KK1NFTEVDVAorICAgIGFy cmF5X3RvX3N0cmluZyhhcnJheV9hZ2coc3FsKSwgRSdcblxuJykgYXMgc3Fs CitGUk9NCisgICAgKAorICAgIFNFTEVDVAorICAgICAgICBFJy0tIFRleHQg U2VhcmNoIENPTkZJR1VSQVRJT046ICcgfHwgcXVvdGVfaWRlbnQobnNwbmFt ZSkgfHwgRScuJyB8fCBxdW90ZV9pZGVudChjZmcuY2ZnbmFtZSkgfHwKKyAg ICAgICAgRSdcblxuLS0gRFJPUCBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9O ICcgfHwgcXVvdGVfaWRlbnQobnNwbmFtZSkgfHwgRScuJyB8fCBxdW90ZV9p ZGVudChjZmcuY2ZnbmFtZSkgfHwKKyAgICAgICAgRSdcblxuQ1JFQVRFIFRF WFQgU0VBUkNIIENPTkZJR1VSQVRJT04gJyB8fCBxdW90ZV9pZGVudChuc3Bu YW1lKSB8fCBFJy4nIHx8ICBxdW90ZV9pZGVudChjZmcuY2ZnbmFtZSkgfHwg RScgKFxuJyB8fAorICAgICAgICBFJ1x0UEFSU0VSID0gJyB8fCBwYXJzZXJu YW1lIHx8CisgICAgICAgIEUnXG4pOycgfHwKKyAgICAgICAgQ0FTRQorICAg ICAgICAgICAgV0hFTiBkZXNjcmlwdGlvbiBJUyBOT1QgTlVMTCBUSEVOCisg ICAgICAgICAgICAgICAgRSdcblxuQ09NTUVOVCBPTiBURVhUIFNFQVJDSCBD T05GSUdVUkFUSU9OICcgfHwgcXVvdGVfaWRlbnQobnNwbmFtZSkgfHwgRScu JyB8fCBxdW90ZV9pZGVudChjZmcuY2ZnbmFtZSkgfHwKKyAgICAgICAgICAg ICAgICBFJyBJUyAnIHx8IHBnX2NhdGFsb2cucXVvdGVfbGl0ZXJhbChkZXNj cmlwdGlvbikgfHwgRSc7JworICAgICAgICAgICAgRUxTRSAnJworICAgICAg ICBFTkQgfHwKKyAgICAgICAgKAorICAgICAgICBTRUxFQ1QgYXJyYXkoCisJ ICAgICAgICBTRUxFQ1QKKwkgICAgICAgICAgICAnQUxURVIgVEVYVCBTRUFS Q0ggQ09ORklHVVJBVElPTiAnIHx8IHF1b3RlX2lkZW50KG5zcG5hbWUpIHx8 IEUnLicgfHwgcXVvdGVfaWRlbnQoY2ZnLmNmZ25hbWUpIHx8CisJICAgICAg ICAgICAgJyBBREQgTUFQUElORyBGT1IgJyB8fCB0LmFsaWFzICB8fCAnIFdJ VEggJyB8fCBhcnJheV90b19zdHJpbmcoYXJyYXlfYWdnKGRpY3QuZGljdG5h bWUpLCAnLCAnKSB8fCAnOycKKyAgICAgICAgICAgIEZST00KKyAgICAgICAg ICAgICAgICBwZ190c19jb25maWdfbWFwIG1hcAorICAgICAgICAgICAgICAg IExFRlQgSk9JTiAoU0VMRUNUIHRva2lkLCBhbGlhcyBGUk9NIHBnX2NhdGFs b2cudHNfdG9rZW5fdHlwZShjZmcuY2ZncGFyc2VyKSkgdCBPTiAodC50b2tp ZCA9IG1hcC5tYXB0b2tlbnR5cGUpCisgICAgICAgICAgICAgICAgTEVGVCBP VVRFUiBKT0lOIHBnX3RzX2RpY3QgZGljdCBPTiAobWFwLm1hcGRpY3QgPSBk aWN0Lm9pZCkKKyAgICAgICAgICAgIFdIRVJFCisgICAgICAgICAgICAgICAg bWFwLm1hcGNmZyA9IGNmZy5vaWQKKyAgICAgICAgICAgIEdST1VQIEJZIHQu YWxpYXMKKyAgICAgICAgICAgIE9SREVSIEJZIHQuYWxpYXMpCisgICAgICAg ICkgYXMgc3FsCisgICAgRlJPTQorICAgICAgICBwZ190c19jb25maWcgY2Zn CisgICAgTEVGVCBKT0lOICgKKyAgICAgICAgU0VMRUNUCisgICAgICAgICAg ICBkZXMuZGVzY3JpcHRpb24gYXMgZGVzY3JpcHRpb24sCisgICAgICAgICAg ICBkZXMub2Jqb2lkIGFzIGRlc2NvaWQKKyAgICAgICAgRlJPTQorICAgICAg ICAgICAgcGdfZGVzY3JpcHRpb24gZGVzCisgICAgICAgIFdIRVJFCisgICAg ICAgICAgICBkZXMub2Jqb2lkPXt7Y2ZnaWR9fTo6T0lEIEFORCBkZXMuY2xh c3NvaWQ9J3BnX3RzX2NvbmZpZyc6OnJlZ2NsYXNzCisgICAgKSBhIE9OIChh LmRlc2NvaWQgPSBjZmcub2lkKQorICAgIExFRlQgSk9JTiAoCisgICAgICAg IFNFTEVDVAorICAgICAgICAgICAgbnNwbmFtZSwKKyAgICAgICAgICAgIG5z cC5vaWQgYXMgbm9pZAorICAgICAgICBGUk9NCisgICAgICAgICAgICBwZ19u YW1lc3BhY2UgbnNwCisgICAgICAgIFdIRVJFCisgICAgICAgICAgICBvaWQg PSB7e3NjaWR9fTo6T0lECisgICAgKSBiIE9OIChiLm5vaWQgPSBjZmcuY2Zn bmFtZXNwYWNlKQorICAgIExFRlQgSk9JTigKKyAgICAgICAgU0VMRUNUCisg ICAgICAgICAgICBwcnMucHJzbmFtZSBhcyBwYXJzZXJuYW1lLAorICAgICAg ICAgICAgcHJzLm9pZCBhcyBvaWQKKyAgICAgICAgRlJPTQorICAgICAgICAg ICAgcGdfdHNfcGFyc2VyIHBycworICAgICljIE9OIChjLm9pZCA9IGNmZy5j ZmdwYXJzZXIpCisgICAgV0hFUkUKKyAgICAgICBjZmcub2lkPXt7Y2ZnaWR9 fTo6T0lECisgICAgKSBlOworeyUgZW5kaWYgJX0KXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNf Y29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3Nx bC85LjFfcGx1cy90b2tlbkRpY3RMaXN0LnNxbCBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2Z0c19jb25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZpZ3VyYXRp b24vc3FsLzkuMV9wbHVzL3Rva2VuRGljdExpc3Quc3FsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YTJkNWIKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVt cGxhdGVzL2Z0c19jb25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy90b2tlbkRp Y3RMaXN0LnNxbApAQCAtMCwwICsxLDIzIEBACit7IyBGZXRjaCB0b2tlbi9k aWN0aW9uYXJ5IGxpc3QgZm9yIEZUUyBDT05GSUdVUkFUSU9OICN9Cit7JSBp ZiBjZmdpZCAlfQorU0VMRUNUCisgICAgKAorICAgIFNFTEVDVAorICAgICAg ICB0LmFsaWFzCisgICAgRlJPTQorICAgICAgICBwZ19jYXRhbG9nLnRzX3Rv a2VuX3R5cGUoY2ZncGFyc2VyKSBBUyB0CisgICAgV0hFUkUKKyAgICAgICAg dC50b2tpZCA9IG1hcHRva2VudHlwZQorICAgICkgQVMgdG9rZW4sCisgICAg YXJyYXlfYWdnKGRpY3RuYW1lKSBBUyBkaWN0bmFtZQorRlJPTQorICAgIHBn X3RzX2NvbmZpZ19tYXAKKyAgICBMRUZUIE9VVEVSIEpPSU4gcGdfdHNfY29u ZmlnIE9OIG1hcGNmZyA9IHBnX3RzX2NvbmZpZy5vaWQKKyAgICBMRUZUIE9V VEVSIEpPSU4gcGdfdHNfZGljdCBPTiBtYXBkaWN0ID0gcGdfdHNfZGljdC5v aWQKK1dIRVJFCisgICAgbWFwY2ZnPXt7Y2ZnaWR9fTo6T0lECitHUk9VUCBC WQorICAgIHRva2VuCitPUkRFUiBCWQorICAgIDEKK3slIGVuZGlmICV9Clwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3RlbXBsYXRlcy9mdHNfY29u ZmlndXJhdGlvbi9zcWwvOS4xX3BsdXMvdG9rZW5zLnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZp Z3VyYXRpb24vc3FsLzkuMV9wbHVzL3Rva2Vucy5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQxZDM2YgotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy90ZW1w bGF0ZXMvZnRzX2NvbmZpZ3VyYXRpb24vc3FsLzkuMV9wbHVzL3Rva2Vucy5z cWwKQEAgLTAsMCArMSwyMyBAQAoreyMgRkVUQ0ggVE9LRU4gZm9yIEZUUyBD T05GSUdVUkFUSU9OIHN0YXRlbWVudCAjfQoreyUgaWYgY2ZnaWQgJX0KKwor eyMgRkVUQ0ggcGFyc2VyIG9pZCBzdGF0ZW1lbnQgI30KK3slIGlmIHBhcnNl ciAlfQorU0VMRUNUCisgICAgY2ZncGFyc2VyCitGUk9NCisgICAgcGdfdHNf Y29uZmlnCit3aGVyZQorICAgIG9pZCA9IHt7Y2ZnaWR9fTo6T0lECit7JSBl bmRpZiAlfQorCit7IyBGRVRDSCBUT0tFTiBBTElBUyBzdGF0ZW1lbnQgI30K K3slIGlmIHBhcnNlcm9pZCAlfQorU0VMRUNUCisgICAgYWxpYXMKK0ZST00K KyAgICB0c190b2tlbl90eXBlKHt7cGFyc2Vyb2lkfX06Ok9JRCkKK09SREVS IEJZCisgICAgYWxpYXMKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy90ZW1wbGF0ZXMvZnRzX2NvbmZp Z3VyYXRpb24vc3FsLzkuMV9wbHVzL3VwZGF0ZS5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxhdGVzL2Z0c19jb25maWd1 cmF0aW9uL3NxbC85LjFfcGx1cy91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0OTdiZWUKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJhdGlvbnMvdGVtcGxh dGVzL2Z0c19jb25maWd1cmF0aW9uL3NxbC85LjFfcGx1cy91cGRhdGUuc3Fs CkBAIC0wLDAgKzEsNTEgQEAKK3sjIFVQREFURSBzdGF0ZW1lbnQgZm9yIEZU UyBDT05GSUdVUkFUSU9OICN9Cit7JSBpZiBkYXRhICV9Cit7JSBzZXQgbmFt ZSA9IG9fZGF0YS5uYW1lICV9Cit7JSBzZXQgc2NoZW1hID0gb19kYXRhLnNj aGVtYSAlfQoreyUgaWYgZGF0YS5uYW1lIGFuZCBkYXRhLm5hbWUgIT0gb19k YXRhLm5hbWUgJX0KK3slIHNldCBuYW1lID0gZGF0YS5uYW1lICV9CitBTFRF UiBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OIHt7Y29ubnxxdElkZW50KG9f ZGF0YS5zY2hlbWEpfX0ue3tjb25ufHF0SWRlbnQob19kYXRhLm5hbWUpfX0K KyAgICBSRU5BTUUgVE8ge3tkYXRhLm5hbWV9fTsKKworeyUgZW5kaWYgJX0K K3slIGlmICd0b2tlbnMnIGluIGRhdGEgJX0KK3slIGlmJ2NoYW5nZWQnIGlu IGRhdGEudG9rZW5zICV9Cit7JSBmb3IgdG9rIGluIGRhdGEudG9rZW5zLmNo YW5nZWQgJX0KK0FMVEVSIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04ge3tj b25ufHF0SWRlbnQob19kYXRhLnNjaGVtYSl9fS57e2Nvbm58cXRJZGVudChu YW1lKX19CisgICAgQUxURVIgTUFQUElORyBGT1Ige3t0b2sudG9rZW59fQor ICAgIFdJVEggeyUgZm9yIGRpY3QgaW4gdG9rLmRpY3RuYW1lICV9e3tkaWN0 fX17JSBpZiBub3QgbG9vcC5sYXN0ICV9LCB7JSBlbmRpZiAlfXslIGVuZGZv ciAlfTsKKworeyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYnYWRk ZWQnIGluIGRhdGEudG9rZW5zICV9Cit7JSBmb3IgdG9rIGluIGRhdGEudG9r ZW5zLmFkZGVkICV9CitBTFRFUiBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9O IHt7Y29ubnxxdElkZW50KG9fZGF0YS5zY2hlbWEpfX0ue3tjb25ufHF0SWRl bnQobmFtZSl9fQorICAgIEFERCBNQVBQSU5HIEZPUiB7e3Rvay50b2tlbn19 CisgICAgV0lUSCB7JSBmb3IgZGljdCBpbiB0b2suZGljdG5hbWUgJX17e2Rp Y3R9fXslIGlmIG5vdCBsb29wLmxhc3QgJX0sIHslIGVuZGlmICV9eyUgZW5k Zm9yICV9OworCit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZidk ZWxldGVkJyBpbiBkYXRhLnRva2VucyAlfQoreyUgZm9yIHRvayBpbiBkYXRh LnRva2Vucy5kZWxldGVkICV9CitBTFRFUiBURVhUIFNFQVJDSCBDT05GSUdV UkFUSU9OIHt7Y29ubnxxdElkZW50KG9fZGF0YS5zY2hlbWEpfX0ue3tjb25u fHF0SWRlbnQobmFtZSl9fQorICAgIERST1AgTUFQUElORyBGT1Ige3t0b2su dG9rZW59fTsKKworeyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgZW5k aWYgJX0KK3slIGlmICdvd25lcicgaW4gZGF0YSBhbmQgZGF0YS5vd25lciAh PSBvX2RhdGEub3duZXIgJX0KK0FMVEVSIFRFWFQgU0VBUkNIIENPTkZJR1VS QVRJT04ge3tjb25ufHF0SWRlbnQob19kYXRhLnNjaGVtYSl9fS57e2Nvbm58 cXRJZGVudChuYW1lKX19CisgICAgT1dORVIgVE8ge3tkYXRhLm93bmVyfX07 CisKK3slIGVuZGlmICV9Cit7JSBpZiAnc2NoZW1hJyBpbiBkYXRhIGFuZCBk YXRhLnNjaGVtYSAhPSBvX2RhdGEuc2NoZW1hICV9Cit7JSBzZXQgc2NoZW1h ID0gZGF0YS5zY2hlbWElfQorQUxURVIgVEVYVCBTRUFSQ0ggQ09ORklHVVJB VElPTiB7e2Nvbm58cXRJZGVudChvX2RhdGEuc2NoZW1hKX19Lnt7Y29ubnxx dElkZW50KG5hbWUpfX0KKyAgICBTRVQgU0NIRU1BIHt7ZGF0YS5zY2hlbWF9 fTsKKworeyUgZW5kaWYgJX0KK3slIGlmICdkZXNjcmlwdGlvbicgaW4gZGF0 YSBhbmQgZGF0YS5kZXNjcmlwdGlvbiAhPSBvX2RhdGEuZGVzY3JpcHRpb24g JX0KK0NPTU1FTlQgT04gVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiB7e2Nv bm58cXRJZGVudChzY2hlbWEpfX0ue3tjb25ufHF0SWRlbnQobmFtZSl9fQor ICAgIElTIHt7IGRhdGEuZGVzY3JpcHRpb258cXRMaXRlcmFsIH19OworeyUg ZW5kaWYgJX0KK3slIGVuZGlmICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMv anMvbm9kZS51aS5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pz L25vZGUudWkuanMKaW5kZXggNmNkM2Q2OC4uNDc3ZWMxNyAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvbm9kZS51aS5qcwor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9ub2RlLnVpLmpz CkBAIC00ODcsNiArNDg3LDM1IEBAIGZ1bmN0aW9uKCQsIF8sIHBnQWRtaW4s IEJhY2tib25lLCBCYWNrZm9ybSwgQWxlcnRpZnksIE5vZGUpIHsKICAgICB9 KQogICB9KTsKIAorICAgIC8vIEV4dGVuZCB0aGUgYnJvd3NlcidzIG5vZGUg bW9kZWwgY2xhc3MgdG8gY3JlYXRlIGEgb3B0aW9uL3ZhbHVlIHBhaXIKKyAg dmFyIE11bHRpU2VsZWN0QWpheENlbGwgPSBCYWNrZ3JpZC5FeHRlbnNpb24u TXVsdGlTZWxlY3RBamF4Q2VsbCA9IEJhY2tncmlkLkV4dGVuc2lvbi5Ob2Rl QWpheE9wdGlvbnNDZWxsLmV4dGVuZCh7CisgICAgZGVmYXVsdHM6IF8uZXh0 ZW5kKHt9LCBOb2RlQWpheE9wdGlvbnNDZWxsLnByb3RvdHlwZS5kZWZhdWx0 cywgeworICAgICAgdHJhbnNmb3JtOiB1bmRlZmluZWQsCisgICAgICB1cmxf d2l0aF9pZDogZmFsc2UsCisgICAgICBzZWxlY3QyOiB7CisgICAgICAgIGFs bG93Q2xlYXI6IHRydWUsCisgICAgICAgIHBsYWNlaG9sZGVyOiAnU2VsZWN0 IGZyb20gdGhlIGxpc3QnLAorICAgICAgICB3aWR0aDogJ3N0eWxlJywKKyAg ICAgICAgbXVsdGlwbGU6IHRydWUKKyAgICAgIH0sCisgICAgICBvcHQ6IHsK KyAgICAgICAgbGFiZWw6IG51bGwsCisgICAgICAgIHZhbHVlOiBudWxsLAor ICAgICAgICBpbWFnZTogbnVsbCwKKyAgICAgICAgc2VsZWN0ZWQ6IGZhbHNl CisgICAgICAgfQorICAgIH0pLAorICAgIGdldFZhbHVlRnJvbURPTTogZnVu Y3Rpb24oKSB7CisgICAgICB2YXIgcmVzID0gW107CisKKyAgICAgIHRoaXMu JGVsLmZpbmQoInNlbGVjdCIpLmZpbmQoJzpzZWxlY3RlZCcpLmVhY2goZnVu Y3Rpb24oKSB7CisgICAgICAgIHJlcy5wdXNoKCQodGhpcykuYXR0cigndmFs dWUnKSk7CisgICAgICB9KTsKKworICAgICAgcmV0dXJuIHJlczsKKyAgICB9 LAorICB9KTsKKwogICAvKgogICAgKiBDb250cm9sIHRvIHNlbGVjdCBtdWx0 aXBsZSBjb2x1bW5zLgogICAgKi8K --001a114dcc5e477a920532196e3c 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 --001a114dcc5e477a920532196e3c--