Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hYpDn-0005Ov-Ug for pgadmin-hackers@arkaria.postgresql.org; Thu, 06 Jun 2019 10:02:12 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1hYpDm-0002ag-Hq for pgadmin-hackers@arkaria.postgresql.org; Thu, 06 Jun 2019 10:02:10 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hYpDl-0002Ya-KU for pgadmin-hackers@lists.postgresql.org; Thu, 06 Jun 2019 10:02:10 +0000 Received: from mail-qk1-x729.google.com ([2607:f8b0:4864:20::729]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hYpDi-0007aJ-KI for pgadmin-hackers@postgresql.org; Thu, 06 Jun 2019 10:02:08 +0000 Received: by mail-qk1-x729.google.com with SMTP id c11so1046713qkk.8 for ; Thu, 06 Jun 2019 03:02:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=kh+woAjAHvGPnoSuIGoaO+7YE4iFkFxhmmPNpPFnjVk=; b=yvdd5MUr6ct41E2dMKqoMIE5AFRk2fNYx+Lv9yRzSKDIejyPTPfZtEIxkj6NF6pedW j7wpRIpNpE/ekpUY/0Ial7Pydb21bATsoPKrLCnOZRicdI17r5s459epUmM1QhgIua0r bJ8KzeTBQwNhQ5sCPk2VJVNW5kfysKBvcZD4E+pUFFSmyW3deL55wmYQZ+JH9nwhkktu vd9ET+Yy7ldvC+TAsD+h/cQMeY72oX4XeC/tREMYJpTQt+ZKwiDdlyeDxSGhrhgXhl7h rRWG+TdglYXjGBFQqxRie/L8/ySGioIaOwER4zGXEBSz6eagohfcR8iqpqHaeQ8a9FJ2 f6gA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=kh+woAjAHvGPnoSuIGoaO+7YE4iFkFxhmmPNpPFnjVk=; b=U3Is1AYjjZbR3/hX07B1UyGdPwuQvSTNC1wgX0R9HUJwv+nqtE+a0OwJ1pBLvTvU9B WIqzrFcRRoNbOGQKuBM4Lc1uaWEJ3BOaLqcX4maErFAQ6QF3iWNYWUL6vAgJ+xSZmJxQ huBg77UNFjvt56/sFQPijJ9bFiFhCZdIjd7gr6nfOrg3BiOWrb+zqj79Xkjj9GKHUpEd l6phVaUDgOhx3LLpC8vIeIY8ri/7Y3rgYHBifbeXHU97/9oTWyNtmPomwn9zN5wlbeWa 9cywXUZmCfbNKZB7/pnB8n+4FLGUm+YjaRxZzvcBhHw4u7y0nUD2xdOrbQ1pY91zSeJF Whkw== X-Gm-Message-State: APjAAAU8y+OzmdIyoWx1aTz6f26wtHCTGA2yFk4A2/lsW7QxXDTQS0z4 z7VIk9A4sri7YTBanPIbD4AxOaXK2tjRgtUfCx9JVzAYWJVH8g== X-Google-Smtp-Source: APXvYqx6c0If7KXEJyexTzIJ5+BO0xjjxHO8iReAKemJVV7dPL+GWzXhfqIx4cfEJL36DUbGBEl+Tj9vezUWO0BDAmU= X-Received: by 2002:a37:d8e:: with SMTP id 136mr24861857qkn.259.1559815325008; Thu, 06 Jun 2019 03:02:05 -0700 (PDT) MIME-Version: 1.0 From: Akshay Joshi Date: Thu, 6 Jun 2019 15:31:54 +0530 Message-ID: Subject: [pgAdmin4][Patch]: Feature #4283 pgAdmin4 support for v12 To: pgadmin-hackers Content-Type: multipart/mixed; boundary="0000000000005d023b058aa4cee9" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --0000000000005d023b058aa4cee9 Content-Type: multipart/alternative; boundary="0000000000005d0238058aa4cee7" --0000000000005d0238058aa4cee7 Content-Type: text/plain; charset="UTF-8" Hi Hackers, I have started adding support of PostgreSQL v12 in pgAdmin4. Attached is the patch to fix the following issues: - RM #4290: "string indices must be integers" displayed for all objects - RM #4288: View data issue. - PG v12 removes the ability to create table using WITH OIDS, so I have modified the code in GUI as well as on backend. - PG v12 removes obsolete pg_attrdef.adsrc and pg_constraint.consrc column, so fixed with appropriate functions calls. - For partitioned tables, since no storage is required for the table itself. PG v12 throws and error while specifying "TABLESPACE" in create table syntax for partitioned table, so fix that too. This is the initial patch to fix the issues that has been raised or I have found. Will continue to work on adding support for v12. Will check the release notes. -- *Thanks & Regards* *Akshay Joshi* *Sr. Software Architect* *EnterpriseDB Software India Private Limited* *Mobile: +91 976-788-8246* --0000000000005d0238058aa4cee7 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

I have started adding suppo= rt of PostgreSQL v12 in pgAdmin4. Attached is the patch to fix the followin= g issues:
  • RM #4290:=C2=A0"string indices must be int= egers" displayed for all objects
  • RM #4288:=C2=A0View data issu= e.
  • PG v12=C2=A0 removes the ability to create table using WITH OIDS= , so I have modified the code in GUI as well as on backend.
  • PG v12 = removes obsolete pg_attrdef.adsrc and pg_constraint.consrc column, so fixed= with appropriate functions calls.
  • For partitioned tables, since no= storage is required for the table itself. PG v12 throws and error while sp= ecifying "TABLESPACE" in create table syntax for partitioned tabl= e, so fix that too.=C2=A0
This is the initial patch to fix th= e issues that has been raised or I have found. Will continue to work on add= ing support for v12. Will check the release notes.=C2=A0

--
Thanks & Regards
=
Akshay Joshi
Sr. Software Architect
EnterpriseDB Software India Private Limited
=
Mobile: += 91 976-788-8246
--0000000000005d0238058aa4cee7-- --0000000000005d023b058aa4cee9 Content-Type: application/octet-stream; name="RM_4283.patch" Content-Disposition: attachment; filename="RM_4283.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jwkhnvd40 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3JlaWduX3RhYmxlcy9z cWwvMTJfcGx1cy9nZXRfY29uc3RyYWludHMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxh dGVzL2ZvcmVpZ25fdGFibGVzL3NxbC8xMl9wbHVzL2dldF9jb25zdHJhaW50cy5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmI3MzhjNzg4Ci0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZm9yZWlnbl90YWJsZXMvdGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL3NxbC8xMl9wbHVz L2dldF9jb25zdHJhaW50cy5zcWwKQEAgLTAsMCArMSw4IEBACitTRUxFQ1QKKyAgICBvaWQgYXMg Y29ub2lkLCBjb25uYW1lLCBjb250eXBlLCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQsIHRydWUp IGFzIGNvbnNyYywKKyAgICBjb25ub2luaGVyaXQsIGNvbnZhbGlkYXRlZCwgY29uaXNsb2NhbAor RlJPTQorICAgIHBnX2NvbnN0cmFpbnQKK1dIRVJFCisgICAgY29ucmVsaWQ9e3tmb2lkfX06Om9p ZAorT1JERVIgYnkgY29ubmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMvdGFi bGUuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvc3RhdGljL2pzL3RhYmxlLmpzCmluZGV4IDEwYzBjZmRhLi5kYTM3 MzhhNyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3N0YXRpYy9qcy90YWJsZS5qcworKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvc3RhdGljL2pzL3RhYmxlLmpzCkBAIC0zNDIsMTIgKzM0MiwzMiBAQCBkZWZpbmUoJ3Bn YWRtaW4ubm9kZS50YWJsZScsIFsKICAgICAgICAgICB9LCBjYWNoZV9ub2RlOiAnZGF0YWJhc2Un LCBjYWNoZV9sZXZlbDogJ2RhdGFiYXNlJywKICAgICAgICAgfSx7CiAgICAgICAgICAgaWQ6ICdz cGNuYW1lJywgbGFiZWw6IGdldHRleHQoJ1RhYmxlc3BhY2UnKSwgbm9kZTogJ3RhYmxlc3BhY2Un LAotICAgICAgICAgIHR5cGU6ICd0ZXh0JywgY29udHJvbDogJ25vZGUtbGlzdC1ieS1uYW1lJywg ZGlzYWJsZWQ6ICdpblNjaGVtYScsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBjb250cm9sOiAn bm9kZS1saXN0LWJ5LW5hbWUnLAogICAgICAgICAgIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVh dGUnLCAnZWRpdCddLAogICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oZCkgewogICAgICAgICAg ICAgLy8gSWYgdGFibGVzcGFjZSBuYW1lIGlzIG5vdCAicGdfZ2xvYmFsIiB0aGVuIHdlIG5lZWQg dG8gZXhjbHVkZSB0aGVtCiAgICAgICAgICAgICByZXR1cm4gKCEoZCAmJiBkLmxhYmVsLm1hdGNo KC9wZ19nbG9iYWwvKSkpOwogICAgICAgICAgIH0sCisgICAgICAgICAgZGVwczogWydpc19wYXJ0 aXRpb25lZCddLAorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAg ICBpZih0aGlzLm5vZGVfaW5mbyAmJiAgJ2NhdGFsb2cnIGluIHRoaXMubm9kZV9pbmZvKSB7Cisg ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp ZighXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5mbykgJiYgIV8uaXNVbmRlZmluZWQobS5ub2RlX2lu Zm8uc2VydmVyKQorICAgICAgICAgICAgICAmJiAhXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5mby5z ZXJ2ZXIudmVyc2lvbikgJiYKKyAgICAgICAgICAgICAgICBtLm5vZGVfaW5mby5zZXJ2ZXIudmVy c2lvbiA+PSAxMjAwMDAgJiYKKyAgICAgICAgICAgICAgICBtLmdldCgnaXNfcGFydGl0aW9uZWQn KSkgeworCisgICAgICAgICAgICAgIHNldFRpbWVvdXQoIGZ1bmN0aW9uKCkgeworICAgICAgICAg ICAgICAgIG0uc2V0KCdzcGNuYW1lJywgdW5kZWZpbmVkKTsKKyAgICAgICAgICAgICAgfSwgMTAp OworCisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAg ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfSwKICAgICAgICAgfSx7CiAgICAgICAgICAg aWQ6ICdwYXJ0aXRpb24nLCB0eXBlOiAnZ3JvdXAnLCBsYWJlbDogZ2V0dGV4dCgnUGFydGl0aW9u JyksCiAgICAgICAgICAgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLCBtaW5fdmVyc2lvbjogMTAw MDAwLApAQCAtNzczLDcgKzc5MywxNSBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50YWJsZScsIFsK ICAgICAgICAgfSx7CiAgICAgICAgICAgaWQ6ICdyZWxoYXNvaWRzJywgbGFiZWw6IGdldHRleHQo J0hhcyBPSURzPycpLCBjZWxsOiAnc3dpdGNoJywKICAgICAgICAgICB0eXBlOiAnc3dpdGNoJywg bW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCi0gICAgICAgICAgZGlzYWJs ZWQ6ICdpblNjaGVtYScsIGdyb3VwOiBnZXR0ZXh0KCdhZHZhbmNlZCcpLAorICAgICAgICAgIGdy b3VwOiBnZXR0ZXh0KCdhZHZhbmNlZCcpLAorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbiht KSB7CisgICAgICAgICAgICBpZighXy5pc1VuZGVmaW5lZChtLm5vZGVfaW5mbykgJiYgIV8uaXNV bmRlZmluZWQobS5ub2RlX2luZm8uc2VydmVyKQorICAgICAgICAgICAgICAmJiAhXy5pc1VuZGVm aW5lZChtLm5vZGVfaW5mby5zZXJ2ZXIudmVyc2lvbikgJiYKKyAgICAgICAgICAgICAgICBtLm5v ZGVfaW5mby5zZXJ2ZXIudmVyc2lvbiA+PSAxMjAwMDApCisgICAgICAgICAgICAgIHJldHVybiB0 cnVlOworCisgICAgICAgICAgICByZXR1cm4gbS5pblNjaGVtYSgpOworICAgICAgICAgIH0sCiAg ICAgICAgIH0sewogICAgICAgICAgIGlkOiAncmVscGVyc2lzdGVuY2UnLCBsYWJlbDogZ2V0dGV4 dCgnVW5sb2dnZWQ/JyksIGNlbGw6ICdzd2l0Y2gnLAogICAgICAgICAgIHR5cGU6ICdzd2l0Y2gn LCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZW1wbGF0ZXMvcGFydGl0aW9ucy9zcWwvcGcvMTJfcGx1cy9wcm9wZXJ0aWVzLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvcGFydGl0aW9ucy9zcWwvcGcvMTJfcGx1cy9wcm9wZXJ0 aWVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uMDk4MTJhM2IKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3BhcnRpdGlvbnMvc3FsL3BnLzEy X3BsdXMvcHJvcGVydGllcy5zcWwKQEAgLTAsMCArMSw4MyBAQAorU0VMRUNUIHJlbC5vaWQsIHJl bC5yZWxuYW1lIEFTIG5hbWUsIHJlbC5yZWx0YWJsZXNwYWNlIEFTIHNwY29pZCxyZWwucmVsYWNs IEFTIHJlbGFjbF9zdHIsCisgIChDQVNFIFdIRU4gbGVuZ3RoKHNwYy5zcGNuYW1lKSA+IDAgVEhF TiBzcGMuc3BjbmFtZSBFTFNFCisgICAgKFNFTEVDVCBzcC5zcGNuYW1lIEZST00gcGdfZGF0YWJh c2UgZHRiCisgICAgSk9JTiBwZ190YWJsZXNwYWNlIHNwIE9OIGR0Yi5kYXR0YWJsZXNwYWNlPXNw Lm9pZAorICAgIFdIRVJFIGR0Yi5vaWQgPSB7eyBkaWQgfX06Om9pZCkKKyAgRU5EKSBhcyBzcGNu YW1lLAorICAoc2VsZWN0IG5zcG5hbWUgRlJPTSBwZ19uYW1lc3BhY2UgV0hFUkUgb2lkID0ge3tz Y2lkfX06Om9pZCApIGFzIHBhcmVudF9zY2hlbWEsCisgIG5zcC5uc3BuYW1lIGFzIHNjaGVtYSwK KyAgcGdfZ2V0X3VzZXJieWlkKHJlbC5yZWxvd25lcikgQVMgcmVsb3duZXIsIHJlbC5yZWxpc3Bh cnRpdGlvbiwKKyAgcmVsLnJlbGhhc3N1YmNsYXNzLCByZWwucmVsdHVwbGVzOjpiaWdpbnQsIGRl cy5kZXNjcmlwdGlvbiwgY29uLmNvbm5hbWUsIGNvbi5jb25rZXksCisJRVhJU1RTKHNlbGVjdCAx IEZST00gcGdfdHJpZ2dlcgorCQkJSk9JTiBwZ19wcm9jIHB0IE9OIHB0Lm9pZD10Z2ZvaWQgQU5E IHB0LnByb25hbWU9J2xvZ3RyaWdnZXInCisJCQlKT0lOIHBnX3Byb2MgcGMgT04gcGMucHJvbmFt ZXNwYWNlPXB0LnByb25hbWVzcGFjZSBBTkQgcGMucHJvbmFtZT0nc2xvbnl2ZXJzaW9uJworCQkJ V0hFUkUgdGdyZWxpZD1yZWwub2lkKSBBUyBpc3JlcGwsCisJKFNFTEVDVCBjb3VudCgqKSBGUk9N IHBnX3RyaWdnZXIgV0hFUkUgdGdyZWxpZD1yZWwub2lkIEFORCB0Z2lzaW50ZXJuYWwgPSBGQUxT RSkgQVMgdHJpZ2dlcmNvdW50LAorCShTRUxFQ1QgQVJSQVkoU0VMRUNUIENBU0UgV0hFTiAobnNw bmFtZSBOT1QgTElLRSAncGdcXyUnKSBUSEVOCisgICAgICAgICAgICBxdW90ZV9pZGVudChuc3Bu YW1lKXx8Jy4nfHxxdW90ZV9pZGVudChjLnJlbG5hbWUpCisgICAgICAgICAgICBFTFNFIHF1b3Rl X2lkZW50KGMucmVsbmFtZSkgRU5EIEFTIGluaGVyaXRlZF90YWJsZXMKKyAgICBGUk9NIHBnX2lu aGVyaXRzIGkKKyAgICBKT0lOIHBnX2NsYXNzIGMgT04gYy5vaWQgPSBpLmluaHBhcmVudAorICAg IEpPSU4gcGdfbmFtZXNwYWNlIG4gT04gbi5vaWQ9Yy5yZWxuYW1lc3BhY2UKKyAgICBXSEVSRSBp LmluaHJlbGlkID0gcmVsLm9pZCBPUkRFUiBCWSBpbmhzZXFubykpIEFTIGNvbGxfaW5oZXJpdHMs CisgIChTRUxFQ1QgY291bnQoKikKKwkJRlJPTSBwZ19pbmhlcml0cyBpCisgICAgICBKT0lOIHBn X2NsYXNzIGMgT04gYy5vaWQgPSBpLmluaHBhcmVudAorICAgICAgSk9JTiBwZ19uYW1lc3BhY2Ug biBPTiBuLm9pZD1jLnJlbG5hbWVzcGFjZQorCQlXSEVSRSBpLmluaHJlbGlkID0gcmVsLm9pZCkg QVMgaW5oZXJpdGVkX3RhYmxlc19jbnQsCisJKENBU0UgV0hFTiByZWwucmVscGVyc2lzdGVuY2Ug PSAndScgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyByZWxwZXJzaXN0ZW5jZSwKKwlzdWJz dHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2ZpbGxmYWN0 b3I9KFswLTldKiknKSBBUyBmaWxsZmFjdG9yLAorCShDQVNFIFdIRU4gKHN1YnN0cmluZyhhcnJh eV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9lbmFibGVk PShbYS16fDAtOV0qKScpID0gJ3RydWUnKQorCSAgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBB UyBhdXRvdmFjdXVtX2VuYWJsZWQsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVs b3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQ9KFswLTldKikn KSBBUyBhdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0 cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9m YWN0b3I9KFswLTldKlsuXT9bMC05XSopJykgQVMgYXV0b3ZhY3V1bV92YWN1dW1fc2NhbGVfZmFj dG9yLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJP TSAnYXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZD0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1f YW5hbHl6ZV90aHJlc2hvbGQsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0 aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2FuYWx5emVfc2NhbGVfZmFjdG9yPShbMC05XSpb Ll0/WzAtOV0qKScpIEFTIGF1dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0b3IsCisJc3Vic3Ry aW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVt X3ZhY3V1bV9jb3N0X2RlbGF5PShbMC05XSopJykgQVMgYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9k ZWxheSwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZS T00gJ2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQ9KFswLTldKiknKSBBUyBhdXRvdmFjdXVt X3ZhY3V1bV9jb3N0X2xpbWl0LAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9w dGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfbWluX2FnZT0oWzAtOV0qKScpIEFT IGF1dG92YWN1dW1fZnJlZXplX21pbl9hZ2UsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhy ZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2ZyZWV6ZV9tYXhfYWdlPShbMC05 XSopJykgQVMgYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZSwKKwlzdWJzdHJpbmcoYXJyYXlfdG9f c3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fZnJlZXplX3RhYmxl X2FnZT0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fZnJlZXplX3RhYmxlX2FnZSwKKwkoQ0FTRSBX SEVOIChzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00g J2F1dG92YWN1dW1fZW5hYmxlZD0oW2EtenwwLTldKiknKSA9ICAndHJ1ZScpCisJICBUSEVOIHRy dWUgRUxTRSBmYWxzZSBFTkQpIEFTIHRvYXN0X2F1dG92YWN1dW1fZW5hYmxlZCwKKwlzdWJzdHJp bmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1f dmFjdXVtX3RocmVzaG9sZD0oWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fdmFjdXVtX3Ro cmVzaG9sZCwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcp IEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX3NjYWxlX2ZhY3Rvcj0oWzAtOV0qWy5dP1swLTldKikn KSBBUyB0b2FzdF9hdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3IsCisJc3Vic3RyaW5nKGFy cmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2FuYWx5 emVfdGhyZXNob2xkPShbMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV9hbmFseXplX3RocmVz aG9sZCwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZS T00gJ2F1dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0b3I9KFswLTldKlsuXT9bMC05XSopJykg QVMgdG9hc3RfYXV0b3ZhY3V1bV9hbmFseXplX3NjYWxlX2ZhY3RvciwKKwlzdWJzdHJpbmcoYXJy YXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fdmFjdXVt X2Nvc3RfZGVsYXk9KFswLTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2Rl bGF5LAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykgRlJP TSAnYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1pdD0oWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92 YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3Qu cmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2ZyZWV6ZV9taW5fYWdlPShbMC05XSop JykgQVMgdG9hc3RfYXV0b3ZhY3V1bV9mcmVlemVfbWluX2FnZSwKKwlzdWJzdHJpbmcoYXJyYXlf dG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fZnJlZXplX21h eF9hZ2U9KFswLTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX2ZyZWV6ZV9tYXhfYWdlLAorCXN1 YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3Zh Y3V1bV9mcmVlemVfdGFibGVfYWdlPShbMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV9mcmVl emVfdGFibGVfYWdlLAorCWFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBBUyB0 YWJsZV92YWN1dW1fc2V0dGluZ3Nfc3RyLAorCWFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9u cywgJywnKSBBUyB0b2FzdF90YWJsZV92YWN1dW1fc2V0dGluZ3Nfc3RyLAorCXJlbC5yZWxvcHRp b25zIEFTIHJlbG9wdGlvbnMsIHRzdC5yZWxvcHRpb25zIEFTIHRvYXN0X3JlbG9wdGlvbnMsIHJl bC5yZWxvZnR5cGUsIHR5cC50eXBuYW1lLAorCXR5cC50eXByZWxpZCBBUyB0eXBvaWQsCisJKENB U0UgV0hFTiByZWwucmVsdG9hc3RyZWxpZCA9IDAgVEhFTiBmYWxzZSBFTFNFIHRydWUgRU5EKSBB UyBoYXN0b2FzdHRhYmxlLAorICAgIC0tIEFkZGVkIGZvciBwZ0FkbWluNAorCShDQVNFIFdIRU4g YXJyYXlfbGVuZ3RoKHJlbC5yZWxvcHRpb25zLCAxKSA+IDAgVEhFTiB0cnVlIEVMU0UgZmFsc2Ug RU5EKSBBUyBhdXRvdmFjdXVtX2N1c3RvbSwKKwkoQ0FTRSBXSEVOIGFycmF5X2xlbmd0aCh0c3Qu cmVsb3B0aW9ucywgMSkgPiAwIEFORCByZWwucmVsdG9hc3RyZWxpZCAhPSAwIFRIRU4gdHJ1ZSBF TFNFIGZhbHNlIEVORCkgQVMgdG9hc3RfYXV0b3ZhY3V1bSwKKworCShTRUxFQ1QgYXJyYXlfYWdn KHByb3ZpZGVyIHx8ICc9JyB8fCBsYWJlbCkgRlJPTSBwZ19zZWNsYWJlbHMgc2wxIFdIRVJFIHNs MS5vYmpvaWQ9cmVsLm9pZCBBTkQgc2wxLm9ianN1YmlkPTApIEFTIHNlY2xhYmVscywKKwkoQ0FT RSBXSEVOIHJlbC5vaWQgPD0ge3sgZGF0bGFzdHN5c29pZH19OjpvaWQgVEhFTiB0cnVlIEVsU0Ug ZmFsc2UgRU5EKSBBUyBpc19zeXNfdGFibGUsCisJLS0gQWRkZWQgZm9yIHBhcnRpdGlvbiB0YWJs ZQorCShDQVNFIFdIRU4gcmVsLnJlbGtpbmQgPSAncCcgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5E KSBBUyBpc19wYXJ0aXRpb25lZCwKKwkoQ0FTRSBXSEVOIHJlbC5yZWxraW5kID0gJ3AnIFRIRU4g cGdfZ2V0X3BhcnRrZXlkZWYocmVsLm9pZDo6b2lkKSBFTFNFICcnIEVORCkgQVMgcGFydGl0aW9u X3NjaGVtZSwKKwl7JSBpZiBwdGlkICV9CisJICAoQ0FTRSBXSEVOIHJlbC5yZWxpc3BhcnRpdGlv biBUSEVOIHBnX2dldF9leHByKHJlbC5yZWxwYXJ0Ym91bmQsIHt7IHB0aWQgfX06Om9pZCkgRUxT RSAnJyBFTkQpIEFTIHBhcnRpdGlvbl92YWx1ZSwKKwkgIChTRUxFQ1QgcmVsbmFtZSBGUk9NIHBn X2NsYXNzIFdIRVJFIG9pZCA9IHt7IHRpZCB9fTo6b2lkKSBBUyBwYXJ0aXRpb25lZF90YWJsZV9u YW1lCisJeyUgZWxzZSAlfQorCSAgcGdfZ2V0X2V4cHIocmVsLnJlbHBhcnRib3VuZCwgcmVsLm9p ZCkgQVMgcGFydGl0aW9uX3ZhbHVlCisJeyUgZW5kaWYgJX0KKworRlJPTSBwZ19jbGFzcyByZWwK KyAgTEVGVCBPVVRFUiBKT0lOIHBnX3RhYmxlc3BhY2Ugc3BjIG9uIHNwYy5vaWQ9cmVsLnJlbHRh Ymxlc3BhY2UKKyAgTEVGVCBPVVRFUiBKT0lOIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9i am9pZD1yZWwub2lkIEFORCBkZXMub2Jqc3ViaWQ9MCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19jbGFz cyc6OnJlZ2NsYXNzKQorICBMRUZUIE9VVEVSIEpPSU4gcGdfY29uc3RyYWludCBjb24gT04gY29u LmNvbnJlbGlkPXJlbC5vaWQgQU5EIGNvbi5jb250eXBlPSdwJworICBMRUZUIE9VVEVSIEpPSU4g cGdfY2xhc3MgdHN0IE9OIHRzdC5vaWQgPSByZWwucmVsdG9hc3RyZWxpZAorICBMRUZUIEpPSU4g cGdfdHlwZSB0eXAgT04gcmVsLnJlbG9mdHlwZT10eXAub2lkCisgIExFRlQgSk9JTiBwZ19pbmhl cml0cyBpbmggT04gaW5oLmluaHJlbGlkID0gcmVsLm9pZAorICBMRUZUIEpPSU4gcGdfbmFtZXNw YWNlIG5zcCBPTiByZWwucmVsbmFtZXNwYWNlID0gbnNwLm9pZAorV0hFUkUgcmVsLnJlbGlzcGFy dGl0aW9uIEFORCBpbmguaW5ocGFyZW50ID0ge3sgdGlkIH19OjpvaWQKK3slIGlmIHB0aWQgJX0g IEFORCByZWwub2lkID0ge3sgcHRpZCB9fTo6b2lkIHslIGVuZGlmICV9CitPUkRFUiBCWSByZWwu cmVsbmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvcGFydGl0aW9ucy9zcWwv cHBhcy8xMl9wbHVzL3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9wYXJ0aXRp b25zL3NxbC9wcGFzLzEyX3BsdXMvcHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAuLjA5ODEyYTNiCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl bXBsYXRlcy9wYXJ0aXRpb25zL3NxbC9wcGFzLzEyX3BsdXMvcHJvcGVydGllcy5zcWwKQEAgLTAs MCArMSw4MyBAQAorU0VMRUNUIHJlbC5vaWQsIHJlbC5yZWxuYW1lIEFTIG5hbWUsIHJlbC5yZWx0 YWJsZXNwYWNlIEFTIHNwY29pZCxyZWwucmVsYWNsIEFTIHJlbGFjbF9zdHIsCisgIChDQVNFIFdI RU4gbGVuZ3RoKHNwYy5zcGNuYW1lKSA+IDAgVEhFTiBzcGMuc3BjbmFtZSBFTFNFCisgICAgKFNF TEVDVCBzcC5zcGNuYW1lIEZST00gcGdfZGF0YWJhc2UgZHRiCisgICAgSk9JTiBwZ190YWJsZXNw YWNlIHNwIE9OIGR0Yi5kYXR0YWJsZXNwYWNlPXNwLm9pZAorICAgIFdIRVJFIGR0Yi5vaWQgPSB7 eyBkaWQgfX06Om9pZCkKKyAgRU5EKSBhcyBzcGNuYW1lLAorICAoc2VsZWN0IG5zcG5hbWUgRlJP TSBwZ19uYW1lc3BhY2UgV0hFUkUgb2lkID0ge3tzY2lkfX06Om9pZCApIGFzIHBhcmVudF9zY2hl bWEsCisgIG5zcC5uc3BuYW1lIGFzIHNjaGVtYSwKKyAgcGdfZ2V0X3VzZXJieWlkKHJlbC5yZWxv d25lcikgQVMgcmVsb3duZXIsIHJlbC5yZWxpc3BhcnRpdGlvbiwKKyAgcmVsLnJlbGhhc3N1YmNs YXNzLCByZWwucmVsdHVwbGVzOjpiaWdpbnQsIGRlcy5kZXNjcmlwdGlvbiwgY29uLmNvbm5hbWUs IGNvbi5jb25rZXksCisJRVhJU1RTKHNlbGVjdCAxIEZST00gcGdfdHJpZ2dlcgorCQkJSk9JTiBw Z19wcm9jIHB0IE9OIHB0Lm9pZD10Z2ZvaWQgQU5EIHB0LnByb25hbWU9J2xvZ3RyaWdnZXInCisJ CQlKT0lOIHBnX3Byb2MgcGMgT04gcGMucHJvbmFtZXNwYWNlPXB0LnByb25hbWVzcGFjZSBBTkQg cGMucHJvbmFtZT0nc2xvbnl2ZXJzaW9uJworCQkJV0hFUkUgdGdyZWxpZD1yZWwub2lkKSBBUyBp c3JlcGwsCisJKFNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3RyaWdnZXIgV0hFUkUgdGdyZWxpZD1y ZWwub2lkIEFORCB0Z2lzaW50ZXJuYWwgPSBGQUxTRSkgQVMgdHJpZ2dlcmNvdW50LAorCShTRUxF Q1QgQVJSQVkoU0VMRUNUIENBU0UgV0hFTiAobnNwbmFtZSBOT1QgTElLRSAncGdcXyUnKSBUSEVO CisgICAgICAgICAgICBxdW90ZV9pZGVudChuc3BuYW1lKXx8Jy4nfHxxdW90ZV9pZGVudChjLnJl bG5hbWUpCisgICAgICAgICAgICBFTFNFIHF1b3RlX2lkZW50KGMucmVsbmFtZSkgRU5EIEFTIGlu aGVyaXRlZF90YWJsZXMKKyAgICBGUk9NIHBnX2luaGVyaXRzIGkKKyAgICBKT0lOIHBnX2NsYXNz IGMgT04gYy5vaWQgPSBpLmluaHBhcmVudAorICAgIEpPSU4gcGdfbmFtZXNwYWNlIG4gT04gbi5v aWQ9Yy5yZWxuYW1lc3BhY2UKKyAgICBXSEVSRSBpLmluaHJlbGlkID0gcmVsLm9pZCBPUkRFUiBC WSBpbmhzZXFubykpIEFTIGNvbGxfaW5oZXJpdHMsCisgIChTRUxFQ1QgY291bnQoKikKKwkJRlJP TSBwZ19pbmhlcml0cyBpCisgICAgICBKT0lOIHBnX2NsYXNzIGMgT04gYy5vaWQgPSBpLmluaHBh cmVudAorICAgICAgSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBuLm9pZD1jLnJlbG5hbWVzcGFjZQor CQlXSEVSRSBpLmluaHJlbGlkID0gcmVsLm9pZCkgQVMgaW5oZXJpdGVkX3RhYmxlc19jbnQsCisJ KENBU0UgV0hFTiByZWwucmVscGVyc2lzdGVuY2UgPSAndScgVEhFTiB0cnVlIEVMU0UgZmFsc2Ug RU5EKSBBUyByZWxwZXJzaXN0ZW5jZSwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5y ZWxvcHRpb25zLCAnLCcpIEZST00gJ2ZpbGxmYWN0b3I9KFswLTldKiknKSBBUyBmaWxsZmFjdG9y LAorCShDQVNFIFdIRU4gKHN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMs ICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9lbmFibGVkPShbYS16fDAtOV0qKScpID0gJ3RydWUnKQor CSAgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyBhdXRvdmFjdXVtX2VuYWJsZWQsCisJc3Vi c3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFj dXVtX3ZhY3V1bV90aHJlc2hvbGQ9KFswLTldKiknKSBBUyBhdXRvdmFjdXVtX3ZhY3V1bV90aHJl c2hvbGQsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBG Uk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3I9KFswLTldKlsuXT9bMC05XSopJykg QVMgYXV0b3ZhY3V1bV92YWN1dW1fc2NhbGVfZmFjdG9yLAorCXN1YnN0cmluZyhhcnJheV90b19z dHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9hbmFseXplX3RocmVz aG9sZD0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fYW5hbHl6ZV90aHJlc2hvbGQsCisJc3Vic3Ry aW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVt X2FuYWx5emVfc2NhbGVfZmFjdG9yPShbMC05XSpbLl0/WzAtOV0qKScpIEFTIGF1dG92YWN1dW1f YW5hbHl6ZV9zY2FsZV9mYWN0b3IsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVs b3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2RlbGF5PShbMC05XSop JykgQVMgYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9kZWxheSwKKwlzdWJzdHJpbmcoYXJyYXlfdG9f c3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX2Nvc3Rf bGltaXQ9KFswLTldKiknKSBBUyBhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0LAorCXN1YnN0 cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1 bV9mcmVlemVfbWluX2FnZT0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fZnJlZXplX21pbl9hZ2Us CisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdh dXRvdmFjdXVtX2ZyZWV6ZV9tYXhfYWdlPShbMC05XSopJykgQVMgYXV0b3ZhY3V1bV9mcmVlemVf bWF4X2FnZSwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcp IEZST00gJ2F1dG92YWN1dW1fZnJlZXplX3RhYmxlX2FnZT0oWzAtOV0qKScpIEFTIGF1dG92YWN1 dW1fZnJlZXplX3RhYmxlX2FnZSwKKwkoQ0FTRSBXSEVOIChzdWJzdHJpbmcoYXJyYXlfdG9fc3Ry aW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fZW5hYmxlZD0oW2Etenww LTldKiknKSA9ICAndHJ1ZScpCisJICBUSEVOIHRydWUgRUxTRSBmYWxzZSBFTkQpIEFTIHRvYXN0 X2F1dG92YWN1dW1fZW5hYmxlZCwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxv cHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZD0oWzAtOV0qKScp IEFTIHRvYXN0X2F1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCwKKwlzdWJzdHJpbmcoYXJyYXlf dG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX3Nj YWxlX2ZhY3Rvcj0oWzAtOV0qWy5dP1swLTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX3ZhY3V1 bV9zY2FsZV9mYWN0b3IsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9u cywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2FuYWx5emVfdGhyZXNob2xkPShbMC05XSopJykgQVMg dG9hc3RfYXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZCwKKwlzdWJzdHJpbmcoYXJyYXlfdG9f c3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fYW5hbHl6ZV9zY2Fs ZV9mYWN0b3I9KFswLTldKlsuXT9bMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV9hbmFseXpl X3NjYWxlX2ZhY3RvciwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25z LCAnLCcpIEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXk9KFswLTldKiknKSBBUyB0 b2FzdF9hdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2RlbGF5LAorCXN1YnN0cmluZyhhcnJheV90b19z dHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9s aW1pdD0oWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQsCisJ c3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRv dmFjdXVtX2ZyZWV6ZV9taW5fYWdlPShbMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV9mcmVl emVfbWluX2FnZSwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAn LCcpIEZST00gJ2F1dG92YWN1dW1fZnJlZXplX21heF9hZ2U9KFswLTldKiknKSBBUyB0b2FzdF9h dXRvdmFjdXVtX2ZyZWV6ZV9tYXhfYWdlLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0 LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfdGFibGVfYWdlPShbMC05 XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV9mcmVlemVfdGFibGVfYWdlLAorCWFycmF5X3RvX3N0 cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBBUyB0YWJsZV92YWN1dW1fc2V0dGluZ3Nfc3RyLAor CWFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBBUyB0b2FzdF90YWJsZV92YWN1 dW1fc2V0dGluZ3Nfc3RyLAorCXJlbC5yZWxvcHRpb25zIEFTIHJlbG9wdGlvbnMsIHRzdC5yZWxv cHRpb25zIEFTIHRvYXN0X3JlbG9wdGlvbnMsIHJlbC5yZWxvZnR5cGUsIHR5cC50eXBuYW1lLAor CXR5cC50eXByZWxpZCBBUyB0eXBvaWQsCisJKENBU0UgV0hFTiByZWwucmVsdG9hc3RyZWxpZCA9 IDAgVEhFTiBmYWxzZSBFTFNFIHRydWUgRU5EKSBBUyBoYXN0b2FzdHRhYmxlLAorICAgIC0tIEFk ZGVkIGZvciBwZ0FkbWluNAorCShDQVNFIFdIRU4gYXJyYXlfbGVuZ3RoKHJlbC5yZWxvcHRpb25z LCAxKSA+IDAgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyBhdXRvdmFjdXVtX2N1c3RvbSwK KwkoQ0FTRSBXSEVOIGFycmF5X2xlbmd0aCh0c3QucmVsb3B0aW9ucywgMSkgPiAwIEFORCByZWwu cmVsdG9hc3RyZWxpZCAhPSAwIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCkgQVMgdG9hc3RfYXV0 b3ZhY3V1bSwKKworCShTRUxFQ1QgYXJyYXlfYWdnKHByb3ZpZGVyIHx8ICc9JyB8fCBsYWJlbCkg RlJPTSBwZ19zZWNsYWJlbHMgc2wxIFdIRVJFIHNsMS5vYmpvaWQ9cmVsLm9pZCBBTkQgc2wxLm9i anN1YmlkPTApIEFTIHNlY2xhYmVscywKKwkoQ0FTRSBXSEVOIHJlbC5vaWQgPD0ge3sgZGF0bGFz dHN5c29pZH19OjpvaWQgVEhFTiB0cnVlIEVsU0UgZmFsc2UgRU5EKSBBUyBpc19zeXNfdGFibGUs CisJLS0gQWRkZWQgZm9yIHBhcnRpdGlvbiB0YWJsZQorCShDQVNFIFdIRU4gcmVsLnJlbGtpbmQg PSAncCcgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyBpc19wYXJ0aXRpb25lZCwKKwkoQ0FT RSBXSEVOIHJlbC5yZWxraW5kID0gJ3AnIFRIRU4gcGdfZ2V0X3BhcnRrZXlkZWYocmVsLm9pZDo6 b2lkKSBFTFNFICcnIEVORCkgQVMgcGFydGl0aW9uX3NjaGVtZSwKKwl7JSBpZiBwdGlkICV9CisJ ICAoQ0FTRSBXSEVOIHJlbC5yZWxpc3BhcnRpdGlvbiBUSEVOIHBnX2dldF9leHByKHJlbC5yZWxw YXJ0Ym91bmQsIHt7IHB0aWQgfX06Om9pZCkgRUxTRSAnJyBFTkQpIEFTIHBhcnRpdGlvbl92YWx1 ZSwKKwkgIChTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzIFdIRVJFIG9pZCA9IHt7IHRpZCB9 fTo6b2lkKSBBUyBwYXJ0aXRpb25lZF90YWJsZV9uYW1lCisJeyUgZWxzZSAlfQorCSAgcGdfZ2V0 X2V4cHIocmVsLnJlbHBhcnRib3VuZCwgcmVsLm9pZCkgQVMgcGFydGl0aW9uX3ZhbHVlCisJeyUg ZW5kaWYgJX0KKworRlJPTSBwZ19jbGFzcyByZWwKKyAgTEVGVCBPVVRFUiBKT0lOIHBnX3RhYmxl c3BhY2Ugc3BjIG9uIHNwYy5vaWQ9cmVsLnJlbHRhYmxlc3BhY2UKKyAgTEVGVCBPVVRFUiBKT0lO IHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1yZWwub2lkIEFORCBkZXMub2Jqc3Vi aWQ9MCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19jbGFzcyc6OnJlZ2NsYXNzKQorICBMRUZUIE9VVEVS IEpPSU4gcGdfY29uc3RyYWludCBjb24gT04gY29uLmNvbnJlbGlkPXJlbC5vaWQgQU5EIGNvbi5j b250eXBlPSdwJworICBMRUZUIE9VVEVSIEpPSU4gcGdfY2xhc3MgdHN0IE9OIHRzdC5vaWQgPSBy ZWwucmVsdG9hc3RyZWxpZAorICBMRUZUIEpPSU4gcGdfdHlwZSB0eXAgT04gcmVsLnJlbG9mdHlw ZT10eXAub2lkCisgIExFRlQgSk9JTiBwZ19pbmhlcml0cyBpbmggT04gaW5oLmluaHJlbGlkID0g cmVsLm9pZAorICBMRUZUIEpPSU4gcGdfbmFtZXNwYWNlIG5zcCBPTiByZWwucmVsbmFtZXNwYWNl ID0gbnNwLm9pZAorV0hFUkUgcmVsLnJlbGlzcGFydGl0aW9uIEFORCBpbmguaW5ocGFyZW50ID0g e3sgdGlkIH19OjpvaWQKK3slIGlmIHB0aWQgJX0gIEFORCByZWwub2lkID0ge3sgcHRpZCB9fTo6 b2lkIHslIGVuZGlmICV9CitPUkRFUiBCWSByZWwucmVsbmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Rh Ymxlcy90ZW1wbGF0ZXMvdGFibGVzL3NxbC8xMl9wbHVzL2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dGVtcGxhdGVzL3RhYmxlcy9zcWwvMTJfcGx1cy9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwLi5jYjQwMDU0MgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy90ZW1wbGF0ZXMvdGFibGVzL3NxbC8xMl9wbHVzL2NyZWF0ZS5zcWwKQEAgLTAsMCArMSwxODIg QEAKK3slIGltcG9ydCAnbWFjcm9zL3NjaGVtYXMvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJF TCAlfQoreyUgaW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9wcml2aWxlZ2UubWFjcm9zJyBhcyBQUklW SUxFR0UgJX0KK3slIGltcG9ydCAnbWFjcm9zL3ZhcmlhYmxlLm1hY3JvcycgYXMgVkFSSUFCTEUg JX0KK3slIGltcG9ydCAnY29sdW1ucy9tYWNyb3Mvc2VjdXJpdHkubWFjcm9zJyBhcyBDT0xVTU5f U0VDTEFCRUwgJX0KK3slIGltcG9ydCAnY29sdW1ucy9tYWNyb3MvcHJpdmlsZWdlLm1hY3Jvcycg YXMgQ09MVU1OX1BSSVZJTEVHRSAlfQoreyUgaW1wb3J0ICd0YWJsZXMvc3FsL21hY3Jvcy9jb25z dHJhaW50cy5tYWNybycgYXMgQ09OU1RSQUlOVFMgJX0KK3slIGltcG9ydCAndHlwZXMvbWFjcm9z L2dldF9mdWxsX3R5cGVfc3FsX2Zvcm1hdC5tYWNyb3MnIGFzIEdFVF9UWVBFICV9Cit7Iz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0jfQoreyM9PT09PT0gTUFJTiBU QUJMRSBURU1QTEFURSBTVEFSVFMgSEVSRSA9PT09PT0jfQoreyM9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09I30KK3sjCisgSWYgdXNlciBoYXMgbm90IHByb3ZpZGVk IGFueSBkZXRhaWxzIGJ1dCBvbmx5IG5hbWUgdGhlbgorIGFkZCBlbXB0eSBicmFja2V0IHdpdGgg dGFibGUgbmFtZQorI30KK3slIHNldCBlbXB0eV9icmFja2V0ID0gIiIlfQoreyUgaWYgZGF0YS5j b2xsX2luaGVyaXRzfGxlbmd0aCA9PSAwIGFuZCAgZGF0YS5jb2x1bW5zfGxlbmd0aCA9PSAwIGFu ZCBub3QgZGF0YS50eXBuYW1lIGFuZCBub3QgZGF0YS5saWtlX3JlbGF0aW9uIGFuZCBkYXRhLnBy aW1hcnlfa2V5fGxlbmd0aCA9PSAwIGFuZCBkYXRhLnVuaXF1ZV9jb25zdHJhaW50fGxlbmd0aCA9 PSAwIGFuZCBkYXRhLmZvcmVpZ25fa2V5fGxlbmd0aCA9PSAwIGFuZCBkYXRhLmNoZWNrX2NvbnN0 cmFpbnR8bGVuZ3RoID09IDAgYW5kIGRhdGEuZXhjbHVkZV9jb25zdHJhaW50fGxlbmd0aCA9PSAw ICV9Cit7JSBzZXQgZW1wdHlfYnJhY2tldCA9ICJcbihcbikiJX0KK3slIGVuZGlmICV9Cit7JSBz ZXQgd2l0aF9jbGF1c2UgPSBmYWxzZSV9Cit7JSBpZiBkYXRhLmZpbGxmYWN0b3Igb3IgZGF0YS5h dXRvdmFjdXVtX2N1c3RvbSBvciBkYXRhLmF1dG92YWN1dW1fZW5hYmxlZCBvciBkYXRhLnRvYXN0 X2F1dG92YWN1dW0gb3IgZGF0YS50b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQgb3IgKGRhdGEuYXV0 b3ZhY3V1bV9lbmFibGVkIGFuZCBkYXRhLnZhY3V1bV90YWJsZXxsZW5ndGggPiAwKSBvciAoZGF0 YS50b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQgYW5kIGRhdGEudmFjdXVtX3RvYXN0fGxlbmd0aCA+ IDApICV9Cit7JSBzZXQgd2l0aF9jbGF1c2UgPSB0cnVlJX0KK3slIGVuZGlmICV9CitDUkVBVEUg eyUgaWYgZGF0YS5yZWxwZXJzaXN0ZW5jZSAlfVVOTE9HR0VEIHslIGVuZGlmICV9VEFCTEUge3tj b25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fXt7ZW1wdHlfYnJhY2tldH19Cit7 JSBpZiBkYXRhLnR5cG5hbWUgJX0KKyAgICBPRiB7eyBkYXRhLnR5cG5hbWUgfX0KK3slIGVuZGlm ICV9Cit7JSBpZiBkYXRhLmxpa2VfcmVsYXRpb24gb3IgZGF0YS5jb2xsX2luaGVyaXRzIG9yIGRh dGEuY29sdW1uc3xsZW5ndGggPiAwIG9yIGRhdGEucHJpbWFyeV9rZXl8bGVuZ3RoID4gMCBvciBk YXRhLnVuaXF1ZV9jb25zdHJhaW50fGxlbmd0aCA+IDAgb3IgZGF0YS5mb3JlaWduX2tleXxsZW5n dGggPiAwIG9yIGRhdGEuY2hlY2tfY29uc3RyYWludHxsZW5ndGggPiAwIG9yIGRhdGEuZXhjbHVk ZV9jb25zdHJhaW50fGxlbmd0aCA+IDAgJX0KKygKK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLmxp a2VfcmVsYXRpb24gJX0KKyAgICBMSUtFIHt7IGRhdGEubGlrZV9yZWxhdGlvbiB9fXslIGlmIGRh dGEubGlrZV9kZWZhdWx0X3ZhbHVlICV9CisKKyAgICAgICAgSU5DTFVESU5HIERFRkFVTFRTeyUg ZW5kaWYgJX17JSBpZiBkYXRhLmxpa2VfY29uc3RyYWludHMgJX0KKworICAgICAgICBJTkNMVURJ TkcgQ09OU1RSQUlOVFN7JSBlbmRpZiAlfXslIGlmIGRhdGEubGlrZV9pbmRleGVzICV9CisKKyAg ICAgICAgSU5DTFVESU5HIElOREVYRVN7JSBlbmRpZiAlfXslIGlmIGRhdGEubGlrZV9zdG9yYWdl ICV9CisKKyAgICAgICAgSU5DTFVESU5HIFNUT1JBR0V7JSBlbmRpZiAlfXslIGlmIGRhdGEubGlr ZV9jb21tZW50cyAlfQorCisgICAgICAgIElOQ0xVRElORyBDT01NRU5UU3slIGVuZGlmICV9eyUg aWYgZGF0YS5jb2x1bW5zfGxlbmd0aCA+IDAgJX0sCit7JSBlbmRpZiAlfQorCit7JSBlbmRpZiAl fQoreyMjIyBBZGQgY29sdW1ucyAjIyN9Cit7JSBpZiBkYXRhLmNvbHVtbnMgYW5kIGRhdGEuY29s dW1uc3xsZW5ndGggPiAwICV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbHVtbnMgJX0KK3slIGlmIGMu bmFtZSBhbmQgYy5jbHR5cGUgJX0KKyAgICB7JSBpZiBjLmluaGVyaXRlZGZyb210YWJsZSAlfS0t IEluaGVyaXRlZCBmcm9tIHRhYmxlIHt7Yy5pbmhlcml0ZWRmcm9tdGFibGV9fTogeyUgZWxpZiBj LmluaGVyaXRlZGZyb210eXBlICV9LS0gSW5oZXJpdGVkIGZyb20gdHlwZSB7e2MuaW5oZXJpdGVk ZnJvbXR5cGV9fTogeyUgZW5kaWYgJX17e2Nvbm58cXRJZGVudChjLm5hbWUpfX0geyUgaWYgaXNf c3FsICV9e3tjLmRpc3BsYXl0eXBuYW1lfX17JSBlbHNlICV9e3sgR0VUX1RZUEUuQ1JFQVRFX1RZ UEVfU1FMKGNvbm4sIGMuY2x0eXBlLCBjLmF0dGxlbiwgYy5hdHRwcmVjaXNpb24sIGMuaGFzU3Fy QnJhY2tldCkgfX17JSBlbmRpZiAlfXslIGlmIGMuY29sbHNwY25hbWUgJX0gQ09MTEFURSB7e2Mu Y29sbHNwY25hbWV9fXslIGVuZGlmICV9eyUgaWYgYy5hdHRub3RudWxsICV9IE5PVCBOVUxMeyUg ZW5kaWYgJX17JSBpZiBjLmRlZnZhbCAlfSBERUZBVUxUIHt7Yy5kZWZ2YWx9fXslIGVuZGlmICV9 Cit7JSBpZiBjLmF0dGlkZW50aXR5IGFuZCBjLmF0dGlkZW50aXR5ICE9ICcnICV9Cit7JSBpZiBj LmF0dGlkZW50aXR5ID09ICdhJyAlfSBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZeyUgZWxp ZiBjLmF0dGlkZW50aXR5ID09ICdkJyAlfSBHRU5FUkFURUQgQlkgREVGQVVMVCBBUyBJREVOVElU WXslIGVuZGlmICV9Cit7JSBpZiBjLnNlcWluY3JlbWVudCBvciBjLnNlcWN5Y2xlIG9yIGMuc2Vx aW5jcmVtZW50IG9yIGMuc2Vxc3RhcnQgb3IgYy5zZXFtaW4gb3IgYy5zZXFtYXggb3IgYy5zZXFj YWNoZSAlfSAoIHslIGVuZGlmICV9Cit7JSBpZiBjLnNlcWluY3JlbWVudCBpcyBkZWZpbmVkIGFu ZCBjLnNlcWN5Y2xlICV9CitDWUNMRSB7JSBlbmRpZiAlfXslIGlmIGMuc2VxaW5jcmVtZW50IGlz IGRlZmluZWQgYW5kIGMuc2VxaW5jcmVtZW50fGludCgtMSkgPiAtMSAlfQorSU5DUkVNRU5UIHt7 Yy5zZXFpbmNyZW1lbnR8aW50fX0geyUgZW5kaWYgJX17JSBpZiBjLnNlcXN0YXJ0IGlzIGRlZmlu ZWQgYW5kIGMuc2Vxc3RhcnR8aW50KC0xKSA+IC0xJX0KK1NUQVJUIHt7Yy5zZXFzdGFydHxpbnR9 fSB7JSBlbmRpZiAlfXslIGlmIGMuc2VxbWluIGlzIGRlZmluZWQgYW5kIGMuc2VxbWlufGludCgt MSkgPiAtMSV9CitNSU5WQUxVRSB7e2Muc2VxbWlufGludH19IHslIGVuZGlmICV9eyUgaWYgYy5z ZXFtYXggaXMgZGVmaW5lZCBhbmQgYy5zZXFtYXh8aW50KC0xKSA+IC0xJX0KK01BWFZBTFVFIHt7 Yy5zZXFtYXh8aW50fX0geyUgZW5kaWYgJX17JSBpZiBjLnNlcWNhY2hlIGlzIGRlZmluZWQgYW5k IGMuc2VxY2FjaGV8aW50KC0xKSA+IC0xJX0KK0NBQ0hFIHt7Yy5zZXFjYWNoZXxpbnR9fSB7JSBl bmRpZiAlfQoreyUgaWYgYy5zZXFpbmNyZW1lbnQgb3IgYy5zZXFjeWNsZSBvciBjLnNlcWluY3Jl bWVudCBvciBjLnNlcXN0YXJ0IG9yIGMuc2VxbWluIG9yIGMuc2VxbWF4IG9yIGMuc2VxY2FjaGUg JX0peyUgZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7JSBpZiBub3QgbG9vcC5sYXN0ICV9LAoreyUg ZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7IyBNYWNy byB0byByZW5kZXIgZm9yIGNvbnN0cmFpbnRzICN9Cit7JSBpZiBkYXRhLnByaW1hcnlfa2V5fGxl bmd0aCA+IDAgJX17JSBpZiBkYXRhLmNvbHVtbnN8bGVuZ3RoID4gMCAlfSx7JSBlbmRpZiAlfQor e3tDT05TVFJBSU5UUy5QUklNQVJZX0tFWShjb25uLCBkYXRhLnByaW1hcnlfa2V5WzBdKX19eyUg ZW5kaWYgJX17JSBpZiBkYXRhLnVuaXF1ZV9jb25zdHJhaW50fGxlbmd0aCA+IDAgJX17JSBpZiBk YXRhLmNvbHVtbnN8bGVuZ3RoID4gMCBvciBkYXRhLnByaW1hcnlfa2V5fGxlbmd0aCA+IDAgJX0s eyUgZW5kaWYgJX0KK3t7Q09OU1RSQUlOVFMuVU5JUVVFKGNvbm4sIGRhdGEudW5pcXVlX2NvbnN0 cmFpbnQpfX17JSBlbmRpZiAlfXslIGlmIGRhdGEuZm9yZWlnbl9rZXl8bGVuZ3RoID4gMCAlfXsl IGlmIGRhdGEuY29sdW1uc3xsZW5ndGggPiAwIG9yIGRhdGEucHJpbWFyeV9rZXl8bGVuZ3RoID4g MCBvciBkYXRhLnVuaXF1ZV9jb25zdHJhaW50fGxlbmd0aCA+IDAgJX0seyUgZW5kaWYgJX0KK3t7 Q09OU1RSQUlOVFMuRk9SRUlHTl9LRVkoY29ubiwgZGF0YS5mb3JlaWduX2tleSl9fXslIGVuZGlm ICV9eyUgaWYgZGF0YS5jaGVja19jb25zdHJhaW50fGxlbmd0aCA+IDAgJX17JSBpZiBkYXRhLmNv bHVtbnN8bGVuZ3RoID4gMCBvciBkYXRhLnByaW1hcnlfa2V5fGxlbmd0aCA+IDAgb3IgZGF0YS51 bmlxdWVfY29uc3RyYWludHxsZW5ndGggPiAwIG9yIGRhdGEuZm9yZWlnbl9rZXl8bGVuZ3RoID4g MCAlfSx7JSBlbmRpZiAlfQore3tDT05TVFJBSU5UUy5DSEVDSyhjb25uLCBkYXRhLmNoZWNrX2Nv bnN0cmFpbnQpfX17JSBlbmRpZiAlfXslIGlmIGRhdGEuZXhjbHVkZV9jb25zdHJhaW50fGxlbmd0 aCA+IDAgJX17JSBpZiBkYXRhLmNvbHVtbnN8bGVuZ3RoID4gMCBvciBkYXRhLnByaW1hcnlfa2V5 fGxlbmd0aCA+IDAgb3IgZGF0YS51bmlxdWVfY29uc3RyYWludHxsZW5ndGggPiAwIG9yIGRhdGEu Zm9yZWlnbl9rZXl8bGVuZ3RoID4gMCBvciBkYXRhLmNoZWNrX2NvbnN0cmFpbnR8bGVuZ3RoID4g MCAlfSx7JSBlbmRpZiAlfQore3tDT05TVFJBSU5UUy5FWENMVURFKGNvbm4sIGRhdGEuZXhjbHVk ZV9jb25zdHJhaW50KX19eyUgZW5kaWYgJX0KK3slIGlmIGRhdGEubGlrZV9yZWxhdGlvbiBvciBk YXRhLmNvbGxfaW5oZXJpdHMgb3IgZGF0YS5jb2x1bW5zfGxlbmd0aCA+IDAgb3IgZGF0YS5wcmlt YXJ5X2tleXxsZW5ndGggPiAwIG9yIGRhdGEudW5pcXVlX2NvbnN0cmFpbnR8bGVuZ3RoID4gMCBv ciBkYXRhLmZvcmVpZ25fa2V5fGxlbmd0aCA+IDAgb3IgZGF0YS5jaGVja19jb25zdHJhaW50fGxl bmd0aCA+IDAgb3IgZGF0YS5leGNsdWRlX2NvbnN0cmFpbnR8bGVuZ3RoID4gMCAlfQorCispeyUg ZW5kaWYgJX17JSBpZiBkYXRhLnJlbGtpbmQgaXMgZGVmaW5lZCBhbmQgZGF0YS5yZWxraW5kID09 ICdwJyAlfSBQQVJUSVRJT04gQlkge3sgZGF0YS5wYXJ0aXRpb25fc2NoZW1lIH19IHslIGVuZGlm ICV9Cit7JSBpZiBub3QgZGF0YS5jb2xsX2luaGVyaXRzIGFuZCAobm90IGRhdGEuc3BjbmFtZSBv ciAoZGF0YS5zcGNuYW1lIGFuZCBkYXRhLmlzX3BhcnRpdGlvbmVkKSkgYW5kIG5vdCB3aXRoX2Ns YXVzZSAlfTt7JSBlbmRpZiAlfQorCit7IyMjIElmIHdlIGFyZSBpbmhlcml0aW5nIGl0IGZyb20g YW5vdGhlciB0YWJsZShzKSAjIyN9Cit7JSBpZiBkYXRhLmNvbGxfaW5oZXJpdHMgJX0KKyAgICBJ TkhFUklUUyAoeyUgZm9yIHZhbCBpbiBkYXRhLmNvbGxfaW5oZXJpdHMgJX17JSBpZiBsb29wLmlu ZGV4ICE9IDEgJX0sIHslIGVuZGlmICV9e3t2YWx9fXslIGVuZGZvciAlfSl7JSBpZiBub3QgZGF0 YS5zcGNuYW1lIGFuZCBub3Qgd2l0aF9jbGF1c2UgJX07eyUgZW5kaWYgJX0KK3slIGVuZGlmICV9 CisKK3slIGlmIHdpdGhfY2xhdXNlICV9Cit7JSBzZXQgYWRkX2NvbW1hID0gZmFsc2UlfQorV0lU SCAoCit7JSBpZiBkYXRhLmZpbGxmYWN0b3IgJX17JSBzZXQgYWRkX2NvbW1hID0gdHJ1ZSV9Cisg ICAgRklMTEZBQ1RPUiA9IHt7IGRhdGEuZmlsbGZhY3RvciB9fXslIGVuZGlmICV9eyUgaWYgZGF0 YS5hdXRvdmFjdXVtX2N1c3RvbSAlfQoreyUgaWYgYWRkX2NvbW1hICV9LAoreyUgZW5kaWYgJX0K KyAgICBhdXRvdmFjdXVtX2VuYWJsZWQgPSB7JSBpZiBkYXRhLmF1dG92YWN1dW1fZW5hYmxlZCAl fVRSVUV7JSBlbHNlICV9RkFMU0V7JSBlbmRpZiAlfXslIHNldCBhZGRfY29tbWEgPSB0cnVlJX17 JSBlbmRpZiAlfXslIGlmIGRhdGEudG9hc3RfYXV0b3ZhY3V1bSAlfQoreyUgaWYgYWRkX2NvbW1h ICV9LAoreyUgZW5kaWYgJX0KKyAgICB0b2FzdC5hdXRvdmFjdXVtX2VuYWJsZWQgPSB7JSBpZiBk YXRhLnRvYXN0X2F1dG92YWN1dW1fZW5hYmxlZCAlfVRSVUV7JSBlbHNlICV9RkFMU0V7JSBlbmRp ZiAlfQoreyUgZW5kaWYgJX17JSBpZiBkYXRhLmF1dG92YWN1dW1fZW5hYmxlZCBhbmQgZGF0YS52 YWN1dW1fdGFibGV8bGVuZ3RoID4gMCAlfQoreyUgZm9yIG9wdCBpbiBkYXRhLnZhY3V1bV90YWJs ZSAlfXslIGlmIG9wdC5uYW1lIGFuZCBvcHQudmFsdWUgJX0KKywKKyAgICB7e29wdC5uYW1lfX0g PSB7e29wdC52YWx1ZX19eyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfXslIGVuZGlmICV9eyUgaWYg ZGF0YS50b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQgYW5kIGRhdGEudmFjdXVtX3RvYXN0fGxlbmd0 aCA+IDAgJX0KK3slIGZvciBvcHQgaW4gZGF0YS52YWN1dW1fdG9hc3QgJX17JSBpZiBvcHQubmFt ZSBhbmQgb3B0LnZhbHVlICV9CissCisgICAgdG9hc3Que3tvcHQubmFtZX19ID0ge3tvcHQudmFs dWV9fXslIGVuZGlmICV9Cit7JSBlbmRmb3IgJX17JSBlbmRpZiAlfQorCit7JSBpZiBkYXRhLnNw Y25hbWUgYW5kIG5vdCBkYXRhLmlzX3BhcnRpdGlvbmVkICV9KXslIGVsc2UgJX0pO3slIGVuZGlm ICV9CisKK3slIGVuZGlmICV9Cit7IyMjIFNRTCBmb3IgVGFibGVzcGFjZSAjIyN9Cit7JSBpZiBk YXRhLnNwY25hbWUgYW5kIG5vdCBkYXRhLmlzX3BhcnRpdGlvbmVkICV9CitUQUJMRVNQQUNFIHt7 IGNvbm58cXRJZGVudChkYXRhLnNwY25hbWUpIH19OworeyUgZW5kaWYgJX0KK3sjIyMgQWx0ZXIg U1FMIGZvciBPd25lciAjIyN9Cit7JSBpZiBkYXRhLnJlbG93bmVyICV9CisKK0FMVEVSIFRBQkxF IHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0KKyAgICBPV05FUiB0byB7 e2Nvbm58cXRJZGVudChkYXRhLnJlbG93bmVyKX19OworeyUgZW5kaWYgJX0KK3sjIyMgU2VjdXJp dHkgTGFiZWxzIG9uIFRhYmxlICMjI30KK3slIGlmIGRhdGEuc2VjbGFiZWxzIGFuZCBkYXRhLnNl Y2xhYmVsc3xsZW5ndGggPiAwICV9CisKK3slIGZvciByIGluIGRhdGEuc2VjbGFiZWxzICV9Cit7 eyBTRUNMQUJFTC5TRVQoY29ubiwgJ1RBQkxFJywgZGF0YS5uYW1lLCByLnByb3ZpZGVyLCByLmxh YmVsLCBkYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3sjIyMgIEFD TCBvbiBUYWJsZSAjIyN9Cit7JSBpZiBkYXRhLnJlbGFjbCAlfQorCit7JSBmb3IgcHJpdiBpbiBk YXRhLnJlbGFjbCAlfQore3sgUFJJVklMRUdFLlNFVChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50 ZWUsIGRhdGEubmFtZSwgcHJpdi53aXRob3V0X2dyYW50LCBwcml2LndpdGhfZ3JhbnQsIGRhdGEu c2NoZW1hKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyMjIyBTUUwgZm9yIENPTU1F TlQgIyMjfQoreyUgaWYgZGF0YS5kZXNjcmlwdGlvbiAlfQorQ09NTUVOVCBPTiBUQUJMRSB7e2Nv bm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19CisgICAgSVMge3tkYXRhLmRlc2Ny aXB0aW9ufHF0TGl0ZXJhbH19OworeyUgZW5kaWYgJX0KK3sjPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PSN9Cit7Iz09PT09PSBNQUlOIFRBQkxFIFRFTVBMQVRFIEVO RFMgSEVSRSA9PT09PT0jfQoreyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09I30KK3sjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSN9 Cit7IyAgQ09MVU1OIFNQRUNJRklDIFRFTVBMQVRFUyBTVEFSVFMgSEVSRSAgICAjfQoreyM9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09I30KK3slIGlmIGRhdGEuY29s dW1ucyBhbmQgZGF0YS5jb2x1bW5zfGxlbmd0aCA+IDAgJX0KK3slIGZvciBjIGluIGRhdGEuY29s dW1ucyAlfQoreyUgaWYgYy5kZXNjcmlwdGlvbiAlfQorCitDT01NRU5UIE9OIENPTFVNTiB7e2Nv bm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lLCBjLm5hbWUpfX0KKyAgICBJUyB7e2Mu ZGVzY3JpcHRpb258cXRMaXRlcmFsfX07Cit7JSBlbmRpZiAlfQoreyMjIyAgQWRkIHZhcmlhYmxl cyB0byBjb2x1bW4gIyMjfQoreyUgaWYgYy5hdHRvcHRpb25zIGFuZCBjLmF0dG9wdGlvbnN8bGVu Z3RoID4gMCAlfQorCitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0 YS5uYW1lKX19CisgICAge3sgVkFSSUFCTEUuU0VUKGNvbm4sICdDT0xVTU4nLCBjLm5hbWUsIGMu YXR0b3B0aW9ucykgfX0KK3slIGVuZGlmICV9Cit7IyMjICBBQ0wgIyMjfQoreyUgaWYgYy5hdHRh Y2wgYW5kIGMuYXR0YWNsfGxlbmd0aCA+IDAgJX0KKworeyUgZm9yIHByaXYgaW4gYy5hdHRhY2wg JX0KKyAgICB7eyBDT0xVTU5fUFJJVklMRUdFLkFQUExZKGNvbm4sIGRhdGEuc2NoZW1hLCBkYXRh Lm5hbWUsIGMubmFtZSwgcHJpdi5ncmFudGVlLCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0 aF9ncmFudCkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3sjIyMgIFNlY3VyaXR5IExh YmxlcyAjIyN9Cit7JSBpZiBjLnNlY2xhYmVscyBhbmQgYy5zZWNsYWJlbHN8bGVuZ3RoID4gMCAl fQorCit7JSBmb3IgciBpbiBjLnNlY2xhYmVscyAlfQore3sgQ09MVU1OX1NFQ0xBQkVMLkFQUExZ KGNvbm4sICdDT0xVTU4nLGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUsIGMubmFtZSwgci5wcm92aWRl ciwgci5sYWJlbCkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQor eyUgZW5kaWYgJX0KK3sjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PSN9Cit7IyAgIENPTFVNTiBTUEVDSUZJQyBURU1QTEFURVMgRU5EUyBIRVJFICAgICAjfQoreyM9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09I30KK3sjPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0jfQoreyMgICBDT05TVFJBSU5UUyBTUEVDSUZJ QyBURU1QTEFURVMgICAgICN9Cit7Iz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09I30KK3t7Q09OU1RSQUlOVFMuQ09OU1RSQUlOVF9DT01NRU5UUyhjb25uLCBkYXRhLnNjaGVt YSwgZGF0YS5uYW1lLCBkYXRhLnByaW1hcnlfa2V5KX19Cit7e0NPTlNUUkFJTlRTLkNPTlNUUkFJ TlRfQ09NTUVOVFMoY29ubiwgZGF0YS5zY2hlbWEsIGRhdGEubmFtZSwgZGF0YS51bmlxdWVfY29u c3RyYWludCl9fQore3tDT05TVFJBSU5UUy5DT05TVFJBSU5UX0NPTU1FTlRTKGNvbm4sIGRhdGEu c2NoZW1hLCBkYXRhLm5hbWUsIGRhdGEuZm9yZWlnbl9rZXkpfX0KK3t7Q09OU1RSQUlOVFMuQ09O U1RSQUlOVF9DT01NRU5UUyhjb25uLCBkYXRhLnNjaGVtYSwgZGF0YS5uYW1lLCBkYXRhLmNoZWNr X2NvbnN0cmFpbnQpfX0KK3t7Q09OU1RSQUlOVFMuQ09OU1RSQUlOVF9DT01NRU5UUyhjb25uLCBk YXRhLnNjaGVtYSwgZGF0YS5uYW1lLCBkYXRhLmV4Y2x1ZGVfY29uc3RyYWludCl9fQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZXMvc3FsLzEyX3BsdXMvcHJvcGVydGllcy5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlcy9zcWwvMTJfcGx1cy9wcm9wZXJ0aWVzLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uYjBkNDhjNjEKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlcy9zcWwvMTJfcGx1cy9wcm9wZXJ0 aWVzLnNxbApAQCAtMCwwICsxLDc1IEBACitTRUxFQ1QgcmVsLm9pZCwgcmVsLnJlbG5hbWUgQVMg bmFtZSwgcmVsLnJlbHRhYmxlc3BhY2UgQVMgc3Bjb2lkLHJlbC5yZWxhY2wgQVMgcmVsYWNsX3N0 ciwKKyAgKENBU0UgV0hFTiBsZW5ndGgoc3BjLnNwY25hbWUpID4gMCBUSEVOIHNwYy5zcGNuYW1l IEVMU0UKKyAgICAoU0VMRUNUIHNwLnNwY25hbWUgRlJPTSBwZ19kYXRhYmFzZSBkdGIKKyAgICBK T0lOIHBnX3RhYmxlc3BhY2Ugc3AgT04gZHRiLmRhdHRhYmxlc3BhY2U9c3Aub2lkCisgICAgV0hF UkUgZHRiLm9pZCA9IHt7IGRpZCB9fTo6b2lkKQorICBFTkQpIGFzIHNwY25hbWUsCisgIChzZWxl Y3QgbnNwbmFtZSBGUk9NIHBnX25hbWVzcGFjZSBXSEVSRSBvaWQgPSB7e3NjaWR9fTo6b2lkICkg YXMgc2NoZW1hLAorICBwZ19nZXRfdXNlcmJ5aWQocmVsLnJlbG93bmVyKSBBUyByZWxvd25lciwg cmVsLnJlbGtpbmQsCisgIChDQVNFIFdIRU4gcmVsLnJlbGtpbmQgPSAncCcgVEhFTiB0cnVlIEVM U0UgZmFsc2UgRU5EKSBBUyBpc19wYXJ0aXRpb25lZCwKKyAgcmVsLnJlbGhhc3N1YmNsYXNzLCBy ZWwucmVsdHVwbGVzOjpiaWdpbnQsIGRlcy5kZXNjcmlwdGlvbiwgY29uLmNvbm5hbWUsIGNvbi5j b25rZXksCisJRVhJU1RTKHNlbGVjdCAxIEZST00gcGdfdHJpZ2dlcgorCQkJSk9JTiBwZ19wcm9j IHB0IE9OIHB0Lm9pZD10Z2ZvaWQgQU5EIHB0LnByb25hbWU9J2xvZ3RyaWdnZXInCisJCQlKT0lO IHBnX3Byb2MgcGMgT04gcGMucHJvbmFtZXNwYWNlPXB0LnByb25hbWVzcGFjZSBBTkQgcGMucHJv bmFtZT0nc2xvbnl2ZXJzaW9uJworCQkJV0hFUkUgdGdyZWxpZD1yZWwub2lkKSBBUyBpc3JlcGws CisJKFNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3RyaWdnZXIgV0hFUkUgdGdyZWxpZD1yZWwub2lk IEFORCB0Z2lzaW50ZXJuYWwgPSBGQUxTRSkgQVMgdHJpZ2dlcmNvdW50LAorCShTRUxFQ1QgQVJS QVkoU0VMRUNUIENBU0UgV0hFTiAobnNwbmFtZSBOT1QgTElLRSAncGdcXyUnKSBUSEVOCisgICAg ICAgICAgICBxdW90ZV9pZGVudChuc3BuYW1lKXx8Jy4nfHxxdW90ZV9pZGVudChjLnJlbG5hbWUp CisgICAgICAgICAgICBFTFNFIHF1b3RlX2lkZW50KGMucmVsbmFtZSkgRU5EIEFTIGluaGVyaXRl ZF90YWJsZXMKKyAgICBGUk9NIHBnX2luaGVyaXRzIGkKKyAgICBKT0lOIHBnX2NsYXNzIGMgT04g Yy5vaWQgPSBpLmluaHBhcmVudAorICAgIEpPSU4gcGdfbmFtZXNwYWNlIG4gT04gbi5vaWQ9Yy5y ZWxuYW1lc3BhY2UKKyAgICBXSEVSRSBpLmluaHJlbGlkID0gcmVsLm9pZCBPUkRFUiBCWSBpbmhz ZXFubykpIEFTIGNvbGxfaW5oZXJpdHMsCisgIChTRUxFQ1QgY291bnQoKikKKwkJRlJPTSBwZ19p bmhlcml0cyBpCisgICAgICBKT0lOIHBnX2NsYXNzIGMgT04gYy5vaWQgPSBpLmluaHBhcmVudAor ICAgICAgSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBuLm9pZD1jLnJlbG5hbWVzcGFjZQorCQlXSEVS RSBpLmluaHJlbGlkID0gcmVsLm9pZCkgQVMgaW5oZXJpdGVkX3RhYmxlc19jbnQsCisJKENBU0Ug V0hFTiByZWwucmVscGVyc2lzdGVuY2UgPSAndScgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBB UyByZWxwZXJzaXN0ZW5jZSwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRp b25zLCAnLCcpIEZST00gJ2ZpbGxmYWN0b3I9KFswLTldKiknKSBBUyBmaWxsZmFjdG9yLAorCShD QVNFIFdIRU4gKHN1YnN0cmluZyhhcnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykg RlJPTSAnYXV0b3ZhY3V1bV9lbmFibGVkPShbYS16fDAtOV0qKScpID0gJ3RydWUnKQorCSAgVEhF TiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyBhdXRvdmFjdXVtX2VuYWJsZWQsCisJc3Vic3RyaW5n KGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX3Zh Y3V1bV90aHJlc2hvbGQ9KFswLTldKiknKSBBUyBhdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQs CisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdh dXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3I9KFswLTldKlsuXT9bMC05XSopJykgQVMgYXV0 b3ZhY3V1bV92YWN1dW1fc2NhbGVfZmFjdG9yLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmco cmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZD0o WzAtOV0qKScpIEFTIGF1dG92YWN1dW1fYW5hbHl6ZV90aHJlc2hvbGQsCisJc3Vic3RyaW5nKGFy cmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVtX2FuYWx5 emVfc2NhbGVfZmFjdG9yPShbMC05XSpbLl0/WzAtOV0qKScpIEFTIGF1dG92YWN1dW1fYW5hbHl6 ZV9zY2FsZV9mYWN0b3IsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9u cywgJywnKSBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2RlbGF5PShbMC05XSopJykgQVMg YXV0b3ZhY3V1bV92YWN1dW1fY29zdF9kZWxheSwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5n KHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQ9 KFswLTldKiknKSBBUyBhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0LAorCXN1YnN0cmluZyhh cnJheV90b19zdHJpbmcocmVsLnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9mcmVl emVfbWluX2FnZT0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fZnJlZXplX21pbl9hZ2UsCisJc3Vi c3RyaW5nKGFycmF5X3RvX3N0cmluZyhyZWwucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFj dXVtX2ZyZWV6ZV9tYXhfYWdlPShbMC05XSopJykgQVMgYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2Fn ZSwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHJlbC5yZWxvcHRpb25zLCAnLCcpIEZST00g J2F1dG92YWN1dW1fZnJlZXplX3RhYmxlX2FnZT0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fZnJl ZXplX3RhYmxlX2FnZSwKKwkoQ0FTRSBXSEVOIChzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRz dC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fZW5hYmxlZD0oW2EtenwwLTldKikn KSA9ICAndHJ1ZScpCisJICBUSEVOIHRydWUgRUxTRSBmYWxzZSBFTkQpIEFTIHRvYXN0X2F1dG92 YWN1dW1fZW5hYmxlZCwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25z LCAnLCcpIEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZD0oWzAtOV0qKScpIEFTIHRv YXN0X2F1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3Ry aW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX3NjYWxlX2Zh Y3Rvcj0oWzAtOV0qWy5dP1swLTldKiknKSBBUyB0b2FzdF9hdXRvdmFjdXVtX3ZhY3V1bV9zY2Fs ZV9mYWN0b3IsCisJc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywn KSBGUk9NICdhdXRvdmFjdXVtX2FuYWx5emVfdGhyZXNob2xkPShbMC05XSopJykgQVMgdG9hc3Rf YXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZCwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5n KHRzdC5yZWxvcHRpb25zLCAnLCcpIEZST00gJ2F1dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0 b3I9KFswLTldKlsuXT9bMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV9hbmFseXplX3NjYWxl X2ZhY3RvciwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcp IEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXk9KFswLTldKiknKSBBUyB0b2FzdF9h dXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2RlbGF5LAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmco dHN0LnJlbG9wdGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1pdD0o WzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQsCisJc3Vic3Ry aW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBGUk9NICdhdXRvdmFjdXVt X2ZyZWV6ZV9taW5fYWdlPShbMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV9mcmVlemVfbWlu X2FnZSwKKwlzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpIEZS T00gJ2F1dG92YWN1dW1fZnJlZXplX21heF9hZ2U9KFswLTldKiknKSBBUyB0b2FzdF9hdXRvdmFj dXVtX2ZyZWV6ZV9tYXhfYWdlLAorCXN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9w dGlvbnMsICcsJykgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfdGFibGVfYWdlPShbMC05XSopJykg QVMgdG9hc3RfYXV0b3ZhY3V1bV9mcmVlemVfdGFibGVfYWdlLAorCWFycmF5X3RvX3N0cmluZyhy ZWwucmVsb3B0aW9ucywgJywnKSBBUyB0YWJsZV92YWN1dW1fc2V0dGluZ3Nfc3RyLAorCWFycmF5 X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKSBBUyB0b2FzdF90YWJsZV92YWN1dW1fc2V0 dGluZ3Nfc3RyLAorCXJlbC5yZWxvcHRpb25zIEFTIHJlbG9wdGlvbnMsIHRzdC5yZWxvcHRpb25z IEFTIHRvYXN0X3JlbG9wdGlvbnMsIHJlbC5yZWxvZnR5cGUsCisJQ0FTRSBXSEVOIHR5cC50eXBu YW1lIElTIE5PVCBOVUxMIFRIRU4gKHNlbGVjdCBxdW90ZV9pZGVudChuc3BuYW1lKSBGUk9NIHBn X25hbWVzcGFjZSBXSEVSRSBvaWQgPSB7e3NjaWR9fTo6b2lkICl8fCcuJ3x8cXVvdGVfaWRlbnQo dHlwLnR5cG5hbWUpIEVMU0UgdHlwLnR5cG5hbWUgRU5EIEFTIHR5cG5hbWUsCisJdHlwLnR5cHJl bGlkIEFTIHR5cG9pZCwKKwkoQ0FTRSBXSEVOIHJlbC5yZWx0b2FzdHJlbGlkID0gMCBUSEVOIGZh bHNlIEVMU0UgdHJ1ZSBFTkQpIEFTIGhhc3RvYXN0dGFibGUsCisgICAgLS0gQWRkZWQgZm9yIHBn QWRtaW40CisJKENBU0UgV0hFTiBhcnJheV9sZW5ndGgocmVsLnJlbG9wdGlvbnMsIDEpID4gMCBU SEVOIHRydWUgRUxTRSBmYWxzZSBFTkQpIEFTIGF1dG92YWN1dW1fY3VzdG9tLAorCShDQVNFIFdI RU4gYXJyYXlfbGVuZ3RoKHRzdC5yZWxvcHRpb25zLCAxKSA+IDAgQU5EIHJlbC5yZWx0b2FzdHJl bGlkICE9IDAgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyB0b2FzdF9hdXRvdmFjdXVtLAor CisJKFNFTEVDVCBhcnJheV9hZ2cocHJvdmlkZXIgfHwgJz0nIHx8IGxhYmVsKSBGUk9NIHBnX3Nl Y2xhYmVscyBzbDEgV0hFUkUgc2wxLm9iam9pZD1yZWwub2lkIEFORCBzbDEub2Jqc3ViaWQ9MCkg QVMgc2VjbGFiZWxzLAorCShDQVNFIFdIRU4gcmVsLm9pZCA8PSB7eyBkYXRsYXN0c3lzb2lkfX06 Om9pZCBUSEVOIHRydWUgRWxTRSBmYWxzZSBFTkQpIEFTIGlzX3N5c190YWJsZQorCS0tIEFkZGVk IGZvciBwYXJ0aXRpb24gdGFibGUKKyAgICB7JSBpZiB0aWQgJX0sIChDQVNFIFdIRU4gcmVsLnJl bGtpbmQgPSAncCcgVEhFTiBwZ19nZXRfcGFydGtleWRlZih7eyB0aWQgfX06Om9pZCkgRUxTRSAn JyBFTkQpIEFTIHBhcnRpdGlvbl9zY2hlbWUgeyUgZW5kaWYgJX0KK0ZST00gcGdfY2xhc3MgcmVs CisgIExFRlQgT1VURVIgSk9JTiBwZ190YWJsZXNwYWNlIHNwYyBvbiBzcGMub2lkPXJlbC5yZWx0 YWJsZXNwYWNlCisgIExFRlQgT1VURVIgSk9JTiBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5v YmpvaWQ9cmVsLm9pZCBBTkQgZGVzLm9ianN1YmlkPTAgQU5EIGRlcy5jbGFzc29pZD0ncGdfY2xh c3MnOjpyZWdjbGFzcykKKyAgTEVGVCBPVVRFUiBKT0lOIHBnX2NvbnN0cmFpbnQgY29uIE9OIGNv bi5jb25yZWxpZD1yZWwub2lkIEFORCBjb24uY29udHlwZT0ncCcKKyAgTEVGVCBPVVRFUiBKT0lO IHBnX2NsYXNzIHRzdCBPTiB0c3Qub2lkID0gcmVsLnJlbHRvYXN0cmVsaWQKKyAgTEVGVCBKT0lO IHBnX3R5cGUgdHlwIE9OIHJlbC5yZWxvZnR5cGU9dHlwLm9pZAorV0hFUkUgcmVsLnJlbGtpbmQg SU4gKCdyJywncycsJ3QnLCdwJykgQU5EIHJlbC5yZWxuYW1lc3BhY2UgPSB7eyBzY2lkIH19Ojpv aWQKK0FORCBOT1QgcmVsLnJlbGlzcGFydGl0aW9uCit7JSBpZiB0aWQgJX0gIEFORCByZWwub2lk ID0ge3sgdGlkIH19OjpvaWQgeyUgZW5kaWYgJX0KK09SREVSIEJZIHJlbC5yZWxuYW1lOwpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZXMvc3FsLzEyX3BsdXMvdXBkYXRlLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGVzL3NxbC8xMl9wbHVzL3VwZGF0ZS5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmQxMmE4Mzg1Ci0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZXMvc3FsLzEyX3BsdXMvdXBkYXRlLnNxbApA QCAtMCwwICsxLDIxMSBAQAoreyUgaW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9zZWN1cml0eS5tYWNy b3MnIGFzIFNFQ0xBQkVMICV9Cit7JSBpbXBvcnQgJ21hY3Jvcy9zY2hlbWFzL3ByaXZpbGVnZS5t YWNyb3MnIGFzIFBSSVZJTEVHRSAlfQoreyUgaW1wb3J0ICdtYWNyb3MvdmFyaWFibGUubWFjcm9z JyBhcyBWQVJJQUJMRSAlfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjfQoreyMjIFJlbmFtZSB0YWJsZSAjI30KK3sjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3slIGlmIGRhdGEubmFtZSBh bmQgZGF0YS5uYW1lICE9IG9fZGF0YS5uYW1lICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVu dChvX2RhdGEuc2NoZW1hLCBvX2RhdGEubmFtZSl9fQorICAgIFJFTkFNRSBUTyB7e2Nvbm58cXRJ ZGVudChkYXRhLm5hbWUpfX07CisKK3slIGVuZGlmICV9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyMgQ2hhbmdlIHRhYmxlIHNjaGVt YSAjI30KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjI30KK3slIGlmIGRhdGEuc2NoZW1hIGFuZCBkYXRhLnNjaGVtYSAhPSBvX2RhdGEuc2NoZW1h ICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58cXRJZGVudChvX2RhdGEuc2NoZW1hLCBkYXRhLm5hbWUp fX0KKyAgU0VUIFNDSEVNQSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSl9fTsKKworeyUgZW5k aWYgJX0KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjI30KK3sjIyBDaGFuZ2UgdGFibGUgb3duZXIgIyN9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7JSBpZiBkYXRhLnJlbG93bmVyIGFu ZCBkYXRhLnJlbG93bmVyICE9IG9fZGF0YS5yZWxvd25lciAlfQorQUxURVIgVEFCTEUge3tjb25u fHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fQorICAgIE9XTkVSIFRPIHt7Y29ubnxx dElkZW50KGRhdGEucmVsb3duZXIpfX07CisKK3slIGVuZGlmICV9Cit7IyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyMgVXBkYXRlIEluaGVy aXRzIHRhYmxlIGRlZmluaXRpb24gIyN9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7JSBpZiBkYXRhLmNvbGxfaW5oZXJpdHNfYWRkZWR8 bGVuZ3RoID4gMCAlfQoreyUgZm9yIHZhbCBpbiBkYXRhLmNvbGxfaW5oZXJpdHNfYWRkZWQgJX0K K0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0KKyAg ICBJTkhFUklUIHt7dmFsfX07CisKK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmIGRh dGEuY29sbF9pbmhlcml0c19yZW1vdmVkfGxlbmd0aCA+IDAgJX0KK3slIGZvciB2YWwgaW4gZGF0 YS5jb2xsX2luaGVyaXRzX3JlbW92ZWQgJX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRh dGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0KKyAgICBOTyBJTkhFUklUIHt7dmFsfX07CisKK3slIGVu ZGZvciAlfQoreyUgZW5kaWYgJX0KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjI30KK3sjIyBDaGFuZ2UgdGFibGVzcGFjZSAjI30KK3sjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3slIGlmIGRh dGEuc3BjbmFtZSBhbmQgZGF0YS5zcGNuYW1lICE9IG9fZGF0YS5zcGNuYW1lICV9CitBTFRFUiBU QUJMRSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19CisgICAgU0VUIFRB QkxFU1BBQ0Uge3tjb25ufHF0SWRlbnQoZGF0YS5zcGNuYW1lKX19OworCit7JSBlbmRpZiAlfQor eyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQor eyMjIGNoYW5nZSBmaWxsZmFjdG9yZSBzZXR0aW5ncyAjI30KK3sjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3slIGlmIGRhdGEuZmlsbGZhY3Rv ciBhbmQgZGF0YS5maWxsZmFjdG9yICE9IG9fZGF0YS5maWxsZmFjdG9yICV9CitBTFRFUiBUQUJM RSB7e2Nvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19CisgICAgU0VUIChGSUxM RkFDVE9SPXt7ZGF0YS5maWxsZmFjdG9yfX0pOworCit7JSBlbmRpZiAlfQoreyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyMgVGFibGUgQXV0b1ZhY3V1bSBzZXR0aW5ncyAjI30K K3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgaWYgZGF0YS52YWN1dW1fdGFi bGUgaXMgZGVmaW5lZCBhbmQgZGF0YS52YWN1dW1fdGFibGUuc2V0X3ZhbHVlc3xsZW5ndGggPiAw ICV9Cit7JSBzZXQgaGFzX3ZhY3V1bV9zZXQgPSB0cnVlICV9Cit7JSBlbmRpZiAlfQoreyUgaWYg ZGF0YS52YWN1dW1fdGFibGUgaXMgZGVmaW5lZCBhbmQgZGF0YS52YWN1dW1fdGFibGUucmVzZXRf dmFsdWVzfGxlbmd0aCA+IDAgJX0KK3slIHNldCBoYXNfdmFjdXVtX3Jlc2V0ID0gdHJ1ZSAlfQor eyUgZW5kaWYgJX0KK3slIGlmIG9fZGF0YS5hdXRvdmFjdXVtX2N1c3RvbSBhbmQgZGF0YS5hdXRv dmFjdXVtX2N1c3RvbSA9PSBmYWxzZSAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0 YS5zY2hlbWEsIGRhdGEubmFtZSl9fSBSRVNFVCAoCisgICAgYXV0b3ZhY3V1bV9lbmFibGVkLAor ICAgIGF1dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0b3IsCisgICAgYXV0b3ZhY3V1bV9hbmFs eXplX3RocmVzaG9sZCwKKyAgICBhdXRvdmFjdXVtX2ZyZWV6ZV9tYXhfYWdlLAorICAgIGF1dG92 YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXksCisgICAgYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1p dCwKKyAgICBhdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3IsCisgICAgYXV0b3ZhY3V1bV92 YWN1dW1fdGhyZXNob2xkLAorICAgIGF1dG92YWN1dW1fZnJlZXplX21pbl9hZ2UsCisgICAgYXV0 b3ZhY3V1bV9mcmVlemVfdGFibGVfYWdlCispOworeyUgZWxzZSAlfQoreyUgaWYgZGF0YS5hdXRv dmFjdXVtX2VuYWJsZWQgaXMgZGVmaW5lZCBvciBoYXNfdmFjdXVtX3NldCAlfQorQUxURVIgVEFC TEUge3tjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSl9fSBTRVQgKAoreyUgaWYg ZGF0YS5hdXRvdmFjdXVtX2VuYWJsZWQgaXMgZGVmaW5lZCBhbmQgZGF0YS5hdXRvdmFjdXVtX2Vu YWJsZWQgIT0gb19kYXRhLmF1dG92YWN1dW1fZW5hYmxlZCAlfQorICAgIGF1dG92YWN1dW1fZW5h YmxlZCA9IHslIGlmIGRhdGEuYXV0b3ZhY3V1bV9lbmFibGVkICV9dHJ1ZXslIGVsc2UgJX1mYWxz ZXslIGVuZGlmICV9eyUgaWYgaGFzX3ZhY3V1bV9zZXQgJX0sCit7JSBlbmRpZiAlfQoreyUgZW5k aWYgJX0KK3slIGlmIGhhc192YWN1dW1fc2V0ICV9Cit7JSBmb3Igb3B0IGluIGRhdGEudmFjdXVt X3RhYmxlLnNldF92YWx1ZXMgJX17JSBpZiBvcHQubmFtZSBhbmQgb3B0LnZhbHVlICV9CisgICAg e3tvcHQubmFtZX19ID0ge3tvcHQudmFsdWV9fXslIGlmIG5vdCBsb29wLmxhc3QgJX0sCit7JSBl bmRpZiAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KKworKTsKK3sl IGVuZGlmICV9Cit7JSBpZiBoYXNfdmFjdXVtX3Jlc2V0ICV9CitBTFRFUiBUQUJMRSB7e2Nvbm58 cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKX19IFJFU0VUICgKK3slIGZvciBvcHQgaW4g ZGF0YS52YWN1dW1fdGFibGUucmVzZXRfdmFsdWVzICV9eyUgaWYgb3B0Lm5hbWUgJX0KKyAgICB7 e29wdC5uYW1lfX17JSBpZiBub3QgbG9vcC5sYXN0ICV9LAoreyUgZW5kaWYgJX0KK3slIGVuZGlm ICV9Cit7JSBlbmRmb3IgJX0KKworKTsKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQoreyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyMgVG9hc3QgdGFibGUgQXV0b1Zh Y3V1bSBzZXR0aW5ncyAjI30KK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj fQoreyUgaWYgZGF0YS52YWN1dW1fdG9hc3QgaXMgZGVmaW5lZCBhbmQgZGF0YS52YWN1dW1fdG9h c3Quc2V0X3ZhbHVlc3xsZW5ndGggPiAwICV9Cit7JSBzZXQgaGFzX3ZhY3V1bV90b2FzdF9zZXQg PSB0cnVlICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS52YWN1dW1fdG9hc3QgaXMgZGVmaW5l ZCBhbmQgZGF0YS52YWN1dW1fdG9hc3QucmVzZXRfdmFsdWVzfGxlbmd0aCA+IDAgJX0KK3slIHNl dCBoYXNfdmFjdXVtX3RvYXN0X3Jlc2V0ID0gdHJ1ZSAlfQoreyUgZW5kaWYgJX0KK3slIGlmIG9f ZGF0YS50b2FzdF9hdXRvdmFjdXVtIGFuZCBkYXRhLnRvYXN0X2F1dG92YWN1dW0gPT0gZmFsc2Ug JX0KK0FMVEVSIFRBQkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0g UkVTRVQgKAorICAgIHRvYXN0LmF1dG92YWN1dW1fZW5hYmxlZCwKKyAgICB0b2FzdC5hdXRvdmFj dXVtX2ZyZWV6ZV9tYXhfYWdlLAorICAgIHRvYXN0LmF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVs YXksCisgICAgdG9hc3QuYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1pdCwKKyAgICB0b2FzdC5h dXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3IsCisgICAgdG9hc3QuYXV0b3ZhY3V1bV92YWN1 dW1fdGhyZXNob2xkLAorICAgIHRvYXN0LmF1dG92YWN1dW1fZnJlZXplX21pbl9hZ2UsCisgICAg dG9hc3QuYXV0b3ZhY3V1bV9mcmVlemVfdGFibGVfYWdlLAorICAgIHRvYXN0LmF1dG92YWN1dW1f YW5hbHl6ZV90aHJlc2hvbGQsCisgICAgdG9hc3QuYXV0b3ZhY3V1bV9hbmFseXplX3NjYWxlX2Zh Y3RvcgorKTsKK3slIGVsc2UgJX0KK3slIGlmIGRhdGEudG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVk IGlzIGRlZmluZWQgb3IgaGFzX3ZhY3V1bV90b2FzdF9zZXQgJX0KK0FMVEVSIFRBQkxFIHt7Y29u bnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0gU0VUICgKK3slIGlmIGRhdGEudG9h c3RfYXV0b3ZhY3V1bV9lbmFibGVkIGlzIGRlZmluZWQgYW5kIGRhdGEudG9hc3RfYXV0b3ZhY3V1 bV9lbmFibGVkICE9IG9fZGF0YS50b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQgJX0KKyAgICB0b2Fz dC5hdXRvdmFjdXVtX2VuYWJsZWQgPSB7JSBpZiBkYXRhLnRvYXN0X2F1dG92YWN1dW1fZW5hYmxl ZCAlfXRydWV7JSBlbHNlICV9ZmFsc2V7JSBlbmRpZiAlfXslIGlmIGhhc192YWN1dW1fdG9hc3Rf c2V0ICV9LAoreyUgZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7JSBpZiBoYXNfdmFjdXVtX3RvYXN0 X3NldCAlfQoreyUgZm9yIG9wdCBpbiBkYXRhLnZhY3V1bV90b2FzdC5zZXRfdmFsdWVzICV9eyUg aWYgb3B0Lm5hbWUgYW5kIG9wdC52YWx1ZSAlfQorICAgIHRvYXN0Lnt7b3B0Lm5hbWV9fSA9IHt7 b3B0LnZhbHVlfX17JSBpZiBub3QgbG9vcC5sYXN0ICV9LAoreyUgZW5kaWYgJX0KK3slIGVuZGlm ICV9Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9CisKKyk7Cit7JSBlbmRpZiAlfQoreyUgaWYg aGFzX3ZhY3V1bV90b2FzdF9yZXNldCAlfQorQUxURVIgVEFCTEUge3tjb25ufHF0SWRlbnQoZGF0 YS5zY2hlbWEsIGRhdGEubmFtZSl9fSBSRVNFVCAoCit7JSBmb3Igb3B0IGluIGRhdGEudmFjdXVt X3RvYXN0LnJlc2V0X3ZhbHVlcyAlfXslIGlmIG9wdC5uYW1lICV9CisgICAgdG9hc3Que3tvcHQu bmFtZX19eyUgaWYgbm90IGxvb3AubGFzdCAlfSwKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQor eyUgZW5kZm9yICV9CisKKyk7Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3sjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3sjIyBDaGFuZ2Ug dGFibGUgY29tbWVudHMgIyN9Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyN9Cit7JSBpZiBkYXRhLmRlc2NyaXB0aW9uIGlzIGRlZmluZWQgYW5k IGRhdGEuZGVzY3JpcHRpb24gIT0gb19kYXRhLmRlc2NyaXB0aW9uICV9CitDT01NRU5UIE9OIFRB QkxFIHt7Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpfX0KKyAgSVMge3tkYXRh LmRlc2NyaXB0aW9ufHF0TGl0ZXJhbH19OworCit7JSBlbmRpZiAlfQoreyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyMjIFVwZGF0ZSB0YWJs ZSBQcml2aWxlZ2VzICMjfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjfQoreyUgaWYgZGF0YS5yZWxhY2wgJX0KK3slIGlmICdkZWxldGVkJyBp biBkYXRhLnJlbGFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5yZWxhY2wuZGVsZXRlZCAlfQor e3sgUFJJVklMRUdFLlVOU0VUQUxMKGNvbm4sICdUQUJMRScsIHByaXYuZ3JhbnRlZSwgZGF0YS5u YW1lLCBkYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdj aGFuZ2VkJyBpbiBkYXRhLnJlbGFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5yZWxhY2wuY2hh bmdlZCAlfQore3sgUFJJVklMRUdFLlVOU0VUQUxMKGNvbm4sICdUQUJMRScsIHByaXYuZ3JhbnRl ZSwgZGF0YS5uYW1lLCBkYXRhLnNjaGVtYSkgfX0KK3t7IFBSSVZJTEVHRS5TRVQoY29ubiwgJ1RB QkxFJywgcHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIHByaXYud2l0aG91dF9ncmFudCwgcHJpdi53 aXRoX2dyYW50LCBkYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3sl IGlmICdhZGRlZCcgaW4gZGF0YS5yZWxhY2wgJX0KK3slIGZvciBwcml2IGluIGRhdGEucmVsYWNs LmFkZGVkICV9Cit7eyBQUklWSUxFR0UuU0VUKGNvbm4sICdUQUJMRScsIHByaXYuZ3JhbnRlZSwg ZGF0YS5uYW1lLCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0aF9ncmFudCwgZGF0YS5zY2hl bWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQoreyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyMjIFVwZGF0 ZSB0YWJsZSBTZWN1cml0eUxhYmVsICMjfQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyUgaWYgZGF0YS5zZWNsYWJlbHMgYW5kIGRhdGEu c2VjbGFiZWxzfGxlbmd0aCA+IDAgJX0KK3slIHNldCBzZWNsYWJlbHMgPSBkYXRhLnNlY2xhYmVs cyAlfQoreyUgaWYgJ2RlbGV0ZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmRlbGV0ZWR8 bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmRlbGV0ZWQgJX0KK3t7IFNFQ0xB QkVMLlVOU0VUKGNvbm4sICdUQUJMRScsIGRhdGEubmFtZSwgci5wcm92aWRlciwgZGF0YS5zY2hl bWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnYWRkZWQnIGluIHNlY2xh YmVscyBhbmQgc2VjbGFiZWxzLmFkZGVkfGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xh YmVscy5hZGRlZCAlfQore3sgU0VDTEFCRUwuU0VUKGNvbm4sICdUQUJMRScsIGRhdGEubmFtZSwg ci5wcm92aWRlciwgci5sYWJlbCwgZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVu ZGlmICV9Cit7JSBpZiAnY2hhbmdlZCcgaW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMuY2hhbmdl ZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMuY2hhbmdlZCAlfQore3sgU0VD TEFCRUwuU0VUKGNvbm4sICdUQUJMRScsIGRhdGEubmFtZSwgci5wcm92aWRlciwgci5sYWJlbCwg ZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9CisKK3slIGVuZGlmICV9 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMvdGVzdF9jb2x1bW5fYWNsX3NxbC5weSBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZXN0cy90ZXN0X2NvbHVtbl9hY2xfc3FsLnB5CmluZGV4IGY1OTk4OTJiLi5lZmIx OTg2ZSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rlc3RzL3Rlc3RfY29sdW1uX2FjbF9zcWwucHkK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3Rlc3RzL3Rlc3RfY29sdW1uX2FjbF9zcWwucHkKQEAgLTM1LDcgKzM1 LDEwIEBAIGNsYXNzIFRlc3RDb2x1bW5BY2xTcWwoU1FMVGVtcGxhdGVUZXN0QmFzZSk6CiAgICAg ICAgIHNlbGYudGFibGVfaWQsIHNlbGYuY29sdW1uX2lkID0gY3Vyc29yLmZldGNob25lKCkKIAog ICAgIGRlZiBnZW5lcmF0ZV9zcWwoc2VsZiwgdmVyc2lvbik6Ci0gICAgICAgIHRlbXBsYXRlX2Zp bGUgPSBzZWxmLmdldF90ZW1wbGF0ZV9maWxlKHZlcnNpb24sICJhY2wuc3FsIikKKyAgICAgICAg ZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLiIs ICJ0ZW1wbGF0ZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbHVtbnMi LCAic3FsIikKKyAgICAgICAgdGVtcGxhdGVfZmlsZSA9IHNlbGYuZ2V0X3RlbXBsYXRlX2ZpbGUo dmVyc2lvbiwgZmlsZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiYWNsLnNxbCIpCiAgICAgICAgIHRlbXBsYXRlID0gZmlsZV9hc190ZW1wbGF0 ZSh0ZW1wbGF0ZV9maWxlKQogICAgICAgICBwdWJsaWNfc2NoZW1hX2lkID0gMjIwMAogICAgICAg ICBzcWwgPSB0ZW1wbGF0ZS5yZW5kZXIoc2NpZD1wdWJsaWNfc2NoZW1hX2lkLApAQCAtNDcsMTAg KzUwLDMgQEAgY2xhc3MgVGVzdENvbHVtbkFjbFNxbChTUUxUZW1wbGF0ZVRlc3RCYXNlKToKIAog ICAgIGRlZiBhc3NlcnRpb25zKHNlbGYsIGZldGNoX3Jlc3VsdCwgZGVzY3JpcHRpb25zKToKICAg ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4oZmV0Y2hfcmVzdWx0KSkKLQotICAgIEBzdGF0 aWNtZXRob2QKLSAgICBkZWYgZ2V0X3RlbXBsYXRlX2ZpbGUodmVyc2lvbiwgZmlsZW5hbWUpOgot ICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKAotICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1l KF9fZmlsZV9fKSwgIi4uIiwgInRlbXBsYXRlcyIsICJjb2x1bW5zIiwgInNxbCIsCi0gICAgICAg ICAgICB2ZXJzaW9uLCBmaWxlbmFtZQotICAgICAgICApCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dGVzdHMvdGVzdF9jb2x1bW5fcHJvcGVydGllc19zcWwucHkgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMvdGVz dF9jb2x1bW5fcHJvcGVydGllc19zcWwucHkKaW5kZXggYzA5ODYwNWUuLjhkYThmMTJlIDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMvdGVzdF9jb2x1bW5fcHJvcGVydGllc19zcWwucHkKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3Rlc3RzL3Rlc3RfY29sdW1uX3Byb3BlcnRpZXNfc3FsLnB5CkBAIC0zMCw3 ICszMCwxMCBAQCBjbGFzcyBUZXN0Q29sdW1uUHJvcGVydGllc1NxbChTUUxUZW1wbGF0ZVRlc3RC YXNlKToKICAgICAgICAgc2VsZi50YWJsZV9pZCA9IGN1cnNvci5mZXRjaG9uZSgpWzBdCiAKICAg ICBkZWYgZ2VuZXJhdGVfc3FsKHNlbGYsIHZlcnNpb24pOgotICAgICAgICB0ZW1wbGF0ZV9maWxl ID0gc2VsZi5nZXRfdGVtcGxhdGVfZmlsZSh2ZXJzaW9uLCAicHJvcGVydGllcy5zcWwiKQorICAg ICAgICBmaWxlX3BhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwg Ii4uIiwgInRlbXBsYXRlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29s dW1ucyIsICJzcWwiKQorICAgICAgICB0ZW1wbGF0ZV9maWxlID0gc2VsZi5nZXRfdGVtcGxhdGVf ZmlsZSh2ZXJzaW9uLCBmaWxlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzLnNxbCIpCiAgICAgICAgIHRlbXBsYXRlID0gZmls ZV9hc190ZW1wbGF0ZSh0ZW1wbGF0ZV9maWxlKQogICAgICAgICBwdWJsaWNfc2NoZW1hX2lkID0g MjIwMAogICAgICAgICBzcWwgPSB0ZW1wbGF0ZS5yZW5kZXIoc2NpZD1wdWJsaWNfc2NoZW1hX2lk LApAQCAtNDcsMTAgKzUwLDMgQEAgY2xhc3MgVGVzdENvbHVtblByb3BlcnRpZXNTcWwoU1FMVGVt cGxhdGVUZXN0QmFzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NvbWVfY29sdW1uJywg Zmlyc3Rfcm93WyduYW1lJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2NoYXJhY3RlciB2 YXJ5aW5nJywgZmlyc3Rfcm93WydjbHR5cGUnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgz LCBsZW4oZmV0Y2hfcmVzdWx0KSkKLQotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgZ2V0X3Rl bXBsYXRlX2ZpbGUodmVyc2lvbiwgZmlsZW5hbWUpOgotICAgICAgICByZXR1cm4gb3MucGF0aC5q b2luKAotICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uIiwgInRlbXBs YXRlcyIsICJjb2x1bW5zIiwgInNxbCIsCi0gICAgICAgICAgICB2ZXJzaW9uLCBmaWxlbmFtZQot ICAgICAgICApCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMvdGVzdF90YWJsZXNfYWNsX3Nx bC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90ZXN0cy90ZXN0X3RhYmxlc19hY2xfc3FsLnB5CmluZGV4IDRiOTk1 ZTkzLi5mMzUyMzU5MSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rlc3RzL3Rlc3RfdGFibGVzX2Fj bF9zcWwucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rlc3RzL3Rlc3RfdGFibGVzX2FjbF9zcWwucHkKQEAg LTMwLDcgKzMwLDEwIEBAIGNsYXNzIFRlc3RUYWJsZXNBY2xTcWwoU1FMVGVtcGxhdGVUZXN0QmFz ZSk6CiAgICAgICAgIHNlbGYudGFibGVfaWQgPSBjdXJzb3IuZmV0Y2hvbmUoKVswXQogCiAgICAg ZGVmIGdlbmVyYXRlX3NxbChzZWxmLCB2ZXJzaW9uKToKLSAgICAgICAgdGVtcGxhdGVfZmlsZSA9 IHNlbGYuZ2V0X3RlbXBsYXRlX2ZpbGUodmVyc2lvbiwgImFjbC5zcWwiKQorICAgICAgICBmaWxl X3BhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uIiwgInRl bXBsYXRlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGFibGVzIiwgInNx bCIpCisgICAgICAgIHRlbXBsYXRlX2ZpbGUgPSBzZWxmLmdldF90ZW1wbGF0ZV9maWxlKHZlcnNp b24sIGZpbGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgImFjbC5zcWwiKQogICAgICAgICB0ZW1wbGF0ZSA9IGZpbGVfYXNfdGVtcGxhdGUodGVt cGxhdGVfZmlsZSkKICAgICAgICAgcHVibGljX3NjaGVtYV9pZCA9IDIyMDAKICAgICAgICAgc3Fs ID0gdGVtcGxhdGUucmVuZGVyKHNjaWQ9cHVibGljX3NjaGVtYV9pZCwKQEAgLTUzLDEwICs1Niwz IEBAIGNsYXNzIFRlc3RUYWJsZXNBY2xTcWwoU1FMVGVtcGxhdGVUZXN0QmFzZSk6CiAgICAgICAg IHNlbGYuYXNzZXJ0RXF1YWwoWydyJ10sIG5ld19hY2xfbWFwWydwcml2aWxlZ2VzJ10pCiAgICAg ICAgIHNlbGYuYXNzZXJ0RXF1YWwoW0ZhbHNlXSwgbmV3X2FjbF9tYXBbJ2dyYW50YWJsZSddKQog ICAgICAgICByZXR1cm4gcHVibGljX2FjbHMKLQotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYg Z2V0X3RlbXBsYXRlX2ZpbGUodmVyc2lvbiwgZmlsZW5hbWUpOgotICAgICAgICByZXR1cm4gb3Mu cGF0aC5qb2luKAotICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uIiwg InRlbXBsYXRlcyIsICJ0YWJsZXMiLCAic3FsIiwKLSAgICAgICAgICAgIHZlcnNpb24sIGZpbGVu YW1lCi0gICAgICAgICkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0cy90ZXN0X3RhYmxlc19u b2RlX3NxbC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0cy90ZXN0X3RhYmxlc19ub2RlX3NxbC5weQppbmRl eCBlMTRkZjBkNi4uOWVmMGU3NmYgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0cy90ZXN0X3Rh Ymxlc19ub2RlX3NxbC5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMvdGVzdF90YWJsZXNfbm9kZV9z cWwucHkKQEAgLTI4LDcgKzI4LDEwIEBAIGNsYXNzIFRlc3RUYWJsZXNOb2RlU3FsKFNRTFRlbXBs YXRlVGVzdEJhc2UpOgogICAgICAgICBwYXNzCiAKICAgICBkZWYgZ2VuZXJhdGVfc3FsKHNlbGYs IHZlcnNpb24pOgotICAgICAgICB0ZW1wbGF0ZV9maWxlID0gc2VsZi5nZXRfdGVtcGxhdGVfZmls ZSh2ZXJzaW9uLCAibm9kZXMuc3FsIikKKyAgICAgICAgZmlsZV9wYXRoID0gb3MucGF0aC5qb2lu KG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLiIsICJ0ZW1wbGF0ZXMiLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgInRhYmxlcyIsICJzcWwiKQorICAgICAgICB0ZW1wbGF0 ZV9maWxlID0gc2VsZi5nZXRfdGVtcGxhdGVfZmlsZSh2ZXJzaW9uLCBmaWxlX3BhdGgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub2Rlcy5zcWwiKQog ICAgICAgICB0ZW1wbGF0ZSA9IGZpbGVfYXNfdGVtcGxhdGUodGVtcGxhdGVfZmlsZSkKICAgICAg ICAgcHVibGljX3NjaGVtYV9pZCA9IDIyMDAKICAgICAgICAgc3FsID0gdGVtcGxhdGUucmVuZGVy KHNjaWQ9cHVibGljX3NjaGVtYV9pZCkKQEAgLTUwLDEwICs1MywzIEBAIGNsYXNzIFRlc3RUYWJs ZXNOb2RlU3FsKFNRTFRlbXBsYXRlVGVzdEJhc2UpOgogICAgICAgICAjIHRyaWdnZXJjb3VudCBp cyBzb21ldGltZXMgcmV0dXJuZWQgYXMgYSBzdHJpbmcgZm9yIHNvbWUgcmVhc29uCiAgICAgICAg IHNlbGYuYXNzZXJ0RXF1YWwoMCwgbG9uZyh0cmlnZ2VyY291bnQpKQogICAgICAgICBzZWxmLmFz c2VydElzTm90Tm9uZShsb25nKGhhc19lbmFibGVfdHJpZ2dlcnMpKQotCi0gICAgQHN0YXRpY21l dGhvZAotICAgIGRlZiBnZXRfdGVtcGxhdGVfZmlsZSh2ZXJzaW9uLCBmaWxlbmFtZSk6Ci0gICAg ICAgIHJldHVybiBvcy5wYXRoLmpvaW4oCi0gICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUoX19m aWxlX18pLCAiLi4iLCAidGVtcGxhdGVzIiwgInRhYmxlcyIsICJzcWwiLAotICAgICAgICAgICAg dmVyc2lvbiwgZmlsZW5hbWUKLSAgICAgICAgKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rlc3Rz L3Rlc3RfdGFibGVzX3Byb3BlcnRpZXNfc3FsLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rlc3RzL3Rlc3RfdGFi bGVzX3Byb3BlcnRpZXNfc3FsLnB5CmluZGV4IGYxMzIzYTNhLi5mYzM0OWJkMyAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3Rlc3RzL3Rlc3RfdGFibGVzX3Byb3BlcnRpZXNfc3FsLnB5CisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZXN0cy90ZXN0X3RhYmxlc19wcm9wZXJ0aWVzX3NxbC5weQpAQCAtNDQsNyArNDQs MTAgQEAgY2xhc3MgVGVzdFRhYmxlc1Byb3BlcnRpZXNTcWwoU1FMVGVtcGxhdGVUZXN0QmFzZSk6 CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIGZpcnN0X3Jvd1snY29sbF9pbmhlcml0cydd KQogCiAgICAgZGVmIGdlbmVyYXRlX3NxbChzZWxmLCB2ZXJzaW9uKToKLSAgICAgICAgdGVtcGxh dGVfZmlsZSA9IHNlbGYuZ2V0X3RlbXBsYXRlX2ZpbGUodmVyc2lvbiwgInByb3BlcnRpZXMuc3Fs IikKKyAgICAgICAgZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2Zp bGVfXyksICIuLiIsICJ0ZW1wbGF0ZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgInRhYmxlcyIsICJzcWwiKQorICAgICAgICB0ZW1wbGF0ZV9maWxlID0gc2VsZi5nZXRfdGVt cGxhdGVfZmlsZSh2ZXJzaW9uLCBmaWxlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzLnNxbCIpCiAgICAgICAgIHRlbXBsYXRl ID0gZmlsZV9hc190ZW1wbGF0ZSh0ZW1wbGF0ZV9maWxlKQogICAgICAgICBwdWJsaWNfc2NoZW1h X2lkID0gMjIwMAogICAgICAgICBzcWwgPSB0ZW1wbGF0ZS5yZW5kZXIoc2NpZD1wdWJsaWNfc2No ZW1hX2lkLApAQCAtNjYsMTAgKzY5LDMgQEAgY2xhc3MgVGVzdFRhYmxlc1Byb3BlcnRpZXNTcWwo U1FMVGVtcGxhdGVUZXN0QmFzZSk6CiAKICAgICAgICAgY3Vyc29yLmV4ZWN1dGUoIlNFTEVDVCBv aWQgRlJPTSBwZ19jbGFzcyB3aGVyZSByZWxuYW1lPSd0ZXN0X3RhYmxlJyIpCiAgICAgICAgIHNl bGYudGFibGVfaWQgPSBjdXJzb3IuZmV0Y2hvbmUoKVswXQotCi0gICAgQHN0YXRpY21ldGhvZAot ICAgIGRlZiBnZXRfdGVtcGxhdGVfZmlsZSh2ZXJzaW9uLCBmaWxlbmFtZSk6Ci0gICAgICAgIHJl dHVybiBvcy5wYXRoLmpvaW4oCi0gICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18p LCAiLi4iLCAidGVtcGxhdGVzIiwgInRhYmxlcyIsICJzcWwiLAotICAgICAgICAgICAgdmVyc2lv biwgZmlsZW5hbWUKLSAgICAgICAgKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rlc3RzL3Rlc3Rf dHJpZ2dlcl9nZXRfb2lkX3NxbC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0cy90ZXN0X3RyaWdnZXJfZ2V0 X29pZF9zcWwucHkKaW5kZXggYmVlZmUxYjAuLjFmMjlmYWQ4IDEwMDY0NAotLS0gYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJs ZXMvdGVzdHMvdGVzdF90cmlnZ2VyX2dldF9vaWRfc3FsLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0 cy90ZXN0X3RyaWdnZXJfZ2V0X29pZF9zcWwucHkKQEAgLTM1LDcgKzM1LDEwIEBAIGNsYXNzIFRl c3RUcmlnZ2VyR2V0T2lkU3FsKFNRTFRlbXBsYXRlVGVzdEJhc2UpOgogICAgICAgICBzZWxmLnRh YmxlX2lkLCBzZWxmLmNvbHVtbl9pZCA9IGN1cnNvci5mZXRjaG9uZSgpCiAKICAgICBkZWYgZ2Vu ZXJhdGVfc3FsKHNlbGYsIHZlcnNpb24pOgotICAgICAgICB0ZW1wbGF0ZV9maWxlID0gc2VsZi5n ZXRfdGVtcGxhdGVfZmlsZSh2ZXJzaW9uLCAiZ2V0X29pZC5zcWwiKQorICAgICAgICBmaWxlX3Bh dGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uIiwgInRlbXBs YXRlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHJpZ2dlcnMiLCAic3Fs IikKKyAgICAgICAgdGVtcGxhdGVfZmlsZSA9IHNlbGYuZ2V0X3RlbXBsYXRlX2ZpbGUodmVyc2lv biwgZmlsZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiZ2V0X29pZC5zcWwiKQogICAgICAgICBqaW5qYTIuZmlsdGVycy5GSUxURVJTWydxdExp dGVyYWwnXSA9IGxhbWJkYSB2YWx1ZTogIk5VTEwiCiAgICAgICAgIHRlbXBsYXRlID0gZmlsZV9h c190ZW1wbGF0ZSh0ZW1wbGF0ZV9maWxlKQogCkBAIC00NywxMCArNTAsMyBAQCBjbGFzcyBUZXN0 VHJpZ2dlckdldE9pZFNxbChTUUxUZW1wbGF0ZVRlc3RCYXNlKToKIAogICAgIGRlZiBhc3NlcnRp b25zKHNlbGYsIGZldGNoX3Jlc3VsdCwgZGVzY3JpcHRpb25zKToKICAgICAgICAgc2VsZi5hc3Nl cnRFcXVhbCgwLCBsZW4oZmV0Y2hfcmVzdWx0KSkKLQotICAgIEBzdGF0aWNtZXRob2QKLSAgICBk ZWYgZ2V0X3RlbXBsYXRlX2ZpbGUodmVyc2lvbiwgZmlsZW5hbWUpOgotICAgICAgICByZXR1cm4g b3MucGF0aC5qb2luKAotICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4u IiwgInRlbXBsYXRlcyIsICJ0cmlnZ2VycyIsICJzcWwiLAotICAgICAgICAgICAgdmVyc2lvbiwg ZmlsZW5hbWUKLSAgICAgICAgKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rlc3RzL3Rlc3RfdHJp Z2dlcl9ub2Rlc19zcWwucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMvdGVzdF90cmlnZ2VyX25vZGVzX3Nx bC5weQppbmRleCA2Y2UzNTQ4MS4uOTJlODBkYzkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0 cy90ZXN0X3RyaWdnZXJfbm9kZXNfc3FsLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0cy90ZXN0X3Ry aWdnZXJfbm9kZXNfc3FsLnB5CkBAIC0zMCw3ICszMCwxMCBAQCBjbGFzcyBUZXN0VHJpZ2dlck5v ZGVzU3FsKFNRTFRlbXBsYXRlVGVzdEJhc2UpOgogICAgICAgICBzZWxmLnRhYmxlX2lkID0gY3Vy c29yLmZldGNob25lKClbMF0KIAogICAgIGRlZiBnZW5lcmF0ZV9zcWwoc2VsZiwgdmVyc2lvbik6 Ci0gICAgICAgIHRlbXBsYXRlX2ZpbGUgPSBzZWxmLmdldF90ZW1wbGF0ZV9maWxlKHZlcnNpb24s ICJub2Rlcy5zcWwiKQorICAgICAgICBmaWxlX3BhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5k aXJuYW1lKF9fZmlsZV9fKSwgIi4uIiwgInRlbXBsYXRlcyIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAidHJpZ2dlcnMiLCAic3FsIikKKyAgICAgICAgdGVtcGxhdGVfZmlsZSA9 IHNlbGYuZ2V0X3RlbXBsYXRlX2ZpbGUodmVyc2lvbiwgZmlsZV9wYXRoLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9kZXMuc3FsIikKICAgICAgICAg dGVtcGxhdGUgPSBmaWxlX2FzX3RlbXBsYXRlKHRlbXBsYXRlX2ZpbGUpCiAgICAgICAgIHNxbCA9 IHRlbXBsYXRlLnJlbmRlcih0aWQ9c2VsZi50YWJsZV9pZCkKIApAQCAtMzgsMTAgKzQxLDMgQEAg Y2xhc3MgVGVzdFRyaWdnZXJOb2Rlc1NxbChTUUxUZW1wbGF0ZVRlc3RCYXNlKToKIAogICAgIGRl ZiBhc3NlcnRpb25zKHNlbGYsIGZldGNoX3Jlc3VsdCwgZGVzY3JpcHRpb25zKToKICAgICAgICAg c2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4oZmV0Y2hfcmVzdWx0KSkKLQotICAgIEBzdGF0aWNtZXRo b2QKLSAgICBkZWYgZ2V0X3RlbXBsYXRlX2ZpbGUodmVyc2lvbiwgZmlsZW5hbWUpOgotICAgICAg ICByZXR1cm4gb3MucGF0aC5qb2luKAotICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKF9fZmls ZV9fKSwgIi4uIiwgInRlbXBsYXRlcyIsICJ0cmlnZ2VycyIsICJzcWwiLAotICAgICAgICAgICAg dmVyc2lvbiwgZmlsZW5hbWUKLSAgICAgICAgKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVtcGxhdGVzL2RlcGVuZHMvc3FsLzEyX3BsdXMv ZGVwZW5kZW5jaWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL3RlbXBsYXRlcy9kZXBlbmRzL3NxbC8xMl9wbHVzL2RlcGVuZGVuY2llcy5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjBiNmY3MWY4Ci0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVtcGxhdGVzL2Rl cGVuZHMvc3FsLzEyX3BsdXMvZGVwZW5kZW5jaWVzLnNxbApAQCAtMCwwICsxLDQ1IEBACitTRUxF Q1QgRElTVElOQ1QgZGVwLmRlcHR5cGUsIGRlcC5yZWZjbGFzc2lkLCBjbC5yZWxraW5kLCBhZC5h ZGJpbiwgcGdfZ2V0X2V4cHIoYWQuYWRiaW4sIGFkLmFkcmVsaWQpIGFzIGFkc3JjLAorICAgIENB U0UgV0hFTiBjbC5yZWxraW5kIElTIE5PVCBOVUxMIFRIRU4gY2wucmVsa2luZCB8fCBDT0FMRVND RShkZXAucmVmb2Jqc3ViaWQ6OmNoYXJhY3RlciB2YXJ5aW5nLCAnJykKKyAgICAgICAgV0hFTiB0 Zy5vaWQgSVMgTk9UIE5VTEwgVEhFTiAnVCc6OnRleHQKKyAgICAgICAgV0hFTiB0eS5vaWQgSVMg Tk9UIE5VTEwgQU5EIHR5LnR5cGJhc2V0eXBlID0gMCBUSEVOICd5Jzo6dGV4dAorICAgICAgICBX SEVOIHR5Lm9pZCBJUyBOT1QgTlVMTCBBTkQgdHkudHlwYmFzZXR5cGUgIT0gMCBUSEVOICdkJzo6 dGV4dAorICAgICAgICBXSEVOIG5zLm9pZCBJUyBOT1QgTlVMTCBUSEVOICduJzo6dGV4dAorICAg ICAgICBXSEVOIHByLm9pZCBJUyBOT1QgTlVMTCBUSEVOICdwJzo6dGV4dAorICAgICAgICBXSEVO IGxhLm9pZCBJUyBOT1QgTlVMTCBUSEVOICdsJzo6dGV4dAorICAgICAgICBXSEVOIHJ3Lm9pZCBJ UyBOT1QgTlVMTCBUSEVOICdSJzo6dGV4dAorICAgICAgICBXSEVOIGNvLm9pZCBJUyBOT1QgTlVM TCBUSEVOICdDJzo6dGV4dCB8fCBjb250eXBlCisgICAgICAgIFdIRU4gYWQub2lkIElTIE5PVCBO VUxMIFRIRU4gJ0EnOjp0ZXh0CisgICAgICAgIFdIRU4gZnMub2lkIElTIE5PVCBOVUxMIFRIRU4g J0YnOjp0ZXh0CisgICAgICAgIFdIRU4gZmR3Lm9pZCBJUyBOT1QgTlVMTCBUSEVOICdmJzo6dGV4 dAorICAgIEVMU0UgJycKKyAgICBFTkQgQVMgdHlwZSwKKyAgICBDT0FMRVNDRShjb2MucmVsbmFt ZSwgY2xydy5yZWxuYW1lKSBBUyBvd25lcnRhYmxlLAorICAgIENBU0UgV0hFTiBjbC5yZWxuYW1l IElTIE5PVCBOVUxMIE9SIGF0dC5hdHRuYW1lIElTIE5PVCBOVUxMIFRIRU4gY2wucmVsbmFtZSB8 fCAnLicgfHwgYXR0LmF0dG5hbWUKKyAgICBFTFNFIENPQUxFU0NFKGNsLnJlbG5hbWUsIGNvLmNv bm5hbWUsIHByLnByb25hbWUsIHRnLnRnbmFtZSwgdHkudHlwbmFtZSwgbGEubGFubmFtZSwgcncu cnVsZW5hbWUsIG5zLm5zcG5hbWUsIGZzLnNydm5hbWUsIGZkdy5mZHduYW1lKQorICAgIEVORCBB UyByZWZuYW1lLAorICAgIENPQUxFU0NFKG5zYy5uc3BuYW1lLCBuc28ubnNwbmFtZSwgbnNwLm5z cG5hbWUsIG5zdC5uc3BuYW1lLCBuc3J3Lm5zcG5hbWUpIEFTIG5zcG5hbWUKK0ZST00gcGdfZGVw ZW5kIGRlcAorTEVGVCBKT0lOIHBnX2NsYXNzIGNsIE9OIGRlcC5yZWZvYmppZD1jbC5vaWQKK0xF RlQgSk9JTiBwZ19hdHRyaWJ1dGUgYXR0IE9OIGRlcC5yZWZvYmppZD1hdHQuYXR0cmVsaWQgQU5E IGRlcC5yZWZvYmpzdWJpZD1hdHQuYXR0bnVtCitMRUZUIEpPSU4gcGdfbmFtZXNwYWNlIG5zYyBP TiBjbC5yZWxuYW1lc3BhY2U9bnNjLm9pZAorTEVGVCBKT0lOIHBnX3Byb2MgcHIgT04gZGVwLnJl Zm9iamlkPXByLm9pZAorTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBuc3AgT04gcHIucHJvbmFtZXNw YWNlPW5zcC5vaWQKK0xFRlQgSk9JTiBwZ190cmlnZ2VyIHRnIE9OIGRlcC5yZWZvYmppZD10Zy5v aWQKK0xFRlQgSk9JTiBwZ190eXBlIHR5IE9OIGRlcC5yZWZvYmppZD10eS5vaWQKK0xFRlQgSk9J TiBwZ19uYW1lc3BhY2UgbnN0IE9OIHR5LnR5cG5hbWVzcGFjZT1uc3Qub2lkCitMRUZUIEpPSU4g cGdfY29uc3RyYWludCBjbyBPTiBkZXAucmVmb2JqaWQ9Y28ub2lkCitMRUZUIEpPSU4gcGdfY2xh c3MgY29jIE9OIGNvLmNvbnJlbGlkPWNvYy5vaWQKK0xFRlQgSk9JTiBwZ19uYW1lc3BhY2UgbnNv IE9OIGNvLmNvbm5hbWVzcGFjZT1uc28ub2lkCitMRUZUIEpPSU4gcGdfcmV3cml0ZSBydyBPTiBk ZXAucmVmb2JqaWQ9cncub2lkCitMRUZUIEpPSU4gcGdfY2xhc3MgY2xydyBPTiBjbHJ3Lm9pZD1y dy5ldl9jbGFzcworTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBuc3J3IE9OIGNscncucmVsbmFtZXNw YWNlPW5zcncub2lkCitMRUZUIEpPSU4gcGdfbGFuZ3VhZ2UgbGEgT04gZGVwLnJlZm9iamlkPWxh Lm9pZAorTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBucyBPTiBkZXAucmVmb2JqaWQ9bnMub2lkCitM RUZUIEpPSU4gcGdfYXR0cmRlZiBhZCBPTiBhZC5hZHJlbGlkPWF0dC5hdHRyZWxpZCBBTkQgYWQu YWRudW09YXR0LmF0dG51bQorTEVGVCBKT0lOIHBnX2ZvcmVpZ25fc2VydmVyIGZzIE9OIGZzLm9p ZD1kZXAucmVmb2JqaWQKK0xFRlQgSk9JTiBwZ19mb3JlaWduX2RhdGFfd3JhcHBlciBmZHcgT04g ZmR3Lm9pZD1kZXAucmVmb2JqaWQKK3t7d2hlcmVfY2xhdXNlfX0gQU5ECityZWZjbGFzc2lkIElO ICggU0VMRUNUIG9pZCBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgSU4KKyAgICgncGdfY2xh c3MnLCAncGdfY29uc3RyYWludCcsICdwZ19jb252ZXJzaW9uJywgJ3BnX2xhbmd1YWdlJywgJ3Bn X3Byb2MnLCAncGdfcmV3cml0ZScsICdwZ19uYW1lc3BhY2UnLAorICAgJ3BnX3RyaWdnZXInLCAn cGdfdHlwZScsICdwZ19hdHRyZGVmJywgJ3BnX2V2ZW50X3RyaWdnZXInLCAncGdfZm9yZWlnbl9z ZXJ2ZXInLCAncGdfZm9yZWlnbl9kYXRhX3dyYXBwZXInKSkKK09SREVSIEJZIHJlZmNsYXNzaWQs IGNsLnJlbGtpbmQKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3RlbXBsYXRlcy9kZXBlbmRzL3NxbC8xMl9wbHVzL2RlcGVuZGVudHMuc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVtcGxhdGVzL2RlcGVu ZHMvc3FsLzEyX3BsdXMvZGVwZW5kZW50cy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAuLmM1Yzg3YjdmCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVtcGxhdGVzL2RlcGVuZHMvc3FsLzEyX3BsdXMvZGVw ZW5kZW50cy5zcWwKQEAgLTAsMCArMSw0NCBAQAorU0VMRUNUIERJU1RJTkNUIGRlcC5kZXB0eXBl LCBkZXAuY2xhc3NpZCwgY2wucmVsa2luZCwgYWQuYWRiaW4sIHBnX2dldF9leHByKGFkLmFkYmlu LCBhZC5hZHJlbGlkKSBhcyBhZHNyYywKKyAgICBDQVNFIFdIRU4gY2wucmVsa2luZCBJUyBOT1Qg TlVMTCBUSEVOIGNsLnJlbGtpbmQgfHwgQ09BTEVTQ0UoZGVwLm9ianN1YmlkOjp0ZXh0LCAnJykK KyAgICAgICAgV0hFTiB0Zy5vaWQgSVMgTk9UIE5VTEwgVEhFTiAnVCc6OnRleHQKKyAgICAgICAg V0hFTiB0eS5vaWQgSVMgTk9UIE5VTEwgVEhFTiAneSc6OnRleHQKKyAgICAgICAgV0hFTiBucy5v aWQgSVMgTk9UIE5VTEwgVEhFTiAnbic6OnRleHQKKyAgICAgICAgV0hFTiBwci5vaWQgSVMgTk9U IE5VTEwgVEhFTiAncCc6OnRleHQKKyAgICAgICAgV0hFTiBsYS5vaWQgSVMgTk9UIE5VTEwgVEhF TiAnbCc6OnRleHQKKyAgICAgICAgV0hFTiBydy5vaWQgSVMgTk9UIE5VTEwgVEhFTiAnUic6OnRl eHQKKyAgICAgICAgV0hFTiBjby5vaWQgSVMgTk9UIE5VTEwgVEhFTiAnQyc6OnRleHQgfHwgY29u dHlwZQorICAgICAgICBXSEVOIGFkLm9pZCBJUyBOT1QgTlVMTCBUSEVOICdBJzo6dGV4dAorICAg ICAgICBXSEVOIGZzLm9pZCBJUyBOT1QgTlVMTCBUSEVOICdGJzo6dGV4dAorICAgICAgICBXSEVO IGZkdy5vaWQgSVMgTk9UIE5VTEwgVEhFTiAnZic6OnRleHQKKyAgICAgICAgRUxTRSAnJworICAg IEVORCBBUyB0eXBlLAorICAgIENPQUxFU0NFKGNvYy5yZWxuYW1lLCBjbHJ3LnJlbG5hbWUpIEFT IG93bmVydGFibGUsCisgICAgQ0FTRSBXSEVOIGNsLnJlbG5hbWUgSVMgTk9UIE5VTEwgQU5EIGF0 dC5hdHRuYW1lIElTIE5PVCBOVUxMIFRIRU4gY2wucmVsbmFtZSB8fCAnLicgfHwgYXR0LmF0dG5h bWUKKyAgICBFTFNFIENPQUxFU0NFKGNsLnJlbG5hbWUsIGNvLmNvbm5hbWUsIHByLnByb25hbWUs IHRnLnRnbmFtZSwgdHkudHlwbmFtZSwgbGEubGFubmFtZSwgcncucnVsZW5hbWUsIG5zLm5zcG5h bWUsIGZzLnNydm5hbWUsIGZkdy5mZHduYW1lKQorICAgIEVORCBBUyByZWZuYW1lLAorICAgIENP QUxFU0NFKG5zYy5uc3BuYW1lLCBuc28ubnNwbmFtZSwgbnNwLm5zcG5hbWUsIG5zdC5uc3BuYW1l LCBuc3J3Lm5zcG5hbWUpIEFTIG5zcG5hbWUKK0ZST00gcGdfZGVwZW5kIGRlcAorTEVGVCBKT0lO IHBnX2NsYXNzIGNsIE9OIGRlcC5vYmppZD1jbC5vaWQKK0xFRlQgSk9JTiBwZ19hdHRyaWJ1dGUg YXR0IE9OIGRlcC5vYmppZD1hdHQuYXR0cmVsaWQgQU5EIGRlcC5vYmpzdWJpZD1hdHQuYXR0bnVt CitMRUZUIEpPSU4gcGdfbmFtZXNwYWNlIG5zYyBPTiBjbC5yZWxuYW1lc3BhY2U9bnNjLm9pZAor TEVGVCBKT0lOIHBnX3Byb2MgcHIgT04gZGVwLm9iamlkPXByLm9pZAorTEVGVCBKT0lOIHBnX25h bWVzcGFjZSBuc3AgT04gcHIucHJvbmFtZXNwYWNlPW5zcC5vaWQKK0xFRlQgSk9JTiBwZ190cmln Z2VyIHRnIE9OIGRlcC5vYmppZD10Zy5vaWQKK0xFRlQgSk9JTiBwZ190eXBlIHR5IE9OIGRlcC5v YmppZD10eS5vaWQKK0xFRlQgSk9JTiBwZ19uYW1lc3BhY2UgbnN0IE9OIHR5LnR5cG5hbWVzcGFj ZT1uc3Qub2lkCitMRUZUIEpPSU4gcGdfY29uc3RyYWludCBjbyBPTiBkZXAub2JqaWQ9Y28ub2lk CitMRUZUIEpPSU4gcGdfY2xhc3MgY29jIE9OIGNvLmNvbnJlbGlkPWNvYy5vaWQKK0xFRlQgSk9J TiBwZ19uYW1lc3BhY2UgbnNvIE9OIGNvLmNvbm5hbWVzcGFjZT1uc28ub2lkCitMRUZUIEpPSU4g cGdfcmV3cml0ZSBydyBPTiBkZXAub2JqaWQ9cncub2lkCitMRUZUIEpPSU4gcGdfY2xhc3MgY2xy dyBPTiBjbHJ3Lm9pZD1ydy5ldl9jbGFzcworTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBuc3J3IE9O IGNscncucmVsbmFtZXNwYWNlPW5zcncub2lkCitMRUZUIEpPSU4gcGdfbGFuZ3VhZ2UgbGEgT04g ZGVwLm9iamlkPWxhLm9pZAorTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBucyBPTiBkZXAub2JqaWQ9 bnMub2lkCitMRUZUIEpPSU4gcGdfYXR0cmRlZiBhZCBPTiBhZC5vaWQ9ZGVwLm9iamlkCitMRUZU IEpPSU4gcGdfZm9yZWlnbl9zZXJ2ZXIgZnMgT04gZnMub2lkPWRlcC5vYmppZAorTEVGVCBKT0lO IHBnX2ZvcmVpZ25fZGF0YV93cmFwcGVyIGZkdyBPTiBmZHcub2lkPWRlcC5vYmppZAore3t3aGVy ZV9jbGF1c2V9fSBBTkQKK2NsYXNzaWQgSU4gKCBTRUxFQ1Qgb2lkIEZST00gcGdfY2xhc3MgV0hF UkUgcmVsbmFtZSBJTgorICAgKCdwZ19jbGFzcycsICdwZ19jb25zdHJhaW50JywgJ3BnX2NvbnZl cnNpb24nLCAncGdfbGFuZ3VhZ2UnLCAncGdfcHJvYycsICdwZ19yZXdyaXRlJywgJ3BnX25hbWVz cGFjZScsCisgICAncGdfdHJpZ2dlcicsICdwZ190eXBlJywgJ3BnX2F0dHJkZWYnLCAncGdfZXZl bnRfdHJpZ2dlcicsICdwZ19mb3JlaWduX3NlcnZlcicsICdwZ19mb3JlaWduX2RhdGFfd3JhcHBl cicpKQorT1JERVIgQlkgY2xhc3NpZCwgY2wucmVsa2luZApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVzdHMvdGVzdF9kZXBlbmRlbmNpZXNf c3FsLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVzdHMv dGVzdF9kZXBlbmRlbmNpZXNfc3FsLnB5CmluZGV4IDQ3NTkxMDFmLi5jZjQ5NDM3YSAxMDA2NDQK LS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVzdHMvdGVz dF9kZXBlbmRlbmNpZXNfc3FsLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3Rlc3RzL3Rlc3RfZGVwZW5kZW5jaWVzX3NxbC5weQpAQCAtMzEsNyArMzEs MTAgQEAgY2xhc3MgVGVzdERlcGVuZGVuY2llc1NxbChTUUxUZW1wbGF0ZVRlc3RCYXNlKToKICAg ICAgICAgc2VsZi50YWJsZV9pZCA9IGN1cnNvci5mZXRjaG9uZSgpWzBdCiAKICAgICBkZWYgZ2Vu ZXJhdGVfc3FsKHNlbGYsIHZlcnNpb24pOgotICAgICAgICB0ZW1wbGF0ZV9maWxlID0gc2VsZi5n ZXRfdGVtcGxhdGVfZmlsZSh2ZXJzaW9uLCAiZGVwZW5kZW5jaWVzLnNxbCIpCisgICAgICAgIGZp bGVfcGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4iLCAi dGVtcGxhdGVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXBlbmRzIiwg InNxbCIpCisgICAgICAgIHRlbXBsYXRlX2ZpbGUgPSBzZWxmLmdldF90ZW1wbGF0ZV9maWxlKHZl cnNpb24sIGZpbGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImRlcGVuZGVuY2llcy5zcWwiKQogICAgICAgICB0ZW1wbGF0ZSA9IGZpbGVfYXNf dGVtcGxhdGUodGVtcGxhdGVfZmlsZSkKICAgICAgICAgc3FsID0gdGVtcGxhdGUucmVuZGVyKAog ICAgICAgICAgICAgd2hlcmVfY2xhdXNlPSJXSEVSRSBkZXAub2JqaWQ9JXM6Om9pZCIgJSBzZWxm LnRhYmxlX2lkKQpAQCAtNDcsOCArNTAsMyBAQCBjbGFzcyBUZXN0RGVwZW5kZW5jaWVzU3FsKFNR TFRlbXBsYXRlVGVzdEJhc2UpOgogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ24nLCBmaXJz dF9yb3dbImRlcHR5cGUiXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncHVibGljJywgZmly c3Rfcm93WyJyZWZuYW1lIl0pCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGdldF90ZW1w bGF0ZV9maWxlKHZlcnNpb24sIGZpbGVuYW1lKToKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguam9p bihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4iLCAidGVtcGxhdGVzIiwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiZGVwZW5kcyIsICJzcWwiLCB2ZXJzaW9uLCBmaWxlbmFtZSkK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Rl c3RzL3Rlc3RfZGVwZW5kZW50c19zcWwucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy90ZXN0cy90ZXN0X2RlcGVuZGVudHNfc3FsLnB5CmluZGV4IGQ0YjU4YTQ2 Li5mY2UyZTkxMCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvdGVzdHMvdGVzdF9kZXBlbmRlbnRzX3NxbC5weQorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZXN0cy90ZXN0X2RlcGVuZGVudHNfc3FsLnB5 CkBAIC0zMSw3ICszMSwxMCBAQCBjbGFzcyBUZXN0RGVwZW5kZW50c1NxbChTUUxUZW1wbGF0ZVRl c3RCYXNlKToKICAgICAgICAgc2VsZi50YWJsZV9pZCA9IGN1cnNvci5mZXRjaG9uZSgpWzBdCiAK ICAgICBkZWYgZ2VuZXJhdGVfc3FsKHNlbGYsIHZlcnNpb24pOgotICAgICAgICB0ZW1wbGF0ZV9m aWxlID0gc2VsZi5nZXRfdGVtcGxhdGVfZmlsZSh2ZXJzaW9uLCAiZGVwZW5kZW50cy5zcWwiKQor ICAgICAgICBmaWxlX3BhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9f KSwgIi4uIiwgInRlbXBsYXRlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi ZGVwZW5kcyIsICJzcWwiKQorICAgICAgICB0ZW1wbGF0ZV9maWxlID0gc2VsZi5nZXRfdGVtcGxh dGVfZmlsZSh2ZXJzaW9uLCBmaWxlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJkZXBlbmRlbnRzLnNxbCIpCiAgICAgICAgIHRlbXBsYXRlID0g ZmlsZV9hc190ZW1wbGF0ZSh0ZW1wbGF0ZV9maWxlKQogICAgICAgICBzcWwgPSB0ZW1wbGF0ZS5y ZW5kZXIoCiAgICAgICAgICAgICB3aGVyZV9jbGF1c2U9IldIRVJFIGRlcC5vYmppZD0lczo6b2lk IiAlIHNlbGYudGFibGVfaWQpCkBAIC00Nyw4ICs1MCwzIEBAIGNsYXNzIFRlc3REZXBlbmRlbnRz U3FsKFNRTFRlbXBsYXRlVGVzdEJhc2UpOgogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ24n LCBmaXJzdF9yb3dbImRlcHR5cGUiXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgndGVzdF90 YWJsZScsIGZpcnN0X3Jvd1sicmVmbmFtZSJdKQotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRl ZiBnZXRfdGVtcGxhdGVfZmlsZSh2ZXJzaW9uLCBmaWxlbmFtZSk6Ci0gICAgICAgIHJldHVybiBv cy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uIiwgInRlbXBsYXRlcyIs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlcGVuZHMiLCAic3FsIiwgdmVyc2lvbiwg ZmlsZW5hbWUpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9taXNjL3RlbXBsYXRlcy9zcWxhdXRv Y29tcGxldGUvc3FsL2RlZmF1bHQvY29sdW1ucy5zcWwgYi93ZWIvcGdhZG1pbi9taXNjL3RlbXBs YXRlcy9zcWxhdXRvY29tcGxldGUvc3FsL2RlZmF1bHQvY29sdW1ucy5zcWwKaW5kZXggNTgwYzM2 MjIuLjJlZWY4MDNiIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9taXNjL3RlbXBsYXRlcy9zcWxh dXRvY29tcGxldGUvc3FsL2RlZmF1bHQvY29sdW1ucy5zcWwKKysrIGIvd2ViL3BnYWRtaW4vbWlz Yy90ZW1wbGF0ZXMvc3FsYXV0b2NvbXBsZXRlL3NxbC9kZWZhdWx0L2NvbHVtbnMuc3FsCkBAIC01 LDcgKzUsNyBAQCBTRUxFQ1QgIG5zcC5uc3BuYW1lIHNjaGVtYV9uYW1lLAogICAgICAgICBhdHQu YXR0bmFtZSBjb2x1bW5fbmFtZSwKICAgICAgICAgYXR0LmF0dHR5cGlkOjpyZWd0eXBlOjp0ZXh0 IHR5cGVfbmFtZSwKICAgICAgICAgYXR0LmF0dGhhc2RlZiBBUyBoYXNfZGVmYXVsdCwKLSAgICAg ICAgZGVmLmFkc3JjIGFzIGRlZmF1bHQKKyAgICAgICAgcGdfZ2V0X2V4cHIoZGVmLmFkYmluLCBk ZWYuYWRyZWxpZCkgYXMgZGVmYXVsdAogRlJPTSAgICBwZ19jYXRhbG9nLnBnX2F0dHJpYnV0ZSBh dHQKICAgICAgICAgSU5ORVIgSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIGNscwogICAgICAgICAg ICAgT04gYXR0LmF0dHJlbGlkID0gY2xzLm9pZApAQCAtMjYsNyArMjYsNyBAQCBTRUxFQ1QgIG5z cC5uc3BuYW1lIHNjaGVtYV9uYW1lLAogICAgICAgICBhdHQuYXR0bmFtZSBjb2x1bW5fbmFtZSwK ICAgICAgICAgYXR0LmF0dHR5cGlkOjpyZWd0eXBlOjp0ZXh0IHR5cGVfbmFtZSwKICAgICAgICAg YXR0LmF0dGhhc2RlZiBBUyBoYXNfZGVmYXVsdCwKLSAgICAgICAgZGVmLmFkc3JjIGFzIGRlZmF1 bHQKKyAgICAgICAgcGdfZ2V0X2V4cHIoZGVmLmFkYmluLCBkZWYuYWRyZWxpZCkgYXMgZGVmYXVs dAogRlJPTSAgICBwZ19jYXRhbG9nLnBnX2F0dHJpYnV0ZSBhdHQKICAgICAgICAgSU5ORVIgSk9J TiBwZ19jYXRhbG9nLnBnX2NsYXNzIGNscwogICAgICAgICAgICAgT04gYXR0LmF0dHJlbGlkID0g Y2xzLm9pZApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL2NvbW1hbmQu cHkgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvY29tbWFuZC5weQppbmRleCBiM2I1NmNi MC4uZDRiMDcwMGYgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9jb21t YW5kLnB5CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9jb21tYW5kLnB5CkBAIC02 MTUsOCArNjE1LDE0IEBAIGNsYXNzIFRhYmxlQ29tbWFuZChHcmlkQ29tbWFuZCk6CiAgICAgICAg IFRoaXMgZnVuY3Rpb24gY2hlY2tzIHdoZXRoZXIgdGhlIHRhYmxlIGhhcyBvaWRzIG9yIG5vdC4K ICAgICAgICAgIiIiCiAgICAgICAgIGRyaXZlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklW RVIpCisgICAgICAgIG1hbmFnZXIgPSBkcml2ZXIuY29ubmVjdGlvbl9tYW5hZ2VyKHNlbGYuc2lk KQorCisgICAgICAgICMgUmVtb3ZlIHRoZSBzcGVjaWFsIGJlaGF2aW9yIG9mIE9JRCBjb2x1bW5z IGZyb20KKyAgICAgICAgIyBQb3N0Z3JlU1FMIDEyIG9ud2FyZHMsIHNvIHJldHVybmluZyBGYWxz ZS4KKyAgICAgICAgaWYgbWFuYWdlci5zdmVyc2lvbiA+PSAxMjAwMDA6CisgICAgICAgICAgICBy ZXR1cm4gRmFsc2UKKwogICAgICAgICBpZiBkZWZhdWx0X2Nvbm4gaXMgTm9uZToKLSAgICAgICAg ICAgIG1hbmFnZXIgPSBkcml2ZXIuY29ubmVjdGlvbl9tYW5hZ2VyKHNlbGYuc2lkKQogICAgICAg ICAgICAgY29ubiA9IG1hbmFnZXIuY29ubmVjdGlvbihkaWQ9c2VsZi5kaWQsIGNvbm5faWQ9c2Vs Zi5jb25uX2lkKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY29ubiA9IGRlZmF1bHRfY29u bgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdXRpbHMvdmVyc2lvbmVkX3RlbXBsYXRlX2xvYWRl ci5weSBiL3dlYi9wZ2FkbWluL3V0aWxzL3ZlcnNpb25lZF90ZW1wbGF0ZV9sb2FkZXIucHkKaW5k ZXggYjZkMDA0NTguLjNiNDc3NTdkIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi91dGlscy92ZXJz aW9uZWRfdGVtcGxhdGVfbG9hZGVyLnB5CisrKyBiL3dlYi9wZ2FkbWluL3V0aWxzL3ZlcnNpb25l ZF90ZW1wbGF0ZV9sb2FkZXIucHkKQEAgLTY4LDYgKzY4LDE1IEBAIGRlZiBnZXRfdmVyc2lvbl9t YXBwaW5nKHRlbXBsYXRlKToKICAgICBpZiBsZW4odGVtcGxhdGVfcGF0aF9wYXJ0cykgPT0gNDoK ICAgICAgICAgXywgc2VydmVyX3R5cGUsIF8sIF8gPSB0ZW1wbGF0ZV9wYXRoX3BhcnRzCiAKKyAg ICByZXR1cm4gZ2V0X3ZlcnNpb25fbWFwcGluZ19kaXJlY3RvcmllcyhzZXJ2ZXJfdHlwZSkKKwor CitkZWYgZ2V0X3ZlcnNpb25fbWFwcGluZ19kaXJlY3RvcmllcyhzZXJ2ZXJfdHlwZSk6CisgICAg IiIiCisgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBhbGwgdGhlIHZlcnNpb24gbWFwcGlu ZyBkaXJlY3RvcmllcworICAgIDpwYXJhbSBzZXJ2ZXJfdHlwZToKKyAgICA6cmV0dXJuOgorICAg ICIiIgogICAgIGlmIHNlcnZlcl90eXBlID09ICdncGRiJzoKICAgICAgICAgcmV0dXJuICgKICAg ICAgICAgICAgIHsnbmFtZSc6ICJncGRiXzUuMF9wbHVzIiwgJ251bWJlcic6IDgwMzIzfSwKQEAg LTc1LDcgKzg0LDggQEAgZGVmIGdldF92ZXJzaW9uX21hcHBpbmcodGVtcGxhdGUpOgogICAgICAg ICAgICAgeyduYW1lJzogImRlZmF1bHQiLCAnbnVtYmVyJzogMH0KICAgICAgICAgKQogCi0gICAg cmV0dXJuICh7J25hbWUnOiAiMTFfcGx1cyIsICdudW1iZXInOiAxMTAwMDB9LAorICAgIHJldHVy biAoeyduYW1lJzogIjEyX3BsdXMiLCAnbnVtYmVyJzogMTIwMDAwfSwKKyAgICAgICAgICAgIHsn bmFtZSc6ICIxMV9wbHVzIiwgJ251bWJlcic6IDExMDAwMH0sCiAgICAgICAgICAgICB7J25hbWUn OiAiMTBfcGx1cyIsICdudW1iZXInOiAxMDAwMDB9LAogICAgICAgICAgICAgeyduYW1lJzogIjku Nl9wbHVzIiwgJ251bWJlcic6IDkwNjAwfSwKICAgICAgICAgICAgIHsnbmFtZSc6ICI5LjVfcGx1 cyIsICdudW1iZXInOiA5MDUwMH0sCmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9weXRob25f dGVzdF91dGlscy9zcWxfdGVtcGxhdGVfdGVzdF9iYXNlLnB5IGIvd2ViL3JlZ3Jlc3Npb24vcHl0 aG9uX3Rlc3RfdXRpbHMvc3FsX3RlbXBsYXRlX3Rlc3RfYmFzZS5weQppbmRleCAzZGJkMWYxOC4u ZmUwYjJhMmUgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL3Nx bF90ZW1wbGF0ZV90ZXN0X2Jhc2UucHkKKysrIGIvd2ViL3JlZ3Jlc3Npb24vcHl0aG9uX3Rlc3Rf dXRpbHMvc3FsX3RlbXBsYXRlX3Rlc3RfYmFzZS5weQpAQCAtNyw5ICs3LDEzIEBACiAjCiAjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwogCitpbXBvcnQgb3MKKwogZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGlt cG9ydCBCYXNlVGVzdEdlbmVyYXRvcgogZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxz IGltcG9ydCB0ZXN0X3V0aWxzCiBmcm9tIHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9ydCBEcml2 ZXJSZWdpc3RyeQorZnJvbSBwZ2FkbWluLnV0aWxzLnZlcnNpb25lZF90ZW1wbGF0ZV9sb2FkZXIg XAorICAgIGltcG9ydCBnZXRfdmVyc2lvbl9tYXBwaW5nX2RpcmVjdG9yaWVzCiAKIERyaXZlclJl Z2lzdHJ5LmxvYWRfZHJpdmVycygpCiAKQEAgLTIyLDcgKzI2LDYgQEAgY2xhc3MgU1FMVGVtcGxh dGVUZXN0QmFzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgog ICAgICAgICBzdXBlcihTUUxUZW1wbGF0ZVRlc3RCYXNlLCBzZWxmKS5fX2luaXRfXygpCiAgICAg ICAgIHNlbGYuZGF0YWJhc2VfbmFtZSA9IC0xCi0gICAgICAgIHNlbGYudmVyc2lvbnNfdG9fdGVz dCA9IC0xCiAKICAgICBkZWYgdGVzdF9zZXR1cChzZWxmLCBjb25uZWN0aW9uLCBjdXJzb3IpOgog ICAgICAgICBwYXNzCkBAIC00MSwxOSArNDQsMzcgQEAgY2xhc3MgU1FMVGVtcGxhdGVUZXN0QmFz ZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgICAgICB0ZXN0X3V0aWxzLmNyZWF0ZV90YWJs ZShzZWxmLnNlcnZlciwgZGF0YWJhc2VfbmFtZSwgInRlc3RfdGFibGUiKQogICAgICAgICAgICAg c2VsZi5kYXRhYmFzZV9uYW1lID0gZGF0YWJhc2VfbmFtZQogCi0gICAgICAgICAgICBpZiBjb25u ZWN0aW9uLnNlcnZlcl92ZXJzaW9uIDwgOTAxMDA6Ci0gICAgICAgICAgICAgICAgc2VsZi52ZXJz aW9uc190b190ZXN0ID0gWydkZWZhdWx0J10KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg ICAgICAgc2VsZi52ZXJzaW9uc190b190ZXN0ID0gWyc5LjFfcGx1cyddCi0KICAgICAgICAgICAg IGN1cnNvciA9IGNvbm5lY3Rpb24uY3Vyc29yKCkKICAgICAgICAgICAgIHNlbGYudGVzdF9zZXR1 cChjb25uZWN0aW9uLCBjdXJzb3IpCiAKLSAgICAgICAgICAgIGZvciB2ZXJzaW9uIGluIHNlbGYu dmVyc2lvbnNfdG9fdGVzdDoKLSAgICAgICAgICAgICAgICBzcWwgPSBzZWxmLmdlbmVyYXRlX3Nx bCh2ZXJzaW9uKQorICAgICAgICAgICAgc3FsID0gc2VsZi5nZW5lcmF0ZV9zcWwoY29ubmVjdGlv bi5zZXJ2ZXJfdmVyc2lvbikKKworICAgICAgICAgICAgY3Vyc29yID0gY29ubmVjdGlvbi5jdXJz b3IoKQorICAgICAgICAgICAgY3Vyc29yLmV4ZWN1dGUoc3FsKQorICAgICAgICAgICAgZmV0Y2hf cmVzdWx0ID0gY3Vyc29yLmZldGNoYWxsKCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRpb25z KGZldGNoX3Jlc3VsdCwgY3Vyc29yLmRlc2NyaXB0aW9uKQorCisgICAgZGVmIGdldF90ZW1wbGF0 ZV9maWxlKHNlbGYsIHZlcnNpb24sIGZpbGVfcGF0aCwgZmlsZW5hbWUpOgorICAgICAgICAiIiIK KyAgICAgICAgVGhpcyBmdW5jdGlvbiBjaGVjayB0aGUgc3BlY2lmaWVkIGZpbGUgaW4gdGhlIHNl cnZlciBtYXBwaW5nIGRpcmVjdG9yeQorICAgICAgICBhbmQgaWYgZmlsZSBleGlzdHMgdGhlbiBy ZXR1cm4gdGhhdCBwYXRoLgorICAgICAgICA6cGFyYW0gdmVyc2lvbjoKKyAgICAgICAgOnBhcmFt IGZpbGVfcGF0aDoKKyAgICAgICAgOnBhcmFtIGZpbGVuYW1lOgorICAgICAgICA6cmV0dXJuOgor ICAgICAgICAiIiIKKyAgICAgICAgIyBJdGVyYXRlIGFsbCB0aGUgbWFwcGluZyBkaXJlY3Rvcmll cyBhbmQgY2hlY2sgdGhlIGZpbGUgaXMgZXhpc3QKKyAgICAgICAgIyBpbiB0aGUgc3BlY2lmaWVk IGZvbGRlci4gSWYgaXQgZXhpc3RzIHRoZW4gcmV0dXJuIHRoZSBwYXRoLgorICAgICAgICBmb3Ig ZGlyZWN0b3J5IGluIGdldF92ZXJzaW9uX21hcHBpbmdfZGlyZWN0b3JpZXMoc2VsZi5zZXJ2ZXJb J3R5cGUnXSk6CisgICAgICAgICAgICBpZiBkaXJlY3RvcnlbJ251bWJlciddID4gdmVyc2lvbjoK KyAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICAgICAgY3Vyc29yID0gY29u bmVjdGlvbi5jdXJzb3IoKQotICAgICAgICAgICAgICAgIGN1cnNvci5leGVjdXRlKHNxbCkKLSAg ICAgICAgICAgICAgICBmZXRjaF9yZXN1bHQgPSBjdXJzb3IuZmV0Y2hhbGwoKQorICAgICAgICAg ICAgdGVtcGxhdGVfcGF0aCA9ICcvJy5qb2luKFsKKyAgICAgICAgICAgICAgICBmaWxlX3BhdGgs CisgICAgICAgICAgICAgICAgZGlyZWN0b3J5WyduYW1lJ10sCisgICAgICAgICAgICAgICAgZmls ZW5hbWUKKyAgICAgICAgICAgIF0pCiAKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydGlvbnMo ZmV0Y2hfcmVzdWx0LCBjdXJzb3IuZGVzY3JpcHRpb24pCisgICAgICAgICAgICBpZiBvcy5wYXRo LmV4aXN0cyh0ZW1wbGF0ZV9wYXRoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gdGVtcGxhdGVf cGF0aAo= --0000000000005d023b058aa4cee9--