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.8 required=5.0 tests=ALL_TRUSTED,PDS_OTHER_BAD_TLD, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.4 Received: (qmail 16205 invoked from network); 15 Feb 2022 00:30:03 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 15 Feb 2022 00:30:03 -0000 Content-Type: multipart/mixed; boundary="===============5247193439589990363==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_Update_libgdal_and_proj_and_rebuild_against_them?= To: ml@inbox.vuxu.org From: ar-jan Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Tue, 15 Feb 2022 01:30:02 +0100 List-Id: Message-ID: <20220215003002.U4PNQjWSwPa0T6Kgcx6_4c0KrtuMdhRCCnj3DoSx1cs@z> GitHub notification mails are now in MIME to allow UTF8. --===============5247193439589990363== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgYXItamFuIGFnYWluc3QgbWFzdGVy IG9uIHRoZSB2b2lkLXBhY2thZ2VzIHJlcG9zaXRvcnkKCmh0dHBzOi8vZ2l0aHViLmNvbS9hci1q YW4vdm9pZC1wYWNrYWdlcyBnZGFsLXByb2oKaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgv dm9pZC1wYWNrYWdlcy9wdWxsLzMxNjg3CgpVcGRhdGUgbGliZ2RhbCBhbmQgcHJvaiBhbmQgcmVi dWlsZCBhZ2FpbnN0IHRoZW0KPCEtLSBNYXJrIGl0ZW1zIHdpdGggW3hdIHdoZXJlIGFwcGxpY2Fi bGUgLS0+DQoNCiMjIyMgR2VuZXJhbA0KLSBbIF0gVGhpcyBpcyBhIG5ldyBwYWNrYWdlIGFuZCBp dCBjb25mb3JtcyB0byB0aGUgW3F1YWxpdHkgcmVxdWlyZW1lbnRzXShodHRwczovL2dpdGh1Yi5j b20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL2Jsb2IvbWFzdGVyL01hbnVhbC5tZCNxdWFsaXR5 LXJlcXVpcmVtZW50cykNCg0KIyMjIyBIYXZlIHRoZSByZXN1bHRzIG9mIHRoZSBwcm9wb3NlZCBj aGFuZ2VzIGJlZW4gdGVzdGVkPw0KLSBbIF0gSSB1c2UgdGhlIHBhY2thZ2VzIGFmZmVjdGVkIGJ5 IHRoZSBwcm9wb3NlZCBjaGFuZ2VzIG9uIGEgcmVndWxhciBiYXNpcyBhbmQgY29uZmlybSB0aGlz IFBSIHdvcmtzIGZvciBtZQ0KLSBbIF0gSSBnZW5lcmFsbHkgZG9uJ3QgdXNlIHRoZSBhZmZlY3Rl ZCBwYWNrYWdlcyBidXQgYnJpZWZseSB0ZXN0ZWQgdGhpcyBQUg0KDQo8IS0tDQpJZiBHaXRIdWIg Q0kgY2Fubm90IGJlIHVzZWQgdG8gdmFsaWRhdGUgdGhlIGJ1aWxkIHJlc3VsdCAoZm9yIGV4YW1w bGUsIGlmIHRoZQ0KYnVpbGQgaXMgbGlrZWx5IHRvIHRha2Ugc2V2ZXJhbCBob3VycyksIG1ha2Ug c3VyZSB0bw0KW3NraXAgQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFj a2FnZXMvYmxvYi9tYXN0ZXIvQ09OVFJJQlVUSU5HLm1kI2NvbnRpbnVvdXMtaW50ZWdyYXRpb24p Lg0KV2hlbiBza2lwcGluZyBDSSwgdW5jb21tZW50IGFuZCBmaWxsIG91dCB0aGUgZm9sbG93aW5n IHNlY3Rpb24uDQpOb3RlOiBmb3IgYnVpbGRzIHRoYXQgYXJlIGxpa2VseSB0byBjb21wbGV0ZSBp biBsZXNzIHRoYW4gMiBob3VycywgaXQgaXMgbm90DQphY2NlcHRhYmxlIHRvIHNraXAgQ0kuDQot LT4NCjwhLS0gDQojIyMjIERvZXMgaXQgYnVpbGQgYW5kIHJ1biBzdWNjZXNzZnVsbHk/IA0KKFBs ZWFzZSBjaG9vc2UgYXQgbGVhc3Qgb25lIG5hdGl2ZSBidWlsZCBhbmQsIGlmIHN1cHBvcnRlZCwg YXQgbGVhc3Qgb25lIGNyb3NzIGJ1aWxkLiBNb3JlIGFyZSBiZXR0ZXIuKQ0KLSBbIF0gSSBidWls dCB0aGlzIFBSIGxvY2FsbHkgZm9yIG15IG5hdGl2ZSBhcmNoaXRlY3R1cmUsIChBUkNILUxJQkMp DQotIFsgXSBJIGJ1aWx0IHRoaXMgUFIgbG9jYWxseSBmb3IgdGhlc2UgYXJjaGl0ZWN0dXJlcyAo aWYgc3VwcG9ydGVkLiBtYXJrIGNyb3NzYnVpbGRzKToNCiAgLSBbIF0gYWFyY2g2NC1tdXNsDQog IC0gWyBdIGFybXY3bA0KICAtIFsgXSBhcm12NmwtbXVzbA0KLS0+DQoKCkEgcGF0Y2ggZmlsZSBm cm9tIGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC8zMTY4 Ny5wYXRjaCBpcyBhdHRhY2hlZA== --===============5247193439589990363== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-gdal-proj-31687.patch" RnJvbSBjYmJjYzVkZGIwNDY2YzNkODIzNDk0MjEwMzU4ZTZiMDM4M2E1MTU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBcmphbiBNb3NzZWwgPGFyamFubW9zc2VsQGdtYWlsLmNvbT4K RGF0ZTogU3VuLCAxMyBGZWIgMjAyMiAyMzoxODo0MyArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDEv MTZdIHByb2o6IHVwZGF0ZSB0byA3LjIuMS4KCi0tLQogY29tbW9uL3NobGlicyAgICAgICAgIHwg IDIgKy0KIHNyY3BrZ3MvcHJvai90ZW1wbGF0ZSB8IDEzICsrKysrKystLS0tLS0KIDIgZmlsZXMg Y2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Nv bW1vbi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IDBjNjAyNjBiNDY0Mi4uYjBmY2ZkMDQ5 MjZlIDEwMDY0NAotLS0gYS9jb21tb24vc2hsaWJzCisrKyBiL2NvbW1vbi9zaGxpYnMKQEAgLTMw NjksNyArMzA2OSw3IEBAIGxpYndpdGhzY3RwLnNvLjEgbGtzY3RwLXRvb2xzLTEuMC4xN18xCiBs aWJuc3NfbGRhcC5zby4yIG5zcy1wYW0tbGRhcGQtMC45LjdfNAogbGlidW5zaGllbGQuc28uMCBs aWJ1bnNoaWVsZC0wLjZfMQogbGliTXlHVUlFbmdpbmUuc28uMy40LjEgbGlibXlndWktMy40LjFf MQotbGlicHJvai5zby4xOCBwcm9qLTYuMy4wXzEKK2xpYnByb2ouc28uMTkgcHJvai03LjIuMV8x CiBsaWJubG9wdC5zby4wIG5sb3B0LTIuNC4yXzEKIGxpYmViLnNvLjE2IGxpYmViLTQuMy4zXzEK IGxpYmNoaXBjYXJkLnNvLjYgbGliY2hpcGNhcmQtNS4wLjRfMQpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9wcm9qL3RlbXBsYXRlIGIvc3JjcGtncy9wcm9qL3RlbXBsYXRlCmluZGV4IDUxYzQ2MzgyMzRi ZC4uZTNmYmQ0MzkwM2M3IDEwMDY0NAotLS0gYS9zcmNwa2dzL3Byb2ovdGVtcGxhdGUKKysrIGIv c3JjcGtncy9wcm9qL3RlbXBsYXRlCkBAIC0xLDE3ICsxLDE5IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdwcm9qJwogcGtnbmFtZT1wcm9qCi12ZXJzaW9uPTYuMy4yCit2ZXJzaW9uPTcuMi4xCiBy ZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1jbWFrZQotY29uZmlndXJlX2FyZ3M9Ii1EUFJPSl9URVNU Uz1PRkYiCitjb25maWd1cmVfYXJncz0iLURCVUlMRF9URVNUSU5HPU9GRiIKIGhvc3RtYWtlZGVw ZW5kcz0icHl0aG9uMyIKLW1ha2VkZXBlbmRzPSJzcWxpdGUtZGV2ZWwiCittYWtlZGVwZW5kcz0i bGliY3VybC1kZXZlbAorIHNxbGl0ZS1kZXZlbAorIHRpZmYtZGV2ZWwiCiBzaG9ydF9kZXNjPSJD YXJ0b2dyYXBoaWMgUHJvamVjdGlvbnMgTGlicmFyeSIKIG1haW50YWluZXI9IkpvaG4gPG1lQGpv aG5ueW5hdG9yLmRldj4iCiBsaWNlbnNlPSJNSVQiCi1ob21lcGFnZT0iaHR0cHM6Ly9wcm9qNC5v cmciCitob21lcGFnZT0iaHR0cHM6Ly9wcm9qLm9yZyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9kb3du bG9hZC5vc2dlby5vcmcvcHJvai9wcm9qLSR7dmVyc2lvbn0udGFyLmd6IgotY2hlY2tzdW09Y2I3 NzZhNzBmNDBjMzU1NzlhZTRiYTA0ZmI0YTM4OGMxZDFjZTAyNWExZGY2MTcxMzUwZGMxOWYyNWI4 MDMxMQorY2hlY2tzdW09YjM4NGY0MmU1ZmI5YzZkMDFmZTVmYTRkMzFkYTJlOTEzMjk2Njg4NjNh Njg0Zjk3YmU1ZDQ3NjBkYmJmMGExNAogCiBwb3N0X2luc3RhbGwoKSB7CiAJdmxpY2Vuc2UgQ09Q WUlORwpAQCAtMjIsNyArMjQsNiBAQCBwcm9qLWRldmVsX3BhY2thZ2UoKSB7CiAJc2hvcnRfZGVz Yys9IiAtIGRldmVsb3BtZW50IGZpbGVzIgogCXBrZ19pbnN0YWxsKCkgewogCQl2bW92ZSB1c3Iv aW5jbHVkZQotCQl2bW92ZSB1c3Ivc2hhcmUvbWFuL21hbjMKIAkJdm1vdmUgdXNyL2xpYi9jbWFr ZQogCQl2bW92ZSAidXNyL2xpYi8qLnNvIgogCX0KCkZyb20gMDI1ZjcyZTk0YjIxOWMzMDcyMzkw MTkwMmI1Mjk5NGEwMWE0ZGIxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTnl4NzAg PG4ueS54QGJsdWV3aW4uY2g+CkRhdGU6IFN1biwgMjAgRGVjIDIwMjAgMTQ6NDk6MzAgKzAxMDAK U3ViamVjdDogW1BBVENIIDAyLzE2XSBOZXcgcGFja2FnZTogbGlic3BhdGlhbGl0ZS01LjAuMQoK LS0tCiBjb21tb24vc2hsaWJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNyAr KysrKysrKwogc3JjcGtncy9saWJzcGF0aWFsaXRlLWRldmVsICAgICAgICAgICAgICAgICAgIHwg IDEgKwogLi4uL3BhdGNoZXMvZGlzYWJsZV9jaGVja19zcWwucGF0Y2ggICAgICAgICAgIHwgMjkg KysrKysrKysrKysrKwogc3JjcGtncy9saWJzcGF0aWFsaXRlL3RlbXBsYXRlICAgICAgICAgICAg ICAgIHwgNDIgKysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCA4OSBpbnNlcnRp b25zKCspCiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJzcGF0aWFsaXRlLWRldmVsCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9saWJzcGF0aWFsaXRlL3BhdGNoZXMvZGlzYWJsZV9j aGVja19zcWwucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xpYnNwYXRpYWxpdGUv dGVtcGxhdGUKCmRpZmYgLS1naXQgYS9jb21tb24vc2hsaWJzIGIvY29tbW9uL3NobGlicwppbmRl eCBiMGZjZmQwNDkyNmUuLjEyMWMzMTY0ZjkyYiAxMDA2NDQKLS0tIGEvY29tbW9uL3NobGlicwor KysgYi9jb21tb24vc2hsaWJzCkBAIC00MTEwLDMgKzQxMTAsMjAgQEAgbGliYXd0X3hhd3Quc28g b3BlbmpkazE3LWpyZS0xNy4wLjErMTJfMQogbGliamF2YS5zbyBvcGVuamRrMTctanJlLTE3LjAu MSsxMl8xCiBsaWJqbGkuc28gb3BlbmpkazE3LWpyZS0xNy4wLjErMTJfMQogbGlianZtLnNvIG9w ZW5qZGsxNy1qcmUtMTcuMC4xKzEyXzEKK2xpYmF2aWYuc28uMTIgbGliYXZpZi0wLjkuMl8xCits aWJrbWxiYXNlLnNvLjEgbGlia21sLTEuMy4wXzEKK2xpYmttbGRvbS5zby4xIGxpYmttbC0xLjMu MF8xCitsaWJrbWxlbmdpbmUuc28uMSBsaWJrbWwtMS4zLjBfMQorbGlia21scmVnaW9uYXRvci5z by4xIGxpYmttbC0xLjMuMF8xCitsaWJrbWx4c2Quc28uMSBsaWJrbWwtMS4zLjBfMQorbGlic3Bh dGlhbGl0ZS5zby43IGxpYnNwYXRpYWxpdGUtNS4wLjBfMQorbGlic3BhdGlhbGluZGV4LnNvLjYg bGlic3BhdGlhbGluZGV4LTEuOS4zXzEKK2xpYmdyYXNzX2dpcy43Ljguc28gZ3Jhc3MtNy44LjVf MQorbGliZ3Jhc3NfcmFzdGVyLjcuOC5zbyBncmFzcy03LjguNV8xCitsaWJncmFzc19ncHJvai43 Ljguc28gZ3Jhc3MtNy44LjVfMQorbGliZ3Jhc3NfZGJtaWNsaWVudC43Ljguc28gZ3Jhc3MtNy44 LjVfMQorbGliZ3Jhc3NfdmVjdG9yLjcuOC5zbyBncmFzcy03LjguNV8xICAgIAorbGliZ3Jhc3Nf ZGJtaWJhc2UuNy44LnNvIGdyYXNzLTcuOC41XzEKK2xpYmdyYXNzX2ltYWdlcnkuNy44LnNvIGdy YXNzLTcuOC41XzEKK2xpYmttbGNvbnZlbmllbmNlLnNvLjEgbGlia21sLTEuMy4wXzEKK21vZF9z cGF0aWFsaXRlLnNvLjcgbGlic3BhdGlhbGl0ZS01LjAuMF8xCmRpZmYgLS1naXQgYS9zcmNwa2dz L2xpYnNwYXRpYWxpdGUtZGV2ZWwgYi9zcmNwa2dzL2xpYnNwYXRpYWxpdGUtZGV2ZWwKbmV3IGZp bGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwLi41ODhiYTJhZDdjMDAKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL2xpYnNwYXRpYWxpdGUtZGV2ZWwKQEAgLTAsMCArMSBAQAorbGli c3BhdGlhbGl0ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvbGlic3BhdGlhbGl0ZS9wYXRjaGVzL2Rpc2FibGVfY2hlY2tfc3FsLnBhdGNoIGIvc3JjcGtn cy9saWJzcGF0aWFsaXRlL3BhdGNoZXMvZGlzYWJsZV9jaGVja19zcWwucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45NTFjMWFjMTcyNGQKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL2xpYnNwYXRpYWxpdGUvcGF0Y2hlcy9kaXNhYmxlX2NoZWNrX3NxbC5w YXRjaApAQCAtMCwwICsxLDI5IEBACitkaXNhYmxlIGNoZWNrX3NxbF9zdG10IHRlc3QKKworaHR0 cHM6Ly93d3cuZ2FpYS1naXMuaXQvZm9zc2lsL2xpYnNwYXRpYWxpdGUvdGt0dmlldy8zZTQ2MzQ5 YmYyYmZjNThiM2UzMDUxZDFmZjdjYWI3M2VlZDE5YTg4P3BsYWludGV4dAorCistLS0gYS90ZXN0 L01ha2VmaWxlLmFtCTIwMjAtMDgtMjMgMTg6NDY6MjMuMDAwMDAwMDAwICswMjAwCisrKysgYi90 ZXN0L01ha2VmaWxlLmFtCTIwMjAtMTItMjIgMTQ6NDU6MTAuMjA2MDg1NTE1ICswMTAwCitAQCAt MzEsMTAgKzMxLDYgQEAKKyAJCWNoZWNrX2dhaWFfdXRmOCBcCisgCQljaGVja19leHRlbnNpb24g XAorIAkJY2hlY2tfcmVjb3Zlcl9nZW9tIFwKKy0JCWNoZWNrX3NxbF9zdG10IFwKKy0JCWNoZWNr X3NxbF9zdG10X3RpbnkgXAorLQkJY2hlY2tfc3FsX3N0bXRfbGVnYWN5IFwKKy0JCWNoZWNrX3Nx bF9zdG10X2V4dGVuc2lvbiBcCisgCQljaGVja19tdWx0aXRocmVhZCBcCisgCQljaGVja192aXJ0 dWFsdGFibGUxIFwKKyAJCWNoZWNrX3ZpcnR1YWx0YWJsZTIgXAorLS0tIGEvdGVzdC9NYWtlZmls ZS5pbgkyMDIwLTA4LTIzIDE4OjQ2OjIzLjAwMDAwMDAwMCArMDIwMAorKysrIGIvdGVzdC9NYWtl ZmlsZS5pbgkyMDIwLTEyLTIyIDE0OjQxOjA2LjQxNjMzNTczNyArMDEwMAorQEAgLTEwMiw5ICsx MDIsNiBAQAorIAljaGVja194bHNfbG9hZCQoRVhFRVhUKSBjaGVja19tYXRoX2Z1bmNzJChFWEVF WFQpIFwKKyAJY2hlY2tfZ2FpYV91dGlsJChFWEVFWFQpIGNoZWNrX2dhaWFfdXRmOCQoRVhFRVhU KSBcCisgCWNoZWNrX2V4dGVuc2lvbiQoRVhFRVhUKSBjaGVja19yZWNvdmVyX2dlb20kKEVYRUVY VCkgXAorLQljaGVja19zcWxfc3RtdCQoRVhFRVhUKSBjaGVja19zcWxfc3RtdF90aW55JChFWEVF WFQpIFwKKy0JY2hlY2tfc3FsX3N0bXRfbGVnYWN5JChFWEVFWFQpIFwKKy0JY2hlY2tfc3FsX3N0 bXRfZXh0ZW5zaW9uJChFWEVFWFQpIGNoZWNrX211bHRpdGhyZWFkJChFWEVFWFQpIFwKKyAJY2hl Y2tfdmlydHVhbHRhYmxlMSQoRVhFRVhUKSBjaGVja192aXJ0dWFsdGFibGUyJChFWEVFWFQpIFwK KyAJY2hlY2tfdmlydHVhbHRhYmxlMyQoRVhFRVhUKSBjaGVja192aXJ0dWFsdGFibGU0JChFWEVF WFQpIFwKKyAJY2hlY2tfdmlydHVhbHRhYmxlNSQoRVhFRVhUKSBjaGVja192aXJ0dWFsdGFibGU2 JChFWEVFWFQpIFwKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGlic3BhdGlhbGl0ZS90ZW1wbGF0ZSBi L3NyY3BrZ3MvbGlic3BhdGlhbGl0ZS90ZW1wbGF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLjJlYTE3MDFkOGFlNgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mv bGlic3BhdGlhbGl0ZS90ZW1wbGF0ZQpAQCAtMCwwICsxLDQyIEBACisjIFRlbXBsYXRlIGZpbGUg Zm9yICdsaWJzcGF0aWFsaXRlJworcGtnbmFtZT1saWJzcGF0aWFsaXRlCit2ZXJzaW9uPTUuMC4x CityZXZpc2lvbj0xCitidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCitjb25maWd1cmVfYXJncz0i LS1kaXNhYmxlLXJ0dG9wbyIKK2hvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBsaWJ4bWwyIgor bWFrZWRlcGVuZHM9ImZyZWV4bC1kZXZlbAorIGdlb3MtZGV2ZWwKKyBsaWJ4bWwyLWRldmVsCisg bWluaXppcC1kZXZlbAorIHByb2otZGV2ZWwKKyBzcWxpdGUtZGV2ZWwKKyB6bGliLWRldmVsIgor ZGVwZW5kcz0ic3FsaXRlIgorc2hvcnRfZGVzYz0iR2Vvc3BhdGlhbCBleHRlbnNpb24gZm9yIFNR TGl0ZSIKK21haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCitsaWNl bnNlPSJNUEwtMS4wIgoraG9tZXBhZ2U9Imh0dHBzOi8vd3d3LmdhaWEtZ2lzLml0L2Zvc3NpbC9s aWJzcGF0aWFsaXRlL2luZGV4IgorZGlzdGZpbGVzPSJodHRwOi8vd3d3LmdhaWEtZ2lzLml0L2dh aWEtc2lucy8ke3BrZ25hbWV9LSR7dmVyc2lvbn0udGFyLmd6IgorY2hlY2tzdW09ZWVjYmM5NDMx MWM3ODAxMmQwNTllYmMwZmFlODZlYTVlZjZlZWNiMTMzMDNlNmU4MmIzNzUzYzFiMzQwOWU5OAor CitDRkxBR1M9Ii1EQUNDRVBUX1VTRV9PRl9ERVBSRUNBVEVEX1BST0pfQVBJX0giCisKK2lmIFsg IiRDUk9TU19CVUlMRCIgXTsgdGhlbgorCWhvc3RtYWtlZGVwZW5kcys9IiBsaWJ0b29sIGdlb3Mt ZGV2ZWwiCitmaQorCitwb3N0X2luc3RhbGwoKSB7CisJdmxpY2Vuc2UgQ09QWUlORworfQorCits aWJzcGF0aWFsaXRlLWRldmVsX3BhY2thZ2UoKSB7CisJZGVwZW5kcz0iJHBrZ25hbWU+PSR7dmVy c2lvbn1fJHtyZXZpc2lvbn0iCisJc2hvcnRfZGVzYys9IiAtIGRldmVsb3BtZW50IGZpbGVzIgor CXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvaW5jbHVkZQorCQl2bW92ZSB1c3IvbGliL3Br Z2NvbmZpZworCQl2bW92ZSAidXNyL2xpYi8qLnNvIgorCQl2bW92ZSAidXNyL2xpYi8qLmEiCisJ fQorfQoKRnJvbSA2YjZiYzkxZDYwNDRhZTg1MTM5NjFlMjUyYmYzZGI5NTI1MzBmYzQzIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOeXg3MCA8bi55LnhAYmx1ZXdpbi5jaD4KRGF0ZTog VGh1LCAyNiBOb3YgMjAyMCAxODo0NzoyNSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDMvMTZdIE5l dyBwYWNrYWdlOiBsaWJrbWwtMS4zLjAKCi0tLQogc3JjcGtncy9saWJrbWwtZGV2ZWwgICAgICAg ICAgICAgICAgICAgfCAgMSArCiBzcmNwa2dzL2xpYmttbC9wYXRjaGVzL05PVU5DUllQVC5wYXRj aCB8IDE3ICsrKysrKysrKysrKysrKysKIHNyY3BrZ3MvbGlia21sL3RlbXBsYXRlICAgICAgICAg ICAgICAgIHwgMjcgKysrKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwg NDUgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGlia21sLWRldmVs CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9saWJrbWwvcGF0Y2hlcy9OT1VOQ1JZUFQucGF0 Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xpYmttbC90ZW1wbGF0ZQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvbGlia21sLWRldmVsIGIvc3JjcGtncy9saWJrbWwtZGV2ZWwKbmV3IGZpbGUg bW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwLi5jZjEyYmUxMDJmNDIKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL2xpYmttbC1kZXZlbApAQCAtMCwwICsxIEBACitsaWJrbWwKXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmttbC9wYXRjaGVz L05PVU5DUllQVC5wYXRjaCBiL3NyY3BrZ3MvbGlia21sL3BhdGNoZXMvTk9VTkNSWVBULnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWI3ZTAxNmMwZTAyCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJrbWwvcGF0Y2hlcy9OT1VOQ1JZUFQucGF0Y2gK QEAgLTAsMCArMSwxNyBAQAorbWluaXppcC9jcnlwdC5oIHdhcyByZW1vdmVkIGZyb20gdGhlIHBh Y2tldCBtaW5pemlwLTEuMi4xMV8yLiAKKword2l0aCAiI2RlZmluZSBOT1VOQ1JZUFQiIGxpYmtt bCBjYW4gYmUgYnVpbHQgd2l0aG91dCAiY3J5cHQuaCIKK2h0dHBzOi8vZ2l0aHViLmNvbS92b2lk LWxpbnV4L3ZvaWQtcGFja2FnZXMvY29tbWl0Lzk1MmFjOTEzY2YKK2h0dHBzOi8vZ2l0aHViLmNv bS9tYWRsZXIvemxpYi9wdWxsLzIyOQorCistLS0gYS9zcmMva21sL2Jhc2UvY29udHJpYi9taW5p emlwL3VuemlwLmMJMjAxNS0xMi0yMSAxODoyMzowNS4wMDAwMDAwMDAgKzAxMDAKKysrKyBiL3Ny Yy9rbWwvYmFzZS9jb250cmliL21pbml6aXAvdW56aXAuYwkyMDIwLTExLTI2IDE1OjQ1OjU1LjAz MzgzNTgxNiArMDEwMAorQEAgLTQyLDcgKzQyLDcgQEAKKyAjaW5jbHVkZSA8emxpYi5oPiAvL1JS CisgI2luY2x1ZGUgInVuemlwLmgiCisgI2luY2x1ZGUgImlvbWVtX3NpbXBsZS5oIgorLSN1bmRl ZiBOT1VOQ1JZUFQKKysjZGVmaW5lIE5PVU5DUllQVAorIAorICNpZmRlZiBTVERDCisgIyAgaW5j bHVkZSA8c3RkZGVmLmg+CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmttbC90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvbGlia21sL3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uYjY3ZWVjZTRkOGJhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJrbWwvdGVt cGxhdGUKQEAgLTAsMCArMSwyNyBAQAorIyBUZW1wbGF0ZSBmaWxlIGZvciAnbGlia21sJworcGtn bmFtZT1saWJrbWwKK3ZlcnNpb249MS4zLjAKK3JldmlzaW9uPTEKK2J1aWxkX3N0eWxlPWNtYWtl CittYWtlZGVwZW5kcz0iYm9vc3QtZGV2ZWwKKyBleHBhdC1kZXZlbAorIG1pbml6aXAtZGV2ZWwK KyB1cmlwYXJzZXItZGV2ZWwKKyB6bGliLWRldmVsIgorc2hvcnRfZGVzYz0iTGlicmFyeSB0byBt YW5pcHVsYXRlIEtNTCBPR0MgZmlsZXMiCittYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZv aWRsaW51eC5vcmc+IgorbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKK2hvbWVwYWdlPSJodHRw czovL2dpdGh1Yi5jb20vbGlia21sL2xpYmttbCIKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIu Y29tL2xpYmttbC9saWJrbWwvYXJjaGl2ZS8ke3ZlcnNpb259LnRhci5neiIKK2NoZWNrc3VtPTg4 OTI0MzllNTU3MDA5MTk2NWFhZmZlMzBiMDg2MzFmZGY3Y2E3ZjgxZjY0OTViNDY0OGYwOTUwZDdl YTc5NjMKKworbGlia21sLWRldmVsX3BhY2thZ2UoKSB7CisJZGVwZW5kcz0iJHtzb3VyY2Vwa2d9 Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgorCXNob3J0X2Rlc2MrPSIgLSBkZXZlbG9wbWVudCBm aWxlcyIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2luY2x1ZGUKKwkJdm1vdmUgdXNy L2xpYi9wa2djb25maWcKKwkJdm1vdmUgdXNyL2xpYi9jbWFrZQorCQl2bW92ZSAidXNyL2xpYi8q LnNvIgorCX0KK30KCkZyb20gOWNkNDJlMTQzYjhmMDlkZmEyNTRiMGQzZGI0MDA2OGNhMWE0Mjlj NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQXJqYW4gTW9zc2VsIDxhcmphbm1vc3Nl bEBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMTQgRmViIDIwMjIgMTM6MDc6NTEgKzAxMDAKU3ViamVj dDogW1BBVENIIDA0LzE2XSBsaWJnZGFsOiB1cGRhdGUgdG8gMy40LjEgYW5kIHJlYnVpbGQgYWdh aW5zdCBwcm9qLTcuMi4xCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMiArLQogLi4uZTE2ZTI3YzVmYzRjNDkxZGViZTUwYmYyYjdmM2U5NGVk MzM0LnBhdGNoIHwgIDUzIC0tLS0tLS0tLQogLi4uYzQ4OTNlNmQxNGQ0ODhkZmVkMjU3NDVkNzlm MTFiZWU0NWI5LnBhdGNoIHwgIDMxIC0tLS0tLQogc3JjcGtncy9saWJnZGFsL3RlbXBsYXRlICAg ICAgICAgICAgICAgICAgICAgIHwgMTA1ICsrKysrKysrKysrKysrKystLQogc3JjcGtncy9weXRo b24zLWdkYWwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIDUgZmlsZXMgY2hhbmdl ZCwgOTUgaW5zZXJ0aW9ucygrKSwgOTcgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQg c3JjcGtncy9saWJnZGFsL3BhdGNoZXMvOWVmOGUxNmUyN2M1ZmM0YzQ5MWRlYmU1MGJmMmI3ZjNl OTRlZDMzNC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGliZ2RhbC9wYXRjaGVz L2FiNzJjNDg5M2U2ZDE0ZDQ4OGRmZWQyNTc0NWQ3OWYxMWJlZTQ1YjkucGF0Y2gKIGNyZWF0ZSBt b2RlIDEyMDAwMCBzcmNwa2dzL3B5dGhvbjMtZ2RhbAoKZGlmZiAtLWdpdCBhL2NvbW1vbi9zaGxp YnMgYi9jb21tb24vc2hsaWJzCmluZGV4IDEyMWMzMTY0ZjkyYi4uNjJiNTczOTg2MDUxIDEwMDY0 NAotLS0gYS9jb21tb24vc2hsaWJzCisrKyBiL2NvbW1vbi9zaGxpYnMKQEAgLTI1MTAsNyArMjUx MCw3IEBAIGxpYnUyZi1ob3N0LnNvLjAgbGlidTJmLWhvc3QtMS4xLjEwXzUKIGxpYnUyZi1zZXJ2 ZXIuc28uMCBsaWJ1MmYtc2VydmVyLTEuMS4wXzkKIGxpYnNxbGNpcGhlci5zby4wIHNxbGNpcGhl ci00LjMuMF8zCiBsaWJndGEuc28uMSBsaWJndGEtMS4yLjBfMQotbGliZ2RhbC5zby4yNiBsaWJn ZGFsLTMuMC40XzkKK2xpYmdkYWwuc28uMzAgbGliZ2RhbC0zLjQuMV8xCiBsaWJvc2dWaWV3ZXIu c28uMTMxIG9zZy0zLjQuMV8xCiBsaWJvc2dTaGFkb3cuc28uMTMxIG9zZy0zLjQuMV8xCiBsaWJv c2dQYXJ0aWNsZS5zby4xMzEgb3NnLTMuNC4xXzEKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliZ2Rh bC9wYXRjaGVzLzllZjhlMTZlMjdjNWZjNGM0OTFkZWJlNTBiZjJiN2YzZTk0ZWQzMzQucGF0Y2gg Yi9zcmNwa2dzL2xpYmdkYWwvcGF0Y2hlcy85ZWY4ZTE2ZTI3YzVmYzRjNDkxZGViZTUwYmYyYjdm M2U5NGVkMzM0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjhlZGViMzJj NzcuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xpYmdkYWwvcGF0Y2hlcy85ZWY4ZTE2ZTI3 YzVmYzRjNDkxZGViZTUwYmYyYjdmM2U5NGVkMzM0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs NTMgKzAsMCBAQAotRnJvbSA5ZWY4ZTE2ZTI3YzVmYzRjNDkxZGViZTUwYmYyYjdmM2U5NGVkMzM0 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1 bHRAc3BhdGlhbHlzLmNvbT4KLURhdGU6IE1vbiwgNSBPY3QgMjAyMCAxMjoxMTo1MiArMDIwMAot U3ViamVjdDogW1BBVENIXSBKUEVHMjAwMDogbWFrZSBpdCBidWlsZCB3aXRoIEphc3BlciAyLjAu MjEgKGZpeGVzICMzMDEyKQotCi0tLS0KLSBnZGFsL2ZybXRzL2pwZWcyMDAwL2pwZWcyMDAwX3Zz aWxfaW8uY3BwIHwgMTYgKysrKysrKysrLS0tLS0tLQotIGdkYWwvZnJtdHMvanBlZzIwMDAvanBl ZzIwMDBkYXRhc2V0LmNwcCAgfCAgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9u cygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dkYWwvZnJtdHMvanBlZzIwMDAv anBlZzIwMDBfdnNpbF9pby5jcHAgYi9nZGFsL2ZybXRzL2pwZWcyMDAwL2pwZWcyMDAwX3ZzaWxf aW8uY3BwCi1pbmRleCAxMGE0Zjk2ZjBlZS4uZWJjYWM0MDEwY2UgMTAwNjQ0Ci0tLS0gYS9mcm10 cy9qcGVnMjAwMC9qcGVnMjAwMF92c2lsX2lvLmNwcAotKysrIGIvZnJtdHMvanBlZzIwMDAvanBl ZzIwMDBfdnNpbF9pby5jcHAKLUBAIC05NCwxMyArOTQsMjQgQEAKLSAqIEZpbGUgc3RyZWFtIG9i amVjdC4KLSBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0rI2lmIGRlZmluZWQoUFJJamFzX3Nl cWVudCkKLStzdGF0aWMgaW50IEpQRUcyMDAwX1ZTSUxfcmVhZChqYXNfc3RyZWFtX29ial90ICpv YmosIGNoYXIgKmJ1ZiwgdW5zaWduZWQgY250KQotKyNlbHNlCi0gc3RhdGljIGludCBKUEVHMjAw MF9WU0lMX3JlYWQoamFzX3N0cmVhbV9vYmpfdCAqb2JqLCBjaGFyICpidWYsIGludCBjbnQpCi0r I2VuZGlmCi0gewotICAgICBqYXNfc3RyZWFtX1ZTSUZMX3QgKmZpbGVvYmogPSBKQVNfQ0FTVChq YXNfc3RyZWFtX1ZTSUZMX3QgKiwgb2JqKTsKLSAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o VlNJRlJlYWRMKGJ1ZiwgMSwgY250LCBmaWxlb2JqLT5mcCkpOwotIH0KLQotKyNpZiBkZWZpbmVk KEpBU19JTkNMVURFX0pQMl9DT0RFQykKLSsvLyBKYXNwZXIgMi4wLjIxCi0rc3RhdGljIGludCBK UEVHMjAwMF9WU0lMX3dyaXRlKGphc19zdHJlYW1fb2JqX3QgKm9iaiwgY29uc3QgY2hhciAqYnVm LCB1bnNpZ25lZCBpbnQgY250KQotKyNlbGlmIGRlZmluZWQoUFJJamFzX3NlcWVudCkKLStzdGF0 aWMgaW50IEpQRUcyMDAwX1ZTSUxfd3JpdGUoamFzX3N0cmVhbV9vYmpfdCAqb2JqLCBjaGFyICpi dWYsIHVuc2lnbmVkIGludCBjbnQpCi0rI2Vsc2UKLSBzdGF0aWMgaW50IEpQRUcyMDAwX1ZTSUxf d3JpdGUoamFzX3N0cmVhbV9vYmpfdCAqb2JqLCBjaGFyICpidWYsIGludCBjbnQpCi0rI2VuZGlm Ci0gewotICAgICBqYXNfc3RyZWFtX1ZTSUZMX3QgKmZpbGVvYmogPSBKQVNfQ0FTVChqYXNfc3Ry ZWFtX1ZTSUZMX3QgKiwgb2JqKTsKLSAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oVlNJRldy aXRlTChidWYsIDEsIGNudCwgZmlsZW9iai0+ZnApKTsKLQotZGlmZiAtLWdpdCBhL2dkYWwvZnJt dHMvanBlZzIwMDAvanBlZzIwMDBkYXRhc2V0LmNwcCBiL2dkYWwvZnJtdHMvanBlZzIwMDAvanBl ZzIwMDBkYXRhc2V0LmNwcAotaW5kZXggYTVhNmIyNThlZDkuLmJkMWU3NzYzMTg2IDEwMDY0NAot LS0tIGEvZnJtdHMvanBlZzIwMDAvanBlZzIwMDBkYXRhc2V0LmNwcAotKysrIGIvZnJtdHMvanBl ZzIwMDAvanBlZzIwMDBkYXRhc2V0LmNwcAotQEAgLTUxMyw3ICs1MTMsNyBAQCBpbnQgSlBFRzIw MDBEYXRhc2V0OjpEZWNvZGVJbWFnZSgpCi0gICAgICAgICBmb3IgKCBpQmFuZCA9IDA7IGlCYW5k IDwgbkJhbmRzOyBpQmFuZCsrICkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBKUEVHMjAwMFJh c3RlckJhbmQqIHBvQmFuZCA9IChKUEVHMjAwMFJhc3RlckJhbmQqKSBHZXRSYXN0ZXJCYW5kKGlC YW5kKzEpOwotLSAgICAgICAgICAgIGlmIChwb0JhbmQtPmlEZXB0aCAhPSBqYXNfaW1hZ2VfY21w dHByZWMoIHBzSW1hZ2UsIGlCYW5kICkgfHwKLSsgICAgICAgICAgICBpZiAocG9CYW5kLT5pRGVw dGggIT0gc3RhdGljX2Nhc3Q8aW50PihqYXNfaW1hZ2VfY21wdHByZWMoIHBzSW1hZ2UsIGlCYW5k ICkpIHx8Ci0gICAgICAgICAgICAgICAgIHBvQmFuZC0+YlNpZ25lZG5lc3MgIT0gamFzX2ltYWdl X2NtcHRzZ25kKCBwc0ltYWdlLCBpQmFuZCApKQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAg ICAgICAgQ1BMRXJyb3IoQ0VfRmFpbHVyZSwgQ1BMRV9BcHBEZWZpbmVkLApkaWZmIC0tZ2l0IGEv c3JjcGtncy9saWJnZGFsL3BhdGNoZXMvYWI3MmM0ODkzZTZkMTRkNDg4ZGZlZDI1NzQ1ZDc5ZjEx YmVlNDViOS5wYXRjaCBiL3NyY3BrZ3MvbGliZ2RhbC9wYXRjaGVzL2FiNzJjNDg5M2U2ZDE0ZDQ4 OGRmZWQyNTc0NWQ3OWYxMWJlZTQ1YjkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDY0M2VhYzg4MmY2Zi4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGliZ2RhbC9wYXRj aGVzL2FiNzJjNDg5M2U2ZDE0ZDQ4OGRmZWQyNTc0NWQ3OWYxMWJlZTQ1YjkucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIGFiNzJjNDg5M2U2ZDE0ZDQ4OGRmZWQyNTc0 NWQ3OWYxMWJlZTQ1YjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFdmVuIFJvdWF1 bHQgPGV2ZW4ucm91YXVsdEBzcGF0aWFseXMuY29tPgotRGF0ZTogTW9uLCAxMCBBdWcgMjAyMCAx NzoyNjo1MyArMDIwMAotU3ViamVjdDogW1BBVENIXSBKUEVHMjAwMDogZml4IGJ1aWxkIHdpdGgg SmFzcGVyIDIuMC4xNyAoZml4ZXMgIzI4NDQpCi0KLS0tLQotIGdkYWwvZnJtdHMvanBlZzIwMDAv anBlZzIwMDBkYXRhc2V0LmNwcCB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlv bnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nZGFsL2ZybXRzL2pwZWcyMDAw L2pwZWcyMDAwZGF0YXNldC5jcHAgYi9nZGFsL2ZybXRzL2pwZWcyMDAwL2pwZWcyMDAwZGF0YXNl dC5jcHAKLWluZGV4IDNlNjY4ZmZlNTAzLi4yZDNmNGU0Njg3NiAxMDA2NDQKLS0tLSBhL2ZybXRz L2pwZWcyMDAwL2pwZWcyMDAwZGF0YXNldC5jcHAKLSsrKyBiL2ZybXRzL2pwZWcyMDAwL2pwZWcy MDAwZGF0YXNldC5jcHAKLUBAIC00ODQsNyArNDg0LDcgQEAgaW50IEpQRUcyMDAwRGF0YXNldDo6 RGVjb2RlSW1hZ2UoKQotICAgICAvKiB0aGUgSlAyIGJveGVzIG1hdGNoIHRoZSBvbmVzIG9mIHRo ZSBjb2RlIHN0cmVhbSAqLwotICAgICBpZiAobkJhbmRzICE9IDApCi0gICAgIHsKLS0gICAgICAg IGlmIChuQmFuZHMgIT0gamFzX2ltYWdlX251bWNtcHRzKCBwc0ltYWdlICkpCi0rICAgICAgICBp ZiAobkJhbmRzICE9IHN0YXRpY19jYXN0PGludD4oamFzX2ltYWdlX251bWNtcHRzKCBwc0ltYWdl ICkpKQotICAgICAgICAgewotICAgICAgICAgICAgIENQTEVycm9yKENFX0ZhaWx1cmUsIENQTEVf QXBwRGVmaW5lZCwKLSAgICAgICAgICAgICAgICAgICAgICAiVGhlIG51bWJlciBvZiBjb21wb25l bnRzIGluZGljYXRlZCBpbiB0aGUgSUhEUiBib3ggKCVkKSBtaXNtYXRjaCAiCi1AQCAtNTk1LDcg KzU5NSw3IEBAIEdEQUxEYXRhc2V0ICpKUEVHMjAwMERhdGFzZXQ6Ok9wZW4oIEdEQUxPcGVuSW5m byAqIHBvT3BlbkluZm8gKQotIAotIHsKLSAgICAgaW50ICAgICAgICAgaUZvcm1hdDsKLS0gICAg Y2hhciAgICAgICAgKnBzekZvcm1hdE5hbWUgPSBudWxscHRyOwotKyAgICBjb25zdCBjaGFyICpw c3pGb3JtYXROYW1lID0gbnVsbHB0cjsKLSAKLSAgICAgaWYgKCFJZGVudGlmeShwb09wZW5JbmZv KSkKLSAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJnZGFs L3RlbXBsYXRlIGIvc3JjcGtncy9saWJnZGFsL3RlbXBsYXRlCmluZGV4IDg3MGFiMjJiNGNiYS4u NWZjYTU3OTk1NGZhIDEwMDY0NAotLS0gYS9zcmNwa2dzL2xpYmdkYWwvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9saWJnZGFsL3RlbXBsYXRlCkBAIC0xLDMwICsxLDEwMCBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnbGliZ2RhbCcKIHBrZ25hbWU9bGliZ2RhbAotdmVyc2lvbj0zLjAuNAotcmV2aXNp b249MTEKK3ZlcnNpb249My40LjEKK3JldmlzaW9uPTEKIHdya3NyYz0iZ2RhbC0ke3ZlcnNpb259 IgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQotY29uZmlndXJlX2FyZ3M9Ii0td2l0aC1saWJs em1hIC0td2l0aC13ZWJwIC0td2l0aC16c3RkIC0td2l0aC1wb2RvZm8gLS13aXRoLW9wZW5jbD15 ZXMiCi1ob3N0bWFrZWRlcGVuZHM9ImdldHRleHQtZGV2ZWwgcGtnLWNvbmZpZyBweXRob24tbnVt cHkganNvbi1jLWRldmVsIgotbWFrZWRlcGVuZHM9ImZyZWV4bC1kZXZlbCBnZW9zLWRldmVsIGph c3Blci1kZXZlbCBqc29uLWMtZGV2ZWwKLSBsaWJjdXJsLWRldmVsIGxpYm9wZW5leHItZGV2ZWwg bGlib3BlbmpwZWcyLWRldmVsIGxpYnBvZG9mby1kZXZlbCBsaWJxaHVsbC1kZXZlbAotIGxpYndl YnAtZGV2ZWwgbGlieG1sMi1kZXZlbCBsaWJ6c3RkLWRldmVsIG5ldGNkZi1kZXZlbCBvcGVuY2wy LWhlYWRlcnMgcGNyZTItZGV2ZWwKLSBwcm9qLWRldmVsIHNxbGl0ZS1kZXZlbCBvY2wtaWNkLWRl dmVsIgorY29uZmlndXJlX2FyZ3M9IgorIC0td2l0aC1leHBhdD15ZXMKKyAtLXdpdGgtaGRmNT15 ZXMKKyAtLXdpdGgta21sPXllcworIC0td2l0aC1saWJsem1hPXllcworIC0td2l0aC1vcGVuY2w9 eWVzCisgLS13aXRoLXBnPXllcworIC0td2l0aC1wb2RvZm89eWVzCisgLS13aXRoLXB5dGhvbj15 ZXMKKyAtLXdpdGgtc3BhdGlhbGl0ZT15ZXMKKyAtLXdpdGgtc3FsaXRlMz15ZXMKKyAtLXdpdGgt d2VicD15ZXMKKyAtLXdpdGgtenN0ZD15ZXMiCitob3N0bWFrZWRlcGVuZHM9ImdldHRleHQtZGV2 ZWwKKyBqc29uLWMtZGV2ZWwKKyBwa2ctY29uZmlnCisgcHl0aG9uMy1udW1weQorIHN3aWciCitt YWtlZGVwZW5kcz0iYm9vc3QtZGV2ZWwKKyBleHBhdC1kZXZlbAorIGZyZWV4bC1kZXZlbAorIGdl b3MtZGV2ZWwKKyBqYXNwZXItZGV2ZWwKKyBqc29uLWMtZGV2ZWwKKyBsaWJjdXJsLWRldmVsCisg bGlib3BlbmV4ci1kZXZlbAorIGxpYm9wZW5qcGVnMi1kZXZlbAorIGxpYnBvZG9mby1kZXZlbAor IGxpYnFodWxsLWRldmVsCisgbGlic3BhdGlhbGl0ZS1kZXZlbAorIGxpYndlYnAtZGV2ZWwKKyBs aWJ4bWwyLWRldmVsCisgbGlienN0ZC1kZXZlbAorIG5ldGNkZi1kZXZlbAorIG9jbC1pY2QtZGV2 ZWwKKyBvcGVuY2wyLWhlYWRlcnMKKyBwY3JlMi1kZXZlbAorIHByb2otZGV2ZWwKKyBweXRob24z LWRldmVsCisgc3FsaXRlLWRldmVsCisgbGlia21sLWRldmVsCisgcG9zdGdyZXNxbC1saWJzLWRl dmVsIgogc2hvcnRfZGVzYz0iR2Vvc3BhdGlhbCBEYXRhIEFic3RyYWN0aW9uIExpYnJhcnkiCiBt YWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iTUlU IgotaG9tZXBhZ2U9Imh0dHA6Ly93d3cuZ2RhbC5vcmcvIgotZGlzdGZpbGVzPSJodHRwOi8vZG93 bmxvYWQub3NnZW8ub3JnL2dkYWwvJHt2ZXJzaW9ufS9nZGFsLSR7dmVyc2lvbn0udGFyLnh6Igot Y2hlY2tzdW09NTU2OWE0ZGFhMWFiY2JiYTQ3YTlkNTM1MTcyZmMzMzUxOTRkOTIxNGZkYjk2Y2Qw ZjEzOWJiNTczMjlhZTI3Nwotc3VicGFja2FnZXM9ImxpYmdkYWwtZGV2ZWwgbGliZ2RhbC10b29s cyIKK2hvbWVwYWdlPSJodHRwczovL2dkYWwub3JnLyIKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9naXRo dWIuY29tL09TR2VvL2dkYWwvcmVsZWFzZXMvZG93bmxvYWQvdiR7dmVyc2lvbn0vZ2RhbC0ke3Zl cnNpb259LnRhci5neiIKK2NoZWNrc3VtPWUzNjAzODdiYzI1ZWMyNDk0MGY0NmFmYmVhZGE0ODAw MmQ3MmM3NGFhZjllY2NmMmE0MGU4ZDc0ZTcxMWEyZTQKK3N1YnBhY2thZ2VzPSJweXRob24zLWdk YWwgbGliZ2RhbC1kZXZlbCBsaWJnZGFsLXRvb2xzIgorCitidWlsZF9vcHRpb25zPSJrbWwgcG9z dGdyZXNxbCIKK2J1aWxkX29wdGlvbnNfZGVmYXVsdD0ia21sIgogCiBpZiBbIC16ICIkQ1JPU1Nf QlVJTEQiIF07IHRoZW4KIAltYWtlZGVwZW5kcys9IiBoZGY1LWRldmVsIgogZmkKK0NGTEFHUz0i LXB0aHJlYWQgLUkke1hCUFNfQ1JPU1NfQkFTRX0vJHtweTNfaW5jfSIKK0xERkxBR1M9Ii1MJHtY QlBTX0NST1NTX0JBU0V9LyR7cHkzX2xpYn0iCisKK3Bvc3RfYnVpbGQoKSB7CisJaWYgWyAiJENS T1NTX0JVSUxEIiBdOyB0aGVuCisJCWV4cG9ydCBQWVBSRUZJWD0iJFhCUFNfQ1JPU1NfQkFTRSIK KwkJZXhwb3J0IFBZVEhPTlBBVEg9JHtYQlBTX0NST1NTX0JBU0V9LyR7cHkzX2xpYn0KKwkJZm9y IGYgaW4gJHtYQlBTX0NST1NTX0JBU0V9LyR7cHkzX2xpYn0vX3N5c2NvbmZpZ2RhdGFfKjsgZG8K KwkJCWY9JHtmIyMqL30KKwkJCWV4cG9ydCBfUFlUSE9OX1NZU0NPTkZJR0RBVEFfTkFNRT0ke2Yl LnB5fQorCQlkb25lCisJZmkKKwlleHBvcnQgTERTSEFSRUQ9IiR7Q0N9ICRDRkxBR1MgLXNoYXJl ZCAkTERGTEFHUyIKKworCXJtIC1mIHN3aWcvcHl0aG9uLypfd3JhcC5jcHAKKwltYWtlIC1DIHN3 aWcvcHl0aG9uIGdlbmVyYXRlCisJY2Qgc3dpZy9weXRob24KKwlweXRob24zIHNldHVwLnB5IGJ1 aWxkCit9CiAKIHBvc3RfaW5zdGFsbCgpIHsKIAl2aW5zdGFsbCBnZGFsLnBjIDY0NCB1c3IvbGli L3BrZ2NvbmZpZwogCXZsaWNlbnNlIExJQ0VOU0UuVFhUCisJaWYgWyAiJENST1NTX0JVSUxEIiBd OyB0aGVuCisJCWV4cG9ydCBQWVBSRUZJWD0iJFhCUFNfQ1JPU1NfQkFTRSIKKwkJZXhwb3J0IFBZ VEhPTlBBVEg9JHtYQlBTX0NST1NTX0JBU0V9LyR7cHkzX2xpYn0KKwkJZm9yIGYgaW4gJHtYQlBT X0NST1NTX0JBU0V9LyR7cHkzX2xpYn0vX3N5c2NvbmZpZ2RhdGFfKjsgZG8KKwkJCWY9JHtmIyMq L30KKwkJCWV4cG9ydCBfUFlUSE9OX1NZU0NPTkZJR0RBVEFfTkFNRT0ke2YlLnB5fQorCQlkb25l CisJZmkKKwlleHBvcnQgTERTSEFSRUQ9IiR7Q0N9ICRDRkxBR1MgLXNoYXJlZCAkTERGTEFHUyIK KworCWNkIHN3aWcvcHl0aG9uCisJcHl0aG9uMyBzZXR1cC5weSBpbnN0YWxsIC0tcHJlZml4PS91 c3IgLS1yb290PSRERVNURElSCiB9CiAKIGxpYmdkYWwtdG9vbHNfcGFja2FnZSgpIHsKQEAgLTQ2 LDMgKzExNiwxNCBAQCBsaWJnZGFsLWRldmVsX3BhY2thZ2UoKSB7CiAJCXZtb3ZlIHVzci9saWIv Ki5zbwogCX0KIH0KKworcHl0aG9uMy1nZGFsX3BhY2thZ2UoKSB7CisJZGVwZW5kcz0iJHtzb3Vy Y2Vwa2d9Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgorCXNob3J0X2Rlc2MrPSIgLSBQeXRob24z IGJpbmRpbmdzIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2Jpbi8qLnB5IgorCQl2 bW92ZSAidXNyL2xpYi9weXRob24qIgorCQl2ZG9jIHN3aWcvcHl0aG9uL1JFQURNRS5yc3QKKwkJ dm1rZGlyIHVzci9zaGFyZS9weXRob24zLWdkYWwKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmNwa2dz L3B5dGhvbjMtZ2RhbCBiL3NyY3BrZ3MvcHl0aG9uMy1nZGFsCm5ldyBmaWxlIG1vZGUgMTIwMDAw CmluZGV4IDAwMDAwMDAwMDAwMC4uMzc3ZDUwZGZjMmI4Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj cGtncy9weXRob24zLWdkYWwKQEAgLTAsMCArMSBAQAorbGliZ2RhbApcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKCkZyb20gMzIyZmNiNzE3N2NhM2E4NmIxNWJmYjllNmY2ZTRkNWMwNDlkMzFl MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQXJqYW4gTW9zc2VsIDxhcmphbm1vc3Nl bEBnbWFpbC5jb20+CkRhdGU6IFN1biwgMjcgSnVuIDIwMjEgMTk6MTY6MzQgKzAyMDAKU3ViamVj dDogW1BBVENIIDA1LzE2XSBwb3N0Z2lzOiB1cGRhdGUgdG8gMy4xLjU7IHJlYnVpbGQgYWdhaW5z dCBsaWJnZGFsLTMuNC4xCiBhbmQgcHJvai03LjIuMQoKLS0tCiBzcmNwa2dzL3Bvc3RnaXMvdGVt cGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9wb3N0Z2lzL3RlbXBsYXRlIGIvc3JjcGtncy9w b3N0Z2lzL3RlbXBsYXRlCmluZGV4IGM4NzhkZTg5Y2ZjYi4uZjUyY2Q2NjU3OTg4IDEwMDY0NAot LS0gYS9zcmNwa2dzL3Bvc3RnaXMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9wb3N0Z2lzL3RlbXBs YXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncG9zdGdpcycKIHBrZ25h bWU9cG9zdGdpcwotdmVyc2lvbj0zLjEuNAordmVyc2lvbj0zLjEuNQogcmV2aXNpb249MQogYnVp bGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0td2l0aC1wcm9qZGlyPSR7 WEJQU19DUk9TU19CQVNFfS91c3IKQEAgLTE5LDcgKzE5LDcgQEAgbGljZW5zZT0iR1BMLTIuMC1v ci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL3Bvc3RnaXMubmV0LyIKIGNoYW5nZWxvZz0iaHR0 cHM6Ly9naXQub3NnZW8ub3JnL2dpdGVhL3Bvc3RnaXMvcG9zdGdpcy9yYXcvdGFnLyR7dmVyc2lv bn0vTkVXUyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9kb3dubG9hZC5vc2dlby5vcmcvcG9zdGdpcy9z b3VyY2UvcG9zdGdpcy0ke3ZlcnNpb259LnRhci5neiIKLWNoZWNrc3VtPWRjOGUzZmU4YmM1MzJl NDIyZjVkNzI0YzVhN2M0MzdmNjU1NTUxMTcxNmY2NDEwZDRkMmRiOTc2MmUxYTM3OTYKK2NoZWNr c3VtPWZjYjEwZDliNDk5ZmQ3OTM5OWJkOGRiOTBmMGIzMTM4MzdkMDAyMjNkMzAwODBkYWM0MDM0 MTllMDY3ZTRjMDYKIG5vY3Jvc3M9IkZJWE1FOiBDYW5ub3QgcnVuIHRlc3QgcHJvZ3JhbSB0byBk ZXRlcm1pbmUgUFJPSiB2ZXJzaW9uIgogCiBwcmVfY29uZmlndXJlKCkgewoKRnJvbSBjOWIwMjE2 ZjE2ZmU4NTM2NjdkNTFlNDU1YWYzYzhjYTQyMDMyYzgwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiBBcmphbiBNb3NzZWwgPGFyamFubW9zc2VsQGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAx NCBGZWIgMjAyMiAxMzoyMjo1OSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDYvMTZdIHBvc3RnaXMt cG9zdGdyZXNxbDEzOiB1cGRhdGUgdG8gMy4xLjU7IHJlYnVpbGQgYWdhaW5zdAogbGliZ2RhbC0z LjQuMSBhbmQgcHJvai03LjIuMQoKLS0tCiBzcmNwa2dzL3Bvc3RnaXMtcG9zdGdyZXNxbDEzL3Rl bXBsYXRlIHwgNiArKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9wb3N0Z2lzLXBvc3RncmVzcWwxMy90ZW1w bGF0ZSBiL3NyY3BrZ3MvcG9zdGdpcy1wb3N0Z3Jlc3FsMTMvdGVtcGxhdGUKaW5kZXggNzA2Yzhm Yjk2ODEwLi5hMGY1Yzg5ZWY0ZGEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcG9zdGdpcy1wb3N0Z3Jl c3FsMTMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9wb3N0Z2lzLXBvc3RncmVzcWwxMy90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3Bvc3RnaXMtcG9zdGdyZXNx bDEzJwogcGtnbmFtZT1wb3N0Z2lzLXBvc3RncmVzcWwxMwotdmVyc2lvbj0zLjEuNAotcmV2aXNp b249MgordmVyc2lvbj0zLjEuNQorcmV2aXNpb249MQogd3Jrc3JjPSJwb3N0Z2lzLSR7dmVyc2lv bn0iCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iCkBAIC0yMCw3 ICsyMCw3IEBAIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9w b3N0Z2lzLm5ldC8iCiBjaGFuZ2Vsb2c9Imh0dHBzOi8vZ2l0Lm9zZ2VvLm9yZy9naXRlYS9wb3N0 Z2lzL3Bvc3RnaXMvcmF3L3RhZy8ke3ZlcnNpb259L05FV1MiCiBkaXN0ZmlsZXM9Imh0dHBzOi8v ZG93bmxvYWQub3NnZW8ub3JnL3Bvc3RnaXMvc291cmNlL3Bvc3RnaXMtJHt2ZXJzaW9ufS50YXIu Z3oiCi1jaGVja3N1bT1kYzhlM2ZlOGJjNTMyZTQyMmY1ZDcyNGM1YTdjNDM3ZjY1NTU1MTE3MTZm NjQxMGQ0ZDJkYjk3NjJlMWEzNzk2CitjaGVja3N1bT1mY2IxMGQ5YjQ5OWZkNzkzOTliZDhkYjkw ZjBiMzEzODM3ZDAwMjIzZDMwMDgwZGFjNDAzNDE5ZTA2N2U0YzA2CiBub2Nyb3NzPSJGSVhNRTog Q2Fubm90IHJ1biB0ZXN0IHByb2dyYW0gdG8gZGV0ZXJtaW5lIFBST0ogdmVyc2lvbiIKIAogcHJl X2NvbmZpZ3VyZSgpIHsKCkZyb20gM2Y0MDg0ZTM3YWIxMGI2NDEwZjcxNzI1MzA1MDI2Zjg4OTcy MGRhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQXJqYW4gTW9zc2VsIDxhcmphbm1v c3NlbEBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMTQgRmViIDIwMjIgMTM6MjY6NTkgKzAxMDAKU3Vi amVjdDogW1BBVENIIDA3LzE2XSBwb3N0Z2lzLXBvc3RncmVzcWwxNDogdXBkYXRlIHRvIDMuMS41 OyByZWJ1aWxkIGFnYWluc3QKIGxpYmdkYWwtMy40LjEgYW5kIHByb2otNy4yLjEKCi0tLQogc3Jj cGtncy9wb3N0Z2lzLXBvc3RncmVzcWwxNC90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5n ZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dz L3Bvc3RnaXMtcG9zdGdyZXNxbDE0L3RlbXBsYXRlIGIvc3JjcGtncy9wb3N0Z2lzLXBvc3RncmVz cWwxNC90ZW1wbGF0ZQppbmRleCA2Y2U0MjMxYjE3MjYuLmFkOGQwYzVjNDI1MyAxMDA2NDQKLS0t IGEvc3JjcGtncy9wb3N0Z2lzLXBvc3RncmVzcWwxNC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3Bv c3RnaXMtcG9zdGdyZXNxbDE0L3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAncG9zdGdpcy1wb3N0Z3Jlc3FsMTQnCiBwa2duYW1lPXBvc3RnaXMtcG9zdGdyZXNx bDE0Ci12ZXJzaW9uPTMuMS40Cit2ZXJzaW9uPTMuMS41CiByZXZpc2lvbj0xCiB3cmtzcmM9InBv c3RnaXMtJHt2ZXJzaW9ufSIKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKQEAgLTIwLDcgKzIw LDcgQEAgbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL3Bvc3Rn aXMubmV0LyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9naXQub3NnZW8ub3JnL2dpdGVhL3Bvc3RnaXMv cG9zdGdpcy9yYXcvdGFnLyR7dmVyc2lvbn0vTkVXUyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9kb3du bG9hZC5vc2dlby5vcmcvcG9zdGdpcy9zb3VyY2UvcG9zdGdpcy0ke3ZlcnNpb259LnRhci5neiIK LWNoZWNrc3VtPWRjOGUzZmU4YmM1MzJlNDIyZjVkNzI0YzVhN2M0MzdmNjU1NTUxMTcxNmY2NDEw ZDRkMmRiOTc2MmUxYTM3OTYKK2NoZWNrc3VtPWZjYjEwZDliNDk5ZmQ3OTM5OWJkOGRiOTBmMGIz MTM4MzdkMDAyMjNkMzAwODBkYWM0MDM0MTllMDY3ZTRjMDYKIG5vY3Jvc3M9IkZJWE1FOiBDYW5u b3QgcnVuIHRlc3QgcHJvZ3JhbSB0byBkZXRlcm1pbmUgUFJPSiB2ZXJzaW9uIgogCiBwcmVfY29u ZmlndXJlKCkgewoKRnJvbSAyOTkzZjEyYTZmY2QyOWMxMGJiMjk4NTE5YTcxMTllNjVhNDEwMTM1 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBcmphbiBNb3NzZWwgPGFyamFubW9zc2Vs QGdtYWlsLmNvbT4KRGF0ZTogTW9uLCA5IEF1ZyAyMDIxIDE5OjUzOjE3ICswMjAwClN1YmplY3Q6 IFtQQVRDSCAwOC8xNl0gd3hQeXRob240OiBiYWNrcG9ydCBwYXRjaGVzLCBhbmQgZml4IHRlc3Rz CgpCYWNrcG9ydGVkIHBhdGNoZXM6Ci0gd3hQc2V1ZG9EQyBHSUwKLSBQeXRob24gMy4xMCBBR1cg RmxhdE5vdGVib29rIHBhdGNoCi0gUHl0aG9uIDMuMTAgU2Nyb2xsZWRXaW5kb3cgYXJndW1lbnQg dHlwZXMKLSBQeXRob24gMy4xMCBJbnRlZ2VyIGRpdmlzaW9uCi0gd3guV2luZG93SUQgYW5kIHd4 LlJlZ2lvbiBhcmd1bWVudHMKLS0tCiAuLi4vcGF0Y2hlcy8wMDAyLVB5dGhvbi0zLjEwLWlzc3Vl cy5wYXRjaCAgICAgfCAzMzE3ICsrKysrKysrKysrKysrKysrCiAuLi4vMDAwMy1QeXRob24tMy4x MC1BR1ctRmxhdE5vdGVib29rLnBhdGNoICAgfCAgIDU3ICsKIC4uLi9wYXRjaGVzL3Jlc3RvcmUt Z2lsLXBzZXVkb2RjLnBhdGNoICAgICAgICB8ICAgNTIgKwogc3JjcGtncy93eFB5dGhvbjQvdGVt cGxhdGUgICAgICAgICAgICAgICAgICAgIHwgICAgMyArLQogNCBmaWxlcyBjaGFuZ2VkLCAzNDI4 IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L3d4UHl0aG9uNC9wYXRjaGVzLzAwMDItUHl0aG9uLTMuMTAtaXNzdWVzLnBhdGNoCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjcGtncy93eFB5dGhvbjQvcGF0Y2hlcy8wMDAzLVB5dGhvbi0zLjEwLUFH Vy1GbGF0Tm90ZWJvb2sucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3d4UHl0aG9u NC9wYXRjaGVzL3Jlc3RvcmUtZ2lsLXBzZXVkb2RjLnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy93eFB5dGhvbjQvcGF0Y2hlcy8wMDAyLVB5dGhvbi0zLjEwLWlzc3Vlcy5wYXRjaCBiL3NyY3Br Z3Mvd3hQeXRob240L3BhdGNoZXMvMDAwMi1QeXRob24tMy4xMC1pc3N1ZXMucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42Yzg3ZmY5NjdkMDEKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL3d4UHl0aG9uNC9wYXRjaGVzLzAwMDItUHl0aG9uLTMuMTAtaXNz dWVzLnBhdGNoCkBAIC0wLDAgKzEsMzMxNyBAQAorRnJvbSBmNTVhMTdjMmQzYjMzNmM4MmZiNDRm NzgxNmVjNjMyMTk4NDdmNGNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2NvdHQg VGFsYmVydCA8c3d0QHRlY2hpZS5uZXQ+CitEYXRlOiBEZWMgMjIgMjAyMSAyMDoyMzo1NCArMDAw MAorU3ViamVjdDogRml4IGEgYnVuY2ggb2YgUHl0aG9uIDMuMTAgaXNzdWVzCisKKworLS0tCisK K2RpZmYgLS1naXQgYS8wZDQ0OTYyNmQ2ZDI5OGFkOTZlYmQxZDUxNGQwZTQyODMzYmNlNDcwLnBh dGNoIGIvMGQ0NDk2MjZkNmQyOThhZDk2ZWJkMWQ1MTRkMGU0MjgzM2JjZTQ3MC5wYXRjaAorbmV3 IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmQyY2NkZGMKKy0tLSAvZGV2L251bGwK KysrKyBiLzBkNDQ5NjI2ZDZkMjk4YWQ5NmViZDFkNTE0ZDBlNDI4MzNiY2U0NzAucGF0Y2gKK0BA IC0wLDAgKzEsMjIgQEAKKytGcm9tIDBkNDQ5NjI2ZDZkMjk4YWQ5NmViZDFkNTE0ZDBlNDI4MzNi Y2U0NzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCisrRnJvbTogQ2Fyb2xpbmEgRmVoZXIgZGEg U2lsdmEgPGNhcm9sZnN1QGdtYWlsLmNvbT4KKytEYXRlOiBUdWUsIDE2IE5vdiAyMDIxIDAxOjI0 OjMxICswMDAwCisrU3ViamVjdDogW1BBVENIXSBGaXhlZCBpbnRlZ2VyIGRpdmlzaW9uIGluIFB5 dGhvbiAzCisrCisrLS0tCisrIHd4L2xpYi9zdGF0dGV4dC5weSB8IDIgKy0KKysgMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisrCisrZGlmZiAtLWdpdCBhL3d4 L2xpYi9zdGF0dGV4dC5weSBiL3d4L2xpYi9zdGF0dGV4dC5weQorK2luZGV4IDJjZmI2ZTY1YS4u ZTYwNmU1YTg5IDEwMDY0NAorKy0tLSBhL3d4L2xpYi9zdGF0dGV4dC5weQorKysrKyBiL3d4L2xp Yi9zdGF0dGV4dC5weQorK0BAIC0zMDIsNyArMzAyLDcgQEAgZGVmIE9uUGFpbnQoc2VsZiwgZXZl bnQpOgorKyAgICAgICAgICAgICBpZiBzdHlsZSAmIHd4LkFMSUdOX1JJR0hUOgorKyAgICAgICAg ICAgICAgICAgeCA9IHdpZHRoIC0gdworKyAgICAgICAgICAgICBpZiBzdHlsZSAmIHd4LkFMSUdO X0NFTlRFUjoKKystICAgICAgICAgICAgICAgIHggPSAod2lkdGggLSB3KS8yCisrKyAgICAgICAg ICAgICAgICB4ID0gKHdpZHRoIC0gdykvLzIKKysgICAgICAgICAgICAgZGMuRHJhd1RleHQobGlu ZSwgeCwgeSkKKysgICAgICAgICAgICAgeSArPSBoCisrIAorZGlmZiAtLWdpdCBhLzNlYjllYjMy ZGMzMjg1NDM1MDM5ZjZjNDIwYzM5ODY2NTM3MmExYWQucGF0Y2ggYi8zZWI5ZWIzMmRjMzI4NTQz NTAzOWY2YzQyMGMzOTg2NjUzNzJhMWFkLnBhdGNoCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5k ZXggMDAwMDAwMC4uMDhlNThhMAorLS0tIC9kZXYvbnVsbAorKysrIGIvM2ViOWViMzJkYzMyODU0 MzUwMzlmNmM0MjBjMzk4NjY1MzcyYTFhZC5wYXRjaAorQEAgLTAsMCArMSw4NCBAQAorK0Zyb20g M2ViOWViMzJkYzMyODU0MzUwMzlmNmM0MjBjMzk4NjY1MzcyYTFhZCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKKytGcm9tOiBHbGVuIFdoaXRuZXkgPGdsZW5Ac3R1ZGlvaW5maW5pdHkub3JnPgor K0RhdGU6IFR1ZSwgMzEgQXVnIDIwMjEgMTE6MDY6MjcgLTA3MDAKKytTdWJqZWN0OiBbUEFUQ0hd IGZpeDogQ29ycmVjdCB0eXBlcyBvZiBhcmd1bWVudHMgdG8KKysgU2Nyb2xsZWRXaW5kb3cuU2V0 U2Nyb2xsYmFycworKworKy0tLQorKyBkZW1vL01hc2sucHkgICAgICAgICAgICAgICAgICAgfCAg MiArLQorKyBkZW1vL09HTC5weSAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorKyB3eC9saWIv YWd3L3VsdGltYXRlbGlzdGN0cmwucHkgfCAxNCArKysrKysrLS0tLS0tLQorKyAzIGZpbGVzIGNo YW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKKysKKytkaWZmIC0tZ2l0IGEv ZGVtby9NYXNrLnB5IGIvZGVtby9NYXNrLnB5CisraW5kZXggNWYwYzJjZGRlLi4xMDliOGYzMGIg MTAwNjQ0CisrLS0tIGEvZGVtby9NYXNrLnB5CisrKysrIGIvZGVtby9NYXNrLnB5CisrQEAgLTU2 LDcgKzU2LDcgQEAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6CisrICAgICAgICAgbWFzayA9 IHd4Lk1hc2soc2VsZi5ibXBfd2l0aGNvbG91cm1hc2ssIHd4LldISVRFKQorKyAgICAgICAgIHNl bGYuYm1wX3dpdGhjb2xvdXJtYXNrLlNldE1hc2sobWFzaykKKysgCisrLSAgICAgICAgc2VsZi5T ZXRTY3JvbGxiYXJzKDIwLCAyMCwgNzAwLzIwLCA0NjAvMjApCisrKyAgICAgICAgc2VsZi5TZXRT Y3JvbGxiYXJzKDIwLCAyMCwgNzAwLy8yMCwgNDYwLy8yMCkKKysgCisrICAgICAgICAgc2VsZi5C aW5kKHd4LkVWVF9QQUlOVCwgc2VsZi5PblBhaW50KQorKyAKKytkaWZmIC0tZ2l0IGEvZGVtby9P R0wucHkgYi9kZW1vL09HTC5weQorK2luZGV4IDcyY2E1NDNkZC4uZDQ3NWU1MDExIDEwMDY0NAor Ky0tLSBhL2RlbW8vT0dMLnB5CisrKysrIGIvZGVtby9PR0wucHkKKytAQCAtMjcyLDcgKzI3Miw3 IEBAIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIGxvZywgZnJhbWUpOgorKyAKKysgICAgICAg ICBtYXhXaWR0aCAgPSAxMDAwCisrICAgICAgICAgbWF4SGVpZ2h0ID0gMTAwMAorKy0gICAgICAg IHNlbGYuU2V0U2Nyb2xsYmFycygyMCwgMjAsIG1heFdpZHRoLzIwLCBtYXhIZWlnaHQvMjApCisr KyAgICAgICAgc2VsZi5TZXRTY3JvbGxiYXJzKDIwLCAyMCwgbWF4V2lkdGgvLzIwLCBtYXhIZWln aHQvLzIwKQorKyAKKysgICAgICAgICBzZWxmLmxvZyA9IGxvZworKyAgICAgICAgIHNlbGYuZnJh bWUgPSBmcmFtZQorK2RpZmYgLS1naXQgYS93eC9saWIvYWd3L3VsdGltYXRlbGlzdGN0cmwucHkg Yi93eC9saWIvYWd3L3VsdGltYXRlbGlzdGN0cmwucHkKKytpbmRleCBjNjA4Njc2ODQuLjE0ZmM0 MWY4NiAxMDA2NDQKKystLS0gYS93eC9saWIvYWd3L3VsdGltYXRlbGlzdGN0cmwucHkKKysrKysg Yi93eC9saWIvYWd3L3VsdGltYXRlbGlzdGN0cmwucHkKKytAQCAtOTY1NCw4ICs5NjU0LDggQEAg ZGVmIFJlY2FsY3VsYXRlUG9zaXRpb25zKHNlbGYsIG5vUmVmcmVzaD1GYWxzZSk6CisrICAgICAg ICAgICAgICAgICBzZWxmLl9saW5lc1BlclBhZ2UgPSBjbGllbnRIZWlnaHQvL2xpbmVIZWlnaHQK KysgCisrICAgICAgICAgICAgICAgICBzZWxmLlNldFNjcm9sbGJhcnMoU0NST0xMX1VOSVRfWCwg bGluZUhlaWdodCwKKystICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5H ZXRIZWFkZXJXaWR0aCgpLWRlY3JlbWVudCkvU0NST0xMX1VOSVRfWCwKKystICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoZW50aXJlSGVpZ2h0ICsgbGluZUhlaWdodCAtIDEpL2xp bmVIZWlnaHQsCisrKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuR2V0 SGVhZGVyV2lkdGgoKS1kZWNyZW1lbnQpLy9TQ1JPTExfVU5JVF9YLAorKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChlbnRpcmVIZWlnaHQgKyBsaW5lSGVpZ2h0IC0gMSkvL2xp bmVIZWlnaHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5HZXRT Y3JvbGxQb3Mod3guSE9SSVpPTlRBTCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5HZXRTY3JvbGxQb3Mod3guVkVSVElDQUwpLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFRydWUpCisrQEAgLTk2NzYsOCArOTY3Niw4IEBAIGRlZiBSZWNh bGN1bGF0ZVBvc2l0aW9ucyhzZWxmLCBub1JlZnJlc2g9RmFsc2UpOgorKyAgICAgICAgICAgICAg ICAgICAgIGRlY3JlbWVudCA9IFNDUk9MTF9VTklUX1gKKysgCisrICAgICAgICAgICAgICAgICBz ZWxmLlNldFNjcm9sbGJhcnMoU0NST0xMX1VOSVRfWCwgU0NST0xMX1VOSVRfWSwKKystICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5HZXRIZWFkZXJXaWR0aCgpLWRlY3Jl bWVudCkvU0NST0xMX1VOSVRfWCwKKystICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoZW50aXJlSGVpZ2h0ICsgU0NST0xMX1VOSVRfWSAtIDEpL1NDUk9MTF9VTklUX1ksCisrKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuR2V0SGVhZGVyV2lkdGgoKS1k ZWNyZW1lbnQpLy9TQ1JPTExfVU5JVF9YLAorKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChlbnRpcmVIZWlnaHQgKyBTQ1JPTExfVU5JVF9ZIC0gMSkvL1NDUk9MTF9VTklUX1ks CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5HZXRTY3JvbGxQb3Mo d3guSE9SSVpPTlRBTCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5HZXRTY3JvbGxQb3Mod3guVkVSVElDQUwpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFRydWUpCisrQEAgLTk3MjgsOCArOTcyOCw4IEBAIGRlZiBSZWNhbGN1bGF0ZVBv c2l0aW9ucyhzZWxmLCBub1JlZnJlc2g9RmFsc2UpOgorKyAgICAgICAgICAgICAgICAgICAgICAg ICBsaW5lLl9naS5FeHRlbmRXaWR0aCh3aWR0aE1heCkKKysgCisrICAgICAgICAgICAgICAgICBz ZWxmLlNldFNjcm9sbGJhcnMoU0NST0xMX1VOSVRfWCwgbGluZUhlaWdodCwKKystICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoeCArIFNDUk9MTF9VTklUX1gpL1NDUk9MTF9VTklU X1gsCisrLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHkgKyBsaW5lSGVpZ2h0 KS9saW5lSGVpZ2h0LAorKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4ICsg U0NST0xMX1VOSVRfWCkvL1NDUk9MTF9VTklUX1gsCisrKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHkgKyBsaW5lSGVpZ2h0KS8vbGluZUhlaWdodCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkdldFNjcm9sbFBvcyh3eC5IT1JJWk9OVEFMKSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkdldFNjcm9sbFBvcyh3 eC5WRVJUSUNBTCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSkK KytAQCAtOTc5Nyw3ICs5Nzk3LDcgQEAgZGVmIFJlY2FsY3VsYXRlUG9zaXRpb25zKHNlbGYsIG5v UmVmcmVzaD1GYWxzZSk6CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayAgIyBF dmVyeXRoaW5nIGZpdHMsIG5vIHNlY29uZCB0cnkgcmVxdWlyZWQuCisrIAorKyAgICAgICAgICAg ICAgICAgc2VsZi5TZXRTY3JvbGxiYXJzKFNDUk9MTF9VTklUX1gsIGxpbmVIZWlnaHQsCisrLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVudGlyZVdpZHRoICsgU0NST0xMX1VO SVRfWCkvU0NST0xMX1VOSVRfWCwKKysrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoZW50aXJlV2lkdGggKyBTQ1JPTExfVU5JVF9YKS8vU0NST0xMX1VOSVRfWCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuR2V0U2Nyb2xsUG9zKHd4LkhPUklaT05UQUwpLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCitkaWZmIC0tZ2l0IGEvOTA5NjQyNjYwMzI3 MjY3MmQ5YTY3NmU4YmNkY2FkZjBhMWNmYTFhMi5wYXRjaCBiLzkwOTY0MjY2MDMyNzI2NzJkOWE2 NzZlOGJjZGNhZGYwYTFjZmExYTIucGF0Y2gKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAw MDAwMDAwLi5mMGI5ZjVkCistLS0gL2Rldi9udWxsCisrKysgYi85MDk2NDI2NjAzMjcyNjcyZDlh Njc2ZThiY2RjYWRmMGExY2ZhMWEyLnBhdGNoCitAQCAtMCwwICsxLDE0MyBAQAorK0Zyb20gOTA5 NjQyNjYwMzI3MjY3MmQ5YTY3NmU4YmNkY2FkZjBhMWNmYTFhMiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKKytGcm9tOiBSb2JpbiBEdW5uIDxyb2JpbkBhbGxkdW5uLmNvbT4KKytEYXRlOiBXZWQs IDI2IEZlYiAyMDIwIDExOjEwOjI3IC0wODAwCisrU3ViamVjdDogW1BBVENIXSBBZGQgX19pbmRl eF9fIHRvIHd4LldpbmRvd0lELCBhbmQgX19ib29sX18gdG8gd3guUmVnaW9uCisrCisrLS0tCisr IGV0Zy9yZWdpb24ucHkgICAgICAgICAgICAgIHwgIDUgKysrLS0KKysgZXRnL3dpbmRvd2lkLnB5 ICAgICAgICAgICAgfCAzMiArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQorKyB1bml0 dGVzdHMvdGVzdF93aW5kb3dpZC5weSB8IDIzICsrKysrKysrKysrKysrKysrKysrKy0tCisrIDMg ZmlsZXMgY2hhbmdlZCwgNDEgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCisrCisrZGlm ZiAtLWdpdCBhL2V0Zy9yZWdpb24ucHkgYi9ldGcvcmVnaW9uLnB5CisraW5kZXggMDk4MmMxZmU1 Li5kNWJjNDU3NTkgMTAwNjQ0CisrLS0tIGEvZXRnL3JlZ2lvbi5weQorKysrKyBiL2V0Zy9yZWdp b24ucHkKKytAQCAtODgsMTEgKzg4LDEyIEBAIGRlZiBuZXh0KHNlbGYpOgorKyAgICAgYy5tdXN0 SGF2ZUFwcCgpCisrICAgICBjLmZpbmQoJ29wZXJhdG9yKysnKS5pZ25vcmUoKQorKyAKKystICAg ICMgU0lQIG1hcHMgb3BlcmF0b3IgYm9vbCgpIHRvIF9faW50X18sIGJ1dCBDbGFzc2ljIHVzZWQg X19ub256ZXJvX18uIERvZXMKKystICAgICMgaXQgbWFrZSBhbnkgZGlmZmVyZW5jZSBlaXRoZXIg d2F5PworKyAgICAgYy5maW5kKCdvcGVyYXRvciBib29sJykuaWdub3JlKCkKKysgICAgIGMuYWRk Q3BwTWV0aG9kKCdpbnQnLCAnX19ub256ZXJvX18nLCAnKCknLCAncmV0dXJuIChpbnQpc2VsZi0+ b3BlcmF0b3IgYm9vbCgpOycsCisrICAgICAgICAgICAgICAgICAgICAnUmV0dXJucyB0cnVlIHdo aWxlIHRoZXJlIGFyZSBzdGlsbCByZWN0YW5nbGVzIGF2YWlsYWJsZSBpbiB0aGUgaXRlcmF0aW9u LicpCisrKyAgICBjLmFkZENwcE1ldGhvZCgnaW50JywgJ19fYm9vbF9fJywgJygpJywgJ3JldHVy biAoaW50KXNlbGYtPm9wZXJhdG9yIGJvb2woKTsnLAorKysgICAgICAgICAgICAgICAgICAgJ1Jl dHVybnMgdHJ1ZSB3aGlsZSB0aGVyZSBhcmUgc3RpbGwgcmVjdGFuZ2xlcyBhdmFpbGFibGUgaW4g dGhlIGl0ZXJhdGlvbi4nKQorKysKKysgCisrICAgICBjLmFkZENwcE1ldGhvZCgndm9pZCcsICdO ZXh0JywgJygpJywgJ3NlbGYtPm9wZXJhdG9yKysoKTsnLAorKyAgICAgICAgICAgICAgICAgICAg J01vdmUgdGhlIGl0ZXJhdG9yIHRvIHRoZSBuZXh0IHJlY3RhbmdsZSBpbiB0aGUgcmVnaW9uLicp CisrZGlmZiAtLWdpdCBhL2V0Zy93aW5kb3dpZC5weSBiL2V0Zy93aW5kb3dpZC5weQorK2luZGV4 IDI3YjA0MWIzZC4uZGEyZWQzOTVlIDEwMDY0NAorKy0tLSBhL2V0Zy93aW5kb3dpZC5weQorKysr KyBiL2V0Zy93aW5kb3dpZC5weQorK0BAIC01MywxMiArNTMsMTIgQEAgZGVmIHJ1bigpOgorKyAg ICAgICAgICAgICAgICAgTWV0aG9kRGVmKG5hbWU9J3d4V2luZG93SURSZWYnLCBjbGFzc05hbWU9 J3d4V2luZG93SURSZWYnLCBpc0N0b3I9VHJ1ZSwKKysgICAgICAgICAgICAgICAgICAgICBicmll ZkRvYz0nQ3JlYXRlIHJlZmVyZW5jZSBmcm9tIGFuIElEJywKKysgICAgICAgICAgICAgICAgICAg ICBpdGVtcz1bIFBhcmFtRGVmKHR5cGU9J2ludCcsIG5hbWU9J2lkJykgXSksCisrLSAgICAgICAg ICAgICAgICAKKysrCisrICAgICAgICAgICAgICAgICBNZXRob2REZWYobmFtZT0nd3hXaW5kb3dJ RFJlZicsIGNsYXNzTmFtZT0nd3hXaW5kb3dJRFJlZicsIGlzQ3Rvcj1UcnVlLAorKyAgICAgICAg ICAgICAgICAgICAgIGJyaWVmRG9jPSdDb3B5IGFuIElEIHJlZmVyZW5jZScsCisrICAgICAgICAg ICAgICAgICAgICAgaXRlbXM9WyBQYXJhbURlZih0eXBlPSdjb25zdCB3eFdpbmRvd0lEUmVmJics IG5hbWU9J2lkcmVmJykgXSksCisrICAgICAgICAgICAgICAgICBdKSwKKystICAgICAgICAgICAg CisrKworKyAgICAgICAgICAgICBNZXRob2REZWYobmFtZT0nfnd4V2luZG93SURSZWYnLCBjbGFz c05hbWU9J3d4V2luZG93SURSZWYnLCBpc0R0b3I9VHJ1ZSksCisrIAorKyAgICAgICAgICAgICBN ZXRob2REZWYodHlwZT0naW50JywgbmFtZT0nR2V0VmFsdWUnLAorK0BAIC03MywxMSArNzMsMTMg QEAgZGVmIHJ1bigpOgorKyAgICAgICAgICAgICAiIiIpCisrIAorKyAgICAga2xhc3MuYWRkQ3Bw TWV0aG9kKCdpbnQnLCAnX19pbnRfXycsICcoKScsCisrLSAgICAgICAgZG9jPSJBbGlhcyBmb3Ig R2V0VmFsdWUgYWxsb3dpbmcgdGhlIElEUmVmIHRvIGJlIHBhc3NlZCBhcyB0aGUgV2luZG93SUQg cGFyYW1ldGVyIHdoZW4gY3JlYXRpbmcgd2lkZ2V0cyBvciBldGMuIiwKKystICAgICAgICBib2R5 PSIiIlwKKystICAgICAgICAgICAgcmV0dXJuIHNlbGYtPkdldFZhbHVlKCk7CisrLSAgICAgICAg ICAgICIiIikKKystICAgIAorKysgICAgICAgIGRvYz0iQWxpYXMgZm9yIEdldFZhbHVlIGFsbG93 aW5nIHRoZSBJRFJlZiB0byBiZSBwYXNzZWQgYXMgdGhlIFdpbmRvd0lEIHBhcmFtZXRlciB3aGVu IGNyZWF0aW5nIHdpZGdldHMgb3Igb3RoZXIgcGxhY2VzIGFuIGludGVnZXIgdHlwZSBpcyBuZWVk ZWQuIiwKKysrICAgICAgICBib2R5PSJyZXR1cm4gc2VsZi0+R2V0VmFsdWUoKTsiKQorKysgICAg a2xhc3MuYWRkQ3BwTWV0aG9kKCdpbnQnLCAnX19pbmRleF9fJywgJygpJywKKysrICAgICAgICBk b2M9IlNlZSA6bWV0aDpgX19pbnRfX2AiLAorKysgICAgICAgIGJvZHk9InJldHVybiBzZWxmLT5H ZXRWYWx1ZSgpOyIpCisrKworKysKKysgICAgIGtsYXNzLmFkZENwcE1ldGhvZCgnYm9vbCcsICdf X2VxX18nLCAnKHd4V2luZG93SUQgaWQpJywgInJldHVybiBzZWxmLT5HZXRWYWx1ZSgpID09IGlk OyIpCisrICAgICBrbGFzcy5hZGRDcHBNZXRob2QoJ2Jvb2wnLCAnX19uZV9fJywgJyh3eFdpbmRv d0lEIGlkKScsICJyZXR1cm4gc2VsZi0+R2V0VmFsdWUoKSAhPSBpZDsiKQorKyAgICAga2xhc3Mu YWRkQ3BwTWV0aG9kKCdib29sJywgJ19fbHRfXycsICcod3hXaW5kb3dJRCBpZCknLCAicmV0dXJu IHNlbGYtPkdldFZhbHVlKCkgPCBpZDsiKQorK0BAIC05MiwxNyArOTQsMTcgQEAgZGVmIHJ1bigp OgorKyAgICAgIyBhbmQgZmluaXNoIGl0IHVwIGJ5IGFkZGluZyBpdCB0byB0aGUgbW9kdWxlCisr ICAgICBtb2R1bGUuYWRkSXRlbShrbGFzcykKKysgCisrLSAgICAjIE5vdywgbGV0J3MgYWRkIGEg bmV3IFB5dGhvbiBmdW5jdGlvbiB0byB0aGUgZ2xvYmFsIHNjb3BlIHRoYXQgcmVzZXJ2ZXMgYW4g CisrLSAgICAjIElEIChvciByYW5nZSkgYW5kIHJldHVybnMgYSByZWYgb2JqZWN0IGZvciBpdC4g CisrLSAgICBtb2R1bGUuYWRkUHlGdW5jdGlvbignTmV3SWRSZWYnLCAnKGNvdW50PTEpJywgCisr KyAgICAjIE5vdywgbGV0J3MgYWRkIGEgbmV3IFB5dGhvbiBmdW5jdGlvbiB0byB0aGUgZ2xvYmFs IHNjb3BlIHRoYXQgcmVzZXJ2ZXMgYW4KKysrICAgICMgSUQgKG9yIHJhbmdlKSBhbmQgcmV0dXJu cyBhIHJlZiBvYmplY3QgZm9yIGl0LgorKysgICAgbW9kdWxlLmFkZFB5RnVuY3Rpb24oJ05ld0lk UmVmJywgJyhjb3VudD0xKScsCisrICAgICAgICAgZG9jPSIiIlwKKystICAgICAgICAgICAgUmVz ZXJ2ZXMgYSBuZXcgV2luZG93IElEIChvciByYW5nZSBvZiBXaW5kb3dJRHMpIGFuZCByZXR1cm5z IGEgCisrLSAgICAgICAgICAgIDpjbGFzczpgd3guV2luZG93SURSZWZgIG9iamVjdCAob3IgbGlz dCBvZiB0aGVtKSB0aGF0IHdpbGwgaGVscCAKKysrICAgICAgICAgICAgUmVzZXJ2ZXMgYSBuZXcg V2luZG93IElEIChvciByYW5nZSBvZiBXaW5kb3dJRHMpIGFuZCByZXR1cm5zIGEKKysrICAgICAg ICAgICAgOmNsYXNzOmB3eC5XaW5kb3dJRFJlZmAgb2JqZWN0IChvciBsaXN0IG9mIHRoZW0pIHRo YXQgd2lsbCBoZWxwCisrICAgICAgICAgICAgIG1hbmFnZSB0aGUgcmVzZXJ2YXRpb24gb2YgdGhh dCBJRC4KKysgCisrLSAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gYmUg YSBkcm9wLWluIHJlcGxhY2VtZW50IG9mIHRoZSBvbGQgCisrLSAgICAgICAgICAgIGFuZCBkZXBy ZWNhdGVkIDpmdW5jOmB3eC5OZXdJZGAgZnVuY3Rpb24sIHdpdGggdGhlIGFkZGVkIGJlbmVmaXQg CisrLSAgICAgICAgICAgIHRoYXQgdGhlIElEIHNob3VsZCBuZXZlciBjb25mbGljdCB3aXRoIGFu IGluLXVzZSBJRCBvciBvdGhlciBJRHMgCisrKyAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMg aW50ZW5kZWQgdG8gYmUgYSBkcm9wLWluIHJlcGxhY2VtZW50IG9mIHRoZSBvbGQKKysrICAgICAg ICAgICAgYW5kIGRlcHJlY2F0ZWQgOmZ1bmM6YHd4Lk5ld0lkYCBmdW5jdGlvbiwgd2l0aCB0aGUg YWRkZWQgYmVuZWZpdAorKysgICAgICAgICAgICB0aGF0IHRoZSBJRCBzaG91bGQgbmV2ZXIgY29u ZmxpY3Qgd2l0aCBhbiBpbi11c2UgSUQgb3Igb3RoZXIgSURzCisrICAgICAgICAgICAgIGdlbmVy YXRlZCBieSB0aGlzIGZ1bmN0aW9uLgorKyAgICAgICAgICAgICAiIiIsCisrICAgICAgICAgYm9k eT0iIiJcCisrZGlmZiAtLWdpdCBhL3VuaXR0ZXN0cy90ZXN0X3dpbmRvd2lkLnB5IGIvdW5pdHRl c3RzL3Rlc3Rfd2luZG93aWQucHkKKytpbmRleCA0NTkzZTVhNjkuLmZjMzZjOWViOCAxMDA2NDQK KystLS0gYS91bml0dGVzdHMvdGVzdF93aW5kb3dpZC5weQorKysrKyBiL3VuaXR0ZXN0cy90ZXN0 X3dpbmRvd2lkLnB5CisrQEAgLTMxLDkgKzMxLDkgQEAgZGVmIHRlc3RfbmV3SWRSZWYwMihzZWxm KToKKysgICAgIGRlZiB0ZXN0X25ld0lkUmVmMDMoc2VsZik6CisrICAgICAgICAgIiIiQ2hlY2sg dGhhdCBBdXRvIElEIE1hbmFnZW1lbnQgaXMgZW5hYmxlZCAoLS1lbmFibGUtYXV0b2lkbWFuKSIi IgorKyAgICAgICAgICMgVGhpcyB0ZXN0IGlzIGV4cGVjdGVkIHRvIGZhaWwgaWYgYXV0b0lEIG1h bmdhZ2VtZW50IGlzIHR1cm5lZCBvbgorKy0gICAgICAgICMgYmVjYXVzZSBhIHJlZmVyZW5jZSB0 byB0aGUgSUQgaXMgbm90IGJlaW5nIHNhdmVkLCBzbyBpdCB3aWxsIGJlIAorKysgICAgICAgICMg YmVjYXVzZSBhIHJlZmVyZW5jZSB0byB0aGUgSUQgaXMgbm90IGJlaW5nIHNhdmVkLCBzbyBpdCB3 aWxsIGJlCisrICAgICAgICAgIyB1bnJlc2VydmVkIHdoZW4gdGhlIGZpcnN0IHdpZGdldCBpcyBk ZXN0cm95ZWQuCisrLSAgICAgICAgCisrKworKyAgICAgICAgIGlkID0gd3guV2luZG93Lk5ld0Nv bnRyb2xJZCgpCisrICAgICAgICAgYiA9IHd4LkJ1dHRvbihzZWxmLmZyYW1lLCBpZCwgJ2J1dHRv bicpCisrICAgICAgICAgYi5EZXN0cm95KCkKKytAQCAtNzUsNiArNzUsNyBAQCBkZWYgdGVzdF9X aW5kb3dJRFJlZjAxKHNlbGYpOgorKyAgICAgICAgIHZhbCA9IHJlZjEgPD0gcmVmMgorKyAgICAg ICAgIGFzc2VydCB0eXBlKHZhbCkgPT0gYm9vbAorKyAKKysrCisrICAgICBkZWYgdGVzdF9XaW5k b3dJRFJlZjAyKHNlbGYpOgorKyAgICAgICAgIGQgPSB7d3guTmV3SWRSZWYoKTogJ29uZScsCisr ICAgICAgICAgICAgICB3eC5OZXdJZFJlZigpOiAndHdvJ30KKytAQCAtODIsNiArODMsMjQgQEAg ZGVmIHRlc3RfV2luZG93SURSZWYwMihzZWxmKToKKysgICAgICAgICBmb3IgayBpbiBrZXlzOgor KyAgICAgICAgICAgICB2YWwgPSBkW2tdCisrIAorKysKKysrICAgIGRlZiB0ZXN0X1dpbmRvd0lE UmVmMDMoc2VsZik6CisrKyAgICAgICAgIyBFbnN1cmUgd3guV2luZG93SURSZWYgY2FuIGJlIGNv bnZlcnRlZCB0byBpbnQgd2l0aG91dCB3YXJuaW5nIHdoZW4KKysrICAgICAgICAjIG1ha2luZyBh IGNhbGwgdG8gd2FycnBlZCBtZXRob2QuIEluIFB5My44KyB0aGlzIG1lYW5zIHRoZXJlIG5lZWRz IHRvCisrKyAgICAgICAgIyBiZSBhbiBfX2luZGV4X18gbWV0aG9kLgorKysKKysrICAgICAgICAj IFR1cm4gd2FybmluZ3MgaW50byBleGNlcHRpb25zIHNvIHRoaXMgdGVzdCB3aWxsIGZhaWwgaWYg dGhlcmUgaXMKKysrICAgICAgICAjIGEgd2FybmluZworKysgICAgICAgIGltcG9ydCB3YXJuaW5n cworKysgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignZXJyb3InKQorKysKKysrICAgICAg ICB3aWQgPSB3eC5OZXdJZFJlZigpCisrKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uod2lkLCB3 eC5XaW5kb3dJRFJlZikKKysrCisrKyAgICAgICAgYiA9IHd4LkJ1dHRvbihzZWxmLmZyYW1lLCB3 aWQsICdidXR0b24nKQorKysgICAgICAgIGFzc2VydCBiLkdldElkKCkgPT0gd2lkLkdldElkKCkK KysrCisrKworKyAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIAorKyAKKyAKK2RpZmYgLS1naXQgYS9w eXRob24zLjEwLWZpeGVzLnBhdGNoIGIvcHl0aG9uMy4xMC1maXhlcy5wYXRjaAorbmV3IGZpbGUg bW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjI5ZThjNjEKKy0tLSAvZGV2L251bGwKKysrKyBi L3B5dGhvbjMuMTAtZml4ZXMucGF0Y2gKK0BAIC0wLDAgKzEsMzAzNCBAQAorK0Zyb20gMTczZDA3 OTY4MTBiYjY1ZGU5YmRmZGM2OTQxZDI0YTA0NjI4ZjZjMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKKytGcm9tOiBTY290dCBUYWxiZXJ0IDxzd3RAdGVjaGllLm5ldD4KKytEYXRlOiBXZWQsIDEg RGVjIDIwMjEgMTQ6MTk6MDAgLTA1MDAKKytTdWJqZWN0OiBbUEFUQ0hdIEZpeCBhIGJ1bmNoIG9m IFB5dGhvbiAzLjEwIGlzc3VlcyB3aXRoIHB1cmUtUHl0aG9uIGNsYXNzZXMKKysgYW5kIGRlbW9z CisrCisrSW4gUHl0aG9uIDMuMTAsIGEgY2hhbmdlWzFdIHdhcyBpbXBsZW1lbnRlZCB3aGVyZSBl eHRlbnNpb24gZnVuY3Rpb25zCisrdGhhdCB0YWtlIGludGVnZXIgYXJndW1lbnRzIHdpbGwgbm8g bG9uZ2VyIHNpbGVudGx5IGFjY2VwdCBub24taW50ZWdlcgorK2FyZ3VtZW50cyAoZS5nLiwgZmxv YXRzKSB0aGF0IGNhbiBvbmx5IGJlIGNvbnZlcnRlZCB0byBpbnRlZ2VycyB3aXRoIGEKKytsb3Nz IG9mIHByZWNpc2lvbi4gIFRoaXMgUFIgZml4ZXMgbW9zdCBvZiB0aGVzZSBpc3N1ZXMgaW4gdGhl IHB1cmUtUHl0aG9uCisrY2xhc3NlcyBhbmQgZGVtb3MgYnkgZXhwbGljaXRseSBjb252ZXJ0aW5n IHRoZSBwYXJhbWV0ZXJzIHRvIGludCBiZWZvcmUKKytwYXNzaW5nIHRoZW0gdG8gd3hXaWRnZXRz LiAgVGhlcmUgaXMgbG9zcyBvZiBwcmVjaXNpb24sIGJ1dCB0aGlzIHdhcworK2hhcHBlbmluZyBi ZWZvcmUgKGF1dG9tYXRpY2FsbHkpIGFueXdheSBhcyBtb3N0IHd4V2lkZ2V0cyBEZXZpY2VDb250 ZXh0CisrZnVuY3Rpb25zIG9wZXJhdGUgdXNpbmcgaW50ZWdlcnMuCisrCisrQWRkaXRpb25hbGx5 LCB0aGUgUFIgZml4ZXMgYSBmZXcgc2l6aW5nIGlzc3VlcywgbW9zdGx5IHdpdGggU3BpbkN0cmxz IGJlaW5nCisrdG9vIHNtYWxsIG9uIEdUSzMuCisrCisrVGhpcyBpcyBhbiBleGFtcGxlIG9mIHRo ZSByZWxldmFudCBleGNlcHRpb246CisrVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3Qp OgorKyAgRmlsZSAiL3Vzci9saWI2NC9weXRob24zLjEwL3NpdGUtcGFja2FnZXMvd3gvbGliL2Fn dy9weWdhdWdlLnB5IiwgbGluZSAzNTUsIGluIE9uUGFpbnQKKysgICAgci53aWR0aCA9IHcKKytU eXBlRXJyb3I6ICdmbG9hdCcgb2JqZWN0IGNhbm5vdCBiZSBpbnRlcnByZXRlZCBhcyBhbiBpbnRl Z2VyCisrCisrRml4ZXMgIzIwMzguCisrCisrWzFdIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lz c3VlMzc5OTkKKystLS0KKysgZGVtby9HcmlkTGFiZWxSZW5kZXJlci5weSAgICAgICAgICAgICAg IHwgICA0ICstCisrIGRlbW8vTWFzay5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg NCArLQorKyBkZW1vL092ZXJsYXkucHkgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgLQor KyBkZW1vL1BlbkFuZEJydXNoU3R5bGVzLnB5ICAgICAgICAgICAgICAgfCAgIDIgKy0KKysgZGVt by9Qb3B1cFdpbmRvdy5weSAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCisrIGRlbW8vUHJp bnRGcmFtZXdvcmsucHkgICAgICAgICAgICAgICAgICB8ICAgMiArLQorKyBkZW1vL1Byb3BlcnR5 R3JpZC5weSAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KKysgZGVtby9TaXplcnMucHkgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCisrIGRlbW8vVUlBY3Rpb25TaW11bGF0b3Iu cHkgICAgICAgICAgICAgICB8ICAgMiArLQorKyBkZW1vL2Fndy9BVUkucHkgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgMzIgKysrLS0tLQorKyBkZW1vL2Fndy9NYWNMYXJnZURlbW8ucHkgICAg ICAgICAgICAgICAgfCAgIDQgKy0KKysgZGVtby9hZ3cvUGVha01ldGVyLnB5ICAgICAgICAgICAg ICAgICAgIHwgICA2ICstCisrIGRlbW8vYWd3L1BlcnNpc3RlbnRDb250cm9scy5weSAgICAgICAg ICB8ICAgMiArLQorKyBkZW1vL2Fndy9SaWJib25CYXIucHkgICAgICAgICAgICAgICAgICAgfCAg IDIgKy0KKysgZGVtby9hZ3cvU3BlZWRNZXRlci5weSAgICAgICAgICAgICAgICAgIHwgICAyICst CisrIGRlbW8vYWd3L1N1cGVyVG9vbFRpcC5weSAgICAgICAgICAgICAgICB8ICAgMyArLQorKyBk ZW1vL2Fndy9UaHVtYkRlbW9Db25maWcucHkgICAgICAgICAgICAgfCAgIDEgKworKyBkZW1vL2Fn dy9VbHRpbWF0ZVJlcG9ydERlbW8ucHkgICAgICAgICAgfCAgIDggKy0KKysgZGVtby9hZ3cvV2lu ZG93czdFeHBsb3Jlcl9Db250ZW50cy5weSAgIHwgIDE2ICsrLS0KKysgZGVtby9hZ3cvWm9vbUJh ci5weSAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCisrIHd4L2xpYi9hZ3cvYWR2YW5jZWRz cGxhc2gucHkgICAgICAgICAgICB8ICAgMiArLQorKyB3eC9saWIvYWd3L2F1aS9hdWlfdXRpbGl0 aWVzLnB5ICAgICAgICAgfCAgIDQgKy0KKysgd3gvbGliL2Fndy9hdWkvYXVpYm9vay5weSAgICAg ICAgICAgICAgIHwgICA0ICstCisrIHd4L2xpYi9hZ3cvYmFsbG9vbnRpcC5weSAgICAgICAgICAg ICAgICB8ICAgNCArLQorKyB3eC9saWIvYWd3L2ZsYXRtZW51LnB5ICAgICAgICAgICAgICAgICAg fCAgNjIgKysrKysrLS0tLS0tLQorKyB3eC9saWIvYWd3L2ZsYXRub3RlYm9vay5weSAgICAgICAg ICAgICAgfCAgMTAgKy0tCisrIHd4L2xpYi9hZ3cvZmxvYXRzcGluLnB5ICAgICAgICAgICAgICAg ICB8ICAgMiArLQorKyB3eC9saWIvYWd3L2dyYWRpZW50YnV0dG9uLnB5ICAgICAgICAgICAgfCAg IDggKy0KKysgd3gvbGliL2Fndy9oeXBlcnRyZWVsaXN0LnB5ICAgICAgICAgICAgIHwgICAyICst CisrIHd4L2xpYi9hZ3cva25vYmN0cmwucHkgICAgICAgICAgICAgICAgICB8ICAxMiArLS0KKysg d3gvbGliL2Fndy9sYWJlbGJvb2sucHkgICAgICAgICAgICAgICAgIHwgIDMyICsrKy0tLS0KKysg d3gvbGliL2Fndy9wZWFrbWV0ZXIucHkgICAgICAgICAgICAgICAgIHwgICAyICstCisrIHd4L2xp Yi9hZ3cvcHlnYXVnZS5weSAgICAgICAgICAgICAgICAgICB8ICAgNCArLQorKyB3eC9saWIvYWd3 L3JpYmJvbi9hcnRfYXVpLnB5ICAgICAgICAgICAgfCAgMjIgKystLS0KKysgd3gvbGliL2Fndy9y aWJib24vYXJ0X2ludGVybmFsLnB5ICAgICAgIHwgIDEyICstLQorKyB3eC9saWIvYWd3L3JpYmJv bi9hcnRfbXN3LnB5ICAgICAgICAgICAgfCAgODggKysrKysrKysrLS0tLS0tLS0tLQorKyB3eC9s aWIvYWd3L3JpYmJvbi9iYXIucHkgICAgICAgICAgICAgICAgfCAgIDQgKy0KKysgd3gvbGliL2Fn dy9yaWJib24vYnV0dG9uYmFyLnB5ICAgICAgICAgIHwgICA2ICstCisrIHd4L2xpYi9hZ3cvcmli Ym9uL2dhbGxlcnkucHkgICAgICAgICAgICB8ICAgOCArLQorKyB3eC9saWIvYWd3L3JpYmJvbi9w YW5lbC5weSAgICAgICAgICAgICAgfCAgMTYgKystLQorKyB3eC9saWIvYWd3L3JpYmJvbi90b29s YmFyLnB5ICAgICAgICAgICAgfCAgIDIgKy0KKysgd3gvbGliL2Fndy9zY3JvbGxlZHRodW1ibmFp bC5weSAgICAgICAgIHwgIDI0ICsrKy0tLQorKyB3eC9saWIvYWd3L3NoYXBlZGJ1dHRvbi5weSAg ICAgICAgICAgICAgfCAgMTAgKy0tCisrIHd4L2xpYi9hZ3cvc3BlZWRtZXRlci5weSAgICAgICAg ICAgICAgICB8ICA3MiArKysrKysrKystLS0tLS0tCisrIHd4L2xpYi9hZ3cvc3VwZXJ0b29sdGlw LnB5ICAgICAgICAgICAgICB8ICAyMCArKy0tLQorKyB3eC9saWIvYWd3L3RvYXN0ZXJib3gucHkg ICAgICAgICAgICAgICAgfCAgIDQgKy0KKysgd3gvbGliL2Fndy91bHRpbWF0ZWxpc3RjdHJsLnB5 ICAgICAgICAgIHwgIDIwICsrLS0tCisrIHd4L2xpYi9hZ3cveGxzZ3JpZC5weSAgICAgICAgICAg ICAgICAgICB8ICAgNCArLQorKyB3eC9saWIvYWd3L3pvb21iYXIucHkgICAgICAgICAgICAgICAg ICAgfCAgMTAgKy0tCisrIHd4L2xpYi9hbmFsb2djbG9jay9hbmFsb2djbG9jay5weSAgICAgICB8 ICAgMiArLQorKyB3eC9saWIvYW5hbG9nY2xvY2svaGVscGVycy5weSAgICAgICAgICAgfCAgMjIg KystLS0KKysgd3gvbGliL2FuYWxvZ2Nsb2NrL3NldHVwLnB5ICAgICAgICAgICAgIHwgICA2ICst CisrIHd4L2xpYi9idXR0b25zLnB5ICAgICAgICAgICAgICAgICAgICAgICB8ICAxMCArLS0KKysg d3gvbGliL2NvbG91cmNob29zZXIvcHljb2xvdXJjaG9vc2VyLnB5IHwgICA0ICstCisrIHd4L2xp Yi9jb2xvdXJjaG9vc2VyL3B5cGFsZXR0ZS5weSAgICAgICB8ICAgMiArLQorKyB3eC9saWIvZmxv YXRjYW52YXMvRkNPYmplY3RzLnB5ICAgICAgICAgfCAgIDggKy0KKysgd3gvbGliL2dpem1vcy9s ZWRjdHJsLnB5ICAgICAgICAgICAgICAgIHwgICA4ICstCisrIHd4L2xpYi9pbWFnZWJyb3dzZXIu cHkgICAgICAgICAgICAgICAgICB8ICAgNCArLQorKyB3eC9saWIvb2dsL2Jhc2ljLnB5ICAgICAg ICAgICAgICAgICAgICAgfCAgMTAgKy0tCisrIHd4L2xpYi9vZ2wvYm1wc2hhcGUucHkgICAgICAg ICAgICAgICAgICB8ICAgMiArLQorKyB3eC9saWIvb2dsL2NvbXBvc2l0LnB5ICAgICAgICAgICAg ICAgICAgfCAgIDQgKy0KKysgd3gvbGliL29nbC9kaXZpZGVkLnB5ICAgICAgICAgICAgICAgICAg IHwgICAyICstCisrIHd4L2xpYi9vZ2wvbGluZXMucHkgICAgICAgICAgICAgICAgICAgICB8ICAg MiArLQorKyB3eC9saWIvb2dsL29nbG1pc2MucHkgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0K Kysgd3gvbGliL3Bsb3QvZXhhbXBsZXMvZGVtby5weSAgICAgICAgICAgIHwgICA0ICstCisrIHd4 L2xpYi9wbG90L3Bsb3RjYW52YXMucHkgICAgICAgICAgICAgICB8IDExMCArKysrKysrKysrKyst LS0tLS0tLS0tLS0KKysgd3gvbGliL3Bsb3QvcG9seW9iamVjdHMucHkgICAgICAgICAgICAgIHwg IDIyICsrKy0tCisrIHd4L2xpYi9wb3B1cGN0bC5weSAgICAgICAgICAgICAgICAgICAgICB8ICAg MiArLQorKyB3eC9saWIvc2Nyb2xsZWRwYW5lbC5weSAgICAgICAgICAgICAgICAgfCAgIDIgKy0K Kysgd3gvbGliL3Rocm9iYmVyLnB5ICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICstCisrIHd4 L2xpYi90aWNrZXIucHkgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQorKyA3MSBmaWxl cyBjaGFuZ2VkLCA0MTEgaW5zZXJ0aW9ucygrKSwgMzk4IGRlbGV0aW9ucygtKQorKworK2RpZmYg LS1naXQgYS9kZW1vL0dyaWRMYWJlbFJlbmRlcmVyLnB5IGIvZGVtby9HcmlkTGFiZWxSZW5kZXJl ci5weQorK2luZGV4IDc5NGRkNjRlOC4uMTQ0MGVmNDFiIDEwMDY0NAorKy0tLSBhL2RlbW8vR3Jp ZExhYmVsUmVuZGVyZXIucHkKKysrKysgYi9kZW1vL0dyaWRMYWJlbFJlbmRlcmVyLnB5CisrQEAg LTQ2LDggKzQ2LDggQEAgZGVmIF9faW5pdF9fKHNlbGYpOgorKyAgICAgICAgIHNlbGYuX2JtcCA9 IGltYWdlcy5TbWlsZXMuR2V0Qml0bWFwKCkKKysgCisrICAgICBkZWYgRHJhdyhzZWxmLCBncmlk LCBkYywgcmVjdCwgcmMpOgorKy0gICAgICAgIHggPSByZWN0LmxlZnQgKyAocmVjdC53aWR0aCAt IHNlbGYuX2JtcC5HZXRXaWR0aCgpKSAvIDIKKystICAgICAgICB5ID0gcmVjdC50b3AgKyAocmVj dC5oZWlnaHQgLSBzZWxmLl9ibXAuR2V0SGVpZ2h0KCkpIC8gMgorKysgICAgICAgIHggPSByZWN0 LmxlZnQgKyAocmVjdC53aWR0aCAtIHNlbGYuX2JtcC5HZXRXaWR0aCgpKSAvLyAyCisrKyAgICAg ICAgeSA9IHJlY3QudG9wICsgKHJlY3QuaGVpZ2h0IC0gc2VsZi5fYm1wLkdldEhlaWdodCgpKSAv LyAyCisrICAgICAgICAgZGMuRHJhd0JpdG1hcChzZWxmLl9ibXAsIHgsIHksIFRydWUpCisrIAor KyAKKytkaWZmIC0tZ2l0IGEvZGVtby9NYXNrLnB5IGIvZGVtby9NYXNrLnB5CisraW5kZXggMTA5 YjhmMzBiLi5lOTI0Zjk1YjkgMTAwNjQ0CisrLS0tIGEvZGVtby9NYXNrLnB5CisrKysrIGIvZGVt by9NYXNrLnB5CisrQEAgLTkwLDkgKzkwLDkgQEAgZGVmIE9uUGFpbnQgKHNlbGYsIGUpOgorKyAK KysgICAgICAgICBmb3IgdGV4dCwgY29kZSBpbiBsb2dpY0xpc3Q6CisrICAgICAgICAgICAgIHgs eSA9IDEyMCsxNTAqKGklNCksIDIwKzEwMCooaS80KQorKy0gICAgICAgICAgICBkYy5EcmF3VGV4 dCh0ZXh0LCB4LCB5LTIwKQorKysgICAgICAgICAgICBkYy5EcmF3VGV4dCh0ZXh0LCB4LCBpbnQo eS0yMCkpCisrICAgICAgICAgICAgIG1kYy5TZWxlY3RPYmplY3Qoc2VsZi5ibXBfd2l0aGNvbG91 cm1hc2spCisrLSAgICAgICAgICAgIGRjLkJsaXQoeCx5LCBjeCxjeSwgbWRjLCAwLDAsIGNvZGUs IFRydWUpCisrKyAgICAgICAgICAgIGRjLkJsaXQoeCxpbnQoeSksIGN4LGN5LCBtZGMsIDAsMCwg Y29kZSwgVHJ1ZSkKKysgICAgICAgICAgICAgaSA9IGkgKyAxCisrIAorKyAKKytkaWZmIC0tZ2l0 IGEvZGVtby9PdmVybGF5LnB5IGIvZGVtby9PdmVybGF5LnB5CisraW5kZXggNjUxNjRjZDg0Li5m YTY1YmUwMDMgMTAwNjQ0CisrLS0tIGEvZGVtby9PdmVybGF5LnB5CisrKysrIGIvZGVtby9PdmVy bGF5LnB5CisrQEAgLTU2LDcgKzU2LDYgQEAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgbG9n KToKKysgICAgICAgICBzZWxmLnBlbnN0eWxlc0NvbWJvLlNldFRvb2xUaXAoJ1BlbiBTdHlsZScp CisrIAorKyAgICAgICAgIHNlbGYub3ZlcmxheVBlbldpZHRoID0gd3guU3BpbkN0cmwoc2VsZiwg LTEsIHZhbHVlPScnLAorKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2l6ZT0oNzUsIC0xKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0eWxlPXd4LlNQX0FSUk9XX0tFWVMsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtaW49MSwgbWF4PTI0LCBpbml0aWFsPTEpCisrICAgICAgICAg c2VsZi5vdmVybGF5UGVuV2lkdGguU2V0VG9vbFRpcCgnUGVuIFdpZHRoJykKKytkaWZmIC0tZ2l0 IGEvZGVtby9QZW5BbmRCcnVzaFN0eWxlcy5weSBiL2RlbW8vUGVuQW5kQnJ1c2hTdHlsZXMucHkK KytpbmRleCAyNDA0MGIxZmMuLjExODNmNjg0YSAxMDA2NDQKKystLS0gYS9kZW1vL1BlbkFuZEJy dXNoU3R5bGVzLnB5CisrKysrIGIvZGVtby9QZW5BbmRCcnVzaFN0eWxlcy5weQorK0BAIC0xMDAs NyArMTAwLDcgQEAgZGVmIE9uUGFpbnQoc2VsZiwgZXZlbnQpOgorKyAKKysgICAgICAgICBkYy5T ZXRQZW4ocGVuKQorKyAgICAgICAgIHkgPSBsYWJlbEhlaWdodCArIChoZWlnaHQgLSBsYWJlbEhl aWdodCkvMgorKy0gICAgICAgIGRjLkRyYXdMaW5lKDUsIHksIHdpZHRoLTUsIHkpCisrKyAgICAg ICAgZGMuRHJhd0xpbmUoNSwgaW50KHkpLCB3aWR0aC01LCBpbnQoeSkpCisrIAorKyAKKysgY2xh c3MgQnJ1c2hQYW5lbChCYXNlUGFuZWwpOgorK2RpZmYgLS1naXQgYS9kZW1vL1BvcHVwV2luZG93 LnB5IGIvZGVtby9Qb3B1cFdpbmRvdy5weQorK2luZGV4IGQ4ZTE3NTU3Ni4uYjU0Yjk4NzBkIDEw MDY0NAorKy0tLSBhL2RlbW8vUG9wdXBXaW5kb3cucHkKKysrKysgYi9kZW1vL1BvcHVwV2luZG93 LnB5CisrQEAgLTg5LDcgKzg5LDcgQEAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgc3R5bGUs IGxvZyk6CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIihvciBpdHMgZmlyc3QgY2hpbGQp IGxvc2VzIGZvY3VzIGluIFxuIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbnkgb3Ro ZXIgd2F5LiIpCisrICAgICAgICAgYnRuID0gd3guQnV0dG9uKHBhbmVsLCAtMSwgIlByZXNzIE1l IikKKystICAgICAgICBzcGluID0gd3guU3BpbkN0cmwocGFuZWwsIC0xLCAiSGVsbG8iLCBzaXpl PSgxMDAsLTEpKQorKysgICAgICAgIHNwaW4gPSB3eC5TcGluQ3RybChwYW5lbCwgLTEsICJIZWxs byIpCisrICAgICAgICAgYnRuLkJpbmQod3guRVZUX0JVVFRPTiwgc2VsZi5PbkJ1dHRvbikKKysg CisrICAgICAgICAgc2l6ZXIgPSB3eC5Cb3hTaXplcih3eC5WRVJUSUNBTCkKKytkaWZmIC0tZ2l0 IGEvZGVtby9QcmludEZyYW1ld29yay5weSBiL2RlbW8vUHJpbnRGcmFtZXdvcmsucHkKKytpbmRl eCBlN2EyOWEwNzcuLmYwODczYWU5NCAxMDA2NDQKKystLS0gYS9kZW1vL1ByaW50RnJhbWV3b3Jr LnB5CisrKysrIGIvZGVtby9QcmludEZyYW1ld29yay5weQorK0BAIC04MSw3ICs4MSw3IEBAIGRl ZiBPblByaW50UGFnZShzZWxmLCBwYWdlKToKKysgCisrICAgICAgICAgIy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysgICAgICAgICBzZWxmLmNhbnZhcy5Eb0Ry YXdpbmcoZGMsIFRydWUpCisrLSAgICAgICAgZGMuRHJhd1RleHQoIlBhZ2U6ICVkIiAlIHBhZ2Us IG1hcmdpblgvMiwgbWF4WS1tYXJnaW5ZKQorKysgICAgICAgIGRjLkRyYXdUZXh0KCJQYWdlOiAl ZCIgJSBwYWdlLCBtYXJnaW5YLy8yLCBtYXhZLW1hcmdpblkpCisrIAorKyAgICAgICAgIHJldHVy biBUcnVlCisrIAorK2RpZmYgLS1naXQgYS9kZW1vL1Byb3BlcnR5R3JpZC5weSBiL2RlbW8vUHJv cGVydHlHcmlkLnB5CisraW5kZXggYzU2ZTA4YjYwLi5mYmVmMjllMzEgMTAwNjQ0CisrLS0tIGEv ZGVtby9Qcm9wZXJ0eUdyaWQucHkKKysrKysgYi9kZW1vL1Byb3BlcnR5R3JpZC5weQorK0BAIC0x NTAsNyArMTUwLDcgQEAgZGVmIF9Db252ZXJ0VmFsdWUoc2VsZiwgdmFsdWUpOgorKyAgICAgICAg ICIiIiBVdGlsaXR5IGNvbnZlcnQgYXJiaXRyYXJ5IHZhbHVlIHRvIGEgcmVhbCB3eC5TaXplLgor KyAgICAgICAgICIiIgorKyAgICAgICAgIGltcG9ydCBjb2xsZWN0aW9ucworKy0gICAgICAgIGlm IGlzaW5zdGFuY2UodmFsdWUsIGNvbGxlY3Rpb25zLlNlcXVlbmNlKSBvciBoYXNhdHRyKHZhbHVl LCAnX19nZXRpdGVtX18nKToKKysrICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBjb2xsZWN0 aW9ucy5hYmMuU2VxdWVuY2UpIG9yIGhhc2F0dHIodmFsdWUsICdfX2dldGl0ZW1fXycpOgorKyAg ICAgICAgICAgICB2YWx1ZSA9IHd4LlNpemUoKnZhbHVlKQorKyAgICAgICAgIHJldHVybiB2YWx1 ZQorKyAKKytkaWZmIC0tZ2l0IGEvZGVtby9TaXplcnMucHkgYi9kZW1vL1NpemVycy5weQorK2lu ZGV4IDZhYmFiZWRlOS4uYTAyNTA1MGYxIDEwMDY0NAorKy0tLSBhL2RlbW8vU2l6ZXJzLnB5Cisr KysrIGIvZGVtby9TaXplcnMucHkKKytAQCAtNDUsNyArNDUsNyBAQCBkZWYgT25QYWludChzZWxm LCBldnQpOgorKyAgICAgICAgIGRjID0gd3guUGFpbnREQyhzZWxmKQorKyAgICAgICAgIHcsaCA9 IGRjLkdldFRleHRFeHRlbnQoc2VsZi50ZXh0KQorKyAgICAgICAgIGRjLkNsZWFyKCkKKystICAg ICAgICBkYy5EcmF3VGV4dChzZWxmLnRleHQsIChzei53aWR0aC13KS8yLCAoc3ouaGVpZ2h0LWgp LzIpCisrKyAgICAgICAgZGMuRHJhd1RleHQoc2VsZi50ZXh0LCAoc3oud2lkdGgtdykvLzIsIChz ei5oZWlnaHQtaCkvLzIpCisrIAorKyAgICAgZGVmIE9uU2l6ZShzZWxmLCBldnQpOgorKyAgICAg ICAgIHNlbGYuUmVmcmVzaCgpCisrZGlmZiAtLWdpdCBhL2RlbW8vVUlBY3Rpb25TaW11bGF0b3Iu cHkgYi9kZW1vL1VJQWN0aW9uU2ltdWxhdG9yLnB5CisraW5kZXggY2JiYTE0ZjVjLi4wYTZmZDAy MzQgMTAwNjQ0CisrLS0tIGEvZGVtby9VSUFjdGlvblNpbXVsYXRvci5weQorKysrKyBiL2RlbW8v VUlBY3Rpb25TaW11bGF0b3IucHkKKytAQCAtODgsNyArODgsNyBAQCBkZWYgX3BsYXliYWNrS2V5 KHNlbGYsIGV2dFR5cGUsIGtleSwgbW9kaWZpZXJzKToKKysgCisrICAgICBkZWYgX3NldE5leHRL ZXlFdmVudChzZWxmKToKKysgICAgICAgICBldnRUeXBlLCBrZXksIG1vZGlmaWVycywgbWlsbGkg PSBzZWxmLl9wbGF5YmFja0V2ZW50cy5wb3AoMCkKKystICAgICAgICBtaWxsaSA9IG1heChtaWxs aS8yLCAxKSAjIHBsYXkgYmFjayBmYXN0ZXIgdGhhbiBpdCB3YXMgcmVjb3JkZWQKKysrICAgICAg ICBtaWxsaSA9IG1heChtaWxsaS8vMiwgMSkgIyBwbGF5IGJhY2sgZmFzdGVyIHRoYW4gaXQgd2Fz IHJlY29yZGVkCisrICAgICAgICAgcHJpbnQoZXZ0VHlwZSwga2V5LCBtb2RpZmllcnMsIG1pbGxp KQorKyAgICAgICAgIHd4LkNhbGxMYXRlcihtaWxsaSwgc2VsZi5fcGxheWJhY2tLZXksIGV2dFR5 cGUsIGtleSwgbW9kaWZpZXJzKQorKyAKKytkaWZmIC0tZ2l0IGEvZGVtby9hZ3cvQVVJLnB5IGIv ZGVtby9hZ3cvQVVJLnB5CisraW5kZXggN2MyMTk2ODY1Li5iMzgzMTNjODYgMTAwNjQ0CisrLS0t IGEvZGVtby9hZ3cvQVVJLnB5CisrKysrIGIvZGVtby9hZ3cvQVVJLnB5CisrQEAgLTM5Myw3ICsz OTMsNyBAQCBkZWYgT25QYWludChzZWxmLCBldmVudCk6CisrICAgICAgICAgZGMuU2V0UGVuKHd4 LkxJR0hUX0dSRVlfUEVOKQorKyAgICAgICAgIGRjLkRyYXdMaW5lKDAsIDAsIHNpemUueCwgc2l6 ZS55KQorKyAgICAgICAgIGRjLkRyYXdMaW5lKDAsIHNpemUueSwgc2l6ZS54LCAwKQorKy0gICAg ICAgIGRjLkRyYXdUZXh0KHMsIChzaXplLngtdykvMiwgKHNpemUueS1oZWlnaHQqNSkvMikKKysr ICAgICAgICBkYy5EcmF3VGV4dChzLCAoc2l6ZS54LXcpLy8yLCAoc2l6ZS55LWhlaWdodCo1KS8v MikKKysgCisrICAgICAgICAgaWYgc2VsZi5fbWdyOgorKyAKKytAQCAtNDAxLDE5ICs0MDEsMTkg QEAgZGVmIE9uUGFpbnQoc2VsZiwgZXZlbnQpOgorKyAKKysgICAgICAgICAgICAgcyA9ICJMYXll cjogJWQiJXBpLmRvY2tfbGF5ZXIKKysgICAgICAgICAgICAgdywgaCA9IGRjLkdldFRleHRFeHRl bnQocykKKystICAgICAgICAgICAgZGMuRHJhd1RleHQocywgKHNpemUueC13KS8yLCAoKHNpemUu eS0oaGVpZ2h0KjUpKS8yKSsoaGVpZ2h0KjEpKQorKysgICAgICAgICAgICBkYy5EcmF3VGV4dChz LCAoc2l6ZS54LXcpLy8yLCAoKHNpemUueS0oaGVpZ2h0KjUpKS8vMikrKGhlaWdodCoxKSkKKysg CisrICAgICAgICAgICAgIHMgPSAiRG9jazogJWQgUm93OiAlZCIlKHBpLmRvY2tfZGlyZWN0aW9u LCBwaS5kb2NrX3JvdykKKysgICAgICAgICAgICAgdywgaCA9IGRjLkdldFRleHRFeHRlbnQocykK KystICAgICAgICAgICAgZGMuRHJhd1RleHQocywgKHNpemUueC13KS8yLCAoKHNpemUueS0oaGVp Z2h0KjUpKS8yKSsoaGVpZ2h0KjIpKQorKysgICAgICAgICAgICBkYy5EcmF3VGV4dChzLCAoc2l6 ZS54LXcpLy8yLCAoKHNpemUueS0oaGVpZ2h0KjUpKS8vMikrKGhlaWdodCoyKSkKKysgCisrICAg ICAgICAgICAgIHMgPSAiUG9zaXRpb246ICVkIiVwaS5kb2NrX3BvcworKyAgICAgICAgICAgICB3 LCBoID0gZGMuR2V0VGV4dEV4dGVudChzKQorKy0gICAgICAgICAgICBkYy5EcmF3VGV4dChzLCAo c2l6ZS54LXcpLzIsICgoc2l6ZS55LShoZWlnaHQqNSkpLzIpKyhoZWlnaHQqMykpCisrKyAgICAg ICAgICAgIGRjLkRyYXdUZXh0KHMsIChzaXplLngtdykvLzIsICgoc2l6ZS55LShoZWlnaHQqNSkp Ly8yKSsoaGVpZ2h0KjMpKQorKyAKKysgICAgICAgICAgICAgcyA9ICJQcm9wb3J0aW9uOiAlZCIl cGkuZG9ja19wcm9wb3J0aW9uCisrICAgICAgICAgICAgIHcsIGggPSBkYy5HZXRUZXh0RXh0ZW50 KHMpCisrLSAgICAgICAgICAgIGRjLkRyYXdUZXh0KHMsIChzaXplLngtdykvMiwgKChzaXplLnkt KGhlaWdodCo1KSkvMikrKGhlaWdodCo0KSkKKysrICAgICAgICAgICAgZGMuRHJhd1RleHQocywg KHNpemUueC13KS8vMiwgKChzaXplLnktKGhlaWdodCo1KSkvLzIpKyhoZWlnaHQqNCkpCisrIAor KyAKKysgICAgIGRlZiBPbkVyYXNlQmFja2dyb3VuZChzZWxmLCBldmVudCk6CisrQEAgLTQzNSw3 ICs0MzUsNyBAQCBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCBmcmFtZSk6CisrIAorKyAgICAg ICAgIHMxID0gd3guQm94U2l6ZXIod3guSE9SSVpPTlRBTCkKKysgICAgICAgICBzZWxmLl9ib3Jk ZXJfc2l6ZSA9IHd4LlNwaW5DdHJsKHNlbGYsIElEX1BhbmVCb3JkZXJTaXplLCAiJWQiJWZyYW1l LkdldERvY2tBcnQoKS5HZXRNZXRyaWMoYXVpLkFVSV9ET0NLQVJUX1BBTkVfQk9SREVSX1NJWkUp LAorKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3guRGVmYXVsdFBv c2l0aW9uLCB3eC5TaXplKDUwLCAyMCksIHd4LlNQX0FSUk9XX0tFWVMsIDAsIDEwMCwKKysrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4LkRlZmF1bHRQb3NpdGlvbiwg d3guRGVmYXVsdFNpemUsIHd4LlNQX0FSUk9XX0tFWVMsIDAsIDEwMCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLkdldERvY2tBcnQoKS5HZXRNZXRyaWMo YXVpLkFVSV9ET0NLQVJUX1BBTkVfQk9SREVSX1NJWkUpKQorKyAgICAgICAgIHMxLkFkZCgoMSwg MSksIDEsIHd4LkVYUEFORCkKKysgICAgICAgICBzMS5BZGQod3guU3RhdGljVGV4dChzZWxmLCAt MSwgIlBhbmUgQm9yZGVyIFNpemU6IikpCisrQEAgLTQ0NSw3ICs0NDUsNyBAQCBkZWYgX19pbml0 X18oc2VsZiwgcGFyZW50LCBmcmFtZSk6CisrIAorKyAgICAgICAgIHMyID0gd3guQm94U2l6ZXIo d3guSE9SSVpPTlRBTCkKKysgICAgICAgICBzZWxmLl9zYXNoX3NpemUgPSB3eC5TcGluQ3RybChz ZWxmLCBJRF9TYXNoU2l6ZSwgIiVkIiVmcmFtZS5HZXREb2NrQXJ0KCkuR2V0TWV0cmljKGF1aS5B VUlfRE9DS0FSVF9TQVNIX1NJWkUpLCB3eC5EZWZhdWx0UG9zaXRpb24sCisrLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgd3guU2l6ZSg1MCwgMjApLCB3eC5TUF9BUlJPV19L RVlTLCAwLCAxMDAsIGZyYW1lLkdldERvY2tBcnQoKS5HZXRNZXRyaWMoYXVpLkFVSV9ET0NLQVJU X1NBU0hfU0laRSkpCisrKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3gu RGVmYXVsdFNpemUsIHd4LlNQX0FSUk9XX0tFWVMsIDAsIDEwMCwgZnJhbWUuR2V0RG9ja0FydCgp LkdldE1ldHJpYyhhdWkuQVVJX0RPQ0tBUlRfU0FTSF9TSVpFKSkKKysgICAgICAgICBzMi5BZGQo KDEsIDEpLCAxLCB3eC5FWFBBTkQpCisrICAgICAgICAgczIuQWRkKHd4LlN0YXRpY1RleHQoc2Vs ZiwgLTEsICJTYXNoIFNpemU6IikpCisrICAgICAgICAgczIuQWRkKHNlbGYuX3Nhc2hfc2l6ZSkK KytAQCAtNDU0LDcgKzQ1NCw3IEBAIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIGZyYW1lKToK KysgCisrICAgICAgICAgczMgPSB3eC5Cb3hTaXplcih3eC5IT1JJWk9OVEFMKQorKyAgICAgICAg IHNlbGYuX2NhcHRpb25fc2l6ZSA9IHd4LlNwaW5DdHJsKHNlbGYsIElEX0NhcHRpb25TaXplLCAi JWQiJWZyYW1lLkdldERvY2tBcnQoKS5HZXRNZXRyaWMoYXVpLkFVSV9ET0NLQVJUX0NBUFRJT05f U0laRSksCisrLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3guRGVm YXVsdFBvc2l0aW9uLCB3eC5TaXplKDUwLCAyMCksIHd4LlNQX0FSUk9XX0tFWVMsIDAsIDEwMCwg ZnJhbWUuR2V0RG9ja0FydCgpLkdldE1ldHJpYyhhdWkuQVVJX0RPQ0tBUlRfQ0FQVElPTl9TSVpF KSkKKysrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eC5EZWZhdWx0 UG9zaXRpb24sIHd4LkRlZmF1bHRTaXplLCB3eC5TUF9BUlJPV19LRVlTLCAwLCAxMDAsIGZyYW1l LkdldERvY2tBcnQoKS5HZXRNZXRyaWMoYXVpLkFVSV9ET0NLQVJUX0NBUFRJT05fU0laRSkpCisr ICAgICAgICAgczMuQWRkKCgxLCAxKSwgMSwgd3guRVhQQU5EKQorKyAgICAgICAgIHMzLkFkZCh3 eC5TdGF0aWNUZXh0KHNlbGYsIC0xLCAiQ2FwdGlvbiBTaXplOiIpKQorKyAgICAgICAgIHMzLkFk ZChzZWxmLl9jYXB0aW9uX3NpemUpCisrQEAgLTgwNyw5ICs4MDcsOSBAQCBkZWYgTGlnaHRDb2xv dXIoc2VsZiwgY29sb3VyLCBwZXJjZW50KToKKysgCisrICAgICAgICAgIyBXZSB0YWtlIHRoZSBw ZXJjZW50IHdheSBvZiB0aGUgY29sb3VyIGZyb20gY29sb3VyIC0+IHdoaXRlCisrICAgICAgICAg aSA9IHBlcmNlbnQKKystICAgICAgICByID0gY29sb3VyLlJlZCgpICsgKChpKnJkKjEwMCkvaGln aCkvMTAwCisrLSAgICAgICAgZyA9IGNvbG91ci5HcmVlbigpICsgKChpKmdkKjEwMCkvaGlnaCkv MTAwCisrLSAgICAgICAgYiA9IGNvbG91ci5CbHVlKCkgKyAoKGkqYmQqMTAwKS9oaWdoKS8xMDAK KysrICAgICAgICByID0gY29sb3VyLlJlZCgpICsgKChpKnJkKjEwMCkvL2hpZ2gpLy8xMDAKKysr ICAgICAgICBnID0gY29sb3VyLkdyZWVuKCkgKyAoKGkqZ2QqMTAwKS8vaGlnaCkvLzEwMAorKysg ICAgICAgIGIgPSBjb2xvdXIuQmx1ZSgpICsgKChpKmJkKjEwMCkvL2hpZ2gpLy8xMDAKKysgCisr ICAgICAgICAgcmV0dXJuIHd4LkNvbG91cihyLCBnLCBiKQorKyAKKytAQCAtODI2LDEwICs4MjYs MTAgQEAgZGVmIERyYXdQcm9ncmVzcyhzZWxmLCBkYywgeHNpemUsIHlzaXplLCBpbmNyZW1lbnQp OgorKyAgICAgICAgIHgsIHksIHdpZHRoLCBoZWlnaHQgPSBjbGllbnRSZWN0CisrICAgICAgICAg eCwgd2lkdGggPSBzZWxmLl9wb3MsIGludGVydmFsCisrIAorKy0gICAgICAgIGdyYWRpZW50UmVj dC5TZXRIZWlnaHQoZ3JhZGllbnRSZWN0LkdldEhlaWdodCgpLzIpCisrKyAgICAgICAgZ3JhZGll bnRSZWN0LlNldEhlaWdodChncmFkaWVudFJlY3QuR2V0SGVpZ2h0KCkvLzIpCisrICAgICAgICAg dG9wU3RhcnQsIHRvcEVuZCA9IHNlbGYuX3RvcFN0YXJ0Q29sb3VyLCBzZWxmLl90b3BFbmRDb2xv dXIKKysgCisrLSAgICAgICAgcmMxID0gd3guUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0LzIpCisr KyAgICAgICAgcmMxID0gd3guUmVjdChpbnQoeCksIHksIGludCh3aWR0aCksIGhlaWdodC8vMikK KysgICAgICAgICBwYXRoMSA9IHNlbGYuR2V0UGF0aChnYywgcmMxLCA4KQorKyAgICAgICAgIGJy MSA9IGdjLkNyZWF0ZUxpbmVhckdyYWRpZW50QnJ1c2goeCwgeSwgeCwgeStoZWlnaHQvMiwgdG9w U3RhcnQsIHRvcEVuZCkKKysgICAgICAgICBnYy5TZXRCcnVzaChicjEpCisrQEAgLTg0NSwxNCAr ODQ1LDE0IEBAIGRlZiBEcmF3UHJvZ3Jlc3Moc2VsZiwgZGMsIHhzaXplLCB5c2l6ZSwgaW5jcmVt ZW50KToKKysgCisrICAgICAgICAgYm90dG9tU3RhcnQsIGJvdHRvbUVuZCA9IHNlbGYuX2JvdHRv bVN0YXJ0Q29sb3VyLCBzZWxmLl9ib3R0b21FbmRDb2xvdXIKKysgCisrLSAgICAgICAgcmMzID0g d3guUmVjdCh4LCB5K2hlaWdodC8yLCB3aWR0aCwgaGVpZ2h0LzIpCisrKyAgICAgICAgcmMzID0g d3guUmVjdChpbnQoeCksIHkraGVpZ2h0Ly8yLCBpbnQod2lkdGgpLCBoZWlnaHQvLzIpCisrICAg ICAgICAgcGF0aDMgPSBzZWxmLkdldFBhdGgoZ2MsIHJjMywgOCkKKysgICAgICAgICBicjMgPSBn Yy5DcmVhdGVMaW5lYXJHcmFkaWVudEJydXNoKHgsIHkraGVpZ2h0LzIsIHgsIHkraGVpZ2h0LCBi b3R0b21TdGFydCwgYm90dG9tRW5kKQorKyAgICAgICAgIGdjLlNldEJydXNoKGJyMykKKysgICAg ICAgICBnYy5GaWxsUGF0aChwYXRoMykgI2RyYXcgbWFpbgorKyAKKysgICAgICAgICBwYXRoNCA9 IGdjLkNyZWF0ZVBhdGgoKQorKy0gICAgICAgIHBhdGg0LkFkZFJlY3RhbmdsZSh4LCB5K2hlaWdo dC8yLCB3aWR0aCwgOCkKKysrICAgICAgICBwYXRoNC5BZGRSZWN0YW5nbGUoeCwgeStoZWlnaHQv LzIsIHdpZHRoLCA4KQorKyAgICAgICAgIHBhdGg0LkNsb3NlU3VicGF0aCgpCisrICAgICAgICAg Z2MuU2V0QnJ1c2goYnIzKQorKyAgICAgICAgIGdjLkZpbGxQYXRoKHBhdGg0KQorK0BAIC0yNjEz LDcgKzI2MTMsNyBAQCBkZWYgQ3JlYXRlTm90ZWJvb2soc2VsZik6CisrICAgICAgICAgZmxleC5B ZGQod3guVGV4dEN0cmwocGFuZWwsIC0xLCAiIiwgd3guRGVmYXVsdFBvc2l0aW9uLCB3eC5TaXpl KDEwMCwgLTEpKSwKKysgICAgICAgICAgICAgICAgICAxLCB3eC5BTEx8d3guQUxJR05fQ0VOVFJF LCA1KQorKyAgICAgICAgIGZsZXguQWRkKHd4LlN0YXRpY1RleHQocGFuZWwsIC0xLCAid3hTcGlu Q3RybDoiKSwgMCwgd3guQUxMfHd4LkFMSUdOX0NFTlRSRSwgNSkKKystICAgICAgICBmbGV4LkFk ZCh3eC5TcGluQ3RybChwYW5lbCwgLTEsICI1Iiwgd3guRGVmYXVsdFBvc2l0aW9uLCB3eC5TaXpl KDEwMCwgLTEpLAorKysgICAgICAgIGZsZXguQWRkKHd4LlNwaW5DdHJsKHBhbmVsLCAtMSwgIjUi LCB3eC5EZWZhdWx0UG9zaXRpb24sIHd4LkRlZmF1bHRTaXplLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHd4LlNQX0FSUk9XX0tFWVMsIDUsIDUwLCA1KSwgMCwgd3guQUxMfHd4LkFM SUdOX0NFTlRSRSwgNSkKKysgICAgICAgICBmbGV4LkFkZCgoNSwgNSkpCisrICAgICAgICAgZmxl eC5BZGQoKDUsIDUpKQorK2RpZmYgLS1naXQgYS9kZW1vL2Fndy9NYWNMYXJnZURlbW8ucHkgYi9k ZW1vL2Fndy9NYWNMYXJnZURlbW8ucHkKKytpbmRleCA0ZDk2N2E1NDYuLmE1YjhhMGUyNSAxMDA2 NDQKKystLS0gYS9kZW1vL2Fndy9NYWNMYXJnZURlbW8ucHkKKysrKysgYi9kZW1vL2Fndy9NYWNM YXJnZURlbW8ucHkKKytAQCAtMjIzLDEyICsyMjMsMTIgQEAgZGVmIERyYXdQcm9ncmVzc0Jhcihz ZWxmLCBkYywgeCwgeSwgdywgaCwgcGVyY2VudCk6CisrICAgICAgICAgICAgIG1kYy5TZWxlY3RP YmplY3Qod3guTnVsbEJpdG1hcCkKKysgCisrICAgICAgICAgIyBDZW50ZXIgdGhlIHByb2dyZXNz IGJhciB2ZXJ0aWNhbGx5IGluIHRoZSBib3ggc3VwcGxpZWQKKystICAgICAgICB5ID0geSArICho IC0gUElQRV9IRUlHSFQpLzIKKysrICAgICAgICB5ID0geSArIChoIC0gUElQRV9IRUlHSFQpLy8y CisrIAorKyAgICAgICAgIGlmIHBlcmNlbnQgPT0gMDoKKysgICAgICAgICAgICAgbWlkZGxlID0g MAorKyAgICAgICAgIGVsc2U6CisrLSAgICAgICAgICAgIG1pZGRsZSA9ICh3ICogcGVyY2VudCkv MTAwCisrKyAgICAgICAgICAgIG1pZGRsZSA9IGludCgodyAqIHBlcmNlbnQpLzEwMCkKKysgCisr ICAgICAgICAgaWYgdyA8IDE6CisrICAgICAgICAgICAgIHJldHVybgorK2RpZmYgLS1naXQgYS9k ZW1vL2Fndy9QZWFrTWV0ZXIucHkgYi9kZW1vL2Fndy9QZWFrTWV0ZXIucHkKKytpbmRleCBhN2M5 YTZmNTEuLmU5ZGFiNzExNiAxMDA2NDQKKystLS0gYS9kZW1vL2Fndy9QZWFrTWV0ZXIucHkKKysr KysgYi9kZW1vL2Fndy9QZWFrTWV0ZXIucHkKKytAQCAtMTQ5LDEwICsxNDksMTAgQEAgZGVmIE9u RmFsbG9mZihzZWxmLCBldmVudCk6CisrIAorKyAgICAgZGVmIE9uU3RhcnQoc2VsZiwgZXZlbnQp OgorKyAKKystICAgICAgICBzZWxmLnRpbWVyLlN0YXJ0KDEwMDAvMikgICAgICAgICMgMiBmcHMK KysrICAgICAgICBzZWxmLnRpbWVyLlN0YXJ0KDEwMDAvLzIpICAgICAgICAjIDIgZnBzCisrIAor Ky0gICAgICAgIHNlbGYudmVydFBlYWsuU3RhcnQoMTAwMC8xOCkgICAgICAgICMgMTggZnBzCisr LSAgICAgICAgc2VsZi5ob3J6UGVhay5TdGFydCgxMDAwLzIwKSAgICAgICAgIyAyMCBmcHMKKysr ICAgICAgICBzZWxmLnZlcnRQZWFrLlN0YXJ0KDEwMDAvLzE4KSAgICAgICAgIyAxOCBmcHMKKysr ICAgICAgICBzZWxmLmhvcnpQZWFrLlN0YXJ0KDEwMDAvLzIwKSAgICAgICAgIyAyMCBmcHMKKysg CisrIAorKyAgICAgZGVmIE9uU3RvcChzZWxmLCBldmVudCk6CisrZGlmZiAtLWdpdCBhL2RlbW8v YWd3L1BlcnNpc3RlbnRDb250cm9scy5weSBiL2RlbW8vYWd3L1BlcnNpc3RlbnRDb250cm9scy5w eQorK2luZGV4IGYxOWNjNGE5MS4uY2Y5N2RkOWYwIDEwMDY0NAorKy0tLSBhL2RlbW8vYWd3L1Bl cnNpc3RlbnRDb250cm9scy5weQorKysrKyBiL2RlbW8vYWd3L1BlcnNpc3RlbnRDb250cm9scy5w eQorK0BAIC0yMzQsNyArMjM0LDcgQEAgZGVmIEJ1aWxkUGFuZXMoc2VsZik6CisrICAgICAgICAg c2l6ZXJfMS5BZGQobGFiZWxfMSwgMCwgd3guQUxMLCA1KQorKyAgICAgICAgIHNpemVyXzEuQWRk KGNvbWJvLCAwLCB3eC5MRUZUfHd4LlJJR0hULCA1KQorKyAgICAgICAgIHNpemVyXzEuQWRkKCgy MCwgMjApLCAxKQorKy0gICAgICAgIGJveDIuQWRkKHNpemVyXzEsIDEsIHd4LkVYUEFORHx3eC5B TElHTl9DRU5URVIsIDApCisrKyAgICAgICAgYm94Mi5BZGQoc2l6ZXJfMSwgMSwgd3guRVhQQU5E LCAwKQorKyAgICAgICAgIGJveDIuQWRkKCgwLCAwKSwgMSwgMSkKKysgCisrICAgICAgICAgb3Ro ZXJQYW5lbC5TZXRTaXplcihib3gyKQorK2RpZmYgLS1naXQgYS9kZW1vL2Fndy9SaWJib25CYXIu cHkgYi9kZW1vL2Fndy9SaWJib25CYXIucHkKKytpbmRleCA3MTAzZTlkODEuLmQyOGEyYzY2YSAx MDA2NDQKKystLS0gYS9kZW1vL2Fndy9SaWJib25CYXIucHkKKysrKysgYi9kZW1vL2Fndy9SaWJi b25CYXIucHkKKytAQCAtNzk5LDcgKzc5OSw3IEBAIGRlZiBBZGRDb2xvdXJUb0dhbGxlcnkoc2Vs ZiwgZ2FsbGVyeSwgY29sb3VyLCBkYywgdmFsdWU9Tm9uZSk6CisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChjLkJsdWUoKSArIDE5MikgJSAyNTYpCisrIAorKyAgICAg ICAgICAgICBkYy5TZXRUZXh0Rm9yZWdyb3VuZChmb3JlZ3JvdW5kKQorKy0gICAgICAgICAgICBk Yy5EcmF3VGV4dChjb2xvdXIsIChpV2lkdGggLSBzaXplLkdldFdpZHRoKCkgKyAxKSAvIDIsIChp SGVpZ2h0IC0gc2l6ZS5HZXRIZWlnaHQoKSkgLyAyKQorKysgICAgICAgICAgICBkYy5EcmF3VGV4 dChjb2xvdXIsIChpV2lkdGggLSBzaXplLkdldFdpZHRoKCkgKyAxKSAvLyAyLCAoaUhlaWdodCAt IHNpemUuR2V0SGVpZ2h0KCkpIC8vIDIpCisrICAgICAgICAgICAgIGRjLlNlbGVjdE9iamVjdEFz U291cmNlKHd4Lk51bGxCaXRtYXApCisrIAorKyAgICAgICAgICAgICBpdGVtID0gZ2FsbGVyeS5B cHBlbmQoYml0bWFwLCB3eC5JRF9BTlkpCisrZGlmZiAtLWdpdCBhL2RlbW8vYWd3L1NwZWVkTWV0 ZXIucHkgYi9kZW1vL2Fndy9TcGVlZE1ldGVyLnB5CisraW5kZXggOWYwZmRlYmIyLi41NzVlODRh ODAgMTAwNjQ0CisrLS0tIGEvZGVtby9hZ3cvU3BlZWRNZXRlci5weQorKysrKyBiL2RlbW8vYWd3 L1NwZWVkTWV0ZXIucHkKKytAQCAtNDE4LDcgKzQxOCw3IEBAIGRlZiBfX2luaXRfXyhzZWxmLCBw YXJlbnQsIGxvZyk6CisrICAgICAgICAgYnNpemVyMyA9IHd4LkJveFNpemVyKHd4LlZFUlRJQ0FM KQorKyAKKysgICAgICAgICBoc2l6ZXIzID0gd3guQm94U2l6ZXIod3guSE9SSVpPTlRBTCkKKyst ICAgICAgICBzYyA9IHd4LlNwaW5DdHJsKHBhbmVsMywgLTEsIHNpemU9KDYwLDIwKSkKKysrICAg ICAgICBzYyA9IHd4LlNwaW5DdHJsKHBhbmVsMywgLTEpCisrICAgICAgICAgc2MuU2V0UmFuZ2Uo MSwgMjUwKQorKyAgICAgICAgIHNjLlNldFZhbHVlKDUwKQorKyAKKytkaWZmIC0tZ2l0IGEvZGVt by9hZ3cvU3VwZXJUb29sVGlwLnB5IGIvZGVtby9hZ3cvU3VwZXJUb29sVGlwLnB5CisraW5kZXgg NWU2NWYwNmIxLi44ODcyOGU1NGUgMTAwNjQ0CisrLS0tIGEvZGVtby9hZ3cvU3VwZXJUb29sVGlw LnB5CisrKysrIGIvZGVtby9hZ3cvU3VwZXJUb29sVGlwLnB5CisrQEAgLTQzLDcgKzQzLDcgQEAg ZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6CisrICAgICAgICAgc2VsZi50b3BDb2xvdXJQaWNr ZXIgPSB3eC5Db2xvdXJQaWNrZXJDdHJsKHNlbGYubWFpblBhbmVsLCBjb2xvdXI9d3guV0hJVEUp CisrICAgICAgICAgc3lzdGVtID0gd3guU3lzdGVtU2V0dGluZ3MuR2V0Q29sb3VyKHd4LlNZU19D T0xPVVJfQUNUSVZFQ0FQVElPTikKKysgICAgICAgICByLCBnLCBiLCBhID0gc3lzdGVtCisrLSAg ICAgICAgc2VsZi5taWRkbGVDb2xvdXJQaWNrZXIgPSB3eC5Db2xvdXJQaWNrZXJDdHJsKHNlbGYu bWFpblBhbmVsLCBjb2xvdXI9d3guQ29sb3VyKCgyNTUtcikvMiwgKDI1NS1nKS8yLCAoMjU1LWIp LzIpKQorKysgICAgICAgIHNlbGYubWlkZGxlQ29sb3VyUGlja2VyID0gd3guQ29sb3VyUGlja2Vy Q3RybChzZWxmLm1haW5QYW5lbCwgY29sb3VyPXd4LkNvbG91cigoMjU1LXIpLy8yLCAoMjU1LWcp Ly8yLCAoMjU1LWIpLy8yKSkKKysgICAgICAgICBzZWxmLmJvdHRvbUNvbG91clBpY2tlciA9IHd4 LkNvbG91clBpY2tlckN0cmwoc2VsZi5tYWluUGFuZWwsIGNvbG91cj1zeXN0ZW0pCisrICAgICAg ICAgc2VsZi5oZWFkZXJDaGVjayA9IHd4LkNoZWNrQm94KHNlbGYubWFpblBhbmVsLCAtMSwgIlNo b3cgSGVhZGVyIikKKysgICAgICAgICBzZWxmLmhlYWRlclRleHQgPSB3eC5UZXh0Q3RybChzZWxm Lm1haW5QYW5lbCwgLTEsICJNZXJnZSBBbmQgQ2VudGVyIikKKytAQCAtMjMzLDcgKzIzMyw2IEBA IGRlZiBEb0xheW91dChzZWxmKToKKysgICAgICAgICBmcmFtZVNpemVyLkFkZChzZWxmLm1haW5Q YW5lbCwgMSwgd3guRVhQQU5ELCAwKQorKyAgICAgICAgIHNlbGYuU2V0U2l6ZXIoZnJhbWVTaXpl cikKKysgICAgICAgICBmcmFtZVNpemVyLkxheW91dCgpCisrLSAgICAgICAgZnJhbWVTaXplci5G aXQoc2VsZikKKysgICAgICAgICBzZWxmLkxheW91dCgpCisrIAorKyAgICAgICAgIHd4LkNhbGxB ZnRlcihtYWluU2l6ZXIuTGF5b3V0KQorK2RpZmYgLS1naXQgYS9kZW1vL2Fndy9VbHRpbWF0ZVJl cG9ydERlbW8ucHkgYi9kZW1vL2Fndy9VbHRpbWF0ZVJlcG9ydERlbW8ucHkKKytpbmRleCA0MGY0 OWNiOGYuLmFkNDU1ODQ3YiAxMDA2NDQKKystLS0gYS9kZW1vL2Fndy9VbHRpbWF0ZVJlcG9ydERl bW8ucHkKKysrKysgYi9kZW1vL2Fndy9VbHRpbWF0ZVJlcG9ydERlbW8ucHkKKytAQCAtMjE2LDcg KzIxNiw3IEBAIGRlZiBEcmF3U3ViSXRlbShzZWxmLCBkYywgcmVjdCwgbGluZSwgaGlnaGxpZ2h0 ZWQsIGVuYWJsZWQpOgorKyAgICAgICAgIG1kYy5TZXRGb250KHd4LkZvbnQoOCwgd3guRk9OVEZB TUlMWV9TV0lTUywgd3guRk9OVFNUWUxFX05PUk1BTCwgd3guRk9OVFdFSUdIVF9CT0xEKSkKKysg ICAgICAgICB0ZXh0ID0gIiVkIE1iIiVzZWxmLnByb2dyZXNzVmFsdWUKKysgICAgICAgICB0ZXh0 V2lkdGgsIGR1bW15ID0gbWRjLkdldFRleHRFeHRlbnQodGV4dCkKKystICAgICAgICBtZGMuRHJh d1RleHQodGV4dCwgcmVjdC53aWR0aC8yIC0gdGV4dFdpZHRoLzIsIHJlY3QuaGVpZ2h0LzIgLSBk dW1teS8yKQorKysgICAgICAgIG1kYy5EcmF3VGV4dCh0ZXh0LCByZWN0LndpZHRoLy8yIC0gdGV4 dFdpZHRoLy8yLCByZWN0LmhlaWdodC8vMiAtIGR1bW15Ly8yKQorKyAgICAgICAgIGRjLlNldENs aXBwaW5nUmVnaW9uKHJlY3QueCwgcmVjdC55LCByZWN0LndpZHRoLCByZWN0LmhlaWdodCkKKysg ICAgICAgICBkYy5CbGl0KHJlY3QueCszLCByZWN0LnksIHJlY3Qud2lkdGgtNiwgcmVjdC5oZWln aHQsIG1kYywgMCwgMCkKKysgICAgICAgICBkYy5EZXN0cm95Q2xpcHBpbmdSZWdpb24oKQorK0BA IC0yNzksMTIgKzI3OSwxMiBAQCBkZWYgRHJhd1Byb2dyZXNzQmFyKHNlbGYsIGRjLCB4LCB5LCB3 LCBoLCBwZXJjZW50KToKKysgICAgICAgICAgICAgbWRjLlNlbGVjdE9iamVjdCh3eC5OdWxsQml0 bWFwKQorKyAKKysgICAgICAgICAjIENlbnRlciB0aGUgcHJvZ3Jlc3MgYmFyIHZlcnRpY2FsbHkg aW4gdGhlIGJveCBzdXBwbGllZAorKy0gICAgICAgIHkgPSB5ICsgKGggLSBQSVBFX0hFSUdIVCkv MgorKysgICAgICAgIHkgPSB5ICsgKGggLSBQSVBFX0hFSUdIVCkvLzIKKysgCisrICAgICAgICAg aWYgcGVyY2VudCA9PSAwOgorKyAgICAgICAgICAgICBtaWRkbGUgPSAwCisrICAgICAgICAgZWxz ZToKKystICAgICAgICAgICAgbWlkZGxlID0gKHcgKiBwZXJjZW50KS8xMDAKKysrICAgICAgICAg ICAgbWlkZGxlID0gKHcgKiBwZXJjZW50KS8vMTAwCisrIAorKyAgICAgICAgIGlmIG1pZGRsZSA9 PSAwOiAjIG5vdCBzdGFydGVkCisrICAgICAgICAgICAgIGJpdG1hcCA9IHNlbGYuUkVNQUlOSU5H X0JJVE1BUC5HZXRTdWJCaXRtYXAoKDEsIDAsIHcsIFBJUEVfSEVJR0hUKSkKKytAQCAtMzM1LDcg KzMzNSw3IEBAIGRlZiBEcmF3U3ViSXRlbShzZWxmLCBkYywgcmVjdCwgbGluZSwgaGlnaGxpZ2h0 ZWQsIGVuYWJsZWQpOgorKyAgICAgICAgIGNvbG91cnMgPSBbd3guUkVELCB3eC5XSElURSwgd3gu R1JFRU4sIHd4LkNvbG91cigiU0tZIEJMVUUiKV0KKysgICAgICAgICB3LCBoID0gZGMuR2V0VGV4 dEV4dGVudCgiSGciKQorKyAgICAgICAgIHggPSByZWN0LnggKyAxCisrLSAgICAgICAgeSA9IHJl Y3QueSArIHJlY3QuaGVpZ2h0LzIgLSBoLzIKKysrICAgICAgICB5ID0gcmVjdC55ICsgcmVjdC5o ZWlnaHQvLzIgLSBoLy8yCisrIAorKyAgICAgICAgIGZvciBjaCBpbiBzZWxmLnRleHQ6CisrICAg ICAgICAgICAgIGRjLlNldFRleHRGb3JlZ3JvdW5kKHJhbmRvbS5jaG9pY2UoY29sb3VycykpCisr ZGlmZiAtLWdpdCBhL2RlbW8vYWd3L1dpbmRvd3M3RXhwbG9yZXJfQ29udGVudHMucHkgYi9kZW1v L2Fndy9XaW5kb3dzN0V4cGxvcmVyX0NvbnRlbnRzLnB5CisraW5kZXggZjc1NGQ3ODc5Li5iMjNk ZjBlMWEgMTAwNjQ0CisrLS0tIGEvZGVtby9hZ3cvV2luZG93czdFeHBsb3Jlcl9Db250ZW50cy5w eQorKysrKyBiL2RlbW8vYWd3L1dpbmRvd3M3RXhwbG9yZXJfQ29udGVudHMucHkKKytAQCAtMTI3 LDEzICsxMjcsMTMgQEAgZGVmIERyYXdTdWJJdGVtKHNlbGYsIGRjLCByZWN0LCBsaW5lLCBoaWdo bGlnaHRlZCwgZW5hYmxlZCk6CisrICAgICAgICAgIiIiRHJhdyBhIGN1c3RvbSBwcm9ncmVzcyBi YXIgdXNpbmcgZG91YmxlIGJ1ZmZlcmluZyB0byBwcmV2ZW50IGZsaWNrZXIiIiIKKysgCisrICAg ICAgICAgYm1wV2lkdGgsIGJtcEhlaWdodCA9IHNlbGYuaWNvbi5HZXRXaWR0aCgpLCBzZWxmLmlj b24uR2V0SGVpZ2h0KCkKKystICAgICAgICBkYy5EcmF3SWNvbihzZWxmLmljb24sIHJlY3QueCs1 LCByZWN0LnkrKHJlY3QuaGVpZ2h0LWJtcEhlaWdodCkvMikKKysrICAgICAgICBkYy5EcmF3SWNv bihzZWxmLmljb24sIHJlY3QueCs1LCByZWN0LnkrKHJlY3QuaGVpZ2h0LWJtcEhlaWdodCkvLzIp CisrIAorKyAgICAgICAgIGRjLlNldEZvbnQoc2VsZi5ub3JtYWxGb250KQorKyAKKysgICAgICAg ICB0ZXh0V2lkdGgsIHRleHRIZWlnaHQgPSBkYy5HZXRUZXh0RXh0ZW50KHNlbGYudGV4dCkKKysg ICAgICAgICBkYy5TZXRUZXh0Rm9yZWdyb3VuZCh3eC5TeXN0ZW1TZXR0aW5ncy5HZXRDb2xvdXIo d3guU1lTX0NPTE9VUl9CVE5URVhUKSkKKystICAgICAgICBkYy5EcmF3VGV4dChzZWxmLnRleHQs IHJlY3QueCtibXBXaWR0aCsxMCwgcmVjdC55KyhyZWN0LmhlaWdodCAtIHRleHRIZWlnaHQpLzQp CisrKyAgICAgICAgZGMuRHJhd1RleHQoc2VsZi50ZXh0LCByZWN0LngrYm1wV2lkdGgrMTAsIHJl Y3QueSsocmVjdC5oZWlnaHQgLSB0ZXh0SGVpZ2h0KS8vNCkKKysgCisrICAgICAgICAgaWYgbm90 IHNlbGYuZGVzY3JpcHRpb246CisrICAgICAgICAgICAgIHJldHVybgorK0BAIC0xNDQsMTAgKzE0 NCwxMCBAQCBkZWYgRHJhd1N1Ykl0ZW0oc2VsZiwgZGMsIHJlY3QsIGxpbmUsIGhpZ2hsaWdodGVk LCBlbmFibGVkKToKKysgICAgICAgICB0ZXh0V2lkdGgsIHRleHRIZWlnaHQgPSBkYy5HZXRUZXh0 RXh0ZW50KCJUeXBlOiAiICsgc2VsZi5kZXNjcmlwdGlvbikKKysgCisrICAgICAgICAgZGMuU2V0 VGV4dEZvcmVncm91bmQoc2VsZi5ncmV5Q29sb3VyKQorKy0gICAgICAgIGRjLkRyYXdUZXh0KCJU eXBlOiAiLCByZWN0LngrYm1wV2lkdGgrMTAsIHJlY3QueSszKihyZWN0LmhlaWdodCAtIHRleHRI ZWlnaHQpLzQpCisrKyAgICAgICAgZGMuRHJhd1RleHQoIlR5cGU6ICIsIHJlY3QueCtibXBXaWR0 aCsxMCwgcmVjdC55KzMqKHJlY3QuaGVpZ2h0IC0gdGV4dEhlaWdodCkvLzQpCisrIAorKyAgICAg ICAgIGRjLlNldFRleHRGb3JlZ3JvdW5kKHd4LkJMQUNLKQorKy0gICAgICAgIGRjLkRyYXdUZXh0 KHNlbGYuZGVzY3JpcHRpb24sIHJlY3QueCtibXBXaWR0aCtkdW1teTErMTAsIHJlY3QueSszKihy ZWN0LmhlaWdodCAtIHRleHRIZWlnaHQpLzQpCisrKyAgICAgICAgZGMuRHJhd1RleHQoc2VsZi5k ZXNjcmlwdGlvbiwgcmVjdC54K2JtcFdpZHRoK2R1bW15MSsxMCwgcmVjdC55KzMqKHJlY3QuaGVp Z2h0IC0gdGV4dEhlaWdodCkvLzQpCisrIAorKyAKKysgICAgIGRlZiBHZXRMaW5lSGVpZ2h0KHNl bGYpOgorK0BAIC0yMDcsMTAgKzIwNywxMCBAQCBkZWYgRHJhd1N1Ykl0ZW0oc2VsZiwgZGMsIHJl Y3QsIGxpbmUsIGhpZ2hsaWdodGVkLCBlbmFibGVkKToKKysgICAgICAgICB0ZXh0V2lkdGgsIHRl eHRIZWlnaHQgPSBkYy5HZXRUZXh0RXh0ZW50KCJEYXRlIG1vZGlmaWVkOiAiICsgZGF0ZSkKKysg CisrICAgICAgICAgZGMuU2V0VGV4dEZvcmVncm91bmQoc2VsZi5ncmV5Q29sb3VyKQorKy0gICAg ICAgIGRjLkRyYXdUZXh0KCJEYXRlIG1vZGlmaWVkOiAiLCByZWN0LngrNSwgcmVjdC55KyhyZWN0 LmhlaWdodCAtIHRleHRIZWlnaHQpLzQpCisrKyAgICAgICAgZGMuRHJhd1RleHQoIkRhdGUgbW9k aWZpZWQ6ICIsIHJlY3QueCs1LCByZWN0LnkrKHJlY3QuaGVpZ2h0IC0gdGV4dEhlaWdodCkvLzQp CisrIAorKyAgICAgICAgIGRjLlNldFRleHRGb3JlZ3JvdW5kKHd4LkJMQUNLKQorKy0gICAgICAg IGRjLkRyYXdUZXh0KGRhdGUsIHJlY3QueCtkdW1teTErNSwgcmVjdC55KyhyZWN0LmhlaWdodCAt IHRleHRIZWlnaHQpLzQpCisrKyAgICAgICAgZGMuRHJhd1RleHQoZGF0ZSwgcmVjdC54K2R1bW15 MSs1LCByZWN0LnkrKHJlY3QuaGVpZ2h0IC0gdGV4dEhlaWdodCkvLzQpCisrIAorKyAgICAgICAg IGlmIG5vdCBzZWxmLnNpemU6CisrICAgICAgICAgICAgIHJldHVybgorK0BAIC0yMTgsMTAgKzIx OCwxMCBAQCBkZWYgRHJhd1N1Ykl0ZW0oc2VsZiwgZGMsIHJlY3QsIGxpbmUsIGhpZ2hsaWdodGVk LCBlbmFibGVkKToKKysgICAgICAgICBkdW1teTEsIGR1bW15Mj0gZGMuR2V0VGV4dEV4dGVudCgi U2l6ZTogIikKKysgCisrICAgICAgICAgZGMuU2V0VGV4dEZvcmVncm91bmQoc2VsZi5ncmV5Q29s b3VyKQorKy0gICAgICAgIGRjLkRyYXdUZXh0KCJTaXplOiAiLCByZWN0LngrNSwgcmVjdC55KzMq KHJlY3QuaGVpZ2h0IC0gdGV4dEhlaWdodCkvNCkKKysrICAgICAgICBkYy5EcmF3VGV4dCgiU2l6 ZTogIiwgcmVjdC54KzUsIHJlY3QueSszKihyZWN0LmhlaWdodCAtIHRleHRIZWlnaHQpLy80KQor KyAKKysgICAgICAgICBkYy5TZXRUZXh0Rm9yZWdyb3VuZCh3eC5CTEFDSykKKystICAgICAgICBk Yy5EcmF3VGV4dChzZWxmLnNpemUsIHJlY3QueCtkdW1teTErNSwgcmVjdC55KzMqKHJlY3QuaGVp Z2h0IC0gdGV4dEhlaWdodCkvNCkKKysrICAgICAgICBkYy5EcmF3VGV4dChzZWxmLnNpemUsIHJl Y3QueCtkdW1teTErNSwgcmVjdC55KzMqKHJlY3QuaGVpZ2h0IC0gdGV4dEhlaWdodCkvLzQpCisr IAorKyAKKysgICAgIGRlZiBHZXRMaW5lSGVpZ2h0KHNlbGYpOgorK2RpZmYgLS1naXQgYS9kZW1v L2Fndy9ab29tQmFyLnB5IGIvZGVtby9hZ3cvWm9vbUJhci5weQorK2luZGV4IDM3NmNlMzQ5Yi4u MTRiMDI3OGU3IDEwMDY0NAorKy0tLSBhL2RlbW8vYWd3L1pvb21CYXIucHkKKysrKysgYi9kZW1v L2Fndy9ab29tQmFyLnB5CisrQEAgLTU1LDcgKzU1LDcgQEAgZGVmIF9faW5pdF9fKHNlbGYsIHBh cmVudCwgbG9nKToKKysgICAgICAgICByZWZsZWN0aW9ucyA9IGdsb2IuZ2xvYihiaXRtYXBEaXIg KyAiLyo5NkZsaXA0MC5wbmciKQorKyAKKysgICAgICAgICBzZXBhcmF0b3JJbWFnZSA9IGJpdG1h cERpciArICIvc2VwYXJhdG9yLmdpZiIKKystICAgICAgICBzZXBhcmF0b3JSZWZsZWN0aW9uID0g Yml0bWFwRGlyICsgIi9zZXBhcmF0b3JGbGlwLnBuZyIKKysrICAgICAgICBzZXBhcmF0b3JSZWZs ZWN0aW9uID0gYml0bWFwRGlyICsgIi9zZXBhcmF0b3JmbGlwLnBuZyIKKysgICAgICAgICBjb3Vu dCA9IDAKKysgCisrICAgICAgICAgZm9yIHN0ZCwgcmVmIGluIHppcChzdGFuZGFyZCwgcmVmbGVj dGlvbnMpOgorK2RpZmYgLS1naXQgYS93eC9saWIvYWd3L2FkdmFuY2Vkc3BsYXNoLnB5IGIvd3gv bGliL2Fndy9hZHZhbmNlZHNwbGFzaC5weQorK2luZGV4IDFmOGMzMmRmNS4uZDM1MWVhMDZlIDEw MDY0NAorKy0tLSBhL3d4L2xpYi9hZ3cvYWR2YW5jZWRzcGxhc2gucHkKKysrKysgYi93eC9saWIv YWd3L2FkdmFuY2Vkc3BsYXNoLnB5CisrQEAgLTQzOCw3ICs0MzgsNyBAQCBkZWYgU2V0VGV4dEZv bnQoc2VsZiwgZm9udD1Ob25lKToKKysgCisrICAgICAgICAgaWYgZm9udCBpcyBOb25lOgorKyAg ICAgICAgICAgICBzZWxmLl90ZXh0Zm9udCA9IHd4LkZvbnQoMSwgd3guRk9OVEZBTUlMWV9TV0lT Uywgd3guRk9OVFNUWUxFX05PUk1BTCwgd3guRk9OVFdFSUdIVF9CT0xELCBGYWxzZSkKKystICAg ICAgICAgICAgc2VsZi5fdGV4dHNpemUgPSAxMC4wCisrKyAgICAgICAgICAgIHNlbGYuX3RleHRz aXplID0gMTAKKysgICAgICAgICAgICAgc2VsZi5fdGV4dGZvbnQuU2V0UG9pbnRTaXplKHNlbGYu X3RleHRzaXplKQorKyAgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgIHNlbGYuX3RleHRmb250 ID0gZm9udAorK2RpZmYgLS1naXQgYS93eC9saWIvYWd3L2F1aS9hdWlib29rLnB5IGIvd3gvbGli L2Fndy9hdWkvYXVpYm9vay5weQorK2luZGV4IGJhN2NmNDcyMS4uZjVhZDJhNTY4IDEwMDY0NAor Ky0tLSBhL3d4L2xpYi9hZ3cvYXVpL2F1aWJvb2sucHkKKysrKysgYi93eC9saWIvYWd3L2F1aS9h dWlib29rLnB5CisrQEAgLTM0NTIsOCArMzQ1Miw4IEBAIGRlZiBDYWxjdWxhdGVOZXdTcGxpdFNp emUoc2VsZik6CisrICAgICAgICAgIyBzaG91bGQgaGFwcGVuIGFyb3VuZCB0aGUgbWlkZGxlCisr ICAgICAgICAgaWYgdGFiX2N0cmxfY291bnQgPCAyOgorKyAgICAgICAgICAgICBuZXdfc3BsaXRf c2l6ZSA9IHNlbGYuR2V0Q2xpZW50U2l6ZSgpCisrLSAgICAgICAgICAgIG5ld19zcGxpdF9zaXpl LnggLz0gMgorKy0gICAgICAgICAgICBuZXdfc3BsaXRfc2l6ZS55IC89IDIKKysrICAgICAgICAg ICAgbmV3X3NwbGl0X3NpemUueCAvLz0gMgorKysgICAgICAgICAgICBuZXdfc3BsaXRfc2l6ZS55 IC8vPSAyCisrIAorKyAgICAgICAgIGVsc2U6CisrIAorK2RpZmYgLS1naXQgYS93eC9saWIvYWd3 L2JhbGxvb250aXAucHkgYi93eC9saWIvYWd3L2JhbGxvb250aXAucHkKKytpbmRleCBiNDE1NWQ3 NGEuLjU3YmFjYTcyOSAxMDA2NDQKKystLS0gYS93eC9saWIvYWd3L2JhbGxvb250aXAucHkKKysr KysgYi93eC9saWIvYWd3L2JhbGxvb250aXAucHkKKytAQCAtNjE1LDcgKzYxNSw3IEBAIGRlZiBT ZXRTdGFydERlbGF5KHNlbGYsIGRlbGF5PTEpOgorKyAgICAgICAgIGlmIGRlbGF5IDwgMToKKysg ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJcbkVSUk9SOiBEZWxheSBUaW1lIEZvciBCYWxs b29uVGlwIENyZWF0aW9uIFNob3VsZCBCZSBHcmVhdGVyIFRoYW4gMSBtcyIpCisrIAorKy0gICAg ICAgIHNlbGYuX3N0YXJ0ZGVsYXl0aW1lID0gZmxvYXQoZGVsYXkpCisrKyAgICAgICAgc2VsZi5f c3RhcnRkZWxheXRpbWUgPSBpbnQoZGVsYXkpCisrIAorKyAKKysgICAgIGRlZiBHZXRTdGFydERl bGF5KHNlbGYpOgorK0BAIC02NDAsNyArNjQwLDcgQEAgZGVmIFNldEVuZERlbGF5KHNlbGYsIGRl bGF5PTFlNik6CisrICAgICAgICAgaWYgZGVsYXkgPCAxOgorKyAgICAgICAgICAgICByYWlzZSBF eGNlcHRpb24oIlxuRVJST1I6IERlbGF5IFRpbWUgRm9yIEJhbGxvb25UaXAgRGVzdHJ1Y3Rpb24g U2hvdWxkIEJlIEdyZWF0ZXIgVGhhbiAxIG1zIikKKysgCisrLSAgICAgICAgc2VsZi5fZW5kZGVs YXl0aW1lID0gZmxvYXQoZGVsYXkpCisrKyAgICAgICAgc2VsZi5fZW5kZGVsYXl0aW1lID0gaW50 KGRlbGF5KQorKyAKKysgCisrICAgICBkZWYgR2V0RW5kRGVsYXkoc2VsZik6CisrZGlmZiAtLWdp dCBhL3d4L2xpYi9hZ3cvZmxhdG1lbnUucHkgYi93eC9saWIvYWd3L2ZsYXRtZW51LnB5CisraW5k ZXggNWJhMjhlNTg0Li44NWYyOTViODYgMTAwNjQ0CisrLS0tIGEvd3gvbGliL2Fndy9mbGF0bWVu dS5weQorKysrKyBiL3d4L2xpYi9hZ3cvZmxhdG1lbnUucHkKKytAQCAtNzM2LDggKzczNiw4IEBA IGRlZiBEcmF3U2VwYXJhdG9yKHNlbGYsIGRjLCB4Q29vcmQsIHlDb29yZCwgdGV4dFgsIHNlcFdp ZHRoKToKKysgICAgICAgICAiIiIKKysgCisrICAgICAgICAgZGNzYXZlciA9IERDU2F2ZXIoZGMp CisrLSAgICAgICAgc2VwUmVjdDEgPSB3eC5SZWN0KHhDb29yZCArIHRleHRYLCB5Q29vcmQgKyAx LCBzZXBXaWR0aC8yLCAxKQorKy0gICAgICAgIHNlcFJlY3QyID0gd3guUmVjdCh4Q29vcmQgKyB0 ZXh0WCArIHNlcFdpZHRoLzIsIHlDb29yZCArIDEsIHNlcFdpZHRoLzItMSwgMSkKKysrICAgICAg ICBzZXBSZWN0MSA9IHd4LlJlY3QoeENvb3JkICsgdGV4dFgsIHlDb29yZCArIDEsIHNlcFdpZHRo Ly8yLCAxKQorKysgICAgICAgIHNlcFJlY3QyID0gd3guUmVjdCh4Q29vcmQgKyB0ZXh0WCArIHNl cFdpZHRoLy8yLCB5Q29vcmQgKyAxLCBzZXBXaWR0aC8vMi0xLCAxKQorKyAKKysgICAgICAgICBh cnRNZ3IgPSBBcnRNYW5hZ2VyLkdldCgpCisrICAgICAgICAgYmFja0NvbG91ciA9IGFydE1nci5H ZXRNZW51RmFjZUNvbG91cigpCisrQEAgLTgxNywxMSArODE3LDExIEBAIGRlZiBEcmF3TWVudUl0 ZW0oc2VsZiwgaXRlbSwgZGMsIHhDb29yZCwgeUNvb3JkLCBpbWFnZU1hcmdpblgsIG1hcmtlck1h cmdpblgsIHRlCisrICAgICAgICAgICAgIGltZ1dpZHRoICA9IGJtcC5HZXRXaWR0aCgpCisrIAor KyAgICAgICAgICAgICBpZiBpbWFnZU1hcmdpblggPT0gMDoKKystICAgICAgICAgICAgICAgIHh4 ID0gcmVjdC54ICsgKGxlZnRNYXJnaW5XaWR0aCAtIGltZ1dpZHRoKS8yCisrKyAgICAgICAgICAg ICAgICB4eCA9IHJlY3QueCArIChsZWZ0TWFyZ2luV2lkdGggLSBpbWdXaWR0aCkvLzIKKysgICAg ICAgICAgICAgZWxzZToKKystICAgICAgICAgICAgICAgIHh4ID0gcmVjdC54ICsgKChsZWZ0TWFy Z2luV2lkdGggLSByZWN0LmhlaWdodCkgLSBpbWdXaWR0aCkvMiArIHJlY3QuaGVpZ2h0CisrKyAg ICAgICAgICAgICAgICB4eCA9IHJlY3QueCArICgobGVmdE1hcmdpbldpZHRoIC0gcmVjdC5oZWln aHQpIC0gaW1nV2lkdGgpLy8yICsgcmVjdC5oZWlnaHQKKysgCisrLSAgICAgICAgICAgIHl5ID0g cmVjdC55ICsgKHJlY3QuaGVpZ2h0IC0gaW1nSGVpZ2h0KS8yCisrKyAgICAgICAgICAgIHl5ID0g cmVjdC55ICsgKHJlY3QuaGVpZ2h0IC0gaW1nSGVpZ2h0KS8vMgorKyAgICAgICAgICAgICBkYy5E cmF3Qml0bWFwKGJtcCwgeHgsIHl5LCBUcnVlKQorKyAKKysgICAgICAgICBpZiBpdGVtLkdldEtp bmQoKSA9PSB3eC5JVEVNX0NIRUNLOgorK0BAIC04MzcsNyArODM3LDcgQEAgZGVmIERyYXdNZW51 SXRlbShzZWxmLCBpdGVtLCBkYywgeENvb3JkLCB5Q29vcmQsIGltYWdlTWFyZ2luWCwgbWFya2Vy TWFyZ2luWCwgdGUKKysgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxlY3RlZCBhbmQgc2VsZi5o aWdobGlnaHRDaGVja0FuZFJhZGlvOgorKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuRHJhd0J1 dHRvbihkYywgcnIsIENvbnRyb2xGb2N1cykKKysgCisrLSAgICAgICAgICAgICAgICBkYy5EcmF3 Qml0bWFwKGl0ZW0uX2NoZWNrTWFya0JtcCwgcnIueCArIChyci53aWR0aCAtIDE2KS8yLCByci55 ICsgKHJyLmhlaWdodCAtIDE2KS8yLCBUcnVlKQorKysgICAgICAgICAgICAgICAgZGMuRHJhd0Jp dG1hcChpdGVtLl9jaGVja01hcmtCbXAsIHJyLnggKyAocnIud2lkdGggLSAxNikvLzIsIHJyLnkg KyAocnIuaGVpZ2h0IC0gMTYpLy8yLCBUcnVlKQorKyAKKysgICAgICAgICBpZiBpdGVtLkdldEtp bmQoKSA9PSB3eC5JVEVNX1JBRElPOgorKyAKKytAQCAtODUyLDcgKzg1Miw3IEBAIGRlZiBEcmF3 TWVudUl0ZW0oc2VsZiwgaXRlbSwgZGMsIHhDb29yZCwgeUNvb3JkLCBpbWFnZU1hcmdpblgsIG1h cmtlck1hcmdpblgsIHRlCisrICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZWN0ZWQgYW5kIHNl bGYuaGlnaGxpZ2h0Q2hlY2tBbmRSYWRpbzoKKysgICAgICAgICAgICAgICAgICAgICBzZWxmLkRy YXdCdXR0b24oZGMsIHJyLCBDb250cm9sRm9jdXMpCisrIAorKy0gICAgICAgICAgICAgICAgZGMu RHJhd0JpdG1hcChpdGVtLl9yYWRpb01hcmtCbXAsIHJyLnggKyAocnIud2lkdGggLSAxNikvMiwg cnIueSArIChyci5oZWlnaHQgLSAxNikvMiwgVHJ1ZSkKKysrICAgICAgICAgICAgICAgIGRjLkRy YXdCaXRtYXAoaXRlbS5fcmFkaW9NYXJrQm1wLCByci54ICsgKHJyLndpZHRoIC0gMTYpLy8yLCBy ci55ICsgKHJyLmhlaWdodCAtIDE2KS8vMiwgVHJ1ZSkKKysgCisrICAgICAgICAgIyBEcmF3IHRl eHQgLSB3aXRob3V0IGFjY2VsZXJhdG9ycworKyAgICAgICAgIHRleHQgPSBpdGVtLkdldExhYmVs KCkKKytAQCAtODkwLDcgKzg5MCw3IEBAIGRlZiBEcmF3TWVudUl0ZW0oc2VsZiwgaXRlbSwgZGMs IHhDb29yZCwgeUNvb3JkLCBpbWFnZU1hcmdpblgsIG1hcmtlck1hcmdpblgsIHRlCisrICAgICAg ICAgICAgICAgICB3MywgZHVtbXkgPSBkYy5HZXRUZXh0RXh0ZW50KHRleHQzKQorKyAKKysgICAg ICAgICAgICAgICAgIHBvc3ggPSB4Q29vcmQgKyB0ZXh0WCArIGJvcmRlclhTaXplCisrLSAgICAg ICAgICAgICAgICBwb3N5ID0gKGl0ZW1IZWlnaHQgLSBoKS8yICsgeUNvb3JkCisrKyAgICAgICAg ICAgICAgICBwb3N5ID0gKGl0ZW1IZWlnaHQgLSBoKS8vMiArIHlDb29yZAorKyAKKysgICAgICAg ICAgICAgICAgICMgRHJhdyBmaXJzdCBwYXJ0CisrICAgICAgICAgICAgICAgICBkYy5EcmF3VGV4 dCh0ZXh0MSwgcG9zeCwgcG9zeSkKKytAQCAtOTEyLDcgKzkxMiw3IEBAIGRlZiBEcmF3TWVudUl0 ZW0oc2VsZiwgaXRlbSwgZGMsIHhDb29yZCwgeUNvb3JkLCBpbWFnZU1hcmdpblgsIG1hcmtlck1h cmdpblgsIHRlCisrICAgICAgICAgICAgIGVsc2U6CisrIAorKyAgICAgICAgICAgICAgICAgdywg aCA9IGRjLkdldFRleHRFeHRlbnQodGV4dCkKKystICAgICAgICAgICAgICAgIGRjLkRyYXdUZXh0 KHRleHQsIHhDb29yZCArIHRleHRYICsgYm9yZGVyWFNpemUsIChpdGVtSGVpZ2h0IC0gaCkvMiAr IHlDb29yZCkKKysrICAgICAgICAgICAgICAgIGRjLkRyYXdUZXh0KHRleHQsIHhDb29yZCArIHRl eHRYICsgYm9yZGVyWFNpemUsIChpdGVtSGVpZ2h0IC0gaCkvLzIgKyB5Q29vcmQpCisrIAorKyAK KysgICAgICAgICAjIE5vdyBkcmF3IGFjY2VsZXJhdG9yCisrQEAgLTkyMCw3ICs5MjAsNyBAQCBk ZWYgRHJhd01lbnVJdGVtKHNlbGYsIGl0ZW0sIGRjLCB4Q29vcmQsIHlDb29yZCwgaW1hZ2VNYXJn aW5YLCBtYXJrZXJNYXJnaW5YLCB0ZQorKyAgICAgICAgIGlmIGl0ZW0uR2V0QWNjZWxTdHJpbmco KToKKysgCisrICAgICAgICAgICAgIGFjY2VsV2lkdGgsIGFjY2VsSGVpZ2h0ID0gZGMuR2V0VGV4 dEV4dGVudChpdGVtLkdldEFjY2VsU3RyaW5nKCkpCisrLSAgICAgICAgICAgIGRjLkRyYXdUZXh0 KGl0ZW0uR2V0QWNjZWxTdHJpbmcoKSwgeENvb3JkICsgcmlnaHRNYXJnaW5YIC0gYWNjZWxXaWR0 aCwgKGl0ZW1IZWlnaHQgLSBhY2NlbEhlaWdodCkvMiArIHlDb29yZCkKKysrICAgICAgICAgICAg ZGMuRHJhd1RleHQoaXRlbS5HZXRBY2NlbFN0cmluZygpLCB4Q29vcmQgKyByaWdodE1hcmdpblgg LSBhY2NlbFdpZHRoLCAoaXRlbUhlaWdodCAtIGFjY2VsSGVpZ2h0KS8vMiArIHlDb29yZCkKKysg CisrICAgICAgICAgIyBDaGVjayBpZiB0aGlzIGl0ZW0gaGFzIHN1Yi1tZW51IC0gaWYgaXQgZG9l cywgZHJhdworKyAgICAgICAgICMgcmlnaHQgYXJyb3cgb24gdGhlIHJpZ2h0IG1hcmdpbgorK0BA IC05MzIsNyArOTMyLDcgQEAgZGVmIERyYXdNZW51SXRlbShzZWxmLCBpdGVtLCBkYywgeENvb3Jk LCB5Q29vcmQsIGltYWdlTWFyZ2luWCwgbWFya2VyTWFyZ2luWCwgdGUKKysgCisrICAgICAgICAg ICAgIHh4ID0geENvb3JkICsgcmlnaHRNYXJnaW5YICsgYm9yZGVyWFNpemUKKysgICAgICAgICAg ICAgcnIgPSB3eC5SZWN0KHh4LCByZWN0LnkgKyAxLCByZWN0LmhlaWdodC0yLCByZWN0LmhlaWdo dC0yKQorKy0gICAgICAgICAgICBkYy5EcmF3Qml0bWFwKHJpZ2h0QXJyb3dCbXAsIHJyLnggKyA0 LCByci55ICsocnIuaGVpZ2h0LTE2KS8yLCBUcnVlKQorKysgICAgICAgICAgICBkYy5EcmF3Qml0 bWFwKHJpZ2h0QXJyb3dCbXAsIHJyLnggKyA0LCByci55ICsocnIuaGVpZ2h0LTE2KS8vMiwgVHJ1 ZSkKKysgCisrIAorKyAgICAgZGVmIERyYXdNZW51QmFyQnV0dG9uKHNlbGYsIGRjLCByZWN0LCBz dGF0ZSk6CisrQEAgLTExNDIsNyArMTE0Miw3IEBAIGRlZiBEcmF3TWVudUJhcihzZWxmLCBtZW51 YmFyLCBkYyk6CisrICAgICAgICAgICAgICMgR2V0IHRoZSBtZW51IGl0ZW0gcmVjdAorKyAgICAg ICAgICAgICB0ZXh0V2lkdGgsIHRleHRIZWlnaHQgPSBkYy5HZXRUZXh0RXh0ZW50KGZpeGVkVGV4 dCkKKysgICAgICAgICAgICAgI3JlY3QgPSB3eC5SZWN0KHBvc3grbWVudWJhci5fc3BhY2VyLzIs IHBvc3ksIHRleHRXaWR0aCwgdGV4dEhlaWdodCkKKystICAgICAgICAgICAgcmVjdCA9IHd4LlJl Y3QocG9zeCtwYWRkaW5nLzIsIHBvc3ksIHRleHRXaWR0aCwgdGV4dEhlaWdodCkKKysrICAgICAg ICAgICAgcmVjdCA9IHd4LlJlY3QocG9zeCtwYWRkaW5nLy8yLCBwb3N5LCB0ZXh0V2lkdGgsIHRl eHRIZWlnaHQpCisrIAorKyAgICAgICAgICAgICAjIENhbiB3ZSBkcmF3IG1vcmU/PworKyAgICAg ICAgICAgICAjIHRoZSArRFJPUF9ET1dOX0FSUk9XX1dJRFRIICBpcyB0aGUgd2lkdGggb2YgdGhl IGRyb3AgZG93biBhcnJvdworK0BAIC0xMTcyLDcgKzExNzIsNyBAQCBkZWYgRHJhd01lbnVCYXIo c2VsZiwgbWVudWJhciwgZGMpOgorKyAgICAgICAgICAgICAgICAgZGMuU2V0VGV4dEZvcmVncm91 bmQodGV4dENvbG91cikKKysgCisrICAgICAgICAgICAgIHd3LCBoaCA9IGRjLkdldFRleHRFeHRl bnQobGFiZWxPbmx5KQorKy0gICAgICAgICAgICB0ZXh0T2Zmc2V0ID0gKHJlY3Qud2lkdGggLSB3 dykgLyAyCisrKyAgICAgICAgICAgIHRleHRPZmZzZXQgPSAocmVjdC53aWR0aCAtIHd3KSAvLyAy CisrIAorKyAgICAgICAgICAgICBpZiBub3QgbWVudWJhci5faXNMQ0QgYW5kIGl0ZW0uR2V0VGV4 dEJpdG1hcCgpLklzT2soKSBhbmQgbm90IHNlbGVjdGVkOgorKyAgICAgICAgICAgICAgICAgZGMu RHJhd0JpdG1hcChpdGVtLkdldFRleHRCaXRtYXAoKSwgcmVjdC54LCByZWN0LnksIFRydWUpCisr QEAgLTE1MDUsOCArMTUwNSw4IEBAIGRlZiBEcmF3QnV0dG9uQ29sb3VyKHNlbGYsIGRjLCByZWN0 LCBzdGF0ZSwgY29sb3VyKToKKysgICAgICAgICBiYXNlQ29sb3VyID0gY29sb3VyCisrIAorKyAg ICAgICAgICMgRGVmaW5lIHRoZSBtaWRkbGUgcG9pbnRzCisrLSAgICAgICAgbGVmdFB0ID0gd3gu UG9pbnQocmVjdC54LCByZWN0LnkgKyAocmVjdC5oZWlnaHQgLyAyKSkKKystICAgICAgICByaWdo dFB0ID0gd3guUG9pbnQocmVjdC54ICsgcmVjdC53aWR0aC0xLCByZWN0LnkgKyAocmVjdC5oZWln aHQgLyAyKSkKKysrICAgICAgICBsZWZ0UHQgPSB3eC5Qb2ludChyZWN0LngsIHJlY3QueSArIChy ZWN0LmhlaWdodCAvLyAyKSkKKysrICAgICAgICByaWdodFB0ID0gd3guUG9pbnQocmVjdC54ICsg cmVjdC53aWR0aC0xLCByZWN0LnkgKyAocmVjdC5oZWlnaHQgLy8gMikpCisrIAorKyAgICAgICAg ICMgRGVmaW5lIHRoZSB0b3AgcmVnaW9uCisrICAgICAgICAgdG9wID0gd3guUmVjdCgocmVjdC5H ZXRMZWZ0KCksIHJlY3QuR2V0VG9wKCkpLCByaWdodFB0KQorK0BAIC0xNTcyLDExICsxNTcyLDEx IEBAIGRlZiBEcmF3TWVudUJhckJhY2tncm91bmQoc2VsZiwgZGMsIHJlY3QpOgorKyAKKysgICAg ICAgICBmYWN0b3IgPSBhcnRNZ3IuR2V0TWVudUJnRmFjdG9yKCkKKysgCisrLSAgICAgICAgbGVm dFB0MSA9IHd4LlBvaW50KHJlY3QueCwgcmVjdC55ICsgKHJlY3QuaGVpZ2h0IC8gZmFjdG9yKSkK KystICAgICAgICBsZWZ0UHQyID0gd3guUG9pbnQocmVjdC54LCByZWN0LnkgKyAocmVjdC5oZWln aHQgLyBmYWN0b3IpKihmYWN0b3ItMSkpCisrKyAgICAgICAgbGVmdFB0MSA9IHd4LlBvaW50KHJl Y3QueCwgcmVjdC55ICsgKHJlY3QuaGVpZ2h0IC8vIGZhY3RvcikpCisrKyAgICAgICAgbGVmdFB0 MiA9IHd4LlBvaW50KHJlY3QueCwgcmVjdC55ICsgKHJlY3QuaGVpZ2h0IC8vIGZhY3RvcikqKGZh Y3Rvci0xKSkKKysgCisrLSAgICAgICAgcmlnaHRQdDEgPSB3eC5Qb2ludChyZWN0LnggKyByZWN0 LndpZHRoLCByZWN0LnkgKyAocmVjdC5oZWlnaHQgLyBmYWN0b3IpKQorKy0gICAgICAgIHJpZ2h0 UHQyID0gd3guUG9pbnQocmVjdC54ICsgcmVjdC53aWR0aCwgcmVjdC55ICsgKHJlY3QuaGVpZ2h0 IC8gZmFjdG9yKSooZmFjdG9yLTEpKQorKysgICAgICAgIHJpZ2h0UHQxID0gd3guUG9pbnQocmVj dC54ICsgcmVjdC53aWR0aCwgcmVjdC55ICsgKHJlY3QuaGVpZ2h0IC8vIGZhY3RvcikpCisrKyAg ICAgICAgcmlnaHRQdDIgPSB3eC5Qb2ludChyZWN0LnggKyByZWN0LndpZHRoLCByZWN0LnkgKyAo cmVjdC5oZWlnaHQgLy8gZmFjdG9yKSooZmFjdG9yLTEpKQorKyAKKysgICAgICAgICAjIERlZmlu ZSB0aGUgdG9wIHJlZ2lvbgorKyAgICAgICAgIHRvcFJlZyA9IFt3eC5Qb2ludCgpIGZvciBpaSBp biByYW5nZSg3KV0KKytAQCAtMjcwNyw3ICsyNzA3LDcgQEAgZGVmIERyYXdUb29sYmFyKHNlbGYs IGRjLCByZWN0KToKKysgICAgICAgICAgICAgZWxpZiB0Ykl0ZW0uSXNDdXN0b21Db250cm9sKCk6 CisrICAgICAgICAgICAgICAgICBjb250cm9sID0gdGJJdGVtLkdldEN1c3RvbUNvbnRyb2woKQor KyAgICAgICAgICAgICAgICAgY3RybFNpemUgPSBjb250cm9sLkdldFNpemUoKQorKy0gICAgICAg ICAgICAgICAgY3RybFBvcyA9IHd4LlBvaW50KHh4LCByZWN0LnkgKyAocmVjdC5oZWlnaHQgLSBj dHJsU2l6ZS55KS8yKQorKysgICAgICAgICAgICAgICAgY3RybFBvcyA9IHd4LlBvaW50KHh4LCBy ZWN0LnkgKyAocmVjdC5oZWlnaHQgLSBjdHJsU2l6ZS55KS8vMikKKysgICAgICAgICAgICAgICAg IGlmIGNvbnRyb2wuR2V0UG9zaXRpb24oKSAhPSBjdHJsUG9zOgorKyAgICAgICAgICAgICAgICAg ICAgIGNvbnRyb2wuU2V0UG9zaXRpb24oY3RybFBvcykKKysgCisrQEAgLTI3MjcsOSArMjcyNyw5 IEBAIGRlZiBEcmF3VG9vbGJhcihzZWxmLCBkYywgcmVjdCk6CisrICAgICAgICAgICAgICMgRHJh dyB0aGUgdG9vbGJhciBpbWFnZQorKyAgICAgICAgICAgICBpZiBibXAuSXNPaygpOgorKyAKKyst ICAgICAgICAgICAgICAgIHggPSB4eCAtIHNlbGYuX3Rvb2xiYXJTcGFjZXIvMgorKysgICAgICAg ICAgICAgICAgeCA9IHh4IC0gc2VsZi5fdG9vbGJhclNwYWNlci8vMgorKyAgICAgICAgICAgICAg ICAgI3kgPSByZWN0LnkgKyAocmVjdC5oZWlnaHQgLSBibXAuR2V0SGVpZ2h0KCkpLzIgLSAxCisr LSAgICAgICAgICAgICAgICB5ID0gcmVjdC55ICsgc2VsZi5fdG9vbGJhck1hcmdpbi8yCisrKyAg ICAgICAgICAgICAgICB5ID0gcmVjdC55ICsgc2VsZi5fdG9vbGJhck1hcmdpbi8vMgorKyAKKysg ICAgICAgICAgICAgICAgIGJ1dHRvblJlY3QgPSB3eC5SZWN0KHgsIHksIGhpZ2hsaWdodF93aWR0 aCwgaGlnaGxpZ2h0X2hlaWdodCkKKysgCisrQEAgLTI3NDUsOCArMjc0NSw4IEBAIGRlZiBEcmF3 VG9vbGJhcihzZWxmLCBkYywgcmVjdCk6CisrICAgICAgICAgICAgICAgICAgICAgZWxzZToKKysg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGJCdXR0b25zW2ldLl9zdGF0ZSA9IENvbnRy b2xOb3JtYWwKKysgCisrLSAgICAgICAgICAgICAgICBpbWd4ID0gYnV0dG9uUmVjdC54ICsgKGJ1 dHRvblJlY3Qud2lkdGggLSBibXAuR2V0V2lkdGgoKSkvMgorKy0gICAgICAgICAgICAgICAgaW1n eSA9IGJ1dHRvblJlY3QueSArIChidXR0b25SZWN0LmhlaWdodCAtIGJtcC5HZXRIZWlnaHQoKSkv MgorKysgICAgICAgICAgICAgICAgaW1neCA9IGJ1dHRvblJlY3QueCArIChidXR0b25SZWN0Lndp ZHRoIC0gYm1wLkdldFdpZHRoKCkpLy8yCisrKyAgICAgICAgICAgICAgICBpbWd5ID0gYnV0dG9u UmVjdC55ICsgKGJ1dHRvblJlY3QuaGVpZ2h0IC0gYm1wLkdldEhlaWdodCgpKS8vMgorKyAKKysg ICAgICAgICAgICAgICAgIGlmIHNlbGYuX3RiQnV0dG9uc1tpXS5fc3RhdGUgPT0gQ29udHJvbEZv Y3VzIGFuZCBub3Qgc2VsZi5fdGJCdXR0b25zW2ldLl90Ykl0ZW0uSXNTZWxlY3RlZCgpOgorKyAK KytAQCAtMjgyNyw4ICsyODI3LDggQEAgZGVmIERyYXdNb3JlQnV0dG9uKHNlbGYsIGRjLCBzdGF0 ZSk6CisrICAgICAgICAgZHJvcEFycm93Qm1wID0gc2VsZi5HZXRSZW5kZXJlcigpLl9iaXRtYXBz WyJhcnJvd19kb3duIl0KKysgCisrICAgICAgICAgIyBDYWxjIHRoZSBpbWFnZSBjb29yZGluYXRl cworKy0gICAgICAgIHh4ID0gcmVjdC54ICsgKERST1BfRE9XTl9BUlJPV19XSURUSCAtIGRyb3BB cnJvd0JtcC5HZXRXaWR0aCgpKS8yCisrLSAgICAgICAgeXkgPSByZWN0LnkgKyAocmVjdC5oZWln aHQgLSBkcm9wQXJyb3dCbXAuR2V0SGVpZ2h0KCkpLzIKKysrICAgICAgICB4eCA9IHJlY3QueCAr IChEUk9QX0RPV05fQVJST1dfV0lEVEggLSBkcm9wQXJyb3dCbXAuR2V0V2lkdGgoKSkvLzIKKysr ICAgICAgICB5eSA9IHJlY3QueSArIChyZWN0LmhlaWdodCAtIGRyb3BBcnJvd0JtcC5HZXRIZWln aHQoKSkvLzIKKysgCisrICAgICAgICAgZGMuRHJhd0JpdG1hcChkcm9wQXJyb3dCbXAsIHh4LCB5 eSArIHNlbGYuX3NwYWNlciwgVHJ1ZSkKKysgICAgICAgICBzZWxmLl9kcm9wRG93bkJ1dHRvblN0 YXRlID0gc3RhdGUKKytAQCAtMzI2OSw4ICszMjY5LDggQEAgZGVmIERyYXdUb29sYmFySXRlbShz ZWxmLCBkYywgaWR4LCBzdGF0ZSk6CisrIAorKyAgICAgICAgICMgZHJhdyB0aGUgYml0bWFwIG92 ZXIgdGhlIGhpZ2hsaWdodAorKyAgICAgICAgIGJ1dHRvblJlY3QgPSB3eC5SZWN0KCpyZWN0KQor Ky0gICAgICAgIHggPSByZWN0LnggKyAoYnV0dG9uUmVjdC53aWR0aCAtIHNlbGYuX3RiQnV0dG9u c1tpZHhdLl90Ykl0ZW0uR2V0Qml0bWFwKCkuR2V0V2lkdGgoKSkvMgorKy0gICAgICAgIHkgPSBy ZWN0LnkgKyAoYnV0dG9uUmVjdC5oZWlnaHQgLSBzZWxmLl90YkJ1dHRvbnNbaWR4XS5fdGJJdGVt LkdldEJpdG1hcCgpLkdldEhlaWdodCgpKS8yCisrKyAgICAgICAgeCA9IHJlY3QueCArIChidXR0 b25SZWN0LndpZHRoIC0gc2VsZi5fdGJCdXR0b25zW2lkeF0uX3RiSXRlbS5HZXRCaXRtYXAoKS5H ZXRXaWR0aCgpKS8vMgorKysgICAgICAgIHkgPSByZWN0LnkgKyAoYnV0dG9uUmVjdC5oZWlnaHQg LSBzZWxmLl90YkJ1dHRvbnNbaWR4XS5fdGJJdGVtLkdldEJpdG1hcCgpLkdldEhlaWdodCgpKS8v MgorKyAKKysgICAgICAgICBpZiBzdGF0ZSA9PSBDb250cm9sRm9jdXM6CisrIAorK0BAIC0zNzg0 LDcgKzM3ODQsNyBAQCBkZWYgUG9zaXRpb25BVUkoc2VsZiwgbWdyLCBmaXhUb29sYmFyPVRydWUp OgorKyAgICAgICAgIHBuLk5hbWUoImZsYXRfbWVudV9iYXIiKQorKyAgICAgICAgIHBuLkNhcHRp b24oIk1lbnUgQmFyIikKKysgICAgICAgICBwbi5Ub3AoKQorKy0gICAgICAgIHBuLk1pblNpemUo d3guU2l6ZSh4eC8yLCBzZWxmLl9iYXJIZWlnaHQpKQorKysgICAgICAgIHBuLk1pblNpemUod3gu U2l6ZSh4eC8vMiwgc2VsZi5fYmFySGVpZ2h0KSkKKysgICAgICAgICBwbi5MZWZ0RG9ja2FibGUo RmFsc2UpCisrICAgICAgICAgcG4uUmlnaHREb2NrYWJsZShGYWxzZSkKKysgICAgICAgICBwbi5U b29sYmFyUGFuZSgpCisrQEAgLTM5OTcsOCArMzk5Nyw4IEBAIGRlZiBEcmF3KHNlbGYsIGRjKToK KysgICAgICAgICAiIiIKKysgCisrICAgICAgICAgcmVjdCA9IHd4LlJlY3Qoc2VsZi5fcG9zLCBz ZWxmLl9zaXplKQorKy0gICAgICAgIHh4ID0gcmVjdC54ICsgKHJlY3Qud2lkdGggLSBzZWxmLl9u b3JtYWxCbXAuR2V0V2lkdGgoKSkvMgorKy0gICAgICAgIHl5ID0gcmVjdC55ICsgKHJlY3QuaGVp Z2h0IC0gc2VsZi5fbm9ybWFsQm1wLkdldEhlaWdodCgpKS8yCisrKyAgICAgICAgeHggPSByZWN0 LnggKyAocmVjdC53aWR0aCAtIHNlbGYuX25vcm1hbEJtcC5HZXRXaWR0aCgpKS8vMgorKysgICAg ICAgIHl5ID0gcmVjdC55ICsgKHJlY3QuaGVpZ2h0IC0gc2VsZi5fbm9ybWFsQm1wLkdldEhlaWdo dCgpKS8vMgorKyAKKysgICAgICAgICBzZWxmLl9wYXJlbnQuR2V0UmVuZGVyZXIoKS5EcmF3U2Ny b2xsQnV0dG9uKGRjLCByZWN0LCBzZWxmLl9zdGF0ZSkKKysgICAgICAgICBkYy5EcmF3Qml0bWFw KHNlbGYuX25vcm1hbEJtcCwgeHgsIHl5LCBUcnVlKQorK2RpZmYgLS1naXQgYS93eC9saWIvYWd3 L2ZsYXRub3RlYm9vay5weSBiL3d4L2xpYi9hZ3cvZmxhdG5vdGVib29rLnB5CisraW5kZXggZjVl NTIwMGIyLi41NjE3NDliODkgMTAwNjQ0CisrLS0tIGEvd3gvbGliL2Fndy9mbGF0bm90ZWJvb2su cHkKKysrKysgYi93eC9saWIvYWd3L2ZsYXRub3RlYm9vay5weQorK0BAIC04NTgsOSArODU4LDkg QEAgZGVmIFBhaW50U3RyYWlnaHRHcmFkaWVudEJveChkYywgcmVjdCwgc3RhcnRDb2xvdXIsIGVu ZENvbG91ciwgdmVydGljYWw9VHJ1ZSk6CisrIAorKyAgICAgZm9yIGkgaW4gcmFuZ2UoaGlnaCsx KToKKysgCisrLSAgICAgICAgciA9IHN0YXJ0Q29sb3VyLlJlZCgpICsgKChpKnJkKjEwMCkvaGln aCkvMTAwCisrLSAgICAgICAgZyA9IHN0YXJ0Q29sb3VyLkdyZWVuKCkgKyAoKGkqZ2QqMTAwKS9o aWdoKS8xMDAKKystICAgICAgICBiID0gc3RhcnRDb2xvdXIuQmx1ZSgpICsgKChpKmJkKjEwMCkv aGlnaCkvMTAwCisrKyAgICAgICAgciA9IHN0YXJ0Q29sb3VyLlJlZCgpICsgKChpKnJkKjEwMCkv L2hpZ2gpLy8xMDAKKysrICAgICAgICBnID0gc3RhcnRDb2xvdXIuR3JlZW4oKSArICgoaSpnZCox MDApLy9oaWdoKS8vMTAwCisrKyAgICAgICAgYiA9IHN0YXJ0Q29sb3VyLkJsdWUoKSArICgoaSpi ZCoxMDApLy9oaWdoKS8vMTAwCisrIAorKyAgICAgICAgIHAgPSB3eC5QZW4od3guQ29sb3VyKHIs IGcsIGIpKQorKyAgICAgICAgIGRjLlNldFBlbihwKQorK0BAIC0yNjMxLDkgKzI2MzEsOSBAQCBk ZWYgRHJhd1RhYihzZWxmLCBwYWdlQ29udGFpbmVyLCBkYywgcG9zeCwgdGFiSWR4LCB0YWJXaWR0 aCwgdGFiSGVpZ2h0LCBidG5TdGF0dQorKyAgICAgICAgIGltYWdlWUNvb3JkID0gKHBjLkhhc0FH V0ZsYWcoRk5CX0JPVFRPTSkgYW5kIFs2XSBvciBbOF0pWzBdCisrIAorKyAgICAgICAgIGlmIGhh c0ltYWdlOgorKy0gICAgICAgICAgICB0ZXh0T2Zmc2V0ID0gMipwYy5fcFBhcmVudC5fblBhZGRp bmcgKyAxNiArIHNoYXBlUG9pbnRzLzIKKysrICAgICAgICAgICAgdGV4dE9mZnNldCA9IDIqcGMu X3BQYXJlbnQuX25QYWRkaW5nICsgMTYgKyBzaGFwZVBvaW50cy8vMgorKyAgICAgICAgIGVsc2U6 CisrLSAgICAgICAgICAgIHRleHRPZmZzZXQgPSBwYy5fcFBhcmVudC5fblBhZGRpbmcgKyBzaGFw ZVBvaW50cy8yCisrKyAgICAgICAgICAgIHRleHRPZmZzZXQgPSBwYy5fcFBhcmVudC5fblBhZGRp bmcgKyBzaGFwZVBvaW50cy8vMgorKyAKKysgICAgICAgICB0ZXh0T2Zmc2V0ICs9IDIKKysgCisr ZGlmZiAtLWdpdCBhL3d4L2xpYi9hZ3cvZmxvYXRzcGluLnB5IGIvd3gvbGliL2Fndy9mbG9hdHNw aW4ucHkKKytpbmRleCBiZGJhZjg1ZWMuLjQ1NTllYjVkZSAxMDA2NDQKKystLS0gYS93eC9saWIv YWd3L2Zsb2F0c3Bpbi5weQorKysrKyBiL3d4L2xpYi9hZ3cvZmxvYXRzcGluLnB5CisrQEAgLTMz Niw3ICszMzYsNyBAQCBjbGFzcyBGbG9hdFNwaW4od3guQ29udHJvbCk6CisrICAgICAiIiIKKysg CisrICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCBpZD13eC5JRF9BTlksIHBvcz13eC5E ZWZhdWx0UG9zaXRpb24sCisrLSAgICAgICAgICAgICAgICAgc2l6ZT0oOTUsLTEpLCBzdHlsZT0w LCB2YWx1ZT0wLjAsIG1pbl92YWw9Tm9uZSwgbWF4X3ZhbD1Ob25lLAorKysgICAgICAgICAgICAg ICAgIHNpemU9d3guRGVmYXVsdFNpemUsIHN0eWxlPTAsIHZhbHVlPTAuMCwgbWluX3ZhbD1Ob25l LCBtYXhfdmFsPU5vbmUsCisrICAgICAgICAgICAgICAgICAgaW5jcmVtZW50PTEuMCwgZGlnaXRz PS0xLCBhZ3dTdHlsZT1GU19MRUZULAorKyAgICAgICAgICAgICAgICAgIG5hbWU9IkZsb2F0U3Bp biIpOgorKyAgICAgICAgICIiIgorK2RpZmYgLS1naXQgYS93eC9saWIvYWd3L2dyYWRpZW50YnV0 dG9uLnB5IGIvd3gvbGliL2Fndy9ncmFkaWVudGJ1dHRvbi5weQorK2luZGV4IGM0NjMzYjI5Ni4u NTg2MjVjNTA4IDEwMDY0NAorKy0tLSBhL3d4L2xpYi9hZ3cvZ3JhZGllbnRidXR0b24ucHkKKysr KysgYi93eC9saWIvYWd3L2dyYWRpZW50YnV0dG9uLnB5CisrQEAgLTQxMiwxNCArNDEyLDE0IEBA IGRlZiBPblBhaW50KHNlbGYsIGV2ZW50KToKKysgCisrICAgICAgICAgeCwgeSwgd2lkdGgsIGhl aWdodCA9IGNsaWVudFJlY3QKKysgCisrLSAgICAgICAgZ3JhZGllbnRSZWN0LlNldEhlaWdodChn cmFkaWVudFJlY3QuR2V0SGVpZ2h0KCkvMiArICgoY2FwdHVyZT09c2VsZiBhbmQgWzFdIG9yIFsw XSlbMF0pKQorKysgICAgICAgIGdyYWRpZW50UmVjdC5TZXRIZWlnaHQoZ3JhZGllbnRSZWN0Lkdl dEhlaWdodCgpLy8yICsgKChjYXB0dXJlPT1zZWxmIGFuZCBbMV0gb3IgWzBdKVswXSkpCisrICAg ICAgICAgaWYgY2FwdHVyZSAhPSBzZWxmOgorKyAgICAgICAgICAgICBpZiBzZWxmLl9tb3VzZUFj dGlvbiA9PSBIT1ZFUjoKKysgICAgICAgICAgICAgICAgIHRvcFN0YXJ0LCB0b3BFbmQgPSBzZWxm LkxpZ2h0Q29sb3VyKHNlbGYuX3RvcFN0YXJ0Q29sb3VyLCAxMCksIHNlbGYuTGlnaHRDb2xvdXIo c2VsZi5fdG9wRW5kQ29sb3VyLCAxMCkKKysgICAgICAgICAgICAgZWxzZToKKysgICAgICAgICAg ICAgICAgIHRvcFN0YXJ0LCB0b3BFbmQgPSBzZWxmLl90b3BTdGFydENvbG91ciwgc2VsZi5fdG9w RW5kQ29sb3VyCisrIAorKy0gICAgICAgICAgICByYzEgPSB3eC5SZWN0KHgsIHksIHdpZHRoLCBo ZWlnaHQvMikKKysrICAgICAgICAgICAgcmMxID0gd3guUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0 Ly8yKQorKyAgICAgICAgICAgICBwYXRoMSA9IHNlbGYuR2V0UGF0aChnYywgcmMxLCA4KQorKyAg ICAgICAgICAgICBicjEgPSBnYy5DcmVhdGVMaW5lYXJHcmFkaWVudEJydXNoKHgsIHksIHgsIHkr aGVpZ2h0LzIsIHRvcFN0YXJ0LCB0b3BFbmQpCisrICAgICAgICAgICAgIGdjLlNldEJydXNoKGJy MSkKKytAQCAtNDQ4LDcgKzQ0OCw3IEBAIGRlZiBPblBhaW50KHNlbGYsIGV2ZW50KToKKysgICAg ICAgICAgICAgZWxzZToKKysgICAgICAgICAgICAgICAgIGJvdHRvbVN0YXJ0LCBib3R0b21FbmQg PSBzZWxmLl9ib3R0b21TdGFydENvbG91ciwgc2VsZi5fYm90dG9tRW5kQ29sb3VyCisrIAorKy0g ICAgICAgICAgICByYzMgPSB3eC5SZWN0KHgsIHkraGVpZ2h0LzIsIHdpZHRoLCBoZWlnaHQvMikK KysrICAgICAgICAgICAgcmMzID0gd3guUmVjdCh4LCB5K2hlaWdodC8vMiwgd2lkdGgsIGhlaWdo dC8vMikKKysgICAgICAgICAgICAgcGF0aDMgPSBzZWxmLkdldFBhdGgoZ2MsIHJjMywgOCkKKysg ICAgICAgICAgICAgYnIzID0gZ2MuQ3JlYXRlTGluZWFyR3JhZGllbnRCcnVzaCh4LCB5K2hlaWdo dC8yLCB4LCB5K2hlaWdodCwgYm90dG9tU3RhcnQsIGJvdHRvbUVuZCkKKysgICAgICAgICAgICAg Z2MuU2V0QnJ1c2goYnIzKQorK0BAIC00NjMsNyArNDYzLDcgQEAgZGVmIE9uUGFpbnQoc2VsZiwg ZXZlbnQpOgorKyAgICAgICAgICAgICBzaGFkb3dPZmZzZXQgPSAwCisrICAgICAgICAgZWxzZToK KysgCisrLSAgICAgICAgICAgIHJjMiA9IHd4LlJlY3QoeCsxLCBncmFkaWVudFJlY3QuaGVpZ2h0 LzIsIGdyYWRpZW50UmVjdC53aWR0aCwgZ3JhZGllbnRSZWN0LmhlaWdodCkKKysrICAgICAgICAg ICAgcmMyID0gd3guUmVjdCh4KzEsIGdyYWRpZW50UmVjdC5oZWlnaHQvLzIsIGdyYWRpZW50UmVj dC53aWR0aCwgZ3JhZGllbnRSZWN0LmhlaWdodCkKKysgICAgICAgICAgICAgcGF0aDIgPSBzZWxm LkdldFBhdGgoZ2MsIHJjMiwgOCkKKysgICAgICAgICAgICAgZ2MuU2V0UGVuKHd4LlBlbihzZWxm Ll9wcmVzc2VkQm90dG9tQ29sb3VyKSkKKysgICAgICAgICAgICAgZ2MuU2V0QnJ1c2god3guQnJ1 c2goc2VsZi5fcHJlc3NlZEJvdHRvbUNvbG91cikpCisrZGlmZiAtLWdpdCBhL3d4L2xpYi9hZ3cv aHlwZXJ0cmVlbGlzdC5weSBiL3d4L2xpYi9hZ3cvaHlwZXJ0cmVlbGlzdC5weQorK2luZGV4IDEy MzAyZjNiMC4uMzc3YWMwMTIxIDEwMDY0NAorKy0tLSBhL3d4L2xpYi9hZ3cvaHlwZXJ0cmVlbGlz dC5weQorKysrKyBiL3d4L2xpYi9hZ3cvaHlwZXJ0cmVlbGlzdC5weQorK0BAIC0zNDM3LDcgKzM0 MzcsNyBAQCBkZWYgUGFpbnRMZXZlbChzZWxmLCBpdGVtLCBkYywgbGV2ZWwsIHksIHhfbWFpbmNv bCk6CisrIAorKyAgICAgICAgICAgICBpZiBub3Qgc2VsZi5IYXNBR1dGbGFnKHd4LlRSX05PX0xJ TkVTKSBhbmQgY2hpbGRyZW46CisrICAgICAgICAgICAgICAgICBsYXN0X2NoaWxkID0gY2hpbGRy ZW5bLTFdCisrLSAgICAgICAgICAgICAgICBZMSA9IGxhc3RfY2hpbGQuR2V0WSgpICsgbGFzdF9j aGlsZC5HZXRIZWlnaHQoKSAvIDIKKysrICAgICAgICAgICAgICAgIFkxID0gbGFzdF9jaGlsZC5H ZXRZKCkgKyBsYXN0X2NoaWxkLkdldEhlaWdodCgpIC8vIDIKKysgICAgICAgICAgICAgICAgIGRj LkRyYXdMaW5lKHgsIG9sZFksIHgsIFkxKQorKyAKKysgICAgICAgICByZXR1cm4geSwgeF9tYWlu Y29sCisrZGlmZiAtLWdpdCBhL3d4L2xpYi9hZ3cva25vYmN0cmwucHkgYi93eC9saWIvYWd3L2tu b2JjdHJsLnB5CisraW5kZXggNzQyMDk3YjA5Li4xZTUwNDVmZjYgMTAwNjQ0CisrLS0tIGEvd3gv bGliL2Fndy9rbm9iY3RybC5weQorKysrKyBiL3d4L2xpYi9hZ3cva25vYmN0cmwucHkKKytAQCAt MzI1LDcgKzMyNSw3IEBAIGRlZiBPblNpemUoc2VsZixldmVudCk6CisrICAgICAgICAgbWVtb3J5 LkNsZWFyKCkKKysgCisrICAgICAgICAgbWlucmFkaXVzID0gbWluKDAuOSpzZWxmLldpZHRoLzIu MCwgMC45KnNlbGYuSGVpZ2h0LzIuMCkKKystICAgICAgICBtZW1vcnkuRHJhd0NpcmNsZShzZWxm LldpZHRoLy8yLCBzZWxmLkhlaWdodC8vMiwgbWlucmFkaXVzKQorKysgICAgICAgIG1lbW9yeS5E cmF3Q2lyY2xlKHNlbGYuV2lkdGgvLzIsIHNlbGYuSGVpZ2h0Ly8yLCBpbnQobWlucmFkaXVzKSkK KysgICAgICAgICBtZW1vcnkuU2VsZWN0T2JqZWN0KHd4Lk51bGxCaXRtYXApCisrICAgICAgICAg c2VsZi5fcmVnaW9uID0gd3guUmVnaW9uKHNlbGYuX0J1ZmZlciwgc2VsZi5HZXRCYWNrZ3JvdW5k Q29sb3VyKCkpCisrICAgICAgICAgc2VsZi5fbWlucmFkaXVzID0gbWlucmFkaXVzCisrQEAgLTY0 NSw4ICs2NDUsOCBAQCBkZWYgRHJhd1RhZ3Moc2VsZiwgZGMsIHNpemUpOgorKyAgICAgICAgICAg ICBkeGkgPSBtYXRoLmNvcyhhbmdsZSkqKCh3aWR0aCAtIHhzaGlmdCArIHRhZ0xlbiAtIDYpLzIu MCAtIHRhZ0xlbikKKysgICAgICAgICAgICAgZHlpID0gbWF0aC5zaW4oYW5nbGUpKigoaGVpZ2h0 IC0geXNoaWZ0ICsgdGFnTGVuIC0gNikvMi4wIC0gdGFnTGVuKQorKyAKKystICAgICAgICAgICAg ZGMuRHJhd0xpbmUod2lkdGgvLzIgLSBzeGksIGhlaWdodC8vMiAtIHN5aSwKKystICAgICAgICAg ICAgICAgICAgICAgICAgd2lkdGgvLzIgLSBkeGksIGhlaWdodC8vMiAtIGR5aSkKKysrICAgICAg ICAgICAgZGMuRHJhd0xpbmUoaW50KHdpZHRoLy8yIC0gc3hpKSwgaW50KGhlaWdodC8vMiAtIHN5 aSksCisrKyAgICAgICAgICAgICAgICAgICAgICAgIGludCh3aWR0aC8vMiAtIGR4aSksIGludCho ZWlnaHQvLzIgLSBkeWkpKQorKyAKKysgCisrICAgICBkZWYgRHJhd0RpYWdvbmFsR3JhZGllbnQo c2VsZiwgZGMsIHNpemUpOgorK0BAIC03NTksOCArNzU5LDggQEAgZGVmIERyYXdJbnNldENpcmNs ZShzZWxmLCBkYywgcGVuY29sb3VyKToKKysgICAgICAgICBwMSA9IHd4LlBlbihzZWxmLk9mZnNl dENvbG91cihwZW5jb2xvdXIsIC03MCksIDIpCisrICAgICAgICAgcDIgPSB3eC5QZW4oc2VsZi5P ZmZzZXRDb2xvdXIocGVuY29sb3VyLCAxMCksIDEpCisrIAorKy0gICAgICAgIHB0MSA9IHd4LlBv aW50KGN4LXIqbWF0aC5zcXJ0KDIpLzIuMCwgY3krciptYXRoLnNxcnQoMikvMi4wKQorKy0gICAg ICAgIHB0MiA9IHd4LlBvaW50KGN4K3IqbWF0aC5zcXJ0KDIpLzIuMCwgY3ktciptYXRoLnNxcnQo MikvMi4wKQorKysgICAgICAgIHB0MSA9IHd4LlBvaW50KGludChjeC1yKm1hdGguc3FydCgyKS8y LjApLCBpbnQoY3krciptYXRoLnNxcnQoMikvMi4wKSkKKysrICAgICAgICBwdDIgPSB3eC5Qb2lu dChpbnQoY3grciptYXRoLnNxcnQoMikvMi4wKSwgaW50KGN5LXIqbWF0aC5zcXJ0KDIpLzIuMCkp CisrIAorKyAgICAgICAgIGRjLlNldFBlbihwMikKKysgICAgICAgICBkYy5EcmF3QXJjKHB0MSwg cHQyLCAoY3gsIGN5KSkKKytAQCAtNzc5LDcgKzc3OSw3IEBAIGRlZiBEcmF3Qm91bmRpbmdDaXJj bGUoc2VsZiwgZGMsIHNpemUpOgorKyAgICAgICAgIHJhZGl1cyA9IDAuOSptaW4oc2l6ZS54LCBz aXplLnkpLzIuMAorKyAgICAgICAgIGRjLlNldEJydXNoKHd4LlRSQU5TUEFSRU5UX0JSVVNIKQor KyAgICAgICAgIGRjLlNldFBlbih3eC5QZW4oc2VsZi5fYm91bmRpbmdjb2xvdXIpKQorKy0gICAg ICAgIGRjLkRyYXdDaXJjbGUoc2VsZi5XaWR0aC8vMiwgc2VsZi5IZWlnaHQvLzIsIHJhZGl1cykK KysrICAgICAgICBkYy5EcmF3Q2lyY2xlKHNlbGYuV2lkdGgvLzIsIHNlbGYuSGVpZ2h0Ly8yLCBp bnQocmFkaXVzKSkKKysgCisrIAorKyAgICAgZGVmIENpcmNsZUNvb3JkcyhzZWxmLCByYWRpdXMs IGFuZ2xlLCBjZW50ZXJYLCBjZW50ZXJZKToKKytkaWZmIC0tZ2l0IGEvd3gvbGliL2Fndy9sYWJl bGJvb2sucHkgYi93eC9saWIvYWd3L2xhYmVsYm9vay5weQorK2luZGV4IGI3MTZkZjNhMi4uZjhj OWNkNTRkIDEwMDY0NAorKy0tLSBhL3d4L2xpYi9hZ3cvbGFiZWxib29rLnB5CisrKysrIGIvd3gv bGliL2Fndy9sYWJlbGJvb2sucHkKKytAQCAtMTM3NiwxMyArMTM3NiwxMyBAQCBkZWYgT25QYWlu dChzZWxmLCBldmVudCk6CisrIAorKyAgICAgICAgICAgICAgICAgaWYgYlVzZVljb29yZDoKKysg CisrLSAgICAgICAgICAgICAgICAgICAgaW1nWGNvb3JkID0gc2VsZi5fbkltZ1NpemUgLyAyCisr LSAgICAgICAgICAgICAgICAgICAgaW1nWWNvb3JkID0gKHN0eWxlICYgSU5CX1NIT1dfT05MWV9J TUFHRVMgYW5kIFtwb3MgKyBzZWxmLl9uSW1nU2l6ZSAvIDJdIG9yIFtwb3MgKyBpbWdUb3BQYWRk aW5nXSlbMF0KKysrICAgICAgICAgICAgICAgICAgICBpbWdYY29vcmQgPSBzZWxmLl9uSW1nU2l6 ZSAvLyAyCisrKyAgICAgICAgICAgICAgICAgICAgaW1nWWNvb3JkID0gKHN0eWxlICYgSU5CX1NI T1dfT05MWV9JTUFHRVMgYW5kIFtwb3MgKyBzZWxmLl9uSW1nU2l6ZSAvLyAyXSBvciBbcG9zICsg aW1nVG9wUGFkZGluZ10pWzBdCisrIAorKyAgICAgICAgICAgICAgICAgZWxzZToKKysgCisrLSAg ICAgICAgICAgICAgICAgICAgaW1nWGNvb3JkID0gcG9zICsgKHJlY3RXaWR0aCAvIDIpIC0gKHNl bGYuX25JbWdTaXplIC8gMikKKystICAgICAgICAgICAgICAgICAgICBpbWdZY29vcmQgPSAoc3R5 bGUgJiBJTkJfU0hPV19PTkxZX0lNQUdFUyBhbmQgW3NlbGYuX25JbWdTaXplIC8gMl0gb3IgW2lt Z1RvcFBhZGRpbmddKVswXQorKysgICAgICAgICAgICAgICAgICAgIGltZ1hjb29yZCA9IHBvcyAr IChyZWN0V2lkdGggLy8gMikgLSAoc2VsZi5fbkltZ1NpemUgLy8gMikKKysrICAgICAgICAgICAg ICAgICAgICBpbWdZY29vcmQgPSAoc3R5bGUgJiBJTkJfU0hPV19PTkxZX0lNQUdFUyBhbmQgW3Nl bGYuX25JbWdTaXplIC8vIDJdIG9yIFtpbWdUb3BQYWRkaW5nXSlbMF0KKysgCisrICAgICAgICAg ICAgICAgICBzZWxmLl9JbWFnZUxpc3QuRHJhdyhzZWxmLl9wYWdlc0luZm9WZWNbaV0uR2V0SW1h Z2VJbmRleCgpLCBkYywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlt Z1hjb29yZCwgaW1nWWNvb3JkLAorK0BAIC0xNDA4LDE1ICsxNDA4LDE1IEBAIGRlZiBPblBhaW50 KHNlbGYsIGV2ZW50KToKKysgCisrICAgICAgICAgICAgICAgICBpZiBiVXNlWWNvb3JkOgorKyAK KystICAgICAgICAgICAgICAgICAgICB0ZXh0T2Zmc2V0WCA9ICgocmVjdFdpZHRoIC0gdGV4dFdp ZHRoKSAvIDIgKQorKysgICAgICAgICAgICAgICAgICAgIHRleHRPZmZzZXRYID0gKChyZWN0V2lk dGggLSB0ZXh0V2lkdGgpIC8vIDIgKQorKyAgICAgICAgICAgICAgICAgICAgIHRleHRPZmZzZXRZ ID0gKG5vdCBzdHlsZSAmIElOQl9TSE9XX09OTFlfVEVYVCAgYW5kIFtwb3MgKyBzZWxmLl9uSW1n U2l6ZSAgKyBpbWdUb3BQYWRkaW5nICsgM10gb3IgXAorKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBbcG9zICsgKChzZWxmLl9uSW1nU2l6ZSAqIDIgLSB0ZXh0SGVpZ2h0 KSAvIDIgKV0pWzBdCisrKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtw b3MgKyAoKHNlbGYuX25JbWdTaXplICogMiAtIHRleHRIZWlnaHQpIC8vIDIgKV0pWzBdCisrIAor KyAgICAgICAgICAgICAgICAgZWxzZToKKysgCisrLSAgICAgICAgICAgICAgICAgICAgdGV4dE9m ZnNldFggPSAocmVjdFdpZHRoIC0gdGV4dFdpZHRoKSAvIDIgICsgcG9zICsgblRleHRQYWRkaW5n TGVmdAorKysgICAgICAgICAgICAgICAgICAgIHRleHRPZmZzZXRYID0gKHJlY3RXaWR0aCAtIHRl eHRXaWR0aCkgLy8gMiAgKyBwb3MgKyBuVGV4dFBhZGRpbmdMZWZ0CisrICAgICAgICAgICAgICAg ICAgICAgdGV4dE9mZnNldFkgPSAobm90IHN0eWxlICYgSU5CX1NIT1dfT05MWV9URVhUIGFuZCBb c2VsZi5fbkltZ1NpemUgKyBpbWdUb3BQYWRkaW5nICsgM10gb3IgXAorKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBbKChzZWxmLl9uSW1nU2l6ZSAqIDIgLSB0ZXh0SGVp Z2h0KSAvIDIgKV0pWzBdCisrKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFsoKHNlbGYuX25JbWdTaXplICogMiAtIHRleHRIZWlnaHQpIC8vIDIgKV0pWzBdCisrIAorKyAg ICAgICAgICAgICAgICAgZGMuU2V0VGV4dEZvcmVncm91bmQod3guU3lzdGVtU2V0dGluZ3MuR2V0 Q29sb3VyKHd4LlNZU19DT0xPVVJfV0lORE9XVEVYVCkpCisrICAgICAgICAgICAgICAgICBkYy5E cmF3VGV4dChmaXhlZFRleHQsIHRleHRPZmZzZXRYLCB0ZXh0T2Zmc2V0WSkKKytAQCAtMTU5MSw4 ICsxNTkxLDggQEAgZGVmIE9uUGFpbnQoc2VsZiwgZXZlbnQpOgorKyAgICAgICAgICAgICAjIERy YXcgZ3JhZGllbnQgaW4gdGhlIGJhY2tncm91bmQgYXJlYQorKyAgICAgICAgICAgICBzdGFydENv bG91ciA9IHNlbGYuX2NvbG91cnNNYXBbSU5CX1RBQl9BUkVBX0JBQ0tHUk9VTkRfQ09MT1VSXQor KyAgICAgICAgICAgICBlbmRDb2xvdXIgICA9IEFydE1hbmFnZXIuR2V0KCkuTGlnaHRDb2xvdXIo c2VsZi5fY29sb3Vyc01hcFtJTkJfVEFCX0FSRUFfQkFDS0dST1VORF9DT0xPVVJdLCA1MCkKKyst ICAgICAgICAgICAgQXJ0TWFuYWdlci5HZXQoKS5QYWludFN0cmFpZ2h0R3JhZGllbnRCb3goZGMs IHd4LlJlY3QoMCwgMCwgc2l6ZS54IC8gMiwgc2l6ZS55KSwgc3RhcnRDb2xvdXIsIGVuZENvbG91 ciwgRmFsc2UpCisrLSAgICAgICAgICAgIEFydE1hbmFnZXIuR2V0KCkuUGFpbnRTdHJhaWdodEdy YWRpZW50Qm94KGRjLCB3eC5SZWN0KHNpemUueCAvIDIsIDAsIHNpemUueCAvIDIsIHNpemUueSks IGVuZENvbG91ciwgc3RhcnRDb2xvdXIsIEZhbHNlKQorKysgICAgICAgICAgICBBcnRNYW5hZ2Vy LkdldCgpLlBhaW50U3RyYWlnaHRHcmFkaWVudEJveChkYywgd3guUmVjdCgwLCAwLCBzaXplLngg Ly8gMiwgc2l6ZS55KSwgc3RhcnRDb2xvdXIsIGVuZENvbG91ciwgRmFsc2UpCisrKyAgICAgICAg ICAgIEFydE1hbmFnZXIuR2V0KCkuUGFpbnRTdHJhaWdodEdyYWRpZW50Qm94KGRjLCB3eC5SZWN0 KHNpemUueCAvLyAyLCAwLCBzaXplLnggLy8gMiwgc2l6ZS55KSwgZW5kQ29sb3VyLCBzdGFydENv bG91ciwgRmFsc2UpCisrIAorKyAgICAgICAgIGVsc2U6CisrIAorK0BAIC0xNjM4LDcgKzE2Mzgs NyBAQCBkZWYgT25QYWludChzZWxmLCBldmVudCk6CisrIAorKyAgICAgICAgICAgICBpZiBzZWxm Lkhhc0FHV0ZsYWcoSU5CX1NIT1dfT05MWV9URVhUKToKKysgICAgICAgICAgICAgICAgIGZvbnQg PSB3eC5TeXN0ZW1TZXR0aW5ncy5HZXRGb250KHd4LlNZU19ERUZBVUxUX0dVSV9GT05UKQorKy0g ICAgICAgICAgICAgICAgZm9udC5TZXRQb2ludFNpemUoZm9udC5HZXRQb2ludFNpemUoKSAqIHNl bGYuR2V0UGFyZW50KCkuR2V0Rm9udFNpemVNdWx0aXBsZSgpKQorKysgICAgICAgICAgICAgICAg Zm9udC5TZXRQb2ludFNpemUoaW50KGZvbnQuR2V0UG9pbnRTaXplKCkgKiBzZWxmLkdldFBhcmVu dCgpLkdldEZvbnRTaXplTXVsdGlwbGUoKSkpCisrIAorKyAgICAgICAgICAgICAgICAgaWYgc2Vs Zi5HZXRQYXJlbnQoKS5HZXRGb250Qm9sZCgpOgorKyAgICAgICAgICAgICAgICAgICAgIGZvbnQu U2V0V2VpZ2h0KHd4LkZPTlRXRUlHSFRfQk9MRCkKKytAQCAtMTk1NCw3ICsxOTU0LDcgQEAgZGVm IERyYXdXZWJIb3ZlcihzZWxmLCBkYywgY2FwdGlvbiwgeENvb3JkLCB5Q29vcmQsIHNlbGVjdGVk KToKKysgCisrICAgICAgICAgIyBSZWRyYXcgdGhlIHRleHQgd2l0aCB1bmRlcmxpbmVkIGZvbnQK KysgICAgICAgICB1bmRlckxpbmVkRm9udCA9IHd4LlN5c3RlbVNldHRpbmdzLkdldEZvbnQod3gu U1lTX0RFRkFVTFRfR1VJX0ZPTlQpCisrLSAgICAgICAgdW5kZXJMaW5lZEZvbnQuU2V0UG9pbnRT aXplKHVuZGVyTGluZWRGb250LkdldFBvaW50U2l6ZSgpICogc2VsZi5HZXRQYXJlbnQoKS5HZXRG b250U2l6ZU11bHRpcGxlKCkpCisrKyAgICAgICAgdW5kZXJMaW5lZEZvbnQuU2V0UG9pbnRTaXpl KGludCh1bmRlckxpbmVkRm9udC5HZXRQb2ludFNpemUoKSAqIHNlbGYuR2V0UGFyZW50KCkuR2V0 Rm9udFNpemVNdWx0aXBsZSgpKSkKKysgICAgICAgICBpZiBzZWxmLkdldFBhcmVudCgpLkdldEZv bnRCb2xkKCk6CisrICAgICAgICAgICAgIHVuZGVyTGluZWRGb250LlNldFdlaWdodCh3eC5GT05U V0VJR0hUX0JPTEQpCisrICAgICAgICAgZWxpZiBzZWxmLkhhc0FHV0ZsYWcoSU5CX0JPTERfVEFC X1NFTEVDVElPTikgYW5kIHNlbGVjdGVkOgorK0BAIC0yMDUwLDcgKzIwNTAsNyBAQCBkZWYgRHJh d0xhYmVsKHNlbGYsIGRjLCByZWN0LCB0ZXh0LCBibXAsIGltZ0luZm8sIG9yaWVudGF0aW9uTGVm dCwgaW1nSWR4LCBzZWxlYworKyAgICAgICAgIGltZ1JlY3QgPSB3eC5SZWN0KCpyZWN0KQorKyAK KysgICAgICAgICBmb250ID0gd3guU3lzdGVtU2V0dGluZ3MuR2V0Rm9udCh3eC5TWVNfREVGQVVM VF9HVUlfRk9OVCkKKystICAgICAgICBmb250LlNldFBvaW50U2l6ZShmb250LkdldFBvaW50U2l6 ZSgpICogc2VsZi5HZXRQYXJlbnQoKS5HZXRGb250U2l6ZU11bHRpcGxlKCkpCisrKyAgICAgICAg Zm9udC5TZXRQb2ludFNpemUoaW50KGZvbnQuR2V0UG9pbnRTaXplKCkgKiBzZWxmLkdldFBhcmVu dCgpLkdldEZvbnRTaXplTXVsdGlwbGUoKSkpCisrIAorKyAgICAgICAgIGlmIHNlbGYuR2V0UGFy ZW50KCkuR2V0Rm9udEJvbGQoKToKKysgICAgICAgICAgICAgZm9udC5TZXRXZWlnaHQod3guRk9O VFdFSUdIVF9CT0xEKQorK0BAIC0yMDY5LDcgKzIwNjksNyBAQCBkZWYgRHJhd0xhYmVsKHNlbGYs IGRjLCByZWN0LCB0ZXh0LCBibXAsIGltZ0luZm8sIG9yaWVudGF0aW9uTGVmdCwgaW1nSWR4LCBz ZWxlYworKyAKKysgICAgICAgICAjIFRleHQgYm91bmRpbmcgcmVjdGFuZ2xlCisrICAgICAgICAg dGV4dFJlY3QueCArPSBuUGFkZGluZworKy0gICAgICAgIHRleHRSZWN0LnkgPSByZWN0LnkgKyAo cmVjdC5oZWlnaHQgLSBoKS8yCisrKyAgICAgICAgdGV4dFJlY3QueSA9IHJlY3QueSArIChyZWN0 LmhlaWdodCAtIGgpLy8yCisrICAgICAgICAgdGV4dFJlY3Qud2lkdGggPSByZWN0LndpZHRoIC0g MiAqIG5QYWRkaW5nCisrIAorKyAgICAgICAgIGlmIGJtcC5Jc09rKCkgYW5kIG5vdCBzZWxmLkhh c0FHV0ZsYWcoSU5CX1NIT1dfT05MWV9URVhUKToKKytAQCAtMjA4Niw3ICsyMDg2LDcgQEAgZGVm IERyYXdMYWJlbChzZWxmLCBkYywgcmVjdCwgdGV4dCwgYm1wLCBpbWdJbmZvLCBvcmllbnRhdGlv bkxlZnQsIGltZ0lkeCwgc2VsZWMKKysgCisrICAgICAgICAgICAgIGltZ1JlY3QueCArPSBuUGFk ZGluZworKyAgICAgICAgICAgICBpbWdSZWN0LndpZHRoID0gYm1wLkdldFdpZHRoKCkKKystICAg ICAgICAgICAgaW1nUmVjdC55ID0gcmVjdC55ICsgKHJlY3QuaGVpZ2h0IC0gYm1wLkdldEhlaWdo dCgpKS8yCisrKyAgICAgICAgICAgIGltZ1JlY3QueSA9IHJlY3QueSArIChyZWN0LmhlaWdodCAt IGJtcC5HZXRIZWlnaHQoKSkvLzIKKysgICAgICAgICAgICAgaW1nUmVjdC5oZWlnaHQgPSBibXAu R2V0SGVpZ2h0KCkKKysgCisrICAgICAgICAgIyBEcmF3IGJvdW5kaW5nIHJlY3RhbmdsZQorK0BA IC0yNDk2LDcgKzI0OTYsNyBAQCBkZWYgUmVzaXplVGFiQXJlYShzZWxmKToKKysgICAgICAgICAg ICAgZGMgPSB3eC5NZW1vcnlEQygpCisrICAgICAgICAgICAgIGRjLlNlbGVjdE9iamVjdCh3eC5C aXRtYXAoMSwgMSkpCisrICAgICAgICAgICAgIGZvbnQgPSB3eC5TeXN0ZW1TZXR0aW5ncy5HZXRG b250KHd4LlNZU19ERUZBVUxUX0dVSV9GT05UKQorKy0gICAgICAgICAgICBmb250LlNldFBvaW50 U2l6ZShmb250LkdldFBvaW50U2l6ZSgpKnNlbGYuX2ZvbnRTaXplTXVsdGlwbGUpCisrKyAgICAg ICAgICAgIGZvbnQuU2V0UG9pbnRTaXplKGludChmb250LkdldFBvaW50U2l6ZSgpKnNlbGYuX2Zv bnRTaXplTXVsdGlwbGUpKQorKyAgICAgICAgICAgICBpZiBzZWxmLkdldEZvbnRCb2xkKCkgb3Ig YWd3U3R5bGUgJiBJTkJfQk9MRF9UQUJfU0VMRUNUSU9OOgorKyAgICAgICAgICAgICAgICAgZm9u dC5TZXRXZWlnaHQod3guRk9OVFdFSUdIVF9CT0xEKQorKyAgICAgICAgICAgICBkYy5TZXRGb250 KGZvbnQpCisrZGlmZiAtLWdpdCBhL3d4L2xpYi9hZ3cvcGVha21ldGVyLnB5IGIvd3gvbGliL2Fn dy9wZWFrbWV0ZXIucHkKKytpbmRleCAwNTVkYmVmODEuLmE1Zjg4YTlkNSAxMDA2NDQKKystLS0g YS93eC9saWIvYWd3L3BlYWttZXRlci5weQorKysrKyBiL3d4L2xpYi9hZ3cvcGVha21ldGVyLnB5 CisrQEAgLTc4NCw3ICs3ODQsNyBAQCBkZWYgRHJhd0hvcnpCYW5kKHNlbGYsIGRjLCByZWN0KToK KysgICAgICAgICAgICAgICAgIG1heFdpZHRoID0gc2l6ZS54KmhvcnpCYW5kcworKyAgICAgICAg ICAgICAgICAgcG9pbnRzID0gW3d4LlBvaW50KCkgZm9yIGkgaW4gcmFuZ2UoMildCisrICAgICAg ICAgICAgICAgICBwb2ludHNbMF0ueSA9IHJlY3RQcmV2LkdldFRvcFJpZ2h0KCkueSAtIHlEZWNh bAorKy0gICAgICAgICAgICAgICAgcG9pbnRzWzBdLnggPSByZWN0UHJldi5HZXRCb3R0b21MZWZ0 KCkueCArIHNlbGYuX21ldGVyRGF0YVt2ZXJ0XS5fZmFsbG9mZiptYXhXaWR0aC9zZWxmLl9tYXhW YWx1ZQorKysgICAgICAgICAgICAgICAgcG9pbnRzWzBdLnggPSByZWN0UHJldi5HZXRCb3R0b21M ZWZ0KCkueCArIHNlbGYuX21ldGVyRGF0YVt2ZXJ0XS5fZmFsbG9mZiptYXhXaWR0aC8vc2VsZi5f bWF4VmFsdWUKKysgICAgICAgICAgICAgICAgIHBvaW50c1sxXS55ID0gcmVjdFByZXYuR2V0Qm90 dG9tTGVmdCgpLnkgKyB5RGVjYWwKKysgICAgICAgICAgICAgICAgIHBvaW50c1sxXS54ID0gcG9p bnRzWzBdLngKKysgICAgICAgICAgICAgICAgIGRjLlNldFBlbihwZW4pCisrZGlmZiAtLWdpdCBh L3d4L2xpYi9hZ3cvcHlnYXVnZS5weSBiL3d4L2xpYi9hZ3cvcHlnYXVnZS5weQorK2luZGV4IGJh YjQ1OWEzYS4uYjg2NTQ0MzZhIDEwMDY0NAorKy0tLSBhL3d4L2xpYi9hZ3cvcHlnYXVnZS5weQor KysrKyBiL3d4L2xpYi9hZ3cvcHlnYXVnZS5weQorK0BAIC0zNDQsNyArMzQ0LDcgQEAgZGVmIE9u UGFpbnQoc2VsZiwgZXZlbnQpOgorKyAgICAgICAgICAgICAgICAgYzEsYzIgPSBncmFkaWVudAor KyAgICAgICAgICAgICAgICAgdyA9IHJlY3Qud2lkdGggKiAoZmxvYXQoc2VsZi5fdmFsdWVTb3J0 ZWRbaV0pIC8gc2VsZi5fcmFuZ2UpCisrICAgICAgICAgICAgICAgICByID0gY29weS5jb3B5KHJl Y3QpCisrLSAgICAgICAgICAgICAgICByLndpZHRoID0gdworKysgICAgICAgICAgICAgICAgci53 aWR0aCA9IGludCh3KQorKyAgICAgICAgICAgICAgICAgZGMuR3JhZGllbnRGaWxsTGluZWFyKHIs IGMxLCBjMiwgd3guRUFTVCkKKysgICAgICAgICBlbHNlOgorKyAgICAgICAgICAgICBmb3IgaSwg Y29sb3VyIGluIGVudW1lcmF0ZShzZWxmLl9iYXJDb2xvdXJTb3J0ZWQpOgorK0BAIC0zNTIsNyAr MzUyLDcgQEAgZGVmIE9uUGFpbnQoc2VsZiwgZXZlbnQpOgorKyAgICAgICAgICAgICAgICAgZGMu U2V0UGVuKHd4LlBlbihjb2xvdXIpKQorKyAgICAgICAgICAgICAgICAgdyA9IHJlY3Qud2lkdGgg KiAoZmxvYXQoc2VsZi5fdmFsdWVTb3J0ZWRbaV0pIC8gc2VsZi5fcmFuZ2UpCisrICAgICAgICAg ICAgICAgICByID0gY29weS5jb3B5KHJlY3QpCisrLSAgICAgICAgICAgICAgICByLndpZHRoID0g dworKysgICAgICAgICAgICAgICAgci53aWR0aCA9IGludCh3KQorKyAgICAgICAgICAgICAgICAg ZGMuRHJhd1JlY3RhbmdsZShyKQorKyAKKysgCisrZGlmZiAtLWdpdCBhL3d4L2xpYi9hZ3cvcmli Ym9uL2FydF9hdWkucHkgYi93eC9saWIvYWd3L3JpYmJvbi9hcnRfYXVpLnB5CisraW5kZXggYTFk MjU1ODQzLi4zMWZlZGY0ODcgMTAwNjQ0CisrLS0tIGEvd3gvbGliL2Fndy9yaWJib24vYXJ0X2F1 aS5weQorKysrKyBiL3d4L2xpYi9hZ3cvcmliYm9uL2FydF9hdWkucHkKKytAQCAtMzkwLDcgKzM5 MCw3IEBAIGRlZiBEcmF3VGFiKHNlbGYsIGRjLCB3bmQsIHRhYik6CisrICAgICAgICAgICAgIGdy YWRfcmVjdCA9IHd4LlJlY3QoKnRhYi5yZWN0KQorKyAgICAgICAgICAgICBncmFkX3JlY3QuaGVp Z2h0IC09IDQKKysgICAgICAgICAgICAgZ3JhZF9yZWN0LndpZHRoIC09IDEKKystICAgICAgICAg ICAgZ3JhZF9yZWN0LmhlaWdodCAvPSAyCisrKyAgICAgICAgICAgIGdyYWRfcmVjdC5oZWlnaHQg Ly89IDIKKysgICAgICAgICAgICAgZ3JhZF9yZWN0LnkgPSBncmFkX3JlY3QueSArIHRhYi5yZWN0 LmhlaWdodCAtIGdyYWRfcmVjdC5oZWlnaHQgLSAxCisrICAgICAgICAgICAgIGRjLlNldEJydXNo KHNlbGYuX3RhYl9hY3RpdmVfdG9wX2JhY2tncm91bmRfYnJ1c2gpCisrICAgICAgICAgICAgIGRj LkRyYXdSZWN0YW5nbGUodGFiLnJlY3QueCwgdGFiLnJlY3QueSArIDMsIHRhYi5yZWN0LndpZHRo IC0gMSwgZ3JhZF9yZWN0LnkgLSB0YWIucmVjdC55IC0gMykKKytAQCAtNDAxLDcgKzQwMSw3IEBA IGRlZiBEcmF3VGFiKHNlbGYsIGRjLCB3bmQsIHRhYik6CisrICAgICAgICAgICAgIGJ0bV9yZWN0 ID0gd3guUmVjdCgqdGFiLnJlY3QpCisrICAgICAgICAgICAgIGJ0bV9yZWN0LmhlaWdodCAtPSA0 CisrICAgICAgICAgICAgIGJ0bV9yZWN0LndpZHRoIC09IDEKKystICAgICAgICAgICAgYnRtX3Jl Y3QuaGVpZ2h0IC89IDIKKysrICAgICAgICAgICAgYnRtX3JlY3QuaGVpZ2h0IC8vPSAyCisrICAg ICAgICAgICAgIGJ0bV9yZWN0LnkgPSBidG1fcmVjdC55ICsgdGFiLnJlY3QuaGVpZ2h0IC0gYnRt X3JlY3QuaGVpZ2h0IC0gMQorKyAgICAgICAgICAgICBkYy5TZXRCcnVzaChzZWxmLl90YWJfaG92 ZXJfYmFja2dyb3VuZF9icnVzaCkKKysgICAgICAgICAgICAgZGMuRHJhd1JlY3RhbmdsZShidG1f cmVjdC54LCBidG1fcmVjdC55LCBidG1fcmVjdC53aWR0aCwgYnRtX3JlY3QuaGVpZ2h0KQorK0BA IC00MzQsOCArNDM0LDggQEAgZGVmIERyYXdUYWIoc2VsZiwgZGMsIHduZCwgdGFiKToKKysgICAg ICAgICAgICAgaWNvbiA9IHRhYi5wYWdlLkdldEljb24oKQorKyAgICAgICAgICAgICBpZiBzZWxm Ll9mbGFncyAmIFJJQkJPTl9CQVJfU0hPV19QQUdFX0xBQkVMUyA9PSAwOgorKyAgICAgICAgICAg ICAgICAgaWYgaWNvbi5Jc09rKCk6CisrLSAgICAgICAgICAgICAgICAgICAgeCA9IHRhYi5yZWN0 LnggKyAodGFiLnJlY3Qud2lkdGggLSBpY29uLkdldFdpZHRoKCkpIC8gMgorKy0gICAgICAgICAg ICAgICAgICAgIGRjLkRyYXdCaXRtYXAoaWNvbiwgeCwgdGFiLnJlY3QueSArIDEgKyAodGFiLnJl Y3QuaGVpZ2h0IC0gMSAtIGljb24uR2V0SGVpZ2h0KCkpIC8gMiwgVHJ1ZSkKKysrICAgICAgICAg ICAgICAgICAgICB4ID0gdGFiLnJlY3QueCArICh0YWIucmVjdC53aWR0aCAtIGljb24uR2V0V2lk dGgoKSkgLy8gMgorKysgICAgICAgICAgICAgICAgICAgIGRjLkRyYXdCaXRtYXAoaWNvbiwgeCwg dGFiLnJlY3QueSArIDEgKyAodGFiLnJlY3QuaGVpZ2h0IC0gMSAtIGljb24uR2V0SGVpZ2h0KCkp IC8vIDIsIFRydWUpCisrIAorKyAgICAgICAgIGlmIHNlbGYuX2ZsYWdzICYgUklCQk9OX0JBUl9T SE9XX1BBR0VfTEFCRUxTOgorKyAgICAgICAgICAgICBsYWJlbCA9IHRhYi5wYWdlLkdldExhYmVs KCkKKytAQCAtNDUwLDcgKzQ1MCw3IEBAIGRlZiBEcmF3VGFiKHNlbGYsIGRjLCB3bmQsIHRhYik6 CisrICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IGljb24uR2V0V2lkdGgoKSArIDIKKysg CisrICAgICAgICAgICAgICAgICB0ZXh0X3dpZHRoLCB0ZXh0X2hlaWdodCA9IGRjLkdldFRleHRF eHRlbnQobGFiZWwpCisrLSAgICAgICAgICAgICAgICB4ID0gKHRhYi5yZWN0LndpZHRoIC0gMiAt IHRleHRfd2lkdGggLSBvZmZzZXQpIC8gMgorKysgICAgICAgICAgICAgICAgeCA9ICh0YWIucmVj dC53aWR0aCAtIDIgLSB0ZXh0X3dpZHRoIC0gb2Zmc2V0KSAvLyAyCisrICAgICAgICAgICAgICAg ICBpZiB4ID4gODoKKysgICAgICAgICAgICAgICAgICAgICB4ID0gOAorKyAgICAgICAgICAgICAg ICAgZWxpZiB4IDwgMToKKytAQCAtNDU4LDcgKzQ1OCw3IEBAIGRlZiBEcmF3VGFiKHNlbGYsIGRj LCB3bmQsIHRhYik6CisrIAorKyAgICAgICAgICAgICAgICAgd2lkdGggPSB0YWIucmVjdC53aWR0 aCAtIHggLSAyCisrICAgICAgICAgICAgICAgICB4ICs9IHRhYi5yZWN0LnggKyBvZmZzZXQKKyst ICAgICAgICAgICAgICAgIHkgPSB0YWIucmVjdC55ICsgKHRhYi5yZWN0LmhlaWdodCAtIHRleHRf aGVpZ2h0KSAvIDIKKysrICAgICAgICAgICAgICAgIHkgPSB0YWIucmVjdC55ICsgKHRhYi5yZWN0 LmhlaWdodCAtIHRleHRfaGVpZ2h0KSAvLyAyCisrIAorKyAgICAgICAgICAgICAgICAgaWYgaWNv bi5Jc09rKCk6CisrICAgICAgICAgICAgICAgICAgICAgZGMuRHJhd0JpdG1hcChpY29uLCB4IC0g b2Zmc2V0LCB0YWIucmVjdC55ICsgKHRhYi5yZWN0LmhlaWdodCAtIGljb24uR2V0SGVpZ2h0KCkp IC8gMiwgVHJ1ZSkKKytAQCAtODkyLDggKzg5Miw4IEBAIGRlZiBEcmF3TWluaW1pc2VkUGFuZWwo c2VsZiwgZGMsIHduZCwgcmVjdCwgYml0bWFwKToKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuX3BhZ2VfaG92ZXJfYmFja2dyb3VuZF9ncmFkaWVudF9jb2xvdXIsIHd4 LlNPVVRIKQorKyAKKysgICAgICAgICBpZiBiaXRtYXAuSXNPaygpOgorKy0gICAgICAgICAgICBk Yy5EcmF3Qml0bWFwKGJpdG1hcCwgcHJldmlldy54ICsgKHByZXZpZXcud2lkdGggLSBiaXRtYXAu R2V0V2lkdGgoKSkgLyAyLAorKy0gICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpZXcueSAr IChwcmV2aWV3LmhlaWdodCAtIGJpdG1hcC5HZXRIZWlnaHQoKSkgLyAyLCBUcnVlKQorKysgICAg ICAgICAgICBkYy5EcmF3Qml0bWFwKGJpdG1hcCwgcHJldmlldy54ICsgKHByZXZpZXcud2lkdGgg LSBiaXRtYXAuR2V0V2lkdGgoKSkgLy8gMiwKKysrICAgICAgICAgICAgICAgICAgICAgICAgICBw cmV2aWV3LnkgKyAocHJldmlldy5oZWlnaHQgLSBiaXRtYXAuR2V0SGVpZ2h0KCkpIC8vIDIsIFRy dWUpCisrIAorKyAKKysgICAgIGRlZiBEcmF3UGFydGlhbFBhbmVsQmFja2dyb3VuZChzZWxmLCBk Yywgd25kLCByZWN0KToKKytAQCAtMTAyNCw3ICsxMDI0LDcgQEAgZGVmIERyYXdHYWxsZXJ5QnV0 dG9uKHNlbGYsIGRjLCByZWN0LCBzdGF0ZSwgYml0bWFwcyk6CisrICAgICAgICAgICAgIGRjLkRy YXdSZWN0YW5nbGUocmVkdWNlZF9yZWN0LngsIHJlZHVjZWRfcmVjdC55LCByZWR1Y2VkX3JlY3Qu d2lkdGgsIHJlZHVjZWRfcmVjdC5oZWlnaHQpCisrICAgICAgICAgICAgIGJ0bl9iaXRtYXAgPSBi aXRtYXBzWzNdCisrIAorKy0gICAgICAgIGRjLkRyYXdCaXRtYXAoYnRuX2JpdG1hcCwgcmVkdWNl ZF9yZWN0LnggKyByZWR1Y2VkX3JlY3Qud2lkdGggLyAyIC0gMiwgKHJlY3QueSArIHJlY3QuaGVp Z2h0IC8gMikgLSAyLCBUcnVlKQorKysgICAgICAgIGRjLkRyYXdCaXRtYXAoYnRuX2JpdG1hcCwg cmVkdWNlZF9yZWN0LnggKyByZWR1Y2VkX3JlY3Qud2lkdGggLy8gMiAtIDIsIChyZWN0LnkgKyBy ZWN0LmhlaWdodCAvLyAyKSAtIDIsIFRydWUpCisrIAorKyAKKysgICAgIGRlZiBEcmF3R2FsbGVy eUl0ZW1CYWNrZ3JvdW5kKHNlbGYsIGRjLCB3bmQsIHJlY3QsIGl0ZW0pOgorK0BAIC0xMjc3LDcg KzEyNzcsNyBAQCBkZWYgRHJhd1Rvb2woc2VsZiwgZGMsIHduZCwgcmVjdCwgYml0bWFwLCBraW5k LCBzdGF0ZSk6CisrICAgICAgICAgICAgIGlmIGlzX3NwbGl0X2h5YnJpZDoKKysgICAgICAgICAg ICAgICAgIGRjLkRyYXdMaW5lKHJlY3QueCArIGF2YWlsX3dpZHRoICsgMSwgcmVjdC55LCByZWN0 LnggKyBhdmFpbF93aWR0aCArIDEsIHJlY3QueSArIHJlY3QuaGVpZ2h0KQorKyAKKystICAgICAg ICAgICAgZGMuRHJhd0JpdG1hcChzZWxmLl90b29sYmFyX2Ryb3BfYml0bWFwLCBiZ19yZWN0Lngg KyBhdmFpbF93aWR0aCArIDIsIGJnX3JlY3QueSArIChiZ19yZWN0LmhlaWdodCAvIDIpIC0gMiwg VHJ1ZSkKKysrICAgICAgICAgICAgZGMuRHJhd0JpdG1hcChzZWxmLl90b29sYmFyX2Ryb3BfYml0 bWFwLCBiZ19yZWN0LnggKyBhdmFpbF93aWR0aCArIDIsIGJnX3JlY3QueSArIChiZ19yZWN0Lmhl aWdodCAvLyAyKSAtIDIsIFRydWUpCisrIAorKy0gICAgICAgIGRjLkRyYXdCaXRtYXAoYml0bWFw LCBiZ19yZWN0LnggKyAoYXZhaWxfd2lkdGggLSBiaXRtYXAuR2V0V2lkdGgoKSkgLyAyLCBiZ19y ZWN0LnkgKyAoYmdfcmVjdC5oZWlnaHQgLSBiaXRtYXAuR2V0SGVpZ2h0KCkpIC8gMiwgVHJ1ZSkK KysrICAgICAgICBkYy5EcmF3Qml0bWFwKGJpdG1hcCwgYmdfcmVjdC54ICsgKGF2YWlsX3dpZHRo IC0gYml0bWFwLkdldFdpZHRoKCkpIC8vIDIsIGJnX3JlY3QueSArIChiZ19yZWN0LmhlaWdodCAt IGJpdG1hcC5HZXRIZWlnaHQoKSkgLy8gMiwgVHJ1ZSkKKysgCisrZGlmZiAtLWdpdCBhL3d4L2xp Yi9hZ3cvcmliYm9uL2FydF9pbnRlcm5hbC5weSBiL3d4L2xpYi9hZ3cvcmliYm9uL2FydF9pbnRl cm5hbC5weQorK2luZGV4IDRhOGRjN2NlMC4uNzhlOGYzZmU0IDEwMDY0NAorKy0tLSBhL3d4L2xp Yi9hZ3cvcmliYm9uL2FydF9pbnRlcm5hbC5weQorKysrKyBiL3d4L2xpYi9hZ3cvcmliYm9uL2Fy dF9pbnRlcm5hbC5weQorK0BAIC0zMiw5ICszMiw5IEBAIGRlZiBSaWJib25JbnRlcnBvbGF0ZUNv bG91cihzdGFydF9jb2xvdXIsIGVuZF9jb2xvdXIsIHBvc2l0aW9uLCBzdGFydF9wb3NpdGlvbiwK KysgICAgIHIgPSBlbmRfY29sb3VyLlJlZCgpIC0gc3RhcnRfY29sb3VyLlJlZCgpCisrICAgICBn ID0gZW5kX2NvbG91ci5HcmVlbigpIC0gc3RhcnRfY29sb3VyLkdyZWVuKCkKKysgICAgIGIgPSBl bmRfY29sb3VyLkJsdWUoKSAtIHN0YXJ0X2NvbG91ci5CbHVlKCkKKystICAgIHIgPSBzdGFydF9j b2xvdXIuUmVkKCkgICArICgoKHIgKiBwb3NpdGlvbiAqIDEwMCkgLyBlbmRfcG9zaXRpb24pIC8g MTAwKQorKy0gICAgZyA9IHN0YXJ0X2NvbG91ci5HcmVlbigpICsgKCgoZyAqIHBvc2l0aW9uICog MTAwKSAvIGVuZF9wb3NpdGlvbikgLyAxMDApCisrLSAgICBiID0gc3RhcnRfY29sb3VyLkJsdWUo KSAgKyAoKChiICogcG9zaXRpb24gKiAxMDApIC8gZW5kX3Bvc2l0aW9uKSAvIDEwMCkKKysrICAg IHIgPSBzdGFydF9jb2xvdXIuUmVkKCkgICArICgoKHIgKiBwb3NpdGlvbiAqIDEwMCkgLy8gZW5k X3Bvc2l0aW9uKSAvLyAxMDApCisrKyAgICBnID0gc3RhcnRfY29sb3VyLkdyZWVuKCkgKyAoKChn ICogcG9zaXRpb24gKiAxMDApIC8vIGVuZF9wb3NpdGlvbikgLy8gMTAwKQorKysgICAgYiA9IHN0 YXJ0X2NvbG91ci5CbHVlKCkgICsgKCgoYiAqIHBvc2l0aW9uICogMTAwKSAvLyBlbmRfcG9zaXRp b24pIC8vIDEwMCkKKysgCisrICAgICByZXR1cm4gd3guQ29sb3VyKHIsIGcsIGIpCisrIAorK0BA IC02MSw5ICs2MSw5IEBAIGRlZiBSaWJib25EcmF3UGFyYWxsZWxHcmFkaWVudExpbmVzKGRjLCBu bGluZXMsIGxpbmVfb3JpZ2lucywgc3RlcHgsIHN0ZXB5LCBudW1zCisrICAgICBiZCA9IGVuZF9j b2xvdXIuQmx1ZSgpIC0gc3RhcnRfY29sb3VyLkJsdWUoKQorKyAKKysgICAgIGZvciBzdGVwIGlu IHJhbmdlKG51bXN0ZXBzKToKKystICAgICAgICByID0gc3RhcnRfY29sb3VyLlJlZCgpICsgKCgo c3RlcCpyZCoxMDApL251bXN0ZXBzKS8xMDApCisrLSAgICAgICAgZyA9IHN0YXJ0X2NvbG91ci5H cmVlbigpICsgKCgoc3RlcCpnZCoxMDApL251bXN0ZXBzKS8xMDApCisrLSAgICAgICAgYiA9IHN0 YXJ0X2NvbG91ci5CbHVlKCkgKyAoKChzdGVwKmJkKjEwMCkvbnVtc3RlcHMpLzEwMCkKKysrICAg ICAgICByID0gc3RhcnRfY29sb3VyLlJlZCgpICsgKCgoc3RlcCpyZCoxMDApLy9udW1zdGVwcykv LzEwMCkKKysrICAgICAgICBnID0gc3RhcnRfY29sb3VyLkdyZWVuKCkgKyAoKChzdGVwKmdkKjEw MCkvL251bXN0ZXBzKS8vMTAwKQorKysgICAgICAgIGIgPSBzdGFydF9jb2xvdXIuQmx1ZSgpICsg KCgoc3RlcCpiZCoxMDApLy9udW1zdGVwcykvLzEwMCkKKysgCisrICAgICAgICAgcCA9IHd4LlBl bih3eC5Db2xvdXIociwgZywgYikpCisrICAgICAgICAgZGMuU2V0UGVuKHApCisrZGlmZiAtLWdp dCBhL3d4L2xpYi9hZ3cvcmliYm9uL2FydF9tc3cucHkgYi93eC9saWIvYWd3L3JpYmJvbi9hcnRf bXN3LnB5CisraW5kZXggZTczMTdkNTliLi4wMGMzZGZlMmIgMTAwNjQ0CisrLS0tIGEvd3gvbGli L2Fndy9yaWJib24vYXJ0X21zdy5weQorKysrKyBiL3d4L2xpYi9hZ3cvcmliYm9uL2FydF9tc3cu cHkKKytAQCAtOTgyLDcgKzk4Miw3IEBAIGRlZiBEcmF3VGFiKHNlbGYsIGRjLCB3bmQsIHRhYik6 CisrICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLndpZHRoIC09IDQKKysgICAgICAgICAgICAg ICAgIGJhY2tncm91bmQuaGVpZ2h0IC09IDMKKysgICAgICAgICAgICAgICAgIGggPSBiYWNrZ3Jv dW5kLmhlaWdodAorKy0gICAgICAgICAgICAgICAgYmFja2dyb3VuZC5oZWlnaHQgLz0gMgorKysg ICAgICAgICAgICAgICAgYmFja2dyb3VuZC5oZWlnaHQgLy89IDIKKysgICAgICAgICAgICAgICAg IGRjLkdyYWRpZW50RmlsbExpbmVhcihiYWNrZ3JvdW5kLCBzZWxmLl90YWJfaG92ZXJfYmFja2dy b3VuZF90b3BfY29sb3VyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuX3RhYl9ob3Zlcl9iYWNrZ3JvdW5kX3RvcF9ncmFkaWVudF9jb2xvdXIsIHd4LlNPVVRI KQorKyAKKytAQCAtMTAyNCw5ICsxMDI0LDkgQEAgZGVmIERyYXdUYWIoc2VsZiwgZGMsIHduZCwg dGFiKToKKysgICAgICAgICAgICAgaWYgaWNvbi5Jc09rKCk6CisrICAgICAgICAgICAgICAgICB4 ID0gdGFiLnJlY3QueCArIDQKKysgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2ZsYWdzICYgUklC Qk9OX0JBUl9TSE9XX1BBR0VfTEFCRUxTID09IDA6CisrLSAgICAgICAgICAgICAgICAgICAgeCA9 IHRhYi5yZWN0LnggKyAodGFiLnJlY3Qud2lkdGggLSBpY29uLkdldFdpZHRoKCkpIC8gMgorKysg ICAgICAgICAgICAgICAgICAgIHggPSB0YWIucmVjdC54ICsgKHRhYi5yZWN0LndpZHRoIC0gaWNv bi5HZXRXaWR0aCgpKSAvLyAyCisrIAorKy0gICAgICAgICAgICAgICAgZGMuRHJhd0JpdG1hcChp Y29uLCB4LCB0YWIucmVjdC55ICsgMSArICh0YWIucmVjdC5oZWlnaHQgLSAxIC0gaWNvbi5HZXRI ZWlnaHQoKSkgLyAyLCBUcnVlKQorKysgICAgICAgICAgICAgICAgZGMuRHJhd0JpdG1hcChpY29u LCB4LCB0YWIucmVjdC55ICsgMSArICh0YWIucmVjdC5oZWlnaHQgLSAxIC0gaWNvbi5HZXRIZWln aHQoKSkgLy8gMiwgVHJ1ZSkKKysgCisrICAgICAgICAgaWYgc2VsZi5fZmxhZ3MgJiBSSUJCT05f QkFSX1NIT1dfUEFHRV9MQUJFTFM6CisrICAgICAgICAgICAgIGxhYmVsID0gdGFiLnBhZ2UuR2V0 TGFiZWwoKQorK0BAIC0xMDQzLDEzICsxMDQzLDEzIEBAIGRlZiBEcmF3VGFiKHNlbGYsIGRjLCB3 bmQsIHRhYik6CisrICAgICAgICAgICAgICAgICAgICAgeCArPSAzICsgdGFiLnBhZ2UuR2V0SWNv bigpLkdldFdpZHRoKCkKKysgICAgICAgICAgICAgICAgICAgICB3aWR0aCAtPSAzICsgdGFiLnBh Z2UuR2V0SWNvbigpLkdldFdpZHRoKCkKKysgCisrLSAgICAgICAgICAgICAgICB5ID0gdGFiLnJl Y3QueSArICh0YWIucmVjdC5oZWlnaHQgLSB0ZXh0X2hlaWdodCkgLyAyCisrKyAgICAgICAgICAg ICAgICB5ID0gdGFiLnJlY3QueSArICh0YWIucmVjdC5oZWlnaHQgLSB0ZXh0X2hlaWdodCkgLy8g MgorKyAKKysgICAgICAgICAgICAgICAgIGlmIHdpZHRoIDw9IHRleHRfd2lkdGg6CisrICAgICAg ICAgICAgICAgICAgICAgZGMuU2V0Q2xpcHBpbmdSZWdpb24oeCwgdGFiLnJlY3QueSwgd2lkdGgs IHRhYi5yZWN0LmhlaWdodCkKKysgICAgICAgICAgICAgICAgICAgICBkYy5EcmF3VGV4dChsYWJl bCwgeCwgeSkKKysgICAgICAgICAgICAgICAgIGVsc2U6CisrLSAgICAgICAgICAgICAgICAgICAg ZGMuRHJhd1RleHQobGFiZWwsIHggKyAod2lkdGggLSB0ZXh0X3dpZHRoKSAvIDIgKyAxLCB5KQor KysgICAgICAgICAgICAgICAgICAgIGRjLkRyYXdUZXh0KGxhYmVsLCB4ICsgKHdpZHRoIC0gdGV4 dF93aWR0aCkgLy8gMiArIDEsIHkpCisrIAorKyAKKysgICAgIGRlZiBEcmF3VGFiU2VwYXJhdG9y KHNlbGYsIGRjLCB3bmQsIHJlY3QsIHZpc2liaWxpdHkpOgorK0BAIC0xMDkzLDcgKzEwOTMsNyBA QCBkZWYgUmVhbGx5RHJhd1RhYlNlcGFyYXRvcihzZWxmLCB3bmQsIHJlY3QsIHZpc2liaWxpdHkp OgorKyAgICAgICAgIGRjID0gd3guTWVtb3J5REMoc2VsZi5fY2FjaGVkX3RhYl9zZXBhcmF0b3Ip CisrICAgICAgICAgc2VsZi5EcmF3VGFiQ3RybEJhY2tncm91bmQoZGMsIHduZCwgcmVjdCkKKysg CisrLSAgICAgICAgeCA9IHJlY3QueCArIHJlY3Qud2lkdGggLyAyCisrKyAgICAgICAgeCA9IHJl Y3QueCArIHJlY3Qud2lkdGggLy8gMgorKyAgICAgICAgIGggPSBmbG9hdChyZWN0LmhlaWdodCAt IDEpCisrIAorKyAgICAgICAgIHIxID0gc2VsZi5fdGFiX2N0cmxfYmFja2dyb3VuZF9icnVzaC5H ZXRDb2xvdXIoKS5SZWQoKSAqICgxLjAgLSB2aXNpYmlsaXR5KSArIDAuNQorK0BAIC0xMTQ2LDcg KzExNDYsNyBAQCBkZWYgRHJhd1BhcnRpYWxQYWdlQmFja2dyb3VuZDEoc2VsZiwgZGMsIHduZCwg cmVjdCwgcGFnZSwgb2Zmc2V0LCBob3ZlcmVkPUZhbHNlKQorKyAKKysgICAgICAgICAjIHVwcGVy X3JlY3QsIGxvd2VyX3JlY3QsIHBhaW50X3JlY3QgYXJlIGFsbCBpbiBwYWdlIGNvLW9yZGluYXRl cworKyAgICAgICAgIHVwcGVyX3JlY3QgPSB3eC5SZWN0KCpiYWNrZ3JvdW5kKQorKy0gICAgICAg IHVwcGVyX3JlY3QuaGVpZ2h0IC89IDUKKysrICAgICAgICB1cHBlcl9yZWN0LmhlaWdodCAvLz0g NQorKyAKKysgICAgICAgICBsb3dlcl9yZWN0ID0gd3guUmVjdCgqYmFja2dyb3VuZCkKKysgICAg ICAgICBsb3dlcl9yZWN0LnkgKz0gdXBwZXJfcmVjdC5oZWlnaHQKKytAQCAtMTIyOSw3ICsxMjI5 LDcgQEAgZGVmIERyYXdQYWdlQmFja2dyb3VuZChzZWxmLCBkYywgd25kLCByZWN0KToKKysgICAg ICAgICBiYWNrZ3JvdW5kLndpZHRoIC09IDQKKysgICAgICAgICBiYWNrZ3JvdW5kLmhlaWdodCAt PSAyCisrIAorKy0gICAgICAgIGJhY2tncm91bmQuaGVpZ2h0IC89IDUKKysrICAgICAgICBiYWNr Z3JvdW5kLmhlaWdodCAvLz0gNQorKyAgICAgICAgIGRjLkdyYWRpZW50RmlsbExpbmVhcihiYWNr Z3JvdW5kLCBzZWxmLl9wYWdlX2JhY2tncm91bmRfdG9wX2NvbG91ciwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5fcGFnZV9iYWNrZ3JvdW5kX3RvcF9ncmFkaWVudF9jb2xv dXIsIHd4LlNPVVRIKQorKyAKKytAQCAtMTQ5MywxMCArMTQ5MywxMCBAQCBkZWYgRHJhd1BhbmVs QmFja2dyb3VuZChzZWxmLCBkYywgd25kLCByZWN0KToKKysgCisrICAgICAgICAgaWYgY2xpcF9s YWJlbDoKKysgICAgICAgICAgICAgY2xpcCA9IHd4LkRDQ2xpcHBlcihkYywgbGFiZWxfcmVjdCkK KystICAgICAgICAgICAgZGMuRHJhd1RleHQobGFiZWwsIGxhYmVsX3JlY3QueCwgbGFiZWxfcmVj dC55ICsgKGxhYmVsX3JlY3QuR2V0SGVpZ2h0KCkgLSBsYWJlbF9zaXplLkdldEhlaWdodCgpKSAv IDIpCisrKyAgICAgICAgICAgIGRjLkRyYXdUZXh0KGxhYmVsLCBsYWJlbF9yZWN0LngsIGxhYmVs X3JlY3QueSArIChsYWJlbF9yZWN0LkdldEhlaWdodCgpIC0gbGFiZWxfc2l6ZS5HZXRIZWlnaHQo KSkgLy8gMikKKysgICAgICAgICBlbHNlOgorKy0gICAgICAgICAgICBkYy5EcmF3VGV4dChsYWJl bCwgbGFiZWxfcmVjdC54ICsgKGxhYmVsX3JlY3QuR2V0V2lkdGgoKSAtIGxhYmVsX3NpemUuR2V0 V2lkdGgoKSkgLyAyLAorKy0gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbF9yZWN0LnkgKyAo bGFiZWxfcmVjdC5HZXRIZWlnaHQoKSAtIGxhYmVsX3NpemUuR2V0SGVpZ2h0KCkpIC8gMikKKysr ICAgICAgICAgICAgZGMuRHJhd1RleHQobGFiZWwsIGxhYmVsX3JlY3QueCArIChsYWJlbF9yZWN0 LkdldFdpZHRoKCkgLSBsYWJlbF9zaXplLkdldFdpZHRoKCkpIC8vIDIsCisrKyAgICAgICAgICAg ICAgICAgICAgICAgIGxhYmVsX3JlY3QueSArIChsYWJlbF9yZWN0LkdldEhlaWdodCgpIC0gbGFi ZWxfc2l6ZS5HZXRIZWlnaHQoKSkgLy8gMikKKysgCisrICAgICAgICAgaWYgaGFzX2V4dF9idXR0 b246CisrICAgICAgICAgICAgIGlmIHduZC5Jc0V4dEJ1dHRvbkhvdmVyZWQoKToKKytAQCAtMTU3 Nyw3ICsxNTc3LDcgQEAgZGVmIERyYXdHYWxsZXJ5QmFja2dyb3VuZENvbW1vbihzZWxmLCBkYywg d25kLCByZWN0KToKKysgICAgICAgICAgICAgIyBEaXZpZGVyIGJldHdlZW4gaXRlbXMgYW5kIGJ1 dHRvbnMKKysgICAgICAgICAgICAgZGMuRHJhd0xpbmUocmVjdC54LCByZWN0LnkgKyByZWN0Lmhl aWdodCAtIDE1LCByZWN0LnggKyByZWN0LndpZHRoLCByZWN0LnkgKyByZWN0LmhlaWdodCAtIDE1 KQorKyAKKystICAgICAgICAgICAgdXBfYnRuID0gd3guUmVjdChyZWN0LngsIHJlY3QueSArIHJl Y3QuaGVpZ2h0IC0gMTUsIHJlY3Qud2lkdGggLyAzLCAxNSkKKysrICAgICAgICAgICAgdXBfYnRu ID0gd3guUmVjdChyZWN0LngsIHJlY3QueSArIHJlY3QuaGVpZ2h0IC0gMTUsIHJlY3Qud2lkdGgg Ly8gMywgMTUpCisrICAgICAgICAgICAgIGRvd25fYnRuID0gd3guUmVjdCh1cF9idG4uR2V0Umln aHQoKSArIDEsIHVwX2J0bi5HZXRUb3AoKSwgdXBfYnRuLkdldFdpZHRoKCksIHVwX2J0bi5HZXRI ZWlnaHQoKSkKKysgICAgICAgICAgICAgZGMuRHJhd0xpbmUoZG93bl9idG4uR2V0TGVmdCgpLCBk b3duX2J0bi5HZXRUb3AoKSwgZG93bl9idG4uR2V0TGVmdCgpLCBkb3duX2J0bi5HZXRCb3R0b20o KSkKKysgICAgICAgICAgICAgZXh0X2J0biA9IHd4LlJlY3QoZG93bl9idG4uR2V0UmlnaHQoKSAr IDEsIHVwX2J0bi5HZXRUb3AoKSwgcmVjdC53aWR0aCAtIHVwX2J0bi5HZXRXaWR0aCgpIC0gZG93 bl9idG4uR2V0V2lkdGgoKSAtIDEsIHVwX2J0bi5HZXRIZWlnaHQoKSkKKytAQCAtMTU4Nyw3ICsx NTg3LDcgQEAgZGVmIERyYXdHYWxsZXJ5QmFja2dyb3VuZENvbW1vbihzZWxmLCBkYywgd25kLCBy ZWN0KToKKysgICAgICAgICAgICAgIyBEaXZpZGVyIGJldHdlZW4gaXRlbXMgYW5kIGJ1dHRvbnMK KysgICAgICAgICAgICAgZGMuRHJhd0xpbmUocmVjdC54ICsgcmVjdC53aWR0aCAtIDE1LCByZWN0 LnksIHJlY3QueCArIHJlY3Qud2lkdGggLSAxNSwgcmVjdC55ICsgcmVjdC5oZWlnaHQpCisrIAor Ky0gICAgICAgICAgICB1cF9idG4gPSB3eC5SZWN0KHJlY3QueCArIHJlY3Qud2lkdGggLSAxNSwg cmVjdC55LCAxNSwgcmVjdC5oZWlnaHQgLyAzKQorKysgICAgICAgICAgICB1cF9idG4gPSB3eC5S ZWN0KHJlY3QueCArIHJlY3Qud2lkdGggLSAxNSwgcmVjdC55LCAxNSwgcmVjdC5oZWlnaHQgLy8g MykKKysgICAgICAgICAgICAgZG93bl9idG4gPSB3eC5SZWN0KHVwX2J0bi5HZXRMZWZ0KCksIHVw X2J0bi5HZXRCb3R0b20oKSArIDEsIHVwX2J0bi5HZXRXaWR0aCgpLCB1cF9idG4uR2V0SGVpZ2h0 KCkpCisrICAgICAgICAgICAgIGRjLkRyYXdMaW5lKGRvd25fYnRuLkdldExlZnQoKSwgZG93bl9i dG4uR2V0VG9wKCksIGRvd25fYnRuLkdldFJpZ2h0KCksIGRvd25fYnRuLkdldFRvcCgpKQorKyAg ICAgICAgICAgICBleHRfYnRuID0gd3guUmVjdCh1cF9idG4uR2V0TGVmdCgpLCBkb3duX2J0bi5H ZXRCb3R0b20oKSArIDEsIHVwX2J0bi5HZXRXaWR0aCgpLCByZWN0LmhlaWdodCAtIHVwX2J0bi5H ZXRIZWlnaHQoKSAtIGRvd25fYnRuLkdldEhlaWdodCgpIC0gMSkKKytAQCAtMTYzMywxNCArMTYz MywxNCBAQCBkZWYgRHJhd0dhbGxlcnlCdXR0b24oc2VsZiwgZGMsIHJlY3QsIHN0YXRlLCBiaXRt YXBzKToKKysgCisrICAgICAgICAgZGMuU2V0UGVuKHd4LlRSQU5TUEFSRU5UX1BFTikKKysgICAg ICAgICBkYy5TZXRCcnVzaChidG5fdG9wX2JydXNoKQorKy0gICAgICAgIGRjLkRyYXdSZWN0YW5n bGUocmVjdC54LCByZWN0LnksIHJlY3Qud2lkdGgsIHJlY3QuaGVpZ2h0IC8gMikKKysrICAgICAg ICBkYy5EcmF3UmVjdGFuZ2xlKHJlY3QueCwgcmVjdC55LCByZWN0LndpZHRoLCByZWN0LmhlaWdo dCAvLyAyKQorKyAKKysgICAgICAgICBsb3dlciA9IHd4LlJlY3QoKnJlY3QpCisrLSAgICAgICAg bG93ZXIuaGVpZ2h0ID0gKGxvd2VyLmhlaWdodCArIDEpIC8gMgorKysgICAgICAgIGxvd2VyLmhl aWdodCA9IChsb3dlci5oZWlnaHQgKyAxKSAvLyAyCisrICAgICAgICAgbG93ZXIueSArPSByZWN0 LmhlaWdodCAtIGxvd2VyLmhlaWdodAorKyAgICAgICAgIGRjLkdyYWRpZW50RmlsbExpbmVhcihs b3dlciwgYnRuX2NvbG91ciwgYnRuX2dyYWRfY29sb3VyLCB3eC5TT1VUSCkKKysgCisrLSAgICAg ICAgZGMuRHJhd0JpdG1hcChidG5fYml0bWFwLCByZWN0LnggKyByZWN0LndpZHRoIC8gMiAtIDIs IGxvd2VyLnkgLSAyLCBUcnVlKQorKysgICAgICAgIGRjLkRyYXdCaXRtYXAoYnRuX2JpdG1hcCwg cmVjdC54ICsgcmVjdC53aWR0aCAvLyAyIC0gMiwgbG93ZXIueSAtIDIsIFRydWUpCisrIAorKyAK KysgICAgIGRlZiBEcmF3R2FsbGVyeUl0ZW1CYWNrZ3JvdW5kKHNlbGYsIGRjLCB3bmQsIHJlY3Qs IGl0ZW0pOgorK0BAIC0xNjkxLDcgKzE2OTEsNyBAQCBkZWYgRHJhd0dhbGxlcnlJdGVtQmFja2dy b3VuZChzZWxmLCBkYywgd25kLCByZWN0LCBpdGVtKToKKysgICAgICAgICB1cHBlci54ICs9IDEK KysgICAgICAgICB1cHBlci53aWR0aCAtPSAyCisrICAgICAgICAgdXBwZXIueSArPSAxCisrLSAg ICAgICAgdXBwZXIuaGVpZ2h0IC89IDMKKysrICAgICAgICB1cHBlci5oZWlnaHQgLy89IDMKKysg ICAgICAgICBkYy5TZXRQZW4od3guVFJBTlNQQVJFTlRfUEVOKQorKyAgICAgICAgIGRjLlNldEJy dXNoKHRvcF9icnVzaCkKKysgICAgICAgICBkYy5EcmF3UmVjdGFuZ2xlKHVwcGVyLngsIHVwcGVy LnksIHVwcGVyLndpZHRoLCB1cHBlci5oZWlnaHQpCisrQEAgLTE3NjAsNyArMTc2MCw3IEBAIGRl ZiBEcmF3TWluaW1pc2VkUGFuZWwoc2VsZiwgZGMsIHduZCwgcmVjdCwgYml0bWFwKToKKysgICAg ICAgICAgICAgY2xpZW50X3JlY3QueCArPSAxCisrICAgICAgICAgICAgIGNsaWVudF9yZWN0Lndp ZHRoIC09IDIKKysgICAgICAgICAgICAgY2xpZW50X3JlY3QueSArPSAxCisrLSAgICAgICAgICAg IGNsaWVudF9yZWN0LmhlaWdodCA9IChyZWN0LnkgKyByZWN0LmhlaWdodCAvIDUpIC0gY2xpZW50 X3JlY3QueAorKysgICAgICAgICAgICBjbGllbnRfcmVjdC5oZWlnaHQgPSAocmVjdC55ICsgcmVj dC5oZWlnaHQgLy8gNSkgLSBjbGllbnRfcmVjdC54CisrICAgICAgICAgICAgIGRjLkdyYWRpZW50 RmlsbExpbmVhcihjbGllbnRfcmVjdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuX3BhbmVsX2FjdGl2ZV9iYWNrZ3JvdW5kX3RvcF9jb2xvdXIsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYW5lbF9hY3RpdmVfYmFja2dyb3VuZF90 b3BfZ3JhZGllbnRfY29sb3VyLCB3eC5TT1VUSCkKKytAQCAtMTc4NSw3ICsxNzg1LDcgQEAgZGVm IERyYXdNaW5pbWlzZWRQYW5lbChzZWxmLCBkYywgd25kLCByZWN0LCBiaXRtYXApOgorKyAgICAg ICAgIGRjLlNldFBlbih3eC5UUkFOU1BBUkVOVF9QRU4pCisrICAgICAgICAgZGMuRHJhd1JlY3Rh bmdsZShwcmV2aWV3LnggKyAxLCBwcmV2aWV3LnkgKyBwcmV2aWV3LmhlaWdodCAtIDgsIHByZXZp ZXcud2lkdGggLSAyLCA3KQorKyAKKystICAgICAgICBtaWRfcG9zID0gcmVjdC55ICsgcmVjdC5o ZWlnaHQgLyA1IC0gcHJldmlldy55CisrKyAgICAgICAgbWlkX3BvcyA9IHJlY3QueSArIHJlY3Qu aGVpZ2h0IC8vIDUgLSBwcmV2aWV3LnkKKysgCisrICAgICAgICAgaWYgbWlkX3BvcyA8IDAgb3Ig bWlkX3BvcyA+PSBwcmV2aWV3LmhlaWdodDoKKysgICAgICAgICAgICAgZnVsbF9yZWN0ID0gd3gu UmVjdCgqcHJldmlldykKKytAQCAtMTgxNiw4ICsxODE2LDggQEAgZGVmIERyYXdNaW5pbWlzZWRQ YW5lbChzZWxmLCBkYywgd25kLCByZWN0LCBiaXRtYXApOgorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5fcGFnZV9ob3Zlcl9iYWNrZ3JvdW5kX2dyYWRpZW50X2NvbG91 ciwgd3guU09VVEgpCisrIAorKyAgICAgICAgIGlmIGJpdG1hcC5Jc09rKCk6CisrLSAgICAgICAg ICAgIGRjLkRyYXdCaXRtYXAoYml0bWFwLCBwcmV2aWV3LnggKyAocHJldmlldy53aWR0aCAtIGJp dG1hcC5HZXRXaWR0aCgpKSAvIDIsCisrLSAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmll dy55ICsgKHByZXZpZXcuaGVpZ2h0IC0gNyAtIGJpdG1hcC5HZXRIZWlnaHQoKSkgLyAyLCBUcnVl KQorKysgICAgICAgICAgICBkYy5EcmF3Qml0bWFwKGJpdG1hcCwgcHJldmlldy54ICsgKHByZXZp ZXcud2lkdGggLSBiaXRtYXAuR2V0V2lkdGgoKSkgLy8gMiwKKysrICAgICAgICAgICAgICAgICAg ICAgICAgICBwcmV2aWV3LnkgKyAocHJldmlldy5oZWlnaHQgLSA3IC0gYml0bWFwLkdldEhlaWdo dCgpKSAvLyAyLCBUcnVlKQorKyAKKysgICAgICAgICBzZWxmLkRyYXdQYW5lbEJvcmRlcihkYywg cHJldmlldywgc2VsZi5fcGFuZWxfYm9yZGVyX3Blbiwgc2VsZi5fcGFuZWxfYm9yZGVyX2dyYWRp ZW50X3BlbikKKysgICAgICAgICBzZWxmLkRyYXdQYW5lbEJvcmRlcihkYywgdHJ1ZV9yZWN0LCBz ZWxmLl9wYW5lbF9taW5pbWlzZWRfYm9yZGVyX3Blbiwgc2VsZi5fcGFuZWxfbWluaW1pc2VkX2Jv cmRlcl9ncmFkaWVudF9wZW4pCisrQEAgLTE4MjksMjAgKzE4MjksMjAgQEAgZGVmIERyYXdNaW5p bWlzZWRQYW5lbENvbW1vbihzZWxmLCBkYywgd25kLCB0cnVlX3JlY3QpOgorKyAKKysgICAgICAg ICBpZiBzZWxmLl9mbGFncyAmIFJJQkJPTl9CQVJfRkxPV19WRVJUSUNBTDoKKysgICAgICAgICAg ICAgcHJldmlldy54ID0gdHJ1ZV9yZWN0LnggKyA0CisrLSAgICAgICAgICAgIHByZXZpZXcueSA9 IHRydWVfcmVjdC55ICsgKHRydWVfcmVjdC5oZWlnaHQgLSBwcmV2aWV3LmhlaWdodCkgLyAyCisr KyAgICAgICAgICAgIHByZXZpZXcueSA9IHRydWVfcmVjdC55ICsgKHRydWVfcmVjdC5oZWlnaHQg LSBwcmV2aWV3LmhlaWdodCkgLy8gMgorKyAgICAgICAgIGVsc2U6CisrLSAgICAgICAgICAgIHBy ZXZpZXcueCA9IHRydWVfcmVjdC54ICsgKHRydWVfcmVjdC53aWR0aCAtIHByZXZpZXcud2lkdGgp IC8gMgorKysgICAgICAgICAgICBwcmV2aWV3LnggPSB0cnVlX3JlY3QueCArICh0cnVlX3JlY3Qu d2lkdGggLSBwcmV2aWV3LndpZHRoKSAvLyAyCisrICAgICAgICAgICAgIHByZXZpZXcueSA9IHRy dWVfcmVjdC55ICsgNAorKyAKKysgICAgICAgICBkYy5TZXRGb250KHNlbGYuX3BhbmVsX2xhYmVs X2ZvbnQpCisrICAgICAgICAgbGFiZWxfd2lkdGgsIGxhYmVsX2hlaWdodCA9IGRjLkdldFRleHRF eHRlbnQod25kLkdldExhYmVsKCkpCisrIAorKy0gICAgICAgIHhwb3MgPSB0cnVlX3JlY3QueCAr ICh0cnVlX3JlY3Qud2lkdGggLSBsYWJlbF93aWR0aCArIDEpIC8gMgorKysgICAgICAgIHhwb3Mg PSB0cnVlX3JlY3QueCArICh0cnVlX3JlY3Qud2lkdGggLSBsYWJlbF93aWR0aCArIDEpIC8vIDIK KysgICAgICAgICB5cG9zID0gcHJldmlldy55ICsgcHJldmlldy5oZWlnaHQgKyA1CisrIAorKyAg ICAgICAgIGlmIHNlbGYuX2ZsYWdzICYgUklCQk9OX0JBUl9GTE9XX1ZFUlRJQ0FMOgorKyAgICAg ICAgICAgICB4cG9zID0gcHJldmlldy54ICsgcHJldmlldy53aWR0aCArIDUKKystICAgICAgICAg ICAgeXBvcyA9IHRydWVfcmVjdC55ICsgKHRydWVfcmVjdC5oZWlnaHQgLSBsYWJlbF9oZWlnaHQp IC8gMgorKysgICAgICAgICAgICB5cG9zID0gdHJ1ZV9yZWN0LnkgKyAodHJ1ZV9yZWN0LmhlaWdo dCAtIGxhYmVsX2hlaWdodCkgLy8gMgorKyAKKysgICAgICAgICBkYy5TZXRUZXh0Rm9yZWdyb3Vu ZChzZWxmLl9wYW5lbF9taW5pbWlzZWRfbGFiZWxfY29sb3VyKQorKyAgICAgICAgIGRjLkRyYXdU ZXh0KHduZC5HZXRMYWJlbCgpLCB4cG9zLCB5cG9zKQorK0BAIC0xODUxLDEyICsxODUxLDEyIEBA IGRlZiBEcmF3TWluaW1pc2VkUGFuZWxDb21tb24oc2VsZiwgZGMsIHduZCwgdHJ1ZV9yZWN0KToK KysgCisrICAgICAgICAgaWYgc2VsZi5fZmxhZ3MgJiBSSUJCT05fQkFSX0ZMT1dfVkVSVElDQUw6 CisrICAgICAgICAgICAgIHhwb3MgKz0gbGFiZWxfd2lkdGgKKystICAgICAgICAgICAgYXJyb3df cG9pbnRzWzBdID0gd3guUG9pbnQoeHBvcyArIDUsIHlwb3MgKyBsYWJlbF9oZWlnaHQgLyAyKQor KysgICAgICAgICAgICBhcnJvd19wb2ludHNbMF0gPSB3eC5Qb2ludCh4cG9zICsgNSwgeXBvcyAr IGxhYmVsX2hlaWdodCAvLyAyKQorKyAgICAgICAgICAgICBhcnJvd19wb2ludHNbMV0gPSBhcnJv d19wb2ludHNbMF0gKyB3eC5Qb2ludCgtMywgIDMpCisrICAgICAgICAgICAgIGFycm93X3BvaW50 c1syXSA9IGFycm93X3BvaW50c1swXSArIHd4LlBvaW50KC0zLCAtMykKKysgICAgICAgICBlbHNl OgorKyAgICAgICAgICAgICB5cG9zICs9IGxhYmVsX2hlaWdodAorKy0gICAgICAgICAgICBhcnJv d19wb2ludHNbMF0gPSB3eC5Qb2ludCh0cnVlX3JlY3Qud2lkdGggLyAyLCB5cG9zICsgNSkKKysr ICAgICAgICAgICAgYXJyb3dfcG9pbnRzWzBdID0gd3guUG9pbnQodHJ1ZV9yZWN0LndpZHRoIC8v IDIsIHlwb3MgKyA1KQorKyAgICAgICAgICAgICBhcnJvd19wb2ludHNbMV0gPSBhcnJvd19wb2lu dHNbMF0gKyB3eC5Qb2ludCgtMywgLTMpCisrICAgICAgICAgICAgIGFycm93X3BvaW50c1syXSA9 IGFycm93X3BvaW50c1swXSArIHd4LlBvaW50KCAzLCAtMykKKysgCisrQEAgLTE5NjcsNyArMTk2 Nyw3IEBAIGRlZiBEcmF3QnV0dG9uQmFyQnV0dG9uKHNlbGYsIGRjLCB3bmQsIHJlY3QsIGtpbmQs IHN0YXRlLCBsYWJlbCwgYml0bWFwX2xhcmdlLCBiCisrICAgICAgICAgICAgIGJnX3JlY3QuaGVp Z2h0IC09IDIKKysgCisrICAgICAgICAgICAgIGJnX3JlY3RfdG9wID0gd3guUmVjdCgqYmdfcmVj dCkKKystICAgICAgICAgICAgYmdfcmVjdF90b3AuaGVpZ2h0IC89IDMKKysrICAgICAgICAgICAg YmdfcmVjdF90b3AuaGVpZ2h0IC8vPSAzCisrICAgICAgICAgICAgIGJnX3JlY3QueSArPSBiZ19y ZWN0X3RvcC5oZWlnaHQKKysgICAgICAgICAgICAgYmdfcmVjdC5oZWlnaHQgLT0gYmdfcmVjdF90 b3AuaGVpZ2h0CisrIAorK0BAIC0yMDQzLDcgKzIwNDMsNyBAQCBkZWYgRHJhd0J1dHRvbkJhckJ1 dHRvbkZvcmVncm91bmQoc2VsZiwgZGMsIHJlY3QsIGtpbmQsIHN0YXRlLCBsYWJlbCwgYml0bWFw X2xhcgorKyAgICAgICAgIGlmIHJlc3VsdCA9PSBSSUJCT05fQlVUVE9OQkFSX0JVVFRPTl9MQVJH RToKKysgCisrICAgICAgICAgICAgIHBhZGRpbmcgPSAyCisrLSAgICAgICAgICAgIGRjLkRyYXdC aXRtYXAoYml0bWFwX2xhcmdlLCByZWN0LnggKyAocmVjdC53aWR0aCAtIGJpdG1hcF9sYXJnZS5H ZXRXaWR0aCgpKSAvIDIsCisrKyAgICAgICAgICAgIGRjLkRyYXdCaXRtYXAoYml0bWFwX2xhcmdl LCByZWN0LnggKyAocmVjdC53aWR0aCAtIGJpdG1hcF9sYXJnZS5HZXRXaWR0aCgpKSAvLyAyLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QueSArIHBhZGRpbmcsIFRydWUpCisrICAg ICAgICAgICAgIHlwb3MgPSByZWN0LnkgKyBwYWRkaW5nICsgYml0bWFwX2xhcmdlLkdldEhlaWdo dCgpICsgcGFkZGluZworKyAgICAgICAgICAgICBhcnJvd193aWR0aCA9IChraW5kID09IFJJQkJP Tl9CVVRUT05fTk9STUFMIGFuZCBbMF0gb3IgWzhdKVswXQorK0BAIC0yMDUyLDEwICsyMDUyLDEw IEBAIGRlZiBEcmF3QnV0dG9uQmFyQnV0dG9uRm9yZWdyb3VuZChzZWxmLCBkYywgcmVjdCwga2lu ZCwgc3RhdGUsIGxhYmVsLCBiaXRtYXBfbGFyCisrIAorKyAgICAgICAgICAgICBpZiBsYWJlbF93 ICsgMiAqIHBhZGRpbmcgPD0gcmVjdC53aWR0aDoKKysgCisrLSAgICAgICAgICAgICAgICBkYy5E cmF3VGV4dChsYWJlbCwgcmVjdC54ICsgKHJlY3Qud2lkdGggLSBsYWJlbF93KSAvIDIsIHlwb3Mp CisrKyAgICAgICAgICAgICAgICBkYy5EcmF3VGV4dChsYWJlbCwgcmVjdC54ICsgKHJlY3Qud2lk dGggLSBsYWJlbF93KSAvLyAyLCB5cG9zKQorKyAgICAgICAgICAgICAgICAgaWYgYXJyb3dfd2lk dGggIT0gMDoKKystICAgICAgICAgICAgICAgICAgICBzZWxmLkRyYXdEcm9wZG93bkFycm93KGRj LCByZWN0LnggKyByZWN0LndpZHRoIC8gMiwKKystICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHlwb3MgKyAobGFiZWxfaCAqIDMpIC8gMiwKKysrICAgICAgICAgICAg ICAgICAgICBzZWxmLkRyYXdEcm9wZG93bkFycm93KGRjLCByZWN0LnggKyByZWN0LndpZHRoIC8v IDIsCisrKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5cG9zICsg KGxhYmVsX2ggKiAzKSAvLyAyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5fYnV0dG9uX2Jhcl9sYWJlbF9jb2xvdXIpCisrICAgICAgICAgICAgIGVs c2U6CisrICAgICAgICAgICAgICAgICBicmVha2kgPSBsZW4obGFiZWwpCisrQEAgLTIwNjcsMTcg KzIwNjcsMTcgQEAgZGVmIERyYXdCdXR0b25CYXJCdXR0b25Gb3JlZ3JvdW5kKHNlbGYsIGRjLCBy ZWN0LCBraW5kLCBzdGF0ZSwgbGFiZWwsIGJpdG1hcF9sYXIKKysgICAgICAgICAgICAgICAgICAg ICAgICAgbGFiZWxfdywgbGFiZWxfaCA9IGRjLkdldFRleHRFeHRlbnQobGFiZWxfdG9wKQorKyAK KysgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGFiZWxfdyArIDIgKiBwYWRkaW5nIDw9IHJl Y3Qud2lkdGg6CisrLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYy5EcmF3VGV4dChsYWJl bF90b3AsIHJlY3QueCArIChyZWN0LndpZHRoIC0gbGFiZWxfdykgLyAyLCB5cG9zKQorKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGMuRHJhd1RleHQobGFiZWxfdG9wLCByZWN0LnggKyAo cmVjdC53aWR0aCAtIGxhYmVsX3cpIC8vIDIsIHlwb3MpCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB5cG9zICs9IGxhYmVsX2gKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxh YmVsX2JvdHRvbSA9IGxhYmVsW2JyZWFraTpdCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsYWJlbF93LCBsYWJlbF9oID0gZGMuR2V0VGV4dEV4dGVudChsYWJlbF9ib3R0b20pCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbF93ICs9IGFycm93X3dpZHRoCisrLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpWCA9IHJlY3QueCArIChyZWN0LndpZHRoIC0gbGFiZWxf dykgLyAyCisrKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpWCA9IHJlY3QueCArIChyZWN0 LndpZHRoIC0gbGFiZWxfdykgLy8gMgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGMu RHJhd1RleHQobGFiZWxfYm90dG9tLCBpWCwgeXBvcykKKysgCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiBhcnJvd193aWR0aCAhPSAwOgorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuRHJhd0Ryb3Bkb3duQXJyb3coZGMsIGlYICsgMiArbGFiZWxfdyAtIGFy cm93X3dpZHRoLAorKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeXBvcyArIGxhYmVsX2ggLyAyICsgMSwKKysrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlwb3MgKyBsYWJlbF9oIC8vIDIg KyAxLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5fYnV0dG9uX2Jhcl9sYWJlbF9jb2xvdXIpCisrIAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWsKKytAQCAtMjA4NSwxNCArMjA4NSwxNCBAQCBkZWYgRHJhd0J1 dHRvbkJhckJ1dHRvbkZvcmVncm91bmQoc2VsZiwgZGMsIHJlY3QsIGtpbmQsIHN0YXRlLCBsYWJl bCwgYml0bWFwX2xhcgorKyAgICAgICAgIGVsaWYgcmVzdWx0ID09IFJJQkJPTl9CVVRUT05CQVJf QlVUVE9OX01FRElVTToKKysgCisrICAgICAgICAgICAgIHhfY3Vyc29yID0gcmVjdC54ICsgMgor Ky0gICAgICAgICAgICBkYy5EcmF3Qml0bWFwKGJpdG1hcF9zbWFsbCwgeF9jdXJzb3IsIHJlY3Qu eSArIChyZWN0LmhlaWdodCAtIGJpdG1hcF9zbWFsbC5HZXRIZWlnaHQoKSkvMiwgVHJ1ZSkKKysr ICAgICAgICAgICAgZGMuRHJhd0JpdG1hcChiaXRtYXBfc21hbGwsIHhfY3Vyc29yLCByZWN0Lnkg KyAocmVjdC5oZWlnaHQgLSBiaXRtYXBfc21hbGwuR2V0SGVpZ2h0KCkpLy8yLCBUcnVlKQorKyAg ICAgICAgICAgICB4X2N1cnNvciArPSBiaXRtYXBfc21hbGwuR2V0V2lkdGgoKSArIDIKKysgICAg ICAgICAgICAgbGFiZWxfdywgbGFiZWxfaCA9IGRjLkdldFRleHRFeHRlbnQobGFiZWwpCisrLSAg ICAgICAgICAgIGRjLkRyYXdUZXh0KGxhYmVsLCB4X2N1cnNvciwgcmVjdC55ICsgKHJlY3QuaGVp Z2h0IC0gbGFiZWxfaCkgLyAyKQorKysgICAgICAgICAgICBkYy5EcmF3VGV4dChsYWJlbCwgeF9j dXJzb3IsIHJlY3QueSArIChyZWN0LmhlaWdodCAtIGxhYmVsX2gpIC8vIDIpCisrICAgICAgICAg ICAgIHhfY3Vyc29yICs9IGxhYmVsX3cgKyAzCisrIAorKyAgICAgICAgICAgICBpZiBraW5kICE9 IFJJQkJPTl9CVVRUT05fTk9STUFMOgorKy0gICAgICAgICAgICAgICAgc2VsZi5EcmF3RHJvcGRv d25BcnJvdyhkYywgeF9jdXJzb3IsIHJlY3QueSArIHJlY3QuaGVpZ2h0IC8gMiwKKysrICAgICAg ICAgICAgICAgIHNlbGYuRHJhd0Ryb3Bkb3duQXJyb3coZGMsIHhfY3Vyc29yLCByZWN0LnkgKyBy ZWN0LmhlaWdodCAvLyAyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLl9idXR0b25fYmFyX2xhYmVsX2NvbG91cikKKysgCisrICAgICAgICAgZWxzZToKKytA QCAtMjE4NCw3ICsyMTg0LDcgQEAgZGVmIERyYXdUb29sKHNlbGYsIGRjLCB3bmQsIHJlY3QsIGJp dG1hcCwga2luZCwgc3RhdGUpOgorKyAKKysgICAgICAgICAjIEJhY2tncm91bmQKKysgICAgICAg ICBiZ19yZWN0X3RvcCA9IHd4LlJlY3QoKmJnX3JlY3QpCisrLSAgICAgICAgYmdfcmVjdF90b3Au aGVpZ2h0ID0gKGJnX3JlY3RfdG9wLmhlaWdodCAqIDIpIC8gNQorKysgICAgICAgIGJnX3JlY3Rf dG9wLmhlaWdodCA9IChiZ19yZWN0X3RvcC5oZWlnaHQgKiAyKSAvLyA1CisrICAgICAgICAgYmdf cmVjdF9idG0gPSB3eC5SZWN0KCpiZ19yZWN0KQorKyAgICAgICAgIGJnX3JlY3RfYnRtLnkgKz0g YmdfcmVjdF90b3AuaGVpZ2h0CisrICAgICAgICAgYmdfcmVjdF9idG0uaGVpZ2h0IC09IGJnX3Jl Y3RfdG9wLmhlaWdodAorK0BAIC0yMjQ0LDEwICsyMjQ0LDEwIEBAIGRlZiBEcmF3VG9vbChzZWxm LCBkYywgd25kLCByZWN0LCBiaXRtYXAsIGtpbmQsIHN0YXRlKToKKysgICAgICAgICAgICAgICAg IGRjLkRyYXdMaW5lKHJlY3QueCArIGF2YWlsX3dpZHRoICsgMSwgcmVjdC55LCByZWN0LnggKyBh dmFpbF93aWR0aCArIDEsIHJlY3QueSArIHJlY3QuaGVpZ2h0KQorKyAKKysgICAgICAgICAgICAg ZGMuRHJhd0JpdG1hcChzZWxmLl90b29sYmFyX2Ryb3BfYml0bWFwLCBiZ19yZWN0LnggKyBhdmFp bF93aWR0aCArIDIsCisrLSAgICAgICAgICAgICAgICAgICAgICAgICAgYmdfcmVjdC55ICsgKGJn X3JlY3QuaGVpZ2h0IC8gMikgLSAyLCBUcnVlKQorKysgICAgICAgICAgICAgICAgICAgICAgICAg IGJnX3JlY3QueSArIChiZ19yZWN0LmhlaWdodCAvLyAyKSAtIDIsIFRydWUpCisrIAorKy0gICAg ICAgIGRjLkRyYXdCaXRtYXAoYml0bWFwLCBiZ19yZWN0LnggKyAoYXZhaWxfd2lkdGggLSBiaXRt YXAuR2V0V2lkdGgoKSkgLyAyLAorKy0gICAgICAgICAgICAgICAgICAgICAgYmdfcmVjdC55ICsg KGJnX3JlY3QuaGVpZ2h0IC0gYml0bWFwLkdldEhlaWdodCgpKSAvIDIsIFRydWUpCisrKyAgICAg ICAgZGMuRHJhd0JpdG1hcChiaXRtYXAsIGJnX3JlY3QueCArIChhdmFpbF93aWR0aCAtIGJpdG1h cC5HZXRXaWR0aCgpKSAvLyAyLAorKysgICAgICAgICAgICAgICAgICAgICAgYmdfcmVjdC55ICsg KGJnX3JlY3QuaGVpZ2h0IC0gYml0bWFwLkdldEhlaWdodCgpKSAvLyAyLCBUcnVlKQorKyAKKysg CisrICAgICBkZWYgR2V0QmFyVGFiV2lkdGgoc2VsZiwgZGMsIHduZCwgbGFiZWwsIGJpdG1hcCwg aWRlYWw9Tm9uZSwgc21hbGxfYmVnaW5fbmVlZF9zZXBhcmF0b3I9Tm9uZSwKKytAQCAtMjQ3NCw3 ICsyNDc0LDcgQEAgZGVmIEdldEdhbGxlcnlDbGllbnRTaXplKHNlbGYsIGRjLCB3bmQsIHNpemUs IGNsaWVudF9vZmZzZXQ9Tm9uZSwgc2Nyb2xsX3VwX2J1dHQKKysgICAgICAgICAgICAgc2Nyb2xs X3VwLnkgPSBzaXplLkdldEhlaWdodCgpIC0gMTUKKysgICAgICAgICAgICAgc2Nyb2xsX3VwLmhl aWdodCA9IDE1CisrICAgICAgICAgICAgIHNjcm9sbF91cC54ID0gMAorKy0gICAgICAgICAgICBz Y3JvbGxfdXAud2lkdGggPSAoc2l6ZS5HZXRXaWR0aCgpICsgMikgLyAzCisrKyAgICAgICAgICAg IHNjcm9sbF91cC53aWR0aCA9IChzaXplLkdldFdpZHRoKCkgKyAyKSAvLyAzCisrICAgICAgICAg ICAgIHNjcm9sbF9kb3duLnkgPSBzY3JvbGxfdXAueQorKyAgICAgICAgICAgICBzY3JvbGxfZG93 bi5oZWlnaHQgPSBzY3JvbGxfdXAuaGVpZ2h0CisrICAgICAgICAgICAgIHNjcm9sbF9kb3duLngg PSBzY3JvbGxfdXAueCArIHNjcm9sbF91cC53aWR0aAorK0BAIC0yNDkxLDcgKzI0OTEsNyBAQCBk ZWYgR2V0R2FsbGVyeUNsaWVudFNpemUoc2VsZiwgZGMsIHduZCwgc2l6ZSwgY2xpZW50X29mZnNl dD1Ob25lLCBzY3JvbGxfdXBfYnV0dAorKyAgICAgICAgICAgICBzY3JvbGxfdXAueCA9IHNpemUu R2V0V2lkdGgoKSAtIDE1CisrICAgICAgICAgICAgIHNjcm9sbF91cC53aWR0aCA9IDE1CisrICAg ICAgICAgICAgIHNjcm9sbF91cC55ID0gMAorKy0gICAgICAgICAgICBzY3JvbGxfdXAuaGVpZ2h0 ID0gKHNpemUuR2V0SGVpZ2h0KCkgKyAyKSAvIDMKKysrICAgICAgICAgICAgc2Nyb2xsX3VwLmhl aWdodCA9IChzaXplLkdldEhlaWdodCgpICsgMikgLy8gMworKyAgICAgICAgICAgICBzY3JvbGxf ZG93bi54ID0gc2Nyb2xsX3VwLngKKysgICAgICAgICAgICAgc2Nyb2xsX2Rvd24ud2lkdGggPSBz Y3JvbGxfdXAud2lkdGgKKysgICAgICAgICAgICAgc2Nyb2xsX2Rvd24ueSA9IHNjcm9sbF91cC55 ICsgc2Nyb2xsX3VwLmhlaWdodAorK2RpZmYgLS1naXQgYS93eC9saWIvYWd3L3JpYmJvbi9iYXIu cHkgYi93eC9saWIvYWd3L3JpYmJvbi9iYXIucHkKKytpbmRleCBhZThiNmExOWMuLmIwZDI4Nzc2 ZCAxMDA2NDQKKystLS0gYS93eC9saWIvYWd3L3JpYmJvbi9iYXIucHkKKysrKysgYi93eC9saWIv YWd3L3JpYmJvbi9iYXIucHkKKytAQCAtNzQzLDcgKzc0Myw3IEBAIGRlZiBSZWNhbGN1bGF0ZVRh YlNpemVzKHNlbGYpOgorKyAgICAgICAgICAgICAgICAgICAgIGRlbHRhID0gaW5mby5pZGVhbF93 aWR0aCAtIGluZm8uc21hbGxfbXVzdF9oYXZlX3NlcGFyYXRvcl93aWR0aAorKyAgICAgICAgICAg ICAgICAgICAgIGluZm8ucmVjdC54ID0geAorKyAgICAgICAgICAgICAgICAgICAgIGluZm8ucmVj dC55ID0geQorKy0gICAgICAgICAgICAgICAgICAgIGluZm8ucmVjdC53aWR0aCA9IGluZm8uc21h bGxfbXVzdF9oYXZlX3NlcGFyYXRvcl93aWR0aCArIGRlbHRhKih3aWR0aCAtIHRvdGFsX3NtYWxs X3dpZHRoKS90b3RhbF9kZWx0YQorKysgICAgICAgICAgICAgICAgICAgIGluZm8ucmVjdC53aWR0 aCA9IGluZm8uc21hbGxfbXVzdF9oYXZlX3NlcGFyYXRvcl93aWR0aCArIGRlbHRhKih3aWR0aCAt IHRvdGFsX3NtYWxsX3dpZHRoKS8vdG90YWxfZGVsdGEKKysgICAgICAgICAgICAgICAgICAgICBp bmZvLnJlY3QuaGVpZ2h0ID0gc2VsZi5fdGFiX2hlaWdodAorKyAKKysgICAgICAgICAgICAgICAg ICAgICB4ICs9IGluZm8ucmVjdC53aWR0aCArIHRhYnNlcAorK0BAIC03OTcsNyArNzk3LDcgQEAg ZGVmIFJlY2FsY3VsYXRlVGFiU2l6ZXMoc2VsZik6CisrICAgICAgICAgICAgICAgICAgICAgICAg IGRlbHRhID0gc21hbGxlc3RfdGFiX3dpZHRoIC0gaW5mby5taW5pbXVtX3dpZHRoCisrICAgICAg ICAgICAgICAgICAgICAgICAgIGluZm8ucmVjdC54ID0geAorKyAgICAgICAgICAgICAgICAgICAg ICAgICBpbmZvLnJlY3QueSA9IHkKKystICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5yZWN0 LndpZHRoID0gaW5mby5taW5pbXVtX3dpZHRoICsgZGVsdGEqKHdpZHRoIC0gdG90YWxfc21hbGxf d2lkdGgpL3RvdGFsX2RlbHRhCisrKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm8ucmVjdC53 aWR0aCA9IGluZm8ubWluaW11bV93aWR0aCArIGRlbHRhKih3aWR0aCAtIHRvdGFsX3NtYWxsX3dp ZHRoKS8vdG90YWxfZGVsdGEKKysgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5yZWN0Lmhl aWdodCA9IHNlbGYuX3RhYl9oZWlnaHQKKysgCisrICAgICAgICAgICAgICAgICAgICAgICAgIHgg Kz0gaW5mby5yZWN0LndpZHRoICsgdGFic2VwCisrZGlmZiAtLWdpdCBhL3d4L2xpYi9hZ3cvcmli Ym9uL2J1dHRvbmJhci5weSBiL3d4L2xpYi9hZ3cvcmliYm9uL2J1dHRvbmJhci5weQorK2luZGV4 IDI1ZWU0OWE4Mi4uNDY5MGY0ODNkIDEwMDY0NAorKy0tLSBhL3d4L2xpYi9hZ3cvcmliYm9uL2J1 dHRvbmJhci5weQorKysrKyBiL3d4L2xpYi9hZ3cvcmliYm9uL2J1dHRvbmJhci5weQorK0BAIC0z NTQsNyArMzU0LDcgQEAgZGVmIEluc2VydEJ1dHRvbihzZWxmLCBwb3MsIGJ1dHRvbl9pZCwgbGFi ZWwsIGJpdG1hcCwgYml0bWFwX3NtYWxsPXd4Lk51bGxCaXRtYXAKKysgICAgICAgICAgICAgICAg IHNlbGYuX2JpdG1hcF9zaXplX2xhcmdlID0gYml0bWFwLkdldFNpemUoKQorKyAgICAgICAgICAg ICAgICAgaWYgbm90IGJpdG1hcF9zbWFsbC5Jc09rKCk6CisrICAgICAgICAgICAgICAgICAgICAg dywgaCA9IHNlbGYuX2JpdG1hcF9zaXplX2xhcmdlCisrLSAgICAgICAgICAgICAgICAgICAgc2Vs Zi5fYml0bWFwX3NpemVfc21hbGwgPSB3eC5TaXplKDAuNSp3LCAwLjUqaCkKKysrICAgICAgICAg ICAgICAgICAgICBzZWxmLl9iaXRtYXBfc2l6ZV9zbWFsbCA9IHd4LlNpemUody8vMiwgaC8vMikK KysgCisrICAgICAgICAgICAgIGlmIGJpdG1hcF9zbWFsbC5Jc09rKCk6CisrIAorK0BAIC04Njcs OCArODY3LDggQEAgZGVmIE9uU2l6ZShzZWxmLCBldmVudCk6CisrIAorKyAgICAgICAgICAgICBs YXlvdXRfc2l6ZSA9IHNlbGYuX2xheW91dHNbbGF5b3V0X2ldLm92ZXJhbGxfc2l6ZQorKyAgICAg ICAgICAgICBpZiBsYXlvdXRfc2l6ZS54IDw9IG5ld19zaXplLnggYW5kIGxheW91dF9zaXplLnkg PD0gbmV3X3NpemUueToKKystICAgICAgICAgICAgICAgIHNlbGYuX2xheW91dF9vZmZzZXQueCA9 IChuZXdfc2l6ZS54IC0gbGF5b3V0X3NpemUueCkvMgorKy0gICAgICAgICAgICAgICAgc2VsZi5f bGF5b3V0X29mZnNldC55ID0gKG5ld19zaXplLnkgLSBsYXlvdXRfc2l6ZS55KS8yCisrKyAgICAg ICAgICAgICAgICBzZWxmLl9sYXlvdXRfb2Zmc2V0LnggPSAobmV3X3NpemUueCAtIGxheW91dF9z aXplLngpLy8yCisrKyAgICAgICAgICAgICAgICBzZWxmLl9sYXlvdXRfb2Zmc2V0LnkgPSAobmV3 X3NpemUueSAtIGxheW91dF9zaXplLnkpLy8yCisrICAgICAgICAgICAgICAgICBzZWxmLl9jdXJy ZW50X2xheW91dCA9IGxheW91dF9pCisrICAgICAgICAgICAgICAgICBicmVhaworKyAKKytkaWZm IC0tZ2l0IGEvd3gvbGliL2Fndy9yaWJib24vZ2FsbGVyeS5weSBiL3d4L2xpYi9hZ3cvcmliYm9u L2dhbGxlcnkucHkKKytpbmRleCBiODMwZmFiN2QuLmI4NjUyODg2NSAxMDA2NDQKKystLS0gYS93 eC9saWIvYWd3L3JpYmJvbi9nYWxsZXJ5LnB5CisrKysrIGIvd3gvbGliL2Fndy9yaWJib24vZ2Fs bGVyeS5weQorK0BAIC04MDUsOCArODA1LDggQEAgZGVmIERvR2V0TmV4dFNtYWxsZXJTaXplKHNl bGYsIGRpcmVjdGlvbiwgcmVsYXRpdmVfdG8pOgorKyAgICAgICAgIGlmIGNsaWVudC5HZXRXaWR0 aCgpIDwgMCBvciBjbGllbnQuR2V0SGVpZ2h0KCkgPCAwOgorKyAgICAgICAgICAgICByZXR1cm4g cmVsYXRpdmVfdG8KKysgCisrLSAgICAgICAgY2xpZW50LnggPSAoY2xpZW50LnggLyBzZWxmLl9i aXRtYXBfcGFkZGVkX3NpemUueCkgKiBzZWxmLl9iaXRtYXBfcGFkZGVkX3NpemUueAorKy0gICAg ICAgIGNsaWVudC55ID0gKGNsaWVudC55IC8gc2VsZi5fYml0bWFwX3BhZGRlZF9zaXplLnkpICog c2VsZi5fYml0bWFwX3BhZGRlZF9zaXplLnkKKysrICAgICAgICBjbGllbnQueCA9IChjbGllbnQu eCAvLyBzZWxmLl9iaXRtYXBfcGFkZGVkX3NpemUueCkgKiBzZWxmLl9iaXRtYXBfcGFkZGVkX3Np emUueAorKysgICAgICAgIGNsaWVudC55ID0gKGNsaWVudC55IC8vIHNlbGYuX2JpdG1hcF9wYWRk ZWRfc2l6ZS55KSAqIHNlbGYuX2JpdG1hcF9wYWRkZWRfc2l6ZS55CisrIAorKyAgICAgICAgIHNp emUgPSBzZWxmLl9hcnQuR2V0R2FsbGVyeVNpemUoZGMsIHNlbGYsIHd4LlNpemUoKmNsaWVudCkp CisrICAgICAgICAgbWluaW11bSA9IHNlbGYuR2V0TWluU2l6ZSgpCisrQEAgLTg0OSw4ICs4NDks OCBAQCBkZWYgRG9HZXROZXh0TGFyZ2VyU2l6ZShzZWxmLCBkaXJlY3Rpb24sIHJlbGF0aXZlX3Rv KToKKysgICAgICAgICBlbGlmIGRpcmVjdGlvbiA9PSB3eC5CT1RIOgorKyAgICAgICAgICAgICBj bGllbnQuSW5jQnkoc2VsZi5fYml0bWFwX3BhZGRlZF9zaXplKQorKyAKKystICAgICAgICBjbGll bnQueCA9IChjbGllbnQueCAvIHNlbGYuX2JpdG1hcF9wYWRkZWRfc2l6ZS54KSAqIHNlbGYuX2Jp dG1hcF9wYWRkZWRfc2l6ZS54CisrLSAgICAgICAgY2xpZW50LnkgPSAoY2xpZW50LnkgLyBzZWxm Ll9iaXRtYXBfcGFkZGVkX3NpemUueSkgKiBzZWxmLl9iaXRtYXBfcGFkZGVkX3NpemUueQorKysg ICAgICAgIGNsaWVudC54ID0gKGNsaWVudC54IC8vIHNlbGYuX2JpdG1hcF9wYWRkZWRfc2l6ZS54 KSAqIHNlbGYuX2JpdG1hcF9wYWRkZWRfc2l6ZS54CisrKyAgICAgICAgY2xpZW50LnkgPSAoY2xp ZW50LnkgLy8gc2VsZi5fYml0bWFwX3BhZGRlZF9zaXplLnkpICogc2VsZi5fYml0bWFwX3BhZGRl ZF9zaXplLnkKKysgCisrICAgICAgICAgc2l6ZSA9IHNlbGYuX2FydC5HZXRHYWxsZXJ5U2l6ZShk Yywgc2VsZiwgd3guU2l6ZSgqY2xpZW50KSkKKysgICAgICAgICBtaW5pbXVtID0gc2VsZi5HZXRN aW5TaXplKCkKKytkaWZmIC0tZ2l0IGEvd3gvbGliL2Fndy9yaWJib24vcGFuZWwucHkgYi93eC9s aWIvYWd3L3JpYmJvbi9wYW5lbC5weQorK2luZGV4IDc5ZmQ5YmM1OC4uOTAxYzc2NWI2IDEwMDY0 NAorKy0tLSBhL3d4L2xpYi9hZ3cvcmliYm9uL3BhbmVsLnB5CisrKysrIGIvd3gvbGliL2Fndy9y aWJib24vcGFuZWwucHkKKytAQCAtNTg0LDEyICs1ODQsMTIgQEAgZGVmIERvR2V0TmV4dFNtYWxs ZXJTaXplKHNlbGYsIGRpcmVjdGlvbiwgcmVsYXRpdmVfdG8pOgorKyAgICAgICAgIG1pbmltdW0g PSB3eC5TaXplKCpzZWxmLkdldE1pblNpemUoKSkKKysgCisrICAgICAgICAgaWYgZGlyZWN0aW9u ICYgd3guSE9SSVpPTlRBTDoKKystICAgICAgICAgICAgY3VycmVudC54ID0gKGN1cnJlbnQueCAq IDQpIC8gNQorKysgICAgICAgICAgICBjdXJyZW50LnggPSAoY3VycmVudC54ICogNCkgLy8gNQor KyAgICAgICAgICAgICBpZiBjdXJyZW50LnggPCBtaW5pbXVtLng6CisrICAgICAgICAgICAgICAg ICBjdXJyZW50LnggPSBtaW5pbXVtLngKKysgCisrICAgICAgICAgaWYgZGlyZWN0aW9uICYgd3gu VkVSVElDQUw6CisrLSAgICAgICAgICAgIGN1cnJlbnQueSA9IChjdXJyZW50LnkgKiA0KSAvIDUK KysrICAgICAgICAgICAgY3VycmVudC55ID0gKGN1cnJlbnQueSAqIDQpIC8vIDUKKysgICAgICAg ICAgICAgaWYgY3VycmVudC55IDwgbWluaW11bS55OgorKyAgICAgICAgICAgICAgICAgY3VycmVu dC55ID0gbWluaW11bS55CisrIAorK0BAIC02NjgsMTAgKzY2OCwxMCBAQCBkZWYgRG9HZXROZXh0 TGFyZ2VyU2l6ZShzZWxmLCBkaXJlY3Rpb24sIHJlbGF0aXZlX3RvKToKKysgICAgICAgICBjdXJy ZW50ID0gd3guU2l6ZSgqcmVsYXRpdmVfdG8pCisrIAorKyAgICAgICAgIGlmIGRpcmVjdGlvbiAm IHd4LkhPUklaT05UQUw6CisrLSAgICAgICAgICAgIGN1cnJlbnQueCA9IChjdXJyZW50LnggKiA1 ICsgMykgLyA0CisrKyAgICAgICAgICAgIGN1cnJlbnQueCA9IChjdXJyZW50LnggKiA1ICsgMykg Ly8gNAorKyAKKysgICAgICAgICBpZiBkaXJlY3Rpb24gJiB3eC5WRVJUSUNBTDoKKystICAgICAg ICAgICAgY3VycmVudC55ID0gKGN1cnJlbnQueSAqIDUgKyAzKSAvIDQKKysrICAgICAgICAgICAg Y3VycmVudC55ID0gKGN1cnJlbnQueSAqIDUgKyAzKSAvLyA0CisrIAorKyAgICAgICAgIHJldHVy biBjdXJyZW50CisrIAorK0BAIC0xMDc2LDI1ICsxMDc2LDI1IEBAIGRlZiBHZXRFeHBhbmRlZFBv c2l0aW9uKHNlbGYsIHBhbmVsLCBleHBhbmRlZF9zaXplLCBkaXJlY3Rpb24pOgorKyAgICAgICAg IHBvcyA9IHd4LlBvaW50KCkKKysgCisrICAgICAgICAgaWYgZGlyZWN0aW9uID09IHd4Lk5PUlRI OgorKy0gICAgICAgICAgICBwb3MueCA9IHBhbmVsLkdldFgoKSArIChwYW5lbC5HZXRXaWR0aCgp IC0gZXhwYW5kZWRfc2l6ZS5HZXRXaWR0aCgpKSAvIDIKKysrICAgICAgICAgICAgcG9zLnggPSBw YW5lbC5HZXRYKCkgKyAocGFuZWwuR2V0V2lkdGgoKSAtIGV4cGFuZGVkX3NpemUuR2V0V2lkdGgo KSkgLy8gMgorKyAgICAgICAgICAgICBwb3MueSA9IHBhbmVsLkdldFkoKSAtIGV4cGFuZGVkX3Np emUuR2V0SGVpZ2h0KCkKKysgICAgICAgICAgICAgcHJpbWFyeV94ID0gVHJ1ZQorKyAgICAgICAg ICAgICBzZWNvbmRhcnlfeSA9IDEKKysgCisrICAgICAgICAgZWxpZiBkaXJlY3Rpb24gPT0gd3gu RUFTVDoKKysgICAgICAgICAgICAgcG9zLnggPSBwYW5lbC5HZXRSaWdodCgpCisrLSAgICAgICAg ICAgIHBvcy55ID0gcGFuZWwuR2V0WSgpICsgKHBhbmVsLkdldEhlaWdodCgpIC0gZXhwYW5kZWRf c2l6ZS5HZXRIZWlnaHQoKSkgLyAyCisrKyAgICAgICAgICAgIHBvcy55ID0gcGFuZWwuR2V0WSgp ICsgKHBhbmVsLkdldEhlaWdodCgpIC0gZXhwYW5kZWRfc2l6ZS5HZXRIZWlnaHQoKSkgLy8gMgor KyAgICAgICAgICAgICBzZWNvbmRhcnlfeCA9IC0xCisrIAorKyAgICAgICAgIGVsaWYgZGlyZWN0 aW9uID09IHd4LlNPVVRIOgorKy0gICAgICAgICAgICBwb3MueCA9IHBhbmVsLkdldFgoKSArIChw YW5lbC5HZXRXaWR0aCgpIC0gZXhwYW5kZWRfc2l6ZS5HZXRXaWR0aCgpKSAvIDIKKysrICAgICAg ICAgICAgcG9zLnggPSBwYW5lbC5HZXRYKCkgKyAocGFuZWwuR2V0V2lkdGgoKSAtIGV4cGFuZGVk X3NpemUuR2V0V2lkdGgoKSkgLy8gMgorKyAgICAgICAgICAgICBwb3MueSA9IHBhbmVsLkdldEJv dHRvbSgpCisrICAgICAgICAgICAgIHByaW1hcnlfeCA9IFRydWUKKysgICAgICAgICAgICAgc2Vj b25kYXJ5X3kgPSAtMQorKyAKKysgICAgICAgICBlbHNlOgorKyAgICAgICAgICAgICBwb3MueCA9 IHBhbmVsLkdldFgoKSAtIGV4cGFuZGVkX3NpemUuR2V0V2lkdGgoKQorKy0gICAgICAgICAgICBw b3MueSA9IHBhbmVsLkdldFkoKSArIChwYW5lbC5HZXRIZWlnaHQoKSAtIGV4cGFuZGVkX3NpemUu R2V0SGVpZ2h0KCkpIC8gMgorKysgICAgICAgICAgICBwb3MueSA9IHBhbmVsLkdldFkoKSArIChw YW5lbC5HZXRIZWlnaHQoKSAtIGV4cGFuZGVkX3NpemUuR2V0SGVpZ2h0KCkpIC8vIDIKKysgICAg ICAgICAgICAgc2Vjb25kYXJ5X3ggPSAxCisrIAorKyAgICAgICAgIGV4cGFuZGVkID0gd3guUmVj dChwb3MsIGV4cGFuZGVkX3NpemUpCisrZGlmZiAtLWdpdCBhL3d4L2xpYi9hZ3cvcmliYm9uL3Rv b2xiYXIucHkgYi93eC9saWIvYWd3L3JpYmJvbi90b29sYmFyLnB5CisraW5kZXggMTc3MWM2NTA2 Li44YzZmOGI1MjIgMTAwNjQ0CisrLS0tIGEvd3gvbGliL2Fndy9yaWJib24vdG9vbGJhci5weQor KysrKyBiL3d4L2xpYi9hZ3cvcmliYm9uL3Rvb2xiYXIucHkKKytAQCAtMTE1OSw3ICsxMTU5LDcg QEAgZGVmIE9uU2l6ZShzZWxmLCBldmVudCk6CisrIAorKyAgICAgICAgICMgU2V0IGdyb3VwIHkg cG9zaXRpb25zCisrICAgICAgICAgZm9yIGdyb3VwIGluIHNlbGYuX2dyb3VwczoKKystICAgICAg ICAgICAgZ3JvdXAucG9zaXRpb24ueSA9IHJvd3lwb3NbZ3JvdXAucG9zaXRpb24ueV0KKysrICAg ICAgICAgICAgZ3JvdXAucG9zaXRpb24ueSA9IGludChyb3d5cG9zW2dyb3VwLnBvc2l0aW9uLnld KQorKyAKKysgCisrICAgICBkZWYgR2V0QmVzdFNpemVGb3JQYXJlbnRTaXplKHNlbGYsIHBhcmVu dFNpemUpOgorK2RpZmYgLS1naXQgYS93eC9saWIvYWd3L3NoYXBlZGJ1dHRvbi5weSBiL3d4L2xp Yi9hZ3cvc2hhcGVkYnV0dG9uLnB5CisraW5kZXggZjAxNWQ0ZTM5Li40OTUyMzM2NmEgMTAwNjQ0 CisrLS0tIGEvd3gvbGliL2Fndy9zaGFwZWRidXR0b24ucHkKKysrKysgYi93eC9saWIvYWd3L3No YXBlZGJ1dHRvbi5weQorK0BAIC01NjksOSArNTY5LDkgQEAgZGVmIERyYXdNYWluQnV0dG9uKHNl bGYsIGRjLCB3aWR0aCwgaGVpZ2h0KToKKysgICAgICAgICAgICAgICAgIHJlY3QyID0gdyptYWlu Ly9zZWNvbmRhcnkKKysgCisrICAgICAgICAgICAgIGlmIHNlbGYuX2lzdXA6CisrLSAgICAgICAg ICAgICAgICBpbWcgPSBzZWxmLl9tYWluYnV0dG9udXAuU2NhbGUocmVjdDIsIHJlY3QzKQorKysg ICAgICAgICAgICAgICAgaW1nID0gc2VsZi5fbWFpbmJ1dHRvbnVwLlNjYWxlKGludChyZWN0Miks IGludChyZWN0MykpCisrICAgICAgICAgICAgIGVsc2U6CisrLSAgICAgICAgICAgICAgICBpbWcg PSBzZWxmLl9tYWluYnV0dG9uZG93bi5TY2FsZShyZWN0MiwgcmVjdDMpCisrKyAgICAgICAgICAg ICAgICBpbWcgPSBzZWxmLl9tYWluYnV0dG9uZG93bi5TY2FsZShpbnQocmVjdDIpLCBpbnQocmVj dDMpKQorKyAKKysgICAgICAgICBibXAgPSBpbWcuQ29udmVydFRvQml0bWFwKCkKKysgCisrQEAg LTU5OSw3ICs1OTksNyBAQCBkZWYgRHJhd01haW5CdXR0b24oc2VsZiwgZGMsIHdpZHRoLCBoZWln aHQpOgorKyAgICAgICAgICAgICAgICAgICAgIHlwb3MgPSAwCisrIAorKyAgICAgICAgICMgRHJh dyBGaW5hbGx5IFRoZSBCaXRtYXAKKystICAgICAgICBkYy5EcmF3Qml0bWFwKGJtcCwgeHBvcywg eXBvcywgVHJ1ZSkKKysrICAgICAgICBkYy5EcmF3Qml0bWFwKGJtcCwgaW50KHhwb3MpLCBpbnQo eXBvcyksIFRydWUpCisrIAorKyAgICAgICAgICMgU3RvcmUgQml0bWFwIFBvc2l0aW9uIEFuZCBT aXplIFRvIERyYXcgQW4gRWxsaXB0aWNhbCBGb2N1cyBJbmRpY2F0b3IKKysgICAgICAgICBzZWxm Ll94cG9zID0geHBvcworK0BAIC02NDYsNyArNjQ2LDcgQEAgZGVmIERyYXdMYWJlbChzZWxmLCBk Yywgd2lkdGgsIGhlaWdodCwgZHc9MCwgZGg9MCk6CisrICAgICAgICAgICAgIHhwID0geGMgLSAo dHcvLzIpKiBjb3MoYW5nbGUpIC0gKHRoLy8yKSpzaW4oYW5nbGUpCisrICAgICAgICAgICAgIHlw ID0geWMgKyAodHcvLzIpKnNpbihhbmdsZSkgLSAodGgvLzIpKmNvcyhhbmdsZSkKKysgCisrLSAg ICAgICAgICAgIGRjLkRyYXdSb3RhdGVkVGV4dChsYWJlbCwgeHAgKyBkdywgeXAgKyBkaCAsIGFu Z2xlKjE4MC9waSkKKysrICAgICAgICAgICAgZGMuRHJhd1JvdGF0ZWRUZXh0KGxhYmVsLCBpbnQo eHAgKyBkdyksIGludCh5cCArIGRoKSwgYW5nbGUqMTgwL3BpKQorKyAKKysgCisrICAgICBkZWYg RHJhd0ZvY3VzSW5kaWNhdG9yKHNlbGYsIGRjLCB3aWR0aCwgaGVpZ2h0KToKKytAQCAtNjc2LDcg KzY3Niw3IEBAIGRlZiBEcmF3Rm9jdXNJbmRpY2F0b3Ioc2VsZiwgZGMsIHdpZHRoLCBoZWlnaHQp OgorKyAgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgICMgVGhpcyBJcyBBbiBFbGxpcHNlCisr ICAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgIl94cG9zIik6CisrLSAgICAgICAgICAgICAg ICBkYy5EcmF3RWxsaXBzZShzZWxmLl94cG9zICsgMiwgc2VsZi5feXBvcyArIDIsIHNlbGYuX2lt Z3ggLSA0LCBzZWxmLl9pbWd5IC0gNCkKKysrICAgICAgICAgICAgICAgIGRjLkRyYXdFbGxpcHNl KGludChzZWxmLl94cG9zICsgMiksIGludChzZWxmLl95cG9zICsgMiksIHNlbGYuX2ltZ3ggLSA0 LCBzZWxmLl9pbWd5IC0gNCkKKysgCisrICAgICAgICAgZGMuU2V0TG9naWNhbEZ1bmN0aW9uKHd4 LkNPUFkpCisrIAorK2RpZmYgLS1naXQgYS93eC9saWIvYWd3L3NwZWVkbWV0ZXIucHkgYi93eC9s aWIvYWd3L3NwZWVkbWV0ZXIucHkKKytpbmRleCBmMTk2YjUxZjIuLjYwNjkwMWQyNyAxMDA2NDQK KystLS0gYS93eC9saWIvYWd3L3NwZWVkbWV0ZXIucHkKKysrKysgYi93eC9saWIvYWd3L3NwZWVk bWV0ZXIucHkKKytAQCAtNTgwLDggKzU4MCw4IEBAIGRlZiBEcmF3KHNlbGYsIGRjKToKKysgICAg ICAgICBkYy5TZXRCYWNrZ3JvdW5kKHd4LkJydXNoKHNwZWVkYmFja2dyb3VuZCkpCisrICAgICAg ICAgZGMuQ2xlYXIoKQorKyAKKystICAgICAgICBjZW50ZXJYID0gc2VsZi5mYWNlQml0bWFwLkdl dFdpZHRoKCkvMgorKy0gICAgICAgIGNlbnRlclkgPSBzZWxmLmZhY2VCaXRtYXAuR2V0SGVpZ2h0 KCkvMgorKysgICAgICAgIGNlbnRlclggPSBzZWxmLmZhY2VCaXRtYXAuR2V0V2lkdGgoKS8vMgor KysgICAgICAgIGNlbnRlclkgPSBzZWxmLmZhY2VCaXRtYXAuR2V0SGVpZ2h0KCkvLzIKKysgCisr ICAgICAgICAgc2VsZi5DZW50ZXJYID0gY2VudGVyWAorKyAgICAgICAgIHNlbGYuQ2VudGVyWSA9 IGNlbnRlclkKKytAQCAtNjgxLDcgKzY4MSw3IEBAIGRlZiBEcmF3KHNlbGYsIGRjKToKKysgICAg ICAgICAgICAgIyBEcmF3IFRoZSBGaWxsZXIgKEJvdGggSW4gIkFkdmFuY2UiIEFuZCAiUmV2ZXJz ZSIgRGlyZWN0aW9ucykKKysgCisrICAgICAgICAgICAgIGRjLlNldEJydXNoKHd4LkJydXNoKGZp bGxlcmNvbG91cikpCisrLSAgICAgICAgICAgIGRjLkRyYXdBcmMoeHMyLCB5czIsIHhlMiwgeWUy LCBjZW50ZXJYLCBjZW50ZXJZKQorKysgICAgICAgICAgICBkYy5EcmF3QXJjKHhzMiwgeXMyLCB4 ZTIsIHllMiwgaW50KGNlbnRlclgpLCBpbnQoY2VudGVyWSkpCisrIAorKyAgICAgICAgICAgICBp ZiBzZWxmLl9hZ3dTdHlsZSAmIFNNX0RSQVdfU0VDVE9SUyA9PSAwOgorKyAgICAgICAgICAgICAg ICAgZGMuU2V0QnJ1c2god3guQnJ1c2goc3BlZWRiYWNrZ3JvdW5kKSkKKytAQCAtOTUyLDcgKzk1 Miw3IEBAIGRlZiBEcmF3KHNlbGYsIGRjKToKKysgICAgICAgICAgICAgICAgICAgICB5ID0geSAt IGhlaWdodC8yLjAgLSBoZWlnaHQqc2luKGFuZ2lzKS8yLjAKKysgICAgICAgICAgICAgICAgICAg ICBmYW5jeXRleHQuUmVuZGVyVG9EQyhmYW5jeXN0ciwgZGMsIHgsIHkpCisrICAgICAgICAgICAg ICAgICBlbHNlOgorKy0gICAgICAgICAgICAgICAgICAgIGRjLkRyYXdUZXh0KHN0cmluZ3MsIHgs IHkpCisrKyAgICAgICAgICAgICAgICAgICAgZGMuRHJhd1RleHQoc3RyaW5ncywgaW50KHgpLCBp bnQoeSkpCisrIAorKyAgICAgICAgICAgICAjIFRoaXMgSXMgVGhlIFNtYWxsIFJlY3RhbmdsZSAt LT4gVGljayBNYXJrCisrICAgICAgICAgICAgIHJlY3RhbmdsZSA9IGNvbG91cmFuZ2xlc1tpaV0g KyBwaS8yLjAKKytAQCAtOTY5LDYgKzk2OSw3IEBAIGRlZiBEcmF3KHNlbGYsIGRjKToKKysgICAg ICAgICAgICAgeTQgPSB5MyArIDMqc2VsZi5zY2FsZSpzaW5yZWN0CisrIAorKyAgICAgICAgICAg ICBwb2ludHMgPSBbKHgxLCB5MSksICh4MiwgeTIpLCAoeDQsIHk0KSwgKHgzLCB5MyldCisrKyAg ICAgICAgICAgIHBvaW50cyA9IFsoaW50KHBbMF0pLCBpbnQocFsxXSkpIGZvciBwIGluIHBvaW50 c10KKysgCisrICAgICAgICAgICAgIGRjLkRyYXdQb2x5Z29uKHBvaW50cykKKysgCisrQEAgLTEw MDMsNiArMTAwNCw3IEBAIGRlZiBEcmF3KHNlbGYsIGRjKToKKysgICAgICAgICAgICAgICAgICAg ICAgICAgeTQgPSB5MyArIHNlbGYuc2NhbGUqc2lucmVjdAorKyAKKysgICAgICAgICAgICAgICAg ICAgICAgICAgcG9pbnRzID0gWyh4MSwgeTEpLCAoeDIsIHkyKSwgKHg0LCB5NCksICh4MywgeTMp XQorKysgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBbKGludChwWzBdKSwgaW50KHBb MV0pKSBmb3IgcCBpbiBwb2ludHNdCisrIAorKyAgICAgICAgICAgICAgICAgICAgICAgICBkYy5E cmF3UG9seWdvbihwb2ludHMpCisrIAorK0BAIC0xMDE3LDcgKzEwMTksNyBAQCBkZWYgRHJhdyhz ZWxmLCBkYyk6CisrICAgICAgICAgZGMuU2V0QnJ1c2god3guVFJBTlNQQVJFTlRfQlJVU0gpCisr IAorKyAgICAgICAgIGlmIHNlbGYuX2RyYXdhcmM6CisrLSAgICAgICAgICAgIGRjLlNldFBlbih3 eC5QZW4oc2VsZi5HZXRBcmNDb2xvdXIoKSwgMi4wKSkKKysrICAgICAgICAgICAgZGMuU2V0UGVu KHd4LlBlbihzZWxmLkdldEFyY0NvbG91cigpLCAyKSkKKysgICAgICAgICAgICAgIyBJZiBJdCdz IE5vdCBBIENvbXBsZXRlIENpcmNsZSwgRHJhdyBUaGUgQ29ubmVjdGluZyBMaW5lcyBBbmQgVGhl IEFyYworKyAgICAgICAgICAgICBpZiBhYnMoYWJzKHN0YXJ0YW5nbGUgLSBlbmRhbmdsZSkgLSAy KnBpKSA+IDEuMC8xODAuMDoKKysgICAgICAgICAgICAgICAgIGRjLkRyYXdBcmMoeHN0YXJ0LCB5 c3RhcnQsIHhlbmQsIHllbmQsIGNlbnRlclgsIGNlbnRlclkpCisrQEAgLTEwNDYsNyArMTA0OCw3 IEBAIGRlZiBEcmF3KHNlbGYsIGRjKToKKysgICAgICAgICAgICAgbmV3eCA9IGNlbnRlclggKyAx LjUqbXcqY29zKG1pZGRsZWFuZ2xlKSAtIG13LzIuMAorKyAgICAgICAgICAgICBuZXd5ID0gY2Vu dGVyWSAtIDEuNSptaCpzaW4obWlkZGxlYW5nbGUpIC0gbWgvMi4wCisrICAgICAgICAgICAgIGRj LlNldFRleHRGb3JlZ3JvdW5kKG1pZGRsZWNvbG91cikKKystICAgICAgICAgICAgZGMuRHJhd1Rl eHQobWlkZGxldGV4dCwgbmV3eCwgbmV3eSkKKysrICAgICAgICAgICAgZGMuRHJhd1RleHQobWlk ZGxldGV4dCwgaW50KG5ld3gpLCBpbnQobmV3eSkpCisrIAorKyAgICAgICAgICMgSGVyZSBXZSBE cmF3IFRoZSBJY29uIEluIFRoZSBNaWRkbGUsIE5lYXIgVGhlIFN0YXJ0IE9mIFRoZSBBcnJvdyAo SWYgUHJlc2VudCkKKysgICAgICAgICAjIFRoaXMgSXMgTGlrZSBUaGUgIkZ1ZWwiIEljb24gSW4g VGhlIENhcnMKKytAQCAtMTA1NCw4ICsxMDU2LDggQEAgZGVmIERyYXcoc2VsZiwgZGMpOgorKyAK KysgICAgICAgICAgICAgbWlkZGxlaWNvbiA9IHNlbGYuR2V0TWlkZGxlSWNvbigpCisrICAgICAg ICAgICAgIG1pZGRsZXdpZHRoLCBtaWRkbGVoZWlnaHQgPSBzZWxmLkdldE1pZGRsZUljb25EaW1l bnMoKQorKy0gICAgICAgICAgICBtaWRkbGVpY29uLlNldFdpZHRoKG1pZGRsZXdpZHRoKnNlbGYu c2NhbGUpCisrLSAgICAgICAgICAgIG1pZGRsZWljb24uU2V0SGVpZ2h0KG1pZGRsZWhlaWdodCpz ZWxmLnNjYWxlKQorKysgICAgICAgICAgICBtaWRkbGVpY29uLlNldFdpZHRoKGludChtaWRkbGV3 aWR0aCpzZWxmLnNjYWxlKSkKKysrICAgICAgICAgICAgbWlkZGxlaWNvbi5TZXRIZWlnaHQoaW50 KG1pZGRsZWhlaWdodCpzZWxmLnNjYWxlKSkKKysgICAgICAgICAgICAgbWlkZGxlYW5nbGUgPSAo c3RhcnRhbmdsZSArIGVuZGFuZ2xlKS8yLjAKKysgCisrICAgICAgICAgICAgIG13ID0gbWlkZGxl aWNvbi5HZXRXaWR0aCgpCisrQEAgLTEwNjQsNyArMTA2Niw3IEBAIGRlZiBEcmF3KHNlbGYsIGRj KToKKysgICAgICAgICAgICAgbmV3eCA9IGNlbnRlclggKyAxLjUqbXcqY29zKG1pZGRsZWFuZ2xl KSAtIG13LzIuMAorKyAgICAgICAgICAgICBuZXd5ID0gY2VudGVyWSAtIDEuNSptaCpzaW4obWlk ZGxlYW5nbGUpIC0gbWgvMi4wCisrIAorKy0gICAgICAgICAgICBkYy5EcmF3SWNvbihtaWRkbGVp Y29uLCBuZXd4LCBuZXd5KQorKysgICAgICAgICAgICBkYy5EcmF3SWNvbihtaWRkbGVpY29uLCBp bnQobmV3eCksIGludChuZXd5KSkKKysgCisrICAgICAgICAgICAgICMgUmVzdG9yZSBJY29uIERp bWVuc2lvbiwgSWYgTm90IFNvbWV0aGluZyBTdHJhbmdlIEhhcHBlbnMKKysgICAgICAgICAgICAg bWlkZGxlaWNvbi5TZXRXaWR0aChtaWRkbGV3aWR0aCkKKytAQCAtMTEwOSw1MyArMTExMSw2MSBA QCBkZWYgRHJhdyhzZWxmLCBkYyk6CisrICAgICAgICAgICAgICAgICBpZiBoYW5kc3R5bGUgPT0g IkFycm93IjoKKysgICAgICAgICAgICAgICAgICAgICAjIERyYXcgVGhlIFNoYWRvdworKyAgICAg ICAgICAgICAgICAgICAgIHNoYWRvd2NvbG91ciA9IHNlbGYuR2V0U2hhZG93Q29sb3VyKCkKKyst ICAgICAgICAgICAgICAgICAgICBkYy5TZXRQZW4od3guUGVuKHNoYWRvd2NvbG91ciwgNSpsb2co c2VsZi5zY2FsZSsxKSkpCisrKyAgICAgICAgICAgICAgICAgICAgZGMuU2V0UGVuKHd4LlBlbihz aGFkb3djb2xvdXIsIGludCg1KmxvZyhzZWxmLnNjYWxlKzEpKSkpCisrICAgICAgICAgICAgICAg ICAgICAgZGMuU2V0QnJ1c2god3guQnJ1c2goc2hhZG93Y29sb3VyKSkKKysgICAgICAgICAgICAg ICAgICAgICBzaGFkb3dkaXN0YW5jZSA9IDIuMCpzZWxmLnNjYWxlCisrLSAgICAgICAgICAgICAg ICAgICAgZGMuRHJhd0xpbmUobmV3eCArIHNoYWRvd2Rpc3RhbmNlLCBuZXd5ICsgc2hhZG93ZGlz dGFuY2UsCisrLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGFyciArIHNoYWRvd2Rp c3RhbmNlLCB5YXJyICsgc2hhZG93ZGlzdGFuY2UpCisrLQorKy0gICAgICAgICAgICAgICAgICAg IGRjLkRyYXdQb2x5Z29uKFsoeDErc2hhZG93ZGlzdGFuY2UsIHkxK3NoYWRvd2Rpc3RhbmNlKSwK KystICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHgyK3NoYWRvd2Rpc3RhbmNl LCB5MitzaGFkb3dkaXN0YW5jZSksCisrLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh4MytzaGFkb3dkaXN0YW5jZSwgeTMrc2hhZG93ZGlzdGFuY2UpXSkKKysrICAgICAgICAg ICAgICAgICAgICBkYy5EcmF3TGluZShpbnQobmV3eCArIHNoYWRvd2Rpc3RhbmNlKSwgaW50KG5l d3kgKyBzaGFkb3dkaXN0YW5jZSksCisrKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50KHhhcnIgKyBzaGFkb3dkaXN0YW5jZSksIGludCh5YXJyICsgc2hhZG93ZGlzdGFuY2UpKQor KysKKysrICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBbKHgxK3NoYWRvd2Rpc3RhbmNlLCB5 MStzaGFkb3dkaXN0YW5jZSksCisrKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4Mitz aGFkb3dkaXN0YW5jZSwgeTIrc2hhZG93ZGlzdGFuY2UpLAorKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoeDMrc2hhZG93ZGlzdGFuY2UsIHkzK3NoYWRvd2Rpc3RhbmNlKV0KKysrICAg ICAgICAgICAgICAgICAgICBwb2ludHMgPSBbKGludChwWzBdKSwgaW50KHBbMV0pKSBmb3IgcCBp biBwb2ludHNdCisrKyAgICAgICAgICAgICAgICAgICAgZGMuRHJhd1BvbHlnb24ocG9pbnRzKQor KyAgICAgICAgICAgICAgICAgZWxzZToKKysgICAgICAgICAgICAgICAgICAgICAjIERyYXcgVGhl IFNoYWRvdworKyAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2NvbG91ciA9IHNlbGYuR2V0U2hh ZG93Q29sb3VyKCkKKysgICAgICAgICAgICAgICAgICAgICBkYy5TZXRCcnVzaCh3eC5CcnVzaChz aGFkb3djb2xvdXIpKQorKy0gICAgICAgICAgICAgICAgICAgIGRjLlNldFBlbih3eC5QZW4oc2hh ZG93Y29sb3VyLCAxLjApKQorKysgICAgICAgICAgICAgICAgICAgIGRjLlNldFBlbih3eC5QZW4o c2hhZG93Y29sb3VyLCAxKSkKKysgICAgICAgICAgICAgICAgICAgICBzaGFkb3dkaXN0YW5jZSA9 IDEuNSpzZWxmLnNjYWxlCisrIAorKy0gICAgICAgICAgICAgICAgICAgIGRjLkRyYXdQb2x5Z29u KFsoeDErc2hhZG93ZGlzdGFuY2UsIHkxK3NoYWRvd2Rpc3RhbmNlKSwKKystICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHgyK3NoYWRvd2Rpc3RhbmNlLCB5MitzaGFkb3dkaXN0 YW5jZSksCisrLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4MytzaGFkb3dk aXN0YW5jZSwgeTMrc2hhZG93ZGlzdGFuY2UpLAorKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoeDQrc2hhZG93ZGlzdGFuY2UsIHk0K3NoYWRvd2Rpc3RhbmNlKV0pCisrKyAg ICAgICAgICAgICAgICAgICAgcG9pbnRzID0gWyh4MStzaGFkb3dkaXN0YW5jZSwgeTErc2hhZG93 ZGlzdGFuY2UpLAorKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeDIrc2hhZG93ZGlz dGFuY2UsIHkyK3NoYWRvd2Rpc3RhbmNlKSwKKysrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHgzK3NoYWRvd2Rpc3RhbmNlLCB5MytzaGFkb3dkaXN0YW5jZSksCisrKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICh4NCtzaGFkb3dkaXN0YW5jZSwgeTQrc2hhZG93ZGlzdGFuY2Up XQorKysgICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IFsoaW50KHBbMF0pLCBpbnQocFsxXSkp IGZvciBwIGluIHBvaW50c10KKysrICAgICAgICAgICAgICAgICAgICBkYy5EcmF3UG9seWdvbihw b2ludHMpCisrIAorKyAgICAgICAgICAgICBpZiBoYW5kc3R5bGUgPT0gIkFycm93IjoKKysgCisr LSAgICAgICAgICAgICAgICBkYy5TZXRQZW4od3guUGVuKGhhbmRjb2xvdXIsIDEuNSkpCisrKyAg ICAgICAgICAgICAgICBkYy5TZXRQZW4od3guUGVuKGhhbmRjb2xvdXIsIDEpKQorKyAKKysgICAg ICAgICAgICAgICAgICMgRHJhdyBUaGUgU21hbGwgQ2lyY2xlIEluIFRoZSBDZW50ZXIgLS0+IFRo ZSBIYW5kICJIb2xkZXIiCisrICAgICAgICAgICAgICAgICBkYy5TZXRCcnVzaCh3eC5CcnVzaChz cGVlZGJhY2tncm91bmQpKQorKy0gICAgICAgICAgICAgICAgZGMuRHJhd0NpcmNsZShjZW50ZXJY LCBjZW50ZXJZLCA0KnNlbGYuc2NhbGUpCisrKyAgICAgICAgICAgICAgICBkYy5EcmF3Q2lyY2xl KGNlbnRlclgsIGNlbnRlclksIGludCg0KnNlbGYuc2NhbGUpKQorKyAKKystICAgICAgICAgICAg ICAgIGRjLlNldFBlbih3eC5QZW4oaGFuZGNvbG91ciwgNSpsb2coc2VsZi5zY2FsZSsxKSkpCisr KyAgICAgICAgICAgICAgICBkYy5TZXRQZW4od3guUGVuKGhhbmRjb2xvdXIsIGludCg1KmxvZyhz ZWxmLnNjYWxlKzEpKSkpCisrICAgICAgICAgICAgICAgICAjIERyYXcgVGhlICJIYW5kIiwgQW4g QXJyb3cKKystICAgICAgICAgICAgICAgIGRjLkRyYXdMaW5lKG5ld3gsIG5ld3ksIHhhcnIsIHlh cnIpCisrKyAgICAgICAgICAgICAgICBkYy5EcmF3TGluZShpbnQobmV3eCksIGludChuZXd5KSwg aW50KHhhcnIpLCBpbnQoeWFycikpCisrIAorKyAgICAgICAgICAgICAgICAgIyBEcmF3IFRoZSBB cnJvdyBQb2ludGVyCisrICAgICAgICAgICAgICAgICBkYy5TZXRCcnVzaCh3eC5CcnVzaChoYW5k Y29sb3VyKSkKKystICAgICAgICAgICAgICAgIGRjLkRyYXdQb2x5Z29uKFsoeDEsIHkxKSwgKHgy LCB5MiksICh4MywgeTMpXSkKKysrICAgICAgICAgICAgICAgIHBvaW50cyA9IFsoeDEsIHkxKSwg KHgyLCB5MiksICh4MywgeTMpXQorKysgICAgICAgICAgICAgICAgcG9pbnRzID0gWyhpbnQocFsw XSksIGludChwWzFdKSkgZm9yIHAgaW4gcG9pbnRzXQorKysgICAgICAgICAgICAgICAgZGMuRHJh d1BvbHlnb24ocG9pbnRzKQorKyAKKysgICAgICAgICAgICAgZWxzZToKKysgCisrICAgICAgICAg ICAgICAgICAjIERyYXcgVGhlIEhhbmQgUG9pbnRlcgorKy0gICAgICAgICAgICAgICAgZGMuU2V0 UGVuKHd4LlBlbihoYW5kY29sb3VyLCAxLjUpKQorKysgICAgICAgICAgICAgICAgZGMuU2V0UGVu KHd4LlBlbihoYW5kY29sb3VyLCAxKSkKKysgICAgICAgICAgICAgICAgIGRjLlNldEJydXNoKHd4 LkJydXNoKGhhbmRjb2xvdXIpKQorKy0gICAgICAgICAgICAgICAgZGMuRHJhd1BvbHlnb24oWyh4 MSwgeTEpLCAoeDIsIHkyKSwgKHgzLCB5MyksICh4NCwgeTQpXSkKKysrICAgICAgICAgICAgICAg IHBvaW50cyA9IFsoeDEsIHkxKSwgKHgyLCB5MiksICh4MywgeTMpLCAoeDQsIHk0KV0KKysrICAg ICAgICAgICAgICAgIHBvaW50cyA9IFsoaW50KHBbMF0pLCBpbnQocFsxXSkpIGZvciBwIGluIHBv aW50c10KKysrICAgICAgICAgICAgICAgIGRjLkRyYXdQb2x5Z29uKHBvaW50cykKKysgCisrICAg ICAgICAgICAgICAgICAjIERyYXcgVGhlIFNtYWxsIENpcmNsZSBJbiBUaGUgQ2VudGVyIC0tPiBU aGUgSGFuZCAiSG9sZGVyIgorKyAgICAgICAgICAgICAgICAgZGMuU2V0QnJ1c2god3guQnJ1c2go c3BlZWRiYWNrZ3JvdW5kKSkKKystICAgICAgICAgICAgICAgIGRjLkRyYXdDaXJjbGUoY2VudGVy WCwgY2VudGVyWSwgNCpzZWxmLnNjYWxlKQorKysgICAgICAgICAgICAgICAgZGMuRHJhd0NpcmNs ZShjZW50ZXJYLCBjZW50ZXJZLCBpbnQoNCpzZWxmLnNjYWxlKSkKKysgCisrIAorKyAgICAgZGVm IFNldEludGVydmFscyhzZWxmLCBpbnRlcnZhbHM9Tm9uZSk6CisrQEAgLTE1MjcsNyArMTUzNyw3 IEBAIGRlZiBTZXRNaWRkbGVUZXh0Rm9udChzZWxmLCBmb250PU5vbmUpOgorKyAKKysgICAgICAg ICBpZiBmb250IGlzIE5vbmU6CisrICAgICAgICAgICAgIHNlbGYuX21pZGRsZXRleHRmb250ID0g d3guRm9udCgxLCB3eC5GT05URkFNSUxZX1NXSVNTLCB3eC5GT05UU1RZTEVfTk9STUFMLCB3eC5G T05UV0VJR0hUX0JPTEQsIEZhbHNlKQorKy0gICAgICAgICAgICBzZWxmLl9taWRkbGV0ZXh0c2l6 ZSA9IDEwLjAKKysrICAgICAgICAgICAgc2VsZi5fbWlkZGxldGV4dHNpemUgPSAxMAorKyAgICAg ICAgICAgICBzZWxmLl9taWRkbGV0ZXh0Zm9udC5TZXRQb2ludFNpemUoc2VsZi5fbWlkZGxldGV4 dHNpemUpCisrICAgICAgICAgZWxzZToKKysgICAgICAgICAgICAgc2VsZi5fbWlkZGxldGV4dGZv bnQgPSBmb250CisrQEAgLTE1OTksNyArMTYwOSw3IEBAIGRlZiBDaXJjbGVDb29yZHMoc2VsZiwg cmFkaXVzLCBhbmdsZSwgY2VudGVyWCwgY2VudGVyWSk6CisrICAgICAgICAgeCA9IHJhZGl1cypj b3MoYW5nbGUpICsgY2VudGVyWAorKyAgICAgICAgIHkgPSByYWRpdXMqc2luKGFuZ2xlKSArIGNl bnRlclkKKysgCisrLSAgICAgICAgcmV0dXJuIHgsIHkKKysrICAgICAgICByZXR1cm4gaW50KHgp LCBpbnQoeSkKKysgCisrIAorKyAgICAgZGVmIEdldEludGVyc2VjdGlvbihzZWxmLCBjdXJyZW50 LCBpbnRlcnZhbHMpOgorK2RpZmYgLS1naXQgYS93eC9saWIvYWd3L3N1cGVydG9vbHRpcC5weSBi L3d4L2xpYi9hZ3cvc3VwZXJ0b29sdGlwLnB5CisraW5kZXggYTkyY2UxMGQxLi5jZDBmMGM5Zjcg MTAwNjQ0CisrLS0tIGEvd3gvbGliL2Fndy9zdXBlcnRvb2x0aXAucHkKKysrKysgYi93eC9saWIv YWd3L3N1cGVydG9vbHRpcC5weQorK0BAIC0yOTUsOCArMjk1LDggQEAgZGVmIE9uUGFpbnQoc2Vs ZiwgZXZlbnQpOgorKyAKKysgICAgICAgICAjIEdldCB0aGUgdXNlciBvcHRpb25zIGZvciBoZWFk ZXIsIGJpdG1hcHMgZXRjLi4uCisrICAgICAgICAgZHJhd0hlYWRlciwgZHJhd0Zvb3RlciA9IGNs YXNzUGFyZW50LkdldERyYXdIZWFkZXJMaW5lKCksIGNsYXNzUGFyZW50LkdldERyYXdGb290ZXJM aW5lKCkKKystICAgICAgICB0b3BSZWN0ID0gd3guUmVjdChmcmFtZVJlY3QueCwgZnJhbWVSZWN0 LnksIGZyYW1lUmVjdC53aWR0aCwgZnJhbWVSZWN0LmhlaWdodC8yKQorKy0gICAgICAgIGJvdHRv bVJlY3QgPSB3eC5SZWN0KGZyYW1lUmVjdC54LCBmcmFtZVJlY3QueStmcmFtZVJlY3QuaGVpZ2h0 LzIsIGZyYW1lUmVjdC53aWR0aCwgZnJhbWVSZWN0LmhlaWdodC8yKzEpCisrKyAgICAgICAgdG9w UmVjdCA9IHd4LlJlY3QoZnJhbWVSZWN0LngsIGZyYW1lUmVjdC55LCBmcmFtZVJlY3Qud2lkdGgs IGZyYW1lUmVjdC5oZWlnaHQvLzIpCisrKyAgICAgICAgYm90dG9tUmVjdCA9IHd4LlJlY3QoZnJh bWVSZWN0LngsIGZyYW1lUmVjdC55K2ZyYW1lUmVjdC5oZWlnaHQvLzIsIGZyYW1lUmVjdC53aWR0 aCwgZnJhbWVSZWN0LmhlaWdodC8vMisxKQorKyAgICAgICAgICMgRmlsbCB0aGUgdHJpcGxlLWdy YWRpZW50CisrICAgICAgICAgZGMuR3JhZGllbnRGaWxsTGluZWFyKHRvcFJlY3QsIHRvcENvbG91 ciwgbWlkZGxlQ29sb3VyLCB3eC5TT1VUSCkKKysgICAgICAgICBkYy5HcmFkaWVudEZpbGxMaW5l YXIoYm90dG9tUmVjdCwgbWlkZGxlQ29sb3VyLCBib3R0b21Db2xvdXIsIHd4LlNPVVRIKQorK0BA IC0zMjQsOSArMzI0LDkgQEAgZGVmIE9uUGFpbnQoc2VsZiwgZXZlbnQpOgorKyAgICAgICAgIG5v cm1hbFRleHQgPSBjbGFzc1BhcmVudC5HZXRUZXh0Q29sb3VyKCkKKysgICAgICAgICBpZiBoZWFk ZXI6CisrICAgICAgICAgICAgIGRjLlNldFRleHRGb3JlZ3JvdW5kKG5vcm1hbFRleHQpCisrLSAg ICAgICAgICAgIGRjLkRyYXdUZXh0KGhlYWRlciwgYm1wWFBvcytibXBXaWR0aCtzZWxmLl9zcGFj aW5nLCAoaGVpZ2h0LXRleHRIZWlnaHQrc2VsZi5fc3BhY2luZykvMikKKysrICAgICAgICAgICAg ZGMuRHJhd1RleHQoaGVhZGVyLCBibXBYUG9zK2JtcFdpZHRoK3NlbGYuX3NwYWNpbmcsIChoZWln aHQtdGV4dEhlaWdodCtzZWxmLl9zcGFjaW5nKS8vMikKKysgICAgICAgICBpZiBoZWFkZXJCbXAg YW5kIGhlYWRlckJtcC5Jc09rKCk6CisrLSAgICAgICAgICAgIGRjLkRyYXdCaXRtYXAoaGVhZGVy Qm1wLCBibXBYUG9zLCAoaGVpZ2h0LWJtcEhlaWdodCtzZWxmLl9zcGFjaW5nKS8yLCBUcnVlKQor KysgICAgICAgICAgICBkYy5EcmF3Qml0bWFwKGhlYWRlckJtcCwgYm1wWFBvcywgKGhlaWdodC1i bXBIZWlnaHQrc2VsZi5fc3BhY2luZykvLzIsIFRydWUpCisrIAorKyAgICAgICAgIGlmIGhlYWRl ciBvciAoaGVhZGVyQm1wIGFuZCBoZWFkZXJCbXAuSXNPaygpKToKKysgICAgICAgICAgICAgeVBv cyArPSBoZWlnaHQKKytAQCAtMzc2LDcgKzM3Niw3IEBAIGRlZiBPblBhaW50KHNlbGYsIGV2ZW50 KToKKysgICAgICAgICAgICAgICAgIG1lc3NhZ2VIZWlnaHQgKz0gdGV4dEhlaWdodAorKyAKKysg ICAgICAgICAgICAgICAgIHhUZXh0ID0gKGJtcFdpZHRoICsgMiAqIHNlbGYuX3NwYWNpbmcpIGlm IGJtcFdpZHRoID4gMCBlbHNlIHNlbGYuX3NwYWNpbmcKKystICAgICAgICAgICAgICAgIHlUZXh0 ICs9IHRleHRIZWlnaHQvMitzZWxmLl9zcGFjaW5nCisrKyAgICAgICAgICAgICAgICB5VGV4dCAr PSB0ZXh0SGVpZ2h0Ly8yK3NlbGYuX3NwYWNpbmcKKysgICAgICAgICAgICAgICAgIG1heFdpZHRo ID0gbWF4KHhUZXh0ICsgdGV4dFdpZHRoICsgc2VsZi5fc3BhY2luZywgbWF4V2lkdGgpCisrICAg ICAgICAgICAgICAgICBkYy5EcmF3VGV4dChsaW5lLCB4VGV4dCwgeVRleHQpCisrICAgICAgICAg ICAgICAgICBpZiBpc0xpbms6CisrQEAgLTQxMiw4ICs0MTIsOCBAQCBkZWYgT25QYWludChzZWxm LCBldmVudCk6CisrICAgICAgICAgICAgIGlmIGRyYXdGb290ZXI6CisrICAgICAgICAgICAgICAg ICAjIERyYXcgdGhlIHNlcGFyYXRvciBsaW5lIGJlZm9yZSB0aGUgZm9vdGVyCisrICAgICAgICAg ICAgICAgICBkYy5TZXRQZW4od3guR1JFWV9QRU4pCisrLSAgICAgICAgICAgICAgICBkYy5EcmF3 TGluZShzZWxmLl9zcGFjaW5nLCB5UG9zLXNlbGYuX3NwYWNpbmcvMit0b0FkZCwKKystICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLXNlbGYuX3NwYWNpbmcsIHlQb3Mtc2VsZi5fc3Bh Y2luZy8yK3RvQWRkKQorKysgICAgICAgICAgICAgICAgZGMuRHJhd0xpbmUoc2VsZi5fc3BhY2lu ZywgeVBvcy1zZWxmLl9zcGFjaW5nLy8yK3RvQWRkLAorKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgd2lkdGgtc2VsZi5fc3BhY2luZywgeVBvcy1zZWxmLl9zcGFjaW5nLy8yK3RvQWRkKQor KyAgICAgICAgICMgRHJhdyB0aGUgZm9vdGVyIGFuZCBmb290ZXIgYml0bWFwIChpZiBhbnkpCisr ICAgICAgICAgZGMuU2V0VGV4dEZvcmVncm91bmQobm9ybWFsVGV4dCkKKysgICAgICAgICBoZWln aHQgPSBtYXgodGV4dEhlaWdodCwgYm1wSGVpZ2h0KQorK0BAIC00MjQsNyArNDI0LDcgQEAgZGVm IE9uUGFpbnQoc2VsZiwgZXZlbnQpOgorKyAgICAgICAgICAgICBtYXhXaWR0aCA9IG1heChibXBY UG9zICsgYm1wV2lkdGggKyAoc2VsZi5fc3BhY2luZyoyKSArIHRleHRXaWR0aCwgbWF4V2lkdGgp CisrICAgICAgICAgaWYgZm9vdGVyQm1wIGFuZCBmb290ZXJCbXAuSXNPaygpOgorKyAgICAgICAg ICAgICB0b0FkZCA9IChoZWlnaHQgLSBibXBIZWlnaHQgKyBzZWxmLl9zcGFjaW5nKSAvIDIKKyst ICAgICAgICAgICAgZGMuRHJhd0JpdG1hcChmb290ZXJCbXAsIGJtcFhQb3MsIHlQb3MgKyB0b0Fk ZCwgVHJ1ZSkKKysrICAgICAgICAgICAgZGMuRHJhd0JpdG1hcChmb290ZXJCbXAsIGJtcFhQb3Ms IGludCh5UG9zICsgdG9BZGQpLCBUcnVlKQorKyAgICAgICAgICAgICBtYXhXaWR0aCA9IG1heChm b290ZXJCbXAuR2V0U2l6ZSgpLkdldFdpZHRoKCkgKyBibXBYUG9zLCBtYXhXaWR0aCkKKysgCisr ICAgICAgICAgbWF4SGVpZ2h0ID0geVBvcyArIGhlaWdodCArIHRvQWRkCisrQEAgLTgxNSw3ICs4 MTUsNyBAQCBkZWYgU2V0U3RhcnREZWxheShzZWxmLCBkZWxheT0xKToKKysgICAgICAgICA6cGFy YW0gYGRlbGF5YDogdGhlIGRlbGF5IGluIHNlY29uZHMuCisrICAgICAgICAgIiIiCisrIAorKy0g ICAgICAgIHNlbGYuX3N0YXJ0RGVsYXlUaW1lID0gZmxvYXQoZGVsYXkpCisrKyAgICAgICAgc2Vs Zi5fc3RhcnREZWxheVRpbWUgPSBpbnQoZGVsYXkpCisrIAorKyAKKysgICAgIGRlZiBHZXRTdGFy dERlbGF5KHNlbGYpOgorK0BAIC04MzEsNyArODMxLDcgQEAgZGVmIFNldEVuZERlbGF5KHNlbGYs IGRlbGF5PTFlNik6CisrICAgICAgICAgOnBhcmFtIGBkZWxheWA6IHRoZSBkZWxheSBpbiBzZWNv bmRzLgorKyAgICAgICAgICIiIgorKyAKKystICAgICAgICBzZWxmLl9lbmREZWxheVRpbWUgPSBm bG9hdChkZWxheSkKKysrICAgICAgICBzZWxmLl9lbmREZWxheVRpbWUgPSBpbnQoZGVsYXkpCisr IAorKyAKKysgICAgIGRlZiBHZXRFbmREZWxheShzZWxmKToKKytkaWZmIC0tZ2l0IGEvd3gvbGli L2Fndy90b2FzdGVyYm94LnB5IGIvd3gvbGliL2Fndy90b2FzdGVyYm94LnB5CisraW5kZXggYjcz NDI5ZGQyLi44ZWZiNTg2OWIgMTAwNjQ0CisrLS0tIGEvd3gvbGliL2Fndy90b2FzdGVyYm94LnB5 CisrKysrIGIvd3gvbGliL2Fndy90b2FzdGVyYm94LnB5CisrQEAgLTEzMTYsMTEgKzEzMTYsMTEg QEAgZGVmIF9nZXRUZXh0Q29vcmRzKHNlbGYsIGRjKToKKysgICAgICAgICBmb3IgbGluZSBpbiBs aW5lczoKKysgICAgICAgICAgICAgdywgaCA9IGRjLkdldFRleHRFeHRlbnQobGluZSkKKysgICAg ICAgICAgICAgZmggKz0gaCArIHRleHRQYWRkaW5nCisrLSAgICAgICAgeSA9ICh0aCAtIGZoKSAv IDI7IGNvb3JkcyA9IFtdCisrKyAgICAgICAgeSA9ICh0aCAtIGZoKSAvLyAyOyBjb29yZHMgPSBb XQorKyAKKysgICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKKysgICAgICAgICAgICAgdywgaCA9 IGRjLkdldFRleHRFeHRlbnQobGluZSkKKystICAgICAgICAgICAgeCA9ICh0dyAtIHcpIC8gMgor KysgICAgICAgICAgICB4ID0gKHR3IC0gdykgLy8gMgorKyAgICAgICAgICAgICBjb29yZHMuYXBw ZW5kKCh4LCB5KSkKKysgICAgICAgICAgICAgeSArPSBoICsgdGV4dFBhZGRpbmcKKysgCisrZGlm ZiAtLWdpdCBhL3d4L2xpYi9hZ3cvdWx0aW1hdGVsaXN0Y3RybC5weSBiL3d4L2xpYi9hZ3cvdWx0 aW1hdGVsaXN0Y3RybC5weQorK2luZGV4IDE0ZmM0MWY4Ni4uY2FhNWU1Y2Y0IDEwMDY0NAorKy0t LSBhL3d4L2xpYi9hZ3cvdWx0aW1hdGVsaXN0Y3RybC5weQorKysrKyBiL3d4L2xpYi9hZ3cvdWx0 aW1hdGVsaXN0Y3RybC5weQorK0BAIC05MTQsNyArOTE0LDcgQEAgZGVmIERyYXcoc2VsZiwgaW5k ZXgsIGRjLCB4LCB5LCBmbGFncywgc29saWRCYWNrZ3JvdW5kPVRydWUpOgorKyAgICAgICAgICAg ICByYWlzZSBFeGNlcHRpb24oIldyb25nIGluZGV4IGluIGltYWdlIGxpc3QiKQorKyAKKysgICAg ICAgICBibXAgPSBzZWxmLl9pbWFnZXNbaW5kZXhdCisrLSAgICAgICAgZGMuRHJhd0JpdG1hcChi bXAsIHgsIHksIChmbGFncyAmIHd4LklNQUdFTElTVF9EUkFXX1RSQU5TUEFSRU5UKSA+IDApCisr KyAgICAgICAgZGMuRHJhd0JpdG1hcChibXAsIHgsIGludCh5KSwgKGZsYWdzICYgd3guSU1BR0VM SVNUX0RSQVdfVFJBTlNQQVJFTlQpID4gMCkKKysgCisrICAgICAgICAgcmV0dXJuIFRydWUKKysg CisrQEAgLTQwMjIsNyArNDAyMiw3IEBAIGRlZiBTZXRQb3NpdGlvbihzZWxmLCB4LCB5LCBzcGFj aW5nKToKKysgCisrICAgICAgICAgICAgIGlmIGl0ZW0uSGFzSW1hZ2UoKToKKysgCisrLSAgICAg ICAgICAgICAgICBzZWxmLl9naS5fcmVjdEljb24ueCA9IHNlbGYuX2dpLl9yZWN0QWxsLnggKyA0 ICsgKHNlbGYuX2dpLl9yZWN0QWxsLndpZHRoIC0gc2VsZi5fZ2kuX3JlY3RJY29uLndpZHRoKS8y CisrKyAgICAgICAgICAgICAgICBzZWxmLl9naS5fcmVjdEljb24ueCA9IHNlbGYuX2dpLl9yZWN0 QWxsLnggKyA0ICsgKHNlbGYuX2dpLl9yZWN0QWxsLndpZHRoIC0gc2VsZi5fZ2kuX3JlY3RJY29u LndpZHRoKS8vMgorKyAgICAgICAgICAgICAgICAgc2VsZi5fZ2kuX3JlY3RJY29uLnkgPSBzZWxm Ll9naS5fcmVjdEFsbC55ICsgNAorKyAKKysgICAgICAgICAgICAgaWYgaXRlbS5IYXNUZXh0KCk6 CisrQEAgLTQwMzAsNyArNDAzMCw3IEBAIGRlZiBTZXRQb3NpdGlvbihzZWxmLCB4LCB5LCBzcGFj aW5nKToKKysgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2dpLl9yZWN0TGFiZWwud2lkdGggPiBz cGFjaW5nOgorKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2dpLl9yZWN0TGFiZWwueCA9IHNl bGYuX2dpLl9yZWN0QWxsLnggKyAyCisrICAgICAgICAgICAgICAgICBlbHNlOgorKy0gICAgICAg ICAgICAgICAgICAgIHNlbGYuX2dpLl9yZWN0TGFiZWwueCA9IHNlbGYuX2dpLl9yZWN0QWxsLngg KyAyICsgKHNwYWNpbmcvMikgLSAoc2VsZi5fZ2kuX3JlY3RMYWJlbC53aWR0aC8yKQorKysgICAg ICAgICAgICAgICAgICAgIHNlbGYuX2dpLl9yZWN0TGFiZWwueCA9IHNlbGYuX2dpLl9yZWN0QWxs LnggKyAyICsgKHNwYWNpbmcvLzIpIC0gKHNlbGYuX2dpLl9yZWN0TGFiZWwud2lkdGgvLzIpCisr IAorKyAgICAgICAgICAgICAgICAgc2VsZi5fZ2kuX3JlY3RMYWJlbC55ID0gc2VsZi5fZ2kuX3Jl Y3RBbGwueSArIHNlbGYuX2dpLl9yZWN0QWxsLmhlaWdodCArIDIgLSBzZWxmLl9naS5fcmVjdExh YmVsLmhlaWdodAorKyAgICAgICAgICAgICAgICAgc2VsZi5fZ2kuX3JlY3RIaWdobGlnaHQueCA9 IHNlbGYuX2dpLl9yZWN0TGFiZWwueCAtIDIKKytAQCAtNDU0Niw3ICs0NTQ2LDcgQEAgZGVmIERy YXdJblJlcG9ydE1vZGUoc2VsZiwgZGMsIGxpbmUsIHJlY3QsIHJlY3RITCwgaGlnaGxpZ2h0ZWQs IGN1cnJlbnQsIGVuYWJsZWQKKysgICAgICAgICAgICAgICAgICMgV2UgZ290IGEgY2hlY2tib3gt dHlwZSBpdGVtCisrICAgICAgICAgICAgICAgICBpeCwgaXkgPSBzZWxmLl9vd25lci5HZXRDaGVj a2JveEltYWdlU2l6ZSgpCisrICAgICAgICAgICAgICAgICBjaGVja2VkID0gaXRlbS5Jc0NoZWNr ZWQoKQorKy0gICAgICAgICAgICAgICAgc2VsZi5fb3duZXIuRHJhd0NoZWNrYm94KGRjLCB4T2xk LCB5ICsgKGhlaWdodC1peSsxKS8yLCBpdGVtLkdldEtpbmQoKSwgY2hlY2tlZCwgZW5hYmxlZCkK KysrICAgICAgICAgICAgICAgIHNlbGYuX293bmVyLkRyYXdDaGVja2JveChkYywgeE9sZCwgeSAr IChoZWlnaHQtaXkrMSkvLzIsIGl0ZW0uR2V0S2luZCgpLCBjaGVja2VkLCBlbmFibGVkKQorKyAg ICAgICAgICAgICAgICAgeE9sZCArPSBpeAorKyAgICAgICAgICAgICAgICAgd2lkdGggLT0gaXgK KysgCisrQEAgLTQ1NTcsNyArNDU1Nyw3IEBAIGRlZiBEcmF3SW5SZXBvcnRNb2RlKHNlbGYsIGRj LCBsaW5lLCByZWN0LCByZWN0SEwsIGhpZ2hsaWdodGVkLCBjdXJyZW50LCBlbmFibGVkCisrICAg ICAgICAgICAgICAgICBmb3IgaW1nIGluIGltYWdlczoKKysgCisrICAgICAgICAgICAgICAgICAg ICAgaXgsIGl5ID0gc2VsZi5fb3duZXIuR2V0SW1hZ2VTaXplKFtpbWddKQorKy0gICAgICAgICAg ICAgICAgICAgIHNlbGYuX293bmVyLkRyYXdJbWFnZShpbWcsIGRjLCB4T2xkLCB5ICsgKGhlaWdo dC1peSkvMiwgZW5hYmxlZCkKKysrICAgICAgICAgICAgICAgICAgICBzZWxmLl9vd25lci5EcmF3 SW1hZ2UoaW1nLCBkYywgeE9sZCwgeSArIChoZWlnaHQtaXkpLy8yLCBlbmFibGVkKQorKyAKKysg ICAgICAgICAgICAgICAgICAgICB4T2xkICs9IGl4CisrICAgICAgICAgICAgICAgICAgICAgd2lk dGggLT0gaXgKKytAQCAtNTIzMCw3ICs1MjMwLDcgQEAgZGVmIE9uUGFpbnQoc2VsZiwgZXZlbnQp OgorKyAgICAgICAgICAgICAgICAgIyBXZSBnb3QgYSBjaGVja2JveC10eXBlIGl0ZW0KKysgICAg ICAgICAgICAgICAgIGl4LCBpeSA9IHNlbGYuX293bmVyLkdldENoZWNrYm94SW1hZ2VTaXplKCkK KysgICAgICAgICAgICAgICAgICMgV2UgZHJhdyBpdCBvbiB0aGUgbGVmdCwgYWx3YXlzCisrLSAg ICAgICAgICAgICAgICBzZWxmLl9vd25lci5EcmF3Q2hlY2tib3goZGMsIHggKyBIRUFERVJfT0ZG U0VUX1gsIEhFQURFUl9PRkZTRVRfWSArIChoIC0gNCAtIGl5KS8yLCBraW5kLCBjaGVja2VkLCBl bmFibGVkKQorKysgICAgICAgICAgICAgICAgc2VsZi5fb3duZXIuRHJhd0NoZWNrYm94KGRjLCB4 ICsgSEVBREVSX09GRlNFVF9YLCBIRUFERVJfT0ZGU0VUX1kgKyAoaCAtIDQgLSBpeSkvLzIsIGtp bmQsIGNoZWNrZWQsIGVuYWJsZWQpCisrICAgICAgICAgICAgICAgICB3Y2hlY2sgKz0gaXggKyBI RUFERVJfSU1BR0VfTUFSR0lOX0lOX1JFUE9SVF9NT0RFCisrICAgICAgICAgICAgICAgICBjdyAt PSBpeCArIEhFQURFUl9JTUFHRV9NQVJHSU5fSU5fUkVQT1JUX01PREUKKysgCisrQEAgLTY4MTks NyArNjgxOSw3IEBAIGRlZiBIaXRUZXN0TGluZShzZWxmLCBsaW5lLCB4LCB5KToKKysgICAgICAg ICAgICAgICAgICAgICAjIFdlIGdvdCBhIGNoZWNrYm94LXR5cGUgaXRlbQorKyAgICAgICAgICAg ICAgICAgICAgIGl4LCBpeSA9IHNlbGYuR2V0Q2hlY2tib3hJbWFnZVNpemUoKQorKyAgICAgICAg ICAgICAgICAgICAgIExIID0gc2VsZi5HZXRMaW5lSGVpZ2h0KGxpbmUpCisrLSAgICAgICAgICAg ICAgICAgICAgcmVjdCA9IHd4LlJlY3QoeE9sZCwgbGluZVkgKyBMSC8yIC0gaXkvMiwgaXgsIGl5 KQorKysgICAgICAgICAgICAgICAgICAgIHJlY3QgPSB3eC5SZWN0KHhPbGQsIGxpbmVZICsgTEgv LzIgLSBpeS8vMiwgaXgsIGl5KQorKyAgICAgICAgICAgICAgICAgICAgIGlmIHJlY3QuQ29udGFp bnMoKHgsIHkpKToKKysgICAgICAgICAgICAgICAgICAgICAgICAgbmV3SXRlbSA9IHNlbGYuR2V0 UGFyZW50KCkuR2V0SXRlbShsaW5lLCBjb2wpCisrICAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiBuZXdJdGVtLCBVTENfSElUVEVTVF9PTklURU1DSEVDSworK0BAIC03OTM3LDEzICs3OTM3 LDEzIEBAIGRlZiBNb3ZlVG9JdGVtKHNlbGYsIGl0ZW0pOgorKyAgICAgICAgICAgICAgICAgICAg IHdoaWxlIHN0YXJ0X3kgPiB2aWV3X3k6CisrICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0 X3kgLT0gU0NST0xMX1VOSVRfWQorKyAKKystICAgICAgICAgICAgICAgICAgICBzZWxmLlNjcm9s bCgtMSwgc3RhcnRfeS9TQ1JPTExfVU5JVF9ZKQorKysgICAgICAgICAgICAgICAgICAgIHNlbGYu U2Nyb2xsKC0xLCBzdGFydF95Ly9TQ1JPTExfVU5JVF9ZKQorKyAKKysgICAgICAgICAgICAgICAg IGlmIHN0YXJ0X3kgKyBoZWlnaHQgPiB2aWV3X3kgKyBjbGllbnRfaDoKKysgICAgICAgICAgICAg ICAgICAgICB3aGlsZSBzdGFydF95ICsgaGVpZ2h0IDwgdmlld195ICsgY2xpZW50X2g6CisrICAg ICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3kgKz0gU0NST0xMX1VOSVRfWQorKyAKKystICAg ICAgICAgICAgICAgICAgICBzZWxmLlNjcm9sbCgtMSwgKHN0YXJ0X3kraGVpZ2h0LWNsaWVudF9o K1NDUk9MTF9VTklUX1kpL1NDUk9MTF9VTklUX1kpCisrKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5TY3JvbGwoLTEsIChzdGFydF95K2hlaWdodC1jbGllbnRfaCtTQ1JPTExfVU5JVF9ZKS8vU0NS T0xMX1VOSVRfWSkKKysgCisrICAgICAgICAgZWxzZTogIyAhcmVwb3J0CisrIAorK0BAIC03OTYw LDcgKzc5NjAsNyBAQCBkZWYgTW92ZVRvSXRlbShzZWxmLCBpdGVtKToKKysgICAgICAgICAgICAg aWYgcmVjdC55ICsgcmVjdC5oZWlnaHQgLSA1ID4gdmlld195ICsgY2xpZW50X2g6CisrICAgICAg ICAgICAgICAgICBzeSA9IChyZWN0LnkgKyByZWN0LmhlaWdodCAtIGNsaWVudF9oICsgaExpbmUp L2hMaW5lCisrIAorKy0gICAgICAgICAgICBzZWxmLlNjcm9sbChzeCwgc3kpCisrKyAgICAgICAg ICAgIHNlbGYuU2Nyb2xsKGludChzeCksIGludChzeSkpCisrIAorKyAKKysgIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisrZGlmZiAtLWdpdCBhL3d4L2xpYi9hZ3cveGxzZ3JpZC5weSBiL3d4L2xpYi9h Z3cveGxzZ3JpZC5weQorK2luZGV4IGI1MDVhZWJiNC4uMTcyNjdmYWJjIDEwMDY0NAorKy0tLSBh L3d4L2xpYi9hZ3cveGxzZ3JpZC5weQorKysrKyBiL3d4L2xpYi9hZ3cveGxzZ3JpZC5weQorK0BA IC05NjUsNyArOTY1LDcgQEAgZGVmIERyYXcoc2VsZiwgZGMsIHJlY3QpOgorKyAgICAgICAgICAg ICB4cCA9IHhjIC0gKHRleHRfd2lkdGgvMikqeHNoaWZ0IC0gKHRleHRfaGVpZ2h0LzIpKnlzaGlm dAorKyAgICAgICAgICAgICB5cCA9IHljICsgKHRleHRfd2lkdGgvMikqeXNoaWZ0IC0gKHRleHRf aGVpZ2h0LzIpKnhzaGlmdAorKyAKKystICAgICAgICAgICAgZGMuRHJhd1JvdGF0ZWRUZXh0KHZh bHVlLCB4cCwgeXAsIHNlbGYucm90YXRpb24pCisrKyAgICAgICAgICAgIGRjLkRyYXdSb3RhdGVk VGV4dCh2YWx1ZSwgaW50KHhwKSwgaW50KHlwKSwgc2VsZi5yb3RhdGlvbikKKysgCisrICAgICAg ICAgZWxzZToKKysgCisrQEAgLTExMjUsNyArMTEyNSw3IEBAIGRlZiBEcmF3KHNlbGYsIGRjLCBy ZWN0KToKKysgICAgICAgICAgICAgaWYgZm9udC5lc2NhcGVtZW50ID09IDE6CisrICAgICAgICAg ICAgICAgICB5cG9zID0geXBvcyAtIG1heEggKyBoZWlnaHQKKysgCisrLSAgICAgICAgICAgIGRj LkRyYXdUZXh0KGNodW5rLCBzdGFydCwgeXBvcykKKysrICAgICAgICAgICAgZGMuRHJhd1RleHQo Y2h1bmssIHN0YXJ0LCBpbnQoeXBvcykpCisrICAgICAgICAgICAgIHN0YXJ0ICs9IHdpZHRoCisr IAorKyAKKytkaWZmIC0tZ2l0IGEvd3gvbGliL2Fndy96b29tYmFyLnB5IGIvd3gvbGliL2Fndy96 b29tYmFyLnB5CisraW5kZXggMWU2ZWM1ZGEzLi44YzJhZmQwNTggMTAwNjQ0CisrLS0tIGEvd3gv bGliL2Fndy96b29tYmFyLnB5CisrKysrIGIvd3gvbGliL2Fndy96b29tYmFyLnB5CisrQEAgLTQ2 Myw3ICs0NjMsNyBAQCBkZWYgU2V0U2l6ZShzZWxmLCB3aWR0aCwgaGVpZ2h0KToKKysgICAgIGRl ZiBHZXRQb3NpdGlvbihzZWxmKToKKysgICAgICAgICAiIiIgUmV0dXJucyB0aGUgYnV0dG9uIHBv c2l0aW9uLiAiIiIKKysgCisrLSAgICAgICAgcmV0dXJuIHd4LlBvaW50KHNlbGYuX2xlZnQsIHNl bGYuX3RvcCkKKysrICAgICAgICByZXR1cm4gd3guUG9pbnQoaW50KHNlbGYuX2xlZnQpLCBpbnQo c2VsZi5fdG9wKSkKKysgCisrIAorKyAgICAgZGVmIEdldFNpemUoc2VsZik6CisrQEAgLTYwMSw3 ICs2MDEsNyBAQCBkZWYgX19pbml0X18oc2VsZiwgYml0bWFwPU5vbmUpOgorKyAgICAgZGVmIEdl dFBvc2l0aW9uKHNlbGYpOgorKyAgICAgICAgICIiIiBSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiA6 Y2xhc3M6YHd4LkltYWdlQmFyYCwgYXMgYSA6Y2xhc3M6YHd4LlBvaW50YC4gIiIiCisrIAorKy0g ICAgICAgIHJldHVybiB3eC5Qb2ludChzZWxmLl9sZWZ0LCBzZWxmLl90b3ApCisrKyAgICAgICAg cmV0dXJuIHd4LlBvaW50KGludChzZWxmLl9sZWZ0KSwgaW50KHNlbGYuX3RvcCkpCisrIAorKyAK KysgICAgIGRlZiBHZXRTaXplKHNlbGYpOgorK0BAIC02NjAsNyArNjYwLDcgQEAgZGVmIFNldEJh ckNvbG91cihzZWxmLCBjb2xvdXIsIHhTaXplPU5vbmUsIHlTaXplPU5vbmUpOgorKyAgICAgICAg IGlmIHhTaXplIGlzIG5vdCBOb25lOgorKyAgICAgICAgICAgICBzZWxmLl9zaXplID0gd3guU2l6 ZSh4U2l6ZSwgeVNpemUpCisrIAorKy0gICAgICAgIGJpdG1hcC5SZXNjYWxlKHNlbGYuX3NpemUu d2lkdGgsIHNlbGYuX3NpemUuaGVpZ2h0LzIpCisrKyAgICAgICAgYml0bWFwLlJlc2NhbGUoc2Vs Zi5fc2l6ZS53aWR0aCwgc2VsZi5fc2l6ZS5oZWlnaHQvLzIpCisrIAorKyAgICAgICAgIHIxLCBn MSwgYjEgPSBzZWxmLl9zdGFydENvbG91ci5SZWQoKSwgc2VsZi5fc3RhcnRDb2xvdXIuR3JlZW4o KSwgc2VsZi5fc3RhcnRDb2xvdXIuQmx1ZSgpCisrICAgICAgICAgcjIsIGcyLCBiMiA9IGNvbG91 ci5SZWQoKSwgY29sb3VyLkdyZWVuKCksIGNvbG91ci5CbHVlKCkKKytAQCAtMTA2NSw3ICsxMDY1 LDcgQEAgZGVmIFJlc2V0U2l6ZShzZWxmKToKKysgICAgICAgICAgICAgeVNpemUgKz0geWV4dGVu dAorKyAKKysgICAgICAgICBpZiBzZWxmLl9zaG93UmVmbGVjdGlvbnM6CisrLSAgICAgICAgICAg IHlTaXplICs9IHNlbGYuX2J1dHRvblNpemUvMgorKysgICAgICAgICAgICB5U2l6ZSArPSBzZWxm Ll9idXR0b25TaXplLy8yCisrICAgICAgICAgaWYgc2VsZi5fY2VudGVyWm9vbToKKysgICAgICAg ICAgICAgeVNpemUgKz0gc2VsZi5fYnV0dG9uU2l6ZQorKyAKKytAQCAtMTI0MCw3ICsxMjQwLDcg QEAgZGVmIERyYXdMYWJlbHMoc2VsZiwgZGMpOgorKyAgICAgICAgICAgICB0ZXh0V2lkdGgsIHRl eHRIZWlnaHQgPSBkYy5HZXRUZXh0RXh0ZW50KGxhYmVsKQorKyAgICAgICAgICAgICBidXR0b25Q b3MgPSBidXR0b24uR2V0UG9zaXRpb24oKQorKyAgICAgICAgICAgICBidXR0b25TaXplID0gYnV0 dG9uLkdldFNpemUoKQorKy0gICAgICAgICAgICB4cG9zID0gYnV0dG9uUG9zLnggKyAoYnV0dG9u U2l6ZS53aWR0aCAtIHRleHRXaWR0aCkvMgorKysgICAgICAgICAgICB4cG9zID0gYnV0dG9uUG9z LnggKyAoYnV0dG9uU2l6ZS53aWR0aCAtIHRleHRXaWR0aCkvLzIKKysgICAgICAgICAgICAgeXBv cyA9IGJ1dHRvblBvcy55IC0gdGV4dEhlaWdodCAtIDIKKysgCisrICAgICAgICAgICAgIGRjLkRy YXdSZWN0YW5nbGUoeHBvcy0yLCB5cG9zLTEsIHRleHRXaWR0aCs0LCB0ZXh0SGVpZ2h0KzIpCisr ZGlmZiAtLWdpdCBhL3d4L2xpYi9hbmFsb2djbG9jay9hbmFsb2djbG9jay5weSBiL3d4L2xpYi9h bmFsb2djbG9jay9hbmFsb2djbG9jay5weQorK2luZGV4IDdjNGIxODk3OS4uMWVlMWQ2NzQyIDEw MDY0NAorKy0tLSBhL3d4L2xpYi9hbmFsb2djbG9jay9hbmFsb2djbG9jay5weQorKysrKyBiL3d4 L2xpYi9hbmFsb2djbG9jay9hbmFsb2djbG9jay5weQorK0BAIC0xNzMsNyArMTczLDcgQEAgZGVm IF9yZWNhbGNDb29yZHMoc2VsZiwgc2l6ZSk6CisrICAgICAgICAgc2NhbGUgPSBtaW4oW2Zsb2F0 KHNpemUud2lkdGgpIC8gc2VsZi5iYXNlc2l6ZS53aWR0aCwKKysgICAgICAgICAgICAgICAgICAg ICAgZmxvYXQoc2l6ZS5oZWlnaHQpIC8gc2VsZi5iYXNlc2l6ZS5oZWlnaHRdKQorKyAKKystICAg ICAgICBjZW50cmUgPSB3eC5Qb2ludChzaXplLndpZHRoIC8gMi4sIHNpemUuaGVpZ2h0IC8gMi4p CisrKyAgICAgICAgY2VudHJlID0gd3guUG9pbnQoc2l6ZS53aWR0aCAvLyAyLCBzaXplLmhlaWdo dCAvLyAyKQorKyAKKysgICAgICAgICBzZWxmLkJveC5SZWNhbGNDb29yZHMoc2l6ZSwgY2VudHJl LCBzY2FsZSkKKysgICAgICAgICBzZWxmLkhhbmRzLlJlY2FsY0Nvb3JkcyhzaXplLCBjZW50cmUs IHNjYWxlKQorK2RpZmYgLS1naXQgYS93eC9saWIvYW5hbG9nY2xvY2svaGVscGVycy5weSBiL3d4 L2xpYi9hbmFsb2djbG9jay9oZWxwZXJzLnB5CisraW5kZXggODhkMTk4YmVlLi45Njc0ZGU5MTIg MTAwNjQ0CisrLS0tIGEvd3gvbGliL2FuYWxvZ2Nsb2NrL2hlbHBlcnMucHkKKysrKysgYi93eC9s aWIvYW5hbG9nY2xvY2svaGVscGVycy5weQorK0BAIC0zNyw3ICszNyw3IEBAIGRlZiBfX2luaXRf XyhzZWxmLCBpZHg9MCwgcG9zPU5vbmUsIHNpemU9Tm9uZSwgb2Zmc2V0PTAsIGNsb2Nrc2l6ZT1O b25lLAorKyAKKysgCisrICAgICBkZWYgX3BvbDJyZWN0KHNlbGYsIG0sIHQpOgorKy0gICAgICAg IHJldHVybiBtICogbWF0aC5jb3MobWF0aC5yYWRpYW5zKHQpKSwgbSAqIG1hdGguc2luKG1hdGgu cmFkaWFucyh0KSkKKysrICAgICAgICByZXR1cm4gaW50KG0gKiBtYXRoLmNvcyhtYXRoLnJhZGlh bnModCkpKSwgaW50KG0gKiBtYXRoLnNpbihtYXRoLnJhZGlhbnModCkpKQorKyAKKysgCisrICAg ICBkZWYgX3JlY3QycG9sKHNlbGYsIHgsIHkpOgorK0BAIC0xNzQsNyArMTc0LDcgQEAgZGVmIF9f aW5pdF9fKHNlbGYsICoqa3dhcmdzKToKKysgCisrICAgICBkZWYgRHJhdyhzZWxmLCBkYyk6Cisr ICAgICAgICAgc2VsZi5keWVyLlNlbGVjdChkYykKKystICAgICAgICBkYy5EcmF3Q2lyY2xlKHNl bGYucG9zLngsIHNlbGYucG9zLnksIHNlbGYucmFkaXVzKQorKysgICAgICAgIGRjLkRyYXdDaXJj bGUoc2VsZi5wb3MueCwgc2VsZi5wb3MueSwgaW50KHNlbGYucmFkaXVzKSkKKysgCisrIAorKyAg ICAgZGVmIFJlY2FsY0Nvb3JkcyhzZWxmLCBjbG9ja3NpemUsIGNlbnRyZSwgc2NhbGUpOgorK0BA IC0yMDUsNyArMjA1LDcgQEAgZGVmIERyYXcoc2VsZiwgZGMsIGVuZCwgb2Zmc2V0PTApOgorKyAg ICAgICAgICAgICBtLCB0ID0gc2VsZi5fcmVjdDJwb2woeCwgeSkKKysgICAgICAgICAgICAgcG9s eWdvbltpXSA9IHNlbGYuX3BvbDJyZWN0KG0sIHQgLSBhbmdsZSkKKysgCisrLSAgICAgICAgZGMu RHJhd1BvbHlnb24ocG9seWdvbiwgY2VudHJlLnggKyBvZmZzZXQsIGNlbnRyZS55ICsgb2Zmc2V0 KQorKysgICAgICAgIGRjLkRyYXdQb2x5Z29uKHBvbHlnb24sIGludChjZW50cmUueCArIG9mZnNl dCksIGludChjZW50cmUueSArIG9mZnNldCkpCisrIAorKyAKKysgICAgIGRlZiBSZWNhbGNDb29y ZHMoc2VsZiwgY2xvY2tzaXplLCBjZW50cmUsIHNjYWxlKToKKytAQCAtMjI2LDcgKzIyNiw3IEBA IGRlZiBEcmF3KHNlbGYsIGRjLCBvZmZzZXQ9MCk6CisrICAgICAgICAgeCA9IHNlbGYucG9zLngg LSB3aWR0aCAvIDIuCisrICAgICAgICAgeSA9IHNlbGYucG9zLnkgLSBoZWlnaHQgLyAyLgorKyAK KystICAgICAgICBkYy5EcmF3UmVjdGFuZ2xlKHggKyBvZmZzZXQsIHkgKyBvZmZzZXQsIHdpZHRo LCBoZWlnaHQpCisrKyAgICAgICAgZGMuRHJhd1JlY3RhbmdsZShpbnQoeCArIG9mZnNldCksIGlu dCh5ICsgb2Zmc2V0KSwgaW50KHdpZHRoKSwgaW50KGhlaWdodCkpCisrIAorKyAjLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorKyAKKytAQCAtMjQyLDcgKzI0Miw3IEBAIGRlZiBEcmF3KHNlbGYsIGRjLCBvZmZzZXQ9 MCk6CisrICAgICAgICAgeCA9IHNlbGYucG9zLngKKysgICAgICAgICB5ID0gc2VsZi5wb3MueQor KyAKKystICAgICAgICBkYy5EcmF3Q2lyY2xlKHggKyBvZmZzZXQsIHkgKyBvZmZzZXQsIHJhZGl1 cykKKysrICAgICAgICBkYy5EcmF3Q2lyY2xlKGludCh4ICsgb2Zmc2V0KSwgaW50KHkgKyBvZmZz ZXQpLCBpbnQocmFkaXVzKSkKKysgCisrICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIAorK0BAIC0yNzMsNyAr MjczLDcgQEAgZGVmIERyYXdTdHJhaWdodChzZWxmLCBkYywgb2Zmc2V0PTApOgorKyAgICAgICAg IHggPSBzZWxmLnBvcy54IC0gd2lkdGggLyAyLgorKyAgICAgICAgIHkgPSBzZWxmLnBvcy55IC0g aGVpZ2h0IC8gMi4KKysgCisrLSAgICAgICAgZGMuRHJhd1BvbHlnb24ocG9seWdvbiwgeCArIG9m ZnNldCwgeSArIG9mZnNldCkKKysrICAgICAgICBkYy5EcmF3UG9seWdvbihwb2x5Z29uLCBpbnQo eCArIG9mZnNldCksIGludCh5ICsgb2Zmc2V0KSkKKysgCisrIAorKyAgICAgZGVmIERyYXdSb3Rh dGVkKHNlbGYsIGRjLCBvZmZzZXQ9MCk6CisrQEAgLTI5MCw3ICsyOTAsNyBAQCBkZWYgRHJhd1Jv dGF0ZWQoc2VsZiwgZGMsIG9mZnNldD0wKToKKysgICAgICAgICB4ID0gc2VsZi5wb3MueCAtIG1h dGguY29zKHIpICogd2lkdGggLyAyLiAtIG1hdGguc2luKHIpICogaGVpZ2h0IC8gMi4KKysgICAg ICAgICB5ID0gc2VsZi5wb3MueSAtIG1hdGguY29zKHIpICogaGVpZ2h0IC8gMi4gKyBtYXRoLnNp bihyKSAqIHdpZHRoIC8gMi4KKysgCisrLSAgICAgICAgZGMuRHJhd1BvbHlnb24ocG9seWdvbiwg eCArIG9mZnNldCwgeSArIG9mZnNldCkKKysrICAgICAgICBkYy5EcmF3UG9seWdvbihwb2x5Z29u LCBpbnQoeCArIG9mZnNldCksIGludCh5ICsgb2Zmc2V0KSkKKysgCisrICMtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisrIAorK0BAIC0zMDksNyArMzA5LDcgQEAgZGVmIERyYXdTdHJhaWdodChzZWxmLCBkYywgb2Zm c2V0PTApOgorKyAgICAgICAgIHggPSBzZWxmLnBvcy54IC0gd2lkdGggLyAyLgorKyAgICAgICAg IHkgPSBzZWxmLnBvcy55IC0gaGVpZ2h0IC8gMi4KKysgCisrLSAgICAgICAgZGMuRHJhd1RleHQo c2VsZi50ZXh0LCB4ICsgb2Zmc2V0LCB5ICsgb2Zmc2V0KQorKysgICAgICAgIGRjLkRyYXdUZXh0 KHNlbGYudGV4dCwgaW50KHggKyBvZmZzZXQpLCBpbnQoeSArIG9mZnNldCkpCisrIAorKyAKKysg ICAgIGRlZiBEcmF3Um90YXRlZChzZWxmLCBkYywgb2Zmc2V0PTApOgorK0BAIC0zMjEsNyArMzIx LDcgQEAgZGVmIERyYXdSb3RhdGVkKHNlbGYsIGRjLCBvZmZzZXQ9MCk6CisrICAgICAgICAgeCA9 IHNlbGYucG9zLnggLSBtYXRoLmNvcyhyKSAqIHdpZHRoIC8gMi4gLSBtYXRoLnNpbihyKSAqIGhl aWdodCAvIDIuCisrICAgICAgICAgeSA9IHNlbGYucG9zLnkgLSBtYXRoLmNvcyhyKSAqIGhlaWdo dCAvIDIuICsgbWF0aC5zaW4ocikgKiB3aWR0aCAvIDIuCisrIAorKy0gICAgICAgIGRjLkRyYXdS b3RhdGVkVGV4dChzZWxmLnRleHQsIHggKyBvZmZzZXQsIHkgKyBvZmZzZXQsIGFuZ2xlKQorKysg ICAgICAgIGRjLkRyYXdSb3RhdGVkVGV4dChzZWxmLnRleHQsIGludCh4ICsgb2Zmc2V0KSwgaW50 KHkgKyBvZmZzZXQpLCBpbnQoYW5nbGUpKQorKyAKKysgCisrICMtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrQEAg LTY1Niw3ICs2NTYsNyBAQCBkZWYgUmVjYWxjQ29vcmRzKHNlbGYsIGNsb2Nrc2l6ZSwgY2VudHJl LCBzY2FsZSk6CisrIAorKyAgICAgICAgICMgVHJ5IHRvIGZpbmQgYSAnZ29vZCcgbWF4IHNpemUg Zm9yIHRleHQtYmFzZWQgdGlja3MuCisrICAgICAgICAgaWYgYV90aWNrLnRleHQgaXMgbm90IE5v bmU6CisrLSAgICAgICAgICAgIHNlbGYuZm9udC5TZXRQb2ludFNpemUoc2l6ZSkKKysrICAgICAg ICAgICAgc2VsZi5mb250LlNldFBvaW50U2l6ZShpbnQoc2l6ZSkpCisrICAgICAgICAgICAgIGRj ID0gd3guTWVtb3J5REMoKQorKyAgICAgICAgICAgICBkYy5TZWxlY3RPYmplY3Qod3guQml0bWFw KCpjbG9ja3NpemUuR2V0KCkpKQorKyAgICAgICAgICAgICBkYy5TZXRGb250KHNlbGYuZm9udCkK KytAQCAtNjg2LDcgKzY4Niw3IEBAIGRlZiBSZWNhbGNDb29yZHMoc2VsZiwgY2xvY2tzaXplLCBj ZW50cmUsIHNjYWxlKToKKysgICAgICAgICAgICAgeCA9IGNlbnRyZS54ICsgcmFkaXVzICogbWF0 aC5zaW4oYW5nbGUpCisrICAgICAgICAgICAgIHkgPSBjZW50cmUueSArIHJhZGl1cyAqIG1hdGgu Y29zKGFuZ2xlKQorKyAKKystICAgICAgICAgICAgdGljay5TZXRQb3NpdGlvbih3eC5Qb2ludCh4 LCB5KSkKKysrICAgICAgICAgICAgdGljay5TZXRQb3NpdGlvbih3eC5Qb2ludChpbnQoeCksIGlu dCh5KSkpCisrIAorKyAKKysgICAgIGRlZiBHZXRTaXplKHNlbGYpOgorK2RpZmYgLS1naXQgYS93 eC9saWIvYW5hbG9nY2xvY2svc2V0dXAucHkgYi93eC9saWIvYW5hbG9nY2xvY2svc2V0dXAucHkK KytpbmRleCBhODNjODYzOWQuLmE3ZGZmYjkwMSAxMDA2NDQKKystLS0gYS93eC9saWIvYW5hbG9n Y2xvY2svc2V0dXAucHkKKysrKysgYi93eC9saWIvYW5hbG9nY2xvY2svc2V0dXAucHkKKytAQCAt MTc5LDcgKzE3OSw3IEBAIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxlLCBncm91cD0i SGFuZHMiKToKKysgICAgICAgICBwLlNldEN1c3RvbUNvbG91cnMoc2VsZi5jdXN0b21jb2xvdXJz KQorKyAgICAgICAgIHNpemVyLkFkZChwLCBwb3M9KDAsIDEpLCBmbGFnPXd4LkFMSUdOX0NFTlRS RV9WRVJUSUNBTCkKKysgCisrLSAgICAgICAgcCA9IHNlbGYuYncgPSB3eC5TcGluQ3RybChzZWxm LCBzaXplPSg3NSwgMjEpLAorKysgICAgICAgIHAgPSBzZWxmLmJ3ID0gd3guU3BpbkN0cmwoc2Vs ZiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbj0wLCBtYXg9MTAwLCB2 YWx1ZT0iNzUiKQorKyAgICAgICAgIHNpemVyLkFkZChwLCBwb3M9KDAsIDIpLCBzcGFuPSgxLCAy KSwgZmxhZz13eC5BTElHTl9DRU5UUkVfVkVSVElDQUwpCisrIAorK0BAIC0xOTMsNyArMTkzLDcg QEAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgdGl0bGUsIGdyb3VwPSJIYW5kcyIpOgorKyAg ICAgICAgIHAgPSBzZWxmLmxzID0gd3guU3RhdGljVGV4dChzZWxmLCBsYWJlbD0iU2l6ZToiKQor KyAgICAgICAgIHNpemVyLkFkZChwLCBwb3M9KDIsIDApLCBmbGFnPXd4LkFMSUdOX0NFTlRSRV9W RVJUSUNBTCkKKysgCisrLSAgICAgICAgcCA9IHNlbGYuc3ogPSB3eC5TcGluQ3RybChzZWxmLCBz aXplPSg3NSwgMjEpLAorKysgICAgICAgIHAgPSBzZWxmLnN6ID0gd3guU3BpbkN0cmwoc2VsZiwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbj0wLCBtYXg9MTAwLCB2YWx1 ZT0iNzUiKQorKyAgICAgICAgIHNpemVyLkFkZChwLCBwb3M9KDIsIDEpLCBzcGFuPSgxLCAzKSwg ZmxhZz13eC5BTElHTl9DRU5UUkVfVkVSVElDQUwpCisrIAorK0BAIC0yMTIsNyArMjEyLDcgQEAg ZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgdGl0bGUsIGdyb3VwPSJUaWNrcyIpOgorKyAgICAg ICAgIHAgPSB3eC5TdGF0aWNUZXh0KHNlbGYsIGxhYmVsPSJPZmZzZXQ6IikKKysgICAgICAgICBz aXplci5BZGQocCwgcG9zPSgzLCAwKSwgZmxhZz13eC5BTElHTl9DRU5UUkVfVkVSVElDQUwpCisr IAorKy0gICAgICAgIHAgPSBzZWxmLm9mID0gd3guU3BpbkN0cmwoc2VsZiwgc2l6ZT0oNzUsIDIx KSwKKysrICAgICAgICBwID0gc2VsZi5vZiA9IHd4LlNwaW5DdHJsKHNlbGYsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtaW49MCwgbWF4PTEwMCwgdmFsdWU9Ijc1IikKKysg ICAgICAgICBzaXplci5BZGQocCwgcG9zPSgzLCAxKSwgc3Bhbj0oMSwgMyksIGZsYWc9d3guQUxJ R05fQ0VOVFJFX1ZFUlRJQ0FMKQorKyAKKytkaWZmIC0tZ2l0IGEvd3gvbGliL2J1dHRvbnMucHkg Yi93eC9saWIvYnV0dG9ucy5weQorK2luZGV4IDQ2ZDFiODc0Ny4uZjAxYTU0ZDQxIDEwMDY0NAor Ky0tLSBhL3d4L2xpYi9idXR0b25zLnB5CisrKysrIGIvd3gvbGliL2J1dHRvbnMucHkKKytAQCAt NDUzLDcgKzQ1Myw3IEBAIGRlZiBEcmF3TGFiZWwoc2VsZiwgZGMsIHdpZHRoLCBoZWlnaHQsIGR4 PTAsIGR5PTApOgorKyAgICAgICAgIHR3LCB0aCA9IGRjLkdldFRleHRFeHRlbnQobGFiZWwpCisr ICAgICAgICAgaWYgbm90IHNlbGYudXA6CisrICAgICAgICAgICAgIGR4ID0gZHkgPSBzZWxmLmxh YmVsRGVsdGEKKystICAgICAgICBkYy5EcmF3VGV4dChsYWJlbCwgKHdpZHRoLXR3KS8yK2R4LCAo aGVpZ2h0LXRoKS8yK2R5KQorKysgICAgICAgIGRjLkRyYXdUZXh0KGxhYmVsLCAod2lkdGgtdHcp Ly8yK2R4LCAoaGVpZ2h0LXRoKS8vMitkeSkKKysgCisrIAorKyAgICAgZGVmIERyYXdGb2N1c0lu ZGljYXRvcihzZWxmLCBkYywgdywgaCk6CisrQEAgLTg0NCw3ICs4NDQsNyBAQCBkZWYgRHJhd0xh YmVsKHNlbGYsIGRjLCB3aWR0aCwgaGVpZ2h0LCBkeD0wLCBkeT0wKToKKysgICAgICAgICBpZiBu b3Qgc2VsZi51cDoKKysgICAgICAgICAgICAgZHggPSBkeSA9IHNlbGYubGFiZWxEZWx0YQorKyAg ICAgICAgIGhhc01hc2sgPSBibXAuR2V0TWFzaygpICE9IE5vbmUKKystICAgICAgICBkYy5EcmF3 Qml0bWFwKGJtcCwgKHdpZHRoLWJ3KS8yK2R4LCAoaGVpZ2h0LWJoKS8yK2R5LCBoYXNNYXNrKQor KysgICAgICAgIGRjLkRyYXdCaXRtYXAoYm1wLCAod2lkdGgtYncpLy8yK2R4LCAoaGVpZ2h0LWJo KS8vMitkeSwgaGFzTWFzaykKKysgCisrIAorKyAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorK0BAIC05MjYsMTIg KzkyNiwxMiBAQCBkZWYgRHJhd0xhYmVsKHNlbGYsIGRjLCB3aWR0aCwgaGVpZ2h0LCBkeD0wLCBk eT0wKToKKysgICAgICAgICBpZiBub3Qgc2VsZi51cDoKKysgICAgICAgICAgICAgZHggPSBkeSA9 IHNlbGYubGFiZWxEZWx0YQorKyAKKystICAgICAgICBwb3NfeCA9ICh3aWR0aC1idy10dykvMitk eCAgICAgICMgYWRqdXN0IGZvciBiaXRtYXAgYW5kIHRleHQgdG8gY2VudHJlCisrKyAgICAgICAg cG9zX3ggPSAod2lkdGgtYnctdHcpLy8yK2R4ICAgICAgIyBhZGp1c3QgZm9yIGJpdG1hcCBhbmQg dGV4dCB0byBjZW50cmUKKysgICAgICAgICBpZiBibXAgaXMgbm90IE5vbmU6CisrLSAgICAgICAg ICAgIGRjLkRyYXdCaXRtYXAoYm1wLCBwb3NfeCwgKGhlaWdodC1iaCkvMitkeSwgaGFzTWFzaykg IyBkcmF3IGJpdG1hcCBpZiBhdmFpbGFibGUKKysrICAgICAgICAgICAgZGMuRHJhd0JpdG1hcChi bXAsIHBvc194LCAoaGVpZ2h0LWJoKS8vMitkeSwgaGFzTWFzaykgIyBkcmF3IGJpdG1hcCBpZiBh dmFpbGFibGUKKysgICAgICAgICAgICAgcG9zX3ggPSBwb3NfeCArIDIgICAjIGV4dHJhIHNwYWNp bmcgZnJvbSBiaXRtYXAKKysgCisrLSAgICAgICAgZGMuRHJhd1RleHQobGFiZWwsIHBvc194ICsg ZHgrYncsIChoZWlnaHQtdGgpLzIrZHkpICAgICAgIyBkcmF3IHRoZSB0ZXh0CisrKyAgICAgICAg ZGMuRHJhd1RleHQobGFiZWwsIHBvc194ICsgZHgrYncsIChoZWlnaHQtdGgpLy8yK2R5KSAgICAg ICMgZHJhdyB0aGUgdGV4dAorKyAKKysgCisrICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrZGlmZiAtLWdpdCBh L3d4L2xpYi9jb2xvdXJjaG9vc2VyL3B5Y29sb3VyY2hvb3Nlci5weSBiL3d4L2xpYi9jb2xvdXJj aG9vc2VyL3B5Y29sb3VyY2hvb3Nlci5weQorK2luZGV4IDYxZGJjMDJkMi4uMTI0Mzc2NDgzIDEw MDY0NAorKy0tLSBhL3d4L2xpYi9jb2xvdXJjaG9vc2VyL3B5Y29sb3VyY2hvb3Nlci5weQorKysr KyBiL3d4L2xpYi9jb2xvdXJjaG9vc2VyL3B5Y29sb3VyY2hvb3Nlci5weQorK0BAIC0xODgsNyAr MTg4LDcgQEAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgaWQpOgorKyAgICAgICAgIHNlbGYu Y29sb3VyX3NsaWRlci5CaW5kKHd4LkVWVF9NT1RJT04sIHNlbGYub25TbGlkZXJNb3Rpb24pCisr ICAgICAgICAgc2VsZi5zbGlkZXIgPSB3eC5TbGlkZXIoCisrICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYsIHNlbGYuaWRTQ1JPTEwsIDg2LCAwLCBzZWxmLmNvbG91cl9zbGlkZXIuSEVJR0hU IC0gMSwKKystICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9d3guU0xfVkVSVElDQUwsIHNp emU9KDE1LCBzZWxmLmNvbG91cl9zbGlkZXIuSEVJR0hUKQorKysgICAgICAgICAgICAgICAgICAg ICAgICBzdHlsZT13eC5TTF9WRVJUSUNBTCwgc2l6ZT0oLTEsIHNlbGYuY29sb3VyX3NsaWRlci5I RUlHSFQpCisrICAgICAgICAgICAgICAgICAgICAgICAgICkKKysgCisrICAgICAgICAgc2VsZi5C aW5kKHd4LkVWVF9DT01NQU5EX1NDUk9MTCwgc2VsZi5vblNjcm9sbCwgc2VsZi5zbGlkZXIpCisr QEAgLTMzOCw3ICszMzgsNyBAQCBkZWYgc2V0U2xpZGVyVG9WKHNlbGYsIHYpOgorKyAgICAgICAg IG1pbiA9IHNlbGYuc2xpZGVyLkdldE1pbigpCisrICAgICAgICAgbWF4ID0gc2VsZi5zbGlkZXIu R2V0TWF4KCkKKysgICAgICAgICB2YWwgPSAoMSAtIHYpICogbWF4CisrLSAgICAgICAgc2VsZi5z bGlkZXIuU2V0VmFsdWUodmFsKQorKysgICAgICAgIHNlbGYuc2xpZGVyLlNldFZhbHVlKGludCh2 YWwpKQorKyAKKysgICAgIGRlZiBnZXRWRnJvbVNsaWRlcihzZWxmKToKKysgICAgICAgICAiIiJH ZXQgdGhlIGN1cnJlbnQgdmFsdWUgb2YgIlYiIGZyb20gdGhlIHYgc2xpZGVyLiIiIgorK2RpZmYg LS1naXQgYS93eC9saWIvY29sb3VyY2hvb3Nlci9weXBhbGV0dGUucHkgYi93eC9saWIvY29sb3Vy Y2hvb3Nlci9weXBhbGV0dGUucHkKKytpbmRleCBmZjFmYjg0MGMuLjcxYjlmYzJkZiAxMDA2NDQK KystLS0gYS93eC9saWIvY29sb3VyY2hvb3Nlci9weXBhbGV0dGUucHkKKysrKysgYi93eC9saWIv Y29sb3VyY2hvb3Nlci9weXBhbGV0dGUucHkKKytAQCAtMTY1LDcgKzE2NSw3IEBAIGRlZiBEcmF3 QnVmZmVyKHNlbGYpOgorKyAgICAgICAgICAgICBjb2xvdXIgPSB3eC5Db2xvdXIoMCwgMCwgMCkK KysgICAgICAgICAgICAgc2VsZi5idWZmZXIuU2V0UGVuKHd4LlBlbihjb2xvdXIsIDEsIHd4LlBF TlNUWUxFX1NPTElEKSkKKysgICAgICAgICAgICAgc2VsZi5idWZmZXIuU2V0QnJ1c2god3guQnJ1 c2goY29sb3VyLCB3eC5CUlVTSFNUWUxFX1RSQU5TUEFSRU5UKSkKKystICAgICAgICAgICAgc2Vs Zi5idWZmZXIuRHJhd0NpcmNsZShzZWxmLnBvaW50WzBdLCBzZWxmLnBvaW50WzFdLCAzKQorKysg ICAgICAgICAgICBzZWxmLmJ1ZmZlci5EcmF3Q2lyY2xlKGludChzZWxmLnBvaW50WzBdKSwgaW50 KHNlbGYucG9pbnRbMV0pLCAzKQorKyAKKysgICAgIGRlZiBIaWdobGlnaHRQb2ludChzZWxmLCB4 LCB5KToKKysgICAgICAgICAiIiJIaWdobGlnaHRzIGFuIGFyZWEgb2YgdGhlIHBhbGV0dGUgd2l0 aCBhIGxpdHRsZSBjaXJjbGUgYXJvdW5kCisrZGlmZiAtLWdpdCBhL3d4L2xpYi9mbG9hdGNhbnZh cy9GQ09iamVjdHMucHkgYi93eC9saWIvZmxvYXRjYW52YXMvRkNPYmplY3RzLnB5CisraW5kZXgg NThiZWNkMzhjLi5jZGY4Y2M1M2UgMTAwNjQ0CisrLS0tIGEvd3gvbGliL2Zsb2F0Y2FudmFzL0ZD T2JqZWN0cy5weQorKysrKyBiL3d4L2xpYi9mbG9hdGNhbnZhcy9GQ09iamVjdHMucHkKKytAQCAt Mjk2LDcgKzI5Niw3IEBAIGRlZiBTZXRQZW4oc2VsZiwgTGluZUNvbG9yLCBMaW5lU3R5bGUsIExp bmVXaWR0aCk6CisrICAgICAgICAgZWxzZToKKysgICAgICAgICAgICAgc2VsZi5QZW4gPSBzZWxm LlBlbkxpc3Quc2V0ZGVmYXVsdCgKKysgICAgICAgICAgICAgICAgIChMaW5lQ29sb3IsIExpbmVT dHlsZSwgTGluZVdpZHRoKSwKKystICAgICAgICAgICAgICAgIHd4LlBlbihMaW5lQ29sb3IsIExp bmVXaWR0aCwgc2VsZi5MaW5lU3R5bGVMaXN0W0xpbmVTdHlsZV0pKQorKysgICAgICAgICAgICAg ICAgd3guUGVuKExpbmVDb2xvciwgaW50KExpbmVXaWR0aCksIHNlbGYuTGluZVN0eWxlTGlzdFtM aW5lU3R5bGVdKSkKKysgCisrICAgICBkZWYgU2V0SGl0QnJ1c2goc2VsZiwgSGl0Q29sb3IpOgor KyAgICAgICAgICIiIgorK0BAIC0xMjAyLDE0ICsxMjAyLDE0IEBAIGRlZiBfRHJhdyhzZWxmLCBk YyAsIFdvcmxkVG9QaXhlbCwgU2NhbGVXb3JsZFRvUGl4ZWwsIEhUZGM9Tm9uZSk6CisrICAgICAg ICAgICAgIHggPSB4YyAtIFNpemUvMi4wCisrICAgICAgICAgICAgIHkgPSB5YyAtIFNpemUvMi4w CisrICAgICAgICAgICAgIGRjLlNldEJydXNoKHNlbGYuQnJ1c2gpCisrLSAgICAgICAgICAgIGRj LkRyYXdSZWN0YW5nbGUoeCwgeSwgU2l6ZSwgU2l6ZSkKKysrICAgICAgICAgICAgZGMuRHJhd1Jl Y3RhbmdsZShpbnQoeCksIGludCh5KSwgU2l6ZSwgU2l6ZSkKKysgICAgICAgICBpZiBIVGRjIGFu ZCBzZWxmLkhpdEFibGU6CisrICAgICAgICAgICAgIEhUZGMuU2V0UGVuKHNlbGYuSGl0UGVuKQor KyAgICAgICAgICAgICBpZiBzZWxmLlNpemUgPD0gMToKKysgICAgICAgICAgICAgICAgIEhUZGMu RHJhd1BvaW50KHhjLCB4YykKKysgICAgICAgICAgICAgZWxzZToKKysgICAgICAgICAgICAgICAg IEhUZGMuU2V0QnJ1c2goc2VsZi5IaXRCcnVzaCkKKystICAgICAgICAgICAgICAgIEhUZGMuRHJh d1JlY3RhbmdsZSh4LCB5LCBTaXplLCBTaXplKQorKysgICAgICAgICAgICAgICAgSFRkYy5EcmF3 UmVjdGFuZ2xlKGludCh4KSwgaW50KHkpLCBTaXplLCBTaXplKQorKyAKKysgY2xhc3MgUmVjdEVs bGlwc2UoWFlPYmplY3RNaXhpbiwgTGluZUFuZEZpbGxNaXhpbiwgRHJhd09iamVjdCk6CisrICAg ICAiIiJBIFJlY3RFbGxpcHNlIGRyYXcgb2JqZWN0LiIiIgorK0BAIC0yMTYxLDcgKzIxNjEsNyBA QCBkZWYgX0RyYXcoc2VsZiwgZGMgLCBXb3JsZFRvUGl4ZWwsIFNjYWxlV29ybGRUb1BpeGVsLCBI VGRjPU5vbmUpOgorKyAgICAgICAgIFcgPSBIICogKHNlbGYuYm1wV2lkdGggLyBzZWxmLmJtcEhl aWdodCkKKysgICAgICAgICBpZiAoc2VsZi5TY2FsZWRCaXRtYXAgaXMgTm9uZSkgb3IgKEggIT0g c2VsZi5TY2FsZWRIZWlnaHQpIDoKKysgICAgICAgICAgICAgc2VsZi5TY2FsZWRIZWlnaHQgPSBI CisrLSAgICAgICAgICAgIEltZyA9IHNlbGYuSW1hZ2UuU2NhbGUoVywgSCkKKysrICAgICAgICAg ICAgSW1nID0gc2VsZi5JbWFnZS5TY2FsZShpbnQoVyksIGludChIKSkKKysgICAgICAgICAgICAg c2VsZi5TY2FsZWRCaXRtYXAgPSB3eC5CaXRtYXAoSW1nKQorKyAKKysgICAgICAgICBYWSA9IHNl bGYuU2hpZnRGdW4oWFlbMF0sIFhZWzFdLCBXLCBIKQorK2RpZmYgLS1naXQgYS93eC9saWIvZ2l6 bW9zL2xlZGN0cmwucHkgYi93eC9saWIvZ2l6bW9zL2xlZGN0cmwucHkKKytpbmRleCBmMTg1ZDUx MDUuLjdmNGQzZmNmOSAxMDA2NDQKKystLS0gYS93eC9saWIvZ2l6bW9zL2xlZGN0cmwucHkKKysr KysgYi93eC9saWIvZ2l6bW9zL2xlZGN0cmwucHkKKytAQCAtMjkzLDcgKzI5Myw3IEBAIGRlZiBf ZHJhd0RpZ2l0KHNlbGYsIGRjLCBkaWdpdCwgY29sdW1uKToKKysgCisrICAgICAgICAgaWYgZGln aXQgJiBjLkNPTE9OOgorKyAgICAgICAgICAgICBkYy5TZXRCcnVzaCh3eC5CcnVzaChsaW5lQ29s b3IpKQorKy0gICAgICAgICAgICBjZW50ZXJYID0gWFBvcyArIChzZWxmLm1fbGluZUxlbmd0aCAr IHNlbGYubV9kaWdpdE1hcmdpbikgLyAyCisrLSAgICAgICAgICAgIHJhZGl1cyA9IHNlbGYubV9s aW5lV2lkdGggLyAyCisrLSAgICAgICAgICAgIGRjLkRyYXdDaXJjbGUoY2VudGVyWCwgKHNlbGYu bV9saW5lTGVuZ3RoICsgKHNlbGYubV9saW5lTWFyZ2luICogMykpIC8gMiwgcmFkaXVzKQorKy0g ICAgICAgICAgICBkYy5EcmF3Q2lyY2xlKGNlbnRlclgsIChzZWxmLm1fbGluZUxlbmd0aCAqIDIg KyAoc2VsZi5tX2xpbmVNYXJnaW4gKiA1KSkgKiAzIC8gNCwgcmFkaXVzKQorKysgICAgICAgICAg ICBjZW50ZXJYID0gWFBvcyArIChzZWxmLm1fbGluZUxlbmd0aCArIHNlbGYubV9kaWdpdE1hcmdp bikgLy8gMgorKysgICAgICAgICAgICByYWRpdXMgPSBzZWxmLm1fbGluZVdpZHRoIC8vIDIKKysr ICAgICAgICAgICAgZGMuRHJhd0NpcmNsZShjZW50ZXJYLCAoc2VsZi5tX2xpbmVMZW5ndGggKyAo c2VsZi5tX2xpbmVNYXJnaW4gKiAzKSkgLy8gMiwgcmFkaXVzKQorKysgICAgICAgICAgICBkYy5E cmF3Q2lyY2xlKGNlbnRlclgsIChzZWxmLm1fbGluZUxlbmd0aCAqIDIgKyAoc2VsZi5tX2xpbmVN YXJnaW4gKiA1KSkgKiAzIC8vIDQsIHJhZGl1cykKKytkaWZmIC0tZ2l0IGEvd3gvbGliL2ltYWdl YnJvd3Nlci5weSBiL3d4L2xpYi9pbWFnZWJyb3dzZXIucHkKKytpbmRleCA3OTVlOTBkY2EuLjhl MTQ3MjdlNyAxMDA2NDQKKystLS0gYS93eC9saWIvaW1hZ2Vicm93c2VyLnB5CisrKysrIGIvd3gv bGliL2ltYWdlYnJvd3Nlci5weQorK0BAIC0zNDcsOCArMzQ3LDggQEAgZGVmIERyYXdJbWFnZShz ZWxmLCBkYyk6CisrICAgICAgICAgb3dpZHRoID0gaW50KHNjYWxlKml3aWR0aCkKKysgICAgICAg ICBvaGVpZ2h0ID0gaW50KHNjYWxlKmloZWlnaHQpCisrIAorKy0gICAgICAgIGRpZmZ4ID0gKHd3 aWR0aCAtIG93aWR0aCkvMiAgICMgY2VudGVyIGNhbGMKKystICAgICAgICBkaWZmeSA9ICh3aGVp Z2h0IC0gb2hlaWdodCkvMiAgICMgY2VudGVyIGNhbGMKKysrICAgICAgICBkaWZmeCA9ICh3d2lk dGggLSBvd2lkdGgpLy8yICAgIyBjZW50ZXIgY2FsYworKysgICAgICAgIGRpZmZ5ID0gKHdoZWln aHQgLSBvaGVpZ2h0KS8vMiAgICMgY2VudGVyIGNhbGMKKysgCisrICAgICAgICAgaWYgbm90IGJt cDoKKysgICAgICAgICAgICAgaWYgb3dpZHRoIT1pd2lkdGggb3Igb2hlaWdodCE9aWhlaWdodDoK KytkaWZmIC0tZ2l0IGEvd3gvbGliL29nbC9iYXNpYy5weSBiL3d4L2xpYi9vZ2wvYmFzaWMucHkK KytpbmRleCBiMDg4NTlhYjkuLjAxMDdmMjFmYyAxMDA2NDQKKystLS0gYS93eC9saWIvb2dsL2Jh c2ljLnB5CisrKysrIGIvd3gvbGliL29nbC9iYXNpYy5weQorK0BAIC0xMDUxLDcgKzEwNTEsNyBA QCBkZWYgT25FcmFzZUNvbnRlbnRzKHNlbGYsIGRjKToKKysgICAgICAgICBkYy5TZXRQZW4oc2Vs Zi5HZXRCYWNrZ3JvdW5kUGVuKCkpCisrICAgICAgICAgZGMuU2V0QnJ1c2goc2VsZi5HZXRCYWNr Z3JvdW5kQnJ1c2goKSkKKysgCisrLSAgICAgICAgZGMuRHJhd1JlY3RhbmdsZSh0b3BMZWZ0WCAt IHBlbldpZHRoLCB0b3BMZWZ0WSAtIHBlbldpZHRoLCBtYXhYICsgcGVuV2lkdGggKiAyICsgNCwg bWF4WSArIHBlbldpZHRoICogMiArIDQpCisrKyAgICAgICAgZGMuRHJhd1JlY3RhbmdsZShpbnQo dG9wTGVmdFggLSBwZW5XaWR0aCksIGludCh0b3BMZWZ0WSAtIHBlbldpZHRoKSwgaW50KG1heFgg KyBwZW5XaWR0aCAqIDIgKyA0KSwgaW50KG1heFkgKyBwZW5XaWR0aCAqIDIgKyA0KSkKKysgCisr ICAgICBkZWYgRXJhc2VMaW5rcyhzZWxmLCBkYywgYXR0YWNobWVudCA9IC0xLCByZWN1cnNlID0g RmFsc2UpOgorKyAgICAgICAgICIiIgorK0BAIC0yNzY5LDkgKzI3NjksOSBAQCBkZWYgT25EcmF3 KHNlbGYsIGRjKToKKysgICAgICAgICAgICAgZGMuU2V0QnJ1c2goc2VsZi5fYnJ1c2gpCisrIAor KyAgICAgICAgIGlmIHNlbGYuX2Nvcm5lclJhZGl1czoKKystICAgICAgICAgICAgZGMuRHJhd1Jv dW5kZWRSZWN0YW5nbGUoeDEsIHkxLCBzZWxmLl93aWR0aCwgc2VsZi5faGVpZ2h0LCBzZWxmLl9j b3JuZXJSYWRpdXMpCisrKyAgICAgICAgICAgIGRjLkRyYXdSb3VuZGVkUmVjdGFuZ2xlKGludCh4 MSksIGludCh5MSksIHNlbGYuX3dpZHRoLCBzZWxmLl9oZWlnaHQsIHNlbGYuX2Nvcm5lclJhZGl1 cykKKysgICAgICAgICBlbHNlOgorKy0gICAgICAgICAgICBkYy5EcmF3UmVjdGFuZ2xlKHgxLCB5 MSwgc2VsZi5fd2lkdGgsIHNlbGYuX2hlaWdodCkKKysrICAgICAgICAgICAgZGMuRHJhd1JlY3Rh bmdsZShpbnQoeDEpLCBpbnQoeTEpLCBzZWxmLl93aWR0aCwgc2VsZi5faGVpZ2h0KQorKyAKKysg ICAgIGRlZiBHZXRCb3VuZGluZ0JveE1pbihzZWxmKToKKysgICAgICAgICAiIiJHZXQgdGhlIGJv dW5kaW5nIGJveCBtaW5pbXVtLiIiIgorK0BAIC0yODgyLDcgKzI4ODIsNyBAQCBkZWYgQ3JlYXRl KHNlbGYsIHRoZV9wb2ludHMgPSBOb25lKToKKysgICAgICAgICAgICAgIyBEdXBsaWNhdGUgdGhl IGxpc3Qgb2YgcG9pbnRzCisrICAgICAgICAgICAgIHNlbGYuX3BvaW50cyA9IFtdCisrICAgICAg ICAgICAgIGZvciBwb2ludCBpbiB0aGVfcG9pbnRzOgorKy0gICAgICAgICAgICAgICAgbmV3X3Bv aW50ID0gd3guUG9pbnQocG9pbnRbMF0sIHBvaW50WzFdKQorKysgICAgICAgICAgICAgICAgbmV3 X3BvaW50ID0gd3guUG9pbnQoaW50KHBvaW50WzBdKSwgaW50KHBvaW50WzFdKSkKKysgICAgICAg ICAgICAgICAgIHNlbGYuX3BvaW50cy5hcHBlbmQobmV3X3BvaW50KQorKyAgICAgICAgICAgICBz ZWxmLkNhbGN1bGF0ZUJvdW5kaW5nQm94KCkKKysgICAgICAgICAgICAgc2VsZi5fb3JpZ2luYWxX aWR0aCA9IHNlbGYuX2JvdW5kV2lkdGgKKytAQCAtMzQ0NCw3ICszNDQ0LDcgQEAgZGVmIE9uRHJh dyhzZWxmLCBkYyk6CisrICAgICAgICAgICAgICAgICBkYy5TZXRQZW4oc2VsZi5fcGVuKQorKyAg ICAgICAgIGlmIHNlbGYuX2JydXNoOgorKyAgICAgICAgICAgICBkYy5TZXRCcnVzaChzZWxmLl9i cnVzaCkKKystICAgICAgICBkYy5EcmF3RWxsaXBzZShzZWxmLl94cG9zIC0gc2VsZi5HZXRXaWR0 aCgpIC8gMi4wLCBzZWxmLl95cG9zIC0gc2VsZi5HZXRIZWlnaHQoKSAvIDIuMCwgc2VsZi5HZXRX aWR0aCgpLCBzZWxmLkdldEhlaWdodCgpKQorKysgICAgICAgIGRjLkRyYXdFbGxpcHNlKGludChz ZWxmLl94cG9zIC0gc2VsZi5HZXRXaWR0aCgpIC8gMi4wKSwgaW50KHNlbGYuX3lwb3MgLSBzZWxm LkdldEhlaWdodCgpIC8gMi4wKSwgc2VsZi5HZXRXaWR0aCgpLCBzZWxmLkdldEhlaWdodCgpKQor KyAKKysgICAgIGRlZiBTZXRTaXplKHNlbGYsIHgsIHksIHJlY3Vyc2l2ZSA9IFRydWUpOgorKyAg ICAgICAgICIiIgorK2RpZmYgLS1naXQgYS93eC9saWIvb2dsL2JtcHNoYXBlLnB5IGIvd3gvbGli L29nbC9ibXBzaGFwZS5weQorK2luZGV4IGVlMjg1OTUyNy4uZTUzZGRiMTM2IDEwMDY0NAorKy0t LSBhL3d4L2xpYi9vZ2wvYm1wc2hhcGUucHkKKysrKysgYi93eC9saWIvb2dsL2JtcHNoYXBlLnB5 CisrQEAgLTMyLDcgKzMyLDcgQEAgZGVmIE9uRHJhdyhzZWxmLCBkYyk6CisrIAorKyAgICAgICAg IHggPSBzZWxmLl94cG9zIC0gc2VsZi5fYml0bWFwLkdldFdpZHRoKCkgLyAyLjAKKysgICAgICAg ICB5ID0gc2VsZi5feXBvcyAtIHNlbGYuX2JpdG1hcC5HZXRIZWlnaHQoKSAvIDIuMAorKy0gICAg ICAgIGRjLkRyYXdCaXRtYXAoc2VsZi5fYml0bWFwLCB4LCB5LCBUcnVlKQorKysgICAgICAgIGRj LkRyYXdCaXRtYXAoc2VsZi5fYml0bWFwLCBpbnQoeCksIGludCh5KSwgVHJ1ZSkKKysgCisrICAg ICBkZWYgU2V0U2l6ZShzZWxmLCB3LCBoLCByZWN1cnNpdmUgPSBUcnVlKToKKysgICAgICAgICAi IiIKKytkaWZmIC0tZ2l0IGEvd3gvbGliL29nbC9jb21wb3NpdC5weSBiL3d4L2xpYi9vZ2wvY29t cG9zaXQucHkKKytpbmRleCBjM2I2MjM5NTIuLmVlY2FhZmIzZiAxMDA2NDQKKystLS0gYS93eC9s aWIvb2dsL2NvbXBvc2l0LnB5CisrKysrIGIvd3gvbGliL29nbC9jb21wb3NpdC5weQorK0BAIC0x MTMxLDExICsxMTMxLDExIEBAIGRlZiBPbkRyYXcoc2VsZiwgZGMpOgorKyAKKysgICAgICAgICBp ZiBzZWxmLl9sZWZ0U2lkZToKKysgICAgICAgICAgICAgZGMuU2V0UGVuKHNlbGYuX2xlZnRTaWRl UGVuKQorKy0gICAgICAgICAgICBkYy5EcmF3TGluZSh4MSwgeTIsIHgxLCB5MSkKKysrICAgICAg ICAgICAgZGMuRHJhd0xpbmUoaW50KHgxKSwgaW50KHkyKSwgaW50KHgxKSwgaW50KHkxKSkKKysg CisrICAgICAgICAgaWYgc2VsZi5fdG9wU2lkZToKKysgICAgICAgICAgICAgZGMuU2V0UGVuKHNl bGYuX3RvcFNpZGVQZW4pCisrLSAgICAgICAgICAgIGRjLkRyYXdMaW5lKHgxLCB5MSwgeDIsIHkx KQorKysgICAgICAgICAgICBkYy5EcmF3TGluZShpbnQoeDEpLCBpbnQoeTEpLCBpbnQoeDIpLCBp bnQoeTEpKQorKyAKKysgICAgICAgICAjIEZvciB0ZXN0aW5nIHB1cnBvc2VzLCBkcmF3IGEgcmVj dGFuZ2xlIHNvIHdlIGtub3cKKysgICAgICAgICAjIGhvdyBiaWcgdGhlIGRpdmlzaW9uIGlzLgor K2RpZmYgLS1naXQgYS93eC9saWIvb2dsL2RpdmlkZWQucHkgYi93eC9saWIvb2dsL2RpdmlkZWQu cHkKKytpbmRleCAwYmZiMTkxOWYuLjA4MDliZTU4YyAxMDA2NDQKKystLS0gYS93eC9saWIvb2ds L2RpdmlkZWQucHkKKysrKysgYi93eC9saWIvb2dsL2RpdmlkZWQucHkKKytAQCAtMjMxLDcgKzIz MSw3IEBAIGRlZiBPbkRyYXdDb250ZW50cyhzZWxmLCBkYyk6CisrICAgICAgICAgICAgICAgICBy ZWdpb25QZW4gPSByZWdpb24uR2V0QWN0dWFsUGVuKCkKKysgICAgICAgICAgICAgICAgIGlmIHJl Z2lvblBlbjoKKysgICAgICAgICAgICAgICAgICAgICBkYy5TZXRQZW4ocmVnaW9uUGVuKQorKy0g ICAgICAgICAgICAgICAgICAgIGRjLkRyYXdMaW5lKGxlZnRYLCB5LCByaWdodFgsIHkpCisrKyAg ICAgICAgICAgICAgICAgICAgZGMuRHJhd0xpbmUoaW50KGxlZnRYKSwgaW50KHkpLCBpbnQocmln aHRYKSwgaW50KHkpKQorKyAKKysgICAgICAgICAgICAgY3VycmVudFkgPSBhY3R1YWxZCisrIAor K2RpZmYgLS1naXQgYS93eC9saWIvb2dsL2xpbmVzLnB5IGIvd3gvbGliL29nbC9saW5lcy5weQor K2luZGV4IDk0OGI4NWQ4Mi4uNTBjMDdlMDQ2IDEwMDY0NAorKy0tLSBhL3d4L2xpYi9vZ2wvbGlu ZXMucHkKKysrKysgYi93eC9saWIvb2dsL2xpbmVzLnB5CisrQEAgLTEyMDAsNyArMTIwMCw3IEBA IGRlZiBPbkRyYXcoc2VsZiwgZGMpOgorKyAKKysgICAgICAgICBwb2ludHMgPSBbXQorKyAgICAg ICAgIGZvciBwb2ludCBpbiBzZWxmLl9saW5lQ29udHJvbFBvaW50czoKKystICAgICAgICAgICAg cG9pbnRzLmFwcGVuZCh3eC5Qb2ludChwb2ludFswXSwgcG9pbnRbMV0pKQorKysgICAgICAgICAg ICBwb2ludHMuYXBwZW5kKHd4LlBvaW50KGludChwb2ludFswXSksIGludChwb2ludFsxXSkpKQor KyAKKysgICAgICAgICBpZiBzZWxmLl9pc1NwbGluZToKKysgICAgICAgICAgICAgZGMuRHJhd1Nw bGluZShwb2ludHMpCisrZGlmZiAtLWdpdCBhL3d4L2xpYi9vZ2wvb2dsbWlzYy5weSBiL3d4L2xp Yi9vZ2wvb2dsbWlzYy5weQorK2luZGV4IDg1ODhhNzJiNy4uYThiZTNmYzUzIDEwMDY0NAorKy0t LSBhL3d4L2xpYi9vZ2wvb2dsbWlzYy5weQorKysrKyBiL3d4L2xpYi9vZ2wvb2dsbWlzYy5weQor K0BAIC0zMDAsMTAgKzMwMCwxMCBAQCBkZWYgRHJhd0Zvcm1hdHRlZFRleHQoZGMsIHRleHRfbGlz dCwgeHBvcywgeXBvcywgd2lkdGgsIGhlaWdodCwgZm9ybWF0TW9kZSk6CisrICAgICAgICAgeW9m ZnNldCA9IHlwb3MgLSBoZWlnaHQgLyAyLjAKKysgCisrICAgICAjICsxIHRvIGFsbG93IGZvciBy b3VuZGluZyBlcnJvcnMKKystICAgIGRjLlNldENsaXBwaW5nUmVnaW9uKHhwb3MgLSB3aWR0aCAv IDIuMCwgeXBvcyAtIGhlaWdodCAvIDIuMCwgd2lkdGggKyAxLCBoZWlnaHQgKyAxKQorKysgICAg ZGMuU2V0Q2xpcHBpbmdSZWdpb24oaW50KHhwb3MgLSB3aWR0aCAvIDIuMCksIGludCh5cG9zIC0g aGVpZ2h0IC8gMi4wKSwgaW50KHdpZHRoICsgMSksIGludChoZWlnaHQgKyAxKSkKKysgCisrICAg ICBmb3IgbGluZSBpbiB0ZXh0X2xpc3Q6CisrLSAgICAgICAgZGMuRHJhd1RleHQobGluZS5HZXRU ZXh0KCksIHhvZmZzZXQgKyBsaW5lLkdldFgoKSwgeW9mZnNldCArIGxpbmUuR2V0WSgpKQorKysg ICAgICAgIGRjLkRyYXdUZXh0KGxpbmUuR2V0VGV4dCgpLCBpbnQoeG9mZnNldCArIGxpbmUuR2V0 WCgpKSwgaW50KHlvZmZzZXQgKyBsaW5lLkdldFkoKSkpCisrIAorKyAgICAgZGMuRGVzdHJveUNs aXBwaW5nUmVnaW9uKCkKKysgCisrZGlmZiAtLWdpdCBhL3d4L2xpYi9wbG90L2V4YW1wbGVzL2Rl bW8ucHkgYi93eC9saWIvcGxvdC9leGFtcGxlcy9kZW1vLnB5CisraW5kZXggOThmYmFhZDNhLi4w MmJlYzFkOWYgMTAwNjQ0CisrLS0tIGEvd3gvbGliL3Bsb3QvZXhhbXBsZXMvZGVtby5weQorKysr KyBiL3d4L2xpYi9wbG90L2V4YW1wbGVzL2RlbW8ucHkKKytAQCAtOTg0LDcgKzk4NCw3IEBAIGRl ZiBEcmF3UG9pbnRMYWJlbChzZWxmLCBkYywgbURhdGFEaWN0KToKKysgCisrICAgICAgICAgc3gs IHN5ID0gbURhdGFEaWN0WyJzY2FsZWRYWSJdICAjIHNjYWxlZCB4LHkgb2YgY2xvc2VzdCBwb2lu dAorKyAgICAgICAgICMgMTBieTEwIHNxdWFyZSBjZW50ZXJlZCBvbiBwb2ludAorKy0gICAgICAg IGRjLkRyYXdSZWN0YW5nbGUoc3ggLSA1LCBzeSAtIDUsIDEwLCAxMCkKKysrICAgICAgICBkYy5E cmF3UmVjdGFuZ2xlKGludChzeCAtIDUpLCBpbnQoc3kgLSA1KSwgMTAsIDEwKQorKyAgICAgICAg IHB4LCBweSA9IG1EYXRhRGljdFsicG9pbnRYWSJdCisrICAgICAgICAgY051bSA9IG1EYXRhRGlj dFsiY3VydmVOdW0iXQorKyAgICAgICAgIHBudEluID0gbURhdGFEaWN0WyJwSW5kZXgiXQorK0BA IC05OTIsNyArOTkyLDcgQEAgZGVmIERyYXdQb2ludExhYmVsKHNlbGYsIGRjLCBtRGF0YURpY3Qp OgorKyAgICAgICAgICMgbWFrZSBhIHN0cmluZyB0byBkaXNwbGF5CisrICAgICAgICAgcyA9ICJD cnYjICVpLCAnJXMnLCBQdC4gKCUuMmYsJS4yZiksIFB0SW5kICVpIiAlICgKKysgICAgICAgICAg ICAgY051bSwgbGVnZW5kLCBweCwgcHksIHBudEluKQorKy0gICAgICAgIGRjLkRyYXdUZXh0KHMs IHN4LCBzeSArIDEpCisrKyAgICAgICAgZGMuRHJhd1RleHQocywgaW50KHN4KSwgaW50KHN5ICsg MSkpCisrIAorKyAKKysgZGVmIHJ1bl9kZW1vKCk6CisrZGlmZiAtLWdpdCBhL3d4L2xpYi9wbG90 L3Bsb3RjYW52YXMucHkgYi93eC9saWIvcGxvdC9wbG90Y2FudmFzLnB5CisraW5kZXggZGQzZjc3 ZDUyLi5hYmVlNDdlZmIgMTAwNjQ0CisrLS0tIGEvd3gvbGliL3Bsb3QvcGxvdGNhbnZhcy5weQor KysrKyBiL3d4L2xpYi9wbG90L3Bsb3RjYW52YXMucHkKKytAQCAtMTc0LDI0ICsxNzQsMjQgQEAg ZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgaWQ9d3guSURfQU5ZLCBwb3M9d3guRGVmYXVsdFBv c2l0aW9uLAorKyAKKysgICAgICAgICAjIERlZmF1bHQgUGVucworKyAgICAgICAgIHNlbGYuX2dy aWRQZW4gPSB3eC5QZW4od3guQ29sb3VyKDE4MCwgMTgwLCAxODAsIDI1NSksCisrLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb2ludFNpemVbMF0sCisrKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi5fcG9pbnRTaXplWzBdKSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHd4LlBFTlNUWUxFX0RPVCkKKysgCisrICAgICAgICAgc2Vs Zi5fY2VudGVyTGluZVBlbiA9IHd4LlBlbih3eC5SRUQsCisrLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLl9wb2ludFNpemVbMF0sCisrKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi5fcG9pbnRTaXplWzBdKSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4LlBFTlNUWUxFX1NIT1JUX0RBU0gpCisrIAor KyAgICAgICAgIHNlbGYuX2F4ZXNQZW4gPSB3eC5QZW4od3guQkxBQ0ssCisrLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb2ludFNpemVbMF0sCisrKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQoc2VsZi5fcG9pbnRTaXplWzBdKSwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHd4LlBFTlNUWUxFX1NPTElEKQorKyAKKysgICAgICAgICBzZWxm Ll90aWNrUGVuID0gd3guUGVuKHd4LkJMQUNLLAorKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5fcG9pbnRTaXplWzBdLAorKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50KHNlbGYuX3BvaW50U2l6ZVswXSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB3eC5QRU5TVFlMRV9TT0xJRCkKKysgICAgICAgICBzZWxmLl90aWNrTGVuZ3RoID0gdHVw bGUoLXggKiAyIGZvciB4IGluIHNlbGYuX3BvaW50U2l6ZSkKKysgCisrICAgICAgICAgc2VsZi5f ZGlhZ29uYWxQZW4gPSB3eC5QZW4od3guQkxVRSwKKystICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLl9wb2ludFNpemVbMF0sCisrKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50KHNlbGYuX3BvaW50U2l6ZVswXSksCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgd3guUEVOU1RZTEVfRE9UX0RBU0gpCisrIAorKyAgICAgZGVmIFNl dEN1cnNvcihzZWxmLCBjdXJzb3IpOgorK0BAIC0xOTI1LDEwICsxOTI1LDEwIEBAIGRlZiBfRHJh dyhzZWxmLCBncmFwaGljcywgeEF4aXM9Tm9uZSwgeUF4aXM9Tm9uZSwgZGM9Tm9uZSk6CisrICAg ICAgICAgIyBzZXQgY2xpcHBpbmcgYXJlYSBzbyBkcmF3aW5nIGRvZXMgbm90IG9jY3VyIG91dHNp ZGUgYXhpcyBib3gKKysgICAgICAgICBwdHgsIHB0eSwgcmVjdFdpZHRoLCByZWN0SGVpZ2h0ID0g c2VsZi5fcG9pbnQyQ2xpZW50Q29vcmQocDEsIHAyKQorKyAgICAgICAgICMgYWxsb3cgZ3JhcGgg dG8gb3ZlcmxhcCBheGlzIGxpbmVzIGJ5IGFkZGluZyB1bml0cyB0byB3IGFuZCBoCisrLSAgICAg ICAgZGMuU2V0Q2xpcHBpbmdSZWdpb24ocHR4ICogc2VsZi5fcG9pbnRTaXplWzBdLAorKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHB0eSAqIHNlbGYuX3BvaW50U2l6ZVsxXSwKKystICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0V2lkdGggKiBzZWxmLl9wb2ludFNpemVbMF0g KyAyLAorKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3RIZWlnaHQgKiBzZWxmLl9w b2ludFNpemVbMV0gKyAxKQorKysgICAgICAgIGRjLlNldENsaXBwaW5nUmVnaW9uKGludChwdHgg KiBzZWxmLl9wb2ludFNpemVbMF0pLAorKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dChwdHkgKiBzZWxmLl9wb2ludFNpemVbMV0pLAorKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludChyZWN0V2lkdGggKiBzZWxmLl9wb2ludFNpemVbMF0gKyAyKSwKKysrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQocmVjdEhlaWdodCAqIHNlbGYuX3BvaW50U2l6ZVsxXSAr IDEpKQorKyAgICAgICAgICMgRHJhdyB0aGUgbGluZXMgYW5kIG1hcmtlcnMKKysgIyAgICAgICAg c3RhcnQgPSBfdGltZS5wZXJmX2NvdW50ZXIoKQorKyAgICAgICAgIGdyYXBoaWNzLmRyYXcoZGMp CisrQEAgLTIyODAsNyArMjI4MCw3IEBAIGRlZiBfZHJhd0xlZ2VuZChzZWxmLCBkYywgZ3JhcGhp Y3MsIHJoc1csIHRvcEgsIGxlZ2VuZEJveFdILAorKyAgICAgICAgICAgICBwbnQgPSAoKHRyaGNb MF0gKyBsZWdlbmRMSFMgKyBsZWdlbmRTeW1FeHRbMF0KKysgICAgICAgICAgICAgICAgICAgICAr IDUgKiBzZWxmLl9wb2ludFNpemVbMF0pLAorKyAgICAgICAgICAgICAgICAgICAgdHJoY1sxXSAr IHMgKyBsaW5lSGVpZ2h0IC8gMi4gLSBsZWdlbmRUZXh0RXh0WzFdIC8gMikKKystICAgICAgICAg ICAgZGMuRHJhd1RleHQoby5nZXRMZWdlbmQoKSwgcG50WzBdLCBwbnRbMV0pCisrKyAgICAgICAg ICAgIGRjLkRyYXdUZXh0KG8uZ2V0TGVnZW5kKCksIGludChwbnRbMF0pLCBpbnQocG50WzFdKSkK KysgICAgICAgICBkYy5TZXRGb250KHNlbGYuX2dldEZvbnQoc2VsZi5fZm9udFNpemVBeGlzKSkg ICMgcmVzZXQKKysgCisrICAgICBkZWYgX3RpdGxlTGFibGVzV0goc2VsZiwgZGMsIGdyYXBoaWNz KToKKytAQCAtMjMyOSw3ICsyMzI5LDcgQEAgZGVmIF9kcmF3UnViYmVyQmFuZChzZWxmLCBjb3Ju ZXIxLCBjb3JuZXIyKToKKysgICAgICAgICBkYy5TZXRQZW4od3guUGVuKHd4LkJMQUNLKSkKKysg ICAgICAgICBkYy5TZXRCcnVzaCh3eC5CcnVzaCh3eC5XSElURSwgd3guQlJVU0hTVFlMRV9UUkFO U1BBUkVOVCkpCisrICAgICAgICAgZGMuU2V0TG9naWNhbEZ1bmN0aW9uKHd4LklOVkVSVCkKKyst ICAgICAgICBkYy5EcmF3UmVjdGFuZ2xlKHB0eCwgcHR5LCByZWN0V2lkdGgsIHJlY3RIZWlnaHQp CisrKyAgICAgICAgZGMuRHJhd1JlY3RhbmdsZShpbnQocHR4KSwgaW50KHB0eSksIGludChyZWN0 V2lkdGgpLCBpbnQocmVjdEhlaWdodCkpCisrICAgICAgICAgZGMuU2V0TG9naWNhbEZ1bmN0aW9u KHd4LkNPUFkpCisrIAorKyAgICAgZGVmIF9nZXRGb250KHNlbGYsIHNpemUpOgorK0BAIC0yNDIz LDcgKzI0MjMsNyBAQCBkZWYgX2RyYXdHcmlkKHNlbGYsIGRjLCBwMSwgcDIsIHNjYWxlLCBzaGlm dCwgeHRpY2tzLCB5dGlja3MpOgorKyAgICAgICAgICMgaW5jcmVhc2VzIHRoaWNrbmVzcyBmb3Ig cHJpbnRpbmcgb25seQorKyAgICAgICAgIHBlbiA9IHNlbGYuZ3JpZFBlbgorKyAgICAgICAgIHBl bldpZHRoID0gc2VsZi5wcmludGVyU2NhbGUgKiBwZW4uR2V0V2lkdGgoKQorKy0gICAgICAgIHBl bi5TZXRXaWR0aChwZW5XaWR0aCkKKysrICAgICAgICBwZW4uU2V0V2lkdGgoaW50KHBlbldpZHRo KSkKKysgICAgICAgICBkYy5TZXRQZW4ocGVuKQorKyAKKysgICAgICAgICB4LCB5LCB3aWR0aCwg aGVpZ2h0ID0gc2VsZi5fcG9pbnQyQ2xpZW50Q29vcmQocDEsIHAyKQorK0BAIC0yNDMyLDEzICsy NDMyLDEzIEBAIGRlZiBfZHJhd0dyaWQoc2VsZiwgZGMsIHAxLCBwMiwgc2NhbGUsIHNoaWZ0LCB4 dGlja3MsIHl0aWNrcyk6CisrICAgICAgICAgICAgIGlmIHNlbGYuZW5hYmxlR3JpZFswXToKKysg ICAgICAgICAgICAgICAgIGZvciB4LCBfIGluIHh0aWNrczoKKysgICAgICAgICAgICAgICAgICAg ICBwdCA9IHNjYWxlX2FuZF9zaGlmdF9wb2ludCh4LCBwMVsxXSwgc2NhbGUsIHNoaWZ0KQorKy0g ICAgICAgICAgICAgICAgICAgIGRjLkRyYXdMaW5lKHB0WzBdLCBwdFsxXSwgcHRbMF0sIHB0WzFd IC0gaGVpZ2h0KQorKysgICAgICAgICAgICAgICAgICAgIGRjLkRyYXdMaW5lKGludChwdFswXSks IGludChwdFsxXSksIGludChwdFswXSksIGludChwdFsxXSAtIGhlaWdodCkpCisrIAorKyAgICAg ICAgIGlmIHNlbGYuX3lTcGVjICE9ICdub25lJzoKKysgICAgICAgICAgICAgaWYgc2VsZi5lbmFi bGVHcmlkWzFdOgorKyAgICAgICAgICAgICAgICAgZm9yIHksIGxhYmVsIGluIHl0aWNrczoKKysg ICAgICAgICAgICAgICAgICAgICBwdCA9IHNjYWxlX2FuZF9zaGlmdF9wb2ludChwMVswXSwgeSwg c2NhbGUsIHNoaWZ0KQorKy0gICAgICAgICAgICAgICAgICAgIGRjLkRyYXdMaW5lKHB0WzBdLCBw dFsxXSwgcHRbMF0gKyB3aWR0aCwgcHRbMV0pCisrKyAgICAgICAgICAgICAgICAgICAgZGMuRHJh d0xpbmUoaW50KHB0WzBdKSwgaW50KHB0WzFdKSwgaW50KHB0WzBdICsgd2lkdGgpLCBpbnQocHRb MV0pKQorKyAKKysgICAgIEBUZW1wU3R5bGUoJ3BlbicpCisrICAgICBkZWYgX2RyYXdUaWNrcyhz ZWxmLCBkYywgcDEsIHAyLCBzY2FsZSwgc2hpZnQsIHh0aWNrcywgeXRpY2tzKToKKytAQCAtMjQ3 MSw3ICsyNDcxLDcgQEAgZGVmIF9kcmF3VGlja3Moc2VsZiwgZGMsIHAxLCBwMiwgc2NhbGUsIHNo aWZ0LCB4dGlja3MsIHl0aWNrcyk6CisrICAgICAgICAgIyBpbmNyZWFzZXMgdGhpY2tuZXNzIGZv ciBwcmludGluZyBvbmx5CisrICAgICAgICAgcGVuID0gc2VsZi50aWNrUGVuCisrICAgICAgICAg cGVuV2lkdGggPSBzZWxmLnByaW50ZXJTY2FsZSAqIHBlbi5HZXRXaWR0aCgpCisrLSAgICAgICAg cGVuLlNldFdpZHRoKHBlbldpZHRoKQorKysgICAgICAgIHBlbi5TZXRXaWR0aChpbnQocGVuV2lk dGgpKQorKyAgICAgICAgIGRjLlNldFBlbihwZW4pCisrIAorKyAgICAgICAgICMgbGVuZ3RoZW4g bGluZXMgZm9yIHByaW50aW5nCisrQEAgLTI0ODQsMTMgKzI0ODQsMTMgQEAgZGVmIF9kcmF3VGlj a3Moc2VsZiwgZGMsIHAxLCBwMiwgc2NhbGUsIHNoaWZ0LCB4dGlja3MsIHl0aWNrcyk6CisrICAg ICAgICAgICAgICAgICBsaW5lcyA9IFtdCisrICAgICAgICAgICAgICAgICBmb3IgeCwgbGFiZWwg aW4geHRpY2tzOgorKyAgICAgICAgICAgICAgICAgICAgIHB0ID0gc2NhbGVfYW5kX3NoaWZ0X3Bv aW50KHgsIHAxWzFdLCBzY2FsZSwgc2hpZnQpCisrLSAgICAgICAgICAgICAgICAgICAgbGluZXMu YXBwZW5kKChwdFswXSwgcHRbMV0sIHB0WzBdLCBwdFsxXSAtIHhUaWNrTGVuZ3RoKSkKKysrICAg ICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoKGludChwdFswXSksIGludChwdFsxXSksIGlu dChwdFswXSksIGludChwdFsxXSAtIHhUaWNrTGVuZ3RoKSkpCisrICAgICAgICAgICAgICAgICBk Yy5EcmF3TGluZUxpc3QobGluZXMpCisrICAgICAgICAgICAgIGlmIHRpY2tzLnRvcDoKKysgICAg ICAgICAgICAgICAgIGxpbmVzID0gW10KKysgICAgICAgICAgICAgICAgIGZvciB4LCBsYWJlbCBp biB4dGlja3M6CisrICAgICAgICAgICAgICAgICAgICAgcHQgPSBzY2FsZV9hbmRfc2hpZnRfcG9p bnQoeCwgcDJbMV0sIHNjYWxlLCBzaGlmdCkKKystICAgICAgICAgICAgICAgICAgICBsaW5lcy5h cHBlbmQoKHB0WzBdLCBwdFsxXSwgcHRbMF0sIHB0WzFdICsgeFRpY2tMZW5ndGgpKQorKysgICAg ICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgoaW50KHB0WzBdKSwgaW50KHB0WzFdKSwgaW50 KHB0WzBdKSwgaW50KHB0WzFdICsgeFRpY2tMZW5ndGgpKSkKKysgICAgICAgICAgICAgICAgIGRj LkRyYXdMaW5lTGlzdChsaW5lcykKKysgCisrICAgICAgICAgaWYgc2VsZi55U3BlYyAhPSAnbm9u ZSc6CisrQEAgLTI0OTgsMTMgKzI0OTgsMTMgQEAgZGVmIF9kcmF3VGlja3Moc2VsZiwgZGMsIHAx LCBwMiwgc2NhbGUsIHNoaWZ0LCB4dGlja3MsIHl0aWNrcyk6CisrICAgICAgICAgICAgICAgICBs aW5lcyA9IFtdCisrICAgICAgICAgICAgICAgICBmb3IgeSwgbGFiZWwgaW4geXRpY2tzOgorKyAg ICAgICAgICAgICAgICAgICAgIHB0ID0gc2NhbGVfYW5kX3NoaWZ0X3BvaW50KHAxWzBdLCB5LCBz Y2FsZSwgc2hpZnQpCisrLSAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKChwdFswXSwg cHRbMV0sIHB0WzBdICsgeVRpY2tMZW5ndGgsIHB0WzFdKSkKKysrICAgICAgICAgICAgICAgICAg ICBsaW5lcy5hcHBlbmQoKGludChwdFswXSksIGludChwdFsxXSksIGludChwdFswXSArIHlUaWNr TGVuZ3RoKSwgaW50KHB0WzFdKSkpCisrICAgICAgICAgICAgICAgICBkYy5EcmF3TGluZUxpc3Qo bGluZXMpCisrICAgICAgICAgICAgIGlmIHRpY2tzLnJpZ2h0OgorKyAgICAgICAgICAgICAgICAg bGluZXMgPSBbXQorKyAgICAgICAgICAgICAgICAgZm9yIHksIGxhYmVsIGluIHl0aWNrczoKKysg ICAgICAgICAgICAgICAgICAgICBwdCA9IHNjYWxlX2FuZF9zaGlmdF9wb2ludChwMlswXSwgeSwg c2NhbGUsIHNoaWZ0KQorKy0gICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgocHRbMF0s IHB0WzFdLCBwdFswXSAtIHlUaWNrTGVuZ3RoLCBwdFsxXSkpCisrKyAgICAgICAgICAgICAgICAg ICAgbGluZXMuYXBwZW5kKChpbnQocHRbMF0pLCBpbnQocHRbMV0pLCBpbnQocHRbMF0gLSB5VGlj a0xlbmd0aCksIGludChwdFsxXSkpKQorKyAgICAgICAgICAgICAgICAgZGMuRHJhd0xpbmVMaXN0 KGxpbmVzKQorKyAKKysgICAgIEBUZW1wU3R5bGUoJ3BlbicpCisrQEAgLTI1MzEsMjUgKzI1MzEs MjUgQEAgZGVmIF9kcmF3Q2VudGVyTGluZXMoc2VsZiwgZGMsIHAxLCBwMiwgc2NhbGUsIHNoaWZ0 KToKKysgICAgICAgICAjIGluY3JlYXNlcyB0aGlja25lc3MgZm9yIHByaW50aW5nIG9ubHkKKysg ICAgICAgICBwZW4gPSBzZWxmLmNlbnRlckxpbmVQZW4KKysgICAgICAgICBwZW5XaWR0aCA9IHNl bGYucHJpbnRlclNjYWxlICogcGVuLkdldFdpZHRoKCkKKystICAgICAgICBwZW4uU2V0V2lkdGgo cGVuV2lkdGgpCisrKyAgICAgICAgcGVuLlNldFdpZHRoKGludChwZW5XaWR0aCkpCisrICAgICAg ICAgZGMuU2V0UGVuKHBlbikKKysgCisrICAgICAgICAgaWYgc2VsZi5fY2VudGVyTGluZXNFbmFi bGVkIGluICgnSG9yaXpvbnRhbCcsIFRydWUpOgorKyAgICAgICAgICAgICB5MSA9IHNjYWxlWzFd ICogcDFbMV0gKyBzaGlmdFsxXQorKyAgICAgICAgICAgICB5MiA9IHNjYWxlWzFdICogcDJbMV0g KyBzaGlmdFsxXQorKyAgICAgICAgICAgICB5ID0gKHkxIC0geTIpIC8gMi4wICsgeTIKKystICAg ICAgICAgICAgZGMuRHJhd0xpbmUoc2NhbGVbMF0gKiBwMVswXSArIHNoaWZ0WzBdLAorKy0gICAg ICAgICAgICAgICAgICAgICAgICB5LAorKy0gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZVsw XSAqIHAyWzBdICsgc2hpZnRbMF0sCisrLSAgICAgICAgICAgICAgICAgICAgICAgIHkpCisrKyAg ICAgICAgICAgIGRjLkRyYXdMaW5lKGludChzY2FsZVswXSAqIHAxWzBdICsgc2hpZnRbMF0pLAor KysgICAgICAgICAgICAgICAgICAgICAgICBpbnQoeSksCisrKyAgICAgICAgICAgICAgICAgICAg ICAgIGludChzY2FsZVswXSAqIHAyWzBdICsgc2hpZnRbMF0pLAorKysgICAgICAgICAgICAgICAg ICAgICAgICBpbnQoeSkpCisrICAgICAgICAgaWYgc2VsZi5fY2VudGVyTGluZXNFbmFibGVkIGlu ICgnVmVydGljYWwnLCBUcnVlKToKKysgICAgICAgICAgICAgeDEgPSBzY2FsZVswXSAqIHAxWzBd ICsgc2hpZnRbMF0KKysgICAgICAgICAgICAgeDIgPSBzY2FsZVswXSAqIHAyWzBdICsgc2hpZnRb MF0KKysgICAgICAgICAgICAgeCA9ICh4MSAtIHgyKSAvIDIuMCArIHgyCisrLSAgICAgICAgICAg IGRjLkRyYXdMaW5lKHgsCisrLSAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlWzFdICogcDFb MV0gKyBzaGlmdFsxXSwKKystICAgICAgICAgICAgICAgICAgICAgICAgeCwKKystICAgICAgICAg ICAgICAgICAgICAgICAgc2NhbGVbMV0gKiBwMlsxXSArIHNoaWZ0WzFdKQorKysgICAgICAgICAg ICBkYy5EcmF3TGluZShpbnQoeCksCisrKyAgICAgICAgICAgICAgICAgICAgICAgIGludChzY2Fs ZVsxXSAqIHAxWzFdICsgc2hpZnRbMV0pLAorKysgICAgICAgICAgICAgICAgICAgICAgICBpbnQo eCksCisrKyAgICAgICAgICAgICAgICAgICAgICAgIGludChzY2FsZVsxXSAqIHAyWzFdICsgc2hp ZnRbMV0pKQorKyAKKysgICAgIEBUZW1wU3R5bGUoJ3BlbicpCisrICAgICBkZWYgX2RyYXdEaWFn b25hbHMoc2VsZiwgZGMsIHAxLCBwMiwgc2NhbGUsIHNoaWZ0KToKKytAQCAtMjU3NSwxOSArMjU3 NSwxOSBAQCBkZWYgX2RyYXdEaWFnb25hbHMoc2VsZiwgZGMsIHAxLCBwMiwgc2NhbGUsIHNoaWZ0 KToKKysgICAgICAgICAiIiIKKysgICAgICAgICBwZW4gPSBzZWxmLmRpYWdvbmFsUGVuCisrICAg ICAgICAgcGVuV2lkdGggPSBzZWxmLnByaW50ZXJTY2FsZSAqIHBlbi5HZXRXaWR0aCgpCisrLSAg ICAgICAgcGVuLlNldFdpZHRoKHBlbldpZHRoKQorKysgICAgICAgIHBlbi5TZXRXaWR0aChpbnQo cGVuV2lkdGgpKQorKyAgICAgICAgIGRjLlNldFBlbihwZW4pCisrIAorKyAgICAgICAgIGlmIHNl bGYuX2RpYWdvbmFsc0VuYWJsZWQgaW4gKCdCb3R0b21sZWZ0LVRvcHJpZ2h0JywgVHJ1ZSk6Cisr LSAgICAgICAgICAgIGRjLkRyYXdMaW5lKHNjYWxlWzBdICogcDFbMF0gKyBzaGlmdFswXSwKKyst ICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVbMV0gKiBwMVsxXSArIHNoaWZ0WzFdLAorKy0g ICAgICAgICAgICAgICAgICAgICAgICBzY2FsZVswXSAqIHAyWzBdICsgc2hpZnRbMF0sCisrLSAg ICAgICAgICAgICAgICAgICAgICAgIHNjYWxlWzFdICogcDJbMV0gKyBzaGlmdFsxXSkKKysrICAg ICAgICAgICAgZGMuRHJhd0xpbmUoaW50KHNjYWxlWzBdICogcDFbMF0gKyBzaGlmdFswXSksCisr KyAgICAgICAgICAgICAgICAgICAgICAgIGludChzY2FsZVsxXSAqIHAxWzFdICsgc2hpZnRbMV0p LAorKysgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2NhbGVbMF0gKiBwMlswXSArIHNoaWZ0 WzBdKSwKKysrICAgICAgICAgICAgICAgICAgICAgICAgaW50KHNjYWxlWzFdICogcDJbMV0gKyBz aGlmdFsxXSkpCisrICAgICAgICAgaWYgc2VsZi5fZGlhZ29uYWxzRW5hYmxlZCBpbiAoJ0JvdHRv bXJpZ2h0LVRvcGxlZnQnLCBUcnVlKToKKystICAgICAgICAgICAgZGMuRHJhd0xpbmUoc2NhbGVb MF0gKiBwMVswXSArIHNoaWZ0WzBdLAorKy0gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZVsx XSAqIHAyWzFdICsgc2hpZnRbMV0sCisrLSAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlWzBd ICogcDJbMF0gKyBzaGlmdFswXSwKKystICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVbMV0g KiBwMVsxXSArIHNoaWZ0WzFdKQorKysgICAgICAgICAgICBkYy5EcmF3TGluZShpbnQoc2NhbGVb MF0gKiBwMVswXSArIHNoaWZ0WzBdKSwKKysrICAgICAgICAgICAgICAgICAgICAgICAgaW50KHNj YWxlWzFdICogcDJbMV0gKyBzaGlmdFsxXSksCisrKyAgICAgICAgICAgICAgICAgICAgICAgIGlu dChzY2FsZVswXSAqIHAyWzBdICsgc2hpZnRbMF0pLAorKysgICAgICAgICAgICAgICAgICAgICAg ICBpbnQoc2NhbGVbMV0gKiBwMVsxXSArIHNoaWZ0WzFdKSkKKysgCisrICAgICBAVGVtcFN0eWxl KCdwZW4nKQorKyAgICAgZGVmIF9kcmF3QXhlcyhzZWxmLCBkYywgcDEsIHAyLCBzY2FsZSwgc2hp ZnQpOgorK0BAIC0yNjE0LDcgKzI2MTQsNyBAQCBkZWYgX2RyYXdBeGVzKHNlbGYsIGRjLCBwMSwg cDIsIHNjYWxlLCBzaGlmdCk6CisrICAgICAgICAgIyBpbmNyZWFzZXMgdGhpY2tuZXNzIGZvciBw cmludGluZyBvbmx5CisrICAgICAgICAgcGVuID0gc2VsZi5heGVzUGVuCisrICAgICAgICAgcGVu V2lkdGggPSBzZWxmLnByaW50ZXJTY2FsZSAqIHBlbi5HZXRXaWR0aCgpCisrLSAgICAgICAgcGVu LlNldFdpZHRoKHBlbldpZHRoKQorKysgICAgICAgIHBlbi5TZXRXaWR0aChpbnQocGVuV2lkdGgp KQorKyAgICAgICAgIGRjLlNldFBlbihwZW4pCisrIAorKyAgICAgICAgIGF4ZXMgPSBzZWxmLmVu YWJsZUF4ZXMKKytAQCAtMjYyMywyNCArMjYyMywyNCBAQCBkZWYgX2RyYXdBeGVzKHNlbGYsIGRj LCBwMSwgcDIsIHNjYWxlLCBzaGlmdCk6CisrICAgICAgICAgICAgICAgICBsb3dlciwgdXBwZXIg PSBwMVswXSwgcDJbMF0KKysgICAgICAgICAgICAgICAgIGExID0gc2NhbGVfYW5kX3NoaWZ0X3Bv aW50KGxvd2VyLCBwMVsxXSwgc2NhbGUsIHNoaWZ0KQorKyAgICAgICAgICAgICAgICAgYTIgPSBz Y2FsZV9hbmRfc2hpZnRfcG9pbnQodXBwZXIsIHAxWzFdLCBzY2FsZSwgc2hpZnQpCisrLSAgICAg ICAgICAgICAgICBkYy5EcmF3TGluZShhMVswXSwgYTFbMV0sIGEyWzBdLCBhMlsxXSkKKysrICAg ICAgICAgICAgICAgIGRjLkRyYXdMaW5lKGludChhMVswXSksIGludChhMVsxXSksIGludChhMlsw XSksIGludChhMlsxXSkpCisrICAgICAgICAgICAgIGlmIGF4ZXMudG9wOgorKyAgICAgICAgICAg ICAgICAgbG93ZXIsIHVwcGVyID0gcDFbMF0sIHAyWzBdCisrICAgICAgICAgICAgICAgICBhMSA9 IHNjYWxlX2FuZF9zaGlmdF9wb2ludChsb3dlciwgcDJbMV0sIHNjYWxlLCBzaGlmdCkKKysgICAg ICAgICAgICAgICAgIGEyID0gc2NhbGVfYW5kX3NoaWZ0X3BvaW50KHVwcGVyLCBwMlsxXSwgc2Nh bGUsIHNoaWZ0KQorKy0gICAgICAgICAgICAgICAgZGMuRHJhd0xpbmUoYTFbMF0sIGExWzFdLCBh MlswXSwgYTJbMV0pCisrKyAgICAgICAgICAgICAgICBkYy5EcmF3TGluZShpbnQoYTFbMF0pLCBp bnQoYTFbMV0pLCBpbnQoYTJbMF0pLCBpbnQoYTJbMV0pKQorKyAKKysgICAgICAgICBpZiBzZWxm LnlTcGVjICE9ICdub25lJzoKKysgICAgICAgICAgICAgaWYgYXhlcy5sZWZ0OgorKyAgICAgICAg ICAgICAgICAgbG93ZXIsIHVwcGVyID0gcDFbMV0sIHAyWzFdCisrICAgICAgICAgICAgICAgICBh MSA9IHNjYWxlX2FuZF9zaGlmdF9wb2ludChwMVswXSwgbG93ZXIsIHNjYWxlLCBzaGlmdCkKKysg ICAgICAgICAgICAgICAgIGEyID0gc2NhbGVfYW5kX3NoaWZ0X3BvaW50KHAxWzBdLCB1cHBlciwg c2NhbGUsIHNoaWZ0KQorKy0gICAgICAgICAgICAgICAgZGMuRHJhd0xpbmUoYTFbMF0sIGExWzFd LCBhMlswXSwgYTJbMV0pCisrKyAgICAgICAgICAgICAgICBkYy5EcmF3TGluZShpbnQoYTFbMF0p LCBpbnQoYTFbMV0pLCBpbnQoYTJbMF0pLCBpbnQoYTJbMV0pKQorKyAgICAgICAgICAgICBpZiBh eGVzLnJpZ2h0OgorKyAgICAgICAgICAgICAgICAgbG93ZXIsIHVwcGVyID0gcDFbMV0sIHAyWzFd CisrICAgICAgICAgICAgICAgICBhMSA9IHNjYWxlX2FuZF9zaGlmdF9wb2ludChwMlswXSwgbG93 ZXIsIHNjYWxlLCBzaGlmdCkKKysgICAgICAgICAgICAgICAgIGEyID0gc2NhbGVfYW5kX3NoaWZ0 X3BvaW50KHAyWzBdLCB1cHBlciwgc2NhbGUsIHNoaWZ0KQorKy0gICAgICAgICAgICAgICAgZGMu RHJhd0xpbmUoYTFbMF0sIGExWzFdLCBhMlswXSwgYTJbMV0pCisrKyAgICAgICAgICAgICAgICBk Yy5EcmF3TGluZShpbnQoYTFbMF0pLCBpbnQoYTFbMV0pLCBpbnQoYTJbMF0pLCBpbnQoYTJbMV0p KQorKyAKKysgICAgIEBUZW1wU3R5bGUoJ3BlbicpCisrICAgICBkZWYgX2RyYXdBeGVzVmFsdWVz KHNlbGYsIGRjLCBwMSwgcDIsIHNjYWxlLCBzaGlmdCwgeHRpY2tzLCB5dGlja3MpOgorK0BAIC0y Njg2LDggKzI2ODYsOCBAQCBkZWYgX2RyYXdBeGVzVmFsdWVzKHNlbGYsIGRjLCBwMSwgcDIsIHNj YWxlLCBzaGlmdCwgeHRpY2tzLCB5dGlja3MpOgorKyAgICAgICAgICAgICAgICAgICAgIHcgPSBk Yy5HZXRUZXh0RXh0ZW50KGxhYmVsKVswXQorKyAgICAgICAgICAgICAgICAgICAgIHB0ID0gc2Nh bGVfYW5kX3NoaWZ0X3BvaW50KHgsIHAxWzFdLCBzY2FsZSwgc2hpZnQpCisrICAgICAgICAgICAg ICAgICAgICAgY29vcmRzLmFwcGVuZCgKKystICAgICAgICAgICAgICAgICAgICAgICAgKHB0WzBd IC0gdy8yLAorKy0gICAgICAgICAgICAgICAgICAgICAgICAgcHRbMV0gKyAyICogc2VsZi5fcG9p bnRTaXplWzFdIC0geFRpY2tMZW5ndGgpCisrKyAgICAgICAgICAgICAgICAgICAgICAgIChpbnQo cHRbMF0gLSB3LzIpLAorKysgICAgICAgICAgICAgICAgICAgICAgICAgaW50KHB0WzFdICsgMiAq IHNlbGYuX3BvaW50U2l6ZVsxXSAtIHhUaWNrTGVuZ3RoKSkKKysgICAgICAgICAgICAgICAgICAg ICApCisrICAgICAgICAgICAgICAgICBkYy5EcmF3VGV4dExpc3QobGFiZWxzLCBjb29yZHMpCisr IAorK0BAIC0yNjk4LDggKzI2OTgsOCBAQCBkZWYgX2RyYXdBeGVzVmFsdWVzKHNlbGYsIGRjLCBw MSwgcDIsIHNjYWxlLCBzaGlmdCwgeHRpY2tzLCB5dGlja3MpOgorKyAgICAgICAgICAgICAgICAg ICAgIHcsIGggPSBkYy5HZXRUZXh0RXh0ZW50KGxhYmVsKQorKyAgICAgICAgICAgICAgICAgICAg IHB0ID0gc2NhbGVfYW5kX3NoaWZ0X3BvaW50KHgsIHAyWzFdLCBzY2FsZSwgc2hpZnQpCisrICAg ICAgICAgICAgICAgICAgICAgY29vcmRzLmFwcGVuZCgKKystICAgICAgICAgICAgICAgICAgICAg ICAgKHB0WzBdIC0gdy8yLAorKy0gICAgICAgICAgICAgICAgICAgICAgICAgcHRbMV0gLSAyICog c2VsZi5fcG9pbnRTaXplWzFdIC0gaCAtIHhUaWNrTGVuZ3RoKQorKysgICAgICAgICAgICAgICAg ICAgICAgICAoaW50KHB0WzBdIC0gdy8yKSwKKysrICAgICAgICAgICAgICAgICAgICAgICAgIGlu dChwdFsxXSAtIDIgKiBzZWxmLl9wb2ludFNpemVbMV0gLSBoIC0geFRpY2tMZW5ndGgpKQorKyAg ICAgICAgICAgICAgICAgICAgICkKKysgICAgICAgICAgICAgICAgIGRjLkRyYXdUZXh0TGlzdChs YWJlbHMsIGNvb3JkcykKKysgCisrQEAgLTI3MTIsOCArMjcxMiw4IEBAIGRlZiBfZHJhd0F4ZXNW YWx1ZXMoc2VsZiwgZGMsIHAxLCBwMiwgc2NhbGUsIHNoaWZ0LCB4dGlja3MsIHl0aWNrcyk6Cisr ICAgICAgICAgICAgICAgICAgICAgdyA9IGRjLkdldFRleHRFeHRlbnQobGFiZWwpWzBdCisrICAg ICAgICAgICAgICAgICAgICAgcHQgPSBzY2FsZV9hbmRfc2hpZnRfcG9pbnQocDFbMF0sIHksIHNj YWxlLCBzaGlmdCkKKysgICAgICAgICAgICAgICAgICAgICBjb29yZHMuYXBwZW5kKAorKy0gICAg ICAgICAgICAgICAgICAgICAgICAocHRbMF0gLSB3IC0gMyAqIHNlbGYuX3BvaW50U2l6ZVswXSAr IHlUaWNrTGVuZ3RoLAorKy0gICAgICAgICAgICAgICAgICAgICAgICAgcHRbMV0gLSAwLjUgKiBo KQorKysgICAgICAgICAgICAgICAgICAgICAgICAoaW50KHB0WzBdIC0gdyAtIDMgKiBzZWxmLl9w b2ludFNpemVbMF0gKyB5VGlja0xlbmd0aCksCisrKyAgICAgICAgICAgICAgICAgICAgICAgICBp bnQocHRbMV0gLSAwLjUgKiBoKSkKKysgICAgICAgICAgICAgICAgICAgICApCisrICAgICAgICAg ICAgICAgICBkYy5EcmF3VGV4dExpc3QobGFiZWxzLCBjb29yZHMpCisrIAorK0BAIC0yNzI1LDgg KzI3MjUsOCBAQCBkZWYgX2RyYXdBeGVzVmFsdWVzKHNlbGYsIGRjLCBwMSwgcDIsIHNjYWxlLCBz aGlmdCwgeHRpY2tzLCB5dGlja3MpOgorKyAgICAgICAgICAgICAgICAgICAgIHcgPSBkYy5HZXRU ZXh0RXh0ZW50KGxhYmVsKVswXQorKyAgICAgICAgICAgICAgICAgICAgIHB0ID0gc2NhbGVfYW5k X3NoaWZ0X3BvaW50KHAyWzBdLCB5LCBzY2FsZSwgc2hpZnQpCisrICAgICAgICAgICAgICAgICAg ICAgY29vcmRzLmFwcGVuZCgKKystICAgICAgICAgICAgICAgICAgICAgICAgKHB0WzBdICsgMyAq IHNlbGYuX3BvaW50U2l6ZVswXSArIHlUaWNrTGVuZ3RoLAorKy0gICAgICAgICAgICAgICAgICAg ICAgICAgcHRbMV0gLSAwLjUgKiBoKQorKysgICAgICAgICAgICAgICAgICAgICAgICAoaW50KHB0 WzBdICsgMyAqIHNlbGYuX3BvaW50U2l6ZVswXSArIHlUaWNrTGVuZ3RoKSwKKysrICAgICAgICAg ICAgICAgICAgICAgICAgIGludChwdFsxXSAtIDAuNSAqIGgpKQorKyAgICAgICAgICAgICAgICAg ICAgICkKKysgICAgICAgICAgICAgICAgIGRjLkRyYXdUZXh0TGlzdChsYWJlbHMsIGNvb3JkcykK KysgCisrQEAgLTI3ODUsNyArMjc4NSw3IEBAIGRlZiBfZHJhd1Bsb3RUaXRsZShzZWxmLCBkYywg Z3JhcGhpY3MsIGxoc1csIHJoc1csIHRpdGxlV0gpOgorKyAgICAgICAgICAgICArIChzZWxmLnBs b3Rib3hfc2l6ZVswXSAtIGxoc1cgLSByaHNXKSAvIDIuIC0gdGl0bGVXSFswXSAvIDIuLAorKyAg ICAgICAgICAgICBzZWxmLnBsb3Rib3hfb3JpZ2luWzFdIC0gc2VsZi5wbG90Ym94X3NpemVbMV0K KysgICAgICAgICApCisrLSAgICAgICAgZGMuRHJhd1RleHQoZ3JhcGhpY3MudGl0bGUsIHRpdGxl UG9zWzBdLCB0aXRsZVBvc1sxXSkKKysrICAgICAgICBkYy5EcmF3VGV4dChncmFwaGljcy50aXRs ZSwgaW50KHRpdGxlUG9zWzBdKSwgaW50KHRpdGxlUG9zWzFdKSkKKysgCisrICAgICBkZWYgX2Ry YXdBeGVzTGFiZWxzKHNlbGYsIGRjLCBncmFwaGljcywgbGhzVywgcmhzVywgYm90dG9tSCwgdG9w SCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgeExhYmVsV0gsIHlMYWJlbFdIKToKKytAQCAt MjgwNiw3ICsyODA2LDcgQEAgZGVmIF9kcmF3QXhlc0xhYmVscyhzZWxmLCBkYywgZ3JhcGhpY3Ms IGxoc1csIHJoc1csIGJvdHRvbUgsIHRvcEgsCisrICAgICAgICAgICAgICsgKHNlbGYucGxvdGJv eF9zaXplWzBdIC0gbGhzVyAtIHJoc1cpIC8gMi4gLSB4TGFiZWxXSFswXSAvIDIuLAorKyAgICAg ICAgICAgICBzZWxmLnBsb3Rib3hfb3JpZ2luWzFdIC0geExhYmVsV0hbMV0gLSB5VGlja0xlbmd0 aAorKyAgICAgICAgICkKKystICAgICAgICBkYy5EcmF3VGV4dChncmFwaGljcy54TGFiZWwsIHhM YWJlbFBvc1swXSwgeExhYmVsUG9zWzFdKQorKysgICAgICAgIGRjLkRyYXdUZXh0KGdyYXBoaWNz LnhMYWJlbCwgaW50KHhMYWJlbFBvc1swXSksIGludCh4TGFiZWxQb3NbMV0pKQorKyAgICAgICAg IHlMYWJlbFBvcyA9ICgKKysgICAgICAgICAgICAgc2VsZi5wbG90Ym94X29yaWdpblswXSAtIDMg KiBzZWxmLl9wb2ludFNpemVbMF0gKyB4VGlja0xlbmd0aCwKKysgICAgICAgICAgICAgc2VsZi5w bG90Ym94X29yaWdpblsxXSAtIGJvdHRvbUgKKytAQCAtMjgxNCw3ICsyODE0LDcgQEAgZGVmIF9k cmF3QXhlc0xhYmVscyhzZWxmLCBkYywgZ3JhcGhpY3MsIGxoc1csIHJoc1csIGJvdHRvbUgsIHRv cEgsCisrICAgICAgICAgKQorKyAgICAgICAgIGlmIGdyYXBoaWNzLnlMYWJlbDogICMgYnVnIGZp eCBmb3IgTGludXgKKysgICAgICAgICAgICAgZGMuRHJhd1JvdGF0ZWRUZXh0KAorKy0gICAgICAg ICAgICAgICAgZ3JhcGhpY3MueUxhYmVsLCB5TGFiZWxQb3NbMF0sIHlMYWJlbFBvc1sxXSwgOTAp CisrKyAgICAgICAgICAgICAgICBncmFwaGljcy55TGFiZWwsIGludCh5TGFiZWxQb3NbMF0pLCBp bnQoeUxhYmVsUG9zWzFdKSwgOTApCisrIAorKyAgICAgQFRlbXBTdHlsZSgncGVuJykKKysgICAg IGRlZiBfZHJhd1Bsb3RBcmVhTGFiZWxzKHNlbGYsIGRjLCBncmFwaGljcywgbGhzVywgcmhzVywg dGl0bGVXSCwKKytAQCAtMjk0Miw3ICsyOTQyLDcgQEAgZGVmIF9hZGp1c3RTY3JvbGxiYXJzKHNl bGYpOgorKyAgICAgICAgIGlmIHBvcyA+PSAwOgorKyAgICAgICAgICAgICBwYWdlc2l6ZSA9IGlu dCgocl9jdXJyZW50WzFdIC0gcl9jdXJyZW50WzBdKSAvIHVuaXQpCisrIAorKy0gICAgICAgICAg ICBzZWxmLnNiX2hvci5TZXRTY3JvbGxiYXIocG9zLCBwYWdlc2l6ZSwgc2JmdWxscmFuZ2UsIHBh Z2VzaXplKQorKysgICAgICAgICAgICBzZWxmLnNiX2hvci5TZXRTY3JvbGxiYXIocG9zLCBwYWdl c2l6ZSwgaW50KHNiZnVsbHJhbmdlKSwgcGFnZXNpemUpCisrICAgICAgICAgICAgIHNlbGYuX3Ni X3h1bml0ID0gdW5pdAorKyAgICAgICAgICAgICBuZWVkU2Nyb2xsYmFycyA9IG5lZWRTY3JvbGxi YXJzIG9yIChwYWdlc2l6ZSAhPSBzYmZ1bGxyYW5nZSkKKysgICAgICAgICBlbHNlOgorK0BAIC0y OTY0LDcgKzI5NjQsNyBAQCBkZWYgX2FkanVzdFNjcm9sbGJhcnMoc2VsZik6CisrICAgICAgICAg aWYgcG9zID49IDA6CisrICAgICAgICAgICAgIHBhZ2VzaXplID0gaW50KChyX2N1cnJlbnRbMV0g LSByX2N1cnJlbnRbMF0pIC8gdW5pdCkKKysgICAgICAgICAgICAgcG9zID0gKHNiZnVsbHJhbmdl IC0gMSAtIHBvcyAtIHBhZ2VzaXplKQorKy0gICAgICAgICAgICBzZWxmLnNiX3ZlcnQuU2V0U2Ny b2xsYmFyKHBvcywgcGFnZXNpemUsIHNiZnVsbHJhbmdlLCBwYWdlc2l6ZSkKKysrICAgICAgICAg ICAgc2VsZi5zYl92ZXJ0LlNldFNjcm9sbGJhcihpbnQocG9zKSwgcGFnZXNpemUsIGludChzYmZ1 bGxyYW5nZSksIHBhZ2VzaXplKQorKyAgICAgICAgICAgICBzZWxmLl9zYl95dW5pdCA9IHVuaXQK KysgICAgICAgICAgICAgbmVlZFNjcm9sbGJhcnMgPSBuZWVkU2Nyb2xsYmFycyBvciAocGFnZXNp emUgIT0gc2JmdWxscmFuZ2UpCisrICAgICAgICAgZWxzZToKKytkaWZmIC0tZ2l0IGEvd3gvbGli L3Bsb3QvcG9seW9iamVjdHMucHkgYi93eC9saWIvcGxvdC9wb2x5b2JqZWN0cy5weQorK2luZGV4 IDI2YTU0ZjhmNy4uNzI1YjAxNjRlIDEwMDY0NAorKy0tLSBhL3d4L2xpYi9wbG90L3BvbHlvYmpl Y3RzLnB5CisrKysrIGIvd3gvbGliL3Bsb3QvcG9seW9iamVjdHMucHkKKytAQCAtNDE3LDcgKzQx Nyw3IEBAIGRlZiBkcmF3KHNlbGYsIGRjLCBwcmludGVyU2NhbGUsIGNvb3JkPU5vbmUpOgorKyAK KysgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjb2xvdXIsIHd4LkNvbG91cik6CisrICAgICAg ICAgICAgIGNvbG91ciA9IHd4LkNvbG91cihjb2xvdXIpCisrLSAgICAgICAgcGVuID0gd3guUGVu KGNvbG91ciwgd2lkdGgsIHN0eWxlKQorKysgICAgICAgIHBlbiA9IHd4LlBlbihjb2xvdXIsIGlu dCh3aWR0aCksIHN0eWxlKQorKyAgICAgICAgIHBlbi5TZXRDYXAod3guQ0FQX0JVVFQpCisrICAg ICAgICAgZGMuU2V0UGVuKHBlbikKKysgICAgICAgICBpZiBjb29yZCBpcyBOb25lOgorK0BAIC01 MTgsNyArNTE4LDcgQEAgZGVmIGRyYXcoc2VsZiwgZGMsIHByaW50ZXJTY2FsZSwgY29vcmQ9Tm9u ZSk6CisrICAgICAgICAgc3R5bGUgPSBzZWxmLmF0dHJpYnV0ZXNbJ3N0eWxlJ10KKysgICAgICAg ICBpZiBub3QgaXNpbnN0YW5jZShjb2xvdXIsIHd4LkNvbG91cik6CisrICAgICAgICAgICAgIGNv bG91ciA9IHd4LkNvbG91cihjb2xvdXIpCisrLSAgICAgICAgcGVuID0gd3guUGVuKGNvbG91ciwg d2lkdGgsIHN0eWxlKQorKysgICAgICAgIHBlbiA9IHd4LlBlbihjb2xvdXIsIGludCh3aWR0aCks IHN0eWxlKQorKyAgICAgICAgIHBlbi5TZXRDYXAod3guQ0FQX1JPVU5EKQorKyAgICAgICAgIGRj LlNldFBlbihwZW4pCisrICAgICAgICAgaWYgY29vcmQgaXMgTm9uZToKKytAQCAtNTkwLDcgKzU5 MCw3IEBAIGRlZiBkcmF3KHNlbGYsIGRjLCBwcmludGVyU2NhbGUsIGNvb3JkPU5vbmUpOgorKyAg ICAgICAgIGlmIGZpbGxjb2xvdXIgYW5kIG5vdCBpc2luc3RhbmNlKGZpbGxjb2xvdXIsIHd4LkNv bG91cik6CisrICAgICAgICAgICAgIGZpbGxjb2xvdXIgPSB3eC5Db2xvdXIoZmlsbGNvbG91cikK KysgCisrLSAgICAgICAgZGMuU2V0UGVuKHd4LlBlbihjb2xvdXIsIHdpZHRoKSkKKysrICAgICAg ICBkYy5TZXRQZW4od3guUGVuKGNvbG91ciwgaW50KHdpZHRoKSkpCisrICAgICAgICAgaWYgZmls bGNvbG91cjoKKysgICAgICAgICAgICAgZGMuU2V0QnJ1c2god3guQnJ1c2goZmlsbGNvbG91ciwg ZmlsbHN0eWxlKSkKKysgICAgICAgICBlbHNlOgorK0BAIC02MTgsNiArNjE4LDcgQEAgZGVmIF9j aXJjbGUoc2VsZiwgZGMsIGNvb3Jkcywgc2l6ZT0xKToKKysgICAgICAgICBkYy5EcmF3RWxsaXBz ZUxpc3QocmVjdC5hc3R5cGUobnAuaW50MzIpKQorKyAKKysgICAgIGRlZiBfZG90KHNlbGYsIGRj LCBjb29yZHMsIHNpemU9MSk6CisrKyAgICAgICAgY29vcmRzID0gWyhpbnQoY1swXSksIGludChj WzFdKSkgZm9yIGMgaW4gY29vcmRzXQorKyAgICAgICAgIGRjLkRyYXdQb2ludExpc3QoY29vcmRz KQorKyAKKysgICAgIGRlZiBfc3F1YXJlKHNlbGYsIGRjLCBjb29yZHMsIHNpemU9MSk6CisrQEAg LTY5OSw3ICs3MDAsNyBAQCBkZWYgc2V0X3Blbl9hbmRfYnJ1c2goc2VsZiwgZGMsIHByaW50ZXJT Y2FsZSk6CisrIAorKyAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBlbmNvbG91ciwgd3guQ29s b3VyKToKKysgICAgICAgICAgICAgcGVuY29sb3VyID0gd3guQ29sb3VyKHBlbmNvbG91cikKKyst ICAgICAgICBwZW4gPSB3eC5QZW4ocGVuY29sb3VyLCBwZW53aWR0aCwgcGVuc3R5bGUpCisrKyAg ICAgICAgcGVuID0gd3guUGVuKHBlbmNvbG91ciwgaW50KHBlbndpZHRoKSwgcGVuc3R5bGUpCisr ICAgICAgICAgcGVuLlNldENhcCh3eC5DQVBfQlVUVCkKKysgCisrICAgICAgICAgaWYgbm90IGlz aW5zdGFuY2UoZmlsbGNvbG91ciwgd3guQ29sb3VyKToKKytAQCAtNzkwLDYgKzc5MSw3IEBAIGRl ZiBkcmF3KHNlbGYsIGRjLCBwcmludGVyU2NhbGUsIGNvb3JkPU5vbmUpOgorKyAgICAgICAgICAg ICAgICAgcmFpc2UgVHlwZUVycm9yKGVycl9zdHIuZm9ybWF0KHR5cGUoYmFyd2lkdGgpKSkKKysg CisrICAgICAgICAgICAgIHJlY3RzID0gW3NlbGYuY2FsY19yZWN0KHgsIHksIHcpIGZvciB4LCB5 LCB3IGluIHB0c10KKysrICAgICAgICAgICAgcmVjdHMgPSBbKGludChyWzBdKSwgaW50KHJbMV0p LCBpbnQoclsyXSksIGludChyWzNdKSkgZm9yIHIgaW4gcmVjdHNdCisrICAgICAgICAgICAgIGRj LkRyYXdSZWN0YW5nbGVMaXN0KHJlY3RzKQorKyAgICAgICAgIGVsc2U6CisrICAgICAgICAgICAg IGRjLkRyYXdMaW5lcyhjb29yZCkgICMgZHJhdyBsZWdlbmQgbGluZQorK0BAIC04NTgsNiArODYw LDggQEAgZGVmIGRyYXcoc2VsZiwgZGMsIHByaW50ZXJTY2FsZSwgY29vcmQ9Tm9uZSk6CisrICAg ICAgICAgICAgIHJlY3RzID0gW3NlbGYuY2FsY19yZWN0KHksIGxvdywgaGlnaCkKKysgICAgICAg ICAgICAgICAgICAgICAgZm9yIHksIChsb3csIGhpZ2gpCisrICAgICAgICAgICAgICAgICAgICAg IGluIHppcChzZWxmLmhpc3QsIHNlbGYuYmlucyldCisrKyAgICAgICAgICAgIHJlY3RzID0gWyhp bnQoclswXSksIGludChyWzFdKSwgaW50KHJbMl0pLCBpbnQoclszXSkpCisrKyAgICAgICAgICAg ICAgICAgICAgIGZvciByIGluIHJlY3RzXQorKyAKKysgICAgICAgICAgICAgZGMuRHJhd1JlY3Rh bmdsZUxpc3QocmVjdHMpCisrICAgICAgICAgZWxzZToKKytAQCAtMTExNCwxMCArMTExOCwxMCBA QCBkZWYgX2RyYXdfaXFyX2JveChzZWxmLCBkYywgcHJpbnRlclNjYWxlKToKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnRTaGlmdCkKKysgCisrICAg ICAgICAgIyByZWN0YW5nbGVzIGFyZSBkcmF3biAobGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0KSBz byBhZGp1c3QKKystICAgICAgICBpcXJfYm94ID0gW2lxcl9ib3hbMF1bMF0sICAgICAgICAgICAg ICAgICAgICMgWCAobGVmdCkKKystICAgICAgICAgICAgICAgICAgIGlxcl9ib3hbMF1bMV0sICAg ICAgICAgICAgICAgICAgICMgWSAodG9wKQorKy0gICAgICAgICAgICAgICAgICAgaXFyX2JveFsx XVswXSAtIGlxcl9ib3hbMF1bMF0sICAgIyBXaWR0aAorKy0gICAgICAgICAgICAgICAgICAgaXFy X2JveFsxXVsxXSAtIGlxcl9ib3hbMF1bMV1dICAgIyBIZWlnaHQKKysrICAgICAgICBpcXJfYm94 ID0gW2ludChpcXJfYm94WzBdWzBdKSwgICAgICAgICAgICAgICAgICAgIyBYIChsZWZ0KQorKysg ICAgICAgICAgICAgICAgICAgaW50KGlxcl9ib3hbMF1bMV0pLCAgICAgICAgICAgICAgICAgICAj IFkgKHRvcCkKKysrICAgICAgICAgICAgICAgICAgIGludChpcXJfYm94WzFdWzBdIC0gaXFyX2Jv eFswXVswXSksICAgIyBXaWR0aAorKysgICAgICAgICAgICAgICAgICAgaW50KGlxcl9ib3hbMV1b MV0gLSBpcXJfYm94WzBdWzFdKV0gICAjIEhlaWdodAorKyAKKysgICAgICAgICBib3hfcGVuID0g d3guUGVuKHd4LkJMQUNLLCAzLCB3eC5QRU5TVFlMRV9TT0xJRCkKKysgICAgICAgICBib3hfYnJ1 c2ggPSB3eC5CcnVzaCh3eC5HUkVFTiwgd3guQlJVU0hTVFlMRV9TT0xJRCkKKytAQCAtMTUwMyw3 ICsxNTA3LDcgQEAgZGVmIE9uUHJpbnRQYWdlKHNlbGYsIHBhZ2UpOgorKyAgICAgICAgIHNlbGYu Z3JhcGguX3NldFNpemUocGxvdEFyZWFXLCBwbG90QXJlYUgpCisrIAorKyAgICAgICAgICMgU2V0 IG9mZnNldCBhbmQgc2NhbGUKKystICAgICAgICBkYy5TZXREZXZpY2VPcmlnaW4ocGl4TGVmdCwg cGl4VG9wKQorKysgICAgICAgIGRjLlNldERldmljZU9yaWdpbihpbnQocGl4TGVmdCksIGludChw aXhUb3ApKQorKyAKKysgICAgICAgICAjIFRoaWNrZW4gdXAgcGVucyBhbmQgaW5jcmVhc2UgbWFy a2VyIHNpemUgZm9yIHByaW50aW5nCisrICAgICAgICAgcmF0aW9XID0gZmxvYXQocGxvdEFyZWFX KSAvIGNsaWVudERjU2l6ZVswXQorK2RpZmYgLS1naXQgYS93eC9saWIvcG9wdXBjdGwucHkgYi93 eC9saWIvcG9wdXBjdGwucHkKKytpbmRleCA4ODNiZTVhZTUuLjIzNjUwMWY2ZCAxMDA2NDQKKyst LS0gYS93eC9saWIvcG9wdXBjdGwucHkKKysrKysgYi93eC9saWIvcG9wdXBjdGwucHkKKytAQCAt MTI0LDcgKzEyNCw3IEBAIGRlZiBEaXNwbGF5KHNlbGYpOgorKyAgICAgICAgIHNlbGZTaXplID0g c2VsZi5HZXRTaXplKCkKKysgICAgICAgICB0Y1NpemUgPSBzZWxmLmN0cmwuR2V0U2l6ZSgpCisr IAorKy0gICAgICAgIHBvcy54IC09IChzZWxmU2l6ZS53aWR0aCAtIHRjU2l6ZS53aWR0aCkgLyAy CisrKyAgICAgICAgcG9zLnggLT0gKHNlbGZTaXplLndpZHRoIC0gdGNTaXplLndpZHRoKSAvLyAy CisrICAgICAgICAgaWYgcG9zLnggKyBzZWxmU2l6ZS53aWR0aCA+IGRTaXplLndpZHRoOgorKyAg ICAgICAgICAgICBwb3MueCA9IGRTaXplLndpZHRoIC0gc2VsZlNpemUud2lkdGgKKysgICAgICAg ICBpZiBwb3MueCA8IDA6CisrZGlmZiAtLWdpdCBhL3d4L2xpYi9zY3JvbGxlZHBhbmVsLnB5IGIv d3gvbGliL3Njcm9sbGVkcGFuZWwucHkKKytpbmRleCBlNGM0ODJhZjkuLjFmNzgzZWE5NyAxMDA2 NDQKKystLS0gYS93eC9saWIvc2Nyb2xsZWRwYW5lbC5weQorKysrKyBiL3d4L2xpYi9zY3JvbGxl ZHBhbmVsLnB5CisrQEAgLTIyMiw0ICsyMjIsNCBAQCBkZWYgU2Nyb2xsQ2hpbGRJbnRvVmlldyhz ZWxmLCBjaGlsZCk6CisrICAgICAgICAgIyBpZiB3ZSBuZWVkIHRvIGFkanVzdAorKyAgICAgICAg IGlmIG5ld192c194ICE9IC0xIG9yIG5ld192c195ICE9IC0xOgorKyAgICAgICAgICAgICAjcHJp bnQoIiVzOiAoJXMsICVzKSIgJSAoc2VsZi5HZXROYW1lKCksIG5ld192c194LCBuZXdfdnNfeSkp CisrLSAgICAgICAgICAgIHNlbGYuU2Nyb2xsKG5ld192c194LCBuZXdfdnNfeSkKKysrICAgICAg ICAgICAgc2VsZi5TY3JvbGwoaW50KG5ld192c194KSwgaW50KG5ld192c195KSkKKytkaWZmIC0t Z2l0IGEvd3gvbGliL3Rocm9iYmVyLnB5IGIvd3gvbGliL3Rocm9iYmVyLnB5CisraW5kZXggOTk1 NGQ2YjI3Li5lZThjNTEyMDkgMTAwNjQ0CisrLS0tIGEvd3gvbGliL3Rocm9iYmVyLnB5CisrKysr IGIvd3gvbGliL3Rocm9iYmVyLnB5CisrQEAgLTIwMCwxMSArMjAwLDExIEBAIGRlZiBEcmF3KHNl bGYsIGRjKToKKysgICAgICAgICAiIiIKKysgICAgICAgICBkYy5EcmF3Qml0bWFwKHNlbGYuc3Vi bWFwc1tzZWxmLnNlcXVlbmNlW3NlbGYuY3VycmVudF1dLCAwLCAwLCBUcnVlKQorKyAgICAgICAg IGlmIHNlbGYub3ZlcmxheSBhbmQgc2VsZi5zaG93T3ZlcmxheToKKystICAgICAgICAgICAgZGMu RHJhd0JpdG1hcChzZWxmLm92ZXJsYXksIHNlbGYub3ZlcmxheVgsIHNlbGYub3ZlcmxheVksIFRy dWUpCisrKyAgICAgICAgICAgIGRjLkRyYXdCaXRtYXAoc2VsZi5vdmVybGF5LCBpbnQoc2VsZi5v dmVybGF5WCksIGludChzZWxmLm92ZXJsYXlZKSwgVHJ1ZSkKKysgICAgICAgICBpZiBzZWxmLmxh YmVsIGFuZCBzZWxmLnNob3dMYWJlbDoKKystICAgICAgICAgICAgZGMuRHJhd1RleHQoc2VsZi5s YWJlbCwgc2VsZi5sYWJlbFgsIHNlbGYubGFiZWxZKQorKysgICAgICAgICAgICBkYy5EcmF3VGV4 dChzZWxmLmxhYmVsLCBpbnQoc2VsZi5sYWJlbFgpLCBpbnQoc2VsZi5sYWJlbFkpKQorKyAgICAg ICAgICAgICBkYy5TZXRUZXh0Rm9yZWdyb3VuZCh3eC5XSElURSkKKystICAgICAgICAgICAgZGMu RHJhd1RleHQoc2VsZi5sYWJlbCwgc2VsZi5sYWJlbFgtMSwgc2VsZi5sYWJlbFktMSkKKysrICAg ICAgICAgICAgZGMuRHJhd1RleHQoc2VsZi5sYWJlbCwgaW50KHNlbGYubGFiZWxYLTEpLCBpbnQo c2VsZi5sYWJlbFktMSkpCisrIAorKyAKKysgICAgIGRlZiBPblBhaW50KHNlbGYsIGV2ZW50KToK KytkaWZmIC0tZ2l0IGEvd3gvbGliL3RpY2tlci5weSBiL3d4L2xpYi90aWNrZXIucHkKKytpbmRl eCAwNGFiZjBkNDQuLjRlNjg0YjRjZCAxMDA2NDQKKystLS0gYS93eC9saWIvdGlja2VyLnB5Cisr KysrIGIvd3gvbGliL3RpY2tlci5weQorK0BAIC04Niw3ICs4Niw3IEBAIGRlZiBTdG9wKHNlbGYp OgorKyAgICAgZGVmIFN0YXJ0KHNlbGYpOgorKyAgICAgICAgICIiIlN0YXJ0cyB0aGUgdGV4dCBt b3ZpbmciIiIKKysgICAgICAgICBpZiBub3Qgc2VsZi50aW1lci5Jc1J1bm5pbmcoKToKKystICAg ICAgICAgICAgc2VsZi50aW1lci5TdGFydCgxMDAwIC8gc2VsZi5fZnBzKQorKysgICAgICAgICAg ICBzZWxmLnRpbWVyLlN0YXJ0KDEwMDAgLy8gc2VsZi5fZnBzKQorKyAKKysgCisrICAgICBkZWYg SXNUaWNraW5nKHNlbGYpOgorK0BAIC0yMDgsNyArMjA4LDcgQEAgZGVmIERyYXdUZXh0KHNlbGYs IGRjKToKKysgICAgICAgICAgICAgb2ZmeCA9IHNlbGYuX29mZnNldCAtIHNlbGYuX2V4dGVudFsw XQorKyAgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgIG9mZnggPSBzZWxmLkdldFNpemUoKVsw XSAtIHNlbGYuX29mZnNldAorKy0gICAgICAgIG9mZnkgPSAoc2VsZi5HZXRTaXplKClbMV0gLSBz ZWxmLl9leHRlbnRbMV0pIC8gMiAjY2VudGVyZWQgdmVydGljYWxseQorKysgICAgICAgIG9mZnkg PSAoc2VsZi5HZXRTaXplKClbMV0gLSBzZWxmLl9leHRlbnRbMV0pIC8vIDIgI2NlbnRlcmVkIHZl cnRpY2FsbHkKKysgICAgICAgICBkYy5EcmF3VGV4dChzZWxmLl90ZXh0LCBvZmZ4LCBvZmZ5KQor KyAKKysgCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvd3hQeXRob240L3BhdGNoZXMvMDAwMy1QeXRo b24tMy4xMC1BR1ctRmxhdE5vdGVib29rLnBhdGNoIGIvc3JjcGtncy93eFB5dGhvbjQvcGF0Y2hl cy8wMDAzLVB5dGhvbi0zLjEwLUFHVy1GbGF0Tm90ZWJvb2sucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44OGMzY2ExODk2NDcKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmNwa2dzL3d4UHl0aG9uNC9wYXRjaGVzLzAwMDMtUHl0aG9uLTMuMTAtQUdXLUZsYXROb3Rl Ym9vay5wYXRjaApAQCAtMCwwICsxLDU3IEBACitGcm9tIDFkNWZkNzJkZmY2M2Q2MmRkMTliNzdl NDg5ZDQxMTUyNDVkNGQ0NTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTY290dCBU YWxiZXJ0IDxzd3RAdGVjaGllLm5ldD4KK0RhdGU6IERlYyAyOCAyMDIxIDAyOjU4OjEyICswMDAw CitTdWJqZWN0OiBGaXggbW9yZSBQeXRob24gMy4xMCBpc3N1ZXMgd2l0aCBBR1cgRmxhdE5vdGVi b29rICgjMjAzNTc5MCkKKworCistLS0KKworZGlmZiAtLWdpdCBhL2FhM2RjYTBlNDBiZDA3MDFl ODJjZTQwMjk3YTk4MmI1Yjg0ODQ0ZGMucGF0Y2ggYi9hYTNkY2EwZTQwYmQwNzAxZTgyY2U0MDI5 N2E5ODJiNWI4NDg0NGRjLnBhdGNoCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAw MC4uZThiNzRhYworLS0tIC9kZXYvbnVsbAorKysrIGIvYWEzZGNhMGU0MGJkMDcwMWU4MmNlNDAy OTdhOTgyYjViODQ4NDRkYy5wYXRjaAorQEAgLTAsMCArMSw0MyBAQAorK0Zyb20gYWEzZGNhMGU0 MGJkMDcwMWU4MmNlNDAyOTdhOTgyYjViODQ4NDRkYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK KytGcm9tOiBTY290dCBUYWxiZXJ0IDxzd3RAdGVjaGllLm5ldD4KKytEYXRlOiBNb24sIDI3IERl YyAyMDIxIDE5OjQ4OjU1IC0wNTAwCisrU3ViamVjdDogW1BBVENIXSBGaXggYWRkaXRpb25hbCBQ eXRob24gMy4xMCBpc3N1ZXMgd2l0aCBBR1cgRmxhdE5vdGVib29rCisrCisrLS0tCisrIHd4L2xp Yi9hZ3cvZmxhdG5vdGVib29rLnB5IHwgMTQgKysrKysrKy0tLS0tLS0KKysgMSBmaWxlIGNoYW5n ZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKysKKytkaWZmIC0tZ2l0IGEvd3gv bGliL2Fndy9mbGF0bm90ZWJvb2sucHkgYi93eC9saWIvYWd3L2ZsYXRub3RlYm9vay5weQorK2lu ZGV4IGQzM2Y3MWQ1MS4uNjFiYzRlZmIzIDEwMDY0NAorKy0tLSBhL3d4L2xpYi9hZ3cvZmxhdG5v dGVib29rLnB5CisrKysrIGIvd3gvbGliL2Fndy9mbGF0bm90ZWJvb2sucHkKKytAQCAtOTI1LDE0 ICs5MjUsMTQgQEAgZGVmIERyYXdCdXR0b24oZGMsIHJlY3QsIGZvY3VzLCB1cHBlclRhYnMpOgor KyAKKysgICAgIGlmIGZvY3VzOgorKyAgICAgICAgIGlmIHVwcGVyVGFiczoKKystICAgICAgICAg ICAgbGVmdFB0ID0gd3guUG9pbnQocmVjdC54LCByZWN0LnkgKyAocmVjdC5oZWlnaHQgLyAxMCkq OCkKKystICAgICAgICAgICAgcmlnaHRQdCA9IHd4LlBvaW50KHJlY3QueCArIHJlY3Qud2lkdGgg LSAyLCByZWN0LnkgKyAocmVjdC5oZWlnaHQgLyAxMCkqOCkKKysrICAgICAgICAgICAgbGVmdFB0 ID0gd3guUG9pbnQocmVjdC54LCBpbnQocmVjdC55ICsgKHJlY3QuaGVpZ2h0IC8gMTApKjgpKQor KysgICAgICAgICAgICByaWdodFB0ID0gd3guUG9pbnQocmVjdC54ICsgcmVjdC53aWR0aCAtIDIs IGludChyZWN0LnkgKyAocmVjdC5oZWlnaHQgLyAxMCkqOCkpCisrICAgICAgICAgZWxzZToKKyst ICAgICAgICAgICAgbGVmdFB0ID0gd3guUG9pbnQocmVjdC54LCByZWN0LnkgKyAocmVjdC5oZWln aHQgLyAxMCkqNSkKKystICAgICAgICAgICAgcmlnaHRQdCA9IHd4LlBvaW50KHJlY3QueCArIHJl Y3Qud2lkdGggLSAyLCByZWN0LnkgKyAocmVjdC5oZWlnaHQgLyAxMCkqNSkKKysrICAgICAgICAg ICAgbGVmdFB0ID0gd3guUG9pbnQocmVjdC54LCBpbnQocmVjdC55ICsgKHJlY3QuaGVpZ2h0IC8g MTApKjUpKQorKysgICAgICAgICAgICByaWdodFB0ID0gd3guUG9pbnQocmVjdC54ICsgcmVjdC53 aWR0aCAtIDIsIGludChyZWN0LnkgKyAocmVjdC5oZWlnaHQgLyAxMCkqNSkpCisrICAgICBlbHNl OgorKy0gICAgICAgIGxlZnRQdCA9IHd4LlBvaW50KHJlY3QueCwgcmVjdC55ICsgKHJlY3QuaGVp Z2h0IC8gMikpCisrLSAgICAgICAgcmlnaHRQdCA9IHd4LlBvaW50KHJlY3QueCArIHJlY3Qud2lk dGggLSAyLCByZWN0LnkgKyAocmVjdC5oZWlnaHQgLyAyKSkKKysrICAgICAgICBsZWZ0UHQgPSB3 eC5Qb2ludChyZWN0LngsIGludChyZWN0LnkgKyAocmVjdC5oZWlnaHQgLyAyKSkpCisrKyAgICAg ICAgcmlnaHRQdCA9IHd4LlBvaW50KHJlY3QueCArIHJlY3Qud2lkdGggLSAyLCBpbnQocmVjdC55 ICsgKHJlY3QuaGVpZ2h0IC8gMikpKQorKyAKKysgICAgICMgRGVmaW5lIHRoZSB0b3AgcmVnaW9u CisrICAgICB0b3AgPSB3eC5SZWN0KHJlY3QuR2V0VG9wTGVmdCgpLCByaWdodFB0KQorK0BAIC0y NzY2LDcgKzI3NjYsNyBAQCBkZWYgRHJhd1RhYihzZWxmLCBwYWdlQ29udGFpbmVyLCBkYywgcG9z eCwgdGFiSWR4LCB0YWJXaWR0aCwgdGFiSGVpZ2h0LCBidG5TdGF0dQorKyAgICAgICAgIGlmIHBh Z2VUZXh0Q29sb3VyIGlzIG5vdCBOb25lOgorKyAgICAgICAgICAgICBkYy5TZXRUZXh0Rm9yZWdy b3VuZChwYWdlVGV4dENvbG91cikKKysgCisrLSAgICAgICAgZGMuRHJhd1RleHQocGMuR2V0UGFn ZVRleHQodGFiSWR4KSwgcG9zeCArIHRleHRPZmZzZXQsIGltYWdlWUNvb3JkKQorKysgICAgICAg IGRjLkRyYXdUZXh0KHBjLkdldFBhZ2VUZXh0KHRhYklkeCksIGludChwb3N4ICsgdGV4dE9mZnNl dCksIGltYWdlWUNvb3JkKQorKyAKKysgICAgICAgICAjIGRyYXcgJ3gnIG9uIHRhYiAoaWYgZW5h YmxlZCkKKysgICAgICAgICBpZiBwYy5IYXNBR1dGbGFnKEZOQl9YX09OX1RBQikgYW5kIHRhYklk eCA9PSBwYy5HZXRTZWxlY3Rpb24oKToKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvd3hQeXRob240L3Bh dGNoZXMvcmVzdG9yZS1naWwtcHNldWRvZGMucGF0Y2ggYi9zcmNwa2dzL3d4UHl0aG9uNC9wYXRj aGVzL3Jlc3RvcmUtZ2lsLXBzZXVkb2RjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uNmYyMWVjYjdhNzE4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy93 eFB5dGhvbjQvcGF0Y2hlcy9yZXN0b3JlLWdpbC1wc2V1ZG9kYy5wYXRjaApAQCAtMCwwICsxLDUy IEBACitCYWNrcG9ydCBodHRwczovL2dpdGh1Yi5jb20vd3hXaWRnZXRzL1Bob2VuaXgvcHVsbC8x ODQ5CitSZWdhcmRpbmcgc2VnZmF1bHQgYXMgaW4gaHR0cHM6Ly9naXRodWIuY29tL09TR2VvL2dy YXNzL2lzc3Vlcy8xMTIzCisKK0Zyb20gNWNhY2U0N2FhZWNlM2NjNGYyZTZlYTk3ZDdmZDViYjhl ZDMxNmFjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvYmluIER1bm4gPHJvYmlu QGFsbGR1bm4uY29tPgorRGF0ZTogV2VkLCAxOCBOb3YgMjAyMCAxMDo1Mjo1MyAtMDgwMAorU3Vi amVjdDogW1BBVENIXSBSZXN0b3JlIEdJTCBhY3F1aXNpdGlvbiBpbiB3eFBzZXVkb0RDOjpGaW5k T2JqZWN0cyoKKworLS0tCisgc3JjL3BzZXVkb2RjLmNwcCB8IDggKysrLS0tLS0KKyAxIGZpbGUg Y2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEv c3JjL3BzZXVkb2RjLmNwcCBiL3NyYy9wc2V1ZG9kYy5jcHAKK2luZGV4IDU4OTBlZDdlMi4uZWQ0 YmNkMDZhIDEwMDY0NAorLS0tIGEvc3JjL3BzZXVkb2RjLmNwcAorKysrIGIvc3JjL3BzZXVkb2Rj LmNwcAorQEAgLTQ4Myw3ICs0ODMsNyBAQCBib29sIHd4UHNldWRvREM6OkdldElkR3JleWVkT3V0 KGludCBpZCkKKyAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUHlPYmplY3QgKnd4UHNldWRvREM6 OkZpbmRPYmplY3RzQnlCQm94KHd4Q29vcmQgeCwgd3hDb29yZCB5KQorIHsKKy0gICAgLy93eFB5 QmxvY2tfdCBibG9ja2VkID0gd3hQeUJlZ2luQmxvY2tUaHJlYWRzKCk7CisrICAgIHd4UHlUaHJl YWRCbG9ja2VyIGJsb2NrZXI7CisgICAgIHBkY09iamVjdExpc3Q6OmNvbXBhdGliaWxpdHlfaXRl cmF0b3IgcHQgPSBtX29iamVjdGxpc3QuR2V0Rmlyc3QoKTsKKyAgICAgcGRjT2JqZWN0ICpvYmo7 CisgICAgIFB5T2JqZWN0KiBweUxpc3QgPSBOVUxMOworQEAgLTUwMSw3ICs1MDEsNiBAQCBQeU9i amVjdCAqd3hQc2V1ZG9EQzo6RmluZE9iamVjdHNCeUJCb3god3hDb29yZCB4LCB3eENvb3JkIHkp CisgICAgICAgICB9CisgICAgICAgICBwdCA9IHB0LT5HZXROZXh0KCk7CisgICAgIH0KKy0gICAg Ly93eFB5RW5kQmxvY2tUaHJlYWRzKGJsb2NrZWQpOworICAgICByZXR1cm4gcHlMaXN0OworIH0K KyAKK0BAIC01MTEsNyArNTEwLDcgQEAgUHlPYmplY3QgKnd4UHNldWRvREM6OkZpbmRPYmplY3Rz QnlCQm94KHd4Q29vcmQgeCwgd3hDb29yZCB5KQorIFB5T2JqZWN0ICp3eFBzZXVkb0RDOjpGaW5k T2JqZWN0cyh3eENvb3JkIHgsIHd4Q29vcmQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgd3hDb29yZCByYWRpdXMsIGNvbnN0IHd4Q29sb3ImIGJnKQorIHsKKy0gICAgLy93 eFB5QmxvY2tfdCBibG9ja2VkID0gd3hQeUJlZ2luQmxvY2tUaHJlYWRzKCk7CisrICAgIHd4UHlU aHJlYWRCbG9ja2VyIGJsb2NrZXI7CisgICAgIHBkY09iamVjdExpc3Q6OmNvbXBhdGliaWxpdHlf aXRlcmF0b3IgcHQgPSBtX29iamVjdGxpc3QuR2V0Rmlyc3QoKTsKKyAgICAgcGRjT2JqZWN0ICpv Ymo7CisgICAgIFB5T2JqZWN0KiBweUxpc3QgPSBOVUxMOworQEAgLTYxMSw4ICs2MTAsNyBAQCBQ eU9iamVjdCAqd3hQc2V1ZG9EQzo6RmluZE9iamVjdHMod3hDb29yZCB4LCB3eENvb3JkIHksCisg ICAgICAgICBtYXNrZGMuU2VsZWN0T2JqZWN0KHd4TnVsbEJpdG1hcCk7CisgICAgICAgICBtZW1k Yy5TZWxlY3RPYmplY3Qod3hOdWxsQml0bWFwKTsKKyAgICAgfQorLSAgICAvL3d4UHlFbmRCbG9j a1RocmVhZHMoYmxvY2tlZCk7CistICAgIHJldHVybiBweUxpc3Q7CisrICAgICByZXR1cm4gcHlM aXN0OworIH0KKyAKKyAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmNwa2dz L3d4UHl0aG9uNC90ZW1wbGF0ZSBiL3NyY3BrZ3Mvd3hQeXRob240L3RlbXBsYXRlCmluZGV4IDU1 NDE3NDEwNWEzNi4uYWZlYTFiNTViZjkwIDEwMDY0NAotLS0gYS9zcmNwa2dzL3d4UHl0aG9uNC90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3d4UHl0aG9uNC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3d4UHl0aG9uNCcKIHBrZ25hbWU9d3hQeXRob240CiB2ZXJz aW9uPTQuMC43Ci1yZXZpc2lvbj00CityZXZpc2lvbj01CiB3cmtzcmM9Ind4UHl0aG9uLSR7dmVy c2lvbn0iCiBidWlsZF9zdHlsZT1weXRob24zLW1vZHVsZQogbWFrZV9idWlsZF9hcmdzPSItLXNr aXAtYnVpbGQiCkBAIC0xMCw2ICsxMCw3IEBAIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBw eXRob24zLXNldHVwdG9vbHMgcHl0aG9uMy1wYXRobGliMiIKIG1ha2VkZXBlbmRzPSJweXRob24z LWRldmVsIHd4V2lkZ2V0cy1ndGszLWRldmVsIFNETDItZGV2ZWwgd2Via2l0Mmd0ay1kZXZlbAog IGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsIgogZGVwZW5kcz0icHl0aG9uMyBweXRob24zLXNpeCBw eXRob24zLW51bXB5IHB5dGhvbjMtUGlsbG93IgorY2hlY2tkZXBlbmRzPSJweXRob24zLXNpeCBw eXRob24zLW51bXB5IHB5dGhvbjMtUGlsbG93Igogc2hvcnRfZGVzYz0iV3hXaWRnZXRzIEdVSSB0 b29sa2l0IGxpYnJhcnkgKFB5dGhvbjMgQmluZGluZ3MpIgogbWFpbnRhaW5lcj0iSmFzcGVyIENo YW4gPGphc3BlcmNoYW41MTVAZ21haWwuY29tPiIKIGxpY2Vuc2U9ImN1c3RvbTp3eFdpbmRvd3Mi CgpGcm9tIGI1NTQ3NzQwZTQwOTg3NWNhZTJiOTEwYjNjYzVhZTE0ZmQxYjNiODcgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IEFyamFuIE1vc3NlbCA8YXJqYW5tb3NzZWxAZ21haWwuY29t PgpEYXRlOiBNb24sIDE0IEZlYiAyMDIyIDIxOjU2OjAzICswMTAwClN1YmplY3Q6IFtQQVRDSCAw OS8xNl0gZ3Jhc3M6IHVwZGF0ZSB0byA3LjguN1JDMTsgcmVidWlsZCBhZ2FpbnN0IGxpYmdkYWwg YW5kCiBwcm9qCgpWZXJzaW9uIDcuOC43UkMxIGluY2x1ZGVzIGEgd29ya2Fyb3VuZCBmb3IgYSB3 eFB5dGhvbiBpc3N1ZQpodHRwczovL2dpdGh1Yi5jb20vT1NHZW8vZ3Jhc3MvaXNzdWVzLzE5NzEj aXNzdWVjb21tZW50LTk5MzYyMjYxMwotLS0KIHNyY3BrZ3MvZ3Jhc3MvcGF0Y2hlcy9tdXNsLWJ1 aWxkLWZpeC5wYXRjaCB8ICAxMyArKysKIHNyY3BrZ3MvZ3Jhc3MvdGVtcGxhdGUgICAgICAgICAg ICAgICAgICAgICB8IDEyOCArKysrKysrKysrKysrKysrKy0tLS0KIDIgZmlsZXMgY2hhbmdlZCwg MTIwIGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvZ3Jhc3MvcGF0Y2hlcy9tdXNsLWJ1aWxkLWZpeC5wYXRjaAoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvZ3Jhc3MvcGF0Y2hlcy9tdXNsLWJ1aWxkLWZpeC5wYXRjaCBiL3NyY3BrZ3MvZ3Jhc3Mv cGF0Y2hlcy9tdXNsLWJ1aWxkLWZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLjM2NGVlMzBiZTRkOQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZ3Jh c3MvcGF0Y2hlcy9tdXNsLWJ1aWxkLWZpeC5wYXRjaApAQCAtMCwwICsxLDEzIEBACitlcnJvcjog dW5rbm93biB0eXBlIG5hbWUgJ2ludDY0X3QnIHBhdGNoIGZvciBtdXNsCisKK2RpZmYgLS1naXQg YS9pbmNsdWRlL2dpcy5oIGIvaW5jbHVkZS9naXMuaAorLS0tIGEvaW5jbHVkZS9naXMuaAorKysr IGIvaW5jbHVkZS9naXMuaAorQEAgLTI0LDYgKzI0LDcgQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4K KyAjaW5jbHVkZSA8c3RkYXJnLmg+CisgI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKysjaW5jbHVkZSA8 c3RkaW50Lmg+CisgCisgCisgLyogR3Jhc3MgYW5kIGxvY2FsIGluY2x1ZGUgZmlsZXMgKi8KZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvZ3Jhc3MvdGVtcGxhdGUgYi9zcmNwa2dzL2dyYXNzL3RlbXBsYXRl CmluZGV4IGJjY2Q2OTFhODExNi4uMTY3ZmFhNDAxMzg1IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dy YXNzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3Jhc3MvdGVtcGxhdGUKQEAgLTEsMzAgKzEsMTE2 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdncmFzcycKIHBrZ25hbWU9Z3Jhc3MKLXZlcnNpb249 Ny42LjEKLXJldmlzaW9uPTQKLV9iaW52ZXI9JHt2ZXJzaW9uLy8uL30KLV9iaW52ZXI9JHtfYmlu dmVyOjA6Mn0KK3ZlcnNpb249Ny44LjdSQzEKK3JldmlzaW9uPTEKK19iaW52ZXJzaW9uPSR7dmVy c2lvbi8vLi99CitfYmludmVyc2lvbj0ke19iaW52ZXJzaW9uOjA6Mn0KIGJ1aWxkX3N0eWxlPWdu dS1jb25maWd1cmUKLWNvbmZpZ3VyZV9hcmdzPSItLXByZWZpeD1cJHtERVNURElSfS91c3Ivc2hh cmUgLS1iaW5kaXI9XCR7REVTVERJUn0vdXNyL2JpbgotIC0td2l0aC1mcmVldHlwZS1pbmNsdWRl cz0ke1hCUFNfQ1JPU1NfQkFTRX0vdXNyL2luY2x1ZGUvZnJlZXR5cGUyIgotaG9zdG1ha2VkZXBl bmRzPSJmbGV4IGxpYmdkYWwtdG9vbHMgcGtnLWNvbmZpZyBweXRob24tbnVtcHkgdGFyIgotbWFr ZWRlcGVuZHM9InByb2otZGV2ZWwgdGlmZi1kZXZlbCBsaWJnZGFsLWRldmVsIHNxbGl0ZS1kZXZl bAotIGZmdHctZGV2ZWwgY2Fpcm8tZGV2ZWwgZ2x1LWRldmVsIHd4UHl0aG9uLWRldmVsIgotZGVw ZW5kcz0icHl0aG9uLW51bXB5IHd4UHl0aG9uIgotc2hvcnRfZGVzYz0iR2VvZ3JhcGhpYyBSZXNv dXJjZXMgQW5hbHlzaXMgU3VwcG9ydCBTeXN0ZW0gLSBHSVMiCi1tYWludGFpbmVyPSJBbGV4IEph cm9zY2ggPHJlc2VhcmNoQGFsZXhqLmF0PiIKK2NvbmZpZ3VyZV9hcmdzPSItLXByZWZpeD0vdXNy L2xpYgorIC0tYmluZGlyPS91c3IvYmluCisgLS1saWJkaXI9L3Vzci9saWIKKyAtLWxpYmV4ZWM9 L3Vzci9saWJleGVjCisgLS1lbmFibGUtbGFyZ2VmaWxlCisgLS13aXRoLWJsYXMKKyAtLXdpdGgt Ymxhcy1pbmNsdWRlcz0vdXNyL2luY2x1ZGUKKyAtLXdpdGgtYnppcDIKKyAtLXdpdGgtYnpsaWIK KyAtLXdpdGgtY2Fpcm8KKyAtLXdpdGgtY3h4CisgLS13aXRoLWZyZWV0eXBlCisgLS13aXRoLWZy ZWV0eXBlLWluY2x1ZGVzPS91c3IvaW5jbHVkZS9mcmVldHlwZTIKKyAtLXdpdGgtZ2RhbAorIC0t d2l0aC1nZW9zCisgLS13aXRoLWdsdworIC0td2l0aC1sYXBhY2sKKyAtLXdpdGgtbGFwYWNrLWlu Y2x1ZGVzPS91c3IvaW5jbHVkZQorIC0td2l0aC1teXNxbAorIC0td2l0aC1teXNxbC1pbmNsdWRl cz0vdXNyL2luY2x1ZGUvbXlzcWwKKyAtLXdpdGgtbmV0Y2RmPS91c3IvYmluL25jLWNvbmZpZwor IC0td2l0aC1ubHMKKyAtLXdpdGgtb3Blbm1wCisgLS13aXRoLXBvc3RncmVzCisgLS13aXRoLXBv c3RncmVzLWluY2x1ZGVzPS91c3IvaW5jbHVkZS9wb3N0Z3Jlc3FsCisgLS13aXRoLXBvc3RncmVz LWxpYnM9L3Vzci9saWIvcHNxbDE0L2xpYi9wb3N0Z3Jlc3FsCisgLS13aXRoLXByb2oKKyAtLXdp dGgtcHJvai1zaGFyZT0vdXNyL3NoYXJlCisgLS13aXRoLXB0aHJlYWQKKyAtLXdpdGgtcHl0aG9u PS91c3IvYmluL3B5dGhvbjMtY29uZmlnCisgLS13aXRoLXJlYWRsaW5lCisgLS13aXRoLXJlZ2V4 CisgLS13aXRoLXNxbGl0ZQorIC0td2l0aC13eHdpZGdldHMiCitob3N0bWFrZWRlcGVuZHM9ImZs ZXgKKyBnZXR0ZXh0CisgbGliZ2RhbC10b29scworIHBrZy1jb25maWcKKyBweXRob24zLW51bXB5 CisgcHl0aG9uMy1zaXgKKyB0YXIiCittYWtlZGVwZW5kcz0iYmlzb24KKyBibGFzLWRldmVsCisg YnppcDItZGV2ZWwKKyBjYWlyby1kZXZlbAorIGZmdHctZGV2ZWwKKyBmcmVldHlwZS1kZXZlbAor IGdlb3MtZGV2ZWwKKyBnZXR0ZXh0LWRldmVsCisgZ2x1LWRldmVsCisgbGFwYWNrLWRldmVsCisg bGliZ2RhbC1kZXZlbAorIGxpYmdvbXAtZGV2ZWwKKyBsaWJteXNxbGNsaWVudC1kZXZlbAorIGxp YnBuZy1kZXZlbAorIGxpYnpzdGQtZGV2ZWwKKyBuZXRjZGYtZGV2ZWwKKyBwb3N0Z3Jlc3FsLWxp YnMtZGV2ZWwKKyBwcm9qLWRldmVsCisgcHl0aG9uMy1kZXZlbAorIHB5dGhvbjMtUGlsbG93Cisg cHl0aG9uMy1zaXgKKyByZWFkbGluZS1kZXZlbAorIHNxbGl0ZS1kZXZlbAorIHRpZmYtZGV2ZWwK KyB6bGliLWRldmVsIgorZGVwZW5kcz0ibGliZ2RhbCBweXRob24zLW51bXB5IHd4UHl0aG9uNCIK K3Nob3J0X2Rlc2M9Ikdlb2dyYXBoaWMgUmVzb3VyY2VzIEFuYWx5c2lzIFN1cHBvcnQgU3lzdGVt IgorbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9 IkdQTC0yLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9ncmFzcy5vc2dlby5vcmcvIgot ZGlzdGZpbGVzPSJodHRwczovL2dyYXNzLm9zZ2VvLm9yZy9ncmFzcyR7X2JpbnZlcn0vc291cmNl LyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVja3N1bT05ZTI1Yzk5Y2FmZDE2ZWQ4 ZjVlMmRjYTc1YjVhMTBkYzJhZjA1NjhkYmVkZjNmYzM5ZjFjNWEwYTljODQwYjBiCi1weXRob25f dmVyc2lvbj0yICN1bnZlcmlmaWVkCitkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9PU0dl by9ncmFzcy9hcmNoaXZlLyR7dmVyc2lvbn0udGFyLmd6IgorY2hlY2tzdW09ZmExZDZjY2MxZmRl NGNiZWEwYmUwOTUyNTY3Mjk0MjFjNDFjMWExMmJmNjIxZmUxMjRkMGQyYzhlODI2ZGU2YQogbm9j cm9zcz0idHJpZXMgdG8gZXhlY3V0ZSB0YXJnZXQgYmluYXJpZXMiCiAKK3NobGliX3Byb3ZpZGVz PSIKKyBsaWJncmFzc19kYm1pYmFzZS4ke3ZlcnNpb24lLip9LnNvCisgbGliZ3Jhc3NfZGJtaWNs aWVudC4ke3ZlcnNpb24lLip9LnNvCisgbGliZ3Jhc3NfZ2lzLiR7dmVyc2lvbiUuKn0uc28KKyBs aWJncmFzc19ncHJvai4ke3ZlcnNpb24lLip9LnNvCisgbGliZ3Jhc3NfaW1hZ2VyeS4ke3ZlcnNp b24lLip9LnNvCisgbGliZ3Jhc3NfcmFzdGVyLiR7dmVyc2lvbiUuKn0uc28KKyBsaWJncmFzc192 ZWN0b3IuJHt2ZXJzaW9uJS4qfS5zbyIKKwogcG9zdF9pbnN0YWxsKCkgewotCSMgbW92ZSBncmFz czc2IGxpYnJhcmllcyBmcm9tIC91c3Ivc2hhcmUgdG8gL3Vzci9saWIKLQl2bWtkaXIgdXNyL2xp YgotCW12ICR7REVTVERJUn0vdXNyL3NoYXJlL2dyYXNzKiAke0RFU1RESVJ9L3Vzci9saWIKLQkj IGZpeGVzIGEgdG9kbyBpbiBHSVNCQVNFCi0Jc2VkIC1pICR7REVTVERJUn0vdXNyL2Jpbi9ncmFz cyR7X2JpbnZlcn0gXAotCQktZSAiMTA1cztcKGdpc2Jhc2UgPVwpLio7XDEgXCIvdXNyL2xpYi9n cmFzcy0ke3ZlcnNpb259XCI7IgorCSMgcmVtb3ZlICRERVNURElSIGluIHBhdGhzCisJdnNlZCAt aSAtZSAic3wke0RFU1RESVJ9fHwiIFwKKwkJJHtERVNURElSfS91c3IvYmluL2dyYXNzNzggXAor CQkke0RFU1RESVJ9L3Vzci9saWIvZ3Jhc3M3OC9ldGMvZm9udGNhcCBcCisJCSR7REVTVERJUn0v dXNyL2xpYi9ncmFzczc4L2RlbW9sb2NhdGlvbi8uZ3Jhc3NyYzc4IFwKKwkJJHtERVNURElSfS91 c3IvbGliL2dyYXNzNzgvaW5jbHVkZS9NYWtlL1BsYXRmb3JtLm1ha2UgXAorCQkke0RFU1RESVJ9 L3Vzci9saWIvZ3Jhc3M3OC9pbmNsdWRlL01ha2UvR3Jhc3MubWFrZQorCisJIyBsZC5zby5jb25m CisJbWtkaXIgLXAgJHtERVNURElSfS9ldGMvbGQuc28uY29uZi5kCisJZWNobyAiL3Vzci9saWIv Z3Jhc3Mke19iaW52ZXJzaW9ufS9saWIiID4ke0RFU1RESVJ9L2V0Yy9sZC5zby5jb25mLmQvZ3Jh c3Mke19iaW52ZXJzaW9ufS5jb25mCisJIyBwcm9maWxlcworCW1rZGlyIC1wICR7REVTVERJUn0v ZXRjL3Byb2ZpbGUuZAorCWVjaG8gJ2V4cG9ydCBQQVRIPSIvdXNyL2xpYi9ncmFzcycke19iaW52 ZXJzaW9ufScvYmluOiRQQVRIIicgPiR7REVTVERJUn0vZXRjL3Byb2ZpbGUuZC9ncmFzcyR7X2Jp bnZlcnNpb259LnNoCisKKwl2aW5zdGFsbCBncmFzcy5wYyA2NDQgdXNyL3NoYXJlL3BrZ2NvbmZp ZworCXZpbnN0YWxsIGd1aS9pY29ucy9ncmFzcy5kZXNrdG9wIDY0NCB1c3Ivc2hhcmUvYXBwbGlj YXRpb25zCisKKwlsb2NhbCBpY29uIHJlcworCWZvciBpY29uIGluIGd1aS9pY29ucy9ncmFzcy1b MC05XSp4WzAtOV0qLnBuZzsgZG8KKwkJcmVzPSQoZWNobyAkaWNvbiB8c2VkIC1FIC1lICdzfC4q LShbMC05XSt4WzAtOV0rKS5wbmd8XDF8JykKKwkJdmluc3RhbGwgJGljb24gMDY0NCAvdXNyL3No YXJlL2ljb25zL2hpY29sb3IvJHJlcy9hcHBzIGdyYXNzLnBuZworCWRvbmUKIH0KCkZyb20gNTc4 OGY3NTQzMzlmN2FiMDFmMmU4MTcwM2RhYTAxNWQxMzFkNjUxMyBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogQXJqYW4gTW9zc2VsIDxhcmphbm1vc3NlbEBnbWFpbC5jb20+CkRhdGU6IFN1 biwgMjcgSnVuIDIwMjEgMjI6MTg6NDYgKzAyMDAKU3ViamVjdDogW1BBVENIIDEwLzE2XSBtZXJr YWFydG9yOiByZWJ1aWxkIGFnYWluc3QgbGliZ2RhbC0zLjQuMSBhbmQKIHByb2otNy4yLjEKCi0t LQogc3JjcGtncy9tZXJrYWFydG9yL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tZXJrYWFy dG9yL3RlbXBsYXRlIGIvc3JjcGtncy9tZXJrYWFydG9yL3RlbXBsYXRlCmluZGV4IGNmZmNmYmEx Y2YwMS4uNjYwMzM3NjExMWYyIDEwMDY0NAotLS0gYS9zcmNwa2dzL21lcmthYXJ0b3IvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9tZXJrYWFydG9yL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnbWVya2FhcnRvcicKIHBrZ25hbWU9bWVya2FhcnRvcgogdmVyc2lv bj0wLjE5LjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPXFtYWtlCiBjb25m aWd1cmVfYXJncz0iU1lTVEVNX1FVQVpJUD0xIFNZU1RFTV9RVUFaSVBfTERGTEFHUz0tbHF1YXpp cDUiCiBob3N0bWFrZWRlcGVuZHM9InF0NS1xbWFrZSBsaWJnZGFsLXRvb2xzIHF0NS1ob3N0LXRv b2xzIgoKRnJvbSBhNjUzODY2Zjk2NDE3NmYzOTc0M2Y5NjIwZjJhZGFmOTY4NzlkZmE1IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBcmphbiBNb3NzZWwgPGFyamFubW9zc2VsQGdtYWls LmNvbT4KRGF0ZTogVHVlLCAyOSBKdW4gMjAyMSAwMDoyMToyNyArMDIwMApTdWJqZWN0OiBbUEFU Q0ggMTEvMTZdIE9wZW5PcmllbnRlZXJpbmctTWFwcGVyOiByZWJ1aWxkIGFnYWluc3QgbGliZ2Rh bC0zLjQuMQogYW5kIHByb2otNy4yLjEKCi0tLQogc3JjcGtncy9PcGVuT3JpZW50ZWVyaW5nLU1h cHBlci90ZW1wbGF0ZSB8IDExICsrKysrKysrKy0tCiAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRp b25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvT3Blbk9yaWVudGVl cmluZy1NYXBwZXIvdGVtcGxhdGUgYi9zcmNwa2dzL09wZW5PcmllbnRlZXJpbmctTWFwcGVyL3Rl bXBsYXRlCmluZGV4IGZkMjlhMDhlNzViNi4uNmE2NTJhNmE3Yjk3IDEwMDY0NAotLS0gYS9zcmNw a2dzL09wZW5PcmllbnRlZXJpbmctTWFwcGVyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvT3Blbk9y aWVudGVlcmluZy1NYXBwZXIvdGVtcGxhdGUKQEAgLTEsMTQgKzEsMTUgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ09wZW5PcmllbnRlZXJpbmctTWFwcGVyJwogcGtnbmFtZT1PcGVuT3JpZW50ZWVy aW5nLU1hcHBlcgogdmVyc2lvbj0wLjkuNQotcmV2aXNpb249MQorcmV2aXNpb249Mgogd3Jrc3Jj PSJtYXBwZXItJHt2ZXJzaW9ufSIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9 ImRveHlnZW4gcXQ1LWhvc3QtdG9vbHMgcXQ1LXBsdWdpbi1zcWxpdGUgcXQ1LXFtYWtlIHF0NS10 b29scyIKIG1ha2VkZXBlbmRzPSJxdDUtZGV2ZWwgY2xpcHBlci1kZXZlbCBwcm9qLWRldmVsIHps aWItZGV2ZWwgbGliZ2RhbC1kZXZlbAogIHF0NS10b29scy1kZXZlbCBzcWxpdGUtZGV2ZWwgY3Vw cy1kZXZlbCAkKHZvcHRfaWYgbG9jYXRpb24gcXQ1LWxvY2F0aW9uLWRldmVsKQogICQodm9wdF9p ZiBzZW5zb3JzIHF0NS1zZW5zb3JzLWRldmVsKQotIHF0NS1wbHVnaW4tbXlzcWwgcXQ1LXBsdWdp bi1vZGJjIHF0NS1wbHVnaW4tcGdzcWwgcXQ1LXBsdWdpbi1zcWxpdGUgcXQ1LXBsdWdpbi10ZHMi CisgcXQ1LXBsdWdpbi1teXNxbCBxdDUtcGx1Z2luLW9kYmMgcXQ1LXBsdWdpbi1wZ3NxbCBxdDUt cGx1Z2luLXNxbGl0ZSBxdDUtcGx1Z2luLXRkcworIHRpZmYtZGV2ZWwgbGliY3VybC1kZXZlbCIK IHNob3J0X2Rlc2M9Ik9yaWVudGVlcmluZyBtYXBtYWtpbmcgcHJvZ3JhbSIKIG1haW50YWluZXI9 IkpvaG4gPG1lQGpvaG5ueW5hdG9yLmRldj4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgpA QCAtMTgsMyArMTksOSBAQCBjaGVja3N1bT02MTkxNTJjYTAxYTM3MDg3NWMxNWUxOTMwOTE4Y2U5 NjEyODRjY2JmNWQyMzcxYzE0N2Q1MGNhZjVlNWMyZjAwCiAKIGJ1aWxkX29wdGlvbnM9ImxvY2F0 aW9uIHNlbnNvcnMiCiBidWlsZF9vcHRpb25zX2RlZmF1bHQ9ImxvY2F0aW9uIHNlbnNvcnMiCisK K2RvX2NoZWNrKCkgeworICAgICMgc2Vuc29yc190IHRlc3QgZmFpbHMgb24gdGVzdCBydW5uZXIK KwljZCBidWlsZAorCWN0ZXN0IC1FICdzZW5zb3JzX3QnCit9CgpGcm9tIDhjM2U3MGY2OWU2NDM5 MGIyY2UzYzAxMzcwNTVjNTllZjE5OTA0ZjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IEFyamFuIE1vc3NlbCA8YXJqYW5tb3NzZWxAZ21haWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1biAy MDIxIDAwOjM4OjM1ICswMjAwClN1YmplY3Q6IFtQQVRDSCAxMi8xNl0gb3NnOiByZWJ1aWxkIGFn YWluc3QgbGliZ2RhbC0zLjQuMSwgZml4IGxpY2Vuc2UKCi0tLQogc3JjcGtncy9vc2cvdGVtcGxh dGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vc2cvdGVtcGxhdGUgYi9zcmNwa2dzL29zZy90ZW1w bGF0ZQppbmRleCAwOGJmNmQ0YjY1OTEuLmY1MTUzNWM1NzE5ZCAxMDA2NDQKLS0tIGEvc3JjcGtn cy9vc2cvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vc2cvdGVtcGxhdGUKQEAgLTIsNyArMiw3IEBA CiBwa2duYW1lPW9zZwogcmV2ZXJ0cz0zLjYuMF8xCiB2ZXJzaW9uPTMuNC4xCi1yZXZpc2lvbj0x MgorcmV2aXNpb249MTMKIHdya3NyYz1PcGVuU2NlbmVHcmFwaC1PcGVuU2NlbmVHcmFwaC0ke3Zl cnNpb259CiBidWlsZF9zdHlsZT1jbWFrZQogYnVpbGRfaGVscGVyPSJxZW11IgpAQCAtMTksNyAr MTksNyBAQCBtYWtlZGVwZW5kcz0iTWVzYUxpYi1kZXZlbCBndGtnbGV4dC1kZXZlbCBsaWJjdXJs LWRldmVsIGdpZmxpYi1kZXZlbCBsaWJyc3ZnLWRldgogZGVwZW5kcz0ieHJhbmRyIgogc2hvcnRf ZGVzYz0iT3BlblNjZW5lR3JhcGg6IGhpZ2ggcGVyZm9ybWFuY2UgcmVhbC10aW1lIGdyYXBoaWNz IHRvb2xraXQiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+Igot bGljZW5zZT0iT1NHUEwtMi4wLW9yLWxhdGVyIgorbGljZW5zZT0iY3VzdG9tOk9wZW5TY2VuZUdy YXBoLVB1YmxpYy1MaWNlbnNlLTAuMCIKIGhvbWVwYWdlPSJodHRwOi8vd3d3Lm9wZW5zY2VuZWdy YXBoLm9yZyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5zY2VuZWdyYXBoL09w ZW5TY2VuZUdyYXBoL2FyY2hpdmUvT3BlblNjZW5lR3JhcGgtJHt2ZXJzaW9ufS50YXIuZ3oiCiBj aGVja3N1bT05MzBlYjQ2ZjA1NzgxYTc2ODgzZWMxNmM1ZjQ5Y2ZiMjlhMDU5NDIxZGIxMzEwMDVk NzViZWM0ZDc4NDAxZmQ1CgpGcm9tIGZiMDRhNjU3MTc5MWFlMmI0NmRjOGQ0NzAyZGE2NDM4MWUz YzM3YTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEFyamFuIE1vc3NlbCA8YXJqYW5t b3NzZWxAZ21haWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1biAyMDIxIDE3OjM1OjQ3ICswMjAwClN1 YmplY3Q6IFtQQVRDSCAxMy8xNl0gc3VtbzogdXBkYXRlIHRvIDEuOS4yOyByZWJ1aWxkIGFnYWlu c3QgbGliZ2RhbC0zLjQuMQogYW5kIHByb2otNy4yLjEKCi0gQnVpbGQgVHJhYVMuamFyIHVzaW5n IE1hdmVuIChmaXhlcyB0ZXN0cykKLSBBZGQgRWlnZW4zIGRlcGVuZGVuY3kKLS0tCiBjb21tb24v c2hsaWJzICAgICAgICAgfCAgMiArKwogc3JjcGtncy9zdW1vL3RlbXBsYXRlIHwgMjIgKysrKysr KysrKysrKysrKy0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCA2IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbW1vbi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmlu ZGV4IDYyYjU3Mzk4NjA1MS4uYWU0ZGUzYmQxNGI2IDEwMDY0NAotLS0gYS9jb21tb24vc2hsaWJz CisrKyBiL2NvbW1vbi9zaGxpYnMKQEAgLTQxMjcsMyArNDEyNyw1IEBAIGxpYmdyYXNzX2RibWli YXNlLjcuOC5zbyBncmFzcy03LjguNV8xCiBsaWJncmFzc19pbWFnZXJ5LjcuOC5zbyBncmFzcy03 LjguNV8xCiBsaWJrbWxjb252ZW5pZW5jZS5zby4xIGxpYmttbC0xLjMuMF8xCiBtb2Rfc3BhdGlh bGl0ZS5zby43IGxpYnNwYXRpYWxpdGUtNS4wLjBfMQorbGlic3Vtb2NwcC5zbyBzdW1vLTEuOS4y XzEKK2xpYnRyYWNpY3BwLnNvIHN1bW8tMS45LjJfMQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zdW1v L3RlbXBsYXRlIGIvc3JjcGtncy9zdW1vL3RlbXBsYXRlCmluZGV4IGU3NjBmZGQ0NWFlZS4uM2Mw ZWVhOTkxNmFhIDEwMDY0NAotLS0gYS9zcmNwa2dzL3N1bW8vdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9zdW1vL3RlbXBsYXRlCkBAIC0xLDE4ICsxLDI4IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdz dW1vJwogcGtnbmFtZT1zdW1vCi12ZXJzaW9uPTEuNS4wCi1yZXZpc2lvbj00Cit2ZXJzaW9uPTEu OS4yCityZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1jbWFrZQotcHl0aG9uX3ZlcnNpb249MwotaG9z dG1ha2VkZXBlbmRzPSJsaWJnZGFsLXRvb2xzIHBrZy1jb25maWcgc3dpZyBweXRob24zLXNldHVw dG9vbHMiCi1tYWtlZGVwZW5kcz0icHl0aG9uMy1kZXZlbCBmZm1wZWctZGV2ZWwgZm94LWRldmVs IGdsMnBzLWRldmVsIGxpYmdkYWwtZGV2ZWwgbGlieGVyY2VzLWMtZGV2ZWwgb3NnLWRldmVsIHBy b2otZGV2ZWwiCitob3N0bWFrZWRlcGVuZHM9ImxpYmdkYWwtdG9vbHMgcGtnLWNvbmZpZyBzd2ln IHB5dGhvbjMtc2V0dXB0b29scworIGFwYWNoZS1tYXZlbiBvcGVuamRrMTEgZ2l0IgorbWFrZWRl cGVuZHM9InB5dGhvbjMtZGV2ZWwgZmZtcGVnLWRldmVsIGZveC1kZXZlbCBnbDJwcy1kZXZlbCBs aWJnZGFsLWRldmVsCisgbGlieGVyY2VzLWMtZGV2ZWwgb3NnLWRldmVsIHByb2otZGV2ZWwgZWln ZW4iCitjaGVja2RlcGVuZHM9Imd0ZXN0Igogc2hvcnRfZGVzYz0iU1VNTyAoU2ltdWxhdGlvbiBv ZiBVcmJhbiBNT2JpbGl0eSkgYW5kIGluY2x1ZGVkIGFwcGxpY2F0aW9ucyIKIG1haW50YWluZXI9 IldhcnJpb3IgR3JhcGggPG1hcnF1ZXNAbGFyY2VzLnVlY2UuYnI+IgogbGljZW5zZT0iRVBMLTIu MCIKIGhvbWVwYWdlPSJodHRwczovL3N1bW8uZGxyLmRlIgogZGlzdGZpbGVzPSJodHRwczovL3N1 bW8uZGxyLmRlL3JlbGVhc2VzLyR7dmVyc2lvbn0vc3Vtby1zcmMtJHt2ZXJzaW9ufS50YXIuZ3oi Ci1jaGVja3N1bT1kY2Y1MzM5ZmRkYTA2NTlmYTQ0ZmNmZDY5ZmUzZjRlMDMwMDlhYTlhNTk4NDk2 MjRmMmEzY2ZlNzJlZGE5ZjhlCitjaGVja3N1bT0xOTNhOGFiMTRiYjMwNWQzOTY3NjI1ZDc2Y2Qy OTFmNWM1NWJiOTA2ODE3NDY1ZjJhMTJjMmU2OWY0YjgwODEzCitweXRob25fdmVyc2lvbj0zCisK K3ByZV9idWlsZCgpIHsKKwljZCB0b29scy9jb250cmlidXRlZC90cmFhcworCW12biBwYWNrYWdl CisJbXYgdGFyZ2V0L3RyYWFzKi5qYXIgJHt3cmtzcmN9L2Jpbi9UcmFhUy5qYXIKK30KIAogcG9z dF9pbnN0YWxsKCkgewogCXJtIC1mICR7REVTVERJUn0vdXNyL3NoYXJlL3N1bW8vdG9vbHMvbGli c3Vtby8qLnNvCisJcm0gLWYgJHtERVNURElSfS91c3Ivc2hhcmUvc3Vtby90b29scy9saWJ0cmFj aS9fbGlidHJhY2kuc28KIH0KCkZyb20gNDJiNzc1MzNiYzc3OThmZTIwYThmNzg4NzcxYTk5ZDZk YjAwYjg0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQXJqYW4gTW9zc2VsIDxhcmph bm1vc3NlbEBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMjkgSnVuIDIwMjEgMTg6NDM6MDUgKzAyMDAK U3ViamVjdDogW1BBVENIIDE0LzE2XSB2dGs6IHJlYnVpbGQgYWdhaW5zdCBwcm9qLTcuMi4xCgot LS0KIHNyY3BrZ3MvdnRrL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy92dGsvdGVtcGxhdGUg Yi9zcmNwa2dzL3Z0ay90ZW1wbGF0ZQppbmRleCA4NThhYTMxYjljMDMuLjU1M2NmOTE5ODQ2NSAx MDA2NDQKLS0tIGEvc3JjcGtncy92dGsvdGVtcGxhdGUKKysrIGIvc3JjcGtncy92dGsvdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd2dGsnCiBwa2duYW1lPXZ0 awogdmVyc2lvbj05LjAuMQotcmV2aXNpb249NworcmV2aXNpb249OAogd3Jrc3JjPVZUSy0ke3Zl cnNpb259CiBidWlsZF9zdHlsZT1jbWFrZQogIyB2dGsgY2FuIGJlIGh1Z2UsIGVzcGVjaWFsbHkg d2l0aCAtRFZUS19CVUlMRF9BTExfTU9EVUxFUz1PTiIKCkZyb20gZjcwNTY1NDY0NDZlZDQ0MmU1 YjM1M2Y3NGI4ODVmZjk5MGY4N2ExNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQXJq YW4gTW9zc2VsIDxhcmphbm1vc3NlbEBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMjkgSnVuIDIwMjEg MTk6MjQ6NDMgKzAyMDAKU3ViamVjdDogW1BBVENIIDE1LzE2XSBvc20ycGdzcWw6IHJlYnVpbGQg YWdhaW5zdCBwcm9qLTcuMi4xCgotLS0KIHNyY3BrZ3Mvb3NtMnBnc3FsL3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9vc20ycGdzcWwvdGVtcGxhdGUgYi9zcmNwa2dzL29zbTJwZ3NxbC90ZW1w bGF0ZQppbmRleCAxYzUzYzQ1MDUwNDcuLjFkNWY3MWI3MDE0MCAxMDA2NDQKLS0tIGEvc3JjcGtn cy9vc20ycGdzcWwvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vc20ycGdzcWwvdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvc20ycGdzcWwnCiBwa2duYW1lPW9z bTJwZ3NxbAogdmVyc2lvbj0xLjYuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5 bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0iYm9vc3QiCiBtYWtlZGVwZW5kcz0iZXhwYXQtZGV2 ZWwgcHJvai1kZXZlbCBiemlwMi1kZXZlbCB6bGliLWRldmVsIGJvb3N0LWRldmVsCgpGcm9tIDRm OTIwYzkxMjgzNmQ0NzU0NTQ0YmQ5NjJiN2Q3YTRlNmIwNWQ4ZDYgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IEFyamFuIE1vc3NlbCA8YXJqYW5tb3NzZWxAZ21haWwuY29tPgpEYXRlOiBU dWUsIDI5IEp1biAyMDIxIDE5OjI2OjU3ICswMjAwClN1YmplY3Q6IFtQQVRDSCAxNi8xNl0gWHlH cmliOiByZWJ1aWxkIGFnYWluc3QgcHJvai03LjIuMQoKRG8gbm90IHVzZSBuaW5qYSAoInVua25v d24gdGFyZ2V0IiBlcnJvcikKLS0tCiBzcmNwa2dzL1h5R3JpYi90ZW1wbGF0ZSB8IDUgKysrKy0K IDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL1h5R3JpYi90ZW1wbGF0ZSBiL3NyY3BrZ3MvWHlHcmliL3RlbXBsYXRlCmlu ZGV4IGU0YWEzYTJlMDI2NS4uOTk1ZWMzZWVlYWJiIDEwMDY0NAotLS0gYS9zcmNwa2dzL1h5R3Jp Yi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL1h5R3JpYi90ZW1wbGF0ZQpAQCAtMSw4ICsxLDkgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ1h5R3JpYicKIHBrZ25hbWU9WHlHcmliCiB2ZXJzaW9uPTEu Mi42LjEKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1aWxkX3N0eWxlPWNtYWtlCittYWtlX2Nt ZD1tYWtlCiBob3N0bWFrZWRlcGVuZHM9InF0NS1kZXZlbCBwa2ctY29uZmlnIgogbWFrZWRlcGVu ZHM9Imphc3Blci1kZXZlbCBsaWJub3ZhLWRldmVsIG5ldHRsZS1kZXZlbCBwcm9qLWRldmVsIHF0 NS1kZXZlbAogIHF3dC1kZXZlbCBsaWJvcGVuanBlZzItZGV2ZWwiCkBAIC0xMyw2ICsxNCw4IEBA IGhvbWVwYWdlPSJodHRwczovL29wZW5ncmlicy5vcmcvIgogZGlzdGZpbGVzPSJodHRwczovL2dp dGh1Yi5jb20vb3BlbmdyaWJzL1h5R3JpYi9hcmNoaXZlL3Yke3ZlcnNpb259LnRhci5neiIKIGNo ZWNrc3VtPTJkYzYwOTkyOTNhZTZmN2E0YmZiZmMwY2FiNTkwY2Y3YWQ0ODI0MWQ2MDhlNmQ3YTc2 ZTM1OTYxYjlmYzIxNTcKIAorZXhwb3J0IENNQUtFX0dFTkVSQVRPUj0iVW5peCBNYWtlZmlsZXMi CisKIGlmIFsgIiRDUk9TU19CVUlMRCIgXTsgdGhlbgogCW1ha2VfYnVpbGRfYXJncz0iTElOSz0k e1hCUFNfQ1JPU1NfVFJJUExFVH0tYysrIgogZmkK --===============5247193439589990363==--