From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 13640 invoked from network); 4 Mar 2022 12:09:08 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 4 Mar 2022 12:09:08 -0000 Content-Type: multipart/mixed; boundary="===============5008105620772046367==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_Llvm13?= To: ml@inbox.vuxu.org From: motorto Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Fri, 04 Mar 2022 13:09:07 +0100 List-Id: Message-ID: <20220304120907.FzHG5r6jj6HLi-ih1UnP_y3lVM9_dizjGihevTyUe_M@z> GitHub notification mails are now in MIME to allow UTF8. --===============5008105620772046367== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgbW90b3J0byBhZ2FpbnN0IG1hc3Rl ciBvbiB0aGUgdm9pZC1wYWNrYWdlcyByZXBvc2l0b3J5CgpodHRwczovL2dpdGh1Yi5jb20vbW90 b3J0by92b2lkLXBhY2thZ2VzIGxsdm0xMwpodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92 b2lkLXBhY2thZ2VzL3B1bGwvMzU4OTUKCkxsdm0xMwpUaGlzIGFkZHMgTExWTSAxMyBhbmQgdXBk YXRlcyBmcm9tIExMVk0gMTIuDQoNCldvcmstaW4tcHJvZ3Jlc3MNCg0KVGhlIGZvbGxvd2luZyBw YWNrYWdlcyB3ZXJlIHJlbW92ZWQ6DQogKiBiZWlnbmV0IC0tIHVwc3RyZWFtIGlzIGRlYWQNCiAq IHJ1bmRpcmQgLS0gIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYnkgdXBzdHJlYW0gd2hpY2ggcmVjb21t ZW5kcyB1c2luZyBkdW1iX3J1bnRpbWVfZGlyDQoNClRoZSBmb2xsb3dpbmcgcGFja2FnZXMgd2Vy ZSB1cGRhdGVkIG9yIHBhdGNoZWQ6DQogKiBpc3BjDQogKiBxdGNyZWF0b3INCiAqIHJpdmVyDQog KiB6aWcNCg0KUmVidWlsdCBwYWNrYWdlczoNCg0KKiBqdUNpKysgDQoqIGtkZXZlbG9wIA0KKiBj b2RlbGl0ZSANCiogIGNocm9taXVtDQoqIG1lc2EgDQoqIGluY2x1ZGUtd2hhdC15b3UtdXNlIA0K KiBjY2xzIA0KKiBjbGF6eSANCiogYnBmdHJhY2UgDQoqIHF0NSANCiogcnRhZ3MgDQoqIHNoaWJv a2VuMiANCiogZ25vbWUtYnVpbGRlcg0KKiBiY2MNCg0KKEkgYW0gcHJvYmFibHkgbWlzc2luZyBz b21lIHBhY2thZ2VzKQ0KDQoNClRoYW5rcyBAREJMb3VpcyBmb3IgeW91ciBoYXJkIHdvcmshIA0K DQogW2NpIHNraXBdCgpBIHBhdGNoIGZpbGUgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1s aW51eC92b2lkLXBhY2thZ2VzL3B1bGwvMzU4OTUucGF0Y2ggaXMgYXR0YWNoZWQ= --===============5008105620772046367== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-llvm13-35895.patch" RnJvbSAwNzg4OGY5Yzg4YzdiYzViNzhhNzAwMDc3NTExOGNiNjIzZmFlOTcyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TG91aXM9MjBEdXByPUMzPUE5PTIwQmVydG9u aT89CiA8bG91aXNkYkBsZXNwZXRpdHNwZWRlc3RyZXMub3JnPgpEYXRlOiBGcmksIDMxIERlYyAy MDIxIDE2OjIxOjMwICswMjAwClN1YmplY3Q6IFtQQVRDSCAwMS8yOV0gTmV3IHBhY2thZ2U6IGxs dm0xMy0xMy4wLjAKCi0tLQogY29tbW9uL3NobGlicyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDE2ICstCiBzcmNwa2dzL2NsYW5nICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDIgKy0KIHNyY3BrZ3MvY2xhbmctYW5hbHl6ZXIgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMiArLQogc3JjcGtncy9jbGFuZy10b29scy1leHRyYSAgICAgICAgICAgICAgICAg ICAgIHwgICAyICstCiBzcmNwa2dzL2xpYmNsYW5nICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDIgKy0KIHNyY3BrZ3MvbGliY2xhbmctY3BwICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMiArLQogc3JjcGtncy9saWJjeHggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAyICstCiBzcmNwa2dzL2xpYmN4eC1kZXZlbCAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDIgKy0KIHNyY3BrZ3MvbGliY3h4YWJpICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMiArLQogc3JjcGtncy9saWJjeHhhYmktZGV2ZWwgICAgICAgICAgICAgICAgICAgICAgIHwg ICAyICstCiBzcmNwa2dzL2xpYmxsdm0xMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjcGtncy9saWJvbXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAy ICstCiBzcmNwa2dzL2xpYm9tcC1kZXZlbCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIg Ky0KIHNyY3BrZ3MvbGxkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiAr LQogc3JjcGtncy9sbGQtZGV2ZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICst CiBzcmNwa2dzL2xsZGIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0K IHNyY3BrZ3MvbGxkYi1kZXZlbCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQog c3JjcGtncy9sbHZtLWxpYnVud2luZCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBz cmNwa2dzL2xsdm0tbGlidW53aW5kLWRldmVsICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIC4u Li9sbHZtMTMvZmlsZXMvbGx2bS1Db25maWctbGx2bS1jb25maWcuaCAgICB8ICAgOSArCiAuLi5j bGFuZy0wMDEtZml4LXVud2luZC1jaGFpbi1pbmNsdXNpb24ucGF0Y2ggfCAgNDQgKysKIC4uLi9w YXRjaGVzL2NsYW5nLTAwMi1hZGQtbXVzbC10cmlwbGVzLnBhdGNoICB8IDExMCArKysrKwogLi4u L2NsYW5nLTAwMy1wcGM2NC1keW5hbWljLWxpbmtlci1wYXRoLnBhdGNoIHwgIDEzICsKIC4uLi9w YXRjaGVzL2NsYW5nLTAwNC1wcGM2NC1tdXNsLWVsZnYyLnBhdGNoICB8ICA0OCArKwogLi4uL2Nv bXBpbGVyLXJ0LWFhcmNoNjQtdWNvbnRleHQucGF0Y2ggICAgICAgIHwgIDExICsKIC4uLi9jb21w aWxlci1ydC1zYW5pdGl6ZXItcHBjNjQtbXVzbC5wYXRjaCAgICB8ICAzNSArKwogLi4uL3BhdGNo ZXMvY29tcGlsZXItcnQteHJheS1wcGM2NC1tdXNsLnBhdGNoIHwgIDYyICsrKwogc3JjcGtncy9s bHZtMTMvcGF0Y2hlcy9saWJjeHgtbXVzbC5wYXRjaCAgICAgIHwgIDI2ICsrCiBzcmNwa2dzL2xs dm0xMy9wYXRjaGVzL2xpYmN4eC1wcGMucGF0Y2ggICAgICAgfCAgMjIgKwogLi4uL2xsdm0xMy9w YXRjaGVzL2xpYmN4eC1zc3Atbm9uc2hhcmVkLnBhdGNoIHwgIDExICsKIHNyY3BrZ3MvbGx2bTEz L3BhdGNoZXMvbGliY3h4YWJpLWRsLnBhdGNoICAgICB8ICAyNSArKwogc3JjcGtncy9sbHZtMTMv cGF0Y2hlcy9saWJ1bndpbmQtcHBjMzIucGF0Y2ggIHwgIDYzICsrKwogc3JjcGtncy9sbHZtMTMv cGF0Y2hlcy9sbGRiLW11c2wucGF0Y2ggICAgICAgIHwgIDMxICsrCiBzcmNwa2dzL2xsdm0xMy9w YXRjaGVzL2xsdm0tMDAxLW11c2wucGF0Y2ggICAgfCAgNTcgKysrCiAuLi4vcGF0Y2hlcy9sbHZt LTAwMi1tdXNsLXBwYzY0LWVsZnYyLnBhdGNoICAgfCAgMzAgKysKIC4uLi9wYXRjaGVzL2xsdm0t MDAzLXBwYy1zZWN1cmVwbHQucGF0Y2ggICAgICB8ICAxMSArCiAuLi4vcGF0Y2hlcy9sbHZtLTAw NC1vdmVycmlkZS1vcHQucGF0Y2ggICAgICAgfCAgMTggKwogLi4uL2xsdm0xMy9wYXRjaGVzL2xs dm0tMDA1LXBwYy1iaWdwaWMucGF0Y2ggIHwgIDM2ICsrCiAuLi4vcGF0Y2hlcy9sbHZtLTAwNi1h YXJjaDY0LW1mX2V4ZWMucGF0Y2ggICAgfCAgMjUgKysKIC4uLi9sbHZtMTMvcGF0Y2hlcy9wcGMz Mi1jb21waWxlci1ydC5wYXRjaCAgICB8ICAyMSArCiBzcmNwa2dzL2xsdm0xMy90ZW1wbGF0ZSAg ICAgICAgICAgICAgICAgICAgICAgfCA0MjMgKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2xs dm0xMy91cGRhdGUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwogNDIgZmlsZXMgY2hh bmdlZCwgMTE2NSBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEy MDAwMCBzcmNwa2dzL2xpYmxsdm0xMwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEz L2ZpbGVzL2xsdm0tQ29uZmlnLWxsdm0tY29uZmlnLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL2xsdm0xMy9wYXRjaGVzL2NsYW5nLTAwMS1maXgtdW53aW5kLWNoYWluLWluY2x1c2lvbi5w YXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY2xhbmctMDAy LWFkZC1tdXNsLXRyaXBsZXMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0x My9wYXRjaGVzL2NsYW5nLTAwMy1wcGM2NC1keW5hbWljLWxpbmtlci1wYXRoLnBhdGNoCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9jbGFuZy0wMDQtcHBjNjQtbXVz bC1lbGZ2Mi5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEzL3BhdGNoZXMv Y29tcGlsZXItcnQtYWFyY2g2NC11Y29udGV4dC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvbGx2bTEzL3BhdGNoZXMvY29tcGlsZXItcnQtc2FuaXRpemVyLXBwYzY0LW11c2wucGF0 Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NvbXBpbGVyLXJ0 LXhyYXktcHBjNjQtbXVzbC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEz L3BhdGNoZXMvbGliY3h4LW11c2wucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xs dm0xMy9wYXRjaGVzL2xpYmN4eC1wcGMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2xsdm0xMy9wYXRjaGVzL2xpYmN4eC1zc3Atbm9uc2hhcmVkLnBhdGNoCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9saWJjeHhhYmktZGwucGF0Y2gKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xpYnVud2luZC1wcGMzMi5wYXRjaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGxkYi1tdXNsLnBhdGNo CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9sbHZtLTAwMS1tdXNs LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9sbHZtLTAw Mi1tdXNsLXBwYzY0LWVsZnYyLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZt MTMvcGF0Y2hlcy9sbHZtLTAwMy1wcGMtc2VjdXJlcGx0LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9sbHZtLTAwNC1vdmVycmlkZS1vcHQucGF0Y2gKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xsdm0tMDA1LXBwYy1iaWdw aWMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xsdm0t MDA2LWFhcmNoNjQtbWZfZXhlYy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2 bTEzL3BhdGNoZXMvcHBjMzItY29tcGlsZXItcnQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2xsdm0xMy90ZW1wbGF0ZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEz L3VwZGF0ZQoKZGlmZiAtLWdpdCBhL2NvbW1vbi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4 IDUwOTZhYjVkYWQ2Yi4uYjFmZTNhM2RiYjU0IDEwMDY0NAotLS0gYS9jb21tb24vc2hsaWJzCisr KyBiL2NvbW1vbi9zaGxpYnMKQEAgLTk3MywxMSArOTczLDEyIEBAIGxpYnVjaGFyZGV0LnNvLjAg dWNoYXJkZXQtMC4wLjZfMQogbGliZ3Rrc291cmNldmlld21tLTMuMC5zby4wIGd0a3NvdXJjZXZp ZXdtbS0zLjIuMF8xCiBsaWJ5YWpsLnNvLjIgeWFqbC0yLjAuMV8xCiBsaWJjb25mdXNlLnNvLjIg Y29uZnVzZS0zLjIuMV8xCi1saWJsbGRiLnNvLjEyIGxsZGItMTIuMC4wXzEKLWxpYmNsYW5nLnNv LjEyIGxpYmNsYW5nLTEyLjAuMF8xCi1saWJjbGFuZy1jcHAuc28uMTIgbGliY2xhbmctY3BwLTEy LjAuMF8xCitsaWJsbGRiLnNvLjEzIGxsZGItMTMuMC4wXzEKK2xpYmNsYW5nLnNvLjEzIGxpYmNs YW5nLTEzLjAuMF8xCitsaWJjbGFuZy1jcHAuc28uMTMgbGliY2xhbmctY3BwLTEzLjAuMF8xCiBs aWJMTFZNLTExLnNvIGxpYmxsdm0xMS0xMS4wLjBfMQogbGliTExWTS0xMi5zbyBsaWJsbHZtMTIt MTIuMC4wXzEKK2xpYkxMVk0tMTMuc28gbGlibGx2bTEzLTEzLjAuMF8xCiBsaWJpc29mcy5zby42 IGxpYmlzb2ZzLTAuNi4yNF8xCiBsaWJtcGFjay5zby4wIGxpYm1wYWNrLTEuMC41XzEKIGxpYkdl b0lQLnNvLjEgbGliZ2VvaXAtMS40LjhfMQpAQCAtNDExNywzICs0MTE4LDEyIEBAIGxpYnNwYXRp YWxpdGUuc28uNyBsaWJzcGF0aWFsaXRlLTUuMC4xXzEKIG1vZF9zcGF0aWFsaXRlLnNvLjcgbGli c3BhdGlhbGl0ZS01LjAuMV8xCiBsaWJTdnRBdjFFbmMuc28uMCBsaWJzdnQtYXYxLTAuOS4wXzEK IGxpYlN2dEF2MURlYy5zby4wIGxpYnN2dC1hdjEtMC45LjBfMQorbGlib21wLnNvIGxpYm9tcC0x My4wLjBfMQorbGlib21wdGFyZ2V0LnJ0bC5hbWRncHUuc28gbGlib21wLTEzLjAuMF8xCitsaWJv bXB0YXJnZXQucnRsLmN1ZGEuc28gbGlib21wLTEzLjAuMF8xCitsaWJvbXB0YXJnZXQucnRsLng4 Nl82NC5zbyBsaWJvbXAtMTMuMC4wXzEKK2xpYmFyY2hlci5zbyBsaWJvbXAtMTMuMC4wXzEKK2xp Ym9tcHRhcmdldC5zbyBsaWJvbXAtMTMuMC4wXzEKK2xpYmxsZGJJbnRlbEZlYXR1cmVzLnNvLjEz IGxsZGItMTMuMC4wXzEKK2xpYkxUTy5zby4xMyBsbHZtMTMtMTMuMC4wXzEKK2xpYlJlbWFya3Mu c28uMTMgbGx2bTEzLTEzLjAuMF8xCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NsYW5nIGIvc3JjcGtn cy9jbGFuZwppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdkM2I5NSAxMjAwMDAKLS0tIGEvc3Jj cGtncy9jbGFuZworKysgYi9zcmNwa2dzL2NsYW5nCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitsbHZtMTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CmRpZmYgLS1naXQgYS9zcmNwa2dzL2NsYW5nLWFuYWx5emVyIGIvc3JjcGtncy9jbGFuZy1hbmFs eXplcgppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdkM2I5NSAxMjAwMDAKLS0tIGEvc3JjcGtn cy9jbGFuZy1hbmFseXplcgorKysgYi9zcmNwa2dzL2NsYW5nLWFuYWx5emVyCkBAIC0xICsxIEBA Ci1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitsbHZtMTMKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NsYW5nLXRvb2xzLWV4dHJhIGIv c3JjcGtncy9jbGFuZy10b29scy1leHRyYQppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdkM2I5 NSAxMjAwMDAKLS0tIGEvc3JjcGtncy9jbGFuZy10b29scy1leHRyYQorKysgYi9zcmNwa2dzL2Ns YW5nLXRvb2xzLWV4dHJhCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCitsbHZtMTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9z cmNwa2dzL2xpYmNsYW5nIGIvc3JjcGtncy9saWJjbGFuZwppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2 MzY2ZDdkM2I5NSAxMjAwMDAKLS0tIGEvc3JjcGtncy9saWJjbGFuZworKysgYi9zcmNwa2dzL2xp YmNsYW5nCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCits bHZtMTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xp YmNsYW5nLWNwcCBiL3NyY3BrZ3MvbGliY2xhbmctY3BwCmluZGV4IGNkNjBmZDdhOTgxYi4uZDYz NjZkN2QzYjk1IDEyMDAwMAotLS0gYS9zcmNwa2dzL2xpYmNsYW5nLWNwcAorKysgYi9zcmNwa2dz L2xpYmNsYW5nLWNwcApAQCAtMSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQorbGx2bTEzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9saWJjeHggYi9zcmNwa2dzL2xpYmN4eAppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdk M2I5NSAxMjAwMDAKLS0tIGEvc3JjcGtncy9saWJjeHgKKysrIGIvc3JjcGtncy9saWJjeHgKQEAg LTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0xMwpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliY3h4LWRldmVs IGIvc3JjcGtncy9saWJjeHgtZGV2ZWwKaW5kZXggY2Q2MGZkN2E5ODFiLi5kNjM2NmQ3ZDNiOTUg MTIwMDAwCi0tLSBhL3NyY3BrZ3MvbGliY3h4LWRldmVsCisrKyBiL3NyY3BrZ3MvbGliY3h4LWRl dmVsCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitsbHZt MTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmN4 eGFiaSBiL3NyY3BrZ3MvbGliY3h4YWJpCmluZGV4IGNkNjBmZDdhOTgxYi4uZDYzNjZkN2QzYjk1 IDEyMDAwMAotLS0gYS9zcmNwa2dzL2xpYmN4eGFiaQorKysgYi9zcmNwa2dzL2xpYmN4eGFiaQpA QCAtMSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorbGx2bTEzClwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJjeHhhYmkt ZGV2ZWwgYi9zcmNwa2dzL2xpYmN4eGFiaS1kZXZlbAppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2MzY2 ZDdkM2I5NSAxMjAwMDAKLS0tIGEvc3JjcGtncy9saWJjeHhhYmktZGV2ZWwKKysrIGIvc3JjcGtn cy9saWJjeHhhYmktZGV2ZWwKQEAgLTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKK2xsdm0xMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvbGlibGx2bTEzIGIvc3JjcGtncy9saWJsbHZtMTMKbmV3IGZpbGUgbW9kZSAxMjAw MDAKaW5kZXggMDAwMDAwMDAwMDAwLi5kNjM2NmQ3ZDNiOTUKLS0tIC9kZXYvbnVsbAorKysgYi9z cmNwa2dzL2xpYmxsdm0xMwpAQCAtMCwwICsxIEBACitsbHZtMTMKXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYm9tcCBiL3NyY3BrZ3MvbGlib21wCmlu ZGV4IGNkNjBmZDdhOTgxYi4uZDYzNjZkN2QzYjk1IDEyMDAwMAotLS0gYS9zcmNwa2dzL2xpYm9t cAorKysgYi9zcmNwa2dzL2xpYm9tcApAQCAtMSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQorbGx2bTEzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9saWJvbXAtZGV2ZWwgYi9zcmNwa2dzL2xpYm9tcC1kZXZlbAppbmRleCBj ZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdkM2I5NSAxMjAwMDAKLS0tIGEvc3JjcGtncy9saWJvbXAtZGV2 ZWwKKysrIGIvc3JjcGtncy9saWJvbXAtZGV2ZWwKQEAgLTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0xMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGxkIGIvc3JjcGtncy9sbGQKaW5kZXggY2Q2MGZkN2E5ODFi Li5kNjM2NmQ3ZDNiOTUgMTIwMDAwCi0tLSBhL3NyY3BrZ3MvbGxkCisrKyBiL3NyY3BrZ3MvbGxk CkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitsbHZtMTMK XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsZC1kZXZl bCBiL3NyY3BrZ3MvbGxkLWRldmVsCmluZGV4IGNkNjBmZDdhOTgxYi4uZDYzNjZkN2QzYjk1IDEy MDAwMAotLS0gYS9zcmNwa2dzL2xsZC1kZXZlbAorKysgYi9zcmNwa2dzL2xsZC1kZXZlbApAQCAt MSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorbGx2bTEzClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbGRiIGIvc3JjcGtn cy9sbGRiCmluZGV4IGNkNjBmZDdhOTgxYi4uZDYzNjZkN2QzYjk1IDEyMDAwMAotLS0gYS9zcmNw a2dzL2xsZGIKKysrIGIvc3JjcGtncy9sbGRiCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCitsbHZtMTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2xsZGItZGV2ZWwgYi9zcmNwa2dzL2xsZGItZGV2ZWwKaW5kZXgg Y2Q2MGZkN2E5ODFiLi5kNjM2NmQ3ZDNiOTUgMTIwMDAwCi0tLSBhL3NyY3BrZ3MvbGxkYi1kZXZl bAorKysgYi9zcmNwa2dzL2xsZGItZGV2ZWwKQEAgLTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0xMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bS1saWJ1bndpbmQgYi9zcmNwa2dzL2xsdm0tbGlidW53aW5k CmluZGV4IGNkNjBmZDdhOTgxYi4uZDYzNjZkN2QzYjk1IDEyMDAwMAotLS0gYS9zcmNwa2dzL2xs dm0tbGlidW53aW5kCisrKyBiL3NyY3BrZ3MvbGx2bS1saWJ1bndpbmQKQEAgLTEgKzEgQEAKLWxs dm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0xMwpcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bS1saWJ1bndpbmQtZGV2ZWwgYi9z cmNwa2dzL2xsdm0tbGlidW53aW5kLWRldmVsCmluZGV4IGNkNjBmZDdhOTgxYi4uZDYzNjZkN2Qz Yjk1IDEyMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0tbGlidW53aW5kLWRldmVsCisrKyBiL3NyY3Br Z3MvbGx2bS1saWJ1bndpbmQtZGV2ZWwKQEAgLTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKK2xsdm0xMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvbGx2bTEzL2ZpbGVzL2xsdm0tQ29uZmlnLWxsdm0tY29uZmlnLmggYi9z cmNwa2dzL2xsdm0xMy9maWxlcy9sbHZtLUNvbmZpZy1sbHZtLWNvbmZpZy5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMmZhMDhjOWJlNjk2Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9sbHZtMTMvZmlsZXMvbGx2bS1Db25maWctbGx2bS1jb25maWcuaApAQCAt MCwwICsxLDkgQEAKKyNpbmNsdWRlIDxiaXRzL3dvcmRzaXplLmg+CisKKyNpZiBfX1dPUkRTSVpF ID09IDMyCisjaW5jbHVkZSAibGx2bS1jb25maWctMzIuaCIKKyNlbGlmIF9fV09SRFNJWkUgPT0g NjQKKyNpbmNsdWRlICJsbHZtLWNvbmZpZy02NC5oIgorI2Vsc2UKKyNlcnJvciAiVW5rbm93biB3 b3JkIHNpemUiCisjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY2xh bmctMDAxLWZpeC11bndpbmQtY2hhaW4taW5jbHVzaW9uLnBhdGNoIGIvc3JjcGtncy9sbHZtMTMv cGF0Y2hlcy9jbGFuZy0wMDEtZml4LXVud2luZC1jaGFpbi1pbmNsdXNpb24ucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lNGVhYTc3ODNlN2EKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NsYW5nLTAwMS1maXgtdW53aW5kLWNo YWluLWluY2x1c2lvbi5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIDM1Mjk3NDE2OWYwZDJi NWRhM2Q1MzIxZjU4OGY1ZTNiNTk0MTMzMGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9t OiBBbmRyZWEgQnJhbmNhbGVvbmkgPG1pd2F4ZUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDggU2Vw IDIwMTUgMjI6MTQ6NTcgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzddIGZpeCB1bndpbmQgY2hh aW4gaW5jbHVzaW9uCisKKy0tLQorIGxpYi9IZWFkZXJzL3Vud2luZC5oIHwgOSArKysrKy0tLS0K KyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZm IC0tZ2l0IGEvbGliL0hlYWRlcnMvdW53aW5kLmggYi9saWIvSGVhZGVycy91bndpbmQuaAoraW5k ZXggMzAzZDc5Mi4uNDRlMTBjYyAxMDA2NDQKKy0tLSBhL2NsYW5nL2xpYi9IZWFkZXJzL3Vud2lu ZC5oCisrKysgYi9jbGFuZy9saWIvSGVhZGVycy91bndpbmQuaAorQEAgLTksOSArOSw2IEBACisg CisgLyogU2VlICJEYXRhIERlZmluaXRpb25zIGZvciBsaWJnY2NfcyIgaW4gdGhlIExpbnV4IFN0 YW5kYXJkIEJhc2UuKi8KKyAKKy0jaWZuZGVmIF9fQ0xBTkdfVU5XSU5EX0gKKy0jZGVmaW5lIF9f Q0xBTkdfVU5XSU5EX0gKKy0KKyAjaWYgZGVmaW5lZChfX0FQUExFX18pICYmIF9faGFzX2luY2x1 ZGVfbmV4dCg8dW53aW5kLmg+KQorIC8qIERhcndpbiAoZnJvbSAxMS54IG9uKSBwcm92aWRlIGFu IHVud2luZC5oLiBJZiB0aGF0J3MgYXZhaWxhYmxlLAorICAqIHVzZSBpdC4gbGlidW53aW5kIHdy YXBzIHNvbWUgb2YgaXRzIGRlZmluaXRpb25zIGluICNpZmRlZiBfR05VX1NPVVJDRSwKK0BAIC0z OSw2ICszNiw5IEBACisgIyBlbmRpZgorICNlbHNlCisgCisrI2lmbmRlZiBfX0NMQU5HX1VOV0lO RF9ICisrI2RlZmluZSBfX0NMQU5HX1VOV0lORF9ICisrCisgI2luY2x1ZGUgPHN0ZGludC5oPgor IAorICNpZmRlZiBfX2NwbHVzcGx1cworQEAgLTMyMiw2ICszMjIsNyBAQCBfVW53aW5kX1B0ciBf VW53aW5kX0dldFRleHRSZWxCYXNlKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKik7CisgfQorICNl bmRpZgorIAorKyNlbmRpZiAvKiBfX0NMQU5HX1VOV0lORF9IICovCisrCisgI2VuZGlmCisgCist I2VuZGlmIC8qIF9fQ0xBTkdfVU5XSU5EX0ggKi8KKy0tIAorMi41LjEKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvbGx2bTEzL3BhdGNoZXMvY2xhbmctMDAyLWFkZC1tdXNsLXRyaXBsZXMucGF0Y2ggYi9z cmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NsYW5nLTAwMi1hZGQtbXVzbC10cmlwbGVzLnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjU2ODhkNDBkYmMyCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9jbGFuZy0wMDItYWRkLW11c2wt dHJpcGxlcy5wYXRjaApAQCAtMCwwICsxLDExMCBAQAorLS0tIGEvY2xhbmcvbGliL0RyaXZlci9U b29sQ2hhaW5zL0dudS5jcHAKKysrKyBiL2NsYW5nL2xpYi9Ecml2ZXIvVG9vbENoYWlucy9HbnUu Y3BwCitAQCAtMjA4Niw3ICsyMDg2LDggQEAgdm9pZCBHZW5lcmljX0dDQzo6R0NDSW5zdGFsbGF0 aW9uRGV0ZWN0b3I6OkFkZERlZmF1bHRHQ0NQcmVmaXhlcygKKyAgIHN0YXRpYyBjb25zdCBjaGFy ICpjb25zdCBBUk1IRlRyaXBsZXNbXSA9IHsiYXJtLWxpbnV4LWdudWVhYmloZiIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFybXY3aGwtcmVkaGF0LWxp bnV4LWdudWVhYmkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJhcm12NmhsLXN1c2UtbGludXgtZ251ZWFiaSIsCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImFybXY3aGwtc3VzZS1saW51eC1nbnVlYWJpIn07Cisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFybXY3aGwtc3Vz ZS1saW51eC1nbnVlYWJpIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiYXJtdjdsLWxpbnV4LWdudWVhYmloZiJ9OworICAgc3RhdGljIGNvbnN0IGNoYXIg KmNvbnN0IEFSTWViTGliRGlyc1tdID0geyIvbGliIn07CisgICBzdGF0aWMgY29uc3QgY2hhciAq Y29uc3QgQVJNZWJUcmlwbGVzW10gPSB7ImFybWViLWxpbnV4LWdudWVhYmkiLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcm1lYi1saW51eC1hbmRyb2lk ZWFiaSJ9OworQEAgLTIxNTMsOCArMjE1NCw3IEBAIHZvaWQgR2VuZXJpY19HQ0M6OkdDQ0luc3Rh bGxhdGlvbkRldGVjdG9yOjpBZGREZWZhdWx0R0NDUHJlZml4ZXMoCisgICAgICAgInBvd2VycGM2 NC1zdXNlLWxpbnV4IiwgInBvd2VycGMtbW9udGF2aXN0YS1saW51eHNwZSJ9OworICAgc3RhdGlj IGNvbnN0IGNoYXIgKmNvbnN0IFBQQ0xFTGliRGlyc1tdID0geyIvbGliMzIiLCAiL2xpYiJ9Owor ICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQQ0xFVHJpcGxlc1tdID0geyJwb3dlcnBjbGUt bGludXgtZ251IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAicG93ZXJwY2xlLXVua25vd24tbGludXgtZ251IiwKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwY2xlLWxpbnV4LW11c2wifTsKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwY2xlLXVua25vd24t bGludXgtZ251In07CisgCisgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBDNjRMaWJEaXJz W10gPSB7Ii9saWI2NCIsICIvbGliIn07CisgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBD NjRUcmlwbGVzW10gPSB7CitAQCAtMjIzNSw2ICsyMjM1LDg3IEBAIHZvaWQgR2VuZXJpY19HQ0M6 OkdDQ0luc3RhbGxhdGlvbkRldGVjdG9yOjpBZGREZWZhdWx0R0NDUHJlZml4ZXMoCisgICAgIHJl dHVybjsKKyAgIH0KKyAKKysgIGlmIChUYXJnZXRUcmlwbGUuaXNNdXNsKCkpIHsKKysgICAgc3Rh dGljIGNvbnN0IGNoYXIgKmNvbnN0IEFBcmNoNjRNdXNsVHJpcGxlc1tdID0geyJhYXJjaDY0LWxp bnV4LW11c2wifTsKKysgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IEFSTUhGTXVzbFRyaXBs ZXNbXSA9IHsKKysgICAgICAgICJhcm0tbGludXgtbXVzbGVhYmloZiIsICJhcm12N2wtbGludXgt bXVzbGVhYmloZiIKKysgICAgfTsKKysgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IEFSTU11 c2xUcmlwbGVzW10gPSB7ImFybS1saW51eC1tdXNsZWFiaSJ9OworKyAgICBzdGF0aWMgY29uc3Qg Y2hhciAqY29uc3QgWDg2XzY0TXVzbFRyaXBsZXNbXSA9IHsieDg2XzY0LWxpbnV4LW11c2wifTsK KysgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFg4Nk11c2xUcmlwbGVzW10gPSB7Imk2ODYt bGludXgtbXVzbCJ9OworKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgTUlQU011c2xUcmlw bGVzW10gPSB7CisrICAgICAgICAibWlwcy1saW51eC1tdXNsIiwgIm1pcHNlbC1saW51eC1tdXNs IiwKKysgICAgICAgICJtaXBzZWwtbGludXgtbXVzbGhmIiwgIm1pcHMtbGludXgtbXVzbGhmIgor KyAgICB9OworKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBDTXVzbFRyaXBsZXNbXSA9 IHsicG93ZXJwYy1saW51eC1tdXNsIn07CisrICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBQ UENMRU11c2xUcmlwbGVzW10gPSB7InBvd2VycGNsZS1saW51eC1tdXNsIn07CisrICAgIHN0YXRp YyBjb25zdCBjaGFyICpjb25zdCBQUEM2NE11c2xUcmlwbGVzW10gPSB7InBvd2VycGM2NC1saW51 eC1tdXNsIn07CisrICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBQUEM2NExFTXVzbFRyaXBs ZXNbXSA9IHsicG93ZXJwYzY0bGUtbGludXgtbXVzbCJ9OworKworKyAgICBzd2l0Y2ggKFRhcmdl dFRyaXBsZS5nZXRBcmNoKCkpIHsKKysgICAgY2FzZSBsbHZtOjpUcmlwbGU6OmFhcmNoNjQ6Cisr ICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oQUFyY2g2NExpYkRpcnMpLCBlbmQoQUFyY2g2NExp YkRpcnMpKTsKKysgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihBQXJjaDY0TXVzbFRy aXBsZXMpLCBlbmQoQUFyY2g2NE11c2xUcmlwbGVzKSk7CisrICAgICAgQmlhcmNoTGliRGlycy5h cHBlbmQoYmVnaW4oQUFyY2g2NExpYkRpcnMpLCBlbmQoQUFyY2g2NExpYkRpcnMpKTsKKysgICAg ICBCaWFyY2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihBQXJjaDY0TXVzbFRyaXBsZXMpLCBl bmQoQUFyY2g2NE11c2xUcmlwbGVzKSk7CisrICAgICAgYnJlYWs7CisrICAgIGNhc2UgbGx2bTo6 VHJpcGxlOjphcm06CisrICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oQVJNTGliRGlycyksIGVu ZChBUk1MaWJEaXJzKSk7CisrICAgICAgaWYgKFRhcmdldFRyaXBsZS5nZXRFbnZpcm9ubWVudCgp ID09IGxsdm06OlRyaXBsZTo6TXVzbEVBQklIRikgeworKyAgICAgICAgVHJpcGxlQWxpYXNlcy5h cHBlbmQoYmVnaW4oQVJNSEZNdXNsVHJpcGxlcyksIGVuZChBUk1IRk11c2xUcmlwbGVzKSk7Cisr ICAgICAgfSBlbHNlIHsKKysgICAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKEFSTU11 c2xUcmlwbGVzKSwgZW5kKEFSTU11c2xUcmlwbGVzKSk7CisrICAgICAgfQorKyAgICAgIGJyZWFr OworKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6eDg2XzY0OgorKyAgICAgIExpYkRpcnMuYXBwZW5k KGJlZ2luKFg4Nl82NExpYkRpcnMpLCBlbmQoWDg2XzY0TGliRGlycykpOworKyAgICAgIFRyaXBs ZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFg4Nl82NE11c2xUcmlwbGVzKSwgZW5kKFg4Nl82NE11c2xU cmlwbGVzKSk7CisrICAgICAgQmlhcmNoTGliRGlycy5hcHBlbmQoYmVnaW4oWDg2TGliRGlycyks IGVuZChYODZMaWJEaXJzKSk7CisrICAgICAgQmlhcmNoVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVn aW4oWDg2TXVzbFRyaXBsZXMpLCBlbmQoWDg2TXVzbFRyaXBsZXMpKTsKKysgICAgICBicmVhazsK KysgICAgY2FzZSBsbHZtOjpUcmlwbGU6Ong4NjoKKysgICAgICBMaWJEaXJzLmFwcGVuZChiZWdp bihYODZMaWJEaXJzKSwgZW5kKFg4NkxpYkRpcnMpKTsKKysgICAgICBUcmlwbGVBbGlhc2VzLmFw cGVuZChiZWdpbihYODZNdXNsVHJpcGxlcyksIGVuZChYODZNdXNsVHJpcGxlcykpOworKyAgICAg IEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKFg4Nl82NExpYkRpcnMpLCBlbmQoWDg2XzY0TGli RGlycykpOworKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFg4Nl82NE11 c2xUcmlwbGVzKSwgZW5kKFg4Nl82NE11c2xUcmlwbGVzKSk7CisrICAgICAgYnJlYWs7CisrICAg IGNhc2UgbGx2bTo6VHJpcGxlOjptaXBzOgorKyAgICAgIExpYkRpcnMuYXBwZW5kKGJlZ2luKE1J UFNMaWJEaXJzKSwgZW5kKE1JUFNMaWJEaXJzKSk7CisrICAgICAgVHJpcGxlQWxpYXNlcy5hcHBl bmQoYmVnaW4oTUlQU011c2xUcmlwbGVzKSwgZW5kKE1JUFNNdXNsVHJpcGxlcykpOworKyAgICAg IGJyZWFrOworKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjOgorKyAgICAgIExpYkRpcnMuYXBw ZW5kKGJlZ2luKFBQQ0xpYkRpcnMpLCBlbmQoUFBDTGliRGlycykpOworKyAgICAgIFRyaXBsZUFs aWFzZXMuYXBwZW5kKGJlZ2luKFBQQ011c2xUcmlwbGVzKSwgZW5kKFBQQ011c2xUcmlwbGVzKSk7 CisrICAgICAgQmlhcmNoTGliRGlycy5hcHBlbmQoYmVnaW4oUFBDNjRMaWJEaXJzKSwgZW5kKFBQ QzY0TGliRGlycykpOworKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQ QzY0TXVzbFRyaXBsZXMpLCBlbmQoUFBDNjRNdXNsVHJpcGxlcykpOworKyAgICAgIGJyZWFrOwor KyAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjbGU6CisrICAgICAgTGliRGlycy5hcHBlbmQoYmVn aW4oUFBDTEVMaWJEaXJzKSwgZW5kKFBQQ0xFTGliRGlycykpOworKyAgICAgIFRyaXBsZUFsaWFz ZXMuYXBwZW5kKGJlZ2luKFBQQ0xFTXVzbFRyaXBsZXMpLCBlbmQoUFBDTEVNdXNsVHJpcGxlcykp OworKyAgICAgIEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQQzY0TEVMaWJEaXJzKSwgZW5k KFBQQzY0TEVMaWJEaXJzKSk7CisrICAgICAgQmlhcmNoVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVn aW4oUFBDNjRMRU11c2xUcmlwbGVzKSwgZW5kKFBQQzY0TEVNdXNsVHJpcGxlcykpOworKyAgICAg IGJyZWFrOworKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjQ6CisrICAgICAgTGliRGlycy5h cHBlbmQoYmVnaW4oUFBDNjRMaWJEaXJzKSwgZW5kKFBQQzY0TGliRGlycykpOworKyAgICAgIFRy aXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQQzY0TXVzbFRyaXBsZXMpLCBlbmQoUFBDNjRNdXNs VHJpcGxlcykpOworKyAgICAgIEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQQ0xpYkRpcnMp LCBlbmQoUFBDTGliRGlycykpOworKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJl Z2luKFBQQ011c2xUcmlwbGVzKSwgZW5kKFBQQ011c2xUcmlwbGVzKSk7CisrICAgICAgYnJlYWs7 CisrICAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGM2NGxlOgorKyAgICAgIExpYkRpcnMuYXBwZW5k KGJlZ2luKFBQQzY0TEVMaWJEaXJzKSwgZW5kKFBQQzY0TEVMaWJEaXJzKSk7CisrICAgICAgVHJp cGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDNjRMRU11c2xUcmlwbGVzKSwgZW5kKFBQQzY0TEVN dXNsVHJpcGxlcykpOworKyAgICAgIEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQQ0xFTGli RGlycyksIGVuZChQUENMRUxpYkRpcnMpKTsKKysgICAgICBCaWFyY2hUcmlwbGVBbGlhc2VzLmFw cGVuZChiZWdpbihQUENMRU11c2xUcmlwbGVzKSwgZW5kKFBQQ0xFTXVzbFRyaXBsZXMpKTsKKysg ICAgICBicmVhazsKKysgICAgZGVmYXVsdDoKKysgICAgICBicmVhazsKKysgICAgfQorKyAgICBU cmlwbGVBbGlhc2VzLnB1c2hfYmFjayhUYXJnZXRUcmlwbGUuc3RyKCkpOworKyAgICBpZiAoVGFy Z2V0VHJpcGxlLnN0cigpICE9IEJpYXJjaFRyaXBsZS5zdHIoKSkKKysgICAgICBCaWFyY2hUcmlw bGVBbGlhc2VzLnB1c2hfYmFjayhCaWFyY2hUcmlwbGUuc3RyKCkpOworKyAgICByZXR1cm47Cisr ICB9CisrCisgICAvLyBBbmRyb2lkIHRhcmdldHMgc2hvdWxkIG5vdCB1c2UgR05VL0xpbnV4IHRv b2xzIG9yIGxpYnJhcmllcy4KKyAgIGlmIChUYXJnZXRUcmlwbGUuaXNBbmRyb2lkKCkpIHsKKyAg ICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IEFBcmNoNjRBbmRyb2lkVHJpcGxlc1tdID0gewpk aWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9jbGFuZy0wMDMtcHBjNjQtZHluYW1p Yy1saW5rZXItcGF0aC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY2xhbmctMDAzLXBw YzY0LWR5bmFtaWMtbGlua2VyLXBhdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi40YWQ2NDEyZDFlNmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xs dm0xMy9wYXRjaGVzL2NsYW5nLTAwMy1wcGM2NC1keW5hbWljLWxpbmtlci1wYXRoLnBhdGNoCkBA IC0wLDAgKzEsMTMgQEAKKy0tLSBhL2NsYW5nL2xpYi9Ecml2ZXIvVG9vbENoYWlucy9MaW51eC5j cHAKKysrKyBiL2NsYW5nL2xpYi9Ecml2ZXIvVG9vbENoYWlucy9MaW51eC5jcHAKK0BAIC01MDQs MTAgKzUwNCw2IEBAIHN0ZDo6c3RyaW5nIExpbnV4OjpnZXREeW5hbWljTGlua2VyKGNvbnN0IEFy Z0xpc3QgJkFyZ3MpIGNvbnN0IHsKKyAgICAgTG9hZGVyID0gImxkLnNvLjEiOworICAgICBicmVh azsKKyAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGM2NDoKKy0gICAgTGliRGlyID0gImxpYjY0IjsK Ky0gICAgTG9hZGVyID0KKy0gICAgICAgICh0b29sczo6cHBjOjpoYXNQUENBYmlBcmcoQXJncywg ImVsZnYyIikpID8gImxkNjQuc28uMiIgOiAibGQ2NC5zby4xIjsKKy0gICAgYnJlYWs7CisgICBj YXNlIGxsdm06OlRyaXBsZTo6cHBjNjRsZToKKyAgICAgTGliRGlyID0gImxpYjY0IjsKKyAgICAg TG9hZGVyID0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY2xhbmctMDA0LXBw YzY0LW11c2wtZWxmdjIucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NsYW5nLTAwNC1w cGM2NC1tdXNsLWVsZnYyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uMjFmYzgwMDNjNWYxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTMvcGF0 Y2hlcy9jbGFuZy0wMDQtcHBjNjQtbXVzbC1lbGZ2Mi5wYXRjaApAQCAtMCwwICsxLDQ4IEBACist LS0gYS9jbGFuZy9saWIvQmFzaWMvVGFyZ2V0cy9QUEMuaAorKysrIGIvY2xhbmcvbGliL0Jhc2lj L1RhcmdldHMvUFBDLmgKK0BAIC00MTUsMTEgKzQxNSwxMCBAQCBwdWJsaWM6CisgICAgICAgTG9u Z0RvdWJsZUZvcm1hdCA9ICZsbHZtOjpBUEZsb2F0OjpJRUVFZG91YmxlKCk7CisgICAgIH0gZWxz ZSBpZiAoKFRyaXBsZS5nZXRBcmNoKCkgPT0gbGx2bTo6VHJpcGxlOjpwcGM2NGxlKSkgeworICAg ICAgIERhdGFMYXlvdXQgPSAiZS1tOmUtaTY0OjY0LW4zMjo2NCI7CistICAgICAgQUJJID0gImVs ZnYyIjsKKyAgICAgfSBlbHNlIHsKKyAgICAgICBEYXRhTGF5b3V0ID0gIkUtbTplLWk2NDo2NC1u MzI6NjQiOworLSAgICAgIEFCSSA9ICJlbGZ2MSI7CisgICAgIH0KKysgICAgQUJJID0gImVsZnYy IjsKKyAKKyAgICAgaWYgKFRyaXBsZS5pc09TRnJlZUJTRCgpIHx8IFRyaXBsZS5pc09TT3BlbkJT RCgpIHx8IFRyaXBsZS5pc011c2woKSkgeworICAgICAgIExvbmdEb3VibGVXaWR0aCA9IExvbmdE b3VibGVBbGlnbiA9IDY0OworLS0tIGEvY2xhbmcvbGliL0NvZGVHZW4vVGFyZ2V0SW5mby5jcHAK KysrKyBiL2NsYW5nL2xpYi9Db2RlR2VuL1RhcmdldEluZm8uY3BwCitAQCAtMTA5MjcsOSArMTA5 MjcsOSBAQCBjb25zdCBUYXJnZXRDb2RlR2VuSW5mbyAmQ29kZUdlbk1vZHVsZTo6Z2V0VGFyZ2V0 Q29kZUdlbkluZm8oKSB7CisgICAgICAgcmV0dXJuIFNldENHSW5mbyhuZXcgQUlYVGFyZ2V0Q29k ZUdlbkluZm8oVHlwZXMsIC8qSXM2NEJpdCovIHRydWUpKTsKKyAKKyAgICAgaWYgKFRyaXBsZS5p c09TQmluRm9ybWF0RUxGKCkpIHsKKy0gICAgICBQUEM2NF9TVlI0X0FCSUluZm86OkFCSUtpbmQg S2luZCA9IFBQQzY0X1NWUjRfQUJJSW5mbzo6RUxGdjE7CistICAgICAgaWYgKGdldFRhcmdldCgp LmdldEFCSSgpID09ICJlbGZ2MiIpCistICAgICAgICBLaW5kID0gUFBDNjRfU1ZSNF9BQklJbmZv OjpFTEZ2MjsKKysgICAgICBQUEM2NF9TVlI0X0FCSUluZm86OkFCSUtpbmQgS2luZCA9IFBQQzY0 X1NWUjRfQUJJSW5mbzo6RUxGdjI7CisrICAgICAgaWYgKGdldFRhcmdldCgpLmdldEFCSSgpID09 ICJlbGZ2MSIpCisrICAgICAgICBLaW5kID0gUFBDNjRfU1ZSNF9BQklJbmZvOjpFTEZ2MTsKKyAg ICAgICBib29sIElzU29mdEZsb2F0ID0gQ29kZUdlbk9wdHMuRmxvYXRBQkkgPT0gInNvZnQiOwor IAorICAgICAgIHJldHVybiBTZXRDR0luZm8oCistLS0gYS9jbGFuZy9saWIvRHJpdmVyL1Rvb2xD aGFpbnMvQ2xhbmcuY3BwCisrKysgYi9jbGFuZy9saWIvRHJpdmVyL1Rvb2xDaGFpbnMvQ2xhbmcu Y3BwCitAQCAtMTkyMCwxNCArMTkyMCw3IEBAIHZvaWQgQ2xhbmc6OkFkZFBQQ1RhcmdldEFyZ3Mo Y29uc3QgQXJnTGlzdCAmQXJncywKKyAgIGNvbnN0IGxsdm06OlRyaXBsZSAmVCA9IGdldFRvb2xD aGFpbigpLmdldFRyaXBsZSgpOworICAgaWYgKFQuaXNPU0JpbkZvcm1hdEVMRigpKSB7CisgICAg IHN3aXRjaCAoZ2V0VG9vbENoYWluKCkuZ2V0QXJjaCgpKSB7CistICAgIGNhc2UgbGx2bTo6VHJp cGxlOjpwcGM2NDogeworLSAgICAgIGlmICgoVC5pc09TRnJlZUJTRCgpICYmIFQuZ2V0T1NNYWpv clZlcnNpb24oKSA+PSAxMykgfHwKKy0gICAgICAgICAgVC5pc09TT3BlbkJTRCgpIHx8IFQuaXNN dXNsKCkpCistICAgICAgICBBQklOYW1lID0gImVsZnYyIjsKKy0gICAgICBlbHNlCistICAgICAg ICBBQklOYW1lID0gImVsZnYxIjsKKy0gICAgICBicmVhazsKKy0gICAgfQorKyAgICBjYXNlIGxs dm06OlRyaXBsZTo6cHBjNjQ6CisgICAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGM2NGxlOgorICAg ICAgIEFCSU5hbWUgPSAiZWxmdjIiOworICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9sbHZtMTMvcGF0Y2hlcy9jb21waWxlci1ydC1hYXJjaDY0LXVjb250ZXh0LnBhdGNoIGIvc3Jj cGtncy9sbHZtMTMvcGF0Y2hlcy9jb21waWxlci1ydC1hYXJjaDY0LXVjb250ZXh0LnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODkzYzA1OWQ3YjhkCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9jb21waWxlci1ydC1hYXJjaDY0 LXVjb250ZXh0LnBhdGNoCkBAIC0wLDAgKzEsMTEgQEAKKy0tLSBhL2NvbXBpbGVyLXJ0L2xpYi9z YW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9saW51eC5jcHAub3JpZworKysrIGIvY29tcGlsZXIt cnQvbGliL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmNwcAorQEAgLTE3OTksNyAr MTc5OSw3IEBACisgCisgc3RhdGljIGJvb2wgQWFyY2g2NEdldEVTUih1Y29udGV4dF90ICp1Y29u dGV4dCwgdTY0ICplc3IpIHsKKyAgIHN0YXRpYyBjb25zdCB1MzIga0Vzck1hZ2ljID0gMHg0NTUz NTIwMTsKKy0gIHU4ICphdXggPSB1Y29udGV4dC0+dWNfbWNvbnRleHQuX19yZXNlcnZlZDsKKysg IHU4ICphdXggPSByZWludGVycHJldF9jYXN0PHU4ICo+KHVjb250ZXh0LT51Y19tY29udGV4dC5f X3Jlc2VydmVkKTsKKyAgIHdoaWxlICh0cnVlKSB7CisgICAgIF9hYXJjaDY0X2N0eCAqY3R4ID0g KF9hYXJjaDY0X2N0eCAqKWF1eDsKKyAgICAgaWYgKGN0eC0+c2l6ZSA9PSAwKSBicmVhazsKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY29tcGlsZXItcnQtc2FuaXRpemVyLXBw YzY0LW11c2wucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NvbXBpbGVyLXJ0LXNhbml0 aXplci1wcGM2NC1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uMzVmMTZkMjRmMzQwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTMvcGF0 Y2hlcy9jb21waWxlci1ydC1zYW5pdGl6ZXItcHBjNjQtbXVzbC5wYXRjaApAQCAtMCwwICsxLDM1 IEBACistLS0gYS9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGlu dXguY3BwCisrKysgYi9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJf bGludXguY3BwCitAQCAtNzQsNiArNzQsMTAgQEAKKyAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4K KyAjZW5kaWYKKyAKKysjaWYgU0FOSVRJWkVSX0xJTlVYICYmIGRlZmluZWQoX19wb3dlcnBjX18p CisrI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKysjZW5kaWYKKysKKyAjaWYgU0FOSVRJWkVSX0xJ TlVYICYmICFTQU5JVElaRVJfQU5EUk9JRAorICNpbmNsdWRlIDxzeXMvcGVyc29uYWxpdHkuaD4K KyAjZW5kaWYKKy0tLSBhL2NvbXBpbGVyLXJ0L2xpYi9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXpl cl9wbGF0Zm9ybV9saW1pdHNfcG9zaXguY3BwCisrKysgYi9jb21waWxlci1ydC9saWIvc2FuaXRp emVyX2NvbW1vbi9zYW5pdGl6ZXJfcGxhdGZvcm1fbGltaXRzX3Bvc2l4LmNwcAorQEAgLTkyLDcg KzkyLDcgQEAKKyAjIGluY2x1ZGUgPHV0aW1lLmg+CisgIyBpbmNsdWRlIDxzeXMvcHRyYWNlLmg+ CisgI2lmIGRlZmluZWQoX19taXBzNjQpIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmlu ZWQoX19hcm1fXykgfHwgXAorLSAgICBTQU5JVElaRVJfUklTQ1Y2NAorKyAgICBkZWZpbmVkKF9f cG93ZXJwY19fKSB8fCBTQU5JVElaRVJfUklTQ1Y2NAorICMgIGluY2x1ZGUgPGFzbS9wdHJhY2Uu aD4KKyAjICBpZmRlZiBfX2FybV9fCisgdHlwZWRlZiBzdHJ1Y3QgdXNlcl9mcHJlZ3MgZWxmX2Zw cmVnc2V0X3Q7CistLS0gYS9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6 ZXJfc3RvcHRoZXdvcmxkX2xpbnV4X2xpYmNkZXAuY3BwCisrKysgYi9jb21waWxlci1ydC9saWIv c2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfc3RvcHRoZXdvcmxkX2xpbnV4X2xpYmNkZXAuY3Bw CitAQCAtMzEsNyArMzEsNyBAQAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4gLy8gZm9yIHBpZF90 CisgI2luY2x1ZGUgPHN5cy91aW8uaD4gLy8gZm9yIGlvdmVjCisgI2luY2x1ZGUgPGVsZi5oPiAv LyBmb3IgTlRfUFJTVEFUVVMKKy0jaWYgKGRlZmluZWQoX19hYXJjaDY0X18pIHx8IFNBTklUSVpF Ul9SSVNDVjY0KSAmJiAhU0FOSVRJWkVSX0FORFJPSUQKKysjaWYgKGRlZmluZWQoX19hYXJjaDY0 X18pIHx8IGRlZmluZWQoX19wb3dlcnBjX18pIHx8IFNBTklUSVpFUl9SSVNDVjY0KSAmJiAhU0FO SVRJWkVSX0FORFJPSUQKKyAvLyBHTElCQyAyLjIwKyBzeXMvdXNlciBkb2VzIG5vdCBpbmNsdWRl IGFzbS9wdHJhY2UuaAorICMgaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorICNlbmRpZgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9jb21waWxlci1ydC14cmF5LXBwYzY0LW11c2wu cGF0Y2ggYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NvbXBpbGVyLXJ0LXhyYXktcHBjNjQtbXVz bC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQwYjYxYzgw Yzg5NwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY29tcGlsZXIt cnQteHJheS1wcGM2NC1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsNjIgQEAKKy0tLSBhL2NvbXBpbGVy LXJ0L2xpYi94cmF5L3hyYXlfcG93ZXJwYzY0LmluYworKysrIGIvY29tcGlsZXItcnQvbGliL3hy YXkveHJheV9wb3dlcnBjNjQuaW5jCitAQCAtMTIsNyArMTIsMTMgQEAKKyAKKyAjaW5jbHVkZSA8 Y3N0ZGludD4KKyAjaW5jbHVkZSA8bXV0ZXg+CisrI2lmZGVmIF9fR0xJQkNfXworICNpbmNsdWRl IDxzeXMvcGxhdGZvcm0vcHBjLmg+CisrI2Vsc2UKKysjaW5jbHVkZSA8Y2N0eXBlPgorKyNpbmNs dWRlIDxjc3RyaW5nPgorKyNpbmNsdWRlIDxjc3RkbGliPgorKyNlbmRpZgorIAorICNpbmNsdWRl ICJ4cmF5X2RlZnMuaCIKKyAKK0BAIC0yMCwxMyArMjYsNDUgQEAgbmFtZXNwYWNlIF9feHJheSB7 CisgCisgQUxXQVlTX0lOTElORSB1aW50NjRfdCByZWFkVFNDKHVpbnQ4X3QgJkNQVSkgWFJBWV9O RVZFUl9JTlNUUlVNRU5UIHsKKyAgIENQVSA9IDA7CisrI2lmZGVmIF9fR0xJQkNfXworICAgcmV0 dXJuIF9fcHBjX2dldF90aW1lYmFzZSgpOworKyNlbHNlCisrICByZXR1cm4gX19idWlsdGluX3Bw Y19nZXRfdGltZWJhc2UoKTsKKysjZW5kaWYKKyB9CisgCisgaW5saW5lIHVpbnQ2NF90IGdldFRT Q0ZyZXF1ZW5jeSgpIFhSQVlfTkVWRVJfSU5TVFJVTUVOVCB7CisgICBzdGF0aWMgc3RkOjptdXRl eCBNOworICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IEd1YXJkKE0pOworKyNpZmRlZiBf X0dMSUJDX18KKyAgIHJldHVybiBfX3BwY19nZXRfdGltZWJhc2VfZnJlcSgpOworKyNlbHNlCisr ICAvKiBGSVhNRTogYSBsZXNzIGRpcnR5IGltcGxlbWVudGF0aW9uPyAqLworKyAgc3RhdGljIHVp bnQ2NF90IGJhc2U7CisrICBpZiAoIWJhc2UpIHsKKysgICAgRklMRSAqZiA9IGZvcGVuKCIvcHJv Yy9jcHVpbmZvIiwgInJiIik7CisrICAgIGlmIChmKSB7CisrICAgICAgc3NpemVfdCBucjsKKysg ICAgICAvKiB2aXJ0dWFsbHkgYWx3YXlzIGJpZyBlbm91Z2ggdG8gaG9sZCB0aGUgbGluZSAqLwor KyAgICAgIGNoYXIgYnVmWzUxMl07CisrICAgICAgd2hpbGUgKGZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1 ZiksIGYpKSB7CisrICAgICAgICBjaGFyICpyZXQgPSBzdHJzdHIoYnVmLCAidGltZWJhc2UiKTsK KysgICAgICAgIGlmICghcmV0KSB7CisrICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgfQor KyAgICAgICAgcmV0ICs9IHNpemVvZigidGltZWJhc2UiKSAtIDE7CisrICAgICAgICByZXQgPSBz dHJjaHIocmV0LCAnOicpOworKyAgICAgICAgaWYgKCFyZXQpIHsKKysgICAgICAgICAgY29udGlu dWU7CisrICAgICAgICB9CisrICAgICAgICBiYXNlID0gc3RydG91bChyZXQgKyAxLCBudWxscHRy LCAxMCk7CisrICAgICAgICBicmVhazsKKysgICAgICB9CisrICAgICAgZmNsb3NlKGYpOworKyAg ICB9CisrICB9CisrICByZXR1cm4gYmFzZTsKKysjZW5kaWYKKyB9CisgCisgaW5saW5lIGJvb2wg cHJvYmVSZXF1aXJlZENQVUZlYXR1cmVzKCkgWFJBWV9ORVZFUl9JTlNUUlVNRU5UIHsKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGliY3h4LW11c2wucGF0Y2ggYi9zcmNwa2dz L2xsdm0xMy9wYXRjaGVzL2xpYmN4eC1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uYmJkMzFmZmMyY2IxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9sbHZtMTMvcGF0Y2hlcy9saWJjeHgtbXVzbC5wYXRjaApAQCAtMCwwICsxLDI2IEBACistLS0g YS9saWJjeHgvaW5jbHVkZS9sb2NhbGUKKysrKyBiL2xpYmN4eC9pbmNsdWRlL2xvY2FsZQorQEAg LTc0Miw3ICs3NDIsMTEgQEAgX19udW1fZ2V0X3NpZ25lZF9pbnRlZ3JhbChjb25zdCBjaGFyKiBf X2EsIGNvbnN0IGNoYXIqIF9fYV9lbmQsCisgICAgICAgICB0eXBlbmFtZSByZW1vdmVfcmVmZXJl bmNlPGRlY2x0eXBlKGVycm5vKT46OnR5cGUgX19zYXZlX2Vycm5vID0gZXJybm87CisgICAgICAg ICBlcnJubyA9IDA7CisgICAgICAgICBjaGFyICpfX3AyOworKyNpZiBkZWZpbmVkKF9fbGludXhf XykgJiYgIWRlZmluZWQoX19HTElCQ19fKQorKyAgICAgICAgbG9uZyBsb25nIF9fbGwgPSBzdHJ0 b2xsKF9fYSwgJl9fcDIsIF9fYmFzZSk7CisrI2Vsc2UKKyAgICAgICAgIGxvbmcgbG9uZyBfX2xs ID0gc3RydG9sbF9sKF9fYSwgJl9fcDIsIF9fYmFzZSwgX0xJQkNQUF9HRVRfQ19MT0NBTEUpOwor KyNlbmRpZgorICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxkZWNsdHlwZShlcnJu byk+Ojp0eXBlIF9fY3VycmVudF9lcnJubyA9IGVycm5vOworICAgICAgICAgaWYgKF9fY3VycmVu dF9lcnJubyA9PSAwKQorICAgICAgICAgICAgIGVycm5vID0gX19zYXZlX2Vycm5vOworQEAgLTc4 Miw3ICs3ODYsMTEgQEAgX19udW1fZ2V0X3Vuc2lnbmVkX2ludGVncmFsKGNvbnN0IGNoYXIqIF9f YSwgY29uc3QgY2hhciogX19hX2VuZCwKKyAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVu Y2U8ZGVjbHR5cGUoZXJybm8pPjo6dHlwZSBfX3NhdmVfZXJybm8gPSBlcnJubzsKKyAgICAgICAg IGVycm5vID0gMDsKKyAgICAgICAgIGNoYXIgKl9fcDI7CisrI2lmIGRlZmluZWQoX19saW51eF9f KSAmJiAhZGVmaW5lZChfX0dMSUJDX18pCisrICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgX19s bCA9IHN0cnRvdWxsKF9fYSwgJl9fcDIsIF9fYmFzZSk7CisrI2Vsc2UKKyAgICAgICAgIHVuc2ln bmVkIGxvbmcgbG9uZyBfX2xsID0gc3RydG91bGxfbChfX2EsICZfX3AyLCBfX2Jhc2UsIF9MSUJD UFBfR0VUX0NfTE9DQUxFKTsKKysjZW5kaWYKKyAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9yZWZl cmVuY2U8ZGVjbHR5cGUoZXJybm8pPjo6dHlwZSBfX2N1cnJlbnRfZXJybm8gPSBlcnJubzsKKyAg ICAgICAgIGlmIChfX2N1cnJlbnRfZXJybm8gPT0gMCkKKyAgICAgICAgICAgICBlcnJubyA9IF9f c2F2ZV9lcnJubzsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGliY3h4LXBw Yy5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGliY3h4LXBwYy5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdhOTJmODAwNGUxYwotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGliY3h4LXBwYy5wYXRjaApAQCAtMCww ICsxLDIyIEBACitUaGlzIGVuc3VyZXMgYGlzX2llYzU1OWAgaXMgZGVmaW5lZCBjb3JyZWN0bHkg dW5kZXIgYWxsIGxvbmcgZG91YmxlIEFCSXMsCitpbmNsdWRpbmcgbXVzbCBhbmQgaXRzIDY0LWJp dCBsb25nIGRvdWJsZS4gQWxzbywgYF9fcHBjX19gIG9yIGBfX3BwYzY0X19gCitpcyBub3QgZGVm aW5lZCBvbiBnY2MuCisKKy0tLSBhL2xpYmN4eC9pbmNsdWRlL2xpbWl0cworKysrIGIvbGliY3h4 L2luY2x1ZGUvbGltaXRzCitAQCAtNDI2LDggKzQyNiwxNCBAQCBwcm90ZWN0ZWQ6CisgICAgIF9M SUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgc3RhdGljIF9MSUJDUFBfQ09OU1RFWFBSIHR5cGUgc2ln bmFsaW5nX05hTigpIF9OT0VYQ0VQVCB7cmV0dXJuIF9fYnVpbHRpbl9uYW5zbCgiIik7fQorICAg ICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHN0YXRpYyBfTElCQ1BQX0NPTlNURVhQUiB0eXBl IGRlbm9ybV9taW4oKSBfTk9FWENFUFQge3JldHVybiBfX0xEQkxfREVOT1JNX01JTl9fO30KKyAK Ky0jaWYgKGRlZmluZWQoX19wcGNfXykgfHwgZGVmaW5lZChfX3BwYzY0X18pKQorKyNpZiBkZWZp bmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrI2lmIChfX0xEQkxf TUFYX0VYUF9fID4gX19EQkxfTUFYX0VYUF9fKSB8fCAoX19MREJMX01BTlRfRElHX18gPT0gX19E QkxfTUFOVF9ESUdfXykKKysgICAgLyogSUVFRSA3NTQgcXVhZHJ1cGxlIG9yIGRvdWJsZSBwcmVj aXNpb24gKi8KKysgICAgc3RhdGljIF9MSUJDUFBfQ09OU1RFWFBSIGNvbnN0IGJvb2wgaXNfaWVj NTU5ID0gdHJ1ZTsKKysjZWxzZQorKyAgICAvKiAxMjgtYml0IElCTSBkb3VibGUtZG91YmxlICov CisgICAgIHN0YXRpYyBfTElCQ1BQX0NPTlNURVhQUiBjb25zdCBib29sIGlzX2llYzU1OSA9IGZh bHNlOworKyNlbmRpZgorICNlbHNlCisgICAgIHN0YXRpYyBfTElCQ1BQX0NPTlNURVhQUiBjb25z dCBib29sIGlzX2llYzU1OSA9IHRydWU7CisgI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xs dm0xMy9wYXRjaGVzL2xpYmN4eC1zc3Atbm9uc2hhcmVkLnBhdGNoIGIvc3JjcGtncy9sbHZtMTMv cGF0Y2hlcy9saWJjeHgtc3NwLW5vbnNoYXJlZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLjcwMjkyYmViMmZjZAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3MvbGx2bTEzL3BhdGNoZXMvbGliY3h4LXNzcC1ub25zaGFyZWQucGF0Y2gKQEAgLTAsMCArMSwx MSBAQAorLS0tIGEvbGliY3h4L0NNYWtlTGlzdHMudHh0CisrKysgYi9saWJjeHgvQ01ha2VMaXN0 cy50eHQKK0BAIC03NjksNiArNzY5LDggQEAgZnVuY3Rpb24oY3h4X2xpbmtfc3lzdGVtX2xpYnJh cmllcyB0YXJnZXQpCisgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke3RhcmdldH0gUFJJVkFU RSBhdG9taWMpCisgICBlbmRpZigpCisgCisrI3NzcCAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7 dGFyZ2V0fSBQUklWQVRFIHNzcF9ub25zaGFyZWQpCisrCisgICBpZiAoTUlOR1cpCisgICAgIHRh cmdldF9saW5rX2xpYnJhcmllcygke3RhcmdldH0gUFJJVkFURSAiJHtNSU5HV19MSUJSQVJJRVN9 IikKKyAgIGVuZGlmKCkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGliY3h4 YWJpLWRsLnBhdGNoIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9saWJjeHhhYmktZGwucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zYTE1ZjlkYjhjOTgKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xpYmN4eGFiaS1kbC5wYXRj aApAQCAtMCwwICsxLDI1IEBACitBbHNvIGxpbmsgdG8gLWxkbCB0byBwcmV2ZW50IHVuZGVmaW5l ZCByZWZlcmVuY2VzLgorCistLS0gYS9saWJjeHhhYmkvc3JjL0NNYWtlTGlzdHMudHh0CisrKysg Yi9saWJjeHhhYmkvc3JjL0NNYWtlTGlzdHMudHh0CitAQCAtNzMsNiArNzMsNyBAQAorICAgZW5k aWYoKQorIAorICAgYWRkX2xpYnJhcnlfZmxhZ3NfaWYoTElCQ1hYQUJJX0hBU19DX0xJQiBjKQor KyAgYWRkX2xpYnJhcnlfZmxhZ3NfaWYoTElCQ1hYQUJJX0hBU19DX0xJQiBkbCkKKyBlbmRpZigp CisgCisgaWYgKExJQkNYWEFCSV9VU0VfTExWTV9VTldJTkRFUikKKy0tLSBhL2xpYmN4eC9DTWFr ZUxpc3RzLnR4dAorKysrIGIvbGliY3h4L0NNYWtlTGlzdHMudHh0CitAQCAtNzQ1LDYgKzc0NSwx MCBAQAorICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHt0YXJnZXR9IFBSSVZBVEUgbSkKKyAg IGVuZGlmKCkKKyAKKysgIGlmIChMSUJDWFhfSEFTX0NfTElCKQorKyAgICB0YXJnZXRfbGlua19s aWJyYXJpZXMoJHt0YXJnZXR9IFBSSVZBVEUgZGwpCisrICBlbmRpZigpCisrCisgICBpZiAoTElC Q1hYX0hBU19SVF9MSUIpCisgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke3RhcmdldH0gUFJJ VkFURSBydCkKKyAgIGVuZGlmKCkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMv bGlidW53aW5kLXBwYzMyLnBhdGNoIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9saWJ1bndpbmQt cHBjMzIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43NGFh NzU3NmVjZjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xpYnVu d2luZC1wcGMzMi5wYXRjaApAQCAtMCwwICsxLDYzIEBACitUaGlzIGZpeGVzIGJ1aWxkIGF0IGxl YXN0IHdpdGggZ2NjOSB3aGljaCBkb2VzIG5vdCBkZWZpbmUgYF9fcHBjX19gLgorCistLS0gYS9s aWJ1bndpbmQvaW5jbHVkZS9fX2xpYnVud2luZF9jb25maWcuaAorKysrIGIvbGlidW53aW5kL2lu Y2x1ZGUvX19saWJ1bndpbmRfY29uZmlnLmgKK0BAIC00OSw3ICs0OSw3IEBACisgIyAgZGVmaW5l IF9MSUJVTldJTkRfQ09OVEVYVF9TSVpFIDE2NworICMgIGRlZmluZSBfTElCVU5XSU5EX0NVUlNP Ul9TSVpFIDE3OQorICMgIGRlZmluZSBfTElCVU5XSU5EX0hJR0hFU1RfRFdBUkZfUkVHSVNURVIg X0xJQlVOV0lORF9ISUdIRVNUX0RXQVJGX1JFR0lTVEVSX1BQQzY0CistIyBlbGlmIGRlZmluZWQo X19wcGNfXykKKysjIGVsaWYgZGVmaW5lZChfX3Bvd2VycGNfXykKKyAjICBkZWZpbmUgX0xJQlVO V0lORF9UQVJHRVRfUFBDIDEKKyAjICBkZWZpbmUgX0xJQlVOV0lORF9DT05URVhUX1NJWkUgMTE3 CisgIyAgZGVmaW5lIF9MSUJVTldJTkRfQ1VSU09SX1NJWkUgMTI0CistLS0gYS9saWJ1bndpbmQv c3JjL1Vud2luZFJlZ2lzdGVyc1Jlc3RvcmUuUworKysrIGIvbGlidW53aW5kL3NyYy9VbndpbmRS ZWdpc3RlcnNSZXN0b3JlLlMKK0BAIC0zOTIsNyArMzkyLDcgQEAgTG5vdmVjOgorICAgUFBDNjRf TFIoMykKKyAgIGJjdHIKKyAKKy0jZWxpZiBkZWZpbmVkKF9fcHBjX18pCisrI2VsaWYgZGVmaW5l ZChfX3Bvd2VycGNfXykKKyAKKyBERUZJTkVfTElCVU5XSU5EX0ZVTkNUSU9OKF9aTjlsaWJ1bndp bmQxM1JlZ2lzdGVyc19wcGM2anVtcHRvRXYpCisgLy8KKy0tLSBhL2xpYnVud2luZC9zcmMvVW53 aW5kUmVnaXN0ZXJzU2F2ZS5TCisrKysgYi9saWJ1bndpbmQvc3JjL1Vud2luZFJlZ2lzdGVyc1Nh dmUuUworQEAgLTU1NCw3ICs1NTQsNyBAQCBERUZJTkVfTElCVU5XSU5EX0ZVTkNUSU9OKF9fdW53 X2dldGNvbnRleHQpCisgICBibHIKKyAKKyAKKy0jZWxpZiBkZWZpbmVkKF9fcHBjX18pCisrI2Vs aWYgZGVmaW5lZChfX3Bvd2VycGNfXykKKyAKKyAvLworIC8vIGV4dGVybiBpbnQgdW53X2dldGNv bnRleHQodW53X2NvbnRleHRfdCogdGhyZWFkX3N0YXRlKQorLS0tIGEvbGlidW53aW5kL3NyYy9j b25maWcuaAorKysrIGIvbGlidW53aW5kL3NyYy9jb25maWcuaAorQEAgLTk1LDEyICs5NSwxMiBA QAorICNkZWZpbmUgX0xJQlVOV0lORF9CVUlMRF9TSkxKX0FQSVMKKyAjZW5kaWYKKyAKKy0jaWYg ZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fcHBj X18pIHx8IGRlZmluZWQoX19wcGM2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrI2lm IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3Bv d2VycGNfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICNkZWZpbmUgX0xJQlVOV0lORF9T VVBQT1JUX0ZSQU1FX0FQSVMKKyAjZW5kaWYKKyAKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwg ZGVmaW5lZChfX3g4Nl82NF9fKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor LSAgICBkZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQoX19wcGM2NF9fKSB8fCBkZWZpbmVkKF9f cG93ZXJwYzY0X18pIHx8ICAgICAgICBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRl ZmluZWQoX19wb3dlcnBjNjRfXykgfHwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg KCFkZWZpbmVkKF9fQVBQTEVfXykgJiYgZGVmaW5lZChfX2FybV9fKSkgfHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICAoZGVmaW5lZChfX2FybTY0X18pIHx8IGRlZmluZWQo X19hYXJjaDY0X18pKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIGRlZmlu ZWQoX19taXBzX18pCistLS0gYS9saWJ1bndpbmQvc3JjL2xpYnVud2luZC5jcHAKKysrKyBiL2xp YnVud2luZC9zcmMvbGlidW53aW5kLmNwcAorQEAgLTQyLDcgKzQyLDcgQEAgX0xJQlVOV0lORF9I SURERU4gaW50IF9fdW53X2luaXRfbG9jYWwodW53X2N1cnNvcl90ICpjdXJzb3IsCisgIyBkZWZp bmUgUkVHSVNURVJfS0lORCBSZWdpc3RlcnNfeDg2XzY0CisgI2VsaWYgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQorICMgZGVmaW5lIFJFR0lTVEVSX0tJTkQgUmVnaXN0ZXJzX3BwYzY0CistI2VsaWYg ZGVmaW5lZChfX3BwY19fKQorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjX18pCisgIyBkZWZpbmUg UkVHSVNURVJfS0lORCBSZWdpc3RlcnNfcHBjCisgI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykK KyAjIGRlZmluZSBSRUdJU1RFUl9LSU5EIFJlZ2lzdGVyc19hcm02NApkaWZmIC0tZ2l0IGEvc3Jj cGtncy9sbHZtMTMvcGF0Y2hlcy9sbGRiLW11c2wucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMy9wYXRj aGVzL2xsZGItbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLjYwMWMwZDEzODUyMwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNo ZXMvbGxkYi1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKKy0tLSBhL2xsZGIvc291cmNlL1Bs dWdpbnMvUHJvY2Vzcy9MaW51eC9Qcm9jZnMuaAorKysrIGIvbGxkYi9zb3VyY2UvUGx1Z2lucy9Q cm9jZXNzL0xpbnV4L1Byb2Nmcy5oCitAQCAtMTAsMjEgKzEwLDEyIEBACisgLy8gc3lzL3Byb2Nm cy5oIG9uIEFuZHJvaWQvTGludXggZm9yIGFsbCBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcy4KKyAK KyAjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgorKyNpbmNsdWRlIDxhc20vcHRyYWNlLmg+CisgCist I2lmZGVmIF9fQU5EUk9JRF9fCistI2lmIGRlZmluZWQoX19hcm02NF9fKSB8fCBkZWZpbmVkKF9f YWFyY2g2NF9fKQorLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBlbGZfZ3JlZ190OworLXR5cGVkZWYg ZWxmX2dyZWdfdAorLSAgICBlbGZfZ3JlZ3NldF90WyhzaXplb2Yoc3RydWN0IHVzZXJfcHRfcmVn cykgLyBzaXplb2YoZWxmX2dyZWdfdCkpXTsKKy10eXBlZGVmIHN0cnVjdCB1c2VyX2Zwc2ltZF9z dGF0ZSBlbGZfZnByZWdzZXRfdDsKKy0jaWZuZGVmIE5UX0ZQUkVHU0VUCistI2RlZmluZSBOVF9G UFJFR1NFVCBOVF9QUkZQUkVHCistI2VuZGlmIC8vIE5UX0ZQUkVHU0VUCistI2VsaWYgZGVmaW5l ZChfX21pcHNfXykKKy0jaWZuZGVmIE5UX0ZQUkVHU0VUCistI2RlZmluZSBOVF9GUFJFR1NFVCBO VF9QUkZQUkVHCistI2VuZGlmIC8vIE5UX0ZQUkVHU0VUCistI2VuZGlmCistI2Vsc2UgLy8gX19B TkRST0lEX18KKysjaWYgIWRlZmluZWQoX19HTElCQ19fKSAmJiBkZWZpbmVkKF9fcG93ZXJwY19f KQorKyNkZWZpbmUgcHRfcmVncyBtdXNsX3B0X3JlZ3MKKysjaW5jbHVkZSA8c3lzL3Byb2Nmcy5o PgorKyN1bmRlZiBwdF9yZWdzCisrI2Vsc2UKKyAjaW5jbHVkZSA8c3lzL3Byb2Nmcy5oPgorLSNl bmRpZiAvLyBfX0FORFJPSURfXworKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTMv cGF0Y2hlcy9sbHZtLTAwMS1tdXNsLnBhdGNoIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9sbHZt LTAwMS1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u ZjJhM2Y4ZDYyODEzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9s bHZtLTAwMS1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK0Zyb20gZmFjYTNmYmQxNWQwYzMx MDg0OTNjM2M1NGNkOTMxMzhlMDQ5YWM0MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206 IEFuZHJlYSBCcmFuY2FsZW9uaSA8bWl3YXhlQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgOCBTZXAg MjAxNSAyMjowMzowMiArMDIwMAorU3ViamVjdDogW1BBVENIIDMvM10gbXVzbAorCistLS0KKyBp bmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uaCB8IDkgKysrKysrKysrCisg bGliL1N1cHBvcnQvRHluYW1pY0xpYnJhcnkuY3BwICAgICAgICAgICAgfCAyICstCisgbGliL1N1 cHBvcnQvVW5peC9TaWduYWxzLmluYyAgICAgICAgICAgICAgfCA2ICsrKy0tLQorIHV0aWxzL3Vu aXR0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LmNjICAgIHwgMSArCisgNSBmaWxlcyBjaGFuZ2Vk LCAxNyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9sbHZtL0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZvLmggYi9pbmNsdWRlL2xsdm0vQW5hbHlz aXMvVGFyZ2V0TGlicmFyeUluZm8uaAoraW5kZXggMzRhOGExZTMuLjEyMTRlY2U1IDEwMDY0NAor LS0tIGEvbGx2bS9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uaAorKysr IGIvbGx2bS9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uaAorQEAgLTE4 LDYgKzE4LDE1IEBACisgI2luY2x1ZGUgImxsdm0vSVIvUGFzc01hbmFnZXIuaCIKKyAjaW5jbHVk ZSAibGx2bS9QYXNzLmgiCisgCisrI3VuZGVmIGZvcGVuNjQKKysjdW5kZWYgZnNlZWtvNjQKKysj dW5kZWYgZnN0YXQ2NAorKyN1bmRlZiBmc3RhdHZmczY0CisrI3VuZGVmIGZ0ZWxsbzY0CisrI3Vu ZGVmIGxzdGF0NjQKKysjdW5kZWYgc3RhdDY0CisrI3VuZGVmIHRtcGZpbGU2NAorKworIG5hbWVz cGFjZSBsbHZtIHsKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgQXJyYXlSZWY7CisgY2xh c3MgVHJpcGxlOworZGlmZiAtLWdpdCBhL2xpYi9TdXBwb3J0L1VuaXgvRHluYW1pY0xpYnJhcnku aW5jIGIvbGliL1N1cHBvcnQvVW5peC9EeW5hbWljTGlicmFyeS5pbmMKK2luZGV4IGEyYTM3OTk2 Li4yZjg2YzQ3MCAxMDA2NDQKKy0tLSBhL2xsdm0vbGliL1N1cHBvcnQvVW5peC9EeW5hbWljTGli cmFyeS5pbmMKKysrKyBiL2xsdm0vbGliL1N1cHBvcnQvVW5peC9EeW5hbWljTGlicmFyeS5pbmMK K0BAIC0xMDIsNyArMTAyLDcgQEAgc3RhdGljIHZvaWQgKkRvU2VhcmNoKGNvbnN0IGNoYXIqIFN5 bWJvbE5hbWUpIHsKKyAKKyAvLyBUaGlzIG1hY3JvIHJldHVybnMgdGhlIGFkZHJlc3Mgb2YgYSB3 ZWxsLWtub3duLCBleHBsaWNpdCBzeW1ib2wKKyAjZGVmaW5lIEVYUExJQ0lUX1NZTUJPTChTWU0p IFwKKy0gICBpZiAoIXN0cmNtcChTeW1ib2xOYW1lLCAjU1lNKSkgcmV0dXJuICZTWU0KKysgICBp ZiAoIXN0cmNtcChTeW1ib2xOYW1lLCAjU1lNKSkgcmV0dXJuICh2b2lkICopJlNZTQorIAorIC8v IFVuZGVyIGdsaWJjIHdlIGhhdmUgYSB3ZWlyZCBzaXR1YXRpb24uIFRoZSBzdGRlcnIvb3V0L2lu IHN5bWJvbHMgYXJlIGJvdGgKKyAvLyBtYWNyb3MgYW5kIGdsb2JhbCB2YXJpYWJsZXMgYmVjYXVz ZSBvZiBzdGFuZGFyZHMgcmVxdWlyZW1lbnRzLiBTbywgd2UKK2RpZmYgLS1naXQgYS91dGlscy91 bml0dGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVzdC5jYyBiL3V0aWxzL3VuaXR0ZXN0L2dvb2dsZXRl c3Qvc3JjL2d0ZXN0LmNjCitpbmRleCBkODgyYWIyZS4uZjFmYjEyZDAgMTAwNjQ0CistLS0gYS9s bHZtL3V0aWxzL3VuaXR0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LmNjCisrKysgYi9sbHZtL3V0 aWxzL3VuaXR0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LmNjCitAQCAtMTI4LDYgKzEyOCw3IEBA CisgCisgI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKyAjIGluY2x1ZGUgPGFycGEvaW5l dC5oPiAgLy8gTk9MSU5UCisrIyBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+ICAvLyBOT0xJTlQKKyAj IGluY2x1ZGUgPG5ldGRiLmg+ICAvLyBOT0xJTlQKKyAjIGluY2x1ZGUgPHN5cy9zb2NrZXQuaD4g IC8vIE5PTElOVAorICMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+ICAvLyBOT0xJTlQKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0wMDItbXVzbC1wcGM2NC1lbGZ2Mi5wYXRj aCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0wMDItbXVzbC1wcGM2NC1lbGZ2Mi5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjAwNzFkOTY0YmQzNwot LS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0wMDItbXVzbC1w cGM2NC1lbGZ2Mi5wYXRjaApAQCAtMCwwICsxLDMwIEBACitUaGlzIHBhdGNoZXMgTExWTSB0byB1 c2UgRUxGdjIgb24gcHBjNjQgdW5jb25kaXRpb25hbGx5IHVubGVzcyBvdmVycmlkZGVuLiBXZQor bmVlZCB0aGlzIGJlY2F1c2UgdW5saWtlIG1vc3QgZGlzdHJvcyB3ZSB1c2UgRUxGdjIgZm9yIGJv dGggZ2xpYmMgYW5kIG11c2wKK29uIGJpZyBlbmRpYW4gcHBjNjQuCisKK2RpZmYgLS1naXQgYS9s aWIvVGFyZ2V0L1Bvd2VyUEMvUFBDVGFyZ2V0TWFjaGluZS5jcHAgYi9saWIvVGFyZ2V0L1Bvd2Vy UEMvUFBDVGFyZ2V0TWFjaGluZS5jcHAKK2luZGV4IDA2MzQ4MzNlLi5iN2NiYzJlNyAxMDA2NDQK Ky0tLSBhL2xsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ1RhcmdldE1hY2hpbmUuY3BwCisrKysg Yi9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENUYXJnZXRNYWNoaW5lLmNwcAorQEAgLTIyMiw5 ICsyMjIsOCBAQCBzdGF0aWMgUFBDVGFyZ2V0TWFjaGluZTo6UFBDQUJJIGNvbXB1dGVUYXJnZXRB QkkoY29uc3QgVHJpcGxlICZUVCwKKyAKKyAgIHN3aXRjaCAoVFQuZ2V0QXJjaCgpKSB7CisgICBj YXNlIFRyaXBsZTo6cHBjNjRsZToKKy0gICAgcmV0dXJuIFBQQ1RhcmdldE1hY2hpbmU6OlBQQ19B QklfRUxGdjI7CisgICBjYXNlIFRyaXBsZTo6cHBjNjQ6CistICAgIHJldHVybiBQUENUYXJnZXRN YWNoaW5lOjpQUENfQUJJX0VMRnYxOworKyAgICByZXR1cm4gUFBDVGFyZ2V0TWFjaGluZTo6UFBD X0FCSV9FTEZ2MjsKKyAgIGRlZmF1bHQ6CisgICAgIHJldHVybiBQUENUYXJnZXRNYWNoaW5lOjpQ UENfQUJJX1VOS05PV047CisgICB9CitkaWZmIC0tZ2l0IGEvdGVzdC9Db2RlR2VuL1Bvd2VyUEMv cHBjNjQtZWxmLWFiaS5sbCBiL3Rlc3QvQ29kZUdlbi9Qb3dlclBDL3BwYzY0LWVsZi1hYmkubGwK K2luZGV4IDhiMWNmNmI1Li4yOTZhMmFmYSAxMDA2NDQKKy0tLSBhL2xsdm0vdGVzdC9Db2RlR2Vu L1Bvd2VyUEMvcHBjNjQtZWxmLWFiaS5sbAorKysrIGIvbGx2bS90ZXN0L0NvZGVHZW4vUG93ZXJQ Qy9wcGM2NC1lbGYtYWJpLmxsCitAQCAtMSw0ICsxLDUgQEAKKy07IFJVTjogbGxjIC12ZXJpZnkt bWFjaGluZWluc3RycyAtbXRyaXBsZT1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUgPCAlcyB8 IEZpbGVDaGVjayAlcyAtY2hlY2stcHJlZml4PUNIRUNLLUVMRnYxCisrOyBSVU46IGxsYyAtdmVy aWZ5LW1hY2hpbmVpbnN0cnMgLW10cmlwbGU9cG93ZXJwYzY0LXVua25vd24tbGludXgtZ251IDwg JXMgfCBGaWxlQ2hlY2sgJXMgLWNoZWNrLXByZWZpeD1DSEVDSy1FTEZ2MgorKzsgUlVOOiBsbGMg LXZlcmlmeS1tYWNoaW5laW5zdHJzIC1tdHJpcGxlPXBvd2VycGM2NC11bmtub3duLWxpbnV4LW11 c2wgPCAlcyB8IEZpbGVDaGVjayAlcyAtY2hlY2stcHJlZml4PUNIRUNLLUVMRnYyCisgOyBSVU46 IGxsYyAtdmVyaWZ5LW1hY2hpbmVpbnN0cnMgLW10cmlwbGU9cG93ZXJwYzY0LXVua25vd24tbGlu dXgtZ251IC10YXJnZXQtYWJpIGVsZnYxIDwgJXMgfCBGaWxlQ2hlY2sgJXMgLWNoZWNrLXByZWZp eD1DSEVDSy1FTEZ2MQorIDsgUlVOOiBsbGMgLXZlcmlmeS1tYWNoaW5laW5zdHJzIC1tdHJpcGxl PXBvd2VycGM2NC11bmtub3duLWxpbnV4LWdudSAtdGFyZ2V0LWFiaSBlbGZ2MiA8ICVzIHwgRmls ZUNoZWNrICVzIC1jaGVjay1wcmVmaXg9Q0hFQ0stRUxGdjIKKyA7IFJVTjogbGxjIC12ZXJpZnkt bWFjaGluZWluc3RycyAtbXRyaXBsZT1wb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdudSA8ICVz IHwgRmlsZUNoZWNrICVzIC1jaGVjay1wcmVmaXg9Q0hFQ0stRUxGdjIKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0wMDMtcHBjLXNlY3VyZXBsdC5wYXRjaCBiL3NyY3Br Z3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0wMDMtcHBjLXNlY3VyZXBsdC5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI1ZDE1OTc0Mzc1ZAotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0wMDMtcHBjLXNlY3VyZXBsdC5wYXRj aApAQCAtMCwwICsxLDExIEBACistLS0gYS9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENTdWJ0 YXJnZXQuY3BwCisrKysgYi9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENTdWJ0YXJnZXQuY3Bw CitAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgUFBDU3VidGFyZ2V0Ojppbml0U3VidGFyZ2V0RmVh dHVyZXMoU3RyaW5nUmVmIENQVSwgU3RyaW5nUmVmIEZTKSB7CisgCisgICBpZiAoKFRhcmdldFRy aXBsZS5pc09TRnJlZUJTRCgpICYmIFRhcmdldFRyaXBsZS5nZXRPU01ham9yVmVyc2lvbigpID49 IDEzKSB8fAorICAgICAgIFRhcmdldFRyaXBsZS5pc09TTmV0QlNEKCkgfHwgVGFyZ2V0VHJpcGxl LmlzT1NPcGVuQlNEKCkgfHwKKy0gICAgICBUYXJnZXRUcmlwbGUuaXNNdXNsKCkpCisrICAgICAg aXNUYXJnZXRMaW51eCgpKQorICAgICBTZWN1cmVQbHQgPSB0cnVlOworIAorICAgaWYgKEhhc1NQ RSAmJiBJc1BQQzY0KQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9sbHZtLTAw NC1vdmVycmlkZS1vcHQucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xsdm0tMDA0LW92 ZXJyaWRlLW9wdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LjUxZDBlNGIzMWIzMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMv bGx2bS0wMDQtb3ZlcnJpZGUtb3B0LnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKK1RoaXMgYWxsb3dz IHVzIHRvIG92ZXJyaWRlIHRoZSBvcHRpbWl6YXRpb24gbGV2ZWwgYXMgbm90IGFsbCBwbGF0Zm9y bXMgY2FuCitkZWFsIHdpdGggLU8zLgorCistLS0gYS9sbHZtL0NNYWtlTGlzdHMudHh0CisrKysg Yi9sbHZtL0NNYWtlTGlzdHMudHh0CitAQCAtOTE4LDYgKzkxOCwxMiBAQCBpZiggTUlOR1cgQU5E IE5PVCAiJHtDTUFLRV9DWFhfQ09NUElMRVJfSUR9IiBNQVRDSEVTICJDbGFuZyIgKQorICAgbGx2 bV9yZXBsYWNlX2NvbXBpbGVyX29wdGlvbihDTUFLRV9DWFhfRkxBR1NfUkVMRUFTRSAiLU8zIiAi LU8yIikKKyBlbmRpZigpCisgCisrc2V0KFZPSURfQ1hYX09QVF9GTEFHUyAiIiBDQUNIRSBTVFJJ TkcgIk9wdGltaXphdGlvbiBsZXZlbCB0byB1c2UiKQorKworK2lmIChOT1QgVk9JRF9DWFhfT1BU X0ZMQUdTIFNUUkVRVUFMICIiKQorKyAgICBsbHZtX3JlcGxhY2VfY29tcGlsZXJfb3B0aW9uKENN QUtFX0NYWF9GTEFHU19SRUxFQVNFICItTzMiICIke1ZPSURfQ1hYX09QVF9GTEFHU30iKQorK2Vu ZGlmKCkKKysKKyAjIFB1dCB0aGlzIGJlZm9yZSB0YmxnZW4uIEVsc2Ugd2UgaGF2ZSBhIGNpcmN1 bGFyIGRlcGVuZGVuY2UuCisgYWRkX3N1YmRpcmVjdG9yeShsaWIvRGVtYW5nbGUpCisgYWRkX3N1 YmRpcmVjdG9yeShsaWIvU3VwcG9ydCkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNo ZXMvbGx2bS0wMDUtcHBjLWJpZ3BpYy5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2 bS0wMDUtcHBjLWJpZ3BpYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLmQzMzI2ODdiOWQ5MgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3Bh dGNoZXMvbGx2bS0wMDUtcHBjLWJpZ3BpYy5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIGYz ZGJkZDQ5YzA2YmZhZmMxZDYxMzgwOTRjZjQyODg5YzE0ZDM4YjYgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCitGcm9tOiBTYW11ZWwgSG9sbGFuZCA8c2FtdWVsQHNob2xsYW5kLm9yZz4KK0RhdGU6 IFN1biwgMyBOb3YgMjAxOSAxMDo1NzoyNyAtMDYwMAorU3ViamVjdDogW1BBVENIXSBbTExWTV1b UG93ZXJQQ10gQXNzdW1lIEJpZ1BJQyBpZiBubyBQSUMgbGV2ZWwgaXMgc3BlY2lmaWVkCisKKy0t LQorIGxsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ0FzbVByaW50ZXIuY3BwICB8IDIgKy0KKyBs bHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENNQ0luc3RMb3dlci5jcHAgfCAyICstCisgMiBmaWxl cyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQg YS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDQXNtUHJpbnRlci5jcHAgYi9saWIvVGFyZ2V0L1Bvd2Vy UEMvUFBDQXNtUHJpbnRlci5jcHAKK2luZGV4IGNjZTIxZjMyLi44N2NhNWY5YiAxMDA2NDQKKy0t LSBhL2xsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ0FzbVByaW50ZXIuY3BwCisrKysgYi9sbHZt L2xpYi9UYXJnZXQvUG93ZXJQQy9QUENBc21QcmludGVyLmNwcAorQEAgLTUyMCw3ICs1MjAsNyBA QCB2b2lkIFBQQ0FzbVByaW50ZXI6OkVtaXRUbHNDYWxsKGNvbnN0IE1hY2hpbmVJbnN0ciAqTUks CisgCisgICAvLyBBZGQgMzI3Njggb2Zmc2V0IHRvIHRoZSBzeW1ib2wgc28gd2UgZm9sbG93IHVw IHRoZSBsYXRlc3QgR09UL1BMVCBBQkkuCisgICBpZiAoS2luZCA9PSBNQ1N5bWJvbFJlZkV4cHI6 OlZLX1BMVCAmJiBTdWJ0YXJnZXQtPmlzU2VjdXJlUGx0KCkgJiYKKy0gICAgICBNLT5nZXRQSUNM ZXZlbCgpID09IFBJQ0xldmVsOjpCaWdQSUMpCisrICAgICAgTS0+Z2V0UElDTGV2ZWwoKSAhPSBQ SUNMZXZlbDo6U21hbGxQSUMpCisgICAgIFRsc1JlZiA9IE1DQmluYXJ5RXhwcjo6Y3JlYXRlQWRk KAorICAgICAgICAgVGxzUmVmLCBNQ0NvbnN0YW50RXhwcjo6Y3JlYXRlKDMyNzY4LCBPdXRDb250 ZXh0KSwgT3V0Q29udGV4dCk7CisgICBjb25zdCBNYWNoaW5lT3BlcmFuZCAmTU8gPSBNSS0+Z2V0 T3BlcmFuZCgyKTsKK2RpZmYgLS1naXQgYS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDTUNJbnN0TG93 ZXIuY3BwIGIvbGliL1RhcmdldC9Qb3dlclBDL1BQQ01DSW5zdExvd2VyLmNwcAoraW5kZXggNWNj MTgwZDcuLmE1YjAyNTY1IDEwMDY0NAorLS0tIGEvbGx2bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBD TUNJbnN0TG93ZXIuY3BwCisrKysgYi9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENNQ0luc3RM b3dlci5jcHAKK0BAIC0xMTcsNyArMTE3LDcgQEAgc3RhdGljIE1DT3BlcmFuZCBHZXRTeW1ib2xS ZWYoY29uc3QgTWFjaGluZU9wZXJhbmQgJk1PLCBjb25zdCBNQ1N5bWJvbCAqU3ltYm9sLAorICAg Y29uc3QgTUNFeHByICpFeHByID0gTUNTeW1ib2xSZWZFeHByOjpjcmVhdGUoU3ltYm9sLCBSZWZL aW5kLCBDdHgpOworICAgLy8gSWYgLW1zZWN1cmUtcGx0IC1mUElDLCBhZGQgMzI3NjggdG8gc3lt Ym9sLgorICAgaWYgKFN1YnRhcmdldC0+aXNTZWN1cmVQbHQoKSAmJiBUTS5pc1Bvc2l0aW9uSW5k ZXBlbmRlbnQoKSAmJgorLSAgICAgIE0tPmdldFBJQ0xldmVsKCkgPT0gUElDTGV2ZWw6OkJpZ1BJ QyAmJgorKyAgICAgIE0tPmdldFBJQ0xldmVsKCkgIT0gUElDTGV2ZWw6OlNtYWxsUElDICYmCisg ICAgICAgTU8uZ2V0VGFyZ2V0RmxhZ3MoKSA9PSBQUENJSTo6TU9fUExUKQorICAgICBFeHByID0K KyAgICAgICAgIE1DQmluYXJ5RXhwcjo6Y3JlYXRlQWRkKEV4cHIsIE1DQ29uc3RhbnRFeHByOjpj cmVhdGUoMzI3NjgsIEN0eCksIEN0eCk7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMy9wYXRj aGVzL2xsdm0tMDA2LWFhcmNoNjQtbWZfZXhlYy5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNo ZXMvbGx2bS0wMDYtYWFyY2g2NC1tZl9leGVjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uYTAwYWJkMjE2NjY1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9sbHZtMTMvcGF0Y2hlcy9sbHZtLTAwNi1hYXJjaDY0LW1mX2V4ZWMucGF0Y2gKQEAgLTAsMCAr MSwyNSBAQAorRml4IGZhaWx1cmVzIGluIEFsbG9jYXRpb25UZXN0cy9NYXBwZWRNZW1vcnlUZXN0 Liogb24gYWFyY2g2NDoKKworICAgIEZhaWxpbmcgVGVzdHMgKDgpOgorICAgICAgICBMTFZNLVVu aXQgOjogU3VwcG9ydC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFwcGVkTWVtb3J5 VGVzdC5BbGxvY0FuZFJlbGVhc2UvMworICAgICAgICBMTFZNLVVuaXQgOjogU3VwcG9ydC8uL1N1 cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFwcGVkTWVtb3J5VGVzdC5EdXBsaWNhdGVOZWFy LzMKKyAgICAgICAgTExWTS1Vbml0IDo6IFN1cHBvcnQvLi9TdXBwb3J0VGVzdHMvQWxsb2NhdGlv blRlc3RzL01hcHBlZE1lbW9yeVRlc3QuRW5hYmxlZFdyaXRlLzMKKyAgICAgICAgTExWTS1Vbml0 IDo6IFN1cHBvcnQvLi9TdXBwb3J0VGVzdHMvQWxsb2NhdGlvblRlc3RzL01hcHBlZE1lbW9yeVRl c3QuTXVsdGlwbGVBbGxvY0FuZFJlbGVhc2UvMworICAgICAgICBMTFZNLVVuaXQgOjogU3VwcG9y dC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFwcGVkTWVtb3J5VGVzdC5TdWNjZXNz aXZlTmVhci8zCisgICAgICAgIExMVk0tVW5pdCA6OiBTdXBwb3J0Ly4vU3VwcG9ydFRlc3RzL0Fs bG9jYXRpb25UZXN0cy9NYXBwZWRNZW1vcnlUZXN0LlVuYWxpZ25lZE5lYXIvMworICAgICAgICBM TFZNLVVuaXQgOjogU3VwcG9ydC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFwcGVk TWVtb3J5VGVzdC5aZXJvTmVhci8zCisgICAgICAgIExMVk0tVW5pdCA6OiBTdXBwb3J0Ly4vU3Vw cG9ydFRlc3RzL0FsbG9jYXRpb25UZXN0cy9NYXBwZWRNZW1vcnlUZXN0Llplcm9TaXplTmVhci8z CisKK1Vwc3RyZWFtLUlzc3VlOiBodHRwczovL2J1Z3MubGx2bS5vcmcvc2hvd19idWcuY2dpP2lk PTE0Mjc4I2MxMAorCistLS0gYS9sbHZtL2xpYi9TdXBwb3J0L1VuaXgvTWVtb3J5LmluYworKysr IGIvbGx2bS9saWIvU3VwcG9ydC9Vbml4L01lbW9yeS5pbmMKK0BAIC01OCw3ICs1OCw3IEBAIHN0 YXRpYyBpbnQgZ2V0UG9zaXhQcm90ZWN0aW9uRmxhZ3ModW5zaWduZWQgRmxhZ3MpIHsKKyAgICAg cmV0dXJuIFBST1RfUkVBRCB8IFBST1RfV1JJVEUgfCBQUk9UX0VYRUM7CisgICBjYXNlIGxsdm06 OnN5czo6TWVtb3J5OjpNRl9FWEVDOgorICNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVm aW5lZChfX1BPV0VSUENfXykgfHwgZGVmaW5lZCAoX19wcGNfXykgfHwgXAorLSAgICAgZGVmaW5l ZChfUE9XRVIpIHx8IGRlZmluZWQoX0FSQ0hfUFBDKSkKKysgICAgIGRlZmluZWQoX1BPV0VSKSB8 fCBkZWZpbmVkKF9BUkNIX1BQQykgfHwgKGRlZmluZWQoX19saW51eF9fKSAmJiBkZWZpbmVkKF9f YWFyY2g2NF9fKSkpCisgICAgIC8vIE9uIFBvd2VyUEMsIGhhdmluZyBhbiBleGVjdXRhYmxlIHBh Z2UgdGhhdCBoYXMgbm8gcmVhZCBwZXJtaXNzaW9uCisgICAgIC8vIGNhbiBoYXZlIHVuaW50ZW5k ZWQgY29uc2VxdWVuY2VzLiAgVGhlIGZ1bmN0aW9uIEludmFsaWRhdGVJbnN0cnVjdGlvbi0KKyAg ICAgLy8gQ2FjaGUgdXNlcyBpbnN0cnVjdGlvbnMgZGNiZiBhbmQgaWNiaSwgYm90aCBvZiB3aGlj aCBhcmUgdHJlYXRlZCBieQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9wcGMz Mi1jb21waWxlci1ydC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvcHBjMzItY29tcGls ZXItcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44ZTBh OWE3NzlkMWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL3BwYzMy LWNvbXBpbGVyLXJ0LnBhdGNoCkBAIC0wLDAgKzEsMjEgQEAKK2NvbW1pdCBiYTRlZGU1OTVmZjk1 OTkyMzJmNWRkMmI0Mzg0YzI0MzEzN2I1M2ZjCitBdXRob3I6IERhbmllbCBLb2xlc2EgPGRhbmll bEBvY3RhZm9yZ2Uub3JnPgorRGF0ZTogICBUdWUgSnVuIDIyIDIzOjQwOjU0IDIwMjEgKzAyMDAK KworICAgIGVuYWJsZSBjb21waWxlci1ydCBzdXBwb3J0IGZvciBwcGMzMgorCitkaWZmIC0tZ2l0 IGEvY29tcGlsZXItcnQvY21ha2UvYmFzZS1jb25maWctaXguY21ha2UgYi9jb21waWxlci1ydC9j bWFrZS9iYXNlLWNvbmZpZy1peC5jbWFrZQoraW5kZXggMWVkYWI0My4uNWMwYzhhMiAxMDA2NDQK Ky0tLSBhL2NvbXBpbGVyLXJ0L2NtYWtlL2Jhc2UtY29uZmlnLWl4LmNtYWtlCisrKysgYi9jb21w aWxlci1ydC9jbWFrZS9iYXNlLWNvbmZpZy1peC5jbWFrZQorQEAgLTE4Miw5ICsxODIsNyBAQCBt YWNybyh0ZXN0X3RhcmdldHMpCisgICAgIGVsc2VpZigiJHtDT01QSUxFUl9SVF9ERUZBVUxUX1RB UkdFVF9BUkNIfSIgTUFUQ0hFUyAicG93ZXJwYzY0bGUiKQorICAgICAgIHRlc3RfdGFyZ2V0X2Fy Y2gocG93ZXJwYzY0bGUgIiIgIi1tNjQiKQorICAgICBlbHNlaWYoIiR7Q09NUElMRVJfUlRfREVG QVVMVF9UQVJHRVRfQVJDSH0iIE1BVENIRVMgInBvd2VycGMiKQorLSAgICAgIGlmKENNQUtFX1NZ U1RFTV9OQU1FIE1BVENIRVMgIkFJWCIpCistICAgICAgICB0ZXN0X3RhcmdldF9hcmNoKHBvd2Vy cGMgIiIgIi1tMzIiKQorLSAgICAgIGVuZGlmKCkKKysgICAgICB0ZXN0X3RhcmdldF9hcmNoKHBv d2VycGMgIiIgIi1tMzIiKQorICAgICAgIHRlc3RfdGFyZ2V0X2FyY2gocG93ZXJwYzY0ICIiICIt bTY0IikKKyAgICAgZWxzZWlmKCIke0NPTVBJTEVSX1JUX0RFRkFVTFRfVEFSR0VUX0FSQ0h9IiBN QVRDSEVTICJzMzkweCIpCisgICAgICAgdGVzdF90YXJnZXRfYXJjaChzMzkweCAiIiAiIikKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3RlbXBsYXRlIGIvc3JjcGtncy9sbHZtMTMvdGVtcGxh dGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wOGQ4NDc0NzI1MjUK LS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy90ZW1wbGF0ZQpAQCAtMCwwICsxLDQy MyBAQAorIyBUZW1wbGF0ZSBmaWxlIGZvciAnbGx2bTEzJworcGtnbmFtZT1sbHZtMTMKK3ZlcnNp b249MTMuMC4wCityZXZpc2lvbj0xCit3cmtzcmM9Imxsdm0tcHJvamVjdC0ke3ZlcnNpb259LnNy YyIKK2J1aWxkX3dya3NyYz1sbHZtCitidWlsZF9zdHlsZT1jbWFrZQorY29uZmlndXJlX2FyZ3M9 IgorIC1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIC1Xbm8tZGV2CisgLURFTkFCTEVfTElOS0VS X0JVSUxEX0lEPVlFUworIC1ETExEQl9VU0VfU1lTVEVNX1NJWD1ZRVMKKyAtRExJQkNYWF9DWFhf QUJJPWxpYmN4eGFiaQorIC1ETElCQ1hYX0VOQUJMRV9TVEFUSUNfQUJJX0xJQlJBUlk9WUVTCisg LURMSUJDWFhBQklfVVNFX0xMVk1fVU5XSU5ERVI9WUVTCisgLURMSUJDWFhBQklfRU5BQkxFX1NU QVRJQ19VTldJTkRFUj1ZRVMKKyAtRExJQk9NUF9FTkFCTEVfU0hBUkVEPVlFUworIC1ETElCT01Q X0lOU1RBTExfQUxJQVNFUz1OTworIC1ETExWTV9JTkNMVURFX0RPQ1M9WUVTCisgLURMTFZNX0JV SUxEX0RPQ1M9WUVTCisgLURMTFZNX0VOQUJMRV9TUEhJTlg9WUVTCisgLURTUEhJTlhfV0FSTklO R1NfQVNfRVJST1JTPU5PCisgLURMTFZNX0lOU1RBTExfVVRJTFM9WUVTCisgLURMTFZNX0JVSUxE X0xMVk1fRFlMSUI9WUVTCisgLURMTFZNX0xJTktfTExWTV9EWUxJQj1ZRVMKKyAtRExMVk1fRU5B QkxFX1JUVEk9WUVTCisgLURMTFZNX0VOQUJMRV9GRkk9WUVTCisgLURMTFZNX0JJTlVUSUxTX0lO Q0RJUj0vdXNyL2luY2x1ZGUiCitob3N0bWFrZWRlcGVuZHM9InBlcmwgcHl0aG9uMyB6bGliLWRl dmVsIGxpYmZmaS1kZXZlbCBzd2lnIHB5dGhvbjMtU3BoaW54CisgcHl0aG9uMy1yZWNvbW1vbm1h cmsgcHl0aG9uMy1zcGhpbngtYXV0b21vZGFwaSIKK21ha2VkZXBlbmRzPSJweXRob24zLWRldmVs IHpsaWItZGV2ZWwgZWxmdXRpbHMtZGV2ZWwgbGliZmZpLWRldmVsIGxpYmVkaXQtZGV2ZWwKKyBs aWJ4bWwyLWRldmVsIGJpbnV0aWxzLWRldmVsIGxpYmF0b21pYy1kZXZlbCIKK2RlcGVuZHM9Imxp Ymxsdm0xMz49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKK3Nob3J0X2Rlc2M9IkxvdyBMZXZlbCBW aXJ0dWFsIE1hY2hpbmUiCittYWludGFpbmVyPSJxNjYgPGRhbmllbEBvY3RhZm9yZ2Uub3JnPiIK K2xpY2Vuc2U9IkFwYWNoZS0yLjAiCitob21lcGFnZT0iaHR0cHM6Ly93d3cubGx2bS5vcmciCitk aXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdC9yZWxlYXNlcy9k b3dubG9hZC9sbHZtb3JnLSR7dmVyc2lvbn0vbGx2bS1wcm9qZWN0LSR7dmVyc2lvbn0uc3JjLnRh ci54eiIKK2NoZWNrc3VtPTYwNzVhZDMwZjFhYzBlMTVmMDdjMWJmMDYyYzFlMTI2OGMyNDFkNjc0 ZjExYmQzMmNkZjBlMDQwYzcxZjJiZjMKK2xpYjMyZGlzYWJsZWQ9eWVzCitweXRob25fdmVyc2lv bj0zCisKK2lmIFsgIiRYQlBTX1RBUkdFVF9MSUJDIiA9ICJtdXNsIiBdOyB0aGVuCisJY29uZmln dXJlX2FyZ3MrPSIgLURMSUJDWFhfSEFTX01VU0xfTElCQz1ZRVMiCisJbWFrZWRlcGVuZHMrPSIg bGliZXhlY2luZm8tZGV2ZWwiCisJZGVwZW5kcys9IiBsaWJleGVjaW5mby1kZXZlbCIKK2ZpCisK KyMgIm9wZXJhbmQgb3V0IG9mIHJhbmdlIiBhc3NlbWJsZXIgZmFpbHVyZXMKK2Nhc2UgIiRYQlBT X1RBUkdFVF9NQUNISU5FIiBpbgorCXBwYzY0KikgOzsKKwlwcGMqKSBjb25maWd1cmVfYXJncys9 IiAtRENMQU5HX0VOQUJMRV9DTEFOR0Q9T0ZGIiA7OworZXNhYworCitfZW5hYmxlZF9wcm9qZWN0 cz0iY2xhbmc7Y2xhbmctdG9vbHMtZXh0cmE7Y29tcGlsZXItcnQ7bGliY3h4O2xpYmN4eGFiaTts aWJ1bndpbmQ7bGxkIgorCitfbGxkYl9lbmFibGU9eWVzCitfbGlib21wX2VuYWJsZT1ubworCitj YXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwlwcGM2NGxlKikgOzsKKwlwcGMqfGk2ODYq KSBfbGxkYl9lbmFibGU9bm8gOzsKK2VzYWMKKworY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUi IGluCisJeDg2XzY0KnxhYXJjaDY0KnxwcGM2NCopIF9saWJvbXBfZW5hYmxlPXllczs7Citlc2Fj CisKK3N1YnBhY2thZ2VzPSJjbGFuZy10b29scy1leHRyYSIKKworIyBtdXN0IGdvIGJlZm9yZSBj bGFuZworaWYgWyAiJF9saWJvbXBfZW5hYmxlIiA9ICJ5ZXMiIF07IHRoZW4KKwlfZW5hYmxlZF9w cm9qZWN0cys9IjtvcGVubXAiCisJc3VicGFja2FnZXMrPSIgbGlib21wIGxpYm9tcC1kZXZlbCIK KwkjIGJlY2F1c2Ugb2YgY21ha2Ugbm9uc2Vuc2UgcmVmZXJlbmNpbmcgbGlib21wdGFyZ2V0LnNv LioKKwlkZXBlbmRzKz0iIGxpYm9tcD49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKK2ZpCisKK3N1 YnBhY2thZ2VzKz0iIGNsYW5nIGNsYW5nLWFuYWx5emVyIGxpYmNsYW5nIGxpYmNsYW5nLWNwcAor IGxsdm0tbGlidW53aW5kIGxsdm0tbGlidW53aW5kLWRldmVsIGxpYmN4eCBsaWJjeHgtZGV2ZWwK KyBsaWJjeHhhYmkgbGliY3h4YWJpLWRldmVsIGxpYmxsdm0xMyIKKworaWYgWyAiJF9sbGRiX2Vu YWJsZSIgPSAieWVzIiBdOyB0aGVuCisJIyBYWFggZmFpbHMgdG8gY3Jvc3MgY29tcGlsZSBkdWUg dG8gcHl0aG9uCisJX2VuYWJsZWRfcHJvamVjdHMrPSI7bGxkYiIKKwlzdWJwYWNrYWdlcys9IiBs bGRiIGxsZGItZGV2ZWwiCitmaQorCitzdWJwYWNrYWdlcys9IiBsbGQgbGxkLWRldmVsIgorCitj b25maWd1cmVfYXJncys9IiAtRExMVk1fRU5BQkxFX1BST0pFQ1RTPSR7X2VuYWJsZWRfcHJvamVj dHN9IgorCitwb3N0X3BhdGNoKCkgeworCWlmIFsgIiRfbGxkYl9lbmFibGUiID0gInllcyIgXTsg dGhlbgorCQlpZiBbICIkWEJQU19UQVJHRVRfTElCQyIgPSAibXVzbCIgXTsgdGhlbgorCQkJdnNl ZCAtaSAnc3xfX3B0cmFjZV9yZXF1ZXN0fGludHxnJyBcCisJCQkJJHt3cmtzcmN9L2xsZGIvc291 cmNlL1BsdWdpbnMvUHJvY2Vzcy9MaW51eC9OYXRpdmVQcm9jZXNzTGludXguY3BwCisJCWZpCisJ CSMgZGlzYWJsZSBkb2NzIGZvciBsbGRiIGFzIHRoZXkgZmFpbCB0byBnZW5lcmF0ZQorCQl2c2Vk IC1pICcvYWRkX3N1YmRpcmVjdG9yeShkb2NzKS9kJyBcCisJCQkke3dya3NyY30vbGxkYi9DTWFr ZUxpc3RzLnR4dAorCWZpCisKKwkjIHVwZGF0ZSBjb25maWcuZ3Vlc3MgZm9yIGJldHRlciBwbGF0 Zm9ybSBkZXRlY3Rpb24KKwljcCAkWEJQU19DT01NT05ESVIvZW52aXJvbm1lbnQvY29uZmlndXJl L2F1dG9tYWtlL2NvbmZpZy5ndWVzcyBcCisJCSR7d3Jrc3JjfS9sbHZtL2NtYWtlCisKKwkjIGZp eCBsaW5rZXIgZmFpbHVyZXMgb24gc29tZSBhcmNocworCXZzZWQgLWkgJ3MsY2hlY2tfbGlicmFy eV9leGlzdHMoZ2NjX3MgLiosc2V0KExJQkNYWEFCSV9IQVNfR0NDX1NfTElCIE9OKSwnIFwKKwkJ JHt3cmtzcmN9L2xpYmN4eGFiaS9jbWFrZS9jb25maWctaXguY21ha2UKKwl2c2VkIC1pICdzLGNo ZWNrX2xpYnJhcnlfZXhpc3RzKGdjYyAuKixzZXQoTElCQ1hYQUJJX0hBU19HQ0NfTElCIE9OKSwn IFwKKwkJJHt3cmtzcmN9L2xpYmN4eGFiaS9jbWFrZS9jb25maWctaXguY21ha2UKKworCSMgbmVl ZCBsaWJzc3Bfbm9uc2hhcmVkIG9uIHNvbWUgbXVzbCBwbGF0Zm9ybXMgKGJlY2F1c2Ugb2Ygbm9k ZWZhdWx0bGlicykKKwljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwkJcHBjNjQqKSA7 OworCQlwcGMqLW11c2x8aTY4Ni1tdXNsfG1pcHMqLW11c2wpCisJCQl2c2VkIC1pICdzLF4jIFNl dHVwIGZsYWdzLiQsYWRkX2xpYnJhcnlfZmxhZ3Moc3NwX25vbnNoYXJlZCksJyBcCisJCQkJJHt3 cmtzcmN9L2xpYnVud2luZC9zcmMvQ01ha2VMaXN0cy50eHQKKwkJCXZzZWQgLWkgJ3MsXiMgU2V0 dXAgZmxhZ3MuJCxhZGRfbGlicmFyeV9mbGFncyhzc3Bfbm9uc2hhcmVkKSwnIFwKKwkJCQkke3dy a3NyY30vbGliY3h4YWJpL3NyYy9DTWFrZUxpc3RzLnR4dAorCQkJdnNlZCAtaSAncywjc3NwLCwn ICR7d3Jrc3JjfS9saWJjeHgvQ01ha2VMaXN0cy50eHQKKwkJCTs7CisJZXNhYworCisJY2FzZSAi JFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJCXg4Nl82NC1tdXNsKSAjIHNvbWUgc2FuaXRpemVy IGN1cnJlbnRseSBvbmx5IG9uIHg4Nl82NCBzdHVmZiBuZWVkcyBiYWNrdHJhY2UKKwkJCXZzZWQg LWkgJ3MsIyBTZXQgY29tbW9uIGxpbmsgZmxhZ3MuLGxpc3QoQVBQRU5EIFNBTklUSVpFUl9DT01N T05fTElOS19MSUJTIGV4ZWNpbmZvKSwnIFwKKwkJCQkke3dya3NyY30vY29tcGlsZXItcnQvQ01h a2VMaXN0cy50eHQKKwkJCTs7CisJCWFybSotbXVzbHxpNjg2LW11c2wpICMgc2FuaXRpemVyIGNv ZGUgaXMgYnJva2VuIHNpbmNlIGl0IGR1cGxpY2F0ZXMgc29tZSBsaWJjIGJpdHMKKwkJCXZzZWQg LWkgJ3Mvc2V0KENPTVBJTEVSX1JUX0hBU19TQU5JVElaRVJfQ09NTU9OIFRSVUUpL3NldChDT01Q SUxFUl9SVF9IQVNfU0FOSVRJWkVSX0NPTU1PTiBGQUxTRSkvJyBcCisJCQkJJHt3cmtzcmN9L2Nv bXBpbGVyLXJ0L2NtYWtlL2NvbmZpZy1peC5jbWFrZQorCQkJOzsKKwllc2FjCit9CisKK3ByZV9j b25maWd1cmUoKSB7CisJbG9jYWwgdHJpcGxldAorCisJIyBWYXN0bHkgcmVkdWNlIHNpemUgb2Yg ZGVidWdnaW5nIHN5bWJvbHM6CisJQ0ZMQUdTPSR7Q0ZMQUdTLyAtZy8gLWcxfQorCUNYWEZMQUdT PSR7Q1hYRkxBR1MvIC1nLyAtZzF9CisKKwkjIHNpbmNlIGdjYzksIHRoZSBidWlsZCBsaWtlcyB0 byBibG93IHVwIGZvciBwcGMzMiBhcHBhcmVudGx5IGJlY2F1c2UKKwkjIG9mIGNsYW5nIGJlaW5n IHRvbyBsYXJnZSBmb3IgYSAyNC1iaXQgcmVsYXRpdmUgY2FsbCB0byB0aGUgUExULCBzbworCSMg b3B0aW1pemUgZm9yIHNpemUgaW5zdGVhZAorCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBp bgorCQlwcGM2NCopIDs7CisJCW1pcHMqLW11c2x8cHBjKikgY29uZmlndXJlX2FyZ3MrPSIgLURW T0lEX0NYWF9PUFRfRkxBR1M9LU9zIiA7OworCWVzYWMKKworCWlmIFsgIiRDUk9TU19CVUlMRCIg XTsgdGhlbgorCQltc2dfbm9ybWFsICJCdWlsZGluZyBob3N0IHRibGdlblxuIgorCQlta2RpciAt cCBidWlsZC9IT1NUCisJCWNkIGJ1aWxkL0hPU1QKKwkJQ0M9IiRCVUlMRF9DQyIgQ1hYPSIkQlVJ TERfQ1hYIiBDRkxBR1M9IiRCVUlMRF9DRkxBR1MiIFwKKwkJCUNYWEZMQUdTPSIkQlVJTERfQ1hY RkxBR1MiIExERkxBR1M9IiRCVUlMRF9MREZMQUdTIiBcCisJCQljbWFrZSAuLi8uLiAtRENNQUtF X0JVSUxEX1RZUEU9UmVsZWFzZSBcCisJCQktRExMVk1fRU5BQkxFX1BST0pFQ1RTPSR7X2VuYWJs ZWRfcHJvamVjdHN9CisJCW1ha2UgJHttYWtlam9ic30gLUMgdXRpbHMvVGFibGVHZW4KKwkJbWFr ZSAke21ha2Vqb2JzfSAtQyB0b29scy9jbGFuZy91dGlscy9UYWJsZUdlbgorCQlbICIkX2xsZGJf ZW5hYmxlIiA9ICJ5ZXMiIF0gJiYgbWFrZSAke21ha2Vqb2JzfSAtQyB0b29scy9sbGRiL3V0aWxz L1RhYmxlR2VuCisJCWNvbmZpZ3VyZV9hcmdzKz0iIC1ETExWTV9UQUJMRUdFTj0ke3dya3NyY30v bGx2bS9idWlsZC9IT1NUL2Jpbi9sbHZtLXRibGdlbiIKKwkJY29uZmlndXJlX2FyZ3MrPSIgLURD TEFOR19UQUJMRUdFTj0ke3dya3NyY30vbGx2bS9idWlsZC9IT1NUL2Jpbi9jbGFuZy10YmxnZW4i CisJCVsgIiRfbGxkYl9lbmFibGUiID0gInllcyIgXSAmJiBjb25maWd1cmVfYXJncys9IiAtRExM REJfVEFCTEVHRU49JHt3cmtzcmN9L2xsdm0vYnVpbGQvSE9TVC9iaW4vbGxkYi10YmxnZW4iCisJ CWNkIC4uLy4uCisJZmkKKworCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgorCQlpNjg2 KikgX2FyY2g9Ilg4NiI7OworCQl4ODZfNjQqKSBfYXJjaD0iWDg2Ijs7CisJCWFybXY1KikgX2Fy Y2g9IkFybXY1dGUiOzsKKwkJYXJtdjYqKSBfYXJjaD0iQXJtdjYiOzsKKwkJYXJtdjcqKSBfYXJj aD0iQXJtdjciOzsKKwkJYWFyY2g2NCopIF9hcmNoPSJBQXJjaDY0Ijs7CisJCW1pcHMqKSBfYXJj aD0iTWlwcyI7OworCQlwcGMqKSBfYXJjaD0iUG93ZXJQQyI7OworCQlyaXNjdjY0KikgX2FyY2g9 IlJJU0NWNjQiOzsKKwllc2FjCisKKwl0cmlwbGV0PSR7WEJQU19DUk9TU19UUklQTEVUOi0kWEJQ U19UUklQTEVUfQorCisJY29uZmlndXJlX2FyZ3MrPSIgLURMTFZNX1RBUkdFVF9BUkNIPSR7X2Fy Y2h9IgorCWNvbmZpZ3VyZV9hcmdzKz0iIC1ETExWTV9IT1NUX1RSSVBMRT0ke3RyaXBsZXR9Igor CWNvbmZpZ3VyZV9hcmdzKz0iIC1ETExWTV9ERUZBVUxUX1RBUkdFVF9UUklQTEU9JHt0cmlwbGV0 fSIKK30KKworZG9faW5zdGFsbCgpIHsKKwljZCBidWlsZAorCWNtYWtlIC1EQ01BS0VfSU5TVEFM TF9QUkVGSVg9JHtERVNURElSfS91c3IgLVAgY21ha2VfaW5zdGFsbC5jbWFrZQorCisJIyBSZXF1 aXJlZCBmb3IgbXVsdGlsaWIuCisJaWYgWyAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiID0gIng4Nl82 NCIgXTsgdGhlbgorCQlmb3IgX2hlYWRlciBpbiBsbHZtLWNvbmZpZzsgZG8KKwkJCW12ICR7REVT VERJUn0vdXNyL2luY2x1ZGUvbGx2bS9Db25maWcvJHtfaGVhZGVyfXssLTY0fS5oCisJCQl2aW5z dGFsbCAke0ZJTEVTRElSfS9sbHZtLUNvbmZpZy0ke19oZWFkZXJ9LmggNjQ0IFwKKwkJCQl1c3Iv aW5jbHVkZS9sbHZtL0NvbmZpZyAke19oZWFkZXJ9LmgKKwkJZG9uZQorCWZpCisKKwkjIFJlbW92 ZSBsbHZtLWNvbmZpZy1ob3N0IGluIGNyb3NzIGJ1aWxkcy4KKwlpZiBbICIkQ1JPU1NfQlVJTEQi IF07IHRoZW4KKwkJcm0gLWYgJHtERVNURElSfS91c3IvYmluL2xsdm0tY29uZmlnLWhvc3QKKwlm aQorCisJIyBJbnN0YWxsIGxpYmN4eGFiaSBoZWFkZXJzCisJdmluc3RhbGwgJHt3cmtzcmN9L2xp YmN4eGFiaS9pbmNsdWRlL19fY3h4YWJpX2NvbmZpZy5oIDY0NCB1c3IvaW5jbHVkZQorCXZpbnN0 YWxsICR7d3Jrc3JjfS9saWJjeHhhYmkvaW5jbHVkZS9jeHhhYmkuaCA2NDQgdXNyL2luY2x1ZGUK KworCSMgSW5zdGFsbCBsaWJ1bndpbmQgaGVhZGVycworCXZpbnN0YWxsICR7d3Jrc3JjfS9saWJ1 bndpbmQvaW5jbHVkZS9fX2xpYnVud2luZF9jb25maWcuaCA2NDQgdXNyL2luY2x1ZGUKKwl2aW5z dGFsbCAke3dya3NyY30vbGlidW53aW5kL2luY2x1ZGUvbGlidW53aW5kLmggNjQ0IHVzci9pbmNs dWRlCisJdmluc3RhbGwgJHt3cmtzcmN9L2xpYnVud2luZC9pbmNsdWRlL3Vud2luZC5oIDY0NCB1 c3IvaW5jbHVkZQorCXZpbnN0YWxsICR7d3Jrc3JjfS9saWJ1bndpbmQvaW5jbHVkZS9tYWNoLW8v Y29tcGFjdF91bndpbmRfZW5jb2RpbmcuaCBcCisJCTY0NCB1c3IvaW5jbHVkZS9tYWNoLW8KK30K KworY2xhbmctYW5hbHl6ZXJfcGFja2FnZSgpIHsKKwlweWNvbXBpbGVfZGlycz0idXNyL3NoYXJl L3NjYW4tdmlldyIKKwlkZXBlbmRzPSJjbGFuZy0ke3ZlcnNpb259XyR7cmV2aXNpb259IHB5dGhv bjMgcGVybCIKKwlzaG9ydF9kZXNjKz0iIC0gQSBzb3VyY2UgY29kZSBhbmFseXNpcyBmcmFtZXdv cmsiCisJaG9tZXBhZ2U9Imh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvIgorCXBrZ19p bnN0YWxsKCkgeworCQl2bW92ZSB1c3Ivc2hhcmUvbWFuL21hbjEvc2Nhbi1idWlsZC4xCisJCXZt b3ZlICIvdXNyL2Jpbi9zY2FuLSoiCisJCXZtb3ZlICIvdXNyL3NoYXJlL3NjYW4tKiIKKwkJdm1v dmUgIi91c3IvbGliZXhlYy8qYW5hbHl6ZXIiCisJfQorfQorCitjbGFuZy10b29scy1leHRyYV9w YWNrYWdlKCkgeworCWxpYjMyZGlzYWJsZWQ9eWVzCisJZGVwZW5kcz0iY2xhbmctJHt2ZXJzaW9u fV8ke3JldmlzaW9ufSBweXRob24zIgorCXNob3J0X2Rlc2MrPSIgLSBFeHRyYSBDbGFuZyB0b29s cyIKKwlob21lcGFnZT0iaHR0cHM6Ly9jbGFuZy5sbHZtLm9yZy9leHRyYS8iCisJcGtnX2luc3Rh bGwoKSB7CisJCXZtb3ZlIHVzci9pbmNsdWRlL2NsYW5nLXRpZHkKKwkJdm1vdmUgdXNyL2Jpbi9j bGFuZy1hcHBseS1yZXBsYWNlbWVudHMKKwkJdm1vdmUgdXNyL2Jpbi9jbGFuZy1xdWVyeQorCQl2 bW92ZSB1c3IvYmluL2NsYW5nLXJlbmFtZQorCQl2bW92ZSB1c3IvYmluL2NsYW5nLXRpZHkKKwkJ dm1vdmUgdXNyL2Jpbi9kaWFndG9vbAorCQl2bW92ZSB1c3IvYmluL2ZpbmQtYWxsLXN5bWJvbHMK KwkJdm1vdmUgdXNyL2Jpbi9obWFwdG9vbAorCQl2bW92ZSB1c3IvYmluL21vZHVsYXJpemUKKwkJ dm1vdmUgdXNyL2Jpbi9wcC10cmFjZQorCQl2bW92ZSB1c3IvYmluL3NhbmNvdgorCQl2bW92ZSAi dXNyL2xpYi9saWJjbGFuZ0FwcGx5UmVwbGFjZW1lbnRzKiIKKwkJdm1vdmUgInVzci9saWIvbGli Y2xhbmdRdWVyeSoiCisJCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nVGlkeSoiCisJCXZtb3ZlICJ1 c3Ivc2hhcmUvY2xhbmcvKnRpZHkqIgorCQl2bW92ZSB1c3Ivc2hhcmUvZG9jL2NsYW5nLXRvb2xz CisJCXZtb3ZlIHVzci9zaGFyZS9tYW4vbWFuMS9leHRyYWNsYW5ndG9vbHMuMQorCQl2bW92ZSB1 c3Ivc2hhcmUvbWFuL21hbjEvZGlhZ3Rvb2wuMQorCX0KK30KKworY2xhbmdfcGFja2FnZSgpIHsK KwlsaWIzMmRpc2FibGVkPXllcworCWRlcGVuZHM9ImxpYnN0ZGMrKy1kZXZlbCBsaWJnY2MtZGV2 ZWwgIGJpbnV0aWxzICR7WEJQU19UQVJHRVRfTElCQ30tZGV2ZWwKKwkgbGliY2xhbmctJHt2ZXJz aW9ufV8ke3JldmlzaW9ufSIKKwlzaG9ydF9kZXNjKz0iIC0gQyBsYW5ndWFnZSBmYW1pbHkgZnJv bnRlbmQiCisJaG9tZXBhZ2U9Imh0dHBzOi8vY2xhbmcubGx2bS5vcmcvIgorCXBrZ19pbnN0YWxs KCkgeworCQl2bW92ZSB1c3IvaW5jbHVkZS9jbGFuZworCQl2bW92ZSB1c3IvaW5jbHVkZS9jbGFu Zy1jCisJCXZtb3ZlICJ1c3IvYmluLypjbGFuZyoiCisJCXZtb3ZlIHVzci9iaW4vYy1pbmRleC10 ZXN0CisJCXZtb3ZlIHVzci9saWIvY2xhbmcKKwkJdm1vdmUgdXNyL2xpYi9jbWFrZS9jbGFuZwor CQl2bW92ZSAidXNyL2xpYi9saWJjbGFuZyouYSIKKwkJdm1vdmUgInVzci9saWIvbGliY2xhbmcq LnNvIgorCQl2bW92ZSB1c3Ivc2hhcmUvY2xhbmcKKwkJdm1vdmUgdXNyL3NoYXJlL2RvYy9jbGFu ZworCQl2bW92ZSB1c3Ivc2hhcmUvbWFuL21hbjEvY2xhbmcuMQorCX0KK30KKworbGliY2xhbmdf cGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gQyBmcm9udGVuZCBydW50aW1lIGxpYnJhcnki CisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nLnNvLioiCisJfQor fQorCitsaWJjbGFuZy1jcHBfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gQyBmcm9udGVu ZCBydW50aW1lIGxpYnJhcnkgKEMrKyBpbnRlcmZhY2UpIgorCXBrZ19pbnN0YWxsKCkgeworCQl2 bW92ZSAidXNyL2xpYi9saWJjbGFuZy1jcHAuc28uKiIKKwl9Cit9CisKK2xsZF9wYWNrYWdlKCkg eworCWxpYjMyZGlzYWJsZWQ9eWVzCisJc2hvcnRfZGVzYys9IiAtIGxpbmtlciIKKwlob21lcGFn ZT0iaHR0cHM6Ly9sbGQubGx2bS5vcmciCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9i aW4vbGxkKgorCQl2bW92ZSB1c3IvYmluL3dhc20tbGQKKwkJdm1vdmUgdXNyL2Jpbi9sZC5sbGQq CisJCXZtb3ZlIHVzci9iaW4vbGQ2NC5sbGQqCisJCXZtb3ZlIHVzci9zaGFyZS9kb2MvbGxkCisJ fQorfQorCitsbGQtZGV2ZWxfcGFja2FnZSgpIHsKKwlsaWIzMmRpc2FibGVkPXllcworCXNob3J0 X2Rlc2MrPSIgLSBsaW5rZXIgLSBkZXZlbG9wbWVudCBmaWxlcyIKKwlob21lcGFnZT0iaHR0cHM6 Ly9sbGQubGx2bS5vcmciCisJZGVwZW5kcz0ibGxkPj0ke3ZlcnNpb259XyR7cmV2aXNpb259Igor CXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvaW5jbHVkZS9sbGQKKwkJdm1vdmUgdXNyL2xp Yi9jbWFrZS9sbGQKKwkJdm1vdmUgInVzci9saWIvbGlibGxkKmEiCisJfQorfQorCitsbGRiX3Bh Y2thZ2UoKSB7CisJbGliMzJkaXNhYmxlZD15ZXMKKwlkZXBlbmRzKz0iIHB5dGhvbjMtc2l4Igor CXNob3J0X2Rlc2MrPSIgLSBMTERCIGRlYnVnZ2VyIgorCWhvbWVwYWdlPSJodHRwczovL2xsZGIu bGx2bS5vcmcvIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvYmluLypsbGRiKgorCQl2 bW92ZSB1c3IvbGliL2xpYmxsZGIqc28uKgorCQl2bW92ZSAvdXNyL2xpYi9weXRob24qCisJfQor fQorCitsbGRiLWRldmVsX3BhY2thZ2UoKSB7CisJbGliMzJkaXNhYmxlZD15ZXMKKwlkZXBlbmRz PSJsbGRiPj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgorCXNob3J0X2Rlc2MrPSIgLSBMTERCIGRl YnVnZ2VyIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVz ci9pbmNsdWRlL2xsZGIKKwkJdm1vdmUgInVzci9saWIvbGlibGxkYiouc28iCisJfQorfQorCits bHZtLWxpYnVud2luZF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIgLSBsaWJ1bndpbmQiCisJ cGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYnVud2luZC5zby4qIgorCX0KK30K KworbGx2bS1saWJ1bndpbmQtZGV2ZWxfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gbGli dW53aW5kIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCisJZGVwZW5kcz0ibGx2bS1saWJ1bndpbmQ+PSR7 dmVyc2lvbn1fJHtyZXZpc2lvbn0iCisJY29uZmxpY3RzPSJsaWJ1bndpbmQtZGV2ZWw+PTAiCisJ cGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9saWIvbGlidW53aW5kLnNvCisJCXZtb3ZlIHVz ci9saWIvbGlidW53aW5kLmEKKwkJdm1vdmUgInVzci9pbmNsdWRlLyp1bndpbmQqIgorCQl2bW92 ZSB1c3IvaW5jbHVkZS9tYWNoLW8KKwkJdm1vdmUgdXNyL3NoYXJlL2RvYy9saWJ1bndpbmQKKwl9 Cit9CisKK2xpYmN4eGFiaV9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIgLSBsb3cgbGV2ZWwg c3VwcG9ydCBmb3IgbGliYysrIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9s aWJjKythYmkuc28uKiIKKwl9Cit9CisKK2xpYmN4eGFiaS1kZXZlbF9wYWNrYWdlKCkgeworCXNo b3J0X2Rlc2MrPSIgLSBsb3cgbGV2ZWwgc3VwcG9ydCBmb3IgbGliYysrIC0gZGV2ZWxvcG1lbnQg ZmlsZXMiCisJZGVwZW5kcz0ibGliY3h4YWJpPj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgorCXBr Z19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvbGliL2xpYmMrK2FiaS5zbworCQl2bW92ZSB1c3Iv bGliL2xpYmMrK2FiaS5hCisJCXZtb3ZlICJ1c3IvaW5jbHVkZS8qY3h4YWJpKiIKKwl9Cit9CisK K2xpYmN4eF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIgLSBDKysgc3RhbmRhcmQgbGlicmFy eSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliYysrLnNvLioiCisJfQor fQorCitsaWJjeHgtZGV2ZWxfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gQysrIHN0YW5k YXJkIGxpYnJhcnkgLSBkZXZlbG9wbWVudCBmaWxlcyIKKwlkZXBlbmRzPSJsaWJjeHg+PSR7dmVy c2lvbn1fJHtyZXZpc2lvbn0iCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9saWIvbGli YysrLnNvCisJCXZtb3ZlIHVzci9saWIvbGliYysrLmEKKwkJdm1vdmUgdXNyL2xpYi9saWJjKytl eHBlcmltZW50YWwuYQorCQl2bW92ZSB1c3IvaW5jbHVkZS9jKysKKwkJdm1vdmUgdXNyL3NoYXJl L2RvYy9saWJjeHgKKwl9Cit9CisKK2xpYm9tcF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIg LSBDbGFuZyBPcGVuTVAgc3VwcG9ydCBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92 ZSB1c3IvbGliL2xpYm9tcC5zbworCQl2bW92ZSAidXNyL2xpYi9saWJvbXB0YXJnZXQucnRsLiou c28iCisJCXZtb3ZlIHVzci9saWIvbGliYXJjaGVyLnNvCisJfQorfQorCitsaWJvbXAtZGV2ZWxf cGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gQ2xhbmcgT3Blbk1QIHN1cHBvcnQgbGlicmFy eSAtIGRldmVsb3BtZW50IGZpbGVzIgorCWRlcGVuZHM9ImxpYm9tcD49JHt2ZXJzaW9ufV8ke3Jl dmlzaW9ufSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGlib21wKi5zbyIK KwkJdm1vdmUgInVzci9saWIvbGliYXJjaGVyKiIKKwkJdm1vdmUgInVzci9pbmNsdWRlL29tcCou aCIKKwkJdm1vdmUgInVzci9saWIvY2xhbmcvJHt2ZXJzaW9ufS9pbmNsdWRlL29tcCouaCIKKwkJ dm1vdmUgdXNyL3NoYXJlL21hbi9tYW4xL2xsdm1vcGVubXAuMQorCQl2bW92ZSB1c3Ivc2hhcmUv ZG9jL29wZW5tcAorCX0KK30KKworbGlibGx2bTEzX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9 IiAtIHJ1bnRpbWUgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIv bGliTExWTS0qLnNvKiIKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMy91cGRhdGUg Yi9zcmNwa2dzL2xsdm0xMy91cGRhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi5lOTVjZjI2YjM1ODYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy91 cGRhdGUKQEAgLTAsMCArMSwzIEBACitzaXRlPSJodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZt LXByb2plY3QvcmVsZWFzZXMiCitwYXR0ZXJuPSJsbHZtb3JnLVxLKFxkKy4pezJ9XGQrKC1yY1xk Kyk/IgoraWdub3JlPSIqLXJjKiIKCkZyb20gMjQzYjRlYTMzYzY0MTVjNzE0M2JiMmVjZmNmM2Qx NDc5NjAzMDk1MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP0xvdWlz PTIwRHVwcj1DMz1BOT0yMEJlcnRvbmk/PQogPGxvdWlzZGJAbGVzcGV0aXRzcGVkZXN0cmVzLm9y Zz4KRGF0ZTogRnJpLCAzMSBEZWMgMjAyMSAxNjoyMzoxNyArMDIwMApTdWJqZWN0OiBbUEFUQ0gg MDIvMjldIGxsdm06IHVwZGF0ZSB0byAxMy4wLjAKCi0tLQogc3JjcGtncy9sbHZtL3RlbXBsYXRl IHwgNiArKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtL3RlbXBsYXRlIGIvc3JjcGtncy9sbHZtL3Rl bXBsYXRlCmluZGV4IGE5MmRiNmY5NGY5Zi4uYmNmZWU4MjA5OGZmIDEwMDY0NAotLS0gYS9zcmNw a2dzL2xsdm0vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9sbHZtL3RlbXBsYXRlCkBAIC0xLDEwICsx LDEwIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdsbHZtJwogcGtnbmFtZT1sbHZtCi12ZXJzaW9u PTEyLjAuMAordmVyc2lvbj0xMy4wLjAKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1ldGEKLWRl cGVuZHM9Imxsdm0xMiIKLXJlcGxhY2VzPSJsbHZtMTE+PTAgbGx2bTEwPj0wIGxsdm05Pj0wIGxs dm04Pj0wIGxsdm03Pj0wIGxsdm02LjA+PTAgbGx2bTMuOT49MCIKK2RlcGVuZHM9Imxsdm0xMyIK K3JlcGxhY2VzPSJsbHZtMTI+PTAgbGx2bTExPj0wIGxsdm0xMD49MCBsbHZtOT49MCBsbHZtOD49 MCBsbHZtNz49MCBsbHZtNi4wPj0wIGxsdm0zLjk+PTAiCiBzaG9ydF9kZXNjPSJMTFZNIG1ldGEg cGFja2FnZSIKIG1haW50YWluZXI9IkVubm8gQm9sYW5kIDxnb3R0b3hAdm9pZGxpbnV4Lm9yZz4i CiBsaWNlbnNlPSJQdWJsaWMgRG9tYWluIgoKRnJvbSBmNWJmYTM2NzE1NWRjNThmYTRmYjQwNjk2 OWNjMjU4MzdhNTRkYTJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/ TG91aXM9MjBEdXByPUMzPUE5PTIwQmVydG9uaT89CiA8bG91aXNkYkBsZXNwZXRpdHNwZWRlc3Ry ZXMub3JnPgpEYXRlOiBGcmksIDMxIERlYyAyMDIxIDE2OjQzOjU2ICswMjAwClN1YmplY3Q6IFtQ QVRDSCAwMy8yOV0gbGx2bTEyOiByZW1vdmUgY2xhbmcgcGFydHMKCi0tLQogLi4uY2xhbmctMDAx LWZpeC11bndpbmQtY2hhaW4taW5jbHVzaW9uLnBhdGNoIHwgIDQ0IC0tLQogLi4uL3BhdGNoZXMv Y2xhbmctMDAyLWFkZC1tdXNsLXRyaXBsZXMucGF0Y2ggIHwgMTEwIC0tLS0tLS0KIC4uLi9jbGFu Zy0wMDMtcHBjNjQtZHluYW1pYy1saW5rZXItcGF0aC5wYXRjaCB8ICAxMyAtCiAuLi4vcGF0Y2hl cy9jbGFuZy0wMDQtcHBjNjQtbXVzbC1lbGZ2Mi5wYXRjaCAgfCAgNDggLS0tCiAuLi4vY29tcGls ZXItcnQtYWFyY2g2NC11Y29udGV4dC5wYXRjaCAgICAgICAgfCAgMTEgLQogLi4uL2NvbXBpbGVy LXJ0LXNhbml0aXplci1wcGM2NC1tdXNsLnBhdGNoICAgIHwgIDM1IC0tCiAuLi4vbGx2bTEyL3Bh dGNoZXMvY29tcGlsZXItcnQtc2l6ZV90LnBhdGNoICAgfCAgMTAgLQogLi4uL3BhdGNoZXMvY29t cGlsZXItcnQteHJheS1wcGM2NC1tdXNsLnBhdGNoIHwgIDYyIC0tLS0KIHNyY3BrZ3MvbGx2bTEy L3BhdGNoZXMvbGliY3h4LW11c2wucGF0Y2ggICAgICB8ICAyNiAtLQogc3JjcGtncy9sbHZtMTIv cGF0Y2hlcy9saWJjeHgtcHBjLnBhdGNoICAgICAgIHwgIDIyIC0tCiAuLi4vbGx2bTEyL3BhdGNo ZXMvbGliY3h4LXNzcC1ub25zaGFyZWQucGF0Y2ggfCAgMTEgLQogc3JjcGtncy9sbHZtMTIvcGF0 Y2hlcy9saWJjeHhhYmktZGwucGF0Y2ggICAgIHwgIDI1IC0tCiBzcmNwa2dzL2xsdm0xMi9wYXRj aGVzL2xpYnVud2luZC1wcGMzMi5wYXRjaCAgfCAgNjMgLS0tLQogc3JjcGtncy9sbHZtMTIvcGF0 Y2hlcy9sbGRiLW11c2wucGF0Y2ggICAgICAgIHwgIDMxIC0tCiAuLi4vbGx2bTEyL3BhdGNoZXMv cHBjMzItY29tcGlsZXItcnQucGF0Y2ggICAgfCAgMjEgLS0KIHNyY3BrZ3MvbGx2bTEyL3RlbXBs YXRlICAgICAgICAgICAgICAgICAgICAgICB8IDMwMSArLS0tLS0tLS0tLS0tLS0tLS0KIDE2IGZp bGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA4MzIgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9k ZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDEtZml4LXVud2luZC1jaGFp bi1pbmNsdXNpb24ucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRj aGVzL2NsYW5nLTAwMi1hZGQtbXVzbC10cmlwbGVzLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQg c3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDMtcHBjNjQtZHluYW1pYy1saW5rZXItcGF0 aC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xhbmct MDA0LXBwYzY0LW11c2wtZWxmdjIucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xs dm0xMi9wYXRjaGVzL2NvbXBpbGVyLXJ0LWFhcmNoNjQtdWNvbnRleHQucGF0Y2gKIGRlbGV0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NvbXBpbGVyLXJ0LXNhbml0aXplci1w cGM2NC1tdXNsLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hl cy9jb21waWxlci1ydC1zaXplX3QucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xs dm0xMi9wYXRjaGVzL2NvbXBpbGVyLXJ0LXhyYXktcHBjNjQtbXVzbC5wYXRjaAogZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4LW11c2wucGF0Y2gKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYmN4eC1wcGMucGF0Y2gKIGRl bGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYmN4eC1zc3Atbm9uc2hh cmVkLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJj eHhhYmktZGwucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVz L2xpYnVud2luZC1wcGMzMi5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEy L3BhdGNoZXMvbGxkYi1tdXNsLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZt MTIvcGF0Y2hlcy9wcGMzMi1jb21waWxlci1ydC5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv bGx2bTEyL3BhdGNoZXMvY2xhbmctMDAxLWZpeC11bndpbmQtY2hhaW4taW5jbHVzaW9uLnBhdGNo IGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDEtZml4LXVud2luZC1jaGFpbi1pbmNs dXNpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0ZWFhNzc4M2U3YS4u MDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDAxLWZpeC11 bndpbmQtY2hhaW4taW5jbHVzaW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBA QAotRnJvbSAzNTI5NzQxNjlmMGQyYjVkYTNkNTMyMWY1ODhmNWUzYjU5NDEzMzBlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmVhIEJyYW5jYWxlb25pIDxtaXdheGVAZ21haWwu Y29tPgotRGF0ZTogVHVlLCA4IFNlcCAyMDE1IDIyOjE0OjU3ICswMjAwCi1TdWJqZWN0OiBbUEFU Q0ggMi83XSBmaXggdW53aW5kIGNoYWluIGluY2x1c2lvbgotCi0tLS0KLSBsaWIvSGVhZGVycy91 bndpbmQuaCB8IDkgKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwg NCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYi9IZWFkZXJzL3Vud2luZC5oIGIvbGli L0hlYWRlcnMvdW53aW5kLmgKLWluZGV4IDMwM2Q3OTIuLjQ0ZTEwY2MgMTAwNjQ0Ci0tLS0gYS9j bGFuZy9saWIvSGVhZGVycy91bndpbmQuaAotKysrIGIvY2xhbmcvbGliL0hlYWRlcnMvdW53aW5k LmgKLUBAIC05LDkgKzksNiBAQAotIAotIC8qIFNlZSAiRGF0YSBEZWZpbml0aW9ucyBmb3IgbGli Z2NjX3MiIGluIHRoZSBMaW51eCBTdGFuZGFyZCBCYXNlLiovCi0gCi0tI2lmbmRlZiBfX0NMQU5H X1VOV0lORF9ICi0tI2RlZmluZSBfX0NMQU5HX1VOV0lORF9ICi0tCi0gI2lmIGRlZmluZWQoX19B UFBMRV9fKSAmJiBfX2hhc19pbmNsdWRlX25leHQoPHVud2luZC5oPikKLSAvKiBEYXJ3aW4gKGZy b20gMTEueCBvbikgcHJvdmlkZSBhbiB1bndpbmQuaC4gSWYgdGhhdCdzIGF2YWlsYWJsZSwKLSAg KiB1c2UgaXQuIGxpYnVud2luZCB3cmFwcyBzb21lIG9mIGl0cyBkZWZpbml0aW9ucyBpbiAjaWZk ZWYgX0dOVV9TT1VSQ0UsCi1AQCAtMzksNiArMzYsOSBAQAotICMgZW5kaWYKLSAjZWxzZQotIAot KyNpZm5kZWYgX19DTEFOR19VTldJTkRfSAotKyNkZWZpbmUgX19DTEFOR19VTldJTkRfSAotKwot ICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAKLSAjaWZkZWYgX19jcGx1c3BsdXMKLUBAIC0zMjIsNiAr MzIyLDcgQEAgX1Vud2luZF9QdHIgX1Vud2luZF9HZXRUZXh0UmVsQmFzZShzdHJ1Y3QgX1Vud2lu ZF9Db250ZXh0ICopOwotIH0KLSAjZW5kaWYKLSAKLSsjZW5kaWYgLyogX19DTEFOR19VTldJTkRf SCAqLwotKwotICNlbmRpZgotIAotLSNlbmRpZiAvKiBfX0NMQU5HX1VOV0lORF9IICovCi0tLSAK LTIuNS4xCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAwMi1hZGQt bXVzbC10cmlwbGVzLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDItYWRk LW11c2wtdHJpcGxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU2ODhk NDBkYmMyLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0w MDItYWRkLW11c2wtdHJpcGxlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBA Ci0tLS0gYS9jbGFuZy9saWIvRHJpdmVyL1Rvb2xDaGFpbnMvR251LmNwcAotKysrIGIvY2xhbmcv bGliL0RyaXZlci9Ub29sQ2hhaW5zL0dudS5jcHAKLUBAIC0yMDg2LDcgKzIwODYsOCBAQCB2b2lk IEdlbmVyaWNfR0NDOjpHQ0NJbnN0YWxsYXRpb25EZXRlY3Rvcjo6QWRkRGVmYXVsdEdDQ1ByZWZp eGVzKAotICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IEFSTUhGVHJpcGxlc1tdID0geyJhcm0t bGludXgtZ251ZWFiaWhmIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiYXJtdjdobC1yZWRoYXQtbGludXgtZ251ZWFiaSIsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFybXY2aGwtc3VzZS1saW51eC1nbnVlYWJp IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJtdjdo bC1zdXNlLWxpbnV4LWdudWVhYmkifTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiYXJtdjdobC1zdXNlLWxpbnV4LWdudWVhYmkiLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcm12N2wtbGludXgtZ251ZWFiaWhm In07Ci0gICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgQVJNZWJMaWJEaXJzW10gPSB7Ii9saWIi fTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBBUk1lYlRyaXBsZXNbXSA9IHsiYXJtZWIt bGludXgtZ251ZWFiaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgImFybWViLWxpbnV4LWFuZHJvaWRlYWJpIn07Ci1AQCAtMjE1Myw4ICsyMTU0LDcgQEAg dm9pZCBHZW5lcmljX0dDQzo6R0NDSW5zdGFsbGF0aW9uRGV0ZWN0b3I6OkFkZERlZmF1bHRHQ0NQ cmVmaXhlcygKLSAgICAgICAicG93ZXJwYzY0LXN1c2UtbGludXgiLCAicG93ZXJwYy1tb250YXZp c3RhLWxpbnV4c3BlIn07Ci0gICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBDTEVMaWJEaXJz W10gPSB7Ii9saWIzMiIsICIvbGliIn07Ci0gICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBD TEVUcmlwbGVzW10gPSB7InBvd2VycGNsZS1saW51eC1nbnUiLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjbGUtdW5rbm93bi1saW51eC1nbnUi LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBj bGUtbGludXgtbXVzbCJ9OwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJwb3dlcnBjbGUtdW5rbm93bi1saW51eC1nbnUifTsKLSAKLSAgIHN0YXRpYyBjb25z dCBjaGFyICpjb25zdCBQUEM2NExpYkRpcnNbXSA9IHsiL2xpYjY0IiwgIi9saWIifTsKLSAgIHN0 YXRpYyBjb25zdCBjaGFyICpjb25zdCBQUEM2NFRyaXBsZXNbXSA9IHsKLUBAIC0yMjM1LDYgKzIy MzUsODcgQEAgdm9pZCBHZW5lcmljX0dDQzo6R0NDSW5zdGFsbGF0aW9uRGV0ZWN0b3I6OkFkZERl ZmF1bHRHQ0NQcmVmaXhlcygKLSAgICAgcmV0dXJuOwotICAgfQotIAotKyAgaWYgKFRhcmdldFRy aXBsZS5pc011c2woKSkgewotKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgQUFyY2g2NE11 c2xUcmlwbGVzW10gPSB7ImFhcmNoNjQtbGludXgtbXVzbCJ9OwotKyAgICBzdGF0aWMgY29uc3Qg Y2hhciAqY29uc3QgQVJNSEZNdXNsVHJpcGxlc1tdID0gewotKyAgICAgICAgImFybS1saW51eC1t dXNsZWFiaWhmIiwgImFybXY3bC1saW51eC1tdXNsZWFiaWhmIgotKyAgICB9OwotKyAgICBzdGF0 aWMgY29uc3QgY2hhciAqY29uc3QgQVJNTXVzbFRyaXBsZXNbXSA9IHsiYXJtLWxpbnV4LW11c2xl YWJpIn07Ci0rICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBYODZfNjRNdXNsVHJpcGxlc1td ID0geyJ4ODZfNjQtbGludXgtbXVzbCJ9OwotKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qg WDg2TXVzbFRyaXBsZXNbXSA9IHsiaTY4Ni1saW51eC1tdXNsIn07Ci0rICAgIHN0YXRpYyBjb25z dCBjaGFyICpjb25zdCBNSVBTTXVzbFRyaXBsZXNbXSA9IHsKLSsgICAgICAgICJtaXBzLWxpbnV4 LW11c2wiLCAibWlwc2VsLWxpbnV4LW11c2wiLAotKyAgICAgICAgIm1pcHNlbC1saW51eC1tdXNs aGYiLCAibWlwcy1saW51eC1tdXNsaGYiCi0rICAgIH07Ci0rICAgIHN0YXRpYyBjb25zdCBjaGFy ICpjb25zdCBQUENNdXNsVHJpcGxlc1tdID0geyJwb3dlcnBjLWxpbnV4LW11c2wifTsKLSsgICAg c3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQQ0xFTXVzbFRyaXBsZXNbXSA9IHsicG93ZXJwY2xl LWxpbnV4LW11c2wifTsKLSsgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQQzY0TXVzbFRy aXBsZXNbXSA9IHsicG93ZXJwYzY0LWxpbnV4LW11c2wifTsKLSsgICAgc3RhdGljIGNvbnN0IGNo YXIgKmNvbnN0IFBQQzY0TEVNdXNsVHJpcGxlc1tdID0geyJwb3dlcnBjNjRsZS1saW51eC1tdXNs In07Ci0rCi0rICAgIHN3aXRjaCAoVGFyZ2V0VHJpcGxlLmdldEFyY2goKSkgewotKyAgICBjYXNl IGxsdm06OlRyaXBsZTo6YWFyY2g2NDoKLSsgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihBQXJj aDY0TGliRGlycyksIGVuZChBQXJjaDY0TGliRGlycykpOwotKyAgICAgIFRyaXBsZUFsaWFzZXMu YXBwZW5kKGJlZ2luKEFBcmNoNjRNdXNsVHJpcGxlcyksIGVuZChBQXJjaDY0TXVzbFRyaXBsZXMp KTsKLSsgICAgICBCaWFyY2hMaWJEaXJzLmFwcGVuZChiZWdpbihBQXJjaDY0TGliRGlycyksIGVu ZChBQXJjaDY0TGliRGlycykpOwotKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJl Z2luKEFBcmNoNjRNdXNsVHJpcGxlcyksIGVuZChBQXJjaDY0TXVzbFRyaXBsZXMpKTsKLSsgICAg ICBicmVhazsKLSsgICAgY2FzZSBsbHZtOjpUcmlwbGU6OmFybToKLSsgICAgICBMaWJEaXJzLmFw cGVuZChiZWdpbihBUk1MaWJEaXJzKSwgZW5kKEFSTUxpYkRpcnMpKTsKLSsgICAgICBpZiAoVGFy Z2V0VHJpcGxlLmdldEVudmlyb25tZW50KCkgPT0gbGx2bTo6VHJpcGxlOjpNdXNsRUFCSUhGKSB7 Ci0rICAgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihBUk1IRk11c2xUcmlwbGVzKSwg ZW5kKEFSTUhGTXVzbFRyaXBsZXMpKTsKLSsgICAgICB9IGVsc2UgewotKyAgICAgICAgVHJpcGxl QWxpYXNlcy5hcHBlbmQoYmVnaW4oQVJNTXVzbFRyaXBsZXMpLCBlbmQoQVJNTXVzbFRyaXBsZXMp KTsKLSsgICAgICB9Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgbGx2bTo6VHJpcGxlOjp4ODZf NjQ6Ci0rICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oWDg2XzY0TGliRGlycyksIGVuZChYODZf NjRMaWJEaXJzKSk7Ci0rICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oWDg2XzY0TXVz bFRyaXBsZXMpLCBlbmQoWDg2XzY0TXVzbFRyaXBsZXMpKTsKLSsgICAgICBCaWFyY2hMaWJEaXJz LmFwcGVuZChiZWdpbihYODZMaWJEaXJzKSwgZW5kKFg4NkxpYkRpcnMpKTsKLSsgICAgICBCaWFy Y2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihYODZNdXNsVHJpcGxlcyksIGVuZChYODZNdXNs VHJpcGxlcykpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6eDg2Ogot KyAgICAgIExpYkRpcnMuYXBwZW5kKGJlZ2luKFg4NkxpYkRpcnMpLCBlbmQoWDg2TGliRGlycykp OwotKyAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFg4Nk11c2xUcmlwbGVzKSwgZW5k KFg4Nk11c2xUcmlwbGVzKSk7Ci0rICAgICAgQmlhcmNoTGliRGlycy5hcHBlbmQoYmVnaW4oWDg2 XzY0TGliRGlycyksIGVuZChYODZfNjRMaWJEaXJzKSk7Ci0rICAgICAgQmlhcmNoVHJpcGxlQWxp YXNlcy5hcHBlbmQoYmVnaW4oWDg2XzY0TXVzbFRyaXBsZXMpLCBlbmQoWDg2XzY0TXVzbFRyaXBs ZXMpKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBsbHZtOjpUcmlwbGU6Om1pcHM6Ci0rICAg ICAgTGliRGlycy5hcHBlbmQoYmVnaW4oTUlQU0xpYkRpcnMpLCBlbmQoTUlQU0xpYkRpcnMpKTsK LSsgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihNSVBTTXVzbFRyaXBsZXMpLCBlbmQo TUlQU011c2xUcmlwbGVzKSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgbGx2bTo6VHJpcGxl OjpwcGM6Ci0rICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oUFBDTGliRGlycyksIGVuZChQUENM aWJEaXJzKSk7Ci0rICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDTXVzbFRyaXBs ZXMpLCBlbmQoUFBDTXVzbFRyaXBsZXMpKTsKLSsgICAgICBCaWFyY2hMaWJEaXJzLmFwcGVuZChi ZWdpbihQUEM2NExpYkRpcnMpLCBlbmQoUFBDNjRMaWJEaXJzKSk7Ci0rICAgICAgQmlhcmNoVHJp cGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDNjRNdXNsVHJpcGxlcyksIGVuZChQUEM2NE11c2xU cmlwbGVzKSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGNsZToK LSsgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihQUENMRUxpYkRpcnMpLCBlbmQoUFBDTEVMaWJE aXJzKSk7Ci0rICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDTEVNdXNsVHJpcGxl cyksIGVuZChQUENMRU11c2xUcmlwbGVzKSk7Ci0rICAgICAgQmlhcmNoTGliRGlycy5hcHBlbmQo YmVnaW4oUFBDNjRMRUxpYkRpcnMpLCBlbmQoUFBDNjRMRUxpYkRpcnMpKTsKLSsgICAgICBCaWFy Y2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQUEM2NExFTXVzbFRyaXBsZXMpLCBlbmQoUFBD NjRMRU11c2xUcmlwbGVzKSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgbGx2bTo6VHJpcGxl OjpwcGM2NDoKLSsgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihQUEM2NExpYkRpcnMpLCBlbmQo UFBDNjRMaWJEaXJzKSk7Ci0rICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDNjRN dXNsVHJpcGxlcyksIGVuZChQUEM2NE11c2xUcmlwbGVzKSk7Ci0rICAgICAgQmlhcmNoTGliRGly cy5hcHBlbmQoYmVnaW4oUFBDTGliRGlycyksIGVuZChQUENMaWJEaXJzKSk7Ci0rICAgICAgQmlh cmNoVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDTXVzbFRyaXBsZXMpLCBlbmQoUFBDTXVz bFRyaXBsZXMpKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBsbHZtOjpUcmlwbGU6OnBwYzY0 bGU6Ci0rICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oUFBDNjRMRUxpYkRpcnMpLCBlbmQoUFBD NjRMRUxpYkRpcnMpKTsKLSsgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQUEM2NExF TXVzbFRyaXBsZXMpLCBlbmQoUFBDNjRMRU11c2xUcmlwbGVzKSk7Ci0rICAgICAgQmlhcmNoTGli RGlycy5hcHBlbmQoYmVnaW4oUFBDTEVMaWJEaXJzKSwgZW5kKFBQQ0xFTGliRGlycykpOwotKyAg ICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQQ0xFTXVzbFRyaXBsZXMpLCBl bmQoUFBDTEVNdXNsVHJpcGxlcykpOwotKyAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0OgotKyAg ICAgIGJyZWFrOwotKyAgICB9Ci0rICAgIFRyaXBsZUFsaWFzZXMucHVzaF9iYWNrKFRhcmdldFRy aXBsZS5zdHIoKSk7Ci0rICAgIGlmIChUYXJnZXRUcmlwbGUuc3RyKCkgIT0gQmlhcmNoVHJpcGxl LnN0cigpKQotKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMucHVzaF9iYWNrKEJpYXJjaFRyaXBs ZS5zdHIoKSk7Ci0rICAgIHJldHVybjsKLSsgIH0KLSsKLSAgIC8vIEFuZHJvaWQgdGFyZ2V0cyBz aG91bGQgbm90IHVzZSBHTlUvTGludXggdG9vbHMgb3IgbGlicmFyaWVzLgotICAgaWYgKFRhcmdl dFRyaXBsZS5pc0FuZHJvaWQoKSkgewotICAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgQUFy Y2g2NEFuZHJvaWRUcmlwbGVzW10gPSB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRj aGVzL2NsYW5nLTAwMy1wcGM2NC1keW5hbWljLWxpbmtlci1wYXRoLnBhdGNoIGIvc3JjcGtncy9s bHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDMtcHBjNjQtZHluYW1pYy1saW5rZXItcGF0aC5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFkNjQxMmQxZTZjLi4wMDAwMDAwMDAwMDAK LS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDMtcHBjNjQtZHluYW1pYy1saW5r ZXItcGF0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLS0tLSBhL2NsYW5n L2xpYi9Ecml2ZXIvVG9vbENoYWlucy9MaW51eC5jcHAKLSsrKyBiL2NsYW5nL2xpYi9Ecml2ZXIv VG9vbENoYWlucy9MaW51eC5jcHAKLUBAIC01MDQsMTAgKzUwNCw2IEBAIHN0ZDo6c3RyaW5nIExp bnV4OjpnZXREeW5hbWljTGlua2VyKGNvbnN0IEFyZ0xpc3QgJkFyZ3MpIGNvbnN0IHsKLSAgICAg TG9hZGVyID0gImxkLnNvLjEiOwotICAgICBicmVhazsKLSAgIGNhc2UgbGx2bTo6VHJpcGxlOjpw cGM2NDoKLS0gICAgTGliRGlyID0gImxpYjY0IjsKLS0gICAgTG9hZGVyID0KLS0gICAgICAgICh0 b29sczo6cHBjOjpoYXNQUENBYmlBcmcoQXJncywgImVsZnYyIikpID8gImxkNjQuc28uMiIgOiAi bGQ2NC5zby4xIjsKLS0gICAgYnJlYWs7Ci0gICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjRsZToK LSAgICAgTGliRGlyID0gImxpYjY0IjsKLSAgICAgTG9hZGVyID0KZGlmZiAtLWdpdCBhL3NyY3Br Z3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDA0LXBwYzY0LW11c2wtZWxmdjIucGF0Y2ggYi9zcmNw a2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAwNC1wcGM2NC1tdXNsLWVsZnYyLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMWZjODAwM2M1ZjEuLjAwMDAwMDAwMDAwMAotLS0g YS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAwNC1wcGM2NC1tdXNsLWVsZnYyLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLS0tIGEvY2xhbmcvbGliL0Jhc2ljL1Rh cmdldHMvUFBDLmgKLSsrKyBiL2NsYW5nL2xpYi9CYXNpYy9UYXJnZXRzL1BQQy5oCi1AQCAtNDE1 LDExICs0MTUsMTAgQEAgcHVibGljOgotICAgICAgIExvbmdEb3VibGVGb3JtYXQgPSAmbGx2bTo6 QVBGbG9hdDo6SUVFRWRvdWJsZSgpOwotICAgICB9IGVsc2UgaWYgKChUcmlwbGUuZ2V0QXJjaCgp ID09IGxsdm06OlRyaXBsZTo6cHBjNjRsZSkpIHsKLSAgICAgICBEYXRhTGF5b3V0ID0gImUtbTpl LWk2NDo2NC1uMzI6NjQiOwotLSAgICAgIEFCSSA9ICJlbGZ2MiI7Ci0gICAgIH0gZWxzZSB7Ci0g ICAgICAgRGF0YUxheW91dCA9ICJFLW06ZS1pNjQ6NjQtbjMyOjY0IjsKLS0gICAgICBBQkkgPSAi ZWxmdjEiOwotICAgICB9Ci0rICAgIEFCSSA9ICJlbGZ2MiI7Ci0gCi0gICAgIGlmIChUcmlwbGUu aXNPU0ZyZWVCU0QoKSB8fCBUcmlwbGUuaXNPU09wZW5CU0QoKSB8fCBUcmlwbGUuaXNNdXNsKCkp IHsKLSAgICAgICBMb25nRG91YmxlV2lkdGggPSBMb25nRG91YmxlQWxpZ24gPSA2NDsKLS0tLSBh L2NsYW5nL2xpYi9Db2RlR2VuL1RhcmdldEluZm8uY3BwCi0rKysgYi9jbGFuZy9saWIvQ29kZUdl bi9UYXJnZXRJbmZvLmNwcAotQEAgLTEwOTI3LDkgKzEwOTI3LDkgQEAgY29uc3QgVGFyZ2V0Q29k ZUdlbkluZm8gJkNvZGVHZW5Nb2R1bGU6OmdldFRhcmdldENvZGVHZW5JbmZvKCkgewotICAgICAg IHJldHVybiBTZXRDR0luZm8obmV3IEFJWFRhcmdldENvZGVHZW5JbmZvKFR5cGVzLCAvKklzNjRC aXQqLyB0cnVlKSk7Ci0gCi0gICAgIGlmIChUcmlwbGUuaXNPU0JpbkZvcm1hdEVMRigpKSB7Ci0t ICAgICAgUFBDNjRfU1ZSNF9BQklJbmZvOjpBQklLaW5kIEtpbmQgPSBQUEM2NF9TVlI0X0FCSUlu Zm86OkVMRnYxOwotLSAgICAgIGlmIChnZXRUYXJnZXQoKS5nZXRBQkkoKSA9PSAiZWxmdjIiKQot LSAgICAgICAgS2luZCA9IFBQQzY0X1NWUjRfQUJJSW5mbzo6RUxGdjI7Ci0rICAgICAgUFBDNjRf U1ZSNF9BQklJbmZvOjpBQklLaW5kIEtpbmQgPSBQUEM2NF9TVlI0X0FCSUluZm86OkVMRnYyOwot KyAgICAgIGlmIChnZXRUYXJnZXQoKS5nZXRBQkkoKSA9PSAiZWxmdjEiKQotKyAgICAgICAgS2lu ZCA9IFBQQzY0X1NWUjRfQUJJSW5mbzo6RUxGdjE7Ci0gICAgICAgYm9vbCBJc1NvZnRGbG9hdCA9 IENvZGVHZW5PcHRzLkZsb2F0QUJJID09ICJzb2Z0IjsKLSAKLSAgICAgICByZXR1cm4gU2V0Q0dJ bmZvKAotLS0tIGEvY2xhbmcvbGliL0RyaXZlci9Ub29sQ2hhaW5zL0NsYW5nLmNwcAotKysrIGIv Y2xhbmcvbGliL0RyaXZlci9Ub29sQ2hhaW5zL0NsYW5nLmNwcAotQEAgLTE5MjAsMTQgKzE5MjAs NyBAQCB2b2lkIENsYW5nOjpBZGRQUENUYXJnZXRBcmdzKGNvbnN0IEFyZ0xpc3QgJkFyZ3MsCi0g ICBjb25zdCBsbHZtOjpUcmlwbGUgJlQgPSBnZXRUb29sQ2hhaW4oKS5nZXRUcmlwbGUoKTsKLSAg IGlmIChULmlzT1NCaW5Gb3JtYXRFTEYoKSkgewotICAgICBzd2l0Y2ggKGdldFRvb2xDaGFpbigp LmdldEFyY2goKSkgewotLSAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjQ6IHsKLS0gICAgICBp ZiAoKFQuaXNPU0ZyZWVCU0QoKSAmJiBULmdldE9TTWFqb3JWZXJzaW9uKCkgPj0gMTMpIHx8Ci0t ICAgICAgICAgIFQuaXNPU09wZW5CU0QoKSB8fCBULmlzTXVzbCgpKQotLSAgICAgICAgQUJJTmFt ZSA9ICJlbGZ2MiI7Ci0tICAgICAgZWxzZQotLSAgICAgICAgQUJJTmFtZSA9ICJlbGZ2MSI7Ci0t ICAgICAgYnJlYWs7Ci0tICAgIH0KLSsgICAgY2FzZSBsbHZtOjpUcmlwbGU6OnBwYzY0OgotICAg ICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjRsZToKLSAgICAgICBBQklOYW1lID0gImVsZnYyIjsK LSAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29tcGls ZXItcnQtYWFyY2g2NC11Y29udGV4dC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29t cGlsZXItcnQtYWFyY2g2NC11Y29udGV4dC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggODkzYzA1OWQ3YjhkLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0 Y2hlcy9jb21waWxlci1ydC1hYXJjaDY0LXVjb250ZXh0LnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsMTEgKzAsMCBAQAotLS0tIGEvY29tcGlsZXItcnQvbGliL3Nhbml0aXplcl9jb21tb24vc2Fu aXRpemVyX2xpbnV4LmNwcC5vcmlnCi0rKysgYi9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2Nv bW1vbi9zYW5pdGl6ZXJfbGludXguY3BwCi1AQCAtMTc5OSw3ICsxNzk5LDcgQEAKLSAKLSBzdGF0 aWMgYm9vbCBBYXJjaDY0R2V0RVNSKHVjb250ZXh0X3QgKnVjb250ZXh0LCB1NjQgKmVzcikgewot ICAgc3RhdGljIGNvbnN0IHUzMiBrRXNyTWFnaWMgPSAweDQ1NTM1MjAxOwotLSAgdTggKmF1eCA9 IHVjb250ZXh0LT51Y19tY29udGV4dC5fX3Jlc2VydmVkOwotKyAgdTggKmF1eCA9IHJlaW50ZXJw cmV0X2Nhc3Q8dTggKj4odWNvbnRleHQtPnVjX21jb250ZXh0Ll9fcmVzZXJ2ZWQpOwotICAgd2hp bGUgKHRydWUpIHsKLSAgICAgX2FhcmNoNjRfY3R4ICpjdHggPSAoX2FhcmNoNjRfY3R4ICopYXV4 OwotICAgICBpZiAoY3R4LT5zaXplID09IDApIGJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9s bHZtMTIvcGF0Y2hlcy9jb21waWxlci1ydC1zYW5pdGl6ZXItcHBjNjQtbXVzbC5wYXRjaCBiL3Ny Y3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29tcGlsZXItcnQtc2FuaXRpemVyLXBwYzY0LW11c2wucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1ZjE2ZDI0ZjM0MC4uMDAwMDAwMDAw MDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29tcGlsZXItcnQtc2FuaXRpemVyLXBw YzY0LW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0tLS0gYS9jb21w aWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGludXguY3BwCi0rKysgYi9j b21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGludXguY3BwCi1AQCAt NzQsNiArNzQsMTAgQEAKLSAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KLSAjZW5kaWYKLSAKLSsj aWYgU0FOSVRJWkVSX0xJTlVYICYmIGRlZmluZWQoX19wb3dlcnBjX18pCi0rI2luY2x1ZGUgPGFz bS9wdHJhY2UuaD4KLSsjZW5kaWYKLSsKLSAjaWYgU0FOSVRJWkVSX0xJTlVYICYmICFTQU5JVEla RVJfQU5EUk9JRAotICNpbmNsdWRlIDxzeXMvcGVyc29uYWxpdHkuaD4KLSAjZW5kaWYKLS0tLSBh L2NvbXBpbGVyLXJ0L2xpYi9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9wbGF0Zm9ybV9saW1p dHNfcG9zaXguY3BwCi0rKysgYi9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5p dGl6ZXJfcGxhdGZvcm1fbGltaXRzX3Bvc2l4LmNwcAotQEAgLTkyLDcgKzkyLDcgQEAKLSAjIGlu Y2x1ZGUgPHV0aW1lLmg+Ci0gIyBpbmNsdWRlIDxzeXMvcHRyYWNlLmg+Ci0gI2lmIGRlZmluZWQo X19taXBzNjQpIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwg XAotLSAgICBTQU5JVElaRVJfUklTQ1Y2NAotKyAgICBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBT QU5JVElaRVJfUklTQ1Y2NAotICMgIGluY2x1ZGUgPGFzbS9wdHJhY2UuaD4KLSAjICBpZmRlZiBf X2FybV9fCi0gdHlwZWRlZiBzdHJ1Y3QgdXNlcl9mcHJlZ3MgZWxmX2ZwcmVnc2V0X3Q7Ci0tLS0g YS9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfc3RvcHRoZXdvcmxk X2xpbnV4X2xpYmNkZXAuY3BwCi0rKysgYi9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1v bi9zYW5pdGl6ZXJfc3RvcHRoZXdvcmxkX2xpbnV4X2xpYmNkZXAuY3BwCi1AQCAtMzEsNyArMzEs NyBAQAotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4gLy8gZm9yIHBpZF90Ci0gI2luY2x1ZGUgPHN5 cy91aW8uaD4gLy8gZm9yIGlvdmVjCi0gI2luY2x1ZGUgPGVsZi5oPiAvLyBmb3IgTlRfUFJTVEFU VVMKLS0jaWYgKGRlZmluZWQoX19hYXJjaDY0X18pIHx8IFNBTklUSVpFUl9SSVNDVjY0KSAmJiAh U0FOSVRJWkVSX0FORFJPSUQKLSsjaWYgKGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQo X19wb3dlcnBjX18pIHx8IFNBTklUSVpFUl9SSVNDVjY0KSAmJiAhU0FOSVRJWkVSX0FORFJPSUQK LSAvLyBHTElCQyAyLjIwKyBzeXMvdXNlciBkb2VzIG5vdCBpbmNsdWRlIGFzbS9wdHJhY2UuaAot ICMgaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9s bHZtMTIvcGF0Y2hlcy9jb21waWxlci1ydC1zaXplX3QucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9w YXRjaGVzL2NvbXBpbGVyLXJ0LXNpemVfdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMmM2MzA2M2E1ZTllLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0 Y2hlcy9jb21waWxlci1ydC1zaXplX3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCww IEBACi0tLS0gYS9jb21waWxlci1ydC9saWIvZnV6emVyL0Z1enplckludGVyY2VwdG9ycy5jcHAu b3JpZwotKysrIGIvY29tcGlsZXItcnQvbGliL2Z1enplci9GdXp6ZXJJbnRlcmNlcHRvcnMuY3Bw Ci1AQCAtMjUsNiArMjUsNyBAQAotICAgfQotIAotICNpbmNsdWRlIDxjYXNzZXJ0PgotKyNpbmNs dWRlIDxjc3RkZGVmPgotICNpbmNsdWRlIDxjc3RkaW50PgotICNpbmNsdWRlIDxkbGZjbi5oPiAv LyBmb3IgZGxzeW0oKQotIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jb21w aWxlci1ydC14cmF5LXBwYzY0LW11c2wucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2Nv bXBpbGVyLXJ0LXhyYXktcHBjNjQtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggZDBiNjFjODBjODk3Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0 Y2hlcy9jb21waWxlci1ydC14cmF5LXBwYzY0LW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSw2MiArMCwwIEBACi0tLS0gYS9jb21waWxlci1ydC9saWIveHJheS94cmF5X3Bvd2VycGM2NC5p bmMKLSsrKyBiL2NvbXBpbGVyLXJ0L2xpYi94cmF5L3hyYXlfcG93ZXJwYzY0LmluYwotQEAgLTEy LDcgKzEyLDEzIEBACi0gCi0gI2luY2x1ZGUgPGNzdGRpbnQ+Ci0gI2luY2x1ZGUgPG11dGV4Pgot KyNpZmRlZiBfX0dMSUJDX18KLSAjaW5jbHVkZSA8c3lzL3BsYXRmb3JtL3BwYy5oPgotKyNlbHNl Ci0rI2luY2x1ZGUgPGNjdHlwZT4KLSsjaW5jbHVkZSA8Y3N0cmluZz4KLSsjaW5jbHVkZSA8Y3N0 ZGxpYj4KLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSAieHJheV9kZWZzLmgiCi0gCi1AQCAtMjAsMTMg KzI2LDQ1IEBAIG5hbWVzcGFjZSBfX3hyYXkgewotIAotIEFMV0FZU19JTkxJTkUgdWludDY0X3Qg cmVhZFRTQyh1aW50OF90ICZDUFUpIFhSQVlfTkVWRVJfSU5TVFJVTUVOVCB7Ci0gICBDUFUgPSAw OwotKyNpZmRlZiBfX0dMSUJDX18KLSAgIHJldHVybiBfX3BwY19nZXRfdGltZWJhc2UoKTsKLSsj ZWxzZQotKyAgcmV0dXJuIF9fYnVpbHRpbl9wcGNfZ2V0X3RpbWViYXNlKCk7Ci0rI2VuZGlmCi0g fQotIAotIGlubGluZSB1aW50NjRfdCBnZXRUU0NGcmVxdWVuY3koKSBYUkFZX05FVkVSX0lOU1RS VU1FTlQgewotICAgc3RhdGljIHN0ZDo6bXV0ZXggTTsKLSAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6 Om11dGV4PiBHdWFyZChNKTsKLSsjaWZkZWYgX19HTElCQ19fCi0gICByZXR1cm4gX19wcGNfZ2V0 X3RpbWViYXNlX2ZyZXEoKTsKLSsjZWxzZQotKyAgLyogRklYTUU6IGEgbGVzcyBkaXJ0eSBpbXBs ZW1lbnRhdGlvbj8gKi8KLSsgIHN0YXRpYyB1aW50NjRfdCBiYXNlOwotKyAgaWYgKCFiYXNlKSB7 Ci0rICAgIEZJTEUgKmYgPSBmb3BlbigiL3Byb2MvY3B1aW5mbyIsICJyYiIpOwotKyAgICBpZiAo ZikgewotKyAgICAgIHNzaXplX3QgbnI7Ci0rICAgICAgLyogdmlydHVhbGx5IGFsd2F5cyBiaWcg ZW5vdWdoIHRvIGhvbGQgdGhlIGxpbmUgKi8KLSsgICAgICBjaGFyIGJ1Zls1MTJdOwotKyAgICAg IHdoaWxlIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmKSkgewotKyAgICAgICAgY2hhciAqcmV0 ID0gc3Ryc3RyKGJ1ZiwgInRpbWViYXNlIik7Ci0rICAgICAgICBpZiAoIXJldCkgewotKyAgICAg ICAgICBjb250aW51ZTsKLSsgICAgICAgIH0KLSsgICAgICAgIHJldCArPSBzaXplb2YoInRpbWVi YXNlIikgLSAxOwotKyAgICAgICAgcmV0ID0gc3RyY2hyKHJldCwgJzonKTsKLSsgICAgICAgIGlm ICghcmV0KSB7Ci0rICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgfQotKyAgICAgICAgYmFz ZSA9IHN0cnRvdWwocmV0ICsgMSwgbnVsbHB0ciwgMTApOwotKyAgICAgICAgYnJlYWs7Ci0rICAg ICAgfQotKyAgICAgIGZjbG9zZShmKTsKLSsgICAgfQotKyAgfQotKyAgcmV0dXJuIGJhc2U7Ci0r I2VuZGlmCi0gfQotIAotIGlubGluZSBib29sIHByb2JlUmVxdWlyZWRDUFVGZWF0dXJlcygpIFhS QVlfTkVWRVJfSU5TVFJVTUVOVCB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVz L2xpYmN4eC1tdXNsLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtbXVzbC5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmJkMzFmZmMyY2IxLi4wMDAwMDAw MDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtbXVzbC5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS0tLSBhL2xpYmN4eC9pbmNsdWRlL2xvY2FsZQot KysrIGIvbGliY3h4L2luY2x1ZGUvbG9jYWxlCi1AQCAtNzQyLDcgKzc0MiwxMSBAQCBfX251bV9n ZXRfc2lnbmVkX2ludGVncmFsKGNvbnN0IGNoYXIqIF9fYSwgY29uc3QgY2hhciogX19hX2VuZCwK LSAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoZXJybm8pPjo6dHlw ZSBfX3NhdmVfZXJybm8gPSBlcnJubzsKLSAgICAgICAgIGVycm5vID0gMDsKLSAgICAgICAgIGNo YXIgKl9fcDI7Ci0rI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiAhZGVmaW5lZChfX0dMSUJDX18p Ci0rICAgICAgICBsb25nIGxvbmcgX19sbCA9IHN0cnRvbGwoX19hLCAmX19wMiwgX19iYXNlKTsK LSsjZWxzZQotICAgICAgICAgbG9uZyBsb25nIF9fbGwgPSBzdHJ0b2xsX2woX19hLCAmX19wMiwg X19iYXNlLCBfTElCQ1BQX0dFVF9DX0xPQ0FMRSk7Ci0rI2VuZGlmCi0gICAgICAgICB0eXBlbmFt ZSByZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKGVycm5vKT46OnR5cGUgX19jdXJyZW50X2Vycm5v ID0gZXJybm87Ci0gICAgICAgICBpZiAoX19jdXJyZW50X2Vycm5vID09IDApCi0gICAgICAgICAg ICAgZXJybm8gPSBfX3NhdmVfZXJybm87Ci1AQCAtNzgyLDcgKzc4NiwxMSBAQCBfX251bV9nZXRf dW5zaWduZWRfaW50ZWdyYWwoY29uc3QgY2hhciogX19hLCBjb25zdCBjaGFyKiBfX2FfZW5kLAot ICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxkZWNsdHlwZShlcnJubyk+Ojp0eXBl IF9fc2F2ZV9lcnJubyA9IGVycm5vOwotICAgICAgICAgZXJybm8gPSAwOwotICAgICAgICAgY2hh ciAqX19wMjsKLSsjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fR0xJQkNfXykK LSsgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2xsID0gc3RydG91bGwoX19hLCAmX19wMiwg X19iYXNlKTsKLSsjZWxzZQotICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9fbGwgPSBzdHJ0 b3VsbF9sKF9fYSwgJl9fcDIsIF9fYmFzZSwgX0xJQkNQUF9HRVRfQ19MT0NBTEUpOwotKyNlbmRp ZgotICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxkZWNsdHlwZShlcnJubyk+Ojp0 eXBlIF9fY3VycmVudF9lcnJubyA9IGVycm5vOwotICAgICAgICAgaWYgKF9fY3VycmVudF9lcnJu byA9PSAwKQotICAgICAgICAgICAgIGVycm5vID0gX19zYXZlX2Vycm5vOwpkaWZmIC0tZ2l0IGEv c3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtcHBjLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIv cGF0Y2hlcy9saWJjeHgtcHBjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3 YTkyZjgwMDRlMWMuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xp YmN4eC1wcGMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1UaGlzIGVuc3Vy ZXMgYGlzX2llYzU1OWAgaXMgZGVmaW5lZCBjb3JyZWN0bHkgdW5kZXIgYWxsIGxvbmcgZG91Ymxl IEFCSXMsCi1pbmNsdWRpbmcgbXVzbCBhbmQgaXRzIDY0LWJpdCBsb25nIGRvdWJsZS4gQWxzbywg YF9fcHBjX19gIG9yIGBfX3BwYzY0X19gCi1pcyBub3QgZGVmaW5lZCBvbiBnY2MuCi0KLS0tLSBh L2xpYmN4eC9pbmNsdWRlL2xpbWl0cwotKysrIGIvbGliY3h4L2luY2x1ZGUvbGltaXRzCi1AQCAt NDI2LDggKzQyNiwxNCBAQCBwcm90ZWN0ZWQ6Ci0gICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJ VFkgc3RhdGljIF9MSUJDUFBfQ09OU1RFWFBSIHR5cGUgc2lnbmFsaW5nX05hTigpIF9OT0VYQ0VQ VCB7cmV0dXJuIF9fYnVpbHRpbl9uYW5zbCgiIik7fQotICAgICBfTElCQ1BQX0lOTElORV9WSVNJ QklMSVRZIHN0YXRpYyBfTElCQ1BQX0NPTlNURVhQUiB0eXBlIGRlbm9ybV9taW4oKSBfTk9FWENF UFQge3JldHVybiBfX0xEQkxfREVOT1JNX01JTl9fO30KLSAKLS0jaWYgKGRlZmluZWQoX19wcGNf XykgfHwgZGVmaW5lZChfX3BwYzY0X18pKQotKyNpZiBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rI2lmIChfX0xEQkxfTUFYX0VYUF9fID4gX19EQkxfTUFY X0VYUF9fKSB8fCAoX19MREJMX01BTlRfRElHX18gPT0gX19EQkxfTUFOVF9ESUdfXykKLSsgICAg LyogSUVFRSA3NTQgcXVhZHJ1cGxlIG9yIGRvdWJsZSBwcmVjaXNpb24gKi8KLSsgICAgc3RhdGlj IF9MSUJDUFBfQ09OU1RFWFBSIGNvbnN0IGJvb2wgaXNfaWVjNTU5ID0gdHJ1ZTsKLSsjZWxzZQot KyAgICAvKiAxMjgtYml0IElCTSBkb3VibGUtZG91YmxlICovCi0gICAgIHN0YXRpYyBfTElCQ1BQ X0NPTlNURVhQUiBjb25zdCBib29sIGlzX2llYzU1OSA9IGZhbHNlOwotKyNlbmRpZgotICNlbHNl Ci0gICAgIHN0YXRpYyBfTElCQ1BQX0NPTlNURVhQUiBjb25zdCBib29sIGlzX2llYzU1OSA9IHRy dWU7Ci0gI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYmN4eC1z c3Atbm9uc2hhcmVkLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtc3NwLW5v bnNoYXJlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzAyOTJiZWIyZmNk Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtc3NwLW5v bnNoYXJlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLS0tLSBhL2xpYmN4 eC9DTWFrZUxpc3RzLnR4dAotKysrIGIvbGliY3h4L0NNYWtlTGlzdHMudHh0Ci1AQCAtNzY5LDYg Kzc2OSw4IEBAIGZ1bmN0aW9uKGN4eF9saW5rX3N5c3RlbV9saWJyYXJpZXMgdGFyZ2V0KQotICAg ICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHt0YXJnZXR9IFBSSVZBVEUgYXRvbWljKQotICAgZW5k aWYoKQotIAotKyNzc3AgIHRhcmdldF9saW5rX2xpYnJhcmllcygke3RhcmdldH0gUFJJVkFURSBz c3Bfbm9uc2hhcmVkKQotKwotICAgaWYgKE1JTkdXKQotICAgICB0YXJnZXRfbGlua19saWJyYXJp ZXMoJHt0YXJnZXR9IFBSSVZBVEUgIiR7TUlOR1dfTElCUkFSSUVTfSIpCi0gICBlbmRpZigpCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYmN4eGFiaS1kbC5wYXRjaCBiL3Ny Y3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4YWJpLWRsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAzYTE1ZjlkYjhjOTguLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xs dm0xMi9wYXRjaGVzL2xpYmN4eGFiaS1kbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICsw LDAgQEAKLUFsc28gbGluayB0byAtbGRsIHRvIHByZXZlbnQgdW5kZWZpbmVkIHJlZmVyZW5jZXMu Ci0KLS0tLSBhL2xpYmN4eGFiaS9zcmMvQ01ha2VMaXN0cy50eHQKLSsrKyBiL2xpYmN4eGFiaS9z cmMvQ01ha2VMaXN0cy50eHQKLUBAIC03Myw2ICs3Myw3IEBACi0gICBlbmRpZigpCi0gCi0gICBh ZGRfbGlicmFyeV9mbGFnc19pZihMSUJDWFhBQklfSEFTX0NfTElCIGMpCi0rICBhZGRfbGlicmFy eV9mbGFnc19pZihMSUJDWFhBQklfSEFTX0NfTElCIGRsKQotIGVuZGlmKCkKLSAKLSBpZiAoTElC Q1hYQUJJX1VTRV9MTFZNX1VOV0lOREVSKQotLS0tIGEvbGliY3h4L0NNYWtlTGlzdHMudHh0Ci0r KysgYi9saWJjeHgvQ01ha2VMaXN0cy50eHQKLUBAIC03NDUsNiArNzQ1LDEwIEBACi0gICAgIHRh cmdldF9saW5rX2xpYnJhcmllcygke3RhcmdldH0gUFJJVkFURSBtKQotICAgZW5kaWYoKQotIAot KyAgaWYgKExJQkNYWF9IQVNfQ19MSUIpCi0rICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke3Rh cmdldH0gUFJJVkFURSBkbCkKLSsgIGVuZGlmKCkKLSsKLSAgIGlmIChMSUJDWFhfSEFTX1JUX0xJ QikKLSAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7dGFyZ2V0fSBQUklWQVRFIHJ0KQotICAg ZW5kaWYoKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJ1bndpbmQtcHBj MzIucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYnVud2luZC1wcGMzMi5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRhYTc1NzZlY2Y5Li4wMDAwMDAwMDAwMDAK LS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJ1bndpbmQtcHBjMzIucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi1UaGlzIGZpeGVzIGJ1aWxkIGF0IGxlYXN0IHdpdGgg Z2NjOSB3aGljaCBkb2VzIG5vdCBkZWZpbmUgYF9fcHBjX19gLgotCi0tLS0gYS9saWJ1bndpbmQv aW5jbHVkZS9fX2xpYnVud2luZF9jb25maWcuaAotKysrIGIvbGlidW53aW5kL2luY2x1ZGUvX19s aWJ1bndpbmRfY29uZmlnLmgKLUBAIC00OSw3ICs0OSw3IEBACi0gIyAgZGVmaW5lIF9MSUJVTldJ TkRfQ09OVEVYVF9TSVpFIDE2NwotICMgIGRlZmluZSBfTElCVU5XSU5EX0NVUlNPUl9TSVpFIDE3 OQotICMgIGRlZmluZSBfTElCVU5XSU5EX0hJR0hFU1RfRFdBUkZfUkVHSVNURVIgX0xJQlVOV0lO RF9ISUdIRVNUX0RXQVJGX1JFR0lTVEVSX1BQQzY0Ci0tIyBlbGlmIGRlZmluZWQoX19wcGNfXykK LSsjIGVsaWYgZGVmaW5lZChfX3Bvd2VycGNfXykKLSAjICBkZWZpbmUgX0xJQlVOV0lORF9UQVJH RVRfUFBDIDEKLSAjICBkZWZpbmUgX0xJQlVOV0lORF9DT05URVhUX1NJWkUgMTE3Ci0gIyAgZGVm aW5lIF9MSUJVTldJTkRfQ1VSU09SX1NJWkUgMTI0Ci0tLS0gYS9saWJ1bndpbmQvc3JjL1Vud2lu ZFJlZ2lzdGVyc1Jlc3RvcmUuUwotKysrIGIvbGlidW53aW5kL3NyYy9VbndpbmRSZWdpc3RlcnNS ZXN0b3JlLlMKLUBAIC0zOTIsNyArMzkyLDcgQEAgTG5vdmVjOgotICAgUFBDNjRfTFIoMykKLSAg IGJjdHIKLSAKLS0jZWxpZiBkZWZpbmVkKF9fcHBjX18pCi0rI2VsaWYgZGVmaW5lZChfX3Bvd2Vy cGNfXykKLSAKLSBERUZJTkVfTElCVU5XSU5EX0ZVTkNUSU9OKF9aTjlsaWJ1bndpbmQxM1JlZ2lz dGVyc19wcGM2anVtcHRvRXYpCi0gLy8KLS0tLSBhL2xpYnVud2luZC9zcmMvVW53aW5kUmVnaXN0 ZXJzU2F2ZS5TCi0rKysgYi9saWJ1bndpbmQvc3JjL1Vud2luZFJlZ2lzdGVyc1NhdmUuUwotQEAg LTU1NCw3ICs1NTQsNyBAQCBERUZJTkVfTElCVU5XSU5EX0ZVTkNUSU9OKF9fdW53X2dldGNvbnRl eHQpCi0gICBibHIKLSAKLSAKLS0jZWxpZiBkZWZpbmVkKF9fcHBjX18pCi0rI2VsaWYgZGVmaW5l ZChfX3Bvd2VycGNfXykKLSAKLSAvLwotIC8vIGV4dGVybiBpbnQgdW53X2dldGNvbnRleHQodW53 X2NvbnRleHRfdCogdGhyZWFkX3N0YXRlKQotLS0tIGEvbGlidW53aW5kL3NyYy9jb25maWcuaAot KysrIGIvbGlidW53aW5kL3NyYy9jb25maWcuaAotQEAgLTk1LDEyICs5NSwxMiBAQAotICNkZWZp bmUgX0xJQlVOV0lORF9CVUlMRF9TSkxKX0FQSVMKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChf X2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fcHBjX18pIHx8IGRl ZmluZWQoX19wcGM2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGNfXykg fHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICNkZWZpbmUgX0xJQlVOV0lORF9TVVBQT1JUX0ZS QU1FX0FQSVMKLSAjZW5kaWYKLSAKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChf X3g4Nl82NF9fKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICBkZWZp bmVkKF9fcHBjX18pIHx8IGRlZmluZWQoX19wcGM2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pIHx8ICAgICAgICBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQoX19w b3dlcnBjNjRfXykgfHwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgKCFkZWZpbmVk KF9fQVBQTEVfXykgJiYgZGVmaW5lZChfX2FybV9fKSkgfHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotICAgICAoZGVmaW5lZChfX2FybTY0X18pIHx8IGRlZmluZWQoX19hYXJjaDY0 X18pKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIGRlZmluZWQoX19taXBz X18pCi0tLS0gYS9saWJ1bndpbmQvc3JjL2xpYnVud2luZC5jcHAKLSsrKyBiL2xpYnVud2luZC9z cmMvbGlidW53aW5kLmNwcAotQEAgLTQyLDcgKzQyLDcgQEAgX0xJQlVOV0lORF9ISURERU4gaW50 IF9fdW53X2luaXRfbG9jYWwodW53X2N1cnNvcl90ICpjdXJzb3IsCi0gIyBkZWZpbmUgUkVHSVNU RVJfS0lORCBSZWdpc3RlcnNfeDg2XzY0Ci0gI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot ICMgZGVmaW5lIFJFR0lTVEVSX0tJTkQgUmVnaXN0ZXJzX3BwYzY0Ci0tI2VsaWYgZGVmaW5lZChf X3BwY19fKQotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjX18pCi0gIyBkZWZpbmUgUkVHSVNURVJf S0lORCBSZWdpc3RlcnNfcHBjCi0gI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKLSAjIGRlZmlu ZSBSRUdJU1RFUl9LSU5EIFJlZ2lzdGVyc19hcm02NApkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZt MTIvcGF0Y2hlcy9sbGRiLW11c2wucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsZGIt bXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjAxYzBkMTM4NTIzLi4w MDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbGRiLW11c2wucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0tLS0gYS9sbGRiL3NvdXJjZS9QbHVnaW5z L1Byb2Nlc3MvTGludXgvUHJvY2ZzLmgKLSsrKyBiL2xsZGIvc291cmNlL1BsdWdpbnMvUHJvY2Vz cy9MaW51eC9Qcm9jZnMuaAotQEAgLTEwLDIxICsxMCwxMiBAQAotIC8vIHN5cy9wcm9jZnMuaCBv biBBbmRyb2lkL0xpbnV4IGZvciBhbGwgc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMuCi0gCi0gI2lu Y2x1ZGUgPHN5cy9wdHJhY2UuaD4KLSsjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotIAotLSNpZmRl ZiBfX0FORFJPSURfXwotLSNpZiBkZWZpbmVkKF9fYXJtNjRfXykgfHwgZGVmaW5lZChfX2FhcmNo NjRfXykKLS10eXBlZGVmIHVuc2lnbmVkIGxvbmcgZWxmX2dyZWdfdDsKLS10eXBlZGVmIGVsZl9n cmVnX3QKLS0gICAgZWxmX2dyZWdzZXRfdFsoc2l6ZW9mKHN0cnVjdCB1c2VyX3B0X3JlZ3MpIC8g c2l6ZW9mKGVsZl9ncmVnX3QpKV07Ci0tdHlwZWRlZiBzdHJ1Y3QgdXNlcl9mcHNpbWRfc3RhdGUg ZWxmX2ZwcmVnc2V0X3Q7Ci0tI2lmbmRlZiBOVF9GUFJFR1NFVAotLSNkZWZpbmUgTlRfRlBSRUdT RVQgTlRfUFJGUFJFRwotLSNlbmRpZiAvLyBOVF9GUFJFR1NFVAotLSNlbGlmIGRlZmluZWQoX19t aXBzX18pCi0tI2lmbmRlZiBOVF9GUFJFR1NFVAotLSNkZWZpbmUgTlRfRlBSRUdTRVQgTlRfUFJG UFJFRwotLSNlbmRpZiAvLyBOVF9GUFJFR1NFVAotLSNlbmRpZgotLSNlbHNlIC8vIF9fQU5EUk9J RF9fCi0rI2lmICFkZWZpbmVkKF9fR0xJQkNfXykgJiYgZGVmaW5lZChfX3Bvd2VycGNfXykKLSsj ZGVmaW5lIHB0X3JlZ3MgbXVzbF9wdF9yZWdzCi0rI2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4KLSsj dW5kZWYgcHRfcmVncwotKyNlbHNlCi0gI2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4KLS0jZW5kaWYg Ly8gX19BTkRST0lEX18KLSsjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNo ZXMvcHBjMzItY29tcGlsZXItcnQucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL3BwYzMy LWNvbXBpbGVyLXJ0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTBhOWE3 NzlkMWIuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL3BwYzMyLWNv bXBpbGVyLXJ0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotY29tbWl0IGJh NGVkZTU5NWZmOTU5OTIzMmY1ZGQyYjQzODRjMjQzMTM3YjUzZmMKLUF1dGhvcjogRGFuaWVsIEtv bGVzYSA8ZGFuaWVsQG9jdGFmb3JnZS5vcmc+Ci1EYXRlOiAgIFR1ZSBKdW4gMjIgMjM6NDA6NTQg MjAyMSArMDIwMAotCi0gICAgZW5hYmxlIGNvbXBpbGVyLXJ0IHN1cHBvcnQgZm9yIHBwYzMyCi0K LWRpZmYgLS1naXQgYS9jb21waWxlci1ydC9jbWFrZS9iYXNlLWNvbmZpZy1peC5jbWFrZSBiL2Nv bXBpbGVyLXJ0L2NtYWtlL2Jhc2UtY29uZmlnLWl4LmNtYWtlCi1pbmRleCAxZWRhYjQzLi41YzBj OGEyIDEwMDY0NAotLS0tIGEvY29tcGlsZXItcnQvY21ha2UvYmFzZS1jb25maWctaXguY21ha2UK LSsrKyBiL2NvbXBpbGVyLXJ0L2NtYWtlL2Jhc2UtY29uZmlnLWl4LmNtYWtlCi1AQCAtMTgyLDkg KzE4Miw3IEBAIG1hY3JvKHRlc3RfdGFyZ2V0cykKLSAgICAgZWxzZWlmKCIke0NPTVBJTEVSX1JU X0RFRkFVTFRfVEFSR0VUX0FSQ0h9IiBNQVRDSEVTICJwb3dlcnBjNjRsZSIpCi0gICAgICAgdGVz dF90YXJnZXRfYXJjaChwb3dlcnBjNjRsZSAiIiAiLW02NCIpCi0gICAgIGVsc2VpZigiJHtDT01Q SUxFUl9SVF9ERUZBVUxUX1RBUkdFVF9BUkNIfSIgTUFUQ0hFUyAicG93ZXJwYyIpCi0tICAgICAg aWYoQ01BS0VfU1lTVEVNX05BTUUgTUFUQ0hFUyAiQUlYIikKLS0gICAgICAgIHRlc3RfdGFyZ2V0 X2FyY2gocG93ZXJwYyAiIiAiLW0zMiIpCi0tICAgICAgZW5kaWYoKQotKyAgICAgIHRlc3RfdGFy Z2V0X2FyY2gocG93ZXJwYyAiIiAiLW0zMiIpCi0gICAgICAgdGVzdF90YXJnZXRfYXJjaChwb3dl cnBjNjQgIiIgIi1tNjQiKQotICAgICBlbHNlaWYoIiR7Q09NUElMRVJfUlRfREVGQVVMVF9UQVJH RVRfQVJDSH0iIE1BVENIRVMgInMzOTB4IikKLSAgICAgICB0ZXN0X3RhcmdldF9hcmNoKHMzOTB4 ICIiICIiKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvdGVtcGxhdGUgYi9zcmNwa2dzL2xs dm0xMi90ZW1wbGF0ZQppbmRleCA3Y2UxODAyOGU0YTMuLjdiMzYxYmJiZjViYyAxMDA2NDQKLS0t IGEvc3JjcGtncy9sbHZtMTIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9sbHZtMTIvdGVtcGxhdGUK QEAgLTEsMjUgKzEsMTcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xsdm0xMicKIHBrZ25hbWU9 bGx2bTEyCiB2ZXJzaW9uPTEyLjAuMQotcmV2aXNpb249MgorcmV2aXNpb249Mwogd3Jrc3JjPSJs bHZtLXByb2plY3QtJHt2ZXJzaW9ufS5zcmMiCiBidWlsZF93cmtzcmM9bGx2bQogYnVpbGRfc3R5 bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSIKICAtRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSAt V25vLWRldgogIC1ERU5BQkxFX0xJTktFUl9CVUlMRF9JRD1ZRVMKLSAtRExMREJfVVNFX1NZU1RF TV9TSVg9WUVTCi0gLURMSUJDWFhfQ1hYX0FCST1saWJjeHhhYmkKLSAtRExJQkNYWF9FTkFCTEVf U1RBVElDX0FCSV9MSUJSQVJZPVlFUwotIC1ETElCQ1hYQUJJX1VTRV9MTFZNX1VOV0lOREVSPVlF UwotIC1ETElCQ1hYQUJJX0VOQUJMRV9TVEFUSUNfVU5XSU5ERVI9WUVTCi0gLURMSUJPTVBfRU5B QkxFX1NIQVJFRD1ZRVMKLSAtRExJQk9NUF9JTlNUQUxMX0FMSUFTRVM9Tk8KICAtRExMVk1fSU5D TFVERV9ET0NTPVlFUwogIC1ETExWTV9CVUlMRF9ET0NTPVlFUwogIC1ETExWTV9FTkFCTEVfU1BI SU5YPVlFUwogIC1EU1BISU5YX1dBUk5JTkdTX0FTX0VSUk9SUz1OTwotIC1ETExWTV9JTlNUQUxM X1VUSUxTPVlFUwogIC1ETExWTV9CVUlMRF9MTFZNX0RZTElCPVlFUwogIC1ETExWTV9MSU5LX0xM Vk1fRFlMSUI9WUVTCiAgLURMTFZNX0VOQUJMRV9SVFRJPVlFUwpAQCAtNTEsODcgKzQzLDEwIEBA IGNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgogCXBwYyopIGNvbmZpZ3VyZV9hcmdzKz0i IC1EQ0xBTkdfRU5BQkxFX0NMQU5HRD1PRkYiIDs7CiBlc2FjCiAKLV9lbmFibGVkX3Byb2plY3Rz PSJjbGFuZztjbGFuZy10b29scy1leHRyYTtjb21waWxlci1ydDtsaWJjeHg7bGliY3h4YWJpO2xp YnVud2luZDtsbGQiCi0KLV9sbGRiX2VuYWJsZT15ZXMKLV9saWJvbXBfZW5hYmxlPW5vCi0KLWNh c2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgotCXBwYzY0bGUqKSA7OwotCXBwYyp8aTY4Niop IF9sbGRiX2VuYWJsZT1ubyA7OwotZXNhYwotCi1jYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIg aW4KLQl4ODZfNjQqfGFhcmNoNjQqfHBwYzY0KikgX2xpYm9tcF9lbmFibGU9eWVzOzsKLWVzYWMK LQotc3VicGFja2FnZXM9ImNsYW5nLXRvb2xzLWV4dHJhIgotCi0jIG11c3QgZ28gYmVmb3JlIGNs YW5nCi1pZiBbICIkX2xpYm9tcF9lbmFibGUiID0gInllcyIgXTsgdGhlbgotCV9lbmFibGVkX3By b2plY3RzKz0iO29wZW5tcCIKLQlzdWJwYWNrYWdlcys9IiBsaWJvbXAgbGlib21wLWRldmVsIgot CSMgYmVjYXVzZSBvZiBjbWFrZSBub25zZW5zZSByZWZlcmVuY2luZyBsaWJvbXB0YXJnZXQuc28u KgotCWRlcGVuZHMrPSIgbGlib21wPj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgotZmkKLQotc3Vi cGFja2FnZXMrPSIgY2xhbmcgY2xhbmctYW5hbHl6ZXIgbGliY2xhbmcgbGliY2xhbmctY3BwCi0g bGx2bS1saWJ1bndpbmQgbGx2bS1saWJ1bndpbmQtZGV2ZWwgbGliY3h4IGxpYmN4eC1kZXZlbAot IGxpYmN4eGFiaSBsaWJjeHhhYmktZGV2ZWwgbGlibGx2bTEyIgotCi1pZiBbICIkX2xsZGJfZW5h YmxlIiA9ICJ5ZXMiIF07IHRoZW4KLQkjIFhYWCBmYWlscyB0byBjcm9zcyBjb21waWxlIGR1ZSB0 byBweXRob24KLQlfZW5hYmxlZF9wcm9qZWN0cys9IjtsbGRiIgotCXN1YnBhY2thZ2VzKz0iIGxs ZGIgbGxkYi1kZXZlbCIKLWZpCi0KLXN1YnBhY2thZ2VzKz0iIGxsZCBsbGQtZGV2ZWwiCi0KLWNv bmZpZ3VyZV9hcmdzKz0iIC1ETExWTV9FTkFCTEVfUFJPSkVDVFM9JHtfZW5hYmxlZF9wcm9qZWN0 c30iCi0KIHBvc3RfcGF0Y2goKSB7Ci0JaWYgWyAiJF9sbGRiX2VuYWJsZSIgPSAieWVzIiBdOyB0 aGVuCi0JCWlmIFsgIiRYQlBTX1RBUkdFVF9MSUJDIiA9ICJtdXNsIiBdOyB0aGVuCi0JCQl2c2Vk IC1pICdzfF9fcHRyYWNlX3JlcXVlc3R8aW50fGcnIFwKLQkJCQkke3dya3NyY30vbGxkYi9zb3Vy Y2UvUGx1Z2lucy9Qcm9jZXNzL0xpbnV4L05hdGl2ZVByb2Nlc3NMaW51eC5jcHAKLQkJZmkKLQkJ IyBkaXNhYmxlIGRvY3MgZm9yIGxsZGIgYXMgdGhleSBmYWlsIHRvIGdlbmVyYXRlCi0JCXZzZWQg LWkgJy9hZGRfc3ViZGlyZWN0b3J5KGRvY3MpL2QnIFwKLQkJCSR7d3Jrc3JjfS9sbGRiL0NNYWtl TGlzdHMudHh0Ci0JZmkKLQogCSMgdXBkYXRlIGNvbmZpZy5ndWVzcyBmb3IgYmV0dGVyIHBsYXRm b3JtIGRldGVjdGlvbgogCWNwICRYQlBTX0NPTU1PTkRJUi9lbnZpcm9ubWVudC9jb25maWd1cmUv YXV0b21ha2UvY29uZmlnLmd1ZXNzIFwKIAkJJHt3cmtzcmN9L2xsdm0vY21ha2UKLQotCSMgZml4 IGxpbmtlciBmYWlsdXJlcyBvbiBzb21lIGFyY2hzCi0JdnNlZCAtaSAncyxjaGVja19saWJyYXJ5 X2V4aXN0cyhnY2NfcyAuKixzZXQoTElCQ1hYQUJJX0hBU19HQ0NfU19MSUIgT04pLCcgXAotCQkk e3dya3NyY30vbGliY3h4YWJpL2NtYWtlL2NvbmZpZy1peC5jbWFrZQotCXZzZWQgLWkgJ3MsY2hl Y2tfbGlicmFyeV9leGlzdHMoZ2NjIC4qLHNldChMSUJDWFhBQklfSEFTX0dDQ19MSUIgT04pLCcg XAotCQkke3dya3NyY30vbGliY3h4YWJpL2NtYWtlL2NvbmZpZy1peC5jbWFrZQotCi0JIyBuZWVk IGxpYnNzcF9ub25zaGFyZWQgb24gc29tZSBtdXNsIHBsYXRmb3JtcyAoYmVjYXVzZSBvZiBub2Rl ZmF1bHRsaWJzKQotCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgotCQlwcGM2NCopIDs7 Ci0JCXBwYyotbXVzbHxpNjg2LW11c2x8bWlwcyotbXVzbCkKLQkJCXZzZWQgLWkgJ3MsXiMgU2V0 dXAgZmxhZ3MuJCxhZGRfbGlicmFyeV9mbGFncyhzc3Bfbm9uc2hhcmVkKSwnIFwKLQkJCQkke3dy a3NyY30vbGlidW53aW5kL3NyYy9DTWFrZUxpc3RzLnR4dAotCQkJdnNlZCAtaSAncyxeIyBTZXR1 cCBmbGFncy4kLGFkZF9saWJyYXJ5X2ZsYWdzKHNzcF9ub25zaGFyZWQpLCcgXAotCQkJCSR7d3Jr c3JjfS9saWJjeHhhYmkvc3JjL0NNYWtlTGlzdHMudHh0Ci0JCQl2c2VkIC1pICdzLCNzc3AsLCcg JHt3cmtzcmN9L2xpYmN4eC9DTWFrZUxpc3RzLnR4dAotCQkJOzsKLQllc2FjCi0KLQljYXNlICIk WEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQkJeDg2XzY0LW11c2wpICMgc29tZSBzYW5pdGl6ZXIg Y3VycmVudGx5IG9ubHkgb24geDg2XzY0IHN0dWZmIG5lZWRzIGJhY2t0cmFjZQotCQkJdnNlZCAt aSAncywjIFNldCBjb21tb24gbGluayBmbGFncy4sbGlzdChBUFBFTkQgU0FOSVRJWkVSX0NPTU1P Tl9MSU5LX0xJQlMgZXhlY2luZm8pLCcgXAotCQkJCSR7d3Jrc3JjfS9jb21waWxlci1ydC9DTWFr ZUxpc3RzLnR4dAotCQkJOzsKLQkJYXJtKi1tdXNsfGk2ODYtbXVzbCkgIyBzYW5pdGl6ZXIgY29k ZSBpcyBicm9rZW4gc2luY2UgaXQgZHVwbGljYXRlcyBzb21lIGxpYmMgYml0cwotCQkJdnNlZCAt aSAncy9zZXQoQ09NUElMRVJfUlRfSEFTX1NBTklUSVpFUl9DT01NT04gVFJVRSkvc2V0KENPTVBJ TEVSX1JUX0hBU19TQU5JVElaRVJfQ09NTU9OIEZBTFNFKS8nIFwKLQkJCQkke3dya3NyY30vY29t cGlsZXItcnQvY21ha2UvY29uZmlnLWl4LmNtYWtlCi0JCQk7OwotCWVzYWMKIH0KIAogcHJlX2Nv bmZpZ3VyZSgpIHsKQEAgLTE1OCwxMCArNzMsOCBAQCBwcmVfY29uZmlndXJlKCkgewogCQkJY21h a2UgLi4vLi4gLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UgXAogCQkJLURMTFZNX0VOQUJMRV9Q Uk9KRUNUUz0ke19lbmFibGVkX3Byb2plY3RzfQogCQltYWtlICR7bWFrZWpvYnN9IC1DIHV0aWxz L1RhYmxlR2VuCi0JCW1ha2UgJHttYWtlam9ic30gLUMgdG9vbHMvY2xhbmcvdXRpbHMvVGFibGVH ZW4KIAkJWyAiJF9sbGRiX2VuYWJsZSIgPSAieWVzIiBdICYmIG1ha2UgJHttYWtlam9ic30gLUMg dG9vbHMvbGxkYi91dGlscy9UYWJsZUdlbgogCQljb25maWd1cmVfYXJncys9IiAtRExMVk1fVEFC TEVHRU49JHt3cmtzcmN9L2xsdm0vYnVpbGQvSE9TVC9iaW4vbGx2bS10YmxnZW4iCi0JCWNvbmZp Z3VyZV9hcmdzKz0iIC1EQ0xBTkdfVEFCTEVHRU49JHt3cmtzcmN9L2xsdm0vYnVpbGQvSE9TVC9i aW4vY2xhbmctdGJsZ2VuIgogCQlbICIkX2xsZGJfZW5hYmxlIiA9ICJ5ZXMiIF0gJiYgY29uZmln dXJlX2FyZ3MrPSIgLURMTERCX1RBQkxFR0VOPSR7d3Jrc3JjfS9sbHZtL2J1aWxkL0hPU1QvYmlu L2xsZGItdGJsZ2VuIgogCQljZCAuLi8uLgogCWZpCkBAIC0yMDIsMjE4ICsxMTUsNiBAQCBkb19p bnN0YWxsKCkgewogCWlmIFsgIiRDUk9TU19CVUlMRCIgXTsgdGhlbgogCQlybSAtZiAke0RFU1RE SVJ9L3Vzci9iaW4vbGx2bS1jb25maWctaG9zdAogCWZpCi0KLQkjIEluc3RhbGwgbGliY3h4YWJp IGhlYWRlcnMKLQl2aW5zdGFsbCAke3dya3NyY30vbGliY3h4YWJpL2luY2x1ZGUvX19jeHhhYmlf Y29uZmlnLmggNjQ0IHVzci9pbmNsdWRlCi0Jdmluc3RhbGwgJHt3cmtzcmN9L2xpYmN4eGFiaS9p bmNsdWRlL2N4eGFiaS5oIDY0NCB1c3IvaW5jbHVkZQotCi0JIyBJbnN0YWxsIGxpYnVud2luZCBo ZWFkZXJzCi0Jdmluc3RhbGwgJHt3cmtzcmN9L2xpYnVud2luZC9pbmNsdWRlL19fbGlidW53aW5k X2NvbmZpZy5oIDY0NCB1c3IvaW5jbHVkZQotCXZpbnN0YWxsICR7d3Jrc3JjfS9saWJ1bndpbmQv aW5jbHVkZS9saWJ1bndpbmQuaCA2NDQgdXNyL2luY2x1ZGUKLQl2aW5zdGFsbCAke3dya3NyY30v bGlidW53aW5kL2luY2x1ZGUvdW53aW5kLmggNjQ0IHVzci9pbmNsdWRlCi0Jdmluc3RhbGwgJHt3 cmtzcmN9L2xpYnVud2luZC9pbmNsdWRlL21hY2gtby9jb21wYWN0X3Vud2luZF9lbmNvZGluZy5o IFwKLQkJNjQ0IHVzci9pbmNsdWRlL21hY2gtbwotfQotCi1jbGFuZy1hbmFseXplcl9wYWNrYWdl KCkgewotCXB5Y29tcGlsZV9kaXJzPSJ1c3Ivc2hhcmUvc2Nhbi12aWV3IgotCWRlcGVuZHM9ImNs YW5nLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0gcHl0aG9uMyBwZXJsIgotCXNob3J0X2Rlc2MrPSIg LSBBIHNvdXJjZSBjb2RlIGFuYWx5c2lzIGZyYW1ld29yayIKLQlob21lcGFnZT0iaHR0cHM6Ly9j bGFuZy1hbmFseXplci5sbHZtLm9yZy8iCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlIHVzci9z aGFyZS9tYW4vbWFuMS9zY2FuLWJ1aWxkLjEKLQkJdm1vdmUgIi91c3IvYmluL3NjYW4tKiIKLQkJ dm1vdmUgIi91c3Ivc2hhcmUvc2Nhbi0qIgotCQl2bW92ZSAiL3Vzci9saWJleGVjLyphbmFseXpl ciIKLQl9Ci19Ci0KLWNsYW5nLXRvb2xzLWV4dHJhX3BhY2thZ2UoKSB7Ci0JbGliMzJkaXNhYmxl ZD15ZXMKLQlkZXBlbmRzPSJjbGFuZy0ke3ZlcnNpb259XyR7cmV2aXNpb259IHB5dGhvbjMiCi0J c2hvcnRfZGVzYys9IiAtIEV4dHJhIENsYW5nIHRvb2xzIgotCWhvbWVwYWdlPSJodHRwczovL2Ns YW5nLmxsdm0ub3JnL2V4dHJhLyIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUgdXNyL2luY2x1 ZGUvY2xhbmctdGlkeQotCQl2bW92ZSB1c3IvYmluL2NsYW5nLWFwcGx5LXJlcGxhY2VtZW50cwot CQl2bW92ZSB1c3IvYmluL2NsYW5nLXF1ZXJ5Ci0JCXZtb3ZlIHVzci9iaW4vY2xhbmctcmVuYW1l Ci0JCXZtb3ZlIHVzci9iaW4vY2xhbmctdGlkeQotCQl2bW92ZSB1c3IvYmluL2RpYWd0b29sCi0J CXZtb3ZlIHVzci9iaW4vZmluZC1hbGwtc3ltYm9scwotCQl2bW92ZSB1c3IvYmluL2htYXB0b29s Ci0JCXZtb3ZlIHVzci9iaW4vbW9kdWxhcml6ZQotCQl2bW92ZSB1c3IvYmluL3BwLXRyYWNlCi0J CXZtb3ZlIHVzci9iaW4vc2FuY292Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nQXBwbHlSZXBs YWNlbWVudHMqIgotCQl2bW92ZSAidXNyL2xpYi9saWJjbGFuZ1F1ZXJ5KiIKLQkJdm1vdmUgInVz ci9saWIvbGliY2xhbmdUaWR5KiIKLQkJdm1vdmUgInVzci9zaGFyZS9jbGFuZy8qdGlkeSoiCi0J CXZtb3ZlIHVzci9zaGFyZS9kb2MvY2xhbmctdG9vbHMKLQkJdm1vdmUgdXNyL3NoYXJlL21hbi9t YW4xL2V4dHJhY2xhbmd0b29scy4xCi0JCXZtb3ZlIHVzci9zaGFyZS9tYW4vbWFuMS9kaWFndG9v bC4xCi0JfQotfQotCi1jbGFuZ19wYWNrYWdlKCkgewotCWxpYjMyZGlzYWJsZWQ9eWVzCi0JZGVw ZW5kcz0ibGlic3RkYysrLWRldmVsIGxpYmdjYy1kZXZlbCAgYmludXRpbHMgJHtYQlBTX1RBUkdF VF9MSUJDfS1kZXZlbAotCSBsaWJjbGFuZy0ke3ZlcnNpb259XyR7cmV2aXNpb259IgotCXNob3J0 X2Rlc2MrPSIgLSBDIGxhbmd1YWdlIGZhbWlseSBmcm9udGVuZCIKLQlob21lcGFnZT0iaHR0cHM6 Ly9jbGFuZy5sbHZtLm9yZy8iCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlIHVzci9pbmNsdWRl L2NsYW5nCi0JCXZtb3ZlIHVzci9pbmNsdWRlL2NsYW5nLWMKLQkJdm1vdmUgInVzci9iaW4vKmNs YW5nKiIKLQkJdm1vdmUgdXNyL2Jpbi9jLWluZGV4LXRlc3QKLQkJdm1vdmUgdXNyL2xpYi9jbGFu ZwotCQl2bW92ZSB1c3IvbGliL2NtYWtlL2NsYW5nCi0JCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5n Ki5hIgotCQl2bW92ZSAidXNyL2xpYi9saWJjbGFuZyouc28iCi0JCXZtb3ZlIHVzci9zaGFyZS9j bGFuZwotCQl2bW92ZSB1c3Ivc2hhcmUvZG9jL2NsYW5nCi0JCXZtb3ZlIHVzci9zaGFyZS9tYW4v bWFuMS9jbGFuZy4xCi0JfQotfQotCi1saWJjbGFuZ19wYWNrYWdlKCkgewotCXNob3J0X2Rlc2Mr PSIgLSBDIGZyb250ZW5kIHJ1bnRpbWUgbGlicmFyeSIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1v dmUgInVzci9saWIvbGliY2xhbmcuc28uKiIKLQl9Ci19Ci0KLWxpYmNsYW5nLWNwcF9wYWNrYWdl KCkgewotCXNob3J0X2Rlc2MrPSIgLSBDIGZyb250ZW5kIHJ1bnRpbWUgbGlicmFyeSAoQysrIGlu dGVyZmFjZSkiCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nLWNw cC5zby4qIgotCX0KLX0KLQotbGxkX3BhY2thZ2UoKSB7Ci0JbGliMzJkaXNhYmxlZD15ZXMKLQlz aG9ydF9kZXNjKz0iIC0gbGlua2VyIgotCWhvbWVwYWdlPSJodHRwczovL2xsZC5sbHZtLm9yZyIK LQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUgdXNyL2Jpbi9sbGQqCi0JCXZtb3ZlIHVzci9iaW4v d2FzbS1sZAotCQl2bW92ZSB1c3IvYmluL2xkLmxsZCoKLQkJdm1vdmUgdXNyL2Jpbi9sZDY0Lmxs ZCoKLQkJdm1vdmUgdXNyL3NoYXJlL2RvYy9sbGQKLQl9Ci19Ci0KLWxsZC1kZXZlbF9wYWNrYWdl KCkgewotCWxpYjMyZGlzYWJsZWQ9eWVzCi0Jc2hvcnRfZGVzYys9IiAtIGxpbmtlciAtIGRldmVs b3BtZW50IGZpbGVzIgotCWhvbWVwYWdlPSJodHRwczovL2xsZC5sbHZtLm9yZyIKLQlkZXBlbmRz PSJsbGQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3Zl IHVzci9pbmNsdWRlL2xsZAotCQl2bW92ZSB1c3IvbGliL2NtYWtlL2xsZAotCQl2bW92ZSAidXNy L2xpYi9saWJsbGQqYSIKLQl9Ci19Ci0KLWxsZGJfcGFja2FnZSgpIHsKLQlsaWIzMmRpc2FibGVk PXllcwotCWRlcGVuZHMrPSIgcHl0aG9uMy1zaXgiCi0Jc2hvcnRfZGVzYys9IiAtIExMREIgZGVi dWdnZXIiCi0JaG9tZXBhZ2U9Imh0dHBzOi8vbGxkYi5sbHZtLm9yZy8iCi0JcGtnX2luc3RhbGwo KSB7Ci0JCXZtb3ZlIHVzci9iaW4vKmxsZGIqCi0JCXZtb3ZlIHVzci9saWIvbGlibGxkYipzby4q Ci0JCXZtb3ZlIC91c3IvbGliL3B5dGhvbioKLQl9Ci19Ci0KLWxsZGItZGV2ZWxfcGFja2FnZSgp IHsKLQlsaWIzMmRpc2FibGVkPXllcwotCWRlcGVuZHM9ImxsZGI+PSR7dmVyc2lvbn1fJHtyZXZp c2lvbn0iCi0Jc2hvcnRfZGVzYys9IiAtIExMREIgZGVidWdnZXIgLSBkZXZlbG9wbWVudCBmaWxl cyIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUgdXNyL2luY2x1ZGUvbGxkYgotCQl2bW92ZSAi dXNyL2xpYi9saWJsbGRiKi5zbyIKLQl9Ci19Ci0KLWxsdm0tbGlidW53aW5kX3BhY2thZ2UoKSB7 Ci0Jc2hvcnRfZGVzYys9IiAtIGxpYnVud2luZCIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUg InVzci9saWIvbGlidW53aW5kLnNvLioiCi0JfQotfQotCi1sbHZtLWxpYnVud2luZC1kZXZlbF9w YWNrYWdlKCkgewotCXNob3J0X2Rlc2MrPSIgLSBsaWJ1bndpbmQgLSBkZXZlbG9wbWVudCBmaWxl cyIKLQlkZXBlbmRzPSJsbHZtLWxpYnVud2luZD49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKLQlj b25mbGljdHM9ImxpYnVud2luZC1kZXZlbD49MCIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUg dXNyL2xpYi9saWJ1bndpbmQuc28KLQkJdm1vdmUgdXNyL2xpYi9saWJ1bndpbmQuYQotCQl2bW92 ZSAidXNyL2luY2x1ZGUvKnVud2luZCoiCi0JCXZtb3ZlIHVzci9pbmNsdWRlL21hY2gtbwotCQl2 bW92ZSB1c3Ivc2hhcmUvZG9jL2xpYnVud2luZAotCX0KLX0KLQotbGliY3h4YWJpX3BhY2thZ2Uo KSB7Ci0Jc2hvcnRfZGVzYys9IiAtIGxvdyBsZXZlbCBzdXBwb3J0IGZvciBsaWJjKysiCi0JcGtn X2luc3RhbGwoKSB7Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYmMrK2FiaS5zby4qIgotCX0KLX0KLQot bGliY3h4YWJpLWRldmVsX3BhY2thZ2UoKSB7Ci0Jc2hvcnRfZGVzYys9IiAtIGxvdyBsZXZlbCBz dXBwb3J0IGZvciBsaWJjKysgLSBkZXZlbG9wbWVudCBmaWxlcyIKLQlkZXBlbmRzPSJsaWJjeHhh Ymk+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlIHVz ci9saWIvbGliYysrYWJpLnNvCi0JCXZtb3ZlIHVzci9saWIvbGliYysrYWJpLmEKLQkJdm1vdmUg InVzci9pbmNsdWRlLypjeHhhYmkqIgotCX0KLX0KLQotbGliY3h4X3BhY2thZ2UoKSB7Ci0Jc2hv cnRfZGVzYys9IiAtIEMrKyBzdGFuZGFyZCBsaWJyYXJ5IgotCXBrZ19pbnN0YWxsKCkgewotCQl2 bW92ZSAidXNyL2xpYi9saWJjKysuc28uKiIKLQl9Ci19Ci0KLWxpYmN4eC1kZXZlbF9wYWNrYWdl KCkgewotCXNob3J0X2Rlc2MrPSIgLSBDKysgc3RhbmRhcmQgbGlicmFyeSAtIGRldmVsb3BtZW50 IGZpbGVzIgotCWRlcGVuZHM9ImxpYmN4eD49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKLQlwa2df aW5zdGFsbCgpIHsKLQkJdm1vdmUgdXNyL2xpYi9saWJjKysuc28KLQkJdm1vdmUgdXNyL2xpYi9s aWJjKysuYQotCQl2bW92ZSB1c3IvbGliL2xpYmMrK2V4cGVyaW1lbnRhbC5hCi0JCXZtb3ZlIHVz ci9pbmNsdWRlL2MrKwotCQl2bW92ZSB1c3Ivc2hhcmUvZG9jL2xpYmN4eAotCX0KLX0KLQotbGli b21wX3BhY2thZ2UoKSB7Ci0Jc2hvcnRfZGVzYys9IiAtIENsYW5nIE9wZW5NUCBzdXBwb3J0IGxp YnJhcnkiCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlIHVzci9saWIvbGlib21wLnNvCi0JCXZt b3ZlICJ1c3IvbGliL2xpYm9tcHRhcmdldC5ydGwuKi5zbyIKLQkJdm1vdmUgdXNyL2xpYi9saWJh cmNoZXIuc28KLQkJdm1vdmUgInVzci9saWIvbGlib21wKi5zby4qIgotCX0KLX0KLQotbGlib21w LWRldmVsX3BhY2thZ2UoKSB7Ci0Jc2hvcnRfZGVzYys9IiAtIENsYW5nIE9wZW5NUCBzdXBwb3J0 IGxpYnJhcnkgLSBkZXZlbG9wbWVudCBmaWxlcyIKLQlkZXBlbmRzPSJsaWJvbXA+PSR7dmVyc2lv bn1fJHtyZXZpc2lvbn0iCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYm9t cCouc28iCi0JCXZtb3ZlICJ1c3IvbGliL2xpYmFyY2hlcioiCi0JCXZtb3ZlICJ1c3IvaW5jbHVk ZS9vbXAqLmgiCi0JCXZtb3ZlICJ1c3IvbGliL2NsYW5nLyR7dmVyc2lvbn0vaW5jbHVkZS9vbXAq LmgiCi0JCXZtb3ZlIHVzci9zaGFyZS9tYW4vbWFuMS9sbHZtb3Blbm1wLjEKLQkJdm1vdmUgdXNy L3NoYXJlL2RvYy9vcGVubXAKLQl9CiB9CiAKIGxpYmxsdm0xMl9wYWNrYWdlKCkgewoKRnJvbSA1 YjFiODI3NWZhMjdlMzk2NzI4YmZiMDFmZWU1N2U2NzM5ZGFiZGQ1IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TG91aXM9MjBEdXByPUMzPUE5PTIwQmVydG9uaT89CiA8 bG91aXNkYkBsZXNwZXRpdHNwZWRlc3RyZXMub3JnPgpEYXRlOiBTYXQsIDEgSmFuIDIwMjIgMTU6 NTc6NTkgKzAyMDAKU3ViamVjdDogW1BBVENIIDA0LzI5XSBydGFnczogcmVidWlsZCBmb3IgbGx2 bTEzCgotLS0KIHNyY3BrZ3MvcnRhZ3MvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3J0YWdz L3RlbXBsYXRlIGIvc3JjcGtncy9ydGFncy90ZW1wbGF0ZQppbmRleCBiNDk2YTFiMGU3MjEuLjli MTYxZTY5MGQ3NiAxMDA2NDQKLS0tIGEvc3JjcGtncy9ydGFncy90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL3J0YWdzL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn cnRhZ3MnCiBwa2duYW1lPXJ0YWdzCiB2ZXJzaW9uPTIuMzgKLXJldmlzaW9uPTUKK3JldmlzaW9u PTYKIGJ1aWxkX3N0eWxlPWNtYWtlCiAjIERvbid0IHJ1biB0ZXN0cyBpbiBkb19pbnN0YWxsLCBw bGVhc2UuCiBjb25maWd1cmVfYXJncz0iLURTS0lQX0NURVNUPVRSVUUiCgpGcm9tIDg1NDE5OTgw NDQwNDE1MzIwMmEwOTYzYTY4Mjc3MTYwZjg2YjNiYjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206ID0/VVRGLTg/cT9Mb3Vpcz0yMER1cHI9QzM9QTk9MjBCZXJ0b25pPz0KIDxsb3Vpc2Ri QGxlc3BldGl0c3BlZGVzdHJlcy5vcmc+CkRhdGU6IFNhdCwgMSBKYW4gMjAyMiAxNTo1ODoyNyAr MDIwMApTdWJqZWN0OiBbUEFUQ0ggMDUvMjldIGJwZnRyYWNlOiByZWJ1aWxkIGZvciBsbHZtMTMK Ci0tLQogc3JjcGtncy9icGZ0cmFjZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYnBmdHJh Y2UvdGVtcGxhdGUgYi9zcmNwa2dzL2JwZnRyYWNlL3RlbXBsYXRlCmluZGV4IDI4YWIzYzYyNjM5 OS4uZWIyNDgwZDIyMzBlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2JwZnRyYWNlL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvYnBmdHJhY2UvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdicGZ0cmFjZScKIHBrZ25hbWU9YnBmdHJhY2UKIHZlcnNpb249MC4xNC4xCi1y ZXZpc2lvbj0xCityZXZpc2lvbj0yCiBhcmNocz0ieDg2XzY0KiBhYXJjaDY0KiBwcGM2NCoiCiBi dWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EQlVJTERfVEVTVElORz1PRkYiICAj IG5lZWRzIHJvb3QgdG8gcnVuCgpGcm9tIGUyZWRmNmU5M2NiNTMxZDI0MGYwZDIzMzVmNTc4ZGVi Mzc3MTBlNjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9Mb3Vpcz0y MER1cHI9QzM9QTk9MjBCZXJ0b25pPz0KIDxsb3Vpc2RiQGxlc3BldGl0c3BlZGVzdHJlcy5vcmc+ CkRhdGU6IFNhdCwgMSBKYW4gMjAyMiAxNTo1ODozOCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDYv MjldIGNsYXp5OiByZWJ1aWxkIGZvciBsbHZtMTMKCi0tLQogc3JjcGtncy9jbGF6eS90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2xhenkvdGVtcGxhdGUgYi9zcmNwa2dzL2NsYXp5L3RlbXBs YXRlCmluZGV4IDExZjNiYWI1NWFlZi4uZjgxZGUwOGFiODM2IDEwMDY0NAotLS0gYS9zcmNwa2dz L2NsYXp5L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvY2xhenkvdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjbGF6eScKIHBrZ25hbWU9Y2xhenkKIHZlcnNpb249 MS4xMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGJ1aWxkX2hl bHBlcj1xZW11CiBob3N0bWFrZWRlcGVuZHM9Imxsdm0iCgpGcm9tIGM0OGQ5MWRjY2VhZGI4MTJh YzdjNzZiYWQwNjc5MDA3ODhlMjA5YTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/ VVRGLTg/cT9Mb3Vpcz0yMER1cHI9QzM9QTk9MjBCZXJ0b25pPz0KIDxsb3Vpc2RiQGxlc3BldGl0 c3BlZGVzdHJlcy5vcmc+CkRhdGU6IFNhdCwgMSBKYW4gMjAyMiAxNTo1ODo0OSArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDcvMjldIGNjbHM6IHJlYnVpbGQgZm9yIGxsdm0xMwoKLS0tCiBzcmNwa2dz L2NjbHMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NjbHMvdGVtcGxhdGUgYi9zcmNwa2dz L2NjbHMvdGVtcGxhdGUKaW5kZXggZmJiN2M2ODQ3YmMxLi40MGFiYTNiNTViZmUgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvY2Nscy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2NjbHMvdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjY2xzJwogcGtnbmFtZT1jY2xzCiB2 ZXJzaW9uPTAuMjAyMTAzMzAKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNt YWtlCiBob3N0bWFrZWRlcGVuZHM9ImNsYW5nLXRvb2xzLWV4dHJhIgogbWFrZWRlcGVuZHM9Imxs dm0gbmN1cnNlcy1kZXZlbCByYXBpZGpzb24gemxpYi1kZXZlbCBjbGFuZy10b29scy1leHRyYSIK CkZyb20gZDY2Nzk1Njk3MWM4YmQ2Y2RhOGM2NjIyMzRhZGFmNTA3ZWUwM2RmYyBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP0xvdWlzPTIwRHVwcj1DMz1BOT0yMEJlcnRv bmk/PQogPGxvdWlzZGJAbGVzcGV0aXRzcGVkZXN0cmVzLm9yZz4KRGF0ZTogU2F0LCAxIEphbiAy MDIyIDE1OjU5OjM1ICswMjAwClN1YmplY3Q6IFtQQVRDSCAwOC8yOV0gaW5jbHVkZS13aGF0LXlv dS11c2U6IHJlYnVpbGQgZm9yIGxsdm0xMwoKLS0tCiBzcmNwa2dzL2luY2x1ZGUtd2hhdC15b3Ut dXNlL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAy IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaW5jbHVkZS13aGF0LXlvdS11c2Uv dGVtcGxhdGUgYi9zcmNwa2dzL2luY2x1ZGUtd2hhdC15b3UtdXNlL3RlbXBsYXRlCmluZGV4IGIx M2JiN2VlNTZhZi4uYjRiMTY3NDAxZWJlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2luY2x1ZGUtd2hh dC15b3UtdXNlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvaW5jbHVkZS13aGF0LXlvdS11c2UvdGVt cGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdpbmNsdWRlLXdoYXQt eW91LXVzZScKIHBrZ25hbWU9aW5jbHVkZS13aGF0LXlvdS11c2UKLXZlcnNpb249MC4xNgordmVy c2lvbj0wLjE3CiByZXZpc2lvbj0xCiB3cmtzcmM9IiR7cGtnbmFtZX0iCiBidWlsZF9zdHlsZT1j bWFrZQpAQCAtMTIsNyArMTIsNyBAQCBtYWludGFpbmVyPSJMZWFoIE5ldWtpcmNoZW4gPGxlYWhA dnV4dS5vcmc+IgogbGljZW5zZT0iTkNTQSIKIGhvbWVwYWdlPSJodHRwczovL2luY2x1ZGUtd2hh dC15b3UtdXNlLm9yZy8iCiBkaXN0ZmlsZXM9Imh0dHBzOi8vaW5jbHVkZS13aGF0LXlvdS11c2Uu b3JnL2Rvd25sb2Fkcy8ke3BrZ25hbWV9LSR7dmVyc2lvbn0uc3JjLnRhci5neiIKLWNoZWNrc3Vt PThkNmZjOWIyNTUzNDNiYzFlNWVjNDU5ZTM5NTEyZGYxZDUxYzYwZTAzNTYyOTg1ZTAwNzYwMzYx MTlmZjVhMWMKK2NoZWNrc3VtPWVjYTdjMDRmOGI0MTZiNjM4NWVkMDBlMzM2NjlhN2ZhNDY5M2Nk MjZjYjcyYjUyMmNkZTU1ODgyOGViMGM2NjUKIHB5dGhvbl92ZXJzaW9uPTMKIAogcG9zdF9pbnN0 YWxsKCkgewoKRnJvbSBmZWYyYjQyNDUwZjljMjliMjYyYTAwMTZkMTI4NjQxZjQ0YjM2ZGFhIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TG91aXM9MjBEdXByPUMzPUE5 PTIwQmVydG9uaT89CiA8bG91aXNkYkBsZXNwZXRpdHNwZWRlc3RyZXMub3JnPgpEYXRlOiBTYXQs IDEgSmFuIDIwMjIgMTY6MDE6MjEgKzAyMDAKU3ViamVjdDogW1BBVENIIDA5LzI5XSBjb2RlbGl0 ZTogcmVidWlsZCBmb3IgbGx2bTEzCgotLS0KIHNyY3BrZ3MvY29kZWxpdGUvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2NvZGVsaXRlL3RlbXBsYXRlIGIvc3JjcGtncy9jb2RlbGl0ZS90ZW1w bGF0ZQppbmRleCAzYTk5M2EyYzBjZmIuLjI0ZTJjODc5ZGQ0NSAxMDA2NDQKLS0tIGEvc3JjcGtn cy9jb2RlbGl0ZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2NvZGVsaXRlL3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnY29kZWxpdGUnCiBwa2duYW1lPWNvZGVs aXRlCiB2ZXJzaW9uPTE1LjAuNgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9 Y21ha2UKIGJ1aWxkX2hlbHBlcj1jbWFrZS13eFdpZGdldHMtZ3RrMwogY29uZmlndXJlX2FyZ3M9 Ii1EV0lUSF9QQ0g9MCAtRFdJVEhfV1hfQ09ORklHPXd4LWNvbmZpZy1ndGszCgpGcm9tIGFjNjkz NzAyNzFlNjliMDY3N2JlYmQwNzEzNDMyZGQ1NjgwM2Q3MzcgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206ID0/VVRGLTg/cT9Mb3Vpcz0yMER1cHI9QzM9QTk9MjBCZXJ0b25pPz0KIDxsb3Vp c2RiQGxlc3BldGl0c3BlZGVzdHJlcy5vcmc+CkRhdGU6IFNhdCwgMSBKYW4gMjAyMiAxNjoyMjo0 OCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMTAvMjldIGtkZXZlbG9wOiByZWJ1aWxkIGZvciBsbHZt MTMKCi0tLQogc3JjcGtncy9rZGV2ZWxvcC90ZW1wbGF0ZSB8IDMgKystCiAxIGZpbGUgY2hhbmdl ZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9r ZGV2ZWxvcC90ZW1wbGF0ZSBiL3NyY3BrZ3Mva2RldmVsb3AvdGVtcGxhdGUKaW5kZXggNzZhZmUy ZTM0Y2EwLi5mYjNhYWFkODlhNDcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva2RldmVsb3AvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9rZGV2ZWxvcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDggQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ2tkZXZlbG9wJwogcGtnbmFtZT1rZGV2ZWxvcAorPDw8PDw8PCBIRUFE CiB2ZXJzaW9uPTIxLjEyLjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNt YWtlCiBjb25maWd1cmVfYXJncz0iLURCVUlMRF9URVNUSU5HPU9GRiIKIGhvc3RtYWtlZGVwZW5k cz0iZXh0cmEtY21ha2UtbW9kdWxlcyBxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMgcXQ1LXRvb2xz CgpGcm9tIDBlYjgyYTY2NDRlMzA4ZjcxNTdhM2U0MGJjYzJhODhjZjc0NGMxOTcgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9Mb3Vpcz0yMER1cHI9QzM9QTk9MjBCZXJ0 b25pPz0KIDxsb3Vpc2RiQGxlc3BldGl0c3BlZGVzdHJlcy5vcmc+CkRhdGU6IFNhdCwgMSBKYW4g MjAyMiAxNjoyMzowNyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMTEvMjldIGp1Q2krKzogcmVidWls ZCBmb3IgbGx2bTEzCgotLS0KIHNyY3BrZ3MvanVDaSsrL3RlbXBsYXRlIHwgMiArLQogMSBmaWxl IGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9qdUNpKysvdGVtcGxhdGUgYi9zcmNwa2dzL2p1Q2krKy90ZW1wbGF0ZQppbmRleCAxYTc2 MDRiNDRhMDAuLjUxMDMzMjRkZWMyMCAxMDA2NDQKLS0tIGEvc3JjcGtncy9qdUNpKysvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9qdUNpKysvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdqdUNpKysnCiBwa2duYW1lPWp1Q2krKwogdmVyc2lvbj0xLjYuMgotcmV2 aXNpb249MgorcmV2aXNpb249MwogX2xpYmNsYW5nbW1fY29tbWl0PSJiMzQyZjRkZDZkZTRmZTUw OWE2OTJhNGI0ZmNmYzdlMjRhYWU5NTkwIgogX3RpbnlfY29tbWl0PSJjOWM4YmY4MTBkZGFkOGNk MTc4ODJiOWE5ZWU2MjhhNjkwZTc3OWY1Igogd3Jrc3JjPSJqdWNpcHAtdiR7dmVyc2lvbn0iCgpG cm9tIDA5OTI4MzU0ZGVkNDEzM2YxNWU2MGYxYzhhMDhhODUyODYzMmIzMTYgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9Mb3Vpcz0yMER1cHI9QzM9QTk9MjBCZXJ0b25p Pz0KIDxsb3Vpc2RiQGxlc3BldGl0c3BlZGVzdHJlcy5vcmc+CkRhdGU6IFNhdCwgMSBKYW4gMjAy MiAxODozMDowMSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMTIvMjldIGxsdm0xMzogZml4IGxpYm9t cCogcGFja2FnZXMKCi0tLQogc3JjcGtncy9sbHZtMTMvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmls ZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9sbHZtMTMvdGVtcGxhdGUgYi9zcmNwa2dzL2xsdm0xMy90ZW1wbGF0ZQppbmRleCAw OGQ4NDc0NzI1MjUuLmJmYzkxMDU2ZDI3NyAxMDA2NDQKLS0tIGEvc3JjcGtncy9sbHZtMTMvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9sbHZtMTMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdsbHZtMTMnCiBwa2duYW1lPWxsdm0xMwogdmVyc2lvbj0xMy4wLjAK LXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIHdya3NyYz0ibGx2bS1wcm9qZWN0LSR7dmVyc2lvbn0u c3JjIgogYnVpbGRfd3Jrc3JjPWxsdm0KIGJ1aWxkX3N0eWxlPWNtYWtlCkBAIC0zOTcsNiArMzk3 LDcgQEAgbGlib21wX3BhY2thZ2UoKSB7CiAJc2hvcnRfZGVzYys9IiAtIENsYW5nIE9wZW5NUCBz dXBwb3J0IGxpYnJhcnkiCiAJcGtnX2luc3RhbGwoKSB7CiAJCXZtb3ZlIHVzci9saWIvbGlib21w LnNvCisJCXZtb3ZlIHVzci9saWIvbGlib21wdGFyZ2V0LnNvCiAJCXZtb3ZlICJ1c3IvbGliL2xp Ym9tcHRhcmdldC5ydGwuKi5zbyIKIAkJdm1vdmUgdXNyL2xpYi9saWJhcmNoZXIuc28KIAl9CkBA IC00MDYsNyArNDA3LDYgQEAgbGlib21wLWRldmVsX3BhY2thZ2UoKSB7CiAJc2hvcnRfZGVzYys9 IiAtIENsYW5nIE9wZW5NUCBzdXBwb3J0IGxpYnJhcnkgLSBkZXZlbG9wbWVudCBmaWxlcyIKIAlk ZXBlbmRzPSJsaWJvbXA+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCiAJcGtnX2luc3RhbGwoKSB7 Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYm9tcCouc28iCiAJCXZtb3ZlICJ1c3IvbGliL2xpYmFyY2hl cioiCiAJCXZtb3ZlICJ1c3IvaW5jbHVkZS9vbXAqLmgiCiAJCXZtb3ZlICJ1c3IvbGliL2NsYW5n LyR7dmVyc2lvbn0vaW5jbHVkZS9vbXAqLmgiCgpGcm9tIDU4M2M0MzdlNWQzZmU3Yjk4ODVkZWVh ZTE4NWY0ZmY4M2ViYmI3MjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/ cT9Mb3Vpcz0yMER1cHI9QzM9QTk9MjBCZXJ0b25pPz0KIDxsb3Vpc2RiQGxlc3BldGl0c3BlZGVz dHJlcy5vcmc+CkRhdGU6IFN1biwgMTYgSmFuIDIwMjIgMTQ6MzM6NTYgKzAyMDAKU3ViamVjdDog W1BBVENIIDEzLzI5XSBjaHJvbWl1bTogcmVidWlsZCBmb3IgbGx2bTEzCgotLS0KIHNyY3BrZ3Mv Y2hyb21pdW0vdGVtcGxhdGUgfCA4ICstLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jaHJvbWl1bS90ZW1w bGF0ZSBiL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKaW5kZXggOTJjNDhlNTUwNTk5Li4yNDM5 MjUxMWZmOWEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9jaHJvbWl1bS90ZW1wbGF0ZQpAQCAtMjAsNyArMjAsNyBAQCBkZXNjX29wdGlvbl9kZWJ1 Zz0iQnVpbGQgd2l0aCBkZWJ1ZyBzeW1ib2xzIgogZGVzY19vcHRpb25fanNfb3B0aW1pemU9Ik9w dGltaXplIHRoZSBKUyB1c2VkIGZvciBDaHJvbWl1bSdzIFVJIgogZGVzY19vcHRpb25fcGlwZXdp cmU9IkVuYWJsZSBzdXBwb3J0IGZvciBzY3JlZW4gc2hhcmluZyBmb3IgV2ViUlRDIHZpYSBQaXBl V2lyZSIKIAotaG9zdG1ha2VkZXBlbmRzPSIkKHZvcHRfaWYgY2xhbmcgImNsYW5nIGxsZCBsbHZt MTIiKSBweXRob24gcHl0aG9uMyBwa2djb25mIHBlcmwgZ3BlcmYgYmlzb24gbmluamEgbm9kZWpz IGh3aWRzCitob3N0bWFrZWRlcGVuZHM9IiQodm9wdF9pZiBjbGFuZyAiY2xhbmcgbGxkIGxsdm0x MyIpIHB5dGhvbiBweXRob24zIHBrZ2NvbmYgcGVybCBncGVyZiBiaXNvbiBuaW5qYSBub2RlanMg aHdpZHMKICBsaWJhdG9taWMtZGV2ZWwgbGliZXZlbnQtZGV2ZWwgbGliZ2xpYi1kZXZlbCAkKHZv cHRfaWYganNfb3B0aW1pemUgb3Blbmpkaykgd2F5bGFuZC1kZXZlbCBsaWJlcG94eS1kZXZlbCIK IG1ha2VkZXBlbmRzPSJsaWJwbmctZGV2ZWwgZ3RrKy1kZXZlbCBndGsrMy1kZXZlbCBuc3MtZGV2 ZWwgcGNpdXRpbHMtZGV2ZWwKICBsaWJYaS1kZXZlbCBsaWJnY3J5cHQtZGV2ZWwgbGliZ25vbWUt a2V5cmluZy1kZXZlbCBjdXBzLWRldmVsIGVsZnV0aWxzLWRldmVsCkBAIC0yNjcsMTIgKzI2Nyw2 IEBAIGRvX2NvbmZpZ3VyZSgpIHsKIAkJJ2Rpc2FibGVfZmllbGR0cmlhbF90ZXN0aW5nX2NvbmZp Zz10cnVlJwogCiAJCSdpc19vZmZpY2lhbF9idWlsZD10cnVlJwotCi0JCSMgc2VnZmF1bHRzIHdp dGggbGx2bS0xMi4wLjEKLQkJJ2lzX2NmaT1mYWxzZScKLQkJJ3VzZV90aGluX2x0bz1mYWxzZScK LQkJJ3VzZV9jZmlfaWNhbGw9ZmFsc2UnCi0JCSdjaHJvbWVfcGdvX3BoYXNlPTAnCiAJKQogCiAJ aWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCgpGcm9tIGJhM2MzZjc5NDM0NDQ4YjFlNTQ2OWVh MTkyOThjZDAxZmJhZDVhMzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/ cT9Mb3Vpcz0yMER1cHI9QzM9QTk9MjBCZXJ0b25pPz0KIDxsb3Vpc2RiQGxlc3BldGl0c3BlZGVz dHJlcy5vcmc+CkRhdGU6IFN1biwgMTYgSmFuIDIwMjIgMTQ6Mzk6MDQgKzAyMDAKU3ViamVjdDog W1BBVENIIDE0LzI5XSBsbHZtMTI6IHJlbW92ZQoKLS0tCiBzcmNwa2dzL2xsdm0xMi9JTlNUQUxM Lm1zZyAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL2xsdm0xMi9maWxlcy9sbHZtLUNv bmZpZy1sbHZtLWNvbmZpZy5oICAgIHwgICA5IC0tCiBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xs dm0tMDAxLW11c2wucGF0Y2ggICAgfCAgNTcgLS0tLS0tLS0tCiAuLi4vcGF0Y2hlcy9sbHZtLTAw Mi1tdXNsLXBwYzY0LWVsZnYyLnBhdGNoICAgfCAgMzAgLS0tLS0KIC4uLi9wYXRjaGVzL2xsdm0t MDAzLXBwYy1zZWN1cmVwbHQucGF0Y2ggICAgICB8ICAxMSAtLQogLi4uL3BhdGNoZXMvbGx2bS0w MDQtb3ZlcnJpZGUtb3B0LnBhdGNoICAgICAgIHwgIDE4IC0tLQogLi4uL2xsdm0xMi9wYXRjaGVz L2xsdm0tMDA1LXBwYy1iaWdwaWMucGF0Y2ggIHwgIDM2IC0tLS0tLQogLi4uL3BhdGNoZXMvbGx2 bS0wMDYtYWFyY2g2NC1tZl9leGVjLnBhdGNoICAgIHwgIDI1IC0tLS0KIHNyY3BrZ3MvbGx2bTEy L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICB8IDEyMCArLS0tLS0tLS0tLS0tLS0tLS0K IHNyY3BrZ3MvbGx2bTEyL3VwZGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyAtCiAx MCBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMwNSBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9JTlNUQUxMLm1zZwogZGVsZXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvbGx2bTEyL2ZpbGVzL2xsdm0tQ29uZmlnLWxsdm0tY29uZmlnLmgKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDAxLW11c2wucGF0Y2gK IGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDAyLW11c2wt cHBjNjQtZWxmdjIucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRj aGVzL2xsdm0tMDAzLXBwYy1zZWN1cmVwbHQucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDA0LW92ZXJyaWRlLW9wdC5wYXRjaAogZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDUtcHBjLWJpZ3BpYy5wYXRj aAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDYtYWFy Y2g2NC1tZl9leGVjLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvdXBk YXRlCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvSU5TVEFMTC5tc2cgYi9zcmNwa2dzL2xs dm0xMi9JTlNUQUxMLm1zZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LjAwNGFjZjdiNTMwYwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEyL0lOU1RBTEwu bXNnCkBAIC0wLDAgKzEgQEAKK2xsdm0xMiBpcyBubyBsb25nZXIgcHJvdmlkZWQgYnkgVm9pZCBM aW51eApkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvZmlsZXMvbGx2bS1Db25maWctbGx2bS1j b25maWcuaCBiL3NyY3BrZ3MvbGx2bTEyL2ZpbGVzL2xsdm0tQ29uZmlnLWxsdm0tY29uZmlnLmgK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmYTA4YzliZTY5Ni4uMDAwMDAwMDAwMDAw Ci0tLSBhL3NyY3BrZ3MvbGx2bTEyL2ZpbGVzL2xsdm0tQ29uZmlnLWxsdm0tY29uZmlnLmgKKysr IC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLSNpbmNsdWRlIDxiaXRzL3dvcmRzaXplLmg+Ci0K LSNpZiBfX1dPUkRTSVpFID09IDMyCi0jaW5jbHVkZSAibGx2bS1jb25maWctMzIuaCIKLSNlbGlm IF9fV09SRFNJWkUgPT0gNjQKLSNpbmNsdWRlICJsbHZtLWNvbmZpZy02NC5oIgotI2Vsc2UKLSNl cnJvciAiVW5rbm93biB3b3JkIHNpemUiCi0jZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2 bTEyL3BhdGNoZXMvbGx2bS0wMDEtbXVzbC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMv bGx2bS0wMDEtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJhM2Y4 ZDYyODEzLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAw MS1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotRnJvbSBmYWNhM2Zi ZDE1ZDBjMzEwODQ5M2MzYzU0Y2Q5MzEzOGUwNDlhYzQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQotRnJvbTogQW5kcmVhIEJyYW5jYWxlb25pIDxtaXdheGVAZ21haWwuY29tPgotRGF0ZTogVHVl LCA4IFNlcCAyMDE1IDIyOjAzOjAyICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMy8zXSBtdXNsCi0K LS0tLQotIGluY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5mby5oIHwgOSArKysr KysrKysKLSBsaWIvU3VwcG9ydC9EeW5hbWljTGlicmFyeS5jcHAgICAgICAgICAgICB8IDIgKy0K LSBsaWIvU3VwcG9ydC9Vbml4L1NpZ25hbHMuaW5jICAgICAgICAgICAgICB8IDYgKysrLS0tCi0g dXRpbHMvdW5pdHRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QuY2MgICAgfCAxICsKLSA1IGZpbGVz IGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQg YS9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uaCBiL2luY2x1ZGUvbGx2 bS9BbmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5mby5oCi1pbmRleCAzNGE4YTFlMy4uMTIxNGVjZTUg MTAwNjQ0Ci0tLS0gYS9sbHZtL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5m by5oCi0rKysgYi9sbHZtL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5mby5o Ci1AQCAtMTgsNiArMTgsMTUgQEAKLSAjaW5jbHVkZSAibGx2bS9JUi9QYXNzTWFuYWdlci5oIgot ICNpbmNsdWRlICJsbHZtL1Bhc3MuaCIKLSAKLSsjdW5kZWYgZm9wZW42NAotKyN1bmRlZiBmc2Vl a282NAotKyN1bmRlZiBmc3RhdDY0Ci0rI3VuZGVmIGZzdGF0dmZzNjQKLSsjdW5kZWYgZnRlbGxv NjQKLSsjdW5kZWYgbHN0YXQ2NAotKyN1bmRlZiBzdGF0NjQKLSsjdW5kZWYgdG1wZmlsZTY0Ci0r Ci0gbmFtZXNwYWNlIGxsdm0gewotIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBBcnJheVJl ZjsKLSBjbGFzcyBUcmlwbGU7Ci1kaWZmIC0tZ2l0IGEvbGliL1N1cHBvcnQvVW5peC9EeW5hbWlj TGlicmFyeS5pbmMgYi9saWIvU3VwcG9ydC9Vbml4L0R5bmFtaWNMaWJyYXJ5LmluYwotaW5kZXgg YTJhMzc5OTYuLjJmODZjNDcwIDEwMDY0NAotLS0tIGEvbGx2bS9saWIvU3VwcG9ydC9Vbml4L0R5 bmFtaWNMaWJyYXJ5LmluYwotKysrIGIvbGx2bS9saWIvU3VwcG9ydC9Vbml4L0R5bmFtaWNMaWJy YXJ5LmluYwotQEAgLTEwMiw3ICsxMDIsNyBAQCBzdGF0aWMgdm9pZCAqRG9TZWFyY2goY29uc3Qg Y2hhciogU3ltYm9sTmFtZSkgewotIAotIC8vIFRoaXMgbWFjcm8gcmV0dXJucyB0aGUgYWRkcmVz cyBvZiBhIHdlbGwta25vd24sIGV4cGxpY2l0IHN5bWJvbAotICNkZWZpbmUgRVhQTElDSVRfU1lN Qk9MKFNZTSkgXAotLSAgIGlmICghc3RyY21wKFN5bWJvbE5hbWUsICNTWU0pKSByZXR1cm4gJlNZ TQotKyAgIGlmICghc3RyY21wKFN5bWJvbE5hbWUsICNTWU0pKSByZXR1cm4gKHZvaWQgKikmU1lN Ci0gCi0gLy8gVW5kZXIgZ2xpYmMgd2UgaGF2ZSBhIHdlaXJkIHNpdHVhdGlvbi4gVGhlIHN0ZGVy ci9vdXQvaW4gc3ltYm9scyBhcmUgYm90aAotIC8vIG1hY3JvcyBhbmQgZ2xvYmFsIHZhcmlhYmxl cyBiZWNhdXNlIG9mIHN0YW5kYXJkcyByZXF1aXJlbWVudHMuIFNvLCB3ZQotZGlmZiAtLWdpdCBh L3V0aWxzL3VuaXR0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LmNjIGIvdXRpbHMvdW5pdHRlc3Qv Z29vZ2xldGVzdC9zcmMvZ3Rlc3QuY2MKLWluZGV4IGQ4ODJhYjJlLi5mMWZiMTJkMCAxMDA2NDQK LS0tLSBhL2xsdm0vdXRpbHMvdW5pdHRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QuY2MKLSsrKyBi L2xsdm0vdXRpbHMvdW5pdHRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QuY2MKLUBAIC0xMjgsNiAr MTI4LDcgQEAKLSAKLSAjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXwotICMgaW5jbHVkZSA8 YXJwYS9pbmV0Lmg+ICAvLyBOT0xJTlQKLSsjIGluY2x1ZGUgPHN5cy9zb2NrZXQuaD4gIC8vIE5P TElOVAotICMgaW5jbHVkZSA8bmV0ZGIuaD4gIC8vIE5PTElOVAotICMgaW5jbHVkZSA8c3lzL3Nv Y2tldC5oPiAgLy8gTk9MSU5UCi0gIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4gIC8vIE5PTElOVApk aWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAwMi1tdXNsLXBwYzY0LWVs ZnYyLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAwMi1tdXNsLXBwYzY0LWVs ZnYyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDcxZDk2NGJkMzcuLjAw MDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDAyLW11c2wtcHBj NjQtZWxmdjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1UaGlzIHBhdGNo ZXMgTExWTSB0byB1c2UgRUxGdjIgb24gcHBjNjQgdW5jb25kaXRpb25hbGx5IHVubGVzcyBvdmVy cmlkZGVuLiBXZQotbmVlZCB0aGlzIGJlY2F1c2UgdW5saWtlIG1vc3QgZGlzdHJvcyB3ZSB1c2Ug RUxGdjIgZm9yIGJvdGggZ2xpYmMgYW5kIG11c2wKLW9uIGJpZyBlbmRpYW4gcHBjNjQuCi0KLWRp ZmYgLS1naXQgYS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDVGFyZ2V0TWFjaGluZS5jcHAgYi9saWIv VGFyZ2V0L1Bvd2VyUEMvUFBDVGFyZ2V0TWFjaGluZS5jcHAKLWluZGV4IDA2MzQ4MzNlLi5iN2Ni YzJlNyAxMDA2NDQKLS0tLSBhL2xsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ1RhcmdldE1hY2hp bmUuY3BwCi0rKysgYi9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENUYXJnZXRNYWNoaW5lLmNw cAotQEAgLTIyMiw5ICsyMjIsOCBAQCBzdGF0aWMgUFBDVGFyZ2V0TWFjaGluZTo6UFBDQUJJIGNv bXB1dGVUYXJnZXRBQkkoY29uc3QgVHJpcGxlICZUVCwKLSAKLSAgIHN3aXRjaCAoVFQuZ2V0QXJj aCgpKSB7Ci0gICBjYXNlIFRyaXBsZTo6cHBjNjRsZToKLS0gICAgcmV0dXJuIFBQQ1RhcmdldE1h Y2hpbmU6OlBQQ19BQklfRUxGdjI7Ci0gICBjYXNlIFRyaXBsZTo6cHBjNjQ6Ci0tICAgIHJldHVy biBQUENUYXJnZXRNYWNoaW5lOjpQUENfQUJJX0VMRnYxOwotKyAgICByZXR1cm4gUFBDVGFyZ2V0 TWFjaGluZTo6UFBDX0FCSV9FTEZ2MjsKLSAgIGRlZmF1bHQ6Ci0gICAgIHJldHVybiBQUENUYXJn ZXRNYWNoaW5lOjpQUENfQUJJX1VOS05PV047Ci0gICB9Ci1kaWZmIC0tZ2l0IGEvdGVzdC9Db2Rl R2VuL1Bvd2VyUEMvcHBjNjQtZWxmLWFiaS5sbCBiL3Rlc3QvQ29kZUdlbi9Qb3dlclBDL3BwYzY0 LWVsZi1hYmkubGwKLWluZGV4IDhiMWNmNmI1Li4yOTZhMmFmYSAxMDA2NDQKLS0tLSBhL2xsdm0v dGVzdC9Db2RlR2VuL1Bvd2VyUEMvcHBjNjQtZWxmLWFiaS5sbAotKysrIGIvbGx2bS90ZXN0L0Nv ZGVHZW4vUG93ZXJQQy9wcGM2NC1lbGYtYWJpLmxsCi1AQCAtMSw0ICsxLDUgQEAKLS07IFJVTjog bGxjIC12ZXJpZnktbWFjaGluZWluc3RycyAtbXRyaXBsZT1wb3dlcnBjNjQtdW5rbm93bi1saW51 eC1nbnUgPCAlcyB8IEZpbGVDaGVjayAlcyAtY2hlY2stcHJlZml4PUNIRUNLLUVMRnYxCi0rOyBS VU46IGxsYyAtdmVyaWZ5LW1hY2hpbmVpbnN0cnMgLW10cmlwbGU9cG93ZXJwYzY0LXVua25vd24t bGludXgtZ251IDwgJXMgfCBGaWxlQ2hlY2sgJXMgLWNoZWNrLXByZWZpeD1DSEVDSy1FTEZ2Mgot KzsgUlVOOiBsbGMgLXZlcmlmeS1tYWNoaW5laW5zdHJzIC1tdHJpcGxlPXBvd2VycGM2NC11bmtu b3duLWxpbnV4LW11c2wgPCAlcyB8IEZpbGVDaGVjayAlcyAtY2hlY2stcHJlZml4PUNIRUNLLUVM RnYyCi0gOyBSVU46IGxsYyAtdmVyaWZ5LW1hY2hpbmVpbnN0cnMgLW10cmlwbGU9cG93ZXJwYzY0 LXVua25vd24tbGludXgtZ251IC10YXJnZXQtYWJpIGVsZnYxIDwgJXMgfCBGaWxlQ2hlY2sgJXMg LWNoZWNrLXByZWZpeD1DSEVDSy1FTEZ2MQotIDsgUlVOOiBsbGMgLXZlcmlmeS1tYWNoaW5laW5z dHJzIC1tdHJpcGxlPXBvd2VycGM2NC11bmtub3duLWxpbnV4LWdudSAtdGFyZ2V0LWFiaSBlbGZ2 MiA8ICVzIHwgRmlsZUNoZWNrICVzIC1jaGVjay1wcmVmaXg9Q0hFQ0stRUxGdjIKLSA7IFJVTjog bGxjIC12ZXJpZnktbWFjaGluZWluc3RycyAtbXRyaXBsZT1wb3dlcnBjNjRsZS11bmtub3duLWxp bnV4LWdudSA8ICVzIHwgRmlsZUNoZWNrICVzIC1jaGVjay1wcmVmaXg9Q0hFQ0stRUxGdjIKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDMtcHBjLXNlY3VyZXBsdC5w YXRjaCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDMtcHBjLXNlY3VyZXBsdC5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjVkMTU5NzQzNzVkLi4wMDAwMDAwMDAw MDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAwMy1wcGMtc2VjdXJlcGx0LnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotLS0tIGEvbGx2bS9saWIvVGFyZ2V0 L1Bvd2VyUEMvUFBDU3VidGFyZ2V0LmNwcAotKysrIGIvbGx2bS9saWIvVGFyZ2V0L1Bvd2VyUEMv UFBDU3VidGFyZ2V0LmNwcAotQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIFBQQ1N1YnRhcmdldDo6 aW5pdFN1YnRhcmdldEZlYXR1cmVzKFN0cmluZ1JlZiBDUFUsIFN0cmluZ1JlZiBGUykgewotIAot ICAgaWYgKChUYXJnZXRUcmlwbGUuaXNPU0ZyZWVCU0QoKSAmJiBUYXJnZXRUcmlwbGUuZ2V0T1NN YWpvclZlcnNpb24oKSA+PSAxMykgfHwKLSAgICAgICBUYXJnZXRUcmlwbGUuaXNPU05ldEJTRCgp IHx8IFRhcmdldFRyaXBsZS5pc09TT3BlbkJTRCgpIHx8Ci0tICAgICAgVGFyZ2V0VHJpcGxlLmlz TXVzbCgpKQotKyAgICAgIGlzVGFyZ2V0TGludXgoKSkKLSAgICAgU2VjdXJlUGx0ID0gdHJ1ZTsK LSAKLSAgIGlmIChIYXNTUEUgJiYgSXNQUEM2NCkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEy L3BhdGNoZXMvbGx2bS0wMDQtb3ZlcnJpZGUtb3B0LnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0 Y2hlcy9sbHZtLTAwNC1vdmVycmlkZS1vcHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDUxZDBlNGIzMWIzMi4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL3Bh dGNoZXMvbGx2bS0wMDQtb3ZlcnJpZGUtb3B0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTgg KzAsMCBAQAotVGhpcyBhbGxvd3MgdXMgdG8gb3ZlcnJpZGUgdGhlIG9wdGltaXphdGlvbiBsZXZl bCBhcyBub3QgYWxsIHBsYXRmb3JtcyBjYW4KLWRlYWwgd2l0aCAtTzMuCi0KLS0tLSBhL2xsdm0v Q01ha2VMaXN0cy50eHQKLSsrKyBiL2xsdm0vQ01ha2VMaXN0cy50eHQKLUBAIC05MTgsNiArOTE4 LDEyIEBAIGlmKCBNSU5HVyBBTkQgTk9UICIke0NNQUtFX0NYWF9DT01QSUxFUl9JRH0iIE1BVENI RVMgIkNsYW5nIiApCi0gICBsbHZtX3JlcGxhY2VfY29tcGlsZXJfb3B0aW9uKENNQUtFX0NYWF9G TEFHU19SRUxFQVNFICItTzMiICItTzIiKQotIGVuZGlmKCkKLSAKLStzZXQoVk9JRF9DWFhfT1BU X0ZMQUdTICIiIENBQ0hFIFNUUklORyAiT3B0aW1pemF0aW9uIGxldmVsIHRvIHVzZSIpCi0rCi0r aWYgKE5PVCBWT0lEX0NYWF9PUFRfRkxBR1MgU1RSRVFVQUwgIiIpCi0rICAgIGxsdm1fcmVwbGFj ZV9jb21waWxlcl9vcHRpb24oQ01BS0VfQ1hYX0ZMQUdTX1JFTEVBU0UgIi1PMyIgIiR7Vk9JRF9D WFhfT1BUX0ZMQUdTfSIpCi0rZW5kaWYoKQotKwotICMgUHV0IHRoaXMgYmVmb3JlIHRibGdlbi4g RWxzZSB3ZSBoYXZlIGEgY2lyY3VsYXIgZGVwZW5kZW5jZS4KLSBhZGRfc3ViZGlyZWN0b3J5KGxp Yi9EZW1hbmdsZSkKLSBhZGRfc3ViZGlyZWN0b3J5KGxpYi9TdXBwb3J0KQpkaWZmIC0tZ2l0IGEv c3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAwNS1wcGMtYmlncGljLnBhdGNoIGIvc3JjcGtn cy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAwNS1wcGMtYmlncGljLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCBkMzMyNjg3YjlkOTIuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dz L2xsdm0xMi9wYXRjaGVzL2xsdm0tMDA1LXBwYy1iaWdwaWMucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwzNiArMCwwIEBACi1Gcm9tIGYzZGJkZDQ5YzA2YmZhZmMxZDYxMzgwOTRjZjQyODg5YzE0 ZDM4YjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTYW11ZWwgSG9sbGFuZCA8c2Ft dWVsQHNob2xsYW5kLm9yZz4KLURhdGU6IFN1biwgMyBOb3YgMjAxOSAxMDo1NzoyNyAtMDYwMAot U3ViamVjdDogW1BBVENIXSBbTExWTV1bUG93ZXJQQ10gQXNzdW1lIEJpZ1BJQyBpZiBubyBQSUMg bGV2ZWwgaXMgc3BlY2lmaWVkCi0KLS0tLQotIGxsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ0Fz bVByaW50ZXIuY3BwICB8IDIgKy0KLSBsbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENNQ0luc3RM b3dlci5jcHAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDQXNtUHJpbnRl ci5jcHAgYi9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDQXNtUHJpbnRlci5jcHAKLWluZGV4IGNjZTIx ZjMyLi44N2NhNWY5YiAxMDA2NDQKLS0tLSBhL2xsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ0Fz bVByaW50ZXIuY3BwCi0rKysgYi9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENBc21QcmludGVy LmNwcAotQEAgLTUyMCw3ICs1MjAsNyBAQCB2b2lkIFBQQ0FzbVByaW50ZXI6OkVtaXRUbHNDYWxs KGNvbnN0IE1hY2hpbmVJbnN0ciAqTUksCi0gCi0gICAvLyBBZGQgMzI3Njggb2Zmc2V0IHRvIHRo ZSBzeW1ib2wgc28gd2UgZm9sbG93IHVwIHRoZSBsYXRlc3QgR09UL1BMVCBBQkkuCi0gICBpZiAo S2luZCA9PSBNQ1N5bWJvbFJlZkV4cHI6OlZLX1BMVCAmJiBTdWJ0YXJnZXQtPmlzU2VjdXJlUGx0 KCkgJiYKLS0gICAgICBNLT5nZXRQSUNMZXZlbCgpID09IFBJQ0xldmVsOjpCaWdQSUMpCi0rICAg ICAgTS0+Z2V0UElDTGV2ZWwoKSAhPSBQSUNMZXZlbDo6U21hbGxQSUMpCi0gICAgIFRsc1JlZiA9 IE1DQmluYXJ5RXhwcjo6Y3JlYXRlQWRkKAotICAgICAgICAgVGxzUmVmLCBNQ0NvbnN0YW50RXhw cjo6Y3JlYXRlKDMyNzY4LCBPdXRDb250ZXh0KSwgT3V0Q29udGV4dCk7Ci0gICBjb25zdCBNYWNo aW5lT3BlcmFuZCAmTU8gPSBNSS0+Z2V0T3BlcmFuZCgyKTsKLWRpZmYgLS1naXQgYS9saWIvVGFy Z2V0L1Bvd2VyUEMvUFBDTUNJbnN0TG93ZXIuY3BwIGIvbGliL1RhcmdldC9Qb3dlclBDL1BQQ01D SW5zdExvd2VyLmNwcAotaW5kZXggNWNjMTgwZDcuLmE1YjAyNTY1IDEwMDY0NAotLS0tIGEvbGx2 bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDTUNJbnN0TG93ZXIuY3BwCi0rKysgYi9sbHZtL2xpYi9U YXJnZXQvUG93ZXJQQy9QUENNQ0luc3RMb3dlci5jcHAKLUBAIC0xMTcsNyArMTE3LDcgQEAgc3Rh dGljIE1DT3BlcmFuZCBHZXRTeW1ib2xSZWYoY29uc3QgTWFjaGluZU9wZXJhbmQgJk1PLCBjb25z dCBNQ1N5bWJvbCAqU3ltYm9sLAotICAgY29uc3QgTUNFeHByICpFeHByID0gTUNTeW1ib2xSZWZF eHByOjpjcmVhdGUoU3ltYm9sLCBSZWZLaW5kLCBDdHgpOwotICAgLy8gSWYgLW1zZWN1cmUtcGx0 IC1mUElDLCBhZGQgMzI3NjggdG8gc3ltYm9sLgotICAgaWYgKFN1YnRhcmdldC0+aXNTZWN1cmVQ bHQoKSAmJiBUTS5pc1Bvc2l0aW9uSW5kZXBlbmRlbnQoKSAmJgotLSAgICAgIE0tPmdldFBJQ0xl dmVsKCkgPT0gUElDTGV2ZWw6OkJpZ1BJQyAmJgotKyAgICAgIE0tPmdldFBJQ0xldmVsKCkgIT0g UElDTGV2ZWw6OlNtYWxsUElDICYmCi0gICAgICAgTU8uZ2V0VGFyZ2V0RmxhZ3MoKSA9PSBQUENJ STo6TU9fUExUKQotICAgICBFeHByID0KLSAgICAgICAgIE1DQmluYXJ5RXhwcjo6Y3JlYXRlQWRk KEV4cHIsIE1DQ29uc3RhbnRFeHByOjpjcmVhdGUoMzI3NjgsIEN0eCksIEN0eCk7CmRpZmYgLS1n aXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDA2LWFhcmNoNjQtbWZfZXhlYy5wYXRj aCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDYtYWFyY2g2NC1tZl9leGVjLnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDBhYmQyMTY2NjUuLjAwMDAwMDAwMDAw MAotLS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDA2LWFhcmNoNjQtbWZfZXhlYy5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUZpeCBmYWlsdXJlcyBpbiBBbGxv Y2F0aW9uVGVzdHMvTWFwcGVkTWVtb3J5VGVzdC4qIG9uIGFhcmNoNjQ6Ci0KLSAgICBGYWlsaW5n IFRlc3RzICg4KToKLSAgICAgICAgTExWTS1Vbml0IDo6IFN1cHBvcnQvLi9TdXBwb3J0VGVzdHMv QWxsb2NhdGlvblRlc3RzL01hcHBlZE1lbW9yeVRlc3QuQWxsb2NBbmRSZWxlYXNlLzMKLSAgICAg ICAgTExWTS1Vbml0IDo6IFN1cHBvcnQvLi9TdXBwb3J0VGVzdHMvQWxsb2NhdGlvblRlc3RzL01h cHBlZE1lbW9yeVRlc3QuRHVwbGljYXRlTmVhci8zCi0gICAgICAgIExMVk0tVW5pdCA6OiBTdXBw b3J0Ly4vU3VwcG9ydFRlc3RzL0FsbG9jYXRpb25UZXN0cy9NYXBwZWRNZW1vcnlUZXN0LkVuYWJs ZWRXcml0ZS8zCi0gICAgICAgIExMVk0tVW5pdCA6OiBTdXBwb3J0Ly4vU3VwcG9ydFRlc3RzL0Fs bG9jYXRpb25UZXN0cy9NYXBwZWRNZW1vcnlUZXN0Lk11bHRpcGxlQWxsb2NBbmRSZWxlYXNlLzMK LSAgICAgICAgTExWTS1Vbml0IDo6IFN1cHBvcnQvLi9TdXBwb3J0VGVzdHMvQWxsb2NhdGlvblRl c3RzL01hcHBlZE1lbW9yeVRlc3QuU3VjY2Vzc2l2ZU5lYXIvMwotICAgICAgICBMTFZNLVVuaXQg OjogU3VwcG9ydC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFwcGVkTWVtb3J5VGVz dC5VbmFsaWduZWROZWFyLzMKLSAgICAgICAgTExWTS1Vbml0IDo6IFN1cHBvcnQvLi9TdXBwb3J0 VGVzdHMvQWxsb2NhdGlvblRlc3RzL01hcHBlZE1lbW9yeVRlc3QuWmVyb05lYXIvMwotICAgICAg ICBMTFZNLVVuaXQgOjogU3VwcG9ydC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFw cGVkTWVtb3J5VGVzdC5aZXJvU2l6ZU5lYXIvMwotCi1VcHN0cmVhbS1Jc3N1ZTogaHR0cHM6Ly9i dWdzLmxsdm0ub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI3OCNjMTAKLQotLS0tIGEvbGx2bS9saWIv U3VwcG9ydC9Vbml4L01lbW9yeS5pbmMKLSsrKyBiL2xsdm0vbGliL1N1cHBvcnQvVW5peC9NZW1v cnkuaW5jCi1AQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgaW50IGdldFBvc2l4UHJvdGVjdGlvbkZs YWdzKHVuc2lnbmVkIEZsYWdzKSB7Ci0gICAgIHJldHVybiBQUk9UX1JFQUQgfCBQUk9UX1dSSVRF IHwgUFJPVF9FWEVDOwotICAgY2FzZSBsbHZtOjpzeXM6Ok1lbW9yeTo6TUZfRVhFQzoKLSAjaWYg KGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19QT1dFUlBDX18pIHx8IGRlZmluZWQg KF9fcHBjX18pIHx8IFwKLS0gICAgIGRlZmluZWQoX1BPV0VSKSB8fCBkZWZpbmVkKF9BUkNIX1BQ QykpCi0rICAgICBkZWZpbmVkKF9QT1dFUikgfHwgZGVmaW5lZChfQVJDSF9QUEMpIHx8IChkZWZp bmVkKF9fbGludXhfXykgJiYgZGVmaW5lZChfX2FhcmNoNjRfXykpKQotICAgICAvLyBPbiBQb3dl clBDLCBoYXZpbmcgYW4gZXhlY3V0YWJsZSBwYWdlIHRoYXQgaGFzIG5vIHJlYWQgcGVybWlzc2lv bgotICAgICAvLyBjYW4gaGF2ZSB1bmludGVuZGVkIGNvbnNlcXVlbmNlcy4gIFRoZSBmdW5jdGlv biBJbnZhbGlkYXRlSW5zdHJ1Y3Rpb24tCi0gICAgIC8vIENhY2hlIHVzZXMgaW5zdHJ1Y3Rpb25z IGRjYmYgYW5kIGljYmksIGJvdGggb2Ygd2hpY2ggYXJlIHRyZWF0ZWQgYnkKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvbGx2bTEyL3RlbXBsYXRlIGIvc3JjcGtncy9sbHZtMTIvdGVtcGxhdGUKaW5kZXgg N2IzNjFiYmJmNWJjLi5lN2U0MGNhZTQxM2UgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbGx2bTEyL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvbGx2bTEyL3RlbXBsYXRlCkBAIC0xLDEyNSArMSwxMyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAnbGx2bTEyJwogcGtnbmFtZT1sbHZtMTIKIHZlcnNpb249MTIu MC4xCi1yZXZpc2lvbj0zCi13cmtzcmM9Imxsdm0tcHJvamVjdC0ke3ZlcnNpb259LnNyYyIKLWJ1 aWxkX3dya3NyYz1sbHZtCi1idWlsZF9zdHlsZT1jbWFrZQotY29uZmlndXJlX2FyZ3M9IgotIC1E Q01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIC1Xbm8tZGV2Ci0gLURFTkFCTEVfTElOS0VSX0JVSUxE X0lEPVlFUwotIC1ETExWTV9JTkNMVURFX0RPQ1M9WUVTCi0gLURMTFZNX0JVSUxEX0RPQ1M9WUVT Ci0gLURMTFZNX0VOQUJMRV9TUEhJTlg9WUVTCi0gLURTUEhJTlhfV0FSTklOR1NfQVNfRVJST1JT PU5PCi0gLURMTFZNX0JVSUxEX0xMVk1fRFlMSUI9WUVTCi0gLURMTFZNX0xJTktfTExWTV9EWUxJ Qj1ZRVMKLSAtRExMVk1fRU5BQkxFX1JUVEk9WUVTCi0gLURMTFZNX0VOQUJMRV9GRkk9WUVTCi0g LURMTFZNX0JJTlVUSUxTX0lOQ0RJUj0vdXNyL2luY2x1ZGUiCi1ob3N0bWFrZWRlcGVuZHM9InBl cmwgcHl0aG9uMyB6bGliLWRldmVsIGxpYmZmaS1kZXZlbCBzd2lnIHB5dGhvbjMtU3BoaW54Ci0g cHl0aG9uMy1yZWNvbW1vbm1hcmsgcHl0aG9uMy1zcGhpbngtYXV0b21vZGFwaSIKLW1ha2VkZXBl bmRzPSJweXRob24zLWRldmVsIHpsaWItZGV2ZWwgZWxmdXRpbHMtZGV2ZWwgbGliZmZpLWRldmVs IGxpYmVkaXQtZGV2ZWwKLSBsaWJ4bWwyLWRldmVsIGJpbnV0aWxzLWRldmVsIGxpYmF0b21pYy1k ZXZlbCIKLWRlcGVuZHM9ImxpYmxsdm0xMj49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKLXNob3J0 X2Rlc2M9IkxvdyBMZXZlbCBWaXJ0dWFsIE1hY2hpbmUiCityZXZpc2lvbj00CitidWlsZF9zdHls ZT1tZXRhCitzaG9ydF9kZXNjPSJMb3cgTGV2ZWwgVmlydHVhbCBNYWNoaW5lIChyZW1vdmVkIHBh Y2thZ2UpIgogbWFpbnRhaW5lcj0icTY2IDxkYW5pZWxAb2N0YWZvcmdlLm9yZz4iCi1saWNlbnNl PSJBcGFjaGUtMi4wIgorbGljZW5zZT0ibWV0YXBhY2thZ2UiCiBob21lcGFnZT0iaHR0cHM6Ly93 d3cubGx2bS5vcmciCi1kaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJv amVjdC9yZWxlYXNlcy9kb3dubG9hZC9sbHZtb3JnLSR7dmVyc2lvbn0vbGx2bS1wcm9qZWN0LSR7 dmVyc2lvbn0uc3JjLnRhci54eiIKLWNoZWNrc3VtPTEyOWNiMjVjZDEzNjc3YWFkOTUxY2U1YzJk ZWIwZmU0YWZjMWU5ZDk4OTUwZjUzYjUxYmRjZmI1YTczYWZhMGUKLWxpYjMyZGlzYWJsZWQ9eWVz Ci1weXRob25fdmVyc2lvbj0zCi0KLWlmIFsgIiRYQlBTX1RBUkdFVF9MSUJDIiA9ICJtdXNsIiBd OyB0aGVuCi0JY29uZmlndXJlX2FyZ3MrPSIgLURMSUJDWFhfSEFTX01VU0xfTElCQz1ZRVMiCi0J bWFrZWRlcGVuZHMrPSIgbGliZXhlY2luZm8tZGV2ZWwiCi0JZGVwZW5kcys9IiBsaWJleGVjaW5m by1kZXZlbCIKLWZpCi0KLSMgIm9wZXJhbmQgb3V0IG9mIHJhbmdlIiBhc3NlbWJsZXIgZmFpbHVy ZXMKLWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgotCXBwYzY0KikgOzsKLQlwcGMqKSBj b25maWd1cmVfYXJncys9IiAtRENMQU5HX0VOQUJMRV9DTEFOR0Q9T0ZGIiA7OwotZXNhYwotCi1w b3N0X3BhdGNoKCkgewotCSMgdXBkYXRlIGNvbmZpZy5ndWVzcyBmb3IgYmV0dGVyIHBsYXRmb3Jt IGRldGVjdGlvbgotCWNwICRYQlBTX0NPTU1PTkRJUi9lbnZpcm9ubWVudC9jb25maWd1cmUvYXV0 b21ha2UvY29uZmlnLmd1ZXNzIFwKLQkJJHt3cmtzcmN9L2xsdm0vY21ha2UKLX0KLQotcHJlX2Nv bmZpZ3VyZSgpIHsKLQlsb2NhbCB0cmlwbGV0Ci0KLQkjIFZhc3RseSByZWR1Y2Ugc2l6ZSBvZiBk ZWJ1Z2dpbmcgc3ltYm9sczoKLQlDRkxBR1M9JHtDRkxBR1MvIC1nLyAtZzF9Ci0JQ1hYRkxBR1M9 JHtDWFhGTEFHUy8gLWcvIC1nMX0KLQotCSMgc2luY2UgZ2NjOSwgdGhlIGJ1aWxkIGxpa2VzIHRv IGJsb3cgdXAgZm9yIHBwYzMyIGFwcGFyZW50bHkgYmVjYXVzZQotCSMgb2YgY2xhbmcgYmVpbmcg dG9vIGxhcmdlIGZvciBhIDI0LWJpdCByZWxhdGl2ZSBjYWxsIHRvIHRoZSBQTFQsIHNvCi0JIyBv cHRpbWl6ZSBmb3Igc2l6ZSBpbnN0ZWFkCi0JY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGlu Ci0JCXBwYzY0KikgOzsKLQkJbWlwcyotbXVzbHxwcGMqKSBjb25maWd1cmVfYXJncys9IiAtRFZP SURfQ1hYX09QVF9GTEFHUz0tT3MiIDs7Ci0JZXNhYwotCi0JaWYgWyAiJENST1NTX0JVSUxEIiBd OyB0aGVuCi0JCW1zZ19ub3JtYWwgIkJ1aWxkaW5nIGhvc3QgdGJsZ2VuXG4iCi0JCW1rZGlyIC1w IGJ1aWxkL0hPU1QKLQkJY2QgYnVpbGQvSE9TVAotCQlDQz0iJEJVSUxEX0NDIiBDWFg9IiRCVUlM RF9DWFgiIENGTEFHUz0iJEJVSUxEX0NGTEFHUyIgXAotCQkJQ1hYRkxBR1M9IiRCVUlMRF9DWFhG TEFHUyIgTERGTEFHUz0iJEJVSUxEX0xERkxBR1MiIFwKLQkJCWNtYWtlIC4uLy4uIC1EQ01BS0Vf QlVJTERfVFlQRT1SZWxlYXNlIFwKLQkJCS1ETExWTV9FTkFCTEVfUFJPSkVDVFM9JHtfZW5hYmxl ZF9wcm9qZWN0c30KLQkJbWFrZSAke21ha2Vqb2JzfSAtQyB1dGlscy9UYWJsZUdlbgotCQlbICIk X2xsZGJfZW5hYmxlIiA9ICJ5ZXMiIF0gJiYgbWFrZSAke21ha2Vqb2JzfSAtQyB0b29scy9sbGRi L3V0aWxzL1RhYmxlR2VuCi0JCWNvbmZpZ3VyZV9hcmdzKz0iIC1ETExWTV9UQUJMRUdFTj0ke3dy a3NyY30vbGx2bS9idWlsZC9IT1NUL2Jpbi9sbHZtLXRibGdlbiIKLQkJWyAiJF9sbGRiX2VuYWJs ZSIgPSAieWVzIiBdICYmIGNvbmZpZ3VyZV9hcmdzKz0iIC1ETExEQl9UQUJMRUdFTj0ke3dya3Ny Y30vbGx2bS9idWlsZC9IT1NUL2Jpbi9sbGRiLXRibGdlbiIKLQkJY2QgLi4vLi4KLQlmaQotCi0J Y2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCi0JCWk2ODYqKSBfYXJjaD0iWDg2Ijs7Ci0J CXg4Nl82NCopIF9hcmNoPSJYODYiOzsKLQkJYXJtdjUqKSBfYXJjaD0iQXJtdjV0ZSI7OwotCQlh cm12NiopIF9hcmNoPSJBcm12NiI7OwotCQlhcm12NyopIF9hcmNoPSJBcm12NyI7OwotCQlhYXJj aDY0KikgX2FyY2g9IkFBcmNoNjQiOzsKLQkJbWlwcyopIF9hcmNoPSJNaXBzIjs7Ci0JCXBwYyop IF9hcmNoPSJQb3dlclBDIjs7Ci0JCXJpc2N2NjQqKSBfYXJjaD0iUklTQ1Y2NCI7OwotCWVzYWMK LQotCXRyaXBsZXQ9JHtYQlBTX0NST1NTX1RSSVBMRVQ6LSRYQlBTX1RSSVBMRVR9Ci0KLQljb25m aWd1cmVfYXJncys9IiAtRExMVk1fVEFSR0VUX0FSQ0g9JHtfYXJjaH0iCi0JY29uZmlndXJlX2Fy Z3MrPSIgLURMTFZNX0hPU1RfVFJJUExFPSR7dHJpcGxldH0iCi0JY29uZmlndXJlX2FyZ3MrPSIg LURMTFZNX0RFRkFVTFRfVEFSR0VUX1RSSVBMRT0ke3RyaXBsZXR9IgotfQotCi1kb19pbnN0YWxs KCkgewotCWNkIGJ1aWxkCi0JY21ha2UgLURDTUFLRV9JTlNUQUxMX1BSRUZJWD0ke0RFU1RESVJ9 L3VzciAtUCBjbWFrZV9pbnN0YWxsLmNtYWtlCi0KLQkjIFJlcXVpcmVkIGZvciBtdWx0aWxpYi4K LQlpZiBbICIkWEJQU19UQVJHRVRfTUFDSElORSIgPSAieDg2XzY0IiBdOyB0aGVuCi0JCWZvciBf aGVhZGVyIGluIGxsdm0tY29uZmlnOyBkbwotCQkJbXYgJHtERVNURElSfS91c3IvaW5jbHVkZS9s bHZtL0NvbmZpZy8ke19oZWFkZXJ9eywtNjR9LmgKLQkJCXZpbnN0YWxsICR7RklMRVNESVJ9L2xs dm0tQ29uZmlnLSR7X2hlYWRlcn0uaCA2NDQgXAotCQkJCXVzci9pbmNsdWRlL2xsdm0vQ29uZmln ICR7X2hlYWRlcn0uaAotCQlkb25lCi0JZmkKLQotCSMgUmVtb3ZlIGxsdm0tY29uZmlnLWhvc3Qg aW4gY3Jvc3MgYnVpbGRzLgotCWlmIFsgIiRDUk9TU19CVUlMRCIgXTsgdGhlbgotCQlybSAtZiAk e0RFU1RESVJ9L3Vzci9iaW4vbGx2bS1jb25maWctaG9zdAotCWZpCi19CiAKIGxpYmxsdm0xMl9w YWNrYWdlKCkgewogCXNob3J0X2Rlc2MrPSIgLSBydW50aW1lIGxpYnJhcnkiCi0JcGtnX2luc3Rh bGwoKSB7Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYkxMVk0tKi5zbyoiCi0JfQogfQpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9sbHZtMTIvdXBkYXRlIGIvc3JjcGtncy9sbHZtMTIvdXBkYXRlCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTVjZjI2YjM1ODYuLjAwMDAwMDAwMDAwMAotLS0gYS9z cmNwa2dzL2xsdm0xMi91cGRhdGUKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLXNpdGU9 Imh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdC9yZWxlYXNlcyIKLXBhdHRlcm49 Imxsdm1vcmctXEsoXGQrLil7Mn1cZCsoLXJjXGQrKT8iCi1pZ25vcmU9IiotcmMqIgoKRnJvbSBi OWRkYzEyYjJiOTFmNGMxOGRlZDI5MzJlZjJjYzg3NzExZDEyZjAzIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMENlcnF1ZWlyYT89IDxhY2VycXVl aXJhMDIxQGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAyOCBGZWIgMjAyMiAyMTo0Mjo1NSArMDAwMApT dWJqZWN0OiBbUEFUQ0ggMTUvMjldIG1lc2E6IHJlYnVpbGQgZm9yIGxsdm0xMwoKLS0tCiBzcmNw a2dzL21lc2EvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21lc2EvdGVtcGxhdGUgYi9zcmNw a2dzL21lc2EvdGVtcGxhdGUKaW5kZXggZWI4MWNiYjM0NWE1Li5kMDQ5OWJhOWZiY2EgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvbWVzYS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21lc2EvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtZXNhJwogcGtnbmFtZT1tZXNh CiB2ZXJzaW9uPTIxLjMuNQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9bWVz b24KIGNvbmZpZ3VyZV9hcmdzPSItRGdsdm5kPXRydWUgLURzaGFyZWQtZ2xhcGk9ZW5hYmxlZCAt RGdibT1lbmFibGVkIC1EZWdsPWVuYWJsZWQKICAtRG9zbWVzYT10cnVlIC1EZ2xlczE9ZW5hYmxl ZCAtRGdsZXMyPWVuYWJsZWQgLURnbHg9ZHJpIC1EZHJpMz1lbmFibGVkCgpGcm9tIDIwNTQ0MzQ3 YjhjMTY2OTRiMGU1N2ZhNTZhMTk4YzI0NWY1NmNiMDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwQ2VycXVlaXJhPz0gPGFjZXJxdWVpcmEwMjFA Z21haWwuY29tPgpEYXRlOiBNb24sIDI4IEZlYiAyMDIyIDIxOjQzOjU2ICswMDAwClN1YmplY3Q6 IFtQQVRDSCAxNi8yOV0gcXRjcmVhdG9yOiB1cGRhdGUgdG8gNi4wLjIuCgotLS0KIC4uLi9xdGNy ZWF0b3IvcGF0Y2hlcy82LjAuMi0tYmFja3RyYWNlLnBhdGNoICB8IDQ0ICsrKysrKysrKysrKysr KysrKysKIC4uLi9xdGNyZWF0b3IvcGF0Y2hlcy9RVENSRUFUT1JCVUctMjY5MTAuZGlmZiB8IDM5 ICsrKysrKysrKysrKysrKysKIHNyY3BrZ3MvcXRjcmVhdG9yL3RlbXBsYXRlICAgICAgICAgICAg ICAgICAgICB8ICA4ICsrLS0KIDMgZmlsZXMgY2hhbmdlZCwgODcgaW5zZXJ0aW9ucygrKSwgNCBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0Y3JlYXRvci9wYXRjaGVz LzYuMC4yLS1iYWNrdHJhY2UucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0Y3Jl YXRvci9wYXRjaGVzL1FUQ1JFQVRPUkJVRy0yNjkxMC5kaWZmCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9xdGNyZWF0b3IvcGF0Y2hlcy82LjAuMi0tYmFja3RyYWNlLnBhdGNoIGIvc3JjcGtncy9xdGNy ZWF0b3IvcGF0Y2hlcy82LjAuMi0tYmFja3RyYWNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uYzU3ZTFlY2M1OGIyCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj cGtncy9xdGNyZWF0b3IvcGF0Y2hlcy82LjAuMi0tYmFja3RyYWNlLnBhdGNoCkBAIC0wLDAgKzEs NDQgQEAKK0Zyb20gNzIyZDg0ZmVlNTMyMWVlNjkwOWYxMmMxZDEwYjA5N2MyNGJhMWFkYyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9QaW90cj0yMFc9QzM9QjNqY2lr Pz0gPGNob2NpbWllckB0bGVuLnBsPgorRGF0ZTogU2F0LCAyMiBKYW4gMjAyMiAxNzoyOTo1OSAr MDEwMAorU3ViamVjdDogW1BBVENIXSBiYWNrdHJhY2UKKworCitkaWZmIC0tZ2l0IGEvc3JjL2xp YnMvdXRpbHMvcXRjYXNzZXJ0LmNwcCBiL3NyYy9saWJzL3V0aWxzL3F0Y2Fzc2VydC5jcHAKK2lu ZGV4IDU2MGRmNDNhLi44N2NhNmZkNSAxMDA2NDQKKy0tLSBhL3NyYy9saWJzL3V0aWxzL3F0Y2Fz c2VydC5jcHAKKysrKyBiL3NyYy9saWJzL3V0aWxzL3F0Y2Fzc2VydC5jcHAKK0BAIC00MCw3ICs0 MCw3IEBAIHZvaWQgZHVtcEJhY2t0cmFjZShpbnQgbWF4ZGVwdGgpCisgeworICAgICBpZiAobWF4 ZGVwdGggPT0gLTEpCisgICAgICAgICBtYXhkZXB0aCA9IDEwMDA7CistI2lmIGRlZmluZWQoUV9P U19VTklYKQorKyNpZiBkZWZpbmVkKFFfT1NfVU5JWCkgJiYgZGVmaW5lZChfX0dMSUJDX18pCisg ICAgIHZvaWQgKmJ0WzEwMDBdID0ge251bGxwdHJ9OworICAgICBpbnQgc2l6ZSA9IGJhY2t0cmFj ZShidCwgc2l6ZW9mKGJ0KSAvIHNpemVvZihidFswXSkpOworICAgICBjaGFyICoqbGluZXMgPSBi YWNrdHJhY2Vfc3ltYm9scyhidCwgc2l6ZSk7CitkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMvcW1s ZGVzaWduZXIvZGVzaWduZXJjb3JlL2V4Y2VwdGlvbnMvZXhjZXB0aW9uLmNwcCBiL3NyYy9wbHVn aW5zL3FtbGRlc2lnbmVyL2Rlc2lnbmVyY29yZS9leGNlcHRpb25zL2V4Y2VwdGlvbi5jcHAKK2lu ZGV4IGEzYTk4MDZmLi5iYjZjYzMwZCAxMDA2NDQKKy0tLSBhL3NyYy9wbHVnaW5zL3FtbGRlc2ln bmVyL2Rlc2lnbmVyY29yZS9leGNlcHRpb25zL2V4Y2VwdGlvbi5jcHAKKysrKyBiL3NyYy9wbHVn aW5zL3FtbGRlc2lnbmVyL2Rlc2lnbmVyY29yZS9leGNlcHRpb25zL2V4Y2VwdGlvbi5jcHAKK0BA IC05OSw3ICs5OSw3IEBAIGJvb2wgRXhjZXB0aW9uOjp3YXJuQWJvdXRFeGNlcHRpb24oKQorICNl bmRpZgorIH0KKyAKKy0jaWZkZWYgUV9PU19MSU5VWAorKyNpZiBkZWZpbmVkKFFfT1NfVU5JWCkg JiYgZGVmaW5lZChfX0dMSUJDX18pCisgc3RhdGljIFFTdHJpbmcgZ2V0QmFja1RyYWNlKCkKKyB7 CisgICAgIFFTdHJpbmcgYmFja1RyYWNlOworQEAgLTEzNyw3ICsxMzcsNyBAQCBFeGNlcHRpb246 OkV4Y2VwdGlvbihpbnQgbGluZSwgY29uc3QgUUJ5dGVBcnJheSAmZnVuY3Rpb24sCisgICAsIG1f ZnVuY3Rpb24oUVN0cmluZzo6ZnJvbVV0ZjgoZnVuY3Rpb24pKQorICAgLCBtX2ZpbGUoUVN0cmlu Zzo6ZnJvbVV0ZjgoZmlsZSkpCisgICAsIG1fZGVzY3JpcHRpb24oZGVzY3JpcHRpb24pCistICAj aWZkZWYgUV9PU19MSU5VWAorKyAgI2lmIGRlZmluZWQoUV9PU19VTklYKSAmJiBkZWZpbmVkKF9f R0xJQkNfXykKKyAgICwgbV9iYWNrVHJhY2UoZ2V0QmFja1RyYWNlKCkpCisgICAjZW5kaWYKKyB7 CistLSAKKzIuMzQuMQorCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0Y3JlYXRvci9wYXRjaGVzL1FU Q1JFQVRPUkJVRy0yNjkxMC5kaWZmIGIvc3JjcGtncy9xdGNyZWF0b3IvcGF0Y2hlcy9RVENSRUFU T1JCVUctMjY5MTAuZGlmZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LjhjMDdjNzJjY2YxMAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXRjcmVhdG9yL3BhdGNo ZXMvUVRDUkVBVE9SQlVHLTI2OTEwLmRpZmYKQEAgLTAsMCArMSwzOSBAQAorRnJvbSBiM2U5ZjI0 ZWQxYzBkM2MwZWU0OTE3ZDRiNDQ5ZGE5MGUwMGU4ODhhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQorRnJvbTogTWFyY28gQnVia2UgPG1hcmNvLmJ1YmtlQHF0LmlvPgorRGF0ZTogTW9uLCAyNCBK YW4gMjAyMiAxNDozODoyOSArMDEwMAorU3ViamVjdDogW1BBVENIXSBRbWxEZXNpZ25lcjogRml4 IDMyIGJpdAorCitCZWNhdXNlIHN0ZDo6cHRyZGlmZl90IGFuZCBpbnQgYXJlIHRoZSBzYW1lIHVu ZGVyIDMyIGJpdCB0aGUgY29uc3RydWN0b3IKK2lzIGNoYW5nZWQgdG8gYSB0ZW1wbGF0ZS4gVGhl IGNsYXNzIGlzIHByaXZhdGUgc28gaXQgaXMgdmVyeSB1bmxpa2VseQordGhhdCBpdCBsZWFkcyB0 byBlcnJvcnMuCisKK1Rhc2stbnVtYmVyOiBRVENSRUFUT1JCVUctMjY5MTAKK0NoYW5nZS1JZDog STk0Yzk4N2I5YjZkMmYwNDg3Njc0MGZmMjgzYTMzOWMwZGIwNTZjZmQKK1Jldmlld2VkLWJ5OiA8 Z2l0aHViLWFjdGlvbnMtcXQtY3JlYXRvckBjcmlzdGlhbmFkYW0uZXU+CitSZXZpZXdlZC1ieTog Q2hyaXN0b3BoZSBHaWJvdWRlYXV4IDxjaHJpc3RvcGhlQGtyb3AuZnI+CitSZXZpZXdlZC1ieTog RWlrZSBaaWxsZXIgPGVpa2UuemlsbGVyQHF0LmlvPgorUmV2aWV3ZWQtYnk6IFF0IENJIEJvdCA8 cXRfY2lfYm90QHF0LXByb2plY3Qub3JnPgorLS0tCisKK2RpZmYgLS1naXQgYS9zcmMvcGx1Z2lu cy9xbWxkZXNpZ25lci9kZXNpZ25lcmNvcmUvcHJvamVjdHN0b3JhZ2Uvc3RvcmFnZWNhY2hlLmgg Yi9zcmMvcGx1Z2lucy9xbWxkZXNpZ25lci9kZXNpZ25lcmNvcmUvcHJvamVjdHN0b3JhZ2Uvc3Rv cmFnZWNhY2hlLmgKK2luZGV4IDc0N2MzZDkuLjI3ZDI5MDUgMTAwNjQ0CistLS0gYS9zcmMvcGx1 Z2lucy9xbWxkZXNpZ25lci9kZXNpZ25lcmNvcmUvcHJvamVjdHN0b3JhZ2Uvc3RvcmFnZWNhY2hl LmgKKysrKyBiL3NyYy9wbHVnaW5zL3FtbGRlc2lnbmVyL2Rlc2lnbmVyY29yZS9wcm9qZWN0c3Rv cmFnZS9zdG9yYWdlY2FjaGUuaAorQEAgLTY3LDE1ICs2Nyw4IEBACisgCisgICAgICAgICBTdG9y YWdlQ2FjaGVJbmRleChjb25zdCBjaGFyICopID0gZGVsZXRlOworIAorLSAgICAgICAgY29uc3Rl eHByIGV4cGxpY2l0IFN0b3JhZ2VDYWNoZUluZGV4KGludCBpZCkgbm9leGNlcHQKKy0gICAgICAg ICAgICA6IGlke2lkfQorLSAgICAgICAge30KKy0KKy0gICAgICAgIGNvbnN0ZXhwciBleHBsaWNp dCBTdG9yYWdlQ2FjaGVJbmRleChzdGQ6OnNpemVfdCBpZCkgbm9leGNlcHQKKy0gICAgICAgICAg ICA6IGlke3N0YXRpY19jYXN0PGludD4oaWQpfQorLSAgICAgICAge30KKy0KKy0gICAgICAgIGNv bnN0ZXhwciBleHBsaWNpdCBTdG9yYWdlQ2FjaGVJbmRleChzdGQ6OnB0cmRpZmZfdCBpZCkgbm9l eGNlcHQKKysgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludGVnZXJUeXBlPgorKyAgICAgICAg Y29uc3RleHByIGV4cGxpY2l0IFN0b3JhZ2VDYWNoZUluZGV4KEludGVnZXJUeXBlIGlkKSBub2V4 Y2VwdAorICAgICAgICAgICAgIDogaWR7c3RhdGljX2Nhc3Q8aW50PihpZCl9CisgICAgICAgICB7 fQorIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdGNyZWF0b3IvdGVtcGxhdGUgYi9zcmNwa2dzL3F0 Y3JlYXRvci90ZW1wbGF0ZQppbmRleCAyOGU4NzFiNDA2ZTUuLmFjMTE1MmJjY2EwYyAxMDA2NDQK LS0tIGEvc3JjcGtncy9xdGNyZWF0b3IvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdGNyZWF0b3Iv dGVtcGxhdGUKQEAgLTEsMTMgKzEsMTMgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0Y3JlYXRv cicKIHBrZ25hbWU9cXRjcmVhdG9yCi12ZXJzaW9uPTUuMC4zCit2ZXJzaW9uPTYuMC4yCiByZXZp c2lvbj0xCiB3cmtzcmM9InF0LWNyZWF0b3Itb3BlbnNvdXJjZS1zcmMtJHt2ZXJzaW9ufSIKIGJ1 aWxkX3N0eWxlPXFtYWtlCiBtYWtlX2luc3RhbGxfYXJncz0iSU5TVEFMTF9ST09UPVwke0RFU1RE SVJ9L3VzciIKLWhvc3RtYWtlZGVwZW5kcz0iY2xhbmcgbGx2bSBwZXJsIHBrZy1jb25maWcgcHl0 aG9uMyB3aGljaCBxdDUtcW1ha2UKK2hvc3RtYWtlZGVwZW5kcz0ibGx2bTEzIHBlcmwgcGtnLWNv bmZpZyBweXRob24zIHdoaWNoIHF0NS1xbWFrZQogIHF0NS1ob3N0LXRvb2xzIgotbWFrZWRlcGVu ZHM9InF0NS1kZWNsYXJhdGl2ZS1kZXZlbCBxdDUtc2NyaXB0LWRldmVsIHF0NS10b29scy1kZXZl bAorbWFrZWRlcGVuZHM9InF0NS1kZWNsYXJhdGl2ZS1kZXZlbCBxdDUtc2NyaXB0LWRldmVsIHF0 NS10b29scy1kZXZlbCBxdDUtc3ZnLWRldmVsCiAgcXQ1LXF1aWNrY29udHJvbHMgY2xhbmcgbGx2 bSIKIGRlcGVuZHM9InF0NS1kZWNsYXJhdGl2ZS1kZXZlbCBxdDUtcXVpY2tjb250cm9scyBxdDUt cGx1Z2luLXNxbGl0ZSIKIHNob3J0X2Rlc2M9IkNyb3NzLXBsYXRmb3JtIElERSBmb3IgUXQgZGV2 ZWxvcGVycyIKQEAgLTE2LDcgKzE2LDcgQEAgbGljZW5zZT0iTEdQTC0zLjAtb3ItbGF0ZXIsIGN1 c3RvbTpRdENvbXBhbnktR1BMLUV4Y2VwdGlvbi0xLjAiCiBob21lcGFnZT0iaHR0cHM6Ly93aWtp LnF0LmlvL0NhdGVnb3J5OlRvb2xzOjpRdENyZWF0b3IiCiBjaGFuZ2Vsb2c9Imh0dHBzOi8vY29k ZS5xdC5pby9jZ2l0L3F0LWNyZWF0b3IvcXQtY3JlYXRvci5naXQvcGxhaW4vZGlzdC9jaGFuZ2Vz LSR7dmVyc2lvbn0ubWQiCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZG93bmxvYWQucXQuaW8vb2ZmaWNp YWxfcmVsZWFzZXMvcXRjcmVhdG9yLyR7dmVyc2lvbiUuKn0vJHt2ZXJzaW9ufS8ke3dya3NyY30u dGFyLnh6IgotY2hlY2tzdW09N2ZkM2IxNDMxMGJjZWNlZTZiMTM0ZjhjYjdmNGMwZWQyMzg1ZDdm NGNlY2Q0OGQ3NTZjNWMxZmQ2NTBjZTJlYgorY2hlY2tzdW09M2QxNzNjMWEwMmNlNTUxMzdhMjNm Mjk0ZTFhODQwZDc2NDg2NTZlOTc4MjYwNjdlYjI5ZDlkZjY1MzM1MWJmYQogcmVwbGFjZXM9InF0 Y3JlYXRvci1kYXRhPj0wIgogcHl0aG9uX3ZlcnNpb249MwogCgpGcm9tIDFjOWJjOTZhMTc5OTU5 NTRkYTA0YjllYTExZWI4YTQ1MWRmZmZiNDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwQ2VycXVlaXJhPz0gPGFjZXJxdWVpcmEwMjFAZ21haWwu Y29tPgpEYXRlOiBNb24sIDI4IEZlYiAyMDIyIDIxOjQ2OjQ4ICswMDAwClN1YmplY3Q6IFtQQVRD SCAxNy8yOV0gaXNwYzogdXBkYXRlIHRvIDEuMTcuMC4KCi0tLQogLi4uL2lzcGMvcGF0Y2hlcy9j bWFrZS1idWlsZC10eXBlLW5vbmUucGF0Y2ggIHwgICAxOCAtCiBzcmNwa2dzL2lzcGMvcGF0Y2hl cy9sbHZtMTItMDAxLnBhdGNoICAgICAgICAgfCAgIDU3IC0KIHNyY3BrZ3MvaXNwYy9wYXRjaGVz L2xsdm0xMi0wMDIucGF0Y2ggICAgICAgICB8ICA5MjMgLS0tLS0tLS0KIHNyY3BrZ3MvaXNwYy9w YXRjaGVzL2xsdm0xMi0wMDMucGF0Y2ggICAgICAgICB8IDE1MDQgLS0tLS0tLS0tLS0tCiBzcmNw a2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA0LnBhdGNoICAgICAgICAgfCAgIDM0IC0KIHNyY3Br Z3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDUucGF0Y2ggICAgICAgICB8ICAzNzIgLS0tCiBzcmNw a2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA2LnBhdGNoICAgICAgICAgfCAgMTI2IC0KIHNyY3Br Z3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDcucGF0Y2ggICAgICAgICB8ICAxNjAgLS0KIHNyY3Br Z3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDgucGF0Y2ggICAgICAgICB8ICAxNDkgLS0KIHNyY3Br Z3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDkucGF0Y2ggICAgICAgICB8IDIxMDkgLS0tLS0tLS0t LS0tLS0tLS0KIHNyY3BrZ3MvaXNwYy90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgIDggKy0KIDExIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNTQ1NiBkZWxldGlv bnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2lzcGMvcGF0Y2hlcy9jbWFrZS1idWls ZC10eXBlLW5vbmUucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2lzcGMvcGF0Y2hl cy9sbHZtMTItMDAxLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9pc3BjL3BhdGNo ZXMvbGx2bTEyLTAwMi5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvaXNwYy9wYXRj aGVzL2xsdm0xMi0wMDMucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2lzcGMvcGF0 Y2hlcy9sbHZtMTItMDA0LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9pc3BjL3Bh dGNoZXMvbGx2bTEyLTAwNS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvaXNwYy9w YXRjaGVzL2xsdm0xMi0wMDYucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2lzcGMv cGF0Y2hlcy9sbHZtMTItMDA3LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9pc3Bj L3BhdGNoZXMvbGx2bTEyLTAwOC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvaXNw Yy9wYXRjaGVzL2xsdm0xMi0wMDkucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2lzcGMvcGF0 Y2hlcy9jbWFrZS1idWlsZC10eXBlLW5vbmUucGF0Y2ggYi9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9j bWFrZS1idWlsZC10eXBlLW5vbmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDQxMWUzNTNjNzMxNC4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2Nt YWtlLWJ1aWxkLXR5cGUtbm9uZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAK LUluZGV4OiBpc3BjLTEuMTUuMC9DTWFrZUxpc3RzLnR4dAotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGlzcGMt MS4xNS4wLm9yaWcvQ01ha2VMaXN0cy50eHQKLSsrKyBpc3BjLTEuMTUuMC9DTWFrZUxpc3RzLnR4 dAotQEAgLTE1NywxMyArMTU3LDYgQEAgc2V0KE9VVFBVVF9SRUxFQVNFIFJlbGVhc2UvYmluKQot IHNldChDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgJHtDTUFLRV9DVVJSRU5UX0JJTkFS WV9ESVJ9L2JpbiApCi0gCi0gaWYoQ01BS0VfQlVJTERfVFlQRSkKLS0gICAgIyBWYWxpZGF0ZSBi dWlsZCB0eXBlCi0tICAgIHNldChDT05GSUdVUkFUSU9OX1RZUEVTICJEZWJ1ZztSZWxlYXNlO1Jl bFdpdGhEZWJJbmZvIikKLS0KLS0gICAgc3RyaW5nKEZJTkQgIiR7Q09ORklHVVJBVElPTl9UWVBF U30iICIke0NNQUtFX0JVSUxEX1RZUEV9IiBNQVRDSEVEX0NPTkZJRykKLS0gICAgaWYgKCR7TUFU Q0hFRF9DT05GSUd9IEVRVUFMIC0xKQotLSAgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkNN QUtFX0JVSUxEX1RZUEUgKCR7Q01BS0VfQlVJTERfVFlQRX0pIGFsbG93cyBvbmx5IHRoZSBmb2xs b3dpbmcgdmFsdWVzOiAke0NPTkZJR1VSQVRJT05fVFlQRVN9IikKLS0gICAgZW5kaWYoKQotIGVs c2UoTk9UIENNQUtFX0JVSUxEX1RZUEUpCi0gICAgIHNldChDTUFLRV9CVUlMRF9UWVBFICJSZWxl YXNlIikKLSAgICAgbWVzc2FnZShTVEFUVVMgIkJ1aWxkIHR5cGUgbm90IHNwZWNpZmllZDogVXNl IFJlbGVhc2UgYnkgZGVmYXVsdC4iKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pc3BjL3BhdGNoZXMv bGx2bTEyLTAwMS5wYXRjaCBiL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDEucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmMmQzZjVhNDA5ZS4uMDAwMDAwMDAwMDAw Ci0tLSBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDEucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSw1NyArMCwwIEBACi1Gcm9tIDFjMGY4OWRjY2I3NzRmMjE2YzdmNmU3NmE5OWVlOTA3 YTFlNjQxY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEbWl0cnkgQmFib2tpbiA8 ZG1pdHJ5LnkuYmFib2tpbkBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDIyIERlYyAyMDIwIDE3OjAz OjU5IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCB0byB3b3JrIHdpdGggTExWTSB0cnVuayBh ZnRlciBsbHZtL2xsdm0tcHJvamVjdEA0MWMzYjI3MTMKLQotLS0tCi0gc3JjL2N0eC5jcHAgfCAx OCArKysrKysrKysrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwg NiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jdHguY3BwIGIvc3JjL2N0eC5jcHAK LWluZGV4IDZmYmI4YjljZi4uOTc3ZTlkMjIyIDEwMDY0NAotLS0tIGEvc3JjL2N0eC5jcHAKLSsr KyBiL3NyYy9jdHguY3BwCi1AQCAtMTQ3MywxMSArMTQ3MywxNSBAQCB2b2lkIEZ1bmN0aW9uRW1p dENvbnRleHQ6OkFkZERlYnVnUG9zKGxsdm06OlZhbHVlICp2YWx1ZSwgY29uc3QgU291cmNlUG9z ICpwb3MsCi0gICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbGx2bTo6ZHluX2Nhc3Q8bGx2 bTo6SW5zdHJ1Y3Rpb24+KHZhbHVlKTsKLSAgICAgaWYgKGluc3QgIT0gTlVMTCAmJiBtLT5kaUJ1 aWxkZXIpIHsKLSAgICAgICAgIFNvdXJjZVBvcyBwID0gcG9zID8gKnBvcyA6IGN1cnJlbnRQb3M7 Ci0tICAgICAgICBpZiAocC5maXJzdF9saW5lICE9IDApCi0rICAgICAgICBpZiAocC5maXJzdF9s aW5lICE9IDApIHsKLSAgICAgICAgICAgICAvLyBJZiBmaXJzdF9saW5lID09IDAsIHRoZW4gd2Un cmUgaW4gdGhlIG1pZGRsZSBvZiBzZXR0aW5nIHVwCi0gICAgICAgICAgICAgLy8gdGhlIHN0YW5k YXJkIGxpYnJhcnkgb3IgdGhlIGxpa2U7IGRvbid0IGFkZCBkZWJ1ZyBwb3NpdGlvbnMKLSAgICAg ICAgICAgICAvLyBmb3IgdGhvc2UgZnVuY3Rpb25zCi0tICAgICAgICAgICAgaW5zdC0+c2V0RGVi dWdMb2MobGx2bTo6RGVidWdMb2M6OmdldChwLmZpcnN0X2xpbmUsIHAuZmlyc3RfY29sdW1uLCBz Y29wZSA/IHNjb3BlIDogR2V0RElTY29wZSgpKSk7Ci0rICAgICAgICAgICAgc2NvcGUgPSBzY29w ZSA/IHNjb3BlIDogR2V0RElTY29wZSgpOwotKyAgICAgICAgICAgIGxsdm06OkRlYnVnTG9jIGRp TG9jID0KLSsgICAgICAgICAgICAgICAgbGx2bTo6RElMb2NhdGlvbjo6Z2V0KHNjb3BlLT5nZXRD b250ZXh0KCksIHAuZmlyc3RfbGluZSwgcC5maXJzdF9jb2x1bW4sIHNjb3BlLCBudWxscHRyLCBm YWxzZSk7Ci0rICAgICAgICAgICAgaW5zdC0+c2V0RGVidWdMb2MoZGlMb2MpOwotKyAgICAgICAg fQotICAgICB9Ci0gfQotIAotQEAgLTE1MTgsOSArMTUyMiwxMCBAQCB2b2lkIEZ1bmN0aW9uRW1p dENvbnRleHQ6OkVtaXRWYXJpYWJsZURlYnVnSW5mbyhTeW1ib2wgKnN5bSkgewotICAgICBsbHZt OjpESUxvY2FsVmFyaWFibGUgKnZhciA9IG0tPmRpQnVpbGRlci0+Y3JlYXRlQXV0b1ZhcmlhYmxl KAotICAgICAgICAgc2NvcGUsIHN5bS0+bmFtZSwgc3ltLT5wb3MuR2V0RElGaWxlKCksIHN5bS0+ cG9zLmZpcnN0X2xpbmUsIGRpVHlwZSwgdHJ1ZSAvKiBwcmVzZXJ2ZSB0aHJvdWdoIG9wdHMgKi8p OwotIAotKyAgICBsbHZtOjpEZWJ1Z0xvYyBkaUxvYyA9Ci0rICAgICAgICBsbHZtOjpESUxvY2F0 aW9uOjpnZXQoc2NvcGUtPmdldENvbnRleHQoKSwgc3ltLT5wb3MuZmlyc3RfbGluZSwgc3ltLT5w b3MuZmlyc3RfY29sdW1uLCBzY29wZSwgbnVsbHB0ciwgZmFsc2UpOwotICAgICBsbHZtOjpJbnN0 cnVjdGlvbiAqZGVjbGFyZUluc3QgPQotLSAgICAgICAgbS0+ZGlCdWlsZGVyLT5pbnNlcnREZWNs YXJlKHN5bS0+c3RvcmFnZVB0ciwgdmFyLCBtLT5kaUJ1aWxkZXItPmNyZWF0ZUV4cHJlc3Npb24o KSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpEZWJ1Z0xvYzo6 Z2V0KHN5bS0+cG9zLmZpcnN0X2xpbmUsIHN5bS0+cG9zLmZpcnN0X2NvbHVtbiwgc2NvcGUpLCBi YmxvY2spOwotKyAgICAgICAgbS0+ZGlCdWlsZGVyLT5pbnNlcnREZWNsYXJlKHN5bS0+c3RvcmFn ZVB0ciwgdmFyLCBtLT5kaUJ1aWxkZXItPmNyZWF0ZUV4cHJlc3Npb24oKSwgZGlMb2MsIGJibG9j ayk7Ci0gICAgIEFkZERlYnVnUG9zKGRlY2xhcmVJbnN0LCAmc3ltLT5wb3MsIHNjb3BlKTsKLSB9 Ci0gCi1AQCAtMTUzNSw5ICsxNTQwLDEwIEBAIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4dDo6RW1p dEZ1bmN0aW9uUGFyYW1ldGVyRGVidWdJbmZvKFN5bWJvbCAqc3ltLCBpbnQgYXJnTnVtCi0gICAg ICAgICBtLT5kaUJ1aWxkZXItPmNyZWF0ZVBhcmFtZXRlclZhcmlhYmxlKHNjb3BlLCBzeW0tPm5h bWUsIGFyZ051bSArIDEsIHN5bS0+cG9zLkdldERJRmlsZSgpLCBzeW0tPnBvcy5maXJzdF9saW5l LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaVR5cGUs IHRydWUgLyogcHJlc2VydmUgdGhyb3VnaCBvcHRzICovLCBmbGFncyk7Ci0gCi0rICAgIGxsdm06 OkRlYnVnTG9jIGRpTG9jID0KLSsgICAgICAgIGxsdm06OkRJTG9jYXRpb246OmdldChzY29wZS0+ Z2V0Q29udGV4dCgpLCBzeW0tPnBvcy5maXJzdF9saW5lLCBzeW0tPnBvcy5maXJzdF9jb2x1bW4s IHNjb3BlLCBudWxscHRyLCBmYWxzZSk7Ci0gICAgIGxsdm06Okluc3RydWN0aW9uICpkZWNsYXJl SW5zdCA9Ci0tICAgICAgICBtLT5kaUJ1aWxkZXItPmluc2VydERlY2xhcmUoc3ltLT5zdG9yYWdl UHRyLCB2YXIsIG0tPmRpQnVpbGRlci0+Y3JlYXRlRXhwcmVzc2lvbigpLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkRlYnVnTG9jOjpnZXQoc3ltLT5wb3MuZmly c3RfbGluZSwgc3ltLT5wb3MuZmlyc3RfY29sdW1uLCBzY29wZSksIGJibG9jayk7Ci0rICAgICAg ICBtLT5kaUJ1aWxkZXItPmluc2VydERlY2xhcmUoc3ltLT5zdG9yYWdlUHRyLCB2YXIsIG0tPmRp QnVpbGRlci0+Y3JlYXRlRXhwcmVzc2lvbigpLCBkaUxvYywgYmJsb2NrKTsKLSAgICAgQWRkRGVi dWdQb3MoZGVjbGFyZUluc3QsICZzeW0tPnBvcywgc2NvcGUpOwotIH0KLSAKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDIucGF0Y2ggYi9zcmNwa2dzL2lzcGMvcGF0 Y2hlcy9sbHZtMTItMDAyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTAz ZjMwZGExMGQuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTIt MDAyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTIzICswLDAgQEAKLUZyb20gMDU5N2E3OWQw ODRjMDE0NzgwMTM2ZGE5MDZhZmUyMWQxNWU5ODJjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK LUZyb206IERlZXBha1JhamVuZHJha3VtYXJhbiA8ZGVlcGFrLnJhamVuZHJha3VtYXJhbkBpbnRl bC5jb20+Ci1EYXRlOiBUdWUsIDUgSmFuIDIwMjEgMTM6NTM6MzAgLTA4MDAKLVN1YmplY3Q6IFtQ QVRDSF0gUmVtb3ZlIExMVk0gOC4wIGFuZCBMTFZNIDkuMC4gKCMxOTY2KQotCi0tLS0KLSAuYXBw dmV5b3IueW1sICAgICAgICAgICAgICAgICAgICAgICAgfCAgMyAtLQotIC50cmF2aXMueW1sICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICA3IC0tLQotIENNYWtlTGlzdHMudHh0ICAgICAgICAg ICAgICAgICAgICAgICB8IDEyICsrLS0tLQotIHNyYy9hc3QuY3BwICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICA0IC0tCi0gc3JjL2N0eC5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg MzAgLS0tLS0tLS0tLS0tLQotIHNyYy9nZW4vR2xvYmFsc0xvY2FsaXphdGlvbi5jcHAgICAgICB8 ICA0IC0tCi0gc3JjL2lzcGMuY3BwICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAgLS0tLS0t LS0tCi0gc3JjL2lzcGMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKy0KLSBzcmMv aXNwY192ZXJzaW9uLmggICAgICAgICAgICAgICAgICAgfCAgNCArLQotIHNyYy9tYWluLmNwcCAg ICAgICAgICAgICAgICAgICAgICAgICB8IDEzIC0tLS0tLQotIHNyYy9tb2R1bGUuY3BwICAgICAg ICAgICAgICAgICAgICAgICB8IDI3IC0tLS0tLS0tLS0tLQotIHNyYy9tb2R1bGUuaCAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAyIC0KLSBzcmMvb3B0LmNwcCAgICAgICAgICAgICAgICAgICAg ICAgICAgfCA2NCArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gc3JjL3R5cGUuY3BwICAg ICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKystLS0KLSB0ZXN0cy9saXQtdGVzdHMvMTc3MS5p c3BjICAgICAgICAgICAgfCAgMSAtCi0gdGVzdHMvbGl0LXRlc3RzLzE4NDQuaXNwYyAgICAgICAg ICAgIHwgIDMgLS0KLSB0ZXN0cy9saXQtdGVzdHMvMTkyNi5pc3BjICAgICAgICAgICAgfCAgMiAt Ci0gdGVzdHMvbGl0LXRlc3RzL2NwdXNfeDg2LmlzcGMgICAgICAgIHwgIDIgKwotIHRlc3RzL2xp dC10ZXN0cy9jcHVzX3g4Nl9sbHZtMTAuaXNwYyB8IDExIC0tLS0tCi0gdGVzdHMvbGl0LXRlc3Rz L2xpdC5jZmcgICAgICAgICAgICAgIHwgIDUgLS0tCi0gMjAgZmlsZXMgY2hhbmdlZCwgMTQgaW5z ZXJ0aW9ucygrKSwgMjEzIGRlbGV0aW9ucygtKQotIGRlbGV0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9s aXQtdGVzdHMvY3B1c194ODZfbGx2bTEwLmlzcGMKLQotZGlmZiAtLWdpdCBhLy5hcHB2ZXlvci55 bWwgYi8uYXBwdmV5b3IueW1sCi1pbmRleCA0NTFhN2IzZTAuLjc5NDVjY2EyYSAxMDA2NDQKLS0t LSBhLy5hcHB2ZXlvci55bWwKLSsrKyBiLy5hcHB2ZXlvci55bWwKLUBAIC00MSw4ICs0MSw2IEBA IGVudmlyb25tZW50OgotICAgICAgIExMVk1fVkVSU0lPTjogbGF0ZXN0Ci0gICAgIC0gQVBQVkVZ T1JfQlVJTERfV09SS0VSX0lNQUdFOiBWaXN1YWwgU3R1ZGlvIDIwMTkKLSAgICAgICBMTFZNX1ZF UlNJT046IDEwLjAKLS0gICAgLSBBUFBWRVlPUl9CVUlMRF9XT1JLRVJfSU1BR0U6IFZpc3VhbCBT dHVkaW8gMjAxOQotLSAgICAgIExMVk1fVkVSU0lPTjogOS4wCi0gCi0gZm9yOgotIC0KLUBAIC02 Miw3ICs2MCw2IEBAIGZvcjoKLSAgICAgICAgIGlmICIlQVBQVkVZT1JfQlVJTERfV09SS0VSX0lN QUdFJSI9PSJWaXN1YWwgU3R1ZGlvIDIwMTkiICggKHNldCBnZW5lcmF0b3I9IlZpc3VhbCBTdHVk aW8gMTYiKSAmIChzZXQgdnN2ZXJzaW9uPTIwMTkpKQotICAgICAgICAgc2V0IExMVk1fVEFSPWxs dm0tMTEuMC4wLXdpbi52czIwMTktUmVsZWFzZStBc3NlcnRzLXg4Ni5hcm0ud2FzbS43egotICAg ICAgICAgaWYgIiVMTFZNX1ZFUlNJT04lIj09IjEwLjAiIChzZXQgTExWTV9UQVI9bGx2bS0xMC4w LjEtd2luLnZzMjAxOS1SZWxlYXNlK0Fzc2VydHMteDg2LmFybS53YXNtLnppcCkKLS0gICAgICAg IGlmICIlTExWTV9WRVJTSU9OJSI9PSI5LjAiIChzZXQgTExWTV9UQVI9bGx2bS05LjAuMS13aW4u dnMyMDE3LVJlbGVhc2UrQXNzZXJ0cy14ODYuYXJtLndhc20uemlwKQotICAgaW5zdGFsbDoKLSAg ICAgLSBwczogY2hvY28gaW5zdGFsbCAtLW5vLXByb2dyZXNzIHdpbmZsZXhiaXNvbjMgd2dldCA3 emlwCi0gICAgIC0gY21kOiB8LQotZGlmZiAtLWdpdCBhLy50cmF2aXMueW1sIGIvLnRyYXZpcy55 bWwKLWluZGV4IDJlOTYwMTdhNi4uM2E2Yjg1MjY0IDEwMDY0NAotLS0tIGEvLnRyYXZpcy55bWwK LSsrKyBiLy50cmF2aXMueW1sCi1AQCAtMTA4LDEzICsxMDgsNiBAQCBqb2JzOgotICAgICAgICAg LSBMTFZNX1RBUj1sbHZtLTEwLjAuMS11YnVudHUxNi4wNC1SZWxlYXNlK0Fzc2VydHMteDg2LmFy bS53YXNtLnRhci54egotICAgICAgICAgLSBMTFZNX1JFUE89aHR0cHM6Ly9naXRodWIuY29tL2Ri YWJva2luL2xsdm0tcHJvamVjdAotICAgICAgICAgLSBJU1BDX0hPTUU9JFRSQVZJU19CVUlMRF9E SVIKLS0gICAgIyBMTFZNIDkuMCArIFVidW50dSAxNi4wNDogYnVpbGQsIGxpdCB0ZXN0cywgZXhh bXBsZXMgKGJ1aWxkICsgcnVuKSwgYmVuY2htYXJrcyAoYnVpbGQgKyB0cmlhbCBydW4pCi0tICAg IC0gPDw6ICpteV90YWcKLS0gICAgICBlbnY6Ci0tICAgICAgICAtIExMVk1fVkVSU0lPTj05LjAg T1M9VWJ1bnR1MTYuMDQKLS0gICAgICAgIC0gTExWTV9UQVI9bGx2bS05LjAuMS11YnVudHUxNi4w NC1SZWxlYXNlK0Fzc2VydHMteDg2LmFybS53YXNtLnRhci54egotLSAgICAgICAgLSBMTFZNX1JF UE89aHR0cHM6Ly9naXRodWIuY29tL2RiYWJva2luL2xsdm0tcHJvamVjdAotLSAgICAgICAgLSBJ U1BDX0hPTUU9JFRSQVZJU19CVUlMRF9ESVIKLSAgICAgIyBXQVNNIGVuYWJsZWQgYnVpbGQKLSAg ICAgIyBMTFZNIDExLjAgKyBVYnVudHUgMTYuMDQ6IGJ1aWxkLCBsaXQgdGVzdHMsIGV4YW1wbGVz IChidWlsZCksIGJlbmNobWFya3MgKGJ1aWxkICsgdHJpYWwgcnVuKQotICAgICAtIDw8OiAqbXlf dGFnCi1kaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAotaW5kZXgg NWZhODYzZmNmLi5hNmIzZWQyNTEgMTAwNjQ0Ci0tLS0gYS9DTWFrZUxpc3RzLnR4dAotKysrIGIv Q01ha2VMaXN0cy50eHQKLUBAIC0yNDEsMTAgKzI0MSw4IEBAIGlmIChYODZfRU5BQkxFRCkKLSAg ICAgICAgIGF2eDItaTh4MzIgYXZ4Mi1pMTZ4MTYKLSAgICAgICAgIGF2eDItaTMyeDQgYXZ4Mi1p MzJ4OCBhdngyLWkzMngxNiBhdngyLWk2NHg0Ci0gICAgICAgICBhdng1MTJrbmwtaTMyeDE2Ci0t ICAgICAgICBhdng1MTJza3gtaTMyeDE2IGF2eDUxMnNreC1pMzJ4OCkKLS0gICAgaWYgKCR7TExW TV9WRVJTSU9OX05VTUJFUn0gVkVSU0lPTl9HUkVBVEVSX0VRVUFMICIxMC4wLjAiKQotLSAgICAg ICAgbGlzdChBUFBFTkQgSVNQQ19UQVJHRVRTIGF2eDUxMnNreC1pOHg2NCBhdng1MTJza3gtaTE2 eDMyKQotLSAgICBlbmRpZigpCi0rICAgICAgICBhdng1MTJza3gtaTMyeDE2IGF2eDUxMnNreC1p MzJ4OAotKyAgICAgICAgYXZ4NTEyc2t4LWk4eDY0IGF2eDUxMnNreC1pMTZ4MzIpCi0gZW5kaWYo KQotIGlmIChBUk1fRU5BQkxFRCkKLSAgICAgbGlzdChBUFBFTkQgSVNQQ19UQVJHRVRTIG5lb24t aTh4MTYgbmVvbi1pMTZ4OCBuZW9uLWkzMng0IG5lb24taTMyeDgpCi1AQCAtMjU5LDExICsyNTcs NyBAQCBpZiAoV0FTTV9FTkFCTEVEKQotIGVuZGlmKCkKLSAKLSBzZXQoQ0xBTkdfTElCUkFSWV9M SVNUIGNsYW5nRnJvbnRlbmQgY2xhbmdEcml2ZXIgY2xhbmdTZXJpYWxpemF0aW9uIGNsYW5nUGFy c2UgY2xhbmdTZW1hIGNsYW5nQW5hbHlzaXMgY2xhbmdBU1QgY2xhbmdCYXNpYyBjbGFuZ0VkaXQg Y2xhbmdMZXgpCi0tc2V0KExMVk1fQ09NUE9ORU5UUyBlbmdpbmUgaXBvIGJpdHJlYWRlciBiaXR3 cml0ZXIgaW5zdHJ1bWVudGF0aW9uIGxpbmtlciBvcHRpb24pCi0tCi0taWYgKCR7TExWTV9WRVJT SU9OX05VTUJFUn0gVkVSU0lPTl9HUkVBVEVSX0VRVUFMICIxMC4wLjAiKQotLSAgICBsaXN0KEFQ UEVORCBMTFZNX0NPTVBPTkVOVFMgZnJvbnRlbmRvcGVubXApCi0tZW5kaWYoKQotK3NldChMTFZN X0NPTVBPTkVOVFMgZW5naW5lIGlwbyBiaXRyZWFkZXIgYml0d3JpdGVyIGluc3RydW1lbnRhdGlv biBsaW5rZXIgb3B0aW9uIGZyb250ZW5kb3Blbm1wKQotIAotIGlmIChYODZfRU5BQkxFRCkKLSAg ICAgbGlzdChBUFBFTkQgTExWTV9DT01QT05FTlRTIHg4NikKLWRpZmYgLS1naXQgYS9zcmMvYXN0 LmNwcCBiL3NyYy9hc3QuY3BwCi1pbmRleCAyMGY3NWEyOWMuLjVhNDNjNDg1NCAxMDA2NDQKLS0t LSBhL3NyYy9hc3QuY3BwCi0rKysgYi9zcmMvYXN0LmNwcAotQEAgLTQ0LDkgKzQ0LDcgQEAKLSAj aW5jbHVkZSAic3ltLmgiCi0gI2luY2x1ZGUgInV0aWwuaCIKLSAKLS0jaWYgSVNQQ19MTFZNX1ZF UlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAjaW5jbHVkZSA8bGx2bS9TdXBwb3J0L1RpbWVQcm9m aWxlci5oPgotLSNlbmRpZgotIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotIC8vIEFTVE5vZGUKLSAKLUBA IC02Miw5ICs2MCw3IEBAIHZvaWQgQVNUOjpBZGRGdW5jdGlvbihTeW1ib2wgKnN5bSwgU3RtdCAq Y29kZSkgewotIH0KLSAKLSB2b2lkIEFTVDo6R2VuZXJhdGVJUigpIHsKLS0jaWYgSVNQQ19MTFZN X1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgVGlt ZVNjb3BlKCJHZW5lcmF0ZUlSIik7Ci0tI2VuZGlmCi0gICAgIGZvciAodW5zaWduZWQgaW50IGkg PSAwOyBpIDwgZnVuY3Rpb25zLnNpemUoKTsgKytpKQotICAgICAgICAgZnVuY3Rpb25zW2ldLT5H ZW5lcmF0ZUlSKCk7Ci0gfQotZGlmZiAtLWdpdCBhL3NyYy9jdHguY3BwIGIvc3JjL2N0eC5jcHAK LWluZGV4IDk3N2U5ZDIyMi4uNDJjNGVhMDlkIDEwMDY0NAotLS0tIGEvc3JjL2N0eC5jcHAKLSsr KyBiL3NyYy9jdHguY3BwCi1AQCAtMzA5LDIxICszMDksMTMgQEAgRnVuY3Rpb25FbWl0Q29udGV4 dDo6RnVuY3Rpb25FbWl0Q29udGV4dChGdW5jdGlvbiAqZnVuYywgU3ltYm9sICpmdW5TeW0sIGxs dm06OkYKLSAgICAgICAgICAgICBjaGFyIGJ1ZlsyNTZdOwotICAgICAgICAgICAgIHNucHJpbnRm KGJ1Ziwgc2l6ZW9mKGJ1ZiksICJfX29mZl9hbGxfb25fbWFza18lcyIsIGctPnRhcmdldC0+R2V0 SVNBU3RyaW5nKCkpOwotIAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8PSBJU1BDX0xMVk1fOF8w Ci0tICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnQgKm9mZkZ1bmMgPSBtLT5tb2R1bGUtPmdldE9y SW5zZXJ0RnVuY3Rpb24oYnVmLCBMTFZNVHlwZXM6OlZvaWRUeXBlKTsKLS0jZWxzZSAvLyBMTFZN IDkuMCsKLSAgICAgICAgICAgICBsbHZtOjpGdW5jdGlvbkNhbGxlZSBvZmZGdW5jQ2FsbGVlID0g bS0+bW9kdWxlLT5nZXRPckluc2VydEZ1bmN0aW9uKGJ1ZiwgTExWTVR5cGVzOjpWb2lkVHlwZSk7 Ci0gICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnQgKm9mZkZ1bmMgPSBsbHZtOjpjYXN0PGxsdm06 OkNvbnN0YW50PihvZmZGdW5jQ2FsbGVlLmdldENhbGxlZSgpKTsKLS0jZW5kaWYKLSAgICAgICAg ICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbGx2bTo6aXNhPGxsdm06OkZ1bmN0aW9uPihvZmZG dW5jKSk7Ci0gICAgICAgICAgICAgbGx2bTo6QmFzaWNCbG9jayAqb2ZmQkIgPSBsbHZtOjpCYXNp Y0Jsb2NrOjpDcmVhdGUoKmctPmN0eCwgImVudHJ5IiwgKGxsdm06OkZ1bmN0aW9uICopb2ZmRnVu YywgMCk7Ci0gICAgICAgICAgICAgbGx2bTo6U3RvcmVJbnN0ICppbnN0ID0gbmV3IGxsdm06OlN0 b3JlSW5zdChMTFZNTWFza0FsbE9mZiwgZ2xvYmFsQWxsT25NYXNrUHRyLCBvZmZCQik7Ci0gICAg ICAgICAgICAgaWYgKGctPm9wdC5mb3JjZUFsaWduZWRNZW1vcnkpIHsKLS0jaWYgSVNQQ19MTFZN X1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAgICAgICAgICAgICBpbnN0LT5zZXRBbGln bm1lbnQoZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1lbnQoKSk7Ci0tI2Vsc2UgLy8g TExWTSAxMC4wKwotICAgICAgICAgICAgICAgICBpbnN0LT5zZXRBbGlnbm1lbnQobGx2bTo6TWF5 YmVBbGlnbihnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdubWVudCgpKS52YWx1ZU9yT25l KCkpOwotLSNlbmRpZgotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBsbHZtOjpSZXR1cm5J bnN0OjpDcmVhdGUoKmctPmN0eCwgb2ZmQkIpOwotICAgICAgICAgfQotQEAgLTIyODgsMTEgKzIy ODAsNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6TG9hZEluc3QobGx2bTo6 VmFsdWUgKnB0ciwgY29uc3QgVHlwZSAqdHlwZSwgYwotICNlbmRpZgotIAotICAgICBpZiAoZy0+ b3B0LmZvcmNlQWxpZ25lZE1lbW9yeSAmJiBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBl PihwdC0+Z2V0RWxlbWVudFR5cGUoKSkpIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQ Q19MTFZNXzlfMAotLSAgICAgICAgaW5zdC0+c2V0QWxpZ25tZW50KGctPnRhcmdldC0+Z2V0TmF0 aXZlVmVjdG9yQWxpZ25tZW50KCkpOwotLSNlbHNlIC8vIExMVk0gMTAuMCsKLSAgICAgICAgIGlu c3QtPnNldEFsaWdubWVudChsbHZtOjpNYXliZUFsaWduKGctPnRhcmdldC0+Z2V0TmF0aXZlVmVj dG9yQWxpZ25tZW50KCkpLnZhbHVlT3JPbmUoKSk7Ci0tI2VuZGlmCi0gICAgIH0KLSAKLSAgICAg QWRkRGVidWdQb3MoaW5zdCk7Ci1AQCAtMjQzMSwxMSArMjQxOSw3IEBAIGxsdm06OlZhbHVlICpG dW5jdGlvbkVtaXRDb250ZXh0OjpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1 ZSAqbWFzaywKLSAgICAgICAgICAgICAgICAgLy8gdnMgdGhlIHByb3BlciBhbGlnbm1lbnQgaW4g cHJhY3RpY2UuKQotICAgICAgICAgICAgICAgICBpbnQgYWxpZ24gPSAxOwotIAotLSNpZiBJU1BD X0xMVk1fVkVSU0lPTiA8PSBJU1BDX0xMVk1fOV8wCi0tICAgICAgICAgICAgICAgIGluc3QtPnNl dEFsaWdubWVudChhbGlnbik7Ci0tI2Vsc2UgLy8gTExWTSAxMC4wKwotICAgICAgICAgICAgICAg ICBpbnN0LT5zZXRBbGlnbm1lbnQobGx2bTo6TWF5YmVBbGlnbihhbGlnbikudmFsdWVPck9uZSgp KTsKLS0jZW5kaWYKLSAgICAgICAgICAgICB9Ci0gCi0gICAgICAgICAgICAgQWRkRGVidWdQb3Mo aW5zdCk7Ci1AQCAtMjY0OSwxMSArMjYzMyw3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRD b250ZXh0OjpBbGxvY2FJbnN0KGxsdm06OlR5cGUgKmxsdm1UeXBlLCBjb25zdCBjaGFyICpuCi0g ICAgICAgICBhbGlnbiA9IGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCk7Ci0g Ci0gICAgIGlmIChhbGlnbiAhPSAwKSB7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENf TExWTV85XzAKLS0gICAgICAgIGluc3QtPnNldEFsaWdubWVudChhbGlnbik7Ci0tI2Vsc2UgLy8g TExWTSAxMC4wKwotICAgICAgICAgaW5zdC0+c2V0QWxpZ25tZW50KGxsdm06Ok1heWJlQWxpZ24o YWxpZ24pLnZhbHVlT3JPbmUoKSk7Ci0tI2VuZGlmCi0gICAgIH0KLSAgICAgLy8gRG9uJ3QgYWRk IGRlYnVnZ2luZyBpbmZvIHRvIGFsbG9jYSBpbnN0cnVjdGlvbnMKLSAgICAgcmV0dXJuIGluc3Q7 Ci1AQCAtMjkyNiwxMSArMjkwNiw3IEBAIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4dDo6U3RvcmVJ bnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VmFsdWUgKnB0ciwgY29uc3QKLSAgICAgbGx2 bTo6U3RvcmVJbnN0ICppbnN0ID0gbmV3IGxsdm06OlN0b3JlSW5zdCh2YWx1ZSwgcHRyLCBiYmxv Y2spOwotIAotICAgICBpZiAoZy0+b3B0LmZvcmNlQWxpZ25lZE1lbW9yeSAmJiBsbHZtOjpkeW5f Y2FzdDxsbHZtOjpWZWN0b3JUeXBlPihwdC0+Z2V0RWxlbWVudFR5cGUoKSkpIHsKLS0jaWYgSVNQ Q19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAgICAgaW5zdC0+c2V0QWxpZ25t ZW50KGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCkpOwotLSNlbHNlIC8vIExM Vk0gMTAuMCsKLSAgICAgICAgIGluc3QtPnNldEFsaWdubWVudChsbHZtOjpNYXliZUFsaWduKGct PnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCkpLnZhbHVlT3JPbmUoKSk7Ci0tI2Vu ZGlmCi0gICAgIH0KLSAKLSAjaWZkZWYgSVNQQ19HRU5YX0VOQUJMRUQKLUBAIC0zMDI1LDE2ICsz MDAxLDEwIEBAIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4dDo6TWVtY3B5SW5zdChsbHZtOjpWYWx1 ZSAqZGVzdCwgbGx2bTo6VmFsdWUgKnNyYywgbGx2bTo6Ci0gICAgIH0KLSAgICAgaWYgKGFsaWdu ID09IE5VTEwpCi0gICAgICAgICBhbGlnbiA9IExMVk1JbnQzMigxKTsKLS0jaWYgSVNQQ19MTFZN X1ZFUlNJT04gPD0gSVNQQ19MTFZNXzhfMAotLSAgICBsbHZtOjpDb25zdGFudCAqbWNGdW5jID0K LS0gICAgICAgIG0tPm1vZHVsZS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigibGx2bS5tZW1jcHkucDBp OC5wMGk4Lmk2NCIsIExMVk1UeXBlczo6Vm9pZFR5cGUsIExMVk1UeXBlczo6Vm9pZFBvaW50ZXJU eXBlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1UeXBlczo6 Vm9pZFBvaW50ZXJUeXBlLCBMTFZNVHlwZXM6OkludDY0VHlwZSwgTExWTVR5cGVzOjpCb29sVHlw ZSk7Ci0tI2Vsc2UgLy8gTExWTSA5LjArCi0gICAgIGxsdm06OkZ1bmN0aW9uQ2FsbGVlIG1jRnVu Y0NhbGxlZSA9Ci0gICAgICAgICBtLT5tb2R1bGUtPmdldE9ySW5zZXJ0RnVuY3Rpb24oImxsdm0u bWVtY3B5LnAwaTgucDBpOC5pNjQiLCBMTFZNVHlwZXM6OlZvaWRUeXBlLCBMTFZNVHlwZXM6OlZv aWRQb2ludGVyVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM TFZNVHlwZXM6OlZvaWRQb2ludGVyVHlwZSwgTExWTVR5cGVzOjpJbnQ2NFR5cGUsIExMVk1UeXBl czo6Qm9vbFR5cGUpOwotICAgICBsbHZtOjpDb25zdGFudCAqbWNGdW5jID0gbGx2bTo6Y2FzdDxs bHZtOjpDb25zdGFudD4obWNGdW5jQ2FsbGVlLmdldENhbGxlZSgpKTsKLS0jZW5kaWYKLSAgICAg QXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG1jRnVuYyAhPSBOVUxMKTsKLSAgICAgQXNzZXJ0UG9zKGN1 cnJlbnRQb3MsIGxsdm06OmlzYTxsbHZtOjpGdW5jdGlvbj4obWNGdW5jKSk7Ci0gCi1kaWZmIC0t Z2l0IGEvc3JjL2dlbi9HbG9iYWxzTG9jYWxpemF0aW9uLmNwcCBiL3NyYy9nZW4vR2xvYmFsc0xv Y2FsaXphdGlvbi5jcHAKLWluZGV4IDE5M2E2NjI4OS4uYTE3NmU5NDYyIDEwMDY0NAotLS0tIGEv c3JjL2dlbi9HbG9iYWxzTG9jYWxpemF0aW9uLmNwcAotKysrIGIvc3JjL2dlbi9HbG9iYWxzTG9j YWxpemF0aW9uLmNwcAotQEAgLTQ3MCwxMSArNDcwLDcgQEAgdm9pZCBHbG9iYWxzTG9jYWxpemF0 aW9uOjpMb2NhbGl6ZUdsb2JhbHMoTG9jYWxpemF0aW9uSW5mbyAmTEkpIHsKLSAgICAgICAgIElu c3RydWN0aW9uICZGaXJzdEkgPSAqRm4tPmdldEVudHJ5QmxvY2soKS5iZWdpbigpOwotICAgICAg ICAgVHlwZSAqRWxlbVR5ID0gR1YtPmdldFR5cGUoKS0+Z2V0RWxlbWVudFR5cGUoKTsKLSAgICAg ICAgIEFsbG9jYUluc3QgKkFsbG9jYSA9IG5ldyBBbGxvY2FJbnN0KEVsZW1UeSwgMCwgR1YtPmdl dE5hbWUoKSArICIubG9jYWwiLCAmRmlyc3RJKTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0g SVNQQ19MTFZNXzlfMAotLSAgICAgICAgQWxsb2NhLT5zZXRBbGlnbm1lbnQoR1YtPmdldEFsaWdu bWVudCgpKTsKLS0jZWxzZSAvLyBMTFZNIDEwLjArCi0gICAgICAgICBBbGxvY2EtPnNldEFsaWdu bWVudChsbHZtOjpNYXliZUFsaWduKEdWLT5nZXRBbGlnbm1lbnQoKSkpOwotLSNlbmRpZgotICAg ICAgICAgaWYgKCFpc2E8VW5kZWZWYWx1ZT4oR1YtPmdldEluaXRpYWxpemVyKCkpKQotICAgICAg ICAgICAgIG5ldyBTdG9yZUluc3QoR1YtPmdldEluaXRpYWxpemVyKCksIEFsbG9jYSwgJkZpcnN0 SSk7Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL2lzcGMuY3BwIGIvc3JjL2lzcGMuY3BwCi1pbmRleCBl MmQwZjIwNmUuLmZhYzUyMzNmNyAxMDA2NDQKLS0tLSBhL3NyYy9pc3BjLmNwcAotKysrIGIvc3Jj L2lzcGMuY3BwCi1AQCAtMjcyLDkgKzI3Miw3IEBAIHR5cGVkZWYgZW51bSB7Ci0gICAgIENQVV9T aWx2ZXJtb250LAotIAotICAgICBDUFVfSUNYLAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJ U1BDX0xMVk1fMTBfMAotICAgICBDUFVfVEdMLAotLSNlbmRpZgotICNpZiBJU1BDX0xMVk1fVkVS U0lPTiA+PSBJU1BDX0xMVk1fMTJfMAotICAgICBDUFVfQURMLAotICAgICBDUFVfU1BSLAotQEAg LTM2NSwxMCArMzYzLDggQEAgY2xhc3MgQWxsQ1BVcyB7Ci0gCi0gICAgICAgICBuYW1lc1tDUFVf SUNYXS5wdXNoX2JhY2soImljZWxha2Utc2VydmVyIik7Ci0gICAgICAgICBuYW1lc1tDUFVfSUNY XS5wdXNoX2JhY2soImljeCIpOwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1f MTBfMAotICAgICAgICAgbmFtZXNbQ1BVX1RHTF0ucHVzaF9iYWNrKCJ0aWdlcmxha2UiKTsKLSAg ICAgICAgIG5hbWVzW0NQVV9UR0xdLnB1c2hfYmFjaygidGdsIik7Ci0tI2VuZGlmCi0gI2lmIElT UENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMl8wCi0gICAgICAgICBuYW1lc1tDUFVfQURM XS5wdXNoX2JhY2soImFsZGVybGFrZSIpOwotICAgICAgICAgbmFtZXNbQ1BVX0FETF0ucHVzaF9i YWNrKCJhZGwiKTsKLUBAIC00MTEsMTEgKzQwNyw5IEBAIGNsYXNzIEFsbENQVXMgewotICAgICAg ICAgY29tcGF0W0NQVV9BRExdID0gU2V0KENQVV9BREwsIENQVV94ODZfNjQsIENQVV9Cb25uZWxs LCBDUFVfUGVucnluLCBDUFVfQ29yZTIsIENQVV9OZWhhbGVtLCBDUFVfU2lsdmVybW9udCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUFVfU2FuZHlCcmlkZ2UsIENQVV9JdnlCcmlk Z2UsIENQVV9IYXN3ZWxsLCBDUFVfQnJvYWR3ZWxsLCBDUFVfTm9uZSk7Ci0gI2VuZGlmCi0tI2lm IElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgICAgICBjb21wYXRbQ1BV X1RHTF0gPQotICAgICAgICAgICAgIFNldChDUFVfVEdMLCBDUFVfeDg2XzY0LCBDUFVfQm9ubmVs bCwgQ1BVX1BlbnJ5biwgQ1BVX0NvcmUyLCBDUFVfTmVoYWxlbSwgQ1BVX1NpbHZlcm1vbnQsIENQ VV9TYW5keUJyaWRnZSwKLSAgICAgICAgICAgICAgICAgQ1BVX0l2eUJyaWRnZSwgQ1BVX0hhc3dl bGwsIENQVV9Ccm9hZHdlbGwsIENQVV9TS1gsIENQVV9JQ0wsIENQVV9JQ1gsIENQVV9Ob25lKTsK LS0jZW5kaWYKLSAgICAgICAgIGNvbXBhdFtDUFVfSUNYXSA9IFNldChDUFVfSUNYLCBDUFVfeDg2 XzY0LCBDUFVfQm9ubmVsbCwgQ1BVX1BlbnJ5biwgQ1BVX0NvcmUyLCBDUFVfTmVoYWxlbSwgQ1BV X1NpbHZlcm1vbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BVX1NhbmR5QnJp ZGdlLCBDUFVfSXZ5QnJpZGdlLCBDUFVfSGFzd2VsbCwgQ1BVX0Jyb2Fkd2VsbCwgQ1BVX1NLWCwg Q1BVX0lDTCwgQ1BVX05vbmUpOwotIAotQEAgLTU1Niw5ICs1NTAsNyBAQCBUYXJnZXQ6OlRhcmdl dChBcmNoIGFyY2gsIGNvbnN0IGNoYXIgKmNwdSwgSVNQQ1RhcmdldCBpc3BjX3RhcmdldCwgYm9v bCBwaWMsIGJvbwotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTJfMAotICAg ICAgICAgY2FzZSBDUFVfU1BSOgotICNlbmRpZgotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJ U1BDX0xMVk1fMTBfMAotICAgICAgICAgY2FzZSBDUFVfVEdMOgotLSNlbmRpZgotICAgICAgICAg Y2FzZSBDUFVfSUNYOgotICAgICAgICAgY2FzZSBDUFVfSUNMOgotICAgICAgICAgY2FzZSBDUFVf U0tYOgotQEAgLTkxNiw3ICs5MDgsNiBAQCBUYXJnZXQ6OlRhcmdldChBcmNoIGFyY2gsIGNvbnN0 IGNoYXIgKmNwdSwgSVNQQ1RhcmdldCBpc3BjX3RhcmdldCwgYm9vbCBwaWMsIGJvbwotICAgICAg ICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgSVNQQ1RhcmdldDo6YXZ4NTEyc2t4X2k4 eDY0OgotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMCAvLyBMTFZNIDEw LjArCi0gICAgICAgICAvLyBUaGlzIHRhcmdldCBpcyBlbmFibGVkIG9ubHkgZm9yIExMVk0gMTAu MCBhbmQgbGF0ZXIKLSAgICAgICAgIC8vIGJlY2F1c2UgTExWTSByZXF1aXJlcyBhIG51bWJlciBv ZiBmaXhlcywgd2hpY2ggYXJlCi0gICAgICAgICAvLyBjb21taXR0ZWQgdG8gTExWTSAxMS4wIGFu ZCBjYW4gYmUgYXBwbGllZCB0byAxMC4wLCBidXQgbm90Ci1AQCAtOTM3LDEyICs5MjgsNyBAQCBU YXJnZXQ6OlRhcmdldChBcmNoIGFyY2gsIGNvbnN0IGNoYXIgKmNwdSwgSVNQQ1RhcmdldCBpc3Bj X3RhcmdldCwgYm9vbCBwaWMsIGJvbwotICAgICAgICAgdGhpcy0+bV9oYXNWZWNQcmVmZXRjaCA9 IGZhbHNlOwotICAgICAgICAgQ1BVZnJvbUlTQSA9IENQVV9TS1g7Ci0gICAgICAgICBicmVhazsK LS0jZWxzZQotLSAgICAgICAgdW5zdXBwb3J0ZWRfdGFyZ2V0ID0gdHJ1ZTsKLS0gICAgICAgIGJy ZWFrOwotLSNlbmRpZgotICAgICBjYXNlIElTUENUYXJnZXQ6OmF2eDUxMnNreF9pMTZ4MzI6Ci0t I2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wIC8vIExMVk0gMTAuMCsKLSAg ICAgICAgIC8vIFRoaXMgdGFyZ2V0IGlzIGVuYWJsZWQgb25seSBmb3IgTExWTSAxMC4wIGFuZCBs YXRlcgotICAgICAgICAgLy8gYmVjYXVzZSBMTFZNIHJlcXVpcmVzIGEgbnVtYmVyIG9mIGZpeGVz LCB3aGljaCBhcmUKLSAgICAgICAgIC8vIGNvbW1pdHRlZCB0byBMTFZNIDExLjAgYW5kIGNhbiBi ZSBhcHBsaWVkIHRvIDEwLjAsIGJ1dCBub3QKLUBAIC05NjMsMTAgKzk0OSw2IEBAIFRhcmdldDo6 VGFyZ2V0KEFyY2ggYXJjaCwgY29uc3QgY2hhciAqY3B1LCBJU1BDVGFyZ2V0IGlzcGNfdGFyZ2V0 LCBib29sIHBpYywgYm9vCi0gICAgICAgICB0aGlzLT5tX2hhc1ZlY1ByZWZldGNoID0gZmFsc2U7 Ci0gICAgICAgICBDUFVmcm9tSVNBID0gQ1BVX1NLWDsKLSAgICAgICAgIGJyZWFrOwotLSNlbHNl Ci0tICAgICAgICB1bnN1cHBvcnRlZF90YXJnZXQgPSB0cnVlOwotLSAgICAgICAgYnJlYWs7Ci0t I2VuZGlmCi0gI2lmZGVmIElTUENfQVJNX0VOQUJMRUQKLSAgICAgY2FzZSBJU1BDVGFyZ2V0Ojpu ZW9uX2k4eDE2OgotICAgICAgICAgdGhpcy0+bV9pc2EgPSBUYXJnZXQ6Ok5FT047Ci1AQCAtMTY2 MiwxMSArMTY0NCw5IEBAIEdsb2JhbHM6Okdsb2JhbHMoKSB7Ci0gICAgIGlzTXVsdGlUYXJnZXRD b21waWxhdGlvbiA9IGZhbHNlOwotICAgICBlcnJvckxpbWl0ID0gLTE7Ci0gCi0tI2lmIElTUENf TExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGVuYWJsZVRpbWVUcmFjZSA9IGZh bHNlOwotICAgICAvLyBzZXQgZGVmYXVsdCBncmFudWxhcml0eSB0byA1MDAuCi0gICAgIHRpbWVU cmFjZUdyYW51bGFyaXR5ID0gNTAwOwotLSNlbmRpZgotICAgICB0YXJnZXQgPSBOVUxMOwotICAg ICBjdHggPSBuZXcgbGx2bTo6TExWTUNvbnRleHQ7Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL2lzcGMu aCBiL3NyYy9pc3BjLmgKLWluZGV4IGUyNWQ4ODMwZS4uZGUzNTdhMjFjIDEwMDY0NAotLS0tIGEv c3JjL2lzcGMuaAotKysrIGIvc3JjL2lzcGMuaAotQEAgLTY5NSwxMyArNjk1LDEyIEBAIHN0cnVj dCBHbG9iYWxzIHsKLSAKLSAgICAgLyogTnVtYmVyIG9mIGVycm9ycyB0byBzaG93IGluIElTUEMu ICovCi0gICAgIGludCBlcnJvckxpbWl0OwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BD X0xMVk1fMTBfMAotKwotICAgICAvKiBXaGVuIHRydWUsIGVuYWJsZSBjb21waWxlIHRpbWUgdHJh Y2luZy4gKi8KLSAgICAgYm9vbCBlbmFibGVUaW1lVHJhY2U7Ci0gCi0gICAgIC8qIFdoZW4gY29t cGlsZSB0aW1lIHRyYWNpbmcgaXMgZW5hYmxlZCwgc2V0IHRpbWUgZ3JhbnVsYXJpdHkuICovCi0g ICAgIGludCB0aW1lVHJhY2VHcmFudWxhcml0eTsKLS0jZW5kaWYKLSB9OwotIAotIGVudW0gewot ZGlmZiAtLWdpdCBhL3NyYy9pc3BjX3ZlcnNpb24uaCBiL3NyYy9pc3BjX3ZlcnNpb24uaAotaW5k ZXggZDc4MTM0N2ZkLi40MzRiMmQ2NzggMTAwNjQ0Ci0tLS0gYS9zcmMvaXNwY192ZXJzaW9uLmgK LSsrKyBiL3NyYy9pc3BjX3ZlcnNpb24uaAotQEAgLTQ0LDEzICs0NCwxMSBAQAotIAotICNkZWZp bmUgSVNQQ19MTFZNX1ZFUlNJT04gKExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwMDAwICsgTExWTV9W RVJTSU9OX01JTk9SICogMTAwKQotIAotLSNkZWZpbmUgSVNQQ19MTFZNXzhfMCA4MDAwMAotLSNk ZWZpbmUgSVNQQ19MTFZNXzlfMCA5MDAwMAotICNkZWZpbmUgSVNQQ19MTFZNXzEwXzAgMTAwMDAw Ci0gI2RlZmluZSBJU1BDX0xMVk1fMTFfMCAxMTAwMDAKLSAjZGVmaW5lIElTUENfTExWTV8xMl8w IDEyMDAwMAotIAotLSNkZWZpbmUgT0xERVNUX1NVUFBPUlRFRF9MTFZNIElTUENfTExWTV84XzAK LSsjZGVmaW5lIE9MREVTVF9TVVBQT1JURURfTExWTSBJU1BDX0xMVk1fMTBfMAotICNkZWZpbmUg TEFURVNUX1NVUFBPUlRFRF9MTFZNIElTUENfTExWTV8xMl8wCi0gCi0gI2lmZGVmIF9faXNwY19f eHN0cgotZGlmZiAtLWdpdCBhL3NyYy9tYWluLmNwcCBiL3NyYy9tYWluLmNwcAotaW5kZXggOGY2 NDMzMGNjLi41YzkyMGVhYmMgMTAwNjQ0Ci0tLS0gYS9zcmMvbWFpbi5jcHAKLSsrKyBiL3NyYy9t YWluLmNwcAotQEAgLTU1LDkgKzU1LDcgQEAKLSAjaW5jbHVkZSA8bGx2bS9TdXBwb3J0L1NpZ25h bHMuaD4KLSAjaW5jbHVkZSA8bGx2bS9TdXBwb3J0L1RhcmdldFJlZ2lzdHJ5Lmg+Ci0gI2luY2x1 ZGUgPGxsdm0vU3VwcG9ydC9UYXJnZXRTZWxlY3QuaD4KLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04g Pj0gSVNQQ19MTFZNXzEwXzAKLSAjaW5jbHVkZSA8bGx2bS9TdXBwb3J0L1Rvb2xPdXRwdXRGaWxl Lmg+Ci0tI2VuZGlmCi0gCi0gI2lmZGVmIElTUENfSE9TVF9JU19XSU5ET1dTCi0gI2RlZmluZSBz dHJjYXNlY21wIHN0cmljbXAKLUBAIC0xODEsMTEgKzE3OSw5IEBAIHN0YXRpYyB2b2lkIGxQcmlu dFZlcnNpb24oKSB7Ci0gICAgIHNucHJpbnRmKHRhcmdldEhlbHAsIHNpemVvZih0YXJnZXRIZWxw KSwgIlstLXRhcmdldC1vcz08b3M+XVx0XHRcdFNlbGVjdCB0YXJnZXQgT1MuICA8b3M+PXslc30i LAotICAgICAgICAgICAgICBnLT50YXJnZXRfcmVnaXN0cnktPmdldFN1cHBvcnRlZE9TZXMoKS5j X3N0cigpKTsKLSAgICAgUHJpbnRXaXRoV29yZEJyZWFrcyh0YXJnZXRIZWxwLCAyNCwgVGVybWlu YWxXaWR0aCgpLCBzdGRvdXQpOwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1f MTBfMAotICAgICBwcmludGYoIiAgICBbLS10aW1lLXRyYWNlXVx0XHRcdFR1cm4gb24gdGltZSBw cm9maWxlci4gR2VuZXJhdGVzIEpTT04gZmlsZSBiYXNlZCBvbiBvdXRwdXQgZmlsZW5hbWUuXG4i KTsKLSAgICAgcHJpbnRmKCIgICAgWy0tdGltZS10cmFjZS1ncmFudWxhcml0eT08dmFsdWU+XHRN aW5pbXVtIHRpbWUgZ3JhbnVsYXJpdHkgKGluIG1pY3Jvc2Vjb25kcykgdHJhY2VkIGJ5IHRpbWUg IgotICAgICAgICAgICAgInByb2ZpbGVyLlxuIik7Ci0tI2VuZGlmCi0gICAgIHByaW50ZigiICAg IFstLXZlcnNpb25dXHRcdFx0XHRQcmludCBpc3BjIHZlcnNpb25cbiIpOwotICNpZmRlZiBJU1BD X0dFTlhfRU5BQkxFRAotICAgICBwcmludGYoIiAgICBbLS12Yy1vcHRpb25zPTxcIi1vcHRpb24x IC1vcHRpb24yLi4uXCI+XVx0XHRcdFx0UGFzcyBhZGRpdGlvbmFsIG9wdGlvbnMgdG8gVmVjdG9y IENvbXBpbGVyIGJhY2tlbmRcbiIpOwotQEAgLTQ2Miw3ICs0NTgsNiBAQCBzdGF0aWMgdm9pZCBz ZXRDYWxsaW5nQ29udihWZWN0b3JDYWxsU3RhdHVzIHZlY3RvckNhbGwsIEFyY2ggYXJjaCkgewot ICAgICB9Ci0gfQotIAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAot IHN0YXRpYyB2b2lkIHdyaXRlQ29tcGlsZVRpbWVGaWxlKGNvbnN0IGNoYXIgKm91dEZpbGVOYW1l KSB7Ci0gICAgIGxsdm06OlNtYWxsU3RyaW5nPDEyOD4ganNvbkZpbGVOYW1lKG91dEZpbGVOYW1l KTsKLSAgICAganNvbkZpbGVOYW1lLmFwcGVuZCgiLmpzb24iKTsKLUBAIC00NzksNyArNDc0LDYg QEAgc3RhdGljIHZvaWQgd3JpdGVDb21waWxlVGltZUZpbGUoY29uc3QgY2hhciAqb3V0RmlsZU5h bWUpIHsKLSAgICAgb2YtPmtlZXAoKTsKLSAgICAgcmV0dXJuOwotIH0KLS0jZW5kaWYKLSAKLSBz dGF0aWMgc3RkOjpzZXQ8aW50PiBQYXJzaW5nUGhhc2VzKGNoYXIgKnN0YWdlcywgQXJnRXJyb3Jz ICZlcnJvckhhbmRsZXIpIHsKLSAgICAgY29uc3RleHByIGludCBwYXJzaW5nX2xpbWl0ID0gMTAw OwotQEAgLTc5MSwxMiArNzg1LDEwIEBAIGludCBtYWluKGludCBBcmdjLCBjaGFyICpBcmd2W10p IHsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9IGVsc2UgaWYgKCFzdHJuY21wKGFyZ3ZbaV0s ICItLWZvcmNlLWFsaWdubWVudD0iLCAxOCkpIHsKLSAgICAgICAgICAgICBnLT5mb3JjZUFsaWdu bWVudCA9IGF0b2koYXJndltpXSArIDE4KTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQ Q19MTFZNXzEwXzAKLSAgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLS10aW1l LXRyYWNlIikpIHsKLSAgICAgICAgICAgICBnLT5lbmFibGVUaW1lVHJhY2UgPSB0cnVlOwotICAg ICAgICAgfSBlbHNlIGlmICghc3RybmNtcChhcmd2W2ldLCAiLS10aW1lLXRyYWNlLWdyYW51bGFy aXR5PSIsIDI1KSkgewotICAgICAgICAgICAgIGctPnRpbWVUcmFjZUdyYW51bGFyaXR5ID0gYXRv aShhcmd2W2ldICsgMjUpOwotLSNlbmRpZgotICAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGFy Z3ZbaV0sICItLXdvZmYiKSB8fCAhc3RyY21wKGFyZ3ZbaV0sICItd29mZiIpKSB7Ci0gICAgICAg ICAgICAgZy0+ZGlzYWJsZVdhcm5pbmdzID0gdHJ1ZTsKLSAgICAgICAgICAgICBnLT5lbWl0UGVy Zldhcm5pbmdzID0gZmFsc2U7Ci1AQCAtMTA1OSw3ICsxMDUxLDYgQEAgaW50IG1haW4oaW50IEFy Z2MsIGNoYXIgKkFyZ3ZbXSkgewotIAotICAgICAvLyBUaGlzIG5lZWRzIHRvIGhhcHBlbiBhZnRl ciB0aGUgVGFyZ2V0T1MgaXMgZGVjaWRlZC4KLSAgICAgc2V0Q2FsbGluZ0NvbnYodmVjdG9yQ2Fs bCwgYXJjaCk7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAg IGlmIChnLT5lbmFibGVUaW1lVHJhY2UpIHsKLSAgICAgICAgIGxsdm06OnRpbWVUcmFjZVByb2Zp bGVySW5pdGlhbGl6ZShnLT50aW1lVHJhY2VHcmFudWxhcml0eSwgImlzcGMiKTsKLSAgICAgfQot QEAgLTEwNzcsOSArMTA2OCw1IEBAIGludCBtYWluKGludCBBcmdjLCBjaGFyICpBcmd2W10pIHsK LSAgICAgICAgIH0KLSAgICAgICAgIGxsdm06OnRpbWVUcmFjZVByb2ZpbGVyQ2xlYW51cCgpOwot ICAgICB9Ci0tI2Vsc2UKLS0gICAgaW50IHJldCA9IE1vZHVsZTo6Q29tcGlsZUFuZE91dHB1dChm aWxlLCBhcmNoLCBjcHUsIHRhcmdldHMsIGZsYWdzLCBvdCwgb3V0RmlsZU5hbWUsIGhlYWRlckZp bGVOYW1lLCBkZXBzRmlsZU5hbWUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGVwc1RhcmdldE5hbWUsIGhvc3RTdHViRmlsZU5hbWUsIGRldlN0dWJGaWxlTmFtZSk7 Ci0tI2VuZGlmCi0gICAgIHJldHVybiByZXQ7Ci0gfQotZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGUu Y3BwIGIvc3JjL21vZHVsZS5jcHAKLWluZGV4IGZlNzQ1MmRmMS4uYTg1ZmVjNzdhIDEwMDY0NAot LS0tIGEvc3JjL21vZHVsZS5jcHAKLSsrKyBiL3NyYy9tb2R1bGUuY3BwCi1AQCAtMTcwLDkgKzE3 MCw3IEBAIE1vZHVsZTo6TW9kdWxlKGNvbnN0IGNoYXIgKmZuKSB7Ci0gICAgIG1vZHVsZS0+c2V0 RGF0YUxheW91dChnLT50YXJnZXQtPmdldERhdGFMYXlvdXQoKS0+Z2V0U3RyaW5nUmVwcmVzZW50 YXRpb24oKSk7Ci0gCi0gICAgIGlmIChnLT5nZW5lcmF0ZURlYnVnZ2luZ1N5bWJvbHMpIHsKLS0j aWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgICAgIGxsdm06OlRp bWVUcmFjZVNjb3BlIFRpbWVTY29wZSgiQ3JlYXRlIERlYnVnIERhdGEiKTsKLS0jZW5kaWYKLSAg ICAgICAgIC8vIFRvIGVuYWJsZSBkZWJ1ZyBpbmZvcm1hdGlvbiBvbiBXaW5kb3dzLCB3ZSBoYXZl IHRvIGxldCBsbHZtIGtub3csIHRoYXQKLSAgICAgICAgIC8vIGRlYnVnIGluZm9ybWF0aW9uIHNo b3VsZCBiZSBlbWl0dGVkIGluIENvZGVWaWV3IGZvcm1hdC4KLSAgICAgICAgIGlmIChnLT50YXJn ZXRfb3MgPT0gVGFyZ2V0T1M6OndpbmRvd3MpIHsKLUBAIC0yMjYsMTAgKzIyNCw4IEBAIGV4dGVy biBZWV9CVUZGRVJfU1RBVEUgeXlfY3JlYXRlX2J1ZmZlcihGSUxFICosIGludCk7Ci0gZXh0ZXJu IHZvaWQgeXlfZGVsZXRlX2J1ZmZlcihZWV9CVUZGRVJfU1RBVEUpOwotIAotIGludCBNb2R1bGU6 OkNvbXBpbGVGaWxlKCkgewotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBf MAotICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBDb21waWxlRmlsZVRpbWVTY29wZSgKLSAgICAg ICAgICJDb21waWxlRmlsZSIsIGxsdm06OlN0cmluZ1JlZihmaWxlbmFtZSArICgiXyIgKyBzdGQ6 OnN0cmluZyhnLT50YXJnZXQtPkdldElTQVN0cmluZygpKSkpKTsKLS0jZW5kaWYKLSAgICAgZXh0 ZXJuIHZvaWQgUGFyc2VySW5pdCgpOwotICAgICBQYXJzZXJJbml0KCk7Ci0gCi1AQCAtMjM4LDE4 ICsyMzQsMTQgQEAgaW50IE1vZHVsZTo6Q29tcGlsZUZpbGUoKSB7Ci0gICAgIC8vIHZhcmlhYmxl ICdtJyB0byBiZSBpbml0aWFsaXplZCBhbmQgYXZhaWxhYmxlICh3aGljaCBpdCBpc24ndCB1bnRp bAotICAgICAvLyB0aGUgTW9kdWxlIGNvbnN0cnVjdG9yIHJldHVybnMuLi4pCi0gICAgIHsKLS0j aWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgICAgIGxsdm06OlRp bWVUcmFjZVNjb3BlIFRpbWVTY29wZSgiRGVmaW5lU3RkbGliIik7Ci0tI2VuZGlmCi0gICAgICAg ICBEZWZpbmVTdGRsaWIoc3ltYm9sVGFibGUsIGctPmN0eCwgbW9kdWxlLCBnLT5pbmNsdWRlU3Rk bGliKTsKLSAgICAgfQotIAotICAgICBib29sIHJ1blByZXByb2Nlc3NvciA9IGctPnJ1bkNQUDsK LSAKLSAgICAgaWYgKHJ1blByZXByb2Nlc3NvcikgewotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+ PSBJU1BDX0xMVk1fMTBfMAotICAgICAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgVGltZVNjb3Bl KCJGcm9udGVuZCBwYXJzZXIiKTsKLS0jZW5kaWYKLSAgICAgICAgIGlmICghSXNTdGRpbihmaWxl bmFtZSkpIHsKLSAgICAgICAgICAgICAvLyBUcnkgdG8gb3BlbiB0aGUgZmlsZSBmaXJzdCwgc2lu Y2Ugb3RoZXJ3aXNlIHdlIGNyYXNoIGluIHRoZQotICAgICAgICAgICAgIC8vIHByZXByb2Nlc3Nv ciBpZiB0aGUgZmlsZSBkb2Vzbid0IGV4aXN0LgotQEAgLTI2OCw5ICsyNjAsNyBAQCBpbnQgTW9k dWxlOjpDb21waWxlRmlsZSgpIHsKLSAgICAgICAgIHl5cGFyc2UoKTsKLSAgICAgICAgIHl5X2Rl bGV0ZV9idWZmZXIoc3RyYnVmKTsKLSAgICAgfSBlbHNlIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJ T04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIFRpbWVT Y29wZSgiRnJvbnRlbmQgcGFyc2VyIik7Ci0tI2VuZGlmCi0gICAgICAgICAvLyBObyBwcmVwcm9j ZXNzb3IsIGp1c3Qgb3BlbiB1cCB0aGUgZmlsZSBpZiBpdCdzIG5vdCBzdGRpbi4uCi0gICAgICAg ICBGSUxFICpmID0gTlVMTDsKLSAgICAgICAgIGlmIChJc1N0ZGluKGZpbGVuYW1lKSkgewotQEAg LTI5Nyw5ICsyODcsNyBAQCBpbnQgTW9kdWxlOjpDb21waWxlRmlsZSgpIHsKLSAKLSAgICAgaWYg KGRpQnVpbGRlcikKLSAgICAgICAgIGRpQnVpbGRlci0+ZmluYWxpemUoKTsKLS0jaWYgSVNQQ19M TFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUg VGltZVNjb3BlKCJPcHRpbWl6ZSIpOwotLSNlbmRpZgotICAgICBpZiAoZXJyb3JDb3VudCA9PSAw KQotICAgICAgICAgT3B0aW1pemUobW9kdWxlLCBnLT5vcHQubGV2ZWwpOwotIAotQEAgLTEyNDMs MTUgKzEyMzEsOCBAQCBib29sIE1vZHVsZTo6d3JpdGVPYmplY3RGaWxlT3JBc3NlbWJseShsbHZt OjpUYXJnZXRNYWNoaW5lICp0YXJnZXRNYWNoaW5lLCBsbHZtOgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm91dEZpbGVOYW1lKSB7Ci0gICAgIC8v IEZpZ3VyZSBvdXQgaWYgd2UncmUgZ2VuZXJhdGluZyBvYmplY3QgZmlsZSBvciBhc3NlbWJseSBv dXRwdXQsIGFuZAotICAgICAvLyBzZXQgYmluYXJ5IG91dHB1dCBmb3Igb2JqZWN0IGZpbGVzCi0t I2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENfTExWTV85XzAKLS0gICAgQXNzZXJ0KCFnLT50 YXJnZXQtPmlzR2VuWFRhcmdldCgpKTsKLS0gICAgbGx2bTo6VGFyZ2V0TWFjaGluZTo6Q29kZUdl bkZpbGVUeXBlIGZpbGVUeXBlID0KLS0gICAgICAgIChvdXRwdXRUeXBlID09IE9iamVjdCkgPyBs bHZtOjpUYXJnZXRNYWNoaW5lOjpDR0ZUX09iamVjdEZpbGUgOiBsbHZtOjpUYXJnZXRNYWNoaW5l OjpDR0ZUX0Fzc2VtYmx5RmlsZTsKLS0gICAgYm9vbCBiaW5hcnkgPSAoZmlsZVR5cGUgPT0gbGx2 bTo6VGFyZ2V0TWFjaGluZTo6Q0dGVF9PYmplY3RGaWxlKTsKLS0jZWxzZSAvLyBMTFZNIDEwLjAr Ci0gICAgIGxsdm06OkNvZGVHZW5GaWxlVHlwZSBmaWxlVHlwZSA9IChvdXRwdXRUeXBlID09IE9i amVjdCkgPyBsbHZtOjpDR0ZUX09iamVjdEZpbGUgOiBsbHZtOjpDR0ZUX0Fzc2VtYmx5RmlsZTsK LSAgICAgYm9vbCBiaW5hcnkgPSAoZmlsZVR5cGUgPT0gbGx2bTo6Q0dGVF9PYmplY3RGaWxlKTsK LS0jZW5kaWYKLSAKLSAgICAgbGx2bTo6c3lzOjpmczo6T3BlbkZsYWdzIGZsYWdzID0gYmluYXJ5 ID8gbGx2bTo6c3lzOjpmczo6Rl9Ob25lIDogbGx2bTo6c3lzOjpmczo6Rl9UZXh0OwotIAotQEAg LTIyMTksMTEgKzIyMDAsNyBAQCB2b2lkIE1vZHVsZTo6ZXhlY1ByZXByb2Nlc3Nvcihjb25zdCBj aGFyICppbmZpbGVuYW1lLCBsbHZtOjpyYXdfc3RyaW5nX29zdHJlYW0gKgotICAgICBpbnN0LnNl dFRhcmdldCh0YXJnZXQpOwotICAgICBpbnN0LmNyZWF0ZVNvdXJjZU1hbmFnZXIoaW5zdC5nZXRG aWxlTWFuYWdlcigpKTsKLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlf MAotLSAgICBjbGFuZzo6RnJvbnRlbmRJbnB1dEZpbGUgaW5wdXRGaWxlKGluZmlsZW5hbWUsIGNs YW5nOjpJbnB1dEtpbmQ6OlVua25vd24pOwotLSNlbHNlIC8vIExMVk0gMTAuMCsKLSAgICAgY2xh bmc6OkZyb250ZW5kSW5wdXRGaWxlIGlucHV0RmlsZShpbmZpbGVuYW1lLCBjbGFuZzo6SW5wdXRL aW5kKCkpOwotLSNlbmRpZgotIAotICAgICBpbnN0LkluaXRpYWxpemVTb3VyY2VNYW5hZ2VyKGlu cHV0RmlsZSk7Ci0gCi1AQCAtMjcyMiw5ICsyNjk5LDcgQEAgaW50IE1vZHVsZTo6Q29tcGlsZUFu ZE91dHB1dChjb25zdCBjaGFyICpzcmNGaWxlLCBBcmNoIGFyY2gsIGNvbnN0IGNoYXIgKmNwdSwg c3QKLSAKLSAgICAgICAgIG0gPSBuZXcgTW9kdWxlKHNyY0ZpbGUpOwotICAgICAgICAgaWYgKG0t PkNvbXBpbGVGaWxlKCkgPT0gMCkgewotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xM Vk1fMTBfMAotICAgICAgICAgICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIFRpbWVTY29wZSgiQmFj a2VuZCIpOwotLSNlbmRpZgotICNpZmRlZiBJU1BDX0dFTlhfRU5BQkxFRAotICAgICAgICAgICAg IGlmIChvdXRwdXRUeXBlID09IEFzbSB8fCBvdXRwdXRUeXBlID09IE9iamVjdCkgewotICAgICAg ICAgICAgICAgICBpZiAoZy0+dGFyZ2V0LT5pc0dlblhUYXJnZXQoKSkgewotQEAgLTI4NTUsOSAr MjgzMCw3IEBAIGludCBNb2R1bGU6OkNvbXBpbGVBbmRPdXRwdXQoY29uc3QgY2hhciAqc3JjRmls ZSwgQXJjaCBhcmNoLCBjb25zdCBjaGFyICpjcHUsIHN0Ci0gCi0gICAgICAgICAgICAgbSA9IG5l dyBNb2R1bGUoc3JjRmlsZSk7Ci0gICAgICAgICAgICAgaW50IGNvbXBpbGVGaWxlRXJyb3IgPSBt LT5Db21waWxlRmlsZSgpOwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBf MAotICAgICAgICAgICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIFRpbWVTY29wZSgiQmFja2VuZCIp OwotLSNlbmRpZgotICAgICAgICAgICAgIGlmIChjb21waWxlRmlsZUVycm9yID09IDApIHsKLSAg ICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBkaXNwYXRjaCBtb2R1bGUsIHVubGVzcyBhbHJl YWR5IGNyZWF0ZWQ7Ci0gICAgICAgICAgICAgICAgIC8vIGluIHRoZSBsYXR0ZXIgY2FzZSwganVz dCBkbyB0aGUgY2hlY2tpbmcKLWRpZmYgLS1naXQgYS9zcmMvbW9kdWxlLmggYi9zcmMvbW9kdWxl LmgKLWluZGV4IDYxZDNjZmVhMC4uNjAzMTI0ZDUwIDEwMDY0NAotLS0tIGEvc3JjL21vZHVsZS5o Ci0rKysgYi9zcmMvbW9kdWxlLmgKLUBAIC00Myw5ICs0Myw3IEBACi0gCi0gI2luY2x1ZGUgPGxs dm0vSVIvRGVidWdJbmZvLmg+Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExW TV8xMF8wCi0gI2luY2x1ZGUgPGxsdm0vU3VwcG9ydC9UaW1lUHJvZmlsZXIuaD4KLS0jZW5kaWYK LSAKLSAjaWZkZWYgSVNQQ19HRU5YX0VOQUJMRUQKLSAjaW5jbHVkZSAib2NsX2lnY19pbnRlcmZh Y2UvaWdjX29jbF9kZXZpY2VfY3R4LmgiCi1kaWZmIC0tZ2l0IGEvc3JjL29wdC5jcHAgYi9zcmMv b3B0LmNwcAotaW5kZXggYTY1NWE4MzQ0Li41YjFhYzdiNjMgMTAwNjQ0Ci0tLS0gYS9zcmMvb3B0 LmNwcAotKysrIGIvc3JjL29wdC5jcHAKLUBAIC02Niw2ICs2Niw3IEBACi0gI2luY2x1ZGUgPGxs dm0vSVIvSW5zdHJ1Y3Rpb25zLmg+Ci0gI2luY2x1ZGUgPGxsdm0vSVIvSW50cmluc2ljSW5zdC5o PgotICNpbmNsdWRlIDxsbHZtL0lSL0ludHJpbnNpY3MuaD4KLSsjaW5jbHVkZSA8bGx2bS9JUi9J bnRyaW5zaWNzWDg2Lmg+Ci0gI2luY2x1ZGUgPGxsdm0vSVIvTGVnYWN5UGFzc01hbmFnZXIuaD4K LSAjaW5jbHVkZSA8bGx2bS9JUi9Nb2R1bGUuaD4KLSAjaW5jbHVkZSA8bGx2bS9JUi9QYXR0ZXJu TWF0Y2guaD4KLUBAIC04NSw5ICs4Niw2IEBACi0gI2luY2x1ZGUgPGxsdm0vVHJhbnNmb3Jtcy9T Y2FsYXIvSW5zdFNpbXBsaWZ5UGFzcy5oPgotICNpbmNsdWRlIDxsbHZtL1RyYW5zZm9ybXMvVXRp bHMuaD4KLSAjaW5jbHVkZSA8bGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0Jhc2ljQmxvY2tVdGlscy5o PgotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotLSNpbmNsdWRlIDxs bHZtL0lSL0ludHJpbnNpY3NYODYuaD4KLS0jZW5kaWYKLSAKLSAjaWZkZWYgSVNQQ19IT1NUX0lT X0xJTlVYCi0gI2luY2x1ZGUgPGFsbG9jYS5oPgotQEAgLTEwMDMsMTAgKzEwMDEsNyBAQCBib29s IEludHJpbnNpY3NPcHQ6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewot ICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICBhbGlnbiA9IGNhbGxJ bnN0LT5nZXRDYWxsZWRGdW5jdGlvbigpID09IGF2eE1hc2tlZExvYWQzMiA/IDQgOiA4OwotICAg ICAgICAgICAgICAgICBuYW1lID0gTExWTUdldE5hbWUoY2FsbEluc3QtPmdldEFyZ09wZXJhbmQo MCksICJfbG9hZCIpOwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8PSBJU1BDX0xMVk1fOV8wCi0t ICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICpsb2FkSW5zdCA9Ci0tICAgICAgICAg ICAgICAgICAgICBuZXcgbGx2bTo6TG9hZEluc3QoY2FzdFB0ciwgbmFtZSwgZmFsc2UgLyogbm90 IHZvbGF0aWxlICovLCBhbGlnbiwgKGxsdm06Okluc3RydWN0aW9uICopTlVMTCk7Ci0tI2VsaWYg SVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzEwXzAKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJ T04gPT0gSVNQQ19MTFZNXzEwXzAKLSAgICAgICAgICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24g KmxvYWRJbnN0ID0gbmV3IGxsdm06OkxvYWRJbnN0KGNhc3RQdHIsIG5hbWUsIGZhbHNlIC8qIG5v dCB2b2xhdGlsZSAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06Ok1heWJlQWxpZ24oYWxpZ24pLCAobGx2bTo6 SW5zdHJ1Y3Rpb24gKilOVUxMKTsKLSAjZWxzZQotQEAgLTEwNDMsMTMgKzEwMzgsOCBAQCBib29s IEludHJpbnNpY3NPcHQ6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewot ICAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSBnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFs aWdubWVudCgpOwotICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICBh bGlnbiA9IGNhbGxJbnN0LT5nZXRDYWxsZWRGdW5jdGlvbigpID09IGF2eE1hc2tlZFN0b3JlMzIg PyA0IDogODsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAg ICAgICAgICAgICBsbHZtOjpTdG9yZUluc3QgKnN0b3JlSW5zdCA9IG5ldyBsbHZtOjpTdG9yZUlu c3QocnZhbHVlLCBjYXN0UHRyLCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxMKTsKLS0gICAgICAg ICAgICAgICAgc3RvcmVJbnN0LT5zZXRBbGlnbm1lbnQoYWxpZ24pOwotLSNlbHNlCi0gICAgICAg ICAgICAgICAgIGxsdm06OlN0b3JlSW5zdCAqc3RvcmVJbnN0ID0gbmV3IGxsdm06OlN0b3JlSW5z dChydmFsdWUsIGNhc3RQdHIsIChsbHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs bHZtOjpNYXliZUFsaWduKGFsaWduKS52YWx1ZU9yT25lKCkpOwotLSNlbmRpZgotICAgICAgICAg ICAgICAgICBsQ29weU1ldGFkYXRhKHN0b3JlSW5zdCwgY2FsbEluc3QpOwotICAgICAgICAgICAg ICAgICBsbHZtOjpSZXBsYWNlSW5zdFdpdGhJbnN0KGNhbGxJbnN0LCBzdG9yZUluc3QpOwotIAot QEAgLTEwNjYsOSArMTA1Niw3IEBAIGJvb2wgSW50cmluc2ljc09wdDo6cnVuT25CYXNpY0Jsb2Nr KGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gCi0gYm9vbCBJbnRyaW5zaWNzT3B0OjpydW5PbkZ1 bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49 IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiSW50 cmluc2ljc09wdDo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAgICAg Ym9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwotICAgICBmb3IgKGxsdm06OkJhc2ljQmxvY2sgJkJC IDogRikgewotICAgICAgICAgbW9kaWZpZWRBbnkgfD0gcnVuT25CYXNpY0Jsb2NrKEJCKTsKLUBA IC0xMjM5LDkgKzEyMjcsNyBAQCBib29sIEluc3RydWN0aW9uU2ltcGxpZnlQYXNzOjpydW5PbkJh c2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAKLSBib29sIEluc3RydWN0aW9uU2lt cGxpZnlQYXNzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElT UENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNj b3BlIEZ1bmNTY29wZSgiSW5zdHJ1Y3Rpb25TaW1wbGlmeVBhc3M6OnJ1bk9uRnVuY3Rpb24iLCBG LmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJvb2wgbW9kaWZpZWRBbnkgPSBmYWxzZTsKLSAg ICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZCQiA6IEYpIHsKLSAgICAgICAgIG1vZGlmaWVkQW55 IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1AQCAtMjk3NCwxNiArMjk2MCwxMCBAQCBzdGF0aWMg Ym9vbCBsSW1wcm92ZU1hc2tlZFN0b3JlKGxsdm06OkNhbGxJbnN0ICpjYWxsSW5zdCkgewotIAot ICAgICAgICAgICAgIGx2YWx1ZSA9IG5ldyBsbHZtOjpCaXRDYXN0SW5zdChsdmFsdWUsIHB0clR5 cGUsICJsdmFsdWVfdG9fcHRyX3R5cGUiLCBjYWxsSW5zdCk7Ci0gICAgICAgICAgICAgbENvcHlN ZXRhZGF0YShsdmFsdWUsIGNhbGxJbnN0KTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQ Q19MTFZNXzlfMAotLSAgICAgICAgICAgIHN0b3JlID0KLS0gICAgICAgICAgICAgICAgbmV3IGxs dm06OlN0b3JlSW5zdChydmFsdWUsIGx2YWx1ZSwgZmFsc2UgLyogbm90IHZvbGF0aWxlICovLAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGctPm9wdC5mb3JjZUFsaWduZWRN ZW1vcnkgPyBnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdubWVudCgpIDogaW5mby0+YWxp Z24pOwotLSNlbHNlCi0gICAgICAgICAgICAgc3RvcmUgPSBuZXcgbGx2bTo6U3RvcmVJbnN0KAot ICAgICAgICAgICAgICAgICBydmFsdWUsIGx2YWx1ZSwgZmFsc2UgLyogbm90IHZvbGF0aWxlICov LAotICAgICAgICAgICAgICAgICBsbHZtOjpNYXliZUFsaWduKGctPm9wdC5mb3JjZUFsaWduZWRN ZW1vcnkgPyBnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdubWVudCgpIDogaW5mby0+YWxp Z24pCi0gICAgICAgICAgICAgICAgICAgICAudmFsdWVPck9uZSgpKTsKLS0jZW5kaWYKLSAgICAg ICAgIH0KLSAgICAgICAgIGlmIChzdG9yZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgbENvcHlN ZXRhZGF0YShzdG9yZSwgY2FsbEluc3QpOwotQEAgLTMwNTksMTEgKzMwMzksNyBAQCBzdGF0aWMg Ym9vbCBsSW1wcm92ZU1hc2tlZExvYWQobGx2bTo6Q2FsbEluc3QgKmNhbGxJbnN0LCBsbHZtOjpC YXNpY0Jsb2NrOjppdGVyYQotICAgICAgICAgewotICAgICAgICAgICAgIGxsdm06OlR5cGUgKnB0 clR5cGUgPSBsbHZtOjpQb2ludGVyVHlwZTo6Z2V0KGNhbGxJbnN0LT5nZXRUeXBlKCksIDApOwot ICAgICAgICAgICAgIHB0ciA9IG5ldyBsbHZtOjpCaXRDYXN0SW5zdChwdHIsIHB0clR5cGUsICJw dHJfY2FzdF9mb3JfbG9hZCIsIGNhbGxJbnN0KTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0g SVNQQ19MTFZNXzlfMAotLSAgICAgICAgICAgIGxvYWQgPSBuZXcgbGx2bTo6TG9hZEluc3QocHRy LCBjYWxsSW5zdC0+Z2V0TmFtZSgpLCBmYWxzZSAvKiBub3Qgdm9sYXRpbGUgKi8sCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnLT5vcHQuZm9yY2VBbGlnbmVkTWVtb3J5 ID8gZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1lbnQoKSA6IGluZm8tPmFsaWduLAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxsdm06Okluc3RydWN0aW9u ICopTlVMTCk7Ci0tI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzEwXzAKLSsj aWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzEwXzAKLSAgICAgICAgICAgICBsb2Fk ID0gbmV3IGxsdm06OkxvYWRJbnN0KAotICAgICAgICAgICAgICAgICBwdHIsIGNhbGxJbnN0LT5n ZXROYW1lKCksIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywKLSAgICAgICAgICAgICAgICAgbGx2 bTo6TWF5YmVBbGlnbihnLT5vcHQuZm9yY2VBbGlnbmVkTWVtb3J5ID8gZy0+dGFyZ2V0LT5nZXRO YXRpdmVWZWN0b3JBbGlnbm1lbnQoKSA6IGluZm8tPmFsaWduKQotQEAgLTMxMjksOSArMzEwNSw3 IEBAIGJvb2wgSW1wcm92ZU1lbW9yeU9wc1Bhc3M6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNp Y0Jsb2NrICZiYikgewotIAotIGJvb2wgSW1wcm92ZU1lbW9yeU9wc1Bhc3M6OnJ1bk9uRnVuY3Rp b24obGx2bTo6RnVuY3Rpb24gJkYpIHsKLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQ Q19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Njb3BlKCJJbXByb3Zl TWVtb3J5T3BzUGFzczo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAg ICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwotICAgICBmb3IgKGxsdm06OkJhc2ljQmxvY2sg JkJCIDogRikgewotICAgICAgICAgbW9kaWZpZWRBbnkgfD0gcnVuT25CYXNpY0Jsb2NrKEJCKTsK LUBAIC0zNDI0LDkgKzMzOTgsNyBAQCBsbHZtOjpWYWx1ZSAqbEdFUEFuZExvYWQobGx2bTo6VmFs dWUgKmJhc2VQdHIsIGludDY0X3Qgb2Zmc2V0LCBpbnQgYWxpZ24sIGxsdm06OgotICAgICAgICAg ICAgICAgICAgICAgICAgICBsbHZtOjpUeXBlICp0eXBlKSB7Ci0gICAgIGxsdm06OlZhbHVlICpw dHIgPSBsR0VQSW5zdChiYXNlUHRyLCBMTFZNSW50NjQob2Zmc2V0KSwgIm5ld19iYXNlIiwgaW5z ZXJ0QmVmb3JlKTsKLSAgICAgcHRyID0gbmV3IGxsdm06OkJpdENhc3RJbnN0KHB0ciwgbGx2bTo6 UG9pbnRlclR5cGU6OmdldCh0eXBlLCAwKSwgInB0cl9jYXN0IiwgaW5zZXJ0QmVmb3JlKTsKLS0j aWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICByZXR1cm4gbmV3IGxs dm06OkxvYWRJbnN0KHB0ciwgImdhdGhlcl9sb2FkIiwgZmFsc2UgLyogbm90IHZvbGF0aWxlICov LCBhbGlnbiwgaW5zZXJ0QmVmb3JlKTsKLS0jZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BD X0xMVk1fMTBfMAotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTBfMAotICAg ICByZXR1cm4gbmV3IGxsdm06OkxvYWRJbnN0KHB0ciwgImdhdGhlcl9sb2FkIiwgZmFsc2UgLyog bm90IHZvbGF0aWxlICovLCBsbHZtOjpNYXliZUFsaWduKGFsaWduKSwgaW5zZXJ0QmVmb3JlKTsK LSAjZWxzZSAvLyBMTFZNIDExLjArCi0gICAgIHJldHVybiBuZXcgbGx2bTo6TG9hZEluc3QobGx2 bTo6ZHluX2Nhc3Q8bGx2bTo6UG9pbnRlclR5cGU+KHB0ci0+Z2V0VHlwZSgpKS0+Z2V0UG9pbnRl ckVsZW1lbnRUeXBlKCksIHB0ciwKLUBAIC00MTM1LDkgKzQxMDcsNyBAQCBib29sIEdhdGhlckNv YWxlc2NlUGFzczo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gCi0g Ym9vbCBHYXRoZXJDb2FsZXNjZVBhc3M6OnJ1bk9uRnVuY3Rpb24obGx2bTo6RnVuY3Rpb24gJkYp IHsKLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2 bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Njb3BlKCJHYXRoZXJDb2FsZXNjZVBhc3M6OnJ1bk9uRnVu Y3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJvb2wgbW9kaWZpZWRBbnkgPSBm YWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZCQiA6IEYpIHsKLSAgICAgICAgIG1v ZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1AQCAtNDQ2Nyw5ICs0NDM3LDcgQEAg Ym9vbCBSZXBsYWNlUHNldWRvTWVtb3J5T3BzUGFzczo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJh c2ljQmxvY2sgJmJiKSB7Ci0gCi0gYm9vbCBSZXBsYWNlUHNldWRvTWVtb3J5T3BzUGFzczo6cnVu T25GdW5jdGlvbihsbHZtOjpGdW5jdGlvbiAmRikgewotIAotLSNpZiBJU1BDX0xMVk1fVkVSU0lP TiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBGdW5jU2NvcGUo IlJlcGxhY2VQc2V1ZG9NZW1vcnlPcHNQYXNzOjpydW5PbkZ1bmN0aW9uIiwgRi5nZXROYW1lKCkp OwotLSNlbmRpZgotICAgICBib29sIG1vZGlmaWVkQW55ID0gZmFsc2U7Ci0gICAgIGZvciAobGx2 bTo6QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAgICAgICBtb2RpZmllZEFueSB8PSBydW5PbkJh c2ljQmxvY2soQkIpOwotQEAgLTQ1NzMsOSArNDU0MSw3IEBAIGJvb2wgSXNDb21waWxlVGltZUNv bnN0YW50UGFzczo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gCi0g Ym9vbCBJc0NvbXBpbGVUaW1lQ29uc3RhbnRQYXNzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0 aW9uICZGKSB7Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0g ICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiSXNDb21waWxlVGltZUNvbnN0YW50 UGFzczo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAgICAgYm9vbCBt b2RpZmllZEFueSA9IGZhbHNlOwotICAgICBmb3IgKGxsdm06OkJhc2ljQmxvY2sgJkJCIDogRikg ewotICAgICAgICAgbW9kaWZpZWRBbnkgfD0gcnVuT25CYXNpY0Jsb2NrKEJCKTsKLUBAIC01MjAx LDkgKzUxNjcsNyBAQCBib29sIFBlZXBob2xlUGFzczo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJh c2ljQmxvY2sgJmJiKSB7Ci0gCi0gYm9vbCBQZWVwaG9sZVBhc3M6OnJ1bk9uRnVuY3Rpb24obGx2 bTo6RnVuY3Rpb24gJkYpIHsKLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZN XzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Njb3BlKCJQZWVwaG9sZVBhc3M6 OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJvb2wgbW9kaWZp ZWRBbnkgPSBmYWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZCQiA6IEYpIHsKLSAg ICAgICAgIG1vZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1AQCAtNTI5OSw5ICs1 MjYzLDcgQEAgYm9vbCBSZXBsYWNlU3RkbGliU2hpZnRQYXNzOjpydW5PbkJhc2ljQmxvY2sobGx2 bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAKLSBib29sIFJlcGxhY2VTdGRsaWJTaGlmdFBhc3M6OnJ1 bk9uRnVuY3Rpb24obGx2bTo6RnVuY3Rpb24gJkYpIHsKLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJ T04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Njb3Bl KCJSZXBsYWNlU3RkbGliU2hpZnRQYXNzOjpydW5PbkZ1bmN0aW9uIiwgRi5nZXROYW1lKCkpOwot LSNlbmRpZgotICAgICBib29sIG1vZGlmaWVkQW55ID0gZmFsc2U7Ci0gICAgIGZvciAobGx2bTo6 QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAgICAgICBtb2RpZmllZEFueSB8PSBydW5PbkJhc2lj QmxvY2soQkIpOwotQEAgLTUzOTksOSArNTM2MSw3IEBAIGxsdm06Okluc3RydWN0aW9uICpGaXhC b29sZWFuU2VsZWN0UGFzczo6Zml4U2VsZWN0KGxsdm06OlNlbGVjdEluc3QgKnNlbCwgbGx2bTo6 Ci0gfQotIAotIGJvb2wgRml4Qm9vbGVhblNlbGVjdFBhc3M6OnJ1bk9uRnVuY3Rpb24obGx2bTo6 RnVuY3Rpb24gJkYpIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAK LSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Njb3BlKCJGaXhCb29sZWFuU2VsZWN0UGFz czo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAgICAgYm9vbCBtb2Rp ZmllZEFueSA9IGZhbHNlOwotIAotICAgICByZXR1cm4gbW9kaWZpZWRBbnk7Ci1AQCAtNTk2NCw5 ICs1OTI0LDcgQEAgYm9vbCBHZW5YR2F0aGVyQ29hbGVzY2luZzo6cnVuT25CYXNpY0Jsb2NrKGxs dm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gfQotIAotIGJvb2wgR2VuWEdhdGhlckNvYWxlc2Npbmc6 OnJ1bk9uRnVuY3Rpb24obGx2bTo6RnVuY3Rpb24gJkYpIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJ T04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Njb3Bl KCJHZW5YR2F0aGVyQ29hbGVzY2luZzo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0j ZW5kaWYKLSAgICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwotICAgICBmb3IgKGxsdm06OkJh c2ljQmxvY2sgJkJCIDogRikgewotICAgICAgICAgbW9kaWZpZWRBbnkgfD0gcnVuT25CYXNpY0Js b2NrKEJCKTsKLUBAIC02MTEzLDkgKzYwNzEsNyBAQCBib29sIFByb21vdGVUb1ByaXZhdGVNZW1v cnlQYXNzOjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAKLSBib29s IFByb21vdGVUb1ByaXZhdGVNZW1vcnlQYXNzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9u ICZGKSB7Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAg IGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiUHJvbW90ZVRvUHJpdmF0ZU1lbW9yeVBh c3M6OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJvb2wgbW9k aWZpZWRBbnkgPSBmYWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZCQiA6IEYpIHsK LSAgICAgICAgIG1vZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1AQCAtNjE4MSw5 ICs2MTM3LDcgQEAgYm9vbCBSZXBsYWNlTExWTUludHJpbnNpY3M6OnJ1bk9uQmFzaWNCbG9jayhs bHZtOjpCYXNpY0Jsb2NrICZiYikgewotIAotIGJvb2wgUmVwbGFjZUxMVk1JbnRyaW5zaWNzOjpy dW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElTUENfTExWTV9WRVJT SU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29w ZSgiUmVwbGFjZUxMVk1JbnRyaW5zaWNzOjpydW5PbkZ1bmN0aW9uIiwgRi5nZXROYW1lKCkpOwot LSNlbmRpZgotICAgICBib29sIG1vZGlmaWVkQW55ID0gZmFsc2U7Ci0gICAgIGZvciAobGx2bTo6 QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAgICAgICBtb2RpZmllZEFueSB8PSBydW5PbkJhc2lj QmxvY2soQkIpOwotQEAgLTYyNzgsOSArNjIzMiw3IEBAIGJvb2wgUmVwbGFjZVVuc3VwcG9ydGVk SW5zdHM6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotIAotIGJvb2wg UmVwbGFjZVVuc3VwcG9ydGVkSW5zdHM6OnJ1bk9uRnVuY3Rpb24obGx2bTo6RnVuY3Rpb24gJkYp IHsKLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2 bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Njb3BlKCJSZXBsYWNlVW5zdXBwb3J0ZWRJbnN0czo6cnVu T25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAgICAgYm9vbCBtb2RpZmllZEFu eSA9IGZhbHNlOwotICAgICBmb3IgKGxsdm06OkJhc2ljQmxvY2sgJkJCIDogRikgewotICAgICAg ICAgbW9kaWZpZWRBbnkgfD0gcnVuT25CYXNpY0Jsb2NrKEJCKTsKLUBAIC02MzY5LDkgKzYzMjEs NyBAQCBib29sIENoZWNrVW5zdXBwb3J0ZWRJbnN0czo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJh c2ljQmxvY2sgJmJiKSB7Ci0gfQotIAotIGJvb2wgQ2hlY2tVbnN1cHBvcnRlZEluc3RzOjpydW5P bkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49 IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiQ2hl Y2tVbnN1cHBvcnRlZEluc3RzOjpydW5PbkZ1bmN0aW9uIiwgRi5nZXROYW1lKCkpOwotLSNlbmRp ZgotICAgICBib29sIG1vZGlmaWVkQW55ID0gZmFsc2U7Ci0gICAgIGZvciAobGx2bTo6QmFzaWNC bG9jayAmQkIgOiBGKSB7Ci0gICAgICAgICBtb2RpZmllZEFueSB8PSBydW5PbkJhc2ljQmxvY2so QkIpOwotQEAgLTY0NDAsOSArNjM5MCw3IEBAIGJvb2wgTWFuZ2xlT3BlbkNMQnVpbHRpbnM6OnJ1 bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotIH0KLSAKLSBib29sIE1hbmds ZU9wZW5DTEJ1aWx0aW5zOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0tI2lm IElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFj ZVNjb3BlIEZ1bmNTY29wZSgiTWFuZ2xlT3BlbkNMQnVpbHRpbnM6OnJ1bk9uRnVuY3Rpb24iLCBG LmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJvb2wgbW9kaWZpZWRBbnkgPSBmYWxzZTsKLSAg ICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZCQiA6IEYpIHsKLSAgICAgICAgIG1vZGlmaWVkQW55 IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1AQCAtNjgyOCw5ICs2Nzc2LDcgQEAgYm9vbCBGaXhB ZGRyZXNzU3BhY2U6OnJ1bk9uRnVuY3Rpb24obGx2bTo6RnVuY3Rpb24gJkYpIHsKLSAgICAgLy8g VHJhbnNmb3JtYXRpb25zIGFyZSBjb3JyZWN0IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIG5vdCBpbnRl cm5hbC4KLSAgICAgLy8gVGhpcyBpcyBkdWUgdG8gYWRkcmVzcyBzcGFjZSBjYWxjdWxhdGlvbiBh bGdvcml0aG0uCi0gICAgIC8vIFRPRE86IHByb2JsZW1zIGNhbiBiZSBtZXQgaW4gY2FzZSBvZiBT dGFjayBDYWxscwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAg ICBsbHZtOjpUaW1lVHJhY2VTY29wZSBGdW5jU2NvcGUoIkZpeEFkZHJlc3NTcGFjZTo6cnVuT25G dW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAgICAgaWYgKEYuZ2V0TGlua2FnZSgp ID09IGxsdm06Okdsb2JhbFZhbHVlOjpMaW5rYWdlVHlwZXM6OkludGVybmFsTGlua2FnZSkKLSAg ICAgICAgIHJldHVybiBmYWxzZTsKLSAKLUBAIC02ODU0LDkgKzY4MDAsNyBAQCBjbGFzcyBEZW1v dGVQSElzIDogcHVibGljIGxsdm06OkZ1bmN0aW9uUGFzcyB7Ci0gY2hhciBEZW1vdGVQSElzOjpJ RCA9IDA7Ci0gCi0gYm9vbCBEZW1vdGVQSElzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9u ICZGKSB7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxs dm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiRGVtb3RlUEhJczo6cnVuT25GdW5jdGlvbiIs IEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAgICAgaWYgKEYuaXNEZWNsYXJhdGlvbigpIHx8IHNr aXBGdW5jdGlvbihGKSkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgc3RkOjp2ZWN0b3I8 bGx2bTo6SW5zdHJ1Y3Rpb24gKj4gV29ya0xpc3Q7Ci1kaWZmIC0tZ2l0IGEvc3JjL3R5cGUuY3Bw IGIvc3JjL3R5cGUuY3BwCi1pbmRleCA2ODhhNGU4NzQuLmZhMGNiMDRkYiAxMDA2NDQKLS0tLSBh L3NyYy90eXBlLmNwcAotKysrIGIvc3JjL3R5cGUuY3BwCi1AQCAtMTgyMiwxNCArMTgyMiwxMCBA QCBsbHZtOjpESVR5cGUgKlN0cnVjdFR5cGU6OkdldERJVHlwZShsbHZtOjpESVNjb3BlICpzY29w ZSkgY29uc3QgewotICAgICBsbHZtOjpESUZpbGUgKmRpRmlsZSA9IHBvcy5HZXRESUZpbGUoKTsK LSAgICAgbGx2bTo6RElOYW1lc3BhY2UgKmRpU3BhY2UgPSBwb3MuR2V0RElOYW1lc3BhY2UoKTsK LSAgICAgcmV0dXJuIG0tPmRpQnVpbGRlci0+Y3JlYXRlU3RydWN0VHlwZShkaVNwYWNlLCBHZXRT dHJpbmcoKSwgZGlGaWxlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBvcy5maXJzdF9saW5lLCAgICAgICAgICAvLyBMaW5lIG51bWJlcgotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dC0+Z2V0U2l6ZUluQml0cygpLCAv LyBTaXplIGluIGJpdHMKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dC0+Z2V0QWxp Z25tZW50KCkgKiA4LCAvLyBBbGlnbm1lbnQgaW4gYml0cwotLSNlbHNlICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMTFZN IDEwLjArCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zLmZp cnN0X2xpbmUsICAgICAgICAgICAgICAgICAgICAgLy8gTGluZSBudW1iZXIKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQtPmdldFNpemVJbkJpdHMoKSwg ICAgICAgICAgICAvLyBTaXplIGluIGJpdHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsYXlvdXQtPmdldEFsaWdubWVudCgpLnZhbHVlKCkgKiA4LCAvLyBBbGln bm1lbnQgaW4gYml0cwotLSNlbmRpZgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxsdm06OkRJTm9kZTo6RmxhZ1plcm8sIC8vIEZsYWdzCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6RElOb2RlOjpGbGFnWmVybywgICAg ICAgICAgICAgLy8gRmxhZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBOVUxMLCBlbGVtZW50cyk7Ci0gfQotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL2xpdC10ZXN0 cy8xNzcxLmlzcGMgYi90ZXN0cy9saXQtdGVzdHMvMTc3MS5pc3BjCi1pbmRleCA5ODA2NGQ4NGQu LjRmZWI3M2RkNyAxMDA2NDQKLS0tLSBhL3Rlc3RzL2xpdC10ZXN0cy8xNzcxLmlzcGMKLSsrKyBi L3Rlc3RzL2xpdC10ZXN0cy8xNzcxLmlzcGMKLUBAIC01LDcgKzUsNiBAQAotIC8vIFJVTjogJXtp c3BjfSAlcyAtLXRhcmdldD1zc2U0LWkxNng4IC0tZW1pdC1hc20gLW8gLSB8IEZpbGVDaGVjayAl cyAtY2hlY2stcHJlZml4PUNIRUNLU1NFNF9JMTZYOAotIC8vIFJVTjogJXtpc3BjfSAlcyAtLXRh cmdldD1zc2U0LWk4eDE2IC0tZW1pdC1hc20gLW8gLSB8IEZpbGVDaGVjayAlcyAtY2hlY2stcHJl Zml4PUNIRUNLU1NFNF9JOFgxNgotIAotLS8vIFJFUVVJUkVTOiBMTFZNXzEwXzArCi0gLy8gUkVR VUlSRVM6IFg4Nl9FTkFCTEVECi0gCi0gLy8gQ0hFQ0tBVlgyX0kzMlg4OiB7e1thLXpdKnhvclth LXpdKn19ICAleG1tMCwgJXhtbTAsICV4bW0wCi1kaWZmIC0tZ2l0IGEvdGVzdHMvbGl0LXRlc3Rz LzE4NDQuaXNwYyBiL3Rlc3RzL2xpdC10ZXN0cy8xODQ0LmlzcGMKLWluZGV4IDc5M2E4ODY2Yy4u MTg5ZWRmNGMzIDEwMDY0NAotLS0tIGEvdGVzdHMvbGl0LXRlc3RzLzE4NDQuaXNwYwotKysrIGIv dGVzdHMvbGl0LXRlc3RzLzE4NDQuaXNwYwotQEAgLTYsOSArNiw2IEBACi0gCi0gLy8gUkVRVUlS RVM6IFg4Nl9FTkFCTEVECi0gCi0tLy8gSXQgZG9lc24ndCB3b3JrIGZvciBhbnl0aGluZyBlYXJs aWVyIHRoYW4gMTAuMCwgYnV0IGl0IHdpbGwgbm90IGJlIGZpeGVkLCBzbyBkb24ndCBydW4uCi0t Ly8gUkVRVUlSRVM6IExMVk1fMTBfMCsKLS0KLSBleHRlcm4gdW5pZm9ybSB1bnNpZ25lZCBpbnQ2 NCB2YXJfNjsKLSBleHRlcm4gdW5pZm9ybSB1bnNpZ25lZCBpbnQxNiB2YXJfMTE7Ci0gZXh0ZXJu IHVuaWZvcm0gYm9vbCBhcnJfMjAxIFsxXSBbMTVdIFsyMF07Ci1kaWZmIC0tZ2l0IGEvdGVzdHMv bGl0LXRlc3RzLzE5MjYuaXNwYyBiL3Rlc3RzL2xpdC10ZXN0cy8xOTI2LmlzcGMKLWluZGV4IDcw ZjdjYzNjMi4uNzkyMWM5MWE2IDEwMDY0NAotLS0tIGEvdGVzdHMvbGl0LXRlc3RzLzE5MjYuaXNw YwotKysrIGIvdGVzdHMvbGl0LXRlc3RzLzE5MjYuaXNwYwotQEAgLTIsOCArMiw2IEBACi0gLy8g UlVOOiBjYXQgJVQvMTkyNi5vLmpzb24gXAotIC8vIFJVTjogICB8IEZpbGVDaGVjayAlcwotIAot LS8vIFJFUVVJUkVTOiBMTFZNXzEwXzArCi0tCi0gLy8gQ0hFQ0s6ICJ0cmFjZUV2ZW50cyIKLSAv LyBDSEVDSzogImRldGFpbCIKLSBleHBvcnQgdW5pZm9ybSBpbnQgZm9vKHVuaWZvcm0gaW50IGFb XSwgdW5pZm9ybSBpbnQgY291bnQpIHsKLWRpZmYgLS1naXQgYS90ZXN0cy9saXQtdGVzdHMvY3B1 c194ODYuaXNwYyBiL3Rlc3RzL2xpdC10ZXN0cy9jcHVzX3g4Ni5pc3BjCi1pbmRleCA1MTZlZmRk NGMuLjRkNjAxODZmNiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2xpdC10ZXN0cy9jcHVzX3g4Ni5pc3Bj Ci0rKysgYi90ZXN0cy9saXQtdGVzdHMvY3B1c194ODYuaXNwYwotQEAgLTI0LDYgKzI0LDggQEAK LSAvLzsgUlVOOiAle2lzcGN9ICVzIC1vICV0Lm8gLS1ub3N0ZGxpYiAtLXRhcmdldD1zc2UyLWkz Mng0IC0tY3B1PWljbAotIC8vOyBSVU46ICV7aXNwY30gJXMgLW8gJXQubyAtLW5vc3RkbGliIC0t dGFyZ2V0PXNzZTItaTMyeDQgLS1jcHU9aWNlbGFrZS1zZXJ2ZXIKLSAvLzsgUlVOOiAle2lzcGN9 ICVzIC1vICV0Lm8gLS1ub3N0ZGxpYiAtLXRhcmdldD1zc2UyLWkzMng0IC0tY3B1PWljeAotKy8v OyBSVU46ICV7aXNwY30gJXMgLW8gJXQubyAtLW5vc3RkbGliIC0tdGFyZ2V0PXNzZTItaTMyeDQg LS1jcHU9dGlnZXJsYWtlCi0rLy87IFJVTjogJXtpc3BjfSAlcyAtbyAldC5vIC0tbm9zdGRsaWIg LS10YXJnZXQ9c3NlMi1pMzJ4NCAtLWNwdT10Z2wKLSAKLSAvLyBSRVFVSVJFUzogWDg2X0VOQUJM RUQKLSAKLWRpZmYgLS1naXQgYS90ZXN0cy9saXQtdGVzdHMvY3B1c194ODZfbGx2bTEwLmlzcGMg Yi90ZXN0cy9saXQtdGVzdHMvY3B1c194ODZfbGx2bTEwLmlzcGMKLWRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAotaW5kZXggZWYwMDAwMGU1Li4wMDAwMDAwMDAKLS0tLSBhL3Rlc3RzL2xpdC10ZXN0 cy9jcHVzX3g4Nl9sbHZtMTAuaXNwYwotKysrIC9kZXYvbnVsbAotQEAgLTEsMTEgKzAsMCBAQAot LS8vIFRoZSB0ZXN0IGNoZWNrcyB0aGF0IGNwdSBkZWZpbml0aW9ucyAoaW5jbHVkaW5nIGFsbCBz eW5vbnltcykgYXJlIHN1Y2Nlc3NmdWxseSBjb25zdW1lZCBieSBjb21waWxlci4KLS0KLS0vLzsg UlVOOiAle2lzcGN9ICVzIC1vICV0Lm8gLS1ub3N0ZGxpYiAtLXRhcmdldD1zc2UyLWkzMng0IC0t Y3B1PXRpZ2VybGFrZQotLS8vOyBSVU46ICV7aXNwY30gJXMgLW8gJXQubyAtLW5vc3RkbGliIC0t dGFyZ2V0PXNzZTItaTMyeDQgLS1jcHU9dGdsCi0tCi0tLy8gUkVRVUlSRVM6IFg4Nl9FTkFCTEVE Ci0tLy8gUkVRVUlSRVM6IExMVk1fMTBfMCsKLS0KLS11bmlmb3JtIGludCBpOwotLQotLXZvaWQg Zm9vKCkge30KLWRpZmYgLS1naXQgYS90ZXN0cy9saXQtdGVzdHMvbGl0LmNmZyBiL3Rlc3RzL2xp dC10ZXN0cy9saXQuY2ZnCi1pbmRleCAxNzAxNjU3OWQuLjA0NWU2OTQzNyAxMDA2NDQKLS0tLSBh L3Rlc3RzL2xpdC10ZXN0cy9saXQuY2ZnCi0rKysgYi90ZXN0cy9saXQtdGVzdHMvbGl0LmNmZwot QEAgLTMwLDExICszMCw2IEBAIHByaW50KCJDb25maWc6IikKLSAKLSAjIExMVk0gdmVyc2lvbgot IGxsdm1fdmVyc2lvbiA9IExvb3NlVmVyc2lvbihpc3BjX2xsdm1fdmVyc2lvbl9udW1iZXIpCi0t aWYgbGx2bV92ZXJzaW9uID49IExvb3NlVmVyc2lvbigiMTAuMC4wIik6Ci0tICAgIHByaW50KCJM TFZNXzEwXzArOiBZRVMiKQotLSAgICBjb25maWcuYXZhaWxhYmxlX2ZlYXR1cmVzLmFkZCgiTExW TV8xMF8wKyIpCi0tZWxzZToKLS0gICAgcHJpbnQoIkxMVk1fMTBfMCs6IE5PIikKLSAKLSBpZiBs bHZtX3ZlcnNpb24gPj0gTG9vc2VWZXJzaW9uKCIxMi4wLjAiKToKLSAgICAgcHJpbnQoIkxMVk1f MTJfMCs6IFlFUyIpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDAz LnBhdGNoIGIvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwMy5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDQyM2FmYzllM2Y5Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3Jj cGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1 MDQgKzAsMCBAQAotRnJvbSAxODUxZDE4YjIxM2RiYWQxNjk5MzcwNzYxNzZiMmQ1NTA5NzMzYzc2 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVlcGFrIFJhamVuZHJha3VtYXJhbiA8 ZGVlcGFrLnJhamVuZHJha3VtYXJhbkBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDEyIEphbiAyMDIx IDIyOjE1OjEyIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeGVzICMxODIxIC0gUmVtb3Zpbmcg TExWTUdldE5hbWUoKSBhbmQgc3dpdGNoaW5nIHRvCi0gTExWTTo6VHdpbmUuCi0KLS0tLQotIHNy Yy9jdHguY3BwICAgICAgfCAzMDQgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KLSBzcmMvY3R4LmggICAgICAgIHwgIDcyICsrKysrLS0tLS0tCi0gc3JjL2V4 cHIuY3BwICAgICB8ICAzNiArKystLS0KLSBzcmMvbGx2bXV0aWwuY3BwIHwgIDE3IC0tLQotIHNy Yy9sbHZtdXRpbC5oICAgfCAgIDUgLQotIHNyYy9vcHQuY3BwICAgICAgfCAxMDMgKysrKysrKysr LS0tLS0tLQotIDYgZmlsZXMgY2hhbmdlZCwgMjU1IGluc2VydGlvbnMoKyksIDI4MiBkZWxldGlv bnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jdHguY3BwIGIvc3JjL2N0eC5jcHAKLWluZGV4IDQy YzRlYTA5ZC4uZGVkNTI0YjcxIDEwMDY0NAotLS0tIGEvc3JjL2N0eC5jcHAKLSsrKyBiL3NyYy9j dHguY3BwCi1AQCAtMTAyMCw4ICsxMDIwLDggQEAgdm9pZCBGdW5jdGlvbkVtaXRDb250ZXh0OjpF bWl0Q2FzZUxhYmVsKGludCB2YWx1ZSwgYm9vbCBjaGVja01hc2ssIFNvdXJjZVBvcyBwb3MKLSAg ICAgbGx2bTo6QmFzaWNCbG9jayAqYmJDYXNlSW1wbCA9IE5VTEw7Ci0gICAgIGlmIChlbWl0R2Vu WEhhcmR3YXJlTWFzaygpKSB7Ci0gICAgICAgICAvLyBDcmVhdGUgYmFzaWMgYmxvY2sgd2l0aCBh Y3R1YWwgY2FzZSBpbXBsZW1lbnRhdGlvbgotLSAgICAgICAgc3RkOjpzdHJpbmcgYmJOYW1lID0g YmJDYXNlLT5nZXROYW1lKCkuc3RyKCkgKyAiX2ltcGwiOwotLSAgICAgICAgYmJDYXNlSW1wbCA9 IENyZWF0ZUJhc2ljQmxvY2soYmJOYW1lLmNfc3RyKCksIGJiQ2FzZSk7Ci0rICAgICAgICBsbHZt OjpUd2luZSBiYk5hbWUgPSBsbHZtOjpUd2luZShiYkNhc2UtPmdldE5hbWUoKSkgKyAiX2ltcGwi OwotKyAgICAgICAgYmJDYXNlSW1wbCA9IENyZWF0ZUJhc2ljQmxvY2soYmJOYW1lLCBiYkNhc2Up OwotICAgICB9Ci0gI2VuZGlmCi0gCi1AQCAtMTE4NSw3ICsxMTg1LDcgQEAgYm9vbCBGdW5jdGlv bkVtaXRDb250ZXh0Ojppbml0TGFiZWxCQmxvY2tzKEFTVE5vZGUgKm5vZGUsIHZvaWQgKmRhdGEp IHsKLSAgICAgaWYgKGN0eC0+bGFiZWxNYXAuZmluZChscy0+bmFtZSkgIT0gY3R4LT5sYWJlbE1h cC5lbmQoKSkKLSAgICAgICAgIEVycm9yKGxzLT5wb3MsICJNdWx0aXBsZSBsYWJlbHMgbmFtZWQg XCIlc1wiIGluIGZ1bmN0aW9uLiIsIGxzLT5uYW1lLmNfc3RyKCkpOwotICAgICBlbHNlIHsKLS0g ICAgICAgIGxsdm06OkJhc2ljQmxvY2sgKmJiID0gY3R4LT5DcmVhdGVCYXNpY0Jsb2NrKGxzLT5u YW1lLmNfc3RyKCkpOwotKyAgICAgICAgbGx2bTo6QmFzaWNCbG9jayAqYmIgPSBjdHgtPkNyZWF0 ZUJhc2ljQmxvY2sobHMtPm5hbWUpOwotICAgICAgICAgY3R4LT5sYWJlbE1hcFtscy0+bmFtZV0g PSBiYjsKLSAgICAgfQotICAgICByZXR1cm4gdHJ1ZTsKLUBAIC0xMjk5LDcgKzEyOTksNyBAQCBs bHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QW55KGxsdm06OlZhbHVlICptYXNrKSB7 Ci0gICAgIC8vIFdlIGNhbiBhY3R1YWxseSBjYWxsIGVpdGhlciBvbmUsIHNpbmNlIGJvdGggYXJl IGkzMnMgYXMgZmFyIGFzCi0gICAgIC8vIExMVk0ncyB0eXBlIHN5c3RlbSBpcyBjb25jZXJuZWQu Li4KLSAgICAgbGx2bTo6RnVuY3Rpb24gKmZtbSA9IG1tWzBdLT5mdW5jdGlvbjsKLS0gICAgcmV0 dXJuIENhbGxJbnN0KGZtbSwgTlVMTCwgbWFzaywgTExWTUdldE5hbWUobWFzaywgIl9hbnkiKSk7 Ci0rICAgIHJldHVybiBDYWxsSW5zdChmbW0sIE5VTEwsIG1hc2ssIGxsdm06OlR3aW5lKG1hc2st PmdldE5hbWUoKSkgKyAiX2FueSIpOwotIH0KLSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0 Q29udGV4dDo6QWxsKGxsdm06OlZhbHVlICptYXNrKSB7Ci1AQCAtMTMxNSw3ICsxMzE1LDcgQEAg bGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFsbChsbHZtOjpWYWx1ZSAqbWFzaykg ewotICAgICAvLyBXZSBjYW4gYWN0dWFsbHkgY2FsbCBlaXRoZXIgb25lLCBzaW5jZSBib3RoIGFy ZSBpMzJzIGFzIGZhciBhcwotICAgICAvLyBMTFZNJ3MgdHlwZSBzeXN0ZW0gaXMgY29uY2VybmVk Li4uCi0gICAgIGxsdm06OkZ1bmN0aW9uICpmbW0gPSBtbVswXS0+ZnVuY3Rpb247Ci0tICAgIHJl dHVybiBDYWxsSW5zdChmbW0sIE5VTEwsIG1hc2ssIExMVk1HZXROYW1lKG1hc2ssICJfYWxsIikp OwotKyAgICByZXR1cm4gQ2FsbEluc3QoZm1tLCBOVUxMLCBtYXNrLCBsbHZtOjpUd2luZShtYXNr LT5nZXROYW1lKCkpICsgIl9hbGwiKTsKLSB9Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1p dENvbnRleHQ6Ok5vbmUobGx2bTo6VmFsdWUgKm1hc2spIHsKLUBAIC0xMzMxLDcgKzEzMzEsNyBA QCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6Tm9uZShsbHZtOjpWYWx1ZSAqbWFz aykgewotICAgICAvLyBXZSBjYW4gYWN0dWFsbHkgY2FsbCBlaXRoZXIgb25lLCBzaW5jZSBib3Ro IGFyZSBpMzJzIGFzIGZhciBhcwotICAgICAvLyBMTFZNJ3MgdHlwZSBzeXN0ZW0gaXMgY29uY2Vy bmVkLi4uCi0gICAgIGxsdm06OkZ1bmN0aW9uICpmbW0gPSBtbVswXS0+ZnVuY3Rpb247Ci0tICAg IHJldHVybiBDYWxsSW5zdChmbW0sIE5VTEwsIG1hc2ssIExMVk1HZXROYW1lKG1hc2ssICJfbm9u ZSIpKTsKLSsgICAgcmV0dXJuIENhbGxJbnN0KGZtbSwgTlVMTCwgbWFzaywgbGx2bTo6VHdpbmUo bWFzay0+Z2V0TmFtZSgpKSArICJfbm9uZSIpOwotIH0KLSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rp b25FbWl0Q29udGV4dDo6TGFuZU1hc2sobGx2bTo6VmFsdWUgKnYpIHsKLUBAIC0xMzQ5LDcgKzEz NDksNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6TGFuZU1hc2sobGx2bTo6 VmFsdWUgKnYpIHsKLSAgICAgLy8gV2UgY2FuIGFjdHVhbGx5IGNhbGwgZWl0aGVyIG9uZSwgc2lu Y2UgYm90aCBhcmUgaTMycyBhcyBmYXIgYXMKLSAgICAgLy8gTExWTSdzIHR5cGUgc3lzdGVtIGlz IGNvbmNlcm5lZC4uLgotICAgICBsbHZtOjpGdW5jdGlvbiAqZm1tID0gbW1bMF0tPmZ1bmN0aW9u OwotLSAgICByZXR1cm4gQ2FsbEluc3QoZm1tLCBOVUxMLCB2LCBMTFZNR2V0TmFtZSh2LCAiX21v dm1zayIpKTsKLSsgICAgcmV0dXJuIENhbGxJbnN0KGZtbSwgTlVMTCwgdiwgbGx2bTo6VHdpbmUo di0+Z2V0TmFtZSgpKSArICJfbW92bXNrIik7Ci0gfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlv bkVtaXRDb250ZXh0OjpNYXNrc0FsbEVxdWFsKGxsdm06OlZhbHVlICp2MSwgbGx2bTo6VmFsdWUg KnYyKSB7Ci1AQCAtMTM2NCwxMSArMTM2NCwxMiBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0 Q29udGV4dDo6TWFza3NBbGxFcXVhbChsbHZtOjpWYWx1ZSAqdjEsIGxsdm06OlZhbHVlICp2Mgot ICNlbHNlCi0gICAgIGlmIChnLT50YXJnZXQtPmdldEFyY2goKSA9PSBBcmNoOjp3YXNtMzIpIHsK LSAgICAgICAgIGxsdm06OkZ1bmN0aW9uICpmbW0gPSBtLT5tb2R1bGUtPmdldEZ1bmN0aW9uKCJf X3dhc21fY21wX21za19lcSIpOwotLSAgICAgICAgcmV0dXJuIENhbGxJbnN0KGZtbSwgTlVMTCwg e3YxLCB2Mn0sIExMVk1HZXROYW1lKCJ3YXNtX2NtcF9tc2tfZXEiLCB2MSwgdjIpKTsKLSsgICAg ICAgIHJldHVybiBDYWxsSW5zdChmbW0sIE5VTEwsIHt2MSwgdjJ9LCAoKGxsdm06OlR3aW5lKCJ3 YXNtX2NtcF9tc2tfZXFfIikgKyB2MS0+Z2V0TmFtZSgpKSArICJfIikgKyB2Mi0+Z2V0TmFtZSgp KTsKLSAgICAgfQotICAgICBsbHZtOjpWYWx1ZSAqbW0xID0gTGFuZU1hc2sodjEpOwotICAgICBs bHZtOjpWYWx1ZSAqbW0yID0gTGFuZU1hc2sodjIpOwotLSAgICByZXR1cm4gQ21wSW5zdChsbHZt OjpJbnN0cnVjdGlvbjo6SUNtcCwgbGx2bTo6Q21wSW5zdDo6SUNNUF9FUSwgbW0xLCBtbTIsIExM Vk1HZXROYW1lKCJlcXVhbCIsIHYxLCB2MikpOwotKyAgICByZXR1cm4gQ21wSW5zdChsbHZtOjpJ bnN0cnVjdGlvbjo6SUNtcCwgbGx2bTo6Q21wSW5zdDo6SUNNUF9FUSwgbW0xLCBtbTIsCi0rICAg ICAgICAgICAgICAgICAgICgobGx2bTo6VHdpbmUoImVxdWFsXyIpICsgdjEtPmdldE5hbWUoKSkg KyAiXyIpICsgdjItPmdldE5hbWUoKSk7Ci0gI2VuZGlmCi0gfQotIAotQEAgLTEzOTIsNyArMTM5 Myw3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZXRTdHJpbmdQdHIoY29u c3Qgc3RkOjpzdHJpbmcgJnN0cikgewotICAgICByZXR1cm4gbmV3IGxsdm06OkJpdENhc3RJbnN0 KGxzdHJQdHIsIExMVk1UeXBlczo6Vm9pZFBvaW50ZXJUeXBlLCAic3RyX3ZvaWRfcHRyIiwgYmJs b2NrKTsKLSB9Ci0gCi0tbGx2bTo6QmFzaWNCbG9jayAqRnVuY3Rpb25FbWl0Q29udGV4dDo6Q3Jl YXRlQmFzaWNCbG9jayhjb25zdCBjaGFyICpuYW1lLCBsbHZtOjpCYXNpY0Jsb2NrICppbnNlcnRB ZnRlcikgewotK2xsdm06OkJhc2ljQmxvY2sgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkNyZWF0ZUJh c2ljQmxvY2soY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUsIGxsdm06OkJhc2ljQmxvY2sgKmluc2Vy dEFmdGVyKSB7Ci0gICAgIGxsdm06OkJhc2ljQmxvY2sgKm5ld0JCID0gbGx2bTo6QmFzaWNCbG9j azo6Q3JlYXRlKCpnLT5jdHgsIG5hbWUsIGxsdm1GdW5jdGlvbik7Ci0gICAgIGlmIChpbnNlcnRB ZnRlcikKLSAgICAgICAgIG5ld0JCLT5tb3ZlQWZ0ZXIoaW5zZXJ0QWZ0ZXIpOwotQEAgLTE0MTYs MTQgKzE0MTcsMTUgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkkxVmVjVG9C b29sVmVjKGxsdm06OlZhbHVlICpiKSB7Ci0gCi0gICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBp ID0gMDsgaSA8IGF0LT5nZXROdW1FbGVtZW50cygpOyArK2kpIHsKLSAgICAgICAgICAgICBsbHZt OjpWYWx1ZSAqZWx0ID0gRXh0cmFjdEluc3QoYiwgaSk7Ci0tICAgICAgICAgICAgbGx2bTo6VmFs dWUgKnNleHQgPSBTd2l0Y2hCb29sU2l6ZShlbHQsIExMVk1UeXBlczo6Qm9vbFZlY3RvclN0b3Jh Z2VUeXBlLCBMTFZNR2V0TmFtZShlbHQsICJfdG9fYm9vbHZlYyIpKTsKLSsgICAgICAgICAgICBs bHZtOjpWYWx1ZSAqc2V4dCA9Ci0rICAgICAgICAgICAgICAgIFN3aXRjaEJvb2xTaXplKGVsdCwg TExWTVR5cGVzOjpCb29sVmVjdG9yU3RvcmFnZVR5cGUsIGxsdm06OlR3aW5lKGVsdC0+Z2V0TmFt ZSgpKSArICJfdG9fYm9vbHZlYyIpOwotICAgICAgICAgICAgIHJldCA9IEluc2VydEluc3QocmV0 LCBzZXh0LCBpKTsKLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgIH0gZWxz ZSB7Ci0gICAgICAgICAvLyBGb3Igbm9uLWFycmF5IHR5cGVzLCBjb252ZXJ0IHRvICdMTFZNVHlw ZXM6OkJvb2xWZWN0b3JUeXBlJyBpZgotICAgICAgICAgLy8gbmVjZXNzYXJ5LgotLSAgICAgICAg cmV0dXJuIFN3aXRjaEJvb2xTaXplKGIsIExMVk1UeXBlczo6Qm9vbFZlY3RvclR5cGUsIExMVk1H ZXROYW1lKGIsICJfdG9fYm9vbHZlYyIpKTsKLSsgICAgICAgIHJldHVybiBTd2l0Y2hCb29sU2l6 ZShiLCBMTFZNVHlwZXM6OkJvb2xWZWN0b3JUeXBlLCBsbHZtOjpUd2luZShiLT5nZXROYW1lKCkp ICsgIl90b19ib29sdmVjIik7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTU2Myw3ICsxNTY1LDcgQEAg c3RhdGljIGludCBsQXJyYXlWZWN0b3JXaWR0aChsbHZtOjpUeXBlICp0KSB7Ci0gfQotIAotIGxs dm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpCaW5hcnlPcGVyYXRvcihsbHZtOjpJbnN0 cnVjdGlvbjo6QmluYXJ5T3BzIGluc3QsIGxsdm06OlZhbHVlICp2MCwgbGx2bTo6VmFsdWUgKnYx LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBjaGFyICpuYW1lKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICh2MCA9PSBOVUxM IHx8IHYxID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJv ckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLUBAIC0xNTczLDcgKzE1NzUsNyBA QCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QmluYXJ5T3BlcmF0b3IobGx2bTo6 SW5zdHJ1Y3Rpb246OkJpbmFyeU9wcyBpbgotICAgICBsbHZtOjpUeXBlICp0eXBlID0gdjAtPmdl dFR5cGUoKTsKLSAgICAgaW50IGFycmF5U2l6ZSA9IGxBcnJheVZlY3RvcldpZHRoKHR5cGUpOwot ICAgICBpZiAoYXJyYXlTaXplID09IDApIHsKLS0gICAgICAgIGxsdm06Okluc3RydWN0aW9uICpi b3AgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKGluc3QsIHYwLCB2MSwgbmFtZSA/IG5h bWUgOiAiIiwgYmJsb2NrKTsKLSsgICAgICAgIGxsdm06Okluc3RydWN0aW9uICpib3AgPSBsbHZt OjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKGluc3QsIHYwLCB2MSwgbmFtZSwgYmJsb2NrKTsKLSAg ICAgICAgIEFkZERlYnVnUG9zKGJvcCk7Ci0gICAgICAgICByZXR1cm4gYm9wOwotICAgICB9IGVs c2UgewotQEAgLTE1OTEsNyArMTU5Myw3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250 ZXh0OjpCaW5hcnlPcGVyYXRvcihsbHZtOjpJbnN0cnVjdGlvbjo6QmluYXJ5T3BzIGluCi0gICAg IH0KLSB9Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6Ok5vdE9wZXJhdG9y KGxsdm06OlZhbHVlICp2LCBjb25zdCBjaGFyICpuYW1lKSB7Ci0rbGx2bTo6VmFsdWUgKkZ1bmN0 aW9uRW1pdENvbnRleHQ6Ok5vdE9wZXJhdG9yKGxsdm06OlZhbHVlICp2LCBjb25zdCBsbHZtOjpU d2luZSAmbmFtZSkgewotICAgICBpZiAodiA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3Mo Y3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1A QCAtMTYwMywxNCArMTYwNSwxNCBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6 Tm90T3BlcmF0b3IobGx2bTo6VmFsdWUgKnYsIGNvbnN0IGNoYXIgKm5hbWUpCi0gICAgIGxsdm06 OlR5cGUgKnR5cGUgPSB2LT5nZXRUeXBlKCk7Ci0gICAgIGludCBhcnJheVNpemUgPSBsQXJyYXlW ZWN0b3JXaWR0aCh0eXBlKTsKLSAgICAgaWYgKGFycmF5U2l6ZSA9PSAwKSB7Ci0tICAgICAgICBs bHZtOjpJbnN0cnVjdGlvbiAqYmluc3QgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlTm90 KHYsIG5hbWUgPyBuYW1lIDogIm5vdCIsIGJibG9jayk7Ci0rICAgICAgICBsbHZtOjpJbnN0cnVj dGlvbiAqYmluc3QgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlTm90KHYsIG5hbWUuaXNU cml2aWFsbHlFbXB0eSgpID8gIm5vdCIgOiBuYW1lLCBiYmxvY2spOwotICAgICAgICAgQWRkRGVi dWdQb3MoYmluc3QpOwotICAgICAgICAgcmV0dXJuIGJpbnN0OwotICAgICB9IGVsc2UgewotICAg ICAgICAgbGx2bTo6VmFsdWUgKnJldCA9IGxsdm06OlVuZGVmVmFsdWU6OmdldCh0eXBlKTsKLSAg ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpIHsKLSAgICAgICAgICAg ICBsbHZtOjpWYWx1ZSAqYSA9IEV4dHJhY3RJbnN0KHYsIGkpOwotLSAgICAgICAgICAgIGxsdm06 OlZhbHVlICpvcCA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGVOb3QoYSwgbmFtZSA/IG5h bWUgOiAibm90IiwgYmJsb2NrKTsKLSsgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqb3AgPSBsbHZt OjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlTm90KGEsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8g Im5vdCIgOiBuYW1lLCBiYmxvY2spOwotICAgICAgICAgICAgIEFkZERlYnVnUG9zKG9wKTsKLSAg ICAgICAgICAgICByZXQgPSBJbnNlcnRJbnN0KHJldCwgb3AsIGkpOwotICAgICAgICAgfQotQEAg LTE2MzgsNyArMTY0MCw3IEBAIHN0YXRpYyBsbHZtOjpUeXBlICpsR2V0TWF0Y2hpbmdCb29sVmVj dG9yVHlwZShsbHZtOjpUeXBlICp0eXBlKSB7Ci0gfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlv bkVtaXRDb250ZXh0OjpDbXBJbnN0KGxsdm06Okluc3RydWN0aW9uOjpPdGhlck9wcyBpbnN0LCBs bHZtOjpDbXBJbnN0OjpQcmVkaWNhdGUgcHJlZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqdjAsIGxsdm06OlZhbHVlICp2MSwgY29uc3Qg Y2hhciAqbmFtZSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxsdm06OlZhbHVlICp2MCwgbGx2bTo6VmFsdWUgKnYxLCBjb25zdCBsbHZtOjpUd2luZSAmbmFt ZSkgewotICAgICBpZiAodjAgPT0gTlVMTCB8fCB2MSA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3Nl cnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5V TEw7Ci1AQCAtMTY0OCw3ICsxNjUwLDggQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRl eHQ6OkNtcEluc3QobGx2bTo6SW5zdHJ1Y3Rpb246Ok90aGVyT3BzIGluc3QsIGxsdm0KLSAgICAg bGx2bTo6VHlwZSAqdHlwZSA9IHYwLT5nZXRUeXBlKCk7Ci0gICAgIGludCBhcnJheVNpemUgPSBs QXJyYXlWZWN0b3JXaWR0aCh0eXBlKTsKLSAgICAgaWYgKGFycmF5U2l6ZSA9PSAwKSB7Ci0tICAg ICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqY2kgPSBsbHZtOjpDbXBJbnN0OjpDcmVhdGUoaW5zdCwg cHJlZCwgdjAsIHYxLCBuYW1lID8gbmFtZSA6ICJjbXAiLCBiYmxvY2spOwotKyAgICAgICAgbGx2 bTo6SW5zdHJ1Y3Rpb24gKmNpID0KLSsgICAgICAgICAgICBsbHZtOjpDbXBJbnN0OjpDcmVhdGUo aW5zdCwgcHJlZCwgdjAsIHYxLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/ICJjbXAiIDogbmFt ZSwgYmJsb2NrKTsKLSAgICAgICAgIEFkZERlYnVnUG9zKGNpKTsKLSAgICAgICAgIHJldHVybiBj aTsKLSAgICAgfSBlbHNlIHsKLUBAIC0xNjU3LDE0ICsxNjYwLDE0IEBAIGxsdm06OlZhbHVlICpG dW5jdGlvbkVtaXRDb250ZXh0OjpDbXBJbnN0KGxsdm06Okluc3RydWN0aW9uOjpPdGhlck9wcyBp bnN0LCBsbHZtCi0gICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKSB7 Ci0gICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmEgPSBFeHRyYWN0SW5zdCh2MCwgaSk7Ci0gICAg ICAgICAgICAgbGx2bTo6VmFsdWUgKmIgPSBFeHRyYWN0SW5zdCh2MSwgaSk7Ci0tICAgICAgICAg ICAgbGx2bTo6VmFsdWUgKm9wID0gQ21wSW5zdChpbnN0LCBwcmVkLCBhLCBiLCBuYW1lKTsKLSsg ICAgICAgICAgICBsbHZtOjpWYWx1ZSAqb3AgPSBDbXBJbnN0KGluc3QsIHByZWQsIGEsIGIsIG5h bWUuaXNUcml2aWFsbHlFbXB0eSgpID8gImNtcCIgOiBuYW1lKTsKLSAgICAgICAgICAgICByZXQg PSBJbnNlcnRJbnN0KHJldCwgb3AsIGkpOwotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuIHJl dDsKLSAgICAgfQotIH0KLSAKLS1sbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6U21l YXJVbmlmb3JtKGxsdm06OlZhbHVlICp2YWx1ZSwgY29uc3QgY2hhciAqbmFtZSkgewotK2xsdm06 OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpTbWVhclVuaWZvcm0obGx2bTo6VmFsdWUgKnZh bHVlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodmFsdWUgPT0gTlVMTCkg ewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAg ICAgICAgIHJldHVybiBOVUxMOwotQEAgLTE3MDQsMjEgKzE3MDcsMTkgQEAgbGx2bTo6VmFsdWUg KkZ1bmN0aW9uRW1pdENvbnRleHQ6OlNtZWFyVW5pZm9ybShsbHZtOjpWYWx1ZSAqdmFsdWUsIGNv bnN0IGNoYXIgKm4KLSAgICAgcmV0dXJuIHJldDsKLSB9Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1bmN0 aW9uRW1pdENvbnRleHQ6OkJpdENhc3RJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlw ZSAqdHlwZSwgY29uc3QgY2hhciAqbmFtZSkgewotK2xsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRD b250ZXh0OjpCaXRDYXN0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUs IGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0g ICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAg ICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0KLSAKLS0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAg ICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2YWx1ZSwgIl9iaXRjYXN0Iik7Ci0tCi0tICAgIGxsdm06 Okluc3RydWN0aW9uICppbnN0ID0gbmV3IGxsdm06OkJpdENhc3RJbnN0KHZhbHVlLCB0eXBlLCBu YW1lLCBiYmxvY2spOwotKyAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpC aXRDYXN0SW5zdCgKLSsgICAgICAgIHZhbHVlLCB0eXBlLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHko KSA/IGxsdm06OlR3aW5lKHZhbHVlLT5nZXROYW1lKCkpICsgIl9iaXRjYXN0IiA6IG5hbWUsIGJi bG9jayk7Ci0gICAgIEFkZERlYnVnUG9zKGluc3QpOwotICAgICByZXR1cm4gaW5zdDsKLSB9Ci0g Ci0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlB0clRvSW50SW5zdChsbHZtOjpW YWx1ZSAqdmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25F bWl0Q29udGV4dDo6UHRyVG9JbnRJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgY29uc3QgbGx2bTo6 VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2Vy dFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVM TDsKLUBAIC0xNzI4LDIzICsxNzI5LDE5IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250 ZXh0OjpQdHJUb0ludEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBjb25zdCBjaGFyICpuCi0gICAg ICAgICAvLyBuby1vcCBmb3IgdmFyeWluZyBwb2ludGVyczsgdGhleSdyZSBhbHJlYWR5IHZlY3Rv cnMgb2YgaW50cwotICAgICAgICAgcmV0dXJuIHZhbHVlOwotIAotLSAgICBpZiAobmFtZSA9PSBO VUxMKQotLSAgICAgICAgbmFtZSA9IExMVk1HZXROYW1lKHZhbHVlLCAiX3B0cjJpbnQiKTsKLSAg ICAgbGx2bTo6VHlwZSAqdHlwZSA9IExMVk1UeXBlczo6UG9pbnRlckludFR5cGU7Ci0tICAgIGxs dm06Okluc3RydWN0aW9uICppbnN0ID0gbmV3IGxsdm06OlB0clRvSW50SW5zdCh2YWx1ZSwgdHlw ZSwgbmFtZSwgYmJsb2NrKTsKLSsgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBuZXcgbGx2 bTo6UHRyVG9JbnRJbnN0KAotKyAgICAgICAgdmFsdWUsIHR5cGUsIG5hbWUuaXNUcml2aWFsbHlF bXB0eSgpID8gbGx2bTo6VHdpbmUodmFsdWUtPmdldE5hbWUoKSkgKyAiX3B0cjJpbnQiIDogbmFt ZSwgYmJsb2NrKTsKLSAgICAgQWRkRGVidWdQb3MoaW5zdCk7Ci0gICAgIHJldHVybiBpbnN0Owot IH0KLSAKLS1sbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6UHRyVG9JbnRJbnN0KGxs dm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdG9UeXBlLCBjb25zdCBjaGFyICpuYW1lKSB7 Ci0rbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlB0clRvSW50SW5zdChsbHZtOjpW YWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnRvVHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUp IHsKLSAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50 UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQot IAotLSAgICBpZiAobmFtZSA9PSBOVUxMKQotLSAgICAgICAgbmFtZSA9IExMVk1HZXROYW1lKHZh bHVlLCAiX3B0cjJpbnQiKTsKLS0KLSAgICAgbGx2bTo6VHlwZSAqZnJvbVR5cGUgPSB2YWx1ZS0+ Z2V0VHlwZSgpOwotICAgICBpZiAobGx2bTo6aXNhPGxsdm06OlZlY3RvclR5cGU+KGZyb21UeXBl KSkgewotICAgICAgICAgLy8gdmFyeWluZyBwb2ludGVyCi1AQCAtMTc1MiwyNyArMTc0OSwyNiBA QCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6UHRyVG9JbnRJbnN0KGxsdm06OlZh bHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdAotICAgICAgICAgICAgIC8vIGFscmVhZHkgdGhlIHJp Z2h0IHR5cGUtLWRvbmUKLSAgICAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgICAgICBlbHNl IGlmIChmcm9tVHlwZS0+Z2V0U2NhbGFyU2l6ZUluQml0cygpID4gdG9UeXBlLT5nZXRTY2FsYXJT aXplSW5CaXRzKCkpCi0tICAgICAgICAgICAgcmV0dXJuIFRydW5jSW5zdCh2YWx1ZSwgdG9UeXBl LCBuYW1lKTsKLSsgICAgICAgICAgICByZXR1cm4gVHJ1bmNJbnN0KHZhbHVlLCB0b1R5cGUsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IGxs dm06OlR3aW5lKHZhbHVlLT5nZXROYW1lKCkpICsgIl9wdHIyaW50IiA6IG5hbWUpOwotICAgICAg ICAgZWxzZSB7Ci0gICAgICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIGZyb21UeXBlLT5n ZXRTY2FsYXJTaXplSW5CaXRzKCkgPCB0b1R5cGUtPmdldFNjYWxhclNpemVJbkJpdHMoKSk7Ci0t ICAgICAgICAgICAgcmV0dXJuIFpFeHRJbnN0KHZhbHVlLCB0b1R5cGUsIG5hbWUpOwotKyAgICAg ICAgICAgIHJldHVybiBaRXh0SW5zdCh2YWx1ZSwgdG9UeXBlLCBuYW1lLmlzVHJpdmlhbGx5RW1w dHkoKSA/IGxsdm06OlR3aW5lKHZhbHVlLT5nZXROYW1lKCkpICsgIl9wdHIyaW50IiA6IG5hbWUp OwotICAgICAgICAgfQotICAgICB9Ci0gCi0tICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0g bmV3IGxsdm06OlB0clRvSW50SW5zdCh2YWx1ZSwgdG9UeXBlLCBuYW1lLCBiYmxvY2spOwotKyAg ICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpQdHJUb0ludEluc3QoCi0rICAg ICAgICB2YWx1ZSwgdG9UeXBlLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IGxsdm06OlR3aW5l KHZhbHVlLT5nZXROYW1lKCkpICsgIl9wdHIyaW50IiA6IG5hbWUsIGJibG9jayk7Ci0gICAgIEFk ZERlYnVnUG9zKGluc3QpOwotICAgICByZXR1cm4gaW5zdDsKLSB9Ci0gCi0tbGx2bTo6VmFsdWUg KkZ1bmN0aW9uRW1pdENvbnRleHQ6OkludFRvUHRySW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxs dm06OlR5cGUgKnRvVHlwZSwgY29uc3QgY2hhciAqbmFtZSkgewotK2xsdm06OlZhbHVlICpGdW5j dGlvbkVtaXRDb250ZXh0OjpJbnRUb1B0ckluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpU eXBlICp0b1R5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICh2YWx1ZSA9 PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+ IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0KLSAKLS0gICAgaWYgKG5hbWUgPT0g TlVMTCkKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2YWx1ZSwgIl9pbnQycHRyIik7Ci0t Ci0gICAgIGxsdm06OlR5cGUgKmZyb21UeXBlID0gdmFsdWUtPmdldFR5cGUoKTsKLSAgICAgaWYg KGxsdm06OmlzYTxsbHZtOjpWZWN0b3JUeXBlPihmcm9tVHlwZSkpIHsKLSAgICAgICAgIC8vIHZh cnlpbmcgcG9pbnRlcgotQEAgLTE3ODAsOTUgKzE3NzYsODcgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0 aW9uRW1pdENvbnRleHQ6OkludFRvUHRySW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5 cGUgKnQKLSAgICAgICAgICAgICAvLyBkb25lCi0gICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwot ICAgICAgICAgZWxzZSBpZiAoZnJvbVR5cGUtPmdldFNjYWxhclNpemVJbkJpdHMoKSA+IHRvVHlw ZS0+Z2V0U2NhbGFyU2l6ZUluQml0cygpKQotLSAgICAgICAgICAgIHJldHVybiBUcnVuY0luc3Qo dmFsdWUsIHRvVHlwZSwgbmFtZSk7Ci0rICAgICAgICAgICAgcmV0dXJuIFRydW5jSW5zdCh2YWx1 ZSwgdG9UeXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5pc1RyaXZpYWxs eUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfaW50MnB0ciIgOiBu YW1lKTsKLSAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9z LCBmcm9tVHlwZS0+Z2V0U2NhbGFyU2l6ZUluQml0cygpIDwgdG9UeXBlLT5nZXRTY2FsYXJTaXpl SW5CaXRzKCkpOwotLSAgICAgICAgICAgIHJldHVybiBaRXh0SW5zdCh2YWx1ZSwgdG9UeXBlLCBu YW1lKTsKLSsgICAgICAgICAgICByZXR1cm4gWkV4dEluc3QodmFsdWUsIHRvVHlwZSwgbmFtZS5p c1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfaW50 MnB0ciIgOiBuYW1lKTsKLSAgICAgICAgIH0KLSAgICAgfQotIAotLSAgICBsbHZtOjpJbnN0cnVj dGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpJbnRUb1B0ckluc3QodmFsdWUsIHRvVHlwZSwgbmFtZSwg YmJsb2NrKTsKLSsgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBuZXcgbGx2bTo6SW50VG9Q dHJJbnN0KAotKyAgICAgICAgdmFsdWUsIHRvVHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkg PyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfaW50MnB0ciIgOiBuYW1lLCBiYmxv Y2spOwotICAgICBBZGREZWJ1Z1BvcyhpbnN0KTsKLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotIAot LWxsdm06Okluc3RydWN0aW9uICpGdW5jdGlvbkVtaXRDb250ZXh0OjpUcnVuY0luc3QobGx2bTo6 VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBjaGFyICpuYW1lKSB7Ci0rbGx2 bTo6SW5zdHJ1Y3Rpb24gKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlRydW5jSW5zdChsbHZtOjpWYWx1 ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0g ICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywg bS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0KLSAKLS0g ICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2YWx1ZSwg Il90cnVuYyIpOwotLQotICAgICAvLyBUT0RPOiB3ZSBzaG91bGQgcHJvYmFibHkgaGFuZGxlIHRo ZSBhcnJheSBjYXNlIGFzIGluCi0gICAgIC8vIGUuZy4gQml0Q2FzdEluc3QoKSwgYnV0IHdlIGRv bid0IGN1cnJlbnRseSBuZWVkIHRoYXQgZnVuY3Rpb25hbGl0eQotLSAgICBsbHZtOjpJbnN0cnVj dGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpUcnVuY0luc3QodmFsdWUsIHR5cGUsIG5hbWUsIGJibG9j ayk7Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbmV3IGxsdm06OlRydW5jSW5zdCgK LSsgICAgICAgIHZhbHVlLCB0eXBlLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IGxsdm06OlR3 aW5lKHZhbHVlLT5nZXROYW1lKCkpICsgIl90cnVuYyIgOiBuYW1lLCBiYmxvY2spOwotICAgICBB ZGREZWJ1Z1BvcyhpbnN0KTsKLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotIAotIGxsdm06Okluc3Ry dWN0aW9uICpGdW5jdGlvbkVtaXRDb250ZXh0OjpDYXN0SW5zdChsbHZtOjpJbnN0cnVjdGlvbjo6 Q2FzdE9wcyBvcCwgbGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpu YW1lKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0g ICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAg ICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0KLSAKLS0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAg ICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2YWx1ZSwgIl9jYXN0Iik7Ci0tCi0gICAgIC8vIFRPRE86 IHdlIHNob3VsZCBwcm9iYWJseSBoYW5kbGUgdGhlIGFycmF5IGNhc2UgYXMgaW4KLSAgICAgLy8g ZS5nLiBCaXRDYXN0SW5zdCgpLCBidXQgd2UgZG9uJ3QgY3VycmVudGx5IG5lZWQgdGhhdCBmdW5j dGlvbmFsaXR5Ci0tICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbGx2bTo6Q2FzdEluc3Q6 OkNyZWF0ZShvcCwgdmFsdWUsIHR5cGUsIG5hbWUsIGJibG9jayk7Ci0rICAgIGxsdm06Okluc3Ry dWN0aW9uICppbnN0ID0gbGx2bTo6Q2FzdEluc3Q6OkNyZWF0ZSgKLSsgICAgICAgIG9wLCB2YWx1 ZSwgdHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0 TmFtZSgpKSArICJfY2FzdCIgOiBuYW1lLCBiYmxvY2spOwotICAgICBBZGREZWJ1Z1BvcyhpbnN0 KTsKLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotIAotLWxsdm06Okluc3RydWN0aW9uICpGdW5jdGlv bkVtaXRDb250ZXh0OjpGUENhc3RJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAq dHlwZSwgY29uc3QgY2hhciAqbmFtZSkgewotK2xsdm06Okluc3RydWN0aW9uICpGdW5jdGlvbkVt aXRDb250ZXh0OjpGUENhc3RJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlw ZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsK LSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAg ICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotLSAgICBpZiAobmFtZSA9PSBOVUxMKQotLSAg ICAgICAgbmFtZSA9IExMVk1HZXROYW1lKHZhbHVlLCAiX2Nhc3QiKTsKLS0KLSAgICAgLy8gVE9E Tzogd2Ugc2hvdWxkIHByb2JhYmx5IGhhbmRsZSB0aGUgYXJyYXkgY2FzZSBhcyBpbgotICAgICAv LyBlLmcuIEJpdENhc3RJbnN0KCksIGJ1dCB3ZSBkb24ndCBjdXJyZW50bHkgbmVlZCB0aGF0IGZ1 bmN0aW9uYWxpdHkKLS0gICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBsbHZtOjpDYXN0SW5z dDo6Q3JlYXRlRlBDYXN0KHZhbHVlLCB0eXBlLCBuYW1lLCBiYmxvY2spOwotKyAgICBsbHZtOjpJ bnN0cnVjdGlvbiAqaW5zdCA9IGxsdm06OkNhc3RJbnN0OjpDcmVhdGVGUENhc3QoCi0rICAgICAg ICB2YWx1ZSwgdHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1 ZS0+Z2V0TmFtZSgpKSArICJfY2FzdCIgOiBuYW1lLCBiYmxvY2spOwotICAgICBBZGREZWJ1Z1Bv cyhpbnN0KTsKLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotIAotLWxsdm06Okluc3RydWN0aW9uICpG dW5jdGlvbkVtaXRDb250ZXh0OjpTRXh0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5 cGUgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpJbnN0cnVjdGlvbiAqRnVuY3Rp b25FbWl0Q29udGV4dDo6U0V4dEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0 eXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodmFsdWUgPT0gTlVMTCkg ewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAg ICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAgIGlmIChuYW1lID09IE5VTEwpCi0t ICAgICAgICBuYW1lID0gTExWTUdldE5hbWUodmFsdWUsICJfc2V4dCIpOwotLQotICAgICAvLyBU T0RPOiB3ZSBzaG91bGQgcHJvYmFibHkgaGFuZGxlIHRoZSBhcnJheSBjYXNlIGFzIGluCi0gICAg IC8vIGUuZy4gQml0Q2FzdEluc3QoKSwgYnV0IHdlIGRvbid0IGN1cnJlbnRseSBuZWVkIHRoYXQg ZnVuY3Rpb25hbGl0eQotLSAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpT RXh0SW5zdCh2YWx1ZSwgdHlwZSwgbmFtZSwgYmJsb2NrKTsKLSsgICAgbGx2bTo6SW5zdHJ1Y3Rp b24gKmluc3QgPSBuZXcgbGx2bTo6U0V4dEluc3QoCi0rICAgICAgICB2YWx1ZSwgdHlwZSwgbmFt ZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJf c2V4dCIgOiBuYW1lLCBiYmxvY2spOwotICAgICBBZGREZWJ1Z1BvcyhpbnN0KTsKLSAgICAgcmV0 dXJuIGluc3Q7Ci0gfQotIAotLWxsdm06Okluc3RydWN0aW9uICpGdW5jdGlvbkVtaXRDb250ZXh0 OjpaRXh0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGNo YXIgKm5hbWUpIHsKLStsbHZtOjpJbnN0cnVjdGlvbiAqRnVuY3Rpb25FbWl0Q29udGV4dDo6WkV4 dEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBsbHZtOjpU d2luZSAmbmFtZSkgewotICAgICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0 UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxM OwotICAgICB9Ci0gCi0tICAgIGlmIChuYW1lID09IE5VTEwpCi0tICAgICAgICBuYW1lID0gTExW TUdldE5hbWUodmFsdWUsICJfemV4dCIpOwotLQotICAgICAvLyBUT0RPOiB3ZSBzaG91bGQgcHJv YmFibHkgaGFuZGxlIHRoZSBhcnJheSBjYXNlIGFzIGluCi0gICAgIC8vIGUuZy4gQml0Q2FzdElu c3QoKSwgYnV0IHdlIGRvbid0IGN1cnJlbnRseSBuZWVkIHRoYXQgZnVuY3Rpb25hbGl0eQotLSAg ICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpaRXh0SW5zdCh2YWx1ZSwgdHlw ZSwgbmFtZSwgYmJsb2NrKTsKLSsgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBuZXcgbGx2 bTo6WkV4dEluc3QoCi0rICAgICAgICB2YWx1ZSwgdHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5 KCkgPyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfemV4dCIgOiBuYW1lLCBiYmxv Y2spOwotICAgICBBZGREZWJ1Z1BvcyhpbnN0KTsKLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotQEAg LTE5MTMsMTQgKzE5MDEsMTUgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OmFw cGx5VmFyeWluZ0dFUChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwgbGx2bTo6VmEKLSAgICAgICAgIHNj YWxlID0gU21lYXJVbmlmb3JtKHNjYWxlKTsKLSAgICAgICAgIEFzc2VydChpbmRleCAhPSBOVUxM KTsKLSAgICAgICAgIC8vIG9mZnNldCA9IGluZGV4ICogc2NhbGUKLS0gICAgICAgIG9mZnNldCA9 IEJpbmFyeU9wZXJhdG9yKGxsdm06Okluc3RydWN0aW9uOjpNdWwsIHNjYWxlLCBpbmRleCwgTExW TUdldE5hbWUoIm11bCIsIHNjYWxlLCBpbmRleCkpOwotKyAgICAgICAgb2Zmc2V0ID0gQmluYXJ5 T3BlcmF0b3IobGx2bTo6SW5zdHJ1Y3Rpb246Ok11bCwgc2NhbGUsIGluZGV4LAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKChsbHZtOjpUd2luZSgibXVsXyIpICsgc2NhbGUtPmdl dE5hbWUoKSkgKyAiXyIpICsgaW5kZXgtPmdldE5hbWUoKSk7Ci0gICAgIH0KLSAKLSAgICAgLy8g Rm9yIDY0LWJpdCB0YXJnZXRzLCBpZiB3ZSd2ZSBiZWVuIGRvaW5nIG91ciBvZmZzZXQgY2FsY3Vs YXRpb25zIGluCi0gICAgIC8vIDMyIGJpdHMsIHdlIHN0aWxsIGhhdmUgdG8gY29udmVydCB0byBh IDY0LWJpdCB2YWx1ZSBiZWZvcmUgd2UKLSAgICAgLy8gYWN0dWFsbHkgYWRkIHRoZSBvZmZzZXQg dG8gdGhlIHBvaW50ZXIuCi0gICAgIGlmIChnLT50YXJnZXQtPmlzMzJCaXQoKSA9PSBmYWxzZSAm JiBnLT5vcHQuZm9yY2UzMkJpdEFkZHJlc3NpbmcgPT0gdHJ1ZSkKLS0gICAgICAgIG9mZnNldCA9 IFNFeHRJbnN0KG9mZnNldCwgTExWTVR5cGVzOjpJbnQ2NFZlY3RvclR5cGUsIExMVk1HZXROYW1l KG9mZnNldCwgIl90b182NCIpKTsKLSsgICAgICAgIG9mZnNldCA9IFNFeHRJbnN0KG9mZnNldCwg TExWTVR5cGVzOjpJbnQ2NFZlY3RvclR5cGUsIGxsdm06OlR3aW5lKG9mZnNldC0+Z2V0TmFtZSgp KSArICJfdG9fNjQiKTsKLSAKLSAgICAgLy8gU21lYXIgb3V0IHRoZSBwb2ludGVyIHRvIGJlIHZh cnlpbmc7IGVpdGhlciB0aGUgYmFzZSBwb2ludGVyIG9yIHRoZQotICAgICAvLyBpbmRleCBtdXN0 IGJlIHZhcnlpbmcgZm9yIHRoaXMgbWV0aG9kIHRvIGJlIGNhbGxlZC4KLUBAIC0xOTI5LDcgKzE5 MTgsNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6YXBwbHlWYXJ5aW5nR0VQ KGxsdm06OlZhbHVlICpiYXNlUHRyLCBsbHZtOjpWYQotICAgICBsbHZtOjpWYWx1ZSAqdmFyeWlu Z1B0ciA9IGJhc2VJc1VuaWZvcm0gPyBTbWVhclVuaWZvcm0oYmFzZVB0cikgOiBiYXNlUHRyOwot IAotICAgICAvLyBuZXdQdHIgPSBwdHIgKyBvZmZzZXQKLS0gICAgcmV0dXJuIEJpbmFyeU9wZXJh dG9yKGxsdm06Okluc3RydWN0aW9uOjpBZGQsIHZhcnlpbmdQdHIsIG9mZnNldCwgTExWTUdldE5h bWUoYmFzZVB0ciwgIl9vZmZzZXQiKSk7Ci0rICAgIHJldHVybiBCaW5hcnlPcGVyYXRvcihsbHZt OjpJbnN0cnVjdGlvbjo6QWRkLCB2YXJ5aW5nUHRyLCBvZmZzZXQsIGxsdm06OlR3aW5lKGJhc2VQ dHItPmdldE5hbWUoKSkgKyAiX29mZnNldCIpOwotIH0KLSAKLSB2b2lkIEZ1bmN0aW9uRW1pdENv bnRleHQ6Ok1hdGNoSW50ZWdlclR5cGVzKGxsdm06OlZhbHVlICoqdjAsIGxsdm06OlZhbHVlICoq djEpIHsKLUBAIC0yMDA2LDEzICsxOTk1LDEzIEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRD b250ZXh0OjpNYWtlU2xpY2VQb2ludGVyKGxsdm06OlZhbHVlICpwdHIsIGxsdm06OlZhbHVlCi0g ICAgIGxsdm06OlN0cnVjdFR5cGUgKnN0ID0gbGx2bTo6U3RydWN0VHlwZTo6Z2V0KCpnLT5jdHgs IGVsdFR5cGVzKTsKLSAKLSAgICAgbGx2bTo6VmFsdWUgKnJldCA9IGxsdm06OlVuZGVmVmFsdWU6 OmdldChzdCk7Ci0tICAgIHJldCA9IEluc2VydEluc3QocmV0LCBwdHIsIDAsIExMVk1HZXROYW1l KHJldCwgIl9zbGljZV9wdHIiKSk7Ci0tICAgIHJldCA9IEluc2VydEluc3QocmV0LCBvZmZzZXQs IDEsIExMVk1HZXROYW1lKHJldCwgIl9zbGljZV9vZmZzZXQiKSk7Ci0rICAgIHJldCA9IEluc2Vy dEluc3QocmV0LCBwdHIsIDAsIGxsdm06OlR3aW5lKHJldC0+Z2V0TmFtZSgpKSArICJfc2xpY2Vf cHRyIik7Ci0rICAgIHJldCA9IEluc2VydEluc3QocmV0LCBvZmZzZXQsIDEsIGxsdm06OlR3aW5l KHJldC0+Z2V0TmFtZSgpKSArICJfc2xpY2Vfb2Zmc2V0Iik7Ci0gICAgIHJldHVybiByZXQ7Ci0g fQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZXRFbGVtZW50UHRySW5z dChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwgbGx2bTo6VmFsdWUgKmluZGV4LCBjb25zdCBUeXBlICpw dHJSZWZUeXBlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBjaGFyICpuYW1lKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAg IGlmIChiYXNlUHRyID09IE5VTEwgfHwgaW5kZXggPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0 UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxM OwotQEAgLTIwNjUsOCArMjA1NCw4IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0 OjpHZXRFbGVtZW50UHRySW5zdChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwgbGx2bTo6Ci0gICAgICAg ICAvLyB1bmlmb3JtLCBzbyBqdXN0IGVtaXQgdGhlIHJlZ3VsYXIgTExWTSBHRVAgaW5zdHJ1Y3Rp b24KLSAgICAgICAgIGxsdm06OlZhbHVlICppbmRbMV0gPSB7aW5kZXh9OwotICAgICAgICAgbGx2 bTo6QXJyYXlSZWY8bGx2bTo6VmFsdWUgKj4gYXJyYXlSZWYoJmluZFswXSwgJmluZFsxXSk7Ci0t ICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9Ci0tICAgICAgICAgICAgbGx2bTo6R2V0 RWxlbWVudFB0ckluc3Q6OkNyZWF0ZShQVFlQRShiYXNlUHRyKSwgYmFzZVB0ciwgYXJyYXlSZWYs IG5hbWUgPyBuYW1lIDogImdlcCIsIGJibG9jayk7Ci0rICAgICAgICBsbHZtOjpJbnN0cnVjdGlv biAqaW5zdCA9IGxsdm06OkdldEVsZW1lbnRQdHJJbnN0OjpDcmVhdGUoUFRZUEUoYmFzZVB0ciks IGJhc2VQdHIsIGFycmF5UmVmLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8g ImdlcCIgOiBuYW1lLCBiYmxvY2spOwotICAgICAgICAgQWRkRGVidWdQb3MoaW5zdCk7Ci0gICAg ICAgICByZXR1cm4gaW5zdDsKLSAgICAgfSBlbHNlCi1AQCAtMjA3NCw3ICsyMDYzLDcgQEAgbGx2 bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkdldEVsZW1lbnRQdHJJbnN0KGxsdm06OlZh bHVlICpiYXNlUHRyLCBsbHZtOjoKLSB9Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENv bnRleHQ6OkdldEVsZW1lbnRQdHJJbnN0KGxsdm06OlZhbHVlICpiYXNlUHRyLCBsbHZtOjpWYWx1 ZSAqaW5kZXgwLCBsbHZtOjpWYWx1ZSAqaW5kZXgxLAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUeXBlICpwdHJSZWZUeXBlLCBjb25z dCBjaGFyICpuYW1lKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IFR5cGUgKnB0clJlZlR5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZu YW1lKSB7Ci0gICAgIGlmIChiYXNlUHRyID09IE5VTEwgfHwgaW5kZXgwID09IE5VTEwgfHwgaW5k ZXgxID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNv dW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLUBAIC0yMTE0LDggKzIxMDMsOCBAQCBs bHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6R2V0RWxlbWVudFB0ckluc3QobGx2bTo6 VmFsdWUgKmJhc2VQdHIsIGxsdm06OgotICAgICAgICAgLy8gdW5pZm9ybSwgc28ganVzdCBlbWl0 IHRoZSByZWd1bGFyIExMVk0gR0VQIGluc3RydWN0aW9uCi0gICAgICAgICBsbHZtOjpWYWx1ZSAq aW5kaWNlc1syXSA9IHtpbmRleDAsIGluZGV4MX07Ci0gICAgICAgICBsbHZtOjpBcnJheVJlZjxs bHZtOjpWYWx1ZSAqPiBhcnJheVJlZigmaW5kaWNlc1swXSwgJmluZGljZXNbMl0pOwotLSAgICAg ICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPQotLSAgICAgICAgICAgIGxsdm06OkdldEVsZW1l bnRQdHJJbnN0OjpDcmVhdGUoUFRZUEUoYmFzZVB0ciksIGJhc2VQdHIsIGFycmF5UmVmLCBuYW1l ID8gbmFtZSA6ICJnZXAiLCBiYmxvY2spOwotKyAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmlu c3QgPSBsbHZtOjpHZXRFbGVtZW50UHRySW5zdDo6Q3JlYXRlKFBUWVBFKGJhc2VQdHIpLCBiYXNl UHRyLCBhcnJheVJlZiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/ICJnZXAi IDogbmFtZSwgYmJsb2NrKTsKLSAgICAgICAgIEFkZERlYnVnUG9zKGluc3QpOwotICAgICAgICAg cmV0dXJuIGluc3Q7Ci0gICAgIH0gZWxzZSB7Ci1AQCAtMjEzOCw3ICsyMTI3LDcgQEAgbGx2bTo6 VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkdldEVsZW1lbnRQdHJJbnN0KGxsdm06OlZhbHVl ICpiYXNlUHRyLCBsbHZtOjoKLSB9Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRl eHQ6OkFkZEVsZW1lbnRPZmZzZXQobGx2bTo6VmFsdWUgKmZ1bGxCYXNlUHRyLCBpbnQgZWxlbWVu dE51bSwgY29uc3QgVHlwZSAqcHRyUmVmVHlwZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBQb2ludGVy VHlwZSAqKnJlc3VsdFB0clR5cGUpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSwgY29uc3QgUG9pbnRl clR5cGUgKipyZXN1bHRQdHJUeXBlKSB7Ci0gICAgIGlmIChyZXN1bHRQdHJUeXBlICE9IE5VTEwp Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgcHRyUmVmVHlwZSAhPSBOVUxMKTsKLSAK LUBAIC0yMTk1LDggKzIxODQsOCBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6 QWRkRWxlbWVudE9mZnNldChsbHZtOjpWYWx1ZSAqZnVsbEJhc2VQdHIsIGludAotICAgICAgICAg Ly8gSWYgdGhlIHBvaW50ZXIgaXMgdW5pZm9ybSwgd2UgY2FuIHVzZSB0aGUgcmVndWxhciBMTFZN IEdFUC4KLSAgICAgICAgIGxsdm06OlZhbHVlICpvZmZzZXRzWzJdID0ge0xMVk1JbnQzMigwKSwg TExWTUludDMyKGVsZW1lbnROdW0pfTsKLSAgICAgICAgIGxsdm06OkFycmF5UmVmPGxsdm06OlZh bHVlICo+IGFycmF5UmVmKCZvZmZzZXRzWzBdLCAmb2Zmc2V0c1syXSk7Ci0tICAgICAgICByZXN1 bHRQdHIgPQotLSAgICAgICAgICAgIGxsdm06OkdldEVsZW1lbnRQdHJJbnN0OjpDcmVhdGUoUFRZ UEUoYmFzZVB0ciksIGJhc2VQdHIsIGFycmF5UmVmLCBuYW1lID8gbmFtZSA6ICJzdHJ1Y3Rfb2Zm c2V0IiwgYmJsb2NrKTsKLSsgICAgICAgIHJlc3VsdFB0ciA9IGxsdm06OkdldEVsZW1lbnRQdHJJ bnN0OjpDcmVhdGUoUFRZUEUoYmFzZVB0ciksIGJhc2VQdHIsIGFycmF5UmVmLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLmlzVHJpdmlh bGx5RW1wdHkoKSA/ICJzdHJ1Y3Rfb2Zmc2V0IiA6IG5hbWUsIGJibG9jayk7Ci0gICAgIH0gZWxz ZSB7Ci0gICAgICAgICAvLyBPdGhlcndpc2UgZG8gdGhlIG1hdGggdG8gZmluZCB0aGUgb2Zmc2V0 IGFuZCBhZGQgaXQgdG8gdGhlIGdpdmVuCi0gICAgICAgICAvLyB2YXJ5aW5nIHBvaW50ZXJzCi1A QCAtMjIzNyw3ICsyMjI2LDcgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFk ZEVsZW1lbnRPZmZzZXQobGx2bTo6VmFsdWUgKmZ1bGxCYXNlUHRyLCBpbnQKLSAgICAgICAgIHJl dHVybiByZXN1bHRQdHI7Ci0gfQotIAotLWxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0 OjpTd2l0Y2hCb29sU2l6ZShsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnRvVHlwZSwg Y29uc3QgY2hhciAqbmFtZSkgewotK2xsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpT d2l0Y2hCb29sU2l6ZShsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnRvVHlwZSwgY29u c3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKCh2YWx1ZSA9PSBOVUxMKSB8fCAodG9U eXBlID09IE5VTEwpKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JD b3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMjI0OCwyMCArMjIzNywxOCBA QCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6U3dpdGNoQm9vbFNpemUobGx2bTo6 VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlCi0gICAgIGxsdm06OlZhbHVlICpuZXdCb29sID0gdmFs dWU7Ci0gICAgIGlmIChnLT50YXJnZXQtPmdldERhdGFMYXlvdXQoKS0+Z2V0VHlwZVNpemVJbkJp dHMoZnJvbVR5cGUpID4KLSAgICAgICAgIGctPnRhcmdldC0+Z2V0RGF0YUxheW91dCgpLT5nZXRU eXBlU2l6ZUluQml0cyh0b1R5cGUpKSB7Ci0tICAgICAgICBpZiAobmFtZSA9PSBOVUxMKQotLSAg ICAgICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2YWx1ZSwgIl9zd2l0Y2hCb29sIik7Ci0tICAg ICAgICBuZXdCb29sID0gVHJ1bmNJbnN0KHZhbHVlLCB0b1R5cGUsIG5hbWUpOwotKyAgICAgICAg bmV3Qm9vbCA9Ci0rICAgICAgICAgICAgVHJ1bmNJbnN0KHZhbHVlLCB0b1R5cGUsIG5hbWUuaXNU cml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHZhbHVlLT5nZXROYW1lKCkpICsgIl9zd2l0 Y2hCb29sIikgOiBuYW1lKTsKLSAgICAgfSBlbHNlIGlmIChnLT50YXJnZXQtPmdldERhdGFMYXlv dXQoKS0+Z2V0VHlwZVNpemVJbkJpdHMoZnJvbVR5cGUpIDwKLSAgICAgICAgICAgICAgICBnLT50 YXJnZXQtPmdldERhdGFMYXlvdXQoKS0+Z2V0VHlwZVNpemVJbkJpdHModG9UeXBlKSkgewotLSAg ICAgICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAgICAgICBuYW1lID0gTExWTUdldE5hbWUo dmFsdWUsICJfc3dpdGNoQm9vbCIpOwotLSAgICAgICAgbmV3Qm9vbCA9IFNFeHRJbnN0KHZhbHVl LCB0b1R5cGUsIG5hbWUpOwotKyAgICAgICAgbmV3Qm9vbCA9Ci0rICAgICAgICAgICAgU0V4dElu c3QodmFsdWUsIHRvVHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAobGx2bTo6VHdpbmUo dmFsdWUtPmdldE5hbWUoKSkgKyAiX3N3aXRjaEJvb2wiKSA6IG5hbWUpOwotICAgICB9Ci0gCi0g ICAgIHJldHVybiBuZXdCb29sOwotIH0KLSAKLS1sbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29u dGV4dDo6TG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgVHlwZSAqdHlwZSwgY29uc3Qg Y2hhciAqbmFtZSkgewotK2xsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpMb2FkSW5z dChsbHZtOjpWYWx1ZSAqcHRyLCBjb25zdCBUeXBlICp0eXBlLCBjb25zdCBsbHZtOjpUd2luZSAm bmFtZSkgewotICAgICBpZiAocHRyID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJy ZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLUBAIC0y MjcwLDEzICsyMjU3LDEzIEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpMb2Fk SW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBjb25zdCBUeXBlICp0eXBlLCBjCi0gICAgIGxsdm06OlBv aW50ZXJUeXBlICpwdCA9IGxsdm06OmR5bl9jYXN0PGxsdm06OlBvaW50ZXJUeXBlPihwdHItPmdl dFR5cGUoKSk7Ci0gICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBwdCAhPSBOVUxMKTsKLSAKLS0g ICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZShwdHIsICJf bG9hZCIpOwotLQotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotLSAg ICBsbHZtOjpMb2FkSW5zdCAqaW5zdCA9IG5ldyBsbHZtOjpMb2FkSW5zdChwdC0+Z2V0UG9pbnRl ckVsZW1lbnRUeXBlKCksIHB0ciwgbmFtZSwgYmJsb2NrKTsKLSsgICAgbGx2bTo6TG9hZEluc3Qg Kmluc3QgPQotKyAgICAgICAgbmV3IGxsdm06OkxvYWRJbnN0KHB0LT5nZXRQb2ludGVyRWxlbWVu dFR5cGUoKSwgcHRyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuaXNUcml2aWFs bHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJfbG9hZCIpIDogbmFt ZSwgYmJsb2NrKTsKLSAjZWxzZQotLSAgICBsbHZtOjpMb2FkSW5zdCAqaW5zdCA9IG5ldyBsbHZt OjpMb2FkSW5zdChwdHIsIG5hbWUsIGJibG9jayk7Ci0rICAgIGxsdm06OkxvYWRJbnN0ICppbnN0 ID0KLSsgICAgICAgIG5ldyBsbHZtOjpMb2FkSW5zdChwdHIsIG5hbWUuaXNUcml2aWFsbHlFbXB0 eSgpID8gKGxsdm06OlR3aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJfbG9hZCIpIDogbmFtZSwgYmJs b2NrKTsKLSAjZW5kaWYKLSAKLSAgICAgaWYgKGctPm9wdC5mb3JjZUFsaWduZWRNZW1vcnkgJiYg bGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4ocHQtPmdldEVsZW1lbnRUeXBlKCkpKSB7 Ci1AQCAtMjMwNyw4ICsyMjk0LDggQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6 OkxvYWRJbnN0KGxsdm06OlZhbHVlICpwdHIsIGNvbnN0IFR5cGUgKnR5cGUsIGMKLSBzdGF0aWMg bGx2bTo6VmFsdWUgKmxGaW5hbFNsaWNlT2Zmc2V0KEZ1bmN0aW9uRW1pdENvbnRleHQgKmN0eCwg bGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgUG9pbnRlclR5cGUgKipwdHJUeXBlKSB7Ci0gICAgIEFz c2VydChDYXN0VHlwZTxQb2ludGVyVHlwZT4oKnB0clR5cGUpICE9IE5VTEwpOwotIAotLSAgICBs bHZtOjpWYWx1ZSAqc2xpY2VQdHIgPSBjdHgtPkV4dHJhY3RJbnN0KHB0ciwgMCwgTExWTUdldE5h bWUocHRyLCAiX3B0ciIpKTsKLS0gICAgbGx2bTo6VmFsdWUgKnNsaWNlT2Zmc2V0ID0gY3R4LT5F eHRyYWN0SW5zdChwdHIsIDEsIExMVk1HZXROYW1lKHB0ciwgIl9vZmZzZXQiKSk7Ci0rICAgIGxs dm06OlZhbHVlICpzbGljZVB0ciA9IGN0eC0+RXh0cmFjdEluc3QocHRyLCAwLCBsbHZtOjpUd2lu ZShwdHItPmdldE5hbWUoKSkgKyAiX3B0ciIpOwotKyAgICBsbHZtOjpWYWx1ZSAqc2xpY2VPZmZz ZXQgPSBjdHgtPkV4dHJhY3RJbnN0KHB0ciwgMSwgbGx2bTo6VHdpbmUocHRyLT5nZXROYW1lKCkp ICsgIl9vZmZzZXQiKTsKLSAKLSAgICAgLy8gc2xpY2VQdHIgc2hvdWxkIGJlIGEgcG9pbnRlciB0 byBhbiBzb2Etd2lkdGggd2lkZSBhcnJheSBvZiB0aGUKLSAgICAgLy8gZmluYWwgYXRvbWljL2Vu dW0vcG9pbnRlciB0eXBlCi1AQCAtMjMyNywxNCArMjMxNCwxNCBAQCBzdGF0aWMgbGx2bTo6VmFs dWUgKmxGaW5hbFNsaWNlT2Zmc2V0KEZ1bmN0aW9uRW1pdENvbnRleHQgKmN0eCwgbGx2bTo6VmFs dWUgKnB0cgotICAgICAgICAgc2xpY2VQdHIgPSBjdHgtPkJpdENhc3RJbnN0KHNsaWNlUHRyLCAo KnB0clR5cGUpLT5MTFZNVHlwZShnLT5jdHgpKTsKLSAKLSAgICAgLy8gQW5kIGZpbmFsbHkgaW5k ZXggYmFzZWQgb24gdGhlIHNsaWNlIG9mZnNldAotLSAgICByZXR1cm4gY3R4LT5HZXRFbGVtZW50 UHRySW5zdChzbGljZVB0ciwgc2xpY2VPZmZzZXQsICpwdHJUeXBlLCBMTFZNR2V0TmFtZShzbGlj ZVB0ciwgIl9maW5hbF9nZXAiKSk7Ci0rICAgIHJldHVybiBjdHgtPkdldEVsZW1lbnRQdHJJbnN0 KHNsaWNlUHRyLCBzbGljZU9mZnNldCwgKnB0clR5cGUsIGxsdm06OlR3aW5lKHNsaWNlUHRyLT5n ZXROYW1lKCkpICsgIl9maW5hbF9nZXAiKTsKLSB9Ci0gCi0gLyoqIFV0aWxpdHkgcm91dGluZSB0 aGF0IGxvYWRzIGZyb20gYSB1bmlmb3JtIHBvaW50ZXIgdG8gc29hPD4gZGF0YSwKLSAgICAgcmV0 dXJuaW5nIGEgcmVndWxhciB1bmlmb3JtIChub24tU09BIHJlc3VsdCkuCi0gICovCi0gbGx2bTo6 VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OmxvYWRVbmlmb3JtRnJvbVNPQShsbHZtOjpWYWx1 ZSAqcHRyLCBsbHZtOjpWYWx1ZSAqbWFzaywgY29uc3QgUG9pbnRlclR5cGUgKnB0clR5cGUsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBjaGFyICpuYW1lKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBjb25zdCBUeXBl ICp1bmlmVHlwZSA9IHB0clR5cGUtPkdldEJhc2VUeXBlKCktPkdldEFzVW5pZm9ybVR5cGUoKTsK LSAKLSAgICAgY29uc3QgQ29sbGVjdGlvblR5cGUgKmN0ID0gQ2FzdFR5cGU8Q29sbGVjdGlvblR5 cGU+KHB0clR5cGUtPkdldEJhc2VUeXBlKCkpOwotQEAgLTIzNjMsNyArMjM1MCw3IEBAIGxsdm06 OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0Ojpsb2FkVW5pZm9ybUZyb21TT0EobGx2bTo6VmFs dWUgKnB0ciwgbGx2bTo6VmFsCi0gfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250 ZXh0OjpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZSAqbWFzaywgY29uc3Qg VHlwZSAqcHRyUmVmVHlwZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgY2hhciAqbmFtZSwgYm9vbCBvbmVfZWxlbSkgewotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSwgYm9v bCBvbmVfZWxlbSkgewotICAgICBpZiAocHRyID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBv cyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsK LUBAIC0yMzcxLDkgKzIzNTgsNiBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6 TG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1hc2ssCi0gCi0gICAgIEFz c2VydFBvcyhjdXJyZW50UG9zLCBwdHJSZWZUeXBlICE9IE5VTEwgJiYgbWFzayAhPSBOVUxMKTsK LSAKLS0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZShw dHIsICJfbG9hZCIpOwotLQotICAgICBjb25zdCBQb2ludGVyVHlwZSAqcHRyVHlwZTsKLSAgICAg Y29uc3QgVHlwZSAqZWxUeXBlOwotICAgICBpZiAoQ2FzdFR5cGU8UmVmZXJlbmNlVHlwZT4ocHRy UmVmVHlwZSkgIT0gTlVMTCkgewotQEAgLTIzOTMsNyArMjM3Nyw4IEBAIGxsdm06OlZhbHVlICpG dW5jdGlvbkVtaXRDb250ZXh0OjpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1 ZSAqbWFzaywKLSAKLSAgICAgaWYgKHB0clR5cGUtPklzVW5pZm9ybVR5cGUoKSkgewotICAgICAg ICAgaWYgKHB0clR5cGUtPklzU2xpY2UoKSkgewotLSAgICAgICAgICAgIHJldHVybiBsb2FkVW5p Zm9ybUZyb21TT0EocHRyLCBtYXNrLCBwdHJUeXBlLCBuYW1lKTsKLSsgICAgICAgICAgICByZXR1 cm4gbG9hZFVuaWZvcm1Gcm9tU09BKHB0ciwgbWFzaywgcHRyVHlwZSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06 OlR3aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJfbG9hZCIpIDogbmFtZSk7Ci0gICAgICAgICB9IGVs c2UgewotICAgICAgICAgICAgIC8vIEZJWE1FOiBzYW1lIGlzc3VlIGFzIGFib3ZlIGxvYWQgaW5z dCByZWdhcmRpbmcgYWxpZ25tZW50Li4uCi0gICAgICAgICAgICAgLy8KLUBAIC0yNDA1LDExICsy MzkwLDE1IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpMb2FkSW5zdChsbHZt OjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZSAqbWFzaywKLSAgICAgICAgICAgICBjb25zdCBBdG9t aWNUeXBlICphdG9taWNUeXBlID0gQ2FzdFR5cGU8QXRvbWljVHlwZT4ocHRyVHlwZS0+R2V0QmFz ZVR5cGUoKSk7Ci0gCi0gI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENfTExWTV8xMF8wCi0t ICAgICAgICAgICAgbGx2bTo6TG9hZEluc3QgKmluc3QgPSBuZXcgbGx2bTo6TG9hZEluc3QocHRy LCBuYW1lLCBmYWxzZSAvKiBub3Qgdm9sYXRpbGUgKi8sIGJibG9jayk7Ci0rICAgICAgICAgICAg bGx2bTo6TG9hZEluc3QgKmluc3QgPQotKyAgICAgICAgICAgICAgICBuZXcgbGx2bTo6TG9hZElu c3QocHRyLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IChsbHZtOjpUd2luZShwdHItPmdldE5h bWUoKSkgKyAiX2xvYWQiKSA6IG5hbWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmYWxzZSAvKiBub3Qgdm9sYXRpbGUgKi8sIGJibG9jayk7Ci0gI2Vsc2UgLy8gTExWTSAx MS4wKwotICAgICAgICAgICAgIGxsdm06OlBvaW50ZXJUeXBlICpwdHJfdHlwZSA9IGxsdm06OmR5 bl9jYXN0PGxsdm06OlBvaW50ZXJUeXBlPihwdHItPmdldFR5cGUoKSk7Ci0gICAgICAgICAgICAg bGx2bTo6TG9hZEluc3QgKmluc3QgPQotLSAgICAgICAgICAgICAgICBuZXcgbGx2bTo6TG9hZElu c3QocHRyX3R5cGUtPmdldFBvaW50ZXJFbGVtZW50VHlwZSgpLCBwdHIsIG5hbWUsIGZhbHNlIC8q IG5vdCB2b2xhdGlsZSAqLywgYmJsb2NrKTsKLSsgICAgICAgICAgICAgICAgbmV3IGxsdm06Okxv YWRJbnN0KHB0cl90eXBlLT5nZXRQb2ludGVyRWxlbWVudFR5cGUoKSwgcHRyLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAobGx2 bTo6VHdpbmUocHRyLT5nZXROYW1lKCkpICsgIl9sb2FkIikgOiBuYW1lLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgLyogbm90IHZvbGF0aWxlICovLCBiYmxvY2sp OwotICNlbmRpZgotIAotICAgICAgICAgICAgIGlmIChhdG9taWNUeXBlICE9IE5VTEwgJiYgYXRv bWljVHlwZS0+SXNWYXJ5aW5nVHlwZSgpKSB7Ci1AQCAtMjQzMyw3ICsyNDIyLDggQEAgbGx2bTo6 VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkxvYWRJbnN0KGxsdm06OlZhbHVlICpwdHIsIGxs dm06OlZhbHVlICptYXNrLAotICAgICB9IGVsc2UgewotICAgICAgICAgLy8gT3RoZXJ3aXNlIHdl IHNob3VsZCBoYXZlIGEgdmFyeWluZyBwdHIgYW5kIGl0J3MgdGltZSBmb3IgYQotICAgICAgICAg Ly8gZ2F0aGVyLgotLSAgICAgICAgbGx2bTo6VmFsdWUgKmdhdGhlcl9yZXN1bHQgPSBnYXRoZXIo cHRyLCBwdHJUeXBlLCBHZXRGdWxsTWFzaygpLCBuYW1lKTsKLSsgICAgICAgIGxsdm06OlZhbHVl ICpnYXRoZXJfcmVzdWx0ID0gZ2F0aGVyKHB0ciwgcHRyVHlwZSwgR2V0RnVsbE1hc2soKSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuaXNUcml2aWFs bHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJfbG9hZCIpIDogbmFt ZSk7Ci0gICAgICAgICBpZiAoIW9uZV9lbGVtKQotICAgICAgICAgICAgIHJldHVybiBnYXRoZXJf cmVzdWx0OwotIAotQEAgLTI0NTMsMTkgKzI0NDMsMTkgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9u RW1pdENvbnRleHQ6OkxvYWRJbnN0KGxsdm06OlZhbHVlICpwdHIsIGxsdm06OlZhbHVlICptYXNr LAotICAgICAgICAgLy8gV2UgY2FuIGFjdHVhbGx5IGNhbGwgZWl0aGVyIG9uZSwgc2luY2UgYm90 aCBhcmUgaTMycyBhcyBmYXIgYXMKLSAgICAgICAgIC8vIExMVk0ncyB0eXBlIHN5c3RlbSBpcyBj b25jZXJuZWQuLi4KLSAgICAgICAgIGxsdm06OkZ1bmN0aW9uICpmbW0gPSBtbVswXS0+ZnVuY3Rp b247Ci0tICAgICAgICBsbHZtOjpWYWx1ZSAqaW50X21hc2sgPSBDYWxsSW5zdChmbW0sIE5VTEws IG1hc2ssIExMVk1HZXROYW1lKG1hc2ssICJfbW92bXNrIikpOwotKyAgICAgICAgbGx2bTo6VmFs dWUgKmludF9tYXNrID0gQ2FsbEluc3QoZm1tLCBOVUxMLCBtYXNrLCBsbHZtOjpUd2luZShtYXNr LT5nZXROYW1lKCkpICsgIl9tb3Ztc2siKTsKLSAgICAgICAgIHN0ZDo6dmVjdG9yPFN5bWJvbCAq PiBsejsKLSAgICAgICAgIG0tPnN5bWJvbFRhYmxlLT5Mb29rdXBGdW5jdGlvbigiX19jb3VudF90 cmFpbGluZ196ZXJvc19pNjQiLCAmbHopOwotICAgICAgICAgbGx2bTo6RnVuY3Rpb24gKmZseiA9 IGx6WzBdLT5mdW5jdGlvbjsKLS0gICAgICAgIGxsdm06OlZhbHVlICplbGVtX2lkeCA9IENhbGxJ bnN0KGZseiwgTlVMTCwgaW50X21hc2ssIExMVk1HZXROYW1lKG1hc2ssICJfY2x6IikpOwotLSAg ICAgICAgbGx2bTo6VmFsdWUgKmVsZW0gPSBsbHZtOjpFeHRyYWN0RWxlbWVudEluc3Q6OkNyZWF0 ZShnYXRoZXJfcmVzdWx0LCBlbGVtX2lkeCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTUdldE5hbWUoZ2F0aGVyX3Jlc3Vs dCwgIl91bWFza2VkX2VsZW0iKSwgYmJsb2NrKTsKLSsgICAgICAgIGxsdm06OlZhbHVlICplbGVt X2lkeCA9IENhbGxJbnN0KGZseiwgTlVMTCwgaW50X21hc2ssIGxsdm06OlR3aW5lKG1hc2stPmdl dE5hbWUoKSkgKyAiX2NseiIpOwotKyAgICAgICAgbGx2bTo6VmFsdWUgKmVsZW0gPSBsbHZtOjpF eHRyYWN0RWxlbWVudEluc3Q6OkNyZWF0ZSgKLSsgICAgICAgICAgICBnYXRoZXJfcmVzdWx0LCBl bGVtX2lkeCwgbGx2bTo6VHdpbmUoZ2F0aGVyX3Jlc3VsdC0+Z2V0TmFtZSgpKSArICJfdW1hc2tl ZF9lbGVtIiwgYmJsb2NrKTsKLSAgICAgICAgIHJldHVybiBlbGVtOwotICAgICB9Ci0gfQotIAot IGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpnYXRoZXIobGx2bTo6VmFsdWUgKnB0 ciwgY29uc3QgUG9pbnRlclR5cGUgKnB0clR5cGUsIGxsdm06OlZhbHVlICptYXNrLAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSkgewot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdp bmUgJm5hbWUpIHsKLSAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYSB2YXJ5aW5nIHBvaW50ZXIgaWYg d2UgZ2V0IGhlcmUuLi4KLSAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIHB0clR5cGUtPklzVmFy eWluZ1R5cGUoKSk7Ci0gCi1AQCAtMjYwMiw3ICsyNTkyLDggQEAgdm9pZCBGdW5jdGlvbkVtaXRD b250ZXh0OjphZGRHU01ldGFkYXRhKGxsdm06OlZhbHVlICp2LCBTb3VyY2VQb3MgcG9zKSB7Ci0g ICAgIGluc3QtPnNldE1ldGFkYXRhKCJsYXN0X2NvbHVtbiIsIG1kKTsKLSB9Ci0gCi0tbGx2bTo6 VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFsbG9jYUluc3QobGx2bTo6VHlwZSAqbGx2bVR5 cGUsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBhbGlnbiwgYm9vbCBhdEVudHJ5QmxvY2spIHsKLSts bHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QWxsb2NhSW5zdChsbHZtOjpUeXBlICps bHZtVHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUsIGludCBhbGlnbiwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGF0RW50cnlCbG9jaykgewot ICAgICBpZiAobGx2bVR5cGUgPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQ b3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwotQEAgLTI2MTUs MTIgKzI2MDYsMTIgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFsbG9jYUlu c3QobGx2bTo6VHlwZSAqbGx2bVR5cGUsIGNvbnN0IGNoYXIgKm4KLSAgICAgICAgIGxsdm06Oklu c3RydWN0aW9uICpyZXRJbnN0ID0gYWxsb2NhQmxvY2stPmdldFRlcm1pbmF0b3IoKTsKLSAgICAg ICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCByZXRJbnN0KTsKLSAgICAgICAgIHVuc2lnbmVkIEFT ID0gbGx2bUZ1bmN0aW9uLT5nZXRQYXJlbnQoKS0+Z2V0RGF0YUxheW91dCgpLmdldEFsbG9jYUFk ZHJTcGFjZSgpOwotLSAgICAgICAgaW5zdCA9IG5ldyBsbHZtOjpBbGxvY2FJbnN0KGxsdm1UeXBl LCBBUywgbmFtZSA/IG5hbWUgOiAiIiwgcmV0SW5zdCk7Ci0rICAgICAgICBpbnN0ID0gbmV3IGxs dm06OkFsbG9jYUluc3QobGx2bVR5cGUsIEFTLCBuYW1lLCByZXRJbnN0KTsKLSAgICAgfSBlbHNl IHsKLSAgICAgICAgIC8vIFVubGVzcyB0aGUgY2FsbGVyIG92ZXJyb2RlIHRoZSBkZWZhdWx0IGFu ZCB3YW50cyBpdCBpbiB0aGUKLSAgICAgICAgIC8vIGN1cnJlbnQgYmFzaWMgYmxvY2sKLSAgICAg ICAgIHVuc2lnbmVkIEFTID0gbGx2bUZ1bmN0aW9uLT5nZXRQYXJlbnQoKS0+Z2V0RGF0YUxheW91 dCgpLmdldEFsbG9jYUFkZHJTcGFjZSgpOwotLSAgICAgICAgaW5zdCA9IG5ldyBsbHZtOjpBbGxv Y2FJbnN0KGxsdm1UeXBlLCBBUywgbmFtZSA/IG5hbWUgOiAiIiwgYmJsb2NrKTsKLSsgICAgICAg IGluc3QgPSBuZXcgbGx2bTo6QWxsb2NhSW5zdChsbHZtVHlwZSwgQVMsIG5hbWUsIGJibG9jayk7 Ci0gICAgIH0KLSAKLSAgICAgLy8gSWYgbm8gYWxpZ25tZW50IHdhcyBzcGVjaWZpZWQgYnV0IHdl IGhhdmUgYW4gYXJyYXkgb2YgYSB1bmlmb3JtCi1AQCAtMjYzOSw3ICsyNjMwLDggQEAgbGx2bTo6 VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFsbG9jYUluc3QobGx2bTo6VHlwZSAqbGx2bVR5 cGUsIGNvbnN0IGNoYXIgKm4KLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotIAotLWxsdm06OlZhbHVl ICpGdW5jdGlvbkVtaXRDb250ZXh0OjpBbGxvY2FJbnN0KGNvbnN0IFR5cGUgKnB0clR5cGUsIGNv bnN0IGNoYXIgKm5hbWUsIGludCBhbGlnbiwgYm9vbCBhdEVudHJ5QmxvY2spIHsKLStsbHZtOjpW YWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QWxsb2NhSW5zdChjb25zdCBUeXBlICpwdHJUeXBl LCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSwgaW50IGFsaWduLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYXRFbnRyeUJsb2NrKSB7Ci0gICAgIGlm IChwdHJUeXBlID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5l cnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLUBAIC0zMDc1LDY2ICszMDY3 LDU5IEBAIGxsdm06Okluc3RydWN0aW9uICpGdW5jdGlvbkVtaXRDb250ZXh0OjpCcmFuY2hJbnN0 KGxsdm06OkJhc2ljQmxvY2sgKnRydWVCbG9jaywKLSAgICAgcmV0dXJuIGI7Ci0gfQotIAotLWxs dm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpFeHRyYWN0SW5zdChsbHZtOjpWYWx1ZSAq diwgaW50IGVsdCwgY29uc3QgY2hhciAqbmFtZSkgewotK2xsdm06OlZhbHVlICpGdW5jdGlvbkVt aXRDb250ZXh0OjpFeHRyYWN0SW5zdChsbHZtOjpWYWx1ZSAqdiwgaW50IGVsdCwgY29uc3QgbGx2 bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0 UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxM OwotICAgICB9Ci0gCi0tICAgIGlmIChuYW1lID09IE5VTEwpIHsKLS0gICAgICAgIGNoYXIgYnVm WzMyXTsKLS0gICAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJfZXh0cmFjdF8lZCIs IGVsdCk7Ci0tICAgICAgICBuYW1lID0gTExWTUdldE5hbWUodiwgYnVmKTsKLS0gICAgfQotICAg ICBsbHZtOjpJbnN0cnVjdGlvbiAqZWkgPSBOVUxMOwotICAgICBpZiAobGx2bTo6aXNhPGxsdm06 OlZlY3RvclR5cGU+KHYtPmdldFR5cGUoKSkpCi0tICAgICAgICBlaSA9IGxsdm06OkV4dHJhY3RF bGVtZW50SW5zdDo6Q3JlYXRlKHYsIExMVk1JbnQzMihlbHQpLCBuYW1lLCBiYmxvY2spOwotKyAg ICAgICAgZWkgPSBsbHZtOjpFeHRyYWN0RWxlbWVudEluc3Q6OkNyZWF0ZSgKLSsgICAgICAgICAg ICB2LCBMTFZNSW50MzIoZWx0KSwKLSsgICAgICAgICAgICBuYW1lLmlzVHJpdmlhbGx5RW1wdHko KSA/ICgobGx2bTo6VHdpbmUodi0+Z2V0TmFtZSgpKSArICJfZXh0cmFjdF8iKSArIGxsdm06OlR3 aW5lKGVsdCkpIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgZWxzZQotLSAgICAgICAgZWkgPSBsbHZt OjpFeHRyYWN0VmFsdWVJbnN0OjpDcmVhdGUodiwgZWx0LCBuYW1lLCBiYmxvY2spOwotKyAgICAg ICAgZWkgPSBsbHZtOjpFeHRyYWN0VmFsdWVJbnN0OjpDcmVhdGUoCi0rICAgICAgICAgICAgdiwg ZWx0LCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/ICgobGx2bTo6VHdpbmUodi0+Z2V0TmFtZSgp KSArICJfZXh0cmFjdF8iKSArIGxsdm06OlR3aW5lKGVsdCkpIDogbmFtZSwKLSsgICAgICAgICAg ICBiYmxvY2spOwotICAgICBBZGREZWJ1Z1BvcyhlaSk7Ci0gICAgIHJldHVybiBlaTsKLSB9Ci0g Ci0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6Okluc2VydEluc3QobGx2bTo6VmFs dWUgKnYsIGxsdm06OlZhbHVlICplbHRWYWwsIGludCBlbHQsIGNvbnN0IGNoYXIgKm5hbWUpIHsK LStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6SW5zZXJ0SW5zdChsbHZtOjpWYWx1 ZSAqdiwgbGx2bTo6VmFsdWUgKmVsdFZhbCwgaW50IGVsdCwgY29uc3QgbGx2bTo6VHdpbmUgJm5h bWUpIHsKLSAgICAgaWYgKHYgPT0gTlVMTCB8fCBlbHRWYWwgPT0gTlVMTCkgewotICAgICAgICAg QXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVy biBOVUxMOwotICAgICB9Ci0gCi0tICAgIGlmIChuYW1lID09IE5VTEwpIHsKLS0gICAgICAgIGNo YXIgYnVmWzMyXTsKLS0gICAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJfaW5zZXJ0 XyVkIiwgZWx0KTsKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2LCBidWYpOwotLSAgICB9 Ci0tCi0gICAgIGxsdm06Okluc3RydWN0aW9uICppaSA9IE5VTEw7Ci0gICAgIGlmIChsbHZtOjpp c2E8bGx2bTo6VmVjdG9yVHlwZT4odi0+Z2V0VHlwZSgpKSkKLS0gICAgICAgIGlpID0gbGx2bTo6 SW5zZXJ0RWxlbWVudEluc3Q6OkNyZWF0ZSh2LCBlbHRWYWwsIExMVk1JbnQzMihlbHQpLCBuYW1l LCBiYmxvY2spOwotKyAgICAgICAgaWkgPSBsbHZtOjpJbnNlcnRFbGVtZW50SW5zdDo6Q3JlYXRl KAotKyAgICAgICAgICAgIHYsIGVsdFZhbCwgTExWTUludDMyKGVsdCksCi0rICAgICAgICAgICAg bmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAoKGxsdm06OlR3aW5lKHYtPmdldE5hbWUoKSkgKyAi X2luc2VydF8iKSArIGxsdm06OlR3aW5lKGVsdCkpIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgZWxz ZQotLSAgICAgICAgaWkgPSBsbHZtOjpJbnNlcnRWYWx1ZUluc3Q6OkNyZWF0ZSh2LCBlbHRWYWws IGVsdCwgbmFtZSwgYmJsb2NrKTsKLSsgICAgICAgIGlpID0gbGx2bTo6SW5zZXJ0VmFsdWVJbnN0 OjpDcmVhdGUoCi0rICAgICAgICAgICAgdiwgZWx0VmFsLCBlbHQsCi0rICAgICAgICAgICAgbmFt ZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAoKGxsdm06OlR3aW5lKHYtPmdldE5hbWUoKSkgKyAiX2lu c2VydF8iKSArIGxsdm06OlR3aW5lKGVsdCkpIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgQWRkRGVi dWdQb3MoaWkpOwotICAgICByZXR1cm4gaWk7Ci0gfQotIAotLWxsdm06OlZhbHVlICpGdW5jdGlv bkVtaXRDb250ZXh0OjpTaHVmZmxlSW5zdChsbHZtOjpWYWx1ZSAqdjEsIGxsdm06OlZhbHVlICp2 MiwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpWYWx1ZSAq RnVuY3Rpb25FbWl0Q29udGV4dDo6U2h1ZmZsZUluc3QobGx2bTo6VmFsdWUgKnYxLCBsbHZtOjpW YWx1ZSAqdjIsIGxsdm06OlZhbHVlICptYXNrLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAo djEgPT0gTlVMTCB8fCB2MiA9PSBOVUxMIHx8IG1hc2sgPT0gTlVMTCkgewotICAgICAgICAgQXNz ZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBO VUxMOwotICAgICB9Ci0gCi0tICAgIGlmIChuYW1lID09IE5VTEwpIHsKLS0gICAgICAgIGNoYXIg YnVmWzMyXTsKLS0gICAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJfc2h1ZmZsZSIp OwotLSAgICAgICAgbmFtZSA9IExMVk1HZXROYW1lKHYxLCBidWYpOwotLSAgICB9Ci0tCi0tICAg IGxsdm06Okluc3RydWN0aW9uICppaSA9IG5ldyBsbHZtOjpTaHVmZmxlVmVjdG9ySW5zdCh2MSwg djIsIG1hc2ssIG5hbWUsIGJibG9jayk7Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICppaSA9IG5l dyBsbHZtOjpTaHVmZmxlVmVjdG9ySW5zdCgKLSsgICAgICAgIHYxLCB2MiwgbWFzaywgbmFtZS5p c1RyaXZpYWxseUVtcHR5KCkgPyAobGx2bTo6VHdpbmUodjEtPmdldE5hbWUoKSkgKyAiX3NodWZm bGUiKSA6IG5hbWUsIGJibG9jayk7Ci0gCi0gICAgIEFkZERlYnVnUG9zKGlpKTsKLSAgICAgcmV0 dXJuIGlpOwotIH0KLSAKLS1sbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QnJvYWRj YXN0VmFsdWUobGx2bTo6VmFsdWUgKnYsIGxsdm06OlR5cGUgKnZlY1R5cGUsIGNvbnN0IGNoYXIg Km5hbWUpIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QnJvYWRjYXN0VmFs dWUobGx2bTo6VmFsdWUgKnYsIGxsdm06OlR5cGUgKnZlY1R5cGUsIGNvbnN0IGxsdm06OlR3aW5l ICZuYW1lKSB7Ci0gICAgIGlmICh2ID09IE5VTEwgfHwgdmVjVHlwZSA9PSBOVUxMKSB7Ci0gICAg ICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAg cmV0dXJuIE5VTEw7Ci1AQCAtMzE0OCwxMiArMzEzMyw2IEBAIGxsdm06OlZhbHVlICpGdW5jdGlv bkVtaXRDb250ZXh0OjpCcm9hZGNhc3RWYWx1ZShsbHZtOjpWYWx1ZSAqdiwgbGx2bTo6VHlwZSAq dmVjCi0gICAgIEFzc2VydCh0eSAmJiB0eS0+Z2V0VmVjdG9yRWxlbWVudFR5cGUoKSA9PSB2LT5n ZXRUeXBlKCkpOwotICNlbmRpZgotIAotLSAgICBpZiAobmFtZSA9PSBOVUxMKSB7Ci0tICAgICAg ICBjaGFyIGJ1ZlszMl07Ci0tICAgICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiX2Jy b2FkY2FzdCIpOwotLSAgICAgICAgbmFtZSA9IExMVk1HZXROYW1lKHYsIGJ1Zik7Ci0tICAgIH0K LS0KLSAgICAgLy8gR2VuZXJhdGUgdGhlIGZvbGxvd2luZyBzZXF1ZW5jZToKLSAgICAgLy8gICAl bmFtZV9pbml0LmkgPSBpbnNlcnRlbGVtZW50IDw0IHggaTMyPiB1bmRlZiwgaTMyICV2YWwsIGkz MiAwCi0gICAgIC8vICAgJW5hbWUuaSA9IHNodWZmbGV2ZWN0b3IgPDQgeCBpMzI+ICVuYW1lX2lu aXQuaSwgPDQgeCBpMzI+IHVuZGVmLAotQEAgLTMxNjMsNyArMzE0Miw3IEBAIGxsdm06OlZhbHVl ICpGdW5jdGlvbkVtaXRDb250ZXh0OjpCcm9hZGNhc3RWYWx1ZShsbHZtOjpWYWx1ZSAqdiwgbGx2 bTo6VHlwZSAqdmVjCi0gICAgIGxsdm06OlZhbHVlICp1bmRlZjIgPSBsbHZtOjpVbmRlZlZhbHVl OjpnZXQodmVjVHlwZSk7Ci0gCi0gICAgIC8vIEluc2VydEVsZW1lbnQKLS0gICAgbGx2bTo6VHdp bmUgdHcgPSBsbHZtOjpUd2luZShuYW1lKSArIGxsdm06OlR3aW5lKCJfaW5pdCIpOwotKyAgICBs bHZtOjpUd2luZSB0dyA9IG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHYt PmdldE5hbWUoKSkgKyAiX2Jyb2FkY2FzdCIpIDogbmFtZSArIGxsdm06OlR3aW5lKCJfaW5pdCIp OwotICAgICBsbHZtOjpWYWx1ZSAqaW5zZXJ0ID0gSW5zZXJ0SW5zdCh1bmRlZjEsIHYsIDAsIHR3 LnN0cigpLmNfc3RyKCkpOwotIAotICAgICAvLyBTaHVmZmxlVmVjdG9yCi1AQCAtMzE3OSwyOCAr MzE1OCwyNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QnJvYWRjYXN0VmFs dWUobGx2bTo6VmFsdWUgKnYsIGxsdm06OlR5cGUgKnZlYwotICAgICAgICAgbGx2bTo6Q29uc3Rh bnRWZWN0b3I6OmdldFNwbGF0KGxsdm06OkVsZW1lbnRDb3VudDo6Z2V0KHN0YXRpY19jYXN0PHVu c2lnbmVkIGludD4odHktPmdldE51bUVsZW1lbnRzKCkpLCBmYWxzZSksCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnQ6OmdldE51bGxWYWx1ZShs bHZtOjpUeXBlOjpnZXRJbnQzMlR5KCpnLT5jdHgpKSk7Ci0gI2VuZGlmCi0tICAgIGxsdm06OlZh bHVlICpyZXQgPSBTaHVmZmxlSW5zdChpbnNlcnQsIHVuZGVmMiwgemVyb1ZlYywgbmFtZSk7Ci0r ICAgIGxsdm06OlZhbHVlICpyZXQgPSBTaHVmZmxlSW5zdChpbnNlcnQsIHVuZGVmMiwgemVyb1Zl YywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuaXNUcml2aWFsbHlF bXB0eSgpID8gKGxsdm06OlR3aW5lKHYtPmdldE5hbWUoKSkgKyAiX2Jyb2FkY2FzdCIpIDogbmFt ZSk7Ci0gCi0gICAgIHJldHVybiByZXQ7Ci0gfQotIAotLWxsdm06OlBISU5vZGUgKkZ1bmN0aW9u RW1pdENvbnRleHQ6OlBoaU5vZGUobGx2bTo6VHlwZSAqdHlwZSwgaW50IGNvdW50LCBjb25zdCBj aGFyICpuYW1lKSB7Ci0tICAgIGxsdm06OlBISU5vZGUgKnBuID0gbGx2bTo6UEhJTm9kZTo6Q3Jl YXRlKHR5cGUsIGNvdW50LCBuYW1lID8gbmFtZSA6ICJwaGkiLCBiYmxvY2spOwotK2xsdm06OlBI SU5vZGUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlBoaU5vZGUobGx2bTo6VHlwZSAqdHlwZSwgaW50 IGNvdW50LCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotKyAgICBsbHZtOjpQSElOb2RlICpw biA9IGxsdm06OlBISU5vZGU6OkNyZWF0ZSh0eXBlLCBjb3VudCwgbmFtZS5pc1RyaXZpYWxseUVt cHR5KCkgPyAicGhpIiA6IG5hbWUsIGJibG9jayk7Ci0gICAgIEFkZERlYnVnUG9zKHBuKTsKLSAg ICAgcmV0dXJuIHBuOwotIH0KLSAKLSBsbHZtOjpJbnN0cnVjdGlvbiAqRnVuY3Rpb25FbWl0Q29u dGV4dDo6U2VsZWN0SW5zdChsbHZtOjpWYWx1ZSAqdGVzdCwgbGx2bTo6VmFsdWUgKnZhbDAsIGxs dm06OlZhbHVlICp2YWwxLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpIHsKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewot ICAgICBpZiAodGVzdCA9PSBOVUxMIHx8IHZhbDAgPT0gTlVMTCB8fCB2YWwxID09IE5VTEwpIHsK LSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAg ICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotLSAgICBpZiAobmFtZSA9PSBOVUxMKQotLSAg ICAgICAgbmFtZSA9IExMVk1HZXROYW1lKHRlc3QsICJfc2VsZWN0Iik7Ci0tCi0tICAgIGxsdm06 Okluc3RydWN0aW9uICppbnN0ID0gbGx2bTo6U2VsZWN0SW5zdDo6Q3JlYXRlKHRlc3QsIHZhbDAs IHZhbDEsIG5hbWUsIGJibG9jayk7Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbGx2 bTo6U2VsZWN0SW5zdDo6Q3JlYXRlKAotKyAgICAgICAgdGVzdCwgdmFsMCwgdmFsMSwgbmFtZS5p c1RyaXZpYWxseUVtcHR5KCkgPyAobGx2bTo6VHdpbmUodGVzdC0+Z2V0TmFtZSgpKSArICJfc2Vs ZWN0IikgOiBuYW1lLCBiYmxvY2spOwotICAgICBBZGREZWJ1Z1BvcyhpbnN0KTsKLSAgICAgcmV0 dXJuIGluc3Q7Ci0gfQotQEAgLTMyMjYsNyArMzIwNCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQg bENhbGxlZUFyZ0NvdW50KGxsdm06OlZhbHVlICpjYWxsZWUsIGNvbnN0IEZ1bmN0aW9uVHlwZSAq ZnVuCi0gfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpDYWxsSW5zdChs bHZtOjpWYWx1ZSAqZnVuYywgY29uc3QgRnVuY3Rpb25UeXBlICpmdW5jVHlwZSwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8bGx2 bTo6VmFsdWUgKj4gJmFyZ3MsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8bGx2bTo6VmFsdWUg Kj4gJmFyZ3MsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmIChmdW5jID09IE5V TEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7 Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLUBAIC0zMjU4LDkgKzMyMzYsOSBAQCBsbHZtOjpWYWx1 ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6Q2FsbEluc3QobGx2bTo6VmFsdWUgKmZ1bmMsIGNvbnN0 IEZ1bmN0aW9uVHlwZQotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAot ICAgICAgICAgbGx2bTo6UG9pbnRlclR5cGUgKmZ1bmNfcHRyX3R5cGUgPSBsbHZtOjpkeW5fY2Fz dDxsbHZtOjpQb2ludGVyVHlwZT4oZnVuYy0+Z2V0VHlwZSgpKTsKLSAgICAgICAgIGxsdm06OkZ1 bmN0aW9uVHlwZSAqZnVuY190eXBlID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6RnVuY3Rpb25UeXBl PihmdW5jX3B0cl90eXBlLT5nZXRQb2ludGVyRWxlbWVudFR5cGUoKSk7Ci0tICAgICAgICBsbHZt OjpDYWxsSW5zdCAqY2FsbGluc3QgPSBsbHZtOjpDYWxsSW5zdDo6Q3JlYXRlKGZ1bmNfdHlwZSwg ZnVuYywgYXJnVmFscywgbmFtZSA/IG5hbWUgOiAiIiwgYmJsb2NrKTsKLSsgICAgICAgIGxsdm06 OkNhbGxJbnN0ICpjYWxsaW5zdCA9IGxsdm06OkNhbGxJbnN0OjpDcmVhdGUoZnVuY190eXBlLCBm dW5jLCBhcmdWYWxzLCBuYW1lLCBiYmxvY2spOwotICNlbHNlCi0tICAgICAgICBsbHZtOjpDYWxs SW5zdCAqY2FsbGluc3QgPSBsbHZtOjpDYWxsSW5zdDo6Q3JlYXRlKGZ1bmMsIGFyZ1ZhbHMsIG5h bWUgPyBuYW1lIDogIiIsIGJibG9jayk7Ci0rICAgICAgICBsbHZtOjpDYWxsSW5zdCAqY2FsbGlu c3QgPSBsbHZtOjpDYWxsSW5zdDo6Q3JlYXRlKGZ1bmMsIGFyZ1ZhbHMsIG5hbWUsIGJibG9jayk7 Ci0gI2VuZGlmCi0gCi0gICAgICAgICAvLyBXZSBjb3VsZCBiZSBkZWFsaW5nIHdpdGggYSBmdW5j dGlvbiBwb2ludGVyIGluIHdoaWNoIGNhc2UgdGhpcyB3aWxsIG5vdCBiZSBhICdsbHZtOjpGdW5j dGlvbicuCi1AQCAtMzQ2NCwxNCArMzQ0MiwxNCBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0 Q29udGV4dDo6Q2FsbEluc3QobGx2bTo6VmFsdWUgKmZ1bmMsIGNvbnN0IEZ1bmN0aW9uVHlwZQot IH0KLSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6Q2FsbEluc3QobGx2bTo6 VmFsdWUgKmZ1bmMsIGNvbnN0IEZ1bmN0aW9uVHlwZSAqZnVuY1R5cGUsIGxsdm06OlZhbHVlICph cmcsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIgKm5hbWUpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgc3RkOjp2ZWN0b3I8bGx2bTo6VmFsdWUg Kj4gYXJnczsKLSAgICAgYXJncy5wdXNoX2JhY2soYXJnKTsKLSAgICAgcmV0dXJuIENhbGxJbnN0 KGZ1bmMsIGZ1bmNUeXBlLCBhcmdzLCBuYW1lKTsKLSB9Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1bmN0 aW9uRW1pdENvbnRleHQ6OkNhbGxJbnN0KGxsdm06OlZhbHVlICpmdW5jLCBjb25zdCBGdW5jdGlv blR5cGUgKmZ1bmNUeXBlLCBsbHZtOjpWYWx1ZSAqYXJnMCwKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmFyZzEsIGNvbnN0IGNoYXIgKm5h bWUpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6 VmFsdWUgKmFyZzEsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIHN0ZDo6dmVjdG9y PGxsdm06OlZhbHVlICo+IGFyZ3M7Ci0gICAgIGFyZ3MucHVzaF9iYWNrKGFyZzApOwotICAgICBh cmdzLnB1c2hfYmFjayhhcmcxKTsKLWRpZmYgLS1naXQgYS9zcmMvY3R4LmggYi9zcmMvY3R4LmgK LWluZGV4IDZlNWFkNzRiYS4uNDhiM2JiODI2IDEwMDY0NAotLS0tIGEvc3JjL2N0eC5oCi0rKysg Yi9zcmMvY3R4LmgKLUBAIC0zMDIsNyArMzAyLDcgQEAgY2xhc3MgRnVuY3Rpb25FbWl0Q29udGV4 dCB7Ci0gICAgIGxsdm06OlZhbHVlICpHZXRTdHJpbmdQdHIoY29uc3Qgc3RkOjpzdHJpbmcgJnN0 cik7Ci0gCi0gICAgIC8qKiBDcmVhdGUgYSBuZXcgYmFzaWMgYmxvY2sgd2l0aCBnaXZlbiBuYW1l ICovCi0tICAgIGxsdm06OkJhc2ljQmxvY2sgKkNyZWF0ZUJhc2ljQmxvY2soY29uc3QgY2hhciAq bmFtZSwgbGx2bTo6QmFzaWNCbG9jayAqaW5zZXJ0QWZ0ZXIgPSBOVUxMKTsKLSsgICAgbGx2bTo6 QmFzaWNCbG9jayAqQ3JlYXRlQmFzaWNCbG9jayhjb25zdCBsbHZtOjpUd2luZSAmbmFtZSwgbGx2 bTo6QmFzaWNCbG9jayAqaW5zZXJ0QWZ0ZXIgPSBOVUxMKTsKLSAKLSAgICAgLyoqIEdpdmVuIGEg dmVjdG9yIHdpdGggZWxlbWVudCB0eXBlIGkxLCByZXR1cm4gYSB2ZWN0b3Igb2YgdHlwZQotICAg ICAgICAgTExWTVR5cGVzOjpCb29sVmVjdG9yVHlwZS4gIFRoaXMgbWV0aG9kIGhhbmRsZXMgdGhl IGNvbnZlcnNpb24gZm9yCi1AQCAtMzgwLDMzICszODAsMzMgQEAgY2xhc3MgRnVuY3Rpb25FbWl0 Q29udGV4dCB7Ci0gICAgICAgICB0aGlzIGFsc28gaGFuZGxlcyBhcHBseWluZyB0aGUgZ2l2ZW4g b3BlcmF0aW9uIHRvIHRoZSB2ZWN0b3IKLSAgICAgICAgIGVsZW1lbnRzLiAqLwotICAgICBsbHZt OjpWYWx1ZSAqQmluYXJ5T3BlcmF0b3IobGx2bTo6SW5zdHJ1Y3Rpb246OkJpbmFyeU9wcyBpbnN0 LCBsbHZtOjpWYWx1ZSAqdjAsIGxsdm06OlZhbHVlICp2MSwKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAotICAgICAv KiogRW1pdCB0aGUgIm5vdCIgb3BlcmF0b3IuICBMaWtlIEJpbmFyeU9wZXJhdG9yKCksIHRoaXMg YWxzbyBoYW5kbGVzCi0gICAgICAgICBhIFZlY3RvclR5cGUtYmFzZWQgb3BlcmFuZC4gKi8KLS0g ICAgbGx2bTo6VmFsdWUgKk5vdE9wZXJhdG9yKGxsdm06OlZhbHVlICp2LCBjb25zdCBjaGFyICpu YW1lID0gTlVMTCk7Ci0rICAgIGxsdm06OlZhbHVlICpOb3RPcGVyYXRvcihsbHZtOjpWYWx1ZSAq diwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0gICAgIC8qKiBFbWl0IGEgY29t cGFyaXNvbiBpbnN0cnVjdGlvbi4gIElmIHRoZSBvcGVyYW5kcyBhcmUgVmVjdG9yVHlwZXMsCi0g ICAgICAgICB0aGVuIGEgdmFsdWUgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGJvb2xlYW4gVmVjdG9y VHlwZSBpcwotICAgICAgICAgcmV0dXJuZWQuICovCi0gICAgIGxsdm06OlZhbHVlICpDbXBJbnN0 KGxsdm06Okluc3RydWN0aW9uOjpPdGhlck9wcyBpbnN0LCBsbHZtOjpDbXBJbnN0OjpQcmVkaWNh dGUgcHJlZCwgbGx2bTo6VmFsdWUgKnYwLAotLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZt OjpWYWx1ZSAqdjEsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgbGx2bTo6VmFsdWUgKnYxLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsK LSAKLSAgICAgLyoqIEdpdmVuIGEgc2NhbGFyIHZhbHVlLCByZXR1cm4gYSB2ZWN0b3Igb2YgdGhl IHNhbWUgdHlwZSAob3IgYW4KLSAgICAgICAgIGFycmF5LCBmb3IgcG9pbnRlciB0eXBlcykuICov Ci0tICAgIGxsdm06OlZhbHVlICpTbWVhclVuaWZvcm0obGx2bTo6VmFsdWUgKnZhbHVlLCBjb25z dCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgIGxsdm06OlZhbHVlICpTbWVhclVuaWZvcm0obGx2 bTo6VmFsdWUgKnZhbHVlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLS0gICAg bGx2bTo6VmFsdWUgKkJpdENhc3RJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAq dHlwZSwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotLSAgICBsbHZtOjpWYWx1ZSAqUHRyVG9J bnRJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotLSAg ICBsbHZtOjpWYWx1ZSAqUHRyVG9JbnRJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlw ZSAqdHlwZSwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotLSAgICBsbHZtOjpWYWx1ZSAqSW50 VG9QdHJJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgY2hh ciAqbmFtZSA9IE5VTEwpOwotKyAgICBsbHZtOjpWYWx1ZSAqQml0Q2FzdEluc3QobGx2bTo6VmFs dWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIi KTsKLSsgICAgbGx2bTo6VmFsdWUgKlB0clRvSW50SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGNv bnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotKyAgICBsbHZtOjpWYWx1ZSAqUHRyVG9JbnRJ bnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgbGx2bTo6VHdp bmUgJm5hbWUgPSAiIik7Ci0rICAgIGxsdm06OlZhbHVlICpJbnRUb1B0ckluc3QobGx2bTo6VmFs dWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIi KTsKLSAKLS0gICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKlRydW5jSW5zdChsbHZtOjpWYWx1ZSAqdmFs dWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLSsgICAgbGx2 bTo6SW5zdHJ1Y3Rpb24gKlRydW5jSW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUg KnR5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotICAgICBsbHZtOjpJbnN0cnVj dGlvbiAqQ2FzdEluc3QobGx2bTo6SW5zdHJ1Y3Rpb246OkNhc3RPcHMgb3AsIGxsdm06OlZhbHVl ICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLS0gICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKkZQ Q2FzdEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBjaGFy ICpuYW1lID0gTlVMTCk7Ci0tICAgIGxsdm06Okluc3RydWN0aW9uICpTRXh0SW5zdChsbHZtOjpW YWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsK LS0gICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKlpFeHRJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2 bTo6VHlwZSAqdHlwZSwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0rICAgIGxs dm06Okluc3RydWN0aW9uICpGUENhc3RJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlw ZSAqdHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0rICAgIGxsdm06Okluc3Ry dWN0aW9uICpTRXh0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNv bnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotKyAgICBsbHZtOjpJbnN0cnVjdGlvbiAqWkV4 dEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBsbHZtOjpU d2luZSAmbmFtZSA9ICIiKTsKLSAKLSAgICAgLyoqIEdpdmVuIHR3byBpbnRlZ2VyLXR5cGVkIHZh bHVlcyAoYnV0IHBvc3NpYmx5IG9uZSB2ZWN0b3IgYW5kIHRoZQotICAgICAgICAgb3RoZXIgbm90 LCBhbmQgb3Igb2YgcG9zc2libHktZGlmZmVyZW50IGJpdC13aWR0aHMpLCB1cGRhdGUgdGhlaXIK LUBAIC00MjYsOSArNDI2LDkgQEAgY2xhc3MgRnVuY3Rpb25FbWl0Q29udGV4dCB7Ci0gICAgICAg ICBwb2ludGVycy4gIFRoZSB1bmRlcmx5aW5nIHR5cGUgb2YgdGhlIGJhc2UgcG9pbnRlciBtdXN0 IGJlIHByb3ZpZGVkCi0gICAgICAgICB2aWEgdGhlIHB0clR5cGUgcGFyYW1ldGVyICovCi0gICAg IGxsdm06OlZhbHVlICpHZXRFbGVtZW50UHRySW5zdChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwgbGx2 bTo6VmFsdWUgKmluZGV4LCBjb25zdCBUeXBlICpwdHJUeXBlLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0g ICAgIGxsdm06OlZhbHVlICpHZXRFbGVtZW50UHRySW5zdChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwg bGx2bTo6VmFsdWUgKmluZGV4MCwgbGx2bTo6VmFsdWUgKmluZGV4MSwgY29uc3QgVHlwZSAqcHRy VHlwZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5h bWUgPSBOVUxMKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxs dm06OlR3aW5lICZuYW1lID0gIiIpOwotIAotICAgICAvKiogVGhpcyBtZXRob2QgcmV0dXJucyBh IG5ldyBwb2ludGVyIHRoYXQgcmVwcmVzZW50cyBvZmZzZXR0aW5nIHRoZQotICAgICAgICAgZ2l2 ZW4gYmFzZSBwb2ludGVyIHRvIHBvaW50IGF0IHRoZSBnaXZlbiBlbGVtZW50IG51bWJlciBvZiB0 aGUKLUBAIC00MzYsMjYgKzQzNiwyNiBAQCBjbGFzcyBGdW5jdGlvbkVtaXRDb250ZXh0IHsKLSAg ICAgICAgIHBvaW50ZXIgbXVzdCBiZSBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3R1cmUgdHlwZS4gIFRo ZSBwdHJUeXBlIGdpdmVzCi0gICAgICAgICB0aGUgdHlwZSBvZiB0aGUgcG9pbnRlciwgdGhvdWdo IGl0IG1heSBiZSBOVUxMIGlmIHRoZSBiYXNlIHBvaW50ZXIKLSAgICAgICAgIGlzIHVuaWZvcm0u ICovCi0tICAgIGxsdm06OlZhbHVlICpBZGRFbGVtZW50T2Zmc2V0KGxsdm06OlZhbHVlICpiYXNl UHRyLCBpbnQgZWxlbWVudE51bSwgY29uc3QgVHlwZSAqcHRyVHlwZSwgY29uc3QgY2hhciAqbmFt ZSA9IE5VTEwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBvaW50 ZXJUeXBlICoqcmVzdWx0UHRyVHlwZSA9IE5VTEwpOwotKyAgICBsbHZtOjpWYWx1ZSAqQWRkRWxl bWVudE9mZnNldChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwgaW50IGVsZW1lbnROdW0sIGNvbnN0IFR5 cGUgKnB0clR5cGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxs dm06OlR3aW5lICZuYW1lID0gIiIsIGNvbnN0IFBvaW50ZXJUeXBlICoqcmVzdWx0UHRyVHlwZSA9 IE5VTEwpOwotIAotICAgICAvKiogQm9vbCBpcyBzdG9yZWQgYXMgaTggYW5kIDxXSURUSCB4IGk4 PiBidXQgcmVwcmVzZW50ZWQgaW4gSVIgYXMgaTEgYW5kCi0gICAgICAqIDxXSURUSCB4IE1BU0s+ LiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIHRvIG1hdGNoIGJvb2wgc2l6ZSBhdCBzdG9yYWdl Ci0gICAgICAqIGludGVyZmFjZS4gKi8KLS0gICAgbGx2bTo6VmFsdWUgKlN3aXRjaEJvb2xTaXpl KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdG9UeXBlLCBjb25zdCBjaGFyICpuYW1l ID0gTlVMTCk7Ci0rICAgIGxsdm06OlZhbHVlICpTd2l0Y2hCb29sU2l6ZShsbHZtOjpWYWx1ZSAq dmFsdWUsIGxsdm06OlR5cGUgKnRvVHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7 Ci0gICAgIC8qKiBMb2FkIGZyb20gdGhlIG1lbW9yeSBsb2NhdGlvbihzKSBnaXZlbiBieSBsdmFs dWUsIHVzaW5nIHRoZSBnaXZlbgotICAgICAgICAgbWFzay4gIFRoZSBsdmFsdWUgbWF5IGJlIHZh cnlpbmcsIGluIHdoaWNoIGNhc2UgdGhpcyBjb3JyZXNwb25kcyB0bwotICAgICAgICAgYSBnYXRo ZXIgZnJvbSB0aGUgbXVsdGlwbGUgbWVtb3J5IGxvY2F0aW9ucyBnaXZlbiBieSB0aGUgYXJyYXkg b2YKLSAgICAgICAgIHBvaW50ZXIgdmFsdWVzIGdpdmVuIGJ5IHRoZSBsdmFsdWUuICBJZiB0aGUg bHZhbHVlIGlzIG5vdCB2YXJ5aW5nLAotICAgICAgICAgdGhlbiBib3RoIHRoZSBtYXNrIHBvaW50 ZXIgYW5kIHRoZSB0eXBlIHBvaW50ZXIgbWF5IGJlIE5VTEwuICovCi0tICAgIGxsdm06OlZhbHVl ICpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZSAqbWFzaywgY29uc3QgVHlw ZSAqcHRyVHlwZSwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwsCi0rICAgIGxsdm06OlZhbHVlICpM b2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZSAqbWFzaywgY29uc3QgVHlwZSAq cHRyVHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIiwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJvb2wgb25lX2VsZW0gPSBmYWxzZSk7Ci0gCi0gICAgIC8qIExvYWQgZnJvbSBt ZW1vcnkgbG9jYXRpb24ocykgZ2l2ZW4uCi0gICAgICAqICd0eXBlJyBuZWVkcyB0byBiZSBwcm92 aWRlZCB3aGVuIHN0b3JhZ2UgdHlwZSBpcyBkaWZmZXJlbnQgZnJvbSBJUiB0eXBlLiBGb3IgZXhh bXBsZSwKLSAgICAgICogJ3VuZm9ybSBib29sJyBpcyAnaTEnIGluIElSIGJ1dCBzdG9yZWQgYXMg J2k4Jy4KLSAgICAgICogT3RoZXJ3aXNlIGxlYXZlIHRoaXMgYXMgTlVMTC4gKi8KLS0gICAgbGx2 bTo6VmFsdWUgKkxvYWRJbnN0KGxsdm06OlZhbHVlICpwdHIsIGNvbnN0IFR5cGUgKnR5cGUgPSBO VUxMLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgIGxsdm06OlZhbHVlICpMb2FkSW5z dChsbHZtOjpWYWx1ZSAqcHRyLCBjb25zdCBUeXBlICp0eXBlID0gTlVMTCwgY29uc3QgbGx2bTo6 VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0gICAgIC8qKiBFbWl0cyBhbiBhbGxvY2EgaW5zdHJ1Y3Rp b24gdG8gYWxsb2NhdGUgc3RhY2sgc3RvcmFnZSBmb3IgdGhlIGdpdmVuCi0gICAgICAgICB0eXBl LiAgSWYgYSBub24temVybyBhbGlnbm1lbnQgaXMgc3BlY2lmaWVkLCB0aGUgb2JqZWN0IGlzIGFs c28KLUBAIC00NjMsNyArNDYzLDggQEAgY2xhc3MgRnVuY3Rpb25FbWl0Q29udGV4dCB7Ci0gICAg ICAgICBpbnN0cnVjdGlvbiBpcyBhZGRlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIGZ1bmN0aW9uIGlu IHRoZSBlbnRyeQotICAgICAgICAgYmFzaWMgYmxvY2s7IGlmIGl0IHNob3VsZCBiZSBhZGRlZCB0 byB0aGUgY3VycmVudCBiYXNpYyBibG9jaywgdGhlbgotICAgICAgICAgdGhlIGF0RW50cnlCbG9j ayBwYXJhbWV0ZXIgc2hvdWxkIGJlIGZhbHNlLiAqLwotLSAgICBsbHZtOjpWYWx1ZSAqQWxsb2Nh SW5zdChsbHZtOjpUeXBlICpsbHZtVHlwZSwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwsIGludCBh bGlnbiA9IDAsIGJvb2wgYXRFbnRyeUJsb2NrID0gdHJ1ZSk7Ci0rICAgIGxsdm06OlZhbHVlICpB bGxvY2FJbnN0KGxsdm06OlR5cGUgKmxsdm1UeXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9 ICIiLCBpbnQgYWxpZ24gPSAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGF0 RW50cnlCbG9jayA9IHRydWUpOwotIAotICAgICAvKiogRW1pdHMgYW4gYWxsb2NhIGluc3RydWN0 aW9uIHRvIGFsbG9jYXRlIHN0YWNrIHN0b3JhZ2UgZm9yIHRoZSBnaXZlbgotICAgICAgICAgdHlw ZS4gIElmIGEgbm9uLXplcm8gYWxpZ25tZW50IGlzIHNwZWNpZmllZCwgdGhlIG9iamVjdCBpcyBh bHNvCi1AQCAtNDc0LDcgKzQ3NSw3IEBAIGNsYXNzIEZ1bmN0aW9uRW1pdENvbnRleHQgewotICAg ICAgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBwcmVmZXJyZWQgd2hlbiBwb3NzaWJsZS4gSXQg aXMgbmVlZGVkIHdoZW4KLSAgICAgICAgIHN0b3JhZ2UgdHlwZSBpcyBkaWZmZXJlbnQgZnJvbSBJ UiB0eXBlLiBGb3IgZXhhbXBsZSwKLSAgICAgICAgICd1bmZvcm0gYm9vbCcgaXMgJ2kxJyBpbiBJ UiBidXQgc3RvcmVkIGFzICdpOCcuICovCi0tICAgIGxsdm06OlZhbHVlICpBbGxvY2FJbnN0KGNv bnN0IFR5cGUgKnB0clR5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMLCBpbnQgYWxpZ24gPSAw LCBib29sIGF0RW50cnlCbG9jayA9IHRydWUpOwotKyAgICBsbHZtOjpWYWx1ZSAqQWxsb2NhSW5z dChjb25zdCBUeXBlICpwdHJUeXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiLCBpbnQg YWxpZ24gPSAwLCBib29sIGF0RW50cnlCbG9jayA9IHRydWUpOwotIAotICAgICAvKiogU3RhbmRh cmQgc3RvcmUgaW5zdHJ1Y3Rpb247IGZvciB0aGlzIHZhcmlhbnQsIHRoZSBsdmFsdWUgbXVzdCBi ZSBhCi0gICAgICAgICBzaW5nbGUgcG9pbnRlciwgbm90IGEgdmFyeWluZyBsdmFsdWUuCi1AQCAt NTAyLDM5ICs1MDMsNDEgQEAgY2xhc3MgRnVuY3Rpb25FbWl0Q29udGV4dCB7Ci0gICAgIC8qKiBU aGlzIGNvbnZlbmllbmNlIG1ldGhvZCBtYXBzIHRvIGFuIGxsdm06OkV4dHJhY3RFbGVtZW50SW5z dCBpZiB0aGUKLSAgICAgICAgIGdpdmVuIHZhbHVlIGlzIGEgbGx2bTo6VmVjdG9yVHlwZSwgYW5k IHRvIGFuIGxsdm06OkV4dHJhY3RWYWx1ZUluc3QKLSAgICAgICAgIG90aGVyd2lzZS4gKi8KLS0g ICAgbGx2bTo6VmFsdWUgKkV4dHJhY3RJbnN0KGxsdm06OlZhbHVlICp2LCBpbnQgZWx0LCBjb25z dCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgIGxsdm06OlZhbHVlICpFeHRyYWN0SW5zdChsbHZt OjpWYWx1ZSAqdiwgaW50IGVsdCwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0g ICAgIC8qKiBUaGlzIGNvbnZlbmllbmNlIG1ldGhvZCBtYXBzIHRvIGFuIGxsdm06Okluc2VydEVs ZW1lbnRJbnN0IGlmIHRoZQotICAgICAgICAgZ2l2ZW4gdmFsdWUgaXMgYSBsbHZtOjpWZWN0b3JU eXBlLCBhbmQgdG8gYW4gbGx2bTo6SW5zZXJ0VmFsdWVJbnN0Ci0gICAgICAgICBvdGhlcndpc2Uu ICovCi0tICAgIGxsdm06OlZhbHVlICpJbnNlcnRJbnN0KGxsdm06OlZhbHVlICp2LCBsbHZtOjpW YWx1ZSAqZWx0VmFsLCBpbnQgZWx0LCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgIGxs dm06OlZhbHVlICpJbnNlcnRJbnN0KGxsdm06OlZhbHVlICp2LCBsbHZtOjpWYWx1ZSAqZWx0VmFs LCBpbnQgZWx0LCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLSAgICAgLyoqIFRo aXMgY29udmVuaWVuY2UgbWV0aG9kIG1hcHMgdG8gYW4gbGx2bTo6U2h1ZmZsZVZlY3Rvckluc3Qu ICovCi0tICAgIGxsdm06OlZhbHVlICpTaHVmZmxlSW5zdChsbHZtOjpWYWx1ZSAqdjEsIGxsdm06 OlZhbHVlICp2MiwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsK LSsgICAgbGx2bTo6VmFsdWUgKlNodWZmbGVJbnN0KGxsdm06OlZhbHVlICp2MSwgbGx2bTo6VmFs dWUgKnYyLCBsbHZtOjpWYWx1ZSAqbWFzaywgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7 Ci0gCi0gICAgIC8qKiBUaGlzIGNvbnZlbmllbmNlIG1ldGhvZCB0byBnZW5lcmF0ZSBicm9hZGNh c3QgcGF0dGVybi4gSXQgdGFrZXMgYSB2YWx1ZQotICAgICAgICAgYW5kIGEgdmVjdG9yIHR5cGUu IFR5cGUgb2YgdGhlIHZhbHVlIG11c3QgbWF0Y2ggZWxlbWVudCB0eXBlIG9mIHRoZQotICAgICAg ICAgdmVjdG9yLiAqLwotLSAgICBsbHZtOjpWYWx1ZSAqQnJvYWRjYXN0VmFsdWUobGx2bTo6VmFs dWUgKnYsIGxsdm06OlR5cGUgKnZlY1R5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLSsg ICAgbGx2bTo6VmFsdWUgKkJyb2FkY2FzdFZhbHVlKGxsdm06OlZhbHVlICp2LCBsbHZtOjpUeXBl ICp2ZWNUeXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLS0gICAgbGx2bTo6 UEhJTm9kZSAqUGhpTm9kZShsbHZtOjpUeXBlICp0eXBlLCBpbnQgY291bnQsIGNvbnN0IGNoYXIg Km5hbWUgPSBOVUxMKTsKLS0gICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKlNlbGVjdEluc3QobGx2bTo6 VmFsdWUgKnRlc3QsIGxsdm06OlZhbHVlICp2YWwwLCBsbHZtOjpWYWx1ZSAqdmFsMSwgY29uc3Qg Y2hhciAqbmFtZSA9IE5VTEwpOwotKyAgICBsbHZtOjpQSElOb2RlICpQaGlOb2RlKGxsdm06OlR5 cGUgKnR5cGUsIGludCBjb3VudCwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0rICAg IGxsdm06Okluc3RydWN0aW9uICpTZWxlY3RJbnN0KGxsdm06OlZhbHVlICp0ZXN0LCBsbHZtOjpW YWx1ZSAqdmFsMCwgbGx2bTo6VmFsdWUgKnZhbDEsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAotICAgICAvKiogRW1p dHMgSVIgdG8gZG8gYSBmdW5jdGlvbiBjYWxsIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cy4gIElm IHRoZQotICAgICAgICAgZnVuY3Rpb24gdHlwZSBpcyBhIHZhcnlpbmcgZnVuY3Rpb24gcG9pbnRl ciB0eXBlLCBpdHMgZnVsbCB0eXBlCi0gICAgICAgICBtdXN0IGJlIHByb3ZpZGVkIGluIGZ1bmNU eXBlLiAgZnVuY1R5cGUgY2FuIGJlIE5VTEwgaWYgZnVuYyBpcyBhCi0gICAgICAgICB1bmlmb3Jt IGZ1bmN0aW9uIHBvaW50ZXIuICovCi0gICAgIGxsdm06OlZhbHVlICpDYWxsSW5zdChsbHZtOjpW YWx1ZSAqZnVuYywgY29uc3QgRnVuY3Rpb25UeXBlICpmdW5jVHlwZSwgY29uc3Qgc3RkOjp2ZWN0 b3I8bGx2bTo6VmFsdWUgKj4gJmFyZ3MsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBs bHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLSAgICAgLyoqIFRoaXMgaXMgYSBjb252ZW5pZW5j ZSBtZXRob2QgdGhhdCBpc3N1ZXMgYSBjYWxsIGluc3RydWN0aW9uIHRvIGEKLSAgICAgICAgIGZ1 bmN0aW9uIHRoYXQgdGFrZXMganVzdCBhIHNpbmdsZSBhcmd1bWVudC4gKi8KLS0gICAgbGx2bTo6 VmFsdWUgKkNhbGxJbnN0KGxsdm06OlZhbHVlICpmdW5jLCBjb25zdCBGdW5jdGlvblR5cGUgKmZ1 bmNUeXBlLCBsbHZtOjpWYWx1ZSAqYXJnLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAg IGxsdm06OlZhbHVlICpDYWxsSW5zdChsbHZtOjpWYWx1ZSAqZnVuYywgY29uc3QgRnVuY3Rpb25U eXBlICpmdW5jVHlwZSwgbGx2bTo6VmFsdWUgKmFyZywKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAotICAgICAvKiogVGhpcyBpcyBh IGNvbnZlbmllbmNlIG1ldGhvZCB0aGF0IGlzc3VlcyBhIGNhbGwgaW5zdHJ1Y3Rpb24gdG8gYQot ICAgICAgICAgZnVuY3Rpb24gdGhhdCB0YWtlcyB0d28gYXJndW1lbnRzLiAqLwotICAgICBsbHZt OjpWYWx1ZSAqQ2FsbEluc3QobGx2bTo6VmFsdWUgKmZ1bmMsIGNvbnN0IEZ1bmN0aW9uVHlwZSAq ZnVuY1R5cGUsIGxsdm06OlZhbHVlICphcmcwLCBsbHZtOjpWYWx1ZSAqYXJnMSwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAotICAgICAv KiogTGF1bmNoIGFuIGFzeW5jaHJvbm91cyB0YXNrIHRvIHJ1biB0aGUgZ2l2ZW4gZnVuY3Rpb24s IHBhc3NpbmcgaXQKLSAgICAgICAgIGhlIGdpdmVuIGFyZ3VtZW50IHZhbHVlcy4gKi8KLUBAIC03 NTYsOSArNzU5LDEwIEBAIGNsYXNzIEZ1bmN0aW9uRW1pdENvbnRleHQgewotICAgICB2b2lkIG1h c2tlZFN0b3JlKGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgVHlw ZSAqcHRyVHlwZSwgbGx2bTo6VmFsdWUgKm1hc2spOwotICAgICB2b2lkIHN0b3JlVW5pZm9ybVRv U09BKGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1h c2ssIGNvbnN0IFR5cGUgKnZhbHVlVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBQb2ludGVyVHlwZSAqcHRyVHlwZSk7Ci0tICAgIGxsdm06OlZhbHVlICpsb2FkVW5pZm9y bUZyb21TT0EobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IFBvaW50 ZXJUeXBlICpwdHJUeXBlLCBjb25zdCBjaGFyICpuYW1lKTsKLSsgICAgbGx2bTo6VmFsdWUgKmxv YWRVbmlmb3JtRnJvbVNPQShsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZSAqbWFzaywgY29u c3QgUG9pbnRlclR5cGUgKnB0clR5cGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0tICAgIGxsdm06OlZhbHVl ICpnYXRoZXIobGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgUG9pbnRlclR5cGUgKnB0clR5cGUsIGxs dm06OlZhbHVlICptYXNrLCBjb25zdCBjaGFyICpuYW1lKTsKLSsgICAgbGx2bTo6VmFsdWUgKmdh dGhlcihsbHZtOjpWYWx1ZSAqcHRyLCBjb25zdCBQb2ludGVyVHlwZSAqcHRyVHlwZSwgbGx2bTo6 VmFsdWUgKm1hc2ssIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAotICAgICBsbHZt OjpWYWx1ZSAqYWRkVmFyeWluZ09mZnNldHNJZk5lZWRlZChsbHZtOjpWYWx1ZSAqcHRyLCBjb25z dCBUeXBlICpwdHJUeXBlKTsKLSB9OwotZGlmZiAtLWdpdCBhL3NyYy9leHByLmNwcCBiL3NyYy9l eHByLmNwcAotaW5kZXggODBjYzMwMjBhLi42ZDM4ZDE4ODkgMTAwNjQ0Ci0tLS0gYS9zcmMvZXhw ci5jcHAKLSsrKyBiL3NyYy9leHByLmNwcAotQEAgLTEwMjEsMTEgKzEwMjEsMTEgQEAgc3RhdGlj IGxsdm06OlZhbHVlICpsRW1pdE5lZ2F0ZShFeHByICphcmcsIFNvdXJjZVBvcyBwb3MsIEZ1bmN0 aW9uRW1pdENvbnRleHQgKmMKLSAgICAgY3R4LT5TZXREZWJ1Z1Bvcyhwb3MpOwotICAgICBpZiAo dHlwZS0+SXNGbG9hdFR5cGUoKSkgewotICAgICAgICAgbGx2bTo6VmFsdWUgKnplcm8gPSBsbHZt OjpDb25zdGFudEZQOjpnZXRaZXJvVmFsdWVGb3JOZWdhdGlvbih0eXBlLT5MTFZNVHlwZShnLT5j dHgpKTsKLS0gICAgICAgIHJldHVybiBjdHgtPkJpbmFyeU9wZXJhdG9yKGxsdm06Okluc3RydWN0 aW9uOjpGU3ViLCB6ZXJvLCBhcmdWYWwsIExMVk1HZXROYW1lKGFyZ1ZhbCwgIl9uZWdhdGUiKSk7 Ci0rICAgICAgICByZXR1cm4gY3R4LT5CaW5hcnlPcGVyYXRvcihsbHZtOjpJbnN0cnVjdGlvbjo6 RlN1YiwgemVybywgYXJnVmFsLCBsbHZtOjpUd2luZShhcmdWYWwtPmdldE5hbWUoKSkgKyAiX25l Z2F0ZSIpOwotICAgICB9IGVsc2UgewotICAgICAgICAgbGx2bTo6VmFsdWUgKnplcm8gPSBsTExW TUNvbnN0YW50VmFsdWUodHlwZSwgZy0+Y3R4LCAwLik7Ci0gICAgICAgICBBc3NlcnRQb3MocG9z LCB0eXBlLT5Jc0ludFR5cGUoKSk7Ci0tICAgICAgICByZXR1cm4gY3R4LT5CaW5hcnlPcGVyYXRv cihsbHZtOjpJbnN0cnVjdGlvbjo6U3ViLCB6ZXJvLCBhcmdWYWwsIExMVk1HZXROYW1lKGFyZ1Zh bCwgIl9uZWdhdGUiKSk7Ci0rICAgICAgICByZXR1cm4gY3R4LT5CaW5hcnlPcGVyYXRvcihsbHZt OjpJbnN0cnVjdGlvbjo6U3ViLCB6ZXJvLCBhcmdWYWwsIGxsdm06OlR3aW5lKGFyZ1ZhbC0+Z2V0 TmFtZSgpKSArICJfbmVnYXRlIik7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTA0NywxMSArMTA0Nywx MSBAQCBsbHZtOjpWYWx1ZSAqVW5hcnlFeHByOjpHZXRWYWx1ZShGdW5jdGlvbkVtaXRDb250ZXh0 ICpjdHgpIGNvbnN0IHsKLSAgICAgICAgIHJldHVybiBsRW1pdE5lZ2F0ZShleHByLCBwb3MsIGN0 eCk7Ci0gICAgIGNhc2UgTG9naWNhbE5vdDogewotICAgICAgICAgbGx2bTo6VmFsdWUgKmFyZ1Zh bCA9IGV4cHItPkdldFZhbHVlKGN0eCk7Ci0tICAgICAgICByZXR1cm4gY3R4LT5Ob3RPcGVyYXRv cihhcmdWYWwsIExMVk1HZXROYW1lKGFyZ1ZhbCwgIl9sb2dpY2Fsbm90IikpOwotKyAgICAgICAg cmV0dXJuIGN0eC0+Tm90T3BlcmF0b3IoYXJnVmFsLCBsbHZtOjpUd2luZShhcmdWYWwtPmdldE5h bWUoKSkgKyAiX2xvZ2ljYWxub3QiKTsKLSAgICAgfQotICAgICBjYXNlIEJpdE5vdDogewotICAg ICAgICAgbGx2bTo6VmFsdWUgKmFyZ1ZhbCA9IGV4cHItPkdldFZhbHVlKGN0eCk7Ci0tICAgICAg ICByZXR1cm4gY3R4LT5Ob3RPcGVyYXRvcihhcmdWYWwsIExMVk1HZXROYW1lKGFyZ1ZhbCwgIl9i aXRub3QiKSk7Ci0rICAgICAgICByZXR1cm4gY3R4LT5Ob3RPcGVyYXRvcihhcmdWYWwsIGxsdm06 OlR3aW5lKGFyZ1ZhbC0+Z2V0TmFtZSgpKSArICJfYml0bm90Iik7Ci0gICAgIH0KLSAgICAgZGVm YXVsdDoKLSAgICAgICAgIEZBVEFMKCJsb2dpYyBlcnJvciIpOwotQEAgLTE1MTgsNyArMTUxOCw4 IEBAIHN0YXRpYyBsbHZtOjpWYWx1ZSAqbEVtaXRCaW5hcnlBcml0aChCaW5hcnlFeHByOjpPcCBv cCwgbGx2bTo6VmFsdWUgKnZhbHVlMCwgbGx2Ci0gICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0g ICAgICAgICB9Ci0gCi0tICAgICAgICByZXR1cm4gY3R4LT5CaW5hcnlPcGVyYXRvcihpbnN0LCB2 YWx1ZTAsIHZhbHVlMSwgTExWTUdldE5hbWUob3BOYW1lLCB2YWx1ZTAsIHZhbHVlMSkpOwotKyAg ICAgICAgcmV0dXJuIGN0eC0+QmluYXJ5T3BlcmF0b3IoaW5zdCwgdmFsdWUwLCB2YWx1ZTEsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChsbHZtOjpUd2luZShvcE5hbWUp ICsgIl8iKSArIHZhbHVlMC0+Z2V0TmFtZSgpKSArICJfIikgKyB2YWx1ZTEtPmdldE5hbWUoKSk7 Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTU2Myw3ICsxNTY0LDcgQEAgc3RhdGljIGxsdm06OlZhbHVl ICpsRW1pdEJpbmFyeUNtcChCaW5hcnlFeHByOjpPcCBvcCwgbGx2bTo6VmFsdWUgKmUwVmFsLCBs bHZtOjoKLSAgICAgfQotIAotICAgICBsbHZtOjpWYWx1ZSAqY21wID0gY3R4LT5DbXBJbnN0KGlz RmxvYXRPcCA/IGxsdm06Okluc3RydWN0aW9uOjpGQ21wIDogbGx2bTo6SW5zdHJ1Y3Rpb246OklD bXAsIHByZWQsIGUwVmFsLCBlMVZhbCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMTFZNR2V0TmFtZShvcE5hbWUsIGUwVmFsLCBlMVZhbCkpOwotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICgoKGxsdm06OlR3aW5lKG9wTmFtZSkgKyAiXyIpICsgZTBW YWwtPmdldE5hbWUoKSkgKyAiXyIpICsgZTFWYWwtPmdldE5hbWUoKSk7Ci0gICAgIC8vIFRoaXMg aXMgYSBsaXR0bGUgdWdseTogQ21wSW5zdCByZXR1cm5zIGkxIHZhbHVlcywgYnV0IHdlIHVzZSB2 ZWN0b3JzCi0gICAgIC8vIG9mIGkzMnMgZm9yIHZhcnlpbmcgYm9vbCB2YWx1ZXM7IHR5cGUgY29u dmVydCB0aGUgcmVzdWx0IGhlcmUgaWYKLSAgICAgLy8gbmVlZGVkLgotQEAgLTQxNzcsNyArNDE3 OCw3IEBAIHN0YXRpYyBsbHZtOjpWYWx1ZSAqbENvbnZlcnRUb1NsaWNlUG9pbnRlcihGdW5jdGlv bkVtaXRDb250ZXh0ICpjdHgsIGxsdm06OlZhbHVlCi0gICAgIC8vIG9mZnNldHMKLSAgICAgbGx2 bTo6VmFsdWUgKnJlc3VsdCA9IGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUoc2xpY2VTdHJ1 Y3RUeXBlKTsKLSAgICAgLy8gQW5kIHJlcGxhY2UgdGhlIHBvaW50ZXIgaW4gdGhlIHN0cnVjdCB3 aXRoIHRoZSBnaXZlbiBwb2ludGVyCi0tICAgIHJldHVybiBjdHgtPkluc2VydEluc3QocmVzdWx0 LCBwdHIsIDAsIExMVk1HZXROYW1lKHB0ciwgIl9zbGljZSIpKTsKLSsgICAgcmV0dXJuIGN0eC0+ SW5zZXJ0SW5zdChyZXN1bHQsIHB0ciwgMCwgbGx2bTo6VHdpbmUocHRyLT5nZXROYW1lKCkpICsg Il9zbGljZSIpOwotIH0KLSAKLSAvKiogSWYgdGhlIGdpdmVuIGFycmF5IGluZGV4IGlzIGEgY29t cGlsZSB0aW1lIGNvbnN0YW50LCBjaGVjayB0byBzZWUgaWYgaXQKLUBAIC00MjU4LDggKzQyNTks OCBAQCBsbHZtOjpWYWx1ZSAqSW5kZXhFeHByOjpHZXRMVmFsdWUoRnVuY3Rpb25FbWl0Q29udGV4 dCAqY3R4KSBjb25zdCB7Ci0gICAgICAgICAvLyBDb252ZXJ0IHRvIGEgc2xpY2UgcG9pbnRlciBp ZiB3ZSdyZSBpbmRleGluZyBpbnRvIFNPQSBkYXRhCi0gICAgICAgICBiYXNlUHRyVmFsdWUgPSBs Q29udmVydFB0clRvU2xpY2VJZk5lZWRlZChjdHgsIGJhc2VQdHJWYWx1ZSwgJmJhc2VFeHByVHlw ZSk7Ci0gCi0tICAgICAgICBsbHZtOjpWYWx1ZSAqcHRyID0KLS0gICAgICAgICAgICBjdHgtPkdl dEVsZW1lbnRQdHJJbnN0KGJhc2VQdHJWYWx1ZSwgaW5kZXhWYWx1ZSwgYmFzZUV4cHJUeXBlLCBM TFZNR2V0TmFtZShiYXNlUHRyVmFsdWUsICJfb2Zmc2V0IikpOwotKyAgICAgICAgbGx2bTo6VmFs dWUgKnB0ciA9IGN0eC0+R2V0RWxlbWVudFB0ckluc3QoYmFzZVB0clZhbHVlLCBpbmRleFZhbHVl LCBiYXNlRXhwclR5cGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsbHZtOjpUd2luZShiYXNlUHRyVmFsdWUtPmdldE5hbWUoKSkgKyAiX29mZnNl dCIpOwotICAgICAgICAgcmV0dXJuIGxBZGRWYXJ5aW5nT2Zmc2V0c0lmTmVlZGVkKGN0eCwgcHRy LCBHZXRMVmFsdWVUeXBlKCkpOwotICAgICB9Ci0gCi1AQCAtNDI5MCw4ICs0MjkxLDggQEAgbGx2 bTo6VmFsdWUgKkluZGV4RXhwcjo6R2V0TFZhbHVlKEZ1bmN0aW9uRW1pdENvbnRleHQgKmN0eCkg Y29uc3QgewotICAgICBjdHgtPlNldERlYnVnUG9zKHBvcyk7Ci0gCi0gICAgIC8vIEFuZCBkbyB0 aGUgYWN0dWFsIGluZGV4aW5nIGNhbGN1bGF0aW9uLi4KLS0gICAgbGx2bTo6VmFsdWUgKnB0ciA9 Ci0tICAgICAgICBjdHgtPkdldEVsZW1lbnRQdHJJbnN0KGJhc2VQdHIsIExMVk1JbnQzMigwKSwg aW5kZXhWYWx1ZSwgYmFzZVB0clR5cGUsIExMVk1HZXROYW1lKGJhc2VQdHIsICJfb2Zmc2V0Iikp OwotKyAgICBsbHZtOjpWYWx1ZSAqcHRyID0gY3R4LT5HZXRFbGVtZW50UHRySW5zdChiYXNlUHRy LCBMTFZNSW50MzIoMCksIGluZGV4VmFsdWUsIGJhc2VQdHJUeXBlLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpUd2luZShiYXNlUHRyLT5nZXRO YW1lKCkpICsgIl9vZmZzZXQiKTsKLSAgICAgcmV0dXJuIGxBZGRWYXJ5aW5nT2Zmc2V0c0lmTmVl ZGVkKGN0eCwgcHRyLCBHZXRMVmFsdWVUeXBlKCkpOwotIH0KLSAKLUBAIC00Nzg4LDE1ICs0Nzg5 LDE0IEBAIGxsdm06OlZhbHVlICpWZWN0b3JNZW1iZXJFeHByOjpHZXRWYWx1ZShGdW5jdGlvbkVt aXRDb250ZXh0ICpjdHgpIGNvbnN0IHsKLSAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg aWRlbnRpZmllci5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgIGNoYXIgaWRTdHJbMl0gPSB7 aWRlbnRpZmllcltpXSwgJ1wwJ307Ci0gICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmVsZW1lbnRQ dHIgPQotLSAgICAgICAgICAgICAgICBjdHgtPkFkZEVsZW1lbnRPZmZzZXQoYmFzZVB0ciwgaW5k aWNlc1tpXSwgYmFzZVB0clR5cGUsIExMVk1HZXROYW1lKGJhc2VQdHIsIGlkU3RyKSk7Ci0rICAg ICAgICAgICAgICAgIGN0eC0+QWRkRWxlbWVudE9mZnNldChiYXNlUHRyLCBpbmRpY2VzW2ldLCBi YXNlUHRyVHlwZSwgbGx2bTo6VHdpbmUoYmFzZVB0ci0+Z2V0TmFtZSgpKSArIGlkU3RyKTsKLSAg ICAgICAgICAgICBsbHZtOjpWYWx1ZSAqZWxlbWVudFZhbHVlID0gY3R4LT5Mb2FkSW5zdChlbGVt ZW50UHRyLCBlbGVtZW50TWFzaywgZWxlbWVudFB0clR5cGUpOwotIAotLSAgICAgICAgICAgIGNv bnN0IGNoYXIgKnJlc3VsdE5hbWUgPSBMTFZNR2V0TmFtZShyZXN1bHRQdHIsIGlkU3RyKTsKLS0g ICAgICAgICAgICBsbHZtOjpWYWx1ZSAqcHRtcCA9IGN0eC0+QWRkRWxlbWVudE9mZnNldChyZXN1 bHRQdHIsIGksIE5VTEwsIHJlc3VsdE5hbWUpOwotKyAgICAgICAgICAgIGxsdm06OlZhbHVlICpw dG1wID0gY3R4LT5BZGRFbGVtZW50T2Zmc2V0KHJlc3VsdFB0ciwgaSwgTlVMTCwgbGx2bTo6VHdp bmUocmVzdWx0UHRyLT5nZXROYW1lKCkpICsgaWRTdHIpOwotICAgICAgICAgICAgIGN0eC0+U3Rv cmVJbnN0KGVsZW1lbnRWYWx1ZSwgcHRtcCwgZWxlbWVudFB0clR5cGUsIGV4cHItPkdldFR5cGUo KS0+SXNVbmlmb3JtVHlwZSgpKTsKLSAgICAgICAgIH0KLSAKLS0gICAgICAgIHJldHVybiBjdHgt PkxvYWRJbnN0KHJlc3VsdFB0ciwgbWVtYmVyVHlwZSwgTExWTUdldE5hbWUoYmFzZVB0ciwgIl9z d2l6emxlIikpOwotKyAgICAgICAgcmV0dXJuIGN0eC0+TG9hZEluc3QocmVzdWx0UHRyLCBtZW1i ZXJUeXBlLCBsbHZtOjpUd2luZShiYXNlUHRyLT5nZXROYW1lKCkpICsgIl9zd2l6emxlIik7Ci0g ICAgIH0KLSB9Ci0gCi1AQCAtNDkzMiw3ICs0OTMyLDcgQEAgbGx2bTo6VmFsdWUgKk1lbWJlckV4 cHI6OkdldFZhbHVlKEZ1bmN0aW9uRW1pdENvbnRleHQgKmN0eCkgY29uc3QgewotIAotICAgICBj dHgtPlNldERlYnVnUG9zKHBvcyk7Ci0gICAgIHN0ZDo6c3RyaW5nIHN1ZmZpeCA9IHN0ZDo6c3Ry aW5nKCJfIikgKyBpZGVudGlmaWVyOwotLSAgICByZXR1cm4gY3R4LT5Mb2FkSW5zdChsdmFsdWUs IG1hc2ssIGx2YWx1ZVR5cGUsIExMVk1HZXROYW1lKGx2YWx1ZSwgc3VmZml4LmNfc3RyKCkpKTsK LSsgICAgcmV0dXJuIGN0eC0+TG9hZEluc3QobHZhbHVlLCBtYXNrLCBsdmFsdWVUeXBlLCBsbHZt OjpUd2luZShsdmFsdWUtPmdldE5hbWUoKSkgKyBzdWZmaXgpOwotIH0KLSAKLSBjb25zdCBUeXBl ICpNZW1iZXJFeHByOjpHZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gTlVMTDsgfQotQEAgLTY1MDIs NyArNjUwMiw3IEBAIHN0YXRpYyBsbHZtOjpWYWx1ZSAqbFR5cGVDb252QXRvbWljKEZ1bmN0aW9u RW1pdENvbnRleHQgKmN0eCwgbGx2bTo6VmFsdWUgKmV4cHJWCi0gICAgICAgICAgICAgICAgIC8v IGRvZXMgZm9yIGV2ZXJ5b25lIGVsc2UuLi4KLSAgICAgICAgICAgICAgICAgQXNzZXJ0KGNhc3Qp OwotICAgICAgICAgICAgICAgICBjYXN0ID0gY3R4LT5Td2l0Y2hCb29sU2l6ZShjYXN0LCBMTFZN VHlwZXM6OkJvb2xWZWN0b3JUeXBlLT5nZXRFbGVtZW50VHlwZSgpLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNR2V0TmFtZShjYXN0LCAidG9faV9ib29s IikpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpU d2luZShjYXN0LT5nZXROYW1lKCkpICsgInRvX2lfYm9vbCIpOwotICAgICAgICAgICAgIH0KLSAg ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgLy8gZnJvbVR5cGUtPklzVmFyeWluZ1R5cGUo KSkKLUBAIC04MjQ2LDcgKzgyNDYsNyBAQCBsbHZtOjpWYWx1ZSAqTmV3RXhwcjo6R2V0VmFsdWUo RnVuY3Rpb25FbWl0Q29udGV4dCAqY3R4KSBjb25zdCB7Ci0gICAgICAgICAvLyBwb2ludGVyIG9m IHRoZSByZXR1cm4gdHlwZSBhbmQgdG8gcnVuIHRoZSBjb2RlIGZvciBpbml0aWFsaXplcnMsCi0g ICAgICAgICAvLyBpZiBwcmVzZW50LgotICAgICAgICAgbGx2bTo6VHlwZSAqcHRyVHlwZSA9IHJl dFR5cGUtPkxMVk1UeXBlKGctPmN0eCk7Ci0tICAgICAgICBwdHJWYWx1ZSA9IGN0eC0+Qml0Q2Fz dEluc3QocHRyVmFsdWUsIHB0clR5cGUsIExMVk1HZXROYW1lKHB0clZhbHVlLCAiX2Nhc3RfcHRy IikpOwotKyAgICAgICAgcHRyVmFsdWUgPSBjdHgtPkJpdENhc3RJbnN0KHB0clZhbHVlLCBwdHJU eXBlLCBsbHZtOjpUd2luZShwdHJWYWx1ZS0+Z2V0TmFtZSgpKSArICJfY2FzdF9wdHIiKTsKLSAK LSAgICAgICAgIGlmIChpbml0RXhwciAhPSBOVUxMKQotICAgICAgICAgICAgIEluaXRTeW1ib2wo cHRyVmFsdWUsIGFsbG9jVHlwZSwgaW5pdEV4cHIsIGN0eCwgcG9zKTsKLWRpZmYgLS1naXQgYS9z cmMvbGx2bXV0aWwuY3BwIGIvc3JjL2xsdm11dGlsLmNwcAotaW5kZXggOTcwMTc1ZGJmLi5kMGJl Y2I5ZjUgMTAwNjQ0Ci0tLS0gYS9zcmMvbGx2bXV0aWwuY3BwCi0rKysgYi9zcmMvbGx2bXV0aWwu Y3BwCi1AQCAtMTYwNSwyMyArMTYwNSw2IEBAIGxsdm06OlZhbHVlICpMTFZNU2h1ZmZsZVZlY3Rv cnMobGx2bTo6VmFsdWUgKnYxLCBsbHZtOjpWYWx1ZSAqdjIsIGludDMyX3Qgc2h1ZltdCi0gICAg IHJldHVybiBuZXcgbGx2bTo6U2h1ZmZsZVZlY3Rvckluc3QodjEsIHYyLCB2ZWMsICJzaHVmZmxl IiwgaW5zZXJ0QmVmb3JlKTsKLSB9Ci0gCi0tY29uc3QgY2hhciAqTExWTUdldE5hbWUobGx2bTo6 VmFsdWUgKnYsIGNvbnN0IGNoYXIgKnMpIHsKLS0gICAgaWYgKHYgPT0gTlVMTCkKLS0gICAgICAg IHJldHVybiBzOwotLSAgICBzdGQ6OnN0cmluZyByZXQgPSBzdGQ6OnN0cmluZyh2LT5nZXROYW1l KCkpOwotLSAgICByZXQgKz0gczsKLS0gICAgcmV0dXJuIHN0cmR1cChyZXQuY19zdHIoKSk7Ci0t fQotLQotLWNvbnN0IGNoYXIgKkxMVk1HZXROYW1lKGNvbnN0IGNoYXIgKm9wLCBsbHZtOjpWYWx1 ZSAqdjEsIGxsdm06OlZhbHVlICp2MikgewotLSAgICBzdGQ6OnN0cmluZyByID0gb3A7Ci0tICAg IHIgKz0gIl8iOwotLSAgICByICs9IHYxLT5nZXROYW1lKCkuc3RyKCk7Ci0tICAgIHIgKz0gIl8i OwotLSAgICByICs9IHYyLT5nZXROYW1lKCkuc3RyKCk7Ci0tICAgIHJldHVybiBzdHJkdXAoci5j X3N0cigpKTsKLS19Ci0tCi0gI2lmZGVmIElTUENfR0VOWF9FTkFCTEVECi0gYm9vbCBsSXNTVk1M b2FkKGxsdm06Okluc3RydWN0aW9uICppbnN0KSB7Ci0gICAgIEFzc2VydChpbnN0KTsKLWRpZmYg LS1naXQgYS9zcmMvbGx2bXV0aWwuaCBiL3NyYy9sbHZtdXRpbC5oCi1pbmRleCA0MmNjZTRkODMu LjA3ZDA4OWJiNCAxMDA2NDQKLS0tLSBhL3NyYy9sbHZtdXRpbC5oCi0rKysgYi9zcmMvbGx2bXV0 aWwuaAotQEAgLTMyOCwxMSArMzI4LDYgQEAgZXh0ZXJuIGxsdm06OlZhbHVlICpMTFZNQ29uY2F0 VmVjdG9ycyhsbHZtOjpWYWx1ZSAqdjEsIGxsdm06OlZhbHVlICp2MiwgbGx2bTo6SW4KLSBleHRl cm4gbGx2bTo6VmFsdWUgKkxMVk1TaHVmZmxlVmVjdG9ycyhsbHZtOjpWYWx1ZSAqdjEsIGxsdm06 OlZhbHVlICp2MiwgaW50MzJfdCBzaHVmW10sIGludCBzaHVmU2l6ZSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zZXJ0QmVmb3Jl KTsKLSAKLS0vKiogVXRpbGl0eSByb3V0aW5lcyB0byBjb25jYXQgc3RyaW5ncyB3aXRoIHRoZSBu YW1lcyBvZiBleGlzdGluZyB2YWx1ZXMgdG8KLS0gICAgY3JlYXRlIG1lYW5pbmdmdWwgbmV3IG5h bWVzIGZvciBpbnN0cnVjdGlvbiB2YWx1ZXMuCi0tKi8KLS1leHRlcm4gY29uc3QgY2hhciAqTExW TUdldE5hbWUobGx2bTo6VmFsdWUgKnYsIGNvbnN0IGNoYXIgKik7Ci0tZXh0ZXJuIGNvbnN0IGNo YXIgKkxMVk1HZXROYW1lKGNvbnN0IGNoYXIgKm9wLCBsbHZtOjpWYWx1ZSAqdjEsIGxsdm06OlZh bHVlICp2Mik7Ci0gI2lmZGVmIElTUENfR0VOWF9FTkFCTEVECi0gZW51bSBBZGRyZXNzU3BhY2Ug eyBMb2NhbCwgR2xvYmFsLCBFeHRlcm5hbCB9OwotIAotZGlmZiAtLWdpdCBhL3NyYy9vcHQuY3Bw IGIvc3JjL29wdC5jcHAKLWluZGV4IDViMWFjN2I2My4uOWQ2Y2FlMDU4IDEwMDY0NAotLS0tIGEv c3JjL29wdC5jcHAKLSsrKyBiL3NyYy9vcHQuY3BwCi1AQCAtMjU3LDcgKzI1Nyw3IEBAIHN0YXRp YyBib29sIGxHZXRTb3VyY2VQb3NGcm9tTWV0YWRhdGEoY29uc3QgbGx2bTo6SW5zdHJ1Y3Rpb24g Kmluc3QsIFNvdXJjZVBvcyAqCi0gICAgIHJldHVybiB0cnVlOwotIH0KLSAKLS1zdGF0aWMgbGx2 bTo6SW5zdHJ1Y3Rpb24gKmxDYWxsSW5zdChsbHZtOjpGdW5jdGlvbiAqZnVuYywgbGx2bTo6VmFs dWUgKmFyZzAsIGxsdm06OlZhbHVlICphcmcxLCBjb25zdCBjaGFyICpuYW1lLAotK3N0YXRpYyBs bHZtOjpJbnN0cnVjdGlvbiAqbENhbGxJbnN0KGxsdm06OkZ1bmN0aW9uICpmdW5jLCBsbHZtOjpW YWx1ZSAqYXJnMCwgbGx2bTo6VmFsdWUgKmFyZzEsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICpp bnNlcnRCZWZvcmUgPSBOVUxMKSB7Ci0gICAgIGxsdm06OlZhbHVlICphcmdzWzJdID0ge2FyZzAs IGFyZzF9OwotICAgICBsbHZtOjpBcnJheVJlZjxsbHZtOjpWYWx1ZSAqPiBuZXdBcmdBcnJheSgm YXJnc1swXSwgJmFyZ3NbMl0pOwotQEAgLTI2NSwyMSArMjY1LDIyIEBAIHN0YXRpYyBsbHZtOjpJ bnN0cnVjdGlvbiAqbENhbGxJbnN0KGxsdm06OkZ1bmN0aW9uICpmdW5jLCBsbHZtOjpWYWx1ZSAq YXJnMCwgbGx2Ci0gfQotIAotIHN0YXRpYyBsbHZtOjpJbnN0cnVjdGlvbiAqbENhbGxJbnN0KGxs dm06OkZ1bmN0aW9uICpmdW5jLCBsbHZtOjpWYWx1ZSAqYXJnMCwgbGx2bTo6VmFsdWUgKmFyZzEs IGxsdm06OlZhbHVlICphcmcyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGNoYXIgKm5hbWUsIGxsdm06Okluc3RydWN0aW9uICppbnNlcnRCZWZvcmUgPSBOVUxM KSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdp bmUgJm5hbWUsIGxsdm06Okluc3RydWN0aW9uICppbnNlcnRCZWZvcmUgPSBOVUxMKSB7Ci0gICAg IGxsdm06OlZhbHVlICphcmdzWzNdID0ge2FyZzAsIGFyZzEsIGFyZzJ9OwotICAgICBsbHZtOjpB cnJheVJlZjxsbHZtOjpWYWx1ZSAqPiBuZXdBcmdBcnJheSgmYXJnc1swXSwgJmFyZ3NbM10pOwot ICAgICByZXR1cm4gbGx2bTo6Q2FsbEluc3Q6OkNyZWF0ZShmdW5jLCBuZXdBcmdBcnJheSwgbmFt ZSwgaW5zZXJ0QmVmb3JlKTsKLSB9Ci0gCi0gc3RhdGljIGxsdm06Okluc3RydWN0aW9uICpsQ2Fs bEluc3QobGx2bTo6RnVuY3Rpb24gKmZ1bmMsIGxsdm06OlZhbHVlICphcmcwLCBsbHZtOjpWYWx1 ZSAqYXJnMSwgbGx2bTo6VmFsdWUgKmFyZzIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGx2bTo6VmFsdWUgKmFyZzMsIGNvbnN0IGNoYXIgKm5hbWUsIGxsdm06Okluc3Ry dWN0aW9uICppbnNlcnRCZWZvcmUgPSBOVUxMKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmFyZzMsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICpp bnNlcnRCZWZvcmUgPSBOVUxMKSB7Ci0gICAgIGxsdm06OlZhbHVlICphcmdzWzRdID0ge2FyZzAs IGFyZzEsIGFyZzIsIGFyZzN9OwotICAgICBsbHZtOjpBcnJheVJlZjxsbHZtOjpWYWx1ZSAqPiBu ZXdBcmdBcnJheSgmYXJnc1swXSwgJmFyZ3NbNF0pOwotICAgICByZXR1cm4gbGx2bTo6Q2FsbElu c3Q6OkNyZWF0ZShmdW5jLCBuZXdBcmdBcnJheSwgbmFtZSwgaW5zZXJ0QmVmb3JlKTsKLSB9Ci0g Ci0gc3RhdGljIGxsdm06Okluc3RydWN0aW9uICpsQ2FsbEluc3QobGx2bTo6RnVuY3Rpb24gKmZ1 bmMsIGxsdm06OlZhbHVlICphcmcwLCBsbHZtOjpWYWx1ZSAqYXJnMSwgbGx2bTo6VmFsdWUgKmFy ZzIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmFy ZzMsIGxsdm06OlZhbHVlICphcmc0LCBjb25zdCBjaGFyICpuYW1lLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICphcmczLCBsbHZtOjpWYWx1ZSAqYXJn NCwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc2VydEJlZm9yZSA9IE5VTEwpIHsKLSAgICAg bGx2bTo6VmFsdWUgKmFyZ3NbNV0gPSB7YXJnMCwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNH07Ci0g ICAgIGxsdm06OkFycmF5UmVmPGxsdm06OlZhbHVlICo+IG5ld0FyZ0FycmF5KCZhcmdzWzBdLCAm YXJnc1s1XSk7Ci1AQCAtMjg3LDcgKzI4OCw3IEBAIHN0YXRpYyBsbHZtOjpJbnN0cnVjdGlvbiAq bENhbGxJbnN0KGxsdm06OkZ1bmN0aW9uICpmdW5jLCBsbHZtOjpWYWx1ZSAqYXJnMCwgbGx2Ci0g fQotIAotIHN0YXRpYyBsbHZtOjpJbnN0cnVjdGlvbiAqbENhbGxJbnN0KGxsdm06OkZ1bmN0aW9u ICpmdW5jLCBsbHZtOjpWYWx1ZSAqYXJnMCwgbGx2bTo6VmFsdWUgKmFyZzEsIGxsdm06OlZhbHVl ICphcmcyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlZhbHVl ICphcmczLCBsbHZtOjpWYWx1ZSAqYXJnNCwgbGx2bTo6VmFsdWUgKmFyZzUsIGNvbnN0IGNoYXIg Km5hbWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VmFsdWUg KmFyZzMsIGxsdm06OlZhbHVlICphcmc0LCBsbHZtOjpWYWx1ZSAqYXJnNSwgY29uc3QgbGx2bTo6 VHdpbmUgJm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6 SW5zdHJ1Y3Rpb24gKmluc2VydEJlZm9yZSA9IE5VTEwpIHsKLSAgICAgbGx2bTo6VmFsdWUgKmFy Z3NbNl0gPSB7YXJnMCwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNX07Ci0gICAgIGxsdm06 OkFycmF5UmVmPGxsdm06OlZhbHVlICo+IG5ld0FyZ0FycmF5KCZhcmdzWzBdLCAmYXJnc1s2XSk7 Ci1AQCAtOTkxLDIzICs5OTIsMjQgQEAgYm9vbCBJbnRyaW5zaWNzT3B0OjpydW5PbkJhc2ljQmxv Y2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAgICAgICAgICAgICAgICAgbGx2bTo6VHlwZSAq cmV0dXJuVHlwZSA9IGNhbGxJbnN0LT5nZXRUeXBlKCk7Ci0gICAgICAgICAgICAgICAgIEFzc2Vy dChsbHZtOjppc2E8bGx2bTo6VmVjdG9yVHlwZT4ocmV0dXJuVHlwZSkpOwotICAgICAgICAgICAg ICAgICAvLyBjYXN0IHRoZSBpOCAqIHRvIHRoZSBhcHByb3ByaWF0ZSB0eXBlCi0tICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBMTFZNR2V0TmFtZShjYWxsSW5zdC0+Z2V0QXJnT3Bl cmFuZCgwKSwgIl9jYXN0Iik7Ci0tICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICpjYXN0UHRy ID0gbmV3IGxsdm06OkJpdENhc3RJbnN0KGNhbGxJbnN0LT5nZXRBcmdPcGVyYW5kKDApLAotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsbHZtOjpQb2ludGVyVHlwZTo6Z2V0KHJldHVyblR5cGUsIDApLCBuYW1lLCBjYWxsSW5zdCk7 Ci0rICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICpjYXN0UHRyID0KLSsgICAgICAgICAgICAg ICAgICAgIG5ldyBsbHZtOjpCaXRDYXN0SW5zdChjYWxsSW5zdC0+Z2V0QXJnT3BlcmFuZCgwKSwg bGx2bTo6UG9pbnRlclR5cGU6OmdldChyZXR1cm5UeXBlLCAwKSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpUd2luZShjYWxsSW5zdC0+Z2V0QXJnT3Bl cmFuZCgwKS0+Z2V0TmFtZSgpKSArICJfY2FzdCIsIGNhbGxJbnN0KTsKLSAgICAgICAgICAgICAg ICAgbENvcHlNZXRhZGF0YShjYXN0UHRyLCBjYWxsSW5zdCk7Ci0gICAgICAgICAgICAgICAgIGlu dCBhbGlnbjsKLSAgICAgICAgICAgICAgICAgaWYgKGctPm9wdC5mb3JjZUFsaWduZWRNZW1vcnkp Ci0gICAgICAgICAgICAgICAgICAgICBhbGlnbiA9IGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9y QWxpZ25tZW50KCk7Ci0gICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg IGFsaWduID0gY2FsbEluc3QtPmdldENhbGxlZEZ1bmN0aW9uKCkgPT0gYXZ4TWFza2VkTG9hZDMy ID8gNCA6IDg7Ci0tICAgICAgICAgICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZShjYWxsSW5zdC0+ Z2V0QXJnT3BlcmFuZCgwKSwgIl9sb2FkIik7Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OID09IElT UENfTExWTV8xMF8wCi0tICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICpsb2FkSW5z dCA9IG5ldyBsbHZtOjpMb2FkSW5zdChjYXN0UHRyLCBuYW1lLCBmYWxzZSAvKiBub3Qgdm9sYXRp bGUgKi8sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsbHZtOjpNYXliZUFsaWduKGFsaWduKSwgKGxsdm06Okluc3RydWN0 aW9uICopTlVMTCk7Ci0rICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICpsb2FkSW5z dCA9Ci0rICAgICAgICAgICAgICAgICAgICBuZXcgbGx2bTo6TG9hZEluc3QoY2FzdFB0ciwgbGx2 bTo6VHdpbmUoY2FsbEluc3QtPmdldEFyZ09wZXJhbmQoMCktPmdldE5hbWUoKSkgKyAiX2xvYWQi LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIC8qIG5vdCB2 b2xhdGlsZSAqLywgbGx2bTo6TWF5YmVBbGlnbihhbGlnbiksIChsbHZtOjpJbnN0cnVjdGlvbiAq KU5VTEwpOwotICNlbHNlCi0gICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICpsb2Fk SW5zdCA9IG5ldyBsbHZtOjpMb2FkSW5zdCgKLS0gICAgICAgICAgICAgICAgICAgIGxsdm06OmR5 bl9jYXN0PGxsdm06OlBvaW50ZXJUeXBlPihjYXN0UHRyLT5nZXRUeXBlKCkpLT5nZXRQb2ludGVy RWxlbWVudFR5cGUoKSwgY2FzdFB0ciwgbmFtZSwKLS0gICAgICAgICAgICAgICAgICAgIGZhbHNl IC8qIG5vdCB2b2xhdGlsZSAqLywgbGx2bTo6TWF5YmVBbGlnbihhbGlnbikudmFsdWVPck9uZSgp LCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxMKTsKLSsgICAgICAgICAgICAgICAgICAgIGxsdm06 OmR5bl9jYXN0PGxsdm06OlBvaW50ZXJUeXBlPihjYXN0UHRyLT5nZXRUeXBlKCkpLT5nZXRQb2lu dGVyRWxlbWVudFR5cGUoKSwgY2FzdFB0ciwKLSsgICAgICAgICAgICAgICAgICAgIGxsdm06OlR3 aW5lKGNhbGxJbnN0LT5nZXRBcmdPcGVyYW5kKDApLT5nZXROYW1lKCkpICsgIl9sb2FkIiwgZmFs c2UgLyogbm90IHZvbGF0aWxlICovLAotKyAgICAgICAgICAgICAgICAgICAgbGx2bTo6TWF5YmVB bGlnbihhbGlnbikudmFsdWVPck9uZSgpLCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxMKTsKLSAj ZW5kaWYKLSAgICAgICAgICAgICAgICAgbENvcHlNZXRhZGF0YShsb2FkSW5zdCwgY2FsbEluc3Qp OwotICAgICAgICAgICAgICAgICBsbHZtOjpSZXBsYWNlSW5zdFdpdGhJbnN0KGNhbGxJbnN0LCBs b2FkSW5zdCk7Ci1AQCAtMTAyOCw5ICsxMDMwLDkgQEAgYm9vbCBJbnRyaW5zaWNzT3B0OjpydW5P bkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAgICAgICAgICAgICAgICAgLy8g YWxsIGxhbmVzIHN0b3JpbmcsIHNvIHJlcGxhY2Ugd2l0aCBhIHJlZ3VsYXIgc3RvcmUKLSAgICAg ICAgICAgICAgICAgbGx2bTo6VmFsdWUgKnJ2YWx1ZSA9IGNhbGxJbnN0LT5nZXRBcmdPcGVyYW5k KDIpOwotICAgICAgICAgICAgICAgICBsbHZtOjpUeXBlICpzdG9yZVR5cGUgPSBydmFsdWUtPmdl dFR5cGUoKTsKLS0gICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSA9IExMVk1HZXROYW1l KGNhbGxJbnN0LT5nZXRBcmdPcGVyYW5kKDApLCAiX3B0cmNhc3QiKTsKLS0gICAgICAgICAgICAg ICAgbGx2bTo6VmFsdWUgKmNhc3RQdHIgPSBuZXcgbGx2bTo6Qml0Q2FzdEluc3QoY2FsbEluc3Qt PmdldEFyZ09wZXJhbmQoMCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlBvaW50ZXJUeXBlOjpnZXQoc3RvcmVUeXBl LCAwKSwgbmFtZSwgY2FsbEluc3QpOwotKyAgICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqY2Fz dFB0ciA9Ci0rICAgICAgICAgICAgICAgICAgICBuZXcgbGx2bTo6Qml0Q2FzdEluc3QoY2FsbElu c3QtPmdldEFyZ09wZXJhbmQoMCksIGxsdm06OlBvaW50ZXJUeXBlOjpnZXQoc3RvcmVUeXBlLCAw KSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpUd2lu ZShjYWxsSW5zdC0+Z2V0QXJnT3BlcmFuZCgwKS0+Z2V0TmFtZSgpKSArICJfcHRyY2FzdCIsIGNh bGxJbnN0KTsKLSAgICAgICAgICAgICAgICAgbENvcHlNZXRhZGF0YShjYXN0UHRyLCBjYWxsSW5z dCk7Ci0gCi0gICAgICAgICAgICAgICAgIGludCBhbGlnbjsKLUBAIC0xMzM5LDggKzEzNDEsOCBA QCBzdGF0aWMgbGx2bTo6VmFsdWUgKmxHZXRCYXNlUG9pbnRlcihsbHZtOjpWYWx1ZSAqdiwgbGx2 bTo6SW5zdHJ1Y3Rpb24gKmluc2VydEJlZgotICAgICAgICAgaWYgKHQgPT0gTlVMTCkgewotICAg ICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICBy ZXR1cm4gbGx2bTo6Q2FzdEluc3Q6OkNyZWF0ZShjaS0+Z2V0T3Bjb2RlKCksIHQsIGNpLT5nZXRU eXBlKCktPmdldFNjYWxhclR5cGUoKSwgTExWTUdldE5hbWUodCwgIl9jYXN0IiksCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlKTsKLSsgICAg ICAgICAgICByZXR1cm4gbGx2bTo6Q2FzdEluc3Q6OkNyZWF0ZShjaS0+Z2V0T3Bjb2RlKCksIHQs IGNpLT5nZXRUeXBlKCktPmdldFNjYWxhclR5cGUoKSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsbHZtOjpUd2luZSh0LT5nZXROYW1lKCkpICsgIl9jYXN0Iiwg aW5zZXJ0QmVmb3JlKTsKLSAgICAgICAgIH0KLSAgICAgfQotIAotQEAgLTE1ODMsMTMgKzE1ODUs MTMgQEAgc3RhdGljIHZvaWQgbEV4dHJhY3RDb25zdGFudE9mZnNldChsbHZtOjpWYWx1ZSAqdmVj LCBsbHZtOjpWYWx1ZSAqKmNvbnN0T2Zmc2V0LAotICAgICAgICAgaWYgKGNvID09IE5VTEwpCi0g ICAgICAgICAgICAgKmNvbnN0T2Zmc2V0ID0gTlVMTDsKLSAgICAgICAgIGVsc2UKLS0gICAgICAg ICAgICAqY29uc3RPZmZzZXQgPQotLSAgICAgICAgICAgICAgICBsbHZtOjpDYXN0SW5zdDo6Q3Jl YXRlKGNhc3QtPmdldE9wY29kZSgpLCBjbywgY2FzdC0+Z2V0VHlwZSgpLCBMTFZNR2V0TmFtZShj bywgIl9jYXN0IiksIGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAgICAgKmNvbnN0T2Zmc2V0ID0g bGx2bTo6Q2FzdEluc3Q6OkNyZWF0ZShjYXN0LT5nZXRPcGNvZGUoKSwgY28sIGNhc3QtPmdldFR5 cGUoKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxsdm06OlR3aW5lKGNvLT5nZXROYW1lKCkpICsgIl9jYXN0IiwgaW5zZXJ0QmVmb3JlKTsKLSAg ICAgICAgIGlmICh2byA9PSBOVUxMKQotICAgICAgICAgICAgICp2YXJpYWJsZU9mZnNldCA9IE5V TEw7Ci0gICAgICAgICBlbHNlCi0tICAgICAgICAgICAgKnZhcmlhYmxlT2Zmc2V0ID0KLS0gICAg ICAgICAgICAgICAgbGx2bTo6Q2FzdEluc3Q6OkNyZWF0ZShjYXN0LT5nZXRPcGNvZGUoKSwgdm8s IGNhc3QtPmdldFR5cGUoKSwgTExWTUdldE5hbWUodm8sICJfY2FzdCIpLCBpbnNlcnRCZWZvcmUp OwotKyAgICAgICAgICAgICp2YXJpYWJsZU9mZnNldCA9IGxsdm06OkNhc3RJbnN0OjpDcmVhdGUo Y2FzdC0+Z2V0T3Bjb2RlKCksIHZvLCBjYXN0LT5nZXRUeXBlKCksCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpUd2luZSh2by0+Z2V0 TmFtZSgpKSArICJfY2FzdCIsIGluc2VydEJlZm9yZSk7Ci0gICAgICAgICByZXR1cm47Ci0gICAg IH0KLSAKLUBAIC0xNjA4LDE2ICsxNjEwLDE4IEBAIHN0YXRpYyB2b2lkIGxFeHRyYWN0Q29uc3Rh bnRPZmZzZXQobGx2bTo6VmFsdWUgKnZlYywgbGx2bTo6VmFsdWUgKipjb25zdE9mZnNldCwKLSAg ICAgICAgICAgICBlbHNlIGlmIChjMSA9PSBOVUxMIHx8IGxsdm06OmlzYTxsbHZtOjpDb25zdGFu dEFnZ3JlZ2F0ZVplcm8+KGMxKSkKLSAgICAgICAgICAgICAgICAgKmNvbnN0T2Zmc2V0ID0gYzA7 Ci0gICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgICAqY29uc3RPZmZzZXQgPSBsbHZt OjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKGxsdm06Okluc3RydWN0aW9uOjpBZGQsIGMwLCBjMSwg TExWTUdldE5hbWUoImFkZCIsIGMwLCBjMSksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlKTsKLSsgICAgICAg ICAgICAgICAgKmNvbnN0T2Zmc2V0ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZSgKLSsg ICAgICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uOjpBZGQsIGMwLCBjMSwgKChsbHZt OjpUd2luZSgiYWRkXyIpICsgYzAtPmdldE5hbWUoKSkgKyAiXyIpICsgYzEtPmdldE5hbWUoKSwK LSsgICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0gCi0gICAgICAgICAgICAgaWYg KHYwID09IE5VTEwgfHwgbGx2bTo6aXNhPGxsdm06OkNvbnN0YW50QWdncmVnYXRlWmVybz4odjAp KQotICAgICAgICAgICAgICAgICAqdmFyaWFibGVPZmZzZXQgPSB2MTsKLSAgICAgICAgICAgICBl bHNlIGlmICh2MSA9PSBOVUxMIHx8IGxsdm06OmlzYTxsbHZtOjpDb25zdGFudEFnZ3JlZ2F0ZVpl cm8+KHYxKSkKLSAgICAgICAgICAgICAgICAgKnZhcmlhYmxlT2Zmc2V0ID0gdjA7Ci0gICAgICAg ICAgICAgZWxzZQotLSAgICAgICAgICAgICAgICAqdmFyaWFibGVPZmZzZXQgPSBsbHZtOjpCaW5h cnlPcGVyYXRvcjo6Q3JlYXRlKGxsdm06Okluc3RydWN0aW9uOjpBZGQsIHYwLCB2MSwKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMTFZNR2V0TmFtZSgiYWRkIiwgdjAsIHYxKSwgaW5zZXJ0QmVmb3JlKTsKLSsgICAgICAgICAg ICAgICAgKnZhcmlhYmxlT2Zmc2V0ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZSgKLSsg ICAgICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uOjpBZGQsIHYwLCB2MSwgKChsbHZt OjpUd2luZSgiYWRkXyIpICsgdjAtPmdldE5hbWUoKSkgKyAiXyIpICsgdjEtPmdldE5hbWUoKSwK LSsgICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0gICAgICAgICAgICAgcmV0dXJu OwotICAgICAgICAgfSBlbHNlIGlmIChib3AtPmdldE9wY29kZSgpID09IGxsdm06Okluc3RydWN0 aW9uOjpTaGwpIHsKLSAgICAgICAgICAgICBsRXh0cmFjdENvbnN0YW50T2Zmc2V0KG9wMCwgJmMw LCAmdjAsIGluc2VydEJlZm9yZSk7Ci1AQCAtMTYzMywxMCArMTYzNywxMiBAQCBzdGF0aWMgdm9p ZCBsRXh0cmFjdENvbnN0YW50T2Zmc2V0KGxsdm06OlZhbHVlICp2ZWMsIGxsdm06OlZhbHVlICoq Y29uc3RPZmZzZXQsCi0gICAgICAgICAgICAgICAgICpjb25zdE9mZnNldCA9IHZlYzsKLSAgICAg ICAgICAgICAgICAgKnZhcmlhYmxlT2Zmc2V0ID0gTlVMTDsKLSAgICAgICAgICAgICB9IGVsc2Ug ewotLSAgICAgICAgICAgICAgICAqY29uc3RPZmZzZXQgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6 Q3JlYXRlKGxsdm06Okluc3RydWN0aW9uOjpTaGwsIGMwLCBjMSwgTExWTUdldE5hbWUoInNobCIs IGMwLCBjMSksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlKTsKLS0gICAgICAgICAgICAgICAgKnZhcmlhYmxl T2Zmc2V0ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0cnVjdGlvbjo6 U2hsLCB2MCwgYzEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTExWTUdldE5hbWUoInNobCIsIHYwLCBjMSksIGluc2VydEJl Zm9yZSk7Ci0rICAgICAgICAgICAgICAgICpjb25zdE9mZnNldCA9IGxsdm06OkJpbmFyeU9wZXJh dG9yOjpDcmVhdGUoCi0rICAgICAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbjo6U2hs LCBjMCwgYzEsICgobGx2bTo6VHdpbmUoInNobF8iKSArIGMwLT5nZXROYW1lKCkpICsgIl8iKSAr IGMxLT5nZXROYW1lKCksCi0rICAgICAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUpOwotKyAg ICAgICAgICAgICAgICAqdmFyaWFibGVPZmZzZXQgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3Jl YXRlKAotKyAgICAgICAgICAgICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb246OlNobCwgdjAsIGMx LCAoKGxsdm06OlR3aW5lKCJzaGxfIikgKyB2MC0+Z2V0TmFtZSgpKSArICJfIikgKyBjMS0+Z2V0 TmFtZSgpLAotKyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlKTsKLSAgICAgICAgICAg ICB9Ci0gICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgfSBlbHNlIGlmIChib3AtPmdldE9w Y29kZSgpID09IGxsdm06Okluc3RydWN0aW9uOjpNdWwpIHsKLUBAIC0xNjQ4LDI1ICsxNjU0LDMw IEBAIHN0YXRpYyB2b2lkIGxFeHRyYWN0Q29uc3RhbnRPZmZzZXQobGx2bTo6VmFsdWUgKnZlYywg bGx2bTo6VmFsdWUgKipjb25zdE9mZnNldCwKLSAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhl IGZpcnN0IHRlcm0gaXMgYSBjb25zdGFudCBhbmQgdGhlIGxhc3QgdGhyZWUgYXJlCi0gICAgICAg ICAgICAgLy8gdmFyaWFibGUuCi0gICAgICAgICAgICAgaWYgKGMwICE9IE5VTEwgJiYgYzEgIT0g TlVMTCkKLS0gICAgICAgICAgICAgICAgKmNvbnN0T2Zmc2V0ID0gbGx2bTo6QmluYXJ5T3BlcmF0 b3I6OkNyZWF0ZShsbHZtOjpJbnN0cnVjdGlvbjo6TXVsLCBjMCwgYzEsIExMVk1HZXROYW1lKCJt dWwiLCBjMCwgYzEpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAgICAgICAgICpjb25z dE9mZnNldCA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUoCi0rICAgICAgICAgICAgICAg ICAgICBsbHZtOjpJbnN0cnVjdGlvbjo6TXVsLCBjMCwgYzEsICgobGx2bTo6VHdpbmUoIm11bF8i KSArIGMwLT5nZXROYW1lKCkpICsgIl8iKSArIGMxLT5nZXROYW1lKCksCi0rICAgICAgICAgICAg ICAgICAgICBpbnNlcnRCZWZvcmUpOwotICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg ICAgKmNvbnN0T2Zmc2V0ID0gTlVMTDsKLSAKLSAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqdmEg PSBOVUxMLCAqdmIgPSBOVUxMLCAqdmMgPSBOVUxMOwotICAgICAgICAgICAgIGlmICh2MCAhPSBO VUxMICYmIGMxICE9IE5VTEwpCi0tICAgICAgICAgICAgICAgIHZhID0gbGx2bTo6QmluYXJ5T3Bl cmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0cnVjdGlvbjo6TXVsLCB2MCwgYzEsIExMVk1HZXROYW1l KCJtdWwiLCB2MCwgYzEpLAotKyAgICAgICAgICAgICAgICB2YSA9IGxsdm06OkJpbmFyeU9wZXJh dG9yOjpDcmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246Ok11bCwgdjAsIGMxLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsbHZtOjpUd2luZSgibXVs XyIpICsgdjAtPmdldE5hbWUoKSkgKyAiXyIpICsgYzEtPmdldE5hbWUoKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0g ICAgICAgICAgICAgaWYgKGMwICE9IE5VTEwgJiYgdjEgIT0gTlVMTCkKLS0gICAgICAgICAgICAg ICAgdmIgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKGxsdm06Okluc3RydWN0aW9uOjpN dWwsIGMwLCB2MSwgTExWTUdldE5hbWUoIm11bCIsIGMwLCB2MSksCi0rICAgICAgICAgICAgICAg IHZiID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0cnVjdGlvbjo6TXVs LCBjMCwgdjEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoKGxsdm06OlR3aW5lKCJtdWxfIikgKyBjMC0+Z2V0TmFtZSgpKSArICJfIikgKyB2MS0+ Z2V0TmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW5zZXJ0QmVmb3JlKTsKLSAgICAgICAgICAgICBpZiAodjAgIT0gTlVMTCAmJiB2MSAh PSBOVUxMKQotLSAgICAgICAgICAgICAgICB2YyA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVh dGUobGx2bTo6SW5zdHJ1Y3Rpb246Ok11bCwgdjAsIHYxLCBMTFZNR2V0TmFtZSgibXVsIiwgdjAs IHYxKSwKLSsgICAgICAgICAgICAgICAgdmMgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRl KGxsdm06Okluc3RydWN0aW9uOjpNdWwsIHYwLCB2MSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobGx2bTo6VHdpbmUoIm11bF8iKSArIHYwLT5n ZXROYW1lKCkpICsgIl8iKSArIHYxLT5nZXROYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUpOwotIAotICAgICAgICAg ICAgIGxsdm06OlZhbHVlICp2YWIgPSBOVUxMOwotICAgICAgICAgICAgIGlmICh2YSAhPSBOVUxM ICYmIHZiICE9IE5VTEwpCi0tICAgICAgICAgICAgICAgIHZhYiA9IGxsdm06OkJpbmFyeU9wZXJh dG9yOjpDcmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246OkFkZCwgdmEsIHZiLCBMTFZNR2V0TmFtZSgi YWRkIiwgdmEsIHZiKSwKLSsgICAgICAgICAgICAgICAgdmFiID0gbGx2bTo6QmluYXJ5T3BlcmF0 b3I6OkNyZWF0ZShsbHZtOjpJbnN0cnVjdGlvbjo6QWRkLCB2YSwgdmIsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChsbHZtOjpUd2luZSgiYWRk XyIpICsgdmEtPmdldE5hbWUoKSkgKyAiXyIpICsgdmItPmdldE5hbWUoKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUpOwot ICAgICAgICAgICAgIGVsc2UgaWYgKHZhICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgIHZhYiA9 IHZhOwotQEAgLTE2NzQsOCArMTY4NSw5IEBAIHN0YXRpYyB2b2lkIGxFeHRyYWN0Q29uc3RhbnRP ZmZzZXQobGx2bTo6VmFsdWUgKnZlYywgbGx2bTo6VmFsdWUgKipjb25zdE9mZnNldCwKLSAgICAg ICAgICAgICAgICAgdmFiID0gdmI7Ci0gCi0gICAgICAgICAgICAgaWYgKHZhYiAhPSBOVUxMICYm IHZjICE9IE5VTEwpCi0tICAgICAgICAgICAgICAgICp2YXJpYWJsZU9mZnNldCA9IGxsdm06OkJp bmFyeU9wZXJhdG9yOjpDcmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246OkFkZCwgdmFiLCB2YywKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMTFZNR2V0TmFtZSgiYWRkIiwgdmFiLCB2YyksIGluc2VydEJlZm9yZSk7Ci0rICAgICAg ICAgICAgICAgICp2YXJpYWJsZU9mZnNldCA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUo Ci0rICAgICAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbjo6QWRkLCB2YWIsIHZjLCAo KGxsdm06OlR3aW5lKCJhZGRfIikgKyB2YWItPmdldE5hbWUoKSkgKyAiXyIpICsgdmMtPmdldE5h bWUoKSwKLSsgICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0gICAgICAgICAgICAg ZWxzZSBpZiAodmFiICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgICp2YXJpYWJsZU9mZnNldCA9 IHZhYjsKLSAgICAgICAgICAgICBlbHNlCi1AQCAtMTk0Myw3ICsxOTU1LDcgQEAgc3RhdGljIGJv b2wgbE9mZnNldHMzMkJpdFNhZmUobGx2bTo6VmFsdWUgKip2YXJpYWJsZU9mZnNldFB0ciwgbGx2 bTo6VmFsdWUgKipjb24KLSAgICAgICAgICAgICAvLyBhbGwgemVyb3MgKGkuZS4gYSBDb25zdGFu dEFnZ3JlZ2F0ZVplcm8sIGJ1dCBqdXN0IGluIGNhc2UsCi0gICAgICAgICAgICAgLy8gZG8gdGhl IG1vcmUgZ2VuZXJhbCBjaGVjayB3aXRoIGxWZWN0b3JJczMyQml0SW50cygpLgotICAgICAgICAg ICAgIHZhcmlhYmxlT2Zmc2V0ID0gbmV3IGxsdm06OlRydW5jSW5zdCh2YXJpYWJsZU9mZnNldCwg TExWTVR5cGVzOjpJbnQzMlZlY3RvclR5cGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExMVk1HZXROYW1lKHZhcmlhYmxlT2Zmc2V0LCAiX3RydW5j IiksIGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxsdm06OlR3aW5lKHZhcmlhYmxlT2Zmc2V0LT5nZXROYW1lKCkpICsgIl90 cnVuYyIsIGluc2VydEJlZm9yZSk7Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAgICAgcmV0dXJu IGZhbHNlOwotICAgICB9Ci1AQCAtMTk1Miw3ICsxOTY0LDcgQEAgc3RhdGljIGJvb2wgbE9mZnNl dHMzMkJpdFNhZmUobGx2bTo6VmFsdWUgKip2YXJpYWJsZU9mZnNldFB0ciwgbGx2bTo6VmFsdWUg Kipjb24KLSAgICAgICAgIGlmIChsVmVjdG9ySXMzMkJpdEludHMoY29uc3RPZmZzZXQpKSB7Ci0g ICAgICAgICAgICAgLy8gVHJ1bmNhdGUgdGhlbSBzbyB3ZSBoYXZlIGEgMzItYml0IHZlY3RvciB0 eXBlIGZvciB0aGVtLgotICAgICAgICAgICAgIGNvbnN0T2Zmc2V0ID0gbmV3IGxsdm06OlRydW5j SW5zdChjb25zdE9mZnNldCwgTExWTVR5cGVzOjpJbnQzMlZlY3RvclR5cGUsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1HZXROYW1lKGNvbnN0T2Zm c2V0LCAiX3RydW5jIiksIGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlR3aW5lKGNvbnN0T2Zmc2V0LT5nZXROYW1lKCkp ICsgIl90cnVuYyIsIGluc2VydEJlZm9yZSk7Ci0gICAgICAgICB9IGVsc2UgewotICAgICAgICAg ICAgIC8vIEZJWE1FOiBvdGhlcndpc2Ugd2UganVzdCBhc3N1bWUgdGhhdCBhbGwgY29uc3RhbnQg b2Zmc2V0cwotICAgICAgICAgICAgIC8vIGNhbiBhY3R1YWxseSBhbHdheXMgZml0IGludG8gMzIt Yml0cy4uLiAgKFRoaXMgY291bGQgYmUKLUBAIC0xOTYzLDcgKzE5NzUsNyBAQCBzdGF0aWMgYm9v bCBsT2Zmc2V0czMyQml0U2FmZShsbHZtOjpWYWx1ZSAqKnZhcmlhYmxlT2Zmc2V0UHRyLCBsbHZt OjpWYWx1ZSAqKmNvbgotICAgICAgICAgICAgIC8vIGxsdm06OkNvbnN0YW50Rm9sZEluc3RydWN0 aW9uKCkgZG9lc24ndCBzZWVtIHRvIGJlIGRvaW5nCi0gICAgICAgICAgICAgLy8gZW5vdWdoIGZv ciB1cyBpbiBzb21lIGNhc2VzIGlmIHdlIGNhbGwgaXQgZnJvbSBoZXJlLgotICAgICAgICAgICAg IGNvbnN0T2Zmc2V0ID0gbmV3IGxsdm06OlRydW5jSW5zdChjb25zdE9mZnNldCwgTExWTVR5cGVz OjpJbnQzMlZlY3RvclR5cGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExMVk1HZXROYW1lKGNvbnN0T2Zmc2V0LCAiX3RydW5jIiksIGluc2VydEJlZm9y ZSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06 OlR3aW5lKGNvbnN0T2Zmc2V0LT5nZXROYW1lKCkpICsgIl90cnVuYyIsIGluc2VydEJlZm9yZSk7 Ci0gICAgICAgICB9Ci0gICAgIH0KLSAKLUBAIC0yMDEyLDggKzIwMjQsOCBAQCBzdGF0aWMgYm9v bCBsT2Zmc2V0czMyQml0U2FmZShsbHZtOjpWYWx1ZSAqKm9mZnNldFB0ciwgbGx2bTo6SW5zdHJ1 Y3Rpb24gKmluc2VydAotIAotICAgICAgICAgLy8gQWx0ZXJuYXRpdmVseSwgb2Zmc2V0IGNvdWxk IGJlIGEgc2VxdWVuY2Ugb2YgYWRkcyB0ZXJtaW5hdGluZwotICAgICAgICAgLy8gaW4gc2FmZSBj b25zdGFudCB2ZWN0b3JzIG9yIGEgU0V4dC4KLS0gICAgICAgICpvZmZzZXRQdHIgPQotLSAgICAg ICAgICAgIG5ldyBsbHZtOjpUcnVuY0luc3Qob2Zmc2V0LCBMTFZNVHlwZXM6OkludDMyVmVjdG9y VHlwZSwgTExWTUdldE5hbWUob2Zmc2V0LCAiX3RydW5jIiksIGluc2VydEJlZm9yZSk7Ci0rICAg ICAgICAqb2Zmc2V0UHRyID0gbmV3IGxsdm06OlRydW5jSW5zdChvZmZzZXQsIExMVk1UeXBlczo6 SW50MzJWZWN0b3JUeXBlLCBsbHZtOjpUd2luZShvZmZzZXQtPmdldE5hbWUoKSkgKyAiX3RydW5j IiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9y ZSk7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgfSBlbHNlCi0gICAgICAgICByZXR1cm4g ZmFsc2U7Ci1AQCAtMjIyOSw3ICsyMjQxLDggQEAgc3RhdGljIGJvb2wgbEdTVG9HU0Jhc2VPZmZz ZXRzKGxsdm06OkNhbGxJbnN0ICpjYWxsSW5zdCkgewotICAgICB9Ci0gICAgIC8vIENhc3QgdGhl IGJhc2UgcG9pbnRlciB0byBhIHZvaWQgKiwgc2luY2UgdGhhdCdzIHdoYXQgdGhlCi0gICAgIC8v IF9fcHNldWRvXypfYmFzZV9vZmZzZXRzXyogZnVuY3Rpb25zIHdhbnQuCi0tICAgIGJhc2VQdHIg PSBuZXcgbGx2bTo6SW50VG9QdHJJbnN0KGJhc2VQdHIsIExMVk1UeXBlczo6Vm9pZFBvaW50ZXJU eXBlLCBMTFZNR2V0TmFtZShiYXNlUHRyLCAiXzJ2b2lkIiksIGNhbGxJbnN0KTsKLSsgICAgYmFz ZVB0ciA9IG5ldyBsbHZtOjpJbnRUb1B0ckluc3QoYmFzZVB0ciwgTExWTVR5cGVzOjpWb2lkUG9p bnRlclR5cGUsIGxsdm06OlR3aW5lKGJhc2VQdHItPmdldE5hbWUoKSkgKyAiXzJ2b2lkIiwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbEluc3QpOwotICAgICBsQ29w eU1ldGFkYXRhKGJhc2VQdHIsIGNhbGxJbnN0KTsKLSAgICAgbGx2bTo6RnVuY3Rpb24gKmdhdGhl clNjYXR0ZXJGdW5jID0gaW5mby0+YmFzZU9mZnNldHNGdW5jOwotIAotQEAgLTI4MDMsNyArMjgx Niw3IEBAIHN0YXRpYyBib29sIGxHU1RvTG9hZFN0b3JlKGxsdm06OkNhbGxJbnN0ICpjYWxsSW5z dCkgewotICAgICAgICAgICAgICAgICBsQ29weU1ldGFkYXRhKHB0ciwgY2FsbEluc3QpOwotICAg ICAgICAgICAgICAgICBEZWJ1Zyhwb3MsICJUcmFuc2Zvcm1lZCBnYXRoZXIgdG8gdW5hbGlnbmVk IHZlY3RvciBsb2FkISIpOwotICAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqbmV3 Q2FsbCA9Ci0tICAgICAgICAgICAgICAgICAgICBsQ2FsbEluc3QoZ2F0aGVySW5mby0+bG9hZE1h c2tlZEZ1bmMsIHB0ciwgbWFzaywgTExWTUdldE5hbWUocHRyLCAiX21hc2tlZF9sb2FkIikpOwot KyAgICAgICAgICAgICAgICAgICAgbENhbGxJbnN0KGdhdGhlckluZm8tPmxvYWRNYXNrZWRGdW5j LCBwdHIsIG1hc2ssIGxsdm06OlR3aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJfbWFza2VkX2xvYWQi KTsKLSAgICAgICAgICAgICAgICAgbENvcHlNZXRhZGF0YShuZXdDYWxsLCBjYWxsSW5zdCk7Ci0g ICAgICAgICAgICAgICAgIGxsdm06OlJlcGxhY2VJbnN0V2l0aEluc3QoY2FsbEluc3QsIG5ld0Nh bGwpOwotICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv aXNwYy9wYXRjaGVzL2xsdm0xMi0wMDQucGF0Y2ggYi9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZt MTItMDA0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTk0ZDg0NDNhNWUu LjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA0LnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSBjMDNhNTE0MjQ0NDQ3NmExY2Fh NWMyYmE3ZmEyZDkyZDc3OTNkNmYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVl cGFrIFJhamVuZHJha3VtYXJhbiA8ZGVlcGFrLnJhamVuZHJha3VtYXJhbkBpbnRlbC5jb20+Ci1E YXRlOiBNb24sIDI1IEphbiAyMDIxIDA5OjIyOjQ5IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZp eGluZyBidWlsZCBvbiBsbHZtIHRydW5rLgotCi0tLS0KLSBzcmMvY3R4LmNwcCB8IDcgKysrLS0t LQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRp ZmYgLS1naXQgYS9zcmMvY3R4LmNwcCBiL3NyYy9jdHguY3BwCi1pbmRleCBkZWQ1MjRiNzEuLmI2 MGU2ZmU4NCAxMDA2NDQKLS0tLSBhL3NyYy9jdHguY3BwCi0rKysgYi9zcmMvY3R4LmNwcAotQEAg LTEwMjAsOCArMTAyMCw3IEBAIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4dDo6RW1pdENhc2VMYWJl bChpbnQgdmFsdWUsIGJvb2wgY2hlY2tNYXNrLCBTb3VyY2VQb3MgcG9zCi0gICAgIGxsdm06OkJh c2ljQmxvY2sgKmJiQ2FzZUltcGwgPSBOVUxMOwotICAgICBpZiAoZW1pdEdlblhIYXJkd2FyZU1h c2soKSkgewotICAgICAgICAgLy8gQ3JlYXRlIGJhc2ljIGJsb2NrIHdpdGggYWN0dWFsIGNhc2Ug aW1wbGVtZW50YXRpb24KLS0gICAgICAgIGxsdm06OlR3aW5lIGJiTmFtZSA9IGxsdm06OlR3aW5l KGJiQ2FzZS0+Z2V0TmFtZSgpKSArICJfaW1wbCI7Ci0tICAgICAgICBiYkNhc2VJbXBsID0gQ3Jl YXRlQmFzaWNCbG9jayhiYk5hbWUsIGJiQ2FzZSk7Ci0rICAgICAgICBiYkNhc2VJbXBsID0gQ3Jl YXRlQmFzaWNCbG9jayhsbHZtOjpUd2luZShiYkNhc2UtPmdldE5hbWUoKSkgKyAiX2ltcGwiLCBi YkNhc2UpOwotICAgICB9Ci0gI2VuZGlmCi0gCi1AQCAtMzE0Miw4ICszMTQxLDggQEAgbGx2bTo6 VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkJyb2FkY2FzdFZhbHVlKGxsdm06OlZhbHVlICp2 LCBsbHZtOjpUeXBlICp2ZWMKLSAgICAgbGx2bTo6VmFsdWUgKnVuZGVmMiA9IGxsdm06OlVuZGVm VmFsdWU6OmdldCh2ZWNUeXBlKTsKLSAKLSAgICAgLy8gSW5zZXJ0RWxlbWVudAotLSAgICBsbHZt OjpUd2luZSB0dyA9IG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHYtPmdl dE5hbWUoKSkgKyAiX2Jyb2FkY2FzdCIpIDogbmFtZSArIGxsdm06OlR3aW5lKCJfaW5pdCIpOwot LSAgICBsbHZtOjpWYWx1ZSAqaW5zZXJ0ID0gSW5zZXJ0SW5zdCh1bmRlZjEsIHYsIDAsIHR3LnN0 cigpLmNfc3RyKCkpOwotKyAgICBsbHZtOjpWYWx1ZSAqaW5zZXJ0ID0KLSsgICAgICAgIEluc2Vy dEluc3QodW5kZWYxLCB2LCAwLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IChsbHZtOjpUd2lu ZSh2LT5nZXROYW1lKCkpICsgIl9icm9hZGNhc3QiKSA6IG5hbWUgKyAiX2luaXQiKTsKLSAKLSAg ICAgLy8gU2h1ZmZsZVZlY3RvcgotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8x MV8wCmRpZmYgLS1naXQgYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA1LnBhdGNoIGIv c3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggZTNlOTZiMDBhYmZhLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9pc3Bj L3BhdGNoZXMvbGx2bTEyLTAwNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3MiArMCwwIEBA Ci1Gcm9tIGMxZDBhNTFiZjg0MTZkNDIxNDRkZTllMmJkZDU5ODI1ZWFlZmYxYWMgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBcmluYSBOZXNobHlhZXZhIDxhcmluYS5uZXNobHlhZXZh QGludGVsLmNvbT4KLURhdGU6IEZyaSwgOCBKYW4gMjAyMSAxNDoxMzo0OSAtMDgwMAotU3ViamVj dDogW1BBVENIXSBMTFZNIDExIHN1cHBvcnQgZm9yIGdlbiBjb2RlCi0KLS0tLQotIHNyYy9jdHgu Y3BwICAgICAgICAgICAgICAgICAgICAgfCAgMTMgKystCi0gc3JjL2dlbi9HbG9iYWxzTG9jYWxp emF0aW9uLmNwcCB8ICAgOSArLQotIHNyYy9vcHQuY3BwICAgICAgICAgICAgICAgICAgICAgfCAx NDMgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDEy NCBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jdHgu Y3BwIGIvc3JjL2N0eC5jcHAKLWluZGV4IGI2MGU2ZmU4NC4uMmE3MmU2ODM3IDEwMDY0NAotLS0t IGEvc3JjL2N0eC5jcHAKLSsrKyBiL3NyYy9jdHguY3BwCi1AQCAtMSw1ICsxLDUgQEAKLSAvKgot LSAgQ29weXJpZ2h0IChjKSAyMDEwLTIwMjAsIEludGVsIENvcnBvcmF0aW9uCi0rICBDb3B5cmln aHQgKGMpIDIwMTAtMjAyMSwgSW50ZWwgQ29ycG9yYXRpb24KLSAgIEFsbCByaWdodHMgcmVzZXJ2 ZWQuCi0gCi0gICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv cm1zLCB3aXRoIG9yIHdpdGhvdXQKLUBAIC0zNjg1LDggKzM2ODUsMTcgQEAgbGx2bTo6VmFsdWUg KkZ1bmN0aW9uRW1pdENvbnRleHQ6OkdlblhTaW1kQ0ZQcmVkaWNhdGUobGx2bTo6VmFsdWUgKnZh bHVlLCBsbHZtOjoKLSAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIGxsdm06OmlzYTxsbHZtOjpW ZWN0b3JUeXBlPih2YWx1ZS0+Z2V0VHlwZSgpKSk7Ci0gICAgIGxsdm06OlZlY3RvclR5cGUgKnZ0 ID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4odmFsdWUtPmdldFR5cGUoKSk7Ci0g ICAgIGlmIChkZWZhdWx0cyA9PSBOVUxMKSB7Ci0tICAgICAgICBkZWZhdWx0cyA9IGxsdm06OkNv bnN0YW50VmVjdG9yOjpnZXRTcGxhdCh2YWx1ZS0+Z2V0VHlwZSgpLT5nZXRWZWN0b3JOdW1FbGVt ZW50cygpLAotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0rICAgICAg ICBkZWZhdWx0cyA9IGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdCh2dC0+Z2V0VmVjdG9y TnVtRWxlbWVudHMoKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUodnQtPmdldEVsZW1lbnRUeXBl KCkpKTsKLSsjZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTFfMAotKyAgICAg ICAgZGVmYXVsdHMgPSBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoe3N0YXRpY19jYXN0 PHVuc2lnbmVkIGludD4odnQtPmdldE51bUVsZW1lbnRzKCkpLCBmYWxzZX0sCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudDo6 Z2V0TnVsbFZhbHVlKHZ0LT5nZXRFbGVtZW50VHlwZSgpKSk7Ci0rI2Vsc2UKLSsgICAgICAgIGRl ZmF1bHRzID0gbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KAotKyAgICAgICAgICAgIGxs dm06OkVsZW1lbnRDb3VudDo6Z2V0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odnQtPmdldE51 bUVsZW1lbnRzKCkpLCBmYWxzZSksCi0rICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnQ6OmdldE51 bGxWYWx1ZSh2dC0+Z2V0RWxlbWVudFR5cGUoKSkpOwotKyNlbmRpZgotICAgICB9Ci0gCi0gICAg IGF1dG8gRm4gPSBsbHZtOjpHZW5YSW50cmluc2ljOjpnZXRHZW5YRGVjbGFyYXRpb24obS0+bW9k dWxlLCBsbHZtOjpHZW5YSW50cmluc2ljOjpnZW54X3NpbWRjZl9wcmVkaWNhdGUsCi1kaWZmIC0t Z2l0IGEvc3JjL2dlbi9HbG9iYWxzTG9jYWxpemF0aW9uLmNwcCBiL3NyYy9nZW4vR2xvYmFsc0xv Y2FsaXphdGlvbi5jcHAKLWluZGV4IGExNzZlOTQ2Mi4uNDFmM2IwMGUyIDEwMDY0NAotLS0tIGEv c3JjL2dlbi9HbG9iYWxzTG9jYWxpemF0aW9uLmNwcAotKysrIGIvc3JjL2dlbi9HbG9iYWxzTG9j YWxpemF0aW9uLmNwcAotQEAgLTEsNSArMSw1IEBACi0gLyoKLS0gIENvcHlyaWdodCAoYykgMjAx NCwgMjAxNi0yMDIwLCBJbnRlbCBDb3Jwb3JhdGlvbgotKyAgQ29weXJpZ2h0IChjKSAyMDE0LCAy MDE2LTIwMjEsIEludGVsIENvcnBvcmF0aW9uCi0gICBBbGwgcmlnaHRzIHJlc2VydmVkLgotIAot ICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0 aCBvciB3aXRob3V0Ci1AQCAtNTMsOCArNTMsMTAgQEAKLSAjaW5jbHVkZSA8bGx2bS9HZW5YSW50 cmluc2ljcy9HZW5YSW50ck9wdHMuaD4KLSAjaW5jbHVkZSA8bGx2bS9HZW5YSW50cmluc2ljcy9H ZW5YSW50cmluc2ljcy5oPgotICNpbmNsdWRlIDxsbHZtL0dlblhJbnRyaW5zaWNzL0dlblhNZXRh ZGF0YS5oPgotLSNpbmNsdWRlIDxsbHZtL0lSL0NGRy5oPgotKyNpZiBJU1BDX0xMVk1fVkVSU0lP TiA8IElTUENfTExWTV8xMV8wCi0gI2luY2x1ZGUgPGxsdm0vSVIvQ2FsbFNpdGUuaD4KLSsjZW5k aWYKLSsjaW5jbHVkZSA8bGx2bS9JUi9DRkcuaD4KLSAjaW5jbHVkZSA8bGx2bS9JUi9EZWJ1Z0lu Zm8uaD4KLSAjaW5jbHVkZSA8bGx2bS9JUi9Eb21pbmF0b3JzLmg+Ci0gI2luY2x1ZGUgPGxsdm0v SVIvRnVuY3Rpb24uaD4KLUBAIC00NzAsNyArNDcyLDggQEAgdm9pZCBHbG9iYWxzTG9jYWxpemF0 aW9uOjpMb2NhbGl6ZUdsb2JhbHMoTG9jYWxpemF0aW9uSW5mbyAmTEkpIHsKLSAgICAgICAgIElu c3RydWN0aW9uICZGaXJzdEkgPSAqRm4tPmdldEVudHJ5QmxvY2soKS5iZWdpbigpOwotICAgICAg ICAgVHlwZSAqRWxlbVR5ID0gR1YtPmdldFR5cGUoKS0+Z2V0RWxlbWVudFR5cGUoKTsKLSAgICAg ICAgIEFsbG9jYUluc3QgKkFsbG9jYSA9IG5ldyBBbGxvY2FJbnN0KEVsZW1UeSwgMCwgR1YtPmdl dE5hbWUoKSArICIubG9jYWwiLCAmRmlyc3RJKTsKLS0gICAgICAgIEFsbG9jYS0+c2V0QWxpZ25t ZW50KGxsdm06Ok1heWJlQWxpZ24oR1YtPmdldEFsaWdubWVudCgpKSk7Ci0rICAgICAgICBBbGxv Y2EtPnNldEFsaWdubWVudChsbHZtOjpNYXliZUFsaWduKEdWLT5nZXRBbGlnbm1lbnQoKSkudmFs dWVPck9uZSgpKTsKLSsKLSAgICAgICAgIGlmICghaXNhPFVuZGVmVmFsdWU+KEdWLT5nZXRJbml0 aWFsaXplcigpKSkKLSAgICAgICAgICAgICBuZXcgU3RvcmVJbnN0KEdWLT5nZXRJbml0aWFsaXpl cigpLCBBbGxvY2EsICZGaXJzdEkpOwotIAotZGlmZiAtLWdpdCBhL3NyYy9vcHQuY3BwIGIvc3Jj L29wdC5jcHAKLWluZGV4IGQ1OGQ3N2Y3My4uMTc4OWI4NDc2IDEwMDY0NAotLS0tIGEvc3JjL29w dC5jcHAKLSsrKyBiL3NyYy9vcHQuY3BwCi1AQCAtMjg5OSwxNSArMjg5OSwxNyBAQCBzdGF0aWMg bGx2bTo6RnVuY3Rpb24gKmxHZW5YTWFza2VkSW50OEluc3QobGx2bTo6SW5zdHJ1Y3Rpb24gKmlu c3QsIGJvb2wgaXNTdG9yZQotIHN0YXRpYyBsbHZtOjpDYWxsSW5zdCAqbEdlblhTdG9yZUluc3Qo bGx2bTo6VmFsdWUgKnZhbCwgbGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6SW5zdHJ1Y3Rpb24gKmlu c3QpIHsKLSAgICAgQXNzZXJ0KGctPnRhcmdldC0+aXNHZW5YVGFyZ2V0KCkpOwotICAgICBBc3Nl cnQobGx2bTo6aXNhPGxsdm06OlZlY3RvclR5cGU+KHZhbC0+Z2V0VHlwZSgpKSk7Ci0tICAgIEFz c2VydChsbHZtOjppc1Bvd2VyT2YyXzMyKHZhbC0+Z2V0VHlwZSgpLT5nZXRWZWN0b3JOdW1FbGVt ZW50cygpKSk7Ci0tICAgIEFzc2VydCh2YWwtPmdldFR5cGUoKS0+Z2V0UHJpbWl0aXZlU2l6ZUlu Qml0cygpIC8gOCA8PSA4ICogT1dPUkQpOwotKwotKyAgICBsbHZtOjpWZWN0b3JUeXBlICp2YWxW ZWNUeXBlID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4odmFsLT5nZXRUeXBlKCkp OwotKyAgICBBc3NlcnQobGx2bTo6aXNQb3dlck9mMl8zMih2YWxWZWNUeXBlLT5nZXROdW1FbGVt ZW50cygpKSk7Ci0rICAgIEFzc2VydCh2YWxWZWNUeXBlLT5nZXRQcmltaXRpdmVTaXplSW5CaXRz KCkgLyA4IDw9IDggKiBPV09SRCk7Ci0gCi0gICAgIC8vIFRoZSBkYXRhIHdyaXRlIG9mIHN2bSBz dG9yZSBtdXN0IGhhdmUgYSBzaXplIHRoYXQgaXMgYSBwb3dlciBvZiB0d28gZnJvbSAxNiB0byAx MjgKLSAgICAgLy8gYnl0ZXMuIEhvd2V2ZXIgZm9yIGludDggdHlwZSBhbmQgc2ltZCB3aWR0aCA9 IDgsIHRoZSBkYXRhIHdyaXRlIHNpemUgaXMgOC4KLSAgICAgLy8gU28gd2UgdXNlIG1hc2tlZCBz dG9yZSBmdW5jdGlvbiBoZXJlIGluc3RlYWQgb2Ygc3ZtIHN0b3JlIHdoaWNoIHByb2Nlc3MgaW50 OCB0eXBlCi0gICAgIC8vIGNvcnJlY3RseS4KLS0gICAgaWYgKHZhbC0+Z2V0VHlwZSgpLT5nZXRQ cmltaXRpdmVTaXplSW5CaXRzKCkgLyA4IDwgMTYpIHsKLS0gICAgICAgIEFzc2VydCh2YWwtPmdl dFR5cGUoKS0+Z2V0U2NhbGFyVHlwZSgpID09IExMVk1UeXBlczo6SW50OFR5cGUpOwotKyAgICBp ZiAodmFsVmVjVHlwZS0+Z2V0UHJpbWl0aXZlU2l6ZUluQml0cygpIC8gOCA8IDE2KSB7Ci0rICAg ICAgICBBc3NlcnQodmFsVmVjVHlwZS0+Z2V0U2NhbGFyVHlwZSgpID09IExMVk1UeXBlczo6SW50 OFR5cGUpOwotICAgICAgICAgaWYgKGxsdm06OkZ1bmN0aW9uICptYXNrZWRGdW5jID0gbEdlblhN YXNrZWRJbnQ4SW5zdChpbnN0LCB0cnVlKSkKLSAgICAgICAgICAgICByZXR1cm4gbGx2bTo6ZHlu X2Nhc3Q8bGx2bTo6Q2FsbEluc3Q+KGxDYWxsSW5zdChtYXNrZWRGdW5jLCBwdHIsIHZhbCwgTExW TU1hc2tBbGxPbiwgIiIpKTsKLSAgICAgICAgIGVsc2UgewotQEAgLTI5MjMsMTUgKzI5MjUsMTcg QEAgc3RhdGljIGxsdm06OkNhbGxJbnN0ICpsR2VuWFN0b3JlSW5zdChsbHZtOjpWYWx1ZSAqdmFs LCBsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjoKLSAKLSBzdGF0aWMgbGx2bTo6Q2FsbEluc3QgKmxH ZW5YTG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VHlwZSAqcmV0VHlwZSwgbGx2bTo6 SW5zdHJ1Y3Rpb24gKmluc3QpIHsKLSAgICAgQXNzZXJ0KGxsdm06OmlzYTxsbHZtOjpWZWN0b3JU eXBlPihyZXRUeXBlKSk7Ci0tICAgIEFzc2VydChsbHZtOjppc1Bvd2VyT2YyXzMyKHJldFR5cGUt PmdldFZlY3Rvck51bUVsZW1lbnRzKCkpKTsKLS0gICAgQXNzZXJ0KHJldFR5cGUtPmdldFByaW1p dGl2ZVNpemVJbkJpdHMoKSk7Ci0tICAgIEFzc2VydChyZXRUeXBlLT5nZXRQcmltaXRpdmVTaXpl SW5CaXRzKCkgLyA4IDw9IDggKiBPV09SRCk7Ci0rCi0rICAgIGxsdm06OlZlY3RvclR5cGUgKnJl dFZlY1R5cGUgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPihyZXRUeXBlKTsKLSsg ICAgQXNzZXJ0KGxsdm06OmlzUG93ZXJPZjJfMzIocmV0VmVjVHlwZS0+Z2V0TnVtRWxlbWVudHMo KSkpOwotKyAgICBBc3NlcnQocmV0VmVjVHlwZS0+Z2V0UHJpbWl0aXZlU2l6ZUluQml0cygpKTsK LSsgICAgQXNzZXJ0KHJldFZlY1R5cGUtPmdldFByaW1pdGl2ZVNpemVJbkJpdHMoKSAvIDggPD0g OCAqIE9XT1JEKTsKLSAgICAgLy8gVGhlIGRhdGEgcmVhZCBvZiBzdm0gbG9hZCBtdXN0IGhhdmUg YSBzaXplIHRoYXQgaXMgYSBwb3dlciBvZiB0d28gZnJvbSAxNiB0byAxMjgKLSAgICAgLy8gYnl0 ZXMuIEhvd2V2ZXIgZm9yIGludDggdHlwZSBhbmQgc2ltZCB3aWR0aCA9IDgsIHRoZSBkYXRhIHJl YWQgc2l6ZSBpcyA4LgotICAgICAvLyBTbyB3ZSB1c2UgbWFza2VkIGxvYWQgZnVuY3Rpb24gaGVy ZSBpbnN0ZWFkIG9mIHN2bSBsb2FkIHdoaWNoIHByb2Nlc3MgaW50OCB0eXBlCi0gICAgIC8vIGNv cnJlY3RseS4KLS0gICAgaWYgKHJldFR5cGUtPmdldFByaW1pdGl2ZVNpemVJbkJpdHMoKSAvIDgg PCAxNikgewotLSAgICAgICAgQXNzZXJ0KHJldFR5cGUtPmdldFNjYWxhclR5cGUoKSA9PSBMTFZN VHlwZXM6OkludDhUeXBlKTsKLSsgICAgaWYgKHJldFZlY1R5cGUtPmdldFByaW1pdGl2ZVNpemVJ bkJpdHMoKSAvIDggPCAxNikgewotKyAgICAgICAgQXNzZXJ0KHJldFZlY1R5cGUtPmdldFNjYWxh clR5cGUoKSA9PSBMTFZNVHlwZXM6OkludDhUeXBlKTsKLSAgICAgICAgIGlmIChsbHZtOjpGdW5j dGlvbiAqbWFza2VkRnVuYyA9IGxHZW5YTWFza2VkSW50OEluc3QoaW5zdCwgZmFsc2UpKQotICAg ICAgICAgICAgIHJldHVybiBsbHZtOjpkeW5fY2FzdDxsbHZtOjpDYWxsSW5zdD4obENhbGxJbnN0 KG1hc2tlZEZ1bmMsIHB0ciwgTExWTU1hc2tBbGxPbiwgIiIpKTsKLSAgICAgICAgIGVsc2Ugewot QEAgLTU2MjIsMTUgKzU2MjYsMjQgQEAgc3RhdGljIGJvb2wgbFZlY3Rvcml6ZUdFUHMobGx2bTo6 VmFsdWUgKnB0ciwgc3RkOjp2ZWN0b3I8UHRyVXNlPiAmcHRyVXNlcywgc3RkOjoKLSAgICAgICAg IGxsdm06OlB0clRvSW50SW5zdCAqcHRyVG9JbnQgPQotICAgICAgICAgICAgIG5ldyBsbHZtOjpQ dHJUb0ludEluc3QocHRyLCBMTFZNVHlwZXM6OkludDY0VHlwZSwgInZlY3Rvcml6ZWRfcHRydG9p bnQiLCBpbnNlcnRCZWZvcmUpOwotICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmFkZHIgPSBs bHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlQWRkKHB0clRvSW50LCBvZmZzZXQsICJ2ZWN0b3Jp emVkX2FkZHJlc3MiLCBpbnNlcnRCZWZvcmUpOwotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJ U1BDX0xMVk1fMTFfMAotKyAgICAgICAgbGx2bTo6VHlwZSAqcmV0VHlwZSA9IGxsdm06OkZpeGVk VmVjdG9yVHlwZTo6Z2V0KHNjYWxhcl90eXBlLCByZXFTaXplIC8gdF9zaXplKTsKLSsjZWxzZQot ICAgICAgICAgbGx2bTo6VHlwZSAqcmV0VHlwZSA9IGxsdm06OlZlY3RvclR5cGU6OmdldChzY2Fs YXJfdHlwZSwgcmVxU2l6ZSAvIHRfc2l6ZSk7Ci0rI2VuZGlmCi0gICAgICAgICBsbHZtOjpGdW5j dGlvbiAqZm4gPSBsbHZtOjpHZW5YSW50cmluc2ljOjpnZXRHZW5YRGVjbGFyYXRpb24oCi0gICAg ICAgICAgICAgbS0+bW9kdWxlLCBsbHZtOjpHZW5YSW50cmluc2ljOjpnZW54X3N2bV9ibG9ja19s ZF91bmFsaWduZWQsIHtyZXRUeXBlLCBhZGRyLT5nZXRUeXBlKCl9KTsKLSAgICAgICAgIGxsdm06 Okluc3RydWN0aW9uICpsZCA9IGxsdm06OkNhbGxJbnN0OjpDcmVhdGUoZm4sIHthZGRyfSwgInZl Y3Rvcml6ZWRfbGQiLCBpbnNlcnRCZWZvcmUpOwotIAotICAgICAgICAgaWYgKGxvYWRpbmdQdHIp IHsKLSAgICAgICAgICAgICAvLyBDYXN0IGludCB0byBwdHIgdmlhIGludHRvcHRyCi0rI2lmIElT UENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0rICAgICAgICAgICAgbGQgPSBuZXcg bGx2bTo6SW50VG9QdHJJbnN0KGxkLCBsbHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldChvcmlnaW5h bFR5cGUsIHJlcVNpemUgLyB0X3NpemUpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAidmVjdG9yaXplZF9pbnR0b3B0ciIsIGluc2VydEJlZm9yZSk7Ci0rI2Vsc2UK LSAgICAgICAgICAgICBsZCA9IG5ldyBsbHZtOjpJbnRUb1B0ckluc3QobGQsIGxsdm06OlZlY3Rv clR5cGU6OmdldChvcmlnaW5hbFR5cGUsIHJlcVNpemUgLyB0X3NpemUpLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmVjdG9yaXplZF9pbnR0b3B0ciIsIGluc2Vy dEJlZm9yZSk7Ci0rI2VuZGlmCi0gICAgICAgICB9Ci0gCi0gICAgICAgICAvLyBTY2FsYXIgZXh0 cmFjdHMgZm9yIGFsbCBsb2FkZWQgZWxlbWVudHMKLUBAIC02MTYwLDE5ICs2MTczLDM0IEBAIGJv b2wgUmVwbGFjZUxMVk1JbnRyaW5zaWNzOjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9j ayAmYmIpIHsKLSAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gJipJOwotICAgICAg ICAgaWYgKGxsdm06OkNhbGxJbnN0ICpjaSA9IGxsdm06OmR5bl9jYXN0PGxsdm06OkNhbGxJbnN0 PihpbnN0KSkgewotICAgICAgICAgICAgIGxsdm06OkZ1bmN0aW9uICpmdW5jID0gY2ktPmdldENh bGxlZEZ1bmN0aW9uKCk7Ci0tICAgICAgICAgICAgaWYgKGZ1bmMgJiYgZnVuYy0+Z2V0TmFtZSgp ID09ICJsbHZtLnRyYXAiKSB7Ci0rICAgICAgICAgICAgaWYgKGZ1bmMgJiYgZnVuYy0+Z2V0TmFt ZSgpLmVxdWFscygibGx2bS50cmFwIikpIHsKLSAgICAgICAgICAgICAgICAgbGx2bTo6VHlwZSAq YXJnVHlwZXNbXSA9IHtMTFZNVHlwZXM6OkludDFWZWN0b3JUeXBlLCBMTFZNVHlwZXM6OkludDE2 VmVjdG9yVHlwZX07Ci0gICAgICAgICAgICAgICAgIC8vIERlc2NyaXB0aW9uIG9mIHBhcmFtZXRl cnMgZm9yIGdlbnhfcmF3X3NlbmRfbm9yZXN1bHQgY2FuIGJlIGZvdW5kIGluIHRhcmdldC1nZW54 LmxsCi0gICAgICAgICAgICAgICAgIGF1dG8gRm4gPSArbGx2bTo6R2VuWEludHJpbnNpYzo6Z2V0 R2VuWERlY2xhcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgbS0+bW9kdWxlLCBsbHZtOjpH ZW5YSW50cmluc2ljOjpnZW54X3Jhd19zZW5kX25vcmVzdWx0LCBhcmdUeXBlcyk7Ci0gICAgICAg ICAgICAgICAgIGxsdm06OlNtYWxsVmVjdG9yPGxsdm06OlZhbHVlICosIDg+IEFyZ3M7Ci0gICAg ICAgICAgICAgICAgIEFyZ3MucHVzaF9iYWNrKGxsdm06OkNvbnN0YW50SW50OjpnZXQoTExWTVR5 cGVzOjpJbnQzMlR5cGUsIDApKTsKLS0gICAgICAgICAgICAgICAgQXJncy5wdXNoX2JhY2sobGx2 bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yV2lk dGgoKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50SW50OjpnZXRUcnVlKCpnLT5jdHgpKSk7Ci0rICAg ICAgICAgICAgICAgIEFyZ3MucHVzaF9iYWNrKGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxh dCgKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMAotKyAgICAgICAgICAg ICAgICAgICAgZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JXaWR0aCgpLAotKyNlbGlmIElTUENf TExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMV8wCi0rICAgICAgICAgICAgICAgICAgICB7c3Rh dGljX2Nhc3Q8dW5zaWduZWQgaW50PihnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvcldpZHRoKCkp LCBmYWxzZX0sCi0rI2Vsc2UgLy8gTExWTSAxMi4wKwotKyAgICAgICAgICAgICAgICAgICAgbGx2 bTo6RWxlbWVudENvdW50OjpnZXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihnLT50YXJnZXQt PmdldE5hdGl2ZVZlY3RvcldpZHRoKCkpLCBmYWxzZSksCi0rI2VuZGlmCi0rICAgICAgICAgICAg ICAgICAgICBsbHZtOjpDb25zdGFudEludDo6Z2V0VHJ1ZSgqZy0+Y3R4KSkpOwotKwotICAgICAg ICAgICAgICAgICBBcmdzLnB1c2hfYmFjayhsbHZtOjpDb25zdGFudEludDo6Z2V0KExMVk1UeXBl czo6SW50MzJUeXBlLCAzOSkpOwotICAgICAgICAgICAgICAgICBBcmdzLnB1c2hfYmFjayhsbHZt OjpDb25zdGFudEludDo6Z2V0KExMVk1UeXBlczo6SW50MzJUeXBlLCAzMzU1NDQ0OCkpOwotICAg ICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqemVyb01hc2sgPSBsbHZtOjpDb25zdGFudFZlY3Rv cjo6Z2V0U3BsYXQoCi0tICAgICAgICAgICAgICAgICAgICBnLT50YXJnZXQtPmdldE5hdGl2ZVZl Y3RvcldpZHRoKCksIGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUobGx2bTo6VHlwZTo6Z2V0 SW50MTZUeSgqZy0+Y3R4KSkpOwotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8x MV8wCi0rICAgICAgICAgICAgICAgICAgICBnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvcldpZHRo KCksCi0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzExXzAKLSsgICAgICAg ICAgICAgICAgICAgIHtzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGctPnRhcmdldC0+Z2V0TmF0 aXZlVmVjdG9yV2lkdGgoKSksIGZhbHNlfSwKLSsjZWxzZSAvLyBMTFZNIDEyLjArCi0rICAgICAg ICAgICAgICAgICAgICBsbHZtOjpFbGVtZW50Q291bnQ6OmdldChzdGF0aWNfY2FzdDx1bnNpZ25l ZCBpbnQ+KGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yV2lkdGgoKSksIGZhbHNlKSwKLSsjZW5k aWYKLSsgICAgICAgICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUobGx2 bTo6VHlwZTo6Z2V0SW50MTZUeSgqZy0+Y3R4KSkpOwotICAgICAgICAgICAgICAgICBBcmdzLnB1 c2hfYmFjayh6ZXJvTWFzayk7Ci0gCi0gICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9u ICpuZXdJbnN0ID0gbGx2bTo6Q2FsbEluc3Q6OkNyZWF0ZShGbiwgQXJncywgY2ktPmdldE5hbWUo KSk7Ci1AQCAtNjE4MSw3ICs2MjA5LDcgQEAgYm9vbCBSZXBsYWNlTExWTUludHJpbnNpY3M6OnJ1 bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotICAgICAgICAgICAgICAgICAg ICAgbW9kaWZpZWRBbnkgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgZ290byByZXN0YXJ0 OwotICAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgfSBlbHNlIGlmIChmdW5jICYmIGZ1 bmMtPmdldE5hbWUoKSA9PSAibGx2bS5hc3N1bWUiKSB7Ci0rICAgICAgICAgICAgfSBlbHNlIGlm IChmdW5jICYmIGZ1bmMtPmdldE5hbWUoKS5lcXVhbHMoImxsdm0uYXNzdW1lIikpIHsKLSAgICAg ICAgICAgICAgICAgY2ktPmVyYXNlRnJvbVBhcmVudCgpOwotICAgICAgICAgICAgICAgICBtb2Rp ZmllZEFueSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgIGdvdG8gcmVzdGFydDsKLUBAIC02MzM1 LDcgKzYzNjMsNyBAQCBib29sIENoZWNrVW5zdXBwb3J0ZWRJbnN0czo6cnVuT25CYXNpY0Jsb2Nr KGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdW5zdXBwb3J0ZWRGdW5jcy5zaXplKCk7IGkr KykgewotICAgICAgICAgICAgICAgICBzdGQ6OnNtYXRjaCBtYXRjaDsKLS0gICAgICAgICAgICAg ICAgc3RkOjpzdHJpbmcgZnVuY05hbWUgPSBmdW5jLT5nZXROYW1lKCk7Ci0rICAgICAgICAgICAg ICAgIHN0ZDo6c3RyaW5nIGZ1bmNOYW1lID0gZnVuYy0+Z2V0TmFtZSgpLnN0cigpOwotICAgICAg ICAgICAgICAgICBpZiAoc3RkOjpyZWdleF9tYXRjaChmdW5jTmFtZSwgbWF0Y2gsIHVuc3VwcG9y dGVkRnVuY3NbaV0pKSB7Ci0gICAgICAgICAgICAgICAgICAgICAvLyBXZSBmb3VuZCB1bnN1cHBv cnRlZCBmdW5jdGlvbi4gR2VuZXJhdGUgZXJyb3IgYW5kIHN0b3AgY29tcGlsYXRpb24uCi0gICAg ICAgICAgICAgICAgICAgICBTb3VyY2VQb3MgcG9zOwotQEAgLTY0MTgsMTIgKzY0NDYsMTQgQEAg Ym9vbCBNYW5nbGVPcGVuQ0xCdWlsdGluczo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxv Y2sgJmJiKSB7Ci0gICAgICAgICAgICAgaWYgKGZ1bmMtPmdldE5hbWUoKS5zdGFydHN3aXRoKCJf X3NwaXJ2X29jbCIpKSB7Ci0gICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG1hbmdsZWROYW1l OwotICAgICAgICAgICAgICAgICBsbHZtOjpUeXBlICpyZXRUeXBlID0gZnVuYy0+Z2V0UmV0dXJu VHlwZSgpOwotLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBmdW5jTmFtZSA9IGZ1bmMtPmdl dE5hbWUoKTsKLSsgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZnVuY05hbWUgPSBmdW5jLT5n ZXROYW1lKCkuc3RyKCk7Ci0gICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGxsdm06OlR5cGUg Kj4gQXJnVHk7Ci0gICAgICAgICAgICAgICAgIC8vIHNwaXJ2IE9wZW5DTCBidWlsdGlucyBhcmUg dXNlZCBmb3IgZG91YmxlIHR5cGVzIG9ubHkKLS0gICAgICAgICAgICAgICAgQXNzZXJ0KHJldFR5 cGUtPmlzVmVjdG9yVHkoKSAmJiByZXRUeXBlLT5nZXRWZWN0b3JFbGVtZW50VHlwZSgpLT5pc0Rv dWJsZVR5KCkgfHwKLSsgICAgICAgICAgICAgICAgQXNzZXJ0KHJldFR5cGUtPmlzVmVjdG9yVHko KSAmJgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OmR5bl9jYXN0PGxsdm06OlZl Y3RvclR5cGU+KHJldFR5cGUpLT5nZXRFbGVtZW50VHlwZSgpLT5pc0RvdWJsZVR5KCkgfHwKLSAg ICAgICAgICAgICAgICAgICAgICAgIHJldFR5cGUtPmlzU2luZ2xlVmFsdWVUeXBlKCkgJiYgcmV0 VHlwZS0+aXNEb3VibGVUeSgpKTsKLS0gICAgICAgICAgICAgICAgaWYgKHJldFR5cGUtPmlzVmVj dG9yVHkoKSAmJiByZXRUeXBlLT5nZXRWZWN0b3JFbGVtZW50VHlwZSgpLT5pc0RvdWJsZVR5KCkp IHsKLSsgICAgICAgICAgICAgICAgaWYgKHJldFR5cGUtPmlzVmVjdG9yVHkoKSAmJgotKyAgICAg ICAgICAgICAgICAgICAgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4ocmV0VHlwZSkt PmdldEVsZW1lbnRUeXBlKCktPmlzRG91YmxlVHkoKSkgewotICAgICAgICAgICAgICAgICAgICAg QXJnVHkucHVzaF9iYWNrKExMVk1UeXBlczo6RG91YmxlVmVjdG9yVHlwZSk7Ci0gICAgICAgICAg ICAgICAgICAgICAvLyBfRHZXSURUSCBzdWZmaXggaXMgdXNlZCBpbiB0YXJnZXQgZmlsZSB0byBk aWZmZXJlbnRpYXRlIHNjYWxhcgotICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHZlY3RvciB2 ZXJzaW9ucyBvZiBpbnRyaW5zaWNzLiBIZXJlIHdlIHJlbW92ZSB0aGlzCi1AQCAtNjUxMSw4ICs2 NTQxLDE1IEBAIGxsdm06OlZhbHVlICpGaXhBZGRyZXNzU3BhY2U6OmNhbGN1bGF0ZUdhdGhlclNj YXR0ZXJBZGRyZXNzKGxsdm06OlZhbHVlICpQdHIsIGxsCi0gCi0gICAgIC8vIENhc3Qgb2Zmc2V0 cyB0byBpbnQ2NAotICAgICBPZmZzZXRzID0gbmV3IGxsdm06OlpFeHRJbnN0KAotKyNpZiBJU1BD X0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotKyAgICAgICAgT2Zmc2V0cywKLSsgICAg ICAgIGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KExMVk1UeXBlczo6SW50NjRUeXBlLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVj dG9yVHlwZT4oT2Zmc2V0cy0+Z2V0VHlwZSgpKS0+Z2V0TnVtRWxlbWVudHMoKSksCi0rICAgICAg ICAic3ZtX29mZnNldF96ZXh0IiwgSW5zZXJ0QmVmb3JlKTsKLSsjZWxzZQotICAgICAgICAgT2Zm c2V0cywgbGx2bTo6VmVjdG9yVHlwZTo6Z2V0KExMVk1UeXBlczo6SW50NjRUeXBlLCBPZmZzZXRz LT5nZXRUeXBlKCktPmdldFZlY3Rvck51bUVsZW1lbnRzKCkpLAotICAgICAgICAgInN2bV9vZmZz ZXRfemV4dCIsIEluc2VydEJlZm9yZSk7Ci0rI2VuZGlmCi0gCi0gICAgIGlmICghbGx2bTo6aXNh PGxsdm06OkNvbnN0YW50UG9pbnRlck51bGw+KFB0cikpIHsKLSAgICAgICAgIC8vIENhc3QgcHRy IHRvIGludDY0Ci1AQCAtNjUyMCwxMyArNjU1NywzMSBAQCBsbHZtOjpWYWx1ZSAqRml4QWRkcmVz c1NwYWNlOjpjYWxjdWxhdGVHYXRoZXJTY2F0dGVyQWRkcmVzcyhsbHZtOjpWYWx1ZSAqUHRyLCBs bAotIAotICAgICAgICAgLy8gVmVjdG9yaXplIHB0cgotICAgICAgICAgbGx2bTo6VmFsdWUgKnVu ZGVmSW5zZXJ0VmFsdWUgPQotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFf MAotKyAgICAgICAgICAgIGxsdm06OlVuZGVmVmFsdWU6OmdldChsbHZtOjpGaXhlZFZlY3RvclR5 cGU6OmdldCgKLSsgICAgICAgICAgICAgICAgTExWTVR5cGVzOjpJbnQ2NFR5cGUsIGxsdm06OmR5 bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSkp OwotKyNlbHNlCi0gICAgICAgICAgICAgbGx2bTo6VW5kZWZWYWx1ZTo6Z2V0KGxsdm06OlZlY3Rv clR5cGU6OmdldChMTFZNVHlwZXM6OkludDY0VHlwZSwgYWRkcmVzc1R5cGUtPmdldFZlY3Rvck51 bUVsZW1lbnRzKCkpKTsKLSsjZW5kaWYKLSAgICAgICAgIGFkZHJlc3MgPSBsbHZtOjpJbnNlcnRF bGVtZW50SW5zdDo6Q3JlYXRlKHVuZGVmSW5zZXJ0VmFsdWUsIGFkZHJlc3MsIExMVk1JbnQzMigw KSwgInN2bV9wdHJfaWVpIiwgSW5zZXJ0QmVmb3JlKTsKLSAgICAgICAgIGxsdm06OkNvbnN0YW50 ICp6ZXJvVmVjID0gbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KAotKyNpZiBJU1BDX0xM Vk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0gICAgICAgICAgICAgYWRkcmVzc1R5cGUtPmdl dFZlY3Rvck51bUVsZW1lbnRzKCksCi0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19M TFZNXzExXzAKLSsgICAgICAgICAgICB7bGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4o YWRkcmVzc1R5cGUpLT5nZXROdW1FbGVtZW50cygpLCBmYWxzZX0sCi0rI2Vsc2UKLSsgICAgICAg IGxsdm06OkVsZW1lbnRDb3VudDo6Z2V0KAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0b3JUeXBlPihhZGRyZXNzVHlwZS0+Z2V0 TnVtRWxlbWVudHMoKSwgZmFsc2UpLAotKyNlbmRpZgotICAgICAgICAgICAgIGxsdm06OkNvbnN0 YW50OjpnZXROdWxsVmFsdWUobGx2bTo6VHlwZTo6Z2V0SW50MzJUeShJbnNlcnRCZWZvcmUtPmdl dENvbnRleHQoKSkpKTsKLSsKLSAgICAgICAgIGxsdm06OlZhbHVlICp1bmRlZlNodWZmbGVWYWx1 ZSA9Ci0rI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0rICAgICAgICAg ICAgbGx2bTo6VW5kZWZWYWx1ZTo6Z2V0KGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KAotKyAg ICAgICAgICAgICAgICBMTFZNVHlwZXM6OkludDY0VHlwZSwgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6 VmVjdG9yVHlwZT4oYWRkcmVzc1R5cGUpLT5nZXROdW1FbGVtZW50cygpKSk7Ci0rI2Vsc2UKLSAg ICAgICAgICAgICBsbHZtOjpVbmRlZlZhbHVlOjpnZXQobGx2bTo6VmVjdG9yVHlwZTo6Z2V0KExM Vk1UeXBlczo6SW50NjRUeXBlLCBhZGRyZXNzVHlwZS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSkp OwotKyNlbmRpZgotICAgICAgICAgYWRkcmVzcyA9IG5ldyBsbHZtOjpTaHVmZmxlVmVjdG9ySW5z dChhZGRyZXNzLCB1bmRlZlNodWZmbGVWYWx1ZSwgemVyb1ZlYywgInN2bV9wdHJfc3ZpIiwgSW5z ZXJ0QmVmb3JlKTsKLSAKLSAgICAgICAgIC8vIENhbGN1bGF0ZSBhZGRyZXNzCi1AQCAtNjU1Myw5 ICs2NjA4LDEyIEBAIGxsdm06Okluc3RydWN0aW9uICpGaXhBZGRyZXNzU3BhY2U6OnByb2Nlc3NW ZWN0b3JMb2FkKGxsdm06OkxvYWRJbnN0ICpMSSkgewotICAgICBpZiAocmV0VHlwZS0+Z2V0U2Nh bGFyVHlwZSgpLT5pc1BvaW50ZXJUeSgpKSB7Ci0gICAgICAgICBpc1B0ckxvYWQgPSB0cnVlOwot ICAgICAgICAgYXV0byBzY2FsYXJUeXBlID0gZy0+dGFyZ2V0LT5pczMyQml0KCkgPyBMTFZNVHlw ZXM6OkludDMyVHlwZSA6IExMVk1UeXBlczo6SW50NjRUeXBlOwotKyNpZiBJU1BDX0xMVk1fVkVS U0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotKyAgICAgICAgcmV0VHlwZSA9IGxsdm06OkZpeGVkVmVj dG9yVHlwZTo6Z2V0KHNjYWxhclR5cGUsIGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+ KHJldFR5cGUpLT5nZXROdW1FbGVtZW50cygpKTsKLSsjZWxzZQotICAgICAgICAgcmV0VHlwZSA9 IGxsdm06OlZlY3RvclR5cGU6OmdldChzY2FsYXJUeXBlLCByZXRUeXBlLT5nZXRWZWN0b3JOdW1F bGVtZW50cygpKTsKLSsjZW5kaWYKLSAgICAgfQotLQotICAgICBsbHZtOjpJbnN0cnVjdGlvbiAq cmVzID0gbEdlblhMb2FkSW5zdChwdHIsIHJldFR5cGUsIGxsdm06OmR5bl9jYXN0PGxsdm06Oklu c3RydWN0aW9uPihMSSkpOwotICAgICBBc3NlcnQocmVzKTsKLSAKLUBAIC02NTgwLDExICs2NjM4 LDE2IEBAIGxsdm06Okluc3RydWN0aW9uICpGaXhBZGRyZXNzU3BhY2U6OnByb2Nlc3NTVk1WZWN0 b3JMb2FkKGxsdm06Okluc3RydWN0aW9uICpDSSkKLSAgICAgcHRyID0gbmV3IGxsdm06OkludFRv UHRySW5zdChwdHIsIGxsdm06OlBvaW50ZXJUeXBlOjpnZXQocmV0VHlwZSwgMCksIENJLT5nZXRO YW1lKCkgKyAiX2ludHRvcHRyIiwgQ0kpOwotICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqbG9hZElu c3QgPSBOVUxMOwotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotLSAg ICBsb2FkSW5zdCA9IG5ldyBsbHZtOjpMb2FkSW5zdChsbHZtOjpkeW5fY2FzdDxsbHZtOjpQb2lu dGVyVHlwZT4ocHRyLT5nZXRUeXBlKCkpLT5nZXRQb2ludGVyRWxlbWVudFR5cGUoKSwgbG9hZElu c3QsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENJLT5nZXROYW1lKCksIChs bHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwpOwotKyAgICBsb2FkSW5zdCA9IG5ldyBsbHZtOjpMb2Fk SW5zdChsbHZtOjpkeW5fY2FzdDxsbHZtOjpQb2ludGVyVHlwZT4ocHRyLT5nZXRUeXBlKCkpLT5n ZXRQb2ludGVyRWxlbWVudFR5cGUoKSwgcHRyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBDSS0+Z2V0TmFtZSgpLCBmYWxzZSAvKiBub3Qgdm9sYXRpbGUgKi8sCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06Ok1heWJlQWxpZ24oZy0+dGFyZ2V0LT5n ZXROYXRpdmVWZWN0b3JBbGlnbm1lbnQoKSkudmFsdWVPck9uZSgpLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxMKTsKLSAjZWxzZQot LSAgICBsb2FkSW5zdCA9IG5ldyBsbHZtOjpMb2FkSW5zdChwdHIsIENJLT5nZXROYW1lKCksIChs bHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwpOwotKyAgICBsb2FkSW5zdCA9IG5ldyBsbHZtOjpMb2Fk SW5zdChwdHIsIENJLT5nZXROYW1lKCksIGZhbHNlLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsbHZtOjpNYXliZUFsaWduKGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxp Z25tZW50KCkpLnZhbHVlT3JPbmUoKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGxsdm06Okluc3RydWN0aW9uICopTlVMTCk7Ci0gI2VuZGlmCi0rCi0gICAgIEFzc2VydChs b2FkSW5zdCk7Ci0gICAgIHJldHVybiBsb2FkSW5zdDsKLSB9Ci1AQCAtNjYwNiw3ICs2NjY5LDEx IEBAIGxsdm06Okluc3RydWN0aW9uICpGaXhBZGRyZXNzU3BhY2U6OnByb2Nlc3NWZWN0b3JTdG9y ZShsbHZtOjpTdG9yZUluc3QgKlNJKSB7Ci0gICAgIC8vIE5vdGU6IGl0IGRvZXNuJ3QgbG9vayBs aWtlIGEgbm9ybWFsIGNhc2UgZm9yIEdlblggdGFyZ2V0Ci0gICAgIGlmICh2YWxUeXBlLT5nZXRT Y2FsYXJUeXBlKCktPmlzUG9pbnRlclR5KCkpIHsKLSAgICAgICAgIGF1dG8gc2NhbGFyVHlwZSA9 IGctPnRhcmdldC0+aXMzMkJpdCgpID8gTExWTVR5cGVzOjpJbnQzMlR5cGUgOiBMTFZNVHlwZXM6 OkludDY0VHlwZTsKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLSsg ICAgICAgIHZhbFR5cGUgPSBsbHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldChzY2FsYXJUeXBlLCBs bHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPih2YWxUeXBlKS0+Z2V0TnVtRWxlbWVudHMo KSk7Ci0rI2Vsc2UKLSAgICAgICAgIHZhbFR5cGUgPSBsbHZtOjpWZWN0b3JUeXBlOjpnZXQoc2Nh bGFyVHlwZSwgdmFsVHlwZS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSk7Ci0rI2VuZGlmCi0gICAg ICAgICB2YWwgPSBuZXcgbGx2bTo6UHRyVG9JbnRJbnN0KHZhbCwgdmFsVHlwZSwgInN2bV9zdF92 YWxfcHRydG9pbnQiLCBTSSk7Ci0gICAgIH0KLSAKLUBAIC02NjMxLDEyICs2Njk4LDggQEAgbGx2 bTo6SW5zdHJ1Y3Rpb24gKkZpeEFkZHJlc3NTcGFjZTo6cHJvY2Vzc1NWTVZlY3RvclN0b3JlKGxs dm06Okluc3RydWN0aW9uICpDSSkKLSAgICAgcHRyID0gbmV3IGxsdm06OkludFRvUHRySW5zdChw dHIsIGxsdm06OlBvaW50ZXJUeXBlOjpnZXQodmFsVHlwZSwgMCksIENJLT5nZXROYW1lKCkgKyAi X2ludHRvcHRyIiwgQ0kpOwotIAotICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqc3RvcmVJbnN0ID0g TlVMTDsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLS0gICAgbG9h ZEluc3QgPSBuZXcgbGx2bTo6U3RvcmVJbnN0KHZhbCwgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6UG9p bnRlclR5cGU+KHB0ci0+Z2V0VHlwZSgpKS0+Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCksCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUluc3QsIENJLT5nZXROYW1lKCks IChsbHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwpOwotLSNlbHNlCi0tICAgIHN0b3JlSW5zdCA9IG5l dyBsbHZtOjpTdG9yZUluc3QodmFsLCBwdHIsIChsbHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwpOwot LSNlbmRpZgotKyAgICBzdG9yZUluc3QgPSBuZXcgbGx2bTo6U3RvcmVJbnN0KHZhbCwgcHRyLCAo bGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxMLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxsdm06Ok1heWJlQWxpZ24oZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1l bnQoKSkudmFsdWVPck9uZSgpKTsKLSAgICAgQXNzZXJ0KHN0b3JlSW5zdCk7Ci0gICAgIHJldHVy biBzdG9yZUluc3Q7Ci0gfQotQEAgLTY2NDUsMTUgKzY3MDgsMTggQEAgbGx2bTo6SW5zdHJ1Y3Rp b24gKkZpeEFkZHJlc3NTcGFjZTo6Y3JlYXRlSW50OFdyUmVnaW9uKGxsdm06OlZhbHVlICpWYWws IGxsdm06OlYKLSAgICAgaW50IHdpZHRoID0gZy0+dGFyZ2V0LT5nZXRWZWN0b3JXaWR0aCgpOwot IAotICAgICBsbHZtOjpWYWx1ZSAqQXJnc1s4XTsKLS0KLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04g Pj0gSVNQQ19MTFZNXzExXzAKLSsgICAgQXJnc1swXSA9IGxsdm06OlVuZGVmVmFsdWU6OmdldChs bHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldChMTFZNVHlwZXM6OkludDhUeXBlLCB3aWR0aCAqIDQp KTsgLy8gb2xkIHZhbHVlCi0rI2Vsc2UKLSAgICAgQXJnc1swXSA9IGxsdm06OlVuZGVmVmFsdWU6 OmdldChsbHZtOjpWZWN0b3JUeXBlOjpnZXQoTExWTVR5cGVzOjpJbnQ4VHlwZSwgd2lkdGggKiA0 KSk7IC8vIG9sZCB2YWx1ZQotLSAgICBBcmdzWzFdID0gVmFsOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g dmFsdWUgdG8gc3RvcmUKLS0gICAgQXJnc1syXSA9IGxsdm06OkNvbnN0YW50SW50OjpnZXQoTExW TVR5cGVzOjpJbnQzMlR5cGUsIDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZz dHJpZGUKLS0gICAgQXJnc1szXSA9IGxsdm06OkNvbnN0YW50SW50OjpnZXQoTExWTVR5cGVzOjpJ bnQzMlR5cGUsIHdpZHRoKTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpZHRoCi0tICAg IEFyZ3NbNF0gPSBsbHZtOjpDb25zdGFudEludDo6Z2V0KExMVk1UeXBlczo6SW50MzJUeXBlLCA0 KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJpZGUKLS0gICAgQXJnc1s1XSA9 IGxsdm06OkNvbnN0YW50SW50OjpnZXQoTExWTVR5cGVzOjpJbnQxNlR5cGUsIDApOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8vIG9mZnNldHMKLS0gICAgQXJnc1s2XSA9IGxsdm06OkNv bnN0YW50SW50OjpnZXQoTExWTVR5cGVzOjpJbnQzMlR5cGUsIDApOyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8vIHBhcmVudCB3aWR0aCAoaWdub3JlZCkKLS0gICAgQXJnc1s3XSA9IE1h c2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8vIG1hc2sKLSsjZW5kaWYKLSsgICAgQXJnc1sxXSA9IFZhbDsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUg dG8gc3RvcmUKLSsgICAgQXJnc1syXSA9IGxsdm06OkNvbnN0YW50SW50OjpnZXQoTExWTVR5cGVz OjpJbnQzMlR5cGUsIDApOyAgICAgLy8gdnN0cmlkZQotKyAgICBBcmdzWzNdID0gbGx2bTo6Q29u c3RhbnRJbnQ6OmdldChMTFZNVHlwZXM6OkludDMyVHlwZSwgd2lkdGgpOyAvLyB3aWR0aAotKyAg ICBBcmdzWzRdID0gbGx2bTo6Q29uc3RhbnRJbnQ6OmdldChMTFZNVHlwZXM6OkludDMyVHlwZSwg NCk7ICAgICAvLyBzdHJpZGUKLSsgICAgQXJnc1s1XSA9IGxsdm06OkNvbnN0YW50SW50OjpnZXQo TExWTVR5cGVzOjpJbnQxNlR5cGUsIDApOyAgICAgLy8gb2Zmc2V0cwotKyAgICBBcmdzWzZdID0g bGx2bTo6Q29uc3RhbnRJbnQ6OmdldChMTFZNVHlwZXM6OkludDMyVHlwZSwgMCk7ICAgICAvLyBw YXJlbnQgd2lkdGggKGlnbm9yZWQpCi0rICAgIEFyZ3NbN10gPSBNYXNrOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hc2sKLSAKLSAgICAgbGx2bTo6 VHlwZSAqVHlzWzRdOwotIAotQEAgLTY3MDgsNyArNjc3NCwxMiBAQCBsbHZtOjpJbnN0cnVjdGlv biAqRml4QWRkcmVzc1NwYWNlOjpwcm9jZXNzR2F0aGVyU2NhdHRlclByaXZhdGUobGx2bTo6Q2Fs bEluc3QgKgotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gCi0gICAgIGxsdm06OlZhbHVlICphZGRy ZXNzID0gY2FsY3VsYXRlR2F0aGVyU2NhdHRlckFkZHJlc3MocHRyLCBvZmZzZXRzLCBDSSk7Ci0r I2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0rICAgIGxsdm06OlR5cGUg Kmk4VmVjVHlwZSA9IGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KExMVk1UeXBlczo6SW50OFR5 cGUsIHdpZHRoICogNCk7Ci0rI2Vsc2UKLSAgICAgbGx2bTo6VHlwZSAqaThWZWNUeXBlID0gbGx2 bTo6VmVjdG9yVHlwZTo6Z2V0KExMVk1UeXBlczo6SW50OFR5cGUsIHdpZHRoICogNCk7Ci0rI2Vu ZGlmCi0rCi0gICAgIGJvb2wgaXNJbnQ4ID0gKHZhbHVlLT5nZXRUeXBlKCktPmdldFNjYWxhclR5 cGUoKSA9PSBMTFZNVHlwZXM6OkludDhUeXBlKTsKLSAKLSAgICAgQXNzZXJ0KGFkZHJlc3MgJiYg IkJhZCBnYXRoZXIvc2NhdHRlciBhZGRyZXNzISIpOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pc3Bj L3BhdGNoZXMvbGx2bTEyLTAwNi5wYXRjaCBiL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0w MDYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4MjllYTQ4MzkxZS4uMDAw MDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDYucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwxMjYgKzAsMCBAQAotRnJvbSBiYjNmNDkzZDFmYmQ0NWM3OWUxZDlk ZWU2N2EwNDMwYmEzMTNlYWFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQXJpbmEg TmVzaGx5YWV2YSA8YXJpbmEubmVzaGx5YWV2YUBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDE5IEph biAyMDIxIDExOjA3OjMzIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeGVkIGlmZGVmcyBmb3Ig TExWTV8xMQotCi0tLS0KLSBzcmMvY3R4LmNwcCB8ICA2ICsrKy0tLQotIHNyYy9vcHQuY3BwIHwg MTggKysrKysrKysrLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCsp LCAxMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jdHguY3BwIGIvc3JjL2N0eC5j cHAKLWluZGV4IDJhNzJlNjgzNy4uNTI3YTAyZjMwIDEwMDY0NAotLS0tIGEvc3JjL2N0eC5jcHAK LSsrKyBiL3NyYy9jdHguY3BwCi1AQCAtMTY5MSw3ICsxNjkxLDcgQEAgbGx2bTo6VmFsdWUgKkZ1 bmN0aW9uRW1pdENvbnRleHQ6OlNtZWFyVW5pZm9ybShsbHZtOjpWYWx1ZSAqdmFsdWUsIGNvbnN0 IGxsdm06OlQKLSAgICAgaWYgKGxsdm06OkNvbnN0YW50ICpjb25zdF92YWwgPSBsbHZtOjpkeW5f Y2FzdDxsbHZtOjpDb25zdGFudD4odmFsdWUpKSB7Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwg SVNQQ19MTFZNXzExXzAKLSAgICAgICAgIHJldCA9IGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRT cGxhdChnLT50YXJnZXQtPmdldFZlY3RvcldpZHRoKCksIGNvbnN0X3ZhbCk7Ci0tI2VsaWYgSVNQ Q19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzExXzAKLSsjZWxpZiBJU1BDX0xMVk1fVkVSU0lP TiA8IElTUENfTExWTV8xMl8wCi0gICAgICAgICByZXQgPQotICAgICAgICAgICAgIGxsdm06OkNv bnN0YW50VmVjdG9yOjpnZXRTcGxhdCh7c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihnLT50YXJn ZXQtPmdldFZlY3RvcldpZHRoKCkpLCBmYWxzZX0sIGNvbnN0X3ZhbCk7Ci0gI2Vsc2UgLy8gTExW TSAxMi4wKwotQEAgLTMxNDgsNyArMzE0OCw3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRD b250ZXh0OjpCcm9hZGNhc3RWYWx1ZShsbHZtOjpWYWx1ZSAqdiwgbGx2bTo6VHlwZSAqdmVjCi0g I2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAgbGx2bTo6Q29uc3Rh bnQgKnplcm9WZWMgPSBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoCi0gICAgICAgICB2 ZWNUeXBlLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpLCBsbHZtOjpDb25zdGFudDo6Z2V0TnVsbFZh bHVlKGxsdm06OlR5cGU6OmdldEludDMyVHkoKmctPmN0eCkpKTsKLS0jZWxpZiBJU1BDX0xMVk1f VkVSU0lPTiA9PSBJU1BDX0xMVk1fMTFfMAotKyNlbGlmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQ Q19MTFZNXzEyXzAKLSAgICAgbGx2bTo6Q29uc3RhbnQgKnplcm9WZWMgPQotICAgICAgICAgbGx2 bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KHtzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHR5 LT5nZXROdW1FbGVtZW50cygpKSwgZmFsc2V9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUobGx2bTo6VHlwZTo6Z2V0 SW50MzJUeSgqZy0+Y3R4KSkpOwotQEAgLTM2ODgsNyArMzY4OCw3IEBAIGxsdm06OlZhbHVlICpG dW5jdGlvbkVtaXRDb250ZXh0OjpHZW5YU2ltZENGUHJlZGljYXRlKGxsdm06OlZhbHVlICp2YWx1 ZSwgbGx2bTo6Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAg ICAgIGRlZmF1bHRzID0gbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KHZ0LT5nZXRWZWN0 b3JOdW1FbGVtZW50cygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnQ6OmdldE51bGxWYWx1ZSh2dC0+Z2V0RWxlbWVudFR5 cGUoKSkpOwotLSNlbGlmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMV8wCi0rI2Vs aWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTJfMAotICAgICAgICAgZGVmYXVsdHMg PSBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoe3N0YXRpY19jYXN0PHVuc2lnbmVkIGlu dD4odnQtPmdldE51bUVsZW1lbnRzKCkpLCBmYWxzZX0sCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudDo6Z2V0TnVsbFZhbHVl KHZ0LT5nZXRFbGVtZW50VHlwZSgpKSk7Ci0gI2Vsc2UKLWRpZmYgLS1naXQgYS9zcmMvb3B0LmNw cCBiL3NyYy9vcHQuY3BwCi1pbmRleCAxNzg5Yjg0NzYuLjNmZjE5MWEwYSAxMDA2NDQKLS0tLSBh L3NyYy9vcHQuY3BwCi0rKysgYi9zcmMvb3B0LmNwcAotQEAgLTEwNDUsNyArMTA0NSw3IEBAIGJv b2wgSW50cmluc2ljc09wdDo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7 Ci0gICAgICAgICAgICAgICAgICAgICBhbGlnbiA9IGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9y QWxpZ25tZW50KCk7Ci0gICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg IGFsaWduID0gY2FsbEluc3QtPmdldENhbGxlZEZ1bmN0aW9uKCkgPT0gYXZ4TWFza2VkTG9hZDMy ID8gNCA6IDg7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMF8wCi0rI2lm IElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAgICAgICAgICAgICAgbGx2 bTo6SW5zdHJ1Y3Rpb24gKmxvYWRJbnN0ID0KLSAgICAgICAgICAgICAgICAgICAgIG5ldyBsbHZt OjpMb2FkSW5zdChjYXN0UHRyLCBsbHZtOjpUd2luZShjYWxsSW5zdC0+Z2V0QXJnT3BlcmFuZCgw KS0+Z2V0TmFtZSgpKSArICJfbG9hZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZmFsc2UgLyogbm90IHZvbGF0aWxlICovLCBsbHZtOjpNYXliZUFsaWduKGFsaWdu KSwgKGxsdm06Okluc3RydWN0aW9uICopTlVMTCk7Ci1AQCAtMTQ3Miw3ICsxNDcyLDcgQEAgc3Rh dGljIGxsdm06OlZhbHVlICpsR2V0QmFzZVB0ckFuZE9mZnNldHMobGx2bTo6VmFsdWUgKnB0cnMs IGxsdm06OlZhbHVlICoqb2Zmc2UKLSAgICAgICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICp6 ZXJvTWFzayA9Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAg ICAgICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoY3YtPmdl dFR5cGUoKS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSwKLS0jZWxpZiBJU1BDX0xMVk1fVkVSU0lP TiA9PSBJU1BDX0xMVk1fMTFfMAotKyNlbGlmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZN XzEyXzAKLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0 U3BsYXQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtsbHZtOjpkeW5fY2FzdDxsbHZt OjpWZWN0b3JUeXBlPihjdi0+Z2V0VHlwZSgpKS0+Z2V0TnVtRWxlbWVudHMoKSwgZmFsc2V9LAot ICNlbHNlIC8vIExMVk0gMTIuMCsKLUBAIC0xNDk1LDcgKzE0OTUsNyBAQCBzdGF0aWMgbGx2bTo6 VmFsdWUgKmxHZXRCYXNlUHRyQW5kT2Zmc2V0cyhsbHZtOjpWYWx1ZSAqcHRycywgbGx2bTo6VmFs dWUgKipvZmZzZQotICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICp6ZXJvTWFz ayA9IGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdCgKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJ T04gPCBJU1BDX0xMVk1fMTFfMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3BfdmFy X3R5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRzKCksCi0tI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04g PT0gSVNQQ19MTFZNXzExXzAKLSsjZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8x Ml8wCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtsbHZtOjpkeW5fY2FzdDxsbHZtOjpW ZWN0b3JUeXBlPihib3BfdmFyX3R5cGUpLT5nZXROdW1FbGVtZW50cygpLCBmYWxzZX0sCi0gI2Vs c2UgLy8gTExWTSAxMi4wKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpFbGVt ZW50Q291bnQ6OmdldCgKLUBAIC0yODAzLDcgKzI4MDMsNyBAQCBzdGF0aWMgYm9vbCBsR1NUb0xv YWRTdG9yZShsbHZtOjpDYWxsSW5zdCAqY2FsbEluc3QpIHsKLSAgICAgICAgICAgICBsbHZtOjpW YWx1ZSAqemVyb01hc2sgPQotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8w Ci0gICAgICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdChjYWxsSW5z dC0+Z2V0VHlwZSgpLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpLAotLSNlbGlmIElTUENfTExWTV9W RVJTSU9OID09IElTUENfTExWTV8xMV8wCi0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BD X0xMVk1fMTJfMAotICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3Bs YXQoCi0gICAgICAgICAgICAgICAgICAgICB7bGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlw ZT4oY2FsbEluc3QtPmdldFR5cGUoKSktPmdldE51bUVsZW1lbnRzKCksIGZhbHNlfSwKLSAKLUBA IC0zMTAwLDcgKzMxMDAsNyBAQCBzdGF0aWMgYm9vbCBsSW1wcm92ZU1hc2tlZExvYWQobGx2bTo6 Q2FsbEluc3QgKmNhbGxJbnN0LCBsbHZtOjpCYXNpY0Jsb2NrOjppdGVyYQotICAgICAgICAgewot ICAgICAgICAgICAgIGxsdm06OlR5cGUgKnB0clR5cGUgPSBsbHZtOjpQb2ludGVyVHlwZTo6Z2V0 KGNhbGxJbnN0LT5nZXRUeXBlKCksIDApOwotICAgICAgICAgICAgIHB0ciA9IG5ldyBsbHZtOjpC aXRDYXN0SW5zdChwdHIsIHB0clR5cGUsICJwdHJfY2FzdF9mb3JfbG9hZCIsIGNhbGxJbnN0KTsK LS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzEwXzAKLSsjaWYgSVNQQ19MTFZN X1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMAotICAgICAgICAgICAgIGxvYWQgPSBuZXcgbGx2bTo6 TG9hZEluc3QoCi0gICAgICAgICAgICAgICAgIHB0ciwgY2FsbEluc3QtPmdldE5hbWUoKSwgZmFs c2UgLyogbm90IHZvbGF0aWxlICovLAotICAgICAgICAgICAgICAgICBsbHZtOjpNYXliZUFsaWdu KGctPm9wdC5mb3JjZUFsaWduZWRNZW1vcnkgPyBnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFs aWdubWVudCgpIDogaW5mby0+YWxpZ24pCi1AQCAtMzQ1OSw3ICszNDU5LDcgQEAgbGx2bTo6VmFs dWUgKmxHRVBBbmRMb2FkKGxsdm06OlZhbHVlICpiYXNlUHRyLCBpbnQ2NF90IG9mZnNldCwgaW50 IGFsaWduLCBsbHZtOjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VHlwZSAqdHlw ZSkgewotICAgICBsbHZtOjpWYWx1ZSAqcHRyID0gbEdFUEluc3QoYmFzZVB0ciwgTExWTUludDY0 KG9mZnNldCksICJuZXdfYmFzZSIsIGluc2VydEJlZm9yZSk7Ci0gICAgIHB0ciA9IG5ldyBsbHZt OjpCaXRDYXN0SW5zdChwdHIsIGxsdm06OlBvaW50ZXJUeXBlOjpnZXQodHlwZSwgMCksICJwdHJf Y2FzdCIsIGluc2VydEJlZm9yZSk7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExW TV8xMF8wCi0rI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAgcmV0 dXJuIG5ldyBsbHZtOjpMb2FkSW5zdChwdHIsICJnYXRoZXJfbG9hZCIsIGZhbHNlIC8qIG5vdCB2 b2xhdGlsZSAqLywgbGx2bTo6TWF5YmVBbGlnbihhbGlnbiksIGluc2VydEJlZm9yZSk7Ci0gI2Vs c2UgLy8gTExWTSAxMS4wKwotICAgICByZXR1cm4gbmV3IGxsdm06OkxvYWRJbnN0KGxsdm06OmR5 bl9jYXN0PGxsdm06OlBvaW50ZXJUeXBlPihwdHItPmdldFR5cGUoKSktPmdldFBvaW50ZXJFbGVt ZW50VHlwZSgpLCBwdHIsCi1AQCAtNjE4Myw3ICs2MTgzLDcgQEAgYm9vbCBSZXBsYWNlTExWTUlu dHJpbnNpY3M6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotICAgICAg ICAgICAgICAgICBBcmdzLnB1c2hfYmFjayhsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQo Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAgICAgICAgICAg ICAgICAgIGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yV2lkdGgoKSwKLS0jZWxpZiBJU1BDX0xM Vk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTFfMAotKyNlbGlmIElTUENfTExWTV9WRVJTSU9OIDwg SVNQQ19MTFZNXzEyXzAKLSAgICAgICAgICAgICAgICAgICAgIHtzdGF0aWNfY2FzdDx1bnNpZ25l ZCBpbnQ+KGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yV2lkdGgoKSksIGZhbHNlfSwKLSAjZWxz ZSAvLyBMTFZNIDEyLjArCi0gICAgICAgICAgICAgICAgICAgICBsbHZtOjpFbGVtZW50Q291bnQ6 OmdldChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9y V2lkdGgoKSksIGZhbHNlKSwKLUBAIC02MTk1LDcgKzYxOTUsNyBAQCBib29sIFJlcGxhY2VMTFZN SW50cmluc2ljczo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gICAg ICAgICAgICAgICAgIGxsdm06OlZhbHVlICp6ZXJvTWFzayA9IGxsdm06OkNvbnN0YW50VmVjdG9y OjpnZXRTcGxhdCgKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMAotICAg ICAgICAgICAgICAgICAgICAgZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JXaWR0aCgpLAotLSNl bGlmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMV8wCi0rI2VsaWYgSVNQQ19MTFZN X1ZFUlNJT04gPCBJU1BDX0xMVk1fMTJfMAotICAgICAgICAgICAgICAgICAgICAge3N0YXRpY19j YXN0PHVuc2lnbmVkIGludD4oZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JXaWR0aCgpKSwgZmFs c2V9LAotICNlbHNlIC8vIExMVk0gMTIuMCsKLSAgICAgICAgICAgICAgICAgICAgIGxsdm06OkVs ZW1lbnRDb3VudDo6Z2V0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oZy0+dGFyZ2V0LT5nZXRO YXRpdmVWZWN0b3JXaWR0aCgpKSwgZmFsc2UpLAotQEAgLTY1NjcsNyArNjU2Nyw3IEBAIGxsdm06 OlZhbHVlICpGaXhBZGRyZXNzU3BhY2U6OmNhbGN1bGF0ZUdhdGhlclNjYXR0ZXJBZGRyZXNzKGxs dm06OlZhbHVlICpQdHIsIGxsCi0gICAgICAgICBsbHZtOjpDb25zdGFudCAqemVyb1ZlYyA9IGxs dm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdCgKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJ U1BDX0xMVk1fMTFfMAotICAgICAgICAgICAgIGFkZHJlc3NUeXBlLT5nZXRWZWN0b3JOdW1FbGVt ZW50cygpLAotLSNlbGlmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMV8wCi0rI2Vs aWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTJfMAotICAgICAgICAgICAgIHtsbHZt OjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPihhZGRyZXNzVHlwZSktPmdldE51bUVsZW1lbnRz KCksIGZhbHNlfSwKLSAjZWxzZQotICAgICAgICAgbGx2bTo6RWxlbWVudENvdW50OjpnZXQoCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA3LnBhdGNoIGIvc3JjcGtn cy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMWI5NzVmODk2YzdlLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9pc3BjL3BhdGNo ZXMvbGx2bTEyLTAwNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2MCArMCwwIEBACi1Gcm9t IDYyZjVhNmMzN2JmMjZmYzI1YTdjZjgxODY4MDUyZDM0NzI4NzQ2MTAgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCi1Gcm9tOiBBcmluYSBOZXNobHlhZXZhIDxhcmluYS5uZXNobHlhZXZhQGludGVs LmNvbT4KLURhdGU6IFR1ZSwgMjMgTWFyIDIwMjEgMjM6MDc6MzAgLTA3MDAKLVN1YmplY3Q6IFtQ QVRDSF0gRG8gbm90IGdlbmVyYXRlIGZ1bmN0aW9uIG1hc2sgd2hlbiBpdCBpcyBub3QgcmVxdWly ZWQKLQotLS0tCi0gc3JjL2N0eC5jcHAgICAgICAgICAgICAgICAgICAgIHwgMzkgKysrKysrKysr KysrKystLS0tLS0tCi0gdGVzdHMvbGl0LXRlc3RzL2Z1bGxfbWFzay5pc3BjIHwgNjMgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgOTAgaW5zZXJ0 aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2xpdC10 ZXN0cy9mdWxsX21hc2suaXNwYwotCi1kaWZmIC0tZ2l0IGEvc3JjL2N0eC5jcHAgYi9zcmMvY3R4 LmNwcAotaW5kZXggNTI3YTAyZjMwLi45ZTc3NWZjNWMgMTAwNjQ0Ci0tLS0gYS9zcmMvY3R4LmNw cAotKysrIGIvc3JjL2N0eC5jcHAKLUBAIC0yMzEsMTAgKzIzMSwxOCBAQCBGdW5jdGlvbkVtaXRD b250ZXh0OjpGdW5jdGlvbkVtaXRDb250ZXh0KEZ1bmN0aW9uICpmdW5jLCBTeW1ib2wgKmZ1blN5 bSwgbGx2bTo6RgotICAgICBpbnRlcm5hbE1hc2tQb2ludGVyID0gQWxsb2NhSW5zdChMTFZNVHlw ZXM6Ok1hc2tUeXBlLCAiaW50ZXJuYWxfbWFza19tZW1vcnkiKTsKLSAgICAgU3RvcmVJbnN0KExM Vk1NYXNrQWxsT24sIGludGVybmFsTWFza1BvaW50ZXIpOwotIAotLSAgICBmdW5jdGlvbk1hc2tW YWx1ZSA9IExMVk1NYXNrQWxsT247Ci0tCi0tICAgIGZ1bGxNYXNrUG9pbnRlciA9IEFsbG9jYUlu c3QoTExWTVR5cGVzOjpNYXNrVHlwZSwgImZ1bGxfbWFza19tZW1vcnkiKTsKLS0gICAgU3RvcmVJ bnN0KExMVk1NYXNrQWxsT24sIGZ1bGxNYXNrUG9pbnRlcik7Ci0rICAgIC8vIElmIHRoZSBmdW5j dGlvbiBkb2Vzbid0IGhhdmUgX19tYXNrIGluIHBhcmFtZXRlcnMsIHRoZXJlIGlzIG5vIG5lZWQg dG8KLSsgICAgLy8gaGF2ZSBmdW5jdGlvbiBtYXNrCi0rICAgIGlmICgoZnVuYy0+R2V0VHlwZSgp LT5pc0V4cG9ydGVkICYmCi0rICAgICAgICAgKGxmLT5nZXRGdW5jdGlvblR5cGUoKS0+Z2V0TnVt UGFyYW1zKCkgPT0gZnVuYy0+R2V0VHlwZSgpLT5HZXROdW1QYXJhbWV0ZXJzKCkpKSB8fAotKyAg ICAgICAgKGZ1bmMtPkdldFR5cGUoKS0+aXNVbm1hc2tlZCkgfHwgKGZ1bmMtPkdldFR5cGUoKS0+ aXNUYXNrKSkgewotKyAgICAgICAgZnVuY3Rpb25NYXNrVmFsdWUgPSBOVUxMOwotKyAgICAgICAg ZnVsbE1hc2tQb2ludGVyID0gTlVMTDsKLSsgICAgfSBlbHNlIHsKLSsgICAgICAgIGZ1bmN0aW9u TWFza1ZhbHVlID0gTExWTU1hc2tBbGxPbjsKLSsgICAgICAgIGZ1bGxNYXNrUG9pbnRlciA9IEFs bG9jYUluc3QoTExWTVR5cGVzOjpNYXNrVHlwZSwgImZ1bGxfbWFza19tZW1vcnkiKTsKLSsgICAg ICAgIFN0b3JlSW5zdChMTFZNTWFza0FsbE9uLCBmdWxsTWFza1BvaW50ZXIpOwotKyAgICB9Ci0g Ci0gICAgIGJsb2NrRW50cnlNYXNrID0gTlVMTDsKLSAgICAgYnJlYWtMYW5lc1B0ciA9IGNvbnRp bnVlTGFuZXNQdHIgPSBOVUxMOwotQEAgLTM4OSwyMCArMzk3LDI2IEBAIGxsdm06OkJhc2ljQmxv Y2sgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkdldEN1cnJlbnRCYXNpY0Jsb2NrKCkgeyByZXR1cm4g YmJsb2NrOyB9Ci0gCi0gdm9pZCBGdW5jdGlvbkVtaXRDb250ZXh0OjpTZXRDdXJyZW50QmFzaWNC bG9jayhsbHZtOjpCYXNpY0Jsb2NrICpiYikgeyBiYmxvY2sgPSBiYjsgfQotIAotLWxsdm06OlZh bHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZXRGdW5jdGlvbk1hc2soKSB7IHJldHVybiBmdW5j dGlvbk1hc2tWYWx1ZTsgfQotK2xsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZXRG dW5jdGlvbk1hc2soKSB7IHJldHVybiBmdWxsTWFza1BvaW50ZXIgPyBmdW5jdGlvbk1hc2tWYWx1 ZSA6IExMVk1NYXNrQWxsT247IH0KLSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4 dDo6R2V0SW50ZXJuYWxNYXNrKCkgeyByZXR1cm4gTG9hZEluc3QoaW50ZXJuYWxNYXNrUG9pbnRl ciwgTlVMTCwgImxvYWRfbWFzayIpOyB9Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENv bnRleHQ6OkdldEZ1bGxNYXNrKCkgewotLSAgICByZXR1cm4gQmluYXJ5T3BlcmF0b3IobGx2bTo6 SW5zdHJ1Y3Rpb246OkFuZCwgR2V0SW50ZXJuYWxNYXNrKCksIGZ1bmN0aW9uTWFza1ZhbHVlLCAi aW50ZXJuYWxfbWFzayZmdW5jdGlvbl9tYXNrIik7Ci0rICAgIHJldHVybiBmdWxsTWFza1BvaW50 ZXIgPyBCaW5hcnlPcGVyYXRvcihsbHZtOjpJbnN0cnVjdGlvbjo6QW5kLCBHZXRJbnRlcm5hbE1h c2soKSwgZnVuY3Rpb25NYXNrVmFsdWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiaW50ZXJuYWxfbWFzayZmdW5jdGlvbl9tYXNrIikKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICA6IEdldEludGVybmFsTWFzaygpOwotIH0KLSAKLS1sbHZtOjpWYWx1 ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6R2V0RnVsbE1hc2tQb2ludGVyKCkgeyByZXR1cm4gZnVs bE1hc2tQb2ludGVyOyB9Ci0rbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkdldEZ1 bGxNYXNrUG9pbnRlcigpIHsKLSsgICAgcmV0dXJuIGZ1bGxNYXNrUG9pbnRlciA/IGZ1bGxNYXNr UG9pbnRlciA6IGludGVybmFsTWFza1BvaW50ZXI7Ci0rfQotIAotIHZvaWQgRnVuY3Rpb25FbWl0 Q29udGV4dDo6U2V0RnVuY3Rpb25NYXNrKGxsdm06OlZhbHVlICp2YWx1ZSkgewotLSAgICBmdW5j dGlvbk1hc2tWYWx1ZSA9IHZhbHVlOwotLSAgICBpZiAoYmJsb2NrICE9IE5VTEwpCi0tICAgICAg ICBTdG9yZUluc3QoR2V0RnVsbE1hc2soKSwgZnVsbE1hc2tQb2ludGVyKTsKLSsgICAgaWYgKGZ1 bGxNYXNrUG9pbnRlciAhPSBOVUxMKSB7Ci0rICAgICAgICBmdW5jdGlvbk1hc2tWYWx1ZSA9IHZh bHVlOwotKyAgICAgICAgaWYgKGJibG9jayAhPSBOVUxMKQotKyAgICAgICAgICAgIFN0b3JlSW5z dChHZXRGdWxsTWFzaygpLCBmdWxsTWFza1BvaW50ZXIpOwotKyAgICB9Ci0gfQotIAotIHZvaWQg RnVuY3Rpb25FbWl0Q29udGV4dDo6U2V0QmxvY2tFbnRyeU1hc2sobGx2bTo6VmFsdWUgKnZhbHVl KSB7IGJsb2NrRW50cnlNYXNrID0gdmFsdWU7IH0KLUBAIC00MTAsNyArNDI0LDggQEAgdm9pZCBG dW5jdGlvbkVtaXRDb250ZXh0OjpTZXRCbG9ja0VudHJ5TWFzayhsbHZtOjpWYWx1ZSAqdmFsdWUp IHsgYmxvY2tFbnRyeU1hc2sKLSB2b2lkIEZ1bmN0aW9uRW1pdENvbnRleHQ6OlNldEludGVybmFs TWFzayhsbHZtOjpWYWx1ZSAqdmFsdWUpIHsKLSAgICAgU3RvcmVJbnN0KHZhbHVlLCBpbnRlcm5h bE1hc2tQb2ludGVyKTsKLSAgICAgLy8ga2x1ZGdlIHNvIHRoYXQgX19tYXNrIHJldHVybnMgdGhl IHJpZ2h0IHZhbHVlIGluIGlzcGMgY29kZS4KLS0gICAgU3RvcmVJbnN0KEdldEZ1bGxNYXNrKCks IGZ1bGxNYXNrUG9pbnRlcik7Ci0rICAgIGlmIChmdWxsTWFza1BvaW50ZXIpCi0rICAgICAgICBT dG9yZUluc3QoR2V0RnVsbE1hc2soKSwgZnVsbE1hc2tQb2ludGVyKTsKLSB9Ci0gCi0gdm9pZCBG dW5jdGlvbkVtaXRDb250ZXh0OjpTZXRJbnRlcm5hbE1hc2tBbmQobGx2bTo6VmFsdWUgKm9sZE1h c2ssIGxsdm06OlZhbHVlICp0ZXN0KSB7Ci1AQCAtMTI2NSw3ICsxMjgwLDcgQEAgdm9pZCBGdW5j dGlvbkVtaXRDb250ZXh0OjpDdXJyZW50TGFuZXNSZXR1cm5lZChFeHByICpleHByLCBib29sIGRv Q29oZXJlbmNlQ2hlY2sKLSAgICAgICAgIC8vIGxhbmVzIGhhdmUgcmV0dXJuZWQKLSAgICAgICAg IGlmIChkb0NvaGVyZW5jZUNoZWNrKSB7Ci0gICAgICAgICAgICAgLy8gaWYgbmV3UmV0dXJuZWRM YW5lcyA9PSBmdW5jdGlvbk1hc2tWYWx1ZSwgZ2V0IG91dCBvZiBoZXJlIQotLSAgICAgICAgICAg IGxsdm06OlZhbHVlICpjbXAgPSBNYXNrc0FsbEVxdWFsKGZ1bmN0aW9uTWFza1ZhbHVlLCBuZXdS ZXR1cm5lZExhbmVzKTsKLSsgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqY21wID0gTWFza3NBbGxF cXVhbChHZXRGdW5jdGlvbk1hc2soKSwgbmV3UmV0dXJuZWRMYW5lcyk7Ci0gICAgICAgICAgICAg bGx2bTo6QmFzaWNCbG9jayAqYkRvUmV0dXJuID0gQ3JlYXRlQmFzaWNCbG9jaygiZG9fcmV0dXJu Iik7Ci0gICAgICAgICAgICAgbGx2bTo6QmFzaWNCbG9jayAqYk5vUmV0dXJuID0gQ3JlYXRlQmFz aWNCbG9jaygibm9fcmV0dXJuIik7Ci0gICAgICAgICAgICAgQnJhbmNoSW5zdChiRG9SZXR1cm4s IGJOb1JldHVybiwgY21wKTsKLWRpZmYgLS1naXQgYS90ZXN0cy9saXQtdGVzdHMvZnVsbF9tYXNr LmlzcGMgYi90ZXN0cy9saXQtdGVzdHMvZnVsbF9tYXNrLmlzcGMKLW5ldyBmaWxlIG1vZGUgMTAw NjQ0Ci1pbmRleCAwMDAwMDAwMDAuLmFjMGIwYmNhMwotLS0tIC9kZXYvbnVsbAotKysrIGIvdGVz dHMvbGl0LXRlc3RzL2Z1bGxfbWFzay5pc3BjCi1AQCAtMCwwICsxLDYzIEBACi0rLy8gUlVOOiAl e2lzcGN9ICVzIC1ESVNQQ19FWFBPUlQgLS1lbWl0LWxsdm0tdGV4dCAtTzAgLS1ub3dyYXAgLW8g JXQubGwKLSsvLyBSVU46IEZpbGVDaGVjayAtLWlucHV0LWZpbGU9JXQubGwgLWNoZWNrLXByZWZp eD1DSEVDS19JU1BDX0VYUE9SVCAlcwotKwotKy8vIFJVTjogJXtpc3BjfSAlcyAtRElTUENfVU5N QVNLRUQgLS1lbWl0LWxsdm0tdGV4dCAtTzAgLS1ub3dyYXAgLW8gJXQubGwKLSsvLyBSVU46IEZp bGVDaGVjayAtLWlucHV0LWZpbGU9JXQubGwgLWNoZWNrLXByZWZpeD1DSEVDS19JU1BDX1VOTUFT S0VEICVzCi0rCi0rLy8gUlVOOiAle2lzcGN9ICVzIC1ESVNQQ19OT1FVQUxJRiAtLWVtaXQtbGx2 bS10ZXh0IC1PMCAtLW5vd3JhcCAtbyAldC5sbAotKy8vIFJVTjogRmlsZUNoZWNrIC0taW5wdXQt ZmlsZT0ldC5sbCAtY2hlY2stcHJlZml4PUNIRUNLX0lTUENfTk9RVUFMSUYgJXMKLSsKLSsvLyBS VU46ICV7aXNwY30gJXMgLURJU1BDX1RBU0sgLS1lbWl0LWxsdm0tdGV4dCAtTzAgLS1ub3dyYXAg LW8gJXQubGwKLSsvLyBSVU46IEZpbGVDaGVjayAtLWlucHV0LWZpbGU9JXQubGwgLWNoZWNrLXBy ZWZpeD1DSEVDS19JU1BDX1RBU0sgJXMKLSsKLStzdHJ1Y3QgUGFyYW1ldGVycyB7Ci0rICAgIGZs b2F0ICp2b3V0OwotKyAgICBpbnQgcGFyYW07Ci0rfTsKLSsKLSsjaWZkZWYgSVNQQ19FWFBPUlQK LSsvLyBDSEVDS19JU1BDX0VYUE9SVDogZGVmaW5lIHZvaWQgQHNpbXBsZV9leHBvcnRfX18KLSsv LyBDSEVDS19JU1BDX0VYUE9SVDogJWZ1bGxfbWFza19tZW1vcnkgPSBhbGxvY2EKLSsvLyBDSEVD S19JU1BDX0VYUE9SVDogZGVmaW5lIHZvaWQgQHNpbXBsZV9leHBvcnQoCi0rLy8gQ0hFQ0tfSVNQ Q19FWFBPUlQtTk9UOiAlZnVsbF9tYXNrX21lbW9yeSA9IGFsbG9jYQotK2V4cG9ydCB2b2lkIHNp bXBsZV9leHBvcnQodm9pZCAqdW5pZm9ybSBfcCkgewotKyAgICBQYXJhbWV0ZXJzICp1bmlmb3Jt IHAgPSAoUGFyYW1ldGVycyAqIHVuaWZvcm0pIF9wOwotKyAgICBpZiAocHJvZ3JhbUluZGV4ID4g cC0+cGFyYW0pCi0rICAgICAgICBwLT52b3V0W3Byb2dyYW1JbmRleF0gPSBwcm9ncmFtQ291bnQg KiBwcm9ncmFtSW5kZXg7Ci0rfQotKyNlbmRpZgotKyNpZmRlZiBJU1BDX1VOTUFTS0VECi0rLy8g Q0hFQ0tfSVNQQ19VTk1BU0tFRDogZGVmaW5lIHZvaWQgQHNpbXBsZV91bm1hc2tlZAotKy8vIENI RUNLX0lTUENfVU5NQVNLRUQtTk9UOiAlZnVsbF9tYXNrX21lbW9yeSA9IGFsbG9jYQotK3VubWFz a2VkIHZvaWQgc2ltcGxlX3VubWFza2VkKHZvaWQgKnVuaWZvcm0gX3ApIHsKLSsgICAgUGFyYW1l dGVycyAqdW5pZm9ybSBwID0gKFBhcmFtZXRlcnMgKiB1bmlmb3JtKSBfcDsKLSsgICAgaWYgKHBy b2dyYW1JbmRleCA+IHAtPnBhcmFtKQotKyAgICAgICAgcC0+dm91dFtwcm9ncmFtSW5kZXhdID0g cHJvZ3JhbUNvdW50ICogcHJvZ3JhbUluZGV4OwotK30KLSsjZW5kaWYKLSsjaWZkZWYgSVNQQ19O T1FVQUxJRgotKy8vIENIRUNLX0lTUENfTk9RVUFMSUY6IGRlZmluZSB2b2lkIEBzaW1wbGUKLSsv LyBDSEVDS19JU1BDX05PUVVBTElGOiAlZnVsbF9tYXNrX21lbW9yeSA9IGFsbG9jYQotK3ZvaWQg c2ltcGxlKHZvaWQgKnVuaWZvcm0gX3ApIHsKLSsgICAgUGFyYW1ldGVycyAqdW5pZm9ybSBwID0g KFBhcmFtZXRlcnMgKiB1bmlmb3JtKSBfcDsKLSsgICAgaWYgKHByb2dyYW1JbmRleCA+IHAtPnBh cmFtKQotKyAgICAgICAgcC0+dm91dFtwcm9ncmFtSW5kZXhdID0gcHJvZ3JhbUNvdW50ICogcHJv Z3JhbUluZGV4OwotK30KLSsjZW5kaWYKLSsjaWZkZWYgSVNQQ19UQVNLCi0rCi0rLy8gQ0hFQ0tf SVNQQ19UQVNLOiBkZWZpbmUgdm9pZCBAc2ltcGxlX3Rhc2sKLSsvLyBDSEVDS19JU1BDX1RBU0st Tk9UOiAlZnVsbF9tYXNrX21lbW9yeSA9IGFsbG9jYQotKy8vIENIRUNLX0lTUENfVEFTSzogZGVm aW5lIHZvaWQgQHNpbXBsZV9lbnRyeV9wb2ludF9fCi0rLy8gQ0hFQ0tfSVNQQ19UQVNLOiAlZnVs bF9tYXNrX21lbW9yeSA9IGFsbG9jYQotKy8vIENIRUNLX0lTUENfVEFTSzogZGVmaW5lIHZvaWQg QHNpbXBsZV9lbnRyeV9wb2ludCgKLSsvLyBDSEVDS19JU1BDX1RBU0stTk9UOiAlZnVsbF9tYXNr X21lbW9yeSA9IGFsbG9jYQotK3Rhc2sgdm9pZCBzaW1wbGVfdGFzayh2b2lkICp1bmlmb3JtIF9w KSB7Ci0rICAgIFBhcmFtZXRlcnMgKnVuaWZvcm0gcCA9IChQYXJhbWV0ZXJzICogdW5pZm9ybSkg X3A7Ci0rICAgIGlmIChwcm9ncmFtSW5kZXggPiBwLT5wYXJhbSkKLSsgICAgICAgIHAtPnZvdXRb cHJvZ3JhbUluZGV4XSA9IHByb2dyYW1Db3VudCAqIHByb2dyYW1JbmRleDsKLSt9Ci0rZXhwb3J0 IHZvaWQgc2ltcGxlX2VudHJ5X3BvaW50KHZvaWQgKnVuaWZvcm0gcGFyYW1ldGVycywgdW5pZm9y bSBpbnQgZGltMCwgdW5pZm9ybSBpbnQgZGltMSwgdW5pZm9ybSBpbnQgZGltMikgewotKyAgICBs YXVuY2hbZGltMCwgZGltMSwgZGltMl0gc2ltcGxlX3Rhc2socGFyYW1ldGVycyk7Ci0rfQotKyNl bmRpZgotXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2lz cGMvcGF0Y2hlcy9sbHZtMTItMDA4LnBhdGNoIGIvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEy LTAwOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg0MTNkOGI3ODg3Li4w MDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwOC5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi1Gcm9tIGFmYWQxNDIyN2Q5MjA0YTNjOGE2 MjZjYTYwOGY1YjQzYzMyMThmZTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBcmlu YSBOZXNobHlhZXZhIDxhcmluYS5uZXNobHlhZXZhQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgNCBN YXkgMjAyMSAxMTo0Mzo1MiAtMDcwMAotU3ViamVjdDogW1BBVENIXSBGaXhlZCBJU1BDIGdlbiBi dWlsZCBmb3IgTExWTTEyCi0KLS0tLQotIHNyYy9jdHguY3BwIHwgIDQgKysrKwotIHNyYy9vcHQu Y3BwIHwgNDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQotIDIg ZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCi0KLWRpZmYg LS1naXQgYS9zcmMvY3R4LmNwcCBiL3NyYy9jdHguY3BwCi1pbmRleCAwYzcwNTA1OTEuLmY3ZGMw NjkzOSAxMDA2NDQKLS0tLSBhL3NyYy9jdHguY3BwCi0rKysgYi9zcmMvY3R4LmNwcAotQEAgLTM3 MzgsNyArMzczOCwxMSBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6R2VuWFNp bWRDRkFueShsbHZtOjpWYWx1ZSAqdmFsdWUpIHsKLSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25F bWl0Q29udGV4dDo6R2VuWFNpbWRDRlByZWRpY2F0ZShsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06 OlZhbHVlICpkZWZhdWx0cykgewotICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbGx2bTo6aXNh PGxsdm06OlZlY3RvclR5cGU+KHZhbHVlLT5nZXRUeXBlKCkpKTsKLSsjaWYgSVNQQ19MTFZNX1ZF UlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLSsgICAgbGx2bTo6Rml4ZWRWZWN0b3JUeXBlICp2dCA9 IGxsdm06OmR5bl9jYXN0PGxsdm06OkZpeGVkVmVjdG9yVHlwZT4odmFsdWUtPmdldFR5cGUoKSk7 Ci0rI2Vsc2UKLSAgICAgbGx2bTo6VmVjdG9yVHlwZSAqdnQgPSBsbHZtOjpkeW5fY2FzdDxsbHZt OjpWZWN0b3JUeXBlPih2YWx1ZS0+Z2V0VHlwZSgpKTsKLSsjZW5kaWYKLSAgICAgaWYgKGRlZmF1 bHRzID09IE5VTEwpIHsKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMAot ICAgICAgICAgZGVmYXVsdHMgPSBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQodnQtPmdl dFZlY3Rvck51bUVsZW1lbnRzKCksCi1kaWZmIC0tZ2l0IGEvc3JjL29wdC5jcHAgYi9zcmMvb3B0 LmNwcAotaW5kZXggY2VhNGFmYTIzLi40ZTMzZDZiMWEgMTAwNjQ0Ci0tLS0gYS9zcmMvb3B0LmNw cAotKysrIGIvc3JjL29wdC5jcHAKLUBAIC0yOTE2LDkgKzI5MTYsMTMgQEAgc3RhdGljIGxsdm06 OkZ1bmN0aW9uICpsR2VuWE1hc2tlZEludDhJbnN0KGxsdm06Okluc3RydWN0aW9uICppbnN0LCBi b29sIGlzU3RvcmUKLSAKLSBzdGF0aWMgbGx2bTo6Q2FsbEluc3QgKmxHZW5YU3RvcmVJbnN0KGxs dm06OlZhbHVlICp2YWwsIGxsdm06OlZhbHVlICpwdHIsIGxsdm06Okluc3RydWN0aW9uICppbnN0 KSB7Ci0gICAgIEFzc2VydChnLT50YXJnZXQtPmlzR2VuWFRhcmdldCgpKTsKLSsjaWYgSVNQQ19M TFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLSsgICAgQXNzZXJ0KGxsdm06OmlzYTxsbHZt OjpGaXhlZFZlY3RvclR5cGU+KHZhbC0+Z2V0VHlwZSgpKSk7Ci0rICAgIGxsdm06OkZpeGVkVmVj dG9yVHlwZSAqdmFsVmVjVHlwZSA9IGxsdm06OmR5bl9jYXN0PGxsdm06OkZpeGVkVmVjdG9yVHlw ZT4odmFsLT5nZXRUeXBlKCkpOwotKyNlbHNlCi0gICAgIEFzc2VydChsbHZtOjppc2E8bGx2bTo6 VmVjdG9yVHlwZT4odmFsLT5nZXRUeXBlKCkpKTsKLS0KLSAgICAgbGx2bTo6VmVjdG9yVHlwZSAq dmFsVmVjVHlwZSA9IGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KHZhbC0+Z2V0VHlw ZSgpKTsKLSsjZW5kaWYKLSAgICAgQXNzZXJ0KGxsdm06OmlzUG93ZXJPZjJfMzIodmFsVmVjVHlw ZS0+Z2V0TnVtRWxlbWVudHMoKSkpOwotICAgICBBc3NlcnQodmFsVmVjVHlwZS0+Z2V0UHJpbWl0 aXZlU2l6ZUluQml0cygpIC8gOCA8PSA4ICogT1dPUkQpOwotIAotQEAgLTI5NDIsOSArMjk0Niwx MyBAQCBzdGF0aWMgbGx2bTo6Q2FsbEluc3QgKmxHZW5YU3RvcmVJbnN0KGxsdm06OlZhbHVlICp2 YWwsIGxsdm06OlZhbHVlICpwdHIsIGxsdm06OgotIH0KLSAKLSBzdGF0aWMgbGx2bTo6Q2FsbElu c3QgKmxHZW5YTG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VHlwZSAqcmV0VHlwZSwg bGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QpIHsKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQ Q19MTFZNXzExXzAKLSsgICAgQXNzZXJ0KGxsdm06OmlzYTxsbHZtOjpGaXhlZFZlY3RvclR5cGU+ KHJldFR5cGUpKTsKLSsgICAgbGx2bTo6Rml4ZWRWZWN0b3JUeXBlICpyZXRWZWNUeXBlID0gbGx2 bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0b3JUeXBlPihyZXRUeXBlKTsKLSsjZWxzZQotICAg ICBBc3NlcnQobGx2bTo6aXNhPGxsdm06OlZlY3RvclR5cGU+KHJldFR5cGUpKTsKLS0KLSAgICAg bGx2bTo6VmVjdG9yVHlwZSAqcmV0VmVjVHlwZSA9IGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3Rv clR5cGU+KHJldFR5cGUpOwotKyNlbmRpZgotICAgICBBc3NlcnQobGx2bTo6aXNQb3dlck9mMl8z MihyZXRWZWNUeXBlLT5nZXROdW1FbGVtZW50cygpKSk7Ci0gICAgIEFzc2VydChyZXRWZWNUeXBl LT5nZXRQcmltaXRpdmVTaXplSW5CaXRzKCkpOwotICAgICBBc3NlcnQocmV0VmVjVHlwZS0+Z2V0 UHJpbWl0aXZlU2l6ZUluQml0cygpIC8gOCA8PSA4ICogT1dPUkQpOwotQEAgLTU0ODUsOCArNTQ5 MywxMyBAQCBzdGF0aWMgdm9pZCBsQ3JlYXRlQmxvY2tMRFVzZShsbHZtOjpJbnN0cnVjdGlvbiAq Y3Vyckluc3QsIHN0ZDo6dmVjdG9yPGxsdm06OkV4dAotICAgICAgICAgfSBlbHNlIGlmIChhdXRv IGdhdGhlciA9IGxHZXRQc2V1ZG9HYXRoZXIobGx2bTo6ZHluX2Nhc3Q8bGx2bTo6SW5zdHJ1Y3Rp b24+KHVpLT5nZXRVc2VyKCkpKSkgewotICAgICAgICAgICAgIC8vIENvbGxlY3QgaWR4cyBmcm9t IGdhdGhlciBhbmQgZml4IHVzZXJzCi0gICAgICAgICAgICAgbGx2bTo6VmFsdWUgKnJlcyA9IGxs dm06OlVuZGVmVmFsdWU6OmdldChnYXRoZXItPmdldFR5cGUoKSk7Ci0tICAgICAgICAgICAgZm9y ICh1bnNpZ25lZCBpID0gMCwgZW5kID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4o cmVzLT5nZXRUeXBlKCkpLT5nZXROdW1FbGVtZW50cygpOyBpIDwgZW5kOwotLSAgICAgICAgICAg ICAgICAgKytpKSB7Ci0rI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0r ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgZW5kID0gbGx2bTo6ZHluX2Nhc3Q8bGx2 bTo6Rml4ZWRWZWN0b3JUeXBlPihyZXMtPmdldFR5cGUoKSktPmdldE51bUVsZW1lbnRzKCk7IGkg PCBlbmQ7Ci0rICAgICAgICAgICAgICAgICArK2kpCi0rI2Vsc2UKLSsgICAgICAgICAgICBmb3Ig KHVuc2lnbmVkIGkgPSAwLCBlbmQgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPihy ZXMtPmdldFR5cGUoKSktPmdldE51bUVsZW1lbnRzKCk7IGkgPCBlbmQ7ICsraSkKLSsjZW5kaWYK LSsgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8vIEdldCBlbGVtZW50IHZpYSBJRUkK LSAgICAgICAgICAgICAgICAgcmVzID0gbGx2bTo6SW5zZXJ0RWxlbWVudEluc3Q6OkNyZWF0ZShy ZXMsIEVFSXNbcHRyVXNlLmlkeHNbY3Vycl9pZHgrK11dLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50SW50OjpnZXQo TExWTVR5cGVzOjpJbnQzMlR5cGUsIGkpLAotQEAgLTU1MjIsMTAgKzU1MzUsMTEgQEAgc3RhdGlj IGJvb2wgbFZlY3Rvcml6ZUdFUHMobGx2bTo6VmFsdWUgKnB0ciwgc3RkOjp2ZWN0b3I8UHRyVXNl PiAmcHRyVXNlcywgc3RkOjoKLSAKLSAgICAgLy8gQWRqdXN0IHZhbHVlcyBmb3IgdmVjdG9yIGxv YWQKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLS0gICAgaWYgKGF1 dG8gdmVjVHkgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpGaXhlZFZlY3RvclR5cGU+KHR5cGUpKSB7 Ci0rICAgIGlmIChhdXRvIHZlY1R5ID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0b3JU eXBlPih0eXBlKSkKLSAjZWxzZQotLSAgICBpZiAoYXV0byB2ZWNUeSA9IGxsdm06OmR5bl9jYXN0 PGxsdm06OlZlY3RvclR5cGU+KHR5cGUpKSB7Ci0rICAgIGlmIChhdXRvIHZlY1R5ID0gbGx2bTo6 ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4odHlwZSkpCi0gI2VuZGlmCi0rICAgIHsKLSAgICAg ICAgIC8vIEdldCBzaW5nbGUgZWxlbWVudCBzaXplCi0gICAgICAgICB0X3NpemUgLz0gdmVjVHkt PmdldE51bUVsZW1lbnRzKCk7Ci0gICAgICAgICAvLyBHZXQgc2luZ2xlIGVsZW1lbnQgdHlwZQot QEAgLTY0NzcsNyArNjQ5MSw3IEBAIGxsdm06OlZhbHVlICpGaXhBZGRyZXNzU3BhY2U6OmNhbGN1 bGF0ZUdhdGhlclNjYXR0ZXJBZGRyZXNzKGxsdm06OlZhbHVlICpQdHIsIGxsCi0gI2lmIElTUENf TExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0gICAgICAgICBPZmZzZXRzLAotICAgICAg ICAgbGx2bTo6Rml4ZWRWZWN0b3JUeXBlOjpnZXQoTExWTVR5cGVzOjpJbnQ2NFR5cGUsCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0 b3JUeXBlPihPZmZzZXRzLT5nZXRUeXBlKCkpLT5nZXROdW1FbGVtZW50cygpKSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OmR5bl9jYXN0PGxsdm06OkZpeGVkVmVj dG9yVHlwZT4oT2Zmc2V0cy0+Z2V0VHlwZSgpKS0+Z2V0TnVtRWxlbWVudHMoKSksCi0gICAgICAg ICAic3ZtX29mZnNldF96ZXh0IiwgSW5zZXJ0QmVmb3JlKTsKLSAjZWxzZQotICAgICAgICAgT2Zm c2V0cywgbGx2bTo6VmVjdG9yVHlwZTo6Z2V0KExMVk1UeXBlczo6SW50NjRUeXBlLCBPZmZzZXRz LT5nZXRUeXBlKCktPmdldFZlY3Rvck51bUVsZW1lbnRzKCkpLAotQEAgLTY0OTIsNyArNjUwNiw3 IEBAIGxsdm06OlZhbHVlICpGaXhBZGRyZXNzU3BhY2U6OmNhbGN1bGF0ZUdhdGhlclNjYXR0ZXJB ZGRyZXNzKGxsdm06OlZhbHVlICpQdHIsIGxsCi0gICAgICAgICBsbHZtOjpWYWx1ZSAqdW5kZWZJ bnNlcnRWYWx1ZSA9Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0g ICAgICAgICAgICAgbGx2bTo6VW5kZWZWYWx1ZTo6Z2V0KGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6 Z2V0KAotLSAgICAgICAgICAgICAgICBMTFZNVHlwZXM6OkludDY0VHlwZSwgbGx2bTo6ZHluX2Nh c3Q8bGx2bTo6VmVjdG9yVHlwZT4oYWRkcmVzc1R5cGUpLT5nZXROdW1FbGVtZW50cygpKSk7Ci0r ICAgICAgICAgICAgICAgIExMVk1UeXBlczo6SW50NjRUeXBlLCBsbHZtOjpkeW5fY2FzdDxsbHZt OjpGaXhlZFZlY3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSkpOwotICNl bHNlCi0gICAgICAgICAgICAgbGx2bTo6VW5kZWZWYWx1ZTo6Z2V0KGxsdm06OlZlY3RvclR5cGU6 OmdldChMTFZNVHlwZXM6OkludDY0VHlwZSwgYWRkcmVzc1R5cGUtPmdldFZlY3Rvck51bUVsZW1l bnRzKCkpKTsKLSAjZW5kaWYKLUBAIC02NTAxLDE3ICs2NTE1LDE2IEBAIGxsdm06OlZhbHVlICpG aXhBZGRyZXNzU3BhY2U6OmNhbGN1bGF0ZUdhdGhlclNjYXR0ZXJBZGRyZXNzKGxsdm06OlZhbHVl ICpQdHIsIGxsCi0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAg ICAgICAgICBhZGRyZXNzVHlwZS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSwKLSAjZWxpZiBJU1BD X0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMl8wCi0tICAgICAgICAgICAge2xsdm06OmR5bl9j YXN0PGxsdm06OlZlY3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSwgZmFs c2V9LAotKyAgICAgICAgICAgIHtsbHZtOjpkeW5fY2FzdDxsbHZtOjpGaXhlZFZlY3RvclR5cGU+ KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSwgZmFsc2V9LAotICNlbHNlCi0tICAgICAg ICBsbHZtOjpFbGVtZW50Q291bnQ6OmdldCgKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxsdm06OmR5bl9jYXN0PGxsdm06OkZpeGVkVmVjdG9yVHlwZT4oYWRkcmVzc1R5cGUtPmdl dE51bUVsZW1lbnRzKCksIGZhbHNlKSwKLSsgICAgICAgICAgICBsbHZtOjpFbGVtZW50Q291bnQ6 OmdldChsbHZtOjpkeW5fY2FzdDxsbHZtOjpGaXhlZFZlY3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+ Z2V0TnVtRWxlbWVudHMoKSwgZmFsc2UpLAotICNlbmRpZgotICAgICAgICAgICAgIGxsdm06OkNv bnN0YW50OjpnZXROdWxsVmFsdWUobGx2bTo6VHlwZTo6Z2V0SW50MzJUeShJbnNlcnRCZWZvcmUt PmdldENvbnRleHQoKSkpKTsKLSAKLSAgICAgICAgIGxsdm06OlZhbHVlICp1bmRlZlNodWZmbGVW YWx1ZSA9Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0gICAgICAg ICAgICAgbGx2bTo6VW5kZWZWYWx1ZTo6Z2V0KGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KAot LSAgICAgICAgICAgICAgICBMTFZNVHlwZXM6OkludDY0VHlwZSwgbGx2bTo6ZHluX2Nhc3Q8bGx2 bTo6VmVjdG9yVHlwZT4oYWRkcmVzc1R5cGUpLT5nZXROdW1FbGVtZW50cygpKSk7Ci0rICAgICAg ICAgICAgICAgIExMVk1UeXBlczo6SW50NjRUeXBlLCBsbHZtOjpkeW5fY2FzdDxsbHZtOjpGaXhl ZFZlY3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSkpOwotICNlbHNlCi0g ICAgICAgICAgICAgbGx2bTo6VW5kZWZWYWx1ZTo6Z2V0KGxsdm06OlZlY3RvclR5cGU6OmdldChM TFZNVHlwZXM6OkludDY0VHlwZSwgYWRkcmVzc1R5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRzKCkp KTsKLSAjZW5kaWYKLUBAIC02NTQyLDcgKzY1NTUsOCBAQCBsbHZtOjpJbnN0cnVjdGlvbiAqRml4 QWRkcmVzc1NwYWNlOjpwcm9jZXNzVmVjdG9yTG9hZChsbHZtOjpMb2FkSW5zdCAqTEkpIHsKLSAg ICAgICAgIGlzUHRyTG9hZCA9IHRydWU7Ci0gICAgICAgICBhdXRvIHNjYWxhclR5cGUgPSBnLT50 YXJnZXQtPmlzMzJCaXQoKSA/IExMVk1UeXBlczo6SW50MzJUeXBlIDogTExWTVR5cGVzOjpJbnQ2 NFR5cGU7Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0tICAgICAg ICByZXRUeXBlID0gbGx2bTo6Rml4ZWRWZWN0b3JUeXBlOjpnZXQoc2NhbGFyVHlwZSwgbGx2bTo6 ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4ocmV0VHlwZSktPmdldE51bUVsZW1lbnRzKCkpOwot KyAgICAgICAgcmV0VHlwZSA9Ci0rICAgICAgICAgICAgbGx2bTo6Rml4ZWRWZWN0b3JUeXBlOjpn ZXQoc2NhbGFyVHlwZSwgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0b3JUeXBlPihyZXRU eXBlKS0+Z2V0TnVtRWxlbWVudHMoKSk7Ci0gI2Vsc2UKLSAgICAgICAgIHJldFR5cGUgPSBsbHZt OjpWZWN0b3JUeXBlOjpnZXQoc2NhbGFyVHlwZSwgcmV0VHlwZS0+Z2V0VmVjdG9yTnVtRWxlbWVu dHMoKSk7Ci0gI2VuZGlmCi1AQCAtNjYwNCw3ICs2NjE4LDggQEAgbGx2bTo6SW5zdHJ1Y3Rpb24g KkZpeEFkZHJlc3NTcGFjZTo6cHJvY2Vzc1ZlY3RvclN0b3JlKGxsdm06OlN0b3JlSW5zdCAqU0kp IHsKLSAgICAgaWYgKHZhbFR5cGUtPmdldFNjYWxhclR5cGUoKS0+aXNQb2ludGVyVHkoKSkgewot ICAgICAgICAgYXV0byBzY2FsYXJUeXBlID0gZy0+dGFyZ2V0LT5pczMyQml0KCkgPyBMTFZNVHlw ZXM6OkludDMyVHlwZSA6IExMVk1UeXBlczo6SW50NjRUeXBlOwotICNpZiBJU1BDX0xMVk1fVkVS U0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotLSAgICAgICAgdmFsVHlwZSA9IGxsdm06OkZpeGVkVmVj dG9yVHlwZTo6Z2V0KHNjYWxhclR5cGUsIGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+ KHZhbFR5cGUpLT5nZXROdW1FbGVtZW50cygpKTsKLSsgICAgICAgIHZhbFR5cGUgPQotKyAgICAg ICAgICAgIGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KHNjYWxhclR5cGUsIGxsdm06OmR5bl9j YXN0PGxsdm06OkZpeGVkVmVjdG9yVHlwZT4odmFsVHlwZSktPmdldE51bUVsZW1lbnRzKCkpOwot ICNlbHNlCi0gICAgICAgICB2YWxUeXBlID0gbGx2bTo6VmVjdG9yVHlwZTo6Z2V0KHNjYWxhclR5 cGUsIHZhbFR5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRzKCkpOwotICNlbmRpZgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwOS5wYXRjaCBiL3NyY3BrZ3MvaXNwYy9w YXRjaGVzL2xsdm0xMi0wMDkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQz ZWE2NzgyODU4Mi4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0x Mi0wMDkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMTA5ICswLDAgQEAKLUZyb20gOTdiMTNj MzIxMzJlMjcwNGE1ZTNlN2IyZWFlNDlkODU0ZDA4N2UzZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKLUZyb206IEFyaW5hIE5lc2hseWFldmEgPGFyaW5hLm5lc2hseWFldmFAaW50ZWwuY29tPgot RGF0ZTogVHVlLCA0IE1heSAyMDIxIDExOjMxOjU1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVw ZGF0ZWQgYnVpbHRpbnMtY20qIGZvciBzd2l0Y2ggdG8gTExWTTEyCi0KLS0tLQotIGJ1aWx0aW5z L2J1aWx0aW5zLWNtLTMyLmxsIHwgMjM0ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tLS0KLSBidWlsdGlucy9idWlsdGlucy1jbS02NC5sbCB8IDIzMiArKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDIzMyBpbnNlcnRpb25zKCsp LCAyMzMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9idWlsdGlucy9idWlsdGlucy1jbS0z Mi5sbCBiL2J1aWx0aW5zL2J1aWx0aW5zLWNtLTMyLmxsCi1pbmRleCAzMmRlYmYzMmUuLjQ4MWJi ZGM0OCAxMDA2NDQKLS0tLSBhL2J1aWx0aW5zL2J1aWx0aW5zLWNtLTMyLmxsCi0rKysgYi9idWls dGlucy9idWlsdGlucy1jbS0zMi5sbAotQEAgLTU1Nyw3ICs1NTcsNyBAQCAkX1pOMTNWYXJ5aW5n V3JpdGVyMTJXcml0ZVZlY0VsZW1JUHZFRXZ2ID0gY29tZGF0IGFueQotIEAuc3RyLjEwID0gcHJp dmF0ZSB1bm5hbWVkX2FkZHIgY29uc3RhbnQgWzUgeCBpOF0gYyIlMDhYXDAwIiwgYWxpZ24gMQot IAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2Nh bCBzaWduZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2Y2MoaTggc2lnbmV4dCwg aTggc2lnbmV4dCkgIzAgewotK2RlZmluZSBpbnRlcm5hbCBzaWduZXh0IGk4IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zZGl2Y2MoaTggc2lnbmV4dCwgaTggc2lnbmV4dCkgIzAgewotICAgJTMg PSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNSA9 IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAgLTYxOCw3ICs2MTgsNyBAQCBkZWZpbmUgaW50 ZXJuYWwgPDEgeCBpOD4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMUVFRXUyQ012YlRf X2NTMV9TMV91MkNNdgotIGRlY2xhcmUgPDEgeCBpOD4gQGxsdm0uZ2VueC5yZHJlZ2lvbmkudjFp OC52MWk4LmkxNig8MSB4IGk4PiwgaTMyLCBpMzIsIGkzMiwgaTE2LCBpMzIpICMyCi0gCi0gOyBG dW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHgg aTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9jU18oPDEgeCBpOD4sIDwx IHggaTg+KSAjMCB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zZGl2dTJDTXZiMV9jU18oPDEgeCBpOD4sIDwxIHggaTg+KSAjMCB7Ci0gICAlMyA9 IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWdu IDEKLSAgICU1ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi1AQCAtNjM0LDcgKzYzNCw3IEBA IGRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1 MkNNdmIxX2NTXyg8MSB4IGk4PiwgPDEKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxp bmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zZGl2dTJDTXZiMl9jU18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMyB7Ci0rZGVmaW5l IGludGVybmFsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMl9j U18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMyB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGk4PiwgYWxp Z24gMgotICAgJTQgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwy IHggaTg+LCBhbGlnbiAyCi1AQCAtNjgwLDcgKzY4MCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MiB4 IGk4PiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkyRUVFdTJDTXZiVF9fY1MxX1MxX3Uy Q012Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjRf Y1NfKDw0IHggaTg+LCA8NCB4IGk4PikgIzUgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGk4PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjRfY1NfKDw0IHggaTg+LCA8NCB4IGk4 PikgIzUgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2Nh IDw0IHggaTg+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotQEAg LTgxOCw3ICs4MTgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTg+IEBfWk43ZGV0YWlsczEz X19pbXBsX2RpdnJlbUlMaTE2RUVFdTJDTXZiVF9fY1MxX1MxX3UyQwotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTg+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMzJfY1NfKDwzMiB4IGk4PiwgPDMy IHggaTg+KSAjMTEgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3NkaXZ1MkNNdmIzMl9jU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxMSB7Ci0g ICAlMyA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8MzIgeCBp OD4sIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi1AQCAtODY0 LDcgKzg2NCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MzIgeCBpOD4gQF9aTjdkZXRhaWxzMTNfX2lt cGxfZGl2cmVtSUxpMzJFRUV1MkNNdmJUX19jUzFfUzFfdTJDCi0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBzaWduZXh0IGk4IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtY2MoaTggc2lnbmV4dCwgaTggc2lnbmV4dCkgIzAg ewotK2RlZmluZSBpbnRlcm5hbCBzaWduZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z cmVtY2MoaTggc2lnbmV4dCwgaTggc2lnbmV4dCkgIzAgewotICAgJTMgPSBhbGxvY2EgaTgsIGFs aWduIDEKLSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8MSB4IGk4 PiwgYWxpZ24gMQotQEAgLTg5MCw3ICs4OTAsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIHNpZ25leHQg aTggQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1jYyhpOCBzaWduZXh0LCBpOCBzaWduZQot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29f bG9jYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxX2NTXyg8 MSB4IGk4PiwgPDEgeCBpOD4pICMwIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpOD4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxX2NTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMw IHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9jYSA8MSB4 IGk4PiwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLUBAIC05MDQs NyArOTA0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfc3JlbXUyQ012YjFfY1NfKDwxIHggaTg+LCA8MQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0 dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpOD4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX2NTXyg8MiB4IGk4PiwgPDIgeCBpOD4pICMz IHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Ny ZW11MkNNdmIyX2NTXyg8MiB4IGk4PiwgPDIgeCBpOD4pICMzIHsKLSAgICUzID0gYWxsb2NhIDwy IHggaTg+LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotICAgJTUg PSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLUBAIC05MTgsNyArOTE4LDcgQEAgZGVmaW5lIGRz b19sb2NhbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjJfY1Nf KDwyIHggaTg+LCA8MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2lu ZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Ny ZW11MkNNdmI0X2NTXyg8NCB4IGk4PiwgPDQgeCBpOD4pICM1IHsKLStkZWZpbmUgaW50ZXJuYWwg PDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X2NTXyg8NCB4IGk4 PiwgPDQgeCBpOD4pICM1IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci0gICAl NCA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDQgeCBpOD4sIGFs aWduIDQKLUBAIC05MzIsNyArOTMyLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8NCB4IGk4PiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfY1NfKDw0IHggaTg+LCA8NAotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwg PDggeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI4X2NTXyg8OCB4IGk4 PiwgPDggeCBpOD4pICM3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBpOD4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NyZW11MkNNdmI4X2NTXyg8OCB4IGk4PiwgPDggeCBpOD4pICM3IHsKLSAg ICUzID0gYWxsb2NhIDw4IHggaTg+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8OCB4IGk4Piwg YWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDggeCBpOD4sIGFsaWduIDgKLUBAIC05NDYsNyArOTQ2 LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8OCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf c3JlbXUyQ012YjhfY1NfKDw4IHggaTg+LCA8OAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBu b2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDE2IHggaTg+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfY1NfKDwxNiB4IGk4PiwgPDE2IHggaTg+KSAjOSB7 Ci0rZGVmaW5lIGludGVybmFsIDwxNiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3Jl bXUyQ012YjE2X2NTXyg8MTYgeCBpOD4sIDwxNiB4IGk4PikgIzkgewotICAgJTMgPSBhbGxvY2Eg PDE2IHggaTg+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxvY2EgPDE2IHggaTg+LCBhbGlnbiAxNgot ICAgJTUgPSBhbGxvY2EgPDE2IHggaTg+LCBhbGlnbiAxNgotQEAgLTk2MCw3ICs5NjAsNyBAQCBk ZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUy Q012YjE2X2NTXyg8MTYgeCBpOD4sCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5l IG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3NyZW11MkNNdmIzMl9jU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxMSB7Ci0rZGVm aW5lIGludGVybmFsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012 YjMyX2NTXyg8MzIgeCBpOD4sIDwzMiB4IGk4PikgIzExIHsKLSAgICUzID0gYWxsb2NhIDwzMiB4 IGk4PiwgYWxpZ24gMzIKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAgICU1 ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLUBAIC05NzQsNyArOTc0LDcgQEAgZGVmaW5l IGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIz Ml9jU18oPDMyIHggaTg+LAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vu d2luZAotLWRlZmluZSBkc29fbG9jYWwgc2lnbmV4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NkaXZzcyhpMTYgc2lnbmV4dCwgaTE2IHNpZ25leHQpICMzIHsKLStkZWZpbmUgaW50ZXJu YWwgc2lnbmV4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZzcyhpMTYgc2lnbmV4 dCwgaTE2IHNpZ25leHQpICMzIHsKLSAgICUzID0gYWxsb2NhIGkxNiwgYWxpZ24gMgotICAgJTQg PSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIK LUBAIC0xMDU4LDcgKzEwNTgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMTY+IEBfWk43ZGV0 YWlsczEzX19pbXBsX2RpdnJlbUlMaTFFRUV1MkNNdmJUX19zUzFfUzFfdTJDTQotIGRlY2xhcmUg PDEgeCBpMTY+IEBsbHZtLmdlbngucmRyZWdpb25pLnYxaTE2LnYxaTE2LmkxNig8MSB4IGkxNj4s IGkzMiwgaTMyLCBpMzIsIGkxNiwgaTMyKSAjMgotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5s aW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3NkaXZ1MkNNdmIxX3NTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzMgewotK2Rl ZmluZSBpbnRlcm5hbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNN dmIxX3NTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzMgewotICAgJTMgPSBhbGxvY2EgPDEgeCBp MTY+LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLSAgICU1ID0g YWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotQEAgLTEwNzQsNyArMTA3NCw3IEBAIGRlZmluZSBk c29fbG9jYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9z U18oPDEgeCBpMTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53 aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NkaXZ1MkNNdmIyX3NTXyg8MiB4IGkxNj4sIDwyIHggaTE2PikgIzUgewotK2RlZmluZSBpbnRl cm5hbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIyX3NTXyg8 MiB4IGkxNj4sIDwyIHggaTE2PikgIzUgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGln biA0Ci0gICAlNCA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwy IHggaTE2PiwgYWxpZ24gNAotQEAgLTExNDMsNyArMTE0Myw3IEBAIGRlZmluZSBpbnRlcm5hbCA8 MiB4IGkxNj4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMkVFRXUyQ012YlRfX3NTMV9T MV91MkNNCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCA8NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNN dmI0X3NTXyg8NCB4IGkxNj4sIDw0IHggaTE2PikgIzcgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4 IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmI0X3NTXyg8NCB4IGkxNj4s IDw0IHggaTE2PikgIzcgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAl NCA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDw0IHggaTE2Piwg YWxpZ24gOAotQEAgLTEzNTAsNyArMTM1MCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MTYgeCBpMTY+ IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTE2RUVFdTJDTXZiVF9fc1MxX1MxX3UyCi0g fQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19s b2NhbCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMzJfc1Nf KDwzMiB4IGkxNj4sIDwzMiB4IGkxNj4pICMxMyB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkx Nj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIzMl9zU18oPDMyIHggaTE2Piwg PDMyIHggaTE2PikgIzEzIHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0g ICAlNCA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotICAgJTUgPSBhbGxvY2EgPDMyIHgg aTE2PiwgYWxpZ24gNjQKLUBAIC0xNDE5LDcgKzE0MTksNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMy IHggaTE2PiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkzMkVFRXUyQ012YlRfX3NTMV9T MV91MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmlu ZSBkc29fbG9jYWwgc2lnbmV4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1zcyhp MTYgc2lnbmV4dCwgaTE2IHNpZ25leHQpICMzIHsKLStkZWZpbmUgaW50ZXJuYWwgc2lnbmV4dCBp MTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1zcyhpMTYgc2lnbmV4dCwgaTE2IHNpZ25l eHQpICMzIHsKLSAgICUzID0gYWxsb2NhIGkxNiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgaTE2 LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0xNDQ1LDcg KzE0NDUsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIHNpZ25leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zcmVtc3MoaTE2IHNpZ25leHQsIGkxNiBzaQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0 dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMTY+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9zU18oPDEgeCBpMTY+LCA8MSB4IGkxNj4p ICMzIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF9zcmVtdTJDTXZiMV9zU18oPDEgeCBpMTY+LCA8MSB4IGkxNj4pICMzIHsKLSAgICUzID0gYWxs b2NhIDwxIHggaTE2PiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAy Ci0gICAlNSA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0xNDU5LDcgKzE0NTksNyBA QCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3Jl bXUyQ012YjFfc1NfKDwxIHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lu bGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpMTY+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9zU18oPDIgeCBpMTY+LCA8MiB4IGkxNj4pICM1IHsKLStk ZWZpbmUgaW50ZXJuYWwgPDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJD TXZiMl9zU18oPDIgeCBpMTY+LCA8MiB4IGkxNj4pICM1IHsKLSAgICUzID0gYWxsb2NhIDwyIHgg aTE2PiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAlNSA9 IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLUBAIC0xNDczLDcgKzE0NzMsNyBAQCBkZWZpbmUg ZHNvX2xvY2FsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjJf c1NfKDwyIHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vu d2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF9zcmVtdTJDTXZiNF9zU18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICM3IHsKLStkZWZpbmUgaW50 ZXJuYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiNF9zU18o PDQgeCBpMTY+LCA8NCB4IGkxNj4pICM3IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTE2PiwgYWxp Z24gOAotICAgJTQgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8 NCB4IGkxNj4sIGFsaWduIDgKLUBAIC0xNDg3LDcgKzE0ODcsNyBAQCBkZWZpbmUgZHNvX2xvY2Fs IDw0IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfc1NfKDw0IHgg aTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRl ZmluZSBkc29fbG9jYWwgPDggeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJD TXZiOF9zU18oPDggeCBpMTY+LCA8OCB4IGkxNj4pICM5IHsKLStkZWZpbmUgaW50ZXJuYWwgPDgg eCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9zU18oPDggeCBpMTY+ LCA8OCB4IGkxNj4pICM5IHsKLSAgICUzID0gYWxsb2NhIDw4IHggaTE2PiwgYWxpZ24gMTYKLSAg ICU0ID0gYWxsb2NhIDw4IHggaTE2PiwgYWxpZ24gMTYKLSAgICU1ID0gYWxsb2NhIDw4IHggaTE2 PiwgYWxpZ24gMTYKLUBAIC0xNTAxLDcgKzE1MDEsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw4IHgg aTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012Yjhfc1NfKDw4IHggaTE2Piwg PAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBk c29fbG9jYWwgPDE2IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjE2 X3NTXyg8MTYgeCBpMTY+LCA8MTYgeCBpMTY+KSAjMTEgewotK2RlZmluZSBpbnRlcm5hbCA8MTYg eCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfc1NfKDwxNiB4IGkx Nj4sIDwxNiB4IGkxNj4pICMxMSB7Ci0gICAlMyA9IGFsbG9jYSA8MTYgeCBpMTY+LCBhbGlnbiAz MgotICAgJTQgPSBhbGxvY2EgPDE2IHggaTE2PiwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhIDwx NiB4IGkxNj4sIGFsaWduIDMyCi1AQCAtMTUxNSw3ICsxNTE1LDcgQEAgZGVmaW5lIGRzb19sb2Nh bCA8MTYgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfc1NfKDwx NiB4IGkxNj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1k ZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11 MkNNdmIzMl9zU18oPDMyIHggaTE2PiwgPDMyIHggaTE2PikgIzEzIHsKLStkZWZpbmUgaW50ZXJu YWwgPDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX3NTXyg8 MzIgeCBpMTY+LCA8MzIgeCBpMTY+KSAjMTMgewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTE2Piwg YWxpZ24gNjQKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNSA9IGFs bG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotQEAgLTE1MjksNyArMTUyOSw3IEBAIGRlZmluZSBk c29fbG9jYWwgPDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMy X3NTXyg8MzIgeCBpMTY+Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53 aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZp aShpMzIsIGkzMikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zZGl2aWkoaTMyLCBpMzIpICMxNCB7Ci0gICAlMyA9IGFsbG9jYSBpMzIsIGFsaWdu IDQKLSAgICU0ID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+ LCBhbGlnbiA0Ci1AQCAtMTczMCw3ICsxNzMwLDcgQEAgZGVmaW5lIGludGVybmFsIDwxIHggaTMy PiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkxRUVFdTJDTXZiVF9faVMxX1MxX3UyQ00K LSBkZWNsYXJlIDwxIHggaTMyPiBAbGx2bS5nZW54LnJkcmVnaW9uaS52MWkzMi52MWkzMi5pMTYo PDEgeCBpMzI+LCBpMzIsIGkzMiwgaTMyLCBpMTYsIGkzMikgIzIKLSAKLSA7IEZ1bmN0aW9uIEF0 dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4p ICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc2RpdnUyQ012YjFfaVNfKDwxIHggaTMyPiwgPDEgeCBpMzI+KSAjMTQgewotICAgJTMgPSBh bGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWdu IDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTE3NDYsNyArMTc0Niw3 IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z ZGl2dTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5v aW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIyX2lTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsK LStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2 dTJDTXZiMl9pU18oPDIgeCBpMzI+LCA8MiB4IGkzMj4pICMxNSB7Ci0gICAlMyA9IGFsbG9jYSA8 MiB4IGkzMj4sIGFsaWduIDgKLSAgICU0ID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotICAg JTUgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci1AQCAtMTkzMiw3ICsxOTMyLDcgQEAgZGVm aW5lIGludGVybmFsIDwyIHggaTMyPiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkyRUVF dTJDTXZiVF9faVMxX1MxX3UyQ00KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUg bm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfc2RpdnUyQ012YjRfaVNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewotK2RlZmlu ZSBpbnRlcm5hbCA8NCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmI0 X2lTXyg8NCB4IGkzMj4sIDw0IHggaTMyPikgIzE2IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTMy PiwgYWxpZ24gMTYKLSAgICU0ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAgICU1ID0g YWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLUBAIC0yNDkwLDcgKzI0OTAsNyBAQCBkZWZpbmUg aW50ZXJuYWwgPDE2IHggaTMyPiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkxNkVFRXUy Q012YlRfX2lTMV9TMV91MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vu d2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc2RpdnUyQ012YjMyX2lTXyg8MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAjMTkgewotK2RlZmlu ZSBpbnRlcm5hbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZi MzJfaVNfKDwzMiB4IGkzMj4sIDwzMiB4IGkzMj4pICMxOSB7Ci0gICAlMyA9IGFsbG9jYSA8MzIg eCBpMzI+LCBhbGlnbiAxMjgKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAot ICAgJTUgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci1AQCAtMjY3Niw3ICsyNjc2LDcg QEAgZGVmaW5lIGludGVybmFsIDwzMiB4IGkzMj4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVt SUxpMzJFRUV1MkNNdmJUX19pUzFfUzFfdTIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9p bmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIGkzMiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfc3JlbWlpKGkzMiwgaTMyKSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCBpMzIgQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NyZW1paShpMzIsIGkzMikgIzE0IHsKLSAgICUzID0gYWxsb2Nh IGkzMiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9j YSA8MSB4IGkzMj4sIGFsaWduIDQKLUBAIC0yNzAyLDcgKzI3MDIsNyBAQCBkZWZpbmUgZHNvX2xv Y2FsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbWlpKGkzMiwgaTMyKSAjMTQgewot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29f bG9jYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9pU18o PDEgeCBpMzI+LCA8MSB4IGkzMj4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTMyPiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfaVNfKDwxIHggaTMyPiwgPDEgeCBp MzI+KSAjMTQgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci0gICAlNCA9IGFs bG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24g NAotQEAgLTI3MTYsNyArMjcxNiw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8Ci0gfQotIAot IDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8 MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX2lTXyg8MiB4IGkz Mj4sIDwyIHggaTMyPikgIzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMzI+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9pU18oPDIgeCBpMzI+LCA8MiB4IGkzMj4pICMx NSB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLSAgICU0ID0gYWxsb2NhIDwy IHggaTMyPiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci1AQCAt MjczMCw3ICsyNzMwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX2lTXyg8MiB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5j dGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTMy PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfaVNfKDw0IHggaTMyPiwgPDQg eCBpMzI+KSAjMTYgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGkzMj4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3NyZW11MkNNdmI0X2lTXyg8NCB4IGkzMj4sIDw0IHggaTMyPikgIzE2IHsKLSAg ICUzID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAgICU0ID0gYWxsb2NhIDw0IHggaTMy PiwgYWxpZ24gMTYKLSAgICU1ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLUBAIC0yNzQ0 LDcgKzI3NDQsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc3JlbXUyQ012YjRfaVNfKDw0IHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9u IEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDggeCBpMzI+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9pU18oPDggeCBpMzI+LCA8OCB4IGkz Mj4pICMxNyB7Ci0rZGVmaW5lIGludGVybmFsIDw4IHggaTMyPiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfc3JlbXUyQ012YjhfaVNfKDw4IHggaTMyPiwgPDggeCBpMzI+KSAjMTcgewotICAgJTMg PSBhbGxvY2EgPDggeCBpMzI+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxvY2EgPDggeCBpMzI+LCBh bGlnbiAzMgotICAgJTUgPSBhbGxvY2EgPDggeCBpMzI+LCBhbGlnbiAzMgotQEAgLTI3NTgsNyAr Mjc1OCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDggeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zcmVtdTJDTXZiOF9pU18oPDggeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0 cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpMzI+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfaVNfKDwxNiB4IGkzMj4sIDwxNiB4IGkz Mj4pICMxOCB7Ci0rZGVmaW5lIGludGVybmFsIDwxNiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3NyZW11MkNNdmIxNl9pU18oPDE2IHggaTMyPiwgPDE2IHggaTMyPikgIzE4IHsKLSAg ICUzID0gYWxsb2NhIDwxNiB4IGkzMj4sIGFsaWduIDY0Ci0gICAlNCA9IGFsbG9jYSA8MTYgeCBp MzI+LCBhbGlnbiA2NAotICAgJTUgPSBhbGxvY2EgPDE2IHggaTMyPiwgYWxpZ24gNjQKLUBAIC0y NzcyLDcgKzI3NzIsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGkzMj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NyZW11MkNNdmIxNl9pU18oPDE2IHggaTMyPgotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTMy PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX2lTXyg8MzIgeCBpMzI+LCA8 MzIgeCBpMzI+KSAjMTkgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMzJfaVNfKDwzMiB4IGkzMj4sIDwzMiB4IGkzMj4pICMx OSB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLSAgICU0ID0gYWxsb2Nh IDwzMiB4IGkzMj4sIGFsaWduIDEyOAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24g MTI4Ci1AQCAtMjc4Niw3ICsyNzg2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMzI+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMzJfaVNfKDwzMiB4IGkzMj4KLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IHplcm9leHQgaTggQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZoaChpOCB6ZXJvZXh0LCBp OCB6ZXJvZXh0KSAjMjEgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGk4IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF91ZGl2aGgoaTggemVyb2V4dCwgaTggemVyb2V4dCkgIzIxIHsKLSAgICUz ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTUg PSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLUBAIC0yODQ0LDcgKzI4NDQsNyBAQCBkZWZpbmUg aW50ZXJuYWwgPDEgeCBpOD4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTFFRUV1MkNN dmJUX19oUzFfUzFfdTJDTQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vu d2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3VkaXZ1MkNNdmIxX2hTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMyMSB7Ci0rZGVmaW5lIGludGVy bmFsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV9oU18oPDEg eCBpOD4sIDwxIHggaTg+KSAjMjEgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEK LSAgICU0ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8MSB4IGk4 PiwgYWxpZ24gMQotQEAgLTI4NjAsNyArMjg2MCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBp OD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX2hTXyg8MSB4IGk4PiwgPDEK LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNv X2xvY2FsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMl9oU18o PDIgeCBpOD4sIDwyIHggaTg+KSAjMjIgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGk4PiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjJfaFNfKDwyIHggaTg+LCA8MiB4IGk4Pikg IzIyIHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSA8 MiB4IGk4PiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLUBAIC0y OTA2LDcgKzI5MDYsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDIgeCBpOD4gQF9aTjdkZXRhaWxzMTRf X2ltcGxfdWRpdnJlbUlMaTJFRUV1MkNNdmJUX19oUzFfUzFfdTJDTQotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpOD4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmI0X2hTXyg8NCB4IGk4PiwgPDQgeCBp OD4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91ZGl2dTJDTXZiNF9oU18oPDQgeCBpOD4sIDw0IHggaTg+KSAjMTQgewotICAgJTMgPSBh bGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0 Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotQEAgLTMwNDQsNyArMzA0NCw3IEBA IGRlZmluZSBpbnRlcm5hbCA8MTYgeCBpOD4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlM aTE2RUVFdTJDTXZiVF9faFMxX1MxX3UyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5s aW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3VkaXZ1MkNNdmIzMl9oU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxNyB7Ci0r ZGVmaW5lIGludGVybmFsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUy Q012YjMyX2hTXyg8MzIgeCBpOD4sIDwzMiB4IGk4PikgIzE3IHsKLSAgICUzID0gYWxsb2NhIDwz MiB4IGk4PiwgYWxpZ24gMzIKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAg ICU1ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLUBAIC0zMDkwLDcgKzMwOTAsNyBAQCBk ZWZpbmUgaW50ZXJuYWwgPDMyIHggaTg+IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkz MkVFRXUyQ012YlRfX2hTMV9TMV91MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGlu ZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgemVyb2V4dCBpOCBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdXJlbWhoKGk4IHplcm9leHQsIGk4IHplcm9leHQpICMyMSB7Ci0rZGVmaW5lIGlu dGVybmFsIHplcm9leHQgaTggQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW1oaChpOCB6ZXJv ZXh0LCBpOCB6ZXJvZXh0KSAjMjEgewotICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0 ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQot QEAgLTMxMTYsNyArMzExNiw3IEBAIGRlZmluZSBkc29fbG9jYWwgemVyb2V4dCBpOCBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfdXJlbWhoKGk4IHplcm9leHQsIGk4IHplcm9lCi0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4 IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjFfaFNfKDwxIHggaTg+LCA8 MSB4IGk4PikgIzIxIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3VyZW11MkNNdmIxX2hTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMyMSB7Ci0gICAl MyA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgPDEgeCBpOD4sIGFs aWduIDEKLSAgICU1ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi1AQCAtMzEzMCw3ICszMTMw LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf dXJlbXUyQ012YjFfaFNfKDwxIHggaTg+LCA8MQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBu b2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX2hTXyg8MiB4IGk4PiwgPDIgeCBpOD4pICMyMiB7Ci0r ZGVmaW5lIGludGVybmFsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJD TXZiMl9oU18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMjIgewotICAgJTMgPSBhbGxvY2EgPDIgeCBp OD4sIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0gICAlNSA9IGFs bG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotQEAgLTMxNDQsNyArMzE0NCw3IEBAIGRlZmluZSBkc29f bG9jYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX2hTXyg8 MiB4IGk4PiwgPDIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQK LS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVt dTJDTXZiNF9oU18oPDQgeCBpOD4sIDw0IHggaTg+KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCA8 NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfaFNfKDw0IHggaTg+ LCA8NCB4IGk4PikgIzE0IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci0gICAl NCA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDQgeCBpOD4sIGFs aWduIDQKLUBAIC0zMTU4LDcgKzMxNTgsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw0IHggaTg+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF9oU18oPDQgeCBpOD4sIDw0Ci0gfQot IAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2Nh bCA8OCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfaFNfKDw4IHgg aTg+LCA8OCB4IGk4PikgIzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBpOD4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X2hTXyg8OCB4IGk4PiwgPDggeCBpOD4pICMxNSB7 Ci0gICAlMyA9IGFsbG9jYSA8OCB4IGk4PiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDggeCBp OD4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDw4IHggaTg+LCBhbGlnbiA4Ci1AQCAtMzE3Miw3 ICszMTcyLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8OCB4IGk4PiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfdXJlbXUyQ012YjhfaFNfKDw4IHggaTg+LCA8OAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0 dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDE2IHggaTg+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMTZfaFNfKDwxNiB4IGk4PiwgPDE2IHggaTg+ KSAjMTYgewotK2RlZmluZSBpbnRlcm5hbCA8MTYgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3VyZW11MkNNdmIxNl9oU18oPDE2IHggaTg+LCA8MTYgeCBpOD4pICMxNiB7Ci0gICAlMyA9 IGFsbG9jYSA8MTYgeCBpOD4sIGFsaWduIDE2Ci0gICAlNCA9IGFsbG9jYSA8MTYgeCBpOD4sIGFs aWduIDE2Ci0gICAlNSA9IGFsbG9jYSA8MTYgeCBpOD4sIGFsaWduIDE2Ci1AQCAtMzE4Niw3ICsz MTg2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3VyZW11MkNNdmIxNl9oU18oPDE2IHggaTg+LAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJz OiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTg+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMzJfaFNfKDwzMiB4IGk4PiwgPDMyIHggaTg+KSAj MTcgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3VyZW11MkNNdmIzMl9oU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxNyB7Ci0gICAlMyA9IGFs bG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWdu IDMyCi0gICAlNSA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi1AQCAtMzIwMCw3ICszMjAw LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3VyZW11MkNNdmIzMl9oU18oPDMyIHggaTg+LAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBu b2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgemVyb2V4dCBpMTYgQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VkaXZ0dChpMTYgemVyb2V4dCwgaTE2IHplcm9leHQpICMyMiB7Ci0r ZGVmaW5lIGludGVybmFsIHplcm9leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2 dHQoaTE2IHplcm9leHQsIGkxNiB6ZXJvZXh0KSAjMjIgewotICAgJTMgPSBhbGxvY2EgaTE2LCBh bGlnbiAyCi0gICAlNCA9IGFsbG9jYSBpMTYsIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwxIHgg aTE2PiwgYWxpZ24gMgotQEAgLTMyNzgsNyArMzI3OCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MSB4 IGkxNj4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTFFRUV1MkNNdmJUX190UzFfUzFf dTJDCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIx X3RTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzIyIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBp MTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV90U18oPDEgeCBpMTY+LCA8 MSB4IGkxNj4pICMyMiB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLSAgICU0 ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDEgeCBpMTY+LCBh bGlnbiAyCi1AQCAtMzI5NCw3ICszMjk0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX3RTXyg8MSB4IGkxNj4sIDwKLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xv Y2FsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjJfdFNfKDwy IHggaTE2PiwgPDIgeCBpMTY+KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkxNj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIyX3RTXyg8MiB4IGkxNj4sIDwyIHggaTE2 PikgIzE0IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotICAgJTQgPSBhbGxv Y2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQK LUBAIC0zMzYwLDcgKzMzNjAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMTY+IEBfWk43ZGV0 YWlsczE0X19pbXBsX3VkaXZyZW1JTGkyRUVFdTJDTXZiVF9fdFMxX1MxX3UyQwotIH0KLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQg eCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiNF90U18oPDQgeCBpMTY+ LCA8NCB4IGkxNj4pICMxNSB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTE2PiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjRfdFNfKDw0IHggaTE2PiwgPDQgeCBpMTY+KSAjMTUg ewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8NCB4 IGkxNj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotQEAgLTM1 NTgsNyArMzU1OCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MTYgeCBpMTY+IEBfWk43ZGV0YWlsczE0 X19pbXBsX3VkaXZyZW1JTGkxNkVFRXUyQ012YlRfX3RTMV9TMV91Ci0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMTY+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMzJfdFNfKDwzMiB4IGkxNj4sIDwz MiB4IGkxNj4pICMxOCB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIzMl90U18oPDMyIHggaTE2PiwgPDMyIHggaTE2PikgIzE4 IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNCA9IGFsbG9jYSA8 MzIgeCBpMTY+LCBhbGlnbiA2NAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQK LUBAIC0zNjI0LDcgKzM2MjQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTE2PiBAX1pON2Rl dGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMzJFRUV1MkNNdmJUX190UzFfUzFfdQotIH0KLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgemVy b2V4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW10dChpMTYgemVyb2V4dCwgaTE2 IHplcm9leHQpICMyMiB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTE2IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF91cmVtdHQoaTE2IHplcm9leHQsIGkxNiB6ZXJvZXh0KSAjMjIgewotICAg JTMgPSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSBpMTYsIGFsaWduIDIKLSAg ICU1ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotQEAgLTM2NTAsNyArMzY1MCw3IEBAIGRl ZmluZSBkc29fbG9jYWwgemVyb2V4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW10 dChpMTYgemVyb2V4dCwgaTE2IHplCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5l IG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3VyZW11MkNNdmIxX3RTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzIyIHsKLStkZWZp bmUgaW50ZXJuYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZi MV90U18oPDEgeCBpMTY+LCA8MSB4IGkxNj4pICMyMiB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkx Nj4sIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotICAgJTUgPSBh bGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi1AQCAtMzY2NCw3ICszNjY0LDcgQEAgZGVmaW5lIGRz b19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX3RT Xyg8MSB4IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndp bmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf dXJlbXUyQ012YjJfdFNfKDwyIHggaTE2PiwgPDIgeCBpMTY+KSAjMTQgewotK2RlZmluZSBpbnRl cm5hbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX3RTXyg8 MiB4IGkxNj4sIDwyIHggaTE2PikgIzE0IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTE2PiwgYWxp Z24gNAotICAgJTQgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8 MiB4IGkxNj4sIGFsaWduIDQKLUBAIC0zNjc4LDcgKzM2NzgsNyBAQCBkZWZpbmUgZHNvX2xvY2Fs IDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfdFNfKDwyIHgg aTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRl ZmluZSBkc29fbG9jYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJD TXZiNF90U18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICMxNSB7Ci0rZGVmaW5lIGludGVybmFsIDw0 IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfdFNfKDw0IHggaTE2 PiwgPDQgeCBpMTY+KSAjMTUgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0g ICAlNCA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDw0IHggaTE2 PiwgYWxpZ24gOAotQEAgLTM2OTIsNyArMzY5Miw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDQgeCBp MTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF90U18oPDQgeCBpMTY+LCA8 Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRz b19sb2NhbCA8OCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X3RT Xyg8OCB4IGkxNj4sIDw4IHggaTE2PikgIzE2IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBpMTY+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiOF90U18oPDggeCBpMTY+LCA8OCB4 IGkxNj4pICMxNiB7Ci0gICAlMyA9IGFsbG9jYSA8OCB4IGkxNj4sIGFsaWduIDE2Ci0gICAlNCA9 IGFsbG9jYSA8OCB4IGkxNj4sIGFsaWduIDE2Ci0gICAlNSA9IGFsbG9jYSA8OCB4IGkxNj4sIGFs aWduIDE2Ci1AQCAtMzcwNiw3ICszNzA2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkxNj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X3RTXyg8OCB4IGkxNj4sIDwKLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xv Y2FsIDwxNiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl90U18o PDE2IHggaTE2PiwgPDE2IHggaTE2PikgIzE3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTE2 PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X3RTXyg8MTYgeCBpMTY+LCA8 MTYgeCBpMTY+KSAjMTcgewotICAgJTMgPSBhbGxvY2EgPDE2IHggaTE2PiwgYWxpZ24gMzIKLSAg ICU0ID0gYWxsb2NhIDwxNiB4IGkxNj4sIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8MTYgeCBp MTY+LCBhbGlnbiAzMgotQEAgLTM3MjAsNyArMzcyMCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDE2 IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X3RTXyg8MTYgeCBp MTY+Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZi MzJfdFNfKDwzMiB4IGkxNj4sIDwzMiB4IGkxNj4pICMxOCB7Ci0rZGVmaW5lIGludGVybmFsIDwz MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl90U18oPDMyIHgg aTE2PiwgPDMyIHggaTE2PikgIzE4IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWdu IDY0Ci0gICAlNCA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotICAgJTUgPSBhbGxvY2Eg PDMyIHggaTE2PiwgYWxpZ24gNjQKLUBAIC0zNzM0LDcgKzM3MzQsNyBAQCBkZWZpbmUgZHNvX2xv Y2FsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl90U18o PDMyIHggaTE2PgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAot LWRlZmluZSBkc29fbG9jYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2amooaTMy LCBpMzIpICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfdWRpdmpqKGkzMiwgaTMyKSAjMTQgewotICAgJTMgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0g ICAlNCA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxp Z24gNAotQEAgLTM4OTIsNyArMzg5Miw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MSB4IGkzMj4gQF9a TjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTFFRUV1MkNNdmJUX19qUzFfUzFfdTJDCi0gfQot IAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2Nh bCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX2pTXyg8MSB4 IGkzMj4sIDwxIHggaTMyPikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMzI+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV9qU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4p ICMxNCB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2Nh IDwxIHggaTMyPiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci1A QCAtMzkwOCw3ICszOTA4LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX2pTXyg8MSB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBG dW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHgg aTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjJfalNfKDwyIHggaTMyPiwg PDIgeCBpMzI+KSAjMTUgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIyX2pTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsK LSAgICUzID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDIgeCBp MzI+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLUBAIC00MDU0 LDcgKzQwNTQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMzI+IEBfWk43ZGV0YWlsczE0X19p bXBsX3VkaXZyZW1JTGkyRUVFdTJDTXZiVF9falMxX1MxX3UyQwotIH0KLSAKLSA7IEZ1bmN0aW9u IEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpMzI+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiNF9qU18oPDQgeCBpMzI+LCA8NCB4IGkz Mj4pICMxNiB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfdWRpdnUyQ012YjRfalNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewotICAgJTMg PSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxvY2EgPDQgeCBpMzI+LCBh bGlnbiAxNgotICAgJTUgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotQEAgLTQ0OTIsNyAr NDQ5Miw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MTYgeCBpMzI+IEBfWk43ZGV0YWlsczE0X19pbXBs X3VkaXZyZW1JTGkxNkVFRXUyQ012YlRfX2pTMV9TMV91Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0 cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMzI+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMzJfalNfKDwzMiB4IGkzMj4sIDwzMiB4IGkz Mj4pICMxOSB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3VkaXZ1MkNNdmIzMl9qU18oPDMyIHggaTMyPiwgPDMyIHggaTMyPikgIzE5IHsKLSAg ICUzID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotICAgJTQgPSBhbGxvY2EgPDMyIHgg aTMyPiwgYWxpZ24gMTI4Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLUBA IC00NjM4LDcgKzQ2MzgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTMyPiBAX1pON2RldGFp bHMxNF9faW1wbF91ZGl2cmVtSUxpMzJFRUV1MkNNdmJUX19qUzFfUzFfdQotIH0KLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgaTMyIEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtamooaTMyLCBpMzIpICMxNCB7Ci0rZGVmaW5lIGlu dGVybmFsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbWpqKGkzMiwgaTMyKSAjMTQg ewotICAgJTMgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSBpMzIsIGFsaWdu IDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTQ2NjQsNyArNDY2NCw3 IEBAIGRlZmluZSBkc29fbG9jYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtamoo aTMyLCBpMzIpICMxNCB7Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53 aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3VyZW11MkNNdmIxX2pTXyg8MSB4IGkzMj4sIDwxIHggaTMyPikgIzE0IHsKLStkZWZpbmUgaW50 ZXJuYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMV9qU18o PDEgeCBpMzI+LCA8MSB4IGkzMj4pICMxNCB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkzMj4sIGFs aWduIDQKLSAgICU0ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2Eg PDEgeCBpMzI+LCBhbGlnbiA0Ci1AQCAtNDY3OCw3ICs0Njc4LDcgQEAgZGVmaW5lIGRzb19sb2Nh bCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX2pTXyg8MSB4 IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1k ZWZpbmUgZHNvX2xvY2FsIDwyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUy Q012YjJfalNfKDwyIHggaTMyPiwgPDIgeCBpMzI+KSAjMTUgewotK2RlZmluZSBpbnRlcm5hbCA8 MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX2pTXyg8MiB4IGkz Mj4sIDwyIHggaTMyPikgIzE1IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAot ICAgJTQgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkz Mj4sIGFsaWduIDgKLUBAIC00NjkyLDcgKzQ2OTIsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwyIHgg aTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfalNfKDwyIHggaTMyPiwg PAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBk c29fbG9jYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF9q U18oPDQgeCBpMzI+LCA8NCB4IGkzMj4pICMxNiB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTMy PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfalNfKDw0IHggaTMyPiwgPDQg eCBpMzI+KSAjMTYgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotICAgJTQg PSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotICAgJTUgPSBhbGxvY2EgPDQgeCBpMzI+LCBh bGlnbiAxNgotQEAgLTQ3MDYsNyArNDcwNiw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDQgeCBpMzI+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF9qU18oPDQgeCBpMzI+LCA8Ci0g fQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19s b2NhbCA8OCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X2pTXyg8 OCB4IGkzMj4sIDw4IHggaTMyPikgIzE3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBpMzI+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiOF9qU18oPDggeCBpMzI+LCA8OCB4IGkz Mj4pICMxNyB7Ci0gICAlMyA9IGFsbG9jYSA8OCB4IGkzMj4sIGFsaWduIDMyCi0gICAlNCA9IGFs bG9jYSA8OCB4IGkzMj4sIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8OCB4IGkzMj4sIGFsaWdu IDMyCi1AQCAtNDcyMCw3ICs0NzIwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X2pTXyg8OCB4IGkzMj4sIDwKLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDwxNiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl9qU18oPDE2 IHggaTMyPiwgPDE2IHggaTMyPikgIzE4IHsKLStkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTMyPiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X2pTXyg8MTYgeCBpMzI+LCA8MTYg eCBpMzI+KSAjMTggewotICAgJTMgPSBhbGxvY2EgPDE2IHggaTMyPiwgYWxpZ24gNjQKLSAgICU0 ID0gYWxsb2NhIDwxNiB4IGkzMj4sIGFsaWduIDY0Ci0gICAlNSA9IGFsbG9jYSA8MTYgeCBpMzI+ LCBhbGlnbiA2NAotQEAgLTQ3MzQsNyArNDczNCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDE2IHgg aTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X2pTXyg8MTYgeCBpMzI+ Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRz b19sb2NhbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMzJf alNfKDwzMiB4IGkzMj4sIDwzMiB4IGkzMj4pICMxOSB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4 IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl9qU18oPDMyIHggaTMy PiwgPDMyIHggaTMyPikgIzE5IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEy OAotICAgJTQgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci0gICAlNSA9IGFsbG9jYSA8 MzIgeCBpMzI+LCBhbGlnbiAxMjgKLUBAIC00NzQ4LDcgKzQ3NDgsNyBAQCBkZWZpbmUgZHNvX2xv Y2FsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl9qU18o PDMyIHggaTMyPgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAot LWRlZmluZSBkc29fbG9jYWwgdm9pZCBAX19kb19wcmludF9jbShpOCosIGk4KiwgaTMyLCBpNjQs IGkzMiosIGkzMiwgaTMyKSAjMjMgIWRiZyAhMTUgewotK2RlZmluZSBpbnRlcm5hbCB2b2lkIEBf X2RvX3ByaW50X2NtKGk4KiwgaTgqLCBpMzIsIGk2NCwgaTMyKiwgaTMyLCBpMzIpICMyMyAhZGJn ICExNSB7Ci0gICAlOCA9IGFsbG9jYSBpOCosIGFsaWduIDQKLSAgICU5ID0gYWxsb2NhIGk4Kiwg YWxpZ24gNAotICAgJTEwID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotQEAgLTQ5ODgsNyArNDk4OCw3 IEBAIGRlZmluZSBpbnRlcm5hbCB2b2lkIEBfWk43ZGV0YWlsczE2X2NtX3ByaW50X2Zvcm1hdElM aTEyOEVFRXYxNWNtX3N1cmZhY2VpbmRleGp1Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5v aW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCB2b2lkIEBfX2RvX3ByaW50X2x6KGkz MiwgaTgqLCBpMzIsIGk2NCwgaTMyKiwgaTMyLCBpMzIsIGkzMiwgaTMyKSAjMjYgIWRiZyAhMTE3 IHsKLStkZWZpbmUgaW50ZXJuYWwgdm9pZCBAX19kb19wcmludF9seihpMzIsIGk4KiwgaTMyLCBp NjQsIGkzMiosIGkzMiwgaTMyLCBpMzIsIGkzMikgIzI2ICFkYmcgITExNyB7Ci0gICAlMTAgPSBh bGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAlMTEgPSBhbGxvY2EgaTgqLCBhbGlnbiA0Ci0gICAlMTIg PSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci1AQCAtNTA2OSw3ICs1MDY5LDcgQEAgZGVmaW5lIGRzb19s b2NhbCB2b2lkIEBfX2RvX3ByaW50X2x6KGkzMiwgaTgqLCBpMzIsIGk2NCwgaTMyKiwgaTMyLCBp MzIsIGkzMiwgaTMKLSAgICU2NyA9IGxvYWQgaTY0LCBpNjQqICUxMywgYWxpZ24gOCwgIWRiZyAh MTU5LCAhdGJhYSAhMTkKLSAgICU2OCA9IGxvYWQgPDUgeCBpMzI+LCA8NSB4IGkzMj4qICUyMSwg YWxpZ24gMzIsICFkYmcgITE2MCwgIXRiYWEgITcKLSAgIGNhbGwgdm9pZCBAX1pOMTNWYXJ5aW5n V3JpdGVyQzJFUmpSUEtqaXl1MkNNdmI1X2koJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUyMywgaTMy KiBkZXJlZmVyZW5jZWFibGUoNCkgJTE5LCBpMzIqKiBkZXJlZmVyZW5jZWFibGUoNCkgJTE0LCBp MzIgJTY2LCBpNjQgJTY3LCA8NSB4IGkzMj4gJTY4KSwgIWRiZyAhMTYxCi0tICAlNjkgPSBjYWxs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm8xNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRl cjEzVmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0ICU2MiwgJWNs YXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUyMiwgJWNsYXNzLlZhcnlpbmdXcml0 ZXIqIGJ5dmFsIGFsaWduIDMyICUyMyksICFkYmcgITE2MgotKyAgJTY5ID0gY2FsbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIxM1Zhcnlp bmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAlNjIsICVjbGFzcy5Vbmlm b3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTIyLCAlY2xh c3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyICUy MyksICFkYmcgITE2MgotICAgYnIgbGFiZWwgJTcwLCAhZGJnICExNjMKLSAKLSA7IDxsYWJlbD46 NzA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNjAKLUBA IC01MTg3LDcgKzUxODcsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDUgeCBpMzI+IEBfWjE3Z2V0X2F1 eGlsaWFyeV9zdHJ2KCkgIzI4IGNvbWRhdCAhZGJnICExNzggewotIH0KLSAKLSA7IEZ1bmN0aW9u IEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0 ZXIxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCwgJWNsYXNz LlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2 YWwgYWxpZ24gMzIpICMyNSBjb21kYXQgIWRiZyAhMTkxIHsKLStkZWZpbmUgaW50ZXJuYWwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyMTNW YXJ5aW5nV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlm b3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIsICVjbGFzcy5W YXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIpICMyNSBj b21kYXQgIWRiZyAhMTkxIHsKLSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNSA9IGFs bG9jYSAlY2xhc3MuVW5pZm9ybVdyaXRlciwgYWxpZ24gMzIKLSAgICU2ID0gYWxsb2NhICVjbGFz cy5WYXJ5aW5nV3JpdGVyLCBhbGlnbiAzMgotQEAgLTUxOTYsNyArNTE5Niw3IEBAIGRlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZv cm1Xcml0ZXIxM1ZhcnlpCi0gICAlOCA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICU1 IHRvIGk4KiwgIWRiZyAhMTk2Ci0gICAlOSA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIq ICUxIHRvIGk4KiwgIWRiZyAhMTk2Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBp OC5pMzIoaTgqIGFsaWduIDMyICU4LCBpOCogYWxpZ24gMzIgJTksIGkzMiA2NCwgaTEgZmFsc2Up LCAhZGJnICExOTYsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMTAgPSBjYWxsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFVuaWZvcm1JMTNVbmlmb3JtV3JpdGVyRUVi TlNfOEVuY29kaW5nRVRfKGk4IHNpZ25leHQgJTcsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZh bCBhbGlnbiAzMiAlNSksICFkYmcgITE5OAotKyAgJTEwID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlmb3JtSTEzVW5pZm9ybVdyaXRlckVFYk5TXzhF bmNvZGluZ0VUXyhpOCBzaWduZXh0ICU3LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNs YXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICU1KSwgIWRiZyAhMTk4Ci0gICBiciBpMSAlMTAs IGxhYmVsICUxNiwgbGFiZWwgJTExLCAhZGJnICExOTkKLSAKLSA7IDxsYWJlbD46MTE6ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMwotQEAgLTUyMDQsNyAr NTIwNCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0 Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIxM1ZhcnlpCi0gICAlMTMgPSBiaXRjYXN0ICVjbGFz cy5WYXJ5aW5nV3JpdGVyKiAlNiB0byBpOCosICFkYmcgITIwMQotICAgJTE0ID0gYml0Y2FzdCAl Y2xhc3MuVmFyeWluZ1dyaXRlciogJTIgdG8gaTgqLCAhZGJnICEyMDEKLSAgIGNhbGwgdm9pZCBA bGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTEzLCBpOCogYWxpZ24gMzIg JTE0LCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMjAxLCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAg JTE1ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRWYXJ5 aW5nSTEzVmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0ICUxMiwgJWNs YXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU2KSwgIWRiZyAhMjAyCi0rICAlMTUg PSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFZhcnlpbmdJ MTNWYXJ5aW5nV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfKGk4IHNpZ25leHQgJTEyLCAlY2xhc3Mu VmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyICU2KSwg IWRiZyAhMjAyCi0gICBiciBsYWJlbCAlMTYsICFkYmcgITE5OQotIAotIDsgPGxhYmVsPjoxNjog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUxMSwgJTMKLUBA IC01Mjc5LDcgKzUyNzksNyBAQCBkZWZpbmUgaW50ZXJuYWwgdm9pZCBAX1pOMTNWYXJ5aW5nV3Jp dGVyQzJFUmpSUEtqaXl1MkNNdmI1X2koJWNsYXNzLlZhcnlpbmdXcml0ZQotIH0KLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgaTMyIEBf X251bV9jb3JlcygpICMyOSAhZGJnICEyMzYgewotK2RlZmluZSBpbnRlcm5hbCBpMzIgQF9fbnVt X2NvcmVzKCkgIzI5ICFkYmcgITIzNiB7Ci0gICByZXQgaTMyIC0xLCAhZGJnICEyMzcKLSB9Ci0g Ci1AQCAtODg2MCw3ICs4ODYwLDcgQEAgZGVjbGFyZSBkc29fbG9jYWwgdm9pZCBAX1pON2RldGFp bHMzN19fY21faW50cmluc2ljX2ltcGxfc3ZtX3NjYXR0ZXJfd3JpdGVJaUxpMUUKLSBkZWNsYXJl IHZvaWQgQGxsdm0uZ2VueC5zdm0uc2NhdHRlci52MWkxLnYxaTY0LnYxaTMyKDwxIHggaTE+LCBp MzIsIDwxIHggaTY0PiwgPDEgeCBpMzI+KSAjMjcKLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdh eXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlmb3JtSTEzVW5pZm9ybVdyaXRlckVF Yk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwg YWxpZ24gMzIpICMyNSBjb21kYXQgIWRiZyAhMTY0NSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFVuaWZvcm1JMTNVbmlmb3JtV3Jp dGVyRUViTlNfOEVuY29kaW5nRVRfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBi eXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIpICMyNSBjb21kYXQgIWRiZyAhMTY0 NSB7Ci0gICAlMyA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgJWNsYXNzLlVu aWZvcm1Xcml0ZXIsIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSAlInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFVuaWZvcm0iLCBhbGlnbiAxCi1AQCAtODg2OSw3ICs4ODY5LDcgQEAgZGVmaW5l IGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFVuaWZv cm1JMTNVbmlmb3JtV3JpdGUKLSAgICU3ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciog JTQgdG8gaTgqLCAhZGJnICExNjQ3Ci0gICAlOCA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0 ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTY0NwotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4 LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAlNywgaTgqIGFsaWduIDMyICU4LCBpMzIgNjQsIGkxIGZh bHNlKSwgIWRiZyAhMTY0NywgIXRiYWEuc3RydWN0ICExOTcKLS0gICU5ID0gY2FsbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVy TlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0ICU2 LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTQsICUic3RydWN0LlByaW50 SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTUpLCAhZGJnICExNjQ4Ci0r ICAlOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29k aW5nSTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdF VF9UMF8oaTggc2lnbmV4dCAlNiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5V bmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlNCwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRV bmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxp Z24gMSAlNSksICFkYmcgITE2NDgKLSAgIHJldCBpMSAlOSwgIWRiZyAhMTY0OQotIH0KLSAKLUBA IC04ODc3LDcgKzg4NzcsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VW5pZm9ybUkxM1VuaWZvcm1Xcml0ZQotIGRlY2xhcmUgdm9p ZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogbm9jYXB0dXJlIHdyaXRlb25seSwgaTgq IG5vY2FwdHVyZSByZWFkb25seSwgaTMyLCBpMSkgIzMyCi0gCi0gOyBGdW5jdGlvbiBBdHRyczog YWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VmFyeWluZ0kxM1ZhcnlpbmdXcml0 ZXJFRWJOU184RW5jb2RpbmdFVF8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5 dmFsIGFsaWduIDMyKSAjMjUgY29tZGF0ICFkYmcgITE2NTAgewotK2RlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRWYXJ5aW5nSTEzVmFyeWlu Z1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRl ciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyKSAjMjUgY29tZGF0ICFkYmcg ITE2NTAgewotICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhICVjbGFz cy5WYXJ5aW5nV3JpdGVyLCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2EgJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRWYXJ5aW5nIiwgYWxpZ24gMQotQEAgLTg4ODYsMTIgKzg4ODYsMTIgQEAg ZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5n NFZhcnlpbmdJMTNWYXJ5aW5nV3JpdGUKLSAgICU3ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dy aXRlciogJTQgdG8gaTgqLCAhZGJnICExNjUyCi0gICAlOCA9IGJpdGNhc3QgJWNsYXNzLlZhcnlp bmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTY1MgotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNw eS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAlNywgaTgqIGFsaWduIDMyICU4LCBpMzIgNjQs IGkxIGZhbHNlKSwgIWRiZyAhMTY1MiwgIXRiYWEuc3RydWN0ICExOTcKLS0gICU5ID0gY2FsbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5n V3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWdu ZXh0ICU2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTQsICUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEgJTUpLCAhZGJnICEx NjUzCi0rICAlOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRj aEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5j b2RpbmdFVF9UMF8oaTggc2lnbmV4dCAlNiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVj bGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlNCwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5n IikgYWxpZ24gMSAlNSksICFkYmcgITE2NTMKLSAgIHJldCBpMSAlOSwgIWRiZyAhMTY1NAotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAot LWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNo RW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNv ZGluZ0VUX1QwXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24g MzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEp ICMyNSBjb21kYXQgIWRiZyAhMTY1NSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9a TjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXJOU18xNkVu Y29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQsICVjbGFzcy5V bmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIsICUic3Ry dWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5m bzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMTY1NSB7Ci0g ICAlNCA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgJWNsYXNzLlVuaWZvcm1X cml0ZXIsIGFsaWduIDMyCi0gICAlNiA9IGFsbG9jYSAlInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFVuaWZvcm0iLCBhbGlnbiAxCi1AQCAtODkxNCw3ICs4OTE0LDcgQEAgZGVmaW5lIGludGVy bmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1Vu aWZvcm1Xcml0ZXIKLSAgICUyMiA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICU1IHRv IGk4KiwgIWRiZyAhMTY1NwotICAgJTIzID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciog JTEgdG8gaTgqLCAhZGJnICExNjU3Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBp OC5pMzIoaTgqIGFsaWduIDMyICUyMiwgaTgqIGFsaWduIDMyICUyMywgaTMyIDY0LCBpMSBmYWxz ZSksICFkYmcgITE2NTcsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMjQgPSBjYWxsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVW5pZm9y bVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNp Z25leHQgJTIxLCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTUsICUic3Ry dWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTYpLCAhZGJn ICExNjU4Ci0rICAlMjQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFh cHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9y bUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTIxLCAlY2xhc3MuVW5pZm9ybVdy aXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICU1LCAlInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICU2KSwgIWRiZyAhMTY1OAotICAgYnIgaTEgJTI0LCBs YWJlbCAlNjAsIGxhYmVsICUyNSwgIWRiZyAhMTY1OQotIAotIDsgPGxhYmVsPjoyNTogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUzCi1AQCAtODkyMiw3ICs4 OTIyLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIKLSAgICUyNyA9IGJpdGNhc3QgJWNsYXNz LlVuaWZvcm1Xcml0ZXIqICU3IHRvIGk4KiwgIWRiZyAhMTY2MQotICAgJTI4ID0gYml0Y2FzdCAl Y2xhc3MuVW5pZm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjYxCi0gICBjYWxsIHZvaWQg QGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICUyNywgaTgqIGFsaWduIDMy ICUyOCwgaTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITE2NjEsICF0YmFhLnN0cnVjdCAhMTk3Ci0t ICAlMjkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJv cGVyRW5jb2RpbmdJaTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184 RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTI2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2 YWwgYWxpZ24gMzIgJTcsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5 dmFsIGFsaWduIDEgJTgpLCAhZGJnICExNjYyCi0rICAlMjkgPSBjYWxsIHplcm9leHQgaTEgQF9a TjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVW5pZm9ybVdyaXRl ck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQg JTI2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFs aWduIDMyICU3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCgl InN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICU4KSwgIWRiZyAh MTY2MgotICAgYnIgaTEgJTI5LCBsYWJlbCAlNjAsIGxhYmVsICUzMCwgIWRiZyAhMTY2MwotIAot IDsgPGxhYmVsPjozMDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVk cyA9ICUyNQotQEAgLTg5MzAsNyArODkzMCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0g ICAlMzIgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlOSB0byBpOCosICFkYmcgITE2 NjUKLSAgICUzMyA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICUxIHRvIGk4KiwgIWRi ZyAhMTY2NQotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGln biAzMiAlMzIsIGk4KiBhbGlnbiAzMiAlMzMsIGkzMiA2NCwgaTEgZmFsc2UpLCAhZGJnICExNjY1 LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTM0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1VuaWZvcm1Xcml0ZXJOU18xNkVu Y29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUzMSwgJWNs YXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU5LCAlInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICUxMCksICFkYmcgITE2NjYKLSsgICUz NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJF bmNvZGluZ0lqMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNv ZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzEsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCgl Y2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTksICUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9y bSIpIGFsaWduIDEgJTEwKSwgIWRiZyAhMTY2NgotICAgYnIgaTEgJTM0LCBsYWJlbCAlNjAsIGxh YmVsICUzNSwgIWRiZyAhMTY2NwotIAotIDsgPGxhYmVsPjozNTogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUzMAotQEAgLTg5MzgsNyArODkzOCw3IEBAIGRl ZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5j b2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlMzcgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3Jp dGVyKiAlMTEgdG8gaTgqLCAhZGJnICExNjY5Ci0gICAlMzggPSBiaXRjYXN0ICVjbGFzcy5Vbmlm b3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2NjkKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1j cHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTM3LCBpOCogYWxpZ24gMzIgJTM4LCBpMzIg NjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY2OSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICUzOSA9IGNh bGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGlu Z0lmMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VU MF9UMV8oaTggc2lnbmV4dCAlMzYsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAz MiAlMTEsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWdu IDEgJTEyKSwgIWRiZyAhMTY3MAotKyAgJTM5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYxM1VuaWZvcm1Xcml0ZXJOU18xNkVu Y29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUzNiwgJWNs YXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAl MTEsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTEyKSwgIWRiZyAhMTY3MAot ICAgYnIgaTEgJTM5LCBsYWJlbCAlNjAsIGxhYmVsICU0MCwgIWRiZyAhMTY3MQotIAotIDsgPGxh YmVsPjo0MDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUz NQotQEAgLTg5NDYsNyArODk0Niw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlNDIg PSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMTMgdG8gaTgqLCAhZGJnICExNjczCi0g ICAlNDMgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2 NzMKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIg JTQyLCBpOCogYWxpZ24gMzIgJTQzLCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY3MywgIXRi YWEuc3RydWN0ICExOTcKLS0gICU0NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZk ZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGlu ZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDEsICVjbGFzcy5V bmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTMsICUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTE0KSwgIWRiZyAhMTY3NAotKyAgJTQ0ID0g Y2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29k aW5nSXgxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5n RVQwX1QxXyhpOCBzaWduZXh0ICU0MSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFz cy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlMTMsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rp bmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIp IGFsaWduIDEgJTE0KSwgIWRiZyAhMTY3NAotICAgYnIgaTEgJTQ0LCBsYWJlbCAlNjAsIGxhYmVs ICU0NSwgIWRiZyAhMTY3NQotIAotIDsgPGxhYmVsPjo0NTogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU0MAotQEAgLTg5NTQsNyArODk1NCw3IEBAIGRlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2Rp bmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlNDcgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVy KiAlMTUgdG8gaTgqLCAhZGJnICExNjc3Ci0gICAlNDggPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3Jt V3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2NzcKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHku cDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTQ3LCBpOCogYWxpZ24gMzIgJTQ4LCBpMzIgNjQs IGkxIGZhbHNlKSwgIWRiZyAhMTY3NywgIXRiYWEuc3RydWN0ICExOTcKLS0gICU0OSA9IGNhbGwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5 MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9U MV8oaTggc2lnbmV4dCAlNDYsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAl MTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEg JTE2KSwgIWRiZyAhMTY3OAotKyAgJTQ5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv NmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29k aW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0NiwgJWNsYXNz LlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlMTUs ICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTE2KSwgIWRiZyAhMTY3OAotICAg YnIgaTEgJTQ5LCBsYWJlbCAlNjAsIGxhYmVsICU1MCwgIWRiZyAhMTY3OQotIAotIDsgPGxhYmVs Pjo1MDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU0NQot QEAgLTg5NjIsNyArODk2Miw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlNTIgPSBi aXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMTcgdG8gaTgqLCAhZGJnICExNjgxCi0gICAl NTMgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2ODEK LSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTUy LCBpOCogYWxpZ24gMzIgJTUzLCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY4MSwgIXRiYWEu c3RydWN0ICExOTcKLS0gICU1NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRh aWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRV bmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNTEsICVjbGFzcy5Vbmlm b3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTcsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rp bmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTE4KSwgIWRiZyAhMTY4MgotKyAgJTU0ID0gY2Fs bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5n SWQxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQw X1QxXyhpOCBzaWduZXh0ICU1MSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5V bmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlMTcsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0 VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFs aWduIDEgJTE4KSwgIWRiZyAhMTY4MgotICAgYnIgaTEgJTU0LCBsYWJlbCAlNjAsIGxhYmVsICU1 NSwgIWRiZyAhMTY4MwotIAotIDsgPGxhYmVsPjo1NTogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOyBwcmVkcyA9ICU1MAotQEAgLTg5NzAsNyArODk3MCw3IEBAIGRlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJ MTNVbmlmb3JtV3JpdGVyCi0gICAlNTcgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAl MTkgdG8gaTgqLCAhZGJnICExNjg1Ci0gICAlNTggPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3Jp dGVyKiAlMSB0byBpOCosICFkYmcgITE2ODUKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBp OC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTU3LCBpOCogYWxpZ24gMzIgJTU4LCBpMzIgNjQsIGkx IGZhbHNlKSwgIWRiZyAhMTY4NSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICU1OSA9IGNhbGwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEz VW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFf KGk4IHNpZ25leHQgJTU2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTE5 LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICUy MCksICFkYmcgITE2ODYKLSsgICU1OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZk ZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rp bmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTU2LCAlY2xhc3Mu VW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICUxOSwg JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJp bnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSAlMjApLCAhZGJnICExNjg2Ci0gICBi ciBsYWJlbCAlNjAsICFkYmcgITE2ODMKLSAKLSA7IDxsYWJlbD46NjA6ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNTUsICU1MCwgJTQ1LCAlNDAsICUzNSwg JTMwLCAlMjUsICUzCi1AQCAtODk3OSw3ICs4OTc5LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0 ZXIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91 bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwy MWFwcGx5SWZQcm9wZXJFbmNvZGluZ0liMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlm b3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0 ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0i KiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2ODggewotK2RlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5n SWIxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQw X1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZv cm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0i KiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAj MjUgY29tZGF0ICFkYmcgITE2ODggewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1 ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAh dGJhYSAhMTkzCi1AQCAtOTAwNSw3ICs5MDA1LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVW5pZm8K LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndp bmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFw cGx5SWZQcm9wZXJFbmNvZGluZ0lpMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3Jt RUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIq IGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBi eXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2OTcgewotK2RlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkx M1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1Qx XyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1X cml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBi eXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUg Y29tZGF0ICFkYmcgITE2OTcgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0g YWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJh YSAhMTkzCi1AQCAtOTAzMSw3ICs5MDMxLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVW5pZm8KLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQK LS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5 SWZQcm9wZXJFbmNvZGluZ0lqMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVF Yk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5 dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZh bCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MDYgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1Vu aWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhp OCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0 ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZh bCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29t ZGF0ICFkYmcgITE3MDYgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxs b2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAh MTkzCi1AQCAtOTA1Nyw3ICs5MDU3LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9a TjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEzVW5pZm8KLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1k ZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQ cm9wZXJFbmNvZGluZ0lmMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5T XzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFs IGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBh bGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MTUgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYxM1VuaWZv cm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBz aWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIp IGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCgl InN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0 ICFkYmcgITE3MTUgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2Nh IGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkz Ci1AQCAtOTA4Myw3ICs5MDgzLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQ cmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZjEzVW5pZm8KLSB9Ci0gCi0g OyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZp bmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9w ZXJFbmNvZGluZ0l4MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhF bmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFs aWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGln biAxKSAjMjUgY29tZGF0ICFkYmcgITE3MjQgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1VuaWZvcm1X cml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWdu ZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFs aWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFk YmcgITE3MjQgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4 LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1A QCAtOTEwOSw3ICs5MTA5LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmlu dEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVW5pZm8KLSB9Ci0gCi0gOyBG dW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUg aW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJF bmNvZGluZ0l5MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNv ZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWdu IDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAx KSAjMjUgY29tZGF0ICFkYmcgITE3MzMgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1VuaWZvcm1Xcml0 ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0 LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWdu IDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcg ITE3MzMgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBh bGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAt OTEzNSw3ICs5MTM1LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludElu Zm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5j dGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50 ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNv ZGluZ0lkMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGlu Z0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMy LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAj MjUgY29tZGF0ICFkYmcgITE3NDIgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1VuaWZvcm1Xcml0ZXJO U18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAl Y2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMy LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3 NDIgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGln biAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTE2 MSw3ICs5MTYxLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZDEzVW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlv biBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGlu Z0lQdjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdF VDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwg JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSkgIzI1 IGNvbWRhdCAhZGJnICExNzUxIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEzVW5pZm9ybVdyaXRlck5T XzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVj bGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIs ICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMTc1 MSB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgaTgsIGFsaWdu IDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFsaWduIDEsICF0YmFhICExOTMKLUBAIC05OTg0 LDcgKzk5ODQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgaTMyIEBfWk43ZGV0YWlsczE4X2NtX3ByaW50 X3R5cGVfb2NsSVB2RUVOU18xOFNIQURFUl9QUklOVEZfVFlQRQotIH0KLSAKLSA7IEZ1bmN0aW9u IEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5 aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBz aWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRi ZyAhMjA1NSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0 YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdF RUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBi eXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFy eWluZyIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjA1NSB7Ci0gICAlNCA9IGFsbG9jYSBp OCwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgJWNsYXNzLlZhcnlpbmdXcml0ZXIsIGFsaWduIDMy Ci0gICAlNiA9IGFsbG9jYSAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciLCBh bGlnbiAxCi1AQCAtMTAwMDcsNyArMTAwMDcsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlcgot ICAgJTIyID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTUgdG8gaTgqLCAhZGJnICEy MDU3Ci0gICAlMjMgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMSB0byBpOCosICFk YmcgITIwNTcKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxp Z24gMzIgJTIyLCBpOCogYWxpZ24gMzIgJTIzLCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMjA1 NywgIXRiYWEuc3RydWN0ICExOTcKLS0gICUyNCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0liMTNWYXJ5aW5nV3JpdGVyTlNfMTZF bmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMjEsICVj bGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlNSwgJSJzdHJ1Y3QuUHJpbnRJbmZv OjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSAlNiksICFkYmcgITIwNTgKLSsgICUy NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJF bmNvZGluZ0liMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNv ZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMjEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCgl Y2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTUsICUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWlu ZyIpIGFsaWduIDEgJTYpLCAhZGJnICEyMDU4Ci0gICBiciBpMSAlMjQsIGxhYmVsICU2MCwgbGFi ZWwgJTI1LCAhZGJnICEyMDU5Ci0gCi0gOyA8bGFiZWw+OjI1OiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTMKLUBAIC0xMDAxNSw3ICsxMDAxNSw3IEBAIGRl ZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5j b2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAlMjcgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3Jp dGVyKiAlNyB0byBpOCosICFkYmcgITIwNjEKLSAgICUyOCA9IGJpdGNhc3QgJWNsYXNzLlZhcnlp bmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA2MQotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNw eS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAlMjcsIGk4KiBhbGlnbiAzMiAlMjgsIGkzMiA2 NCwgaTEgZmFsc2UpLCAhZGJnICEyMDYxLCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTI5ID0gY2Fs bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5n SWkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQw X1QxXyhpOCBzaWduZXh0ICUyNiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMy ICU3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAx ICU4KSwgIWRiZyAhMjA2MgotKyAgJTI5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv NmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29k aW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyNiwgJWNsYXNz LlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlNywg JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJp bnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlOCksICFkYmcgITIwNjIKLSAgIGJy IGkxICUyOSwgbGFiZWwgJTYwLCBsYWJlbCAlMzAsICFkYmcgITIwNjMKLSAKLSA7IDxsYWJlbD46 MzA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMjUKLUBA IC0xMDAyMyw3ICsxMDAyMyw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAlMzIgPSBi aXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlOSB0byBpOCosICFkYmcgITIwNjUKLSAgICUz MyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA2NQot ICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAlMzIs IGk4KiBhbGlnbiAzMiAlMzMsIGkzMiA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDY1LCAhdGJhYS5z dHJ1Y3QgITE5NwotLSAgJTM0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZh cnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUzMSwgJWNsYXNzLlZhcnlp bmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU5LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICUxMCksICFkYmcgITIwNjYKLSsgICUzNCA9IGNhbGwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lq MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9U MV8oaTggc2lnbmV4dCAlMzEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFy eWluZ1dyaXRlcikgYWxpZ24gMzIgJTksICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFy eWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWdu IDEgJTEwKSwgIWRiZyAhMjA2NgotICAgYnIgaTEgJTM0LCBsYWJlbCAlNjAsIGxhYmVsICUzNSwg IWRiZyAhMjA2NwotIAotIDsgPGxhYmVsPjozNTogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOyBwcmVkcyA9ICUzMAotQEAgLTEwMDMxLDcgKzEwMDMxLDcgQEAgZGVmaW5lIGlu dGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kx M1ZhcnlpbmdXcml0ZXIKLSAgICUzNyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUx MSB0byBpOCosICFkYmcgITIwNjkKLSAgICUzOCA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0 ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA2OQotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4 LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAlMzcsIGk4KiBhbGlnbiAzMiAlMzgsIGkzMiA2NCwgaTEg ZmFsc2UpLCAhZGJnICEyMDY5LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTM5ID0gY2FsbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYxM1Zh cnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhp OCBzaWduZXh0ICUzNiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUxMSwg JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSAlMTIp LCAhZGJnICEyMDcwCi0rICAlMzkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0 YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0 VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTM2LCAlY2xhc3MuVmFy eWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyICUxMSwgJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlMTIpLCAhZGJnICEyMDcwCi0gICBiciBp MSAlMzksIGxhYmVsICU2MCwgbGFiZWwgJTQwLCAhZGJnICEyMDcxCi0gCi0gOyA8bGFiZWw+OjQw OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTM1Ci1AQCAt MTAwMzksNyArMTAwMzksNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlcgotICAgJTQyID0gYml0 Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEzIHRvIGk4KiwgIWRiZyAhMjA3MwotICAgJTQz ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEgdG8gaTgqLCAhZGJnICEyMDczCi0g ICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICU0Miwg aTgqIGFsaWduIDMyICU0MywgaTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITIwNzMsICF0YmFhLnN0 cnVjdCAhMTk3Ci0tICAlNDQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFy eWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTQxLCAlY2xhc3MuVmFyeWlu Z1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTEzLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICUxNCksICFkYmcgITIwNzQKLSsgICU0NCA9IGNhbGwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4 MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9U MV8oaTggc2lnbmV4dCAlNDEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFy eWluZ1dyaXRlcikgYWxpZ24gMzIgJTEzLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZh cnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGln biAxICUxNCksICFkYmcgITIwNzQKLSAgIGJyIGkxICU0NCwgbGFiZWwgJTYwLCBsYWJlbCAlNDUs ICFkYmcgITIwNzUKLSAKLSA7IDxsYWJlbD46NDU6ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDsgcHJlZHMgPSAlNDAKLUBAIC0xMDA0Nyw3ICsxMDA0Nyw3IEBAIGRlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJ MTNWYXJ5aW5nV3JpdGVyCi0gICAlNDcgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAl MTUgdG8gaTgqLCAhZGJnICEyMDc3Ci0gICAlNDggPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3Jp dGVyKiAlMSB0byBpOCosICFkYmcgITIwNzcKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBp OC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTQ3LCBpOCogYWxpZ24gMzIgJTQ4LCBpMzIgNjQsIGkx IGZhbHNlKSwgIWRiZyAhMjA3NywgIXRiYWEuc3RydWN0ICExOTcKLS0gICU0OSA9IGNhbGwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNW YXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8o aTggc2lnbmV4dCAlNDYsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTUs ICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEgJTE2 KSwgIWRiZyAhMjA3OAotKyAgJTQ5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRl dGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5n NFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0NiwgJWNsYXNzLlZh cnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlMTUsICUi c3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50 SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTE2KSwgIWRiZyAhMjA3OAotICAgYnIg aTEgJTQ5LCBsYWJlbCAlNjAsIGxhYmVsICU1MCwgIWRiZyAhMjA3OQotIAotIDsgPGxhYmVsPjo1 MDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU0NQotQEAg LTEwMDU1LDcgKzEwMDU1LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmlu dEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIKLSAgICU1MiA9IGJp dGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxNyB0byBpOCosICFkYmcgITIwODEKLSAgICU1 MyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA4MQot ICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAlNTIs IGk4KiBhbGlnbiAzMiAlNTMsIGkzMiA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDgxLCAhdGJhYS5z dHJ1Y3QgITE5NwotLSAgJTU0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZh cnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1MSwgJWNsYXNzLlZhcnlp bmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUxNywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSAlMTgpLCAhZGJnICEyMDgyCi0rICAlNTQgPSBjYWxs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJ ZDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBf VDFfKGk4IHNpZ25leHQgJTUxLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZh cnlpbmdXcml0ZXIpIGFsaWduIDMyICUxNywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRW YXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxp Z24gMSAlMTgpLCAhZGJnICEyMDgyCi0gICBiciBpMSAlNTQsIGxhYmVsICU2MCwgbGFiZWwgJTU1 LCAhZGJnICEyMDgzCi0gCi0gOyA8bGFiZWw+OjU1OiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA7IHByZWRzID0gJTUwCi1AQCAtMTAwNjMsNyArMTAwNjMsNyBAQCBkZWZpbmUg aW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5n STEzVmFyeWluZ1dyaXRlcgotICAgJTU3ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciog JTE5IHRvIGk4KiwgIWRiZyAhMjA4NQotICAgJTU4ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dy aXRlciogJTEgdG8gaTgqLCAhZGJnICEyMDg1Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAw aTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICU1NywgaTgqIGFsaWduIDMyICU1OCwgaTMyIDY0LCBp MSBmYWxzZSksICFkYmcgITIwODUsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNTkgPSBjYWxsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYx M1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1Qx XyhpOCBzaWduZXh0ICU1NiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUx OSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSAl MjApLCAhZGJnICEyMDg2Ci0rICAlNTkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29k aW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1NiwgJWNsYXNz LlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlMTks ICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTIwKSwgIWRiZyAhMjA4NgotICAg YnIgbGFiZWwgJTYwLCAhZGJnICEyMDgzCi0gCi0gOyA8bGFiZWw+OjYwOiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTU1LCAlNTAsICU0NSwgJTQwLCAlMzUs ICUzMCwgJTI1LCAlMwotQEAgLTEwMDcyLDcgKzEwMDcyLDcgQEAgZGVmaW5lIGludGVybmFsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdX cml0ZXIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQg bm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRh aWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0liMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRW YXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdX cml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlp bmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIwODggewotK2RlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29k aW5nSWIxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5n RVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZh cnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlp bmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAx KSAjMjUgY29tZGF0ICFkYmcgITIwODggewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAg ICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAx LCAhdGJhYSAhMTkzCi1AQCAtMTAwOTgsNyArMTAwOTgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0liMTNW YXJ5aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBu b3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZh cnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dy aXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWlu ZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjA5NyB7Ci0rZGVmaW5lIGludGVy bmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJaTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdF VDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFy eWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWlu ZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEp ICMyNSBjb21kYXQgIWRiZyAhMjA5NyB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24gMQotICAg JTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFsaWduIDEs ICF0YmFhICExOTMKLUBAIC0xMDEyNCw3ICsxMDEyNCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1Zh cnlpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5v dW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFy eWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3Jp dGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5n IiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTA2IHsKLStkZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGlu Z0lqMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VU MF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5 aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5n IiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSkg IzI1IGNvbWRhdCAhZGJnICEyMTA2IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAl NSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwg IXRiYWEgITE5MwotQEAgLTEwMTUwLDcgKzEwMTUwLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEzVmFy eWkKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91 bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwy MWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5 aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0 ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmci KiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxMTUgewotK2RlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5n SWYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQw X1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlp bmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmci KiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxKSAj MjUgY29tZGF0ICFkYmcgITIxMTUgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1 ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAh dGJhYSAhMTkzCi1AQCAtMTAxNzYsNyArMTAxNzYsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNWYXJ5 aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vu d2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIx YXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlp bmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRl ciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIq IGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEyNCB7Ci0rZGVmaW5lIGludGVybmFs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJ eDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBf VDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWlu Z1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIq IGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEpICMy NSBjb21kYXQgIWRiZyAhMjEyNCB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24gMQotICAgJTUg PSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFsaWduIDEsICF0 YmFhICExOTMKLUBAIC0xMDIwMiw3ICsxMDIwMiw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1Zhcnlp Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53 aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFh cHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWlu Z0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVy KiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiog Ynl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTMzIHsKLStkZWZpbmUgaW50ZXJuYWwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5 MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9U MV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5n V3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiog Ynl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSkgIzI1 IGNvbWRhdCAhZGJnICEyMTMzIHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9 IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRi YWEgITE5MwotQEAgLTEwMjI4LDcgKzEwMjI4LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVmFyeWkK LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndp bmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFw cGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5n RUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIq IGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBi eXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxNDIgewotK2RlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQx M1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1Qx XyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdX cml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBi eXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxKSAjMjUg Y29tZGF0ICFkYmcgITIxNDIgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0g YWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJh YSAhMTkzCi1AQCAtMTAyNTQsNyArMTAyNTQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNWYXJ5aQot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2lu ZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBw bHlJZlByb3BlckVuY29kaW5nSVB2MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5n RUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIq IGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBi eXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxNTEgewotK2RlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSVB2 MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9U MV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5n V3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiog Ynl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSkgIzI1 IGNvbWRhdCAhZGJnICEyMTUxIHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9 IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRi YWEgITE5MwotZGlmZiAtLWdpdCBhL2J1aWx0aW5zL2J1aWx0aW5zLWNtLTY0LmxsIGIvYnVpbHRp bnMvYnVpbHRpbnMtY20tNjQubGwKLWluZGV4IDM5YTJkZDhiZS4uMzc1ZDAxYmVkIDEwMDY0NAot LS0tIGEvYnVpbHRpbnMvYnVpbHRpbnMtY20tNjQubGwKLSsrKyBiL2J1aWx0aW5zL2J1aWx0aW5z LWNtLTY0LmxsCi1AQCAtNTU3LDcgKzU1Nyw3IEBAICRfWk4xM1ZhcnlpbmdXcml0ZXIxMldyaXRl VmVjRWxlbUlQdkVFdnYgPSBjb21kYXQgYW55Ci0gQC5zdHIuMTAgPSBwcml2YXRlIHVubmFtZWRf YWRkciBjb25zdGFudCBbOCB4IGk4XSBjIiUwMTZsbFhcMDAiLCBhbGlnbiAxCi0gCi0gOyBGdW5j dGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIHNpZ25leHQg aTggQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZjYyhpOCBzaWduZXh0LCBpOCBzaWduZXh0 KSAjMCB7Ci0rZGVmaW5lIGludGVybmFsIHNpZ25leHQgaTggQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NkaXZjYyhpOCBzaWduZXh0LCBpOCBzaWduZXh0KSAjMCB7Ci0gICAlMyA9IGFsbG9jYSBp OCwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIDwx IHggaTg+LCBhbGlnbiAxCi1AQCAtNjE4LDcgKzYxOCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MSB4 IGk4PiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkxRUVFdTJDTXZiVF9fY1MxX1MxX3Uy Q012Ci0gZGVjbGFyZSA8MSB4IGk4PiBAbGx2bS5nZW54LnJkcmVnaW9uaS52MWk4LnYxaTguaTE2 KDwxIHggaTg+LCBpMzIsIGkzMiwgaTMyLCBpMTYsIGkzMikgIzIKLSAKLSA7IEZ1bmN0aW9uIEF0 dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIxX2NTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMw IHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Nk aXZ1MkNNdmIxX2NTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMwIHsKLSAgICUzID0gYWxsb2NhIDwx IHggaTg+LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotICAgJTUg PSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLUBAIC02MzQsNyArNjM0LDcgQEAgZGVmaW5lIGRz b19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjFfY1Nf KDwxIHggaTg+LCA8MQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2lu ZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Nk aXZ1MkNNdmIyX2NTXyg8MiB4IGk4PiwgPDIgeCBpOD4pICMzIHsKLStkZWZpbmUgaW50ZXJuYWwg PDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIyX2NTXyg8MiB4IGk4 PiwgPDIgeCBpOD4pICMzIHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0gICAl NCA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDIgeCBpOD4sIGFs aWduIDIKLUBAIC02ODAsNyArNjgwLDcgQEAgZGVmaW5lIGludGVybmFsIDwyIHggaTg+IEBfWk43 ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTJFRUV1MkNNdmJUX19jUzFfUzFfdTJDTXYKLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiNF9jU18oPDQgeCBp OD4sIDw0IHggaTg+KSAjNSB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTg+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiNF9jU18oPDQgeCBpOD4sIDw0IHggaTg+KSAjNSB7Ci0g ICAlMyA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgPDQgeCBpOD4s IGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci1AQCAtODE4LDcgKzgx OCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MTYgeCBpOD4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2 cmVtSUxpMTZFRUV1MkNNdmJUX19jUzFfUzFfdTJDCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6 IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIzMl9jU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMx MSB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf c2RpdnUyQ012YjMyX2NTXyg8MzIgeCBpOD4sIDwzMiB4IGk4PikgIzExIHsKLSAgICUzID0gYWxs b2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24g MzIKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLUBAIC04NjQsNyArODY0LDcg QEAgZGVmaW5lIGludGVybmFsIDwzMiB4IGk4PiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1J TGkzMkVFRXUyQ012YlRfX2NTMV9TMV91MkMKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9p bmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIHNpZ25leHQgaTggQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NyZW1jYyhpOCBzaWduZXh0LCBpOCBzaWduZXh0KSAjMCB7Ci0rZGVmaW5l IGludGVybmFsIHNpZ25leHQgaTggQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1jYyhpOCBz aWduZXh0LCBpOCBzaWduZXh0KSAjMCB7Ci0gICAlMyA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAg JTQgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAx Ci1AQCAtODkwLDcgKzg5MCw3IEBAIGRlZmluZSBkc29fbG9jYWwgc2lnbmV4dCBpOCBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc3JlbWNjKGk4IHNpZ25leHQsIGk4IHNpZ25lCi0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4 IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfY1NfKDwxIHggaTg+LCA8 MSB4IGk4PikgIzAgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc3JlbXUyQ012YjFfY1NfKDwxIHggaTg+LCA8MSB4IGk4PikgIzAgewotICAgJTMg PSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhIDwxIHggaTg+LCBhbGln biAxCi0gICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAgLTkwNCw3ICs5MDQsNyBA QCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVt dTJDTXZiMV9jU18oPDEgeCBpOD4sIDwxCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5s aW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc3JlbXUyQ012YjJfY1NfKDwyIHggaTg+LCA8MiB4IGk4PikgIzMgewotK2RlZmlu ZSBpbnRlcm5hbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjJf Y1NfKDwyIHggaTg+LCA8MiB4IGk4PikgIzMgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpOD4sIGFs aWduIDIKLSAgICU0ID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8 MiB4IGk4PiwgYWxpZ24gMgotQEAgLTkxOCw3ICs5MTgsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwy IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9jU18oPDIgeCBpOD4s IDwyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRf Y1NfKDw0IHggaTg+LCA8NCB4IGk4PikgIzUgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGk4PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfY1NfKDw0IHggaTg+LCA8NCB4IGk4 PikgIzUgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2Nh IDw0IHggaTg+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotQEAg LTkzMiw3ICs5MzIsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw0IHggaTg+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF9zcmVtdTJDTXZiNF9jU18oPDQgeCBpOD4sIDw0Ci0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8OCB4IGk4PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjhfY1NfKDw4IHggaTg+LCA8OCB4IGk4 PikgIzcgewotK2RlZmluZSBpbnRlcm5hbCA8OCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc3JlbXUyQ012YjhfY1NfKDw4IHggaTg+LCA8OCB4IGk4PikgIzcgewotICAgJTMgPSBhbGxv Y2EgPDggeCBpOD4sIGFsaWduIDgKLSAgICU0ID0gYWxsb2NhIDw4IHggaTg+LCBhbGlnbiA4Ci0g ICAlNSA9IGFsbG9jYSA8OCB4IGk4PiwgYWxpZ24gOAotQEAgLTk0Niw3ICs5NDYsNyBAQCBkZWZp bmUgZHNvX2xvY2FsIDw4IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZi OF9jU18oPDggeCBpOD4sIDw4Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5v dW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NyZW11MkNNdmIxNl9jU18oPDE2IHggaTg+LCA8MTYgeCBpOD4pICM5IHsKLStkZWZpbmUg aW50ZXJuYWwgPDE2IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZf Y1NfKDwxNiB4IGk4PiwgPDE2IHggaTg+KSAjOSB7Ci0gICAlMyA9IGFsbG9jYSA8MTYgeCBpOD4s IGFsaWduIDE2Ci0gICAlNCA9IGFsbG9jYSA8MTYgeCBpOD4sIGFsaWduIDE2Ci0gICAlNSA9IGFs bG9jYSA8MTYgeCBpOD4sIGFsaWduIDE2Ci1AQCAtOTYwLDcgKzk2MCw3IEBAIGRlZmluZSBkc29f bG9jYWwgPDE2IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfY1Nf KDwxNiB4IGk4PiwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQK LS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3Jl bXUyQ012YjMyX2NTXyg8MzIgeCBpOD4sIDwzMiB4IGk4PikgIzExIHsKLStkZWZpbmUgaW50ZXJu YWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMzJfY1NfKDwz MiB4IGk4PiwgPDMyIHggaTg+KSAjMTEgewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTg+LCBhbGln biAzMgotICAgJTQgPSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2Eg PDMyIHggaTg+LCBhbGlnbiAzMgotQEAgLTk3NCw3ICs5NzQsNyBAQCBkZWZpbmUgZHNvX2xvY2Fs IDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX2NTXyg8MzIg eCBpOD4sCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCBzaWduZXh0IGkxNiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnNz KGkxNiBzaWduZXh0LCBpMTYgc2lnbmV4dCkgIzMgewotK2RlZmluZSBpbnRlcm5hbCBzaWduZXh0 IGkxNiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnNzKGkxNiBzaWduZXh0LCBpMTYgc2ln bmV4dCkgIzMgewotICAgJTMgPSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSBp MTYsIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotQEAgLTEwNTgs NyArMTA1OCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MSB4IGkxNj4gQF9aTjdkZXRhaWxzMTNfX2lt cGxfZGl2cmVtSUxpMUVFRXUyQ012YlRfX3NTMV9TMV91MkNNCi0gZGVjbGFyZSA8MSB4IGkxNj4g QGxsdm0uZ2VueC5yZHJlZ2lvbmkudjFpMTYudjFpMTYuaTE2KDwxIHggaTE2PiwgaTMyLCBpMzIs IGkzMiwgaTE2LCBpMzIpICMyCi0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndp bmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf c2RpdnUyQ012YjFfc1NfKDwxIHggaTE2PiwgPDEgeCBpMTY+KSAjMyB7Ci0rZGVmaW5lIGludGVy bmFsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjFfc1NfKDwx IHggaTE2PiwgPDEgeCBpMTY+KSAjMyB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWdu IDIKLSAgICU0ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDEg eCBpMTY+LCBhbGlnbiAyCi1AQCAtMTA3NCw3ICsxMDc0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8 MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIxX3NTXyg8MSB4IGkx Nj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZp bmUgZHNvX2xvY2FsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012 YjJfc1NfKDwyIHggaTE2PiwgPDIgeCBpMTY+KSAjNSB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHgg aTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjJfc1NfKDwyIHggaTE2Piwg PDIgeCBpMTY+KSAjNSB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLSAgICU0 ID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDIgeCBpMTY+LCBh bGlnbiA0Ci1AQCAtMTE0Myw3ICsxMTQzLDcgQEAgZGVmaW5lIGludGVybmFsIDwyIHggaTE2PiBA X1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkyRUVFdTJDTXZiVF9fc1MxX1MxX3UyQ00KLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xv Y2FsIDw0IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjRfc1NfKDw0 IHggaTE2PiwgPDQgeCBpMTY+KSAjNyB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTE2PiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjRfc1NfKDw0IHggaTE2PiwgPDQgeCBpMTY+ KSAjNyB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLSAgICU0ID0gYWxsb2Nh IDw0IHggaTE2PiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci1A QCAtMTM1MCw3ICsxMzUwLDcgQEAgZGVmaW5lIGludGVybmFsIDwxNiB4IGkxNj4gQF9aTjdkZXRh aWxzMTNfX2ltcGxfZGl2cmVtSUxpMTZFRUV1MkNNdmJUX19zUzFfUzFfdTIKLSB9Ci0gCi0gOyBG dW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4 IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIzMl9zU18oPDMyIHggaTE2 PiwgPDMyIHggaTE2PikgIzEzIHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTE2PiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjMyX3NTXyg8MzIgeCBpMTY+LCA8MzIgeCBpMTY+ KSAjMTMgewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLSAgICU0ID0gYWxs b2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGln biA2NAotQEAgLTE0MTksNyArMTQxOSw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MzIgeCBpMTY+IEBf Wk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTMyRUVFdTJDTXZiVF9fc1MxX1MxX3UyCi0gfQot IAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2Nh bCBzaWduZXh0IGkxNiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXNzKGkxNiBzaWduZXh0 LCBpMTYgc2lnbmV4dCkgIzMgewotK2RlZmluZSBpbnRlcm5hbCBzaWduZXh0IGkxNiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc3JlbXNzKGkxNiBzaWduZXh0LCBpMTYgc2lnbmV4dCkgIzMgewot ICAgJTMgPSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSBpMTYsIGFsaWduIDIK LSAgICU1ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotQEAgLTE0NDUsNyArMTQ0NSw3IEBA IGRlZmluZSBkc29fbG9jYWwgc2lnbmV4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Ny ZW1zcyhpMTYgc2lnbmV4dCwgaTE2IHNpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5s aW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3NyZW11MkNNdmIxX3NTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzMgewotK2Rl ZmluZSBpbnRlcm5hbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNN dmIxX3NTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzMgewotICAgJTMgPSBhbGxvY2EgPDEgeCBp MTY+LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLSAgICU1ID0g YWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotQEAgLTE0NTksNyArMTQ1OSw3IEBAIGRlZmluZSBk c29fbG9jYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9z U18oPDEgeCBpMTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53 aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NyZW11MkNNdmIyX3NTXyg8MiB4IGkxNj4sIDwyIHggaTE2PikgIzUgewotK2RlZmluZSBpbnRl cm5hbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX3NTXyg8 MiB4IGkxNj4sIDwyIHggaTE2PikgIzUgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGln biA0Ci0gICAlNCA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwy IHggaTE2PiwgYWxpZ24gNAotQEAgLTE0NzMsNyArMTQ3Myw3IEBAIGRlZmluZSBkc29fbG9jYWwg PDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9zU18oPDIgeCBp MTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCA8NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNN dmI0X3NTXyg8NCB4IGkxNj4sIDw0IHggaTE2PikgIzcgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4 IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X3NTXyg8NCB4IGkxNj4s IDw0IHggaTE2PikgIzcgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAl NCA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDw0IHggaTE2Piwg YWxpZ24gOAotQEAgLTE0ODcsNyArMTQ4Nyw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDQgeCBpMTY+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiNF9zU18oPDQgeCBpMTY+LCA8Ci0g fQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19s b2NhbCA8OCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI4X3NTXyg8 OCB4IGkxNj4sIDw4IHggaTE2PikgIzkgewotK2RlZmluZSBpbnRlcm5hbCA8OCB4IGkxNj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI4X3NTXyg8OCB4IGkxNj4sIDw4IHggaTE2 PikgIzkgewotICAgJTMgPSBhbGxvY2EgPDggeCBpMTY+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxv Y2EgPDggeCBpMTY+LCBhbGlnbiAxNgotICAgJTUgPSBhbGxvY2EgPDggeCBpMTY+LCBhbGlnbiAx NgotQEAgLTE1MDEsNyArMTUwMSw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDggeCBpMTY+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9zU18oPDggeCBpMTY+LCA8Ci0gfQotIAot IDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8 MTYgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfc1NfKDwxNiB4 IGkxNj4sIDwxNiB4IGkxNj4pICMxMSB7Ci0rZGVmaW5lIGludGVybmFsIDwxNiB4IGkxNj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxNl9zU18oPDE2IHggaTE2PiwgPDE2IHgg aTE2PikgIzExIHsKLSAgICUzID0gYWxsb2NhIDwxNiB4IGkxNj4sIGFsaWduIDMyCi0gICAlNCA9 IGFsbG9jYSA8MTYgeCBpMTY+LCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2EgPDE2IHggaTE2Piwg YWxpZ24gMzIKLUBAIC0xNTE1LDcgKzE1MTUsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGkx Nj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxNl9zU18oPDE2IHggaTE2Pgot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29f bG9jYWwgPDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX3NT Xyg8MzIgeCBpMTY+LCA8MzIgeCBpMTY+KSAjMTMgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBp MTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMzJfc1NfKDwzMiB4IGkxNj4s IDwzMiB4IGkxNj4pICMxMyB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAot ICAgJTQgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLSAgICU1ID0gYWxsb2NhIDwzMiB4 IGkxNj4sIGFsaWduIDY0Ci1AQCAtMTUyOSw3ICsxNTI5LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8 MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMzJfc1NfKDwzMiB4 IGkxNj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZp bmUgZHNvX2xvY2FsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdmlpKGkzMiwgaTMy KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Nk aXZpaShpMzIsIGkzMikgIzE0IHsKLSAgICUzID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotICAgJTQg PSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQK LUBAIC0xNzMwLDcgKzE3MzAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMzI+IEBfWk43ZGV0 YWlsczEzX19pbXBsX2RpdnJlbUlMaTFFRUV1MkNNdmJUX19pUzFfUzFfdTJDTQotIGRlY2xhcmUg PDEgeCBpMzI+IEBsbHZtLmdlbngucmRyZWdpb25pLnYxaTMyLnYxaTMyLmkxNig8MSB4IGkzMj4s IGkzMiwgaTMyLCBpMzIsIGkxNiwgaTMyKSAjMgotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5s aW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3NkaXZ1MkNNdmIxX2lTXyg8MSB4IGkzMj4sIDwxIHggaTMyPikgIzE0IHsKLStk ZWZpbmUgaW50ZXJuYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJD TXZiMV9pU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4pICMxNCB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4 IGkzMj4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotICAgJTUg PSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci1AQCAtMTc0Niw3ICsxNzQ2LDcgQEAgZGVmaW5l IGRzb19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIx X2lTXyg8MSB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91 bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc2RpdnUyQ012YjJfaVNfKDwyIHggaTMyPiwgPDIgeCBpMzI+KSAjMTUgewotK2RlZmluZSBp bnRlcm5hbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIyX2lT Xyg8MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTMyPiwg YWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9j YSA8MiB4IGkzMj4sIGFsaWduIDgKLUBAIC0xOTMyLDcgKzE5MzIsNyBAQCBkZWZpbmUgaW50ZXJu YWwgPDIgeCBpMzI+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTJFRUV1MkNNdmJUX19p UzFfUzFfdTJDTQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAot LWRlZmluZSBkc29fbG9jYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2 dTJDTXZiNF9pU18oPDQgeCBpMzI+LCA8NCB4IGkzMj4pICMxNiB7Ci0rZGVmaW5lIGludGVybmFs IDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjRfaVNfKDw0IHgg aTMyPiwgPDQgeCBpMzI+KSAjMTYgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAx NgotICAgJTQgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotICAgJTUgPSBhbGxvY2EgPDQg eCBpMzI+LCBhbGlnbiAxNgotQEAgLTI0OTAsNyArMjQ5MCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8 MTYgeCBpMzI+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTE2RUVFdTJDTXZiVF9faVMx X1MxX3UyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJD TXZiMzJfaVNfKDwzMiB4IGkzMj4sIDwzMiB4IGkzMj4pICMxOSB7Ci0rZGVmaW5lIGludGVybmFs IDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIzMl9pU18oPDMy IHggaTMyPiwgPDMyIHggaTMyPikgIzE5IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFs aWduIDEyOAotICAgJTQgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci0gICAlNSA9IGFs bG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLUBAIC0yNjc2LDcgKzI2NzYsNyBAQCBkZWZpbmUg aW50ZXJuYWwgPDMyIHggaTMyPiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkzMkVFRXUy Q012YlRfX2lTMV9TMV91MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vu d2luZAotLWRlZmluZSBkc29fbG9jYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVt aWkoaTMyLCBpMzIpICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIGkzMiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc3JlbWlpKGkzMiwgaTMyKSAjMTQgewotICAgJTMgPSBhbGxvY2EgaTMyLCBhbGln biA0Ci0gICAlNCA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMy PiwgYWxpZ24gNAotQEAgLTI3MDIsNyArMjcwMiw3IEBAIGRlZmluZSBkc29fbG9jYWwgaTMyIEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtaWkoaTMyLCBpMzIpICMxNCB7Ci0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4 IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxX2lTXyg8MSB4IGkzMj4s IDwxIHggaTMyPikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4pICMxNCB7 Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDwxIHgg aTMyPiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci1AQCAtMjcx Niw3ICsyNzE2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3NyZW11MkNNdmIxX2lTXyg8MSB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlv biBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTMyPiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjJfaVNfKDwyIHggaTMyPiwgPDIgeCBp MzI+KSAjMTUgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3NyZW11MkNNdmIyX2lTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsKLSAgICUz ID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDIgeCBpMzI+LCBh bGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLUBAIC0yNzMwLDcgKzI3 MzAsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc3JlbXUyQ012YjJfaVNfKDwyIHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJz OiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpMzI+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiNF9pU18oPDQgeCBpMzI+LCA8NCB4IGkzMj4pICMx NiB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf c3JlbXUyQ012YjRfaVNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewotICAgJTMgPSBhbGxv Y2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAx NgotICAgJTUgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotQEAgLTI3NDQsNyArMjc0NCw3 IEBAIGRlZmluZSBkc29fbG9jYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z cmVtdTJDTXZiNF9pU18oPDQgeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5v aW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkzMj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NyZW11MkNNdmI4X2lTXyg8OCB4IGkzMj4sIDw4IHggaTMyPikgIzE3IHsK LStkZWZpbmUgaW50ZXJuYWwgPDggeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVt dTJDTXZiOF9pU18oPDggeCBpMzI+LCA8OCB4IGkzMj4pICMxNyB7Ci0gICAlMyA9IGFsbG9jYSA8 OCB4IGkzMj4sIGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8OCB4IGkzMj4sIGFsaWduIDMyCi0g ICAlNSA9IGFsbG9jYSA8OCB4IGkzMj4sIGFsaWduIDMyCi1AQCAtMjc1OCw3ICsyNzU4LDcgQEAg ZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11 MkNNdmI4X2lTXyg8OCB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxp bmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGkzMj4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3NyZW11MkNNdmIxNl9pU18oPDE2IHggaTMyPiwgPDE2IHggaTMyPikgIzE4IHsK LStkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3Jl bXUyQ012YjE2X2lTXyg8MTYgeCBpMzI+LCA8MTYgeCBpMzI+KSAjMTggewotICAgJTMgPSBhbGxv Y2EgPDE2IHggaTMyPiwgYWxpZ24gNjQKLSAgICU0ID0gYWxsb2NhIDwxNiB4IGkzMj4sIGFsaWdu IDY0Ci0gICAlNSA9IGFsbG9jYSA8MTYgeCBpMzI+LCBhbGlnbiA2NAotQEAgLTI3NzIsNyArMjc3 Miw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDE2IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc3JlbXUyQ012YjE2X2lTXyg8MTYgeCBpMzI+Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6 IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMzI+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMzJfaVNfKDwzMiB4IGkzMj4sIDwzMiB4IGkzMj4p ICMxOSB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NyZW11MkNNdmIzMl9pU18oPDMyIHggaTMyPiwgPDMyIHggaTMyPikgIzE5IHsKLSAgICUz ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotICAgJTQgPSBhbGxvY2EgPDMyIHggaTMy PiwgYWxpZ24gMTI4Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLUBAIC0y Nzg2LDcgKzI3ODYsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9pU18oPDMyIHggaTMyPgotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgemVyb2V4dCBp OCBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdmhoKGk4IHplcm9leHQsIGk4IHplcm9leHQp ICMyMSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTggQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3VkaXZoaChpOCB6ZXJvZXh0LCBpOCB6ZXJvZXh0KSAjMjEgewotICAgJTMgPSBhbGxvY2Eg aTgsIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8 MSB4IGk4PiwgYWxpZ24gMQotQEAgLTI4NDQsNyArMjg0NCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8 MSB4IGk4PiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMUVFRXUyQ012YlRfX2hTMV9T MV91MkNNCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012 YjFfaFNfKDwxIHggaTg+LCA8MSB4IGk4PikgIzIxIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBp OD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX2hTXyg8MSB4IGk4PiwgPDEg eCBpOD4pICMyMSB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotICAgJTQgPSBh bGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAx Ci1AQCAtMjg2MCw3ICsyODYwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGk4PiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjFfaFNfKDwxIHggaTg+LCA8MQotIH0KLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIg eCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIyX2hTXyg8MiB4IGk4Piwg PDIgeCBpOD4pICMyMiB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF91ZGl2dTJDTXZiMl9oU18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMjIgewotICAg JTMgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIDwyIHggaTg+LCBh bGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotQEAgLTI5MDYsNyArMjkw Niw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MiB4IGk4PiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2 cmVtSUxpMkVFRXUyQ012YlRfX2hTMV9TMV91MkNNCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6 IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGk4PiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjRfaFNfKDw0IHggaTg+LCA8NCB4IGk4PikgIzE0IHsK LStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1 MkNNdmI0X2hTXyg8NCB4IGk4PiwgPDQgeCBpOD4pICMxNCB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4 IGk4PiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU1ID0g YWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci1AQCAtMzA0NCw3ICszMDQ0LDcgQEAgZGVmaW5lIGlu dGVybmFsIDwxNiB4IGk4PiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMTZFRUV1MkNN dmJUX19oUzFfUzFfdTIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndp bmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf dWRpdnUyQ012YjMyX2hTXyg8MzIgeCBpOD4sIDwzMiB4IGk4PikgIzE3IHsKLStkZWZpbmUgaW50 ZXJuYWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMzJfaFNf KDwzMiB4IGk4PiwgPDMyIHggaTg+KSAjMTcgewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTg+LCBh bGlnbiAzMgotICAgJTQgPSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgotICAgJTUgPSBhbGxv Y2EgPDMyIHggaTg+LCBhbGlnbiAzMgotQEAgLTMwOTAsNyArMzA5MCw3IEBAIGRlZmluZSBpbnRl cm5hbCA8MzIgeCBpOD4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTMyRUVFdTJDTXZi VF9faFMxX1MxX3UyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5k Ci0tZGVmaW5lIGRzb19sb2NhbCB6ZXJvZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtaGgoaTggemVyb2V4dCwgaTggemVyb2V4dCkgIzIxIHsKLStkZWZpbmUgaW50ZXJuYWwgemVy b2V4dCBpOCBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbWhoKGk4IHplcm9leHQsIGk4IHpl cm9leHQpICMyMSB7Ci0gICAlMyA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2Eg aTgsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi1AQCAtMzExNiw3 ICszMTE2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCB6ZXJvZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF91cmVtaGgoaTggemVyb2V4dCwgaTggemVyb2UKLSB9Ci0gCi0gOyBGdW5jdGlvbiBB dHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTg+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMV9oU18oPDEgeCBpOD4sIDwxIHggaTg+KSAj MjEgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf dXJlbXUyQ012YjFfaFNfKDwxIHggaTg+LCA8MSB4IGk4PikgIzIxIHsKLSAgICUzID0gYWxsb2Nh IDwxIHggaTg+LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotICAg JTUgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLUBAIC0zMTMwLDcgKzMxMzAsNyBAQCBkZWZp bmUgZHNvX2xvY2FsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZi MV9oU18oPDEgeCBpOD4sIDwxCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5v dW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfdXJlbXUyQ012YjJfaFNfKDwyIHggaTg+LCA8MiB4IGk4PikgIzIyIHsKLStkZWZpbmUgaW50 ZXJuYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX2hTXyg8 MiB4IGk4PiwgPDIgeCBpOD4pICMyMiB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24g MgotICAgJTQgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwyIHgg aTg+LCBhbGlnbiAyCi1AQCAtMzE0NCw3ICszMTQ0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MiB4 IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfaFNfKDwyIHggaTg+LCA8 MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBk c29fbG9jYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI0X2hT Xyg8NCB4IGk4PiwgPDQgeCBpOD4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTg+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF9oU18oPDQgeCBpOD4sIDw0IHggaTg+ KSAjMTQgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2Nh IDw0IHggaTg+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotQEAg LTMxNTgsNyArMzE1OCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VyZW11MkNNdmI0X2hTXyg8NCB4IGk4PiwgPDQKLSB9Ci0gCi0gOyBGdW5j dGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw4IHggaTg+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiOF9oU18oPDggeCBpOD4sIDw4IHgg aTg+KSAjMTUgewotK2RlZmluZSBpbnRlcm5hbCA8OCB4IGk4PiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfdXJlbXUyQ012YjhfaFNfKDw4IHggaTg+LCA8OCB4IGk4PikgIzE1IHsKLSAgICUzID0g YWxsb2NhIDw4IHggaTg+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8OCB4IGk4PiwgYWxpZ24g OAotICAgJTUgPSBhbGxvY2EgPDggeCBpOD4sIGFsaWduIDgKLUBAIC0zMTcyLDcgKzMxNzIsNyBA QCBkZWZpbmUgZHNvX2xvY2FsIDw4IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVt dTJDTXZiOF9oU18oPDggeCBpOD4sIDw4Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5s aW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpOD4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3VyZW11MkNNdmIxNl9oU18oPDE2IHggaTg+LCA8MTYgeCBpOD4pICMxNiB7Ci0r ZGVmaW5lIGludGVybmFsIDwxNiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUy Q012YjE2X2hTXyg8MTYgeCBpOD4sIDwxNiB4IGk4PikgIzE2IHsKLSAgICUzID0gYWxsb2NhIDwx NiB4IGk4PiwgYWxpZ24gMTYKLSAgICU0ID0gYWxsb2NhIDwxNiB4IGk4PiwgYWxpZ24gMTYKLSAg ICU1ID0gYWxsb2NhIDwxNiB4IGk4PiwgYWxpZ24gMTYKLUBAIC0zMTg2LDcgKzMxODYsNyBAQCBk ZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUy Q012YjE2X2hTXyg8MTYgeCBpOD4sCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5l IG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3VyZW11MkNNdmIzMl9oU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxNyB7Ci0rZGVm aW5lIGludGVybmFsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012 YjMyX2hTXyg8MzIgeCBpOD4sIDwzMiB4IGk4PikgIzE3IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4 IGk4PiwgYWxpZ24gMzIKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAgICU1 ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLUBAIC0zMjAwLDcgKzMyMDAsNyBAQCBkZWZp bmUgZHNvX2xvY2FsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012 YjMyX2hTXyg8MzIgeCBpOD4sCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5v dW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCB6ZXJvZXh0IGkxNiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfdWRpdnR0KGkxNiB6ZXJvZXh0LCBpMTYgemVyb2V4dCkgIzIyIHsKLStkZWZpbmUgaW50 ZXJuYWwgemVyb2V4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ0dChpMTYgemVy b2V4dCwgaTE2IHplcm9leHQpICMyMiB7Ci0gICAlMyA9IGFsbG9jYSBpMTYsIGFsaWduIDIKLSAg ICU0ID0gYWxsb2NhIGkxNiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGln biAyCi1AQCAtMzI3OCw3ICszMjc4LDcgQEAgZGVmaW5lIGludGVybmFsIDwxIHggaTE2PiBAX1pO N2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMUVFRXUyQ012YlRfX3RTMV9TMV91MkMKLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjFfdFNfKDwxIHgg aTE2PiwgPDEgeCBpMTY+KSAjMjIgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGkxNj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX3RTXyg8MSB4IGkxNj4sIDwxIHggaTE2Pikg IzIyIHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2Eg PDEgeCBpMTY+LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLUBA IC0zMjk0LDcgKzMyOTQsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTE2PiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjFfdFNfKDwxIHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBp MTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMl90U18oPDIgeCBpMTY+LCA8 MiB4IGkxNj4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHggaTE2PiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdWRpdnUyQ012YjJfdFNfKDwyIHggaTE2PiwgPDIgeCBpMTY+KSAjMTQgewot ICAgJTMgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8MiB4IGkx Nj4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotQEAgLTMzNjAs NyArMzM2MCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MiB4IGkxNj4gQF9aTjdkZXRhaWxzMTRfX2lt cGxfdWRpdnJlbUlMaTJFRUV1MkNNdmJUX190UzFfUzFfdTJDCi0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkxNj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmI0X3RTXyg8NCB4IGkxNj4sIDw0IHggaTE2 PikgIzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91ZGl2dTJDTXZiNF90U18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICMxNSB7Ci0gICAlMyA9 IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLSAgICU0ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxp Z24gOAotICAgJTUgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci1AQCAtMzU1OCw3ICszNTU4 LDcgQEAgZGVmaW5lIGludGVybmFsIDwxNiB4IGkxNj4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRp dnJlbUlMaTE2RUVFdTJDTXZiVF9fdFMxX1MxX3UKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczog bm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkxNj4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIzMl90U18oPDMyIHggaTE2PiwgPDMyIHggaTE2Pikg IzE4IHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfdWRpdnUyQ012YjMyX3RTXyg8MzIgeCBpMTY+LCA8MzIgeCBpMTY+KSAjMTggewotICAgJTMg PSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGkxNj4s IGFsaWduIDY0Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotQEAgLTM2MjQs NyArMzYyNCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MzIgeCBpMTY+IEBfWk43ZGV0YWlsczE0X19p bXBsX3VkaXZyZW1JTGkzMkVFRXUyQ012YlRfX3RTMV9TMV91Ci0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCB6ZXJvZXh0IGkxNiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXR0KGkxNiB6ZXJvZXh0LCBpMTYgemVyb2V4dCkg IzIyIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3VyZW10dChpMTYgemVyb2V4dCwgaTE2IHplcm9leHQpICMyMiB7Ci0gICAlMyA9IGFsbG9j YSBpMTYsIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIGkxNiwgYWxpZ24gMgotICAgJTUgPSBhbGxv Y2EgPDEgeCBpMTY+LCBhbGlnbiAyCi1AQCAtMzY1MCw3ICszNjUwLDcgQEAgZGVmaW5lIGRzb19s b2NhbCB6ZXJvZXh0IGkxNiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXR0KGkxNiB6ZXJv ZXh0LCBpMTYgemUKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQK LS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJl bXUyQ012YjFfdFNfKDwxIHggaTE2PiwgPDEgeCBpMTY+KSAjMjIgewotK2RlZmluZSBpbnRlcm5h bCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX3RTXyg8MSB4 IGkxNj4sIDwxIHggaTE2PikgIzIyIHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24g MgotICAgJTQgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MSB4 IGkxNj4sIGFsaWduIDIKLUBAIC0zNjY0LDcgKzM2NjQsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwx IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjFfdFNfKDwxIHggaTE2 PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmlu ZSBkc29fbG9jYWwgPDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZi Ml90U18oPDIgeCBpMTY+LCA8MiB4IGkxNj4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHgg aTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfdFNfKDwyIHggaTE2Piwg PDIgeCBpMTY+KSAjMTQgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAl NCA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwyIHggaTE2Piwg YWxpZ24gNAotQEAgLTM2NzgsNyArMzY3OCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDIgeCBpMTY+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMl90U18oPDIgeCBpMTY+LCA8Ci0g fQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19s b2NhbCA8NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI0X3RTXyg8 NCB4IGkxNj4sIDw0IHggaTE2PikgIzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpMTY+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF90U18oPDQgeCBpMTY+LCA8NCB4IGkx Nj4pICMxNSB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLSAgICU0ID0gYWxs b2NhIDw0IHggaTE2PiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4 Ci1AQCAtMzY5Miw3ICszNjkyLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkxNj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI0X3RTXyg8NCB4IGkxNj4sIDwKLSB9Ci0gCi0g OyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw4 IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfdFNfKDw4IHggaTE2 PiwgPDggeCBpMTY+KSAjMTYgewotK2RlZmluZSBpbnRlcm5hbCA8OCB4IGkxNj4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X3RTXyg8OCB4IGkxNj4sIDw4IHggaTE2PikgIzE2 IHsKLSAgICUzID0gYWxsb2NhIDw4IHggaTE2PiwgYWxpZ24gMTYKLSAgICU0ID0gYWxsb2NhIDw4 IHggaTE2PiwgYWxpZ24gMTYKLSAgICU1ID0gYWxsb2NhIDw4IHggaTE2PiwgYWxpZ24gMTYKLUBA IC0zNzA2LDcgKzM3MDYsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw4IHggaTE2PiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfdFNfKDw4IHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDE2IHgg aTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X3RTXyg8MTYgeCBpMTY+ LCA8MTYgeCBpMTY+KSAjMTcgewotK2RlZmluZSBpbnRlcm5hbCA8MTYgeCBpMTY+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMTZfdFNfKDwxNiB4IGkxNj4sIDwxNiB4IGkxNj4p ICMxNyB7Ci0gICAlMyA9IGFsbG9jYSA8MTYgeCBpMTY+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxv Y2EgPDE2IHggaTE2PiwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhIDwxNiB4IGkxNj4sIGFsaWdu IDMyCi1AQCAtMzcyMCw3ICszNzIwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpMTY+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMTZfdFNfKDwxNiB4IGkxNj4KLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl90U18oPDMy IHggaTE2PiwgPDMyIHggaTE2PikgIzE4IHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTE2PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjMyX3RTXyg8MzIgeCBpMTY+LCA8MzIg eCBpMTY+KSAjMTggewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLSAgICU0 ID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMTY+ LCBhbGlnbiA2NAotQEAgLTM3MzQsNyArMzczNCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDMyIHgg aTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjMyX3RTXyg8MzIgeCBpMTY+ Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRz b19sb2NhbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZqaihpMzIsIGkzMikgIzE0 IHsKLStkZWZpbmUgaW50ZXJuYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2amoo aTMyLCBpMzIpICMxNCB7Ci0gICAlMyA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLSAgICU0ID0gYWxs b2NhIGkzMiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci1AQCAt Mzg5Miw3ICszODkyLDcgQEAgZGVmaW5lIGludGVybmFsIDwxIHggaTMyPiBAX1pON2RldGFpbHMx NF9faW1wbF91ZGl2cmVtSUxpMUVFRXUyQ012YlRfX2pTMV9TMV91MkMKLSB9Ci0gCi0gOyBGdW5j dGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTMy PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjFfalNfKDwxIHggaTMyPiwgPDEg eCBpMzI+KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3VkaXZ1MkNNdmIxX2pTXyg8MSB4IGkzMj4sIDwxIHggaTMyPikgIzE0IHsKLSAg ICUzID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgPDEgeCBpMzI+ LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLUBAIC0zOTA4LDcg KzM5MDgsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfdWRpdnUyQ012YjFfalNfKDwxIHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0 dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpMzI+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMl9qU18oPDIgeCBpMzI+LCA8MiB4IGkzMj4p ICMxNSB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfdWRpdnUyQ012YjJfalNfKDwyIHggaTMyPiwgPDIgeCBpMzI+KSAjMTUgewotICAgJTMgPSBh bGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWdu IDgKLSAgICU1ID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotQEAgLTQwNTQsNyArNDA1NCw3 IEBAIGRlZmluZSBpbnRlcm5hbCA8MiB4IGkzMj4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJl bUlMaTJFRUV1MkNNdmJUX19qUzFfUzFfdTJDCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5v aW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkzMj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VkaXZ1MkNNdmI0X2pTXyg8NCB4IGkzMj4sIDw0IHggaTMyPikgIzE2IHsK LStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2 dTJDTXZiNF9qU18oPDQgeCBpMzI+LCA8NCB4IGkzMj4pICMxNiB7Ci0gICAlMyA9IGFsbG9jYSA8 NCB4IGkzMj4sIGFsaWduIDE2Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci0g ICAlNSA9IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci1AQCAtNDQ5Miw3ICs0NDkyLDcgQEAg ZGVmaW5lIGludGVybmFsIDwxNiB4IGkzMj4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlM aTE2RUVFdTJDTXZiVF9falMxX1MxX3UKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxp bmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3VkaXZ1MkNNdmIzMl9qU18oPDMyIHggaTMyPiwgPDMyIHggaTMyPikgIzE5IHsK LStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRp dnUyQ012YjMyX2pTXyg8MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAjMTkgewotICAgJTMgPSBhbGxv Y2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci0gICAlNCA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGln biAxMjgKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotQEAgLTQ2MzgsNyAr NDYzOCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MzIgeCBpMzI+IEBfWk43ZGV0YWlsczE0X19pbXBs X3VkaXZyZW1JTGkzMkVFRXUyQ012YlRfX2pTMV9TMV91Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0 cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBpMzIgQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VyZW1qaihpMzIsIGkzMikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgaTMy IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtamooaTMyLCBpMzIpICMxNCB7Ci0gICAlMyA9 IGFsbG9jYSBpMzIsIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotICAgJTUg PSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci1AQCAtNDY2NCw3ICs0NjY0LDcgQEAgZGVmaW5l IGRzb19sb2NhbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW1qaihpMzIsIGkzMikg IzE0IHsKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZp bmUgZHNvX2xvY2FsIDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012 YjFfalNfKDwxIHggaTMyPiwgPDEgeCBpMzI+KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4 IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX2pTXyg8MSB4IGkzMj4s IDwxIHggaTMyPikgIzE0IHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotICAg JTQgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MSB4IGkzMj4s IGFsaWduIDQKLUBAIC00Njc4LDcgKzQ2NzgsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTMy PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjFfalNfKDwxIHggaTMyPiwgPAot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29f bG9jYWwgPDIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMl9qU18o PDIgeCBpMzI+LCA8MiB4IGkzMj4pICMxNSB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHggaTMyPiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfalNfKDwyIHggaTMyPiwgPDIgeCBp MzI+KSAjMTUgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci0gICAlNCA9IGFs bG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24g OAotQEAgLTQ2OTIsNyArNDY5Miw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDIgeCBpMzI+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMl9qU18oPDIgeCBpMzI+LCA8Ci0gfQotIAot IDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8 NCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI0X2pTXyg8NCB4IGkz Mj4sIDw0IHggaTMyPikgIzE2IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpMzI+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF9qU18oPDQgeCBpMzI+LCA8NCB4IGkzMj4pICMx NiB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci0gICAlNCA9IGFsbG9jYSA8 NCB4IGkzMj4sIGFsaWduIDE2Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci1A QCAtNDcwNiw3ICs0NzA2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkzMj4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI0X2pTXyg8NCB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBG dW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw4IHgg aTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfalNfKDw4IHggaTMyPiwg PDggeCBpMzI+KSAjMTcgewotK2RlZmluZSBpbnRlcm5hbCA8OCB4IGkzMj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X2pTXyg8OCB4IGkzMj4sIDw4IHggaTMyPikgIzE3IHsK LSAgICUzID0gYWxsb2NhIDw4IHggaTMyPiwgYWxpZ24gMzIKLSAgICU0ID0gYWxsb2NhIDw4IHgg aTMyPiwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhIDw4IHggaTMyPiwgYWxpZ24gMzIKLUBAIC00 NzIwLDcgKzQ3MjAsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw4IHggaTMyPiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfalNfKDw4IHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDE2IHggaTMy PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X2pTXyg8MTYgeCBpMzI+LCA8 MTYgeCBpMzI+KSAjMTggewotK2RlZmluZSBpbnRlcm5hbCA8MTYgeCBpMzI+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMTZfalNfKDwxNiB4IGkzMj4sIDwxNiB4IGkzMj4pICMx OCB7Ci0gICAlMyA9IGFsbG9jYSA8MTYgeCBpMzI+LCBhbGlnbiA2NAotICAgJTQgPSBhbGxvY2Eg PDE2IHggaTMyPiwgYWxpZ24gNjQKLSAgICU1ID0gYWxsb2NhIDwxNiB4IGkzMj4sIGFsaWduIDY0 Ci1AQCAtNDczNCw3ICs0NzM0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpMzI+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMTZfalNfKDwxNiB4IGkzMj4KLSB9Ci0gCi0g OyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwz MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl9qU18oPDMyIHgg aTMyPiwgPDMyIHggaTMyPikgIzE5IHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTMyPiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjMyX2pTXyg8MzIgeCBpMzI+LCA8MzIgeCBp MzI+KSAjMTkgewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci0gICAlNCA9 IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGkzMj4s IGFsaWduIDEyOAotQEAgLTQ3NDgsNyArNDc0OCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDMyIHgg aTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjMyX2pTXyg8MzIgeCBpMzI+ Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRz b19sb2NhbCB2b2lkIEBfX2RvX3ByaW50X2NtKGk4KiwgaTgqLCBpMzIsIGk2NCwgaTMyKiwgaTMy LCBpMzIpICMyMyAhZGJnICExNSB7Ci0rZGVmaW5lIGludGVybmFsIHZvaWQgQF9fZG9fcHJpbnRf Y20oaTgqLCBpOCosIGkzMiwgaTY0LCBpMzIqLCBpMzIsIGkzMikgIzIzICFkYmcgITE1IHsKLSAg ICU4ID0gYWxsb2NhIGk4KiwgYWxpZ24gOAotICAgJTkgPSBhbGxvY2EgaTgqLCBhbGlnbiA4Ci0g ICAlMTAgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci1AQCAtNTA3MCw3ICs1MDcwLDcgQEAgZGVmaW5l IGRzb19sb2NhbCB2b2lkIEBfX2RvX3ByaW50X2x6KGkzMiwgaTgqLCBpMzIsIGk2NCwgaTMyKiwg aTMyLCBpMzIsIGkzMiwgaTMKLSAgICU2NyA9IGxvYWQgaTY0LCBpNjQqICUxMywgYWxpZ24gOCwg IWRiZyAhMTU5LCAhdGJhYSAhMTkKLSAgICU2OCA9IGxvYWQgPDUgeCBpMzI+LCA8NSB4IGkzMj4q ICUyMSwgYWxpZ24gMzIsICFkYmcgITE2MCwgIXRiYWEgITcKLSAgIGNhbGwgdm9pZCBAX1pOMTNW YXJ5aW5nV3JpdGVyQzJFUnlSUEtqaXl1MkNNdmI1X2koJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUy MywgaTY0KiBkZXJlZmVyZW5jZWFibGUoOCkgJTE5LCBpMzIqKiBkZXJlZmVyZW5jZWFibGUoOCkg JTE0LCBpMzIgJTY2LCBpNjQgJTY3LCA8NSB4IGkzMj4gJTY4KSwgIWRiZyAhMTYxCi0tICAlNjkg PSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8xNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9y bVdyaXRlcjEzVmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0ICU2 MiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUyMiwgJWNsYXNzLlZhcnlp bmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUyMyksICFkYmcgITE2MgotKyAgJTY5ID0gY2FsbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIx M1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAlNjIsICVjbGFz cy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTIy LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWdu IDMyICUyMyksICFkYmcgITE2MgotICAgYnIgbGFiZWwgJTcwLCAhZGJnICExNjMKLSAKLSA7IDxs YWJlbD46NzA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAl NjAKLUBAIC01MTg4LDcgKzUxODgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDUgeCBpMzI+IEBfWjE3 Z2V0X2F1eGlsaWFyeV9zdHJ2KCkgIzI4IGNvbWRhdCAhZGJnICExNzggewotIH0KLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZv cm1Xcml0ZXIxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCwg JWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlY2xhc3MuVmFyeWluZ1dyaXRl ciogYnl2YWwgYWxpZ24gMzIpICMyNSBjb21kYXQgIWRiZyAhMTkxIHsKLStkZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3Jp dGVyMTNWYXJ5aW5nV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQsICVjbGFz cy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIsICVj bGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIp ICMyNSBjb21kYXQgIWRiZyAhMTkxIHsKLSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAl NSA9IGFsbG9jYSAlY2xhc3MuVW5pZm9ybVdyaXRlciwgYWxpZ24gMzIKLSAgICU2ID0gYWxsb2Nh ICVjbGFzcy5WYXJ5aW5nV3JpdGVyLCBhbGlnbiAzMgotQEAgLTUxOTcsNyArNTE5Nyw3IEBAIGRl ZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kx M1VuaWZvcm1Xcml0ZXIxM1ZhcnlpCi0gICAlOCA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0 ZXIqICU1IHRvIGk4KiwgIWRiZyAhMTk2Ci0gICAlOSA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1X cml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTk2Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAw aTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICU4LCBpOCogYWxpZ24gMzIgJTksIGk2NCA2NCwgaTEg ZmFsc2UpLCAhZGJnICExOTYsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMTAgPSBjYWxsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFVuaWZvcm1JMTNVbmlmb3JtV3Jp dGVyRUViTlNfOEVuY29kaW5nRVRfKGk4IHNpZ25leHQgJTcsICVjbGFzcy5Vbmlmb3JtV3JpdGVy KiBieXZhbCBhbGlnbiAzMiAlNSksICFkYmcgITE5OAotKyAgJTEwID0gY2FsbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlmb3JtSTEzVW5pZm9ybVdyaXRlckVF Yk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0ICU3LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2 YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICU1KSwgIWRiZyAhMTk4Ci0gICBiciBp MSAlMTAsIGxhYmVsICUxNiwgbGFiZWwgJTExLCAhZGJnICExOTkKLSAKLSA7IDxsYWJlbD46MTE6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMwotQEAgLTUy MDUsNyArNTIwNSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv MTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIxM1ZhcnlpCi0gICAlMTMgPSBiaXRjYXN0 ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlNiB0byBpOCosICFkYmcgITIwMQotICAgJTE0ID0gYml0 Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTIgdG8gaTgqLCAhZGJnICEyMDEKLSAgIGNhbGwg dm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTEzLCBpOCogYWxp Z24gMzIgJTE0LCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMjAxLCAhdGJhYS5zdHJ1Y3QgITE5 NwotLSAgJTE1ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGlu ZzRWYXJ5aW5nSTEzVmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0ICUx MiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU2KSwgIWRiZyAhMjAyCi0r ICAlMTUgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFZh cnlpbmdJMTNWYXJ5aW5nV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfKGk4IHNpZ25leHQgJTEyLCAl Y2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMy ICU2KSwgIWRiZyAhMjAyCi0gICBiciBsYWJlbCAlMTYsICFkYmcgITE5OQotIAotIDsgPGxhYmVs PjoxNjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUxMSwg JTMKLUBAIC01MjgwLDcgKzUyODAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgdm9pZCBAX1pOMTNWYXJ5 aW5nV3JpdGVyQzJFUnlSUEtqaXl1MkNNdmI1X2koJWNsYXNzLlZhcnlpbmdXcml0ZQotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwg aTMyIEBfX251bV9jb3JlcygpICMyOSAhZGJnICEyMzYgewotK2RlZmluZSBpbnRlcm5hbCBpMzIg QF9fbnVtX2NvcmVzKCkgIzI5ICFkYmcgITIzNiB7Ci0gICByZXQgaTMyIC0xLCAhZGJnICEyMzcK LSB9Ci0gCi1AQCAtODg3MCw3ICs4ODcwLDcgQEAgZGVjbGFyZSBkc29fbG9jYWwgdm9pZCBAX1pO N2RldGFpbHMzN19fY21faW50cmluc2ljX2ltcGxfc3ZtX3NjYXR0ZXJfd3JpdGVJaUxpMUUKLSBk ZWNsYXJlIHZvaWQgQGxsdm0uZ2VueC5zdm0uc2NhdHRlci52MWkxLnYxaTY0LnYxaTMyKDwxIHgg aTE+LCBpMzIsIDwxIHggaTY0PiwgPDEgeCBpMzI+KSAjMjcKLSAKLSA7IEZ1bmN0aW9uIEF0dHJz OiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlmb3JtSTEzVW5pZm9ybVdy aXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciog Ynl2YWwgYWxpZ24gMzIpICMyNSBjb21kYXQgIWRiZyAhMTY0NSB7Ci0rZGVmaW5lIGludGVybmFs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFVuaWZvcm1JMTNVbmlm b3JtV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3Jp dGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIpICMyNSBjb21kYXQgIWRi ZyAhMTY0NSB7Ci0gICAlMyA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgJWNs YXNzLlVuaWZvcm1Xcml0ZXIsIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSAlInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFVuaWZvcm0iLCBhbGlnbiAxCi1AQCAtODg3OSw3ICs4ODc5LDcgQEAg ZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5n NFVuaWZvcm1JMTNVbmlmb3JtV3JpdGUKLSAgICU3ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdy aXRlciogJTQgdG8gaTgqLCAhZGJnICExNjQ3Ci0gICAlOCA9IGJpdGNhc3QgJWNsYXNzLlVuaWZv cm1Xcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTY0NwotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNw eS5wMGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAlNywgaTgqIGFsaWduIDMyICU4LCBpNjQgNjQs IGkxIGZhbHNlKSwgIWRiZyAhMTY0NywgIXRiYWEuc3RydWN0ICExOTcKLS0gICU5ID0gY2FsbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3Jt V3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWdu ZXh0ICU2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTQsICUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTUpLCAhZGJnICEx NjQ4Ci0rICAlOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRj aEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5j b2RpbmdFVF9UMF8oaTggc2lnbmV4dCAlNiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVj bGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlNCwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3Jt IikgYWxpZ24gMSAlNSksICFkYmcgITE2NDgKLSAgIHJldCBpMSAlOSwgIWRiZyAhMTY0OQotIH0K LSAKLUBAIC04ODg3LDcgKzg4ODcsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VW5pZm9ybUkxM1VuaWZvcm1Xcml0ZQotIGRlY2xh cmUgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogbm9jYXB0dXJlIHdyaXRlb25s eSwgaTgqIG5vY2FwdHVyZSByZWFkb25seSwgaTY0LCBpMSkgIzMyCi0gCi0gOyBGdW5jdGlvbiBB dHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VmFyeWluZ0kxM1Zhcnlp bmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0 ZXIqIGJ5dmFsIGFsaWduIDMyKSAjMjUgY29tZGF0ICFkYmcgITE2NTAgewotK2RlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRWYXJ5aW5nSTEz VmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWlu Z1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyKSAjMjUgY29tZGF0 ICFkYmcgITE2NTAgewotICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0ID0gYWxsb2Nh ICVjbGFzcy5WYXJ5aW5nV3JpdGVyLCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2EgJSJzdHJ1Y3Qu UHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiwgYWxpZ24gMQotQEAgLTg4OTYsMTIgKzg4OTYs MTIgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVu Y29kaW5nNFZhcnlpbmdJMTNWYXJ5aW5nV3JpdGUKLSAgICU3ID0gYml0Y2FzdCAlY2xhc3MuVmFy eWluZ1dyaXRlciogJTQgdG8gaTgqLCAhZGJnICExNjUyCi0gICAlOCA9IGJpdGNhc3QgJWNsYXNz LlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTY1MgotICAgY2FsbCB2b2lkIEBsbHZt Lm1lbWNweS5wMGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAlNywgaTgqIGFsaWduIDMyICU4LCBp NjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY1MiwgIXRiYWEuc3RydWN0ICExOTcKLS0gICU5ID0g Y2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNW YXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhp OCBzaWduZXh0ICU2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTQsICUi c3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEgJTUpLCAh ZGJnICExNjUzCi0rICAlOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwx NHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJO U184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAlNiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5 dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlNCwgJSJzdHJ1Y3QuUHJpbnRJbmZv OjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRW YXJ5aW5nIikgYWxpZ24gMSAlNSksICFkYmcgITE2NTMKLSAgIHJldCBpMSAlOSwgIWRiZyAhMTY1 NAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vu d2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0 c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5T XzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwg YWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFs aWduIDEpICMyNSBjb21kYXQgIWRiZyAhMTY1NSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXJO U18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQsICVj bGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIs ICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMTY1 NSB7Ci0gICAlNCA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgJWNsYXNzLlVu aWZvcm1Xcml0ZXIsIGFsaWduIDMyCi0gICAlNiA9IGFsbG9jYSAlInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFVuaWZvcm0iLCBhbGlnbiAxCi1AQCAtODkyNCw3ICs4OTI0LDcgQEAgZGVmaW5l IGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGlu Z0kxM1VuaWZvcm1Xcml0ZXIKLSAgICUyMiA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIq ICU1IHRvIGk4KiwgIWRiZyAhMTY1NwotICAgJTIzID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdy aXRlciogJTEgdG8gaTgqLCAhZGJnICExNjU3Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAw aTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICUyMiwgaTgqIGFsaWduIDMyICUyMywgaTY0IDY0LCBp MSBmYWxzZSksICFkYmcgITE2NTcsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMjQgPSBjYWxsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEz VW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFf KGk4IHNpZ25leHQgJTIxLCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTUs ICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTYp LCAhZGJnICExNjU4Ci0rICAlMjQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0 YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0 VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTIxLCAlY2xhc3MuVW5p Zm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICU1LCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICU2KSwgIWRiZyAhMTY1OAotICAgYnIgaTEg JTI0LCBsYWJlbCAlNjAsIGxhYmVsICUyNSwgIWRiZyAhMTY1OQotIAotIDsgPGxhYmVsPjoyNTog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUzCi1AQCAtODkz Miw3ICs4OTMyLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIKLSAgICUyNyA9IGJpdGNhc3Qg JWNsYXNzLlVuaWZvcm1Xcml0ZXIqICU3IHRvIGk4KiwgIWRiZyAhMTY2MQotICAgJTI4ID0gYml0 Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjYxCi0gICBjYWxs IHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICUyNywgaTgqIGFs aWduIDMyICUyOCwgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITE2NjEsICF0YmFhLnN0cnVjdCAh MTk3Ci0tICAlMjkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBs eUlmUHJvcGVyRW5jb2RpbmdJaTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVF RWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTI2LCAlY2xhc3MuVW5pZm9ybVdyaXRl ciogYnl2YWwgYWxpZ24gMzIgJTcsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9y bSIqIGJ5dmFsIGFsaWduIDEgJTgpLCAhZGJnICExNjYyCi0rICAlMjkgPSBjYWxsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVW5pZm9y bVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNp Z25leHQgJTI2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0 ZXIpIGFsaWduIDMyICU3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBi eXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICU4KSwg IWRiZyAhMTY2MgotICAgYnIgaTEgJTI5LCBsYWJlbCAlNjAsIGxhYmVsICUzMCwgIWRiZyAhMTY2 MwotIAotIDsgPGxhYmVsPjozMDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OyBwcmVkcyA9ICUyNQotQEAgLTg5NDAsNyArODk0MCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3Jp dGVyCi0gICAlMzIgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlOSB0byBpOCosICFk YmcgITE2NjUKLSAgICUzMyA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICUxIHRvIGk4 KiwgIWRiZyAhMTY2NQotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTY0KGk4 KiBhbGlnbiAzMiAlMzIsIGk4KiBhbGlnbiAzMiAlMzMsIGk2NCA2NCwgaTEgZmFsc2UpLCAhZGJn ICExNjY1LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTM0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1VuaWZvcm1Xcml0ZXJO U18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUz MSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU5LCAlInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICUxMCksICFkYmcgITE2NjYK LSsgICUzNCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQ cm9wZXJFbmNvZGluZ0lqMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5T XzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzEsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBi eXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTksICUic3RydWN0LlByaW50SW5m bzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0 VW5pZm9ybSIpIGFsaWduIDEgJTEwKSwgIWRiZyAhMTY2NgotICAgYnIgaTEgJTM0LCBsYWJlbCAl NjAsIGxhYmVsICUzNSwgIWRiZyAhMTY2NwotIAotIDsgPGxhYmVsPjozNTogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUzMAotQEAgLTg5NDgsNyArODk0OCw3 IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dp dGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlMzcgPSBiaXRjYXN0ICVjbGFzcy5Vbmlm b3JtV3JpdGVyKiAlMTEgdG8gaTgqLCAhZGJnICExNjY5Ci0gICAlMzggPSBiaXRjYXN0ICVjbGFz cy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2NjkKLSAgIGNhbGwgdm9pZCBAbGx2 bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTM3LCBpOCogYWxpZ24gMzIgJTM4 LCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY2OSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICUz OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJF bmNvZGluZ0lmMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNv ZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzYsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBh bGlnbiAzMiAlMTEsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFs IGFsaWduIDEgJTEyKSwgIWRiZyAhMTY3MAotKyAgJTM5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYxM1VuaWZvcm1Xcml0ZXJO U18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUz NiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGln biAzMiAlMTEsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUi c3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTEyKSwgIWRiZyAh MTY3MAotICAgYnIgaTEgJTM5LCBsYWJlbCAlNjAsIGxhYmVsICU0MCwgIWRiZyAhMTY3MQotIAot IDsgPGxhYmVsPjo0MDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVk cyA9ICUzNQotQEAgLTg5NTYsNyArODk1Niw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0g ICAlNDIgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMTMgdG8gaTgqLCAhZGJnICEx NjczCi0gICAlNDMgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFk YmcgITE2NzMKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxp Z24gMzIgJTQyLCBpOCogYWxpZ24gMzIgJTQzLCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY3 MywgIXRiYWEuc3RydWN0ICExOTcKLS0gICU0NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNVbmlmb3JtV3JpdGVyTlNfMTZF bmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDEsICVj bGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTMsICUic3RydWN0LlByaW50SW5m bzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTE0KSwgIWRiZyAhMTY3NAotKyAg JTQ0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3Bl ckVuY29kaW5nSXgxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVu Y29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0MSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFs KCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlMTMsICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5p Zm9ybSIpIGFsaWduIDEgJTE0KSwgIWRiZyAhMTY3NAotICAgYnIgaTEgJTQ0LCBsYWJlbCAlNjAs IGxhYmVsICU0NSwgIWRiZyAhMTY3NQotIAotIDsgPGxhYmVsPjo0NTogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU0MAotQEAgLTg5NjQsNyArODk2NCw3IEBA IGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNo RW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlNDcgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3Jt V3JpdGVyKiAlMTUgdG8gaTgqLCAhZGJnICExNjc3Ci0gICAlNDggPSBiaXRjYXN0ICVjbGFzcy5V bmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2NzcKLSAgIGNhbGwgdm9pZCBAbGx2bS5t ZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTQ3LCBpOCogYWxpZ24gMzIgJTQ4LCBp NjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY3NywgIXRiYWEuc3RydWN0ICExOTcKLS0gICU0OSA9 IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNv ZGluZ0l5MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGlu Z0VUMF9UMV8oaTggc2lnbmV4dCAlNDYsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGln biAzMiAlMTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFs aWduIDEgJTE2KSwgIWRiZyAhMTY3OAotKyAgJTQ5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1VuaWZvcm1Xcml0ZXJOU18x NkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0Niwg JWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAz MiAlMTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3Ry dWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTE2KSwgIWRiZyAhMTY3 OAotICAgYnIgaTEgJTQ5LCBsYWJlbCAlNjAsIGxhYmVsICU1MCwgIWRiZyAhMTY3OQotIAotIDsg PGxhYmVsPjo1MDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9 ICU0NQotQEAgLTg5NzIsNyArODk3Miw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAl NTIgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMTcgdG8gaTgqLCAhZGJnICExNjgx Ci0gICAlNTMgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcg ITE2ODEKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24g MzIgJTUyLCBpOCogYWxpZ24gMzIgJTUzLCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY4MSwg IXRiYWEuc3RydWN0ICExOTcKLS0gICU1NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNv ZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNTEsICVjbGFz cy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTcsICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEgJTE4KSwgIWRiZyAhMTY4MgotKyAgJTU0 ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSWQxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29k aW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1MSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVj bGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlMTcsICUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9y bSIpIGFsaWduIDEgJTE4KSwgIWRiZyAhMTY4MgotICAgYnIgaTEgJTU0LCBsYWJlbCAlNjAsIGxh YmVsICU1NSwgIWRiZyAhMTY4MwotIAotIDsgPGxhYmVsPjo1NTogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU1MAotQEAgLTg5ODAsNyArODk4MCw3IEBAIGRl ZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5j b2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlNTcgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3Jp dGVyKiAlMTkgdG8gaTgqLCAhZGJnICExNjg1Ci0gICAlNTggPSBiaXRjYXN0ICVjbGFzcy5Vbmlm b3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2ODUKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1j cHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTU3LCBpOCogYWxpZ24gMzIgJTU4LCBpNjQg NjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY4NSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICU1OSA9IGNh bGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGlu Z0lQdjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdF VDBfVDFfKGk4IHNpZ25leHQgJTU2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24g MzIgJTE5LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGln biAxICUyMCksICFkYmcgITE2ODYKLSsgICU1OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEzVW5pZm9ybVdyaXRlck5TXzE2 RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTU2LCAl Y2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMy ICUxOSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1 Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSAlMjApLCAhZGJnICExNjg2 Ci0gICBiciBsYWJlbCAlNjAsICFkYmcgITE2ODMKLSAKLSA7IDxsYWJlbD46NjA6ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNTUsICU1MCwgJTQ1LCAlNDAs ICUzNSwgJTMwLCAlMjUsICUzCi1AQCAtODk4OSw3ICs4OTg5LDcgQEAgZGVmaW5lIGludGVybmFs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZv cm1Xcml0ZXIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhp bnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZk ZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0liMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGlu ZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZv cm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVu aWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2ODggewotK2RlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSWIxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29k aW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNz LlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVu aWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGln biAxKSAjMjUgY29tZGF0ICFkYmcgITE2ODggewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEK LSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGln biAxLCAhdGJhYSAhMTkzCi1AQCAtOTAxNSw3ICs5MDE1LDcgQEAgZGVmaW5lIGludGVybmFsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEz VW5pZm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQg bm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRh aWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lpMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRV bmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1X cml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZv cm0iKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2OTcgewotK2RlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29k aW5nSWkxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5n RVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVu aWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZv cm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAx KSAjMjUgY29tZGF0ICFkYmcgITE2OTcgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAg ICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAx LCAhdGJhYSAhMTkzCi1AQCAtOTA0MSw3ICs5MDQxLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVW5p Zm8KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91 bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwy MWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlm b3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0 ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0i KiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MDYgewotK2RlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5n SWoxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQw X1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZv cm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0i KiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAj MjUgY29tZGF0ICFkYmcgITE3MDYgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1 ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAh dGJhYSAhMTkzCi1AQCAtOTA2Nyw3ICs5MDY3LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEzVW5pZm8K LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndp bmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFw cGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3Jt RUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIq IGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBi eXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MTUgewotK2RlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYx M1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1Qx XyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1X cml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBi eXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUg Y29tZGF0ICFkYmcgITE3MTUgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0g YWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJh YSAhMTkzCi1AQCAtOTA5Myw3ICs5MDkzLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZjEzVW5pZm8KLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQK LS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5 SWZQcm9wZXJFbmNvZGluZ0l4MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVF Yk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5 dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZh bCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MjQgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1Vu aWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhp OCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0 ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZh bCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29t ZGF0ICFkYmcgITE3MjQgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxs b2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAh MTkzCi1AQCAtOTExOSw3ICs5MTE5LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9a TjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVW5pZm8KLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1k ZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQ cm9wZXJFbmNvZGluZ0l5MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5T XzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFs IGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBh bGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3MzMgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1VuaWZv cm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBz aWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIp IGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCgl InN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0 ICFkYmcgITE3MzMgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2Nh IGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkz Ci1AQCAtOTE0NSw3ICs5MTQ1LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQ cmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVW5pZm8KLSB9Ci0gCi0g OyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZp bmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9w ZXJFbmNvZGluZ0lkMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhF bmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFs aWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGln biAxKSAjMjUgY29tZGF0ICFkYmcgITE3NDIgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1VuaWZvcm1X cml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWdu ZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFs aWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFk YmcgITE3NDIgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4 LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1A QCAtOTE3MSw3ICs5MTcxLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmlu dEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZDEzVW5pZm8KLSB9Ci0gCi0gOyBG dW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUg aW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJF bmNvZGluZ0lQdjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5j b2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGln biAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24g MSkgIzI1IGNvbWRhdCAhZGJnICExNzUxIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEzVW5pZm9ybVdy aXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25l eHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxp Z24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3Ry dWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRi ZyAhMTc1MSB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgaTgs IGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFsaWduIDEsICF0YmFhICExOTMKLUBA IC0xMDAxMyw3ICsxMDAxMyw3IEBAIGRlZmluZSBpbnRlcm5hbCBpMzIgQF9aTjdkZXRhaWxzMThf Y21fcHJpbnRfdHlwZV9vY2xJUHZFRU5TXzE4U0hBREVSX1BSSU5URl9UWVBFCi0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5l IGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGlu Z0kxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVRf VDBfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNv bWRhdCAhZGJnICEyMDYxIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0 VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdX cml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJp bnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRWYXJ5aW5nIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMDYxIHsKLSAgICU0ID0g YWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSAlY2xhc3MuVmFyeWluZ1dyaXRlciwg YWxpZ24gMzIKLSAgICU2ID0gYWxsb2NhICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFy eWluZyIsIGFsaWduIDEKLUBAIC0xMDAzNiw3ICsxMDAzNiw3IEBAIGRlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5n V3JpdGVyCi0gICAlMjIgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlNSB0byBpOCos ICFkYmcgITIwNjMKLSAgICUyMyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRv IGk4KiwgIWRiZyAhMjA2MwotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTY0 KGk4KiBhbGlnbiAzMiAlMjIsIGk4KiBhbGlnbiAzMiAlMjMsIGk2NCA2NCwgaTEgZmFsc2UpLCAh ZGJnICEyMDYzLCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTI0ID0gY2FsbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1ZhcnlpbmdXcml0 ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0 ICUyMSwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU1LCAlInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICU2KSwgIWRiZyAhMjA2 NAotKyAgJTI0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJ ZlByb3BlckVuY29kaW5nSWIxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUVi TlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyMSwgJWNsYXNzLlZhcnlpbmdXcml0ZXIq IGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlNSwgJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRWYXJ5aW5nIikgYWxpZ24gMSAlNiksICFkYmcgITIwNjQKLSAgIGJyIGkxICUyNCwgbGFiZWwg JTYwLCBsYWJlbCAlMjUsICFkYmcgITIwNjUKLSAKLSA7IDxsYWJlbD46MjU6ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMwotQEAgLTEwMDQ0LDcgKzEwMDQ0 LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRz d2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIKLSAgICUyNyA9IGJpdGNhc3QgJWNsYXNzLlZh cnlpbmdXcml0ZXIqICU3IHRvIGk4KiwgIWRiZyAhMjA2NwotICAgJTI4ID0gYml0Y2FzdCAlY2xh c3MuVmFyeWluZ1dyaXRlciogJTEgdG8gaTgqLCAhZGJnICEyMDY3Ci0gICBjYWxsIHZvaWQgQGxs dm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICUyNywgaTgqIGFsaWduIDMyICUy OCwgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITIwNjcsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAl MjkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVy RW5jb2RpbmdJaTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5j b2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTI2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwg YWxpZ24gMzIgJTcsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFs IGFsaWduIDEgJTgpLCAhZGJnICEyMDY4Ci0rICAlMjkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQ cmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVmFyeWluZ1dyaXRlck5T XzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTI2 LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWdu IDMyICU3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxICU4KSwgIWRiZyAhMjA2 OAotICAgYnIgaTEgJTI5LCBsYWJlbCAlNjAsIGxhYmVsICUzMCwgIWRiZyAhMjA2OQotIAotIDsg PGxhYmVsPjozMDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9 ICUyNQotQEAgLTEwMDUyLDcgKzEwMDUyLDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIKLSAg ICUzMiA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICU5IHRvIGk4KiwgIWRiZyAhMjA3 MQotICAgJTMzID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEgdG8gaTgqLCAhZGJn ICEyMDcxCi0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWdu IDMyICUzMiwgaTgqIGFsaWduIDMyICUzMywgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITIwNzEs ICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMzQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludElu Zm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEzVmFyeWluZ1dyaXRlck5TXzE2RW5j b2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTMxLCAlY2xh c3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTksICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEgJTEwKSwgIWRiZyAhMjA3MgotKyAgJTM0 ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSWoxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29k aW5nRVQwX1QxXyhpOCBzaWduZXh0ICUzMSwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVj bGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlOSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5n IikgYWxpZ24gMSAlMTApLCAhZGJnICEyMDcyCi0gICBiciBpMSAlMzQsIGxhYmVsICU2MCwgbGFi ZWwgJTM1LCAhZGJnICEyMDczCi0gCi0gOyA8bGFiZWw+OjM1OiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTMwCi1AQCAtMTAwNjAsNyArMTAwNjAsNyBAQCBk ZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVu Y29kaW5nSTEzVmFyeWluZ1dyaXRlcgotICAgJTM3ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dy aXRlciogJTExIHRvIGk4KiwgIWRiZyAhMjA3NQotICAgJTM4ID0gYml0Y2FzdCAlY2xhc3MuVmFy eWluZ1dyaXRlciogJTEgdG8gaTgqLCAhZGJnICEyMDc1Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVt Y3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICUzNywgaTgqIGFsaWduIDMyICUzOCwgaTY0 IDY0LCBpMSBmYWxzZSksICFkYmcgITIwNzUsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMzkgPSBj YWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJZjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdF VDBfVDFfKGk4IHNpZ25leHQgJTM2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24g MzIgJTExLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGln biAxICUxMiksICFkYmcgITIwNzYKLSsgICUzOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNWYXJ5aW5nV3JpdGVyTlNfMTZF bmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzYsICVj bGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIg JTExLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxICUxMiksICFkYmcgITIwNzYK LSAgIGJyIGkxICUzOSwgbGFiZWwgJTYwLCBsYWJlbCAlNDAsICFkYmcgITIwNzcKLSAKLSA7IDxs YWJlbD46NDA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAl MzUKLUBAIC0xMDA2OCw3ICsxMDA2OCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAl NDIgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMTMgdG8gaTgqLCAhZGJnICEyMDc5 Ci0gICAlNDMgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMSB0byBpOCosICFkYmcg ITIwNzkKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24g MzIgJTQyLCBpOCogYWxpZ24gMzIgJTQzLCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMjA3OSwg IXRiYWEuc3RydWN0ICExOTcKLS0gICU0NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNv ZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDEsICVjbGFz cy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTMsICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEgJTE0KSwgIWRiZyAhMjA4MAotKyAgJTQ0 ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSXgxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29k aW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0MSwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVj bGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlMTMsICUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWlu ZyIpIGFsaWduIDEgJTE0KSwgIWRiZyAhMjA4MAotICAgYnIgaTEgJTQ0LCBsYWJlbCAlNjAsIGxh YmVsICU0NSwgIWRiZyAhMjA4MQotIAotIDsgPGxhYmVsPjo0NTogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU0MAotQEAgLTEwMDc2LDcgKzEwMDc2LDcgQEAg ZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hF bmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIKLSAgICU0NyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdX cml0ZXIqICUxNSB0byBpOCosICFkYmcgITIwODMKLSAgICU0OCA9IGJpdGNhc3QgJWNsYXNzLlZh cnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA4MwotICAgY2FsbCB2b2lkIEBsbHZtLm1l bWNweS5wMGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAlNDcsIGk4KiBhbGlnbiAzMiAlNDgsIGk2 NCA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDgzLCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTQ5ID0g Y2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29k aW5nSXkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5n RVQwX1QxXyhpOCBzaWduZXh0ICU0NiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWdu IDMyICUxNSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxp Z24gMSAlMTYpLCAhZGJnICEyMDg0Ci0rICAlNDkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmlu dEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVmFyeWluZ1dyaXRlck5TXzE2 RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTQ2LCAl Y2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMy ICUxNSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1 Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlMTYpLCAhZGJnICEyMDg0 Ci0gICBiciBpMSAlNDksIGxhYmVsICU2MCwgbGFiZWwgJTUwLCAhZGJnICEyMDg1Ci0gCi0gOyA8 bGFiZWw+OjUwOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0g JTQ1Ci1AQCAtMTAwODQsNyArMTAwODQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlcgotICAg JTUyID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTE3IHRvIGk4KiwgIWRiZyAhMjA4 NwotICAgJTUzID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEgdG8gaTgqLCAhZGJn ICEyMDg3Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWdu IDMyICU1MiwgaTgqIGFsaWduIDMyICU1MywgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITIwODcs ICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNTQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludElu Zm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZDEzVmFyeWluZ1dyaXRlck5TXzE2RW5j b2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTUxLCAlY2xh c3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTE3LCAlInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICUxOCksICFkYmcgITIwODgKLSsgICU1 NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJF bmNvZGluZ0lkMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNv ZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNTEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCgl Y2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTE3LCAlInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlp bmciKSBhbGlnbiAxICUxOCksICFkYmcgITIwODgKLSAgIGJyIGkxICU1NCwgbGFiZWwgJTYwLCBs YWJlbCAlNTUsICFkYmcgITIwODkKLSAKLSA7IDxsYWJlbD46NTU6ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNTAKLUBAIC0xMDA5Miw3ICsxMDA5Miw3IEBA IGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNo RW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAlNTcgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5n V3JpdGVyKiAlMTkgdG8gaTgqLCAhZGJnICEyMDkxCi0gICAlNTggPSBiaXRjYXN0ICVjbGFzcy5W YXJ5aW5nV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITIwOTEKLSAgIGNhbGwgdm9pZCBAbGx2bS5t ZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTU3LCBpOCogYWxpZ24gMzIgJTU4LCBp NjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMjA5MSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICU1OSA9 IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNv ZGluZ0lQdjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2Rp bmdFVDBfVDFfKGk4IHNpZ25leHQgJTU2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxp Z24gMzIgJTE5LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBh bGlnbiAxICUyMCksICFkYmcgITIwOTIKLSsgICU1OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEzVmFyeWluZ1dyaXRlck5T XzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTU2 LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWdu IDMyICUxOSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlMjApLCAhZGJnICEy MDkyCi0gICBiciBsYWJlbCAlNjAsICFkYmcgITIwODkKLSAKLSA7IDxsYWJlbD46NjA6ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNTUsICU1MCwgJTQ1LCAl NDAsICUzNSwgJTMwLCAlMjUsICUzCi1AQCAtMTAxMDEsNyArMTAxMDEsNyBAQCBkZWZpbmUgaW50 ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEz VmFyeWluZ1dyaXRlcgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5s aW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1ZhcnlpbmdXcml0ZXJOU18xNkVu Y29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3Mu VmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rp bmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjA5NCB7Ci0rZGVm aW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJv cGVyRW5jb2RpbmdJYjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184 RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCgl Y2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rp bmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIp IGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjA5NCB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxp Z24gMQotICAgJTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUs IGFsaWduIDEsICF0YmFhICExOTMKLUBAIC0xMDEyNyw3ICsxMDEyNyw3IEBAIGRlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29k aW5nSWIxM1ZhcnlpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxp bmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludElu Zm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVmFyeWluZ1dyaXRlck5TXzE2RW5j b2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5W YXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTAzIHsKLStkZWZp bmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9w ZXJFbmNvZGluZ0lpMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhF bmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVj bGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikg YWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTAzIHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGln biAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwg YWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTEwMTUzLDcgKzEwMTUzLDcgQEAgZGVmaW5lIGludGVy bmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJaTEzVmFyeWkKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGlu ZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNv ZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZh cnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFZhcnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxMTIgewotK2RlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3Bl ckVuY29kaW5nSWoxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVu Y29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNs YXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBh bGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxMTIgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWdu IDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBh bGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtMTAxNzksNyArMTAxNzksNyBAQCBkZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGlu Z0lqMTNWYXJ5aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5l aGludCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv NmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29k aW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFy eWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0 VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEyMSB7Ci0rZGVmaW5l IGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVy RW5jb2RpbmdJZjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5j b2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xh c3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0 VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFs aWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEyMSB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24g MQotICAgJTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFs aWduIDEsICF0YmFhICExOTMKLUBAIC0xMDIwNSw3ICsxMDIwNSw3IEBAIGRlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5n SWYxM1ZhcnlpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVo aW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rp bmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5 aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRW YXJ5aW5nIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTMwIHsKLStkZWZpbmUg aW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJF bmNvZGluZ0l4MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNv ZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFz cy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRW YXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxp Z24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTMwIHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAx Ci0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxp Z24gMSwgIXRiYWEgITE5MwotQEAgLTEwMjMxLDcgKzEwMjMxLDcgQEAgZGVmaW5lIGludGVybmFs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJ eDEzVmFyeWkKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhp bnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZk ZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGlu ZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlp bmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZh cnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxMzkgewotK2RlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSXkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29k aW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNz LlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZh cnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGln biAxKSAjMjUgY29tZGF0ICFkYmcgITIxMzkgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEK LSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGln biAxLCAhdGJhYSAhMTkzCi1AQCAtMTAyNTcsNyArMTAyNTcsNyBAQCBkZWZpbmUgaW50ZXJuYWwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5 MTNWYXJ5aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGlu dCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRl dGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5n NFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWlu Z1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFy eWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjE0OCB7Ci0rZGVmaW5lIGlu dGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5j b2RpbmdJZDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2Rp bmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3Mu VmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFy eWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWdu IDEpICMyNSBjb21kYXQgIWRiZyAhMjE0OCB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24gMQot ICAgJTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFsaWdu IDEsICF0YmFhICExOTMKLUBAIC0xMDI4Myw3ICsxMDI4Myw3IEBAIGRlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQx M1ZhcnlpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50 IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0 YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5n NFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWlu Z1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFy eWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjE1NyB7Ci0rZGVmaW5lIGlu dGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5j b2RpbmdJUHYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29k aW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNz LlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZh cnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGln biAxKSAjMjUgY29tZGF0ICFkYmcgITIxNTcgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEK LSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGln biAxLCAhdGJhYSAhMTkzCmRpZmYgLS1naXQgYS9zcmNwa2dzL2lzcGMvdGVtcGxhdGUgYi9zcmNw a2dzL2lzcGMvdGVtcGxhdGUKaW5kZXggOWMzYWNiNDJhOWNmLi42OGZlZDVhNGM2NTkgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvaXNwYy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2lzcGMvdGVtcGxhdGUK QEAgLTEsMTAgKzEsMTAgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2lzcGMnCiBwa2duYW1lPWlz cGMKLXZlcnNpb249MS4xNS4wCi1yZXZpc2lvbj0yCit2ZXJzaW9uPTEuMTcuMAorcmV2aXNpb249 MQogYXJjaHM9Ing4Nl82NCoiCiBidWlsZF9zdHlsZT1jbWFrZQotY29uZmlndXJlX2FyZ3M9Ii1E SVNQQ19OT19EVU1QUz1PTiAtREFSTV9FTkFCTEVEPU9GRiIKK2NvbmZpZ3VyZV9hcmdzPSItRElT UENfTk9fRFVNUFM9T04gLURBUk1fRU5BQkxFRD1PRkYgLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVh c2UiCiBob3N0bWFrZWRlcGVuZHM9ImNsYW5nIGNsYW5nLXRvb2xzLWV4dHJhIHB5dGhvbjMgbTQg Ymlzb24gZmxleCBsbHZtIgogbWFrZWRlcGVuZHM9Im5jdXJzZXMtZGV2ZWwgbmN1cnNlcy1saWJ0 aW5mby1kZXZlbCB6bGliLWRldmVsIgogc2hvcnRfZGVzYz0iQ29tcGlsZXIgZm9yIGhpZ2gtcGVy Zm9ybWFuY2UgU0lNRCBwcm9ncmFtbWluZyBvbiB0aGUgQ1BVIgpAQCAtMTIsNyArMTIsNyBAQCBt YWludGFpbmVyPSJBbmRyZWEgQnJhbmNhbGVvbmkgPGFiY0Bwb21wZWwubWU+IgogbGljZW5zZT0i QlNELTMtQ2xhdXNlIgogaG9tZXBhZ2U9Imh0dHBzOi8vaXNwYy5naXRodWIuaW8iCiBkaXN0Zmls ZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9pc3BjL2lzcGMvYXJjaGl2ZS92JHt2ZXJzaW9ufS50YXIu Z3oiCi1jaGVja3N1bT0yNjU4ZmYwMGRjMDQ1YWM5ZmNlZmJmNmJkMjZkZmZhZjcyM2IwNTlhOTQy YTI3ZGY5MWJiYjYxYmM1MDNhMjg1CitjaGVja3N1bT0zN2ZiMTA1NWQ2YzZiMjMyZTExMmQ4ZDUw MTQ1ZDcyNjgyNGVkNGQ4ZGE5M2E3Mzk2MzE1ZGNlYmE2Yzc2ZTYyCiBub2Nyb3NzPXllcwogbm9w aWU9eWVzCiAKCkZyb20gYjk5NDg2YWQwMDExNmJlMGNiMmI4ZjNhNjRhNzBhZTlhMDg1NGQ5OCBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP0FuZHI9QzM9QTk9MjBDZXJx dWVpcmE/PSA8YWNlcnF1ZWlyYTAyMUBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMjggRmViIDIwMjIg MjE6NDc6MjQgKzAwMDAKU3ViamVjdDogW1BBVENIIDE4LzI5XSB6aWc6IHVwZGF0ZSB0byAwLjku MS4KCi0tLQogLi4uLzAwMDEtc3RkLmJ1aWxkLWZpeC1oYW5kbGluZy1vZi1EY3B1LnBhdGNoIHwg NDggLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjcGtncy96aWcvdGVtcGxhdGUgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDggKystLQogMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyks IDUyIGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvemlnL3BhdGNoZXMv MDAwMS1zdGQuYnVpbGQtZml4LWhhbmRsaW5nLW9mLURjcHUucGF0Y2gKCmRpZmYgLS1naXQgYS9z cmNwa2dzL3ppZy9wYXRjaGVzLzAwMDEtc3RkLmJ1aWxkLWZpeC1oYW5kbGluZy1vZi1EY3B1LnBh dGNoIGIvc3JjcGtncy96aWcvcGF0Y2hlcy8wMDAxLXN0ZC5idWlsZC1maXgtaGFuZGxpbmctb2Yt RGNwdS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDEwMWYyNDQ1OWJiLi4w MDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy96aWcvcGF0Y2hlcy8wMDAxLXN0ZC5idWlsZC1maXgt aGFuZGxpbmctb2YtRGNwdS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZy b20gMWU4Y2RhY2U3YWQzMjRhNDIyMjhhZWI1Y2Q2ZWI4ZGQxNTQyOTQxMyBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKLUZyb206IElzYWFjIEZyZXVuZCA8aWZyZXVuZEBpZnJldW5kLnh5ej4KLURh dGU6IFR1ZSwgMjEgU2VwIDIwMjEgMjE6MDY6MTAgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gc3Rk LmJ1aWxkOiBmaXggaGFuZGxpbmcgb2YgLURjcHUKLQotQ3VycmVudGx5IC1EY3B1IGlzIGNvbXBs ZXRlbHkgaWdub3JlZCBpZiAtRHRhcmdldCBpc24ndCBwYXNzZWQgYXMgd2VsbC4KLUZ1cnRoZXIs IC1EY3B1PWJhc2VsaW5lIGlzIGlnbm9yZWQgZXZlbiBpZiAtRHRhcmdldD1uYXRpdmUgaXMgcGFz c2VkLgotCi1UaGlzIHBhdGNoIGZpeGVzIHRoZXNlIDIgaXNzdWVzLCBhbHdheXMgcmVzcGVjdGlu ZyB0aGUgLURjcHUgb3B0aW9uIGlmCi1wcmVzZW50LgotLS0tCi0gbGliL3N0ZC9idWlsZC56aWcg fCAxMyArKysrKysrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNiBk ZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYi9zdGQvYnVpbGQuemlnIGIvbGliL3N0ZC9i dWlsZC56aWcKLWluZGV4IDliN2ViYjFmNC4uZTM5ODUyOWY5IDEwMDY0NAotLS0tIGEvbGliL3N0 ZC9idWlsZC56aWcKLSsrKyBiL2xpYi9zdGQvYnVpbGQuemlnCi1AQCAtNjg1LDcgKzY4NSwxMSBA QCBwdWIgY29uc3QgQnVpbGRlciA9IHN0cnVjdCB7Ci0gICAgICAgICApOwotICAgICAgICAgY29u c3QgbWNwdSA9IHNlbGYub3B0aW9uKFtdY29uc3QgdTgsICJjcHUiLCAiVGFyZ2V0IENQVSIpOwot IAotLSAgICAgICAgY29uc3QgdHJpcGxlID0gbWF5YmVfdHJpcGxlIG9yZWxzZSByZXR1cm4gYXJn cy5kZWZhdWx0X3RhcmdldDsKLSsgICAgICAgIGlmIChtYXliZV90cmlwbGUgPT0gbnVsbCBhbmQg bWNwdSA9PSBudWxsKSB7Ci0rICAgICAgICAgICAgcmV0dXJuIGFyZ3MuZGVmYXVsdF90YXJnZXQ7 Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBjb25zdCB0cmlwbGUgPSBtYXliZV90cmlwbGUgb3Jl bHNlICJuYXRpdmUiOwotIAotICAgICAgICAgdmFyIGRpYWdzOiBDcm9zc1RhcmdldC5QYXJzZU9w dGlvbnMuRGlhZ25vc3RpY3MgPSAue307Ci0gICAgICAgICBjb25zdCBzZWxlY3RlZF90YXJnZXQg PSBDcm9zc1RhcmdldC5wYXJzZSguewotQEAgLTI0NTEsMTEgKzI0NTUsOCBAQCBwdWIgY29uc3Qg TGliRXhlT2JqU3RlcCA9IHN0cnVjdCB7Ci0gCi0gICAgICAgICAgICAgaWYgKHBvcHVsYXRlZF9j cHVfZmVhdHVyZXMuZXFsKGNyb3NzLmNwdS5mZWF0dXJlcykpIHsKLSAgICAgICAgICAgICAgICAg Ly8gVGhlIENQVSBuYW1lIGFsb25lIGlzIHN1ZmZpY2llbnQuCi0tICAgICAgICAgICAgICAgIC8v IElmIGl0IGlzIHRoZSBiYXNlbGluZSBDUFUsIG5vIGNvbW1hbmQgbGluZSBhcmdzIGFyZSByZXF1 aXJlZC4KLS0gICAgICAgICAgICAgICAgaWYgKGNyb3NzLmNwdS5tb2RlbCAhPSBzdGQuVGFyZ2V0 LkNwdS5iYXNlbGluZShjcm9zcy5jcHUuYXJjaCkubW9kZWwpIHsKLS0gICAgICAgICAgICAgICAg ICAgIHRyeSB6aWdfYXJncy5hcHBlbmQoIi1tY3B1Iik7Ci0tICAgICAgICAgICAgICAgICAgICB0 cnkgemlnX2FyZ3MuYXBwZW5kKGNyb3NzLmNwdS5tb2RlbC5uYW1lKTsKLS0gICAgICAgICAgICAg ICAgfQotKyAgICAgICAgICAgICAgICB0cnkgemlnX2FyZ3MuYXBwZW5kKCItbWNwdSIpOwotKyAg ICAgICAgICAgICAgICB0cnkgemlnX2FyZ3MuYXBwZW5kKGNyb3NzLmNwdS5tb2RlbC5uYW1lKTsK LSAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICB2YXIgbWNwdV9idWZmZXIg PSBzdGQuQXJyYXlMaXN0KHU4KS5pbml0KGJ1aWxkZXIuYWxsb2NhdG9yKTsKLSAKLS0tIAotMi4z My4xCi0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvemlnL3RlbXBsYXRlIGIvc3JjcGtncy96aWcvdGVt cGxhdGUKaW5kZXggNzI4YzVhNjRlOWRmLi40ODMyYzg5MzgxNjAgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvemlnL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvemlnL3RlbXBsYXRlCkBAIC0xLDE3ICsxLDE3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd6aWcnCiBwa2duYW1lPXppZwotdmVyc2lvbj0wLjgu MQotcmV2aXNpb249MgordmVyc2lvbj0wLjkuMQorcmV2aXNpb249MQogYXJjaHM9Ing4Nl82NCog YWFyY2g2NCoiCiBidWlsZF9zdHlsZT1jbWFrZQogbWFrZV9jbWQ9bWFrZQotbWFrZWRlcGVuZHM9 ImNsYW5nIGxsdm0xMiBsbGQtZGV2ZWwiCittYWtlZGVwZW5kcz0iY2xhbmcgbGx2bTEzIGxsZC1k ZXZlbCIKIHNob3J0X2Rlc2M9IlByb2dyYW1taW5nIGxhbmd1YWdlIGRlc2lnbmVkIGZvciByb2J1 c3RuZXNzLCBvcHRpbWFsaXR5LCBhbmQgY2xhcml0eSIKIG1haW50YWluZXI9IklzYWFjIEZyZXVu ZCA8bWFpbEBpc2FhY2ZyZXVuZC5jb20+IgogbGljZW5zZT0iTUlUIgogaG9tZXBhZ2U9Imh0dHBz Oi8vemlnbGFuZy5vcmciCiBkaXN0ZmlsZXM9Imh0dHBzOi8vemlnbGFuZy5vcmcvZG93bmxvYWQv JHt2ZXJzaW9ufS96aWctJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT04YzQyOGUxNGEwYTg5 Y2I3YTE1YTY3Njg0MjRhMzc0NDIyOTI4NThjZGI2OTVlMmViNTAzZmEzYzdiZjQ3ZjFhCitjaGVj a3N1bT0zOGNmNGU4NDQ4MWY1ZmFjYzc2NmJhNzI3ODNlNzQ2MmUwOGQ2ZDI5YTVkNDdlM2I3NWM4 ZWUzMTQyNDg1MjEwCiBub3BpZT15ZXMKIG5vY3Jvc3M9eWVzCiAKCkZyb20gOWQxMTA1YWE2MTYx YmRjYjFhZDdmZWVmMjdjN2FhZjU0YmJiMjY3MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogPT9VVEYtOD9xP0FuZHI9QzM9QTk9MjBDZXJxdWVpcmE/PSA8YWNlcnF1ZWlyYTAyMUBnbWFp bC5jb20+CkRhdGU6IE1vbiwgMjggRmViIDIwMjIgMjE6NTI6MDcgKzAwMDAKU3ViamVjdDogW1BB VENIIDE5LzI5XSBiZWlnbmV0OiByZW1vdmUgcGFja2FnZQoKLS0tCiBzcmNwa2dzL2JlaWduZXQv cGF0Y2hlcy9jbF91aW50LnBhdGNoICAgICAgICAgfCAgMjIgLQogLi4uNDE5YTAwMDhlMzhlZjJk OWQyNTVkOWU5Yzc0ZTlmYmEwODRiLnBhdGNoIHwgMTM0IC0tLQogc3JjcGtncy9iZWlnbmV0L3Bh dGNoZXMvbGx2bTA2LnBhdGNoICAgICAgICAgIHwgIDMzIC0KIHNyY3BrZ3MvYmVpZ25ldC9wYXRj aGVzL2xsdm0wOC5wYXRjaCAgICAgICAgICB8ICA1NiAtLQogc3JjcGtncy9iZWlnbmV0L3BhdGNo ZXMvbGx2bTA5LnBhdGNoICAgICAgICAgIHwgMTExIC0tLQogc3JjcGtncy9iZWlnbmV0L3BhdGNo ZXMvbGx2bTEwLnBhdGNoICAgICAgICAgIHwgMzQ3IC0tLS0tLS0KIHNyY3BrZ3MvYmVpZ25ldC9w YXRjaGVzL2xsdm0xMS5wYXRjaCAgICAgICAgICB8IDkzNyAtLS0tLS0tLS0tLS0tLS0tLS0KIHNy Y3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0xMi5wYXRjaCAgICAgICAgICB8IDExNSAtLS0KIHNy Y3BrZ3MvYmVpZ25ldC9wYXRjaGVzL211c2wucGF0Y2ggICAgICAgICAgICB8ICAxMSAtCiBzcmNw a2dzL2JlaWduZXQvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgfCAgMjIgLQogc3JjcGtn cy9iZWlnbmV0L3VwZGF0ZSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxIC0KIHNyY3BrZ3Mv cmVtb3ZlZC1wYWNrYWdlcy90ZW1wbGF0ZSAgICAgICAgICAgICB8ICAgMSArCiAxMiBmaWxlcyBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMTc4OSBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9jbF91aW50LnBhdGNoCiBkZWxldGUgbW9kZSAx MDA2NDQgc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvZTFiMjQxOWEwMDA4ZTM4ZWYyZDlkMjU1ZDll OWM3NGU5ZmJhMDg0Yi5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmVpZ25ldC9w YXRjaGVzL2xsdm0wNi5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmVpZ25ldC9w YXRjaGVzL2xsdm0wOC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmVpZ25ldC9w YXRjaGVzL2xsdm0wOS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmVpZ25ldC9w YXRjaGVzL2xsdm0xMC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmVpZ25ldC9w YXRjaGVzL2xsdm0xMS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmVpZ25ldC9w YXRjaGVzL2xsdm0xMi5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmVpZ25ldC9w YXRjaGVzL211c2wucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2JlaWduZXQvdGVt cGxhdGUKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2JlaWduZXQvdXBkYXRlCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvY2xfdWludC5wYXRjaCBiL3NyY3BrZ3MvYmVp Z25ldC9wYXRjaGVzL2NsX3VpbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDg2YmEwMGYwNGU5NS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVz L2NsX3VpbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0tLS0gYS9zcmMv Y2xfYXBpX2tlcm5lbC5jCTIwMTctMDktMjIgMTA6MDU6MjIuMDAwMDAwMDAwICswMjAwCi0rKysg Yi9zcmMvY2xfYXBpX2tlcm5lbC5jCTIwMjAtMDMtMjQgMTg6Mjc6NDAuMTg2NDg1ODg3ICswMTAw Ci1AQCAtMTUxLDcgKzE1MSw3IEBACi0gICAgICAgICBmaXhlZF9sb2NhbF9zelswXSA9IDE2Owot ICAgICAgICAgZml4ZWRfbG9jYWxfc3pbMV0gPSAxOwotICAgICAgIH0gZWxzZSB7Ci0tICAgICAg ICB1aW50IGosIG1heERpbVNpemUgPSA2NCAvKiBmcm9tIDY0PyAqLywgbWF4R3JvdXBTaXplID0g MjU2OyAvL01BWF9XT1JLX0dST1VQX1NJWkUgbWF5IHRvbyBsYXJnZQotKyAgICAgICAgY2xfdWlu dCBqLCBtYXhEaW1TaXplID0gNjQgLyogZnJvbSA2ND8gKi8sIG1heEdyb3VwU2l6ZSA9IDI1Njsg Ly9NQVhfV09SS19HUk9VUF9TSVpFIG1heSB0b28gbGFyZ2UKLSAgICAgICAgIHNpemVfdCByZWFs R3JvdXBTaXplID0gMTsKLSAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB3b3JrX2RpbTsgaSsrKSB7 Ci0gICAgICAgICAgIGZvciAoaiA9IG1heERpbVNpemU7IGogPiAxOyBqLS0pIHsKLS0tLSBhL3Ny Yy9jbF9lbnF1ZXVlLmMJMjAxNy0wOS0yMiAxMDowNToyMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBi L3NyYy9jbF9lbnF1ZXVlLmMJMjAyMC0wMy0yNCAxODozMDoxMi4wMzE0Nzk4MzMgKzAxMDAKLUBA IC00OTQsNyArNDk0LDcgQEAKLSBjbF9pbnQgY2xfZW5xdWV1ZV9zdm1fZnJlZShlbnF1ZXVlX2Rh dGEgKmRhdGEsIGNsX2ludCBzdGF0dXMpIHsKLSAgIGludCBpOwotICAgdm9pZCAqKnBvaW50ZXJz ID0gZGF0YS0+cG9pbnRlcnM7Ci0tICB1aW50IG51bV9zdm1fcHRycyA9IGRhdGEtPnNpemU7Ci0r ICBjbF91aW50IG51bV9zdm1fcHRycyA9IGRhdGEtPnNpemU7Ci0gICBjbF9pbnQgZXJyID0gQ0xf U1VDQ0VTUzsKLSAKLSAgIGlmIChzdGF0dXMgIT0gQ0xfQ09NUExFVEUpCmRpZmYgLS1naXQgYS9z cmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9lMWIyNDE5YTAwMDhlMzhlZjJkOWQyNTVkOWU5Yzc0ZTlm YmEwODRiLnBhdGNoIGIvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvZTFiMjQxOWEwMDA4ZTM4ZWYy ZDlkMjU1ZDllOWM3NGU5ZmJhMDg0Yi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggOGRlOWU2ZTJmMDkzLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iZWlnbmV0L3BhdGNo ZXMvZTFiMjQxOWEwMDA4ZTM4ZWYyZDlkMjU1ZDllOWM3NGU5ZmJhMDg0Yi5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDEzNCArMCwwIEBACi1Gcm9tIGUxYjI0MTlhMDAwOGUzOGVmMmQ5ZDI1NWQ5 ZTljNzRlOWZiYTA4NGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiUmViZWNjYSBO LiBQYWxtZXIiIDxyZWJlY2NhX3BhbG1lckB6b2hvLmNvbT4KLURhdGU6IFNhdCwgMjEgSnVsIDIw MTggMjA6MDU6NTQgKzAxMDAKLVN1YmplY3Q6IEFkZCBwcmVsaW1pbmFyeSBMTFZNIDcgc3VwcG9y dAotCi1UaGlzIGlzIHByZWxpbWluYXJ5IGJlY2F1c2UgTExWTSA3IGhhcyBub3QgYmVlbiByZWxl YXNlZCB5ZXQ6Ci1pdCB3YXMgdGVzdGVkIHdpdGggdGhlIHNuYXBzaG90IGZyb20gRGViaWFuIGV4 cGVyaW1lbnRhbCAoc3ZuMzM2ODk0KS4KLQotMS5DaGFuZ2UgbGlua2luZyBvcmRlciwgYXMgY2xh bmdDb2RlR2VuIG5vdyBsaW5rcyB0byBjbGFuZ0Zyb250ZW5kCi0yLlBhc3MgcmVmZXJlbmNlcyBu b3QgcG9pbnRlcnMgdG8gV3JpdGVCaXRjb2RlVG9GaWxlIGFuZCBDbG9uZU1vZHVsZQotMy5BZGQg dGhlIGhlYWRlcnMgdGhhdCBMb29wU2ltcGxpZnlJRCwgTENTU0FJRCBhbmQKLXNvbWUgY3JlYXRl KlBhc3MgaGF2ZSBtb3ZlZCB0bwotNC5EZWZpbmUgb3VyIERFQlVHIHdoZXRoZXIgb3Igbm90IHdl IGp1c3QgdW5kZWZpbmVkIExMVk0ncwotKHRoZWlycyBpcyBub3cgTExWTV9ERUJVRywgYnV0IHdl IG5ldmVyIGFjdHVhbGx5IHVzZSBpdCkKLQotU2lnbmVkLW9mZi1ieTogUmViZWNjYSBOLiBQYWxt ZXIgPHJlYmVjY2FfcGFsbWVyQHpvaG8uY29tPgotUmV2aWV3ZWQtYnk6IFlhbmcgUm9uZyA8cm9u Zy5yLnlhbmdAaW50ZWwuY29tPgotLS0tCi0gQ01ha2UvRmluZExMVk0uY21ha2UgICAgICAgICAg ICAgICAgICAgICB8IDIgKy0KLSBiYWNrZW5kL3NyYy9iYWNrZW5kL2dlbl9wcm9ncmFtLmNwcCAg ICAgIHwgOCArKysrKysrKwotIGJhY2tlbmQvc3JjL2JhY2tlbmQvcHJvZ3JhbS5jcHAgICAgICAg ICAgfCA0ICsrKysKLSBiYWNrZW5kL3NyYy9sbHZtL0V4cGFuZExhcmdlSW50ZWdlcnMuY3BwIHwg MiArLQotIGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9iaXRjb2RlX2xpbmsuY3BwICAgfCA0ICsrKysK LSBiYWNrZW5kL3NyYy9sbHZtL2xsdm1faW5jbHVkZXMuaHBwICAgICAgIHwgNCArKysrCi0gNiBm aWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0t Z2l0IGEvQ01ha2UvRmluZExMVk0uY21ha2UgYi9DTWFrZS9GaW5kTExWTS5jbWFrZQotaW5kZXgg NTQ1N2YyNC4uZjg4MjU4OSAxMDA2NDQKLS0tLSBhL0NNYWtlL0ZpbmRMTFZNLmNtYWtlCi0rKysg Yi9DTWFrZS9GaW5kTExWTS5jbWFrZQotQEAgLTExMywxMCArMTEzLDEwIEBAIG1hY3JvKGFkZF9v bmVfbGliIG5hbWUpCi0gZW5kbWFjcm8oKQotIAotICNBc3N1bWUgY2xhbmcgbGliIHBhdGggc2Ft ZSBhcyBsbHZtIGxpYiBwYXRoCi0rYWRkX29uZV9saWIoImNsYW5nQ29kZUdlbiIpCi0gYWRkX29u ZV9saWIoImNsYW5nRnJvbnRlbmQiKQotIGFkZF9vbmVfbGliKCJjbGFuZ1NlcmlhbGl6YXRpb24i KQotIGFkZF9vbmVfbGliKCJjbGFuZ0RyaXZlciIpCi0tYWRkX29uZV9saWIoImNsYW5nQ29kZUdl biIpCi0gYWRkX29uZV9saWIoImNsYW5nU2VtYSIpCi0gYWRkX29uZV9saWIoImNsYW5nU3RhdGlj QW5hbHl6ZXJGcm9udGVuZCIpCi0gYWRkX29uZV9saWIoImNsYW5nU3RhdGljQW5hbHl6ZXJDaGVj a2VycyIpCi1kaWZmIC0tZ2l0IGEvYmFja2VuZC9zcmMvYmFja2VuZC9nZW5fcHJvZ3JhbS5jcHAg Yi9iYWNrZW5kL3NyYy9iYWNrZW5kL2dlbl9wcm9ncmFtLmNwcAotaW5kZXggMjc0Yzk5Yy4uNDE1 OTIzNCAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2JhY2tlbmQvZ2VuX3Byb2dyYW0uY3BwCi0r KysgYi9iYWNrZW5kL3NyYy9iYWNrZW5kL2dlbl9wcm9ncmFtLmNwcAotQEAgLTQ1NCw3ICs0NTQs MTEgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gI2lmZGVmIEdCRV9DT01QSUxFUl9BVkFJTEFCTEUKLSAg ICAgICBzdGQ6OnN0cmluZyBzdHI7Ci0gICAgICAgbGx2bTo6cmF3X3N0cmluZ19vc3RyZWFtIE9T KHN0cik7Ci0rI2lmIExMVk1fVkVSU0lPTl9NQUpPUiA+PSA3Ci0rICAgICAgbGx2bTo6V3JpdGVC aXRjb2RlVG9GaWxlKCooKGxsdm06Ok1vZHVsZSopcHJvZy0+bW9kdWxlKSwgT1MpOwotKyNlbHNl Ci0gICAgICAgbGx2bTo6V3JpdGVCaXRjb2RlVG9GaWxlKChsbHZtOjpNb2R1bGUqKXByb2ctPm1v ZHVsZSwgT1MpOwotKyNlbmRpZgotICAgICAgIHN0ZDo6c3RyaW5nJiBiaW5fc3RyID0gT1Muc3Ry KCk7Ci0gICAgICAgaW50IGxsc3ogPSBiaW5fc3RyLnNpemUoKTsKLSAgICAgICAqYmluYXJ5ID0g KGNoYXIgKiltYWxsb2Moc2l6ZW9mKGNoYXIpICogKGxsc3orMSkgKTsKLUBAIC01NDUsNyArNTQ5 LDExIEBAIG5hbWVzcGFjZSBnYmUgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZtb2RSZWYpOwotICAgICAgICAgc3JjID0gbGx2bTo6dW53cmFwKG1vZFJlZik7Ci0gICAg ICAgfQotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPj0gNwotKyAgICAgIGxsdm06Ok1vZHVsZSog Y2xvbmUgPSBsbHZtOjpDbG9uZU1vZHVsZSgqc3JjKS5yZWxlYXNlKCk7Ci0rI2Vsc2UKLSAgICAg ICBsbHZtOjpNb2R1bGUqIGNsb25lID0gbGx2bTo6Q2xvbmVNb2R1bGUoc3JjKS5yZWxlYXNlKCk7 Ci0rI2VuZGlmCi0gICAgICAgaWYgKExMVk1MaW5rTW9kdWxlczIod3JhcChkc3QpLCB3cmFwKGNs b25lKSkpIHsKLSAjZWxpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9N SU5PUiA+PSAzNwotICAgICAgIGlmIChMTFZNTGlua01vZHVsZXMod3JhcChkc3QpLCB3cmFwKHNy YyksIExMVk1MaW5rZXJQcmVzZXJ2ZVNvdXJjZV9SZW1vdmVkLCAmZXJyTXNnKSkgewotZGlmZiAt LWdpdCBhL2JhY2tlbmQvc3JjL2JhY2tlbmQvcHJvZ3JhbS5jcHAgYi9iYWNrZW5kL3NyYy9iYWNr ZW5kL3Byb2dyYW0uY3BwCi1pbmRleCBjMzdjNTk1Li5iMzZmN2I0IDEwMDY0NAotLS0tIGEvYmFj a2VuZC9zcmMvYmFja2VuZC9wcm9ncmFtLmNwcAotKysrIGIvYmFja2VuZC9zcmMvYmFja2VuZC9w cm9ncmFtLmNwcAotQEAgLTc5NCw3ICs3OTQsMTEgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gICAgICAg bGx2bTo6cmF3X2ZkX29zdHJlYW0gb3N0cmVhbSAoZHVtcFNQSVJCaW5hcnlOYW1lLmNfc3RyKCks Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyLCBsbHZtOjpzeXM6OmZz OjpGX05vbmUpOwotICAgICAgIGlmICghZXJyKQotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1I8Nwot ICAgICAgICAgbGx2bTo6V3JpdGVCaXRjb2RlVG9GaWxlKCpvdXRfbW9kdWxlLCBvc3RyZWFtKTsK LSsjZWxzZQotKyAgICAgICAgbGx2bTo6V3JpdGVCaXRjb2RlVG9GaWxlKCoqb3V0X21vZHVsZSwg b3N0cmVhbSk7Ci0rI2VuZGlmCi0gICAgIH0KLSAjZW5kaWYKLSAgICAgcmV0dXJuIHRydWU7Ci1k aWZmIC0tZ2l0IGEvYmFja2VuZC9zcmMvbGx2bS9FeHBhbmRMYXJnZUludGVnZXJzLmNwcCBiL2Jh Y2tlbmQvc3JjL2xsdm0vRXhwYW5kTGFyZ2VJbnRlZ2Vycy5jcHAKLWluZGV4IDg1MTVkYzEuLjRh ZWM0NGUgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL0V4cGFuZExhcmdlSW50ZWdlcnMu Y3BwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL0V4cGFuZExhcmdlSW50ZWdlcnMuY3BwCi1AQCAt OTksOCArOTksOCBAQCB1c2luZyBuYW1lc3BhY2UgbGx2bTsKLSAKLSAjaWZkZWYgREVCVUcKLSAg ICN1bmRlZiBERUJVRwotLSAgI2RlZmluZSBERUJVRyguLi4pCi0gI2VuZGlmCi0rI2RlZmluZSBE RUJVRyguLi4pCi0gLy8gQnJlYWsgaW5zdHJ1Y3Rpb25zIHVwIGludG8gbm8gbGFyZ2VyIHRoYW4g NjQtYml0IGNodW5rcy4KLSBzdGF0aWMgY29uc3QgdW5zaWduZWQga0NodW5rQml0cyA9IDY0Owot IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrQ2h1bmtCeXRlcyA9IGtDaHVua0JpdHMgLyBDSEFSX0JJ VDsKLWRpZmYgLS1naXQgYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fYml0Y29kZV9saW5rLmNwcCBi L2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9iaXRjb2RlX2xpbmsuY3BwCi1pbmRleCBlZjU2ZTRjLi40 YzNlMjBlIDEwMDY0NAotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2JpdGNvZGVfbGluay5j cHAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9iaXRjb2RlX2xpbmsuY3BwCi1AQCAtMzQw LDcgKzM0MCwxMSBAQCBuYW1lc3BhY2UgZ2JlCi0gICAgIC8qIFdlIHVzZSBiZWlnbmV0J3MgYml0 Y29kZSBhcyBkc3QgYmVjYXVzZSBpdCB3aWxsIGhhdmUgYSBsb3Qgb2YKLSAgICAgICAgbGF6eSBm dW5jdGlvbnMgd2hpY2ggd2lsbCBub3QgYmUgbG9hZGVkLiAqLwotICNpZiBMTFZNX1ZFUlNJT05f TUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSAzOQotKyNpZiBMTFZNX1ZFUlNJT05f TUFKT1IgPj0gNwotKyAgICBsbHZtOjpNb2R1bGUgKiBsaW5rZWRfbW9kdWxlID0gbGx2bTo6Q2xv bmVNb2R1bGUoKihsbHZtOjpNb2R1bGUqKW1vZCkucmVsZWFzZSgpOwotKyNlbHNlCi0gICAgIGxs dm06Ok1vZHVsZSAqIGxpbmtlZF9tb2R1bGUgPSBsbHZtOjpDbG9uZU1vZHVsZSgobGx2bTo6TW9k dWxlKiltb2QpLnJlbGVhc2UoKTsKLSsjZW5kaWYKLSAgICAgaWYoTExWTUxpbmtNb2R1bGVzMih3 cmFwKGNsb25lZExpYiksIHdyYXAobGlua2VkX21vZHVsZSkpKSB7Ci0gI2Vsc2UKLSAgICAgY2hh ciogZXJyb3JNc2c7Ci1kaWZmIC0tZ2l0IGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2luY2x1ZGVz LmhwcCBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9pbmNsdWRlcy5ocHAKLWluZGV4IDE4NDU1M2Eu LmZmY2NmMDIgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1faW5jbHVkZXMuaHBw Ci0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1faW5jbHVkZXMuaHBwCi1AQCAtODksNiArODks MTAgQEAKLSAjaW5jbHVkZSAibGx2bS9Db2RlR2VuL0ludHJpbnNpY0xvd2VyaW5nLmgiCi0gCi0g I2luY2x1ZGUgImxsdm0vVHJhbnNmb3Jtcy9TY2FsYXIuaCIKLSsjaWYgTExWTV9WRVJTSU9OX01B Sk9SID49IDcKLSsjaW5jbHVkZSAibGx2bS9UcmFuc2Zvcm1zL1V0aWxzLmgiCi0rI2luY2x1ZGUg Imxsdm0vVHJhbnNmb3Jtcy9JbnN0Q29tYmluZS9JbnN0Q29tYmluZS5oIgotKyNlbmRpZgotICNp bmNsdWRlICJsbHZtL01DL01DQXNtSW5mby5oIgotICNpbmNsdWRlICJsbHZtL01DL01DQ29udGV4 dC5oIgotICNpbmNsdWRlICJsbHZtL01DL01DSW5zdHJJbmZvLmgiCi0tLSAKLWNnaXQgdjEuMQot CmRpZmYgLS1naXQgYS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMDYucGF0Y2ggYi9zcmNw a2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMDYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDMzODllNjZjODJkZi4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmVpZ25ldC9w YXRjaGVzL2xsdm0wNi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNvdXJj ZTogQXJjaCBMaW51eAotVXBzdHJlYW06IHVua25vd24KLVJlYXNvbjogZml4ZXMgbGx2bTYgY29t cGlsYXRpb24KLQotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3RvX2dlbi5jcHAJMjAxNy0x MC0yNCAwOTowNDo0OC4wMDAwMDAwMDAgKzAzMDAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2 bV90b19nZW4uY3BwCTIwMTgtMDMtMTYgMTY6MDg6NTQuNjY5OTYzODI0ICswMjAwCi1AQCAtMzIy LDcgKzMyMiwxMSBAQCBuYW1lc3BhY2UgZ2JlCi0gICAgIERhdGFMYXlvdXQgREwoJm1vZCk7Ci0g ICAgIAotICAgICBnYmVEaWFnbm9zdGljQ29udGV4dCBkYzsKLSsjaWYgTExWTV9WRVJTSU9OX01B Sk9SID49IDYKLSsgICAgbW9kLmdldENvbnRleHQoKS5zZXREaWFnbm9zdGljSGFuZGxlckNhbGxC YWNrKCZnYmVEaWFnbm9zdGljSGFuZGxlciwmZGMpOwotKyNlbHNlCi0gICAgIG1vZC5nZXRDb250 ZXh0KCkuc2V0RGlhZ25vc3RpY0hhbmRsZXIoJmdiZURpYWdub3N0aWNIYW5kbGVyLCZkYyk7Ci0r I2VuZGlmCi0gCi0gI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01J Tk9SID49IDM3Ci0gICAgIG1vZC5zZXREYXRhTGF5b3V0KERMKTsKLS0tLSBhL2JhY2tlbmQvc3Jj L2xsdm0vbGx2bV91bnJvbGwuY3BwCTIwMTctMTAtMjQgMDk6MDQ6NDguMDAwMDAwMDAwICswMzAw Ci0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fdW5yb2xsLmNwcAkyMDE4LTAzLTE2IDE2OjA5 OjQ3LjczNjQwMzU1NyArMDIwMAotQEAgLTIwNSw3ICsyMDUsOSBAQCBuYW1lc3BhY2UgZ2JlIHsK LSAgICAgICAgICAgaWYgKHBhcmVudFRyaXBDb3VudCAhPSAwICYmIGN1cnJUcmlwQ291bnQgKiBw YXJlbnRUcmlwQ291bnQgPiAzMikgewotICAgICAgICAgICAgIC8vRG9uJ3QgY2hhbmdlIHRoZSB1 bnJvbGxJRCBpZiBkb2Vzbid0IGZvcmNlIHVucm9sbC4KLSAgICAgICAgICAgICAvL3NldFVucm9s bElEKHBhcmVudEwsIGZhbHNlKTsKLS0jaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZN X1ZFUlNJT05fTUlOT1IgPj0gMzgKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9SID49IDYKLSsgICAg ICAgICAgICBsb29wSW5mby5lcmFzZShwYXJlbnRMKTsKLSsjZWxpZiBMTFZNX1ZFUlNJT05fTUFK T1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSAzOAotICAgICAgICAgICAgIGxvb3BJbmZv Lm1hcmtBc1JlbW92ZWQocGFyZW50TCk7Ci0gI2Vsc2UKLSAgICAgICAgICAgICBMUE0uZGVsZXRl TG9vcEZyb21RdWV1ZShwYXJlbnRMKTsKLU9ubHkgaW4gQmVpZ25ldC0xLjMuMi1Tb3VyY2U6IGJ1 aWxkCi0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wOC5wYXRjaCBi L3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggYTBjNWU3YTdjNGY3Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iZWln bmV0L3BhdGNoZXMvbGx2bTA4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAot RnJvbSA3NWMxNTI1OTlhN2MxNzM5ZTZkYWRjZGI5YjM3N2FjZjdlNDRkOWNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQotRnJvbTogSmFuIEJlaWNoIDxqYmVpY2hARnJlZUJTRC5vcmc+Ci1EYXRl OiBXZWQsIDMwIEphbiAyMDE5IDEyOjQyOjM0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGxhbmcv YmVpZ25ldDogdW5icmVhayB3aXRoIGxsdm04MAotCi1SZWdyZXNzZWQgYnkgaHR0cHM6Ly9naXRo dWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0L2NvbW1pdC83MjFkOTU3MTNhOWUKLQotdW5hYmxlIHRv IGxvYWQgL3Vzci9sb2NhbC9saWIvYmVpZ25ldC8vbGliZ2JlaW50ZXJwLnNvIHdoaWNoIGlzIHBh cnQgb2YgdGhlIGRyaXZlciwgcGxlYXNlIGNoZWNrIQotbGQtZWxmLnNvLjE6IC91c3IvbG9jYWwv bGliL2JlaWduZXQvL2xpYmdiZWludGVycC5zbzogVW5kZWZpbmVkIHN5bWJvbCAiX1pONGxsdm0y NERpc2FibGVBQklCcmVha2luZ0NoZWNrc0UiCi0KLVJlZ3Jlc3NlZCBieSBodHRwczovL2dpdGh1 Yi5jb20vbGx2bS9sbHZtLXByb2plY3QvY29tbWl0LzRhMmQ1OGUxNmFjYwotCi1iYWNrZW5kL3Ny Yy9sbHZtL2xsdm1fZ2VuX2JhY2tlbmQuY3BwOjMwNzY6NTogZXJyb3I6Ci0gICAgICB1bmtub3du IHR5cGUgbmFtZSAnVGVybWluYXRvckluc3QnCi0gICAgVGVybWluYXRvckluc3QgKnRlcm0gPSBi Yi0+Z2V0VGVybWluYXRvcigpOwotICAgIF4KLWJhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFj a2VuZC5jcHA6MzA4Mzo1OiBlcnJvcjoKLSAgICAgIHVua25vd24gdHlwZSBuYW1lICdUZXJtaW5h dG9ySW5zdCcKLSAgICBUZXJtaW5hdG9ySW5zdCAqdGVybSA9IGJiLT5nZXRUZXJtaW5hdG9yKCk7 Ci0gICAgXgotCi0tLS0gYS9iYWNrZW5kL3NyYy9DTWFrZUxpc3RzLnR4dAkyMDE3LTA5LTIyIDA4 OjA1OjIyIFVUQwotKysrIGIvYmFja2VuZC9zcmMvQ01ha2VMaXN0cy50eHQKLUBAIC0xNjgsNiAr MTY4LDcgQEAgYWRkX2RlcGVuZGVuY2llcyhnYmUgYmVpZ25ldF9iaXRjb2RlKQotIGVuZGlmIChO T1QgKFVTRV9TVEFOREFMT05FX0dCRV9DT01QSUxFUiBTVFJFUVVBTCAidHJ1ZSIpKQotIAotIGFk ZF9saWJyYXJ5KGdiZWludGVycCBTSEFSRUQgZ2JlX2Jpbl9pbnRlcnByZXRlci5jcHApCi0rdGFy Z2V0X2xpbmtfbGlicmFyaWVzKGdiZWludGVycCAke0xMVk1fTU9EVUxFX0xJQlN9KQotIAotIGlm IChMTFZNX1ZFUlNJT05fTk9ET1QgVkVSU0lPTl9FUVVBTCAzNCkKLSAgIGZpbmRfbGlicmFyeShU RVJNSU5GTyBOQU1FUyB0aW5mbyBuY3Vyc2VzKQotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZt X2dlbl9iYWNrZW5kLmNwcAkyMDE3LTEwLTI0IDA2OjA0OjQ4IFVUQwotKysrIGIvYmFja2VuZC9z cmMvbGx2bS9sbHZtX2dlbl9iYWNrZW5kLmNwcAotQEAgLTMwNzMsMTQgKzMwNzMsMjIgQEAgbmFt ZXNwYWNlIGdiZQotIAotIAotICAgc3RhdGljIHVuc2lnbmVkIGdldENoaWxkTm8oQmFzaWNCbG9j ayAqYmIpIHsKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9SIDwgOAotICAgICBUZXJtaW5hdG9ySW5z dCAqdGVybSA9IGJiLT5nZXRUZXJtaW5hdG9yKCk7Ci0rI2Vsc2UKLSsgICAgSW5zdHJ1Y3Rpb24g KnRlcm0gPSBiYi0+Z2V0VGVybWluYXRvcigpOwotKyNlbmRpZgotICAgICByZXR1cm4gdGVybS0+ Z2V0TnVtU3VjY2Vzc29ycygpOwotICAgfQotIAotICAgLy8gcmV0dXJuIE5VTEwgaWYgaW5kZXgg b3V0LXJhbmdlIG9mIGNoaWxkcmVuIG51bWJlcgotICAgc3RhdGljIEJhc2ljQmxvY2sgKmdldENo aWxkUG9zc2libGUoQmFzaWNCbG9jayAqYmIsIHVuc2lnbmVkIGluZGV4KSB7Ci0gCi0rI2lmIExM Vk1fVkVSU0lPTl9NQUpPUiA8IDgKLSAgICAgVGVybWluYXRvckluc3QgKnRlcm0gPSBiYi0+Z2V0 VGVybWluYXRvcigpOwotKyNlbHNlCi0rICAgIEluc3RydWN0aW9uICp0ZXJtID0gYmItPmdldFRl cm1pbmF0b3IoKTsKLSsjZW5kaWYKLSAgICAgdW5zaWduZWQgY2hpbGRObyA9IHRlcm0tPmdldE51 bVN1Y2Nlc3NvcnMoKTsKLSAgICAgQmFzaWNCbG9jayAqY2hpbGQgPSBOVUxMOwotICAgICBpZihp bmRleCA8IGNoaWxkTm8pIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xs dm0wOS5wYXRjaCBiL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wOS5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNhZWNlYWJiNmRkLi4wMDAwMDAwMDAwMDAKLS0tIGEv c3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTA5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MTExICswLDAgQEAKLVNvdXJjZTogRnJlZUJTRCArIHE2NgotCi1Nb3N0bHkgRnJlZUJTRCBvdGhl ciB0aGFuIEZpbmRMTFZNLmNtYWtlIGNoYW5nZXMuCi1MaW5raW5nIGFnYWluc3QgY2xhbmctY3Bw IGRvZXMgbm90IHdvcmsgZm9yIHVzLgotCi0tLS0gYS9DTWFrZS9GaW5kTExWTS5jbWFrZQotKysr IGIvQ01ha2UvRmluZExMVk0uY21ha2UKLUBAIC0xNDAsNiArMTQwLDcgQEAgYWRkX29uZV9saWIo ImNsYW5nU3RhdGljQW5hbHl6ZXJDb3JlIikKLSBhZGRfb25lX2xpYigiY2xhbmdBbmFseXNpcyIp Ci0gYWRkX29uZV9saWIoImNsYW5nRWRpdCIpCi0gYWRkX29uZV9saWIoImNsYW5nQVNUIikKLSth ZGRfb25lX2xpYigiY2xhbmdBU1RNYXRjaGVycyIpCi0gYWRkX29uZV9saWIoImNsYW5nUGFyc2Ui KQotIGFkZF9vbmVfbGliKCJjbGFuZ1NlbWEiKQotIGFkZF9vbmVfbGliKCJjbGFuZ0xleCIpCi0t LS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1faW50cmluc2ljX2xvd2VyaW5nLmNwcAkyMDE3LTEw LTI0IDA2OjA0OjQ4IFVUQwotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2ludHJpbnNpY19s b3dlcmluZy5jcHAKLUBAIC03Nyw3ICs3NywxMSBAQCBuYW1lc3BhY2UgZ2JlIHsKLSAgICAgICAg IHN0ZDo6dmVjdG9yPFR5cGUgKj4gUGFyYW1UeXM7Ci0gICAgICAgICBmb3IgKFZhbHVlKiogSSA9 IEFyZ0JlZ2luOyBJICE9IEFyZ0VuZDsgKytJKQotICAgICAgICAgICBQYXJhbVR5cy5wdXNoX2Jh Y2soKCpJKS0+Z2V0VHlwZSgpKTsKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZN X1ZFUlNJT05fTUlOT1IgPj0gOTAKLSsgICAgICAgIEZ1bmN0aW9uQ2FsbGVlIEZDYWNoZSA9IE0t PmdldE9ySW5zZXJ0RnVuY3Rpb24oTmV3Rm4sCi0rI2Vsc2UKLSAgICAgICAgIENvbnN0YW50KiBG Q2FjaGUgPSBNLT5nZXRPckluc2VydEZ1bmN0aW9uKE5ld0ZuLAotKyNlbmRpZgotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvblR5cGU6OmdldChSZXRUeSwg UGFyYW1UeXMsIGZhbHNlKSk7Ci0gCi0gICAgICAgICBJUkJ1aWxkZXI8PiBCdWlsZGVyKENJLT5n ZXRQYXJlbnQoKSwgQmFzaWNCbG9jazo6aXRlcmF0b3IoQ0kpKTsKLS0tLSBhL2JhY2tlbmQvc3Jj L2xsdm0vbGx2bV9zYW1wbGVyX2ZpeC5jcHAJMjAxNy0xMC0yNCAwNjowNDo0OCBVVEMKLSsrKyBi L2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9zYW1wbGVyX2ZpeC5jcHAKLUBAIC04Miw3ICs4MiwxMSBA QCBuYW1lc3BhY2UgZ2JlIHsKLSAjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZF UlNJT05fTUlOT1IgPj0gNDAKLSAgICAgICAgICAgTW9kdWxlICpNID0gSS0+Z2V0UGFyZW50KCkt PmdldFBhcmVudCgpLT5nZXRQYXJlbnQoKTsKLSAjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAg KyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gNTAKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAg KyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gOTAKLSsgICAgICAgICAgRnVuY3Rpb25DYWxsZWUgc2Ft cGxlckN2dCA9IE0tPmdldE9ySW5zZXJ0RnVuY3Rpb24oIl9fZ2VuX29jbF9zYW1wbGVyX3RvX2lu dCIsIGkzMlR5LCBJLT5nZXRPcGVyYW5kKDApLT5nZXRUeXBlKCkpOwotKyNlbHNlCi0gICAgICAg ICAgIFZhbHVlKiBzYW1wbGVyQ3Z0ID0gTS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigiX19nZW5fb2Ns X3NhbXBsZXJfdG9faW50IiwgaTMyVHksIEktPmdldE9wZXJhbmQoMCktPmdldFR5cGUoKSk7Ci0r I2VuZGlmCi0gI2Vsc2UKLSAgICAgICAgICAgVmFsdWUqIHNhbXBsZXJDdnQgPSBNLT5nZXRPcklu c2VydEZ1bmN0aW9uKCJfX2dlbl9vY2xfc2FtcGxlcl90b19pbnQiLCBpMzJUeSwgSS0+Z2V0T3Bl cmFuZCgwKS0+Z2V0VHlwZSgpLCBudWxscHRyKTsKLSAjZW5kaWYKLUBAIC0xMjQsNyArMTI4LDEx IEBAIG5hbWVzcGFjZSBnYmUgewotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1f VkVSU0lPTl9NSU5PUiA+PSA0MAotICAgICAgICAgICBNb2R1bGUgKk0gPSBJLT5nZXRQYXJlbnQo KS0+Z2V0UGFyZW50KCktPmdldFBhcmVudCgpOwotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAx MCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA1MAotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAx MCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA5MAotKyAgICAgICAgICBGdW5jdGlvbkNhbGxlZSBz YW1wbGVyQ3Z0ID0gTS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigiX19nZW5fb2NsX3NhbXBsZXJfdG9f aW50IiwgaTMyVHksIEktPmdldE9wZXJhbmQoMCktPmdldFR5cGUoKSk7Ci0rI2Vsc2UKLSAgICAg ICAgICAgVmFsdWUqIHNhbXBsZXJDdnQgPSBNLT5nZXRPckluc2VydEZ1bmN0aW9uKCJfX2dlbl9v Y2xfc2FtcGxlcl90b19pbnQiLCBpMzJUeSwgSS0+Z2V0T3BlcmFuZCgwKS0+Z2V0VHlwZSgpKTsK LSsjZW5kaWYKLSAjZWxzZQotICAgICAgICAgICBWYWx1ZSogc2FtcGxlckN2dCA9IE0tPmdldE9y SW5zZXJ0RnVuY3Rpb24oIl9fZ2VuX29jbF9zYW1wbGVyX3RvX2ludCIsIGkzMlR5LCBJLT5nZXRP cGVyYW5kKDApLT5nZXRUeXBlKCksIG51bGxwdHIpOwotICNlbmRpZgotLS0tIGEvYmFja2VuZC9z cmMvbGx2bS9sbHZtX3Byb2ZpbGluZy5jcHAJMjAxNy0xMC0yNCAwNjowNDo0OCBVVEMKLSsrKyBi L2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wcm9maWxpbmcuY3BwCi1AQCAtMTYzLDEwICsxNjMsMTgg QEAgbmFtZXNwYWNlIGdiZQotICAgICAgIC8vIF9fZ2VuX29jbF9zdG9yZV90aW1lc3RhbXAoaW50 IG50aCwgaW50IHR5cGUpOwotICAgICAgIFZhbHVlICpBcmdzWzJdID0ge0NvbnN0YW50SW50Ojpn ZXQoaW50VHksIHBvaW50TnVtKyspLCBDb25zdGFudEludDo6Z2V0KGludFR5LCBwcm9maWxpbmdU eXBlKX07Ci0gI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9S ID49IDUwCi0rI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9S ID49IDkwCi0rICAgICAgYnVpbGRlci0+Q3JlYXRlQ2FsbChtb2R1bGUtPmdldE9ySW5zZXJ0RnVu Y3Rpb24oCi0rI2Vsc2UKLSAgICAgICBidWlsZGVyLT5DcmVhdGVDYWxsKGNhc3Q8bGx2bTo6RnVu Y3Rpb24+KG1vZHVsZS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigKLSsjZW5kaWYKLSAgICAgICAgICAg ICAgICJfX2dlbl9vY2xfY2FsY190aW1lc3RhbXAiLCBUeXBlOjpnZXRWb2lkVHkobW9kdWxlLT5n ZXRDb250ZXh0KCkpLAotICAgICAgICAgICAgICAgSW50ZWdlclR5cGU6OmdldEludDMyVHkobW9k dWxlLT5nZXRDb250ZXh0KCkpLAotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1f VkVSU0lPTl9NSU5PUiA+PSA5MAotKyAgICAgICAgICAgICAgSW50ZWdlclR5cGU6OmdldEludDMy VHkobW9kdWxlLT5nZXRDb250ZXh0KCkpKSwKLSsjZWxzZQotICAgICAgICAgICAgICAgSW50ZWdl clR5cGU6OmdldEludDMyVHkobW9kdWxlLT5nZXRDb250ZXh0KCkpKSksCi0rI2VuZGlmCi0gICAg ICAgICAgICAgICBBcnJheVJlZjxWYWx1ZSo+KEFyZ3MpKTsKLSAjZWxzZQotICAgICAgIGJ1aWxk ZXItPkNyZWF0ZUNhbGwoY2FzdDxsbHZtOjpGdW5jdGlvbj4obW9kdWxlLT5nZXRPckluc2VydEZ1 bmN0aW9uKAotQEAgLTE4NSwxMCArMTkzLDE4IEBAIG5hbWVzcGFjZSBnYmUKLSAgICAgVmFsdWUg KkFyZ3MyWzJdID0ge3Byb2ZpbGluZ0J1ZiwgQ29uc3RhbnRJbnQ6OmdldChpbnRUeSwgcHJvZmls aW5nVHlwZSl9OwotIAotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lP Tl9NSU5PUiA+PSA1MAotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lP Tl9NSU5PUiA+PSA5MAotKyAgICBidWlsZGVyLT5DcmVhdGVDYWxsKG1vZHVsZS0+Z2V0T3JJbnNl cnRGdW5jdGlvbigKLSsjZWxzZQotICAgICBidWlsZGVyLT5DcmVhdGVDYWxsKGNhc3Q8bGx2bTo6 RnVuY3Rpb24+KG1vZHVsZS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigKLSsjZW5kaWYKLSAgICAgICAg ICAgICAiX19nZW5fb2NsX3N0b3JlX3Byb2ZpbGluZyIsIFR5cGU6OmdldFZvaWRUeShtb2R1bGUt PmdldENvbnRleHQoKSksCi0gICAgICAgICAgICAgcHRyVHksCi0rI2lmIExMVk1fVkVSU0lPTl9N QUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDkwCi0rICAgICAgICAgICAgSW50ZWdl clR5cGU6OmdldEludDMyVHkobW9kdWxlLT5nZXRDb250ZXh0KCkpKSwKLSsjZWxzZQotICAgICAg ICAgICAgIEludGVnZXJUeXBlOjpnZXRJbnQzMlR5KG1vZHVsZS0+Z2V0Q29udGV4dCgpKSkpLAot KyNlbmRpZgotICAgICAgICAgICAgIEFycmF5UmVmPFZhbHVlKj4oQXJnczIpKTsKLSAjZWxzZQot ICAgICBidWlsZGVyLT5DcmVhdGVDYWxsKGNhc3Q8bGx2bTo6RnVuY3Rpb24+KG1vZHVsZS0+Z2V0 T3JJbnNlcnRGdW5jdGlvbigKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9kZXZpY2VfZW5x dWV1ZS5jcHAJMjAxNy0xMC0yNCAwNjowNDo0OCBVVEMKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0v bGx2bV9kZXZpY2VfZW5xdWV1ZS5jcHAKLUBAIC0zOTgsOCArMzk4LDEzIEBAIG5hbWVzcGFjZSBn YmUgewotICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8VHlwZSAqPiBQYXJhbVR5czsKLSAgICAg ICAgICAgICAgIGZvciAoVmFsdWUqKiBpdGVyID0gYXJncy5iZWdpbigpOyBpdGVyICE9IGFyZ3Mu ZW5kKCk7ICsraXRlcikKLSAgICAgICAgICAgICAgICAgUGFyYW1UeXMucHVzaF9iYWNrKCgqaXRl ciktPmdldFR5cGUoKSk7Ci0rI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJT SU9OX01JTk9SID49IDkwCi0rICAgICAgICAgICAgICBDYWxsSW5zdCogbmV3Q0kgPSBidWlsZGVy LkNyZWF0ZUNhbGwobW9kLT5nZXRPckluc2VydEZ1bmN0aW9uKAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJfX2dlbl9lbnF1ZXVlX2tlcm5lbF9zbG0iLCBGdW5jdGlvblR5cGU6Omdl dChpbnRUeSwgUGFyYW1UeXMsIGZhbHNlKSksIGFyZ3MpOwotKyNlbHNlCi0gICAgICAgICAgICAg ICBDYWxsSW5zdCogbmV3Q0kgPSBidWlsZGVyLkNyZWF0ZUNhbGwoY2FzdDxsbHZtOjpGdW5jdGlv bj4obW9kLT5nZXRPckluc2VydEZ1bmN0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJfX2dlbl9lbnF1ZXVlX2tlcm5lbF9zbG0iLCBGdW5jdGlvblR5cGU6OmdldChpbnRUeSwg UGFyYW1UeXMsIGZhbHNlKSkpLCBhcmdzKTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAgIENJLT5y ZXBsYWNlQWxsVXNlc1dpdGgobmV3Q0kpOwotICAgICAgICAgICAgICAgZGVhZEluc25TZXQuaW5z ZXJ0KENJKTsKLSAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9zcmNwa2dzL2JlaWduZXQvcGF0 Y2hlcy9sbHZtMTAucGF0Y2ggYi9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMTAucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhYWZlNDhhMjQwZC4uMDAwMDAwMDAwMDAw Ci0tLSBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0xMC5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDM0NyArMCwwIEBACi1kaWZmIC0tZ2l0IENNYWtlL0ZpbmRMTFZNLmNtYWtlIENNYWtl L0ZpbmRMTFZNLmNtYWtlCi1pbmRleCAwYTU5ZTQ3Li42ZTkwOTIzIDEwMDY0NAotLS0tIGEvQ01h a2UvRmluZExMVk0uY21ha2UKLSsrKyBiL0NNYWtlL0ZpbmRMTFZNLmNtYWtlCi1AQCAtMTA0LDI4 ICsxMDQsMTYgQEAgc3RyaW5nKFJFR0VYIFJFUExBQ0UgIiAqXG4iICIiIExMVk1fU1lTVEVNX0xJ QlMgJHtMTFZNX1NZU1RFTV9MSUJTX09SSUd9KQotIGVuZGlmIChMTFZNX1NZU1RFTV9MSUJTX09S SUcpCi0gZW5kaWYgKExMVk1fVkVSU0lPTl9OT0RPVCBWRVJTSU9OX0dSRUFURVIgMzQpCi0gCi0r I3NvbWV0aGluZyBoYXJtbGVzcyBiZWNhdXNlIHdoaXRlc3BhY2UgYXQgc3RhcnQgaXMgYW4gZXJy b3IKLStzZXQoQ0xBTkdfTElCUkFSSUVTICItbGRsIikKLSBtYWNybyhhZGRfb25lX2xpYiBuYW1l KQotICAgRklORF9MSUJSQVJZKENMQU5HX0xJQgotICAgICBOQU1FUyAke25hbWV9Ci0gICAgIFBB VEhTICR7TExWTV9MSUJSQVJZX0RJUn0gTk9fREVGQVVMVF9QQVRIKQotLSAgc2V0KENMQU5HX0xJ QlJBUklFUyAke0NMQU5HX0xJQlJBUklFU30gJHtDTEFOR19MSUJ9KQotKyAgc2V0KENMQU5HX0xJ QlJBUklFUyAiJHtDTEFOR19MSUJSQVJJRVN9ICR7Q0xBTkdfTElCfSIpCi0rICBtZXNzYWdlKFNU QVRVUyAiY2xhbmdsaWJzIG5hbWUgJHtuYW1lfSB0aGlzICR7Q0xBTkdfTElCfSBhbGwgJHtDTEFO R19MSUJSQVJJRVN9ICIpCi0gCXVuc2V0KENMQU5HX0xJQiBDQUNIRSkKLSBlbmRtYWNybygpCi0g Ci0gI0Fzc3VtZSBjbGFuZyBsaWIgcGF0aCBzYW1lIGFzIGxsdm0gbGliIHBhdGgKLS1hZGRfb25l X2xpYigiY2xhbmdDb2RlR2VuIikKLS1hZGRfb25lX2xpYigiY2xhbmdGcm9udGVuZCIpCi0tYWRk X29uZV9saWIoImNsYW5nU2VyaWFsaXphdGlvbiIpCi0tYWRkX29uZV9saWIoImNsYW5nRHJpdmVy IikKLS1hZGRfb25lX2xpYigiY2xhbmdTZW1hIikKLS1hZGRfb25lX2xpYigiY2xhbmdTdGF0aWNB bmFseXplckZyb250ZW5kIikKLS1hZGRfb25lX2xpYigiY2xhbmdTdGF0aWNBbmFseXplckNoZWNr ZXJzIikKLS1hZGRfb25lX2xpYigiY2xhbmdTdGF0aWNBbmFseXplckNvcmUiKQotLWFkZF9vbmVf bGliKCJjbGFuZ0FuYWx5c2lzIikKLS1hZGRfb25lX2xpYigiY2xhbmdFZGl0IikKLS1hZGRfb25l X2xpYigiY2xhbmdBU1QiKQotLWFkZF9vbmVfbGliKCJjbGFuZ0FTVE1hdGNoZXJzIikKLS1hZGRf b25lX2xpYigiY2xhbmdQYXJzZSIpCi0tYWRkX29uZV9saWIoImNsYW5nU2VtYSIpCi0tYWRkX29u ZV9saWIoImNsYW5nTGV4IikKLS1hZGRfb25lX2xpYigiY2xhbmdCYXNpYyIpCi0rYWRkX29uZV9s aWIoImNsYW5nLWNwcCIpCi1kaWZmIC0tZ2l0IENNYWtlTGlzdHMudHh0IENNYWtlTGlzdHMudHh0 Ci1pbmRleCBjMTFhY2JiLi4wOGY0MjdkIDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsr KyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtNzksNyArNzksNyBAQCBlbHNlaWYgKENPTVBJTEVSIFNU UkVRVUFMICJDTEFORyIpCi0gZWxzZWlmIChDT01QSUxFUiBTVFJFUVVBTCAiSUNDIikKLSAgIHNl dCAoQ01BS0VfQ19DWFhfRkxBR1MgIiR7Q01BS0VfQ19DWFhfRkxBR1N9ICAtd2QyOTI4IC1XYWxs IC1mUElDIC1mc3RyaWN0LWFsaWFzaW5nIC1mcC1tb2RlbCBmYXN0IC1tc3NlNC4xIC1XbCwtRSIp Ci0gZW5kaWYgKCkKLS1zZXQgKENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9ICR7 Q01BS0VfQ19DWFhfRkxBR1N9IC1zdGQ9YysrMHggLVduby1pbnZhbGlkLW9mZnNldG9mIikKLStz ZXQgKENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9ICR7Q01BS0VfQ19DWFhfRkxB R1N9IC1Xbm8taW52YWxpZC1vZmZzZXRvZiIpCi0gc2V0IChDTUFLRV9DX0ZMQUdTICIke0NNQUtF X0NfRkxBR1N9ICR7Q01BS0VfQ19DWFhfRkxBR1N9IikKLSBzZXQgKENNQUtFX0NYWF9GTEFHU19E RUJVRyAgICAgICAgICAiLU8wIC1nIC1ER0JFX0RFQlVHPTEiKQotIHNldCAoQ01BS0VfQ1hYX0ZM QUdTX1JFTFdJVEhERUJJTkZPICItTzIgLWcgLURHQkVfREVCVUc9MSIpCi1kaWZmIC0tZ2l0IGJh Y2tlbmQvc3JjL2JhY2tlbmQvcHJvZ3JhbS5jcHAgYmFja2VuZC9zcmMvYmFja2VuZC9wcm9ncmFt LmNwcAotaW5kZXggYjM2ZjdiNC4uZTY2NjAzMSAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2Jh Y2tlbmQvcHJvZ3JhbS5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2JhY2tlbmQvcHJvZ3JhbS5jcHAK LUBAIC02OTQsOSArNjk0LDkgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gI2VuZGlmCi0gICAgICAgICAg ICAgICAgICk7Ci0gCi0rICAgIGxsdm06OmNsOjpSZXNldEFsbE9wdGlvbk9jY3VycmVuY2VzKCk7 Ci0gICAgIGNsYW5nOjpDb21waWxlckludm9jYXRpb246OkNyZWF0ZUZyb21BcmdzKCpDSSwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFyZ3NbMF0sCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcmdzWzBdICsg YXJncy5zaXplKCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNsYW5nOjpBcnJheVJlZjxjb25zdCBjaGFyKj4oYXJncyksCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpYWdzKTsKLSAgICAgLy8gQ3JlYXRlIHRo ZSBjb21waWxlciBpbnN0YW5jZQotICAgICBjbGFuZzo6Q29tcGlsZXJJbnN0YW5jZSBDbGFuZzsK LUBAIC0xMjQyLDggKzEyNDIsNyBAQCBFWFRFTkRfUVVPVEU6Ci0gICAgICAgLy8gQ3JlYXRlIHRo ZSBjb21waWxlciBpbnZvY2F0aW9uCi0gICAgICAgc3RkOjp1bmlxdWVfcHRyPGNsYW5nOjpDb21w aWxlckludm9jYXRpb24+IENJKG5ldyBjbGFuZzo6Q29tcGlsZXJJbnZvY2F0aW9uKTsKLSAgICAg ICByZXR1cm4gY2xhbmc6OkNvbXBpbGVySW52b2NhdGlvbjo6Q3JlYXRlRnJvbUFyZ3MoKkNJLAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm YXJnc1swXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJmFyZ3NbMF0gKyBhcmdzLnNpemUoKSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhbmc6OkFycmF5UmVmPGNvbnN0IGNo YXIqPihhcmdzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRGlhZ3MpOwotICAgICB9Ci0gI2VuZGlmCi1kaWZmIC0tZ2l0IGJhY2tlbmQv c3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAgYmFja2VuZC9zcmMvbGx2bS9sbHZtX2dlbl9i YWNrZW5kLmNwcAotaW5kZXggYzZmYzMwZC4uODI0NDFkOCAxMDA2NDQKLS0tLSBhL2JhY2tlbmQv c3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2 bV9nZW5fYmFja2VuZC5jcHAKLUBAIC01NzUsMTAgKzU3NSwxMiBAQCBuYW1lc3BhY2UgZ2JlCi0g ICAgICAgICBoYXNfZXJyb3JzKGZhbHNlKSwKLSAgICAgICAgIGxlZ2FjeU1vZGUodHJ1ZSkKLSAg ICAgewotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPCAxMAotICNpZiBMTFZNX1ZFUlNJT05fTUFK T1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSAzNwotICAgICAgIGluaXRpYWxpemVMb29w SW5mb1dyYXBwZXJQYXNzUGFzcygqUGFzc1JlZ2lzdHJ5OjpnZXRQYXNzUmVnaXN0cnkoKSk7Ci0g I2Vsc2UKLSAgICAgICBpbml0aWFsaXplTG9vcEluZm9QYXNzKCpQYXNzUmVnaXN0cnk6OmdldFBh c3NSZWdpc3RyeSgpKTsKLSsjZW5kaWYKLSAjZW5kaWYKLSAgICAgICBwYXNzID0gUEFTU19FTUlU X1JFR0lTVEVSUzsKLSAgICAgfQotZGlmZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2Vu X2JhY2tlbmQuaHBwIGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5ocHAKLWluZGV4 IGI0NzE1YjEuLjhlNzRmN2EgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2Vu X2JhY2tlbmQuaHBwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2VuX2JhY2tlbmQuaHBw Ci1AQCAtMTMwLDEwICsxMzAsMTAgQEAgbmFtZXNwYWNlIGdiZQotICAgbGx2bTo6RnVuY3Rpb25Q YXNzICpjcmVhdGVHZW5QYXNzKGlyOjpVbml0ICZ1bml0KTsKLSAKLSAgIC8qISBSZW1vdmUgdGhl IEdFUCBpbnN0cnVjdGlvbnMgKi8KLS0gIGxsdm06OkJhc2ljQmxvY2tQYXNzICpjcmVhdGVSZW1v dmVHRVBQYXNzKGNvbnN0IGlyOjpVbml0ICZ1bml0KTsKLSsgIGxsdm06OkZ1bmN0aW9uUGFzcyAq Y3JlYXRlUmVtb3ZlR0VQUGFzcyhjb25zdCBpcjo6VW5pdCAmdW5pdCk7Ci0gCi0gICAvKiEgTWVy Z2UgbG9hZC9zdG9yZSBpZiBwb3NzaWJsZSAqLwotLSAgbGx2bTo6QmFzaWNCbG9ja1Bhc3MgKmNy ZWF0ZUxvYWRTdG9yZU9wdGltaXphdGlvblBhc3MoKTsKLSsgIGxsdm06OkZ1bmN0aW9uUGFzcyAq Y3JlYXRlTG9hZFN0b3JlT3B0aW1pemF0aW9uUGFzcygpOwotIAotICAgLyohIFNjYWxhcml6ZSBh bGwgdmVjdG9yIG9wIGluc3RydWN0aW9ucyAqLwotICAgbGx2bTo6RnVuY3Rpb25QYXNzKiBjcmVh dGVTY2FsYXJpemVQYXNzKCk7Ci1AQCAtMTQxLDcgKzE0MSw3IEBAIG5hbWVzcGFjZSBnYmUKLSAg IGxsdm06Ok1vZHVsZVBhc3MqIGNyZWF0ZUJhcnJpZXJOb2R1cFBhc3MoYm9vbCk7Ci0gCi0gICAv KiEgQ29udmVydCB0aGUgSW50cmluc2ljIGNhbGwgdG8gZ2VuIGZ1bmN0aW9uICovCi0tICBsbHZt OjpCYXNpY0Jsb2NrUGFzcyAqY3JlYXRlSW50cmluc2ljTG93ZXJpbmdQYXNzKCk7Ci0rICBsbHZt OjpGdW5jdGlvblBhc3MgKmNyZWF0ZUludHJpbnNpY0xvd2VyaW5nUGFzcygpOwotIAotICAgLyoh IFBhc3NlciB0aGUgcHJpbnRmIGZ1bmN0aW9uIGNhbGwuICovCi0gICBsbHZtOjpGdW5jdGlvblBh c3MqIGNyZWF0ZVByaW50ZlBhcnNlclBhc3MoaXI6OlVuaXQgJnVuaXQpOwotZGlmZiAtLWdpdCBi YWNrZW5kL3NyYy9sbHZtL2xsdm1faW50cmluc2ljX2xvd2VyaW5nLmNwcCBiYWNrZW5kL3NyYy9s bHZtL2xsdm1faW50cmluc2ljX2xvd2VyaW5nLmNwcAotaW5kZXggOTRmMGNlNi4uYjU1MzllOSAx MDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9pbnRyaW5zaWNfbG93ZXJpbmcuY3Bw Ci0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1faW50cmluc2ljX2xvd2VyaW5nLmNwcAotQEAg LTI5LDEyICsyOSwxMiBAQAotIHVzaW5nIG5hbWVzcGFjZSBsbHZtOwotIAotIG5hbWVzcGFjZSBn YmUgewotLSAgICBjbGFzcyBJbnN0cmluc2ljTG93ZXJpbmcgOiBwdWJsaWMgQmFzaWNCbG9ja1Bh c3MKLSsgICAgY2xhc3MgSW5zdHJpbnNpY0xvd2VyaW5nIDogcHVibGljIEZ1bmN0aW9uUGFzcwot ICAgICB7Ci0gICAgIHB1YmxpYzoKLSAgICAgICBzdGF0aWMgY2hhciBJRDsKLSAgICAgICBJbnN0 cmluc2ljTG93ZXJpbmcoKSA6Ci0tICAgICAgICBCYXNpY0Jsb2NrUGFzcyhJRCkge30KLSsgICAg ICAgIEZ1bmN0aW9uUGFzcyhJRCkge30KLSAKLSAgICAgICB2b2lkIGdldEFuYWx5c2lzVXNhZ2Uo QW5hbHlzaXNVc2FnZSAmQVUpIGNvbnN0IHsKLSAKLUBAIC05Myw5ICs5Myw5IEBAIG5hbWVzcGFj ZSBnYmUgewotICAgICAgICAgQ0ktPmVyYXNlRnJvbVBhcmVudCgpOwotICAgICAgICAgcmV0dXJu IE5ld0NJOwotICAgICAgIH0KLS0gICAgICB2aXJ0dWFsIGJvb2wgcnVuT25CYXNpY0Jsb2NrKEJh c2ljQmxvY2sgJkJCKQotKyAgICAgIHZpcnR1YWwgYm9vbCBydW5PbkZ1bmN0aW9uKEZ1bmN0aW9u ICZGKQotICAgICAgIHsKLS0gICAgICAgIGJvb2wgY2hhbmdlZEJsb2NrID0gZmFsc2U7Ci0rICAg ICAgICBmb3IgKEJhc2ljQmxvY2sgJkJCIDogRikgewotICAgICAgICAgTW9kdWxlICpNID0gQkIu Z2V0UGFyZW50KCktPmdldFBhcmVudCgpOwotIAotICAgICAgICAgRGF0YUxheW91dCBURChNKTsK LUBAIC0xNTksMTMgKzE1OSwxNCBAQCBuYW1lc3BhY2UgZ2JlIHsKLSAgICAgICAgICAgICB9Ci0g ICAgICAgICAgIH0KLSAgICAgICAgIH0KLS0gICAgICAgIHJldHVybiBjaGFuZ2VkQmxvY2s7Ci0r ICAgICAgICB9Ci0rICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICB9Ci0gICAgIH07Ci0gCi0g ICAgIGNoYXIgSW5zdHJpbnNpY0xvd2VyaW5nOjpJRCA9IDA7Ci0gCi0tICAgIEJhc2ljQmxvY2tQ YXNzICpjcmVhdGVJbnRyaW5zaWNMb3dlcmluZ1Bhc3MoKSB7Ci0rICAgIEZ1bmN0aW9uUGFzcyAq Y3JlYXRlSW50cmluc2ljTG93ZXJpbmdQYXNzKCkgewotICAgICAgIHJldHVybiBuZXcgSW5zdHJp bnNpY0xvd2VyaW5nKCk7Ci0gICAgIH0KLSB9IC8vIGVuZCBuYW1lc3BhY2UKLWRpZmYgLS1naXQg YmFja2VuZC9zcmMvbGx2bS9sbHZtX2xvYWRzdG9yZV9vcHRpbWl6YXRpb24uY3BwIGJhY2tlbmQv c3JjL2xsdm0vbGx2bV9sb2Fkc3RvcmVfb3B0aW1pemF0aW9uLmNwcAotaW5kZXggNWFhMzhiZS4u ZTMxNDMwMiAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9sb2Fkc3RvcmVfb3B0 aW1pemF0aW9uLmNwcAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2xvYWRzdG9yZV9vcHRp bWl6YXRpb24uY3BwCi1AQCAtMjYsMTMgKzI2LDEzIEBACi0gCi0gdXNpbmcgbmFtZXNwYWNlIGxs dm07Ci0gbmFtZXNwYWNlIGdiZSB7Ci0tICBjbGFzcyBHZW5Mb2FkU3RvcmVPcHRpbWl6YXRpb24g OiBwdWJsaWMgQmFzaWNCbG9ja1Bhc3MgewotKyAgY2xhc3MgR2VuTG9hZFN0b3JlT3B0aW1pemF0 aW9uIDogcHVibGljIEZ1bmN0aW9uUGFzcyB7Ci0gCi0gICBwdWJsaWM6Ci0gICAgIHN0YXRpYyBj aGFyIElEOwotICAgICBTY2FsYXJFdm9sdXRpb24gKlNFOwotICAgICBjb25zdCBEYXRhTGF5b3V0 ICpURDsKLS0gICAgR2VuTG9hZFN0b3JlT3B0aW1pemF0aW9uKCkgOiBCYXNpY0Jsb2NrUGFzcyhJ RCkge30KLSsgICAgR2VuTG9hZFN0b3JlT3B0aW1pemF0aW9uKCkgOiBGdW5jdGlvblBhc3MoSUQp IHt9Ci0gCi0gICAgIHZvaWQgZ2V0QW5hbHlzaXNVc2FnZShBbmFseXNpc1VzYWdlICZBVSkgY29u c3QgewotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+ PSAzOAotQEAgLTQ1LDcgKzQ1LDkgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gICAgICAgQVUuc2V0UHJl c2VydmVzQ0ZHKCk7Ci0gICAgIH0KLSAKLS0gICAgdmlydHVhbCBib29sIHJ1bk9uQmFzaWNCbG9j ayhCYXNpY0Jsb2NrICZCQikgewotKyAgICB2aXJ0dWFsIGJvb2wgcnVuT25GdW5jdGlvbihGdW5j dGlvbiAmRikgewotKyAgICAgICAgYm9vbCBjaGFuZ2VkQW55QmxvY2sgPSBmYWxzZTsKLSsgICAg ICAgIGZvciAoQmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAq IDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDM4Ci0gICAgICAgU0UgPSAmZ2V0QW5hbHlzaXM8 U2NhbGFyRXZvbHV0aW9uV3JhcHBlclBhc3M+KCkuZ2V0U0UoKTsKLSAjZWxzZQotQEAgLTU5LDcg KzYxLDkgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gICAgICAgI2Vsc2UKLSAgICAgICAgIFREID0gZ2V0 QW5hbHlzaXNJZkF2YWlsYWJsZTxEYXRhTGF5b3V0PigpOwotICAgICAgICNlbmRpZgotLSAgICAg IHJldHVybiBvcHRpbWl6ZUxvYWRTdG9yZShCQik7Ci0rICAgICAgICAgICBjaGFuZ2VkQW55Qmxv Y2sgPSBvcHRpbWl6ZUxvYWRTdG9yZShCQikgfCBjaGFuZ2VkQW55QmxvY2s7Ci0rICAgICAgICB9 Ci0rICAgICAgICByZXR1cm4gY2hhbmdlZEFueUJsb2NrOwotICAgICB9Ci0gICAgIFR5cGUgICAg KmdldFZhbHVlVHlwZShWYWx1ZSAqaW5zbik7Ci0gICAgIFZhbHVlICAgKmdldFBvaW50ZXJPcGVy YW5kKFZhbHVlICpJKTsKLUBAIC0xNDgsNyArMTUyLDcgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gICAg ICAgdmFsdWVzLnB1c2hfYmFjayhtZXJnZWRbaV0pOwotICAgICB9Ci0gICAgIExvYWRJbnN0ICps ZCA9IGNhc3Q8TG9hZEluc3Q+KG1lcmdlZFswXSk7Ci0tICAgIHVuc2lnbmVkIGFsaWduID0gbGQt PmdldEFsaWdubWVudCgpOwotKyAgICBNYXliZUFsaWduIGFsaWduID0gbGQtPmdldEFsaWduKCk7 Ci0gICAgIHVuc2lnbmVkIGFkZHJTcGFjZSA9IGxkLT5nZXRQb2ludGVyQWRkcmVzc1NwYWNlKCk7 Ci0gICAgIC8vIGluc2VydCBiZWZvcmUgZmlyc3QgbG9hZAotICAgICBCdWlsZGVyLlNldEluc2Vy dFBvaW50KGxkKTsKLUBAIC0yMzEsNyArMjM1LDcgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gCi0gICAg IHVuc2lnbmVkIGFkZHJTcGFjZSA9IHN0LT5nZXRQb2ludGVyQWRkcmVzc1NwYWNlKCk7Ci0gCi0t ICAgIHVuc2lnbmVkIGFsaWduID0gc3QtPmdldEFsaWdubWVudCgpOwotKyAgICBNYXliZUFsaWdu IGFsaWduID0gc3QtPmdldEFsaWduKCk7Ci0gICAgIC8vIGluc2VydCBiZWZvcmUgdGhlIGxhc3Qg c3RvcmUKLSAgICAgQnVpbGRlci5TZXRJbnNlcnRQb2ludChtZXJnZWRbc2l6ZS0xXSk7Ci0gCi1A QCAtMzI1LDcgKzMyOSw3IEBAIG5hbWVzcGFjZSBnYmUgewotICAgICByZXR1cm4gY2hhbmdlZDsK LSAgIH0KLSAKLS0gIEJhc2ljQmxvY2tQYXNzICpjcmVhdGVMb2FkU3RvcmVPcHRpbWl6YXRpb25Q YXNzKCkgewotKyAgRnVuY3Rpb25QYXNzICpjcmVhdGVMb2FkU3RvcmVPcHRpbWl6YXRpb25QYXNz KCkgewotICAgICByZXR1cm4gbmV3IEdlbkxvYWRTdG9yZU9wdGltaXphdGlvbigpOwotICAgfQot IH07Ci1kaWZmIC0tZ2l0IGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9wYXNzZXMuY3BwIGJhY2tlbmQv c3JjL2xsdm0vbGx2bV9wYXNzZXMuY3BwCi1pbmRleCAxMDc1MmEzLi5iOGYyMjgyIDEwMDY0NAot LS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3Bhc3Nlcy5jcHAKLSsrKyBiL2JhY2tlbmQvc3Jj L2xsdm0vbGx2bV9wYXNzZXMuY3BwCi1AQCAtMzcsNyArMzcsNyBAQAotICNpbmNsdWRlICJzeXMv bWFwLmhwcCIKLSAKLSB1c2luZyBuYW1lc3BhY2UgbGx2bTsKLS0KLSt0ZW1wbGF0ZSBjbGFzcyBj Zmc6OlVwZGF0ZTxCYXNpY0Jsb2NrICo+OwotIG5hbWVzcGFjZSBnYmUKLSB7Ci0gICBib29sIGlz S2VybmVsRnVuY3Rpb24oY29uc3QgbGx2bTo6RnVuY3Rpb24gJkYpIHsKLUBAIC0yMTksMTMgKzIx OSwxMyBAQCBuYW1lc3BhY2UgZ2JlCi0gICAgIHJldHVybiBvZmZzZXQ7Ci0gICB9Ci0gCi0tICBj bGFzcyBHZW5SZW1vdmVHRVBQYXNzcyA6IHB1YmxpYyBCYXNpY0Jsb2NrUGFzcwotKyAgY2xhc3Mg R2VuUmVtb3ZlR0VQUGFzc3MgOiBwdWJsaWMgRnVuY3Rpb25QYXNzCi0gICB7Ci0gCi0gICAgcHVi bGljOgotICAgICBzdGF0aWMgY2hhciBJRDsKLSAgICAgR2VuUmVtb3ZlR0VQUGFzc3MoY29uc3Qg aXI6OlVuaXQgJnVuaXQpIDoKLS0gICAgICBCYXNpY0Jsb2NrUGFzcyhJRCksCi0rICAgICAgRnVu Y3Rpb25QYXNzKElEKSwKLSAgICAgICB1bml0KHVuaXQpIHt9Ci0gICAgIGNvbnN0IGlyOjpVbml0 ICZ1bml0OwotICAgICB2b2lkIGdldEFuYWx5c2lzVXNhZ2UoQW5hbHlzaXNVc2FnZSAmQVUpIGNv bnN0IHsKLUBAIC0yNDIsMTYgKzI0MiwxOCBAQCBuYW1lc3BhY2UgZ2JlCi0gCi0gICAgIGJvb2wg c2ltcGxpZnlHRVBJbnN0cnVjdGlvbnMoR2V0RWxlbWVudFB0ckluc3QqIEdFUEluc3QpOwotIAot LSAgICB2aXJ0dWFsIGJvb2wgcnVuT25CYXNpY0Jsb2NrKEJhc2ljQmxvY2sgJkJCKQotKyAgICB2 aXJ0dWFsIGJvb2wgcnVuT25GdW5jdGlvbihGdW5jdGlvbiAmRikKLSAgICAgewotLSAgICAgIGJv b2wgY2hhbmdlZEJsb2NrID0gZmFsc2U7Ci0rICAgICAgYm9vbCBjaGFuZ2VkQW55QmxvY2sgPSBm YWxzZTsKLSsgICAgICAgIGZvciAoQmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAgICAgaXBsaXN0 PEluc3RydWN0aW9uPjo6aXRlcmF0b3IgSSA9IEJCLmdldEluc3RMaXN0KCkuYmVnaW4oKTsKLSAg ICAgICBmb3IgKGF1dG8gbmV4dEkgPSBJLCBFID0gLS1CQi5nZXRJbnN0TGlzdCgpLmVuZCgpOyBJ ICE9IEU7IEkgPSBuZXh0SSkgewotICAgICAgICAgaXBsaXN0PEluc3RydWN0aW9uPjo6aXRlcmF0 b3IgSSA9IG5leHRJKys7Ci0gICAgICAgICBpZihHZXRFbGVtZW50UHRySW5zdCogZ2VwID0gZHlu X2Nhc3Q8R2V0RWxlbWVudFB0ckluc3Q+KCYqSSkpCi0tICAgICAgICAgIGNoYW5nZWRCbG9jayA9 IChzaW1wbGlmeUdFUEluc3RydWN0aW9ucyhnZXApIHx8IGNoYW5nZWRCbG9jayk7Ci0rICAgICAg ICAgIGNoYW5nZWRBbnlCbG9jayA9IChzaW1wbGlmeUdFUEluc3RydWN0aW9ucyhnZXApIHwgY2hh bmdlZEFueUJsb2NrKTsKLSAgICAgICB9Ci0tICAgICAgcmV0dXJuIGNoYW5nZWRCbG9jazsKLSsg ICAgICAgIH0KLSsgICAgICByZXR1cm4gY2hhbmdlZEFueUJsb2NrOwotICAgICB9Ci0gICB9Owot IAotQEAgLTM2Nyw3ICszNjksNyBAQCBuYW1lc3BhY2UgZ2JlCi0gICAgIHJldHVybiB0cnVlOwot ICAgfQotIAotLSAgQmFzaWNCbG9ja1Bhc3MgKmNyZWF0ZVJlbW92ZUdFUFBhc3MoY29uc3QgaXI6 OlVuaXQgJnVuaXQpIHsKLSsgIEZ1bmN0aW9uUGFzcyAqY3JlYXRlUmVtb3ZlR0VQUGFzcyhjb25z dCBpcjo6VW5pdCAmdW5pdCkgewotICAgICByZXR1cm4gbmV3IEdlblJlbW92ZUdFUFBhc3NzKHVu aXQpOwotICAgfQotIH0gLyogbmFtZXNwYWNlIGdiZSAqLwotZGlmZiAtLWdpdCBiYWNrZW5kL3Ny Yy9sbHZtL2xsdm1fc2FtcGxlcl9maXguY3BwIGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9zYW1wbGVy X2ZpeC5jcHAKLWluZGV4IDJhMDk3YzguLjg2M2JlNmQgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3Ny Yy9sbHZtL2xsdm1fc2FtcGxlcl9maXguY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1f c2FtcGxlcl9maXguY3BwCi1AQCAtMzMsMTAgKzMzLDEyIEBAIG5hbWVzcGFjZSBnYmUgewotICAg Y2xhc3MgU2FtcGxlckZpeCA6IHB1YmxpYyBGdW5jdGlvblBhc3MgewotICAgcHVibGljOgotICAg ICBTYW1wbGVyRml4KCkgOiBGdW5jdGlvblBhc3MoSUQpIHsKLSsjaWYgTExWTV9WRVJTSU9OX01B Sk9SIDwgMTAKLSAjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlO T1IgPj0gMzUKLSAgICAgICBpbml0aWFsaXplRG9taW5hdG9yVHJlZVdyYXBwZXJQYXNzUGFzcygq UGFzc1JlZ2lzdHJ5OjpnZXRQYXNzUmVnaXN0cnkoKSk7Ci0gI2Vsc2UKLSAgICAgICBpbml0aWFs aXplRG9taW5hdG9yVHJlZVBhc3MoKlBhc3NSZWdpc3RyeTo6Z2V0UGFzc1JlZ2lzdHJ5KCkpOwot KyNlbmRpZgotICNlbmRpZgotICAgICB9Ci0gCi1kaWZmIC0tZ2l0IGJhY2tlbmQvc3JjL2xsdm0v bGx2bV9zY2FsYXJpemUuY3BwIGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9zY2FsYXJpemUuY3BwCi1p bmRleCBlOWEyYTY2Li5lOWQyZWU0IDEwMDY0NAotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZt X3NjYWxhcml6ZS5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9zY2FsYXJpemUuY3Bw Ci1AQCAtOTYsMTAgKzk2LDEyIEBAIG5hbWVzcGFjZSBnYmUgewotIAotICAgICBTY2FsYXJpemUo KSA6IEZ1bmN0aW9uUGFzcyhJRCkKLSAgICAgewotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPCAx MAotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSAz NQotICAgICAgIGluaXRpYWxpemVEb21pbmF0b3JUcmVlV3JhcHBlclBhc3NQYXNzKCpQYXNzUmVn aXN0cnk6OmdldFBhc3NSZWdpc3RyeSgpKTsKLSAjZWxzZQotICAgICAgIGluaXRpYWxpemVEb21p bmF0b3JUcmVlUGFzcygqUGFzc1JlZ2lzdHJ5OjpnZXRQYXNzUmVnaXN0cnkoKSk7Ci0rI2VuZGlm Ci0gI2VuZGlmCi0gICAgIH0KLSAKLWRpZmYgLS1naXQgdXRlc3RzL0NNYWtlTGlzdHMudHh0IHV0 ZXN0cy9DTWFrZUxpc3RzLnR4dAotaW5kZXggMzAwZDg3YS4uNjQxNzljNyAxMDA2NDQKLS0tLSBh L3V0ZXN0cy9DTWFrZUxpc3RzLnR4dAotKysrIGIvdXRlc3RzL0NNYWtlTGlzdHMudHh0Ci1AQCAt MjYsOCArMjYsOCBAQCBpZiAoTk9UIE5PVF9CVUlMRF9TVEFORF9BTE9ORV9VVEVTVCkKLSAgICMg VGhyZWFkcwotICAgRmluZF9QYWNrYWdlKFRocmVhZHMpCi0gCi0tICBzZXQgKENNQUtFX0NYWF9G TEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9ICR7Q01BS0VfQ19DWFhfRkxBR1N9IC1zdGQ9YysrMHgg LVduby1pbnZhbGlkLW9mZnNldG9mIikKLS0gIHNldCAoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9D X0ZMQUdTfSAke0NNQUtFX0NfQ1hYX0ZMQUdTfSIpCi0rICBzZXQgKENNQUtFX0NYWF9GTEFHUyAi JHtDTUFLRV9DWFhfRkxBR1N9ICR7Q01BS0VfQ19DWFhfRkxBR1N9IC1Xbm8taW52YWxpZC1vZmZz ZXRvZiAtZmZsb2F0LXN0b3JlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIikKLSsgIHNldCAoQ01BS0Vf Q19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAke0NNQUtFX0NfQ1hYX0ZMQUdTfSAtZmZsb2F0LXN0 b3JlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIikgI2NvbXBpbGVyX3tkZWdyZWVzLHJhZGlhbnMsZnVu Y3Rpb25fYXJndW1lbnQyfSB1c2UgZXF1YWxpdHkgY29tcGFyaXNvbiBvZiBmbG9hdHMsIGNvbXBp bGVyX2xvbmdfYml0Y2FzdCB1c2VzIGFsaWFzaW5nCi0gICBzZXQgKENNQUtFX0NYWF9GTEFHU19E RUJVRyAgICAgICAgICAiLU8wIC1nIC1ER0JFX0RFQlVHPTEiKQotICAgc2V0IChDTUFLRV9DWFhf RkxBR1NfUkVMV0lUSERFQklORk8gIi1PMiAtZyAtREdCRV9ERUJVRz0xIikKLSAgIHNldCAoQ01B S0VfQ1hYX0ZMQUdTX01JTlNJWkVSRUwgICAgICItT3MgLUROREVCVUcgLURHQkVfREVCVUc9MCIp CmRpZmYgLS1naXQgYS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMTEucGF0Y2ggYi9zcmNw a2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMTEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDJjM2E0Mjc4OTQzYy4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmVpZ25ldC9w YXRjaGVzL2xsdm0xMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkzNyArMCwwIEBACi1Tb3Vy Y2U6IFNuZWt0cm9uCi0KLVRoZXJlIHdlcmUgYSBmZXcgY2hhbmdlcyByZXF1aXJlZCBmb3IgTExW TSAxMToKLSogbGx2bTo6U3RyaW5nUmVmIHJlcXVpcmVzIC5zdHIoKSwgaW1wbGljaXQgY29udmVy c2lvbiB3YXMgcmVtb3ZlZAotKiBsbHZtOjpDYWxsU2l0ZSB3YXMgcmVtb3ZlZCwgYnV0IHRoZSBy ZXF1aXJlZCBtZXRob2RzIGFyZSBhdmFpbGFibGUgb24gbGx2bTo6Q2FsbEluc3QKLSogVmVjdG9y VHlJRCB3YXMgc3BsaXQgaW50byBGaXhlZFZlY3RvclR5SUQgYW5kIFNjYWxhYmxlVmVjdG9yVHlJ RCwgRml4ZWRWZWN0b3JUeUlEIHdhcyB1c2VkCi0qIENhbGxJbnN0OjpnZXRDYWxsZWRWYWx1ZSgp IHdhcyByZW5hbWVkIHRvIENhbGxJbnN0OjpnZXRDYWxsZWRPcGVyYW5kKCkKLSogSW1wbGljaXQg Y29udmVyc2lvbiBmcm9tIE1heWJlQWxpZ24gdG8gQWxpZ24gd2FzIHJlbW92ZWQsIHNvIE1heWJl QWxpZ246OnZhbHVlT3JPbmUgd2FzIHVzZWQgaW5zdGVhZC4KLQotLS0tIGEvYmFja2VuZC9zcmMv bGx2bS9TdHJpcEF0dHJpYnV0ZXMuY3BwCTIwMjAtMTEtMDkgMTY6NDg6MjAuODIzODY2MTEyICsw MTAwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL1N0cmlwQXR0cmlidXRlcy5jcHAJMjAyMC0xMS0w OSAxOTowNDoxOS42NDE4OTcxNDEgKzAxMDAKLUBAIC0xMDcsOSArMTA3LDggQEAKLSAgICAgICAg QkIgIT0gRTsgKytCQikgewotICAgICBmb3IgKEJhc2ljQmxvY2s6Oml0ZXJhdG9yIEluc3QgPSBC Qi0+YmVnaW4oKSwgRSA9IEJCLT5lbmQoKTsKLSAgICAgICAgICBJbnN0ICE9IEU7ICsrSW5zdCkg ewotLSAgICAgIENhbGxTaXRlIENhbGwoJipJbnN0KTsKLS0gICAgICBpZiAoQ2FsbCkKLS0gICAg ICAgIENhbGwuc2V0Q2FsbGluZ0NvbnYoQ2FsbGluZ0NvbnY6OkMpOwotKyAgICAgIGlmIChDYWxs SW5zdCogY2FsbEluc3QgPSBkeW5fY2FzdDxDYWxsSW5zdD4oJipJbnN0KSkKLSsgICAgICAgIGNh bGxJbnN0LT5zZXRDYWxsaW5nQ29udihDYWxsaW5nQ29udjo6Qyk7Ci0gICAgIH0KLSAgIH0KLQot LS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2JpdGNvZGVfbGluay5jcHAJMjAyMC0xMS0wOSAx Njo0ODoyMC44MjM4NjYxMTIgKzAxMDAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9iaXRj b2RlX2xpbmsuY3BwCTIwMjAtMTEtMDkgMTc6MDQ6MDkuNjMzNzUzNDI4ICswMTAwCi1AQCAtOTgs NyArOTgsNyBAQAotICAgICAgICAgaWYgKGNhbGxGdW5jICYmIGNhbGxGdW5jLT5nZXRJbnRyaW5z aWNJRCgpICE9IDApCi0gICAgICAgICAgIGNvbnRpbnVlOwotCi0tICAgICAgICBzdGQ6OnN0cmlu ZyBmbk5hbWUgPSBjYWxsLT5nZXRDYWxsZWRWYWx1ZSgpLT5zdHJpcFBvaW50ZXJDYXN0cygpLT5n ZXROYW1lKCk7Ci0rICAgICAgICBzdGQ6OnN0cmluZyBmbk5hbWUgPSBjYWxsLT5nZXRDYWxsZWRP cGVyYW5kKCktPnN0cmlwUG9pbnRlckNhc3RzKCktPmdldE5hbWUoKS5zdHIoKTsKLQotICAgICAg ICAgaWYgKCFNRlMuaW5zZXJ0KGZuTmFtZSkuc2Vjb25kKSB7Ci0gICAgICAgICAgIGNvbnRpbnVl OwotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2RldmljZV9lbnF1ZXVlLmNwcAkyMDIwLTEx LTA5IDE2OjQ4OjIwLjgyMzg2NjExMiArMDEwMAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZt X2RldmljZV9lbnF1ZXVlLmNwcAkyMDIwLTExLTA5IDE5OjAxOjQ5LjIwMTkxNTAwOCArMDEwMAot QEAgLTQ1LDcgKzQ1LDcgQEAKLSAgICAgICByZXR1cm4gTlVMTDsKLQotICAgICAvKiBUaGlzIGlz IGEgZmFrZSwgdG8gY2hlY2sgdGhlIGZ1bmN0aW9uIGJpdGNhc3QgaXMgZm9yIGJsb2NrIG9yIG5v dCAqLwotLSAgICBzdGQ6OnN0cmluZyBmbk5hbWUgPSBGbi0+Z2V0TmFtZSgpOwotKyAgICBzdGQ6 OnN0cmluZyBmbk5hbWUgPSBGbi0+Z2V0TmFtZSgpLnN0cigpOwotICAgICBpZihmbk5hbWUuZmlu ZCgiX2ludm9rZSIpID09IHN0ZDo6c3RyaW5nOjpucG9zKQotICAgICAgIHJldHVybiBOVUxMOwot Ci1AQCAtMTE5LDE4ICsxMTksMTggQEAKLSAgICAgICBQYXJhbVR5cy5wdXNoX2JhY2sodHkpOwot ICAgICB9Ci0gICAgIEZ1bmN0aW9uVHlwZSogTmV3RlQgPSBGdW5jdGlvblR5cGU6OmdldChGbi0+ Z2V0UmV0dXJuVHlwZSgpLCBQYXJhbVR5cywgZmFsc2UpOwotLSAgICBGdW5jdGlvbiogTmV3Rm4g PSBGdW5jdGlvbjo6Q3JlYXRlKE5ld0ZULCBGdW5jdGlvbjo6RXh0ZXJuYWxMaW5rYWdlLCBGbi0+ Z2V0TmFtZSgpKTsKLSsgICAgRnVuY3Rpb24qIE5ld0ZuID0gRnVuY3Rpb246OkNyZWF0ZShOZXdG VCwgRnVuY3Rpb246OkV4dGVybmFsTGlua2FnZSwgRm4tPmdldE5hbWUoKS5zdHIoKSk7Ci0gICAg IFNtYWxsVmVjdG9yPFJldHVybkluc3QqLCA4PiBSZXR1cm5zOwotCi0gICAgIEZ1bmN0aW9uOjph cmdfaXRlcmF0b3IgTmV3Rm5BcmdJdCA9IE5ld0ZuLT5hcmdfYmVnaW4oKTsKLSAgICAgZm9yIChG dW5jdGlvbjo6YXJnX2l0ZXJhdG9yIEkgPSBGbi0+YXJnX2JlZ2luKCksIEUgPSBGbi0+YXJnX2Vu ZCgpOyBJICE9IEU7ICsrSSkgewotLSAgICAgIHN0ZDo6c3RyaW5nIEFyZ05hbWUgPSBJLT5nZXRO YW1lKCk7Ci0rICAgICAgc3RkOjpzdHJpbmcgQXJnTmFtZSA9IEktPmdldE5hbWUoKS5zdHIoKTsK LSAgICAgICBOZXdGbkFyZ0l0LT5zZXROYW1lKEFyZ05hbWUpOwotICAgICAgIFZNYXBbJipJXSA9 ICYoKk5ld0ZuQXJnSXQrKyk7Ci0gICAgIH0KLSAgICAgQ2xvbmVGdW5jdGlvbkludG8oTmV3Rm4s IEZuLCBWTWFwLCAvKk1vZHVsZUxldmVsQ2hhbmdlcz0qL3RydWUsIFJldHVybnMpOwotCi0tICAg IEZuLT5zZXROYW1lKCJfX2QiICsgRm4tPmdldE5hbWUoKSk7Ci0rICAgIEZuLT5zZXROYW1lKCJf X2QiICsgRm4tPmdldE5hbWUoKS5zdHIoKSk7Ci0gICAgIG1vZC0+Z2V0RnVuY3Rpb25MaXN0KCku cHVzaF9iYWNrKE5ld0ZuKTsKLSAgICAgLy9tb2QtPmdldE9ySW5zZXJ0RnVuY3Rpb24oTmV3Rm4t PmdldE5hbWUoKSwgTmV3Rm4tPmdldEZ1bmN0aW9uVHlwZSgpLAotICAgICAvLyAgICAgICAgICAg ICAgICAgICAgICAgICBOZXdGbi0+Z2V0QXR0cmlidXRlcygpKTsKLUBAIC0xNDcsNyArMTQ3LDcg QEAKLSAgICAgICBhcmdUeXBlTmFtZXMucHVzaF9iYWNrKGxsdm06Ok1EU3RyaW5nOjpnZXQoQ29u dGV4dCwgImNoYXIqIikpOwotICAgICAgIGFyZ0Jhc2VUeXBlTmFtZXMucHVzaF9iYWNrKGxsdm06 Ok1EU3RyaW5nOjpnZXQoQ29udGV4dCwgImNoYXIqIikpOwotICAgICAgIGFyZ1R5cGVRdWFscy5w dXNoX2JhY2sobGx2bTo6TURTdHJpbmc6OmdldChDb250ZXh0LCAiIikpOwotLSAgICAgIGFyZ05h bWVzLnB1c2hfYmFjayhsbHZtOjpNRFN0cmluZzo6Z2V0KENvbnRleHQsIEktPmdldE5hbWUoKSkp OwotKyAgICAgIGFyZ05hbWVzLnB1c2hfYmFjayhsbHZtOjpNRFN0cmluZzo6Z2V0KENvbnRleHQs IEktPmdldE5hbWUoKS5zdHIoKSkpOwotICAgICB9Ci0KLSAgICAgLy9JZiBydW4gdG8gaGVyZSwg bGx2bSB2ZXJzaW9uIGFsd2F5cyA+IDMuOSwgYWRkIHRoZSB2ZXJzaW9uIGNoZWNrIGp1c3QgZm9y IGJ1aWxkLgotQEAgLTE5OCw3ICsxOTgsNyBAQAotICAgICAgICAgICAgKiBpbnZva2UgcG9pbnRl ciB0byBzdG9yZSB0aGUgaW5kZXggaW4gdGhlIHVuaXQncyBibG9jayBmdW5jdGlvbnMgaW5kZXgu Ki8KLSAgICAgICAgICAgRnVuY3Rpb24gKkZuID0gZHluX2Nhc3Q8RnVuY3Rpb24+KGJ0LT5nZXRP cGVyYW5kKDApKTsKLQotLSAgICAgICAgICBzdGQ6OnN0cmluZyBmbk5hbWUgPSBGbi0+Z2V0TmFt ZSgpOwotKyAgICAgICAgICBzdGQ6OnN0cmluZyBmbk5hbWUgPSBGbi0+Z2V0TmFtZSgpLnN0cigp OwotICAgICAgICAgICBpbnQgaW5kZXggPSAtMTsKLSAgICAgICAgICAgZm9yKHNpemVfdCBpPTA7 IGk8dW5pdC5ibG9ja0Z1bmNzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgaWYodW5pdC5i bG9ja0Z1bmNzW2ldID09IGZuTmFtZSkgewotQEAgLTI0MSw3ICsyNDEsNyBAQAotICAgICAgICAg ICAgIC8vdW5uYW1lZCBjYWxsIGZ1bmN0aW9uLCBwYXJzZSB0aGUgdXNlIHRvIGZpbmQgdGhlIGRl ZmluZSBvZiBjYWxsZWQgZnVuY3Rpb24KLSAgICAgICAgICAgICBTbWFsbFZlY3RvcjxWYWx1ZSos IDE2PiBhcmdzKENJLT5vcF9iZWdpbigpLCBDSS0+b3BfZW5kKCktMSk7Ci0KLS0gICAgICAgICAg ICBWYWx1ZSAqdiA9IENJLT5nZXRDYWxsZWRWYWx1ZSgpOwotKyAgICAgICAgICAgIFZhbHVlICp2 ID0gQ0ktPmdldENhbGxlZE9wZXJhbmQoKTsKLSAgICAgICAgICAgICBCaXRDYXN0SW5zdCogYnQg PSBkeW5fY2FzdDxCaXRDYXN0SW5zdD4odik7Ci0gICAgICAgICAgICAgaWYoYnQgPT0gTlVMTCkK LSAgICAgICAgICAgICAgIGNvbnRpbnVlOwotQEAgLTMxNiw3ICszMTYsNyBAQAotICAgICAgICAg ICAgICAgICAgIENvbnN0YW50RXhwciAqZXhwciA9IGR5bl9jYXN0PENvbnN0YW50RXhwcj4oYy0+ Z2V0T3BlcmFuZCgzKSk7Ci0gICAgICAgICAgICAgICAgICAgQml0Q2FzdEluc3QgKmJ0ID0gZHlu X2Nhc3Q8Qml0Q2FzdEluc3Q+KGV4cHItPmdldEFzSW5zdHJ1Y3Rpb24oKSk7Ci0gICAgICAgICAg ICAgICAgICAgRnVuY3Rpb24qIGYgPSBkeW5fY2FzdDxGdW5jdGlvbj4oYnQtPmdldE9wZXJhbmQo MCkpOwotLSAgICAgICAgICAgICAgICAgIGJsb2Nrc1t2XSA9IGYtPmdldE5hbWUoKTsKLSsgICAg ICAgICAgICAgICAgICBibG9ja3Nbdl0gPSBmLT5nZXROYW1lKCkuc3RyKCk7Ci0gICAgICAgICAg ICAgICAgIH0KLSAgICAgICAgICAgICAgIH0KLQotQEAgLTMzMiw3ICszMzIsNyBAQAotICAgICAg ICAgICB9IGVsc2UgewotICAgICAgICAgICAgIC8vaGFuZGxlIGVucXVldWVfa2VybmVsIGZ1bmN0 aW9uIGNhbGwKLSAgICAgICAgICAgICBGdW5jdGlvbiAqZm4gPSBDSS0+Z2V0Q2FsbGVkRnVuY3Rp b24oKTsKLS0gICAgICAgICAgICBpZiAoZm4tPmdldE5hbWUoKS5maW5kKCJlbnF1ZXVlX2tlcm5l bCIpID09IHN0ZDo6c3RyaW5nOjpucG9zKQotKyAgICAgICAgICAgIGlmIChmbi0+Z2V0TmFtZSgp LnN0cigpLmZpbmQoImVucXVldWVfa2VybmVsIikgPT0gc3RkOjpzdHJpbmc6Om5wb3MpCi0gICAg ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgIC8vYmxvY2sgcGFyYW1ldGVyJ3Mg aW5kZXgsIDMgb3IgNgotQEAgLTM2MSw3ICszNjEsNyBAQAotICAgICAgICAgICAgICAgICAgIENv bnN0YW50RXhwciAqZXhwciA9IGR5bl9jYXN0PENvbnN0YW50RXhwcj4oYy0+Z2V0T3BlcmFuZCgz KSk7Ci0gICAgICAgICAgICAgICAgICAgQml0Q2FzdEluc3QgKmJ0ID0gZHluX2Nhc3Q8Qml0Q2Fz dEluc3Q+KGV4cHItPmdldEFzSW5zdHJ1Y3Rpb24oKSk7Ci0gICAgICAgICAgICAgICAgICAgRnVu Y3Rpb24qIGYgPSBkeW5fY2FzdDxGdW5jdGlvbj4oYnQtPmdldE9wZXJhbmQoMCkpOwotLSAgICAg ICAgICAgICAgICAgIGJsb2Nrc1t2XSA9IGYtPmdldE5hbWUoKTsKLSsgICAgICAgICAgICAgICAg ICBibG9ja3Nbdl0gPSBmLT5nZXROYW1lKCkuc3RyKCk7Ci0gICAgICAgICAgICAgICAgIH0KLSAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICB9IGVsc2UgaWYoaXNhPEFsbG9jYUluc3Q+KGJs b2NrKSkgewotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2dlbl9iYWNrZW5kLmNwcAkyMDIw LTExLTA5IDE2OjQ4OjIwLjgyMzg2NjExMiArMDEwMAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9s bHZtX2dlbl9iYWNrZW5kLmNwcAkyMDIwLTExLTA5IDE4OjMzOjUwLjkxOTExNDMyNyArMDEwMAot QEAgLTM3Niw3ICszNzYsNyBAQAotICAgICAgICAgICBHQkVfQVNTRVJUKGluZGV4ID09IDApOwot ICAgICAgICAgICByZXR1cm4gdGhpcy0+X25ld1NjYWxhcih2YWx1ZSwga2V5LCB0eXBlLCBpbmRl eCwgdW5pZm9ybSk7Ci0gICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgY2FzZSBUeXBlOjpWZWN0 b3JUeUlEOgotKyAgICAgICAgY2FzZSBUeXBlOjpGaXhlZFZlY3RvclR5SUQ6Ci0gICAgICAgICB7 Ci0gICAgICAgICAgIGF1dG8gdmVjdG9yVHlwZSA9IGNhc3Q8VmVjdG9yVHlwZT4odHlwZSk7Ci0g ICAgICAgICAgIGF1dG8gZWxlbWVudFR5cGUgPSB2ZWN0b3JUeXBlLT5nZXRFbGVtZW50VHlwZSgp OwotQEAgLTc0MywyMCArNzQzLDIwIEBACi0gI3VuZGVmIERFQ0xfVklTSVRfRk4KLQotICAgICAv LyBFbWl0IHJvdW5kaW5nIGluc3RydWN0aW9ucyBmcm9tIGdlbiBuYXRpdmUgZnVuY3Rpb24KLS0g ICAgdm9pZCBlbWl0Um91bmRpbmdDYWxsSW5zdChDYWxsSW5zdCAmSSwgQ2FsbFNpdGUgJkNTLCBp cjo6T3Bjb2RlIG9wY29kZSk7Ci0rICAgIHZvaWQgZW1pdFJvdW5kaW5nQ2FsbEluc3QoQ2FsbElu c3QgJkksIGlyOjpPcGNvZGUgb3Bjb2RlKTsKLSAgICAgLy8gRW1pdCB1bmFyeSBpbnN0cnVjdGlv bnMgZnJvbSBnZW4gbmF0aXZlIGZ1bmN0aW9uCi0tICAgIHZvaWQgZW1pdFVuYXJ5Q2FsbEluc3Qo Q2FsbEluc3QgJkksIENhbGxTaXRlICZDUywgaXI6Ok9wY29kZSBvcGNvZGUsIGlyOjpUeXBlID0g aXI6OlRZUEVfRkxPQVQpOwotKyAgICB2b2lkIGVtaXRVbmFyeUNhbGxJbnN0KENhbGxJbnN0ICZJ LCBpcjo6T3Bjb2RlIG9wY29kZSwgaXI6OlR5cGUgPSBpcjo6VFlQRV9GTE9BVCk7Ci0gICAgIC8v IEVtaXQgdW5hcnkgaW5zdHJ1Y3Rpb25zIGZyb20gZ2VuIG5hdGl2ZSBmdW5jdGlvbgotLSAgICB2 b2lkIGVtaXRBdG9taWNJbnN0KENhbGxJbnN0ICZJLCBDYWxsU2l0ZSAmQ1MsIGlyOjpBdG9taWNP cHMgb3Bjb2RlKTsKLSsgICAgdm9pZCBlbWl0QXRvbWljSW5zdChDYWxsSW5zdCAmSSwgaXI6OkF0 b21pY09wcyBvcGNvZGUpOwotICAgICAvLyBFbWl0IHdvcmtncm91cCBpbnN0cnVjdGlvbnMKLS0g ICAgdm9pZCBlbWl0V29ya0dyb3VwSW5zdChDYWxsSW5zdCAmSSwgQ2FsbFNpdGUgJkNTLCBpcjo6 V29ya0dyb3VwT3BzIG9wY29kZSk7Ci0rICAgIHZvaWQgZW1pdFdvcmtHcm91cEluc3QoQ2FsbElu c3QgJkksIGlyOjpXb3JrR3JvdXBPcHMgb3Bjb2RlKTsKLSAgICAgLy8gRW1pdCBzdWJncm91cCBp bnN0cnVjdGlvbnMKLS0gICAgdm9pZCBlbWl0U3ViR3JvdXBJbnN0KENhbGxJbnN0ICZJLCBDYWxs U2l0ZSAmQ1MsIGlyOjpXb3JrR3JvdXBPcHMgb3Bjb2RlKTsKLSsgICAgdm9pZCBlbWl0U3ViR3Jv dXBJbnN0KENhbGxJbnN0ICZJLCBpcjo6V29ya0dyb3VwT3BzIG9wY29kZSk7Ci0gICAgIC8vIEVt aXQgc3ViZ3JvdXAgaW5zdHJ1Y3Rpb25zCi0tICAgIHZvaWQgZW1pdEJsb2NrUmVhZFdyaXRlTWVt SW5zdChDYWxsSW5zdCAmSSwgQ2FsbFNpdGUgJkNTLCBib29sIGlzV3JpdGUsIHVpbnQ4X3QgdmVj X3NpemUsIGlyOjpUeXBlID0gaXI6OlRZUEVfVTMyKTsKLS0gICAgdm9pZCBlbWl0QmxvY2tSZWFk V3JpdGVJbWFnZUluc3QoQ2FsbEluc3QgJkksIENhbGxTaXRlICZDUywgYm9vbCBpc1dyaXRlLCB1 aW50OF90IHZlY19zaXplLCBpcjo6VHlwZSA9IGlyOjpUWVBFX1UzMik7Ci0rICAgIHZvaWQgZW1p dEJsb2NrUmVhZFdyaXRlTWVtSW5zdChDYWxsSW5zdCAmSSwgYm9vbCBpc1dyaXRlLCB1aW50OF90 IHZlY19zaXplLCBpcjo6VHlwZSA9IGlyOjpUWVBFX1UzMik7Ci0rICAgIHZvaWQgZW1pdEJsb2Nr UmVhZFdyaXRlSW1hZ2VJbnN0KENhbGxJbnN0ICZJLCBib29sIGlzV3JpdGUsIHVpbnQ4X3QgdmVj X3NpemUsIGlyOjpUeXBlID0gaXI6OlRZUEVfVTMyKTsKLQotLSAgICB1aW50OF90IGFwcGVuZFNh bXBsZXIoQ2FsbFNpdGU6OmFyZ19pdGVyYXRvciBBSSk7Ci0rICAgIHVpbnQ4X3QgYXBwZW5kU2Ft cGxlcihVc2VyOjpvcF9pdGVyYXRvciBBSSk7Ci0gICAgIHVpbnQ4X3QgZ2V0SW1hZ2VJRChDYWxs SW5zdCAmSSk7Ci0KLSAgICAgLy8gVGhlc2UgaW5zdHJ1Y3Rpb25zIGFyZSBub3Qgc3VwcG9ydGVk IGF0IGFsbAotQEAgLTEzMjAsMTMgKzEzMjAsMTMgQEAKLSAjZW5kaWYKLQotICAgICAgIGlmKHR5 cGVOYW1lTm9kZSkgewotLSAgICAgICAgbGx2bUluZm8udHlwZU5hbWU9IChjYXN0PE1EU3RyaW5n Pih0eXBlTmFtZU5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCk7Ci0rICAgICAg ICBsbHZtSW5mby50eXBlTmFtZT0gKGNhc3Q8TURTdHJpbmc+KHR5cGVOYW1lTm9kZS0+Z2V0T3Bl cmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKS5zdHIoKTsKLSAgICAgICB9Ci0gICAgICAgaWYodHlw ZUJhc2VOYW1lTm9kZSkgewotLSAgICAgICAgbGx2bUluZm8udHlwZUJhc2VOYW1lPSAoY2FzdDxN RFN0cmluZz4odHlwZUJhc2VOYW1lTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmco KTsKLSsgICAgICAgIGxsdm1JbmZvLnR5cGVCYXNlTmFtZT0gKGNhc3Q8TURTdHJpbmc+KHR5cGVC YXNlTmFtZU5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCkuc3RyKCk7Ci0gICAg ICAgfQotLSAgICAgIGxsdm1JbmZvLnR5cGVOYW1lPSAoY2FzdDxNRFN0cmluZz4odHlwZU5hbWVO b2RlLT5nZXRPcGVyYW5kKG9wSUQpKSktPmdldFN0cmluZygpOwotLSAgICAgIGxsdm1JbmZvLnR5 cGVRdWFsID0gKGNhc3Q8TURTdHJpbmc+KHR5cGVRdWFsTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkp LT5nZXRTdHJpbmcoKTsKLSsgICAgICBsbHZtSW5mby50eXBlTmFtZT0gKGNhc3Q8TURTdHJpbmc+ KHR5cGVOYW1lTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKS5zdHIoKTsKLSsg ICAgICBsbHZtSW5mby50eXBlUXVhbCA9IChjYXN0PE1EU3RyaW5nPih0eXBlUXVhbE5vZGUtPmdl dE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCkuc3RyKCk7Ci0gICAgICAgYm9vbCBpc0ltYWdl ID0gbGx2bUluZm8uaXNJbWFnZVR5cGUoKTsKLSAgICAgICBib29sIGlzUGlwZSA9IGxsdm1JbmZv LmlzUGlwZVR5cGUoKTsKLSAgICAgICBpZiAoSS0+Z2V0VHlwZSgpLT5pc1BvaW50ZXJUeSgpIHx8 IGlzSW1hZ2UgfHwgaXNQaXBlKSB7Ci1AQCAtMTUzMSw3ICsxNTMxLDcgQEAKLSAgICAgICAgICAg ICBFbHRUeSA9IGdldEVsdFR5cGUoRWx0VHksIFR5cGVJbmRleCk7Ci0gICAgICAgICB9Ci0KLS0g ICAgICAgIGlyOjpDb25zdGFudCBjYyA9IHVuaXQuZ2V0Q29uc3RhbnRTZXQoKS5nZXRDb25zdGFu dChwb2ludGVyLT5nZXROYW1lKCkpOwotKyAgICAgICAgaXI6OkNvbnN0YW50IGNjID0gdW5pdC5n ZXRDb25zdGFudFNldCgpLmdldENvbnN0YW50KHBvaW50ZXItPmdldE5hbWUoKS5zdHIoKSk7Ci0g ICAgICAgICB1bnNpZ25lZCBpbnQgZGVmT2Zmc2V0ID0gY2MuZ2V0T2Zmc2V0KCk7Ci0gICAgICAg ICByZWxvY3MucHVzaF9iYWNrKGlyOjpSZWxvY0VudHJ5KG9mZnNldCwgZGVmT2Zmc2V0ICsgY29u c3RhbnRPZmZzZXQpKTsKLQotQEAgLTE1NDYsNyArMTU0Niw3IEBACi0gICAgICAgcmV0dXJuOwot ICAgICB9Ci0gICAgIGlmIChpc2E8R2xvYmFsVmFyaWFibGU+KGMpKSB7Ci0tICAgICAgaXI6OkNv bnN0YW50IGNjID0gdW5pdC5nZXRDb25zdGFudFNldCgpLmdldENvbnN0YW50KGMtPmdldE5hbWUo KSk7Ci0rICAgICAgaXI6OkNvbnN0YW50IGNjID0gdW5pdC5nZXRDb25zdGFudFNldCgpLmdldENv bnN0YW50KGMtPmdldE5hbWUoKS5zdHIoKSk7Ci0gICAgICAgdW5zaWduZWQgaW50IGRlZk9mZnNl dCA9IGNjLmdldE9mZnNldCgpOwotCi0gICAgICAgcmVsb2NzLnB1c2hfYmFjayhpcjo6UmVsb2NF bnRyeShvZmZzZXQsIGRlZk9mZnNldCkpOwotQEAgLTE2MDksNyArMTYwOSw3IEBACi0gICAgICAg ICAgIH0KLSAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0tICAgICAgY2FzZSBUeXBlOjpU eXBlSUQ6OlZlY3RvclR5SUQ6Ci0rICAgICAgY2FzZSBUeXBlOjpUeXBlSUQ6OkZpeGVkVmVjdG9y VHlJRDoKLSAgICAgICAgIHsKLSAgICAgICAgICAgY29uc3QgQ29uc3RhbnREYXRhU2VxdWVudGlh bCAqY2RzID0gZHluX2Nhc3Q8Q29uc3RhbnREYXRhU2VxdWVudGlhbD4oYyk7Ci0gICAgICAgICAg IGNvbnN0IFZlY3RvclR5cGUgKnZlY1R5ID0gY2FzdDxWZWN0b3JUeXBlPih0eXBlKTsKLUBAIC0x OTM2LDcgKzE5MzYsNyBAQAotICAgICAgIGNhc2UgVHlwZTo6UG9pbnRlclR5SUQ6Ci0gICAgICAg ICByZWdUcmFuc2xhdG9yLm5ld1NjYWxhcih2YWx1ZSwga2V5LCAwLCB1bmlmb3JtKTsKLSAgICAg ICAgIGJyZWFrOwotLSAgICAgIGNhc2UgVHlwZTo6VmVjdG9yVHlJRDoKLSsgICAgICBjYXNlIFR5 cGU6OkZpeGVkVmVjdG9yVHlJRDoKLSAgICAgICB7Ci0gICAgICAgICBhdXRvIHZlY3RvclR5cGUg PSBjYXN0PFZlY3RvclR5cGU+KHR5cGUpOwotICAgICAgICAgY29uc3QgdWludDMyX3QgZWxlbU51 bSA9IHZlY3RvclR5cGUtPmdldE51bUVsZW1lbnRzKCk7Ci1AQCAtMjM5NSw3ICsyMzk1LDcgQEAK LSAjZW5kaWYKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKHR5cGVOYW1lTm9kZSkgewotLSAgICAg ICAgICBsbHZtSW5mby50eXBlTmFtZSA9IChjYXN0PE1EU3RyaW5nPih0eXBlTmFtZU5vZGUtPmdl dE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCk7Ci0rICAgICAgICAgIGxsdm1JbmZvLnR5cGVO YW1lID0gKGNhc3Q8TURTdHJpbmc+KHR5cGVOYW1lTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5n ZXRTdHJpbmcoKS5zdHIoKTsKLSAgICAgICAgICAgLy9MTFZNIDMuOSBpbWFnZSdzIHR5cGUgbmFt ZSBpbmNsdWRlIGFjY2VzcyBxdWFsLCBkb24ndCBtYXRjaCBPcGVuQ0wgc3BlYywgZXJhc2UgdGhl bS4KLSAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGZpbHRlcnMgPSB7Il9fcmVh ZF9vbmx5ICIsICJfX3dyaXRlX29ubHkgIn07Ci0gICAgICAgICAgIGZvciAodWludDMyX3QgaSA9 IDA7IGkgPCBmaWx0ZXJzLnNpemUoKTsgaSsrKSB7Ci1AQCAtMjQwNiwxNiArMjQwNiwxNiBAQAot ICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICBpZih0eXBlQmFzZU5hbWVOb2RlKXsK LS0gICAgICAgICAgbGx2bUluZm8udHlwZUJhc2VOYW1lID0gKGNhc3Q8TURTdHJpbmc+KHR5cGVC YXNlTmFtZU5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCk7Ci0rICAgICAgICAg IGxsdm1JbmZvLnR5cGVCYXNlTmFtZSA9IChjYXN0PE1EU3RyaW5nPih0eXBlQmFzZU5hbWVOb2Rl LT5nZXRPcGVyYW5kKG9wSUQpKSktPmdldFN0cmluZygpLnN0cigpOwotICAgICAgICAgfQotICAg ICAgICAgaWYoYWNjZXNzUXVhbE5vZGUpIHsKLS0gICAgICAgICAgbGx2bUluZm8uYWNjZXNzUXVh bCA9IChjYXN0PE1EU3RyaW5nPihhY2Nlc3NRdWFsTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5n ZXRTdHJpbmcoKTsKLSsgICAgICAgICAgbGx2bUluZm8uYWNjZXNzUXVhbCA9IChjYXN0PE1EU3Ry aW5nPihhY2Nlc3NRdWFsTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKS5zdHIo KTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKHR5cGVRdWFsTm9kZSkgewotLSAgICAgICAgICBs bHZtSW5mby50eXBlUXVhbCA9IChjYXN0PE1EU3RyaW5nPih0eXBlUXVhbE5vZGUtPmdldE9wZXJh bmQob3BJRCkpKS0+Z2V0U3RyaW5nKCk7Ci0rICAgICAgICAgIGxsdm1JbmZvLnR5cGVRdWFsID0g KGNhc3Q8TURTdHJpbmc+KHR5cGVRdWFsTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJp bmcoKS5zdHIoKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKGFyZ05hbWVOb2RlKXsKLS0gICAg ICAgICAgbGx2bUluZm8uYXJnTmFtZSA9IChjYXN0PE1EU3RyaW5nPihhcmdOYW1lTm9kZS0+Z2V0 T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKTsKLSsgICAgICAgICAgbGx2bUluZm8uYXJnTmFt ZSA9IChjYXN0PE1EU3RyaW5nPihhcmdOYW1lTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRT dHJpbmcoKS5zdHIoKTsKLSAgICAgICAgIH0KLQotICAgICAgICAgLy8gZnVuY3Rpb24gYXJndW1l bnRzIGFyZSB1bmlmb3JtIHZhbHVlcy4KLUBAIC0zMDEwLDcgKzMwMTAsNyBAQAotICAgICAgICAg fSBlbHNlIHsKLSAgICAgICAgICAgdGhpcy0+bmV3UmVnaXN0ZXIoY29uc3RfY2FzdDxHbG9iYWxW YXJpYWJsZSo+KCZ2KSk7Ci0gICAgICAgICAgIGlyOjpSZWdpc3RlciByZWcgPSByZWdUcmFuc2xh dG9yLmdldFNjYWxhcihjb25zdF9jYXN0PEdsb2JhbFZhcmlhYmxlKj4oJnYpLCAwKTsKLS0gICAg ICAgICAgaXI6OkNvbnN0YW50ICZjb24gPSB1bml0LmdldENvbnN0YW50U2V0KCkuZ2V0Q29uc3Rh bnQodi5nZXROYW1lKCkpOwotKyAgICAgICAgICBpcjo6Q29uc3RhbnQgJmNvbiA9IHVuaXQuZ2V0 Q29uc3RhbnRTZXQoKS5nZXRDb25zdGFudCh2LmdldE5hbWUoKS5zdHIoKSk7Ci0gICAgICAgICAg IGlmICghbGVnYWN5TW9kZSkgewotICAgICAgICAgICAgIGlyOjpSZWdpc3RlciByZWdsb2FkID0g Y3R4LnJlZyhnZXRGYW1pbHkoZ2V0VHlwZShjdHgsIHYuZ2V0VHlwZSgpKSkpOwotICAgICAgICAg ICAgIGN0eC5MT0FESShnZXRUeXBlKGN0eCwgdi5nZXRUeXBlKCkpLCByZWdsb2FkLCBjdHgubmV3 SW50ZWdlckltbWVkaWF0ZShjb24uZ2V0T2Zmc2V0KCksIGdldFR5cGUoY3R4LCB2LmdldFR5cGUo KSkpKTsKLUBAIC0zMjEyLDcgKzMyMTIsNyBAQAotICAgICAgICAgR0JFX0FTU0VSVE0oZmFsc2Us ICJVbnN1cHBvcnRlZCBjYWxsaW5nIGNvbnZlbnRpb24iKTsKLSAgICAgfQotCi0tICAgIGN0eC5z dGFydEZ1bmN0aW9uKEYuZ2V0TmFtZSgpKTsKLSsgICAgY3R4LnN0YXJ0RnVuY3Rpb24oRi5nZXRO YW1lKCkuc3RyKCkpOwotCi0gICAgIGlyOjpGdW5jdGlvbiAmZm4gPSBjdHguZ2V0RnVuY3Rpb24o KTsKLSAgICAgdGhpcy0+cmVnVHJhbnNsYXRvci5jbGVhcigpOwotQEAgLTM4MTAsOSArMzgxMCw5 IEBACi0KLSAgIHZvaWQgR2VuV3JpdGVyOjpyZWdBbGxvY2F0ZUNhbGxJbnN0KENhbGxJbnN0ICZJ KSB7Ci0gICAgIFZhbHVlICpkc3QgPSAmSTsKLS0gICAgVmFsdWUgKkNhbGxlZSA9IEkuZ2V0Q2Fs bGVkVmFsdWUoKTsKLSsgICAgVmFsdWUgKkNhbGxlZSA9IEkuZ2V0Q2FsbGVkT3BlcmFuZCgpOwot ICAgICBHQkVfQVNTRVJUKGN0eC5nZXRGdW5jdGlvbigpLmdldFByb2ZpbGUoKSA9PSBpcjo6UFJP RklMRV9PQ0wpOwotLSAgICBHQkVfQVNTRVJUKGlzYTxJbmxpbmVBc20+KEkuZ2V0Q2FsbGVkVmFs dWUoKSkgPT0gZmFsc2UpOwotKyAgICBHQkVfQVNTRVJUKGlzYTxJbmxpbmVBc20+KEkuZ2V0Q2Fs bGVkT3BlcmFuZCgpKSA9PSBmYWxzZSk7Ci0gICAgIGlmKEkuZ2V0TnVtQXJnT3BlcmFuZHMoKSkg R0JFX0FTU0VSVChJLmhhc1N0cnVjdFJldEF0dHIoKSA9PSBmYWxzZSk7Ci0KLSAgICAgLy8gV2Ug b25seSBzdXBwb3J0IGEgc21hbGwgbnVtYmVyIG9mIGludHJpbnNpY3MgcmlnaHQgbm93Ci1AQCAt Mzg3MCw3ICszODcwLDcgQEAKLSAgICAgICB9Ci0gICAgIH0KLSAgICAgLy8gR2V0IHRoZSBuYW1l IG9mIHRoZSBjYWxsZWQgZnVuY3Rpb24gYW5kIGhhbmRsZSBpdAotLSAgICBjb25zdCBzdGQ6OnN0 cmluZyBmbk5hbWUgPSBDYWxsZWUtPnN0cmlwUG9pbnRlckNhc3RzKCktPmdldE5hbWUoKTsKLSsg ICAgY29uc3Qgc3RkOjpzdHJpbmcgZm5OYW1lID0gQ2FsbGVlLT5zdHJpcFBvaW50ZXJDYXN0cygp LT5nZXROYW1lKCkuc3RyKCk7Ci0gICAgIGF1dG8gZ2VuSW50cmluc2ljSUQgPSBpbnRyaW5zaWNN YXAuZmluZChmbk5hbWUpOwotICAgICBzd2l0Y2ggKGdlbkludHJpbnNpY0lEKSB7Ci0gICAgICAg Y2FzZSBHRU5fT0NMX0dFVF9HUk9VUF9JRDA6Ci1AQCAtNDE2Niw3ICs0MTY2LDcgQEAKLSAgICAg fTsKLSAgIH0KLQotLSAgdm9pZCBHZW5Xcml0ZXI6OmVtaXRSb3VuZGluZ0NhbGxJbnN0KENhbGxJ bnN0ICZJLCBDYWxsU2l0ZSAmQ1MsIGlyOjpPcGNvZGUgb3Bjb2RlKSB7Ci0rICB2b2lkIEdlbldy aXRlcjo6ZW1pdFJvdW5kaW5nQ2FsbEluc3QoQ2FsbEluc3QgJkksIGlyOjpPcGNvZGUgb3Bjb2Rl KSB7Ci0gICAgIGlmIChJLmdldFR5cGUoKS0+aXNIYWxmVHkoKSkgewotICAgICAgIGNvbnN0IGly OjpSZWdpc3RlciBzcmMgPSB0aGlzLT5nZXRSZWdpc3RlcihJLmdldE9wZXJhbmQoMCkpOwotICAg ICAgIGNvbnN0IGlyOjpSZWdpc3RlciBzcmNGbG9hdCA9IGN0eC5yZWcoaXI6OkZBTUlMWV9EV09S RCk7Ci1AQCAtNDE3NywxNCArNDE3NywxNCBAQAotICAgICAgIGN0eC5GMzJUTzE2KGlyOjpUWVBF X1UxNiwgaXI6OlRZUEVfRkxPQVQsIGRzdCwgZHN0RmxvYXQpOwotICAgICB9IGVsc2UgewotICAg ICAgIEdCRV9BU1NFUlQoSS5nZXRUeXBlKCktPmlzRmxvYXRUeSgpKTsKLS0gICAgICB0aGlzLT5l bWl0VW5hcnlDYWxsSW5zdChJLENTLG9wY29kZSk7Ci0rICAgICAgdGhpcy0+ZW1pdFVuYXJ5Q2Fs bEluc3QoSSxvcGNvZGUpOwotICAgICB9Ci0gICB9Ci0KLS0gIHZvaWQgR2VuV3JpdGVyOjplbWl0 VW5hcnlDYWxsSW5zdChDYWxsSW5zdCAmSSwgQ2FsbFNpdGUgJkNTLCBpcjo6T3Bjb2RlIG9wY29k ZSwgaXI6OlR5cGUgdHlwZSkgewotLSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFJID0gQ1Mu YXJnX2JlZ2luKCk7Ci0rICB2b2lkIEdlbldyaXRlcjo6ZW1pdFVuYXJ5Q2FsbEluc3QoQ2FsbElu c3QgJkksIGlyOjpPcGNvZGUgb3Bjb2RlLCBpcjo6VHlwZSB0eXBlKSB7Ci0rICAgIFVzZXI6Om9w X2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsKLSAjaWYgR0JFX0RFQlVHCi0tICAgIENhbGxT aXRlOjphcmdfaXRlcmF0b3IgQUUgPSBDUy5hcmdfZW5kKCk7Ci0rICAgIFVzZXI6Om9wX2l0ZXJh dG9yIEFFID0gSS5hcmdfZW5kKCk7Ci0gI2VuZGlmIC8qIEdCRV9ERUJVRyAqLwotICAgICBHQkVf QVNTRVJUKEFJICE9IEFFKTsKLSAgICAgY29uc3QgaXI6OlJlZ2lzdGVyIHNyYyA9IHRoaXMtPmdl dFJlZ2lzdGVyKCpBSSk7Ci1AQCAtNDI5Myw5ICs0MjkzLDkgQEAKLSAgICAgdGhpcy0+ZW1pdEF0 b21pY0luc3RIZWxwZXIob3Bjb2RlLCB0eXBlLCBkc3QsIGxsdm1QdHIsIHBheWxvYWRUdXBsZSk7 Ci0gICB9Ci0KLS0gIHZvaWQgR2VuV3JpdGVyOjplbWl0QXRvbWljSW5zdChDYWxsSW5zdCAmSSwg Q2FsbFNpdGUgJkNTLCBpcjo6QXRvbWljT3BzIG9wY29kZSkgewotLSAgICBDYWxsU2l0ZTo6YXJn X2l0ZXJhdG9yIEFJID0gQ1MuYXJnX2JlZ2luKCk7Ci0tICAgIENhbGxTaXRlOjphcmdfaXRlcmF0 b3IgQUUgPSBDUy5hcmdfZW5kKCk7Ci0rICB2b2lkIEdlbldyaXRlcjo6ZW1pdEF0b21pY0luc3Qo Q2FsbEluc3QgJkksIGlyOjpBdG9taWNPcHMgb3Bjb2RlKSB7Ci0rICAgIFVzZXI6Om9wX2l0ZXJh dG9yIEFJID0gSS5hcmdfYmVnaW4oKTsKLSsgICAgVXNlcjo6b3BfaXRlcmF0b3IgQUUgPSBJLmFy Z19lbmQoKTsKLSAgICAgR0JFX0FTU0VSVChBSSAhPSBBRSk7Ci0gICAgIFZhbHVlICpsbHZtUHRy ID0gKkFJOwotICAgICBpcjo6QWRkcmVzc1NwYWNlIGFkZHJTcGFjZSA9IGFkZHJlc3NTcGFjZUxM Vk1Ub0dlbihsbHZtUHRyLT5nZXRUeXBlKCktPmdldFBvaW50ZXJBZGRyZXNzU3BhY2UoKSk7Ci1A QCAtNDM0OCw3ICs0MzQ4LDcgQEAKLSAgICAgfQotICAgfQotCi0tICB2b2lkIEdlbldyaXRlcjo6 ZW1pdFdvcmtHcm91cEluc3QoQ2FsbEluc3QgJkksIENhbGxTaXRlICZDUywgaXI6OldvcmtHcm91 cE9wcyBvcGNvZGUpIHsKLSsgIHZvaWQgR2VuV3JpdGVyOjplbWl0V29ya0dyb3VwSW5zdChDYWxs SW5zdCAmSSwgaXI6OldvcmtHcm91cE9wcyBvcGNvZGUpIHsKLSAgICAgaXI6OkZ1bmN0aW9uICZm ID0gY3R4LmdldEZ1bmN0aW9uKCk7Ci0KLSAgICAgaWYgKGYuZ2V0d2dCcm9hZGNhc3RTTE0oKSA8 IDAgJiYgb3Bjb2RlID09IGlyOjpXT1JLR1JPVVBfT1BfQlJPQURDQVNUKSB7Ci1AQCAtNDM3OCw4 ICs0Mzc4LDggQEAKLSAgICAgICBHQkVfQVNTRVJUKGYuZ2V0dGlkTWFwU0xNKCkgPj0gMCk7Ci0g ICAgIH0KLQotLSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFJID0gQ1MuYXJnX2JlZ2luKCk7 Ci0tICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUUgPSBDUy5hcmdfZW5kKCk7Ci0rICAgIFVz ZXI6Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsKLSsgICAgVXNlcjo6b3BfaXRlcmF0 b3IgQUUgPSBJLmFyZ19lbmQoKTsKLSAgICAgR0JFX0FTU0VSVChBSSAhPSBBRSk7Ci0KLSAgICAg aWYgKG9wY29kZSA9PSBpcjo6V09SS0dST1VQX09QX0FMTCB8fCBvcGNvZGUgPT0gaXI6OldPUktH Uk9VUF9PUF9BTlkpIHsKLUBAIC00MzkxLDE0ICs0MzkxLDE0IEBACi0gICAgICAgY29uc3QgaXI6 OlR1cGxlIHNyY1R1cGxlID0gY3R4LmFycmF5VHVwbGUoJnNyY1swXSwgMyk7Ci0gICAgICAgY3R4 LldPUktHUk9VUChvcGNvZGUsICh1aW50MzJfdClmLmdldHRpZE1hcFNMTSgpLCBnZXRSZWdpc3Rl cigmSSksIHNyY1R1cGxlLCAzLCBpcjo6VFlQRV9TMzIpOwotICAgICB9IGVsc2UgaWYgKG9wY29k ZSA9PSBpcjo6V09SS0dST1VQX09QX0JST0FEQ0FTVCkgewotLSAgICAgIGludCBhcmdOdW0gPSBD Uy5hcmdfc2l6ZSgpOwotKyAgICAgIGludCBhcmdOdW0gPSBJLmFyZ19zaXplKCk7Ci0gICAgICAg c3RkOjp2ZWN0b3I8aXI6OlJlZ2lzdGVyPiBzcmMoYXJnTnVtKTsKLSAgICAgICBmb3IgKGludCBp ID0gMDsgaSA8IGFyZ051bTsgaSsrKSB7Ci0gICAgICAgICBzcmNbaV0gPSB0aGlzLT5nZXRSZWdp c3RlcigqKEFJKyspKTsKLSAgICAgICB9Ci0gICAgICAgY29uc3QgaXI6OlR1cGxlIHNyY1R1cGxl ID0gY3R4LmFycmF5VHVwbGUoJnNyY1swXSwgYXJnTnVtKTsKLSAgICAgICBjdHguV09SS0dST1VQ KGlyOjpXT1JLR1JPVVBfT1BfQlJPQURDQVNULCAodWludDMyX3QpZi5nZXR3Z0Jyb2FkY2FzdFNM TSgpLCBnZXRSZWdpc3RlcigmSSksIHNyY1R1cGxlLCBhcmdOdW0sCi0tICAgICAgICAgIGdldFR5 cGUoY3R4LCAoKkNTLmFyZ19iZWdpbigpKS0+Z2V0VHlwZSgpKSk7Ci0rICAgICAgICAgIGdldFR5 cGUoY3R4LCAoKkkuYXJnX2JlZ2luKCkpLT5nZXRUeXBlKCkpKTsKLSAgICAgfSBlbHNlIHsKLSAg ICAgICBDb25zdGFudEludCAqc2lnbiA9IGR5bl9jYXN0PENvbnN0YW50SW50PihBSSk7Ci0gICAg ICAgR0JFX0FTU0VSVChzaWduKTsKLUBAIC00NDIzLDkgKzQ0MjMsOSBAQAotICAgICBHQkVfQVNT RVJUKEFJID09IEFFKTsKLSAgIH0KLQotLSAgdm9pZCBHZW5Xcml0ZXI6OmVtaXRTdWJHcm91cElu c3QoQ2FsbEluc3QgJkksIENhbGxTaXRlICZDUywgaXI6OldvcmtHcm91cE9wcyBvcGNvZGUpIHsK LS0gICAgQ2FsbFNpdGU6OmFyZ19pdGVyYXRvciBBSSA9IENTLmFyZ19iZWdpbigpOwotLSAgICBD YWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFFID0gQ1MuYXJnX2VuZCgpOwotKyAgdm9pZCBHZW5Xcml0 ZXI6OmVtaXRTdWJHcm91cEluc3QoQ2FsbEluc3QgJkksIGlyOjpXb3JrR3JvdXBPcHMgb3Bjb2Rl KSB7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsKLSsgICAgVXNl cjo6b3BfaXRlcmF0b3IgQUUgPSBJLmFyZ19lbmQoKTsKLSAgICAgR0JFX0FTU0VSVChBSSAhPSBB RSk7Ci0KLSAgICAgaWYgKG9wY29kZSA9PSBpcjo6V09SS0dST1VQX09QX0FMTCB8fCBvcGNvZGUg PT0gaXI6OldPUktHUk9VUF9PUF9BTlkpIHsKLUBAIC00NDM1LDcgKzQ0MzUsNyBAQAotICAgICAg IGNvbnN0IGlyOjpUdXBsZSBzcmNUdXBsZSA9IGN0eC5hcnJheVR1cGxlKCZzcmNbMF0sIDEpOwot ICAgICAgIGN0eC5TVUJHUk9VUChvcGNvZGUsIGdldFJlZ2lzdGVyKCZJKSwgc3JjVHVwbGUsIDEs IGlyOjpUWVBFX1MzMik7Ci0gICAgIH0gZWxzZSBpZiAob3Bjb2RlID09IGlyOjpXT1JLR1JPVVBf T1BfQlJPQURDQVNUKSB7Ci0tICAgICAgaW50IGFyZ051bSA9IENTLmFyZ19zaXplKCk7Ci0rICAg ICAgaW50IGFyZ051bSA9IEkuYXJnX3NpemUoKTsKLSAgICAgICBHQkVfQVNTRVJUKGFyZ051bSA9 PSAyKTsKLSAgICAgICBzdGQ6OnZlY3Rvcjxpcjo6UmVnaXN0ZXI+IHNyYyhhcmdOdW0pOwotICAg ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJnTnVtOyBpKyspIHsKLUBAIC00NDQzLDcgKzQ0NDMs NyBAQAotICAgICAgIH0KLSAgICAgICBjb25zdCBpcjo6VHVwbGUgc3JjVHVwbGUgPSBjdHguYXJy YXlUdXBsZSgmc3JjWzBdLCBhcmdOdW0pOwotICAgICAgIGN0eC5TVUJHUk9VUChpcjo6V09SS0dS T1VQX09QX0JST0FEQ0FTVCwgZ2V0UmVnaXN0ZXIoJkkpLCBzcmNUdXBsZSwgYXJnTnVtLAotLSAg ICAgICAgICBnZXRUeXBlKGN0eCwgKCpDUy5hcmdfYmVnaW4oKSktPmdldFR5cGUoKSkpOwotKyAg ICAgICAgICBnZXRUeXBlKGN0eCwgKCpJLmFyZ19iZWdpbigpKS0+Z2V0VHlwZSgpKSk7Ci0gICAg IH0gZWxzZSB7Ci0gICAgICAgQ29uc3RhbnRJbnQgKnNpZ24gPSBkeW5fY2FzdDxDb25zdGFudElu dD4oQUkpOwotICAgICAgIEdCRV9BU1NFUlQoc2lnbik7Ci1AQCAtNDQ2Niw5ICs0NDY2LDkgQEAK LSAgICAgR0JFX0FTU0VSVChBSSA9PSBBRSk7Ci0gICB9Ci0KLS0gIHZvaWQgR2VuV3JpdGVyOjpl bWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KENhbGxJbnN0ICZJLCBDYWxsU2l0ZSAmQ1MsIGJvb2wg aXNXcml0ZSwgdWludDhfdCB2ZWNfc2l6ZSwgaXI6OlR5cGUgdHlwZSkgewotLSAgICBDYWxsU2l0 ZTo6YXJnX2l0ZXJhdG9yIEFJID0gQ1MuYXJnX2JlZ2luKCk7Ci0tICAgIENhbGxTaXRlOjphcmdf aXRlcmF0b3IgQUUgPSBDUy5hcmdfZW5kKCk7Ci0rICB2b2lkIEdlbldyaXRlcjo6ZW1pdEJsb2Nr UmVhZFdyaXRlTWVtSW5zdChDYWxsSW5zdCAmSSwgYm9vbCBpc1dyaXRlLCB1aW50OF90IHZlY19z aXplLCBpcjo6VHlwZSB0eXBlKSB7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdf YmVnaW4oKTsKLSsgICAgVXNlcjo6b3BfaXRlcmF0b3IgQUUgPSBJLmFyZ19lbmQoKTsKLSAgICAg R0JFX0FTU0VSVChBSSAhPSBBRSk7Ci0KLSAgICAgVmFsdWUgKmxsdm1QdHIgPSAqKEFJKyspOwot QEAgLTQ1MjIsOSArNDUyMiw5IEBACi0gICAgIEdCRV9BU1NFUlQoQUkgPT0gQUUpOwotICAgfQot Ci0tICB2b2lkIEdlbldyaXRlcjo6ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KENhbGxJbnN0 ICZJLCBDYWxsU2l0ZSAmQ1MsIGJvb2wgaXNXcml0ZSwgdWludDhfdCB2ZWNfc2l6ZSwgaXI6OlR5 cGUgdHlwZSkgewotLSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFJID0gQ1MuYXJnX2JlZ2lu KCk7Ci0tICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUUgPSBDUy5hcmdfZW5kKCk7Ci0rICB2 b2lkIEdlbldyaXRlcjo6ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KENhbGxJbnN0ICZJLCBi b29sIGlzV3JpdGUsIHVpbnQ4X3QgdmVjX3NpemUsIGlyOjpUeXBlIHR5cGUpIHsKLSsgICAgVXNl cjo6b3BfaXRlcmF0b3IgQUkgPSBJLmFyZ19iZWdpbigpOwotKyAgICBVc2VyOjpvcF9pdGVyYXRv ciBBRSA9IEkuYXJnX2VuZCgpOwotICAgICBHQkVfQVNTRVJUKEFJICE9IEFFKTsKLQotICAgICBj b25zdCB1aW50OF90IGltYWdlSUQgPSBnZXRJbWFnZUlEKEkpOwotQEAgLTQ1NTcsNyArNDU1Nyw3 IEBACi0KLSAgIC8qIGFwcGVuZCBhIG5ldyBzYW1wbGVyLiBzaG91bGQgYmUgY2FsbGVkIGJlZm9y ZSBhbnkgcmVmZXJlbmNlIHRvCi0gICAgKiBhIHNhbXBsZXJfdCB2YWx1ZS4gKi8KLS0gIHVpbnQ4 X3QgR2VuV3JpdGVyOjphcHBlbmRTYW1wbGVyKENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUkpIHsK LSsgIHVpbnQ4X3QgR2VuV3JpdGVyOjphcHBlbmRTYW1wbGVyKFVzZXI6Om9wX2l0ZXJhdG9yIEFJ KSB7Ci0gI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49 IDQwCi0gICAgIENhbGxJbnN0ICpUQyA9IGR5bl9jYXN0PENhbGxJbnN0PigqQUkpOwotICAgICBD b25zdGFudCAqQ1BWID0gVEMgPyBkeW5fY2FzdDxDb25zdGFudD4oVEMtPmdldE9wZXJhbmQoMCkp IDogTlVMTDsKLUBAIC00NTk1LDEwICs0NTk1LDkgQEAKLSAgICAgICAgIGNvbnN0IGlyOjpGdW5j dGlvbiAmZm4gPSBjdHguZ2V0RnVuY3Rpb24oKTsKLQotICAgICAgICAgLy8gR2V0IHRoZSBmdW5j dGlvbiBhcmd1bWVudHMKLS0gICAgICAgIENhbGxTaXRlIENTKCZJKTsKLS0gICAgICAgIENhbGxT aXRlOjphcmdfaXRlcmF0b3IgQUkgPSBDUy5hcmdfYmVnaW4oKTsKLSsgICAgICAgIFVzZXI6Om9w X2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsKLSAjaWYgR0JFX0RFQlVHCi0tICAgICAgICBD YWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFFID0gQ1MuYXJnX2VuZCgpOwotKyAgICAgICAgVXNlcjo6 b3BfaXRlcmF0b3IgQUUgPSBJLmFyZ19lbmQoKTsKLSAjZW5kaWYgLyogR0JFX0RFQlVHICovCi0g ICAgICAgICBzd2l0Y2ggKEYtPmdldEludHJpbnNpY0lEKCkpIHsKLSAgICAgICAgICAgY2FzZSBJ bnRyaW5zaWM6OnN0YWNrc2F2ZToKLUBAIC00NzY0LDE3ICs0NzYzLDE3IEBACi0gICAgICAgICAg ICAgY3R4Lk1BRChzcmNUeXBlLCBkc3QsIHNyYzAsIHNyYzEsIHNyYzIpOwotICAgICAgICAgICB9 Ci0gICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgICBjYXNlIEludHJpbnNpYzo6c3FydDogdGhp cy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxDUyxpcjo6T1BfU1FSKTsgYnJlYWs7Ci0tICAgICAgICAg IGNhc2UgSW50cmluc2ljOjpjZWlsOiB0aGlzLT5lbWl0Um91bmRpbmdDYWxsSW5zdChJLENTLGly OjpPUF9STkRVKTsgYnJlYWs7Ci0tICAgICAgICAgIGNhc2UgSW50cmluc2ljOjp0cnVuYzogdGhp cy0+ZW1pdFJvdW5kaW5nQ2FsbEluc3QoSSxDUyxpcjo6T1BfUk5EWik7IGJyZWFrOwotLSAgICAg ICAgICBjYXNlIEludHJpbnNpYzo6cmludDogdGhpcy0+ZW1pdFJvdW5kaW5nQ2FsbEluc3QoSSxD Uyxpcjo6T1BfUk5ERSk7IGJyZWFrOwotLSAgICAgICAgICBjYXNlIEludHJpbnNpYzo6Zmxvb3I6 IHRoaXMtPmVtaXRSb3VuZGluZ0NhbGxJbnN0KEksQ1MsaXI6Ok9QX1JOREQpOyBicmVhazsKLS0g ICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OnNpbjogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxD Uyxpcjo6T1BfU0lOKTsgYnJlYWs7Ci0tICAgICAgICAgIGNhc2UgSW50cmluc2ljOjpjb3M6IHRo aXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksQ1MsaXI6Ok9QX0NPUyk7IGJyZWFrOwotLSAgICAgICAg ICBjYXNlIEludHJpbnNpYzo6bG9nMjogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxDUyxpcjo6 T1BfTE9HKTsgYnJlYWs7Ci0tICAgICAgICAgIGNhc2UgSW50cmluc2ljOjpleHAyOiB0aGlzLT5l bWl0VW5hcnlDYWxsSW5zdChJLENTLGlyOjpPUF9FWFApOyBicmVhazsKLSsgICAgICAgICAgY2Fz ZSBJbnRyaW5zaWM6OnNxcnQ6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksaXI6Ok9QX1NRUik7 IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEludHJpbnNpYzo6Y2VpbDogdGhpcy0+ZW1pdFJvdW5k aW5nQ2FsbEluc3QoSSxpcjo6T1BfUk5EVSk7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEludHJp bnNpYzo6dHJ1bmM6IHRoaXMtPmVtaXRSb3VuZGluZ0NhbGxJbnN0KEksaXI6Ok9QX1JORFopOyBi cmVhazsKLSsgICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OnJpbnQ6IHRoaXMtPmVtaXRSb3VuZGlu Z0NhbGxJbnN0KEksaXI6Ok9QX1JOREUpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBJbnRyaW5z aWM6OmZsb29yOiB0aGlzLT5lbWl0Um91bmRpbmdDYWxsSW5zdChJLGlyOjpPUF9STkREKTsgYnJl YWs7Ci0rICAgICAgICAgIGNhc2UgSW50cmluc2ljOjpzaW46IHRoaXMtPmVtaXRVbmFyeUNhbGxJ bnN0KEksaXI6Ok9QX1NJTik7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEludHJpbnNpYzo6Y29z OiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLGlyOjpPUF9DT1MpOyBicmVhazsKLSsgICAgICAg ICAgY2FzZSBJbnRyaW5zaWM6OmxvZzI6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksaXI6Ok9Q X0xPRyk7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEludHJpbnNpYzo6ZXhwMjogdGhpcy0+ZW1p dFVuYXJ5Q2FsbEluc3QoSSxpcjo6T1BfRVhQKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgSW50 cmluc2ljOjpic3dhcDoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLENT LGlyOjpPUF9CU1dBUCwgZ2V0VW5zaWduZWRUeXBlKGN0eCwgSS5nZXRUeXBlKCkpKTsgYnJlYWs7 Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxpcjo6T1BfQlNXQVAsIGdl dFVuc2lnbmVkVHlwZShjdHgsIEkuZ2V0VHlwZSgpKSk7IGJyZWFrOwotICAgICAgICAgICBjYXNl IEludHJpbnNpYzo6cG93OgotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgY29uc3QgaXI6OlJl Z2lzdGVyIHNyYzAgPSB0aGlzLT5nZXRSZWdpc3RlcigqQUkpOyArK0FJOwotQEAgLTQ3OTQsMjEg KzQ3OTMsMjAgQEAKLSAgICAgICAgIH0KLSAgICAgICB9IGVsc2UgewotICAgICAgICAgLy8gR2V0 IHRoZSBuYW1lIG9mIHRoZSBjYWxsZWQgZnVuY3Rpb24gYW5kIGhhbmRsZSBpdAotLSAgICAgICAg VmFsdWUgKkNhbGxlZSA9IEkuZ2V0Q2FsbGVkVmFsdWUoKTsKLS0gICAgICAgIGNvbnN0IHN0ZDo6 c3RyaW5nIGZuTmFtZSA9IENhbGxlZS0+c3RyaXBQb2ludGVyQ2FzdHMoKS0+Z2V0TmFtZSgpOwot KyAgICAgICAgVmFsdWUgKkNhbGxlZSA9IEkuZ2V0Q2FsbGVkT3BlcmFuZCgpOwotKyAgICAgICAg Y29uc3Qgc3RkOjpzdHJpbmcgZm5OYW1lID0gQ2FsbGVlLT5zdHJpcFBvaW50ZXJDYXN0cygpLT5n ZXROYW1lKCkuc3RyKCk7Ci0gICAgICAgICBhdXRvIGdlbkludHJpbnNpY0lEID0gaW50cmluc2lj TWFwLmZpbmQoZm5OYW1lKTsKLQotICAgICAgICAgLy8gR2V0IHRoZSBmdW5jdGlvbiBhcmd1bWVu dHMKLS0gICAgICAgIENhbGxTaXRlIENTKCZJKTsKLS0gICAgICAgIENhbGxTaXRlOjphcmdfaXRl cmF0b3IgQUkgPSBDUy5hcmdfYmVnaW4oKTsKLSsgICAgICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFJ ID0gSS5hcmdfYmVnaW4oKTsKLSAjaWYgR0JFX0RFQlVHCi0tICAgICAgICBDYWxsU2l0ZTo6YXJn X2l0ZXJhdG9yIEFFID0gQ1MuYXJnX2VuZCgpOwotKyAgICAgICAgVXNlcjo6b3BfaXRlcmF0b3Ig QUUgPSBJLmFyZ19lbmQoKTsKLSAjZW5kaWYgLyogR0JFX0RFQlVHICovCi0KLSAgICAgICAgIHN3 aXRjaCAoZ2VuSW50cmluc2ljSUQpIHsKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0ZCSDogdGhp cy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxDUyxpcjo6T1BfRkJILCBpcjo6VFlQRV9VMzIpOyBicmVh azsKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0ZCTDogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3Qo SSxDUyxpcjo6T1BfRkJMLCBpcjo6VFlQRV9VMzIpOyBicmVhazsKLS0gICAgICAgICAgY2FzZSBH RU5fT0NMX0NCSVQ6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksQ1MsaXI6Ok9QX0NCSVQsIGdl dFVuc2lnbmVkVHlwZShjdHgsICgqQUkpLT5nZXRUeXBlKCkpKTsgYnJlYWs7Ci0rICAgICAgICAg IGNhc2UgR0VOX09DTF9GQkg6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksaXI6Ok9QX0ZCSCwg aXI6OlRZUEVfVTMyKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9GQkw6IHRoaXMt PmVtaXRVbmFyeUNhbGxJbnN0KEksaXI6Ok9QX0ZCTCwgaXI6OlRZUEVfVTMyKTsgYnJlYWs7Ci0r ICAgICAgICAgIGNhc2UgR0VOX09DTF9DQklUOiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLGly OjpPUF9DQklULCBnZXRVbnNpZ25lZFR5cGUoY3R4LCAoKkFJKS0+Z2V0VHlwZSgpKSk7IGJyZWFr OwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfQUJTOgotICAgICAgICAgICB7Ci0gICAgICAgICAg ICAgY29uc3QgaXI6OlJlZ2lzdGVyIHNyYyA9IHRoaXMtPmdldFJlZ2lzdGVyKCpBSSk7Ci1AQCAt NDkxNSw4ICs0OTEzLDggQEAKLSAgICAgICAgICAgICBjdHguUkVHSU9OKGRzdCwgc3JjLCB4Lmdl dEludGVnZXJWYWx1ZSgpKTsKLSAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgfQotLSAg ICAgICAgICBjYXNlIEdFTl9PQ0xfUlNROiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLENTLGly OjpPUF9SU1EpOyBicmVhazsKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX1JDUDogdGhpcy0+ZW1p dFVuYXJ5Q2FsbEluc3QoSSxDUyxpcjo6T1BfUkNQKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2Ug R0VOX09DTF9SU1E6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksaXI6Ok9QX1JTUSk7IGJyZWFr OwotKyAgICAgICAgICBjYXNlIEdFTl9PQ0xfUkNQOiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJ LGlyOjpPUF9SQ1ApOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0ZPUkNFX1NJTUQ4 OiBjdHguc2V0U2ltZFdpZHRoKDgpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0ZP UkNFX1NJTUQxNjogY3R4LnNldFNpbWRXaWR0aCgxNik7IGJyZWFrOwotICAgICAgICAgICBjYXNl IEdFTl9PQ0xfTEJBUlJJRVI6IGN0eC5TWU5DKGlyOjpzeW5jTG9jYWxCYXJyaWVyKTsgYnJlYWs7 Ci1AQCAtNDk0NywzMSArNDk0NSwzMSBAQAotICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg ICB9Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfQUREMDoKLS0gICAgICAgICAgY2Fz ZSBHRU5fT0NMX0FUT01JQ19BREQxOiB0aGlzLT5lbWl0QXRvbWljSW5zdChJLENTLGlyOjpBVE9N SUNfT1BfQUREKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfQUREMTog dGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRPTUlDX09QX0FERCk7IGJyZWFrOwotICAgICAg ICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX1NVQjA6Ci0tICAgICAgICAgIGNhc2UgR0VOX09DTF9B VE9NSUNfU1VCMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX1NVQik7 IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX1NVQjE6IHRoaXMtPmVtaXRB dG9taWNJbnN0KEksaXI6OkFUT01JQ19PUF9TVUIpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBH RU5fT0NMX0FUT01JQ19BTkQwOgotLSAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX0FORDE6 IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksQ1MsaXI6OkFUT01JQ19PUF9BTkQpOyBicmVhazsKLSsg ICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19BTkQxOiB0aGlzLT5lbWl0QXRvbWljSW5zdChJ LGlyOjpBVE9NSUNfT1BfQU5EKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9N SUNfT1IwOgotLSAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX09SMTogdGhpcy0+ZW1pdEF0 b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX09SKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2Ug R0VOX09DTF9BVE9NSUNfT1IxOiB0aGlzLT5lbWl0QXRvbWljSW5zdChJLGlyOjpBVE9NSUNfT1Bf T1IpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19YT1IwOgotLSAgICAg ICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX1hPUjE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksQ1Ms aXI6OkFUT01JQ19PUF9YT1IpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01J Q19YT1IxOiB0aGlzLT5lbWl0QXRvbWljSW5zdChJLGlyOjpBVE9NSUNfT1BfWE9SKTsgYnJlYWs7 Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfWENIRzA6Ci0tICAgICAgICAgIGNhc2Ug R0VOX09DTF9BVE9NSUNfWENIRzE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksQ1MsaXI6OkFUT01J Q19PUF9YQ0hHKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfWENIRzE6 IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksaXI6OkFUT01JQ19PUF9YQ0hHKTsgYnJlYWs7Ci0gICAg ICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfSU5DMDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NM X0FUT01JQ19JTkMxOiB0aGlzLT5lbWl0QXRvbWljSW5zdChJLENTLGlyOjpBVE9NSUNfT1BfSU5D KTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfSU5DMTogdGhpcy0+ZW1p dEF0b21pY0luc3QoSSxpcjo6QVRPTUlDX09QX0lOQyk7IGJyZWFrOwotICAgICAgICAgICBjYXNl IEdFTl9PQ0xfQVRPTUlDX0RFQzA6Ci0tICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfREVD MTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX0RFQyk7IGJyZWFrOwot KyAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX0RFQzE6IHRoaXMtPmVtaXRBdG9taWNJbnN0 KEksaXI6OkFUT01JQ19PUF9ERUMpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0FU T01JQ19VTUlOMDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19VTUlOMTogdGhpcy0+ ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX1VNSU4pOyBicmVhazsKLSsgICAgICAg ICAgY2FzZSBHRU5fT0NMX0FUT01JQ19VTUlOMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6 QVRPTUlDX09QX1VNSU4pOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19V TUFYMDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19VTUFYMTogdGhpcy0+ZW1pdEF0 b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX1VNQVgpOyBicmVhazsKLSsgICAgICAgICAgY2Fz ZSBHRU5fT0NMX0FUT01JQ19VTUFYMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRPTUlD X09QX1VNQVgpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19JTUlOMDoK LS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19JTUlOMTogdGhpcy0+ZW1pdEF0b21pY0lu c3QoSSxDUyxpcjo6QVRPTUlDX09QX0lNSU4pOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5f T0NMX0FUT01JQ19JTUlOMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRPTUlDX09QX0lN SU4pOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19JTUFYMDoKLS0gICAg ICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19JTUFYMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxD Uyxpcjo6QVRPTUlDX09QX0lNQVgpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NMX0FU T01JQ19JTUFYMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRPTUlDX09QX0lNQVgpOyBi cmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19DTVBYQ0hHMDoKLS0gICAgICAg ICAgY2FzZSBHRU5fT0NMX0FUT01JQ19DTVBYQ0hHMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxD Uyxpcjo6QVRPTUlDX09QX0NNUFhDSEcpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NM X0FUT01JQ19DTVBYQ0hHMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRPTUlDX09QX0NN UFhDSEcpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0dFVF9JTUFHRV9XSURUSDoK LSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0dFVF9JTUFHRV9IRUlHSFQ6Ci0gICAgICAgICAgIGNh c2UgR0VOX09DTF9HRVRfSU1BR0VfREVQVEg6Ci1AQCAtNTQyOSw0OCArNTQyNyw0OCBAQAotICAg ICAgICAgICAgIGN0eC5XQUlUKCk7Ci0gICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgIH0K LS0gICAgICAgICAgY2FzZSBHRU5fT0NMX1dPUktfR1JPVVBfQUxMOiB0aGlzLT5lbWl0V29ya0dy b3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9BTEwpOyBicmVhazsKLS0gICAgICAgICAg Y2FzZSBHRU5fT0NMX1dPUktfR1JPVVBfQU5ZOiB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBD UywgaXI6OldPUktHUk9VUF9PUF9BTlkpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NM X1dPUktfR1JPVVBfQUxMOiB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQ X09QX0FMTCk7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9PQ0xfV09SS19HUk9VUF9BTlk6 IHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfQU5ZKTsgYnJlYWs7 Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9XT1JLX0dST1VQX0JST0FEQ0FTVDoKLS0gICAgICAg ICAgICB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9CUk9B RENBU1QpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBp cjo6V09SS0dST1VQX09QX0JST0FEQ0FTVCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9P Q0xfV09SS19HUk9VUF9SRURVQ0VfQUREOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3Jv dXBJbnN0KEksIENTLCBpcjo6V09SS0dST1VQX09QX1JFRFVDRV9BREQpOyBicmVhazsKLSsgICAg ICAgICAgICB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX1JFRFVD RV9BREQpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1dPUktfR1JPVVBfUkVEVUNF X01BWDoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBDUywgaXI6OldP UktHUk9VUF9PUF9SRURVQ0VfTUFYKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFdv cmtHcm91cEluc3QoSSwgaXI6OldPUktHUk9VUF9PUF9SRURVQ0VfTUFYKTsgYnJlYWs7Ci0gICAg ICAgICAgIGNhc2UgR0VOX09DTF9XT1JLX0dST1VQX1JFRFVDRV9NSU46Ci0tICAgICAgICAgICAg dGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfUkVEVUNFX01J Tik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpX T1JLR1JPVVBfT1BfUkVEVUNFX01JTik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xf V09SS19HUk9VUF9TQ0FOX0VYQ0xVU0lWRV9BREQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFdv cmtHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfRVhDTFVTSVZFX0FERCk7IGJyZWFr OwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBf T1BfRVhDTFVTSVZFX0FERCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfV09SS19H Uk9VUF9TQ0FOX0VYQ0xVU0lWRV9NQVg6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91 cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfRVhDTFVTSVZFX01BWCk7IGJyZWFrOwotKyAg ICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfRVhD TFVTSVZFX01BWCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfV09SS19HUk9VUF9T Q0FOX0VYQ0xVU0lWRV9NSU46Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3Qo SSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfRVhDTFVTSVZFX01JTik7IGJyZWFrOwotKyAgICAgICAg ICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfRVhDTFVTSVZF X01JTik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfV09SS19HUk9VUF9TQ0FOX0lO Q0xVU0lWRV9BREQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1Ms IGlyOjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZFX0FERCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRo aXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZFX0FERCk7 IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfV09SS19HUk9VUF9TQ0FOX0lOQ0xVU0lW RV9NQVg6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1MsIGlyOjpX T1JLR1JPVVBfT1BfSU5DTFVTSVZFX01BWCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVt aXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZFX01BWCk7IGJyZWFr OwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfV09SS19HUk9VUF9TQ0FOX0lOQ0xVU0lWRV9NSU46 Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JP VVBfT1BfSU5DTFVTSVZFX01JTik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRXb3Jr R3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZFX01JTik7IGJyZWFrOwotICAg ICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JST0FEQ0FTVDoKLS0gICAgICAgICAgICB0 aGlzLT5lbWl0U3ViR3JvdXBJbnN0KEksIENTLCBpcjo6V09SS0dST1VQX09QX0JST0FEQ0FTVCk7 IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwgaXI6OldPUktH Uk9VUF9PUF9CUk9BRENBU1QpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9H Uk9VUF9SRURVQ0VfQUREOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwg Q1MsIGlyOjpXT1JLR1JPVVBfT1BfUkVEVUNFX0FERCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRo aXMtPmVtaXRTdWJHcm91cEluc3QoSSwgaXI6OldPUktHUk9VUF9PUF9SRURVQ0VfQUREKTsgYnJl YWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfUkVEVUNFX01BWDoKLS0gICAg ICAgICAgICB0aGlzLT5lbWl0U3ViR3JvdXBJbnN0KEksIENTLCBpcjo6V09SS0dST1VQX09QX1JF RFVDRV9NQVgpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0U3ViR3JvdXBJbnN0KEks IGlyOjpXT1JLR1JPVVBfT1BfUkVEVUNFX01BWCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdF Tl9PQ0xfU1VCX0dST1VQX1JFRFVDRV9NSU46Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdy b3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9SRURVQ0VfTUlOKTsgYnJlYWs7Ci0rICAg ICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX1JFRFVD RV9NSU4pOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9TQ0FOX0VY Q0xVU0lWRV9BREQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywg aXI6OldPUktHUk9VUF9PUF9FWENMVVNJVkVfQUREKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhp cy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0VYQ0xVU0lWRV9BREQpOyBi cmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9TQ0FOX0VYQ0xVU0lWRV9N QVg6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktH Uk9VUF9PUF9FWENMVVNJVkVfTUFYKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFN1 Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0VYQ0xVU0lWRV9NQVgpOyBicmVhazsKLSAg ICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9TQ0FOX0VYQ0xVU0lWRV9NSU46Ci0tICAg ICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9F WENMVVNJVkVfTUlOKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5z dChJLCBpcjo6V09SS0dST1VQX09QX0VYQ0xVU0lWRV9NSU4pOyBicmVhazsKLSAgICAgICAgICAg Y2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9TQ0FOX0lOQ0xVU0lWRV9BREQ6Ci0tICAgICAgICAgICAg dGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9JTkNMVVNJVkVf QUREKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBpcjo6 V09SS0dST1VQX09QX0lOQ0xVU0lWRV9BREQpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5f T0NMX1NVQl9HUk9VUF9TQ0FOX0lOQ0xVU0lWRV9NQVg6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1p dFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9JTkNMVVNJVkVfTUFYKTsgYnJl YWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQ X09QX0lOQ0xVU0lWRV9NQVgpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9H Uk9VUF9TQ0FOX0lOQ0xVU0lWRV9NSU46Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3Vw SW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9JTkNMVVNJVkVfTUlOKTsgYnJlYWs7Ci0rICAg ICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0lOQ0xV U0lWRV9NSU4pOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0xSUDoKLSAgICAgICAg ICAgewotICAgICAgICAgICAgIGNvbnN0IGlyOjpSZWdpc3RlciBkc3QgID0gdGhpcy0+Z2V0UmVn aXN0ZXIoJkkpOwotQEAgLTU0ODQsNjkgKzU0ODIsNjkgQEAKLSAgICAgICAgICAgICBicmVhazsK LSAgICAgICAgICAgfQotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JF QURfVUlfTUVNOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3Qo SSwgQ1MsIGZhbHNlLCAxKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVh ZFdyaXRlTWVtSW5zdChJLCBmYWxzZSwgMSk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9P Q0xfU1VCX0dST1VQX0JMT0NLX1JFQURfVUlfTUVNMjoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0 QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCBmYWxzZSwgMik7IGJyZWFrOwotKyAgICAgICAg ICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgZmFsc2UsIDIpOyBicmVhazsK LSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19SRUFEX1VJX01FTTQ6Ci0t ICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBDUywgZmFsc2Us IDQpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0 KEksIGZhbHNlLCA0KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBf QkxPQ0tfUkVBRF9VSV9NRU04OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0 ZU1lbUluc3QoSSwgQ1MsIGZhbHNlLCA4KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1p dEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBmYWxzZSwgOCk7IGJyZWFrOwotICAgICAgICAgICBj YXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1dSSVRFX1VJX01FTToKLS0gICAgICAgICAgICB0 aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCB0cnVlLCAxKTsgYnJlYWs7Ci0r ICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCB0cnVlLCAxKTsg YnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVUlf TUVNMjoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENT LCB0cnVlLCAyKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRl TWVtSW5zdChJLCB0cnVlLCAyKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJf R1JPVVBfQkxPQ0tfV1JJVEVfVUlfTUVNNDoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tS ZWFkV3JpdGVNZW1JbnN0KEksIENTLCB0cnVlLCA0KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhp cy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCB0cnVlLCA0KTsgYnJlYWs7Ci0gICAgICAg ICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVUlfTUVNODoKLS0gICAgICAg ICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCB0cnVlLCA4KTsgYnJl YWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCB0cnVl LCA4KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVB RF9VSV9JTUFHRToKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUlu c3QoSSwgQ1MsIGZhbHNlLCAxKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2Nr UmVhZFdyaXRlSW1hZ2VJbnN0KEksIGZhbHNlLCAxKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2Ug R0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9VSV9JTUFHRTI6Ci0tICAgICAgICAgICAgdGhp cy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENTLCBmYWxzZSwgMik7IGJyZWFrOwot KyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBmYWxzZSwg Mik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JFQURf VUlfSU1BR0U0OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5z dChJLCBDUywgZmFsc2UsIDQpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tS ZWFkV3JpdGVJbWFnZUluc3QoSSwgZmFsc2UsIDQpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBH RU5fT0NMX1NVQl9HUk9VUF9CTE9DS19SRUFEX1VJX0lNQUdFODoKLS0gICAgICAgICAgICB0aGlz LT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgQ1MsIGZhbHNlLCA4KTsgYnJlYWs7Ci0r ICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIGZhbHNlLCA4 KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVf VUlfSU1BR0U6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0 KEksIENTLCB0cnVlLCAxKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVh ZFdyaXRlSW1hZ2VJbnN0KEksIHRydWUsIDEpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5f T0NMX1NVQl9HUk9VUF9CTE9DS19XUklURV9VSV9JTUFHRTI6Ci0tICAgICAgICAgICAgdGhpcy0+ ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENTLCB0cnVlLCAyKTsgYnJlYWs7Ci0rICAg ICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIHRydWUsIDIpOyBi cmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19XUklURV9VSV9J TUFHRTQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEks IENTLCB0cnVlLCA0KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdy aXRlSW1hZ2VJbnN0KEksIHRydWUsIDQpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NM X1NVQl9HUk9VUF9CTE9DS19XUklURV9VSV9JTUFHRTg6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1p dEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENTLCB0cnVlLCA4KTsgYnJlYWs7Ci0rICAgICAg ICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIHRydWUsIDgpOyBicmVh azsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19SRUFEX1VTX01FTToK LS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCBmYWxz ZSwgMSwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2Nr UmVhZFdyaXRlTWVtSW5zdChJLCBmYWxzZSwgMSwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0gICAg ICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9VU19NRU0yOgotLSAgICAg ICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgQ1MsIGZhbHNlLCAyLCBp cjo6VFlQRV9VMTYpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3Jp dGVNZW1JbnN0KEksIGZhbHNlLCAyLCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSAgICAgICAgICAg Y2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19SRUFEX1VTX01FTTQ6Ci0tICAgICAgICAgICAg dGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBDUywgZmFsc2UsIDQsIGlyOjpUWVBF X1UxNik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUlu c3QoSSwgZmFsc2UsIDQsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdF Tl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JFQURfVVNfTUVNODoKLS0gICAgICAgICAgICB0aGlzLT5l bWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCBmYWxzZSwgOCwgaXI6OlRZUEVfVTE2KTsg YnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBm YWxzZSwgOCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9T VUJfR1JPVVBfQkxPQ0tfV1JJVEVfVVNfTUVNOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9j a1JlYWRXcml0ZU1lbUluc3QoSSwgQ1MsIHRydWUsIDEsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwot KyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgdHJ1ZSwgMSwg aXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBf QkxPQ0tfV1JJVEVfVVNfTUVNMjoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3Jp dGVNZW1JbnN0KEksIENTLCB0cnVlLCAyLCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSsgICAgICAg ICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIHRydWUsIDIsIGlyOjpUWVBF X1UxNik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1dS SVRFX1VTX01FTTQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5z dChJLCBDUywgdHJ1ZSwgNCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhp cy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCB0cnVlLCA0LCBpcjo6VFlQRV9VMTYpOyBi cmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19XUklURV9VU19N RU04OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgQ1Ms IHRydWUsIDgsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRC bG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgdHJ1ZSwgOCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0g ICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9VU19JTUFHRToKLS0g ICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgQ1MsIGZhbHNl LCAxLCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tS ZWFkV3JpdGVJbWFnZUluc3QoSSwgZmFsc2UsIDEsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotICAg ICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JFQURfVVNfSU1BR0UyOgotLSAg ICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBDUywgZmFsc2Us IDIsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1Jl YWRXcml0ZUltYWdlSW5zdChJLCBmYWxzZSwgMiwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0gICAg ICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9VU19JTUFHRTQ6Ci0tICAg ICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENTLCBmYWxzZSwg NCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVh ZFdyaXRlSW1hZ2VJbnN0KEksIGZhbHNlLCA0LCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSAgICAg ICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19SRUFEX1VTX0lNQUdFODoKLS0gICAg ICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgQ1MsIGZhbHNlLCA4 LCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFk V3JpdGVJbWFnZUluc3QoSSwgZmFsc2UsIDgsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotICAgICAg ICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1dSSVRFX1VTX0lNQUdFOgotLSAgICAg ICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBDUywgdHJ1ZSwgMSwg aXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdy aXRlSW1hZ2VJbnN0KEksIHRydWUsIDEsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotICAgICAgICAg ICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1dSSVRFX1VTX0lNQUdFMjoKLS0gICAgICAg ICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgQ1MsIHRydWUsIDIsIGly OjpUWVBFX1UxNik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0 ZUltYWdlSW5zdChJLCB0cnVlLCAyLCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSAgICAgICAgICAg Y2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19XUklURV9VU19JTUFHRTQ6Ci0tICAgICAgICAg ICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENTLCB0cnVlLCA0LCBpcjo6 VFlQRV9VMTYpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJ bWFnZUluc3QoSSwgdHJ1ZSwgNCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0gICAgICAgICAgIGNh c2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVVNfSU1BR0U4OgotLSAgICAgICAgICAg IHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBDUywgdHJ1ZSwgOCwgaXI6OlRZ UEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1h Z2VJbnN0KEksIHRydWUsIDgsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotICAgICAgICAgICBjYXNl IEdFTl9PQ0xfR0VUX1BJUEU6Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9NQUtFX1JJRDoKLSAg ICAgICAgICAgY2FzZSBHRU5fT0NMX0dFVF9SSUQ6Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xs dm1faW5jbHVkZXMuaHBwCTIwMjAtMTEtMDkgMTY6NDg6MjAuODIzODY2MTEyICswMTAwCi0rKysg Yi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1faW5jbHVkZXMuaHBwCTIwMjAtMTEtMDkgMTk6MDA6MDku OTU1OTI2Nzk1ICswMTAwCi1AQCAtMTAzLDcgKzEwMyw2IEBACi0KLSAjaWYgTExWTV9WRVJTSU9O X01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gMzUKLSAjaW5jbHVkZSAibGx2bS9J Ui9NYW5nbGVyLmgiCi0tI2luY2x1ZGUgImxsdm0vSVIvQ2FsbFNpdGUuaCIKLSAjaW5jbHVkZSAi bGx2bS9JUi9DRkcuaCIKLSAjaW5jbHVkZSAibGx2bS9JUi9JbnN0VmlzaXRvci5oIgotICNpbmNs dWRlICJsbHZtL0lSL0lSUHJpbnRpbmdQYXNzZXMuaCIKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0v bGx2bV9sb2Fkc3RvcmVfb3B0aW1pemF0aW9uLmNwcAkyMDIwLTExLTA5IDE2OjQ4OjIwLjgyMzg2 NjExMiArMDEwMAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2xvYWRzdG9yZV9vcHRpbWl6 YXRpb24uY3BwCTIwMjAtMTEtMDkgMTk6MTA6MzcuMTQxODUyMzA4ICswMTAwCi1AQCAtMTYwLDcg KzE2MCw3IEBACi0gICAgIFZhbHVlICp2ZWNQdHIgPSBCdWlsZGVyLkNyZWF0ZUJpdENhc3QobGQt PmdldFBvaW50ZXJPcGVyYW5kKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFBvaW50ZXJUeXBlOjpnZXQodmVjVHksIGFkZHJTcGFjZSkpOwotICAgICBMb2FkSW5z dCAqdmVjVmFsdWUgPSBCdWlsZGVyLkNyZWF0ZUxvYWQodmVjUHRyKTsKLS0gICAgdmVjVmFsdWUt PnNldEFsaWdubWVudChhbGlnbik7Ci0rICAgIHZlY1ZhbHVlLT5zZXRBbGlnbm1lbnQoYWxpZ24u dmFsdWVPck9uZSgpKTsKLQotICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytp KSB7Ci0gICAgICAgVmFsdWUgKlMgPSBCdWlsZGVyLkNyZWF0ZUV4dHJhY3RFbGVtZW50KHZlY1Zh bHVlLCBCdWlsZGVyLmdldEludDMyKGkpKTsKLUBAIC0yNTEsNyArMjUxLDcgQEAKLSAgICAgICBy ZXR1cm47Ci0gICAgIFZhbHVlICpuZXdQdHIgPSBCdWlsZGVyLkNyZWF0ZUJpdENhc3Qoc3RQb2lu dGVyLCBQb2ludGVyVHlwZTo6Z2V0KHZlY1R5LCBhZGRyU3BhY2UpKTsKLSAgICAgU3RvcmVJbnN0 ICpuZXdTVCA9IEJ1aWxkZXIuQ3JlYXRlU3RvcmUocGFyZW50LCBuZXdQdHIpOwotLSAgICBuZXdT VC0+c2V0QWxpZ25tZW50KGFsaWduKTsKLSsgICAgbmV3U1QtPnNldEFsaWdubWVudChhbGlnbi52 YWx1ZU9yT25lKCkpOwotICAgfQotCi0gICAvLyBGaW5kIHRoZSBzYWZlIGl0ZXJhdG9yIHdlIGNh biBwb2ludCB0by4gSWYgcmVvcmRlciBoYXBwZW5zLCB3ZSBuZWVkIHRvCi0tLS0gYS9iYWNrZW5k L3NyYy9sbHZtL2xsdm1fcGFzc2VzLmNwcAkyMDIwLTExLTA5IDE2OjQ4OjIwLjgyMzg2NjExMiAr MDEwMAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3Bhc3Nlcy5jcHAJMjAyMC0xMS0wOSAx ODo0ODo1NS45OTcwMDY4MzcgKzAxMDAKLUBAIC05NSw3ICs5NSw3IEBACi0gICB7Ci0gICAgIHN3 aXRjaCAoVHktPmdldFR5cGVJRCgpKSB7Ci0gICAgICAgY2FzZSBUeXBlOjpWb2lkVHlJRDogTk9U X1NVUFBPUlRFRDsKLS0gICAgICBjYXNlIFR5cGU6OlZlY3RvclR5SUQ6Ci0rICAgICAgY2FzZSBU eXBlOjpGaXhlZFZlY3RvclR5SUQ6Ci0gICAgICAgewotICAgICAgICAgY29uc3QgVmVjdG9yVHlw ZSogVmVjVHkgPSBjYXN0PFZlY3RvclR5cGU+KFR5KTsKLSAgICAgICAgIHVpbnQzMl90IGVsZW1O dW0gPSBWZWNUeS0+Z2V0TnVtRWxlbWVudHMoKTsKLUBAIC0xMzgsNyArMTM4LDcgQEAKLSAgICAg ICBjYXNlIFR5cGU6OkhhbGZUeUlEOiAgICByZXR1cm4gMTY7Ci0gICAgICAgY2FzZSBUeXBlOjpG bG9hdFR5SUQ6ICAgcmV0dXJuIDMyOwotICAgICAgIGNhc2UgVHlwZTo6RG91YmxlVHlJRDogIHJl dHVybiA2NDsKLS0gICAgICBjYXNlIFR5cGU6OlZlY3RvclR5SUQ6Ci0rICAgICAgY2FzZSBUeXBl OjpGaXhlZFZlY3RvclR5SUQ6Ci0gICAgICAgewotICAgICAgICAgY29uc3QgVmVjdG9yVHlwZSog VmVjVHkgPSBjYXN0PFZlY3RvclR5cGU+KFR5KTsKLSAgICAgICAgIHVpbnQzMl90IG51bUVsZW0g PSBWZWNUeS0+Z2V0TnVtRWxlbWVudHMoKTsKLUBAIC0xODQsMTAgKzE4NCwxMiBAQAotICAgICBU eXBlICplbGVtZW50VHlwZSA9IE5VTEw7Ci0gICAgIGlmIChQb2ludGVyVHlwZSogcHRyVHlwZSA9 IGR5bl9jYXN0PFBvaW50ZXJUeXBlPihlbHRUeSkpCi0gICAgICAgZWxlbWVudFR5cGUgPSBwdHJU eXBlLT5nZXRFbGVtZW50VHlwZSgpOwotLSAgICBlbHNlIGlmKFNlcXVlbnRpYWxUeXBlICogc2Vx VHlwZSA9IGR5bl9jYXN0PFNlcXVlbnRpYWxUeXBlPihlbHRUeSkpCi0tICAgICAgZWxlbWVudFR5 cGUgPSBzZXFUeXBlLT5nZXRFbGVtZW50VHlwZSgpOwotLSAgICBlbHNlIGlmKENvbXBvc2l0ZVR5 cGUgKiBjb21wVHk9IGR5bl9jYXN0PENvbXBvc2l0ZVR5cGU+KGVsdFR5KSkKLS0gICAgICBlbGVt ZW50VHlwZSA9IGNvbXBUeS0+Z2V0VHlwZUF0SW5kZXgoaW5kZXgpOwotKyAgICBlbHNlIGlmIChB cnJheVR5cGUgKiBhcnJUeXBlID0gZHluX2Nhc3Q8QXJyYXlUeXBlPihlbHRUeSkpCi0rICAgICAg ZWxlbWVudFR5cGUgPSBhcnJUeXBlLT5nZXRFbGVtZW50VHlwZSgpOwotKyAgICBlbHNlIGlmKFZl Y3RvclR5cGUgKiB2ZWNUeXBlID0gZHluX2Nhc3Q8VmVjdG9yVHlwZT4oZWx0VHkpKQotKyAgICAg IGVsZW1lbnRUeXBlID0gdmVjVHlwZS0+Z2V0RWxlbWVudFR5cGUoKTsKLSsgICAgZWxzZSBpZihT dHJ1Y3RUeXBlICogc3RydWN0VHlwZSA9IGR5bl9jYXN0PFN0cnVjdFR5cGU+KGVsdFR5KSkKLSsg ICAgICBlbGVtZW50VHlwZSA9IHN0cnVjdFR5cGUtPmdldFR5cGVBdEluZGV4KGluZGV4KTsKLSAg ICAgR0JFX0FTU0VSVChlbGVtZW50VHlwZSk7Ci0gICAgIHJldHVybiBlbGVtZW50VHlwZTsKLSAg IH0KLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wcmludGZfcGFyc2VyLmNwcAkyMDIwLTEx LTA5IDE2OjQ4OjIwLjgyMzg2NjExMiArMDEwMAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZt X3ByaW50Zl9wYXJzZXIuY3BwCTIwMjAtMTEtMDkgMTg6NTc6NTIuNjE4OTQzMTA1ICswMTAwCi1A QCAtMzIzLDggKzMyMyw3IEBACi0KLSAgIGJvb2wgUHJpbnRmUGFyc2VyOjpwYXJzZU9uZVByaW50 Zkluc3RydWN0aW9uKENhbGxJbnN0ICogY2FsbCkKLSAgIHsKLS0gICAgQ2FsbFNpdGUgQ1MoY2Fs bCk7Ci0tICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQ0lfRk1UID0gQ1MuYXJnX2JlZ2luKCk7 Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIENJX0ZNVCA9IGNhbGwtPmFyZ19iZWdpbigpOwotICAg ICBpbnQgcGFyYW1fbnVtID0gMDsKLQotICAgICBsbHZtOjpDb25zdGFudCogYXJnMCA9IGR5bl9j YXN0PGxsdm06OkNvbnN0YW50RXhwcj4oKkNJX0ZNVCk7Ci1AQCAtMzQxLDcgKzM0MCw3IEBACi0g ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICB9Ci0KLS0gICAgc3RkOjpzdHJpbmcgZm10ID0gZm10 X2FyZy0+Z2V0QXNDU3RyaW5nKCk7Ci0rICAgIHN0ZDo6c3RyaW5nIGZtdCA9IGZtdF9hcmctPmdl dEFzQ1N0cmluZygpLnN0cigpOwotICAgICBpZiAoZm10LnNpemUoKSA9PSAwKQotICAgICAgIHJl dHVybiBmYWxzZTsKLQotQEAgLTQzNyw4ICs0MzYsOCBAQAotICAgICAgICAgaWYgKCBjYWxsRnVu Yy0+Z2V0SW50cmluc2ljSUQoKSAhPSAwKQotICAgICAgICAgICBjb250aW51ZTsKLQotLSAgICAg ICAgVmFsdWUgKkNhbGxlZSA9IGNhbGwtPmdldENhbGxlZFZhbHVlKCk7Ci0tICAgICAgICBjb25z dCBzdGQ6OnN0cmluZyBmbk5hbWUgPSBDYWxsZWUtPmdldE5hbWUoKTsKLSsgICAgICAgIFZhbHVl ICpDYWxsZWUgPSBjYWxsLT5nZXRDYWxsZWRPcGVyYW5kKCk7Ci0rICAgICAgICBjb25zdCBzdGQ6 OnN0cmluZyBmbk5hbWUgPSBDYWxsZWUtPmdldE5hbWUoKS5zdHIoKTsKLQotICAgICAgICAgaWYg KGZuTmFtZSAhPSAiX19nZW5fb2NsX3ByaW50Zl9zdHViIiAmJiBmbk5hbWUgIT0gIl9fZ2VuX29j bF9wdXRzX3N0dWIiKQotICAgICAgICAgICBjb250aW51ZTsKLUBAIC01ODIsNyArNTgxLDcgQEAK LSAgICAgICAgICAgICBpZiAoIWZtdF9hcmcgfHwgIWZtdF9hcmctPmlzQ1N0cmluZygpKSB7Ci0g ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgfQotLSAgICAgICAgICAg IHNsb3Quc3RhdGUuc3RyID0gZm10X2FyZy0+Z2V0QXNDU3RyaW5nKCk7Ci0rICAgICAgICAgICAg c2xvdC5zdGF0ZS5zdHIgPSBmbXRfYXJnLT5nZXRBc0NTdHJpbmcoKS5zdHIoKTsKLSAgICAgICAg ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgfQotICAgICAgICAgICBjYXNlIFBSSU5URl9D T05WRVJTSU9OX1A6IHsKLUBAIC01OTUsMTAgKzU5NCwxMCBAQAotCi0gICAgICAgICBicmVhazsK LQotLSAgICAgIGNhc2UgVHlwZTo6VmVjdG9yVHlJRDogewotLSAgICAgICAgVHlwZSogdmVjdF90 eXBlID0gYXJnLT5nZXRUeXBlKCk7Ci0tICAgICAgICBUeXBlKiBlbHRfdHlwZSA9IHZlY3RfdHlw ZS0+Z2V0VmVjdG9yRWxlbWVudFR5cGUoKTsKLS0gICAgICAgIGludCB2ZWNfbnVtID0gdmVjdF90 eXBlLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpOwotKyAgICAgIGNhc2UgVHlwZTo6Rml4ZWRWZWN0 b3JUeUlEOiB7Ci0rICAgICAgICBWZWN0b3JUeXBlKiB2ZWN0X3R5cGUgPSBkeW5fY2FzdDxWZWN0 b3JUeXBlPihhcmctPmdldFR5cGUoKSk7Ci0rICAgICAgICBUeXBlKiBlbHRfdHlwZSA9IHZlY3Rf dHlwZS0+Z2V0RWxlbWVudFR5cGUoKTsKLSsgICAgICAgIGludCB2ZWNfbnVtID0gdmVjdF90eXBl LT5nZXROdW1FbGVtZW50cygpOwotICAgICAgICAgYm9vbCBzaWduID0gZmFsc2U7Ci0KLSAgICAg ICAgIGlmICh2ZWNfbnVtICE9IHNsb3Quc3RhdGUudmVjdG9yX24pIHsKLS0tLSBhL2JhY2tlbmQv c3JjL2xsdm0vbGx2bV9wcm9maWxpbmcuY3BwCTIwMjAtMTEtMDkgMTY6NDg6MjAuODIzODY2MTEy ICswMTAwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fcHJvZmlsaW5nLmNwcAkyMDIwLTEx LTA5IDE4OjU5OjUwLjEyMDkyOTE1MCArMDEwMAotQEAgLTM1LDcgKzM1LDYgQEAKLSAjaW5jbHVk ZSAibGx2bS9JUi9JUkJ1aWxkZXIuaCIKLQotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCAr IExMVk1fVkVSU0lPTl9NSU5PUiA+PSAzNQotLSNpbmNsdWRlICJsbHZtL0lSL0NhbGxTaXRlLmgi Ci0gI2luY2x1ZGUgImxsdm0vSVIvQ0ZHLmgiCi0gI2Vsc2UKLSAjaW5jbHVkZSAibGx2bS9TdXBw b3J0L0NhbGxTaXRlLmgiCi0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fc2FtcGxlcl9maXgu Y3BwCTIwMjAtMTEtMDkgMTY6NDg6MjAuODIzODY2MTEyICswMTAwCi0rKysgYi9iYWNrZW5kL3Ny Yy9sbHZtL2xsdm1fc2FtcGxlcl9maXguY3BwCTIwMjAtMTEtMDkgMTc6MDE6MDkuNDA3Nzc0ODMy ICswMTAwCi1AQCAtNDUsOCArNDUsOCBAQAotICAgICBib29sIHZpc2l0Q2FsbEluc3QoQ2FsbElu c3QgKkkpIHsKLSAgICAgICBpZighSSkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLS0gICAgICBW YWx1ZSAqQ2FsbGVlID0gSS0+Z2V0Q2FsbGVkVmFsdWUoKTsKLS0gICAgICBjb25zdCBzdGQ6OnN0 cmluZyBmbk5hbWUgPSBDYWxsZWUtPmdldE5hbWUoKTsKLSsgICAgICBWYWx1ZSAqQ2FsbGVlID0g SS0+Z2V0Q2FsbGVkT3BlcmFuZCgpOwotKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZuTmFtZSA9 IENhbGxlZS0+Z2V0TmFtZSgpLnN0cigpOwotICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwot ICAgICAgIFR5cGUgKmJvb2xUeSA9IEludGVnZXJUeXBlOjpnZXQoSS0+Z2V0Q29udGV4dCgpLCAx KTsKLSAgICAgICBUeXBlICppMzJUeSA9IEludGVnZXJUeXBlOjpnZXQoSS0+Z2V0Q29udGV4dCgp LCAzMik7Ci1AQCAtNTksNyArNTksNyBAQAotICAgICAgICAgVmFsdWUgKm5lZWRGaXhWYWw7Ci0g I2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDQwCi0g ICAgICAgICBDYWxsSW5zdCAqaW5pdCA9IGR5bl9jYXN0PENhbGxJbnN0PihJLT5nZXRPcGVyYW5k KDApKTsKLS0gICAgICAgIGlmIChpbml0ICYmIGluaXQtPmdldENhbGxlZFZhbHVlKCktPmdldE5h bWUoKS5jb21wYXJlKCJfX3RyYW5zbGF0ZV9zYW1wbGVyX2luaXRpYWxpemVyIikpCi0rICAgICAg ICBpZiAoaW5pdCAmJiBpbml0LT5nZXRDYWxsZWRPcGVyYW5kKCktPmdldE5hbWUoKS5jb21wYXJl KCJfX3RyYW5zbGF0ZV9zYW1wbGVyX2luaXRpYWxpemVyIikpCi0gICAgICAgICB7Ci0gICAgICAg ICAgIGNvbnN0IENvbnN0YW50SW50ICpjaSA9IGR5bl9jYXN0PENvbnN0YW50SW50Pihpbml0LT5n ZXRPcGVyYW5kKDApKTsKLSAgICAgICAgICAgdWludDMyX3Qgc2FtcGxlckludCA9IGNpLT5nZXRa RXh0VmFsdWUoKTsKLUBAIC0xMTMsNyArMTEzLDcgQEAKLSAgICAgICAgIFZhbHVlICpuZWVkRml4 VmFsOwotICAjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1Ig Pj0gNDAKLSAgICAgICAgIENhbGxJbnN0ICppbml0ID0gZHluX2Nhc3Q8Q2FsbEluc3Q+KEktPmdl dE9wZXJhbmQoMCkpOwotLSAgICAgICAgaWYgKGluaXQgJiYgaW5pdC0+Z2V0Q2FsbGVkVmFsdWUo KS0+Z2V0TmFtZSgpLmNvbXBhcmUoIl9fdHJhbnNsYXRlX3NhbXBsZXJfaW5pdGlhbGl6ZXIiKSkK LSsgICAgICAgIGlmIChpbml0ICYmIGluaXQtPmdldENhbGxlZE9wZXJhbmQoKS0+Z2V0TmFtZSgp LmNvbXBhcmUoIl9fdHJhbnNsYXRlX3NhbXBsZXJfaW5pdGlhbGl6ZXIiKSkKLSAgICAgICAgIHsK LSAgICAgICAgICAgY29uc3QgQ29uc3RhbnRJbnQgKmNpID0gZHluX2Nhc3Q8Q29uc3RhbnRJbnQ+ KGluaXQtPmdldE9wZXJhbmQoMCkpOwotICAgICAgICAgICB1aW50MzJfdCBzYW1wbGVySW50ID0g Y2ktPmdldFpFeHRWYWx1ZSgpOwotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3NjYWxhcml6 ZS5jcHAJMjAyMC0xMS0wOSAxNjo0ODoyMC44MjM4NjYxMTIgKzAxMDAKLSsrKyBiL2JhY2tlbmQv c3JjL2xsdm0vbGx2bV9zY2FsYXJpemUuY3BwCTIwMjAtMTEtMDkgMTg6NTE6MTYuODg4OTkwMTA0 ICswMTAwCi1AQCAtMTc4LDcgKzE3OCw3IEBACi0gICAgICAgaWYoIXR5cGUpCi0gICAgICAgICBy ZXR1cm4gdHlwZTsKLSAgICAgICBzd2l0Y2godHlwZS0+Z2V0VHlwZUlEKCkpIHsKLS0gICAgICBj YXNlIFR5cGU6OlZlY3RvclR5SUQ6Ci0rICAgICAgY2FzZSBUeXBlOjpGaXhlZFZlY3RvclR5SUQ6 Ci0gICAgICAgY2FzZSBUeXBlOjpBcnJheVR5SUQ6Ci0gICAgICAgICByZXR1cm4gR2V0QmFzaWNU eXBlKHR5cGUtPmdldENvbnRhaW5lZFR5cGUoMCkpOwotICAgICAgIGRlZmF1bHQ6Ci1AQCAtMTg4 LDcgKzE4OCw3IEBACi0gICAgIH0KLQotICAgICBpbnQgR2V0Q29tcG9uZW50Q291bnQoY29uc3Qg VHlwZSogdHlwZSkgIHsKLS0gICAgICBpZiAodHlwZSAmJiB0eXBlLT5nZXRUeXBlSUQoKSA9PSBU eXBlOjpWZWN0b3JUeUlEKQotKyAgICAgIGlmICh0eXBlICYmIHR5cGUtPmdldFR5cGVJRCgpID09 IFR5cGU6OkZpeGVkVmVjdG9yVHlJRCkKLSAgICAgICAgIHJldHVybiBsbHZtOjpkeW5fY2FzdDxW ZWN0b3JUeXBlPih0eXBlKS0+Z2V0TnVtRWxlbWVudHMoKTsKLSAgICAgICBlbHNlCi0gICAgICAg ICByZXR1cm4gMTsKLUBAIC02NTIsMTMgKzY1MiwxMiBAQAotICAgICAgICAgICBicmVhazsKLSAg ICAgICAgIH0KLSAgICAgICB9IGVsc2UgewotLSAgICAgICAgVmFsdWUgKkNhbGxlZSA9IGNhbGwt PmdldENhbGxlZFZhbHVlKCk7Ci0tICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmbk5hbWUgPSBD YWxsZWUtPmdldE5hbWUoKTsKLSsgICAgICAgIFZhbHVlICpDYWxsZWUgPSBjYWxsLT5nZXRDYWxs ZWRPcGVyYW5kKCk7Ci0rICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmbk5hbWUgPSBDYWxsZWUt PmdldE5hbWUoKS5zdHIoKTsKLSAgICAgICAgIGF1dG8gZ2VuSW50cmluc2ljSUQgPSBpbnRyaW5z aWNNYXAuZmluZChmbk5hbWUpOwotCi0gICAgICAgICAvLyBHZXQgdGhlIGZ1bmN0aW9uIGFyZ3Vt ZW50cwotLSAgICAgICAgQ2FsbFNpdGUgQ1MoY2FsbCk7Ci0tICAgICAgICBDYWxsU2l0ZTo6YXJn X2l0ZXJhdG9yIENJID0gQ1MuYXJnX2JlZ2luKCkgKyAxOwotKyAgICAgICAgVXNlcjo6b3BfaXRl cmF0b3IgQ0kgPSBjYWxsLT5hcmdfYmVnaW4oKSArIDE7Ci0KLSAgICAgICAgIHN3aXRjaCAoZ2Vu SW50cmluc2ljSUQpIHsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX05PVF9GT1VORDoKLUBAIC03 MjksNyArNzI4LDcgQEAKLSAgICAgICAgICAgICBleHRyYWN0RnJvbVZlY3RvcihjYWxsKTsKLSAg ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1BSSU5URjoKLS0gICAg ICAgICAgICBmb3IgKDsgQ0kgIT0gQ1MuYXJnX2VuZCgpOyArK0NJKQotKyAgICAgICAgICAgIGZv ciAoOyBDSSAhPSBjYWxsLT5hcmdfZW5kKCk7ICsrQ0kpCi0gICAgICAgICAgICAgICBpZiAoKCpD SSktPmdldFR5cGUoKS0+aXNWZWN0b3JUeSgpKQotICAgICAgICAgICAgICAgICAqQ0kgPSBJbnNl cnRUb1ZlY3RvcihjYWxsLCAqQ0kpOwotICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEv c3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTEyLnBhdGNoIGIvc3JjcGtncy9iZWlnbmV0L3Bh dGNoZXMvbGx2bTEyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjhhYjAw NWMxNDguLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMTIu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotZGlmZiAtLWdpdCBiYWNrZW5k L3NyYy9sbHZtL0V4cGFuZExhcmdlSW50ZWdlcnMuY3BwIGJhY2tlbmQvc3JjL2xsdm0vRXhwYW5k TGFyZ2VJbnRlZ2Vycy5jcHAKLWluZGV4IDg1MTVkYzEzLi4yNzA4MDM4MCAxMDA2NDQKLS0tLSBh L2JhY2tlbmQvc3JjL2xsdm0vRXhwYW5kTGFyZ2VJbnRlZ2Vycy5jcHAKLSsrKyBiL2JhY2tlbmQv c3JjL2xsdm0vRXhwYW5kTGFyZ2VJbnRlZ2Vycy5jcHAKLUBAIC0zMjgsNyArMzI4LDcgQEAgc3Rh dGljIFZhbHVlICpidWlsZFZlY3Rvck9yU2NhbGFyKENvbnZlcnNpb25TdGF0ZSAmU3RhdGUsIElS QnVpbGRlcjw+ICZJUkIsIFNtYWwKLSAgICAgLy8gc3BsaXRlZCwgdGhhdCdzIHdoeSB0aGVzZSB0 ZW1wb3JhcnkgdmFsdWVzIHNob3VsZCBiZSBlcmFzZWQuCi0gICAgIGJvb2wgS2VlcEluc2VydCA9 IGlzTGVnYWxCaXRTaXplKEVsZW1UeS0+Z2V0UHJpbWl0aXZlU2l6ZUluQml0cygpICogRWxlbU5v KTsKLSAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEVsZW1ObzsgKytpKSB7Ci0tICAgICAg VmFsdWUgKnRtcCA9IHZlYyA/IHZlYyA6IFVuZGVmVmFsdWU6OmdldChWZWN0b3JUeXBlOjpnZXQo RWxlbVR5LCBFbGVtTm8pKTsKLSsgICAgICBWYWx1ZSAqdG1wID0gdmVjID8gdmVjIDogVW5kZWZW YWx1ZTo6Z2V0KFZlY3RvclR5cGU6OmdldChFbGVtVHksIEVsZW1ObywgZmFsc2UpKTsKLSAgICAg ICBWYWx1ZSAqaWR4ID0gQ29uc3RhbnRJbnQ6OmdldChJbnRUeSwgaSk7Ci0gICAgICAgdmVjID0g SVJCLkNyZWF0ZUluc2VydEVsZW1lbnQodG1wLCBFbGVtZW50c1tpXSwgaWR4KTsKLSAgICAgICBp ZiAoIUtlZXBJbnNlcnQgJiYgIWlzYTxDb25zdGFudD4odmVjKSkgewotQEAgLTM3Myw3ICszNzMs NyBAQCBzdGF0aWMgdm9pZCB1bmlmeUVsZW1lbnRUeXBlKElSQnVpbGRlcjw+ICZJUkIsIFNtYWxs VmVjdG9yPFZhbHVlICosIDE2PiAmU3JjLCBTbQotICAgICAgIGFzc2VydCgoU2l6ZSAlIE1pbldp ZHRoKSA9PSAwKTsKLSAKLSAgICAgICBpZiAoU2l6ZSA+IE1pbldpZHRoKSB7Ci0tICAgICAgICBW ZWN0b3JUeXBlICpWZWNUeSA9IFZlY3RvclR5cGU6OmdldChFbGVtVHksIFNpemUvTWluV2lkdGgp OwotKyAgICAgICAgVmVjdG9yVHlwZSAqVmVjVHkgPSBWZWN0b3JUeXBlOjpnZXQoRWxlbVR5LCBT aXplL01pbldpZHRoLCBmYWxzZSk7Ci0gICAgICAgICBWYWx1ZSAqQ2FzdGVkID0gSVJCLkNyZWF0 ZUJpdENhc3QoU3JjW2ldLCBWZWNUeSk7Ci0gICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBq IDwgU2l6ZS9NaW5XaWR0aDsgaisrKQotICAgICAgICAgICBEc3QucHVzaF9iYWNrKElSQi5DcmVh dGVFeHRyYWN0RWxlbWVudChDYXN0ZWQsIENvbnN0YW50SW50OjpnZXQoSW50VHksIGopKSk7Ci1A QCAtNDYyLDcgKzQ2Miw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRJbnN0cnVjdGlvbihJbnN0cnVj dGlvbiAqSW5zdCwgQ29udmVyc2lvblN0YXRlICZTdGF0ZSwKLSAgICAgICB1bnNpZ25lZCBFbGVt Tm8gPSBVbmlmaWVkLnNpemUoKTsKLSAgICAgICBUeXBlICpFbGVtVHkgPSBVbmlmaWVkWzBdLT5n ZXRUeXBlKCk7Ci0gICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEVsZW1ObzsgKytpKSB7 Ci0tICAgICAgICBWYWx1ZSAqdG1wID0gdmVjID8gdmVjIDogVW5kZWZWYWx1ZTo6Z2V0KFZlY3Rv clR5cGU6OmdldChFbGVtVHksIEVsZW1ObykpOwotKyAgICAgICAgVmFsdWUgKnRtcCA9IHZlYyA/ IHZlYyA6IFVuZGVmVmFsdWU6OmdldChWZWN0b3JUeXBlOjpnZXQoRWxlbVR5LCBFbGVtTm8sIGZh bHNlKSk7Ci0gICAgICAgICBWYWx1ZSAqaWR4ID0gQ29uc3RhbnRJbnQ6OmdldChJbnRUeSwgaSk7 Ci0gICAgICAgICB2ZWMgPSBJUkIuQ3JlYXRlSW5zZXJ0RWxlbWVudCh0bXAsIFVuaWZpZWRbaV0s IGlkeCk7Ci0gICAgICAgfQotZGlmZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2VuX2Jh Y2tlbmQuY3BwIGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAKLWluZGV4IGM5 M2Q4OWNjLi42NGQ1YjBlNSAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5f YmFja2VuZC5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAK LUBAIC0zMDQsNyArMzA0LDcgQEAgbmFtZXNwYWNlIGdiZQotICAgICAgIFRZUEVTSVpFVkVDKGxv bmcsOCkKLSAgICAgICBUWVBFU0laRVZFQyh1bnNpZ25lZCBsb25nLDgpCi0gICAgICAgZWxzZXsK LS0gICAgICAgIFN0cnVjdFR5cGUgKlN0clR5ID0gTS0+Z2V0VHlwZUJ5TmFtZSgic3RydWN0LiIr bmFtZSk7Ci0rICAgICAgICBTdHJ1Y3RUeXBlICpTdHJUeSA9IFN0cnVjdFR5cGU6OmdldFR5cGVC eU5hbWUoTS0+Z2V0Q29udGV4dCgpLCAic3RydWN0LiIrbmFtZSk7Ci0gICAgICAgICBpZihTdHJU eSkKLSAgICAgICAgICAgcmV0dXJuIGdldFR5cGVCeXRlU2l6ZSh1bml0LFN0clR5KTsKLSAgICAg ICB9Ci1kaWZmIC0tZ2l0IGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9sb2Fkc3RvcmVfb3B0aW1pemF0 aW9uLmNwcCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fbG9hZHN0b3JlX29wdGltaXphdGlvbi5jcHAK LWluZGV4IDVhYTM4YmVmLi42YjVjMWJhZCAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0v bGx2bV9sb2Fkc3RvcmVfb3B0aW1pemF0aW9uLmNwcAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9s bHZtX2xvYWRzdG9yZV9vcHRpbWl6YXRpb24uY3BwCi1AQCAtMTUyLDcgKzE1Miw3IEBAIG5hbWVz cGFjZSBnYmUgewotICAgICB1bnNpZ25lZCBhZGRyU3BhY2UgPSBsZC0+Z2V0UG9pbnRlckFkZHJl c3NTcGFjZSgpOwotICAgICAvLyBpbnNlcnQgYmVmb3JlIGZpcnN0IGxvYWQKLSAgICAgQnVpbGRl ci5TZXRJbnNlcnRQb2ludChsZCk7Ci0tICAgIFZlY3RvclR5cGUgKnZlY1R5ID0gVmVjdG9yVHlw ZTo6Z2V0KGxkLT5nZXRUeXBlKCksIHNpemUpOwotKyAgICBWZWN0b3JUeXBlICp2ZWNUeSA9IFZl Y3RvclR5cGU6OmdldChsZC0+Z2V0VHlwZSgpLCBzaXplLCBmYWxzZSk7Ci0gICAgIFZhbHVlICp2 ZWNQdHIgPSBCdWlsZGVyLkNyZWF0ZUJpdENhc3QobGQtPmdldFBvaW50ZXJPcGVyYW5kKCksCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvaW50ZXJUeXBlOjpnZXQo dmVjVHksIGFkZHJTcGFjZSkpOwotICAgICBMb2FkSW5zdCAqdmVjVmFsdWUgPSBCdWlsZGVyLkNy ZWF0ZUxvYWQodmVjUHRyKTsKLUBAIC0yMzYsNyArMjM2LDcgQEAgbmFtZXNwYWNlIGdiZSB7Ci0g ICAgIEJ1aWxkZXIuU2V0SW5zZXJ0UG9pbnQobWVyZ2VkW3NpemUtMV0pOwotIAotICAgICBUeXBl ICpkYXRhVHkgPSBzdC0+Z2V0VmFsdWVPcGVyYW5kKCktPmdldFR5cGUoKTsKLS0gICAgVmVjdG9y VHlwZSAqdmVjVHkgPSBWZWN0b3JUeXBlOjpnZXQoZGF0YVR5LCBzaXplKTsKLSsgICAgVmVjdG9y VHlwZSAqdmVjVHkgPSBWZWN0b3JUeXBlOjpnZXQoZGF0YVR5LCBzaXplLCBmYWxzZSk7Ci0gICAg IFZhbHVlICogcGFyZW50ID0gVW5kZWZWYWx1ZTo6Z2V0KHZlY1R5KTsKLSAgICAgZm9yKHVuc2ln bmVkIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgcGFyZW50ID0gQnVpbGRlci5DcmVh dGVJbnNlcnRFbGVtZW50KHBhcmVudCwgdmFsdWVzW2ldLCBDb25zdGFudEludDo6Z2V0KEludGVn ZXJUeXBlOjpnZXQoc3QtPmdldENvbnRleHQoKSwgMzIpLCBpKSk7Ci1kaWZmIC0tZ2l0IGJhY2tl bmQvc3JjL2xsdm0vbGx2bV9wcmludGZfcGFyc2VyLmNwcCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1f cHJpbnRmX3BhcnNlci5jcHAKLWluZGV4IDZiYjdjNTJhLi5hZjQ1OWNkMiAxMDA2NDQKLS0tLSBh L2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wcmludGZfcGFyc2VyLmNwcAotKysrIGIvYmFja2VuZC9z cmMvbGx2bS9sbHZtX3ByaW50Zl9wYXJzZXIuY3BwCi1AQCAtNjMwLDcgKzYzMCw3IEBAIGVycm9y OgotICAgICAgICAgICAgIGlmIChlbHRfdHlwZSAhPSBlbHRfZHN0X3R5cGUpIHsKLSAgICAgICAg ICAgICAgIFZhbHVlICpJSSA9IE5VTEw7Ci0gICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsg aSA8IHZlY19udW07IGkrKykgewotLSAgICAgICAgICAgICAgICBWYWx1ZSAqdmVjID0gSUkgPyBJ SSA6IFVuZGVmVmFsdWU6OmdldChWZWN0b3JUeXBlOjpnZXQoZWx0X2RzdF90eXBlLCB2ZWNfbnVt KSk7Ci0rICAgICAgICAgICAgICAgIFZhbHVlICp2ZWMgPSBJSSA/IElJIDogVW5kZWZWYWx1ZTo6 Z2V0KFZlY3RvclR5cGU6OmdldChlbHRfZHN0X3R5cGUsIHZlY19udW0sIGZhbHNlKSk7Ci0gICAg ICAgICAgICAgICAgIFZhbHVlICpjdiA9IENvbnN0YW50SW50OjpnZXQoVHlwZTo6Z2V0SW50MzJU eShlbHRfdHlwZS0+Z2V0Q29udGV4dCgpKSwgaSk7Ci0gICAgICAgICAgICAgICAgIFZhbHVlICpv cmcgPSBidWlsZGVyLT5DcmVhdGVFeHRyYWN0RWxlbWVudChhcmcsIGN2KTsKLSAgICAgICAgICAg ICAgICAgVmFsdWUgKmN2dCA9IGJ1aWxkZXItPkNyZWF0ZUludENhc3Qob3JnLCBlbHRfZHN0X3R5 cGUsIHNpZ24pOwotQEAgLTY1OCw3ICs2NTgsNyBAQCBlcnJvcjoKLSAgICAgICAgICAgICBpZiAo ZWx0X3R5cGUtPmdldFR5cGVJRCgpICE9IFR5cGU6OkZsb2F0VHlJRCkgewotICAgICAgICAgICAg ICAgVmFsdWUgKklJID0gTlVMTDsKLSAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg dmVjX251bTsgaSsrKSB7Ci0tICAgICAgICAgICAgICAgIFZhbHVlICp2ZWMgPSBJSSA/IElJIDog VW5kZWZWYWx1ZTo6Z2V0KFZlY3RvclR5cGU6OmdldChUeXBlOjpnZXRGbG9hdFR5KGVsdF90eXBl LT5nZXRDb250ZXh0KCkpLCB2ZWNfbnVtKSk7Ci0rICAgICAgICAgICAgICAgIFZhbHVlICp2ZWMg PSBJSSA/IElJIDogVW5kZWZWYWx1ZTo6Z2V0KFZlY3RvclR5cGU6OmdldChUeXBlOjpnZXRGbG9h dFR5KGVsdF90eXBlLT5nZXRDb250ZXh0KCkpLCB2ZWNfbnVtLCBmYWxzZSkpOwotICAgICAgICAg ICAgICAgICBWYWx1ZSAqY3YgPSBDb25zdGFudEludDo6Z2V0KFR5cGU6OmdldEludDMyVHkoZWx0 X3R5cGUtPmdldENvbnRleHQoKSksIGkpOwotICAgICAgICAgICAgICAgICBWYWx1ZSAqb3JnID0g YnVpbGRlci0+Q3JlYXRlRXh0cmFjdEVsZW1lbnQoYXJnLCBjdik7Ci0gICAgICAgICAgICAgICAg IFZhbHVlKiBjdnQgID0gYnVpbGRlci0+Q3JlYXRlRlBDYXN0KG9yZywgVHlwZTo6Z2V0RmxvYXRU eShtb2R1bGUtPmdldENvbnRleHQoKSkpOwotZGlmZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZtL2xs dm1fdG9fZ2VuLmNwcCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fdG9fZ2VuLmNwcAotaW5kZXggN2Y3 ZGVmZmUuLjllOGNjYzY3IDEwMDY0NAotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3RvX2dl bi5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV90b19nZW4uY3BwCi1AQCAtMzU4LDcg KzM1OCw3IEBAIG5hbWVzcGFjZSBnYmUKLSAgICAgcGFzc2VzLmFkZChjcmVhdGVTY2FsYXJSZXBs QWdncmVnYXRlc1Bhc3MoNjQsIHRydWUsIC0xLCAtMSwgNjQpKTsKLSAjZW5kaWYKLSAgICAgcGFz c2VzLmFkZChjcmVhdGVMb2FkU3RvcmVPcHRpbWl6YXRpb25QYXNzKCkpOwotLSAgICBwYXNzZXMu YWRkKGNyZWF0ZUNvbnN0YW50UHJvcGFnYXRpb25QYXNzKCkpOwotKyAgICAvL3Bhc3Nlcy5hZGQo Y3JlYXRlQ29uc3RhbnRQcm9wYWdhdGlvblBhc3MoKSk7Ci0gICAgIHBhc3Nlcy5hZGQoY3JlYXRl UHJvbW90ZU1lbW9yeVRvUmVnaXN0ZXJQYXNzKCkpOwotICAgICBpZihvcHRMZXZlbCA+IDApCi0g ICAgICAgcGFzc2VzLmFkZChjcmVhdGVHVk5QYXNzKCkpOyAgICAgICAgICAgICAgICAgLy8gUmVt b3ZlIHJlZHVuZGFuY2llcwotQEAgLTM2NywxMSArMzY3LDExIEBAIG5hbWVzcGFjZSBnYmUKLSAg ICAgcGFzc2VzLmFkZChjcmVhdGVTY2FsYXJpemVQYXNzKCkpOyAgICAgICAgICAgICAvLyBFeHBh bmQgYWxsIHZlY3RvciBvcHMKLSAgICAgcGFzc2VzLmFkZChjcmVhdGVFeHBhbmRMYXJnZUludGVn ZXJzUGFzcygpKTsgICAvLyBsZWdhbGl6ZSBsYXJnZSBpbnRlZ2VyIG9wZXJhdGlvbgotICAgICBw YXNzZXMuYWRkKGNyZWF0ZUluc3RydWN0aW9uQ29tYmluaW5nUGFzcygpKTsgIC8vIGxlZ2FsaXpl IHdpbGwgZ2VuZXJhdGUgc29tZSBzaWxseSBpbnN0cnVjdGlvbnMKLS0gICAgcGFzc2VzLmFkZChj cmVhdGVDb25zdGFudFByb3BhZ2F0aW9uUGFzcygpKTsgICAvLyBwcm9wYWdhdGUgY29uc3RhbnQg YWZ0ZXIgc2NhbGFyaXplL2xlZ2FsaXplCi0rICAgIC8vcGFzc2VzLmFkZChjcmVhdGVDb25zdGFu dFByb3BhZ2F0aW9uUGFzcygpKTsgICAvLyBwcm9wYWdhdGUgY29uc3RhbnQgYWZ0ZXIgc2NhbGFy aXplL2xlZ2FsaXplCi0gICAgIHBhc3Nlcy5hZGQoY3JlYXRlRXhwYW5kQ29uc3RhbnRFeHByUGFz cygpKTsgICAgLy8gY29uc3RhbnQgcHJvcCBtYXkgZ2VuZXJhdGUgQ29uc3RhbnRFeHByCi0gICAg IHBhc3Nlcy5hZGQoY3JlYXRlUHJvbW90ZUludGVnZXJzUGFzcygpKTsgICAgICAgLy8gYWxpZ24g aW50ZWdlciBzaXplIHRvIHBvd2VyIG9mIHR3bwotICAgICBwYXNzZXMuYWRkKGNyZWF0ZVJlbW92 ZUdFUFBhc3ModW5pdCkpOyAgICAgICAgIC8vIENvbnN0YW50IHByb3AgbWF5IGdlbmVyYXRlIGdl cAotLSAgICBwYXNzZXMuYWRkKGNyZWF0ZURlYWRJbnN0RWxpbWluYXRpb25QYXNzKCkpOyAgIC8v IFJlbW92ZSBzaW1wbGlmaWVkIGluc3RydWN0aW9ucwotKyAgICAvL3Bhc3Nlcy5hZGQoY3JlYXRl RGVhZEluc3RFbGltaW5hdGlvblBhc3MoKSk7ICAgLy8gUmVtb3ZlIHNpbXBsaWZpZWQgaW5zdHJ1 Y3Rpb25zCi0gICAgIHBhc3Nlcy5hZGQoY3JlYXRlQ0ZHU2ltcGxpZmljYXRpb25QYXNzKCkpOyAg ICAgLy8gTWVyZ2UgJiByZW1vdmUgQkJzCi0gICAgIHBhc3Nlcy5hZGQoY3JlYXRlTG93ZXJTd2l0 Y2hQYXNzKCkpOyAgICAgICAgICAgLy8gc2ltcGxpZnkgY2ZnIHdpbGwgZ2VuZXJhdGUgc3dpdGNo LWNhc2UgaW5zdHJ1Y3Rpb24KLSAgICAgaWYgKHByb2ZpbGluZykgewpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9iZWlnbmV0L3BhdGNoZXMvbXVzbC5wYXRjaCBiL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVz L211c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlZmFmYmI2NTU4OC4u MDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL211c2wucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0tLS0gYS9iYWNrZW5kL3NyYy9iYWNrZW5kL2dl bi9nZW5fbWVzYV9kaXNhc20uYwotKysrIGIvYmFja2VuZC9zcmMvYmFja2VuZC9nZW4vZ2VuX21l c2FfZGlzYXNtLmMKLUBAIC0xMTM3LDcgKzExMzcsNyBAQCBzdGF0aWMgdWludDMyX3QgX19jb252 X2hhbGZfdG9fZmxvYXQodWludDE2X3QgaCkKLSAgICAgICAvLyBBZGp1c3QgbWFudGlzc2Egc28g aXQncyBub3JtYWxpemVkIChhbmQga2VlcAotICAgICAgIC8vIHRyYWNrIG9mIGV4cG9uZW50IGFk anVzdG1lbnQpCi0gICAgICAgaW50IGUgPSAtMTsKLS0gICAgICB1aW50IG0gPSBpLm1hbnRpc3Nh OwotKyAgICAgIHVuc2lnbmVkIGludCBtID0gaS5tYW50aXNzYTsKLSAgICAgICBkbyB7Ci0gICAg ICAgICBlKys7Ci0gICAgICAgICBtIDw8PSAxOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iZWlnbmV0 L3RlbXBsYXRlIGIvc3JjcGtncy9iZWlnbmV0L3RlbXBsYXRlCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBkY2U2YmJiN2FlMjQuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2JlaWdu ZXQvdGVtcGxhdGUKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0jIFRlbXBsYXRlIGZp bGUgZm9yICdiZWlnbmV0JwotcGtnbmFtZT1iZWlnbmV0Ci12ZXJzaW9uPTEuMy4yCi1yZXZpc2lv bj0xMAotYXJjaHM9Imk2ODYqIHg4Nl82NCoiCi13cmtzcmM9IkJlaWduZXQtJHt2ZXJzaW9ufS1T b3VyY2UiCi1idWlsZF9zdHlsZT1jbWFrZQotaG9zdG1ha2VkZXBlbmRzPSJjbGFuZyBsbHZtIHBr Zy1jb25maWciCi1tYWtlZGVwZW5kcz0iTWVzYUxpYi1kZXZlbCBsaWJlZGl0LWRldmVsIGxpYmZm aS1kZXZlbCBvY2wtaWNkLWRldmVsIHpsaWItZGV2ZWwKLSBsaWJYZml4ZXMtZGV2ZWwiCi1kZXBl bmRzPSJvY2wtaWNkIgotc2hvcnRfZGVzYz0iQmVpZ25ldCBHUEdQVSBTeXN0ZW0gZm9yIEludGVs IEdQVXMiCi1tYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgotbGlj ZW5zZT0iTEdQTC0yLjEtb3ItbGF0ZXIiCi1ob21lcGFnZT0iaHR0cDovL3d3dy5mcmVlZGVza3Rv cC5vcmcvd2lraS9Tb2Z0d2FyZS9CZWlnbmV0LyIKLWRpc3RmaWxlcz0iaHR0cHM6Ly8wMS5vcmcv c2l0ZXMvZGVmYXVsdC9maWxlcy8ke3BrZ25hbWV9LSR7dmVyc2lvbn0tc291cmNlLnRhci5neiIK LWNoZWNrc3VtPWM1NTVlZGJhMTQ5ZGUyMzI0Mzk2NWE3MDNmMzlmNzlmYTA2ZjE1YmNmZjVhMzc2 MmI1NTQ0YjA5MjUwMTBiNDMKLQotcG9zdF9pbnN0YWxsKCkgewotCSMgcmVtb3ZlIENMIGhlYWRl cnMsIHdlIGRvIHVzZSBvcGVuY2wtaGVhZGVycyBpbnN0ZWFkLgotCXJtIC1yICR7REVTVERJUn0v dXNyL2luY2x1ZGUKLX0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmVpZ25ldC91cGRhdGUgYi9zcmNw a2dzL2JlaWduZXQvdXBkYXRlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTQxZTBh ZmU2MGMuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2JlaWduZXQvdXBkYXRlCisrKyAvZGV2 L251bGwKQEAgLTEgKzAsMCBAQAotc2l0ZT0iaHR0cHM6Ly8wMS5vcmcvYmVpZ25ldC9kb3dubG9h ZHMiCmRpZmYgLS1naXQgYS9zcmNwa2dzL3JlbW92ZWQtcGFja2FnZXMvdGVtcGxhdGUgYi9zcmNw a2dzL3JlbW92ZWQtcGFja2FnZXMvdGVtcGxhdGUKaW5kZXggZTBkNDBlZGU2YjU4Li42ZWRjOGUw MDY0ZDQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcmVtb3ZlZC1wYWNrYWdlcy90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3JlbW92ZWQtcGFja2FnZXMvdGVtcGxhdGUKQEAgLTIyLDYgKzIyLDcgQEAgcmVw bGFjZXM9IgogIGF0b208PTEuNDQuMF8xCiAgYXZvZ2Fkcm8tZGV2ZWw8PTEuMi4wXzgKICBhdm9n YWRybzw9MS4yLjBfOAorIGJlaWduZXQ8PTEuMy4yCiAgYm9ra2VuPD0xLjhfMwogIGJvbWk8PTAu OS4xMV8xNwogIGJ1cnAtY2xpZW50PD0xLjQuNDBfMTMKCkZyb20gMGQzZTc5YzBkNDJjMzliOTc3 NDU1ZmM1NzgxNGNjOGI1NjNlNWY1NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9V VEYtOD9xP0FuZHI9QzM9QTk9MjBDZXJxdWVpcmE/PSA8YWNlcnF1ZWlyYTAyMUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMjggRmViIDIwMjIgMjI6MDA6NTQgKzAwMDAKU3ViamVjdDogW1BBVENIIDIw LzI5XSBsbHZtMTM6IHVwZGF0ZSB0byAxMy4wLjEuCgotLS0KIHNyY3BrZ3MvbGx2bS90ZW1wbGF0 ZSAgIHwgMiArLQogc3JjcGtncy9sbHZtMTMvdGVtcGxhdGUgfCA2ICsrKy0tLQogMiBmaWxlcyBj aGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9sbHZtL3RlbXBsYXRlIGIvc3JjcGtncy9sbHZtL3RlbXBsYXRlCmluZGV4IGJjZmVlODIw OThmZi4uOTZkMThmNzMwZmNhIDEwMDY0NAotLS0gYS9zcmNwa2dzL2xsdm0vdGVtcGxhdGUKKysr IGIvc3JjcGtncy9sbHZtL3RlbXBsYXRlCkBAIC00LDggKzQsOCBAQCB2ZXJzaW9uPTEzLjAuMAog cmV2aXNpb249MQogYnVpbGRfc3R5bGU9bWV0YQogZGVwZW5kcz0ibGx2bTEzIgotcmVwbGFjZXM9 Imxsdm0xMj49MCBsbHZtMTE+PTAgbGx2bTEwPj0wIGxsdm05Pj0wIGxsdm04Pj0wIGxsdm03Pj0w IGxsdm02LjA+PTAgbGx2bTMuOT49MCIKIHNob3J0X2Rlc2M9IkxMVk0gbWV0YSBwYWNrYWdlIgog bWFpbnRhaW5lcj0iRW5ubyBCb2xhbmQgPGdvdHRveEB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9 IlB1YmxpYyBEb21haW4iCiBob21lcGFnZT0iaHR0cHM6Ly93d3cudm9pZGxpbnV4Lm9yZyIKK3Jl cGxhY2VzPSJsbHZtMTI+PTAgbGx2bTExPj0wIGxsdm0xMD49MCBsbHZtOT49MCBsbHZtOD49MCBs bHZtNz49MCBsbHZtNi4wPj0wIGxsdm0zLjk+PTAiCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0x My90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGx2bTEzL3RlbXBsYXRlCmluZGV4IGJmYzkxMDU2ZDI3Ny4u OGU2NzM3MDFmYjliIDEwMDY0NAotLS0gYS9zcmNwa2dzL2xsdm0xMy90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL2xsdm0xMy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ2xsdm0xMycKIHBrZ25hbWU9bGx2bTEzCi12ZXJzaW9uPTEzLjAuMAotcmV2aXNpb249Mgor dmVyc2lvbj0xMy4wLjEKK3JldmlzaW9uPTEKIHdya3NyYz0ibGx2bS1wcm9qZWN0LSR7dmVyc2lv bn0uc3JjIgogYnVpbGRfd3Jrc3JjPWxsdm0KIGJ1aWxkX3N0eWxlPWNtYWtlCkBAIC0zNSw3ICsz NSw3IEBAIG1haW50YWluZXI9InE2NiA8ZGFuaWVsQG9jdGFmb3JnZS5vcmc+IgogbGljZW5zZT0i QXBhY2hlLTIuMCIKIGhvbWVwYWdlPSJodHRwczovL3d3dy5sbHZtLm9yZyIKIGRpc3RmaWxlcz0i aHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0L3JlbGVhc2VzL2Rvd25sb2FkL2xs dm1vcmctJHt2ZXJzaW9ufS9sbHZtLXByb2plY3QtJHt2ZXJzaW9ufS5zcmMudGFyLnh6IgotY2hl Y2tzdW09NjA3NWFkMzBmMWFjMGUxNWYwN2MxYmYwNjJjMWUxMjY4YzI0MWQ2NzRmMTFiZDMyY2Rm MGUwNDBjNzFmMmJmMworY2hlY2tzdW09MzI2MzM1YTgzMGYyZTMyZDA2ZDBhMzYzOTNiNTQ1NWQx N2RjNzNlMGJkMTIxMTA2NTIyN2VlMDE0ZjkyY2JmOAogbGliMzJkaXNhYmxlZD15ZXMKIHB5dGhv bl92ZXJzaW9uPTMKIAoKRnJvbSA3ZDdjMjc3ZjI5MzBlMmM1MzUwNGE5YzZmYjM2MzU4NGUyYjhk MmY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBJc2FhYyBGcmV1bmQgPG1haWxAaXNh YWNmcmV1bmQuY29tPgpEYXRlOiBXZWQsIDIgTWFyIDIwMjIgMjA6NDk6MzcgKzAwMDAKU3ViamVj dDogW1BBVENIIDIxLzI5XSByaXZlcjogdXBkYXRlIHRvIDAuMS4zCgotLS0KIC4uLmFibGUtUElF LWZvci1yaXZlci1yaXZlcmN0bC1yaXZlcnRpbGUucGF0Y2ggfCAxOCArKysrKysrKystLS0tLS0t LS0KIHNyY3BrZ3Mvcml2ZXIvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCAr Ky0tCiAyIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvcml2ZXIvcGF0Y2hlcy8wMDAxLUVuYWJsZS1QSUUtZm9yLXJp dmVyLXJpdmVyY3RsLXJpdmVydGlsZS5wYXRjaCBiL3NyY3BrZ3Mvcml2ZXIvcGF0Y2hlcy8wMDAx LUVuYWJsZS1QSUUtZm9yLXJpdmVyLXJpdmVyY3RsLXJpdmVydGlsZS5wYXRjaAppbmRleCBlY2M2 ODMwMmRiMDkuLjlkYTBlNWQ1ZDA0MyAxMDA2NDQKLS0tIGEvc3JjcGtncy9yaXZlci9wYXRjaGVz LzAwMDEtRW5hYmxlLVBJRS1mb3Itcml2ZXItcml2ZXJjdGwtcml2ZXJ0aWxlLnBhdGNoCisrKyBi L3NyY3BrZ3Mvcml2ZXIvcGF0Y2hlcy8wMDAxLUVuYWJsZS1QSUUtZm9yLXJpdmVyLXJpdmVyY3Rs LXJpdmVydGlsZS5wYXRjaApAQCAtMTAsMzMgKzEwLDMzIEBAIGJ1aWxkIHN5c3RlbS4gU2VlOiBo dHRwczovL2dpdGh1Yi5jb20vemlnbGFuZy96aWcvaXNzdWVzLzcyMDEKICAxIGZpbGUgY2hhbmdl ZCwgMyBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9idWlsZC56aWcgYi9idWlsZC56aWcK LWluZGV4IGQ1NjFmNDkuLjhhYzlhNGUgMTAwNjQ0CitpbmRleCA5ODI5NjMzLi4xODAxNzlmIDEw MDY0NAogLS0tIGEvYnVpbGQuemlnCiArKysgYi9idWlsZC56aWcKLUBAIC04NSw2ICs4NSw3IEBA IHB1YiBmbiBidWlsZChiOiAqemJzLkJ1aWxkZXIpICF2b2lkIHsKK0BAIC04OSw2ICs4OSw3IEBA IHB1YiBmbiBidWlsZChiOiAqemJzLkJ1aWxkZXIpICF2b2lkIHsKICAgICAgICAgIGNvbnN0IHJp dmVyID0gYi5hZGRFeGVjdXRhYmxlKCJyaXZlciIsICJyaXZlci9tYWluLnppZyIpOwogICAgICAg ICAgcml2ZXIuc2V0VGFyZ2V0KHRhcmdldCk7CiAgICAgICAgICByaXZlci5zZXRCdWlsZE1vZGUo bW9kZSk7CiArICAgICAgICByaXZlci5waWUgPSB0cnVlOwotICAgICAgICAgcml2ZXIuYWRkQnVp bGRPcHRpb24oYm9vbCwgInh3YXlsYW5kIiwgeHdheWxhbmQpOwotICAgICAgICAgcml2ZXIuYWRk QnVpbGRPcHRpb24oWzowXWNvbnN0IHU4LCAidmVyc2lvbiIsIGZ1bGxfdmVyc2lvbik7CisgICAg ICAgICByaXZlci5hZGRPcHRpb25zKCJidWlsZF9vcHRpb25zIiwgb3B0aW9ucyk7CiAgCi1AQCAt OTcsNiArOTgsNyBAQCBwdWIgZm4gYnVpbGQoYjogKnpicy5CdWlsZGVyKSAhdm9pZCB7CisgICAg ICAgICBhZGRTZXJ2ZXJEZXBzKHJpdmVyLCBzY2FubmVyKTsKK0BAIC0xMDAsNiArMTAxLDcgQEAg cHViIGZuIGJ1aWxkKGI6ICp6YnMuQnVpbGRlcikgIXZvaWQgewogICAgICAgICAgY29uc3Qgcml2 ZXJjdGwgPSBiLmFkZEV4ZWN1dGFibGUoInJpdmVyY3RsIiwgInJpdmVyY3RsL21haW4uemlnIik7 CiAgICAgICAgICByaXZlcmN0bC5zZXRUYXJnZXQodGFyZ2V0KTsKICAgICAgICAgIHJpdmVyY3Rs LnNldEJ1aWxkTW9kZShtb2RlKTsKICsgICAgICAgIHJpdmVyY3RsLnBpZSA9IHRydWU7Ci0gICAg ICAgICByaXZlcmN0bC5hZGRCdWlsZE9wdGlvbihbOjBdY29uc3QgdTgsICJ2ZXJzaW9uIiwgZnVs bF92ZXJzaW9uKTsKKyAgICAgICAgIHJpdmVyY3RsLmFkZE9wdGlvbnMoImJ1aWxkX29wdGlvbnMi LCBvcHRpb25zKTsKICAKICAgICAgICAgIHJpdmVyY3RsLnN0ZXAuZGVwZW5kT24oJnNjYW5uZXIu c3RlcCk7Ci1AQCAtMTE0LDYgKzExNiw3IEBAIHB1YiBmbiBidWlsZChiOiAqemJzLkJ1aWxkZXIp ICF2b2lkIHsKK0BAIC0xMjAsNiArMTIyLDcgQEAgcHViIGZuIGJ1aWxkKGI6ICp6YnMuQnVpbGRl cikgIXZvaWQgewogICAgICAgICAgY29uc3Qgcml2ZXJ0aWxlID0gYi5hZGRFeGVjdXRhYmxlKCJy aXZlcnRpbGUiLCAicml2ZXJ0aWxlL21haW4uemlnIik7CiAgICAgICAgICByaXZlcnRpbGUuc2V0 VGFyZ2V0KHRhcmdldCk7CiAgICAgICAgICByaXZlcnRpbGUuc2V0QnVpbGRNb2RlKG1vZGUpOwog KyAgICAgICAgcml2ZXJ0aWxlLnBpZSA9IHRydWU7Ci0gICAgICAgICByaXZlcnRpbGUuYWRkQnVp bGRPcHRpb24oWzowXWNvbnN0IHU4LCAidmVyc2lvbiIsIGZ1bGxfdmVyc2lvbik7CisgICAgICAg ICByaXZlcnRpbGUuYWRkT3B0aW9ucygiYnVpbGRfb3B0aW9ucyIsIG9wdGlvbnMpOwogIAogICAg ICAgICAgcml2ZXJ0aWxlLnN0ZXAuZGVwZW5kT24oJnNjYW5uZXIuc3RlcCk7CiAtLSAKLTIuMzMu MQorMi4zNS4xCiAKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvcml2ZXIvdGVtcGxhdGUgYi9zcmNwa2dz L3JpdmVyL3RlbXBsYXRlCmluZGV4IDljZjNhYmU0Yjg1Yi4uYWUwOWFlNTRiMzRmIDEwMDY0NAot LS0gYS9zcmNwa2dzL3JpdmVyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvcml2ZXIvdGVtcGxhdGUK QEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdyaXZlcicKIHBrZ25hbWU9cml2 ZXIKLXZlcnNpb249MC4xLjEKK3ZlcnNpb249MC4xLjMKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxl PXppZy1idWlsZAogY29uZmlndXJlX2FyZ3M9IiQodm9wdF9pZiB4d2F5bGFuZCAtRHh3YXlsYW5k KSIKQEAgLTEyLDcgKzEyLDcgQEAgbWFpbnRhaW5lcj0iSXNhYWMgRnJldW5kIDxtYWlsQGlzYWFj ZnJldW5kLmNvbT4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBz Oi8vZ2l0aHViLmNvbS9yaXZlcndtL3JpdmVyIgogZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9yZWxl YXNlcy9kb3dubG9hZC92JHt2ZXJzaW9ufS9yaXZlci0ke3ZlcnNpb259LnRhci5neiIKLWNoZWNr c3VtPTJhMGJjZDQ2NzBlZDllYmQzOWMyNzlmMmJmMTA4MDNmYzY1YzlmM2VlMjMwN2NlNDA3Mjhk ZjIzY2U5MTRkMTgKK2NoZWNrc3VtPWY2MzQ0NGMzMDBhYjU1NGVmM2NhMGQ5MDRhNmIxMjRhODMy YzgzOTdkNDc0ZWYwNjdiZGRlOTExYzk4MWM3OWYKIAogYnVpbGRfb3B0aW9ucz0ieHdheWxhbmQi CiBidWlsZF9vcHRpb25zX2RlZmF1bHQ9Inh3YXlsYW5kIgoKRnJvbSAyZmQ0ZGI0ODBlY2YxMTc0 YTAzNmYyYmExYThiN2E2MjViZTc3ZmQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBJ c2FhYyBGcmV1bmQgPG1haWxAaXNhYWNmcmV1bmQuY29tPgpEYXRlOiBXZWQsIDIgTWFyIDIwMjIg MjA6NTA6MTcgKzAwMDAKU3ViamVjdDogW1BBVENIIDIyLzI5XSBydW5kaXJkOiByZW1vdmUgcGFj a2FnZQoKICAgIFRoaXMgaGFzIGJlZW4gZGVwcmVjYXRlZCBieSB1cHN0cmVhbSB3aGljaCByZWNv bW1lbmRzIHVzaW5nCiAgICBkdW1iX3J1bnRpbWVfZGlyIChhbHJlYWR5IHBhY2thZ2VkIGZvciB2 b2lkKSBpbnN0ZWFkLgoKICAgIFJlbW92aW5nIG5vdyBzaW5jZSBydW5kaXJkIDAuMi4wIGlzIG5v dCBjb21wYXRpYmxlIHdpdGggemlnIDAuOSBhbmQKICAgIHRoZXJlIHdvbid0IGJlIGFueSBuZXcg cnVuZGlyZCByZWxlYXNlcy4KLS0tCiBzcmNwa2dzL3JlbW92ZWQtcGFja2FnZXMvdGVtcGxhdGUg fCAgMyArKy0KIHNyY3BrZ3MvcnVuZGlyZC9maWxlcy9ydW5kaXJkL3J1biB8ICAyIC0tCiBzcmNw a2dzL3J1bmRpcmQvdGVtcGxhdGUgICAgICAgICAgfCAxNyAtLS0tLS0tLS0tLS0tLS0tLQogMyBm aWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQogZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvcnVuZGlyZC9maWxlcy9ydW5kaXJkL3J1bgogZGVsZXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvcnVuZGlyZC90ZW1wbGF0ZQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcmVt b3ZlZC1wYWNrYWdlcy90ZW1wbGF0ZSBiL3NyY3BrZ3MvcmVtb3ZlZC1wYWNrYWdlcy90ZW1wbGF0 ZQppbmRleCA2ZWRjOGUwMDY0ZDQuLjA0ODdkMzFkNmQyYSAxMDA2NDQKLS0tIGEvc3JjcGtncy9y ZW1vdmVkLXBhY2thZ2VzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcmVtb3ZlZC1wYWNrYWdlcy90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3JlbW92ZWQtcGFj a2FnZXMnCiBwa2duYW1lPXJlbW92ZWQtcGFja2FnZXMKIHZlcnNpb249MC4xCi1yZXZpc2lvbj02 MQorcmV2aXNpb249NjIKIGJ1aWxkX3N0eWxlPW1ldGEKIHNob3J0X2Rlc2M9IlVuaW5zdGFsbHMg cGFja2FnZXMgcmVtb3ZlZCBmcm9tIHJlcG9zaXRvcnkiCiBtYWludGFpbmVyPSJQaW90ciBXw7Nq Y2lrIDxjaG9jaW1pZXJAdGxlbi5wbD4iCkBAIC0zMzcsNiArMzM3LDcgQEAgcmVwbGFjZXM9Igog IHJrdC1zdGFnZTEtY29yZW9zPD0xLjMwLjBfMwogIHJrdC1zdGFnZTEtZmx5PD0xLjMwLjBfMwog IHJrdDw9MS4zMC4wXzMKKyBydW5kaXJkPD0wLjIuMF8xCiAgc2NhbnRhaWxvcjw9MC45LjEyLjFf MgogIHNlYWhvcnNlLXNoYXJpbmc8PTMuOC4wXzQKICBzZXJpZXNwbDw9Mi4zLjVfMgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9ydW5kaXJkL2ZpbGVzL3J1bmRpcmQvcnVuIGIvc3JjcGtncy9ydW5kaXJk L2ZpbGVzL3J1bmRpcmQvcnVuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNGFhZThj ODNiNGIuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3J1bmRpcmQvZmlsZXMvcnVuZGlyZC9y dW4KKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSMhL2Jpbi9zaAotZXhlYyBydW5kaXJk CmRpZmYgLS1naXQgYS9zcmNwa2dzL3J1bmRpcmQvdGVtcGxhdGUgYi9zcmNwa2dzL3J1bmRpcmQv dGVtcGxhdGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmZjg5N2FiZDQ1Ni4uMDAw MDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcnVuZGlyZC90ZW1wbGF0ZQorKysgL2Rldi9udWxsCkBA IC0xLDE3ICswLDAgQEAKLSMgVGVtcGxhdGUgZmlsZSBmb3IgJ3J1bmRpcmQnCi1wa2duYW1lPXJ1 bmRpcmQKLXZlcnNpb249MC4yLjAKLXJldmlzaW9uPTEKLWJ1aWxkX3N0eWxlPXppZy1idWlsZAot bWFrZWRlcGVuZHM9InBhbS1kZXZlbCIKLXNob3J0X2Rlc2M9IlNpbXBsZSBkYWVtb24gKyBQQU0g bW9kdWxlIHByb3ZpZGluZyBhbiBYREdfUlVOVElNRV9ESVIiCi1tYWludGFpbmVyPSJJc2FhYyBG cmV1bmQgPG1haWxAaXNhYWNmcmV1bmQuY29tPiIKLWxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIi Ci1ob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL2lmcmV1bmQvcnVuZGlyZCIKLWRpc3RmaWxl cz0iJHtob21lcGFnZX0vYXJjaGl2ZS92JHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVja3N1bT0xZGVh MjA3ZjM5Mzg4ZThjMmMyNzViOGE5YWFkYTAxNjZkMWY1ODdhODA2ZjJlNWU0NDg2ZDk4MjU5ZTIz ZTRjCi0KLXBvc3RfaW5zdGFsbCgpIHsKLQl2c3YgcnVuZGlyZAotCXZkb2MgUkVBRE1FLm1kCi19 CgpGcm9tIGNkMzQ0Nzk1MWQxOTEzZmUzMTljMWVjNDRjMzU3N2RiYTljMjNmZDcgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwQ2VycXVlaXJhPz0g PGFjZXJxdWVpcmEwMjFAZ21haWwuY29tPgpEYXRlOiBGcmksIDQgTWFyIDIwMjIgMTE6NTU6NDYg KzAwMDAKU3ViamVjdDogW1BBVENIIDIzLzI5XSBiY2M6IHJlYnVpbGQgZm9yIGxsdm0xMwoKLS0t CiBzcmNwa2dzL2JjYy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmNjL3RlbXBsYXRlIGIv c3JjcGtncy9iY2MvdGVtcGxhdGUKaW5kZXggNTQ1MDliNjNkNWE3Li4yY2ZhMGEyOTc3ZDAgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvYmNjL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYmNjL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYmNjJwogcGtnbmFtZT1iY2MK IHZlcnNpb249MC4yNC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiB3cmtzcmM9ImJjYyIKIGJ1 aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURSRVZJU0lPTj0ke3ZlcnNpb259IC1E RU5BQkxFX0xMVk1fU0hBUkVEPTEiCgpGcm9tIDFhMDI0YTE2NWRiMGMzZmU5NjhhODYwNDkwYTMw OTZhMzFmN2I5YzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9BbmRy PUMzPUE5PTIwQ2VycXVlaXJhPz0gPGFjZXJxdWVpcmEwMjFAZ21haWwuY29tPgpEYXRlOiBGcmks IDQgTWFyIDIwMjIgMTE6NTY6MzIgKzAwMDAKU3ViamVjdDogW1BBVENIIDI0LzI5XSBnbm9tZS1i dWlsZGVyOiByZWJ1aWxkIGZvciBsbHZtMTMKCi0tLQogc3JjcGtncy9nbm9tZS1idWlsZGVyL3Rl bXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nbm9tZS1idWlsZGVyL3RlbXBsYXRlIGIvc3JjcGtn cy9nbm9tZS1idWlsZGVyL3RlbXBsYXRlCmluZGV4IDkzNTU5YjIxNzc0Zi4uNWE1YTUxODkzYWU4 IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dub21lLWJ1aWxkZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9nbm9tZS1idWlsZGVyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAnZ25vbWUtYnVpbGRlcicKIHBrZ25hbWU9Z25vbWUtYnVpbGRlcgogdmVyc2lvbj00MS4z Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogYnVpbGRfaGVscGVy PXFlbXUKIGNvbmZpZ3VyZV9hcmdzPSItRGhlbHA9dHJ1ZSAtRG5ldHdvcmtfdGVzdHM9ZmFsc2Ui CgpGcm9tIGY3MzM4YmNhYjAyMzNlNDFmZDEzYzNhMWFjYTI4YjRiNjIwYzA3NzcgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwQ2VycXVlaXJhPz0g PGFjZXJxdWVpcmEwMjFAZ21haWwuY29tPgpEYXRlOiBGcmksIDQgTWFyIDIwMjIgMTE6NTY6NTgg KzAwMDAKU3ViamVjdDogW1BBVENIIDI1LzI5XSBsZGM6IHJlYnVpbGQgZm9yIGxsdm0xMwoKLS0t CiBzcmNwa2dzL2xkYy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGRjL3RlbXBsYXRlIGIv c3JjcGtncy9sZGMvdGVtcGxhdGUKaW5kZXggYTI3MjgwZGRlM2I4Li5lMjFiYzY1NTVlMzggMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvbGRjL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbGRjL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbGRjJwogcGtnbmFtZT1sZGMK IHZlcnNpb249MS4yOC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiB3cmtzcmM9ImxkYy0ke3Zl cnNpb259LXNyYyIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iCgpGcm9tIGNl NmQyNjU4NTcxNzlmNjRkZWIzNTA4MGI5ODk4MjM1NTUzZmJlYmIgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwQ2VycXVlaXJhPz0gPGFjZXJxdWVp cmEwMjFAZ21haWwuY29tPgpEYXRlOiBGcmksIDQgTWFyIDIwMjIgMTE6NTc6MTkgKzAwMDAKU3Vi amVjdDogW1BBVENIIDI2LzI5XSBxdDU6IHJlYnVpbGQgZm9yIGxsdm0xMwoKLS0tCiBzcmNwa2dz L3F0NS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlIGIvc3JjcGtncy9x dDUvdGVtcGxhdGUKaW5kZXggYzNjYjgwMThmNzc5Li4yMTU3ZDk2ZDc5NzQgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCkBAIC0zLDcg KzMsNyBAQCBwa2duYW1lPXF0NQogdmVyc2lvbj01LjE1LjMrMjAyMTEwMDEKICMgY29tbWl0IGZj Y2E4MmNhNDBhNWQ4YTAyYTRkZGQ5MDg0NmQwNzBmMmM1OGNmYWQKICMgYmFzZSByZXBvOiBodHRw czovL2ludmVudC5rZGUub3JnL3F0L3F0L3F0NQotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVp bGRfc3R5bGU9bWV0YQogaG9zdG1ha2VkZXBlbmRzPSJjbWFrZSBjbGFuZyBmbGV4IHBlcmwgZ2xp Yi1kZXZlbCBwa2ctY29uZmlnCiAgcHl0aG9uIHJlMmMgcnVieSB3aGljaCIKCkZyb20gNjU1ZDEw NmQ3NWRlZmU0MjYwZDUxNWJmZDhlNmQ5M2ZmZGUwZjI4OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogPT9VVEYtOD9xP0FuZHI9QzM9QTk9MjBDZXJxdWVpcmE/PSA8YWNlcnF1ZWlyYTAy MUBnbWFpbC5jb20+CkRhdGU6IEZyaSwgNCBNYXIgMjAyMiAxMTo1ODoxNyArMDAwMApTdWJqZWN0 OiBbUEFUQ0ggMjcvMjldIHNoaWJva2VuMjogcmVidWlsZCBmb3IgbGx2bTEzCgotLS0KIHNyY3Br Z3Mvc2hpYm9rZW4yL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxh dGUgYi9zcmNwa2dzL3NoaWJva2VuMi90ZW1wbGF0ZQppbmRleCBiNTY2MTMyMjljMTMuLmFiOWQy YzRjYjhmOSAxMDA2NDQKLS0tIGEvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9zaGlib2tlbjIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdzaGlib2tlbjInCiBwa2duYW1lPXNoaWJva2VuMgogdmVyc2lvbj01LjE1LjIKLXJldmlz aW9uPTQKK3JldmlzaW9uPTUKIF9wa2duYW1lPSJweXNpZGUtc2V0dXAtb3BlbnNvdXJjZS1zcmMt JHt2ZXJzaW9ufSIKIHdya3NyYz0iJHtfcGtnbmFtZS8lNS4xNC4yLjEvNS4xNC4yfSIKIGJ1aWxk X3dya3NyYz0ic291cmNlcy9zaGlib2tlbjIiCgpGcm9tIDg5M2U1YWE3MmFlZWQyMTk2NjI0NWM1 ZGJhYWY0NTU0ODRjNmM1ODkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/ cT9BbmRyPUMzPUE5PTIwQ2VycXVlaXJhPz0gPGFjZXJxdWVpcmEwMjFAZ21haWwuY29tPgpEYXRl OiBGcmksIDQgTWFyIDIwMjIgMTE6NTg6MjMgKzAwMDAKU3ViamVjdDogW1BBVENIIDI4LzI5XSB0 aWxpeDogcmVidWlsZCBmb3IgbGx2bTEzCgotLS0KIHNyY3BrZ3MvdGlsaXgvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL3RpbGl4L3RlbXBsYXRlIGIvc3JjcGtncy90aWxpeC90ZW1wbGF0ZQpp bmRleCBkOGYwMTRiYzc4YzUuLmFjMWJmN2RkM2JkZCAxMDA2NDQKLS0tIGEvc3JjcGtncy90aWxp eC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3RpbGl4L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAndGlsaXgnCiBwa2duYW1lPXRpbGl4CiB2ZXJzaW9uPTEuOS40 Ci1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2Fy Z3M9Ii1EYl9sdG89ZmFsc2UiCiBob3N0bWFrZWRlcGVuZHM9ImF1dG9tYWtlIGdldHRleHQtZGV2 ZWwgZ2RrLXBpeGJ1ZiBnbGliLWRldmVsIGxkYyBwbzRhIHBrZy1jb25maWcKCkZyb20gODlkODJh ZmU3YjdlNmU4NDQ5NTk5YWEwNDI2NmYxMTNjYmYxYTg4YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogPT9VVEYtOD9xP0FuZHI9QzM9QTk9MjBDZXJxdWVpcmE/PSA8YWNlcnF1ZWlyYTAy MUBnbWFpbC5jb20+CkRhdGU6IEZyaSwgNCBNYXIgMjAyMiAxMjowODo1NSArMDAwMApTdWJqZWN0 OiBbUEFUQ0ggMjkvMjldIFNQSVJWLUxMVk0tVHJhbnNsYXRvcjogcmVidWlsZCBmb3IgbGx2bTEz CgotLS0KIHNyY3BrZ3MvU1BJUlYtTExWTS1UcmFuc2xhdG9yL3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9TUElSVi1MTFZNLVRyYW5zbGF0b3IvdGVtcGxhdGUgYi9zcmNwa2dzL1NQSVJWLUxM Vk0tVHJhbnNsYXRvci90ZW1wbGF0ZQppbmRleCAyNTA0Y2FiZWQzNjcuLjg1MmFhNWNiMzg0MCAx MDA2NDQKLS0tIGEvc3JjcGtncy9TUElSVi1MTFZNLVRyYW5zbGF0b3IvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9TUElSVi1MTFZNLVRyYW5zbGF0b3IvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdTUElSVi1MTFZNLVRyYW5zbGF0b3InCiBwa2duYW1lPVNQSVJW LUxMVk0tVHJhbnNsYXRvcgogdmVyc2lvbj0xMi4wLjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIK IGJ1aWxkX3N0eWxlPWNtYWtlCiBtYWtlX2J1aWxkX2FyZ3M9Imxsdm0tc3BpcnYiCiBjb25maWd1 cmVfYXJncz0iLVduby1kZXYgLURMTFZNX0xJTktfTExWTV9EWUxJQj1PTiAtRENNQUtFX1NLSVBf UlBBVEg9T04K --===============5008105620772046367==--