From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=ALL_TRUSTED,HTTP_ESCAPED_HOST, WEIRD_PORT autolearn=no autolearn_force=no version=3.4.4 Received: (qmail 6431 invoked from network); 9 Mar 2023 20:12:23 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 9 Mar 2023 20:12:23 -0000 Content-Type: multipart/mixed; boundary="===============7362929470743545323==" MIME-Version: 1.0 Subject: =?utf8?q?=5BPR_PATCH=5D_python3-httpx=3A_do_not_depend_on_incompatible_python3-rfc3986?= To: ml@inbox.vuxu.org From: icp1994 Reply-to: ml@inbox.vuxu.org Message-ID: Date: Thu, 09 Mar 2023 21:12:23 +0100 List-Id: GitHub notification mails are now in MIME to allow UTF8. --===============7362929470743545323== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSBuZXcgcHVsbCByZXF1ZXN0IGJ5IGljcDE5OTQgYWdhaW5zdCBtYXN0ZXIgb24g dGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29tL2ljcDE5OTQv dm9pZC1wYWNrYWdlcyBweXRob24zLWh0dHB4Cmh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4 L3ZvaWQtcGFja2FnZXMvcHVsbC80MjY4MQoKcHl0aG9uMy1odHRweDogZG8gbm90IGRlcGVuZCBv biBpbmNvbXBhdGlibGUgcHl0aG9uMy1yZmMzOTg2CiMjIyMgVGVzdGluZyB0aGUgY2hhbmdlcw0K LSBJIHRlc3RlZCB0aGUgY2hhbmdlcyBpbiB0aGlzIFBSOiAqKmJyaWVmbHkqKg0KDQojIyMjIExv Y2FsIGJ1aWxkIHRlc3RpbmcNCi0gSSBidWlsdCB0aGlzIFBSIGxvY2FsbHkgZm9yIG15IG5hdGl2 ZSBhcmNoaXRlY3R1cmU6ICoqeDg2XzY0KioNCg0KSSBjb3VsZG4ndCBnZXQgdGhlIHRlc3RzIHRv IHdvcmsgYXMgaXQncyBhIHJhYmJpdC1ob2xlIG9mIHBpbm5lZCBkZXBlbmRlbmNpZXMgYW5kIHVu cGFja2FnZWQgbW9kdWxlcy4gQnV0IHRlc3Qgc3VpdGUgb2YgaGF0Y2gsIHJldmRlcCBvZiBodHRw eCwgcGFzc2VzLgoKQSBwYXRjaCBmaWxlIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGlu dXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQyNjgxLnBhdGNoIGlzIGF0dGFjaGVk --===============7362929470743545323== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-python3-httpx-42681.patch" RnJvbSBlNWQwNDY0YTdmMmVkNmU2ODhjYmFhMjVkYmFjOTdlNGU5NmI2YjgxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBpY3AgPHBhbmdvbGluQHZpdmFsZGkubmV0PgpEYXRlOiBUaHUs IDkgTWFyIDIwMjMgMTU6MTU6MDkgKzA1MzAKU3ViamVjdDogW1BBVENIXSBweXRob24zLWh0dHB4 OiBkbyBub3QgZGVwZW5kIG9uIGluY29tcGF0aWJsZSBweXRob24zLXJmYzM5ODYKCi0tLQogLi4u LzAwMDEtZHJvcC1yZmMzOTg2LXJlcXVpcmVtZW50LnBhdGNoICAgICAgIHwgOTI1ICsrKysrKysr KysrKysrKysrKwogc3JjcGtncy9weXRob24zLWh0dHB4L3RlbXBsYXRlICAgICAgICAgICAgICAg IHwgICA2ICstCiAyIGZpbGVzIGNoYW5nZWQsIDkyOCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9u cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcHl0aG9uMy1odHRweC9wYXRjaGVzLzAw MDEtZHJvcC1yZmMzOTg2LXJlcXVpcmVtZW50LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9w eXRob24zLWh0dHB4L3BhdGNoZXMvMDAwMS1kcm9wLXJmYzM5ODYtcmVxdWlyZW1lbnQucGF0Y2gg Yi9zcmNwa2dzL3B5dGhvbjMtaHR0cHgvcGF0Y2hlcy8wMDAxLWRyb3AtcmZjMzk4Ni1yZXF1aXJl bWVudC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI0OGQ5 NjM3OGE2NwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcHl0aG9uMy1odHRweC9wYXRjaGVz LzAwMDEtZHJvcC1yZmMzOTg2LXJlcXVpcmVtZW50LnBhdGNoCkBAIC0wLDAgKzEsOTI1IEBACitG cm9tIDU3ZGFhYmY2NzM3MDU5NTRhZmE5NDY4NmMwMDAyODAxYzkzZDMxZjMgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCitGcm9tOiBUb20gQ2hyaXN0aWUgPHRvbUB0b21jaHJpc3RpZS5jb20+CitE YXRlOiBUdWUsIDEwIEphbiAyMDIzIDEwOjM2OjE1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIERy b3AgYHJmYzM5ODZgIHJlcXVpcmVtZW50LiAoIzIyNTIpCisKKyogRHJvcCBSYXdVUkwKKworKiBG aXJzdCBwYXNzIGF0IGFkZGluZyB1cmxwYXJzZQorCisqIFVwZGF0ZSB1cmxwYXJzZQorCisqIEFk ZCB1cmxwYXJzZQorCisqIEFkZCB1cmxwYXJzZQorCisqIFVuaWNvZGUgbm9uLXByaW50YWJsZXMg Y2FuIGJlIHZhbGlkIGluIElETkEgaG9zdG5hbWVzCisKKyogVXBkYXRlIF91cmxwYXJzZS5weSBk b2NzdHJpbmcKKworKiBMaW50aW5nCisKKyogVHJpbSBhd2F5IHVudW5zZWQgY29kZXBhdGhzCisK KyogVHdlYWtzIGZvciBwYXRoIHZhbGlkYXRpb24gZGVwZW5kaW5nIG9uIHNjaGVtZSBhbmQgYXV0 aG9yaXR5IHByZXNlbmNlCisKKyogTWlub3IgY2xlYW51cHMKKworKiBNaW5vciBjbGVhbnVwcwor CisqIGZ1bGxfcGF0aCAtPiByYXdfcGF0aCwgZm9yciBpbnRlcm5hbCBjb25zaXN0ZW5jeQorCisq IExpbnRpbmcgZml4ZXMKKworKiBEcm9wIHJmYzM5ODYgZGVwZW5kZW5jeQorCisqIEFkZCB0ZXN0 IGZvciAjMTgzMworCisqIExpbnRpbmcKKworKiBEcm9wICdyZmMzOTg2JyBkZXBlbmRhbmN5IGZy b20gUkVBRE1FIGFuZCBkb2NzIGhvbWVwYWdlCisKK0NvLWF1dGhvcmVkLWJ5OiBUaG9tYXMgR3Jh aW5nZXIgPHRhZ3JhaW5AZ21haWwuY29tPgorLS0tCisgUkVBRE1FLm1kICAgICAgICAgICAgICAg IHwgICAzICstCisgaHR0cHgvX3VybHBhcnNlLnB5ICAgICAgIHwgNDM1ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKworIGh0dHB4L191cmxzLnB5ICAgICAgICAgICB8IDI5 MCArKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQorIHB5cHJvamVjdC50b21sICAgICAgICAgICB8 ICAgMiArLQorIDggZmlsZXMgY2hhbmdlZCwgNzYyIGluc2VydGlvbnMoKyksIDI1NyBkZWxldGlv bnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgaHR0cHgvX3VybHBhcnNlLnB5CisgY3JlYXRlIG1v ZGUgMTAwNjQ0IHRlc3RzL3Rlc3RfdXJscGFyc2UucHkKKworZGlmZiAtLWdpdCBhL1JFQURNRS5t ZCBiL1JFQURNRS5tZAoraW5kZXggNTIwZTg1YzM2Li40ZDI1NDkxYTYgMTAwNjQ0CistLS0gYS9S RUFETUUubWQKKysrKyBiL1JFQURNRS5tZAorQEAgLTEyOCw4ICsxMjgsNyBAQCBUaGUgSFRUUFgg cHJvamVjdCByZWxpZXMgb24gdGhlc2UgZXhjZWxsZW50IGxpYnJhcmllczoKKyAqIGBodHRwY29y ZWAgLSBUaGUgdW5kZXJseWluZyB0cmFuc3BvcnQgaW1wbGVtZW50YXRpb24gZm9yIGBodHRweGAu CisgICAqIGBoMTFgIC0gSFRUUC8xLjEgc3VwcG9ydC4KKyAqIGBjZXJ0aWZpYCAtIFNTTCBjZXJ0 aWZpY2F0ZXMuCistKiBgcmZjMzk4NmAgLSBVUkwgcGFyc2luZyAmIG5vcm1hbGl6YXRpb24uCist ICAqIGBpZG5hYCAtIEludGVybmF0aW9uYWxpemVkIGRvbWFpbiBuYW1lIHN1cHBvcnQuCisrKiBg aWRuYWAgLSBJbnRlcm5hdGlvbmFsaXplZCBkb21haW4gbmFtZSBzdXBwb3J0LgorICogYHNuaWZm aW9gIC0gQXN5bmMgbGlicmFyeSBhdXRvZGV0ZWN0aW9uLgorIAorIEFzIHdlbGwgYXMgdGhlc2Ug b3B0aW9uYWwgaW5zdGFsbHM6CitkaWZmIC0tZ2l0IGEvaHR0cHgvX3VybHBhcnNlLnB5IGIvaHR0 cHgvX3VybHBhcnNlLnB5CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwLi5l MTZlODEyMzkKKy0tLSAvZGV2L251bGwKKysrKyBiL2h0dHB4L191cmxwYXJzZS5weQorQEAgLTAs MCArMSw0MzUgQEAKKysiIiIKKytBbiBpbXBsZW1lbnRhdGlvbiBvZiBgdXJscGFyc2VgIHRoYXQg cHJvdmlkZXMgVVJMIHZhbGlkYXRpb24gYW5kIG5vcm1hbGl6YXRpb24KKythcyBkZXNjcmliZWQg YnkgUkZDMzk4Ni4KKysKKytXZSByZWx5IG9uIHRoaXMgaW1wbGVtZW50YXRpb24gcmF0aGVyIHRo YW4gdGhlIG9uZSBpbiBQeXRob24ncyBzdGRsaWIsIGJlY2F1c2U6CisrCisrKiBJdCBwcm92aWRl cyBtb3JlIGNvbXBsZXRlIFVSTCB2YWxpZGF0aW9uLgorKyogSXQgcHJvcGVybHkgZGlmZmVyZW50 aWF0ZXMgYmV0d2VlbiBhbiBlbXB0eSBxdWVyeXN0cmluZyBhbmQgYW4gYWJzZW50IHF1ZXJ5c3Ry aW5nLAorKyAgdG8gZGlzdGluZ3Vpc2ggVVJMcyB3aXRoIGEgdHJhaWxpbmcgJz8nLgorKyogSXQg aGFuZGxlcyBzY2hlbWUsIGhvc3RuYW1lLCBwb3J0LCBhbmQgcGF0aCBub3JtYWxpemF0aW9uLgor KyogSXQgc3VwcG9ydHMgSUROQSBob3N0bmFtZXMsIG5vcm1hbGl6aW5nIHRoZW0gdG8gdGhlaXIg ZW5jb2RlZCBmb3JtLgorKyogVGhlIEFQSSBzdXBwb3J0cyBwYXNzaW5nIGluZGl2aWR1YWwgY29t cG9uZW50cywgYXMgd2VsbCBhcyB0aGUgY29tcGxldGUgVVJMIHN0cmluZy4KKysKKytQcmV2aW91 c2x5IHdlIHJlbGllZCBvbiB0aGUgZXhjZWxsZW50IGByZmMzOTg2YCBwYWNrYWdlIHRvIGhhbmRs ZSBVUkwgcGFyc2luZyBhbmQKKyt2YWxpZGF0aW9uLCBidXQgdGhpcyBtb2R1bGUgcHJvdmlkZXMg YSBzaW1wbGVyIGFsdGVybmF0aXZlLCB3aXRoIGxlc3MgaW5kaXJlY3Rpb24KKytyZXF1aXJlZC4K KysiIiIKKytpbXBvcnQgaXBhZGRyZXNzCisraW1wb3J0IHJlCisraW1wb3J0IHR5cGluZworKwor K2ltcG9ydCBpZG5hCisrCisrZnJvbSAuX2V4Y2VwdGlvbnMgaW1wb3J0IEludmFsaWRVUkwKKysK KytNQVhfVVJMX0xFTkdUSCA9IDY1NTM2CisrCisrIyBodHRwczovL2RhdGF0cmFja2VyLmlldGYu b3JnL2RvYy9odG1sL3JmYzM5ODYuaHRtbCNzZWN0aW9uLTIuMworK1VOUkVTRVJWRURfQ0hBUkFD VEVSUyA9ICgKKysgICAgIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5v cHFyc3R1dnd4eXowMTIzNDU2Nzg5LS5ffiIKKyspCisrU1VCX0RFTElNUyA9ICIhJCYnKCkqKyw7 PSIKKysKKytQRVJDRU5UX0VOQ09ERURfUkVHRVggPSByZS5jb21waWxlKCIlW0EtRmEtZjAtOV17 Mn0iKQorKworKworKyMge3NjaGVtZX06ICAgICAgKG9wdGlvbmFsKQorKyMgLy97YXV0aG9yaXR5 fSAgKG9wdGlvbmFsKQorKyMge3BhdGh9CisrIyA/e3F1ZXJ5fSAgICAgICAob3B0aW9uYWwpCisr IyAje2ZyYWdtZW50fSAgICAob3B0aW9uYWwpCisrVVJMX1JFR0VYID0gcmUuY29tcGlsZSgKKysg ICAgKAorKyAgICAgICAgciIoPzooP1A8c2NoZW1lPntzY2hlbWV9KTopPyIKKysgICAgICAgIHIi KD86Ly8oP1A8YXV0aG9yaXR5PnthdXRob3JpdHl9KSk/IgorKyAgICAgICAgciIoP1A8cGF0aD57 cGF0aH0pIgorKyAgICAgICAgciIoPzpcPyg/UDxxdWVyeT57cXVlcnl9KSk/IgorKyAgICAgICAg ciIoPzojKD9QPGZyYWdtZW50PntmcmFnbWVudH0pKT8iCisrICAgICkuZm9ybWF0KAorKyAgICAg ICAgc2NoZW1lPSIoW2EtekEtWl1bYS16QS1aMC05Ky4tXSopPyIsCisrICAgICAgICBhdXRob3Jp dHk9IlteLz8jXSoiLAorKyAgICAgICAgcGF0aD0iW14/I10qIiwKKysgICAgICAgIHF1ZXJ5PSJb XiNdKiIsCisrICAgICAgICBmcmFnbWVudD0iLioiLAorKyAgICApCisrKQorKworKyMge3VzZXJp bmZvfUAgICAgKG9wdGlvbmFsKQorKyMge2hvc3R9CisrIyA6e3BvcnR9ICAgICAgICAob3B0aW9u YWwpCisrQVVUSE9SSVRZX1JFR0VYID0gcmUuY29tcGlsZSgKKysgICAgKAorKyAgICAgICAgciIo PzooP1A8dXNlcmluZm8+e3VzZXJpbmZvfSlAKT8iIHIiKD9QPGhvc3Q+e2hvc3R9KSIgciI6Pyg/ UDxwb3J0Pntwb3J0fSk/IgorKyAgICApLmZvcm1hdCgKKysgICAgICAgIHVzZXJpbmZvPSJbXkBd KiIsICAjIEFueSBjaGFyYWN0ZXIgc2VxdWVuY2Ugbm90IGluY2x1ZGluZyAnQCcuCisrICAgICAg ICBob3N0PSIoXFxbLipcXF18W146XSopIiwgICMgRWl0aGVyIGFueSBjaGFyYWN0ZXIgc2VxdWVu Y2Ugbm90IGluY2x1ZGluZyAnOicsCisrICAgICAgICAjIG9yIGFuIElQdjYgYWRkcmVzcyBlbmNs b3NlZCB3aXRoaW4gc3F1YXJlIGJyYWNrZXRzLgorKyAgICAgICAgcG9ydD0iLioiLCAgIyBBbnkg Y2hhcmFjdGVyIHNlcXVlbmNlLgorKyAgICApCisrKQorKworKworKyMgSWYgd2UgY2FsbCB1cmxw YXJzZSB3aXRoIGFuIGluZGl2aWR1YWwgY29tcG9uZW50LCB0aGVuIHdlIG5lZWQgdG8gcmVnZXgK KysjIHZhbGlkYXRlIHRoYXQgY29tcG9uZW50IGluZGl2aWR1YWxseS4KKysjIE5vdGUgdGhhdCB3 ZSdyZSBkdXBsaWNhdGluZyB0aGUgc2FtZSBzdHJpbmdzIGFzIGFib3ZlLiBTaG9jayEgSG9ycm9y ISEKKytDT01QT05FTlRfUkVHRVggPSB7CisrICAgICJzY2hlbWUiOiByZS5jb21waWxlKCIoW2Et ekEtWl1bYS16QS1aMC05Ky4tXSopPyIpLAorKyAgICAiYXV0aG9yaXR5IjogcmUuY29tcGlsZSgi W14vPyNdKiIpLAorKyAgICAicGF0aCI6IHJlLmNvbXBpbGUoIltePyNdKiIpLAorKyAgICAicXVl cnkiOiByZS5jb21waWxlKCJbXiNdKiIpLAorKyAgICAiZnJhZ21lbnQiOiByZS5jb21waWxlKCIu KiIpLAorKyAgICAidXNlcmluZm8iOiByZS5jb21waWxlKCJbXkBdKiIpLAorKyAgICAiaG9zdCI6 IHJlLmNvbXBpbGUoIihcXFsuKlxcXXxbXjpdKikiKSwKKysgICAgInBvcnQiOiByZS5jb21waWxl KCIuKiIpLAorK30KKysKKysKKysjIFdlIHVzZSB0aGVzZSBzaW1wbGUgcmVnZXhzIGFzIGEgZmly c3QgcGFzcyBiZWZvcmUgaGFuZGluZyBvZmYgdG8KKysjIHRoZSBzdGRsaWIgJ2lwYWRkcmVzcycg bW9kdWxlIGZvciBJUCBhZGRyZXNzIHZhbGlkYXRpb24uCisrSVB2NF9TVFlMRV9IT1NUTkFNRSA9 IHJlLmNvbXBpbGUociJeWzAtOV0rLlswLTldKy5bMC05XSsuWzAtOV0rJCIpCisrSVB2Nl9TVFlM RV9IT1NUTkFNRSA9IHJlLmNvbXBpbGUociJeXFsuKlxdJCIpCisrCisrCisrY2xhc3MgUGFyc2VS ZXN1bHQodHlwaW5nLk5hbWVkVHVwbGUpOgorKyAgICBzY2hlbWU6IHN0cgorKyAgICB1c2VyaW5m bzogc3RyCisrICAgIGhvc3Q6IHN0cgorKyAgICBwb3J0OiB0eXBpbmcuT3B0aW9uYWxbaW50XQor KyAgICBwYXRoOiBzdHIKKysgICAgcXVlcnk6IHR5cGluZy5PcHRpb25hbFtzdHJdCisrICAgIGZy YWdtZW50OiB0eXBpbmcuT3B0aW9uYWxbc3RyXQorKworKyAgICBAcHJvcGVydHkKKysgICAgZGVm IGF1dGhvcml0eShzZWxmKSAtPiBzdHI6CisrICAgICAgICByZXR1cm4gIiIuam9pbigKKysgICAg ICAgICAgICBbCisrICAgICAgICAgICAgICAgIGYie3NlbGYudXNlcmluZm99QCIgaWYgc2VsZi51 c2VyaW5mbyBlbHNlICIiLAorKyAgICAgICAgICAgICAgICBmIlt7c2VsZi5ob3N0fV0iIGlmICI6 IiBpbiBzZWxmLmhvc3QgZWxzZSBzZWxmLmhvc3QsCisrICAgICAgICAgICAgICAgIGYiOntzZWxm LnBvcnR9IiBpZiBzZWxmLnBvcnQgaXMgbm90IE5vbmUgZWxzZSAiIiwKKysgICAgICAgICAgICBd CisrICAgICAgICApCisrCisrICAgIEBwcm9wZXJ0eQorKyAgICBkZWYgbmV0bG9jKHNlbGYpIC0+ IHN0cjoKKysgICAgICAgIHJldHVybiAiIi5qb2luKAorKyAgICAgICAgICAgIFsKKysgICAgICAg ICAgICAgICAgZiJbe3NlbGYuaG9zdH1dIiBpZiAiOiIgaW4gc2VsZi5ob3N0IGVsc2Ugc2VsZi5o b3N0LAorKyAgICAgICAgICAgICAgICBmIjp7c2VsZi5wb3J0fSIgaWYgc2VsZi5wb3J0IGlzIG5v dCBOb25lIGVsc2UgIiIsCisrICAgICAgICAgICAgXQorKyAgICAgICAgKQorKworKyAgICBkZWYg Y29weV93aXRoKHNlbGYsICoqa3dhcmdzOiB0eXBpbmcuT3B0aW9uYWxbc3RyXSkgLT4gIlBhcnNl UmVzdWx0IjoKKysgICAgICAgIGlmIG5vdCBrd2FyZ3M6CisrICAgICAgICAgICAgcmV0dXJuIHNl bGYKKysKKysgICAgICAgIGRlZmF1bHRzID0geworKyAgICAgICAgICAgICJzY2hlbWUiOiBzZWxm LnNjaGVtZSwKKysgICAgICAgICAgICAiYXV0aG9yaXR5Ijogc2VsZi5hdXRob3JpdHksCisrICAg ICAgICAgICAgInBhdGgiOiBzZWxmLnBhdGgsCisrICAgICAgICAgICAgInF1ZXJ5Ijogc2VsZi5x dWVyeSwKKysgICAgICAgICAgICAiZnJhZ21lbnQiOiBzZWxmLmZyYWdtZW50LAorKyAgICAgICAg fQorKyAgICAgICAgZGVmYXVsdHMudXBkYXRlKGt3YXJncykKKysgICAgICAgIHJldHVybiB1cmxw YXJzZSgiIiwgKipkZWZhdWx0cykKKysKKysgICAgZGVmIF9fc3RyX18oc2VsZikgLT4gc3RyOgor KyAgICAgICAgYXV0aG9yaXR5ID0gc2VsZi5hdXRob3JpdHkKKysgICAgICAgIHJldHVybiAiIi5q b2luKAorKyAgICAgICAgICAgIFsKKysgICAgICAgICAgICAgICAgZiJ7c2VsZi5zY2hlbWV9OiIg aWYgc2VsZi5zY2hlbWUgZWxzZSAiIiwKKysgICAgICAgICAgICAgICAgZiIvL3thdXRob3JpdHl9 IiBpZiBhdXRob3JpdHkgZWxzZSAiIiwKKysgICAgICAgICAgICAgICAgc2VsZi5wYXRoLAorKyAg ICAgICAgICAgICAgICBmIj97c2VsZi5xdWVyeX0iIGlmIHNlbGYucXVlcnkgaXMgbm90IE5vbmUg ZWxzZSAiIiwKKysgICAgICAgICAgICAgICAgZiIje3NlbGYuZnJhZ21lbnR9IiBpZiBzZWxmLmZy YWdtZW50IGlzIG5vdCBOb25lIGVsc2UgIiIsCisrICAgICAgICAgICAgXQorKyAgICAgICAgKQor KworKworK2RlZiB1cmxwYXJzZSh1cmw6IHN0ciA9ICIiLCAqKmt3YXJnczogdHlwaW5nLk9wdGlv bmFsW3N0cl0pIC0+IFBhcnNlUmVzdWx0OgorKyAgICAjIEluaXRpYWwgYmFzaWMgY2hlY2tzIG9u IGFsbG93YWJsZSBVUkxzLgorKyAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorKworKyAgICAjIEhhcmQgbGltaXQgdGhlIG1heGltdW0gYWxsb3dhYmxlIFVSTCBs ZW5ndGguCisrICAgIGlmIGxlbih1cmwpID4gTUFYX1VSTF9MRU5HVEg6CisrICAgICAgICByYWlz ZSBJbnZhbGlkVVJMKCJVUkwgdG9vIGxvbmciKQorKworKyAgICAjIElmIGEgVVJMIGluY2x1ZGVz IGFueSBBU0NJSSBjb250cm9sIGNoYXJhY3RlcnMgaW5jbHVkaW5nIFx0LCBcciwgXG4sCisrICAg ICMgdGhlbiB0cmVhdCBpdCBhcyBpbnZhbGlkLgorKyAgICBpZiBhbnkoY2hhci5pc2FzY2lpKCkg YW5kIG5vdCBjaGFyLmlzcHJpbnRhYmxlKCkgZm9yIGNoYXIgaW4gdXJsKToKKysgICAgICAgIHJh aXNlIEludmFsaWRVUkwoIkludmFsaWQgbm9uLXByaW50YWJsZSBBU0NJSSBjaGFyYWN0ZXIgaW4g VVJMIikKKysKKysgICAgIyBTb21lIGtleXdvcmQgYXJndW1lbnRzIHJlcXVpcmUgc3BlY2lhbCBo YW5kbGluZy4KKysgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKysKKysgICAgIyBDb2VyY2UgInBvcnQiIHRvIGEgc3RyaW5nLCBpZiBpdCBpcyBw cm92aWRlZCBhcyBhbiBpbnRlZ2VyLgorKyAgICBpZiAicG9ydCIgaW4ga3dhcmdzOgorKyAgICAg ICAgcG9ydCA9IGt3YXJnc1sicG9ydCJdCisrICAgICAgICBrd2FyZ3NbInBvcnQiXSA9IHN0cihw b3J0KSBpZiBpc2luc3RhbmNlKHBvcnQsIGludCkgZWxzZSBwb3J0CisrCisrICAgICMgUmVwbGFj ZSAibmV0bG9jIiB3aXRoICJob3N0IGFuZCAicG9ydCIuCisrICAgIGlmICJuZXRsb2MiIGluIGt3 YXJnczoKKysgICAgICAgIG5ldGxvYyA9IGt3YXJncy5wb3AoIm5ldGxvYyIpIG9yICIiCisrICAg ICAgICBrd2FyZ3NbImhvc3QiXSwgXywga3dhcmdzWyJwb3J0Il0gPSBuZXRsb2MucGFydGl0aW9u KCI6IikKKysKKysgICAgIyBSZXBsYWNlICJ1c2VybmFtZSIgYW5kL29yICJwYXNzd29yZCIgd2l0 aCAidXNlcmluZm8iLgorKyAgICBpZiAidXNlcm5hbWUiIGluIGt3YXJncyBvciAicGFzc3dvcmQi IGluIGt3YXJnczoKKysgICAgICAgIHVzZXJuYW1lID0gcXVvdGUoa3dhcmdzLnBvcCgidXNlcm5h bWUiLCAiIikgb3IgIiIpCisrICAgICAgICBwYXNzd29yZCA9IHF1b3RlKGt3YXJncy5wb3AoInBh c3N3b3JkIiwgIiIpIG9yICIiKQorKyAgICAgICAga3dhcmdzWyJ1c2VyaW5mbyJdID0gZiJ7dXNl cm5hbWV9OntwYXNzd29yZH0iIGlmIHBhc3N3b3JkIGVsc2UgdXNlcm5hbWUKKysKKysgICAgIyBS ZXBsYWNlICJyYXdfcGF0aCIgd2l0aCAicGF0aCIgYW5kICJxdWVyeSIuCisrICAgIGlmICJyYXdf cGF0aCIgaW4ga3dhcmdzOgorKyAgICAgICAgcmF3X3BhdGggPSBrd2FyZ3MucG9wKCJyYXdfcGF0 aCIpIG9yICIiCisrICAgICAgICBrd2FyZ3NbInBhdGgiXSwgc2VwZXJhdG9yLCBrd2FyZ3NbInF1 ZXJ5Il0gPSByYXdfcGF0aC5wYXJ0aXRpb24oIj8iKQorKyAgICAgICAgaWYgbm90IHNlcGVyYXRv cjoKKysgICAgICAgICAgICBrd2FyZ3NbInF1ZXJ5Il0gPSBOb25lCisrCisrICAgICMgRW5zdXJl IHRoYXQgSVB2NiAiaG9zdCIgYWRkcmVzc2VzIGFyZSBhbHdheXMgZXNjYXBlZCB3aXRoICJbLi4u XSIuCisrICAgIGlmICJob3N0IiBpbiBrd2FyZ3M6CisrICAgICAgICBob3N0ID0ga3dhcmdzLmdl dCgiaG9zdCIpIG9yICIiCisrICAgICAgICBpZiAiOiIgaW4gaG9zdCBhbmQgbm90IChob3N0LnN0 YXJ0c3dpdGgoIlsiKSBhbmQgaG9zdC5lbmRzd2l0aCgiXSIpKToKKysgICAgICAgICAgICBrd2Fy Z3NbImhvc3QiXSA9IGYiW3tob3N0fV0iCisrCisrICAgICMgSWYgYW55IGtleXdvcmQgYXJndW1l bnRzIGFyZSBwcm92aWRlZCwgZW5zdXJlIHRoZXkgYXJlIHZhbGlkLgorKyAgICAjIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysK KysgICAgZm9yIGtleSwgdmFsdWUgaW4ga3dhcmdzLml0ZW1zKCk6CisrICAgICAgICBpZiBrZXkg bm90IGluICgKKysgICAgICAgICAgICAic2NoZW1lIiwKKysgICAgICAgICAgICAiYXV0aG9yaXR5 IiwKKysgICAgICAgICAgICAicGF0aCIsCisrICAgICAgICAgICAgInF1ZXJ5IiwKKysgICAgICAg ICAgICAiZnJhZ21lbnQiLAorKyAgICAgICAgICAgICJ1c2VyaW5mbyIsCisrICAgICAgICAgICAg Imhvc3QiLAorKyAgICAgICAgICAgICJwb3J0IiwKKysgICAgICAgICk6CisrICAgICAgICAgICAg cmFpc2UgVHlwZUVycm9yKGYiJ3trZXl9JyBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQg Zm9yIHVybHBhcnNlKCkiKQorKworKyAgICAgICAgaWYgdmFsdWUgaXMgbm90IE5vbmU6CisrICAg ICAgICAgICAgaWYgbGVuKHZhbHVlKSA+IE1BWF9VUkxfTEVOR1RIOgorKyAgICAgICAgICAgICAg ICByYWlzZSBJbnZhbGlkVVJMKGYiVVJMIGNvbXBvbmVudCAne2tleX0nIHRvbyBsb25nIikKKysK KysgICAgICAgICAgICAjIElmIGEgY29tcG9uZW50IGluY2x1ZGVzIGFueSBBU0NJSSBjb250cm9s IGNoYXJhY3RlcnMgaW5jbHVkaW5nIFx0LCBcciwgXG4sCisrICAgICAgICAgICAgIyB0aGVuIHRy ZWF0IGl0IGFzIGludmFsaWQuCisrICAgICAgICAgICAgaWYgYW55KGNoYXIuaXNhc2NpaSgpIGFu ZCBub3QgY2hhci5pc3ByaW50YWJsZSgpIGZvciBjaGFyIGluIHZhbHVlKToKKysgICAgICAgICAg ICAgICAgcmFpc2UgSW52YWxpZFVSTCgKKysgICAgICAgICAgICAgICAgICAgIGYiSW52YWxpZCBu b24tcHJpbnRhYmxlIEFTQ0lJIGNoYXJhY3RlciBpbiBVUkwgY29tcG9uZW50ICd7a2V5fSciCisr ICAgICAgICAgICAgICAgICkKKysKKysgICAgICAgICAgICAjIEVuc3VyZSB0aGF0IGtleXdvcmQg YXJndW1lbnRzIG1hdGNoIGFzIGEgdmFsaWQgcmVnZXguCisrICAgICAgICAgICAgaWYgbm90IENP TVBPTkVOVF9SRUdFWFtrZXldLmZ1bGxtYXRjaCh2YWx1ZSk6CisrICAgICAgICAgICAgICAgIHJh aXNlIEludmFsaWRVUkwoZiJJbnZhbGlkIFVSTCBjb21wb25lbnQgJ3trZXl9JyIpCisrCisrICAg ICMgVGhlIFVSTF9SRUdFWCB3aWxsIGFsd2F5cyBtYXRjaCwgYnV0IG1heSBoYXZlIGVtcHR5IGNv bXBvbmVudHMuCisrICAgIHVybF9tYXRjaCA9IFVSTF9SRUdFWC5tYXRjaCh1cmwpCisrICAgIGFz c2VydCB1cmxfbWF0Y2ggaXMgbm90IE5vbmUKKysgICAgdXJsX2RpY3QgPSB1cmxfbWF0Y2guZ3Jv dXBkaWN0KCkKKysKKysgICAgIyAqICdzY2hlbWUnLCAnYXV0aG9yaXR5JywgYW5kICdwYXRoJyBt YXkgYmUgZW1wdHkgc3RyaW5ncy4KKysgICAgIyAqICdxdWVyeScgbWF5IGJlICdOb25lJywgaW5k aWNhdGluZyBubyB0cmFpbGluZyAiPyIgcG9ydGlvbi4KKysgICAgIyAgIEFueSBzdHJpbmcgaW5j bHVkaW5nIHRoZSBlbXB0eSBzdHJpbmcsIGluZGljYXRlcyBhIHRyYWlsaW5nICI/Ii4KKysgICAg IyAqICdmcmFnbWVudCcgbWF5IGJlICdOb25lJywgaW5kaWNhdGluZyBubyB0cmFpbGluZyAiIyIg cG9ydGlvbi4KKysgICAgIyAgIEFueSBzdHJpbmcgaW5jbHVkaW5nIHRoZSBlbXB0eSBzdHJpbmcs IGluZGljYXRlcyBhIHRyYWlsaW5nICIjIi4KKysgICAgc2NoZW1lID0ga3dhcmdzLmdldCgic2No ZW1lIiwgdXJsX2RpY3RbInNjaGVtZSJdKSBvciAiIgorKyAgICBhdXRob3JpdHkgPSBrd2FyZ3Mu Z2V0KCJhdXRob3JpdHkiLCB1cmxfZGljdFsiYXV0aG9yaXR5Il0pIG9yICIiCisrICAgIHBhdGgg PSBrd2FyZ3MuZ2V0KCJwYXRoIiwgdXJsX2RpY3RbInBhdGgiXSkgb3IgIiIKKysgICAgcXVlcnkg PSBrd2FyZ3MuZ2V0KCJxdWVyeSIsIHVybF9kaWN0WyJxdWVyeSJdKQorKyAgICBmcmFnbWVudCA9 IGt3YXJncy5nZXQoImZyYWdtZW50IiwgdXJsX2RpY3RbImZyYWdtZW50Il0pCisrCisrICAgICMg VGhlIEFVVEhPUklUWV9SRUdFWCB3aWxsIGFsd2F5cyBtYXRjaCwgYnV0IG1heSBoYXZlIGVtcHR5 IGNvbXBvbmVudHMuCisrICAgIGF1dGhvcml0eV9tYXRjaCA9IEFVVEhPUklUWV9SRUdFWC5tYXRj aChhdXRob3JpdHkpCisrICAgIGFzc2VydCBhdXRob3JpdHlfbWF0Y2ggaXMgbm90IE5vbmUKKysg ICAgYXV0aG9yaXR5X2RpY3QgPSBhdXRob3JpdHlfbWF0Y2guZ3JvdXBkaWN0KCkKKysKKysgICAg IyAqICd1c2VyaW5mbycgYW5kICdob3N0JyBtYXkgYmUgZW1wdHkgc3RyaW5ncy4KKysgICAgIyAq ICdwb3J0JyBtYXkgYmUgJ05vbmUnLgorKyAgICB1c2VyaW5mbyA9IGt3YXJncy5nZXQoInVzZXJp bmZvIiwgYXV0aG9yaXR5X2RpY3RbInVzZXJpbmZvIl0pIG9yICIiCisrICAgIGhvc3QgPSBrd2Fy Z3MuZ2V0KCJob3N0IiwgYXV0aG9yaXR5X2RpY3RbImhvc3QiXSkgb3IgIiIKKysgICAgcG9ydCA9 IGt3YXJncy5nZXQoInBvcnQiLCBhdXRob3JpdHlfZGljdFsicG9ydCJdKQorKworKyAgICAjIE5v cm1hbGl6ZSBhbmQgdmFsaWRhdGUgZWFjaCBjb21wb25lbnQuCisrICAgICMgV2UgZW5kIHVwIHdp dGggYSBwYXJzZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIFVSTCwKKysgICAgIyB3aXRoIGNvbXBv bmVudHMgdGhhdCBhcmUgcGxhaW4gQVNDSUkgYnl0ZXN0cmluZ3MuCisrICAgIHBhcnNlZF9zY2hl bWU6IHN0ciA9IHNjaGVtZS5sb3dlcigpCisrICAgIHBhcnNlZF91c2VyaW5mbzogc3RyID0gcXVv dGUodXNlcmluZm8sIHNhZmU9U1VCX0RFTElNUyArICI6IikKKysgICAgcGFyc2VkX2hvc3Q6IHN0 ciA9IGVuY29kZV9ob3N0KGhvc3QpCisrICAgIHBhcnNlZF9wb3J0OiB0eXBpbmcuT3B0aW9uYWxb aW50XSA9IG5vcm1hbGl6ZV9wb3J0KHBvcnQsIHNjaGVtZSkKKysKKysgICAgaGFzX3NjaGVtZSA9 IHBhcnNlZF9zY2hlbWUgIT0gIiIKKysgICAgaGFzX2F1dGhvcml0eSA9ICgKKysgICAgICAgIHBh cnNlZF91c2VyaW5mbyAhPSAiIiBvciBwYXJzZWRfaG9zdCAhPSAiIiBvciBwYXJzZWRfcG9ydCBp cyBub3QgTm9uZQorKyAgICApCisrICAgIHZhbGlkYXRlX3BhdGgocGF0aCwgaGFzX3NjaGVtZT1o YXNfc2NoZW1lLCBoYXNfYXV0aG9yaXR5PWhhc19hdXRob3JpdHkpCisrICAgIGlmIGhhc19hdXRo b3JpdHk6CisrICAgICAgICBwYXRoID0gbm9ybWFsaXplX3BhdGgocGF0aCkKKysKKysgICAgcGFy c2VkX3BhdGg6IHN0ciA9IHF1b3RlKHBhdGgsIHNhZmU9U1VCX0RFTElNUyArICI6QC8iKQorKyAg ICBwYXJzZWRfcXVlcnk6IHR5cGluZy5PcHRpb25hbFtzdHJdID0gKAorKyAgICAgICAgTm9uZSBp ZiBxdWVyeSBpcyBOb25lIGVsc2UgcXVvdGUocXVlcnksIHNhZmU9U1VCX0RFTElNUyArICIvPyIp CisrICAgICkKKysgICAgcGFyc2VkX2ZyYWdtZW50OiB0eXBpbmcuT3B0aW9uYWxbc3RyXSA9ICgK KysgICAgICAgIE5vbmUgaWYgZnJhZ21lbnQgaXMgTm9uZSBlbHNlIHF1b3RlKGZyYWdtZW50LCBz YWZlPVNVQl9ERUxJTVMgKyAiLz8iKQorKyAgICApCisrCisrICAgICMgVGhlIHBhcnNlZCBBU0NJ SSBieXRlc3RyaW5ncyBhcmUgb3VyIGNhbm9uaWNhbCBmb3JtLgorKyAgICAjIEFsbCBwcm9wZXJ0 aWVzIG9mIHRoZSBVUkwgYXJlIGRlcml2ZWQgZnJvbSB0aGVzZS4KKysgICAgcmV0dXJuIFBhcnNl UmVzdWx0KAorKyAgICAgICAgcGFyc2VkX3NjaGVtZSwKKysgICAgICAgIHBhcnNlZF91c2VyaW5m bywKKysgICAgICAgIHBhcnNlZF9ob3N0LAorKyAgICAgICAgcGFyc2VkX3BvcnQsCisrICAgICAg ICBwYXJzZWRfcGF0aCwKKysgICAgICAgIHBhcnNlZF9xdWVyeSwKKysgICAgICAgIHBhcnNlZF9m cmFnbWVudCwKKysgICAgKQorKworKworK2RlZiBlbmNvZGVfaG9zdChob3N0OiBzdHIpIC0+IHN0 cjoKKysgICAgaWYgbm90IGhvc3Q6CisrICAgICAgICByZXR1cm4gIiIKKysKKysgICAgZWxpZiBJ UHY0X1NUWUxFX0hPU1ROQU1FLm1hdGNoKGhvc3QpOgorKyAgICAgICAgIyBWYWxpZGF0ZSBJUHY0 IGhvc3RuYW1lcyBsaWtlICMuIy4jLiMKKysgICAgICAgICMKKysgICAgICAgICMgRnJvbSBodHRw czovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzM5ODYvI3NlY3Rpb24tMy4yLjIK KysgICAgICAgICMKKysgICAgICAgICMgSVB2NGFkZHJlc3MgPSBkZWMtb2N0ZXQgIi4iIGRlYy1v Y3RldCAiLiIgZGVjLW9jdGV0ICIuIiBkZWMtb2N0ZXQKKysgICAgICAgIHRyeToKKysgICAgICAg ICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoaG9zdCkKKysgICAgICAgIGV4Y2VwdCBpcGFkZHJl c3MuQWRkcmVzc1ZhbHVlRXJyb3I6CisrICAgICAgICAgICAgcmFpc2UgSW52YWxpZFVSTCgiSW52 YWxpZCBJUHY0IGFkZHJlc3MiKQorKyAgICAgICAgcmV0dXJuIGhvc3QKKysKKysgICAgZWxpZiBJ UHY2X1NUWUxFX0hPU1ROQU1FLm1hdGNoKGhvc3QpOgorKyAgICAgICAgIyBWYWxpZGF0ZSBJUHY2 IGhvc3RuYW1lcyBsaWtlIFsuLi5dCisrICAgICAgICAjCisrICAgICAgICAjIEZyb20gaHR0cHM6 Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMzOTg2LyNzZWN0aW9uLTMuMi4yCisr ICAgICAgICAjCisrICAgICAgICAjICJBIGhvc3QgaWRlbnRpZmllZCBieSBhbiBJbnRlcm5ldCBQ cm90b2NvbCBsaXRlcmFsIGFkZHJlc3MsIHZlcnNpb24gNgorKyAgICAgICAgIyBbUkZDMzUxM10g b3IgbGF0ZXIsIGlzIGRpc3Rpbmd1aXNoZWQgYnkgZW5jbG9zaW5nIHRoZSBJUCBsaXRlcmFsCisr ICAgICAgICAjIHdpdGhpbiBzcXVhcmUgYnJhY2tldHMgKCJbIiBhbmQgIl0iKS4gIFRoaXMgaXMg dGhlIG9ubHkgcGxhY2Ugd2hlcmUKKysgICAgICAgICMgc3F1YXJlIGJyYWNrZXQgY2hhcmFjdGVy cyBhcmUgYWxsb3dlZCBpbiB0aGUgVVJJIHN5bnRheC4iCisrICAgICAgICB0cnk6CisrICAgICAg ICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKGhvc3RbMTotMV0pCisrICAgICAgICBleGNlcHQg aXBhZGRyZXNzLkFkZHJlc3NWYWx1ZUVycm9yOgorKyAgICAgICAgICAgIHJhaXNlIEludmFsaWRV UkwoIkludmFsaWQgSVB2NiBhZGRyZXNzIikKKysgICAgICAgIHJldHVybiBob3N0WzE6LTFdCisr CisrICAgIGVsaWYgaG9zdC5pc2FzY2lpKCk6CisrICAgICAgICAjIFJlZ3VsYXIgQVNDSUkgaG9z dG5hbWVzCisrICAgICAgICAjCisrICAgICAgICAjIEZyb20gaHR0cHM6Ly9kYXRhdHJhY2tlci5p ZXRmLm9yZy9kb2MvaHRtbC9yZmMzOTg2LyNzZWN0aW9uLTMuMi4yCisrICAgICAgICAjCisrICAg ICAgICAjIHJlZy1uYW1lICAgID0gKiggdW5yZXNlcnZlZCAvIHBjdC1lbmNvZGVkIC8gc3ViLWRl bGltcyApCisrICAgICAgICByZXR1cm4gcXVvdGUoaG9zdC5sb3dlcigpLCBzYWZlPVNVQl9ERUxJ TVMpCisrCisrICAgICMgSUROQSBob3N0bmFtZXMKKysgICAgdHJ5OgorKyAgICAgICAgcmV0dXJu IGlkbmEuZW5jb2RlKGhvc3QubG93ZXIoKSkuZGVjb2RlKCJhc2NpaSIpCisrICAgIGV4Y2VwdCBp ZG5hLklETkFFcnJvcjoKKysgICAgICAgIHJhaXNlIEludmFsaWRVUkwoIkludmFsaWQgSUROQSBo b3N0bmFtZSIpCisrCisrCisrZGVmIG5vcm1hbGl6ZV9wb3J0KAorKyAgICBwb3J0OiB0eXBpbmcu T3B0aW9uYWxbdHlwaW5nLlVuaW9uW3N0ciwgaW50XV0sIHNjaGVtZTogc3RyCisrKSAtPiB0eXBp bmcuT3B0aW9uYWxbaW50XToKKysgICAgIyBGcm9tIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRt bC9yZmMzOTg2I3NlY3Rpb24tMy4yLjMKKysgICAgIworKyAgICAjICJBIHNjaGVtZSBtYXkgZGVm aW5lIGEgZGVmYXVsdCBwb3J0LiAgRm9yIGV4YW1wbGUsIHRoZSAiaHR0cCIgc2NoZW1lCisrICAg ICMgZGVmaW5lcyBhIGRlZmF1bHQgcG9ydCBvZiAiODAiLCBjb3JyZXNwb25kaW5nIHRvIGl0cyBy ZXNlcnZlZCBUQ1AKKysgICAgIyBwb3J0IG51bWJlci4gIFRoZSB0eXBlIG9mIHBvcnQgZGVzaWdu YXRlZCBieSB0aGUgcG9ydCBudW1iZXIgKGUuZy4sCisrICAgICMgVENQLCBVRFAsIFNDVFApIGlz IGRlZmluZWQgYnkgdGhlIFVSSSBzY2hlbWUuICBVUkkgcHJvZHVjZXJzIGFuZAorKyAgICAjIG5v cm1hbGl6ZXJzIHNob3VsZCBvbWl0IHRoZSBwb3J0IGNvbXBvbmVudCBhbmQgaXRzICI6IiBkZWxp bWl0ZXIgaWYKKysgICAgIyBwb3J0IGlzIGVtcHR5IG9yIGlmIGl0cyB2YWx1ZSB3b3VsZCBiZSB0 aGUgc2FtZSBhcyB0aGF0IG9mIHRoZQorKyAgICAjIHNjaGVtZSdzIGRlZmF1bHQuIgorKyAgICBp ZiBwb3J0IGlzIE5vbmUgb3IgcG9ydCA9PSAiIjoKKysgICAgICAgIHJldHVybiBOb25lCisrCisr ICAgIHRyeToKKysgICAgICAgIHBvcnRfYXNfaW50ID0gaW50KHBvcnQpCisrICAgIGV4Y2VwdCBW YWx1ZUVycm9yOgorKyAgICAgICAgcmFpc2UgSW52YWxpZFVSTCgiSW52YWxpZCBwb3J0IikKKysK KysgICAgIyBTZWUgaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyN1cmwtbWlzY2VsbGFuZW91 cworKyAgICBkZWZhdWx0X3BvcnQgPSB7ImZ0cCI6IDIxLCAiaHR0cCI6IDgwLCAiaHR0cHMiOiA0 NDMsICJ3cyI6IDgwLCAid3NzIjogNDQzfS5nZXQoCisrICAgICAgICBzY2hlbWUKKysgICAgKQor KyAgICBpZiBwb3J0X2FzX2ludCA9PSBkZWZhdWx0X3BvcnQ6CisrICAgICAgICByZXR1cm4gTm9u ZQorKyAgICByZXR1cm4gcG9ydF9hc19pbnQKKysKKysKKytkZWYgdmFsaWRhdGVfcGF0aChwYXRo OiBzdHIsIGhhc19zY2hlbWU6IGJvb2wsIGhhc19hdXRob3JpdHk6IGJvb2wpIC0+IE5vbmU6Cisr ICAgICIiIgorKyAgICBQYXRoIHZhbGlkYXRpb24gcnVsZXMgdGhhdCBkZXBlbmQgb24gaWYgdGhl IFVSTCBjb250YWlucyBhIHNjaGVtZSBvciBhdXRob3JpdHkgY29tcG9uZW50LgorKworKyAgICBT ZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMzOTg2Lmh0bWwjc2Vj dGlvbi0zLjMKKysgICAgIiIiCisrICAgIGlmIGhhc19hdXRob3JpdHk6CisrICAgICAgICAjID4g SWYgYSBVUkkgY29udGFpbnMgYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBj b21wb25lbnQKKysgICAgICAgICMgPiBtdXN0IGVpdGhlciBiZSBlbXB0eSBvciBiZWdpbiB3aXRo IGEgc2xhc2ggKCIvIikgY2hhcmFjdGVyLiIKKysgICAgICAgIGlmIHBhdGggYW5kIG5vdCBwYXRo LnN0YXJ0c3dpdGgoIi8iKToKKysgICAgICAgICAgICByYWlzZSBJbnZhbGlkVVJMKCJGb3IgYWJz b2x1dGUgVVJMcywgcGF0aCBtdXN0IGJlIGVtcHR5IG9yIGJlZ2luIHdpdGggJy8nIikKKysgICAg ZWxzZToKKysgICAgICAgICMgPiBJZiBhIFVSSSBkb2VzIG5vdCBjb250YWluIGFuIGF1dGhvcml0 eSBjb21wb25lbnQsIHRoZW4gdGhlIHBhdGggY2Fubm90IGJlZ2luCisrICAgICAgICAjID4gd2l0 aCB0d28gc2xhc2ggY2hhcmFjdGVycyAoIi8vIikuCisrICAgICAgICBpZiBwYXRoLnN0YXJ0c3dp dGgoIi8vIik6CisrICAgICAgICAgICAgcmFpc2UgSW52YWxpZFVSTCgKKysgICAgICAgICAgICAg ICAgIlVSTHMgd2l0aCBubyBhdXRob3JpdHkgY29tcG9uZW50IGNhbm5vdCBoYXZlIGEgcGF0aCBz dGFydGluZyB3aXRoICcvLyciCisrICAgICAgICAgICAgKQorKyAgICAgICAgIyA+IEluIGFkZGl0 aW9uLCBhIFVSSSByZWZlcmVuY2UgKFNlY3Rpb24gNC4xKSBtYXkgYmUgYSByZWxhdGl2ZS1wYXRo IHJlZmVyZW5jZSwgaW4gd2hpY2gKKysgICAgICAgICMgPiBjYXNlIHRoZSBmaXJzdCBwYXRoIHNl Z21lbnQgY2Fubm90IGNvbnRhaW4gYSBjb2xvbiAoIjoiKSBjaGFyYWN0ZXIuCisrICAgICAgICBp ZiBwYXRoLnN0YXJ0c3dpdGgoIjoiKSBhbmQgbm90IGhhc19zY2hlbWU6CisrICAgICAgICAgICAg cmFpc2UgSW52YWxpZFVSTCgKKysgICAgICAgICAgICAgICAgIlVSTHMgd2l0aCBubyBzY2hlbWUg Y29tcG9uZW50IGNhbm5vdCBoYXZlIGEgcGF0aCBzdGFydGluZyB3aXRoICc6JyIKKysgICAgICAg ICAgICApCisrCisrCisrZGVmIG5vcm1hbGl6ZV9wYXRoKHBhdGg6IHN0cikgLT4gc3RyOgorKyAg ICAiIiIKKysgICAgRHJvcCAiLiIgYW5kICIuLiIgc2VnbWVudHMgZnJvbSBhIFVSTCBwYXRoLgor KworKyAgICBGb3IgZXhhbXBsZToKKysKKysgICAgICAgIG5vcm1hbGl6ZV9wYXRoKCIvcGF0aC8u L3RvL3NvbWV3aGVyZS8uLiIpID09ICIvcGF0aC90byIKKysgICAgIiIiCisrICAgICMgaHR0cHM6 Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4yLjQKKysg ICAgY29tcG9uZW50cyA9IHBhdGguc3BsaXQoIi8iKQorKyAgICBvdXRwdXQ6IHR5cGluZy5MaXN0 W3N0cl0gPSBbXQorKyAgICBmb3IgY29tcG9uZW50IGluIGNvbXBvbmVudHM6CisrICAgICAgICBp ZiBjb21wb25lbnQgPT0gIi4iOgorKyAgICAgICAgICAgIHBhc3MKKysgICAgICAgIGVsaWYgY29t cG9uZW50ID09ICIuLiI6CisrICAgICAgICAgICAgaWYgb3V0cHV0IGFuZCBvdXRwdXQgIT0gWyIi XToKKysgICAgICAgICAgICAgICAgb3V0cHV0LnBvcCgpCisrICAgICAgICBlbHNlOgorKyAgICAg ICAgICAgIG91dHB1dC5hcHBlbmQoY29tcG9uZW50KQorKyAgICByZXR1cm4gIi8iLmpvaW4ob3V0 cHV0KQorKworKworK2RlZiBwZXJjZW50X2VuY29kZShjaGFyOiBzdHIpIC0+IHN0cjoKKysgICAg IiIiCisrICAgIFJlcGxhY2UgZXZlcnkgY2hhcmFjdGVyIGluIGEgc3RyaW5nIHdpdGggdGhlIHBl cmNlbnQtZW5jb2RlZCByZXByZXNlbnRhdGlvbi4KKysKKysgICAgQ2hhcmFjdGVycyBvdXRzaWRl IHRoZSBBU0NJSSByYW5nZSBhcmUgcmVwcmVzZW50ZWQgd2l0aCB0aGVpciBhIHBlcmNlbnQtZW5j b2RlZAorKyAgICByZXByZXNlbnRhdGlvbiBvZiB0aGVpciBVVEYtOCBieXRlIHNlcXVlbmNlLgor KworKyAgICBGb3IgZXhhbXBsZToKKysKKysgICAgICAgIHBlcmNlbnRfZW5jb2RlKCIgIikgPT0g IiUyMCIKKysgICAgIiIiCisrICAgIHJldHVybiAiIi5qb2luKFtmIiV7Ynl0ZTowMnh9IiBmb3Ig Ynl0ZSBpbiBjaGFyLmVuY29kZSgidXRmLTgiKV0pLnVwcGVyKCkKKysKKysKKytkZWYgcXVvdGUo c3RyaW5nOiBzdHIsIHNhZmU6IHN0ciA9ICIvIikgLT4gc3RyOgorKyAgICBOT05fRVNDQVBFRF9D SEFSUyA9IFVOUkVTRVJWRURfQ0hBUkFDVEVSUyArIHNhZmUKKysgICAgaWYgc3RyaW5nLmNvdW50 KCIlIikgPT0gbGVuKFBFUkNFTlRfRU5DT0RFRF9SRUdFWC5maW5kYWxsKHN0cmluZykpOgorKyAg ICAgICAgIyBJZiBhbGwgb2NjdXJhbmNlcyBvZiAnJScgYXJlIHZhbGlkICcleHgnIGVzY2FwZXMs IHRoZW4gdHJlYXQKKysgICAgICAgICMgcGVyY2VudCBhcyBhIG5vbi1lc2NhcGluZyBjaGFyYWN0 ZXIuCisrICAgICAgICBOT05fRVNDQVBFRF9DSEFSUyArPSAiJSIKKysKKysgICAgcmV0dXJuICIi LmpvaW4oCisrICAgICAgICBbY2hhciBpZiBjaGFyIGluIE5PTl9FU0NBUEVEX0NIQVJTIGVsc2Ug cGVyY2VudF9lbmNvZGUoY2hhcikgZm9yIGNoYXIgaW4gc3RyaW5nXQorKyAgICApCitkaWZmIC0t Z2l0IGEvaHR0cHgvX3VybHMucHkgYi9odHRweC9fdXJscy5weQoraW5kZXggZjI2YjJlYjJkLi4x YmNiYzhiMjkgMTAwNjQ0CistLS0gYS9odHRweC9fdXJscy5weQorKysrIGIvaHR0cHgvX3VybHMu cHkKK0BAIC0xLDEyICsxLDEwIEBACisgaW1wb3J0IHR5cGluZworLWZyb20gdXJsbGliLnBhcnNl IGltcG9ydCBwYXJzZV9xcywgcXVvdGUsIHVucXVvdGUsIHVybGVuY29kZQorK2Zyb20gdXJsbGli LnBhcnNlIGltcG9ydCBwYXJzZV9xcywgdW5xdW90ZSwgdXJsZW5jb2RlCisgCisgaW1wb3J0IGlk bmEKKy1pbXBvcnQgcmZjMzk4NgorLWltcG9ydCByZmMzOTg2LmV4Y2VwdGlvbnMKKyAKKy1mcm9t IC5fZXhjZXB0aW9ucyBpbXBvcnQgSW52YWxpZFVSTAorIGZyb20gLl90eXBlcyBpbXBvcnQgUHJp bWl0aXZlRGF0YSwgUXVlcnlQYXJhbVR5cGVzLCBSYXdVUkwsIFVSTFR5cGVzCisrZnJvbSAuX3Vy bHBhcnNlIGltcG9ydCB1cmxwYXJzZQorIGZyb20gLl91dGlscyBpbXBvcnQgcHJpbWl0aXZlX3Zh bHVlX3RvX3N0cgorIAorIAorQEAgLTcwLDU2ICs2OCw2MyBAQCBjbGFzcyBVUkw6CisgICAgICAg YmUgcHJvcGVybHkgVVJMIGVzY2FwZWQgd2hlbiBkZWNvZGluZyB0aGUgcGFyYW1ldGVyIG5hbWVz IGFuZCB2YWx1ZXMgdGhlbXNlbHZlcy4KKyAgICAgIiIiCisgCistICAgIF91cmlfcmVmZXJlbmNl OiByZmMzOTg2LlVSSVJlZmVyZW5jZQorLQorICAgICBkZWYgX19pbml0X18oCisgICAgICAgICBz ZWxmLCB1cmw6IHR5cGluZy5VbmlvblsiVVJMIiwgc3RyXSA9ICIiLCAqKmt3YXJnczogdHlwaW5n LkFueQorICAgICApIC0+IE5vbmU6CisrICAgICAgICBpZiBrd2FyZ3M6CisrICAgICAgICAgICAg YWxsb3dlZCA9IHsKKysgICAgICAgICAgICAgICAgInNjaGVtZSI6IHN0ciwKKysgICAgICAgICAg ICAgICAgInVzZXJuYW1lIjogc3RyLAorKyAgICAgICAgICAgICAgICAicGFzc3dvcmQiOiBzdHIs CisrICAgICAgICAgICAgICAgICJ1c2VyaW5mbyI6IGJ5dGVzLAorKyAgICAgICAgICAgICAgICAi aG9zdCI6IHN0ciwKKysgICAgICAgICAgICAgICAgInBvcnQiOiBpbnQsCisrICAgICAgICAgICAg ICAgICJuZXRsb2MiOiBieXRlcywKKysgICAgICAgICAgICAgICAgInBhdGgiOiBzdHIsCisrICAg ICAgICAgICAgICAgICJxdWVyeSI6IGJ5dGVzLAorKyAgICAgICAgICAgICAgICAicmF3X3BhdGgi OiBieXRlcywKKysgICAgICAgICAgICAgICAgImZyYWdtZW50Ijogc3RyLAorKyAgICAgICAgICAg ICAgICAicGFyYW1zIjogb2JqZWN0LAorKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICAj IFBlcmZvcm0gdHlwZSBjaGVja2luZyBmb3IgYWxsIHN1cHBvcnRlZCBrZXl3b3JkIGFyZ3VtZW50 cy4KKysgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBrd2FyZ3MuaXRlbXMoKToKKysgICAg ICAgICAgICAgICAgaWYga2V5IG5vdCBpbiBhbGxvd2VkOgorKyAgICAgICAgICAgICAgICAgICAg bWVzc2FnZSA9IGYie2tleSFyfSBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgZm9yIFVS TCgpIgorKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1lc3NhZ2UpCisrICAg ICAgICAgICAgICAgIGlmIHZhbHVlIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZSh2YWx1 ZSwgYWxsb3dlZFtrZXldKToKKysgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gYWxsb3dl ZFtrZXldLl9fbmFtZV9fCisrICAgICAgICAgICAgICAgICAgICBzZWVuID0gdHlwZSh2YWx1ZSku X19uYW1lX18KKysgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBmIkFyZ3VtZW50IHtrZXkh cn0gbXVzdCBiZSB7ZXhwZWN0ZWR9IGJ1dCBnb3Qge3NlZW59IgorKyAgICAgICAgICAgICAgICAg ICAgcmFpc2UgVHlwZUVycm9yKG1lc3NhZ2UpCisrICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFu Y2UodmFsdWUsIGJ5dGVzKToKKysgICAgICAgICAgICAgICAgICAgIGt3YXJnc1trZXldID0gdmFs dWUuZGVjb2RlKCJhc2NpaSIpCisrCisrICAgICAgICAgICAgaWYgInBhcmFtcyIgaW4ga3dhcmdz OgorKyAgICAgICAgICAgICAgICAjIFJlcGxhY2UgYW55ICJwYXJhbXMiIGtleXdvcmQgd2l0aCB0 aGUgcmF3ICJxdWVyeSIgaW5zdGVhZC4KKysgICAgICAgICAgICAgICAgIworKyAgICAgICAgICAg ICAgICAjIEVuc3VyZSB0aGF0IGVtcHR5IHBhcmFtcyB1c2UgYGt3YXJnc1sicXVlcnkiXSA9IE5v bmVgIHJhdGhlcgorKyAgICAgICAgICAgICAgICAjIHRoYW4gYGt3YXJnc1sicXVlcnkiXSA9ICIi YCwgc28gdGhhdCBnZW5lcmF0ZWQgVVJMcyBkbyBub3QKKysgICAgICAgICAgICAgICAgIyBpbmNs dWRlIGFuIGVtcHR5IHRyYWlsaW5nICI/Ii4KKysgICAgICAgICAgICAgICAgcGFyYW1zID0ga3dh cmdzLnBvcCgicGFyYW1zIikKKysgICAgICAgICAgICAgICAga3dhcmdzWyJxdWVyeSJdID0gTm9u ZSBpZiBub3QgcGFyYW1zIGVsc2Ugc3RyKFF1ZXJ5UGFyYW1zKHBhcmFtcykpCisrCisgICAgICAg ICBpZiBpc2luc3RhbmNlKHVybCwgc3RyKToKKy0gICAgICAgICAgICB0cnk6CistICAgICAgICAg ICAgICAgIHNlbGYuX3VyaV9yZWZlcmVuY2UgPSByZmMzOTg2LmlyaV9yZWZlcmVuY2UodXJsKS5l bmNvZGUoKQorLSAgICAgICAgICAgIGV4Y2VwdCByZmMzOTg2LmV4Y2VwdGlvbnMuSW52YWxpZEF1 dGhvcml0eSBhcyBleGM6CistICAgICAgICAgICAgICAgIHJhaXNlIEludmFsaWRVUkwobWVzc2Fn ZT1zdHIoZXhjKSkgZnJvbSBOb25lCistCistICAgICAgICAgICAgaWYgc2VsZi5pc19hYnNvbHV0 ZV91cmw6CistICAgICAgICAgICAgICAgICMgV2UgZG9uJ3Qgd2FudCB0byBub3JtYWxpemUgcmVs YXRpdmUgVVJMcywgc2luY2UgZG9pbmcgc28KKy0gICAgICAgICAgICAgICAgIyByZW1vdmVzIGFu eSBsZWFkaW5nIGAuLi9gIHBvcnRpb24uCistICAgICAgICAgICAgICAgIHNlbGYuX3VyaV9yZWZl cmVuY2UgPSBzZWxmLl91cmlfcmVmZXJlbmNlLm5vcm1hbGl6ZSgpCisrICAgICAgICAgICAgc2Vs Zi5fdXJpX3JlZmVyZW5jZSA9IHVybHBhcnNlKHVybCwgKiprd2FyZ3MpCisgICAgICAgICBlbGlm IGlzaW5zdGFuY2UodXJsLCBVUkwpOgorLSAgICAgICAgICAgIHNlbGYuX3VyaV9yZWZlcmVuY2Ug PSB1cmwuX3VyaV9yZWZlcmVuY2UKKysgICAgICAgICAgICBzZWxmLl91cmlfcmVmZXJlbmNlID0g dXJsLl91cmlfcmVmZXJlbmNlLmNvcHlfd2l0aCgqKmt3YXJncykKKyAgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAgICBmIkludmFsaWQg dHlwZSBmb3IgdXJsLiAgRXhwZWN0ZWQgc3RyIG9yIGh0dHB4LlVSTCwgZ290IHt0eXBlKHVybCl9 OiB7dXJsIXJ9IgorICAgICAgICAgICAgICkKKyAKKy0gICAgICAgICMgUGVyZm9ybSBwb3J0IG5v cm1hbGl6YXRpb24sIGZvbGxvd2luZyB0aGUgV0hBVFdHIHNwZWMgZm9yIGRlZmF1bHQgcG9ydHMu CistICAgICAgICAjCistICAgICAgICAjIFNlZToKKy0gICAgICAgICMgKiBodHRwczovL3Rvb2xz LmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMuMi4zCistICAgICAgICAjICogaHR0cHM6 Ly91cmwuc3BlYy53aGF0d2cub3JnLyN1cmwtbWlzY2VsbGFuZW91cworLSAgICAgICAgIyAqIGh0 dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jc2NoZW1lLXN0YXRlCistICAgICAgICBkZWZhdWx0 X3BvcnQgPSB7CistICAgICAgICAgICAgImZ0cCI6ICI6MjEiLAorLSAgICAgICAgICAgICJodHRw IjogIjo4MCIsCistICAgICAgICAgICAgImh0dHBzIjogIjo0NDMiLAorLSAgICAgICAgICAgICJ3 cyI6ICI6ODAiLAorLSAgICAgICAgICAgICJ3c3MiOiAiOjQ0MyIsCistICAgICAgICB9LmdldChz ZWxmLl91cmlfcmVmZXJlbmNlLnNjaGVtZSwgIiIpCistICAgICAgICBhdXRob3JpdHkgPSBzZWxm Ll91cmlfcmVmZXJlbmNlLmF1dGhvcml0eSBvciAiIgorLSAgICAgICAgaWYgZGVmYXVsdF9wb3J0 IGFuZCBhdXRob3JpdHkuZW5kc3dpdGgoZGVmYXVsdF9wb3J0KToKKy0gICAgICAgICAgICBhdXRo b3JpdHkgPSBhdXRob3JpdHlbOiAtbGVuKGRlZmF1bHRfcG9ydCldCistICAgICAgICAgICAgc2Vs Zi5fdXJpX3JlZmVyZW5jZSA9IHNlbGYuX3VyaV9yZWZlcmVuY2UuY29weV93aXRoKGF1dGhvcml0 eT1hdXRob3JpdHkpCistCistICAgICAgICBpZiBrd2FyZ3M6CistICAgICAgICAgICAgc2VsZi5f dXJpX3JlZmVyZW5jZSA9IHNlbGYuY29weV93aXRoKCoqa3dhcmdzKS5fdXJpX3JlZmVyZW5jZQor LQorICAgICBAcHJvcGVydHkKKyAgICAgZGVmIHNjaGVtZShzZWxmKSAtPiBzdHI6CisgICAgICAg ICAiIiIKKyAgICAgICAgIFRoZSBVUkwgc2NoZW1lLCBzdWNoIGFzICJodHRwIiwgImh0dHBzIi4K KyAgICAgICAgIEFsd2F5cyBub3JtYWxpc2VkIHRvIGxvd2VyY2FzZS4KKyAgICAgICAgICIiIgor LSAgICAgICAgcmV0dXJuIHNlbGYuX3VyaV9yZWZlcmVuY2Uuc2NoZW1lIG9yICIiCisrICAgICAg ICByZXR1cm4gc2VsZi5fdXJpX3JlZmVyZW5jZS5zY2hlbWUKKyAKKyAgICAgQHByb3BlcnR5Cisg ICAgIGRlZiByYXdfc2NoZW1lKHNlbGYpIC0+IGJ5dGVzOgorQEAgLTEyNyw3ICsxMzIsNyBAQCBk ZWYgcmF3X3NjaGVtZShzZWxmKSAtPiBieXRlczoKKyAgICAgICAgIFRoZSByYXcgYnl0ZXMgcmVw cmVzZW50YXRpb24gb2YgdGhlIFVSTCBzY2hlbWUsIHN1Y2ggYXMgYiJodHRwIiwgYiJodHRwcyIu CisgICAgICAgICBBbHdheXMgbm9ybWFsaXNlZCB0byBsb3dlcmNhc2UuCisgICAgICAgICAiIiIK Ky0gICAgICAgIHJldHVybiBzZWxmLnNjaGVtZS5lbmNvZGUoImFzY2lpIikKKysgICAgICAgIHJl dHVybiBzZWxmLl91cmlfcmVmZXJlbmNlLnNjaGVtZS5lbmNvZGUoImFzY2lpIikKKyAKKyAgICAg QHByb3BlcnR5CisgICAgIGRlZiB1c2VyaW5mbyhzZWxmKSAtPiBieXRlczoKK0BAIC0xMzUsOCAr MTQwLDcgQEAgZGVmIHVzZXJpbmZvKHNlbGYpIC0+IGJ5dGVzOgorICAgICAgICAgVGhlIFVSTCB1 c2VyaW5mbyBhcyBhIHJhdyBieXRlc3RyaW5nLgorICAgICAgICAgRm9yIGV4YW1wbGU6IGIiam8l NDBlbWFpbC5jb206YSUyMHNlY3JldCIuCisgICAgICAgICAiIiIKKy0gICAgICAgIHVzZXJpbmZv ID0gc2VsZi5fdXJpX3JlZmVyZW5jZS51c2VyaW5mbyBvciAiIgorLSAgICAgICAgcmV0dXJuIHVz ZXJpbmZvLmVuY29kZSgiYXNjaWkiKQorKyAgICAgICAgcmV0dXJuIHNlbGYuX3VyaV9yZWZlcmVu Y2UudXNlcmluZm8uZW5jb2RlKCJhc2NpaSIpCisgCisgICAgIEBwcm9wZXJ0eQorICAgICBkZWYg dXNlcm5hbWUoc2VsZikgLT4gc3RyOgorQEAgLTE0NCw3ICsxNDgsNyBAQCBkZWYgdXNlcm5hbWUo c2VsZikgLT4gc3RyOgorICAgICAgICAgVGhlIFVSTCB1c2VybmFtZSBhcyBhIHN0cmluZywgd2l0 aCBVUkwgZGVjb2RpbmcgYXBwbGllZC4KKyAgICAgICAgIEZvciBleGFtcGxlOiAiam9AZW1haWwu Y29tIgorICAgICAgICAgIiIiCistICAgICAgICB1c2VyaW5mbyA9IHNlbGYuX3VyaV9yZWZlcmVu Y2UudXNlcmluZm8gb3IgIiIKKysgICAgICAgIHVzZXJpbmZvID0gc2VsZi5fdXJpX3JlZmVyZW5j ZS51c2VyaW5mbworICAgICAgICAgcmV0dXJuIHVucXVvdGUodXNlcmluZm8ucGFydGl0aW9uKCI6 IilbMF0pCisgCisgICAgIEBwcm9wZXJ0eQorQEAgLTE1Myw3ICsxNTcsNyBAQCBkZWYgcGFzc3dv cmQoc2VsZikgLT4gc3RyOgorICAgICAgICAgVGhlIFVSTCBwYXNzd29yZCBhcyBhIHN0cmluZywg d2l0aCBVUkwgZGVjb2RpbmcgYXBwbGllZC4KKyAgICAgICAgIEZvciBleGFtcGxlOiAiYSBzZWNy ZXQiCisgICAgICAgICAiIiIKKy0gICAgICAgIHVzZXJpbmZvID0gc2VsZi5fdXJpX3JlZmVyZW5j ZS51c2VyaW5mbyBvciAiIgorKyAgICAgICAgdXNlcmluZm8gPSBzZWxmLl91cmlfcmVmZXJlbmNl LnVzZXJpbmZvCisgICAgICAgICByZXR1cm4gdW5xdW90ZSh1c2VyaW5mby5wYXJ0aXRpb24oIjoi KVsyXSkKKyAKKyAgICAgQHByb3BlcnR5CitAQCAtMTc2LDExICsxODAsNyBAQCBkZWYgaG9zdChz ZWxmKSAtPiBzdHI6CisgICAgICAgICB1cmwgPSBodHRweC5VUkwoImh0dHBzOi8vWzo6ZmZmZjox OTIuMTY4LjAuMV0iKQorICAgICAgICAgYXNzZXJ0IHVybC5ob3N0ID09ICI6OmZmZmY6MTkyLjE2 OC4wLjEiCisgICAgICAgICAiIiIKKy0gICAgICAgIGhvc3Q6IHN0ciA9IHNlbGYuX3VyaV9yZWZl cmVuY2UuaG9zdCBvciAiIgorLQorLSAgICAgICAgaWYgaG9zdCBhbmQgIjoiIGluIGhvc3QgYW5k IGhvc3RbMF0gPT0gIlsiOgorLSAgICAgICAgICAgICMgaXQncyBhbiBJUHY2IGFkZHJlc3MKKy0g ICAgICAgICAgICBob3N0ID0gaG9zdC5sc3RyaXAoIlsiKS5yc3RyaXAoIl0iKQorKyAgICAgICAg aG9zdDogc3RyID0gc2VsZi5fdXJpX3JlZmVyZW5jZS5ob3N0CisgCisgICAgICAgICBpZiBob3N0 LnN0YXJ0c3dpdGgoInhuLS0iKToKKyAgICAgICAgICAgICBob3N0ID0gaWRuYS5kZWNvZGUoaG9z dCkKK0BAIC0yMDcsMTMgKzIwNyw3IEBAIGRlZiByYXdfaG9zdChzZWxmKSAtPiBieXRlczoKKyAg ICAgICAgIHVybCA9IGh0dHB4LlVSTCgiaHR0cHM6Ly9bOjpmZmZmOjE5Mi4xNjguMC4xXSIpCisg ICAgICAgICBhc3NlcnQgdXJsLnJhd19ob3N0ID09IGIiOjpmZmZmOjE5Mi4xNjguMC4xIgorICAg ICAgICAgIiIiCistICAgICAgICBob3N0OiBzdHIgPSBzZWxmLl91cmlfcmVmZXJlbmNlLmhvc3Qg b3IgIiIKKy0KKy0gICAgICAgIGlmIGhvc3QgYW5kICI6IiBpbiBob3N0IGFuZCBob3N0WzBdID09 ICJbIjoKKy0gICAgICAgICAgICAjIGl0J3MgYW4gSVB2NiBhZGRyZXNzCistICAgICAgICAgICAg aG9zdCA9IGhvc3QubHN0cmlwKCJbIikucnN0cmlwKCJdIikKKy0KKy0gICAgICAgIHJldHVybiBo b3N0LmVuY29kZSgiYXNjaWkiKQorKyAgICAgICAgcmV0dXJuIHNlbGYuX3VyaV9yZWZlcmVuY2Uu aG9zdC5lbmNvZGUoImFzY2lpIikKKyAKKyAgICAgQHByb3BlcnR5CisgICAgIGRlZiBwb3J0KHNl bGYpIC0+IHR5cGluZy5PcHRpb25hbFtpbnRdOgorQEAgLTIyOSw4ICsyMjMsNyBAQCBkZWYgcG9y dChzZWxmKSAtPiB0eXBpbmcuT3B0aW9uYWxbaW50XToKKyAgICAgICAgIGFzc2VydCBodHRweC5V UkwoImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKSA9PSBodHRweC5VUkwoImh0dHA6Ly93d3cuZXhh bXBsZS5jb206ODAiKQorICAgICAgICAgYXNzZXJ0IGh0dHB4LlVSTCgiaHR0cDovL3d3dy5leGFt cGxlLmNvbTo4MCIpLnBvcnQgaXMgTm9uZQorICAgICAgICAgIiIiCistICAgICAgICBwb3J0ID0g c2VsZi5fdXJpX3JlZmVyZW5jZS5wb3J0CistICAgICAgICByZXR1cm4gaW50KHBvcnQpIGlmIHBv cnQgZWxzZSBOb25lCisrICAgICAgICByZXR1cm4gc2VsZi5fdXJpX3JlZmVyZW5jZS5wb3J0Cisg CisgICAgIEBwcm9wZXJ0eQorICAgICBkZWYgbmV0bG9jKHNlbGYpIC0+IGJ5dGVzOgorQEAgLTI0 MSwxMiArMjM0LDcgQEAgZGVmIG5ldGxvYyhzZWxmKSAtPiBieXRlczoKKyAgICAgICAgIFRoaXMg cHJvcGVydHkgbWF5IGJlIHVzZWQgZm9yIGdlbmVyYXRpbmcgdGhlIHZhbHVlIG9mIGEgcmVxdWVz dAorICAgICAgICAgIkhvc3QiIGhlYWRlci4KKyAgICAgICAgICIiIgorLSAgICAgICAgaG9zdCA9 IHNlbGYuX3VyaV9yZWZlcmVuY2UuaG9zdCBvciAiIgorLSAgICAgICAgcG9ydCA9IHNlbGYuX3Vy aV9yZWZlcmVuY2UucG9ydAorLSAgICAgICAgbmV0bG9jID0gaG9zdC5lbmNvZGUoImFzY2lpIikK Ky0gICAgICAgIGlmIHBvcnQ6CistICAgICAgICAgICAgbmV0bG9jID0gbmV0bG9jICsgYiI6IiAr IHBvcnQuZW5jb2RlKCJhc2NpaSIpCistICAgICAgICByZXR1cm4gbmV0bG9jCisrICAgICAgICBy ZXR1cm4gc2VsZi5fdXJpX3JlZmVyZW5jZS5uZXRsb2MuZW5jb2RlKCJhc2NpaSIpCisgCisgICAg IEBwcm9wZXJ0eQorICAgICBkZWYgcGF0aChzZWxmKSAtPiBzdHI6CitAQCAtMzU3LDEyNyArMzQ1 LDcgQEAgZGVmIGNvcHlfd2l0aChzZWxmLCAqKmt3YXJnczogdHlwaW5nLkFueSkgLT4gIlVSTCI6 CisgICAgICAgICB1cmwgPSBodHRweC5VUkwoImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tIikuY29w eV93aXRoKHVzZXJuYW1lPSJqb0BnbWFpbC5jb20iLCBwYXNzd29yZD0iYSBzZWNyZXQiKQorICAg ICAgICAgYXNzZXJ0IHVybCA9PSAiaHR0cHM6Ly9qbyU0MGVtYWlsLmNvbTphJTIwc2VjcmV0QHd3 dy5leGFtcGxlLmNvbSIKKyAgICAgICAgICIiIgorLSAgICAgICAgYWxsb3dlZCA9IHsKKy0gICAg ICAgICAgICAic2NoZW1lIjogc3RyLAorLSAgICAgICAgICAgICJ1c2VybmFtZSI6IHN0ciwKKy0g ICAgICAgICAgICAicGFzc3dvcmQiOiBzdHIsCistICAgICAgICAgICAgInVzZXJpbmZvIjogYnl0 ZXMsCistICAgICAgICAgICAgImhvc3QiOiBzdHIsCistICAgICAgICAgICAgInBvcnQiOiBpbnQs CistICAgICAgICAgICAgIm5ldGxvYyI6IGJ5dGVzLAorLSAgICAgICAgICAgICJwYXRoIjogc3Ry LAorLSAgICAgICAgICAgICJxdWVyeSI6IGJ5dGVzLAorLSAgICAgICAgICAgICJyYXdfcGF0aCI6 IGJ5dGVzLAorLSAgICAgICAgICAgICJmcmFnbWVudCI6IHN0ciwKKy0gICAgICAgICAgICAicGFy YW1zIjogb2JqZWN0LAorLSAgICAgICAgfQorLQorLSAgICAgICAgIyBTdGVwIDEKKy0gICAgICAg ICMgPT09PT09CistICAgICAgICAjCistICAgICAgICAjIFBlcmZvcm0gdHlwZSBjaGVja2luZyBm b3IgYWxsIHN1cHBvcnRlZCBrZXl3b3JkIGFyZ3VtZW50cy4KKy0gICAgICAgIGZvciBrZXksIHZh bHVlIGluIGt3YXJncy5pdGVtcygpOgorLSAgICAgICAgICAgIGlmIGtleSBub3QgaW4gYWxsb3dl ZDoKKy0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGYie2tleSFyfSBpcyBhbiBpbnZhbGlkIGtl eXdvcmQgYXJndW1lbnQgZm9yIGNvcHlfd2l0aCgpIgorLSAgICAgICAgICAgICAgICByYWlzZSBU eXBlRXJyb3IobWVzc2FnZSkKKy0gICAgICAgICAgICBpZiB2YWx1ZSBpcyBub3QgTm9uZSBhbmQg bm90IGlzaW5zdGFuY2UodmFsdWUsIGFsbG93ZWRba2V5XSk6CistICAgICAgICAgICAgICAgIGV4 cGVjdGVkID0gYWxsb3dlZFtrZXldLl9fbmFtZV9fCistICAgICAgICAgICAgICAgIHNlZW4gPSB0 eXBlKHZhbHVlKS5fX25hbWVfXworLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gZiJBcmd1bWVu dCB7a2V5IXJ9IG11c3QgYmUge2V4cGVjdGVkfSBidXQgZ290IHtzZWVufSIKKy0gICAgICAgICAg ICAgICAgcmFpc2UgVHlwZUVycm9yKG1lc3NhZ2UpCistCistICAgICAgICAjIFN0ZXAgMgorLSAg ICAgICAgIyA9PT09PT0KKy0gICAgICAgICMKKy0gICAgICAgICMgQ29uc29saWRhdGUgInVzZXJu YW1lIiwgInBhc3N3b3JkIiwgInVzZXJpbmZvIiwgImhvc3QiLCAicG9ydCIgYW5kICJuZXRsb2Mi CistICAgICAgICAjIGludG8gYSBzaW5nbGUgImF1dGhvcml0eSIga2V5d29yZCwgZm9yIGByZmMz OTg2YC4KKy0gICAgICAgIGlmICJ1c2VybmFtZSIgaW4ga3dhcmdzIG9yICJwYXNzd29yZCIgaW4g a3dhcmdzOgorLSAgICAgICAgICAgICMgQ29uc29saWRhdGUgInVzZXJuYW1lIiBhbmQgInBhc3N3 b3JkIiBpbnRvICJ1c2VyaW5mbyIuCistICAgICAgICAgICAgdXNlcm5hbWUgPSBxdW90ZShrd2Fy Z3MucG9wKCJ1c2VybmFtZSIsIHNlbGYudXNlcm5hbWUpIG9yICIiKQorLSAgICAgICAgICAgIHBh c3N3b3JkID0gcXVvdGUoa3dhcmdzLnBvcCgicGFzc3dvcmQiLCBzZWxmLnBhc3N3b3JkKSBvciAi IikKKy0gICAgICAgICAgICB1c2VyaW5mbyA9IGYie3VzZXJuYW1lfTp7cGFzc3dvcmR9IiBpZiBw YXNzd29yZCBlbHNlIHVzZXJuYW1lCistICAgICAgICAgICAga3dhcmdzWyJ1c2VyaW5mbyJdID0g dXNlcmluZm8uZW5jb2RlKCJhc2NpaSIpCistCistICAgICAgICBpZiAiaG9zdCIgaW4ga3dhcmdz IG9yICJwb3J0IiBpbiBrd2FyZ3M6CistICAgICAgICAgICAgIyBDb25zb2xpZGF0ZSAiaG9zdCIg YW5kICJwb3J0IiBpbnRvICJuZXRsb2MiLgorLSAgICAgICAgICAgIGhvc3QgPSBrd2FyZ3MucG9w KCJob3N0Iiwgc2VsZi5ob3N0KSBvciAiIgorLSAgICAgICAgICAgIHBvcnQgPSBrd2FyZ3MucG9w KCJwb3J0Iiwgc2VsZi5wb3J0KQorLQorLSAgICAgICAgICAgIGlmIGhvc3QgYW5kICI6IiBpbiBo b3N0IGFuZCBob3N0WzBdICE9ICJbIjoKKy0gICAgICAgICAgICAgICAgIyBJUHY2IGFkZHJlc3Nl cyBuZWVkIHRvIGJlIGVzY2FwZWQgd2l0aGluIHNxdWFyZSBicmFja2V0cy4KKy0gICAgICAgICAg ICAgICAgaG9zdCA9IGYiW3tob3N0fV0iCistCistICAgICAgICAgICAga3dhcmdzWyJuZXRsb2Mi XSA9ICgKKy0gICAgICAgICAgICAgICAgZiJ7aG9zdH06e3BvcnR9Ii5lbmNvZGUoImFzY2lpIikK Ky0gICAgICAgICAgICAgICAgaWYgcG9ydCBpcyBub3QgTm9uZQorLSAgICAgICAgICAgICAgICBl bHNlIGhvc3QuZW5jb2RlKCJhc2NpaSIpCistICAgICAgICAgICAgKQorLQorLSAgICAgICAgaWYg InVzZXJpbmZvIiBpbiBrd2FyZ3Mgb3IgIm5ldGxvYyIgaW4ga3dhcmdzOgorLSAgICAgICAgICAg ICMgQ29uc29saWRhdGUgInVzZXJpbmZvIiBhbmQgIm5ldGxvYyIgaW50byBhdXRob3JpdHkuCist ICAgICAgICAgICAgdXNlcmluZm8gPSAoa3dhcmdzLnBvcCgidXNlcmluZm8iLCBzZWxmLnVzZXJp bmZvKSBvciBiIiIpLmRlY29kZSgiYXNjaWkiKQorLSAgICAgICAgICAgIG5ldGxvYyA9IChrd2Fy Z3MucG9wKCJuZXRsb2MiLCBzZWxmLm5ldGxvYykgb3IgYiIiKS5kZWNvZGUoImFzY2lpIikKKy0g ICAgICAgICAgICBhdXRob3JpdHkgPSBmInt1c2VyaW5mb31Ae25ldGxvY30iIGlmIHVzZXJpbmZv IGVsc2UgbmV0bG9jCistICAgICAgICAgICAga3dhcmdzWyJhdXRob3JpdHkiXSA9IGF1dGhvcml0 eQorLQorLSAgICAgICAgIyBTdGVwIDMKKy0gICAgICAgICMgPT09PT09CistICAgICAgICAjCist ICAgICAgICAjIFdyYW5nbGUgYW55ICJwYXRoIiwgInF1ZXJ5IiwgInJhd19wYXRoIiBhbmQgInBh cmFtcyIga2V5d29yZHMgaW50bworLSAgICAgICAgIyAicXVlcnkiIGFuZCAicGF0aCIga2V5d29y ZHMgZm9yIGByZmMzOTg2YC4KKy0gICAgICAgIGlmICJyYXdfcGF0aCIgaW4ga3dhcmdzOgorLSAg ICAgICAgICAgICMgSWYgInJhd19wYXRoIiBpcyBpbmNsdWRlZCwgdGhlbiBzcGxpdCBpdCBpbnRv ICJwYXRoIiBhbmQgInF1ZXJ5IiBjb21wb25lbnRzLgorLSAgICAgICAgICAgIHJhd19wYXRoID0g a3dhcmdzLnBvcCgicmF3X3BhdGgiKSBvciBiIiIKKy0gICAgICAgICAgICBwYXRoLCBoYXNfcXVl cnksIHF1ZXJ5ID0gcmF3X3BhdGguZGVjb2RlKCJhc2NpaSIpLnBhcnRpdGlvbigiPyIpCistICAg ICAgICAgICAga3dhcmdzWyJwYXRoIl0gPSBwYXRoCistICAgICAgICAgICAga3dhcmdzWyJxdWVy eSJdID0gcXVlcnkgaWYgaGFzX3F1ZXJ5IGVsc2UgTm9uZQorLQorLSAgICAgICAgZWxzZToKKy0g ICAgICAgICAgICBpZiBrd2FyZ3MuZ2V0KCJwYXRoIikgaXMgbm90IE5vbmU6CistICAgICAgICAg ICAgICAgICMgRW5zdXJlIGBrd2FyZ3NbInBhdGgiXSA9IDx1cmwgcXVvdGVkIHN0cj5gIGZvciBg cmZjMzk4NmAuCistICAgICAgICAgICAgICAgIGt3YXJnc1sicGF0aCJdID0gcXVvdGUoa3dhcmdz WyJwYXRoIl0pCistCistICAgICAgICAgICAgaWYga3dhcmdzLmdldCgicXVlcnkiKSBpcyBub3Qg Tm9uZToKKy0gICAgICAgICAgICAgICAgIyBFbnN1cmUgYGt3YXJnc1sicXVlcnkiXSA9IDxzdHI+ YCBmb3IgYHJmYzM5ODZgLgorLSAgICAgICAgICAgICAgICAjCistICAgICAgICAgICAgICAgICMg Tm90ZSB0aGF0IGAuY29weV93aXRoKHF1ZXJ5PU5vbmUpYCBhbmQgYC5jb3B5X3dpdGgocXVlcnk9 YiIiKWAKKy0gICAgICAgICAgICAgICAgIyBhcmUgc3VidGx5IGRpZmZlcmVudC4gVGhlIGBOb25l YCBzdHlsZSB3aWxsIG5vdCBpbmNsdWRlIGFuIGVtcHR5CistICAgICAgICAgICAgICAgICMgdHJh aWxpbmcgIj8iIGNoYXJhY3Rlci4KKy0gICAgICAgICAgICAgICAga3dhcmdzWyJxdWVyeSJdID0g a3dhcmdzWyJxdWVyeSJdLmRlY29kZSgiYXNjaWkiKQorLQorLSAgICAgICAgICAgIGlmICJwYXJh bXMiIGluIGt3YXJnczoKKy0gICAgICAgICAgICAgICAgIyBSZXBsYWNlIGFueSAicGFyYW1zIiBr ZXl3b3JkIHdpdGggdGhlIHJhdyAicXVlcnkiIGluc3RlYWQuCistICAgICAgICAgICAgICAgICMK Ky0gICAgICAgICAgICAgICAgIyBFbnN1cmUgdGhhdCBlbXB0eSBwYXJhbXMgdXNlIGBrd2FyZ3Nb InF1ZXJ5Il0gPSBOb25lYCByYXRoZXIKKy0gICAgICAgICAgICAgICAgIyB0aGFuIGBrd2FyZ3Nb InF1ZXJ5Il0gPSAiImAsIHNvIHRoYXQgZ2VuZXJhdGVkIFVSTHMgZG8gbm90CistICAgICAgICAg ICAgICAgICMgaW5jbHVkZSBhbiBlbXB0eSB0cmFpbGluZyAiPyIuCistICAgICAgICAgICAgICAg IHBhcmFtcyA9IGt3YXJncy5wb3AoInBhcmFtcyIpCistICAgICAgICAgICAgICAgIGt3YXJnc1si cXVlcnkiXSA9IE5vbmUgaWYgbm90IHBhcmFtcyBlbHNlIHN0cihRdWVyeVBhcmFtcyhwYXJhbXMp KQorLQorLSAgICAgICAgIyBTdGVwIDQKKy0gICAgICAgICMgPT09PT09CistICAgICAgICAjCist ICAgICAgICAjIEVuc3VyZSBhbnkgZnJhZ21lbnQgY29tcG9uZW50IGlzIHF1b3RlZC4KKy0gICAg ICAgIGlmIGt3YXJncy5nZXQoImZyYWdtZW50IikgaXMgbm90IE5vbmU6CistICAgICAgICAgICAg a3dhcmdzWyJmcmFnbWVudCJdID0gcXVvdGUoa3dhcmdzWyJmcmFnbWVudCJdKQorLQorLSAgICAg ICAgIyBTdGVwIDUKKy0gICAgICAgICMgPT09PT09CistICAgICAgICAjCistICAgICAgICAjIEF0 IHRoaXMgcG9pbnQga3dhcmdzIG1heSBpbmNsdWRlIGtleXMgZm9yICJzY2hlbWUiLCAiYXV0aG9y aXR5IiwgInBhdGgiLAorLSAgICAgICAgIyAicXVlcnkiIGFuZCAiZnJhZ21lbnQiLiBUb2dldGhl ciB0aGVzZSBjb25zdGl0dXRlIHRoZSBlbnRpcmUgVVJMLgorLSAgICAgICAgIworLSAgICAgICAg IyBTZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0zCistICAg ICAgICAjCistICAgICAgICAjICBmb286Ly9leGFtcGxlLmNvbTo4MDQyL292ZXIvdGhlcmU/bmFt ZT1mZXJyZXQjbm9zZQorLSAgICAgICAgIyAgXF8vICAgXF9fX19fX19fX19fX19fL1xfX19fX19f X18vIFxfX19fX19fX18vIFxfXy8KKy0gICAgICAgICMgICB8ICAgICAgICAgICB8ICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgICAgICAgIHwKKy0gICAgICAgICMgc2NoZW1lICAgICBhdXRob3Jp dHkgICAgICAgcGF0aCAgICAgICAgcXVlcnkgICBmcmFnbWVudAorLSAgICAgICAgbmV3X3VybCA9 IFVSTChzZWxmKQorLSAgICAgICAgbmV3X3VybC5fdXJpX3JlZmVyZW5jZSA9IHNlbGYuX3VyaV9y ZWZlcmVuY2UuY29weV93aXRoKCoqa3dhcmdzKQorLSAgICAgICAgaWYgbmV3X3VybC5pc19hYnNv bHV0ZV91cmw6CistICAgICAgICAgICAgbmV3X3VybC5fdXJpX3JlZmVyZW5jZSA9IG5ld191cmwu X3VyaV9yZWZlcmVuY2Uubm9ybWFsaXplKCkKKy0gICAgICAgIHJldHVybiBVUkwobmV3X3VybCkK KysgICAgICAgIHJldHVybiBVUkwoc2VsZiwgKiprd2FyZ3MpCisgCisgICAgIGRlZiBjb3B5X3Nl dF9wYXJhbShzZWxmLCBrZXk6IHN0ciwgdmFsdWU6IHR5cGluZy5BbnkgPSBOb25lKSAtPiAiVVJM IjoKKyAgICAgICAgIHJldHVybiBzZWxmLmNvcHlfd2l0aChwYXJhbXM9c2VsZi5wYXJhbXMuc2V0 KGtleSwgdmFsdWUpKQorQEAgLTUwMSwyMSArMzY5LDkgQEAgZGVmIGpvaW4oc2VsZiwgdXJsOiBV UkxUeXBlcykgLT4gIlVSTCI6CisgICAgICAgICB1cmwgPSB1cmwuam9pbigiL25ldy9wYXRoIikK KyAgICAgICAgIGFzc2VydCB1cmwgPT0gImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tL25ldy9wYXRo IgorICAgICAgICAgIiIiCistICAgICAgICBpZiBzZWxmLmlzX3JlbGF0aXZlX3VybDoKKy0gICAg ICAgICAgICAjIFdvcmthcm91bmQgdG8gaGFuZGxlIHJlbGF0aXZlIFVSTHMsIHdoaWNoIG90aGVy d2lzZSByYWlzZQorLSAgICAgICAgICAgICMgcmZjMzk4Ni5leGNlcHRpb25zLlJlc29sdXRpb25F cnJvciB3aGVuIHVzZWQgYXMgYW4gYXJndW1lbnQKKy0gICAgICAgICAgICAjIGluIGAucmVzb2x2 ZV93aXRoYC4KKy0gICAgICAgICAgICByZXR1cm4gKAorLSAgICAgICAgICAgICAgICBzZWxmLmNv cHlfd2l0aChzY2hlbWU9Imh0dHAiLCBob3N0PSJleGFtcGxlLmNvbSIpCistICAgICAgICAgICAg ICAgIC5qb2luKHVybCkKKy0gICAgICAgICAgICAgICAgLmNvcHlfd2l0aChzY2hlbWU9Tm9uZSwg aG9zdD1Ob25lKQorLSAgICAgICAgICAgICkKKysgICAgICAgIGZyb20gdXJsbGliLnBhcnNlIGlt cG9ydCB1cmxqb2luCisgCistICAgICAgICAjIFdlIGRyb3AgYW55IGZyYWdtZW50IHBvcnRpb24s IGJlY2F1c2UgUkZDIDM5ODYgc3RyaWN0bHkKKy0gICAgICAgICMgdHJlYXRzIFVSTHMgd2l0aCBh IGZyYWdtZW50IHBvcnRpb24gYXMgbm90IGJlaW5nIGFic29sdXRlIFVSTHMuCistICAgICAgICBi YXNlX3VyaSA9IHNlbGYuX3VyaV9yZWZlcmVuY2UuY29weV93aXRoKGZyYWdtZW50PU5vbmUpCist ICAgICAgICByZWxhdGl2ZV91cmwgPSBVUkwodXJsKQorLSAgICAgICAgcmV0dXJuIFVSTChyZWxh dGl2ZV91cmwuX3VyaV9yZWZlcmVuY2UucmVzb2x2ZV93aXRoKGJhc2VfdXJpKS51bnNwbGl0KCkp CisrICAgICAgICByZXR1cm4gVVJMKHVybGpvaW4oc3RyKHNlbGYpLCBzdHIoVVJMKHVybCkpKSkK KyAKKyAgICAgZGVmIF9faGFzaF9fKHNlbGYpIC0+IGludDoKKyAgICAgICAgIHJldHVybiBoYXNo KHN0cihzZWxmKSkKK0BAIC01MjQsMjEgKzM4MCwzMyBAQCBkZWYgX19lcV9fKHNlbGYsIG90aGVy OiB0eXBpbmcuQW55KSAtPiBib29sOgorICAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2Uob3RoZXIs IChVUkwsIHN0cikpIGFuZCBzdHIoc2VsZikgPT0gc3RyKFVSTChvdGhlcikpCisgCisgICAgIGRl ZiBfX3N0cl9fKHNlbGYpIC0+IHN0cjoKKy0gICAgICAgIHJldHVybiB0eXBpbmcuY2FzdChzdHIs IHNlbGYuX3VyaV9yZWZlcmVuY2UudW5zcGxpdCgpKQorKyAgICAgICAgcmV0dXJuIHN0cihzZWxm Ll91cmlfcmVmZXJlbmNlKQorIAorICAgICBkZWYgX19yZXByX18oc2VsZikgLT4gc3RyOgorLSAg ICAgICAgY2xhc3NfbmFtZSA9IHNlbGYuX19jbGFzc19fLl9fbmFtZV9fCistICAgICAgICB1cmxf c3RyID0gc3RyKHNlbGYpCistICAgICAgICBpZiBzZWxmLl91cmlfcmVmZXJlbmNlLnVzZXJpbmZv OgorLSAgICAgICAgICAgICMgTWFzayBhbnkgcGFzc3dvcmQgY29tcG9uZW50IGluIHRoZSBVUkwg cmVwcmVzZW50YXRpb24sIHRvIGxvd2VyIHRoZQorLSAgICAgICAgICAgICMgcmlzayBvZiB1bmlu dGVuZGVkIGxlYWthZ2UsIHN1Y2ggYXMgaW4gZGVidWcgaW5mb3JtYXRpb24gYW5kIGxvZ2dpbmcu CistICAgICAgICAgICAgdXNlcm5hbWUgPSBxdW90ZShzZWxmLnVzZXJuYW1lKQorLSAgICAgICAg ICAgIHVybF9zdHIgPSAoCistICAgICAgICAgICAgICAgIHJmYzM5ODYudXJscGFyc2UodXJsX3N0 cikKKy0gICAgICAgICAgICAgICAgLmNvcHlfd2l0aCh1c2VyaW5mbz1mInt1c2VybmFtZX06W3Nl Y3VyZV0iKQorLSAgICAgICAgICAgICAgICAudW5zcGxpdCgpCistICAgICAgICAgICAgKQorLSAg ICAgICAgcmV0dXJuIGYie2NsYXNzX25hbWV9KHt1cmxfc3RyIXJ9KSIKKysgICAgICAgIHNjaGVt ZSwgdXNlcmluZm8sIGhvc3QsIHBvcnQsIHBhdGgsIHF1ZXJ5LCBmcmFnbWVudCA9IHNlbGYuX3Vy aV9yZWZlcmVuY2UKKysKKysgICAgICAgIGlmICI6IiBpbiB1c2VyaW5mbzoKKysgICAgICAgICAg ICAjIE1hc2sgYW55IHBhc3N3b3JkIGNvbXBvbmVudC4KKysgICAgICAgICAgICB1c2VyaW5mbyA9 IGYne3VzZXJpbmZvLnNwbGl0KCI6IilbMF19OltzZWN1cmVdJworKworKyAgICAgICAgYXV0aG9y aXR5ID0gIiIuam9pbigKKysgICAgICAgICAgICBbCisrICAgICAgICAgICAgICAgIGYie3VzZXJp bmZvfUAiIGlmIHVzZXJpbmZvIGVsc2UgIiIsCisrICAgICAgICAgICAgICAgIGYiW3tob3N0fV0i IGlmICI6IiBpbiBob3N0IGVsc2UgaG9zdCwKKysgICAgICAgICAgICAgICAgZiI6e3BvcnR9IiBp ZiBwb3J0IGlzIG5vdCBOb25lIGVsc2UgIiIsCisrICAgICAgICAgICAgXQorKyAgICAgICAgKQor KyAgICAgICAgdXJsID0gIiIuam9pbigKKysgICAgICAgICAgICBbCisrICAgICAgICAgICAgICAg IGYie3NlbGYuc2NoZW1lfToiIGlmIHNjaGVtZSBlbHNlICIiLAorKyAgICAgICAgICAgICAgICBm Ii8ve2F1dGhvcml0eX0iIGlmIGF1dGhvcml0eSBlbHNlICIiLAorKyAgICAgICAgICAgICAgICBw YXRoLAorKyAgICAgICAgICAgICAgICBmIj97cXVlcnl9IiBpZiBxdWVyeSBpcyBub3QgTm9uZSBl bHNlICIiLAorKyAgICAgICAgICAgICAgICBmIiN7ZnJhZ21lbnR9IiBpZiBmcmFnbWVudCBpcyBu b3QgTm9uZSBlbHNlICIiLAorKyAgICAgICAgICAgIF0KKysgICAgICAgICkKKysKKysgICAgICAg IHJldHVybiBmIntzZWxmLl9fY2xhc3NfXy5fX25hbWVfX30oe3VybCFyfSkiCisgCisgCisgY2xh c3MgUXVlcnlQYXJhbXModHlwaW5nLk1hcHBpbmdbc3RyLCBzdHJdKToKK2RpZmYgLS1naXQgYS9w eXByb2plY3QudG9tbCBiL3B5cHJvamVjdC50b21sCitpbmRleCAzMTY3NzI5MzEuLmIxMWMwMjgy NSAxMDA2NDQKKy0tLSBhL3B5cHJvamVjdC50b21sCisrKysgYi9weXByb2plY3QudG9tbAorQEAg LTMwLDcgKzMwLDcgQEAgY2xhc3NpZmllcnMgPSBbCisgZGVwZW5kZW5jaWVzID0gWworICAgICAi Y2VydGlmaSIsCisgICAgICJodHRwY29yZT49MC4xNS4wLDwwLjE3LjAiLAorLSAgICAicmZjMzk4 NltpZG5hMjAwOF0+PTEuMyw8MiIsCisrICAgICJpZG5hIiwKKyAgICAgInNuaWZmaW8iLAorIF0K KyBkeW5hbWljID0gWyJyZWFkbWUiLCAidmVyc2lvbiJdCmRpZmYgLS1naXQgYS9zcmNwa2dzL3B5 dGhvbjMtaHR0cHgvdGVtcGxhdGUgYi9zcmNwa2dzL3B5dGhvbjMtaHR0cHgvdGVtcGxhdGUKaW5k ZXggZmYwYzFlOTg0NjZlLi43YzliYTkxMWI3ZGIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcHl0aG9u My1odHRweC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3B5dGhvbjMtaHR0cHgvdGVtcGxhdGUKQEAg LTEsMTAgKzEsMTAgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3B5dGhvbjMtaHR0cHgnCiBwa2du YW1lPXB5dGhvbjMtaHR0cHgKIHZlcnNpb249MC4yMy4zCi1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBidWlsZF9zdHlsZT1weXRob24zLXBlcDUxNwotaG9zdG1ha2VkZXBlbmRzPSJweXRob24zLXBv ZXRyeS1jb3JlIGhhdGNobGluZyIKLWRlcGVuZHM9InB5dGhvbjMtcmZjMzk4NiBweXRob24zLWNl cnRpZmkgcHl0aG9uMy1jaGFyc2V0LW5vcm1hbGl6ZXIKK2hvc3RtYWtlZGVwZW5kcz0iaGF0Y2hs aW5nIgorZGVwZW5kcz0icHl0aG9uMy1pZG5hIHB5dGhvbjMtY2VydGlmaSBweXRob24zLWNoYXJz ZXQtbm9ybWFsaXplcgogIHB5dGhvbjMtc25pZmZpbyBweXRob24zLWh0dHBjb3JlIHB5dGhvbjMt Y2xpY2sgcHl0aG9uMy1yaWNoIHB5dGhvbjMtUHlnbWVudHMKICBweXRob24zLWgyIgogc2hvcnRf ZGVzYz0iTmV4dCBnZW5lcmF0aW9uIEhUVFAgY2xpZW50IGZvciBQeXRob24iCg== --===============7362929470743545323==--